/**
 * openchemlib - Manipulate molecules
 * @version v8.13.0
 * @date 2024-05-28T09:16:10.443Z
 * @link https://github.com/cheminfo/openchemlib-js
 * @license BSD-3-Clause
*/
(function (root) {
  'use strict';

  function getExports($wnd) {

    var $doc = $wnd.document;
    var $gwt = {};
    var navigator = {
      userAgent: 'webkit'
    };

    function noop(){}

    var __gwtModuleFunction = noop;
    __gwtModuleFunction.__moduleStartupDone = noop;
    var $sendStats = noop;
    var $moduleName, $moduleBase;

    // Start GWT code 

var cggl = {};
var jl = {};
var cggcc = {};
var ji = {};
var cggcci = {};
var jlr = {};
var ju = {};
var ji2 = {};
var carc = {};
var carc2 = {};
var carcc = {};
var carcc2 = {};
var carcc3 = {};
var carcd = {};
var carcf = {};
var carcfm = {};
var carcfmt = {};
var carcfmt2 = {};
var carci = {};
var carcp = {};
var carcr = {};
var cargg = {};
var carge = {};
var cargc = {};
var carsgei = {};
var cargge = {};
var cgges = {};
var cggedc = {};
var cggcc2 = {};
var carsgel = {};
var carsg = {};
var carsge = {};
var carsgeg = {};
var carsgec = {};
var cgguc = {};
var cggels = {};
var cggucu = {};
var carggea = {};
var carsgea = {};
var cggsc = {};
var carggead = {};
var carsged = {};
var cggis = {};
var carggv = {};
var cargm = {};
var juf = {};
var caru = {};
var cggac = {};
var cggcc3 = {};
var cggcdc = {};
var cggccp = {};
var cggcs = {};
var cggcsi = {};
var cggdc = {};
var cggec = {};
var cgwbes = {};
var cgggc = {};
var cggic = {};
var jla = {};
var cggicc = {};
var cggici = {};
var cggrs = {};
var cggss = {};
var cggts = {};
var cggtst = {};
var cggts2 = {};
var cggtc = {};
var cgguci = {};
var cggucui = {};
var cgguc2 = {};
var ja = {};
var jag = {};
var jaf = {};
var jai = {};
var jm = {};
var jnc = {};
var jt = {};
var juc = {};
var jus = {};
var ooccg = {};
var ooccs = {};
var _;
var prototypesByTypeId_0;
var initFnList_0;
var PERMUTATION_NOT_SET = -1;
var permutationId = -1;
function getPermutationId(){
  return permutationId;
}

function setGwtProperty(propertyName, propertyValue){
  if (typeof window === 'object' && typeof window['$gwt'] === 'object') {
    window['$gwt'][propertyName] = propertyValue;
  }
}

function registerEntry_0(){
  return registerEntry();
}

function gwtOnLoad_0(errFn, modName, modBase, softPermutationId){
  cggl.ensureModuleInit();
  var initFnList = initFnList_0;
  $moduleName = modName;
  $moduleBase = modBase;
  permutationId = softPermutationId;
  function initializeModules(){
    for (var i = 0; i < initFnList.length; i++) {
      initFnList[i]();
    }
  }

  if (errFn) {
    try {
      $entry(initializeModules)();
    }
     catch (e) {
      errFn(modName, e);
    }
  }
   else {
    $entry(initializeModules)();
  }
}

cggl.ensureModuleInit = function ensureModuleInit(){
  if (initFnList_0 == null) {
    initFnList_0 = [];
  }
}
;
function addInitFunctions(){
  cggl.ensureModuleInit();
  var initFnList = initFnList_0;
  for (var i = 0; i < arguments.length; i++) {
    initFnList.push(arguments[i]);
  }
}

function uniqueId(id_0){
  return jsinterop.closure.getUniqueId(id_0);
}

function typeMarkerFn(){
}

function toString_30(object){
  if (Array.isArray(object) && hasTypeMarker(object)) {
    return jl.toString_2(object);
  }
  return object.toString();
}

function provide(namespace, optCtor){
  var cur = $wnd;
  if (namespace === '') {
    return cur;
  }
  var parts = namespace.split('.');
  if (!(parts[0] in cur) && cur.execScript) {
    cur.execScript('var ' + parts[0]);
  }
  if (optCtor) {
    var clazz = optCtor.prototype.___clazz;
    clazz.jsConstructor = optCtor;
  }
  for (var part; parts.length && (part = parts.shift());) {
    cur = cur[part] = cur[part] || (!parts.length && optCtor || {});
  }
  return cur;
}

cggl.portableObjCreate = function portableObjCreate(obj){
  function F(){
  }

  ;
  F.prototype = obj || {};
  return new F;
}
;
cggl.maybeGetClassLiteralFromPlaceHolder = function maybeGetClassLiteralFromPlaceHolder(entry){
  return entry instanceof Array?entry[0]:null;
}
;
function makeLambdaFunction(samMethod, ctor, ctorArguments){
  var lambda = function(){
    return samMethod.apply(lambda, arguments);
  }
  ;
  ctor.apply(lambda, ctorArguments);
  return lambda;
}

function getClassPrototype(typeId){
  return prototypesByTypeId_0[typeId];
}

function emptyMethod(){
}

function defineProperties(proto, propertyDefinition){
  for (var key in propertyDefinition) {
    propertyDefinition[key]['configurable'] = true;
  }
  Object.defineProperties(proto, propertyDefinition);
}

function defineClass(typeId, superTypeIdOrPrototype, castableTypeMap){
  var prototypesByTypeId = prototypesByTypeId_0;
  var prototype_0 = prototypesByTypeId[typeId];
  var clazz = cggl.maybeGetClassLiteralFromPlaceHolder(prototype_0);
  if (prototype_0 && !clazz) {
    _ = prototype_0;
  }
   else {
    _ = cggl.createSubclassPrototype(superTypeIdOrPrototype);
    _.castableTypeMap = castableTypeMap;
    if (!superTypeIdOrPrototype) {
      _.typeMarker = typeMarkerFn;
    }
    prototypesByTypeId[typeId] = _;
  }
  for (var i = 3; i < arguments.length; ++i) {
    arguments[i].prototype = _;
  }
  if (clazz) {
    _.___clazz = clazz;
  }
}

cggl.createSubclassPrototype = function createSubclassPrototype(superTypeIdOrPrototype){
  var superPrototype = superTypeIdOrPrototype && superTypeIdOrPrototype.prototype;
  if (!superPrototype) {
    superPrototype = prototypesByTypeId_0[superTypeIdOrPrototype];
  }
  return cggl.portableObjCreate(superPrototype);
}
;
function copyObjectProperties(from, to){
  for (var property in from) {
    if (to[property] === undefined) {
      to[property] = from[property];
    }
  }
}

function bootstrap(){
  prototypesByTypeId_0 = {};
}

$wnd.goog = $wnd.goog || {};
$wnd.goog.global = $wnd.goog.global || $wnd;
bootstrap();
jl.$clinit_Object = function $clinit_Object(){
  jl.$clinit_Object = emptyMethod;
}
;
jl.$$init = function $$init(this$static){
}
;
jl.$equals = function $equals(this$static, other){
  return maskUndefined(this$static) === maskUndefined(other);
}
;
jl.$finalize = function $finalize(this$static){
}
;
jl.$getClass = function $getClass(this$static){
  return this$static.___clazz;
}
;
jl.$hashCode = function $hashCode(this$static){
  return ji2.getObjectIdentityHashCode(this$static);
}
;
jl.$init__V__devirtual$ = function $init__V__devirtual$(this$static){
  return instanceOfString(this$static)?jl.$$init_2(this$static):instanceOfDouble(this$static)?jl.$$init_1(this$static):instanceOfBoolean(this$static)?jl.$$init_0(this$static):hasJavaObjectVirtualDispatch(this$static)?this$static.$init():jl.$$init(this$static);
}
;
function Object_0(){
  jl.$clinit_Object();
  jl.$init__V__devirtual$(this);
}

jl.equals_Ljava_lang_Object__Z__devirtual$ = function equals_Ljava_lang_Object__Z__devirtual$(this$static, other){
  jl.$clinit_Object();
  return instanceOfString(this$static)?jl.$equals_3(this$static, other):instanceOfDouble(this$static)?jl.$equals_2(this$static, other):instanceOfBoolean(this$static)?jl.$equals_1(this$static, other):hasJavaObjectVirtualDispatch(this$static)?this$static.equals_0(other):isJavaArray(this$static)?jl.$equals(this$static, other):cggcc.$equals_0(this$static, other);
}
;
jl.finalize__V__devirtual$ = function finalize__V__devirtual$(this$static){
  return instanceOfString(this$static)?jl.$finalize(this$static):instanceOfDouble(this$static)?jl.$finalize(this$static):instanceOfBoolean(this$static)?jl.$finalize(this$static):hasJavaObjectVirtualDispatch(this$static)?this$static.finalize():jl.$finalize(this$static);
}
;
jl.getClass__Ljava_lang_Class___devirtual$ = function getClass__Ljava_lang_Class___devirtual$(this$static){
  jl.$clinit_Object();
  return instanceOfString(this$static)?jl.$getClass_3(this$static):instanceOfDouble(this$static)?jl.$getClass_2(this$static):instanceOfBoolean(this$static)?jl.$getClass_1(this$static):hasJavaObjectVirtualDispatch(this$static)?this$static.___clazz:isJavaArray(this$static)?jl.$getClass(this$static):cggcc.$getClass_0(this$static);
}
;
jl.hashCode__I__devirtual$ = function hashCode__I__devirtual$(this$static){
  jl.$clinit_Object();
  return instanceOfString(this$static)?jl.$hashCode_3(this$static):instanceOfDouble(this$static)?jl.$hashCode_2(this$static):instanceOfBoolean(this$static)?jl.$hashCode_1(this$static):hasJavaObjectVirtualDispatch(this$static)?this$static.hashCode_1():isJavaArray(this$static)?jl.$hashCode(this$static):cggcc.$hashCode_0(this$static);
}
;
jl.toString_2 = function toString_2(object){
  jl.$clinit_Object();
  return jl.getClass__Ljava_lang_Class___devirtual$(object).getName_0() + '@' + toHexString(jl.hashCode__I__devirtual$(object));
}
;
defineClass(1, null, {1:1}, Object_0);
_.$init = function $init(){
  jl.$$init(this);
}
;
_.equals_0 = function equals(other){
  return jl.$equals(this, other);
}
;
_.finalize = function finalize(){
  jl.$finalize(this);
}
;
_.getClass_0 = function getClass_0(){
  return jl.$getClass(this);
}
;
_.hashCode_1 = function hashCode_0(){
  return jl.$hashCode(this);
}
;
_.toString_0 = function toString_1(){
  return jl.toString_2(this);
}
;
_.equals = function(other){
  return this.equals_0(other);
}
;
_.hashCode = function(){
  return this.hashCode_1();
}
;
_.toString = function(){
  return this.toString_0();
}
;
cggcc.$clinit_GWT = function $clinit_GWT(){
  cggcc.$clinit_GWT = emptyMethod;
  jl.$clinit_Object();
}
;
function create_1(classLiteral){
  cggcc.$clinit_GWT();
  return cggcs.createImpl(classLiteral);
}

function getModuleName(){
  cggcc.$clinit_GWT();
  return getModuleName_0();
}

function getUncaughtExceptionHandler(){
  cggcc.$clinit_GWT();
  return uncaughtExceptionHandler;
}

function isClient(){
  cggcc.$clinit_GWT();
  return true;
}

function isScript(){
  cggcc.$clinit_GWT();
  return true;
}

cggcc.log_1 = function log_1(message){
  cggcc.$clinit_GWT();
  cggcs.log_2(message);
}
;
function reportUncaughtException(e){
  cggcc.$clinit_GWT();
  reportUncaughtException_0(e);
}

defineClass(822, 1, {1:1});
var HOSTED_MODE_PERMUTATION_STRONG_NAME = 'HostedMode';
var uncaughtExceptionHandler = null;
ji.$clinit_Serializable = function $clinit_Serializable(){
  ji.$clinit_Serializable = emptyMethod;
}
;
function $isInstance(instance){
  ji.$clinit_Serializable();
  var type_0;
  if (jsEquals(instance, null)) {
    return false;
  }
  type_0 = typeof(instance);
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'boolean') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'number') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'string') || instance.$implements__java_io_Serializable || Array.isArray(instance);
}

jl.$clinit_Throwable = function $clinit_Throwable(){
  jl.$clinit_Throwable = emptyMethod;
  jl.$clinit_Object();
}
;
jl.Throwable = function Throwable(){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_79();
  this.fillInStackTrace();
  this.initializeBackingError();
}
;
function Throwable_0(backingJsObject){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_79();
  this.fillInStackTrace();
  this.setBackingJsObject(backingJsObject);
  this.detailMessage = valueOf_34(backingJsObject);
}

jl.Throwable_1 = function Throwable_1(message){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_79();
  this.detailMessage = message;
  this.fillInStackTrace();
  this.initializeBackingError();
}
;
jl.Throwable_2 = function Throwable_2(message, cause){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_79();
  this.cause_0 = cause;
  this.detailMessage = message;
  this.fillInStackTrace();
  this.initializeBackingError();
}
;
jl.Throwable_3 = function Throwable_3(message, cause, enableSuppression, writableStackTrace){
  Object_0.call(this);
  this.$init_79();
  this.cause_0 = cause;
  this.detailMessage = message;
  this.writableStackTrace = writableStackTrace;
  this.disableSuppression = !enableSuppression;
  if (writableStackTrace) {
    this.fillInStackTrace();
  }
  this.initializeBackingError();
}
;
jl.Throwable_4 = function Throwable_4(cause){
  jl.$clinit_Throwable();
  Object_0.call(this);
  this.$init_79();
  this.detailMessage = isNull(cause)?null:cause.toString_0();
  this.cause_0 = cause;
  this.fillInStackTrace();
  this.initializeBackingError();
}
;
jl.fixIE = function fixIE(e){
  if (!('stack' in e)) {
    try {
      throw e;
    }
     catch (ignored) {
    }
  }
  return e;
}
;
function of(e){
  jl.$clinit_Throwable();
  var throwable;
  if (jsNotEquals(e, null)) {
    throwable = castToUnknownNative(e).__java$exception;
    if (isNotNull(throwable)) {
      return throwable;
    }
  }
  return instanceOfNative(e, TypeError)?new jl.NullPointerException_0(e):new jl.JsException_0(e);
}

defineClass(20, 1, {4:1, 1:1, 20:1});
_.$init_79 = function $init_79(){
  this.stackTrace = initUnidimensionalArray(cggl.Ljava_lang_StackTraceElement_2_classLit, {4:1, 1:1, 7:1}, 86, 0, 0, 1);
  this.writableStackTrace = true;
  this.backingJsObject = UNINITIALIZED;
}
;
_.addSuppressed = function addSuppressed(exception){
  ji2.checkNotNull_1(exception, 'Cannot suppress a null exception.');
  ji2.checkCriticalArgument_1(jsNotEquals(exception, this), 'Exception can not suppress itself.');
  if (this.disableSuppression) {
    return;
  }
  if (jsEquals(this.suppressedExceptions, null)) {
    this.suppressedExceptions = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_Throwable_2_classLit, 1), {4:1, 1:1, 7:1}, 20, 0, [exception]);
  }
   else {
    setCheck(this.suppressedExceptions, this.suppressedExceptions.length, exception);
  }
}
;
_.captureStackTrace = function captureStackTrace(){
  cggcci.captureStackTrace_0(this);
}
;
_.constructJavaStackTrace = function constructJavaStackTrace(){
  return cggcci.constructJavaStackTrace_0(this);
}
;
_.createError = function createError(msg){
  return new Error(msg);
}
;
_.fillInStackTrace = function fillInStackTrace(){
  if (this.writableStackTrace) {
    if (maskUndefined(this.backingJsObject) !== maskUndefined(UNINITIALIZED)) {
      this.initializeBackingError();
    }
    this.stackTrace = null;
  }
  return this;
}
;
_.getBackingJsObject = function getBackingJsObject(){
  return this.backingJsObject;
}
;
_.getBackingSuppressed = function getBackingSuppressed(){
  var i, result, suppressed;
  suppressed = this.getSuppressed();
  result = initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 7:1}, 1, suppressed.length, 5, 1);
  for (i = 0; i < suppressed.length; i++) {
    setCheck(result, i, suppressed[i].backingJsObject);
  }
  return result;
}
;
_.getCause = function getCause(){
  return this.cause_0;
}
;
_.getLocalizedMessage = function getLocalizedMessage(){
  return this.getMessage();
}
;
_.getMessage = function getMessage(){
  return this.detailMessage;
}
;
_.getStackTrace = function getStackTrace(){
  if (jsEquals(this.stackTrace, null)) {
    this.stackTrace = this.constructJavaStackTrace();
  }
  return this.stackTrace;
}
;
_.getSuppressed = function getSuppressed(){
  if (jsEquals(this.suppressedExceptions, null)) {
    this.suppressedExceptions = initUnidimensionalArray(cggl.Ljava_lang_Throwable_2_classLit, {4:1, 1:1, 7:1}, 20, 0, 0, 1);
  }
  return this.suppressedExceptions;
}
;
_.initCause = function initCause(cause){
  ji2.checkState_0(isNull(this.cause_0), "Can't overwrite cause");
  ji2.checkCriticalArgument_1(jsNotEquals(cause, this), 'Self-causation not permitted');
  this.cause_0 = cause;
  return this;
}
;
_.initializeBackingError = function initializeBackingError(){
  this.setBackingJsObject(jl.fixIE(this.createError(this.toString_1(this.detailMessage))));
  this.captureStackTrace();
}
;
_.linkBack = function linkBack(error){
  if (error instanceof Object) {
    try {
      error.__java$exception = this;
      if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && $doc.documentMode < 9) {
        return;
      }
      var throwable = this;
      Object.defineProperties(error, {cause:{get:function(){
        var cause = throwable.getCause();
        return cause && cause.getBackingJsObject();
      }
      }, suppressed:{get:function(){
        return throwable.getBackingSuppressed();
      }
      }});
    }
     catch (ignored) {
    }
  }
}
;
_.printStackTrace = function printStackTrace(){
  this.printStackTrace_0((jl.$clinit_System() , jl.err));
}
;
_.printStackTrace_0 = function printStackTrace_0(out){
  this.printStackTraceImpl(out, '', '');
}
;
_.printStackTraceImpl = function printStackTraceImpl(out, prefix, ident){
  var t, t$array, t$index, t$max, theCause;
  out.println_0(ident + ('' + prefix) + this);
  this.printStackTraceItems(out, ident);
  for (t$array = this.getSuppressed() , t$index = 0 , t$max = t$array.length; t$index < t$max; ++t$index) {
    t = t$array[t$index];
    t.printStackTraceImpl(out, 'Suppressed: ', '\t' + ident);
  }
  theCause = this.getCause();
  if (isNotNull(theCause)) {
    theCause.printStackTraceImpl(out, 'Caused by: ', ident);
  }
}
;
_.printStackTraceItems = function printStackTraceItems(out, ident){
  var element, element$array, element$index, element$max;
  for (element$array = this.getStackTrace() , element$index = 0 , element$max = element$array.length; element$index < element$max; ++element$index) {
    element = element$array[element$index];
    out.println_0(ident + '\tat ' + element);
  }
}
;
_.privateInitError = function privateInitError(error){
}
;
_.setBackingJsObject = function setBackingJsObject(backingJsObject){
  this.backingJsObject = backingJsObject;
  this.linkBack(backingJsObject);
}
;
_.setStackTrace = function setStackTrace(stackTrace){
  var copy, i, length_0;
  length_0 = stackTrace.length;
  copy = initUnidimensionalArray(cggl.Ljava_lang_StackTraceElement_2_classLit, {4:1, 1:1, 7:1}, 86, length_0, 0, 1);
  for (i = 0; i < length_0; ++i) {
    copy[i] = castTo(ji2.checkNotNull_0(stackTrace[i]), 86);
  }
  this.stackTrace = copy;
}
;
_.toString_0 = function toString_12(){
  return this.toString_1(this.getLocalizedMessage());
}
;
_.toString_1 = function toString_13(message){
  var className;
  className = jl.getClass__Ljava_lang_Class___devirtual$(this).getName_0();
  return jsEquals(message, null)?className:className + ': ' + message;
}
;
_.disableSuppression = false;
_.writableStackTrace = false;
var UNINITIALIZED = '__noinit__';
jl.$clinit_Exception = function $clinit_Exception(){
  jl.$clinit_Exception = emptyMethod;
  jl.$clinit_Throwable();
}
;
jl.Exception = function Exception(){
  jl.$clinit_Exception();
  jl.Throwable.call(this);
  this.$init_80();
}
;
jl.Exception_0 = function Exception_0(backingJsObject){
  jl.$clinit_Exception();
  Throwable_0.call(this, backingJsObject);
  this.$init_80();
}
;
jl.Exception_1 = function Exception_1(message){
  jl.$clinit_Exception();
  jl.Throwable_1.call(this, message);
  this.$init_80();
}
;
jl.Exception_2 = function Exception_2(message, cause){
  jl.$clinit_Exception();
  jl.Throwable_2.call(this, message, cause);
  this.$init_80();
}
;
jl.Exception_3 = function Exception_3(cause){
  jl.$clinit_Exception();
  jl.Throwable_4.call(this, cause);
  this.$init_80();
}
;
defineClass(14, 20, {4:1, 14:1, 1:1, 20:1}, jl.Exception_1);
_.$init_80 = function $init_80(){
}
;
jl.$clinit_RuntimeException = function $clinit_RuntimeException(){
  jl.$clinit_RuntimeException = emptyMethod;
  jl.$clinit_Exception();
}
;
jl.RuntimeException = function RuntimeException(){
  jl.$clinit_RuntimeException();
  jl.Exception.call(this);
  this.$init_81();
}
;
jl.RuntimeException_0 = function RuntimeException_0(backingJsObject){
  jl.$clinit_RuntimeException();
  jl.Exception_0.call(this, backingJsObject);
  this.$init_81();
}
;
jl.RuntimeException_1 = function RuntimeException_1(message){
  jl.$clinit_RuntimeException();
  jl.Exception_1.call(this, message);
  this.$init_81();
}
;
jl.RuntimeException_2 = function RuntimeException_2(message, cause){
  jl.$clinit_RuntimeException();
  jl.Exception_2.call(this, message, cause);
  this.$init_81();
}
;
defineClass(23, 14, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.RuntimeException_1);
_.$init_81 = function $init_81(){
}
;
jl.$clinit_JsException = function $clinit_JsException(){
  jl.$clinit_JsException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.JsException = function JsException(){
  jl.$clinit_JsException();
  jl.RuntimeException.call(this);
  this.$init_319();
}
;
jl.JsException_0 = function JsException_0(backingJsObject){
  jl.$clinit_JsException();
  jl.RuntimeException_0.call(this, backingJsObject);
  this.$init_319();
  this.backingJsObject_0 = backingJsObject;
}
;
jl.JsException_1 = function JsException_1(msg){
  jl.$clinit_JsException();
  jl.RuntimeException_1.call(this, msg);
  this.$init_319();
}
;
defineClass(184, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.JsException_0);
_.$init_319 = function $init_319(){
  this.backingJsObject_0 = jl.UNINITIALIZED_0;
}
;
_.privateInitError = function privateInitError_0(error){
  getClassPrototype(20).privateInitError.call(this, maskUndefined(this.backingJsObject_0) === maskUndefined(jl.UNINITIALIZED_0)?error:this.backingJsObject_0);
}
;
jl.UNINITIALIZED_0 = '__noinit__';
cggcci.$clinit_JavaScriptExceptionBase = function $clinit_JavaScriptExceptionBase(){
  cggcci.$clinit_JavaScriptExceptionBase = emptyMethod;
  jl.$clinit_JsException();
}
;
cggcci.JavaScriptExceptionBase = function JavaScriptExceptionBase(e){
  cggcci.$clinit_JavaScriptExceptionBase();
  jl.JsException_0.call(this, e);
  this.$init_320();
}
;
defineClass(601, 184, {4:1, 14:1, 1:1, 23:1, 20:1});
_.$init_320 = function $init_320(){
}
;
cggcc.$clinit_JavaScriptException = function $clinit_JavaScriptException(){
  cggcc.$clinit_JavaScriptException = emptyMethod;
  cggcci.$clinit_JavaScriptExceptionBase();
  cggcc.NOT_SET_0 = new Object_0;
}
;
cggcc.JavaScriptException = function JavaScriptException(e){
  cggcc.$clinit_JavaScriptException();
  cggcc.JavaScriptException_0.call(this, e, '');
}
;
cggcc.JavaScriptException_0 = function JavaScriptException_0(e, description){
  cggcci.JavaScriptExceptionBase.call(this, e);
  this.$init_321();
  this.e = e;
  this.description = description;
}
;
cggcc.getExceptionDescription = function getExceptionDescription(e){
  if (instanceOfJso(e)) {
    return cggcc.getExceptionDescription0(castToJso(e));
  }
   else {
    return e + '';
  }
}
;
cggcc.getExceptionDescription0 = function getExceptionDescription0(e){
  return e == null?null:e.message;
}
;
cggcc.getExceptionName = function getExceptionName(e){
  if (jsEquals(e, null)) {
    return 'null';
  }
   else if (instanceOfJso(e)) {
    return cggcc.getExceptionName0(castToJso(e));
  }
   else if (instanceOfString(e)) {
    return 'String';
  }
   else {
    return jl.getClass__Ljava_lang_Class___devirtual$(e).getName_0();
  }
}
;
cggcc.getExceptionName0 = function getExceptionName0(e){
  return e == null?null:e.name;
}
;
defineClass(195, 601, {195:1, 4:1, 14:1, 1:1, 23:1, 20:1}, cggcc.JavaScriptException);
_.$init_321 = function $init_321(){
  this.description = '';
}
;
_.ensureInit = function ensureInit(){
  var exception;
  if (jsEquals(this.message_0, null)) {
    exception = this.getThrown();
    this.name_0 = cggcc.getExceptionName(exception);
    this.description = this.description + ': ' + cggcc.getExceptionDescription(exception);
    this.message_0 = '(' + this.name_0 + ') ' + this.description;
  }
}
;
_.getMessage = function getMessage_0(){
  this.ensureInit();
  return this.message_0;
}
;
_.getName_0 = function getName_7(){
  this.ensureInit();
  return this.name_0;
}
;
_.getThrown = function getThrown(){
  return maskUndefined(this.e) === maskUndefined(cggcc.NOT_SET_0)?null:this.e;
}
;
cggcc.$clinit_JavaScriptObject = function $clinit_JavaScriptObject(){
  cggcc.$clinit_JavaScriptObject = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc.$cast = function $cast(this$static){
  cggcc.$clinit_JavaScriptObject();
  return this$static;
}
;
cggcc.$equals_0 = function $equals_0(this$static, other){
  cggcc.$clinit_JavaScriptObject();
  if (!isClient()) {
    return getClassPrototype(1).equals_0.call(this$static, other);
  }
  return cggcc.hasEquals(this$static)?cggcc.callEquals(this$static, other):getClassPrototype(1).equals_0.call(this$static, other);
}
;
cggcc.$getClass_0 = function $getClass_0(this$static){
  cggcc.$clinit_JavaScriptObject();
  return getClass_1(this$static);
}
;
cggcc.$hashCode_0 = function $hashCode_0(this$static){
  cggcc.$clinit_JavaScriptObject();
  if (!isClient()) {
    return getClassPrototype(1).hashCode_1.call(this$static);
  }
  return cggcc.hasHashCode(this$static)?cggcc.callHashCode(this$static):getClassPrototype(1).hashCode_1.call(this$static);
}
;
cggcc.callEquals = function callEquals(thisObject, thatObject){
  return thisObject.equals(thatObject);
}
;
cggcc.callHashCode = function callHashCode(object){
  return object.hashCode();
}
;
cggcc.createArray = function createArray(){
  cggcc.$clinit_JavaScriptObject();
  return [];
}
;
function createObject_0(){
  cggcc.$clinit_JavaScriptObject();
  return {};
}

cggcc.hasEquals = function hasEquals(object){
  return !!object && !!object.equals;
}
;
cggcc.hasHashCode = function hasHashCode(object){
  return !!object && !!object.hashCode;
}
;
cggcc.toStringSimple = function toStringSimple(obj){
  return obj.toString?obj.toString():'[JavaScriptObject]';
}
;
cggcc.toStringVerbose = function toStringVerbose(obj){
  var defined = function(m){
    return typeof m != 'undefined';
  }
  ;
  var strip = function(s){
    return s.replace(/\r\n/g, '');
  }
  ;
  if (defined(obj.outerHTML))
    return strip(obj.outerHTML);
  if (defined(obj.innerHTML) && obj.cloneNode) {
    $doc.createElement('div').appendChild(obj.cloneNode(true)).innerHTML;
  }
  if (defined(obj.nodeType) && obj.nodeType == 3) {
    return "'" + obj.data.replace(/ /g, '\u25AB').replace(/\u00A0/, '\u25AA') + "'";
  }
  if (typeof defined(obj.htmlText) && obj.collapse) {
    var html = obj.htmlText;
    if (html) {
      return 'IETextRange [' + strip(html) + ']';
    }
     else {
      var dup = obj.duplicate();
      dup.pasteHTML('|');
      var out = 'IETextRange ' + strip(obj.parentElement().outerHTML);
      dup.moveStart('character', -1);
      dup.pasteHTML('');
      return out;
    }
  }
  return obj.toString?obj.toString():'[JavaScriptObject]';
}
;
cggcci.$clinit_StackTraceCreator = function $clinit_StackTraceCreator(){
  cggcci.$clinit_StackTraceCreator = emptyMethod;
  var c, enforceLegacy;
  jl.$clinit_Object();
  cggcci.LINE_NUMBER_UNKNOWN = -1;
  {
    enforceLegacy = !cggcci.supportsErrorStack();
    c = castTo(new cggcci.StackTraceCreator$CollectorModernNoSourceMap, 222);
    cggcci.collector_1 = instanceOf(c, 223) && enforceLegacy?new cggcci.StackTraceCreator$CollectorLegacy:c;
  }
}
;
cggcci.captureStackTrace_0 = function captureStackTrace_0(error){
  cggcci.$clinit_StackTraceCreator();
  cggcci.collector_1.collect(error);
}
;
cggcci.constructJavaStackTrace_0 = function constructJavaStackTrace_0(thrown){
  cggcci.$clinit_StackTraceCreator();
  var stackTrace;
  stackTrace = cggcci.collector_1.getStackTrace_0(thrown);
  return cggcci.dropInternalFrames(stackTrace);
}
;
cggcci.dropInternalFrames = function dropInternalFrames(stackTrace){
  var dropFrameUntilFnName, dropFrameUntilFnName2, i, numberOfFramesToSearch;
  dropFrameUntilFnName = 'captureStackTrace_0';
  dropFrameUntilFnName2 = 'initializeBackingError';
  numberOfFramesToSearch = $wnd.Math.min(stackTrace.length, 5);
  for (i = numberOfFramesToSearch - 1; i >= 0; i--) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(stackTrace[i].getMethodName(), dropFrameUntilFnName) || jl.equals_Ljava_lang_Object__Z__devirtual$_2(stackTrace[i].getMethodName(), dropFrameUntilFnName2)) {
      cggcci.splice(stackTrace, i + 1);
      break;
    }
  }
  return stackTrace;
}
;
cggcci.extractFunctionName = function extractFunctionName(fnName){
  var fnRE = /function(?:\s+([\w$]+))?\s*\(/;
  var match_0 = fnRE.exec(fnName);
  return match_0 && match_0[1] || 'anonymous';
}
;
cggcci.getFnStack = function getFnStack(e){
  cggcci.$clinit_StackTraceCreator();
  return e && e['fnStack']?e['fnStack']:[];
}
;
cggcci.getFunctionName = function getFunctionName(fn){
  cggcci.$clinit_StackTraceCreator();
  return fn.name || (fn.name = cggcci.extractFunctionName(fn.toString()));
}
;
cggcci.parseInt_1 = function parseInt_1(number){
  cggcci.$clinit_StackTraceCreator();
  return parseInt(number) || -1;
}
;
cggcci.splice = function splice(arr, length_0){
  if (arr.length >= length_0) {
    ji2.removeFrom(arr, 0, length_0);
  }
}
;
cggcci.split_0 = function split_0(t){
  cggcci.$clinit_StackTraceCreator();
  var e = t.backingJsObject;
  if (e && e.stack) {
    var stack_0 = e.stack;
    var toString_0 = e + '\n';
    if (stack_0.substring(0, toString_0.length) == toString_0) {
      stack_0 = stack_0.substring(toString_0.length);
    }
    return stack_0.split('\n');
  }
  return [];
}
;
cggcci.supportsErrorStack = function supportsErrorStack(){
  if (Error.stackTraceLimit > 0) {
    $wnd.Error.stackTraceLimit = Error.stackTraceLimit = 64;
    return true;
  }
  return 'stack' in new Error;
}
;
defineClass(957, 1, {1:1});
cggcci.ANONYMOUS = 'anonymous';
cggcci.DROP_FRAME_LIMIT = 5;
cggcci.LINE_NUMBER_UNKNOWN = 0;
cggcci.UNKNOWN_1 = 'Unknown';
cggcci.$clinit_StackTraceCreator$Collector = function $clinit_StackTraceCreator$Collector(){
  cggcci.$clinit_StackTraceCreator$Collector = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.StackTraceCreator$Collector = function StackTraceCreator$Collector(){
  cggcci.$clinit_StackTraceCreator$Collector();
  Object_0.call(this);
  this.$init_341();
}
;
defineClass(222, 1, {1:1});
_.$init_341 = function $init_341(){
}
;
cggcci.$clinit_StackTraceCreator$CollectorLegacy = function $clinit_StackTraceCreator$CollectorLegacy(){
  cggcci.$clinit_StackTraceCreator$CollectorLegacy = emptyMethod;
  cggcci.$clinit_StackTraceCreator$Collector();
}
;
cggcci.StackTraceCreator$CollectorLegacy = function StackTraceCreator$CollectorLegacy(){
  cggcci.$clinit_StackTraceCreator$CollectorLegacy();
  cggcci.StackTraceCreator$Collector.call(this);
  this.$init_342();
}
;
defineClass(507, 222, {1:1}, cggcci.StackTraceCreator$CollectorLegacy);
_.$init_342 = function $init_342(){
}
;
_.collect = function collect(error){
  var seen = {};
  var fnStack = [];
  error['fnStack'] = fnStack;
  var callee = arguments.callee.caller;
  while (callee) {
    var name_0 = cggcci.getFunctionName(callee);
    fnStack.push(name_0);
    var keyName = ':' + name_0;
    var withThisName = seen[keyName];
    if (withThisName) {
      var i, j;
      for (i = 0 , j = withThisName.length; i < j; i++) {
        if (withThisName[i] === callee) {
          return;
        }
      }
    }
    (withThisName || (seen[keyName] = [])).push(callee);
    callee = callee.caller;
  }
}
;
_.getStackTrace_0 = function getStackTrace_0(t){
  var i, length_0, stack_0, stackTrace;
  stack_0 = cggcci.getFnStack(t);
  length_0 = cggcc.$length_0(stack_0);
  stackTrace = initUnidimensionalArray(cggl.Ljava_lang_StackTraceElement_2_classLit, {4:1, 1:1, 7:1}, 86, length_0, 0, 1);
  for (i = 0; i < length_0; i++) {
    stackTrace[i] = new jl.StackTraceElement('Unknown', cggcc.$get_0(stack_0, i), null, -1);
  }
  return stackTrace;
}
;
cggcci.$clinit_StackTraceCreator$CollectorModern = function $clinit_StackTraceCreator$CollectorModern(){
  cggcci.$clinit_StackTraceCreator$CollectorModern = emptyMethod;
  cggcci.$clinit_StackTraceCreator$Collector();
}
;
cggcci.StackTraceCreator$CollectorModern = function StackTraceCreator$CollectorModern(){
  cggcci.$clinit_StackTraceCreator$CollectorModern();
  cggcci.StackTraceCreator$Collector.call(this);
  this.$init_343();
}
;
defineClass(223, 222, {223:1, 1:1});
_.$init_343 = function $init_343(){
}
;
_.collect = function collect_0(error){
}
;
_.createSte = function createSte(fileName, method, line, col){
  return new jl.StackTraceElement('Unknown', method, fileName + '@' + col, line < 0?-1:line);
}
;
_.getStackTrace_0 = function getStackTrace_1(t){
  var addIndex, i, length_0, stack_0, stackTrace, ste;
  stack_0 = cggcci.split_0(t);
  stackTrace = initUnidimensionalArray(cggl.Ljava_lang_StackTraceElement_2_classLit, {4:1, 1:1, 7:1}, 86, 0, 0, 1);
  addIndex = 0;
  length_0 = cggcc.$length_0(stack_0);
  if (length_0 == 0) {
    return stackTrace;
  }
  ste = this.parse_12(cggcc.$get_0(stack_0, 0));
  if (!jl.equals_Ljava_lang_Object__Z__devirtual$_2(ste.getMethodName(), 'anonymous')) {
    stackTrace[addIndex++] = ste;
  }
  for (i = 1; i < length_0; i++) {
    stackTrace[addIndex++] = this.parse_12(cggcc.$get_0(stack_0, i));
  }
  return stackTrace;
}
;
_.parse_12 = function parse_13(stString){
  var closeParen, col, endFileUrlIndex, fileName, ieAnonymousFunctionName, index_0, lastColonIndex, line, location_0, toReturn;
  location_0 = '';
  if (jl.isEmpty__Z__devirtual$(stString)) {
    return this.createSte('Unknown', 'anonymous', -1, -1);
  }
  toReturn = jl.trim__Ljava_lang_String___devirtual$(stString);
  if (jl.startsWith_Ljava_lang_String__Z__devirtual$(toReturn, 'at ')) {
    toReturn = jl.substring_I_Ljava_lang_String___devirtual$(toReturn, 3);
  }
  toReturn = this.stripSquareBrackets(toReturn);
  index_0 = jl.indexOf_Ljava_lang_String__I__devirtual$(toReturn, '(');
  if (index_0 == -1) {
    index_0 = jl.indexOf_Ljava_lang_String__I__devirtual$(toReturn, '@');
    if (index_0 == -1) {
      location_0 = toReturn;
      toReturn = '';
    }
     else {
      location_0 = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(toReturn, index_0 + 1));
      toReturn = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(toReturn, 0, index_0));
    }
  }
   else {
    closeParen = jl.indexOf_Ljava_lang_String_I_I__devirtual$(toReturn, ')', index_0);
    location_0 = jl.substring_II_Ljava_lang_String___devirtual$(toReturn, index_0 + 1, closeParen);
    toReturn = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(toReturn, 0, index_0));
  }
  index_0 = jl.indexOf_I_I__devirtual$(toReturn, 46);
  if (index_0 != -1) {
    toReturn = jl.substring_I_Ljava_lang_String___devirtual$(toReturn, index_0 + 1);
  }
  ieAnonymousFunctionName = 'Anonymous function';
  if (jl.isEmpty__Z__devirtual$(toReturn) || jl.equals_Ljava_lang_Object__Z__devirtual$_2(toReturn, 'Anonymous function')) {
    toReturn = 'anonymous';
  }
  lastColonIndex = jl.lastIndexOf_I_I__devirtual$(location_0, 58);
  endFileUrlIndex = jl.lastIndexOf_II_I__devirtual$(location_0, 58, lastColonIndex - 1);
  line = -1;
  col = -1;
  fileName = 'Unknown';
  if (lastColonIndex != -1 && endFileUrlIndex != -1) {
    fileName = jl.substring_II_Ljava_lang_String___devirtual$(location_0, 0, endFileUrlIndex);
    line = cggcci.parseInt_1(jl.substring_II_Ljava_lang_String___devirtual$(location_0, endFileUrlIndex + 1, lastColonIndex));
    col = cggcci.parseInt_1(jl.substring_I_Ljava_lang_String___devirtual$(location_0, lastColonIndex + 1));
  }
  return this.createSte(fileName, toReturn, line, col);
}
;
_.stripSquareBrackets = function stripSquareBrackets(toReturn){
  return toReturn.replace(/\[.*?\]/g, '');
}
;
cggcci.$clinit_StackTraceCreator$CollectorModernNoSourceMap = function $clinit_StackTraceCreator$CollectorModernNoSourceMap(){
  cggcci.$clinit_StackTraceCreator$CollectorModernNoSourceMap = emptyMethod;
  cggcci.$clinit_StackTraceCreator$CollectorModern();
}
;
cggcci.StackTraceCreator$CollectorModernNoSourceMap = function StackTraceCreator$CollectorModernNoSourceMap(){
  cggcci.$clinit_StackTraceCreator$CollectorModernNoSourceMap();
  cggcci.StackTraceCreator$CollectorModern.call(this);
  this.$init_344();
}
;
defineClass(508, 223, {222:1, 223:1, 1:1}, cggcci.StackTraceCreator$CollectorModernNoSourceMap);
_.$init_344 = function $init_344(){
}
;
_.createSte = function createSte_0(fileName, method, line, col){
  return new jl.StackTraceElement('Unknown', method, fileName, -1);
}
;
cggl.$clinit_Array = function $clinit_Array(){
  cggl.$clinit_Array = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.Array_0 = function Array_0(){
  Object_0.call(this);
  this.$init_476();
}
;
cggl.asArray = function asArray(array){
  return array;
}
;
cggl.canSet = function canSet(array, value_0){
  switch (cggl.getElementTypeCategory(array)) {
    case 6:
      return instanceOfString(value_0);
    case 7:
      return instanceOfDouble(value_0);
    case 8:
      return instanceOfBoolean(value_0);
    case 3:
      return instanceOfArray(value_0);
    case 11:
      return instanceOfFunction(value_0);
    case 12:
      return instanceOfJsObject(value_0);
    case 0:
      return canCast(value_0, cggl.getElementTypeId(array));
    case 2:
      return isJavaScriptObject(value_0);
    case 1:
      return isJavaScriptObject(value_0) || canCast(value_0, cggl.getElementTypeId(array));
    default:return true;
  }
}
;
function ensureNotNull(array){
  cggl.$clinit_Array();
  return ji2.checkNotNull_0(array);
}

function getClassLiteralForArray(clazz, dimensions){
  cggl.$clinit_Array();
  return cggl.getClassLiteralForArrayImpl(clazz, dimensions);
}

cggl.getClassLiteralForArrayImpl = function getClassLiteralForArrayImpl(clazz, dimensions){
  return jl.getClassLiteralForArray_0(clazz, dimensions);
}
;
cggl.getElementTypeCategory = function getElementTypeCategory(array){
  return array.__elementTypeCategory$ == null?10:array.__elementTypeCategory$;
}
;
cggl.getElementTypeId = function getElementTypeId(array){
  return array.__elementTypeId$;
}
;
function initMultidimensionalArray(leafClassLiteral, castableTypeMapExprs, elementTypeIds, leafElementTypeCategory, dimExprs, count){
  cggl.$clinit_Array();
  return cggl.initMultidimensionalArray_0(leafClassLiteral, castableTypeMapExprs, elementTypeIds, leafElementTypeCategory, dimExprs, 0, count);
}

cggl.initMultidimensionalArray_0 = function initMultidimensionalArray_0(leafClassLiteral, castableTypeMapExprs, elementTypeIds, leafElementTypeCategory, dimExprs, index_0, count){
  var elementTypeCategory, i, isLastDimension, length_0, result;
  length_0 = dimExprs[index_0];
  isLastDimension = index_0 == count - 1;
  elementTypeCategory = isLastDimension?leafElementTypeCategory:0;
  result = cggl.initializeArrayElementsWithDefaults(elementTypeCategory, length_0);
  if (leafElementTypeCategory != 10) {
    stampJavaTypeInfo(getClassLiteralForArray(leafClassLiteral, count - index_0), castableTypeMapExprs[index_0], elementTypeIds[index_0], elementTypeCategory, result);
  }
  if (!isLastDimension) {
    ++index_0;
    for (i = 0; i < length_0; ++i) {
      cggl.set_6(result, i, cggl.initMultidimensionalArray_0(leafClassLiteral, castableTypeMapExprs, elementTypeIds, leafElementTypeCategory, dimExprs, index_0, count));
    }
  }
  return result;
}
;
function initUnidimensionalArray(leafClassLiteral, castableTypeMap, elementTypeId, length_0, elementTypeCategory, dimensions){
  cggl.$clinit_Array();
  var result;
  result = cggl.initializeArrayElementsWithDefaults(elementTypeCategory, length_0);
  if (elementTypeCategory != 10) {
    stampJavaTypeInfo(getClassLiteralForArray(leafClassLiteral, dimensions), castableTypeMap, elementTypeId, elementTypeCategory, result);
  }
  return result;
}

cggl.initializeArrayElementsWithDefaults = function initializeArrayElementsWithDefaults(elementTypeCategory, length_0){
  var array = new Array(length_0);
  var initValue;
  switch (elementTypeCategory) {
    case 14:
    case 15:
      initValue = 0;
      break;
    case 16:
      initValue = false;
      break;
    default:return array;
  }
  for (var i = 0; i < length_0; ++i) {
    array[i] = initValue;
  }
  return array;
}
;
function isJavaArray(src_0){
  cggl.$clinit_Array();
  return isArray(src_0) && hasTypeMarker(src_0);
}

function isPrimitiveArray(array){
  cggl.$clinit_Array();
  var elementTypeCategory;
  elementTypeCategory = cggl.getElementTypeCategory(array);
  return elementTypeCategory >= 14 && elementTypeCategory <= 16;
}

function newArray_0(size_0){
  cggl.$clinit_Array();
  return new Array(size_0);
}

cggl.set_6 = function set_6(array, index_0, value_0){
  return array[index_0] = value_0;
}
;
function setCheck(array, index_0, value_0){
  cggl.$clinit_Array();
  ji2.checkArrayType(jsEquals(value_0, null) || cggl.canSet(array, value_0));
  return cggl.set_6(array, index_0, value_0);
}

cggl.setClass = function setClass(o, clazz){
  o.___clazz = clazz;
}
;
cggl.setElementTypeCategory = function setElementTypeCategory(array, elementTypeCategory){
  array.__elementTypeCategory$ = elementTypeCategory;
}
;
cggl.setElementTypeId = function setElementTypeId(array, elementTypeId){
  array.__elementTypeId$ = elementTypeId;
}
;
function stampJavaTypeInfo(arrayClass, castableTypeMap, elementTypeId, elementTypeCategory, array){
  cggl.$clinit_Array();
  cggl.setClass(array, arrayClass);
  setCastableTypeMap(array, castableTypeMap);
  setTypeMarker(array);
  cggl.setElementTypeId(array, elementTypeId);
  cggl.setElementTypeCategory(array, elementTypeCategory);
  return array;
}

cggl.stampJavaTypeInfo_0 = function stampJavaTypeInfo_0(array, referenceType){
  cggl.$clinit_Array();
  if (cggl.getElementTypeCategory(referenceType) != 10) {
    stampJavaTypeInfo(jl.getClass__Ljava_lang_Class___devirtual$(referenceType), getCastableTypeMap(referenceType), cggl.getElementTypeId(referenceType), cggl.getElementTypeCategory(referenceType), array);
  }
  return cggl.asArray(array);
}
;
defineClass(924, 1, {1:1});
_.$init_476 = function $init_476(){
}
;
var TYPE_ARRAY = 3;
var TYPE_JAVA_LANG_BOOLEAN = 8;
var TYPE_JAVA_LANG_DOUBLE = 7;
var TYPE_JAVA_LANG_OBJECT = 5;
var TYPE_JAVA_LANG_STRING = 6;
var TYPE_JAVA_OBJECT = 0;
var TYPE_JAVA_OBJECT_OR_JSO = 1;
var TYPE_JSO = 2;
var TYPE_JSO_ARRAY = 4;
var TYPE_JS_ARRAY = 13;
var TYPE_JS_FUNCTION = 11;
var TYPE_JS_NATIVE = 9;
var TYPE_JS_OBJECT = 12;
var TYPE_JS_UNKNOWN_NATIVE = 10;
var TYPE_PRIMITIVE_BOOLEAN = 16;
var TYPE_PRIMITIVE_LONG = 14;
var TYPE_PRIMITIVE_NUMBER = 15;
cggl.$clinit_Cast = function $clinit_Cast(){
  cggl.$clinit_Cast = emptyMethod;
  jl.$clinit_Object();
}
;
function Cast(){
  Object_0.call(this);
  this.$init_478();
}

function canCast(src_0, dstId){
  cggl.$clinit_Cast();
  if (instanceOfString(src_0)) {
    return !!stringCastMap[dstId];
  }
   else if (src_0.castableTypeMap) {
    return !!src_0.castableTypeMap[dstId];
  }
   else if (instanceOfDouble(src_0)) {
    return !!doubleCastMap[dstId];
  }
   else if (instanceOfBoolean(src_0)) {
    return !!booleanCastMap[dstId];
  }
  return false;
}

function canCastClass(srcClazz, dstClass){
  cggl.$clinit_Cast();
  var srcTypeId = srcClazz.typeId;
  var dstTypeId = dstClass.typeId;
  var prototype_0 = prototypesByTypeId_0[srcTypeId];
  return canCast(prototype_0, dstTypeId);
}

function castTo(src_0, dstId){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || canCast(src_0, dstId));
  return src_0;
}

function castToAllowJso(src_0, dstId){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || isJavaScriptObject(src_0) || canCast(src_0, dstId));
  return src_0;
}

function castToArray(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfArray(src_0));
  return src_0;
}

function castToBoolean(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfBoolean(src_0));
  return src_0;
}

function castToDouble(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfDouble(src_0));
  return src_0;
}

function castToFunction(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || cggl.isFunction(src_0));
  return src_0;
}

function castToJsArray(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfJsArray(src_0));
  return src_0;
}

function castToJsObject(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || cggl.isJsObject(src_0));
  return src_0;
}

function castToJso(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || isJavaScriptObject(src_0));
  return src_0;
}

function castToJsoArray(src_0, dstId){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfJsoArray(src_0, dstId));
  return src_0;
}

function castToNative(src_0, jsType){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || cggl.jsinstanceOf(src_0, jsType));
  return src_0;
}

function castToString(src_0){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(src_0, null) || instanceOfString(src_0));
  return src_0;
}

function castToUnknownNative(src_0){
  cggl.$clinit_Cast();
  return src_0;
}

function charToString(x_0){
  cggl.$clinit_Cast();
  return String.fromCharCode(x_0);
}

function getClass_1(array){
  cggl.$clinit_Cast();
  return array.___clazz || (Array.isArray(array) && getClassLiteralForArray(cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit, 1) || cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit);
}

function hasJavaObjectVirtualDispatch(src_0){
  cggl.$clinit_Cast();
  return !isArray(src_0) && hasTypeMarker(src_0);
}

function instanceOf(src_0, dstId){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && canCast(src_0, dstId);
}

function instanceOfAllowJso(src_0, dstId){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && (isJavaScriptObject(src_0) || canCast(src_0, dstId));
}

function instanceOfArray(src_0){
  cggl.$clinit_Cast();
  return isArray(src_0) && !isPrimitiveArray(src_0);
}

function instanceOfBoolean(src_0){
  cggl.$clinit_Cast();
  return typeof src_0 === 'boolean';
}

function instanceOfDouble(src_0){
  cggl.$clinit_Cast();
  return typeof src_0 === 'number';
}

function instanceOfFunction(src_0){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && cggl.isFunction(src_0);
}

function instanceOfJsArray(src_0){
  cggl.$clinit_Cast();
  return isArray(src_0);
}

function instanceOfJsObject(src_0){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && cggl.isJsObject(src_0);
}

function instanceOfJso(src_0){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null) && isJavaScriptObject(src_0);
}

function instanceOfJsoArray(src_0, dstId){
  cggl.$clinit_Cast();
  return canCast(src_0, dstId) || !hasTypeMarker(src_0) && isArray(src_0);
}

function instanceOfNative(src_0, jsType){
  cggl.$clinit_Cast();
  return cggl.jsinstanceOf(src_0, jsType);
}

function instanceOfString(src_0){
  cggl.$clinit_Cast();
  return typeof src_0 === 'string';
}

function instanceOfUnknownNative(src_0){
  cggl.$clinit_Cast();
  return jsNotEquals(src_0, null);
}

function isArray(src_0){
  cggl.$clinit_Cast();
  return Array.isArray(src_0);
}

cggl.isFunction = function isFunction(src_0){
  return typeof src_0 === 'function';
}
;
function isJavaScriptObject(src_0){
  cggl.$clinit_Cast();
  return cggl.isJsObjectOrFunction(src_0) && !hasTypeMarker(src_0);
}

cggl.isJsObject = function isJsObject(src_0){
  return typeof src_0 === 'object' || typeof src_0 == 'function';
}
;
cggl.isJsObjectOrFunction = function isJsObjectOrFunction(src_0){
  return typeof src_0 === 'object' || typeof src_0 === 'function';
}
;
function isNotNull(src_0){
  cggl.$clinit_Cast();
  return !!src_0;
}

function isNull(src_0){
  cggl.$clinit_Cast();
  return !src_0;
}

function jsEquals(a, b){
  cggl.$clinit_Cast();
  return a == b;
}

function jsNotEquals(a, b){
  cggl.$clinit_Cast();
  return a != b;
}

cggl.jsinstanceOf = function jsinstanceOf(obj, jsType){
  return obj && (jsType && obj instanceof jsType);
}
;
function maskUndefined(src_0){
  cggl.$clinit_Cast();
  return src_0 == null?null:src_0;
}

function narrow_byte(x_0){
  cggl.$clinit_Cast();
  return x_0 << 24 >> 24;
}

function narrow_char(x_0){
  cggl.$clinit_Cast();
  return x_0 & 65535;
}

function narrow_int(x_0){
  cggl.$clinit_Cast();
  return x_0 | 0;
}

function narrow_short(x_0){
  cggl.$clinit_Cast();
  return x_0 << 16 >> 16;
}

function round_byte(x_0){
  cggl.$clinit_Cast();
  return narrow_byte(round_int(x_0));
}

function round_char(x_0){
  cggl.$clinit_Cast();
  return narrow_char(round_int(x_0));
}

function round_int(x_0){
  cggl.$clinit_Cast();
  return Math.max(Math.min(x_0, 2147483647), -2147483648) | 0;
}

function round_short(x_0){
  cggl.$clinit_Cast();
  return narrow_short(round_int(x_0));
}

function throwClassCastExceptionUnlessNull(o){
  cggl.$clinit_Cast();
  ji2.checkType(jsEquals(o, null));
  return o;
}

defineClass(925, 1, {1:1});
_.$init_478 = function $init_478(){
}
;
var booleanCastMap;
var doubleCastMap;
var stringCastMap;
cggl.$clinit_Exceptions = function $clinit_Exceptions(){
  cggl.$clinit_Exceptions = emptyMethod;
  jl.$clinit_Object();
}
;
function Exceptions(){
  Object_0.call(this);
  this.$init_479();
}

function checkNotNull(arg){
  cggl.$clinit_Exceptions();
  if (arg == null) {
    throw new TypeError('null pointer');
  }
  return arg;
}

cggl.getJavaException = function getJavaException(e){
  return e && e.__java$exception;
}
;
function makeAssertionError(){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError;
}

function makeAssertionError_Object(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_5(message);
}

function makeAssertionError_boolean(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_7(message);
}

function makeAssertionError_char(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_0(message);
}

function makeAssertionError_double(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_1(message);
}

function makeAssertionError_float(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_2(message);
}

function makeAssertionError_int(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_3(message);
}

function makeAssertionError_long(message){
  cggl.$clinit_Exceptions();
  return new jl.AssertionError_4(message);
}

function safeClose(resource, mainException){
  cggl.$clinit_Exceptions();
  var e;
  if (isNull(resource)) {
    return mainException;
  }
  try {
    resource.close_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      if (isNull(mainException)) {
        return e;
      }
      mainException.addSuppressed(e);
    }
     else 
      throw toJs($e0);
  }
  return mainException;
}

function toJava(e){
  cggl.$clinit_Exceptions();
  var javaException;
  if (instanceOf(e, 20)) {
    return e;
  }
  javaException = cggl.getJavaException(e);
  if (isNull(javaException)) {
    javaException = new cggcc.JavaScriptException(e);
    cggcci.captureStackTrace_0(javaException);
  }
  return javaException;
}

function toJs(t){
  cggl.$clinit_Exceptions();
  return t.backingJsObject;
}

defineClass(927, 1, {1:1});
_.$init_479 = function $init_479(){
}
;
cggl.$clinit_Util_2 = function $clinit_Util_2(){
  cggl.$clinit_Util_2 = emptyMethod;
  jl.$clinit_Object();
}
;
function Util(){
  Object_0.call(this);
  this.$init_484();
}

function getCastableTypeMap(o){
  cggl.$clinit_Util_2();
  return o.castableTypeMap;
}

function hasTypeMarker(o){
  cggl.$clinit_Util_2();
  return o.typeMarker === typeMarkerFn;
}

function makeEnumName(enumName){
  cggl.$clinit_Util_2();
  return enumName;
}

function setCastableTypeMap(o, castableTypeMap){
  cggl.$clinit_Util_2();
  o.castableTypeMap = castableTypeMap;
}

function setTypeMarker(o){
  cggl.$clinit_Util_2();
  o.typeMarker = typeMarkerFn;
}

defineClass(932, 1, {1:1});
_.$init_484 = function $init_484(){
}
;
jl.$clinit_ArrayStoreException = function $clinit_ArrayStoreException(){
  jl.$clinit_ArrayStoreException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.ArrayStoreException = function ArrayStoreException(){
  jl.$clinit_ArrayStoreException();
  jl.RuntimeException.call(this);
  this.$init_606();
}
;
jl.ArrayStoreException_0 = function ArrayStoreException_0(message){
  jl.$clinit_ArrayStoreException();
  jl.RuntimeException_1.call(this, message);
  this.$init_606();
}
;
defineClass(352, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.ArrayStoreException, jl.ArrayStoreException_0);
_.$init_606 = function $init_606(){
}
;
jl.$clinit_Error = function $clinit_Error(){
  jl.$clinit_Error = emptyMethod;
  jl.$clinit_Throwable();
}
;
jl.Error_0 = function Error_0(){
  jl.$clinit_Error();
  jl.Throwable.call(this);
  this.$init_572();
}
;
jl.Error_1 = function Error_1(message){
  jl.$clinit_Error();
  jl.Throwable_1.call(this, message);
  this.$init_572();
}
;
jl.Error_2 = function Error_2(message, cause){
  jl.$clinit_Error();
  jl.Throwable_2.call(this, message, cause);
  this.$init_572();
}
;
defineClass(123, 20, {4:1, 123:1, 1:1, 20:1});
_.$init_572 = function $init_572(){
}
;
jl.$clinit_AssertionError = function $clinit_AssertionError(){
  jl.$clinit_AssertionError = emptyMethod;
  jl.$clinit_Error();
}
;
jl.AssertionError = function AssertionError(){
  jl.$clinit_AssertionError();
  jl.Error_0.call(this);
  this.$init_573();
}
;
jl.AssertionError_0 = function AssertionError_0(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_29(message));
}
;
jl.AssertionError_1 = function AssertionError_1(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_30(message));
}
;
jl.AssertionError_2 = function AssertionError_2(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_31(message));
}
;
jl.AssertionError_3 = function AssertionError_3(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_32(message));
}
;
jl.AssertionError_4 = function AssertionError_4(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_33(message));
}
;
jl.AssertionError_5 = function AssertionError_5(message){
  jl.$clinit_AssertionError();
  jl.Error_2.call(this, valueOf_34(message), instanceOf(message, 20)?castTo(message, 20):null);
  this.$init_573();
}
;
jl.AssertionError_6 = function AssertionError_6(message){
  jl.Error_1.call(this, message);
  this.$init_573();
}
;
jl.AssertionError_7 = function AssertionError_7(message){
  jl.$clinit_AssertionError();
  jl.AssertionError_6.call(this, jl.valueOf_35(message));
}
;
defineClass(44, 123, {4:1, 123:1, 1:1, 20:1}, jl.AssertionError, jl.AssertionError_0, jl.AssertionError_1, jl.AssertionError_2, jl.AssertionError_3, jl.AssertionError_4, jl.AssertionError_5, jl.AssertionError_7);
_.$init_573 = function $init_573(){
}
;
jl.$clinit_Comparable = function $clinit_Comparable(){
  jl.$clinit_Comparable = emptyMethod;
}
;
function $isInstance_4(instance){
  jl.$clinit_Comparable();
  var type_0;
  type_0 = typeof(instance);
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'boolean') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'number') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'string')) {
    return true;
  }
  return jsNotEquals(instance, null) && instance.$implements__java_lang_Comparable == true;
}

jl.$clinit_Boolean = function $clinit_Boolean(){
  jl.$clinit_Boolean = emptyMethod;
  jl.$clinit_Object();
  FALSE_0 = jl.valueOf_20(false);
  TRUE_0 = jl.valueOf_20(true);
  TYPE_27 = cggl.Z_classLit;
}
;
jl.$$init_0 = function $$init_0(this$static){
}
;
jl.$booleanValue = function $booleanValue(this$static){
  return ji2.unsafeCastToBoolean(ji2.checkNotNull_0(this$static));
}
;
jl.$compareTo = function $compareTo(this$static, b){
  return compare_19(jl.booleanValue__Z__devirtual$(this$static), jl.booleanValue__Z__devirtual$(b));
}
;
jl.$compareTo_0 = function $compareTo_0(this$static, b){
  return jl.compareTo_Ljava_lang_Boolean__I__devirtual$(this$static, castToBoolean(b));
}
;
function $create(x_0){
  jl.$clinit_Boolean();
  return ji2.uncheckedCast(parseBoolean(x_0));
}

jl.$create_0 = function $create_0(x_0){
  return ji2.uncheckedCast(x_0);
}
;
jl.$equals_1 = function $equals_1(this$static, o){
  return maskUndefined(ji2.checkNotNull_0(this$static)) === maskUndefined(o);
}
;
jl.$getClass_1 = function $getClass_1(this$static){
  return cggl.Ljava_lang_Boolean_2_classLit;
}
;
jl.$hashCode_1 = function $hashCode_1(this$static){
  return jl.hashCode_12(jl.booleanValue__Z__devirtual$(this$static));
}
;
jl.$init__V__devirtual$_0 = function $init__V__devirtual$_0(this$static){
  return jl.$$init_0(this$static);
}
;
function $isInstance_0(instance){
  jl.$clinit_Boolean();
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2('boolean', typeof(instance));
}

function Boolean_0(s){
  Object_0.call(this);
  jl.$init__V__devirtual$_0(this);
  $create(s);
}

jl.Boolean_1 = function Boolean_1(value_0){
  Object_0.call(this);
  jl.$init__V__devirtual$_0(this);
  jl.$create_0(value_0);
}
;
jl.booleanValue__Z__devirtual$ = function booleanValue__Z__devirtual$(this$static){
  jl.$clinit_Boolean();
  return jl.$booleanValue(this$static);
}
;
function compare_19(x_0, y_0){
  jl.$clinit_Boolean();
  return x_0 == y_0?0:x_0?1:-1;
}

jl.compareTo_Ljava_lang_Boolean__I__devirtual$ = function compareTo_Ljava_lang_Boolean__I__devirtual$(this$static, b){
  return jl.$compareTo(this$static, b);
}
;
jl.compareTo_Ljava_lang_Object__I__devirtual$ = function compareTo_Ljava_lang_Object__I__devirtual$(this$static, b){
  return jl.$compareTo_0(this$static, b);
}
;
jl.compareTo_Ljava_lang_Object__I__devirtual$_0 = function compareTo_Ljava_lang_Object__I__devirtual$_0(this$static, other){
  jl.$clinit_Boolean();
  return instanceOfString(this$static)?jl.$compareTo_3(this$static, other):instanceOfDouble(this$static)?jl.$compareTo_2(this$static, other):instanceOfBoolean(this$static)?jl.$compareTo_0(this$static, other):this$static.compareTo_1(other);
}
;
jl.equals_Ljava_lang_Object__Z__devirtual$_0 = function equals_Ljava_lang_Object__Z__devirtual$_0(this$static, o){
  jl.$clinit_Boolean();
  return jl.$equals_1(this$static, o);
}
;
jl.getClass__Ljava_lang_Class___devirtual$_0 = function getClass__Ljava_lang_Class___devirtual$_0(this$static){
  return jl.$getClass_1(this$static);
}
;
jl.hashCode_12 = function hashCode_12(value_0){
  return value_0?1231:1237;
}
;
jl.hashCode__I__devirtual$_0 = function hashCode__I__devirtual$_0(this$static){
  jl.$clinit_Boolean();
  return jl.$hashCode_1(this$static);
}
;
function logicalAnd(a, b){
  jl.$clinit_Boolean();
  return a && b;
}

function logicalOr(a, b){
  jl.$clinit_Boolean();
  return a || b;
}

function logicalXor(a, b){
  jl.$clinit_Boolean();
  return a ^ b;
}

function parseBoolean(s){
  jl.$clinit_Boolean();
  return jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$('true', s);
}

jl.toString_35 = function toString_35(x_0){
  return jl.valueOf_35(x_0);
}
;
function valueOf_19(s){
  jl.$clinit_Boolean();
  return jl.valueOf_20(parseBoolean(s));
}

jl.valueOf_20 = function valueOf_20(b){
  jl.$clinit_Boolean();
  return b?jl.$create_0(true):jl.$create_0(false);
}
;
booleanCastMap = {4:1, 481:1, 10:1, 1:1};
var FALSE_0;
var TRUE_0;
var TYPE_27;
jl.$clinit_CharSequence = function $clinit_CharSequence(){
  jl.$clinit_CharSequence = emptyMethod;
}
;
jl.$chars = function $chars(this$static){
  return jus.intStream_0(new jl.CharSequence$lambda$0$Type(this$static), 64 | 16384 | 16, false);
}
;
function $isInstance_2(instance){
  jl.$clinit_CharSequence();
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(typeof(instance), 'string')) {
    return true;
  }
  return jsNotEquals(instance, null) && instance.$implements__java_lang_CharSequence == true;
}

jl.$lambda$0 = function $lambda$0(this$static){
  var it;
  {
    it = new jl.CharSequence$1(this$static);
    return ju.spliterator_14(it, fromInt_0(jl.length__I__devirtual$(this$static)), 16);
  }
}
;
jlr.$clinit_Type = function $clinit_Type(){
  jlr.$clinit_Type = emptyMethod;
}
;
jl.$clinit_Class = function $clinit_Class(){
  jl.$clinit_Class = emptyMethod;
  jl.$clinit_Object();
}
;
jl.Class = function Class(){
  Object_0.call(this);
  this.$init_611();
  this.typeName = null;
  this.simpleName = null;
  this.packageName = null;
  this.compoundName = null;
  this.canonicalName = null;
  this.typeId = null;
  this.arrayLiterals = null;
}
;
jl.createClassObject = function createClassObject(packageName, compoundClassName, typeId){
  var clazz;
  clazz = new jl.Class;
  if (isClassMetadataEnabled()) {
    clazz.packageName = packageName;
    clazz.compoundName = compoundClassName;
  }
   else {
    synthesizeClassNamesFromTypeId(clazz, typeId);
  }
  return clazz;
}
;
function createForClass(packageName, compoundClassName, typeId, superclass){
  jl.$clinit_Class();
  var clazz;
  clazz = jl.createClassObject(packageName, compoundClassName, typeId);
  jl.maybeSetClassLiteral(typeId, clazz);
  clazz.superclass = superclass;
  return clazz;
}

function createForEnum(packageName, compoundClassName, typeId, superclass, enumConstantsFunc, enumValueOfFunc){
  jl.$clinit_Class();
  var clazz;
  clazz = jl.createClassObject(packageName, compoundClassName, typeId);
  jl.maybeSetClassLiteral(typeId, clazz);
  clazz.modifiers = isNotNull(enumConstantsFunc)?8:0;
  clazz.superclass = clazz.enumSuperclass = superclass;
  clazz.enumConstantsFunc = enumConstantsFunc;
  clazz.enumValueOfFunc = enumValueOfFunc;
  return clazz;
}

function createForInterface(packageName, compoundClassName){
  jl.$clinit_Class();
  var clazz;
  clazz = jl.createClassObject(packageName, compoundClassName, null);
  clazz.modifiers = 2;
  return clazz;
}

function createForPrimitive(className, primitiveTypeId){
  jl.$clinit_Class();
  var clazz;
  clazz = jl.createClassObject('', className, primitiveTypeId);
  clazz.typeId = primitiveTypeId;
  clazz.modifiers = 1;
  return clazz;
}

jl.getClassLiteralForArray_0 = function getClassLiteralForArray_0(leafClass, dimensions){
  jl.$clinit_Class();
  var arrayLiterals = leafClass.arrayLiterals = leafClass.arrayLiterals || [];
  return arrayLiterals[dimensions] || (arrayLiterals[dimensions] = leafClass.createClassLiteralForArray(dimensions));
}
;
function getPrototypeForClass(clazz){
  jl.$clinit_Class();
  if (clazz.isPrimitive()) {
    return null;
  }
  var typeId = clazz.typeId;
  return prototypesByTypeId_0[typeId];
}

jl.initializeNames = function initializeNames(clazz){
  if (clazz.isArray_0()) {
    var componentType = clazz.componentType;
    if (componentType.isPrimitive()) {
      clazz.typeName = '[' + componentType.typeId;
    }
     else if (!componentType.isArray_0()) {
      clazz.typeName = '[L' + componentType.getName_0() + ';';
    }
     else {
      clazz.typeName = '[' + componentType.getName_0();
    }
    clazz.canonicalName = componentType.getCanonicalName() + '[]';
    clazz.simpleName = componentType.getSimpleName() + '[]';
    return;
  }
  var packageName = clazz.packageName;
  var compoundName = clazz.compoundName;
  compoundName = compoundName.split('/');
  clazz.typeName = jl.join_0('.', [packageName, jl.join_0('$', compoundName)]);
  clazz.canonicalName = jl.join_0('.', [packageName, jl.join_0('.', compoundName)]);
  clazz.simpleName = compoundName[compoundName.length - 1];
}
;
function isClassMetadataEnabled(){
  jl.$clinit_Class();
  return false;
}

jl.join_0 = function join_0(separator, strings){
  var i = 0;
  while (!strings[i] || strings[i] == '') {
    i++;
  }
  var result = strings[i++];
  for (; i < strings.length; i++) {
    if (!strings[i] || strings[i] == '') {
      continue;
    }
    result += separator + strings[i];
  }
  return result;
}
;
jl.maybeSetClassLiteral = function maybeSetClassLiteral(typeId, clazz){
  var proto;
  if (!typeId) {
    return;
  }
  clazz.typeId = typeId;
  var prototype_0 = getPrototypeForClass(clazz);
  if (!prototype_0) {
    prototypesByTypeId_0[typeId] = [clazz];
    return;
  }
  prototype_0.___clazz = clazz;
}
;
function synthesizeClassNamesFromTypeId(clazz, typeId){
  jl.$clinit_Class();
  clazz.typeName = 'Class$' + (!!typeId?'S' + typeId:'' + clazz.sequentialId);
  clazz.canonicalName = clazz.typeName;
  clazz.simpleName = clazz.typeName;
}

defineClass(306, 1, {1:1}, jl.Class);
_.$init_611 = function $init_611(){
  this.sequentialId = nextSequentialId++;
}
;
_.createClassLiteralForArray = function createClassLiteralForArray(dimensions){
  var clazz;
  clazz = new jl.Class;
  clazz.modifiers = 4;
  clazz.superclass = cggl.Ljava_lang_Object_2_classLit;
  if (dimensions > 1) {
    clazz.componentType = jl.getClassLiteralForArray_0(this, dimensions - 1);
  }
   else {
    clazz.componentType = this;
  }
  return clazz;
}
;
_.desiredAssertionStatus = function desiredAssertionStatus(){
  return false;
}
;
_.ensureNamesAreInitialized = function ensureNamesAreInitialized(){
  if (jsNotEquals(this.typeName, null)) {
    return;
  }
  jl.initializeNames(this);
}
;
_.getCanonicalName = function getCanonicalName(){
  this.ensureNamesAreInitialized();
  return this.canonicalName;
}
;
_.getComponentType = function getComponentType(){
  return this.componentType;
}
;
_.getName_0 = function getName_12(){
  this.ensureNamesAreInitialized();
  return this.typeName;
}
;
_.getSimpleName = function getSimpleName(){
  this.ensureNamesAreInitialized();
  return this.simpleName;
}
;
_.isArray_0 = function isArray_0(){
  return (this.modifiers & 4) != 0;
}
;
_.isInterface = function isInterface(){
  return (this.modifiers & 2) != 0;
}
;
_.isPrimitive = function isPrimitive(){
  return (this.modifiers & 1) != 0;
}
;
_.toString_0 = function toString_40(){
  return (this.isInterface()?'interface ':this.isPrimitive()?'':'class ') + ('' + this.getName_0());
}
;
_.modifiers = 0;
_.sequentialId = 0;
var ARRAY = 4;
var ENUM = 8;
var INTERFACE = 2;
var PRIMITIVE = 1;
var nextSequentialId = 1;
jl.$clinit_ClassCastException = function $clinit_ClassCastException(){
  jl.$clinit_ClassCastException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.ClassCastException = function ClassCastException(message){
  jl.$clinit_ClassCastException();
  jl.RuntimeException_1.call(this, message);
  this.$init_612();
}
;
defineClass(502, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.ClassCastException);
_.$init_612 = function $init_612(){
}
;
jl.$clinit_Number = function $clinit_Number(){
  jl.$clinit_Number = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$init__V__devirtual$_1 = function $init__V__devirtual$_1(this$static){
  return instanceOfDouble(this$static)?jl.$$init_1(this$static):this$static.$init_607();
}
;
jl.$isInstance_1 = function $isInstance_1(instance){
  jl.$clinit_Number();
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2('number', typeof(instance)) || instanceOfNative(instance, $wnd.java.lang.Number$impl);
}
;
jl.Number_0 = function Number_0(){
  jl.$clinit_Number();
  Object_0.call(this);
  jl.$init__V__devirtual$_1(this);
}
;
jl.__decodeAndValidateInt = function __decodeAndValidateInt(s, lowerBound, upperBound){
  var decode;
  decode = jl.__decodeNumberString(s);
  return jl.__parseAndValidateInt(decode.payload, decode.radix, lowerBound, upperBound);
}
;
jl.__decodeNumberString = function __decodeNumberString(s){
  var negative, radix;
  if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '-')) {
    negative = true;
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
  }
   else {
    negative = false;
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '+')) {
      s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
    }
  }
  if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '0x') || jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '0X')) {
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, 2);
    radix = 16;
  }
   else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '#')) {
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
    radix = 16;
  }
   else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(s, '0')) {
    radix = 8;
  }
   else {
    radix = 10;
  }
  if (negative) {
    s = '-' + s;
  }
  return new jl.Number$__Decode(radix, s);
}
;
jl.__isValidDouble = function __isValidDouble(str){
  if (jsEquals(jl.floatRegex, null)) {
    jl.floatRegex = new RegExp('^\\s*[+-]?(NaN|Infinity|((\\d+\\.?\\d*)|(\\.\\d+))([eE][+-]?\\d+)?[dDfF]?)\\s*$');
  }
  return jl.floatRegex.test(str);
}
;
jl.__parseAndValidateDouble = function __parseAndValidateDouble(s){
  jl.$clinit_Number();
  if (!jl.__isValidDouble(s)) {
    throw toJs(jl.forInputString(s));
  }
  return parseFloat(s);
}
;
jl.__parseAndValidateInt = function __parseAndValidateInt(s, radix, lowerBound, upperBound){
  jl.$clinit_Number();
  var i, isTooLow, length_0, startIndex, toReturn;
  if (jsEquals(s, null)) {
    throw toJs(jl.forNullInputString());
  }
  if (radix < 2 || radix > 36) {
    throw toJs(jl.forRadix(radix));
  }
  length_0 = jl.length__I__devirtual$_0(s);
  startIndex = length_0 > 0 && (jl.charAt_I_C__devirtual$_0(s, 0) == 45 || jl.charAt_I_C__devirtual$_0(s, 0) == 43)?1:0;
  for (i = startIndex; i < length_0; i++) {
    if (digit_0(jl.charAt_I_C__devirtual$_0(s, i), radix) == -1) {
      throw toJs(jl.forInputString(s));
    }
  }
  toReturn = parseInt(s, radix);
  isTooLow = toReturn < lowerBound;
  if (isNaN(toReturn)) {
    throw toJs(jl.forInputString(s));
  }
   else if (isTooLow || toReturn > upperBound) {
    throw toJs(jl.forInputString(s));
  }
  return toReturn;
}
;
jl.__parseAndValidateLong = function __parseAndValidateLong(s, radix){
  var c, firstTime, head, i, length_0, maxDigits, minValue, negative, orig, radixPower, toReturn;
  if (jsEquals(s, null)) {
    throw toJs(jl.forNullInputString());
  }
  if (radix < 2 || radix > 36) {
    throw toJs(jl.forRadix(radix));
  }
  orig = s;
  length_0 = jl.length__I__devirtual$_0(s);
  negative = false;
  if (length_0 > 0) {
    c = jl.charAt_I_C__devirtual$_0(s, 0);
    if (c == 45 || c == 43) {
      s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
      length_0--;
      negative = c == 45;
    }
  }
  if (length_0 == 0) {
    throw toJs(jl.forInputString(orig));
  }
  while (jl.length__I__devirtual$_0(s) > 0 && jl.charAt_I_C__devirtual$_0(s, 0) == 48) {
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, 1);
    length_0--;
  }
  if (length_0 > (jl.$clinit_Number$__ParseLong() , jl.maxLengthForRadix)[radix]) {
    throw toJs(jl.forInputString(orig));
  }
  for (i = 0; i < length_0; i++) {
    if (digit_0(jl.charAt_I_C__devirtual$_0(s, i), radix) == -1) {
      throw toJs(jl.forInputString(orig));
    }
  }
  toReturn = 0;
  maxDigits = (jl.$clinit_Number$__ParseLong() , jl.maxDigitsForRadix)[radix];
  radixPower = fromInt_0((jl.$clinit_Number$__ParseLong() , jl.maxDigitsRadixPower)[radix]);
  minValue = neg_0((jl.$clinit_Number$__ParseLong() , jl.maxValueForRadix)[radix]);
  firstTime = true;
  head = length_0 % maxDigits;
  if (head > 0) {
    toReturn = fromInt_0(-parseInt(jl.substring_II_Ljava_lang_String___devirtual$(s, 0, head), radix));
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, head);
    length_0 -= head;
    firstTime = false;
  }
  while (length_0 >= maxDigits) {
    head = parseInt(jl.substring_II_Ljava_lang_String___devirtual$(s, 0, maxDigits), radix);
    s = jl.substring_I_Ljava_lang_String___devirtual$(s, maxDigits);
    length_0 -= maxDigits;
    if (!firstTime) {
      if (lt(toReturn, minValue)) {
        throw toJs(jl.forInputString(orig));
      }
      toReturn = mul_0(toReturn, radixPower);
    }
     else {
      firstTime = false;
    }
    toReturn = sub_2(toReturn, fromInt_0(head));
  }
  if (gt(toReturn, 0)) {
    throw toJs(jl.forInputString(orig));
  }
  if (!negative) {
    toReturn = neg_0(toReturn);
    if (lt(toReturn, 0)) {
      throw toJs(jl.forInputString(orig));
    }
  }
  return toReturn;
}
;
jl.byteValue__B__devirtual$ = function byteValue__B__devirtual$(this$static){
  return instanceOfDouble(this$static)?jl.$byteValue(this$static):this$static.byteValue();
}
;
jl.doubleValue__D__devirtual$ = function doubleValue__D__devirtual$(this$static){
  jl.$clinit_Number();
  return instanceOfDouble(this$static)?jl.$doubleValue(this$static):this$static.doubleValue();
}
;
jl.floatValue__F__devirtual$ = function floatValue__F__devirtual$(this$static){
  return instanceOfDouble(this$static)?jl.$floatValue(this$static):this$static.floatValue();
}
;
jl.getClass__Ljava_lang_Class___devirtual$_1 = function getClass__Ljava_lang_Class___devirtual$_1(this$static){
  return instanceOfDouble(this$static)?jl.$getClass_2(this$static):this$static.___clazz;
}
;
jl.intValue__I__devirtual$ = function intValue__I__devirtual$(this$static){
  jl.$clinit_Number();
  return instanceOfDouble(this$static)?jl.$intValue(this$static):this$static.intValue();
}
;
jl.longValue__J__devirtual$ = function longValue__J__devirtual$(this$static){
  return instanceOfDouble(this$static)?jl.$longValue(this$static):this$static.longValue();
}
;
jl.shortValue__S__devirtual$ = function shortValue__S__devirtual$(this$static){
  return instanceOfDouble(this$static)?jl.$shortValue(this$static):this$static.shortValue();
}
;
defineClass(24, 1, {4:1, 24:1, 1:1});
_.$init_607 = function $init_607(){
}
;
_.byteValue = function byteValue(){
  return narrow_byte(jl.intValue__I__devirtual$(this));
}
;
_.shortValue = function shortValue(){
  return narrow_short(jl.intValue__I__devirtual$(this));
}
;
jl.$clinit_Double = function $clinit_Double(){
  jl.$clinit_Double = emptyMethod;
  jl.$clinit_Number();
  MIN_EXPONENT = -1022;
  NaN_0 = 0 / 0;
  NEGATIVE_INFINITY = -1 / 0;
  POSITIVE_INFINITY = 1 / 0;
  BYTES_0 = narrow_int(64 / 8);
  TYPE_30 = cggl.D_classLit;
}
;
jl.$$init_1 = function $$init_1(this$static){
}
;
jl.$byteValue = function $byteValue(this$static){
  return round_byte(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$compareTo_1 = function $compareTo_1(this$static, b){
  return compare_22(jl.doubleValue__D__devirtual$_0(this$static), jl.doubleValue__D__devirtual$_0(b));
}
;
jl.$compareTo_2 = function $compareTo_2(this$static, b){
  return jl.compareTo_Ljava_lang_Double__I__devirtual$(this$static, castToDouble(b));
}
;
jl.$create_1 = function $create_1(x_0){
  jl.$clinit_Double();
  return ji2.uncheckedCast(x_0);
}
;
function $create_2(s){
  jl.$clinit_Double();
  return ji2.uncheckedCast(parseDouble(s));
}

jl.$doubleValue = function $doubleValue(this$static){
  return ji2.unsafeCastToDouble(ji2.checkNotNull_0(this$static));
}
;
jl.$equals_2 = function $equals_2(this$static, o){
  return maskUndefined(ji2.checkNotNull_0(this$static)) === maskUndefined(o);
}
;
jl.$floatValue = function $floatValue(this$static){
  return jl.doubleValue__D__devirtual$_0(this$static);
}
;
jl.$getClass_2 = function $getClass_2(this$static){
  return cggl.Ljava_lang_Double_2_classLit;
}
;
jl.$hashCode_2 = function $hashCode_2(this$static){
  return jl.hashCode_17(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$init__V__devirtual$_2 = function $init__V__devirtual$_2(this$static){
  return jl.$$init_1(this$static);
}
;
jl.$intValue = function $intValue(this$static){
  return round_int(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$isInfinite = function $isInfinite(this$static){
  return jl.isInfinite(jl.doubleValue__D__devirtual$_0(this$static));
}
;
function $isInstance_5(instance){
  jl.$clinit_Double();
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2('number', typeof(instance));
}

jl.$isNaN = function $isNaN(this$static){
  return isNaN(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$longValue = function $longValue(this$static){
  return fromDouble_0(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.$shortValue = function $shortValue(this$static){
  return round_short(jl.doubleValue__D__devirtual$_0(this$static));
}
;
jl.Double = function Double(value_0){
  jl.Number_0.call(this);
  jl.$init__V__devirtual$_2(this);
  jl.$create_1(value_0);
}
;
function Double_0(s){
  jl.Number_0.call(this);
  jl.$init__V__devirtual$_2(this);
  $create_2(s);
}

jl.byteValue__B__devirtual$_0 = function byteValue__B__devirtual$_0(this$static){
  return jl.$byteValue(this$static);
}
;
function compare_22(x_0, y_0){
  jl.$clinit_Double();
  if (x_0 < y_0) {
    return -1;
  }
  if (x_0 > y_0) {
    return 1;
  }
  if (x_0 == y_0) {
    return x_0 == 0?compare_22(1 / x_0, 1 / y_0):0;
  }
  if (isNaN(x_0)) {
    if (isNaN(y_0)) {
      return 0;
    }
     else {
      return 1;
    }
  }
   else {
    return -1;
  }
}

jl.compareTo_Ljava_lang_Double__I__devirtual$ = function compareTo_Ljava_lang_Double__I__devirtual$(this$static, b){
  return jl.$compareTo_1(this$static, b);
}
;
jl.compareTo_Ljava_lang_Object__I__devirtual$_1 = function compareTo_Ljava_lang_Object__I__devirtual$_1(this$static, b){
  return jl.$compareTo_2(this$static, b);
}
;
function doubleToLongBits(value_0){
  jl.$clinit_Double();
  if (isNaN(value_0)) {
    return {l:0, m:0, h:524160};
  }
  return jl.doubleToRawLongBits(value_0);
}

jl.doubleToRawLongBits = function doubleToRawLongBits(value_0){
  return ji2.doubleToRawLongBits_0(value_0);
}
;
jl.doubleValue__D__devirtual$_0 = function doubleValue__D__devirtual$_0(this$static){
  jl.$clinit_Double();
  return jl.$doubleValue(this$static);
}
;
jl.equals_Ljava_lang_Object__Z__devirtual$_1 = function equals_Ljava_lang_Object__Z__devirtual$_1(this$static, o){
  jl.$clinit_Double();
  return jl.$equals_2(this$static, o);
}
;
jl.floatValue__F__devirtual$_0 = function floatValue__F__devirtual$_0(this$static){
  return jl.$floatValue(this$static);
}
;
jl.getClass__Ljava_lang_Class___devirtual$_2 = function getClass__Ljava_lang_Class___devirtual$_2(this$static){
  return jl.$getClass_2(this$static);
}
;
jl.hashCode_17 = function hashCode_17(d){
  return round_int(d);
}
;
jl.hashCode__I__devirtual$_1 = function hashCode__I__devirtual$_1(this$static){
  jl.$clinit_Double();
  return jl.$hashCode_2(this$static);
}
;
jl.intValue__I__devirtual$_0 = function intValue__I__devirtual$_0(this$static){
  return jl.$intValue(this$static);
}
;
jl.isInfinite = function isInfinite(x_0){
  jl.$clinit_Double();
  return !isNaN(x_0) && !isFinite(x_0);
}
;
jl.isInfinite__Z__devirtual$ = function isInfinite__Z__devirtual$(this$static){
  return jl.$isInfinite(this$static);
}
;
jl.isNaN__Z__devirtual$ = function isNaN__Z__devirtual$(this$static){
  return jl.$isNaN(this$static);
}
;
function longBitsToDouble(bits){
  jl.$clinit_Double();
  return ji2.longBitsToDouble_0(bits);
}

jl.longValue__J__devirtual$_0 = function longValue__J__devirtual$_0(this$static){
  return jl.$longValue(this$static);
}
;
function max_1(a, b){
  jl.$clinit_Double();
  return $wnd.Math.max(a, b);
}

function min_1(a, b){
  jl.$clinit_Double();
  return $wnd.Math.min(a, b);
}

function parseDouble(s){
  jl.$clinit_Double();
  return jl.__parseAndValidateDouble(s);
}

jl.shortValue__S__devirtual$_0 = function shortValue__S__devirtual$_0(this$static){
  return jl.$shortValue(this$static);
}
;
function sum_0(a, b){
  jl.$clinit_Double();
  return a + b;
}

jl.toString_41 = function toString_41(b){
  jl.$clinit_Double();
  return jl.valueOf_30(b);
}
;
jl.valueOf_23 = function valueOf_23(d){
  jl.$clinit_Double();
  return jl.$create_1(d);
}
;
function valueOf_24(s){
  jl.$clinit_Double();
  return $create_2(s);
}

doubleCastMap = {4:1, 10:1, 501:1, 24:1, 1:1};
var BYTES_0 = 0;
var MAX_EXPONENT = 1023;
var MAX_VALUE_2 = 1.7976931348623157E308;
var MIN_EXPONENT = 0;
var MIN_NORMAL = 2.2250738585072014E-308;
var MIN_VALUE_2 = 4.9E-324;
var NEGATIVE_INFINITY = 0;
var NaN_0 = 0;
var POSITIVE_INFINITY = 0;
var SIZE_1 = 64;
var TYPE_30;
jl.$clinit_IllegalStateException = function $clinit_IllegalStateException(){
  jl.$clinit_IllegalStateException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.IllegalStateException = function IllegalStateException(){
  jl.$clinit_IllegalStateException();
  jl.RuntimeException.call(this);
  this.$init_615();
}
;
jl.IllegalStateException_0 = function IllegalStateException_0(s){
  jl.$clinit_IllegalStateException();
  jl.RuntimeException_1.call(this, s);
  this.$init_615();
}
;
defineClass(84, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.IllegalStateException, jl.IllegalStateException_0);
_.$init_615 = function $init_615(){
}
;
jl.$clinit_IndexOutOfBoundsException = function $clinit_IndexOutOfBoundsException(){
  jl.$clinit_IndexOutOfBoundsException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.IndexOutOfBoundsException = function IndexOutOfBoundsException(){
  jl.$clinit_IndexOutOfBoundsException();
  jl.RuntimeException.call(this);
  this.$init_604();
}
;
jl.IndexOutOfBoundsException_0 = function IndexOutOfBoundsException_0(message){
  jl.$clinit_IndexOutOfBoundsException();
  jl.RuntimeException_1.call(this, message);
  this.$init_604();
}
;
defineClass(52, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.IndexOutOfBoundsException, jl.IndexOutOfBoundsException_0);
_.$init_604 = function $init_604(){
}
;
jl.$clinit_Integer = function $clinit_Integer(){
  jl.$clinit_Integer = emptyMethod;
  jl.$clinit_Number();
  BYTES_2 = narrow_int(32 / 8);
  TYPE_32 = cggl.I_classLit;
}
;
jl.Integer = function Integer(value_0){
  jl.$clinit_Integer();
  jl.Number_0.call(this);
  this.$init_616();
  this.value_0 = value_0;
}
;
function bitCount_1(x_0){
  jl.$clinit_Integer();
  x_0 -= x_0 >> 1 & 1431655765;
  x_0 = (x_0 >> 2 & 858993459) + (x_0 & 858993459);
  x_0 = (x_0 >> 4) + x_0 & 252645135;
  x_0 += x_0 >> 8;
  x_0 += x_0 >> 16;
  return x_0 & 63;
}

function compare_24(x_0, y_0){
  jl.$clinit_Integer();
  if (x_0 < y_0) {
    return -1;
  }
   else if (x_0 > y_0) {
    return 1;
  }
   else {
    return 0;
  }
}

jl.hashCode_21 = function hashCode_21(i){
  return i;
}
;
function highestOneBit(i){
  jl.$clinit_Integer();
  var rtn;
  if (i < 0) {
    return -2147483648;
  }
   else if (i == 0) {
    return 0;
  }
   else {
    for (rtn = 1073741824; (rtn & i) == 0; rtn >>= 1) {
    }
    return rtn;
  }
}

function numberOfLeadingZeros_0(i){
  jl.$clinit_Integer();
  var m, n, y_0;
  if (i < 0) {
    return 0;
  }
   else if (i == 0) {
    return 32;
  }
   else {
    y_0 = -(i >> 16);
    m = y_0 >> 16 & 16;
    n = 16 - m;
    i = i >> m;
    y_0 = i - 256;
    m = y_0 >> 16 & 8;
    n += m;
    i <<= m;
    y_0 = i - 4096;
    m = y_0 >> 16 & 4;
    n += m;
    i <<= m;
    y_0 = i - 16384;
    m = y_0 >> 16 & 2;
    n += m;
    i <<= m;
    y_0 = i >> 14;
    m = y_0 & ~(y_0 >> 1);
    return n + 2 - m;
  }
}

function numberOfTrailingZeros(i){
  jl.$clinit_Integer();
  var r, rtn;
  if (i == 0) {
    return 32;
  }
   else {
    rtn = 0;
    for (r = 1; (r & i) == 0; r <<= 1) {
      rtn++;
    }
    return rtn;
  }
}

jl.parseInt_2 = function parseInt_2(s){
  jl.$clinit_Integer();
  return parseInt_3(s, 10);
}
;
function parseInt_3(s, radix){
  jl.$clinit_Integer();
  return jl.__parseAndValidateInt(s, radix, -2147483648, 2147483647);
}

function signum_0(i){
  jl.$clinit_Integer();
  if (i == 0) {
    return 0;
  }
   else if (i < 0) {
    return -1;
  }
   else {
    return 1;
  }
}

function toHexString(value_0){
  jl.$clinit_Integer();
  return toUnsignedString(value_0, 16);
}

jl.toString_45 = function toString_45(value_0){
  jl.$clinit_Integer();
  return jl.valueOf_32(value_0);
}
;
jl.toString_46 = function toString_46(value_0, radix){
  jl.$clinit_Integer();
  return ji2.intToString(value_0, radix);
}
;
function toUnsignedString(value_0, radix){
  jl.$clinit_Integer();
  return ji2.uintToString(value_0, radix);
}

jl.valueOf_26 = function valueOf_26(i){
  jl.$clinit_Integer();
  if (i > -129 && i < 128) {
    return jl.get_29(i);
  }
  return new jl.Integer(i);
}
;
defineClass(32, 24, {4:1, 10:1, 32:1, 24:1, 1:1}, jl.Integer);
_.$init_616 = function $init_616(){
}
;
_.compareTo_1 = function compareTo_26(b){
  return this.compareTo_13(castTo(b, 32));
}
;
_.byteValue = function byteValue_2(){
  return narrow_byte(this.value_0);
}
;
_.compareTo_13 = function compareTo_25(b){
  return compare_24(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_2(){
  return this.value_0;
}
;
_.equals_0 = function equals_28(o){
  return instanceOf(o, 32) && castTo(o, 32).value_0 == this.value_0;
}
;
_.floatValue = function floatValue_1(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_20(){
  return jl.hashCode_21(this.value_0);
}
;
_.intValue = function intValue_2(){
  return this.value_0;
}
;
_.longValue = function longValue_2(){
  return fromInt_0(this.value_0);
}
;
_.shortValue = function shortValue_2(){
  return narrow_short(this.value_0);
}
;
_.toString_0 = function toString_44(){
  return jl.toString_45(this.value_0);
}
;
_.value_0 = 0;
var BYTES_2 = 0;
var MAX_VALUE_4 = 2147483647;
var MIN_VALUE_4 = -2147483648;
var SIZE_3 = 32;
var TYPE_32;
jl.$clinit_NullPointerException = function $clinit_NullPointerException(){
  jl.$clinit_NullPointerException = emptyMethod;
  jl.$clinit_JsException();
}
;
jl.NullPointerException = function NullPointerException(){
  jl.$clinit_NullPointerException();
  jl.JsException.call(this);
  this.$init_619();
}
;
jl.NullPointerException_0 = function NullPointerException_0(typeError){
  jl.$clinit_NullPointerException();
  jl.JsException_0.call(this, typeError);
  this.$init_619();
}
;
jl.NullPointerException_1 = function NullPointerException_1(message){
  jl.$clinit_NullPointerException();
  jl.JsException_1.call(this, message);
  this.$init_619();
}
;
defineClass(73, 184, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.NullPointerException, jl.NullPointerException_0, jl.NullPointerException_1);
_.$init_619 = function $init_619(){
}
;
_.createError = function createError_0(msg){
  return new TypeError(msg);
}
;
jl.$clinit_NullPointerException$NativeTypeError = function $clinit_NullPointerException$NativeTypeError(){
  jl.$clinit_NullPointerException$NativeTypeError = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_Number$JavaLangNumber = function $clinit_Number$JavaLangNumber(){
  jl.$clinit_Number$JavaLangNumber = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_String = function $clinit_String(){
  jl.$clinit_String = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_CharSequence();
  CASE_INSENSITIVE_ORDER = new jl.String$1;
}
;
jl.$$init_2 = function $$init_2(this$static){
}
;
jl.$asNativeString = function $asNativeString(this$static){
  return ji2.uncheckedCast(this$static);
}
;
jl.$charAt = function $charAt(this$static, index_0){
  ji2.checkStringElementIndex(index_0, jl.length__I__devirtual$_0(this$static));
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).charCodeAt(index_0);
}
;
jl.$chars_0 = function $chars_0(this$static){
  return jl.$chars(this$static);
}
;
jl.$codePointAt = function $codePointAt(this$static, index_0){
  return codePointAt(this$static, index_0, jl.length__I__devirtual$_0(this$static));
}
;
jl.$codePointBefore = function $codePointBefore(this$static, index_0){
  return codePointBefore(this$static, index_0, 0);
}
;
jl.$codePointCount = function $codePointCount(this$static, beginIndex, endIndex){
  return codePointCount(this$static, beginIndex, endIndex);
}
;
jl.$compareTo_3 = function $compareTo_3(this$static, other){
  return jl.compareTo_Ljava_lang_String__I__devirtual$(this$static, castToString(other));
}
;
jl.$compareTo_4 = function $compareTo_4(this$static, other){
  var a, b;
  a = jl.doubleValue__D__devirtual$_0(ji2.uncheckedCast(this$static));
  b = jl.doubleValue__D__devirtual$_0(ji2.uncheckedCast(other));
  return a == b?0:a < b?-1:1;
}
;
jl.$compareToIgnoreCase = function $compareToIgnoreCase(this$static, other){
  return jl.compareTo_Ljava_lang_String__I__devirtual$(jl.toLowerCase__Ljava_lang_String___devirtual$(this$static), jl.toLowerCase__Ljava_lang_String___devirtual$(other));
}
;
jl.$concat = function $concat(this$static, str){
  return castToString(ji2.checkNotNull_0(this$static)) + ('' + castToString(ji2.checkNotNull_0(str)));
}
;
jl.$contains = function $contains(this$static, s){
  return jl.indexOf_Ljava_lang_String__I__devirtual$(this$static, toString_30(s)) != -1;
}
;
jl.$contentEquals = function $contentEquals(this$static, cs){
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this$static, toString_30(cs));
}
;
jl.$contentEquals_0 = function $contentEquals_0(this$static, sb){
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this$static, sb.toString_0());
}
;
jl.$create_3 = function $create_3(){
  return '';
}
;
jl.$create_4 = function $create_4(other){
  return castToString(ji2.checkNotNull_0(other));
}
;
jl.$create_5 = function $create_5(sb){
  return sb.toString_0();
}
;
function $create_6(sb){
  jl.$clinit_String();
  return sb.toString_0();
}

jl.$create_7 = function $create_7(bytes){
  jl.$clinit_String();
  return jl.$create_8(bytes, 0, bytes.length);
}
;
jl.$create_8 = function $create_8(bytes, ofs, len){
  return jl.$create_10(bytes, ofs, len, (ji2.$clinit_EmulatedCharset() , ji2.UTF_8_0));
}
;
jl.$create_9 = function $create_9(bytes, ofs, len, charsetName){
  return jl.$create_10(bytes, ofs, len, jl.getCharset(charsetName));
}
;
jl.$create_10 = function $create_10(bytes, ofs, len, charset){
  jl.$clinit_String();
  return jl.valueOf_36(castTo(charset, 144).decodeString(bytes, ofs, len));
}
;
jl.$create_11 = function $create_11(bytes, charsetName){
  return jl.$create_9(bytes, 0, bytes.length, charsetName);
}
;
jl.$create_12 = function $create_12(bytes, charset){
  jl.$clinit_String();
  return jl.$create_10(bytes, 0, bytes.length, charset);
}
;
jl.$create_13 = function $create_13(value_0){
  return jl.valueOf_36(value_0);
}
;
jl.$create_14 = function $create_14(value_0, offset, count){
  jl.$clinit_String();
  return jl.valueOf_37(value_0, offset, count);
}
;
jl.$create_15 = function $create_15(codePoints, offset, count){
  var charIdx, chars;
  chars = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, count * 2, 15, 1);
  charIdx = 0;
  while (count-- > 0) {
    charIdx += toChars(codePoints[offset++], chars, charIdx);
  }
  return jl.valueOf_37(chars, 0, charIdx);
}
;
jl.$endsWith = function $endsWith(this$static, suffix){
  var suffixlength;
  suffixlength = jl.length__I__devirtual$_0(suffix);
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(jl.length__I__devirtual$_0(this$static) - suffixlength, suffixlength), suffix);
}
;
jl.$equals_3 = function $equals_3(this$static, other){
  return maskUndefined(ji2.checkNotNull_0(this$static)) === maskUndefined(other);
}
;
jl.$equalsIgnoreCase = function $equalsIgnoreCase(this$static, other){
  ji2.checkNotNull_0(this$static);
  if (jsEquals(other, null)) {
    return false;
  }
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(this$static, other)) {
    return true;
  }
  return jl.length__I__devirtual$_0(this$static) == jl.length__I__devirtual$_0(other) && jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.toLowerCase__Ljava_lang_String___devirtual$(this$static), jl.toLowerCase__Ljava_lang_String___devirtual$(other));
}
;
jl.$getBytes = function $getBytes(this$static){
  return jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(this$static, (ji2.$clinit_EmulatedCharset() , ji2.UTF_8_0));
}
;
jl.$getBytes_0 = function $getBytes_0(this$static, charsetName){
  return jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(this$static, jl.getCharset(charsetName));
}
;
jl.$getBytes_1 = function $getBytes_1(this$static, charset){
  return castTo(charset, 144).getBytes(this$static);
}
;
jl.$getChars = function $getChars(this$static, srcBegin, srcEnd, dst, dstBegin){
  ji2.checkCriticalStringBounds(srcBegin, srcEnd, jl.length__I__devirtual$_0(this$static));
  ji2.checkCriticalStringBounds(dstBegin, dstBegin + (srcEnd - srcBegin), dst.length);
  jl.getChars0_II_CI_V__devirtual$(this$static, srcBegin, srcEnd, dst, dstBegin);
}
;
jl.$getChars0 = function $getChars0(this$static, srcBegin, srcEnd, dst, dstBegin){
  while (srcBegin < srcEnd) {
    dst[dstBegin++] = jl.charAt_I_C__devirtual$_0(this$static, srcBegin++);
  }
}
;
jl.$getClass_3 = function $getClass_3(this$static){
  return cggl.Ljava_lang_String_2_classLit;
}
;
jl.$hashCode_3 = function $hashCode_3(this$static){
  var h, i;
  h = 0;
  for (i = 0; i < jl.length__I__devirtual$_0(this$static); i++) {
    h = ji2.ensureInt((h << 5) - h + jl.charAt_I_C__devirtual$_0(this$static, i));
  }
  return h;
}
;
jl.$indexOf = function $indexOf(this$static, codePoint){
  return jl.indexOf_Ljava_lang_String__I__devirtual$(this$static, fromCodePoint(codePoint));
}
;
jl.$indexOf_0 = function $indexOf_0(this$static, codePoint, startIndex){
  return jl.indexOf_Ljava_lang_String_I_I__devirtual$(this$static, fromCodePoint(codePoint), startIndex);
}
;
jl.$indexOf_1 = function $indexOf_1(this$static, str){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).indexOf(str);
}
;
jl.$indexOf_2 = function $indexOf_2(this$static, str, startIndex){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).indexOf(str, startIndex);
}
;
jl.$init__V__devirtual$_3 = function $init__V__devirtual$_3(this$static){
  return jl.$$init_2(this$static);
}
;
jl.$intern = function $intern(this$static){
  return castToString(ji2.checkNotNull_0(this$static));
}
;
jl.$isEmpty = function $isEmpty(this$static){
  return jl.length__I__devirtual$_0(this$static) == 0;
}
;
function $isInstance_6(instance){
  jl.$clinit_String();
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2('string', typeof(instance));
}

jl.$lastIndexOf = function $lastIndexOf(this$static, codePoint){
  return jl.lastIndexOf_Ljava_lang_String__I__devirtual$(this$static, fromCodePoint(codePoint));
}
;
jl.$lastIndexOf_0 = function $lastIndexOf_0(this$static, codePoint, startIndex){
  return jl.lastIndexOf_Ljava_lang_String_I_I__devirtual$(this$static, fromCodePoint(codePoint), startIndex);
}
;
jl.$lastIndexOf_1 = function $lastIndexOf_1(this$static, str){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).lastIndexOf(str);
}
;
jl.$lastIndexOf_2 = function $lastIndexOf_2(this$static, str, start_0){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).lastIndexOf(str, start_0);
}
;
jl.$length_9 = function $length_9(this$static){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).length;
}
;
jl.$matches = function $matches(this$static, regex){
  return (new RegExp('^(' + regex + ')$')).test(this$static);
}
;
jl.$nativeReplaceAll = function $nativeReplaceAll(this$static, regex, replace){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).replace(new RegExp(regex, 'g'), replace);
}
;
jl.$offsetByCodePoints = function $offsetByCodePoints(this$static, index_0, codePointOffset){
  return offsetByCodePoints(this$static, index_0, codePointOffset);
}
;
jl.$regionMatches = function $regionMatches(this$static, toffset, other, ooffset, len){
  return jl.regionMatches_ZILjava_lang_String_II_Z__devirtual$(this$static, false, toffset, other, ooffset, len);
}
;
jl.$regionMatches_0 = function $regionMatches_0(this$static, ignoreCase, toffset, other, ooffset, len){
  var left, right;
  ji2.checkNotNull_0(other);
  if (toffset < 0 || ooffset < 0) {
    return false;
  }
  if (toffset + len > jl.length__I__devirtual$_0(this$static) || ooffset + len > jl.length__I__devirtual$_0(other)) {
    return false;
  }
  if (len <= 0) {
    return true;
  }
  left = jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(toffset, len);
  right = jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(other).substr(ooffset, len);
  return ignoreCase?jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(left, right):jl.equals_Ljava_lang_Object__Z__devirtual$_2(left, right);
}
;
jl.$replace_0 = function $replace_0(this$static, from, to){
  var hex, regex, replace;
  hex = toHexString(from);
  regex = '\\u' + jl.substring_I_Ljava_lang_String___devirtual$('0000', jl.length__I__devirtual$_0(hex)) + hex;
  replace = String.fromCharCode(to);
  return jl.nativeReplaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace);
}
;
jl.$replace_1 = function $replace_1(this$static, from, to){
  var regex, replacement;
  regex = jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(toString_30(from), '([/\\\\\\.\\*\\+\\?\\|\\(\\)\\[\\]\\{\\}$^])', '\\\\$1');
  replacement = jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(toString_30(to), '\\\\', '\\\\\\\\'), '\\$', '\\\\$');
  return jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replacement);
}
;
jl.$replaceAll = function $replaceAll(this$static, regex, replace){
  replace = jl.translateReplaceString(replace);
  return jl.nativeReplaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace);
}
;
jl.$replaceFirst = function $replaceFirst(this$static, regex, replace){
  var jsRegEx;
  replace = jl.translateReplaceString(replace);
  jsRegEx = new RegExp(regex);
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).replace(jsRegEx, replace);
}
;
jl.$split_0 = function $split_0(this$static, regex){
  return jl.split_Ljava_lang_String_I__Ljava_lang_String___devirtual$(this$static, regex, 0);
}
;
jl.$split_1 = function $split_1(this$static, regex, maxMatch){
  var compiled, count, lastNonEmpty, lastTrail, matchIndex, matchObj, out, trail;
  compiled = new RegExp(regex, 'g');
  out = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, 0, 6, 1);
  count = 0;
  trail = this$static;
  lastTrail = null;
  while (true) {
    matchObj = compiled.exec(trail);
    if (jsEquals(matchObj, null) || jsEquals(trail, '') || count == maxMatch - 1 && maxMatch > 0) {
      out[count] = trail;
      break;
    }
     else {
      matchIndex = matchObj.index;
      out[count] = jl.substring_II_Ljava_lang_String___devirtual$(trail, 0, matchIndex);
      trail = jl.substring_II_Ljava_lang_String___devirtual$(trail, matchIndex + jl.length__I__devirtual$_0(ji2.$asArray(matchObj)[0]), jl.length__I__devirtual$_0(trail));
      compiled.lastIndex = 0;
      if (jsEquals(lastTrail, trail)) {
        out[count] = jl.substring_II_Ljava_lang_String___devirtual$(trail, 0, 1);
        trail = jl.substring_I_Ljava_lang_String___devirtual$(trail, 1);
      }
      lastTrail = trail;
      count++;
    }
  }
  if (maxMatch == 0 && jl.length__I__devirtual$_0(this$static) > 0) {
    lastNonEmpty = out.length;
    while (lastNonEmpty > 0 && jsEquals(out[lastNonEmpty - 1], '')) {
      --lastNonEmpty;
    }
    if (lastNonEmpty < out.length) {
      ji2.setLength_0(out, lastNonEmpty);
    }
  }
  return out;
}
;
jl.$startsWith = function $startsWith(this$static, prefix){
  return jl.startsWith_Ljava_lang_String_I_Z__devirtual$(this$static, prefix, 0);
}
;
jl.$startsWith_0 = function $startsWith_0(this$static, prefix, toffset){
  return toffset >= 0 && jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(toffset, jl.length__I__devirtual$_0(prefix)), prefix);
}
;
jl.$subSequence = function $subSequence(this$static, beginIndex, endIndex){
  return jl.substring_II_Ljava_lang_String___devirtual$(this$static, beginIndex, endIndex);
}
;
jl.$substring = function $substring(this$static, beginIndex){
  ji2.checkStringElementIndex(beginIndex, jl.length__I__devirtual$_0(this$static) + 1);
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(beginIndex);
}
;
jl.$substring_0 = function $substring_0(this$static, beginIndex, endIndex){
  ji2.checkStringBounds(beginIndex, endIndex, jl.length__I__devirtual$_0(this$static));
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).substr(beginIndex, endIndex - beginIndex);
}
;
jl.$toCharArray = function $toCharArray(this$static){
  var charArr, n;
  n = jl.length__I__devirtual$_0(this$static);
  charArr = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, n, 15, 1);
  jl.getChars0_II_CI_V__devirtual$(this$static, 0, n, charArr, 0);
  return charArr;
}
;
jl.$toLowerCase = function $toLowerCase(this$static){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toLowerCase();
}
;
jl.$toLowerCase_0 = function $toLowerCase_0(this$static, locale){
  return jsEquals(locale, ju.getDefault_0())?jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toLocaleLowerCase():jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toLowerCase();
}
;
jl.$toUpperCase = function $toUpperCase(this$static){
  return jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toUpperCase();
}
;
jl.$toUpperCase_0 = function $toUpperCase_0(this$static, locale){
  return jsEquals(locale, ju.getDefault_0())?jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toLocaleUpperCase():jl.asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static).toUpperCase();
}
;
jl.$trim = function $trim(this$static){
  var end, length_0, start_0;
  length_0 = jl.length__I__devirtual$_0(this$static);
  start_0 = 0;
  while (start_0 < length_0 && jl.charAt_I_C__devirtual$_0(this$static, start_0) <= 32) {
    start_0++;
  }
  end = length_0;
  while (end > start_0 && jl.charAt_I_C__devirtual$_0(this$static, end - 1) <= 32) {
    end--;
  }
  return start_0 > 0 || end < length_0?jl.substring_II_Ljava_lang_String___devirtual$(this$static, start_0, end):this$static;
}
;
jl.String_0 = function String_0(){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_3();
}
;
jl.String_1 = function String_1(other){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_4(other);
}
;
jl.String_2 = function String_2(sb){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_5(sb);
}
;
function String_3(sb){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  $create_6(sb);
}

jl.String_4 = function String_4(bytes){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_7(bytes);
}
;
jl.String_5 = function String_5(bytes, ofs, len){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_8(bytes, ofs, len);
}
;
jl.String_6 = function String_6(bytes, ofs, len, charsetName){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_9(bytes, ofs, len, charsetName);
}
;
jl.String_7 = function String_7(bytes, ofs, len, charset){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_10(bytes, ofs, len, charset);
}
;
jl.String_8 = function String_8(bytes, charsetName){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_11(bytes, charsetName);
}
;
jl.String_9 = function String_9(bytes, charset){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_12(bytes, charset);
}
;
jl.String_10 = function String_10(value_0){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_13(value_0);
}
;
jl.String_11 = function String_11(value_0, offset, count){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_14(value_0, offset, count);
}
;
jl.String_12 = function String_12(codePoints, offset, count){
  Object_0.call(this);
  jl.$init__V__devirtual$_3(this);
  jl.$create_15(codePoints, offset, count);
}
;
jl.asNativeString__Ljava_lang_String$NativeString___devirtual$ = function asNativeString__Ljava_lang_String$NativeString___devirtual$(this$static){
  return jl.$asNativeString(this$static);
}
;
jl.charAt_I_C__devirtual$ = function charAt_I_C__devirtual$(this$static, index_0){
  jl.$clinit_String();
  return instanceOfString(this$static)?jl.$charAt(this$static, index_0):this$static.charAt_0(index_0);
}
;
jl.charAt_I_C__devirtual$_0 = function charAt_I_C__devirtual$_0(this$static, index_0){
  jl.$clinit_String();
  return jl.$charAt(this$static, index_0);
}
;
jl.chars__Ljava_util_stream_IntStream___devirtual$ = function chars__Ljava_util_stream_IntStream___devirtual$(this$static){
  return instanceOfString(this$static)?jl.$chars_0(this$static):this$static.chars();
}
;
jl.chars__Ljava_util_stream_IntStream___devirtual$_0 = function chars__Ljava_util_stream_IntStream___devirtual$_0(this$static){
  return jl.$chars_0(this$static);
}
;
jl.codePointAt_I_I__devirtual$ = function codePointAt_I_I__devirtual$(this$static, index_0){
  jl.$clinit_String();
  return jl.$codePointAt(this$static, index_0);
}
;
jl.codePointBefore_I_I__devirtual$ = function codePointBefore_I_I__devirtual$(this$static, index_0){
  return jl.$codePointBefore(this$static, index_0);
}
;
jl.codePointCount_II_I__devirtual$ = function codePointCount_II_I__devirtual$(this$static, beginIndex, endIndex){
  return jl.$codePointCount(this$static, beginIndex, endIndex);
}
;
jl.compareToIgnoreCase_Ljava_lang_String__I__devirtual$ = function compareToIgnoreCase_Ljava_lang_String__I__devirtual$(this$static, other){
  jl.$clinit_String();
  return jl.$compareToIgnoreCase(this$static, other);
}
;
jl.compareTo_Ljava_lang_Object__I__devirtual$_2 = function compareTo_Ljava_lang_Object__I__devirtual$_2(this$static, other){
  return jl.$compareTo_3(this$static, other);
}
;
jl.compareTo_Ljava_lang_String__I__devirtual$ = function compareTo_Ljava_lang_String__I__devirtual$(this$static, other){
  jl.$clinit_String();
  return jl.$compareTo_4(this$static, other);
}
;
jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$ = function concat_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, str){
  jl.$clinit_String();
  return jl.$concat(this$static, str);
}
;
jl.contains_Ljava_lang_CharSequence__Z__devirtual$ = function contains_Ljava_lang_CharSequence__Z__devirtual$(this$static, s){
  jl.$clinit_String();
  return jl.$contains(this$static, s);
}
;
jl.contentEquals_Ljava_lang_CharSequence__Z__devirtual$ = function contentEquals_Ljava_lang_CharSequence__Z__devirtual$(this$static, cs){
  return jl.$contentEquals(this$static, cs);
}
;
jl.contentEquals_Ljava_lang_StringBuffer__Z__devirtual$ = function contentEquals_Ljava_lang_StringBuffer__Z__devirtual$(this$static, sb){
  return jl.$contentEquals_0(this$static, sb);
}
;
jl.copyValueOf = function copyValueOf(v){
  return jl.valueOf_36(v);
}
;
function copyValueOf_0(v, offset, count){
  jl.$clinit_String();
  return jl.valueOf_37(v, offset, count);
}

jl.endsWith_Ljava_lang_String__Z__devirtual$ = function endsWith_Ljava_lang_String__Z__devirtual$(this$static, suffix){
  jl.$clinit_String();
  return jl.$endsWith(this$static, suffix);
}
;
jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$ = function equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(this$static, other){
  jl.$clinit_String();
  return jl.$equalsIgnoreCase(this$static, other);
}
;
jl.equals_Ljava_lang_Object__Z__devirtual$_2 = function equals_Ljava_lang_Object__Z__devirtual$_2(this$static, other){
  jl.$clinit_String();
  return jl.$equals_3(this$static, other);
}
;
jl.fromCharCode = function fromCharCode(array){
  return String.fromCharCode.apply(null, array);
}
;
function fromCodePoint(codePoint){
  jl.$clinit_String();
  var hiSurrogate, loSurrogate;
  if (codePoint >= 65536) {
    hiSurrogate = getHighSurrogate(codePoint);
    loSurrogate = getLowSurrogate(codePoint);
    return jl.valueOf_29(hiSurrogate) + ('' + jl.valueOf_29(loSurrogate));
  }
   else {
    return jl.valueOf_29(narrow_char(codePoint));
  }
}

jl.getBytes_Ljava_lang_String___B__devirtual$ = function getBytes_Ljava_lang_String___B__devirtual$(this$static, charsetName){
  return jl.$getBytes_0(this$static, charsetName);
}
;
jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$ = function getBytes_Ljava_nio_charset_Charset___B__devirtual$(this$static, charset){
  jl.$clinit_String();
  return jl.$getBytes_1(this$static, charset);
}
;
jl.getBytes___B__devirtual$ = function getBytes___B__devirtual$(this$static){
  jl.$clinit_String();
  return jl.$getBytes(this$static);
}
;
jl.getChars0_II_CI_V__devirtual$ = function getChars0_II_CI_V__devirtual$(this$static, srcBegin, srcEnd, dst, dstBegin){
  return jl.$getChars0(this$static, srcBegin, srcEnd, dst, dstBegin);
}
;
jl.getChars_II_CI_V__devirtual$ = function getChars_II_CI_V__devirtual$(this$static, srcBegin, srcEnd, dst, dstBegin){
  jl.$clinit_String();
  return jl.$getChars(this$static, srcBegin, srcEnd, dst, dstBegin);
}
;
jl.getCharset = function getCharset(charsetName){
  var e;
  try {
    return jnc.forName(charsetName);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 253)) {
      e = $e0;
      throw toJs(new ji.UnsupportedEncodingException(charsetName));
    }
     else 
      throw toJs($e0);
  }
}
;
jl.getClass__Ljava_lang_Class___devirtual$_3 = function getClass__Ljava_lang_Class___devirtual$_3(this$static){
  return jl.$getClass_3(this$static);
}
;
jl.hashCode__I__devirtual$_2 = function hashCode__I__devirtual$_2(this$static){
  jl.$clinit_String();
  return jl.$hashCode_3(this$static);
}
;
jl.indexOf_II_I__devirtual$ = function indexOf_II_I__devirtual$(this$static, codePoint, startIndex){
  jl.$clinit_String();
  return jl.$indexOf_0(this$static, codePoint, startIndex);
}
;
jl.indexOf_I_I__devirtual$ = function indexOf_I_I__devirtual$(this$static, codePoint){
  jl.$clinit_String();
  return jl.$indexOf(this$static, codePoint);
}
;
jl.indexOf_Ljava_lang_String_I_I__devirtual$ = function indexOf_Ljava_lang_String_I_I__devirtual$(this$static, str, startIndex){
  jl.$clinit_String();
  return jl.$indexOf_2(this$static, str, startIndex);
}
;
jl.indexOf_Ljava_lang_String__I__devirtual$ = function indexOf_Ljava_lang_String__I__devirtual$(this$static, str){
  jl.$clinit_String();
  return jl.$indexOf_1(this$static, str);
}
;
jl.intern__Ljava_lang_String___devirtual$ = function intern__Ljava_lang_String___devirtual$(this$static){
  return jl.$intern(this$static);
}
;
jl.isEmpty__Z__devirtual$ = function isEmpty__Z__devirtual$(this$static){
  jl.$clinit_String();
  return jl.$isEmpty(this$static);
}
;
function join_1(delimiter, elements){
  jl.$clinit_String();
  var e, e$iterator, joiner;
  joiner = new ju.StringJoiner(delimiter);
  for (e$iterator = elements.iterator(); e$iterator.hasNext_0();) {
    e = castTo(e$iterator.next_3(), 208);
    joiner.add_14(e);
  }
  return joiner.toString_0();
}

jl.join_2 = function join_2(delimiter, elements){
  var e, e$array, e$index, e$max, joiner;
  joiner = new ju.StringJoiner(delimiter);
  for (e$array = elements , e$index = 0 , e$max = e$array.length; e$index < e$max; ++e$index) {
    e = e$array[e$index];
    joiner.add_14(e);
  }
  return joiner.toString_0();
}
;
jl.lastIndexOf_II_I__devirtual$ = function lastIndexOf_II_I__devirtual$(this$static, codePoint, startIndex){
  jl.$clinit_String();
  return jl.$lastIndexOf_0(this$static, codePoint, startIndex);
}
;
jl.lastIndexOf_I_I__devirtual$ = function lastIndexOf_I_I__devirtual$(this$static, codePoint){
  jl.$clinit_String();
  return jl.$lastIndexOf(this$static, codePoint);
}
;
jl.lastIndexOf_Ljava_lang_String_I_I__devirtual$ = function lastIndexOf_Ljava_lang_String_I_I__devirtual$(this$static, str, start_0){
  jl.$clinit_String();
  return jl.$lastIndexOf_2(this$static, str, start_0);
}
;
jl.lastIndexOf_Ljava_lang_String__I__devirtual$ = function lastIndexOf_Ljava_lang_String__I__devirtual$(this$static, str){
  jl.$clinit_String();
  return jl.$lastIndexOf_1(this$static, str);
}
;
jl.length__I__devirtual$ = function length__I__devirtual$(this$static){
  jl.$clinit_String();
  return instanceOfString(this$static)?jl.$length_9(this$static):this$static.length_0();
}
;
jl.length__I__devirtual$_0 = function length__I__devirtual$_0(this$static){
  jl.$clinit_String();
  return jl.$length_9(this$static);
}
;
jl.matches_Ljava_lang_String__Z__devirtual$ = function matches_Ljava_lang_String__Z__devirtual$(this$static, regex){
  return jl.$matches(this$static, regex);
}
;
jl.nativeReplaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$ = function nativeReplaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace){
  return jl.$nativeReplaceAll(this$static, regex, replace);
}
;
jl.offsetByCodePoints_II_I__devirtual$ = function offsetByCodePoints_II_I__devirtual$(this$static, index_0, codePointOffset){
  return jl.$offsetByCodePoints(this$static, index_0, codePointOffset);
}
;
jl.regionMatches_ILjava_lang_String_II_Z__devirtual$ = function regionMatches_ILjava_lang_String_II_Z__devirtual$(this$static, toffset, other, ooffset, len){
  return jl.$regionMatches(this$static, toffset, other, ooffset, len);
}
;
jl.regionMatches_ZILjava_lang_String_II_Z__devirtual$ = function regionMatches_ZILjava_lang_String_II_Z__devirtual$(this$static, ignoreCase, toffset, other, ooffset, len){
  return jl.$regionMatches_0(this$static, ignoreCase, toffset, other, ooffset, len);
}
;
jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$ = function replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace){
  jl.$clinit_String();
  return jl.$replaceAll(this$static, regex, replace);
}
;
jl.replaceFirst_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$ = function replaceFirst_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(this$static, regex, replace){
  return jl.$replaceFirst(this$static, regex, replace);
}
;
jl.replace_CC_Ljava_lang_String___devirtual$ = function replace_CC_Ljava_lang_String___devirtual$(this$static, from, to){
  return jl.$replace_0(this$static, from, to);
}
;
jl.replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$ = function replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$(this$static, from, to){
  jl.$clinit_String();
  return jl.$replace_1(this$static, from, to);
}
;
jl.split_Ljava_lang_String_I__Ljava_lang_String___devirtual$ = function split_Ljava_lang_String_I__Ljava_lang_String___devirtual$(this$static, regex, maxMatch){
  return jl.$split_1(this$static, regex, maxMatch);
}
;
jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$ = function split_Ljava_lang_String___Ljava_lang_String___devirtual$(this$static, regex){
  jl.$clinit_String();
  return jl.$split_0(this$static, regex);
}
;
jl.startsWith_Ljava_lang_String_I_Z__devirtual$ = function startsWith_Ljava_lang_String_I_Z__devirtual$(this$static, prefix, toffset){
  jl.$clinit_String();
  return jl.$startsWith_0(this$static, prefix, toffset);
}
;
jl.startsWith_Ljava_lang_String__Z__devirtual$ = function startsWith_Ljava_lang_String__Z__devirtual$(this$static, prefix){
  jl.$clinit_String();
  return jl.$startsWith(this$static, prefix);
}
;
jl.subSequence_II_Ljava_lang_CharSequence___devirtual$ = function subSequence_II_Ljava_lang_CharSequence___devirtual$(this$static, start_0, end){
  return instanceOfString(this$static)?jl.$subSequence(this$static, start_0, end):this$static.subSequence(start_0, end);
}
;
jl.subSequence_II_Ljava_lang_CharSequence___devirtual$_0 = function subSequence_II_Ljava_lang_CharSequence___devirtual$_0(this$static, beginIndex, endIndex){
  return jl.$subSequence(this$static, beginIndex, endIndex);
}
;
jl.substring_II_Ljava_lang_String___devirtual$ = function substring_II_Ljava_lang_String___devirtual$(this$static, beginIndex, endIndex){
  jl.$clinit_String();
  return jl.$substring_0(this$static, beginIndex, endIndex);
}
;
jl.substring_I_Ljava_lang_String___devirtual$ = function substring_I_Ljava_lang_String___devirtual$(this$static, beginIndex){
  jl.$clinit_String();
  return jl.$substring(this$static, beginIndex);
}
;
jl.toCharArray___C__devirtual$ = function toCharArray___C__devirtual$(this$static){
  return jl.$toCharArray(this$static);
}
;
jl.toLowerCase_Ljava_util_Locale__Ljava_lang_String___devirtual$ = function toLowerCase_Ljava_util_Locale__Ljava_lang_String___devirtual$(this$static, locale){
  return jl.$toLowerCase_0(this$static, locale);
}
;
jl.toLowerCase__Ljava_lang_String___devirtual$ = function toLowerCase__Ljava_lang_String___devirtual$(this$static){
  jl.$clinit_String();
  return jl.$toLowerCase(this$static);
}
;
jl.toUpperCase_Ljava_util_Locale__Ljava_lang_String___devirtual$ = function toUpperCase_Ljava_util_Locale__Ljava_lang_String___devirtual$(this$static, locale){
  return jl.$toUpperCase_0(this$static, locale);
}
;
jl.toUpperCase__Ljava_lang_String___devirtual$ = function toUpperCase__Ljava_lang_String___devirtual$(this$static){
  jl.$clinit_String();
  return jl.$toUpperCase(this$static);
}
;
jl.translateReplaceString = function translateReplaceString(replaceStr){
  var pos;
  pos = 0;
  while (0 <= (pos = jl.indexOf_Ljava_lang_String_I_I__devirtual$(replaceStr, '\\', pos))) {
    if (jl.charAt_I_C__devirtual$_0(replaceStr, pos + 1) == 36) {
      replaceStr = jl.substring_II_Ljava_lang_String___devirtual$(replaceStr, 0, pos) + '$' + jl.substring_I_Ljava_lang_String___devirtual$(replaceStr, ++pos);
    }
     else {
      replaceStr = jl.substring_II_Ljava_lang_String___devirtual$(replaceStr, 0, pos) + ('' + jl.substring_I_Ljava_lang_String___devirtual$(replaceStr, ++pos));
    }
  }
  return replaceStr;
}
;
jl.trim__Ljava_lang_String___devirtual$ = function trim__Ljava_lang_String___devirtual$(this$static){
  jl.$clinit_String();
  return jl.$trim(this$static);
}
;
jl.valueOf_29 = function valueOf_29(x_0){
  jl.$clinit_String();
  return String.fromCharCode(x_0);
}
;
jl.valueOf_30 = function valueOf_30(x_0){
  jl.$clinit_String();
  return '' + x_0;
}
;
jl.valueOf_31 = function valueOf_31(x_0){
  jl.$clinit_String();
  return '' + x_0;
}
;
jl.valueOf_32 = function valueOf_32(x_0){
  jl.$clinit_String();
  return '' + x_0;
}
;
jl.valueOf_33 = function valueOf_33(x_0){
  jl.$clinit_String();
  return '' + toString_29(x_0);
}
;
function valueOf_34(x_0){
  jl.$clinit_String();
  return jsEquals(x_0, null)?'null':toString_30(x_0);
}

jl.valueOf_35 = function valueOf_35(x_0){
  jl.$clinit_String();
  return '' + x_0;
}
;
jl.valueOf_36 = function valueOf_36(x_0){
  jl.$clinit_String();
  return jl.valueOf_37(x_0, 0, x_0.length);
}
;
jl.valueOf_37 = function valueOf_37(x_0, offset, count){
  jl.$clinit_String();
  var batchEnd, batchSize, batchStart, end, s;
  end = offset + count;
  ji2.checkCriticalStringBounds(offset, end, x_0.length);
  batchSize = 10000;
  s = '';
  for (batchStart = offset; batchStart < end;) {
    batchEnd = $wnd.Math.min(batchStart + batchSize, end);
    s += '' + jl.fromCharCode(ji2.unsafeClone(x_0, batchStart, batchEnd));
    batchStart = batchEnd;
  }
  return s;
}
;
stringCastMap = {4:1, 208:1, 10:1, 1:1, 2:1};
var CASE_INSENSITIVE_ORDER;
ju.$clinit_Comparator = function $clinit_Comparator(){
  ju.$clinit_Comparator = emptyMethod;
}
;
ju.comparingDouble = function comparingDouble(keyExtractor){
  ju.$clinit_Comparator();
  ji2.checkNotNull_0(keyExtractor);
  return castTo(castTo(new ju.Comparator$lambda$2$Type(keyExtractor), 50), 4);
}
;
ju.lambda$2 = function lambda$2(keyExtractor_0, a_1, b_2){
  ju.$clinit_Comparator();
  return compare_22(keyExtractor_0.applyAsDouble(a_1), keyExtractor_0.applyAsDouble(b_2));
}
;
jl.$clinit_String$1 = function $clinit_String$1(){
  jl.$clinit_String$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
jl.String$1 = function String$1(){
  jl.$clinit_String$1();
  Object_0.call(this);
  this.$init_624();
}
;
defineClass(402, 1, {1:1, 50:1}, jl.String$1);
_.$init_624 = function $init_624(){
}
;
_.compare_0 = function compare_27(a, b){
  return this.compare_5(castToString(a), castToString(b));
}
;
_.equals_0 = function equals_32(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_5 = function compare_28(a, b){
  return jl.compareToIgnoreCase_Ljava_lang_String__I__devirtual$(a, b);
}
;
jl.$clinit_StringIndexOutOfBoundsException = function $clinit_StringIndexOutOfBoundsException(){
  jl.$clinit_StringIndexOutOfBoundsException = emptyMethod;
  jl.$clinit_IndexOutOfBoundsException();
}
;
jl.StringIndexOutOfBoundsException = function StringIndexOutOfBoundsException(message){
  jl.$clinit_StringIndexOutOfBoundsException();
  jl.IndexOutOfBoundsException_0.call(this, message);
  this.$init_627();
}
;
defineClass(334, 52, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.StringIndexOutOfBoundsException);
_.$init_627 = function $init_627(){
}
;
jl.$clinit_Throwable$NativeError = function $clinit_Throwable$NativeError(){
  jl.$clinit_Throwable$NativeError = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_Throwable$NativeTypeError = function $clinit_Throwable$NativeTypeError(){
  jl.$clinit_Throwable$NativeTypeError = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_ArrayHelper = function $clinit_ArrayHelper(){
  ji2.$clinit_ArrayHelper = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.asNativeArray = function asNativeArray(array){
  return ji2.uncheckedCast(array);
}
;
ji2.clone_2 = function clone_2(array){
  ji2.$clinit_ArrayHelper();
  var result;
  result = ji2.asNativeArray(array).slice();
  return ji2.stampJavaTypeInfo_1(result, array);
}
;
ji2.copy_2 = function copy_2(array, srcOfs, dest, destOfs, len){
  ji2.$clinit_ArrayHelper();
  ji2.copy_3(array, srcOfs, dest, destOfs, len, true);
}
;
ji2.copy_3 = function copy_3(src_0, srcOfs, dest, destOfs, len, overwrite){
  var batchEnd, batchStart, destArray, end, spliceArgs;
  if (len == 0) {
    return;
  }
  if (maskUndefined(src_0) === maskUndefined(dest)) {
    src_0 = ji2.unsafeClone(src_0, srcOfs, srcOfs + len);
    srcOfs = 0;
  }
  destArray = ji2.asNativeArray(dest);
  for (batchStart = srcOfs , end = srcOfs + len; batchStart < end;) {
    batchEnd = $wnd.Math.min(batchStart + 10000, end);
    len = batchEnd - batchStart;
    spliceArgs = ji2.unsafeClone(src_0, batchStart, batchEnd);
    ji2.asNativeArray(spliceArgs).splice(0, 0, jl.valueOf_23(destOfs), jl.valueOf_23(overwrite?len:0));
    Array.prototype.splice.apply(destArray, spliceArgs);
    batchStart = batchEnd;
    destOfs += len;
  }
}
;
ji2.createFrom = function createFrom(array, length_0){
  ji2.$clinit_ArrayHelper();
  return ji2.stampJavaTypeInfo_1(new Array(length_0), array);
}
;
ji2.getLength_1 = function getLength_1(array){
  ji2.$clinit_ArrayHelper();
  return ji2.asNativeArray(array).length;
}
;
ji2.insertTo = function insertTo(array, index_0, value_0){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).splice(index_0, 0, value_0);
}
;
ji2.insertTo_0 = function insertTo_0(array, index_0, values){
  ji2.$clinit_ArrayHelper();
  ji2.copy_3(values, 0, array, index_0, values.length, false);
}
;
ji2.push_2 = function push_2(array, o){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).push(o);
}
;
ji2.push_3 = function push_3(array, o){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).push(o);
}
;
ji2.removeFrom = function removeFrom(array, index_0, deleteCount){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).splice(index_0, deleteCount);
}
;
ji2.setLength_0 = function setLength_0(array, length_0){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).length = length_0;
}
;
ji2.sort_11 = function sort_11(array, fn){
  ji2.$clinit_ArrayHelper();
  ji2.asNativeArray(array).sort(fn);
}
;
ji2.unsafeClone = function unsafeClone(array, fromIndex, toIndex){
  ji2.$clinit_ArrayHelper();
  return ji2.asNativeArray(array).slice(fromIndex, toIndex);
}
;
defineClass(944, 1, {1:1});
ji2.ARRAY_PROCESS_BATCH_SIZE = 10000;
ji2.$clinit_Coercions = function $clinit_Coercions(){
  ji2.$clinit_Coercions = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.ensureInt = function ensureInt(value_0){
  ji2.$clinit_Coercions();
  return value_0 | 0;
}
;
defineClass(956, 1, {1:1});
ji2.$clinit_HashCodes = function $clinit_HashCodes(){
  ji2.$clinit_HashCodes = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.HashCodes = function HashCodes(){
  ji2.$clinit_HashCodes();
  Object_0.call(this);
  this.$init_719();
}
;
ji2.getIdentityHashCode = function getIdentityHashCode(o){
  ji2.$clinit_HashCodes();
  switch (typeof(o)) {
    case 'string':
      return jl.hashCode__I__devirtual$_2(ji2.uncheckedCast(o));
    case 'number':
      return jl.hashCode__I__devirtual$_1(ji2.uncheckedCast(o));
    case 'boolean':
      return jl.hashCode__I__devirtual$_0(ji2.uncheckedCast(o));
    default:return jsEquals(o, null)?0:ji2.getObjectIdentityHashCode(o);
  }
}
;
ji2.getNextHash = function getNextHash(){
  ji2.$clinit_HashCodes();
  return ++ji2.nextHash;
}
;
ji2.getObjectIdentityHashCode = function getObjectIdentityHashCode(o){
  ji2.$clinit_HashCodes();
  return o.$H || (o.$H = ji2.getNextHash());
}
;
defineClass(941, 1, {1:1}, ji2.HashCodes);
_.$init_719 = function $init_719(){
}
;
ji2.nextHash = 0;
ji2.$clinit_InternalPreconditions = function $clinit_InternalPreconditions(){
  ji2.$clinit_InternalPreconditions = emptyMethod;
  jl.$clinit_Object();
  ji2.LEVEL_NORMAL_OR_HIGHER = jsEquals('NORMAL', 'NORMAL');
  ji2.LEVEL_OPT_OR_HIGHER = jsEquals('NORMAL', 'OPTIMIZED') || jsEquals('NORMAL', 'NORMAL');
  ji2.LEVEL_MINIMAL_OR_HIGHER = jsEquals('NORMAL', 'MINIMAL') || jsEquals('NORMAL', 'OPTIMIZED') || jsEquals('NORMAL', 'NORMAL');
  {
    if (!ji2.LEVEL_MINIMAL_OR_HIGHER) {
      throw toJs(new jl.IllegalStateException_0('Incorrect level: ' + 'NORMAL'));
    }
  }
  ji2.IS_TYPE_CHECKED = jsEquals(ji2.CHECK_TYPE, 'AUTO') && ji2.LEVEL_OPT_OR_HIGHER || jsEquals(ji2.CHECK_TYPE, 'ENABLED');
  ji2.IS_BOUNDS_CHECKED = jsEquals(ji2.CHECK_BOUNDS, 'AUTO') && ji2.LEVEL_NORMAL_OR_HIGHER || jsEquals(ji2.CHECK_BOUNDS, 'ENABLED');
  ji2.IS_API_CHECKED = jsEquals(ji2.CHECK_API, 'AUTO') && ji2.LEVEL_NORMAL_OR_HIGHER || jsEquals(ji2.CHECK_API, 'ENABLED');
  ji2.IS_NUMERIC_CHECKED = jsEquals(ji2.CHECK_NUMERIC, 'AUTO') && ji2.LEVEL_NORMAL_OR_HIGHER || jsEquals(ji2.CHECK_NUMERIC, 'ENABLED');
  ji2.IS_ASSERTED = jsEquals('DISABLED', 'ENABLED');
}
;
ji2.checkArgument = function checkArgument(expression, errorMessage){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalArgument_1(expression, errorMessage);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalArgument_1(expression, errorMessage);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkArraySize = function checkArraySize(size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalArraySize(size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalArraySize(size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkArrayType = function checkArrayType(expression){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_TYPE_CHECKED) {
    ji2.checkCriticalArrayType(expression);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalArrayType(expression);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkArrayType_0 = function checkArrayType_0(expression, errorMessage){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_TYPE_CHECKED) {
    ji2.checkCriticalArrayType_0(expression, errorMessage);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalArrayType_0(expression, errorMessage);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkConcurrentModification_0 = function checkConcurrentModification_0(currentModCount, recordedModCount){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalConcurrentModification(currentModCount, recordedModCount);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalConcurrentModification(currentModCount, recordedModCount);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkCriticalArgument_0 = function checkCriticalArgument_0(expression){
  ji2.$clinit_InternalPreconditions();
  if (!expression) {
    throw toJs(new jl.IllegalArgumentException);
  }
}
;
ji2.checkCriticalArgument_1 = function checkCriticalArgument_1(expression, errorMessage){
  ji2.$clinit_InternalPreconditions();
  if (!expression) {
    throw toJs(new jl.IllegalArgumentException_0(valueOf_34(errorMessage)));
  }
}
;
ji2.checkCriticalArrayBounds = function checkCriticalArrayBounds(start_0, end, length_0){
  ji2.$clinit_InternalPreconditions();
  if (start_0 > end) {
    throw toJs(new jl.IllegalArgumentException_0('fromIndex: ' + start_0 + ' > toIndex: ' + end));
  }
  if (start_0 < 0 || end > length_0) {
    throw toJs(new jl.ArrayIndexOutOfBoundsException_0('fromIndex: ' + start_0 + ', toIndex: ' + end + ', length: ' + length_0));
  }
}
;
ji2.checkCriticalArraySize = function checkCriticalArraySize(size_0){
  if (size_0 < 0) {
    throw toJs(new jl.NegativeArraySizeException('Negative array size: ' + size_0));
  }
}
;
ji2.checkCriticalArrayType = function checkCriticalArrayType(expression){
  if (!expression) {
    throw toJs(new jl.ArrayStoreException);
  }
}
;
ji2.checkCriticalArrayType_0 = function checkCriticalArrayType_0(expression, errorMessage){
  if (!expression) {
    throw toJs(new jl.ArrayStoreException_0(valueOf_34(errorMessage)));
  }
}
;
ji2.checkCriticalConcurrentModification = function checkCriticalConcurrentModification(currentModCount, recordedModCount){
  if (currentModCount != recordedModCount) {
    throw toJs(new ju.ConcurrentModificationException);
  }
}
;
ji2.checkCriticalElement = function checkCriticalElement(expression){
  ji2.$clinit_InternalPreconditions();
  if (!expression) {
    throw toJs(new ju.NoSuchElementException);
  }
}
;
ji2.checkCriticalElementIndex = function checkCriticalElementIndex(index_0, size_0){
  if (index_0 < 0 || index_0 >= size_0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Index: ' + index_0 + ', Size: ' + size_0));
  }
}
;
ji2.checkCriticalNotNull = function checkCriticalNotNull(reference){
  ji2.$clinit_InternalPreconditions();
  if (jsEquals(reference, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return reference;
}
;
ji2.checkCriticalNotNull_0 = function checkCriticalNotNull_0(reference, errorMessage){
  if (jsEquals(reference, null)) {
    throw toJs(new jl.NullPointerException_1(valueOf_34(errorMessage)));
  }
}
;
ji2.checkCriticalPositionIndex = function checkCriticalPositionIndex(index_0, size_0){
  if (index_0 < 0 || index_0 > size_0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Index: ' + index_0 + ', Size: ' + size_0));
  }
}
;
ji2.checkCriticalPositionIndexes = function checkCriticalPositionIndexes(start_0, end, size_0){
  ji2.$clinit_InternalPreconditions();
  if (start_0 < 0 || end > size_0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('fromIndex: ' + start_0 + ', toIndex: ' + end + ', size: ' + size_0));
  }
  if (start_0 > end) {
    throw toJs(new jl.IllegalArgumentException_0('fromIndex: ' + start_0 + ' > toIndex: ' + end));
  }
}
;
ji2.checkCriticalState = function checkCriticalState(expression){
  if (!expression) {
    throw toJs(new jl.IllegalStateException);
  }
}
;
ji2.checkCriticalState_0 = function checkCriticalState_0(expression, errorMessage){
  if (!expression) {
    throw toJs(new jl.IllegalStateException_0(valueOf_34(errorMessage)));
  }
}
;
ji2.checkCriticalStringBounds = function checkCriticalStringBounds(start_0, end, length_0){
  ji2.$clinit_InternalPreconditions();
  if (start_0 < 0 || end > length_0 || end < start_0) {
    throw toJs(new jl.StringIndexOutOfBoundsException('fromIndex: ' + start_0 + ', toIndex: ' + end + ', length: ' + length_0));
  }
}
;
ji2.checkCriticalStringElementIndex = function checkCriticalStringElementIndex(index_0, size_0){
  if (index_0 < 0 || index_0 >= size_0) {
    throw toJs(new jl.StringIndexOutOfBoundsException('Index: ' + index_0 + ', Size: ' + size_0));
  }
}
;
ji2.checkCriticalType = function checkCriticalType(expression, message){
  if (!expression) {
    throw toJs(new jl.ClassCastException(message));
  }
}
;
ji2.checkElement = function checkElement(expression){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalElement(expression);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalElement(expression);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkElementIndex = function checkElementIndex(index_0, size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalElementIndex(index_0, size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalElementIndex(index_0, size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkNotNull_0 = function checkNotNull_0(reference){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalNotNull(reference);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalNotNull(reference);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
  return reference;
}
;
ji2.checkNotNull_1 = function checkNotNull_1(reference, errorMessage){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalNotNull_0(reference, errorMessage);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalNotNull_0(reference, errorMessage);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkPositionIndex = function checkPositionIndex(index_0, size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalPositionIndex(index_0, size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalPositionIndex(index_0, size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkPositionIndexes = function checkPositionIndexes(start_0, end, size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalPositionIndexes(start_0, end, size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalPositionIndexes(start_0, end, size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkState = function checkState(expression){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalState(expression);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalState(expression);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkState_0 = function checkState_0(expression, errorMessage){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_API_CHECKED) {
    ji2.checkCriticalState_0(expression, errorMessage);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalState_0(expression, errorMessage);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkStringBounds = function checkStringBounds(start_0, end, length_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalStringBounds(start_0, end, length_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalStringBounds(start_0, end, length_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkStringElementIndex = function checkStringElementIndex(index_0, size_0){
  ji2.$clinit_InternalPreconditions();
  var e;
  if (ji2.IS_BOUNDS_CHECKED) {
    ji2.checkCriticalStringElementIndex(index_0, size_0);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalStringElementIndex(index_0, size_0);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.checkType = function checkType(expression){
  ji2.$clinit_InternalPreconditions();
  ji2.checkType_0(expression, null);
}
;
ji2.checkType_0 = function checkType_0(expression, message){
  var e;
  if (ji2.IS_TYPE_CHECKED) {
    ji2.checkCriticalType(expression, message);
  }
   else if (ji2.IS_ASSERTED) {
    try {
      ji2.checkCriticalType(expression, message);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 23)) {
        e = $e0;
        throw toJs(new jl.AssertionError_5(e));
      }
       else 
        throw toJs($e0);
    }
  }
}
;
ji2.isApiChecked = function isApiChecked(){
  ji2.$clinit_InternalPreconditions();
  return ji2.IS_API_CHECKED || ji2.IS_ASSERTED;
}
;
ji2.isTypeChecked = function isTypeChecked(){
  ji2.$clinit_InternalPreconditions();
  return ji2.IS_TYPE_CHECKED || ji2.IS_ASSERTED;
}
;
defineClass(954, 1, {1:1});
ji2.CHECK_API = 'AUTO';
ji2.CHECK_BOUNDS = 'AUTO';
ji2.CHECK_NUMERIC = 'AUTO';
ji2.CHECK_TYPE = 'ENABLED';
ji2.IS_API_CHECKED = false;
ji2.IS_ASSERTED = false;
ji2.IS_BOUNDS_CHECKED = false;
ji2.IS_NUMERIC_CHECKED = false;
ji2.IS_TYPE_CHECKED = false;
ji2.LEVEL_MINIMAL_OR_HIGHER = false;
ji2.LEVEL_NORMAL_OR_HIGHER = false;
ji2.LEVEL_OPT_OR_HIGHER = false;
ji2.$clinit_JsUtils = function $clinit_JsUtils(){
  ji2.$clinit_JsUtils = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.JsUtils = function JsUtils(){
  Object_0.call(this);
  this.$init_720();
}
;
ji2.doubleToRawLongBits_0 = function doubleToRawLongBits_0(value_0){
  ji2.$clinit_JsUtils();
  var buf, intBits;
  buf = new ArrayBuffer(8);
  ji2.uncheckedCast(new Float64Array(buf))[0] = value_0;
  intBits = ji2.uncheckedCast(new Uint32Array(buf));
  return ji2.fromBits_0(intBits[0] | 0, intBits[1] | 0);
}
;
ji2.floatToRawIntBits = function floatToRawIntBits(value_0){
  var buf;
  buf = new ArrayBuffer(4);
  ji2.uncheckedCast(new Float32Array(buf))[0] = value_0;
  return ji2.uncheckedCast(new Uint32Array(buf))[0] | 0;
}
;
ji2.getProperty = function getProperty(map_0, key){
  ji2.$clinit_JsUtils();
  return map_0[key];
}
;
ji2.intBitsToFloat = function intBitsToFloat(value_0){
  var buf;
  buf = new ArrayBuffer(4);
  ji2.uncheckedCast(new Uint32Array(buf))[0] = value_0;
  return ji2.uncheckedCast(new Float32Array(buf))[0];
}
;
ji2.intToString = function intToString(value_0, radix){
  ji2.$clinit_JsUtils();
  return ji2.numberToString(value_0, radix);
}
;
ji2.isUndefined = function isUndefined(value_0){
  ji2.$clinit_JsUtils();
  return value_0 === undefined;
}
;
ji2.longBitsToDouble_0 = function longBitsToDouble_0(value_0){
  ji2.$clinit_JsUtils();
  var buf, intBits;
  buf = new ArrayBuffer(8);
  intBits = ji2.uncheckedCast(new Uint32Array(buf));
  intBits[0] = toInt_0(value_0);
  intBits[1] = ji2.getHighBits(value_0);
  return ji2.uncheckedCast(new Float64Array(buf))[0];
}
;
ji2.numberToString = function numberToString(value_0, radix){
  var number;
  number = ji2.uncheckedCast(value_0);
  return number.toString(radix);
}
;
ji2.toDoubleFromUnsignedInt = function toDoubleFromUnsignedInt(value_0){
  ji2.$clinit_JsUtils();
  return value_0 >>> 0;
}
;
ji2.toPrecision_0 = function toPrecision_0(value_0, precision){
  ji2.$clinit_JsUtils();
  var number;
  number = ji2.uncheckedCast(value_0);
  return number.toPrecision(precision);
}
;
ji2.uintToString = function uintToString(value_0, radix){
  ji2.$clinit_JsUtils();
  return ji2.numberToString(ji2.toDoubleFromUnsignedInt(value_0), radix);
}
;
ji2.uncheckedCast = function uncheckedCast(o){
  ji2.$clinit_JsUtils();
  return o;
}
;
ji2.unsafeCastToBoolean = function unsafeCastToBoolean(bool){
  ji2.$clinit_JsUtils();
  return bool;
}
;
ji2.unsafeCastToDouble = function unsafeCastToDouble(number){
  ji2.$clinit_JsUtils();
  return number;
}
;
defineClass(942, 1, {1:1});
_.$init_720 = function $init_720(){
}
;
cggl.Ljava_lang_Object_2_classLit = createForClass('java.lang', 'Object', 1, null);
cggl.Lcom_google_gwt_core_client_GWT_2_classLit = createForClass('com.google.gwt.core.client', 'GWT', 822, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_io_Serializable_2_classLit = createForInterface('java.io', 'Serializable');
cggl.Ljava_lang_Throwable_2_classLit = createForClass('java.lang', 'Throwable', 20, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_Exception_2_classLit = createForClass('java.lang', 'Exception', 14, cggl.Ljava_lang_Throwable_2_classLit);
cggl.Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang', 'RuntimeException', 23, cggl.Ljava_lang_Exception_2_classLit);
cggl.Ljava_lang_JsException_2_classLit = createForClass('java.lang', 'JsException', 184, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_JavaScriptExceptionBase_2_classLit = createForClass('com.google.gwt.core.client.impl', 'JavaScriptExceptionBase', 601, cggl.Ljava_lang_JsException_2_classLit);
cggl.Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client', 'JavaScriptException', 195, cggl.Lcom_google_gwt_core_client_impl_JavaScriptExceptionBase_2_classLit);
cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client', 'JavaScriptObject$', 0, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator', 957, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/Collector', 222, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorLegacy_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorLegacy', 507, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModern_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorModern', 223, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit);
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModernNoSourceMap_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorModernNoSourceMap', 508, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorModern_2_classLit);
cggl.Lcom_google_gwt_lang_Array_2_classLit = createForClass('com.google.gwt.lang', 'Array', 924, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_Cast_2_classLit = createForClass('com.google.gwt.lang', 'Cast', 925, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_Exceptions_2_classLit = createForClass('com.google.gwt.lang', 'Exceptions', 927, cggl.Ljava_lang_Object_2_classLit);
cggl.Lcom_google_gwt_lang_Util_2_classLit = createForClass('com.google.gwt.lang', 'Util', 932, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_ArrayStoreException_2_classLit = createForClass('java.lang', 'ArrayStoreException', 352, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_Error_2_classLit = createForClass('java.lang', 'Error', 123, cggl.Ljava_lang_Throwable_2_classLit);
cggl.Ljava_lang_AssertionError_2_classLit = createForClass('java.lang', 'AssertionError', 44, cggl.Ljava_lang_Error_2_classLit);
cggl.Ljava_lang_Comparable_2_classLit = createForInterface('java.lang', 'Comparable');
cggl.Ljava_lang_Boolean_2_classLit = createForClass('java.lang', 'Boolean', 481, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_CharSequence_2_classLit = createForInterface('java.lang', 'CharSequence');
cggl.Ljava_lang_reflect_Type_2_classLit = createForInterface('java.lang.reflect', 'Type');
cggl.Ljava_lang_Class_2_classLit = createForClass('java.lang', 'Class', 306, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang', 'ClassCastException', 502, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_Number_2_classLit = createForClass('java.lang', 'Number', 24, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_Double_2_classLit = createForClass('java.lang', 'Double', 501, cggl.Ljava_lang_Number_2_classLit);
cggl.Ljava_lang_IllegalStateException_2_classLit = createForClass('java.lang', 'IllegalStateException', 84, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'IndexOutOfBoundsException', 52, cggl.Ljava_lang_RuntimeException_2_classLit);
cggl.Ljava_lang_Integer_2_classLit = createForClass('java.lang', 'Integer', 32, cggl.Ljava_lang_Number_2_classLit);
cggl.Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang', 'NullPointerException', 73, cggl.Ljava_lang_JsException_2_classLit);
cggl.Ljava_lang_String_2_classLit = createForClass('java.lang', 'String', 2, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_util_Comparator_2_classLit = createForInterface('java.util', 'Comparator');
cggl.Ljava_lang_String$1_2_classLit = createForClass('java.lang', 'String/1', 402, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljava_lang_StringIndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'StringIndexOutOfBoundsException', 334, cggl.Ljava_lang_IndexOutOfBoundsException_2_classLit);
cggl.Ljavaemul_internal_ArrayHelper_2_classLit = createForClass('javaemul.internal', 'ArrayHelper', 944, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_Coercions_2_classLit = createForClass('javaemul.internal', 'Coercions', 956, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_HashCodes_2_classLit = createForClass('javaemul.internal', 'HashCodes', 941, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_InternalPreconditions_2_classLit = createForClass('javaemul.internal', 'InternalPreconditions', 954, cggl.Ljava_lang_Object_2_classLit);
cggl.Ljavaemul_internal_JsUtils_2_classLit = createForClass('javaemul.internal', 'JsUtils', 942, cggl.Ljava_lang_Object_2_classLit);
carc.$clinit_ProgressListener = function $clinit_ProgressListener(){
  carc.$clinit_ProgressListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_calc_ProgressListener_2_classLit = createForInterface('com.actelion.research.calc', 'ProgressListener');
carc.$clinit_SingularValueDecomposition = function $clinit_SingularValueDecomposition(){
  carc.$clinit_SingularValueDecomposition = emptyMethod;
  jl.$clinit_Object();
}
;
carc.SingularValueDecomposition = function SingularValueDecomposition(A, progressListener, threadMaster){
  carc.$clinit_SingularValueDecomposition();
  var b, c, cs, e, ek, epm1, eps, f, g, i, i0, i1, i2, iter, j, j0, j1, k, k0, kase, ks, nct, nrt, nu, p, pp, scale, shift_0, sk, sn, sp, spm1, t, wantu, wantv, work;
  Object_0.call(this);
  this.$init_0();
  this.m_0 = A.length;
  this.n = A[0].length;
  nu = $wnd.Math.min(this.m_0, this.n);
  this.s = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, $wnd.Math.min(this.m_0 + 1, this.n), 15, 1);
  this.U = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [this.m_0, nu], 2);
  this.V = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [this.n, this.n], 2);
  e = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.n, 15, 1);
  work = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.m_0, 15, 1);
  wantu = true;
  wantv = true;
  nct = $wnd.Math.min(this.m_0 - 1, this.n);
  nrt = $wnd.Math.max(0, $wnd.Math.min(this.n - 2, this.m_0));
  if (isNotNull(progressListener))
    progressListener.startProgress('Initializing SVD...', 0, $wnd.Math.max(nct, nrt));
  for (k0 = 0; k0 < $wnd.Math.max(nct, nrt); k0++) {
    if (isNotNull(progressListener))
      progressListener.updateProgress(k0);
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return;
    if (k0 < nct) {
      this.s[k0] = 0;
      for (i0 = k0; i0 < this.m_0; i0++) {
        this.s[k0] = carc.hypot(this.s[k0], A[i0][k0]);
      }
      if (this.s[k0] != 0) {
        if (A[k0][k0] < 0) {
          this.s[k0] = -this.s[k0];
        }
        for (i = k0; i < this.m_0; i++) {
          A[i][k0] /= this.s[k0];
        }
        A[k0][k0] += 1;
      }
      this.s[k0] = -this.s[k0];
    }
    for (j0 = k0 + 1; j0 < this.n; j0++) {
      if (k0 < nct & this.s[k0] != 0) {
        t = 0;
        for (i0 = k0; i0 < this.m_0; i0++) {
          t += A[i0][k0] * A[i0][j0];
        }
        t = -t / A[k0][k0];
        for (i = k0; i < this.m_0; i++) {
          A[i][j0] += t * A[i][k0];
        }
      }
      e[j0] = A[k0][j0];
    }
    if (wantu & k0 < nct) {
      for (i = k0; i < this.m_0; i++) {
        this.U[i][k0] = A[i][k0];
      }
    }
    if (k0 < nrt) {
      e[k0] = 0;
      for (i0 = k0 + 1; i0 < this.n; i0++) {
        e[k0] = carc.hypot(e[k0], e[i0]);
      }
      if (e[k0] != 0) {
        if (e[k0 + 1] < 0) {
          e[k0] = -e[k0];
        }
        for (i = k0 + 1; i < this.n; i++) {
          e[i] /= e[k0];
        }
        e[k0 + 1] += 1;
      }
      e[k0] = -e[k0];
      if (k0 + 1 < this.m_0 & e[k0] != 0) {
        for (i1 = k0 + 1; i1 < this.m_0; i1++) {
          work[i1] = 0;
        }
        for (j1 = k0 + 1; j1 < this.n; j1++) {
          for (i = k0 + 1; i < this.m_0; i++) {
            work[i] += e[j1] * A[i][j1];
          }
        }
        for (j = k0 + 1; j < this.n; j++) {
          t = -e[j] / e[k0 + 1];
          for (i = k0 + 1; i < this.m_0; i++) {
            A[i][j] += t * work[i];
          }
        }
      }
      if (wantv) {
        for (i = k0 + 1; i < this.n; i++) {
          this.V[i][k0] = e[i];
        }
      }
    }
  }
  p = $wnd.Math.min(this.n, this.m_0 + 1);
  if (nct < this.n) {
    this.s[nct] = A[nct][nct];
  }
  if (this.m_0 < p) {
    this.s[p - 1] = 0;
  }
  if (nrt + 1 < p) {
    e[nrt] = A[nrt][p - 1];
  }
  e[p - 1] = 0;
  if (wantu) {
    if (isNotNull(progressListener))
      progressListener.startProgress('generating eigenvalues...', 0, nct);
    for (j0 = nct; j0 < nu; j0++) {
      for (i = 0; i < this.m_0; i++) {
        this.U[i][j0] = 0;
      }
      this.U[j0][j0] = 1;
    }
    for (k = nct - 1; k >= 0; k--) {
      if (isNotNull(progressListener))
        progressListener.updateProgress(nct - k);
      if (isNotNull(threadMaster) && threadMaster.threadMustDie())
        return;
      if (this.s[k] != 0) {
        for (j = k + 1; j < nu; j++) {
          t = 0;
          for (i0 = k; i0 < this.m_0; i0++) {
            t += this.U[i0][k] * this.U[i0][j];
          }
          t = -t / this.U[k][k];
          for (i1 = k; i1 < this.m_0; i1++) {
            this.U[i1][j] += t * this.U[i1][k];
          }
        }
        for (i2 = k; i2 < this.m_0; i2++) {
          this.U[i2][k] = -this.U[i2][k];
        }
        this.U[k][k] = 1 + this.U[k][k];
        for (i = 0; i < k - 1; i++) {
          this.U[i][k] = 0;
        }
      }
       else {
        for (i = 0; i < this.m_0; i++) {
          this.U[i][k] = 0;
        }
        this.U[k][k] = 1;
      }
    }
  }
  if (wantv) {
    if (isNotNull(progressListener))
      progressListener.startProgress('generating eigenvectors...', 0, this.n);
    for (k = this.n - 1; k >= 0; k--) {
      if (isNotNull(progressListener))
        progressListener.updateProgress(this.n - k);
      if (isNotNull(threadMaster) && threadMaster.threadMustDie())
        return;
      if (k < nrt & e[k] != 0) {
        for (j = k + 1; j < nu; j++) {
          t = 0;
          for (i0 = k + 1; i0 < this.n; i0++) {
            t += this.V[i0][k] * this.V[i0][j];
          }
          t = -t / this.V[k + 1][k];
          for (i1 = k + 1; i1 < this.n; i1++) {
            this.V[i1][j] += t * this.V[i1][k];
          }
        }
      }
      for (i = 0; i < this.n; i++) {
        this.V[i][k] = 0;
      }
      this.V[k][k] = 1;
    }
  }
  pp = p - 1;
  iter = 0;
  eps = $wnd.Math.pow(2, -52);
  if (isNotNull(progressListener))
    progressListener.startProgress('locating negligible elements...', 0, pp + 1);
  while (p > 0) {
    if (isNotNull(progressListener))
      progressListener.updateProgress(pp - p);
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return;
    for (k = p - 2; k >= -1; k--) {
      if (k == -1) {
        break;
      }
      if ($wnd.Math.abs(e[k]) <= eps * ($wnd.Math.abs(this.s[k]) + $wnd.Math.abs(this.s[k + 1]))) {
        e[k] = 0;
        break;
      }
    }
    if (k == p - 2) {
      kase = 4;
    }
     else {
      for (ks = p - 1; ks >= k; ks--) {
        if (ks == k) {
          break;
        }
        t = (ks != p?$wnd.Math.abs(e[ks]):0) + (ks != k + 1?$wnd.Math.abs(e[ks - 1]):0);
        if ($wnd.Math.abs(this.s[ks]) <= eps * t) {
          this.s[ks] = 0;
          break;
        }
      }
      if (ks == k) {
        kase = 3;
      }
       else if (ks == p - 1) {
        kase = 1;
      }
       else {
        kase = 2;
        k = ks;
      }
    }
    k++;
    switch (kase) {
      case 1:
        {
          f = e[p - 2];
          e[p - 2] = 0;
          for (j = p - 2; j >= k; j--) {
            t = carc.hypot(this.s[j], f);
            cs = this.s[j] / t;
            sn = f / t;
            this.s[j] = t;
            if (j != k) {
              f = -sn * e[j - 1];
              e[j - 1] = cs * e[j - 1];
            }
            if (wantv) {
              for (i = 0; i < this.n; i++) {
                t = cs * this.V[i][j] + sn * this.V[i][p - 1];
                this.V[i][p - 1] = -sn * this.V[i][j] + cs * this.V[i][p - 1];
                this.V[i][j] = t;
              }
            }
          }
        }

        break;
      case 2:
        {
          f = e[k - 1];
          e[k - 1] = 0;
          for (j = k; j < p; j++) {
            t = carc.hypot(this.s[j], f);
            cs = this.s[j] / t;
            sn = f / t;
            this.s[j] = t;
            f = -sn * e[j];
            e[j] = cs * e[j];
            if (wantu) {
              for (i = 0; i < this.m_0; i++) {
                t = cs * this.U[i][j] + sn * this.U[i][k - 1];
                this.U[i][k - 1] = -sn * this.U[i][j] + cs * this.U[i][k - 1];
                this.U[i][j] = t;
              }
            }
          }
        }

        break;
      case 3:
        {
          scale = $wnd.Math.max($wnd.Math.max($wnd.Math.max($wnd.Math.max($wnd.Math.abs(this.s[p - 1]), $wnd.Math.abs(this.s[p - 2])), $wnd.Math.abs(e[p - 2])), $wnd.Math.abs(this.s[k])), $wnd.Math.abs(e[k]));
          sp = this.s[p - 1] / scale;
          spm1 = this.s[p - 2] / scale;
          epm1 = e[p - 2] / scale;
          sk = this.s[k] / scale;
          ek = e[k] / scale;
          b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;
          c = sp * epm1 * (sp * epm1);
          shift_0 = 0;
          if (b != 0 | c != 0) {
            shift_0 = $wnd.Math.sqrt(b * b + c);
            if (b < 0) {
              shift_0 = -shift_0;
            }
            shift_0 = c / (b + shift_0);
          }
          f = (sk + sp) * (sk - sp) + shift_0;
          g = sk * ek;
          for (j = k; j < p - 1; j++) {
            t = carc.hypot(f, g);
            cs = f / t;
            sn = g / t;
            if (j != k) {
              e[j - 1] = t;
            }
            f = cs * this.s[j] + sn * e[j];
            e[j] = cs * e[j] - sn * this.s[j];
            g = sn * this.s[j + 1];
            this.s[j + 1] = cs * this.s[j + 1];
            if (wantv) {
              for (i = 0; i < this.n; i++) {
                t = cs * this.V[i][j] + sn * this.V[i][j + 1];
                this.V[i][j + 1] = -sn * this.V[i][j] + cs * this.V[i][j + 1];
                this.V[i][j] = t;
              }
            }
            t = carc.hypot(f, g);
            cs = f / t;
            sn = g / t;
            this.s[j] = t;
            f = cs * e[j] + sn * this.s[j + 1];
            this.s[j + 1] = -sn * e[j] + cs * this.s[j + 1];
            g = sn * e[j + 1];
            e[j + 1] = cs * e[j + 1];
            if (wantu && j < this.m_0 - 1) {
              for (i = 0; i < this.m_0; i++) {
                t = cs * this.U[i][j] + sn * this.U[i][j + 1];
                this.U[i][j + 1] = -sn * this.U[i][j] + cs * this.U[i][j + 1];
                this.U[i][j] = t;
              }
            }
          }
          e[p - 2] = f;
          iter = iter + 1;
        }

        break;
      case 4:
        {
          if (this.s[k] <= 0) {
            this.s[k] = this.s[k] < 0?-this.s[k]:0;
            if (wantv) {
              for (i = 0; i <= pp; i++) {
                this.V[i][k] = -this.V[i][k];
              }
            }
          }
          while (k < pp) {
            if (this.s[k] >= this.s[k + 1]) {
              break;
            }
            t = this.s[k];
            this.s[k] = this.s[k + 1];
            this.s[k + 1] = t;
            if (wantv && k < this.n - 1) {
              for (i = 0; i < this.n; i++) {
                t = this.V[i][k + 1];
                this.V[i][k + 1] = this.V[i][k];
                this.V[i][k] = t;
              }
            }
            if (wantu && k < this.m_0 - 1) {
              for (i = 0; i < this.m_0; i++) {
                t = this.U[i][k + 1];
                this.U[i][k + 1] = this.U[i][k];
                this.U[i][k] = t;
              }
            }
            k++;
          }
          iter = 0;
          p--;
        }

        break;
    }
  }
}
;
carc.hypot = function hypot(a, b){
  var r;
  if ($wnd.Math.abs(a) > $wnd.Math.abs(b)) {
    r = b / a;
    r = $wnd.Math.abs(a) * $wnd.Math.sqrt(1 + r * r);
  }
   else if (b != 0) {
    r = a / b;
    r = $wnd.Math.abs(b) * $wnd.Math.sqrt(1 + r * r);
  }
   else {
    r = 0;
  }
  return r;
}
;
defineClass(296, 1, {4:1, 1:1}, carc.SingularValueDecomposition);
_.$init_0 = function $init_0(){
}
;
_.getSingularValues = function getSingularValues(){
  return this.s;
}
;
_.getU = function getU(){
  return this.U;
}
;
_.m_0 = 0;
_.n = 0;
carc.serialVersionUID = 537985828;
cggl.Lcom_actelion_research_calc_SingularValueDecomposition_2_classLit = createForClass('com.actelion.research.calc', 'SingularValueDecomposition', 296, cggl.Ljava_lang_Object_2_classLit);
carc.$clinit_ThreadMaster = function $clinit_ThreadMaster(){
  carc.$clinit_ThreadMaster = emptyMethod;
}
;
cggl.Lcom_actelion_research_calc_ThreadMaster_2_classLit = createForInterface('com.actelion.research.calc', 'ThreadMaster');
carc2.$clinit_AbstractDepictor = function $clinit_AbstractDepictor(){
  carc2.$clinit_AbstractDepictor = emptyMethod;
  jl.$clinit_Object();
  carc2.ATOM_LABEL_COLOR = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 16777215, 14286847, 13402367, 12779264, 16758197, 9474192, 3166456, 16715021, 9494608, 11789301, 11230450, 9109248, 12560038, 15780000, 16744448, 16777008, 2093087, 8442339, 9388244, 4062976, 15132390, 12567239, 10921643, 9083335, 10255047, 14706227, 15765664, 5296208, 13140019, 8224944, 12750735, 6721423, 12419299, 16752896, 10889513, 6076625, 7351984, 65280, 9764863, 9756896, 7586505, 5551541, 3907230, 2396047, 687500, 27013, 12632256, 16767375, 10909043, 6717568, 10380213, 13924864, 9699476, 4366000, 5707663, 51456, 7394559, 16777159, 14286791, 13107143, 10747847, 9437127, 6422471, 4587463, 3211207, 2097095, 65436, 58997, 54354, 48952, 43812, 5096191, 5089023, 2200790, 2522539, 2516630, 1528967, 13684960, 16765219, 12105936, 10900557, 5724513, 10375093, 11230208, 7688005, 4358806, 4325478, 32000, 7384058, 47871, 41471, 36863, 33023, 27647, 5528818, 7888099, 9064419, 10565332, 11739092, 11739066, 11734438, 12389767, 13041766, 13369433, 13697103, 14221381, 14680120, 15073326, 15400998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13158600, 1334015, 56540, 15075850, 15132160, 56540, 15075850, 15461355, 8553170, 1016335, 1016335, 1334015, 15132160, 3289770, 14456450, 16422400, 16422400, 11819700, 3289770, 1016335]);
  carc2.COLOR_UNDEFINED = -1;
  carc2.COLOR_HILITE_BOND_BG = -2;
  carc2.COLOR_HILITE_BOND_FG = -3;
  carc2.COLOR_OVERRULED = -4;
  carc2.COLOR_RGB = -5;
  carc2.COLOR_CUSTOM_FOREGROUND = -6;
  carc2.COLOR_EXCLUDE_GROUP_BG = -7;
  carc2.COLOR_EXCLUDE_GROUP_FG = -8;
  carc2.COLOR_RESTORE_PREVIOUS = -9;
  carc2.COLOR_INITIALIZE = -10;
  carc2.cOptAvBondLen = round_int(24);
}
;
carc2.AbstractDepictor = function AbstractDepictor(mol, displayMode){
  carc2.$clinit_AbstractDepictor();
  Object_0.call(this);
  this.$init_1();
  this.mMol = mol;
  this.mDisplayMode = displayMode;
  this.init();
}
;
defineClass(134, 1, {134:1, 1:1});
_.$init_1 = function $init_1(){
  this.mBoundingRect = new cargg.GenericRectangle;
}
;
_.addChiralInfo = function addChiralInfo(){
  var avbl, chiralText;
  if ((this.mDisplayMode & 32) != 0)
    return;
  chiralText = this.mMol.getChiralText_0();
  if (jsNotEquals(chiralText, null)) {
    if (this.mChiralTextLocation.x_0 == 0 && this.mChiralTextLocation.y_0 == 0) {
      avbl = this.mTransformation.getScaling() * this.mMol.getAverageBondLength_0();
      this.mBoundingRect = this.simpleCalculateBounds();
      this.expandBoundsByTabuZones(avbl);
      this.setChiralTextLocation(null, avbl, 0);
    }
    this.setTextSize(round_int(this.mChiralTextSize));
    if (this.mMol.getMoleculeColor_0() != 1)
      this.setColorCode(448);
    this.drawString(chiralText, this.mChiralTextLocation.x_0, this.mChiralTextLocation.y_0 + 0.30000001192092896 * this.mChiralTextSize);
  }
}
;
_.append = function append(a, b){
  return jsEquals(a, null)?b:jsEquals(b, null)?a:a + ',' + b;
}
;
_.applyTransformation_0 = function applyTransformation(t){
  t.applyTo(this.mTransformation);
  t.applyTo_2(this.mBoundingRect);
  t.applyTo_1(this.mChiralTextLocation);
}
;
_.calculateParameters = function calculateParameters(){
  var averageBondLength;
  averageBondLength = this.mTransformation.getScaling() * (this.mAtomLabelAVBL != 0?this.mAtomLabelAVBL:this.mMol.getAverageBondLength_0());
  this.mpLineWidth = averageBondLength * 0.06;
  this.mpBondSpacing = averageBondLength * 0.15;
  this.mpBondHiliteRadius = averageBondLength * 0.38;
  this.mpExcludeGroupRadius = averageBondLength * 0.47;
  this.mpLabelSize = round_int(averageBondLength * this.mFactorTextSize * 0.6 + 0.5);
  this.mpDotDiameter = averageBondLength * 0.12;
  this.mpQFDiameter = averageBondLength * 0.4;
  this.mChiralTextSize = averageBondLength * 0.5 + 0.5;
}
;
_.createRingSizeText = function createRingSizeText(queryFeatures){
  var customOption, i;
  queryFeatures = and_0(queryFeatures, 545460846592);
  for (i = 0; i < (carge.$clinit_AtomQueryFeatureDialogBuilder() , carge.RING_SIZE_VALUES).length; i++)
    if (eq(queryFeatures, (carge.$clinit_AtomQueryFeatureDialogBuilder() , carge.RING_SIZE_VALUES)[i]))
      return (carge.$clinit_AtomQueryFeatureDialogBuilder() , carge.RING_SIZE_SHORT_TEXT)[i];
  customOption = new jl.StringBuilder_1('R');
  if (neq(and_0(queryFeatures, 4294967296), 0))
    customOption.append_9('0');
  if (neq(and_0(queryFeatures, 8589934592), 0))
    customOption.append_9('3');
  if (neq(and_0(queryFeatures, 17179869184), 0))
    customOption.append_9('4');
  if (neq(and_0(queryFeatures, 34359738368), 0))
    customOption.append_9('5');
  if (neq(and_0(queryFeatures, 68719476736), 0))
    customOption.append_9('6');
  if (neq(and_0(queryFeatures, 137438953472), 0))
    customOption.append_9('7');
  if (neq(and_0(queryFeatures, 274877906944), 0))
    customOption.append_9('8');
  return customOption.toString_0();
}
;
_.drawColorLine = function drawColorLine(theLine, atm1, atm2){
  var line1, line2;
  line1 = new carc2.AbstractDepictor$DepictorLine;
  line2 = new carc2.AbstractDepictor$DepictorLine;
  line1.x1 = theLine.x1;
  line1.y1 = theLine.y1;
  line1.x2 = (theLine.x1 + theLine.x2) / 2;
  line1.y2 = (theLine.y1 + theLine.y2) / 2;
  line2.x1 = line1.x2;
  line2.y1 = line1.y2;
  line2.x2 = theLine.x2;
  line2.y2 = theLine.y2;
  if (this.mpProperLine(line1)) {
    this.setColorCode(this.mAtomColor[atm1]);
    this.drawBlackLine(line1);
  }
  if (this.mpProperLine(line2)) {
    this.setColorCode(this.mAtomColor[atm2]);
    this.drawBlackLine(line2);
  }
  this.setColorCode(this.mStandardForegroundColor);
}
;
_.drawDashedLine = function drawDashedLine(theLine, atom1, atom2){
  var aLine, color1, color2, xinc, yinc;
  xinc = (theLine.x2 - theLine.x1) / 10;
  yinc = (theLine.y2 - theLine.y1) / 10;
  aLine = new carc2.AbstractDepictor$DepictorLine;
  if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
    color1 = -3;
    color2 = -3;
  }
   else {
    color1 = this.mAtomColor[atom1];
    color2 = this.mAtomColor[atom2];
  }
  this.setColorCode(color1);
  aLine.x1 = theLine.x1;
  aLine.y1 = theLine.y1;
  aLine.x2 = theLine.x1 + xinc * 2;
  aLine.y2 = theLine.y1 + yinc * 2;
  this.drawBlackLine(aLine);
  aLine.x1 = theLine.x1 + xinc * 4;
  aLine.y1 = theLine.y1 + yinc * 4;
  aLine.x2 = theLine.x1 + xinc * 5;
  aLine.y2 = theLine.y1 + yinc * 5;
  this.drawBlackLine(aLine);
  this.setColorCode(color2);
  aLine.x1 = theLine.x1 + xinc * 5;
  aLine.y1 = theLine.y1 + yinc * 5;
  aLine.x2 = theLine.x1 + xinc * 6;
  aLine.y2 = theLine.y1 + yinc * 6;
  this.drawBlackLine(aLine);
  aLine.x1 = theLine.x1 + xinc * 8;
  aLine.y1 = theLine.y1 + yinc * 8;
  aLine.x2 = theLine.x2;
  aLine.y2 = theLine.y2;
  this.drawBlackLine(aLine);
  this.setColorCode(this.mStandardForegroundColor);
}
;
_.drawDot = function drawDot(x_0, y_0){
  this.fillCircle(x_0 - this.mpDotDiameter / 2, y_0 - this.mpDotDiameter / 2, this.mpDotDiameter);
}
;
_.drawLine = function drawLine(theLine, atom1, atom2){
  if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
    this.setColorCode(-3);
    this.drawBlackLine(theLine);
    this.setColorCode(this.mStandardForegroundColor);
  }
   else if (this.mAtomColor[atom1] != this.mAtomColor[atom2]) {
    this.drawColorLine(theLine, atom1, atom2);
  }
   else if (this.mAtomColor[atom1] != 0) {
    this.setColorCode(this.mAtomColor[atom1]);
    this.drawBlackLine(theLine);
    this.setColorCode(this.mStandardForegroundColor);
  }
   else {
    this.drawBlackLine(theLine);
  }
}
;
_.drawOffsetLine = function drawOffsetLine(theLine, atom1, atom2, dx, dy, aLine){
  aLine.x1 = theLine.x1 + dx;
  aLine.y1 = theLine.y1 + dy;
  aLine.x2 = theLine.x2 + dx;
  aLine.y2 = theLine.y2 + dy;
  this.drawLine(aLine, atom1, atom2);
}
;
_.drawShortDashedLine = function drawShortDashedLine(theLine, atom1, atom2){
  var color1, color2, i, i0, length_0, points, x_0, xdif, xinc, y_0, ydif, yinc;
  xdif = theLine.x2 - theLine.x1;
  ydif = theLine.y2 - theLine.y1;
  length_0 = $wnd.Math.sqrt(xdif * xdif + ydif * ydif);
  points = 2 * toInt_0(jl.round_1(length_0 / (4 * this.mpLineWidth)));
  xinc = xdif / (points - 1);
  yinc = ydif / (points - 1);
  if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
    color1 = -3;
    color2 = -3;
  }
   else {
    color1 = this.mAtomColor[atom1];
    color2 = this.mAtomColor[atom2];
  }
  x_0 = theLine.x1 - this.mpLineWidth / 2;
  y_0 = theLine.y1 - this.mpLineWidth / 2;
  this.setColorCode(color1);
  for (i0 = 0; i0 < narrow_int(points / 2); i0++) {
    this.fillCircle(x_0, y_0, this.mpLineWidth);
    x_0 += xinc;
    y_0 += yinc;
  }
  this.setColorCode(color2);
  for (i = 0; i < narrow_int(points / 2); i++) {
    this.fillCircle(x_0, y_0, this.mpLineWidth);
    x_0 += xinc;
    y_0 += yinc;
  }
  this.setColorCode(this.mStandardForegroundColor);
}
;
_.drawWedge = function drawWedge(theWedge, atom1, atom2){
  var color1, color2, p1, p2, xdiff, xe1, xe2, xm1, xm2, ydiff, ye1, ye2, ym1, ym2;
  xdiff = (theWedge.y1 - theWedge.y2) / 9;
  ydiff = (theWedge.x2 - theWedge.x1) / 9;
  xe1 = theWedge.x2 + xdiff;
  ye1 = theWedge.y2 + ydiff;
  xe2 = theWedge.x2 - xdiff;
  ye2 = theWedge.y2 - ydiff;
  xm1 = (theWedge.x1 + xe1) / 2;
  ym1 = (theWedge.y1 + ye1) / 2;
  xm2 = (theWedge.x1 + xe2) / 2;
  ym2 = (theWedge.y1 + ye2) / 2;
  p1 = new cargg.GenericPolygon(3);
  p2 = new cargg.GenericPolygon(4);
  p1.addPoint(theWedge.x1, theWedge.y1);
  p1.addPoint(xm1, ym1);
  p1.addPoint(xm2, ym2);
  p2.addPoint(xm2, ym2);
  p2.addPoint(xm1, ym1);
  p2.addPoint(xe1, ye1);
  p2.addPoint(xe2, ye2);
  if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
    color1 = -3;
    color2 = -3;
  }
   else {
    color1 = this.mAtomColor[atom1];
    color2 = this.mAtomColor[atom2];
    if (this.mMol.getMoleculeColor_0() != 1) {
      color2 = this.getESRColor(atom1);
      if (color1 == this.mMol.getAtomColor_0(atom1))
        color1 = color2;
    }
  }
  this.setColorCode(color1);
  this.drawPolygon(p1);
  this.setColorCode(color2);
  this.drawPolygon(p2);
  this.setColorCode(this.mStandardForegroundColor);
}
;
_.expandBoundsByTabuZones = function expandBoundsByTabuZones(avbl){
  var border, i;
  for (i = 0; i < this.mpTabuZone.size(); i++)
    this.mBoundingRect = this.mBoundingRect.union(castTo(this.mpTabuZone.getAtIndex(i), 34));
  this.expandByHiliteBackgrounds(avbl);
  border = 0.1 * avbl;
  this.mBoundingRect.x_0 -= border;
  this.mBoundingRect.y_0 -= border;
  this.mBoundingRect.width_0 += 2 * border;
  this.mBoundingRect.height_0 += 2 * border;
}
;
_.expandByHiliteBackgrounds = function expandByHiliteBackgrounds(avbl){
  var i, i0, isAtomHilited, radius, rect, x_0, y_0;
  isAtomHilited = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  for (i0 = 0; i0 < this.mMol.getAllBonds_0(); i0++) {
    if (this.mMol.isBondBackgroundHilited_0(i0)) {
      isAtomHilited[this.mMol.getBondAtom_0(0, i0)] = true;
      isAtomHilited[this.mMol.getBondAtom_0(1, i0)] = true;
    }
  }
  rect = new cargg.GenericRectangle;
  for (i = 0; i < this.mMol.getAllAtoms_0(); i++) {
    radius = neq(and_0(this.mMol.getAtomQueryFeatures(i), 536870912), 0)?avbl * 0.47:isAtomHilited[i]?avbl * 0.38:0;
    if (radius != 0) {
      x_0 = this.mTransformation.transformX(this.mMol.getAtomX_0(i));
      y_0 = this.mTransformation.transformY(this.mMol.getAtomY_0(i));
      rect.set_2(x_0 - radius, y_0 - radius, radius * 2, radius * 2);
      this.mBoundingRect = this.mBoundingRect.union(rect);
    }
  }
}
;
_.getAtomX_0 = function getAtomX(atom){
  return this.mTransformation.transformX(this.mMol.getAtomX_0(atom));
}
;
_.getAtomY_0 = function getAtomY(atom){
  return this.mTransformation.transformY(this.mMol.getAtomY_0(atom));
}
;
_.getBoundingRect = function getBoundingRect(){
  return this.mBoundingRect;
}
;
_.getContrastColor = function getContrastColor(rgb, atom){
  var bg;
  bg = this.mOverruleBackground != 0?this.mOverruleBackground:jsNotEquals(this.mAtomHiliteColor, null) && atom < this.mAtomHiliteColor.length && (this.mAtomHiliteColor[atom] & -16777216) != 0?this.mAtomHiliteColor[atom]:this.mCustomBackground != 0?this.mCustomBackground:-1;
  return caru.getContrastColor_0(rgb, bg);
}
;
_.getESRColor = function getESRColor(atom){
  var alleneCenter, esrInfo;
  if ((this.mDisplayMode & (128 | 4096)) != 0)
    return this.mAtomColor[atom];
  esrInfo = this.getESRTypeToDisplayAt(atom);
  if (esrInfo == -1) {
    alleneCenter = this.mMol.findAlleneCenterAtom_0(atom);
    if (alleneCenter != -1) {
      atom = alleneCenter;
      esrInfo = this.getESRTypeToDisplayAt(atom);
    }
  }
  if (esrInfo == -1)
    return this.mAtomColor[atom];
  switch (esrInfo & 255) {
    case 1:
      return 384;
    case 2:
      return 64;
    default:return 448;
  }
}
;
_.getESRTypeToDisplayAt = function getESRTypeToDisplayAt(atom){
  var bond, group, type_0;
  type_0 = -1;
  group = -1;
  if ((this.mDisplayMode & 128) != 0)
    return type_0;
  if (this.mMol.isAtomStereoCenter_0(atom)) {
    type_0 = this.mMol.getAtomESRType_0(atom);
    group = this.mMol.getAtomESRGroup_0(atom);
  }
  bond = this.mMol.findBINAPChiralityBond_0(atom);
  if (bond != -1) {
    type_0 = this.mMol.getBondESRType_0(bond);
    group = this.mMol.getBondESRGroup_0(bond);
  }
  if (type_0 != -1 && type_0 != 0)
    type_0 |= group << 8;
  return type_0;
}
;
_.getMolecule_0 = function getMolecule(){
  return this.mMol;
}
;
_.getTransformation = function getTransformation(){
  return this.mTransformation;
}
;
_.hiliteAtomBackgrounds = function hiliteAtomBackgrounds(argb, radius){
  var alpha_0, atom, avbl, background, r, rgb;
  background = this.mOverruleBackground != 0?this.mOverruleBackground:this.mCustomBackground != 0?this.mCustomBackground:-1;
  avbl = this.mTransformation.getScaling() * this.mMol.getAverageBondLength_0();
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    alpha_0 = (argb[atom] & -16777216) >>> 24;
    if (alpha_0 != 0) {
      rgb = argb[atom];
      if (alpha_0 != 255)
        rgb = caru.intermediateColor(background, argb[atom], alpha_0 / 255);
      r = jsEquals(radius, null)?0.5 * avbl:0.6 * radius[atom] * avbl;
      this.setRGB(rgb);
      this.fillCircle(this.getAtomX_0(atom) - r, this.getAtomY_0(atom) - r, 2 * r);
    }
  }
}
;
_.hiliteBondBackgrounds = function hiliteBondBackgrounds(){
  var atom1, atom2, bond, line;
  this.setLineWidth(2 * this.mpBondHiliteRadius);
  line = new carc2.AbstractDepictor$DepictorLine;
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    if (this.mMol.isBondBackgroundHilited_0(bond)) {
      line.x1 = this.getAtomX_0(atom1);
      line.y1 = this.getAtomY_0(atom1);
      line.x2 = this.getAtomX_0(atom2);
      line.y2 = this.getAtomY_0(atom2);
      this.setColorCode(-2);
      this.drawBlackLine(line);
    }
  }
}
;
_.hiliteExcludeGroups = function hiliteExcludeGroups(){
  var atom, atom1, atom2, bond, line, radius;
  if (this.mMol.isFragment_0()) {
    radius = this.mpExcludeGroupRadius;
    this.setColorCode(-7);
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
      if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 536870912), 0))
        this.fillCircle(this.getAtomX_0(atom) - radius, this.getAtomY_0(atom) - radius, 2 * radius);
    this.setLineWidth(2 * this.mpExcludeGroupRadius);
    line = new carc2.AbstractDepictor$DepictorLine;
    for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
      atom1 = this.mMol.getBondAtom_0(0, bond);
      atom2 = this.mMol.getBondAtom_0(1, bond);
      if (neq(and_0(and_0(this.mMol.getAtomQueryFeatures(atom1), this.mMol.getAtomQueryFeatures(atom2)), 536870912), 0)) {
        line.x1 = this.getAtomX_0(atom1);
        line.y1 = this.getAtomY_0(atom1);
        line.x2 = this.getAtomX_0(atom2);
        line.y2 = this.getAtomY_0(atom2);
        this.drawBlackLine(line);
      }
    }
  }
}
;
_.indicateQueryFeatures = function indicateQueryFeatures(){
  var atom, atom1, atom2, bond;
  if (this.mMol.isFragment_0()) {
    this.setColorCode(320);
    if ((this.mDisplayMode & 8) != 0)
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
        if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), not_0(536870912)), 0))
          this.fillCircle(this.getAtomX_0(atom) - this.mpQFDiameter / 2, this.getAtomY_0(atom) - this.mpQFDiameter / 2, this.mpQFDiameter);
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mMol.getBondQueryFeatures_0(bond) != 0) {
        atom1 = this.mMol.getBondAtom_0(0, bond);
        atom2 = this.mMol.getBondAtom_0(1, bond);
        this.fillCircle((this.getAtomX_0(atom1) + this.getAtomX_0(atom2) - this.mpQFDiameter) / 2, (this.getAtomY_0(atom1) + this.getAtomY_0(atom2) - this.mpQFDiameter) / 2, this.mpQFDiameter);
      }
    }
  }
}
;
_.init = function init(){
  this.mFactorTextSize = 1;
  this.mTransformation = new carc2.DepictorTransformation;
  this.mpTabuZone = new ju.ArrayList;
  this.mpDot = new ju.ArrayList;
  this.mAtomLabelDisplayed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  this.mChiralTextLocation = new cargg.GenericPoint;
  this.mStandardForegroundColor = 0;
  this.mCurrentColor = -1;
  this.updateBondHiliteColor();
}
;
_.isHighlightedAtom = function isHighlightedAtom(atom){
  var i;
  if (this.mMol.getAllConnAtoms_0(atom) == 0)
    return false;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(atom); i++)
    if (!this.mMol.isBondForegroundHilited_0(this.mMol.getConnBond_0(atom, i)))
      return false;
  return true;
}
;
_.markIsolatedAtoms = function markIsolatedAtoms(){
  var bnd;
  this.mAtomIsConnected = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  for (bnd = 0; bnd < this.mMol.getAllBonds_0(); bnd++) {
    this.mAtomIsConnected[this.mMol.getBondAtom_0(0, bnd)] = true;
    this.mAtomIsConnected[this.mMol.getBondAtom_0(1, bnd)] = true;
  }
}
;
_.mpAlleneCenter = function mpAlleneCenter(atm){
  var i;
  if (this.mMol.getConnAtoms_0(atm) != 2)
    return false;
  for (i = 0; i < 2; i++)
    if (this.mMol.getConnBondOrder_0(atm, i) != 2)
      return false;
  return true;
}
;
_.mpCalcNextBondOffset = function mpCalcNextBondOffset(atm1, atm2, side, nextBondOffset){
  var LI_LIMIT, LO_LIMIT, RI_LIMIT, RO_LIMIT, angleDiff, bnd, bondAngle, currentAngleDiff, distance, i, remoteAtm, retval, testAngle, theBondAngle;
  RO_LIMIT = 2.617993878;
  LO_LIMIT = 3.665191429;
  RI_LIMIT = 0.523598776;
  LI_LIMIT = 5.759586531;
  retval = false;
  nextBondOffset.x_0 = 0;
  nextBondOffset.y_0 = 0;
  if (side > 0)
    angleDiff = 2.617993878;
  else 
    angleDiff = 3.665191429;
  theBondAngle = this.mMol.getBondAngle_0(atm1, atm2);
  for (i = 0; i < this.mMol.getConnAtoms_0(atm1); i++) {
    bnd = this.mMol.getConnBond_0(atm1, i);
    bondAngle = theBondAngle;
    if (this.mMol.getBondAtom_0(0, bnd) == atm1)
      remoteAtm = this.mMol.getBondAtom_0(1, bnd);
    else 
      remoteAtm = this.mMol.getBondAtom_0(0, bnd);
    if (remoteAtm == atm2)
      continue;
    testAngle = this.mMol.getBondAngle_0(atm1, remoteAtm);
    if (bondAngle < testAngle)
      bondAngle += 3.141592653589793 * 2;
    currentAngleDiff = bondAngle - testAngle;
    if (side > 0) {
      if (currentAngleDiff < 3.141592653589793)
        retval = true;
      if (currentAngleDiff > 2.617993878)
        currentAngleDiff = 2.617993878;
      if (currentAngleDiff < 0.523598776)
        currentAngleDiff = 0.523598776;
      if (currentAngleDiff <= angleDiff) {
        angleDiff = currentAngleDiff;
        distance = this.mpBondSpacing * $wnd.Math.tan(angleDiff - 3.141592653589793 / 2) / 2;
        nextBondOffset.x_0 = -(distance * $wnd.Math.sin(bondAngle));
        nextBondOffset.y_0 = -(distance * $wnd.Math.cos(bondAngle));
      }
    }
     else {
      if (currentAngleDiff >= 3.141592653589793)
        retval = true;
      if (currentAngleDiff < 3.665191429)
        currentAngleDiff = 3.665191429;
      if (currentAngleDiff > 5.759586531)
        currentAngleDiff = 5.759586531;
      if (currentAngleDiff >= angleDiff) {
        angleDiff = currentAngleDiff;
        distance = this.mpBondSpacing * $wnd.Math.tan(4.712388981 - angleDiff) / 2;
        nextBondOffset.x_0 = -(distance * $wnd.Math.sin(bondAngle));
        nextBondOffset.y_0 = -(distance * $wnd.Math.cos(bondAngle));
      }
    }
  }
  return retval;
}
;
_.mpCalcPiBondOffset = function mpCalcPiBondOffset(dx, dy, piBondOffset){
  var alpha_0;
  if (dx == 0) {
    if (dy < 0)
      piBondOffset.x_0 = this.mpBondSpacing;
    else 
      piBondOffset.x_0 = -this.mpBondSpacing;
    piBondOffset.y_0 = 0;
    return;
  }
  alpha_0 = $wnd.Math.atan(dy / dx);
  if (dx < 0)
    alpha_0 += 3.141592653589793;
  piBondOffset.x_0 = -(this.mpBondSpacing * $wnd.Math.sin(alpha_0));
  piBondOffset.y_0 = this.mpBondSpacing * $wnd.Math.cos(alpha_0);
}
;
_.mpDBFromNonLabelToLabel = function mpDBFromNonLabelToLabel(theLine, bnd, inverted){
  var aLine, aLineIsInnerLine, atm1, atm2, bLine, nextBondOffset, piBondOffset, side, td, ti, xdiff, ydiff;
  aLine = new carc2.AbstractDepictor$DepictorLine;
  bLine = new carc2.AbstractDepictor$DepictorLine;
  piBondOffset = new cargg.GenericPoint;
  nextBondOffset = new cargg.GenericPoint;
  atm1 = this.mMol.getBondAtom_0(0, bnd);
  atm2 = this.mMol.getBondAtom_0(1, bnd);
  if (inverted) {
    td = theLine.x1;
    theLine.x1 = theLine.x2;
    theLine.x2 = td;
    td = theLine.y1;
    theLine.y1 = theLine.y2;
    theLine.y2 = td;
    ti = atm1;
    atm1 = atm2;
    atm2 = ti;
  }
  if (!this.mpProperLine(theLine))
    return;
  if (this.mMol.isRingBond_0(bnd)) {
    aLine.x1 = theLine.x1;
    aLine.y1 = theLine.y1;
    aLine.x2 = theLine.x2;
    aLine.y2 = theLine.y2;
    side = inverted?-this.mMol.getPreferredDoubleBondSide(bnd):this.mMol.getPreferredDoubleBondSide(bnd);
    if (side == 0)
      side = 1;
    this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
    if (side > 0) {
      bLine.x1 = theLine.x1 + piBondOffset.x_0;
      bLine.y1 = theLine.y1 + piBondOffset.y_0;
      bLine.x2 = theLine.x2 + piBondOffset.x_0;
      bLine.y2 = theLine.y2 + piBondOffset.y_0;
      if (this.mpCalcNextBondOffset(atm1, atm2, 1, nextBondOffset) || this.mMol.getConnAtoms_0(atm1) > 1) {
        bLine.x1 += nextBondOffset.x_0 + piBondOffset.y_0;
        bLine.y1 += nextBondOffset.y_0 - piBondOffset.x_0;
      }
    }
     else {
      bLine.x1 = theLine.x1 - piBondOffset.x_0;
      bLine.y1 = theLine.y1 - piBondOffset.y_0;
      bLine.x2 = theLine.x2 - piBondOffset.x_0;
      bLine.y2 = theLine.y2 - piBondOffset.y_0;
      if (this.mpCalcNextBondOffset(atm1, atm2, -1, nextBondOffset) || this.mMol.getConnAtoms_0(atm1) > 1) {
        bLine.x1 += nextBondOffset.x_0 + piBondOffset.y_0;
        bLine.y1 += nextBondOffset.y_0 - piBondOffset.x_0;
      }
    }
    if (this.mMol.getBondType_0(bnd) == 386)
      this.mpMakeCrossBond(aLine, bLine);
    this.mpHandleLine(aLine, atm1, atm2);
    if (this.mMol.getBondType_0(bnd) == 64)
      this.mpHandleDashedLine(bLine, atm1, atm2);
    else 
      this.mpHandleLine(bLine, atm1, atm2);
  }
   else {
    this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
    xdiff = piBondOffset.x_0 / 2;
    ydiff = piBondOffset.y_0 / 2;
    aLineIsInnerLine = false;
    aLine.x1 = theLine.x1 + xdiff;
    aLine.y1 = theLine.y1 + ydiff;
    aLine.x2 = theLine.x2 + xdiff;
    aLine.y2 = theLine.y2 + ydiff;
    if (this.mMol.getConnAtoms_0(atm1) > 1) {
      if (!this.mpCalcNextBondOffset(atm1, atm2, 1, nextBondOffset)) {
        setCheck(this.mAlternativeCoords, atm1, new cargg.GenericPoint_0(aLine.x1, aLine.y1));
      }
       else {
        aLine.x1 += nextBondOffset.x_0;
        aLine.y1 += nextBondOffset.y_0;
        if (this.mMol.getConnAtoms_0(atm1) == 2) {
          if (nextBondOffset.x_0 != 0 || nextBondOffset.y_0 != 0) {
            aLine.x1 += piBondOffset.y_0;
            aLine.y1 -= piBondOffset.x_0;
          }
        }
      }
    }
    bLine.x1 = theLine.x1 - xdiff;
    bLine.y1 = theLine.y1 - ydiff;
    bLine.x2 = theLine.x2 - xdiff;
    bLine.y2 = theLine.y2 - ydiff;
    if (this.mMol.getConnAtoms_0(atm1) > 1) {
      if (!this.mpCalcNextBondOffset(atm1, atm2, 0, nextBondOffset)) {
        setCheck(this.mAlternativeCoords, atm1, new cargg.GenericPoint_0(bLine.x1, bLine.y1));
        aLineIsInnerLine = true;
      }
       else {
        bLine.x1 += nextBondOffset.x_0;
        bLine.y1 += nextBondOffset.y_0;
        if (this.mMol.getConnAtoms_0(atm1) == 2) {
          if (nextBondOffset.x_0 != 0 || nextBondOffset.y_0 != 0) {
            bLine.x1 += piBondOffset.y_0;
            bLine.y1 -= piBondOffset.x_0;
          }
        }
      }
    }
    if (this.mMol.getBondType_0(bnd) == 386)
      this.mpMakeCrossBond(aLine, bLine);
    if (this.mMol.getBondType_0(bnd) == 64) {
      if (aLineIsInnerLine) {
        this.drawDashedLine(aLine, atm1, atm2);
        this.drawLine(bLine, atm1, atm2);
      }
       else {
        this.drawLine(aLine, atm1, atm2);
        this.drawDashedLine(bLine, atm1, atm2);
      }
    }
     else {
      this.drawLine(aLine, atm1, atm2);
      this.drawLine(bLine, atm1, atm2);
    }
  }
}
;
_.mpDrawAllBonds = function mpDrawAllBonds(esrGroupMemberCount){
  var atom1, atom2, cipStr, dx, dy, i, i0, i1, origColor, origForeground, type_0, x_0, y_0;
  origColor = this.mStandardForegroundColor;
  origForeground = this.mCustomForeground;
  if ((this.mDisplayMode & 16384) != 0) {
    this.mStandardForegroundColor = -6;
    this.mCustomForeground = -8355712;
    this.setColorCode(1);
  }
  this.mAlternativeCoords = initUnidimensionalArray(cggl.Lcom_actelion_research_gui_generic_GenericPoint_2_classLit, {4:1, 1:1, 7:1}, 30, this.mMol.getAllAtoms_0(), 0, 1);
  for (i0 = 0; i0 < this.mMol.getAllBonds_0(); i0++)
    if (this.mMol.getBondType_0(i0) == 2 || this.mMol.getBondType_0(i0) == 386 || this.mMol.getBondType_0(i0) == 64)
      this.mpDrawBond(i0);
  for (i1 = 0; i1 < this.mMol.getAllBonds_0(); i1++)
    if (this.mMol.getBondType_0(i1) != 2 && this.mMol.getBondType_0(i1) != 386 && this.mMol.getBondType_0(i1) != 64)
      this.mpDrawBond(i1);
  if ((this.mDisplayMode & 64) == 0) {
    for (i = 0; i < this.mMol.getAllBonds_0(); i++) {
      if (this.mMol.getBondCIPParity_0(i) != 0) {
        cipStr = null;
        if (this.mMol.getBondCIPParity_0(i) == 1 || this.mMol.getBondCIPParity_0(i) == 2) {
          if (this.mMol.getBondOrder_0(i) == 2 || this.mMol.getBondESRType_0(i) == 0 || jsEquals(esrGroupMemberCount, null) || esrGroupMemberCount[this.mMol.getBondESRType_0(i)][this.mMol.getBondESRGroup_0(i)] > 1) {
            if (this.mMol.getBondCIPParity_0(i) == 1)
              cipStr = this.mMol.getBondOrder_0(i) == 2?'E':this.mMol.isBondParityPseudo_0(i)?'p':'P';
            else 
              cipStr = this.mMol.getBondOrder_0(i) == 2?'Z':this.mMol.isBondParityPseudo_0(i)?'m':'M';
          }
        }
         else {
          cipStr = '?';
        }
        if (jsNotEquals(cipStr, null)) {
          this.mpSetSmallLabelSize();
          this.setColorCode(this.mMol.isBondForegroundHilited_0(i)?-3:this.mMol.getMoleculeColor_0() == 1 || (this.mDisplayMode & 4096) != 0?this.mStandardForegroundColor:448);
          atom1 = this.mMol.getBondAtom_0(0, i);
          atom2 = this.mMol.getBondAtom_0(1, i);
          x_0 = (this.getAtomX_0(atom1) + this.getAtomX_0(atom2)) / 2;
          y_0 = (this.getAtomY_0(atom1) + this.getAtomY_0(atom2)) / 2;
          dx = (this.getAtomX_0(atom1) - this.getAtomX_0(atom2)) / 3;
          dy = (this.getAtomY_0(atom1) - this.getAtomY_0(atom2)) / 3;
          this.mpDrawString(x_0 + dy, y_0 - dx, cipStr, true);
          this.setColorCode(this.mStandardForegroundColor);
          this.mpSetNormalLabelSize();
        }
      }
    }
  }
  if ((this.mDisplayMode & 4) != 0) {
    this.mpSetSmallLabelSize();
    this.setColorCode(384);
    for (i = 0; i < this.mMol.getAllBonds_0(); i++) {
      atom1 = this.mMol.getBondAtom_0(0, i);
      atom2 = this.mMol.getBondAtom_0(1, i);
      type_0 = this.mMol.isDelocalizedBond_0(i)?'d':this.mMol.isAromaticBond_0(i)?'a':'';
      x_0 = (this.getAtomX_0(atom1) + this.getAtomX_0(atom2)) / 2;
      y_0 = (this.getAtomY_0(atom1) + this.getAtomY_0(atom2)) / 2;
      this.mpDrawString(x_0, y_0, type_0 + ('' + jl.valueOf_32(i)), true);
    }
    this.setColorCode(this.mStandardForegroundColor);
    this.mpSetNormalLabelSize();
  }
  if ((this.mDisplayMode & 16384) != 0) {
    this.mStandardForegroundColor = origColor;
    this.mCustomForeground = origForeground;
  }
}
;
_.mpDrawAllDots = function mpDrawAllDots(){
  var dot, dot$iterator;
  for (dot$iterator = this.mpDot.iterator(); dot$iterator.hasNext_0();) {
    dot = castTo(dot$iterator.next_3(), 270);
    this.setColorCode(dot.color_0);
    this.drawDot(dot.x_0, dot.y_0);
  }
  this.setColorCode(this.mStandardForegroundColor);
}
;
_.mpDrawAtom = function mpDrawAtom(atom, esrGroupMemberCount){
  var angle, atmStart, atomStr, bestSide, bnd, charge, chax, chay, cipStr, counterHindrance, counterSide, eNegNeighbours, esrInfo, esrStr, hHeight, hNoStr, hNoWidth, hindrance, hydrogenWidth, hydrogens, hydrogensToAdd, i, i0, isoStr, j, labelWidth, largeIsoString, mapStr, minHindrance, neighbours, piElectrons, propStr, queryFeatures, ringBonds, theAngle, theColor, unpairedElectrons, valStr, x_0, xdiff, y_0, ydiff;
  if (!this.mIsValidatingView)
    this.onDrawAtom(atom, this.mMol.getAtomLabel_0(atom), this.getAtomX_0(atom), this.getAtomY_0(atom));
  propStr = null;
  if (this.mMol.getAtomCharge_0(atom) != 0) {
    valStr = $wnd.Math.abs(this.mMol.getAtomCharge_0(atom)) == 1?'':jl.valueOf_32($wnd.Math.abs(this.mMol.getAtomCharge_0(atom)));
    propStr = this.mMol.getAtomCharge_0(atom) < 0?valStr + '-':valStr + '+';
  }
  if (jsNotEquals(this.mAtomText, null) && atom < this.mAtomText.length && jsNotEquals(this.mAtomText[atom], null) && jl.length__I__devirtual$_0(this.mAtomText[atom]) > 0)
    propStr = this.append(propStr, this.mAtomText[atom]);
  isoStr = null;
  queryFeatures = this.mMol.getAtomQueryFeatures(atom);
  if (neq(queryFeatures, 0)) {
    if (neq(and_0(queryFeatures, {l:0, m:0, h:1}), 0))
      isoStr = this.append(isoStr, '*');
    if (neq(and_0(queryFeatures, {l:0, m:0, h:2}), 0))
      isoStr = this.append(isoStr, '!*');
    if (neq(and_0(queryFeatures, {l:0, m:0, h:4}), 0))
      isoStr = this.append(isoStr, 'ha');
    else if (neq(and_0(queryFeatures, 2), 0))
      isoStr = this.append(isoStr, 'a');
    else if (neq(and_0(queryFeatures, 4), 0))
      isoStr = this.append(isoStr, '!a');
    if (neq(and_0(queryFeatures, 4096), 0))
      isoStr = this.append(isoStr, 's');
    if (neq(and_0(queryFeatures, 1920), 0)) {
      hydrogens = and_0(queryFeatures, 1920);
      if (eq(hydrogens, add_22(add_22(256, 512), 1024)))
        isoStr = this.append(isoStr, 'h0');
      else if (eq(hydrogens, add_22(add_22(128, 512), 1024)))
        isoStr = this.append(isoStr, 'h1');
      else if (eq(hydrogens, add_22(add_22(128, 256), 1024)))
        isoStr = this.append(isoStr, 'h2');
      else if (eq(hydrogens, 128))
        isoStr = this.append(isoStr, 'h>0');
      else if (eq(hydrogens, add_22(128, 256)))
        isoStr = this.append(isoStr, 'h>1');
      else if (eq(hydrogens, add_22(add_22(128, 256), 512)))
        isoStr = this.append(isoStr, 'h>2');
      else if (eq(hydrogens, 1024))
        isoStr = this.append(isoStr, 'h<3');
      else if (eq(hydrogens, add_22(512, 1024)))
        isoStr = this.append(isoStr, 'h<2');
      else if (eq(hydrogens, add_22(128, 1024)))
        isoStr = this.append(isoStr, 'h1-2');
    }
    if (neq(and_0(queryFeatures, 234881024), 0)) {
      charge = and_0(queryFeatures, 234881024);
      if (eq(charge, add_22(134217728, 33554432)))
        isoStr = this.append(isoStr, 'c0');
      else if (eq(charge, add_22(67108864, 33554432)))
        isoStr = this.append(isoStr, 'c+');
      else if (eq(charge, add_22(67108864, 134217728)))
        isoStr = this.append(isoStr, 'c-');
    }
    if (neq(and_0(queryFeatures, 114688), 0)) {
      piElectrons = and_0(queryFeatures, 114688);
      if (eq(piElectrons, add_22(32768, 65536)))
        isoStr = this.append(isoStr, 'pi0');
      else if (eq(piElectrons, add_22(16384, 65536)))
        isoStr = this.append(isoStr, 'pi1');
      else if (eq(piElectrons, add_22(16384, 32768)))
        isoStr = this.append(isoStr, 'pi2');
      else if (eq(piElectrons, 16384))
        isoStr = this.append(isoStr, 'pi>0');
    }
    if (neq(and_0(queryFeatures, 4063232), 0)) {
      neighbours = and_0(queryFeatures, 4063232);
      if (eq(neighbours, and_0(4063232, not_0(262144))))
        isoStr = this.append(isoStr, 'n1');
      else if (eq(neighbours, and_0(4063232, not_0(524288))))
        isoStr = this.append(isoStr, 'n2');
      else if (eq(neighbours, and_0(4063232, not_0(1048576))))
        isoStr = this.append(isoStr, 'n3');
      else if (eq(neighbours, add_22(1048576, 2097152)))
        isoStr = this.append(isoStr, 'n<3');
      else if (eq(neighbours, 2097152))
        isoStr = this.append(isoStr, 'n<4');
      else if (eq(neighbours, add_22(131072, 262144)))
        isoStr = this.append(isoStr, 'n>1');
      else if (eq(neighbours, add_22(add_22(131072, 262144), 524288)))
        isoStr = this.append(isoStr, 'n>2');
      else if (eq(neighbours, and_0(4063232, not_0(2097152))))
        isoStr = this.append(isoStr, 'n>3');
      else if (eq(neighbours, or_0(or_0(131072, 1048576), 2097152)))
        isoStr = this.append(isoStr, 'n1-2');
      else if (eq(neighbours, or_0(131072, 2097152)))
        isoStr = this.append(isoStr, 'n1-3');
      else if (eq(neighbours, or_0(or_0(131072, 262144), 2097152)))
        isoStr = this.append(isoStr, 'n2-3');
    }
    if (neq(and_0(queryFeatures, 17042430230528), 0)) {
      eNegNeighbours = and_0(queryFeatures, 17042430230528);
      if (eq(eNegNeighbours, and_0(17042430230528, not_0(549755813888))))
        isoStr = this.append(isoStr, 'e0');
      else if (eq(eNegNeighbours, and_0(17042430230528, not_0(1099511627776))))
        isoStr = this.append(isoStr, 'e1');
      else if (eq(eNegNeighbours, and_0(17042430230528, not_0(2199023255552))))
        isoStr = this.append(isoStr, 'e2');
      else if (eq(eNegNeighbours, and_0(17042430230528, not_0(4398046511104))))
        isoStr = this.append(isoStr, 'e3');
      else if (eq(eNegNeighbours, or_0(or_0(2199023255552, 4398046511104), 8796093022208)))
        isoStr = this.append(isoStr, 'e<2');
      else if (eq(eNegNeighbours, or_0(4398046511104, 8796093022208)))
        isoStr = this.append(isoStr, 'e<3');
      else if (eq(eNegNeighbours, 8796093022208))
        isoStr = this.append(isoStr, 'e<4');
      else if (eq(eNegNeighbours, 549755813888))
        isoStr = this.append(isoStr, 'e>0');
      else if (eq(eNegNeighbours, or_0(549755813888, 1099511627776)))
        isoStr = this.append(isoStr, 'e>1');
      else if (eq(eNegNeighbours, or_0(or_0(549755813888, 1099511627776), 2199023255552)))
        isoStr = this.append(isoStr, 'e>2');
      else if (eq(eNegNeighbours, and_0(17042430230528, not_0(8796093022208))))
        isoStr = this.append(isoStr, 'e>3');
      else if (eq(eNegNeighbours, or_0(or_0(549755813888, 4398046511104), 8796093022208)))
        isoStr = this.append(isoStr, 'e1-2');
      else if (eq(eNegNeighbours, or_0(549755813888, 8796093022208)))
        isoStr = this.append(isoStr, 'e1-3');
      else if (eq(eNegNeighbours, or_0(or_0(549755813888, 1099511627776), 8796093022208)))
        isoStr = this.append(isoStr, 'e2-3');
    }
    if (neq(and_0(queryFeatures, 120), 0)) {
      ringBonds = and_0(queryFeatures, 120);
      if (eq(ringBonds, add_22(add_22(16, 32), 64)))
        isoStr = this.append(isoStr, '!r');
      else if (eq(ringBonds, 8))
        isoStr = this.append(isoStr, 'r');
      else if (eq(ringBonds, add_22(32, 64)))
        isoStr = this.append(isoStr, 'rb<3');
      else if (eq(ringBonds, add_22(add_22(8, 32), 64)))
        isoStr = this.append(isoStr, 'rb2');
      else if (eq(ringBonds, add_22(add_22(8, 16), 64)))
        isoStr = this.append(isoStr, 'rb3');
      else if (eq(ringBonds, add_22(add_22(8, 16), 32)))
        isoStr = this.append(isoStr, 'rb4');
    }
    if (neq(and_0(queryFeatures, 29360128), 0)) {
      isoStr = this.append(isoStr, 'r' + toString_29(shr_0(and_0(queryFeatures, 29360128), 22)));
    }
    if (neq(and_0(queryFeatures, 545460846592), 0)) {
      isoStr = this.append(isoStr, this.createRingSizeText(queryFeatures));
    }
    if (neq(and_0(queryFeatures, 268435456), 0)) {
      isoStr = this.append(isoStr, 'f');
    }
  }
  if (this.mMol.getAtomMass_0(atom) != 0) {
    isoStr = this.append(isoStr, jl.valueOf_32(this.mMol.getAtomMass_0(atom)));
  }
  unpairedElectrons = 0;
  if (this.mMol.getAtomRadical_0(atom) != 0) {
    switch (this.mMol.getAtomRadical_0(atom)) {
      case 16:
        propStr = this.append(propStr, '|');
        break;
      case 32:
        unpairedElectrons = 1;
        break;
      case 48:
        unpairedElectrons = 2;
        break;
    }
  }
  cipStr = null;
  if ((this.mDisplayMode & 64) == 0) {
    if (this.mMol.isAtomConfigurationUnknown_0(atom))
      cipStr = '?';
    else if (this.mMol.getAtomCIPParity_0(atom) != 0) {
      if (this.mMol.getAtomESRType_0(atom) == 0 || jsEquals(esrGroupMemberCount, null) || esrGroupMemberCount[this.mMol.getAtomESRType_0(atom)][this.mMol.getAtomESRGroup_0(atom)] > 1) {
        if (this.mMol.getConnAtoms_0(atom) == 2) {
          switch (this.mMol.getAtomCIPParity_0(atom)) {
            case 2:
              cipStr = this.mMol.isAtomParityPseudo_0(atom)?'p':'P';
              break;
            case 1:
              cipStr = this.mMol.isAtomParityPseudo_0(atom)?'m':'M';
              break;
            default:cipStr = '*';
              break;
          }
        }
         else {
          switch (this.mMol.getAtomCIPParity_0(atom)) {
            case 1:
              cipStr = this.mMol.isAtomParityPseudo_0(atom)?'r':'R';
              break;
            case 2:
              cipStr = this.mMol.isAtomParityPseudo_0(atom)?'s':'S';
              break;
            default:cipStr = '*';
              break;
          }
        }
      }
    }
  }
  if ((this.mDisplayMode & 768) != 0)
    cipStr = this.append(cipStr, jl.valueOf_32(this.mMol.getSymmetryRank_0(atom)));
  mapStr = null;
  if ((this.mDisplayMode & 16) != 0 && this.mMol.getAtomMapNo_0(atom) != 0)
    mapStr = '' + this.mMol.getAtomMapNo_0(atom);
  esrStr = null;
  if (this.mMol.getStereoBond_0(atom) != -1) {
    esrInfo = this.getESRTypeToDisplayAt(atom);
    if (esrInfo != -1)
      esrStr = esrInfo == 0?'abs':((esrInfo & 255) == 1?'&':'or') + (1 + (esrInfo >> 8));
  }
  hydrogensToAdd = 0;
  if ((this.mDisplayMode & 8192) == 0) {
    if (this.mMol.isFragment_0()) {
      if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 2048), 0))
        hydrogensToAdd = this.mMol.getImplicitHydrogens_0(atom);
    }
     else {
      if (this.mMol.getAtomicNo_0(atom) != 6 || this.mMol.getAtomMass_0(atom) != 0 || !this.mAtomIsConnected[atom] || this.mMol.getAtomRadical_0(atom) != 0)
        hydrogensToAdd = this.mMol.getImplicitHydrogens_0(atom);
    }
  }
  largeIsoString = false;
  atomStr = this.mMol.getAtomCustomLabel_0(atom);
  if (jsNotEquals(atomStr, null) && jl.startsWith_Ljava_lang_String__Z__devirtual$(atomStr, ']')) {
    isoStr = this.append(jl.substring_I_Ljava_lang_String___devirtual$(atomStr, 1), isoStr);
    atomStr = null;
    largeIsoString = true;
  }
  if (jsNotEquals(atomStr, null)) {
    hydrogensToAdd = 0;
  }
   else if (jsNotEquals(this.mMol.getAtomList_0(atom), null)) {
    atmStart = neq(and_0(this.mMol.getAtomQueryFeatures(atom), 1), 0)?'[!':'[';
    atomStr = atmStart + ('' + this.mMol.getAtomListString_0(atom)) + ']';
    if (jl.length__I__devirtual$_0(atomStr) > 5)
      atomStr = atmStart + this.mMol.getAtomList_0(atom).length + ']';
    if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 2048), 0))
      hydrogensToAdd = -1;
  }
   else if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 1), 0)) {
    atomStr = '?';
    if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 2048), 0))
      hydrogensToAdd = -1;
  }
   else if (this.mMol.getAtomicNo_0(atom) != 6 || jsNotEquals(propStr, null) || jsNotEquals(isoStr, null) || hydrogensToAdd > 0 || !this.mAtomIsConnected[atom])
    atomStr = this.mMol.getAtomLabel_0(atom);
  labelWidth = 0;
  if (!this.mMol.isSelectedAtom_0(atom) & neq(and_0(this.mMol.getAtomQueryFeatures(atom), 536870912), 0))
    this.setColorCode(-8);
  if (jsNotEquals(atomStr, null)) {
    labelWidth = this.getStringWidth(atomStr);
    this.mpDrawString(this.getAtomX_0(atom), this.getAtomY_0(atom), atomStr, true);
    this.mAtomLabelDisplayed[atom] = true;
  }
   else if (this.mpAlleneCenter(atom))
    this.mpDrawDot(this.getAtomX_0(atom), this.getAtomY_0(atom), atom);
  if (jsNotEquals(propStr, null)) {
    this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) + ((labelWidth + this.getStringWidth(propStr)) / 2 + 1);
    y_0 = this.getAtomY_0(atom) - narrow_int((this.getTextSize() * 4 - 4) / 8);
    this.mpDrawString(x_0, y_0, propStr, true);
    this.mpSetNormalLabelSize();
  }
  if ((this.mDisplayMode & 2) != 0)
    isoStr = jl.valueOf_32(atom);
  if (jsNotEquals(isoStr, null)) {
    if (largeIsoString)
      this.mpSetReducedLabelSize();
    else 
      this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) - (labelWidth + this.getStringWidth(isoStr)) / 2;
    y_0 = this.getAtomY_0(atom) - narrow_int((this.getTextSize() * 4 - 4) / 8);
    this.mpDrawString(x_0, y_0, isoStr, true);
    this.mpSetNormalLabelSize();
  }
  if (jsNotEquals(cipStr, null)) {
    this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) - (labelWidth + this.getStringWidth(cipStr)) / 2;
    y_0 = this.getAtomY_0(atom) + narrow_int((this.getTextSize() * 4 + 4) / 8);
    theColor = this.mCurrentColor;
    if (this.mMol.getMoleculeColor_0() != 1 && (this.mDisplayMode & 4096) == 0)
      this.setColorCode(448);
    this.mpDrawString(x_0, y_0, cipStr, false);
    this.setColorCode(theColor);
    this.mpSetNormalLabelSize();
  }
  if (jsNotEquals(mapStr, null)) {
    this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) + ((labelWidth + this.getStringWidth(mapStr)) / 2 + 1);
    y_0 = this.getAtomY_0(atom) + narrow_int((this.getTextSize() * 4 + 4) / 8);
    theColor = this.mCurrentColor;
    this.setColorCode(this.mMol.isAutoMappedAtom_0(atom)?384:448);
    this.mpDrawString(x_0, y_0, mapStr, true);
    this.setColorCode(theColor);
    this.mpSetNormalLabelSize();
  }
  if (jsNotEquals(esrStr, null)) {
    angle = this.mpGetFreeSpaceAngle(atom);
    this.mpSetSmallLabelSize();
    x_0 = this.getAtomX_0(atom) + 0.7 * this.getTextSize() * $wnd.Math.sin(angle);
    y_0 = this.getAtomY_0(atom) + 0.7 * this.getTextSize() * $wnd.Math.cos(angle);
    theColor = this.mCurrentColor;
    if (!this.mIsValidatingView && this.mMol.getMoleculeColor_0() != 1)
      this.setColorCode(this.getESRColor(atom));
    this.mpDrawString(x_0, y_0, esrStr, false);
    this.setColorCode(theColor);
    this.mpSetNormalLabelSize();
  }
  if (hydrogensToAdd == 0 && unpairedElectrons == 0) {
    if (this.mCurrentColor == -8)
      this.setColorCode(-9);
    return;
  }
  hindrance = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 4, 15, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtomsPlusMetalBonds_0(atom); i0++) {
    bnd = this.mMol.getConnBond_0(atom, i0);
    for (j = 0; j < 2; j++) {
      if (this.mMol.getBondAtom_0(j, bnd) == atom) {
        theAngle = this.mMol.getBondAngle_0(this.mMol.getBondAtom_0(j, bnd), this.mMol.getBondAtom_0(1 - j, bnd));
        if (theAngle < -3.141592653589793 / 2) {
          hindrance[0] -= theAngle + 3.141592653589793 / 2;
          hindrance[3] += theAngle + 3.141592653589793;
        }
         else if (theAngle < 0) {
          hindrance[2] += theAngle + 3.141592653589793 / 2;
          hindrance[3] -= theAngle;
        }
         else if (theAngle < 3.141592653589793 / 2) {
          hindrance[1] += theAngle;
          hindrance[2] += 3.141592653589793 / 2 - theAngle;
        }
         else {
          hindrance[0] += theAngle - 3.141592653589793 / 2;
          hindrance[1] += 3.141592653589793 - theAngle;
        }
      }
    }
  }
  if (this.mMol.getConnAtoms_0(atom) == 0) {
    if (this.mMol.isElectronegative_0(atom))
      hindrance[3] -= 0.2;
    else 
      hindrance[1] -= 0.2;
  }
   else 
    hindrance[1] -= 0.1;
  if (jsNotEquals(propStr, null) || jsNotEquals(mapStr, null))
    hindrance[1] += 10;
  if (jsNotEquals(isoStr, null) || jsNotEquals(cipStr, null))
    hindrance[3] += 10;
  hNoStr = '';
  if (hydrogensToAdd != 0) {
    hydrogenWidth = this.getStringWidth('H');
    hNoWidth = 0;
    hHeight = this.getTextSize();
    if (hydrogensToAdd == -1) {
      hNoStr = 'n';
      this.mpSetSmallLabelSize();
      hNoWidth = this.getStringWidth(hNoStr);
    }
     else if (hydrogensToAdd > 1) {
      hNoStr = jl.valueOf_32(hydrogensToAdd);
      this.mpSetSmallLabelSize();
      hNoWidth = this.getStringWidth(hNoStr);
    }
    if (hindrance[1] < 0.6 || hindrance[3] < 0.6) {
      chay = this.getAtomY_0(atom);
      if (hindrance[1] <= hindrance[3]) {
        hindrance[1] += 10;
        chax = this.getAtomX_0(atom) + (labelWidth + hydrogenWidth) / 2;
      }
       else {
        hindrance[3] += 10;
        chax = this.getAtomX_0(atom) - (labelWidth + hydrogenWidth) / 2 - hNoWidth;
      }
    }
     else {
      chax = this.getAtomX_0(atom);
      if (hindrance[0] < hindrance[2]) {
        hindrance[0] += 10;
        chay = this.getAtomY_0(atom) - hHeight;
      }
       else {
        hindrance[2] += 10;
        chay = this.getAtomY_0(atom) + hHeight;
      }
    }
    if (hNoWidth > 0) {
      x_0 = chax + (hydrogenWidth + hNoWidth) / 2;
      y_0 = chay + narrow_int((this.getTextSize() * 4 + 4) / 8);
      this.mpDrawString(x_0, y_0, hNoStr, true);
      this.mpSetNormalLabelSize();
    }
    this.mpDrawString(chax, chay, 'H', true);
  }
  bestSide = 0;
  if (unpairedElectrons != 0) {
    minHindrance = 50;
    counterHindrance = 0;
    for (i = 0; i < 4; i++) {
      counterSide = i > 1?i - 2:i + 2;
      if (hindrance[i] < minHindrance) {
        bestSide = i;
        minHindrance = hindrance[i];
        counterHindrance = hindrance[counterSide];
      }
       else if (hindrance[i] == minHindrance) {
        if (hindrance[counterSide] > counterHindrance) {
          bestSide = i;
          counterHindrance = hindrance[counterSide];
        }
      }
    }
    switch (bestSide) {
      case 0:
        chax = this.getAtomX_0(atom);
        chay = this.getAtomY_0(atom) - this.mpDotDiameter - labelWidth / 2;
        break;
      case 1:
        chax = this.getAtomX_0(atom) + this.mpDotDiameter + labelWidth / 2;
        chay = this.getAtomY_0(atom);
        break;
      case 2:
        chax = this.getAtomX_0(atom);
        chay = this.getAtomY_0(atom) + this.mpDotDiameter + labelWidth / 2;
        break;
      default:chax = this.getAtomX_0(atom) - this.mpDotDiameter - labelWidth / 2;
        chay = this.getAtomY_0(atom);
        break;
    }
    if (unpairedElectrons == 1) {
      this.mpDrawDot(chax, chay, atom);
    }
     else {
      switch (bestSide) {
        case 0:
          xdiff = 2 * this.mpDotDiameter;
          ydiff = 0;
          chax -= this.mpDotDiameter;
          break;
        case 1:
          xdiff = 0;
          ydiff = 2 * this.mpDotDiameter;
          chay -= this.mpDotDiameter;
          break;
        case 2:
          xdiff = 2 * this.mpDotDiameter;
          ydiff = 0;
          chax -= this.mpDotDiameter;
          break;
        default:xdiff = 0;
          ydiff = 2 * this.mpDotDiameter;
          chay -= this.mpDotDiameter;
          break;
      }
      this.mpDrawDot(chax, chay, atom);
      this.mpDrawDot(chax + xdiff, chay + ydiff, atom);
    }
  }
  if (this.mCurrentColor == -8)
    this.setColorCode(-9);
}
;
_.mpDrawBond = function mpDrawBond(bnd){
  var aLine, atom, atom1, atom2, bLine, bondOrder, bondType, color1, color2, count, esrGroup, esrType, i, nextBondOffset, piBondOffset, side, stereoCenter, theLine, xdiff, ydiff;
  theLine = new carc2.AbstractDepictor$DepictorLine;
  aLine = new carc2.AbstractDepictor$DepictorLine;
  bLine = new carc2.AbstractDepictor$DepictorLine;
  piBondOffset = new cargg.GenericPoint;
  nextBondOffset = new cargg.GenericPoint;
  atom1 = this.mMol.getBondAtom_0(0, bnd);
  atom2 = this.mMol.getBondAtom_0(1, bnd);
  this.onDrawBond(bnd, this.getAtomX_0(atom1), this.getAtomY_0(atom1), this.getAtomX_0(atom2), this.getAtomY_0(atom2));
  if (!this.mMol.isSelectedAtom_0(atom1) && !this.mMol.isSelectedAtom_0(atom2) && neq(and_0(or_0(this.mMol.getAtomQueryFeatures(atom1), this.mMol.getAtomQueryFeatures(atom2)), 536870912), 0))
    this.setColorCode(-8);
  if (isNull(this.mAlternativeCoords[atom1])) {
    theLine.x1 = this.getAtomX_0(atom1);
    theLine.y1 = this.getAtomY_0(atom1);
  }
   else {
    theLine.x1 = this.mAlternativeCoords[atom1].x_0;
    theLine.y1 = this.mAlternativeCoords[atom1].y_0;
  }
  if (isNull(this.mAlternativeCoords[atom2])) {
    theLine.x2 = this.getAtomX_0(atom2);
    theLine.y2 = this.getAtomY_0(atom2);
  }
   else {
    theLine.x2 = this.mAlternativeCoords[atom2].x_0;
    theLine.y2 = this.mAlternativeCoords[atom2].y_0;
  }
  if ((this.mMol.getBondQueryFeatures_0(bnd) & 130560) != 0) {
    this.mpHandleDottedLine(theLine, atom1, atom2);
    this.setColorCode(-9);
    return;
  }
  bondOrder = this.mMol.getBondType_0(bnd) == 64?0:this.mMol.getBondType_0(bnd) == 32?1:this.mMol.getBondOrder_0(bnd);
  switch (bondOrder) {
    case 1:
      bondType = this.mMol.getBondType_0(bnd);
      if ((this.mDisplayMode & 128) != 0 && (bondType == 257 || bondType == 129)) {
        stereoCenter = this.mMol.getBondAtom_0(0, bnd);
        esrType = this.mMol.getAtomESRType_0(stereoCenter);
        if (esrType != 0) {
          esrGroup = this.mMol.getAtomESRGroup_0(stereoCenter);
          count = 0;
          for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
            if (this.mMol.getAtomESRType_0(atom) == esrType && this.mMol.getAtomESRGroup_0(atom) == esrGroup)
              count++;
          if (count == 1)
            bondType = 1;
        }
      }

      switch (bondType) {
        case 1:
          this.mpHandleLine(theLine, atom1, atom2);
          break;
        case 257:
          this.mpHandleWedge(theLine, atom1, atom2);
          break;
        case 129:
          xdiff = theLine.x2 - theLine.x1;
          ydiff = theLine.y2 - theLine.y1;
          if (this.mMol.isBondForegroundHilited_0(this.mMol.getBond_0(atom1, atom2))) {
            color1 = -3;
            color2 = -3;
          }
           else {
            color1 = this.mAtomColor[atom1];
            color2 = this.getESRColor(atom1);
            if (color1 == this.mMol.getAtomColor_0(atom1))
              color1 = color2;
          }

          for (i = 2; i < 17; i += 2) {
            aLine.x1 = theLine.x1 + i * xdiff / 17 - i * ydiff / 128;
            aLine.y1 = theLine.y1 + i * ydiff / 17 + i * xdiff / 128;
            aLine.x2 = theLine.x1 + i * xdiff / 17 + i * ydiff / 128;
            aLine.y2 = theLine.y1 + i * ydiff / 17 - i * xdiff / 128;
            if (this.mpProperLine(aLine)) {
              this.setColorCode(i < 9?color1:color2);
              this.drawBlackLine(aLine);
              this.setColorCode(this.mStandardForegroundColor);
            }
          }

          break;
        case 32:
          this.mpHandleShortDashedLine(theLine, atom1, atom2);
          break;
      }

      break;
    case 0:
    case 2:
      if ((this.mAtomLabelDisplayed[atom1] || this.mMol.getAtomPi_0(atom1) == 2) && (this.mAtomLabelDisplayed[atom2] || this.mMol.getAtomPi_0(atom2) == 2) && !this.mMol.isRingBond_0(bnd) && bondOrder == 2) {
        if (!this.mpProperLine(theLine))
          break;
        this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
        xdiff = piBondOffset.x_0 / 2;
        ydiff = piBondOffset.y_0 / 2;
        aLine.x1 = theLine.x1 + xdiff;
        aLine.y1 = theLine.y1 + ydiff;
        aLine.x2 = theLine.x2 + xdiff;
        aLine.y2 = theLine.y2 + ydiff;
        bLine.x1 = theLine.x1 - xdiff;
        bLine.y1 = theLine.y1 - ydiff;
        bLine.x2 = theLine.x2 - xdiff;
        bLine.y2 = theLine.y2 - ydiff;
        if (this.mMol.getBondType_0(bnd) == 386)
          this.mpMakeCrossBond(aLine, bLine);
        this.drawLine(aLine, atom1, atom2);
        if (bondOrder == 2)
          this.drawLine(bLine, atom1, atom2);
        else 
          this.drawDashedLine(bLine, atom1, atom2);
      }
       else if ((this.mAtomLabelDisplayed[atom2] || this.mMol.getAtomPi_0(atom2) == 2) && bondOrder == 2) {
        this.mpDBFromNonLabelToLabel(theLine, bnd, false);
      }
       else if ((this.mAtomLabelDisplayed[atom1] || this.mMol.getAtomPi_0(atom1) == 2) && bondOrder == 2) {
        this.mpDBFromNonLabelToLabel(theLine, bnd, true);
      }
       else {
        side = this.mMol.getPreferredDoubleBondSide(bnd);
        if (side == 0)
          side = 1;
        aLine.x1 = theLine.x1;
        aLine.y1 = theLine.y1;
        aLine.x2 = theLine.x2;
        aLine.y2 = theLine.y2;
        this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
        if (side > 0) {
          bLine.x1 = theLine.x1 + piBondOffset.x_0;
          bLine.y1 = theLine.y1 + piBondOffset.y_0;
          bLine.x2 = theLine.x2 + piBondOffset.x_0;
          bLine.y2 = theLine.y2 + piBondOffset.y_0;
          if (this.mpCalcNextBondOffset(atom1, atom2, 1, nextBondOffset) || this.mMol.getConnAtoms_0(atom1) > 1) {
            bLine.x1 += nextBondOffset.x_0 + piBondOffset.y_0;
            bLine.y1 += nextBondOffset.y_0 - piBondOffset.x_0;
          }
          if (this.mpCalcNextBondOffset(atom2, atom1, -1, nextBondOffset) || this.mMol.getConnAtoms_0(atom2) > 1) {
            bLine.x2 += nextBondOffset.x_0 - piBondOffset.y_0;
            bLine.y2 += nextBondOffset.y_0 + piBondOffset.x_0;
          }
        }
         else {
          bLine.x1 = theLine.x1 - piBondOffset.x_0;
          bLine.y1 = theLine.y1 - piBondOffset.y_0;
          bLine.x2 = theLine.x2 - piBondOffset.x_0;
          bLine.y2 = theLine.y2 - piBondOffset.y_0;
          if (this.mpCalcNextBondOffset(atom1, atom2, -1, nextBondOffset) || this.mMol.getConnAtoms_0(atom1) > 1) {
            bLine.x1 += nextBondOffset.x_0 + piBondOffset.y_0;
            bLine.y1 += nextBondOffset.y_0 - piBondOffset.x_0;
          }
          if (this.mpCalcNextBondOffset(atom2, atom1, 1, nextBondOffset) || this.mMol.getConnAtoms_0(atom2) > 1) {
            bLine.x2 += nextBondOffset.x_0 - piBondOffset.y_0;
            bLine.y2 += nextBondOffset.y_0 + piBondOffset.x_0;
          }
        }
        if (this.mMol.getBondType_0(bnd) == 386)
          this.mpMakeCrossBond(aLine, bLine);
        this.mpHandleLine(aLine, atom1, atom2);
        if (bondOrder == 2)
          this.mpHandleLine(bLine, atom1, atom2);
        else 
          this.mpHandleDashedLine(bLine, atom1, atom2);
      }

      break;
    case 3:
      if (this.mpProperLine(theLine)) {
        this.drawLine(theLine, atom1, atom2);
        this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
        this.drawOffsetLine(theLine, atom1, atom2, piBondOffset.x_0, piBondOffset.y_0, aLine);
        this.drawOffsetLine(theLine, atom1, atom2, -piBondOffset.x_0, -piBondOffset.y_0, aLine);
      }

      break;
    case 4:
      if (this.mpProperLine(theLine)) {
        this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
        this.drawOffsetLine(theLine, atom1, atom2, 1.5 * piBondOffset.x_0, 1.5 * piBondOffset.y_0, aLine);
        this.drawOffsetLine(theLine, atom1, atom2, 0.5 * piBondOffset.x_0, 0.5 * piBondOffset.y_0, aLine);
        this.drawOffsetLine(theLine, atom1, atom2, -0.5 * piBondOffset.x_0, -0.5 * piBondOffset.y_0, aLine);
        this.drawOffsetLine(theLine, atom1, atom2, -1.5 * piBondOffset.x_0, -1.5 * piBondOffset.y_0, aLine);
      }

      break;
    case 5:
      if (this.mpProperLine(theLine)) {
        this.drawLine(theLine, atom1, atom2);
        this.mpCalcPiBondOffset(theLine.x2 - theLine.x1, theLine.y2 - theLine.y1, piBondOffset);
        this.drawOffsetLine(theLine, atom1, atom2, 2 * piBondOffset.x_0, 2 * piBondOffset.y_0, aLine);
        this.drawOffsetLine(theLine, atom1, atom2, piBondOffset.x_0, piBondOffset.y_0, aLine);
        this.drawOffsetLine(theLine, atom1, atom2, -piBondOffset.x_0, -piBondOffset.y_0, aLine);
        this.drawOffsetLine(theLine, atom1, atom2, -2 * piBondOffset.x_0, -2 * piBondOffset.y_0, aLine);
      }

      break;
  }
  if (this.mCurrentColor == -8)
    this.setColorCode(-9);
}
;
_.mpDrawBondQueryFeatures = function mpDrawBondQueryFeatures(){
  var atom1, atom2, bond, d, dx, dy, hh, hw, label_0, maxAtoms, minAtoms, ringSize, textSizeChanged, x_0, y_0;
  textSizeChanged = false;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    label_0 = null;
    if (this.mMol.isBondBridge_0(bond)) {
      minAtoms = this.mMol.getBondBridgeMinSize_0(bond);
      maxAtoms = this.mMol.getBondBridgeMaxSize_0(bond);
      label_0 = minAtoms == maxAtoms?'[' + minAtoms + ']':'[' + minAtoms + ':' + maxAtoms + ']';
    }
     else if ((this.mMol.getBondQueryFeatures_0(bond) & 6291456) != 0) {
      label_0 = (this.mMol.getBondQueryFeatures_0(bond) & 6291456) == 2097152?'a':(this.mMol.getBondQueryFeatures_0(bond) & 384) == 256?'r!a':'!a';
    }
     else if ((this.mMol.getBondQueryFeatures_0(bond) & 384) != 0) {
      label_0 = (this.mMol.getBondQueryFeatures_0(bond) & 384) == 256?'r':'!r';
    }
    ringSize = (this.mMol.getBondQueryFeatures_0(bond) & 917504) >> 17;
    if (ringSize != 0)
      label_0 = (jsEquals(label_0, null)?'':label_0) + ringSize;
    if (jsNotEquals(label_0, null)) {
      atom1 = this.mMol.getBondAtom_0(0, bond);
      atom2 = this.mMol.getBondAtom_0(1, bond);
      if (!textSizeChanged) {
        this.mpSetSmallLabelSize();
        textSizeChanged = true;
      }
      x_0 = (this.getAtomX_0(atom1) + this.getAtomX_0(atom2)) / 2;
      y_0 = (this.getAtomY_0(atom1) + this.getAtomY_0(atom2)) / 2;
      dx = this.getAtomX_0(atom2) - this.getAtomX_0(atom1);
      dy = this.getAtomY_0(atom2) - this.getAtomY_0(atom1);
      d = $wnd.Math.sqrt(dx * dx + dy * dy);
      hw = 0.6 * this.getStringWidth(label_0);
      hh = 0.55 * this.getTextSize();
      if (d != 0) {
        if (dx > 0)
          this.mpDrawString(x_0 + hw * dy / d, y_0 - hh * dx / d, label_0, true);
        else 
          this.mpDrawString(x_0 - hw * dy / d, y_0 + hh * dx / d, label_0, true);
      }
    }
  }
  if (textSizeChanged)
    this.mpSetNormalLabelSize();
}
;
_.mpDrawDot = function mpDrawDot(x_0, y_0, atm){
  this.mpTabuZone.add(new cargg.GenericRectangle_0(x_0 - this.mpDotDiameter, y_0 - this.mpDotDiameter, 2 * this.mpDotDiameter, 2 * this.mpDotDiameter));
  if (!this.mIsValidatingView) {
    this.mpDot.add(new carc2.AbstractDepictor$DepictorDot(x_0, y_0, this.isHighlightedAtom(atm)?-3:this.mAtomColor[atm]));
  }
}
;
_.mpDrawString = function mpDrawString(x_0, y_0, str, withTabu){
  var strWidth, xdiff, ydiff;
  if (withTabu) {
    strWidth = this.getStringWidth(str);
    xdiff = strWidth / 2 + narrow_int(this.getTextSize() / 8);
    ydiff = narrow_int(this.getTextSize() / 2);
    if (jsEquals(str, '+') || jsEquals(str, '-'))
      ydiff = ydiff * 2 / 3;
    this.mpTabuZone.add(new cargg.GenericRectangle_0(x_0 - xdiff, y_0 - ydiff, 2 * xdiff, 2 * ydiff));
  }
  if (!this.mIsValidatingView)
    this.drawString(str, x_0, y_0);
}
;
_.mpExchangeLineEnds = function mpExchangeLineEnds(theLine){
  var temp;
  temp = theLine.x1;
  theLine.x1 = theLine.x2;
  theLine.x2 = temp;
  temp = theLine.y1;
  theLine.y1 = theLine.y2;
  theLine.y2 = temp;
}
;
_.mpGetAngleESRScore = function mpGetAngleESRScore(angleList, index_0, meanAngle){
  var score;
  score = index_0 == 0?2 * 3.141592653589793 + angleList[0] - angleList[angleList.length - 1]:angleList[index_0] - angleList[index_0 - 1];
  if (meanAngle > -3.141592653589793 * 2 / 3 && meanAngle < 3.141592653589793 / 3)
    score -= 2 * $wnd.Math.cos(meanAngle + 3.141592653589793 / 6);
  else 
    score -= 0.5 * $wnd.Math.cos(meanAngle + 3.141592653589793 / 6);
  return score;
}
;
_.mpGetFrame = function mpGetFrame(theLine){
  var theFrame;
  theFrame = new cargg.GenericRectangle;
  if (theLine.x1 <= theLine.x2) {
    theFrame.x_0 = theLine.x1;
    theFrame.width_0 = theLine.x2 - theLine.x1;
  }
   else {
    theFrame.x_0 = theLine.x2;
    theFrame.width_0 = theLine.x1 - theLine.x2;
  }
  if (theLine.y1 <= theLine.y2) {
    theFrame.y_0 = theLine.y1;
    theFrame.height_0 = theLine.y2 - theLine.y1;
  }
   else {
    theFrame.y_0 = theLine.y2;
    theFrame.height_0 = theLine.y1 - theLine.y2;
  }
  return theFrame;
}
;
_.mpGetFreeSpaceAngle = function mpGetFreeSpaceAngle(atom){
  var angle, i, i0, maxMean, maxVal, mean, val;
  angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom), 15, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
    angle[i0] = this.mMol.getBondAngle_0(atom, this.mMol.getConnAtom_0(atom, i0));
  ju.sort_2(angle);
  maxMean = this.mpGetMeanAngle(angle, 0);
  maxVal = this.mpGetAngleESRScore(angle, 0, maxMean);
  for (i = 1; i < angle.length; i++) {
    mean = this.mpGetMeanAngle(angle, i);
    val = this.mpGetAngleESRScore(angle, i, mean);
    if (maxVal < val) {
      maxVal = val;
      maxMean = mean;
    }
  }
  return maxMean;
}
;
_.mpGetMeanAngle = function mpGetMeanAngle(angle, index_0){
  var mean;
  if (index_0 > 0)
    return (angle[index_0] + angle[index_0 - 1]) / 2;
  mean = 3.141592653589793 + (angle[0] + angle[angle.length - 1]) / 2;
  return mean > 3.141592653589793?mean - 2 * 3.141592653589793:mean;
}
;
_.mpHandleDashedLine = function mpHandleDashedLine(theLine, atm1, atm2){
  if (this.mpProperLine(theLine))
    this.drawDashedLine(theLine, atm1, atm2);
}
;
_.mpHandleDottedLine = function mpHandleDottedLine(theLine, atm1, atm2){
  if (this.mpProperLine(theLine))
    this.drawDottedLine(theLine);
}
;
_.mpHandleLine = function mpHandleLine(theLine, atm1, atm2){
  if (this.mpProperLine(theLine))
    this.drawLine(theLine, atm1, atm2);
}
;
_.mpHandleShortDashedLine = function mpHandleShortDashedLine(theLine, atm1, atm2){
  if (this.mpProperLine(theLine))
    this.drawShortDashedLine(theLine, atm1, atm2);
}
;
_.mpHandleWedge = function mpHandleWedge(origWedge, atm1, atm2){
  var i, tabuZone, theFrame, theWedge;
  theWedge = new carc2.AbstractDepictor$DepictorLine;
  if (origWedge.x1 == origWedge.x2 && origWedge.y1 == origWedge.y2)
    return;
  theWedge.x1 = origWedge.x1;
  theWedge.y1 = origWedge.y1;
  theWedge.x2 = origWedge.x2;
  theWedge.y2 = origWedge.y2;
  theFrame = this.mpGetFrame(theWedge);
  for (i = 0; i < this.mpTabuZone.size(); i++) {
    tabuZone = castTo(this.mpTabuZone.getAtIndex(i), 34);
    if (tabuZone.x_0 > theFrame.x_0 + theFrame.width_0 || tabuZone.y_0 > theFrame.y_0 + theFrame.height_0 || theFrame.x_0 > tabuZone.x_0 + tabuZone.width_0 || theFrame.y_0 > tabuZone.y_0 + tabuZone.height_0)
      continue;
    if (this.mpInTabuZone(theWedge.x1, theWedge.y1, i)) {
      if (this.mpInTabuZone(theWedge.x2, theWedge.y2, i))
        return;
      this.mpShortenLine(theWedge, 0, i);
      this.mpHandleWedge(theWedge, atm1, atm2);
      return;
    }
    if (this.mpInTabuZone(theWedge.x2, theWedge.y2, i)) {
      this.mpShortenLine(theWedge, 1, i);
      this.mpHandleWedge(theWedge, atm1, atm2);
      return;
    }
  }
  this.drawWedge(theWedge, atm1, atm2);
}
;
_.mpInTabuZone = function mpInTabuZone(x_0, y_0, tabuZoneNo){
  var tabuZone;
  if ((this.mDisplayMode & 1) != 0)
    return false;
  tabuZone = castTo(this.mpTabuZone.getAtIndex(tabuZoneNo), 34);
  return x_0 > tabuZone.x_0 && x_0 < tabuZone.x_0 + tabuZone.width_0 && y_0 > tabuZone.y_0 && y_0 < tabuZone.y_0 + tabuZone.height_0;
}
;
_.mpMakeCrossBond = function mpMakeCrossBond(aLine, bLine){
  var temp;
  temp = aLine.x2;
  aLine.x2 = bLine.x2;
  bLine.x2 = temp;
  temp = aLine.y2;
  aLine.y2 = bLine.y2;
  bLine.y2 = temp;
}
;
_.mpProperLine = function mpProperLine(theLine){
  var endsExchanged, i, retval, tabuZone, tabuZone$iterator, theFrame;
  if (theLine.x1 == theLine.x2 && theLine.y1 == theLine.y2) {
    for (tabuZone$iterator = this.mpTabuZone.iterator(); tabuZone$iterator.hasNext_0();) {
      tabuZone = castTo(tabuZone$iterator.next_3(), 34);
      if (tabuZone.contains_0(theLine.x1, theLine.y1))
        return false;
    }
    return true;
  }
  theFrame = this.mpGetFrame(theLine);
  endsExchanged = false;
  if (theLine.x1 > theLine.x2) {
    this.mpExchangeLineEnds(theLine);
    endsExchanged = true;
  }
  for (i = 0; i < this.mpTabuZone.size(); i++) {
    tabuZone = castTo(this.mpTabuZone.getAtIndex(i), 34);
    if (tabuZone.x_0 > theFrame.x_0 + theFrame.width_0 || tabuZone.y_0 > theFrame.y_0 + theFrame.height_0 || theFrame.x_0 > tabuZone.x_0 + tabuZone.width_0 || theFrame.y_0 > tabuZone.y_0 + tabuZone.height_0)
      continue;
    if (this.mpInTabuZone(theLine.x1, theLine.y1, i)) {
      if (this.mpInTabuZone(theLine.x2, theLine.y2, i)) {
        if (endsExchanged)
          this.mpExchangeLineEnds(theLine);
        return false;
      }
      this.mpShortenLine(theLine, 0, i);
      retval = this.mpProperLine(theLine);
      if (endsExchanged)
        this.mpExchangeLineEnds(theLine);
      return retval;
    }
    if (this.mpInTabuZone(theLine.x2, theLine.y2, i)) {
      this.mpShortenLine(theLine, 1, i);
      retval = this.mpProperLine(theLine);
      if (endsExchanged)
        this.mpExchangeLineEnds(theLine);
      return retval;
    }
  }
  if (endsExchanged)
    this.mpExchangeLineEnds(theLine);
  return true;
}
;
_.mpSetNormalLabelSize = function mpSetNormalLabelSize(){
  this.setTextSize(this.mpLabelSize);
}
;
_.mpSetReducedLabelSize = function mpSetReducedLabelSize(){
  this.setTextSize(narrow_int((this.mpLabelSize * 5 + 1) / 6));
}
;
_.mpSetSmallLabelSize = function mpSetSmallLabelSize(){
  this.setTextSize(narrow_int((this.mpLabelSize * 2 + 1) / 3));
}
;
_.mpShortenLine = function mpShortenLine(theLine, pointNo, tabuZoneNo){
  var dx, dy, sx, sy, tabuX, tabuY, tabuZone, x1, x2, y1, y2;
  if (pointNo == 0) {
    x1 = theLine.x1;
    y1 = theLine.y1;
    x2 = theLine.x2;
    y2 = theLine.y2;
  }
   else {
    x1 = theLine.x2;
    y1 = theLine.y2;
    x2 = theLine.x1;
    y2 = theLine.y1;
  }
  tabuZone = castTo(this.mpTabuZone.getAtIndex(tabuZoneNo), 34);
  tabuX = x2 > x1?tabuZone.x_0 + tabuZone.width_0:tabuZone.x_0;
  tabuY = y2 > y1?tabuZone.y_0 + tabuZone.height_0:tabuZone.y_0;
  dx = x2 - x1;
  dy = y2 - y1;
  if ($wnd.Math.abs(dx) > $wnd.Math.abs(dy)) {
    if (y1 == y2) {
      sx = tabuX;
      sy = y1;
    }
     else {
      sx = x1 + dx * (tabuY - y1) / dy;
      if (x2 > x1 == tabuX > sx) {
        sy = tabuY;
      }
       else {
        sx = tabuX;
        sy = y1 + dy * (tabuX - x1) / dx;
      }
    }
  }
   else {
    if (x1 == x2) {
      sx = x1;
      sy = tabuY;
    }
     else {
      sy = y1 + dy * (tabuX - x1) / dx;
      if (y2 > y1 == tabuY > sy) {
        sx = tabuX;
      }
       else {
        sx = x1 + dx * (tabuY - y1) / dy;
        sy = tabuY;
      }
    }
  }
  if (pointNo == 0) {
    theLine.x1 = sx;
    theLine.y1 = sy;
  }
   else {
    theLine.x2 = sx;
    theLine.y2 = sy;
  }
}
;
_.onDrawAtom = function onDrawAtom(atom, symbol, x_0, y_0){
}
;
_.onDrawBond = function onDrawBond(bond, x1, y1, x2, y2){
}
;
_.paint = function paint(context){
  var atom, esrGroupMemberCount, explicitAtomColors, i, rgb;
  if (this.mMol.getAllAtoms_0() == 0)
    return;
  this.mMol.ensureHelperArrays_0(this.requiredHelperArrays());
  this.mContext = context;
  this.calculateParameters();
  esrGroupMemberCount = this.mMol.getESRGroupMemberCounts();
  explicitAtomColors = false;
  this.mAtomColor = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    this.mAtomColor[atom] = this.mMol.getAtomColor_0(atom);
    if (this.mAtomColor[atom] != 0)
      explicitAtomColors = true;
    if (this.mMol.isSelectedAtom_0(atom))
      this.mAtomColor[atom] = 128;
    if (this.mMol.getStereoProblem_0(atom) && (this.mDisplayMode & 2048) == 0)
      this.mAtomColor[atom] = 256;
  }
  this.setColorCode(-10);
  if (jsNotEquals(this.mAtomHiliteColor, null) && this.mAtomHiliteColor.length >= this.mMol.getAtoms_0())
    this.hiliteAtomBackgrounds(this.mAtomHiliteColor, this.mAtomHiliteRadius);
  this.hiliteExcludeGroups();
  this.hiliteBondBackgrounds();
  this.indicateQueryFeatures();
  this.addChiralInfo();
  this.mpSetNormalLabelSize();
  this.setLineWidth(this.mpLineWidth);
  this.setColorCode(this.mStandardForegroundColor);
  this.markIsolatedAtoms();
  this.mpDot.clear();
  this.mpTabuZone.clear();
  if ((this.mDisplayMode & 1) != 0) {
    this.mpDrawAllBonds(esrGroupMemberCount);
    this.mpDrawAllDots();
    this.mpDrawBondQueryFeatures();
  }
  for (i = 0; i < this.mMol.getAllAtoms_0(); i++) {
    if (this.isHighlightedAtom(i)) {
      this.setColorCode(-3);
      this.mpDrawAtom(i, esrGroupMemberCount);
      this.setColorCode(this.mStandardForegroundColor);
    }
     else if (this.mAtomColor[i] != 0) {
      this.setColorCode(this.mAtomColor[i]);
      this.mpDrawAtom(i, esrGroupMemberCount);
      this.setColorCode(this.mStandardForegroundColor);
    }
     else if (!explicitAtomColors && this.mMol.getMoleculeColor_0() != 1 && this.mMol.getAtomicNo_0(i) != 1 && this.mMol.getAtomicNo_0(i) != 6 && (this.mDisplayMode & 1024) == 0 && jsEquals(this.mMol.getAtomList_0(i), null) && this.mMol.getAtomicNo_0(i) < carc2.ATOM_LABEL_COLOR.length && carc2.ATOM_LABEL_COLOR[this.mMol.getAtomicNo_0(i)] != 0) {
      rgb = carc2.ATOM_LABEL_COLOR[this.mMol.getAtomicNo_0(i)];
      this.setRGBColor(this.getContrastColor(rgb, i));
      this.mpDrawAtom(i, esrGroupMemberCount);
      this.setColorCode(this.mStandardForegroundColor);
    }
     else {
      this.mpDrawAtom(i, esrGroupMemberCount);
    }
  }
  if ((this.mDisplayMode & 1) == 0) {
    this.mpDrawAllDots();
    this.mpDrawBondQueryFeatures();
    this.mpDrawAllBonds(esrGroupMemberCount);
  }
}
;
_.requiredHelperArrays = function requiredHelperArrays(){
  return (this.mDisplayMode & 256) != 0?63:(this.mDisplayMode & 512) != 0?95:31;
}
;
_.setAtomText = function setAtomText(atomText){
  this.mAtomText = atomText;
}
;
_.setChiralTextLocation = function setChiralTextLocation(viewRect, avbl, mode){
  var spacing;
  spacing = avbl / 2;
  switch (mode & 786432) {
    case 786432:
      if (isNotNull(viewRect)) {
        this.mChiralTextLocation.x_0 = viewRect.x_0 + viewRect.width_0 / 2;
        this.mChiralTextLocation.y_0 = viewRect.y_0 + viewRect.height_0 - spacing;
        break;
      }

    case 0:
      this.mChiralTextLocation.x_0 = this.mBoundingRect.x_0 + this.mBoundingRect.width_0 / 2;
      this.mChiralTextLocation.y_0 = this.mBoundingRect.y_0 + this.mBoundingRect.height_0 + spacing;
      if (isNotNull(viewRect) && this.mChiralTextLocation.y_0 > viewRect.y_0 + viewRect.height_0 - spacing)
        this.mChiralTextLocation.y_0 = viewRect.y_0 + viewRect.height_0 - spacing;
      break;
    case 524288:
      if (isNotNull(viewRect)) {
        this.mChiralTextLocation.x_0 = viewRect.x_0 + viewRect.width_0 / 2;
        this.mChiralTextLocation.y_0 = viewRect.y_0 + spacing;
        break;
      }

    case 262144:
      this.mChiralTextLocation.x_0 = this.mBoundingRect.x_0 + this.mBoundingRect.width_0 / 2;
      this.mChiralTextLocation.y_0 = this.mBoundingRect.y_0 - spacing;
      if (isNotNull(viewRect) && this.mChiralTextLocation.y_0 < viewRect.y_0 + spacing)
        this.mChiralTextLocation.y_0 = viewRect.y_0 + spacing;
      break;
  }
}
;
_.setColorCode = function setColorCode(theColor){
  if (this.mIsValidatingView)
    return;
  if (theColor == -10) {
    this.mCurrentColor = -999;
    theColor = this.mStandardForegroundColor;
  }
  if (theColor != -2 && theColor != -7 && this.mOverruleForeground != 0)
    theColor = -4;
  if (theColor == this.mCurrentColor)
    return;
  if (this.mCurrentColor == -8 && theColor != -9)
    return;
  if (theColor == -8)
    this.mPreviousColor = this.mCurrentColor;
  if (theColor == -9)
    theColor = this.mPreviousColor;
  this.mCurrentColor = theColor;
  switch (theColor) {
    case 0:
      this.setRGB(this.mCustomForeground == 0?-16777216:this.mCustomForeground);
      break;
    case -6:
      this.setRGB(this.mCustomForeground);
      break;
    case -4:
      this.setRGB(this.mOverruleForeground);
      break;
    case -2:
      this.setRGB(this.mBondBGHiliteColor);
      break;
    case -3:
      this.setRGB(this.mBondFGHiliteColor);
      break;
    case -7:
      this.setRGB(this.mExcludeGroupBGColor);
      break;
    case -8:
      this.setRGB(this.mExcludeGroupFGColor);
      break;
    case -5:
      this.setRGB(this.mRGBColor);
      break;
    case 64:
      this.setRGB(-14655233);
      break;
    case 128:
      this.setRGB(-65536);
      break;
    case 256:
      this.setRGB(-4194049);
      break;
    case 192:
      this.setRGB(-16711936);
      break;
    case 320:
      this.setRGB(-24576);
      break;
    case 384:
      this.setRGB(-16744448);
      break;
    case 448:
      this.setRGB(-6291456);
      break;
    case 1:
      this.setRGB(-8355712);
      break;
    default:this.setRGB(-16777216);
      break;
  }
}
;
_.setDisplayMode = function setDisplayMode(displayMode){
  this.mDisplayMode = displayMode;
}
;
_.setFactorTextSize = function setFactorTextSize(factor){
  this.mFactorTextSize = factor;
}
;
_.setRGBColor = function setRGBColor(rgb){
  if (this.mOverruleForeground != 0) {
    if (this.mCurrentColor != -4) {
      this.mCurrentColor = -4;
      this.setRGB(this.mOverruleForeground);
    }
    return;
  }
  this.mCurrentColor = -5;
  this.mRGBColor = rgb;
  this.setRGB(rgb);
}
;
_.simpleCalculateBounds = function simpleCalculateBounds(){
  var i, maxx, maxy, minx, miny;
  minx = this.getAtomX_0(0);
  maxx = this.getAtomX_0(0);
  miny = this.getAtomY_0(0);
  maxy = this.getAtomY_0(0);
  for (i = 0; i < this.mMol.getAllAtoms_0(); i++) {
    if (minx > this.getAtomX_0(i))
      minx = this.getAtomX_0(i);
    if (maxx < this.getAtomX_0(i))
      maxx = this.getAtomX_0(i);
    if (miny > this.getAtomY_0(i))
      miny = this.getAtomY_0(i);
    if (maxy < this.getAtomY_0(i))
      maxy = this.getAtomY_0(i);
  }
  return new cargg.GenericRectangle_0(minx, miny, maxx - minx, maxy - miny);
}
;
_.simpleValidateView = function simpleValidateView(viewRect, mode){
  var avbl, t;
  if (this.mMol.getAllAtoms_0() == 0)
    return null;
  this.mBoundingRect = this.simpleCalculateBounds();
  avbl = this.mTransformation.getScaling() * this.mMol.getAverageBondLength_0();
  t = new carc2.DepictorTransformation_1(this.mBoundingRect, viewRect, avbl, mode);
  if (t.isVoidTransformation()) {
    t = null;
  }
   else {
    t.applyTo(this.mTransformation);
    t.applyTo_2(this.mBoundingRect);
  }
  this.setChiralTextLocation(viewRect, avbl, mode);
  return t;
}
;
_.updateBondHiliteColor = function updateBondHiliteColor(){
  var background;
  background = this.mOverruleBackground != 0?this.mOverruleBackground:this.mCustomBackground != 0?this.mCustomBackground:-1;
  this.mBondBGHiliteColor = caru.intermediateColor(background, -10706689, 0.30000001192092896);
  this.mBondFGHiliteColor = caru.getContrastColor_0(-32768, background);
  this.mExcludeGroupBGColor = -24321;
  this.mExcludeGroupFGColor = -6291392;
}
;
_.updateCoords = function updateCoords(context, viewRect, mode){
  var t;
  this.validateView(context, viewRect, mode);
  if (this.mTransformation.isVoidTransformation()) {
    return null;
  }
   else {
    t = this.mTransformation;
    this.mTransformation.applyTo_0(this.mMol);
    this.mTransformation = new carc2.DepictorTransformation;
    return t;
  }
}
;
_.validateView = function validateView(context, viewRect, mode){
  var avbl, i, t1, t2;
  if (this.mMol.getAllAtoms_0() == 0)
    return null;
  t1 = this.simpleValidateView(viewRect, mode);
  this.mMol.ensureHelperArrays_0(this.requiredHelperArrays());
  this.markIsolatedAtoms();
  this.mpDot.clear();
  this.mpTabuZone.clear();
  this.mContext = context;
  this.calculateParameters();
  this.mpSetNormalLabelSize();
  this.mIsValidatingView = true;
  for (i = 0; i < this.mMol.getAllAtoms_0(); i++)
    this.mpDrawAtom(i, null);
  this.mIsValidatingView = false;
  avbl = this.mTransformation.getScaling() * this.mMol.getAverageBondLength_0();
  this.expandBoundsByTabuZones(avbl);
  this.setChiralTextLocation(viewRect, avbl, mode);
  if (isNull(viewRect) || viewRect.contains_2(this.mBoundingRect))
    return t1;
  t2 = new carc2.DepictorTransformation_1(this.mBoundingRect, viewRect, avbl, mode);
  t2.applyTo(this.mTransformation);
  t2.applyTo_2(this.mBoundingRect);
  t2.applyTo_1(this.mChiralTextLocation);
  if (isNull(t1))
    return t2;
  t2.applyTo(t1);
  return t1;
}
;
_.mAtomLabelAVBL = 0;
_.mBondBGHiliteColor = 0;
_.mBondFGHiliteColor = 0;
_.mChiralTextSize = 0;
_.mCurrentColor = 0;
_.mCustomBackground = 0;
_.mCustomForeground = 0;
_.mDisplayMode = 0;
_.mExcludeGroupBGColor = 0;
_.mExcludeGroupFGColor = 0;
_.mFactorTextSize = 0;
_.mIsValidatingView = false;
_.mOverruleBackground = 0;
_.mOverruleForeground = 0;
_.mPreviousColor = 0;
_.mRGBColor = 0;
_.mStandardForegroundColor = 0;
_.mpBondHiliteRadius = 0;
_.mpBondSpacing = 0;
_.mpDotDiameter = 0;
_.mpExcludeGroupRadius = 0;
_.mpLabelSize = 0;
_.mpLineWidth = 0;
_.mpQFDiameter = 0;
carc2.BG_EXCLUDE_GROUP_COLOR = -24321;
carc2.BOND_BG_HILITE_COLOR = -10706689;
carc2.BOND_FG_HILITE_COLOR = -32768;
carc2.COLOR_BLUE = -14655233;
carc2.COLOR_CHIRALITY_TEXT = 448;
carc2.COLOR_CIP_LETTER = 448;
carc2.COLOR_CUSTOM_FOREGROUND = 0;
carc2.COLOR_DARK_GREEN = -16744448;
carc2.COLOR_DARK_RED = -6291456;
carc2.COLOR_EXCLUDE_GROUP_BG = 0;
carc2.COLOR_EXCLUDE_GROUP_FG = 0;
carc2.COLOR_GREEN = -16711936;
carc2.COLOR_HILITE_BOND_BG = 0;
carc2.COLOR_HILITE_BOND_FG = 0;
carc2.COLOR_INITIALIZE = 0;
carc2.COLOR_MAGENTA = -4194049;
carc2.COLOR_ORANGE = -24576;
carc2.COLOR_OVERRULED = 0;
carc2.COLOR_RED = -65536;
carc2.COLOR_RESTORE_PREVIOUS = 0;
carc2.COLOR_RGB = 0;
carc2.COLOR_SELECTED = 128;
carc2.COLOR_UNDEFINED = 0;
carc2.FG_EXCLUDE_GROUP_COLOR = -6291392;
carc2.cColorGray = 1;
carc2.cDModeAtomNo = 2;
carc2.cDModeBondNo = 4;
carc2.cDModeDrawBondsInGray = 16384;
carc2.cDModeHiliteAllQueryFeatures = 8;
carc2.cDModeNoColorOnESRAndCIP = 4096;
carc2.cDModeNoImplicitAtomLabelColors = 1024;
carc2.cDModeNoImplicitHydrogen = 8192;
carc2.cDModeNoStereoProblem = 2048;
carc2.cDModeNoTabus = 1;
carc2.cDModeShowMapping = 16;
carc2.cDModeShowSymmetryAny = 768;
carc2.cDModeShowSymmetrySimple = 256;
carc2.cDModeShowSymmetryStereoHeterotopicity = 512;
carc2.cDModeSuppressCIPParity = 64;
carc2.cDModeSuppressChiralText = 32;
carc2.cDModeSuppressESR = 128;
carc2.cFactorBondHiliteRadius = 0.38;
carc2.cFactorBondSpacing = 0.15;
carc2.cFactorChiralTextSize = 0.5;
carc2.cFactorDotDiameter = 0.12;
carc2.cFactorExcludeGroupRadius = 0.47;
carc2.cFactorLineWidth = 0.06;
carc2.cFactorQFDiameter = 0.4;
carc2.cFactorTextSize = 0.6;
carc2.cModeChiralTextAboveMolecule = 262144;
carc2.cModeChiralTextBelowMolecule = 0;
carc2.cModeChiralTextLocation = 786432;
carc2.cModeChiralTextOnFrameBottom = 786432;
carc2.cModeChiralTextOnFrameTop = 524288;
carc2.cModeInflateToAVBL = 196608;
carc2.cModeInflateToHighResAVBL = 131072;
carc2.cModeInflateToMaxAVBL = 65536;
carc2.cModeMaxBondLength = 65535;
carc2.cOptAvBondLen = 0;
cggl.Lcom_actelion_research_chem_AbstractDepictor_2_classLit = createForClass('com.actelion.research.chem', 'AbstractDepictor', 134, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AbstractDepictor$DepictorDot = function $clinit_AbstractDepictor$DepictorDot(){
  carc2.$clinit_AbstractDepictor$DepictorDot = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.AbstractDepictor$DepictorDot = function AbstractDepictor$DepictorDot(x_0, y_0, color_0){
  carc2.$clinit_AbstractDepictor$DepictorDot();
  Object_0.call(this);
  this.$init_2();
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.color_0 = color_0;
}
;
defineClass(270, 1, {270:1, 1:1}, carc2.AbstractDepictor$DepictorDot);
_.$init_2 = function $init_2(){
}
;
_.color_0 = 0;
_.x_0 = 0;
_.y_0 = 0;
cggl.Lcom_actelion_research_chem_AbstractDepictor$DepictorDot_2_classLit = createForClass('com.actelion.research.chem', 'AbstractDepictor/DepictorDot', 270, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AbstractDepictor$DepictorLine = function $clinit_AbstractDepictor$DepictorLine(){
  carc2.$clinit_AbstractDepictor$DepictorLine = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.AbstractDepictor$DepictorLine = function AbstractDepictor$DepictorLine(){
  carc2.$clinit_AbstractDepictor$DepictorLine();
  Object_0.call(this);
  this.$init_3();
}
;
defineClass(94, 1, {1:1}, carc2.AbstractDepictor$DepictorLine);
_.$init_3 = function $init_3(){
}
;
_.x1 = 0;
_.x2 = 0;
_.y1 = 0;
_.y2 = 0;
cggl.Lcom_actelion_research_chem_AbstractDepictor$DepictorLine_2_classLit = createForClass('com.actelion.research.chem', 'AbstractDepictor/DepictorLine', 94, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AbstractDrawingObject = function $clinit_AbstractDrawingObject(){
  carc2.$clinit_AbstractDrawingObject = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.AbstractDrawingObject = function AbstractDrawingObject(){
  carc2.$clinit_AbstractDrawingObject();
  Object_0.call(this);
  this.$init_4();
}
;
carc2.instantiate = function instantiate(descriptor){
  carc2.$clinit_AbstractDrawingObject();
  return carc2.createObject(descriptor);
}
;
defineClass(107, 1, {107:1, 1:1});
_.$init_4 = function $init_4(){
}
;
_.getDescriptor = function getDescriptor(){
  return '<DrawingObject' + ' type="' + this.getTypeString() + '"' + this.getDescriptorDetail() + '><\/DrawingObject>';
}
;
_.isSelected = function isSelected_0(){
  return this.mIsSelected;
}
;
_.move = function move(dx, dy){
  var i;
  if (jsNotEquals(this.mPoint, null)) {
    for (i = 0; i < this.mPoint.length; i++) {
      this.mPoint[i].x_0 += dx;
      this.mPoint[i].y_0 += dy;
    }
  }
}
;
_.setSelected = function setSelected(s){
  this.mIsSelected = s;
}
;
_.toString_0 = function toString_3(){
  var objectString;
  objectString = new jl.StringBuffer;
  objectString.append_2(this.getDescriptor());
  return objectString.toString_0();
}
;
_.translate_0 = function translate(x_0, y_0){
  var i;
  if (jsNotEquals(this.mPoint, null)) {
    for (i = 0; i < this.mPoint.length; i++) {
      this.mPoint[i].x_0 = this.mTransformationValue1[i] + x_0 - this.mTransformationReferenceX;
      this.mPoint[i].y_0 = this.mTransformationValue2[i] + y_0 - this.mTransformationReferenceY;
    }
  }
}
;
_.zoomAndRotateInit_0 = function zoomAndRotateInit(x_0, y_0){
  var dx, dy, i, pointCount;
  this.mTransformationReferenceX = x_0;
  this.mTransformationReferenceY = y_0;
  if (jsNotEquals(this.mPoint, null)) {
    pointCount = this.mPoint.length;
    this.mTransformationValue1 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, pointCount, 15, 1);
    this.mTransformationValue2 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, pointCount, 15, 1);
    for (i = 0; i < pointCount; i++) {
      dx = x_0 - this.mPoint[i].x_0;
      dy = y_0 - this.mPoint[i].y_0;
      this.mTransformationValue2[i] = $wnd.Math.sqrt(dx * dx + dy * dy);
      this.mTransformationValue1[i] = carc2.getAngle_0(x_0, y_0, this.mPoint[i].x_0, this.mPoint[i].y_0);
    }
  }
}
;
_.mIsSelected = false;
_.mTransformationReferenceX = 0;
_.mTransformationReferenceY = 0;
carc2.DESCRIPTOR_END = '><\/DrawingObject>';
carc2.DESCRIPTOR_START = '<DrawingObject';
carc2.DESCRIPTOR_TYPE = ' type="';
cggl.Lcom_actelion_research_chem_AbstractDrawingObject_2_classLit = createForClass('com.actelion.research.chem', 'AbstractDrawingObject', 107, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AromaticityResolver = function $clinit_AromaticityResolver(){
  carc2.$clinit_AromaticityResolver = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.AromaticityResolver = function AromaticityResolver(mol){
  carc2.$clinit_AromaticityResolver();
  Object_0.call(this);
  this.$init_5();
  this.mMol = mol;
}
;
defineClass(148, 1, {1:1}, carc2.AromaticityResolver);
_.$init_5 = function $init_5(){
}
;
_.addObviousAtomCharges = function addObviousAtomCharges(ringSet){
  var atom, atom$array, atom$array0, atom$array1, atom$index, atom$index0, atom$index1, atom$max, atom$max0, atom$max1, atom1, atom2, atomHandled, bond, bond$array, bond$index, bond$max, bond0, candidate, current, delocalizedNeighbourCount, delocalizedRingCount, graphAtom, hasMetalLigandBond, highest, i, i0, i1, isAromaticRingAtom, isDelocalized, isPossible, j, leakAtom, leakPriority, maxAtom, maxPriority, possible, priority, priority0, r, ring, ringSize, seedAtom, seedAtom0;
  isDelocalized = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1);
  delocalizedRingCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  for (r = 0; r < ringSet.getSize_0(); r++) {
    isDelocalized[r] = true;
    for (bond$array = ringSet.getRingBonds_0(r) , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
      bond0 = bond$array[bond$index];
      if (!this.mIsDelocalizedBond[bond0]) {
        isDelocalized[r] = false;
        break;
      }
    }
    if (isDelocalized[r])
      for (atom$array = ringSet.getRingAtoms_0(r) , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
        atom = atom$array[atom$index];
        delocalizedRingCount[atom]++;
      }
  }
  isAromaticRingAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (ring = 0; ring < ringSet.getSize_0(); ring++) {
    ringSize = ringSet.getRingSize_0(ring);
    if (ringSize == 3 || ringSize == 5 || ringSize == 6 || ringSize == 7) {
      if (isDelocalized[ring]) {
        for (atom$array0 = ringSet.getRingAtoms_0(ring) , atom$index0 = 0 , atom$max0 = atom$array0.length; atom$index0 < atom$max0; ++atom$index0) {
          atom = atom$array0[atom$index0];
          isAromaticRingAtom[atom] = true;
        }
        possible = true;
        leakAtom = -1;
        leakPriority = 0;
        for (atom$array1 = ringSet.getRingAtoms_0(ring) , atom$index1 = 0 , atom$max1 = atom$array1.length; atom$index1 < atom$max1; ++atom$index1) {
          atom = atom$array1[atom$index1];
          if (ringSize == 6 || delocalizedRingCount[atom] > 1) {
            if (!this.checkAtomTypePi1(atom, false)) {
              possible = false;
              break;
            }
          }
           else {
            priority0 = ringSize == 5?this.checkAtomTypeLeak5(atom, false):this.checkAtomTypeLeak7(atom, false);
            if (!this.checkAtomTypePi1(atom, false)) {
              if (leakPriority == 10) {
                possible = false;
                break;
              }
              leakAtom = atom;
              leakPriority = 20;
            }
             else if (leakPriority < priority0) {
              leakPriority = priority0;
              leakAtom = atom;
            }
          }
        }
        if (possible) {
          for (atom$array = ringSet.getRingAtoms_0(ring) , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
            atom = atom$array[atom$index];
            if (atom == leakAtom) {
              if (ringSize == 5)
                this.checkAtomTypeLeak5(atom, true);
              else 
                this.checkAtomTypeLeak7(atom, true);
              this.protectAtom(atom);
            }
             else {
              this.checkAtomTypePi1(atom, true);
            }
          }
        }
      }
    }
  }
  delocalizedNeighbourCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  hasMetalLigandBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    if (!isAromaticRingAtom[atom1] && !isAromaticRingAtom[atom2]) {
      if (this.mIsDelocalizedBond[bond]) {
        delocalizedNeighbourCount[atom1]++;
        delocalizedNeighbourCount[atom2]++;
      }
      if (this.mMol.getBondType_0(bond) == 32) {
        hasMetalLigandBond[atom1] = true;
        hasMetalLigandBond[atom2] = true;
      }
    }
  }
  priority = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  for (seedAtom0 = 0; seedAtom0 < this.mMol.getAtoms_0(); seedAtom0++) {
    if (delocalizedNeighbourCount[seedAtom0] == 1) {
      graphAtom[0] = seedAtom0;
      current = 0;
      highest = 0;
      while (current <= highest) {
        for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
          if (this.mIsDelocalizedBond[this.mMol.getConnBond_0(graphAtom[current], i)]) {
            candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
            if ((current == 0 || candidate != graphAtom[current - 1]) && delocalizedNeighbourCount[candidate] != 0) {
              graphAtom[++highest] = candidate;
              if ((delocalizedNeighbourCount[candidate] & 1) != 0) {
                for (j = 1; j < highest; j += 2)
                  priority[graphAtom[j]] = -1;
                highest = 0;
              }
              break;
            }
          }
        }
        current++;
      }
    }
  }
  atomHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (seedAtom = 0; seedAtom < this.mMol.getAtoms_0(); seedAtom++) {
    if (!atomHandled[seedAtom] && delocalizedNeighbourCount[seedAtom] != 0) {
      graphAtom[0] = seedAtom;
      atomHandled[seedAtom] = true;
      current = 0;
      highest = 0;
      while (current <= highest) {
        for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
          if (this.mIsDelocalizedBond[this.mMol.getConnBond_0(graphAtom[current], i)]) {
            candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
            if (!atomHandled[candidate]) {
              graphAtom[++highest] = candidate;
              atomHandled[candidate] = true;
            }
          }
        }
        current++;
      }
      if ((highest & 1) == 0) {
        for (i0 = 0; i0 <= highest; i0++)
          if (priority[graphAtom[i0]] == 0)
            priority[graphAtom[i0]] = this.checkAtomTypeLeakNonRing(graphAtom[i0], false);
        isPossible = true;
        for (i1 = 0; i1 <= highest; i1++) {
          if (priority[graphAtom[i1]] <= 0) {
            if (!this.checkAtomTypePi1(graphAtom[i1], false)) {
              isPossible = false;
              break;
            }
          }
        }
        if (isPossible) {
          maxPriority = 0;
          maxAtom = -1;
          for (i = 0; i <= highest; i++) {
            if (maxPriority < priority[graphAtom[i]]) {
              maxPriority = priority[graphAtom[i]];
              maxAtom = graphAtom[i];
            }
          }
          if (maxPriority > 0) {
            this.checkAtomTypeLeakNonRing(maxAtom, true);
            this.protectAtom(maxAtom);
          }
        }
      }
    }
  }
}
;
_.checkAtomTypeLeak5 = function checkAtomTypeLeak5(atom, correctCharge){
  if (this.mMol.getAtomicNo_0(atom) == 7) {
    if (this.mMol.getAllConnAtoms_0(atom) == 3)
      return 6;
    else if (this.mMol.getConnAtoms_0(atom) == 2)
      return 4;
  }
   else if (this.mMol.getAtomicNo_0(atom) == 8) {
    return 10;
  }
   else if (this.mMol.getAtomicNo_0(atom) == 15 || this.mMol.getAtomicNo_0(atom) == 33) {
    if (this.mMol.getConnAtoms_0(atom) == 3)
      return 8;
  }
   else if (this.mMol.getAtomicNo_0(atom) == 16 || this.mMol.getAtomicNo_0(atom) == 34 || this.mMol.getAtomicNo_0(atom) == 52) {
    if (this.mMol.getConnAtoms_0(atom) == 2)
      return 12;
  }
   else if (this.mMol.getAtomicNo_0(atom) == 6) {
    if (correctCharge)
      this.mMol.setAtomCharge_0(atom, -1);
    return this.mMol.getAllConnAtoms_0(atom) != this.mMol.getAllConnAtomsPlusMetalBonds_0(atom)?2:3;
  }
  return 0;
}
;
_.checkAtomTypeLeak7 = function checkAtomTypeLeak7(atom, correctCharge){
  if (this.mAllHydrogensAreExplicit) {
    if (this.mMol.getAllConnAtoms_0(atom) != 3)
      return 0;
  }
   else {
    if (this.mMol.getAllConnAtoms_0(atom) > 3)
      return 0;
  }
  if (this.mMol.getAtomicNo_0(atom) == 6) {
    if (correctCharge)
      this.mMol.setAtomCharge_0(atom, 1);
    return 2;
  }
  if (this.mMol.getAtomicNo_0(atom) == 5) {
    return 4;
  }
  return 0;
}
;
_.checkAtomTypeLeakNonRing = function checkAtomTypeLeakNonRing(atom, correctCharge){
  if (this.mMol.getAtomCharge_0(atom) != 0)
    return 0;
  if (this.mAllHydrogensAreExplicit) {
    if (this.mMol.getAtomicNo_0(atom) == 5) {
      if (this.mMol.getOccupiedValence_0(atom) != 2)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, 1);
      return 1;
    }
    if (this.mMol.getAtomicNo_0(atom) == 7) {
      if (this.mMol.getOccupiedValence_0(atom) != 2)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?6:3;
    }
    if (this.mMol.getAtomicNo_0(atom) == 8) {
      if (this.mMol.getOccupiedValence_0(atom) != 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?7:4;
    }
    if (this.mMol.getAtomicNo_0(atom) == 16) {
      if (this.mMol.getOccupiedValence_0(atom) != 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?5:2;
    }
    if (this.mMol.getAtomicNo_0(atom) == 34) {
      if (this.mMol.getOccupiedValence_0(atom) != 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?4:1;
    }
  }
   else {
    if (this.mMol.getAtomicNo_0(atom) == 5) {
      if (this.mMol.getOccupiedValence_0(atom) > 2)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, 1);
      return 1;
    }
    if (this.mMol.getAtomicNo_0(atom) == 7) {
      if (this.mMol.getOccupiedValence_0(atom) > 2)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?5:3;
    }
    if (this.mMol.getAtomicNo_0(atom) == 8) {
      if (this.mMol.getOccupiedValence_0(atom) > 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?7:4;
    }
    if (this.mMol.getAtomicNo_0(atom) == 16) {
      if (this.mMol.getOccupiedValence_0(atom) > 1)
        return 0;
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, -1);
      return this.hasMetalNeighbour(atom)?5:2;
    }
  }
  return 0;
}
;
_.checkAtomTypePi1 = function checkAtomTypePi1(atom, correctCharge){
  var atomicNo, charge, freeValence;
  atomicNo = this.mMol.getAtomicNo_0(atom);
  if (atomicNo >= 5 && atomicNo <= 8 || atomicNo == 15 || atomicNo == 16 || atomicNo == 33 || atomicNo == 34 || atomicNo == 52) {
    freeValence = this.mMol.getLowestFreeValence_0(atom);
    if (freeValence != 0)
      return true;
    charge = this.mMol.getAtomCharge_0(atom);
    if (atomicNo == 5 && charge >= 0) {
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, charge - 1);
      return true;
    }
    if (atomicNo != 5 && charge <= 0) {
      if (correctCharge)
        this.mMol.setAtomCharge_0(atom, charge + 1);
      return true;
    }
  }
  return false;
}
;
_.getNextOuterDelocalizedConnIndex = function getNextOuterDelocalizedConnIndex(atom, previousAtom, sharedDelocalizedRingCount){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (sharedDelocalizedRingCount[this.mMol.getConnBond_0(atom, i)] == 1 && this.mMol.getConnAtom_0(atom, i) != previousAtom)
      return i;
  return -1;
}
;
_.hasMetalNeighbour = function hasMetalNeighbour(atom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mMol.isMetalAtom_0(this.mMol.getConnAtom_0(atom, i)))
      return true;
  return false;
}
;
_.hasSharedDelocalizedBond = function hasSharedDelocalizedBond(atom, sharedDelocalizedRingCount){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (sharedDelocalizedRingCount[this.mMol.getConnBond_0(atom, i)] > 1)
      return true;
  return false;
}
;
_.isAromaticAtom_0 = function isAromaticAtom_0(atom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mIsDelocalizedBond[this.mMol.getConnBond_0(atom, i)])
      return true;
  return false;
}
;
_.locateDelocalizedDoubleBonds = function locateDelocalizedDoubleBonds(isAromaticBond){
  return this.locateDelocalizedDoubleBonds_0(isAromaticBond, false, false);
}
;
_.locateDelocalizedDoubleBonds_0 = function locateDelocalizedDoubleBonds_0(isAromaticBond, mayChangeAtomCharges, allHydrogensAreExplicit){
  var bond, bond0, bond1, bondsPromoted, i, i0, isAromaticRing, ring, ringBond, ringSet;
  this.mMol.ensureHelperArrays_0(1);
  if (jsNotEquals(isAromaticBond, null)) {
    this.mIsDelocalizedBond = isAromaticBond;
  }
   else {
    this.mIsDelocalizedBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
    for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
      if (this.mMol.getBondType_0(bond0) == 64) {
        this.mIsDelocalizedBond[bond0] = true;
        this.mMol.setBondType_0(bond0, 1);
      }
    }
  }
  this.mPiElectronsAdded = 0;
  this.mIsDelocalizedAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++) {
    if (this.mIsDelocalizedBond[bond1]) {
      this.mAromaticBonds++;
      for (i = 0; i < 2; i++) {
        if (!this.mIsDelocalizedAtom[this.mMol.getBondAtom_0(i, bond1)]) {
          this.mIsDelocalizedAtom[this.mMol.getBondAtom_0(i, bond1)] = true;
          this.mAromaticAtoms++;
        }
      }
    }
  }
  if (this.mAromaticBonds == 0)
    return true;
  this.mAllHydrogensAreExplicit = allHydrogensAreExplicit;
  this.protectFullValenceAtoms(mayChangeAtomCharges);
  if (this.mMol.isFragment_0())
    this.promoteDelocalizedChains();
  ringSet = new carc2.RingCollection(this.mMol, 1);
  if (mayChangeAtomCharges)
    this.addObviousAtomCharges(ringSet);
  this.protectObviousDelocalizationLeaks(ringSet);
  this.protectAmideBonds(ringSet);
  this.protectDoubleBondAtoms();
  this.promoteObviousBonds();
  while (this.promoteOuterShellDelocalizedRingSystems(ringSet))
    this.promoteObviousBonds();
  while (this.mAromaticBonds != 0) {
    bondsPromoted = false;
    if (!bondsPromoted) {
      for (ring = 0; ring < ringSet.getSize_0(); ring++) {
        if (ringSet.getRingSize_0(ring) == 6) {
          isAromaticRing = true;
          ringBond = ringSet.getRingBonds_0(ring);
          for (i0 = 0; i0 < 6; i0++) {
            if (!this.mIsDelocalizedBond[ringBond[i0]]) {
              isAromaticRing = false;
              break;
            }
          }
          if (isAromaticRing) {
            for (i = 0; i < 6; i += 2)
              this.promoteBond(ringBond[i]);
            bondsPromoted = true;
            break;
          }
        }
      }
    }
    if (!bondsPromoted) {
      for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
        if (this.mIsDelocalizedBond[bond]) {
          this.promoteBond(bond);
          this.promoteObviousBonds();
          bondsPromoted = true;
          break;
        }
      }
    }
  }
  return this.mAromaticAtoms == this.mPiElectronsAdded;
}
;
_.promoteBond = function promoteBond(bond){
  var bondAtom, connBond, i, j;
  if (this.mMol.getBondType_0(bond) == 1) {
    this.mMol.setBondType_0(bond, 2);
    this.mPiElectronsAdded += 2;
  }
  for (i = 0; i < 2; i++) {
    bondAtom = this.mMol.getBondAtom_0(i, bond);
    this.mIsDelocalizedAtom[bondAtom] = false;
    for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++) {
      connBond = this.mMol.getConnBond_0(bondAtom, j);
      if (this.mIsDelocalizedBond[connBond]) {
        this.mIsDelocalizedBond[connBond] = false;
        this.mAromaticBonds--;
      }
    }
  }
}
;
_.promoteDelocalizedChains = function promoteDelocalizedChains(){
  var aromaticNeighbourFound, bond, bridgeAtom, i, j, j0, terminalAtom, terminalBond;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mIsDelocalizedBond[bond]) {
      for (i = 0; i < 2; i++) {
        terminalAtom = this.mMol.getBondAtom_0(i, bond);
        aromaticNeighbourFound = false;
        for (j0 = 0; j0 < this.mMol.getConnAtoms_0(terminalAtom); j0++) {
          if (bond != this.mMol.getConnBond_0(terminalAtom, j0) && this.mIsDelocalizedBond[this.mMol.getConnBond_0(terminalAtom, j0)]) {
            aromaticNeighbourFound = true;
            break;
          }
        }
        if (!aromaticNeighbourFound) {
          terminalBond = bond;
          bridgeAtom = this.mMol.getBondAtom_0(1 - i, bond);
          while (terminalBond != -1) {
            this.mIsDelocalizedBond[terminalBond] = false;
            this.mAromaticBonds--;
            this.mMol.setBondType_0(terminalBond, 64);
            terminalBond = -1;
            terminalAtom = bridgeAtom;
            for (j = 0; j < this.mMol.getConnAtoms_0(terminalAtom); j++) {
              if (this.mIsDelocalizedBond[this.mMol.getConnBond_0(terminalAtom, j)]) {
                if (terminalBond == -1) {
                  terminalBond = this.mMol.getConnBond_0(terminalAtom, j);
                  bridgeAtom = this.mMol.getConnAtom_0(terminalAtom, j);
                }
                 else {
                  terminalAtom = -1;
                  terminalBond = -1;
                  break;
                }
              }
            }
          }
          break;
        }
      }
    }
  }
}
;
_.promoteObviousBonds = function promoteObviousBonds(){
  var aromaticNeighbourFound, bond, bondAtom, i, isTerminalAromaticBond, j, terminalAromaticBondFound;
  do {
    terminalAromaticBondFound = false;
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mIsDelocalizedBond[bond]) {
        isTerminalAromaticBond = false;
        for (i = 0; i < 2; i++) {
          bondAtom = this.mMol.getBondAtom_0(i, bond);
          aromaticNeighbourFound = false;
          for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++) {
            if (bond != this.mMol.getConnBond_0(bondAtom, j) && this.mIsDelocalizedBond[this.mMol.getConnBond_0(bondAtom, j)]) {
              aromaticNeighbourFound = true;
              break;
            }
          }
          if (!aromaticNeighbourFound) {
            isTerminalAromaticBond = true;
            break;
          }
        }
        if (isTerminalAromaticBond) {
          terminalAromaticBondFound = true;
          this.promoteBond(bond);
        }
      }
    }
  }
   while (terminalAromaticBondFound);
}
;
_.promoteOuterShellDelocalizedRingSystems = function promoteOuterShellDelocalizedRingSystems(ringSet){
  var atom1, atom2, atom3, bond, bond2to3, connIndex, delocalizedBonds, i, i0, isDelocalized, r, ringBond, sharedDelocalizedRingCount;
  sharedDelocalizedRingCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (r = 0; r < ringSet.getSize_0(); r++) {
    ringBond = ringSet.getRingBonds_0(r);
    isDelocalized = true;
    for (i0 = 0; i0 < ringBond.length; i0++) {
      if (!this.mIsDelocalizedBond[ringBond[i0]]) {
        isDelocalized = false;
        break;
      }
    }
    if (isDelocalized)
      for (i = 0; i < ringBond.length; i++)
        sharedDelocalizedRingCount[ringBond[i]]++;
  }
  delocalizedBonds = this.mAromaticBonds;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (sharedDelocalizedRingCount[bond] == 1) {
      for (i = 0; i < 2 && this.mIsDelocalizedBond[bond]; i++) {
        atom1 = this.mMol.getBondAtom_0(i, bond);
        atom2 = this.mMol.getBondAtom_0(1 - i, bond);
        if (this.hasSharedDelocalizedBond(atom1, sharedDelocalizedRingCount) && !this.hasSharedDelocalizedBond(atom2, sharedDelocalizedRingCount)) {
          while (-1 != (connIndex = this.getNextOuterDelocalizedConnIndex(atom2, atom1, sharedDelocalizedRingCount))) {
            atom3 = this.mMol.getConnAtom_0(atom2, connIndex);
            bond2to3 = this.mMol.getConnBond_0(atom2, connIndex);
            if (!this.mIsDelocalizedBond[bond2to3])
              break;
            this.promoteBond(bond2to3);
            connIndex = this.getNextOuterDelocalizedConnIndex(atom3, atom2, sharedDelocalizedRingCount);
            if (connIndex == -1)
              break;
            atom1 = atom3;
            atom2 = this.mMol.getConnAtom_0(atom3, connIndex);
          }
        }
      }
    }
  }
  return delocalizedBonds != this.mAromaticBonds;
}
;
_.protectAmideBonds = function protectAmideBonds(ringSet){
  var bond;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mIsDelocalizedBond[bond] && ringSet.qualifiesAsAmideTypeBond_0(bond)) {
      this.protectAtom(this.mMol.getBondAtom_0(0, bond));
      this.protectAtom(this.mMol.getBondAtom_0(1, bond));
    }
  }
}
;
_.protectAtom = function protectAtom(atom){
  var connBond, i;
  if (this.mIsDelocalizedAtom[atom]) {
    this.mIsDelocalizedAtom[atom] = false;
    this.mAromaticAtoms--;
  }
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    connBond = this.mMol.getConnBond_0(atom, i);
    if (this.mIsDelocalizedBond[connBond]) {
      this.mIsDelocalizedBond[connBond] = false;
      this.mAromaticBonds--;
    }
  }
}
;
_.protectDoubleBondAtoms = function protectDoubleBondAtoms(){
  var atom, bond, connBond, i, j;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mMol.getBondOrder_0(bond) == 2) {
      for (i = 0; i < 2; i++) {
        atom = this.mMol.getBondAtom_0(i, bond);
        if (this.mMol.getAtomicNo_0(atom) <= 8) {
          for (j = 0; j < this.mMol.getConnAtoms_0(atom); j++) {
            connBond = this.mMol.getConnBond_0(atom, j);
            if (this.mIsDelocalizedBond[connBond]) {
              this.protectAtom(atom);
              break;
            }
          }
        }
      }
    }
  }
}
;
_.protectFullValenceAtoms = function protectFullValenceAtoms(mayChangeAtomCharges){
  var atom;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (this.mIsDelocalizedAtom[atom] && this.mMol.getLowestFreeValence_0(atom) == 0 && (!mayChangeAtomCharges || this.mMol.getAtomicNo_0(atom) == 5 && this.mMol.getAtomCharge_0(atom) < 0 || (this.mMol.getAtomicNo_0(atom) == 6 || this.mMol.getAtomicNo_0(atom) == 14) || this.mMol.isElectronegative_0(atom) && this.mMol.getAtomCharge_0(atom) > 0))
      this.protectAtom(atom);
}
;
_.protectObviousDelocalizationLeaks = function protectObviousDelocalizationLeaks(ringSet){
  var atom, i, i0, isDelocalized, negativeCarbon, negativeCarbonPriority, priority, r, r0, ringAtom, ringBond, ringSize;
  for (r0 = 0; r0 < ringSet.getSize_0(); r0++) {
    ringSize = ringSet.getRingSize_0(r0);
    if (ringSize == 3 || ringSize == 5 || ringSize == 7) {
      ringAtom = ringSet.getRingAtoms_0(r0);
      for (i = 0; i < ringSize; i++) {
        atom = ringAtom[i];
        if (this.isAromaticAtom_0(atom)) {
          if (ringSize == 5) {
            if (this.mMol.getAtomicNo_0(atom) == 6 && this.mMol.getAtomCharge_0(atom) == -1 && this.mMol.getAllConnAtoms_0(atom) == 3 || this.mMol.getAtomicNo_0(atom) == 7 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getAllConnAtoms_0(atom) == 3 || this.mMol.getAtomicNo_0(atom) == 8 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getConnAtoms_0(atom) == 2 || this.mMol.getAtomicNo_0(atom) == 16 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getConnAtoms_0(atom) == 2 || this.mMol.getAtomicNo_0(atom) == 34 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getConnAtoms_0(atom) == 2)
              this.protectAtom(atom);
          }
           else {
            if (this.mMol.getAtomicNo_0(atom) == 5 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getAllConnAtoms_0(atom) == 3 || this.mMol.getAtomicNo_0(atom) == 6 && this.mMol.getAtomCharge_0(atom) == 1)
              this.protectAtom(atom);
          }
        }
      }
    }
  }
  for (r = 0; r < ringSet.getSize_0(); r++) {
    if (ringSet.getRingSize_0(r) == 5) {
      ringBond = ringSet.getRingBonds_0(r);
      isDelocalized = true;
      for (i0 = 0; i0 < ringBond.length; i0++) {
        if (!this.mIsDelocalizedBond[ringBond[i0]]) {
          isDelocalized = false;
          break;
        }
      }
      if (isDelocalized) {
        ringAtom = ringSet.getRingAtoms_0(r);
        negativeCarbonPriority = 0;
        negativeCarbon = -1;
        for (i = 0; i < ringBond.length; i++) {
          if (this.mMol.getAtomCharge_0(ringAtom[i]) == -1 && this.mMol.getAtomicNo_0(ringAtom[i]) == 6) {
            priority = this.mMol.getAllConnAtoms_0(ringAtom[i]) == 3?3:this.mMol.getAllConnAtomsPlusMetalBonds_0(ringAtom[i]) == 3?2:1;
            if (negativeCarbonPriority < priority) {
              negativeCarbonPriority = priority;
              negativeCarbon = ringAtom[i];
            }
          }
        }
        if (negativeCarbon != -1)
          this.protectAtom(negativeCarbon);
      }
    }
  }
}
;
_.mAllHydrogensAreExplicit = false;
_.mAromaticAtoms = 0;
_.mAromaticBonds = 0;
_.mPiElectronsAdded = 0;
cggl.Lcom_actelion_research_chem_AromaticityResolver_2_classLit = createForClass('com.actelion.research.chem', 'AromaticityResolver', 148, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AtomFunctionAnalyzer = function $clinit_AtomFunctionAnalyzer(){
  carc2.$clinit_AtomFunctionAnalyzer = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.getFakeOxoCount = function getFakeOxoCount(mol, atom){
  var count, i;
  count = 0;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++)
    if (mol.getConnBondOrder_0(atom, i) == 2 && (mol.getAtomicNo_0(mol.getConnAtom_0(atom, i)) == 7 || mol.getAtomicNo_0(mol.getConnAtom_0(atom, i)) == 8 || mol.getAtomicNo_0(mol.getConnAtom_0(atom, i)) == 16))
      count++;
  return count;
}
;
carc2.hasUnbalancedAtomCharge = function hasUnbalancedAtomCharge(mol, atom){
  carc2.$clinit_AtomFunctionAnalyzer();
  var chargeCenterAtom, i, indexAtom, nConnected, sumChargeConnectedAtoms, unbalanced;
  if (mol.getAtomCharge_0(atom) == 0) {
    return false;
  }
  unbalanced = true;
  chargeCenterAtom = mol.getAtomCharge_0(atom);
  nConnected = mol.getConnAtoms_0(atom);
  sumChargeConnectedAtoms = 0;
  for (i = 0; i < nConnected; i++) {
    indexAtom = mol.getConnAtom_0(atom, i);
    sumChargeConnectedAtoms += mol.getAtomCharge_0(indexAtom);
  }
  if ($wnd.Math.abs(chargeCenterAtom) <= $wnd.Math.abs(sumChargeConnectedAtoms)) {
    if (jl.signum_2(chargeCenterAtom) != jl.signum_2(sumChargeConnectedAtoms)) {
      unbalanced = false;
    }
  }
  return unbalanced;
}
;
carc2.isAcidicOxygen = function isAcidicOxygen(mol, atom){
  carc2.$clinit_AtomFunctionAnalyzer();
  var connAtom, i, indexAtom, indexBond, nConnected2C, nConnected2S, nDoubleBondedO2S;
  if (mol.getAtomicNo_0(atom) != 8 || mol.getAtomCharge_0(atom) != 0 || mol.getConnAtoms_0(atom) != 1 || mol.getConnBondOrder_0(atom, 0) != 1)
    return false;
  connAtom = mol.getConnAtom_0(atom, 0);
  if (mol.getAtomicNo_0(connAtom) == 6) {
    nConnected2C = mol.getConnAtoms_0(connAtom);
    for (i = 0; i < nConnected2C; i++) {
      indexAtom = mol.getConnAtom_0(connAtom, i);
      if (indexAtom == atom) {
        continue;
      }
      if (mol.getAtomicNo_0(indexAtom) != 8) {
        continue;
      }
      indexBond = mol.getBond_0(connAtom, indexAtom);
      if (mol.getBondType_0(indexBond) == 2)
        return true;
    }
  }
   else if (mol.getAtomicNo_0(connAtom) == 7) {
    if (mol.getAtomCharge_0(connAtom) == 1)
      return true;
  }
   else if (mol.getAtomicNo_0(connAtom) == 16) {
    nConnected2S = mol.getConnAtoms_0(connAtom);
    nDoubleBondedO2S = 0;
    for (i = 0; i < nConnected2S; i++) {
      indexAtom = mol.getConnAtom_0(connAtom, i);
      if (indexAtom == atom)
        continue;
      if (mol.getAtomicNo_0(indexAtom) != 8)
        continue;
      indexBond = mol.getBond_0(connAtom, indexAtom);
      if (mol.getBondType_0(indexBond) == 2)
        nDoubleBondedO2S++;
    }
    if (nDoubleBondedO2S == 2)
      return true;
  }
   else if (carc2.isAcidicOxygenAtPhosphoricAcid(mol, atom))
    return true;
  return false;
}
;
carc2.isAcidicOxygenAtPhosphoricAcid = function isAcidicOxygenAtPhosphoricAcid(mol, atom){
  var connAtom, i, indexAtom, indexBond, nConnected2P;
  if (mol.getAtomicNo_0(atom) != 8)
    return false;
  if (mol.getConnAtoms_0(atom) != 1)
    return false;
  connAtom = mol.getConnAtom_0(atom, 0);
  if (mol.getAtomicNo_0(connAtom) == 15) {
    nConnected2P = mol.getConnAtoms_0(connAtom);
    for (i = 0; i < nConnected2P; i++) {
      indexAtom = mol.getConnAtom_0(connAtom, i);
      if (indexAtom == atom)
        continue;
      if (mol.getAtomicNo_0(indexAtom) != 8)
        continue;
      indexBond = mol.getBond_0(connAtom, indexAtom);
      if (mol.getBondType_0(indexBond) == 2)
        return true;
    }
  }
  return false;
}
;
carc2.isBasicNitrogen = function isBasicNitrogen(mol, atom){
  carc2.$clinit_AtomFunctionAnalyzer();
  var aromaticNeighborCount, conn, enablerCount, exoCyclicAtom, exoCyclicBond, i, i0, i1, i2, i3, imineC, j, j0, mi, nIndex, opi, r, ratom, rc, ring, s, supporterCount;
  if (mol.getAtomicNo_0(atom) != 7 || mol.getAtomCharge_0(atom) != 0 || mol.getConnAtoms_0(atom) + mol.getAtomPi_0(atom) > 3)
    return false;
  if (mol.isAromaticAtom_1(atom)) {
    if (mol.getAtomPi_0(atom) != 1)
      return false;
    if (mol.getAtomRingCount_0(atom, 7) != 1)
      return false;
    rc = mol.getRingSet_0();
    for (r = 0; r < rc.getSize_0(); r++) {
      if (rc.isAtomMember_0(r, atom)) {
        if (rc.getRingSize_0(r) == 5 || rc.getRingSize_0(r) == 6) {
          ring = rc.getRingAtoms_0(r);
          nIndex = -1;
          for (i0 = 0; i0 < ring.length; i0++) {
            if (ring[i0] == atom) {
              nIndex = i0;
              break;
            }
          }
          enablerCount = 0;
          opi = null;
          mi = null;
          if (ring.length == 5) {
            opi = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
            opi[0] = ring[nIndex - 1 < 0?nIndex + 4:nIndex - 1];
            opi[1] = ring[nIndex - 4 < 0?nIndex + 1:nIndex - 4];
            mi = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
            mi[0] = ring[nIndex - 2 < 0?nIndex + 3:nIndex - 2];
            mi[1] = ring[nIndex - 3 < 0?nIndex + 2:nIndex - 3];
          }
          if (ring.length == 6) {
            opi = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 3, 15, 1);
            opi[0] = ring[nIndex - 1 < 0?nIndex + 5:nIndex - 1];
            opi[1] = ring[nIndex - 3 < 0?nIndex + 3:nIndex - 3];
            opi[2] = ring[nIndex - 5 < 0?nIndex + 1:nIndex - 5];
            mi = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
            mi[0] = ring[nIndex - 2 < 0?nIndex + 4:nIndex - 2];
            mi[1] = ring[nIndex - 4 < 0?nIndex + 2:nIndex - 4];
          }
          for (i1 = 0; i1 < ring.length; i1++)
            if (atom != ring[i1] && mol.getAtomicNo_0(ring[i1]) == 7 && mol.getAtomPi_0(ring[i1]) == 1)
              enablerCount--;
          for (i2 = 0; i2 < opi.length; i2++) {
            exoCyclicAtom = -1;
            exoCyclicBond = -1;
            for (j0 = 0; j0 < mol.getConnAtoms_0(opi[i2]); j0++) {
              if (!mol.isAromaticBond_0(mol.getConnBond_0(opi[i2], j0))) {
                exoCyclicAtom = mol.getConnAtom_0(opi[i2], j0);
                exoCyclicBond = mol.getConnBond_0(opi[i2], j0);
                break;
              }
            }
            if (exoCyclicAtom != -1) {
              if (mol.getAtomicNo_0(exoCyclicAtom) == 7 && mol.getAtomPi_0(exoCyclicAtom) == 0 && mol.getConnAtoms_0(exoCyclicAtom) + mol.getAtomPi_0(exoCyclicAtom) <= 3 && !carc2.isStabilized_0(mol, exoCyclicAtom, false)) {
                enablerCount++;
                continue;
              }
              if (mol.getAtomicNo_0(exoCyclicAtom) == 8 && mol.getConnAtoms_0(exoCyclicAtom) == 1) {
                enablerCount += 2;
                continue;
              }
              if (mol.isAromaticBond_0(exoCyclicBond)) {
                for (s = 0; s < rc.getSize_0(); s++) {
                  if (rc.isAromatic_0(s) && rc.isAtomMember_0(s, exoCyclicAtom)) {
                    ratom = rc.getRingAtoms_0(s);
                    for (j = 0; j < ratom.length; j++) {
                      if (mol.getAtomicNo_0(ratom[j]) == 7 && mol.getAtomPi_0(ratom[j]) == 1) {
                        enablerCount--;
                        break;
                      }
                    }
                    break;
                  }
                }
              }
            }
          }
          for (i3 = 0; i3 < mi.length; i3++) {
            exoCyclicAtom = -1;
            for (j = 0; j < mol.getConnAtoms_0(mi[i3]); j++)
              if (!mol.isAromaticBond_0(mol.getConnBond_0(mi[i3], j)))
                exoCyclicAtom = mol.getConnAtom_0(mi[i3], j);
            if (mol.getAtomicNo_0(mi[i3]) == 6) {
              if (exoCyclicAtom != -1 && carc2.getFakeOxoCount(mol, exoCyclicAtom) != 0)
                enablerCount--;
            }
             else if (mol.getAtomicNo_0(mi[i3]) == 7) {
              if (mol.getAtomPi_0(mi[i3]) == 0 && (exoCyclicAtom == -1 || !mol.isAromaticAtom_1(exoCyclicAtom) && carc2.getFakeOxoCount(mol, exoCyclicAtom) == 0))
                enablerCount++;
            }
          }
          return enablerCount > 0;
        }
        break;
      }
    }
    return false;
  }
  if (mol.getAtomPi_0(atom) > 1)
    return false;
  if (mol.getAtomPi_0(atom) == 1) {
    imineC = -1;
    supporterCount = 0;
    for (i0 = 0; i0 < mol.getConnAtoms_0(atom); i0++) {
      conn = mol.getConnAtom_0(atom, i0);
      if (mol.getConnBondOrder_0(atom, i0) == 2) {
        if (mol.getAtomicNo_0(conn) != 6)
          return false;
        imineC = conn;
        continue;
      }
      if (mol.getAtomicNo_0(conn) == 8)
        return false;
      if (mol.getAtomicNo_0(conn) == 7) {
        supporterCount--;
        if (carc2.isStabilized_0(mol, conn, false))
          supporterCount--;
        continue;
      }
      if (mol.isAromaticAtom_1(conn))
        supporterCount--;
    }
    if (imineC == -1)
      return false;
    aromaticNeighborCount = 0;
    for (i1 = 0; i1 < mol.getConnAtoms_0(imineC); i1++) {
      if (mol.getConnBondOrder_0(imineC, i1) == 1) {
        conn = mol.getConnAtom_0(imineC, i1);
        if (carc2.getFakeOxoCount(mol, conn) != 0)
          return false;
        if (mol.isAromaticAtom_1(conn))
          aromaticNeighborCount++;
        if (mol.getAtomicNo_0(conn) == 7 && !carc2.isStabilized_0(mol, conn, true))
          supporterCount++;
        if (mol.getAtomicNo_0(conn) == 8 || mol.getAtomicNo_0(conn) == 16)
          supporterCount--;
      }
    }
    if (aromaticNeighborCount == 2)
      supporterCount--;
    return supporterCount >= 0;
  }
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    conn = mol.getConnAtom_0(atom, i);
    if (mol.isAromaticAtom_1(conn))
      return false;
    if (mol.getAtomicNo_0(conn) != 6)
      return false;
    if (carc2.getFakeOxoCount(mol, conn) != 0)
      return false;
    if (mol.getAtomPi_0(conn) != 0 && carc2.isVinylogFakeOxo(mol, conn))
      return false;
  }
  return true;
}
;
carc2.isStabilized_0 = function isStabilized_0(mol, atom, twice){
  var aleadyFound, conn, i;
  aleadyFound = false;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    if (!mol.isAromaticBond_0(mol.getConnBond_0(atom, i)) && mol.getConnBondOrder_0(atom, i) == 1) {
      conn = mol.getConnAtom_0(atom, i);
      if (!mol.isAromaticAtom_1(conn) && (mol.getAtomicNo_0(conn) == 6 && carc2.getFakeOxoCount(mol, conn) == 1 || mol.getAtomicNo_0(conn) == 16 && carc2.getFakeOxoCount(mol, conn) == 2)) {
        if (aleadyFound || !twice)
          return true;
        aleadyFound = true;
      }
    }
  }
  return false;
}
;
carc2.isVinylogFakeOxo = function isVinylogFakeOxo(mol, atom){
  var conn, i, j;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    if (mol.getConnBondOrder_0(atom, i) != 1) {
      conn = mol.getConnAtom_0(atom, i);
      for (j = 0; j < mol.getConnAtoms_0(conn); j++)
        if (mol.getConnBondOrder_0(conn, j) == 1 && carc2.getFakeOxoCount(mol, mol.getConnAtom_0(conn, j)) != 0)
          return true;
    }
  }
  return false;
}
;
defineClass(1157, 1, {1:1});
cggl.Lcom_actelion_research_chem_AtomFunctionAnalyzer_2_classLit = createForClass('com.actelion.research.chem', 'AtomFunctionAnalyzer', 1157, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_AtomTypeCalculator = function $clinit_AtomTypeCalculator(){
  carc2.$clinit_AtomTypeCalculator = emptyMethod;
  jl.$clinit_Object();
  carc2.cAtomicNoCode = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [-1, -1, -1, 0, 0, 1, 2, 3, 4, 5, -1, 0, 0, 0, 6, 7, 8, 9, -1, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 11, 11, 12, 13, -1, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 11, 14, -1, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, 1, -1, -1, -1, -1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]);
  carc2.cSimpleAtomicNoCode = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [-1, -1, -1, 0, 0, 0, 2, 5, 5, 5, -1, 0, 0, 0, 0, 9, 9, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]);
  carc2.cAtomicNoCodeString = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['MainGroupMetal', 'Boron', 'Carbon', 'Nitrogen', 'Oxygen', 'Fluor', 'Silicon', 'Phosphorous', 'Sulfur', 'Chlorine', 'Transition Metal', 'MainGroupNonMetal', 'Selene', 'Bromine', 'Iodine', 'LanthanideOrActinide']);
  carc2.cSimpleAtomicNoCodeString = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Metal', '-', 'Carbon', '-', '-', 'Small Hetero', '-', '-', '-', 'Large Hetero', '-', '-', '-', '-', '-', '-']);
}
;
carc2.getAtomType = function getAtomType(mol, atom, mode){
  carc2.$clinit_AtomTypeCalculator();
  var atomType, connAtom, connBondOrder, connType, i, i0, i1, index_0, j, neighbourCount, neighbourType, otherNeighbours, ringCount, ringSize;
  mol.ensureHelperArrays_0(7);
  neighbourType = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, mol.getConnAtoms_0(atom), 14, 1);
  neighbourCount = 0;
  for (i0 = 0; i0 < mol.getConnAtoms_0(atom); i0++) {
    connAtom = mol.getConnAtom_0(atom, i0);
    if (mol.getAtomicNo_0(connAtom) == 1)
      continue;
    connType = 0;
    if ((mode & 32) != 0) {
      connBondOrder = fromInt_0(mol.getConnBondOrder_0(atom, i0));
      if (mode == 32190) {
        if (lt(connBondOrder, 3) && mol.isDelocalizedBond_0(mol.getConnBond_0(atom, i0)) && mol.getAtomPi_0(atom) == 1)
          connBondOrder = 0;
      }
       else {
        if (lt(connBondOrder, 3) && mol.isAromaticBond_0(mol.getConnBond_0(atom, i0)))
          connBondOrder = 0;
      }
      connType = or_0(connType, shl_0(connBondOrder, 4));
    }
    if ((mode & 128) != 0) {
      if (carc2.cAtomicNoCode[mol.getAtomicNo_0(connAtom)] == -1)
        throw toJs(new jl.Exception_1('unsupported atomicNo:' + mol.getAtomicNo_0(connAtom)));
      connType = add_22(connType, fromInt_0(carc2.cAtomicNoCode[mol.getAtomicNo_0(connAtom)]));
    }
     else if ((mode & 64) != 0) {
      if (carc2.cSimpleAtomicNoCode[mol.getAtomicNo_0(connAtom)] == -1)
        throw toJs(new jl.Exception_1('unsupported atomicNo:' + mol.getAtomicNo_0(connAtom)));
      connType = add_22(connType, fromInt_0(carc2.cSimpleAtomicNoCode[mol.getAtomicNo_0(connAtom)]));
    }
    if ((mode & 256) != 0) {
      otherNeighbours = mol.getConnAtoms_0(connAtom) - 1;
      if (otherNeighbours > 3)
        otherNeighbours = 3;
      if ((mode & 512) == 0)
        if (otherNeighbours > 1)
          otherNeighbours = 1;
      connType = or_0(connType, fromInt_0(otherNeighbours << 6));
    }
    if ((mode & 1024) != 0)
      if (mol.isSmallRingAtom_0(connAtom))
        connType = or_0(connType, 256);
    if ((mode & 2048) != 0)
      if (mol.isAromaticAtom_1(connAtom))
        connType = or_0(connType, 512);
    if ((mode & 16384) != 0)
      if (mol.isStabilizedAtom_0(connAtom))
        connType = or_0(connType, 1024);
    index_0 = 0;
    while (lt(connType, neighbourType[index_0]))
      index_0++;
    for (j = i0; j > index_0; j--)
      neighbourType[j] = neighbourType[j - 1];
    neighbourType[index_0] = connType;
    neighbourCount++;
  }
  if (neighbourCount > 4)
    neighbourCount = 4;
  atomType = 0;
  for (i1 = 0; i1 < neighbourCount; i1++) {
    atomType = shl_0(atomType, 11);
    atomType = or_0(atomType, neighbourType[i1]);
  }
  atomType = shl_0(atomType, 15);
  if (carc2.cAtomicNoCode[mol.getAtomicNo_0(atom)] == -1)
    throw toJs(new jl.Exception_1('unsupported atomicNo:' + mol.getAtomicNo_0(atom)));
  atomType = or_0(atomType, fromInt_0(carc2.cAtomicNoCode[mol.getAtomicNo_0(atom)]));
  if ((mode & 2) != 0) {
    ringSize = mol.getAtomRingSize_0(atom);
    if (ringSize > 9)
      ringSize = 9;
    if (ringSize > 2)
      ringSize -= 2;
    atomType = or_0(atomType, fromInt_0(ringSize << 4));
  }
   else if ((mode & 1) != 0)
    if (mol.isSmallRingAtom_0(atom))
      atomType = or_0(atomType, 64);
  if ((mode & 4) != 0)
    if (mol.isAromaticAtom_1(atom))
      atomType = or_0(atomType, 1024);
  if ((mode & 8) != 0)
    if (mol.isAllylicAtom_0(atom))
      atomType = or_0(atomType, 2048);
  if ((mode & 16) != 0)
    if (mol.isStabilizedAtom_0(atom))
      atomType = or_0(atomType, 4096);
  if ((mode & 4096) != 0) {
    if (carc2.hasUnbalancedAtomCharge(mol, atom))
      atomType = or_0(atomType, 8192);
    if (carc2.isBasicNitrogen(mol, atom)) {
      for (i = 0; i < mol.getAtoms_0(); i++) {
        if (carc2.isAcidicOxygen(mol, i)) {
          atomType = or_0(atomType, 16384);
          break;
        }
      }
    }
  }
  if ((mode & 8192) != 0) {
    ringCount = fromInt_0(mol.getAtomRingCount_0(atom, 10));
    atomType = or_0(atomType, shl_0(ringCount, 7));
  }
  return atomType;
}
;
defineClass(1126, 1, {1:1});
carc2.ATOM_FLAGS_ATOMICNO = 15;
carc2.ATOM_FLAGS_RINGCOUNT = 896;
carc2.ATOM_FLAGS_RINGSIZE = 112;
carc2.ATOM_FLAG_ALLYLIC = 2048;
carc2.ATOM_FLAG_AMPHOLYTIC = 16384;
carc2.ATOM_FLAG_AROMATIC = 1024;
carc2.ATOM_FLAG_CHARGED = 8192;
carc2.ATOM_FLAG_COUNT = 15;
carc2.ATOM_FLAG_SMALLRING = 64;
carc2.ATOM_FLAG_STABILIZED = 4096;
carc2.ATOM_SHIFT_RINGCOUNT = 7;
carc2.ATOM_SHIFT_RINGSIZE = 4;
carc2.CONN_FLAGS_ALL = 2047;
carc2.CONN_FLAGS_ATOMICNO = 15;
carc2.CONN_FLAGS_BONDORDER = 48;
carc2.CONN_FLAGS_NEIGHBOURS = 192;
carc2.CONN_FLAG_AROMATIC = 512;
carc2.CONN_FLAG_COUNT = 11;
carc2.CONN_FLAG_SMALLRING = 256;
carc2.CONN_FLAG_STABILIZED = 1024;
carc2.CONN_SHIFT_BONDORDER = 4;
carc2.CONN_SHIFT_NEIGHBOURS = 6;
carc2.cPropertiesAll = 32702;
carc2.cPropertiesAtomAllylic = 8;
carc2.cPropertiesAtomAromatic = 4;
carc2.cPropertiesAtomCharged = 4096;
carc2.cPropertiesAtomRingCount = 8192;
carc2.cPropertiesAtomRingSize = 2;
carc2.cPropertiesAtomSmallRing = 1;
carc2.cPropertiesAtomStabilized = 16;
carc2.cPropertiesBasicType = 60;
carc2.cPropertiesConnAtomAromatic = 2048;
carc2.cPropertiesConnAtomNeighbours = 256;
carc2.cPropertiesConnAtomNeighboursExact = 512;
carc2.cPropertiesConnAtomSmallRing = 1024;
carc2.cPropertiesConnAtomStabilized = 16384;
carc2.cPropertiesConnAtomType = 128;
carc2.cPropertiesConnAtomTypeSimple = 64;
carc2.cPropertiesConnBondOrder = 32;
carc2.cPropertiesForCLogP = 2145;
carc2.cPropertiesForCLogPCharges = 6241;
carc2.cPropertiesForMutator = 32190;
carc2.cPropertiesForSolubility = 2144;
cggl.Lcom_actelion_research_chem_AtomTypeCalculator_2_classLit = createForClass('com.actelion.research.chem', 'AtomTypeCalculator', 1126, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer = function $clinit_Canonizer(){
  carc2.$clinit_Canonizer = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Canonizer = function Canonizer(mol){
  carc2.$clinit_Canonizer();
  carc2.Canonizer_0.call(this, mol, 0);
}
;
carc2.Canonizer_0 = function Canonizer_0(mol, mode){
  carc2.$clinit_Canonizer();
  Object_0.call(this);
  this.$init_6();
  this.mMol = mol;
  this.mMode = mode;
  this.mMol.ensureHelperArrays_0(7);
  this.mAtomBits = carc2.getNeededBits(this.mMol.getAtoms_0());
  if ((this.mMode & 2048) == 0)
    this.canFindNitrogenQualifyingForParity();
  this.mZCoordinatesAvailable = (mode & 64) != 0 || this.mMol.is3D_0();
  if ((this.mMode & 2048) == 0) {
    this.mTHParity = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
    this.mTHParityIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
    this.mTHParityRoundIsOdd = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
    this.mEZParity = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
    this.mEZParityRoundIsOdd = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
    this.mEZParityIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  }
  this.mCIPParityNoDistinctionProblem = false;
  this.canInitializeRanking();
  if ((this.mMode & 2048) == 0)
    this.canRankStereo();
  this.canRankFinal();
}
;
carc2.getNeededBits = function getNeededBits(maxNo){
  carc2.$clinit_Canonizer();
  var bits;
  bits = 0;
  while (maxNo > 0) {
    maxNo >>= 1;
    bits++;
  }
  return bits;
}
;
defineClass(41, 1, {1:1}, carc2.Canonizer, carc2.Canonizer_0);
_.$init_6 = function $init_6(){
}
;
_.addAtomQueryFeatures = function addAtomQueryFeatures(codeNo, nbits, qfMask, qfBits, qfShift){
  var atom, atom0, count, feature;
  count = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++)
    if (neq(and_0(this.mMol.getAtomQueryFeatures(this.mGraphAtom[atom0]), qfMask), 0))
      count++;
  if (count == 0)
    return;
  this.encodeFeatureNo(codeNo);
  this.encodeBits(fromInt_0(count), nbits);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    feature = and_0(this.mMol.getAtomQueryFeatures(this.mGraphAtom[atom]), qfMask);
    if (neq(feature, 0)) {
      this.encodeBits(fromInt_0(atom), nbits);
      if (qfBits != 1)
        this.encodeBits(shr_0(feature, qfShift), qfBits);
    }
  }
}
;
_.addBondQueryFeatures = function addBondQueryFeatures(codeNo, nbits, qfMask, qfBits, qfShift){
  var bond, bond0, count, feature;
  count = 0;
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++)
    if ((this.mMol.getBondQueryFeatures_0(this.mGraphBond[bond0]) & qfMask) != 0)
      count++;
  if (count == 0)
    return;
  this.encodeFeatureNo(codeNo);
  this.encodeBits(fromInt_0(count), nbits);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    feature = this.mMol.getBondQueryFeatures_0(this.mGraphBond[bond]) & qfMask;
    if (feature != 0) {
      this.encodeBits(fromInt_0(bond), nbits);
      if (qfBits != 1)
        this.encodeBits(fromInt_0(feature >> qfShift), qfBits);
    }
  }
}
;
_.canBreakFreeValenceAtomTies = function canBreakFreeValenceAtomTies(){
  var atom, atom0, highestSharedFreeValenceRank, increment, isFreeValenceRank, value_0;
  while (true) {
    isFreeValenceRank = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mNoOfRanks + 1, 16, 1);
    highestSharedFreeValenceRank = -1;
    for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
      if (this.mMol.getLowestFreeValence_0(atom0) != 0) {
        if (isFreeValenceRank[this.mCanRank[atom0]] && highestSharedFreeValenceRank < this.mCanRank[atom0])
          highestSharedFreeValenceRank = this.mCanRank[atom0];
        isFreeValenceRank[this.mCanRank[atom0]] = true;
      }
    }
    if (highestSharedFreeValenceRank == -1)
      break;
    increment = 0;
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      value_0 = 0;
      if (this.mCanRank[atom] == highestSharedFreeValenceRank)
        value_0 = ++increment;
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
      this.mCanBase[atom].add_0(8, fromInt_0(value_0));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
}
;
_.canBreakTiesByHeteroTopicity = function canBreakTiesByHeteroTopicity(){
  var atom, atom0, bond, found;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    this.mCanBase[atom0].init_0(atom0);
    this.mCanBase[atom0].add_0(2 * this.mAtomBits + 4, shl_0(fromInt_0(this.mCanRank[atom0]), this.mAtomBits + 4));
  }
  found = false;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    found = found | this.canCalcTHParity(atom, 3);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    found = found | this.canCalcEZParity(bond, 3);
  if (!found)
    return false;
  while (this.mNoOfRanks < this.mMol.getAtoms_0()) {
    found = this.canInnerBreakTiesByHeteroTopicity();
    if (!found)
      break;
    this.canNormalizeGroupParities();
    if (isNotNull(this.mMesoHelper))
      this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank);
  }
  return true;
}
;
_.canBreakTiesRandomly = function canBreakTiesRandomly(){
  var atom, atom0, atom1, rank, rankCount;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    this.mCanBase[atom0].init_0(atom0);
    this.mCanBase[atom0].add_0(this.mAtomBits + 1, fromInt_0(2 * this.mCanRank[atom0]));
  }
  rankCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mNoOfRanks + 1, 15, 1);
  for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++)
    rankCount[this.mCanRank[atom1]]++;
  rank = 1;
  while (rankCount[rank] == 1)
    rank++;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mCanRank[atom] == rank) {
      this.mCanBase[atom].add_1(1);
      break;
    }
  }
  this.mNoOfRanks = this.canPerformRanking();
}
;
_.canCalcAlleneParity = function canCalcAlleneParity(atom, mode){
  var alleneParity, atom1, atom2, halfParity1, halfParity2;
  if (this.mMol.getAtomicNo_0(atom) != 6 && this.mMol.getAtomicNo_0(atom) != 7)
    return false;
  atom1 = this.mMol.getConnAtom_0(atom, 0);
  atom2 = this.mMol.getConnAtom_0(atom, 1);
  if (this.mMol.getAtomPi_0(atom1) != 1 || this.mMol.getAtomPi_0(atom2) != 1)
    return false;
  if (this.mMol.getConnAtoms_0(atom1) == 1 || this.mMol.getConnAtoms_0(atom2) == 1)
    return false;
  if (this.mMol.getAllConnAtoms_0(atom1) > 3 || this.mMol.getAllConnAtoms_0(atom2) > 3)
    return false;
  halfParity1 = new carc2.EZHalfParity(this.mMol, this.mCanRank, atom, atom1);
  if (halfParity1.mRanksEqual && mode == 1)
    return false;
  halfParity2 = new carc2.EZHalfParity(this.mMol, this.mCanRank, atom, atom2);
  if (halfParity2.mRanksEqual && mode == 1)
    return false;
  if (halfParity1.mRanksEqual && halfParity2.mRanksEqual)
    return false;
  if (mode == 3) {
    if (halfParity1.mRanksEqual && halfParity1.mInSameFragment)
      this.mProTHAtomsInSameFragment[atom] = true;
    if (halfParity2.mRanksEqual && halfParity2.mInSameFragment)
      this.mProTHAtomsInSameFragment[atom] = true;
  }
  alleneParity = this.mZCoordinatesAvailable?this.canCalcAlleneParity3D(halfParity1, halfParity2):this.canCalcAlleneParity2D(halfParity1, halfParity2);
  if (mode == 1) {
    this.mTHParity[atom] = alleneParity;
  }
   else if (mode == 2) {
    if (halfParity1.mRanksEqual) {
      if (alleneParity == 1) {
        this.mCanBase[halfParity1.mHighConn].add_1(fromInt_0(this.mCanRank[atom1]));
      }
       else {
        this.mCanBase[halfParity1.mLowConn].add_1(fromInt_0(this.mCanRank[atom1]));
      }
    }
    if (halfParity2.mRanksEqual) {
      if (alleneParity == 2) {
        this.mCanBase[halfParity2.mHighConn].add_1(fromInt_0(this.mCanRank[atom2]));
      }
       else {
        this.mCanBase[halfParity2.mLowConn].add_1(fromInt_0(this.mCanRank[atom2]));
      }
    }
  }
  return true;
}
;
_.canCalcAlleneParity2D = function canCalcAlleneParity2D(halfParity1, halfParity2){
  var alleneParity, hp1, hp2;
  hp1 = halfParity1.getValue();
  hp2 = halfParity2.getValue();
  if (hp1 == -1 || hp2 == -1 || (hp1 + hp2 & 1) == 0)
    return 3;
  alleneParity = 0;
  switch (hp1 + hp2) {
    case 3:
    case 7:
      alleneParity = 2;
      break;
    case 5:
      alleneParity = 1;
      break;
  }
  return alleneParity;
}
;
_.canCalcAlleneParity3D = function canCalcAlleneParity3D(halfParity1, halfParity2){
  var atom, torsion;
  atom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
  atom[0] = halfParity1.mHighConn;
  atom[1] = halfParity1.mCentralAxialAtom;
  atom[2] = halfParity2.mCentralAxialAtom;
  atom[3] = halfParity2.mHighConn;
  torsion = this.mMol.calculateTorsion_0(atom);
  if ($wnd.Math.abs(torsion) < 0.3 || $wnd.Math.abs(torsion) > 3.141592653589793 - 0.3)
    return 3;
  if (torsion < 0)
    return 2;
  else 
    return 1;
}
;
_.canCalcBINAPParity = function canCalcBINAPParity(bond, mode){
  var atom1, atom2, axialParity, halfParity1, halfParity2;
  if (!this.mMol.isBINAPChiralityBond_0(bond))
    return false;
  atom1 = this.mMol.getBondAtom_0(0, bond);
  atom2 = this.mMol.getBondAtom_0(1, bond);
  halfParity1 = new carc2.EZHalfParity(this.mMol, this.mCanRank, atom1, atom2);
  if (halfParity1.mRanksEqual && mode == 1)
    return false;
  halfParity2 = new carc2.EZHalfParity(this.mMol, this.mCanRank, atom2, atom1);
  if (halfParity2.mRanksEqual && mode == 1)
    return false;
  if (halfParity1.mRanksEqual && halfParity2.mRanksEqual)
    return false;
  if (mode == 3) {
    if (halfParity1.mRanksEqual)
      this.mProEZAtomsInSameFragment[bond] = this.hasSecondBINAPBond(atom2);
    if (halfParity2.mRanksEqual)
      this.mProEZAtomsInSameFragment[bond] = this.hasSecondBINAPBond(atom1);
  }
  axialParity = this.mZCoordinatesAvailable?this.canCalcBINAPParity3D(halfParity1, halfParity2):this.canCalcBINAPParity2D(halfParity1, halfParity2);
  if (mode == 1) {
    this.mEZParity[bond] = axialParity;
  }
   else if (mode == 2) {
    if (halfParity1.mRanksEqual) {
      if (axialParity == 2) {
        this.mCanBase[halfParity1.mHighConn].add_1(fromInt_0(this.mCanRank[atom2]));
      }
       else {
        this.mCanBase[halfParity1.mLowConn].add_1(fromInt_0(this.mCanRank[atom2]));
      }
    }
    if (halfParity2.mRanksEqual) {
      if (axialParity == 2) {
        this.mCanBase[halfParity2.mHighConn].add_1(fromInt_0(this.mCanRank[atom1]));
      }
       else {
        this.mCanBase[halfParity2.mLowConn].add_1(fromInt_0(this.mCanRank[atom1]));
      }
    }
  }
  return true;
}
;
_.canCalcBINAPParity2D = function canCalcBINAPParity2D(halfParity1, halfParity2){
  var axialParity, hp1, hp2;
  hp1 = halfParity1.getValue();
  hp2 = halfParity2.getValue();
  if (hp1 == -1 || hp2 == -1 || (hp1 + hp2 & 1) == 0)
    return 3;
  axialParity = 0;
  switch (hp1 + hp2) {
    case 3:
    case 7:
      axialParity = 1;
      break;
    case 5:
      axialParity = 2;
      break;
  }
  return axialParity;
}
;
_.canCalcBINAPParity3D = function canCalcBINAPParity3D(halfParity1, halfParity2){
  var atom, torsion;
  atom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
  atom[0] = halfParity1.mHighConn;
  atom[1] = halfParity1.mCentralAxialAtom;
  atom[2] = halfParity2.mCentralAxialAtom;
  atom[3] = halfParity2.mHighConn;
  torsion = this.mMol.calculateTorsion_0(atom);
  if ($wnd.Math.abs(torsion) < 0.3 || $wnd.Math.abs(torsion) > 3.141592653589793 - 0.3)
    return 3;
  if (torsion < 0)
    return 1;
  else 
    return 2;
}
;
_.canCalcEZParity = function canCalcEZParity(bond, mode){
  var atom, bondDBParity, dbAtom1, dbAtom2, halfParity1, halfParity2, i, j;
  if (this.mEZParity[bond] != 0)
    return false;
  if (this.mMol.isFragment_0()) {
    for (i = 0; i < 2; i++) {
      atom = this.mMol.getBondAtom_0(i, bond);
      for (j = 0; j < this.mMol.getAllConnAtoms_0(atom); j++)
        if (neq(and_0(this.mMol.getAtomQueryFeatures(this.mMol.getConnAtom_0(atom, j)), 536870912), 0))
          return false;
    }
  }
  if (this.mMol.getBondOrder_0(bond) == 1)
    return this.canCalcBINAPParity(bond, mode);
  if (this.mMol.getBondOrder_0(bond) != 2)
    return false;
  if (this.mMol.isAromaticBond_0(bond))
    return false;
  dbAtom1 = this.mMol.getBondAtom_0(0, bond);
  dbAtom2 = this.mMol.getBondAtom_0(1, bond);
  if (this.mMol.getConnAtoms_0(dbAtom1) == 1 || this.mMol.getConnAtoms_0(dbAtom2) == 1)
    return false;
  if (this.mMol.getConnAtoms_0(dbAtom1) > 3 || this.mMol.getConnAtoms_0(dbAtom2) > 3)
    return false;
  if (this.mMol.getAtomPi_0(dbAtom1) == 2 || this.mMol.getAtomPi_0(dbAtom2) == 2)
    return false;
  halfParity1 = new carc2.EZHalfParity(this.mMol, this.mCanRank, dbAtom2, dbAtom1);
  if (halfParity1.mRanksEqual && mode == 1)
    return false;
  halfParity2 = new carc2.EZHalfParity(this.mMol, this.mCanRank, dbAtom1, dbAtom2);
  if (halfParity2.mRanksEqual && mode == 1)
    return false;
  if (halfParity1.mRanksEqual && halfParity2.mRanksEqual)
    return false;
  if (mode == 3) {
    if (halfParity1.mRanksEqual && halfParity1.mInSameFragment)
      this.mProEZAtomsInSameFragment[bond] = true;
    if (halfParity2.mRanksEqual && halfParity2.mInSameFragment)
      this.mProEZAtomsInSameFragment[bond] = true;
  }
  bondDBParity = this.mMol.isBondParityUnknownOrNone_0(bond)?3:this.mZCoordinatesAvailable?this.canCalcEZParity3D(halfParity1, halfParity2):this.canCalcEZParity2D(halfParity1, halfParity2);
  if (mode == 1) {
    this.mEZParity[bond] = bondDBParity;
  }
   else if (mode == 2) {
    if (halfParity1.mRanksEqual) {
      if (bondDBParity == 1) {
        this.mCanBase[halfParity1.mHighConn].add_1(fromInt_0(this.mCanRank[dbAtom1]));
      }
       else if (bondDBParity == 2) {
        this.mCanBase[halfParity1.mLowConn].add_1(fromInt_0(this.mCanRank[dbAtom1]));
      }
    }
    if (halfParity2.mRanksEqual) {
      if (bondDBParity == 1) {
        this.mCanBase[halfParity2.mHighConn].add_1(fromInt_0(this.mCanRank[dbAtom2]));
      }
       else if (bondDBParity == 2) {
        this.mCanBase[halfParity2.mLowConn].add_1(fromInt_0(this.mCanRank[dbAtom2]));
      }
    }
  }
  return true;
}
;
_.canCalcEZParity2D = function canCalcEZParity2D(halfParity1, halfParity2){
  if (halfParity1.getValue() == -1 || halfParity2.getValue() == -1)
    return 3;
  if (((halfParity1.getValue() | halfParity2.getValue()) & 1) != 0)
    return 3;
  return halfParity1.getValue() == halfParity2.getValue()?narrow_byte(1):2;
}
;
_.canCalcEZParity3D = function canCalcEZParity3D(halfParity1, halfParity2){
  var cosa, cosb, db, n1, n2, s1, s2;
  db = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  db[0] = this.mMol.getAtomX_0(halfParity2.mCentralAxialAtom) - this.mMol.getAtomX_0(halfParity1.mCentralAxialAtom);
  db[1] = this.mMol.getAtomY_0(halfParity2.mCentralAxialAtom) - this.mMol.getAtomY_0(halfParity1.mCentralAxialAtom);
  db[2] = this.mMol.getAtomZ_0(halfParity2.mCentralAxialAtom) - this.mMol.getAtomZ_0(halfParity1.mCentralAxialAtom);
  s1 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  s1[0] = this.mMol.getAtomX_0(halfParity1.mHighConn) - this.mMol.getAtomX_0(halfParity1.mCentralAxialAtom);
  s1[1] = this.mMol.getAtomY_0(halfParity1.mHighConn) - this.mMol.getAtomY_0(halfParity1.mCentralAxialAtom);
  s1[2] = this.mMol.getAtomZ_0(halfParity1.mHighConn) - this.mMol.getAtomZ_0(halfParity1.mCentralAxialAtom);
  s2 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  s2[0] = this.mMol.getAtomX_0(halfParity2.mHighConn) - this.mMol.getAtomX_0(halfParity2.mCentralAxialAtom);
  s2[1] = this.mMol.getAtomY_0(halfParity2.mHighConn) - this.mMol.getAtomY_0(halfParity2.mCentralAxialAtom);
  s2[2] = this.mMol.getAtomZ_0(halfParity2.mHighConn) - this.mMol.getAtomZ_0(halfParity2.mCentralAxialAtom);
  n1 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  n1[0] = db[1] * s1[2] - db[2] * s1[1];
  n1[1] = db[2] * s1[0] - db[0] * s1[2];
  n1[2] = db[0] * s1[1] - db[1] * s1[0];
  n2 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  n2[0] = db[1] * n1[2] - db[2] * n1[1];
  n2[1] = db[2] * n1[0] - db[0] * n1[2];
  n2[2] = db[0] * n1[1] - db[1] * n1[0];
  cosa = (s1[0] * n2[0] + s1[1] * n2[1] + s1[2] * n2[2]) / ($wnd.Math.sqrt(s1[0] * s1[0] + s1[1] * s1[1] + s1[2] * s1[2]) * $wnd.Math.sqrt(n2[0] * n2[0] + n2[1] * n2[1] + n2[2] * n2[2]));
  cosb = (s2[0] * n2[0] + s2[1] * n2[1] + s2[2] * n2[2]) / ($wnd.Math.sqrt(s2[0] * s2[0] + s2[1] * s2[1] + s2[2] * s2[2]) * $wnd.Math.sqrt(n2[0] * n2[0] + n2[1] * n2[1] + n2[2] * n2[2]));
  return cosa < 0 ^ cosb < 0?narrow_byte(1):2;
}
;
_.canCalcImplicitAbnormalValence = function canCalcImplicitAbnormalValence(atom){
  var explicitAbnormalValence, implicitHigherValence, newImplicitHigherValence, valence;
  explicitAbnormalValence = this.mMol.getAtomAbnormalValence_0(atom);
  implicitHigherValence = this.mMol.getImplicitHigherValence_0(atom, false);
  newImplicitHigherValence = this.mMol.getImplicitHigherValence_0(atom, true);
  valence = -1;
  if (implicitHigherValence != newImplicitHigherValence) {
    if (explicitAbnormalValence != -1 && explicitAbnormalValence > implicitHigherValence)
      valence = narrow_byte(explicitAbnormalValence);
    else 
      valence = narrow_byte(implicitHigherValence);
  }
   else if (explicitAbnormalValence != -1) {
    if (explicitAbnormalValence > newImplicitHigherValence || explicitAbnormalValence < newImplicitHigherValence && explicitAbnormalValence >= this.mMol.getOccupiedValence_0(atom))
      valence = narrow_byte(explicitAbnormalValence);
  }
   else if (!this.mMol.supportsImplicitHydrogen_0(atom) && this.mMol.getExplicitHydrogens_0(atom) != 0) {
    valence = this.mMol.getOccupiedValence_0(atom);
    valence -= this.mMol.getElectronValenceCorrection_0(atom, valence);
  }
  this.canSetAbnormalValence(atom, valence);
  return valence;
}
;
_.canCalcNextBaseValues = function canCalcNextBaseValues(){
  var atom, connBond, connRank, i, i0, i1, j, k, neighbour, neighbours, rank;
  connRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxConnAtoms, 15, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    neighbours = this.mMol.getConnAtoms_0(atom) + this.mMol.getMetalBondedConnAtoms_0(atom);
    neighbour = 0;
    for (i0 = 0; i0 < this.mMol.getAllConnAtomsPlusMetalBonds_0(atom); i0++) {
      if (i0 < this.mMol.getConnAtoms_0(atom) || i0 >= this.mMol.getAllConnAtoms_0(atom)) {
        rank = 2 * this.mCanRank[this.mMol.getConnAtom_0(atom, i0)];
        connBond = this.mMol.getConnBond_0(atom, i0);
        if (this.mMol.getBondOrder_0(connBond) == 2)
          if (!this.mMol.isAromaticBond_0(connBond))
            rank++;
        for (j = 0; j < neighbour; j++)
          if (rank < connRank[j])
            break;
        for (k = neighbour; k > j; k--)
          connRank[k] = connRank[k - 1];
        connRank[j] = rank;
        neighbour++;
      }
    }
    this.mCanBase[atom].init_0(atom);
    this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
    for (i1 = neighbours; i1 < this.mMaxConnAtoms; i1++)
      this.mCanBase[atom].add_0(this.mAtomBits + 1, 0);
    for (i = 0; i < neighbours; i++)
      this.mCanBase[atom].add_0(this.mAtomBits + 1, fromInt_0(connRank[i]));
  }
}
;
_.canCalcTHParity = function canCalcTHParity(atom, mode){
  var atomTHParity, highestConn, highestRank, i, i0, i1, j, neighbourUsed, proTHAtom1, proTHAtom2, proTHAtomsFound, remappedConn, remappedRank;
  if (this.mTHParity[atom] != 0)
    return false;
  if (this.mMol.getAtomicNo_0(atom) != 5 && this.mMol.getAtomicNo_0(atom) != 6 && this.mMol.getAtomicNo_0(atom) != 7 && this.mMol.getAtomicNo_0(atom) != 14 && this.mMol.getAtomicNo_0(atom) != 15 && this.mMol.getAtomicNo_0(atom) != 16)
    return false;
  if (this.mMol.getAtomPi_0(atom) != 0) {
    if (this.mMol.isCentralAlleneAtom(atom))
      return this.canCalcAlleneParity(atom, mode);
    if (this.mMol.getAtomicNo_0(atom) != 15 && this.mMol.getAtomicNo_0(atom) != 16)
      return false;
  }
  if (this.mMol.getConnAtoms_0(atom) < 3 || this.mMol.getAllConnAtoms_0(atom) > 4)
    return false;
  if (this.mMol.getAtomCharge_0(atom) > 0 && this.mMol.getAtomicNo_0(atom) == 6)
    return false;
  if (this.mMol.getAtomicNo_0(atom) == 5 && this.mMol.getAllConnAtoms_0(atom) != 4)
    return false;
  if (this.mMol.isFragment_0()) {
    if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 536870912), 0))
      return false;
    for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
      if (neq(and_0(this.mMol.getAtomQueryFeatures(this.mMol.getConnAtom_0(atom, i0)), 536870912), 0))
        return false;
  }
  if (this.mMol.getAtomicNo_0(atom) == 7 && !this.mNitrogenQualifiesForParity[atom])
    return false;
  remappedConn = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
  remappedRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
  neighbourUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, 4, 16, 1);
  for (i1 = 0; i1 < this.mMol.getAllConnAtoms_0(atom); i1++) {
    highestRank = -1;
    highestConn = 0;
    for (j = 0; j < this.mMol.getAllConnAtoms_0(atom); j++) {
      if (!neighbourUsed[j]) {
        if (highestRank < this.mCanRank[this.mMol.getConnAtom_0(atom, j)]) {
          highestRank = this.mCanRank[this.mMol.getConnAtom_0(atom, j)];
          highestConn = j;
        }
      }
    }
    remappedConn[i1] = highestConn;
    remappedRank[i1] = highestRank;
    neighbourUsed[highestConn] = true;
  }
  if (this.mMol.getAllConnAtoms_0(atom) == 4 && remappedRank[0] == remappedRank[1] && remappedRank[2] == remappedRank[3])
    return false;
  if (this.mMol.getAllConnAtoms_0(atom) == 4 && (remappedRank[0] == remappedRank[2] || remappedRank[1] == remappedRank[3]))
    return false;
  if (this.mMol.getAllConnAtoms_0(atom) == 3 && remappedRank[0] == remappedRank[2])
    return false;
  proTHAtom1 = 0;
  proTHAtom2 = 0;
  proTHAtomsFound = false;
  for (i = 1; i < this.mMol.getAllConnAtoms_0(atom); i++) {
    if (remappedRank[i - 1] == remappedRank[i]) {
      if (mode == 1 || remappedRank[i] == 0)
        return false;
      proTHAtom1 = this.mMol.getConnAtom_0(atom, remappedConn[i - 1]);
      proTHAtom2 = this.mMol.getConnAtom_0(atom, remappedConn[i]);
      if (mode == 3 && this.mMol.isRingBond_0(this.mMol.getConnBond_0(atom, remappedConn[i])))
        this.mProTHAtomsInSameFragment[atom] = true;
      proTHAtomsFound = true;
    }
  }
  if (mode != 1 && !proTHAtomsFound)
    return false;
  atomTHParity = this.mZCoordinatesAvailable?this.canCalcTHParity3D(atom, remappedConn):this.canCalcTHParity2D(atom, remappedConn);
  if (mode == 1) {
    this.mTHParity[atom] = atomTHParity;
  }
   else if (mode == 2) {
    if (atomTHParity == 1) {
      this.mCanBase[proTHAtom1].add_1(fromInt_0(this.mCanRank[atom]));
    }
     else if (atomTHParity == 2) {
      this.mCanBase[proTHAtom2].add_1(fromInt_0(this.mCanRank[atom]));
    }
  }
  return true;
}
;
_.canCalcTHParity2D = function canCalcTHParity2D(atom, remappedConn){
  var angle, bnd, i, i0, i1, order, parity, stereoBond, stereoType, up_down;
  up_down = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {35:1, 4:1, 1:1, 7:1}, 6, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 1, 2, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 2, 2, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 1, 2, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 1, 1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 2, 1, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 2, 1, 2])]);
  angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom), 15, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
    angle[i0] = this.mMol.getBondAngle_0(this.mMol.getConnAtom_0(atom, remappedConn[i0]), atom);
  parity = narrow_byte(this.mMol.getFisherProjectionParity_0(atom, remappedConn, angle, null));
  if (parity != 3)
    return parity;
  stereoBond = 0;
  stereoType = 0;
  for (i1 = 0; i1 < this.mMol.getAllConnAtoms_0(atom); i1++) {
    bnd = this.mMol.getConnBond_0(atom, remappedConn[i1]);
    if (this.mMol.getBondAtom_0(0, bnd) == atom) {
      if (this.mMol.getBondType_0(bnd) == 129) {
        if (stereoType != 0)
          this.mMol.setStereoProblem(atom);
        stereoBond = i1;
        stereoType = 1;
      }
      if (this.mMol.getBondType_0(bnd) == 257) {
        if (stereoType != 0)
          this.mMol.setStereoProblem(atom);
        stereoBond = i1;
        stereoType = 2;
      }
    }
  }
  if (stereoType == 0)
    return 3;
  for (i = 1; i < this.mMol.getAllConnAtoms_0(atom); i++)
    if (angle[i] < angle[0])
      angle[i] += 3.141592653589793 * 2;
  if (this.mMol.getAllConnAtoms_0(atom) == 3) {
    switch (stereoBond) {
      case 0:
        if (angle[1] < angle[2] && angle[2] - angle[1] < 3.141592653589793 || angle[1] > angle[2] && angle[1] - angle[2] > 3.141592653589793)
          stereoType = 3 - stereoType;
        break;
      case 1:
        if (angle[2] - angle[0] > 3.141592653589793)
          stereoType = 3 - stereoType;
        break;
      case 2:
        if (angle[1] - angle[0] < 3.141592653589793)
          stereoType = 3 - stereoType;
        break;
    }
    return stereoType == 1?narrow_byte(2):1;
  }
  order = 0;
  if (angle[1] <= angle[2] && angle[2] <= angle[3])
    order = 0;
  else if (angle[1] <= angle[3] && angle[3] <= angle[2])
    order = 1;
  else if (angle[2] <= angle[1] && angle[1] <= angle[3])
    order = 2;
  else if (angle[2] <= angle[3] && angle[3] <= angle[1])
    order = 3;
  else if (angle[3] <= angle[1] && angle[1] <= angle[2])
    order = 4;
  else if (angle[3] <= angle[2] && angle[2] <= angle[1])
    order = 5;
  return up_down[order][stereoBond] == stereoType?narrow_byte(2):1;
}
;
_.canCalcTHParity3D = function canCalcTHParity3D(atom, remappedConn){
  var atomList, coords, cosa, i, i0, n;
  atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
    atomList[i0] = this.mMol.getConnAtom_0(atom, remappedConn[i0]);
  if (this.mMol.getAllConnAtoms_0(atom) == 3)
    atomList[3] = atom;
  coords = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [3, 3], 2);
  for (i = 0; i < 3; i++) {
    coords[i][0] = this.mMol.getAtomX_0(atomList[i + 1]) - this.mMol.getAtomX_0(atomList[0]);
    coords[i][1] = this.mMol.getAtomY_0(atomList[i + 1]) - this.mMol.getAtomY_0(atomList[0]);
    coords[i][2] = this.mMol.getAtomZ_0(atomList[i + 1]) - this.mMol.getAtomZ_0(atomList[0]);
  }
  n = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  n[0] = coords[0][1] * coords[1][2] - coords[0][2] * coords[1][1];
  n[1] = coords[0][2] * coords[1][0] - coords[0][0] * coords[1][2];
  n[2] = coords[0][0] * coords[1][1] - coords[0][1] * coords[1][0];
  cosa = (coords[2][0] * n[0] + coords[2][1] * n[1] + coords[2][2] * n[2]) / ($wnd.Math.sqrt(coords[2][0] * coords[2][0] + coords[2][1] * coords[2][1] + coords[2][2] * coords[2][2]) * $wnd.Math.sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]));
  return cosa > 0?narrow_byte(1):2;
}
;
_.canConsolidate = function canConsolidate(){
  var canRank, i;
  canRank = 0;
  ju.sort_5(this.mCanBase);
  for (i = 0; i < this.mCanBase.length; i++) {
    if (i == 0 || this.mCanBase[i].compareTo_0(this.mCanBase[i - 1]) != 0)
      canRank++;
    this.mCanRank[this.mCanBase[i].getAtom()] = canRank;
  }
  return canRank;
}
;
_.canEnsureFragments = function canEnsureFragments(){
  var atom, bondHandled, connAtom, connBond, current, fragmentAtom, fragmentAtoms, fragmentBond, fragmentBonds, fragmentCount, fragmentNo, i;
  if (isNotNull(this.mFragmentList))
    return;
  this.mFragmentList = new ju.ArrayList;
  fragmentCount = 0;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  fragmentBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (fragmentNo[atom] == 0 && (this.mMol.isRingAtom_0(atom) || this.mMol.getAtomPi_0(atom) == 1)) {
      fragmentAtom[0] = atom;
      fragmentAtoms = 1;
      fragmentBonds = 0;
      fragmentNo[atom] = ++fragmentCount;
      bondHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
      for (current = 0; current < fragmentAtoms; current++) {
        for (i = 0; i < this.mMol.getConnAtoms_0(fragmentAtom[current]); i++) {
          connBond = this.mMol.getConnBond_0(fragmentAtom[current], i);
          if (this.mMol.isRingBond_0(connBond) || this.mMol.getBondOrder_0(connBond) == 2 || this.mMol.isBINAPChiralityBond_0(connBond)) {
            connAtom = this.mMol.getConnAtom_0(fragmentAtom[current], i);
            if (!bondHandled[connBond]) {
              fragmentBond[fragmentBonds++] = connBond;
              bondHandled[connBond] = true;
            }
            if (fragmentNo[connAtom] == 0) {
              fragmentAtom[fragmentAtoms++] = connAtom;
              fragmentNo[connAtom] = fragmentCount;
            }
          }
        }
      }
      this.mFragmentList.add(new carc2.CanonizerFragment(fragmentAtom, fragmentAtoms, fragmentBond, fragmentBonds));
    }
  }
}
;
_.canFindNitrogenQualifyingForParity = function canFindNitrogenQualifyingForParity(){
  var atom;
  this.mNitrogenQualifiesForParity = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mMol.getAtomicNo_0(atom) == 7) {
      if (this.mMol.getConnAtoms_0(atom) == 4) {
        this.mNitrogenQualifiesForParity[atom] = true;
        continue;
      }
      if (this.mMol.getConnAtoms_0(atom) == 3) {
        if (this.mMol.getAtomRingSize_0(atom) == 3) {
          this.mNitrogenQualifiesForParity[atom] = true;
          continue;
        }
        if (this.mMol.getAtomCharge_0(atom) == 1) {
          this.mNitrogenQualifiesForParity[atom] = true;
          continue;
        }
        if (this.mMol.isFlatNitrogen_0(atom))
          continue;
        if ((this.mMode & 32) != 0) {
          this.mNitrogenQualifiesForParity[atom] = true;
          continue;
        }
        if (this.mMol.isPyramidalBridgeHead(atom)) {
          this.mNitrogenQualifiesForParity[atom] = true;
          continue;
        }
      }
    }
  }
}
;
_.canFindParities = function canFindParities(doCIP){
  var atom, bond, ezFound, thFound;
  ezFound = false;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    if (this.canCalcEZParity(bond, 1)) {
      this.mEZParityRoundIsOdd[bond] = this.mIsOddParityRound;
      if (doCIP)
        this.cipCalcEZParity(bond);
      ezFound = true;
    }
  thFound = false;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (this.canCalcTHParity(atom, 1)) {
      this.mTHParityRoundIsOdd[atom] = this.mIsOddParityRound;
      if (doCIP)
        this.cipCalcTHParity(atom);
      thFound = true;
    }
  if (thFound)
    this.mIsOddParityRound = !this.mIsOddParityRound;
  return ezFound || thFound;
}
;
_.canFindPseudoParities = function canFindPseudoParities(){
  var anyPseudoParityCount, atom, atom0, bond, bond0, f, f$iterator, highEZBondRank, highRankingEZBond, highRankingTHAtom, highTHAtomRank, higherRank, i, i0, i1, i2, invertFragmentsStereoFeatures, isFreshPseudoParityAtom, isFreshPseudoParityBond, pseudoParitiesInGroup, pseudoParity1Or2Found, pseudoParity1Or2InGroup, rank1, rank2;
  isFreshPseudoParityAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  isFreshPseudoParityBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  anyPseudoParityCount = 0;
  pseudoParity1Or2Found = false;
  if ((this.mMode & 128) != 0) {
    this.mPseudoTHGroup = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
    this.mPseudoEZGroup = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  }
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (this.mProTHAtomsInSameFragment[atom0]) {
      if (!this.mTHParityIsPseudo[atom0]) {
        if (this.canCalcTHParity(atom0, 1)) {
          this.mTHParityIsPseudo[atom0] = true;
          isFreshPseudoParityAtom[atom0] = true;
          anyPseudoParityCount++;
        }
      }
    }
  }
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (this.mProEZAtomsInSameFragment[bond0]) {
      if (!this.mEZParityIsPseudo[bond0]) {
        if (this.canCalcEZParity(bond0, 1)) {
          this.mEZParityIsPseudo[bond0] = true;
          isFreshPseudoParityBond[bond0] = true;
          anyPseudoParityCount++;
        }
      }
    }
  }
  if (anyPseudoParityCount == 1) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (isFreshPseudoParityAtom[atom]) {
        this.mTHParity[atom] = 0;
        break;
      }
    }
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (isFreshPseudoParityBond[bond]) {
        this.mEZParity[bond] = 0;
        break;
      }
    }
  }
   else if (anyPseudoParityCount > 1) {
    this.canEnsureFragments();
    this.mNoOfPseudoGroups = 0;
    for (f$iterator = this.mFragmentList.iterator(); f$iterator.hasNext_0();) {
      f = castTo(f$iterator.next_3(), 268);
      pseudoParitiesInGroup = 0;
      pseudoParity1Or2InGroup = 0;
      highRankingTHAtom = 0;
      highRankingEZBond = 0;
      highTHAtomRank = -1;
      highEZBondRank = -1;
      for (i0 = 0; i0 < f.atom.length; i0++) {
        if (isFreshPseudoParityAtom[f.atom[i0]]) {
          pseudoParitiesInGroup++;
          if (this.mTHParity[f.atom[i0]] == 1 || this.mTHParity[f.atom[i0]] == 2) {
            pseudoParity1Or2InGroup++;
            pseudoParity1Or2Found = true;
            if (highTHAtomRank < this.mCanRank[f.atom[i0]]) {
              highTHAtomRank = this.mCanRank[f.atom[i0]];
              highRankingTHAtom = f.atom[i0];
            }
          }
        }
      }
      for (i1 = 0; i1 < f.bond.length; i1++) {
        if (isFreshPseudoParityBond[f.bond[i1]]) {
          pseudoParitiesInGroup++;
          rank1 = this.mCanRank[this.mMol.getBondAtom_0(0, f.bond[i1])];
          rank2 = this.mCanRank[this.mMol.getBondAtom_0(1, f.bond[i1])];
          higherRank = rank1 > rank2?(rank1 << 16) + rank2:(rank2 << 16) + rank1;
          if (this.mEZParity[f.bond[i1]] == 1 || this.mEZParity[f.bond[i1]] == 2) {
            pseudoParity1Or2InGroup++;
            pseudoParity1Or2Found = true;
            if (highEZBondRank < higherRank) {
              highEZBondRank = higherRank;
              highRankingEZBond = f.bond[i1];
            }
          }
        }
      }
      if (pseudoParitiesInGroup == 0)
        continue;
      if (pseudoParitiesInGroup == 1) {
        for (i2 = 0; i2 < f.atom.length; i2++)
          if (isFreshPseudoParityAtom[f.atom[i2]])
            this.mTHParity[f.atom[i2]] = 0;
        for (i = 0; i < f.bond.length; i++)
          if (isFreshPseudoParityBond[f.bond[i]])
            this.mEZParity[f.bond[i]] = 0;
      }
       else {
        if (pseudoParity1Or2InGroup == 1) {
          for (i2 = 0; i2 < f.atom.length; i2++)
            if (isFreshPseudoParityAtom[f.atom[i2]])
              this.mTHParity[f.atom[i2]] = 3;
          for (i = 0; i < f.bond.length; i++)
            if (isFreshPseudoParityBond[f.bond[i]])
              this.mEZParity[f.bond[i]] = 3;
        }
         else {
          if ((this.mMode & 128) != 0) {
            this.mNoOfPseudoGroups++;
            for (i2 = 0; i2 < f.atom.length; i2++)
              if (isFreshPseudoParityAtom[f.atom[i2]])
                this.mPseudoTHGroup[f.atom[i2]] = this.mNoOfPseudoGroups;
            for (i = 0; i < f.bond.length; i++)
              if (isFreshPseudoParityBond[f.bond[i]])
                this.mPseudoEZGroup[f.bond[i]] = this.mNoOfPseudoGroups;
          }
          invertFragmentsStereoFeatures = false;
          if (highTHAtomRank != -1) {
            if (this.mTHParity[highRankingTHAtom] == 2)
              invertFragmentsStereoFeatures = true;
          }
           else {
            if (this.mEZParity[highRankingEZBond] == 2)
              invertFragmentsStereoFeatures = true;
          }
          if (invertFragmentsStereoFeatures) {
            for (i2 = 0; i2 < f.atom.length; i2++) {
              if (isFreshPseudoParityAtom[f.atom[i2]]) {
                switch (this.mTHParity[f.atom[i2]]) {
                  case 1:
                    this.mTHParity[f.atom[i2]] = 2;
                    break;
                  case 2:
                    this.mTHParity[f.atom[i2]] = 1;
                    break;
                }
              }
            }
            for (i = 0; i < f.bond.length; i++) {
              if (isFreshPseudoParityBond[f.bond[i]]) {
                switch (this.mEZParity[f.bond[i]]) {
                  case 1:
                    this.mEZParity[f.bond[i]] = 2;
                    break;
                  case 2:
                    this.mEZParity[f.bond[i]] = 1;
                    break;
                }
              }
            }
          }
        }
      }
    }
  }
  return pseudoParity1Or2Found;
}
;
_.canGetESRGroupRank = function canGetESRGroupRank(groupMember){
  var atomRank, group, group0, groupRank, groupTypeIndex, i, maxAtomRank, maxGroup, memberCount, rank, rankCount;
  groupRank = initMultidimensionalArray(cggl.I_classLit, [{35:1, 4:1, 1:1, 7:1}, {6:1, 4:1, 1:1}], [6, 5], 15, [2, 32], 2);
  for (groupTypeIndex = 0; groupTypeIndex < 2; groupTypeIndex++) {
    atomRank = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, 32, 0, 2);
    rankCount = 0;
    for (group0 = 0; group0 < 32; group0++) {
      if (jsNotEquals(groupMember[groupTypeIndex][group0], null)) {
        memberCount = groupMember[groupTypeIndex][group0].length;
        atomRank[group0] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, memberCount, 15, 1);
        for (i = 0; i < memberCount; i++)
          atomRank[group0][i] = this.mCanRank[groupMember[groupTypeIndex][group0][i]];
        ju.sort_3(atomRank[group0]);
        rankCount++;
      }
    }
    for (rank = rankCount; rank > 0; rank--) {
      maxGroup = 0;
      maxAtomRank = null;
      for (group = 0; group < 32; group++) {
        if (jsNotEquals(atomRank[group], null)) {
          if (jsEquals(maxAtomRank, null) || maxAtomRank.length < atomRank[group].length) {
            maxAtomRank = atomRank[group];
            maxGroup = group;
          }
           else if (maxAtomRank.length == atomRank[group].length) {
            for (i = maxAtomRank.length - 1; i >= 0; i--) {
              if (maxAtomRank[i] < atomRank[group][i]) {
                maxAtomRank = atomRank[group];
                maxGroup = group;
                break;
              }
            }
          }
        }
      }
      groupRank[groupTypeIndex][maxGroup] = rank;
      atomRank[maxGroup] = null;
    }
  }
  return groupRank;
}
;
_.canInitializeRanking = function canInitializeRanking(){
  var atom, atom0, atom1, atom2, atom3, atomList, atomListFound, baseValueSize, bond, bondQFList, bondQueryFeaturesPresent, bondRingSize, i, i0, i1, index_0, list, listLength, rank;
  bondQueryFeaturesPresent = false;
  if (this.mMol.isFragment_0()) {
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mMol.getBondQueryFeatures_0(bond) != 0) {
        bondQueryFeaturesPresent = true;
        break;
      }
    }
  }
  this.mMaxConnAtoms = 2;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++)
    this.mMaxConnAtoms = $wnd.Math.max(this.mMaxConnAtoms, this.mMol.getConnAtoms_0(atom0) + this.mMol.getMetalBondedConnAtoms_0(atom0));
  baseValueSize = $wnd.Math.max(2, bondQueryFeaturesPresent?narrow_int((62 + this.mAtomBits + this.mMaxConnAtoms * (this.mAtomBits + 23)) / 63):narrow_int((62 + this.mAtomBits + this.mMaxConnAtoms * (this.mAtomBits + 5)) / 63));
  this.mCanRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  this.mCanBase = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_CanonizerBaseValue_2_classLit, {4:1, 1:1, 7:1}, 175, this.mMol.getAtoms_0(), 0, 1);
  for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++)
    setCheck(this.mCanBase, atom1, new carc2.CanonizerBaseValue(baseValueSize));
  atomListFound = false;
  for (atom2 = 0; atom2 < this.mMol.getAtoms_0(); atom2++) {
    this.mCanBase[atom2].init_0(atom2);
    if (neq(and_0(this.mMol.getAtomQueryFeatures(atom2), 1), 0) || jsNotEquals(this.mMol.getAtomList_0(atom2), null))
      this.mCanBase[atom2].add_0(8, 6);
    else 
      this.mCanBase[atom2].add_0(8, fromInt_0(this.mMol.getAtomicNo_0(atom2)));
    this.mCanBase[atom2].add_0(8, fromInt_0(this.mMol.getAtomMass_0(atom2)));
    this.mCanBase[atom2].add_0(2, fromInt_0(this.mMol.getAtomPi_0(atom2)));
    this.mCanBase[atom2].add_0(4, fromInt_0(this.mMol.getConnAtoms_0(atom2) + this.mMol.getMetalBondedConnAtoms_0(atom2)));
    if (neq(and_0(this.mMol.getAtomQueryFeatures(atom2), 1), 0))
      this.mCanBase[atom2].add_0(4, 8);
    else 
      this.mCanBase[atom2].add_0(4, fromInt_0(8 + this.mMol.getAtomCharge_0(atom2)));
    this.mCanBase[atom2].add_0(5, fromInt_0($wnd.Math.min(31, this.mMol.getAtomRingSize_0(atom2))));
    this.mCanBase[atom2].add_0(4, fromInt_0(this.canCalcImplicitAbnormalValence(atom2) + 1));
    this.mCanBase[atom2].add_0(2, fromInt_0(this.mMol.getAtomRadical_0(atom2) >> 4));
    if (this.mMol.isFragment_0()) {
      this.mCanBase[atom2].add_0(46, this.mMol.getAtomQueryFeatures(atom2));
      if (jsNotEquals(this.mMol.getAtomList_0(atom2), null))
        atomListFound = true;
    }
  }
  this.mNoOfRanks = this.canPerformRanking();
  if (this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
      bondRingSize = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(atom), 15, 1);
      for (i0 = 0; i0 < this.mMol.getConnAtoms_0(atom); i0++) {
        bondRingSize[i0] = this.mCanRank[this.mMol.getConnAtom_0(atom, i0)] << 5;
        bondRingSize[i0] |= $wnd.Math.min(31, this.mMol.getBondRingSize_0(this.mMol.getConnBond_0(atom, i0)));
      }
      ju.sort_3(bondRingSize);
      for (i1 = this.mMaxConnAtoms; i1 > bondRingSize.length; i1--)
        this.mCanBase[atom].add_0(this.mAtomBits + 5, 0);
      for (i = bondRingSize.length - 1; i >= 0; i--)
        this.mCanBase[atom].add_0(this.mAtomBits + 5, fromInt_0(bondRingSize[i]));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if (atomListFound && this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
      atomList = this.mMol.getAtomList_0(atom);
      listLength = jsEquals(atomList, null)?0:$wnd.Math.min(12, atomList.length);
      for (i0 = 12; i0 > listLength; i0--)
        this.mCanBase[atom].add_0(8, 0);
      for (i = listLength - 1; i >= 0; i--)
        this.mCanBase[atom].add_0(8, fromInt_0(atomList[i]));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if (bondQueryFeaturesPresent && this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
      bondQFList = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, this.mMol.getConnAtoms_0(atom) + this.mMol.getMetalBondedConnAtoms_0(atom), 14, 1);
      index_0 = 0;
      for (i0 = 0; i0 < this.mMol.getAllConnAtomsPlusMetalBonds_0(atom); i0++) {
        if (i0 < this.mMol.getConnAtoms_0(atom) || i0 >= this.mMol.getAllConnAtoms_0(atom)) {
          bondQFList[index_0] = fromInt_0(this.mCanRank[this.mMol.getConnAtom_0(atom, i0)]);
          bondQFList[index_0] = shl_0(bondQFList[index_0], 23);
          bondQFList[index_0] = or_0(bondQFList[index_0], fromInt_0(this.mMol.getBondQueryFeatures_0(this.mMol.getConnBond_0(atom, i0))));
          index_0++;
        }
      }
      ju.sort_4(bondQFList);
      for (i1 = this.mMaxConnAtoms; i1 > bondQFList.length; i1--)
        this.mCanBase[atom].add_0(this.mAtomBits + 23, 0);
      for (i = bondQFList.length - 1; i >= 0; i--)
        this.mCanBase[atom].add_0(this.mAtomBits + 23, bondQFList[i]);
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if ((this.mMode & 8) != 0 && this.mNoOfRanks < this.mMol.getAtoms_0()) {
    list = new carc2.SortedStringList;
    for (atom3 = 0; atom3 < this.mMol.getAtoms_0(); atom3++)
      if (jsNotEquals(this.mMol.getAtomCustomLabel_0(atom3), null))
        list.addString(this.mMol.getAtomCustomLabel_0(atom3));
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      rank = jsEquals(this.mMol.getAtomCustomLabel_0(atom), null)?0:1 + list.getListIndex(this.mMol.getAtomCustomLabel_0(atom));
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(rank));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if ((this.mMode & 16) != 0 && this.mNoOfRanks < this.mMol.getAtoms_0()) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
      this.mCanBase[atom].add_0(1, fromInt_0(this.mMol.isSelectedAtom_0(atom)?1:0));
    }
    this.mNoOfRanks = this.canPerformRanking();
  }
  if ((this.mMode & 512) != 0 && this.mMol.isFragment_0())
    this.canBreakFreeValenceAtomTies();
}
;
_.canInnerBreakTiesByHeteroTopicity = function canInnerBreakTiesByHeteroTopicity(){
  var atom, atom0, atom1, found, i, i0, oldRanks, rank, rankedBond;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    this.mCanBase[atom0].init_0(atom0);
    this.mCanBase[atom0].add_0(2 * this.mAtomBits + 4, shl_0(fromInt_0(this.mCanRank[atom0]), this.mAtomBits + 4));
  }
  for (rank = 1; rank <= this.mNoOfRanks; rank++) {
    found = false;
    for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++)
      if (this.mCanRank[atom1] == rank)
        found = found | this.canCalcTHParity(atom1, 2);
    if (found) {
      oldRanks = this.mNoOfRanks;
      this.mNoOfRanks = this.canPerformRanking();
      if (this.mNoOfRanks != oldRanks)
        return true;
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
        this.mCanBase[atom].init_0(atom);
        this.mCanBase[atom].add_0(2 * this.mAtomBits + 4, shl_0(fromInt_0(this.mCanRank[atom]), this.mAtomBits + 4));
      }
    }
  }
  rankedBond = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_CanonizerBond_2_classLit, {4:1, 1:1, 7:1}, 224, this.mMol.getBonds_0(), 0, 1);
  for (i0 = 0; i0 < rankedBond.length; i0++)
    setCheck(rankedBond, i0, new carc2.CanonizerBond(this.mCanRank[this.mMol.getBondAtom_0(0, i0)], this.mCanRank[this.mMol.getBondAtom_0(1, i0)], i0));
  ju.sort_5(rankedBond);
  for (i = 0; i < rankedBond.length; i++) {
    if (this.canCalcEZParity(rankedBond[i].bond, 2)) {
      while (i + 1 < rankedBond.length && rankedBond[i].compareTo_2(rankedBond[i + 1]) == 0)
        this.canCalcEZParity(rankedBond[++i].bond, 2);
      oldRanks = this.mNoOfRanks;
      this.mNoOfRanks = this.canPerformRanking();
      if (this.mNoOfRanks != oldRanks)
        return true;
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
        this.mCanBase[atom].init_0(atom);
        this.mCanBase[atom].add_0(2 * this.mAtomBits + 4, shl_0(fromInt_0(this.mCanRank[atom]), this.mAtomBits + 4));
      }
    }
  }
  return false;
}
;
_.canMarkESRGroupsForParityNormalization = function canMarkESRGroupsForParityNormalization(){
  var atom, atom0, atom1, atomList, count, groupBase, groupID, i, nextGroupBase, parity;
  count = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++)
    if (this.mTHESRType[atom0] != 0 && (this.mTHESRType[atom0] != 2 || (this.mMode & 256) == 0))
      count++;
  if (count == 0)
    return;
  parity = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
  count = 0;
  for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++) {
    if (this.mTHESRType[atom1] != 0 && (this.mTHESRType[atom1] != 2 || (this.mMode & 256) == 0)) {
      parity[count] = this.mTHESRType[atom1] << 29 | this.mTHESRGroup[atom1] << 24 | this.mCanRank[atom1] << 12 | atom1;
      count++;
    }
  }
  ju.sort_3(parity);
  groupBase = 0;
  nextGroupBase = 0;
  groupID = parity[0] & -16777216;
  while (true) {
    nextGroupBase++;
    if (nextGroupBase == parity.length || groupID != (parity[nextGroupBase] & -16777216)) {
      atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, nextGroupBase - groupBase, 15, 1);
      for (i = groupBase; i < nextGroupBase; i++) {
        atom = parity[i] & 4095;
        atomList[i - groupBase] = atom;
        this.mTHParityNeedsNormalization[atom] = true;
      }
      this.mTHParityNormalizationGroupList.add(atomList);
      if (nextGroupBase == parity.length)
        break;
      groupID = parity[nextGroupBase] & -16777216;
      groupBase = nextGroupBase;
    }
  }
}
;
_.canNormalizeGroupParities = function canNormalizeGroupParities(){
  var allParitiesDetermined, atom, atom$array, atom$index, atom$max, groupAtom, groupNormalized, i, invertParities, isUniqueRank, j, k, maxRank;
  groupNormalized = false;
  for (i = 0; i < this.mTHParityNormalizationGroupList.size(); i++) {
    groupAtom = castTo(this.mTHParityNormalizationGroupList.getAtIndex(i), 6);
    allParitiesDetermined = true;
    maxRank = -1;
    invertParities = false;
    for (j = 0; j < groupAtom.length; j++) {
      atom = groupAtom[j];
      if (this.mTHParity[atom] == 0) {
        allParitiesDetermined = false;
        break;
      }
      if (this.mTHParity[atom] != 3) {
        isUniqueRank = true;
        for (k = 0; k < groupAtom.length; k++) {
          if (k != j && this.mCanRank[atom] == this.mCanRank[groupAtom[k]]) {
            isUniqueRank = false;
            break;
          }
        }
        if (isUniqueRank && maxRank < this.mCanRank[atom]) {
          maxRank = this.mCanRank[atom];
          invertParities = this.mTHParity[atom] == 1;
        }
      }
    }
    if (allParitiesDetermined && maxRank != -1) {
      for (atom$array = groupAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
        atom = atom$array[atom$index];
        if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2)
          this.mTHParityIsMesoInverted[atom] = invertParities;
        this.mTHParityNeedsNormalization[atom] = false;
      }
      this.mTHParityNormalizationGroupList.remove(groupAtom);
      groupNormalized = true;
      i--;
    }
  }
  return groupNormalized;
}
;
_.canPerformRanking = function canPerformRanking(){
  var newNoOfRanks, oldNoOfRanks;
  newNoOfRanks = this.canConsolidate();
  do {
    oldNoOfRanks = newNoOfRanks;
    this.canCalcNextBaseValues();
    newNoOfRanks = this.canConsolidate();
  }
   while (oldNoOfRanks != newNoOfRanks);
  return newNoOfRanks;
}
;
_.canRankFinal = function canRankFinal(){
  if ((this.mMode & 1) != 0 && (this.mMode & 2) == 0) {
    this.mCanRankBeforeTieBreaking = ju.copyOf_9(this.mCanRank, this.mMol.getAtoms_0());
  }
  if ((this.mMode & 2048) == 0) {
    this.mProTHAtomsInSameFragment = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
    this.mProEZAtomsInSameFragment = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
    if (this.mNoOfRanks < this.mMol.getAtoms_0()) {
      this.canBreakTiesByHeteroTopicity();
      if ((this.mMode & 2048) == 0) {
        this.canNormalizeGroupParities();
        if (isNotNull(this.mMesoHelper))
          this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank);
      }
    }
  }
  if (jsEquals(this.mCanRankBeforeTieBreaking, null) && (this.mMode & 1) != 0 && (this.mMode & 2) != 0)
    this.mCanRankBeforeTieBreaking = ju.copyOf_9(this.mCanRank, this.mMol.getAtoms_0());
  while (this.mNoOfRanks < this.mMol.getAtoms_0()) {
    this.canBreakTiesRandomly();
    if ((this.mMode & 2048) == 0) {
      this.canNormalizeGroupParities();
      if (isNotNull(this.mMesoHelper))
        this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank);
    }
  }
  if ((this.mMode & 2048) == 0) {
    this.canNormalizeGroupParities();
    this.canFindPseudoParities();
    this.flagStereoProblems();
  }
}
;
_.canRankStereo = function canRankStereo(){
  var atom, atom0, bond, canRankWithoutStereo, noOfRanksWithoutStereo;
  noOfRanksWithoutStereo = this.mNoOfRanks;
  canRankWithoutStereo = ju.copyOf_9(this.mCanRank, this.mMol.getAtoms_0());
  if (!this.mMol.isFragment_0()) {
    this.canRecursivelyFindCIPParities();
    this.initializeParities(noOfRanksWithoutStereo, canRankWithoutStereo);
  }
  this.mTHESRType = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mTHESRGroup = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    this.mTHESRType[atom0] = narrow_byte(this.mMol.getAtomESRType_0(atom0));
    this.mTHESRGroup[atom0] = narrow_byte(this.mMol.getAtomESRGroup_0(atom0));
  }
  this.mEZESRType = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  this.mEZESRGroup = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    this.mEZESRType[bond] = narrow_byte(this.mMol.getBondESRType_0(bond));
    this.mEZESRGroup[bond] = narrow_byte(this.mMol.getBondESRGroup_0(bond));
  }
  this.canRecursivelyFindAllParities();
  this.mStereoCentersFound = false;
  this.mIsStereoCenter = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] != 0) {
      this.mIsStereoCenter[atom] = true;
      this.mStereoCentersFound = true;
    }
  }
  this.canRemoveOverspecifiedESRGroups();
  this.mMesoHelper = null;
  this.mTHESRTypeNeedsNormalization = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  if (this.mStereoCentersFound) {
    this.mMesoHelper = new carc2.CanonizerMesoHelper(this.mMol, canRankWithoutStereo, this.mIsStereoCenter, this.mTHParity, this.mEZParity, this.mTHESRType, this.mTHESRGroup, this.mEZESRType, this.mEZESRGroup, this.mTHParityRoundIsOdd, this.mEZParityRoundIsOdd, this.mTHESRTypeNeedsNormalization);
    this.mMesoHelper.normalizeESRGroups();
  }
  this.mTHParityIsMesoInverted = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mTHParityNeedsNormalization = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mTHParityNormalizationGroupList = new ju.ArrayList;
  if (isNotNull(this.mMesoHelper))
    this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank);
  this.canMarkESRGroupsForParityNormalization();
  this.initializeParities(noOfRanksWithoutStereo, canRankWithoutStereo);
  this.canRecursivelyFindCanonizedParities();
  if (isNotNull(this.mMesoHelper))
    this.mIsMeso = this.mMesoHelper.isMeso();
  this.determineChirality(canRankWithoutStereo);
}
;
_.canRecursivelyFindAllParities = function canRecursivelyFindAllParities(){
  var atom, bond, ezParityInfo, newNoOfRanks, paritiesFound, parityInfoBits, thParityInfo;
  this.mIsOddParityRound = true;
  paritiesFound = this.canFindParities(false);
  parityInfoBits = 2 + 2 + 5;
  while (this.mNoOfRanks < this.mMol.getAtoms_0() && paritiesFound) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
      thParityInfo = this.mTHParity[atom] << 2 + 5;
      if ((this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2) && this.mTHESRType[atom] != 0) {
        thParityInfo |= this.mTHESRType[atom] << 5;
        thParityInfo |= this.mTHESRGroup[atom];
      }
      this.mCanBase[atom].add_0(2 * 9, fromInt_0(thParityInfo << 9));
    }
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      ezParityInfo = this.mEZParity[bond] << 2 + 5;
      if ((this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2) && this.mMol.getBondType_0(bond) == 1 && this.mEZESRType[bond] != 0) {
        ezParityInfo |= this.mEZESRType[bond] << 5;
        ezParityInfo |= this.mEZESRGroup[bond];
      }
      this.mCanBase[this.mMol.getBondAtom_0(0, bond)].add_1(fromInt_0(ezParityInfo));
      this.mCanBase[this.mMol.getBondAtom_0(1, bond)].add_1(fromInt_0(ezParityInfo));
    }
    newNoOfRanks = this.canPerformRanking();
    if (this.mNoOfRanks == newNoOfRanks)
      break;
    this.mNoOfRanks = newNoOfRanks;
    paritiesFound = this.canFindParities(false);
  }
}
;
_.canRecursivelyFindCIPParities = function canRecursivelyFindCIPParities(){
  var atom, bond, newNoOfRanks, paritiesFound;
  this.mIsOddParityRound = true;
  this.mTHCIPParity = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mEZCIPParity = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  paritiesFound = this.canFindParities(true);
  while (this.mNoOfRanks < this.mMol.getAtoms_0() && paritiesFound) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits + 4, or_0(shl_0(fromInt_0(this.mCanRank[atom]), 4), fromInt_0(this.mTHParity[atom] << 2)));
    }
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      this.mCanBase[this.mMol.getBondAtom_0(0, bond)].add_1(fromInt_0(this.mEZParity[bond]));
      this.mCanBase[this.mMol.getBondAtom_0(1, bond)].add_1(fromInt_0(this.mEZParity[bond]));
    }
    newNoOfRanks = this.canPerformRanking();
    if (this.mNoOfRanks == newNoOfRanks)
      break;
    this.mNoOfRanks = newNoOfRanks;
    paritiesFound = this.canFindParities(true);
  }
}
;
_.canRecursivelyFindCanonizedParities = function canRecursivelyFindCanonizedParities(){
  var atom, bond, esrGroupMember, groupRank, newNoOfRanks, newStereoInfoAvailable, parity;
  this.mIsOddParityRound = true;
  esrGroupMember = this.compileESRGroupMembers();
  if (isNotNull(this.mMesoHelper) && this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank))
    esrGroupMember = this.compileESRGroupMembers();
  if (this.canFindParities(false))
    this.canNormalizeGroupParities();
  newStereoInfoAvailable = true;
  while (this.mNoOfRanks < this.mMol.getAtoms_0() && newStereoInfoAvailable) {
    groupRank = this.canGetESRGroupRank(esrGroupMember);
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      this.mCanBase[atom].init_0(atom);
      this.mCanBase[atom].add_0(this.mAtomBits, fromInt_0(this.mCanRank[atom]));
      this.mCanBase[atom].add_0(20, 0);
      if (!this.mTHESRTypeNeedsNormalization[atom] && this.mTHESRType[atom] != 0)
        this.mCanBase[atom].add_1(add_22(fromInt_0(this.mTHESRType[atom] << 18), shl_0(fromInt_0(groupRank[this.mTHESRType[atom] == 1?0:1][this.mTHESRGroup[atom]]), 8)));
      parity = this.mTHParity[atom];
      if (this.mTHParityIsMesoInverted[atom]) {
        if (parity == 1)
          parity = 2;
        else if (parity == 2)
          parity = 1;
      }
      this.mCanBase[atom].add_1(fromInt_0(parity << 4));
    }
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      this.mCanBase[this.mMol.getBondAtom_0(0, bond)].add_1(fromInt_0(this.mEZParity[bond]));
      this.mCanBase[this.mMol.getBondAtom_0(1, bond)].add_1(fromInt_0(this.mEZParity[bond]));
    }
    newNoOfRanks = this.canPerformRanking();
    if (this.mNoOfRanks == newNoOfRanks)
      break;
    this.mNoOfRanks = newNoOfRanks;
    newStereoInfoAvailable = false;
    if (isNotNull(this.mMesoHelper) && this.mMesoHelper.normalizeESRGroupSwappingAndRemoval(this.mCanRank)) {
      newStereoInfoAvailable = true;
      esrGroupMember = this.compileESRGroupMembers();
    }
    if (this.canFindParities(false)) {
      newStereoInfoAvailable = true;
      this.canNormalizeGroupParities();
    }
  }
}
;
_.canRemoveOverspecifiedESRGroups = function canRemoveOverspecifiedESRGroups(){
  var atom, bond;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (!this.mIsStereoCenter[atom] || this.mTHParity[atom] == 3)
      this.mTHESRType[atom] = 0;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    if (this.mMol.getBondType_0(bond) != 1 || this.mEZParity[bond] == 0 || this.mEZParity[bond] == 3)
      this.mEZESRType[bond] = 0;
}
;
_.canSetAbnormalValence = function canSetAbnormalValence(atom, valence){
  if (jsEquals(this.mAbnormalValence, null)) {
    this.mAbnormalValence = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
    ju.fill(this.mAbnormalValence, narrow_byte(-1));
  }
  this.mAbnormalValence[atom] = narrow_byte(valence);
}
;
_.cipCalcEZParity = function cipCalcEZParity(bond){
  var bondAtom, connAtom, count, e, i, invertedOrder, j;
  if ((this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2) && !this.mMol.isSmallRingBond_0(bond)) {
    invertedOrder = false;
    try {
      for (i = 0; i < 2; i++) {
        bondAtom = this.mMol.getBondAtom_0(i, bond);
        if (this.mMol.getConnAtoms_0(bondAtom) == 3) {
          connAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
          count = 0;
          for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++)
            if (this.mMol.getConnBond_0(bondAtom, j) != bond)
              connAtom[count++] = this.mMol.getConnAtom_0(bondAtom, j);
          if (this.mCanRank[connAtom[0]] > this.mCanRank[connAtom[1]] ^ this.cipComparePriority(bondAtom, connAtom[0], connAtom[1]))
            invertedOrder = !invertedOrder;
        }
      }
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        this.mEZCIPParity[bond] = 3;
        return;
      }
       else 
        throw toJs($e0);
    }
    if (this.mEZParity[bond] == 1 ^ invertedOrder)
      this.mEZCIPParity[bond] = 1;
    else 
      this.mEZCIPParity[bond] = 2;
  }
}
;
_.cipCalcTHParity = function cipCalcTHParity(atom){
  var alleneAtom, cipConnAtom, connAtom, count, e, i, invertedOrder, j;
  if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2) {
    invertedOrder = false;
    if (this.mMol.getAtomPi_0(atom) == 2 && this.mMol.getConnAtoms_0(atom) == 2) {
      try {
        for (i = 0; i < 2; i++) {
          alleneAtom = this.mMol.getConnAtom_0(atom, i);
          if (this.mMol.getConnAtoms_0(alleneAtom) == 3) {
            connAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
            count = 0;
            for (j = 0; j < this.mMol.getConnAtoms_0(alleneAtom); j++)
              if (this.mMol.getConnBondOrder_0(alleneAtom, j) == 1)
                connAtom[count++] = this.mMol.getConnAtom_0(alleneAtom, j);
            if (this.mCanRank[connAtom[0]] > this.mCanRank[connAtom[1]] ^ this.cipComparePriority(alleneAtom, connAtom[0], connAtom[1]))
              invertedOrder = !invertedOrder;
          }
        }
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 14)) {
          e = $e0;
          this.mTHCIPParity[atom] = 3;
          return;
        }
         else 
          throw toJs($e0);
      }
    }
     else {
      try {
        cipConnAtom = this.cipGetOrderedConns(atom);
      }
       catch ($e1) {
        $e1 = toJava($e1);
        if (instanceOf($e1, 14)) {
          e = $e1;
          this.mTHCIPParity[atom] = 3;
          return;
        }
         else 
          throw toJs($e1);
      }
      for (i = 1; i < cipConnAtom.length; i++)
        for (j = 0; j < i; j++)
          if (this.mCanRank[cipConnAtom[i]] < this.mCanRank[cipConnAtom[j]])
            invertedOrder = !invertedOrder;
    }
    if (this.mTHParity[atom] == 1 ^ invertedOrder)
      this.mTHCIPParity[atom] = 1;
    else 
      this.mTHCIPParity[atom] = 2;
  }
}
;
_.cipComparePriority = function cipComparePriority(rootAtom, atom1, atom2){
  var atom, atom0, atom3, atomInParentChain, atomUsed, bond, candidate, cipRank, current, currentAtom, currentLevel, delocalizedBondCount, delocalizedMeanAtomicNo, ezDataFound, graphAtom, graphIsPseudo, graphParent, graphRank, graphSize, highest, i, i0, isotopDataFound, j, levelStart, mass1, mass2, parent_0, parentGraphIndex, rsDataFound;
  if (this.mMol.getAtomicNo_0(atom1) != this.mMol.getAtomicNo_0(atom2))
    return this.mMol.getAtomicNo_0(atom1) > this.mMol.getAtomicNo_0(atom2);
  if (this.mMol.getAtomMass_0(atom1) != this.mMol.getAtomMass_0(atom2)) {
    mass1 = this.mMol.isNaturalAbundance_0(atom1)?(carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mMol.getAtomicNo_0(atom1)]:this.mMol.getAtomMass_0(atom1);
    mass2 = this.mMol.isNaturalAbundance_0(atom2)?(carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mMol.getAtomicNo_0(atom2)]:this.mMol.getAtomMass_0(atom2);
    return mass1 > mass2;
  }
  graphSize = this.mMol.getAtoms_0();
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, graphSize, 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, graphSize, 15, 1);
  graphRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, graphSize, 15, 1);
  graphIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, graphSize, 16, 1);
  atomUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  graphAtom[0] = rootAtom;
  graphAtom[1] = atom1;
  graphAtom[2] = atom2;
  graphParent[0] = -1;
  graphParent[1] = 0;
  graphParent[2] = 0;
  atomUsed[rootAtom] = true;
  atomUsed[atom1] = true;
  atomUsed[atom2] = true;
  current = 1;
  highest = 2;
  levelStart = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 64, 15, 1);
  levelStart[1] = 1;
  levelStart[2] = 3;
  currentLevel = 2;
  while (current <= highest) {
    while (current < levelStart[currentLevel]) {
      currentAtom = graphAtom[current];
      if (!graphIsPseudo[current]) {
        delocalizedBondCount = 0;
        delocalizedMeanAtomicNo = 0;
        for (i0 = 0; i0 < this.mMol.getConnAtoms_0(currentAtom); i0++) {
          candidate = this.mMol.getConnAtom_0(currentAtom, i0);
          if (highest + this.mMol.getConnBondOrder_0(currentAtom, i0) + 1 >= graphSize) {
            graphSize += this.mMol.getAtoms_0();
            graphAtom = this.resize(graphAtom, graphSize);
            graphParent = this.resize(graphParent, graphSize);
            graphRank = this.resize(graphRank, graphSize);
            graphIsPseudo = this.resize_0(graphIsPseudo, graphSize);
          }
          if (this.mMol.isDelocalizedBond_0(this.mMol.getConnBond_0(currentAtom, i0))) {
            delocalizedBondCount++;
            delocalizedMeanAtomicNo += this.mMol.getAtomicNo_0(candidate);
          }
           else if (candidate != rootAtom) {
            for (j = 1; j < this.mMol.getConnBondOrder_0(currentAtom, i0); j++) {
              highest++;
              graphAtom[highest] = candidate;
              graphParent[highest] = current;
              graphIsPseudo[highest] = true;
            }
          }
          parentGraphIndex = graphParent[current];
          if (candidate == graphAtom[parentGraphIndex])
            continue;
          atomInParentChain = false;
          if (atomUsed[candidate]) {
            parent_0 = graphParent[parentGraphIndex];
            while (parent_0 != -1) {
              if (candidate == graphAtom[parent_0]) {
                atomInParentChain = true;
                break;
              }
              parent_0 = graphParent[parent_0];
            }
          }
          if (atomInParentChain) {
            highest++;
            graphAtom[highest] = candidate;
            graphParent[highest] = current;
            graphIsPseudo[highest] = true;
          }
           else {
            highest++;
            graphAtom[highest] = candidate;
            graphParent[highest] = current;
            atomUsed[candidate] = true;
          }
        }
        if (delocalizedBondCount != 0) {
          highest++;
          graphRank[highest] = narrow_int((delocalizedMeanAtomicNo << 2) / delocalizedBondCount);
          graphParent[highest] = current;
          graphIsPseudo[highest] = true;
        }
      }
      current++;
      if (current == 10000) {
        throw toJs(new jl.Exception_1('Emergency break in while loop.'));
      }
    }
    if (levelStart.length == currentLevel + 1)
      levelStart = this.resize(levelStart, levelStart.length + 64);
    levelStart[currentLevel + 1] = highest + 1;
    for (i = levelStart[currentLevel]; i < levelStart[currentLevel + 1]; i++) {
      if (graphRank[i] == 0)
        graphRank[i] = (this.mMol.getAtomicNo_0(graphAtom[i]) == 151?1:this.mMol.getAtomicNo_0(graphAtom[i]) == 152?1:this.mMol.getAtomicNo_0(graphAtom[i])) << 2;
      graphRank[i] += graphRank[graphParent[i]] << 16;
    }
    this.cipUpdateParentRanking(graphIsPseudo, graphRank, graphParent, graphAtom, levelStart, currentLevel);
    if (graphRank[1] != graphRank[2])
      return graphRank[1] > graphRank[2];
    if (currentLevel > 1)
      this.cipCompileRelativeRanks(graphRank, graphParent, levelStart, currentLevel);
    currentLevel++;
  }
  cipRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  isotopDataFound = false;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (atomUsed[atom0] && !this.mMol.isNaturalAbundance_0(atom0)) {
      isotopDataFound = true;
      break;
    }
  }
  if (isotopDataFound) {
    for (atom3 = 0; atom3 < this.mMol.getAtoms_0(); atom3++)
      cipRank[atom3] = this.mMol.isNaturalAbundance_0(atom3)?(carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mMol.getAtomicNo_0(atom3)]:this.mMol.getAtomMass_0(atom3);
    if (this.cipTryDistinguishBranches(graphIsPseudo, graphRank, graphParent, graphAtom, cipRank, levelStart, currentLevel))
      return graphRank[1] > graphRank[2];
  }
  ju.fill_0(cipRank, 0);
  ezDataFound = false;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (atomUsed[this.mMol.getBondAtom_0(0, bond)] || atomUsed[this.mMol.getBondAtom_0(1, bond)]) {
      if (this.mEZCIPParity[bond] == 1) {
        cipRank[this.mMol.getBondAtom_0(0, bond)] = 1;
        cipRank[this.mMol.getBondAtom_0(1, bond)] = 1;
        ezDataFound = true;
      }
       else if (this.mEZCIPParity[bond] == 2) {
        cipRank[this.mMol.getBondAtom_0(0, bond)] = 2;
        cipRank[this.mMol.getBondAtom_0(1, bond)] = 2;
        ezDataFound = true;
      }
    }
  }
  if (ezDataFound && this.cipTryDistinguishBranches(graphIsPseudo, graphRank, graphParent, graphAtom, cipRank, levelStart, currentLevel))
    return graphRank[1] > graphRank[2];
  ju.fill_0(cipRank, 0);
  rsDataFound = false;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (atomUsed[atom]) {
      if (this.mTHCIPParity[atom] == 2) {
        cipRank[atom] = 1;
        rsDataFound = true;
      }
       else if (this.mTHCIPParity[atom] == 1) {
        cipRank[atom] = 2;
        rsDataFound = true;
      }
    }
  }
  if (rsDataFound && this.cipTryDistinguishBranches(graphIsPseudo, graphRank, graphParent, graphAtom, cipRank, levelStart, currentLevel))
    return graphRank[1] > graphRank[2];
  this.mCIPParityNoDistinctionProblem = true;
  throw toJs(new jl.Exception_1('no distinction applying CIP rules'));
}
;
_.cipCompileRelativeRanks = function cipCompileRelativeRanks(graphRank, graphParent, levelStart, currentLevel){
  var comparator, consolidatedRank, count, i, i0, i1, level, levelOffset, rankObject;
  levelOffset = levelStart[currentLevel];
  count = levelStart[currentLevel + 1] - levelOffset;
  rankObject = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Canonizer$2RankObject_2_classLit, {4:1, 1:1, 7:1}, 198, count, 0, 1);
  for (i0 = 0; i0 < count; i0++) {
    setCheck(rankObject, i0, new carc2.Canonizer$2RankObject(this));
    rankObject[i0].rank = graphRank[i0 + levelOffset];
    rankObject[i0].parent_0 = graphParent[i0 + levelOffset];
    rankObject[i0].index_0 = i0 + levelOffset;
  }
  comparator = new carc2.Canonizer$2(this);
  for (level = currentLevel; level > 1; level--) {
    for (i1 = 0; i1 < count; i1++) {
      rankObject[i1].rank += graphRank[rankObject[i1].parent_0] << 16;
      rankObject[i1].parent_0 = graphParent[rankObject[i1].parent_0];
    }
    ju.sort_7(rankObject, comparator);
    consolidatedRank = 1;
    for (i = 0; i < count; i++) {
      graphRank[rankObject[i].index_0] = consolidatedRank;
      if (i != count - 1 && comparator.compare_0(rankObject[i], rankObject[i + 1]) != 0)
        consolidatedRank++;
    }
  }
}
;
_.cipGetOrderedConns = function cipGetOrderedConns(atom){
  var found, i, i0, j, noOfConns, orderedConn, temp;
  noOfConns = this.mMol.getAllConnAtoms_0(atom);
  orderedConn = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, noOfConns, 15, 1);
  for (i0 = 0; i0 < noOfConns; i0++)
    orderedConn[i0] = this.mMol.getConnAtom_0(atom, i0);
  for (i = noOfConns; i > 1; i--) {
    found = false;
    for (j = 1; j < i; j++) {
      if (this.cipComparePriority(atom, orderedConn[j - 1], orderedConn[j])) {
        found = true;
        temp = orderedConn[j - 1];
        orderedConn[j - 1] = orderedConn[j];
        orderedConn[j] = temp;
      }
    }
    if (!found)
      break;
  }
  return orderedConn;
}
;
_.cipTryDistinguishBranches = function cipTryDistinguishBranches(graphIsPseudo, graphRank, graphParent, graphAtom, cipRank, levelStart, currentLevel){
  var i, level;
  for (level = 1; level < currentLevel; level++) {
    for (i = levelStart[level]; i < levelStart[level + 1]; i++)
      graphRank[i] = cipRank[graphAtom[i]] + (graphRank[graphParent[i]] << 8);
    this.cipUpdateParentRanking(graphIsPseudo, graphRank, graphParent, graphAtom, levelStart, level);
    if (graphRank[1] != graphRank[2])
      return true;
    if (level > 1)
      this.cipCompileRelativeRanks(graphRank, graphParent, levelStart, level);
  }
  return false;
}
;
_.cipUpdateParentRanking = function cipUpdateParentRanking(graphIsPseudo, graphRank, graphParent, graphAtom, levelStart, currentLevel){
  var baseIndex, comparator, consolidatedRank, i, level, nextBaseIndex, parent_0, parent0, parentCount, parentIndex, rankObject;
  for (level = currentLevel; level > 1; level--) {
    parentCount = levelStart[level] - levelStart[level - 1];
    rankObject = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Canonizer$1RankObject_2_classLit, {4:1, 1:1, 7:1}, 197, parentCount, 0, 1);
    baseIndex = levelStart[level];
    for (parent0 = 0; parent0 < parentCount; parent0++) {
      parentIndex = levelStart[level - 1] + parent0;
      nextBaseIndex = baseIndex;
      while (nextBaseIndex < levelStart[level + 1] && graphParent[nextBaseIndex] == parentIndex)
        nextBaseIndex++;
      setCheck(rankObject, parent0, new carc2.Canonizer$1RankObject(this));
      rankObject[parent0].parentIndex = parentIndex;
      rankObject[parent0].parentRank = graphRank[parentIndex];
      rankObject[parent0].parentHCount = graphIsPseudo[parentIndex]?0:this.mMol.getPlainHydrogens(graphAtom[parentIndex]);
      rankObject[parent0].childRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, nextBaseIndex - baseIndex, 15, 1);
      for (i = baseIndex; i < nextBaseIndex; i++)
        rankObject[parent0].childRank[i - baseIndex] = graphRank[i];
      ju.sort_3(rankObject[parent0].childRank);
      baseIndex = nextBaseIndex;
    }
    comparator = new carc2.Canonizer$1(this);
    ju.sort_7(rankObject, comparator);
    consolidatedRank = 1;
    for (parent_0 = 0; parent_0 < parentCount; parent_0++) {
      graphRank[rankObject[parent_0].parentIndex] = consolidatedRank;
      if (parent_0 != parentCount - 1 && comparator.compare_0(rankObject[parent_0], rankObject[parent_0 + 1]) != 0)
        consolidatedRank++;
    }
  }
}
;
_.compileESRGroupMembers = function compileESRGroupMembers(){
  var atom, esrGroupMember;
  esrGroupMember = initMultidimensionalArray(cggl.I_classLit, [{4:1, 1:1, 7:1}, {35:1, 4:1, 1:1, 7:1}], [35, 6], 0, [2, 32], 2);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mIsStereoCenter[atom]) {
      if (this.mTHESRType[atom] == 1)
        esrGroupMember[0][this.mTHESRGroup[atom]] = carc2.addToIntArray(esrGroupMember[0][this.mTHESRGroup[atom]], atom);
      else if (this.mTHESRType[atom] == 2)
        esrGroupMember[1][this.mTHESRGroup[atom]] = carc2.addToIntArray(esrGroupMember[0][this.mTHESRGroup[atom]], atom);
    }
  }
  return esrGroupMember;
}
;
_.determineChirality = function determineChirality(canRankWithoutStereo){
  var andGroupUsed, atom, bond, group, stereoCenters, stereoCentersTypeAbs, stereoCentersTypeAbsInMesoFragment, stereoCentersTypeAndGroup0, stereoCentersTypeOrGroup0, stereoCentersUnknown, typeAndGroups, typeAndInMesoFragmentFound;
  stereoCenters = 0;
  stereoCentersUnknown = 0;
  stereoCentersTypeAbs = 0;
  stereoCentersTypeAbsInMesoFragment = 0;
  stereoCentersTypeAndGroup0 = 0;
  stereoCentersTypeOrGroup0 = 0;
  typeAndGroups = 0;
  typeAndInMesoFragmentFound = false;
  andGroupUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, 32, 16, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] != 0) {
      stereoCenters++;
      if (this.mTHParity[atom] == 3) {
        stereoCentersUnknown++;
      }
       else {
        if (this.mTHESRType[atom] == 0) {
          stereoCentersTypeAbs++;
          if (isNotNull(this.mMesoHelper) && this.mMesoHelper.isInMesoFragment(atom))
            stereoCentersTypeAbsInMesoFragment++;
        }
         else if (this.mTHESRType[atom] == 2) {
          if (this.mTHESRGroup[atom] == 0)
            stereoCentersTypeOrGroup0++;
        }
         else if (this.mTHESRType[atom] == 1) {
          group = this.mTHESRGroup[atom];
          if (!andGroupUsed[group]) {
            typeAndGroups++;
            andGroupUsed[group] = true;
          }
          if (this.mTHESRGroup[atom] == 0)
            stereoCentersTypeAndGroup0++;
          if (isNotNull(this.mMesoHelper) && this.mMesoHelper.isInMesoFragment(atom))
            typeAndInMesoFragmentFound = true;
        }
      }
    }
  }
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mEZParity[bond] != 0 && this.mMol.getBondType_0(bond) == 1) {
      stereoCenters++;
      if (this.mEZParity[bond] == 3) {
        stereoCentersUnknown++;
      }
       else {
        if (this.mEZESRType[bond] == 0) {
          stereoCentersTypeAbs++;
          if (isNotNull(this.mMesoHelper) && this.mMesoHelper.isInMesoFragment(this.mMol.getBondAtom_0(0, bond)) && this.mMesoHelper.isInMesoFragment(this.mMol.getBondAtom_0(1, bond)))
            stereoCentersTypeAbsInMesoFragment++;
        }
         else if (this.mEZESRType[bond] == 2) {
          if (this.mEZESRGroup[bond] == 0)
            stereoCentersTypeOrGroup0++;
        }
         else if (this.mEZESRType[bond] == 1) {
          group = this.mEZESRGroup[bond];
          if (!andGroupUsed[group]) {
            typeAndGroups++;
            andGroupUsed[group] = true;
          }
          if (this.mEZESRGroup[bond] == 0)
            stereoCentersTypeAndGroup0++;
          if (isNotNull(this.mMesoHelper) && this.mMesoHelper.isInMesoFragment(this.mMol.getBondAtom_0(0, bond)) && this.mMesoHelper.isInMesoFragment(this.mMol.getBondAtom_0(1, bond)))
            typeAndInMesoFragmentFound = true;
        }
      }
    }
  }
  if (stereoCenters == 0) {
    this.mMol.setChirality_0(65536);
    return;
  }
  if (stereoCentersUnknown != 0) {
    this.mMol.setChirality_0(0);
    return;
  }
  if (this.mIsMeso) {
    this.mMol.setChirality_0(131072 + (1 << typeAndGroups));
    return;
  }
  if (stereoCentersTypeAndGroup0 + stereoCentersTypeAbsInMesoFragment == stereoCenters && !typeAndInMesoFragmentFound) {
    this.mMol.setChirality_0(196608);
  }
   else if (stereoCentersTypeAbs == stereoCenters) {
    this.mMol.setChirality_0(262144);
  }
   else if (stereoCentersTypeOrGroup0 == stereoCenters) {
    this.mMol.setChirality_0(327680);
  }
   else if (stereoCentersTypeAbs == stereoCenters - 1 && stereoCentersTypeAndGroup0 == 1) {
    this.mMol.setChirality_0(393216);
  }
   else {
    this.mMol.setChirality_0(458752 + (1 << typeAndGroups));
  }
}
;
_.encodeABVL = function encodeABVL(value_0, binCount){
  return $wnd.Math.min(binCount - 1, $wnd.Math.max(0, round_int(0.5 + jl.log10(value_0 / 0.1) / jl.log10(200 / 0.1) * (binCount - 1))));
}
;
_.encodeBits = function encodeBits(data_0, bits){
  while (bits != 0) {
    if (this.mEncodingBitsAvail == 0) {
      if (!this.mEncodeAvoid127 || this.mEncodingTempData != 63)
        this.mEncodingTempData += 64;
      this.mEncodingBuffer.append_4(narrow_char(this.mEncodingTempData));
      this.mEncodingBitsAvail = 6;
      this.mEncodingTempData = 0;
    }
    this.mEncodingTempData <<= 1;
    this.mEncodingTempData = toInt_0(or_0(fromInt_0(this.mEncodingTempData), and_0(data_0, 1)));
    data_0 = shr_0(data_0, 1);
    bits--;
    this.mEncodingBitsAvail--;
  }
}
;
_.encodeBitsEnd = function encodeBitsEnd(){
  this.mEncodingTempData <<= this.mEncodingBitsAvail;
  if (!this.mEncodeAvoid127 || this.mEncodingTempData != 63)
    this.mEncodingTempData += 64;
  this.mEncodingBuffer.append_4(narrow_char(this.mEncodingTempData));
  return this.mEncodingBuffer.toString_0();
}
;
_.encodeBitsStart = function encodeBitsStart(avoid127){
  this.mEncodingBuffer = new jl.StringBuilder;
  this.mEncodingBitsAvail = 6;
  this.mEncodingTempData = 0;
  this.mEncodeAvoid127 = avoid127;
}
;
_.encodeCoordinates = function encodeCoordinates(keepPositionAndScale, coords){
  var atom, avbl, avblDefault, binCount, i, i0, i1, i2, includeHydrogenCoordinates, increment, j, maxDelta, maxDeltaPlusHalfIncrement, resolutionBits;
  if (this.mMol.getAtoms_0() == 0) {
    this.mEncodedCoords = '';
    return;
  }
  includeHydrogenCoordinates = false;
  if (this.mZCoordinatesAvailable && this.mMol.getAllAtoms_0() > this.mMol.getAtoms_0() && !this.mMol.isFragment_0()) {
    includeHydrogenCoordinates = true;
    for (i0 = 0; i0 < this.mMol.getAtoms_0(); i0++) {
      if (this.mMol.getImplicitHydrogens_0(i0) != 0) {
        includeHydrogenCoordinates = false;
        break;
      }
    }
  }
  resolutionBits = this.mZCoordinatesAvailable?16:8;
  this.encodeBitsStart(true);
  this.mEncodingBuffer.append_4(includeHydrogenCoordinates?35:33);
  this.encodeBits(fromInt_0(this.mZCoordinatesAvailable?1:0), 1);
  this.encodeBits(fromInt_0(keepPositionAndScale?1:0), 1);
  this.encodeBits(fromInt_0(narrow_int(resolutionBits / 2)), 4);
  maxDelta = 0;
  for (i1 = 1; i1 < this.mMol.getAtoms_0(); i1++)
    maxDelta = this.getMaxDelta(this.mGraphAtom[i1], this.mGraphFrom[i1] == -1?-1:this.mGraphAtom[this.mGraphFrom[i1]], maxDelta, coords);
  if (includeHydrogenCoordinates) {
    for (i0 = 0; i0 < this.mMol.getAtoms_0(); i0++) {
      atom = this.mGraphAtom[i0];
      for (j = this.mMol.getConnAtoms_0(atom); j < this.mMol.getAllConnAtoms_0(atom); j++)
        maxDelta = this.getMaxDelta(this.mMol.getConnAtom_0(atom, j), atom, maxDelta, coords);
    }
  }
  if (this.mMol.getAtoms_0() > 1 && maxDelta == 0) {
    this.mEncodedCoords = '';
    return;
  }
  binCount = 1 << resolutionBits;
  increment = maxDelta / (binCount / 2 - 1);
  maxDeltaPlusHalfIncrement = maxDelta + increment / 2;
  for (i2 = 1; i2 < this.mMol.getAtoms_0(); i2++)
    this.encodeCoords(this.mGraphAtom[i2], this.mGraphFrom[i2] == -1?-1:this.mGraphAtom[this.mGraphFrom[i2]], maxDeltaPlusHalfIncrement, increment, resolutionBits, coords);
  if (includeHydrogenCoordinates) {
    for (i = 0; i < this.mMol.getAtoms_0(); i++) {
      atom = this.mGraphAtom[i];
      for (j = this.mMol.getConnAtoms_0(atom); j < this.mMol.getAllConnAtoms_0(atom); j++)
        this.encodeCoords(this.mMol.getConnAtom_0(atom, j), atom, maxDeltaPlusHalfIncrement, increment, resolutionBits, coords);
    }
  }
  if (keepPositionAndScale) {
    avblDefault = this.mZCoordinatesAvailable?1.5:carc2.getDefaultAverageBondLength();
    avbl = this.mMol.getAverageBondLength_3(includeHydrogenCoordinates?this.mMol.getAllAtoms_0():this.mMol.getAtoms_0(), includeHydrogenCoordinates?this.mMol.getAllBonds_0():this.mMol.getBonds_0(), avblDefault, coords);
    this.encodeBits(fromInt_0(this.encodeABVL(avbl, binCount)), resolutionBits);
    this.encodeBits(fromInt_0(this.encodeShift(coords[this.mGraphAtom[0]].x_0 / avbl, binCount)), resolutionBits);
    this.encodeBits(fromInt_0(this.encodeShift(coords[this.mGraphAtom[0]].y_0 / avbl, binCount)), resolutionBits);
    if (this.mZCoordinatesAvailable)
      this.encodeBits(fromInt_0(this.encodeShift(coords[this.mGraphAtom[0]].z_0 / avbl, binCount)), resolutionBits);
  }
  this.mEncodedCoords = this.encodeBitsEnd();
}
;
_.encodeCoords = function encodeCoords(atom, from, maxDeltaPlusHalfIncrement, increment, resolutionBits, coords){
  var deltaX, deltaY, deltaZ;
  deltaX = from == -1?(coords[atom].x_0 - coords[this.mGraphAtom[0]].x_0) / 8:coords[atom].x_0 - coords[from].x_0;
  deltaY = from == -1?(coords[atom].y_0 - coords[this.mGraphAtom[0]].y_0) / 8:coords[atom].y_0 - coords[from].y_0;
  this.encodeBits(fromInt_0(round_int((maxDeltaPlusHalfIncrement + deltaX) / increment)), resolutionBits);
  this.encodeBits(fromInt_0(round_int((maxDeltaPlusHalfIncrement + deltaY) / increment)), resolutionBits);
  if (this.mZCoordinatesAvailable) {
    deltaZ = from == -1?(coords[atom].z_0 - coords[this.mGraphAtom[0]].z_0) / 8:coords[atom].z_0 - coords[from].z_0;
    this.encodeBits(fromInt_0(round_int((maxDeltaPlusHalfIncrement + deltaZ) / increment)), resolutionBits);
  }
}
;
_.encodeFeatureNo = function encodeFeatureNo(codeNo){
  var i;
  for (i = 0; i < this.mFeatureBlock; i++)
    codeNo -= 16;
  if (codeNo < 0)
    (jl.$clinit_System() , jl.out_0).println_0('ERROR in Canonizer: Code unexpectedly low.');
  while (codeNo > 15) {
    this.encodeBits(1, 1);
    this.encodeBits(15, 4);
    codeNo -= 16;
    this.mFeatureBlock++;
  }
  this.encodeBits(1, 1);
  this.encodeBits(fromInt_0(codeNo), 4);
}
;
_.encodeMapping = function encodeMapping(){
  var atom, atom0, autoMappingFound, manualMappingFound, maxMapNo, nbits;
  if (this.mMol.getAtoms_0() == 0) {
    this.mMapping = '';
    return;
  }
  maxMapNo = 0;
  autoMappingFound = false;
  manualMappingFound = false;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (maxMapNo < this.mMol.getAtomMapNo_0(atom0))
      maxMapNo = this.mMol.getAtomMapNo_0(atom0);
    if (this.mMol.isAutoMappedAtom_0(atom0))
      autoMappingFound = true;
    else 
      manualMappingFound = true;
  }
  if (maxMapNo == 0) {
    this.mMapping = '';
    return;
  }
  nbits = carc2.getNeededBits(maxMapNo);
  this.encodeBitsStart(true);
  this.encodeBits(fromInt_0(nbits), 4);
  this.encodeBits(fromInt_0(autoMappingFound?1:0), 1);
  this.encodeBits(fromInt_0(manualMappingFound?1:0), 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    this.encodeBits(fromInt_0(this.mMol.getAtomMapNo_0(this.mGraphAtom[atom])), nbits);
    if (autoMappingFound && manualMappingFound)
      this.encodeBits(fromInt_0(this.mMol.isAutoMappedAtom_0(this.mGraphAtom[atom])?1:0), 1);
  }
  this.mMapping = this.encodeBitsEnd();
}
;
_.encodeShift = function encodeShift(value_0, binCount){
  var halfBinCount, intValue, isNegative, steepness;
  halfBinCount = narrow_int(binCount / 2);
  isNegative = value_0 < 0;
  value_0 = $wnd.Math.abs(value_0);
  steepness = narrow_int(binCount / 32);
  intValue = $wnd.Math.min(halfBinCount - 1, toInt_0(jl.round_1(value_0 * halfBinCount / (value_0 + steepness))));
  return isNegative?halfBinCount + intValue:intValue;
}
;
_.flagStereoProblems = function flagStereoProblems(){
  var atom, bond, bond0;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] == 3 && !this.mMol.isAtomConfigurationUnknown_0(atom))
      this.mMol.setStereoProblem(atom);
    if ((this.mMol.getAtomESRType_0(atom) == 1 || this.mMol.getAtomESRType_0(atom) == 2) && this.mTHParity[atom] == 3)
      this.mMol.setStereoProblem(atom);
    if (this.mMol.isAtomConfigurationUnknown_0(atom) && this.mTHParity[atom] != 3 && !this.isUnknownBINAPBondAtom(atom))
      this.mMol.setStereoProblem(atom);
  }
  for (bond0 = 0; bond0 < this.mMol.getAllBonds_0(); bond0++)
    if (this.mMol.isStereoBond_0(bond0) && !this.isJustifiedStereoBond(bond0))
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(0, bond0));
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mMol.getBondOrder_0(bond) == 2) {
      if (this.mMol.isBondParityUnknownOrNone_0(bond) && (this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2)) {
        this.mEZParity[bond] = 3;
        this.mMol.setBondType_0(bond, 386);
      }
      if (this.mEZParity[bond] == 3 && !this.mEZParityIsPseudo[bond]) {
        if (this.mMol.getBondType_0(bond) != 386) {
          this.mMol.setStereoProblem(this.mMol.getBondAtom_0(0, bond));
          this.mMol.setStereoProblem(this.mMol.getBondAtom_0(1, bond));
        }
      }
    }
    if (this.mMol.getBondType_0(bond) == 1 && this.mEZParity[bond] == 3 && !this.mMol.isAtomConfigurationUnknown_0(this.mMol.getBondAtom_0(0, bond)) && !this.mMol.isAtomConfigurationUnknown_0(this.mMol.getBondAtom_0(1, bond))) {
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(0, bond));
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(1, bond));
    }
    if ((this.mMol.getBondESRType_0(bond) == 1 || this.mMol.getBondESRType_0(bond) == 2) && (this.mMol.getBondType_0(bond) != 1 || this.mEZParity[bond] != 1 && this.mEZParity[bond] != 2)) {
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(0, bond));
      this.mMol.setStereoProblem(this.mMol.getBondAtom_0(1, bond));
    }
  }
}
;
_.generateGraph = function generateGraph(){
  var atom, atom0, atomHandled, atomsWithoutParents, bond, bondHandled, connAtom, firstUnhandled, firstUnused, graphBonds, hiAtom, highestRank, highestRankingAtom, highestRankingConnAtom, highestRankingConnBond, i, loAtom, lowAtomNo1, lowAtomNo2, lowBond, startAtom;
  if (this.mMol.getAtoms_0() == 0)
    return;
  if (this.mGraphGenerated)
    return;
  this.mGraphRings = 0;
  startAtom = 0;
  for (atom0 = 1; atom0 < this.mMol.getAtoms_0(); atom0++)
    if (this.mCanRank[atom0] > this.mCanRank[startAtom])
      startAtom = atom0;
  atomHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  bondHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mGraphIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mGraphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mGraphFrom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mGraphBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  this.mGraphAtom[0] = startAtom;
  this.mGraphIndex[startAtom] = 0;
  atomHandled[startAtom] = true;
  atomsWithoutParents = 1;
  firstUnhandled = 0;
  firstUnused = 1;
  graphBonds = 0;
  while (firstUnhandled < this.mMol.getAtoms_0()) {
    if (firstUnhandled < firstUnused) {
      while (true) {
        highestRankingConnAtom = 0;
        highestRankingConnBond = 0;
        highestRank = -1;
        atom = this.mGraphAtom[firstUnhandled];
        for (i = 0; i < this.mMol.getAllConnAtomsPlusMetalBonds_0(atom); i++) {
          if (i < this.mMol.getConnAtoms_0(atom) || i >= this.mMol.getAllConnAtoms_0(atom)) {
            connAtom = this.mMol.getConnAtom_0(atom, i);
            if (!atomHandled[connAtom] && this.mCanRank[connAtom] > highestRank) {
              highestRankingConnAtom = connAtom;
              highestRankingConnBond = this.mMol.getConnBond_0(atom, i);
              highestRank = this.mCanRank[connAtom];
            }
          }
        }
        if (highestRank == -1)
          break;
        this.mGraphIndex[highestRankingConnAtom] = firstUnused;
        this.mGraphFrom[firstUnused] = firstUnhandled;
        this.mGraphAtom[firstUnused++] = highestRankingConnAtom;
        this.mGraphBond[graphBonds++] = highestRankingConnBond;
        atomHandled[highestRankingConnAtom] = true;
        bondHandled[highestRankingConnBond] = true;
      }
      firstUnhandled++;
    }
     else {
      highestRankingAtom = 0;
      highestRank = -1;
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
        if (!atomHandled[atom] && this.mCanRank[atom] > highestRank) {
          highestRankingAtom = atom;
          highestRank = this.mCanRank[atom];
        }
      }
      atomsWithoutParents++;
      this.mGraphIndex[highestRankingAtom] = firstUnused;
      this.mGraphFrom[firstUnused] = -1;
      this.mGraphAtom[firstUnused++] = highestRankingAtom;
      atomHandled[highestRankingAtom] = true;
    }
  }
  this.mGraphClosure = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2 * (this.mMol.getBonds_0() - graphBonds), 15, 1);
  while (true) {
    lowAtomNo1 = this.mMol.getMaxAtoms_0();
    lowAtomNo2 = this.mMol.getMaxAtoms_0();
    lowBond = -1;
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (!bondHandled[bond]) {
        if (this.mGraphIndex[this.mMol.getBondAtom_0(0, bond)] < this.mGraphIndex[this.mMol.getBondAtom_0(1, bond)]) {
          loAtom = this.mGraphIndex[this.mMol.getBondAtom_0(0, bond)];
          hiAtom = this.mGraphIndex[this.mMol.getBondAtom_0(1, bond)];
        }
         else {
          loAtom = this.mGraphIndex[this.mMol.getBondAtom_0(1, bond)];
          hiAtom = this.mGraphIndex[this.mMol.getBondAtom_0(0, bond)];
        }
        if (loAtom < lowAtomNo1 || loAtom == lowAtomNo1 && hiAtom < lowAtomNo2) {
          lowAtomNo1 = loAtom;
          lowAtomNo2 = hiAtom;
          lowBond = bond;
        }
      }
    }
    if (lowBond == -1)
      break;
    bondHandled[lowBond] = true;
    this.mGraphBond[graphBonds++] = lowBond;
    this.mGraphClosure[2 * this.mGraphRings] = lowAtomNo1;
    this.mGraphClosure[2 * this.mGraphRings + 1] = lowAtomNo2;
    this.mGraphRings++;
  }
  this.mGraphGenerated = true;
}
;
_.getAromaticSPBonds = function getAromaticSPBonds(){
  var atom, atom$array, atom$index, atom$max, count, i, index_0, isAromaticSPBond, minIndex, minValue, r, ringAtom, ringBond, ringSet;
  isAromaticSPBond = null;
  ringSet = this.mMol.getRingSet_0();
  for (r = 0; r < ringSet.getSize_0(); r++) {
    if (ringSet.isDelocalized_0(r)) {
      count = 0;
      ringAtom = ringSet.getRingAtoms_0(r);
      for (atom$array = ringAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
        atom = atom$array[atom$index];
        if (this.hasTwoAromaticPiElectrons(atom))
          count++;
      }
      if (count != 0) {
        ringBond = ringSet.getRingBonds_0(r);
        if (jsEquals(isAromaticSPBond, null))
          isAromaticSPBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
        if (count == ringAtom.length) {
          minIndex = -1;
          minValue = 2147483647;
          for (i = 0; i < ringAtom.length; i++) {
            if (minValue > this.mGraphAtom[ringBond[i]]) {
              minValue = this.mGraphAtom[ringBond[i]];
              minIndex = i;
            }
          }
          while (count > 0) {
            isAromaticSPBond[ringBond[minIndex]] = true;
            minIndex = this.validateCyclicIndex(minIndex + 2, ringAtom.length);
            count -= 2;
          }
        }
         else {
          index_0 = 0;
          while (this.hasTwoAromaticPiElectrons(ringAtom[index_0]))
            index_0++;
          while (!this.hasTwoAromaticPiElectrons(ringAtom[index_0]))
            index_0 = this.validateCyclicIndex(index_0 + 1, ringAtom.length);
          while (count > 0) {
            isAromaticSPBond[ringBond[index_0]] = true;
            index_0 = this.validateCyclicIndex(index_0 + 2, ringAtom.length);
            count -= 2;
            while (!this.hasTwoAromaticPiElectrons(ringAtom[index_0]))
              index_0 = this.validateCyclicIndex(index_0 + 1, ringAtom.length);
          }
        }
      }
    }
  }
  return isAromaticSPBond;
}
;
_.getEZParity = function getEZParity(bond){
  return this.mEZParity[bond];
}
;
_.getEncodedCoordinates = function getEncodedCoordinates(){
  return this.getEncodedCoordinates_0(this.mZCoordinatesAvailable);
}
;
_.getEncodedCoordinates_0 = function getEncodedCoordinates_0(keepPositionAndScale){
  if (jsEquals(this.mEncodedCoords, null)) {
    this.generateGraph();
    this.encodeCoordinates(keepPositionAndScale, this.mMol.getAtomCoordinates());
  }
  return this.mEncodedCoords;
}
;
_.getEncodedMapping = function getEncodedMapping(){
  if (jsEquals(this.mMapping, null)) {
    this.generateGraph();
    this.encodeMapping();
  }
  return this.mMapping;
}
;
_.getFinalRank = function getFinalRank(){
  return this.mCanRank;
}
;
_.getGraphIndexes = function getGraphIndexes(){
  this.generateGraph();
  return this.mGraphIndex;
}
;
_.getIDCode_0 = function getIDCode(){
  if (jsEquals(this.mIDCode, null)) {
    this.generateGraph();
    if ((this.mMode & 2048) == 0) {
      this.idGenerateConfigurations();
      this.idNormalizeESRGroupNumbers();
    }
    this.idCodeCreate();
  }
  return this.mIDCode;
}
;
_.getMaxDelta = function getMaxDelta(atom, from, maxDelta, coords){
  var deltaX, deltaY, deltaZ;
  deltaX = from == -1?$wnd.Math.abs(coords[atom].x_0 - coords[this.mGraphAtom[0]].x_0) / 8:$wnd.Math.abs(coords[atom].x_0 - coords[from].x_0);
  if (maxDelta < deltaX)
    maxDelta = deltaX;
  deltaY = from == -1?$wnd.Math.abs(coords[atom].y_0 - coords[this.mGraphAtom[0]].y_0) / 8:$wnd.Math.abs(coords[atom].y_0 - coords[from].y_0);
  if (maxDelta < deltaY)
    maxDelta = deltaY;
  if (this.mZCoordinatesAvailable) {
    deltaZ = from == -1?$wnd.Math.abs(coords[atom].z_0 - coords[this.mGraphAtom[0]].z_0) / 8:$wnd.Math.abs(coords[atom].z_0 - coords[from].z_0);
    if (maxDelta < deltaZ)
      maxDelta = deltaZ;
  }
  return maxDelta;
}
;
_.getPseudoEZGroup = function getPseudoEZGroup(bond){
  return this.mPseudoEZGroup[bond];
}
;
_.getPseudoStereoGroupCount = function getPseudoStereoGroupCount(){
  return this.mNoOfPseudoGroups;
}
;
_.getPseudoTHGroup = function getPseudoTHGroup(atom){
  return this.mPseudoTHGroup[atom];
}
;
_.getSymmetryRank_0 = function getSymmetryRank(atom){
  return jsEquals(this.mCanRankBeforeTieBreaking, null)?-1:this.mCanRankBeforeTieBreaking[atom];
}
;
_.getTHParity = function getTHParity(atom){
  return this.mTHParity[atom];
}
;
_.hasSecondBINAPBond = function hasSecondBINAPBond(atom){
  var i, j, j$array, j$index, j$max, k, ringSet;
  ringSet = this.mMol.getRingSet_0();
  for (i = 0; i < ringSet.getSize_0(); i++) {
    if (ringSet.isAromatic_0(i) && ringSet.isAtomMember_0(i, atom)) {
      for (j$array = ringSet.getRingAtoms_0(i) , j$index = 0 , j$max = j$array.length; j$index < j$max; ++j$index) {
        j = j$array[j$index];
        if (j != atom)
          for (k = 0; k < this.mMol.getConnAtoms_0(j); k++)
            if (this.mMol.isBINAPChiralityBond_0(this.mMol.getConnBond_0(j, k)))
              return true;
      }
      return false;
    }
  }
  return false;
}
;
_.hasTwoAromaticPiElectrons = function hasTwoAromaticPiElectrons(atom){
  var aromaticPi, connBond, i;
  if (this.mMol.getAtomPi_0(atom) < 2)
    return false;
  if (this.mMol.getConnAtoms_0(atom) == 2)
    return true;
  aromaticPi = 0;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    connBond = this.mMol.getConnBond_0(atom, i);
    if (this.mMol.isAromaticBond_0(connBond))
      aromaticPi += this.mMol.getBondOrder_0(connBond) - 1;
  }
  return aromaticPi > 1;
}
;
_.idCodeCreate = function idCodeCreate(){
  var EZCount, THCount, a, a$array, a$index, a$max, atom, atom0, atom1, atom10, atom11, atom2, atom3, atom4, atom5, atom6, atom7, atom8, atom9, atomList, base, bond, bond0, bond1, bond2, bond3, bond4, bondOrder, chargedAtoms, count, customLabel, dbits, dif, i, i0, isAromaticSPBond, label_0, lbits, maxLength, maxdif, nbits, nitrogens, otherAtoms, oxygens, parity;
  this.encodeBitsStart(false);
  this.encodeBits(9, 4);
  nbits = $wnd.Math.max(carc2.getNeededBits(this.mMol.getAtoms_0()), carc2.getNeededBits(this.mMol.getBonds_0()));
  this.encodeBits(fromInt_0(nbits), 4);
  if (nbits == 0) {
    this.encodeBits(fromInt_0(this.mMol.isFragment_0()?1:0), 1);
    this.encodeBits(0, 1);
    this.mIDCode = this.encodeBitsEnd();
    return;
  }
  nitrogens = oxygens = otherAtoms = chargedAtoms = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (eq(and_0(this.mMol.getAtomQueryFeatures(atom0), 1), 0)) {
      switch (this.mMol.getAtomicNo_0(atom0)) {
        case 6:
          break;
        case 7:
          nitrogens++;
          break;
        case 8:
          oxygens++;
          break;
        default:otherAtoms++;
          break;
      }
      if (this.mMol.getAtomCharge_0(atom0) != 0)
        chargedAtoms++;
    }
  }
  this.encodeBits(fromInt_0(this.mMol.getAtoms_0()), nbits);
  this.encodeBits(fromInt_0(this.mMol.getBonds_0()), nbits);
  this.encodeBits(fromInt_0(nitrogens), nbits);
  this.encodeBits(fromInt_0(oxygens), nbits);
  this.encodeBits(fromInt_0(otherAtoms), nbits);
  this.encodeBits(fromInt_0(chargedAtoms), nbits);
  for (atom1 = 0; atom1 < this.mMol.getAtoms_0(); atom1++)
    if (this.mMol.getAtomicNo_0(this.mGraphAtom[atom1]) == 7 && eq(and_0(this.mMol.getAtomQueryFeatures(this.mGraphAtom[atom1]), 1), 0))
      this.encodeBits(fromInt_0(atom1), nbits);
  for (atom2 = 0; atom2 < this.mMol.getAtoms_0(); atom2++)
    if (this.mMol.getAtomicNo_0(this.mGraphAtom[atom2]) == 8 && eq(and_0(this.mMol.getAtomQueryFeatures(this.mGraphAtom[atom2]), 1), 0))
      this.encodeBits(fromInt_0(atom2), nbits);
  for (atom3 = 0; atom3 < this.mMol.getAtoms_0(); atom3++)
    if (this.mMol.getAtomicNo_0(this.mGraphAtom[atom3]) != 6 && this.mMol.getAtomicNo_0(this.mGraphAtom[atom3]) != 7 && this.mMol.getAtomicNo_0(this.mGraphAtom[atom3]) != 8 && eq(and_0(this.mMol.getAtomQueryFeatures(this.mGraphAtom[atom3]), 1), 0)) {
      this.encodeBits(fromInt_0(atom3), nbits);
      this.encodeBits(fromInt_0(this.mMol.getAtomicNo_0(this.mGraphAtom[atom3])), 8);
    }
  for (atom4 = 0; atom4 < this.mMol.getAtoms_0(); atom4++)
    if (this.mMol.getAtomCharge_0(this.mGraphAtom[atom4]) != 0 && eq(and_0(this.mMol.getAtomQueryFeatures(this.mGraphAtom[atom4]), 1), 0)) {
      this.encodeBits(fromInt_0(atom4), nbits);
      this.encodeBits(fromInt_0(8 + this.mMol.getAtomCharge_0(this.mGraphAtom[atom4])), 4);
    }
  maxdif = 0;
  base = 0;
  for (atom5 = 1; atom5 < this.mMol.getAtoms_0(); atom5++) {
    if (this.mGraphFrom[atom5] == -1) {
      dif = 0;
    }
     else {
      dif = 1 + this.mGraphFrom[atom5] - base;
      base = this.mGraphFrom[atom5];
    }
    if (maxdif < dif)
      maxdif = dif;
  }
  dbits = carc2.getNeededBits(maxdif);
  this.encodeBits(fromInt_0(dbits), 4);
  base = 0;
  for (atom6 = 1; atom6 < this.mMol.getAtoms_0(); atom6++) {
    if (this.mGraphFrom[atom6] == -1) {
      dif = 0;
    }
     else {
      dif = 1 + this.mGraphFrom[atom6] - base;
      base = this.mGraphFrom[atom6];
    }
    this.encodeBits(fromInt_0(dif), dbits);
  }
  for (i0 = 0; i0 < 2 * this.mGraphRings; i0++)
    this.encodeBits(fromInt_0(this.mGraphClosure[i0]), nbits);
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    bondOrder = (this.mMol.getBondQueryFeatures_0(this.mGraphBond[bond0]) & 130560) != 0 || this.mMol.getBondType_0(this.mGraphBond[bond0]) == 32?1:this.mMol.isDelocalizedBond_0(this.mGraphBond[bond0])?0:$wnd.Math.min(3, this.mMol.getBondOrder_0(this.mGraphBond[bond0]));
    this.encodeBits(fromInt_0(bondOrder), 2);
  }
  THCount = 0;
  if ((this.mMode & 2048) == 0) {
    for (atom7 = 0; atom7 < this.mMol.getAtoms_0(); atom7++)
      if (this.mTHConfiguration[this.mGraphAtom[atom7]] != 0 && this.mTHConfiguration[this.mGraphAtom[atom7]] != 3)
        THCount++;
  }
  this.encodeBits(fromInt_0(THCount), nbits);
  if ((this.mMode & 2048) == 0) {
    for (atom7 = 0; atom7 < this.mMol.getAtoms_0(); atom7++) {
      if (this.mTHConfiguration[this.mGraphAtom[atom7]] != 0 && this.mTHConfiguration[this.mGraphAtom[atom7]] != 3) {
        this.encodeBits(fromInt_0(atom7), nbits);
        if (this.mTHESRType[this.mGraphAtom[atom7]] == 0) {
          this.encodeBits(fromInt_0(this.mTHConfiguration[this.mGraphAtom[atom7]]), 3);
        }
         else {
          parity = this.mTHConfiguration[this.mGraphAtom[atom7]] == 1?this.mTHESRType[this.mGraphAtom[atom7]] == 1?4:6:this.mTHESRType[this.mGraphAtom[atom7]] == 1?5:7;
          this.encodeBits(fromInt_0(parity), 3);
          this.encodeBits(fromInt_0(this.mTHESRGroup[this.mGraphAtom[atom7]]), 3);
        }
      }
    }
  }
  EZCount = 0;
  if ((this.mMode & 2048) == 0) {
    for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++)
      if (this.mEZConfiguration[this.mGraphBond[bond1]] != 0 && this.mEZConfiguration[this.mGraphBond[bond1]] != 3 && (!this.mMol.isSmallRingBond_0(this.mGraphBond[bond1]) || this.mMol.getBondType_0(this.mGraphBond[bond1]) == 1))
        EZCount++;
  }
  this.encodeBits(fromInt_0(EZCount), nbits);
  if ((this.mMode & 2048) == 0) {
    for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++) {
      if (this.mEZConfiguration[this.mGraphBond[bond1]] != 0 && this.mEZConfiguration[this.mGraphBond[bond1]] != 3 && (!this.mMol.isSmallRingBond_0(this.mGraphBond[bond1]) || this.mMol.getBondType_0(this.mGraphBond[bond1]) == 1)) {
        this.encodeBits(fromInt_0(bond1), nbits);
        if (this.mMol.getBondType_0(this.mGraphBond[bond1]) == 1) {
          if (this.mEZESRType[this.mGraphBond[bond1]] == 0) {
            this.encodeBits(fromInt_0(this.mEZConfiguration[this.mGraphBond[bond1]]), 3);
          }
           else {
            parity = this.mEZConfiguration[this.mGraphBond[bond1]] == 1?this.mEZESRType[this.mGraphBond[bond1]] == 1?4:6:this.mEZESRType[this.mGraphBond[bond1]] == 1?5:7;
            this.encodeBits(fromInt_0(parity), 3);
            this.encodeBits(fromInt_0(this.mEZESRGroup[this.mGraphBond[bond1]]), 3);
          }
        }
         else {
          this.encodeBits(fromInt_0(this.mEZConfiguration[this.mGraphBond[bond1]]), 2);
        }
      }
    }
  }
  this.encodeBits(fromInt_0(this.mMol.isFragment_0()?1:0), 1);
  count = 0;
  for (atom8 = 0; atom8 < this.mMol.getAtoms_0(); atom8++)
    if (this.mMol.getAtomMass_0(this.mGraphAtom[atom8]) != 0)
      count++;
  if (count != 0) {
    this.encodeFeatureNo(1);
    this.encodeBits(fromInt_0(count), nbits);
    for (atom7 = 0; atom7 < this.mMol.getAtoms_0(); atom7++) {
      if (this.mMol.getAtomMass_0(this.mGraphAtom[atom7]) != 0) {
        this.encodeBits(fromInt_0(atom7), nbits);
        this.encodeBits(fromInt_0(this.mMol.getAtomMass_0(this.mGraphAtom[atom7])), 8);
      }
    }
  }
  this.mFeatureBlock = 0;
  if (this.mMol.isFragment_0()) {
    this.addAtomQueryFeatures(0, nbits, 2048, 1, -1);
    this.addAtomQueryFeatures(3, nbits, 4096, 1, -1);
    this.addAtomQueryFeatures(4, nbits, 120, 4, 3);
    this.addAtomQueryFeatures(5, nbits, {l:6, m:0, h:4}, 2, 1);
    this.addAtomQueryFeatures(6, nbits, 1, 1, -1);
    this.addAtomQueryFeatures(7, nbits, 1920, 4, 7);
    count = 0;
    for (atom7 = 0; atom7 < this.mMol.getAtoms_0(); atom7++)
      if (jsNotEquals(this.mMol.getAtomList_0(this.mGraphAtom[atom7]), null))
        count++;
    if (count > 0) {
      this.encodeFeatureNo(8);
      this.encodeBits(fromInt_0(count), nbits);
      for (atom9 = 0; atom9 < this.mMol.getAtoms_0(); atom9++) {
        atomList = this.mMol.getAtomList_0(this.mGraphAtom[atom9]);
        if (jsNotEquals(atomList, null)) {
          this.encodeBits(fromInt_0(atom9), nbits);
          this.encodeBits(fromInt_0(atomList.length), 4);
          for (a$array = atomList , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
            a = a$array[a$index];
            this.encodeBits(fromInt_0(a), 8);
          }
        }
      }
    }
    this.addBondQueryFeatures(9, nbits, 384, 2, 7);
    this.addBondQueryFeatures(10, nbits, 31, 5, 0);
    this.addAtomQueryFeatures(11, nbits, 8192, 1, -1);
    this.addBondQueryFeatures(12, nbits, 130560, 8, 9);
    this.addAtomQueryFeatures(13, nbits, 114688, 3, 14);
    this.addAtomQueryFeatures(14, nbits, 4063232, 5, 17);
    this.addAtomQueryFeatures(16, nbits, 29360128, 3, 22);
  }
  count = 0;
  for (atom10 = 0; atom10 < this.mMol.getAtoms_0(); atom10++)
    if (jsNotEquals(this.mAbnormalValence, null) && this.mAbnormalValence[this.mGraphAtom[atom10]] != -1)
      count++;
  if (count != 0) {
    this.encodeFeatureNo(17);
    this.encodeBits(fromInt_0(count), nbits);
    for (atom7 = 0; atom7 < this.mMol.getAtoms_0(); atom7++) {
      if (jsNotEquals(this.mAbnormalValence, null) && this.mAbnormalValence[this.mGraphAtom[atom7]] != -1) {
        this.encodeBits(fromInt_0(atom7), nbits);
        this.encodeBits(fromInt_0(this.mAbnormalValence[this.mGraphAtom[atom7]]), 4);
      }
    }
  }
  if ((this.mMode & 8) != 0 || (this.mMode & 1024) != 0) {
    count = 0;
    maxLength = 0;
    for (atom7 = 0; atom7 < this.mMol.getAtoms_0(); atom7++) {
      label_0 = this.mMol.getAtomCustomLabel_0(this.mGraphAtom[atom7]);
      if (jsNotEquals(label_0, null)) {
        count++;
        maxLength = $wnd.Math.max(maxLength, jl.length__I__devirtual$_0(label_0));
      }
    }
    if (count != 0) {
      lbits = carc2.getNeededBits(maxLength);
      this.encodeFeatureNo(18);
      this.encodeBits(fromInt_0(count), nbits);
      this.encodeBits(fromInt_0(lbits), 4);
      for (atom9 = 0; atom9 < this.mMol.getAtoms_0(); atom9++) {
        customLabel = this.mMol.getAtomCustomLabel_0(this.mGraphAtom[atom9]);
        if (jsNotEquals(customLabel, null)) {
          this.encodeBits(fromInt_0(atom9), nbits);
          this.encodeBits(fromInt_0(jl.length__I__devirtual$_0(customLabel)), lbits);
          for (i = 0; i < jl.length__I__devirtual$_0(customLabel); i++)
            this.encodeBits(fromInt_0(jl.charAt_I_C__devirtual$_0(customLabel, i)), 7);
        }
      }
    }
  }
  if (this.mMol.isFragment_0()) {
    this.addAtomQueryFeatures(19, nbits, 234881024, 3, 25);
    this.addBondQueryFeatures(20, nbits, 917504, 3, 17);
  }
  count = 0;
  for (atom11 = 0; atom11 < this.mMol.getAtoms_0(); atom11++)
    if (this.mMol.getAtomRadical_0(this.mGraphAtom[atom11]) != 0)
      count++;
  if (count != 0) {
    this.encodeFeatureNo(21);
    this.encodeBits(fromInt_0(count), nbits);
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (this.mMol.getAtomRadical_0(this.mGraphAtom[atom]) != 0) {
        this.encodeBits(fromInt_0(atom), nbits);
        this.encodeBits(fromInt_0(this.mMol.getAtomRadical_0(this.mGraphAtom[atom]) >> 4), 2);
      }
    }
  }
  if (this.mMol.isFragment_0()) {
    this.addAtomQueryFeatures(22, nbits, 268435456, 1, -1);
    this.addBondQueryFeatures(23, nbits, 1048576, 1, -1);
    this.addBondQueryFeatures(24, nbits, 6291456, 2, 21);
  }
  if ((this.mMode & 16) != 0) {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (this.mMol.isSelectedAtom_0(this.mGraphAtom[atom])) {
        this.encodeFeatureNo(25);
        for (a = 0; a < this.mMol.getAtoms_0(); a++)
          this.encodeBits(fromInt_0(this.mMol.isSelectedAtom_0(this.mGraphAtom[a])?1:0), 1);
        break;
      }
    }
  }
  isAromaticSPBond = this.getAromaticSPBonds();
  if (jsNotEquals(isAromaticSPBond, null)) {
    count = 0;
    for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++)
      if (isAromaticSPBond[this.mGraphBond[bond1]])
        count++;
    this.encodeFeatureNo(26);
    this.encodeBits(fromInt_0(count), nbits);
    for (bond2 = 0; bond2 < this.mMol.getBonds_0(); bond2++)
      if (isAromaticSPBond[this.mGraphBond[bond2]])
        this.encodeBits(fromInt_0(bond2), nbits);
  }
  if (this.mMol.isFragment_0())
    this.addAtomQueryFeatures(27, nbits, 536870912, 1, -1);
  count = 0;
  for (bond3 = 0; bond3 < this.mMol.getBonds_0(); bond3++)
    if (this.mMol.getBondType_0(this.mGraphBond[bond3]) == 32)
      count++;
  if (count != 0) {
    this.encodeFeatureNo(28);
    this.encodeBits(fromInt_0(count), nbits);
    for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++)
      if (this.mMol.getBondType_0(this.mGraphBond[bond1]) == 32)
        this.encodeBits(fromInt_0(bond1), nbits);
  }
  if (this.mMol.isFragment_0()) {
    this.addAtomQueryFeatures(29, nbits, 3221225472, 2, 30);
    this.addAtomQueryFeatures(30, nbits, 545460846592, 7, 32);
    this.addAtomQueryFeatures(32, nbits, {l:0, m:0, h:3}, 2, 44);
    this.addAtomQueryFeatures(33, nbits, 17042430230528, 5, 39);
    this.addAtomQueryFeatures(34, nbits, {l:0, m:0, h:4}, 1, -1);
    this.addBondQueryFeatures(35, nbits, 8388608, 1, -1);
    this.addBondQueryFeatures(36, nbits, 96, 2, 5);
  }
  count = 0;
  for (bond4 = 0; bond4 < this.mMol.getBonds_0(); bond4++)
    if (this.mMol.getBondType_0(this.mGraphBond[bond4]) == 8 || this.mMol.getBondType_0(this.mGraphBond[bond4]) == 16)
      count++;
  if (count != 0) {
    this.encodeFeatureNo(37);
    this.encodeBits(fromInt_0(count), nbits);
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mMol.getBondType_0(this.mGraphBond[bond]) == 8 || this.mMol.getBondType_0(this.mGraphBond[bond]) == 16) {
        this.encodeBits(fromInt_0(bond), nbits);
        this.encodeBits(fromInt_0(this.mMol.getBondType_0(this.mGraphBond[bond]) == 8?0:1), 1);
      }
    }
  }
  this.encodeBits(0, 1);
  this.mIDCode = this.encodeBitsEnd();
}
;
_.idGenerateConfigurations = function idGenerateConfigurations(){
  var atom, bond, bondAtom, connAtom, connAtom1, connAtom2, i, inversion, j, neighbour, neighbours;
  this.mTHConfiguration = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2) {
      inversion = this.mTHParityIsMesoInverted[atom];
      if (this.mMol.isCentralAlleneAtom(atom)) {
        for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
          connAtom = this.mMol.getConnAtom_0(atom, i);
          neighbours = 0;
          neighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 3, 15, 1);
          for (j = 0; j < this.mMol.getConnAtoms_0(connAtom); j++) {
            neighbour[neighbours] = this.mMol.getConnAtom_0(connAtom, j);
            if (neighbour[neighbours] != atom)
              neighbours++;
          }
          if (neighbours == 2 && this.mCanRank[neighbour[0]] > this.mCanRank[neighbour[1]] ^ this.mGraphIndex[neighbour[0]] < this.mGraphIndex[neighbour[1]])
            inversion = !inversion;
        }
      }
       else {
        for (i = 1; i < this.mMol.getConnAtoms_0(atom); i++) {
          for (j = 0; j < i; j++) {
            connAtom1 = this.mMol.getConnAtom_0(atom, i);
            connAtom2 = this.mMol.getConnAtom_0(atom, j);
            if (this.mCanRank[connAtom1] > this.mCanRank[connAtom2])
              inversion = !inversion;
            if (this.mGraphIndex[connAtom1] < this.mGraphIndex[connAtom2])
              inversion = !inversion;
          }
        }
      }
      this.mTHConfiguration[atom] = this.mTHParity[atom] == 1 ^ inversion?narrow_byte(1):2;
    }
     else {
      this.mTHConfiguration[atom] = this.mTHParity[atom];
    }
  }
  this.mEZConfiguration = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2) {
      inversion = false;
      for (i = 0; i < 2; i++) {
        bondAtom = this.mMol.getBondAtom_0(i, bond);
        if (this.mMol.getConnAtoms_0(bondAtom) == 3) {
          neighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
          neighbours = 0;
          for (j = 0; j < 3; j++)
            if (this.mMol.getConnAtom_0(bondAtom, j) != this.mMol.getBondAtom_0(1 - i, bond))
              neighbour[neighbours++] = this.mMol.getConnAtom_0(bondAtom, j);
          if (this.mCanRank[neighbour[0]] > this.mCanRank[neighbour[1]])
            inversion = !inversion;
          if (this.mGraphIndex[neighbour[0]] < this.mGraphIndex[neighbour[1]])
            inversion = !inversion;
        }
      }
      this.mEZConfiguration[bond] = this.mEZParity[bond] == 1 ^ inversion?narrow_byte(1):2;
    }
     else {
      this.mEZConfiguration[bond] = this.mEZParity[bond];
    }
  }
}
;
_.idNormalizeESRGroupNumbers = function idNormalizeESRGroupNumbers(){
  this.idNormalizeESRGroupNumbers_0(1);
  this.idNormalizeESRGroupNumbers_0(2);
}
;
_.idNormalizeESRGroupNumbers_0 = function idNormalizeESRGroupNumbers_0(type_0){
  var atom, atom0, bond, bond0, canGroup, group, groupRank, groups, i, j, maxGroup, maxRank, rank;
  groupRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 32, 15, 1);
  groups = 0;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if ((this.mTHConfiguration[atom0] == 1 || this.mTHConfiguration[atom0] == 2) && this.mTHESRType[atom0] == type_0) {
      group = this.mTHESRGroup[atom0];
      if (groupRank[group] < this.mCanRank[atom0]) {
        if (groupRank[group] == 0)
          groups++;
        groupRank[group] = this.mCanRank[atom0];
      }
    }
  }
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if ((this.mEZConfiguration[bond0] == 1 || this.mEZConfiguration[bond0] == 2) && this.mEZESRType[bond0] == type_0 && this.mMol.getBondType_0(bond0) == 1) {
      group = this.mEZESRGroup[bond0];
      rank = $wnd.Math.max(this.mCanRank[this.mMol.getBondAtom_0(0, bond0)], this.mCanRank[this.mMol.getBondAtom_0(1, bond0)]);
      if (groupRank[group] < rank) {
        if (groupRank[group] == 0)
          groups++;
        groupRank[group] = rank;
      }
    }
  }
  canGroup = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, 32, 15, 1);
  for (i = 0; i < groups; i++) {
    maxGroup = -1;
    maxRank = 0;
    for (j = 0; j < 32; j++) {
      if (maxRank < groupRank[j]) {
        maxRank = groupRank[j];
        maxGroup = j;
      }
    }
    groupRank[maxGroup] = 0;
    canGroup[maxGroup] = narrow_byte(i);
  }
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if ((this.mTHConfiguration[atom] == 1 || this.mTHConfiguration[atom] == 2) && this.mTHESRType[atom] == type_0)
      this.mTHESRGroup[atom] = canGroup[this.mTHESRGroup[atom]];
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    if ((this.mEZConfiguration[bond] == 1 || this.mEZConfiguration[bond] == 2) && this.mEZESRType[bond] == type_0 && this.mMol.getBondType_0(bond) == 1)
      this.mEZESRGroup[bond] = canGroup[this.mEZESRGroup[bond]];
}
;
_.initializeParities = function initializeParities(noOfRanksWithoutStereo, canRankWithoutStereo){
  var atom, bond;
  this.mNoOfRanks = noOfRanksWithoutStereo;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    this.mCanRank[atom] = canRankWithoutStereo[atom];
    this.mTHParity[atom] = 0;
    this.mTHParityRoundIsOdd[atom] = false;
  }
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    this.mEZParity[bond] = 0;
    this.mEZParityRoundIsOdd[bond] = false;
  }
}
;
_.isJustifiedStereoBond = function isJustifiedStereoBond(bond){
  var atom, binapBond, i;
  atom = this.mMol.getBondAtom_0(0, bond);
  if (atom >= this.mMol.getAtoms_0())
    return false;
  if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2)
    return true;
  if (this.mTHParity[atom] == 3)
    return false;
  binapBond = this.mMol.findBINAPChiralityBond_0(atom);
  if (binapBond != -1)
    return this.mEZParity[binapBond] == 1 || this.mEZParity[binapBond] == 2;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    if (this.mMol.getConnBondOrder_0(atom, i) == 2) {
      if (this.mTHParity[this.mMol.getConnAtom_0(atom, i)] == 1 || this.mTHParity[this.mMol.getConnAtom_0(atom, i)] == 2)
        return true;
    }
  }
  return false;
}
;
_.isUnknownBINAPBondAtom = function isUnknownBINAPBondAtom(atom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mEZParity[this.mMol.getConnBond_0(atom, i)] == 3 && this.mMol.getConnBondOrder_0(atom, i) == 1)
      return true;
  return false;
}
;
_.normalizeEnantiomer = function normalizeEnantiomer(){
  var atom, atom0, bond, bond0, invert, parityCount, rank;
  parityCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mNoOfRanks + 1, 15, 1);
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (this.mMol.getAtomESRType_0(atom0) == 0) {
      if (this.mTHParity[atom0] == 1)
        parityCount[this.mCanRank[atom0]]++;
      else if (this.mTHParity[atom0] == 2)
        parityCount[this.mCanRank[atom0]]--;
    }
  }
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (this.mMol.getBondOrder_0(bond0) == 1 && this.mMol.getBondESRType_0(bond0) == 0) {
      if (this.mEZParity[bond0] == 1) {
        parityCount[this.mCanRank[this.mMol.getBondAtom_0(0, bond0)]]++;
        parityCount[this.mCanRank[this.mMol.getBondAtom_0(1, bond0)]]++;
      }
       else if (this.mEZParity[bond0] == 2) {
        parityCount[this.mCanRank[this.mMol.getBondAtom_0(0, bond0)]]--;
        parityCount[this.mCanRank[this.mMol.getBondAtom_0(1, bond0)]]--;
      }
    }
  }
  for (rank = 1; rank <= this.mNoOfRanks; rank++) {
    if (parityCount[rank] != 0) {
      invert = parityCount[rank] < 0;
      if (invert) {
        for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
          if (this.mMol.getAtomESRType_0(atom) == 0) {
            if (this.mTHParity[atom] == 1)
              this.mTHParity[atom] = 2;
            else if (this.mTHParity[atom] == 2)
              this.mTHParity[atom] = 1;
          }
        }
        for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
          if (this.mMol.getBondOrder_0(bond) == 1 && this.mMol.getBondESRType_0(bond) == 0) {
            if (this.mEZParity[bond] == 1)
              this.mEZParity[bond] = 2;
            else if (this.mEZParity[bond] == 2)
              this.mEZParity[bond] = 1;
          }
        }
      }
      return invert;
    }
  }
  return false;
}
;
_.resize = function resize(array, newSize){
  var copy;
  copy = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, newSize, 15, 1);
  jl.arraycopy(array, 0, copy, 0, array.length);
  return copy;
}
;
_.resize_0 = function resize_0(array, newSize){
  var copy;
  copy = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, newSize, 16, 1);
  jl.arraycopy(array, 0, copy, 0, array.length);
  return copy;
}
;
_.setCIPParities = function setCIPParities(){
  var atom, bond;
  if (jsNotEquals(this.mTHCIPParity, null))
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
      this.mMol.setAtomCIPParity_0(atom, this.mTHCIPParity[atom]);
  if (jsNotEquals(this.mEZCIPParity, null))
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
      this.mMol.setBondCIPParity_0(bond, this.mEZCIPParity[bond]);
}
;
_.setParities = function setParities(){
  var atom, bond, bondAtom, connAtom, connAtom1, connAtom2, i, inversion, j, neighbour, neighbours;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2) {
      inversion = false;
      if (this.mMol.isCentralAlleneAtom(atom)) {
        for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
          connAtom = this.mMol.getConnAtom_0(atom, i);
          neighbours = 0;
          neighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 3, 15, 1);
          for (j = 0; j < this.mMol.getConnAtoms_0(connAtom); j++) {
            neighbour[neighbours] = this.mMol.getConnAtom_0(connAtom, j);
            if (neighbour[neighbours] != atom)
              neighbours++;
          }
          if (neighbours == 2 && this.mCanRank[neighbour[0]] > this.mCanRank[neighbour[1]] ^ neighbour[0] < neighbour[1])
            inversion = !inversion;
        }
      }
       else {
        for (i = 1; i < this.mMol.getConnAtoms_0(atom); i++) {
          for (j = 0; j < i; j++) {
            connAtom1 = this.mMol.getConnAtom_0(atom, i);
            connAtom2 = this.mMol.getConnAtom_0(atom, j);
            if (this.mCanRank[connAtom1] > this.mCanRank[connAtom2])
              inversion = !inversion;
            if (connAtom1 < connAtom2)
              inversion = !inversion;
          }
        }
      }
      this.mMol.setAtomParity_0(atom, this.mTHParity[atom] == 1 ^ inversion?1:2, this.mTHParityIsPseudo[atom]);
    }
     else {
      this.mMol.setAtomParity_0(atom, this.mTHParity[atom], this.mTHParityIsPseudo[atom]);
    }
  }
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mEZParity[bond] == 1 || this.mEZParity[bond] == 2) {
      inversion = false;
      for (i = 0; i < 2; i++) {
        bondAtom = this.mMol.getBondAtom_0(i, bond);
        if (this.mMol.getConnAtoms_0(bondAtom) == 3) {
          neighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
          neighbours = 0;
          for (j = 0; j < 3; j++)
            if (this.mMol.getConnAtom_0(bondAtom, j) != this.mMol.getBondAtom_0(1 - i, bond))
              neighbour[neighbours++] = this.mMol.getConnAtom_0(bondAtom, j);
          if (this.mCanRank[neighbour[0]] > this.mCanRank[neighbour[1]])
            inversion = !inversion;
          if (neighbour[0] < neighbour[1])
            inversion = !inversion;
        }
      }
      this.mMol.setBondParity_0(bond, this.mEZParity[bond] == 1 ^ inversion?1:2, this.mEZParityIsPseudo[bond]);
    }
     else {
      this.mMol.setBondParity_0(bond, this.mEZParity[bond], this.mEZParityIsPseudo[bond]);
    }
  }
}
;
_.setStereoCenters = function setStereoCenters(){
  var atom;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    this.mMol.setAtomStereoCenter(atom, this.mIsStereoCenter[atom]);
  }
}
;
_.setUnknownParitiesToExplicitlyUnknown_0 = function setUnknownParitiesToExplicitlyUnknown(){
  var atom, bond, order;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++)
    if (!this.mMol.isAtomConfigurationUnknown_0(atom) && this.mTHParity[atom] == 3)
      this.mMol.setAtomConfigurationUnknown_0(atom, true);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mEZParity[bond] == 3) {
      order = this.mMol.getBondOrder_0(bond);
      if (order == 1) {
        this.mMol.setAtomConfigurationUnknown_0(this.mMol.getBondAtom_0(0, bond), true);
      }
       else if (order == 2) {
        this.mMol.setBondType_0(bond, 386);
      }
    }
  }
}
;
_.validateCyclicIndex = function validateCyclicIndex(index_0, limit){
  return index_0 < limit?index_0:index_0 - limit;
}
;
_.mAtomBits = 0;
_.mCIPParityNoDistinctionProblem = false;
_.mEncodeAvoid127 = false;
_.mEncodingBitsAvail = 0;
_.mEncodingTempData = 0;
_.mFeatureBlock = 0;
_.mGraphGenerated = false;
_.mGraphRings = 0;
_.mIsMeso = false;
_.mIsOddParityRound = false;
_.mMaxConnAtoms = 0;
_.mMode = 0;
_.mNoOfPseudoGroups = 0;
_.mNoOfRanks = 0;
_.mStereoCentersFound = false;
_.mZCoordinatesAvailable = false;
carc2.ASSIGN_PARITIES_TO_TETRAHEDRAL_N = 32;
carc2.CALC_PARITY_MODE_IN_SAME_FRAGMENT = 3;
carc2.CALC_PARITY_MODE_PARITY = 1;
carc2.CALC_PARITY_MODE_PRO_PARITY = 2;
carc2.CONSIDER_STEREOHETEROTOPICITY = 2;
carc2.COORDS_ARE_3D = 64;
carc2.CREATE_PSEUDO_STEREO_GROUPS = 128;
carc2.CREATE_SYMMETRY_RANK = 1;
carc2.DISTINGUISH_RACEMIC_OR_GROUPS = 256;
carc2.ENCODE_ATOM_CUSTOM_LABELS = 8;
carc2.ENCODE_ATOM_CUSTOM_LABELS_WITHOUT_RANKING = 1024;
carc2.ENCODE_ATOM_SELECTION = 16;
carc2.NEGLECT_ANY_STEREO_INFORMATION = 2048;
carc2.TIE_BREAK_FREE_VALENCE_ATOMS = 512;
carc2.cIDCodeCurrentVersion = 9;
carc2.cIDCodeVersion2 = 8;
carc2.cIDCodeVersion3 = 9;
carc2.cParity1And = 4;
carc2.cParity1Or = 6;
carc2.cParity2And = 5;
carc2.cParity2Or = 7;
cggl.Lcom_actelion_research_chem_Canonizer_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer', 41, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$1 = function $clinit_Canonizer$1(){
  carc2.$clinit_Canonizer$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carc2.Canonizer$1 = function Canonizer$1(this$0){
  carc2.$clinit_Canonizer$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_7();
}
;
defineClass(509, 1, {1:1, 50:1}, carc2.Canonizer$1);
_.$init_7 = function $init_7(){
}
;
_.compare_0 = function compare_1(r1, r2){
  return this.compare(castTo(r1, 197), castTo(r2, 197));
}
;
_.equals_0 = function equals_0(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare = function compare_0(r1, r2){
  var count, i, i1, i2;
  if (r1.parentRank != r2.parentRank)
    return r1.parentRank > r2.parentRank?1:-1;
  i1 = r1.childRank.length;
  i2 = r2.childRank.length;
  count = $wnd.Math.min(i1, i2);
  for (i = 0; i < count; i++) {
    i1--;
    i2--;
    if (r1.childRank[i1] != r2.childRank[i2])
      return r1.childRank[i1] > r2.childRank[i2]?1:-1;
  }
  if (i1 != i2)
    return i1 > i2?1:-1;
  if (r1.parentHCount != r2.parentHCount)
    return r1.parentHCount > r2.parentHCount?1:-1;
  return 0;
}
;
cggl.Lcom_actelion_research_chem_Canonizer$1_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/1', 509, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$1RankObject = function $clinit_Canonizer$1RankObject(){
  carc2.$clinit_Canonizer$1RankObject = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Canonizer$1RankObject = function Canonizer$1RankObject(this$0){
  carc2.$clinit_Canonizer$1RankObject();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_8();
}
;
defineClass(197, 1, {197:1, 1:1}, carc2.Canonizer$1RankObject);
_.$init_8 = function $init_8(){
}
;
_.parentHCount = 0;
_.parentIndex = 0;
_.parentRank = 0;
cggl.Lcom_actelion_research_chem_Canonizer$1RankObject_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/1RankObject', 197, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$2 = function $clinit_Canonizer$2(){
  carc2.$clinit_Canonizer$2 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carc2.Canonizer$2 = function Canonizer$2(this$0){
  carc2.$clinit_Canonizer$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_9();
}
;
defineClass(510, 1, {1:1, 50:1}, carc2.Canonizer$2);
_.$init_9 = function $init_9(){
}
;
_.compare_0 = function compare_3(r1, r2){
  return this.compare_1(castTo(r1, 198), castTo(r2, 198));
}
;
_.equals_0 = function equals_1(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_1 = function compare_2(r1, r2){
  if (r1.rank != r2.rank)
    return r1.rank > r2.rank?1:-1;
  return 0;
}
;
cggl.Lcom_actelion_research_chem_Canonizer$2_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/2', 510, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$2RankObject = function $clinit_Canonizer$2RankObject(){
  carc2.$clinit_Canonizer$2RankObject = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Canonizer$2RankObject = function Canonizer$2RankObject(this$0){
  carc2.$clinit_Canonizer$2RankObject();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_10();
}
;
defineClass(198, 1, {198:1, 1:1}, carc2.Canonizer$2RankObject);
_.$init_10 = function $init_10(){
}
;
_.index_0 = 0;
_.parent_0 = 0;
_.rank = 0;
cggl.Lcom_actelion_research_chem_Canonizer$2RankObject_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/2RankObject', 198, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Canonizer$ESRGroup = function $clinit_Canonizer$ESRGroup(){
  carc2.$clinit_Canonizer$ESRGroup = emptyMethod;
}
;
defineClass(961, 1, {10:1, 1:1});
cggl.Lcom_actelion_research_chem_Canonizer$ESRGroup_2_classLit = createForClass('com.actelion.research.chem', 'Canonizer/ESRGroup', 961, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerBaseValue = function $clinit_CanonizerBaseValue(){
  carc2.$clinit_CanonizerBaseValue = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerBaseValue = function CanonizerBaseValue(size_0){
  carc2.$clinit_CanonizerBaseValue();
  Object_0.call(this);
  this.$init_11();
  this.mValue = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, size_0, 14, 1);
}
;
defineClass(175, 1, {175:1, 10:1, 1:1}, carc2.CanonizerBaseValue);
_.$init_11 = function $init_11(){
}
;
_.compareTo_1 = function compareTo_0(b){
  return this.compareTo_0(castTo(b, 175));
}
;
_.add_0 = function add_1(bits, data_0){
  if (this.mAvailableBits == 0) {
    this.mIndex++;
    this.mAvailableBits = 63;
  }
  if (this.mAvailableBits == 63) {
    this.mValue[this.mIndex] = or_0(this.mValue[this.mIndex], data_0);
    this.mAvailableBits -= bits;
  }
   else {
    if (this.mAvailableBits >= bits) {
      this.mValue[this.mIndex] = shl_0(this.mValue[this.mIndex], bits);
      this.mValue[this.mIndex] = or_0(this.mValue[this.mIndex], data_0);
      this.mAvailableBits -= bits;
    }
     else {
      this.mValue[this.mIndex] = shl_0(this.mValue[this.mIndex], this.mAvailableBits);
      this.mValue[this.mIndex] = or_0(this.mValue[this.mIndex], shr_0(data_0, bits - this.mAvailableBits));
      bits -= this.mAvailableBits;
      this.mIndex++;
      this.mAvailableBits = 63 - bits;
      this.mValue[this.mIndex] = or_0(this.mValue[this.mIndex], and_0(data_0, fromInt_0((1 << bits) - 1)));
    }
  }
}
;
_.add_1 = function add_2(data_0){
  this.mValue[this.mIndex] = add_22(this.mValue[this.mIndex], data_0);
}
;
_.compareTo_0 = function compareTo(b){
  var i;
  for (i = 0; i < this.mIndex; i++)
    if (neq(this.mValue[i], b.mValue[i]))
      return lt(this.mValue[i], b.mValue[i])?-1:1;
  return eq(this.mValue[this.mIndex], b.mValue[this.mIndex])?0:lt(this.mValue[this.mIndex], b.mValue[this.mIndex])?-1:1;
}
;
_.getAtom = function getAtom(){
  return this.mAtom;
}
;
_.init_0 = function init_0(atom){
  this.mAtom = atom;
  this.mIndex = 0;
  this.mAvailableBits = 63;
  ju.fill_1(this.mValue, 0);
}
;
_.mAtom = 0;
_.mAvailableBits = 0;
_.mIndex = 0;
cggl.Lcom_actelion_research_chem_CanonizerBaseValue_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerBaseValue', 175, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerBond = function $clinit_CanonizerBond(){
  carc2.$clinit_CanonizerBond = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerBond = function CanonizerBond(atomRank1, atomRank2, bond){
  carc2.$clinit_CanonizerBond();
  Object_0.call(this);
  this.$init_12();
  this.maxAtomRank = $wnd.Math.max(atomRank1, atomRank2);
  this.minAtomRank = $wnd.Math.min(atomRank1, atomRank2);
  this.bond = bond;
}
;
defineClass(224, 1, {224:1, 10:1, 1:1}, carc2.CanonizerBond);
_.$init_12 = function $init_12(){
}
;
_.compareTo_1 = function compareTo_2(cb){
  return this.compareTo_2(castTo(cb, 224));
}
;
_.compareTo_2 = function compareTo_1(cb){
  if (this.maxAtomRank != cb.maxAtomRank)
    return this.maxAtomRank > cb.maxAtomRank?-1:1;
  if (this.minAtomRank != cb.minAtomRank)
    return this.minAtomRank > cb.minAtomRank?-1:1;
  return 0;
}
;
_.bond = 0;
_.maxAtomRank = 0;
_.minAtomRank = 0;
cggl.Lcom_actelion_research_chem_CanonizerBond_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerBond', 224, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerFragment = function $clinit_CanonizerFragment(){
  carc2.$clinit_CanonizerFragment = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerFragment = function CanonizerFragment(atom, atoms, bond, bonds){
  carc2.$clinit_CanonizerFragment();
  Object_0.call(this);
  this.$init_13();
  this.atom = ju.copyOf_9(atom, atoms);
  this.bond = ju.copyOf_9(bond, bonds);
}
;
defineClass(268, 1, {268:1, 1:1}, carc2.CanonizerFragment);
_.$init_13 = function $init_13(){
}
;
cggl.Lcom_actelion_research_chem_CanonizerFragment_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerFragment', 268, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerMesoHelper = function $clinit_CanonizerMesoHelper(){
  carc2.$clinit_CanonizerMesoHelper = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerMesoHelper = function CanonizerMesoHelper(mol, canRankWithoutStereo, isStereoCenter, thParity, ezParity, thESRType, thESRGroup, ezESRType, ezESRGroup, thParityRoundIsOdd, ezParityRoundIsOdd, esrTypeNeedsNormalization){
  carc2.$clinit_CanonizerMesoHelper();
  Object_0.call(this);
  this.$init_14();
  this.mMol = mol;
  this.mCanRankWithoutStereo = canRankWithoutStereo;
  this.mIsStereoCenter = isStereoCenter;
  this.mTHParity = thParity;
  this.mEZParity = ezParity;
  this.mTHESRType = thESRType;
  this.mTHESRGroup = thESRGroup;
  this.mTHParityRoundIsOdd = thParityRoundIsOdd;
  this.mEZParityRoundIsOdd = ezParityRoundIsOdd;
  this.mTHESRTypeNeedsNormalization = esrTypeNeedsNormalization;
  this.findMesoFragments();
}
;
carc2.addToIntArray = function addToIntArray(intArray, intValue){
  carc2.$clinit_CanonizerMesoHelper();
  var i, newArray;
  newArray = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, jsEquals(intArray, null)?1:intArray.length + 1, 15, 1);
  for (i = 0; i < newArray.length - 1; i++)
    newArray[i] = intArray[i];
  newArray[newArray.length - 1] = intValue;
  return newArray;
}
;
defineClass(641, 1, {1:1}, carc2.CanonizerMesoHelper);
_.$init_14 = function $init_14(){
}
;
_.containsTypeABSParity1Or2 = function containsTypeABSParity1Or2(fragment){
  var atom, i;
  for (i = 0; i < this.mMesoFragmentAtom[fragment].length; i++) {
    atom = this.mMesoFragmentAtom[fragment][i];
    if (this.hasParity1or2(atom) && this.mTHESRType[atom] == 0)
      return true;
  }
  return false;
}
;
_.countESRGroups = function countESRGroups(fragment, esrType){
  var atom, count, groupBit, groupBits, i;
  count = 0;
  groupBits = 0;
  for (i = 0; i < this.mMesoFragmentAtom[fragment].length; i++) {
    atom = this.mMesoFragmentAtom[fragment][i];
    if (this.mTHESRType[atom] == esrType) {
      groupBit = 1 << this.mTHESRGroup[atom];
      if ((groupBits & groupBit) == 0) {
        groupBits |= groupBit;
        count++;
      }
    }
  }
  return count;
}
;
_.findMesoFragments = function findMesoFragments(){
  var atom1, atom2, fragmentNo, i, j, members, members$iterator, mesoFragmentList, seedAtom, seedBond;
  mesoFragmentList = new ju.TreeSet;
  for (seedAtom = 0; seedAtom < this.mMol.getAtoms_0(); seedAtom++) {
    if (this.mMol.getAtomPi_0(seedAtom) < 2 || this.mMol.getConnAtoms_0(seedAtom) > 2) {
      for (i = 1; i < this.mMol.getConnAtoms_0(seedAtom); i++) {
        atom1 = this.mMol.getConnAtom_0(seedAtom, i);
        for (j = 0; j < i; j++) {
          atom2 = this.mMol.getConnAtom_0(seedAtom, j);
          if (this.mayBeMirrorAtoms(atom1, atom2))
            this.tryAddNewMesoFragment(atom1, atom2, mesoFragmentList);
        }
      }
    }
  }
  for (seedBond = 0; seedBond < this.mMol.getBonds_0(); seedBond++) {
    if (this.mEZParity[seedBond] != 0) {
      if (this.mMol.getBondOrder_0(seedBond) != 2 || this.mEZParity[seedBond] != 2)
        continue;
    }
    atom1 = this.mMol.getBondAtom_0(0, seedBond);
    atom2 = this.mMol.getBondAtom_0(1, seedBond);
    if (this.mayBeMirrorAtoms(atom1, atom2))
      this.tryAddNewMesoFragment(atom1, atom2, mesoFragmentList);
  }
  this.mMesoFragmentAtom = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, mesoFragmentList.size(), 0, 2);
  this.mIsMesoFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  fragmentNo = 0;
  for (members$iterator = mesoFragmentList.iterator(); members$iterator.hasNext_0();) {
    members = castTo(members$iterator.next_3(), 232);
    this.mMesoFragmentAtom[fragmentNo++] = members.memberAtom;
    for (i = 0; i < members.memberAtom.length; i++)
      this.mIsMesoFragmentMember[members.memberAtom[i]] = true;
  }
}
;
_.findMirrorAtom = function findMirrorAtom(atom, parentOfMirrorAtom, isFragmentMember){
  var candidate, i, i0, index_0, lowCandidate, lowPathLength, pathLength;
  candidate = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(parentOfMirrorAtom), 15, 1);
  index_0 = 0;
  for (i0 = 0; i0 < this.mMol.getConnAtoms_0(parentOfMirrorAtom); i0++) {
    candidate[index_0] = this.mMol.getConnAtom_0(parentOfMirrorAtom, i0);
    if (!isFragmentMember[candidate[index_0]] && this.mayBeMirrorAtoms(atom, candidate[index_0]))
      index_0++;
  }
  if (index_0 == 0)
    return -1;
  if (index_0 == 1)
    return candidate[0];
  lowCandidate = -1;
  lowPathLength = 2147483647;
  for (i = 0; i < index_0; i++) {
    pathLength = this.mMol.getPathLength_1(atom, candidate[i], 2147483647, isFragmentMember);
    if (pathLength < lowPathLength) {
      lowPathLength = pathLength;
      lowCandidate = candidate[i];
    }
  }
  return lowCandidate;
}
;
_.hasParity1or2 = function hasParity1or2(atom){
  carc2.$clinit_CanonizerMesoHelper();
  return this.mIsStereoCenter[atom] && (this.mTHParity[atom] == 1 || this.mTHParity[atom] == 2);
}
;
_.isInMesoFragment = function isInMesoFragment(atom){
  return this.mIsMesoFragmentMember[atom];
}
;
_.isMeso = function isMeso(){
  var atom, meso;
  meso = true;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mTHParity[atom] != 0 && !this.mIsMesoFragmentMember[atom]) {
      meso = false;
      break;
    }
  }
  return meso;
}
;
_.isTetrahedral = function isTetrahedral(atom){
  return this.mMol.getAtomicNo_0(atom) == 6 && this.mMol.getAtomPi_0(atom) == 0 || this.mMol.getAtomicNo_0(atom) == 7 && this.mMol.getAtomCharge_0(atom) == 1 || this.mMol.getAtomicNo_0(atom) == 14 || this.mMol.getAtomicNo_0(atom) == 15 && this.mMol.getConnAtoms_0(atom) > 2 || this.mMol.getAtomicNo_0(atom) == 16 && this.mMol.getConnAtoms_0(atom) > 2;
}
;
_.mayBeMirrorAtoms = function mayBeMirrorAtoms(atom1, atom2){
  var bond, bond1, bond2, i, i0;
  if (atom1 == atom2)
    return false;
  if (this.mCanRankWithoutStereo[atom1] != this.mCanRankWithoutStereo[atom2])
    return false;
  if (this.mTHParity[atom1] != 0) {
    if (this.mTHParity[atom1] == 3 || this.mTHParity[atom2] == 3)
      return false;
    if (this.mTHParityRoundIsOdd[atom1] ^ this.mTHParity[atom1] != this.mTHParity[atom2])
      return false;
    if (this.mTHESRType[atom1] != this.mTHESRType[atom2] || this.mTHESRGroup[atom1] != this.mTHESRGroup[atom2])
      return false;
  }
  bond = this.mMol.getBond_0(atom1, atom2);
  if (bond != -1) {
    if (this.mMol.getBondOrder_0(bond) == 1 && this.mEZParity[bond] != 0)
      return false;
    if (this.mMol.getBondOrder_0(bond) == 2 && this.mEZParity[bond] == 1)
      return false;
  }
  if (this.mMol.getAtomPi_0(atom1) == 1 && !this.mMol.isAromaticAtom_1(atom1)) {
    bond1 = -1;
    for (i0 = 0; i0 < this.mMol.getConnAtoms_0(atom1); i0++) {
      if (this.mMol.getConnAtom_0(atom1, i0) != atom2 && this.mMol.getConnBondOrder_0(atom1, i0) == 2) {
        bond1 = this.mMol.getConnBond_0(atom1, i0);
        break;
      }
    }
    bond2 = -1;
    for (i = 0; i < this.mMol.getConnAtoms_0(atom2); i++) {
      if (this.mMol.getConnAtom_0(atom2, i) != atom1 && this.mMol.getConnBondOrder_0(atom2, i) == 2) {
        bond2 = this.mMol.getConnBond_0(atom2, i);
        break;
      }
    }
    if (bond1 != -1 && this.mEZParity[bond1] != 0 && this.mEZParityRoundIsOdd[bond1] ^ this.mEZParity[bond1] == this.mEZParity[bond2])
      return false;
  }
  return true;
}
;
_.normalizeESRGroupSwapping = function normalizeESRGroupSwapping(fragment, group, type_0, canRank){
  var absAtom, atom, comparison, groupAtom, i, i0;
  groupAtom = null;
  absAtom = null;
  for (i0 = 0; i0 < this.mMesoFragmentAtom[fragment].length; i0++) {
    atom = this.mMesoFragmentAtom[fragment][i0];
    if (this.hasParity1or2(atom)) {
      if (this.mTHESRType[atom] == 0)
        absAtom = carc2.addToIntArray(absAtom, (canRank[atom] << 16) + atom);
      else if (this.mTHESRType[atom] == type_0 && this.mTHESRGroup[atom] == group)
        groupAtom = carc2.addToIntArray(groupAtom, (canRank[atom] << 16) + atom);
    }
  }
  comparison = (new carc2.CanonizerRankListComparator).compare_2(groupAtom, absAtom);
  if (comparison == 0)
    return false;
  if (comparison < 0) {
    for (i = 0; i < this.mMesoFragmentAtom[fragment].length; i++) {
      atom = this.mMesoFragmentAtom[fragment][i];
      if (this.hasParity1or2(atom)) {
        if (this.mTHESRType[atom] == 0) {
          this.mTHESRType[atom] = narrow_byte(type_0);
          this.mTHESRGroup[atom] = narrow_byte(group);
        }
         else if (this.mTHESRType[atom] == type_0 && this.mTHESRGroup[atom] == group) {
          this.mTHESRType[atom] = 0;
          this.mTHESRGroup[atom] = -1;
        }
      }
    }
  }
  return true;
}
;
_.normalizeESRGroupSwappingAndRemoval = function normalizeESRGroupSwappingAndRemoval(canRank){
  var atom, done, doneAny, i, info, j;
  if (isNull(this.mESRGroupNormalizationInfoList))
    return false;
  doneAny = false;
  for (i = this.mESRGroupNormalizationInfoList.size() - 1; i >= 0; i--) {
    done = false;
    info = castTo(this.mESRGroupNormalizationInfoList.getAtIndex(i), 139);
    if (info.action == 2) {
      done = this.normalizeESRGroupSwapping(info.fragment_0, info.group, info.type_0, canRank);
    }
     else if (info.action == 1) {
      done = this.removeESRGroupFromFragment(info.fragment_0, canRank);
    }
    if (done) {
      this.mESRGroupNormalizationInfoList.remove(info);
      for (j = 0; j < this.mMesoFragmentAtom[info.fragment_0].length; j++) {
        atom = this.mMesoFragmentAtom[info.fragment_0][j];
        this.mTHESRTypeNeedsNormalization[atom] = false;
      }
      doneAny = true;
    }
  }
  return doneAny;
}
;
_.normalizeESRGroups = function normalizeESRGroups(){
  var andCount, containsABS, dependentGroupCount, fragment, group, matrix, orCount, type_0;
  if (jsNotEquals(this.mMesoFragmentAtom, null)) {
    matrix = new carc2.CanonizerMesoHelper$ESRGroupFragmentMatrix(this);
    this.mESRGroupNormalizationInfoList = new ju.ArrayList;
    for (fragment = 0; fragment < this.mMesoFragmentAtom.length; fragment++) {
      dependentGroupCount = matrix.getDependentGroupCount(fragment);
      if (dependentGroupCount == 0) {
        matrix.cutTiesOfIndependentGroups(fragment);
        orCount = this.countESRGroups(fragment, 2);
        andCount = this.countESRGroups(fragment, 1);
        containsABS = this.containsTypeABSParity1Or2(fragment);
        if (orCount == 1 && andCount == 1 && !containsABS) {
          this.putORAtomsIntoANDGroup(fragment, matrix.newESRGroup(1));
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
        if (orCount > 0) {
          if (containsABS) {
            this.putABSAtomsIntoESRGroup(fragment, matrix.newESRGroup(2), 2);
            orCount++;
          }
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
         else if (andCount > 0) {
          if (containsABS)
            this.putABSAtomsIntoESRGroup(fragment, matrix.newESRGroup(1), 1);
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
         else if (containsABS) {
          this.putABSAtomsIntoESRGroup(fragment, matrix.newESRGroup(1), 1);
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
      }
       else if (dependentGroupCount == 1) {
        if (this.containsTypeABSParity1Or2(fragment)) {
          group = matrix.getDependentGroup(fragment);
          type_0 = matrix.getDependentType(fragment);
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 2, group, type_0));
        }
         else {
          matrix.cutTiesOfIndependentGroups(fragment);
          this.mESRGroupNormalizationInfoList.add(new carc2.ESRGroupNormalizationInfo(fragment, 1, -1, -1));
        }
      }
    }
  }
}
;
_.putABSAtomsIntoESRGroup = function putABSAtomsIntoESRGroup(fragment, esrGroup, esrType){
  var atom, j;
  for (j = 0; j < this.mMesoFragmentAtom[fragment].length; j++) {
    atom = this.mMesoFragmentAtom[fragment][j];
    if (this.hasParity1or2(atom) && this.mTHESRType[atom] == 0) {
      this.mTHESRType[atom] = narrow_byte(esrType);
      this.mTHESRGroup[atom] = narrow_byte(esrGroup);
    }
  }
}
;
_.putORAtomsIntoANDGroup = function putORAtomsIntoANDGroup(fragment, esrGroup){
  var atom, j;
  for (j = 0; j < this.mMesoFragmentAtom[fragment].length; j++) {
    atom = this.mMesoFragmentAtom[fragment][j];
    if (this.mTHESRType[atom] == 2) {
      this.mTHESRType[atom] = 1;
      this.mTHESRGroup[atom] = narrow_byte(esrGroup);
    }
  }
}
;
_.removeESRGroupFromFragment = function removeESRGroupFromFragment(fragment, canRank){
  var atom, esrType, fragmentAtom, groupMember, i, i0, i1, i2;
  fragmentAtom = this.mMesoFragmentAtom[fragment];
  esrType = 1;
  for (i0 = 0; i0 < fragmentAtom.length; i0++) {
    atom = fragmentAtom[i0];
    if (this.mIsStereoCenter[atom] && this.mTHESRType[atom] == 2) {
      esrType = 2;
      break;
    }
  }
  groupMember = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, 32, 0, 2);
  for (i1 = 0; i1 < fragmentAtom.length; i1++) {
    atom = fragmentAtom[i1];
    if (this.mIsStereoCenter[atom] && this.mTHESRType[atom] == esrType)
      groupMember[this.mTHESRGroup[atom]] = carc2.addToIntArray(groupMember[this.mTHESRGroup[atom]], (canRank[atom] << 16) + atom);
  }
  for (i2 = 0; i2 < 32; i2++)
    if (jsNotEquals(groupMember[i2], null))
      ju.sort_3(groupMember[i2]);
  ju.sort_7(groupMember, new carc2.CanonizerRankListComparator);
  if ((new carc2.CanonizerRankListComparator).compare_2(groupMember[0], groupMember[1]) == 0)
    return false;
  for (i = 0; i < groupMember[0].length; i++) {
    atom = groupMember[0][i] & 65535;
    this.mTHESRType[atom] = 0;
    this.mTHESRGroup[atom] = -1;
  }
  return true;
}
;
_.tryAddNewMesoFragment = function tryAddNewMesoFragment(atom1, atom2, mesoFragmentList){
  var members;
  members = this.tryFindMesoFragment(atom1, atom2);
  if (isNotNull(members) && members.hasStereoCenters(this.mIsStereoCenter))
    mesoFragmentList.add(members);
}
;
_.tryFindMesoFragment = function tryFindMesoFragment(atom1, atom2){
  var b, branch, candidate, connIsOnMirrorPlane, current, currentAtom, found, graphAtom, hasOrthogonality, highest, i, i0, i1, isOrthogonal, j, k, matchAtom, members, opponent, symAtom1, symAtom2;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  matchAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  isOrthogonal = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  hasOrthogonality = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  branch = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_MesoFragmentBranch_2_classLit, {4:1, 1:1, 7:1}, 343, this.mMol.getAtoms_0(), 0, 1);
  members = new carc2.MesoFragmentMembers(this.mMol.getAtoms_0());
  graphAtom[0] = atom1;
  matchAtom[atom1] = atom2;
  matchAtom[atom2] = -2;
  members.add_4(atom1);
  members.add_4(atom2);
  current = 0;
  highest = 0;
  while (current <= highest) {
    currentAtom = graphAtom[current];
    if (matchAtom[currentAtom] == currentAtom) {
      for (i = 0; i < this.mMol.getConnAtoms_0(currentAtom); i++) {
        candidate = this.mMol.getConnAtom_0(currentAtom, i);
        if (!members.isMember[candidate]) {
          if (this.mMol.getConnBondOrder_0(currentAtom, i) == 2 && this.mMol.getAtomicNo_0(candidate) < 10) {
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = candidate;
            hasOrthogonality[candidate] = hasOrthogonality[currentAtom] || this.mMol.getAtomPi_0(candidate) == 2;
            isOrthogonal[candidate] = hasOrthogonality[currentAtom]?!isOrthogonal[currentAtom]:false;
            members.add_4(candidate);
          }
           else if (hasOrthogonality[currentAtom] && isOrthogonal[currentAtom]) {
            opponent = this.findMirrorAtom(candidate, matchAtom[currentAtom], members.isMember);
            if (opponent == -1)
              return null;
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = opponent;
            matchAtom[opponent] = -2;
            hasOrthogonality[candidate] = false;
            members.add_4(candidate);
            members.add_4(opponent);
          }
           else if (this.mMol.isRingBond_0(this.mMol.getConnBond_0(currentAtom, i))) {
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = candidate;
            hasOrthogonality[candidate] = false;
            members.add_4(candidate);
            if (this.isTetrahedral(candidate) && this.mMol.getConnAtoms_0(candidate) > 2) {
              found = false;
              for (j = 1; j < this.mMol.getConnAtoms_0(candidate); j++) {
                symAtom1 = this.mMol.getConnAtom_0(candidate, j);
                if (!members.isMember[symAtom1]) {
                  for (k = 0; k < j; k++) {
                    symAtom2 = this.mMol.getConnAtom_0(candidate, k);
                    if (!members.isMember[symAtom2]) {
                      if (this.mayBeMirrorAtoms(symAtom1, symAtom2)) {
                        graphAtom[++highest] = symAtom1;
                        matchAtom[symAtom1] = symAtom2;
                        matchAtom[symAtom2] = -2;
                        hasOrthogonality[symAtom1] = false;
                        members.add_4(symAtom1);
                        members.add_4(symAtom2);
                        found = true;
                      }
                    }
                  }
                }
              }
              if (!found)
                return null;
            }
          }
        }
      }
    }
     else {
      connIsOnMirrorPlane = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(currentAtom), 16, 1);
      for (i0 = 0; i0 < this.mMol.getConnAtoms_0(currentAtom); i0++) {
        candidate = this.mMol.getConnAtom_0(currentAtom, i0);
        if (members.isMember[candidate]) {
          connIsOnMirrorPlane[i0] = matchAtom[candidate] == candidate;
        }
         else {
          for (j = 0; j < this.mMol.getConnAtoms_0(candidate); j++) {
            if (this.mMol.getConnAtom_0(candidate, j) == matchAtom[currentAtom]) {
              connIsOnMirrorPlane[i0] = true;
              break;
            }
          }
        }
      }
      for (i1 = 0; i1 < this.mMol.getConnAtoms_0(currentAtom); i1++) {
        if (connIsOnMirrorPlane[i1]) {
          candidate = this.mMol.getConnAtom_0(currentAtom, i1);
          if (members.isMember[candidate]) {
            if (this.mMol.getBond_0(candidate, matchAtom[currentAtom]) == -1)
              return null;
          }
           else {
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = candidate;
            isOrthogonal[candidate] = false;
            hasOrthogonality[candidate] = true;
            members.add_4(candidate);
          }
        }
      }
      b = branch[currentAtom];
      for (i = isNull(b)?0:b.neighbourIndex; i < this.mMol.getConnAtoms_0(currentAtom); i++) {
        if (!connIsOnMirrorPlane[i]) {
          candidate = this.mMol.getConnAtom_0(currentAtom, i);
          if (!members.isMember[candidate]) {
            opponent = this.findMirrorAtom(candidate, matchAtom[currentAtom], members.isMember);
            if (opponent == -1)
              return null;
            graphAtom[++highest] = candidate;
            matchAtom[candidate] = opponent;
            matchAtom[opponent] = -2;
            hasOrthogonality[candidate] = false;
            members.add_4(candidate);
            members.add_4(opponent);
          }
        }
      }
    }
    current++;
  }
  return members;
}
;
carc2.REMOVE_ESR_GROUP = 1;
carc2.SWAP_ESR_GROUPS = 2;
cggl.Lcom_actelion_research_chem_CanonizerMesoHelper_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerMesoHelper', 641, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix = function $clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix(){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.CanonizerMesoHelper$ESRGroupFragmentMatrix = function CanonizerMesoHelper$ESRGroupFragmentMatrix(this$0){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var anchorGroup, atom, atom0, atom1, chainMemberLevel, cycle, fragment, fragment0, fragment1, fragment2, group, group0, group1, group2, i, j;
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_15();
  for (atom0 = 0; atom0 < this$0.mMol.getAtoms_0(); atom0++) {
    if (this$0.hasParity1or2(atom0)) {
      if (this$0.mTHESRType[atom0] == 1) {
        if (this.mAndGroupCount <= this$0.mTHESRGroup[atom0])
          this.mAndGroupCount = 1 + this$0.mTHESRGroup[atom0];
      }
       else if (this$0.mTHESRType[atom0] == 2) {
        if (this.mOrGroupCount <= this$0.mTHESRGroup[atom0])
          this.mOrGroupCount = 1 + this$0.mTHESRGroup[atom0];
      }
    }
  }
  this.mGroupCount = this.mAndGroupCount + this.mOrGroupCount;
  this.mMatrix = initMultidimensionalArray(cggl.Z_classLit, [{4:1, 1:1, 7:1}, {12:1, 4:1, 1:1}], [12, 5], 16, [this.mGroupCount + 1, this$0.mMesoFragmentAtom.length + 1], 2);
  for (atom1 = 0; atom1 < this$0.mMol.getAtoms_0(); atom1++)
    if (this$0.hasParity1or2(atom1) && !this$0.mIsMesoFragmentMember[atom1])
      this.mMatrix[this.groupIndex(atom1)][this$0.mMesoFragmentAtom.length] = true;
  for (fragment0 = 0; fragment0 < this$0.mMesoFragmentAtom.length; fragment0++) {
    for (j = 0; j < this$0.mMesoFragmentAtom[fragment0].length; j++) {
      atom = this$0.mMesoFragmentAtom[fragment0][j];
      if (this$0.hasParity1or2(atom))
        this.mMatrix[this.groupIndex(atom)][fragment0] = true;
    }
  }
  this.mGroupNeighbour = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mGroupCount, 0, 2);
  for (fragment1 = 0; fragment1 < this$0.mMesoFragmentAtom.length; fragment1++) {
    for (group1 = 1; group1 < this.mGroupCount; group1++) {
      if (this.mMatrix[group1][fragment1]) {
        for (group2 = 0; group2 < group1; group2++) {
          if (this.mMatrix[group2][fragment1]) {
            this.mGroupNeighbour[group1] = carc2.addToIntArray(this.mGroupNeighbour[group1], group2);
            this.mGroupNeighbour[group2] = carc2.addToIntArray(this.mGroupNeighbour[group2], group1);
          }
        }
      }
    }
  }
  this.mGroupDependence = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mGroupCount + 1, 15, 1);
  for (group0 = 0; group0 < this.mGroupCount; group0++) {
    if (this.mMatrix[group0][this$0.mMesoFragmentAtom.length])
      this.mGroupDependence[group0] = -1;
    else 
      this.mGroupDependence[group0] = -2;
  }
  for (fragment2 = 0; fragment2 < this$0.mMesoFragmentAtom.length; fragment2++) {
    if (this.mMatrix[this.mGroupCount][fragment2]) {
      for (group = 0; group < this.mGroupCount; group++) {
        if (this.mMatrix[group][fragment2] && this.mGroupDependence[group] != fragment2) {
          if (this.mGroupDependence[group] == -2)
            this.mGroupDependence[group] = fragment2;
          else 
            this.mGroupDependence[group] = -3;
        }
      }
    }
  }
  for (anchorGroup = 0; anchorGroup < this.mGroupCount; anchorGroup++) {
    if (this.mGroupDependence[anchorGroup] >= -1) {
      chainMemberLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mGroupCount, 15, 1);
      if (this.extendAnchorChain(chainMemberLevel, anchorGroup)) {
        for (group = 0; group < this.mGroupCount; group++) {
          if (chainMemberLevel[group] != 0)
            this.mGroupDependence[group] = -3;
        }
      }
    }
  }
  for (fragment = 0; fragment < this$0.mMesoFragmentAtom.length - 1; fragment++) {
    for (group1 = 1; group1 < this.mGroupCount; group1++) {
      if (this.mMatrix[group1][fragment] && this.mGroupDependence[group1] != -3) {
        for (group2 = 0; group2 < group1; group2++) {
          if (this.mMatrix[group2][fragment] && this.mGroupDependence[group2] != -3) {
            cycle = this.getDependencyCycle(group1, group2, fragment);
            if (jsNotEquals(cycle, null)) {
              for (i = 0; i < cycle.length; i++)
                this.mGroupDependence[cycle[i]] = -3;
              this.removeOneGroupFromCycle(cycle);
              break;
            }
          }
        }
      }
    }
  }
}
;
defineClass(642, 1, {1:1}, carc2.CanonizerMesoHelper$ESRGroupFragmentMatrix);
_.$init_15 = function $init_15(){
}
;
_.cutTiesOfIndependentGroups = function cutTiesOfIndependentGroups(fragment){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var atom, f, group, i, newESRGroup, oldESRGroup;
  for (group = 0; group < this.mGroupCount; group++) {
    if (this.mMatrix[group][fragment] && this.mGroupDependence[group] != -3) {
      for (f = 0; f <= this.this$01.mMesoFragmentAtom.length; f++) {
        if (f != fragment && this.mMatrix[group][f]) {
          this.mMatrix[group][fragment] = false;
          oldESRGroup = this.getESRGroup(group);
          newESRGroup = this.newESRGroup(this.getESRType(group));
          for (i = 0; i < this.this$01.mMesoFragmentAtom[fragment].length; i++) {
            atom = this.this$01.mMesoFragmentAtom[fragment][i];
            if (this.this$01.hasParity1or2(atom) && this.this$01.mTHESRGroup[atom] == oldESRGroup)
              this.this$01.mTHESRGroup[atom] = narrow_byte(newESRGroup);
          }
        }
      }
    }
  }
}
;
_.extendAnchorChain = function extendAnchorChain(chainMemberLevel, anchorGroup){
  var chainExtentionFound, group1, group2, level, secondAnchorFound;
  secondAnchorFound = false;
  level = 1;
  chainMemberLevel[anchorGroup] = level;
  chainExtentionFound = true;
  while (chainExtentionFound) {
    chainExtentionFound = false;
    for (group1 = 0; group1 < this.mGroupCount; group1++) {
      if (chainMemberLevel[group1] == level) {
        for (group2 = 0; group2 < this.mGroupCount; group2++) {
          if (chainMemberLevel[group2] == 0 && this.groupsShareFragment(group1, group2)) {
            if (this.mGroupDependence[group2] == -2) {
              chainMemberLevel[group2] = level + 1;
              chainExtentionFound = true;
            }
             else if (this.mGroupDependence[group2] != this.mGroupDependence[anchorGroup]) {
              chainMemberLevel[group2] = level + 1;
              secondAnchorFound = true;
            }
          }
        }
      }
    }
    level++;
  }
  return secondAnchorFound;
}
;
_.getDependencyCycle = function getDependencyCycle(group1, group2, startFragment){
  var candidate, current, cycle, cycleLength, fragment, graphGroup, graphLevel, highest, i, j, parentGroup;
  for (fragment = startFragment + 1; fragment < this.this$01.mMesoFragmentAtom.length; fragment++) {
    if (fragment != startFragment && this.mMatrix[group1][fragment] && this.mMatrix[group2][fragment]) {
      cycle = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
      cycle[0] = group2;
      cycle[1] = group1;
      return cycle;
    }
  }
  parentGroup = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mGroupCount, 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mGroupCount, 15, 1);
  graphGroup = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mGroupCount, 15, 1);
  current = 0;
  highest = 0;
  graphGroup[0] = group1;
  graphLevel[group1] = 1;
  while (current <= highest) {
    for (i = 0; i < this.mGroupNeighbour[graphGroup[current]].length; i++) {
      candidate = this.mGroupNeighbour[graphGroup[current]][i];
      if (candidate == group2) {
        if (current == 0)
          continue;
        cycleLength = graphLevel[graphGroup[current]] + 1;
        cycle = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, cycleLength, 15, 1);
        cycle[0] = candidate;
        cycle[1] = graphGroup[current];
        for (j = 2; j < cycleLength; j++)
          cycle[j] = parentGroup[cycle[j - 1]];
        return cycle;
      }
      if (graphLevel[candidate] == 0 && this.mGroupDependence[candidate] != -3) {
        graphLevel[candidate] = graphLevel[graphGroup[current]] + 1;
        graphGroup[++highest] = candidate;
        parentGroup[candidate] = graphGroup[current];
      }
    }
    current++;
  }
  return null;
}
;
_.getDependentGroup = function getDependentGroup(fragment){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var group;
  for (group = 0; group < this.mGroupCount; group++)
    if (this.mMatrix[group][fragment] && this.mGroupDependence[group] == -3)
      return this.getESRGroup(group);
  return -1;
}
;
_.getDependentGroupCount = function getDependentGroupCount(fragment){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var count, group;
  count = 0;
  for (group = 0; group < this.mGroupCount; group++)
    if (this.mMatrix[group][fragment] && this.mGroupDependence[group] == -3)
      count++;
  return count;
}
;
_.getDependentType = function getDependentType(fragment){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  var group;
  for (group = 0; group < this.mGroupCount; group++)
    if (this.mMatrix[group][fragment] && this.mGroupDependence[group] == -3)
      return this.getESRType(group);
  return -1;
}
;
_.getESRGroup = function getESRGroup(group){
  return group < this.mAndGroupCount?group:group < this.mGroupCount?group - this.mAndGroupCount:-1;
}
;
_.getESRType = function getESRType(group){
  return group < this.mAndGroupCount?1:group < this.mGroupCount?2:0;
}
;
_.groupIndex = function groupIndex(atom){
  var group, type_0;
  type_0 = this.this$01.mTHESRType[atom];
  group = this.this$01.mTHESRGroup[atom];
  return type_0 == 0?this.mGroupCount:type_0 == 1?group:this.mAndGroupCount + group;
}
;
_.groupsShareFragment = function groupsShareFragment(group1, group2){
  var fragment;
  for (fragment = 0; fragment < this.this$01.mMesoFragmentAtom.length; fragment++)
    if (this.mMatrix[group1][fragment] && this.mMatrix[group2][fragment])
      return true;
  return false;
}
;
_.newESRGroup = function newESRGroup_0(esrType){
  carc2.$clinit_CanonizerMesoHelper$ESRGroupFragmentMatrix();
  return esrType == 1?this.mAndGroupCount + this.mNewAndGroupCount++:this.mOrGroupCount + this.mNewOrGroupCount++;
}
;
_.removeOneGroupFromCycle = function removeOneGroupFromCycle(cycle){
  var atom, atom0, esrGroup, esrType, fragment, i, minGroup, minGroupIndex, minRank, minType;
  minRank = 2147483647;
  minGroup = -1;
  minType = -1;
  minGroupIndex = -1;
  for (atom0 = 0; atom0 < this.this$01.mMol.getAtoms_0(); atom0++) {
    if (this.this$01.hasParity1or2(atom0) && this.this$01.mTHESRType[atom0] != 0) {
      for (i = 0; i < cycle.length; i++) {
        esrGroup = this.getESRGroup(cycle[i]);
        esrType = this.getESRType(cycle[i]);
        if (this.this$01.mTHESRType[atom0] == esrType && this.this$01.mTHESRGroup[atom0] == esrGroup) {
          if (minRank > this.this$01.mCanRankWithoutStereo[atom0] + (esrType == 1?65536:0)) {
            minRank = this.this$01.mCanRankWithoutStereo[atom0] + (esrType == 1?65536:0);
            minGroup = esrGroup;
            minType = esrType;
            minGroupIndex = cycle[i];
          }
        }
      }
    }
  }
  for (atom = 0; atom < this.this$01.mMol.getAtoms_0(); atom++) {
    if (this.this$01.hasParity1or2(atom) && this.this$01.mTHESRType[atom] == minType && this.this$01.mTHESRGroup[atom] == minGroup) {
      this.this$01.mTHESRType[atom] = 0;
      this.this$01.mTHESRGroup[atom] = -1;
    }
  }
  for (fragment = 0; fragment < this.this$01.mMesoFragmentAtom.length; fragment++)
    this.mMatrix[minGroupIndex][fragment] = false;
}
;
_.mAndGroupCount = 0;
_.mGroupCount = 0;
_.mNewAndGroupCount = 0;
_.mNewOrGroupCount = 0;
_.mOrGroupCount = 0;
cggl.Lcom_actelion_research_chem_CanonizerMesoHelper$ESRGroupFragmentMatrix_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerMesoHelper/ESRGroupFragmentMatrix', 642, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerParity = function $clinit_CanonizerParity(){
  carc2.$clinit_CanonizerParity = emptyMethod;
}
;
defineClass(962, 1, {10:1, 1:1});
cggl.Lcom_actelion_research_chem_CanonizerParity_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerParity', 962, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerRankListComparator = function $clinit_CanonizerRankListComparator(){
  carc2.$clinit_CanonizerRankListComparator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carc2.CanonizerRankListComparator = function CanonizerRankListComparator(){
  carc2.$clinit_CanonizerRankListComparator();
  Object_0.call(this);
  this.$init_16();
}
;
defineClass(283, 1, {1:1, 50:1}, carc2.CanonizerRankListComparator);
_.$init_16 = function $init_16(){
}
;
_.compare_0 = function compare_4(o1, o2){
  return this.compare_2(castTo(o1, 6), castTo(o2, 6));
}
;
_.equals_0 = function equals_2(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_2 = function compare_5(o1, o2){
  var count, i;
  if (jsEquals(o1, null))
    return jsEquals(o2, null)?0:1;
  if (jsEquals(o2, null))
    return -1;
  count = $wnd.Math.min(o1.length, o2.length);
  for (i = 0; i < count; i++)
    if ((o1[i] & -65536) != (o2[i] & -65536))
      return (o1[i] & -65536) < (o2[i] & -65536)?-1:1;
  return o1.length == o2.length?0:o1.length < o2.length?-1:1;
}
;
cggl.Lcom_actelion_research_chem_CanonizerRankListComparator_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerRankListComparator', 283, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerUtil = function $clinit_CanonizerUtil(){
  carc2.$clinit_CanonizerUtil = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.getIDCode_0 = function getIDCode_0(mol, type_0, largestFragmentOnly){
  carc2.$clinit_CanonizerUtil();
  switch (type_0.ordinal()) {
    case (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.NORMAL).ordinal():
      return carc2.getIDCode_1(mol, largestFragmentOnly);
    case (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.NOSTEREO).ordinal():
      return carc2.getIDCodeNoStereo(mol, largestFragmentOnly);
    case (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.BACKBONE).ordinal():
      return carc2.getIDCodeBackBone(mol, largestFragmentOnly);
    case (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.TAUTOMER).ordinal():
      return carc2.getIDCodeTautomer(mol, largestFragmentOnly);
    case (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.NOSTEREO_TAUTOMER).ordinal():
      return carc2.getIDCodeNoStereoTautomer(mol, largestFragmentOnly);
    default:break;
  }
  return null;
}
;
carc2.getIDCode_1 = function getIDCode_1(mol, largestFragmentOnly){
  var e;
  try {
    if (!largestFragmentOnly)
      return (new carc2.Canonizer(mol)).getIDCode_0();
    mol = mol.getCompactCopy_0();
    mol.stripSmallFragments_0(true);
    carc2.neutralizeChargedMolecule(mol);
    return (new carc2.Canonizer(mol)).getIDCode_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println_0('WARN: getIDCode() ' + e);
      return null;
    }
     else 
      throw toJs($e0);
  }
}
;
carc2.getIDCodeBackBone = function getIDCodeBackBone(mol, largestFragmentOnly){
  var b, e, i;
  try {
    mol = mol.getCompactCopy_0();
    if (largestFragmentOnly) {
      mol.stripSmallFragments_0(true);
      carc2.neutralizeChargedMolecule(mol);
    }
    mol.stripStereoInformation_0();
    b = mol.getAllBonds_0();
    for (i = 0; i < b; i++)
      mol.setBondType_0(i, 1);
    return (new carc2.Canonizer(mol)).getIDCode_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println_0('WARN: getIDCodeBackBone() ' + e);
      return null;
    }
     else 
      throw toJs($e0);
  }
}
;
carc2.getIDCodeNoStereo = function getIDCodeNoStereo(mol, largestFragmentOnly){
  var e;
  try {
    mol = mol.getCompactCopy_0();
    if (largestFragmentOnly) {
      mol.stripSmallFragments_0(true);
      carc2.neutralizeChargedMolecule(mol);
    }
    mol.stripStereoInformation_0();
    return (new carc2.Canonizer(mol)).getIDCode_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println_0('WARN: getIDCodeNoStereo() ' + e);
      return null;
    }
     else 
      throw toJs($e0);
  }
}
;
carc2.getIDCodeNoStereoTautomer = function getIDCodeNoStereoTautomer(mol, largestFragmentOnly){
  var e, genericTautomer;
  try {
    mol = mol.getCompactCopy_0();
    if (largestFragmentOnly) {
      mol.stripSmallFragments_0(true);
      carc2.neutralizeChargedMolecule(mol);
    }
    mol.stripStereoInformation_0();
    genericTautomer = (new carc2.TautomerHelper(mol)).createGenericTautomer();
    return (new carc2.Canonizer_0(genericTautomer, 8)).getIDCode_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println_0('WARN: getIDCodeNoStereoTautomer() ' + e);
      return null;
    }
     else 
      throw toJs($e0);
  }
}
;
carc2.getIDCodeTautomer = function getIDCodeTautomer(mol, largestFragmentOnly){
  var e, genericTautomer;
  try {
    if (largestFragmentOnly) {
      mol = mol.getCompactCopy_0();
      mol.stripSmallFragments_0(true);
      carc2.neutralizeChargedMolecule(mol);
    }
    genericTautomer = (new carc2.TautomerHelper(mol)).createGenericTautomer();
    return (new carc2.Canonizer_0(genericTautomer, 8)).getIDCode_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println_0('WARN: getIDCodeTautomer() ' + e);
      return null;
    }
     else 
      throw toJs($e0);
  }
}
;
defineClass(968, 1, {1:1});
cggl.Lcom_actelion_research_chem_CanonizerUtil_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerUtil', 968, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Enum = function $clinit_Enum(){
  jl.$clinit_Enum = emptyMethod;
  jl.$clinit_Object();
}
;
function Enum(name_0, ordinal){
  jl.$clinit_Enum();
  Object_0.call(this);
  this.$init_17();
  this.name_0 = name_0;
  this.ordinal_0 = ordinal;
}

function createValueOfMap(enumConstants){
  jl.$clinit_Enum();
  var result, value_0, value$array, value$index, value$max;
  result = createObject_0();
  for (value$array = enumConstants , value$index = 0 , value$max = value$array.length; value$index < value$max; ++value$index) {
    value_0 = value$array[value$index];
    jl.put0(result, ':' + value_0.name(), value_0);
  }
  return result;
}

jl.get0 = function get0(map_0, name_0){
  return map_0[name_0];
}
;
jl.put0 = function put0(map_0, name_0, value_0){
  map_0[name_0] = value_0;
}
;
function valueOf(map_0, name_0){
  jl.$clinit_Enum();
  var result;
  ji2.checkNotNull_0(name_0);
  result = jl.get0(map_0, ':' + name_0);
  ji2.checkCriticalArgument_1(isNotNull(result), 'Enum constant undefined: ' + name_0);
  return result;
}

defineClass(11, 1, {4:1, 10:1, 11:1, 1:1});
_.$init_17 = function $init_17(){
}
;
_.compareTo_1 = function compareTo_4(other){
  return this.compareTo(castTo(other, 11));
}
;
_.compareTo = function compareTo_3(other){
  return this.ordinal_0 - castTo(other, 11).ordinal_0;
}
;
_.equals = function equals_3(other){
  return maskUndefined(this) === maskUndefined(other);
}
;
_.equals_0 = function(other){
  return this.equals(other);
}
;
_.hashCode = function hashCode_1(){
  return getClassPrototype(1).hashCode_1.call(this);
}
;
_.hashCode_1 = function(){
  return this.hashCode();
}
;
_.name = function name_1(){
  return jsNotEquals(this.name_0, null)?this.name_0:'' + this.ordinal_0;
}
;
_.ordinal = function ordinal_0(){
  return this.ordinal_0;
}
;
_.toString = function toString_4(){
  return this.name();
}
;
_.toString_0 = function(){
  return this.toString();
}
;
_.ordinal_0 = 0;
cggl.Ljava_lang_Enum_2_classLit = createForClass('java.lang', 'Enum', 11, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerUtil$IDCODE_TYPE = function $clinit_CanonizerUtil$IDCODE_TYPE(){
  carc2.$clinit_CanonizerUtil$IDCODE_TYPE = emptyMethod;
  jl.$clinit_Enum();
  carc2.NORMAL = new carc2.CanonizerUtil$IDCODE_TYPE('NORMAL', 0);
  carc2.NOSTEREO = new carc2.CanonizerUtil$IDCODE_TYPE('NOSTEREO', 1);
  carc2.BACKBONE = new carc2.CanonizerUtil$IDCODE_TYPE('BACKBONE', 2);
  carc2.TAUTOMER = new carc2.CanonizerUtil$IDCODE_TYPE('TAUTOMER', 3);
  carc2.NOSTEREO_TAUTOMER = new carc2.CanonizerUtil$IDCODE_TYPE('NOSTEREO_TAUTOMER', 4);
}
;
carc2.CanonizerUtil$IDCODE_TYPE = function CanonizerUtil$IDCODE_TYPE(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_18();
}
;
carc2.valueOf_0 = function valueOf_0(name_0){
  carc2.$clinit_CanonizerUtil$IDCODE_TYPE();
  return valueOf((carc2.$clinit_CanonizerUtil$IDCODE_TYPE$Map() , carc2.$MAP), name_0);
}
;
carc2.values_0 = function values_0(){
  carc2.$clinit_CanonizerUtil$IDCODE_TYPE();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_CanonizerUtil$IDCODE_1TYPE_2_classLit, 1), {4:1, 1:1, 7:1}, 156, 0, [carc2.NORMAL, carc2.NOSTEREO, carc2.BACKBONE, carc2.TAUTOMER, carc2.NOSTEREO_TAUTOMER]);
}
;
defineClass(156, 11, {156:1, 4:1, 10:1, 11:1, 1:1}, carc2.CanonizerUtil$IDCODE_TYPE);
_.$init_18 = function $init_18(){
}
;
cggl.Lcom_actelion_research_chem_CanonizerUtil$IDCODE_1TYPE_2_classLit = createForEnum('com.actelion.research.chem', 'CanonizerUtil/IDCODE_TYPE', 156, cggl.Ljava_lang_Enum_2_classLit, carc2.values_0, carc2.valueOf_0);
carc2.$clinit_CanonizerUtil$IDCODE_TYPE$Map = function $clinit_CanonizerUtil$IDCODE_TYPE$Map(){
  carc2.$clinit_CanonizerUtil$IDCODE_TYPE$Map = emptyMethod;
  carc2.$MAP = createValueOfMap(carc2.values_0());
}
;
defineClass(970, 1, {1:1});
cggl.Lcom_actelion_research_chem_CanonizerUtil$IDCODE_1TYPE$Map_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerUtil/IDCODE_TYPE/Map', 970, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_CanonizerUtil$StrongHasher = function $clinit_CanonizerUtil$StrongHasher(){
  carc2.$clinit_CanonizerUtil$StrongHasher = emptyMethod;
}
;
defineClass(969, 1, {1:1});
cggl.Lcom_actelion_research_chem_CanonizerUtil$StrongHasher_2_classLit = createForClass('com.actelion.research.chem', 'CanonizerUtil/StrongHasher', 969, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Coordinates = function $clinit_Coordinates(){
  carc2.$clinit_Coordinates = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Coordinates_0 = function Coordinates_0(){
  carc2.$clinit_Coordinates();
  Object_0.call(this);
  this.$init_19();
}
;
carc2.Coordinates_1 = function Coordinates_1(x_0, y_0, z_0){
  carc2.$clinit_Coordinates();
  Object_0.call(this);
  this.$init_19();
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.z_0 = z_0;
}
;
carc2.Coordinates_2 = function Coordinates_2(c){
  carc2.$clinit_Coordinates();
  carc2.Coordinates_1.call(this, c.x_0, c.y_0, c.z_0);
}
;
defineClass(43, 1, {43:1, 4:1, 10:1, 1:1}, carc2.Coordinates_0, carc2.Coordinates_1, carc2.Coordinates_2);
_.$init_19 = function $init_19(){
}
;
_.compareTo_1 = function compareTo_6(o){
  return this.compareTo_3(castTo(o, 43));
}
;
_.add_2 = function add_3(dx, dy, dz){
  this.x_0 += dx;
  this.y_0 += dy;
  this.z_0 += dz;
}
;
_.add_3 = function add_4(c){
  this.x_0 += c.x_0;
  this.y_0 += c.y_0;
  this.z_0 += c.z_0;
  return this;
}
;
_.addC = function addC(c){
  return new carc2.Coordinates_1(this.x_0 + c.x_0, this.y_0 + c.y_0, this.z_0 + c.z_0);
}
;
_.center = function center_0(c){
  this.x_0 = (this.x_0 + c.x_0) / 2;
  this.y_0 = (this.y_0 + c.y_0) / 2;
  this.z_0 = (this.z_0 + c.z_0) / 2;
  return this;
}
;
_.compareTo_3 = function compareTo_5(o){
  if (this.x_0 != o.x_0)
    return this.x_0 < o.x_0?-1:1;
  if (this.y_0 != o.y_0)
    return this.y_0 < o.y_0?-1:1;
  if (this.z_0 != o.z_0)
    return this.z_0 < o.z_0?-1:1;
  return 0;
}
;
_.cross = function cross(c){
  return new carc2.Coordinates_1(this.y_0 * c.z_0 - this.z_0 * c.y_0, -(this.x_0 * c.z_0 - this.z_0 * c.x_0), this.x_0 * c.y_0 - this.y_0 * c.x_0);
}
;
_.dist = function dist_0(){
  return $wnd.Math.sqrt(this.distSq());
}
;
_.distSq = function distSq(){
  return this.x_0 * this.x_0 + this.y_0 * this.y_0 + this.z_0 * this.z_0;
}
;
_.distance = function distance_0(c){
  return $wnd.Math.sqrt(this.distanceSquared(c));
}
;
_.distanceSquared = function distanceSquared(c){
  return (c.x_0 - this.x_0) * (c.x_0 - this.x_0) + (c.y_0 - this.y_0) * (c.y_0 - this.y_0) + (c.z_0 - this.z_0) * (c.z_0 - this.z_0);
}
;
_.dot = function dot_0(c){
  return this.x_0 * c.x_0 + this.y_0 * c.y_0 + this.z_0 * c.z_0;
}
;
_.equals_0 = function equals_4(o){
  var c;
  if (jsEquals(o, null) || !instanceOf(o, 43))
    return false;
  c = castTo(o, 43);
  return $wnd.Math.abs(c.x_0 - this.x_0) + $wnd.Math.abs(c.y_0 - this.y_0) + $wnd.Math.abs(c.z_0 - this.z_0) < 1.0E-6;
}
;
_.getAngle_0 = function getAngle(c){
  var d, d1, d2;
  d1 = this.distSq();
  d2 = c.distSq();
  if (d1 == 0 || d2 == 0)
    return 0;
  d = this.dot(c) / $wnd.Math.sqrt(d1 * d2);
  if (d >= 1)
    return 0;
  if (d <= -1)
    return 3.141592653589793;
  return $wnd.Math.acos(d);
}
;
_.getLength = function getLength(){
  return this.dist();
}
;
_.isNaN_0 = function isNaN_0(){
  return isNaN(this.x_0) || isNaN(this.y_0) || isNaN(this.z_0);
}
;
_.rotate = function rotate(m){
  var x0, y0, z0;
  x0 = this.x_0;
  y0 = this.y_0;
  z0 = this.z_0;
  this.x_0 = x0 * m[0][0] + y0 * m[1][0] + z0 * m[2][0];
  this.y_0 = x0 * m[0][1] + y0 * m[1][1] + z0 * m[2][1];
  this.z_0 = x0 * m[0][2] + y0 * m[1][2] + z0 * m[2][2];
  return this;
}
;
_.scale_2 = function scale_0(scale){
  this.x_0 *= scale;
  this.y_0 *= scale;
  this.z_0 *= scale;
  return this;
}
;
_.set_0 = function set_1(x_0, y_0, z_0){
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.z_0 = z_0;
}
;
_.set_1 = function set_2(c){
  this.set_0(c.x_0, c.y_0, c.z_0);
  return this;
}
;
_.sub_0 = function sub_0(c){
  this.x_0 -= c.x_0;
  this.y_0 -= c.y_0;
  this.z_0 -= c.z_0;
  return this;
}
;
_.subC = function subC(c){
  return new carc2.Coordinates_1(this.x_0 - c.x_0, this.y_0 - c.y_0, this.z_0 - c.z_0);
}
;
_.toString_0 = function toString_5(){
  var df;
  df = new jt.DecimalFormat('0.00');
  return '[' + df.format(this.x_0) + ', ' + df.format(this.y_0) + ', ' + df.format(this.z_0) + ']';
}
;
_.unit = function unit_0(){
  var d;
  d = this.dist();
  if (d == 0) {
    (jl.$clinit_System() , jl.err).println_0('Cannot call unit() on a null vector. Returned (1,0,0)');
    this.x_0 = 1;
    this.y_0 = 0;
    this.z_0 = 0;
    return this;
  }
  this.x_0 /= d;
  this.y_0 /= d;
  this.z_0 /= d;
  return this;
}
;
_.x_0 = 0;
_.y_0 = 0;
_.z_0 = 0;
cggl.Lcom_actelion_research_chem_Coordinates_2_classLit = createForClass('com.actelion.research.chem', 'Coordinates', 43, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_DepictorTransformation = function $clinit_DepictorTransformation(){
  carc2.$clinit_DepictorTransformation = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.DepictorTransformation = function DepictorTransformation(){
  carc2.$clinit_DepictorTransformation();
  Object_0.call(this);
  this.$init_20();
  this.clear_0();
}
;
carc2.DepictorTransformation_0 = function DepictorTransformation_0(scaling, offsetX, offsetY){
  carc2.$clinit_DepictorTransformation();
  Object_0.call(this);
  this.$init_20();
  this.mScaling = scaling;
  this.mOffsetX = offsetX;
  this.mOffsetY = offsetY;
}
;
carc2.DepictorTransformation_1 = function DepictorTransformation_1(bounds, view, averageBondLength, mode){
  carc2.$clinit_DepictorTransformation();
  var bScaling, hScaling, maxAVBL, vScaling;
  Object_0.call(this);
  this.$init_20();
  this.clear_0();
  if (isNotNull(view)) {
    if ((mode & 196608) == 0) {
      if (!view.contains_2(bounds)) {
        if (bounds.width_0 > view.width_0 || bounds.height_0 > view.height_0) {
          hScaling = view.width_0 / bounds.width_0;
          vScaling = view.height_0 / bounds.height_0;
          this.mScaling = $wnd.Math.min(hScaling, vScaling);
        }
        if (bounds.x_0 * this.mScaling < view.x_0)
          this.mOffsetX = view.x_0 - bounds.x_0 * this.mScaling;
        else if ((bounds.x_0 + bounds.width_0) * this.mScaling > view.x_0 + view.width_0)
          this.mOffsetX = view.x_0 + view.width_0 - (bounds.x_0 + bounds.width_0) * this.mScaling;
        if (bounds.y_0 * this.mScaling < view.y_0)
          this.mOffsetY = view.y_0 - bounds.y_0 * this.mScaling;
        else if ((bounds.y_0 + bounds.height_0) * this.mScaling > view.y_0 + view.height_0)
          this.mOffsetY = view.y_0 + view.height_0 - (bounds.y_0 + bounds.height_0) * this.mScaling;
      }
    }
     else {
      hScaling = view.width_0 / bounds.width_0;
      vScaling = view.height_0 / bounds.height_0;
      maxAVBL = mode & 65535;
      if (maxAVBL == 0)
        maxAVBL = 24;
      else if ((mode & 131072) != 0)
        maxAVBL /= 256;
      bScaling = maxAVBL / averageBondLength;
      this.mScaling = $wnd.Math.min(bScaling, $wnd.Math.min(hScaling, vScaling));
      this.mOffsetX = view.x_0 + view.width_0 / 2 - this.mScaling * (bounds.x_0 + bounds.width_0 / 2);
      this.mOffsetY = view.y_0 + view.height_0 / 2 - this.mScaling * (bounds.y_0 + bounds.height_0 / 2);
    }
  }
   else if ((mode & 65536) != 0) {
    maxAVBL = (mode & 65535) != 0?mode & 65535:24;
    this.mScaling = maxAVBL / averageBondLength;
  }
}
;
defineClass(135, 1, {1:1}, carc2.DepictorTransformation, carc2.DepictorTransformation_0, carc2.DepictorTransformation_1);
_.$init_20 = function $init_20(){
}
;
_.applyTo = function applyTo(t){
  t.mScaling *= this.mScaling;
  t.mOffsetX = t.mOffsetX * this.mScaling + this.mOffsetX;
  t.mOffsetY = t.mOffsetY * this.mScaling + this.mOffsetY;
}
;
_.applyTo_0 = function applyTo_0(m){
  m.scaleCoords_0(this.mScaling);
  m.translateCoords_0(this.mOffsetX, this.mOffsetY);
}
;
_.applyTo_1 = function applyTo_1(p){
  p.x_0 = p.x_0 * this.mScaling + this.mOffsetX;
  p.y_0 = p.y_0 * this.mScaling + this.mOffsetY;
}
;
_.applyTo_2 = function applyTo_2(r){
  r.x_0 = r.x_0 * this.mScaling + this.mOffsetX;
  r.y_0 = r.y_0 * this.mScaling + this.mOffsetY;
  r.width_0 *= this.mScaling;
  r.height_0 *= this.mScaling;
}
;
_.clear_0 = function clear_0(){
  this.mOffsetX = 0;
  this.mOffsetY = 0;
  this.mScaling = 1;
}
;
_.getScaling = function getScaling(){
  return this.mScaling;
}
;
_.isVoidTransformation = function isVoidTransformation(){
  return this.mScaling == 1 && this.mOffsetX == 0 && this.mOffsetY == 0;
}
;
_.move = function move_0(dx, dy){
  this.mOffsetX += dx;
  this.mOffsetY += dy;
}
;
_.toString_0 = function toString_6(){
  return 'DepictorTransformation Offset: ' + this.mOffsetX + ',' + this.mOffsetY + ' Scaling: ' + this.mScaling;
}
;
_.transformX = function transformX(x_0){
  return x_0 * this.mScaling + this.mOffsetX;
}
;
_.transformY = function transformY(y_0){
  return y_0 * this.mScaling + this.mOffsetY;
}
;
_.mOffsetX = 0;
_.mOffsetY = 0;
_.mScaling = 0;
cggl.Lcom_actelion_research_chem_DepictorTransformation_2_classLit = createForClass('com.actelion.research.chem', 'DepictorTransformation', 135, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_DrawingObjectFactory = function $clinit_DrawingObjectFactory(){
  carc2.$clinit_DrawingObjectFactory = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.createObject = function createObject(descriptor){
  carc2.$clinit_DrawingObjectFactory();
  var START, detail, index_0, type_0;
  START = '<DrawingObject' + ' type="';
  if (!jl.startsWith_Ljava_lang_String__Z__devirtual$(descriptor, '<DrawingObject type="') || !jl.endsWith_Ljava_lang_String__Z__devirtual$(descriptor, '><\/DrawingObject>'))
    return null;
  index_0 = jl.indexOf_II_I__devirtual$(descriptor, 34, jl.length__I__devirtual$_0('<DrawingObject type="'));
  if (index_0 == -1)
    return null;
  type_0 = jl.substring_II_Ljava_lang_String___devirtual$(descriptor, jl.length__I__devirtual$_0('<DrawingObject type="'), index_0);
  detail = jl.substring_II_Ljava_lang_String___devirtual$(descriptor, jl.length__I__devirtual$_0('<DrawingObject type="') + jl.length__I__devirtual$_0(type_0) + 1, jl.length__I__devirtual$_0(descriptor) - jl.length__I__devirtual$_0('><\/DrawingObject>'));
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'arrow'))
    return new carcr.ReactionArrow_0(detail);
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(type_0, 'text'))
    return new carc2.TextDrawingObject_0(detail);
  return null;
}
;
defineClass(1214, 1, {1:1});
cggl.Lcom_actelion_research_chem_DrawingObjectFactory_2_classLit = createForClass('com.actelion.research.chem', 'DrawingObjectFactory', 1214, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Iterable = function $clinit_Iterable(){
  jl.$clinit_Iterable = emptyMethod;
}
;
jl.$forEach = function $forEach(this$static, action){
  var t, t$iterator;
  ji2.checkNotNull_0(action);
  for (t$iterator = this$static.iterator(); t$iterator.hasNext_0();) {
    t = t$iterator.next_3();
    action.accept_0(t);
  }
}
;
jl.$spliterator = function $spliterator(this$static){
  return ju.spliteratorUnknownSize(this$static.iterator(), 0);
}
;
cggl.Ljava_lang_Iterable_2_classLit = createForInterface('java.lang', 'Iterable');
ju.$clinit_Collection = function $clinit_Collection(){
  ju.$clinit_Collection = emptyMethod;
}
;
ju.$spliterator_0 = function $spliterator_0(this$static){
  return ju.spliterator_13(this$static, 0);
}
;
ju.$stream = function $stream(this$static){
  return jus.stream_1(this$static.spliterator_0(), false);
}
;
cggl.Ljava_util_Collection_2_classLit = createForInterface('java.util', 'Collection');
ju.$clinit_AbstractCollection = function $clinit_AbstractCollection(){
  ju.$clinit_AbstractCollection = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
}
;
ju.AbstractCollection = function AbstractCollection(){
  ju.$clinit_AbstractCollection();
  Object_0.call(this);
  this.$init_21();
}
;
defineClass(225, 1, {1:1, 38:1});
_.$init_21 = function $init_21(){
}
;
_.forEach_0 = function forEach(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_0(){
  return ju.$spliterator_0(this);
}
;
_.stream = function stream(){
  return ju.$stream(this);
}
;
_.add = function add_5(o){
  throw toJs(new jl.UnsupportedOperationException_0('Add not supported on this collection'));
}
;
_.addAll = function addAll(c){
  var changed, e, e$iterator;
  ji2.checkNotNull_0(c);
  changed = false;
  for (e$iterator = c.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    changed = changed | this.add(e);
  }
  return changed;
}
;
_.advanceToFind = function advanceToFind(o, remove){
  var e, iter;
  for (iter = this.iterator(); iter.hasNext_0();) {
    e = iter.next_3();
    if (ju.equals_46(o, e)) {
      if (remove) {
        iter.remove_4();
      }
      return true;
    }
  }
  return false;
}
;
_.clear = function clear_1(){
  var iter;
  for (iter = this.iterator(); iter.hasNext_0();) {
    iter.next_3();
    iter.remove_4();
  }
}
;
_.contains = function contains_0(o){
  return this.advanceToFind(o, false);
}
;
_.containsAll = function containsAll(c){
  var e, e$iterator;
  ji2.checkNotNull_0(c);
  for (e$iterator = c.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    if (!this.contains(e)) {
      return false;
    }
  }
  return true;
}
;
_.isEmpty = function isEmpty(){
  return this.size() == 0;
}
;
_.remove = function remove_0(o){
  return this.advanceToFind(o, true);
}
;
_.removeAll = function removeAll(c){
  var changed, iter, o;
  ji2.checkNotNull_0(c);
  changed = false;
  for (iter = this.iterator(); iter.hasNext_0();) {
    o = iter.next_3();
    if (c.contains(o)) {
      iter.remove_4();
      changed = true;
    }
  }
  return changed;
}
;
_.retainAll = function retainAll(c){
  var changed, iter, o;
  ji2.checkNotNull_0(c);
  changed = false;
  for (iter = this.iterator(); iter.hasNext_0();) {
    o = iter.next_3();
    if (!c.contains(o)) {
      iter.remove_4();
      changed = true;
    }
  }
  return changed;
}
;
_.toArray = function toArray(){
  return this.toArray_0(initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 7:1}, 1, this.size(), 5, 1));
}
;
_.toArray_0 = function toArray_0(a){
  var i, it, result, size_0;
  size_0 = this.size();
  if (a.length < size_0) {
    a = ji2.createFrom(a, size_0);
  }
  result = a;
  it = this.iterator();
  for (i = 0; i < size_0; ++i) {
    setCheck(result, i, it.next_3());
  }
  if (a.length > size_0) {
    setCheck(a, size_0, null);
  }
  return a;
}
;
_.toString_0 = function toString_7(){
  var e, e$iterator, joiner;
  joiner = new ju.StringJoiner_0(', ', '[', ']');
  for (e$iterator = this.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    joiner.add_14(maskUndefined(e) === maskUndefined(this)?'(this Collection)':valueOf_34(e));
  }
  return joiner.toString_0();
}
;
cggl.Ljava_util_AbstractCollection_2_classLit = createForClass('java.util', 'AbstractCollection', 225, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_List = function $clinit_List(){
  ju.$clinit_List = emptyMethod;
}
;
ju.$sort = function $sort(this$static, c){
  var a, i;
  a = this$static.toArray();
  ju.sort_7(a, castTo(c, 50));
  for (i = 0; i < a.length; i++) {
    this$static.setAtIndex(i, a[i]);
  }
}
;
ju.$spliterator_1 = function $spliterator_1(this$static){
  return ju.spliterator_13(this$static, 16);
}
;
cggl.Ljava_util_List_2_classLit = createForInterface('java.util', 'List');
ju.$clinit_AbstractList = function $clinit_AbstractList(){
  ju.$clinit_AbstractList = emptyMethod;
  ju.$clinit_AbstractCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_List();
}
;
ju.AbstractList = function AbstractList(){
  ju.$clinit_AbstractList();
  ju.AbstractCollection.call(this);
  this.$init_22();
}
;
defineClass(171, 225, {1:1, 38:1, 57:1});
_.$init_22 = function $init_22(){
}
;
_.sort_0 = function sort_0(c){
  ju.$sort(this, c);
}
;
_.spliterator_0 = function spliterator_1(){
  return ju.$spliterator_1(this);
}
;
_.addAtIndex = function add_6(index_0, element){
  throw toJs(new jl.UnsupportedOperationException_0('Add not supported on this list'));
}
;
_.add = function add_7(obj){
  this.addAtIndex(this.size(), obj);
  return true;
}
;
_.addAllAtIndex = function addAll_0(index_0, c){
  var changed, e, e$iterator;
  ji2.checkNotNull_0(c);
  changed = false;
  for (e$iterator = c.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    this.addAtIndex(index_0++, e);
    changed = true;
  }
  return changed;
}
;
_.clear = function clear_2(){
  this.removeRange(0, this.size());
}
;
_.equals_0 = function equals_5(o){
  var elem, elem$iterator, elemOther, iterOther, other;
  if (maskUndefined(o) === maskUndefined(this)) {
    return true;
  }
  if (!instanceOf(o, 57)) {
    return false;
  }
  other = castTo(o, 57);
  if (this.size() != other.size()) {
    return false;
  }
  iterOther = other.iterator();
  for (elem$iterator = this.iterator(); elem$iterator.hasNext_0();) {
    elem = elem$iterator.next_3();
    elemOther = iterOther.next_3();
    if (!ju.equals_46(elem, elemOther)) {
      return false;
    }
  }
  return true;
}
;
_.hashCode_1 = function hashCode_2(){
  return ju.hashCode_36(this);
}
;
_.indexOf = function indexOf(toFind){
  var i, n;
  for (i = 0 , n = this.size(); i < n; ++i) {
    if (ju.equals_46(toFind, this.getAtIndex(i))) {
      return i;
    }
  }
  return -1;
}
;
_.iterator = function iterator(){
  return new ju.AbstractList$IteratorImpl(this);
}
;
_.lastIndexOf = function lastIndexOf(toFind){
  var i;
  for (i = this.size() - 1; i > -1; --i) {
    if (ju.equals_46(toFind, this.getAtIndex(i))) {
      return i;
    }
  }
  return -1;
}
;
_.listIterator = function listIterator(){
  return this.listIterator_0(0);
}
;
_.listIterator_0 = function listIterator_0(from){
  return new ju.AbstractList$ListIteratorImpl(this, from);
}
;
_.removeAtIndex = function remove_1(index_0){
  throw toJs(new jl.UnsupportedOperationException_0('Remove not supported on this list'));
}
;
_.removeRange = function removeRange(fromIndex, endIndex){
  var i, iter;
  iter = this.listIterator_0(fromIndex);
  for (i = fromIndex; i < endIndex; ++i) {
    iter.next_3();
    iter.remove_4();
  }
}
;
_.setAtIndex = function set_3(index_0, o){
  throw toJs(new jl.UnsupportedOperationException_0('Set not supported on this list'));
}
;
_.subList = function subList(fromIndex, toIndex){
  return new ju.AbstractList$SubList(this, fromIndex, toIndex);
}
;
cggl.Ljava_util_AbstractList_2_classLit = createForClass('java.util', 'AbstractList', 171, cggl.Ljava_util_AbstractCollection_2_classLit);
jl.$clinit_Cloneable = function $clinit_Cloneable(){
  jl.$clinit_Cloneable = emptyMethod;
}
;
function $isInstance_3(instance){
  jl.$clinit_Cloneable();
  if (jsEquals(instance, null)) {
    return false;
  }
  return instance.$implements__java_lang_Cloneable || Array.isArray(instance);
}

cggl.Ljava_lang_Cloneable_2_classLit = createForInterface('java.lang', 'Cloneable');
ju.$clinit_RandomAccess = function $clinit_RandomAccess(){
  ju.$clinit_RandomAccess = emptyMethod;
}
;
cggl.Ljava_util_RandomAccess_2_classLit = createForInterface('java.util', 'RandomAccess');
ju.$clinit_ArrayList = function $clinit_ArrayList(){
  ju.$clinit_ArrayList = emptyMethod;
  ju.$clinit_AbstractList();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_List();
}
;
ju.ArrayList = function ArrayList(){
  ju.$clinit_ArrayList();
  ju.AbstractList.call(this);
  this.$init_23();
}
;
ju.ArrayList_0 = function ArrayList_0(initialCapacity){
  ju.$clinit_ArrayList();
  ju.AbstractList.call(this);
  this.$init_23();
  ji2.checkArgument(initialCapacity >= 0, 'Initial capacity must not be negative');
}
;
ju.ArrayList_1 = function ArrayList_1(c){
  ju.$clinit_ArrayList();
  ju.AbstractList.call(this);
  this.$init_23();
  ji2.insertTo_0(this.array, 0, c.toArray());
}
;
defineClass(18, 171, {4:1, 1:1, 18:1, 38:1, 57:1, 143:1}, ju.ArrayList, ju.ArrayList_0, ju.ArrayList_1);
_.$init_23 = function $init_23(){
  this.array = castToArray(initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 7:1}, 1, 0, 5, 1));
}
;
_.addAtIndex = function add_8(index_0, o){
  ji2.checkPositionIndex(index_0, this.array.length);
  ji2.insertTo(this.array, index_0, o);
}
;
_.add = function add_9(o){
  ji2.push_3(this.array, o);
  return true;
}
;
_.addAllAtIndex = function addAll_1(index_0, c){
  var cArray, len;
  ji2.checkPositionIndex(index_0, this.array.length);
  cArray = c.toArray();
  len = cArray.length;
  if (len == 0) {
    return false;
  }
  ji2.insertTo_0(this.array, index_0, cArray);
  return true;
}
;
_.addAll = function addAll_2(c){
  var cArray, len;
  cArray = c.toArray();
  len = cArray.length;
  if (len == 0) {
    return false;
  }
  ji2.insertTo_0(this.array, this.array.length, cArray);
  return true;
}
;
_.clear = function clear_3(){
  this.setSize(0);
}
;
_.contains = function contains_1(o){
  return this.indexOf(o) != -1;
}
;
_.forEach_0 = function forEach_0(consumer){
  var e, e$array, e$index, e$max;
  ji2.checkNotNull_0(consumer);
  for (e$array = this.array , e$index = 0 , e$max = e$array.length; e$index < e$max; ++e$index) {
    e = e$array[e$index];
    consumer.accept_0(e);
  }
}
;
_.getAtIndex = function get_0(index_0){
  ji2.checkElementIndex(index_0, this.array.length);
  return this.array[index_0];
}
;
_.indexOf = function indexOf_0(o){
  return this.indexOf_0(o, 0);
}
;
_.indexOf_0 = function indexOf_1(o, index_0){
  for (; index_0 < this.array.length; ++index_0) {
    if (ju.equals_46(o, this.array[index_0])) {
      return index_0;
    }
  }
  return -1;
}
;
_.isEmpty = function isEmpty_0(){
  return this.array.length == 0;
}
;
_.iterator = function iterator_0(){
  return new ju.ArrayList$1(this);
}
;
_.lastIndexOf = function lastIndexOf_0(o){
  return this.lastIndexOf_0(o, this.size() - 1);
}
;
_.lastIndexOf_0 = function lastIndexOf_1(o, index_0){
  for (; index_0 >= 0; --index_0) {
    if (ju.equals_46(o, this.array[index_0])) {
      return index_0;
    }
  }
  return -1;
}
;
_.removeAtIndex = function remove_2(index_0){
  var previous;
  previous = this.getAtIndex(index_0);
  ji2.removeFrom(this.array, index_0, 1);
  return previous;
}
;
_.remove = function remove_3(o){
  var i;
  i = this.indexOf(o);
  if (i == -1) {
    return false;
  }
  this.removeAtIndex(i);
  return true;
}
;
_.removeRange = function removeRange_0(fromIndex, endIndex){
  var count;
  ji2.checkPositionIndexes(fromIndex, endIndex, this.array.length);
  count = endIndex - fromIndex;
  ji2.removeFrom(this.array, fromIndex, count);
}
;
_.setAtIndex = function set_4(index_0, o){
  var previous;
  previous = this.getAtIndex(index_0);
  setCheck(this.array, index_0, o);
  return previous;
}
;
_.setSize = function setSize(newSize){
  ji2.setLength_0(this.array, newSize);
}
;
_.size = function size_1(){
  return this.array.length;
}
;
_.sort_0 = function sort_1(c){
  ju.sort_6(this.array, 0, this.array.length, c);
}
;
_.toArray = function toArray_1(){
  return ji2.clone_2(this.array);
}
;
_.toArray_0 = function toArray_2(out){
  var i, size_0;
  size_0 = this.array.length;
  if (out.length < size_0) {
    out = ji2.createFrom(out, size_0);
  }
  for (i = 0; i < size_0; ++i) {
    setCheck(out, i, this.array[i]);
  }
  if (out.length > size_0) {
    setCheck(out, size_0, null);
  }
  return out;
}
;
cggl.Ljava_util_ArrayList_2_classLit = createForClass('java.util', 'ArrayList', 18, cggl.Ljava_util_AbstractList_2_classLit);
carc2.$clinit_DrawingObjectList = function $clinit_DrawingObjectList(){
  carc2.$clinit_DrawingObjectList = emptyMethod;
  ju.$clinit_ArrayList();
}
;
carc2.DrawingObjectList = function DrawingObjectList(l){
  carc2.$clinit_DrawingObjectList();
  var e, i;
  ju.ArrayList.call(this);
  this.$init_24();
  try {
    if (isNotNull(l)) {
      for (i = 0; i < l.size(); i++)
        this.add(castTo(castTo(l.getAtIndex(i), 107).clone_0(), 107));
    }
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
    }
     else 
      throw toJs($e0);
  }
}
;
carc2.DrawingObjectList_0 = function DrawingObjectList_0(objectString){
  carc2.$clinit_DrawingObjectList();
  var index1, index2, o;
  ju.ArrayList.call(this);
  this.$init_24();
  if (jsEquals(objectString, null) || jl.length__I__devirtual$_0(objectString) == 0)
    return;
  index1 = 0;
  index2 = jl.indexOf_I_I__devirtual$(objectString, 10);
  while (index2 != -1) {
    o = carc2.instantiate(jl.substring_II_Ljava_lang_String___devirtual$(objectString, index1, index2));
    if (isNotNull(o))
      this.add(o);
    index1 = index2 + 1;
    index2 = jl.indexOf_II_I__devirtual$(objectString, 10, index1);
  }
}
;
defineClass(315, 18, {4:1, 1:1, 18:1, 38:1, 57:1, 143:1}, carc2.DrawingObjectList, carc2.DrawingObjectList_0);
_.$init_24 = function $init_24(){
}
;
_.toString_0 = function toString_8(){
  var i, objectString;
  objectString = new jl.StringBuffer;
  for (i = 0; i < this.size(); i++)
    objectString.append_2(castTo(this.getAtIndex(i), 107).getDescriptor() + '\n');
  return objectString.toString_0();
}
;
carc2.serialVersionUID_0 = 537265956;
cggl.Lcom_actelion_research_chem_DrawingObjectList_2_classLit = createForClass('com.actelion.research.chem', 'DrawingObjectList', 315, cggl.Ljava_util_ArrayList_2_classLit);
carc2.$clinit_ESRGroupNormalizationInfo = function $clinit_ESRGroupNormalizationInfo(){
  carc2.$clinit_ESRGroupNormalizationInfo = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.ESRGroupNormalizationInfo = function ESRGroupNormalizationInfo(fragment, action, group, type_0){
  carc2.$clinit_ESRGroupNormalizationInfo();
  Object_0.call(this);
  this.$init_25();
  this.fragment_0 = fragment;
  this.action = action;
  this.group = group;
  this.type_0 = type_0;
}
;
defineClass(139, 1, {139:1, 1:1}, carc2.ESRGroupNormalizationInfo);
_.$init_25 = function $init_25(){
}
;
_.action = 0;
_.fragment_0 = 0;
_.group = 0;
_.type_0 = 0;
cggl.Lcom_actelion_research_chem_ESRGroupNormalizationInfo_2_classLit = createForClass('com.actelion.research.chem', 'ESRGroupNormalizationInfo', 139, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_EZHalfParity = function $clinit_EZHalfParity(){
  carc2.$clinit_EZHalfParity = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.EZHalfParity = function EZHalfParity(mol, rank, atom1, atom2){
  carc2.$clinit_EZHalfParity();
  var connAtom, connBond, highRank, i;
  Object_0.call(this);
  this.$init_26();
  this.mMol = mol;
  this.mRemoteAxialAtom = atom1;
  this.mCentralAxialAtom = atom2;
  highRank = -1;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(this.mCentralAxialAtom); i++) {
    connAtom = this.mMol.getConnAtom_0(this.mCentralAxialAtom, i);
    connBond = this.mMol.getConnBond_0(this.mCentralAxialAtom, i);
    if (connAtom == this.mRemoteAxialAtom) {
      if (this.mMol.getBondType_0(connBond) == 386)
        this.mValue = -1;
      continue;
    }
    if (this.mMol.isStereoBond_1(connBond, this.mCentralAxialAtom)) {
      if (this.mStereoBondFound)
        mol.setStereoProblem(atom2);
      this.mStereoBondFound = true;
    }
    if (highRank == rank[connAtom]) {
      this.mLowConn = connAtom;
      this.mRanksEqual = true;
      this.mInSameFragment = this.mMol.isRingBond_0(connBond);
    }
     else if (highRank < rank[connAtom]) {
      highRank = rank[connAtom];
      this.mLowConn = this.mHighConn;
      this.mHighConn = connAtom;
    }
     else {
      this.mLowConn = connAtom;
    }
  }
}
;
defineClass(170, 1, {1:1}, carc2.EZHalfParity);
_.$init_26 = function $init_26(){
}
;
_.getValue = function getValue(){
  var angleDB, angleDif, angleHigh, angleOther, connBond, i;
  if (this.mValue != 0)
    return this.mValue;
  if (this.mStereoBondFound && this.mMol.getAtomicNo_0(this.mCentralAxialAtom) != 15 && this.mMol.getAtomicNo_0(this.mCentralAxialAtom) != 16) {
    for (i = 0; i < this.mMol.getAllConnAtoms_0(this.mCentralAxialAtom); i++) {
      connBond = this.mMol.getConnBond_0(this.mCentralAxialAtom, i);
      if (this.mMol.isStereoBond_1(connBond, this.mCentralAxialAtom)) {
        if (this.mMol.getConnAtom_0(this.mCentralAxialAtom, i) == this.mHighConn)
          this.mValue = this.mMol.getBondType_0(connBond) == 257?3:1;
        else 
          this.mValue = this.mMol.getBondType_0(connBond) == 257?1:3;
        return this.mValue;
      }
    }
  }
  angleDB = this.mMol.getBondAngle_0(this.mCentralAxialAtom, this.mRemoteAxialAtom);
  angleHigh = this.mMol.getBondAngle_0(this.mCentralAxialAtom, this.mHighConn);
  if (angleHigh < angleDB)
    angleHigh += 3.141592653589793 * 2;
  if (this.mMol.getAllConnAtoms_0(this.mCentralAxialAtom) == 2) {
    angleDif = angleHigh - angleDB;
    if (angleDif > 3.141592653589793 - 0.05 && angleDif < 3.141592653589793 + 0.05) {
      this.mValue = -1;
      return this.mValue;
    }
    this.mValue = angleDif < 3.141592653589793?4:2;
    return this.mValue;
  }
   else {
    angleOther = this.mMol.getBondAngle_0(this.mCentralAxialAtom, this.mLowConn);
    if (angleOther < angleDB)
      angleOther += 3.141592653589793 * 2;
    this.mValue = angleOther < angleHigh?2:4;
    return this.mValue;
  }
}
;
_.mCentralAxialAtom = 0;
_.mHighConn = 0;
_.mInSameFragment = false;
_.mLowConn = 0;
_.mRanksEqual = false;
_.mRemoteAxialAtom = 0;
_.mStereoBondFound = false;
_.mValue = 0;
cggl.Lcom_actelion_research_chem_EZHalfParity_2_classLit = createForClass('com.actelion.research.chem', 'EZHalfParity', 170, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Molecule = function $clinit_Molecule(){
  carc2.$clinit_Molecule = emptyMethod;
  jl.$clinit_Object();
  carc2.cAtomFlagsHelper = 15368 | 67223559;
  carc2.cHelperRingsSimple = 1 | 2;
  carc2.cHelperRings = 3 | 4;
  carc2.cHelperParities = 7 | 8;
  carc2.cHelperCIP = 15 | 16;
  carc2.cHelperSymmetrySimple = 31 | 32;
  carc2.cHelperSymmetryStereoHeterotopicity = 31 | 64;
  carc2.cDefaultAllowedPseudoAtoms = 1 | 64 | 256;
  carc2.cAtomLabel = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['?', 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12', 'R13', 'R14', 'R15', 'R16', 'R1', 'R2', 'R3', 'A', 'A1', 'A2', 'A3', '??', '??', 'D', 'T', 'X', 'R', 'H2', 'H+', 'Nnn', 'HYD', 'Pol', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', 'Ala', 'Arg', 'Asn', 'Asp', 'Cys', 'Gln', 'Glu', 'Gly', 'His', 'Ile', 'Leu', 'Lys', 'Met', 'Phe', 'Pro', 'Ser', 'Thr', 'Trp', 'Tyr', 'Val']);
  carc2.cRoundedMass = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [0, 1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40, 39, 40, 45, 48, 51, 52, 55, 56, 59, 58, 63, 64, 69, 74, 75, 80, 79, 84, 85, 88, 89, 90, 93, 98, 0, 102, 103, 106, 107, 114, 115, 120, 121, 130, 127, 132, 133, 138, 139, 140, 141, 142, 0, 152, 153, 158, 159, 164, 165, 166, 169, 174, 175, 180, 181, 184, 187, 192, 193, 195, 197, 202, 205, 208, 209, 209, 210, 222, 223, 226, 227, 232, 231, 238, 237, 244, 243, 247, 247, 251, 252, 257, 258, 259, 262, 267, 268, 271, 270, 277, 276, 281, 281, 283, 285, 289, 289, 293, 294, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 156, 114, 115, 103, 128, 129, 57, 137, 113, 113, 128, 131, 147, 97, 87, 101, 186, 163, 99]);
  carc2.cDefaultAtomValences = stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [6]);
  carc2.cAminoAcidValences = stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]);
  carc2.cAtomValence = stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 2), {4:1, 1:1, 7:1}, 8, 0, [null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0, 2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2])]);
  carc2.cCommonOxidationState = stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 2), {4:1, 1:1, 7:1}, 8, 0, [null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3, 4, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3, 4, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-3, 3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4, 6, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-3, 3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4, 6, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2, 2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1, 1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3])]);
}
;
carc2.Molecule = function Molecule(){
  carc2.$clinit_Molecule();
  Object_0.call(this);
  this.$init_27();
  this.mMaxAtoms = this.mMaxBonds = 256;
  this.init_1();
}
;
carc2.Molecule_0 = function Molecule_0(maxAtoms, maxBonds){
  carc2.$clinit_Molecule();
  Object_0.call(this);
  this.$init_27();
  this.mMaxAtoms = $wnd.Math.max(1, maxAtoms);
  this.mMaxBonds = $wnd.Math.max(1, maxBonds);
  this.init_1();
}
;
carc2.bondOrderToType = function bondOrderToType(bondOrder, useCrossBond){
  carc2.$clinit_Molecule();
  return bondOrder == 0?32:bondOrder == 1?1:bondOrder == 2?useCrossBond?386:2:bondOrder == 3?4:bondOrder == 4?8:16;
}
;
carc2.copyOf = function copyOf(original, newLength){
  var copy;
  copy = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, newLength, 15, 1);
  jl.arraycopy(original, 0, copy, 0, $wnd.Math.min(original.length, newLength));
  return copy;
}
;
carc2.copyOf_0 = function copyOf_0(original, newLength){
  var copy;
  copy = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, newLength, 14, 1);
  jl.arraycopy(original, 0, copy, 0, $wnd.Math.min(original.length, newLength));
  return copy;
}
;
carc2.copyOf_1 = function copyOf_1(original, newLength){
  var copy, i;
  copy = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {187:1, 4:1, 1:1, 7:1}, 43, newLength, 0, 1);
  for (i = 0; i < original.length; i++)
    if (isNotNull(original[i]))
      copy[i] = new carc2.Coordinates_2(original[i]);
  return copy;
}
;
carc2.copyOf_2 = function copyOf_2(original, newLength){
  var copy, i;
  copy = initUnidimensionalArray(cggl.B_classLit, {4:1, 1:1, 7:1}, 8, newLength, 0, 2);
  for (i = 0; i < original.length; i++) {
    if (jsNotEquals(original[i], null)) {
      copy[i] = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, original[i].length, 15, 1);
      jl.arraycopy(original[i], 0, copy[i], 0, original[i].length);
    }
  }
  return copy;
}
;
carc2.copyOf_3 = function copyOf_3(original, newLength){
  var copy, i;
  copy = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, newLength, 0, 2);
  for (i = 0; i < original.length; i++) {
    if (jsNotEquals(original[i], null)) {
      copy[i] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, original[i].length, 15, 1);
      jl.arraycopy(original[i], 0, copy[i], 0, original[i].length);
    }
  }
  return copy;
}
;
carc2.getAllowedValences = function getAllowedValences(atomicNo){
  carc2.$clinit_Molecule();
  return atomicNo >= 0 && atomicNo < carc2.cAtomValence.length && jsNotEquals(carc2.cAtomValence[atomicNo], null)?carc2.cAtomValence[atomicNo]:atomicNo >= 171 && atomicNo <= 190?carc2.cAminoAcidValences:carc2.cDefaultAtomValences;
}
;
carc2.getAngle_0 = function getAngle_0(x1, y1, x2, y2){
  carc2.$clinit_Molecule();
  var angle, xdiff, ydiff;
  xdiff = x2 - x1;
  ydiff = y2 - y1;
  if (ydiff != 0) {
    angle = $wnd.Math.atan(xdiff / ydiff);
    if (ydiff < 0) {
      if (xdiff < 0)
        angle -= 3.141592653589793;
      else 
        angle += 3.141592653589793;
    }
  }
   else 
    angle = xdiff > 0?3.141592653589793 / 2:-3.141592653589793 / 2;
  return angle;
}
;
carc2.getAngleDif = function getAngleDif(angle1, angle2){
  carc2.$clinit_Molecule();
  var angleDif;
  angleDif = angle1 - angle2;
  while (angleDif < -3.141592653589793)
    angleDif += 2 * 3.141592653589793;
  while (angleDif > 3.141592653589793)
    angleDif -= 2 * 3.141592653589793;
  return angleDif;
}
;
carc2.getAtomicNoFromLabel = function getAtomicNoFromLabel(atomLabel){
  carc2.$clinit_Molecule();
  return carc2.getAtomicNoFromLabel_0(atomLabel, 321);
}
;
carc2.getAtomicNoFromLabel_0 = function getAtomicNoFromLabel_0(atomLabel, allowedPseudoAtomGroups){
  carc2.$clinit_Molecule();
  var i, i0, i1, i2, i3;
  if ((allowedPseudoAtomGroups & 256) != 0 && jl.equals_Ljava_lang_Object__Z__devirtual$_2(atomLabel, '?'))
    return 0;
  for (i0 = 1; i0 <= 128; i0++)
    if (!jl.equals_Ljava_lang_Object__Z__devirtual$_2(atomLabel, '??') && jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[i0]))
      return i0;
  if ((allowedPseudoAtomGroups & 2) != 0)
    for (i1 = 129; i1 <= 144; i1++)
      if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[i1]))
        return i1;
  if ((allowedPseudoAtomGroups & 4) != 0)
    for (i2 = 146; i2 <= 148; i2++)
      if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[i2]))
        return i2;
  if ((allowedPseudoAtomGroups & 1) != 0)
    for (i3 = 151; i3 <= 152; i3++)
      if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[i3]))
        return i3;
  if ((allowedPseudoAtomGroups & 32) != 0)
    if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[153]))
      return 153;
  if ((allowedPseudoAtomGroups & 8) != 0)
    if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[154]))
      return 154;
  if ((allowedPseudoAtomGroups & 16) != 0)
    if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[145]))
      return 145;
  if ((allowedPseudoAtomGroups & 128) != 0)
    if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[159]))
      return 159;
  if ((allowedPseudoAtomGroups & 64) != 0)
    for (i = 171; i <= 190; i++)
      if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(atomLabel, carc2.cAtomLabel[i]))
        return i;
  return 0;
}
;
carc2.getDefaultAverageBondLength = function getDefaultAverageBondLength(){
  carc2.$clinit_Molecule();
  return carc2.sDefaultAVBL;
}
;
carc2.isAtomicNoElectronegative = function isAtomicNoElectronegative(atomicNo){
  carc2.$clinit_Molecule();
  switch (atomicNo) {
    case 7:
    case 8:
    case 9:
    case 15:
    case 16:
    case 17:
    case 33:
    case 34:
    case 35:
    case 52:
    case 53:
      return true;
  }
  return false;
}
;
carc2.isAtomicNoElectropositive = function isAtomicNoElectropositive(atomicNo){
  carc2.$clinit_Molecule();
  if (atomicNo == 1 || atomicNo == 6)
    return false;
  if (carc2.isAtomicNoElectronegative(atomicNo))
    return false;
  if (atomicNo == 2 || atomicNo == 10 || atomicNo == 18 || atomicNo == 36 || atomicNo == 54)
    return false;
  if (atomicNo > 103)
    return false;
  return true;
}
;
carc2.isAtomicNoMetal = function isAtomicNoMetal(atomicNo){
  return atomicNo >= 3 && atomicNo <= 4 || atomicNo >= 11 && atomicNo <= 13 || atomicNo >= 19 && atomicNo <= 31 || atomicNo >= 37 && atomicNo <= 51 || atomicNo >= 55 && atomicNo <= 84 || atomicNo >= 87 && atomicNo <= 112;
}
;
carc2.isAtomicNoOrganic = function isAtomicNoOrganic(atomicNo){
  return atomicNo == 1 || atomicNo >= 5 && atomicNo <= 9 || atomicNo >= 14 && atomicNo <= 17 || atomicNo >= 32 && atomicNo <= 35 || atomicNo >= 52 && atomicNo <= 53;
}
;
carc2.isAtomicNoTransitionMetal = function isAtomicNoTransitionMetal(atomicNo){
  return atomicNo >= 21 && atomicNo <= 30 || atomicNo >= 39 && atomicNo <= 48 || atomicNo == 57 || atomicNo >= 72 && atomicNo <= 80 || atomicNo == 89 || atomicNo >= 104 && atomicNo <= 112;
}
;
carc2.setDefaultAverageBondLength = function setDefaultAverageBondLength(defaultAVBL){
  carc2.$clinit_Molecule();
  carc2.sDefaultAVBL = defaultAVBL;
}
;
defineClass(70, 1, {70:1, 4:1, 1:1});
_.$init_27 = function $init_27(){
}
;
_.addAtom_0 = function addAtom(x_0, y_0){
  return this.addAtom_1(x_0, y_0, 0);
}
;
_.addAtom_1 = function addAtom_0(x_0, y_0, z_0){
  var atom;
  atom = this.addAtom_2(6);
  this.mCoordinates[atom].set_0(x_0, y_0, z_0);
  return atom;
}
;
_.addAtom_2 = function addAtom_1(atomicNo){
  if (this.mAllAtoms >= this.mMaxAtoms)
    this.setMaxAtoms_0(this.mMaxAtoms * 2);
  this.mAtomicNo[this.mAllAtoms] = 0;
  this.setAtomicNo_0(this.mAllAtoms, atomicNo);
  this.mAtomCharge[this.mAllAtoms] = 0;
  this.mAtomFlags[this.mAllAtoms] = 0;
  this.mAtomQueryFeatures[this.mAllAtoms] = 0;
  this.mAtomMapNo[this.mAllAtoms] = 0;
  this.mCoordinates[this.mAllAtoms].set_0(0, 0, 0);
  if (jsNotEquals(this.mAtomList, null))
    this.mAtomList[this.mAllAtoms] = null;
  if (jsNotEquals(this.mAtomCustomLabel, null))
    this.mAtomCustomLabel[this.mAllAtoms] = null;
  this.mValidHelperArrays = 0;
  return this.mAllAtoms++;
}
;
_.addBond_0 = function addBond(atom1, atom2){
  return this.addBond_1(atom1, atom2, this.suggestBondType_0(atom1, atom2));
}
;
_.addBond_1 = function addBond_0(atom1, atom2, type_0){
  var bnd;
  if (atom1 == atom2)
    return -1;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    if (this.mBondAtom[0][bnd] == atom1 && this.mBondAtom[1][bnd] == atom2 || this.mBondAtom[0][bnd] == atom2 && this.mBondAtom[1][bnd] == atom1) {
      if (this.mBondType[bnd] < type_0)
        this.mBondType[bnd] = type_0;
      return bnd;
    }
  }
  if (this.mAllBonds >= this.mMaxBonds)
    this.setMaxBonds_0(this.mMaxBonds * 2);
  this.mBondAtom[0][this.mAllBonds] = atom1;
  this.mBondAtom[1][this.mAllBonds] = atom2;
  this.mBondType[this.mAllBonds] = type_0;
  this.mBondFlags[this.mAllBonds] = 0;
  this.mBondQueryFeatures[this.mAllBonds] = 0;
  this.mValidHelperArrays = 0;
  return this.mAllBonds++;
}
;
_.addMolecule_0 = function addMolecule(mol){
  return this.addMolecule_1(mol, mol.mAllAtoms, mol.mAllBonds);
}
;
_.addMolecule_1 = function addMolecule_0(mol, atoms, bonds){
  var atom, atomMap, bond, esrGroupCountAND, esrGroupCountOR;
  this.mIsFragment = this.mIsFragment | mol.mIsFragment;
  atomMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.mAllAtoms, 15, 1);
  esrGroupCountAND = this.renumberESRGroups_0(1);
  esrGroupCountOR = this.renumberESRGroups_0(2);
  for (atom = 0; atom < atoms; atom++) {
    atomMap[atom] = mol.copyAtom_0(this, atom, esrGroupCountAND, esrGroupCountOR);
  }
  for (bond = 0; bond < bonds; bond++) {
    mol.copyBond_1(this, bond, esrGroupCountAND, esrGroupCountOR, atomMap, false);
  }
  this.mIsRacemate = this.mIsRacemate && mol.mIsRacemate;
  this.mChirality = 0;
  this.mValidHelperArrays = 0;
  return atomMap;
}
;
_.addOrChangeAtom_0 = function addOrChangeAtom(x_0, y_0, atomicNo, mass, abnormalValence, radical, customLabel){
  var atom, changed;
  atom = this.findAtom_0(x_0, y_0);
  if (atom == -1) {
    if (this.mAllAtoms >= this.mMaxAtoms)
      this.setMaxAtoms_0(this.mMaxAtoms * 2);
    atom = this.addAtom_2(atomicNo);
    this.mCoordinates[atom].set_0(x_0, y_0, 0);
    this.mAtomMass[atom] = mass;
    this.setAtomAbnormalValence_0(atom, abnormalValence);
    this.setAtomRadical_0(atom, radical);
    this.setAtomCustomLabel_0(atom, customLabel);
    return true;
  }
  changed = this.changeAtom_0(atom, atomicNo, mass, abnormalValence, radical);
  this.setAtomCustomLabel_0(atom, customLabel);
  return changed;
}
;
_.addOrChangeBond_0 = function addOrChangeBond(atm1, atm2, type_0){
  var bnd;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    if (this.mBondAtom[0][bnd] == atm1 && this.mBondAtom[1][bnd] == atm2 || this.mBondAtom[0][bnd] == atm2 && this.mBondAtom[1][bnd] == atm1) {
      this.changeBond_0(bnd, type_0);
      this.mValidHelperArrays = 0;
      return bnd;
    }
  }
  if (this.mAllBonds >= this.mMaxBonds)
    this.setMaxBonds_0(this.mMaxBonds * 2);
  this.mBondAtom[0][this.mAllBonds] = atm1;
  this.mBondAtom[1][this.mAllBonds] = atm2;
  this.mBondType[this.mAllBonds] = type_0;
  this.mBondFlags[this.mAllBonds] = 0;
  this.mBondQueryFeatures[this.mAllBonds] = 0;
  this.mValidHelperArrays = 0;
  return this.mAllBonds++;
}
;
_.addRing_0 = function addRing(x_0, y_0, ringSize, aromatic, bondLength){
  var atom, bond, cornerAngle;
  while (this.mAllAtoms + ringSize > this.mMaxAtoms)
    this.setMaxAtoms_0(this.mMaxAtoms * 2);
  while (this.mAllBonds + ringSize > this.mMaxBonds)
    this.setMaxBonds_0(this.mMaxBonds * 2);
  atom = this.findAtom_0(x_0, y_0);
  if (atom != -1)
    return this.addRingToAtom_0(atom, ringSize, aromatic, bondLength);
  bond = this.findBond_0(x_0, y_0);
  if (bond != -1)
    return this.addRingToBond_0(bond, ringSize, aromatic, bondLength);
  atom = this.addAtom_0(x_0, y_0);
  cornerAngle = 3.141592653589793 * (ringSize - 2) / ringSize;
  this.polygon_0(atom, ringSize, atom, aromatic, 0, 3.141592653589793 - cornerAngle, bondLength);
  this.mValidHelperArrays = 0;
  return true;
}
;
_.addRingToAtom_0 = function addRingToAtom(atom, ringSize, aromatic, bondLength){
  var angle, angles, cornerAngle, i, j, newAngle;
  if (aromatic && this.getOccupiedValence_0(atom) > 1 || !aromatic && this.getOccupiedValence_0(atom) > 2)
    return false;
  angles = 0;
  angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 4, 15, 1);
  for (i = 0; i < this.mAllBonds; i++) {
    for (j = 0; j < 2; j++) {
      if (this.mBondAtom[j][i] == atom) {
        if (angles == 2) {
          angles = 3;
          break;
        }
        angle[angles++] = this.getBondAngle_0(atom, this.mBondAtom[1 - j][i]);
      }
    }
    if (angles == 3)
      break;
  }
  if (angles == 3)
    return false;
  newAngle = angles == 1?angle[0] + 3.141592653589793:$wnd.Math.abs(angle[0] - angle[1]) > 3.141592653589793?(angle[0] + angle[1]) / 2:(angle[0] + angle[1]) / 2 + 3.141592653589793;
  cornerAngle = 3.141592653589793 * (ringSize - 2) / ringSize;
  this.polygon_0(atom, ringSize, atom, aromatic, newAngle - cornerAngle / 2, 3.141592653589793 - cornerAngle, bondLength);
  this.mValidHelperArrays = 0;
  return true;
}
;
_.addRingToBond_0 = function addRingToBond(bond, ringSize, aromatic, bondLength){
  var angle, angles, atomNo, bondAngle, bondAtom, cornerAngle, i, i0, j, k, side;
  bondAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  bondAngle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  bondAtom[0] = this.mBondAtom[0][bond];
  bondAtom[1] = this.mBondAtom[1][bond];
  if (this.getOccupiedValence_0(bondAtom[0]) > 3)
    return false;
  if (this.getOccupiedValence_0(bondAtom[1]) > 3)
    return false;
  angles = 0;
  angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 4, 15, 1);
  for (i0 = 0; i0 < this.mAllBonds; i0++) {
    if (i0 == bond)
      continue;
    for (j = 0; j < 2; j++) {
      for (k = 0; k < 2; k++) {
        if (this.mBondAtom[j][i0] == bondAtom[k]) {
          if (angles == 4) {
            angles = 5;
            break;
          }
          angle[angles++] = this.getBondAngle_0(bondAtom[k], this.mBondAtom[1 - j][i0]);
        }
      }
      if (angles == 5)
        break;
    }
    if (angles == 5)
      break;
  }
  if (angles == 5)
    return false;
  bondAngle[0] = this.getBondAngle_0(bondAtom[0], bondAtom[1]);
  if (bondAngle[0] < 0) {
    bondAngle[1] = bondAngle[0] + 3.141592653589793;
    atomNo = 0;
  }
   else {
    bondAngle[1] = bondAngle[0];
    bondAngle[0] = bondAngle[1] - 3.141592653589793;
    atomNo = 1;
  }
  side = 0;
  for (i = 0; i < angles; i++) {
    if (angle[i] > bondAngle[0] && angle[i] < bondAngle[1])
      side--;
    else 
      side++;
  }
  atomNo = side > 0?1 - atomNo:atomNo;
  cornerAngle = 3.141592653589793 * (ringSize - 2) / ringSize;
  this.polygon_0(bondAtom[atomNo], ringSize - 1, bondAtom[1 - atomNo], aromatic, bondAngle[side > 0?0:1] + 3.141592653589793 - cornerAngle, 3.141592653589793 - cornerAngle, bondLength);
  this.mValidHelperArrays = 0;
  return true;
}
;
_.addSubstituent_0 = function addSubstituent(substituent, rootAtom){
  var atom, atomMap, b, bond, bond0, esrGroupCountAND, esrGroupCountOR, i, invert, j, neighbor, parity;
  atomMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, substituent.mAllAtoms, 15, 1);
  esrGroupCountAND = this.renumberESRGroups_0(1);
  esrGroupCountOR = this.renumberESRGroups_0(2);
  for (atom = 0; atom < substituent.mAllAtoms; atom++) {
    if (substituent.getAtomicNo_0(atom) != 0 || jsNotEquals(substituent.getAtomCustomLabel_0(atom), null)) {
      atomMap[atom] = substituent.copyAtom_0(this, atom, esrGroupCountAND, esrGroupCountOR);
    }
     else {
      atomMap[atom] = rootAtom;
      if ((substituent.mValidHelperArrays & 8) != 0) {
        for (bond0 = 0; bond0 < substituent.mAllBonds; bond0++) {
          for (i = 0; i < 2; i++) {
            if (substituent.getBondAtom_0(i, bond0) == atom) {
              neighbor = substituent.getBondAtom_0(1 - i, bond0);
              parity = substituent.getAtomParity_0(neighbor);
              invert = false;
              if (parity == 1 || parity == 2) {
                for (b = 0; b < substituent.mAllBonds; b++) {
                  if (b != bond0) {
                    for (j = 0; j < 2; j++) {
                      if (substituent.getBondAtom_0(j, b) == neighbor && substituent.getBondAtom_0(1 - j, b) < atom) {
                        invert = !invert;
                      }
                    }
                  }
                }
              }
              if (invert)
                substituent.setAtomParity_0(neighbor, parity == 1?2:1, substituent.isAtomParityPseudo_0(neighbor));
            }
          }
        }
      }
    }
  }
  for (bond = 0; bond < substituent.mAllBonds; bond++) {
    substituent.copyBond_1(this, bond, esrGroupCountAND, esrGroupCountOR, atomMap, false);
  }
  this.mIsRacemate = this.mIsRacemate && substituent.mIsRacemate;
  this.mChirality = 0;
  this.mValidHelperArrays = 0;
  return atomMap;
}
;
_.calculateTorsion_0 = function calculateTorsion(atom){
  var c1, c2, c3, c4, n1, n2, v1, v2, v3;
  c1 = this.mCoordinates[atom[0]];
  c2 = this.mCoordinates[atom[1]];
  c3 = this.mCoordinates[atom[2]];
  c4 = this.mCoordinates[atom[3]];
  v1 = c2.subC(c1);
  v2 = c3.subC(c2);
  v3 = c4.subC(c3);
  n1 = v1.cross(v2);
  n2 = v2.cross(v3);
  return -$wnd.Math.atan2(v2.getLength() * v1.dot(n2), n1.dot(n2));
}
;
_.changeAtom_0 = function changeAtom(atom, atomicNo, mass, abnormalValence, radical){
  if ((atomicNo == 1 || atomicNo == 151 || atomicNo == 152) && this.getOccupiedValence_0(atom) > 1)
    return false;
  this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(1));
  if (jsNotEquals(this.mAtomList, null))
    this.mAtomList[atom] = null;
  if (jsNotEquals(this.mAtomCustomLabel, null))
    this.mAtomCustomLabel[atom] = null;
  if (atomicNo == this.mAtomicNo[atom] && mass == this.mAtomMass[atom] && abnormalValence == this.getAtomAbnormalValence_0(atom) && radical == this.getAtomRadical_0(atom))
    return false;
  if (atomicNo == 151 || atomicNo == 152) {
    mass = atomicNo - 149;
    atomicNo = 1;
  }
  this.mAtomFlags[atom] &= 448 | 512;
  this.mAtomicNo[atom] = atomicNo;
  this.mAtomMass[atom] = mass;
  this.mAtomCharge[atom] = 0;
  this.mAtomQueryFeatures[atom] = 0;
  this.setAtomAbnormalValence_0(atom, abnormalValence);
  this.setAtomRadical_0(atom, radical);
  this.removeMappingNo(this.mAtomMapNo[atom]);
  this.mValidHelperArrays = 0;
  return true;
}
;
_.changeAtomCharge_0 = function changeAtomCharge(atom, positive){
  if (positive) {
    if (this.mAtomCharge[atom] > 8)
      return false;
    this.mAtomCharge[atom]++;
  }
   else {
    if (this.mAtomCharge[atom] < -8)
      return false;
    this.mAtomCharge[atom]--;
  }
  this.mValidHelperArrays = 0;
  return true;
}
;
_.changeBond_0 = function changeBond(bnd, type_0){
  var bondAtAtom1Qualifies, bondAtAtom2Qualifies, bondWasChanged, oldType, temp;
  bondWasChanged = false;
  oldType = this.mBondType[bnd];
  if (type_0 == 511) {
    bondWasChanged = this.incrementBondOrder(bnd);
  }
   else if (this.validateBondType(bnd, type_0)) {
    if (type_0 == 257 || type_0 == 129) {
      bondAtAtom1Qualifies = this.qualifiesAsStereoBond(bnd, this.mBondAtom[0][bnd]);
      bondAtAtom2Qualifies = this.qualifiesAsStereoBond(bnd, this.mBondAtom[1][bnd]);
      if (type_0 == oldType) {
        if (bondAtAtom1Qualifies == bondAtAtom2Qualifies || bondAtAtom2Qualifies) {
          temp = this.mBondAtom[0][bnd];
          this.mBondAtom[0][bnd] = this.mBondAtom[1][bnd];
          this.mBondAtom[1][bnd] = temp;
          bondWasChanged = true;
        }
      }
       else {
        if (!bondAtAtom1Qualifies && bondAtAtom2Qualifies) {
          temp = this.mBondAtom[0][bnd];
          this.mBondAtom[0][bnd] = this.mBondAtom[1][bnd];
          this.mBondAtom[1][bnd] = temp;
        }
        this.mBondType[bnd] = type_0;
        bondWasChanged = true;
      }
    }
     else {
      this.mBondType[bnd] = type_0;
      bondWasChanged = true;
    }
  }
  if (bondWasChanged) {
    this.mValidHelperArrays = (oldType & 127) == (type_0 & 127)?this.mValidHelperArrays & 7:0;
    this.mBondQueryFeatures[bnd] = 0;
  }
  return bondWasChanged;
}
;
_.clear_0 = function clear_4(){
  this.mAllAtoms = 0;
  this.mAllBonds = 0;
  this.mIsFragment = false;
  this.mIsRacemate = false;
  this.mChirality = 0;
  this.mAtomList = null;
  this.mAtomCustomLabel = null;
  this.mName = null;
  this.mValidHelperArrays = 0;
}
;
_.compressMolTable = function compressMolTable(){
  var atom, atom1, atom2, atomDest, bnd, bnd0, bondDest, newAtmNo;
  for (bnd0 = 0; bnd0 < this.mAllBonds; bnd0++) {
    if (this.mBondType[bnd0] == 512) {
      atom1 = this.mBondAtom[0][bnd0];
      atom2 = this.mBondAtom[1][bnd0];
      if (this.mAtomicNo[atom1] == -1 ^ this.mAtomicNo[atom2] == -1) {
        if (this.mAtomCharge[atom1] != 0 && this.mAtomCharge[atom2] != 0) {
          if (this.mAtomCharge[atom1] < 0 ^ this.mAtomCharge[atom2] < 0) {
            if (this.mAtomCharge[atom1] < 0) {
              this.mAtomCharge[atom1]++;
              this.mAtomCharge[atom2]--;
            }
             else {
              this.mAtomCharge[atom1]--;
              this.mAtomCharge[atom2]++;
            }
          }
        }
      }
    }
  }
  newAtmNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  atomDest = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (this.mAtomicNo[atom] == -1) {
      newAtmNo[atom] = -1;
      continue;
    }
    if (atomDest < atom) {
      this.mAtomicNo[atomDest] = this.mAtomicNo[atom];
      this.mAtomCharge[atomDest] = this.mAtomCharge[atom];
      this.mAtomMass[atomDest] = this.mAtomMass[atom];
      this.mAtomFlags[atomDest] = this.mAtomFlags[atom];
      this.mAtomQueryFeatures[atomDest] = this.mAtomQueryFeatures[atom];
      this.mAtomMapNo[atomDest] = this.mAtomMapNo[atom];
      this.mCoordinates[atomDest].set_1(this.mCoordinates[atom]);
      if (jsNotEquals(this.mAtomList, null))
        this.mAtomList[atomDest] = this.mAtomList[atom];
      if (jsNotEquals(this.mAtomCustomLabel, null))
        this.mAtomCustomLabel[atomDest] = this.mAtomCustomLabel[atom];
    }
    newAtmNo[atom] = atomDest;
    atomDest++;
  }
  this.mAllAtoms = atomDest;
  bondDest = 0;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    if (this.mBondType[bnd] == 512)
      continue;
    this.mBondType[bondDest] = this.mBondType[bnd];
    this.mBondFlags[bondDest] = this.mBondFlags[bnd];
    this.mBondQueryFeatures[bondDest] = this.mBondQueryFeatures[bnd];
    this.mBondAtom[0][bondDest] = newAtmNo[this.mBondAtom[0][bnd]];
    this.mBondAtom[1][bondDest] = newAtmNo[this.mBondAtom[1][bnd]];
    bondDest++;
  }
  this.mAllBonds = bondDest;
  return newAtmNo;
}
;
_.copyAtom_0 = function copyAtom(destMol, sourceAtom, esrGroupOffsetAND, esrGroupOffsetOR){
  var destAtom, esrGroup, esrType;
  destAtom = destMol.mAllAtoms;
  if (destAtom >= destMol.mMaxAtoms)
    destMol.setMaxAtoms_0(destMol.mMaxAtoms * 2);
  esrType = this.getAtomESRType_0(sourceAtom);
  esrGroup = -1;
  if (esrType == 1) {
    if (esrGroupOffsetAND == -1)
      esrGroup = destMol.renumberESRGroups_0(esrType);
    else 
      esrGroup = $wnd.Math.min(32 - 1, esrGroupOffsetAND + this.getAtomESRGroup_0(sourceAtom));
  }
   else if (esrType == 2) {
    if (esrGroupOffsetOR == -1)
      esrGroup = destMol.renumberESRGroups_0(esrType);
    else 
      esrGroup = $wnd.Math.min(32 - 1, esrGroupOffsetOR + this.getAtomESRGroup_0(sourceAtom));
  }
  destMol.mAtomicNo[destAtom] = this.mAtomicNo[sourceAtom];
  destMol.mAtomCharge[destAtom] = this.mAtomCharge[sourceAtom];
  destMol.mAtomMass[destAtom] = this.mAtomMass[sourceAtom];
  destMol.mAtomFlags[destAtom] = this.mAtomFlags[sourceAtom];
  destMol.mAtomQueryFeatures[destAtom] = destMol.mIsFragment?this.mAtomQueryFeatures[sourceAtom]:0;
  destMol.mCoordinates[destAtom].set_1(this.mCoordinates[sourceAtom]);
  destMol.mAtomMapNo[destAtom] = this.mAtomMapNo[sourceAtom];
  if (jsNotEquals(destMol.mAtomList, null))
    destMol.mAtomList[destAtom] = null;
  if (jsNotEquals(this.mAtomList, null) && jsNotEquals(this.mAtomList[sourceAtom], null) && destMol.mIsFragment) {
    if (jsEquals(destMol.mAtomList, null))
      destMol.mAtomList = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, destMol.mAtomicNo.length, 0, 2);
    destMol.mAtomList[destAtom] = ju.copyOf_9(this.mAtomList[sourceAtom], this.mAtomList[sourceAtom].length);
  }
  if (jsNotEquals(destMol.mAtomCustomLabel, null))
    destMol.mAtomCustomLabel[destAtom] = null;
  if (jsNotEquals(this.mAtomCustomLabel, null) && jsNotEquals(this.mAtomCustomLabel[sourceAtom], null)) {
    if (jsEquals(destMol.mAtomCustomLabel, null))
      destMol.mAtomCustomLabel = initUnidimensionalArray(cggl.B_classLit, {4:1, 1:1, 7:1}, 8, destMol.mAtomicNo.length, 0, 2);
    destMol.mAtomCustomLabel[destAtom] = ju.copyOf_7(this.mAtomCustomLabel[sourceAtom], this.mAtomCustomLabel[sourceAtom].length);
  }
  if (esrGroup != -1) {
    destMol.mAtomFlags[destAtom] &= ~32505856;
    destMol.mAtomFlags[destAtom] |= esrGroup << 20;
  }
  destMol.mAllAtoms++;
  destMol.mValidHelperArrays = 0;
  return destAtom;
}
;
_.copyBond_0 = function copyBond(destMol, sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, destAtom1, destAtom2, useBondTypeDelocalized){
  var bondType, destBond, esrGroup, esrType;
  destBond = destMol.mAllBonds;
  if (destBond >= destMol.mMaxBonds)
    destMol.setMaxBonds_0(destMol.mMaxBonds * 2);
  esrType = this.getBondESRType_0(sourceBond);
  esrGroup = -1;
  if (esrType == 1) {
    if (esrGroupOffsetAND == -1)
      esrGroup = destMol.renumberESRGroups_0(esrType);
    else 
      esrGroup = $wnd.Math.min(32, esrGroupOffsetAND + this.getBondESRGroup_0(sourceBond));
  }
  if (esrType == 2) {
    if (esrGroupOffsetOR == -1)
      esrGroup = destMol.renumberESRGroups_0(esrType);
    else 
      esrGroup = $wnd.Math.min(32, esrGroupOffsetOR + this.getBondESRGroup_0(sourceBond));
  }
  destMol.mBondAtom[0][destBond] = destAtom1;
  destMol.mBondAtom[1][destBond] = destAtom2;
  bondType = useBondTypeDelocalized && this.isDelocalizedBond_0(sourceBond)?64:this.mBondType[sourceBond];
  destMol.mBondType[destBond] = bondType;
  destMol.mBondFlags[destBond] = this.mBondFlags[sourceBond];
  destMol.mBondQueryFeatures[destBond] = destMol.mIsFragment?this.mBondQueryFeatures[sourceBond]:0;
  if (esrGroup != -1) {
    destMol.mBondFlags[destBond] &= ~31744;
    destMol.mBondFlags[destBond] |= esrGroup << 10;
  }
  destMol.mAllBonds++;
  destMol.mValidHelperArrays = 0;
  return destBond;
}
;
_.copyBond_1 = function copyBond_0(destMol, sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, atomMap, useBondTypeDelocalized){
  return this.copyBond_0(destMol, sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, jsEquals(atomMap, null)?this.mBondAtom[0][sourceBond]:atomMap[this.mBondAtom[0][sourceBond]], jsEquals(atomMap, null)?this.mBondAtom[1][sourceBond]:atomMap[this.mBondAtom[1][sourceBond]], useBondTypeDelocalized);
}
;
_.copyMolecule_0 = function copyMolecule(destMol){
  var atom, bnd;
  destMol.mAtomList = null;
  destMol.mAtomCustomLabel = null;
  destMol.mIsFragment = this.mIsFragment;
  destMol.mAllAtoms = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++)
    this.copyAtom_0(destMol, atom, 0, 0);
  destMol.mAllBonds = 0;
  for (bnd = 0; bnd < this.mAllBonds; bnd++)
    this.copyBond_1(destMol, bnd, 0, 0, null, false);
  this.copyMoleculeProperties_0(destMol);
}
;
_.copyMoleculeProperties_0 = function copyMoleculeProperties(destMol){
  destMol.mIsFragment = this.mIsFragment;
  destMol.mIsRacemate = this.mIsRacemate;
  destMol.mProtectHydrogen = this.mProtectHydrogen;
  destMol.mChirality = this.mChirality;
  destMol.mName = this.mName;
  destMol.mValidHelperArrays = this.mValidHelperArrays & (8 | 16);
}
;
_.deleteAtom_0 = function deleteAtom_0(atom){
  var bnd, bonds, i, j;
  for (bnd = 0; bnd < this.mAllBonds; bnd++) {
    for (i = 0; i < 2; i++) {
      if (this.mBondAtom[i][bnd] == atom) {
        this.mBondType[bnd] = 512;
        bonds = 0;
        for (j = 0; j < this.mAllBonds; j++) {
          if (j == bnd)
            continue;
          if (this.mBondAtom[0][j] == this.mBondAtom[1 - i][bnd] || this.mBondAtom[1][j] == this.mBondAtom[1 - i][bnd])
            bonds++;
        }
        if (bonds == 0) {
          this.removeMappingNo(this.mAtomMapNo[this.mBondAtom[1 - i][bnd]]);
          this.mAtomicNo[this.mBondAtom[1 - i][bnd]] = -1;
        }
      }
    }
  }
  this.removeMappingNo(this.mAtomMapNo[atom]);
  this.mAtomicNo[atom] = -1;
  if (jsNotEquals(this.mAtomList, null))
    this.mAtomList[atom] = null;
  if (jsNotEquals(this.mAtomCustomLabel, null))
    this.mAtomCustomLabel[atom] = null;
  this.compressMolTable();
  this.mValidHelperArrays = 0;
}
;
_.deleteAtomOrBond_0 = function deleteAtomOrBond(x_0, y_0){
  var atom, bnd;
  atom = this.findAtom_0(x_0, y_0);
  if (atom != -1) {
    if ((this.mAtomFlags[atom] & 512) != 0)
      this.deleteSelectedAtoms_0();
    else 
      this.deleteAtom_0(atom);
    this.mValidHelperArrays = 0;
    return true;
  }
  bnd = this.findBond_0(x_0, y_0);
  if (bnd != -1) {
    if ((this.mAtomFlags[this.mBondAtom[0][bnd]] & this.mAtomFlags[this.mBondAtom[1][bnd]] & 512) != 0)
      this.deleteSelectedAtoms_0();
    else 
      this.deleteBondAndSurrounding_0(bnd);
    this.mValidHelperArrays = 0;
    return true;
  }
  return false;
}
;
_.deleteAtoms_0 = function deleteAtoms(atomList){
  var atom, atom$array, atom$index, atom$max;
  if (atomList.length == 0)
    return null;
  for (atom$array = atomList , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    this.markAtomForDeletion_0(atom);
  }
  return this.deleteMarkedAtomsAndBonds_0();
}
;
_.deleteAtoms_1 = function deleteAtoms_0(deleteAtom){
  var atom, found;
  found = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (deleteAtom[atom]) {
      this.markAtomForDeletion_0(atom);
      found = true;
    }
  }
  if (!found)
    return null;
  return this.deleteMarkedAtomsAndBonds_0();
}
;
_.deleteBond_0 = function deleteBond(bond){
  this.mBondType[bond] = 512;
  this.compressMolTable();
  this.mValidHelperArrays = 0;
}
;
_.deleteBondAndSurrounding_0 = function deleteBondAndSurrounding(bond){
  var bonds, i, j;
  for (i = 0; i < 2; i++) {
    bonds = 0;
    for (j = 0; j < this.mAllBonds; j++) {
      if (j == bond)
        continue;
      if (this.mBondAtom[0][j] == this.mBondAtom[i][bond] || this.mBondAtom[1][j] == this.mBondAtom[i][bond])
        bonds++;
    }
    if (bonds == 0) {
      this.removeMappingNo(this.mAtomMapNo[this.mBondAtom[i][bond]]);
      this.mAtomicNo[this.mBondAtom[i][bond]] = -1;
    }
  }
  this.mBondType[bond] = 512;
  this.compressMolTable();
  this.mValidHelperArrays = 0;
}
;
_.deleteMarkedAtomsAndBonds_0 = function deleteMarkedAtomsAndBonds(){
  var atom, bond, found;
  found = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (this.mAtomicNo[atom] == -1) {
      found = true;
      this.removeMappingNo(this.mAtomMapNo[atom]);
    }
  }
  for (bond = 0; bond < this.mAllBonds; bond++) {
    if (this.mBondType[bond] == 512) {
      found = true;
    }
     else if (this.mAtomicNo[this.mBondAtom[0][bond]] == -1 || this.mAtomicNo[this.mBondAtom[1][bond]] == -1) {
      this.mBondType[bond] = 512;
      found = true;
    }
  }
  if (found) {
    this.mValidHelperArrays = 0;
    return this.compressMolTable();
  }
  return null;
}
;
_.deleteMolecule_0 = function deleteMolecule(){
  this.clear_0();
}
;
_.deleteSelectedAtoms_0 = function deleteSelectedAtoms(){
  var atom, found;
  found = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if ((this.mAtomFlags[atom] & 512) != 0) {
      this.markAtomForDeletion_0(atom);
      found = true;
    }
  }
  return found && jsNotEquals(this.deleteMarkedAtomsAndBonds_0(), null);
}
;
_.findAtom_0 = function findAtom(pickx, picky){
  var atom, avbl, distanceSquare, foundAtom, foundDistanceSquare, maxDistanceSquare, x_0, y_0;
  foundAtom = -1;
  avbl = this.getAverageBondLength_0();
  foundDistanceSquare = 1.7976931348623157E308;
  maxDistanceSquare = avbl * avbl / 12;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    x_0 = this.mCoordinates[atom].x_0;
    y_0 = this.mCoordinates[atom].y_0;
    distanceSquare = (pickx - x_0) * (pickx - x_0) + (picky - y_0) * (picky - y_0);
    if (distanceSquare < maxDistanceSquare && distanceSquare < foundDistanceSquare) {
      foundDistanceSquare = distanceSquare;
      foundAtom = atom;
    }
  }
  return foundAtom;
}
;
_.findBond_0 = function findBond(pickx, picky){
  var bond, bondLength, centralX, centralY, constA, constC, distance, dx, dy, foundBond, foundDistance, maxDistance, x1, x2, y1, y2;
  foundBond = -1;
  maxDistance = this.getAverageBondLength_0();
  foundDistance = 1.7976931348623157E308;
  for (bond = 0; bond < this.mAllBonds; bond++) {
    x1 = this.mCoordinates[this.mBondAtom[0][bond]].x_0;
    y1 = this.mCoordinates[this.mBondAtom[0][bond]].y_0;
    x2 = this.mCoordinates[this.mBondAtom[1][bond]].x_0;
    y2 = this.mCoordinates[this.mBondAtom[1][bond]].y_0;
    dx = x2 - x1;
    dy = y2 - y1;
    bondLength = $wnd.Math.sqrt(dx * dx + dy * dy);
    centralX = (x1 + x2) / 2;
    centralY = (y1 + y2) / 2;
    dx = pickx - centralX;
    dy = picky - centralY;
    if ($wnd.Math.sqrt(dx * dx + dy * dy) > bondLength / 2)
      continue;
    if (x2 == x1)
      distance = $wnd.Math.abs(x1 - pickx);
    else {
      constA = (y2 - y1) / (x1 - x2);
      constC = -constA * x1 - y1;
      distance = $wnd.Math.abs((constA * pickx + picky + constC) / $wnd.Math.sqrt(constA * constA + 1));
    }
    if (distance < maxDistance && distance < foundDistance) {
      foundDistance = distance;
      foundBond = bond;
    }
  }
  return foundBond;
}
;
_.getAllAtoms_0 = function getAllAtoms(){
  return this.mAllAtoms;
}
;
_.getAllBonds_0 = function getAllBonds(){
  return this.mAllBonds;
}
;
_.getAtomAbnormalValence_0 = function getAtomAbnormalValence(atom){
  return ((this.mAtomFlags[atom] & 2013265920) >>> 27) - 1;
}
;
_.getAtomCIPParity_0 = function getAtomCIPParity(atom){
  return (this.mAtomFlags[atom] & 49152) >> 14;
}
;
_.getAtomCharge_0 = function getAtomCharge(atom){
  return this.mAtomCharge[atom];
}
;
_.getAtomColor_0 = function getAtomColor(atom){
  return this.mAtomFlags[atom] & 448;
}
;
_.getAtomCoordinates = function getAtomCoordinates(){
  return this.mCoordinates;
}
;
_.getAtomCustomLabel_0 = function getAtomCustomLabel(atom){
  return jsEquals(this.mAtomCustomLabel, null)?null:jsEquals(this.mAtomCustomLabel[atom], null)?null:jl.$create_12(this.mAtomCustomLabel[atom], (jnc.$clinit_StandardCharsets() , jnc.UTF_8));
}
;
_.getAtomCustomLabelBytes = function getAtomCustomLabelBytes(atom){
  return jsEquals(this.mAtomCustomLabel, null)?null:this.mAtomCustomLabel[atom];
}
;
_.getAtomESRGroup_0 = function getAtomESRGroup(atom){
  if (this.getAtomESRType_0(atom) != 1 && this.getAtomESRType_0(atom) != 2)
    return -1;
  else 
    return (this.mAtomFlags[atom] & 32505856) >> 20;
}
;
_.getAtomESRType_0 = function getAtomESRType(atom){
  return (this.mAtomFlags[atom] & 786432) >> 18;
}
;
_.getAtomLabel_0 = function getAtomLabel(atom){
  return carc2.cAtomLabel[this.mAtomicNo[atom]];
}
;
_.getAtomList_0 = function getAtomList(atom){
  return jsEquals(this.mAtomList, null)?null:this.mAtomList[atom];
}
;
_.getAtomListString_0 = function getAtomListString(atom){
  var atomicNo, i, listString;
  if (jsEquals(this.mAtomList, null) || jsEquals(this.mAtomList[atom], null))
    return neq(and_0(this.mAtomQueryFeatures[atom], 1), 0)?'':carc2.cAtomLabel[this.mAtomicNo[atom]];
  listString = '';
  for (i = 0; i < this.mAtomList[atom].length; i++) {
    if (i > 0)
      listString = jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(listString, ',');
    atomicNo = this.mAtomList[atom][i];
    listString = jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(listString, carc2.cAtomLabel[atomicNo]);
  }
  return listString;
}
;
_.getAtomMapNo_0 = function getAtomMapNo(atom){
  return $wnd.Math.abs(this.mAtomMapNo[atom]);
}
;
_.getAtomMass_0 = function getAtomMass(atom){
  return this.mAtomMass[atom];
}
;
_.getAtomParity_0 = function getAtomParity(atom){
  return this.mAtomFlags[atom] & 3;
}
;
_.getAtomQueryFeatures = function getAtomQueryFeatures(atom){
  return this.mAtomQueryFeatures[atom];
}
;
_.getAtomRadical_0 = function getAtomRadical(atom){
  return this.mAtomFlags[atom] & 48;
}
;
_.getAtomX_0 = function getAtomX_0(atom){
  return this.mCoordinates[atom].x_0;
}
;
_.getAtomY_0 = function getAtomY_0(atom){
  return this.mCoordinates[atom].y_0;
}
;
_.getAtomZ_0 = function getAtomZ(atom){
  return this.mCoordinates[atom].z_0;
}
;
_.getAtomicNo_0 = function getAtomicNo(atom){
  return this.mAtomicNo[atom];
}
;
_.getAverageBondLength_0 = function getAverageBondLength(){
  return this.getAverageBondLength_2(this.mAllAtoms, this.mAllBonds, carc2.sDefaultAVBL);
}
;
_.getAverageBondLength_1 = function getAverageBondLength_0(atoms, bonds){
  return this.getAverageBondLength_2(atoms, bonds, carc2.sDefaultAVBL);
}
;
_.getAverageBondLength_2 = function getAverageBondLength_1(atoms, bonds, defaultBondLength){
  return this.getAverageBondLength_3(atoms, bonds, defaultBondLength, this.mCoordinates);
}
;
_.getAverageBondLength_3 = function getAverageBondLength_2(atoms, bonds, defaultBondLength, coords){
  var atom1, atom2, avblSum, bond, bond0, bond1, considerMetalBonds, consideredBonds, distance, lowDistance;
  considerMetalBonds = false;
  consideredBonds = 0;
  for (bond0 = 0; bond0 < bonds; bond0++)
    if (this.mBondType[bond0] != 32 && (this.mBondQueryFeatures[bond0] & 130560) == 0)
      consideredBonds++;
  if (consideredBonds == 0) {
    for (bond1 = 0; bond1 < bonds; bond1++)
      if ((this.mBondQueryFeatures[bond1] & 130560) == 0)
        consideredBonds++;
    considerMetalBonds = true;
  }
  if (consideredBonds == 0) {
    if (atoms < 2)
      return defaultBondLength;
    lowDistance = 1.7976931348623157E308;
    for (atom1 = 1; atom1 < atoms; atom1++) {
      for (atom2 = 0; atom2 < atom1; atom2++) {
        distance = coords[atom1].distance(coords[atom2]);
        if (distance > 0 && distance < lowDistance)
          lowDistance = distance;
      }
    }
    return lowDistance != 1.7976931348623157E308?0.6 * lowDistance:defaultBondLength;
  }
  avblSum = 0;
  for (bond = 0; bond < bonds; bond++) {
    if ((considerMetalBonds || this.mBondType[bond] != 32) && (this.mBondQueryFeatures[bond] & 130560) == 0)
      avblSum += coords[this.mBondAtom[1][bond]].distance(coords[this.mBondAtom[0][bond]]);
  }
  return avblSum / consideredBonds;
}
;
_.getBondAngle_0 = function getBondAngle(atom1, atom2){
  return carc2.getAngle_0(this.mCoordinates[atom1].x_0, this.mCoordinates[atom1].y_0, this.mCoordinates[atom2].x_0, this.mCoordinates[atom2].y_0);
}
;
_.getBondAtom_0 = function getBondAtom(no, bond){
  return this.mBondAtom[no][bond];
}
;
_.getBondBridgeMaxSize_0 = function getBondBridgeMaxSize(bond){
  return ((this.mBondQueryFeatures[bond] & 7680) >> 9) + ((this.mBondQueryFeatures[bond] & 122880) >> 13);
}
;
_.getBondBridgeMinSize_0 = function getBondBridgeMinSize(bond){
  return (this.mBondQueryFeatures[bond] & 7680) >> 9;
}
;
_.getBondCIPParity_0 = function getBondCIPParity(bond){
  return (this.mBondFlags[bond] & 48) >> 4;
}
;
_.getBondESRGroup_0 = function getBondESRGroup(bond){
  if (this.getBondESRType_0(bond) != 1 && this.getBondESRType_0(bond) != 2)
    return -1;
  else 
    return (this.mBondFlags[bond] & 31744) >> 10;
}
;
_.getBondESRType_0 = function getBondESRType(bond){
  return (this.mBondFlags[bond] & 768) >> 8;
}
;
_.getBondLength_0 = function getBondLength(bond){
  var atom1, atom2, xdif, ydif;
  atom1 = this.mBondAtom[0][bond];
  atom2 = this.mBondAtom[1][bond];
  xdif = this.mCoordinates[atom2].x_0 - this.mCoordinates[atom1].x_0;
  ydif = this.mCoordinates[atom2].y_0 - this.mCoordinates[atom1].y_0;
  return $wnd.Math.sqrt(xdif * xdif + ydif * ydif);
}
;
_.getBondNo = function getBondNo(atm1, atm2){
  var bnd;
  for (bnd = 0; bnd < this.mAllBonds; bnd++)
    if (this.mBondAtom[0][bnd] == atm1 && this.mBondAtom[1][bnd] == atm2 || this.mBondAtom[0][bnd] == atm2 && this.mBondAtom[1][bnd] == atm1)
      if (this.mBondType[bnd] != 512)
        return bnd;
  return -1;
}
;
_.getBondOrder_0 = function getBondOrder(bond){
  if (this.mIsFragment && (this.mBondQueryFeatures[bond] & 31) != 0) {
    if ((this.mBondQueryFeatures[bond] & (1 | 8)) != 0)
      return 1;
    if ((this.mBondQueryFeatures[bond] & 2) != 0)
      return 2;
    if ((this.mBondQueryFeatures[bond] & 4) != 0)
      return 3;
    if ((this.mBondQueryFeatures[bond] & 32) != 0)
      return 4;
    if ((this.mBondQueryFeatures[bond] & 64) != 0)
      return 5;
    if ((this.mBondQueryFeatures[bond] & 16) != 0)
      return 0;
  }
  switch (this.mBondType[bond] & 127) {
    case 1:
    case 64:
      return 1;
    case 2:
      return 2;
    case 4:
      return 3;
    case 8:
      return 4;
    case 16:
      return 5;
    default:return 0;
  }
}
;
_.getBondParity_0 = function getBondParity(bnd){
  return this.mBondFlags[bnd] & 3;
}
;
_.getBondQueryFeatures_0 = function getBondQueryFeatures(bnd){
  return this.mBondQueryFeatures[bnd];
}
;
_.getBondType_0 = function getBondType(bond){
  return this.mBondType[bond];
}
;
_.getBondTypeSimple_0 = function getBondTypeSimple(bond){
  return this.mBondType[bond] & 127;
}
;
_.getBounds_0 = function getBounds(r){
  var atom, x1, x2, y1, y2;
  if (this.mAllAtoms == 0)
    return null;
  x1 = this.mCoordinates[0].x_0;
  y1 = this.mCoordinates[0].y_0;
  x2 = this.mCoordinates[0].x_0;
  y2 = this.mCoordinates[0].y_0;
  for (atom = 1; atom < this.mAllAtoms; atom++) {
    if (x1 > this.mCoordinates[atom].x_0)
      x1 = this.mCoordinates[atom].x_0;
    else if (x2 < this.mCoordinates[atom].x_0)
      x2 = this.mCoordinates[atom].x_0;
    if (y1 > this.mCoordinates[atom].y_0)
      y1 = this.mCoordinates[atom].y_0;
    else if (y2 < this.mCoordinates[atom].y_0)
      y2 = this.mCoordinates[atom].y_0;
  }
  if (isNull(r)) {
    r = new cargg.GenericRectangle_0(x1, y1, x2 - x1, y2 - y1);
  }
   else {
    r.x_0 = x1;
    r.y_0 = y1;
    r.width_0 = x2 - x1;
    r.height_0 = y2 - y1;
  }
  return r;
}
;
_.getChirality_0 = function getChirality(){
  return this.mChirality;
}
;
_.getCoordinates = function getCoordinates(atom){
  return this.mCoordinates[atom];
}
;
_.getDefaultMaxValenceUncharged_0 = function getDefaultMaxValenceUncharged(atom){
  var valenceList;
  valenceList = this.mAtomicNo[atom] < carc2.cAtomValence.length?carc2.cAtomValence[this.mAtomicNo[atom]]:null;
  return jsEquals(valenceList, null)?6:valenceList[valenceList.length - 1];
}
;
_.getElectronValenceCorrection_0 = function getElectronValenceCorrection(atom, occupiedValence){
  return this.getElectronValenceCorrection_1(atom, occupiedValence, this.mAtomicNo[atom]);
}
;
_.getElectronValenceCorrection_1 = function getElectronValenceCorrection_0(atom, occupiedValence, atomicNo){
  var charge, correction;
  if (atomicNo >= 171 && atomicNo <= 190)
    return 0;
  correction = 0;
  if ((this.mAtomFlags[atom] & 48) == 32)
    correction -= 1;
  if ((this.mAtomFlags[atom] & 48) == 16 || (this.mAtomFlags[atom] & 48) == 48)
    correction -= 2;
  charge = this.mAtomCharge[atom];
  if (charge == 0 && this.mIsFragment) {
    if (eq(and_0(this.mAtomQueryFeatures[atom], 234881024), add_22(67108864, 134217728)))
      charge = -1;
    if (eq(and_0(this.mAtomQueryFeatures[atom], 234881024), add_22(67108864, 33554432)))
      charge = 1;
  }
  if (atomicNo == 7 || atomicNo == 8 || atomicNo == 9)
    correction += charge;
  else if (atomicNo == 6 || atomicNo == 14 || atomicNo == 32)
    correction -= $wnd.Math.abs(charge);
  else if (atomicNo == 15 || atomicNo == 33) {
    if (occupiedValence - correction - charge <= 3)
      correction += charge;
    else 
      correction -= charge;
  }
   else if (atomicNo == 16 || atomicNo == 34 || atomicNo == 52) {
    if (occupiedValence - correction - charge <= 4)
      correction += charge;
    else 
      correction -= $wnd.Math.abs(charge);
  }
   else if (atomicNo == 17 || atomicNo == 35 || atomicNo == 53) {
    if (occupiedValence - correction - charge <= 5)
      correction += charge;
    else 
      correction -= $wnd.Math.abs(charge);
  }
   else {
    correction -= charge;
  }
  return correction;
}
;
_.getMaxAtoms_0 = function getMaxAtoms(){
  return this.mMaxAtoms;
}
;
_.getMaxBonds_0 = function getMaxBonds(){
  return this.mMaxBonds;
}
;
_.getMaxValence_0 = function getMaxValence(atom){
  var valence;
  valence = this.getMaxValenceUncharged_0(atom);
  return valence + this.getElectronValenceCorrection_0(atom, valence);
}
;
_.getMaxValenceUncharged_0 = function getMaxValenceUncharged(atom){
  var valence;
  valence = this.getAtomAbnormalValence_0(atom);
  if (valence == -1)
    valence = this.getDefaultMaxValenceUncharged_0(atom);
  return valence;
}
;
_.getMaximumBondOrder = function getMaximumBondOrder(bond){
  var atom, i, max_0, maxBondOrder;
  maxBondOrder = this.isTransitionMetalAtom(this.mBondAtom[0][bond]) || this.isTransitionMetalAtom(this.mBondAtom[1][bond])?5:3;
  for (i = 0; i < 2; i++) {
    atom = this.mBondAtom[i][bond];
    max_0 = this.getBondOrder_0(bond) + this.getMaxValence_0(atom) - this.getOccupiedValence_0(atom);
    if (maxBondOrder > max_0)
      maxBondOrder = max_0;
  }
  return maxBondOrder;
}
;
_.getMoleculeColor_0 = function getMoleculeColor(){
  return this.mMoleculeColor;
}
;
_.getName_0 = function getName(){
  return this.mName;
}
;
_.getOccupiedValence_0 = function getOccupiedValence(atom){
  return this.simpleGetValence(atom);
}
;
_.getStereoProblem_0 = function getStereoProblem(atom){
  return (this.mAtomFlags[atom] & 65536) != 0;
}
;
_.incrementBondOrder = function incrementBondOrder(bond){
  var hasMetal, maxBondOrder, startBond;
  maxBondOrder = this.getMaximumBondOrder(bond);
  hasMetal = this.isMetalAtom_0(this.mBondAtom[0][bond]) || this.isMetalAtom_0(this.mBondAtom[1][bond]);
  startBond = hasMetal?32:1;
  if (this.mBondType[bond] == 16) {
    this.mBondType[bond] = startBond;
    this.mValidHelperArrays = 0;
    return true;
  }
  if (this.mBondType[bond] == 8) {
    this.mBondType[bond] = maxBondOrder > 4?16:startBond;
    this.mValidHelperArrays = 0;
    return true;
  }
  if (this.mBondType[bond] == 4) {
    this.mBondType[bond] = maxBondOrder > 3?8:startBond;
    this.mValidHelperArrays = 0;
    return true;
  }
  if (this.mBondType[bond] == 2) {
    this.mBondType[bond] = 386;
    this.mValidHelperArrays &= 7;
    if ((this.mBondFlags[bond] & 128) == 0)
      return true;
  }
  if (this.mBondType[bond] == 386) {
    if (maxBondOrder > 2)
      this.mBondType[bond] = 4;
    else 
      this.mBondType[bond] = startBond;
    this.mValidHelperArrays = 0;
    return true;
  }
  if ((384 & this.mBondType[bond]) != 0) {
    this.mBondType[bond] = 1;
    this.mValidHelperArrays &= 7;
    return true;
  }
  if (!hasMetal && maxBondOrder < 2)
    return false;
  if (this.mBondType[bond] == 1) {
    this.mBondType[bond] = 2;
    this.mValidHelperArrays = 0;
    return true;
  }
  if (maxBondOrder < 1)
    return false;
  if (this.mBondType[bond] == 32) {
    this.mBondType[bond] = 1;
    this.mValidHelperArrays = 0;
    return true;
  }
  return false;
}
;
_.init_1 = function init_1(){
  var i;
  this.mValidHelperArrays = 0;
  this.mAtomicNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomCharge = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomMapNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mCoordinates = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {187:1, 4:1, 1:1, 7:1}, 43, this.mMaxAtoms, 0, 1);
  for (i = 0; i < this.mMaxAtoms; i++)
    this.mCoordinates[i] = new carc2.Coordinates_0;
  this.mAtomMass = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomFlags = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxAtoms, 15, 1);
  this.mAtomQueryFeatures = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, this.mMaxAtoms, 14, 1);
  this.mAtomList = null;
  this.mAtomCustomLabel = null;
  this.mBondAtom = initMultidimensionalArray(cggl.I_classLit, [{35:1, 4:1, 1:1, 7:1}, {6:1, 4:1, 1:1}], [6, 5], 15, [2, this.mMaxBonds], 2);
  this.mBondType = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxBonds, 15, 1);
  this.mBondFlags = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxBonds, 15, 1);
  this.mBondQueryFeatures = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxBonds, 15, 1);
}
;
_.invalidateHelperArrays_0 = function invalidateHelperArrays(helperBits){
  this.mValidHelperArrays &= ~helperBits;
}
;
_.is3D_0 = function is3D_0(){
  var atom;
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (this.mCoordinates[atom].z_0 != 0)
      return true;
  return false;
}
;
_.isAtomConfigurationUnknown_0 = function isAtomConfigurationUnknown(atom){
  return (this.mAtomFlags[atom] & 33554432) != 0;
}
;
_.isAtomMarkedForDeletion_0 = function isAtomMarkedForDeletion(atom){
  return this.mAtomicNo[atom] == -1;
}
;
_.isAtomParityPseudo_0 = function isAtomParityPseudo(atom){
  return (this.mAtomFlags[atom] & 4) != 0;
}
;
_.isAtomStereoCenter_0 = function isAtomStereoCenter(atom){
  return (this.mAtomFlags[atom] & 67108864) != 0;
}
;
_.isAutoMappedAtom_0 = function isAutoMappedAtom(atom){
  return this.mAtomMapNo[atom] < 0;
}
;
_.isBondBackgroundHilited_0 = function isBondBackgroundHilited(bond){
  return (this.mBondFlags[bond] & 32768) != 0;
}
;
_.isBondBridge_0 = function isBondBridge(bond){
  return (this.mBondQueryFeatures[bond] & 130560) != 0;
}
;
_.isBondForegroundHilited_0 = function isBondForegroundHilited(bond){
  return (this.mBondFlags[bond] & 65536) != 0;
}
;
_.isBondMarkedForDeletion_0 = function isBondMarkedForDeletion(bond){
  return this.mBondType[bond] == 512;
}
;
_.isBondParityPseudo_0 = function isBondParityPseudo(bond){
  return (this.mBondFlags[bond] & 4) != 0;
}
;
_.isBondParityUnknownOrNone_0 = function isBondParityUnknownOrNone(bond){
  return (this.mBondFlags[bond] & 131072) != 0;
}
;
_.isDelocalizedBond_0 = function isDelocalizedBond_0(bond){
  return this.mBondType[bond] == 64;
}
;
_.isElectronegative_0 = function isElectronegative(atom){
  var atomicNo, atomicNo$array, atomicNo$index, atomicNo$max;
  if (this.mIsFragment) {
    if (neq(and_0(this.mAtomQueryFeatures[atom], 1), 0))
      return false;
    if (jsNotEquals(this.mAtomList, null) && jsNotEquals(this.mAtomList[atom], null))
      for (atomicNo$array = this.mAtomList[atom] , atomicNo$index = 0 , atomicNo$max = atomicNo$array.length; atomicNo$index < atomicNo$max; ++atomicNo$index) {
        atomicNo = atomicNo$array[atomicNo$index];
        if (!carc2.isAtomicNoElectronegative(atomicNo))
          return false;
      }
  }
  return carc2.isAtomicNoElectronegative(this.mAtomicNo[atom]);
}
;
_.isElectropositive_0 = function isElectropositive(atom){
  var atomicNo, atomicNo$array, atomicNo$index, atomicNo$max;
  if (this.mIsFragment) {
    if (neq(and_0(this.mAtomQueryFeatures[atom], 1), 0))
      return false;
    if (jsNotEquals(this.mAtomList, null) && jsNotEquals(this.mAtomList[atom], null))
      for (atomicNo$array = this.mAtomList[atom] , atomicNo$index = 0 , atomicNo$max = atomicNo$array.length; atomicNo$index < atomicNo$max; ++atomicNo$index) {
        atomicNo = atomicNo$array[atomicNo$index];
        if (!carc2.isAtomicNoElectropositive(atomicNo))
          return false;
      }
  }
  return carc2.isAtomicNoElectropositive(this.mAtomicNo[atom]);
}
;
_.isFragment_0 = function isFragment_0(){
  return this.mIsFragment;
}
;
_.isMarkedAtom_0 = function isMarkedAtom(atom){
  return (this.mAtomFlags[atom] & 131072) != 0;
}
;
_.isMetalAtom_0 = function isMetalAtom(atom){
  var atomicNo, atomicNo$array, atomicNo$index, atomicNo$max;
  if (this.mIsFragment) {
    if (neq(and_0(this.mAtomQueryFeatures[atom], 1), 0))
      return false;
    if (jsNotEquals(this.mAtomList, null) && jsNotEquals(this.mAtomList[atom], null))
      for (atomicNo$array = this.mAtomList[atom] , atomicNo$index = 0 , atomicNo$max = atomicNo$array.length; atomicNo$index < atomicNo$max; ++atomicNo$index) {
        atomicNo = atomicNo$array[atomicNo$index];
        if (!carc2.isAtomicNoMetal(atomicNo))
          return false;
      }
  }
  return carc2.isAtomicNoMetal(this.mAtomicNo[atom]);
}
;
_.isNaturalAbundance_0 = function isNaturalAbundance(atom){
  return this.mAtomMass[atom] == 0;
}
;
_.isOrganicAtom_0 = function isOrganicAtom(atom){
  var atomicNo, atomicNo$array, atomicNo$index, atomicNo$max;
  if (this.mIsFragment) {
    if (neq(and_0(this.mAtomQueryFeatures[atom], 1), 0))
      return false;
    if (jsNotEquals(this.mAtomList, null) && jsNotEquals(this.mAtomList[atom], null))
      for (atomicNo$array = this.mAtomList[atom] , atomicNo$index = 0 , atomicNo$max = atomicNo$array.length; atomicNo$index < atomicNo$max; ++atomicNo$index) {
        atomicNo = atomicNo$array[atomicNo$index];
        if (!carc2.isAtomicNoOrganic(atomicNo))
          return false;
      }
  }
  return carc2.isAtomicNoOrganic(this.mAtomicNo[atom]);
}
;
_.isPurelyOrganic_0 = function isPurelyOrganic(){
  var atom;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    switch (this.mAtomicNo[atom]) {
      case 1:
      case 5:
      case 6:
      case 7:
      case 8:
      case 9:
      case 14:
      case 15:
      case 16:
      case 17:
      case 33:
      case 34:
      case 35:
      case 52:
      case 53:
        continue;
      default:return false;
    }
  }
  return true;
}
;
_.isSelectedAtom_0 = function isSelectedAtom(atom){
  return (this.mAtomFlags[atom] & 512) != 0;
}
;
_.isSelectedBond_0 = function isSelectedBond(bond){
  return (this.mAtomFlags[this.mBondAtom[0][bond]] & this.mAtomFlags[this.mBondAtom[1][bond]] & 512) != 0;
}
;
_.isStereoBond_0 = function isStereoBond(bond){
  return this.mBondType[bond] == 257 || this.mBondType[bond] == 129;
}
;
_.isStereoBond_1 = function isStereoBond_0(bond, atom){
  return (this.mBondType[bond] == 257 || this.mBondType[bond] == 129) && this.mBondAtom[0][bond] == atom;
}
;
_.isTransitionMetalAtom = function isTransitionMetalAtom(atom){
  var atomicNo, atomicNo$array, atomicNo$index, atomicNo$max;
  if (this.mIsFragment) {
    if (neq(and_0(this.mAtomQueryFeatures[atom], 1), 0))
      return false;
    if (jsNotEquals(this.mAtomList, null) && jsNotEquals(this.mAtomList[atom], null))
      for (atomicNo$array = this.mAtomList[atom] , atomicNo$index = 0 , atomicNo$max = atomicNo$array.length; atomicNo$index < atomicNo$max; ++atomicNo$index) {
        atomicNo = atomicNo$array[atomicNo$index];
        if (!carc2.isAtomicNoTransitionMetal(atomicNo))
          return false;
      }
  }
  return carc2.isAtomicNoTransitionMetal(this.mAtomicNo[atom]);
}
;
_.markAtomForDeletion_0 = function markAtomForDeletion(atom){
  this.mAtomicNo[atom] = -1;
}
;
_.markBondForDeletion_0 = function markBondForDeletion(bond){
  this.mBondType[bond] = 512;
}
;
_.polygon_0 = function polygon_0(atom, bonds, endAtm, aromatic, actlAngle, angleChange, bondLength){
  var actlAtm, bnd, dblBnd, i, newx, newy, remoteAtm, step, xdiff, ydiff;
  if (atom != endAtm) {
    xdiff = this.mCoordinates[atom].x_0 - this.mCoordinates[endAtm].x_0;
    ydiff = this.mCoordinates[atom].y_0 - this.mCoordinates[endAtm].y_0;
    bondLength = $wnd.Math.sqrt(xdiff * xdiff + ydiff * ydiff);
  }
  actlAtm = atom;
  dblBnd = !(this.simpleGetValence(atom) == 3);
  for (step = 1; step < bonds; step++) {
    newx = this.mCoordinates[actlAtm].x_0 + bondLength * $wnd.Math.sin(actlAngle);
    newy = this.mCoordinates[actlAtm].y_0 + bondLength * $wnd.Math.cos(actlAngle);
    remoteAtm = -1;
    for (i = 0; i < this.mAllAtoms; i++) {
      if ($wnd.Math.abs(newx - this.mCoordinates[i].x_0) < 4 && $wnd.Math.abs(newy - this.mCoordinates[i].y_0) < 4) {
        remoteAtm = i;
        break;
      }
    }
    if (remoteAtm == -1) {
      remoteAtm = this.addAtom_0(newx, newy);
      this.mCoordinates[remoteAtm].x_0 = newx;
      this.mCoordinates[remoteAtm].y_0 = newy;
      this.mCoordinates[remoteAtm].z_0 = 0;
    }
    bnd = this.getBondNo(actlAtm, remoteAtm);
    if (bnd == -1) {
      bnd = this.addBond_1(actlAtm, remoteAtm, this.suggestBondType_0(actlAtm, remoteAtm));
      if (aromatic) {
        if (dblBnd) {
          if (this.simpleGetValence(this.mBondAtom[0][bnd]) < 4 && this.simpleGetValence(this.mBondAtom[1][bnd]) < 3)
            this.mBondType[bnd] = 2;
        }
        dblBnd = !dblBnd;
      }
    }
    actlAtm = remoteAtm;
    actlAngle += angleChange;
  }
  bnd = this.getBondNo(actlAtm, endAtm);
  if (bnd == -1)
    bnd = this.addBond_1(actlAtm, endAtm, this.suggestBondType_0(actlAtm, endAtm));
  if (aromatic)
    if (dblBnd)
      if (this.simpleGetValence(this.mBondAtom[0][bnd]) < 4 && this.simpleGetValence(this.mBondAtom[1][bnd]) < 4)
        this.mBondType[bnd] = 2;
}
;
_.qualifiesAsStereoBond = function qualifiesAsStereoBond(bond, atom){
  var i, i0;
  if (this.getBondOrder_0(bond) != 1)
    return false;
  if ((this.mAtomFlags[atom] & 3) != 0)
    return true;
  for (i0 = 0; i0 < this.mAllBonds; i0++)
    if (i0 != bond && this.mBondType[i0] == 2 && (this.mBondAtom[0][i0] == atom && (this.mAtomFlags[this.mBondAtom[1][i0]] & 3) != 0 || this.mBondAtom[1][i0] == atom && (this.mAtomFlags[this.mBondAtom[0][i0]] & 3) != 0))
      return true;
  for (i = 0; i < this.mAllBonds; i++)
    if (i != bond && this.mBondType[i] == 1 && (this.mBondAtom[0][i] == atom || this.mBondAtom[1][i] == atom) && (this.mBondFlags[i] & 3) != 0)
      return true;
  return false;
}
;
_.removeAtomColors_0 = function removeAtomColors(){
  var i;
  for (i = 0; i < this.mAllAtoms; i++)
    this.mAtomFlags[i] &= ~448;
}
;
_.removeAtomCustomLabels_0 = function removeAtomCustomLabels(){
  this.mAtomCustomLabel = null;
}
;
_.removeAtomMarkers_0 = function removeAtomMarkers(){
  var i;
  for (i = 0; i < this.mAllAtoms; i++)
    this.mAtomFlags[i] &= ~131072;
}
;
_.removeAtomSelection_0 = function removeAtomSelection(){
  var i;
  for (i = 0; i < this.mAllAtoms; i++)
    this.mAtomFlags[i] &= ~512;
}
;
_.removeBondHiliting_0 = function removeBondHiliting(){
  var i;
  for (i = 0; i < this.mAllBonds; i++)
    this.mBondFlags[i] &= ~(32768 | 65536);
}
;
_.removeMappingNo = function removeMappingNo(mapNo){
  var atom;
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if ($wnd.Math.abs(this.mAtomMapNo[atom]) == $wnd.Math.abs(mapNo))
      this.mAtomMapNo[atom] = 0;
}
;
_.removeQueryFeatures_0 = function removeQueryFeatures(){
  var atom, atom0, bond, isChanged;
  isChanged = false;
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    if (neq(and_0(this.mAtomQueryFeatures[atom0], 536870912), 0)) {
      this.markAtomForDeletion_0(atom0);
      isChanged = true;
    }
  }
  if (isChanged)
    this.deleteMarkedAtomsAndBonds_0();
  if (jsNotEquals(this.mAtomList, null)) {
    this.mAtomList = null;
    isChanged = true;
  }
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (neq(this.mAtomQueryFeatures[atom], 0)) {
      this.mAtomQueryFeatures[atom] = 0;
      isChanged = true;
    }
  }
  for (bond = 0; bond < this.mAllBonds; bond++) {
    if (this.mBondQueryFeatures[bond] != 0) {
      this.mBondQueryFeatures[bond] = 0;
      isChanged = true;
    }
    if (this.mBondType[bond] == 64) {
      this.mBondType[bond] = 1;
      isChanged = true;
    }
  }
  if (isChanged)
    this.mValidHelperArrays = 0;
  return isChanged;
}
;
_.renumberESRGroups_0 = function renumberESRGroups(type_0){
  var atom, atom0, bond, bond0, group, groupUsed, i, newGroup, newIndex;
  if (type_0 == 0)
    return 0;
  groupUsed = null;
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    if (this.getAtomESRType_0(atom0) == type_0) {
      if (jsEquals(groupUsed, null))
        groupUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, 32, 16, 1);
      groupUsed[this.getAtomESRGroup_0(atom0)] = true;
    }
  }
  for (bond0 = 0; bond0 < this.mAllBonds; bond0++) {
    if (this.getBondESRType_0(bond0) == type_0) {
      if (jsEquals(groupUsed, null))
        groupUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, 32, 16, 1);
      groupUsed[this.getBondESRGroup_0(bond0)] = true;
    }
  }
  newIndex = 0;
  if (jsNotEquals(groupUsed, null)) {
    newGroup = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 32, 15, 1);
    for (i = 0; i < 32; i++)
      if (groupUsed[i])
        newGroup[i] = newIndex++;
    for (atom = 0; atom < this.mAllAtoms; atom++) {
      if (this.getAtomESRType_0(atom) == type_0) {
        group = newGroup[this.getAtomESRGroup_0(atom)];
        this.mAtomFlags[atom] &= ~32505856;
        this.mAtomFlags[atom] |= group << 20;
      }
    }
    for (bond = 0; bond < this.mAllBonds; bond++) {
      if (this.getBondESRType_0(bond) == type_0) {
        group = newGroup[this.getBondESRGroup_0(bond)];
        this.mBondFlags[bond] &= ~31744;
        this.mBondFlags[bond] |= group << 10;
      }
    }
  }
  return newIndex;
}
;
_.scaleCoords_0 = function scaleCoords(f){
  var i;
  for (i = 0; i < this.mAllAtoms; i++) {
    this.mCoordinates[i].x_0 *= f;
    this.mCoordinates[i].y_0 *= f;
  }
}
;
_.setAllAtoms_0 = function setAllAtoms(no){
  this.mAllAtoms = no;
  this.mValidHelperArrays = 0;
}
;
_.setAllBonds_0 = function setAllBonds(no){
  this.mAllBonds = no;
  this.mValidHelperArrays = 0;
}
;
_.setAtomAbnormalValence_0 = function setAtomAbnormalValence(atom, valence){
  if (valence >= -1 && valence <= 14) {
    this.mAtomFlags[atom] &= ~2013265920;
    this.mAtomFlags[atom] |= 1 + valence << 27;
    if (this.mAtomicNo[atom] == 6) {
      if (valence == -1 || valence == 0 || valence == 2 || valence == 4) {
        this.mAtomFlags[atom] &= ~48;
        if (valence == 2)
          this.mAtomFlags[atom] |= 16;
      }
    }
  }
}
;
_.setAtomCIPParity_0 = function setAtomCIPParity(atom, parity){
  this.mAtomFlags[atom] &= ~49152;
  this.mAtomFlags[atom] |= parity << 14;
}
;
_.setAtomCharge_0 = function setAtomCharge(atom, charge){
  this.mAtomCharge[atom] = charge;
  this.mValidHelperArrays = 0;
}
;
_.setAtomColor_0 = function setAtomColor(atom, color_0){
  this.mAtomFlags[atom] &= ~448;
  this.mAtomFlags[atom] |= color_0;
}
;
_.setAtomConfigurationUnknown_0 = function setAtomConfigurationUnknown(atom, u){
  if (u)
    this.mAtomFlags[atom] |= 33554432;
  else 
    this.mAtomFlags[atom] &= ~33554432;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomCustomLabel_0 = function setAtomCustomLabel(atom, label_0){
  var atomicNo;
  if (jsNotEquals(label_0, null)) {
    if (jl.length__I__devirtual$_0(label_0) == 0)
      label_0 = null;
    else {
      atomicNo = carc2.getAtomicNoFromLabel(label_0);
      if (atomicNo != 0 && jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, carc2.cAtomLabel[atomicNo]) || jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, '?')) {
        this.setAtomicNo_0(atom, atomicNo);
        label_0 = null;
      }
    }
  }
  if (jsEquals(label_0, null)) {
    if (jsNotEquals(this.mAtomCustomLabel, null))
      this.mAtomCustomLabel[atom] = null;
  }
   else {
    if (jsEquals(this.mAtomCustomLabel, null))
      this.mAtomCustomLabel = initUnidimensionalArray(cggl.B_classLit, {4:1, 1:1, 7:1}, 8, this.mMaxAtoms, 0, 2);
    this.mAtomCustomLabel[atom] = jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(label_0, (jnc.$clinit_StandardCharsets() , jnc.UTF_8));
  }
}
;
_.setAtomCustomLabel_1 = function setAtomCustomLabel_0(atom, label_0){
  if (jsNotEquals(label_0, null) && label_0.length == 0)
    label_0 = null;
  if (jsEquals(label_0, null)) {
    if (jsNotEquals(this.mAtomCustomLabel, null))
      this.mAtomCustomLabel[atom] = null;
  }
   else {
    if (jsEquals(this.mAtomCustomLabel, null))
      this.mAtomCustomLabel = initUnidimensionalArray(cggl.B_classLit, {4:1, 1:1, 7:1}, 8, this.mMaxAtoms, 0, 2);
    this.mAtomCustomLabel[atom] = label_0;
  }
}
;
_.setAtomESR_0 = function setAtomESR(atom, type_0, group){
  var i, i0, maxGroup;
  if (type_0 == 0) {
    this.mAtomFlags[atom] &= ~33292288;
    this.mAtomFlags[atom] |= type_0 << 18;
  }
   else {
    if (group >= 32)
      return;
    if (group == -1) {
      maxGroup = -1;
      for (i0 = 0; i0 < this.mAllAtoms; i0++)
        if (i0 != atom && type_0 == this.getAtomESRType_0(i0) && maxGroup < this.getAtomESRGroup_0(i0))
          maxGroup = this.getAtomESRGroup_0(i0);
      for (i = 0; i < this.mAllBonds; i++)
        if (type_0 == this.getBondESRType_0(i) && maxGroup < this.getBondESRGroup_0(i))
          maxGroup = this.getBondESRGroup_0(i);
      group = maxGroup + 1;
      if (group >= 32)
        return;
    }
    this.mAtomFlags[atom] &= ~33292288;
    this.mAtomFlags[atom] |= type_0 << 18 | group << 20;
  }
  this.mValidHelperArrays &= 7;
}
;
_.setAtomList_0 = function setAtomList(atom, list){
  if (jsEquals(this.mAtomList, null))
    this.mAtomList = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mMaxAtoms, 0, 2);
  if (jsNotEquals(list, null))
    ju.sort_3(list);
  this.mAtomList[atom] = list;
  this.mValidHelperArrays = 0;
  this.mIsFragment = true;
}
;
_.setAtomList_1 = function setAtomList_0(atom, list, isExcludeList){
  var atomicNo;
  if (jsEquals(list, null)) {
    if (jsNotEquals(this.mAtomList, null))
      this.mAtomList[atom] = null;
    return;
  }
  if (list.length == 1 && !isExcludeList) {
    atomicNo = list[0];
    if (this.mAtomicNo[atom] != atomicNo)
      this.changeAtom_0(atom, atomicNo, 0, -1, 0);
    if (jsNotEquals(this.mAtomList, null))
      this.mAtomList[atom] = null;
    return;
  }
  if (jsEquals(this.mAtomList, null))
    this.mAtomList = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mMaxAtoms, 0, 2);
  this.mAtomList[atom] = list;
  if (isExcludeList)
    this.mAtomQueryFeatures[atom] = or_0(this.mAtomQueryFeatures[atom], 1);
  this.mValidHelperArrays = 0;
  this.mIsFragment = true;
}
;
_.setAtomMapNo_0 = function setAtomMapNo(atom, mapNo, autoMapped){
  this.mAtomMapNo[atom] = autoMapped?-mapNo:mapNo;
}
;
_.setAtomMarker_0 = function setAtomMarker(atom, s){
  if (s)
    this.mAtomFlags[atom] |= 131072;
  else 
    this.mAtomFlags[atom] &= ~131072;
}
;
_.setAtomMass_0 = function setAtomMass(atom, mass){
  this.mAtomMass[atom] = mass;
  this.mValidHelperArrays &= this.mAtomicNo[atom] == 1?0:7;
}
;
_.setAtomParity_0 = function setAtomParity(atom, parity, isPseudo){
  this.mAtomFlags[atom] &= ~(3 | 4);
  if (parity != 3)
    this.mAtomFlags[atom] &= ~33554432;
  this.mAtomFlags[atom] |= parity;
  if (isPseudo)
    this.mAtomFlags[atom] |= 4;
}
;
_.setAtomQueryFeature = function setAtomQueryFeature(atom, feature, value_0){
  if (value_0)
    this.mAtomQueryFeatures[atom] = or_0(this.mAtomQueryFeatures[atom], feature);
  else 
    this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(feature));
  this.mValidHelperArrays = 0;
  this.mIsFragment = true;
}
;
_.setAtomRadical_0 = function setAtomRadical(atom, radical){
  this.mAtomFlags[atom] &= ~48;
  this.mAtomFlags[atom] |= radical;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomSelection_0 = function setAtomSelection(atom, s){
  if (s)
    this.mAtomFlags[atom] |= 512;
  else 
    this.mAtomFlags[atom] &= ~512;
}
;
_.setAtomStereoCenter = function setAtomStereoCenter(atom, isStereoCenter){
  this.mAtomFlags[atom] &= ~67108864;
  if (isStereoCenter)
    this.mAtomFlags[atom] |= 67108864;
}
;
_.setAtomX_0 = function setAtomX(atom, x_0){
  this.mCoordinates[atom].x_0 = x_0;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomY_0 = function setAtomY(atom, y_0){
  this.mCoordinates[atom].y_0 = y_0;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomZ_0 = function setAtomZ(atom, z_0){
  this.mCoordinates[atom].z_0 = z_0;
  this.mValidHelperArrays &= 7;
}
;
_.setAtomicNo_0 = function setAtomicNo(atom, no){
  if (no >= 0 && no <= 190) {
    if (no == 151 || no == 152) {
      this.mAtomicNo[atom] = 1;
      this.mAtomMass[atom] = no - 149;
    }
     else {
      this.mAtomicNo[atom] = no;
      this.mAtomMass[atom] = 0;
    }
    this.mAtomFlags[atom] &= ~2013265920;
    this.mValidHelperArrays = 0;
  }
}
;
_.setBondAtom_0 = function setBondAtom(no, bond, atom){
  this.mBondAtom[no][bond] = atom;
  this.mValidHelperArrays = 0;
}
;
_.setBondBackgroundHiliting_0 = function setBondBackgroundHiliting(bond, s){
  if (s)
    this.mBondFlags[bond] |= 32768;
  else 
    this.mBondFlags[bond] &= ~32768;
}
;
_.setBondCIPParity_0 = function setBondCIPParity(bond, parity){
  this.mBondFlags[bond] &= ~48;
  this.mBondFlags[bond] |= parity << 4;
}
;
_.setBondESR_0 = function setBondESR(bond, type_0, group){
  var i, i0, maxGroup;
  if (type_0 == 0) {
    this.mBondFlags[bond] &= ~32512;
    this.mBondFlags[bond] |= type_0 << 8;
  }
   else {
    if (group >= 32)
      return;
    if (group == -1) {
      maxGroup = -1;
      for (i0 = 0; i0 < this.mAllAtoms; i0++)
        if (type_0 == this.getAtomESRType_0(i0) && maxGroup < this.getAtomESRGroup_0(i0))
          maxGroup = this.getAtomESRGroup_0(i0);
      for (i = 0; i < this.mAllBonds; i++)
        if (i != bond && type_0 == this.getBondESRType_0(i) && maxGroup < this.getBondESRGroup_0(i))
          maxGroup = this.getBondESRGroup_0(i);
      group = maxGroup + 1;
      if (group >= 32)
        return;
    }
    this.mBondFlags[bond] &= ~32512;
    this.mBondFlags[bond] |= type_0 << 8 | group << 10;
  }
  this.mValidHelperArrays &= 7;
}
;
_.setBondForegroundHiliting_0 = function setBondForegroundHiliting(bond, s){
  if (s)
    this.mBondFlags[bond] |= 65536;
  else 
    this.mBondFlags[bond] &= ~65536;
}
;
_.setBondOrder_0 = function setBondOrder(bond, order){
  this.mBondType[bond] = order == 1?1:order == 2?2:order == 3?4:32;
  this.mValidHelperArrays = 0;
}
;
_.setBondParity_0 = function setBondParity(bond, parity, isPseudo){
  this.mBondFlags[bond] &= ~(3 | 4 | 131072);
  this.mBondFlags[bond] |= parity;
  if (isPseudo)
    this.mBondFlags[bond] |= 4;
}
;
_.setBondParityUnknownOrNone_0 = function setBondParityUnknownOrNone(bond){
  this.mBondFlags[bond] |= 131072;
}
;
_.setBondQueryFeature_0 = function setBondQueryFeature(bond, feature, value_0){
  if (value_0)
    this.mBondQueryFeatures[bond] |= feature;
  else 
    this.mBondQueryFeatures[bond] &= ~feature;
  this.mValidHelperArrays = 0;
  this.mIsFragment = true;
}
;
_.setBondType_0 = function setBondType(bond, type_0){
  this.mBondType[bond] = type_0;
  this.mValidHelperArrays = 0;
}
;
_.setChirality_0 = function setChirality(c){
  this.mChirality = c;
}
;
_.setFragment_0 = function setFragment(isFragment){
  if (this.mIsFragment != isFragment) {
    this.mIsFragment = isFragment;
    if (!isFragment)
      this.removeQueryFeatures_0();
    this.mValidHelperArrays = 0;
  }
}
;
_.setHelperValidity_0 = function setHelperValidity(helperValidity){
  this.mValidHelperArrays = helperValidity;
}
;
_.setHydrogenProtection_0 = function setHydrogenProtection(protectHydrogen){
  this.mProtectHydrogen = protectHydrogen;
}
;
_.setMaxAtoms_0 = function setMaxAtoms(v){
  var i, orig;
  this.mAtomicNo = carc2.copyOf(this.mAtomicNo, v);
  this.mAtomCharge = carc2.copyOf(this.mAtomCharge, v);
  this.mAtomMapNo = carc2.copyOf(this.mAtomMapNo, v);
  orig = this.mCoordinates.length;
  this.mCoordinates = carc2.copyOf_1(this.mCoordinates, v);
  for (i = orig; i < v; i++)
    this.mCoordinates[i] = new carc2.Coordinates_0;
  this.mAtomMass = carc2.copyOf(this.mAtomMass, v);
  this.mAtomFlags = carc2.copyOf(this.mAtomFlags, v);
  this.mAtomQueryFeatures = carc2.copyOf_0(this.mAtomQueryFeatures, v);
  if (jsNotEquals(this.mAtomList, null))
    this.mAtomList = carc2.copyOf_3(this.mAtomList, v);
  if (jsNotEquals(this.mAtomCustomLabel, null))
    this.mAtomCustomLabel = carc2.copyOf_2(this.mAtomCustomLabel, v);
  this.mMaxAtoms = v;
}
;
_.setMaxBonds_0 = function setMaxBonds(v){
  this.mBondAtom[0] = carc2.copyOf(this.mBondAtom[0], v);
  this.mBondAtom[1] = carc2.copyOf(this.mBondAtom[1], v);
  this.mBondType = carc2.copyOf(this.mBondType, v);
  this.mBondFlags = carc2.copyOf(this.mBondFlags, v);
  this.mBondQueryFeatures = carc2.copyOf(this.mBondQueryFeatures, v);
  this.mMaxBonds = v;
}
;
_.setMoleculeColor_0 = function setMoleculeColor(color_0){
  this.mMoleculeColor = color_0;
}
;
_.setName_0 = function setName(name_0){
  this.mName = name_0;
}
;
_.setStereoProblem = function setStereoProblem(atom){
  this.mAtomFlags[atom] |= 65536;
}
;
_.setToRacemate_0 = function setToRacemate(){
  this.mIsRacemate = true;
}
;
_.simpleGetValence = function simpleGetValence(atom){
  var bnd, val;
  val = 0;
  for (bnd = 0; bnd < this.mAllBonds; bnd++)
    if (this.mBondAtom[0][bnd] == atom || this.mBondAtom[1][bnd] == atom)
      val += this.getBondOrder_0(bnd);
  return val;
}
;
_.stripIsotopInfo_0 = function stripIsotopInfo(){
  var atom, found, hydrogenIsotopFound;
  found = false;
  hydrogenIsotopFound = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (this.mAtomMass[atom] != 0) {
      this.mAtomMass[atom] = 0;
      found = true;
      if (this.mAtomicNo[atom] == 1)
        hydrogenIsotopFound = true;
    }
  }
  if (hydrogenIsotopFound)
    this.mValidHelperArrays = 0;
  return found;
}
;
_.suggestBondType_0 = function suggestBondType(atom1, atom2){
  return this.isMetalAtom_0(atom1) || this.isMetalAtom_0(atom2)?32:1;
}
;
_.swapAtoms_0 = function swapAtoms(atom1, atom2){
  var bond, i, tempCoords, tempInt, tempList, tempLong;
  tempInt = this.mAtomicNo[atom1];
  this.mAtomicNo[atom1] = this.mAtomicNo[atom2];
  this.mAtomicNo[atom2] = tempInt;
  tempInt = this.mAtomCharge[atom1];
  this.mAtomCharge[atom1] = this.mAtomCharge[atom2];
  this.mAtomCharge[atom2] = tempInt;
  tempInt = this.mAtomMass[atom1];
  this.mAtomMass[atom1] = this.mAtomMass[atom2];
  this.mAtomMass[atom2] = tempInt;
  tempInt = this.mAtomFlags[atom1];
  this.mAtomFlags[atom1] = this.mAtomFlags[atom2];
  this.mAtomFlags[atom2] = tempInt;
  tempLong = this.mAtomQueryFeatures[atom1];
  this.mAtomQueryFeatures[atom1] = this.mAtomQueryFeatures[atom2];
  this.mAtomQueryFeatures[atom2] = tempLong;
  tempInt = this.mAtomMapNo[atom1];
  this.mAtomMapNo[atom1] = this.mAtomMapNo[atom2];
  this.mAtomMapNo[atom2] = tempInt;
  tempCoords = this.mCoordinates[atom1];
  this.mCoordinates[atom1] = this.mCoordinates[atom2];
  this.mCoordinates[atom2] = tempCoords;
  if (jsNotEquals(this.mAtomList, null)) {
    tempList = this.mAtomList[atom1];
    this.mAtomList[atom1] = this.mAtomList[atom2];
    this.mAtomList[atom2] = tempList;
  }
  if (jsNotEquals(this.mAtomCustomLabel, null)) {
    tempList = this.mAtomCustomLabel[atom1];
    this.mAtomCustomLabel[atom1] = this.mAtomCustomLabel[atom2];
    this.mAtomCustomLabel[atom2] = tempList;
  }
  for (bond = 0; bond < this.mAllBonds; bond++) {
    for (i = 0; i < 2; i++) {
      if (this.mBondAtom[i][bond] == atom1)
        this.mBondAtom[i][bond] = atom2;
      else if (this.mBondAtom[i][bond] == atom2)
        this.mBondAtom[i][bond] = atom1;
    }
  }
  this.mValidHelperArrays = 0;
}
;
_.swapBonds_0 = function swapBonds(bond1, bond2){
  var temp;
  temp = this.mBondAtom[0][bond1];
  this.mBondAtom[0][bond1] = this.mBondAtom[0][bond2];
  this.mBondAtom[0][bond2] = temp;
  temp = this.mBondAtom[1][bond1];
  this.mBondAtom[1][bond1] = this.mBondAtom[1][bond2];
  this.mBondAtom[1][bond2] = temp;
  temp = this.mBondType[bond1];
  this.mBondType[bond1] = this.mBondType[bond2];
  this.mBondType[bond2] = temp;
  temp = this.mBondFlags[bond1];
  this.mBondFlags[bond1] = this.mBondFlags[bond2];
  this.mBondFlags[bond2] = temp;
  temp = this.mBondQueryFeatures[bond1];
  this.mBondQueryFeatures[bond1] = this.mBondQueryFeatures[bond2];
  this.mBondQueryFeatures[bond2] = temp;
  this.mValidHelperArrays = 0;
}
;
_.translateCoords_0 = function translateCoords(dx, dy){
  var i;
  for (i = 0; i < this.mAllAtoms; i++) {
    this.mCoordinates[i].x_0 += dx;
    this.mCoordinates[i].y_0 += dy;
  }
  this.mZoomRotationX += dx;
  this.mZoomRotationY += dy;
}
;
_.validateBondType = function validateBondType(bond, type_0){
  var maxBondOrder, simpleType;
  simpleType = type_0 & 127;
  maxBondOrder = this.getMaximumBondOrder(bond);
  switch (simpleType) {
    case 1:
    case 64:
      return maxBondOrder >= 1;
    case 2:
      return maxBondOrder >= 2;
    case 4:
      return maxBondOrder >= 3;
    case 8:
      return maxBondOrder >= 4;
    case 16:
      return maxBondOrder >= 5;
    case 32:
      return true;
    default:return false;
  }
}
;
_.zoomAndRotate_0 = function zoomAndRotate(zoom, angle, selected){
  var atom, newAngle, newDistance;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (!selected || this.isSelectedAtom_0(atom)) {
      newDistance = this.mOriginalDistance[atom] * zoom;
      newAngle = this.mOriginalAngle[atom] - angle;
      this.mCoordinates[atom].x_0 = this.mZoomRotationX + newDistance * $wnd.Math.sin(newAngle);
      this.mCoordinates[atom].y_0 = this.mZoomRotationY + newDistance * $wnd.Math.cos(newAngle);
    }
  }
  if (selected)
    this.mValidHelperArrays &= 7;
}
;
_.zoomAndRotateInit_0 = function zoomAndRotateInit_0(x_0, y_0){
  var atom, dx, dy;
  this.mZoomRotationX = x_0;
  this.mZoomRotationY = y_0;
  this.mOriginalAngle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  this.mOriginalDistance = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    dx = x_0 - this.mCoordinates[atom].x_0;
    dy = y_0 - this.mCoordinates[atom].y_0;
    this.mOriginalDistance[atom] = $wnd.Math.sqrt(dx * dx + dy * dy);
    this.mOriginalAngle[atom] = carc2.getAngle_0(x_0, y_0, this.mCoordinates[atom].x_0, this.mCoordinates[atom].y_0);
  }
}
;
_.mAllAtoms = 0;
_.mAllBonds = 0;
_.mChirality = 0;
_.mIsFragment = false;
_.mIsRacemate = false;
_.mMaxAtoms = 0;
_.mMaxBonds = 0;
_.mMoleculeColor = 0;
_.mProtectHydrogen = false;
_.mValidHelperArrays = 0;
_.mZoomRotationX = 0;
_.mZoomRotationY = 0;
carc2.cAtomCIPParityNone = 0;
carc2.cAtomCIPParityProblem = 3;
carc2.cAtomCIPParityRorM = 1;
carc2.cAtomCIPParitySorP = 2;
carc2.cAtomColorBlue = 64;
carc2.cAtomColorDarkGreen = 384;
carc2.cAtomColorDarkRed = 448;
carc2.cAtomColorGreen = 192;
carc2.cAtomColorMagenta = 256;
carc2.cAtomColorNone = 0;
carc2.cAtomColorOrange = 320;
carc2.cAtomColorRed = 128;
carc2.cAtomFlagAllylic = 4096;
carc2.cAtomFlagConfigurationUnknown = 33554432;
carc2.cAtomFlagIsStereoCenter = 67108864;
carc2.cAtomFlagMarked = 131072;
carc2.cAtomFlagSelected = 512;
carc2.cAtomFlagSmallRing = 8;
carc2.cAtomFlagStabilized = 8192;
carc2.cAtomFlagStereoProblem = 65536;
carc2.cAtomFlags2RingBonds = 1024;
carc2.cAtomFlags3RingBonds = 2048;
carc2.cAtomFlags4RingBonds = 3072;
carc2.cAtomFlagsCIPParity = 49152;
carc2.cAtomFlagsCIPParityShift = 14;
carc2.cAtomFlagsColor = 448;
carc2.cAtomFlagsESR = 33292288;
carc2.cAtomFlagsESRGroup = 32505856;
carc2.cAtomFlagsESRGroupShift = 20;
carc2.cAtomFlagsESRType = 786432;
carc2.cAtomFlagsESRTypeShift = 18;
carc2.cAtomFlagsHelper = 0;
carc2.cAtomFlagsHelper2 = 15368;
carc2.cAtomFlagsHelper3 = 67223559;
carc2.cAtomFlagsParity = 3;
carc2.cAtomFlagsRingBonds = 3072;
carc2.cAtomFlagsValence = 2013265920;
carc2.cAtomFlagsValenceShift = 27;
carc2.cAtomParity1 = 1;
carc2.cAtomParity2 = 2;
carc2.cAtomParityIsPseudo = 4;
carc2.cAtomParityNone = 0;
carc2.cAtomParityUnknown = 3;
carc2.cAtomQFAny = 1;
carc2.cAtomQFAromState = {l:6, m:0, h:4};
carc2.cAtomQFAromStateBits = 2;
carc2.cAtomQFAromStateShift = 1;
carc2.cAtomQFAromatic = 2;
carc2.cAtomQFCharge = 234881024;
carc2.cAtomQFChargeBits = 3;
carc2.cAtomQFChargeShift = 25;
carc2.cAtomQFENeighbourBits = 5;
carc2.cAtomQFENeighbourShift = 39;
carc2.cAtomQFENeighbours = 17042430230528;
carc2.cAtomQFExcludeGroup = 536870912;
carc2.cAtomQFFlatNitrogen = 268435456;
carc2.cAtomQFHeteroAromatic = {l:0, m:0, h:4};
carc2.cAtomQFHydrogen = 1920;
carc2.cAtomQFHydrogenBits = 4;
carc2.cAtomQFHydrogenShift = 7;
carc2.cAtomQFIsNotStereo = {l:0, m:0, h:2};
carc2.cAtomQFIsStereo = {l:0, m:0, h:1};
carc2.cAtomQFMatchStereo = 8192;
carc2.cAtomQFMoreNeighbours = 4096;
carc2.cAtomQFNarrowing = {l:4194302, m:4193343, h:7};
carc2.cAtomQFNeighbourBits = 5;
carc2.cAtomQFNeighbourShift = 17;
carc2.cAtomQFNeighbours = 4063232;
carc2.cAtomQFNewRingSize = 545460846592;
carc2.cAtomQFNewRingSizeBits = 7;
carc2.cAtomQFNewRingSizeShift = 32;
carc2.cAtomQFNoMoreNeighbours = 2048;
carc2.cAtomQFNoOfBits = 46;
carc2.cAtomQFNot0ENeighbours = 549755813888;
carc2.cAtomQFNot0Hydrogen = 128;
carc2.cAtomQFNot0Neighbours = 131072;
carc2.cAtomQFNot0PiElectrons = 16384;
carc2.cAtomQFNot1ENeighbour = 1099511627776;
carc2.cAtomQFNot1Hydrogen = 256;
carc2.cAtomQFNot1Neighbour = 262144;
carc2.cAtomQFNot1PiElectron = 32768;
carc2.cAtomQFNot2ENeighbours = 2199023255552;
carc2.cAtomQFNot2Hydrogen = 512;
carc2.cAtomQFNot2Neighbours = 524288;
carc2.cAtomQFNot2PiElectrons = 65536;
carc2.cAtomQFNot2RingBonds = 16;
carc2.cAtomQFNot3ENeighbours = 4398046511104;
carc2.cAtomQFNot3Hydrogen = 1024;
carc2.cAtomQFNot3Neighbours = 1048576;
carc2.cAtomQFNot3RingBonds = 32;
carc2.cAtomQFNot4ENeighbours = 8796093022208;
carc2.cAtomQFNot4Neighbours = 2097152;
carc2.cAtomQFNot4RingBonds = 64;
carc2.cAtomQFNotAromatic = 4;
carc2.cAtomQFNotChain = 8;
carc2.cAtomQFNotCharge0 = 67108864;
carc2.cAtomQFNotChargeNeg = 33554432;
carc2.cAtomQFNotChargePos = 134217728;
carc2.cAtomQFPiElectronBits = 3;
carc2.cAtomQFPiElectronShift = 14;
carc2.cAtomQFPiElectrons = 114688;
carc2.cAtomQFRingSize0 = 4294967296;
carc2.cAtomQFRingSize3 = 8589934592;
carc2.cAtomQFRingSize4 = 17179869184;
carc2.cAtomQFRingSize5 = 34359738368;
carc2.cAtomQFRingSize6 = 68719476736;
carc2.cAtomQFRingSize7 = 137438953472;
carc2.cAtomQFRingSizeLarge = 274877906944;
carc2.cAtomQFRingState = 120;
carc2.cAtomQFRingStateBits = 4;
carc2.cAtomQFRingStateShift = 3;
carc2.cAtomQFRxnParityBits = 2;
carc2.cAtomQFRxnParityHint = 3221225472;
carc2.cAtomQFRxnParityInvert = 2147483648;
carc2.cAtomQFRxnParityRacemize = 3221225472;
carc2.cAtomQFRxnParityRetain = 1073741824;
carc2.cAtomQFRxnParityShift = 30;
carc2.cAtomQFSimpleFeatures = {l:4179966, m:4063288, h:7};
carc2.cAtomQFSmallRingSize = 29360128;
carc2.cAtomQFSmallRingSizeBits = 3;
carc2.cAtomQFSmallRingSizeShift = 22;
carc2.cAtomQFStereoState = {l:0, m:0, h:3};
carc2.cAtomQFStereoStateBits = 2;
carc2.cAtomQFStereoStateShift = 44;
carc2.cAtomRadicalState = 48;
carc2.cAtomRadicalStateD = 32;
carc2.cAtomRadicalStateNone = 0;
carc2.cAtomRadicalStateS = 16;
carc2.cAtomRadicalStateShift = 4;
carc2.cAtomRadicalStateT = 48;
carc2.cBondCIPParityEorP = 1;
carc2.cBondCIPParityNone = 0;
carc2.cBondCIPParityProblem = 3;
carc2.cBondCIPParityZorM = 2;
carc2.cBondFlagBGHilited = 32768;
carc2.cBondFlagFGHilited = 65536;
carc2.cBondFlagRing = 64;
carc2.cBondFlagSmallRing = 128;
carc2.cBondFlagsCIPParity = 48;
carc2.cBondFlagsCIPParityShift = 4;
carc2.cBondFlagsESR = 32512;
carc2.cBondFlagsESRGroup = 31744;
carc2.cBondFlagsESRGroupShift = 10;
carc2.cBondFlagsESRType = 768;
carc2.cBondFlagsESRTypeShift = 8;
carc2.cBondFlagsHelper2 = 704;
carc2.cBondFlagsHelper3 = 63;
carc2.cBondFlagsParity = 3;
carc2.cBondParityEor1 = 1;
carc2.cBondParityIsPseudo = 4;
carc2.cBondParityNone = 0;
carc2.cBondParityUnknown = 3;
carc2.cBondParityUnknownOrNone = 131072;
carc2.cBondParityZor2 = 2;
carc2.cBondQFAllFeatures = 16777215;
carc2.cBondQFAromState = 6291456;
carc2.cBondQFAromStateBits = 2;
carc2.cBondQFAromStateShift = 21;
carc2.cBondQFAromatic = 2097152;
carc2.cBondQFBondTypes = 31;
carc2.cBondQFBondTypesBits = 5;
carc2.cBondQFBondTypesShift = 0;
carc2.cBondQFBridge = 130560;
carc2.cBondQFBridgeBits = 8;
carc2.cBondQFBridgeMin = 7680;
carc2.cBondQFBridgeMinBits = 4;
carc2.cBondQFBridgeMinShift = 9;
carc2.cBondQFBridgeShift = 9;
carc2.cBondQFBridgeSpan = 122880;
carc2.cBondQFBridgeSpanBits = 4;
carc2.cBondQFBridgeSpanShift = 13;
carc2.cBondQFDelocalized = 8;
carc2.cBondQFDouble = 2;
carc2.cBondQFMatchFormalOrder = 8388608;
carc2.cBondQFMatchStereo = 1048576;
carc2.cBondQFMetalLigand = 16;
carc2.cBondQFNarrowing = 6291840;
carc2.cBondQFNoOfBits = 23;
carc2.cBondQFNotAromatic = 4194304;
carc2.cBondQFNotRing = 128;
carc2.cBondQFQuadruple = 32;
carc2.cBondQFQuintuple = 64;
carc2.cBondQFRareBondTypes = 96;
carc2.cBondQFRareBondTypesBits = 2;
carc2.cBondQFRareBondTypesShift = 5;
carc2.cBondQFRing = 256;
carc2.cBondQFRingSize = 917504;
carc2.cBondQFRingSizeBits = 3;
carc2.cBondQFRingSizeShift = 17;
carc2.cBondQFRingState = 384;
carc2.cBondQFRingStateBits = 2;
carc2.cBondQFRingStateShift = 7;
carc2.cBondQFSimpleFeatures = 6291967;
carc2.cBondQFSingle = 1;
carc2.cBondQFTriple = 4;
carc2.cBondTypeCross = 386;
carc2.cBondTypeDeleted = 512;
carc2.cBondTypeDelocalized = 64;
carc2.cBondTypeDouble = 2;
carc2.cBondTypeDown = 129;
carc2.cBondTypeIncreaseOrder = 511;
carc2.cBondTypeMaskSimple = 127;
carc2.cBondTypeMaskStereo = 384;
carc2.cBondTypeMetalLigand = 32;
carc2.cBondTypeQuadruple = 8;
carc2.cBondTypeQuintuple = 16;
carc2.cBondTypeSingle = 1;
carc2.cBondTypeTriple = 4;
carc2.cBondTypeUp = 257;
carc2.cChiralityDiastereomers = 458752;
carc2.cChiralityEpimers = 393216;
carc2.cChiralityIsomerCountMask = 65535;
carc2.cChiralityKnownEnantiomer = 262144;
carc2.cChiralityMeso = 131072;
carc2.cChiralityNotChiral = 65536;
carc2.cChiralityRacemic = 196608;
carc2.cChiralityUnknown = 0;
carc2.cChiralityUnknownEnantiomer = 327680;
carc2.cDefaultAVBL = 24;
carc2.cDefaultAllowedPseudoAtoms = 0;
carc2.cDefaultAtomValence = 6;
carc2.cESRGroupBits = 5;
carc2.cESRMaxGroups = 32;
carc2.cESRTypeAbs = 0;
carc2.cESRTypeAnd = 1;
carc2.cESRTypeOr = 2;
carc2.cHelperAll = 255;
carc2.cHelperBitCIP = 16;
carc2.cHelperBitIncludeNitrogenParities = 128;
carc2.cHelperBitNeighbours = 1;
carc2.cHelperBitParities = 8;
carc2.cHelperBitRings = 4;
carc2.cHelperBitRingsSimple = 2;
carc2.cHelperBitSymmetrySimple = 32;
carc2.cHelperBitSymmetryStereoHeterotopicity = 64;
carc2.cHelperBitsStereo = 248;
carc2.cHelperCIP = 0;
carc2.cHelperNeighbours = 1;
carc2.cHelperNone = 0;
carc2.cHelperParities = 0;
carc2.cHelperRings = 0;
carc2.cHelperRingsSimple = 0;
carc2.cHelperSymmetrySimple = 0;
carc2.cHelperSymmetryStereoHeterotopicity = 0;
carc2.cMaxAtomicNo = 190;
carc2.cMoleculeColorDefault = 0;
carc2.cMoleculeColorNeutral = 1;
carc2.cPseudoAtomA = 16;
carc2.cPseudoAtomAttachmentPoint = 256;
carc2.cPseudoAtomPolymer = 128;
carc2.cPseudoAtomR = 8;
carc2.cPseudoAtomX = 32;
carc2.cPseudoAtomsAGroups = 4;
carc2.cPseudoAtomsAll = 511;
carc2.cPseudoAtomsAminoAcids = 64;
carc2.cPseudoAtomsHydrogenIsotops = 1;
carc2.cPseudoAtomsRGroups = 2;
carc2.sDefaultAVBL = 24;
carc2.serialVersionUID_1 = 539103536;
cggl.Lcom_actelion_research_chem_Molecule_2_classLit = createForClass('com.actelion.research.chem', 'Molecule', 70, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_ExtendedMolecule = function $clinit_ExtendedMolecule(){
  carc2.$clinit_ExtendedMolecule = emptyMethod;
  carc2.$clinit_Molecule();
  carc2.FISCHER_PROJECTION_LIMIT = 3.141592653589793 / 36;
  carc2.STEREO_ANGLE_LIMIT = 3.141592653589793 / 36;
}
;
carc2.ExtendedMolecule = function ExtendedMolecule(){
  carc2.$clinit_ExtendedMolecule();
  carc2.Molecule.call(this);
  this.$init_28();
}
;
carc2.ExtendedMolecule_0 = function ExtendedMolecule_0(maxAtoms, maxBonds){
  carc2.$clinit_ExtendedMolecule();
  carc2.Molecule_0.call(this, maxAtoms, maxBonds);
  this.$init_28();
}
;
carc2.ExtendedMolecule_1 = function ExtendedMolecule_1(mol){
  carc2.$clinit_ExtendedMolecule();
  carc2.Molecule_0.call(this, isNull(mol)?256:mol.getMaxAtoms_0(), isNull(mol)?256:mol.getMaxBonds_0());
  this.$init_28();
  if (isNotNull(mol))
    mol.copyMolecule_0(this);
}
;
defineClass(100, 70, {100:1, 70:1, 4:1, 1:1});
_.$init_28 = function $init_28(){
}
;
_.addFragment_0 = function addFragment(sourceMol, rootAtom, atomMap){
  var bond, candidate, current, esrGroupCountAND, esrGroupCountOR, graphAtom, highest, i, isFragmentMember;
  sourceMol.ensureHelperArrays_0(1);
  if (jsEquals(atomMap, null))
    atomMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, sourceMol.mAllAtoms, 15, 1);
  esrGroupCountAND = this.renumberESRGroups_0(1);
  esrGroupCountOR = this.renumberESRGroups_0(2);
  isFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, sourceMol.mAllAtoms, 16, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, sourceMol.mAllAtoms, 15, 1);
  graphAtom[0] = rootAtom;
  isFragmentMember[rootAtom] = true;
  atomMap[rootAtom] = sourceMol.copyAtom_0(this, rootAtom, esrGroupCountAND, esrGroupCountOR);
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < sourceMol.getAllConnAtoms_0(graphAtom[current]); i++) {
      candidate = sourceMol.mConnAtom[graphAtom[current]][i];
      if (!isFragmentMember[candidate]) {
        graphAtom[++highest] = candidate;
        isFragmentMember[candidate] = true;
        atomMap[candidate] = sourceMol.copyAtom_0(this, candidate, esrGroupCountAND, esrGroupCountOR);
      }
    }
    current++;
  }
  for (bond = 0; bond < sourceMol.mAllBonds; bond++)
    if (isFragmentMember[sourceMol.mBondAtom[0][bond]])
      sourceMol.copyBond_1(this, bond, esrGroupCountAND, esrGroupCountOR, atomMap, false);
  this.renumberESRGroups_0(1);
  this.renumberESRGroups_0(2);
  this.mValidHelperArrays = 0;
}
;
_.bondsAreParallel = function bondsAreParallel(angle1, angle2){
  var angleDif;
  angleDif = $wnd.Math.abs(carc2.getAngleDif(angle1, angle2));
  return angleDif < 0.08 || angleDif > 3.141592653589793 - 0.08;
}
;
_.calculateNeighbours = function calculateNeighbours(){
  var allConnAtoms, atom, atom0, atom1, bnd, bnd0, bnd1, bnd2, connCount, i, metalBondFound, order;
  this.mConnAtoms = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  this.mAllConnAtoms = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  this.mConnAtom = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mAllAtoms, 0, 2);
  this.mConnBond = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mAllAtoms, 0, 2);
  this.mConnBondOrder = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mAllAtoms, 0, 2);
  this.mPi = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  connCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  for (bnd0 = 0; bnd0 < this.mAllBonds; bnd0++) {
    connCount[this.mBondAtom[0][bnd0]]++;
    connCount[this.mBondAtom[1][bnd0]]++;
  }
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    this.mConnAtom[atom0] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, connCount[atom0], 15, 1);
    this.mConnBond[atom0] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, connCount[atom0], 15, 1);
    this.mConnBondOrder[atom0] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, connCount[atom0], 15, 1);
  }
  metalBondFound = false;
  for (bnd1 = 0; bnd1 < this.mBonds; bnd1++) {
    order = this.getBondOrder_0(bnd1);
    if (order == 0) {
      metalBondFound = true;
      continue;
    }
    for (i = 0; i < 2; i++) {
      atom = this.mBondAtom[i][bnd1];
      allConnAtoms = this.mAllConnAtoms[atom];
      this.mConnBondOrder[atom][allConnAtoms] = order;
      this.mConnAtom[atom][allConnAtoms] = this.mBondAtom[1 - i][bnd1];
      this.mConnBond[atom][allConnAtoms] = bnd1;
      this.mAllConnAtoms[atom]++;
      this.mConnAtoms[atom]++;
      if (atom < this.mAtoms) {
        if (order > 1)
          this.mPi[atom] += order - 1;
        else if (this.mBondType[bnd1] == 64)
          this.mPi[atom] = 1;
      }
    }
  }
  for (bnd2 = this.mBonds; bnd2 < this.mAllBonds; bnd2++) {
    order = this.getBondOrder_0(bnd2);
    if (order == 0) {
      metalBondFound = true;
      continue;
    }
    for (i = 0; i < 2; i++) {
      atom = this.mBondAtom[i][bnd2];
      allConnAtoms = this.mAllConnAtoms[atom];
      this.mConnBondOrder[atom][allConnAtoms] = order;
      this.mConnAtom[atom][allConnAtoms] = this.mBondAtom[1 - i][bnd2];
      this.mConnBond[atom][allConnAtoms] = bnd2;
      this.mAllConnAtoms[atom]++;
      if (this.mBondAtom[1 - i][bnd2] < this.mAtoms)
        this.mConnAtoms[atom]++;
    }
  }
  if (metalBondFound) {
    allConnAtoms = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
    for (atom1 = 0; atom1 < this.mAllAtoms; atom1++)
      allConnAtoms[atom1] = this.mAllConnAtoms[atom1];
    for (bnd = 0; bnd < this.mAllBonds; bnd++) {
      order = this.getBondOrder_0(bnd);
      if (order == 0) {
        for (i = 0; i < 2; i++) {
          atom = this.mBondAtom[i][bnd];
          this.mConnBondOrder[atom][allConnAtoms[atom]] = order;
          this.mConnAtom[atom][allConnAtoms[atom]] = this.mBondAtom[1 - i][bnd];
          this.mConnBond[atom][allConnAtoms[atom]] = bnd;
          allConnAtoms[atom]++;
        }
      }
    }
  }
}
;
_.canonizeCharge_0 = function canonizeCharge(allowUnbalancedCharge){
  return this.canonizeCharge_1(allowUnbalancedCharge, false);
}
;
_.canonizeCharge_1 = function canonizeCharge_0(allowUnbalancedCharge, doNeutralize){
  var atom, atom0, atom1, atom2, atom3, bond, bondOrder, chargeReduction, hasImplicitHydrogen, i, negativeAdjustableCharge, negativeAtom, negativeAtomCount, negativeChargeForRemoval, newStereoBond, oldBondType, overallCharge, overallChargeChange, positiveChargeForRemoval, stereoCenter;
  this.ensureHelperArrays_0(1);
  if (doNeutralize)
    allowUnbalancedCharge = true;
  for (bond = 0; bond < this.mAllBonds; bond++) {
    bondOrder = this.getBondOrder_0(bond);
    if (bondOrder == 1 || bondOrder == 2) {
      if (this.mAtomCharge[this.mBondAtom[0][bond]] > 0 && this.mAtomCharge[this.mBondAtom[1][bond]] < 0) {
        atom1 = this.mBondAtom[0][bond];
        atom2 = this.mBondAtom[1][bond];
      }
       else if (this.mAtomCharge[this.mBondAtom[0][bond]] < 0 && this.mAtomCharge[this.mBondAtom[1][bond]] > 0) {
        atom1 = this.mBondAtom[1][bond];
        atom2 = this.mBondAtom[0][bond];
      }
       else 
        continue;
      if (this.isMetalAtom_0(atom1) || this.isMetalAtom_0(atom2))
        continue;
      if (this.mAtomicNo[atom1] < 9 && this.getOccupiedValence_0(atom1) > 3 || this.mAtomicNo[atom2] < 9 && this.getOccupiedValence_0(atom2) > 3)
        continue;
      hasImplicitHydrogen = this.getImplicitHydrogens_0(atom1) != 0;
      this.mAtomCharge[atom1] -= 1;
      this.mAtomCharge[atom2] += 1;
      if (!hasImplicitHydrogen) {
        oldBondType = this.mBondType[bond];
        if (bondOrder == 1)
          this.mBondType[bond] = 2;
        else 
          this.mBondType[bond] = 4;
        if (oldBondType == 129 || oldBondType == 257) {
          stereoCenter = this.mBondAtom[0][bond];
          newStereoBond = this.preferredTHStereoBond(stereoCenter, false);
          if (this.mBondAtom[0][newStereoBond] != stereoCenter) {
            this.mBondAtom[1][newStereoBond] = this.mBondAtom[0][newStereoBond];
            this.mBondAtom[1][newStereoBond] = stereoCenter;
          }
        }
      }
      this.mValidHelperArrays = 0;
    }
  }
  overallCharge = 0;
  negativeAtomCount = 0;
  negativeAdjustableCharge = 0;
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    overallCharge += this.mAtomCharge[atom0];
    if (this.mAtomCharge[atom0] < 0 && !this.hasPositiveNeighbour(atom0)) {
      negativeAtomCount++;
      if (this.isElectronegative_0(atom0))
        negativeAdjustableCharge -= this.mAtomCharge[atom0];
    }
  }
  if (!allowUnbalancedCharge && overallCharge != 0)
    throw toJs(new jl.Exception_1("molecule's overall charges are not balanced"));
  this.ensureHelperArrays_0(1);
  overallChargeChange = 0;
  positiveChargeForRemoval = doNeutralize?overallCharge + negativeAdjustableCharge:negativeAdjustableCharge;
  for (atom3 = 0; atom3 < this.mAllAtoms; atom3++) {
    if (this.mAtomCharge[atom3] > 0) {
      if (!this.hasNegativeNeighbour(atom3) && this.isElectronegative_0(atom3)) {
        chargeReduction = $wnd.Math.min(this.getImplicitHydrogens_0(atom3), this.mAtomCharge[atom3]);
        if (chargeReduction != 0 && positiveChargeForRemoval >= chargeReduction) {
          overallCharge -= chargeReduction;
          overallChargeChange -= chargeReduction;
          positiveChargeForRemoval -= chargeReduction;
          this.mAtomCharge[atom3] -= chargeReduction;
          this.mValidHelperArrays &= 1;
        }
      }
    }
  }
  negativeChargeForRemoval = doNeutralize?overallCharge:overallChargeChange;
  if (negativeChargeForRemoval < 0) {
    negativeAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, negativeAtomCount, 15, 1);
    negativeAtomCount = 0;
    for (atom1 = 0; atom1 < this.mAllAtoms; atom1++) {
      if (this.mAtomCharge[atom1] < 0 && !this.hasPositiveNeighbour(atom1)) {
        negativeAtom[negativeAtomCount++] = (this.mAtomicNo[atom1] << 22) + atom1;
      }
    }
    ju.sort_3(negativeAtom);
    for (i = negativeAtom.length - 1; negativeChargeForRemoval < 0 && i >= negativeAtom.length - negativeAtomCount; i--) {
      atom = negativeAtom[i] & 4194303;
      if (this.isElectronegative_0(atom)) {
        chargeReduction = $wnd.Math.min(-negativeChargeForRemoval, -this.mAtomCharge[atom]);
        overallCharge += chargeReduction;
        negativeChargeForRemoval += chargeReduction;
        this.mAtomCharge[atom] += chargeReduction;
        this.mValidHelperArrays &= 1;
      }
    }
  }
  return overallCharge;
}
;
_.convertHydrogenToQueryFeatures = function convertHydrogenToQueryFeatures(){
  var atom, atom0, connBond, deleteHydrogens, explicitHydrogens, freeValence, i, queryFeatureHydrogens, queryFeatureShift, queryFeatures;
  if (!this.mIsFragment)
    return false;
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++) {
    if (this.getFreeValence_0(atom0) <= 0 && !(this.mAtomCharge[atom0] == 0 && (this.mAtomicNo[atom0] == 5 || this.isNitrogenFamily_0(atom0) || this.isChalcogene_0(atom0))))
      this.mAtomQueryFeatures[atom0] = and_0(this.mAtomQueryFeatures[atom0], not_0(or_0(2048, 4096)));
  }
  deleteHydrogens = false;
  for (atom = 0; atom < this.mAtoms; atom++) {
    explicitHydrogens = this.getExplicitHydrogens_0(atom);
    if (!this.mProtectHydrogen && explicitHydrogens > 0) {
      if (eq(and_0(this.mAtomQueryFeatures[atom], 2048), 0)) {
        queryFeatureHydrogens = eq(and_0(this.mAtomQueryFeatures[atom], 1920), or_0(or_0(128, 256), 512))?3:eq(and_0(this.mAtomQueryFeatures[atom], 1920), or_0(128, 256))?2:eq(and_0(this.mAtomQueryFeatures[atom], 128), 128)?1:0;
        freeValence = this.getFreeValence_0(atom);
        if (this.mAtomCharge[atom] == 0 && eq(and_0(this.mAtomQueryFeatures[atom], 234881024), 0) && this.mAtomicNo[atom] != 6)
          freeValence++;
        queryFeatureShift = explicitHydrogens;
        if (queryFeatureShift > 3 - queryFeatureHydrogens)
          queryFeatureShift = 3 - queryFeatureHydrogens;
        if (queryFeatureShift > freeValence + explicitHydrogens - queryFeatureHydrogens)
          queryFeatureShift = freeValence + explicitHydrogens - queryFeatureHydrogens;
        if (queryFeatureShift > 0) {
          queryFeatures = queryFeatureHydrogens == 0?0:shl_0(and_0(this.mAtomQueryFeatures[atom], 1920), queryFeatureShift);
          queryFeatures = or_0(queryFeatures, fromInt_0((queryFeatureShift == 3?7:explicitHydrogens == 2?3:1) << 7));
          this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(1920));
          this.mAtomQueryFeatures[atom] = or_0(this.mAtomQueryFeatures[atom], and_0(1920, queryFeatures));
        }
      }
      for (i = this.mConnAtoms[atom]; i < this.mAllConnAtoms[atom]; i++) {
        connBond = this.mConnBond[atom][i];
        if (this.mBondType[connBond] == 1) {
          this.mAtomicNo[this.mConnAtom[atom][i]] = -1;
          this.mBondType[connBond] = 512;
          deleteHydrogens = true;
        }
      }
    }
  }
  if (deleteHydrogens)
    this.compressMolTable();
  return deleteHydrogens;
}
;
_.convertStereoBondsToSingleBonds_0 = function convertStereoBondsToSingleBonds(atom){
  var alleneEnd, connBond, i, j;
  if (this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2 && this.mConnBondOrder[atom][0] == 2) {
    for (i = 0; i < 2; i++) {
      alleneEnd = this.findAlleneEndAtom_0(atom, this.mConnAtom[atom][i]);
      if (alleneEnd != -1) {
        for (j = 0; j < this.mConnAtoms[alleneEnd]; j++) {
          connBond = this.mConnBond[alleneEnd][j];
          if (this.isStereoBond_0(connBond) && this.mBondAtom[0][connBond] == alleneEnd)
            this.mBondType[this.mConnBond[alleneEnd][j]] = 1;
        }
      }
    }
    return;
  }
  if (this.mPi[atom] == 0 || this.mAtomicNo[atom] >= 15) {
    for (i = 0; i < this.mAllConnAtoms[atom]; i++) {
      connBond = this.mConnBond[atom][i];
      if (this.isStereoBond_1(connBond, atom) && this.mBondAtom[0][connBond] == atom)
        this.mBondType[connBond] = 1;
    }
  }
}
;
_.copyMoleculeByAtoms_0 = function copyMoleculeByAtoms(destMol, includeAtom, recognizeDelocalizedBonds, atomMap){
  var atom, atom1, atom2, atomCount, bond, bondMap, i, valence;
  this.ensureHelperArrays_0(recognizeDelocalizedBonds?7:1);
  destMol.mAtomList = null;
  if (this.mIsFragment)
    destMol.setFragment_0(true);
  atomCount = includeAtom.length;
  if (jsEquals(atomMap, null))
    atomMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atomCount, 15, 1);
  destMol.mAllAtoms = 0;
  for (atom = 0; atom < atomCount; atom++) {
    if (includeAtom[atom]) {
      atomMap[atom] = this.copyAtom_0(destMol, atom, 0, 0);
      if (this.mAtomicNo[atom] == 1) {
        valence = this.getOccupiedValence_0(atom);
        if (valence > 1) {
          for (i = 0; i < this.mAllConnAtoms[atom]; i++) {
            if (!includeAtom[this.mConnAtom[atom][i]]) {
              destMol.setAtomAbnormalValence_0(atomMap[atom], valence);
              break;
            }
          }
        }
      }
    }
     else {
      atomMap[atom] = -1;
    }
  }
  bondMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllBonds, 15, 1);
  ju.fill_0(bondMap, -1);
  destMol.mAllBonds = 0;
  for (bond = 0; bond < this.mAllBonds; bond++) {
    atom1 = this.mBondAtom[0][bond];
    atom2 = this.mBondAtom[1][bond];
    if (atom1 < atomCount && atom2 < atomCount) {
      if (includeAtom[atom1] && includeAtom[atom2])
        bondMap[bond] = this.copyBond_1(destMol, bond, 0, 0, atomMap, recognizeDelocalizedBonds);
      else if (this.mAtomCharge[atom1] != 0 && this.mAtomCharge[atom2] != 0 && this.mAtomCharge[atom1] < 0 ^ this.mAtomCharge[atom2] < 0) {
        if (includeAtom[atom1])
          destMol.mAtomCharge[atomMap[atom1]] += this.mAtomCharge[atom1] < 0?1:-1;
        if (includeAtom[atom2])
          destMol.mAtomCharge[atomMap[atom2]] += this.mAtomCharge[atom2] < 0?1:-1;
      }
    }
  }
  this.copyMoleculeProperties_0(destMol);
  destMol.mValidHelperArrays = 0;
  destMol.renumberESRGroups_0(1);
  destMol.renumberESRGroups_0(2);
  if (destMol.mAllAtoms != atomCount)
    destMol.setFragment_0(true);
  this.rescueStereoBonds(destMol, atomCount, atomMap, bondMap);
  this.rescueImplicitHigherValences(destMol, atomCount, atomMap);
  if (recognizeDelocalizedBonds)
    (new carc2.AromaticityResolver(destMol)).locateDelocalizedDoubleBonds(null);
}
;
_.copyMoleculeByBonds_0 = function copyMoleculeByBonds(destMol, includeBond, recognizeDelocalizedBonds, atomMap){
  var atom, atom1, atom2, bond, bondMap, i, j, valence;
  this.ensureHelperArrays_0(recognizeDelocalizedBonds?7:1);
  destMol.mAtomList = null;
  if (this.mIsFragment)
    destMol.setFragment_0(true);
  if (jsEquals(atomMap, null))
    atomMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  destMol.mAllAtoms = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    atomMap[atom] = -1;
    for (i = 0; i < this.mConnAtoms[atom]; i++) {
      if (includeBond[this.mConnBond[atom][i]]) {
        atomMap[atom] = this.copyAtom_0(destMol, atom, 0, 0);
        if (this.mAtomicNo[atom] == 1) {
          valence = this.getOccupiedValence_0(atom);
          if (valence > 1) {
            for (j = 0; j < this.mAllConnAtoms[atom]; j++) {
              if (!includeBond[this.mConnBond[atom][j]]) {
                destMol.setAtomAbnormalValence_0(atomMap[atom], valence);
                break;
              }
            }
          }
        }
        break;
      }
    }
  }
  bondMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllBonds, 15, 1);
  destMol.mAllBonds = 0;
  for (bond = 0; bond < this.mAllBonds; bond++)
    if (includeBond[bond]) {
      bondMap[bond] = this.copyBond_1(destMol, bond, 0, 0, atomMap, recognizeDelocalizedBonds);
    }
     else {
      bondMap[bond] = -1;
      atom1 = this.mBondAtom[0][bond];
      atom2 = this.mBondAtom[1][bond];
      if (atomMap[atom1] == -1 ^ atomMap[atom2] == -1) {
        if (this.mAtomCharge[atom1] != 0 && this.mAtomCharge[atom2] != 0 && this.mAtomCharge[atom1] < 0 ^ this.mAtomCharge[atom2] < 0) {
          if (atomMap[atom1] != -1)
            destMol.mAtomCharge[atomMap[atom1]] += this.mAtomCharge[atom1] < 0?1:-1;
          if (atomMap[atom2] != -1)
            destMol.mAtomCharge[atomMap[atom2]] += this.mAtomCharge[atom2] < 0?1:-1;
        }
      }
    }
  this.copyMoleculeProperties_0(destMol);
  destMol.mValidHelperArrays = 0;
  destMol.renumberESRGroups_0(1);
  destMol.renumberESRGroups_0(2);
  if (destMol.mAllAtoms != this.mAllAtoms)
    destMol.setFragment_0(true);
  this.rescueStereoBonds(destMol, this.mAllAtoms, atomMap, bondMap);
  this.rescueImplicitHigherValences(destMol, this.mAllAtoms, atomMap);
  if (recognizeDelocalizedBonds)
    (new carc2.AromaticityResolver(destMol)).locateDelocalizedDoubleBonds(null);
  return atomMap;
}
;
_.ensureHelperArrays_0 = function ensureHelperArrays(required){
  var atom, atom0, atom1, bond, candidate, connAtom, connBond, found, i, j;
  if ((required & ~this.mValidHelperArrays) == 0)
    return;
  if ((this.mValidHelperArrays & 1) == 0) {
    this.handleHydrogens();
    this.calculateNeighbours();
    this.mValidHelperArrays |= 1;
    if (this.convertHydrogenToQueryFeatures()) {
      this.handleHydrogens();
      this.calculateNeighbours();
    }
  }
  if ((required & ~this.mValidHelperArrays) == 0)
    return;
  if ((this.mValidHelperArrays & ~(2 | 4)) != 0) {
    for (atom0 = 0; atom0 < this.mAtoms; atom0++)
      this.mAtomFlags[atom0] &= ~15368;
    for (bond = 0; bond < this.mBonds; bond++)
      this.mBondFlags[bond] &= ~704;
    if ((required & 4) == 0) {
      this.findRings(1);
      this.mValidHelperArrays |= 2;
      return;
    }
    this.findRings(7);
    for (atom1 = 0; atom1 < this.mAtoms; atom1++) {
      for (i = 0; i < this.mConnAtoms[atom1]; i++) {
        connBond = this.mConnBond[atom1][i];
        if (this.isAromaticBond_0(connBond))
          continue;
        connAtom = this.mConnAtom[atom1][i];
        for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
          if (this.mConnBond[connAtom][j] == connBond)
            continue;
          if (this.mConnBondOrder[connAtom][j] > 1) {
            if (this.mAtomicNo[this.mConnAtom[connAtom][j]] == 6)
              this.mAtomFlags[atom1] |= 4096;
            else {
              if (!this.isAromaticBond_0(this.mConnBond[connAtom][j]) && this.isElectronegative_0(this.mConnAtom[connAtom][j]))
                this.mAtomFlags[atom1] |= 8192;
            }
          }
        }
      }
    }
    while (true) {
      found = false;
      for (atom = 0; atom < this.mAtoms; atom++) {
        if (this.mPi[atom] > 0 && (this.mAtomFlags[atom] & 8192) != 0 && !this.mRingSet.isAromaticAtom_1(atom)) {
          for (i = 0; i < this.mConnAtoms[atom]; i++) {
            if (this.mConnBondOrder[atom][i] > 1) {
              connAtom = this.mConnAtom[atom][i];
              connBond = this.mConnBond[atom][i];
              for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
                if (this.mConnBond[connAtom][j] != connBond) {
                  candidate = this.mConnAtom[connAtom][j];
                  if ((this.mAtomFlags[candidate] & 8192) == 0) {
                    this.mAtomFlags[candidate] |= 8192;
                    found = true;
                  }
                }
              }
            }
          }
        }
      }
      if (!found)
        break;
    }
  }
  this.mValidHelperArrays |= 2 | 4;
}
;
_.findAlleneCenterAtom_0 = function findAlleneCenterAtom(atom){
  var center, connAtom, endAtom, i, j;
  center = -1;
  if (this.mPi[atom] == 1) {
    for (i = 0; i < this.mConnAtoms[atom]; i++) {
      if (this.mConnBondOrder[atom][i] == 2) {
        connAtom = this.mConnAtom[atom][i];
        if (this.mConnAtoms[connAtom] == 2 && this.mPi[connAtom] == 2) {
          for (j = 0; j < 2; j++) {
            endAtom = this.mConnAtom[connAtom][j];
            if (endAtom != atom && this.mPi[endAtom] == 1) {
              center = connAtom;
              break;
            }
          }
        }
        break;
      }
    }
  }
  return center;
}
;
_.findAlleneEndAtom_0 = function findAlleneEndAtom(atom1, atom2){
  var startAtom, temp;
  startAtom = atom1;
  while (this.mConnAtoms[atom2] == 2 && this.mPi[atom2] == 2 && atom2 != startAtom) {
    temp = atom2;
    atom2 = this.mConnAtom[atom2][0] == atom1?this.mConnAtom[atom2][1]:this.mConnAtom[atom2][0];
    atom1 = temp;
  }
  return atom2 == startAtom?-1:atom2;
}
;
_.findBINAPChiralityBond_0 = function findBINAPChiralityBond(atom){
  var i;
  if (this.mConnAtoms[atom] == 3 && this.isAromaticAtom_1(atom) && this.getAtomRingSize_0(atom) >= 5)
    for (i = 0; i < this.mConnAtoms[atom]; i++)
      if (this.isBINAPChiralityBond_0(this.mConnBond[atom][i]))
        return this.mConnBond[atom][i];
  return -1;
}
;
_.findRingSystem_0 = function findRingSystem(startAtom, aromaticOnly, isMemberAtom, isMemberBond){
  var candidateAtom, candidateBond, current, graphAtom, highest, i;
  this.ensureHelperArrays_0(7);
  if (!this.isRingAtom_0(startAtom) || aromaticOnly && !this.isAromaticAtom_1(startAtom))
    return;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  graphAtom[0] = startAtom;
  isMemberAtom[startAtom] = true;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < this.mConnAtoms[graphAtom[current]]; i++) {
      candidateBond = this.mConnBond[graphAtom[current]][i];
      if (!isMemberBond[candidateBond] && this.isRingBond_0(candidateBond) && (!aromaticOnly || this.isAromaticBond_0(candidateBond))) {
        isMemberBond[candidateBond] = true;
        candidateAtom = this.mConnAtom[graphAtom[current]][i];
        if (!isMemberAtom[candidateAtom]) {
          isMemberAtom[candidateAtom] = true;
          graphAtom[++highest] = candidateAtom;
        }
      }
    }
    current++;
  }
}
;
_.findRings = function findRings(mode){
  var atom, atomRingBondCount, bond, i, ringAtom, ringAtoms, ringBond, ringNo;
  this.mRingSet = new carc2.RingCollection(this, mode);
  atomRingBondCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  for (bond = 0; bond < this.mBonds; bond++) {
    if (this.mRingSet.getBondRingSize_0(bond) != 0) {
      this.mBondFlags[bond] |= 64;
      atomRingBondCount[this.mBondAtom[0][bond]]++;
      atomRingBondCount[this.mBondAtom[1][bond]]++;
    }
  }
  for (atom = 0; atom < this.mAtoms; atom++) {
    if (atomRingBondCount[atom] == 2)
      this.mAtomFlags[atom] |= 1024;
    else if (atomRingBondCount[atom] == 3)
      this.mAtomFlags[atom] |= 2048;
    else if (atomRingBondCount[atom] > 3)
      this.mAtomFlags[atom] |= 3072;
  }
  for (ringNo = 0; ringNo < this.mRingSet.getSize_0(); ringNo++) {
    ringAtom = this.mRingSet.getRingAtoms_0(ringNo);
    ringBond = this.mRingSet.getRingBonds_0(ringNo);
    ringAtoms = ringAtom.length;
    for (i = 0; i < ringAtoms; i++) {
      this.mAtomFlags[ringAtom[i]] |= 8;
      this.mBondFlags[ringBond[i]] |= 128;
      if (this.mBondType[ringBond[i]] == 386)
        this.mBondType[ringBond[i]] = 2;
    }
  }
}
;
_.findSimpleHydrogens = function findSimpleHydrogens(){
  var atom, atom0, atom1, atom2, bond, bond0, isSimpleHydrogen, oneBondFound;
  isSimpleHydrogen = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++)
    isSimpleHydrogen[atom0] = this.isSimpleHydrogen_0(atom0);
  oneBondFound = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  for (bond0 = 0; bond0 < this.mAllBonds; bond0++) {
    atom1 = this.mBondAtom[0][bond0];
    atom2 = this.mBondAtom[1][bond0];
    if (this.getBondOrder_0(bond0) != 1) {
      isSimpleHydrogen[atom1] = false;
      isSimpleHydrogen[atom2] = false;
      continue;
    }
    if (oneBondFound[atom1])
      isSimpleHydrogen[atom1] = false;
    if (oneBondFound[atom2])
      isSimpleHydrogen[atom2] = false;
    if (isSimpleHydrogen[atom1] && this.isMetalAtom_0(atom2) && this.mAtomicNo[atom2] != 13)
      isSimpleHydrogen[atom1] = false;
    if (isSimpleHydrogen[atom2] && this.isMetalAtom_0(atom1) && this.mAtomicNo[atom1] != 13)
      isSimpleHydrogen[atom2] = false;
    oneBondFound[atom1] = true;
    oneBondFound[atom2] = true;
  }
  for (bond = 0; bond < this.mAllBonds; bond++) {
    if (isSimpleHydrogen[this.mBondAtom[0][bond]] && isSimpleHydrogen[this.mBondAtom[1][bond]]) {
      isSimpleHydrogen[this.mBondAtom[0][bond]] = false;
      isSimpleHydrogen[this.mBondAtom[1][bond]] = false;
    }
  }
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (!oneBondFound[atom])
      isSimpleHydrogen[atom] = false;
  return isSimpleHydrogen;
}
;
_.getAllConnAtoms_0 = function getAllConnAtoms(atom){
  return this.mAllConnAtoms[atom];
}
;
_.getAllConnAtomsPlusMetalBonds_0 = function getAllConnAtomsPlusMetalBonds(atom){
  return this.mConnAtom[atom].length;
}
;
_.getAllHydrogens_0 = function getAllHydrogens(atom){
  return this.mAllConnAtoms[atom] - this.getNonHydrogenNeighbourCount_0(atom) + this.getImplicitHydrogens_0(atom);
}
;
_.getAromaticRingCount_0 = function getAromaticRingCount(){
  var count, i;
  this.ensureHelperArrays_0(7);
  count = 0;
  for (i = 0; i < this.mRingSet.getSize_0(); i++)
    if (this.mRingSet.isAromatic_0(i))
      count++;
  return count;
}
;
_.getAtomElectronegativeNeighbours = function getAtomElectronegativeNeighbours(atom){
  var e, i;
  e = 0;
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if (this.isElectronegative_0(this.mConnAtom[atom][i]) && !this.isBondBridge_0(this.mConnBond[atom][i]))
      e++;
  return e;
}
;
_.getAtomPi_0 = function getAtomPi(atom){
  return this.mPi[atom];
}
;
_.getAtomPreferredStereoBond_0 = function getAtomPreferredStereoBond(atom){
  this.ensureHelperArrays_0(7);
  if (this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2)
    return this.preferredAlleneStereoBond(atom, false);
  else 
    return this.preferredTHStereoBond(atom, false);
}
;
_.getAtomRingBondCount_0 = function getAtomRingBondCount(atom){
  var flags;
  flags = this.mAtomFlags[atom] & 3072;
  return flags == 0?0:flags == 1024?2:flags == 2048?3:4;
}
;
_.getAtomRingCount_0 = function getAtomRingCount(atom, maxRingSize){
  var bond1, bond2, bondTouched, count, i, isIndependentRing, j, k, neglectBond, pathBond, pathLength, ringAtom;
  this.ensureHelperArrays_0(7);
  bondTouched = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mBonds, 16, 1);
  neglectBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mBonds, 16, 1);
  ringAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  count = 0;
  for (i = 1; i < this.mConnAtoms[atom]; i++) {
    bond1 = this.mConnBond[atom][i];
    if (this.isRingBond_0(bond1)) {
      for (j = 0; j < i; j++) {
        bond2 = this.mConnBond[atom][j];
        if (this.isRingBond_0(bond2)) {
          neglectBond[bond1] = true;
          neglectBond[bond2] = true;
          pathLength = this.getPath_0(ringAtom, this.mConnAtom[atom][i], this.mConnAtom[atom][j], maxRingSize - 2, neglectBond);
          neglectBond[bond1] = false;
          neglectBond[bond2] = false;
          if (pathLength != -1) {
            isIndependentRing = false;
            pathBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, pathLength, 15, 1);
            this.getPathBonds_0(ringAtom, pathBond, pathLength);
            for (k = 0; k < pathLength; k++) {
              if (!bondTouched[pathBond[k]]) {
                bondTouched[pathBond[k]] = true;
                isIndependentRing = true;
              }
            }
            if (isIndependentRing)
              count++;
          }
        }
      }
    }
  }
  return count;
}
;
_.getAtomRingSize_0 = function getAtomRingSize(atom){
  return isNotNull(this.mRingSet) && atom < this.mAtoms?this.mRingSet.getAtomRingSize_0(atom):0;
}
;
_.getAtoms_0 = function getAtoms(){
  return this.mAtoms;
}
;
_.getAverageBondLength_4 = function getAverageBondLength_3(nonHydrogenBondsOnly){
  if (nonHydrogenBondsOnly) {
    this.ensureHelperArrays_0(1);
    return this.getAverageBondLength_1(this.mAtoms, this.mBonds);
  }
   else {
    return this.getAverageBondLength_1(this.mAllAtoms, this.mAllBonds);
  }
}
;
_.getAverageTopologicalAtomDistance_0 = function getAverageTopologicalAtomDistance(){
  var candidate, current, graphAtom, graphLevel, highest, i, meanDistance, startAtom;
  this.ensureHelperArrays_0(1);
  meanDistance = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  for (startAtom = 0; startAtom < this.mAtoms; startAtom++) {
    graphAtom[0] = startAtom;
    graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
    graphLevel[startAtom] = 1;
    current = 0;
    highest = 0;
    while (current <= highest) {
      for (i = 0; i < this.mConnAtoms[graphAtom[current]]; i++) {
        candidate = this.mConnAtom[graphAtom[current]][i];
        if (graphLevel[candidate] == 0) {
          graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
          graphAtom[++highest] = candidate;
          meanDistance[startAtom] += graphLevel[candidate] - 1;
        }
      }
      current++;
    }
    meanDistance[startAtom] /= highest;
  }
  return meanDistance;
}
;
_.getBond_0 = function getBond(atom1, atom2){
  var i;
  for (i = 0; i < this.getAllConnAtomsPlusMetalBonds_0(atom1); i++)
    if (this.mConnAtom[atom1][i] == atom2)
      return this.mConnBond[atom1][i];
  return -1;
}
;
_.getBondPreferredStereoBond_0 = function getBondPreferredStereoBond(bond){
  return this.preferredBinapStereoBond(bond);
}
;
_.getBondRingSize_0 = function getBondRingSize(bond){
  return isNotNull(this.mRingSet) && bond < this.mBonds?this.mRingSet.getBondRingSize_0(bond):0;
}
;
_.getBonds_0 = function getBonds(){
  return this.mBonds;
}
;
_.getChiralText_0 = function getChiralText(){
  return null;
}
;
_.getConnAtom_0 = function getConnAtom(atom, i){
  return this.mConnAtom[atom][i];
}
;
_.getConnAtoms_0 = function getConnAtoms(atom){
  return this.mConnAtoms[atom];
}
;
_.getConnBond_0 = function getConnBond(atom, i){
  return this.mConnBond[atom][i];
}
;
_.getConnBondOrder_0 = function getConnBondOrder(atom, i){
  return this.mConnBondOrder[atom][i];
}
;
_.getExcludedNeighbourCount_0 = function getExcludedNeighbourCount(atom){
  var count, i;
  count = 0;
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if (neq(and_0(this.mAtomQueryFeatures[this.mConnAtom[atom][i]], 536870912), 0))
      count++;
  return count;
}
;
_.getExplicitHydrogens_0 = function getExplicitHydrogens(atom){
  return this.mAllConnAtoms[atom] - this.mConnAtoms[atom];
}
;
_.getFisherProjectionBondDirections = function getFisherProjectionBondDirections(atom, sortedConnMap, angle, direction){
  var a, allConnAtoms, i, isUsed;
  allConnAtoms = this.mAllConnAtoms[atom];
  if (this.mPi[atom] != 0 || this.isAromaticAtom_1(atom) || this.mConnAtoms[atom] < 3 || allConnAtoms > 4)
    return false;
  isUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, 4, 16, 1);
  for (i = 0; i < allConnAtoms; i++) {
    a = 3.141592653589793 * 5 / 4 - angle[i];
    if ($wnd.Math.abs(3.141592653589793 / 4 - a % (3.141592653589793 / 2)) > 0.0872664675116539)
      return false;
    direction[i] = 3 & round_int(a / (3.141592653589793 / 2));
    if (isUsed[direction[i]])
      return false;
    isUsed[direction[i]] = true;
    if ((direction[i] & 1) == 0) {
      if (this.mBondType[this.mConnBond[atom][sortedConnMap[i]]] != 1)
        return false;
    }
     else {
      if (!this.isStereoBond_1(this.mConnBond[atom][sortedConnMap[i]], atom))
        return false;
    }
  }
  return isUsed[0] && isUsed[2];
}
;
_.getFisherProjectionParity_0 = function getFisherProjectionParity(atom, sortedConnMap, angle, direction){
  var allConnAtoms, bondType, dif, horizontalBondType, i, index_0, is4thConnHorizontal, isClockwise;
  if (this.getAtomRingSize_0(atom) > 24)
    return 3;
  allConnAtoms = this.mAllConnAtoms[atom];
  if (jsEquals(direction, null))
    direction = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, allConnAtoms, 15, 1);
  if (!this.getFisherProjectionBondDirections(atom, sortedConnMap, angle, direction))
    return 3;
  horizontalBondType = -1;
  for (i = 0; i < allConnAtoms; i++) {
    if ((direction[i] & 1) == 1) {
      bondType = this.mBondType[this.mConnBond[atom][sortedConnMap[i]]];
      if (horizontalBondType != -1 && horizontalBondType != bondType)
        return 3;
      horizontalBondType = bondType;
    }
  }
  index_0 = $wnd.Math.abs(direction[0] - direction[1]) == 2?1:0;
  dif = direction[index_0] - direction[index_0 + 1];
  isClockwise = $wnd.Math.abs(dif) == 3 ^ direction[index_0] < direction[index_0 + 1];
  is4thConnHorizontal = allConnAtoms == 3 || (direction[3] & 1) == 1;
  return isClockwise ^ is4thConnHorizontal ^ horizontalBondType == 129?1:2;
}
;
_.getFragmentAtoms_0 = function getFragmentAtoms(rootAtom, considerMetalBonds){
  var atom, fragmentMember, fragmentMembers, isFragmentMember;
  isFragmentMember = isFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  fragmentMembers = this.getFragmentAtoms_1(rootAtom, considerMetalBonds, isFragmentMember);
  fragmentMember = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragmentMembers, 15, 1);
  fragmentMembers = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (isFragmentMember[atom])
      fragmentMember[fragmentMembers++] = atom;
  return fragmentMember;
}
;
_.getFragmentAtoms_1 = function getFragmentAtoms_0(rootAtom, considerMetalBonds, isFragmentMember){
  var candidate, connAtoms, current, fragmentMembers, graphAtom, highest, i;
  this.ensureHelperArrays_0(1);
  if (jsEquals(isFragmentMember, null))
    isFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom[0] = rootAtom;
  isFragmentMember[rootAtom] = true;
  current = 0;
  highest = 0;
  fragmentMembers = 1;
  while (current <= highest) {
    connAtoms = considerMetalBonds?this.getAllConnAtomsPlusMetalBonds_0(graphAtom[current]):this.mAllConnAtoms[graphAtom[current]];
    for (i = 0; i < connAtoms; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate < isFragmentMember.length && !isFragmentMember[candidate]) {
        graphAtom[++highest] = candidate;
        isFragmentMember[candidate] = true;
        fragmentMembers++;
      }
    }
    current++;
  }
  return fragmentMembers;
}
;
_.getFragmentNumbers_0 = function getFragmentNumbers(fragmentNo, markedAtomsOnly, considerMetalBonds){
  var atom, atom0, candidate, connAtoms, current, fragments, graphAtom, highest, i;
  this.ensureHelperArrays_0(1);
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++)
    fragmentNo[atom0] = -1;
  fragments = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (fragmentNo[atom] == -1 && (!markedAtomsOnly || this.isMarkedAtom_0(atom))) {
      fragmentNo[atom] = fragments;
      graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
      graphAtom[0] = atom;
      current = 0;
      highest = 0;
      while (current <= highest) {
        connAtoms = considerMetalBonds?this.getAllConnAtomsPlusMetalBonds_0(graphAtom[current]):this.mAllConnAtoms[graphAtom[current]];
        for (i = 0; i < connAtoms; i++) {
          candidate = this.mConnAtom[graphAtom[current]][i];
          if (fragmentNo[candidate] == -1 && (!markedAtomsOnly || this.isMarkedAtom_0(candidate))) {
            graphAtom[++highest] = candidate;
            fragmentNo[candidate] = fragments;
          }
        }
        current++;
      }
      fragments++;
    }
  }
  return fragments;
}
;
_.getFragmentNumbers_1 = function getFragmentNumbers_0(fragmentNo, neglectBond, considerMetalBonds){
  var atom, atom0, candidate, connAtoms, current, fragments, graphAtom, highest, i;
  this.ensureHelperArrays_0(1);
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++)
    fragmentNo[atom0] = -1;
  fragments = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    if (fragmentNo[atom] == -1) {
      fragmentNo[atom] = fragments;
      graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
      graphAtom[0] = atom;
      current = 0;
      highest = 0;
      while (current <= highest) {
        connAtoms = considerMetalBonds?this.getAllConnAtomsPlusMetalBonds_0(graphAtom[current]):this.mAllConnAtoms[graphAtom[current]];
        for (i = 0; i < connAtoms; i++) {
          candidate = this.mConnAtom[graphAtom[current]][i];
          if (fragmentNo[candidate] == -1 && !neglectBond[this.mConnBond[graphAtom[current]][i]]) {
            graphAtom[++highest] = candidate;
            fragmentNo[candidate] = fragments;
          }
        }
        current++;
      }
      fragments++;
    }
  }
  return fragments;
}
;
_.getFreeValence_0 = function getFreeValence(atom){
  return this.getMaxValence_0(atom) - this.getOccupiedValence_0(atom);
}
;
_.getHandleHydrogenAtomMap = function getHandleHydrogenAtomMap(isSimpleHydrogen){
  var i, i0, lastNonHAtom, map_0, temp, tempIndex;
  map_0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  for (i0 = 0; i0 < this.mAllAtoms; i0++)
    map_0[i0] = i0;
  lastNonHAtom = this.mAllAtoms;
  do 
    lastNonHAtom--;
  while (lastNonHAtom >= 0 && isSimpleHydrogen[lastNonHAtom]);
  for (i = 0; i < lastNonHAtom; i++) {
    if (isSimpleHydrogen[map_0[i]]) {
      tempIndex = map_0[i];
      map_0[i] = map_0[lastNonHAtom];
      map_0[lastNonHAtom] = tempIndex;
      temp = isSimpleHydrogen[i];
      isSimpleHydrogen[i] = isSimpleHydrogen[lastNonHAtom];
      isSimpleHydrogen[lastNonHAtom] = temp;
      do 
        lastNonHAtom--;
      while (isSimpleHydrogen[lastNonHAtom]);
    }
  }
  return map_0;
}
;
_.getHandleHydrogenMap_0 = function getHandleHydrogenMap(){
  return this.getHandleHydrogenAtomMap(this.findSimpleHydrogens());
}
;
_.getHelperArrayStatus_0 = function getHelperArrayStatus(){
  return this.mValidHelperArrays;
}
;
_.getImplicitHigherValence_0 = function getImplicitHigherValence(atom, neglectExplicitHydrogen){
  var i, occupiedValence, valences;
  occupiedValence = this.getOccupiedValence_0(atom);
  occupiedValence -= this.getElectronValenceCorrection_0(atom, occupiedValence);
  if (neglectExplicitHydrogen)
    occupiedValence -= this.mAllConnAtoms[atom] - this.mConnAtoms[atom];
  valences = carc2.getAllowedValences(this.mAtomicNo[atom]);
  if (occupiedValence <= valences[0])
    return -1;
  for (i = 1; i < valences.length; i++)
    if (valences[i] >= occupiedValence)
      return valences[i];
  return occupiedValence;
}
;
_.getImplicitHydrogens_0 = function getImplicitHydrogens(atom){
  var delocalizedBonds, i, i0, maxValence, occupiedValence, valenceList;
  if (this.mIsFragment && eq(and_0(this.mAtomQueryFeatures[atom], 2048), 0))
    return 0;
  if (!this.supportsImplicitHydrogen_0(atom))
    return 0;
  this.ensureHelperArrays_0(1);
  occupiedValence = 0;
  for (i0 = 0; i0 < this.mAllConnAtoms[atom]; i0++)
    occupiedValence += this.mConnBondOrder[atom][i0];
  if (this.mIsFragment) {
    delocalizedBonds = 1;
    for (i = 0; i < this.mConnAtoms[atom]; i++)
      if (this.mBondType[this.mConnBond[atom][i]] == 64)
        delocalizedBonds++;
    occupiedValence += delocalizedBonds >> 1;
  }
  occupiedValence -= this.getElectronValenceCorrection_0(atom, occupiedValence);
  maxValence = this.getAtomAbnormalValence_0(atom);
  if (maxValence == -1) {
    valenceList = carc2.getAllowedValences(this.mAtomicNo[atom]);
    maxValence = valenceList[0];
    for (i = 1; maxValence < occupiedValence && i < valenceList.length; i++)
      maxValence = valenceList[i];
  }
  return $wnd.Math.max(0, maxValence - occupiedValence);
}
;
_.getLowestFreeValence_0 = function getLowestFreeValence(atom){
  var atomicNo, atomicNo$array, atomicNo$index, atomicNo$max, valence;
  if (!this.mIsFragment || jsEquals(this.mAtomList, null) || jsEquals(this.mAtomList[atom], null))
    return this.getLowestFreeValence_1(atom, this.mAtomicNo[atom]);
  valence = 0;
  for (atomicNo$array = this.mAtomList[atom] , atomicNo$index = 0 , atomicNo$max = atomicNo$array.length; atomicNo$index < atomicNo$max; ++atomicNo$index) {
    atomicNo = atomicNo$array[atomicNo$index];
    valence = $wnd.Math.max(valence, this.getLowestFreeValence_1(atom, atomicNo));
  }
  return valence;
}
;
_.getLowestFreeValence_1 = function getLowestFreeValence_0(atom, atomicNo){
  var correction, i, occupiedValence, valence, valenceList;
  occupiedValence = this.getOccupiedValence_0(atom);
  correction = this.getElectronValenceCorrection_1(atom, occupiedValence, atomicNo);
  valence = this.getAtomAbnormalValence_0(atom);
  if (valence == -1) {
    valenceList = carc2.getAllowedValences(this.mAtomicNo[atom]);
    i = 0;
    while (occupiedValence > valenceList[i] + correction && i < valenceList.length - 1)
      i++;
    valence = valenceList[i];
  }
  return valence + correction - occupiedValence;
}
;
_.getMetalBondedConnAtoms_0 = function getMetalBondedConnAtoms(atom){
  return this.mConnAtom[atom].length - this.mAllConnAtoms[atom];
}
;
_.getMolweight_0 = function getMolweight(){
  var atom, connAtoms, mass, molweight;
  this.ensureHelperArrays_0(1);
  molweight = 0;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    mass = this.mAtomMass[atom] != 0?this.mAtomMass[atom]:(carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mAtomicNo[atom]];
    molweight += mass + this.getImplicitHydrogens_0(atom) * (carc2.$clinit_Molecule() , carc2.cRoundedMass)[1];
    if (this.mAtomicNo[atom] >= 171 && this.mAtomicNo[atom] <= 190) {
      connAtoms = this.mAllConnAtoms[atom];
      if (connAtoms > 2)
        molweight -= (connAtoms - 2) * (carc2.$clinit_Molecule() , carc2.cRoundedMass)[1];
    }
  }
  return molweight;
}
;
_.getNonHydrogenNeighbourCount_0 = function getNonHydrogenNeighbourCount(atom){
  var count, i;
  count = this.mConnAtoms[atom];
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if (this.mAtomicNo[this.mConnAtom[atom][i]] == 1)
      count--;
  return count;
}
;
_.getOccupiedValence_0 = function getOccupiedValence_0(atom){
  var bond, delocalizedBondFound, i, order, piElectronsFound, valence;
  this.ensureHelperArrays_0(1);
  piElectronsFound = false;
  delocalizedBondFound = false;
  valence = 0;
  for (i = 0; i < this.mAllConnAtoms[atom]; i++) {
    if (!this.mIsFragment || eq(and_0(this.mAtomQueryFeatures[this.mConnAtom[atom][i]], 536870912), 0)) {
      order = this.mConnBondOrder[atom][i];
      valence += order;
      if (order > 1)
        piElectronsFound = true;
      bond = this.mConnBond[atom][i];
      if (this.mBondType[bond] == 64)
        delocalizedBondFound = true;
    }
  }
  if (delocalizedBondFound && !piElectronsFound)
    valence++;
  return valence;
}
;
_.getOrthoSubstituentCount = function getOrthoSubstituentCount(atom, otherBondAtom){
  var connAtom, count, i;
  count = 0;
  for (i = 0; i < this.mConnAtoms[atom]; i++) {
    connAtom = this.mConnAtom[atom][i];
    if (connAtom != otherBondAtom && this.mConnAtoms[connAtom] > 2)
      count++;
  }
  return count;
}
;
_.getPath_0 = function getPath(pathAtom, atom1, atom2, maxLength, neglectBond){
  return this.getPath_1(pathAtom, atom1, atom2, maxLength, null, neglectBond);
}
;
_.getPath_1 = function getPath_0(pathAtom, atom1, atom2, maxLength, neglectAtom, neglectBond){
  var candidate, current, graphAtom, graphLevel, highest, i, index_0, parent_0, parentAtom;
  if (atom1 == atom2) {
    pathAtom[0] = atom1;
    return 0;
  }
  this.ensureHelperArrays_0(1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  parentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom[0] = atom1;
  graphLevel[atom1] = 1;
  current = 0;
  highest = 0;
  while (current <= highest && graphLevel[graphAtom[current]] <= maxLength) {
    parent_0 = graphAtom[current];
    for (i = 0; i < this.mAllConnAtoms[parent_0]; i++) {
      if (jsEquals(neglectBond, null) || neglectBond.length <= this.mConnBond[parent_0][i] || !neglectBond[this.mConnBond[parent_0][i]]) {
        candidate = this.mConnAtom[parent_0][i];
        if (candidate == atom2) {
          index_0 = graphLevel[parent_0];
          pathAtom[index_0] = candidate;
          pathAtom[--index_0] = parent_0;
          while (index_0 > 0) {
            pathAtom[index_0 - 1] = parentAtom[pathAtom[index_0]];
            index_0--;
          }
          return graphLevel[parent_0];
        }
        if (graphLevel[candidate] == 0 && (jsEquals(neglectAtom, null) || neglectAtom.length <= candidate || !neglectAtom[candidate])) {
          graphAtom[++highest] = candidate;
          graphLevel[candidate] = graphLevel[parent_0] + 1;
          parentAtom[candidate] = parent_0;
        }
      }
    }
    current++;
  }
  return -1;
}
;
_.getPathBonds_0 = function getPathBonds(pathAtom, pathBond, pathLength){
  var i, j;
  this.ensureHelperArrays_0(1);
  for (i = 0; i < pathLength; i++) {
    for (j = 0; j < this.mAllConnAtoms[pathAtom[i]]; j++) {
      if (this.mConnAtom[pathAtom[i]][j] == pathAtom[i + 1]) {
        pathBond[i] = this.mConnBond[pathAtom[i]][j];
        break;
      }
    }
  }
}
;
_.getPathLength_0 = function getPathLength(atom1, atom2){
  var candidate, current, graphAtom, graphLevel, highest, i;
  if (atom1 == atom2)
    return 0;
  this.ensureHelperArrays_0(1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom[0] = atom1;
  graphLevel[atom1] = 1;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < this.mAllConnAtoms[graphAtom[current]]; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate == atom2)
        return graphLevel[graphAtom[current]];
      if (graphLevel[candidate] == 0) {
        graphAtom[++highest] = candidate;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
      }
    }
    current++;
  }
  return -1;
}
;
_.getPathLength_1 = function getPathLength_0(atom1, atom2, maxLength, neglectAtom){
  var candidate, current, graphAtom, graphLevel, highest, i;
  if (atom1 == atom2)
    return 0;
  this.ensureHelperArrays_0(1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  graphAtom[0] = atom1;
  graphLevel[atom1] = 1;
  current = 0;
  highest = 0;
  while (current <= highest && graphLevel[graphAtom[current]] <= maxLength) {
    for (i = 0; i < this.mAllConnAtoms[graphAtom[current]]; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate == atom2)
        return graphLevel[graphAtom[current]];
      if (graphLevel[candidate] == 0 && (jsEquals(neglectAtom, null) || neglectAtom.length <= candidate || !neglectAtom[candidate])) {
        graphAtom[++highest] = candidate;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
      }
    }
    current++;
  }
  return -1;
}
;
_.getPlainHydrogens = function getPlainHydrogens(atom){
  return this.getExplicitHydrogens_0(atom) + this.getImplicitHydrogens_0(atom);
}
;
_.getPreferredDoubleBondSide = function getPreferredDoubleBondSide(bond){
  var angle, angles, atom, bondAngle, changed, connAtom, connBond, i, i0, j, sharedRing, side, value_0;
  value_0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 16, 15, 1);
  angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 16, 15, 1);
  bondAngle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  angles = 0;
  for (i0 = 0; i0 < 2; i0++) {
    atom = this.mBondAtom[i0][bond];
    for (j = 0; j < this.mConnAtoms[atom]; j++) {
      connBond = this.mConnBond[atom][j];
      if (connBond == bond)
        continue;
      if (angles == 4)
        return 0;
      connAtom = this.mConnAtom[atom][j];
      value_0[angles] = 16;
      if (this.mPi[connAtom] != 0)
        value_0[angles] += this.isRingAtom_0(connAtom)?1:4;
      if (this.isRingBond_0(bond) && this.isRingBond_0(connBond)) {
        sharedRing = this.mRingSet.getSharedRing_0(bond, connBond);
        if (sharedRing != -1)
          value_0[angles] += this.mRingSet.isAromatic_0(sharedRing)?64:6;
      }
      angle[angles++] = this.getBondAngle_0(atom, connAtom);
    }
  }
  bondAngle[0] = this.getBondAngle_0(this.mBondAtom[0][bond], this.mBondAtom[1][bond]);
  if (bondAngle[0] < 0) {
    bondAngle[1] = bondAngle[0] + 3.141592653589793;
    changed = false;
  }
   else {
    bondAngle[1] = bondAngle[0];
    bondAngle[0] = bondAngle[1] - 3.141592653589793;
    changed = true;
  }
  side = 0;
  for (i = 0; i < angles; i++) {
    if (angle[i] > bondAngle[0] && angle[i] < bondAngle[1])
      side -= value_0[i];
    else 
      side += value_0[i];
  }
  return changed?-side:side;
}
;
_.getRingSet_0 = function getRingSet(){
  this.ensureHelperArrays_0(7);
  return this.mRingSet;
}
;
_.getRotatableBondCount_0 = function getRotatableBondCount(){
  var atom1, atom2, bond, connAtom, connBond, i, isRotatable, j, rCount;
  rCount = 0;
  this.ensureHelperArrays_0(7);
  for (bond = 0; bond < this.mBonds; bond++) {
    if (this.getBondOrder_0(bond) == 1 && !this.isRingBond_0(bond)) {
      isRotatable = true;
      for (i = 0; i < 2; i++) {
        atom1 = this.mBondAtom[i][bond];
        if (this.mConnAtoms[atom1] == 1) {
          isRotatable = false;
          break;
        }
        if (this.mAtomicNo[atom1] == 7 && !this.isAromaticAtom_1(atom1)) {
          atom2 = this.mBondAtom[1 - i][bond];
          for (j = 0; j < this.mConnAtoms[atom2]; j++) {
            connAtom = this.mConnAtom[atom2][j];
            connBond = this.mConnBond[atom2][j];
            if (connBond != bond && this.getBondOrder_0(connBond) > 1 && !this.isAromaticAtom_1(connAtom) && this.isElectronegative_0(connAtom)) {
              isRotatable = false;
              break;
            }
          }
        }
      }
      if (isRotatable && !this.isPseudoRotatableBond_0(bond))
        rCount++;
    }
  }
  return rCount;
}
;
_.getSecondOrderOrthoSubstituentCount = function getSecondOrderOrthoSubstituentCount(atom, otherBondAtom){
  var connAtom, count, i, innerCount, j, nextConnAtom;
  count = 0;
  for (i = 0; i < this.mConnAtoms[atom]; i++) {
    connAtom = this.mConnAtom[atom][i];
    if (connAtom != otherBondAtom) {
      innerCount = 0;
      for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
        nextConnAtom = this.mConnAtom[connAtom][j];
        if (nextConnAtom != atom && this.isAromaticBond_0(this.mConnBond[connAtom][j]) && this.mConnAtoms[nextConnAtom] > 2)
          innerCount++;
      }
      if (innerCount == 2)
        count++;
    }
  }
  return count;
}
;
_.getSortedConnMap = function getSortedConnMap(atom){
  var connAtoms, i, i0, indexMap;
  connAtoms = this.mAllConnAtoms[atom];
  indexMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, connAtoms, 15, 1);
  for (i0 = 0; i0 < connAtoms; i0++)
    indexMap[i0] = (this.mConnAtom[atom][i0] << 16) + i0;
  ju.sort_3(indexMap);
  for (i = 0; i < connAtoms; i++)
    indexMap[i] &= 65535;
  return indexMap;
}
;
_.getStereoBond_0 = function getStereoBond(atom){
  var i, j;
  this.ensureHelperArrays_0(1);
  if (this.mConnAtoms[atom] == 2 && this.mConnBondOrder[atom][0] == 2 && this.mConnBondOrder[atom][1] == 2) {
    for (i = 0; i < 2; i++)
      for (j = 0; j < this.mAllConnAtoms[this.mConnAtom[atom][i]]; j++)
        if (this.isStereoBond_1(this.mConnBond[this.mConnAtom[atom][i]][j], this.mConnAtom[atom][i]))
          return this.mConnBond[this.mConnAtom[atom][i]][j];
  }
   else {
    for (i = 0; i < this.mAllConnAtoms[atom]; i++)
      if (this.isStereoBond_1(this.mConnBond[atom][i], atom))
        return this.mConnBond[atom][i];
  }
  return -1;
}
;
_.getStereoBondScore = function getStereoBondScore(bond, atom){
  if (this.getBondOrder_0(bond) != 1)
    return 0;
  return 16 - this.mAllConnAtoms[atom] + 16 * $wnd.Math.max(0, $wnd.Math.min(9, this.getBondRingSize_0(bond)) - 2) + ((this.mBondType[bond] & 384) == 0 || this.mBondAtom[0][bond] != atom?32768:0) + (this.getAtomParity_0(atom) == 0?4096:0) + (this.mAtomicNo[atom] == 1?2048:0) + (this.mAllConnAtoms[atom] == 1?1024:0) + (!this.isRingBond_0(bond)?512:0) + (this.mAtomicNo[atom] != 6?256:0);
}
;
_.getSubstituent_0 = function getSubstituent(coreAtom, firstAtom, isMemberAtom, substituent, atomMap){
  var candidate, current, graphAtom, highest, i;
  this.ensureHelperArrays_0(1);
  if (isNotNull(substituent)) {
    substituent.clear_0();
    substituent.mIsFragment = false;
  }
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  if (jsEquals(isMemberAtom, null))
    isMemberAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mAllAtoms, 16, 1);
  else 
    ju.fill_3(isMemberAtom, false);
  graphAtom[0] = coreAtom;
  graphAtom[1] = firstAtom;
  isMemberAtom[coreAtom] = true;
  isMemberAtom[firstAtom] = true;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mAllConnAtoms[graphAtom[current]]; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate == coreAtom) {
        if (current != 1)
          return -1;
      }
      if (!isMemberAtom[candidate]) {
        isMemberAtom[candidate] = true;
        graphAtom[++highest] = candidate;
      }
    }
    current++;
  }
  if (isNotNull(substituent)) {
    if (jsEquals(atomMap, null))
      atomMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, isMemberAtom.length, 15, 1);
    this.copyMoleculeByAtoms_0(substituent, isMemberAtom, false, atomMap);
    substituent.changeAtom_0(atomMap[coreAtom], 0, 0, -1, 0);
  }
  isMemberAtom[coreAtom] = false;
  return highest;
}
;
_.getSubstituentSize_0 = function getSubstituentSize(coreAtom, firstAtom){
  var candidate, current, graphAtom, highest, i, isMember;
  this.ensureHelperArrays_0(1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAtoms, 15, 1);
  isMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mAtoms, 16, 1);
  graphAtom[0] = coreAtom;
  graphAtom[1] = firstAtom;
  isMember[coreAtom] = true;
  isMember[firstAtom] = true;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mConnAtoms[graphAtom[current]]; i++) {
      candidate = this.mConnAtom[graphAtom[current]][i];
      if (candidate == coreAtom) {
        if (current != 1)
          return -1;
      }
      if (!isMember[candidate]) {
        isMember[candidate] = true;
        graphAtom[++highest] = candidate;
      }
    }
    current++;
  }
  return highest;
}
;
_.getZNeighbour_0 = function getZNeighbour(connAtom, bond){
  var atom1, atom2, conn, found, highConn, i, j, j0, lowConn, other1, parity;
  if (this.getBondOrder_0(bond) != 2 && !this.isAromaticBond_0(bond))
    return -1;
  parity = this.getBondParity_0(bond);
  if (parity != 1 && parity != 2)
    return -1;
  for (i = 0; i < 2; i++) {
    atom1 = this.mBondAtom[i][bond];
    atom2 = this.mBondAtom[1 - i][bond];
    other1 = -1;
    found = false;
    for (j0 = 0; j0 < this.mConnAtoms[atom1]; j0++) {
      conn = this.mConnAtom[atom1][j0];
      if (conn != atom2) {
        if (conn == connAtom)
          found = true;
        else 
          other1 = conn;
      }
    }
    if (found) {
      lowConn = -1;
      highConn = -1;
      for (j = 0; j < this.mConnAtoms[atom2]; j++) {
        conn = this.mConnAtom[atom2][j];
        if (conn != atom1) {
          if (lowConn == -1)
            lowConn = conn;
          else if (conn > lowConn)
            highConn = conn;
          else {
            highConn = lowConn;
            lowConn = conn;
          }
        }
      }
      if (this.mConnAtoms[atom1] == 2) {
        if (this.mConnAtoms[atom2] == 2)
          return parity == 2?lowConn:-1;
        return parity == 2?lowConn:highConn;
      }
       else {
        if (this.mConnAtoms[atom2] == 2)
          return parity == 2 ^ connAtom < other1?-1:lowConn;
        return parity == 2 ^ connAtom < other1?highConn:lowConn;
      }
    }
  }
  return -1;
}
;
_.handleHydrogens = function handleHydrogens(){
  var atom, atom1, atom2, bond, bond0, isHydrogen, isHydrogenBond, lastNonHAtom, lastNonHBond, temp;
  isHydrogen = this.findSimpleHydrogens();
  lastNonHAtom = this.mAllAtoms;
  do 
    lastNonHAtom--;
  while (lastNonHAtom >= 0 && isHydrogen[lastNonHAtom]);
  for (atom = 0; atom < lastNonHAtom; atom++) {
    if (isHydrogen[atom]) {
      this.swapAtoms_0(atom, lastNonHAtom);
      temp = isHydrogen[atom];
      isHydrogen[atom] = isHydrogen[lastNonHAtom];
      isHydrogen[lastNonHAtom] = temp;
      do 
        lastNonHAtom--;
      while (isHydrogen[lastNonHAtom]);
    }
  }
  this.mAtoms = lastNonHAtom + 1;
  if (this.mAllAtoms == this.mAtoms) {
    this.mBonds = this.mAllBonds;
    return;
  }
  isHydrogenBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mAllBonds, 16, 1);
  for (bond0 = 0; bond0 < this.mAllBonds; bond0++) {
    atom1 = this.mBondAtom[0][bond0];
    atom2 = this.mBondAtom[1][bond0];
    if (isHydrogen[atom1] || isHydrogen[atom2])
      isHydrogenBond[bond0] = true;
  }
  lastNonHBond = this.mAllBonds;
  do 
    lastNonHBond--;
  while (lastNonHBond >= 0 && isHydrogenBond[lastNonHBond]);
  for (bond = 0; bond < lastNonHBond; bond++) {
    if (isHydrogenBond[bond]) {
      this.swapBonds_0(bond, lastNonHBond);
      isHydrogenBond[bond] = false;
      do 
        lastNonHBond--;
      while (isHydrogenBond[lastNonHBond]);
    }
  }
  this.mBonds = lastNonHBond + 1;
}
;
_.hasNegativeNeighbour = function hasNegativeNeighbour(atom){
  var i;
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if (this.mAtomCharge[this.mConnAtom[atom][i]] < 0)
      return true;
  return false;
}
;
_.hasPositiveNeighbour = function hasPositiveNeighbour(atom){
  var i;
  for (i = 0; i < this.mConnAtoms[atom]; i++)
    if (this.mAtomCharge[this.mConnAtom[atom][i]] > 0)
      return true;
  return false;
}
;
_.isAlkaliMetal_0 = function isAlkaliMetal(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 3 || atomicNo == 11 || atomicNo == 19 || atomicNo == 37 || atomicNo == 55;
}
;
_.isAllylicAtom_0 = function isAllylicAtom(atom){
  return (this.mAtomFlags[atom] & 4096) != 0;
}
;
_.isAmideTypeBond_0 = function isAmideTypeBond(bond){
  var atom1, atom2, connAtom, connBond, i, j;
  this.ensureHelperArrays_0(1);
  for (i = 0; i < 2; i++) {
    atom1 = this.mBondAtom[i][bond];
    if (this.mAtomicNo[atom1] == 7) {
      atom2 = this.mBondAtom[1 - i][bond];
      for (j = 0; j < this.mConnAtoms[atom2]; j++) {
        connAtom = this.mConnAtom[atom2][j];
        connBond = this.mConnBond[atom2][j];
        if ((this.mAtomicNo[connAtom] == 7 || this.mAtomicNo[connAtom] == 8 || this.mAtomicNo[connAtom] == 16) && this.getBondOrder_0(connBond) >= 2)
          return true;
      }
    }
  }
  return false;
}
;
_.isAromaticAtom_1 = function isAromaticAtom_1(atom){
  return atom < this.mAtoms?this.mRingSet.isAromaticAtom_1(atom):false;
}
;
_.isAromaticBond_0 = function isAromaticBond_0(bond){
  return bond < this.mBonds?this.mRingSet.isAromaticBond_0(bond):false;
}
;
_.isBINAPChiralityBond_0 = function isBINAPChiralityBond(bond){
  var atom1, atom2, orthoSubstituentCount1, orthoSubstituentCount2, secondOrderOrthoSubstituentCount1, secondOrderOrthoSubstituentCount2;
  if (this.mBondType[bond] != 1 || this.isAromaticBond_0(bond) || this.isRingBond_0(bond) && this.getBondRingSize_0(bond) < 7)
    return false;
  atom1 = this.mBondAtom[0][bond];
  if (!this.isAromaticAtom_1(atom1) || this.getAtomRingSize_0(atom1) < 5)
    return false;
  atom2 = this.mBondAtom[1][bond];
  if (!this.isAromaticAtom_1(atom2) || this.getAtomRingSize_0(atom2) < 5)
    return false;
  orthoSubstituentCount1 = this.getOrthoSubstituentCount(atom1, atom2);
  orthoSubstituentCount2 = this.getOrthoSubstituentCount(atom2, atom1);
  if (this.getAtomRingSize_0(atom1) > 5 && this.getAtomRingSize_0(atom2) > 5)
    return orthoSubstituentCount1 + orthoSubstituentCount2 > 2;
  secondOrderOrthoSubstituentCount1 = this.getSecondOrderOrthoSubstituentCount(atom1, atom2);
  secondOrderOrthoSubstituentCount2 = this.getSecondOrderOrthoSubstituentCount(atom2, atom1);
  if (orthoSubstituentCount1 == 2 && secondOrderOrthoSubstituentCount2 >= 1)
    return true;
  if (orthoSubstituentCount2 == 2 && secondOrderOrthoSubstituentCount1 >= 1)
    return true;
  if (secondOrderOrthoSubstituentCount1 == 2 && (orthoSubstituentCount2 >= 1 || secondOrderOrthoSubstituentCount2 >= 1))
    return true;
  if (secondOrderOrthoSubstituentCount2 == 2 && (orthoSubstituentCount1 >= 1 || secondOrderOrthoSubstituentCount1 >= 1))
    return true;
  return false;
}
;
_.isCentralAlleneAtom = function isCentralAlleneAtom(atom){
  return this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2 && this.mConnBondOrder[atom][0] == 2 && this.mConnBondOrder[atom][1] == 2 && this.mAtomicNo[atom] <= 7;
}
;
_.isChalcogene_0 = function isChalcogene(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 8 || atomicNo == 16 || atomicNo == 34 || atomicNo == 52;
}
;
_.isDelocalizedBond_0 = function isDelocalizedBond_1(bond){
  return bond < this.mBonds?this.mRingSet.isDelocalizedBond_0(bond) || this.mBondType[bond] == 64:false;
}
;
_.isEarthAlkaliMetal_0 = function isEarthAlkaliMetal(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 12 || atomicNo == 20 || atomicNo == 38 || atomicNo == 56;
}
;
_.isFlatNitrogen_0 = function isFlatNitrogen(atom){
  return this.isFlatNitrogen_1(atom, true);
}
;
_.isFlatNitrogen_1 = function isFlatNitrogen_0(atom, checkForPyramidalBridgeHead){
  var atomicNo, connAtom, hasCompetitor, heteroCount, i, i0, i1, isStabilized, j, j0, nitrogenNeighbourCount, ortho, orthoSubstituentCount;
  if (this.mAtomicNo[atom] != 7 || this.mConnAtoms[atom] == 4)
    return false;
  if (this.isAromaticAtom_1(atom) || this.mPi[atom] != 0 || neq(and_0(this.mAtomQueryFeatures[atom], 268435456), 0))
    return true;
  if (this.mAtomCharge[atom] == 1)
    return false;
  for (i0 = 0; i0 < this.mConnAtoms[atom]; i0++)
    if (this.getBondRingSize_0(this.mConnBond[atom][i0]) == 3)
      return false;
  heteroCount = 0;
  for (i1 = 0; i1 < this.mConnAtoms[atom]; i1++) {
    if (this.mConnBondOrder[atom][i1] == 1) {
      atomicNo = this.mAtomicNo[this.mConnAtom[atom][i1]];
      if (atomicNo == 8 || atomicNo == 9 || atomicNo == 17)
        heteroCount++;
    }
  }
  if (heteroCount == 0) {
    for (i = 0; i < this.mConnAtoms[atom]; i++) {
      connAtom = this.mConnAtom[atom][i];
      if (this.mPi[connAtom] != 0) {
        if (this.isAromaticAtom_1(connAtom)) {
          if (this.getAtomRingSize_0(connAtom) >= 5) {
            orthoSubstituentCount = 0;
            for (j0 = 0; j0 < this.mConnAtoms[connAtom]; j0++) {
              ortho = this.mConnAtom[connAtom][j0];
              if (ortho != atom && this.getNonHydrogenNeighbourCount_0(ortho) >= 3)
                orthoSubstituentCount++;
            }
            nitrogenNeighbourCount = this.getNonHydrogenNeighbourCount_0(atom);
            if (orthoSubstituentCount == 2 && nitrogenNeighbourCount >= 2 || orthoSubstituentCount == 1 && nitrogenNeighbourCount == 3)
              continue;
          }
          return !checkForPyramidalBridgeHead || !this.isPyramidalBridgeHead(atom);
        }
        for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
          if (this.mConnBondOrder[connAtom][j] == 2 || this.isAromaticBond_0(this.mConnBond[connAtom][j]))
            return !checkForPyramidalBridgeHead || !this.isPyramidalBridgeHead(atom);
        }
      }
    }
  }
  if (heteroCount < 2) {
    for (i = 0; i < this.mConnAtoms[atom]; i++) {
      connAtom = this.mConnAtom[atom][i];
      isStabilized = false;
      hasCompetitor = false;
      for (j = 0; j < this.mConnAtoms[connAtom]; j++) {
        if (this.mConnAtom[connAtom][j] != atom) {
          if (this.mConnBondOrder[connAtom][j] != 1 && (this.mAtomicNo[this.mConnAtom[connAtom][j]] == 7 || this.mAtomicNo[this.mConnAtom[connAtom][j]] == 8 || this.mAtomicNo[this.mConnAtom[connAtom][j]] == 16))
            isStabilized = true;
          if (this.mConnBondOrder[connAtom][j] == 1 && this.mAtomicNo[this.mConnAtom[connAtom][j]] == 7)
            hasCompetitor = true;
        }
      }
      if (isStabilized && (!hasCompetitor || heteroCount == 0))
        return !checkForPyramidalBridgeHead || !this.isPyramidalBridgeHead(atom);
    }
  }
  return false;
}
;
_.isHalogene_0 = function isHalogene(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 9 || atomicNo == 17 || atomicNo == 35 || atomicNo == 53;
}
;
_.isHeteroAromaticAtom = function isHeteroAromaticAtom(atom){
  return atom < this.mAtoms?this.mRingSet.isHeteroAromaticAtom(atom):false;
}
;
_.isNitrogenFamily_0 = function isNitrogenFamily(atom){
  var atomicNo;
  atomicNo = this.mAtomicNo[atom];
  return atomicNo == 7 || atomicNo == 15 || atomicNo == 33;
}
;
_.isPseudoRotatableBond_0 = function isPseudoRotatableBond(bond){
  var atom, connAtom, connBond, i, j, rearAtom;
  if (this.getBondOrder_0(bond) != 1)
    return false;
  for (i = 0; i < 2; i++) {
    atom = this.mBondAtom[i][bond];
    rearAtom = this.mBondAtom[1 - i][bond];
    while (this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2 && this.mAtomicNo[atom] < 10) {
      for (j = 0; j < 2; j++) {
        connAtom = this.mConnAtom[atom][j];
        if (connAtom != rearAtom) {
          if (this.mConnAtoms[connAtom] == 1)
            return true;
          connBond = this.mConnBond[atom][j];
          if (this.getBondOrder_0(connBond) == 1 && connBond < bond)
            return true;
          rearAtom = atom;
          atom = connAtom;
          break;
        }
      }
    }
    if (this.mConnAtoms[atom] == 1)
      return true;
  }
  return false;
}
;
_.isPyramidEnforcingBridge = function isPyramidEnforcingBridge(atom, ringNo, firstBridgeAtom, firstBridgeBond){
  var bondCountToBridgeHead, bridgeAtomCount, bridgeHead, bridgeHeadIsFlat, bridgeHeadMayInvert, i, neglectBond, pathAtom, pathLength, potentialOtherBridgeHead, potentialOtherBridgeHeadIndex, ringAtom, smallestRingSize;
  neglectBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mBonds, 16, 1);
  neglectBond[firstBridgeBond] = true;
  pathAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 11, 15, 1);
  pathLength = this.getPath_0(pathAtom, firstBridgeAtom, atom, 10, neglectBond);
  if (pathLength == -1)
    return false;
  bridgeAtomCount = 1;
  while (!this.mRingSet.isAtomMember_0(ringNo, pathAtom[bridgeAtomCount]))
    bridgeAtomCount++;
  bondCountToBridgeHead = pathLength - bridgeAtomCount;
  bridgeHead = pathAtom[bridgeAtomCount];
  smallestRingSize = this.mRingSet.getRingSize_0(ringNo);
  if (smallestRingSize == 6 && bondCountToBridgeHead == 2 && bridgeAtomCount == 3) {
    if (this.getAtomRingBondCount_0(pathAtom[1]) >= 3) {
      ringAtom = this.mRingSet.getRingAtoms_0(ringNo);
      for (i = 0; i < 6; i++) {
        if (atom == ringAtom[i]) {
          potentialOtherBridgeHeadIndex = this.mRingSet.validateMemberIndex_0(ringNo, bridgeHead == ringAtom[this.mRingSet.validateMemberIndex_0(ringNo, i + 2)]?i - 2:i + 2);
          potentialOtherBridgeHead = ringAtom[potentialOtherBridgeHeadIndex];
          if (this.getAtomRingBondCount_0(potentialOtherBridgeHead) >= 3 && this.getPathLength_1(pathAtom[1], potentialOtherBridgeHead, 2, null) == 2)
            return true;
          break;
        }
      }
    }
  }
  bridgeHeadIsFlat = this.getAtomPi_0(bridgeHead) == 1 || this.isAromaticAtom_1(bridgeHead) || this.isFlatNitrogen_1(bridgeHead, false);
  bridgeHeadMayInvert = !bridgeHeadIsFlat && this.getAtomicNo_0(bridgeHead) == 7 && this.getAtomCharge_0(bridgeHead) != 1;
  if (bondCountToBridgeHead == 1)
    return !bridgeHeadIsFlat && !bridgeHeadMayInvert && smallestRingSize <= 4 && bridgeAtomCount <= 3;
  switch (smallestRingSize) {
    case 4:
      if (!bridgeHeadIsFlat && !bridgeHeadMayInvert && bridgeAtomCount <= 4)
        return true;
      break;
    case 5:
      if (bridgeHeadMayInvert) {
        if (bridgeAtomCount <= 3)
          return true;
      }
       else if (!bridgeHeadIsFlat) {
        if (bridgeAtomCount <= 4)
          return true;
      }

      break;
    case 6:
      if (bondCountToBridgeHead == 2) {
        if (bridgeHeadIsFlat) {
          if (bridgeAtomCount <= 4)
            return true;
        }
         else if (!bridgeHeadMayInvert) {
          if (bridgeAtomCount <= 3)
            return true;
        }
      }
       else if (bondCountToBridgeHead == 3) {
        if (bridgeHeadIsFlat) {
          if (bridgeAtomCount <= 6)
            return true;
        }
         else {
          if (bridgeAtomCount <= 4)
            return true;
        }
      }

      break;
    case 7:
      if (bondCountToBridgeHead == 3) {
        if (bridgeAtomCount <= 3)
          return true;
      }

      break;
  }
  return false;
}
;
_.isPyramidalBridgeHead = function isPyramidalBridgeHead(atom){
  var connBond, i, smallRingNo, smallRingSize;
  if (this.isAromaticAtom_1(atom) || this.mPi[atom] != 0 || neq(and_0(this.mAtomQueryFeatures[atom], 268435456), 0) || this.getAtomRingBondCount_0(atom) < 3)
    return false;
  smallRingSize = this.getAtomRingSize_0(atom);
  if (smallRingSize > 7)
    return false;
  smallRingNo = 0;
  while (smallRingNo < this.mRingSet.getSize_0()) {
    if (this.mRingSet.getRingSize_0(smallRingNo) == smallRingSize && this.mRingSet.isAtomMember_0(smallRingNo, atom))
      break;
    smallRingNo++;
  }
  if (smallRingNo >= 1024 && smallRingNo == this.mRingSet.getSize_0())
    return false;
  for (i = 0; i < this.mConnAtoms[atom]; i++) {
    connBond = this.mConnBond[atom][i];
    if (!this.mRingSet.isBondMember_0(smallRingNo, connBond) && this.isPyramidEnforcingBridge(atom, smallRingNo, this.mConnAtom[atom][i], connBond))
      return true;
  }
  return false;
}
;
_.isRingAtom_0 = function isRingAtom(atom){
  return (this.mAtomFlags[atom] & 3072) != 0;
}
;
_.isRingBond_0 = function isRingBond(bnd){
  return (this.mBondFlags[bnd] & 64) != 0;
}
;
_.isSimpleHydrogen_0 = function isSimpleHydrogen_0(atom){
  return this.mAtomicNo[atom] == 1 && this.mAtomMass[atom] == 0 && this.mAtomCharge[atom] == 0 && (this.mAtomFlags[atom] & 2013265920) == 0 && (jsEquals(this.mAtomCustomLabel, null) || jsEquals(this.mAtomCustomLabel[atom], null));
}
;
_.isSmallRingAtom_0 = function isSmallRingAtom(atom){
  return (this.mAtomFlags[atom] & 8) != 0;
}
;
_.isSmallRingBond_0 = function isSmallRingBond_0(bond){
  return (this.mBondFlags[bond] & 128) != 0;
}
;
_.isStabilizedAtom_0 = function isStabilizedAtom(atom){
  return (this.mAtomFlags[atom] & 8192) != 0;
}
;
_.normalizeAmbiguousBonds_0 = function normalizeAmbiguousBonds(){
  var atom, atom0, bond, bondDeleted, connAtom, connBond, found, i, valence;
  this.ensureHelperArrays_0(1);
  this.normalizeExplicitlyDelocalizedBonds();
  found = false;
  for (atom0 = 0; atom0 < this.mAtoms; atom0++) {
    if (this.mAtomicNo[atom0] == 7 && this.mAtomCharge[atom0] == 0) {
      valence = this.getOccupiedValence_0(atom0);
      if (valence == 4) {
        for (i = 0; i < this.mConnAtoms[atom0]; i++) {
          connAtom = this.mConnAtom[atom0][i];
          if (this.mConnBondOrder[atom0][i] == 1 && this.mAtomicNo[connAtom] == 8 && this.mConnAtoms[connAtom] == 1 && this.mAtomCharge[connAtom] == 0) {
            found = true;
            this.mAtomCharge[atom0]++;
            this.mAtomCharge[connAtom]--;
            break;
          }
        }
      }
       else if (valence == 5) {
        for (i = 0; i < this.mConnAtoms[atom0]; i++) {
          connAtom = this.mConnAtom[atom0][i];
          connBond = this.mConnBond[atom0][i];
          if (this.mConnBondOrder[atom0][i] == 2 && this.mAtomicNo[connAtom] == 8) {
            found = true;
            this.mAtomCharge[atom0]++;
            this.mAtomCharge[connAtom]--;
            this.mBondType[connBond] = 1;
            break;
          }
          if (this.mConnBondOrder[atom0][i] == 3 && this.mAtomicNo[connAtom] == 7) {
            found = true;
            this.mAtomCharge[atom0]++;
            this.mAtomCharge[connAtom]--;
            this.mBondType[connBond] = 2;
            break;
          }
        }
      }
    }
  }
  bondDeleted = false;
  for (bond = 0; bond < this.mBonds; bond++) {
    for (i = 0; i < 2; i++) {
      if (this.isElectronegative_0(this.mBondAtom[i][bond])) {
        atom = this.mBondAtom[1 - i][bond];
        if (this.isAlkaliMetal_0(atom) || this.isEarthAlkaliMetal_0(atom)) {
          if (this.getBondOrder_0(bond) == 1) {
            this.mAtomCharge[atom]++;
            this.mAtomCharge[this.mBondAtom[i][bond]]--;
            this.mBondType[bond] = 512;
            bondDeleted = true;
          }
           else if (this.mBondType[bond] == 32) {
            this.mBondType[bond] = 512;
            bondDeleted = true;
          }
        }
        break;
      }
    }
  }
  if (bondDeleted) {
    this.compressMolTable();
    found = true;
  }
  if (found)
    this.mValidHelperArrays = 0;
  return found;
}
;
_.normalizeExplicitlyDelocalizedBonds = function normalizeExplicitlyDelocalizedBonds(){
  var bond;
  for (bond = 0; bond < this.mBonds; bond++)
    if (this.mBondType[bond] == 64)
      return (new carc2.AromaticityResolver(this)).locateDelocalizedDoubleBonds(null);
  return false;
}
;
_.preferredAlleneStereoBond = function preferredAlleneStereoBond(atom, excludeStereoBonds){
  var alleneAtom, bestScore, connAtom, connBond, i, j, preferredBond, score;
  preferredBond = -1;
  bestScore = 0;
  for (i = 0; i < 2; i++) {
    alleneAtom = this.mConnAtom[atom][i];
    for (j = 0; j < this.mAllConnAtoms[alleneAtom]; j++) {
      connAtom = this.mConnAtom[alleneAtom][j];
      if (connAtom != atom) {
        connBond = this.mConnBond[alleneAtom][j];
        score = this.getStereoBondScore(connBond, connAtom);
        if (bestScore < score && (!excludeStereoBonds || !this.isStereoBond_0(connBond))) {
          bestScore = score;
          preferredBond = connBond;
        }
      }
    }
  }
  return preferredBond;
}
;
_.preferredBinapStereoBond = function preferredBinapStereoBond(bond){
  var atom, bestScore, connAtom, connBond, i, j, preferredBond, score;
  preferredBond = -1;
  bestScore = 0;
  for (i = 0; i < 2; i++) {
    atom = this.mBondAtom[i][bond];
    for (j = 0; j < this.mAllConnAtoms[atom]; j++) {
      connAtom = this.mConnAtom[atom][j];
      if (connAtom != this.mBondAtom[1 - i][bond]) {
        connBond = this.mConnBond[atom][j];
        score = this.getStereoBondScore(connBond, connAtom);
        if (bestScore < score) {
          bestScore = score;
          preferredBond = connBond;
        }
      }
    }
  }
  return preferredBond;
}
;
_.preferredTHStereoBond = function preferredTHStereoBond(atom, excludeStereoBonds){
  var allConnAtoms, angle, angleDistanceSum1, angleDistanceSum2, bestScore, bond, connAtom, connBond, i, i0, i1, j, k, preferredBond, score;
  allConnAtoms = this.mAllConnAtoms[atom];
  angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, allConnAtoms, 15, 1);
  for (i0 = 0; i0 < allConnAtoms; i0++)
    angle[i0] = this.getBondAngle_0(atom, this.mConnAtom[atom][i0]);
  for (i1 = 1; i1 < allConnAtoms; i1++) {
    for (j = 0; j < i1; j++) {
      if (this.bondsAreParallel(angle[i1], angle[j])) {
        angleDistanceSum1 = 0;
        angleDistanceSum2 = 0;
        for (k = 0; k < allConnAtoms; k++) {
          if (k != i1 && k != j) {
            angleDistanceSum1 += $wnd.Math.abs(caru.difference(angle[i1], angle[k]));
            angleDistanceSum2 += $wnd.Math.abs(caru.difference(angle[j], angle[k]));
          }
        }
        bond = angleDistanceSum1 < angleDistanceSum2?this.mConnBond[atom][i1]:this.mConnBond[atom][j];
        if (this.getBondOrder_0(bond) == 1 && (!excludeStereoBonds || !this.isStereoBond_0(bond)))
          return bond;
      }
    }
  }
  preferredBond = -1;
  bestScore = 0;
  for (i = 0; i < allConnAtoms; i++) {
    connAtom = this.mConnAtom[atom][i];
    connBond = this.mConnBond[atom][i];
    score = this.getStereoBondScore(connBond, connAtom);
    if (bestScore < score && (!excludeStereoBonds || !this.isStereoBond_0(connBond))) {
      bestScore = score;
      preferredBond = connBond;
    }
  }
  return preferredBond;
}
;
_.removeExplicitHydrogens_0 = function removeExplicitHydrogens(){
  this.removeExplicitHydrogens_1(true, false);
}
;
_.removeExplicitHydrogens_1 = function removeExplicitHydrogens_0(hasValid2DCoords, hasValid3DCoords){
  var abnormalValence, atom, explicitAbnormalValence, newAbnormalValence;
  this.ensureHelperArrays_0(hasValid2DCoords?15:1);
  this.mAllAtoms = this.mAtoms;
  this.mAllBonds = this.mBonds;
  for (atom = 0; atom < this.mAtoms; atom++) {
    if (this.mAllConnAtoms[atom] != this.mConnAtoms[atom]) {
      abnormalValence = this.getImplicitHigherValence_0(atom, false);
      this.mAllConnAtoms[atom] = this.mConnAtoms[atom];
      if (abnormalValence != -1) {
        newAbnormalValence = this.getImplicitHigherValence_0(atom, true);
        if (abnormalValence != newAbnormalValence) {
          explicitAbnormalValence = this.getAtomAbnormalValence_0(atom);
          if (explicitAbnormalValence == -1 || explicitAbnormalValence < abnormalValence)
            this.setAtomAbnormalValence_0(atom, abnormalValence);
        }
      }
    }
  }
  if (hasValid2DCoords)
    this.setStereoBondsFromParity_0();
  this.mValidHelperArrays = 0;
}
;
_.rescueImplicitHigherValences = function rescueImplicitHigherValences(destMol, sourceAtomCount, atomMap){
  var abnormalValence, atom, explicitAbnormalValence, newAbnormalValence;
  destMol.ensureHelperArrays_0(1);
  for (atom = 0; atom < sourceAtomCount; atom++) {
    if (atomMap[atom] != -1 && this.mAtomicNo[atom] != 1 && this.mAllConnAtoms[atom] != destMol.getAllConnAtoms_0(atomMap[atom])) {
      abnormalValence = this.getImplicitHigherValence_0(atom, false);
      if (abnormalValence != -1) {
        newAbnormalValence = destMol.getImplicitHigherValence_0(atomMap[atom], false);
        if (abnormalValence != newAbnormalValence) {
          explicitAbnormalValence = destMol.getAtomAbnormalValence_0(atomMap[atom]);
          if (explicitAbnormalValence == -1 || explicitAbnormalValence < abnormalValence)
            destMol.setAtomAbnormalValence_0(atomMap[atom], abnormalValence);
        }
      }
    }
  }
}
;
_.rescueStereoBonds = function rescueStereoBonds(destMol, sourceAtomCount, atomMap, bondMap){
  var angle, angleDif, atom, destBond, i, i0, lostAtom, lostStereoBond, minAngleDif, minConnBond, remainingNeighbours;
  for (atom = 0; atom < sourceAtomCount; atom++) {
    if (atomMap[atom] != -1 && this.mAllConnAtoms[atom] > 3 && this.isAtomStereoCenter_0(atom)) {
      remainingNeighbours = 0;
      lostStereoBond = -1;
      lostAtom = -1;
      for (i0 = 0; i0 < this.mAllConnAtoms[atom]; i0++) {
        if (bondMap[this.mConnBond[atom][i0]] != -1)
          remainingNeighbours++;
        else if (this.mConnBondOrder[atom][i0] == 1 && this.isStereoBond_0(this.mConnBond[atom][i0]) && this.mBondAtom[0][this.mConnBond[atom][i0]] == atom) {
          lostStereoBond = this.mConnBond[atom][i0];
          lostAtom = this.mConnAtom[atom][i0];
        }
      }
      if (lostStereoBond != -1 && remainingNeighbours >= 3) {
        angle = this.getBondAngle_0(atom, lostAtom);
        minAngleDif = 10;
        minConnBond = -1;
        for (i = 0; i < this.mAllConnAtoms[atom]; i++) {
          if (this.mConnBondOrder[atom][i] == 1 && (!this.isStereoBond_0(this.mConnBond[atom][i]) || this.mBondAtom[0][this.mConnBond[atom][i]] == atom) && bondMap[this.mConnBond[atom][i]] != -1) {
            angleDif = $wnd.Math.abs(carc2.getAngleDif(angle, this.getBondAngle_0(atom, this.mConnAtom[atom][i])));
            if (minAngleDif > angleDif) {
              minAngleDif = angleDif;
              minConnBond = this.mConnBond[atom][i];
            }
          }
        }
        if (minConnBond != -1) {
          destBond = bondMap[minConnBond];
          destMol.setBondType_0(destBond, this.mBondType[minConnBond] == 257?129:257);
          if (this.mBondAtom[0][minConnBond] != atom) {
            destMol.setBondAtom_0(1, destBond, atomMap[this.mBondAtom[0][minConnBond]]);
            destMol.setBondAtom_0(0, destBond, atomMap[atom]);
          }
        }
      }
    }
  }
}
;
_.setAlleneStereoBondFromParity = function setAlleneStereoBondFromParity(atom){
  var alleneAngle, alleneAtom, angleDif, bestScore, connAtom, connBond, highPriorityAtom, hpAngleDif, i, i0, i1, i2, j, lpAngleDif, oppositeAlleneAtom, oppositeAtom, oppositeAtoms, preferredAlleneAtom, preferredAtom, preferredBond, score, temp;
  if (this.mConnAtoms[atom] != 2 || this.mConnBondOrder[atom][0] != 2 || this.mConnBondOrder[atom][1] != 2 || this.mConnAtoms[this.mConnAtom[atom][0]] < 2 || this.mConnAtoms[this.mConnAtom[atom][1]] < 2 || this.mPi[this.mConnAtom[atom][0]] != 1 || this.mPi[this.mConnAtom[atom][1]] != 1) {
    this.setAtomParity_0(atom, 0, false);
    return;
  }
  preferredBond = -1;
  preferredAtom = -1;
  preferredAlleneAtom = -1;
  oppositeAlleneAtom = -1;
  bestScore = 0;
  for (i0 = 0; i0 < 2; i0++) {
    alleneAtom = this.mConnAtom[atom][i0];
    for (j = 0; j < this.mAllConnAtoms[alleneAtom]; j++) {
      connAtom = this.mConnAtom[alleneAtom][j];
      if (connAtom != atom) {
        connBond = this.mConnBond[alleneAtom][j];
        score = this.getStereoBondScore(connBond, connAtom);
        if (bestScore < score) {
          bestScore = score;
          preferredAtom = connAtom;
          preferredBond = connBond;
          preferredAlleneAtom = alleneAtom;
          oppositeAlleneAtom = this.mConnAtom[atom][1 - i0];
        }
      }
    }
  }
  if (preferredAtom == -1)
    return;
  for (i1 = 0; i1 < 2; i1++) {
    alleneAtom = this.mConnAtom[atom][i1];
    for (j = 0; j < this.mAllConnAtoms[alleneAtom]; j++) {
      connAtom = this.mConnAtom[alleneAtom][j];
      connBond = this.mConnBond[alleneAtom][j];
      if (connAtom != atom && this.mBondAtom[0][connBond] == alleneAtom)
        this.mBondType[connBond] = 1;
    }
  }
  if (this.mBondAtom[1][preferredBond] != preferredAtom) {
    this.mBondAtom[0][preferredBond] = this.mBondAtom[1][preferredBond];
    this.mBondAtom[1][preferredBond] = preferredAtom;
  }
  highPriorityAtom = 2147483647;
  for (i2 = 0; i2 < this.mConnAtoms[preferredAlleneAtom]; i2++) {
    connAtom = this.mConnAtom[preferredAlleneAtom][i2];
    if (connAtom != atom && highPriorityAtom > connAtom)
      highPriorityAtom = connAtom;
  }
  oppositeAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  oppositeAtoms = 0;
  for (i = 0; i < this.mConnAtoms[oppositeAlleneAtom]; i++) {
    connAtom = this.mConnAtom[oppositeAlleneAtom][i];
    if (connAtom != atom)
      oppositeAtom[oppositeAtoms++] = connAtom;
  }
  alleneAngle = this.getBondAngle_0(atom, oppositeAlleneAtom);
  angleDif = 0;
  if (oppositeAtoms == 2) {
    if (oppositeAtom[0] > oppositeAtom[1]) {
      temp = oppositeAtom[0];
      oppositeAtom[0] = oppositeAtom[1];
      oppositeAtom[1] = temp;
    }
    hpAngleDif = carc2.getAngleDif(alleneAngle, this.getBondAngle_0(oppositeAlleneAtom, oppositeAtom[0]));
    lpAngleDif = carc2.getAngleDif(alleneAngle, this.getBondAngle_0(oppositeAlleneAtom, oppositeAtom[1]));
    angleDif = hpAngleDif - lpAngleDif;
  }
   else {
    angleDif = carc2.getAngleDif(alleneAngle, this.getBondAngle_0(oppositeAlleneAtom, oppositeAtom[0]));
  }
  if (angleDif < 0 ^ this.getAtomParity_0(atom) == 1 ^ highPriorityAtom == preferredAtom)
    this.mBondType[preferredBond] = 257;
  else 
    this.mBondType[preferredBond] = 129;
}
;
_.setFisherProjectionStereoBondsFromParity = function setFisherProjectionStereoBondsFromParity(atom, sortedConnMap, angle){
  var allConnAtoms, bond, bondType, direction, i, parity;
  allConnAtoms = this.mAllConnAtoms[atom];
  direction = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, allConnAtoms, 15, 1);
  parity = this.getFisherProjectionParity_0(atom, sortedConnMap, angle, direction);
  if (parity == 3)
    return false;
  bondType = this.getAtomParity_0(atom) == parity?257:129;
  for (i = 0; i < allConnAtoms; i++) {
    if ((direction[i] & 1) == 1) {
      bond = this.mConnBond[atom][sortedConnMap[i]];
      this.mBondType[bond] = bondType;
      if (this.mBondAtom[0][bond] != atom) {
        this.mBondAtom[1][bond] = this.mBondAtom[0][bond];
        this.mBondAtom[0][bond] = atom;
      }
    }
  }
  return true;
}
;
_.setParitiesValid_0 = function setParitiesValid(helperStereoBits){
  this.mValidHelperArrays |= 248 & (8 | helperStereoBits);
}
;
_.setStereoBondFromAtomParity_0 = function setStereoBondFromAtomParity(atom){
  var allConnAtoms, angle, bondType, i, i0, i1, i2, i3, inverted, order, preferredBond, preferredBondIndex, singleBondFound, sortedConnMap, up_down;
  this.convertStereoBondsToSingleBonds_0(atom);
  if (this.getAtomParity_0(atom) == 0 || this.getAtomParity_0(atom) == 3)
    return;
  if (this.mPi[atom] == 2 && this.mConnAtoms[atom] == 2) {
    this.setAlleneStereoBondFromParity(atom);
    return;
  }
  if (this.mConnAtoms[atom] < 3 || this.mConnAtoms[atom] > 4) {
    this.setAtomParity_0(atom, 0, false);
    return;
  }
  allConnAtoms = this.mAllConnAtoms[atom];
  singleBondFound = false;
  for (i0 = 0; i0 < allConnAtoms; i0++) {
    if (this.getBondOrder_0(this.mConnBond[atom][i0]) == 1) {
      singleBondFound = true;
      break;
    }
  }
  if (!singleBondFound)
    return;
  sortedConnMap = this.getSortedConnMap(atom);
  angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, allConnAtoms, 15, 1);
  for (i1 = 0; i1 < allConnAtoms; i1++)
    angle[i1] = this.getBondAngle_0(this.mConnAtom[atom][sortedConnMap[i1]], atom);
  for (i2 = 0; i2 < allConnAtoms; i2++)
    if (this.mBondAtom[0][this.mConnBond[atom][i2]] == atom && this.getBondOrder_0(this.mConnBond[atom][i2]) == 1)
      this.mBondType[this.mConnBond[atom][i2]] = 1;
  if (this.getAtomRingSize_0(atom) <= 24 && this.setFisherProjectionStereoBondsFromParity(atom, sortedConnMap, angle))
    return;
  preferredBond = this.preferredTHStereoBond(atom, true);
  if (preferredBond == -1)
    return;
  if (this.mBondAtom[0][preferredBond] != atom) {
    this.mBondAtom[1][preferredBond] = this.mBondAtom[0][preferredBond];
    this.mBondAtom[0][preferredBond] = atom;
  }
  preferredBondIndex = -1;
  for (i3 = 0; i3 < allConnAtoms; i3++) {
    if (preferredBond == this.mConnBond[atom][sortedConnMap[i3]]) {
      preferredBondIndex = i3;
      break;
    }
  }
  up_down = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {35:1, 4:1, 1:1, 7:1}, 6, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 1, 2, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 2, 2, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 1, 2, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 1, 1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 2, 1, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 2, 1, 2])]);
  for (i = 1; i < allConnAtoms; i++)
    if (angle[i] < angle[0])
      angle[i] += 3.141592653589793 * 2;
  if (allConnAtoms == 3) {
    inverted = false;
    switch (preferredBondIndex) {
      case 0:
        inverted = angle[1] < angle[2] && angle[2] - angle[1] < 3.141592653589793 || angle[1] > angle[2] && angle[1] - angle[2] > 3.141592653589793;
        break;
      case 1:
        inverted = angle[2] - angle[0] > 3.141592653589793;
        break;
      case 2:
        inverted = angle[1] - angle[0] < 3.141592653589793;
        break;
    }
    bondType = this.getAtomParity_0(atom) == 1 ^ inverted?257:129;
  }
   else {
    order = 0;
    if (angle[1] <= angle[2] && angle[2] <= angle[3])
      order = 0;
    else if (angle[1] <= angle[3] && angle[3] <= angle[2])
      order = 1;
    else if (angle[2] <= angle[1] && angle[1] <= angle[3])
      order = 2;
    else if (angle[2] <= angle[3] && angle[3] <= angle[1])
      order = 3;
    else if (angle[3] <= angle[1] && angle[1] <= angle[2])
      order = 4;
    else if (angle[3] <= angle[2] && angle[2] <= angle[1])
      order = 5;
    bondType = this.getAtomParity_0(atom) == 1 ^ up_down[order][preferredBondIndex] == 1?129:257;
  }
  this.mBondType[preferredBond] = bondType;
}
;
_.setStereoBondFromBondParity_0 = function setStereoBondFromBondParity(bond){
  var angleDif, atom, bestScore, binapAngle, connAtom, connBond, highPriorityAtom, hpAngleDif, i, i0, i1, i2, j, lpAngleDif, oppositeAtom, oppositeAtoms, oppositeBINAPAtom, preferredAtom, preferredBINAPAtom, preferredBond, score, temp;
  if (this.getBondParity_0(bond) == 0 || this.getBondParity_0(bond) == 3 || !this.isBINAPChiralityBond_0(bond))
    return;
  preferredBond = -1;
  preferredAtom = -1;
  preferredBINAPAtom = -1;
  oppositeBINAPAtom = -1;
  bestScore = 0;
  for (i0 = 0; i0 < 2; i0++) {
    atom = this.mBondAtom[i0][bond];
    for (j = 0; j < this.mAllConnAtoms[atom]; j++) {
      connBond = this.mConnBond[atom][j];
      if (connBond != bond && this.getBondOrder_0(connBond) == 1) {
        connAtom = this.mConnAtom[atom][j];
        score = this.getStereoBondScore(connBond, connAtom);
        if (bestScore < score) {
          bestScore = score;
          preferredAtom = connAtom;
          preferredBond = connBond;
          preferredBINAPAtom = atom;
          oppositeBINAPAtom = this.mBondAtom[1 - i0][bond];
        }
      }
    }
  }
  if (preferredAtom == -1)
    return;
  for (i1 = 0; i1 < 2; i1++) {
    for (j = 0; j < this.mAllConnAtoms[this.mBondAtom[i1][bond]]; j++) {
      connBond = this.mConnBond[this.mBondAtom[i1][bond]][j];
      if (connBond != bond && this.getBondOrder_0(connBond) == 1)
        this.mBondType[connBond] = 1;
    }
  }
  if (this.mBondAtom[1][preferredBond] != preferredAtom) {
    this.mBondAtom[0][preferredBond] = this.mBondAtom[1][preferredBond];
    this.mBondAtom[1][preferredBond] = preferredAtom;
  }
  highPriorityAtom = 2147483647;
  for (i2 = 0; i2 < this.mConnAtoms[preferredBINAPAtom]; i2++) {
    connAtom = this.mConnAtom[preferredBINAPAtom][i2];
    if (this.mConnBond[preferredBINAPAtom][i2] != bond && highPriorityAtom > connAtom)
      highPriorityAtom = connAtom;
  }
  oppositeAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  oppositeAtoms = 0;
  for (i = 0; i < this.mConnAtoms[oppositeBINAPAtom]; i++)
    if (this.mConnBond[oppositeBINAPAtom][i] != bond)
      oppositeAtom[oppositeAtoms++] = this.mConnAtom[oppositeBINAPAtom][i];
  binapAngle = this.getBondAngle_0(preferredBINAPAtom, oppositeBINAPAtom);
  angleDif = 0;
  if (oppositeAtoms == 2) {
    if (oppositeAtom[0] > oppositeAtom[1]) {
      temp = oppositeAtom[0];
      oppositeAtom[0] = oppositeAtom[1];
      oppositeAtom[1] = temp;
    }
    hpAngleDif = carc2.getAngleDif(binapAngle, this.getBondAngle_0(oppositeBINAPAtom, oppositeAtom[0]));
    lpAngleDif = carc2.getAngleDif(binapAngle, this.getBondAngle_0(oppositeBINAPAtom, oppositeAtom[1]));
    angleDif = hpAngleDif - lpAngleDif;
  }
   else {
    angleDif = carc2.getAngleDif(binapAngle, this.getBondAngle_0(oppositeBINAPAtom, oppositeAtom[0]));
  }
  if (angleDif < 0 ^ this.getBondParity_0(bond) == 2 ^ highPriorityAtom == preferredAtom)
    this.mBondType[preferredBond] = 257;
  else 
    this.mBondType[preferredBond] = 129;
}
;
_.setStereoBondsFromParity_0 = function setStereoBondsFromParity(){
  var atom, bond, bond0, bond1;
  this.ensureHelperArrays_0(7);
  for (bond0 = 0; bond0 < this.mBonds; bond0++)
    if (this.isStereoBond_0(bond0))
      this.mBondType[bond0] = 1;
  for (atom = 0; atom < this.mAtoms; atom++)
    this.setStereoBondFromAtomParity_0(atom);
  for (bond1 = 0; bond1 < this.mBonds; bond1++)
    this.setStereoBondFromBondParity_0(bond1);
  for (bond = 0; bond < this.mBonds; bond++)
    if (this.mBondType[bond] == 2 && this.getBondParity_0(bond) == 3)
      this.mBondType[bond] = 386;
}
;
_.shareSameFragment_0 = function shareSameFragment(atom1, atom2){
  return this.getPathLength_0(atom1, atom2) != -1;
}
;
_.stripSmallFragments_0 = function stripSmallFragments(considerMetalBonds){
  var atom, atom0, atomMap, bond, e, fragmentCount, fragmentNo, fragmentSize, i, largestFragment, largestSize;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  fragmentCount = this.getFragmentNumbers_0(fragmentNo, false, considerMetalBonds);
  if (fragmentCount <= 1)
    return null;
  fragmentSize = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragmentCount, 15, 1);
  for (atom0 = 0; atom0 < this.mAtoms; atom0++)
    fragmentSize[fragmentNo[atom0]]++;
  largestFragment = 0;
  largestSize = fragmentSize[0];
  for (i = 1; i < fragmentCount; i++) {
    if (largestSize < fragmentSize[i]) {
      largestSize = fragmentSize[i];
      largestFragment = i;
    }
  }
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (fragmentNo[atom] != largestFragment)
      this.mAtomicNo[atom] = -1;
  for (bond = 0; bond < this.mAllBonds; bond++)
    if (!considerMetalBonds && this.mBondType[bond] == 32 || fragmentNo[this.mBondAtom[0][bond]] != largestFragment)
      this.mBondType[bond] = 512;
  atomMap = this.compressMolTable();
  this.mValidHelperArrays = 0;
  try {
    this.canonizeCharge_1(true, true);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
    }
     else 
      throw toJs($e0);
  }
  return atomMap;
}
;
_.supportsImplicitHydrogen_0 = function supportsImplicitHydrogen(atom){
  if ((this.mAtomFlags[atom] & 2013265920) != 0)
    return true;
  if (this.mAtomicNo[atom] == 1)
    return false;
  return this.isOrganicAtom_0(atom) || this.mAtomicNo[atom] == 13 || this.mAtomicNo[atom] >= 171;
}
;
_.validate_0 = function validate(){
  var allCharge, atom, atom1, atom2, avbl, minDistanceSquare, xdif, ydif, zdif;
  avbl = this.getAverageBondLength_0();
  minDistanceSquare = avbl * avbl / 16;
  for (atom1 = 1; atom1 < this.mAllAtoms; atom1++) {
    for (atom2 = 0; atom2 < atom1; atom2++) {
      xdif = this.mCoordinates[atom2].x_0 - this.mCoordinates[atom1].x_0;
      ydif = this.mCoordinates[atom2].y_0 - this.mCoordinates[atom1].y_0;
      zdif = this.mCoordinates[atom2].z_0 - this.mCoordinates[atom1].z_0;
      if (xdif * xdif + ydif * ydif + zdif * zdif < minDistanceSquare)
        throw toJs(new jl.Exception_1('The distance between two atoms is too close.'));
    }
  }
  this.ensureHelperArrays_0(1);
  allCharge = 0;
  for (atom = 0; atom < this.mAtoms; atom++) {
    if (this.getOccupiedValence_0(atom) > this.getMaxValence_0(atom))
      throw toJs(new jl.Exception_1('atom valence exceeded'));
    allCharge += this.mAtomCharge[atom];
  }
  if (allCharge != 0)
    throw toJs(new jl.Exception_1('unbalanced atom charge'));
}
;
_.validateAtomQueryFeatures = function validateAtomQueryFeatures(){
  var atom;
  if (!this.mIsFragment)
    return;
  this.ensureHelperArrays_0(7);
  for (atom = 0; atom < this.mAtoms; atom++) {
    if (this.isRingAtom_0(atom)) {
      if (eq(and_0(this.mAtomQueryFeatures[atom], 120), 8))
        this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(8));
      this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(4294967296));
    }
    if (this.isAromaticAtom_1(atom))
      this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0({l:6, m:0, h:4}));
    else if (neq(and_0(this.mAtomQueryFeatures[atom], 2), 0))
      this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(4));
    if (neq(and_0(this.mAtomQueryFeatures[atom], 29360128), 0) || neq(and_0(this.mAtomQueryFeatures[atom], 545460846592), 0) && eq(and_0(this.mAtomQueryFeatures[atom], 4294967296), 0)) {
      if (eq(and_0(this.mAtomQueryFeatures[atom], 120), 8))
        this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(8));
    }
    if (this.mAtomCharge[atom] != 0)
      this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(234881024));
    if (this.getOccupiedValence_0(atom) == this.getMaxValence_0(atom)) {
      this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(4063232));
      this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(17042430230528));
      this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(1920));
      this.mAtomQueryFeatures[atom] = and_0(this.mAtomQueryFeatures[atom], not_0(114688));
    }
  }
}
;
_.validateBondQueryFeatures = function validateBondQueryFeatures(){
  var bond, bondType;
  if (!this.mIsFragment)
    return;
  this.ensureHelperArrays_0(7);
  for (bond = 0; bond < this.mBonds; bond++) {
    if (this.isDelocalizedBond_0(bond))
      this.mBondQueryFeatures[bond] &= ~8;
    bondType = this.mBondType[bond] & 127;
    if (bondType == 1)
      this.mBondQueryFeatures[bond] &= ~1;
    else if (bondType == 2)
      this.mBondQueryFeatures[bond] &= ~2;
    else if (bondType == 4)
      this.mBondQueryFeatures[bond] &= ~4;
    else if (bondType == 8)
      this.mBondQueryFeatures[bond] &= ~32;
    else if (bondType == 16)
      this.mBondQueryFeatures[bond] &= ~64;
    else if (bondType == 32)
      this.mBondQueryFeatures[bond] &= ~16;
    else if (bondType == 64)
      this.mBondQueryFeatures[bond] &= ~8;
  }
}
;
_.validateBondType = function validateBondType_0(bond, type_0){
  var ok;
  ok = getClassPrototype(70).validateBondType.call(this, bond, type_0);
  if (ok && type_0 == 386) {
    this.ensureHelperArrays_0(7);
    ok = ok & !this.isSmallRingBond_0(bond);
  }
  return ok;
}
;
_.mAtoms = 0;
_.mBonds = 0;
carc2.FISCHER_PROJECTION_LIMIT = 0;
carc2.FISCHER_PROJECTION_RING_LIMIT = 24;
carc2.STEREO_ANGLE_LIMIT = 0;
carc2.cMaxConnAtoms = 16;
carc2.serialVersionUID_2 = 537316094;
cggl.Lcom_actelion_research_chem_ExtendedMolecule_2_classLit = createForClass('com.actelion.research.chem', 'ExtendedMolecule', 100, cggl.Lcom_actelion_research_chem_Molecule_2_classLit);
carc2.$clinit_IDCodeParserWithoutCoordinateInvention = function $clinit_IDCodeParserWithoutCoordinateInvention(){
  carc2.$clinit_IDCodeParserWithoutCoordinateInvention = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.IDCodeParserWithoutCoordinateInvention = function IDCodeParserWithoutCoordinateInvention(){
  carc2.$clinit_IDCodeParserWithoutCoordinateInvention();
  Object_0.call(this);
  this.$init_29();
}
;
defineClass(329, 1, {1:1}, carc2.IDCodeParserWithoutCoordinateInvention);
_.$init_29 = function $init_29(){
}
;
_.decodeAVBL = function decodeAVBL(value_0, binCount){
  return $wnd.Math.pow(10, jl.log10(200 / 0.1) * value_0 / (binCount - 1) - 1);
}
;
_.decodeBits = function decodeBits(bits){
  var allBits, data_0;
  allBits = bits;
  data_0 = 0;
  while (bits != 0) {
    if (this.mIDCodeBitsAvail == 0) {
      this.mIDCodeTempData = (this.mDecodingBytes[++this.mIDCodeBufferIndex] & 63) << 11;
      this.mIDCodeBitsAvail = 6;
    }
    data_0 |= (65536 & this.mIDCodeTempData) >> 16 - allBits + bits;
    this.mIDCodeTempData <<= 1;
    bits--;
    this.mIDCodeBitsAvail--;
  }
  return data_0;
}
;
_.decodeBitsStart = function decodeBitsStart(bytes, offset){
  this.mIDCodeBitsAvail = 6;
  this.mIDCodeBufferIndex = offset;
  this.mDecodingBytes = bytes;
  this.mIDCodeTempData = (bytes[this.mIDCodeBufferIndex] & 63) << 11;
}
;
_.decodeShift = function decodeShift(value_0, binCount){
  var doubleValue, halfBinCount, isNegative, steepness;
  halfBinCount = narrow_int(binCount / 2);
  isNegative = value_0 >= halfBinCount;
  if (isNegative)
    value_0 -= halfBinCount;
  steepness = narrow_int(binCount / 32);
  doubleValue = steepness * value_0 / (halfBinCount - value_0);
  return isNegative?-doubleValue:doubleValue;
}
;
_.ensure2DCoordinates = function ensure2DCoordinates_0(){
  return false;
}
;
_.getCompactMolecule = function getCompactMolecule(idcode){
  return jsEquals(idcode, null) || jl.length__I__devirtual$_0(idcode) == 0?null:this.getCompactMolecule_2(jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(idcode, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)), null);
}
;
_.getCompactMolecule_0 = function getCompactMolecule_0(idcode, coordinates){
  return jsEquals(idcode, null)?null:this.getCompactMolecule_2(jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(idcode, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)), jsEquals(coordinates, null)?null:jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(coordinates, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
}
;
_.getCompactMolecule_1 = function getCompactMolecule_1(idcode){
  var i;
  if (jsEquals(idcode, null) || idcode.length == 0)
    return null;
  for (i = 2; i < idcode.length - 2; i++)
    if (idcode[i] == 32)
      return this.getCompactMolecule_3(idcode, idcode, 0, i + 1);
  return this.getCompactMolecule_2(idcode, null);
}
;
_.getCompactMolecule_2 = function getCompactMolecule_2(idcode, coordinates){
  return this.getCompactMolecule_3(idcode, coordinates, 0, 0);
}
;
_.getCompactMolecule_3 = function getCompactMolecule_3(idcode, coordinates, idcodeStart, coordsStart){
  var abits, allAtoms, allBonds, bbits, mol;
  if (jsEquals(idcode, null))
    return null;
  this.decodeBitsStart(idcode, idcodeStart);
  abits = this.decodeBits(4);
  bbits = this.decodeBits(4);
  if (abits > 8)
    abits = bbits;
  allAtoms = this.decodeBits(abits);
  allBonds = this.decodeBits(bbits);
  mol = new carc2.StereoMolecule_0(allAtoms, allBonds);
  this.parse_3(mol, idcode, coordinates, idcodeStart, coordsStart);
  return mol;
}
;
_.inventCoordinates_0 = function inventCoordinates(mol){
  throw toJs(new jl.Exception_1('Unexpected request to invent coordinates. Check source code logic!'));
}
;
_.parse_0 = function parse_0(mol, idcode){
  var index_0;
  if (jsEquals(idcode, null) || jl.length__I__devirtual$_0(idcode) == 0) {
    this.parse_2(mol, castTo(null, 8), castTo(null, 8));
    return;
  }
  index_0 = jl.indexOf_I_I__devirtual$(idcode, 32);
  if (index_0 > 0 && index_0 < jl.length__I__devirtual$_0(idcode) - 1)
    this.parse_2(mol, jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(idcode, 0, index_0), (jnc.$clinit_StandardCharsets() , jnc.UTF_8)), jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(idcode, index_0 + 1), (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
  else 
    this.parse_2(mol, jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(idcode, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)), null);
}
;
_.parse_1 = function parse_1(mol, idcode, coordinates){
  var coordinateBytes, idcodeBytes;
  idcodeBytes = jsEquals(idcode, null)?null:jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(idcode, (jnc.$clinit_StandardCharsets() , jnc.UTF_8));
  coordinateBytes = jsEquals(coordinates, null)?null:jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(coordinates, (jnc.$clinit_StandardCharsets() , jnc.UTF_8));
  this.parse_2(mol, idcodeBytes, coordinateBytes);
}
;
_.parse_2 = function parse_2(mol, idcode, coordinates){
  if (jsEquals(idcode, null) || idcode.length == 0) {
    mol.clear_0();
    return;
  }
  this.parse_3(mol, idcode, coordinates, 0, 0);
}
;
_.parse_3 = function parse_3(mol, idcode, coordinates, idcodeStart, coordsStart){
  var EZCount, THCount, abits, allAtoms, allBonds, aromState, aromaticSPBond, atom, atom0, atom1, atom2, atomList, atomicNo, atoms, avbl, avblDefault, avblInt, base, bbits, binCount, bond, bond$array, bond$index, bond$max, bond0, bondOrder, bondType, bondTypes, bridgeData, charge, chargedAtoms, closureBonds, coords2DAvailable, coordsAre3D, coordsAreAbsolute, count, dataType, dbits, decodeOldCoordinates, dif, dx, dy, dz, e, eNeighbours, f, factor, from, hCount, hint, hydrogen, hydrogenCount, i, i0, i1, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i2, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i3, i30, i31, i32, i33, i34, i35, i36, i37, i38, i39, i4, i40, i41, i42, i5, i6, i7, i8, i9, index_0, isDelocalizedBond, j, label_0, lbits, mass, neighbours, nitrogens, no, offset, otherAtoms, oxygens, parity, piElectrons, resolutionBits, ringSize, ringState, stereoState, targetAVBL, version, xInt, xOffset, yInt, yOffset, zInt, zOffset;
  mol.clear_0();
  if (jsEquals(idcode, null) || idcodeStart < 0 || idcodeStart >= idcode.length)
    return;
  this.mMol = mol;
  version = 8;
  if (jsNotEquals(coordinates, null) && (coordsStart < 0 || coordsStart >= coordinates.length))
    coordinates = null;
  this.decodeBitsStart(idcode, idcodeStart);
  abits = this.decodeBits(4);
  bbits = this.decodeBits(4);
  if (abits > 8) {
    version = abits;
    abits = bbits;
  }
  if (abits == 0) {
    this.mMol.setFragment_0(this.decodeBits(1) == 1);
    return;
  }
  allAtoms = this.decodeBits(abits);
  allBonds = this.decodeBits(bbits);
  nitrogens = this.decodeBits(abits);
  oxygens = this.decodeBits(abits);
  otherAtoms = this.decodeBits(abits);
  chargedAtoms = this.decodeBits(abits);
  for (atom0 = 0; atom0 < allAtoms; atom0++)
    this.mMol.addAtom_2(6);
  for (i0 = 0; i0 < nitrogens; i0++)
    this.mMol.setAtomicNo_0(this.decodeBits(abits), 7);
  for (i1 = 0; i1 < oxygens; i1++)
    this.mMol.setAtomicNo_0(this.decodeBits(abits), 8);
  for (i2 = 0; i2 < otherAtoms; i2++)
    this.mMol.setAtomicNo_0(this.decodeBits(abits), this.decodeBits(8));
  for (i3 = 0; i3 < chargedAtoms; i3++)
    this.mMol.setAtomCharge_0(this.decodeBits(abits), this.decodeBits(4) - 8);
  closureBonds = 1 + allBonds - allAtoms;
  dbits = this.decodeBits(4);
  base = 0;
  this.mMol.setAtomX_0(0, 0);
  this.mMol.setAtomY_0(0, 0);
  this.mMol.setAtomZ_0(0, 0);
  decodeOldCoordinates = jsNotEquals(coordinates, null) && coordinates[coordsStart] >= 39;
  targetAVBL = 0;
  xOffset = 0;
  yOffset = 0;
  zOffset = 0;
  coordsAre3D = false;
  coordsAreAbsolute = false;
  if (decodeOldCoordinates) {
    if (coordinates.length > 2 * allAtoms - 2 && coordinates[2 * allAtoms - 2] == 39 || coordinates.length > 3 * allAtoms - 3 && coordinates[3 * allAtoms - 3] == 39) {
      coordsAreAbsolute = true;
      coordsAre3D = coordinates.length == 3 * allAtoms - 3 + 9;
      index_0 = coordsAre3D?3 * allAtoms - 3:2 * allAtoms - 2;
      avblInt = 86 * (coordinates[index_0 + 1] - 40) + coordinates[index_0 + 2] - 40;
      targetAVBL = $wnd.Math.pow(10, avblInt / 2000 - 1);
      index_0 += 2;
      xInt = 86 * (coordinates[index_0 + 1] - 40) + coordinates[index_0 + 2] - 40;
      xOffset = $wnd.Math.pow(10, xInt / 1500 - 1);
      index_0 += 2;
      yInt = 86 * (coordinates[index_0 + 1] - 40) + coordinates[index_0 + 2] - 40;
      yOffset = $wnd.Math.pow(10, yInt / 1500 - 1);
      if (coordsAre3D) {
        index_0 += 2;
        zInt = 86 * (coordinates[index_0 + 1] - 40) + coordinates[index_0 + 2] - 40;
        zOffset = $wnd.Math.pow(10, zInt / 1500 - 1);
      }
    }
     else {
      coordsAre3D = coordinates.length == 3 * allAtoms - 3;
    }
  }
  if (this.ensure2DCoordinates() && coordsAre3D) {
    coordinates = null;
    decodeOldCoordinates = false;
  }
  for (i4 = 1; i4 < allAtoms; i4++) {
    dif = this.decodeBits(dbits);
    if (dif == 0) {
      if (decodeOldCoordinates) {
        this.mMol.setAtomX_0(i4, this.mMol.getAtomX_0(0) + 8 * (coordinates[i4 * 2 - 2] - 83));
        this.mMol.setAtomY_0(i4, this.mMol.getAtomY_0(0) + 8 * (coordinates[i4 * 2 - 1] - 83));
        if (coordsAre3D)
          this.mMol.setAtomZ_0(i4, this.mMol.getAtomZ_0(0) + 8 * (coordinates[2 * allAtoms - 3 + i4] - 83));
      }
      closureBonds++;
      continue;
    }
    base += dif - 1;
    if (decodeOldCoordinates) {
      this.mMol.setAtomX_0(i4, this.mMol.getAtomX_0(base) + coordinates[i4 * 2 - 2] - 83);
      this.mMol.setAtomY_0(i4, this.mMol.getAtomY_0(base) + coordinates[i4 * 2 - 1] - 83);
      if (coordsAre3D)
        this.mMol.setAtomZ_0(i4, this.mMol.getAtomZ_0(base) + (coordinates[2 * allAtoms - 3 + i4] - 83));
    }
    this.mMol.addBond_1(base, i4, 1);
  }
  for (i5 = 0; i5 < closureBonds; i5++)
    this.mMol.addBond_1(this.decodeBits(abits), this.decodeBits(abits), 1);
  isDelocalizedBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, allBonds, 16, 1);
  for (bond0 = 0; bond0 < allBonds; bond0++) {
    bondOrder = this.decodeBits(2);
    switch (bondOrder) {
      case 0:
        isDelocalizedBond[bond0] = true;
        break;
      case 2:
        this.mMol.setBondType_0(bond0, 2);
        break;
      case 3:
        this.mMol.setBondType_0(bond0, 4);
        break;
    }
  }
  THCount = this.decodeBits(abits);
  for (i6 = 0; i6 < THCount; i6++) {
    atom = this.decodeBits(abits);
    if (version == 8) {
      parity = this.decodeBits(2);
      if (parity == 3) {
        this.mMol.setAtomESR_0(atom, 1, 0);
        this.mMol.setAtomParity_0(atom, 1, false);
      }
       else {
        this.mMol.setAtomParity_0(atom, parity, false);
      }
    }
     else {
      parity = this.decodeBits(3);
      switch (parity) {
        case 4:
          this.mMol.setAtomParity_0(atom, 1, false);
          this.mMol.setAtomESR_0(atom, 1, this.decodeBits(3));
          break;
        case 5:
          this.mMol.setAtomParity_0(atom, 2, false);
          this.mMol.setAtomESR_0(atom, 1, this.decodeBits(3));
          break;
        case 6:
          this.mMol.setAtomParity_0(atom, 1, false);
          this.mMol.setAtomESR_0(atom, 2, this.decodeBits(3));
          break;
        case 7:
          this.mMol.setAtomParity_0(atom, 2, false);
          this.mMol.setAtomESR_0(atom, 2, this.decodeBits(3));
          break;
        default:this.mMol.setAtomParity_0(atom, parity, false);
      }
    }
  }
  if (version == 8)
    if (this.decodeBits(1) == 0)
      this.mMol.setToRacemate_0();
  EZCount = this.decodeBits(bbits);
  for (i7 = 0; i7 < EZCount; i7++) {
    bond = this.decodeBits(bbits);
    if (this.mMol.getBondType_0(bond) == 1) {
      parity = this.decodeBits(3);
      switch (parity) {
        case 4:
          this.mMol.setBondParity_0(bond, 1, false);
          this.mMol.setBondESR_0(bond, 1, this.decodeBits(3));
          break;
        case 5:
          this.mMol.setBondParity_0(bond, 2, false);
          this.mMol.setBondESR_0(bond, 1, this.decodeBits(3));
          break;
        case 6:
          this.mMol.setBondParity_0(bond, 1, false);
          this.mMol.setBondESR_0(bond, 2, this.decodeBits(3));
          break;
        case 7:
          this.mMol.setBondParity_0(bond, 2, false);
          this.mMol.setBondESR_0(bond, 2, this.decodeBits(3));
          break;
        default:this.mMol.setBondParity_0(bond, parity, false);
      }
    }
     else {
      this.mMol.setBondParity_0(bond, this.decodeBits(2), false);
    }
  }
  this.mMol.setFragment_0(this.decodeBits(1) == 1);
  aromaticSPBond = null;
  offset = 0;
  while (this.decodeBits(1) == 1) {
    dataType = offset + this.decodeBits(4);
    switch (dataType) {
      case 0:
        no = this.decodeBits(abits);
        for (i8 = 0; i8 < no; i8++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature(atom, 2048, true);
        }

        break;
      case 1:
        no = this.decodeBits(abits);
        for (i9 = 0; i9 < no; i9++) {
          atom = this.decodeBits(abits);
          mass = this.decodeBits(8);
          this.mMol.setAtomMass_0(atom, mass);
        }

        break;
      case 2:
        no = this.decodeBits(bbits);
        for (i10 = 0; i10 < no; i10++) {
          bond = this.decodeBits(bbits);
        }

        break;
      case 3:
        no = this.decodeBits(abits);
        for (i11 = 0; i11 < no; i11++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature(atom, 4096, true);
        }

        break;
      case 4:
        no = this.decodeBits(abits);
        for (i12 = 0; i12 < no; i12++) {
          atom = this.decodeBits(abits);
          ringState = shl_0(fromInt_0(this.decodeBits(4)), 3);
          this.mMol.setAtomQueryFeature(atom, ringState, true);
        }

        break;
      case 5:
        no = this.decodeBits(abits);
        for (i13 = 0; i13 < no; i13++) {
          atom = this.decodeBits(abits);
          aromState = shl_0(fromInt_0(this.decodeBits(2)), 1);
          this.mMol.setAtomQueryFeature(atom, aromState, true);
        }

        break;
      case 6:
        no = this.decodeBits(abits);
        for (i14 = 0; i14 < no; i14++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature(atom, 1, true);
        }

        break;
      case 7:
        no = this.decodeBits(abits);
        for (i15 = 0; i15 < no; i15++) {
          atom = this.decodeBits(abits);
          hydrogen = shl_0(fromInt_0(this.decodeBits(4)), 7);
          this.mMol.setAtomQueryFeature(atom, hydrogen, true);
        }

        break;
      case 8:
        no = this.decodeBits(abits);
        for (i16 = 0; i16 < no; i16++) {
          atom = this.decodeBits(abits);
          atoms = this.decodeBits(4);
          atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atoms, 15, 1);
          for (j = 0; j < atoms; j++) {
            atomicNo = this.decodeBits(8);
            atomList[j] = atomicNo;
          }
          this.mMol.setAtomList_0(atom, atomList);
        }

        break;
      case 9:
        no = this.decodeBits(bbits);
        for (i17 = 0; i17 < no; i17++) {
          bond = this.decodeBits(bbits);
          ringState = this.decodeBits(2) << 7;
          this.mMol.setBondQueryFeature_0(bond, ringState, true);
        }

        break;
      case 10:
        no = this.decodeBits(bbits);
        for (i18 = 0; i18 < no; i18++) {
          bond = this.decodeBits(bbits);
          bondTypes = this.decodeBits(5) << 0;
          this.mMol.setBondQueryFeature_0(bond, bondTypes, true);
        }

        break;
      case 11:
        no = this.decodeBits(abits);
        for (i19 = 0; i19 < no; i19++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature(atom, 8192, true);
        }

        break;
      case 12:
        no = this.decodeBits(bbits);
        for (i20 = 0; i20 < no; i20++) {
          bond = this.decodeBits(bbits);
          bridgeData = this.decodeBits(8) << 9;
          this.mMol.setBondQueryFeature_0(bond, bridgeData, true);
        }

        break;
      case 13:
        no = this.decodeBits(abits);
        for (i21 = 0; i21 < no; i21++) {
          atom = this.decodeBits(abits);
          piElectrons = shl_0(fromInt_0(this.decodeBits(3)), 14);
          this.mMol.setAtomQueryFeature(atom, piElectrons, true);
        }

        break;
      case 14:
        no = this.decodeBits(abits);
        for (i22 = 0; i22 < no; i22++) {
          atom = this.decodeBits(abits);
          neighbours = shl_0(fromInt_0(this.decodeBits(5)), 17);
          this.mMol.setAtomQueryFeature(atom, neighbours, true);
        }

        break;
      case 15:
      case 31:
        offset += 16;
        break;
      case 16:
        no = this.decodeBits(abits);
        for (i23 = 0; i23 < no; i23++) {
          atom = this.decodeBits(abits);
          ringSize = shl_0(fromInt_0(this.decodeBits(3)), 22);
          this.mMol.setAtomQueryFeature(atom, ringSize, true);
        }

        break;
      case 17:
        no = this.decodeBits(abits);
        for (i24 = 0; i24 < no; i24++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomAbnormalValence_0(atom, this.decodeBits(4));
        }

        break;
      case 18:
        no = this.decodeBits(abits);
        lbits = this.decodeBits(4);
        for (i25 = 0; i25 < no; i25++) {
          atom = this.decodeBits(abits);
          count = this.decodeBits(lbits);
          label_0 = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, count, 15, 1);
          for (j = 0; j < count; j++)
            label_0[j] = narrow_byte(this.decodeBits(7));
          this.mMol.setAtomCustomLabel_0(atom, jl.$create_12(label_0, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
        }

        break;
      case 19:
        no = this.decodeBits(abits);
        for (i26 = 0; i26 < no; i26++) {
          atom = this.decodeBits(abits);
          charge = shl_0(fromInt_0(this.decodeBits(3)), 25);
          this.mMol.setAtomQueryFeature(atom, charge, true);
        }

        break;
      case 20:
        no = this.decodeBits(bbits);
        for (i27 = 0; i27 < no; i27++) {
          bond = this.decodeBits(bbits);
          ringSize = this.decodeBits(3) << 17;
          this.mMol.setBondQueryFeature_0(bond, ringSize, true);
        }

        break;
      case 21:
        no = this.decodeBits(abits);
        for (i28 = 0; i28 < no; i28++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomRadical_0(atom, this.decodeBits(2) << 4);
        }

        break;
      case 22:
        no = this.decodeBits(abits);
        for (i29 = 0; i29 < no; i29++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature(atom, 268435456, true);
        }

        break;
      case 23:
        no = this.decodeBits(bbits);
        for (i30 = 0; i30 < no; i30++) {
          bond = this.decodeBits(bbits);
          this.mMol.setBondQueryFeature_0(bond, 1048576, true);
        }

        break;
      case 24:
        no = this.decodeBits(bbits);
        for (i31 = 0; i31 < no; i31++) {
          bond = this.decodeBits(bbits);
          aromState = this.decodeBits(2) << 21;
          this.mMol.setBondQueryFeature_0(bond, aromState, true);
        }

        break;
      case 25:
        for (i32 = 0; i32 < allAtoms; i32++)
          if (this.decodeBits(1) == 1)
            this.mMol.setAtomSelection_0(i32, true);
        break;
      case 26:
        no = this.decodeBits(bbits);
        aromaticSPBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, no, 15, 1);
        for (i33 = 0; i33 < no; i33++)
          aromaticSPBond[i33] = this.decodeBits(bbits);
        break;
      case 27:
        no = this.decodeBits(abits);
        for (i34 = 0; i34 < no; i34++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature(atom, 536870912, true);
        }

        break;
      case 28:
        no = this.decodeBits(bbits);
        for (i35 = 0; i35 < no; i35++)
          this.mMol.setBondType_0(this.decodeBits(bbits), 32);
        break;
      case 29:
        no = this.decodeBits(abits);
        for (i36 = 0; i36 < no; i36++) {
          atom = this.decodeBits(abits);
          hint = shl_0(fromInt_0(this.decodeBits(2)), 30);
          this.mMol.setAtomQueryFeature(atom, hint, true);
        }

        break;
      case 30:
        no = this.decodeBits(abits);
        for (i37 = 0; i37 < no; i37++) {
          atom = this.decodeBits(abits);
          ringSize = shl_0(fromInt_0(this.decodeBits(7)), 32);
          this.mMol.setAtomQueryFeature(atom, ringSize, true);
        }

        break;
      case 32:
        no = this.decodeBits(abits);
        for (i38 = 0; i38 < no; i38++) {
          atom = this.decodeBits(abits);
          stereoState = shl_0(fromInt_0(this.decodeBits(2)), 44);
          this.mMol.setAtomQueryFeature(atom, stereoState, true);
        }

        break;
      case 33:
        no = this.decodeBits(abits);
        for (i39 = 0; i39 < no; i39++) {
          atom = this.decodeBits(abits);
          eNeighbours = shl_0(fromInt_0(this.decodeBits(5)), 39);
          this.mMol.setAtomQueryFeature(atom, eNeighbours, true);
        }

        break;
      case 34:
        no = this.decodeBits(abits);
        for (i40 = 0; i40 < no; i40++) {
          atom = this.decodeBits(abits);
          this.mMol.setAtomQueryFeature(atom, {l:0, m:0, h:4}, true);
        }

        break;
      case 35:
        no = this.decodeBits(bbits);
        for (i41 = 0; i41 < no; i41++) {
          bond = this.decodeBits(bbits);
          this.mMol.setBondQueryFeature_0(bond, 8388608, true);
        }

        break;
      case 36:
        no = this.decodeBits(bbits);
        for (i42 = 0; i42 < no; i42++) {
          bond = this.decodeBits(bbits);
          bondType = this.decodeBits(2) << 5;
          this.mMol.setBondQueryFeature_0(bond, bondType, true);
        }

        break;
      case 37:
        no = this.decodeBits(bbits);
        for (i = 0; i < no; i++) {
          bond = this.decodeBits(bbits);
          bondType = this.decodeBits(1) == 0?8:16;
          this.mMol.setBondType_0(bond, bondType);
        }

        break;
    }
  }
  (new carc2.AromaticityResolver(this.mMol)).locateDelocalizedDoubleBonds(isDelocalizedBond);
  if (jsNotEquals(aromaticSPBond, null))
    for (bond$array = aromaticSPBond , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
      bond = bond$array[bond$index];
      this.mMol.setBondType_0(bond, this.mMol.getBondType_0(bond) == 2?4:2);
    }
  if (jsEquals(coordinates, null) && !this.mNeglectSpaceDelimitedCoordinates && idcode.length > this.mIDCodeBufferIndex + 1 && (idcode[this.mIDCodeBufferIndex + 1] == 32 || idcode[this.mIDCodeBufferIndex + 1] == 9)) {
    coordinates = idcode;
    coordsStart = this.mIDCodeBufferIndex + 2;
  }
  if (jsNotEquals(coordinates, null)) {
    try {
      if (coordinates[coordsStart] == 33 || coordinates[coordsStart] == 35) {
        this.decodeBitsStart(coordinates, coordsStart + 1);
        coordsAre3D = this.decodeBits(1) == 1;
        coordsAreAbsolute = this.decodeBits(1) == 1;
        resolutionBits = 2 * this.decodeBits(4);
        binCount = 1 << resolutionBits;
        from = 0;
        bond = 0;
        for (atom1 = 1; atom1 < allAtoms; atom1++) {
          if (bond < allBonds && this.mMol.getBondAtom_0(1, bond) == atom1) {
            from = this.mMol.getBondAtom_0(0, bond++);
            factor = 1;
          }
           else {
            from = 0;
            factor = 8;
          }
          this.mMol.setAtomX_0(atom1, this.mMol.getAtomX_0(from) + factor * (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
          this.mMol.setAtomY_0(atom1, this.mMol.getAtomY_0(from) + factor * (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
          if (coordsAre3D)
            this.mMol.setAtomZ_0(atom1, this.mMol.getAtomZ_0(from) + factor * (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
        }
        if (coordinates[coordsStart] == 35) {
          hydrogenCount = 0;
          hCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, allAtoms, 15, 1);
          for (atom2 = 0; atom2 < allAtoms; atom2++)
            hydrogenCount += hCount[atom2] = this.mMol.getImplicitHydrogens_0(atom2);
          for (atom = 0; atom < allAtoms; atom++) {
            for (i = 0; i < hCount[atom]; i++) {
              hydrogen = this.mMol.addAtom_2(1);
              this.mMol.addBond_1(atom, hydrogen, 1);
              this.mMol.setAtomX_0(hydrogen, this.mMol.getAtomX_0(atom) + (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
              this.mMol.setAtomY_0(hydrogen, this.mMol.getAtomY_0(atom) + (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
              if (coordsAre3D)
                this.mMol.setAtomZ_0(hydrogen, this.mMol.getAtomZ_0(atom) + (this.decodeBits(resolutionBits) - narrow_int(binCount / 2)));
            }
          }
          allAtoms += hydrogenCount;
          allBonds += hydrogenCount;
        }
        avblDefault = coordsAre3D?1.5:carc2.getDefaultAverageBondLength();
        avbl = this.mMol.getAverageBondLength_2(allAtoms, allBonds, avblDefault);
        if (coordsAreAbsolute) {
          targetAVBL = this.decodeAVBL(this.decodeBits(resolutionBits), binCount);
          xOffset = targetAVBL * this.decodeShift(this.decodeBits(resolutionBits), binCount);
          yOffset = targetAVBL * this.decodeShift(this.decodeBits(resolutionBits), binCount);
          if (coordsAre3D)
            zOffset = targetAVBL * this.decodeShift(this.decodeBits(resolutionBits), binCount);
          factor = targetAVBL / avbl;
          for (atom = 0; atom < allAtoms; atom++) {
            this.mMol.setAtomX_0(atom, xOffset + factor * this.mMol.getAtomX_0(atom));
            this.mMol.setAtomY_0(atom, yOffset + factor * this.mMol.getAtomY_0(atom));
            if (coordsAre3D)
              this.mMol.setAtomZ_0(atom, zOffset + factor * this.mMol.getAtomZ_0(atom));
          }
        }
         else {
          targetAVBL = 1.5;
          factor = targetAVBL / avbl;
          for (atom = 0; atom < allAtoms; atom++) {
            this.mMol.setAtomX_0(atom, factor * this.mMol.getAtomX_0(atom));
            this.mMol.setAtomY_0(atom, factor * this.mMol.getAtomY_0(atom));
            if (coordsAre3D)
              this.mMol.setAtomZ_0(atom, factor * this.mMol.getAtomZ_0(atom));
          }
        }
      }
       else {
        if (coordsAre3D && !coordsAreAbsolute && targetAVBL == 0)
          targetAVBL = 1.5;
        if (targetAVBL != 0 && this.mMol.getAllBonds_0() != 0) {
          avbl = 0;
          for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
            dx = this.mMol.getAtomX_0(this.mMol.getBondAtom_0(0, bond)) - this.mMol.getAtomX_0(this.mMol.getBondAtom_0(1, bond));
            dy = this.mMol.getAtomY_0(this.mMol.getBondAtom_0(0, bond)) - this.mMol.getAtomY_0(this.mMol.getBondAtom_0(1, bond));
            dz = coordsAre3D?this.mMol.getAtomZ_0(this.mMol.getBondAtom_0(0, bond)) - this.mMol.getAtomZ_0(this.mMol.getBondAtom_0(1, bond)):0;
            avbl += $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
          }
          avbl /= this.mMol.getAllBonds_0();
          f = targetAVBL / avbl;
          for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
            this.mMol.setAtomX_0(atom, this.mMol.getAtomX_0(atom) * f + xOffset);
            this.mMol.setAtomY_0(atom, this.mMol.getAtomY_0(atom) * f + yOffset);
            if (coordsAre3D)
              this.mMol.setAtomZ_0(atom, this.mMol.getAtomZ_0(atom) * f + zOffset);
          }
        }
      }
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        e.printStackTrace();
        (jl.$clinit_System() , jl.err).println_0('Faulty id-coordinates:' + e + ' ' + jl.$create_12(idcode, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)) + ' ' + jl.$create_12(coordinates, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
        coordinates = null;
        coordsAre3D = false;
      }
       else 
        throw toJs($e0);
    }
  }
  coords2DAvailable = jsNotEquals(coordinates, null) && !coordsAre3D;
  if (coords2DAvailable || this.ensure2DCoordinates()) {
    this.mMol.ensureHelperArrays_0(7);
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
      if (this.mMol.getBondOrder_0(bond) == 2 && !this.mMol.isSmallRingBond_0(bond) && this.mMol.getBondParity_0(bond) == 0)
        this.mMol.setBondParityUnknownOrNone_0(bond);
  }
  this.mMol.setParitiesValid_0(0);
  if (!coords2DAvailable && this.ensure2DCoordinates()) {
    try {
      this.inventCoordinates_0(this.mMol);
      coords2DAvailable = true;
    }
     catch ($e1) {
      $e1 = toJava($e1);
      if (instanceOf($e1, 14)) {
        e = $e1;
        e.printStackTrace();
        (jl.$clinit_System() , jl.err).println_0('2D-coordinate creation failed:' + e + ' ' + jl.$create_12(idcode, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
      }
       else 
        throw toJs($e1);
    }
  }
  if (coords2DAvailable) {
    this.mMol.setStereoBondsFromParity_0();
    this.mMol.setUnknownParitiesToExplicitlyUnknown_0();
  }
   else if (!coordsAre3D) {
    this.mMol.setParitiesValid_0(0);
  }
}
;
_.parseMapping = function parseMapping(mapping){
  this.parseMapping_0(mapping, 0);
}
;
_.parseMapping_0 = function parseMapping_0(mapping, mappingStart){
  var atom, autoMapped, autoMappingFound, manualMappingFound, mapNo, nbits;
  if (jsEquals(mapping, null) || mapping.length <= mappingStart || mapping[mappingStart] < 64)
    return;
  this.decodeBitsStart(mapping, mappingStart);
  nbits = this.decodeBits(4);
  autoMappingFound = this.decodeBits(1) == 1;
  manualMappingFound = this.decodeBits(1) == 1;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    mapNo = this.decodeBits(nbits);
    autoMapped = autoMappingFound;
    if (autoMappingFound && manualMappingFound)
      autoMapped = this.decodeBits(1) == 1;
    this.mMol.setAtomMapNo_0(atom, mapNo, autoMapped);
  }
}
;
_.mIDCodeBitsAvail = 0;
_.mIDCodeBufferIndex = 0;
_.mIDCodeTempData = 0;
_.mNeglectSpaceDelimitedCoordinates = false;
cggl.Lcom_actelion_research_chem_IDCodeParserWithoutCoordinateInvention_2_classLit = createForClass('com.actelion.research.chem', 'IDCodeParserWithoutCoordinateInvention', 329, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_IDCodeParser = function $clinit_IDCodeParser(){
  carc2.$clinit_IDCodeParser = emptyMethod;
  carc2.$clinit_IDCodeParserWithoutCoordinateInvention();
}
;
carc2.IDCodeParser = function IDCodeParser(){
  carc2.$clinit_IDCodeParser();
  carc2.IDCodeParser_0.call(this, true);
}
;
carc2.IDCodeParser_0 = function IDCodeParser_0(ensure2DCoordinates){
  carc2.$clinit_IDCodeParser();
  carc2.IDCodeParserWithoutCoordinateInvention.call(this);
  this.$init_30();
  this.mEnsure2DCoordinates = ensure2DCoordinates;
}
;
defineClass(47, 329, {1:1}, carc2.IDCodeParser, carc2.IDCodeParser_0);
_.$init_30 = function $init_30(){
  this.mCoordinateMode = 2;
}
;
_.ensure2DCoordinates = function ensure2DCoordinates_1(){
  return this.mEnsure2DCoordinates;
}
;
_.inventCoordinates_0 = function inventCoordinates_0(mol){
  var inventor;
  inventor = new carcc3.CoordinateInventor_0(this.mCoordinateMode);
  inventor.setRandomSeed_0(78187493520);
  inventor.invent(mol);
}
;
_.mCoordinateMode = 0;
_.mEnsure2DCoordinates = false;
cggl.Lcom_actelion_research_chem_IDCodeParser_2_classLit = createForClass('com.actelion.research.chem', 'IDCodeParser', 47, cggl.Lcom_actelion_research_chem_IDCodeParserWithoutCoordinateInvention_2_classLit);
carc2.$clinit_IsomericSmilesCreator = function $clinit_IsomericSmilesCreator(){
  carc2.$clinit_IsomericSmilesCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.IsomericSmilesCreator = function IsomericSmilesCreator(mol){
  carc2.$clinit_IsomericSmilesCreator();
  carc2.IsomericSmilesCreator_1.call(this, mol, false);
}
;
carc2.IsomericSmilesCreator_0 = function IsomericSmilesCreator_0(mol, mode){
  carc2.$clinit_IsomericSmilesCreator();
  Object_0.call(this);
  this.$init_31();
  this.mMol = mol;
  this.mMode = mode;
}
;
carc2.IsomericSmilesCreator_1 = function IsomericSmilesCreator_1(mol, includeAtomMapping){
  carc2.IsomericSmilesCreator_0.call(this, mol, includeAtomMapping?2:0);
}
;
carc2.createReactionSmiles = function createReactionSmiles(rxn){
  carc2.$clinit_IsomericSmilesCreator();
  return carc2.createReactionSmiles_0(rxn, 2);
}
;
carc2.createReactionSmiles_0 = function createReactionSmiles_0(rxn, mode){
  var i, i0, i1, sb;
  sb = new jl.StringBuilder;
  for (i0 = 0; i0 < rxn.getReactants_0(); i0++) {
    if (i0 != 0)
      sb.append_4(46);
    sb.append_9((new carc2.IsomericSmilesCreator_0(rxn.getReactant_0(i0), mode)).getSmiles_0());
  }
  sb.append_4(62);
  for (i1 = 0; i1 < rxn.getCatalysts_0(); i1++) {
    if (i1 != 0)
      sb.append_4(46);
    sb.append_9((new carc2.IsomericSmilesCreator(rxn.getCatalyst_0(i1))).getSmiles_0());
  }
  sb.append_4(62);
  for (i = 0; i < rxn.getProducts_0(); i++) {
    if (i != 0)
      sb.append_4(46);
    sb.append_9((new carc2.IsomericSmilesCreator_0(rxn.getProduct_0(i), mode)).getSmiles_0());
  }
  return sb.toString_0();
}
;
defineClass(125, 1, {1:1}, carc2.IsomericSmilesCreator, carc2.IsomericSmilesCreator_0);
_.$init_31 = function $init_31(){
}
;
_.addAtomString = function addAtomString(smilesAtom, builder, buffer){
  var atom, atomList, charge, chargeFeatures, hCount, isAnyAtom, isotop, label_0, mapNo, parent_0, smartsFeatures, useBrackets;
  atom = smilesAtom.atom;
  parent_0 = smilesAtom.parent_0;
  isAnyAtom = neq(and_0(this.mMol.getAtomQueryFeatures(atom), 1), 0);
  atomList = this.mMol.getAtomList_0(atom);
  label_0 = jsNotEquals(atomList, null)?this.createMultiAtomLabel(atom, atomList, buffer):isAnyAtom?'*':this.mMol.getAtomLabel_0(atom);
  if (!isAnyAtom && jsEquals(atomList, null) && this.mMol.isAromaticAtom_1(atom) && (this.mMode & 4) == 0 && (this.mMol.getAtomPi_0(atom) != 0 || this.mMol.getAtomAbnormalValence_0(atom) == -1 && this.mMol.getAtomRadical_0(atom) == 0))
    label_0 = jl.toLowerCase__Ljava_lang_String___devirtual$(label_0);
  if (smilesAtom.isSideChainStart)
    builder.append_4(40);
  if (parent_0 != -1)
    this.appendBondOrderSymbol(this.mMol.getBond_0(smilesAtom.atom, smilesAtom.parent_0), smilesAtom.parent_0, builder);
  charge = this.mMol.getAtomCharge_0(atom);
  if (charge == 0 && (this.mMode & 1) != 0) {
    chargeFeatures = and_0(this.mMol.getAtomQueryFeatures(atom), 234881024);
    if (eq(chargeFeatures, or_0(67108864, 134217728)))
      charge = -1;
    else if (eq(chargeFeatures, or_0(67108864, 33554432)))
      charge = 1;
  }
  isotop = this.mMol.getAtomMass_0(atom);
  mapNo = (this.mMode & 2) != 0?this.mMol.getAtomMapNo_0(atom):0;
  smartsFeatures = (this.mMode & 1) != 0?this.getAtomSMARTSFeatures(atom, buffer):null;
  useBrackets = !isAnyAtom && !this.isOrganic(this.mMol.getAtomicNo_0(atom)) || jsNotEquals(atomList, null) || this.qualifiesForAtomParity(atom) || this.mMol.isAromaticAtom_1(atom) && this.mMol.getAtomPi_0(atom) == 0 && (this.mMode & 4) == 0 || charge != 0 || isotop != 0 || mapNo != 0 || this.mMol.getAtomAbnormalValence_0(atom) != -1 || this.mMol.getAtomRadical_0(atom) != 0 || jsNotEquals(smartsFeatures, null);
  if (useBrackets)
    builder.append_4(91);
  if (isotop != 0)
    builder.append_5(isotop);
  builder.append_9(label_0);
  if (this.qualifiesForAtomParity(atom))
    builder.append_9(this.getAtomParitySymbol(atom, parent_0));
  if ((this.mMode & 1) == 0 && useBrackets) {
    hCount = this.mMol.getPlainHydrogens(atom);
    if (hCount == 1)
      builder.append_9('H');
    else if (hCount > 1)
      builder.append_9('H' + hCount);
  }
  if (charge != 0) {
    builder.append_4(charge > 0?43:45);
    if ($wnd.Math.abs(charge) > 1)
      builder.append_5($wnd.Math.abs(charge));
  }
  if (jsNotEquals(smartsFeatures, null))
    builder.append_9(smartsFeatures);
  if (mapNo != 0) {
    builder.append_4(58);
    builder.append_5(mapNo);
  }
  if (useBrackets)
    builder.append_4(93);
  this.appendClosureBonds(smilesAtom, builder);
  if (smilesAtom.isSideChainEnd)
    builder.append_4(41);
}
;
_.addHighestRankingChain = function addHighestRankingChain(graphIndex, isSideChain){
  var atom, bond, isFirst, neighborIndex, parent_0;
  isFirst = true;
  parent_0 = castTo(this.mGraphAtomList.getAtIndex(graphIndex), 76).atom;
  neighborIndex = this.getUnusedConnAtomIndex(parent_0);
  while (neighborIndex != -1) {
    atom = this.mMol.getConnAtom_0(parent_0, neighborIndex);
    bond = this.mMol.getConnBond_0(parent_0, neighborIndex);
    neighborIndex = this.getUnusedConnAtomIndex(atom);
    this.addToGraph(new carc2.SmilesAtom(atom, bond, parent_0, isSideChain && isFirst, isSideChain && neighborIndex == -1), ++graphIndex);
    parent_0 = atom;
    isFirst = false;
  }
}
;
_.addRelativeBondHalfParities = function addRelativeBondHalfParities(bondWithHalfParity, inverted){
  var bwhp, bwhp$array, bwhp$index, bwhp$max;
  for (bwhp$array = bondWithHalfParity , bwhp$index = 0 , bwhp$max = bwhp$array.length; bwhp$index < bwhp$max; ++bwhp$index) {
    bwhp = bwhp$array[bwhp$index];
    this.mEZHalfParity[bwhp & 1073741823] = (bwhp & 1073741824) != 0 ^ inverted?2:1;
  }
}
;
_.addToGraph = function addToGraph(smilesAtom, listIndex){
  this.mGraphAtomList.addAtIndex(listIndex, smilesAtom);
  this.mAtomUsed[smilesAtom.atom] = true;
  if (smilesAtom.parent_0 != -1)
    this.mBondUsed[this.mMol.getBond_0(smilesAtom.atom, smilesAtom.parent_0)] = true;
}
;
_.appendBondOrderSymbol = function appendBondOrderSymbol(bond, parentAtom, builder){
  var bondType, bondTypes, gap, ringState, startLength;
  startLength = builder.length_0();
  if (this.mEZHalfParity[bond] != 0)
    builder.append_4(this.mEZHalfParity[bond] == 1?47:92);
  if (this.mMode == 1) {
    bondTypes = this.mMol.getBondQueryFeatures_0(31 | 96);
    if (bondTypes != 0) {
      if ((bondTypes & 1) != 0 && this.mEZHalfParity[bond] == 0) {
        builder.append_4(45);
      }
      if ((bondTypes & 2) != 0) {
        if (builder.length_0() != startLength)
          builder.append_4(44);
        builder.append_4(61);
      }
      if ((bondTypes & 4) != 0) {
        if (builder.length_0() != startLength)
          builder.append_4(44);
        builder.append_4(35);
      }
      if ((bondTypes & 8) != 0) {
        if (builder.length_0() != startLength)
          builder.append_4(44);
        builder.append_4(36);
      }
      if ((bondTypes & 16) != 0) {
        if (builder.length_0() != startLength)
          builder.append_4(44);
        builder.append_4(36);
      }
      if ((bondTypes & 64) != 0) {
        if (builder.length_0() != startLength)
          builder.append_4(44);
        builder.append_4(58);
      }
      if ((bondTypes & 32) != 0) {
        if (builder.length_0() != startLength)
          builder.append_4(44);
        builder.append_9(this.mMol.isMetalAtom_0(parentAtom)?'<-':'->');
      }
    }
  }
  if (startLength == builder.length_0() && (!this.mMol.isAromaticBond_0(bond) || (this.mMode & 4) != 0)) {
    bondType = this.mMol.getBondType_0(bond) & 127;
    if (bondType == 1) {
      if (this.mMol.isAromaticAtom_1(this.mMol.getBondAtom_0(0, bond)) && this.mMol.isAromaticAtom_1(this.mMol.getBondAtom_0(1, bond)) && (this.mMode & 4) == 0 && this.mEZHalfParity[bond] == 0)
        builder.append_4(45);
    }
     else if (bondType == 2)
      builder.append_4(61);
    else if (bondType == 4)
      builder.append_4(35);
    else if (bondType == 8)
      builder.append_4(36);
    else if (bondType == 16)
      builder.append_4(36);
    else if (bondType == 64)
      builder.append_4(58);
    else if (bondType == 32)
      builder.append_9(this.mMol.isMetalAtom_0(parentAtom)?'<-':'->');
  }
  if (this.mMode == 1) {
    gap = startLength == builder.length_0()?'':';';
    ringState = this.mMol.getBondQueryFeatures_0(bond) & 384;
    if (ringState == 256)
      builder.append_9(gap + '@');
    else if (ringState == 128)
      builder.append_9(gap + '!@');
  }
}
;
_.appendClosureBonds = function appendClosureBonds(smilesAtom, builder){
  var bond, i, j;
  if (jsNotEquals(smilesAtom.closureNeighbour, null)) {
    for (i = 0; i < smilesAtom.closureNeighbour.length; i++) {
      for (j = 0; j < this.mMol.getConnAtoms_0(smilesAtom.atom); j++) {
        if (smilesAtom.closureNeighbour[i] == this.mMol.getConnAtom_0(smilesAtom.atom, j)) {
          bond = this.mMol.getConnBond_0(smilesAtom.atom, j);
          if (!smilesAtom.closureOpens[i])
            this.appendBondOrderSymbol(bond, smilesAtom.atom, builder);
          if (this.mClosureNumber[bond] > 9)
            builder.append_4(37);
          builder.append_5(this.mClosureNumber[bond]);
        }
      }
    }
  }
}
;
_.calculateEZBonds = function calculateEZBonds(){
  var bond, bondWithHalfParity, branchBond, bwhp, bwhp$array, bwhp$index, bwhp$max, childAtom, childBond, collides, connAtom, connAtom1, connAtom2, connBond1, connBond2, currentSA, currentSA$iterator, differs, ezBond, firstNeighbourIndex, firstSmilesIndex, group, halfParity2, halfParityIndex, i, i0, inverted, j, neighbourAtom, neighbourBond, overlapCount, parentSA, parity, relativeBondParityList, secondNeighbourIndex, startSize;
  relativeBondParityList = new ju.ArrayList;
  for (currentSA$iterator = this.mGraphAtomList.iterator(); currentSA$iterator.hasNext_0();) {
    currentSA = castTo(currentSA$iterator.next_3(), 76);
    if (currentSA.parent_0 != -1) {
      ezBond = this.mMol.getBond_0(currentSA.atom, currentSA.parent_0);
      if (!this.mMol.isBINAPChiralityBond_0(ezBond) && !this.mMol.isSmallRingBond_0(ezBond) && (this.mMol.getBondParity_0(ezBond) == 1 || this.mMol.getBondParity_0(ezBond) == 2)) {
        parentSA = castTo(this.mGraphAtomList.getAtIndex(this.mSmilesIndex[currentSA.parent_0]), 76);
        bondWithHalfParity = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(currentSA.atom) + this.mMol.getConnAtoms_0(parentSA.atom) - 2, 15, 1);
        halfParityIndex = 0;
        parity = false;
        if (parentSA.parent_0 != -1) {
          bondWithHalfParity[halfParityIndex++] = parentSA.bond;
        }
         else {
          firstNeighbourIndex = -1;
          secondNeighbourIndex = -1;
          firstSmilesIndex = 2147483647;
          for (i0 = 0; i0 < this.mMol.getConnAtoms_0(parentSA.atom); i0++) {
            connAtom = this.mMol.getConnAtom_0(parentSA.atom, i0);
            if (connAtom != currentSA.atom) {
              if (firstNeighbourIndex == -1) {
                firstNeighbourIndex = i0;
                firstSmilesIndex = this.mSmilesIndex[connAtom];
              }
               else {
                if (firstSmilesIndex < this.mSmilesIndex[connAtom]) {
                  secondNeighbourIndex = i0;
                }
                 else {
                  secondNeighbourIndex = firstNeighbourIndex;
                  firstNeighbourIndex = i0;
                }
              }
            }
          }
          if (secondNeighbourIndex == -1) {
            neighbourAtom = this.mMol.getConnAtom_0(parentSA.atom, firstNeighbourIndex);
            neighbourBond = this.mMol.getConnBond_0(parentSA.atom, firstNeighbourIndex);
            bondWithHalfParity[halfParityIndex++] = neighbourBond | (this.isBondFromTo(parentSA.atom, neighbourAtom)?1073741824:0);
          }
           else {
            connAtom1 = this.mMol.getConnAtom_0(parentSA.atom, firstNeighbourIndex);
            connBond1 = this.mMol.getConnBond_0(parentSA.atom, firstNeighbourIndex);
            connAtom2 = this.mMol.getConnAtom_0(parentSA.atom, secondNeighbourIndex);
            connBond2 = this.mMol.getConnBond_0(parentSA.atom, secondNeighbourIndex);
            bondWithHalfParity[halfParityIndex++] = connBond1 | (this.isBondFromTo(parentSA.atom, connAtom1)?1073741824:0);
            bondWithHalfParity[halfParityIndex++] = connBond2 | (this.isBondFromTo(parentSA.atom, connAtom2)?0:1073741824);
          }
        }
        if (this.mMol.getConnAtoms_0(parentSA.atom) == 3 && parentSA.parent_0 != -1) {
          for (i0 = 0; i0 < this.mMol.getConnAtoms_0(parentSA.atom); i0++) {
            connAtom = this.mMol.getConnAtom_0(parentSA.atom, i0);
            if (connAtom != parentSA.parent_0 && connAtom != currentSA.atom) {
              branchBond = this.mMol.getConnBond_0(parentSA.atom, i0);
              bondWithHalfParity[halfParityIndex++] = branchBond | (this.isBondFromTo(parentSA.atom, connAtom)?1073741824:0);
              if (connAtom < parentSA.parent_0)
                parity = !parity;
              break;
            }
          }
        }
        if (this.mMol.getBondParity_0(ezBond) == 2)
          parity = !parity;
        for (i = 0; i < this.mMol.getConnAtoms_0(currentSA.atom); i++) {
          childAtom = this.mMol.getConnAtom_0(currentSA.atom, i);
          if (childAtom != currentSA.parent_0) {
            halfParity2 = parity;
            if (this.mMol.getConnAtoms_0(currentSA.atom) == 3) {
              for (j = 0; j < this.mMol.getConnAtoms_0(currentSA.atom); j++) {
                connAtom = this.mMol.getConnAtom_0(currentSA.atom, j);
                if (connAtom != currentSA.parent_0 && connAtom != childAtom) {
                  if (connAtom < childAtom)
                    halfParity2 = !halfParity2;
                  break;
                }
              }
            }
            if (this.mMol.isBondParityPseudo_0(ezBond)) {
              group = this.mCanonizer.getPseudoEZGroup(ezBond);
              if (!this.mPseudoStereoGroupInitialized[group]) {
                this.mPseudoStereoGroupInitialized[group] = true;
                this.mPseudoStereoGroupInversion[group] = halfParity2;
              }
              if (this.mPseudoStereoGroupInversion[group])
                halfParity2 = !halfParity2;
            }
            childBond = this.mMol.getBond_0(currentSA.atom, childAtom);
            bondWithHalfParity[halfParityIndex++] = childBond | (halfParity2 ^ this.isBondFromTo(currentSA.atom, childAtom)?0:1073741824);
          }
        }
        relativeBondParityList.add(bondWithHalfParity);
      }
    }
  }
  this.mEZHalfParity = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  if (relativeBondParityList.size() != 0)
    this.addRelativeBondHalfParities(castTo(relativeBondParityList.removeAtIndex(0), 6), false);
  while (relativeBondParityList.size() != 0) {
    startSize = relativeBondParityList.size();
    for (i = relativeBondParityList.size() - 1; i >= 0; i--) {
      bondWithHalfParity = castTo(relativeBondParityList.getAtIndex(i), 6);
      overlapCount = 0;
      inverted = false;
      collides = false;
      for (bwhp$array = bondWithHalfParity , bwhp$index = 0 , bwhp$max = bwhp$array.length; bwhp$index < bwhp$max; ++bwhp$index) {
        bwhp = bwhp$array[bwhp$index];
        bond = bwhp & 1073741823;
        if (this.mEZHalfParity[bond] != 0) {
          differs = (bwhp & 1073741824) != 0 ^ this.mEZHalfParity[bond] == 2;
          if (overlapCount == 0)
            inverted = differs;
          else if (inverted != differs)
            collides = true;
          overlapCount++;
        }
      }
      if (overlapCount != 0) {
        bondWithHalfParity = castTo(relativeBondParityList.removeAtIndex(i), 6);
        if (!collides)
          this.addRelativeBondHalfParities(bondWithHalfParity, inverted);
      }
    }
    if (startSize == relativeBondParityList.size())
      this.addRelativeBondHalfParities(castTo(relativeBondParityList.removeAtIndex(0), 6), false);
  }
}
;
_.createMultiAtomLabel = function createMultiAtomLabel(atom, atomicNo, buffer){
  var a, a$array, a$index, a$max, isLowerCase, label_0;
  buffer.setLength(0);
  isLowerCase = this.mMol.isAromaticAtom_1(atom) && (this.mMode & 4) == 0;
  for (a$array = atomicNo , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
    a = a$array[a$index];
    if (buffer.length_0() != 0)
      buffer.append_4(44);
    label_0 = (carc2.$clinit_Molecule() , carc2.cAtomLabel)[a];
    buffer.append_9(isLowerCase?jl.toLowerCase__Ljava_lang_String___devirtual$(label_0):label_0);
  }
  return buffer.toString_0();
}
;
_.createSmiles = function createSmiles(){
  var atom, buffer, builder, groupCount, isFirst, smilesAtom, smilesAtom$iterator, type_0;
  if (isNull(this.mMol) || this.mMol.getAllAtoms_0() == 0)
    return '';
  this.mMol.ensureHelperArrays_0(15);
  this.mCanonizer = new carc2.Canonizer_0(this.mMol, 1 | 128);
  groupCount = this.mCanonizer.getPseudoStereoGroupCount();
  this.mPseudoStereoGroupInversion = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, groupCount + 1, 16, 1);
  this.mPseudoStereoGroupInitialized = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, groupCount + 1, 16, 1);
  this.mKnownTHCountInESRGroup = initMultidimensionalArray(cggl.I_classLit, [{35:1, 4:1, 1:1, 7:1}, {6:1, 4:1, 1:1}], [6, 5], 15, [2, 32], 2);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    type_0 = this.mMol.getAtomESRType_0(atom) - 1;
    if (type_0 != -1)
      this.mKnownTHCountInESRGroup[type_0][this.mMol.getAtomESRGroup_0(atom)]++;
  }
  this.generateCanonicalTree();
  this.findRingClosures();
  this.calculateEZBonds();
  builder = new jl.StringBuilder;
  buffer = new jl.StringBuilder;
  isFirst = true;
  for (smilesAtom$iterator = this.mGraphAtomList.iterator(); smilesAtom$iterator.hasNext_0();) {
    smilesAtom = castTo(smilesAtom$iterator.next_3(), 76);
    if (smilesAtom.parent_0 == -1) {
      if (isFirst)
        isFirst = false;
      else 
        builder.append_4(46);
    }
    this.addAtomString(smilesAtom, builder, buffer);
  }
  return builder.toString_0();
}
;
_.findRingClosures = function findRingClosures(){
  var bond, closureCount, closureNumberUsed, i, i0, i1, j, neighbour, smilesAtom, smilesAtom$iterator, smilesAtom$iterator0;
  for (smilesAtom$iterator0 = this.mGraphAtomList.iterator(); smilesAtom$iterator0.hasNext_0();) {
    smilesAtom = castTo(smilesAtom$iterator0.next_3(), 76);
    closureCount = 0;
    for (i0 = 0; i0 < this.mMol.getConnAtoms_0(smilesAtom.atom); i0++)
      if (!this.mBondUsed[this.mMol.getConnBond_0(smilesAtom.atom, i0)])
        closureCount++;
    if (closureCount != 0) {
      smilesAtom.closureNeighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, closureCount, 15, 1);
      closureCount = 0;
      for (i1 = 0; i1 < this.mMol.getConnAtoms_0(smilesAtom.atom); i1++) {
        if (!this.mBondUsed[this.mMol.getConnBond_0(smilesAtom.atom, i1)]) {
          neighbour = this.mMol.getConnAtom_0(smilesAtom.atom, i1);
          smilesAtom.closureNeighbour[closureCount++] = this.mSmilesIndex[neighbour] << 16 | neighbour;
        }
      }
      ju.sort_3(smilesAtom.closureNeighbour);
      for (i = 0; i < smilesAtom.closureNeighbour.length; i++)
        smilesAtom.closureNeighbour[i] = 65535 & smilesAtom.closureNeighbour[i];
    }
  }
  closureNumberUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mClosureNumber = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (smilesAtom$iterator = this.mGraphAtomList.iterator(); smilesAtom$iterator.hasNext_0();) {
    smilesAtom = castTo(smilesAtom$iterator.next_3(), 76);
    if (jsNotEquals(smilesAtom.closureNeighbour, null)) {
      smilesAtom.closureOpens = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, smilesAtom.closureNeighbour.length, 16, 1);
      for (i = 0; i < smilesAtom.closureNeighbour.length; i++) {
        for (j = 0; j < this.mMol.getConnAtoms_0(smilesAtom.atom); j++) {
          if (smilesAtom.closureNeighbour[i] == this.mMol.getConnAtom_0(smilesAtom.atom, j)) {
            bond = this.mMol.getConnBond_0(smilesAtom.atom, j);
            if (!this.mBondUsed[bond]) {
              this.mBondUsed[bond] = true;
              smilesAtom.closureOpens[i] = true;
              this.mClosureNumber[bond] = 1;
              while (closureNumberUsed[this.mClosureNumber[bond]])
                this.mClosureNumber[bond]++;
              closureNumberUsed[this.mClosureNumber[bond]] = true;
            }
             else {
              closureNumberUsed[this.mClosureNumber[bond]] = false;
            }
          }
        }
      }
    }
  }
}
;
_.findUnusedStartAtom = function findUnusedStartAtom(){
  var atom, rank, startAtom, startRank;
  startAtom = -1;
  startRank = 2147483647;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (!this.mAtomUsed[atom]) {
      rank = this.mAtomRank[atom];
      if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 536870912), 0))
        rank += 1073741824;
      if (this.mMol.getConnAtoms_0(atom) == 0)
        rank += 1056964608;
      else 
        rank += this.mMol.getConnAtoms_0(atom) << 24;
      if (startRank > rank) {
        startRank = rank;
        startAtom = atom;
      }
    }
  }
  return startAtom;
}
;
_.generateCanonicalTree = function generateCanonicalTree(){
  var atom, graphIndex, index_0, smilesAtom, smilesAtom$iterator;
  this.mAtomRank = this.mCanonizer.getFinalRank();
  this.mAtomUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  this.mBondUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mGraphAtomList = new ju.ArrayList;
  atom = this.findUnusedStartAtom();
  while (atom != -1) {
    graphIndex = this.mGraphAtomList.size();
    this.addToGraph(new carc2.SmilesAtom(atom, -1, -1, false, false), graphIndex);
    if (this.mMol.getConnAtoms_0(atom) != 0) {
      this.addHighestRankingChain(graphIndex, false);
      while (graphIndex < this.mGraphAtomList.size() - 1) {
        while (this.hasUnusedNeighborAtom(castTo(this.mGraphAtomList.getAtIndex(graphIndex), 76).atom))
          this.addHighestRankingChain(graphIndex, true);
        graphIndex++;
      }
    }
    atom = this.findUnusedStartAtom();
  }
  this.mSmilesIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  index_0 = 0;
  for (smilesAtom$iterator = this.mGraphAtomList.iterator(); smilesAtom$iterator.hasNext_0();) {
    smilesAtom = castTo(smilesAtom$iterator.next_3(), 76);
    this.mSmilesIndex[smilesAtom.atom] = index_0++;
  }
}
;
_.getAtomParitySymbol = function getAtomParitySymbol(atom, parent_0){
  var connAtom, group, i, index_0, inversion, isClockwise, j, neighborAtom, neighborRank, neighbour, neighbours;
  inversion = false;
  if (this.mMol.getAtomPi_0(atom) != 0 && this.mMol.getConnAtoms_0(atom) == 2 && this.mMol.getConnBondOrder_0(atom, 0) == 2 && this.mMol.getConnBondOrder_0(atom, 1) == 2) {
    for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
      connAtom = this.mMol.getConnAtom_0(atom, i);
      neighbours = 0;
      neighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 3, 15, 1);
      for (j = 0; j < this.mMol.getConnAtoms_0(connAtom); j++) {
        neighbour[neighbours] = this.mMol.getConnAtom_0(connAtom, j);
        if (neighbour[neighbours] != atom)
          neighbours++;
      }
      if (neighbours == 2 && this.mSmilesIndex[neighbour[0]] < this.mSmilesIndex[neighbour[1]] ^ neighbour[0] < neighbour[1])
        inversion = !inversion;
    }
  }
   else {
    neighborAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
    neighborRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
    index_0 = 0;
    if (parent_0 != -1) {
      neighborAtom[index_0] = parent_0;
      neighborRank[index_0++] = 8 * this.mSmilesIndex[parent_0];
    }
    if (this.mMol.getImplicitHydrogens_0(atom) != 0) {
      neighborAtom[index_0] = 2147483647;
      neighborRank[index_0++] = 8 * this.mSmilesIndex[atom];
    }
     else if (this.mMol.getConnAtoms_0(atom) == 3) {
      neighborAtom[index_0] = 2147483647;
      neighborRank[index_0++] = 8 * this.mSmilesIndex[atom];
    }
    for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
      connAtom = this.mMol.getConnAtom_0(atom, i);
      if (connAtom != parent_0) {
        neighborAtom[index_0] = connAtom;
        neighborRank[index_0++] = this.getSmilesRank(atom, i);
      }
    }
    inversion = this.isInverseOrder(neighborAtom, neighborRank);
  }
  isClockwise = this.mMol.getAtomParity_0(atom) == 1 ^ inversion;
  if (this.mMol.isAtomParityPseudo_0(atom)) {
    group = this.mCanonizer.getPseudoTHGroup(atom);
    if (!this.mPseudoStereoGroupInitialized[group]) {
      this.mPseudoStereoGroupInitialized[group] = true;
      this.mPseudoStereoGroupInversion[group] = isClockwise;
    }
    if (this.mPseudoStereoGroupInversion[group])
      isClockwise = !isClockwise;
  }
  return isClockwise?'@@':'@';
}
;
_.getAtomSMARTSFeatures = function getAtomSMARTSFeatures(atom, buffer){
  var aromState, chargeFeatures, hydrogenQueryFeatures, neighbourFeatures, queryFeatures, ringSize, ringState;
  buffer.setLength(0);
  queryFeatures = this.mMol.getAtomQueryFeatures(atom);
  chargeFeatures = toInt_0(shr_0(and_0(queryFeatures, 234881024), 3));
  switch (chargeFeatures) {
    case toInt_0(shr_0(or_0(33554432, 134217728), 3)):
      buffer.append_9('+0');
      break;
    case toInt_0(shr_0(or_0(67108864, 134217728), 3)):
      if (this.mMol.getAtomCharge_0(atom) == 0)
        buffer.append_9('-');
      break;
    case toInt_0(shr_0(or_0(67108864, 33554432), 3)):
      if (this.mMol.getAtomCharge_0(atom) == 0)
        buffer.append_9('+');
      break;
  }
  aromState = and_0(queryFeatures, {l:6, m:0, h:4});
  if (eq(aromState, 2))
    buffer.append_9(';a');
  else if (eq(aromState, 4))
    buffer.append_9(';A');
  hydrogenQueryFeatures = and_0(queryFeatures, 1920);
  if (neq(hydrogenQueryFeatures, 0)) {
    if (eq(hydrogenQueryFeatures, or_0(or_0(256, 512), 1024)))
      buffer.append_9(';H0');
    else if (eq(hydrogenQueryFeatures, or_0(or_0(128, 512), 1024)))
      buffer.append_9(';H1');
    else if (eq(hydrogenQueryFeatures, or_0(or_0(128, 256), 1024)))
      buffer.append_9(';H2');
    else if (eq(hydrogenQueryFeatures, or_0(or_0(128, 256), 512)))
      buffer.append_9(';H3');
    else if (eq(hydrogenQueryFeatures, 128))
      buffer.append_9(';!H0');
    else if (eq(hydrogenQueryFeatures, or_0(128, 256)))
      buffer.append_9(';!H0;!H1');
    else if (eq(hydrogenQueryFeatures, or_0(512, 1024)))
      buffer.append_9(';!H2;!H3');
    else if (eq(hydrogenQueryFeatures, 1024))
      buffer.append_9(';!H3');
  }
  ringState = and_0(queryFeatures, 120);
  if (eq(ringState, 8))
    buffer.append_9(';!R0');
  else if (eq(ringState, 16))
    buffer.append_9(';!R1');
  else if (eq(ringState, 32))
    buffer.append_9(';!R2');
  else if (eq(ringState, 64))
    buffer.append_9(';!R3');
  else if (eq(ringState, or_0(or_0(16, 32), 64)))
    buffer.append_9(';R0');
  else if (eq(ringState, or_0(or_0(8, 32), 64)))
    buffer.append_9(';R1');
  else if (eq(ringState, or_0(or_0(8, 16), 64)))
    buffer.append_9(';R2');
  else if (eq(ringState, or_0(or_0(8, 16), 32)))
    buffer.append_9(';R3');
  ringSize = and_0(queryFeatures, 545460846592);
  if (eq(ringSize, 4294967296))
    buffer.append_9(';!r' + toString_29(ringSize));
  else if (eq(ringSize, and_0(545460846592, not_0(4294967296))))
    buffer.append_9(';r' + toString_29(ringSize));
  else if (neq(ringSize, 0)) {
    if (neq(and_0(ringSize, 274877906944), 0)) {
      if (eq(and_0(ringSize, 4294967296), 0))
        buffer.append_9(';!r0' + toString_29(ringSize));
      if (eq(and_0(ringSize, 8589934592), 0))
        buffer.append_9(';!r3' + toString_29(ringSize));
      if (eq(and_0(ringSize, 17179869184), 0))
        buffer.append_9(';!r4' + toString_29(ringSize));
      if (eq(and_0(ringSize, 34359738368), 0))
        buffer.append_9(';!r5' + toString_29(ringSize));
      if (eq(and_0(ringSize, 68719476736), 0))
        buffer.append_9(';!r6' + toString_29(ringSize));
      if (eq(and_0(ringSize, 137438953472), 0))
        buffer.append_9(';!r7' + toString_29(ringSize));
    }
     else {
      buffer.append_9(';');
      if (neq(and_0(ringSize, 4294967296), 0))
        buffer.append_9('r0,' + toString_29(ringSize));
      if (neq(and_0(ringSize, 8589934592), 0))
        buffer.append_9('r3,' + toString_29(ringSize));
      if (neq(and_0(ringSize, 17179869184), 0))
        buffer.append_9('r4,' + toString_29(ringSize));
      if (neq(and_0(ringSize, 34359738368), 0))
        buffer.append_9('r5,' + toString_29(ringSize));
      if (neq(and_0(ringSize, 68719476736), 0))
        buffer.append_9('r6,' + toString_29(ringSize));
      if (neq(and_0(ringSize, 137438953472), 0))
        buffer.append_9('r7,' + toString_29(ringSize));
      buffer.setLength(buffer.length_0() - 1);
    }
  }
  if (eq(ringSize, 0)) {
    ringSize = shr_0(and_0(queryFeatures, 29360128), 22);
    if (neq(ringSize, 0))
      buffer.append_9(';r' + toString_29(ringSize));
  }
  neighbourFeatures = and_0(queryFeatures, 4063232);
  if (eq(neighbourFeatures, and_0(4063232, not_0(262144))))
    buffer.append_9(';D1');
  if (eq(neighbourFeatures, and_0(4063232, not_0(524288))))
    buffer.append_9(';D2');
  if (eq(neighbourFeatures, and_0(4063232, not_0(1048576))))
    buffer.append_9(';D3');
  if (eq(neighbourFeatures, or_0(1048576, 2097152)))
    buffer.append_9(';!D3;!D4');
  if (eq(neighbourFeatures, 2097152))
    buffer.append_9(';!D4');
  if (eq(neighbourFeatures, or_0(131072, 262144)))
    buffer.append_9(';!D0;!D1');
  if (eq(neighbourFeatures, or_0(or_0(131072, 262144), 524288)))
    buffer.append_9(';!D0;!D1;!D2');
  if (eq(neighbourFeatures, and_0(4063232, not_0(2097152))))
    buffer.append_9(';!D0;!D1;!D2;!D3');
  if (neq(and_0(queryFeatures, 2048), 0))
    buffer.append_9(';D' + this.mMol.getConnAtoms_0(atom));
  if (neq(and_0(queryFeatures, 4096), 0))
    buffer.append_9(';!D' + this.mMol.getConnAtoms_0(atom));
  return buffer.length_0() == 0?null:buffer.toString_0();
}
;
_.getSmiles_0 = function getSmiles(){
  if (jsEquals(this.mSmiles, null))
    this.mSmiles = this.createSmiles();
  return this.mSmiles;
}
;
_.getSmilesRank = function getSmilesRank(atom, neighbourIndex){
  var bond, closureNeighbour, i, neighbour, rank;
  bond = this.mMol.getConnBond_0(atom, neighbourIndex);
  neighbour = this.mMol.getConnAtom_0(atom, neighbourIndex);
  if (this.mClosureNumber[bond] != 0) {
    rank = 8 * this.mSmilesIndex[atom] + 1;
    closureNeighbour = castTo(this.mGraphAtomList.getAtIndex(this.mSmilesIndex[atom]), 76).closureNeighbour;
    for (i = 0; i < closureNeighbour.length && neighbour != closureNeighbour[i]; i++)
      rank++;
    return rank;
  }
  return 8 * this.mSmilesIndex[neighbour];
}
;
_.getUnusedConnAtomIndex = function getUnusedConnAtomIndex(atom){
  var bestIndex, bestRank, connAtom, i, rank;
  bestIndex = -1;
  bestRank = -1;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    connAtom = this.mMol.getConnAtom_0(atom, i);
    rank = (this.mMol.getConnBondOrder_0(atom, i) << 24) + this.mAtomRank[connAtom];
    if (!this.mAtomUsed[connAtom] && (bestIndex == -1 || bestRank < rank)) {
      bestIndex = i;
      bestRank = rank;
    }
  }
  return bestIndex;
}
;
_.hasUnusedNeighborAtom = function hasUnusedNeighborAtom(atom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (!this.mAtomUsed[this.mMol.getConnAtom_0(atom, i)])
      return true;
  return false;
}
;
_.isBondFromTo = function isBondFromTo(atom1, atom2){
  var sa1, sa2;
  sa1 = castTo(this.mGraphAtomList.getAtIndex(this.mSmilesIndex[atom1]), 76);
  if (sa1.parent_0 == atom2)
    return false;
  sa2 = castTo(this.mGraphAtomList.getAtIndex(this.mSmilesIndex[atom2]), 76);
  if (sa2.parent_0 == atom1)
    return true;
  return sa2.isOpeningClosureTo(atom1);
}
;
_.isInverseOrder = function isInverseOrder(neighborAtom, neighborRank){
  var i, inversion, j;
  inversion = false;
  for (i = 1; i < 4; i++) {
    for (j = 0; j < i; j++) {
      if (neighborAtom[j] > neighborAtom[i])
        inversion = !inversion;
      if (neighborRank[j] > neighborRank[i])
        inversion = !inversion;
    }
  }
  return inversion;
}
;
_.isOrganic = function isOrganic(atomicNo){
  return atomicNo >= 5 && atomicNo <= 9 || atomicNo >= 15 && atomicNo <= 17 || atomicNo == 35 || atomicNo == 53;
}
;
_.isSingleKnownStereoCenterInESRGroup = function isSingleKnownStereoCenterInESRGroup(atom){
  var type_0;
  type_0 = this.mMol.getAtomESRType_0(atom) - 1;
  return type_0 == -1?false:this.mKnownTHCountInESRGroup[type_0][this.mMol.getAtomESRGroup_0(atom)] <= 1;
}
;
_.qualifiesForAtomParity = function qualifiesForAtomParity(atom){
  return (this.mMol.getAtomParity_0(atom) == 1 || this.mMol.getAtomParity_0(atom) == 2) && !this.isSingleKnownStereoCenterInESRGroup(atom) && (this.mMol.getAtomicNo_0(atom) != 7 || this.mMol.getAtomCharge_0(atom) > 0);
}
;
_.mMode = 0;
carc2.MODE_CREATE_SMARTS = 1;
carc2.MODE_INCLUDE_MAPPING = 2;
carc2.MODE_KEKULIZED_OUTPUT = 4;
cggl.Lcom_actelion_research_chem_IsomericSmilesCreator_2_classLit = createForClass('com.actelion.research.chem', 'IsomericSmilesCreator', 125, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_Isotope = function $clinit_Isotope(){
  carc2.$clinit_Isotope = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.Isotope = function Isotope(neutrones, absoluteMass, percentage){
  carc2.$clinit_Isotope();
  Object_0.call(this);
  this.$init_32();
  this.neutrones = neutrones;
  this.absoluteMass = absoluteMass;
  this.percentage = percentage;
}
;
defineClass(3, 1, {3:1, 1:1}, carc2.Isotope);
_.$init_32 = function $init_32(){
}
;
_.absoluteMass = 0;
_.neutrones = 0;
_.percentage = 0;
cggl.Lcom_actelion_research_chem_Isotope_2_classLit = createForClass('com.actelion.research.chem', 'Isotope', 3, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_IsotopeHelper = function $clinit_IsotopeHelper(){
  carc2.$clinit_IsotopeHelper = emptyMethod;
  jl.$clinit_Object();
  carc2.sIsotope = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 2), {4:1, 1:1, 7:1}, 17, 0, [null, stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(0, 1.007825032, 100), new carc2.Isotope(1, 2.014101778, 0.015), new carc2.Isotope(2, 3.016049268, 0), new carc2.Isotope(3, 4.027834627, 0), new carc2.Isotope(4, 5.039542911, 0), new carc2.Isotope(5, 6.044942608, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(1, 3.01602931, 1.0E-4), new carc2.Isotope(2, 4.00260325, 100), new carc2.Isotope(3, 5.012223628, 0), new carc2.Isotope(4, 6.018888072, 0), new carc2.Isotope(5, 7.028030527, 0), new carc2.Isotope(6, 8.033921838, 0), new carc2.Isotope(7, 9.043820323, 0), new carc2.Isotope(8, 10.052399713, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(1, 4.027182329, 0), new carc2.Isotope(2, 5.012537796, 0), new carc2.Isotope(3, 6.015122281, 8.1081), new carc2.Isotope(4, 7.016004049, 100), new carc2.Isotope(5, 8.02248667, 0), new carc2.Isotope(6, 9.026789122, 0), new carc2.Isotope(7, 10.035480884, 0), new carc2.Isotope(8, 11.043796166, 0), new carc2.Isotope(9, 12.05378, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(1, 5.04079, 0), new carc2.Isotope(2, 6.019725804, 0), new carc2.Isotope(3, 7.016929246, 0), new carc2.Isotope(4, 8.005305094, 0), new carc2.Isotope(5, 9.012182135, 100), new carc2.Isotope(6, 10.01353372, 0), new carc2.Isotope(7, 11.021657653, 0), new carc2.Isotope(8, 12.026920631, 0), new carc2.Isotope(9, 13.036133834, 0), new carc2.Isotope(10, 14.042815522, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(2, 7.029917389, 0), new carc2.Isotope(3, 8.024606713, 0), new carc2.Isotope(4, 9.013328806, 0), new carc2.Isotope(5, 10.012937027, 24.8439), new carc2.Isotope(6, 11.009305466, 100), new carc2.Isotope(7, 12.014352109, 0), new carc2.Isotope(8, 13.017780267, 0), new carc2.Isotope(9, 14.025404064, 0), new carc2.Isotope(10, 15.031097291, 0), new carc2.Isotope(11, 16.039808836, 0), new carc2.Isotope(12, 17.046931399, 0), new carc2.Isotope(13, 18.05617, 0), new carc2.Isotope(14, 19.06373, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(2, 8.037675026, 0), new carc2.Isotope(3, 9.031040087, 0), new carc2.Isotope(4, 10.01685311, 0), new carc2.Isotope(5, 11.011433818, 0), new carc2.Isotope(6, 12, 100), new carc2.Isotope(7, 13.003354838, 1.1122), new carc2.Isotope(8, 14.003241988, 0), new carc2.Isotope(9, 15.010599258, 0), new carc2.Isotope(10, 16.014701243, 0), new carc2.Isotope(11, 17.022583712, 0), new carc2.Isotope(12, 18.026757058, 0), new carc2.Isotope(13, 19.035248094, 0), new carc2.Isotope(14, 20.040322395, 0), new carc2.Isotope(15, 21.04934, 0), new carc2.Isotope(16, 22.05645, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(3, 10.042618, 0), new carc2.Isotope(4, 11.026796226, 0), new carc2.Isotope(5, 12.018613202, 0), new carc2.Isotope(6, 13.005738584, 0), new carc2.Isotope(7, 14.003074005, 100), new carc2.Isotope(8, 15.000108898, 0.3673), new carc2.Isotope(9, 16.006101417, 0), new carc2.Isotope(10, 17.008449673, 0), new carc2.Isotope(11, 18.014081827, 0), new carc2.Isotope(12, 19.017026896, 0), new carc2.Isotope(13, 20.023367295, 0), new carc2.Isotope(14, 21.027087574, 0), new carc2.Isotope(15, 22.034440259, 0), new carc2.Isotope(16, 23.04051, 0), new carc2.Isotope(17, 24.0505, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(4, 12.034404776, 0), new carc2.Isotope(5, 13.0248104, 0), new carc2.Isotope(6, 14.008595285, 0), new carc2.Isotope(7, 15.003065386, 0), new carc2.Isotope(8, 15.994914622, 100), new carc2.Isotope(9, 16.999131501, 0.0381), new carc2.Isotope(10, 17.999160419, 0.2005), new carc2.Isotope(11, 19.00357873, 0), new carc2.Isotope(12, 20.00407615, 0), new carc2.Isotope(13, 21.008654631, 0), new carc2.Isotope(14, 22.009967157, 0), new carc2.Isotope(15, 23.015691325, 0), new carc2.Isotope(16, 24.020369922, 0), new carc2.Isotope(17, 25.02914, 0), new carc2.Isotope(18, 26.03775, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(5, 14.03608, 0), new carc2.Isotope(6, 15.018010856, 0), new carc2.Isotope(7, 16.01146573, 0), new carc2.Isotope(8, 17.002095238, 0), new carc2.Isotope(9, 18.000937667, 0), new carc2.Isotope(10, 18.998403205, 100), new carc2.Isotope(11, 19.999981324, 0), new carc2.Isotope(12, 20.999948921, 0), new carc2.Isotope(13, 22.00299925, 0), new carc2.Isotope(14, 23.003574385, 0), new carc2.Isotope(15, 24.008099371, 0), new carc2.Isotope(16, 25.012094963, 0), new carc2.Isotope(17, 26.019633157, 0), new carc2.Isotope(18, 27.026892316, 0), new carc2.Isotope(19, 28.03567, 0), new carc2.Isotope(20, 29.04326, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(6, 16.025756907, 0), new carc2.Isotope(7, 17.017697565, 0), new carc2.Isotope(8, 18.005697066, 0), new carc2.Isotope(9, 19.001879839, 0), new carc2.Isotope(10, 19.992440176, 100), new carc2.Isotope(11, 20.993846744, 0.2983), new carc2.Isotope(12, 21.99138551, 10.1867), new carc2.Isotope(13, 22.994467337, 0), new carc2.Isotope(14, 23.993615074, 0), new carc2.Isotope(15, 24.997789899, 0), new carc2.Isotope(16, 26.000461498, 0), new carc2.Isotope(17, 27.0076152, 0), new carc2.Isotope(18, 28.012108072, 0), new carc2.Isotope(19, 29.019345902, 0), new carc2.Isotope(20, 30.023872, 0), new carc2.Isotope(21, 31.03311, 0), new carc2.Isotope(22, 32.03991, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(7, 18.02718, 0), new carc2.Isotope(8, 19.01387945, 0), new carc2.Isotope(9, 20.00734826, 0), new carc2.Isotope(10, 20.997655099, 0), new carc2.Isotope(11, 21.994436782, 0), new carc2.Isotope(12, 22.989769675, 100), new carc2.Isotope(13, 23.990963332, 0), new carc2.Isotope(14, 24.989954352, 0), new carc2.Isotope(15, 25.992589898, 0), new carc2.Isotope(16, 26.994008702, 0), new carc2.Isotope(17, 27.99889041, 0), new carc2.Isotope(18, 29.002811301, 0), new carc2.Isotope(19, 30.009226487, 0), new carc2.Isotope(20, 31.013595108, 0), new carc2.Isotope(21, 32.019649792, 0), new carc2.Isotope(22, 33.027386, 0), new carc2.Isotope(23, 34.0349, 0), new carc2.Isotope(24, 35.04418, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(8, 20.018862744, 0), new carc2.Isotope(9, 21.011714174, 0), new carc2.Isotope(10, 21.999574055, 0), new carc2.Isotope(11, 22.99412485, 0), new carc2.Isotope(12, 23.985041898, 100), new carc2.Isotope(13, 24.985837023, 12.6598), new carc2.Isotope(14, 25.98259304, 13.938), new carc2.Isotope(15, 26.984340742, 0), new carc2.Isotope(16, 27.983876703, 0), new carc2.Isotope(17, 28.988554743, 0), new carc2.Isotope(18, 29.990464529, 0), new carc2.Isotope(19, 30.996548459, 0), new carc2.Isotope(20, 31.999145889, 0), new carc2.Isotope(21, 33.005586975, 0), new carc2.Isotope(22, 34.00907244, 0), new carc2.Isotope(23, 35.018669, 0), new carc2.Isotope(24, 36.02245, 0), new carc2.Isotope(25, 37.03124, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(8, 21.02804, 0), new carc2.Isotope(9, 22.01952, 0), new carc2.Isotope(10, 23.0072649, 0), new carc2.Isotope(11, 23.999940911, 0), new carc2.Isotope(12, 24.990428555, 0), new carc2.Isotope(13, 25.986891659, 0), new carc2.Isotope(14, 26.981538441, 100), new carc2.Isotope(15, 27.981910184, 0), new carc2.Isotope(16, 28.980444848, 0), new carc2.Isotope(17, 29.982960304, 0), new carc2.Isotope(18, 30.983946023, 0), new carc2.Isotope(19, 31.988124379, 0), new carc2.Isotope(20, 32.990869587, 0), new carc2.Isotope(21, 33.996927255, 0), new carc2.Isotope(22, 34.99993765, 0), new carc2.Isotope(23, 36.006351501, 0), new carc2.Isotope(24, 37.01031, 0), new carc2.Isotope(25, 38.0169, 0), new carc2.Isotope(26, 39.0219, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(8, 22.03453, 0), new carc2.Isotope(9, 23.02552, 0), new carc2.Isotope(10, 24.011545711, 0), new carc2.Isotope(11, 25.00410664, 0), new carc2.Isotope(12, 25.992329935, 0), new carc2.Isotope(13, 26.986704764, 0), new carc2.Isotope(14, 27.976926533, 100), new carc2.Isotope(15, 28.976494719, 5.0634), new carc2.Isotope(16, 29.973770218, 3.3612), new carc2.Isotope(17, 30.975363275, 0), new carc2.Isotope(18, 31.974148129, 0), new carc2.Isotope(19, 32.97800052, 0), new carc2.Isotope(20, 33.978575745, 0), new carc2.Isotope(21, 34.984584158, 0), new carc2.Isotope(22, 35.986687363, 0), new carc2.Isotope(23, 36.99299599, 0), new carc2.Isotope(24, 37.99598, 0), new carc2.Isotope(25, 39.0023, 0), new carc2.Isotope(26, 40.0058, 0), new carc2.Isotope(27, 41.0127, 0), new carc2.Isotope(28, 42.0161, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(9, 24.03435, 0), new carc2.Isotope(10, 25.02026, 0), new carc2.Isotope(11, 26.01178, 0), new carc2.Isotope(12, 26.999191645, 0), new carc2.Isotope(13, 27.99231233, 0), new carc2.Isotope(14, 28.981801376, 0), new carc2.Isotope(15, 29.978313807, 0), new carc2.Isotope(16, 30.973761512, 100), new carc2.Isotope(17, 31.973907163, 0), new carc2.Isotope(18, 32.971725281, 0), new carc2.Isotope(19, 33.973636381, 0), new carc2.Isotope(20, 34.973314249, 0), new carc2.Isotope(21, 35.978259824, 0), new carc2.Isotope(22, 36.979608338, 0), new carc2.Isotope(23, 37.98447, 0), new carc2.Isotope(24, 38.98642, 0), new carc2.Isotope(25, 39.99105, 0), new carc2.Isotope(26, 40.9948, 0), new carc2.Isotope(27, 42.00009, 0), new carc2.Isotope(28, 43.00331, 0), new carc2.Isotope(29, 44.00988, 0), new carc2.Isotope(30, 45.01514, 0), new carc2.Isotope(31, 46.02383, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(10, 26.02788, 0), new carc2.Isotope(11, 27.018795, 0), new carc2.Isotope(12, 28.004372661, 0), new carc2.Isotope(13, 28.996608805, 0), new carc2.Isotope(14, 29.984902954, 0), new carc2.Isotope(15, 30.979554421, 0), new carc2.Isotope(16, 31.97207069, 100), new carc2.Isotope(17, 32.971458497, 0.7893), new carc2.Isotope(18, 33.967866831, 4.4306), new carc2.Isotope(19, 34.96903214, 0), new carc2.Isotope(20, 35.96708088, 0.022), new carc2.Isotope(21, 36.971125716, 0), new carc2.Isotope(22, 37.971163443, 0), new carc2.Isotope(23, 38.975135275, 0), new carc2.Isotope(24, 39.97547, 0), new carc2.Isotope(25, 40.98003, 0), new carc2.Isotope(26, 41.98149, 0), new carc2.Isotope(27, 42.9866, 0), new carc2.Isotope(28, 43.98832, 0), new carc2.Isotope(29, 44.99482, 0), new carc2.Isotope(30, 45.99957, 0), new carc2.Isotope(31, 47.00762, 0), new carc2.Isotope(32, 48.01299, 0), new carc2.Isotope(33, 49.02201, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(11, 28.02851, 0), new carc2.Isotope(12, 29.01411, 0), new carc2.Isotope(13, 30.00477, 0), new carc2.Isotope(14, 30.992416014, 0), new carc2.Isotope(15, 31.985688908, 0), new carc2.Isotope(16, 32.977451798, 0), new carc2.Isotope(17, 33.973761967, 0), new carc2.Isotope(18, 34.968852707, 100), new carc2.Isotope(19, 35.968306945, 0), new carc2.Isotope(20, 36.9659026, 31.978), new carc2.Isotope(21, 37.96801055, 0), new carc2.Isotope(22, 38.968007677, 0), new carc2.Isotope(23, 39.970415555, 0), new carc2.Isotope(24, 40.970650212, 0), new carc2.Isotope(25, 41.973174994, 0), new carc2.Isotope(26, 42.974203385, 0), new carc2.Isotope(27, 43.978538712, 0), new carc2.Isotope(28, 44.9797, 0), new carc2.Isotope(29, 45.98412, 0), new carc2.Isotope(30, 46.98795, 0), new carc2.Isotope(31, 47.99485, 0), new carc2.Isotope(32, 48.99989, 0), new carc2.Isotope(33, 50.00773, 0), new carc2.Isotope(34, 51.01353, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(12, 30.02156, 0), new carc2.Isotope(13, 31.012126, 0), new carc2.Isotope(14, 31.99766066, 0), new carc2.Isotope(15, 32.989928719, 0), new carc2.Isotope(16, 33.980270118, 0), new carc2.Isotope(17, 34.975256726, 0), new carc2.Isotope(18, 35.967546282, 0.338), new carc2.Isotope(19, 36.966775912, 0), new carc2.Isotope(20, 37.962732161, 0.063), new carc2.Isotope(21, 38.964313413, 0), new carc2.Isotope(22, 39.962383123, 100), new carc2.Isotope(23, 40.964500828, 0), new carc2.Isotope(24, 41.963046386, 0), new carc2.Isotope(25, 42.965670701, 0), new carc2.Isotope(26, 43.965365269, 0), new carc2.Isotope(27, 44.968094979, 0), new carc2.Isotope(28, 45.968093467, 0), new carc2.Isotope(29, 46.972186238, 0), new carc2.Isotope(30, 47.97507, 0), new carc2.Isotope(31, 48.98218, 0), new carc2.Isotope(32, 49.98594, 0), new carc2.Isotope(33, 50.99324, 0), new carc2.Isotope(34, 51.99817, 0), new carc2.Isotope(35, 53.006227, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(13, 32.02192, 0), new carc2.Isotope(14, 33.00726, 0), new carc2.Isotope(15, 33.99841, 0), new carc2.Isotope(16, 34.988011615, 0), new carc2.Isotope(17, 35.981293405, 0), new carc2.Isotope(18, 36.973376915, 0), new carc2.Isotope(19, 37.969080107, 0), new carc2.Isotope(20, 38.963706861, 100), new carc2.Isotope(21, 39.963998672, 0.013), new carc2.Isotope(22, 40.961825972, 7.217), new carc2.Isotope(23, 41.962403059, 0), new carc2.Isotope(24, 42.960715746, 0), new carc2.Isotope(25, 43.961556146, 0), new carc2.Isotope(26, 44.960699658, 0), new carc2.Isotope(27, 45.961976203, 0), new carc2.Isotope(28, 46.961677807, 0), new carc2.Isotope(29, 47.965512946, 0), new carc2.Isotope(30, 48.967450084, 0), new carc2.Isotope(31, 49.972782832, 0), new carc2.Isotope(32, 50.97638, 0), new carc2.Isotope(33, 51.98261, 0), new carc2.Isotope(34, 52.98712, 0), new carc2.Isotope(35, 53.99399, 0), new carc2.Isotope(36, 54.999388, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(14, 34.01412, 0), new carc2.Isotope(15, 35.004765, 0), new carc2.Isotope(16, 35.993087234, 0), new carc2.Isotope(17, 36.985871505, 0), new carc2.Isotope(18, 37.976318637, 0), new carc2.Isotope(19, 38.970717729, 0), new carc2.Isotope(20, 39.962591155, 100), new carc2.Isotope(21, 40.962278349, 0), new carc2.Isotope(22, 41.958618337, 0.6674), new carc2.Isotope(23, 42.958766833, 0.1393), new carc2.Isotope(24, 43.955481094, 2.1518), new carc2.Isotope(25, 44.956185938, 0), new carc2.Isotope(26, 45.953692759, 0.0041), new carc2.Isotope(27, 46.954546459, 0), new carc2.Isotope(28, 47.952533512, 0.1929), new carc2.Isotope(29, 48.955673302, 0), new carc2.Isotope(30, 49.957518286, 0), new carc2.Isotope(31, 50.961474238, 0), new carc2.Isotope(32, 51.9651, 0), new carc2.Isotope(33, 52.97005, 0), new carc2.Isotope(34, 53.97468, 0), new carc2.Isotope(35, 54.98055, 0), new carc2.Isotope(36, 55.98579, 0), new carc2.Isotope(37, 56.992356, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(15, 36.01492, 0), new carc2.Isotope(16, 37.00305, 0), new carc2.Isotope(17, 37.9947, 0), new carc2.Isotope(18, 38.984790009, 0), new carc2.Isotope(19, 39.977964014, 0), new carc2.Isotope(20, 40.969251316, 0), new carc2.Isotope(21, 41.965516761, 0), new carc2.Isotope(22, 42.96115098, 0), new carc2.Isotope(23, 43.959403048, 0), new carc2.Isotope(24, 44.955910243, 100), new carc2.Isotope(25, 45.95517025, 0), new carc2.Isotope(26, 46.952408027, 0), new carc2.Isotope(27, 47.952234991, 0), new carc2.Isotope(28, 48.950024065, 0), new carc2.Isotope(29, 49.952187008, 0), new carc2.Isotope(30, 50.9536027, 0), new carc2.Isotope(31, 51.95665, 0), new carc2.Isotope(32, 52.95817, 0), new carc2.Isotope(33, 53.963, 0), new carc2.Isotope(34, 54.9694, 0), new carc2.Isotope(35, 55.97266, 0), new carc2.Isotope(36, 56.97704, 0), new carc2.Isotope(37, 57.98307, 0), new carc2.Isotope(38, 58.988041, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(16, 38.00977, 0), new carc2.Isotope(17, 39.001323, 0), new carc2.Isotope(18, 39.990498907, 0), new carc2.Isotope(19, 40.983131, 0), new carc2.Isotope(20, 41.973031622, 0), new carc2.Isotope(21, 42.968523342, 0), new carc2.Isotope(22, 43.959690235, 0), new carc2.Isotope(23, 44.958124349, 0), new carc2.Isotope(24, 45.952629491, 10.8401), new carc2.Isotope(25, 46.951763792, 9.8916), new carc2.Isotope(26, 47.947947053, 100), new carc2.Isotope(27, 48.947870789, 7.4526), new carc2.Isotope(28, 49.944792069, 7.3171), new carc2.Isotope(29, 50.946616017, 0), new carc2.Isotope(30, 51.946898175, 0), new carc2.Isotope(31, 52.949731709, 0), new carc2.Isotope(32, 53.95087, 0), new carc2.Isotope(33, 54.95512, 0), new carc2.Isotope(34, 55.95799, 0), new carc2.Isotope(35, 56.9643, 0), new carc2.Isotope(36, 57.96611, 0), new carc2.Isotope(37, 58.97196, 0), new carc2.Isotope(38, 59.97564, 0), new carc2.Isotope(39, 60.982018, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(17, 40.01109, 0), new carc2.Isotope(18, 40.99974, 0), new carc2.Isotope(19, 41.99123, 0), new carc2.Isotope(20, 42.98065, 0), new carc2.Isotope(21, 43.9744, 0), new carc2.Isotope(22, 44.965782286, 0), new carc2.Isotope(23, 45.960199491, 0), new carc2.Isotope(24, 46.954906918, 0), new carc2.Isotope(25, 47.95225448, 0), new carc2.Isotope(26, 48.948516914, 0), new carc2.Isotope(27, 49.947162792, 0.251), new carc2.Isotope(28, 50.943963675, 100), new carc2.Isotope(29, 51.944779658, 0), new carc2.Isotope(30, 52.944342517, 0), new carc2.Isotope(31, 53.946444381, 0), new carc2.Isotope(32, 54.947238194, 0), new carc2.Isotope(33, 55.95036, 0), new carc2.Isotope(34, 56.95236, 0), new carc2.Isotope(35, 57.95665, 0), new carc2.Isotope(36, 58.9593, 0), new carc2.Isotope(37, 59.9645, 0), new carc2.Isotope(38, 60.96741, 0), new carc2.Isotope(39, 61.97314, 0), new carc2.Isotope(40, 62.97675, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(18, 42.00643, 0), new carc2.Isotope(19, 42.997707, 0), new carc2.Isotope(20, 43.98547, 0), new carc2.Isotope(21, 44.97916, 0), new carc2.Isotope(22, 45.968361649, 0), new carc2.Isotope(23, 46.962906512, 0), new carc2.Isotope(24, 47.954035861, 0), new carc2.Isotope(25, 48.951341135, 0), new carc2.Isotope(26, 49.946049607, 5.1915), new carc2.Isotope(27, 50.944771767, 0), new carc2.Isotope(28, 51.940511904, 100), new carc2.Isotope(29, 52.940653781, 11.3379), new carc2.Isotope(30, 53.938884921, 2.8166), new carc2.Isotope(31, 54.940844164, 0), new carc2.Isotope(32, 55.940645238, 0), new carc2.Isotope(33, 56.9437538, 0), new carc2.Isotope(34, 57.94425, 0), new carc2.Isotope(35, 58.94863, 0), new carc2.Isotope(36, 59.94973, 0), new carc2.Isotope(37, 60.95409, 0), new carc2.Isotope(38, 61.9558, 0), new carc2.Isotope(39, 62.96186, 0), new carc2.Isotope(40, 63.9642, 0), new carc2.Isotope(41, 64.97037, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(19, 44.00687, 0), new carc2.Isotope(20, 44.99451, 0), new carc2.Isotope(21, 45.98672, 0), new carc2.Isotope(22, 46.9761, 0), new carc2.Isotope(23, 47.96887, 0), new carc2.Isotope(24, 48.959623415, 0), new carc2.Isotope(25, 49.95424396, 0), new carc2.Isotope(26, 50.948215487, 0), new carc2.Isotope(27, 51.945570079, 0), new carc2.Isotope(28, 52.941294702, 0), new carc2.Isotope(29, 53.940363247, 0), new carc2.Isotope(30, 54.938049636, 100), new carc2.Isotope(31, 55.938909366, 0), new carc2.Isotope(32, 56.938287458, 0), new carc2.Isotope(33, 57.939986451, 0), new carc2.Isotope(34, 58.940447166, 0), new carc2.Isotope(35, 59.943193998, 0), new carc2.Isotope(36, 60.94446, 0), new carc2.Isotope(37, 61.94797, 0), new carc2.Isotope(38, 62.94981, 0), new carc2.Isotope(39, 63.95373, 0), new carc2.Isotope(40, 64.9561, 0), new carc2.Isotope(41, 65.96082, 0), new carc2.Isotope(42, 66.96382, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(19, 45.01456, 0), new carc2.Isotope(20, 46.00081, 0), new carc2.Isotope(21, 46.99289, 0), new carc2.Isotope(22, 47.98056, 0), new carc2.Isotope(23, 48.97361, 0), new carc2.Isotope(24, 49.962993316, 0), new carc2.Isotope(25, 50.956824936, 0), new carc2.Isotope(26, 51.948116526, 0), new carc2.Isotope(27, 52.945312282, 0), new carc2.Isotope(28, 53.939614836, 6.3236), new carc2.Isotope(29, 54.938298029, 0), new carc2.Isotope(30, 55.934942133, 100), new carc2.Isotope(31, 56.935398707, 2.3986), new carc2.Isotope(32, 57.933280458, 0.3053), new carc2.Isotope(33, 58.934880493, 0), new carc2.Isotope(34, 59.934076943, 0), new carc2.Isotope(35, 60.936749461, 0), new carc2.Isotope(36, 61.936770495, 0), new carc2.Isotope(37, 62.940118442, 0), new carc2.Isotope(38, 63.94087, 0), new carc2.Isotope(39, 64.94494, 0), new carc2.Isotope(40, 65.94598, 0), new carc2.Isotope(41, 66.95, 0), new carc2.Isotope(42, 67.95251, 0), new carc2.Isotope(43, 68.9577, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(21, 48.00176, 0), new carc2.Isotope(22, 48.98972, 0), new carc2.Isotope(23, 49.98154, 0), new carc2.Isotope(24, 50.97072, 0), new carc2.Isotope(25, 51.96359, 0), new carc2.Isotope(26, 52.954224985, 0), new carc2.Isotope(27, 53.948464147, 0), new carc2.Isotope(28, 54.942003149, 0), new carc2.Isotope(29, 55.939843937, 0), new carc2.Isotope(30, 56.936296235, 0), new carc2.Isotope(31, 57.935757571, 0), new carc2.Isotope(32, 58.933200194, 100), new carc2.Isotope(33, 59.933822196, 0), new carc2.Isotope(34, 60.932479381, 0), new carc2.Isotope(35, 61.934054212, 0), new carc2.Isotope(36, 62.933615218, 0), new carc2.Isotope(37, 63.935813523, 0), new carc2.Isotope(38, 64.936484581, 0), new carc2.Isotope(39, 65.939825412, 0), new carc2.Isotope(40, 66.94061, 0), new carc2.Isotope(41, 67.94436, 0), new carc2.Isotope(42, 68.9452, 0), new carc2.Isotope(43, 69.94981, 0), new carc2.Isotope(44, 70.95173, 0), new carc2.Isotope(45, 71.95641, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(22, 49.99593, 0), new carc2.Isotope(23, 50.98772, 0), new carc2.Isotope(24, 51.97568, 0), new carc2.Isotope(25, 52.96846, 0), new carc2.Isotope(26, 53.957910508, 0), new carc2.Isotope(27, 54.951336329, 0), new carc2.Isotope(28, 55.942136339, 0), new carc2.Isotope(29, 56.939800489, 0), new carc2.Isotope(30, 57.935347922, 100), new carc2.Isotope(31, 58.934351553, 0), new carc2.Isotope(32, 59.930790633, 38.2305), new carc2.Isotope(33, 60.931060442, 1.6552), new carc2.Isotope(34, 61.928348763, 5.2585), new carc2.Isotope(35, 62.929672948, 0), new carc2.Isotope(36, 63.927969574, 1.3329), new carc2.Isotope(37, 64.930088013, 0), new carc2.Isotope(38, 65.929115232, 0), new carc2.Isotope(39, 66.931569638, 0), new carc2.Isotope(40, 67.931844932, 0), new carc2.Isotope(41, 68.935181837, 0), new carc2.Isotope(42, 69.93614, 0), new carc2.Isotope(43, 70.94, 0), new carc2.Isotope(44, 71.9413, 0), new carc2.Isotope(45, 72.94608, 0), new carc2.Isotope(46, 73.94791, 0), new carc2.Isotope(47, 74.95297, 0), new carc2.Isotope(48, 75.95533, 0), new carc2.Isotope(49, 76.96083, 0), new carc2.Isotope(50, 77.9638, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(23, 51.99718, 0), new carc2.Isotope(24, 52.98555, 0), new carc2.Isotope(25, 53.97671, 0), new carc2.Isotope(26, 54.96605, 0), new carc2.Isotope(27, 55.95856, 0), new carc2.Isotope(28, 56.949215695, 0), new carc2.Isotope(29, 57.944540734, 0), new carc2.Isotope(30, 58.939504114, 0), new carc2.Isotope(31, 59.937368123, 0), new carc2.Isotope(32, 60.933462181, 0), new carc2.Isotope(33, 61.932587299, 0), new carc2.Isotope(34, 62.929601079, 100), new carc2.Isotope(35, 63.929767865, 0), new carc2.Isotope(36, 64.927793707, 44.571), new carc2.Isotope(37, 65.928873041, 0), new carc2.Isotope(38, 66.927750294, 0), new carc2.Isotope(39, 67.929637875, 0), new carc2.Isotope(40, 68.929425281, 0), new carc2.Isotope(41, 69.932409287, 0), new carc2.Isotope(42, 70.932619818, 0), new carc2.Isotope(43, 71.93552, 0), new carc2.Isotope(44, 72.93649, 0), new carc2.Isotope(45, 73.9402, 0), new carc2.Isotope(46, 74.9417, 0), new carc2.Isotope(47, 75.94599, 0), new carc2.Isotope(48, 76.94795, 0), new carc2.Isotope(49, 77.95281, 0), new carc2.Isotope(50, 78.95528, 0), new carc2.Isotope(51, 79.96189, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(24, 53.99295, 0), new carc2.Isotope(25, 54.98398, 0), new carc2.Isotope(26, 55.97238, 0), new carc2.Isotope(27, 56.96491, 0), new carc2.Isotope(28, 57.954596465, 0), new carc2.Isotope(29, 58.949267074, 0), new carc2.Isotope(30, 59.941832031, 0), new carc2.Isotope(31, 60.939513907, 0), new carc2.Isotope(32, 61.934334132, 0), new carc2.Isotope(33, 62.933215563, 0), new carc2.Isotope(34, 63.929146578, 100), new carc2.Isotope(35, 64.929245079, 0), new carc2.Isotope(36, 65.926036763, 57.4074), new carc2.Isotope(37, 66.927130859, 8.4362), new carc2.Isotope(38, 67.924847566, 38.6831), new carc2.Isotope(39, 68.926553538, 0), new carc2.Isotope(40, 69.92532487, 1.2346), new carc2.Isotope(41, 70.927727195, 0), new carc2.Isotope(42, 71.926861122, 0), new carc2.Isotope(43, 72.929779469, 0), new carc2.Isotope(44, 73.929458261, 0), new carc2.Isotope(45, 74.932937379, 0), new carc2.Isotope(46, 75.933394207, 0), new carc2.Isotope(47, 76.937085857, 0), new carc2.Isotope(48, 77.938569576, 0), new carc2.Isotope(49, 78.942095175, 0), new carc2.Isotope(50, 79.944414722, 0), new carc2.Isotope(51, 80.95048, 0), new carc2.Isotope(52, 81.95484, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(25, 55.99491, 0), new carc2.Isotope(26, 56.98293, 0), new carc2.Isotope(27, 57.97425, 0), new carc2.Isotope(28, 58.96337, 0), new carc2.Isotope(29, 59.95706, 0), new carc2.Isotope(30, 60.94917, 0), new carc2.Isotope(31, 61.944179608, 0), new carc2.Isotope(32, 62.939141527, 0), new carc2.Isotope(33, 63.936838307, 0), new carc2.Isotope(34, 64.932739322, 0), new carc2.Isotope(35, 65.931592355, 0), new carc2.Isotope(36, 66.928204915, 0), new carc2.Isotope(37, 67.927983497, 0), new carc2.Isotope(38, 68.925580912, 100), new carc2.Isotope(39, 69.926027741, 0), new carc2.Isotope(40, 70.92470501, 66.389), new carc2.Isotope(41, 71.92636935, 0), new carc2.Isotope(42, 72.925169832, 0), new carc2.Isotope(43, 73.926940999, 0), new carc2.Isotope(44, 74.926500645, 0), new carc2.Isotope(45, 75.928928262, 0), new carc2.Isotope(46, 76.929281189, 0), new carc2.Isotope(47, 77.93165595, 0), new carc2.Isotope(48, 78.932916371, 0), new carc2.Isotope(49, 79.936588154, 0), new carc2.Isotope(50, 80.937752955, 0), new carc2.Isotope(51, 81.94316, 0), new carc2.Isotope(52, 82.94687, 0), new carc2.Isotope(53, 83.95234, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(26, 57.99101, 0), new carc2.Isotope(27, 58.98175, 0), new carc2.Isotope(28, 59.97019, 0), new carc2.Isotope(29, 60.96379, 0), new carc2.Isotope(30, 61.95465, 0), new carc2.Isotope(31, 62.94964, 0), new carc2.Isotope(32, 63.941572638, 0), new carc2.Isotope(33, 64.939440762, 0), new carc2.Isotope(34, 65.933846798, 0), new carc2.Isotope(35, 66.932738415, 0), new carc2.Isotope(36, 67.928097266, 0), new carc2.Isotope(37, 68.927972002, 0), new carc2.Isotope(38, 69.924250365, 56.1644), new carc2.Isotope(39, 70.924953991, 0), new carc2.Isotope(40, 71.922076184, 75.0685), new carc2.Isotope(41, 72.923459361, 21.3698), new carc2.Isotope(42, 73.921178213, 100), new carc2.Isotope(43, 74.922859494, 21.3698), new carc2.Isotope(44, 75.921402716, 0), new carc2.Isotope(45, 76.923548462, 0), new carc2.Isotope(46, 77.922852886, 0), new carc2.Isotope(47, 78.92540156, 0), new carc2.Isotope(48, 79.925444764, 0), new carc2.Isotope(49, 80.928821065, 0), new carc2.Isotope(50, 81.929550326, 0), new carc2.Isotope(51, 82.93451, 0), new carc2.Isotope(52, 83.93731, 0), new carc2.Isotope(53, 84.94269, 0), new carc2.Isotope(54, 85.94627, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(27, 59.99313, 0), new carc2.Isotope(28, 60.98062, 0), new carc2.Isotope(29, 61.9732, 0), new carc2.Isotope(30, 62.96369, 0), new carc2.Isotope(31, 63.957572, 0), new carc2.Isotope(32, 64.949484, 0), new carc2.Isotope(33, 65.944099147, 0), new carc2.Isotope(34, 66.939190417, 0), new carc2.Isotope(35, 67.936792976, 0), new carc2.Isotope(36, 68.932280154, 0), new carc2.Isotope(37, 69.930927811, 0), new carc2.Isotope(38, 70.927114724, 0), new carc2.Isotope(39, 71.926752647, 0), new carc2.Isotope(40, 72.923825288, 0), new carc2.Isotope(41, 73.923929076, 0), new carc2.Isotope(42, 74.921596417, 100), new carc2.Isotope(43, 75.922393933, 0), new carc2.Isotope(44, 76.920647703, 0), new carc2.Isotope(45, 77.921828577, 0), new carc2.Isotope(46, 78.920948498, 0), new carc2.Isotope(47, 79.922578162, 0), new carc2.Isotope(48, 80.922132884, 0), new carc2.Isotope(49, 81.924504668, 0), new carc2.Isotope(50, 82.924980625, 0), new carc2.Isotope(51, 83.92906, 0), new carc2.Isotope(52, 84.93181, 0), new carc2.Isotope(53, 85.93623, 0), new carc2.Isotope(54, 86.93958, 0), new carc2.Isotope(55, 87.94456, 0), new carc2.Isotope(56, 88.94923, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(31, 64.96466, 0), new carc2.Isotope(32, 65.95521, 0), new carc2.Isotope(33, 66.95009, 0), new carc2.Isotope(34, 67.94187, 0), new carc2.Isotope(35, 68.939562155, 0), new carc2.Isotope(36, 69.933504, 0), new carc2.Isotope(37, 70.931868378, 0), new carc2.Isotope(38, 71.927112313, 0), new carc2.Isotope(39, 72.9267668, 0), new carc2.Isotope(40, 73.922476561, 1.8145), new carc2.Isotope(41, 74.922523571, 0), new carc2.Isotope(42, 75.919214107, 18.1451), new carc2.Isotope(43, 76.91991461, 15.3226), new carc2.Isotope(44, 77.917309522, 47.379), new carc2.Isotope(45, 78.918499802, 0), new carc2.Isotope(46, 79.916521828, 100), new carc2.Isotope(47, 80.917992931, 0), new carc2.Isotope(48, 81.9167, 18.9516), new carc2.Isotope(49, 82.919119072, 0), new carc2.Isotope(50, 83.918464523, 0), new carc2.Isotope(51, 84.922244678, 0), new carc2.Isotope(52, 85.924271165, 0), new carc2.Isotope(53, 86.928520749, 0), new carc2.Isotope(54, 87.931423982, 0), new carc2.Isotope(55, 88.93602, 0), new carc2.Isotope(56, 89.93942, 0), new carc2.Isotope(57, 90.94537, 0), new carc2.Isotope(58, 91.94933, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(32, 66.96479, 0), new carc2.Isotope(33, 67.958248, 0), new carc2.Isotope(34, 68.950178, 0), new carc2.Isotope(35, 69.944208, 0), new carc2.Isotope(36, 70.939246, 0), new carc2.Isotope(37, 71.936496876, 0), new carc2.Isotope(38, 72.931794889, 0), new carc2.Isotope(39, 73.929891152, 0), new carc2.Isotope(40, 74.92577641, 0), new carc2.Isotope(41, 75.924541974, 0), new carc2.Isotope(42, 76.921380123, 0), new carc2.Isotope(43, 77.92114613, 0), new carc2.Isotope(44, 78.918337647, 100), new carc2.Isotope(45, 79.918529952, 0), new carc2.Isotope(46, 80.91629106, 97.2776), new carc2.Isotope(47, 81.916804666, 0), new carc2.Isotope(48, 82.915180219, 0), new carc2.Isotope(49, 83.916503685, 0), new carc2.Isotope(50, 84.915608027, 0), new carc2.Isotope(51, 85.918797162, 0), new carc2.Isotope(52, 86.920710713, 0), new carc2.Isotope(53, 87.924065908, 0), new carc2.Isotope(54, 88.92638726, 0), new carc2.Isotope(55, 89.930634988, 0), new carc2.Isotope(56, 90.9339653, 0), new carc2.Isotope(57, 91.939255258, 0), new carc2.Isotope(58, 92.9431, 0), new carc2.Isotope(59, 93.94868, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(33, 68.96532, 0), new carc2.Isotope(34, 69.95601, 0), new carc2.Isotope(35, 70.95051, 0), new carc2.Isotope(36, 71.94190754, 0), new carc2.Isotope(37, 72.938931115, 0), new carc2.Isotope(38, 73.933258225, 0), new carc2.Isotope(39, 74.931033794, 0), new carc2.Isotope(40, 75.925948304, 0), new carc2.Isotope(41, 76.92466788, 0), new carc2.Isotope(42, 77.920386271, 85.910614), new carc2.Isotope(43, 78.920082992, 0), new carc2.Isotope(44, 79.91637804, 0.614), new carc2.Isotope(45, 80.916592419, 0), new carc2.Isotope(46, 81.913484601, 3.9474), new carc2.Isotope(47, 82.914135952, 20.3509), new carc2.Isotope(48, 83.911506627, 100), new carc2.Isotope(49, 84.912526954, 0), new carc2.Isotope(50, 85.910610313, 30.3509), new carc2.Isotope(51, 86.913354251, 0), new carc2.Isotope(52, 87.914446951, 0), new carc2.Isotope(53, 88.917632505, 0), new carc2.Isotope(54, 89.919523803, 0), new carc2.Isotope(55, 90.923442418, 0), new carc2.Isotope(56, 91.926152752, 0), new carc2.Isotope(57, 92.931265246, 0), new carc2.Isotope(58, 93.934362, 0), new carc2.Isotope(59, 94.93984, 0), new carc2.Isotope(60, 95.94307, 0), new carc2.Isotope(61, 96.94856, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(34, 70.96532, 0), new carc2.Isotope(35, 71.95908, 0), new carc2.Isotope(36, 72.950366, 0), new carc2.Isotope(37, 73.944470376, 0), new carc2.Isotope(38, 74.938569199, 0), new carc2.Isotope(39, 75.935071448, 0), new carc2.Isotope(40, 76.930406599, 0), new carc2.Isotope(41, 77.928141485, 0), new carc2.Isotope(42, 78.923996719, 0), new carc2.Isotope(43, 79.922519322, 0), new carc2.Isotope(44, 80.918994165, 0), new carc2.Isotope(45, 81.918207691, 0), new carc2.Isotope(46, 82.915111951, 0), new carc2.Isotope(47, 83.914384676, 0), new carc2.Isotope(48, 84.911789341, 100), new carc2.Isotope(49, 85.91116708, 0), new carc2.Isotope(50, 86.909183465, 38.571), new carc2.Isotope(51, 87.911318556, 0), new carc2.Isotope(52, 88.912279939, 0), new carc2.Isotope(53, 89.914808941, 0), new carc2.Isotope(54, 90.91653416, 0), new carc2.Isotope(55, 91.919725442, 0), new carc2.Isotope(56, 92.922032765, 0), new carc2.Isotope(57, 93.926407326, 0), new carc2.Isotope(58, 94.92931926, 0), new carc2.Isotope(59, 95.934283962, 0), new carc2.Isotope(60, 96.937342863, 0), new carc2.Isotope(61, 97.941703557, 0), new carc2.Isotope(62, 98.945420616, 0), new carc2.Isotope(63, 99.94987, 0), new carc2.Isotope(64, 100.953195994, 0), new carc2.Isotope(65, 101.95921, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(35, 72.96597, 0), new carc2.Isotope(36, 73.95631, 0), new carc2.Isotope(37, 74.94992, 0), new carc2.Isotope(38, 75.94161, 0), new carc2.Isotope(39, 76.937761511, 0), new carc2.Isotope(40, 77.932179362, 0), new carc2.Isotope(41, 78.929707076, 0), new carc2.Isotope(42, 79.924524588, 0), new carc2.Isotope(43, 80.923213095, 0), new carc2.Isotope(44, 81.918401258, 0), new carc2.Isotope(45, 82.917555029, 0), new carc2.Isotope(46, 83.913424778, 0.6781), new carc2.Isotope(47, 84.912932689, 0), new carc2.Isotope(48, 85.909262351, 11.9399), new carc2.Isotope(49, 86.908879316, 8.4766), new carc2.Isotope(50, 87.905614339, 100), new carc2.Isotope(51, 88.907452906, 0), new carc2.Isotope(52, 89.907737596, 0), new carc2.Isotope(53, 90.910209845, 0), new carc2.Isotope(54, 91.911029895, 0), new carc2.Isotope(55, 92.91402241, 0), new carc2.Isotope(56, 93.915359856, 0), new carc2.Isotope(57, 94.919358213, 0), new carc2.Isotope(58, 95.921680473, 0), new carc2.Isotope(59, 96.926148757, 0), new carc2.Isotope(60, 97.928471177, 0), new carc2.Isotope(61, 98.933315038, 0), new carc2.Isotope(62, 99.935351729, 0), new carc2.Isotope(63, 100.940517434, 0), new carc2.Isotope(64, 101.943018795, 0), new carc2.Isotope(65, 102.94895, 0), new carc2.Isotope(66, 103.95233, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(38, 76.94962, 0), new carc2.Isotope(39, 77.9435, 0), new carc2.Isotope(40, 78.937350712, 0), new carc2.Isotope(41, 79.931982402, 0), new carc2.Isotope(42, 80.929128719, 0), new carc2.Isotope(43, 81.926792071, 0), new carc2.Isotope(44, 82.922352572, 0), new carc2.Isotope(45, 83.920387768, 0), new carc2.Isotope(46, 84.916427076, 0), new carc2.Isotope(47, 85.914887724, 0), new carc2.Isotope(48, 86.910877833, 0), new carc2.Isotope(49, 87.909503361, 0), new carc2.Isotope(50, 88.905847902, 100), new carc2.Isotope(51, 89.907151443, 0), new carc2.Isotope(52, 90.907303415, 0), new carc2.Isotope(53, 91.908946832, 0), new carc2.Isotope(54, 92.909581582, 0), new carc2.Isotope(55, 93.911594008, 0), new carc2.Isotope(56, 94.912823709, 0), new carc2.Isotope(57, 95.915897787, 0), new carc2.Isotope(58, 96.918131017, 0), new carc2.Isotope(59, 97.922219525, 0), new carc2.Isotope(60, 98.924634736, 0), new carc2.Isotope(61, 99.927756402, 0), new carc2.Isotope(62, 100.930313395, 0), new carc2.Isotope(63, 101.933555501, 0), new carc2.Isotope(64, 102.93694, 0), new carc2.Isotope(65, 103.94145, 0), new carc2.Isotope(66, 104.94509, 0), new carc2.Isotope(67, 105.95022, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(39, 78.94916, 0), new carc2.Isotope(40, 79.94055, 0), new carc2.Isotope(41, 80.936815296, 0), new carc2.Isotope(42, 81.931086249, 0), new carc2.Isotope(43, 82.92865213, 0), new carc2.Isotope(44, 83.92325, 0), new carc2.Isotope(45, 84.92146522, 0), new carc2.Isotope(46, 85.916472851, 0), new carc2.Isotope(47, 86.914816578, 0), new carc2.Isotope(48, 87.910226179, 0), new carc2.Isotope(49, 88.908888916, 0), new carc2.Isotope(50, 89.904703679, 100), new carc2.Isotope(51, 90.905644968, 21.9048), new carc2.Isotope(52, 91.905040106, 33.3822), new carc2.Isotope(53, 92.906475627, 0), new carc2.Isotope(54, 93.906315765, 33.6832), new carc2.Isotope(55, 94.908042739, 0), new carc2.Isotope(56, 95.908275675, 5.4033), new carc2.Isotope(57, 96.910950716, 0), new carc2.Isotope(58, 97.912746366, 0), new carc2.Isotope(59, 98.916511084, 0), new carc2.Isotope(60, 99.917761704, 0), new carc2.Isotope(61, 100.921139958, 0), new carc2.Isotope(62, 101.922981089, 0), new carc2.Isotope(63, 102.926597062, 0), new carc2.Isotope(64, 103.92878, 0), new carc2.Isotope(65, 104.93305, 0), new carc2.Isotope(66, 105.93591, 0), new carc2.Isotope(67, 106.94086, 0), new carc2.Isotope(68, 107.94428, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(40, 80.94905, 0), new carc2.Isotope(41, 81.94313, 0), new carc2.Isotope(42, 82.936703713, 0), new carc2.Isotope(43, 83.93357, 0), new carc2.Isotope(44, 84.927906486, 0), new carc2.Isotope(45, 85.925037588, 0), new carc2.Isotope(46, 86.920361435, 0), new carc2.Isotope(47, 87.91833144, 0), new carc2.Isotope(48, 88.913495503, 0), new carc2.Isotope(49, 89.911264109, 0), new carc2.Isotope(50, 90.906990538, 0), new carc2.Isotope(51, 91.907193214, 0), new carc2.Isotope(52, 92.906377543, 100), new carc2.Isotope(53, 93.907283457, 0), new carc2.Isotope(54, 94.906835178, 0), new carc2.Isotope(55, 95.908100076, 0), new carc2.Isotope(56, 96.908097144, 0), new carc2.Isotope(57, 97.91033069, 0), new carc2.Isotope(58, 98.911617864, 0), new carc2.Isotope(59, 99.914181434, 0), new carc2.Isotope(60, 100.915251567, 0), new carc2.Isotope(61, 101.918037417, 0), new carc2.Isotope(62, 102.919141297, 0), new carc2.Isotope(63, 103.922459464, 0), new carc2.Isotope(64, 104.923934023, 0), new carc2.Isotope(65, 105.92819, 0), new carc2.Isotope(66, 106.93031, 0), new carc2.Isotope(67, 107.93501, 0), new carc2.Isotope(68, 108.93763, 0), new carc2.Isotope(69, 109.94268, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(41, 82.94874, 0), new carc2.Isotope(42, 83.94009, 0), new carc2.Isotope(43, 84.93659, 0), new carc2.Isotope(44, 85.930695167, 0), new carc2.Isotope(45, 86.92732683, 0), new carc2.Isotope(46, 87.921952728, 0), new carc2.Isotope(47, 88.919480562, 0), new carc2.Isotope(48, 89.913936161, 0), new carc2.Isotope(49, 90.911750754, 0), new carc2.Isotope(50, 91.90681048, 61.5002), new carc2.Isotope(51, 92.906812213, 0), new carc2.Isotope(52, 93.905087578, 38.334), new carc2.Isotope(53, 94.905841487, 65.976), new carc2.Isotope(54, 95.904678904, 69.1256), new carc2.Isotope(55, 96.906021033, 39.5773), new carc2.Isotope(56, 97.905407846, 100), new carc2.Isotope(57, 98.907711598, 0), new carc2.Isotope(58, 99.907477149, 39.9088), new carc2.Isotope(59, 100.910346543, 0), new carc2.Isotope(60, 101.910297162, 0), new carc2.Isotope(61, 102.913204596, 0), new carc2.Isotope(62, 103.913758387, 0), new carc2.Isotope(63, 104.916972087, 0), new carc2.Isotope(64, 105.918134284, 0), new carc2.Isotope(65, 106.921694724, 0), new carc2.Isotope(66, 107.923973837, 0), new carc2.Isotope(67, 108.92781, 0), new carc2.Isotope(68, 109.92973, 0), new carc2.Isotope(69, 110.93451, 0), new carc2.Isotope(70, 111.93684, 0), new carc2.Isotope(71, 112.94203, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(42, 84.94894, 0), new carc2.Isotope(43, 85.94288, 0), new carc2.Isotope(44, 86.93653, 0), new carc2.Isotope(45, 87.93283, 0), new carc2.Isotope(46, 88.92754288, 0), new carc2.Isotope(47, 89.92355583, 0), new carc2.Isotope(48, 90.9184282, 0), new carc2.Isotope(49, 91.915259655, 0), new carc2.Isotope(50, 92.910248473, 0), new carc2.Isotope(51, 93.909656309, 0), new carc2.Isotope(52, 94.907656454, 0), new carc2.Isotope(53, 95.907870803, 0), new carc2.Isotope(54, 96.906364843, 0), new carc2.Isotope(55, 97.907215692, 0), new carc2.Isotope(56, 98.906254554, 0), new carc2.Isotope(57, 99.907657594, 0), new carc2.Isotope(58, 100.90731438, 0), new carc2.Isotope(59, 101.909212938, 0), new carc2.Isotope(60, 102.909178805, 0), new carc2.Isotope(61, 103.911444898, 0), new carc2.Isotope(62, 104.911658043, 0), new carc2.Isotope(63, 105.914355408, 0), new carc2.Isotope(64, 106.915081691, 0), new carc2.Isotope(65, 107.918479973, 0), new carc2.Isotope(66, 108.919980998, 0), new carc2.Isotope(67, 109.92339, 0), new carc2.Isotope(68, 110.92505, 0), new carc2.Isotope(69, 111.92924, 0), new carc2.Isotope(70, 112.93133, 0), new carc2.Isotope(71, 113.93588, 0), new carc2.Isotope(72, 114.93828, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(43, 86.94918, 0), new carc2.Isotope(44, 87.94042, 0), new carc2.Isotope(45, 88.93611, 0), new carc2.Isotope(46, 89.92978, 0), new carc2.Isotope(47, 90.926377434, 0), new carc2.Isotope(48, 91.92012, 0), new carc2.Isotope(49, 92.917051523, 0), new carc2.Isotope(50, 93.911359569, 0), new carc2.Isotope(51, 94.910412729, 0), new carc2.Isotope(52, 95.907597681, 17.4684), new carc2.Isotope(53, 96.907554546, 0), new carc2.Isotope(54, 97.905287111, 5.9494), new carc2.Isotope(55, 98.905939307, 40.1899), new carc2.Isotope(56, 99.904219664, 39.8734), new carc2.Isotope(57, 100.905582219, 53.7975), new carc2.Isotope(58, 101.904349503, 100), new carc2.Isotope(59, 102.906323677, 0), new carc2.Isotope(60, 103.905430145, 59.1772), new carc2.Isotope(61, 104.907750341, 0), new carc2.Isotope(62, 105.907326913, 0), new carc2.Isotope(63, 106.909907207, 0), new carc2.Isotope(64, 107.910192211, 0), new carc2.Isotope(65, 108.913201565, 0), new carc2.Isotope(66, 109.913966185, 0), new carc2.Isotope(67, 110.91756, 0), new carc2.Isotope(68, 111.918821673, 0), new carc2.Isotope(69, 112.92254, 0), new carc2.Isotope(70, 113.923891981, 0), new carc2.Isotope(71, 114.92831, 0), new carc2.Isotope(72, 115.93016, 0), new carc2.Isotope(73, 116.93479, 0), new carc2.Isotope(74, 117.93703, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(44, 88.94938, 0), new carc2.Isotope(45, 89.94287, 0), new carc2.Isotope(46, 90.93655, 0), new carc2.Isotope(47, 91.93198, 0), new carc2.Isotope(48, 92.92574, 0), new carc2.Isotope(49, 93.921698, 0), new carc2.Isotope(50, 94.915898541, 0), new carc2.Isotope(51, 95.914518212, 0), new carc2.Isotope(52, 96.911336643, 0), new carc2.Isotope(53, 97.910716431, 0), new carc2.Isotope(54, 98.908132101, 0), new carc2.Isotope(55, 99.90811663, 0), new carc2.Isotope(56, 100.906163526, 0), new carc2.Isotope(57, 101.906842845, 0), new carc2.Isotope(58, 102.905504182, 100), new carc2.Isotope(59, 103.906655315, 0), new carc2.Isotope(60, 104.905692444, 0), new carc2.Isotope(61, 105.907284615, 0), new carc2.Isotope(62, 106.90675054, 0), new carc2.Isotope(63, 107.908730768, 0), new carc2.Isotope(64, 108.908735621, 0), new carc2.Isotope(65, 109.910949525, 0), new carc2.Isotope(66, 110.91166, 0), new carc2.Isotope(67, 111.913969253, 0), new carc2.Isotope(68, 112.91542, 0), new carc2.Isotope(69, 113.91734336, 0), new carc2.Isotope(70, 114.920124676, 0), new carc2.Isotope(71, 115.922746643, 0), new carc2.Isotope(72, 116.92535, 0), new carc2.Isotope(73, 117.92943, 0), new carc2.Isotope(74, 118.93136, 0), new carc2.Isotope(75, 119.93578, 0), new carc2.Isotope(76, 120.93808, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(45, 90.94948, 0), new carc2.Isotope(46, 91.94042, 0), new carc2.Isotope(47, 92.93591, 0), new carc2.Isotope(48, 93.92877, 0), new carc2.Isotope(49, 94.92469, 0), new carc2.Isotope(50, 95.91822194, 0), new carc2.Isotope(51, 96.916478921, 0), new carc2.Isotope(52, 97.912720751, 0), new carc2.Isotope(53, 98.911767757, 0), new carc2.Isotope(54, 99.908504596, 0), new carc2.Isotope(55, 100.908289144, 0), new carc2.Isotope(56, 101.905607716, 3.7322), new carc2.Isotope(57, 102.906087204, 0), new carc2.Isotope(58, 103.904034912, 40.7611), new carc2.Isotope(59, 104.905084046, 81.7051), new carc2.Isotope(60, 105.903483087, 100), new carc2.Isotope(61, 106.905128453, 0), new carc2.Isotope(62, 107.903894451, 96.8167), new carc2.Isotope(63, 108.905953535, 0), new carc2.Isotope(64, 109.905152385, 42.8833), new carc2.Isotope(65, 110.907643952, 0), new carc2.Isotope(66, 111.907313277, 0), new carc2.Isotope(67, 112.910151346, 0), new carc2.Isotope(68, 113.910365322, 0), new carc2.Isotope(69, 114.91368341, 0), new carc2.Isotope(70, 115.914158288, 0), new carc2.Isotope(71, 116.91784, 0), new carc2.Isotope(72, 117.918983915, 0), new carc2.Isotope(73, 118.92268, 0), new carc2.Isotope(74, 119.92403, 0), new carc2.Isotope(75, 120.92818, 0), new carc2.Isotope(76, 121.9298, 0), new carc2.Isotope(77, 122.93426, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(47, 93.94278, 0), new carc2.Isotope(48, 94.93548, 0), new carc2.Isotope(49, 95.93068, 0), new carc2.Isotope(50, 96.924, 0), new carc2.Isotope(51, 97.921759995, 0), new carc2.Isotope(52, 98.917597103, 0), new carc2.Isotope(53, 99.916069387, 0), new carc2.Isotope(54, 100.912802135, 0), new carc2.Isotope(55, 101.911999996, 0), new carc2.Isotope(56, 102.908972453, 0), new carc2.Isotope(57, 103.908628228, 0), new carc2.Isotope(58, 104.906528234, 0), new carc2.Isotope(59, 105.906666431, 0), new carc2.Isotope(60, 106.90509302, 100), new carc2.Isotope(61, 107.905953705, 0), new carc2.Isotope(62, 108.904755514, 92.905), new carc2.Isotope(63, 109.90611046, 0), new carc2.Isotope(64, 110.905294679, 0), new carc2.Isotope(65, 111.907004132, 0), new carc2.Isotope(66, 112.906565708, 0), new carc2.Isotope(67, 113.908807907, 0), new carc2.Isotope(68, 114.908762282, 0), new carc2.Isotope(69, 115.911359558, 0), new carc2.Isotope(70, 116.911684187, 0), new carc2.Isotope(71, 117.914582383, 0), new carc2.Isotope(72, 118.915666045, 0), new carc2.Isotope(73, 119.918788609, 0), new carc2.Isotope(74, 120.919851074, 0), new carc2.Isotope(75, 121.92332, 0), new carc2.Isotope(76, 122.9249, 0), new carc2.Isotope(77, 123.92853, 0), new carc2.Isotope(78, 124.93054, 0), new carc2.Isotope(79, 125.9345, 0), new carc2.Isotope(80, 126.93688, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(48, 95.93977, 0), new carc2.Isotope(49, 96.93494, 0), new carc2.Isotope(50, 97.927579, 0), new carc2.Isotope(51, 98.92501, 0), new carc2.Isotope(52, 99.920230232, 0), new carc2.Isotope(53, 100.918681442, 0), new carc2.Isotope(54, 101.914777255, 0), new carc2.Isotope(55, 102.913418952, 0), new carc2.Isotope(56, 103.909848091, 0), new carc2.Isotope(57, 104.909467818, 0), new carc2.Isotope(58, 105.906458007, 4.3508), new carc2.Isotope(59, 106.906614232, 0), new carc2.Isotope(60, 107.904183403, 3.0978), new carc2.Isotope(61, 108.904985569, 0), new carc2.Isotope(62, 109.903005578, 43.4737), new carc2.Isotope(63, 110.904181628, 44.5527), new carc2.Isotope(64, 111.902757226, 83.9888), new carc2.Isotope(65, 112.904400947, 42.5339), new carc2.Isotope(66, 113.903358121, 100), new carc2.Isotope(67, 114.905430553, 0), new carc2.Isotope(68, 115.904755434, 26.0703), new carc2.Isotope(69, 116.907218242, 0), new carc2.Isotope(70, 117.906914144, 0), new carc2.Isotope(71, 118.909922582, 0), new carc2.Isotope(72, 119.909851352, 0), new carc2.Isotope(73, 120.91298039, 0), new carc2.Isotope(74, 121.9135, 0), new carc2.Isotope(75, 122.917003675, 0), new carc2.Isotope(76, 123.917648302, 0), new carc2.Isotope(77, 124.92124717, 0), new carc2.Isotope(78, 125.922353996, 0), new carc2.Isotope(79, 126.926434822, 0), new carc2.Isotope(80, 127.927760617, 0), new carc2.Isotope(81, 128.93226, 0), new carc2.Isotope(82, 129.93398, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(49, 97.94224, 0), new carc2.Isotope(50, 98.93461, 0), new carc2.Isotope(51, 99.931149033, 0), new carc2.Isotope(52, 100.92656, 0), new carc2.Isotope(53, 101.924707541, 0), new carc2.Isotope(54, 102.919913896, 0), new carc2.Isotope(55, 103.918338416, 0), new carc2.Isotope(56, 104.914673434, 0), new carc2.Isotope(57, 105.913461134, 0), new carc2.Isotope(58, 106.910292195, 0), new carc2.Isotope(59, 107.909719683, 0), new carc2.Isotope(60, 108.907154078, 0), new carc2.Isotope(61, 109.907168783, 0), new carc2.Isotope(62, 110.905110677, 0), new carc2.Isotope(63, 111.905533338, 0), new carc2.Isotope(64, 112.904061223, 4.4932), new carc2.Isotope(65, 113.904916758, 0), new carc2.Isotope(66, 114.903878328, 100), new carc2.Isotope(67, 115.905259995, 0), new carc2.Isotope(68, 116.904515731, 0), new carc2.Isotope(69, 117.906354623, 0), new carc2.Isotope(70, 118.905846334, 0), new carc2.Isotope(71, 119.907961505, 0), new carc2.Isotope(72, 120.907848847, 0), new carc2.Isotope(73, 121.910277103, 0), new carc2.Isotope(74, 122.910438951, 0), new carc2.Isotope(75, 123.913175916, 0), new carc2.Isotope(76, 124.913601387, 0), new carc2.Isotope(77, 125.916464532, 0), new carc2.Isotope(78, 126.917344048, 0), new carc2.Isotope(79, 127.920170658, 0), new carc2.Isotope(80, 128.921657958, 0), new carc2.Isotope(81, 129.924854941, 0), new carc2.Isotope(82, 130.926767408, 0), new carc2.Isotope(83, 131.932919005, 0), new carc2.Isotope(84, 132.93834, 0), new carc2.Isotope(85, 133.94466, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(50, 99.938954, 0), new carc2.Isotope(51, 100.93606, 0), new carc2.Isotope(52, 101.93049, 0), new carc2.Isotope(53, 102.92813, 0), new carc2.Isotope(54, 103.923185469, 0), new carc2.Isotope(55, 104.921390409, 0), new carc2.Isotope(56, 105.916880472, 0), new carc2.Isotope(57, 106.915666702, 0), new carc2.Isotope(58, 107.911965339, 0), new carc2.Isotope(59, 108.911286879, 0), new carc2.Isotope(60, 109.907852688, 0), new carc2.Isotope(61, 110.907735404, 0), new carc2.Isotope(62, 111.90482081, 3.0864), new carc2.Isotope(63, 112.905173373, 0), new carc2.Isotope(64, 113.902781816, 2.1605), new carc2.Isotope(65, 114.903345973, 1.2346), new carc2.Isotope(66, 115.901744149, 45.3704), new carc2.Isotope(67, 116.902953765, 23.7654), new carc2.Isotope(68, 117.901606328, 75), new carc2.Isotope(69, 118.90330888, 26.5432), new carc2.Isotope(70, 119.902196571, 100), new carc2.Isotope(71, 120.904236867, 0), new carc2.Isotope(72, 121.903440138, 14.1975), new carc2.Isotope(73, 122.905721901, 0), new carc2.Isotope(74, 123.90527463, 17.284), new carc2.Isotope(75, 124.907784924, 0), new carc2.Isotope(76, 125.907653953, 0), new carc2.Isotope(77, 126.91035098, 0), new carc2.Isotope(78, 127.910534953, 0), new carc2.Isotope(79, 128.913439976, 0), new carc2.Isotope(80, 129.913852185, 0), new carc2.Isotope(81, 130.916919144, 0), new carc2.Isotope(82, 131.917744455, 0), new carc2.Isotope(83, 132.923814085, 0), new carc2.Isotope(84, 133.928463576, 0), new carc2.Isotope(85, 134.93473, 0), new carc2.Isotope(86, 135.93934, 0), new carc2.Isotope(87, 136.94579, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(52, 102.94012, 0), new carc2.Isotope(53, 103.936287, 0), new carc2.Isotope(54, 104.931528593, 0), new carc2.Isotope(55, 105.928183134, 0), new carc2.Isotope(56, 106.92415, 0), new carc2.Isotope(57, 107.92216, 0), new carc2.Isotope(58, 108.918136092, 0), new carc2.Isotope(59, 109.917533911, 0), new carc2.Isotope(60, 110.912534147, 0), new carc2.Isotope(61, 111.91239464, 0), new carc2.Isotope(62, 112.909377941, 0), new carc2.Isotope(63, 113.909095876, 0), new carc2.Isotope(64, 114.906598812, 0), new carc2.Isotope(65, 115.906797235, 0), new carc2.Isotope(66, 116.90483959, 0), new carc2.Isotope(67, 117.905531885, 0), new carc2.Isotope(68, 118.90394646, 0), new carc2.Isotope(69, 119.905074315, 0), new carc2.Isotope(70, 120.903818044, 100), new carc2.Isotope(71, 121.905175415, 0), new carc2.Isotope(72, 122.904215696, 74.5201), new carc2.Isotope(73, 123.905937525, 0), new carc2.Isotope(74, 124.905247804, 0), new carc2.Isotope(75, 125.907248153, 0), new carc2.Isotope(76, 126.906914564, 0), new carc2.Isotope(77, 127.90916733, 0), new carc2.Isotope(78, 128.909150092, 0), new carc2.Isotope(79, 129.911546459, 0), new carc2.Isotope(80, 130.911946487, 0), new carc2.Isotope(81, 131.914413247, 0), new carc2.Isotope(82, 132.915236466, 0), new carc2.Isotope(83, 133.920551554, 0), new carc2.Isotope(84, 134.925167962, 0), new carc2.Isotope(85, 135.93066, 0), new carc2.Isotope(86, 136.93531, 0), new carc2.Isotope(87, 137.94096, 0), new carc2.Isotope(88, 138.94571, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(54, 105.937702, 0), new carc2.Isotope(55, 106.935036, 0), new carc2.Isotope(56, 107.929486838, 0), new carc2.Isotope(57, 108.927456483, 0), new carc2.Isotope(58, 109.922407164, 0), new carc2.Isotope(59, 110.921120589, 0), new carc2.Isotope(60, 111.917061617, 0), new carc2.Isotope(61, 112.915452551, 0), new carc2.Isotope(62, 113.912498025, 0), new carc2.Isotope(63, 114.911578627, 0), new carc2.Isotope(64, 115.908420253, 0), new carc2.Isotope(65, 116.90863418, 0), new carc2.Isotope(66, 117.905825187, 0), new carc2.Isotope(67, 118.90640811, 0), new carc2.Isotope(68, 119.904019891, 0.284), new carc2.Isotope(69, 120.904929815, 0), new carc2.Isotope(70, 121.903047064, 7.6923), new carc2.Isotope(71, 122.904272951, 2.6864), new carc2.Isotope(72, 123.902819466, 14.2485), new carc2.Isotope(73, 124.904424718, 21.1243), new carc2.Isotope(74, 125.903305543, 56.0651), new carc2.Isotope(75, 126.90521729, 0), new carc2.Isotope(76, 127.904461383, 93.7574), new carc2.Isotope(77, 128.906595593, 0), new carc2.Isotope(78, 129.906222753, 100), new carc2.Isotope(79, 130.90852188, 0), new carc2.Isotope(80, 131.908523782, 0), new carc2.Isotope(81, 132.910939068, 0), new carc2.Isotope(82, 133.911540546, 0), new carc2.Isotope(83, 134.916450782, 0), new carc2.Isotope(84, 135.920103155, 0), new carc2.Isotope(85, 136.925324769, 0), new carc2.Isotope(86, 137.92922, 0), new carc2.Isotope(87, 138.93473, 0), new carc2.Isotope(88, 139.9387, 0), new carc2.Isotope(89, 140.94439, 0), new carc2.Isotope(90, 141.9485, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(55, 107.943291, 0), new carc2.Isotope(56, 108.938191658, 0), new carc2.Isotope(57, 109.934634181, 0), new carc2.Isotope(58, 110.930276, 0), new carc2.Isotope(59, 111.92797, 0), new carc2.Isotope(60, 112.923644245, 0), new carc2.Isotope(61, 113.92185, 0), new carc2.Isotope(62, 114.918272, 0), new carc2.Isotope(63, 115.916735014, 0), new carc2.Isotope(64, 116.913647692, 0), new carc2.Isotope(65, 117.91337523, 0), new carc2.Isotope(66, 118.910180837, 0), new carc2.Isotope(67, 119.910047843, 0), new carc2.Isotope(68, 120.907366063, 0), new carc2.Isotope(69, 121.907592451, 0), new carc2.Isotope(70, 122.905597944, 0), new carc2.Isotope(71, 123.906211423, 0), new carc2.Isotope(72, 124.90462415, 0), new carc2.Isotope(73, 125.905619387, 0), new carc2.Isotope(74, 126.90446842, 100), new carc2.Isotope(75, 127.905805254, 0), new carc2.Isotope(76, 128.904987487, 0), new carc2.Isotope(77, 129.906674018, 0), new carc2.Isotope(78, 130.906124168, 0), new carc2.Isotope(79, 131.907994525, 0), new carc2.Isotope(80, 132.907806465, 0), new carc2.Isotope(81, 133.909876552, 0), new carc2.Isotope(82, 134.91005031, 0), new carc2.Isotope(83, 135.914655105, 0), new carc2.Isotope(84, 136.917872653, 0), new carc2.Isotope(85, 137.922383666, 0), new carc2.Isotope(86, 138.926093402, 0), new carc2.Isotope(87, 139.93121, 0), new carc2.Isotope(88, 140.93483, 0), new carc2.Isotope(89, 141.94018, 0), new carc2.Isotope(90, 142.94407, 0), new carc2.Isotope(91, 143.94961, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(56, 109.944476, 0), new carc2.Isotope(57, 110.941632, 0), new carc2.Isotope(58, 111.93566535, 0), new carc2.Isotope(59, 112.933382836, 0), new carc2.Isotope(60, 113.928145, 0), new carc2.Isotope(61, 114.926979032, 0), new carc2.Isotope(62, 115.921394197, 0), new carc2.Isotope(63, 116.920564355, 0), new carc2.Isotope(64, 117.91657092, 0), new carc2.Isotope(65, 118.915554295, 0), new carc2.Isotope(66, 119.91215199, 0), new carc2.Isotope(67, 120.911386497, 0), new carc2.Isotope(68, 121.908548396, 0), new carc2.Isotope(69, 122.908470748, 0), new carc2.Isotope(70, 123.905895774, 0.3717), new carc2.Isotope(71, 124.906398236, 0), new carc2.Isotope(72, 125.904268868, 0.3346), new carc2.Isotope(73, 126.905179581, 0), new carc2.Isotope(74, 127.903530436, 7.1004), new carc2.Isotope(75, 128.904779458, 98.1413), new carc2.Isotope(76, 129.903507903, 15.2416), new carc2.Isotope(77, 130.90508192, 78.8104), new carc2.Isotope(78, 131.904154457, 100), new carc2.Isotope(79, 132.90590566, 0), new carc2.Isotope(80, 133.905394504, 38.6617), new carc2.Isotope(81, 134.907207499, 0), new carc2.Isotope(82, 135.907219526, 33.0855), new carc2.Isotope(83, 136.911562939, 0), new carc2.Isotope(84, 137.913988549, 0), new carc2.Isotope(85, 138.918786859, 0), new carc2.Isotope(86, 139.921635665, 0), new carc2.Isotope(87, 140.926646282, 0), new carc2.Isotope(88, 141.929702981, 0), new carc2.Isotope(89, 142.93489, 0), new carc2.Isotope(90, 143.93823, 0), new carc2.Isotope(91, 144.94367, 0), new carc2.Isotope(92, 145.9473, 0), new carc2.Isotope(93, 146.95301, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(57, 111.950331, 0), new carc2.Isotope(58, 112.944535512, 0), new carc2.Isotope(59, 113.940841319, 0), new carc2.Isotope(60, 114.935939, 0), new carc2.Isotope(61, 115.932914152, 0), new carc2.Isotope(62, 116.928639484, 0), new carc2.Isotope(63, 117.926554883, 0), new carc2.Isotope(64, 118.922370879, 0), new carc2.Isotope(65, 119.920678219, 0), new carc2.Isotope(66, 120.917183637, 0), new carc2.Isotope(67, 121.916121946, 0), new carc2.Isotope(68, 122.912990168, 0), new carc2.Isotope(69, 123.912245731, 0), new carc2.Isotope(70, 124.909724871, 0), new carc2.Isotope(71, 125.909447953, 0), new carc2.Isotope(72, 126.9074176, 0), new carc2.Isotope(73, 127.907747919, 0), new carc2.Isotope(74, 128.906063369, 0), new carc2.Isotope(75, 129.906706163, 0), new carc2.Isotope(76, 130.905460232, 0), new carc2.Isotope(77, 131.906429799, 0), new carc2.Isotope(78, 132.90544687, 100), new carc2.Isotope(79, 133.906713419, 0), new carc2.Isotope(80, 134.905971903, 0), new carc2.Isotope(81, 135.907305741, 0), new carc2.Isotope(82, 136.907083505, 0), new carc2.Isotope(83, 137.911010537, 0), new carc2.Isotope(84, 138.913357921, 0), new carc2.Isotope(85, 139.917277075, 0), new carc2.Isotope(86, 140.920043984, 0), new carc2.Isotope(87, 141.924292317, 0), new carc2.Isotope(88, 142.927330292, 0), new carc2.Isotope(89, 143.932027373, 0), new carc2.Isotope(90, 144.935388226, 0), new carc2.Isotope(91, 145.940162028, 0), new carc2.Isotope(92, 146.943864435, 0), new carc2.Isotope(93, 147.948899539, 0), new carc2.Isotope(94, 148.95272, 0), new carc2.Isotope(95, 149.95797, 0), new carc2.Isotope(96, 150.962, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(58, 113.950941, 0), new carc2.Isotope(59, 114.94771, 0), new carc2.Isotope(60, 115.94168, 0), new carc2.Isotope(61, 116.937700229, 0), new carc2.Isotope(62, 117.93344, 0), new carc2.Isotope(63, 118.931051927, 0), new carc2.Isotope(64, 119.926045941, 0), new carc2.Isotope(65, 120.924485908, 0), new carc2.Isotope(66, 121.92026, 0), new carc2.Isotope(67, 122.91885, 0), new carc2.Isotope(68, 123.915088437, 0), new carc2.Isotope(69, 124.914620234, 0), new carc2.Isotope(70, 125.911244146, 0), new carc2.Isotope(71, 126.911121328, 0), new carc2.Isotope(72, 127.90830887, 0), new carc2.Isotope(73, 128.908673749, 0), new carc2.Isotope(74, 129.906310478, 0.1478), new carc2.Isotope(75, 130.906930798, 0), new carc2.Isotope(76, 131.905056152, 0.1409), new carc2.Isotope(77, 132.906002368, 0), new carc2.Isotope(78, 133.904503347, 3.371), new carc2.Isotope(79, 134.905682749, 9.1939), new carc2.Isotope(80, 135.904570109, 10.954), new carc2.Isotope(81, 136.905821414, 15.6625), new carc2.Isotope(82, 137.905241273, 100), new carc2.Isotope(83, 138.908835384, 0), new carc2.Isotope(84, 139.910599485, 0), new carc2.Isotope(85, 140.914406439, 0), new carc2.Isotope(86, 141.916448175, 0), new carc2.Isotope(87, 142.920617184, 0), new carc2.Isotope(88, 143.922940468, 0), new carc2.Isotope(89, 144.926923807, 0), new carc2.Isotope(90, 145.930106645, 0), new carc2.Isotope(91, 146.933992519, 0), new carc2.Isotope(92, 147.937682377, 0), new carc2.Isotope(93, 148.94246, 0), new carc2.Isotope(94, 149.94562, 0), new carc2.Isotope(95, 150.9507, 0), new carc2.Isotope(96, 151.95416, 0), new carc2.Isotope(97, 152.95961, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(60, 116.95001, 0), new carc2.Isotope(61, 117.94657, 0), new carc2.Isotope(62, 118.94099, 0), new carc2.Isotope(63, 119.93807, 0), new carc2.Isotope(64, 120.93301, 0), new carc2.Isotope(65, 121.93071, 0), new carc2.Isotope(66, 122.92624, 0), new carc2.Isotope(67, 123.92453, 0), new carc2.Isotope(68, 124.92067, 0), new carc2.Isotope(69, 125.91937, 0), new carc2.Isotope(70, 126.91616, 0), new carc2.Isotope(71, 127.91544794, 0), new carc2.Isotope(72, 128.912667334, 0), new carc2.Isotope(73, 129.91232, 0), new carc2.Isotope(74, 130.910108489, 0), new carc2.Isotope(75, 131.910110399, 0), new carc2.Isotope(76, 132.908396372, 0), new carc2.Isotope(77, 133.908489607, 0), new carc2.Isotope(78, 134.906971003, 0), new carc2.Isotope(79, 135.907651181, 0), new carc2.Isotope(80, 136.906465656, 0), new carc2.Isotope(81, 137.907106826, 0.0901), new carc2.Isotope(82, 138.90634816, 100), new carc2.Isotope(83, 139.909472552, 0), new carc2.Isotope(84, 140.910957016, 0), new carc2.Isotope(85, 141.914074489, 0), new carc2.Isotope(86, 142.916058646, 0), new carc2.Isotope(87, 143.919591666, 0), new carc2.Isotope(88, 144.92163837, 0), new carc2.Isotope(89, 145.925700146, 0), new carc2.Isotope(90, 146.927819639, 0), new carc2.Isotope(91, 147.932191197, 0), new carc2.Isotope(92, 148.93437, 0), new carc2.Isotope(93, 149.93857, 0), new carc2.Isotope(94, 150.94156, 0), new carc2.Isotope(95, 151.94611, 0), new carc2.Isotope(96, 152.94945, 0), new carc2.Isotope(97, 153.9544, 0), new carc2.Isotope(98, 154.95813, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(61, 118.95276, 0), new carc2.Isotope(62, 119.94664, 0), new carc2.Isotope(63, 120.94367, 0), new carc2.Isotope(64, 121.93801, 0), new carc2.Isotope(65, 122.93551, 0), new carc2.Isotope(66, 123.93052, 0), new carc2.Isotope(67, 124.92854, 0), new carc2.Isotope(68, 125.9241, 0), new carc2.Isotope(69, 126.92275, 0), new carc2.Isotope(70, 127.91887, 0), new carc2.Isotope(71, 128.918679183, 0), new carc2.Isotope(72, 129.914339361, 0), new carc2.Isotope(73, 130.914424137, 0), new carc2.Isotope(74, 131.91149, 0), new carc2.Isotope(75, 132.91155, 0), new carc2.Isotope(76, 133.909026379, 0), new carc2.Isotope(77, 134.909145555, 0), new carc2.Isotope(78, 135.907143574, 0.2147), new carc2.Isotope(79, 136.907777634, 0), new carc2.Isotope(80, 137.905985574, 0.2825), new carc2.Isotope(81, 138.906646605, 0), new carc2.Isotope(82, 139.905434035, 100), new carc2.Isotope(83, 140.908271103, 0), new carc2.Isotope(84, 141.909239733, 12.5226), new carc2.Isotope(85, 142.912381158, 0), new carc2.Isotope(86, 143.913642686, 0), new carc2.Isotope(87, 144.917227871, 0), new carc2.Isotope(88, 145.918689722, 0), new carc2.Isotope(89, 146.922510962, 0), new carc2.Isotope(90, 147.924394738, 0), new carc2.Isotope(91, 148.928289207, 0), new carc2.Isotope(92, 149.930226399, 0), new carc2.Isotope(93, 150.93404, 0), new carc2.Isotope(94, 151.93638, 0), new carc2.Isotope(95, 152.94058, 0), new carc2.Isotope(96, 153.94332, 0), new carc2.Isotope(97, 154.94804, 0), new carc2.Isotope(98, 155.95126, 0), new carc2.Isotope(99, 156.95634, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(62, 120.955364, 0), new carc2.Isotope(63, 121.95165, 0), new carc2.Isotope(64, 122.94596, 0), new carc2.Isotope(65, 123.94296, 0), new carc2.Isotope(66, 124.93783, 0), new carc2.Isotope(67, 125.93531, 0), new carc2.Isotope(68, 126.93083, 0), new carc2.Isotope(69, 127.9288, 0), new carc2.Isotope(70, 128.92486, 0), new carc2.Isotope(71, 129.92338, 0), new carc2.Isotope(72, 130.920060245, 0), new carc2.Isotope(73, 131.91912, 0), new carc2.Isotope(74, 132.9162, 0), new carc2.Isotope(75, 133.915672, 0), new carc2.Isotope(76, 134.91313914, 0), new carc2.Isotope(77, 135.912646935, 0), new carc2.Isotope(78, 136.910678351, 0), new carc2.Isotope(79, 137.910748891, 0), new carc2.Isotope(80, 138.908932181, 0), new carc2.Isotope(81, 139.909071204, 0), new carc2.Isotope(82, 140.907647726, 100), new carc2.Isotope(83, 141.910039865, 0), new carc2.Isotope(84, 142.910812233, 0), new carc2.Isotope(85, 143.913300595, 0), new carc2.Isotope(86, 144.914506897, 0), new carc2.Isotope(87, 145.917588016, 0), new carc2.Isotope(88, 146.918979001, 0), new carc2.Isotope(89, 147.922183237, 0), new carc2.Isotope(90, 148.923791056, 0), new carc2.Isotope(91, 149.926995031, 0), new carc2.Isotope(92, 150.928227869, 0), new carc2.Isotope(93, 151.9316, 0), new carc2.Isotope(94, 152.93365, 0), new carc2.Isotope(95, 153.93739, 0), new carc2.Isotope(96, 154.93999, 0), new carc2.Isotope(97, 155.94412, 0), new carc2.Isotope(98, 156.94717, 0), new carc2.Isotope(99, 157.95178, 0), new carc2.Isotope(100, 158.95523, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(66, 125.94307, 0), new carc2.Isotope(67, 126.9405, 0), new carc2.Isotope(68, 127.93539, 0), new carc2.Isotope(69, 128.932385, 0), new carc2.Isotope(70, 129.92878, 0), new carc2.Isotope(71, 130.927102697, 0), new carc2.Isotope(72, 131.92312, 0), new carc2.Isotope(73, 132.92221, 0), new carc2.Isotope(74, 133.918645, 0), new carc2.Isotope(75, 134.91824, 0), new carc2.Isotope(76, 135.915020542, 0), new carc2.Isotope(77, 136.91463973, 0), new carc2.Isotope(78, 137.91291745, 0), new carc2.Isotope(79, 138.91192415, 0), new carc2.Isotope(80, 139.909309824, 0), new carc2.Isotope(81, 140.9096048, 0), new carc2.Isotope(82, 141.907718643, 100), new carc2.Isotope(83, 142.909809626, 44.8949), new carc2.Isotope(84, 143.910082629, 87.7258), new carc2.Isotope(85, 144.912568847, 30.5934), new carc2.Isotope(86, 145.913112139, 63.3616), new carc2.Isotope(87, 146.916095794, 0), new carc2.Isotope(88, 147.916888516, 21.2311), new carc2.Isotope(89, 148.92014419, 0), new carc2.Isotope(90, 149.920886563, 20.7888), new carc2.Isotope(91, 150.923824739, 0), new carc2.Isotope(92, 151.924682428, 0), new carc2.Isotope(93, 152.927694534, 0), new carc2.Isotope(94, 153.929483295, 0), new carc2.Isotope(95, 154.932629551, 0), new carc2.Isotope(96, 155.9352, 0), new carc2.Isotope(97, 156.93927, 0), new carc2.Isotope(98, 157.94187, 0), new carc2.Isotope(99, 158.94639, 0), new carc2.Isotope(100, 159.94939, 0), new carc2.Isotope(101, 160.95433, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(67, 127.94826, 0), new carc2.Isotope(68, 128.94316, 0), new carc2.Isotope(69, 129.94045, 0), new carc2.Isotope(70, 130.9358, 0), new carc2.Isotope(71, 131.93375, 0), new carc2.Isotope(72, 132.92972, 0), new carc2.Isotope(73, 133.92849, 0), new carc2.Isotope(74, 134.924617, 0), new carc2.Isotope(75, 135.923447865, 0), new carc2.Isotope(76, 136.920713, 0), new carc2.Isotope(77, 137.920432261, 0), new carc2.Isotope(78, 138.916759814, 0), new carc2.Isotope(79, 139.915801649, 0), new carc2.Isotope(80, 140.913606636, 0), new carc2.Isotope(81, 141.912950738, 0), new carc2.Isotope(82, 142.910927571, 0), new carc2.Isotope(83, 143.912585768, 0), new carc2.Isotope(84, 144.912743879, 0), new carc2.Isotope(85, 145.914692165, 0), new carc2.Isotope(86, 146.915133898, 0), new carc2.Isotope(87, 147.917467786, 0), new carc2.Isotope(88, 148.918329195, 0), new carc2.Isotope(89, 149.920979477, 0), new carc2.Isotope(90, 150.921202693, 0), new carc2.Isotope(91, 151.923490557, 0), new carc2.Isotope(92, 152.924113189, 0), new carc2.Isotope(93, 153.926547019, 0), new carc2.Isotope(94, 154.928097047, 0), new carc2.Isotope(95, 155.931060357, 0), new carc2.Isotope(96, 156.9332, 0), new carc2.Isotope(97, 157.93669, 0), new carc2.Isotope(98, 158.93913, 0), new carc2.Isotope(99, 159.94299, 0), new carc2.Isotope(100, 160.94586, 0), new carc2.Isotope(101, 161.95029, 0), new carc2.Isotope(102, 162.95352, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(68, 129.94863, 0), new carc2.Isotope(69, 130.94589, 0), new carc2.Isotope(70, 131.94082, 0), new carc2.Isotope(71, 132.93873, 0), new carc2.Isotope(72, 133.93402, 0), new carc2.Isotope(73, 134.93235, 0), new carc2.Isotope(74, 135.9283, 0), new carc2.Isotope(75, 136.927046709, 0), new carc2.Isotope(76, 137.92354, 0), new carc2.Isotope(77, 138.922302, 0), new carc2.Isotope(78, 139.918991, 0), new carc2.Isotope(79, 140.918468512, 0), new carc2.Isotope(80, 141.915193274, 0), new carc2.Isotope(81, 142.914623555, 0), new carc2.Isotope(82, 143.91199473, 11.654), new carc2.Isotope(83, 144.913405611, 0), new carc2.Isotope(84, 145.91303676, 0), new carc2.Isotope(85, 146.914893275, 56.767), new carc2.Isotope(86, 147.914817914, 42.481), new carc2.Isotope(87, 148.917179521, 52.256), new carc2.Isotope(88, 149.917271454, 27.82), new carc2.Isotope(89, 150.919928351, 0), new carc2.Isotope(90, 151.919728244, 100), new carc2.Isotope(91, 152.922093907, 0), new carc2.Isotope(92, 153.922205303, 84.962), new carc2.Isotope(93, 154.92463594, 0), new carc2.Isotope(94, 155.925526236, 0), new carc2.Isotope(95, 156.928354506, 0), new carc2.Isotope(96, 157.929987938, 0), new carc2.Isotope(97, 158.9332, 0), new carc2.Isotope(98, 159.93514, 0), new carc2.Isotope(99, 160.93883, 0), new carc2.Isotope(100, 161.94122, 0), new carc2.Isotope(101, 162.94536, 0), new carc2.Isotope(102, 163.94828, 0), new carc2.Isotope(103, 164.95298, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(69, 131.95416, 0), new carc2.Isotope(70, 132.9489, 0), new carc2.Isotope(71, 133.94632, 0), new carc2.Isotope(72, 134.94172, 0), new carc2.Isotope(73, 135.9395, 0), new carc2.Isotope(74, 136.93521, 0), new carc2.Isotope(75, 137.93345, 0), new carc2.Isotope(76, 138.92882915, 0), new carc2.Isotope(77, 139.928083921, 0), new carc2.Isotope(78, 140.924885867, 0), new carc2.Isotope(79, 141.923400033, 0), new carc2.Isotope(80, 142.920286634, 0), new carc2.Isotope(81, 143.918774116, 0), new carc2.Isotope(82, 144.916261285, 0), new carc2.Isotope(83, 145.917199714, 0), new carc2.Isotope(84, 146.916741206, 0), new carc2.Isotope(85, 147.918153775, 0), new carc2.Isotope(86, 148.917925922, 0), new carc2.Isotope(87, 149.919698294, 0), new carc2.Isotope(88, 150.919846022, 91.5709), new carc2.Isotope(89, 151.921740399, 0), new carc2.Isotope(90, 152.921226219, 100), new carc2.Isotope(91, 153.922975386, 0), new carc2.Isotope(92, 154.922889429, 0), new carc2.Isotope(93, 155.924750855, 0), new carc2.Isotope(94, 156.925419435, 0), new carc2.Isotope(95, 157.927841923, 0), new carc2.Isotope(96, 158.9290845, 0), new carc2.Isotope(97, 159.931460406, 0), new carc2.Isotope(98, 160.93368, 0), new carc2.Isotope(99, 161.93704, 0), new carc2.Isotope(100, 162.93921, 0), new carc2.Isotope(101, 163.94299, 0), new carc2.Isotope(102, 164.94572, 0), new carc2.Isotope(103, 165.94997, 0), new carc2.Isotope(104, 166.95305, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(72, 135.94707, 0), new carc2.Isotope(73, 136.94465, 0), new carc2.Isotope(74, 137.93997, 0), new carc2.Isotope(75, 138.93808, 0), new carc2.Isotope(76, 139.933236934, 0), new carc2.Isotope(77, 140.93221, 0), new carc2.Isotope(78, 141.927908919, 0), new carc2.Isotope(79, 142.926738636, 0), new carc2.Isotope(80, 143.923390357, 0), new carc2.Isotope(81, 144.921687498, 0), new carc2.Isotope(82, 145.918305344, 0), new carc2.Isotope(83, 146.919089446, 0), new carc2.Isotope(84, 147.918109771, 0), new carc2.Isotope(85, 148.919336427, 0), new carc2.Isotope(86, 149.918655455, 0), new carc2.Isotope(87, 150.920344273, 0), new carc2.Isotope(88, 151.919787882, 0.8052), new carc2.Isotope(89, 152.921746283, 0), new carc2.Isotope(90, 153.920862271, 8.7762), new carc2.Isotope(91, 154.922618801, 59.5813), new carc2.Isotope(92, 155.922119552, 82.4074), new carc2.Isotope(93, 156.923956686, 63.0032), new carc2.Isotope(94, 157.924100533, 100), new carc2.Isotope(95, 158.926385075, 0), new carc2.Isotope(96, 159.927050616, 88.0032), new carc2.Isotope(97, 160.929665688, 0), new carc2.Isotope(98, 161.930981211, 0), new carc2.Isotope(99, 162.93399, 0), new carc2.Isotope(100, 163.93586, 0), new carc2.Isotope(101, 164.93938, 0), new carc2.Isotope(102, 165.9416, 0), new carc2.Isotope(103, 166.94557, 0), new carc2.Isotope(104, 167.94836, 0), new carc2.Isotope(105, 168.95287, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(73, 137.95287, 0), new carc2.Isotope(74, 138.94803, 0), new carc2.Isotope(75, 139.945367985, 0), new carc2.Isotope(76, 140.94116, 0), new carc2.Isotope(77, 141.939073781, 0), new carc2.Isotope(78, 142.93475, 0), new carc2.Isotope(79, 143.93253, 0), new carc2.Isotope(80, 144.92888, 0), new carc2.Isotope(81, 145.927180629, 0), new carc2.Isotope(82, 146.924037176, 0), new carc2.Isotope(83, 147.924298636, 0), new carc2.Isotope(84, 148.92324163, 0), new carc2.Isotope(85, 149.923654158, 0), new carc2.Isotope(86, 150.923098169, 0), new carc2.Isotope(87, 151.924071324, 0), new carc2.Isotope(88, 152.923430858, 0), new carc2.Isotope(89, 153.924686236, 0), new carc2.Isotope(90, 154.923500411, 0), new carc2.Isotope(91, 155.924743749, 0), new carc2.Isotope(92, 156.924021155, 0), new carc2.Isotope(93, 157.92541026, 0), new carc2.Isotope(94, 158.925343135, 100), new carc2.Isotope(95, 159.927164021, 0), new carc2.Isotope(96, 160.927566289, 0), new carc2.Isotope(97, 161.929484803, 0), new carc2.Isotope(98, 162.930643942, 0), new carc2.Isotope(99, 163.933347253, 0), new carc2.Isotope(100, 164.93488, 0), new carc2.Isotope(101, 165.93805, 0), new carc2.Isotope(102, 166.94005, 0), new carc2.Isotope(103, 167.94364, 0), new carc2.Isotope(104, 168.94622, 0), new carc2.Isotope(105, 169.95025, 0), new carc2.Isotope(106, 170.9533, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(74, 139.95379, 0), new carc2.Isotope(75, 140.95119, 0), new carc2.Isotope(76, 141.946695946, 0), new carc2.Isotope(77, 142.94383, 0), new carc2.Isotope(78, 143.93907, 0), new carc2.Isotope(79, 144.936717, 0), new carc2.Isotope(80, 145.932720118, 0), new carc2.Isotope(81, 146.930878496, 0), new carc2.Isotope(82, 147.927177882, 0), new carc2.Isotope(83, 148.927333981, 0), new carc2.Isotope(84, 149.925579728, 0), new carc2.Isotope(85, 150.92617963, 0), new carc2.Isotope(86, 151.924713874, 0), new carc2.Isotope(87, 152.925760865, 0), new carc2.Isotope(88, 153.924422046, 0), new carc2.Isotope(89, 154.92574895, 0), new carc2.Isotope(90, 155.924278273, 0.2128), new carc2.Isotope(91, 156.925461256, 0), new carc2.Isotope(92, 157.924404637, 0.3546), new carc2.Isotope(93, 158.92573566, 0), new carc2.Isotope(94, 159.925193718, 8.2979), new carc2.Isotope(95, 160.926929595, 67.0212), new carc2.Isotope(96, 161.926794731, 90.4255), new carc2.Isotope(97, 162.928727532, 88.2978), new carc2.Isotope(98, 163.929171165, 100), new carc2.Isotope(99, 164.931699828, 0), new carc2.Isotope(100, 165.932803241, 0), new carc2.Isotope(101, 166.935649025, 0), new carc2.Isotope(102, 167.93723, 0), new carc2.Isotope(103, 168.940303648, 0), new carc2.Isotope(104, 169.94267, 0), new carc2.Isotope(105, 170.94648, 0), new carc2.Isotope(106, 171.94911, 0), new carc2.Isotope(107, 172.95344, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(75, 141.95986, 0), new carc2.Isotope(76, 142.95469, 0), new carc2.Isotope(77, 143.95164, 0), new carc2.Isotope(78, 144.94688, 0), new carc2.Isotope(79, 145.9441, 0), new carc2.Isotope(80, 146.93984, 0), new carc2.Isotope(81, 147.937269, 0), new carc2.Isotope(82, 148.933789944, 0), new carc2.Isotope(83, 149.932760914, 0), new carc2.Isotope(84, 150.931680791, 0), new carc2.Isotope(85, 151.931740598, 0), new carc2.Isotope(86, 152.930194506, 0), new carc2.Isotope(87, 153.930596268, 0), new carc2.Isotope(88, 154.929079084, 0), new carc2.Isotope(89, 155.929001869, 0), new carc2.Isotope(90, 156.928188059, 0), new carc2.Isotope(91, 157.92894573, 0), new carc2.Isotope(92, 158.927708537, 0), new carc2.Isotope(93, 159.928725679, 0), new carc2.Isotope(94, 160.927851662, 0), new carc2.Isotope(95, 161.92909242, 0), new carc2.Isotope(96, 162.928730286, 0), new carc2.Isotope(97, 163.930230577, 0), new carc2.Isotope(98, 164.930319169, 100), new carc2.Isotope(99, 165.932281267, 0), new carc2.Isotope(100, 166.933126195, 0), new carc2.Isotope(101, 167.935496424, 0), new carc2.Isotope(102, 168.936868306, 0), new carc2.Isotope(103, 169.939614951, 0), new carc2.Isotope(104, 170.941461227, 0), new carc2.Isotope(105, 171.94482, 0), new carc2.Isotope(106, 172.94729, 0), new carc2.Isotope(107, 173.95115, 0), new carc2.Isotope(108, 174.95405, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(76, 143.96059, 0), new carc2.Isotope(77, 144.95746, 0), new carc2.Isotope(78, 145.95212, 0), new carc2.Isotope(79, 146.94931, 0), new carc2.Isotope(80, 147.94444, 0), new carc2.Isotope(81, 148.942780527, 0), new carc2.Isotope(82, 149.937171034, 0), new carc2.Isotope(83, 150.93746, 0), new carc2.Isotope(84, 151.935078452, 0), new carc2.Isotope(85, 152.935093125, 0), new carc2.Isotope(86, 153.932777294, 0), new carc2.Isotope(87, 154.933204273, 0), new carc2.Isotope(88, 155.931015001, 0), new carc2.Isotope(89, 156.931945517, 0), new carc2.Isotope(90, 157.929912, 0), new carc2.Isotope(91, 158.930680718, 0), new carc2.Isotope(92, 159.929078924, 0), new carc2.Isotope(93, 160.930001348, 0), new carc2.Isotope(94, 161.928774923, 0.4167), new carc2.Isotope(95, 162.930029273, 0), new carc2.Isotope(96, 163.929196996, 4.7917), new carc2.Isotope(97, 164.9307228, 0), new carc2.Isotope(98, 165.93028997, 100), new carc2.Isotope(99, 166.932045448, 68.3036), new carc2.Isotope(100, 167.932367781, 79.7619), new carc2.Isotope(101, 168.934588082, 0), new carc2.Isotope(102, 169.935460334, 44.3452), new carc2.Isotope(103, 170.938025885, 0), new carc2.Isotope(104, 171.939352149, 0), new carc2.Isotope(105, 172.9424, 0), new carc2.Isotope(106, 173.94434, 0), new carc2.Isotope(107, 174.94793, 0), new carc2.Isotope(108, 175.95029, 0), new carc2.Isotope(109, 176.95437, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(77, 145.966495, 0), new carc2.Isotope(78, 146.961081, 0), new carc2.Isotope(79, 147.95755, 0), new carc2.Isotope(80, 148.95265, 0), new carc2.Isotope(81, 149.94967, 0), new carc2.Isotope(82, 150.944842, 0), new carc2.Isotope(83, 151.9443, 0), new carc2.Isotope(84, 152.942027631, 0), new carc2.Isotope(85, 153.940832325, 0), new carc2.Isotope(86, 154.939191562, 0), new carc2.Isotope(87, 155.939006895, 0), new carc2.Isotope(88, 156.936756069, 0), new carc2.Isotope(89, 157.936996, 0), new carc2.Isotope(90, 158.934808966, 0), new carc2.Isotope(91, 159.935090772, 0), new carc2.Isotope(92, 160.933398042, 0), new carc2.Isotope(93, 161.933970147, 0), new carc2.Isotope(94, 162.932647648, 0), new carc2.Isotope(95, 163.933450972, 0), new carc2.Isotope(96, 164.932432463, 0), new carc2.Isotope(97, 165.933553133, 0), new carc2.Isotope(98, 166.932848844, 0), new carc2.Isotope(99, 167.934170375, 0), new carc2.Isotope(100, 168.934211117, 100), new carc2.Isotope(101, 169.935797877, 0), new carc2.Isotope(102, 170.936425817, 0), new carc2.Isotope(103, 171.938396118, 0), new carc2.Isotope(104, 172.939600336, 0), new carc2.Isotope(105, 173.942164618, 0), new carc2.Isotope(106, 174.943832897, 0), new carc2.Isotope(107, 175.946991412, 0), new carc2.Isotope(108, 176.94904, 0), new carc2.Isotope(109, 177.95264, 0), new carc2.Isotope(110, 178.95534, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(78, 147.96676, 0), new carc2.Isotope(79, 148.96348, 0), new carc2.Isotope(80, 149.95799, 0), new carc2.Isotope(81, 150.954657965, 0), new carc2.Isotope(82, 151.950167, 0), new carc2.Isotope(83, 152.94921, 0), new carc2.Isotope(84, 153.945651145, 0), new carc2.Isotope(85, 154.945792, 0), new carc2.Isotope(86, 155.942847109, 0), new carc2.Isotope(87, 156.94265865, 0), new carc2.Isotope(88, 157.939857897, 0), new carc2.Isotope(89, 158.940153735, 0), new carc2.Isotope(90, 159.93756, 0), new carc2.Isotope(91, 160.937357719, 0), new carc2.Isotope(92, 161.93575, 0), new carc2.Isotope(93, 162.936265492, 0), new carc2.Isotope(94, 163.93452, 0), new carc2.Isotope(95, 164.935397592, 0), new carc2.Isotope(96, 165.933879623, 0), new carc2.Isotope(97, 166.934946862, 0), new carc2.Isotope(98, 167.933894465, 0.4088), new carc2.Isotope(99, 168.93518712, 0), new carc2.Isotope(100, 169.934758652, 9.5912), new carc2.Isotope(101, 170.936322297, 44.9686), new carc2.Isotope(102, 171.936377696, 68.8679), new carc2.Isotope(103, 172.938206756, 50.6918), new carc2.Isotope(104, 173.938858101, 100), new carc2.Isotope(105, 174.941272494, 0), new carc2.Isotope(106, 175.942568409, 39.9371), new carc2.Isotope(107, 176.945257126, 0), new carc2.Isotope(108, 177.946643396, 0), new carc2.Isotope(109, 178.95017, 0), new carc2.Isotope(110, 179.95233, 0), new carc2.Isotope(111, 180.95615, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(79, 149.972668, 0), new carc2.Isotope(80, 150.967147, 0), new carc2.Isotope(81, 151.96361, 0), new carc2.Isotope(82, 152.95869, 0), new carc2.Isotope(83, 153.9571, 0), new carc2.Isotope(84, 154.953641324, 0), new carc2.Isotope(85, 155.952907, 0), new carc2.Isotope(86, 156.950101536, 0), new carc2.Isotope(87, 157.948577981, 0), new carc2.Isotope(88, 158.946615113, 0), new carc2.Isotope(89, 159.945383, 0), new carc2.Isotope(90, 160.943047504, 0), new carc2.Isotope(91, 161.943222, 0), new carc2.Isotope(92, 162.941203796, 0), new carc2.Isotope(93, 163.941215, 0), new carc2.Isotope(94, 164.939605886, 0), new carc2.Isotope(95, 165.939762646, 0), new carc2.Isotope(96, 166.938307056, 0), new carc2.Isotope(97, 167.938698576, 0), new carc2.Isotope(98, 168.937648757, 0), new carc2.Isotope(99, 169.93847219, 0), new carc2.Isotope(100, 170.937909903, 0), new carc2.Isotope(101, 171.939082239, 0), new carc2.Isotope(102, 172.938926901, 0), new carc2.Isotope(103, 173.940333522, 0), new carc2.Isotope(104, 174.940767904, 100), new carc2.Isotope(105, 175.942682399, 2.6694), new carc2.Isotope(106, 176.943754987, 0), new carc2.Isotope(107, 177.945951366, 0), new carc2.Isotope(108, 178.947324216, 0), new carc2.Isotope(109, 179.949879968, 0), new carc2.Isotope(110, 180.95197, 0), new carc2.Isotope(111, 181.95521, 0), new carc2.Isotope(112, 182.95757, 0), new carc2.Isotope(113, 183.96117, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(82, 153.96425, 0), new carc2.Isotope(83, 154.96276, 0), new carc2.Isotope(84, 155.959247, 0), new carc2.Isotope(85, 156.958127, 0), new carc2.Isotope(86, 157.95405528, 0), new carc2.Isotope(87, 158.954003, 0), new carc2.Isotope(88, 159.950713588, 0), new carc2.Isotope(89, 160.950330852, 0), new carc2.Isotope(90, 161.947202977, 0), new carc2.Isotope(91, 162.947057, 0), new carc2.Isotope(92, 163.944422, 0), new carc2.Isotope(93, 164.94454, 0), new carc2.Isotope(94, 165.94225, 0), new carc2.Isotope(95, 166.9426, 0), new carc2.Isotope(96, 167.94063, 0), new carc2.Isotope(97, 168.941158567, 0), new carc2.Isotope(98, 169.93965, 0), new carc2.Isotope(99, 170.94049, 0), new carc2.Isotope(100, 171.93945798, 0), new carc2.Isotope(101, 172.94065, 0), new carc2.Isotope(102, 173.940040159, 0.4545), new carc2.Isotope(103, 174.941502991, 0), new carc2.Isotope(104, 175.941401828, 14.7727), new carc2.Isotope(105, 176.943220013, 52.8409), new carc2.Isotope(106, 177.943697732, 76.9886), new carc2.Isotope(107, 178.945815073, 39.0341), new carc2.Isotope(108, 179.94654876, 100), new carc2.Isotope(109, 180.949099124, 0), new carc2.Isotope(110, 181.950552893, 0), new carc2.Isotope(111, 182.953531012, 0), new carc2.Isotope(112, 183.95544788, 0), new carc2.Isotope(113, 184.95878, 0), new carc2.Isotope(114, 185.96092, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(83, 155.971689, 0), new carc2.Isotope(84, 156.968145, 0), new carc2.Isotope(85, 157.966368, 0), new carc2.Isotope(86, 158.96232309, 0), new carc2.Isotope(87, 159.961358, 0), new carc2.Isotope(88, 160.958372992, 0), new carc2.Isotope(89, 161.956556553, 0), new carc2.Isotope(90, 162.95431665, 0), new carc2.Isotope(91, 163.95357, 0), new carc2.Isotope(92, 164.950817, 0), new carc2.Isotope(93, 165.95047, 0), new carc2.Isotope(94, 166.948639, 0), new carc2.Isotope(95, 167.947787, 0), new carc2.Isotope(96, 168.94592, 0), new carc2.Isotope(97, 169.94609, 0), new carc2.Isotope(98, 170.94446, 0), new carc2.Isotope(99, 171.944739818, 0), new carc2.Isotope(100, 172.94459, 0), new carc2.Isotope(101, 173.944167937, 0), new carc2.Isotope(102, 174.94365, 0), new carc2.Isotope(103, 175.944740551, 0), new carc2.Isotope(104, 176.944471766, 0), new carc2.Isotope(105, 177.945750349, 0), new carc2.Isotope(106, 178.945934113, 0), new carc2.Isotope(107, 179.947465655, 0.012), new carc2.Isotope(108, 180.947996346, 100), new carc2.Isotope(109, 181.950152414, 0), new carc2.Isotope(110, 182.951373188, 0), new carc2.Isotope(111, 183.954009331, 0), new carc2.Isotope(112, 184.955559086, 0), new carc2.Isotope(113, 185.9585501, 0), new carc2.Isotope(114, 186.96041, 0), new carc2.Isotope(115, 187.96371, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(84, 157.973939, 0), new carc2.Isotope(85, 158.97228, 0), new carc2.Isotope(86, 159.968369, 0), new carc2.Isotope(87, 160.967089, 0), new carc2.Isotope(88, 161.962750303, 0), new carc2.Isotope(89, 162.962532, 0), new carc2.Isotope(90, 163.95898381, 0), new carc2.Isotope(91, 164.958335962, 0), new carc2.Isotope(92, 165.955019896, 0), new carc2.Isotope(93, 166.954672, 0), new carc2.Isotope(94, 167.951863, 0), new carc2.Isotope(95, 168.951759, 0), new carc2.Isotope(96, 169.948473988, 0), new carc2.Isotope(97, 170.94946, 0), new carc2.Isotope(98, 171.948228837, 0), new carc2.Isotope(99, 172.948884, 0), new carc2.Isotope(100, 173.94616, 0), new carc2.Isotope(101, 174.94677, 0), new carc2.Isotope(102, 175.94559, 0), new carc2.Isotope(103, 176.94662, 0), new carc2.Isotope(104, 177.945848364, 0), new carc2.Isotope(105, 178.947071733, 0), new carc2.Isotope(106, 179.946705734, 0.4239), new carc2.Isotope(107, 180.948198054, 0), new carc2.Isotope(108, 181.948205519, 85.7515), new carc2.Isotope(109, 182.950224458, 46.6254), new carc2.Isotope(110, 183.950932553, 100), new carc2.Isotope(111, 184.953420586, 0), new carc2.Isotope(112, 185.954362204, 93.2507), new carc2.Isotope(113, 186.957158365, 0), new carc2.Isotope(114, 187.958486954, 0), new carc2.Isotope(115, 188.96191222, 0), new carc2.Isotope(116, 189.963179541, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(85, 159.981485, 0), new carc2.Isotope(86, 160.977661, 0), new carc2.Isotope(87, 161.975707, 0), new carc2.Isotope(88, 162.971375872, 0), new carc2.Isotope(89, 163.970319, 0), new carc2.Isotope(90, 164.967050268, 0), new carc2.Isotope(91, 165.965211372, 0), new carc2.Isotope(92, 166.962564, 0), new carc2.Isotope(93, 167.961609, 0), new carc2.Isotope(94, 168.95883, 0), new carc2.Isotope(95, 169.958163, 0), new carc2.Isotope(96, 170.955547, 0), new carc2.Isotope(97, 171.955285, 0), new carc2.Isotope(98, 172.953062, 0), new carc2.Isotope(99, 173.952114, 0), new carc2.Isotope(100, 174.951393, 0), new carc2.Isotope(101, 175.95157, 0), new carc2.Isotope(102, 176.95027, 0), new carc2.Isotope(103, 177.950851081, 0), new carc2.Isotope(104, 178.949981038, 0), new carc2.Isotope(105, 179.95078768, 0), new carc2.Isotope(106, 180.950064596, 0), new carc2.Isotope(107, 181.951211444, 0), new carc2.Isotope(108, 182.950821349, 0), new carc2.Isotope(109, 183.952524289, 0), new carc2.Isotope(110, 184.952955747, 59.7444), new carc2.Isotope(111, 185.954986529, 0), new carc2.Isotope(112, 186.955750787, 100), new carc2.Isotope(113, 187.958112287, 0), new carc2.Isotope(114, 188.959228359, 0), new carc2.Isotope(115, 189.961816139, 0), new carc2.Isotope(116, 190.963123592, 0), new carc2.Isotope(117, 191.96596, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(86, 161.983819, 0), new carc2.Isotope(87, 162.982048, 0), new carc2.Isotope(88, 163.977927, 0), new carc2.Isotope(89, 164.976475, 0), new carc2.Isotope(90, 165.971934911, 0), new carc2.Isotope(91, 166.971554, 0), new carc2.Isotope(92, 167.967832911, 0), new carc2.Isotope(93, 168.967076205, 0), new carc2.Isotope(94, 169.963569716, 0), new carc2.Isotope(95, 170.96304, 0), new carc2.Isotope(96, 171.960078, 0), new carc2.Isotope(97, 172.959791, 0), new carc2.Isotope(98, 173.956307704, 0), new carc2.Isotope(99, 174.95708, 0), new carc2.Isotope(100, 175.953757941, 0), new carc2.Isotope(101, 176.955045, 0), new carc2.Isotope(102, 177.953348225, 0), new carc2.Isotope(103, 178.953951, 0), new carc2.Isotope(104, 179.952308241, 0), new carc2.Isotope(105, 180.953274494, 0), new carc2.Isotope(106, 181.952186222, 0), new carc2.Isotope(107, 182.95311, 0), new carc2.Isotope(108, 183.952490808, 0.488), new carc2.Isotope(109, 184.954043023, 0), new carc2.Isotope(110, 185.953838355, 3.8537), new carc2.Isotope(111, 186.955747928, 3.9024), new carc2.Isotope(112, 187.955835993, 32.439), new carc2.Isotope(113, 188.958144866, 39.2683), new carc2.Isotope(114, 189.95844521, 64.3902), new carc2.Isotope(115, 190.960927951, 0), new carc2.Isotope(116, 191.961479047, 100), new carc2.Isotope(117, 192.964148083, 0), new carc2.Isotope(118, 193.965179314, 0), new carc2.Isotope(119, 194.968123889, 0), new carc2.Isotope(120, 195.96962255, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(88, 164.98758, 0), new carc2.Isotope(89, 165.985506, 0), new carc2.Isotope(90, 166.980951577, 0), new carc2.Isotope(91, 167.979966, 0), new carc2.Isotope(92, 168.976390868, 0), new carc2.Isotope(93, 169.974441697, 0), new carc2.Isotope(94, 170.971779, 0), new carc2.Isotope(95, 171.970643, 0), new carc2.Isotope(96, 172.967707, 0), new carc2.Isotope(97, 173.966804, 0), new carc2.Isotope(98, 174.964279, 0), new carc2.Isotope(99, 175.963511, 0), new carc2.Isotope(100, 176.96117, 0), new carc2.Isotope(101, 177.960084944, 0), new carc2.Isotope(102, 178.95915, 0), new carc2.Isotope(103, 179.958555615, 0), new carc2.Isotope(104, 180.957642156, 0), new carc2.Isotope(105, 181.958127689, 0), new carc2.Isotope(106, 182.956814, 0), new carc2.Isotope(107, 183.957388318, 0), new carc2.Isotope(108, 184.95659, 0), new carc2.Isotope(109, 185.957951104, 0), new carc2.Isotope(110, 186.95736083, 0), new carc2.Isotope(111, 187.958851962, 0), new carc2.Isotope(112, 188.958716473, 0), new carc2.Isotope(113, 189.960592299, 0), new carc2.Isotope(114, 190.960591191, 59.4896), new carc2.Isotope(115, 191.962602198, 0), new carc2.Isotope(116, 192.9629237, 100), new carc2.Isotope(117, 193.96507561, 0), new carc2.Isotope(118, 194.9659768, 0), new carc2.Isotope(119, 195.968379906, 0), new carc2.Isotope(120, 196.969636496, 0), new carc2.Isotope(121, 197.97228, 0), new carc2.Isotope(122, 198.973787159, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(90, 167.988035, 0), new carc2.Isotope(91, 168.986421, 0), new carc2.Isotope(92, 169.981734918, 0), new carc2.Isotope(93, 170.981251, 0), new carc2.Isotope(94, 171.977376138, 0), new carc2.Isotope(95, 172.976499642, 0), new carc2.Isotope(96, 173.972811276, 0), new carc2.Isotope(97, 174.972276, 0), new carc2.Isotope(98, 175.969, 0), new carc2.Isotope(99, 176.968453, 0), new carc2.Isotope(100, 177.964894223, 0), new carc2.Isotope(101, 178.965475, 0), new carc2.Isotope(102, 179.962023729, 0), new carc2.Isotope(103, 180.963177, 0), new carc2.Isotope(104, 181.961267637, 0), new carc2.Isotope(105, 182.961729, 0), new carc2.Isotope(106, 183.959851685, 0), new carc2.Isotope(107, 184.960753782, 0), new carc2.Isotope(108, 185.959432346, 0), new carc2.Isotope(109, 186.960697, 0), new carc2.Isotope(110, 187.959395697, 0), new carc2.Isotope(111, 188.9608319, 0), new carc2.Isotope(112, 189.959930073, 0.0296), new carc2.Isotope(113, 190.961684653, 0), new carc2.Isotope(114, 191.961035158, 2.3373), new carc2.Isotope(115, 192.962984504, 0), new carc2.Isotope(116, 193.962663581, 97.3373), new carc2.Isotope(117, 194.964774449, 100), new carc2.Isotope(118, 195.964934884, 74.8521), new carc2.Isotope(119, 196.967323401, 0), new carc2.Isotope(120, 197.967876009, 21.3018), new carc2.Isotope(121, 198.970576213, 0), new carc2.Isotope(122, 199.971423885, 0), new carc2.Isotope(123, 200.974496467, 0), new carc2.Isotope(124, 201.97574, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(92, 170.991183, 0), new carc2.Isotope(93, 171.990109, 0), new carc2.Isotope(94, 172.986398138, 0), new carc2.Isotope(95, 173.984325861, 0), new carc2.Isotope(96, 174.981552, 0), new carc2.Isotope(97, 175.980269, 0), new carc2.Isotope(98, 176.977215, 0), new carc2.Isotope(99, 177.975975, 0), new carc2.Isotope(100, 178.973412, 0), new carc2.Isotope(101, 179.972396, 0), new carc2.Isotope(102, 180.969948, 0), new carc2.Isotope(103, 181.968621416, 0), new carc2.Isotope(104, 182.96762, 0), new carc2.Isotope(105, 183.966776046, 0), new carc2.Isotope(106, 184.965806956, 0), new carc2.Isotope(107, 185.965997671, 0), new carc2.Isotope(108, 186.964562, 0), new carc2.Isotope(109, 187.965321662, 0), new carc2.Isotope(110, 188.9642243, 0), new carc2.Isotope(111, 189.964698757, 0), new carc2.Isotope(112, 190.963649239, 0), new carc2.Isotope(113, 191.964810107, 0), new carc2.Isotope(114, 192.964131745, 0), new carc2.Isotope(115, 193.96533889, 0), new carc2.Isotope(116, 194.965017928, 0), new carc2.Isotope(117, 195.966551315, 0), new carc2.Isotope(118, 196.966551609, 100), new carc2.Isotope(119, 197.968225244, 0), new carc2.Isotope(120, 198.968748016, 0), new carc2.Isotope(121, 199.970717886, 0), new carc2.Isotope(122, 200.971640839, 0), new carc2.Isotope(123, 201.973788431, 0), new carc2.Isotope(124, 202.975137256, 0), new carc2.Isotope(125, 203.977705, 0), new carc2.Isotope(126, 204.97961, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(95, 174.991411, 0), new carc2.Isotope(96, 175.987413248, 0), new carc2.Isotope(97, 176.986336874, 0), new carc2.Isotope(98, 177.982476325, 0), new carc2.Isotope(99, 178.981783, 0), new carc2.Isotope(100, 179.978322, 0), new carc2.Isotope(101, 180.977806, 0), new carc2.Isotope(102, 181.97393546, 0), new carc2.Isotope(103, 182.974561, 0), new carc2.Isotope(104, 183.970705219, 0), new carc2.Isotope(105, 184.971983, 0), new carc2.Isotope(106, 185.969460021, 0), new carc2.Isotope(107, 186.969785, 0), new carc2.Isotope(108, 187.967511693, 0), new carc2.Isotope(109, 188.968733187, 0), new carc2.Isotope(110, 189.966958568, 0), new carc2.Isotope(111, 190.96706311, 0), new carc2.Isotope(112, 191.965921572, 0), new carc2.Isotope(113, 192.966644169, 0), new carc2.Isotope(114, 193.965381832, 0), new carc2.Isotope(115, 194.966638981, 0), new carc2.Isotope(116, 195.965814846, 0.5059), new carc2.Isotope(117, 196.967195333, 0), new carc2.Isotope(118, 197.96675183, 34.0641), new carc2.Isotope(119, 198.968262489, 57.3356), new carc2.Isotope(120, 199.968308726, 77.9089), new carc2.Isotope(121, 200.970285275, 44.5194), new carc2.Isotope(122, 201.970625604, 100), new carc2.Isotope(123, 202.972857096, 0), new carc2.Isotope(124, 203.97347564, 22.9342), new carc2.Isotope(125, 204.976056104, 0), new carc2.Isotope(126, 205.977498672, 0), new carc2.Isotope(127, 206.982577025, 0), new carc2.Isotope(128, 207.98594, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(96, 176.996881, 0), new carc2.Isotope(97, 177.994637, 0), new carc2.Isotope(98, 178.991466, 0), new carc2.Isotope(99, 179.990194, 0), new carc2.Isotope(100, 180.986904, 0), new carc2.Isotope(101, 181.98561, 0), new carc2.Isotope(102, 182.982697, 0), new carc2.Isotope(103, 183.98176, 0), new carc2.Isotope(104, 184.9791, 0), new carc2.Isotope(105, 185.977549881, 0), new carc2.Isotope(106, 186.97617, 0), new carc2.Isotope(107, 187.97592, 0), new carc2.Isotope(108, 188.974290451, 0), new carc2.Isotope(109, 189.974473379, 0), new carc2.Isotope(110, 190.972261952, 0), new carc2.Isotope(111, 191.972770785, 0), new carc2.Isotope(112, 192.970548, 0), new carc2.Isotope(113, 193.971053, 0), new carc2.Isotope(114, 194.96965, 0), new carc2.Isotope(115, 195.970515, 0), new carc2.Isotope(116, 196.9695362, 0), new carc2.Isotope(117, 197.970466294, 0), new carc2.Isotope(118, 198.969813837, 0), new carc2.Isotope(119, 199.970945394, 0), new carc2.Isotope(120, 200.97080377, 0), new carc2.Isotope(121, 201.972090569, 0), new carc2.Isotope(122, 202.972329088, 41.8922), new carc2.Isotope(123, 203.973848646, 0), new carc2.Isotope(124, 204.97441227, 100), new carc2.Isotope(125, 205.976095321, 0), new carc2.Isotope(126, 206.977407908, 0), new carc2.Isotope(127, 207.982004653, 0), new carc2.Isotope(128, 208.985349125, 0), new carc2.Isotope(129, 209.990065574, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(99, 180.996714, 0), new carc2.Isotope(100, 181.992676101, 0), new carc2.Isotope(101, 182.99193, 0), new carc2.Isotope(102, 183.988198, 0), new carc2.Isotope(103, 184.98758, 0), new carc2.Isotope(104, 185.983485388, 0), new carc2.Isotope(105, 186.98403, 0), new carc2.Isotope(106, 187.979869108, 0), new carc2.Isotope(107, 188.98088, 0), new carc2.Isotope(108, 189.978180008, 0), new carc2.Isotope(109, 190.9782, 0), new carc2.Isotope(110, 191.975719811, 0), new carc2.Isotope(111, 192.97608, 0), new carc2.Isotope(112, 193.974648056, 0), new carc2.Isotope(113, 194.975920279, 0), new carc2.Isotope(114, 195.97271, 0), new carc2.Isotope(115, 196.97338, 0), new carc2.Isotope(116, 197.97198, 0), new carc2.Isotope(117, 198.972909384, 0), new carc2.Isotope(118, 199.97181556, 0), new carc2.Isotope(119, 200.972846589, 0), new carc2.Isotope(120, 201.972143786, 0), new carc2.Isotope(121, 202.973375491, 0), new carc2.Isotope(122, 203.973028761, 2.6718), new carc2.Isotope(123, 204.974467112, 0), new carc2.Isotope(124, 205.974449002, 45.9923), new carc2.Isotope(125, 206.975880605, 42.1756), new carc2.Isotope(126, 207.97663585, 100), new carc2.Isotope(127, 208.981074801, 0), new carc2.Isotope(128, 209.984173129, 0), new carc2.Isotope(129, 210.988731474, 0), new carc2.Isotope(130, 211.991887495, 0), new carc2.Isotope(131, 212.9965, 0), new carc2.Isotope(132, 213.999798147, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(102, 184.997708, 0), new carc2.Isotope(103, 185.99648, 0), new carc2.Isotope(104, 186.993458, 0), new carc2.Isotope(105, 187.992173, 0), new carc2.Isotope(106, 188.989505, 0), new carc2.Isotope(107, 189.987520007, 0), new carc2.Isotope(108, 190.986053, 0), new carc2.Isotope(109, 191.985368, 0), new carc2.Isotope(110, 192.983662229, 0), new carc2.Isotope(111, 193.983430186, 0), new carc2.Isotope(112, 194.98112697, 0), new carc2.Isotope(113, 195.981236107, 0), new carc2.Isotope(114, 196.978934287, 0), new carc2.Isotope(115, 197.979024396, 0), new carc2.Isotope(116, 198.977576953, 0), new carc2.Isotope(117, 199.978141983, 0), new carc2.Isotope(118, 200.976970721, 0), new carc2.Isotope(119, 201.977674504, 0), new carc2.Isotope(120, 202.976868118, 0), new carc2.Isotope(121, 203.977805161, 0), new carc2.Isotope(122, 204.977374688, 0), new carc2.Isotope(123, 205.978482854, 0), new carc2.Isotope(124, 206.978455217, 0), new carc2.Isotope(125, 207.979726699, 0), new carc2.Isotope(126, 208.980383241, 100), new carc2.Isotope(127, 209.984104944, 0), new carc2.Isotope(128, 210.987258139, 0), new carc2.Isotope(129, 211.991271542, 0), new carc2.Isotope(130, 212.994374836, 0), new carc2.Isotope(131, 213.998698664, 0), new carc2.Isotope(132, 215.001832349, 0), new carc2.Isotope(133, 216.006199, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(106, 189.994293888, 0), new carc2.Isotope(107, 190.994653, 0), new carc2.Isotope(108, 191.99033039, 0), new carc2.Isotope(109, 192.991102, 0), new carc2.Isotope(110, 193.988284107, 0), new carc2.Isotope(111, 194.988045, 0), new carc2.Isotope(112, 195.985469432, 0), new carc2.Isotope(113, 196.985567, 0), new carc2.Isotope(114, 197.984024384, 0), new carc2.Isotope(115, 198.985044507, 0), new carc2.Isotope(116, 199.981735, 0), new carc2.Isotope(117, 200.982209, 0), new carc2.Isotope(118, 201.980704, 0), new carc2.Isotope(119, 202.981412863, 0), new carc2.Isotope(120, 203.980307113, 0), new carc2.Isotope(121, 204.981165396, 0), new carc2.Isotope(122, 205.980465241, 0), new carc2.Isotope(123, 206.981578228, 0), new carc2.Isotope(124, 207.981231059, 0), new carc2.Isotope(125, 208.982415788, 0), new carc2.Isotope(126, 209.982857396, 0), new carc2.Isotope(127, 210.986636869, 0), new carc2.Isotope(128, 211.988851755, 0), new carc2.Isotope(129, 212.992842522, 0), new carc2.Isotope(130, 213.995185949, 0), new carc2.Isotope(131, 214.999414609, 0), new carc2.Isotope(132, 216.001905198, 0), new carc2.Isotope(133, 217.006253, 0), new carc2.Isotope(134, 218.008965773, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(108, 193.000188, 0), new carc2.Isotope(109, 193.997973, 0), new carc2.Isotope(110, 194.996554, 0), new carc2.Isotope(111, 195.995702, 0), new carc2.Isotope(112, 196.993891293, 0), new carc2.Isotope(113, 197.99343368, 0), new carc2.Isotope(114, 198.991008569, 0), new carc2.Isotope(115, 199.990920883, 0), new carc2.Isotope(116, 200.988486908, 0), new carc2.Isotope(117, 201.988448629, 0), new carc2.Isotope(118, 202.986847216, 0), new carc2.Isotope(119, 203.987261559, 0), new carc2.Isotope(120, 204.986036352, 0), new carc2.Isotope(121, 205.986599242, 0), new carc2.Isotope(122, 206.985775861, 0), new carc2.Isotope(123, 207.986582508, 0), new carc2.Isotope(124, 208.986158678, 0), new carc2.Isotope(125, 209.987131308, 0), new carc2.Isotope(126, 210.987480806, 0), new carc2.Isotope(127, 211.990734657, 0), new carc2.Isotope(128, 212.99292115, 0), new carc2.Isotope(129, 213.996356412, 0), new carc2.Isotope(130, 214.998641245, 0), new carc2.Isotope(131, 216.002408839, 0), new carc2.Isotope(132, 217.004709619, 0), new carc2.Isotope(133, 218.008681458, 0), new carc2.Isotope(134, 219.011296478, 0), new carc2.Isotope(135, 220.015301, 0), new carc2.Isotope(136, 221.01814, 0), new carc2.Isotope(137, 222.02233, 0), new carc2.Isotope(138, 223.02534, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(110, 196.001117268, 0), new carc2.Isotope(111, 197.001661, 0), new carc2.Isotope(112, 197.998779978, 0), new carc2.Isotope(113, 198.998309, 0), new carc2.Isotope(114, 199.995634148, 0), new carc2.Isotope(115, 200.995535, 0), new carc2.Isotope(116, 201.993899382, 0), new carc2.Isotope(117, 202.994765192, 0), new carc2.Isotope(118, 203.991365, 0), new carc2.Isotope(119, 204.991668, 0), new carc2.Isotope(120, 205.99016, 0), new carc2.Isotope(121, 206.990726826, 0), new carc2.Isotope(122, 207.989631237, 0), new carc2.Isotope(123, 208.990376634, 0), new carc2.Isotope(124, 209.989679862, 0), new carc2.Isotope(125, 210.99058541, 0), new carc2.Isotope(126, 211.990688899, 0), new carc2.Isotope(127, 212.993868354, 0), new carc2.Isotope(128, 213.995346275, 0), new carc2.Isotope(129, 214.998729195, 0), new carc2.Isotope(130, 216.000258153, 0), new carc2.Isotope(131, 217.003914555, 0), new carc2.Isotope(132, 218.005586315, 0), new carc2.Isotope(133, 219.009474831, 0), new carc2.Isotope(134, 220.011384149, 0), new carc2.Isotope(135, 221.015455, 0), new carc2.Isotope(136, 222.017570472, 0), new carc2.Isotope(137, 223.02179, 0), new carc2.Isotope(138, 224.02409, 0), new carc2.Isotope(139, 225.02844, 0), new carc2.Isotope(140, 226.03089, 0), new carc2.Isotope(141, 227.035407, 0), new carc2.Isotope(142, 228.038084, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(113, 200.006499, 0), new carc2.Isotope(114, 201.00458692, 0), new carc2.Isotope(115, 202.00396885, 0), new carc2.Isotope(116, 203.001423829, 0), new carc2.Isotope(117, 204.001221209, 0), new carc2.Isotope(118, 204.998663961, 0), new carc2.Isotope(119, 205.998486886, 0), new carc2.Isotope(120, 206.996859385, 0), new carc2.Isotope(121, 207.997133849, 0), new carc2.Isotope(122, 208.995915421, 0), new carc2.Isotope(123, 209.996398327, 0), new carc2.Isotope(124, 210.995529332, 0), new carc2.Isotope(125, 211.996194988, 0), new carc2.Isotope(126, 212.996174845, 0), new carc2.Isotope(127, 213.99895474, 0), new carc2.Isotope(128, 215.000326029, 0), new carc2.Isotope(129, 216.003187873, 0), new carc2.Isotope(130, 217.004616452, 0), new carc2.Isotope(131, 218.007563326, 0), new carc2.Isotope(132, 219.009240843, 0), new carc2.Isotope(133, 220.012312978, 0), new carc2.Isotope(134, 221.014245654, 0), new carc2.Isotope(135, 222.017543957, 0), new carc2.Isotope(136, 223.019730712, 0), new carc2.Isotope(137, 224.023235513, 0), new carc2.Isotope(138, 225.025606914, 0), new carc2.Isotope(139, 226.029343423, 0), new carc2.Isotope(140, 227.031833167, 0), new carc2.Isotope(141, 228.034776087, 0), new carc2.Isotope(142, 229.038426, 0), new carc2.Isotope(143, 230.04251, 0), new carc2.Isotope(144, 231.045407, 0), new carc2.Isotope(145, 232.049654, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(115, 203.00921, 0), new carc2.Isotope(116, 204.006434513, 0), new carc2.Isotope(117, 205.006187, 0), new carc2.Isotope(118, 206.004463814, 0), new carc2.Isotope(119, 207.005176607, 0), new carc2.Isotope(120, 208.001776, 0), new carc2.Isotope(121, 209.001944, 0), new carc2.Isotope(122, 210.000446, 0), new carc2.Isotope(123, 211.000893996, 0), new carc2.Isotope(124, 211.999783492, 0), new carc2.Isotope(125, 213.000345847, 0), new carc2.Isotope(126, 214.000091141, 0), new carc2.Isotope(127, 215.002704195, 0), new carc2.Isotope(128, 216.003518402, 0), new carc2.Isotope(129, 217.00630601, 0), new carc2.Isotope(130, 218.007123948, 0), new carc2.Isotope(131, 219.010068787, 0), new carc2.Isotope(132, 220.011014669, 0), new carc2.Isotope(133, 221.013907762, 0), new carc2.Isotope(134, 222.01536182, 0), new carc2.Isotope(135, 223.01849714, 0), new carc2.Isotope(136, 224.020202004, 0), new carc2.Isotope(137, 225.023604463, 0), new carc2.Isotope(138, 226.025402555, 0), new carc2.Isotope(139, 227.029170677, 0), new carc2.Isotope(140, 228.031064101, 0), new carc2.Isotope(141, 229.034820309, 0), new carc2.Isotope(142, 230.037084774, 0), new carc2.Isotope(143, 231.04122, 0), new carc2.Isotope(144, 232.043693, 0), new carc2.Isotope(145, 233.047995, 0), new carc2.Isotope(146, 234.050547, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(118, 207.012469754, 0), new carc2.Isotope(119, 208.012112949, 0), new carc2.Isotope(120, 209.009568736, 0), new carc2.Isotope(121, 210.009256802, 0), new carc2.Isotope(122, 211.007648196, 0), new carc2.Isotope(123, 212.007811441, 0), new carc2.Isotope(124, 213.006573689, 0), new carc2.Isotope(125, 214.006893072, 0), new carc2.Isotope(126, 215.006450832, 0), new carc2.Isotope(127, 216.008721268, 0), new carc2.Isotope(128, 217.009332676, 0), new carc2.Isotope(129, 218.011625045, 0), new carc2.Isotope(130, 219.012404918, 0), new carc2.Isotope(131, 220.014752105, 0), new carc2.Isotope(132, 221.015575746, 0), new carc2.Isotope(133, 222.017828852, 0), new carc2.Isotope(134, 223.01912603, 0), new carc2.Isotope(135, 224.021708435, 0), new carc2.Isotope(136, 225.023220576, 0), new carc2.Isotope(137, 226.026089848, 0), new carc2.Isotope(138, 227.027746979, 0), new carc2.Isotope(139, 228.031014825, 0), new carc2.Isotope(140, 229.032930871, 0), new carc2.Isotope(141, 230.036025144, 0), new carc2.Isotope(142, 231.038551503, 0), new carc2.Isotope(143, 232.042022474, 0), new carc2.Isotope(144, 233.04455, 0), new carc2.Isotope(145, 234.04842, 0), new carc2.Isotope(146, 235.051102, 0), new carc2.Isotope(147, 236.055178, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(120, 210.015711883, 0), new carc2.Isotope(121, 211.016306912, 0), new carc2.Isotope(122, 212.012916, 0), new carc2.Isotope(123, 213.012962, 0), new carc2.Isotope(124, 214.011451, 0), new carc2.Isotope(125, 215.011726597, 0), new carc2.Isotope(126, 216.011050963, 0), new carc2.Isotope(127, 217.013066169, 0), new carc2.Isotope(128, 218.013267744, 0), new carc2.Isotope(129, 219.015521253, 0), new carc2.Isotope(130, 220.015733126, 0), new carc2.Isotope(131, 221.018171499, 0), new carc2.Isotope(132, 222.018454131, 0), new carc2.Isotope(133, 223.020795153, 0), new carc2.Isotope(134, 224.02145925, 0), new carc2.Isotope(135, 225.023941441, 0), new carc2.Isotope(136, 226.024890681, 0), new carc2.Isotope(137, 227.027698859, 0), new carc2.Isotope(138, 228.028731348, 0), new carc2.Isotope(139, 229.03175534, 0), new carc2.Isotope(140, 230.033126574, 0), new carc2.Isotope(141, 231.03629706, 0), new carc2.Isotope(142, 232.03805036, 100), new carc2.Isotope(143, 233.041576923, 0), new carc2.Isotope(144, 234.043595497, 0), new carc2.Isotope(145, 235.04750442, 0), new carc2.Isotope(146, 236.04971, 0), new carc2.Isotope(147, 237.053894, 0), new carc2.Isotope(148, 238.056243, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(122, 213.021183209, 0), new carc2.Isotope(123, 214.02073923, 0), new carc2.Isotope(124, 215.019097612, 0), new carc2.Isotope(125, 216.019109649, 0), new carc2.Isotope(126, 217.018288571, 0), new carc2.Isotope(127, 218.020007906, 0), new carc2.Isotope(128, 219.019880348, 0), new carc2.Isotope(129, 220.021876493, 0), new carc2.Isotope(130, 221.021863742, 0), new carc2.Isotope(131, 222.023726, 0), new carc2.Isotope(132, 223.023963748, 0), new carc2.Isotope(133, 224.025614854, 0), new carc2.Isotope(134, 225.026115172, 0), new carc2.Isotope(135, 226.02793275, 0), new carc2.Isotope(136, 227.028793151, 0), new carc2.Isotope(137, 228.031036942, 0), new carc2.Isotope(138, 229.032088601, 0), new carc2.Isotope(139, 230.034532562, 0), new carc2.Isotope(140, 231.035878898, 0), new carc2.Isotope(141, 232.03858172, 0), new carc2.Isotope(142, 233.040240235, 0), new carc2.Isotope(143, 234.043302325, 0), new carc2.Isotope(144, 235.045436759, 0), new carc2.Isotope(145, 236.048675176, 0), new carc2.Isotope(146, 237.05113943, 0), new carc2.Isotope(147, 238.054497046, 0), new carc2.Isotope(148, 239.05713, 0), new carc2.Isotope(149, 240.06098, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(126, 218.023487, 0), new carc2.Isotope(127, 219.024915423, 0), new carc2.Isotope(128, 220.024712, 0), new carc2.Isotope(129, 221.026351, 0), new carc2.Isotope(130, 222.02607, 0), new carc2.Isotope(131, 223.027722956, 0), new carc2.Isotope(132, 224.027590139, 0), new carc2.Isotope(133, 225.029384369, 0), new carc2.Isotope(134, 226.02933975, 0), new carc2.Isotope(135, 227.031140069, 0), new carc2.Isotope(136, 228.031366357, 0), new carc2.Isotope(137, 229.033496137, 0), new carc2.Isotope(138, 230.033927392, 0), new carc2.Isotope(139, 231.036289158, 0), new carc2.Isotope(140, 232.03714628, 0), new carc2.Isotope(141, 233.039628196, 0), new carc2.Isotope(142, 234.040945606, 0.0055), new carc2.Isotope(143, 235.043923062, 0.7253), new carc2.Isotope(144, 236.045561897, 0), new carc2.Isotope(145, 237.048723955, 0), new carc2.Isotope(146, 238.050782583, 100), new carc2.Isotope(147, 239.054287777, 0), new carc2.Isotope(148, 240.056585734, 0), new carc2.Isotope(149, 241.06033, 0), new carc2.Isotope(150, 242.062925, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(132, 225.033899689, 0), new carc2.Isotope(133, 226.035129, 0), new carc2.Isotope(134, 227.034958261, 0), new carc2.Isotope(135, 228.03618, 0), new carc2.Isotope(136, 229.036246866, 0), new carc2.Isotope(137, 230.037812591, 0), new carc2.Isotope(138, 231.038233161, 0), new carc2.Isotope(139, 232.040099, 0), new carc2.Isotope(140, 233.04073235, 0), new carc2.Isotope(141, 234.042888556, 0), new carc2.Isotope(142, 235.044055876, 0), new carc2.Isotope(143, 236.046559724, 0), new carc2.Isotope(144, 237.048167253, 0), new carc2.Isotope(145, 238.050940464, 0), new carc2.Isotope(146, 239.052931399, 0), new carc2.Isotope(147, 240.056168828, 0), new carc2.Isotope(148, 241.058246266, 0), new carc2.Isotope(149, 242.061635, 0), new carc2.Isotope(150, 243.064273, 0), new carc2.Isotope(151, 244.06785, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(134, 228.038727686, 0), new carc2.Isotope(135, 229.040138934, 0), new carc2.Isotope(136, 230.039645603, 0), new carc2.Isotope(137, 231.041258, 0), new carc2.Isotope(138, 232.041179445, 0), new carc2.Isotope(139, 233.04298757, 0), new carc2.Isotope(140, 234.043304681, 0), new carc2.Isotope(141, 235.0452815, 0), new carc2.Isotope(142, 236.046048088, 0), new carc2.Isotope(143, 237.048403774, 0), new carc2.Isotope(144, 238.0495534, 0), new carc2.Isotope(145, 239.052156519, 0), new carc2.Isotope(146, 240.05380746, 0), new carc2.Isotope(147, 241.056845291, 0), new carc2.Isotope(148, 242.058736847, 0), new carc2.Isotope(149, 243.061997013, 0), new carc2.Isotope(150, 244.06419765, 0), new carc2.Isotope(151, 245.067738657, 0), new carc2.Isotope(152, 246.070198429, 0), new carc2.Isotope(153, 247.07407, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(136, 231.04556, 0), new carc2.Isotope(137, 232.04659, 0), new carc2.Isotope(138, 233.046472, 0), new carc2.Isotope(139, 234.047794, 0), new carc2.Isotope(140, 235.048029, 0), new carc2.Isotope(141, 236.049569, 0), new carc2.Isotope(142, 237.049970748, 0), new carc2.Isotope(143, 238.051977839, 0), new carc2.Isotope(144, 239.053018481, 0), new carc2.Isotope(145, 240.055287826, 0), new carc2.Isotope(146, 241.056822944, 0), new carc2.Isotope(147, 242.059543039, 0), new carc2.Isotope(148, 243.061372686, 0), new carc2.Isotope(149, 244.064279429, 0), new carc2.Isotope(150, 245.066445398, 0), new carc2.Isotope(151, 246.069768438, 0), new carc2.Isotope(152, 247.072086, 0), new carc2.Isotope(153, 248.075745, 0), new carc2.Isotope(154, 249.07848, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(137, 233.0508, 0), new carc2.Isotope(138, 234.05024, 0), new carc2.Isotope(139, 235.051591, 0), new carc2.Isotope(140, 236.051405, 0), new carc2.Isotope(141, 237.052891, 0), new carc2.Isotope(142, 238.053016298, 0), new carc2.Isotope(143, 239.054951, 0), new carc2.Isotope(144, 240.055519046, 0), new carc2.Isotope(145, 241.057646736, 0), new carc2.Isotope(146, 242.058829326, 0), new carc2.Isotope(147, 243.061382249, 0), new carc2.Isotope(148, 244.062746349, 0), new carc2.Isotope(149, 245.065485586, 0), new carc2.Isotope(150, 246.067217551, 0), new carc2.Isotope(151, 247.070346811, 0), new carc2.Isotope(152, 248.072342247, 0), new carc2.Isotope(153, 249.075947062, 0), new carc2.Isotope(154, 250.078350687, 0), new carc2.Isotope(155, 251.082277873, 0), new carc2.Isotope(156, 252.08487, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(138, 235.05658, 0), new carc2.Isotope(139, 236.05733, 0), new carc2.Isotope(140, 237.057127, 0), new carc2.Isotope(141, 238.058266, 0), new carc2.Isotope(142, 239.058362, 0), new carc2.Isotope(143, 240.059749, 0), new carc2.Isotope(144, 241.060223, 0), new carc2.Isotope(145, 242.06205, 0), new carc2.Isotope(146, 243.06300157, 0), new carc2.Isotope(147, 244.065167882, 0), new carc2.Isotope(148, 245.066355386, 0), new carc2.Isotope(149, 246.068666836, 0), new carc2.Isotope(150, 247.070298533, 0), new carc2.Isotope(151, 248.07308, 0), new carc2.Isotope(152, 249.074979937, 0), new carc2.Isotope(153, 250.078310529, 0), new carc2.Isotope(154, 251.08075344, 0), new carc2.Isotope(155, 252.084303, 0), new carc2.Isotope(156, 253.08688, 0), new carc2.Isotope(157, 254.0906, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(139, 237.06207, 0), new carc2.Isotope(140, 238.06141, 0), new carc2.Isotope(141, 239.062579, 0), new carc2.Isotope(142, 240.062295, 0), new carc2.Isotope(143, 241.063716, 0), new carc2.Isotope(144, 242.063688713, 0), new carc2.Isotope(145, 243.065421, 0), new carc2.Isotope(146, 244.06599039, 0), new carc2.Isotope(147, 245.068039, 0), new carc2.Isotope(148, 246.068798807, 0), new carc2.Isotope(149, 247.070992043, 0), new carc2.Isotope(150, 248.07217808, 0), new carc2.Isotope(151, 249.074846818, 0), new carc2.Isotope(152, 250.076399951, 0), new carc2.Isotope(153, 251.079580056, 0), new carc2.Isotope(154, 252.081619582, 0), new carc2.Isotope(155, 253.085126791, 0), new carc2.Isotope(156, 254.087316198, 0), new carc2.Isotope(157, 255.091039, 0), new carc2.Isotope(158, 256.09344, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(141, 240.06892, 0), new carc2.Isotope(142, 241.068662, 0), new carc2.Isotope(143, 242.069699, 0), new carc2.Isotope(144, 243.069631, 0), new carc2.Isotope(145, 244.070969, 0), new carc2.Isotope(146, 245.071317, 0), new carc2.Isotope(147, 246.072965, 0), new carc2.Isotope(148, 247.07365, 0), new carc2.Isotope(149, 248.075458, 0), new carc2.Isotope(150, 249.076405, 0), new carc2.Isotope(151, 250.078654, 0), new carc2.Isotope(152, 251.079983592, 0), new carc2.Isotope(153, 252.082972247, 0), new carc2.Isotope(154, 253.084817974, 0), new carc2.Isotope(155, 254.088016026, 0), new carc2.Isotope(156, 255.090266386, 0), new carc2.Isotope(157, 256.093592, 0), new carc2.Isotope(158, 257.095979, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(142, 242.07343, 0), new carc2.Isotope(143, 243.07451, 0), new carc2.Isotope(144, 244.074077, 0), new carc2.Isotope(145, 245.075375, 0), new carc2.Isotope(146, 246.075281634, 0), new carc2.Isotope(147, 247.076819, 0), new carc2.Isotope(148, 248.077184411, 0), new carc2.Isotope(149, 249.079024, 0), new carc2.Isotope(150, 250.079514759, 0), new carc2.Isotope(151, 251.081566467, 0), new carc2.Isotope(152, 252.082460071, 0), new carc2.Isotope(153, 253.085176259, 0), new carc2.Isotope(154, 254.086847795, 0), new carc2.Isotope(155, 255.089955466, 0), new carc2.Isotope(156, 256.091766522, 0), new carc2.Isotope(157, 257.095098635, 0), new carc2.Isotope(158, 258.097069, 0), new carc2.Isotope(159, 259.100588, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(144, 245.081017, 0), new carc2.Isotope(145, 246.081933, 0), new carc2.Isotope(146, 247.081804, 0), new carc2.Isotope(147, 248.082909, 0), new carc2.Isotope(148, 249.083002, 0), new carc2.Isotope(149, 250.084488, 0), new carc2.Isotope(150, 251.084919, 0), new carc2.Isotope(151, 252.08663, 0), new carc2.Isotope(152, 253.08728, 0), new carc2.Isotope(153, 254.089725, 0), new carc2.Isotope(154, 255.091075196, 0), new carc2.Isotope(155, 256.094052757, 0), new carc2.Isotope(156, 257.095534643, 0), new carc2.Isotope(157, 258.098425321, 0), new carc2.Isotope(158, 259.100503, 0), new carc2.Isotope(159, 260.103645, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(147, 249.087823, 0), new carc2.Isotope(148, 250.087493, 0), new carc2.Isotope(149, 251.08896, 0), new carc2.Isotope(150, 252.088965909, 0), new carc2.Isotope(151, 253.090649, 0), new carc2.Isotope(152, 254.090948746, 0), new carc2.Isotope(153, 255.093232449, 0), new carc2.Isotope(154, 256.094275879, 0), new carc2.Isotope(155, 257.096852778, 0), new carc2.Isotope(156, 258.0982, 0), new carc2.Isotope(157, 259.101024, 0), new carc2.Isotope(158, 260.102636, 0), new carc2.Isotope(159, 261.105743, 0), new carc2.Isotope(160, 262.10752, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(148, 251.09436, 0), new carc2.Isotope(149, 252.09533, 0), new carc2.Isotope(150, 253.095258, 0), new carc2.Isotope(151, 254.096587, 0), new carc2.Isotope(152, 255.096769, 0), new carc2.Isotope(153, 256.098763, 0), new carc2.Isotope(154, 257.099606, 0), new carc2.Isotope(155, 258.101883, 0), new carc2.Isotope(156, 259.10299, 0), new carc2.Isotope(157, 260.105572, 0), new carc2.Isotope(158, 261.106941, 0), new carc2.Isotope(159, 262.109692, 0), new carc2.Isotope(160, 263.111394, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(149, 253.100679, 0), new carc2.Isotope(150, 254.100166, 0), new carc2.Isotope(151, 255.101492, 0), new carc2.Isotope(152, 256.101179573, 0), new carc2.Isotope(153, 257.103072, 0), new carc2.Isotope(154, 258.103568, 0), new carc2.Isotope(155, 259.105628, 0), new carc2.Isotope(156, 260.106434, 0), new carc2.Isotope(157, 261.108752, 0), new carc2.Isotope(158, 262.109918, 0), new carc2.Isotope(159, 263.11254, 0), new carc2.Isotope(160, 264.113978, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(150, 255.107398, 0), new carc2.Isotope(151, 256.10811, 0), new carc2.Isotope(152, 257.107858, 0), new carc2.Isotope(153, 258.109438, 0), new carc2.Isotope(154, 259.109721, 0), new carc2.Isotope(155, 260.111427, 0), new carc2.Isotope(156, 261.112106, 0), new carc2.Isotope(157, 262.114153, 0), new carc2.Isotope(158, 263.115078, 0), new carc2.Isotope(159, 264.117473, 0), new carc2.Isotope(160, 265.118659, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(152, 258.113151, 0), new carc2.Isotope(153, 259.114652, 0), new carc2.Isotope(154, 260.114435447, 0), new carc2.Isotope(155, 261.116199, 0), new carc2.Isotope(156, 262.116477, 0), new carc2.Isotope(157, 263.118313, 0), new carc2.Isotope(158, 264.118924, 0), new carc2.Isotope(159, 265.121066, 0), new carc2.Isotope(160, 266.121928, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(153, 260.121803, 0), new carc2.Isotope(154, 261.1218, 0), new carc2.Isotope(155, 262.123009, 0), new carc2.Isotope(156, 263.123146, 0), new carc2.Isotope(157, 264.12473, 0), new carc2.Isotope(158, 265.125198, 0), new carc2.Isotope(159, 266.127009, 0), new carc2.Isotope(160, 267.12774, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(155, 263.12871, 0), new carc2.Isotope(156, 264.128408258, 0), new carc2.Isotope(157, 265.130001, 0), new carc2.Isotope(158, 266.130042, 0), new carc2.Isotope(159, 267.131774, 0), new carc2.Isotope(160, 268.132156, 0), new carc2.Isotope(161, 269.134114, 0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_Isotope_2_classLit, 1), {17:1, 4:1, 1:1, 7:1}, 3, 0, [new carc2.Isotope(156, 265.136567, 0), new carc2.Isotope(157, 266.13794, 0), new carc2.Isotope(158, 267.137526, 0), new carc2.Isotope(159, 268.138816, 0), new carc2.Isotope(160, 269.139106, 0), new carc2.Isotope(161, 270.140723, 0), new carc2.Isotope(162, 271.141229, 0)])]);
}
;
carc2.getAbsoluteMass = function getAbsoluteMass(atomicNo, mass){
  carc2.$clinit_IsotopeHelper();
  var i, neutrones;
  neutrones = mass - atomicNo;
  for (i = 0; i < carc2.sIsotope[atomicNo].length; i++)
    if (carc2.sIsotope[atomicNo][i].neutrones == neutrones)
      return carc2.sIsotope[atomicNo][i].absoluteMass;
  return NaN;
}
;
defineClass(1146, 1, {1:1});
cggl.Lcom_actelion_research_chem_IsotopeHelper_2_classLit = createForClass('com.actelion.research.chem', 'IsotopeHelper', 1146, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MesoFragmentBranch = function $clinit_MesoFragmentBranch(){
  carc2.$clinit_MesoFragmentBranch = emptyMethod;
}
;
defineClass(343, 1, {343:1, 1:1});
_.neighbourIndex = 0;
cggl.Lcom_actelion_research_chem_MesoFragmentBranch_2_classLit = createForClass('com.actelion.research.chem', 'MesoFragmentBranch', 343, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MesoFragmentMembers = function $clinit_MesoFragmentMembers(){
  carc2.$clinit_MesoFragmentMembers = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.MesoFragmentMembers = function MesoFragmentMembers(atoms){
  carc2.$clinit_MesoFragmentMembers();
  Object_0.call(this);
  this.$init_33();
  this.isMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, atoms, 16, 1);
}
;
defineClass(232, 1, {232:1, 10:1, 1:1}, carc2.MesoFragmentMembers);
_.$init_33 = function $init_33(){
}
;
_.compareTo_1 = function compareTo_8(members){
  return this.compareTo_4(castTo(members, 232));
}
;
_.add_4 = function add_10(atom){
  this.isMember[atom] = true;
}
;
_.compareTo_4 = function compareTo_7(members){
  var i;
  if (this.memberAtom.length != members.memberAtom.length)
    return this.memberAtom.length < members.memberAtom.length?-1:1;
  for (i = 0; i < this.memberAtom.length; i++)
    if (this.memberAtom[i] != members.memberAtom[i])
      return this.memberAtom[i] < members.memberAtom[i]?-1:1;
  return 0;
}
;
_.consolidate = function consolidate(){
  var atom, count, is, is$array, is$index, is$max;
  count = 0;
  for (is$array = this.isMember , is$index = 0 , is$max = is$array.length; is$index < is$max; ++is$index) {
    is = is$array[is$index];
    if (is)
      count++;
  }
  this.memberAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
  count = 0;
  for (atom = 0; atom < this.isMember.length; atom++)
    if (this.isMember[atom])
      this.memberAtom[count++] = atom;
}
;
_.hasStereoCenters = function hasStereoCenters(isStereoCenter){
  var j;
  this.consolidate();
  for (j = 0; j < this.memberAtom.length; j++)
    if (isStereoCenter[this.memberAtom[j]])
      return true;
  return false;
}
;
cggl.Lcom_actelion_research_chem_MesoFragmentMembers_2_classLit = createForClass('com.actelion.research.chem', 'MesoFragmentMembers', 232, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MolecularFormula = function $clinit_MolecularFormula(){
  carc2.$clinit_MolecularFormula = emptyMethod;
  jl.$clinit_Object();
  carc2.sRelativeMass = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 1.00794, 4.0026, 6.941, 9.0122, 10.811, 12.011, 14.007, 15.999, 18.998, 20.18, 22.99, 24.305, 26.982, 28.086, 30.974, 32.066, 35.453, 39.948, 39.098, 40.078, 44.956, 47.867, 50.942, 51.996, 54.938, 55.845, 58.933, 58.693, 63.546, 65.39, 69.723, 72.61, 74.922, 78.96, 79.904, 83.8, 85.468, 87.62, 88.906, 91.224, 92.906, 95.94, 98.906, 101.07, 102.91, 106.42, 107.87, 112.41, 114.82, 118.71, 121.76, 127.6, 126.9, 131.29, 132.91, 137.33, 138.91, 140.12, 140.91, 144.24, 146.92, 150.36, 151.96, 157.25, 158.93, 162.5, 164.93, 167.26, 168.93, 173.04, 174.97, 178.49, 180.95, 183.84, 186.21, 190.23, 192.22, 195.08, 196.97, 200.59, 204.38, 207.2, 208.98, 209.98, 209.99, 222.02, 223.02, 226.03, 227.03, 232.04, 231.04, 238.03, 237.05, 239.05, 241.06, 244.06, 249.08, 252.08, 252.08, 257.1, 258.1, 259.1, 262.11, 267.12, 268.13, 271.13, 270.13, 277.15, 276.15, 281.17, 281.17, 283.17, 285.18, 289.19, 289.19, 293.2, 294.21, 294.21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.0141, 3.016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71.0787, 156.18828, 114.10364, 115.0877, 103.1447, 128.13052, 129.11458, 57.05182, 137.14158, 113.15934, 113.15934, 128.17428, 131.19846, 147.17646, 97.11658, 87.0777, 101.10458, 186.2134, 163.17546, 99.13246]);
  carc2.sAbsoluteMass = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 1.007825, 4.0026, 7.016003, 9.012182, 11.009305, 12, 14.003074, 15.994915, 18.998403, 19.992435, 22.989767, 23.985042, 26.98153, 27.976927, 30.973762, 31.97207, 34.968852, 39.962384, 38.963707, 39.962591, 44.95591, 47.947947, 50.943962, 51.940509, 54.938047, 55.934939, 58.933198, 57.935346, 62.939598, 63.929145, 68.92558, 73.921177, 74.921594, 79.91652, 78.918336, 83.911507, 84.911794, 87.905619, 88.905849, 89.904703, 92.906377, 97.905406, 89.92381, 101.904348, 102.9055, 105.903478, 106.905092, 113.903357, 114.90388, 119.9022, 120.903821, 129.906229, 126.904473, 131.904144, 132.905429, 137.905232, 138.906346, 139.905433, 140.907647, 141.907719, 135.92398, 151.919729, 152.921225, 157.924099, 158.925342, 163.929171, 164.930319, 165.93029, 168.934212, 173.938859, 174.94077, 179.946545, 180.947992, 183.950928, 186.955744, 191.961467, 192.962917, 194.964766, 196.966543, 201.970617, 204.974401, 207.976627, 208.980374, 193.98818, 195.99573, 199.9957, 201.00411, 206.0038, 210.00923, 232.038054, 216.01896, 238.050784, 229.03623, 232.041169, 237.05005, 238.05302, 242.06194, 240.06228, 243.06947, 243.07446, 248.08275, 251.08887, 253.09515, 257.10295, 257.10777, 271.13, 270.13, 277.15, 276.15, 281.17, 281.17, 283.17, 285.18, 289.19, 289.19, 291.2, 294.21, 294.21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.014, 3.01605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
  carc2.sFirstFormulaAtomicNo = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [6, 1, 7, 8]);
}
;
carc2.MolecularFormula = function MolecularFormula(mol){
  carc2.$clinit_MolecularFormula();
  var atom, atom0, atom1, atomCount, atomMass, atomicNo, atomicNoCount, i, i0, lowestAtomicNo, lowestLabel;
  Object_0.call(this);
  this.$init_34();
  mol.ensureHelperArrays_0(1);
  atomCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 190 + 1, 15, 1);
  for (atom0 = 0; atom0 < mol.getAllAtoms_0(); atom0++) {
    switch (mol.getAtomicNo_0(atom0)) {
      case 171:
        atomCount[1] += 5;
        atomCount[6] += 3;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 172:
        atomCount[1] += 12;
        atomCount[6] += 6;
        atomCount[7] += 4;
        atomCount[8] += 1;
        break;
      case 173:
        atomCount[1] += 6;
        atomCount[6] += 4;
        atomCount[7] += 2;
        atomCount[8] += 2;
        break;
      case 174:
        atomCount[1] += 5;
        atomCount[6] += 4;
        atomCount[7] += 1;
        atomCount[8] += 3;
        break;
      case 175:
        atomCount[1] += 5;
        atomCount[6] += 3;
        atomCount[7] += 1;
        atomCount[8] += 1;
        atomCount[16] += 1;
        break;
      case 176:
        atomCount[1] += 8;
        atomCount[6] += 5;
        atomCount[7] += 2;
        atomCount[8] += 2;
        break;
      case 177:
        atomCount[1] += 7;
        atomCount[6] += 5;
        atomCount[7] += 1;
        atomCount[8] += 3;
        break;
      case 178:
        atomCount[1] += 3;
        atomCount[6] += 2;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 179:
        atomCount[1] += 7;
        atomCount[6] += 6;
        atomCount[7] += 3;
        atomCount[8] += 1;
        break;
      case 180:
        atomCount[1] += 11;
        atomCount[6] += 6;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 181:
        atomCount[1] += 11;
        atomCount[6] += 6;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 182:
        atomCount[1] += 12;
        atomCount[6] += 6;
        atomCount[7] += 2;
        atomCount[8] += 1;
        break;
      case 183:
        atomCount[1] += 9;
        atomCount[6] += 5;
        atomCount[7] += 1;
        atomCount[8] += 1;
        atomCount[16] += 1;
        break;
      case 184:
        atomCount[1] += 9;
        atomCount[6] += 9;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 185:
        atomCount[1] += 7;
        atomCount[6] += 5;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 186:
        atomCount[1] += 5;
        atomCount[6] += 3;
        atomCount[7] += 1;
        atomCount[8] += 2;
        break;
      case 187:
        atomCount[1] += 7;
        atomCount[6] += 4;
        atomCount[7] += 1;
        atomCount[8] += 2;
        break;
      case 188:
        atomCount[1] += 10;
        atomCount[6] += 11;
        atomCount[7] += 2;
        atomCount[8] += 1;
        break;
      case 189:
        atomCount[1] += 9;
        atomCount[6] += 9;
        atomCount[7] += 1;
        atomCount[8] += 2;
        break;
      case 190:
        atomCount[1] += 9;
        atomCount[6] += 5;
        atomCount[7] += 1;
        atomCount[8] += 1;
        break;
      case 1:
        switch (mol.getAtomMass_0(atom0)) {
          case 0:
          case 1:
            atomCount[1]++;
            break;
          case 2:
            atomCount[151]++;
            break;
          case 3:
            atomCount[152]++;
            break;
        }

        break;
      default:atomCount[mol.getAtomicNo_0(atom0)]++;
        break;
    }
  }
  for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++)
    if (mol.getAtomicNo_0(atom1) >= 171 && mol.getAtomicNo_0(atom1) <= 190)
      atomCount[1] += 2 - mol.getOccupiedValence_0(atom1);
    else {
      atomCount[1] += mol.getImplicitHydrogens_0(atom1);
    }
  atomicNoCount = 0;
  for (i0 = 1; i0 <= 190; i0++)
    if (atomCount[i0] != 0)
      atomicNoCount++;
  this.mAtomCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atomicNoCount, 15, 1);
  this.mAtomicNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atomicNoCount, 15, 1);
  atomicNoCount = 0;
  for (i = 0; i < carc2.sFirstFormulaAtomicNo.length; i++) {
    if (atomCount[carc2.sFirstFormulaAtomicNo[i]] != 0) {
      this.mAtomCount[atomicNoCount] = atomCount[carc2.sFirstFormulaAtomicNo[i]];
      this.mAtomicNo[atomicNoCount] = carc2.sFirstFormulaAtomicNo[i];
      atomicNoCount++;
      atomCount[carc2.sFirstFormulaAtomicNo[i]] = 0;
    }
  }
  while (true) {
    lowestLabel = 'zzz';
    lowestAtomicNo = -1;
    for (atomicNo = 1; atomicNo <= 190; atomicNo++)
      if (atomCount[atomicNo] > 0 && jl.compareTo_Ljava_lang_String__I__devirtual$(lowestLabel, (carc2.$clinit_Molecule() , carc2.cAtomLabel)[atomicNo]) > 0) {
        lowestLabel = (carc2.$clinit_Molecule() , carc2.cAtomLabel)[atomicNo];
        lowestAtomicNo = atomicNo;
      }
    if (lowestAtomicNo == -1)
      break;
    this.mAtomCount[atomicNoCount] = atomCount[lowestAtomicNo];
    this.mAtomicNo[atomicNoCount] = lowestAtomicNo;
    atomicNoCount++;
    atomCount[lowestAtomicNo] = 0;
  }
  this.mAbsoluteIsotopeWeightIncrement = 0;
  this.mRelativeIsotopeWeightIncrement = 0;
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (mol.getAtomicNo_0(atom) != 1 && !mol.isNaturalAbundance_0(atom)) {
      atomicNo = mol.getAtomicNo_0(atom);
      atomMass = mol.getAtomMass_0(atom);
      this.mAbsoluteIsotopeWeightIncrement += carc2.getAbsoluteMass(atomicNo, atomMass) - carc2.sAbsoluteMass[atomicNo];
      this.mRelativeIsotopeWeightIncrement += carc2.getAbsoluteMass(atomicNo, atomMass) - carc2.sRelativeMass[atomicNo];
    }
  }
}
;
defineClass(127, 1, {127:1, 1:1});
_.$init_34 = function $init_34(){
}
;
_.equals_0 = function equals_6(f){
  var i;
  if (maskUndefined(f) === maskUndefined(this))
    return true;
  if (!instanceOf(f, 127))
    return false;
  for (i = 0; i < this.mAtomCount.length; i++)
    if (this.mAtomCount[i] != castTo(f, 127).mAtomCount[i])
      return false;
  return true;
}
;
_.getAbsoluteWeight = function getAbsoluteWeight(){
  var i, weight;
  weight = this.mAbsoluteIsotopeWeightIncrement;
  for (i = 0; i < this.mAtomCount.length; i++)
    weight += this.mAtomCount[i] * carc2.sAbsoluteMass[this.mAtomicNo[i]];
  return weight;
}
;
_.getFormula = function getFormula(){
  var formula, i;
  formula = new jl.StringBuffer;
  for (i = 0; i < this.mAtomCount.length; i++) {
    formula.append_2((carc2.$clinit_Molecule() , carc2.cAtomLabel)[this.mAtomicNo[i]]);
    if (this.mAtomCount[i] > 1)
      formula.append_1(this.mAtomCount[i]);
  }
  return formula.toString_0();
}
;
_.getRelativeWeight = function getRelativeWeight(){
  var i, weight;
  weight = this.mRelativeIsotopeWeightIncrement;
  for (i = 0; i < this.mAtomCount.length; i++)
    weight += this.mAtomCount[i] * carc2.sRelativeMass[this.mAtomicNo[i]];
  return weight;
}
;
_.mAbsoluteIsotopeWeightIncrement = 0;
_.mRelativeIsotopeWeightIncrement = 0;
cggl.Lcom_actelion_research_chem_MolecularFormula_2_classLit = createForClass('com.actelion.research.chem', 'MolecularFormula', 127, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MoleculeNeutralizer = function $clinit_MoleculeNeutralizer(){
  carc2.$clinit_MoleculeNeutralizer = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.electronegativity = function electronegativity(atomicNo){
  switch (atomicNo) {
    case 6:
      return 1;
    case 53:
      return 2;
    case 33:
      return 3;
    case 34:
      return 4;
    case 35:
      return 5;
    case 15:
      return 6;
    case 16:
      return 7;
    case 17:
      return 8;
    case 7:
      return 9;
    case 8:
      return 10;
    case 9:
      return 11;
  }
  return 0;
}
;
carc2.neutralizeChargedMolecule = function neutralizeChargedMolecule(mol){
  carc2.$clinit_MoleculeNeutralizer();
  var atom, atom1, atom2, bond, bond0, charge1, charge2, chargedAtom, copy, donorAtom, found, fragmentsCharge, hasOppositeChargedNeighbour, hydrogensForDeletion, i, i0, i1, isAromaticAtom, isAromaticBond, leastElectronegative, leastElectronegativity, member, memberToProcess, noOfMembers, overallCharge, valence;
  mol.ensureHelperArrays_0(7);
  overallCharge = 0;
  hasOppositeChargedNeighbour = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  hydrogensForDeletion = null;
  valence = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    atom1 = mol.getBondAtom_0(0, bond0);
    atom2 = mol.getBondAtom_0(1, bond0);
    charge1 = mol.getAtomCharge_0(atom1);
    charge2 = mol.getAtomCharge_0(atom2);
    if (charge1 != 0 && charge2 != 0 && charge1 < 0 ^ charge2 < 0) {
      hasOppositeChargedNeighbour[atom1] = true;
      hasOppositeChargedNeighbour[atom2] = true;
    }
    valence[atom1] += mol.getBondOrder_0(bond0);
    valence[atom2] += mol.getBondOrder_0(bond0);
  }
  for (chargedAtom = 0; chargedAtom < mol.getAtoms_0(); chargedAtom++) {
    overallCharge += mol.getAtomCharge_0(chargedAtom);
    if (mol.getAtomCharge_0(chargedAtom) == 1) {
      if (mol.getAtomicNo_0(chargedAtom) == 7) {
        if (!hasOppositeChargedNeighbour[chargedAtom]) {
          if (valence[chargedAtom] <= 3) {
            overallCharge -= 1;
            mol.setAtomCharge_0(chargedAtom, 0);
            if (mol.getConnAtoms_0(chargedAtom) != mol.getAllConnAtoms_0(chargedAtom)) {
              mol.deleteAtom_0(mol.getConnAtom_0(chargedAtom, mol.getAllConnAtoms_0(chargedAtom) - 1));
              mol.ensureHelperArrays_0(7);
            }
          }
           else if (mol.isAromaticAtom_1(chargedAtom)) {
            isAromaticAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
            isAromaticBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
            mol.findRingSystem_0(chargedAtom, true, isAromaticAtom, isAromaticBond);
            for (donorAtom = 0; donorAtom < mol.getAtoms_0(); donorAtom++) {
              if (isAromaticAtom[donorAtom] && mol.getAtomicNo_0(donorAtom) == 7 && mol.getAtomCharge_0(donorAtom) == 0 && valence[donorAtom] == 2) {
                if (carc2.removeHydrogenAndDelocalize(mol, isAromaticBond, chargedAtom, donorAtom)) {
                  overallCharge -= 1;
                  break;
                }
              }
            }
          }
        }
      }
    }
     else if (mol.getAtomCharge_0(chargedAtom) < 0) {
      if (mol.getAtomicNo_0(chargedAtom) == 6 || mol.getAtomicNo_0(chargedAtom) == 7 || mol.getAtomicNo_0(chargedAtom) == 8 || mol.getAtomicNo_0(chargedAtom) == 16) {
        if (!hasOppositeChargedNeighbour[chargedAtom]) {
          overallCharge -= mol.getAtomCharge_0(chargedAtom);
          mol.setAtomCharge_0(chargedAtom, 0);
        }
         else {
          member = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 16, 15, 1);
          member[0] = chargedAtom;
          noOfMembers = 1;
          memberToProcess = 0;
          while (memberToProcess < noOfMembers) {
            for (bond = 0; bond < mol.getAllBonds_0(); bond++) {
              atom = -1;
              if (mol.getBondAtom_0(0, bond) == member[memberToProcess])
                atom = mol.getBondAtom_0(1, bond);
              else if (mol.getBondAtom_0(1, bond) == member[memberToProcess])
                atom = mol.getBondAtom_0(0, bond);
              if (atom == -1)
                continue;
              if (mol.getAtomCharge_0(atom) != 0) {
                found = false;
                for (i0 = 0; i0 < noOfMembers; i0++) {
                  if (atom == member[i0]) {
                    found = true;
                    break;
                  }
                }
                if (!found) {
                  if (noOfMembers == member.length) {
                    copy = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2 * member.length, 15, 1);
                    jl.arraycopy(member, 0, copy, 0, member.length);
                    member = copy;
                  }
                  member[noOfMembers++] = atom;
                }
              }
            }
            memberToProcess++;
          }
          fragmentsCharge = 0;
          for (i1 = 0; i1 < noOfMembers; i1++) {
            fragmentsCharge += mol.getAtomCharge_0(member[i1]);
          }
          if (fragmentsCharge < 0) {
            leastElectronegative = -1;
            leastElectronegativity = 99;
            for (i = 0; i < noOfMembers; i++) {
              if (mol.getAtomCharge_0(member[i]) < 0) {
                if (leastElectronegativity > carc2.electronegativity(mol.getAtomicNo_0(member[i]))) {
                  leastElectronegativity = carc2.electronegativity(mol.getAtomicNo_0(member[i]));
                  leastElectronegative = member[i];
                }
              }
            }
            if (leastElectronegative != -1) {
              overallCharge -= mol.getAtomCharge_0(leastElectronegative);
              mol.setAtomCharge_0(leastElectronegative, 0);
            }
          }
        }
      }
    }
  }
  if (jsNotEquals(hydrogensForDeletion, null))
    mol.deleteAtoms_1(hydrogensForDeletion);
  if (overallCharge > 0)
    overallCharge = carc2.removeAcidicHydrogens(mol, overallCharge);
  return overallCharge;
}
;
carc2.removeAcidicHydrogens = function removeAcidicHydrogens(mol, maxHydrogens){
  var atom, connAtom, found, i;
  if (maxHydrogens > 0)
    maxHydrogens = carc2.removeHydrogensFromHalogene(mol, maxHydrogens, 9);
  if (maxHydrogens > 0)
    maxHydrogens = carc2.removeHydrogensFromHalogene(mol, maxHydrogens, 17);
  if (maxHydrogens > 0)
    maxHydrogens = carc2.removeHydrogensFromHalogene(mol, maxHydrogens, 35);
  if (maxHydrogens > 0)
    maxHydrogens = carc2.removeHydrogensFromHalogene(mol, maxHydrogens, 53);
  if (maxHydrogens > 0) {
    for (atom = 0; atom < mol.getAtoms_0(); atom++) {
      if (mol.getAtomCharge_0(atom) > 0) {
        found = false;
        for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
          connAtom = mol.getConnAtom_0(atom, i);
          if (mol.getAtomCharge_0(connAtom) == 0 && mol.isElectronegative_0(connAtom) && mol.getImplicitHydrogens_0(connAtom) > 0) {
            mol.setAtomCharge_0(connAtom, -1);
            maxHydrogens--;
            if (maxHydrogens == 0)
              return 0;
            found = true;
            break;
          }
        }
        if (found)
          continue;
      }
    }
  }
  if (maxHydrogens > 0)
    maxHydrogens = carc2.removeAcidicHydrogensFromAcid(mol, maxHydrogens, 8, 16);
  if (maxHydrogens > 0)
    maxHydrogens = carc2.removeAcidicHydrogensFromAcid(mol, maxHydrogens, 8, 15);
  if (maxHydrogens > 0)
    maxHydrogens = carc2.removeAcidicHydrogensFromAcid(mol, maxHydrogens, 8, 6);
  if (maxHydrogens > 0)
    maxHydrogens = carc2.removeAcidicHydrogensFromAcid(mol, maxHydrogens, 7, 16);
  return maxHydrogens;
}
;
carc2.removeAcidicHydrogensFromAcid = function removeAcidicHydrogensFromAcid(mol, maxHydrogens, atomicNo, centralAtomicNo){
  var atom, centralAtom, connAtom, deprotonated, deprotonatedFound, i, j, oxoFound;
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (mol.getAtomicNo_0(atom) == atomicNo && mol.getAtomCharge_0(atom) == 0 && mol.getImplicitHydrogens_0(atom) > 0) {
      deprotonated = false;
      for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
        if (mol.getConnBondOrder_0(atom, i) == 1) {
          centralAtom = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(centralAtom) == centralAtomicNo) {
            oxoFound = false;
            deprotonatedFound = false;
            for (j = 0; j < mol.getConnAtoms_0(centralAtom); j++) {
              connAtom = mol.getConnAtom_0(centralAtom, j);
              if (mol.getAtomCharge_0(connAtom) < 0) {
                deprotonatedFound = true;
                break;
              }
              if (connAtom != atom && mol.getAtomicNo_0(connAtom) == 8 && mol.getConnBondOrder_0(centralAtom, j) == 2) {
                oxoFound = true;
              }
            }
            if (!deprotonatedFound && oxoFound) {
              mol.setAtomCharge_0(atom, -1);
              maxHydrogens--;
              if (maxHydrogens == 0)
                return 0;
              deprotonated = true;
            }
          }
        }
        if (deprotonated)
          break;
      }
    }
  }
  return maxHydrogens;
}
;
carc2.removeHydrogenAndDelocalize = function removeHydrogenAndDelocalize(mol, isAromaticBond, chargedAtom, donorAtom){
  var atom, bond, bond0, bond1, bondMask, i, i0, oldBondType;
  oldBondType = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getBonds_0(), 15, 1);
  bondMask = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    oldBondType[bond0] = mol.getBondType_0(bond0);
    if (isAromaticBond[bond0]) {
      bondMask[bond0] = true;
      mol.setBondType_0(bond0, 1);
    }
  }
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (atom != donorAtom && mol.getAtomPi_0(atom) == 0 && bondMask[mol.getConnBond_0(donorAtom, 0)]) {
      for (i0 = 0; i0 < mol.getConnAtoms_0(atom); i0++) {
        bond1 = mol.getConnBond_0(atom, i0);
        mol.setBondType_0(bond1, 1);
        bondMask[bond1] = false;
      }
    }
  }
  for (i = 0; i < mol.getConnAtoms_0(chargedAtom); i++) {
    bond1 = mol.getConnBond_0(chargedAtom, i);
    mol.setBondType_0(bond1, 1);
    bondMask[bond1] = false;
  }
  if ((new carc2.AromaticityResolver(mol)).locateDelocalizedDoubleBonds(bondMask)) {
    mol.setAtomCharge_0(chargedAtom, 0);
    if (mol.getConnAtoms_0(donorAtom) != mol.getAllConnAtoms_0(donorAtom)) {
      mol.deleteAtom_0(mol.getConnAtom_0(donorAtom, mol.getAllConnAtoms_0(donorAtom) - 1));
    }
    mol.ensureHelperArrays_0(7);
    return true;
  }
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    mol.setBondType_0(bond, oldBondType[bond]);
  }
  return false;
}
;
carc2.removeHydrogensFromHalogene = function removeHydrogensFromHalogene(mol, maxHydrogens, atomicNo){
  var atom;
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (mol.getAtomicNo_0(atom) == atomicNo && mol.getAtomCharge_0(atom) == 0 && mol.getConnAtoms_0(atom) == 0) {
      mol.setAtomCharge_0(atom, -1);
      maxHydrogens--;
      if (maxHydrogens == 0)
        return 0;
    }
  }
  return maxHydrogens;
}
;
defineClass(1149, 1, {1:1});
carc2.cInitialMultiChargeFragmentMembers = 16;
cggl.Lcom_actelion_research_chem_MoleculeNeutralizer_2_classLit = createForClass('com.actelion.research.chem', 'MoleculeNeutralizer', 1149, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MolfileCreator = function $clinit_MolfileCreator(){
  carc2.$clinit_MolfileCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.MolfileCreator = function MolfileCreator(mol){
  carc2.$clinit_MolfileCreator();
  carc2.MolfileCreator_0.call(this, mol, true);
}
;
carc2.MolfileCreator_0 = function MolfileCreator_0(mol, allowScaling){
  carc2.MolfileCreator_2.call(this, mol, allowScaling, new jl.StringBuilder_0(32768));
}
;
carc2.MolfileCreator_1 = function MolfileCreator_1(mol, allowScaling, scalingFactor, builder){
  carc2.$clinit_MolfileCreator();
  var atom, atom0, atom1, atom10, atom2, atom3, atom4, atom5, atom6, atom7, atom8, atom9, atomLabel, atomList, atomicNo, avbl, bond, bondType, charge, count, distance, dx, dy, dz, esrGroupCount, grafac, group, hasCoordinates, hydrogenFlags, i, isRacemic, label_0, maxESRGroup, maxGroupCount, minDistance, name_0, nl, no, order, ringFeatures, ringState, stereo, substitution, topology, valence;
  Object_0.call(this);
  this.$init_35();
  this.mDoubleFormat = new jt.DecimalFormat_0('0.0000', new jt.DecimalFormatSymbols((ju.$clinit_Locale() , ju.ENGLISH)));
  nl = '\n';
  mol.ensureHelperArrays_0(15);
  isRacemic = true;
  for (atom0 = 0; atom0 < mol.getAtoms_0(); atom0++) {
    if (mol.getAtomParity_0(atom0) != 0 && mol.getAtomParity_0(atom0) != 3 && mol.getAtomESRType_0(atom0) != 1) {
      isRacemic = false;
      break;
    }
  }
  maxESRGroup = -1;
  if (isRacemic) {
    esrGroupCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 32, 15, 1);
    maxGroupCount = 0;
    for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++) {
      if (mol.getAtomParity_0(atom1) != 0 && mol.getAtomParity_0(atom1) != 3 && mol.getAtomESRType_0(atom1) == 1) {
        group = mol.getAtomESRGroup_0(atom1);
        esrGroupCount[group]++;
        if (maxGroupCount < esrGroupCount[group]) {
          maxGroupCount = esrGroupCount[group];
          maxESRGroup = group;
        }
        break;
      }
    }
  }
  this.mBuilder = isNull(builder)?new jl.StringBuilder:builder;
  name_0 = jsNotEquals(mol.getName_0(), null)?mol.getName_0():'';
  this.mBuilder.append_9(name_0 + '\n');
  this.mBuilder.append_9('Actelion Java MolfileCreator 1.0' + '\n' + '\n');
  this.appendThreeDigitInt(mol.getAllAtoms_0());
  this.appendThreeDigitInt(mol.getAllBonds_0());
  this.mBuilder.append_9('  0  0');
  this.appendThreeDigitInt(!isRacemic?1:0);
  this.mBuilder.append_9('  0  0  0  0  0999 V2000' + '\n');
  hasCoordinates = mol.getAllAtoms_0() == 1;
  for (atom3 = 1; atom3 < mol.getAllAtoms_0(); atom3++) {
    if (mol.getAtomX_0(atom3) != mol.getAtomX_0(0) || mol.getAtomY_0(atom3) != mol.getAtomY_0(0) || mol.getAtomZ_0(atom3) != mol.getAtomZ_0(0)) {
      hasCoordinates = true;
      break;
    }
  }
  grafac = 1;
  if (hasCoordinates) {
    if (scalingFactor != 0) {
      grafac = scalingFactor;
    }
     else if (allowScaling) {
      avbl = mol.getAverageBondLength_0();
      if (avbl != 0) {
        if (avbl < 1 || avbl > 3)
          grafac = 1.5 / avbl;
      }
       else {
        minDistance = 1.7976931348623157E308;
        for (atom1 = 1; atom1 < mol.getAllAtoms_0(); atom1++) {
          for (atom2 = 0; atom2 < atom1; atom2++) {
            dx = mol.getAtomX_0(atom2) - mol.getAtomX_0(atom1);
            dy = mol.getAtomY_0(atom2) - mol.getAtomY_0(atom1);
            dz = mol.getAtomZ_0(atom2) - mol.getAtomZ_0(atom1);
            distance = dx * dx + dy * dy + dz * dz;
            if (minDistance > distance)
              minDistance = distance;
          }
        }
        grafac = 2 * 1.5 / minDistance;
      }
    }
  }
  for (atom4 = 0; atom4 < mol.getAllAtoms_0(); atom4++) {
    if (hasCoordinates) {
      this.appendTenDigitDouble(grafac * mol.getAtomX_0(atom4));
      this.appendTenDigitDouble(grafac * -mol.getAtomY_0(atom4));
      this.appendTenDigitDouble(grafac * -mol.getAtomZ_0(atom4));
    }
     else {
      this.mBuilder.append_9('    0.0000    0.0000    0.0000');
    }
    if (jsNotEquals(mol.getAtomList_0(atom4), null))
      this.mBuilder.append_9(' L  ');
    else if (neq(and_0(mol.getAtomQueryFeatures(atom4), 1), 0))
      this.mBuilder.append_9(' A  ');
    else if (mol.getAtomicNo_0(atom4) >= 129 && mol.getAtomicNo_0(atom4) <= 144 || mol.getAtomicNo_0(atom4) == 154)
      this.mBuilder.append_9(' R# ');
    else {
      atomLabel = mol.getAtomLabel_0(atom4);
      this.mBuilder.append_9(' ' + atomLabel);
      if (jl.length__I__devirtual$_0(atomLabel) == 1)
        this.mBuilder.append_9('  ');
      else if (jl.length__I__devirtual$_0(atomLabel) == 2)
        this.mBuilder.append_9(' ');
    }
    this.mBuilder.append_9(' 0  0  0');
    hydrogenFlags = and_0(1920, mol.getAtomQueryFeatures(atom4));
    if (eq(hydrogenFlags, 0))
      this.mBuilder.append_9('  0');
    else if (eq(hydrogenFlags, or_0(128, 256)))
      this.mBuilder.append_9('  3');
    else if (eq(hydrogenFlags, 128))
      this.mBuilder.append_9('  2');
    else if (eq(hydrogenFlags, or_0(or_0(256, 512), 1024)))
      this.mBuilder.append_9('  1');
    else if (eq(hydrogenFlags, or_0(or_0(128, 512), 1024)))
      this.mBuilder.append_9('  2');
    this.mBuilder.append_9(neq(and_0(mol.getAtomQueryFeatures(atom4), 8192), 0)?'  1':'  0');
    valence = mol.getAtomAbnormalValence_0(atom4);
    if (valence == -1)
      this.mBuilder.append_9('  0');
    else if (valence == 0)
      this.mBuilder.append_9(' 15');
    else 
      this.appendThreeDigitInt(valence);
    this.mBuilder.append_9('  0  0  0');
    this.appendThreeDigitInt(mol.getAtomMapNo_0(atom4));
    this.mBuilder.append_9('  0  0' + '\n');
  }
  for (bond = 0; bond < mol.getAllBonds_0(); bond++) {
    switch (mol.getBondType_0(bond)) {
      case 1:
        order = 1;
        stereo = 0;
        break;
      case 2:
        order = 2;
        stereo = 0;
        break;
      case 4:
        order = 3;
        stereo = 0;
        break;
      case 129:
        order = 1;
        stereo = 6;
        break;
      case 257:
        order = 1;
        stereo = 1;
        break;
      case 386:
        order = 2;
        stereo = 3;
        break;
      case 64:
        order = 4;
        stereo = 0;
        break;
      case 32:
        order = 8;
        stereo = 0;
        break;
      default:order = 1;
        stereo = 0;
        break;
    }
    if (isRacemic && (stereo == 1 || stereo == 6)) {
      atom1 = mol.getBondAtom_0(0, bond);
      if (mol.getAtomESRType_0(atom1) == 2)
        stereo = 0;
      else if (mol.getAtomESRType_0(atom1) == 1 && mol.getAtomESRGroup_0(atom1) != maxESRGroup)
        stereo = 4;
    }
    bondType = mol.getBondQueryFeatures_0(bond) & 31;
    if (bondType != 0) {
      if (bondType == 8)
        order = 4;
      else if (bondType == (1 | 2))
        order = 5;
      else if (bondType == (1 | 8))
        order = 6;
      else if (bondType == (2 | 8))
        order = 7;
      else 
        order = 8;
    }
    ringState = mol.getBondQueryFeatures_0(bond) & 384;
    topology = ringState == 0?0:ringState == 256?1:2;
    this.appendThreeDigitInt(1 + mol.getBondAtom_0(0, bond));
    this.appendThreeDigitInt(1 + mol.getBondAtom_0(1, bond));
    this.appendThreeDigitInt(order);
    this.appendThreeDigitInt(stereo);
    this.mBuilder.append_9('  0');
    this.appendThreeDigitInt(topology);
    this.mBuilder.append_9('  0' + '\n');
  }
  no = 0;
  for (atom5 = 0; atom5 < mol.getAllAtoms_0(); atom5++)
    if (mol.getAtomCharge_0(atom5) != 0)
      no++;
  if (no != 0) {
    count = 0;
    for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++) {
      if (mol.getAtomCharge_0(atom1) != 0) {
        if (count == 0) {
          this.mBuilder.append_9('M  CHG');
          this.appendThreeDigitInt($wnd.Math.min(8, no));
        }
        this.mBuilder.append_9(' ');
        this.appendThreeDigitInt(atom1 + 1);
        charge = mol.getAtomCharge_0(atom1);
        if (charge < 0) {
          this.mBuilder.append_9('  -');
          charge = -charge;
        }
         else 
          this.mBuilder.append_9('   ');
        this.mBuilder.append_4(narrow_char(48 + charge));
        no--;
        if (++count == 8 || no == 0) {
          count = 0;
          this.mBuilder.append_9('\n');
        }
      }
    }
  }
  no = 0;
  for (atom6 = 0; atom6 < mol.getAllAtoms_0(); atom6++)
    if (!mol.isNaturalAbundance_0(atom6))
      no++;
  if (no != 0) {
    count = 0;
    for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++) {
      if (!mol.isNaturalAbundance_0(atom1)) {
        if (count == 0) {
          this.mBuilder.append_9('M  ISO');
          this.appendThreeDigitInt($wnd.Math.min(8, no));
        }
        this.mBuilder.append_9(' ');
        this.appendThreeDigitInt(atom1 + 1);
        this.mBuilder.append_9(' ');
        this.appendThreeDigitInt(mol.getAtomMass_0(atom1));
        no--;
        if (++count == 8 || no == 0) {
          count = 0;
          this.mBuilder.append_9('\n');
        }
      }
    }
  }
  no = 0;
  for (atom7 = 0; atom7 < mol.getAllAtoms_0(); atom7++)
    if (mol.getAtomRadical_0(atom7) != 0)
      no++;
  if (no != 0) {
    count = 0;
    for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++) {
      if (mol.getAtomRadical_0(atom1) != 0) {
        if (count == 0) {
          this.mBuilder.append_9('M  RAD');
          this.appendThreeDigitInt($wnd.Math.min(8, no));
        }
        this.mBuilder.append_9(' ');
        this.appendThreeDigitInt(atom1 + 1);
        switch (mol.getAtomRadical_0(atom1)) {
          case 16:
            this.mBuilder.append_9('   1');
            break;
          case 32:
            this.mBuilder.append_9('   2');
            break;
          case 48:
            this.mBuilder.append_9('   3');
            break;
        }
        no--;
        if (++count == 8 || no == 0) {
          count = 0;
          this.mBuilder.append_9('\n');
        }
      }
    }
  }
  no = 0;
  for (atom8 = 0; atom8 < mol.getAllAtoms_0(); atom8++)
    if (mol.getAtomicNo_0(atom8) >= 129 && mol.getAtomicNo_0(atom8) <= 144 || mol.getAtomicNo_0(atom8) == 154)
      no++;
  if (no != 0) {
    count = 0;
    for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
      atomicNo = mol.getAtomicNo_0(atom);
      if (atomicNo >= 129 && atomicNo <= 144 || atomicNo == 154) {
        if (count == 0) {
          this.mBuilder.append_9('M  RGP');
          this.appendThreeDigitInt($wnd.Math.min(8, no));
        }
        this.mBuilder.append_9(' ');
        this.appendThreeDigitInt(atom + 1);
        this.mBuilder.append_9(' ');
        this.appendThreeDigitInt(atomicNo == 154?0:atomicNo >= 142?atomicNo - 141:atomicNo - 125);
        no--;
        if (++count == 8 || no == 0) {
          count = 0;
          this.mBuilder.append_9('\n');
        }
      }
    }
  }
  if (mol.isFragment_0()) {
    no = 0;
    for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++)
      if (neq(and_0(mol.getAtomQueryFeatures(atom1), 120), 0))
        no++;
    if (no != 0) {
      count = 0;
      for (atom2 = 0; atom2 < mol.getAllAtoms_0(); atom2++) {
        ringFeatures = and_0(mol.getAtomQueryFeatures(atom2), 120);
        if (neq(ringFeatures, 0)) {
          if (count == 0) {
            this.mBuilder.append_9('M  RBC');
            this.appendThreeDigitInt($wnd.Math.min(8, no));
          }
          this.mBuilder.append_9(' ');
          this.appendThreeDigitInt(atom2 + 1);
          if (eq(ringFeatures, or_0(or_0(16, 32), 64)))
            this.mBuilder.append_9('  -1');
          else if (eq(ringFeatures, 8))
            this.mBuilder.append_9('   1');
          else if (eq(ringFeatures, or_0(or_0(8, 32), 64)))
            this.mBuilder.append_9('   2');
          else if (eq(ringFeatures, or_0(or_0(8, 16), 64)))
            this.mBuilder.append_9('   3');
          else if (eq(ringFeatures, or_0(or_0(8, 16), 32)))
            this.mBuilder.append_9('   4');
          no--;
          if (++count == 8 || no == 0) {
            count = 0;
            this.mBuilder.append_9('\n');
          }
        }
      }
    }
    for (atom9 = 0; atom9 < mol.getAllAtoms_0(); atom9++) {
      atomList = mol.getAtomList_0(atom9);
      if (jsNotEquals(atomList, null)) {
        this.mBuilder.append_9('M  ALS ');
        this.appendThreeDigitInt(atom9 + 1);
        this.appendThreeDigitInt(atomList.length);
        this.mBuilder.append_9(neq(and_0(mol.getAtomQueryFeatures(atom9), 1), 0)?' T ':' F ');
        for (i = 0; i < atomList.length; i++) {
          label_0 = (carc2.$clinit_Molecule() , carc2.cAtomLabel)[atomList[i]];
          switch (jl.length__I__devirtual$_0(label_0)) {
            case 1:
              this.mBuilder.append_9(label_0 + '   ');
              break;
            case 2:
              this.mBuilder.append_9(label_0 + '  ');
              break;
            case 3:
              this.mBuilder.append_9(label_0 + ' ');
              break;
            default:this.mBuilder.append_9('   ?');
              break;
          }
        }
        this.mBuilder.append_9('\n');
      }
    }
    no = 0;
    for (atom10 = 0; atom10 < mol.getAllAtoms_0(); atom10++)
      if (neq(and_0(mol.getAtomQueryFeatures(atom10), or_0(4096, 2048)), 0))
        no++;
    if (no != 0) {
      count = 0;
      for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
        substitution = and_0(mol.getAtomQueryFeatures(atom), or_0(4096, 2048));
        if (neq(substitution, 0)) {
          if (count == 0) {
            this.mBuilder.append_9('M  SUB');
            this.appendThreeDigitInt($wnd.Math.min(8, no));
          }
          this.mBuilder.append_9(' ');
          this.appendThreeDigitInt(atom + 1);
          if (neq(and_0(substitution, 4096), 0))
            this.mBuilder.append_9('   ' + (mol.getAllConnAtoms_0(atom) + 1));
          else 
            this.mBuilder.append_9('  -2');
          no--;
          if (++count == 8 || no == 0) {
            count = 0;
            this.mBuilder.append_9('\n');
          }
        }
      }
    }
  }
  this.mBuilder.append_9('M  END' + '\n');
}
;
carc2.MolfileCreator_2 = function MolfileCreator_2(mol, allowScaling, builder){
  carc2.MolfileCreator_1.call(this, mol, allowScaling, 0, builder);
}
;
defineClass(146, 1, {1:1}, carc2.MolfileCreator, carc2.MolfileCreator_1);
_.$init_35 = function $init_35(){
}
;
_.appendTenDigitDouble = function appendTenDigitDouble(theDouble){
  var i, val;
  val = this.mDoubleFormat.format(theDouble);
  for (i = jl.length__I__devirtual$_0(val); i < 10; i++)
    this.mBuilder.append_4(32);
  this.mBuilder.append_9(val);
}
;
_.appendThreeDigitInt = function appendThreeDigitInt(data_0){
  var digitFound, i, theChar;
  if (data_0 < 0 || data_0 > 999) {
    this.mBuilder.append_9('  ?');
    return;
  }
  digitFound = false;
  for (i = 0; i < 3; i++) {
    theChar = narrow_int(data_0 / 100);
    if (theChar == 0) {
      if (i == 2 || digitFound)
        this.mBuilder.append_4(48);
      else 
        this.mBuilder.append_4(32);
    }
     else {
      this.mBuilder.append_4(narrow_char(48 + theChar));
      digitFound = true;
    }
    data_0 = 10 * (data_0 % 100);
  }
}
;
_.getMolfile = function getMolfile(){
  return this.mBuilder.toString_0();
}
;
_.writeMolfile = function writeMolfile(theWriter){
  theWriter.write_2(this.mBuilder.toString_0());
}
;
carc2.TARGET_AVBL = 1.5;
cggl.Lcom_actelion_research_chem_MolfileCreator_2_classLit = createForClass('com.actelion.research.chem', 'MolfileCreator', 146, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MolfileParser = function $clinit_MolfileParser(){
  carc2.$clinit_MolfileParser = emptyMethod;
  jl.$clinit_Object();
  carc2.ALLOWED_ATOM_LABELS = 1 | 2 | 64;
}
;
carc2.MolfileParser = function MolfileParser(){
  carc2.$clinit_MolfileParser();
  Object_0.call(this);
  this.$init_36();
  this.mMode = 0;
}
;
carc2.MolfileParser_0 = function MolfileParser_0(mode){
  carc2.$clinit_MolfileParser();
  Object_0.call(this);
  this.$init_36();
  this.mMode = mode;
}
;
defineClass(145, 1, {1:1}, carc2.MolfileParser, carc2.MolfileParser_0);
_.$init_36 = function $init_36(){
}
;
_.TRACE = function TRACE(s){
  if (carc2.debug) {
    (jl.$clinit_System() , jl.out_0).println_0(s);
  }
}
;
_.buildBond = function buildBond(atom1, atom2, bondType, stereo, topology){
  var bond, isAtomESRAnd, queryFeatures, realBondType;
  realBondType = 1;
  isAtomESRAnd = false;
  switch (stereo) {
    case 1:
      realBondType = 257;
      break;
    case 3:
      realBondType = 386;
      break;
    case 4:
      realBondType = 257;
      isAtomESRAnd = true;
      break;
    case 6:
      realBondType = 129;
      break;
    default:switch (bondType) {
        case 1:
          realBondType = 1;
          break;
        case 2:
          realBondType = 2;
          break;
        case 3:
          realBondType = 4;
          break;
        case 4:
          realBondType = 64;
          break;
        case 9:
          realBondType = 32;
          break;
      }

      break;
  }
  bond = this.mMol.addBond_1(atom1, atom2, realBondType);
  queryFeatures = 0;
  if (isAtomESRAnd) {
    this.mMol.setAtomESR_0(atom1, 1, -1);
  }
  if (bondType > 4) {
    switch (bondType) {
      case 5:
        queryFeatures |= 1 | 2;
        break;
      case 6:
        queryFeatures |= 1 | 8;
        break;
      case 7:
        queryFeatures |= 2 | 8;
        break;
      case 8:
        if (realBondType != 32)
          queryFeatures |= 31;
        break;
    }
  }
  if (topology == 1) {
    queryFeatures |= 256;
  }
  if (topology == 2) {
    queryFeatures |= 128;
  }
  if (queryFeatures != 0) {
    this.mMol.setBondQueryFeature_0(bond, queryFeatures, true);
  }
  return bond;
}
;
_.deduceMissingCharges = function deduceMissingCharges(){
  var atom, atom0, atom1, bond, charge, chargeChange, chargeToDistribute, dif, i, maxCharge, metal;
  chargeChange = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++)
    chargeChange[atom0] = -this.mMol.getAtomCharge_0(atom0);
  (new carc2.AromaticityResolver(this.mMol)).locateDelocalizedDoubleBonds_0(null, true, false);
  for (atom1 = 0; atom1 < this.mMol.getAllAtoms_0(); atom1++)
    chargeChange[atom1] += this.mMol.getAtomCharge_0(atom1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (chargeChange[atom] != 0) {
      chargeToDistribute = -chargeChange[atom];
      for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
        for (i = 0; i < 2; i++) {
          if (chargeToDistribute > 0 && this.mMol.getBondType_0(bond) == 32 && this.mMol.getBondAtom_0(1 - i, bond) == atom) {
            metal = this.mMol.getBondAtom_0(i, bond);
            if (this.mMol.isMetalAtom_0(metal)) {
              maxCharge = this.getMaxOxidationState(metal);
              charge = this.mMol.getAtomCharge_0(metal);
              if (charge < maxCharge) {
                dif = $wnd.Math.min(chargeToDistribute, maxCharge - charge);
                this.mMol.setAtomCharge_0(metal, charge + dif);
                chargeToDistribute -= dif;
              }
            }
          }
        }
      }
    }
  }
}
;
_.endOfItem = function endOfItem(line, start_0){
  var end;
  end = this.indexOfWhiteSpace(line, start_0 + 1);
  return end == -1?jl.length__I__devirtual$_0(line):end;
}
;
_.getCompactMolecule = function getCompactMolecule_4(molFile){
  this.mMol = null;
  return this.readMoleculeFromBuffer(new ji.BufferedReader(new ji.StringReader(molFile)))?this.mMol:null;
}
;
_.getHandleHydrogenMap_0 = function getHandleHydrogenMap_0(){
  return jsEquals(this.mHydrogenMap, null)?this.mMol.getHandleHydrogenMap_0():this.mHydrogenMap;
}
;
_.getMaxOxidationState = function getMaxOxidationState(metal){
  var atomicNo, os;
  atomicNo = this.mMol.getAtomicNo_0(metal);
  os = atomicNo < (carc2.$clinit_Molecule() , carc2.cCommonOxidationState).length?(carc2.$clinit_Molecule() , carc2.cCommonOxidationState)[atomicNo]:null;
  return jsEquals(os, null)?0:os[os.length - 1];
}
;
_.getUsedAtomIndex = function getUsedAtomIndex(sourceAtomIndex){
  var ui;
  ui = isNull(this.mAtomIndexMap)?null:castTo(this.mAtomIndexMap.get(new jl.Integer(sourceAtomIndex)), 32);
  return isNull(ui)?sourceAtomIndex - 1:ui.intValue();
}
;
_.getUsedBondIndex = function getUsedBondIndex(sourceBondIndex){
  var ui;
  ui = isNull(this.mBondIndexMap)?null:castTo(this.mBondIndexMap.get(new jl.Integer(sourceBondIndex)), 32);
  return isNull(ui)?sourceBondIndex - 1:ui.intValue();
}
;
_.handleValences = function handleValences(valence){
  var atom, chargeCorrection;
  if (jsNotEquals(valence, null)) {
    this.mMol.ensureHelperArrays_0(1);
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (valence[atom] != 0) {
        chargeCorrection = this.mMol.getElectronValenceCorrection_0(atom, this.mMol.getOccupiedValence_0(atom));
        if (valence[atom] == 15) {
          if (chargeCorrection >= 0)
            this.mMol.setAtomAbnormalValence_0(atom, 0);
        }
         else {
          if (valence[atom] != this.mMol.getMaxValence_0(atom))
            this.mMol.setAtomAbnormalValence_0(atom, valence[atom] - chargeCorrection);
        }
      }
    }
  }
}
;
_.indexOfNextItem = function indexOfNextItem(line, afterPreviousItem){
  var i;
  if (afterPreviousItem == -1) {
    return -1;
  }
  for (i = afterPreviousItem + 1; i < jl.length__I__devirtual$_0(line); i++) {
    if (jl.charAt_I_C__devirtual$_0(line, i) != 32 && jl.charAt_I_C__devirtual$_0(line, i) != 9) {
      return i;
    }
  }
  return -1;
}
;
_.indexOfWhiteSpace = function indexOfWhiteSpace(line, fromIndex){
  var i;
  for (i = fromIndex; i < jl.length__I__devirtual$_0(line); i++) {
    if (jl.charAt_I_C__devirtual$_0(line, i) == 32 || jl.charAt_I_C__devirtual$_0(line, i) == 9) {
      return i;
    }
  }
  return -1;
}
;
_.interpretObjectType = function interpretObjectType(line){
  if (jl.contains_Ljava_lang_CharSequence__Z__devirtual$(line, 'ATOMS=('))
    return 'ATOMS';
  if (jl.contains_Ljava_lang_CharSequence__Z__devirtual$(line, 'BONDS=('))
    return 'BONDS';
  this.TRACE('Error [readMoleculeFromBuffer]: Unknown or missing collection object type\n');
  return null;
}
;
_.interpretV3AtomLine = function interpretV3AtomLine(line){
  var atom, atomIndex, bNotList, bond, field, index_0, index1, index2, l, label_0, list, mapNo, specifier, substitutionCount, v, value_0, x_0, y_0, z_0;
  index1 = 0;
  index2 = this.endOfItem(line, index1);
  atomIndex = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  label_0 = jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2);
  v = null;
  bNotList = false;
  l = this.isV3AtomList(line);
  if (l != 0) {
    v = this.interpretV3AtomList(line);
    if (l < 0)
      bNotList = true;
    index2 = $wnd.Math.abs(l);
  }
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  x_0 = parseFloat_0(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  y_0 = parseFloat_0(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  z_0 = parseFloat_0(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  mapNo = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  atom = this.mMol.addAtom_1(x_0, -y_0, -z_0);
  if (atom + 1 != atomIndex)
    this.mapAtomIndex(atomIndex, atom);
  if (jsNotEquals(v, null)) {
    this.mMol.setAtomicNo_0(atom, 6);
    this.mMol.setAtomList_1(atom, v, bNotList);
  }
  if (mapNo != 0) {
    this.mMol.setAtomMapNo_0(atom, mapNo, false);
  }
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, 'A') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, '*')) {
    this.mMol.setAtomQueryFeature(atom, 1, true);
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, 'Q')) {
    list = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1, 15, 1);
    list[0] = 6;
    this.mMol.setAtomList_1(atom, list, true);
  }
   else {
    this.mMol.setAtomicNo_0(atom, carc2.getAtomicNoFromLabel_0(label_0, 67));
  }
  while ((index1 = this.indexOfNextItem(line, index2)) != -1) {
    index2 = this.endOfItem(line, index1);
    specifier = jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2);
    index_0 = jl.indexOf_I_I__devirtual$(specifier, 61);
    field = jl.substring_II_Ljava_lang_String___devirtual$(specifier, 0, index_0);
    value_0 = jl.parseInt_2(jl.substring_I_Ljava_lang_String___devirtual$(specifier, index_0 + 1));
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'CHG')) {
      this.mMol.setAtomCharge_0(atom, value_0);
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'RAD')) {
      switch (value_0) {
        case 1:
          this.mMol.setAtomRadical_0(atom, 16);
          break;
        case 2:
          this.mMol.setAtomRadical_0(atom, 32);
          break;
        case 3:
          this.mMol.setAtomRadical_0(atom, 48);
          break;
      }
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'CFG')) {
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'MASS')) {
      this.mMol.setAtomMass_0(atom, value_0);
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'VAL')) {
      this.mMol.setAtomAbnormalValence_0(atom, value_0 == -1?0:value_0 == 0?-1:value_0);
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'HCOUNT')) {
      switch (value_0) {
        case 0:
          break;
        case -1:
          this.mMol.setAtomQueryFeature(atom, or_0(or_0(256, 512), 1024), true);
          break;
        case 1:
          this.mMol.setAtomQueryFeature(atom, 128, true);
          break;
        case 2:
          this.mMol.setAtomQueryFeature(atom, or_0(128, 256), true);
          break;
        default:this.mMol.setAtomQueryFeature(atom, or_0(or_0(128, 256), 512), true);
          break;
      }
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'SUBST')) {
      if (value_0 == -1) {
        this.mMol.setAtomQueryFeature(atom, 2048, true);
      }
       else if (value_0 > 0) {
        substitutionCount = 0;
        for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
          if (this.mMol.getBondAtom_0(0, bond) == atom || this.mMol.getBondAtom_0(1, bond) == atom) {
            substitutionCount++;
          }
        }
        if (value_0 > substitutionCount) {
          this.mMol.setAtomQueryFeature(atom, 4096, true);
        }
      }
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'RBCNT')) {
      switch (value_0) {
        case -1:
          this.mMol.setAtomQueryFeature(atom, or_0(or_0(16, 32), 64), true);
          break;
        case 1:
          this.mMol.setAtomQueryFeature(atom, 8, true);
          break;
        case 2:
          this.mMol.setAtomQueryFeature(atom, or_0(or_0(8, 32), 64), true);
          break;
        case 3:
          this.mMol.setAtomQueryFeature(atom, or_0(or_0(16, 32), 64), true);
          break;
        case 4:
          this.mMol.setAtomQueryFeature(atom, or_0(or_0(8, 16), 32), true);
          break;
      }
    }
     else {
      this.TRACE('Warning MolfileParser: Unused version 3 atom specifier:' + field + '\n');
    }
  }
}
;
_.interpretV3AtomList = function interpretV3AtomList(line){
  var atoms, i1, i2, index_0, l, ok, res, s;
  res = null;
  i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, '[');
  i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, ']', i1);
  if (i1 >= 0 && i2 > 0) {
    atoms = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 16, 15, 1);
    s = jl.substring_II_Ljava_lang_String___devirtual$(line, i1 + 1, i2);
    index_0 = 0;
    ok = true;
    while (ok && index_0 < 16) {
      i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(s, ',');
      l = null;
      if (i1 == -1) {
        l = s;
        ok = false;
      }
       else {
        l = jl.substring_II_Ljava_lang_String___devirtual$(s, 0, i1);
        s = jl.substring_I_Ljava_lang_String___devirtual$(s, i1 + 1);
      }
      atoms[index_0++] = carc2.getAtomicNoFromLabel_0(l, 1);
    }
    res = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, index_0, 15, 1);
    jl.arraycopy(atoms, 0, res, 0, index_0);
  }
  return res;
}
;
_.interpretV3BondLine = function interpretV3BondLine(line){
  var atom1, atom2, bond, bondIndex, bondType, field, index_0, index1, index2, specifier, stereo, topology, value_0;
  index1 = 0;
  index2 = this.endOfItem(line, index1);
  bondIndex = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  bondType = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  atom1 = this.getUsedAtomIndex(jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2)));
  index1 = this.indexOfNextItem(line, index2);
  index2 = this.endOfItem(line, index1);
  atom2 = this.getUsedAtomIndex(jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2)));
  stereo = 0;
  topology = 0;
  while ((index1 = this.indexOfNextItem(line, index2)) != -1) {
    index2 = this.endOfItem(line, index1);
    specifier = jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index2);
    index_0 = jl.indexOf_I_I__devirtual$(specifier, 61);
    field = jl.substring_II_Ljava_lang_String___devirtual$(specifier, 0, index_0);
    value_0 = jl.parseInt_2(jl.substring_I_Ljava_lang_String___devirtual$(specifier, index_0 + 1));
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'CFG')) {
      switch (value_0) {
        case 1:
          stereo = 1;
          break;
        case 2:
          stereo = bondType == 2?3:4;
          break;
        case 3:
          stereo = 6;
          break;
      }
    }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(field, 'TOPO')) {
      topology = value_0;
    }
     else {
      this.TRACE('Warning MolfileParser: Unused version 3 bond specifier:' + field + '\n');
    }
  }
  bond = this.buildBond(atom1, atom2, bondType, stereo, topology);
  if (bond + 1 != bondIndex)
    this.mapBondIndex(bondIndex, bond);
}
;
_.interpretV3CollectionLine = function interpretV3CollectionLine(line){
  var bond, group, i, i0, list, objectType;
  objectType = this.interpretObjectType(line);
  if (jsNotEquals(objectType, null)) {
    list = this.interpretV3List(line, objectType);
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'MDLV30/STEABS')) {
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(objectType, 'ATOMS'))
        for (i0 = 0; i0 < list.length; i0++)
          this.mMol.setAtomESR_0(this.getUsedAtomIndex(list[i0]), 0, -1);
      else 
        for (i = 0; i < list.length; i++)
          this.mMol.setBondESR_0(this.getUsedBondIndex(list[i]), 0, -1);
    }
     else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'MDLV30/STERAC')) {
      group = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, 13, this.indexOfWhiteSpace(line, 13)));
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(objectType, 'ATOMS'))
        for (i0 = 0; i0 < list.length; i0++)
          this.mMol.setAtomESR_0(this.getUsedAtomIndex(list[i0]), 1, group - 1);
      else 
        for (i = 0; i < list.length; i++)
          this.mMol.setBondESR_0(this.getUsedBondIndex(list[i]), 1, group - 1);
    }
     else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'MDLV30/STEREL')) {
      group = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, 13, this.indexOfWhiteSpace(line, 13)));
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(objectType, 'ATOMS'))
        for (i0 = 0; i0 < list.length; i0++)
          this.mMol.setAtomESR_0(this.getUsedAtomIndex(list[i0]), 2, group - 1);
      else 
        for (i = 0; i < list.length; i++)
          this.mMol.setBondESR_0(this.getUsedBondIndex(list[i]), 2, group - 1);
    }
     else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'MDLV30/HILITE')) {
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(objectType, 'ATOMS')) {
        for (i = 0; i < list.length; i++)
          this.mMol.setAtomColor_0(this.getUsedAtomIndex(list[i]), 448);
      }
       else {
        for (i = 0; i < list.length; i++) {
          bond = this.getUsedBondIndex(list[i]);
          this.mMol.setAtomColor_0(this.mMol.getBondAtom_0(0, bond), 448);
          this.mMol.setAtomColor_0(this.mMol.getBondAtom_0(1, bond), 448);
        }
      }
    }
     else {
      this.TRACE('Error [readMoleculeFromBuffer]: Unknown version 3 collection type\n');
    }
  }
}
;
_.interpretV3CountLine = function interpretV3CountLine(line){
  var index1, index2, natoms, nbonds;
  if (isNull(this.mMol)) {
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'COUNTS')) {
      index1 = 7;
      index2 = this.indexOfNextItem(line, this.indexOfWhiteSpace(line, 7));
      natoms = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, this.indexOfWhiteSpace(line, index1)));
      nbonds = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index2, this.indexOfWhiteSpace(line, index2)));
      this.mMol = new carc2.StereoMolecule_0(natoms, nbonds);
    }
  }
}
;
_.interpretV3List = function interpretV3List(line, type_0){
  var count, i, index_0, index1, index2, list;
  index1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, type_0 + '=(') + jl.length__I__devirtual$_0(type_0) + 2;
  index2 = jl.indexOf_II_I__devirtual$(line, 41, index1);
  index_0 = this.indexOfWhiteSpace(line, index1);
  count = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index_0));
  list = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
  for (i = 0; i < count; i++) {
    index1 = this.indexOfNextItem(line, index_0);
    index_0 = this.indexOfWhiteSpace(line, index1);
    if (index_0 == -1 || index_0 > index2) {
      index_0 = index2;
    }
    list[i] = jl.parseInt_2(jl.substring_II_Ljava_lang_String___devirtual$(line, index1, index_0));
  }
  return list;
}
;
_.introduceObviousMetalBonds = function introduceObviousMetalBonds(){
  var atom, bond, bond0, bond1, i, i0, metalAtom, occupiedValence, order;
  occupiedValence = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (bond0 = 0; bond0 < this.mMol.getAllBonds_0(); bond0++)
    if (this.mMol.getBondType_0(bond0) == 64)
      for (i0 = 0; i0 < 2; i0++)
        occupiedValence[this.mMol.getBondAtom_0(i0, bond0)] = 1;
  for (bond1 = 0; bond1 < this.mMol.getAllBonds_0(); bond1++) {
    order = this.mMol.getBondOrder_0(bond1);
    for (i = 0; i < 2; i++)
      occupiedValence[this.mMol.getBondAtom_0(i, bond1)] += order;
  }
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    if (this.mMol.getBondOrder_0(bond) == 1) {
      for (i = 0; i < 2; i++) {
        metalAtom = this.mMol.getBondAtom_0(1 - i, bond);
        if (this.mMol.isMetalAtom_0(metalAtom)) {
          atom = this.mMol.getBondAtom_0(i, bond);
          if (this.mMol.isElectronegative_0(atom) && occupiedValence[atom] > this.mMol.getMaxValence_0(atom)) {
            this.mMol.setBondType_0(bond, 32);
            continue;
          }
        }
      }
    }
  }
}
;
_.isV3AtomList = function isV3AtomList(line){
  var i1, i2;
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(line, '[') >= 0) {
    i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, ' NOT[');
    i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, ']', i1);
    if (i1 >= 0 && i2 > 0) {
      return -(i2 + 1);
    }
     else {
      i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, ' [');
      i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, ']', i1);
      if (i1 >= 0 && i2 > 0) {
        return i2 + 1;
      }
    }
    i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, " 'NOT[");
    i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, "]'", i1);
    if (i1 >= 0 && i2 > 0) {
      return -(i2 + 2);
    }
     else {
      i1 = jl.indexOf_Ljava_lang_String__I__devirtual$(line, " '[");
      i2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, "]'", i1);
      if (i1 >= 0 && i2 > 0) {
        return i2 + 2;
      }
    }
    (jl.$clinit_System() , jl.err).println_0('Warning invalid atom list in line: ' + line);
  }
  return 0;
}
;
_.mapAtomIndex = function mapAtomIndex(sourceAtomIndex, usedAtomIndex){
  if (isNull(this.mAtomIndexMap))
    this.mAtomIndexMap = new ju.TreeMap;
  this.mAtomIndexMap.put(new jl.Integer(sourceAtomIndex), new jl.Integer(usedAtomIndex));
}
;
_.mapBondIndex = function mapBondIndex(sourceBondIndex, usedBondIndex){
  if (isNull(this.mBondIndexMap))
    this.mBondIndexMap = new ju.TreeMap;
  this.mBondIndexMap.put(new jl.Integer(sourceBondIndex), new jl.Integer(usedBondIndex));
}
;
_.parse_4 = function parse_4(m, rd){
  this.mMol = m;
  return this.readMoleculeFromBuffer(rd);
}
;
_.parse_5 = function parse_5(mol, molFile){
  return this.parse_4(mol, new ji.BufferedReader(new ji.StringReader(molFile)));
}
;
_.parse_6 = function parse_6(mol, molFile){
  return this.parse_5(mol, molFile.toString_0());
}
;
_.parseIntOrSpaces = function parseIntOrSpaces(s){
  return jl.length__I__devirtual$_0(s) == 0?0:jl.parseInt_2(s);
}
;
_.readMoleculeFromBuffer = function readMoleculeFromBuffer(reader){
  var aaa, atom, atom1, atom2, atomicNo, bNotList, bond, bondType, charge, chargeDif, e, hCount, i, i0, i1, j, k, label_0, line, list, mapNo, mass, massDif, name_0, natoms, nbonds, nlists, no, radical, res, ringState, rno, stereo, substitution, substitutionCount, sym, topology, v, valence, vvv, x_0, y_0, z_0;
  valence = null;
  try {
    this.mHydrogenMap = null;
    if (isNotNull(this.mMol)) {
      this.mMol.clear_0();
      this.mMol.setFragment_0(false);
    }
    name_0 = line = reader.readLine();
    if (jsEquals(null, name_0)) {
      this.TRACE('readMoleculeFromBuffer: No Header Line\n');
      return false;
    }
    if (jsEquals(null, line = reader.readLine())) {
      this.TRACE('Error [readMoleculeFromBuffer]: No Program Line\n');
      return false;
    }
    if (jsEquals(null, line = reader.readLine())) {
      this.TRACE('Error [readMoleculeFromBuffer]: No Comment Line\n');
      return false;
    }
    this.mTreatAnyAsMetalBond = jl.contains_Ljava_lang_CharSequence__Z__devirtual$(line, "From CSD data. Using bond type 'Any'");
    this.mDeduceMissingCharges = jl.contains_Ljava_lang_CharSequence__Z__devirtual$(line, 'From CSD data.');
    if (jsEquals(null, line = reader.readLine())) {
      this.TRACE('Error [readMoleculeFromBuffer]: No Counts Line\n');
      return false;
    }
    this.mIsV3000 = false;
    this.mChiralFlag = this.mAssumeChiralTrue;
    try {
      natoms = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 0, 3)));
      nbonds = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 3, 6)));
      nlists = this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
      this.mChiralFlag = this.mChiralFlag | 1 == this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 12, 15)));
      this.mIsV3000 = jl.length__I__devirtual$_0(line) >= 39 && jl.startsWith_Ljava_lang_String_I_Z__devirtual$(line, 'V3000', 34);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        this.TRACE('Warning [readMoleculeFromBuffer]: Unable to interpret counts line\n');
        return false;
      }
       else 
        throw toJs($e0);
    }
    if (this.mIsV3000) {
      res = this.readMoleculeV3FromBuffer(reader);
      this.mMol.setName_0(name_0);
      return res;
    }
    if (isNull(this.mMol)) {
      this.mMol = new carc2.StereoMolecule_0(natoms, nbonds);
    }
    this.mMol.setName_0(name_0);
    if (!this.mChiralFlag) {
      this.mMol.setToRacemate_0();
    }
    if (0 == natoms) {
      while (jsNotEquals(line, null) && !(jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, 'M  END') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, '$$$$') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(jl.substring_I_Ljava_lang_String___devirtual$(line, 1), '$'))) {
        line = reader.readLine();
      }
      return true;
    }
    for (i0 = 0; i0 < natoms; i0++) {
      if (jsEquals(null, line = reader.readLine())) {
        this.TRACE('Error [readMoleculeFromBuffer]: No Atom Line\n');
        return false;
      }
      x_0 = parseFloat_0(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 0, 10)));
      y_0 = parseFloat_0(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 10, 20)));
      z_0 = parseFloat_0(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 20, 30)));
      atom = this.mMol.addAtom_1(x_0, -y_0, -z_0);
      label_0 = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 31, 34));
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, 'A') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, '*')) {
        this.mMol.setAtomQueryFeature(atom, 1, true);
      }
       else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(label_0, 'Q')) {
        list = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1, 15, 1);
        list[0] = 6;
        this.mMol.setAtomList_1(atom, list, true);
      }
       else {
        atomicNo = carc2.getAtomicNoFromLabel_0(label_0, 67);
        this.mMol.setAtomicNo_0(atom, atomicNo);
      }
      massDif = this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 34, 36)));
      if (massDif != 0) {
        this.mMol.setAtomMass_0(atom, (carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.mMol.getAtomicNo_0(atom)] + massDif);
      }
      chargeDif = this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 36, 39)));
      if (chargeDif != 0) {
        if (chargeDif == 4)
          this.mMol.setAtomRadical_0(atom, 32);
        else 
          this.mMol.setAtomCharge_0(atom, 4 - chargeDif);
      }
      mapNo = jl.length__I__devirtual$_0(line) < 63?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 60, 63)));
      this.mMol.setAtomMapNo_0(atom, mapNo, false);
      hCount = jl.length__I__devirtual$_0(line) < 45?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 42, 45)));
      switch (hCount) {
        case 0:
          break;
        case 1:
          this.mMol.setAtomQueryFeature(atom, or_0(256, 512), true);
          break;
        case 2:
          this.mMol.setAtomQueryFeature(atom, 128, true);
          break;
        case 3:
          this.mMol.setAtomQueryFeature(atom, or_0(128, 256), true);
          break;
        default:this.mMol.setAtomQueryFeature(atom, or_0(or_0(128, 256), 512), true);
          break;
      }
      if (jl.length__I__devirtual$_0(line) >= 48 && jl.charAt_I_C__devirtual$_0(line, 47) == 49) {
        this.mMol.setAtomQueryFeature(atom, 8192, true);
      }
      v = jl.length__I__devirtual$_0(line) < 51?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 48, 51)));
      if (v != 0) {
        if (jsEquals(valence, null))
          valence = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, natoms, 15, 1);
        valence[atom] = v;
      }
    }
    for (i1 = 0; i1 < nbonds; i1++) {
      if (jsEquals(null, line = reader.readLine())) {
        this.TRACE('Error [readMoleculeFromBuffer]:No Bond Line\n');
        return false;
      }
      atom1 = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 0, 3))) - 1;
      atom2 = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 3, 6))) - 1;
      bondType = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
      stereo = jl.length__I__devirtual$_0(line) < 12?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 9, 12)));
      topology = jl.length__I__devirtual$_0(line) < 18?0:this.parseIntOrSpaces(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 15, 18)));
      if (bondType == 8 && (this.mTreatAnyAsMetalBond || this.mMol.isMetalAtom_0(atom1) || this.mMol.isMetalAtom_0(atom2)))
        bondType = 9;
      this.buildBond(atom1, atom2, bondType, stereo, topology);
    }
    for (i = 0; i < nlists; i++) {
      if (jsEquals(null, line = reader.readLine())) {
        this.TRACE('Error [readMoleculeFromBuffer]: No List Line\n');
        return false;
      }
    }
    if (jsEquals(null, line = reader.readLine())) {
      this.TRACE('Error ReadMoleculeFromBuffer Missing M END or $$$$\n');
      if ((this.mMode & 1) != 0)
        this.mHydrogenMap = this.mMol.getHandleHydrogenMap_0();
      this.handleValences(valence);
      if (!this.mChiralFlag)
        this.mMol.ensureHelperArrays_0(15);
      return true;
    }
    while (jsNotEquals(line, null) && !(jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, 'M  END') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, '$$$$'))) {
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  CHG')) {
        j = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            charge = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            this.mMol.setAtomCharge_0(atom, charge);
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  ISO')) {
        j = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            mass = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            this.mMol.setAtomMass_0(atom, mass);
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  RAD')) {
        j = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            radical = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            switch (radical) {
              case 1:
                this.mMol.setAtomRadical_0(atom, 16);
                break;
              case 2:
                this.mMol.setAtomRadical_0(atom, 32);
                break;
              case 3:
                this.mMol.setAtomRadical_0(atom, 48);
                break;
            }
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  RBC') || jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  RBD')) {
        j = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            ringState = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            switch (ringState) {
              case -1:
                this.mMol.setAtomQueryFeature(atom, or_0(or_0(16, 32), 64), true);
                break;
              case 1:
                this.mMol.setAtomQueryFeature(atom, 8, true);
                break;
              case 2:
                this.mMol.setAtomQueryFeature(atom, or_0(or_0(8, 32), 64), true);
                break;
              case 3:
                this.mMol.setAtomQueryFeature(atom, or_0(or_0(16, 32), 64), true);
                break;
              case 4:
                this.mMol.setAtomQueryFeature(atom, or_0(or_0(8, 16), 32), true);
                break;
            }
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  ALS')) {
        atom = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 7, 10))) - 1;
        if (atom >= 0) {
          no = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 10, 13)));
          bNotList = jl.charAt_I_C__devirtual$_0(line, 14) == 84;
          v = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, no, 15, 1);
          aaa = 16;
          for (k = 0; k < no; k++ , aaa += 4) {
            sym = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 4));
            v[k] = carc2.getAtomicNoFromLabel_0(sym, 1);
          }
          this.mMol.setAtomicNo_0(atom, 6);
          this.mMol.setAtomList_1(atom, v, bNotList);
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  SUB')) {
        j = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            substitution = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            if (substitution == -2) {
              this.mMol.setAtomQueryFeature(atom, 2048, true);
            }
             else if (substitution > 0) {
              substitutionCount = 0;
              for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
                if (this.mMol.getBondAtom_0(0, bond) == atom || this.mMol.getBondAtom_0(1, bond) == atom) {
                  substitutionCount++;
                }
              }
              if (substitution > substitutionCount) {
                this.mMol.setAtomQueryFeature(atom, 4096, true);
              }
            }
          }
        }
      }
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  RGP')) {
        j = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 6, 9)));
        if (j > 0) {
          aaa = 10;
          vvv = 14;
          for (k = 1; k <= j; k++ , aaa += 8 , vvv += 8) {
            atom = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, aaa, aaa + 3))) - 1;
            rno = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, vvv, vvv + 3)));
            if (rno >= 1 && rno <= 20) {
              this.mMol.setAtomicNo_0(atom, carc2.getAtomicNoFromLabel_0('R' + rno, 2));
            }
          }
        }
      }
      line = reader.readLine();
    }
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 14)) {
      e = $e1;
      e.printStackTrace();
      (jl.$clinit_System() , jl.err).println_0('error reading molfile ' + e);
      return false;
    }
     else 
      throw toJs($e1);
  }
  if (this.mDeduceMissingCharges) {
    this.introduceObviousMetalBonds();
    this.deduceMissingCharges();
  }
  if ((this.mMode & 1) != 0)
    this.mHydrogenMap = this.mMol.getHandleHydrogenMap_0();
  this.handleValences(valence);
  this.mMol.ensureHelperArrays_0(15);
  return true;
}
;
_.readMoleculeV3FromBuffer = function readMoleculeV3FromBuffer(reader){
  var MODE_CTAB, MODE_CTAB_ATOM, MODE_CTAB_BOND, MODE_CTAB_COLLECTION, cont, line, mode, modeString;
  MODE_CTAB = 1;
  MODE_CTAB_ATOM = 2;
  MODE_CTAB_BOND = 3;
  MODE_CTAB_COLLECTION = 4;
  if (isNotNull(this.mAtomIndexMap))
    this.mAtomIndexMap.clear();
  if (isNotNull(this.mBondIndexMap))
    this.mBondIndexMap.clear();
  mode = 0;
  line = reader.readLine();
  while (jsNotEquals(line, null) && jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  V30 ')) {
    line = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(line, 7));
    while (jl.endsWith_Ljava_lang_String__Z__devirtual$(line, '-')) {
      cont = reader.readLine();
      if (!jl.startsWith_Ljava_lang_String__Z__devirtual$(cont, 'M  V30 ')) {
        return false;
      }
      line = jl.trim__Ljava_lang_String___devirtual$(jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(line, 0, jl.length__I__devirtual$_0(line) - 1), jl.substring_I_Ljava_lang_String___devirtual$(cont, 7)));
    }
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'BEGIN')) {
      modeString = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(line, 6));
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(modeString, 'CTAB')) {
        mode = 1;
      }
       else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(modeString, 'ATOM')) {
        mode = 2;
      }
       else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(modeString, 'BOND')) {
        mode = 3;
      }
       else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(modeString, 'COLLECTION')) {
        mode = 4;
      }
       else {
        this.TRACE('Error MolfileParser: Unsupported version 3 block\n');
        return false;
      }
    }
     else if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'END')) {
      mode = 0;
    }
     else if (mode == 1) {
      this.interpretV3CountLine(line);
    }
     else if (mode == 2) {
      this.interpretV3AtomLine(line);
    }
     else if (mode == 3) {
      this.interpretV3BondLine(line);
    }
     else if (mode == 4) {
      this.interpretV3CollectionLine(line);
    }
     else {
      this.TRACE('Error MolfileParser: Unexpected version 3 line\n');
      return false;
    }
    line = reader.readLine();
  }
  while (jsNotEquals(line, null) && !(jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  END') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(line, '$$$$'))) {
    line = reader.readLine();
  }
  return true;
}
;
_.mAssumeChiralTrue = false;
_.mChiralFlag = false;
_.mDeduceMissingCharges = false;
_.mIsV3000 = false;
_.mMode = 0;
_.mTreatAnyAsMetalBond = false;
carc2.ALLOWED_ATOM_LABELS = 0;
carc2.ALLOWED_ATOM_LABELS_IN_LIST = 1;
carc2.MODE_KEEP_HYDROGEN_MAP = 1;
carc2.debug = false;
cggl.Lcom_actelion_research_chem_MolfileParser_2_classLit = createForClass('com.actelion.research.chem', 'MolfileParser', 145, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_MolfileV3Creator = function $clinit_MolfileV3Creator(){
  carc2.$clinit_MolfileV3Creator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.MolfileV3Creator = function MolfileV3Creator(){
  Object_0.call(this);
  this.$init_37();
  this.mMolfile = new jl.StringBuilder_0(32768);
}
;
carc2.MolfileV3Creator_0 = function MolfileV3Creator_0(mol){
  carc2.$clinit_MolfileV3Creator();
  carc2.MolfileV3Creator_1.call(this, mol, true);
}
;
carc2.MolfileV3Creator_1 = function MolfileV3Creator_1(mol, allowScaling){
  carc2.MolfileV3Creator_2.call(this, mol, allowScaling, 0, new jl.StringBuilder_0(32768));
}
;
carc2.MolfileV3Creator_2 = function MolfileV3Creator_2(mol, allowScaling, scalingFactor, builder){
  var hasCoordinates, name_0, nl;
  Object_0.call(this);
  this.$init_37();
  mol.ensureHelperArrays_0(15);
  nl = '\n';
  this.mMolfile = isNull(builder)?new jl.StringBuilder:builder;
  name_0 = jsNotEquals(mol.getName_0(), null)?mol.getName_0():'';
  this.mMolfile.append_9(name_0 + '\n');
  this.mMolfile.append_9('Actelion Java MolfileCreator 2.0' + '\n' + '\n');
  this.mMolfile.append_9('  0  0  0  0  0  0              0 V3000' + '\n');
  this.mScalingFactor = 1;
  hasCoordinates = carc2.hasCoordinates_0(mol);
  if (hasCoordinates) {
    if (scalingFactor != 0)
      this.mScalingFactor = scalingFactor;
    else if (allowScaling)
      this.mScalingFactor = carc2.calculateScalingFactor(mol);
  }
  this.writeBody(mol, hasCoordinates);
  this.mMolfile.append_9('M  END' + '\n');
}
;
carc2.calculateScalingFactor = function calculateScalingFactor(mol){
  var atom1, atom2, avbl, distance, dx, dy, dz, minDistance, scalingFactor;
  scalingFactor = 1;
  avbl = mol.getAverageBondLength_0();
  if (avbl != 0) {
    if (avbl < 1 || avbl > 3)
      scalingFactor = 1.5 / avbl;
  }
   else {
    minDistance = 3.4028234663852886E38;
    for (atom1 = 1; atom1 < mol.getAllAtoms_0(); atom1++) {
      for (atom2 = 0; atom2 < atom1; atom2++) {
        dx = mol.getAtomX_0(atom2) - mol.getAtomX_0(atom1);
        dy = mol.getAtomY_0(atom2) - mol.getAtomY_0(atom1);
        dz = mol.getAtomZ_0(atom2) - mol.getAtomZ_0(atom1);
        distance = dx * dx + dy * dy + dz * dz;
        if (minDistance > distance)
          minDistance = distance;
      }
    }
    scalingFactor = 2 * 1.5 / $wnd.Math.max(1.5 / 2, minDistance);
  }
  return scalingFactor;
}
;
carc2.hasCoordinates_0 = function hasCoordinates_0(mol){
  var atom;
  if (mol.getAllAtoms_0() == 1)
    return true;
  for (atom = 1; atom < mol.getAllAtoms_0(); atom++) {
    if (mol.getAtomX_0(atom) != mol.getAtomX_0(0) || mol.getAtomY_0(atom) != mol.getAtomY_0(0) || mol.getAtomZ_0(atom) != mol.getAtomZ_0(0)) {
      return true;
    }
  }
  return false;
}
;
carc2.writeCTAB = function writeCTAB(mol, scalingFactor){
  carc2.$clinit_MolfileV3Creator();
  var mf;
  mf = new carc2.MolfileV3Creator;
  mf.mScalingFactor = scalingFactor;
  mol.ensureHelperArrays_0(15);
  mf.writeBody(mol, true);
  return mf.getMolfile();
}
;
defineClass(164, 1, {1:1}, carc2.MolfileV3Creator, carc2.MolfileV3Creator_0);
_.$init_37 = function $init_37(){
  this.mScalingFactor = 1;
}
;
_.getMolfile = function getMolfile_0(){
  return this.mMolfile.toString_0();
}
;
_.writeBody = function writeBody(mol, hasCoordinates){
  var absAtomsCount, absBondsCount, andAtomsCount, andBondsCount, atom, atom0, atom1, atomList, atomicNo, bond, bond0, bond1, bondType, group, hydrogenFlags, i, label_0, nl, notlist, orAtomsCount, orBondsCount, order, paritiesFound, ringFeatures, ringState, stereo, substitution, topology, type_0, valence;
  nl = '\n';
  this.mMolfile.append_9('M  V30 BEGIN CTAB' + '\n');
  this.mMolfile.append_9('M  V30 COUNTS ' + mol.getAllAtoms_0() + ' ' + mol.getAllBonds_0() + ' 0 0 0' + '\n');
  this.mMolfile.append_9('M  V30 BEGIN ATOM' + '\n');
  for (atom0 = 0; atom0 < mol.getAllAtoms_0(); atom0++) {
    this.mMolfile.append_9('M  V30 ' + (atom0 + 1));
    if (jsNotEquals(mol.getAtomList_0(atom0), null)) {
      atomList = mol.getAtomList_0(atom0);
      notlist = neq(and_0(mol.getAtomQueryFeatures(atom0), 1), 0);
      this.mMolfile.append_9(notlist?' NOT[':' [');
      for (i = 0; i < atomList.length; i++) {
        if (i > 0) {
          this.mMolfile.append_9(',');
        }
        label_0 = (carc2.$clinit_Molecule() , carc2.cAtomLabel)[atomList[i]];
        switch (jl.length__I__devirtual$_0(label_0)) {
          case 1:
            this.mMolfile.append_9(label_0);
            break;
          case 2:
            this.mMolfile.append_9(label_0);
            break;
          case 3:
            this.mMolfile.append_9(label_0);
            break;
          default:this.mMolfile.append_9('?');
            break;
        }
      }
      this.mMolfile.append_9(']');
    }
     else if (neq(and_0(mol.getAtomQueryFeatures(atom0), 1), 0)) {
      this.mMolfile.append_9(' A');
    }
     else if (mol.getAtomicNo_0(atom0) >= 129 && mol.getAtomicNo_0(atom0) <= 144 || mol.getAtomicNo_0(atom0) == 154) {
      this.mMolfile.append_9(' R#');
    }
     else {
      this.mMolfile.append_9(' ' + mol.getAtomLabel_0(atom0));
    }
    if (hasCoordinates) {
      this.mMolfile.append_9(' ' + round_int(10000 * this.mScalingFactor * mol.getAtomX_0(atom0)) / 10000);
      this.mMolfile.append_9(' ' + round_int(10000 * this.mScalingFactor * -mol.getAtomY_0(atom0)) / 10000);
      this.mMolfile.append_9(' ' + round_int(10000 * this.mScalingFactor * -mol.getAtomZ_0(atom0)) / 10000);
    }
     else {
      this.mMolfile.append_9(' 0 0 0');
    }
    this.mMolfile.append_9(' ' + mol.getAtomMapNo_0(atom0));
    if (mol.getAtomCharge_0(atom0) != 0) {
      this.mMolfile.append_9(' CHG=' + mol.getAtomCharge_0(atom0));
    }
    if (mol.getAtomRadical_0(atom0) != 0) {
      this.mMolfile.append_9(' RAD=');
      switch (mol.getAtomRadical_0(atom0)) {
        case 16:
          this.mMolfile.append_9('1');
          break;
        case 32:
          this.mMolfile.append_9('2');
          break;
        case 48:
          this.mMolfile.append_9('3');
          break;
      }
    }
    if (mol.getAtomParity_0(atom0) == 1 || mol.getAtomParity_0(atom0) == 2) {
      this.mMolfile.append_9(' CFG=');
      if (mol.getAtomParity_0(atom0) == 1) {
        this.mMolfile.append_9('1');
      }
       else {
        this.mMolfile.append_9('2');
      }
    }
    if (mol.getAtomMass_0(atom0) != 0) {
      this.mMolfile.append_9(' MASS=' + mol.getAtomMass_0(atom0));
    }
    valence = mol.getAtomAbnormalValence_0(atom0);
    if (valence != -1) {
      this.mMolfile.append_9(' VAL=' + (valence == 0?'-1':jl.valueOf_26(valence)));
    }
    atomicNo = mol.getAtomicNo_0(atom0);
    if (atomicNo >= 129 && atomicNo <= 144 || atomicNo == 154) {
      this.mMolfile.append_9(' RGROUPS=(1 ' + (atomicNo == 154?0:atomicNo >= 142?atomicNo - 141:atomicNo - 125) + ')');
    }
    hydrogenFlags = and_0(1920, mol.getAtomQueryFeatures(atom0));
    if (eq(hydrogenFlags, or_0(128, 256))) {
      this.mMolfile.append_9(' HCOUNT=2');
    }
     else if (eq(hydrogenFlags, 128)) {
      this.mMolfile.append_9(' HCOUNT=1');
    }
     else if (eq(hydrogenFlags, or_0(or_0(256, 512), 1024))) {
      this.mMolfile.append_9(' HCOUNT=-1');
    }
     else if (eq(hydrogenFlags, or_0(or_0(128, 512), 1024))) {
      this.mMolfile.append_9(' HCOUNT=1');
    }
    substitution = and_0(mol.getAtomQueryFeatures(atom0), or_0(4096, 2048));
    if (neq(substitution, 0)) {
      if (neq(and_0(substitution, 4096), 0)) {
        this.mMolfile.append_9(' SUBST=' + (mol.getAllConnAtoms_0(atom0) + 1));
      }
       else {
        this.mMolfile.append_9(' SUBST=-1');
      }
    }
    ringFeatures = and_0(mol.getAtomQueryFeatures(atom0), 120);
    if (neq(ringFeatures, 0)) {
      if (eq(ringFeatures, or_0(or_0(16, 32), 64)))
        this.mMolfile.append_9(' RBCNT=-1');
      else if (eq(ringFeatures, 8))
        this.mMolfile.append_9(' RBCNT=2');
      else if (eq(ringFeatures, or_0(or_0(8, 32), 64)))
        this.mMolfile.append_9(' RBCNT=2');
      else if (eq(ringFeatures, or_0(or_0(8, 16), 64)))
        this.mMolfile.append_9(' RBCNT=3');
      else if (eq(ringFeatures, or_0(or_0(8, 16), 32)))
        this.mMolfile.append_9(' RBCNT=4');
    }
    this.mMolfile.append_9('\n');
  }
  this.mMolfile.append_9('M  V30 END ATOM' + '\n');
  this.mMolfile.append_9('M  V30 BEGIN BOND' + '\n');
  for (bond0 = 0; bond0 < mol.getAllBonds_0(); bond0++) {
    this.mMolfile.append_9('M  V30 ' + (bond0 + 1));
    switch (mol.getBondType_0(bond0)) {
      case 1:
        order = 1;
        stereo = 0;
        break;
      case 2:
        order = 2;
        stereo = 0;
        break;
      case 4:
        order = 3;
        stereo = 0;
        break;
      case 129:
        order = 1;
        stereo = 3;
        break;
      case 257:
        order = 1;
        stereo = 1;
        break;
      case 386:
        order = 2;
        stereo = 2;
        break;
      case 64:
        order = 4;
        stereo = 0;
        break;
      case 32:
        order = 9;
        stereo = 0;
        break;
      default:order = 1;
        stereo = 0;
        break;
    }
    bondType = mol.getBondQueryFeatures_0(bond0) & 31;
    if (bondType != 0) {
      if (bondType == 8) {
        order = 4;
      }
       else if (bondType == (1 | 2)) {
        order = 5;
      }
       else if (bondType == (1 | 8)) {
        order = 6;
      }
       else if (bondType == (2 | 8)) {
        order = 7;
      }
       else {
        order = 8;
      }
    }
    this.mMolfile.append_9(' ' + order + ' ' + (mol.getBondAtom_0(0, bond0) + 1) + ' ' + (mol.getBondAtom_0(1, bond0) + 1));
    if (stereo != 0) {
      this.mMolfile.append_9(' CFG=' + stereo);
    }
    ringState = mol.getBondQueryFeatures_0(bond0) & 384;
    topology = ringState == 0?0:ringState == 256?1:2;
    if (topology != 0) {
      this.mMolfile.append_9(' TOPO=' + topology);
    }
    this.mMolfile.append_9('\n');
  }
  this.mMolfile.append_9('M  V30 END BOND' + '\n');
  paritiesFound = false;
  absAtomsCount = 0;
  orAtomsCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 32, 15, 1);
  andAtomsCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 32, 15, 1);
  for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++) {
    if (mol.getAtomParity_0(atom1) == 1 || mol.getAtomParity_0(atom1) == 2) {
      paritiesFound = true;
      type_0 = mol.getAtomESRType_0(atom1);
      if (type_0 == 1) {
        andAtomsCount[mol.getAtomESRGroup_0(atom1)]++;
      }
       else if (type_0 == 2) {
        orAtomsCount[mol.getAtomESRGroup_0(atom1)]++;
      }
       else {
        absAtomsCount++;
      }
    }
  }
  absBondsCount = 0;
  orBondsCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 32, 15, 1);
  andBondsCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 32, 15, 1);
  for (bond1 = 0; bond1 < mol.getBonds_0(); bond1++) {
    if (mol.getBondOrder_0(bond1) != 2 && (mol.getBondParity_0(bond1) == 1 || mol.getBondParity_0(bond1) == 2)) {
      paritiesFound = true;
      type_0 = mol.getBondESRType_0(bond1);
      if (type_0 == 1) {
        andBondsCount[mol.getBondESRGroup_0(bond1)]++;
      }
       else if (type_0 == 2) {
        orBondsCount[mol.getBondESRGroup_0(bond1)]++;
      }
       else {
        absBondsCount++;
      }
    }
  }
  if (paritiesFound) {
    this.mMolfile.append_9('M  V30 BEGIN COLLECTION' + '\n');
    if (absAtomsCount != 0) {
      this.mMolfile.append_9('M  V30 MDLV30/STEABS ATOMS=(' + absAtomsCount);
      for (atom = 0; atom < mol.getAtoms_0(); atom++) {
        if ((mol.getAtomParity_0(atom) == 1 || mol.getAtomParity_0(atom) == 2) && mol.getAtomESRType_0(atom) == 0) {
          this.mMolfile.append_9(' ' + (atom + 1));
        }
      }
      this.mMolfile.append_9(')' + '\n');
    }
    if (absBondsCount != 0) {
      this.mMolfile.append_9('M  V30 MDLV30/STEABS BONDS=(' + absBondsCount);
      for (bond = 0; bond < mol.getBonds_0(); bond++) {
        if (mol.getBondOrder_0(bond) != 2 && (mol.getBondParity_0(bond) == 1 || mol.getBondParity_0(bond) == 2) && mol.getBondESRType_0(bond) == 0) {
          this.mMolfile.append_9(' ' + (bond + 1));
        }
      }
      this.mMolfile.append_9(')' + '\n');
    }
    for (group = 0; group < 32; group++) {
      if (orAtomsCount[group] != 0) {
        this.mMolfile.append_9('M  V30 MDLV30/STEREL' + (group + 1) + ' ATOMS=(' + orAtomsCount[group]);
        for (atom = 0; atom < mol.getAtoms_0(); atom++) {
          if ((mol.getAtomParity_0(atom) == 1 || mol.getAtomParity_0(atom) == 2) && mol.getAtomESRType_0(atom) == 2 && mol.getAtomESRGroup_0(atom) == group) {
            this.mMolfile.append_9(' ' + (atom + 1));
          }
        }
        this.mMolfile.append_9(')' + '\n');
      }
      if (andAtomsCount[group] != 0) {
        this.mMolfile.append_9('M  V30 MDLV30/STERAC' + (group + 1) + ' ATOMS=(' + andAtomsCount[group]);
        for (atom = 0; atom < mol.getAtoms_0(); atom++) {
          if ((mol.getAtomParity_0(atom) == 1 || mol.getAtomParity_0(atom) == 2) && mol.getAtomESRType_0(atom) == 1 && mol.getAtomESRGroup_0(atom) == group) {
            this.mMolfile.append_9(' ' + (atom + 1));
          }
        }
        this.mMolfile.append_9(')' + '\n');
      }
      if (orBondsCount[group] != 0) {
        this.mMolfile.append_9('M  V30 MDLV30/STEREL' + (group + 1) + ' BONDS=(' + orBondsCount[group]);
        for (bond = 0; bond < mol.getBonds_0(); bond++) {
          if (mol.getBondOrder_0(bond) != 2 && (mol.getBondParity_0(bond) == 1 || mol.getBondParity_0(bond) == 2) && mol.getBondESRType_0(bond) == 2 && mol.getBondESRGroup_0(bond) == group) {
            this.mMolfile.append_9(' ' + (bond + 1));
          }
        }
        this.mMolfile.append_9(')' + '\n');
      }
      if (andBondsCount[group] != 0) {
        this.mMolfile.append_9('M  V30 MDLV30/STERAC' + (group + 1) + ' BONDS=(' + andBondsCount[group]);
        for (bond = 0; bond < mol.getBonds_0(); bond++) {
          if (mol.getBondOrder_0(bond) != 2 && (mol.getBondParity_0(bond) == 1 || mol.getBondParity_0(bond) == 2) && mol.getBondESRType_0(bond) == 1 && mol.getBondESRGroup_0(bond) == group) {
            this.mMolfile.append_9(' ' + (bond + 1));
          }
        }
        this.mMolfile.append_9(')' + '\n');
      }
    }
    this.mMolfile.append_9('M  V30 END COLLECTION' + '\n');
  }
  this.mMolfile.append_9('M  V30 END CTAB' + '\n');
}
;
_.writeMolfile = function writeMolfile_0(theWriter){
  theWriter.write_2(this.mMolfile.toString_0());
}
;
_.mScalingFactor = 0;
carc2.PRECISION_FACTOR = 10000;
carc2.TARGET_AVBL_0 = 1.5;
cggl.Lcom_actelion_research_chem_MolfileV3Creator_2_classLit = createForClass('com.actelion.research.chem', 'MolfileV3Creator', 164, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_NamedSubstituents = function $clinit_NamedSubstituents(){
  carc2.$clinit_NamedSubstituents = emptyMethod;
  jl.$clinit_Object();
  carc2.SUBSTITUENT_LIST = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 2), {4:1, 1:1, 7:1}, 15, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Acyl', 'gCaHA`AIf`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Alloc', 'gNph@l@ILzuR@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Allyl', 'Al']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Benzyl;Bn', 'daD@`F@DjUZxHH@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Boc', 'daxD`@S@AIgijj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['BOM;BzOM', 'deTH`@H@Re[TYj`@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Bs', 'dmtDpAdLS`aPAIe]jf`@e`@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Bt', 'dew@`@aJ@DiY]paej`@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Btm', 'did@P@BJ@Die_ahH@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Butyl;nButyl', 'gJPHB@IRuP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Benzoyl;Bz', 'didH`@p@RYm^Eh@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Bzh', 'dg|@`N@LdbRbtJUB]aAP@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Cbz', 'dmtD`@S@AIgYVUZh@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['cButyl', 'gKPHL@IThuT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['cHeptyl', 'daD@`L@DjWVzjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['cHexyl', 'gOpHL@IToWUU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['cOctyl', 'did@`L@DjWWajjj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['cPentyl', 'gFpHL@ITimUP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['cPropyl', 'gBPHL@Qxjh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['COOH', 'gC`h@l@ILt@@ !Bb@K~@Hc}']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DEAE', 'daz@`@x@RiUjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DEIPS', 'diD@P@\\B@DjfVjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DMIPS', 'gNpD@xD@RjZjh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DMPM', 'dcLD`@kPCIEMDdcttDDT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DMPS', 'deT@P@\\B@LddTjPsU@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DMTr', 'fak@b@@Mt@ISZ{SMjo{NQKfm@AU@@@E@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DNP', 'dkmB`hdDt~@HeNfS{HihheCAUhBHX@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DNS;Dan', 'fhi`a@KPP@HH@YIHYheEhYKQgKP@@QP@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DPIPS', 'fdyAA@H@\\B@FRRIQSQIHzp_Qjh@h@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DPTBS', 'fleAA@H@\\B@FRRIQSRIIWNbEMU@EP@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['DTBMS', 'dmT@P@\\B@Djffjjjh@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Ethyl', 'eMBD@ch@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Fmoc', 'fde@b@@Hp@IL{LrjxeVCzKUT@@@P@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['iAmyl', 'gGPHJ@YIDZj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['iButyl', 'gJPHB@ITuP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Im', 'gFtHAj@IRnKSP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['iPropyl', 'gC`HL@Qz`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['MDIPS', 'diD@P@\\B@DjfZjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['MDPS', 'foA@A@@NA@CIIEEBdeeVLzj@@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Methyl', 'eFBH@c@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['MEM', 'gNphAR@IRoUT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Mes', 'deT@`J@DjY{[`bB`@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['MMTr', 'ffcAB@@Z@Dim]ifuWYrI\\uh@Jh@@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['MOM', 'gCaHA`AJZ`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['MPM;PMB', 'deTH`@d@Rfuunh@J@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Ms', 'gJPdH`DD@cuh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['MTM', 'gC`D@DX@Rfh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['mTolyl', 'daD@`N@DjWjXHB@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['N3', 'gClHaE`@RnReX@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['nAmyl;Amyl', 'gGPHJ@IRmU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['neoAm', 'gGPHJ@IUMU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['NO2,Nitro', 'gChhhE`BRnRYh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Np', 'deVDaHAI@HeNR[e_aZ@B@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['nPropyl;Propyl', 'gC`HL@IST@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['oTolyl', 'daD@`J@DjYvxH`@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Phenyl', 'gOpHL@IToVD@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Pht', 'dcLL`@RU@Dfyed]ZBA`@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Piv;Pv', 'gNqHA`AIffj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['PMBM', 'dcLD`@T`AJUm]FZh@J@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['PNB', 'dcNLaHAEt@bTyInUvxV`@f@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Poc', 'didD`@S@AIgexVjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['PPi', 'diDFsHSB[`|J|A@Lxn{lddqdZih@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['pTolyl', 'daD@`N@DjWzXHB@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['sAmyl', 'gGPHL@YIDZj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['sButyl', 'gJPHL@ITuP@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['SEM', 'diDHPFApD@rRQUJjj`@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['SES', 'dedDpHP@``AgCIICeHmUT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['SO3H', 'gJQdHl@``D^m@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['tAmyl', 'gGPHB@IUMU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['TBDMS;TBS', 'dax@P@\\B@Djfjjh@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['TBDPS', 'fdy@A@@NA@CIIEEEIde]XOhuPAT@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['TBMPS', 'dg\\HPHApH@rRQJJPjg]UAT@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['tButyl,tBu', 'gJPHB@Q}T@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['TDS', 'ded@P@\\B@LddTeeUUP@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Tf', 'daxDhHP@``BiAiCiCIICHmU@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['TFA', 'gNqBJIARFdF@YEHYUL@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Thexyl', 'gNpHB@IUMUT@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['THF', 'gFqH@PAJYujj@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['THP', 'gOqH@PAJYZzjh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['TIPS', 'dmT@P@\\B@DjfYjjjh@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['TMS', 'gJPD@xD@czh@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Tosyl;Ts', 'dmtDPHP@``CIICLeaeZ@B@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Troc', 'diDDHJxHaHcH`PCHiBeJjf@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Trt', 'fbm@B@A@FRQIRKQPiIZdoIcdHJ`@@@@@@']), stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Xyl', 'did@`J@DjYynBHH@@'])]);
}
;
carc2.createMap = function createMap(){
  var k, k$array, k$index, k$max, key, sp, sp$array, sp$index, sp$max;
  carc2.sIDCodeMap = new ju.TreeMap;
  for (sp$array = carc2.SUBSTITUENT_LIST , sp$index = 0 , sp$max = sp$array.length; sp$index < sp$max; ++sp$index) {
    sp = sp$array[sp$index];
    key = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(sp[0], ';');
    for (k$array = key , k$index = 0 , k$max = k$array.length; k$index < k$max; ++k$index) {
      k = k$array[k$index];
      carc2.sIDCodeMap.put(carc2.normalize(k), sp[1]);
    }
  }
}
;
carc2.getSubstituent_0 = function getSubstituent_0(name_0){
  carc2.$clinit_NamedSubstituents();
  var idcode;
  idcode = carc2.getSubstituentIDCode(name_0);
  return jsEquals(idcode, null)?null:(new carc2.IDCodeParser_0(false)).getCompactMolecule(idcode);
}
;
carc2.getSubstituentIDCode = function getSubstituentIDCode(name_0){
  carc2.$clinit_NamedSubstituents();
  if (isNull(carc2.sIDCodeMap))
    carc2.createMap();
  return castToString(carc2.sIDCodeMap.get(carc2.normalize(name_0)));
}
;
carc2.isValidSubstituentNameStart = function isValidSubstituentNameStart(s){
  carc2.$clinit_NamedSubstituents();
  var n, n$iterator;
  if (isNull(carc2.sIDCodeMap))
    carc2.createMap();
  s = carc2.normalize(s);
  for (n$iterator = carc2.sIDCodeMap.keySet().iterator(); n$iterator.hasNext_0();) {
    n = castToString(n$iterator.next_3());
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(n, s))
      return true;
  }
  return false;
}
;
carc2.normalize = function normalize(s){
  return jl.replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$(jl.toLowerCase__Ljava_lang_String___devirtual$(s), '-', '');
}
;
defineClass(1325, 1, {1:1});
carc2.sIDCodeMap = null;
cggl.Lcom_actelion_research_chem_NamedSubstituents_2_classLit = createForClass('com.actelion.research.chem', 'NamedSubstituents', 1325, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_RingCollection = function $clinit_RingCollection(){
  carc2.$clinit_RingCollection = emptyMethod;
  jl.$clinit_Object();
  carc2.MODE_SMALL_AND_LARGE_RINGS = 1 | 2;
  carc2.MODE_SMALL_RINGS_AND_AROMATICITY = 1 | 4;
  carc2.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY = 1 | 2 | 4;
}
;
carc2.RingCollection = function RingCollection(mol, mode){
  carc2.$clinit_RingCollection();
  carc2.RingCollection_0.call(this, mol, mode, 7);
}
;
carc2.RingCollection_0 = function RingCollection_0(mol, mode, maxSmallRingSize){
  var atom, bond, candidate, current, found, fragmentNo, graphAtom, highest, i, i0, isConfirmedChainAtom, isConfirmedChainBond, noOfFragments, parent_0, potentialRingNeighbours, ringAtom, startAtom;
  Object_0.call(this);
  this.$init_38();
  this.mMol = mol;
  this.mMaxSmallRingSize = maxSmallRingSize;
  this.mRingAtomSet = new ju.ArrayList;
  this.mRingBondSet = new ju.ArrayList;
  this.mAtomRingFeatures = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mBondRingFeatures = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  this.mMol.ensureHelperArrays_0(1);
  isConfirmedChainAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  isConfirmedChainBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  do {
    found = false;
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (!isConfirmedChainAtom[atom]) {
        potentialRingNeighbours = 0;
        for (i0 = 0; i0 < this.mMol.getConnAtoms_0(atom); i0++)
          if (!isConfirmedChainAtom[this.mMol.getConnAtom_0(atom, i0)])
            potentialRingNeighbours++;
        if (potentialRingNeighbours < 2) {
          isConfirmedChainAtom[atom] = true;
          for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
            isConfirmedChainBond[this.mMol.getConnBond_0(atom, i)] = true;
          found = true;
        }
      }
    }
  }
   while (found);
  startAtom = 0;
  while (startAtom < this.mMol.getAtoms_0() && isConfirmedChainAtom[startAtom])
    startAtom++;
  if (startAtom == this.mMol.getAtoms_0())
    return;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphAtom[0] = startAtom;
  parent_0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  parent_0[0] = -1;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  fragmentNo[startAtom] = 1;
  current = 0;
  highest = 0;
  noOfFragments = 1;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      if (candidate == parent_0[graphAtom[current]])
        continue;
      if (fragmentNo[candidate] != 0) {
        this.addSmallRingsToSet(this.mMol.getConnBond_0(graphAtom[current], i), isConfirmedChainAtom);
        continue;
      }
      if (!isConfirmedChainAtom[candidate]) {
        fragmentNo[candidate] = noOfFragments;
        parent_0[candidate] = graphAtom[current];
        graphAtom[++highest] = candidate;
      }
    }
    current++;
    if (current > highest) {
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
        if (fragmentNo[atom] == 0 && !isConfirmedChainAtom[atom]) {
          fragmentNo[atom] = ++noOfFragments;
          graphAtom[++highest] = atom;
          parent_0[atom] = -1;
          break;
        }
      }
    }
  }
  if ((mode & 4) != 0) {
    this.mIsAromatic = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mRingAtomSet.size(), 16, 1);
    this.mIsDelocalized = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mRingAtomSet.size(), 16, 1);
    this.mHeteroPosition = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRingAtomSet.size(), 15, 1);
    this.determineAromaticity_1(this.mIsAromatic, this.mIsDelocalized, this.mHeteroPosition, (mode & 8) != 0);
    this.updateAromaticity();
  }
  if ((mode & 2) != 0) {
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (!isConfirmedChainBond[bond] && this.mMol.getBondOrder_0(bond) != 0) {
        ringAtom = this.findSmallestRing(bond, isConfirmedChainAtom);
        if (jsNotEquals(ringAtom, null))
          this.updateRingSize(ringAtom, this.getRingBonds_1(ringAtom));
      }
    }
  }
}
;
carc2.qualifiesAsAromaticAtomicNo = function qualifiesAsAromaticAtomicNo(atomicNo){
  carc2.$clinit_RingCollection();
  return atomicNo == 5 || atomicNo == 6 || atomicNo == 7 || atomicNo == 8 || atomicNo == 15 || atomicNo == 16 || atomicNo == 33 || atomicNo == 34;
}
;
defineClass(211, 1, {1:1}, carc2.RingCollection);
_.$init_38 = function $init_38(){
}
;
_.addRingIfNew = function addRingIfNew(ringAtom, ringSize){
  var equal, i, i0, i1, inverse, j, leftIndex, lowAtom, lowIndex, rightIndex, ringBond, ringOfSet, sortedRing;
  lowAtom = this.mMol.getMaxAtoms_0();
  lowIndex = 0;
  for (i0 = 0; i0 < ringSize; i0++) {
    if (lowAtom > ringAtom[i0]) {
      lowAtom = ringAtom[i0];
      lowIndex = i0;
    }
  }
  sortedRing = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, ringSize, 15, 1);
  leftIndex = lowIndex > 0?lowIndex - 1:ringSize - 1;
  rightIndex = lowIndex < ringSize - 1?lowIndex + 1:0;
  inverse = ringAtom[leftIndex] < ringAtom[rightIndex];
  for (i1 = 0; i1 < ringSize; i1++) {
    sortedRing[i1] = ringAtom[lowIndex];
    if (inverse) {
      if (--lowIndex < 0)
        lowIndex = ringSize - 1;
    }
     else {
      if (++lowIndex == ringSize)
        lowIndex = 0;
    }
  }
  for (i = 0; i < this.mRingAtomSet.size(); i++) {
    ringOfSet = castTo(this.mRingAtomSet.getAtIndex(i), 6);
    if (ringOfSet.length != ringSize)
      continue;
    equal = true;
    for (j = 0; j < ringSize; j++) {
      if (ringOfSet[j] != sortedRing[j]) {
        equal = false;
        break;
      }
    }
    if (equal)
      return;
  }
  this.mRingAtomSet.add(sortedRing);
  ringBond = this.getRingBonds_1(sortedRing);
  this.mRingBondSet.add(ringBond);
  this.updateRingSize(sortedRing, ringBond);
}
;
_.addSmallRingsToSet = function addSmallRingsToSet(closureBond, isConfirmedChainAtom){
  var atom1, atom2, candidate, connIndex, current, graphAtom, isUsed;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxSmallRingSize, 15, 1);
  connIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMaxSmallRingSize, 15, 1);
  isUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  atom1 = this.mMol.getBondAtom_0(0, closureBond);
  atom2 = this.mMol.getBondAtom_0(1, closureBond);
  graphAtom[0] = atom1;
  graphAtom[1] = atom2;
  connIndex[1] = -1;
  isUsed[atom2] = true;
  current = 1;
  while (current >= 1) {
    connIndex[current]++;
    if (connIndex[current] == this.mMol.getConnAtoms_0(graphAtom[current])) {
      isUsed[graphAtom[current]] = false;
      current--;
      continue;
    }
    candidate = this.mMol.getConnAtom_0(graphAtom[current], connIndex[current]);
    if (isUsed[candidate] || isConfirmedChainAtom[candidate])
      continue;
    if (candidate == atom1 && current > 1) {
      this.addRingIfNew(graphAtom, current + 1);
      if (this.mRingAtomSet.size() >= 1024)
        return;
      continue;
    }
    if (current + 1 < this.mMaxSmallRingSize) {
      current++;
      graphAtom[current] = candidate;
      isUsed[candidate] = true;
      connIndex[current] = -1;
    }
  }
}
;
_.determineAromaticity_0 = function determineAromaticity(ringNo, annelatedRing, aromaticityHandled, isAromatic, isDelocalized, heteroPosition, includeTautomericBonds){
  var annelated, aromaticButNotDelocalizedSequence, atom, atom$array, atom$index, atom$max, bondSequence, cSequence3Ring, cSequence5Ring, cSequence7Ring, carbeniumPosition, carbeniumPosition0, hasDelocalizationLeak, i, position, ringAtom, ringBond, ringBonds, unhandledAnnelatedRingFound;
  ringAtom = castTo(this.mRingAtomSet.getAtIndex(ringNo), 6);
  for (atom$array = ringAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    if (!this.qualifiesAsAromaticAtom(atom))
      return true;
  }
  ringBond = castTo(this.mRingBondSet.getAtIndex(ringNo), 6);
  ringBonds = ringBond.length;
  bondSequence = 0;
  aromaticButNotDelocalizedSequence = 0;
  unhandledAnnelatedRingFound = false;
  for (i = 0; i < ringBonds; i++) {
    bondSequence <<= 1;
    aromaticButNotDelocalizedSequence <<= 1;
    if (this.qualifiesAsPiBond(ringBond[i])) {
      bondSequence |= 1;
    }
     else if (includeTautomericBonds && this.qualifiesAsAmideTypeBond_0(ringBond[i])) {
      bondSequence |= 1;
      aromaticButNotDelocalizedSequence |= 1;
    }
     else {
      annelated = annelatedRing[ringNo][i];
      if (annelated != -1) {
        if (aromaticityHandled[annelated]) {
          if (isAromatic[annelated]) {
            bondSequence |= 1;
            if (!isDelocalized[annelated])
              aromaticButNotDelocalizedSequence |= 1;
          }
        }
         else {
          unhandledAnnelatedRingFound = true;
        }
      }
    }
  }
  hasDelocalizationLeak = false;
  switch (ringBonds) {
    case 3:
      cSequence3Ring = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 1, 4]);
      hasDelocalizationLeak = true;
      for (carbeniumPosition0 = 0; carbeniumPosition0 < 3; carbeniumPosition0++) {
        if ((bondSequence & cSequence3Ring[carbeniumPosition0]) == cSequence3Ring[carbeniumPosition0]) {
          if (this.mMol.getAtomicNo_0(ringAtom[carbeniumPosition0]) == 6 && this.mMol.getAtomCharge_0(ringAtom[carbeniumPosition0]) == 1 || this.mMol.getAtomicNo_0(ringAtom[carbeniumPosition0]) == 5 && this.mMol.getAtomCharge_0(ringAtom[carbeniumPosition0]) == 0) {
            isAromatic[ringNo] = true;
            heteroPosition[ringNo] = carbeniumPosition0;
            if ((aromaticButNotDelocalizedSequence & cSequence3Ring[carbeniumPosition0]) == 0)
              hasDelocalizationLeak = false;
          }
        }
      }

      break;
    case 5:
      cSequence5Ring = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [10, 5, 18, 9, 20]);
      hasDelocalizationLeak = true;
      for (position = 0; position < 5; position++) {
        if ((bondSequence & cSequence5Ring[position]) == cSequence5Ring[position]) {
          switch (this.mMol.getAtomicNo_0(ringAtom[position])) {
            case 6:
              if (this.mMol.getAtomCharge_0(ringAtom[position]) == -1) {
                isAromatic[ringNo] = true;
                heteroPosition[ringNo] = position;
                if ((aromaticButNotDelocalizedSequence & cSequence5Ring[position]) == 0)
                  hasDelocalizationLeak = false;
              }

              break;
            case 7:
              if (this.mMol.getAtomCharge_0(ringAtom[position]) <= 0) {
                isAromatic[ringNo] = true;
                heteroPosition[ringNo] = position;
              }

              break;
            case 8:
              isAromatic[ringNo] = true;
              heteroPosition[ringNo] = position;
              break;
            case 16:
            case 34:
            case 52:
              if (this.mMol.getConnAtoms_0(ringAtom[position]) == 2) {
                isAromatic[ringNo] = true;
                heteroPosition[ringNo] = position;
              }

              break;
          }
        }
      }

      break;
    case 6:
      hasDelocalizationLeak = true;
      if ((bondSequence & 21) == 21) {
        isAromatic[ringNo] = true;
        if ((aromaticButNotDelocalizedSequence & 21) == 0)
          hasDelocalizationLeak = false;
      }

      if ((bondSequence & 42) == 42) {
        isAromatic[ringNo] = true;
        if ((aromaticButNotDelocalizedSequence & 42) == 0)
          hasDelocalizationLeak = false;
      }

      break;
    case 7:
      cSequence7Ring = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [42, 21, 74, 37, 82, 41, 84]);
      hasDelocalizationLeak = true;
      for (carbeniumPosition = 0; carbeniumPosition < 7; carbeniumPosition++) {
        if ((bondSequence & cSequence7Ring[carbeniumPosition]) == cSequence7Ring[carbeniumPosition]) {
          if (this.mMol.getAtomicNo_0(ringAtom[carbeniumPosition]) == 6 && (this.mMol.getAtomCharge_0(ringAtom[carbeniumPosition]) == 1 || includeTautomericBonds && this.hasOxo(ringAtom[carbeniumPosition])) || this.mMol.getAtomicNo_0(ringAtom[carbeniumPosition]) == 5 && this.mMol.getAtomCharge_0(ringAtom[carbeniumPosition]) == 0) {
            isAromatic[ringNo] = true;
            heteroPosition[ringNo] = carbeniumPosition;
            if ((aromaticButNotDelocalizedSequence & cSequence7Ring[carbeniumPosition]) == 0)
              hasDelocalizationLeak = false;
          }
        }
      }

      break;
  }
  if (isAromatic[ringNo] && !hasDelocalizationLeak)
    isDelocalized[ringNo] = true;
  if (isAromatic[ringNo])
    return true;
  return !unhandledAnnelatedRingFound;
}
;
_.determineAromaticity_1 = function determineAromaticity_0(isAromatic, isDelocalized, heteroPosition, includeTautomericBonds){
  var annelatedRing, aromaticityHandled, bond, i, i0, j, lastRingsHandled, ring, ring0, ringBond, ringMembership, ringsHandled;
  annelatedRing = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mRingAtomSet.size(), 0, 2);
  for (i0 = 0; i0 < this.mRingAtomSet.size(); i0++) {
    annelatedRing[i0] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, castTo(this.mRingAtomSet.getAtIndex(i0), 6).length, 15, 1);
    for (j = 0; j < castTo(this.mRingAtomSet.getAtIndex(i0), 6).length; j++)
      annelatedRing[i0][j] = -1;
  }
  ringMembership = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  for (ring0 = 0; ring0 < this.mRingBondSet.size(); ring0++) {
    ringBond = castTo(this.mRingBondSet.getAtIndex(ring0), 6);
    if (ringBond.length == 3 || ringBond.length >= 5 && ringBond.length <= 7) {
      for (i = 0; i < ringBond.length; i++) {
        bond = ringBond[i];
        if (this.mMol.getConnAtoms_0(this.mMol.getBondAtom_0(0, bond)) == 3 && this.mMol.getConnAtoms_0(this.mMol.getBondAtom_0(1, bond)) == 3) {
          if (ringMembership[bond] > 0) {
            annelatedRing[ringMembership[bond] >>> 16][ringMembership[bond] & 32767] = ring0;
            annelatedRing[ring0][i] = ringMembership[bond] >>> 16;
          }
           else {
            ringMembership[bond] = (ring0 << 16) + 32768 + i;
          }
        }
      }
    }
  }
  aromaticityHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mRingAtomSet.size(), 16, 1);
  ringsHandled = 0;
  lastRingsHandled = -1;
  while (ringsHandled > lastRingsHandled) {
    lastRingsHandled = ringsHandled;
    for (ring = 0; ring < this.mRingAtomSet.size(); ring++) {
      if (!aromaticityHandled[ring]) {
        if (this.determineAromaticity_0(ring, annelatedRing, aromaticityHandled, isAromatic, isDelocalized, heteroPosition, includeTautomericBonds)) {
          aromaticityHandled[ring] = true;
          ringsHandled++;
        }
      }
    }
  }
}
;
_.findSmallestRing = function findSmallestRing(bond, isConfirmedChainAtom){
  var atom, atom1, atom2, candidate, current, graphAtom, graphLevel, graphParent, highest, i, j, ringAtom;
  atom1 = this.mMol.getBondAtom_0(0, bond);
  atom2 = this.mMol.getBondAtom_0(1, bond);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphAtom[0] = atom1;
  graphAtom[1] = atom2;
  graphLevel[atom1] = 1;
  graphLevel[atom2] = 2;
  graphParent[atom1] = -1;
  graphParent[atom2] = atom1;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      if (current > 1 && candidate == atom1) {
        ringAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, graphLevel[graphAtom[current]], 15, 1);
        atom = graphAtom[current];
        for (j = 0; j < ringAtom.length; j++) {
          ringAtom[j] = atom;
          atom = graphParent[atom];
        }
        return ringAtom;
      }
      if (graphLevel[candidate] == 0 && !isConfirmedChainAtom[candidate]) {
        graphAtom[++highest] = candidate;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
        graphParent[candidate] = graphAtom[current];
      }
    }
    current++;
  }
  return null;
}
;
_.getAtomIndex_0 = function getAtomIndex(ringNo, atom){
  var i, ringAtom;
  ringAtom = castTo(this.mRingAtomSet.getAtIndex(ringNo), 6);
  for (i = 0; i < ringAtom.length; i++)
    if (atom == ringAtom[i])
      return i;
  return -1;
}
;
_.getAtomRingSize_0 = function getAtomRingSize_0(atom){
  return this.mAtomRingFeatures[atom] & 65535;
}
;
_.getBondIndex_0 = function getBondIndex(ringNo, bond){
  var i, ringBond;
  ringBond = castTo(this.mRingBondSet.getAtIndex(ringNo), 6);
  for (i = 0; i < ringBond.length; i++)
    if (bond == ringBond[i])
      return i;
  return -1;
}
;
_.getBondRingSize_0 = function getBondRingSize_0(bond){
  return this.mBondRingFeatures[bond] & 65535;
}
;
_.getHeteroPosition_0 = function getHeteroPosition(ringNo){
  return this.mHeteroPosition[ringNo];
}
;
_.getRingAtoms_0 = function getRingAtoms(ringNo){
  return castTo(this.mRingAtomSet.getAtIndex(ringNo), 6);
}
;
_.getRingBonds_0 = function getRingBonds(ringNo){
  return castTo(this.mRingBondSet.getAtIndex(ringNo), 6);
}
;
_.getRingBonds_1 = function getRingBonds_0(ringAtom){
  var atom, i, j, ringAtoms, ringBond;
  ringAtoms = ringAtom.length;
  ringBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, ringAtoms, 15, 1);
  for (i = 0; i < ringAtoms; i++) {
    atom = i == ringAtoms - 1?ringAtom[0]:ringAtom[i + 1];
    for (j = 0; j < this.mMol.getConnAtoms_0(ringAtom[i]); j++) {
      if (this.mMol.getConnAtom_0(ringAtom[i], j) == atom) {
        ringBond[i] = this.mMol.getConnBond_0(ringAtom[i], j);
        break;
      }
    }
  }
  return ringBond;
}
;
_.getRingSize_0 = function getRingSize(ringNo){
  return castTo(this.mRingBondSet.getAtIndex(ringNo), 6).length;
}
;
_.getSharedRing_0 = function getSharedRing(bond1, bond2){
  var i;
  for (i = 0; i < this.mRingBondSet.size(); i++)
    if (this.isBondMember_0(i, bond1) && this.isBondMember_0(i, bond2))
      return i;
  return -1;
}
;
_.getSize_0 = function getSize(){
  return this.mRingAtomSet.size();
}
;
_.hasOxo = function hasOxo(carbonAtom){
  var i;
  for (i = 0; i < this.mMol.getConnAtoms_0(carbonAtom); i++)
    if (this.mMol.getConnBondOrder_0(carbonAtom, i) == 2 && this.mMol.getAtomicNo_0(this.mMol.getConnAtom_0(carbonAtom, i)) == 8)
      return true;
  return false;
}
;
_.isAromatic_0 = function isAromatic_0(ringNo){
  return this.mIsAromatic[ringNo];
}
;
_.isAromaticAtom_1 = function isAromaticAtom_2(atom){
  return (this.mAtomRingFeatures[atom] & 65536) != 0;
}
;
_.isAromaticBond_0 = function isAromaticBond_1(bond){
  return (this.mBondRingFeatures[bond] & 65536) != 0;
}
;
_.isAtomMember_0 = function isAtomMember(ringNo, atom){
  var i, ringAtom;
  ringAtom = castTo(this.mRingAtomSet.getAtIndex(ringNo), 6);
  for (i = 0; i < ringAtom.length; i++)
    if (atom == ringAtom[i])
      return true;
  return false;
}
;
_.isBondMember_0 = function isBondMember(ringNo, bond){
  var i, ringBond;
  ringBond = castTo(this.mRingBondSet.getAtIndex(ringNo), 6);
  for (i = 0; i < ringBond.length; i++)
    if (bond == ringBond[i])
      return true;
  return false;
}
;
_.isDelocalized_0 = function isDelocalized_0(ringNo){
  return this.mIsDelocalized[ringNo];
}
;
_.isDelocalizedBond_0 = function isDelocalizedBond_2(bond){
  return (this.mBondRingFeatures[bond] & 131072) != 0;
}
;
_.isHeteroAromaticAtom = function isHeteroAromaticAtom_0(atom){
  return (this.mAtomRingFeatures[atom] & 262144) != 0;
}
;
_.qualifiesAsAmideTypeBond_0 = function qualifiesAsAmideTypeBond(bond){
  var atom1, atom2, connAtom, connBond, i, j;
  for (i = 0; i < 2; i++) {
    atom1 = this.mMol.getBondAtom_0(i, bond);
    if (this.mMol.getAtomicNo_0(atom1) == 7 && this.mMol.getConnAtoms_0(atom1) == 2) {
      atom2 = this.mMol.getBondAtom_0(1 - i, bond);
      if (this.mMol.getAtomicNo_0(atom2) == 6) {
        for (j = 0; j < this.mMol.getConnAtoms_0(atom2); j++) {
          connAtom = this.mMol.getConnAtom_0(atom2, j);
          connBond = this.mMol.getConnBond_0(atom2, j);
          if ((this.mMol.getAtomicNo_0(connAtom) == 8 || this.mMol.getAtomicNo_0(connAtom) == 16) && this.mMol.getBondOrder_0(connBond) == 2 && this.mMol.getConnAtoms_0(connAtom) == 1)
            return true;
        }
      }
    }
  }
  return false;
}
;
_.qualifiesAsAromaticAtom = function qualifiesAsAromaticAtom(atom){
  var atomicNo, atomicNo$array, atomicNo$index, atomicNo$max, list;
  if (this.mMol.isFragment_0()) {
    if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 1), 0)) {
      return true;
    }
     else {
      list = this.mMol.getAtomList_0(atom);
      if (jsNotEquals(list, null)) {
        for (atomicNo$array = list , atomicNo$index = 0 , atomicNo$max = atomicNo$array.length; atomicNo$index < atomicNo$max; ++atomicNo$index) {
          atomicNo = atomicNo$array[atomicNo$index];
          if (carc2.qualifiesAsAromaticAtomicNo(atomicNo))
            return true;
        }
        return false;
      }
    }
  }
  return carc2.qualifiesAsAromaticAtomicNo(this.mMol.getAtomicNo_0(atom));
}
;
_.qualifiesAsHeteroAtom = function qualifiesAsHeteroAtom(atom){
  var atomList, atomicNo, atomicNo$array, atomicNo$index, atomicNo$max;
  if (this.mMol.isFragment_0()) {
    if (neq(and_0(this.mMol.getAtomQueryFeatures(atom), 1), 0))
      return false;
    atomList = this.mMol.getAtomList_0(atom);
    if (jsNotEquals(atomList, null)) {
      for (atomicNo$array = atomList , atomicNo$index = 0 , atomicNo$max = atomicNo$array.length; atomicNo$index < atomicNo$max; ++atomicNo$index) {
        atomicNo = atomicNo$array[atomicNo$index];
        if (!carc2.isAtomicNoElectronegative(atomicNo))
          return false;
      }
      return true;
    }
  }
  return carc2.isAtomicNoElectronegative(this.mMol.getAtomicNo_0(atom));
}
;
_.qualifiesAsPiBond = function qualifiesAsPiBond(bond){
  return this.mMol.getBondOrder_0(bond) > 1 || this.mMol.getBondType_0(bond) == 64;
}
;
_.updateAromaticity = function updateAromaticity(){
  var atom, atom$array, atom$array0, atom$index, atom$index0, atom$max, atom$max0, bond, bond$array, bond$array0, bond$index, bond$index0, bond$max, bond$max0, isHeteroAromatic, ring;
  for (ring = 0; ring < this.mIsAromatic.length; ring++) {
    if (this.mIsAromatic[ring]) {
      isHeteroAromatic = false;
      for (atom$array0 = castTo(this.mRingAtomSet.getAtIndex(ring), 6) , atom$index0 = 0 , atom$max0 = atom$array0.length; atom$index0 < atom$max0; ++atom$index0) {
        atom = atom$array0[atom$index0];
        this.mAtomRingFeatures[atom] |= 65536;
        if (this.qualifiesAsHeteroAtom(atom))
          isHeteroAromatic = true;
      }
      for (bond$array0 = castTo(this.mRingBondSet.getAtIndex(ring), 6) , bond$index0 = 0 , bond$max0 = bond$array0.length; bond$index0 < bond$max0; ++bond$index0) {
        bond = bond$array0[bond$index0];
        this.mBondRingFeatures[bond] |= 65536;
      }
      if (this.mIsDelocalized[ring]) {
        for (atom$array = castTo(this.mRingAtomSet.getAtIndex(ring), 6) , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
          atom = atom$array[atom$index];
          this.mAtomRingFeatures[atom] |= 131072;
        }
        for (bond$array = castTo(this.mRingBondSet.getAtIndex(ring), 6) , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
          bond = bond$array[bond$index];
          this.mBondRingFeatures[bond] |= 131072;
        }
      }
      if (isHeteroAromatic) {
        for (atom$array = castTo(this.mRingAtomSet.getAtIndex(ring), 6) , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
          atom = atom$array[atom$index];
          this.mAtomRingFeatures[atom] |= 262144;
        }
        for (bond$array = castTo(this.mRingBondSet.getAtIndex(ring), 6) , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
          bond = bond$array[bond$index];
          this.mBondRingFeatures[bond] |= 262144;
        }
      }
    }
  }
}
;
_.updateRingSize = function updateRingSize(ringAtom, ringBond){
  var currentSize, i, i0, ringSize;
  ringSize = ringAtom.length;
  for (i0 = 0; i0 < ringSize; i0++) {
    currentSize = this.mAtomRingFeatures[ringAtom[i0]] & 65535;
    if (currentSize == 0 || currentSize > ringSize) {
      this.mAtomRingFeatures[ringAtom[i0]] &= ~65535;
      this.mAtomRingFeatures[ringAtom[i0]] |= ringSize;
    }
  }
  for (i = 0; i < ringSize; i++) {
    currentSize = this.mBondRingFeatures[ringBond[i]] & 65535;
    if (currentSize == 0 || currentSize > ringSize) {
      this.mBondRingFeatures[ringBond[i]] &= ~65535;
      this.mBondRingFeatures[ringBond[i]] |= ringSize;
    }
  }
}
;
_.validateMemberIndex_0 = function validateMemberIndex(ringNo, index_0){
  var ringSize;
  ringSize = castTo(this.mRingBondSet.getAtIndex(ringNo), 6).length;
  while (index_0 >= ringSize)
    index_0 -= ringSize;
  while (index_0 < 0)
    index_0 += ringSize;
  return index_0;
}
;
_.mMaxSmallRingSize = 0;
carc2.FEATURES_AROMATIC = 65536;
carc2.FEATURES_DELOCALIZED = 131072;
carc2.FEATURES_HETERO_AROMATIC = 262144;
carc2.FEATURES_RING_SIZE = 65535;
carc2.MAX_SMALL_RING_COUNT = 1024;
carc2.MAX_SMALL_RING_SIZE = 7;
carc2.MODE_AROMATICITY = 4;
carc2.MODE_INCLUDE_TAUTOMERIC_BONDS = 8;
carc2.MODE_LARGE_RINGS = 2;
carc2.MODE_SMALL_AND_LARGE_RINGS = 0;
carc2.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY = 0;
carc2.MODE_SMALL_RINGS = 1;
carc2.MODE_SMALL_RINGS_AND_AROMATICITY = 0;
carc2.MODE_SMALL_RINGS_ONLY = 1;
cggl.Lcom_actelion_research_chem_RingCollection_2_classLit = createForClass('com.actelion.research.chem', 'RingCollection', 211, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SSSearcher = function $clinit_SSSearcher(){
  carc2.$clinit_SSSearcher = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SSSearcher = function SSSearcher(){
  carc2.$clinit_SSSearcher();
  Object_0.call(this);
  this.$init_39();
  this.mDefaultMatchMode = 8;
  this.mSortedMatchSet = new ju.TreeSet_0(new caru.IntArrayComparator);
}
;
carc2.SSSearcher_0 = function SSSearcher_0(matchMode){
  carc2.$clinit_SSSearcher();
  Object_0.call(this);
  this.$init_39();
  this.mDefaultMatchMode = matchMode;
  this.mSortedMatchSet = new ju.TreeSet_0(new caru.IntArrayComparator);
}
;
carc2.copyOf_4 = function copyOf_4(original, newLength){
  var copy;
  copy = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, newLength, 15, 1);
  jl.arraycopy(original, 0, copy, 0, $wnd.Math.min(original.length, newLength));
  return copy;
}
;
carc2.copyOf_5 = function copyOf_5(original, newLength){
  var copy;
  copy = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, newLength, 16, 1);
  jl.arraycopy(original, 0, copy, 0, $wnd.Math.min(original.length, newLength));
  return copy;
}
;
defineClass(83, 1, {1:1}, carc2.SSSearcher, carc2.SSSearcher_0);
_.$init_39 = function $init_39(){
}
;
_.addMatchAtoms = function addMatchAtoms(){
  this.mMatchList.add(carc2.copyOf_4(this.mMatchTable, this.mMatchTable.length));
  if (isNotNull(this.mBridgeBondList))
    this.mBridgeBondAtomList.add(carc2.copyOf_5(this.mIsBridgeBondAtom, this.mIsBridgeBondAtom.length));
}
;
_.addMatchIfQualifies = function addMatchIfQualifies(countMode){
  var atom, atom$array, atom$index, atom$max, existing, existing$iterator, existingIndex, found, sortedMatch;
  if (countMode == 2 || countMode == 5) {
    this.addMatchAtoms();
  }
   else if (countMode == 4) {
    sortedMatch = this.getSortedMatch(carc2.copyOf_4(this.mMatchTable, this.mMatchTable.length));
    if (!this.mSortedMatchSet.contains(sortedMatch)) {
      this.mSortedMatchSet.add(sortedMatch);
      this.addMatchAtoms();
    }
  }
   else if (countMode == 3) {
    sortedMatch = this.getSortedMatch(carc2.copyOf_4(this.mMatchTable, this.mMatchTable.length));
    if (!this.mSortedMatchSet.contains(sortedMatch)) {
      found = false;
      for (existing$iterator = this.mSortedMatchSet.iterator(); existing$iterator.hasNext_0();) {
        existing = castTo(existing$iterator.next_3(), 6);
        existingIndex = 0;
        for (atom$array = sortedMatch , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
          atom = atom$array[atom$index];
          while (existingIndex < existing.length && existing[existingIndex] < atom)
            existingIndex++;
          if (existingIndex < existing.length) {
            if (atom == existing[existingIndex]) {
              found = true;
              break;
            }
          }
        }
        if (found)
          break;
      }
      if (!found) {
        this.mSortedMatchSet.add(sortedMatch);
        this.addMatchAtoms();
      }
    }
  }
   else if (countMode == 6) {
    sortedMatch = this.getSortedSymmetryMatch(carc2.copyOf_4(this.mMatchTable, this.mMatchTable.length));
    if (!this.mSortedMatchSet.contains(sortedMatch)) {
      this.mSortedMatchSet.add(sortedMatch);
      this.addMatchAtoms();
    }
  }
}
;
_.areAtomsSimilar = function areAtomsSimilar(moleculeAtom, fragmentAtom){
  var fragmentConnAtoms, fragmentList, fragmentQF, fragmentRingQF, moleculeConnAtoms, moleculeList, moleculeQF, moleculeRingQF, smallestRingSize, targetRingSize;
  moleculeConnAtoms = this.mMolecule.getConnAtoms_0(moleculeAtom);
  fragmentConnAtoms = this.mFragmentConnAtoms[fragmentAtom];
  if (fragmentConnAtoms > moleculeConnAtoms)
    return false;
  moleculeQF = this.mMolecule.getAtomQueryFeatures(moleculeAtom);
  fragmentQF = this.mFragment.getAtomQueryFeatures(fragmentAtom);
  fragmentList = this.mFragment.getAtomList_0(fragmentAtom);
  moleculeList = this.mMolecule.getAtomList_0(moleculeAtom);
  if (neq(and_0(fragmentQF, 1), 0)) {
    if (jsNotEquals(fragmentList, null)) {
      if (neq(and_0(moleculeQF, 1), 0)) {
        if (jsEquals(moleculeList, null))
          return false;
        if (!this.isSubListOf(fragmentList, moleculeList))
          return false;
      }
       else {
        if (jsNotEquals(moleculeList, null)) {
          if (this.listsOverlap(moleculeList, fragmentList))
            return false;
        }
         else {
          if (this.isListMember(this.mMolecule.getAtomicNo_0(moleculeAtom), fragmentList))
            return false;
        }
      }
    }
  }
   else {
    if (neq(and_0(moleculeQF, 1), 0))
      return false;
    if (jsNotEquals(fragmentList, null)) {
      if (jsNotEquals(moleculeList, null)) {
        if (!this.isSubListOf(moleculeList, fragmentList))
          return false;
      }
       else {
        if (!this.isListMember(this.mMolecule.getAtomicNo_0(moleculeAtom), fragmentList))
          return false;
      }
    }
     else {
      if (jsNotEquals(moleculeList, null))
        return false;
      if (this.mMoleculeAtomType[moleculeAtom] != this.mFragmentAtomType[fragmentAtom])
        return false;
    }
  }
  if (neq(or_0(moleculeQF, fragmentQF), 0)) {
    if (neq(and_0(fragmentQF, 2048), 0)) {
      if (this.mMolecule.isFragment_0() && eq(and_0(moleculeQF, 2048), 0))
        return false;
      else if (fragmentConnAtoms != moleculeConnAtoms)
        return false;
    }
    if (neq(and_0(fragmentQF, 4096), 0)) {
      if (fragmentConnAtoms >= moleculeConnAtoms && eq(and_0(moleculeQF, 4096), 0))
        return false;
    }
  }
  if (neq(and_0(this.mMoleculeAtomFeatures[moleculeAtom], not_0(this.mFragmentAtomFeatures[fragmentAtom])), 0))
    return false;
  if (neq(and_0(this.mFragmentRingFeatures[fragmentAtom], not_0(this.mMoleculeRingFeatures[moleculeAtom])), 0))
    return false;
  fragmentRingQF = and_0(fragmentQF, 545460846592);
  if (this.mMolecule.isFragment_0()) {
    moleculeRingQF = and_0(fragmentQF, 545460846592);
    if (neq(moleculeRingQF, 0) && (eq(fragmentRingQF, 0) || neq(and_0(fragmentRingQF, not_0(moleculeRingQF)), 0)))
      return false;
  }
   else {
    if (neq(fragmentRingQF, 0) && eq(and_0(fragmentRingQF, this.mMoleculeRingFeatures[moleculeAtom]), 0))
      return false;
  }
  if (this.mFragment.getAtomCharge_0(fragmentAtom) != 0 && this.mFragment.getAtomCharge_0(fragmentAtom) != this.mMolecule.getAtomCharge_0(moleculeAtom))
    return false;
  if (this.mFragment.getAtomMass_0(fragmentAtom) != 0 && this.mFragment.getAtomMass_0(fragmentAtom) != this.mMolecule.getAtomMass_0(moleculeAtom))
    return false;
  if (this.mFragment.getAtomRadical_0(fragmentAtom) != 0 && this.mFragment.getAtomRadical_0(fragmentAtom) != this.mMolecule.getAtomRadical_0(moleculeAtom))
    return false;
  smallestRingSize = toInt_0(shr_0(and_0(this.mFragment.getAtomQueryFeatures(fragmentAtom), 29360128), 22));
  if (smallestRingSize != 0) {
    if (!this.mMolecule.isFragment_0()) {
      if (this.mMolecule.getAtomRingSize_0(moleculeAtom) != smallestRingSize)
        return false;
    }
     else {
      targetRingSize = toInt_0(shr_0(and_0(this.mMolecule.getAtomQueryFeatures(moleculeAtom), 29360128), 22));
      if (smallestRingSize != targetRingSize)
        return false;
    }
  }
  return true;
}
;
_.areBondsSimilar = function areBondsSimilar(moleculeBond, fragmentBond){
  var found, frgBondType, frgBondTypes, frgDefaults, i, molBondType, molDefaults, ringSet, ringSize;
  molDefaults = this.mMoleculeBondFeatures[moleculeBond];
  frgDefaults = this.mFragmentBondFeatures[fragmentBond];
  if ((this.mFragment.getBondQueryFeatures_0(fragmentBond) & 8388608) != 0) {
    molBondType = this.mMolecule.getBondTypeSimple_0(moleculeBond);
    frgBondType = this.mFragment.getBondTypeSimple_0(fragmentBond);
    frgBondTypes = this.mFragment.getBondQueryFeatures_0(fragmentBond) & 31;
    if (molBondType != frgBondType && !(molBondType == 1 && (frgBondTypes & 1) != 0) && !(molBondType == 2 && (frgBondTypes & 2) != 0) && !(molBondType == 4 && (frgBondTypes & 4) != 0) && !(molBondType == 8 && (frgBondTypes & 32) != 0) && !(molBondType == 16 && (frgBondTypes & 64) != 0) && !(molBondType == 32 && (frgBondTypes & 16) != 0) && !(molBondType == 64 && (frgBondTypes & 8) != 0))
      return false;
    molDefaults &= ~31;
    frgDefaults &= ~31;
  }
  if ((molDefaults & ~frgDefaults) != 0)
    return false;
  ringSize = (this.mFragment.getBondQueryFeatures_0(fragmentBond) & 917504) >> 17;
  if (ringSize != 0) {
    if (this.mMolecule.isFragment_0() && ringSize == (this.mMolecule.getBondQueryFeatures_0(fragmentBond) & 917504) >> 17)
      return true;
    found = false;
    ringSet = this.mMolecule.getRingSet_0();
    for (i = 0; i < ringSet.getSize_0(); i++) {
      if (ringSet.getRingSize_0(i) == ringSize) {
        if (ringSet.isBondMember_0(i, moleculeBond)) {
          found = true;
          break;
        }
      }
    }
    if (!found)
      return false;
  }
  return true;
}
;
_.buildBridgeBondList = function buildBridgeBondList(){
  var bond, bridgeBond;
  this.mBridgeBondList = null;
  for (bond = 0; bond < this.mFragment.getBonds_0(); bond++) {
    if (this.mFragment.isBondBridge_0(bond)) {
      if (isNull(this.mBridgeBondList))
        this.mBridgeBondList = new ju.ArrayList;
      bridgeBond = new carc2.SSSearcher$BridgeBond(this);
      bridgeBond.atom1 = this.mFragment.getBondAtom_0(0, bond);
      bridgeBond.atom2 = this.mFragment.getBondAtom_0(1, bond);
      bridgeBond.minBridgeSize = this.mFragment.getBondBridgeMinSize_0(bond);
      bridgeBond.maxBridgeSize = this.mFragment.getBondBridgeMaxSize_0(bond);
      this.mBridgeBondList.add(bridgeBond);
    }
  }
}
;
_.buildFragmentGraph = function buildFragmentGraph(){
  var atom, atom0, current, excludeGroupNo, excludeGroupNo0, fragmentAtomUsed, fragmentBondUsed, graphAllocation, highest, i, i0, i1;
  this.mFragment.ensureHelperArrays_0(this.mRequiredHelperLevel);
  graphAllocation = $wnd.Math.max(this.mFragment.getAtoms_0(), this.mFragment.getBonds_0()) + 16;
  this.mFragmentGraphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, graphAllocation, 15, 1);
  this.mFragmentGraphParentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, graphAllocation, 15, 1);
  this.mFragmentGraphParentBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, graphAllocation, 15, 1);
  this.mFragmentGraphIsRingClosure = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, graphAllocation + 1, 16, 1);
  fragmentAtomUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mFragment.getAtoms_0(), 16, 1);
  fragmentBondUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mFragment.getBonds_0(), 16, 1);
  current = 0;
  for (atom0 = 0; atom0 < this.mFragment.getAtoms_0(); atom0++) {
    if (!this.mIsExcludeAtom[atom0] && !fragmentAtomUsed[atom0]) {
      this.mFragmentGraphAtom[current] = atom0;
      this.mFragmentGraphParentBond[current] = -1;
      this.mFragmentGraphParentAtom[current] = -1;
      highest = current;
      while (current <= highest) {
        for (i = 0; i < this.mFragment.getAllConnAtomsPlusMetalBonds_0(this.mFragmentGraphAtom[current]); i++)
          highest = this.tryAddCandidate(current, highest, i, fragmentAtomUsed, fragmentBondUsed, -1);
        while (this.mFragmentGraphIsRingClosure[++current])
        ;
      }
    }
  }
  this.mFragmentGraphSize = current;
  if (this.mFragmentExcludeAtoms != 0) {
    highest = this.mFragmentGraphSize - 1;
    for (excludeGroupNo0 = 0; excludeGroupNo0 < this.mExcludeGroupCount; excludeGroupNo0++) {
      current = 0;
      while (current <= highest) {
        for (i0 = 0; i0 < this.mFragment.getAllConnAtomsPlusMetalBonds_0(this.mFragmentGraphAtom[current]); i0++)
          highest = this.tryAddCandidate(current, highest, i0, fragmentAtomUsed, fragmentBondUsed, excludeGroupNo0);
        while (this.mFragmentGraphIsRingClosure[++current])
        ;
      }
    }
    for (atom = 0; atom < this.mFragment.getAtoms_0(); atom++) {
      if (this.mIsExcludeAtom[atom] && !fragmentAtomUsed[atom]) {
        this.mFragmentGraphAtom[current] = atom;
        this.mFragmentGraphParentBond[current] = -1;
        this.mFragmentGraphParentAtom[current] = -1;
        highest = current;
        while (current <= highest) {
          for (i0 = 0; i0 < this.mFragment.getAllConnAtomsPlusMetalBonds_0(this.mFragmentGraphAtom[current]); i0++)
            if (this.mFragment.getConnAtom_0(this.mFragmentGraphAtom[current], i0) < this.mFragment.getAtoms_0())
              highest = this.tryAddCandidate(current, highest, i0, fragmentAtomUsed, fragmentBondUsed, this.mExcludeGroupNo[atom]);
          while (this.mFragmentGraphIsRingClosure[++current])
          ;
        }
      }
    }
    this.mExcludeGroupGraphIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mExcludeGroupCount, 15, 1);
    for (i1 = 0; i1 < this.mExcludeGroupCount; i1++)
      this.mExcludeGroupGraphIndex[i1] = -1;
    for (i = this.mFragmentGraphSize; i < current; i++) {
      excludeGroupNo = this.mExcludeGroupNo[this.mFragmentGraphAtom[i]];
      if (this.mExcludeGroupGraphIndex[excludeGroupNo] == -1)
        this.mExcludeGroupGraphIndex[excludeGroupNo] = i;
    }
  }
  this.mFragmentGraphSizeWithExcludeGroups = current;
}
;
_.calculateImplicitSmallRingBondParity = function calculateImplicitSmallRingBondParity(moleculeBond){
  var atom, bondAtom, i, j, memberCount, r, relevantAtom, ringSet;
  ringSet = this.mMolecule.getRingSet_0();
  for (r = 0; r < ringSet.getSize_0(); r++) {
    if (ringSet.isBondMember_0(r, moleculeBond)) {
      relevantAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
      for (i = 0; i < 2; i++) {
        relevantAtom[i] = 2147483647;
        bondAtom = this.mMolecule.getBondAtom_0(i, moleculeBond);
        for (j = 0; j < this.mMolecule.getConnAtoms_0(bondAtom); j++) {
          atom = this.mMolecule.getConnAtom_0(bondAtom, j);
          if (atom != this.mMolecule.getBondAtom_0(1 - i, moleculeBond) && relevantAtom[i] > atom)
            relevantAtom[i] = atom;
        }
      }
      memberCount = 0;
      if (ringSet.isAtomMember_0(r, relevantAtom[0]))
        memberCount++;
      if (ringSet.isAtomMember_0(r, relevantAtom[1]))
        memberCount++;
      if (memberCount == 2)
        return 2;
      if (memberCount == 1)
        return 1;
      return 2;
    }
  }
  return 0;
}
;
_.doBridgeBondsMatch = function doBridgeBondsMatch(moleculeAtomUsed, excludeGroupNo){
  var bb, bb$iterator, bridgeSize, i, pathAtom;
  if (isNotNull(this.mBridgeBondList)) {
    this.mIsBridgeBondAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, moleculeAtomUsed.length, 16, 1);
    for (bb$iterator = this.mBridgeBondList.iterator(); bb$iterator.hasNext_0();) {
      bb = castTo(bb$iterator.next_3(), 264);
      if (jsEquals(this.mExcludeGroupNo, null) || excludeGroupNo == -1 && this.mExcludeGroupNo[bb.atom1] == -1 && this.mExcludeGroupNo[bb.atom2] == -1 || excludeGroupNo != -1 && (this.mExcludeGroupNo[bb.atom1] == excludeGroupNo || this.mExcludeGroupNo[bb.atom2] == excludeGroupNo)) {
        pathAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, bb.maxBridgeSize + 2, 15, 1);
        bridgeSize = this.mMolecule.getPath_1(pathAtom, this.mMatchTable[bb.atom1], this.mMatchTable[bb.atom2], bb.maxBridgeSize + 1, moleculeAtomUsed, null) - 1;
        if (bridgeSize < bb.minBridgeSize || bridgeSize > bb.maxBridgeSize)
          return false;
        for (i = 1; i <= bridgeSize; i++)
          this.mIsBridgeBondAtom[pathAtom[i]] = true;
      }
    }
  }
  return true;
}
;
_.doEZParitiesMatch = function doEZParitiesMatch(excludeGroupNo){
  var fragmentAtom1, fragmentAtom2, fragmentBond, fragmentParity, moleculeAtom1, moleculeAtom2, moleculeBond, moleculeParity;
  for (fragmentBond = 0; fragmentBond < this.mFragment.getBonds_0(); fragmentBond++) {
    if ((this.mFragment.getBondQueryFeatures_0(fragmentBond) & 1048576) != 0) {
      fragmentParity = this.mFragment.getBondParity_0(fragmentBond);
      if (fragmentParity == 0)
        continue;
      fragmentAtom1 = this.mFragment.getBondAtom_0(0, fragmentBond);
      fragmentAtom2 = this.mFragment.getBondAtom_0(1, fragmentBond);
      if (jsEquals(this.mExcludeGroupNo, null) || excludeGroupNo == -1 && this.mExcludeGroupNo[fragmentAtom1] == -1 && this.mExcludeGroupNo[fragmentAtom2] == -1 || excludeGroupNo != -1 && (this.mExcludeGroupNo[fragmentAtom1] == excludeGroupNo || this.mExcludeGroupNo[fragmentAtom2] == excludeGroupNo)) {
        moleculeAtom1 = this.mMatchTable[fragmentAtom1];
        moleculeAtom2 = this.mMatchTable[fragmentAtom2];
        moleculeBond = this.mMolecule.getBond_0(moleculeAtom1, moleculeAtom2);
        moleculeParity = this.mMolecule.getBondParity_0(moleculeBond);
        if (moleculeParity == 0) {
          if (this.mMolecule.isSmallRingBond_0(moleculeBond))
            moleculeParity = this.calculateImplicitSmallRingBondParity(moleculeBond);
          if (moleculeParity == 0)
            continue;
        }
        if (fragmentParity == 3)
          continue;
        if (moleculeParity == 3)
          continue;
        if (this.isEZParityInversion(fragmentBond, moleculeBond) == (fragmentParity == moleculeParity))
          return false;
      }
    }
  }
  return true;
}
;
_.doTHParitiesMatch = function doTHParitiesMatch(excludeGroupNo){
  var baseGroupAndType, baseParityComparison, esrAtom, esrAtomIndex, esrGroupAtomCount, fragmentAtom, fragmentAtom0, fragmentAtom1, fragmentBaseAtom, fragmentParity, moleculeAtom, moleculeBaseAtom, moleculeParity, parityComparison;
  esrGroupAtomCount = 0;
  for (fragmentAtom0 = 0; fragmentAtom0 < this.mFragment.getAtoms_0(); fragmentAtom0++) {
    if ((jsEquals(this.mExcludeGroupNo, null) || this.mExcludeGroupNo[fragmentAtom0] == excludeGroupNo) && neq(and_0(this.mFragment.getAtomQueryFeatures(fragmentAtom0), 8192), 0)) {
      moleculeAtom = this.mMatchTable[fragmentAtom0];
      fragmentParity = this.mFragment.getAtomParity_0(fragmentAtom0);
      moleculeParity = this.mMolecule.getAtomParity_0(moleculeAtom);
      if (fragmentParity == 0)
        continue;
      if (fragmentParity == 3)
        continue;
      if (moleculeParity == 0 || moleculeParity == 3)
        return false;
      if (this.mFragment.getAtomESRType_0(fragmentAtom0) == 1) {
        esrGroupAtomCount++;
        continue;
      }
      if (this.mMolecule.getAtomESRType_0(moleculeAtom) == 1)
        return false;
      if (this.mFragment.getAtomESRType_0(fragmentAtom0) == 2) {
        esrGroupAtomCount++;
        continue;
      }
      if (this.mMolecule.getAtomESRType_0(moleculeAtom) == 2)
        return false;
      if (this.isTHParityInversion(fragmentAtom0) == (fragmentParity == moleculeParity))
        return false;
    }
  }
  if (esrGroupAtomCount != 0) {
    esrAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, esrGroupAtomCount, 15, 1);
    esrAtomIndex = 0;
    for (fragmentAtom1 = 0; fragmentAtom1 < this.mFragment.getAtoms_0(); fragmentAtom1++) {
      if ((jsEquals(this.mExcludeGroupNo, null) || this.mExcludeGroupNo[fragmentAtom1] == excludeGroupNo) && neq(and_0(this.mFragment.getAtomQueryFeatures(fragmentAtom1), 8192), 0)) {
        fragmentParity = this.mFragment.getAtomParity_0(fragmentAtom1);
        if (fragmentParity != 0 && fragmentParity != 3) {
          esrAtom[esrAtomIndex++] = this.mFragment.getAtomESRGroup_0(fragmentAtom1) << 24 | this.mFragment.getAtomESRType_0(fragmentAtom1) << 22 | fragmentAtom1;
        }
      }
    }
    ju.sort_3(esrAtom);
    esrAtomIndex = 0;
    while (esrAtomIndex < esrAtom.length) {
      fragmentBaseAtom = esrAtom[esrAtomIndex] & 4194303;
      moleculeBaseAtom = this.mMatchTable[fragmentBaseAtom];
      baseGroupAndType = esrAtom[esrAtomIndex] & -4194304;
      baseParityComparison = this.isTHParityInversion(fragmentBaseAtom) ^ this.mFragment.getAtomParity_0(fragmentBaseAtom) == this.mMolecule.getAtomParity_0(moleculeBaseAtom);
      for (esrAtomIndex++; esrAtomIndex < esrAtom.length && (esrAtom[esrAtomIndex] & -4194304) == baseGroupAndType; esrAtomIndex++) {
        fragmentAtom = esrAtom[esrAtomIndex] & 4194303;
        moleculeAtom = this.mMatchTable[fragmentAtom];
        if (this.mMolecule.getAtomESRType_0(moleculeAtom) != this.mMolecule.getAtomESRType_0(moleculeBaseAtom) || this.mMolecule.getAtomESRGroup_0(moleculeAtom) != this.mMolecule.getAtomESRGroup_0(moleculeBaseAtom))
          return false;
        parityComparison = this.isTHParityInversion(fragmentAtom) ^ this.mFragment.getAtomParity_0(fragmentAtom) == this.mMolecule.getAtomParity_0(moleculeAtom);
        if (parityComparison != baseParityComparison)
          return false;
      }
    }
  }
  return true;
}
;
_.findFragmentInMolecule = function findFragmentInMolecule(countMode, matchMode){
  return this.findFragmentInMolecule_0(countMode, matchMode, null);
}
;
_.findFragmentInMolecule_0 = function findFragmentInMolecule_0(countMode, matchMode, atomExcluded){
  var atom, atomUsed, candidate, current, excludeGroup, index_0, isExcludedMatch, maxIndex;
  this.mStop = false;
  this.mMatchList = new ju.ArrayList;
  this.mBridgeBondAtomList = new ju.ArrayList;
  this.mSortedMatchSet.clear();
  if (isNull(this.mMolecule) || isNull(this.mFragment))
    return 0;
  if (this.mFragment.getAtoms_0() - this.mFragmentExcludeAtoms > this.mMolecule.getAtoms_0() || this.mFragment.getBonds_0() - this.mFragmentExcludeBonds > this.mMolecule.getBonds_0())
    return 0;
  if (this.mFragment.getAtoms_0() == 0)
    return 0;
  if (countMode == 6)
    this.mRequiredHelperLevel = 63;
  this.setupAtomAndBondFeatures(matchMode);
  atomUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMolecule.getAtoms_0(), 16, 1);
  if (jsNotEquals(atomExcluded, null))
    for (atom = 0; atom < this.mMolecule.getAtoms_0(); atom++)
      atomUsed[atom] = atomExcluded[atom];
  this.mMatchTable = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragment.getAtoms_0(), 15, 1);
  ju.fill_0(this.mMatchTable, -1);
  index_0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragmentGraphSizeWithExcludeGroups, 15, 1);
  ju.fill_0(index_0, -1);
  current = 0;
  while (!this.mStop) {
    if (this.mFragmentGraphSize != 0) {
      maxIndex = this.mFragmentGraphParentAtom[current] == -1?this.mMolecule.getAtoms_0():this.mMolecule.getAllConnAtomsPlusMetalBonds_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]]);
      index_0[current]++;
      if (index_0[current] == maxIndex) {
        index_0[current] = -1;
        if (current == 0)
          break;
        current--;
        if (!this.mFragmentGraphIsRingClosure[current])
          atomUsed[this.mMatchTable[this.mFragmentGraphAtom[current]]] = false;
        continue;
      }
      if (this.mFragmentGraphParentAtom[current] == -1) {
        if (!atomUsed[index_0[current]]) {
          if (this.areAtomsSimilar(index_0[current], this.mFragmentGraphAtom[current])) {
            this.mMatchTable[this.mFragmentGraphAtom[current]] = index_0[current];
            atomUsed[index_0[current]] = true;
            current++;
          }
        }
      }
       else {
        if (this.mMolecule.getConnAtom_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]) >= this.mMolecule.getAtoms_0())
          continue;
        candidate = this.mMolecule.getConnAtom_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]);
        if (!this.mFragmentGraphIsRingClosure[current]) {
          if (!atomUsed[candidate]) {
            if (this.areAtomsSimilar(candidate, this.mFragmentGraphAtom[current]) && this.areBondsSimilar(this.mMolecule.getConnBond_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]), this.mFragmentGraphParentBond[current])) {
              atomUsed[candidate] = true;
              this.mMatchTable[this.mFragmentGraphAtom[current]] = candidate;
              current++;
            }
          }
        }
         else {
          if (candidate == this.mMatchTable[this.mFragmentGraphAtom[current]] && this.areBondsSimilar(this.mMolecule.getConnBond_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]), this.mFragmentGraphParentBond[current])) {
            current++;
          }
        }
      }
    }
    if (current == this.mFragmentGraphSize) {
      if (this.doTHParitiesMatch(-1) && this.doEZParitiesMatch(-1) && this.doBridgeBondsMatch(atomUsed, -1)) {
        isExcludedMatch = false;
        for (excludeGroup = 0; excludeGroup < this.mExcludeGroupCount; excludeGroup++) {
          if (this.isExcludeGroupMatch(atomUsed, index_0, excludeGroup)) {
            isExcludedMatch = true;
            break;
          }
        }
        if (countMode == 1 && !isExcludedMatch)
          return 1;
        if (!isExcludedMatch) {
          this.addMatchIfQualifies(countMode);
          if (countMode == 2)
            return 1;
        }
      }
      if (current == 0)
        break;
      current--;
      if (!this.mFragmentGraphIsRingClosure[current])
        atomUsed[this.mMatchTable[this.mFragmentGraphAtom[current]]] = false;
    }
  }
  return this.mMatchList.size();
}
;
_.getAtomQueryDefaults = function getAtomQueryDefaults(mol, atom){
  var charge, eValue, hydrogens, neighbours, piElectrons, queryDefaults, ringBonds;
  queryDefaults = 0;
  if (!mol.isFragment_0()) {
    if (mol.isHeteroAromaticAtom(atom))
      queryDefaults = or_0(queryDefaults, or_0(2, {l:0, m:0, h:4}));
    else if (mol.isAromaticAtom_1(atom))
      queryDefaults = or_0(queryDefaults, 2);
    else 
      queryDefaults = or_0(queryDefaults, 4);
    if (mol.isAtomStereoCenter_0(atom))
      queryDefaults = or_0(queryDefaults, {l:0, m:0, h:1});
    else 
      queryDefaults = or_0(queryDefaults, {l:0, m:0, h:2});
    ringBonds = mol.getAtomRingBondCount_0(atom);
    if (ringBonds == 0)
      queryDefaults = or_0(queryDefaults, or_0(or_0(16, 32), 64));
    else if (ringBonds == 2)
      queryDefaults = or_0(queryDefaults, or_0(or_0(8, 32), 64));
    else if (ringBonds == 3)
      queryDefaults = or_0(queryDefaults, or_0(or_0(8, 16), 64));
    else 
      queryDefaults = or_0(queryDefaults, or_0(or_0(8, 16), 32));
    charge = mol.getAtomCharge_0(atom);
    if (charge == 0)
      queryDefaults = or_0(queryDefaults, or_0(33554432, 134217728));
    else if (charge < 0)
      queryDefaults = or_0(queryDefaults, or_0(67108864, 134217728));
    else if (charge > 0)
      queryDefaults = or_0(queryDefaults, or_0(67108864, 33554432));
    hydrogens = mol.getAllHydrogens_0(atom);
    switch (hydrogens) {
      case 0:
        queryDefaults = or_0(queryDefaults, and_0(1920, not_0(128)));
        break;
      case 1:
        queryDefaults = or_0(queryDefaults, and_0(1920, not_0(256)));
        break;
      case 2:
        queryDefaults = or_0(queryDefaults, and_0(1920, not_0(512)));
        break;
      default:queryDefaults = or_0(queryDefaults, and_0(1920, not_0(1024)));
        break;
    }
    neighbours = mol.getConnAtoms_0(atom);
    switch (neighbours) {
      case 0:
        queryDefaults = or_0(queryDefaults, and_0(4063232, not_0(131072)));
        break;
      case 1:
        queryDefaults = or_0(queryDefaults, and_0(4063232, not_0(262144)));
        break;
      case 2:
        queryDefaults = or_0(queryDefaults, and_0(4063232, not_0(524288)));
        break;
      case 3:
        queryDefaults = or_0(queryDefaults, and_0(4063232, not_0(1048576)));
        break;
      default:queryDefaults = or_0(queryDefaults, and_0(4063232, not_0(2097152)));
        break;
    }
    eValue = mol.getAtomElectronegativeNeighbours(atom);
    switch (eValue) {
      case 0:
        queryDefaults = or_0(queryDefaults, and_0(17042430230528, not_0(549755813888)));
        break;
      case 1:
        queryDefaults = or_0(queryDefaults, and_0(17042430230528, not_0(1099511627776)));
        break;
      case 2:
        queryDefaults = or_0(queryDefaults, and_0(17042430230528, not_0(2199023255552)));
        break;
      case 3:
        queryDefaults = or_0(queryDefaults, and_0(17042430230528, not_0(4398046511104)));
        break;
      default:queryDefaults = or_0(queryDefaults, and_0(17042430230528, not_0(8796093022208)));
        break;
    }
    piElectrons = mol.getAtomPi_0(atom);
    switch (piElectrons) {
      case 0:
        queryDefaults = or_0(queryDefaults, or_0(32768, 65536));
        break;
      case 1:
        queryDefaults = or_0(queryDefaults, or_0(16384, 65536));
        break;
      default:queryDefaults = or_0(queryDefaults, or_0(16384, 32768));
        break;
    }
  }
   else {
    if (mol.isHeteroAromaticAtom(atom))
      queryDefaults = or_0(queryDefaults, or_0(2, {l:0, m:0, h:4}));
    else if (mol.isAromaticAtom_1(atom))
      queryDefaults = or_0(queryDefaults, 2);
    ringBonds = mol.getAtomRingBondCount_0(atom);
    if (ringBonds != 0) {
      queryDefaults = or_0(queryDefaults, 8);
      if (ringBonds > 2)
        queryDefaults = or_0(queryDefaults, 16);
      if (ringBonds > 3)
        queryDefaults = or_0(queryDefaults, 32);
    }
    charge = mol.getAtomCharge_0(atom);
    if (charge < 0)
      queryDefaults = or_0(queryDefaults, or_0(67108864, 134217728));
    else if (charge > 0)
      queryDefaults = or_0(queryDefaults, or_0(67108864, 33554432));
    neighbours = mol.getConnAtoms_0(atom);
    switch (neighbours) {
      case 0:
        break;
      case 1:
        queryDefaults = or_0(queryDefaults, 131072);
        break;
      case 2:
        queryDefaults = or_0(queryDefaults, or_0(131072, 262144));
        break;
      case 3:
        queryDefaults = or_0(queryDefaults, or_0(or_0(131072, 262144), 524288));
        break;
      default:queryDefaults = or_0(queryDefaults, and_0(4063232, not_0(2097152)));
        break;
    }
    eValue = mol.getAtomElectronegativeNeighbours(atom);
    switch (eValue) {
      case 0:
        break;
      case 1:
        queryDefaults = or_0(queryDefaults, 549755813888);
        break;
      case 2:
        queryDefaults = or_0(queryDefaults, or_0(549755813888, 1099511627776));
        break;
      case 3:
        queryDefaults = or_0(queryDefaults, or_0(or_0(549755813888, 1099511627776), 2199023255552));
        break;
      default:queryDefaults = or_0(queryDefaults, and_0(17042430230528, not_0(8796093022208)));
        break;
    }
    piElectrons = mol.getAtomPi_0(atom);
    if (piElectrons > 0)
      queryDefaults = or_0(queryDefaults, 16384);
    if (piElectrons > 1)
      queryDefaults = or_0(queryDefaults, 32768);
  }
  return queryDefaults;
}
;
_.getBondQueryDefaults = function getBondQueryDefaults(mol, bond){
  var queryDefaults;
  queryDefaults = 0;
  if (mol.isDelocalizedBond_0(bond) || mol.getBondType_0(bond) == 64)
    queryDefaults |= 8;
  else 
    switch (mol.getBondOrder_0(bond)) {
      case 0:
        queryDefaults |= 32;
        break;
      case 1:
        queryDefaults |= 1;
        break;
      case 2:
        queryDefaults |= 2;
        break;
      case 3:
        queryDefaults |= 4;
        break;
      case 4:
        queryDefaults |= 32;
        break;
      case 5:
        queryDefaults |= 64;
        break;
    }
  if (mol.isRingBond_0(bond))
    queryDefaults |= 256;
  else if (!mol.isFragment_0())
    queryDefaults |= 128;
  if (mol.isAromaticBond_0(bond))
    queryDefaults |= 2097152;
  else if (!mol.isFragment_0())
    queryDefaults |= 4194304;
  return queryDefaults;
}
;
_.getMatchList = function getMatchList(){
  return this.mMatchList;
}
;
_.getSortedMatch = function getSortedMatch(match_0){
  var atom, atom$array, atom$array0, atom$index, atom$index0, atom$max, atom$max0, count, index_0, oldMatch;
  count = 0;
  for (atom$array0 = match_0 , atom$index0 = 0 , atom$max0 = atom$array0.length; atom$index0 < atom$max0; ++atom$index0) {
    atom = atom$array0[atom$index0];
    if (atom == -1)
      count++;
  }
  if (count != 0) {
    oldMatch = match_0;
    match_0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, oldMatch.length - count, 15, 1);
    index_0 = 0;
    for (atom$array = oldMatch , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
      atom = atom$array[atom$index];
      if (atom != -1)
        match_0[index_0++] = atom;
    }
  }
  ju.sort_3(match_0);
  return match_0;
}
;
_.getSortedSymmetryMatch = function getSortedSymmetryMatch(match_0){
  var atom, atom$array, atom$index, atom$max, count, i, index_0, symmetryMatch;
  count = 0;
  for (atom$array = match_0 , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    if (atom == -1)
      count++;
  }
  symmetryMatch = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, match_0.length - count, 15, 1);
  index_0 = 0;
  for (i = 0; i < match_0.length; i++) {
    if (match_0[i] != -1) {
      symmetryMatch[index_0] = this.mFragment.getSymmetryRank_0(i) << 16 | this.mMolecule.getSymmetryRank_0(match_0[i]);
      if (jsNotEquals(this.mFragmentAtomContextRank, null))
        symmetryMatch[index_0] |= this.mFragmentAtomContextRank[i] << 24;
      index_0++;
    }
  }
  ju.sort_3(symmetryMatch);
  return symmetryMatch;
}
;
_.isEZParityInversion = function isEZParityInversion(fragmentBond, moleculeBond){
  var fragmentAtom, fragmentNeighbour, i, inversion, j, j0, lowFragmentNeighbour, lowMoleculeNeighbour, moleculeAtom, moleculeNeighbour, otherFragmentAtom, otherMoleculeAtom;
  inversion = false;
  for (i = 0; i < 2; i++) {
    fragmentAtom = this.mFragment.getBondAtom_0(i, fragmentBond);
    moleculeAtom = this.mMatchTable[fragmentAtom];
    if (this.mMolecule.getConnAtoms_0(moleculeAtom) > 2) {
      otherFragmentAtom = this.mFragment.getBondAtom_0(1 - i, fragmentBond);
      lowFragmentNeighbour = 2147483647;
      for (j0 = 0; j0 < this.mFragment.getConnAtoms_0(fragmentAtom); j0++) {
        fragmentNeighbour = this.mFragment.getConnAtom_0(fragmentAtom, j0);
        if (fragmentNeighbour != otherFragmentAtom && lowFragmentNeighbour > fragmentNeighbour)
          lowFragmentNeighbour = fragmentNeighbour;
      }
      otherMoleculeAtom = this.mMatchTable[otherFragmentAtom];
      lowMoleculeNeighbour = 2147483647;
      for (j = 0; j < this.mMolecule.getConnAtoms_0(moleculeAtom); j++) {
        moleculeNeighbour = this.mMolecule.getConnAtom_0(moleculeAtom, j);
        if (moleculeNeighbour != otherMoleculeAtom && lowMoleculeNeighbour > moleculeNeighbour)
          lowMoleculeNeighbour = moleculeNeighbour;
      }
      if (this.mMatchTable[lowFragmentNeighbour] != lowMoleculeNeighbour)
        inversion = !inversion;
    }
  }
  return inversion;
}
;
_.isExcludeGroupMatch = function isExcludeGroupMatch(atomUsed, index_0, excludeGroupNo){
  var atom, candidate, current, excludeGroupGraphBase, excludeGroupGraphMax, i, i0, maxIndex;
  excludeGroupGraphBase = this.mExcludeGroupGraphIndex[excludeGroupNo];
  excludeGroupGraphMax = excludeGroupGraphBase + 1;
  while (excludeGroupGraphMax < this.mFragmentGraphSizeWithExcludeGroups && this.mExcludeGroupNo[this.mFragmentGraphAtom[excludeGroupGraphMax]] == excludeGroupNo)
    excludeGroupGraphMax++;
  for (i0 = excludeGroupGraphBase; i0 < excludeGroupGraphMax; i0++)
    index_0[i0] = -1;
  current = excludeGroupGraphBase;
  while (true) {
    maxIndex = this.mFragmentGraphParentAtom[current] == -1?this.mMolecule.getAtoms_0():this.mMolecule.getAllConnAtomsPlusMetalBonds_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]]);
    index_0[current]++;
    if (index_0[current] == maxIndex) {
      index_0[current] = -1;
      if (current == excludeGroupGraphBase)
        break;
      current--;
      if (!this.mFragmentGraphIsRingClosure[current]) {
        atomUsed[this.mMatchTable[this.mFragmentGraphAtom[current]]] = false;
        this.mMatchTable[this.mFragmentGraphAtom[current]] = -1;
      }
      continue;
    }
    if (this.mFragmentGraphParentAtom[current] == -1) {
      if (!atomUsed[index_0[current]]) {
        if (this.areAtomsSimilar(index_0[current], this.mFragmentGraphAtom[current])) {
          this.mMatchTable[this.mFragmentGraphAtom[current]] = index_0[current];
          atomUsed[index_0[current]] = true;
          current++;
        }
      }
    }
     else {
      if (this.mMolecule.getConnAtom_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]) >= this.mMolecule.getAtoms_0()) {
        index_0[current]++;
        continue;
      }
      candidate = this.mMolecule.getConnAtom_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]);
      if (!this.mFragmentGraphIsRingClosure[current]) {
        if (!atomUsed[candidate]) {
          if (this.areAtomsSimilar(candidate, this.mFragmentGraphAtom[current]) && this.areBondsSimilar(this.mMolecule.getConnBond_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]), this.mFragmentGraphParentBond[current])) {
            atomUsed[candidate] = true;
            this.mMatchTable[this.mFragmentGraphAtom[current]] = candidate;
            current++;
          }
        }
      }
       else {
        if (candidate == this.mMatchTable[this.mFragmentGraphAtom[current]] && this.areBondsSimilar(this.mMolecule.getConnBond_0(this.mMatchTable[this.mFragmentGraphParentAtom[current]], index_0[current]), this.mFragmentGraphParentBond[current])) {
          current++;
        }
      }
    }
    if (current == excludeGroupGraphMax) {
      if (this.doTHParitiesMatch(excludeGroupNo) && this.doEZParitiesMatch(excludeGroupNo) && this.doBridgeBondsMatch(atomUsed, excludeGroupNo)) {
        for (i = excludeGroupGraphBase; i < excludeGroupGraphMax; i++) {
          if (!this.mFragmentGraphIsRingClosure[i]) {
            atom = this.mFragmentGraphAtom[i];
            atomUsed[this.mMatchTable[atom]] = false;
            this.mMatchTable[atom] = -1;
          }
        }
        return true;
      }
      current--;
      if (!this.mFragmentGraphIsRingClosure[current]) {
        atomUsed[this.mMatchTable[this.mFragmentGraphAtom[current]]] = false;
        this.mMatchTable[this.mFragmentGraphAtom[current]] = -1;
      }
    }
  }
  return false;
}
;
_.isFragmentInMolecule_0 = function isFragmentInMolecule(){
  return this.findFragmentInMolecule(1, this.mDefaultMatchMode) > 0;
}
;
_.isFragmentInMolecule_1 = function isFragmentInMolecule_0(matchMode){
  return this.findFragmentInMolecule(1, matchMode) > 0;
}
;
_.isListMember = function isListMember(atomicNo, list){
  var i;
  for (i = 0; i < list.length; i++)
    if (list[i] == atomicNo)
      return true;
  return false;
}
;
_.isSubListOf = function isSubListOf(list1, list2){
  var atomicNo1, i1, i2;
  i2 = 0;
  for (i1 = 0; i1 < list1.length; i1++) {
    atomicNo1 = list1[i1];
    while (list2[i2] < atomicNo1) {
      i2++;
      if (i2 == list2.length)
        return false;
    }
    if (list2[i2] > atomicNo1)
      return false;
  }
  return true;
}
;
_.isTHParityInversion = function isTHParityInversion(fragmentAtom){
  var connAtom, connAtom1, connAtom2, i, inversion, j, neighbour, neighbours;
  inversion = false;
  if (this.mFragment.getAtomPi_0(fragmentAtom) == 0) {
    for (i = 1; i < this.mFragment.getConnAtoms_0(fragmentAtom); i++) {
      for (j = 0; j < i; j++) {
        connAtom1 = this.mFragment.getConnAtom_0(fragmentAtom, i);
        connAtom2 = this.mFragment.getConnAtom_0(fragmentAtom, j);
        if (this.mMatchTable[connAtom1] > this.mMatchTable[connAtom2] ^ connAtom1 > connAtom2)
          inversion = !inversion;
      }
    }
  }
   else {
    for (i = 0; i < this.mFragment.getConnAtoms_0(fragmentAtom); i++) {
      connAtom = this.mFragment.getConnAtom_0(fragmentAtom, i);
      neighbours = 0;
      neighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 3, 15, 1);
      for (j = 0; j < this.mFragment.getConnAtoms_0(connAtom); j++) {
        neighbour[neighbours] = this.mFragment.getConnAtom_0(connAtom, j);
        if (neighbour[neighbours] != fragmentAtom)
          neighbours++;
      }
      if (neighbours == 2 && this.mMatchTable[neighbour[0]] > this.mMatchTable[neighbour[1]] ^ neighbour[0] > neighbour[1])
        inversion = !inversion;
    }
  }
  return inversion;
}
;
_.listsOverlap = function listsOverlap(list1, list2){
  var atomicNo1, atomicNo2, i1, i2;
  i1 = 0;
  i2 = 0;
  while (i1 < list1.length && i2 < list2.length) {
    atomicNo1 = list1[i1];
    atomicNo2 = list2[i2];
    if (atomicNo1 == atomicNo2)
      return true;
    if (atomicNo1 < atomicNo2)
      i1++;
    else 
      i2++;
  }
  return false;
}
;
_.setFragment_1 = function setFragment_0(fragment){
  var atom, atom0, atom1, bond, bond0;
  if (isNull(fragment) || fragment.getAllAtoms_0() == 0 || !fragment.isFragment_0()) {
    this.mFragment = null;
    return;
  }
  this.mFragment = fragment;
  this.mFragmentFeaturesValid = false;
  this.mFragment.ensureHelperArrays_0(1);
  this.mRequiredHelperLevel = 7;
  for (atom0 = 0; atom0 < this.mFragment.getAtoms_0(); atom0++)
    if (neq(and_0(this.mFragment.getAtomQueryFeatures(atom0), or_0({l:0, m:0, h:3}, 8192)), 0))
      this.mRequiredHelperLevel = 15;
  for (bond0 = 0; bond0 < this.mFragment.getBonds_0(); bond0++)
    if ((this.mFragment.getBondQueryFeatures_0(bond0) & 1048576) != 0)
      this.mRequiredHelperLevel = 15;
  if (this.mMoleculeFeaturesValid && this.mRequiredHelperLevel != 7)
    this.mMolecule.ensureHelperArrays_0(this.mRequiredHelperLevel);
  this.mFragmentExcludeAtoms = 0;
  this.mFragmentExcludeBonds = 0;
  this.mIsExcludeAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mFragment.getAtoms_0(), 16, 1);
  for (atom1 = 0; atom1 < this.mFragment.getAtoms_0(); atom1++) {
    this.mIsExcludeAtom[atom1] = neq(and_0(this.mFragment.getAtomQueryFeatures(atom1), 536870912), 0);
    if (this.mIsExcludeAtom[atom1])
      this.mFragmentExcludeAtoms++;
  }
  this.mExcludeGroupCount = 0;
  this.mExcludeGroupNo = null;
  this.mFragmentAtomContextRank = null;
  if (this.mFragmentExcludeAtoms != 0) {
    if (this.mFragmentExcludeAtoms != 0)
      for (bond = 0; bond < this.mFragment.getBonds_0(); bond++)
        if (this.mIsExcludeAtom[this.mFragment.getBondAtom_0(0, bond)] || this.mIsExcludeAtom[this.mFragment.getBondAtom_0(1, bond)])
          this.mFragmentExcludeBonds++;
    for (atom = 0; atom < this.mFragment.getAllAtoms_0(); atom++)
      this.mFragment.setAtomMarker_0(atom, this.mIsExcludeAtom[atom]);
    this.mExcludeGroupNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragment.getAllAtoms_0(), 15, 1);
    this.mExcludeGroupCount = this.mFragment.getFragmentNumbers_0(this.mExcludeGroupNo, true, false);
  }
}
;
_.setMol_0 = function setMol(fragment, molecule){
  this.setMolecule_0(molecule);
  this.setFragment_1(fragment);
}
;
_.setMolecule_0 = function setMolecule(molecule){
  if (isNull(molecule) || molecule.getAllAtoms_0() == 0) {
    this.mMolecule = null;
    return;
  }
  this.mMolecule = molecule;
  this.mMoleculeFeaturesValid = false;
  this.mMolecule.ensureHelperArrays_0(1);
}
;
_.setupAtomAndBondFeatures = function setupAtomAndBondFeatures(matchMode){
  if (!this.mMoleculeFeaturesValid) {
    this.setupMoleculeFeatures(matchMode);
    this.mMoleculeFeaturesValid = true;
  }
  if (!this.mFragmentFeaturesValid) {
    this.setupFragmentFeatures(matchMode);
    this.buildFragmentGraph();
    this.buildBridgeBondList();
    this.mFragmentFeaturesValid = true;
  }
}
;
_.setupFragmentFeatures = function setupFragmentFeatures(matchMode){
  var atom, atom0, atom1, atomFeaturesWithoutExcludeAtoms, atomTypeWithoutExcludeAtoms, bond, bondFeaturesWithoutExcludeAtoms, fragmentWithoutExcludeGroups, index_0, isNonExcludeAtom;
  atomFeaturesWithoutExcludeAtoms = null;
  bondFeaturesWithoutExcludeAtoms = null;
  atomTypeWithoutExcludeAtoms = null;
  this.mFragment.ensureHelperArrays_0(this.mRequiredHelperLevel);
  this.mFragmentConnAtoms = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragment.getAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < this.mFragment.getAtoms_0(); atom0++)
    this.mFragmentConnAtoms[atom0] = this.mFragment.getConnAtoms_0(atom0);
  if (this.mFragmentExcludeAtoms != 0) {
    fragmentWithoutExcludeGroups = new carc2.StereoMolecule_0(this.mFragment.getAllAtoms_0(), this.mFragment.getAllBonds_0());
    isNonExcludeAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mFragment.getAllAtoms_0(), 16, 1);
    for (atom1 = 0; atom1 < this.mFragment.getAllAtoms_0(); atom1++)
      isNonExcludeAtom[atom1] = !this.mIsExcludeAtom[atom1];
    this.mFragment.copyMoleculeByAtoms_0(fragmentWithoutExcludeGroups, isNonExcludeAtom, true, null);
    fragmentWithoutExcludeGroups.ensureHelperArrays_0(this.mRequiredHelperLevel);
    this.setupFragmentFeatures_0(fragmentWithoutExcludeGroups, matchMode);
    atomFeaturesWithoutExcludeAtoms = this.mFragmentAtomFeatures;
    bondFeaturesWithoutExcludeAtoms = this.mFragmentBondFeatures;
    atomTypeWithoutExcludeAtoms = this.mFragmentAtomType;
    index_0 = 0;
    for (atom = 0; atom < this.mFragment.getAtoms_0(); atom++)
      if (!this.mIsExcludeAtom[atom])
        this.mFragmentConnAtoms[atom] = fragmentWithoutExcludeGroups.getConnAtoms_0(index_0++);
  }
  this.setupFragmentFeatures_0(this.mFragment, matchMode);
  if (this.mFragmentExcludeAtoms != 0) {
    index_0 = 0;
    for (atom = 0; atom < this.mFragment.getAllAtoms_0(); atom++) {
      if (!this.mIsExcludeAtom[atom]) {
        this.mFragmentAtomFeatures[atom] = atomFeaturesWithoutExcludeAtoms[index_0];
        this.mFragmentAtomType[atom] = atomTypeWithoutExcludeAtoms[index_0++];
      }
    }
    index_0 = 0;
    for (bond = 0; bond < this.mFragment.getAllBonds_0(); bond++) {
      if (!this.mIsExcludeAtom[this.mFragment.getBondAtom_0(0, bond)] && !this.mIsExcludeAtom[this.mFragment.getBondAtom_0(1, bond)]) {
        this.mFragmentBondFeatures[bond] = bondFeaturesWithoutExcludeAtoms[index_0++];
      }
    }
  }
}
;
_.setupFragmentFeatures_0 = function setupFragmentFeatures_0(fragment, matchMode){
  var atom, atom$array, atom$index, atom$max, atom0, bond, bond$array, bond$index, bond$max, bond0, containsBridgeBond, i, nTotalFragmentAtoms, nTotalFragmentBonds, ringSet, ringSize;
  nTotalFragmentAtoms = fragment.getAtoms_0();
  this.mFragmentAtomFeatures = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, fragment.getAtoms_0(), 14, 1);
  this.mFragmentAtomType = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragment.getAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < nTotalFragmentAtoms; atom0++) {
    this.mFragmentAtomFeatures[atom0] = xor_0(and_0(or_0(this.getAtomQueryDefaults(fragment, atom0), fragment.getAtomQueryFeatures(atom0)), {l:4179966, m:4063288, h:7}), {l:4194302, m:4193343, h:7});
    this.mFragmentAtomType[atom0] = fragment.getAtomicNo_0(atom0);
    if ((matchMode & 1) != 0)
      this.mFragmentAtomType[atom0] += fragment.getAtomCharge_0(atom0) + 16 << 8;
    if ((matchMode & 2) != 0)
      this.mFragmentAtomType[atom0] += fragment.getAtomMass_0(atom0) << 16;
  }
  this.mFragmentRingFeatures = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, fragment.getAtoms_0(), 14, 1);
  ringSet = fragment.getRingSet_0();
  for (i = 0; i < ringSet.getSize_0(); i++) {
    containsBridgeBond = false;
    for (bond$array = ringSet.getRingBonds_0(i) , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
      bond0 = bond$array[bond$index];
      if (fragment.isBondBridge_0(bond0)) {
        containsBridgeBond = true;
        break;
      }
    }
    if (!containsBridgeBond) {
      ringSize = ringSet.getRingSize_0(i);
      for (atom$array = ringSet.getRingAtoms_0(i) , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
        atom = atom$array[atom$index];
        if (ringSize == 3)
          this.mFragmentRingFeatures[atom] = or_0(this.mFragmentRingFeatures[atom], 8589934592);
        else if (ringSize == 4)
          this.mFragmentRingFeatures[atom] = or_0(this.mFragmentRingFeatures[atom], 17179869184);
        else if (ringSize == 5)
          this.mFragmentRingFeatures[atom] = or_0(this.mFragmentRingFeatures[atom], 34359738368);
        else if (ringSize == 6)
          this.mFragmentRingFeatures[atom] = or_0(this.mFragmentRingFeatures[atom], 68719476736);
        else if (ringSize == 7)
          this.mFragmentRingFeatures[atom] = or_0(this.mFragmentRingFeatures[atom], 137438953472);
      }
    }
  }
  nTotalFragmentBonds = fragment.getBonds_0();
  this.mFragmentBondFeatures = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragment.getBonds_0(), 15, 1);
  for (bond = 0; bond < nTotalFragmentBonds; bond++) {
    this.mFragmentBondFeatures[bond] = (this.getBondQueryDefaults(fragment, bond) | fragment.getBondQueryFeatures_0(bond)) & 6291967 ^ 6291840;
    if ((matchMode & 4) != 0) {
      if ((this.mFragmentBondFeatures[bond] & 2) != 0)
        this.mFragmentBondFeatures[bond] |= 8;
    }
     else if ((matchMode & 8) != 0) {
      if ((this.mFragmentBondFeatures[bond] & 2) != 0 && fragment.isAromaticBond_0(bond))
        this.mFragmentBondFeatures[bond] |= 8;
    }
  }
}
;
_.setupMoleculeFeatures = function setupMoleculeFeatures(matchMode){
  var atom, atom$array, atom$index, atom$max, atom0, atom1, bond, i, nTotalMoleculeAtoms, nTotalMoleculeBonds, ringSet, ringSize;
  this.mMolecule.ensureHelperArrays_0(this.mRequiredHelperLevel);
  nTotalMoleculeAtoms = this.mMolecule.getAtoms_0();
  this.mMoleculeAtomType = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, nTotalMoleculeAtoms, 15, 1);
  this.mMoleculeAtomFeatures = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, nTotalMoleculeAtoms, 14, 1);
  for (atom0 = 0; atom0 < nTotalMoleculeAtoms; atom0++) {
    this.mMoleculeAtomFeatures[atom0] = xor_0(and_0(or_0(this.getAtomQueryDefaults(this.mMolecule, atom0), this.mMolecule.getAtomQueryFeatures(atom0)), {l:4179966, m:4063288, h:7}), {l:4194302, m:4193343, h:7});
    this.mMoleculeAtomType[atom0] = this.mMolecule.getAtomicNo_0(atom0);
    if ((matchMode & 1) != 0)
      this.mMoleculeAtomType[atom0] += this.mMolecule.getAtomCharge_0(atom0) + 16 << 8;
    if ((matchMode & 2) != 0)
      this.mMoleculeAtomType[atom0] += this.mMolecule.getAtomMass_0(atom0) << 16;
  }
  this.mMoleculeRingFeatures = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, nTotalMoleculeAtoms, 14, 1);
  ringSet = this.mMolecule.getRingSet_0();
  for (i = 0; i < ringSet.getSize_0(); i++) {
    ringSize = ringSet.getRingSize_0(i);
    for (atom$array = ringSet.getRingAtoms_0(i) , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
      atom1 = atom$array[atom$index];
      if (ringSize == 3)
        this.mMoleculeRingFeatures[atom1] = or_0(this.mMoleculeRingFeatures[atom1], 8589934592);
      else if (ringSize == 4)
        this.mMoleculeRingFeatures[atom1] = or_0(this.mMoleculeRingFeatures[atom1], 17179869184);
      else if (ringSize == 5)
        this.mMoleculeRingFeatures[atom1] = or_0(this.mMoleculeRingFeatures[atom1], 34359738368);
      else if (ringSize == 6)
        this.mMoleculeRingFeatures[atom1] = or_0(this.mMoleculeRingFeatures[atom1], 68719476736);
      else if (ringSize == 7)
        this.mMoleculeRingFeatures[atom1] = or_0(this.mMoleculeRingFeatures[atom1], 137438953472);
    }
  }
  for (atom = 0; atom < nTotalMoleculeAtoms; atom++) {
    ringSize = this.mMolecule.getAtomRingSize_0(atom);
    if (ringSize == 0)
      this.mMoleculeRingFeatures[atom] = or_0(this.mMoleculeRingFeatures[atom], 4294967296);
    else if (ringSize > 7)
      this.mMoleculeRingFeatures[atom] = or_0(this.mMoleculeRingFeatures[atom], 274877906944);
  }
  nTotalMoleculeBonds = this.mMolecule.getBonds_0();
  this.mMoleculeBondFeatures = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, nTotalMoleculeBonds, 15, 1);
  for (bond = 0; bond < nTotalMoleculeBonds; bond++)
    this.mMoleculeBondFeatures[bond] = (this.getBondQueryDefaults(this.mMolecule, bond) | this.mMolecule.getBondQueryFeatures_0(bond)) & (6291967 | 130560) ^ 6291840;
}
;
_.tryAddCandidate = function tryAddCandidate(current, highest, i, fragmentAtomUsed, fragmentBondUsed, excludeGroupNo){
  var candidate, candidateBond;
  candidate = this.mFragment.getConnAtom_0(this.mFragmentGraphAtom[current], i);
  if ((!this.mIsExcludeAtom[candidate] || this.mExcludeGroupNo[candidate] == excludeGroupNo) && candidate != this.mFragmentGraphParentAtom[current]) {
    candidateBond = this.mFragment.getConnBond_0(this.mFragmentGraphAtom[current], i);
    if (!fragmentBondUsed[candidateBond] && !this.mFragment.isBondBridge_0(candidateBond)) {
      this.mFragmentGraphAtom[++highest] = candidate;
      this.mFragmentGraphParentAtom[highest] = this.mFragmentGraphAtom[current];
      this.mFragmentGraphParentBond[highest] = candidateBond;
      fragmentBondUsed[candidateBond] = true;
      if (fragmentAtomUsed[candidate])
        this.mFragmentGraphIsRingClosure[highest] = true;
      else 
        fragmentAtomUsed[candidate] = true;
    }
  }
  return highest;
}
;
_.mDefaultMatchMode = 0;
_.mExcludeGroupCount = 0;
_.mFragmentExcludeAtoms = 0;
_.mFragmentExcludeBonds = 0;
_.mFragmentFeaturesValid = false;
_.mFragmentGraphSize = 0;
_.mFragmentGraphSizeWithExcludeGroups = 0;
_.mMoleculeFeaturesValid = false;
_.mRequiredHelperLevel = 0;
_.mStop = false;
carc2.cCountModeExistence = 1;
carc2.cCountModeFirstMatch = 2;
carc2.cCountModeOverlapping = 4;
carc2.cCountModeRigorous = 5;
carc2.cCountModeSeparated = 3;
carc2.cCountModeUnique = 6;
carc2.cDefaultMatchMode = 8;
carc2.cIndexMatchMode = 4;
carc2.cMatchAromDBondToDelocalized = 8;
carc2.cMatchAtomCharge = 1;
carc2.cMatchAtomMass = 2;
carc2.cMatchDBondToDelocalized = 4;
cggl.Lcom_actelion_research_chem_SSSearcher_2_classLit = createForClass('com.actelion.research.chem', 'SSSearcher', 83, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SSSearcher$BridgeBond = function $clinit_SSSearcher$BridgeBond(){
  carc2.$clinit_SSSearcher$BridgeBond = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SSSearcher$BridgeBond = function SSSearcher$BridgeBond(this$0){
  carc2.$clinit_SSSearcher$BridgeBond();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_40();
}
;
defineClass(264, 1, {264:1, 1:1}, carc2.SSSearcher$BridgeBond);
_.$init_40 = function $init_40(){
}
;
_.atom1 = 0;
_.atom2 = 0;
_.maxBridgeSize = 0;
_.minBridgeSize = 0;
cggl.Lcom_actelion_research_chem_SSSearcher$BridgeBond_2_classLit = createForClass('com.actelion.research.chem', 'SSSearcher/BridgeBond', 264, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SSSearcherWithIndex = function $clinit_SSSearcherWithIndex(){
  carc2.$clinit_SSSearcherWithIndex = emptyMethod;
  jl.$clinit_Object();
  carc2.cKeyIDCode = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['QM@HzAmdqjF@', 'RF@Q``', 'qC`@ISTAlQE`', '`J@H', 'QM@HzAmdqbF@', 'qC`@ISTAlQEhqPp@', 'sJP@DiZhAmQEb', 'RF@QPvR@', 'QM@HzA@', 'qC`@ISTAlQEhpPp@', 'qC`@Qz`MbHl', 'sJP@DiZhAmQEcFZF@', 'RFPDXH', 'qC`@IVtAlQE`', 'QM@HvAmdqfF@', 'sGP@DiVj`FsDVM@', '`L@H', 'sJP@DizhAmQEcFBF@', 'sJP@DjvhAmQEb', 'sFp@DiTt@@AlqEcP', 'sGP@LdbMU@MfHlZ', 'QMHAIhD', 'QM@HzAy@', 'sJP@DkVhAmQEb', 'sNp@DiUjj@[\\QXu`', 'sJP@DiZhAmQEcFBF@', 'sGP@DjVj`FsDVM@', 'RFPDTH', 'RG@DXOH@', 'sGP@Divj`FsDVMcAC@', 'sGP@Dj}j`FsDVM@', 'qC`@Qz`MbHmFRF@', 'sNp@LdbJjj@[\\QXu`', 'QMHAIhGe@', 'QM@HzAyd`', 'QM`AIhD', 'qC`@ISTA@', 'sGP@DkUj`FsDVM@', 'qC`@IVtAlQEhqPp@', 'sNp@DiUjj@[\\QXuqea`@', 'KAx@@IRjuUPAlHPfES\\', 'QM`BN`P', 'sJP@DjZhAmQEcFJF@', 'Hid@@DjU^nBBH@FtaBXUMp`', 'sNp@Diujj@[\\QXuq`a`@', 'sJP@DjvhAmQEcFZF@', 'sJP@DjZhAmQEcFFF@', 'sOp@DjWkB@@FwDVM\\YhX@', 'sNp@Dj}Zj@[\\QXu`', 'sNp@DiWjj@[\\QXuq`a`@', 'sOp@DjWkB@@D', 'KAx@@ITouUPAlHPfES\\', 'KAx@@YIDTjjh@vDHSBin@', 'sNp@DkUZj@[\\QXu`', 'RFPDXOH@', 'QM`BN`^L`', 'qC`@ISTAy@', 'sGP@LdbMU@MfHl[FVF@', 'qCb@AIZ`H', 'KAx@@IRjuUPAlHPfES]FFa`@', 'KAx@@ITnuUPAlHPfES\\', 'HiD@@DiUVjj`AmHPfES\\H', 'sNp@DjUjj@[\\QXu`', 'sJP@DkVhAmQEcFJF@', 'sGP@DjVj`FsDVMcCC@', 'qC`@Qz`MbHmFBF@', 'sJP@DkfhAmQEb', 'qC`@IVtAlQEhsPp@', 'sGP@Djuj`FsDVM@', 'sGP@Dj}j`FsDVMcMC@', 'sJP@DiZhA@', 'KAx@@ISjuUPAlHPfES]F@a`@', 'sJP@DjZhAmQEcFRF@', 'KAx@@IRnuUPAlHPfES]F@a`@', 'HiD@@DjWvjj`AmHPfES\\H', 'QMHAIhGd@', 'sNp@DiUjj@[\\QXuq`a`@', 'KAx@@IVjmUPAlHPfES\\', 'sGP@DjVj`FsDVMcMC@', 'QM`AIhGe@', 'HiD@@LdbJRjjh@[RDIaTwB', 'qCp@AIZ`H', 'sGP@LdbMU@MfHl[FFF@', 'QMDARVA@', 'sNp@LdbJjj@[\\QXuqba`@', 'sNp@LdbJjj@[\\QXuqca`@', 'sGP@Dkej`FsDVM@', 'qCb@AIZ`OI@', 'HaD@@DjUZxHH@AlHPfES]FLa`@', 'sGP@DkYj`FsDVM@', 'qCb@AIV`H', 'sNp@LdbJjj@[\\QXuqea`@', 'sGP@DkUj`FsDVMcEC@', 'sFp@DiTt@@Axa@', 'Hmt@@DjU_ZxHHj@AmhPfES\\Lj', 'QM`BN`^P', 'qCb@AIZ`OH`', 'sFp@DiTt@@AxaP', 'sGP@Djuj`FsDVMcEC@', 'sGP@Djuj`FsDVMcIC@', 'sGP@DkUj`FsDVMcKC@', 'sJP@DkfhAmQEcFRF@', 'sGP@DjVj`FsDVMcIC@', 'HaD@@DjUZxHH@AlHPfES]FFa`@', 'qC`@IRtDVqDV@', 'sNp@Dj}Zj@[\\QXuqfa`@', 'KAx@@ITnuUPAlHPfES]FFa`@', 'HiD@@DkUUjj`AmHPfES\\H', 'sJQ@@dkU@H', 'qC`@Qz`H', 'KAx@@IUkmUPAlHPfES\\', 'KAx@@ITouUPAlHPfES]FJa`@', 'sJP@H~j@[TQX`', 'sGP@DjZj`FsDVM@', 'sJP@DkVhAmQEcFFF@', 'sJX@@eKU@H', 'sJP@DizhAy@', 'QMHAIhGbP', 'KAx@@ITouUPAlHPfES]FNa`@', 'HaD@@DjUZxHD@AlHPfES\\', 'HaD@@DjUZxHH@A@', 'sNp@LdbJjj@[\\QXuqaa`@', 'Hed@@LdbRQUUUP@vTHSBinFP', 'KAx@@ITouUPAlHPfES]FLa`@', 'sNp@DkUZj@[\\QXuqba`@', 'KAx@@ITjuUPAlHPfES]FNa`@', 'KAx@@YIDTjjh@vDHSBincGPp@', 'HaD@@DjYvxH`@AlHPfES]FLa`@', 'RF@QP`', 'qCb@AIj`H', 'sNp@DjUjj@[\\QXuqaa`@', 'sNp@DkVZj@[\\QXu`', 'KAx@@YIDUJjh@vDHSBin@', 'sGP@DkYj`FsDVMcIC@', 'sGP@DjVj`FsDVMcAC@', 'sGP@DiVj`D', 'sJP@DkVhAmQEcFZF@', 'sNp@LdbLjj@[\\QXu`', 'QM@HvAmdqbF@', 'HaD@@DjWjXHB@AlHPfES\\', 'sNp@DjwZj@[\\QXuqba`@', 'sNp@LdbJjj@[\\QXuqda`@', 'sFp@DiTt@@Axa`', 'HiD@@Djuujj`AmHPfES\\H', 'sNp@DkUZj@[\\QXuqca`@', 'sJP@DiZhAy@', 'KAx@@YIDTjjh@vDHSBincCPp@', 'KAx@@IWNmUPAlHPfES\\', 'KAx@@IVkMUPAlHPfES\\', 'sJQ@@dju@H', 'qCb@AIZ`OH@', 'qC`@ISTAxa@', 'sNp@DjyZj@[\\QXu`', 'Hid@@DjUfaBB`@FtaBXUMp`', 'HiD@@DiUVjj`AmHPfES\\LXBF@', 'KAx@@IUjmUPAlHPfES\\', 'HiD@@DjWvjj`AmHPfES\\LXjF@', 'sJP@DjVhAmQEb', 'qCb@AIV`OH`', 'HiD@@LdbJRjjh@[RDIaTwCFDa`@', 'KAx@@YIDTjjh@vDHSBinc@Pp@', 'sNp@DjUjj@[\\QXuqda`@', 'qC`@Qz`OED', 'sJP@DkfhAmQEcFZF@', 'KAx@@YIDbjjh@vDHSBincDPp@', 'sGP@Djyj`FsDVMcMC@', 'KAx@@IVrmUPAlHPfES\\', 'qCp@AIZ`OI@', 'sJX@@dkU@H', 'sJQ@@dkU@OH`', 'sNp@Di]ZjBBvxbqk@', 'Hkl@@DjU_Uk``bj`@[VDIaTwCJzX', 'sGP@DjZj`FsDVMcEC@', 'Hid@@DjU^nBBH@FtaBXUMpqcHX@', 'sNp@DkeZj@[\\QXu`', 'sNp@DjYjj@[\\QXuqca`@', 'sGQ@@djuT@`', 'HiD@@LdbJTjjh@[RDIaTwB', 'sOp@DjWkB@@Gd`', 'HeT@@LdbbRKBDQD@CYPaLJfxY@', 'qCr@XIKTA@', 'HiD@@DjW^jj`AmHPfES\\LXJF@', 'HeT@@DjU]k``b`@[JDIaTwCH', 'sGP@Djuj`FsDVMcCC@', '`IH`B', 'sOp@DjWkB@@GdX', 'sJQ@@eKU@H', 'KAx@@YIDUJjh@vDHSBincBPp@', 'sJX@@eKU@OH@', 'KAx@@YIDTjjh@vDHSBincAPp@', 'sOq@@drm\\@@@`', 'KAx@@IUkMUPAlHPfES\\', 'qCp@AIj`H', 'Hed@@DjUUjjj@FraBXUMpr', 'sGX@@eJuT@`', 'sGP@DkUj`FsDVMcCC@', 'HiD@@Dj}Ujj`AmHPfES\\LXrF@', 'KAx@@ITouUPAlHPfES]FHa`@', 'Hed@@DjWujjj@FraBXUMpsFIa`@', 'sGP@DiUj``mfHlZ', 'sFp@DiTvjhAlqEcP', 'Hid@@DjU^nBBH@FtaBXUMpq`XX@', 'sJP@DkVdAmQEb', 'qCp@AIZ`OH`', 'QMhDRVA@', 'qC`@ISJAlQE`', 'qCp@BOTAyhl', 'sJX@@eOU@ODB', 'sFp@DiTt@@AyaB', 'sGP@DkUj`FsDVMcMC@', 'Hid@@DjYUaBH`@FtaBXUMpqcHX@', 'qC`@Qz`OH@', 'HiD@@DjUVjj`AmHPfES\\LXZF@', 'sJP@H~j@[TQXqda`@', 'sJX@@eKU@OI@', 'sNp@Djejj@[\\QXu`', 'sJQ@@dsU@H', 'sJQ@@dkU@OI`', 'KAx@@YIMDVjh@vDHSBin@', 'Hid@@DjU^nBBD@FtaBXUMp`', 'sNp@DkgZj@[\\QXuqca`@', 'qC`@IRtDVqDVcEC@', 'Hed@@LdbRQeUUP@vTHSBinFP', 'sNp@DiUjj@P', 'qC`@IRtDT', 'sNp@DkYZj@[\\QXuqca`@', 'KAx@@IUkmUPAlHPfES]FDa`@', 'KAx@@IVjmUPAlHPfES]FNa`@', 'sOx@@drm\\@@@`', 'KAx@@ITjuUPAlHPfES]FBa`@', 'QMDARVAyH', 'sJP`@dfvhA@', 'HeT@@DjU_k``b`@[JDIaTwCLXfF@', 'KAx@@IToUUPAlHPfES]FJa`@', 'sGP@DkYj`FsDVMcEC@', 'qCb@AIZ`ODH', '`I@`B', 'KAx@@IUzmUPAlHPfES]FFa`@', 'sNp@DkfZj@[\\QXu`', 'KAx@@ITnuUPAlHPfES]F@a`@', 'HiD@@LddURjjh@[RDIaTwB', 'sNp@Dj~Zj@[\\QXuqfa`@', 'Hed@@Dj{uZjj@FraBXUMpr', 'KAx@@ITsUUPAlHPfES\\', 'Hid@@LdbRQk``b@AmHPfES\\LXrF@', 'sOp@DjWkB@@GdH', 'sJQ@@dkU@OH@', 'Hid@@DjU^nBBH@FtaBXUMpqahX@', 'sGP@DiYj``mfHlZ', 'KAx@@IToUUPAlHPfES]FLa`@', 'qCp@AJZ`ODH', 'Hmt@@DjU]ZxHHj@AmhPfES\\Lj', 'sGP@DkUjPFsDVM@', 'qC`@IVtA@', 'Hed@@LdbJReUUP@vTHSBinFP', 'sNp@DjuZj@[\\QXuqea`@', 'KAx@@IUkmUPAlHPfES]FNa`@', 'HiD@@DkVUjj`AmHPfES\\H', 'Hed@@DkUeZjj@FraBXUMpr', 'sNp@DkVZj@[\\QXuqea`@', 'sJP@DiVhHKZbKFLLL@', 'HiD@@Djuyjj`AmHPfES\\H', 'sNp@DjUjj@[\\QXuq`a`@', 'HeT@@DjYUXPbH`@[JDIaTwCH', 'HiD@@DjwUjj`AmHPfES\\LXRF@', 'sNq@@djmUPB', 'KAx@@YIEEZjh@vDHSBincCPp@', 'sGP@Di^V`dmfHlZ', 'Hid@@DjYUaBHP@FtaBXUMp`', 'sNp@DjYjj@[\\QXuqba`@', 'sGP@Dkej`FsDVMcKC@', 'HeT@@DjU^k``b`@[JDIaTwCH', 'qC`@Qv`MbHmFBF@', 'sGQ@@djmT@`', 'qCr@XIKTAyH', 'qC`@IVtAlQEhpPp@', 'Hid@@LdbbQxXF@@AmHPfES\\LXjF@', 'sGP@DkYj`FsDVMcCC@', 'KAx@@IVsMUPAlHPfES\\', 'qCp@AIj`ODl', 'HiD@@DkeUjj`AmHPfES\\H', 'deT@@DjU[k``b`@vTHSBinFP', 'sJP@DkVdAmQEcFRF@', 'HiD@@LdbJTjjh@[RDIaTwCFDa`@', 'HiD@@DkYyjj`AmHPfES\\H', 'sJP@DjZhAyH', 'KAx@@IVkMUPAlHPfES]FDa`@', 'sJX@@dkU@OI@', 'Hed@@LdbRQUUUP@vTHSBinFXpLL@', 'Hed@@DjuUZjj@FraBXUMpr', 'sGP@Djfj`FsDVMcKC@', 'sNp@DkVZj@[\\QXuqba`@', 'sNp@DjyZj@[\\QXuqfa`@', 'qCb@AIj`OH@', 'sNp@DjUZj@[\\QXu`', 'KAx@@IWOMUPAlHPfES\\', 'Hid@@DjU^nBBH@D', 'Hed@@DjuvZjj@FraBXUMpr', 'sJP@DiVhHKZbKFLtL@', 'dmt@@DjU_ZxHHj@C[PaLJfxYVLKC@', 'sNp@DjuZj@[\\QXuqca`@', 'sJP@DkfhAmQEcFJF@', 'sNp@LdbJZj@[\\QXu`', 'HeT@@DjU_k``b`@[JDIaTwCLXFF@', 'KAx@@IVlmUPAlHPfES]FNa`@', 'HeT@@LdbbRKBDQD@CYPaLJfxYcEPp@', 'Hid@@DjUZnBBH@FtaBXUMpqcHX@', 'qCa@CIKTA@', 'HiD@@Dj~]jj`AmHPfES\\LXFF@', 'sKP@Di\\Zj@[TQX`', 'sGP@Djfj`FsDVMcEC@', 'HiD@@DkgYjj`AmHPfES\\H', 'sNp@DjuZj@[\\QXuqaa`@', 'KAx@@YIMDVjh@vDHSBincDPp@', 'sJP@DjVhHKZbKFLTL@', 'Hid@@LdbRQk``b@AmHPfES\\LXZF@', 'HiD@@Dj}Ujj`AmHPfES\\LXzF@', 'HeT@@DjU_k``bP@[JDIaTwCH', 'sNp@DkUZi@[\\QXu`', 'HiD@@DjYfjj`AmHPfES\\H', 'sGP@DjZj`FsDVMcAC@', 'Hmt@@DjU_jxHHj@AmhPfES\\Lj', 'Hid@@LdbRQk``R@AmHPfES\\H', 'KAx@@YIDUJjh@vDHSBincDPp@', 'qCr@XIKTAyD', 'sOq@@drm\\@@@|`@', 'Hed@@DjW^jjj@FraBXUMpsFBa`@', 'HeT@@DjY]zXFB@@[JDIaTwCH', 'Hkl@@DjU_Vk``bj`@[VDIaTwCJzX', 'Hid@@DjY}nBHH@FtaBXUMpqcHX@', 'sGX@@eKuT@|d@', 'sGP@Dj^Y`FsDVM@', 'HcL@@DjU_ZnBBJh@FqaBXUMprn`', 'sJP@DkVdAmQEcFJF@', 'sOq@@drm\\@@@|b@', 'sNp@DjyZj@[\\QXuqaa`@', 'HaD@@DjUZxHH@AyD@', 'qC`@Qv`H', 'dmt@@DjU_ZxHHj@C[PaLJfxYVLYC@', 'sGP@Dkej`FsDVMcMC@', 'Hed@@DjUUjjj@FraBXUMpsFHa`@', 'HeT@@LdbbRkBDQD@CYPaLJfxY@', 'KAx@@IU{MUPAlHPfES]FLa`@', 'RG@DTH', 'sJY@DDeVhA@', 'KAx@@YIDUJjh@vDHSBinc@Pp@', 'sJX@@dkU@OI`', 'sJQ@@dju@OI`', 'HeT@@LdbbRKBDQD@CYPaLJfxYcFPp@', 'sFp@DiTvjhAlqEcXpPp@', 'HaD@@DjUZxHH@AyG@', 'sNx@@eJ}UPB', 'sNp@LddUjj@[\\QXuqca`@', 'HaDH@@RVU[j@@@D', 'sNp@DkgZi@[\\QXu`', 'sGY@LDeVj`D', 'sNp@LdbJfZBZvxbqk@', 'sJP`@dfvhAyL', 'sGX@AddQjhAxe`', 'Hmt@@DjU_ZxHHj@AmhPfES\\LkFIa`@', 'qCh@CIKTA@', 'sNp@LdbLjj@[\\QXuq`a`@', 'sOq@@drm\\@@@|a@', 'KAx@@IUzmUPAlHPfES]FJa`@', 'sNx@AddQUUPB', 'sGP@Di]jP`mfHlZ', 'sJP`@TeZhA@', 'KAx@@IRjmUPHKXPaLJfx', 'HeT@@LdbRTM\\DDT@CYPaLJfxY@', 'HaF@@@Rfu[j@@@D', 'Hid@@DjYUaBH`@FtaBXUMpqchX@', 'KAx@@IUjmTpAlHPfES\\', 'Hid@@DjU^nBBD@FtaBXUMpqcHX@', 'sGP@DiUj``mfHl[FFF@', 'KAx@@IUvmUPAlHPfES]FLa`@', 'Hed@@LdbQTUUUP@vTHSBinFXqDL@', 'sJP@DkVhA@', 'sOx@@drm\\@@@|b@', 'KAx@@IUkMUPAlHPfES]FDa`@', 'HeT@@LdbRQU\\DDT@CYPaLJfxY@', 'HiD@@Dj}Yjj`AmHPfES\\LXrF@', 'HiD@@Dj{ujj`AmHPfES\\LXFF@', 'KAx@@IWNmUPAlHPfES]FFa`@', 'KAx@@IRkMUPHKXPaLJfx', 'sJP@DjYdAmQEcFZF@', 'sJY@LDeZhAyL', 'HaDH@@RVU[f@@@D', 'sJP`@deVhAyB', 'HaD@@DjWjZjj`AlHPfES\\', 'sGP@DkYj`FsDVMcMC@', 'sNp@DkgZj@[\\QXuqea`@', 'sJQ@@dlu@H', 'HeT@@DjU]k``b`@[JDIaTwCLXrF@', 'sJX@@dkU@OH`', 'RFDDQFCr`', 'sJP@DiYXIKZbKFLLL@', 'KAx@@YIHjjjh@vDHSBincGPp@', 'Hk\\@@DjU^ukmLHH@@@AmXPfES\\Lki`', 'sGQ@@djmT@|b@', 'Hid@@DjUfaBB`@FtaBXUMpqahX@', 'sNx@@eRmUPB', 'Hmt@@LdbRVak``ah@FvaBXUMprh', 'qCr@XIJtA@', 'KAx@@IWMmUPAlHPfES]FNa`@', 'HeT@@DjYYZPbJ@@[JDIaTwCH', 'sNp@DkfZj@[\\QXuqea`@', 'Hid@@DjU^nBAHAEVtaBXUMp`', 'dmt@@DjUgZDHJJ@C[PaLJfxYT', 'sGP@DkejPFsDVM@', 'sNx@@eJmUPB', 'qCb@AIf`H', 'HcL@@DjU_VnBBJh@FqaBXUMprnqcXX@', 'Hid@@DjUZnBBH@FtaBXUMpqahX@', 'sNp@LdbQZjBBvxbqkcGC@', 'sOx@@drm\\@@@|c@', 'sJP@H~j@^R@', 'KAx@@YIDcFjhDElHPfES\\', 'Hid@@DjUZnBAH@FtaBXUMp`', 'sNp@LddUji@[\\QXu`', 'sGP@DjfjPFsDVM@', 'HeT@@DjYUXPbD`@[JDIaTwCH', 'KAx@@IUoMUPAlHPfES]FDa`@', 'sFp@DiTt@@AyaD', 'Hed@@DjuuZjj@FraBXUMpsFIa`@', 'HeT@@DjUghP`h`@[JDIaTwCLXfF@', 'sOp@DjWkjj`FwDVM\\YhX@', 'sGP@Djfj`FsDVMcIC@', 'KAx@@IRkmUPHKXPaLJfzL]C@', 'sNx@@djmUPB', 'QM`AIdD', 'sOp@DjWkB@@Gbe@', 'sNp@DjyZj@[\\QXuqca`@', 'QM@HuAmd`', 'sNp@LddUjj@[\\QXuqea`@', 'daD@@DjUZxHD@CXPaLJfzLYC@', 'qCb@AIZPH', 'HiD@@LdbJTjjh@[RDIaTwCF@a`@', 'Hmt@@DjU_ZxHHi@AmhPfES\\Lj', 'HaDH@@RYWih@H@D', 'HiD@@LdbJTjjh@[RDIaTwCFHa`@', 'sGX@@djuT@|a@', 'sNp@DkfZj@[\\QXuqaa`@', 'Hid@@DjU^nBBH@GdL', 'KAx@@IVkMUPAlHPfES]FJa`@', 'qCr@XIKTAy@', 'HmT@@Dj{uVjjh@[ZDIaTwCJqaXX@', 'dmt@@DjYWVDHbJ@C[PaLJfxYT', 'Hif@@@RUe^Fh@@@P', 'HaDH@@Rfu[j@@@GdH', 'KAx@@IVsMUPAlHPfES]FDa`@', 'sKP@Di\\Zj@[TQXq`a`@', 'sJX@@eMU@OH@', 'HeT@@DjU^k``b`@[JDIaTwCLXFF@', 'Hmt@@LdbbRJXPbHh@FvaBXUMprh', 'sJP@DjvhAmQEcFBF@', 'dmt@@LdbbRNXPbHh@MmBDpj[aeXplL@', 'sJP`@dfvhAyD', 'sGP@Di^V`dmfHl[FVF@', 'KAx@@IVsmUPAlHPfES]FBa`@', 'sOq@@drm\\@@@|PP', 'sJY@BDeZhA@', 'HeT@@LdbRbmBDED@CYPaLJfxY@', 'Hed@@Djy[Zjj@FraBXUMpr', 'HeT@@DjU]k``b`@[JDIaTwCLXFF@', 'Hid@@DjUfaBB`@D', 'qCa@CIJtA@', 'QMPARVA@', 'Hid@@DjUfaBB`@FtaBXUMpqcHX@', 'sJY@BDfZhA@', 'HeT@@DjUghP`hP@[JDIaTwCH', 'Hed@@Dj{uZjj@FraBXUMpsFIa`@', 'dmt@@DjYUvDHbJ@C[PaLJfxYVLUC@', 'sNp`@dfuZj@P', 'sJQ@@dmU@OH@', 'sJX@@dmU@H', 'HeT@@DjU]k``b`@[JDIaTwCLXZF@', 'HiD@@LdfbJZjh@[RDIaTwCFAa`@', 'sOx@@drm\\@@@|a@', 'deT@@DjUfhP`h`@vTHSBinFP', 'dmt@@DjU]ZxHHj@C[PaLJfxYVLKC@', 'sOp@DjWkjj`FwDVM\\XHX@', 'HcL@@LdbbRNSBDQEP@McBDpj[ae]cFpp@', 'HiD@@Dj}Yji`AmHPfES\\H', 'HaDH@@RYe[hB@@D', 'Hid@@DjU^njjj@FtaBXUMpq`XX@', 'deT@@LdbbRKBDQB@FraBXUMpr', 'QMPARZA@', 'sOq@@drm\\@@@|QX', 'HaD@@DjYvxH`@A@', 'HcL@@LdbbRNcBDQEP@McBDpj[ae]@', 'QMhDRZA@', 'RG@DXLHmP', 'QM`BN`XQYd', 'RG@DTLHmP', 'QMHAIXFEVd', 'QMDARVAaH', 'RFPDXLHmP', 'RF@Q`vRbdLEC@', 'RF@QpvR@', 'QO@HyjAmd`', '`II@B', '`II@CFspqJp', '`II@CF[@hM@prB`', '`H@[T[|B`XN@PdM@p|@bHrBcDk@', 'RG@DXMj}F@', 'QM`BN`[L~b@', 'RG@DTMj}D@', 'QMHAIXFt~j@', 'QMDARVA}L@', 'RFPDXMj}D@', 'sKP@Di\\YZ@[TQXqaa`@', 'eF`BHD']);
}
;
carc2.SSSearcherWithIndex = function SSSearcherWithIndex(){
  carc2.$clinit_SSSearcherWithIndex();
  Object_0.call(this);
  this.$init_41();
  this.mSSSearcher = new carc2.SSSearcher;
  this.init_2();
}
;
carc2.getHexStringFromIndex = function getHexStringFromIndex(index_0){
  carc2.$clinit_SSSearcherWithIndex();
  var bytes, code_0, i, j, value_0;
  if (jsEquals(index_0, null))
    return null;
  bytes = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, index_0.length * 8, 15, 1);
  for (i = 0; i < index_0.length; i++) {
    value_0 = index_0[i];
    for (j = 7; j >= 0; j--) {
      code_0 = value_0 & 15;
      if (code_0 > 9)
        code_0 += 7;
      bytes[i * 8 + j] = narrow_byte(48 + code_0);
      value_0 >>= 4;
    }
  }
  return jl.$create_12(bytes, (jnc.$clinit_StandardCharsets() , jnc.UTF_8));
}
;
carc2.getIndexFromHexString = function getIndexFromHexString(hex){
  carc2.$clinit_SSSearcherWithIndex();
  var code_0, i, index_0, j;
  if (jl.length__I__devirtual$_0(hex) == 0 || (jl.length__I__devirtual$_0(hex) & 7) != 0)
    return null;
  index_0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, narrow_int(jl.length__I__devirtual$_0(hex) / 8), 15, 1);
  for (i = 0; i < jl.length__I__devirtual$_0(hex); i++) {
    j = narrow_int(i / 8);
    code_0 = jl.charAt_I_C__devirtual$_0(hex, i) - 48;
    if (code_0 > 16)
      code_0 -= 7;
    index_0[j] <<= 4;
    index_0[j] += code_0;
  }
  return index_0;
}
;
carc2.getSimilarityAngleCosine = function getSimilarityAngleCosine(index1, index2){
  carc2.$clinit_SSSearcherWithIndex();
  var i, index1Keys, index2Keys, sharedKeys;
  sharedKeys = 0;
  index1Keys = 0;
  index2Keys = 0;
  for (i = 0; i < index1.length; i++) {
    sharedKeys += bitCount_1(index1[i] & index2[i]);
    index1Keys += bitCount_1(index1[i]);
    index2Keys += bitCount_1(index2[i]);
  }
  return sharedKeys / $wnd.Math.sqrt(index1Keys * index2Keys);
}
;
carc2.getSimilarityTanimoto = function getSimilarityTanimoto(index1, index2){
  carc2.$clinit_SSSearcherWithIndex();
  var allKeys, i, sharedKeys;
  sharedKeys = 0;
  allKeys = 0;
  for (i = 0; i < index1.length; i++) {
    sharedKeys += bitCount_1(index1[i] & index2[i]);
    allKeys += bitCount_1(index1[i] | index2[i]);
  }
  return sharedKeys / allKeys;
}
;
defineClass(212, 1, {1:1}, carc2.SSSearcherWithIndex);
_.$init_41 = function $init_41(){
}
;
_.createIndex_0 = function createIndex(mol){
  var i, index_0;
  if (isNull(mol))
    return null;
  index_0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, narrow_int((carc2.cKeyIDCode.length + 31) / 32), 15, 1);
  mol = this.removeExcludeGroups(mol);
  this.mSSSearcher.setMolecule_0(mol);
  for (i = 0; i < carc2.cKeyIDCode.length; i++) {
    this.mSSSearcher.setFragment_1(carc2.sKeyFragment[i]);
    if (this.mSSSearcher.isFragmentInMolecule_1(4))
      index_0[narrow_int(i / 32)] |= 1 << 31 - i % 32;
  }
  return index_0;
}
;
_.createLongIndex = function createLongIndex(mol){
  var i, index_0;
  if (isNull(mol))
    return null;
  if (isNotNull(this.mDescriptorHandler))
    return castTo(this.mDescriptorHandler.createDescriptor(mol), 60);
  index_0 = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, narrow_int((carc2.cKeyIDCode.length + 63) / 64), 14, 1);
  mol = this.removeExcludeGroups(mol);
  this.mSSSearcher.setMolecule_0(mol);
  for (i = 0; i < carc2.cKeyIDCode.length; i++) {
    this.mSSSearcher.setFragment_1(carc2.sKeyFragment[i]);
    if (this.mSSSearcher.isFragmentInMolecule_1(4))
      index_0[narrow_int(i / 64)] = or_0(index_0[narrow_int(i / 64)], shl_0(1, 63 - i % 64));
  }
  return index_0;
}
;
_.findFragmentInMolecule = function findFragmentInMolecule_1(countMode, matchMode){
  return this.findFragmentInMolecule_0(countMode, matchMode, null);
}
;
_.findFragmentInMolecule_0 = function findFragmentInMolecule_2(countMode, matchMode, atomExcluded){
  var i;
  if (jsNotEquals(this.mMoleculeIndexLong, null)) {
    for (i = 0; i < this.mMoleculeIndexLong.length; i++)
      if (neq(and_0(this.mFragmentIndexLong[i], not_0(this.mMoleculeIndexLong[i])), 0))
        return 0;
  }
   else if (jsNotEquals(this.mMoleculeIndexInt, null)) {
    for (i = 0; i < this.mMoleculeIndexInt.length; i++)
      if ((this.mFragmentIndexInt[i] & ~this.mMoleculeIndexInt[i]) != 0)
        return 0;
  }
   else {
    return 0;
  }
  if (isNull(this.mMolecule))
    this.mMolecule = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mMoleculeIDCode);
  if (isNull(this.mFragment))
    this.mFragment = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mFragmentIDCode);
  this.mSSSearcher.setMolecule_0(this.mMolecule);
  this.mSSSearcher.setFragment_1(this.mFragment);
  return this.mSSSearcher.findFragmentInMolecule_0(countMode, matchMode, atomExcluded);
}
;
_.getGraphMatcher = function getGraphMatcher(){
  return this.mSSSearcher;
}
;
_.getMolecule_0 = function getMolecule_0(){
  if (isNull(this.mMolecule) && jsNotEquals(this.mMoleculeIDCode, null))
    this.mMolecule = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mMoleculeIDCode);
  return this.mMolecule;
}
;
_.init_2 = function init_2(){
  var i, theParser;
  {
    cggl.Lcom_actelion_research_chem_SSSearcherWithIndex_2_classLit;
    if (jsEquals(carc2.sKeyFragment, null)) {
      theParser = new carc2.IDCodeParser_0(false);
      carc2.sKeyFragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {126:1, 4:1, 1:1, 7:1}, 19, carc2.cKeyIDCode.length, 0, 1);
      for (i = 0; i < carc2.cKeyIDCode.length; i++) {
        setCheck(carc2.sKeyFragment, i, theParser.getCompactMolecule(carc2.cKeyIDCode[i]));
        carc2.sKeyFragment[i].ensureHelperArrays_0(1);
      }
    }
  }
}
;
_.isFragmentInMolecule_0 = function isFragmentInMolecule_1(){
  var i;
  if (jsNotEquals(this.mMoleculeIndexLong, null)) {
    for (i = 0; i < this.mMoleculeIndexLong.length; i++)
      if (neq(and_0(this.mFragmentIndexLong[i], not_0(this.mMoleculeIndexLong[i])), 0))
        return false;
  }
   else if (jsNotEquals(this.mMoleculeIndexInt, null)) {
    for (i = 0; i < this.mMoleculeIndexInt.length; i++)
      if ((this.mFragmentIndexInt[i] & ~this.mMoleculeIndexInt[i]) != 0)
        return false;
  }
   else {
    return false;
  }
  return this.isFragmentInMoleculeWithoutIndex();
}
;
_.isFragmentInMoleculeWithoutIndex = function isFragmentInMoleculeWithoutIndex(){
  if (isNull(this.mMolecule))
    this.mMolecule = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mMoleculeIDCode);
  if (isNull(this.mFragment))
    this.mFragment = (new carc2.IDCodeParser_0(false)).getCompactMolecule_1(this.mFragmentIDCode);
  this.mSSSearcher.setMolecule_0(this.mMolecule);
  this.mSSSearcher.setFragment_1(this.mFragment);
  return this.mSSSearcher.isFragmentInMolecule_0();
}
;
_.removeExcludeGroups = function removeExcludeGroups(mol){
  var atom, i;
  if (mol.isFragment_0()) {
    for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
      if (neq(and_0(mol.getAtomQueryFeatures(atom), 536870912), 0)) {
        mol = new carc2.StereoMolecule_1(mol);
        for (i = atom; i < mol.getAllAtoms_0(); i++)
          if (neq(and_0(mol.getAtomQueryFeatures(i), 536870912), 0))
            mol.markAtomForDeletion_0(i);
        mol.deleteMarkedAtomsAndBonds_0();
      }
    }
  }
  return mol;
}
;
_.setFragment_2 = function setFragment_1(fragment, index_0){
  this.mFragmentIDCode = null;
  this.mFragmentIndexLong = null;
  this.mFragment = fragment;
  if (jsEquals(index_0, null))
    this.mFragmentIndexInt = this.createIndex_0(fragment);
  else 
    this.mFragmentIndexInt = index_0;
}
;
_.setFragment_3 = function setFragment_2(fragment, index_0){
  this.mFragmentIDCode = null;
  this.mFragmentIndexInt = null;
  this.mFragment = fragment;
  if (jsEquals(index_0, null))
    this.mFragmentIndexLong = this.createLongIndex(fragment);
  else 
    this.mFragmentIndexLong = index_0;
}
;
_.setMolecule_1 = function setMolecule_0(molecule, index_0){
  this.mMoleculeIDCode = null;
  this.mMoleculeIndexLong = null;
  this.mMolecule = molecule;
  if (jsEquals(index_0, null))
    this.mMoleculeIndexInt = this.createIndex_0(molecule);
  else 
    this.mMoleculeIndexInt = index_0;
}
;
_.setMolecule_2 = function setMolecule_1(molecule, index_0){
  this.mMoleculeIDCode = null;
  this.mMoleculeIndexInt = null;
  this.mMolecule = molecule;
  if (jsEquals(index_0, null))
    this.mMoleculeIndexLong = this.createLongIndex(molecule);
  else 
    this.mMoleculeIndexLong = index_0;
}
;
carc2.cIndexVersion = '1.2.1';
cggl.Lcom_actelion_research_chem_SSSearcherWithIndex_2_classLit = createForClass('com.actelion.research.chem', 'SSSearcherWithIndex', 212, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SVGDepictor = function $clinit_SVGDepictor(){
  carc2.$clinit_SVGDepictor = emptyMethod;
  carc2.$clinit_AbstractDepictor();
}
;
carc2.SVGDepictor = function SVGDepictor(mol, displayMode, id_0){
  carc2.$clinit_SVGDepictor();
  carc2.AbstractDepictor.call(this, mol, displayMode);
  this.$init_42();
  this.id_0 = id_0;
  carc2.instanceCnt++;
}
;
carc2.SVGDepictor_0 = function SVGDepictor_0(mol, id_0){
  carc2.$clinit_SVGDepictor();
  carc2.SVGDepictor.call(this, mol, 0, id_0);
}
;
carc2.makeColor = function makeColor(r, g, b){
  return 'rgb(' + r + ',' + g + ',' + b + ')';
}
;
carc2.round_0 = function round_0(number){
  return (new jm.BigDecimal(number)).setScale(2, (jm.$clinit_RoundingMode() , jm.HALF_EVEN)).doubleValue();
}
;
defineClass(256, 134, {134:1, 1:1}, carc2.SVGDepictor, carc2.SVGDepictor_0);
_.$init_42 = function $init_42(){
  this.lineWidth_0 = 1;
  this.textSize = 10;
  this.width_0 = 400;
  this.height_0 = 400;
  this.legacyMode = true;
  this.currentColor = 'black';
  this.bonds = new ju.ArrayList;
  this.atoms = new ju.ArrayList;
  this.buffer = new jl.StringBuilder;
  this.currentFont = new ja.Font('Helvetica', 0, 12);
}
;
_.drawBlackLine = function drawBlackLine(theLine){
  var s;
  s = '<line x1="' + carc2.round_0(theLine.x1) + '" ' + 'y1="' + carc2.round_0(theLine.y1) + '" ' + 'x2="' + carc2.round_0(theLine.x2) + '" ' + 'y2="' + carc2.round_0(theLine.y2) + '" ' + 'stroke="' + this.currentColor + '" ' + 'stroke-width="' + this.lineWidth_0 + '" />';
  this.write_1(s);
}
;
_.drawDottedLine = function drawDottedLine(theLine){
  var d, s;
  d = carc2.round_0(3 * this.lineWidth_0);
  s = '<line stroke-dasharray="' + d + ',' + d + '" ' + 'x1="' + carc2.round_0(theLine.x1) + '" ' + 'y1="' + carc2.round_0(theLine.y1) + '" ' + 'x2="' + carc2.round_0(theLine.x2) + '" ' + 'y2="' + carc2.round_0(theLine.y2) + '" ' + 'stroke="' + this.currentColor + '" ' + 'stroke-width:' + this.lineWidth_0 + '" />';
  this.write_1(s);
}
;
_.drawPolygon = function drawPolygon(p){
  var i, s;
  s = new jl.StringBuilder_1('<polygon points="');
  for (i = 0; i < p.getSize_0(); i++) {
    s.append_6(jl.round_1(p.getX(i)));
    s.append_9(',');
    s.append_6(jl.round_1(p.getY(i)));
    s.append_9(' ');
  }
  s.append_9('" fill="' + this.currentColor + '" ' + 'stroke="' + this.currentColor + '" ' + 'stroke-width="' + this.lineWidth_0 + '" />');
  this.write_1(s.toString_0());
}
;
_.drawString = function drawString(theString, x_0, y_0){
  var s, strWidth;
  strWidth = this.getStringWidth(theString);
  s = '<text x="' + carc2.round_0(x_0 - strWidth / 2) + '" ' + 'y="' + carc2.round_0(y_0 + this.textSize / 3) + '" ' + 'stroke="none" ' + 'font-size="' + this.currentFont.getSize_0() + '" ' + 'fill="' + this.currentColor + '">' + theString + '<\/text>';
  this.write_1(s);
}
;
_.fillCircle = function fillCircle(x_0, y_0, d){
  var s;
  s = '<circle cx="' + carc2.round_0(x_0 + d / 2) + '" ' + 'cy="' + carc2.round_0(y_0 + d / 2) + '" ' + 'r="' + carc2.round_0(d / 2) + '" ' + 'fill="' + this.currentColor + '" />';
  this.write_1(s);
}
;
_.getId = function getId(){
  return jsNotEquals(this.id_0, null)?this.id_0:'mol' + carc2.instanceCnt;
}
;
_.getStringWidth = function getStringWidth(theString){
  var ret;
  ret = this.currentFont.getStringBounds(theString, this.graphics.getFontRenderContext()).getWidth();
  return ret;
}
;
_.getTextSize = function getTextSize(){
  return this.textSize;
}
;
_.onDrawAtom = function onDrawAtom_0(atom, symbol, x_0, y_0){
  var atomMapNo, s;
  atomMapNo = this.getMolecule_0().getAtomMapNo_0(atom);
  s = '<circle id="' + this.getId() + ':Atom:' + atom + '" ' + 'class="event" ' + (atomMapNo == 0?'':'data-atom-map-no="' + atomMapNo + '" ') + 'cx="' + carc2.round_0(x_0) + '" ' + 'cy="' + carc2.round_0(y_0) + '" ' + 'r="' + 8 + '" ' + 'opacity="0" />';
  this.atoms.add(s);
}
;
_.onDrawBond = function onDrawBond_0(bond, x1, y1, x2, y2){
  var s;
  s = '<line id="' + this.getId() + ':Bond:' + bond + '" ' + 'class="event" ' + 'x1="' + carc2.round_0(x1) + '" ' + 'y1="' + carc2.round_0(y1) + '" ' + 'x2="' + carc2.round_0(x2) + '" ' + 'y2="' + carc2.round_0(y2) + '" ' + 'stroke-width="' + 8 + '" ' + 'opacity="0" />';
  this.bonds.add(s);
}
;
_.setLineWidth = function setLineWidth(width_0){
  this.lineWidth_0 = toDouble_0(jl.round_1(100 * $wnd.Math.max(width_0, 1))) / 100;
}
;
_.setRGB = function setRGB(rgb){
  this.currentColor = carc2.makeColor((rgb & 16711680) >> 16, (rgb & 65280) >> 8, rgb & 255);
}
;
_.setTextSize = function setTextSize(theSize){
  if (this.textSize != theSize) {
    this.textSize = theSize;
    this.currentFont = new ja.Font('Helvetica', 0, theSize);
  }
}
;
_.simpleValidateView = function simpleValidateView_0(viewRect, mode){
  var img;
  this.width_0 = toInt_0(jl.round_1(viewRect.getWidth()));
  this.height_0 = toInt_0(jl.round_1(viewRect.getHeight()));
  img = new jai.BufferedImage(this.width_0, this.height_0, 2);
  this.graphics = img.createGraphics();
  return getClassPrototype(134).simpleValidateView.call(this, viewRect, mode);
}
;
_.toString_0 = function toString_9(){
  var a, a$iterator, b, b$iterator, footer, header, style;
  header = '<svg id="' + this.getId() + '" ' + 'xmlns="http://www.w3.org/2000/svg" version="1.1" ' + 'width="' + this.width_0 + 'px" ' + 'height="' + this.height_0 + 'px" ' + 'viewBox="0 0 ' + this.width_0 + ' ' + this.height_0 + '">\n';
  footer = '<\/svg>';
  style = this.legacyMode?'<style> #' + this.getId() + ' { pointer-events:none; }' + ' #' + this.getId() + ' .event ' + ' { pointer-events:all; }' + ' line { stroke-linecap:round; }' + ' polygon { stroke-linejoin:round; }' + ' <\/style>\n':'<g style="font-size:' + this.getTextSize() + 'px; fill-opacity:1; stroke-opacity:1; fill:black; stroke:black;' + ' font-weight:normal; text-rendering:optimizeLegibility; font-family:sans-serif;' + ' stroke-linejoin:round; stroke-linecap:round; stroke-dashoffset:0;">';
  header += '  ';
  header += '' + style;
  if (this.legacyMode) {
    for (b$iterator = this.bonds.iterator(); b$iterator.hasNext_0();) {
      b = castToString(b$iterator.next_3());
      this.write_1(b);
    }
    for (a$iterator = this.atoms.iterator(); a$iterator.hasNext_0();) {
      a = castToString(a$iterator.next_3());
      this.write_1(a);
    }
  }
  if (!this.legacyMode)
    this.write_1('<\/g>');
  return header + ('' + this.buffer.toString_0()) + footer;
}
;
_.write_1 = function write_0(s){
  this.buffer.append_9('  ');
  this.buffer.append_9(s);
  this.buffer.append_9('\n');
}
;
_.height_0 = 0;
_.legacyMode = false;
_.lineWidth_0 = 0;
_.textSize = 0;
_.width_0 = 0;
carc2.DEFAULT_ELEM_WIDTH = 8;
carc2.FONTNAME = 'Helvetica';
carc2.instanceCnt = 0;
cggl.Lcom_actelion_research_chem_SVGDepictor_2_classLit = createForClass('com.actelion.research.chem', 'SVGDepictor', 256, cggl.Lcom_actelion_research_chem_AbstractDepictor_2_classLit);
carc2.$clinit_SmilesAtom = function $clinit_SmilesAtom(){
  carc2.$clinit_SmilesAtom = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesAtom = function SmilesAtom(atom, bond, parent_0, isSideChainStart, isSideChainEnd){
  carc2.$clinit_SmilesAtom();
  Object_0.call(this);
  this.$init_43();
  this.atom = atom;
  this.bond = bond;
  this.parent_0 = parent_0;
  this.isSideChainStart = isSideChainStart;
  this.isSideChainEnd = isSideChainEnd;
}
;
defineClass(76, 1, {76:1, 1:1}, carc2.SmilesAtom);
_.$init_43 = function $init_43(){
}
;
_.isOpeningClosureTo = function isOpeningClosureTo(atom){
  var i;
  if (jsNotEquals(this.closureNeighbour, null))
    for (i = 0; i < this.closureNeighbour.length; i++)
      if (atom == this.closureNeighbour[i] && this.closureOpens[i])
        return true;
  return false;
}
;
_.atom = 0;
_.bond = 0;
_.isSideChainEnd = false;
_.isSideChainStart = false;
_.parent_0 = 0;
cggl.Lcom_actelion_research_chem_SmilesAtom_2_classLit = createForClass('com.actelion.research.chem', 'SmilesAtom', 76, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesCreator = function $clinit_SmilesCreator(){
  carc2.$clinit_SmilesCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesCreator = function SmilesCreator(){
  carc2.$clinit_SmilesCreator();
  Object_0.call(this);
  this.$init_44();
}
;
defineClass(423, 1, {1:1}, carc2.SmilesCreator);
_.$init_44 = function $init_44(){
}
;
_.generateSmiles = function generateSmiles(inMol){
  var atoms, bonds, i, visitedAllAtoms;
  visitedAllAtoms = false;
  this.mMol = inMol;
  this.mMol.ensureHelperArrays_0(15);
  atoms = this.mMol.getAtoms_0();
  bonds = this.mMol.getBonds_0();
  this.mVisitedMolBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, bonds, 16, 1);
  for (i = 0; i < bonds; ++i)
    this.mVisitedMolBond[i] = false;
  this.mVisitedMolAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, atoms, 16, 1);
  this.mMolAtomIsSmiAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atoms, 15, 1);
  for (i = 0; i < atoms; ++i) {
    this.mVisitedMolAtom[i] = false;
    this.mMolAtomIsSmiAtom[i] = -1;
  }
  this.mSmiAtomStr = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, 3 * atoms, 6, 1);
  this.mVisitedMolAtoms = 0;
  this.mRingClosures = 0;
  this.mDisconnections = 0;
  while (visitedAllAtoms == false) {
    for (i = 0; i < atoms; ++i) {
      if (this.mVisitedMolAtom[i] == false) {
        if (this.mDisconnections > 0)
          this.mSmiAtomStr[this.mVisitedMolAtoms++] = '.';
        this.visitMolAtom(i, -1);
        ++this.mDisconnections;
        break;
      }
    }
    if (i == atoms)
      visitedAllAtoms = true;
  }
  this.mSmiles = '';
  for (i = 0; i < this.mVisitedMolAtoms; ++i)
    this.mSmiles += '' + this.mSmiAtomStr[i];
  return this.mSmiles;
}
;
_.isOrganic_0 = function isOrganic_0(atomicNo){
  switch (atomicNo) {
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 15:
    case 16:
    case 17:
    case 35:
    case 53:
      return true;
    default:return false;
  }
}
;
_.visitMolAtom = function visitMolAtom(molAtom, molBond){
  var addBracket, atomCharge, atomIsotope, atomLabel, atomicNo, branchesToVisit, connAtom, connAtoms, connBond, currentSmiAtom, i, implicitHs, skippedConnAtoms;
  addBracket = true;
  branchesToVisit = 0;
  skippedConnAtoms = 0;
  currentSmiAtom = this.mVisitedMolAtoms;
  this.mMolAtomIsSmiAtom[molAtom] = currentSmiAtom;
  atomicNo = this.mMol.getAtomicNo_0(molAtom);
  atomLabel = this.mMol.getAtomLabel_0(molAtom);
  atomCharge = this.mMol.getAtomCharge_0(molAtom);
  atomIsotope = this.mMol.getAtomMass_0(molAtom);
  connAtoms = this.mMol.getConnAtoms_0(molAtom);
  if (atomCharge == 0 && atomIsotope == 0 && this.isOrganic_0(atomicNo))
    addBracket = false;
  this.mSmiAtomStr[currentSmiAtom] = '';
  if (molBond != -1) {
    switch (this.mMol.getBondOrder_0(molBond)) {
      case 0:
        this.mSmiAtomStr[currentSmiAtom] += '~';
        break;
      case 2:
        this.mSmiAtomStr[currentSmiAtom] += '=';
        break;
      case 3:
        this.mSmiAtomStr[currentSmiAtom] += '#';
        break;
    }
  }
  if (addBracket == true)
    this.mSmiAtomStr[currentSmiAtom] += '[';
  if (atomIsotope != 0)
    this.mSmiAtomStr[currentSmiAtom] += '' + jl.toString_45(atomIsotope);
  this.mSmiAtomStr[currentSmiAtom] += '' + atomLabel;
  if (addBracket == true) {
    if (0 < (implicitHs = this.mMol.getImplicitHydrogens_0(molAtom))) {
      this.mSmiAtomStr[currentSmiAtom] += 'H';
      if (1 < implicitHs)
        this.mSmiAtomStr[currentSmiAtom] += implicitHs;
    }
  }
  if (atomCharge != 0) {
    if (atomCharge > 0)
      this.mSmiAtomStr[currentSmiAtom] += '+';
    else 
      this.mSmiAtomStr[currentSmiAtom] += '-';
    if ($wnd.Math.abs(atomCharge) > 1)
      this.mSmiAtomStr[currentSmiAtom] += '' + jl.toString_45($wnd.Math.abs(atomCharge));
  }
  if (addBracket == true)
    this.mSmiAtomStr[currentSmiAtom] += ']';
  if (molBond != -1)
    this.mVisitedMolBond[molBond] = true;
  this.mVisitedMolAtom[molAtom] = true;
  ++this.mVisitedMolAtoms;
  for (i = 0; i < connAtoms; ++i)
    if (this.mVisitedMolBond[this.mMol.getConnBond_0(molAtom, i)] == false)
      ++branchesToVisit;
  for (i = 0; i < connAtoms; ++i) {
    connAtom = this.mMol.getConnAtom_0(molAtom, i);
    connBond = this.mMol.getConnBond_0(molAtom, i);
    if (this.mVisitedMolBond[connBond] == true) {
      ++skippedConnAtoms;
      continue;
    }
    if (this.mVisitedMolAtom[connAtom] == true) {
      ++this.mRingClosures;
      this.mVisitedMolBond[connBond] = true;
      switch (this.mMol.getBondOrder_0(connBond)) {
        case 0:
          this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '~';
          this.mSmiAtomStr[currentSmiAtom] += '~';
          break;
        case 2:
          this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '=';
          this.mSmiAtomStr[currentSmiAtom] += '=';
          break;
        case 3:
          this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '#';
          this.mSmiAtomStr[currentSmiAtom] += '3';
          break;
      }
      if (this.mRingClosures > 9) {
        this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '%';
        this.mSmiAtomStr[currentSmiAtom] += '%';
      }
      this.mSmiAtomStr[this.mMolAtomIsSmiAtom[connAtom]] += '' + jl.toString_45(this.mRingClosures);
      this.mSmiAtomStr[currentSmiAtom] += '' + jl.toString_45(this.mRingClosures);
      continue;
    }
    if (i - skippedConnAtoms < branchesToVisit - 1)
      this.mSmiAtomStr[this.mVisitedMolAtoms++] = '(';
    this.visitMolAtom(connAtom, connBond);
    if (i - skippedConnAtoms < branchesToVisit - 1)
      this.mSmiAtomStr[this.mVisitedMolAtoms++] = ')';
  }
}
;
_.mDisconnections = 0;
_.mRingClosures = 0;
_.mVisitedMolAtoms = 0;
cggl.Lcom_actelion_research_chem_SmilesCreator_2_classLit = createForClass('com.actelion.research.chem', 'SmilesCreator', 423, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesParser = function $clinit_SmilesParser(){
  carc2.$clinit_SmilesParser = emptyMethod;
  jl.$clinit_Object();
  carc2.HYDROGEN_ANY = -1;
}
;
carc2.SmilesParser = function SmilesParser(){
  carc2.$clinit_SmilesParser();
  carc2.SmilesParser_0.call(this, 0);
}
;
carc2.SmilesParser_0 = function SmilesParser_0(mode){
  carc2.$clinit_SmilesParser();
  Object_0.call(this);
  this.$init_45();
  this.mMode = mode & ~3;
  this.mSmartsMode = mode & 3;
  this.mAllowCactvs = (mode & 16) == 0;
  this.mSingleDotSeparator = (mode & 32) != 0;
  this.mCreateSmartsWarnings = (mode & 64) != 0;
  this.mMakeHydrogenExplicit = (mode & 8) != 0;
  this.mCoordinateMode = 2;
  if ((mode & 4) != 0)
    this.mCoordinateMode |= 1;
  if (this.mMakeHydrogenExplicit)
    this.mCoordinateMode &= ~2;
}
;
defineClass(147, 1, {1:1}, carc2.SmilesParser, carc2.SmilesParser_0);
_.$init_45 = function $init_45(){
}
;
_.addLargeAromaticRing = function addLargeAromaticRing(bond){
  var atom1, atom2, candidate, candidateBond, current, graphAtom, graphBond, graphLevel, graphParent, highest, i, j, parent_0;
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  atom1 = this.mMol.getBondAtom_0(0, bond);
  atom2 = this.mMol.getBondAtom_0(1, bond);
  graphAtom[0] = atom1;
  graphAtom[1] = atom2;
  graphBond[0] = -1;
  graphBond[1] = bond;
  graphLevel[atom1] = 1;
  graphLevel[atom2] = 2;
  graphParent[atom1] = -1;
  graphParent[atom2] = atom1;
  current = 1;
  highest = 1;
  while (current <= highest && graphLevel[graphAtom[current]] < 15) {
    parent_0 = graphAtom[current];
    for (i = 0; i < this.mMol.getConnAtoms_0(parent_0); i++) {
      candidate = this.mMol.getConnAtom_0(parent_0, i);
      if (candidate != graphParent[parent_0]) {
        candidateBond = this.mMol.getConnBond_0(parent_0, i);
        if (candidate == atom1) {
          graphBond[0] = candidateBond;
          for (j = 0; j <= highest; j++) {
            if (!this.mIsAromaticBond[graphBond[i]]) {
              this.mIsAromaticBond[graphBond[i]] = true;
              this.mAromaticBonds++;
            }
          }
          return;
        }
        if (this.mMol.isMarkedAtom_0(candidate) && graphLevel[candidate] == 0) {
          highest++;
          graphAtom[highest] = candidate;
          graphBond[highest] = candidateBond;
          graphLevel[candidate] = graphLevel[parent_0] + 1;
          graphParent[candidate] = parent_0;
        }
      }
    }
    current++;
  }
  return;
}
;
_.assignKnownEZBondParities = function assignKnownEZBondParities(){
  var atom, bond, bond0, connBond, i, i0, i1, isZ, j, otherAtom, paritiesFound, refAtom, refBond;
  this.mMol.ensureHelperArrays_0(7);
  paritiesFound = false;
  refAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  refBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  otherAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (!this.mMol.isSmallRingBond_0(bond0) && this.mMol.getBondType_0(bond0) == 2) {
      for (i0 = 0; i0 < 2; i0++) {
        refAtom[i0] = -1;
        otherAtom[i0] = -1;
        atom = this.mMol.getBondAtom_0(i0, bond0);
        for (j = 0; j < this.mMol.getConnAtoms_0(atom); j++) {
          connBond = this.mMol.getConnBond_0(atom, j);
          if (connBond != bond0) {
            if (refAtom[i0] == -1 && (this.mMol.getBondType_0(connBond) == 257 || this.mMol.getBondType_0(connBond) == 129)) {
              refAtom[i0] = this.mMol.getConnAtom_0(atom, j);
              refBond[i0] = connBond;
            }
             else {
              otherAtom[i0] = this.mMol.getConnAtom_0(atom, j);
            }
          }
        }
        if (refAtom[i0] == -1)
          break;
      }
      if (refAtom[0] != -1 && refAtom[1] != -1) {
        isZ = this.mMol.getBondType_0(refBond[0]) == this.mMol.getBondType_0(refBond[1]);
        for (i1 = 0; i1 < 2; i1++)
          if (refAtom[i1] == this.mMol.getBondAtom_0(0, refBond[i1]))
            isZ = !isZ;
        for (i = 0; i < 2; i++)
          if (otherAtom[i] != -1 && otherAtom[i] < refAtom[i])
            isZ = !isZ;
        this.mMol.setBondParity_0(bond0, isZ?2:1, false);
        paritiesFound = true;
      }
    }
  }
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++)
    if (this.mMol.getBondType_0(bond) == 257 || this.mMol.getBondType_0(bond) == 129)
      this.mMol.setBondType_0(bond, 1);
  return paritiesFound;
}
;
_.bondSymbolToQueryFeature = function bondSymbolToQueryFeature(symbol){
  return symbol == 61?2:symbol == 35?4:symbol == 36?32:symbol == 58?8:symbol == 62?16:symbol == 126?31:1;
}
;
_.connectConjugatedRadicalPairs = function connectConjugatedRadicalPairs(isAromaticBond){
  var atom, bond, bondOrder, candidate, current, graphAtom, graphLevel, graphParent, highest, i, parent_0;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mMol.isMarkedAtom_0(atom)) {
      graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
      graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
      graphParent = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
      graphAtom[0] = atom;
      graphLevel[atom] = 1;
      graphParent[atom] = -1;
      current = 0;
      highest = 0;
      while (current <= highest) {
        bondOrder = (graphLevel[graphAtom[current]] & 1) == 1?1:2;
        for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
          bond = this.mMol.getConnBond_0(graphAtom[current], i);
          if (this.mMol.getBondOrder_0(bond) == bondOrder && isAromaticBond[bond]) {
            candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
            if (graphLevel[candidate] == 0) {
              if (bondOrder == 1 && this.mMol.isMarkedAtom_0(candidate)) {
                parent_0 = graphAtom[current];
                while (parent_0 != -1) {
                  this.mMol.setBondType_0(this.mMol.getBond_0(candidate, parent_0), bondOrder == 1?2:1);
                  bondOrder = 3 - bondOrder;
                  candidate = parent_0;
                  parent_0 = graphParent[parent_0];
                }
                this.mMol.setAtomMarker_0(atom, false);
                this.mMol.setAtomMarker_0(candidate, false);
                this.mAromaticAtoms -= 2;
                return true;
              }
              graphAtom[++highest] = candidate;
              graphParent[candidate] = graphAtom[current];
              graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
            }
          }
        }
        current++;
      }
    }
  }
  return false;
}
;
_.correctValenceExceededNitrogen = function correctValenceExceededNitrogen(){
  var atom, connAtom, connBond, i;
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    if (this.mMol.getAtomicNo_0(atom) == 7 && this.mMol.getAtomCharge_0(atom) == 0 && this.mMol.getOccupiedValence_0(atom) > 3 && this.mMol.getAtomPi_0(atom) > 0) {
      for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
        connAtom = this.mMol.getConnAtom_0(atom, i);
        connBond = this.mMol.getConnBond_0(atom, i);
        if (this.mMol.getBondOrder_0(connBond) > 1 && this.mMol.isElectronegative_0(connAtom)) {
          if (this.mMol.getBondType_0(connBond) == 4)
            this.mMol.setBondType_0(connBond, 2);
          else 
            this.mMol.setBondType_0(connBond, 1);
          this.mMol.setAtomCharge_0(atom, this.mMol.getAtomCharge_0(atom) + 1);
          this.mMol.setAtomCharge_0(connAtom, this.mMol.getAtomCharge_0(connAtom) - 1);
          this.mMol.setAtomAbnormalValence_0(atom, -1);
          break;
        }
      }
    }
  }
}
;
_.getSmartsWarning_0 = function getSmartsWarning(){
  return isNull(this.mSmartsWarningBuffer)?'':'Unresolved SMARTS features:' + this.mSmartsWarningBuffer;
}
;
_.isBondSymbol = function isBondSymbol(theChar){
  return theChar == 45 || theChar == 61 || theChar == 35 || theChar == 36 || theChar == 58 || theChar == 47 || theChar == 92 || theChar == 60 || theChar == 126 || theChar == 33 || theChar == 64;
}
;
_.isRepeatedAllowedORFeature = function isRepeatedAllowedORFeature(smiles, commaPosition, skipCount){
  var index1, index2;
  if (commaPosition < 3)
    return false;
  index1 = commaPosition - 1;
  if (smiles[index1] == 43 || smiles[index1] == 45)
    index1--;
  if (!jl.isDigit_0(smiles[index1]))
    return false;
  index1--;
  if (smiles[index1] != 68 && smiles[index1] != 82 && smiles[index1] != 88 && smiles[index1] != 122)
    return false;
  skipCount[0] = 0;
  while (index1 > 0 && isLetter(smiles[index1 - 1])) {
    index1--;
    skipCount[0]++;
  }
  index2 = commaPosition + 1;
  while (isLetter(smiles[index1])) {
    if (smiles.length <= index2 || smiles[index1] != smiles[index2])
      return false;
    index1++;
    index2++;
  }
  return true;
}
;
_.locateAromaticDoubleBonds = function locateAromaticDoubleBonds(allowSmartsFeatures, smartsFeatureFound){
  var aromaticConnBonds, atom, atom1, atom2, bond, bond$array, bond$index, bond$max, bond0, bond1, bond2, bondAtom, connBond, i, isAromaticBond, isAromaticRing, isAromaticRingAtom, isFullyDelocalized, j, j$array, j$array0, j$array1, j$index, j$index0, j$index1, j$max, j$max0, j$max1, k, k$array, k$index, k$max, qualifyingBondFound, qualifyingNo, ring, ring0, ring1, ringAtom, ringBond, ringSet;
  this.mMol.ensureHelperArrays_0(1);
  this.mIsAromaticBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  this.mAromaticBonds = 0;
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (this.mMol.getBondType_0(bond0) == 64) {
      this.mMol.setBondType_0(bond0, 1);
      this.mIsAromaticBond[bond0] = true;
      this.mAromaticBonds++;
    }
  }
  isAromaticRingAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  ringSet = new carc2.RingCollection(this.mMol, 3);
  isAromaticRing = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1);
  for (ring0 = 0; ring0 < ringSet.getSize_0(); ring0++) {
    ringAtom = ringSet.getRingAtoms_0(ring0);
    isAromaticRing[ring0] = true;
    for (j$array0 = ringAtom , j$index0 = 0 , j$max0 = j$array0.length; j$index0 < j$max0; ++j$index0) {
      j = j$array0[j$index0];
      if (!this.mMol.isMarkedAtom_0(j)) {
        isAromaticRing[ring0] = false;
        break;
      }
    }
    if (isAromaticRing[ring0]) {
      for (j$array1 = ringAtom , j$index1 = 0 , j$max1 = j$array1.length; j$index1 < j$max1; ++j$index1) {
        j = j$array1[j$index1];
        isAromaticRingAtom[j] = true;
      }
      ringBond = ringSet.getRingBonds_0(ring0);
      for (j$array = ringBond , j$index = 0 , j$max = j$array.length; j$index < j$max; ++j$index) {
        j = j$array[j$index];
        if (!this.mIsAromaticBond[j]) {
          this.mIsAromaticBond[j] = true;
          this.mAromaticBonds++;
        }
      }
    }
  }
  for (bond1 = 0; bond1 < this.mMol.getBonds_0(); bond1++) {
    if (!this.mIsAromaticBond[bond1] && ringSet.getBondRingSize_0(bond1) != 0 && this.mMol.isMarkedAtom_0(this.mMol.getBondAtom_0(0, bond1)) && this.mMol.isMarkedAtom_0(this.mMol.getBondAtom_0(1, bond1))) {
      this.addLargeAromaticRing(bond1);
    }
  }
  for (bond2 = 0; bond2 < this.mMol.getBonds_0(); bond2++) {
    if (!this.mIsAromaticBond[bond2]) {
      atom1 = this.mMol.getBondAtom_0(0, bond2);
      atom2 = this.mMol.getBondAtom_0(1, bond2);
      if (!isAromaticRingAtom[atom1] && !isAromaticRingAtom[atom2] && this.mMol.isMarkedAtom_0(atom1) && this.mMol.isMarkedAtom_0(atom2)) {
        this.mIsAromaticBond[bond2] = true;
        this.mAromaticBonds++;
      }
    }
  }
  this.mMol.ensureHelperArrays_0(7);
  isAromaticBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 16, 1);
  if (this.mMol.getBonds_0() >= 0)
    jl.arraycopy(this.mIsAromaticBond, 0, isAromaticBond, 0, this.mMol.getBonds_0());
  for (ring1 = 0; ring1 < ringSet.getSize_0(); ring1++) {
    if (isAromaticRing[ring1]) {
      ringAtom = ringSet.getRingAtoms_0(ring1);
      for (k$array = ringAtom , k$index = 0 , k$max = k$array.length; k$index < k$max; ++k$index) {
        k = k$array[k$index];
        if (!this.qualifiesForPi(k)) {
          if (this.mMol.isMarkedAtom_0(k)) {
            this.mMol.setAtomMarker_0(k, false);
            this.mAromaticAtoms--;
          }
          for (j = 0; j < this.mMol.getConnAtoms_0(k); j++) {
            connBond = this.mMol.getConnBond_0(k, j);
            if (this.mIsAromaticBond[connBond]) {
              this.mIsAromaticBond[connBond] = false;
              this.mAromaticBonds--;
            }
          }
        }
      }
    }
  }
  this.promoteObviousBonds_0();
  for (ring = 0; ring < ringSet.getSize_0(); ring++) {
    if (isAromaticRing[ring] && ringSet.getRingSize_0(ring) == 6) {
      ringBond = ringSet.getRingBonds_0(ring);
      isFullyDelocalized = true;
      for (bond$array = ringBond , bond$index = 0 , bond$max = bond$array.length; bond$index < bond$max; ++bond$index) {
        bond = bond$array[bond$index];
        if (!this.mIsAromaticBond[bond]) {
          isFullyDelocalized = false;
          break;
        }
      }
      if (isFullyDelocalized) {
        this.promoteBond_0(ringBond[0]);
        this.promoteBond_0(ringBond[2]);
        this.promoteBond_0(ringBond[4]);
        this.promoteObviousBonds_0();
      }
    }
  }
  for (qualifyingNo = 5; qualifyingNo >= 4; qualifyingNo--) {
    do {
      qualifyingBondFound = false;
      for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
        if (this.mIsAromaticBond[bond]) {
          aromaticConnBonds = 0;
          for (i = 0; i < 2; i++) {
            bondAtom = this.mMol.getBondAtom_0(i, bond);
            for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++)
              if (this.mIsAromaticBond[this.mMol.getConnBond_0(bondAtom, j)])
                aromaticConnBonds++;
          }
          if (aromaticConnBonds == qualifyingNo) {
            this.promoteBond_0(bond);
            this.promoteObviousBonds_0();
            qualifyingBondFound = true;
            break;
          }
        }
      }
    }
     while (qualifyingBondFound);
  }
  while (this.mAromaticAtoms >= 2)
    if (!this.connectConjugatedRadicalPairs(isAromaticBond))
      break;
  if (allowSmartsFeatures) {
    if (this.mAromaticAtoms != 0) {
      for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
        if (this.mMol.isMarkedAtom_0(atom)) {
          this.mMol.setAtomMarker_0(atom, false);
          this.mMol.setAtomQueryFeature(atom, 2, true);
          this.mAromaticAtoms--;
          smartsFeatureFound = true;
        }
      }
    }
    if (this.mAromaticBonds != 0) {
      for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
        if (this.mIsAromaticBond[bond]) {
          this.mIsAromaticBond[bond] = false;
          this.mMol.setBondType_0(bond, 64);
          this.mAromaticBonds--;
          smartsFeatureFound = true;
        }
      }
    }
  }
   else {
    for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
      if (this.mMol.isMarkedAtom_0(atom) && this.mMol.getImplicitHydrogens_0(atom) != 0) {
        this.mMol.setAtomMarker_0(atom, false);
        this.mMol.setAtomRadical_0(atom, 32);
        this.mAromaticAtoms--;
      }
    }
  }
  if (this.mSmartsMode == 0 || this.mSmartsMode == 1 && !smartsFeatureFound) {
    if (this.mAromaticAtoms != 0)
      throw toJs(new jl.Exception_1('Assignment of aromatic double bonds failed'));
    if (this.mAromaticBonds != 0)
      throw toJs(new jl.Exception_1('Assignment of aromatic double bonds failed'));
  }
}
;
_.parse_0 = function parse_7(mol, smiles){
  this.parse_9(mol, jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(smiles, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)), true, true);
}
;
_.parse_7 = function parse_8(mol, smiles, position, endIndex){
  this.parse_8(mol, smiles, position, endIndex, true, true);
}
;
_.parse_8 = function parse_9(mol, smiles, position, endIndex, createCoordinates, readStereoFeatures){
  var abnormalValence, allowSmarts, atom, atom0, atomInfo, atomList, atomMass, atomQueryFeatures, atomicNo, baseAtom, bond, bondQueryFeatures, bondType, bondTypePosition, bracketLevel, bytes, charge, compatibleValenceFound, excludedBonds, explicitHydrogen, explicitHydrogens, flags, fromAtom, group, group$iterator, handleHydrogenAtomMap, hasBondType, hasLeadingBracket, hydrogenCount, i, i0, inventor, isClockwise, isDoubleDigit, isNot, isNotList, list, localCharge, mapNo, mayBeAliphatic, mayBeAromatic, newSize, number, oldSize, parity, parity$iterator, parityFound, parityMap, range, rca, rca$array, rca$index, rca$max, recursiveGroupList, ringClosureAtom, ringClosureBondQueryFeatures, ringClosureBondType, ringClosurePosition, ringSize, skipCount, squareBracketOpen, start_0, theChar, usedValence, valence, valence$array, valence$index, valence$max, valences;
  this.mMol = mol;
  this.mMol.clear_0();
  if (isNotNull(this.mSmartsWarningBuffer))
    this.mSmartsWarningBuffer.setLength(0);
  this.mAromaticAtoms = 0;
  this.mSmartsFeatureFound = false;
  allowSmarts = this.mSmartsMode != 0;
  parityMap = null;
  baseAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 32, 15, 1);
  baseAtom[0] = -1;
  ringClosureAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 16, 15, 1);
  ringClosurePosition = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 16, 15, 1);
  ringClosureBondType = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 16, 15, 1);
  ringClosureBondQueryFeatures = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 16, 15, 1);
  for (i0 = 0; i0 < 16; i0++)
    ringClosureAtom[i0] = -1;
  atomMass = 0;
  fromAtom = -1;
  squareBracketOpen = false;
  isDoubleDigit = false;
  hasLeadingBracket = false;
  bracketLevel = 0;
  bondType = 1;
  bondQueryFeatures = 0;
  atomList = new caru.SortedList;
  range = new carc2.SmilesRange(smiles);
  atomInfo = new carc2.SmilesParser$AtomInfo;
  recursiveGroupList = new ju.ArrayList;
  skipCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1, 15, 1);
  while (smiles[position] <= 32)
    position++;
  while (position < endIndex) {
    theChar = narrow_char(smiles[position++]);
    if (jl.isLetter_0(theChar) || theChar == 42 || theChar == 63 || theChar == 33 && allowSmarts && squareBracketOpen || theChar == 35 && allowSmarts && squareBracketOpen) {
      atomicNo = -1;
      charge = 0;
      mapNo = 0;
      abnormalValence = -1;
      explicitHydrogens = -1;
      parityFound = false;
      isClockwise = false;
      atomQueryFeatures = 0;
      if (squareBracketOpen) {
        if (theChar == 42) {
          atomicNo = 6;
          atomQueryFeatures = or_0(atomQueryFeatures, 1);
        }
         else if (theChar == 63) {
          atomicNo = 0;
        }
         else {
          isNotList = theChar == 33;
          if (isNotList) {
            this.mSmartsFeatureFound = true;
            atomQueryFeatures = or_0(atomQueryFeatures, 1);
            position++;
          }
          if (smiles[position - 1] == 82 && allowSmarts && (jl.isDigit_0(smiles[position]) || this.mAllowCactvs && smiles[position] == 123)) {
            atomicNo = 6;
            atomQueryFeatures = or_0(atomQueryFeatures, 1);
            position--;
            if (isNotList)
              position--;
          }
           else {
            if (!this.parseAtomInBrackets(smiles, position - 1, endIndex, atomInfo))
              throw toJs(new jl.Exception_1("SmilesParser: Unexpected character in atom definition:'" + charToString(narrow_char(smiles[position - 1])) + "' position:" + (position - 1)));
            atomicNo = atomInfo.atomicNo;
            position += atomInfo.labelLength - 1;
            if (this.mSmartsMode != 2)
              explicitHydrogens = 9;
            if (allowSmarts && (smiles[position] == 44 || isNotList)) {
              mayBeAromatic = atomInfo.mayBeAromatic;
              mayBeAliphatic = atomInfo.mayBeAliphatic;
              start_0 = position - atomInfo.labelLength;
              while (start_0 < endIndex) {
                if (!this.parseAtomInBrackets(smiles, start_0, endIndex, atomInfo)) {
                  if (!isNotList)
                    throw toJs(new jl.Exception_1("SmilesParser: Unexpected character in atom list:'" + charToString(narrow_char(smiles[start_0])) + "'. Position:" + start_0));
                  break;
                }
                if (atomInfo.atomicNo == 1) {
                  if (!isNotList)
                    throw toJs(new jl.Exception_1("SmilesParser: Hydrogen is not supported in positive atom lists:'" + jl.$create_7(ju.copyOfRange(smiles, start_0, endIndex)) + "'. Position:" + start_0));
                }
                 else {
                  atomList.add_10(jl.valueOf_26(atomInfo.atomicNo));
                  mayBeAromatic = mayBeAromatic | atomInfo.mayBeAromatic;
                  mayBeAliphatic = mayBeAliphatic | atomInfo.mayBeAliphatic;
                }
                start_0 += atomInfo.labelLength;
                if (smiles[start_0] != (isNotList?59:44))
                  break;
                if (isNotList && smiles[start_0 + 1] != 33)
                  break;
                start_0++;
                if (smiles[start_0] == 33)
                  start_0++;
              }
              if (atomList.size_1() > 1) {
                explicitHydrogens = -1;
                if (!mayBeAliphatic)
                  atomQueryFeatures = or_0(atomQueryFeatures, 2);
                else if (!mayBeAromatic)
                  atomQueryFeatures = or_0(atomQueryFeatures, 4);
              }
              position = start_0;
            }
          }
        }
        while (squareBracketOpen) {
          if (smiles[position] == 64) {
            position++;
            if (smiles[position] == 64) {
              isClockwise = true;
              position++;
            }
            parityFound = true;
            continue;
          }
          if (smiles[position] == 58) {
            position++;
            while (jl.isDigit_0(smiles[position])) {
              mapNo = 10 * mapNo + smiles[position] - 48;
              position++;
            }
            continue;
          }
          if (smiles[position] == 91)
            throw toJs(new jl.Exception_1('SmilesParser: nested square brackets found. Position:' + position));
          if (smiles[position] == 93) {
            position++;
            squareBracketOpen = false;
            continue;
          }
          charge = this.parseCharge(smiles, position, skipCount);
          if (skipCount[0] != 0) {
            position += skipCount[0];
            if (charge == 0)
              atomQueryFeatures = or_0(atomQueryFeatures, or_0(33554432, 134217728));
            continue;
          }
          isNot = smiles[position] == 33;
          if (isNot)
            position++;
          if (smiles[position] == 72) {
            position++;
            position += range.parse_10(position, 1, 1);
            flags = 0;
            if (range.min_0 <= 0 && range.max_0 >= 0)
              flags = or_0(flags, 128);
            if (range.min_0 <= 1 && range.max_0 >= 1)
              flags = or_0(flags, 256);
            if (range.min_0 <= 2 && range.max_0 >= 2)
              flags = or_0(flags, 512);
            if (range.min_0 <= 3 && range.max_0 >= 3)
              flags = or_0(flags, 1024);
            if (isNot) {
              atomQueryFeatures = or_0(atomQueryFeatures, flags);
              explicitHydrogens = -1;
            }
             else {
              if (range.isSingle()) {
                explicitHydrogens = range.min_0;
              }
               else {
                atomQueryFeatures = or_0(atomQueryFeatures, and_0(1920, not_0(flags)));
                explicitHydrogens = -1;
              }
            }
            continue;
          }
          if (smiles[position] == 68) {
            position++;
            position += range.parse_10(position, 1, 1);
            flags = 0;
            if (range.min_0 <= 0 && range.max_0 >= 0)
              flags = or_0(flags, 131072);
            if (range.min_0 <= 1 && range.max_0 >= 1)
              flags = or_0(flags, 262144);
            if (range.min_0 <= 2 && range.max_0 >= 2)
              flags = or_0(flags, 524288);
            if (range.min_0 <= 3 && range.max_0 >= 3)
              flags = or_0(flags, 1048576);
            if (range.min_0 <= 4 && range.max_0 >= 4)
              flags = or_0(flags, 2097152);
            if (neq(flags, 0)) {
              if (isNot)
                atomQueryFeatures = or_0(atomQueryFeatures, flags);
              else if (neq(and_0(atomQueryFeatures, 4063232), 0))
                atomQueryFeatures = and_0(atomQueryFeatures, not_0(flags));
              else {
                flags = xor_0(flags, 4063232);
                atomQueryFeatures = or_0(atomQueryFeatures, flags);
              }
            }
            continue;
          }
          if (smiles[position] == 122 && this.mAllowCactvs) {
            position++;
            position += range.parse_10(position, 1, 4);
            flags = 0;
            if (range.min_0 <= 0 && range.max_0 >= 0)
              flags = or_0(flags, 549755813888);
            if (range.min_0 <= 1 && range.max_0 >= 1)
              flags = or_0(flags, 1099511627776);
            if (range.min_0 <= 2 && range.max_0 >= 2)
              flags = or_0(flags, 2199023255552);
            if (range.min_0 <= 3 && range.max_0 >= 3)
              flags = or_0(flags, 4398046511104);
            if (range.min_0 <= 4 && range.max_0 >= 4)
              flags = or_0(flags, 8796093022208);
            if (neq(flags, 0)) {
              if (isNot)
                atomQueryFeatures = or_0(atomQueryFeatures, flags);
              else if (neq(and_0(atomQueryFeatures, 17042430230528), 0))
                atomQueryFeatures = and_0(atomQueryFeatures, not_0(flags));
              else {
                flags = xor_0(flags, 17042430230528);
                atomQueryFeatures = or_0(atomQueryFeatures, flags);
              }
            }
            continue;
          }
          if (smiles[position] == 88) {
            position++;
            position += range.parse_10(position, 1, 1);
            valences = (carc2.$clinit_Molecule() , carc2.cAtomValence)[atomicNo];
            if (jsEquals(valences, null))
              continue;
            valence = valences[0];
            localCharge = this.parseCharge(smiles, position, skipCount);
            if (skipCount[0] != 0) {
              if (carc2.isAtomicNoElectronegative(atomicNo))
                valence += localCharge;
              else if (atomicNo == 6)
                valence -= $wnd.Math.abs(localCharge);
              else 
                valence -= localCharge;
            }
            flags = 0;
            if (valence - range.min_0 <= 0 && valence - range.max_0 >= 0)
              flags = or_0(flags, 16384);
            if (valence - range.min_0 <= 1 && valence - range.max_0 >= 1)
              flags = or_0(flags, 32768);
            if (valence - range.min_0 <= 2 && valence - range.max_0 >= 2)
              flags = or_0(flags, 65536);
            if (neq(flags, 0)) {
              if (isNot)
                atomQueryFeatures = or_0(atomQueryFeatures, flags);
              else if (neq(and_0(atomQueryFeatures, 114688), 0))
                atomQueryFeatures = and_0(atomQueryFeatures, not_0(flags));
              else {
                flags = xor_0(flags, 114688);
                atomQueryFeatures = or_0(atomQueryFeatures, flags);
              }
            }
            continue;
          }
          if (smiles[position] == 65 || smiles[position] == 97) {
            position++;
            atomQueryFeatures = or_0(atomQueryFeatures, isNot ^ smiles[position] == 65?4:2);
            continue;
          }
          if (smiles[position] == 82) {
            position++;
            position += range.parse_10(position, 1, 3);
            flags = 0;
            if (range.min_0 <= 0 && range.max_0 >= 0)
              flags = or_0(flags, 8);
            if (range.min_0 <= 1 && range.max_0 >= 1)
              flags = or_0(flags, 16);
            if (range.min_0 <= 2 && range.max_0 >= 2)
              flags = or_0(flags, 32);
            if (range.min_0 <= 3 && range.max_0 >= 3)
              flags = or_0(flags, 64);
            if (range.max_0 > 3)
              this.smartsWarning((isNot?'!R':'R') + range.max_0);
            if (neq(flags, 0)) {
              if (isNot)
                atomQueryFeatures = or_0(atomQueryFeatures, flags);
              else if (neq(and_0(atomQueryFeatures, 120), 0))
                atomQueryFeatures = and_0(atomQueryFeatures, not_0(flags));
              else {
                flags = xor_0(flags, 120);
                atomQueryFeatures = or_0(atomQueryFeatures, flags);
              }
            }
            continue;
          }
          if (smiles[position] == 114) {
            position++;
            position += range.parse_10(position, 1, 1);
            if (range.isDefault) {
              if (isNot)
                atomQueryFeatures = or_0(atomQueryFeatures, and_0(384, not_0(8)));
              else 
                atomQueryFeatures = or_0(atomQueryFeatures, 8);
              continue;
            }
            ringSize = range.min_0;
            if (range.isRange())
              this.smartsWarning((isNot?'!r':'r') + ('' + range.toString_0()));
            if (!isNot && ringSize >= 3 && ringSize <= 7)
              atomQueryFeatures = or_0(atomQueryFeatures, fromInt_0(ringSize << 22));
            else if (!range.isRange())
              this.smartsWarning((isNot?'!r':'r') + ringSize);
            continue;
          }
          if (smiles[position] == 118) {
            position++;
            position += range.parse_10(position, 1, 1);
            valence = range.min_0;
            if (range.isRange())
              this.smartsWarning((isNot?'!v':'v') + ('' + range.toString_0()));
            if (!isNot && valence <= 14)
              abnormalValence = valence;
            else if (!range.isRange())
              this.smartsWarning((isNot?'!v':'v') + valence);
            continue;
          }
          if (smiles[position] == 36) {
            position += this.parseRecursiveGroup(smiles, position, recursiveGroupList);
            continue;
          }
          if (allowSmarts && (smiles[position] == 59 || smiles[position] == 38)) {
            this.mSmartsFeatureFound = true;
            position++;
            continue;
          }
          if (allowSmarts && (smiles[position] == 44 && this.isRepeatedAllowedORFeature(smiles, position, skipCount))) {
            this.mSmartsFeatureFound = true;
            position += skipCount[0] + 1;
            continue;
          }
          throw toJs(new jl.Exception_1("SmilesParser: unexpected character inside brackets: '" + charToString(narrow_char(smiles[position])) + "', position:" + position));
        }
      }
       else if (theChar == 42) {
        atomicNo = 6;
        atomQueryFeatures = or_0(atomQueryFeatures, 1);
      }
       else if (theChar == 63) {
        atomicNo = 0;
      }
       else if ((theChar == 65 || theChar == 97) && allowSmarts) {
        atomicNo = 6;
        atomQueryFeatures = or_0(atomQueryFeatures, 1);
        atomQueryFeatures = or_0(atomQueryFeatures, theChar == 65?4:2);
        this.mSmartsFeatureFound = true;
      }
       else {
        switch (toUpperCase(theChar)) {
          case 66:
            if (position < endIndex && smiles[position] == 114) {
              atomicNo = 35;
              position++;
            }
             else 
              atomicNo = 5;
            break;
          case 67:
            if (position < endIndex && smiles[position] == 108) {
              atomicNo = 17;
              position++;
            }
             else 
              atomicNo = 6;
            break;
          case 70:
            atomicNo = 9;
            break;
          case 73:
            atomicNo = 53;
            break;
          case 78:
            atomicNo = 7;
            break;
          case 79:
            atomicNo = 8;
            break;
          case 80:
            atomicNo = 15;
            break;
          case 83:
            atomicNo = 16;
            break;
        }
      }
      if (atomicNo == -1 && theChar != 63)
        throw toJs(new jl.Exception_1('SmilesParser: unknown element label found. Position:' + (position - 1)));
      atom0 = this.mMol.addAtom_2(atomicNo);
      this.mMol.setAtomCharge_0(atom0, charge);
      this.mMol.setAtomMapNo_0(atom0, mapNo, false);
      this.mMol.setAtomAbnormalValence_0(atom0, abnormalValence);
      if (neq(atomQueryFeatures, 0)) {
        this.mSmartsFeatureFound = true;
        if (neq(and_0(atomQueryFeatures, 2), 0)) {
          atomQueryFeatures = and_0(atomQueryFeatures, not_0(2));
          this.mMol.setAtomMarker_0(atom0, true);
          this.mAromaticAtoms++;
        }
         else {
          this.mMol.setAtomMarker_0(atom0, false);
        }
        this.mMol.setAtomQueryFeature(atom0, atomQueryFeatures, true);
      }
      if (atomList.size_1() != 0) {
        this.mSmartsFeatureFound = true;
        list = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atomList.size_1(), 15, 1);
        for (i = 0; i < atomList.size_1(); i++)
          list[i] = castTo(atomList.get_3(i), 32).intValue();
        this.mMol.setAtomList_0(atom0, list);
        atomList.removeAll_0();
      }
       else {
        if (isLowerCase_0(theChar)) {
          if (atomicNo != 5 && atomicNo != 6 && atomicNo != 7 && atomicNo != 8 && atomicNo != 15 && atomicNo != 16 && atomicNo != 33 && atomicNo != 34)
            throw toJs(new jl.Exception_1('SmilesParser: atomicNo ' + atomicNo + ' must not be aromatic. Position:' + (position - 1)));
          this.mMol.setAtomMarker_0(atom0, true);
          this.mAromaticAtoms++;
        }
         else {
          this.mMol.setAtomMarker_0(atom0, false);
        }
      }
      if (!recursiveGroupList.isEmpty()) {
        for (group$iterator = recursiveGroupList.iterator(); group$iterator.hasNext_0();) {
          group = castTo(group$iterator.next_3(), 19);
          group.setAtomicNo_0(0, 0);
          mol.addSubstituent_0(group, atom0);
        }
        recursiveGroupList.clear();
      }
      if (explicitHydrogens != -1 && atomicNo != 1) {
        bytes = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, 1, 15, 1);
        bytes[0] = narrow_byte(explicitHydrogens);
        this.mMol.setAtomCustomLabel_1(atom0, bytes);
      }
      fromAtom = baseAtom[bracketLevel];
      if (baseAtom[bracketLevel] != -1 && bondType != 512) {
        bond = this.mMol.addBond_1(baseAtom[bracketLevel], atom0, bondType);
        if (bondQueryFeatures != 0) {
          this.mSmartsFeatureFound = true;
          this.mMol.setBondQueryFeature_0(bond, bondQueryFeatures, true);
        }
      }
      bondType = 1;
      bondQueryFeatures = 0;
      baseAtom[bracketLevel] = atom0;
      if (atomMass != 0) {
        this.mMol.setAtomMass_0(atom0, atomMass);
        atomMass = 0;
      }
      if (readStereoFeatures) {
        parity = isNull(parityMap)?null:castTo(parityMap.get(jl.valueOf_26(fromAtom)), 168);
        if (isNotNull(parity))
          parity.addNeighbor(atom0, position, atomicNo == 1 && atomMass == 0);
        if (parityFound) {
          if (isNull(parityMap))
            parityMap = new ju.TreeMap;
          hydrogenCount = explicitHydrogens == 9?0:explicitHydrogens;
          parityMap.put(jl.valueOf_26(atom0), new carc2.SmilesParser$THParity(atom0, position - 2, fromAtom, hydrogenCount, position - 1, isClockwise));
        }
      }
      continue;
    }
    if (theChar == 36) {
      if (!recursiveGroupList.isEmpty())
        throw toJs(new jl.Exception_1('SmilesParser: multiple recursive SMARTS without preceding atom are not supported yet. Position:' + (position - 1)));
      baseAtom[bracketLevel] = mol.getAllAtoms_0();
      position += this.parseRecursiveGroup(smiles, position - 1, recursiveGroupList);
      mol.addMolecule_0(castTo(recursiveGroupList.getAtIndex(0), 70));
      recursiveGroupList.clear();
      continue;
    }
    if (theChar == 46) {
      baseAtom[bracketLevel] = -1;
      bondType = 512;
      continue;
    }
    if (this.isBondSymbol(theChar)) {
      if (squareBracketOpen)
        throw toJs(new jl.Exception_1("SmilesParser: unexpected bond symbol inside square brackets: '" + charToString(theChar) + "', position:" + (position - 1)));
      excludedBonds = 0;
      while (this.isBondSymbol(theChar)) {
        if (theChar == 33) {
          theChar = narrow_char(smiles[position++]);
          if (theChar == 64)
            bondQueryFeatures |= 128;
          else if (theChar == 45 && smiles[position] == 62 || theChar == 60 && smiles[position] == 45) {
            excludedBonds |= 32;
            position++;
          }
           else if (theChar == 45)
            excludedBonds |= 1;
          else if (theChar == 61)
            excludedBonds |= 2;
          else if (theChar == 35)
            excludedBonds |= 4;
          else if (theChar == 36)
            excludedBonds |= 32;
          else if (theChar == 58)
            excludedBonds |= 8;
          else 
            throw toJs(new jl.Exception_1("SmilesParser: bond symbol '" + charToString(theChar) + "' not allowed after '!'. Position:" + (position - 1)));
        }
         else {
          if (theChar == 64)
            bondQueryFeatures |= 256;
          else if (theChar == 61)
            bondType = 2;
          else if (theChar == 35)
            bondType = 4;
          else if (theChar == 36)
            bondType = 8;
          else if (theChar == 58)
            bondType = 64;
          else if (theChar == 126)
            bondQueryFeatures |= 1 | 2 | 4 | 8;
          else if (theChar == 47) {
            if (readStereoFeatures)
              bondType = 257;
          }
           else if (theChar == 92) {
            if (readStereoFeatures)
              bondType = 129;
          }
           else if (theChar == 45 && smiles[position] == 62 || theChar == 60 && smiles[position] == 45) {
            bondType = 32;
            position++;
          }
          if (smiles[position] == 44) {
            bondQueryFeatures |= this.bondSymbolToQueryFeature(bondType == 32?62:theChar);
            while (smiles[position] == 44) {
              if (smiles[position + 1] == 60 && smiles[position + 2] == 45 || smiles[position + 1] == 45 && smiles[position + 2] == 62) {
                bondQueryFeatures |= this.bondSymbolToQueryFeature(62);
                position += 3;
              }
               else {
                bondQueryFeatures |= this.bondSymbolToQueryFeature(narrow_char(smiles[position + 1]));
                position += 2;
              }
            }
          }
        }
        if (smiles[position] == 59) {
          position++;
          theChar = narrow_char(smiles[position++]);
          continue;
        }
        if (excludedBonds != 0)
          bondQueryFeatures |= 31 & ~excludedBonds;
        break;
      }
      continue;
    }
    if (theChar <= 32) {
      position = endIndex;
      continue;
    }
    if (isDigit(theChar)) {
      number = theChar - 48;
      if (squareBracketOpen) {
        while (position < endIndex && jl.isDigit_0(smiles[position])) {
          number = 10 * number + smiles[position] - 48;
          position++;
        }
        atomMass = number;
      }
       else {
        bondTypePosition = isDoubleDigit?position - 3:position - 2;
        hasBondType = smiles[bondTypePosition] == 45 || smiles[bondTypePosition] == 47 || smiles[bondTypePosition] == 92 || smiles[bondTypePosition] == 61 || smiles[bondTypePosition] == 35 || smiles[bondTypePosition] == 36 || smiles[bondTypePosition] == 58 || smiles[bondTypePosition] == 62 || smiles[bondTypePosition] == 126;
        if (isDoubleDigit && position < endIndex && jl.isDigit_0(smiles[position])) {
          number = 10 * number + smiles[position] - 48;
          isDoubleDigit = false;
          position++;
        }
        if (number >= ringClosureAtom.length) {
          if (number >= 100)
            throw toJs(new jl.Exception_1('SmilesParser: ringClosureAtom number out of range: ' + number));
          oldSize = ringClosureAtom.length;
          newSize = ringClosureAtom.length;
          while (newSize <= number)
            newSize = $wnd.Math.min(100, newSize + 16);
          ringClosureAtom = ju.copyOf_9(ringClosureAtom, newSize);
          ringClosurePosition = ju.copyOf_9(ringClosurePosition, newSize);
          ringClosureBondType = ju.copyOf_9(ringClosureBondType, newSize);
          ringClosureBondQueryFeatures = ju.copyOf_9(ringClosureBondQueryFeatures, newSize);
          for (i = oldSize; i < newSize; i++)
            ringClosureAtom[i] = -1;
        }
        if (ringClosureAtom[number] == -1) {
          ringClosureAtom[number] = baseAtom[bracketLevel];
          ringClosurePosition[number] = position - 1;
          ringClosureBondType[number] = hasBondType?bondType:-1;
          ringClosureBondQueryFeatures[number] = hasBondType?bondQueryFeatures:0;
        }
         else {
          if (ringClosureAtom[number] == baseAtom[bracketLevel])
            throw toJs(new jl.Exception_1('SmilesParser: ring closure to same atom'));
          if (readStereoFeatures && isNotNull(parityMap)) {
            parity = castTo(parityMap.get(jl.valueOf_26(ringClosureAtom[number])), 168);
            if (isNotNull(parity))
              parity.addNeighbor(baseAtom[bracketLevel], ringClosurePosition[number], false);
            parity = castTo(parityMap.get(jl.valueOf_26(baseAtom[bracketLevel])), 168);
            if (isNotNull(parity))
              parity.addNeighbor(ringClosureAtom[number], position - 1, false);
          }
          if (ringClosureBondType[number] != -1)
            bondType = ringClosureBondType[number];
          else if (bondType == 257)
            bondType = 129;
          else if (bondType == 129)
            bondType = 257;
          bond = this.mMol.addBond_1(ringClosureAtom[number], baseAtom[bracketLevel], bondType);
          if (ringClosureBondQueryFeatures[number] != 0)
            bondQueryFeatures = ringClosureBondQueryFeatures[number];
          if (bondQueryFeatures != 0) {
            this.mSmartsFeatureFound = true;
            this.mMol.setBondQueryFeature_0(bond, ringClosureBondQueryFeatures[number], true);
          }
          ringClosureAtom[number] = -1;
        }
        bondType = 1;
        bondQueryFeatures = 0;
      }
      continue;
    }
    if (theChar == 43) {
      throw toJs(new jl.Exception_1("SmilesParser: '+' found outside brackets. Position:" + (position - 1)));
    }
    if (theChar == 40) {
      if (baseAtom[bracketLevel] == -1) {
        hasLeadingBracket = true;
        continue;
      }
      bracketLevel++;
      if (baseAtom.length == bracketLevel)
        baseAtom = ju.copyOf_9(baseAtom, baseAtom.length + 32);
      baseAtom[bracketLevel] = baseAtom[bracketLevel - 1];
      continue;
    }
    if (theChar == 41) {
      if (bracketLevel == 0) {
        if (!hasLeadingBracket)
          throw toJs(new jl.Exception_1("SmilesParser: Closing ')' without opening counterpart. Position:" + (position - 1)));
        baseAtom[0] = -1;
        hasLeadingBracket = false;
        continue;
      }
      bracketLevel--;
      continue;
    }
    if (theChar == 91) {
      squareBracketOpen = true;
      continue;
    }
    if (theChar == 93) {
      throw toJs(new jl.Exception_1('SmilesParser: closing bracket at unexpected position:' + (position - 1)));
    }
    if (theChar == 37) {
      isDoubleDigit = true;
      continue;
    }
    throw toJs(new jl.Exception_1("SmilesParser: unexpected character outside brackets: '" + charToString(theChar) + "' position:" + (position - 1)));
  }
  if (bondType != 1)
    throw toJs(new jl.Exception_1('SmilesParser: dangling open bond'));
  for (rca$array = ringClosureAtom , rca$index = 0 , rca$max = rca$array.length; rca$index < rca$max; ++rca$index) {
    rca = rca$array[rca$index];
    if (rca != -1)
      throw toJs(new jl.Exception_1('SmilesParser: dangling ring closure.'));
  }
  handleHydrogenAtomMap = this.mMol.getHandleHydrogenMap_0();
  this.mMol.setHydrogenProtection_0(true);
  this.mMol.ensureHelperArrays_0(1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (jsNotEquals(this.mMol.getAtomCustomLabel_0(atom), null)) {
      explicitHydrogen = this.mMol.getAtomCustomLabelBytes(atom)[0];
      if (this.mSmartsFeatureFound || this.mSmartsMode == 2) {
        if (explicitHydrogen != 9) {
          if (this.mMakeHydrogenExplicit) {
            for (i = 0; i < explicitHydrogen; i++)
              this.mMol.addBond_1(atom, this.mMol.addAtom_2(1), 1);
          }
           else {
            if (explicitHydrogen == 0)
              this.mMol.setAtomQueryFeature(atom, and_0(1920, not_0(128)), true);
            if (explicitHydrogen == 1)
              this.mMol.setAtomQueryFeature(atom, and_0(1920, not_0(256)), true);
            if (explicitHydrogen == 2)
              this.mMol.setAtomQueryFeature(atom, and_0(1920, not_0(512)), true);
            if (explicitHydrogen == 3)
              this.mMol.setAtomQueryFeature(atom, and_0(1920, not_0(1024)), true);
          }
        }
      }
       else {
        if (explicitHydrogen == 9)
          explicitHydrogen = 0;
        if (!this.mMol.isMetalAtom_0(atom) && (!this.mMol.isMarkedAtom_0(atom) || this.mMol.getAtomicNo_0(atom) == 6 && this.mMol.getAtomCharge_0(atom) == 0)) {
          valences = carc2.getAllowedValences(this.mMol.getAtomicNo_0(atom));
          compatibleValenceFound = false;
          usedValence = this.mMol.getOccupiedValence_0(atom);
          usedValence -= this.mMol.getElectronValenceCorrection_0(atom, usedValence);
          usedValence += explicitHydrogen;
          if (this.mMol.isMarkedAtom_0(atom))
            usedValence++;
          for (valence$array = valences , valence$index = 0 , valence$max = valence$array.length; valence$index < valence$max; ++valence$index) {
            valence = valence$array[valence$index];
            if (usedValence <= valence) {
              compatibleValenceFound = true;
              if (valence == usedValence + 2)
                this.mMol.setAtomRadical_0(atom, 48);
              else if (valence == usedValence + 1)
                this.mMol.setAtomRadical_0(atom, 32);
              else if (valence != usedValence || valence != valences[0])
                this.mMol.setAtomAbnormalValence_0(atom, usedValence);
              break;
            }
          }
          if (!compatibleValenceFound)
            this.mMol.setAtomAbnormalValence_0(atom, usedValence);
        }
        if (this.mMakeHydrogenExplicit || !this.mMol.supportsImplicitHydrogen_0(atom))
          for (i = 0; i < explicitHydrogen; i++)
            this.mMol.addBond_1(atom, this.mMol.addAtom_2(1), 1);
      }
    }
     else if (!this.mMakeHydrogenExplicit && (this.mSmartsFeatureFound || this.mSmartsMode == 2)) {
      explicitHydrogen = this.mMol.getExplicitHydrogens_0(atom);
      if (explicitHydrogen >= 1)
        this.mMol.setAtomQueryFeature(atom, 128, true);
      if (explicitHydrogen >= 2)
        this.mMol.setAtomQueryFeature(atom, 256, true);
      if (explicitHydrogen >= 3)
        this.mMol.setAtomQueryFeature(atom, 512, true);
      if (explicitHydrogen >= 4)
        this.mMol.setAtomQueryFeature(atom, 1024, true);
    }
  }
  if (!this.mMakeHydrogenExplicit && (this.mSmartsFeatureFound || this.mSmartsMode == 2))
    this.mMol.removeExplicitHydrogens_0();
  this.mMol.ensureHelperArrays_0(1);
  this.correctValenceExceededNitrogen();
  this.locateAromaticDoubleBonds(allowSmarts, this.mSmartsFeatureFound);
  this.mMol.removeAtomCustomLabels_0();
  this.mMol.setHydrogenProtection_0(false);
  if (readStereoFeatures) {
    this.assignKnownEZBondParities();
    if (isNotNull(parityMap)) {
      for (parity$iterator = parityMap.values().iterator(); parity$iterator.hasNext_0();) {
        parity = castTo(parity$iterator.next_3(), 168);
        this.mMol.setAtomParity_0(parity.mCentralAtom, parity.calculateParity(handleHydrogenAtomMap), false);
      }
      this.mMol.setParitiesValid_0(0);
    }
  }
  this.mMol.setParitiesValid_0(0);
  if (createCoordinates) {
    inventor = new carcc3.CoordinateInventor_0(this.mCoordinateMode);
    if (neq(this.mRandomSeed, 0))
      inventor.setRandomSeed_0(this.mRandomSeed);
    inventor.invent(this.mMol);
    if (readStereoFeatures)
      this.mMol.setUnknownParitiesToExplicitlyUnknown_0();
  }
  if (this.mSmartsFeatureFound || this.mSmartsMode == 2) {
    this.mMol.setFragment_0(true);
    this.mMol.validateAtomQueryFeatures();
    this.mMol.validateBondQueryFeatures();
  }
}
;
_.parse_9 = function parse_10(mol, smiles, createCoordinates, readStereoFeatures){
  this.parse_8(mol, smiles, 0, smiles.length, createCoordinates, readStereoFeatures);
}
;
_.parseAtomInBrackets = function parseAtomInBrackets(smiles, position, endIndex, info){
  info.mayBeAromatic = true;
  info.mayBeAliphatic = true;
  if (smiles[position] == 35) {
    position++;
    this.mSmartsFeatureFound = true;
    info.atomicNo = 0;
    info.labelLength = 1;
    while (position < endIndex && jl.isDigit_0(smiles[position])) {
      info.atomicNo = 10 * info.atomicNo + smiles[position] - 48;
      info.labelLength++;
      position++;
    }
    if (info.atomicNo == 0 || info.atomicNo >= (carc2.$clinit_Molecule() , carc2.cAtomLabel).length)
      throw toJs(new jl.Exception_1('SmilesParser: Atomic number out of range. position:' + (position - 1)));
    return true;
  }
  if (smiles[position] >= 65 && smiles[position] <= 90) {
    info.labelLength = smiles[position + 1] >= 97 && smiles[position + 1] <= 122?2:1;
    info.atomicNo = carc2.getAtomicNoFromLabel(jl.$create_10(smiles, position, info.labelLength, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
    info.mayBeAromatic = false;
    return true;
  }
  if (smiles[position] >= 97 && smiles[position] <= 122) {
    info.labelLength = smiles[position + 1] >= 97 && smiles[position + 1] <= 122?2:1;
    info.atomicNo = carc2.getAtomicNoFromLabel(jl.$create_10(smiles, position, info.labelLength, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
    info.mayBeAliphatic = false;
    return true;
  }
  return false;
}
;
_.parseCharge = function parseCharge(smiles, position, characterCount){
  var charge, symbol;
  characterCount[0] = 0;
  if (smiles[position] == 43 || smiles[position] == 45) {
    symbol = smiles[position];
    charge = 1;
    characterCount[0]++;
    while (smiles[position + characterCount[0]] == symbol) {
      charge++;
      characterCount[0]++;
    }
    if (charge == 1 && jl.isDigit_0(smiles[position + 1])) {
      charge = smiles[position + 1] - 48;
      characterCount[0]++;
    }
    return symbol == 43?charge:-charge;
  }
  return 0;
}
;
_.parseReaction_0 = function parseReaction(smiles){
  return jsEquals(smiles, null)?null:this.parseReaction_1(jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(smiles, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
}
;
_.parseReaction_1 = function parseReaction_0(smiles){
  var closingGroupBracketIndex, end, i, index_0, index1, index2, level, mol, molend, part, rxn;
  index1 = caru.indexOf_2(smiles, narrow_byte(62));
  while (index1 > 0 && smiles[index1 - 1] == narrow_byte(45))
    index1 = caru.indexOf_3(smiles, narrow_byte(62), index1 + 1);
  index2 = index1 == -1?-1:caru.indexOf_3(smiles, narrow_byte(62), index1 + 1);
  while (index2 > 0 && smiles[index2 - 1] == narrow_byte(45))
    index2 = caru.indexOf_3(smiles, narrow_byte(62), index2 + 1);
  if (index2 == -1)
    throw toJs(new jl.Exception_1("Missing one or both separators ('>')."));
  if (caru.indexOf_3(smiles, narrow_byte(62), index2 + 1) != -1)
    throw toJs(new jl.Exception_1("Found more than 2 separators ('>')."));
  rxn = new carcr.Reaction;
  part = 0;
  index_0 = 0;
  closingGroupBracketIndex = -1;
  while (index_0 < smiles.length) {
    while (index_0 < smiles.length && smiles[index_0] == 46)
      index_0++;
    if (smiles[index_0] == 40) {
      if (closingGroupBracketIndex != -1)
        throw toJs(new jl.Exception_1('Second open group bracket found before closing first one.'));
      index_0++;
      level = 0;
      for (i = index_0; i < smiles.length; i++) {
        if (smiles[i] == 40) {
          level++;
        }
         else if (smiles[i] == 41) {
          if (level-- == 0) {
            closingGroupBracketIndex = i;
            break;
          }
        }
      }
    }
    end = index_0;
    while (end < smiles.length && smiles[end] != 62 && !(smiles[end] == 46 && (this.mSingleDotSeparator && closingGroupBracketIndex == -1 || closingGroupBracketIndex == end - 1 || end + 1 == smiles.length || smiles[end + 1] == 46)))
      end++;
    molend = end;
    if (closingGroupBracketIndex == end - 1) {
      molend--;
      closingGroupBracketIndex = -1;
    }
    if (index_0 != molend) {
      mol = new carc2.StereoMolecule;
      this.parse_7(mol, smiles, index_0, molend);
      if (this.mSmartsMode == 1 && this.mSmartsFeatureFound)
        return (new carc2.SmilesParser_0(this.mMode | 2)).parseReaction_1(smiles);
      if (part == 0)
        rxn.addReactant_0(mol);
      else if (part == 1)
        rxn.addCatalyst_0(mol);
      else 
        rxn.addProduct_0(mol);
    }
    index_0 = end;
    while (index_0 < smiles.length && smiles[index_0] == 62) {
      index_0++;
      part++;
    }
  }
  return rxn;
}
;
_.parseRecursiveGroup = function parseRecursiveGroup(smiles, dollarIndex, groupList){
  var atom, endIndex, group, openBrackets;
  if (smiles[dollarIndex + 1] != 40)
    throw toJs(new jl.Exception_1("SmilesParser: '$' for recursive SMARTS must be followed by '('. position:" + dollarIndex));
  openBrackets = 1;
  endIndex = dollarIndex + 2;
  while (endIndex < smiles.length && openBrackets > 0) {
    if (smiles[endIndex] == 40)
      openBrackets++;
    else if (smiles[endIndex] == 41)
      openBrackets--;
    endIndex++;
  }
  if (openBrackets > 0)
    throw toJs(new jl.Exception_1("SmilesParser: Missing closing ')' for recursive SMARTS. '('-position:" + (dollarIndex + 1)));
  group = new carc2.StereoMolecule_0(16, 16);
  (new carc2.SmilesParser_0(this.mMode | this.mSmartsMode)).parse_7(group, smiles, dollarIndex + 2, endIndex - 1);
  groupList.add(group);
  if (smiles[dollarIndex - 1] == 33)
    for (atom = 0; atom < group.getAllAtoms_0(); atom++)
      group.setAtomQueryFeature(atom, 536870912, true);
  return endIndex - dollarIndex;
}
;
_.promoteBond_0 = function promoteBond_0(bond){
  var bondAtom, connBond, i, j;
  if (this.mMol.getBondType_0(bond) == 1)
    this.mMol.setBondType_0(bond, 2);
  for (i = 0; i < 2; i++) {
    bondAtom = this.mMol.getBondAtom_0(i, bond);
    if (this.mMol.isMarkedAtom_0(bondAtom)) {
      this.mMol.setAtomMarker_0(bondAtom, false);
      this.mAromaticAtoms--;
    }
    for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++) {
      connBond = this.mMol.getConnBond_0(bondAtom, j);
      if (this.mIsAromaticBond[connBond]) {
        this.mIsAromaticBond[connBond] = false;
        this.mAromaticBonds--;
      }
    }
  }
}
;
_.promoteObviousBonds_0 = function promoteObviousBonds_0(){
  var aromaticNeighbourFound, bond, bondAtom, i, isTerminalAromaticBond, j, terminalAromaticBondFound;
  do {
    terminalAromaticBondFound = false;
    for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
      if (this.mIsAromaticBond[bond]) {
        isTerminalAromaticBond = false;
        for (i = 0; i < 2; i++) {
          aromaticNeighbourFound = false;
          bondAtom = this.mMol.getBondAtom_0(i, bond);
          for (j = 0; j < this.mMol.getConnAtoms_0(bondAtom); j++) {
            if (bond != this.mMol.getConnBond_0(bondAtom, j) && this.mIsAromaticBond[this.mMol.getConnBond_0(bondAtom, j)]) {
              aromaticNeighbourFound = true;
              break;
            }
          }
          if (!aromaticNeighbourFound) {
            isTerminalAromaticBond = true;
            break;
          }
        }
        if (isTerminalAromaticBond) {
          terminalAromaticBondFound = true;
          this.promoteBond_0(bond);
        }
      }
    }
  }
   while (terminalAromaticBondFound);
}
;
_.qualifiesForPi = function qualifiesForPi(atom){
  var explicitHydrogens, freeValence;
  if (!carc2.qualifiesAsAromaticAtomicNo(this.mMol.getAtomicNo_0(atom)))
    return false;
  if (this.mMol.getAtomicNo_0(atom) == 6) {
    if (!this.mMol.isMarkedAtom_0(atom))
      return false;
    if (this.mMol.getAtomCharge_0(atom) > 0)
      return false;
  }
  explicitHydrogens = jsEquals(this.mMol.getAtomCustomLabel_0(atom), null) || this.mMol.getAtomCustomLabelBytes(atom)[0] == 9?0:this.mMol.getAtomCustomLabelBytes(atom)[0];
  freeValence = this.mMol.getFreeValence_0(atom) - explicitHydrogens;
  if (freeValence < 1)
    return false;
  if (this.mMol.getAtomicNo_0(atom) == 16 || this.mMol.getAtomicNo_0(atom) == 34 || this.mMol.getAtomicNo_0(atom) == 52) {
    if (this.mMol.getConnAtoms_0(atom) == 2 && this.mMol.getAtomCharge_0(atom) <= 0)
      return false;
    return freeValence != 2;
  }
  return true;
}
;
_.setRandomSeed_0 = function setRandomSeed(seed){
  this.mRandomSeed = seed;
}
;
_.smartsWarning = function smartsWarning(feature){
  if (this.mCreateSmartsWarnings) {
    if (isNull(this.mSmartsWarningBuffer))
      this.mSmartsWarningBuffer = new jl.StringBuilder;
    this.mSmartsWarningBuffer.append_9(' ');
    this.mSmartsWarningBuffer.append_9(feature);
  }
}
;
_.mAllowCactvs = false;
_.mAromaticAtoms = 0;
_.mAromaticBonds = 0;
_.mCoordinateMode = 0;
_.mCreateSmartsWarnings = false;
_.mMakeHydrogenExplicit = false;
_.mMode = 0;
_.mRandomSeed = 0;
_.mSingleDotSeparator = false;
_.mSmartsFeatureFound = false;
_.mSmartsMode = 0;
carc2.BRACKET_LEVELS = 32;
carc2.HYDROGEN_ANY = 0;
carc2.HYDROGEN_IMPLICIT_ZERO = 9;
carc2.INITIAL_CONNECTIONS = 16;
carc2.MAX_AROMATIC_RING_SIZE = 15;
carc2.MAX_CONNECTIONS = 100;
carc2.MODE_CREATE_SMARTS_WARNING = 64;
carc2.MODE_MAKE_HYDROGEN_EXPLICIT = 8;
carc2.MODE_NO_CACTUS_SYNTAX = 16;
carc2.MODE_SINGLE_DOT_SEPARATOR = 32;
carc2.MODE_SKIP_COORDINATE_TEMPLATES = 4;
carc2.SMARTS_MODE_GUESS = 1;
carc2.SMARTS_MODE_IS_SMARTS = 2;
carc2.SMARTS_MODE_IS_SMILES = 0;
carc2.SMARTS_MODE_MASK = 3;
cggl.Lcom_actelion_research_chem_SmilesParser_2_classLit = createForClass('com.actelion.research.chem', 'SmilesParser', 147, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesParser$AtomInfo = function $clinit_SmilesParser$AtomInfo(){
  carc2.$clinit_SmilesParser$AtomInfo = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesParser$AtomInfo = function SmilesParser$AtomInfo(){
  carc2.$clinit_SmilesParser$AtomInfo();
  Object_0.call(this);
  this.$init_46();
}
;
defineClass(488, 1, {1:1}, carc2.SmilesParser$AtomInfo);
_.$init_46 = function $init_46(){
}
;
_.atomicNo = 0;
_.labelLength = 0;
_.mayBeAliphatic = false;
_.mayBeAromatic = false;
cggl.Lcom_actelion_research_chem_SmilesParser$AtomInfo_2_classLit = createForClass('com.actelion.research.chem', 'SmilesParser/AtomInfo', 488, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesParser$ParityNeighbour = function $clinit_SmilesParser$ParityNeighbour(){
  carc2.$clinit_SmilesParser$ParityNeighbour = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesParser$ParityNeighbour = function SmilesParser$ParityNeighbour(atom, position){
  carc2.$clinit_SmilesParser$ParityNeighbour();
  Object_0.call(this);
  this.$init_47();
  this.mAtom = atom;
  this.mPosition = position;
}
;
defineClass(132, 1, {132:1, 1:1}, carc2.SmilesParser$ParityNeighbour);
_.$init_47 = function $init_47(){
}
;
_.mAtom = 0;
_.mPosition = 0;
cggl.Lcom_actelion_research_chem_SmilesParser$ParityNeighbour_2_classLit = createForClass('com.actelion.research.chem', 'SmilesParser/ParityNeighbour', 132, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesParser$THParity = function $clinit_SmilesParser$THParity(){
  carc2.$clinit_SmilesParser$THParity = emptyMethod;
  jl.$clinit_Object();
  carc2.PSEUDO_ATOM_HYDROGEN = 2147483647 - 1;
}
;
carc2.SmilesParser$THParity = function SmilesParser$THParity(centralAtom, centralAtomPosition, fromAtom, explicitHydrogen, hydrogenPosition, isClockwise){
  carc2.$clinit_SmilesParser$THParity();
  Object_0.call(this);
  this.$init_48();
  if (explicitHydrogen != 0 && explicitHydrogen != 1) {
    this.mError = true;
  }
   else {
    this.mCentralAtom = centralAtom;
    this.mCentralAtomPosition = centralAtomPosition;
    this.mIsClockwise = isClockwise;
    this.mNeighbourList = new ju.ArrayList;
    if (fromAtom != -1)
      this.addNeighbor(fromAtom, centralAtomPosition - 1, false);
    if (fromAtom != -1 && explicitHydrogen == 1)
      this.addNeighbor(2147483646, centralAtomPosition + 1, false);
  }
}
;
defineClass(168, 1, {168:1, 1:1}, carc2.SmilesParser$THParity);
_.$init_48 = function $init_48(){
}
;
_.addNeighbor = function addNeighbor(atom, position, unused){
  if (!this.mError) {
    if (this.mNeighbourList.size() == 4) {
      this.mError = true;
      return;
    }
    this.mNeighbourList.add(new carc2.SmilesParser$ParityNeighbour(atom, position));
  }
}
;
_.calculateParity = function calculateParity(handleHydrogenAtomMap){
  var neighbour, neighbour$iterator;
  if (this.mError)
    return 3;
  for (neighbour$iterator = this.mNeighbourList.iterator(); neighbour$iterator.hasNext_0();) {
    neighbour = castTo(neighbour$iterator.next_3(), 132);
    if (neighbour.mAtom != 2147483646 && neighbour.mAtom != 2147483647)
      neighbour.mAtom = handleHydrogenAtomMap[neighbour.mAtom];
  }
  if (this.mNeighbourList.size() == 3)
    this.mNeighbourList.add(new carc2.SmilesParser$ParityNeighbour(2147483647, this.mCentralAtomPosition));
  else if (this.mNeighbourList.size() != 4)
    return 3;
  return this.mIsClockwise ^ this.isInverseOrder_0()?1:2;
}
;
_.isInverseOrder_0 = function isInverseOrder_0(){
  var i, inversion, j;
  inversion = false;
  for (i = 1; i < this.mNeighbourList.size(); i++) {
    for (j = 0; j < i; j++) {
      if (castTo(this.mNeighbourList.getAtIndex(j), 132).mAtom > castTo(this.mNeighbourList.getAtIndex(i), 132).mAtom)
        inversion = !inversion;
      if (castTo(this.mNeighbourList.getAtIndex(j), 132).mPosition > castTo(this.mNeighbourList.getAtIndex(i), 132).mPosition)
        inversion = !inversion;
    }
  }
  return inversion;
}
;
_.mCentralAtom = 0;
_.mCentralAtomPosition = 0;
_.mError = false;
_.mIsClockwise = false;
carc2.PSEUDO_ATOM_HYDROGEN = 0;
carc2.PSEUDO_ATOM_LONE_PAIR = 2147483647;
cggl.Lcom_actelion_research_chem_SmilesParser$THParity_2_classLit = createForClass('com.actelion.research.chem', 'SmilesParser/THParity', 168, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SmilesRange = function $clinit_SmilesRange(){
  carc2.$clinit_SmilesRange = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SmilesRange = function SmilesRange(smiles){
  carc2.$clinit_SmilesRange();
  Object_0.call(this);
  this.$init_49();
  this.smiles = smiles;
}
;
defineClass(487, 1, {1:1}, carc2.SmilesRange);
_.$init_49 = function $init_49(){
}
;
_.isRange = function isRange(){
  return this.max_0 > this.min_0;
}
;
_.isSingle = function isSingle(){
  return this.max_0 == this.min_0;
}
;
_.parse_10 = function parse_11(position, defaultMin, defaultMax){
  var firstLetter, i, letterCount, lettersMatch, val;
  this.isDefault = false;
  this.pos = position;
  if (jl.isDigit_0(this.smiles[position])) {
    val = this.parseInt_0();
    this.min_0 = this.max_0 = val;
    firstLetter = position - 1;
    while (firstLetter > 1 && isLetterOrDigit(this.smiles[firstLetter - 1]))
      firstLetter--;
    while (this.smiles[this.pos] == 44) {
      lettersMatch = true;
      letterCount = position - firstLetter;
      for (i = 0; i < letterCount; i++) {
        if (this.smiles[firstLetter + i] != this.smiles[this.pos + 1 + i]) {
          lettersMatch = false;
          break;
        }
      }
      if (!lettersMatch)
        break;
      this.pos += 1 + letterCount;
      val = this.parseInt_0();
      if (this.min_0 > val)
        this.min_0 = val;
      else if (this.max_0 < val)
        this.max_0 = val;
    }
    return this.pos - position;
  }
  if (this.smiles[position] == 123 && jl.isDigit_0(this.smiles[position + 1])) {
    this.pos++;
    this.min_0 = this.parseInt_0();
    if (this.smiles[this.pos++] != 45)
      return 0;
    if (!jl.isDigit_0(this.smiles[this.pos]))
      return 0;
    this.max_0 = this.parseInt_0();
    if (this.smiles[this.pos++] != 125)
      return 0;
    return this.pos - position;
  }
  this.min_0 = defaultMin;
  this.max_0 = defaultMax;
  this.isDefault = true;
  return 0;
}
;
_.parseInt_0 = function parseInt_0(){
  var num;
  num = this.smiles[this.pos++] - 48;
  if (jl.isDigit_0(this.smiles[this.pos]))
    num = 10 * num + (this.smiles[this.pos++] - 48);
  return num;
}
;
_.toString_0 = function toString_10(){
  return '{' + this.min_0 + '-' + this.max_0 + '}';
}
;
_.isDefault = false;
_.max_0 = 0;
_.min_0 = 0;
_.pos = 0;
cggl.Lcom_actelion_research_chem_SmilesRange_2_classLit = createForClass('com.actelion.research.chem', 'SmilesRange', 487, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_SortedStringList = function $clinit_SortedStringList(){
  carc2.$clinit_SortedStringList = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.SortedStringList = function SortedStringList(){
  carc2.$clinit_SortedStringList();
  Object_0.call(this);
  this.$init_50();
}
;
defineClass(111, 1, {111:1, 4:1, 1:1}, carc2.SortedStringList);
_.$init_50 = function $init_50(){
  this.mList = new ju.ArrayList;
}
;
_.addString = function addString(theString){
  var comparison, increment, index_0, vectorSize;
  vectorSize = this.mList.size();
  if (vectorSize == 0) {
    this.mList.addAtIndex(0, theString);
    return 0;
  }
  index_0 = 1;
  while (2 * index_0 <= vectorSize)
    index_0 <<= 1;
  increment = index_0;
  index_0--;
  while (increment != 0) {
    increment >>= 1;
    if (index_0 >= vectorSize) {
      index_0 -= increment;
      continue;
    }
    comparison = jl.compareTo_Ljava_lang_String__I__devirtual$(theString, castToString(this.mList.getAtIndex(index_0)));
    if (comparison == 0)
      return -1;
    if (increment == 0)
      break;
    if (comparison < 0) {
      index_0 -= increment;
    }
     else {
      index_0 += increment;
    }
  }
  if (index_0 < vectorSize && jl.compareTo_Ljava_lang_String__I__devirtual$(theString, castToString(this.mList.getAtIndex(index_0))) > 0)
    index_0++;
  this.mList.addAtIndex(index_0, theString);
  return index_0;
}
;
_.contains_1 = function contains_2(theString){
  return this.getListIndex(theString) != -1;
}
;
_.getListIndex = function getListIndex(theString){
  var comparison, increment, index_0, vectorSize;
  vectorSize = this.mList.size();
  if (vectorSize == 0)
    return -1;
  index_0 = 1;
  while (2 * index_0 <= vectorSize)
    index_0 <<= 1;
  increment = index_0;
  index_0--;
  while (increment != 0) {
    increment >>= 1;
    if (index_0 >= vectorSize) {
      index_0 -= increment;
      continue;
    }
    comparison = jl.compareTo_Ljava_lang_String__I__devirtual$(theString, castToString(this.mList.getAtIndex(index_0)));
    if (comparison == 0)
      return index_0;
    if (increment == 0)
      break;
    if (comparison < 0) {
      index_0 -= increment;
    }
     else {
      index_0 += increment;
    }
  }
  return -1;
}
;
_.getSize_0 = function getSize_0(){
  return this.mList.size();
}
;
_.getStringAt = function getStringAt(i){
  return castToString(this.mList.getAtIndex(i));
}
;
_.toArray_1 = function toArray_3(){
  return castTo(this.mList.toArray_0(initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, 0, 6, 1)), 15);
}
;
carc2.serialVersionUID_3 = 537265952;
cggl.Lcom_actelion_research_chem_SortedStringList_2_classLit = createForClass('com.actelion.research.chem', 'SortedStringList', 111, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_StereoMolecule = function $clinit_StereoMolecule(){
  carc2.$clinit_StereoMolecule = emptyMethod;
  carc2.$clinit_ExtendedMolecule();
  carc2.VALIDATION_ERRORS_STEREO = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Members of ESR groups must only be stereo centers with known configuration.', 'Over- or under-specified stereo feature or more than one racemic type bond', 'Ambiguous configuration at stereo center because of 2 parallel bonds']);
}
;
carc2.StereoMolecule = function StereoMolecule(){
  carc2.$clinit_StereoMolecule();
  carc2.ExtendedMolecule.call(this);
  this.$init_51();
}
;
carc2.StereoMolecule_0 = function StereoMolecule_0(maxAtoms, maxBonds){
  carc2.$clinit_StereoMolecule();
  carc2.ExtendedMolecule_0.call(this, maxAtoms, maxBonds);
  this.$init_51();
}
;
carc2.StereoMolecule_1 = function StereoMolecule_1(mol){
  carc2.$clinit_StereoMolecule();
  carc2.ExtendedMolecule_1.call(this, mol);
  this.$init_51();
}
;
defineClass(19, 100, {100:1, 70:1, 19:1, 4:1, 1:1}, carc2.StereoMolecule, carc2.StereoMolecule_0, carc2.StereoMolecule_1);
_.$init_51 = function $init_51(){
}
;
_.clear_0 = function clear_5(){
  getClassPrototype(70).clear_0.call(this);
  this.mCanonizer = null;
}
;
_.copyMoleculeProperties_0 = function copyMoleculeProperties_0(destMol){
  getClassPrototype(70).copyMoleculeProperties_0.call(this, destMol);
  if (isNotNull(this.mCanonizer))
    destMol.mValidHelperArrays = 0;
}
;
_.createMolecule = function createMolecule(atoms, bonds){
  return new carc2.StereoMolecule_0(atoms, bonds);
}
;
_.ensureHelperArrays_0 = function ensureHelperArrays_0(required){
  var atom, bond, rankBits, rankMode;
  getClassPrototype(100).ensureHelperArrays_0.call(this, required);
  if ((required & ~this.mValidHelperArrays) == 0)
    return;
  if ((this.mValidHelperArrays & 15) != 0 && this.mAllAtoms > 1 && this.mCoordinates[0].equals_0(this.mCoordinates[1]))
    (new carcc3.CoordinateInventor_0(0)).invent(this);
  if (this.mAssignParitiesToNitrogen)
    required |= 128;
  for (atom = 0; atom < this.getAllAtoms_0(); atom++)
    this.mAtomFlags[atom] &= ~67223559;
  for (bond = 0; bond < this.getBonds_0(); bond++)
    this.mBondFlags[bond] &= ~63;
  rankBits = 0;
  rankMode = 0;
  if ((required & 32) != 0) {
    rankBits = 32;
    rankMode = 1;
  }
   else if ((required & 64) != 0) {
    rankBits = 64;
    rankMode = 1 | 2;
  }
  if ((required & 128) != 0) {
    rankBits |= 128;
    rankMode |= 32;
  }
  this.mCanonizer = new carc2.Canonizer_0(this, rankMode);
  this.mCanonizer.setParities();
  this.mCanonizer.setStereoCenters();
  this.mCanonizer.setCIPParities();
  if (this.validateESR())
    this.mCanonizer = new carc2.Canonizer_0(this, rankMode);
  this.mValidHelperArrays |= 8 | 16 | rankBits;
}
;
_.getAbsoluteAtomParity_0 = function getAbsoluteAtomParity(atom){
  return this.mCanonizer.getTHParity(atom);
}
;
_.getAbsoluteBondParity_0 = function getAbsoluteBondParity(bond){
  return this.mCanonizer.getEZParity(bond);
}
;
_.getChiralText_0 = function getChiralText_0(){
  var count;
  this.ensureHelperArrays_0(31);
  count = this.mChirality & 65535;
  switch (this.mChirality & ~65535) {
    case 65536:
      return null;
    case 131072:
      return count == 1?'meso':'' + count + ' meso diastereomers';
    case 0:
      return 'unknown chirality';
    case 196608:
      return 'both enantiomers';
    case 262144:
      return 'this enantiomer';
    case 327680:
      return 'this or other enantiomer';
    case 393216:
      return 'two epimers';
    default:return count == 1?'one stereo isomer':'' + count + ' stereo isomers';
  }
}
;
_.getCompactCopy_0 = function getCompactCopy(){
  var theCopy;
  theCopy = new carc2.StereoMolecule_0(this.mAllAtoms, this.mAllBonds);
  this.copyMolecule_0(theCopy);
  return theCopy;
}
;
_.getESRGroupMemberCounts = function getESRGroupMemberCounts(){
  var atom, atom0, bond, bond0, esrGroupMembers, maxESRGroup, type_0;
  this.ensureHelperArrays_0(15);
  maxESRGroup = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (atom0 = 0; atom0 < this.getAtoms_0(); atom0++) {
    if (this.isAtomStereoCenter_0(atom0)) {
      type_0 = this.getAtomESRType_0(atom0);
      if (type_0 != 0)
        maxESRGroup[type_0] = $wnd.Math.max(maxESRGroup[type_0], this.getAtomESRGroup_0(atom0));
    }
  }
  for (bond0 = 0; bond0 < this.getBonds_0(); bond0++) {
    if ((this.getBondParity_0(bond0) == 1 || this.getBondParity_0(bond0) == 2) && this.getBondType_0(bond0) == 1) {
      type_0 = this.getBondESRType_0(bond0);
      if (type_0 != 0)
        maxESRGroup[type_0] = $wnd.Math.max(maxESRGroup[type_0], this.getBondESRGroup_0(bond0));
    }
  }
  esrGroupMembers = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, 3, 0, 2);
  esrGroupMembers[1] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1 + maxESRGroup[1], 15, 1);
  esrGroupMembers[2] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1 + maxESRGroup[2], 15, 1);
  for (atom = 0; atom < this.getAtoms_0(); atom++) {
    if (this.isAtomStereoCenter_0(atom)) {
      type_0 = this.getAtomESRType_0(atom);
      if (type_0 != 0)
        esrGroupMembers[type_0][this.getAtomESRGroup_0(atom)]++;
    }
  }
  for (bond = 0; bond < this.getBonds_0(); bond++) {
    if ((this.getBondParity_0(bond) == 1 || this.getBondParity_0(bond) == 2) && this.getBondType_0(bond) == 1) {
      type_0 = this.getBondESRType_0(bond);
      if (type_0 != 0)
        esrGroupMembers[type_0][this.getBondESRGroup_0(bond)]++;
    }
  }
  return esrGroupMembers;
}
;
_.getFragments_0 = function getFragments(){
  var fragmentNo, fragments;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  fragments = this.getFragmentNumbers_0(fragmentNo, false, false);
  return this.getFragments_1(fragmentNo, fragments);
}
;
_.getFragments_1 = function getFragments_0(fragmentNo, fragmentCount){
  var atom, atom0, atomMap, atoms, bond, bond0, bonds, f, f$array, f$index, f$max, f1, f2, fragment, i;
  fragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {126:1, 4:1, 1:1, 7:1}, 19, fragmentCount, 0, 1);
  atoms = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragmentCount, 15, 1);
  bonds = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragmentCount, 15, 1);
  atomMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mAllAtoms, 15, 1);
  for (atom0 = 0; atom0 < this.mAllAtoms; atom0++)
    if (fragmentNo[atom0] != -1)
      atomMap[atom0] = atoms[fragmentNo[atom0]]++;
  for (bond0 = 0; bond0 < this.mAllBonds; bond0++) {
    f1 = fragmentNo[this.mBondAtom[0][bond0]];
    f2 = fragmentNo[this.mBondAtom[1][bond0]];
    if (f1 == f2 && f1 != -1)
      bonds[f1]++;
  }
  for (i = 0; i < fragmentCount; i++) {
    setCheck(fragment, i, this.createMolecule(atoms[i], bonds[i]));
    this.copyMoleculeProperties_0(fragment[i]);
  }
  for (atom = 0; atom < this.mAllAtoms; atom++)
    if (fragmentNo[atom] != -1)
      this.copyAtom_0(fragment[fragmentNo[atom]], atom, 0, 0);
  for (bond = 0; bond < this.mAllBonds; bond++) {
    f1 = fragmentNo[this.mBondAtom[0][bond]];
    f2 = fragmentNo[this.mBondAtom[1][bond]];
    if (f1 == f2 && f1 != -1)
      this.copyBond_1(fragment[f1], bond, 0, 0, atomMap, false);
  }
  for (f$array = fragment , f$index = 0 , f$max = f$array.length; f$index < f$max; ++f$index) {
    f = f$array[f$index];
    f.renumberESRGroups_0(1);
    f.renumberESRGroups_0(2);
  }
  return fragment;
}
;
_.getIDCode_0 = function getIDCode_2(){
  this.ensureHelperArrays_0(15);
  if (isNull(this.mCanonizer) && (this.getAtoms_0() < 2 || !this.mCoordinates[0].equals_0(this.mCoordinates[1])))
    this.mCanonizer = new carc2.Canonizer(this);
  return isNull(this.mCanonizer)?null:this.mCanonizer.getIDCode_0();
}
;
_.getIDCoordinates_0 = function getIDCoordinates(){
  this.ensureHelperArrays_0(15);
  if (isNull(this.mCanonizer) && (this.getAtoms_0() < 2 || !this.mCoordinates[0].equals_0(this.mCoordinates[1])))
    this.mCanonizer = new carc2.Canonizer(this);
  return isNull(this.mCanonizer)?null:this.mCanonizer.getEncodedCoordinates();
}
;
_.getStereoCenterCount_0 = function getStereoCenterCount(){
  var atom, scCount;
  this.ensureHelperArrays_0(31);
  scCount = 0;
  for (atom = 0; atom < this.getAtoms_0(); atom++)
    if (this.getAtomParity_0(atom) != 0 && !this.isAtomParityPseudo_0(atom))
      scCount++;
  return scCount;
}
;
_.getSymmetryRank_0 = function getSymmetryRank_0(atom){
  return this.mCanonizer.getSymmetryRank_0(atom);
}
;
_.setAssignParitiesToNitrogen_0 = function setAssignParitiesToNitrogen(b){
  this.mAssignParitiesToNitrogen = b;
  this.mValidHelperArrays &= ~(15 | 128);
}
;
_.setUnknownParitiesToExplicitlyUnknown_0 = function setUnknownParitiesToExplicitlyUnknown_0(){
  this.ensureHelperArrays_0(31);
  if (isNotNull(this.mCanonizer))
    this.mCanonizer.setUnknownParitiesToExplicitlyUnknown_0();
}
;
_.stripStereoInformation_0 = function stripStereoInformation(){
  var atom, bond;
  this.ensureHelperArrays_0(15);
  this.mIsRacemate = false;
  for (atom = 0; atom < this.mAllAtoms; atom++) {
    this.mAtomFlags[atom] &= ~33292288;
    if ((this.mAtomFlags[atom] & 3) != 0)
      this.mAtomFlags[atom] |= 33554432;
    else 
      this.mAtomFlags[atom] &= ~33554432;
  }
  for (bond = 0; bond < this.mAllBonds; bond++)
    if ((this.mBondFlags[bond] & 3) != 0 && this.getBondOrder_0(bond) == 2)
      this.mBondType[bond] = 386;
    else 
      this.mBondType[bond] &= ~384;
  this.mValidHelperArrays &= ~248;
}
;
_.translateTHParity = function translateTHParity(atom, targetAtomIndex){
  var connAtom, connAtom1, connAtom2, i, inversion, j, neighbour, neighbours, parity;
  parity = this.getAtomParity_0(atom);
  if (parity == 1 || parity == 2) {
    inversion = false;
    if (this.isCentralAlleneAtom(atom)) {
      for (i = 0; i < this.getConnAtoms_0(atom); i++) {
        connAtom = this.getConnAtom_0(atom, i);
        neighbours = 0;
        neighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 3, 15, 1);
        for (j = 0; j < this.getConnAtoms_0(connAtom); j++) {
          neighbour[neighbours] = this.getConnAtom_0(connAtom, j);
          if (neighbour[neighbours] != atom)
            neighbours++;
        }
        if (neighbours == 2 && neighbour[0] < neighbour[1] ^ targetAtomIndex[neighbour[0]] < targetAtomIndex[neighbour[1]])
          inversion = !inversion;
      }
    }
     else {
      for (i = 1; i < this.getConnAtoms_0(atom); i++) {
        for (j = 0; j < i; j++) {
          connAtom1 = this.getConnAtom_0(atom, i);
          connAtom2 = this.getConnAtom_0(atom, j);
          if (connAtom1 < connAtom2 ^ targetAtomIndex[connAtom1] < targetAtomIndex[connAtom2])
            inversion = !inversion;
        }
      }
    }
    if (inversion)
      parity = parity == 1?2:1;
  }
  return parity;
}
;
_.validate_0 = function validate_0(){
  var angle, atom, i, i0, j;
  getClassPrototype(100).validate_0.call(this);
  this.ensureHelperArrays_0(31);
  for (atom = 0; atom < this.getAtoms_0(); atom++) {
    if ((this.getAtomESRType_0(atom) == 1 || this.getAtomESRType_0(atom) == 2) && (!this.isAtomStereoCenter_0(atom) || this.getAtomParity_0(atom) == 3))
      throw toJs(new jl.Exception_1('Members of ESR groups must only be stereo centers with known configuration.'));
    if ((this.mAtomFlags[atom] & 65536) != 0)
      throw toJs(new jl.Exception_1('Over- or under-specified stereo feature or more than one racemic type bond'));
    if ((this.getAtomParity_0(atom) == 1 || this.getAtomParity_0(atom) == 2) && this.getAtomPi_0(atom) == 0) {
      angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.getConnAtoms_0(atom), 15, 1);
      for (i0 = 0; i0 < this.getConnAtoms_0(atom); i0++)
        angle[i0] = this.getBondAngle_0(atom, this.getConnAtom_0(atom, i0));
      for (i = 1; i < this.getConnAtoms_0(atom); i++)
        if (!this.isStereoBond_1(this.getConnBond_0(atom, i), atom))
          for (j = 0; j < i; j++)
            if (!this.isStereoBond_1(this.getConnBond_0(atom, j), atom))
              if (this.bondsAreParallel(angle[i], angle[j]))
                throw toJs(new jl.Exception_1('Ambiguous configuration at stereo center because of 2 parallel bonds'));
    }
  }
}
;
_.validateESR = function validateESR(){
  var atom, atom0, atom1, atom2, bond, isIndependentRacemicAtom, paritiesUpdated;
  paritiesUpdated = false;
  for (atom0 = 0; atom0 < this.getAtoms_0(); atom0++)
    if (!this.isAtomStereoCenter_0(atom0) || this.getAtomParity_0(atom0) == 3)
      this.mAtomFlags[atom0] &= ~33292288;
  for (bond = 0; bond < this.getBonds_0(); bond++)
    if (this.getBondOrder_0(bond) != 1 || this.getBondParity_0(bond) == 0 || this.getBondParity_0(bond) == 3)
      this.mBondFlags[bond] &= ~32512;
  if (this.mIsRacemate) {
    if ((this.mChirality & ~65535) != 131072) {
      isIndependentRacemicAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.getAtoms_0(), 16, 1);
      for (atom1 = 0; atom1 < this.getAtoms_0(); atom1++)
        if (this.isAtomStereoCenter_0(atom1) && this.getAtomParity_0(atom1) != 3 && this.getAtomESRType_0(atom1) == 1)
          isIndependentRacemicAtom[atom1] = true;
      for (atom2 = 0; atom2 < this.getAtoms_0(); atom2++) {
        if (this.isAtomStereoCenter_0(atom2) && this.getAtomParity_0(atom2) != 3) {
          this.setAtomESR_0(atom2, 1, 0);
          paritiesUpdated = true;
        }
      }
      for (atom = 0; atom < this.getAtoms_0(); atom++) {
        if (isIndependentRacemicAtom[atom]) {
          this.setAtomParity_0(atom, 1, false);
          this.setAtomESR_0(atom, 1, -1);
          paritiesUpdated = true;
        }
      }
    }
    this.mIsRacemate = false;
  }
  this.renumberESRGroups_0(1);
  this.renumberESRGroups_0(2);
  return paritiesUpdated;
}
;
_.mAssignParitiesToNitrogen = false;
carc2.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION = 'Ambiguous configuration at stereo center because of 2 parallel bonds';
carc2.VALIDATION_ERROR_ESR_CENTER_UNKNOWN = 'Members of ESR groups must only be stereo centers with known configuration.';
carc2.VALIDATION_ERROR_OVER_UNDER_SPECIFIED = 'Over- or under-specified stereo feature or more than one racemic type bond';
carc2.serialVersionUID_4 = 537316094;
cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit = createForClass('com.actelion.research.chem', 'StereoMolecule', 19, cggl.Lcom_actelion_research_chem_ExtendedMolecule_2_classLit);
carc2.$clinit_TautomerHelper = function $clinit_TautomerHelper(){
  carc2.$clinit_TautomerHelper = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.TautomerHelper = function TautomerHelper(mol){
  carc2.$clinit_TautomerHelper();
  var i, valence;
  Object_0.call(this);
  this.$init_52();
  this.mOriginalMol = mol.getCompactCopy_0();
  this.moveDeuteriumAndTritiumToTableEnd();
  this.mOriginalMol.ensureHelperArrays_0(7);
  this.mIsTautomerBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mOriginalMol.getBonds_0(), 16, 1);
  this.mHasFreeValence = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mOriginalMol.getAtoms_0(), 16, 1);
  for (i = 0; i < this.mOriginalMol.getAtoms_0(); i++) {
    valence = carc2.getAllowedValences(this.mOriginalMol.getAtomicNo_0(i))[0];
    this.mHasFreeValence[i] = this.mOriginalMol.getNonHydrogenNeighbourCount_0(i) < valence;
  }
  this.createAllTautomers();
  this.assignRegionNumbers();
  this.countAndRemoveDAndT();
  this.compileRegionCounts();
}
;
defineClass(345, 1, {1:1}, carc2.TautomerHelper);
_.$init_52 = function $init_52(){
}
;
_.addAllTautomers = function addAllTautomers(mol){
  var atom1, atom2, atom3, bond12, bond23, bondList, i, isUsedAtom, j, order12, order23;
  bondList = new ju.ArrayList;
  mol.ensureHelperArrays_0(1);
  isUsedAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++) {
    if (this.isValidHeteroAtom(atom1)) {
      isUsedAtom[atom1] = true;
      for (i = 0; i < mol.getConnAtoms_0(atom1); i++) {
        atom2 = mol.getConnAtom_0(atom1, i);
        bond12 = mol.getConnBond_0(atom1, i);
        order12 = mol.getConnBondOrder_0(atom1, i);
        if (mol.getAtomPi_0(atom2) != 0 && mol.getAtomPi_0(atom1) < order12) {
          isUsedAtom[atom2] = true;
          bondList.add(jl.valueOf_26(bond12));
          for (j = 0; j < mol.getConnAtoms_0(atom2); j++) {
            atom3 = mol.getConnAtom_0(atom2, j);
            if (!isUsedAtom[atom3]) {
              isUsedAtom[atom3] = true;
              bond23 = mol.getConnBond_0(atom2, j);
              order23 = mol.getConnBondOrder_0(atom2, j);
              if (mol.getAtomPi_0(atom2) + 2 == order12 + order23) {
                bondList.add(jl.valueOf_26(bond23));
                if (order12 >= order23) {
                  if (mol.getAtomPi_0(atom3) < order23) {
                    if (this.hasAcidicHydrogen(mol, atom3))
                      this.addVinylogousTautomers(mol, atom3, true, false, isUsedAtom, bondList);
                  }
                   else {
                    this.addVinylogousTautomers(mol, atom3, true, true, isUsedAtom, bondList);
                  }
                }
                if (order23 >= order12 && this.hasAcidicHydrogen(mol, atom1)) {
                  this.addVinylogousTautomers(mol, atom3, false, false, isUsedAtom, bondList);
                }
                if (this.isValidDonorAtom(atom3) && mol.getAtomPi_0(atom3) < order23) {
                  if (order12 <= 2 && order23 >= 2 && this.hasAcidicHydrogen(mol, atom1)) {
                    this.addDirectTautomer(mol, bond12, bond23);
                  }
                  if (order12 >= 2 && order23 <= 2 && this.hasAcidicHydrogen(mol, atom3)) {
                    this.addDirectTautomer(mol, bond23, bond12);
                  }
                }
                bondList.removeAtIndex(bondList.size() - 1);
              }
              isUsedAtom[atom3] = false;
            }
          }
          bondList.removeAtIndex(bondList.size() - 1);
          isUsedAtom[atom2] = false;
        }
      }
      isUsedAtom[atom1] = false;
    }
  }
}
;
_.addDirectTautomer = function addDirectTautomer(mol, bondSToD, bondDToS){
  var bondOrders;
  bondOrders = new carc2.TautomerHelper$BondOrders(this, mol);
  bondOrders.setBond(bondSToD, mol.getBondOrder_0(bondSToD) == 1?2:3);
  bondOrders.setBond(bondDToS, mol.getBondOrder_0(bondDToS) == 2?1:2);
  this.mIsTautomerBond[bondSToD] = true;
  this.mIsTautomerBond[bondDToS] = true;
  this.addTautomerIfNew(bondOrders);
}
;
_.addTautomerIfNew = function addTautomerIfNew(bondOrders){
  if (this.mBondOrderSet.add(bondOrders))
    this.mBondOrderDeque.add(bondOrders);
}
;
_.addVinylogousTautomers = function addVinylogousTautomers(mol, atom1, firstBondIsDouble, thirdBondIsDouble, isUsedAtom, bondList){
  var atom2, atom3, bond, bond12, bond23, bondOrders, i, j, k, makeDouble, order12, order23;
  for (i = 0; i < mol.getConnAtoms_0(atom1); i++) {
    atom2 = mol.getConnAtom_0(atom1, i);
    if (!isUsedAtom[atom2]) {
      bond12 = mol.getConnBond_0(atom1, i);
      order12 = mol.getBondOrder_0(bond12);
      if (firstBondIsDouble && order12 >= 2 || !firstBondIsDouble && order12 <= 2) {
        isUsedAtom[atom2] = true;
        bondList.add(jl.valueOf_26(bond12));
        for (j = 0; j < mol.getConnAtoms_0(atom2); j++) {
          atom3 = mol.getConnAtom_0(atom2, j);
          if (!isUsedAtom[atom3]) {
            bond23 = mol.getConnBond_0(atom2, j);
            order23 = mol.getBondOrder_0(bond23);
            if (mol.getAtomPi_0(atom2) + 2 == order12 + order23 && (firstBondIsDouble && order23 <= 2 || !firstBondIsDouble && order23 >= 2)) {
              isUsedAtom[atom3] = true;
              bondList.add(jl.valueOf_26(bond23));
              if (this.isValidDonorAtom(atom3) && (!firstBondIsDouble || this.hasAcidicHydrogen(mol, atom3))) {
                bondOrders = new carc2.TautomerHelper$BondOrders(this, mol);
                for (k = 0; k < bondList.size(); k++) {
                  bond = castTo(bondList.getAtIndex(k), 32).intValue();
                  makeDouble = k < 2?firstBondIsDouble ^ (k & 1) == 0:thirdBondIsDouble ^ (k & 1) == 0;
                  if (makeDouble)
                    bondOrders.setBond(bond, mol.getBondOrder_0(bond) == 1?2:3);
                  else 
                    bondOrders.setBond(bond, mol.getBondOrder_0(bond) == 2?1:2);
                  this.mIsTautomerBond[bond] = true;
                }
                this.addTautomerIfNew(bondOrders);
              }
               else {
                this.addVinylogousTautomers(mol, atom3, firstBondIsDouble, thirdBondIsDouble, isUsedAtom, bondList);
              }
              bondList.removeAtIndex(bondList.size() - 1);
              isUsedAtom[atom3] = false;
            }
          }
        }
        bondList.removeAtIndex(bondList.size() - 1);
        isUsedAtom[atom2] = false;
      }
    }
  }
  return false;
}
;
_.assignRegionNumbers = function assignRegionNumbers(){
  var atom, bond, bondWasSeen, connAtom, connBond, current, graphAtom, highest, i, j, region;
  this.mAtomRegionNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mOriginalMol.getAtoms_0(), 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mOriginalMol.getAtoms_0(), 15, 1);
  bondWasSeen = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mOriginalMol.getBonds_0(), 16, 1);
  region = 0;
  for (bond = 0; bond < this.mOriginalMol.getBonds_0(); bond++) {
    if (!bondWasSeen[bond] && this.mIsTautomerBond[bond]) {
      region++;
      this.mAtomRegionNo[this.mOriginalMol.getBondAtom_0(0, bond)] = region;
      this.mAtomRegionNo[this.mOriginalMol.getBondAtom_0(1, bond)] = region;
      bondWasSeen[bond] = true;
      for (i = 0; i < 2; i++) {
        atom = this.mOriginalMol.getBondAtom_0(i, bond);
        this.mAtomRegionNo[atom] = region;
        current = 0;
        highest = 0;
        graphAtom[0] = atom;
        while (current <= highest) {
          for (j = 0; j < this.mOriginalMol.getConnAtoms_0(graphAtom[current]); j++) {
            connBond = this.mOriginalMol.getConnBond_0(graphAtom[current], j);
            if (!bondWasSeen[connBond] && this.mIsTautomerBond[connBond]) {
              bondWasSeen[connBond] = true;
              connAtom = this.mOriginalMol.getConnAtom_0(graphAtom[current], j);
              if (this.mAtomRegionNo[connAtom] == 0) {
                this.mAtomRegionNo[connAtom] = region;
                graphAtom[++highest] = connAtom;
              }
            }
          }
          current++;
        }
      }
    }
  }
  this.mRegionCount = region;
}
;
_.compileRegionCounts = function compileRegionCounts(){
  var atom, bond, regionIndex;
  this.mRegionPiCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRegionCount, 15, 1);
  this.mRegionDCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRegionCount, 15, 1);
  this.mRegionTCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRegionCount, 15, 1);
  for (atom = 0; atom < this.mOriginalMol.getAtoms_0(); atom++) {
    if (this.mAtomRegionNo[atom] != 0) {
      regionIndex = this.mAtomRegionNo[atom] - 1;
      if (jsNotEquals(this.mAtomDCount, null))
        this.mRegionDCount[regionIndex] += this.mAtomDCount[atom];
      if (jsNotEquals(this.mAtomTCount, null))
        this.mRegionTCount[regionIndex] += this.mAtomTCount[atom];
    }
  }
  for (bond = 0; bond < this.mOriginalMol.getBonds_0(); bond++) {
    if (this.mIsTautomerBond[bond] && this.mOriginalMol.getBondOrder_0(bond) == 2) {
      this.mRegionPiCount[this.mAtomRegionNo[this.mOriginalMol.getBondAtom_0(0, bond)] - 1] += 2;
    }
  }
}
;
_.countAndRemoveDAndT = function countAndRemoveDAndT(){
  var atom1, atom2, bond, i;
  for (bond = 0; bond < this.mOriginalMol.getAllBonds_0(); bond++) {
    for (i = 0; i < 2; i++) {
      atom1 = this.mOriginalMol.getBondAtom_0(i, bond);
      atom2 = this.mOriginalMol.getBondAtom_0(1 - i, bond);
      if (this.mOriginalMol.getAtomicNo_0(atom1) == 1 && this.mOriginalMol.getAtomMass_0(atom1) > 1 && this.mOriginalMol.getAtomicNo_0(atom2) > 1 && this.mAtomRegionNo[atom2] != 0) {
        if (this.mOriginalMol.getAtomMass_0(atom1) == 2) {
          if (jsEquals(this.mAtomDCount, null))
            this.mAtomDCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mOriginalMol.getAllAtoms_0(), 15, 1);
          this.mAtomDCount[atom2]++;
        }
         else {
          if (jsEquals(this.mAtomTCount, null))
            this.mAtomTCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mOriginalMol.getAllAtoms_0(), 15, 1);
          this.mAtomTCount[atom2]++;
        }
        this.mOriginalMol.markAtomForDeletion_0(atom1);
      }
    }
  }
  if (jsNotEquals(this.mAtomDCount, null) || jsNotEquals(this.mAtomTCount, null))
    this.mOriginalMol.deleteMarkedAtomsAndBonds_0();
}
;
_.createAllTautomers = function createAllTautomers(){
  var tautomer;
  this.mBondOrderSet = new ju.TreeSet;
  this.mBondOrderDeque = new ju.ArrayDeque;
  this.addTautomerIfNew(new carc2.TautomerHelper$BondOrders(this, this.mOriginalMol));
  tautomer = this.mOriginalMol.getCompactCopy_0();
  while (!this.mBondOrderDeque.isEmpty()) {
    castTo(this.mBondOrderDeque.poll(), 176).copyToTautomer(tautomer);
    this.addAllTautomers(tautomer);
    if (this.mBondOrderSet.size() >= carc2.sMaxTautomers) {
      if (!carc2.sSuppressWarning)
        (jl.$clinit_System() , jl.out_0).println_0('Tautomer count exceeds maximum: ' + (new carc2.Canonizer(this.mOriginalMol)).getIDCode_0());
      break;
    }
  }
}
;
_.createGenericTautomer = function createGenericTautomer(){
  var atom, atom0, atomRank, bond, i, label_0, maxAtom, maxRank, mol, regionIndex;
  if (this.mBondOrderSet.size() == 1)
    return this.mOriginalMol;
  mol = this.mOriginalMol.getCompactCopy_0();
  mol.setFragment_0(true);
  mol.ensureHelperArrays_0(7);
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    if (this.mIsTautomerBond[bond]) {
      mol.setBondType_0(bond, 1);
      mol.setBondQueryFeature_0(bond, 1 | 2, true);
    }
  }
  for (atom0 = 0; atom0 < mol.getAtoms_0(); atom0++) {
    if (this.mAtomRegionNo[atom0] != 0 && this.mOriginalMol.getNonHydrogenNeighbourCount_0(atom0) < 4) {
      mol.convertStereoBondsToSingleBonds_0(atom0);
      mol.setAtomConfigurationUnknown_0(atom0, false);
      mol.setAtomESR_0(atom0, 0, -1);
    }
  }
  maxAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRegionCount, 15, 1);
  maxRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRegionCount, 15, 1);
  atomRank = (new carc2.Canonizer(mol)).getFinalRank();
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (this.mAtomRegionNo[atom] != 0) {
      regionIndex = this.mAtomRegionNo[atom] - 1;
      if (maxRank[regionIndex] < atomRank[atom]) {
        maxRank[regionIndex] = atomRank[atom];
        maxAtom[regionIndex] = atom;
      }
    }
  }
  for (i = 0; i < this.mRegionCount; i++) {
    label_0 = '' + this.mRegionPiCount[i] + '|' + this.mRegionDCount[i] + '|' + this.mRegionTCount[i];
    mol.setAtomCustomLabel_0(maxAtom[i], label_0);
  }
  return mol;
}
;
_.hasAcidicHydrogen = function hasAcidicHydrogen(mol, atom){
  if (mol.getAllHydrogens_0(atom) <= 0)
    return false;
  if (mol.isElectronegative_0(atom))
    return true;
  if (mol.getAtomPi_0(atom) != 0)
    return false;
  return true;
}
;
_.isValidDonorAtom = function isValidDonorAtom(atom){
  return this.mHasFreeValence[atom] && (this.mOriginalMol.getAtomicNo_0(atom) == 5 || this.mOriginalMol.getAtomicNo_0(atom) == 6 || this.mOriginalMol.getAtomicNo_0(atom) == 7 || this.mOriginalMol.getAtomicNo_0(atom) == 8 || this.mOriginalMol.getAtomicNo_0(atom) == 16 || this.mOriginalMol.getAtomicNo_0(atom) == 34 || this.mOriginalMol.getAtomicNo_0(atom) == 52);
}
;
_.isValidHeteroAtom = function isValidHeteroAtom(atom){
  return this.mHasFreeValence[atom] && (this.mOriginalMol.getAtomicNo_0(atom) == 7 || this.mOriginalMol.getAtomicNo_0(atom) == 8 || this.mOriginalMol.getAtomicNo_0(atom) == 16 || this.mOriginalMol.getAtomicNo_0(atom) == 34 || this.mOriginalMol.getAtomicNo_0(atom) == 52);
}
;
_.moveDeuteriumAndTritiumToTableEnd = function moveDeuteriumAndTritiumToTableEnd(){
  var atom, atom1, atom2, bond, bond0, isHydrogenBond, lastNonHAtom, lastNonHBond;
  this.mOriginalMol.ensureHelperArrays_0(1);
  lastNonHAtom = this.mOriginalMol.getAtoms_0();
  do 
    lastNonHAtom--;
  while (lastNonHAtom >= 0 && this.mOriginalMol.getAtomicNo_0(lastNonHAtom) == 1);
  for (atom = 0; atom < lastNonHAtom; atom++) {
    if (this.mOriginalMol.getAtomicNo_0(atom) == 1) {
      this.mOriginalMol.swapAtoms_0(atom, lastNonHAtom);
      do 
        lastNonHAtom--;
      while (this.mOriginalMol.getAtomicNo_0(lastNonHAtom) == 1);
    }
  }
  if (lastNonHAtom == this.mOriginalMol.getAtoms_0() - 1)
    return;
  isHydrogenBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mOriginalMol.getBonds_0(), 16, 1);
  for (bond0 = 0; bond0 < this.mOriginalMol.getBonds_0(); bond0++) {
    atom1 = this.mOriginalMol.getBondAtom_0(0, bond0);
    atom2 = this.mOriginalMol.getBondAtom_0(1, bond0);
    if (this.mOriginalMol.getAtomicNo_0(atom1) == 1 || this.mOriginalMol.getAtomicNo_0(atom2) == 1)
      isHydrogenBond[bond0] = true;
  }
  lastNonHBond = this.mOriginalMol.getBonds_0();
  do 
    lastNonHBond--;
  while (lastNonHBond >= 0 && isHydrogenBond[lastNonHBond]);
  for (bond = 0; bond < lastNonHBond; bond++) {
    if (isHydrogenBond[bond]) {
      this.mOriginalMol.swapBonds_0(bond, lastNonHBond);
      isHydrogenBond[bond] = false;
      do 
        lastNonHBond--;
      while (isHydrogenBond[lastNonHBond]);
    }
  }
}
;
_.mRegionCount = 0;
carc2.MAX_TAUTOMERS = 100000;
carc2.sMaxTautomers = 100000;
carc2.sSuppressWarning = false;
cggl.Lcom_actelion_research_chem_TautomerHelper_2_classLit = createForClass('com.actelion.research.chem', 'TautomerHelper', 345, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_TautomerHelper$BondOrders = function $clinit_TautomerHelper$BondOrders(){
  carc2.$clinit_TautomerHelper$BondOrders = emptyMethod;
  jl.$clinit_Object();
}
;
carc2.TautomerHelper$BondOrders = function TautomerHelper$BondOrders(this$0, mol){
  carc2.$clinit_TautomerHelper$BondOrders();
  var i;
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_53();
  this.encoding = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, narrow_int((this$0.mOriginalMol.getBonds_0() + 15) / 16), 15, 1);
  for (i = 0; i < this$0.mOriginalMol.getBonds_0(); i++)
    this.encoding[i >> 4] |= $wnd.Math.min(3, mol.getBondOrder_0(i)) << 2 * (i & 15);
}
;
defineClass(176, 1, {176:1, 10:1, 1:1}, carc2.TautomerHelper$BondOrders);
_.$init_53 = function $init_53(){
}
;
_.compareTo_1 = function compareTo_10(o){
  return this.compareTo_5(castTo(o, 176));
}
;
_.compareTo_5 = function compareTo_9(o){
  return (new caru.IntArrayComparator).compare_2(this.encoding, o.encoding);
}
;
_.copyToTautomer = function copyToTautomer(tautomer){
  var bo, i;
  for (i = 0; i < this.this$01.mOriginalMol.getBonds_0(); i++) {
    if (this.this$01.mIsTautomerBond[i]) {
      bo = 3 & this.encoding[i >> 4] >> 2 * (i & 15);
      tautomer.setBondType_0(i, bo == 1?1:bo == 2?this.this$01.mIsTautomerBond[i] && !this.this$01.mOriginalMol.isSmallRingBond_0(i)?386:2:bo == 3?4:32);
    }
  }
}
;
_.setBond = function setBond(bond, order){
  var high, shift_0;
  high = bond >> 4;
  shift_0 = 2 * (bond & 15);
  this.encoding[high] &= ~(3 << shift_0);
  this.encoding[high] |= order << shift_0;
}
;
cggl.Lcom_actelion_research_chem_TautomerHelper$BondOrders_2_classLit = createForClass('com.actelion.research.chem', 'TautomerHelper/BondOrders', 176, cggl.Ljava_lang_Object_2_classLit);
carc2.$clinit_TextDrawingObject = function $clinit_TextDrawingObject(){
  carc2.$clinit_TextDrawingObject = emptyMethod;
  carc2.$clinit_AbstractDrawingObject();
}
;
carc2.TextDrawingObject = function TextDrawingObject(){
  carc2.TextDrawingObject_1.call(this, '', new cargg.GenericPoint, 9, 0);
}
;
carc2.TextDrawingObject_0 = function TextDrawingObject_0(descriptorDetail){
  carc2.$clinit_TextDrawingObject();
  var index1, index2, key, value_0;
  carc2.TextDrawingObject.call(this);
  index1 = 0;
  while (index1 != -1) {
    index2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(descriptorDetail, '="', index1);
    if (index2 == -1)
      break;
    key = jl.substring_II_Ljava_lang_String___devirtual$(descriptorDetail, index1 + 1, index2);
    index1 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(descriptorDetail, '"', index2 + 2);
    value_0 = index1 == -1?jl.substring_I_Ljava_lang_String___devirtual$(descriptorDetail, index2 + 1):jl.substring_II_Ljava_lang_String___devirtual$(descriptorDetail, index2 + 1, index1);
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'text'))
      this.setText(value_0);
    else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'x'))
      this.setX(value_0);
    else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'y'))
      this.setY(value_0);
    else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'size'))
      this.setSize_0(value_0);
    else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'style'))
      this.setStyle(value_0);
  }
}
;
carc2.TextDrawingObject_1 = function TextDrawingObject_1(text_0, pt, size_0, style){
  carc2.AbstractDrawingObject.call(this);
  this.$init_54();
  this.mText = text_0;
  this.mSize = size_0;
  this.mStyle = style;
  this.mPoint = initUnidimensionalArray(cggl.Lcom_actelion_research_gui_generic_GenericPoint_2_classLit, {4:1, 1:1, 7:1}, 30, 1, 0, 1);
  setCheck(this.mPoint, 0, pt);
}
;
defineClass(243, 107, {107:1, 1:1}, carc2.TextDrawingObject, carc2.TextDrawingObject_0);
_.$init_54 = function $init_54(){
}
;
_.clone_0 = function clone(){
  var duplicate;
  duplicate = new carc2.TextDrawingObject;
  duplicate.setValues(this.mText, this.mSize, this.mStyle);
  duplicate.setCoordinates(this.mPoint[0].x_0, this.mPoint[0].y_0);
  duplicate.mIsSelected = this.mIsSelected;
  return duplicate;
}
;
_.contains_0 = function contains_3(x_0, y_0){
  return isNotNull(this.mLastBounds) && this.mLastBounds.contains_0(x_0, y_0);
}
;
_.decodeText = function decodeText(source){
  var h, index_0, l, startIndex, text_0;
  index_0 = jl.indexOf_I_I__devirtual$(source, 38);
  if (index_0 == -1)
    return source;
  startIndex = 0;
  text_0 = new jl.StringBuffer;
  while (index_0 != -1) {
    text_0.append_2(jl.substring_II_Ljava_lang_String___devirtual$(source, startIndex, index_0));
    if (jl.charAt_I_C__devirtual$_0(source, index_0 + 1) == 38) {
      text_0.append_0(38);
      startIndex = index_0 + 2;
    }
     else {
      h = jl.charAt_I_C__devirtual$_0(source, index_0 + 1);
      h = h - (h < 65?48:h < 97?65:97);
      l = jl.charAt_I_C__devirtual$_0(source, index_0 + 2);
      l = l - (l < 65?48:l < 97?65:97);
      text_0.append_0(narrow_char(16 * h + l));
      startIndex = index_0 + 3;
    }
    index_0 = jl.indexOf_II_I__devirtual$(source, 38, startIndex);
  }
  text_0.append_2(jl.substring_I_Ljava_lang_String___devirtual$(source, startIndex));
  return text_0.toString_0();
}
;
_.encodeText = function encodeText(source){
  var i, text_0;
  text_0 = new jl.StringBuffer;
  for (i = 0; i < jl.length__I__devirtual$_0(source); i++) {
    switch (jl.charAt_I_C__devirtual$_0(source, i)) {
      case 38:
        text_0.append_2('&&');
        break;
      case 9:
        text_0.append_2('&09');
        break;
      case 10:
        text_0.append_2('&0A');
        break;
      case 32:
        text_0.append_2('&20');
        break;
      default:text_0.append_0(jl.charAt_I_C__devirtual$_0(source, i));
        break;
    }
  }
  return text_0.toString_0();
}
;
_.getDescriptorDetail = function getDescriptorDetail(){
  var detail;
  detail = new jl.StringBuilder;
  detail.append_9(' text="' + this.encodeText(this.mText) + '"');
  detail.append_9(' x="' + this.mPoint[0].x_0 + '"');
  detail.append_9(' y="' + this.mPoint[0].y_0 + '"');
  if (this.mSize != 9)
    detail.append_9(' size="' + this.mSize + '"');
  if (this.mStyle != 0)
    detail.append_9(' style="' + this.mStyle + '"');
  return detail.toString_0();
}
;
_.getText = function getText(){
  return this.mText;
}
;
_.getTypeString = function getTypeString(){
  return 'text';
}
;
_.setCoordinates = function setCoordinates(x_0, y_0){
  this.mPoint[0].x_0 = x_0;
  this.mPoint[0].y_0 = y_0;
}
;
_.setSize_0 = function setSize_0(value_0){
  var nfe;
  try {
    this.mSize = parseFloat_0(value_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 61)) {
      nfe = $e0;
    }
     else 
      throw toJs($e0);
  }
}
;
_.setStyle = function setStyle(value_0){
  var nfe;
  try {
    this.mStyle = jl.parseInt_2(value_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 61)) {
      nfe = $e0;
    }
     else 
      throw toJs($e0);
  }
}
;
_.setText = function setText(value_0){
  this.mText = this.decodeText(value_0);
}
;
_.setValues = function setValues(text_0, size_0, style){
  this.mText = text_0;
  this.mSize = size_0;
  this.mStyle = style;
}
;
_.setX = function setX(value_0){
  var nfe;
  try {
    this.mPoint[0].x_0 = parseFloat_0(value_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 61)) {
      nfe = $e0;
    }
     else 
      throw toJs($e0);
  }
}
;
_.setY = function setY(value_0){
  var nfe;
  try {
    this.mPoint[0].y_0 = parseFloat_0(value_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 61)) {
      nfe = $e0;
    }
     else 
      throw toJs($e0);
  }
}
;
_.zoomAndRotateInit_0 = function zoomAndRotateInit_1(x_0, y_0){
  getClassPrototype(107).zoomAndRotateInit_0.call(this, x_0, y_0);
  this.mZoomReferenceSize = this.mSize;
}
;
_.mSize = 0;
_.mStyle = 0;
_.mZoomReferenceSize = 0;
carc2.DEFAULT_SIZE = 9;
carc2.DEFAULT_STYLE = 0;
carc2.LINE_SPACING = 1.399999976158142;
carc2.TYPE_STRING = 'text';
cggl.Lcom_actelion_research_chem_TextDrawingObject_2_classLit = createForClass('com.actelion.research.chem', 'TextDrawingObject', 243, cggl.Lcom_actelion_research_chem_AbstractDrawingObject_2_classLit);
carc2.$clinit_UniqueStringList = function $clinit_UniqueStringList(){
  carc2.$clinit_UniqueStringList = emptyMethod;
  carc2.$clinit_SortedStringList();
}
;
carc2.UniqueStringList = function UniqueStringList(){
  carc2.$clinit_UniqueStringList();
  carc2.SortedStringList.call(this);
  this.$init_55();
}
;
defineClass(486, 111, {111:1, 4:1, 1:1}, carc2.UniqueStringList);
_.$init_55 = function $init_55(){
  this.mOriginalOrder = new ju.ArrayList;
  this.mIndexList = new ju.ArrayList;
}
;
_.addString = function addString_0(theString){
  var index_0, position;
  index_0 = getClassPrototype(111).addString.call(this, theString);
  if (index_0 == -1)
    return -1;
  position = this.mOriginalOrder.size();
  this.mOriginalOrder.add(theString);
  this.mIndexList.addAtIndex(index_0, new jl.Integer(position));
  return position;
}
;
_.getListIndex = function getListIndex_0(s){
  var index_0;
  index_0 = getClassPrototype(111).getListIndex.call(this, s);
  if (index_0 == -1)
    return -1;
  return castTo(this.mIndexList.getAtIndex(index_0), 32).intValue();
}
;
_.getStringAt = function getStringAt_0(i){
  return castToString(this.mOriginalOrder.getAtIndex(i));
}
;
_.toArray_1 = function toArray_4(){
  return castTo(this.mOriginalOrder.toArray_0(initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, 0, 6, 1)), 15);
}
;
carc2.serialVersionUID_5 = 537265952;
cggl.Lcom_actelion_research_chem_UniqueStringList_2_classLit = createForClass('com.actelion.research.chem', 'UniqueStringList', 486, cggl.Lcom_actelion_research_chem_SortedStringList_2_classLit);
carcc.$clinit_BondAngleSet = function $clinit_BondAngleSet(){
  carcc.$clinit_BondAngleSet = emptyMethod;
  jl.$clinit_Object();
  carcc.TO_RADIAN = 3.141592653589793 / 180;
}
;
carcc.BondAngleSet = function BondAngleSet(mol, set_0){
  carcc.$clinit_BondAngleSet();
  var angle, atom, atom0, cTotalAngleCount, connAtoms, consideredRingSize, i, i0, i1, isAromaticAtom, isAromaticRing, isMissingIndex, j, j0, ring, ring0, ringAtom, ringAtom$array, ringAtom$index, ringAtom$max, ringSet, ringSize;
  Object_0.call(this);
  this.$init_56();
  this.mBondLengthSet = isNull(set_0)?new carcc.BondLengthSet(mol):set_0;
  this.mMol = mol;
  this.mBondAngle = initUnidimensionalArray(cggl.F_classLit, {4:1, 1:1, 7:1}, 1349, this.mMol.getAtoms_0(), 0, 3);
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    this.mBondAngle[atom0] = initUnidimensionalArray(cggl.F_classLit, {1349:1, 4:1, 1:1, 7:1}, 65, this.mMol.getAllConnAtoms_0(atom0), 0, 2);
    for (i = 1; i < this.mMol.getAllConnAtoms_0(atom0); i++)
      this.mBondAngle[atom0][i] = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, i, 15, 1);
  }
  this.mDefinedAngleCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mDefinedAngleSum = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 15, 1);
  this.mTinyRingSizeSum = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getBonds_0(), 15, 1);
  ringSet = this.mMol.getRingSet_0();
  isAromaticRing = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1);
  ringSet.determineAromaticity_1(isAromaticRing, initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1), initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 15, 1), true);
  for (consideredRingSize = 3; consideredRingSize <= 7; consideredRingSize++) {
    for (ring0 = 0; ring0 < ringSet.getSize_0(); ring0++) {
      ringSize = ringSet.getRingSize_0(ring0);
      if (ringSize == consideredRingSize) {
        if (isAromaticRing[ring0])
          this.calculateBondAnglesOfAromaticRing(ring0);
        else if (ringSize <= 4)
          this.calculateBondAnglesOfSmallRing(ring0);
      }
    }
  }
  isAromaticAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (ring = 0; ring < ringSet.getSize_0(); ring++)
    if (isAromaticRing[ring])
      for (ringAtom$array = ringSet.getRingAtoms_0(ring) , ringAtom$index = 0 , ringAtom$max = ringAtom$array.length; ringAtom$index < ringAtom$max; ++ringAtom$index) {
        ringAtom = ringAtom$array[ringAtom$index];
        isAromaticAtom[ringAtom] = true;
      }
  cTotalAngleCount = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 0, 1, 3, 6, 10, 15, 21]);
  for (atom = 0; atom < this.mMol.getAtoms_0(); atom++) {
    connAtoms = this.mMol.getAllConnAtoms_0(atom);
    if (connAtoms > 4) {
      for (i = 1; i < connAtoms; i++)
        for (j = 0; j < i; j++)
          this.mBondAngle[atom][i][j] = 3.141592653589793 / 2;
      this.mDefinedAngleCount[atom] = cTotalAngleCount[connAtoms];
      continue;
    }
    if (this.mDefinedAngleCount[atom] == cTotalAngleCount[connAtoms])
      continue;
    if (this.mMol.isSmallRingAtom_0(atom) && (isAromaticAtom[atom] || this.mMol.getAtomRingSize_0(atom) <= 4 && this.mMol.getAtomPi_0(atom) > 0)) {
      if (connAtoms > 2) {
        if (this.mDefinedAngleCount[atom] == 1) {
          if (this.mMol.getAtomicNo_0(atom) <= 14)
            angle = (2 * 3.141592653589793 - this.mDefinedAngleSum[atom]) / 2;
          else 
            angle = this.calculateRemainingTetrahedralAngle(this.mDefinedAngleSum[atom]);
        }
         else {
          angle = 2 * 3.141592653589793 - this.mDefinedAngleSum[atom];
          if (connAtoms > 3) {
            if (this.mDefinedAngleCount[atom] == 2) {
              isMissingIndex = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom), 16, 1);
              for (i0 = 1; i0 < connAtoms; i0++) {
                for (j0 = 0; j0 < i0; j0++) {
                  if (this.mBondAngle[atom][i0][j0] != 0) {
                    isMissingIndex[i0] = !isMissingIndex[i0];
                    isMissingIndex[j0] = !isMissingIndex[j0];
                  }
                }
              }
              for (i1 = 0; i1 < connAtoms; i1++) {
                if (isMissingIndex[i1]) {
                  for (j0 = i1 + 1; j0 < connAtoms; j0++) {
                    if (isMissingIndex[j0]) {
                      this.mBondAngle[atom][j0][i1] = angle;
                      break;
                    }
                  }
                  break;
                }
              }
            }
            angle = 3.141592653589793 / 2;
          }
        }
        for (i = 1; i < connAtoms; i++)
          for (j = 0; j < i; j++)
            if (this.mBondAngle[atom][i][j] == 0)
              this.mBondAngle[atom][i][j] = angle;
      }
    }
     else if (this.mMol.isSmallRingAtom_0(atom) && this.mMol.getAtomRingSize_0(atom) <= 4) {
      switch (this.getRingStrainClass(atom)) {
        case 771:
          this.setRingStrainAngles(atom, 0, 3, 2.0653998851776123);
          this.setRingStrainAngles(atom, 0, 0, 113.52999877929688 * carcc.TO_RADIAN);
          break;
        case 1028:
          this.setRingStrainAngles(atom, 0, 4, 1.9797999858856201);
          this.setRingStrainAngles(atom, 0, 0, 111.55000305175781 * carcc.TO_RADIAN);
          break;
        case 393987:
          this.setRingStrainAngles(atom, 0, 3, 2.2639999389648438);
          this.setRingStrainAngles(atom, 0, 6, 2.2639999389648438);
          this.setRingStrainAngles(atom, 3, 3, 98.71499633789062 * carcc.TO_RADIAN);
          break;
        case 459779:
          this.setRingStrainAngles(atom, 0, 3, 2.16759991645813);
          this.setRingStrainAngles(atom, 0, 4, 2.16759991645813);
          this.setRingStrainAngles(atom, 0, 7, 2.16759991645813);
          this.setRingStrainAngles(atom, 3, 4, 110.70999908447266 * carcc.TO_RADIAN);
          break;
        case 525316:
          this.setRingStrainAngles(atom, 0, 4, 2.0662999153137207);
          this.setRingStrainAngles(atom, 0, 8, 2.0662999153137207);
          this.setRingStrainAngles(atom, 4, 4, 114.55999755859375 * carcc.TO_RADIAN);
        case 394758:
          this.setRingStrainAngles(atom, 0, 6, 2.526099920272827);
          break;
        case 460550:
          this.setRingStrainAngles(atom, 0, 6, 2.3561999797821045);
          this.setRingStrainAngles(atom, 0, 7, 2.3561999797821045);
          break;
        case 526087:
          this.setRingStrainAngles(atom, 0, 7, 2.2844998836517334);
          this.setRingStrainAngles(atom, 0, 8, 2.2844998836517334);
          break;
        case 526344:
          this.setRingStrainAngles(atom, 0, 8, 2.186300039291382);
          break;
        case 50529027:
          this.setRingStrainAngles(atom, 3, 3, 2.4189000129699707);
          break;
        case 67371779:
          this.setRingStrainAngles(atom, 3, 4, 2.2298998832702637);
          break;
        case 67372036:
          this.setRingStrainAngles(atom, 4, 4, 2.094399929046631);
          break;
        case 101057283:
          this.setRingStrainAngles(atom, 3, 6, 105.41999816894531 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 3, 3, 166.50999450683594 * carcc.TO_RADIAN);
          break;
        case 117834755:
          this.setRingStrainAngles(atom, 3, 4, 161.1300048828125 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 3, 7, 102.62000274658203 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 4, 6, 121.61000061035156 * carcc.TO_RADIAN);
          break;
        case 134677507:
          this.setRingStrainAngles(atom, 3, 4, 151.39999389648438 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 3, 8, 116.18000030517578 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 4, 7, 129 * carcc.TO_RADIAN);
          break;
        case 117900035:
          this.setRingStrainAngles(atom, 3, 7, 120.87999725341797 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 3, 3, 177.9199981689453 * carcc.TO_RADIAN);
          break;
        case 117900292:
          this.setRingStrainAngles(atom, 4, 7, 119.79000091552734 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 4, 4, 146.1999969482422 * carcc.TO_RADIAN);
          break;
        case 134743044:
          this.setRingStrainAngles(atom, 4, 8, 122.56999969482422 * carcc.TO_RADIAN);
          this.setRingStrainAngles(atom, 4, 4, 134.75999450683594 * carcc.TO_RADIAN);
          break;
      }
    }
     else {
      angle = this.mMol.getAtomicNo_0(atom) > 10?109.47000122070312 * 3.141592653589793 / 180:this.mMol.getAtomPi_0(atom) == 2?3.141592653589793:this.mMol.isFlatNitrogen_0(atom)?120 * 3.141592653589793 / 180:this.mMol.getAtomPi_0(atom) == 0?109.47000122070312 * 3.141592653589793 / 180:120 * 3.141592653589793 / 180;
      for (i = 1; i < connAtoms; i++)
        for (j = 0; j < i; j++)
          this.mBondAngle[atom][i][j] = angle;
    }
  }
}
;
defineClass(689, 1, {1:1}, carcc.BondAngleSet);
_.$init_56 = function $init_56(){
}
;
_.calculateBondAnglesOfAromaticRing = function calculateBondAnglesOfAromaticRing(ring){
  var angle, angleInc, angleSum, bondAngle, cycle, cycles, dError_ddir, dirDif1, dirDif2, direction, factor, force, gapDirection, gapGain, gapSize, i, i0, i1, i2, i3, i4, i5, im1, ip1, isRegularRing, maxForce, maxForceIndex, optAngle, optDif, ringAtom, ringBond, ringSet, ringSize, sx, sy;
  ringSet = this.mMol.getRingSet_0();
  ringSize = ringSet.getRingSize_0(ring);
  ringAtom = ringSet.getRingAtoms_0(ring);
  ringBond = ringSet.getRingBonds_0(ring);
  isRegularRing = true;
  for (i0 = 1; i0 < ringSize; i0++) {
    if (this.mBondLengthSet.getLength_0(ringBond[i0]) != this.mBondLengthSet.getLength_0(ringBond[0])) {
      isRegularRing = false;
      break;
    }
  }
  if (isRegularRing) {
    bondAngle = (ringSize - 2) * 3.141592653589793 / ringSize;
    for (i1 = 0; i1 < ringSize; i1++)
      this.setBondAngle(ringAtom[i1], ringBond[i1], ringBond[i1 == 0?ringSize - 1:i1 - 1], bondAngle);
    return;
  }
  optAngle = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, ringSize, 15, 1);
  angleSum = 0;
  for (i2 = 0; i2 < ringSize; i2++) {
    optAngle[i2] = this.mMol.getAtomPi_0(ringAtom[i2]) == 0?109.47000122070312 * carcc.TO_RADIAN:this.mMol.getAtomPi_0(ringAtom[i2]) == 1?0.666700005531311 * 3.141592653589793:3.141592653589793;
    angleSum += optAngle[i2];
  }
  angleInc = ((ringSize - 2) * 3.141592653589793 - angleSum) / ringSize;
  for (i3 = 0; i3 < ringSize; i3++)
    optAngle[i3] += angleInc;
  direction = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, ringSize, 15, 1);
  for (i4 = 1; i4 < ringSize; i4++)
    direction[i4] = direction[i4 - 1] + 3.141592653589793 - optAngle[i4];
  dError_ddir = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, ringSize, 15, 1);
  cycles = 100;
  for (cycle = 0; cycle < 100; cycle++) {
    sx = 0;
    sy = 0;
    for (i1 = 0; i1 < ringSize; i1++) {
      sx += this.mBondLengthSet.getLength_0(ringBond[i1]) * $wnd.Math.sin(direction[i1]);
      sy += this.mBondLengthSet.getLength_0(ringBond[i1]) * $wnd.Math.cos(direction[i1]);
    }
    gapDirection = carc2.getAngle_0(0, 0, sx, sy);
    gapSize = $wnd.Math.sqrt(sx * sx + sy * sy);
    maxForceIndex = -1;
    maxForce = 0;
    for (i5 = 0; i5 < ringSize; i5++) {
      im1 = i5 == 0?ringSize - 1:i5 - 1;
      ip1 = i5 + 1 == ringSize?0:i5 + 1;
      dirDif1 = carc2.getAngleDif(direction[i5], direction[im1]);
      dirDif2 = carc2.getAngleDif(direction[ip1], direction[i5]);
      optDif = carc2.getAngleDif(optAngle[i5], optAngle[ip1]);
      dError_ddir[i5] = 2 * dirDif1 - 2 * dirDif2 + 2 * optDif;
      gapGain = $wnd.Math.cos(direction[i5] - 3.141592653589793 / 2 - gapDirection);
      force = gapSize * gapGain - 0.029999999329447746 * dError_ddir[i5];
      if ($wnd.Math.abs(force) > $wnd.Math.abs(maxForce)) {
        maxForce = force;
        maxForceIndex = i5;
      }
    }
    factor = $wnd.Math.exp(-5 * cycle / 100);
    direction[maxForceIndex] += factor * maxForce;
  }
  for (i = 0; i < ringSize; i++) {
    im1 = i == 0?ringSize - 1:i - 1;
    angle = direction[im1] + 3.141592653589793 - direction[i];
    if (angle > 2 * 3.141592653589793)
      angle -= 2 * 3.141592653589793;
    this.setBondAngle(ringAtom[i], ringBond[im1], ringBond[i], angle);
  }
}
;
_.calculateBondAnglesOfSmallRing = function calculateBondAnglesOfSmallRing(ring){
  var angle, i, i0, i1, ringAtom, ringBond, ringSet, ringSize, untouchedBondFound;
  ringSet = this.mMol.getRingSet_0();
  ringSize = ringSet.getRingSize_0(ring);
  ringBond = ringSet.getRingBonds_0(ring);
  untouchedBondFound = false;
  for (i0 = 0; i0 < ringSize; i0++) {
    if (this.mTinyRingSizeSum[ringBond[i0]] == 0) {
      untouchedBondFound = true;
      break;
    }
  }
  if (untouchedBondFound) {
    angle = (180 * ringSize - 360) / ringSize * carcc.TO_RADIAN;
    ringAtom = ringSet.getRingAtoms_0(ring);
    for (i1 = 0; i1 < ringSize; i1++) {
      this.setBondAngle(ringAtom[i1], ringBond[i1 == 0?ringSize - 1:i1 - 1], ringBond[i1], angle);
    }
    if (ringSize <= 4) {
      for (i = 0; i < ringSize; i++)
        this.mTinyRingSizeSum[ringBond[i]] += ringSize;
    }
  }
}
;
_.calculateRemainingTetrahedralAngle = function calculateRemainingTetrahedralAngle(firstAngle){
  var a109;
  a109 = 109.47000122070312 * 3.141592653589793 / 180;
  return a109 + (a109 - firstAngle) * 0.18000000715255737;
}
;
_.getAngle_1 = function getAngle_1(atom, conn1, conn2){
  var conn, connIndex1, connIndex2, i;
  connIndex1 = -1;
  connIndex2 = -1;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(atom); i++) {
    conn = this.mMol.getConnAtom_0(atom, i);
    if (conn == conn1 || conn == conn2) {
      if (connIndex2 == -1) {
        connIndex2 = i;
      }
       else {
        connIndex1 = i;
        break;
      }
    }
  }
  return this.mBondAngle[atom][connIndex1][connIndex2];
}
;
_.getConnAngle = function getConnAngle(atom, i1, i2){
  return i1 < i2?this.mBondAngle[atom][i2][i1]:this.mBondAngle[atom][i1][i2];
}
;
_.getRingStrainClass = function getRingStrainClass(atom){
  var bond, handled, i, j, largestIndex, largestSum, strainClass;
  handled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(atom), 16, 1);
  strainClass = 0;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++) {
    largestSum = 0;
    largestIndex = -1;
    for (j = 0; j < this.mMol.getConnAtoms_0(atom); j++) {
      if (!handled[j]) {
        bond = this.mMol.getConnBond_0(atom, j);
        if (largestSum < this.mTinyRingSizeSum[bond]) {
          largestSum = this.mTinyRingSizeSum[bond];
          largestIndex = j;
        }
      }
    }
    if (largestSum == 0)
      return strainClass;
    strainClass <<= 8;
    strainClass += largestSum;
    handled[largestIndex] = true;
  }
  return strainClass;
}
;
_.setBondAngle = function setBondAngle(atom, bond1, bond2, angle){
  var conn1, conn2, connBond, i;
  conn1 = -1;
  conn2 = -1;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(atom); i++) {
    connBond = this.mMol.getConnBond_0(atom, i);
    if (connBond == bond1 || connBond == bond2) {
      if (conn1 == -1) {
        conn1 = i;
      }
       else {
        conn2 = i;
        break;
      }
    }
  }
  if (this.mBondAngle[atom][conn2][conn1] == 0) {
    this.mBondAngle[atom][conn2][conn1] = angle;
    this.mDefinedAngleSum[atom] += angle;
    this.mDefinedAngleCount[atom]++;
  }
}
;
_.setRingStrainAngles = function setRingStrainAngles(atom, tinyRingSizeSum1, tinyRingSizeSum2, angle){
  var allConnAtoms, bondSum1, bondSum2, connAtoms, i, j;
  allConnAtoms = this.mMol.getAllConnAtoms_0(atom);
  connAtoms = this.mMol.getConnAtoms_0(atom);
  for (i = 1; i < allConnAtoms; i++) {
    bondSum1 = i < connAtoms?this.mTinyRingSizeSum[this.mMol.getConnBond_0(atom, i)]:0;
    for (j = 0; j < i; j++) {
      if (this.mBondAngle[atom][i][j] == 0) {
        bondSum2 = j < connAtoms?this.mTinyRingSizeSum[this.mMol.getConnBond_0(atom, j)]:0;
        if (bondSum1 == tinyRingSizeSum1 && bondSum2 == tinyRingSizeSum2 || bondSum1 == tinyRingSizeSum2 && bondSum2 == tinyRingSizeSum1)
          this.mBondAngle[atom][i][j] = angle;
      }
    }
  }
}
;
carcc.TO_RADIAN = 0;
cggl.Lcom_actelion_research_chem_conf_BondAngleSet_2_classLit = createForClass('com.actelion.research.chem.conf', 'BondAngleSet', 689, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_BondLengthSet = function $clinit_BondLengthSet(){
  carcc.$clinit_BondLengthSet = emptyMethod;
  jl.$clinit_Object();
  carcc.CONSIDER_PI = stampJavaTypeInfo(getClassLiteralForArray(cggl.Z_classLit, 1), {12:1, 4:1, 1:1}, 5, 16, [false, false, false, false, false, true, true, true, true, false, false, false, false, false, false, true, true]);
}
;
carcc.BondLengthSet = function BondLengthSet(mol){
  carcc.$clinit_BondLengthSet();
  var bond, index_0;
  Object_0.call(this);
  this.$init_57();
  mol.ensureHelperArrays_0(7);
  this.mBondLength = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 15, 1);
  this.mBondStdDev = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 15, 1);
  for (bond = 0; bond < mol.getAllBonds_0(); bond++) {
    index_0 = carcc.getBondIndex_1(mol, bond);
    if (index_0 == -1) {
      this.mBondLength[bond] = carcc.getBondLengthFromCovalentRadii(mol, bond);
      this.mBondStdDev[bond] = carcc.getStdDevFromCovalentRadii(mol, bond);
    }
     else {
      this.mBondLength[bond] = carcc.getBondLength_0(index_0);
      this.mBondStdDev[bond] = carcc.getBondStdDev(index_0);
    }
  }
}
;
carcc.getAtomPi_0 = function getAtomPi_0(mol, atom){
  if (atom >= mol.getAtoms_0())
    return 0;
  if (mol.isAromaticAtom_1(atom) && mol.getAtomicNo_0(atom) == 6 && mol.getAtomCharge_0(atom) != 0)
    return 1;
  return mol.getAtomPi_0(atom);
}
;
carcc.getBondID = function getBondID(bondOrder, isAromatic, isDelocalized, atomicNo1, atomicNo2, atomPi1, atomPi2){
  var atomType1, atomType2, bondType, pi1, pi2;
  pi1 = atomicNo1 < carcc.CONSIDER_PI.length && carcc.CONSIDER_PI[atomicNo1]?atomPi1 << 8:0;
  pi2 = atomicNo2 < carcc.CONSIDER_PI.length && carcc.CONSIDER_PI[atomicNo2]?atomPi2 << 8:0;
  atomType1 = pi1 + atomicNo1;
  atomType2 = pi2 + atomicNo2;
  bondType = isDelocalized?0:isAromatic?4 + bondOrder:bondOrder;
  return (bondType << 24) + (atomType1 < atomType2?(atomType1 << 12) + atomType2:(atomType2 << 12) + atomType1);
}
;
carcc.getBondIndex_0 = function getBondIndex_0(bondOrder, isAromatic, isDelocalized, atomicNo1, atomicNo2, atomPi1, atomPi2){
  return carcc.lookupBondIndex(carcc.getBondID(bondOrder, isAromatic, isDelocalized, atomicNo1, atomicNo2, atomPi1, atomPi2));
}
;
carcc.getBondIndex_1 = function getBondIndex_1(mol, bond){
  var atom1, atom2, atomicNo1, atomicNo2;
  atom1 = mol.getBondAtom_0(0, bond);
  atom2 = mol.getBondAtom_0(1, bond);
  atomicNo1 = mol.getAtomicNo_0(atom1);
  atomicNo2 = mol.getAtomicNo_0(atom2);
  return carcc.getBondIndex_0(mol.getBondOrder_0(bond), mol.isAromaticBond_0(bond), mol.isDelocalizedBond_0(bond), atomicNo1, atomicNo2, carcc.getAtomPi_0(mol, atom1), carcc.getAtomPi_0(mol, atom2));
}
;
carcc.getBondLength_0 = function getBondLength_0(index_0){
  return index_0 == -1?2.000499963760376:carcc.BOND_LENGTH[index_0];
}
;
carcc.getBondLengthFromCovalentRadii = function getBondLengthFromCovalentRadii(mol, bond){
  var atomicNo1, atomicNo2;
  atomicNo1 = mol.getAtomicNo_0(mol.getBondAtom_0(0, bond));
  atomicNo2 = mol.getAtomicNo_0(mol.getBondAtom_0(1, bond));
  return carcc.getCovalentRadius(atomicNo1) + carcc.getCovalentRadius(atomicNo2);
}
;
carcc.getBondStdDev = function getBondStdDev(index_0){
  return index_0 == -1?1:carcc.BOND_STDDEV[index_0];
}
;
carcc.getCovalentRadius = function getCovalentRadius(atomicNo){
  return atomicNo < (carcc.$clinit_VDWRadii() , carcc.COVALENT_RADIUS).length?(carcc.$clinit_VDWRadii() , carcc.COVALENT_RADIUS)[atomicNo]:atomicNo < (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS).length?0.6000000238418579 * (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS)[atomicNo]:1.7999999523162842;
}
;
carcc.getStdDevFromCovalentRadii = function getStdDevFromCovalentRadii(mol, bond){
  var atomicNo1, atomicNo2;
  atomicNo1 = mol.getAtomicNo_0(mol.getBondAtom_0(0, bond));
  atomicNo2 = mol.getAtomicNo_0(mol.getBondAtom_0(1, bond));
  return (atomicNo1 < (carcc.$clinit_VDWRadii() , carcc.COVALENT_RADIUS).length?0.05000000074505806:0.125) + (atomicNo2 < (carcc.$clinit_VDWRadii() , carcc.COVALENT_RADIUS).length?0.05000000074505806:0.125);
}
;
carcc.initialize = function initialize(){
  var bdr, count, countString, i, item_0, line, nfe;
  if (!carcc.isInitialized) {
    bdr = carcc.getbondLengthDataData();
    countString = bdr[0];
    count = jl.parseInt_2(countString);
    carcc.BOND_ID = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
    carcc.BOND_LENGTH = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, count, 15, 1);
    carcc.BOND_STDDEV = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, count, 15, 1);
    carcc.BOND_COUNT = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
    for (i = 0; i < count; i++) {
      line = bdr[i + 1];
      item_0 = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(line, '\t');
      if (item_0.length == 4) {
        try {
          carcc.BOND_ID[i] = jl.parseInt_2(item_0[0]);
          carcc.BOND_LENGTH[i] = parseFloat_0(item_0[1]);
          carcc.BOND_STDDEV[i] = parseFloat_0(item_0[2]);
          carcc.BOND_COUNT[i] = jl.parseInt_2(item_0[3]);
        }
         catch ($e0) {
          $e0 = toJava($e0);
          if (instanceOf($e0, 61)) {
            nfe = $e0;
            break;
          }
           else 
            throw toJs($e0);
        }
      }
    }
    carcc.isInitialized = true;
  }
}
;
carcc.lookupBondIndex = function lookupBondIndex(id_0){
  var comparison, i, increment, index_0;
  if (!carcc.isInitialized)
    carcc.initialize();
  index_0 = 2048;
  increment = 1024;
  for (i = 0; i < 12; i++) {
    comparison = index_0 >= carcc.BOND_ID.length || id_0 < carcc.BOND_ID[index_0]?-1:id_0 == carcc.BOND_ID[index_0]?0:1;
    if (comparison == 0)
      return index_0;
    index_0 = comparison < 0?index_0 - increment:index_0 + increment;
    increment = narrow_int(increment / 2);
  }
  return -1;
}
;
defineClass(355, 1, {1:1}, carcc.BondLengthSet);
_.$init_57 = function $init_57(){
}
;
_.getLength_0 = function getLength_0(bond){
  return this.mBondLength[bond];
}
;
carcc.DEFAULT_BOND_LENGTH = 2.000499963760376;
carcc.DEFAULT_BOND_STDDEV = 1;
carcc.cBondDataFile = 'bondLengthData.txt';
carcc.isInitialized = false;
carcc.sCustomBondDataFile = null;
cggl.Lcom_actelion_research_chem_conf_BondLengthSet_2_classLit = createForClass('com.actelion.research.chem.conf', 'BondLengthSet', 355, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_Conformer = function $clinit_Conformer(){
  carcc.$clinit_Conformer = emptyMethod;
  jl.$clinit_Object();
}
;
carcc.Conformer = function Conformer(mol){
  carcc.$clinit_Conformer();
  var atom;
  Object_0.call(this);
  this.$init_58();
  this.mMol = mol;
  this.mCoordinates = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {187:1, 4:1, 1:1, 7:1}, 43, mol.getAllAtoms_0(), 0, 1);
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    this.mCoordinates[atom] = new carc2.Coordinates_2(mol.getCoordinates(atom));
  this.mEnergy = NaN;
}
;
carcc.Conformer_0 = function Conformer_0(c){
  carcc.$clinit_Conformer();
  carcc.Conformer_1.call(this, c, c.mMol);
}
;
carcc.Conformer_1 = function Conformer_1(c, mol){
  var i;
  Object_0.call(this);
  this.$init_58();
  this.mMol = mol;
  this.mCoordinates = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {187:1, 4:1, 1:1, 7:1}, 43, c.mCoordinates.length, 0, 1);
  for (i = 0; i < this.mCoordinates.length; i++)
    this.mCoordinates[i] = new carc2.Coordinates_2(c.mCoordinates[i]);
  if (jsNotEquals(c.mBondTorsion, null))
    this.mBondTorsion = ju.copyOf_11(c.mBondTorsion, c.mBondTorsion.length);
  this.mName = jsEquals(c.mName, null) || jl.endsWith_Ljava_lang_String__Z__devirtual$(c.mName, ' (copy)')?c.mName:jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(c.mName, ' (copy)');
  this.mEnergy = NaN;
}
;
defineClass(71, 1, {71:1, 10:1, 1:1}, carcc.Conformer_0);
_.$init_58 = function $init_58(){
}
;
_.compareTo_1 = function compareTo_12(conformer){
  return this.compareTo_6(castTo(conformer, 71));
}
;
_.calculateDescriptor = function calculateDescriptor(rotatableBond){
  this.mTorsionDescriptor = (new carcc.TorsionDescriptorHelper_0(this.getMolecule_0(), rotatableBond)).getTorsionDescriptor(this);
}
;
_.calculateTorsion_0 = function calculateTorsion_0(atom){
  var c1, c2, c3, c4, n1, n2, v1, v2, v3;
  c1 = this.getCoordinates(atom[0]);
  c2 = this.getCoordinates(atom[1]);
  c3 = this.getCoordinates(atom[2]);
  c4 = this.getCoordinates(atom[3]);
  v1 = c2.subC(c1);
  v2 = c3.subC(c2);
  v3 = c4.subC(c3);
  n1 = v1.cross(v2);
  n2 = v2.cross(v3);
  return -$wnd.Math.atan2(v2.getLength() * v1.dot(n2), n1.dot(n2));
}
;
_.compareTo_6 = function compareTo_11(conformer){
  this.ensureDescriptors(conformer);
  return this.mTorsionDescriptor.compareTo_7(conformer.mTorsionDescriptor);
}
;
_.copyFrom = function copyFrom(mol){
  var atom;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    this.mCoordinates[atom].set_1(mol.getCoordinates(atom));
}
;
_.copyFrom_0 = function copyFrom_0(conformer){
  var atom;
  for (atom = 0; atom < conformer.getSize_0(); atom++)
    this.mCoordinates[atom].set_1(conformer.mCoordinates[atom]);
  if (jsEquals(conformer.mBondTorsion, null))
    this.mBondTorsion = null;
  else 
    this.mBondTorsion = ju.copyOf_11(conformer.mBondTorsion, conformer.mBondTorsion.length);
}
;
_.ensureDescriptors = function ensureDescriptors(c){
  var tdh;
  if (isNull(this.mTorsionDescriptor) || isNull(c.mTorsionDescriptor)) {
    tdh = new carcc.TorsionDescriptorHelper(this.mMol);
    if (isNull(this.mTorsionDescriptor))
      this.mTorsionDescriptor = tdh.getTorsionDescriptor(this);
    if (isNull(c.mTorsionDescriptor))
      c.mTorsionDescriptor = tdh.getTorsionDescriptor(c);
  }
}
;
_.equals_1 = function equals_7(conformer){
  this.ensureDescriptors(conformer);
  return this.mTorsionDescriptor.equals_2(conformer.mTorsionDescriptor);
}
;
_.getBondTorsion = function getBondTorsion(bond){
  return jsEquals(this.mBondTorsion, null)?-1:this.mBondTorsion[bond];
}
;
_.getCoordinates = function getCoordinates_0(atom){
  return this.mCoordinates[atom];
}
;
_.getEnergy = function getEnergy(){
  return this.mEnergy;
}
;
_.getLikelihood = function getLikelihood(){
  return this.mLikelihood_0;
}
;
_.getMolecule_0 = function getMolecule_1(){
  return this.mMol;
}
;
_.getName_0 = function getName_0(){
  return jsEquals(this.mName, null)?this.mMol.getName_0():this.mName;
}
;
_.getSize_0 = function getSize_1(){
  return this.mCoordinates.length;
}
;
_.getX = function getX(atom){
  return this.mCoordinates[atom].x_0;
}
;
_.getY = function getY(atom){
  return this.mCoordinates[atom].y_0;
}
;
_.getZ = function getZ(atom){
  return this.mCoordinates[atom].z_0;
}
;
_.setBondTorsion = function setBondTorsion(bond, torsion){
  if (jsEquals(this.mBondTorsion, null)) {
    this.mBondTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, this.mMol.getAllBonds_0(), 15, 1);
    ju.fill_2(this.mBondTorsion, narrow_short(-1));
  }
  while (torsion < 0)
    torsion = narrow_short(torsion + 360);
  while (torsion >= 360)
    torsion = narrow_short(torsion - 360);
  this.mBondTorsion[bond] = torsion;
}
;
_.setCoordinates_0 = function setCoordinates_0(atom, coords){
  this.mCoordinates[atom].set_1(coords);
}
;
_.setCoordinatesReplace = function setCoordinatesReplace(atom, coords){
  this.mCoordinates[atom] = coords;
}
;
_.setEnergy = function setEnergy(energy){
  this.mEnergy = energy;
}
;
_.setLikelihood = function setLikelihood(likelihood){
  this.mLikelihood_0 = likelihood;
}
;
_.setName_0 = function setName_0(name_0){
  this.mName = name_0;
}
;
_.setX_0 = function setX_0(atom, x_0){
  this.mCoordinates[atom].x_0 = x_0;
}
;
_.setY_0 = function setY_0(atom, y_0){
  this.mCoordinates[atom].y_0 = y_0;
}
;
_.setZ = function setZ(atom, z_0){
  this.mCoordinates[atom].z_0 = z_0;
}
;
_.toMolecule = function toMolecule(){
  return this.toMolecule_0(this.mMol);
}
;
_.toMolecule_0 = function toMolecule_0(mol){
  var atom;
  if (isNull(mol))
    mol = this.mMol.getCompactCopy_0();
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    mol.getCoordinates(atom).set_1(this.mCoordinates[atom]);
  if (jsNotEquals(this.mName, null))
    mol.setName_0(this.mName);
  return mol;
}
;
_.mEnergy = 0;
_.mLikelihood_0 = 0;
cggl.Lcom_actelion_research_chem_conf_Conformer_2_classLit = createForClass('com.actelion.research.chem.conf', 'Conformer', 71, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDB = function $clinit_TorsionDB(){
  carcc.$clinit_TorsionDB = emptyMethod;
  jl.$clinit_Object();
  carcc.TORSION_NOT_FOUND = -1;
}
;
carcc.TorsionDB = function TorsionDB(){
  Object_0.call(this);
  this.$init_59();
  this.mTreeMap = new ju.TreeMap;
  this.mSupportedModes = 0;
}
;
carcc.calculateTorsionExtended = function calculateTorsionExtended(mol, conformer, atom){
  var angle1, angle2, central, connAtom, i, i0, index_0, index1, index2, j, rearAtom, terminal, terminal1, terminal2;
  angle1 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  rearAtom = carcc.findRearAtoms(mol, atom);
  for (i0 = 0; i0 < 2; i0++) {
    if (atom[3 * i0] != -1) {
      central = 2 - i0;
      terminal = 3 - 3 * i0;
      index_0 = 0;
      for (j = 0; j < 3; j++) {
        connAtom = mol.getConnAtom_0(atom[central], j);
        if (connAtom != rearAtom[1 - i0] && mol.getAtomicNo_0(connAtom) != 1) {
          atom[terminal] = connAtom;
          if (isNotNull(conformer))
            angle1[index_0++] = conformer.calculateTorsion_0(atom);
          else 
            angle1[index_0++] = mol.calculateTorsion_0(atom);
        }
      }
      atom[terminal] = -1;
      return carcc.calculateVirtualTorsion(angle1);
    }
  }
  angle2 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  index1 = 0;
  for (i = 0; i < 3; i++) {
    terminal1 = mol.getConnAtom_0(atom[1], i);
    if (terminal1 != rearAtom[0] && mol.getAtomicNo_0(terminal1) != 1) {
      atom[0] = terminal1;
      index2 = 0;
      for (j = 0; j < 3; j++) {
        terminal2 = mol.getConnAtom_0(atom[2], j);
        if (terminal2 != rearAtom[1] && mol.getAtomicNo_0(terminal2) != 1) {
          atom[3] = terminal2;
          if (isNotNull(conformer))
            angle2[index2++] = conformer.calculateTorsion_0(atom);
          else 
            angle2[index2++] = mol.calculateTorsion_0(atom);
        }
      }
      angle1[index1++] = carcc.calculateVirtualTorsion(angle2);
    }
  }
  atom[0] = -1;
  atom[3] = -1;
  return carcc.calculateVirtualTorsion(angle1);
}
;
carcc.calculateTorsionExtended_0 = function calculateTorsionExtended_0(conformer, atom){
  carcc.$clinit_TorsionDB();
  if (atom[0] != -1 && atom[3] != -1)
    return conformer.calculateTorsion_0(atom);
  return carcc.calculateTorsionExtended(conformer.getMolecule_0(), conformer, atom);
}
;
carcc.calculateVirtualTorsion = function calculateVirtualTorsion(angle){
  var angleDif, meanAngle;
  meanAngle = (angle[1] + angle[0]) / 2;
  angleDif = $wnd.Math.abs(angle[1] - angle[0]);
  if (angleDif > 3.141592653589793)
    return meanAngle;
  return meanAngle < 0?meanAngle + 3.141592653589793:meanAngle - 3.141592653589793;
}
;
carcc.findRearAtoms = function findRearAtoms(mol, torsionAtom){
  var pathAtom, pathLength, rearAtom;
  rearAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  if (mol.getBond_0(torsionAtom[1], torsionAtom[2]) != -1) {
    rearAtom[0] = torsionAtom[2];
    rearAtom[1] = torsionAtom[1];
  }
   else {
    pathAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 15 + 1, 15, 1);
    pathLength = mol.getPath_0(pathAtom, torsionAtom[1], torsionAtom[2], 15, null);
    rearAtom[0] = pathAtom[1];
    rearAtom[1] = pathAtom[pathLength - 1];
  }
  return rearAtom;
}
;
carcc.findRotatableBonds = function findRotatableBonds(mol, skipAllRingBonds, isRotatableBond){
  carcc.$clinit_TorsionDB();
  var alkyneAtomCount, bond, bond0, bondHandled, centralAtom, connAtom, connBond, count, i, i0, j, rearAtom, relevantBond, startAtom, substituentSize0, substituentSize1;
  mol.ensureHelperArrays_0(7);
  if (jsEquals(isRotatableBond, null))
    isRotatableBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
  count = 0;
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    if (mol.getBondOrder_0(bond0) == 1 && !mol.isAromaticBond_0(bond0) && mol.getNonHydrogenNeighbourCount_0(mol.getBondAtom_0(0, bond0)) > 1 && mol.getNonHydrogenNeighbourCount_0(mol.getBondAtom_0(1, bond0)) > 1 && !(skipAllRingBonds && mol.isRingBond_0(bond0)) && !(mol.isSmallRingBond_0(bond0) && mol.getBondRingSize_0(bond0) <= 5)) {
      isRotatableBond[bond0] = true;
      count++;
    }
  }
  centralAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  rearAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  bondHandled = null;
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    if (isRotatableBond[bond] && (jsEquals(bondHandled, null) || !bondHandled[bond])) {
      alkyneAtomCount = 0;
      for (i0 = 0; i0 < 2; i0++) {
        centralAtom[i0] = mol.getBondAtom_0(i0, bond);
        rearAtom[i0] = mol.getBondAtom_0(1 - i0, bond);
        startAtom = rearAtom[i0];
        while (mol.getAtomPi_0(centralAtom[i0]) == 2 && mol.getNonHydrogenNeighbourCount_0(centralAtom[i0]) == 2 && mol.getAtomicNo_0(centralAtom[i0]) < 10) {
          for (j = 0; j < 2; j++) {
            connAtom = mol.getConnAtom_0(centralAtom[i0], j);
            if (connAtom != rearAtom[i0]) {
              connBond = mol.getConnBond_0(centralAtom[i0], j);
              if (isRotatableBond[connBond] && mol.getBondOrder_0(connBond) == 1) {
                isRotatableBond[connBond] = false;
                count--;
              }
              rearAtom[i0] = centralAtom[i0];
              centralAtom[i0] = connAtom;
              alkyneAtomCount++;
              break;
            }
          }
          if (centralAtom[i0] == startAtom) {
            alkyneAtomCount = 0;
            break;
          }
        }
      }
      if (alkyneAtomCount != 0) {
        isRotatableBond[bond] = false;
        count--;
        if (mol.getNonHydrogenNeighbourCount_0(centralAtom[0]) > 1 && mol.getNonHydrogenNeighbourCount_0(centralAtom[1]) > 1) {
          substituentSize0 = mol.getSubstituentSize_0(rearAtom[0], centralAtom[0]);
          substituentSize1 = mol.getSubstituentSize_0(rearAtom[1], centralAtom[1]);
          i = substituentSize0 < substituentSize1?0:1;
          relevantBond = mol.getBond_0(rearAtom[i], centralAtom[i]);
          if (jsEquals(bondHandled, null))
            bondHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
          bondHandled[relevantBond] = true;
          isRotatableBond[relevantBond] = true;
          count++;
        }
      }
    }
  }
  return count;
}
;
carcc.getSymmetryType = function getSymmetryType(torsionID){
  return jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '<') || jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '>')?0:jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '-') || jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '+')?1:jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '=')?3:2;
}
;
carcc.getTorsionFrequencies = function getTorsionFrequencies(torsionID){
  carcc.$clinit_TorsionDB();
  var ti;
  ti = carcc.sInstance.getTorsionInfo(torsionID);
  return isNull(ti)?null:ti.get360DegreeFrequencies();
}
;
carcc.getTorsionID = function getTorsionID(mol, bond, torsionAtom, detail){
  carcc.$clinit_TorsionDB();
  if (isNull(detail))
    detail = new carcc.TorsionDetail;
  detail.classify(mol, bond);
  if (jsNotEquals(torsionAtom, null)) {
    torsionAtom[0] = detail.getReferenceAtom(0);
    torsionAtom[1] = detail.getCentralAtom(0);
    torsionAtom[2] = detail.getCentralAtom(1);
    torsionAtom[3] = detail.getReferenceAtom(1);
  }
  return detail.getID();
}
;
carcc.getTorsionRanges = function getTorsionRanges(torsionID){
  carcc.$clinit_TorsionDB();
  var ti;
  ti = carcc.sInstance.getTorsionInfo(torsionID);
  return isNull(ti)?null:ti.get360DegreeRanges();
}
;
carcc.getTorsions = function getTorsions(torsionID){
  carcc.$clinit_TorsionDB();
  var ti;
  ti = carcc.sInstance.getTorsionInfo(torsionID);
  return isNull(ti)?null:ti.get360DegreeAngles();
}
;
carcc.initialize_0 = function initialize_0(mode){
  carcc.$clinit_TorsionDB();
  carcc.initialize_1(mode, 15);
}
;
carcc.initialize_1 = function initialize_1(mode, mergeSpan){
  var newMode;
  {
    cggl.Lcom_actelion_research_chem_conf_TorsionDB_2_classLit;
    if (isNull(carcc.sInstance))
      carcc.sInstance = new carcc.TorsionDB;
    if (mode == 1 && (carcc.sInstance.mSupportedModes & 1) != 0 && carcc.sInstance.mMergeSpan != mergeSpan)
      (jl.$clinit_System() , jl.out_0).println_0('WARNING: TorsionDB already initialized in ANGLE mode with different merge span.');
    newMode = mode & ~carcc.sInstance.mSupportedModes;
    if (newMode != 0) {
      carcc.sInstance.init_3(newMode);
      if (newMode == 1 && mergeSpan != 0)
        carcc.sInstance.mergeTorsions(mergeSpan);
    }
  }
}
;
carcc.isInverted_0 = function isInverted_0(torsionID){
  return jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '<') || jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '-');
}
;
carcc.normalizeID = function normalizeID(torsionID){
  return jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '<')?jl.substring_II_Ljava_lang_String___devirtual$(torsionID, 0, jl.length__I__devirtual$_0(torsionID) - 1) + '>':jl.endsWith_Ljava_lang_String__Z__devirtual$(torsionID, '-')?jl.substring_II_Ljava_lang_String___devirtual$(torsionID, 0, jl.length__I__devirtual$_0(torsionID) - 1) + '+':torsionID;
}
;
defineClass(647, 1, {1:1}, carcc.TorsionDB);
_.$init_59 = function $init_59(){
}
;
_.getTorsionInfo = function getTorsionInfo(torsionID){
  var ti;
  if (jsEquals(torsionID, null))
    return null;
  ti = castTo(this.mTreeMap.get(torsionID), 157);
  if (isNotNull(ti))
    return ti;
  if (carcc.isInverted_0(torsionID)) {
    ti = castTo(this.mTreeMap.get(carcc.normalizeID(torsionID)), 157);
    if (isNotNull(ti)) {
      ti = new carcc.TorsionInfo_0(ti);
      this.mTreeMap.put(torsionID, ti);
      return ti;
    }
  }
  return null;
}
;
_.init_3 = function init_3(mode){
  var angle, ar, binSize, br, fr, frequency, i, index_0, range, rr, torsionInfo, tr, trLine, type_0;
  this.mSupportedModes |= mode;
  tr = carcc.gettorsionIDData();
  ar = (mode & 1) == 0?null:carcc.gettorsionAngleData();
  rr = (mode & 1) == 0?null:carcc.gettorsionRangeData();
  fr = (mode & 1) == 0?null:carcc.gettorsionFrequencyData();
  br = (mode & 2) == 0?null:carcc.gettorsionBinsData();
  for (trLine = 0; trLine < tr.length; trLine++) {
    type_0 = tr[trLine];
    torsionInfo = castTo(this.mTreeMap.get(type_0), 157);
    if (isNull(torsionInfo)) {
      torsionInfo = new carcc.TorsionInfo(carcc.getSymmetryType(type_0));
      this.mTreeMap.put(type_0, torsionInfo);
    }
    if (jsNotEquals(ar, null)) {
      angle = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(ar[trLine], ',');
      torsionInfo.angle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, angle.length, 15, 1);
      for (i = 0; i < angle.length; i++)
        torsionInfo.angle[i] = jl.parseShort(angle[i]);
    }
    if (jsNotEquals(rr, null)) {
      range = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(rr[trLine], ',');
      torsionInfo.range = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [range.length, 2], 2);
      for (i = 0; i < range.length; i++) {
        index_0 = jl.indexOf_II_I__devirtual$(range[i], 45, 1);
        torsionInfo.range[i][0] = jl.parseShort(jl.substring_II_Ljava_lang_String___devirtual$(range[i], 0, index_0));
        torsionInfo.range[i][1] = jl.parseShort(jl.substring_I_Ljava_lang_String___devirtual$(range[i], index_0 + 1));
      }
    }
    if (jsNotEquals(fr, null)) {
      frequency = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(fr[trLine], ',');
      torsionInfo.frequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, frequency.length, 15, 1);
      for (i = 0; i < frequency.length; i++)
        torsionInfo.frequency[i] = jl.parseByte(frequency[i]);
    }
    if (jsNotEquals(br, null)) {
      binSize = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(br[trLine], ',');
      torsionInfo.binSize = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, binSize.length, 15, 1);
      for (i = 0; i < binSize.length; i++)
        torsionInfo.binSize[i] = jl.parseByte(binSize[i]);
    }
  }
}
;
_.mergeTorsions = function mergeTorsions(mergeSpan){
  var ti, ti$iterator;
  this.mMergeSpan = mergeSpan;
  for (ti$iterator = this.mTreeMap.values().iterator(); ti$iterator.hasNext_0();) {
    ti = castTo(ti$iterator.next_3(), 157);
    ti.mergeTorsions_0(mergeSpan);
  }
}
;
_.mMergeSpan = 0;
_.mSupportedModes = 0;
carcc.DATABASE_COD = 'cod/';
carcc.DATABASE_CSD = 'csd/';
carcc.DEFAULT_MERGE_SPAN = 15;
carcc.MAX_SP_CHAIN_LENGTH = 15;
carcc.MODE_ANGLES = 1;
carcc.MODE_BINS = 2;
carcc.TORSION_GREEN = 0;
carcc.TORSION_NOT_FOUND = 0;
carcc.TORSION_RED = 2;
carcc.TORSION_YELLOW = 1;
carcc.cBasePath = '/resources/';
carcc.cTorsionAngleFile = 'torsionAngle.txt';
carcc.cTorsionBinsFile = 'torsionBins.txt';
carcc.cTorsionFrequencyFile = 'torsionFrequency.txt';
carcc.cTorsionIDFile = 'torsionID.txt';
carcc.cTorsionRangeFile = 'torsionRange.txt';
cggl.Lcom_actelion_research_chem_conf_TorsionDB_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDB', 647, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDBData = function $clinit_TorsionDBData(){
  carcc.$clinit_TorsionDBData = emptyMethod;
  jl.$clinit_Object();
}
;
carcc.getbondLengthDataData = function getbondLengthDataData(){
  carcc.$clinit_TorsionDBData();
  var data_0, result;
  data_0 = '2312\n4099\t2.403\t0.282\t466\n4100\t1.407\t0.2\t28\n4103\t1.561\t0.023\t5\n4104\t1.42\t0.092\t491\n4105\t1.313\t0.149\t32\n4107\t2.677\t0.401\t190\n4108\t2.118\t0.244\t325\n4109\t1.978\t0.26\t968\n4113\t1.819\t0.033\t4\n4115\t3.194\t0.482\t381\n4116\t2.771\t0.32\t198\n4117\t2.398\t0.235\t145\n4118\t2.317\t0.22\t208\n4119\t2.034\t0.212\t34\n4120\t2.033\t0.286\t103\n4121\t1.959\t0.264\t122\n4122\t1.918\t0.267\t664\n4123\t1.893\t0.257\t185\n4124\t1.877\t0.218\t259\n4125\t2.05\t0.257\t556\n4126\t2.012\t0.239\t129\n4127\t1.979\t0.292\t196\n4133\t3.305\t0.429\t34\n4134\t2.593\t0.367\t83\n4135\t2.74\t0.174\t706\n4136\t2.462\t0.196\t611\n4137\t2.207\t0.264\t78\n4138\t2.16\t0.225\t359\n4140\t2.004\t0.188\t2204\n4141\t1.916\t0.256\t610\n4142\t1.95\t0.234\t126\n4143\t2.3\t0.213\t81\n4144\t2.187\t0.116\t6\n4145\t2.103\t0.153\t21\n4146\t2.031\t0.308\t83\n4147\t1.752\t0.443\t21\n4151\t3.49\t0.4\t83\n4152\t3.017\t0.331\t40\n4153\t2.932\t0.276\t176\n4154\t2.39\t0.34\t24\n4155\t3.124\t0.377\t16\n4156\t2.907\t0.232\t198\n4158\t2.857\t0.237\t142\n4159\t2.687\t0.244\t49\n4160\t2.787\t0.359\t29\n4161\t2.785\t0.306\t37\n4162\t2.623\t0.298\t175\n4163\t2.812\t0.154\t70\n4164\t2.745\t0.281\t100\n4165\t2.719\t0.184\t37\n4166\t2.683\t0.361\t231\n4167\t2.655\t0.253\t198\n4168\t2.546\t0.208\t37\n4169\t2.259\t0.231\t190\n4170\t2.043\t0.289\t251\n4171\t2.001\t0.221\t391\n4172\t1.984\t0.164\t885\n4173\t1.904\t0.228\t1074\n4174\t2.036\t0.224\t250\n4175\t1.955\t0.184\t6\n4176\t2.35\t0.15\t12\n4177\t2.367\t0.216\t7\n4178\t2.47\t0.186\t11\n4179\t0.95\t-1.0\t1\n4186\t2.88\t0.309\t39\n4188\t2.804\t0.289\t136\n4189\t2.172\t0.082\t12\n4190\t2.321\t0.0\t2\n4359\t1.503\t0.106\t24\n4360\t1.425\t0.052\t40\n12291\t2.861\t0.27\t1069\n12292\t2.773\t0.086\t4\n12293\t2.507\t0.251\t27\n12294\t2.769\t0.373\t370\n12299\t3.1\t0.221\t116\n12300\t2.844\t0.146\t9\n12301\t3.636\t0.002\t3\n12302\t2.779\t0.318\t189\n12307\t3.639\t0.518\t25\n12308\t3.205\t0.245\t16\n12317\t3.036\t0.064\t4\n12318\t2.88\t-1.0\t1\n12319\t2.615\t0.864\t3\n12320\t2.857\t0.129\t247\n12325\t3.557\t0.41\t18\n12326\t3.273\t0.208\t23\n12330\t3.496\t0.025\t2\n12333\t3.012\t0.276\t2\n12334\t2.679\t0.0\t2\n12338\t2.886\t0.196\t80\n12339\t2.871\t0.221\t18\n12343\t3.628\t0.266\t9\n12344\t3.37\t0.145\t35\n12346\t2.859\t0.0\t4\n12352\t2.722\t0.017\t4\n12354\t3.317\t0.016\t4\n12355\t2.714\t0.006\t2\n12357\t2.703\t0.005\t2\n12365\t2.615\t-1.0\t1\n12367\t2.729\t0.0\t2\n12368\t2.841\t0.0\t2\n12369\t2.889\t0.082\t5\n12370\t2.913\t0.126\t64\n12549\t3.003\t0.175\t18\n12550\t2.797\t0.21\t1156\n12805\t2.63\t0.0\t2\n12806\t2.939\t0.243\t85\n16388\t2.29\t0.104\t57\n16389\t2.022\t0.097\t6\n16390\t2.097\t0.127\t21\n16391\t1.771\t0.395\t281\n16392\t1.648\t0.242\t634\n16393\t1.567\t0.555\t264\n16395\t2.926\t0.104\t14\n16397\t2.368\t-1.0\t1\n16398\t3.269\t-1.0\t1\n16399\t2.211\t0.15\t6\n16400\t2.1\t-1.0\t1\n16401\t2.065\t0.622\t37\n16403\t3.355\t0.087\t11\n16404\t2.9\t0.136\t2\n16416\t2.399\t0.154\t3\n16417\t2.06\t0.0\t2\n16418\t2.195\t-1.0\t1\n16419\t2.167\t0.95\t16\n16421\t3.378\t-1.0\t1\n16422\t2.886\t0.031\t2\n16429\t2.375\t0.124\t6\n16435\t2.635\t-1.0\t1\n16436\t2.399\t-1.0\t1\n16437\t2.417\t0.96\t23\n16439\t3.716\t0.078\t2\n16442\t3.052\t0.0\t4\n16463\t2.64\t-1.0\t1\n16466\t2.23\t-1.0\t1\n16474\t3.061\t0.0\t4\n16476\t3.017\t0.004\t8\n16645\t1.954\t-1.0\t1\n16646\t2.276\t0.281\t56\n16647\t1.966\t0.14\t51\n16648\t1.843\t0.124\t41\n16902\t1.739\t0.003\t2\n16903\t2.003\t-1.0\t1\n20491\t2.681\t-1.0\t1\n20492\t2.402\t0.287\t12\n20493\t2.373\t0.17\t6\n20499\t3.054\t0.395\t11\n20500\t3.076\t0.081\t2\n20501\t2.3\t1.168\t20\n20502\t2.221\t0.057\t3\n20503\t1.964\t-1.0\t1\n20504\t2.515\t0.236\t21\n20505\t1.97\t0.231\t70\n20506\t2.056\t0.352\t138\n20507\t2.553\t0.302\t81\n20508\t2.489\t0.321\t24\n20509\t2.215\t0.363\t36\n20510\t2.786\t0.026\t6\n20511\t2.418\t0.106\t10\n20517\t3.193\t0.063\t3\n20519\t2.598\t0.187\t9\n20520\t2.376\t0.309\t9\n20522\t2.708\t0.265\t154\n20524\t2.526\t0.319\t123\n20525\t2.262\t0.289\t122\n20526\t2.502\t0.287\t18\n20527\t2.365\t0.284\t11\n20528\t2.966\t0.038\t6\n20529\t2.584\t0.061\t7\n20530\t2.771\t0.387\t5\n20531\t1.29\t0.001\t12\n20535\t3.368\t0.154\t5\n20536\t3.023\t0.074\t6\n20537\t2.913\t0.0\t2\n20538\t3.021\t0.331\t2\n20540\t2.651\t0.201\t5\n20543\t2.735\t0.344\t5\n20546\t2.531\t0.277\t7\n20549\t3.267\t-1.0\t1\n20550\t2.329\t0.34\t7\n20552\t2.499\t0.02\t6\n20553\t2.703\t0.218\t20\n20554\t2.693\t0.292\t46\n20555\t2.639\t0.27\t40\n20556\t2.066\t0.059\t39\n20557\t2.599\t0.324\t183\n20558\t2.048\t0.149\t134\n20559\t2.327\t0.386\t34\n20560\t2.179\t-1.0\t1\n20561\t2.619\t-1.0\t1\n20562\t2.967\t-1.0\t1\n20570\t2.665\t0.007\t2\n20572\t2.63\t0.19\t9\n20742\t1.87\t0.155\t40\n24587\t3.525\t0.393\t28\n24588\t2.763\t0.313\t380\n24589\t2.462\t0.308\t5373\n24595\t4.077\t0.356\t19\n24596\t3.17\t0.362\t45\n24597\t2.829\t0.525\t432\n24598\t2.656\t0.164\t627\n24599\t2.654\t0.158\t57\n24600\t2.57\t0.26\t309\n24601\t2.625\t0.288\t208\n24602\t2.45\t0.223\t1004\n24603\t2.182\t0.257\t1071\n24604\t2.355\t0.185\t1159\n24605\t2.384\t0.162\t130\n24606\t2.479\t0.188\t1375\n24607\t2.547\t0.23\t805\n24613\t3.789\t0.188\t2\n24614\t3.484\t0.291\t8\n24615\t3.089\t0.34\t499\n24616\t2.809\t0.177\t912\n24617\t2.665\t0.147\t106\n24618\t2.632\t0.3\t598\n24620\t2.419\t0.207\t1127\n24621\t2.466\t0.217\t582\n24622\t2.456\t0.168\t1672\n24623\t2.573\t0.135\t12\n24624\t2.753\t0.503\t34\n24625\t2.695\t0.487\t478\n24626\t2.644\t0.444\t4321\n24627\t2.655\t0.961\t518\n24631\t3.712\t0.709\t3\n24632\t3.745\t0.575\t6\n24633\t3.382\t0.306\t128\n24634\t3.417\t0.336\t41\n24635\t3.236\t0.278\t27\n24636\t3.365\t0.272\t72\n24638\t3.236\t0.316\t52\n24639\t3.097\t0.0\t2\n24640\t2.718\t0.258\t39\n24641\t3.353\t0.103\t6\n24642\t3.087\t0.178\t51\n24643\t2.988\t0.348\t31\n24644\t2.995\t0.182\t58\n24645\t3.221\t0.798\t58\n24646\t3.104\t0.353\t86\n24647\t3.019\t0.515\t320\n24648\t2.735\t0.176\t341\n24649\t2.703\t0.204\t299\n24650\t2.595\t0.331\t829\n24651\t2.536\t0.58\t227\n24652\t2.472\t0.25\t206\n24653\t2.534\t0.168\t933\n24654\t2.491\t0.326\t1889\n24655\t2.445\t0.168\t254\n24656\t2.51\t0.162\t95\n24657\t3.004\t0.801\t27\n24658\t2.961\t0.516\t71\n24659\t3.105\t0.444\t106\n24666\t3.114\t0.326\t123\n24668\t3.098\t0.303\t230\n28685\t2.353\t0.307\t3006\n28693\t2.684\t0.241\t703\n28694\t2.452\t0.242\t3992\n28695\t2.409\t0.319\t1209\n28696\t2.464\t0.534\t2219\n28697\t2.577\t0.289\t2590\n28698\t2.456\t0.2\t6911\n28699\t2.41\t0.36\t7053\n28700\t2.487\t0.231\t7446\n28701\t2.406\t0.194\t9772\n28702\t2.479\t0.227\t5502\n28703\t2.471\t0.309\t929\n28711\t2.921\t0.239\t1714\n28712\t2.679\t0.232\t2798\n28713\t2.442\t0.272\t911\n28714\t2.445\t0.293\t2412\n28716\t2.475\t0.298\t2904\n28717\t2.428\t0.335\t1207\n28718\t2.458\t0.222\t3289\n28719\t2.487\t0.247\t1033\n28720\t2.81\t0.231\t768\n28721\t2.785\t0.35\t616\n28722\t2.606\t0.37\t1703\n28723\t2.599\t0.29\t531\n28729\t3.125\t0.329\t626\n28730\t3.082\t0.337\t728\n28731\t3.179\t0.249\t153\n28732\t3.022\t0.208\t458\n28734\t3.032\t0.245\t890\n28735\t3.194\t0.258\t616\n28736\t3.148\t0.29\t455\n28737\t3.124\t0.266\t301\n28738\t3.028\t0.263\t602\n28739\t2.987\t0.306\t159\n28740\t2.919\t0.28\t496\n28741\t3.182\t0.365\t119\n28742\t2.892\t0.229\t1179\n28743\t2.821\t0.212\t549\n28744\t2.607\t0.225\t683\n28745\t2.503\t0.227\t1194\n28746\t2.395\t0.326\t1012\n28747\t2.447\t0.267\t941\n28748\t2.383\t0.233\t326\n28749\t2.511\t0.279\t970\n28750\t2.457\t0.24\t1884\n28751\t2.393\t0.172\t533\n28752\t2.849\t0.285\t194\n28753\t2.973\t0.272\t62\n28754\t2.876\t0.236\t326\n28755\t2.753\t0.232\t424\n28762\t3.088\t0.249\t588\n28764\t2.972\t0.34\t2780\n28765\t3.016\t0.335\t10\n28766\t3.297\t0.204\t7\n32781\t2.145\t0.448\t7124\n32789\t2.625\t0.845\t799\n32790\t2.338\t0.282\t13095\n32791\t2.352\t0.77\t18035\n32792\t2.299\t0.427\t5228\n32793\t2.387\t0.292\t15567\n32794\t2.358\t0.225\t12153\n32795\t2.38\t0.29\t13623\n32796\t2.421\t0.301\t14996\n32797\t2.272\t0.223\t19019\n32798\t2.378\t0.357\t12982\n32799\t2.317\t0.208\t831\n32807\t2.796\t0.315\t3153\n32808\t2.497\t0.249\t4631\n32809\t2.375\t0.365\t1523\n32810\t2.347\t0.467\t31965\n32812\t2.419\t0.158\t3311\n32813\t2.436\t0.193\t2109\n32814\t2.4\t0.154\t2649\n32815\t2.661\t0.256\t865\n32816\t2.694\t0.218\t2847\n32817\t2.616\t0.276\t949\n32818\t2.579\t0.438\t4702\n32819\t2.309\t0.553\t1993\n32825\t2.994\t0.343\t2113\n32826\t2.856\t0.3\t2621\n32827\t2.93\t0.228\t1218\n32828\t2.905\t0.207\t2518\n32830\t2.869\t0.237\t2353\n32831\t2.827\t0.209\t3697\n32832\t2.834\t0.197\t5222\n32833\t2.78\t0.177\t4383\n32834\t2.738\t0.205\t8482\n32835\t2.747\t0.193\t1707\n32836\t2.742\t0.193\t2196\n32837\t2.798\t0.21\t502\n32838\t2.734\t0.235\t2716\n32839\t2.767\t0.212\t885\n32840\t2.498\t0.29\t774\n32841\t2.373\t0.261\t1221\n32842\t2.285\t0.417\t9618\n32843\t2.218\t0.348\t3304\n32844\t2.411\t0.2\t303\n32845\t2.462\t0.304\t1297\n32846\t2.393\t0.203\t1953\n32847\t2.305\t0.24\t286\n32848\t2.736\t0.309\t162\n32849\t2.822\t0.336\t202\n32850\t2.624\t0.233\t1404\n32851\t2.579\t0.268\t1906\n32858\t2.759\t0.291\t759\n32860\t2.611\t0.412\t7083\n32861\t2.503\t0.425\t287\n32862\t2.802\t0.399\t255\n32863\t2.837\t0.483\t20\n32864\t3.097\t0.448\t5\n32865\t2.94\t0.02\t3\n32866\t2.916\t0.021\t3\n36877\t1.811\t0.461\t1163\n36885\t2.022\t0.295\t129\n36886\t2.262\t0.492\t1106\n36887\t2.576\t0.889\t536\n36888\t1.937\t0.267\t474\n36889\t2.093\t0.73\t296\n36890\t1.929\t0.743\t373\n36891\t2.283\t0.257\t113\n36892\t2.221\t0.196\t116\n36893\t2.345\t0.817\t110\n36894\t2.065\t0.336\t75\n36895\t2.412\t0.358\t76\n36903\t2.125\t0.259\t44\n36904\t2.154\t1.055\t667\n36905\t2.12\t0.459\t502\n36906\t2.031\t0.453\t512\n36908\t2.395\t0.388\t43\n36909\t2.339\t0.338\t54\n36910\t2.361\t0.307\t101\n36911\t2.57\t0.191\t9\n36912\t2.427\t0.207\t26\n36913\t2.059\t1.008\t121\n36914\t2.126\t0.626\t419\n36915\t2.193\t0.262\t8674\n36921\t2.731\t0.286\t10\n36922\t2.995\t1.207\t51\n36923\t2.406\t0.044\t8\n36924\t2.742\t0.246\t33\n36926\t2.795\t0.182\t52\n36927\t2.799\t0.303\t24\n36928\t2.454\t0.018\t4\n36929\t1.96\t0.0\t6\n36930\t2.434\t0.192\t19\n36931\t2.857\t-1.0\t1\n36932\t2.747\t0.211\t25\n36934\t2.687\t0.139\t19\n36935\t2.806\t0.003\t4\n36936\t2.107\t0.444\t90\n36937\t2.149\t0.225\t250\n36938\t1.882\t0.247\t232\n36939\t2.0\t0.93\t274\n36940\t2.276\t0.144\t56\n36941\t2.293\t1.188\t69\n36942\t2.356\t0.364\t53\n36943\t1.893\t0.555\t149\n36944\t2.373\t0.0\t2\n36945\t2.015\t0.261\t45\n36946\t2.333\t0.203\t37\n36947\t2.152\t0.196\t94\n36954\t2.666\t0.268\t30\n36955\t2.205\t0.007\t16\n36956\t2.285\t0.379\t153\n36957\t2.26\t0.017\t10\n45067\t3.369\t0.477\t389\n45068\t3.242\t-1.0\t1\n45069\t3.524\t0.425\t2\n45070\t3.558\t0.0\t2\n45075\t3.592\t0.346\t36\n45076\t3.383\t0.133\t22\n45081\t3.221\t0.182\t3\n45082\t2.923\t0.336\t4\n45083\t3.382\t-1.0\t1\n45084\t2.961\t0.097\t3\n45087\t3.136\t-1.0\t1\n45088\t3.161\t0.174\t9\n45093\t3.645\t0.249\t17\n45094\t3.529\t0.167\t10\n45101\t3.618\t-1.0\t1\n45106\t3.243\t0.311\t72\n45107\t3.33\t0.219\t17\n45111\t3.704\t0.248\t22\n45112\t3.585\t0.155\t9\n45134\t3.136\t-1.0\t1\n45136\t3.234\t0.09\t7\n45137\t3.405\t0.105\t12\n45138\t3.441\t0.118\t15\n45139\t3.281\t0.068\t7\n45317\t3.245\t0.017\t2\n45318\t3.261\t0.178\t294\n45573\t2.685\t-1.0\t1\n45574\t3.187\t0.261\t35\n49164\t3.052\t0.123\t490\n49165\t3.401\t-1.0\t1\n49166\t2.887\t0.569\t39\n49171\t4.275\t0.055\t2\n49172\t3.412\t0.019\t8\n49177\t3.408\t-1.0\t1\n49178\t3.072\t0.063\t8\n49181\t3.334\t0.086\t3\n49182\t3.217\t0.061\t2\n49183\t2.836\t0.772\t13\n49184\t2.807\t0.438\t17\n49190\t3.648\t0.307\t28\n49191\t2.187\t0.0\t6\n49194\t2.466\t0.0\t2\n49197\t2.818\t0.099\t91\n49202\t2.927\t0.036\t9\n49203\t2.862\t0.432\t19\n49207\t3.807\t0.0\t2\n49208\t3.659\t0.045\t20\n49209\t3.53\t0.075\t16\n49210\t3.447\t0.003\t12\n49211\t3.506\t0.0\t3\n49212\t3.54\t0.0\t3\n49214\t3.463\t0.0\t3\n49215\t3.48\t0.014\t8\n49216\t3.364\t0.0\t3\n49221\t3.144\t0.0\t12\n49229\t2.7\t0.086\t48\n49230\t3.087\t0.019\t2\n49233\t3.145\t0.004\t2\n49413\t2.826\t0.154\t5\n49414\t2.811\t0.216\t411\n49670\t2.681\t0.238\t49\n53261\t3.147\t0.471\t69\n53262\t3.263\t0.176\t31\n53263\t3.143\t0.346\t218\n53264\t2.983\t0.385\t264\n53265\t2.601\t0.322\t2017\n53268\t3.669\t-1.0\t1\n53272\t2.557\t-1.0\t1\n53273\t2.309\t-1.0\t1\n53274\t2.908\t0.179\t18\n53275\t2.828\t0.234\t10\n53276\t2.655\t0.245\t6\n53277\t2.352\t0.06\t13\n53278\t3.3\t0.187\t3\n53279\t3.414\t0.37\t3\n53280\t2.499\t0.185\t12\n53281\t2.448\t0.051\t41\n53282\t2.875\t0.469\t72\n53283\t2.741\t0.288\t381\n53286\t3.495\t0.045\t15\n53292\t2.999\t-1.0\t1\n53293\t3.023\t0.354\t19\n53294\t2.951\t0.089\t21\n53295\t3.08\t-1.0\t1\n53297\t3.715\t-1.0\t1\n53298\t3.418\t0.0\t2\n53299\t2.655\t0.502\t19\n53300\t2.915\t0.495\t30\n53301\t3.049\t0.382\t137\n53303\t2.804\t1.394\t2\n53304\t3.582\t0.06\t4\n53305\t3.584\t0.347\t3\n53308\t3.56\t0.086\t2\n53322\t3.218\t0.048\t2\n53325\t3.468\t0.243\t2\n53326\t3.202\t0.139\t4\n53331\t3.74\t0.255\t4\n53340\t4.01\t0.006\t2\n53509\t2.605\t0.31\t8\n53510\t2.407\t0.249\t1700\n53511\t2.374\t0.163\t1982\n53512\t2.216\t0.23\t533\n53519\t2.935\t0.196\t5\n53520\t2.843\t0.186\t40\n53766\t2.468\t0.199\t96\n53767\t2.448\t0.135\t44\n53768\t1.978\t0.199\t4\n57363\t4.548\t0.464\t19\n57364\t3.083\t0.417\t13\n57366\t3.671\t0.019\t4\n57367\t3.246\t0.035\t4\n57368\t2.795\t0.193\t8\n57369\t2.811\t0.292\t27\n57370\t2.847\t0.192\t233\n57371\t2.715\t0.262\t77\n57372\t2.749\t0.228\t147\n57373\t2.884\t0.306\t43\n57374\t3.288\t0.273\t42\n57375\t3.561\t0.36\t4\n57382\t3.347\t0.097\t2\n57384\t3.775\t0.176\t18\n57385\t3.436\t0.115\t26\n57386\t3.224\t0.255\t49\n57388\t2.956\t0.338\t151\n57389\t2.78\t0.227\t106\n57390\t2.921\t0.275\t97\n57391\t3.357\t0.302\t20\n57393\t3.19\t0.085\t14\n57394\t3.662\t0.527\t210\n57395\t3.917\t0.191\t58\n57399\t3.91\t0.0\t4\n57400\t3.327\t0.062\t5\n57402\t3.01\t0.585\t8\n57406\t4.511\t0.25\t17\n57407\t4.503\t0.08\t6\n57409\t3.926\t0.003\t2\n57411\t3.905\t0.012\t2\n57414\t4.362\t0.205\t19\n57416\t3.87\t0.205\t13\n57417\t3.437\t0.24\t5\n57418\t3.085\t0.21\t66\n57419\t2.96\t0.12\t14\n57420\t3.028\t0.125\t7\n57421\t2.797\t0.286\t150\n57422\t2.978\t0.215\t175\n57423\t2.761\t0.465\t12\n57424\t3.53\t0.211\t22\n57426\t3.874\t0.316\t17\n57427\t4.031\t0.321\t9\n61461\t3.38\t0.299\t100\n61462\t3.21\t0.369\t276\n61463\t3.131\t0.207\t110\n61464\t2.873\t0.244\t730\n61465\t2.696\t0.32\t774\n61466\t2.697\t0.243\t4802\n61467\t2.679\t0.235\t3056\n61468\t2.676\t0.196\t4702\n61469\t2.64\t0.179\t5253\n61470\t2.912\t0.244\t119\n61471\t3.023\t0.242\t152\n61479\t3.617\t0.27\t57\n61480\t3.41\t0.235\t240\n61481\t3.284\t0.297\t129\n61482\t3.002\t0.261\t2058\n61484\t2.758\t0.203\t6616\n61485\t2.714\t0.205\t4052\n61486\t2.713\t0.193\t6710\n61487\t2.863\t0.16\t1964\n61488\t3.199\t0.271\t42\n61489\t3.285\t0.255\t93\n61490\t3.243\t0.31\t221\n61491\t3.183\t0.277\t77\n61497\t3.201\t0.305\t27\n61498\t2.934\t0.476\t9\n61500\t3.451\t0.1\t14\n61502\t3.794\t0.117\t26\n61506\t3.579\t0.083\t13\n61507\t3.584\t0.109\t8\n61508\t3.774\t0.0\t2\n61510\t3.577\t0.217\t22\n61511\t3.739\t0.336\t7\n61512\t3.408\t0.222\t72\n61513\t3.244\t0.257\t147\n61514\t3.003\t0.256\t1665\n61515\t2.906\t0.239\t1623\n61516\t2.798\t0.241\t1057\n61517\t2.754\t0.215\t2863\n61518\t2.714\t0.201\t6668\n61519\t2.668\t0.172\t4216\n61520\t2.879\t0.203\t76\n61521\t3.471\t0.204\t33\n61522\t3.487\t0.164\t39\n61523\t3.141\t0.234\t30\n61530\t3.726\t0.298\t60\n61532\t3.891\t0.328\t80\n65557\t3.412\t0.368\t35\n65558\t2.901\t0.267\t387\n65559\t2.852\t0.348\t489\n65560\t2.881\t0.289\t268\n65561\t2.726\t0.281\t883\n65562\t2.718\t0.226\t7921\n65563\t2.724\t0.272\t1489\n65564\t2.606\t0.234\t5975\n65565\t2.755\t0.225\t5038\n65566\t2.788\t0.225\t1360\n65567\t2.767\t0.214\t227\n65575\t3.418\t0.184\t159\n65576\t3.376\t0.277\t123\n65577\t2.954\t0.528\t373\n65578\t2.911\t0.288\t3355\n65580\t2.816\t0.192\t1907\n65581\t2.839\t0.173\t765\n65582\t2.775\t0.192\t2485\n65583\t3.093\t0.232\t4438\n65584\t3.087\t0.238\t609\n65585\t3.111\t0.393\t484\n65586\t2.949\t0.477\t1247\n65587\t2.995\t0.415\t696\n65593\t3.611\t0.276\t65\n65594\t3.5\t0.164\t59\n65595\t3.551\t0.145\t18\n65596\t3.459\t0.169\t45\n65598\t3.453\t0.18\t175\n65599\t3.683\t0.232\t44\n65600\t3.412\t0.05\t10\n65601\t3.114\t0.282\t6\n65602\t3.516\t0.333\t73\n65603\t3.018\t0.572\t5\n65604\t3.488\t0.196\t81\n65605\t3.266\t0.272\t10\n65606\t3.254\t0.188\t179\n65607\t3.336\t0.194\t34\n65608\t3.554\t0.326\t21\n65609\t2.461\t0.31\t329\n65610\t2.919\t0.288\t2082\n65611\t2.8\t0.267\t1996\n65612\t2.475\t0.252\t240\n65613\t2.833\t0.153\t655\n65614\t2.73\t0.196\t2208\n65615\t2.776\t0.277\t3697\n65616\t2.944\t0.23\t538\n65617\t3.031\t0.277\t17\n65618\t3.147\t0.26\t222\n65619\t3.099\t0.284\t350\n65626\t3.319\t0.35\t170\n65628\t3.382\t0.265\t290\n65629\t3.399\t0.077\t8\n65630\t2.931\t0.387\t17\n65631\t3.438\t0.046\t3\n65632\t3.441\t0.047\t3\n69653\t3.008\t0.308\t233\n69654\t2.799\t0.246\t2597\n69655\t2.789\t0.215\t490\n69656\t2.8\t0.199\t1394\n69657\t2.875\t0.267\t1182\n69658\t2.712\t0.238\t3474\n69659\t2.694\t0.227\t2713\n69660\t2.758\t0.28\t2082\n69661\t2.701\t0.25\t5780\n69662\t2.642\t0.425\t3822\n69663\t2.661\t0.254\t1485\n69671\t3.218\t0.274\t409\n69672\t2.991\t0.248\t1900\n69673\t2.903\t0.356\t1449\n69674\t2.907\t0.475\t2267\n69676\t2.885\t0.203\t5377\n69677\t2.863\t0.235\t2604\n69678\t2.776\t0.213\t6900\n69679\t3.032\t0.245\t617\n69680\t2.974\t0.221\t1026\n69681\t2.957\t0.377\t932\n69682\t2.928\t0.391\t2452\n69683\t2.872\t0.46\t1745\n69689\t3.393\t0.345\t120\n69690\t3.542\t0.471\t133\n69691\t3.384\t0.328\t54\n69692\t3.319\t0.289\t122\n69694\t3.354\t0.248\t151\n69695\t3.179\t0.349\t113\n69696\t3.251\t0.372\t116\n69697\t3.069\t0.3\t85\n69698\t3.114\t0.336\t295\n69699\t3.273\t0.344\t35\n69700\t3.214\t0.336\t160\n69701\t2.947\t0.43\t25\n69702\t3.224\t0.207\t183\n69703\t3.182\t0.198\t73\n69704\t2.972\t0.302\t357\n69705\t2.911\t0.327\t1000\n69706\t2.885\t0.369\t1787\n69707\t2.801\t0.257\t2221\n69708\t2.851\t0.255\t681\n69709\t2.879\t0.222\t2186\n69710\t2.757\t0.265\t4336\n69711\t2.675\t0.201\t2687\n69712\t2.804\t0.27\t1229\n69713\t2.554\t0.473\t192\n69714\t3.224\t0.457\t625\n69715\t3.107\t0.371\t1402\n69722\t3.417\t0.306\t157\n69723\t2.64\t0.0\t4\n69724\t3.21\t0.343\t893\n69725\t3.181\t0.284\t122\n69726\t3.088\t0.296\t154\n69727\t2.915\t-1.0\t1\n69728\t2.915\t-1.0\t1\n69729\t2.465\t0.0\t6\n77843\t3.904\t0.444\t476\n77844\t3.931\t0.219\t13\n77847\t3.213\t0.001\t2\n77848\t3.318\t0.114\t5\n77849\t3.574\t0.313\t3\n77850\t3.205\t-1.0\t1\n77851\t3.463\t0.411\t4\n77852\t3.491\t0.534\t2\n77853\t3.822\t0.039\t3\n77854\t3.511\t0.765\t6\n77856\t3.502\t0.647\t78\n77861\t3.9\t0.078\t12\n77862\t3.806\t0.091\t8\n77864\t3.807\t-1.0\t1\n77865\t3.535\t0.137\t7\n77870\t3.386\t0.218\t17\n77871\t3.245\t0.006\t2\n77874\t3.754\t0.595\t67\n77875\t3.655\t0.42\t25\n77879\t3.899\t0.365\t31\n77880\t4.729\t0.676\t2\n77898\t4.496\t0.606\t3\n77902\t3.48\t0.0\t4\n77905\t3.736\t0.08\t11\n77906\t3.724\t0.099\t26\n77907\t3.562\t0.045\t4\n77917\t4.592\t-1.0\t1\n78085\t3.76\t0.113\t8\n78086\t3.713\t0.29\t1287\n78342\t3.557\t0.28\t73\n81940\t3.661\t0.289\t176\n81943\t3.019\t-1.0\t1\n81944\t2.85\t-1.0\t1\n81945\t3.324\t0.0\t2\n81951\t3.151\t-1.0\t1\n81952\t3.185\t0.116\t25\n81957\t3.75\t0.247\t3\n81958\t3.579\t0.106\t3\n81967\t3.517\t0.128\t5\n81969\t3.26\t0.128\t3\n81970\t3.346\t0.13\t71\n81971\t3.246\t0.132\t128\n81975\t3.895\t0.219\t5\n81976\t3.719\t0.202\t10\n81997\t3.133\t0.007\t2\n81999\t3.088\t0.086\t20\n82000\t3.26\t0.098\t4\n82001\t3.332\t-1.0\t1\n82002\t3.427\t0.083\t10\n82003\t3.25\t0.171\t45\n82012\t3.805\t-1.0\t1\n82182\t3.212\t0.212\t411\n82438\t2.973\t0.227\t13\n86044\t2.357\t-1.0\t1\n86050\t3.301\t0.106\t5\n86051\t3.223\t0.408\t15\n86053\t3.906\t-1.0\t1\n86062\t2.711\t0.034\t2\n86068\t3.534\t0.111\t4\n86069\t3.014\t0.266\t86\n86277\t3.132\t0.206\t3\n86278\t3.08\t0.205\t1002\n86279\t2.704\t0.168\t460\n86280\t2.561\t0.163\t44\n86287\t3.292\t0.078\t26\n86288\t3.128\t0.068\t7\n86534\t2.902\t0.101\t13\n86535\t2.446\t0.18\t5\n90134\t3.158\t0.093\t9\n90138\t2.576\t0.185\t3\n90139\t2.835\t0.161\t13\n90140\t2.925\t0.174\t8\n90141\t3.761\t-1.0\t1\n90143\t3.058\t0.0\t2\n90144\t2.522\t0.784\t3\n90145\t2.482\t0.209\t46\n90146\t3.164\t0.558\t44\n90147\t2.774\t0.281\t113\n90150\t3.233\t0.034\t7\n90156\t3.193\t-1.0\t1\n90157\t2.921\t-1.0\t1\n90161\t3.271\t0.0\t2\n90162\t3.869\t0.023\t3\n90163\t3.573\t0.143\t28\n90164\t3.347\t0.022\t18\n90165\t2.62\t0.414\t54\n90168\t3.427\t0.036\t8\n90194\t3.897\t-1.0\t1\n90373\t3.171\t0.268\t3\n90374\t2.926\t0.185\t13105\n90375\t2.587\t0.178\t1875\n90376\t2.456\t0.185\t917\n90383\t3.113\t0.322\t22\n90384\t3.044\t0.167\t14\n90630\t2.624\t0.183\t73\n90631\t2.431\t0.217\t59\n90632\t2.541\t0.214\t13\n94231\t2.269\t0.138\t9\n94234\t2.503\t0.095\t6\n94235\t2.637\t0.592\t3\n94236\t3.236\t0.203\t2\n94242\t2.529\t0.487\t29\n94243\t2.969\t0.254\t17\n94264\t3.486\t-1.0\t1\n94286\t2.784\t0.083\t10\n94470\t2.664\t0.196\t1656\n94471\t2.46\t0.141\t1730\n94472\t2.373\t0.21\t563\n94479\t3.002\t0.084\t9\n94480\t2.809\t0.211\t72\n94726\t2.339\t0.204\t93\n94727\t2.461\t0.173\t28\n94728\t2.22\t0.033\t36\n98328\t2.585\t0.33\t139\n98329\t3.026\t0.483\t6\n98330\t3.053\t0.116\t7\n98331\t2.861\t0.157\t7\n98332\t3.016\t0.06\t2\n98333\t2.906\t-1.0\t1\n98334\t3.171\t-1.0\t1\n98335\t2.778\t0.078\t6\n98336\t2.83\t0.006\t4\n98337\t2.984\t0.301\t63\n98338\t3.557\t0.536\t97\n98339\t2.852\t0.31\t66\n98341\t3.47\t0.104\t3\n98349\t3.572\t-1.0\t1\n98350\t3.259\t0.092\t4\n98354\t3.11\t0.137\t19\n98355\t3.017\t0.193\t20\n98356\t3.203\t0.219\t43\n98357\t3.129\t0.376\t67\n98378\t3.04\t-1.0\t1\n98381\t3.568\t-1.0\t1\n98382\t3.15\t0.188\t5\n98383\t3.133\t0.037\t3\n98384\t3.045\t0.0\t2\n98386\t3.121\t0.097\t12\n98387\t3.325\t0.016\t2\n98565\t2.688\t0.12\t18\n98566\t2.619\t0.153\t6878\n98567\t2.404\t0.141\t2515\n98568\t2.41\t0.174\t638\n98575\t3.098\t0.146\t259\n98576\t2.876\t0.25\t37\n98822\t2.158\t0.152\t4143\n98823\t2.42\t0.131\t56\n98824\t2.468\t0.236\t5\n102425\t3.087\t0.258\t19\n102426\t2.867\t0.103\t4\n102427\t3.03\t0.131\t2\n102428\t2.886\t-1.0\t1\n102431\t3.326\t0.375\t7\n102432\t2.775\t0.168\t35\n102433\t2.737\t0.092\t14\n102434\t3.052\t0.275\t320\n102435\t2.947\t0.279\t501\n102438\t3.136\t0.442\t2\n102442\t3.198\t-1.0\t1\n102444\t2.998\t0.081\t3\n102445\t2.848\t0.318\t2\n102447\t3.116\t0.312\t4\n102449\t2.668\t0.007\t12\n102450\t2.65\t0.156\t37\n102451\t2.804\t0.128\t97\n102452\t3.71\t0.389\t143\n102453\t3.196\t0.352\t77\n102476\t2.993\t0.038\t4\n102478\t3.256\t-1.0\t1\n102479\t3.089\t0.272\t5\n102480\t2.61\t0.003\t4\n102481\t3.397\t-1.0\t1\n102482\t2.754\t0.035\t4\n102483\t2.878\t0.096\t25\n102661\t2.718\t0.111\t3\n102662\t2.482\t0.226\t2788\n102663\t2.511\t0.177\t8370\n102664\t2.493\t0.179\t2602\n102671\t2.643\t0.184\t45\n102672\t2.962\t0.176\t53\n102918\t2.052\t0.149\t4796\n102919\t2.51\t0.179\t433\n102920\t2.374\t0.161\t19\n106522\t2.941\t0.371\t219\n106523\t2.892\t0.261\t5\n106524\t2.877\t0.111\t7\n106525\t2.863\t0.149\t85\n106526\t2.98\t0.096\t34\n106527\t2.834\t0.242\t89\n106528\t2.743\t0.335\t128\n106529\t2.701\t0.254\t143\n106530\t2.739\t0.223\t715\n106531\t2.904\t0.242\t866\n106536\t3.002\t0.349\t8\n106537\t2.799\t0.229\t2\n106538\t3.086\t0.144\t4\n106540\t2.735\t0.302\t14\n106541\t2.768\t0.387\t2\n106542\t3.159\t0.157\t17\n106543\t2.781\t0.205\t11\n106545\t3.031\t0.266\t33\n106546\t3.013\t0.266\t96\n106547\t2.844\t0.229\t38\n106548\t2.92\t0.185\t202\n106549\t3.146\t0.267\t200\n106551\t3.701\t0.004\t2\n106552\t3.508\t0.08\t2\n106554\t3.692\t-1.0\t1\n106556\t3.882\t-1.0\t1\n106566\t3.665\t0.215\t7\n106570\t3.257\t0.114\t4\n106571\t2.863\t0.015\t4\n106572\t2.976\t0.164\t5\n106574\t3.224\t0.085\t11\n106575\t2.779\t0.247\t4\n106576\t2.981\t0.124\t18\n106577\t3.014\t0.072\t10\n106579\t3.124\t0.117\t28\n106757\t2.221\t0.408\t15\n106758\t2.401\t0.141\t81624\n106759\t2.351\t0.184\t21226\n106760\t2.431\t0.13\t2185\n106767\t2.782\t0.218\t230\n106768\t2.742\t0.183\t221\n107014\t2.077\t0.157\t13871\n107015\t2.286\t0.144\t1126\n107016\t2.261\t0.186\t6\n107023\t2.555\t-1.0\t1\n110619\t2.657\t0.367\t240\n110620\t2.816\t0.234\t12\n110621\t2.849\t0.093\t2\n110622\t2.914\t0.068\t12\n110623\t2.683\t0.337\t23\n110624\t2.349\t0.547\t34\n110625\t2.914\t0.287\t44\n110626\t2.37\t0.334\t254\n110627\t2.823\t0.245\t593\n110629\t3.216\t-1.0\t1\n110632\t3.168\t0.262\t18\n110633\t3.517\t-1.0\t1\n110634\t3.188\t-1.0\t1\n110636\t2.935\t0.025\t5\n110637\t2.659\t0.073\t4\n110638\t2.964\t0.14\t43\n110641\t2.808\t0.245\t6\n110642\t2.669\t0.36\t18\n110643\t2.899\t0.004\t2\n110644\t2.907\t0.266\t28\n110645\t3.111\t0.233\t239\n110654\t3.746\t0.042\t4\n110664\t3.213\t0.095\t2\n110665\t3.535\t-1.0\t1\n110666\t3.211\t-1.0\t1\n110669\t2.652\t-1.0\t1\n110670\t3.108\t0.335\t20\n110671\t3.078\t0.114\t48\n110672\t2.505\t0.007\t4\n110673\t2.66\t0.009\t3\n110674\t2.75\t0.014\t4\n110675\t2.821\t0.241\t50\n110682\t3.786\t-1.0\t1\n110684\t3.602\t0.211\t2\n110853\t2.51\t0.032\t24\n110854\t2.424\t0.18\t7855\n110855\t2.35\t0.165\t15280\n110856\t2.397\t0.151\t2600\n110863\t2.753\t0.315\t114\n110864\t2.718\t0.212\t256\n111110\t2.057\t0.162\t5916\n111111\t2.347\t0.183\t580\n111120\t3.119\t-1.0\t1\n114716\t2.861\t0.204\t423\n114717\t2.956\t0.144\t62\n114718\t3.07\t0.105\t55\n114719\t2.884\t0.235\t61\n114720\t2.67\t0.388\t26\n114721\t2.959\t0.219\t18\n114722\t2.832\t0.233\t173\n114723\t2.869\t0.229\t1269\n114727\t2.635\t0.109\t4\n114728\t2.753\t-1.0\t1\n114730\t2.796\t0.0\t2\n114733\t2.529\t0.017\t3\n114737\t2.923\t0.325\t25\n114738\t3.191\t0.145\t154\n114739\t3.085\t0.122\t9\n114740\t3.439\t0.421\t52\n114741\t3.061\t0.179\t190\n114743\t3.288\t-1.0\t1\n114745\t2.617\t0.062\t2\n114759\t3.289\t0.325\t3\n114760\t2.798\t-1.0\t1\n114762\t2.961\t-1.0\t1\n114765\t2.702\t-1.0\t1\n114766\t3.089\t0.135\t10\n114767\t3.047\t0.066\t62\n114768\t3.431\t0.011\t4\n114769\t3.198\t-1.0\t1\n114770\t3.331\t0.009\t16\n114771\t3.287\t0.091\t62\n114780\t3.048\t-1.0\t1\n114949\t2.438\t0.289\t13\n114950\t2.447\t0.207\t5143\n114951\t2.359\t0.153\t15318\n114952\t2.422\t0.153\t2635\n114959\t2.635\t0.231\t43\n114960\t2.669\t0.201\t795\n115206\t2.167\t0.159\t1651\n115207\t2.384\t0.147\t685\n115208\t2.377\t-1.0\t1\n118813\t2.913\t0.463\t3054\n118814\t2.839\t0.079\t11\n118815\t2.711\t0.001\t4\n118816\t2.916\t0.195\t36\n118817\t2.906\t0.257\t48\n118818\t3.003\t0.19\t1185\n118819\t2.89\t0.233\t2162\n118821\t4.015\t-1.0\t1\n118826\t2.96\t-1.0\t1\n118828\t2.952\t0.11\t39\n118829\t2.507\t0.024\t3\n118830\t2.938\t0.19\t22\n118831\t2.849\t0.2\t37\n118834\t2.765\t0.134\t305\n118835\t3.108\t0.155\t31\n118836\t3.39\t0.219\t189\n118837\t3.139\t0.235\t3644\n118839\t3.839\t-1.0\t1\n118858\t2.994\t-1.0\t1\n118861\t2.937\t0.024\t4\n118862\t2.749\t0.231\t11\n118863\t3.089\t0.14\t128\n118864\t2.73\t0.419\t10\n118867\t4.236\t-1.0\t1\n119046\t2.301\t0.205\t1784\n119047\t2.304\t0.132\t28601\n119048\t2.278\t0.16\t3943\n119055\t2.752\t0.18\t205\n119056\t2.764\t0.209\t1501\n119302\t2.425\t0.207\t1326\n119303\t2.302\t0.163\t1333\n119304\t2.514\t0.012\t2\n122910\t2.933\t0.511\t46\n122911\t2.702\t0.368\t7\n122912\t2.663\t0.513\t47\n122913\t2.561\t0.197\t22\n122914\t2.985\t0.238\t269\n122915\t2.799\t0.235\t1020\n122917\t3.448\t-1.0\t1\n122920\t3.428\t0.0\t2\n122922\t3.262\t0.063\t13\n122924\t3.141\t0.257\t36\n122925\t3.024\t0.038\t68\n122926\t3.08\t0.273\t30\n122929\t3.163\t0.018\t2\n122930\t2.751\t0.402\t11\n122932\t3.359\t0.441\t18\n122933\t3.021\t0.24\t382\n122935\t3.714\t-1.0\t1\n122955\t3.014\t0.026\t6\n122957\t3.238\t0.02\t4\n122958\t3.092\t0.105\t29\n122960\t3.074\t0.0\t2\n122961\t2.928\t0.007\t10\n122962\t3.518\t0.023\t8\n122963\t2.553\t0.0\t2\n123142\t2.737\t0.301\t850\n123143\t2.41\t0.137\t13630\n123144\t2.395\t0.157\t2260\n123151\t2.989\t0.176\t11\n123152\t2.86\t0.169\t504\n123398\t2.392\t0.233\t92\n123399\t2.348\t0.155\t241\n127007\t3.02\t0.246\t86\n127008\t2.974\t0.088\t8\n127009\t3.494\t0.451\t21\n127010\t2.829\t0.38\t37\n127011\t2.708\t0.245\t196\n127014\t3.469\t0.079\t7\n127016\t3.23\t0.0\t2\n127018\t3.049\t0.131\t23\n127020\t2.953\t0.101\t22\n127021\t3.009\t0.238\t45\n127022\t3.086\t0.158\t56\n127023\t3.058\t0.009\t4\n127025\t3.335\t0.196\t5\n127026\t3.283\t0.062\t7\n127027\t2.651\t0.769\t24\n127028\t3.434\t0.203\t18\n127029\t3.123\t0.373\t261\n127031\t3.789\t0.084\t6\n127032\t4.457\t-1.0\t1\n127033\t3.667\t-1.0\t1\n127036\t4.074\t0.0\t2\n127039\t4.048\t-1.0\t1\n127046\t4.093\t-1.0\t1\n127050\t2.953\t0.101\t7\n127052\t3.076\t0.218\t4\n127053\t3.176\t0.156\t3\n127054\t2.924\t0.124\t38\n127055\t2.909\t0.082\t10\n127059\t4.205\t0.525\t4\n127068\t3.948\t0.013\t2\n127237\t2.513\t0.281\t7\n127238\t2.422\t0.173\t417\n127239\t2.418\t0.176\t782\n127240\t2.39\t0.178\t153\n127247\t2.978\t0.075\t57\n127248\t2.775\t0.184\t61\n127494\t2.47\t0.44\t42\n127495\t2.406\t0.044\t2\n131109\t3.618\t0.424\t54\n131110\t3.321\t0.053\t36\n131111\t2.973\t0.025\t4\n131112\t3.771\t0.94\t5\n131113\t3.619\t0.341\t9\n131114\t3.143\t0.38\t30\n131116\t2.916\t0.159\t157\n131117\t2.917\t0.159\t121\n131118\t3.04\t0.268\t107\n131119\t2.922\t0.222\t15\n131120\t3.307\t0.038\t4\n131122\t3.411\t0.477\t35\n131123\t3.351\t-1.0\t1\n131127\t3.814\t0.114\t37\n131128\t3.49\t0.107\t29\n131130\t2.988\t0.0\t6\n131137\t2.864\t-1.0\t1\n131138\t3.615\t0.013\t2\n131144\t3.909\t0.169\t5\n131146\t3.079\t0.227\t59\n131147\t2.946\t0.309\t17\n131148\t2.938\t0.152\t48\n131149\t2.889\t0.075\t105\n131150\t2.932\t0.142\t86\n131151\t2.965\t0.315\t19\n131154\t4.158\t0.0\t3\n131155\t3.469\t0.0\t2\n135208\t3.392\t0.193\t9\n135209\t2.553\t0.506\t113\n135210\t2.846\t0.341\t42\n135212\t2.866\t0.212\t135\n135213\t2.927\t0.123\t16\n135214\t2.871\t0.163\t78\n135215\t2.95\t0.206\t41\n135216\t2.799\t0.488\t10\n135217\t2.858\t0.374\t47\n135218\t3.171\t0.414\t88\n135219\t3.525\t0.292\t6\n135226\t2.999\t0.0\t6\n135230\t3.926\t0.069\t11\n135234\t3.555\t0.069\t7\n135237\t4.014\t0.007\t2\n135240\t2.589\t0.032\t8\n135241\t2.464\t0.036\t10\n135242\t2.986\t0.141\t77\n135243\t2.924\t-1.0\t1\n135244\t2.773\t0.037\t5\n135245\t3.046\t0.0\t2\n135246\t2.825\t0.185\t175\n135247\t2.784\t0.162\t65\n135248\t3.475\t0.422\t13\n135249\t3.243\t0.492\t4\n135250\t3.627\t0.385\t15\n135251\t3.822\t0.36\t16\n135258\t3.001\t0.0\t2\n135260\t3.608\t0.228\t9\n135430\t2.312\t0.051\t4\n139303\t3.535\t0.292\t31\n139304\t3.38\t0.183\t24\n139305\t2.623\t0.529\t104\n139306\t3.083\t0.33\t321\n139308\t2.96\t0.162\t229\n139309\t2.923\t0.274\t63\n139310\t2.882\t0.149\t259\n139311\t3.27\t0.202\t438\n139312\t2.668\t0.417\t260\n139313\t3.241\t0.429\t63\n139314\t3.163\t0.399\t546\n139315\t3.191\t0.461\t290\n139321\t3.855\t0.226\t50\n139322\t3.709\t0.138\t100\n139323\t3.684\t0.123\t46\n139324\t3.633\t0.072\t70\n139326\t3.545\t0.123\t112\n139327\t3.991\t0.038\t4\n139328\t3.786\t0.526\t8\n139329\t3.979\t0.001\t4\n139330\t3.537\t0.014\t6\n139331\t3.355\t0.108\t12\n139332\t3.159\t0.173\t21\n139333\t3.624\t0.136\t27\n139334\t3.334\t0.167\t126\n139336\t3.239\t0.487\t10\n139337\t2.614\t0.35\t62\n139338\t3.123\t0.251\t218\n139339\t3.229\t0.309\t1334\n139340\t3.562\t0.717\t14\n139341\t2.945\t0.19\t49\n139342\t2.914\t0.165\t139\n139343\t2.866\t0.183\t165\n139344\t3.14\t0.274\t105\n139345\t3.078\t0.295\t50\n139346\t3.558\t0.371\t43\n139347\t3.512\t0.445\t86\n139354\t3.623\t0.348\t57\n139356\t3.581\t0.414\t207\n139357\t3.553\t0.26\t12\n139358\t3.738\t0.14\t26\n139526\t2.278\t0.056\t6\n143399\t2.881\t0.269\t29\n143400\t3.289\t0.207\t165\n143401\t2.903\t0.415\t136\n143402\t2.928\t0.263\t822\n143404\t2.981\t0.274\t225\n143405\t3.002\t0.373\t123\n143406\t2.929\t0.211\t1350\n143407\t3.15\t0.245\t392\n143408\t3.115\t0.214\t390\n143409\t2.892\t0.454\t277\n143410\t3.152\t0.327\t288\n143411\t3.118\t0.344\t421\n143417\t3.489\t0.306\t26\n143418\t3.66\t0.441\t102\n143419\t2.889\t0.02\t3\n143420\t3.311\t0.239\t14\n143422\t3.519\t0.117\t10\n143423\t3.405\t0.182\t14\n143424\t3.622\t0.201\t10\n143425\t2.902\t0.279\t14\n143426\t3.441\t0.397\t31\n143427\t2.869\t0.248\t16\n143428\t2.769\t0.111\t12\n143430\t3.342\t0.101\t8\n143433\t3.029\t0.413\t218\n143434\t2.63\t0.358\t237\n143435\t2.974\t0.223\t787\n143436\t2.871\t0.256\t91\n143437\t3.02\t0.255\t120\n143438\t2.97\t0.262\t730\n143439\t2.839\t0.219\t570\n143440\t2.939\t0.303\t600\n143441\t2.709\t0.226\t130\n143442\t3.393\t0.358\t470\n143443\t3.237\t0.326\t869\n143450\t3.569\t0.067\t21\n143452\t3.3\t0.463\t144\n143453\t2.771\t0.0\t6\n143454\t3.655\t0.021\t3\n143455\t2.882\t0.023\t3\n151589\t4.027\t0.433\t171\n151590\t3.818\t0.355\t2\n151594\t3.871\t0.0\t2\n151598\t3.586\t0.162\t20\n151599\t3.353\t0.049\t2\n151601\t3.937\t0.0\t2\n151602\t3.839\t0.296\t15\n151603\t3.859\t0.378\t36\n151607\t4.188\t0.029\t2\n151631\t3.626\t0.064\t26\n151633\t3.814\t0.025\t4\n151634\t3.849\t0.071\t10\n151635\t4.057\t0.0\t2\n151814\t3.815\t0.247\t64\n152069\t3.392\t0.0\t2\n152070\t3.728\t0.185\t7\n155686\t3.715\t0.263\t197\n155692\t3.291\t0.0\t2\n155693\t3.275\t0.0\t2\n155695\t3.371\t-1.0\t1\n155696\t3.544\t0.083\t4\n155697\t3.415\t0.077\t36\n155698\t3.446\t0.074\t26\n155699\t3.346\t0.137\t70\n155703\t4.039\t0.114\t2\n155704\t3.785\t-1.0\t1\n155725\t3.3\t0.0\t4\n155726\t3.174\t0.064\t8\n155727\t3.236\t0.051\t4\n155728\t3.411\t0.02\t2\n155729\t3.492\t0.006\t3\n155730\t3.53\t0.066\t10\n155731\t3.424\t0.132\t88\n155740\t3.534\t-1.0\t1\n155910\t3.584\t0.272\t112\n156166\t2.793\t0.019\t4\n159783\t4.713\t0.009\t2\n159790\t3.627\t0.388\t4\n159795\t3.832\t0.039\t12\n159797\t3.719\t0.347\t56\n159799\t4.168\t0.0\t2\n159822\t3.558\t0.003\t2\n160005\t3.476\t0.074\t35\n160006\t3.258\t0.191\t4054\n160007\t2.913\t0.142\t1412\n160008\t2.796\t0.249\t708\n160015\t3.636\t0.026\t3\n160016\t3.367\t0.408\t27\n160262\t2.99\t0.127\t72\n160263\t3.031\t0.264\t24\n163884\t3.712\t0.084\t3\n163885\t3.713\t0.26\t5\n163889\t3.399\t0.0\t2\n163890\t3.989\t0.377\t5\n163892\t3.476\t0.0\t2\n163893\t3.302\t0.424\t87\n163917\t3.364\t0.045\t5\n163918\t3.314\t0.355\t6\n163922\t4.034\t-1.0\t1\n164101\t3.255\t0.125\t9\n164102\t3.029\t0.219\t13290\n164103\t2.812\t0.186\t1007\n164104\t2.599\t0.231\t718\n164111\t3.355\t0.275\t19\n164112\t3.184\t0.119\t22\n164358\t2.805\t0.151\t103\n164359\t2.642\t0.21\t22\n164360\t2.844\t0.216\t9\n167977\t2.746\t0.433\t12\n167986\t3.166\t-1.0\t1\n167988\t3.668\t0.819\t15\n167989\t2.936\t0.216\t20\n168198\t2.975\t0.237\t953\n168199\t2.749\t0.24\t450\n168200\t2.532\t0.296\t44\n168207\t3.165\t0.13\t49\n168208\t3.318\t0.08\t14\n168454\t2.601\t0.169\t111\n168455\t2.727\t0.161\t25\n172074\t2.912\t0.373\t1298\n172076\t3.157\t0.34\t9\n172078\t3.301\t0.025\t5\n172079\t3.222\t0.067\t8\n172082\t3.28\t0.259\t30\n172083\t3.177\t0.165\t15\n172084\t3.327\t0.193\t23\n172085\t3.272\t0.292\t557\n172087\t3.799\t-1.0\t1\n172088\t3.528\t-1.0\t1\n172106\t2.727\t0.462\t6\n172107\t3.735\t-1.0\t1\n172109\t3.252\t0.082\t43\n172110\t3.239\t0.183\t9\n172111\t3.197\t0.132\t22\n172112\t3.584\t0.076\t4\n172114\t3.693\t0.232\t12\n172115\t3.359\t0.28\t40\n172124\t3.744\t0.013\t2\n172293\t3.03\t0.256\t14\n172294\t2.789\t0.167\t9278\n172295\t2.577\t0.18\t3098\n172296\t2.467\t0.259\t1296\n172303\t2.908\t0.239\t150\n172304\t2.957\t0.217\t165\n172550\t2.341\t0.159\t4663\n172551\t2.511\t0.149\t218\n172559\t2.202\t0.279\t10\n180268\t3.063\t0.299\t1102\n180269\t2.945\t0.515\t10\n180270\t3.082\t0.36\t14\n180271\t3.086\t-1.0\t1\n180272\t3.242\t0.131\t2\n180273\t3.439\t0.268\t6\n180274\t3.072\t0.196\t129\n180275\t3.213\t0.211\t24\n180276\t3.091\t0.153\t98\n180277\t3.22\t0.208\t173\n180295\t3.709\t0.109\t4\n180296\t3.674\t0.024\t2\n180298\t3.338\t0.368\t8\n180299\t3.08\t0.02\t2\n180300\t3.051\t0.136\t6\n180301\t3.2\t0.237\t31\n180302\t3.182\t0.186\t59\n180303\t2.975\t0.164\t24\n180304\t3.255\t-1.0\t1\n180306\t2.931\t0.041\t12\n180307\t2.734\t0.077\t20\n180485\t2.755\t0.204\t14\n180486\t2.611\t0.146\t28221\n180487\t2.363\t0.139\t11820\n180488\t2.408\t0.153\t1326\n180495\t2.75\t0.202\t77\n180496\t2.828\t0.175\t621\n180742\t2.163\t0.16\t10524\n180743\t2.394\t0.13\t880\n180744\t2.447\t0.224\t6\n180751\t2.688\t0.012\t5\n180752\t2.464\t0.284\t5\n184365\t2.871\t0.285\t392\n184366\t3.302\t0.52\t4\n184367\t2.634\t0.029\t2\n184368\t2.701\t-1.0\t1\n184369\t3.216\t0.427\t13\n184370\t3.333\t0.264\t124\n184371\t3.063\t0.086\t29\n184372\t3.343\t0.188\t5\n184373\t3.193\t0.194\t327\n184396\t2.794\t0.148\t26\n184397\t2.962\t0.816\t2\n184398\t2.985\t0.39\t19\n184399\t3.255\t0.176\t61\n184400\t3.215\t0.059\t6\n184402\t3.402\t0.003\t2\n184403\t3.348\t0.247\t21\n184412\t3.283\t0.005\t3\n184581\t2.634\t0.295\t6\n184582\t2.568\t0.171\t12855\n184583\t2.441\t0.153\t3081\n184584\t2.416\t0.166\t1225\n184591\t2.739\t0.094\t61\n184592\t2.805\t0.202\t148\n184837\t2.886\t-1.0\t1\n184838\t2.196\t0.199\t2670\n184839\t2.45\t0.148\t279\n184848\t2.287\t0.009\t6\n188462\t3.197\t0.284\t549\n188463\t3.567\t0.174\t71\n188465\t3.129\t0.275\t2\n188466\t3.378\t0.343\t81\n188467\t3.278\t0.49\t122\n188468\t3.121\t0.318\t140\n188469\t3.118\t0.179\t936\n188472\t3.155\t0.189\t11\n188486\t2.788\t-1.0\t1\n188487\t3.697\t0.043\t2\n188490\t3.361\t-1.0\t1\n188491\t3.319\t0.01\t2\n188492\t3.071\t0.101\t16\n188494\t3.253\t0.286\t17\n188495\t3.308\t0.347\t126\n188496\t3.082\t0.313\t5\n188497\t3.342\t0.379\t39\n188498\t3.685\t0.035\t11\n188499\t2.981\t0.028\t91\n188508\t3.265\t0.257\t3\n188677\t2.545\t0.218\t11\n188678\t2.381\t0.169\t6266\n188679\t2.365\t0.135\t7580\n188680\t2.446\t0.147\t1073\n188687\t2.778\t0.159\t82\n188688\t2.732\t0.177\t615\n188934\t2.405\t0.21\t1341\n188935\t2.38\t0.131\t281\n188936\t2.152\t0.004\t2\n188944\t2.657\t0.082\t9\n192559\t3.554\t0.226\t4083\n192561\t2.716\t-1.0\t1\n192562\t3.443\t0.292\t14\n192563\t3.163\t0.241\t12\n192564\t3.698\t0.229\t62\n192565\t3.522\t0.275\t796\n192572\t3.827\t0.068\t3\n192587\t3.3\t0.096\t6\n192588\t3.119\t0.06\t30\n192589\t3.417\t0.237\t27\n192590\t3.436\t0.273\t279\n192591\t3.326\t0.24\t399\n192592\t2.823\t0.436\t7\n192774\t2.472\t0.2\t1611\n192775\t2.535\t0.173\t5301\n192776\t2.731\t0.17\t305\n192783\t2.898\t0.163\t18\n192784\t3.194\t0.23\t847\n193030\t2.719\t0.257\t1011\n193031\t2.571\t0.187\t351\n196656\t2.962\t0.143\t4\n196659\t2.984\t0.064\t32\n196660\t3.488\t0.2\t53\n196661\t3.212\t0.24\t422\n196664\t3.568\t0.009\t4\n196686\t3.302\t0.12\t162\n196687\t3.375\t0.136\t15\n196690\t3.639\t0.028\t8\n196691\t3.016\t0.052\t32\n196870\t2.546\t0.218\t32\n196871\t2.669\t0.125\t3379\n196872\t2.711\t0.152\t719\n196880\t3.123\t0.225\t349\n197126\t2.828\t0.381\t77\n197127\t2.606\t0.119\t56\n197128\t2.751\t-1.0\t1\n200753\t2.968\t0.291\t109\n200754\t3.781\t0.18\t17\n200755\t2.926\t0.006\t4\n200756\t3.55\t0.394\t50\n200757\t3.215\t0.314\t179\n200759\t3.813\t0.152\t8\n200760\t3.68\t0.079\t15\n200778\t3.2\t0.021\t2\n200779\t2.798\t0.024\t24\n200781\t2.816\t0.38\t2\n200782\t3.146\t0.138\t51\n200783\t3.783\t-1.0\t1\n200784\t3.608\t0.06\t2\n200787\t3.701\t0.063\t13\n200966\t2.737\t0.248\t164\n200967\t2.638\t0.193\t666\n200968\t2.735\t0.196\t128\n200975\t3.61\t0.145\t5\n200976\t2.787\t0.336\t60\n201222\t2.754\t0.18\t12\n201223\t2.897\t0.149\t12\n204850\t3.629\t0.476\t976\n204851\t2.793\t0.054\t34\n204852\t3.367\t0.645\t98\n204853\t3.325\t0.463\t310\n204855\t3.996\t0.344\t33\n204856\t3.682\t0.08\t11\n204857\t3.947\t0.023\t6\n204858\t3.186\t0.0\t6\n204863\t3.44\t0.0\t11\n204866\t3.929\t-1.0\t1\n204870\t3.525\t0.118\t8\n204872\t4.135\t0.14\t3\n204874\t3.301\t0.205\t57\n204875\t3.121\t0.234\t55\n204876\t3.203\t0.168\t70\n204877\t3.061\t0.08\t42\n204878\t3.284\t0.173\t281\n204879\t4.309\t0.589\t23\n204881\t3.669\t0.346\t5\n204882\t3.46\t0.055\t10\n204883\t3.636\t0.704\t18\n204892\t4.537\t-1.0\t1\n205061\t2.753\t0.308\t17\n205062\t2.528\t0.15\t3869\n205063\t2.708\t0.199\t1070\n205064\t2.716\t0.2\t545\n205071\t3.421\t0.246\t38\n205072\t3.123\t0.212\t212\n205318\t2.574\t0.174\t88\n205319\t2.626\t0.158\t25\n208947\t2.969\t0.506\t259\n208948\t3.77\t0.671\t12\n208949\t3.392\t0.45\t229\n208951\t3.952\t0.118\t44\n208952\t3.545\t0.115\t138\n208953\t3.197\t0.0\t6\n208954\t3.176\t0.0\t6\n208962\t3.825\t0.039\t12\n208968\t3.44\t-1.0\t1\n208970\t3.273\t0.166\t30\n208971\t3.245\t0.214\t83\n208972\t2.968\t0.115\t113\n208973\t3.43\t0.067\t4\n208974\t3.1\t0.205\t80\n208975\t3.122\t0.204\t60\n208976\t3.551\t0.081\t6\n208977\t4.668\t0.032\t6\n208978\t4.088\t0.033\t12\n208979\t2.917\t0.271\t11\n209158\t2.495\t0.15\t1844\n209159\t2.721\t0.28\t225\n209160\t2.668\t0.436\t78\n209167\t3.017\t0.046\t5\n209168\t3.149\t0.165\t38\n209414\t2.509\t0.24\t10\n209415\t2.427\t0.146\t6\n213050\t4.433\t0.045\t6\n213054\t4.024\t0.099\t10\n213065\t5.027\t-1.0\t1\n213066\t2.704\t0.455\t23\n213067\t3.276\t0.286\t165\n213068\t3.025\t0.034\t20\n213070\t3.155\t0.284\t48\n213071\t3.03\t0.209\t38\n213072\t3.343\t0.249\t92\n213073\t4.446\t0.01\t2\n213074\t4.01\t0.314\t16\n213075\t3.489\t0.653\t32\n213084\t3.85\t0.333\t22\n213086\t4.355\t0.043\t6\n217145\t3.893\t0.312\t115\n217146\t4.057\t0.272\t72\n217147\t3.309\t0.409\t38\n217148\t3.875\t0.23\t104\n217150\t3.913\t0.338\t122\n217151\t4.078\t0.166\t14\n217152\t3.772\t0.324\t18\n217153\t3.606\t0.456\t25\n217154\t3.192\t0.524\t27\n217156\t3.103\t0.413\t22\n217157\t3.863\t0.489\t46\n217158\t3.761\t0.157\t82\n217159\t3.66\t0.413\t6\n217160\t3.35\t0.322\t22\n217161\t2.816\t0.4\t52\n217162\t2.801\t0.247\t341\n217163\t2.814\t0.353\t94\n217164\t2.999\t0.191\t26\n217165\t3.222\t0.232\t233\n217166\t3.234\t0.277\t811\n217167\t3.066\t0.296\t281\n217168\t3.131\t0.252\t665\n217169\t2.89\t0.413\t19\n217170\t3.801\t0.427\t565\n217171\t3.582\t0.409\t827\n217178\t3.927\t0.242\t20\n217180\t3.819\t0.264\t406\n217182\t3.899\t0.189\t7\n217183\t3.278\t-1.0\t1\n225335\t4.276\t0.49\t265\n225336\t4.479\t0.154\t3\n225338\t4.3\t0.0\t2\n225345\t4.243\t-1.0\t1\n225346\t4.182\t-1.0\t1\n225354\t3.789\t-1.0\t1\n225359\t3.687\t0.153\t5\n225360\t4.965\t0.0\t3\n225361\t4.086\t0.077\t5\n225362\t3.938\t0.124\t17\n225363\t4.209\t0.153\t5\n225542\t4.026\t0.331\t148\n225797\t3.377\t0.162\t3\n225798\t3.864\t0.248\t33\n229432\t4.077\t0.334\t194\n229450\t3.552\t0.0\t2\n229455\t3.61\t0.0\t2\n229458\t3.779\t0.076\t5\n229459\t3.62\t0.105\t15\n229638\t3.726\t0.142\t169\n229893\t2.88\t0.148\t17\n233547\t3.663\t0.041\t4\n233733\t3.661\t0.127\t9\n233734\t3.511\t0.169\t1320\n233735\t3.103\t0.143\t699\n233736\t2.952\t0.191\t544\n233743\t4.137\t0.779\t6\n233744\t3.541\t0.191\t21\n233990\t3.356\t0.17\t18\n233991\t3.128\t0.157\t55\n237830\t3.517\t0.262\t866\n237831\t3.053\t0.238\t780\n237832\t2.942\t0.272\t364\n237839\t3.058\t0.078\t3\n237840\t3.557\t0.208\t14\n238086\t3.309\t0.197\t15\n238087\t3.084\t0.184\t40\n241926\t3.477\t0.124\t197\n241927\t3.016\t0.163\t300\n241928\t2.871\t0.151\t320\n241936\t3.545\t0.074\t6\n242182\t3.213\t0.142\t3\n242183\t3.034\t0.049\t17\n246021\t3.749\t-1.0\t1\n246022\t3.442\t0.199\t803\n246023\t3.027\t0.153\t733\n246024\t2.83\t0.16\t737\n246031\t3.715\t0.509\t10\n246032\t3.489\t0.117\t10\n246278\t3.07\t0.175\t7\n246279\t3.018\t0.113\t65\n254014\t3.621\t0.145\t11\n254027\t3.568\t0.017\t3\n254214\t3.39\t0.158\t2671\n254215\t2.996\t0.161\t998\n254216\t2.805\t0.192\t556\n254223\t3.737\t0.252\t40\n254224\t3.439\t0.148\t13\n254470\t3.227\t0.142\t6\n254471\t3.139\t0.173\t24\n254472\t2.911\t0.206\t20\n258111\t2.215\t0.23\t2\n258310\t3.466\t0.262\t271\n258311\t2.927\t0.187\t1239\n258312\t2.76\t0.166\t1083\n258320\t3.383\t0.05\t12\n258566\t3.457\t0.042\t4\n258567\t2.819\t0.112\t11\n262406\t3.329\t0.213\t453\n262407\t2.926\t0.184\t889\n262408\t2.796\t0.186\t1231\n262416\t3.355\t0.381\t10\n262662\t2.919\t0.044\t2\n262663\t2.999\t0.226\t11\n266502\t3.401\t0.179\t388\n266503\t2.89\t0.17\t992\n266504\t2.734\t0.193\t1159\n266511\t3.732\t-1.0\t1\n266512\t3.445\t0.0\t2\n266758\t2.926\t-1.0\t1\n266759\t2.857\t0.231\t31\n270597\t3.404\t0.076\t3\n270598\t3.222\t0.253\t1595\n270599\t2.866\t0.193\t2042\n270600\t2.707\t0.189\t2073\n270607\t3.718\t-1.0\t1\n270608\t3.41\t0.38\t13\n270854\t2.9\t-1.0\t1\n270855\t2.794\t0.192\t30\n274510\t4.001\t0.0\t2\n274694\t3.388\t0.171\t354\n274695\t2.87\t0.172\t416\n274696\t2.724\t0.185\t439\n274950\t2.925\t0.039\t8\n274951\t2.479\t0.253\t12\n278789\t3.409\t0.069\t2\n278790\t3.158\t0.169\t1145\n278791\t2.849\t0.175\t801\n278792\t2.672\t0.179\t577\n278799\t3.625\t-1.0\t1\n278800\t3.474\t0.092\t7\n279046\t2.934\t0.097\t12\n279047\t2.89\t0.09\t12\n282693\t3.553\t0.0\t4\n282886\t3.443\t0.178\t536\n282887\t2.879\t0.209\t168\n282888\t2.725\t0.147\t129\n282895\t3.631\t0.142\t21\n282896\t3.222\t0.01\t8\n283143\t2.527\t0.136\t9\n286981\t3.507\t0.084\t5\n286982\t3.184\t0.155\t3390\n286983\t2.859\t0.153\t1245\n286984\t2.682\t0.159\t499\n286991\t3.54\t0.155\t13\n286992\t3.365\t0.159\t9\n287238\t3.019\t0.138\t24\n287239\t2.855\t0.076\t16\n287240\t2.979\t0.21\t26\n290891\t3.455\t0.011\t2\n290894\t3.514\t-1.0\t1\n291077\t3.476\t0.16\t11\n291078\t3.284\t0.204\t878\n291079\t2.84\t0.187\t460\n291080\t2.635\t0.193\t132\n291088\t3.528\t0.062\t2\n291334\t2.883\t0.06\t12\n291335\t2.948\t0.137\t14\n294994\t3.999\t-1.0\t1\n295173\t3.165\t0.193\t2\n295174\t3.107\t0.177\t2432\n295175\t2.774\t0.182\t341\n295176\t2.652\t0.204\t104\n295184\t3.109\t0.166\t9\n295430\t2.767\t0.112\t12\n295431\t2.657\t0.278\t12\n299081\t2.935\t0.369\t17\n299085\t3.119\t0.214\t10\n299270\t2.918\t0.218\t1400\n299271\t2.737\t0.199\t305\n299272\t2.492\t0.248\t40\n299279\t2.559\t0.037\t4\n299526\t2.488\t0.241\t28\n299527\t2.804\t0.155\t6\n303178\t2.675\t0.417\t434\n303181\t3.222\t0.078\t41\n303182\t3.654\t-1.0\t1\n303183\t3.21\t0.023\t4\n303186\t3.733\t0.044\t8\n303187\t3.128\t0.192\t8\n303365\t2.968\t0.028\t2\n303366\t2.8\t0.213\t3774\n303367\t2.584\t0.227\t2258\n303368\t2.49\t0.297\t312\n303375\t2.904\t0.202\t124\n303376\t3.053\t0.272\t32\n303622\t2.342\t0.159\t6180\n303623\t2.471\t0.154\t65\n307275\t3.127\t0.383\t1161\n307276\t3.076\t0.401\t28\n307277\t3.191\t0.02\t2\n307278\t3.567\t0.117\t38\n307279\t3.269\t0.094\t25\n307280\t3.228\t0.038\t20\n307281\t3.587\t0.03\t2\n307283\t3.205\t0.081\t30\n307292\t3.713\t0.164\t4\n307462\t2.629\t0.197\t1542\n307463\t2.457\t0.127\t3999\n307464\t2.435\t0.206\t207\n307471\t2.732\t0.251\t11\n307472\t2.825\t0.122\t121\n307718\t2.178\t0.135\t8471\n307719\t2.383\t0.156\t157\n307720\t2.299\t0.121\t3\n307728\t2.409\t0.014\t6\n311372\t3.106\t0.207\t804\n311373\t3.181\t-1.0\t1\n311374\t3.548\t0.146\t32\n311375\t3.12\t0.036\t62\n311379\t2.887\t0.06\t22\n311558\t2.597\t0.187\t2089\n311559\t2.357\t0.157\t1187\n311560\t2.486\t0.163\t95\n311567\t3.048\t0.26\t4\n311568\t3.082\t0.291\t44\n311814\t2.108\t0.152\t4572\n311815\t2.428\t0.139\t86\n311824\t2.543\t0.001\t4\n315469\t3.151\t0.278\t365\n315470\t3.549\t0.122\t63\n315471\t3.157\t0.118\t31\n315475\t3.22\t0.061\t39\n315653\t2.65\t0.215\t20\n315654\t2.552\t0.195\t16080\n315655\t2.382\t0.126\t6084\n315656\t2.483\t0.127\t418\n315663\t2.762\t0.14\t37\n315664\t2.816\t0.196\t162\n315910\t2.215\t0.168\t2203\n315911\t2.436\t0.105\t204\n315920\t2.977\t-1.0\t1\n319566\t3.225\t0.248\t552\n319567\t3.367\t0.293\t115\n319568\t3.169\t0.205\t20\n319569\t3.36\t0.238\t50\n319570\t3.392\t0.286\t42\n319571\t2.929\t0.286\t8\n319580\t2.758\t-1.0\t1\n319749\t2.528\t0.434\t19\n319750\t2.374\t0.187\t4743\n319751\t2.364\t0.145\t6282\n319752\t2.404\t0.169\t399\n319759\t2.743\t0.15\t63\n319760\t2.674\t0.189\t638\n320005\t2.585\t0.095\t3\n320006\t2.331\t0.173\t2612\n320007\t2.357\t0.121\t135\n320015\t2.781\t0.006\t2\n320016\t2.898\t0.124\t6\n323663\t3.245\t0.336\t4562\n323664\t3.526\t0.142\t2\n323665\t3.286\t0.102\t22\n323666\t3.306\t0.022\t2\n323667\t2.881\t0.196\t25\n323846\t2.35\t0.15\t3014\n323847\t2.354\t0.137\t1158\n323848\t2.403\t0.253\t6\n323855\t2.769\t0.169\t45\n323856\t2.739\t0.213\t222\n324102\t2.337\t0.19\t1691\n324103\t2.388\t0.156\t45\n327760\t2.694\t0.474\t53\n327941\t2.577\t-1.0\t1\n327942\t2.266\t0.136\t922\n327943\t2.741\t0.157\t953\n327944\t2.741\t0.235\t37\n327951\t2.904\t0.093\t8\n327952\t2.866\t0.242\t158\n328198\t2.38\t0.168\t94\n328199\t2.875\t0.15\t3\n331857\t3.111\t0.21\t60\n332038\t2.542\t0.227\t19\n332039\t2.984\t0.13\t175\n332040\t2.942\t0.295\t20\n332048\t3.399\t0.21\t18\n332294\t2.174\t0.0\t4\n335954\t3.231\t0.429\t436\n336134\t2.776\t0.248\t252\n336135\t2.833\t0.135\t693\n336136\t2.76\t0.196\t207\n336143\t3.678\t0.123\t15\n336144\t3.263\t0.218\t66\n336390\t2.874\t0.122\t4\n336391\t2.699\t0.147\t7\n340051\t3.126\t0.27\t404\n340229\t2.797\t-1.0\t1\n340230\t2.623\t0.24\t807\n340231\t2.807\t0.169\t491\n340232\t2.771\t0.212\t269\n340239\t3.206\t0.012\t2\n340240\t3.325\t0.293\t98\n340486\t2.701\t0.167\t16\n340487\t3.129\t0.34\t2\n368902\t3.528\t0.229\t2516\n368903\t3.077\t0.237\t337\n368904\t2.966\t0.304\t84\n368911\t3.616\t0.121\t7\n368912\t3.535\t0.376\t64\n369158\t3.14\t0.113\t14\n369159\t3.146\t0.323\t8\n369160\t3.179\t0.006\t2\n376924\t3.747\t0.0\t2\n377094\t3.44\t0.227\t3394\n377095\t2.982\t0.201\t1971\n377096\t2.826\t0.242\t770\n377103\t2.998\t0.426\t10\n377104\t3.462\t0.179\t110\n377350\t3.258\t0.302\t74\n377351\t3.02\t0.219\t96\n377352\t3.011\t0.211\t9\n381190\t3.595\t0.186\t49\n381191\t3.016\t0.171\t33\n381192\t3.071\t0.23\t47\n381200\t3.429\t0.053\t8\n385286\t3.676\t0.046\t15\n385287\t3.005\t0.218\t31\n385288\t3.065\t0.263\t47\n385296\t3.84\t0.251\t6\n389383\t3.107\t0.032\t5\n389384\t2.858\t0.234\t18\n389392\t3.517\t0.038\t3\n393479\t3.128\t0.008\t2\n393488\t3.419\t0.064\t3\n397575\t3.05\t0.029\t3\n397576\t2.942\t0.008\t3\n401671\t3.038\t0.025\t3\n401672\t2.931\t0.016\t3\n1073414\t1.594\t0.077\t2000853\n1073415\t1.527\t0.071\t91806\n1073423\t2.001\t0.161\t74\n1073424\t1.981\t0.067\t42\n1073679\t2.05\t0.093\t4\n1073680\t1.992\t0.039\t7\n1077511\t1.504\t0.087\t791\n1077519\t1.839\t0.106\t1862\n1077520\t1.811\t0.097\t38\n1077776\t1.753\t0.11\t23\n1110287\t2.325\t0.221\t8\n16781317\t1.299\t0.138\t2655\n16781318\t1.157\t0.073\t2154155\n16781319\t1.027\t0.087\t120477\n16781320\t1.0\t0.102\t99234\n16781321\t1.229\t0.768\t39\n16781326\t1.698\t0.206\t492\n16781327\t1.491\t0.16\t461\n16781328\t1.414\t0.148\t260\n16781329\t1.46\t0.267\t16\n16781344\t1.768\t0.207\t170\n16781345\t1.64\t0.233\t13\n16781346\t1.184\t0.24\t11\n16781347\t1.193\t0.14\t10\n16781365\t1.612\t0.001\t2\n16781573\t1.266\t-1.0\t1\n16781574\t1.083\t0.054\t1399983\n16781575\t1.026\t0.08\t10086\n16781576\t1.035\t0.083\t62\n16781583\t1.555\t0.169\t170\n16781830\t1.082\t0.064\t1503\n16781831\t1.012\t0.075\t9\n16797701\t2.055\t0.175\t200\n16797702\t1.917\t0.136\t1968\n16797703\t1.74\t0.145\t4307\n16797704\t1.627\t0.111\t7838\n16797705\t1.579\t0.095\t5410\n16797710\t2.643\t0.184\t32\n16797711\t2.367\t0.191\t736\n16797712\t2.279\t0.266\t207\n16797713\t2.22\t0.188\t513\n16797728\t2.564\t0.128\t21\n16797729\t2.481\t0.101\t5\n16797730\t2.577\t0.148\t48\n16797731\t2.401\t0.231\t244\n16797748\t2.725\t0.14\t4\n16797749\t2.87\t0.374\t77\n16797958\t1.838\t0.106\t11969\n16797959\t1.825\t0.108\t1915\n16797967\t2.268\t0.255\t20\n16798214\t1.868\t0.127\t268\n16798215\t1.772\t0.141\t42\n16798224\t2.259\t-1.0\t1\n16801798\t1.819\t0.111\t650683\n16801799\t1.721\t0.104\t153277\n16801800\t1.674\t0.089\t194202\n16801801\t1.483\t0.083\t37441\n16801806\t2.363\t0.237\t31159\n16801807\t2.243\t0.189\t5173\n16801808\t2.128\t0.132\t11654\n16801809\t2.024\t0.124\t15529\n16801824\t2.527\t0.248\t999\n16801825\t2.422\t0.325\t206\n16801826\t2.378\t0.18\t872\n16801827\t2.279\t0.155\t2704\n16801844\t2.666\t0.308\t172\n16801845\t2.522\t0.166\t717\n16802054\t1.762\t0.092\t352183\n16802055\t1.72\t0.097\t14388\n16802056\t1.688\t0.108\t6\n16802063\t2.207\t0.172\t3307\n16802064\t2.105\t0.131\t3350\n16802310\t1.696\t0.091\t7665\n16802311\t1.656\t0.128\t75\n16802320\t2.082\t0.116\t4919\n16805895\t1.623\t0.108\t3208\n16805896\t1.666\t0.126\t2100\n16805897\t1.415\t0.162\t17\n16805902\t2.205\t0.191\t1967\n16805903\t2.079\t0.152\t1682\n16805904\t1.93\t0.103\t249\n16805905\t1.958\t0.111\t24\n16805920\t2.362\t0.195\t1315\n16805921\t2.241\t0.173\t128\n16805922\t2.3\t0.193\t96\n16805923\t2.162\t0.118\t32\n16805940\t2.674\t0.201\t118\n16805941\t2.473\t0.194\t38\n16806150\t1.59\t0.082\t164495\n16806151\t1.574\t0.081\t7627\n16806159\t1.986\t0.139\t3197\n16806160\t2.009\t0.09\t401\n16806406\t1.512\t0.069\t153\n16806407\t1.394\t0.086\t533\n16806416\t1.9\t0.093\t9234\n16809992\t1.741\t0.264\t647\n16809998\t1.995\t0.155\t7813\n16809999\t1.925\t0.144\t1208\n16810000\t1.916\t0.201\t51\n16810001\t1.673\t0.087\t998\n16810016\t2.152\t0.242\t1021\n16810017\t1.796\t0.244\t670\n16810018\t2.006\t0.2\t174\n16810019\t1.965\t0.381\t4\n16810036\t2.404\t0.302\t460\n16810037\t2.386\t0.22\t205\n16810246\t1.562\t0.08\t163577\n16810247\t1.393\t0.102\t21110\n16810255\t1.861\t0.129\t9068\n16810256\t1.926\t0.104\t123\n16810502\t1.408\t0.07\t41\n16810503\t1.354\t0.073\t7\n16810512\t1.734\t0.114\t5958\n16814089\t1.446\t0.064\t5\n16814094\t1.979\t0.162\t679\n16814095\t1.82\t0.095\t9307\n16814096\t1.773\t0.108\t625\n16814097\t1.615\t0.213\t20\n16814112\t2.054\t0.303\t209\n16814113\t1.845\t0.169\t415\n16814114\t2.218\t0.193\t16\n16814115\t1.836\t0.098\t23\n16814132\t1.837\t0.254\t287\n16814133\t2.14\t0.294\t84\n16814342\t1.478\t0.072\t44091\n16814343\t1.246\t0.169\t3\n16814351\t1.618\t0.194\t150\n16814352\t1.613\t0.103\t16\n16814608\t1.556\t0.127\t44\n16834574\t3.378\t0.364\t2682\n16834575\t2.882\t0.272\t162\n16834576\t2.626\t0.23\t157\n16834577\t2.549\t0.274\t1011\n16834592\t3.473\t0.286\t507\n16834593\t3.314\t0.371\t24\n16834594\t2.897\t0.327\t42\n16834595\t2.87\t0.389\t169\n16834612\t3.665\t0.536\t15\n16834613\t3.09\t0.417\t78\n16834822\t2.235\t0.149\t6897\n16834823\t2.299\t0.166\t545\n16835078\t2.237\t0.123\t1405\n16835079\t2.102\t0.162\t46\n16838671\t2.751\t0.246\t664\n16838672\t2.368\t0.224\t165\n16838673\t2.447\t0.27\t425\n16838688\t3.18\t0.313\t89\n16838689\t2.773\t0.119\t26\n16838690\t2.582\t0.333\t127\n16838691\t2.563\t0.288\t58\n16838708\t3.027\t0.178\t12\n16838709\t2.915\t0.394\t101\n16838918\t2.115\t0.115\t8657\n16838919\t1.855\t0.183\t439\n16838927\t2.715\t0.169\t135\n16838928\t2.658\t0.069\t6\n16839174\t1.936\t0.185\t23\n16839175\t2.101\t0.064\t2\n16839184\t2.948\t-1.0\t1\n16842768\t2.281\t0.201\t1234\n16842769\t2.015\t0.03\t13\n16842784\t2.754\t0.331\t616\n16842785\t2.241\t0.25\t917\n16842786\t2.475\t0.266\t49\n16842787\t2.694\t0.214\t14\n16842804\t3.261\t0.399\t44\n16842805\t3.241\t0.251\t46\n16843014\t2.01\t0.115\t20813\n16843015\t1.834\t0.133\t156\n16843023\t2.464\t0.209\t339\n16843024\t2.494\t0.161\t19\n16843270\t1.935\t0.13\t225\n16843280\t2.489\t0.19\t50\n16846865\t1.992\t0.399\t44\n16846880\t2.745\t0.286\t511\n16846881\t2.728\t0.235\t235\n16846882\t2.384\t0.337\t109\n16846900\t3.03\t0.369\t277\n16846901\t2.906\t0.468\t87\n16847110\t1.969\t0.095\t20992\n16847111\t1.77\t0.177\t16\n16847119\t2.289\t0.187\t1133\n16847120\t2.181\t0.113\t8\n16847366\t1.923\t0.203\t4\n16847376\t2.231\t0.165\t28\n16908320\t3.119\t0.561\t1100\n16908321\t2.481\t0.4\t70\n16908322\t2.624\t0.585\t344\n16908323\t2.911\t0.375\t127\n16908340\t3.181\t0.424\t124\n16908341\t3.271\t0.469\t73\n16908550\t2.342\t0.169\t2233\n16908551\t2.432\t0.175\t414\n16908552\t2.284\t0.062\t14\n16908559\t3.148\t0.384\t31\n16908806\t2.273\t0.193\t233\n16912417\t2.568\t0.286\t226\n16912418\t2.384\t0.277\t52\n16912419\t2.383\t0.526\t37\n16912436\t2.868\t0.102\t3\n16912437\t3.175\t0.376\t43\n16912646\t2.247\t0.155\t563\n16912647\t2.196\t0.137\t13\n16912655\t2.8\t0.063\t13\n16912902\t1.902\t0.429\t4\n16912903\t2.164\t0.088\t7\n16916514\t2.705\t0.288\t257\n16916515\t2.826\t0.329\t129\n16916532\t3.054\t0.385\t17\n16916533\t3.596\t0.24\t25\n16916742\t2.215\t0.127\t1635\n16916743\t1.989\t0.141\t55\n16916751\t2.686\t0.173\t226\n16916752\t2.64\t-1.0\t1\n16916998\t2.197\t0.154\t196\n16920611\t3.015\t0.264\t187\n16920628\t3.279\t0.255\t239\n16920629\t3.195\t0.403\t63\n16920838\t2.164\t0.108\t13670\n16920839\t2.524\t0.134\t43\n16920847\t2.176\t0.207\t50\n16920848\t2.785\t0.214\t9\n16921094\t2.117\t0.097\t16\n16990260\t3.228\t0.382\t40\n16990261\t3.606\t0.35\t107\n16990470\t2.49\t0.154\t812\n16990471\t2.273\t0.267\t50\n16990472\t3.042\t-1.0\t1\n16990479\t3.31\t0.124\t16\n16990726\t2.535\t0.253\t17\n16994357\t3.54\t0.331\t863\n16994566\t2.373\t0.134\t5123\n16994567\t2.597\t0.154\t114\n16994575\t3.258\t0.143\t18\n16994822\t2.308\t0.108\t265\n16994823\t2.683\t0.0\t2\n17846534\t1.807\t0.004\t6\n17850630\t1.686\t0.082\t194786\n17850631\t1.634\t0.082\t26774\n17850632\t1.542\t0.034\t5\n17850639\t2.101\t0.105\t7379\n17850640\t2.077\t0.073\t1123\n17850886\t1.624\t0.087\t18128\n17850887\t1.587\t0.111\t90\n17850896\t2.041\t0.093\t13784\n17854727\t1.605\t0.077\t739\n17854735\t1.988\t0.193\t481\n17854736\t2.01\t0.157\t103\n17854982\t1.518\t0.05\t118\n17854983\t1.299\t0.035\t2\n17854991\t2.079\t0.0\t2\n17854992\t1.872\t0.081\t564\n17858824\t1.212\t0.0\t2\n17887503\t2.816\t0.232\t70\n17887504\t2.775\t-1.0\t1\n17887750\t2.038\t0.159\t42\n17887760\t2.72\t0.033\t2\n17891600\t2.75\t0.187\t12\n17891856\t2.984\t-1.0\t1\n18899462\t1.586\t0.08\t708\n18899472\t2.099\t0.117\t10\n18940432\t2.57\t0.156\t5\n33611790\t2.862\t0.219\t107\n33611809\t3.023\t-1.0\t1\n33611810\t1.697\t0.952\t3\n33611828\t3.382\t-1.0\t1\n33612038\t2.267\t0.06\t19\n33612039\t2.076\t0.084\t9\n33612040\t2.213\t0.116\t7\n33612047\t3.299\t0.356\t32\n33612048\t2.829\t-1.0\t1\n33612294\t2.498\t0.086\t4\n33624117\t2.68\t0.0\t2\n33624326\t2.051\t0.166\t7\n33624328\t1.644\t0.085\t2970\n33685536\t3.587\t0.192\t22\n33685537\t3.362\t0.618\t7\n33685539\t2.768\t-1.0\t1\n33685766\t2.418\t0.096\t23\n33685767\t2.3\t-1.0\t1\n33685768\t1.911\t0.307\t75\n33685775\t3.061\t0.334\t74\n33685776\t3.159\t0.258\t11\n33686022\t2.244\t-1.0\t1\n33689633\t2.268\t0.368\t3\n33689634\t3.2\t0.0\t2\n33689653\t3.142\t0.113\t4\n33689862\t1.874\t0.13\t10\n33689863\t1.999\t-1.0\t1\n33689864\t2.138\t0.163\t58\n33689871\t2.766\t0.099\t11\n33689872\t2.702\t0.904\t6\n33693731\t3.211\t0.049\t4\n33693748\t3.96\t0.381\t8\n33693749\t3.32\t0.198\t7\n33693958\t2.081\t0.047\t6\n33693959\t2.112\t0.21\t9\n33693960\t1.88\t0.205\t162\n33693967\t2.503\t0.176\t332\n33697844\t3.872\t0.0\t2\n33698055\t1.967\t-1.0\t1\n33698056\t1.612\t0.028\t8\n33767476\t2.657\t-1.0\t1\n33767477\t3.446\t-1.0\t1\n33767686\t2.131\t0.005\t3\n33767687\t2.1\t-1.0\t1\n33767688\t2.267\t0.518\t6\n33767695\t2.857\t0.194\t7\n33767696\t3.719\t0.957\t3\n33771573\t3.614\t0.457\t10\n33771783\t2.249\t0.088\t5\n33771784\t2.127\t0.16\t106\n33771791\t3.098\t-1.0\t1\n33771792\t3.166\t0.428\t3\n34623750\t1.78\t0.012\t7\n34627846\t1.55\t0.083\t65623\n34627847\t1.486\t0.077\t27424\n34627848\t1.404\t0.071\t156637\n34627855\t2.044\t0.135\t373\n34627856\t1.945\t0.103\t4751\n34628102\t1.526\t0.109\t716\n34628112\t1.965\t0.141\t8\n34631943\t1.436\t0.08\t1641\n34631944\t1.371\t0.063\t17326\n34631951\t1.879\t0.175\t1347\n34631952\t1.901\t0.158\t89\n34632198\t1.396\t0.123\t200\n34632199\t1.374\t0.136\t116\n34632207\t2.095\t0.0\t2\n34632208\t1.812\t0.114\t109\n34636040\t1.131\t0.253\t79\n34636047\t1.751\t0.123\t5003\n34636048\t1.76\t0.092\t2467\n34636294\t1.228\t0.157\t96\n34636295\t1.111\t0.035\t20\n34636304\t1.661\t0.085\t34493\n34664719\t2.605\t0.159\t86\n34664720\t2.299\t0.162\t912\n34664966\t1.951\t0.174\t35\n34664967\t1.804\t0.217\t28\n34664975\t2.749\t0.0\t2\n34664976\t2.399\t-1.0\t1\n34668816\t2.417\t0.111\t4\n34669062\t1.893\t0.17\t143\n34669071\t2.291\t0.138\t2\n35676678\t1.475\t0.093\t37\n52453894\t1.376\t0.081\t8518\n52453895\t1.293\t0.068\t14577\n52453896\t1.593\t0.165\t45\n52453903\t1.768\t0.204\t5\n52457991\t1.263\t0.085\t581\n52458000\t1.392\t0.156\t3\n83914759\t1.547\t0.085\t5\n83915013\t1.739\t0.204\t7\n83915014\t1.572\t0.079\t50584\n83915015\t1.539\t0.074\t8699\n83915023\t1.977\t0.137\t53\n83919110\t1.558\t0.068\t8984\n83919111\t1.575\t0.101\t961\n83919119\t2.014\t0.019\t9\n83951650\t2.389\t0.04\t4\n83951878\t1.973\t0.109\t22593\n83951879\t1.799\t0.11\t991\n83951887\t2.464\t-1.0\t1\n83951888\t2.672\t0.158\t11\n84025378\t2.575\t0.005\t2\n84025606\t2.151\t0.135\t549\n84025607\t2.077\t0.132\t184\n84959494\t1.626\t0.085\t32317\n84959495\t1.575\t0.081\t14689\n84959503\t2.111\t0.074\t20\n84959504\t2.015\t0.127\t36\n84963591\t1.557\t0.073\t2345\n84963599\t1.935\t0.256\t2\n84963600\t2.2\t0.296\t11\n100802822\t2.071\t0.051\t5\n100802823\t1.97\t0.021\t4\n101732615\t1.731\t0.197\t7\n101736710\t1.567\t0.082\t49304\n101736711\t1.502\t0.079\t23379\n101736719\t2.028\t0.119\t39\n101736720\t1.978\t0.107\t31\n101740807\t1.481\t0.072\t2974\n101740815\t1.989\t0.139\t38\n101740816\t1.737\t0.078\t11\n101773584\t2.915\t0.094\t4';
  result = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(data_0, '\n');
  return result;
}
;
carcc.gettorsionAngleData = function gettorsionAngleData(){
  carcc.$clinit_TorsionDBData();
  var data_0, result;
  data_0 = '26,60,96,180\n42,68,91,94\n147,176\n170,261\n210,231,244,267\n59,180\n26,30,38,55,81,96,118,180\n0,54,58,90\n0,55,90\n0,59,68,73\n0,57,77,180\n0,40,90\n0,31,35,46,68\n24,29,55,90\n1,47,51,56,70,75,78,85,88,90\n12,33,67\n0,38\n3,180\n0,44,61,87,90\n27\n0,14,29,35,61,78\n11,28,33,45,55,57\n57,61,63,90,145,148,180\n180\n0,40,47,51,72,179\n0,58\n0,52\n39,60,76,180\n51\n54,59,305\n47,50,66,311\n0,4,62\n63,84,125,163,180\n2,18,56\n60,94,178,180\n52,92,149,178\n42,82,160\n42,79,161\n67,180\n56,166,180\n51\n51\n61,174,180\n42\n0,2,28,174,180\n46,76,163\n60,88,180,208,306\n61,76,304\n0,7,10,13,60,82\n0,60\n3,37,57,60,97,129,180\n0,10,28,136,165,180\n59,61,63,71,169,180\n44,76,165\n44,75,165\n26,47,62,64,68,71,167,186,274,280,301\n27,43,49,55,68,74,145,169,184,190,283,297,301\n24,39,45,58,74,146,184,202,276,302\n47,52,149,162,179,285,287,308\n46,69,180\n40,43,77,158,180\n42,78,80,169\n42,44,49,62,68,156,178,180\n42,47,55,59,81,84,161,178,180\n170\n0,29,57\n180\n2,11,15,44,76,87,90\n0,24,43,76,90\n3\n0,10,18,21,37,44,64\n59,180\n50,72,175,180\n57,180\n58,180\n58,90,150,159,164,168,176,180\n0,3,30,60,64,75,94,123,154,180\n59\n46,52,72,168,172,180\n43,75,164,180\n50,72,172,195,284,315\n45,173,177,180,199,291,315\n170\n16,47,74,166\n53,100,159,180\n43,71,74,111,122,125,180\n31,49,64\n132,171\n32,58,334\n29,58,337,339\n56,180\n54,67,177\n58,160,180\n180\n41,80,173,180\n48,63,84,118,179\n3,41,73,147,166,179\n41,60,72,161,176,180\n48,51,53,78,157,194,282,316\n32,50,81,155,161,166,192,206,280,286,315,325,328\n59,180\n50,60,66,82,158,180\n61,179\n60,180\n48,74,168\n50,85,159,199,220,297,315,351\n61,71,77,83,90,173,193,284,300\n308\n308\n68,192,305\n59,169,174,180\n53\n62\n0,3,9,23,26,28,49\n52,60,62,180\n33,55,180\n35,56\n28,34,53,311\n185,288,290\n0,9,34,37,57,75,77,90,95,102,125,139,142,162,180\n17,62,77,170\n48,76,167,180\n54,58,65,180\n63,80,82,180\n45,48,72,167,179\n59,180\n56,70,74\n18,67,106\n56,180\n56,180\n50,180\n180\n65,186,299\n175\n52,189,191,221,287\n56,175\n62,177\n65,175\n51,72,90,138,181\n188,214,294\n192,226,296\n201,224,275,289\n48,68,77,174,180\n71,299\n44,52,57,59,61,75,298,321\n60,180\n41,73,88,164,180\n59,180\n47,57,60,63,165,167,171,181,287,311\n51,77,80,161,188,204,279,303\n303\n59,180\n61,180\n48,75,167,171,180\n65,183,290,305\n66,178,303\n54,70,178,191,303\n66,181,304\n62,178,194,304\n64,182,309\n53,294\n61,180\n60,180\n60,160,180\n41,45,54,68,93,159,180\n44\n39,55,162,180\n0,35\n0,10,64,92,141,180\n0,6,34\n8,46\n0,22,27,29,42,45,69,90\n0,31,180\n0,29,49,72,98,142,170,179\n42,71,163\n55,172,180\n56,179,295\n60,180\n60,180\n60,180\n43,64,175,191,289,296,303\n45,67,168,176,185,287\n59,178,303\n62,180,301\n53,60,68,70,108,165,289,295,302,305,328\n44,48,51,55,59,64,67,71,75,108,289,294,297,304,308,321\n0,5,41,106\n163,180\n0,15,17,70\n0,20,35,123,180\n61,180\n0,180\n0,20,53,55,75,84\n23,41,60,84,106,138,157\n17,34,53,82,90\n0,10,20,36,46,50,62,66,90\n0,59,61,107,123,180\n13,17,19,33,36,90\n1,31,36,56,58,70,77,90\n0,12,19,27,40,45,48,57,60,68,70,84,109,118,124,128,131,137,157,160,180\n7,54,67,85,90\n2,34,61,65,92,95,106,130,139,144,151,159,173,177\n2,25,28,65,87,109,180\n0,9,66,77,111,114,117,158\n13,34,72,90\n48,63,70,77,90,105,120,134,161,164,179\n0,14,30,54\n17,39,52,57,63,85,151,172,180\n30,51,53,59,69,71,114,136\n2,28,44,66,94,110,113,139,178\n14,34,65,79,136,211,235\n15\n28,35,45,179\n0,60,78\n12,26,40,83,86,105,126,129,137,155,180\n40,110,129,149,180\n24,57,69,180\n180\n62,180\n180\n0,32\n0,31\n0,25,30\n68,180\n66,82,180\n59,83,90,93,104,107,113,120,164,166,180\n55\n56\n0,56\n66,180\n47,77\n45,71,73,148,180\n48\n0,10,58,66,180\n0,7,56\n15,112,130,156,180\n118,147\n0,59,120,180\n123\n13,46,65\n15,44,66\n14,41,62\n17,46,63,65\n93,128,132,159\n0,93,123,149,153,168\n0,4,9,15,17,24,32,45,68\n1,44\n80,86,98\n76\n94,100,111,128,180\n89\n60,77,80,86\n0,14,84,106\n86\n63,164,173,177,180\n61,77,80,157,171\n62,180\n0,14,68\n64,70,81,147,168,180\n59,61,109\n51,53,77,124,179\n180\n60,63,71,92,180\n47,72,114\n87,103,180\n85,109,150,180\n54,73,148,167\n114,180\n43,60,80\n0,50,84\n66,180\n67,180\n60,180\n163,180\n133,140,142,145,147,162,165,169,180\n15,114\n68,88,180\n65,180\n97,180\n62,97\n65\n62\n79,176,180\n65,180\n122,163,179\n0,62,128,171\n0,36\n1,39\n137,152,180\n0,26,56\n70,180\n90,114,153,170,180\n78,97,116,129,142,154,180\n0,56\n45,61,76,96\n59,94\n66,180\n180\n46,63,66,69,79,83\n73,75,122,180\n85,91,157,162,175,180\n53,75,78\n74,126,180\n178,180\n68,180\n71,136,154,163,173,175\n68,111,119,175,179\n0,12,57,76\n3,58,62,163,180\n62,65,67,79,85,163,180\n45,48,72,146,169,180\n106,121,123\n69,78,180\n180\n180\n16,54,77\n74,164,167,179\n65,180\n66,180\n65,180\n180\n55,67,74,180\n48,66,87\n180\n180\n68,180\n69,96,99,115\n180\n72\n73,180\n72,91\n72,94\n86\n89\n78,106,180\n82,91,100,180\n0,28,31,39\n0\n100,113,116,163,180\n117,137,148,158,180\n0,76,78,108\n0,6,69,105\n0,46,71,73,76,117\n68,180\n59\n69\n73,92,111,155,161,168\n0,28,49,64,88\n75,92,180\n46\n136\n180\n180\n0,9,121,162\n0,33,82,124\n51,72,78,94,98,115,147,177,180\n11,21,32,58\n14,41,65\n64,180\n61,75,78,180\n57\n56\n0,67,180\n49\n152,154,179\n0,151,180\n34,55,58,66,75,79,82,104,131,164\n0\n0\n160,180\n0\n0\n84,180\n117,134,137,139,180\n125,134,179\n110,116,119,179\n59\n16,58,85\n58,93\n0,57\n77,180\n131,168,180\n22,50,72,86\n48\n77,180\n77,125,141,144,180\n2,47,87\n27,30,51,77\n76,180\n18,55,83\n169,172,180\n62,94\n30,77\n29\n62,156,176\n97,123,180\n144,151,153,156,164,180\n68,96\n47,78,129,148,153,175,178\n119,121,145,148,154,180\n29,36,51,53\n90,110,162,179\n104,107,129,133,179\n104,127,147,159,161,174,180\n88,111,144,166\n57,82,105\n0,55,93\n0,56\n121,156,180\n36,56,80\n68,180\n68\n67,180\n51,179\n39,66,180\n16,25,66,153,180\n67,160\n106,167,171,180\n85,91,105,111,125,132,139,142,178\n59,92\n61\n0,180\n0,26\n0,180\n0,45\n132,138,180\n130,180\n0,33,60\n180\n180\n180\n0,38\n0,27\n180\n180\n79,90,105,135,180\n77,111,145\n77,91,96,120,142,146,150\n77,101,111,121,140,180\n72,180\n180\n65,180\n0,57\n76,88,91,126,166\n32,38\n80\n40\n78,96,98,128,135,147,179\n78,93,112,154,158,172,178,180\n73,180\n8,57\n15,57\n1\n180\n63,180\n67,73,81,84,119,122,166\n0,57\n0,58\n92,180\n112,178\n165,180\n64\n0,180\n180\n0,98,117,129,138,145\n0,125\n12,80,83,116,125,142,146,157,167,170,173,180\n0,12,52,66\n12,32,69\n155,158,180\n64,180\n26,61,76,84,180\n15,56\n0,55,76\n0,54\n63,180\n49,76\n0,38\n0\n180\n180\n180\n0\n0\n180\n180\n70,180\n85,131,180\n95,152,180\n79,81,105,180\n84,106,180\n57\n0,26,52,66\n55\n19,30,73,88\n56\n65,68,180\n85,90,94,96,122,131,176\n171\n45,47\n54,72,82,148,152,180\n81,116,120,180\n81,84,87,104,113,124,129,134,149,167,178\n0,23,42\n29,46,80\n69,139,175\n80,128,142,146,180\n91,123,137,146,154,180\n123,178\n134,180\n21,37,72\n100,109,136,150,179\n6,8,12,14,27,40,119,153,156,180\n0,54,70\n180\n0,121\n180\n65,180\n136,169,171\n0,9,16,56\n1,55,83\n56\n63,180\n54\n63,180\n149,180\n152,180\n56\n62,180\n73,81,170\n47\n180\n89,109,125,127,153,160,180\n106,123,141,151\n0,27,31,69\n56,69,72,93,102,108,117,126,179\n180\n180\n97\n94,108,112,133,167,180\n153,157,165,177\n96,113,123,167,180\n141,155,180\n54\n63,101,123,130,143,148,159,161,164,180\n32\n87,95,97,104,106,149,153,156,163,180\n0,19,57\n83,101,116,133,159,180\n0,67,180\n67,85,173,179\n62\n62,83\n42,57,80,94\n65,81,83,180\n65,180\n42,57,72,178,180\n70,156,180\n83,113,135,149,153,155,161,164\n58,82,180\n74,178\n65,179\n0,25,33,36,40,52,89\n0,180\n0\n0,180\n180\n180\n1,3,36,53,55\n180\n96,102,122,126,145,156\n76,94,110,121\n75,180\n155,171\n23,56\n72,180\n64,180\n57\n59\n73,131,159,174,179\n60\n47\n61,180\n65,78,180\n58\n58\n0,3,180\n180\n6\n201,249,265\n0,4,9,23,28,30,33,86,109\n0,4,28,50,53,72,75,85,87\n0,85\n122,125,167,180\n10,35,37,168\n2,25,28,40,47,65,170\n0,28\n5,11,29\n35,55,85\n60\n1,31,53,261,356\n71\n83,110,183,189,200,215,219\n89\n221,284,312,329\n233\n274,300,307,309,338\n275,277,295,314\n260,289,291,296,305,308\n160,168,180,203,257\n177,196,226\n0,180\n0,104,134,163,170,180\n25,312,341\n24,310,313,332,358\n58,69,73,163,168,174,180\n160,180\n117,166,169\n357\n3,17,23,31,304,320,343,345\n59,187\n63,65\n74,204\n68,71,205,236\n69,204,221,223,242,284,307\n54,72,98,190,209\n281,297,313,338\n219,222,233,283,286,312,336\n279,313,338\n59,80,190,221\n58,78,188\n72,99,183,196\n2,12,17,31,33,41\n1,27\n4,6,35,167\n4,35,153\n30,181,348\n180\n72\n0\n0,21,31,36,38,164,173\n0,16,19,35,52\n1,12,137,158\n11,147\n89\n102\n180\n90\n0\n4,170\n123,134,140,178\n3,5,25,346\n5,341\n32,56,69,84,105,122,161,180\n0,31\n51,90\n69\n60,95,103,107\n90\n90\n0,48\n0,41\n153,180\n32,53\n0,21,30\n46,127,130,143,158,173,180\n0,11,17,90\n0,36,90\n62,137,180\n0,40,60,81,84,90\n37,41,44,49,95,104,118\n54,57,69,74,85,90\n56,90\n59,91,119\n57,90\n0,29\n142,180\n134,137,158,180\n1,57\n3,38\n71,88,95,113,129\n71,78,90\n8,37,56,71,90\n11,42,58,76\n82,103,106,108,123\n46,55,60,64,73,79,90\n27,30,81\n54,97,125,128,152,167,173,178,180\n1,45,61,81,83,86,90\n0,12,35,42,44,80,89\n67,69,91,121,171\n0,32\n13,35,43\n0,47,56,62\n0,11,15,25,28,56,58\n131\n123,144,166,180\n180\n180\n165,180\n0,21\n0,20\n50,90\n67,89,120\n90\n0,33\n59,84,122\n56,64,72,90\n43\n33\n180\n143,162,177,180\n7,28,48,51,54\n2,50\n0,36,46,50,52,54,152\n47,108,134\n57,77,88,118,138\n47\n52,68,85,105\n0,150,154,180\n59,73,107,123,126,129,138,157\n50,119,148\n58,66,86,114,130\n0,3,159,166,180\n44,46,66,104,136,162,180\n52,137\n60,64,74,117,119\n54,72,77,83,90,111,124,141,153\n0,55,85,90,93,96,99,106,129,180\n0,57,72,77,130,180\n63,91,108,152\n15,180\n0,155,168,179\n0,25,175\n70,89\n53\n149,180\n154,165,179\n180\n0,45\n0,39\n70,122,126,180\n50,86,167\n53,123,127,136,142,154\n23,38,53,78,103,172\n0,35,37,44\n0,17,41\n60,75,97,107,139,158\n38,45,49,57,157,180\n40,62,75,81\n0,44\n66,180\n0,34,59,180\n0,63,65,180\n0,74,180\n282,307,334\n305\n68,163,179,246,321\n21,42,55,72,162,180,231,236,242\n52,71\n55,102,113\n177,199,239,290\n155,158,178,201,285\n6,55,318\n10,56,312,354\n30,59,313,358\n0,23,45,47,50,56,58,309,327,335,338,341\n151,194,284\n152,185,279\n12,14,55,312\n15,54,313,358\n49,314\n46,314\n58,80,183,200,280,285,288\n47,61,185,283\n52,68,71,172,297,311\n64,77,144,169,171,300,308\n31,34,37,51\n0,42,46,58,302\n44,312\n0,54,180\n0,56\n182\n76,87,182\n0,52,79\n67,80,153,164,174\n70,76,80,83,85,87,166,186\n52,309\n46,307,325,345\n71,181\n176\n51\n46,49,307\n49,168,182,310,316\n83,130,175\n80,86,92,95,107,128,157,178\n66,180\n74,175\n74,163,175\n181\n181\n32,52,85,123,180,293,295\n201,300\n63,198,299\n50\n4,56,84\n183\n184\n62,116,118,131,174,293\n61,293\n19,28,50,182,300\n53,184,297\n183,226\n182,187,226\n66,164,298\n69,167,297\n60,180\n59,180\n0,54,71,171\n70,179\n63,78,177,179\n33,42,45,51,59,66,71,88,180\n131,166,178,180\n178\n180\n180\n180\n53\n0,2,4,6,49\n28,55\n9,54\n0,25,46,49\n59,180\n64,180\n49,76\n48\n55,180\n67,179\n180\n180\n46,74\n0,37\n58,175\n61,180\n164\n55\n52,55,58,66,179\n76,180\n63,88,180\n297,303\n300\n58,100\n57,102\n56,96\n54,87\n192,267,292\n189,191,193,201,291\n42,53,311\n306\n9,36,56,307,352\n56,307,339,359\n53,276,296\n36,49,55,300\n31,306\n63,74,174,177,185\n76,175,179,181\n186,207,278,282,291,304\n183,196,280,294\n199,274\n199,271\n9,25,55,61,68,96,102,104,142,174,180\n1,140\n0,30\n1,178,180\n0,2,108,123,125,160\n0,3,9,129,165\n0,8,40,121,129,160\n0\n0,2,138,179\n0,39,135,166,170\n25,94,102,126,133,143,155,161\n157,160,180\n161,180\n0\n0,7,45\n3\n66,99,129\n62,78,103,124,127\n106,124\n0,27,30,38,171,180\n0,5,133,146,150,163\n180\n3,39,164\n1,18,21,127,168,180\n162,180\n63,114\n67,85,88,90,105,125\n180\n123,148,322,336,347,357\n125,297,318,326\n8,50,342\n6,8,10,12,23,335\n2,16,342\n16,305,335,343\n1,6,111,231,245,324,347,350,359\n103,108,114,240,249,260,276,300,319,349\n72,78,85,101,105,110,120,271,287,307\n111,133,185,267,301,350\n9,25,332,348\n16,335,337,352,354\n162,164,173,188\n210,251\n13,137,235,238,298,320\n5,128,237,314,317,327,334,339\n283,303,327\n304,330\n314\n15,224,357\n3,18,43,74,212,249\n13,15,188,220,246,248,340\n200,208,226,248\n204,217,246\n202,219,231,234,252,265\n154,174,211,248,265,267\n219,264\n210,249\n1,8,10,12,45,77,291,338\n12,52,296,341\n17,27,328,345,347\n14,48,339,348\n110,329,348\n21,53,76,79,103,351\n2,6,90,105,339\n10,89,351\n122,140,166,173,208,210,220\n134,147,167\n136,217,236,266\n128,145,147,191,194,236,265\n119,126,132,136,226,239,248\n135,154,226,241\n93,116,119,123,276,302,340\n92,110,122,130,243,277,299\n98,107,114,117,123,253,310,316,342\n99,121,251,271,335,343,348,351\n306\n306\n236,250,276\n180,229,252,255,257\n247,279\n16,339\n339\n5,308,342\n13,339\n122,145\n137,155,229\n215,218,221,254,260\n216,221,224,230,232,253,269\n222,228,234,254,270\n313,343\n347\n34,54,290,309,320,345\n1,33,50,293,311,320,328,339\n10,20,26,335,353\n114,126,136,160\n103,120,204\n10,290,329,352\n0,3,25,46,56,87,123,127,135,142,145,155,180\n0,27,45,48,50,76,122,165,177,180\n78,118,148,151\n180\n180\n0,21,42\n0,2,29\n1\n0\n0,14,25,50,84,121,180\n0,13,34,41\n0,30\n56,81\n21,330,357\n17,345\n356\n6,20,34,341,351\n9,33,36,350,352,356\n31,56,355\n17,27,30,321,358\n0\n0,22,24,42,44,51,85,90\n0,66\n0,2,16,42\n180\n0,132,160,180\n0,45\n5,9,22,54\n180\n0,18\n62,88\n33\n20,145,180\n1,10,12,20,27\n180\n0\n137\n135\n144,148,161,163\n6,18,120,142,146,161,164,166\n122,271,313,325\n114,261,318,343\n305,325\n123,147\n134\n0,8,302,304,331\n2,301,335\n5,32,54,75,79,89,338\n9,26,44,47,51,87\n77,83,106\n51,75,104\n119,121,123,150,199,220,251\n116,150,161,199,225,247,250\n149,167,184,189,195\n132,135,138,150,167,182\n152,156,216\n149,175\n130,150,162,164,181\n169,177\n3,7,50,114\n2,4,48,112,169,175\n261,285,322\n261,287,323\n110,115,127,147\n116,139,155\n303\n303,323\n101,122\n102,121\n247,255,257,261,281\n247,281\n287,332,334\n8,290,332\n9,80,101,348\n12,101,348\n128,164,197,234,241\n119,125,128,148,163,190,194,196,231,233\n72,99,117,119,136\n49,96,98,106,112,134,165\n279,291,301,304,322\n250,266,278,287,301,305,332,352\n289,304\n304\n126\n126\n11,18,23,33,70,77,86,113\n21,39,59,88\n136\n136\n51,337,355\n47,338\n118,146,168,170,221,244\n118,141,154,169,172,188,221,244\n89\n90\n52,55,90\n0\n0,8\n1,3,38,58\n0,132,151,174,180\n0\n74,90\n24,337\n162,179,198\n0,10,19,39\n39,59,180\n59,180\n23,93,252,268,322,338\n0,66,180\n0,180\n0,7,33,112,142,180\n0,22,51,87,107,129,150,180\n0,43\n19,177,180\n74,296\n0\n21,159,166,173,175\n56,180\n31,46\n53\n0,10,14,29\n0\n0,44\n136,143,146,180\n60,110,150,167,180\n43,56,102,168\n60\n56\n60,68,75,80,90,178,180\n59,303\n59,302\n71,85,97,105\n49,72\n56\n0\n180\n69\n69,88,103,111,136\n0,14,18,21,34,41,131,134,156,162\n15,20,29,59,61,90,111,139,141,144,165\n48,80,164\n0\n67,180\n0,56\n56,305\n56,305\n59,173,180\n54,75,123,169,177\n57,180\n69,180\n182\n0\n0,22\n61,74,109,141,180\n29,54,77,83,89,108,162\n38,52,87,90,97,105,174\n46,62,71,107\n31,49,97,143\n35,48,73,95,141,172,286\n35,74,94,155,171,293,317\n58,83,158,164,166,180\n19,41,59,174,180\n61,63,80,179,284,338\n91,178,180,189,306\n52,57,61,114\n63,114\n99,261\n58,82,168\n61,80,177,180\n60,79,102,105,113,116,124,127,133,156,176\n63,180\n36,65\n0\n34,36,43,47,59,80,90\n1,9,35,90\n13,21,35,52,55\n49\n0\n8,12,49,126,154,180\n0,34,36,50,71,90\n1,4,39,73\n66,68,86,136,151,153,155,166,180\n0,27\n0,57,84,122,141,144,146,149,164,180\n0,47,99,131\n137\n0,39,152,180\n1,8,29,51,58,62,73,84,89,100,104,106,109,131,152,180\n0,162,180\n0,8,26,81,150,180\n65,75,81\n80\n27,29,66,68,109\n51,71,98,105\n31,33,59,79,102,235,256\n36,38,41,56,62,90,158\n180\n66\n67,108\n67,174\n12,39,54,96,153,158,174\n161,167,180\n60,145,180\n33\n24,28,45\n48,54,56,59,66,78,162,180\n55,67,86,180\n16,19,42,63,67\n47,154,180\n15,33,39,58,104\n0,20,23,45\n12,21,61\n66\n0,25,38,58,65\n43,67,73,84,87\n0,16,18,29,32,36\n22,30,44,53,56,58\n39,62,78,173\n28,61,81,153,180\n2,49,77,85\n0,26,30,37,41,45,51,55,61,65,90\n60,180\n0,16,138,157,168,180\n0,13,29,48,90\n15,131,152,158\n49,53,68,96,112,142,173\n51,71,74,87,110,132,174\n59,62,93,167\n15,40,57,73,110,115,130,139,143,149,155,180\n0,5,40,74,104,137,159,180\n0,7,85,107,134\n0,11,112,132,144\n61,180\n64,89,148,161,167,180\n60,67,77,108,148,171,176\n21,25,45\n36,40,49,54,82,157,171,180\n37,57,180\n52,55,63,155,180\n20,47\n47,67,168\n2,32,34\n0,3,19,38,64,72,79,81\n124,140,174,180\n40,47,49\n17,46,310,342\n1,31\n42,54,56,65,73,85,90\n0\n62,85\n23,32,56,71,83,87\n192,303\n63,159\n180\n67,81,84,175,177\n48,66,109,174\n238,289\n0,46,55,61,79\n0\n0\n15,32,40,63\n180\n63,76,79,176\n64,73\n57,83\n0,7\n180\n57,180\n54,75,90\n69,80,82\n66,80\n103\n71\n180\n40\n0,5,9,17,57,75,78,85\n0,9,31,43,49,63\n2,19,47,61\n60,64,86,121\n43,75\n43,47,77\n41,78,96,101,104,109\n176\n180\n180\n0,29,33,71,90\n0,118,156,180\n0\n36,40,88,90\n130\n0,3,8,20,28,30,49,70\n0\n90\n10,33,65,88,95,102,122,141,150,164\n8,64,93,109,126,149,158\n4,19,235,254,263,277,282,302,306,319,322,328,335,349\n1,235,278,288,300,325,344,358\n10,109,128,167\n10,15,21,23,25,109,124,174\n21,28,50,105,113,125,137,152\n0,6,50,64,83,121,146,173,177\n6,8,21,58\n66,85,99,104,179\n69,180\n66,209,306,338\n66,207,306,332,334\n187,280,285,291\n111,136\n105,129,133,138,141,143\n90\n35,47,56,69\n70,90\n41\n24,47,54,60,90\n64\n0,9,39,58\n0,45,91,95,122,135,155\n182\n64,90\n34,92,132,180\n0,33\n90\n180\n4\n22,44,47\n176,184\n181\n0,6,24,52,79,82,84,90\n303,330,353\n58,106\n58,92,99,114\n27,31,42,68,102,140,172,176,180\n0,3,20,22,25,32,35,37,52,78\n71\n55,80,96\n82,86,89,93\n180\n180\n51,63,71,180\n0,5,152,156,180\n0,22,29,40,88\n136\n41\n101,168\n98,164\n49,52,61,86,113,180\n63,301,323\n59,195,248,293,330\n50,52,69,167,172,180\n31,61,180\n41,48,61,69,160,180\n25,49,63,71,180\n50,71,73,169\n45,59\n57,176,180\n59,174,176,178\n0,24,34,36,90,136,158,160\n57,59,69,180\n58,180\n0,30,55,57\n32,55,59,72,78,156,171\n34,45,58\n54,81,87,90\n1,10,20,43,70,104,110,115,118,139,142,161\n128,141,145,152,180\n0,8,36,52,88\n179\n77,177,180\n180\n49,81,163\n180\n58\n62,79,82,99,106,109,112,120\n66\n67\n28,61\n0,17,123,125\n0,31,55,66,76,89,154,178\n59,102,180\n54,67,168\n62,180\n180\n30,56\n0,6,11,14,180\n0,35,120,142,146,180\n14,18,23,39,44,147,180\n0,30,59,112,121,155,159,180\n0,9,13,24\n12,92,141,156,164\n13,25,53,78,94,114,145,179\n45,70,158,171\n8,19,42,57,60,80,171,176,179,188,201,205,208,222,251,271,299,341\n11,17,38,55,169,201,309,313\n68\n48\n0,4,58,180\n0,9,46,120,166,177,180\n1,18,52,70,115,180\n180\n0,10,12,14,30,48,69,133,180\n78,99,169\n76,95,99,103,150,168\n70,141,168\n72,165\n29,49,72,74,168\n52,59,180\n33,58,90,100,148,180\n0,2,31,51\n0,2,8,42\n59,180\n13,48,178,192,297,311\n43,155,182,282,297,353\n70,72,149,164\n70,164\n33,37,41,166,177,203,308,355\n9,23,42,45,179,190,204,311\n68,163\n66,165\n0\n0\n114,133,180\n0\n0\n0\n0\n0\n0\n0,180\n180\n0,8,159,180\n151,180\n0\n11,22,35,150,179,183,194,197,348\n1,5,157,166,181,199\n15,355\n221\n216,238,244,259\n22,234,246,249,255,261,268,341,356\n248,358\n4,296,303,314,338,359\n2,246,249,305,344\n6,12,298,346\n19,76,80,117,129,131,234\n16,118,144\n0,180\n0\n68,180\n65,79,81,108,169,187\n295\n295\n292\n180\n184,292\n184,282,287,292,300\n179\n56\n21,55,309\n1,40,56,306\n65,185,302,319\n59,77,178,303\n176\n71,157,178\n180\n63,303\n65,183,305\n33,58,61,306\n33,57,300,325,334,355\n180\n181\n67,175,301\n68,175,299\n66,176\n66,131,180\n301\n187,205,293\n191,294\n192,194,297\n191,211,296\n199,268,298\n60,299\n62,300\n67,193\n59,74,298,301,310,323\n38,44,59,62,195,296\n38,62,76,79\n283,292,298,320\n65,83,176,202,228,263,296\n59,70,167,189,262,282,285\n0\n0,18,43\n63,180\n146,180\n180\n54\n14,54\n0,5,7,56,79\n50,65,170\n180\n61\n59\n13,34,55,306\n51,305\n308\n51,306\n50,307\n0\n0,40,180\n0,67,74,90\n0\n143,179\n0,48,60,90,96,98,103,129,180\n0,15,109,119,142,180\n0,25,27,30,49,55,60,77,100,103,105,138,141,173\n0,180\n0,7,135,156,180\n0,28\n0\n180\n180\n180\n0,27,31,41,46,55,57,70,102,128,144,180\n0,180\n180\n180\n8,180\n0,180\n0,179\n0,61,89,112,180\n180\n2,4,51,71,128,130,147,170,180\n0,11,35,38,55,75,78,110,130,150,170\n89,114,126,147,154,159,179\n28,103,134,150\n129,133,143,148,154,159,163,169,176,196,230,236,239,243,247,249,257,269,273,275,315,317,346\n3,138,145,156,185,217,229,232,245,249,262,272,276,294,299,305,309,329,349,359\n103,125\n2,4,21,30,39,45,67,82,97\n1,15,33,90,93\n138,152,155,171,214\n139,186,194,217\n157,173,220,224\n156,217,220\n50,93,118,147,153,183,185,209,224,258,264,270,337\n19,85,141,196,198,201,205,209,211,243,264,327,336\n139,165,219,248\n11,26,121,235,264,293,300,308,314,326,332,338,353,356\n3,7,23,26,101,172,233,257,275,294,310\n3,22,35,45,61,88\n1,133,171,180\n0,23\n151,155,158,161\n151\n65,180\n57,175\n25,57,303\n57,296,304,306\n302\n0,63,180\n133,180\n63\n60\n63\n60,62,180\n180\n0,78,96,101,110,180\n63,180\n66,174,296,303,306,309\n64,175,299\n26,65,67,173,192\n61,90,174,194\n60,172,296\n1,128,150,170,180\n59,180\n54\n180\n15,52\n10,25,53,60\n54\n48\n48,299\n52,300\n302,325\n301\n303,332\n179\n60,83,85,102,178\n60,82,173\n67,76,85,105\n58,306\n191,208,298\n189,210,216,299\n295\n265,295\n251,275,288\n195,251,266,289\n60,184,302\n58,174,303\n54,306\n55,305\n180,186,196,249,268,270,295\n179,185,192,240,273,295,300\n64,174\n65,175\n72,88,92,133,168\n190,198,206,284,289\n190,194,206,286\n236,239,263,281\n193,224,246,263,265,278,292\n0\n0\n0\n0,44,47,66,102,119,129,132,149,180\n0,57,65,90\n0,5,7,24,27,29,31,39,156,180\n0,12,15,17,46,65,85,95,104,107,130,144,150,153,158,161,169,172,180\n0,64,94,127,130,136,180\n1,112,141,256,272,313,332,349,358\n90\n0,35,55,73,109,115,123,126,130,134,180\n89,123,136,144,180\n80,97,141\n55,76,171,180\n72,178,180\n71,180\n158,180\n153,169\n9,27,50,71,78,81,98,122,145,171,180\n0\n0,21,36,45,64,75,83,94,100,127,153,156,177,180\n1\n5,25,38,67,93,164,297,313,336,341,347,353\n12,35,40,47,68,85,296,311,336,341,350\n0,7,25,35,45,48,63,65,68,94\n28,36,46,79\n50\n123,140,164\n90\n63,90,93,124,166,168,171\n0,42,62,90\n179,218\n0,30,52,85\n87,98,107,112\n0,2,14,45,47,75,114,139\n89,104\n85,105\n16,28,35,42,65,79,101,135,160,180\n36,44,46,54,75,91,216,235,252,279,300\n0,180\n0,180\n0,46,180\n0,22,27,42,78,120,122,139,143,148,158,179\n55,70,74,258,358\n0,50,71,89,218,342\n24,49,67,88,135,182,266,274,280,350\n50,83,153\n38,65,91\n70,94,96,98,104,249,259,266\n8,178\n0,97,107,180\n28,65,91,155,180\n62,165\n67,167\n107,110,126\n0,14,18\n44,48,64,80,82,84,104,106,126,131,156,168,176,178\n106,115\n68,156,180\n15,53\n65,157,172\n64,180\n62,72,85,101,143,152,165\n55,62,180\n59,69,73,75,180\n34,59,84\n0,6,19,28,46\n0,17,21\n75\n0,9,33,50,76,79\n54,59,65,74,79,82,95,180\n98,116,142,172,180\n0,26,28,43\n36,54\n35,41,55,70\n4,19,41,177,321,337\n75,118,139,151,172,180\n21,23,46,48,70,108\n0,13,16,25,82\n24,40\n40\n0,179\n0,5,14,20,28\n2,26,28\n0,10,19,24,116,135\n0,18,98,130,166\n109,142\n0\n58,180\n61,176,180\n180\n56\n42,62,180\n0\n0,40,61,66,68,143,180\n0,75,90\n1\n53,73,92,109,133,172,180\n0\n2\n180\n120,145,147,169,174,178,180\n0,28\n11,56,128,165,180\n28,66,90\n0\n180\n0,23,54,77,148,179\n145,178,180\n61,152,180\n0,80,101,122,142,145,180\n0,8,81,113,133,136,143,148,180\n0\n15,24,27,53\n6,8,25\n0,23\n2,52\n2,31,42,56\n180\n180\n141,166,180\n180\n180\n180\n0,38,50,95\n0\n141,180\n179\n8,25,41,61,64,116,124,154,156,161\n148,151,155,158,162\n0,43,54,64,93,123,140,157\n0,67,89,96,98,105,125,132,137,144,146\n4,7\n1,3,17,19\n0\n0,9,25,48\n180\n180\n180\n180\n70,117,147,151\n0,9,11,35,72,95,122\n180\n180\n144,180\n0,180\n0,177,180\n0,20,25,60,172\n128,149,171,176\n180\n180\n0,42,131,161,180\n3,23,36,51,112\n2,15,40,55,58,70,132,161,168\n180\n158,180\n0,2,9,54,89,136,144,148,151,179\n138,180\n0,159,180\n0\n0,180\n0\n97,142,161,180\n82,127\n126,165\n151\n128,140,158,182,186,190,222,244,250,256,298,345\n128,133,231,243,249,264,284,292,301,303,320,347\n107,118,124,136,142\n112,116,118,120,122\n121,132,141,148\n0,41,53,64,89,115\n40,43,50,55,63,70,92,108,110,356,359\n18,21,47,77,90,104\n149,165,167,172,229,260\n116,133,155,177,228\n179,243,268\n167,184,199,219,222,227,250,257,264\n131,155,205,208,214,236,238\n159,165,228,238,242,244,271\n150,213,242\n152,227,232,240\n140,165,178,212,214,232,234,273\n188,202,205,208,236,253,256,258\n115,124,145,172,227,231\n169,181,194,218,236\n238,251,266,282,287,292,295,298,322,348\n224,237,242,260,300,320,325,345\n25,70,96,146\n135,138,145,152,176,217\n141,145,148,159,165,167,173,179,213\n254,269,272,298,331,351,353\n266,295,298,314,334\n0\n0,35,132,134,137,180\n33,64,79\n0,39\n49,52,65,93,110,126,129\n136,154,180\n159\n0,29\n0,18\n180\n0\n0,13,33,120,149,180\n0,45,49,59,90\n0,2,7,10,19,23\n0,34,36,44,70,77,84,128,153\n0,19,21\n0\n0,15,33,162,180\n0,20\n139,180\n20,28,42,119,149\n46,118,159\n20,84,101,117,216,227,230,261\n21,52,63,108,233,239,244\n51\n28,50,76\n35,71\n36,96\n29,34,38,106,214\n39,67,224\n212,238,257\n212,237,253\n106,127,138,166,201\n102,152,201,215\n251,274,290,326,329\n6,8,13,17,268,290,309,326,338\n271,327,349\n277,292,294,302,307,315,323,337,343\n83,109,131,136,152\n85,87,105,135,141,148,152\n105,134,138,142\n72,93,98,108,127\n4,6,12,18,46,63,83,105,132,156,160\n8,15,38,44,57,96,101,116,142,159\n17,42,46,54,68,101,233,243\n15,19,25,27,41,45,47,50,77,87,101,208,251\n36,59,79,104\n109,140,163,179,198,221,238\n109,140,164\n22,55,74,102,105,110,113,188,192,217,239\n10,12,37,96,195,230\n42,198,218,238,242,246,265\n65,112,207,232,267\n32,225,246\n53,75\n25,131,133,321,349\n25,50\n1,3,8,17,34\n22,229,247,348\n2,22,251,307,343\n6,246,269,358\n246,310,349\n223,246,264,288,337,352\n6,359\n1,240,256,274,310,335\n110,147,164\n89,91,105,120,140\n111,132,155\n109,139,157\n5,13,18,241,251\n19,95,116,235,260,357\n18,112,239\n115,130,133,162,244,248\n23,98,131,239,343\n25,222\n21,40,205,225\n70,92,177\n68,158,168,180,272,309\n295,307,317\n58\n11,67\n60,301\n56,281,302,317\n42,58,299\n52,302\n65,176\n64,176\n114,118,175\n72,170,179\n75,124,155,177\n86,123,179\n93,135,176\n61,177\n118,139\n70,177,200,301\n174\n63,81,175\n146,152,178\n71,181\n1,28,48,61,63,317,354\n24,53,55,169,303,326,340\n10,355\n188,190,222\n37,57\n57\n55,305\n54,305,322,329,334\n214,235,237,300,325\n193,221,223,237,240,244,247,301\n195,217,220,258,306\n70,181\n66,129,132,174\n61,76\n79,95,98\n76,172,177,179\n58,84,95\n35,45,62,198,294,306,310\n54,69,190,306\n68,171\n46,49,58,60,62,186,303\n189,227,291\n187,221,296\n55\n58\n169,172,176,185,289\n62,177,307\n62,96,179,306\n57,177\n166\n55,85,108,111,125,138,140,152,175\n59,85,107,124,127,147,175\n103\n261,302\n302,328\n302\n59,189,233,285,289,302\n58,83,190,213,300\n62,84,303\n61,176\n62,177,304\n0,130,136,144,146,159,165\n180\n0,29\n1,17,23,30\n0,3,5,29\n0,4,136,348\n34,44,51,74\n302,333\n178\n100,130\n66,92,94,127,155\n87,100,114,117,123,130,135,145,148\n78,82,86,91,110,114,128,149\n198,218,220,225,253,262,271\n103,105,113,133\n103,133\n26,28,60,180\n46,67\n180\n159,180\n22,55\n23,29,38,57\n33,62,180\n42,61,180\n60,168,300,310\n36,58,168,298\n56,86,94\n54,78,82\n302,304\n302\n139,155,181\n64,90,172\n64,171\n55,68,88,164\n49,66,89,118,165\n66,92,169\n64,123,136,173\n64,88,160\n57,105,163\n61,164\n186,223,298\n192,228,296\n297\n193,254,259,296\n69,80,169,189\n53,177,295\n59,179,299\n47,63,307,314\n38,52,54,303\n44,300\n64,170,173,175\n63,83,171\n59,65,70,179,182,293,299\n58,182,291\n40,61,324\n61,171,314,317\n181,184,199,277,296,301\n0,4,26,53,159,180\n54,180\n24,166,177\n156,191,225\n155,174,191\n62,180\n76,172\n57,80,103,180\n0,31,49,162\n153,180\n127,159,179\n0,25,44\n15,42,59\n4,46\n0,49,82\n65,180\n69,85,180\n60,66,69,72,96,180\n67,180\n0,42,62\n8,69,156,178,180\n44,49,63\n12,45\n3,44\n67,89\n23,67,307,319,322,327,329\n21,46,302,316,338,341\n47,62,306,311,316,356\n41,60,315\n51,193,196,286,304\n52,189,284,311\n45,321\n0,4,27\n28,47,60,67,73,77,89\n0,19\n138,142,175,178\n1\n0,17,44,76,80,96,104,115,126,171,180\n0,9,16,23,28,31,34,66,88,105,112,122,124,128,135,147,156,166\n125,138,151,180\n9,29\n0,7,9,17,37,57,63,69,89,151,180\n0,3,16,36,91,122,131,151,155,158,160,177,180\n60,65\n63,180\n70\n32,58,65,180\n3,9,12,19,154,162,164,169,173\n2,69,90,95,99,120,140\n26,106,120,169,188,334\n38,40,46,59,91,106,108,115,136,138,154\n0\n143,180,216\n56,123,182,241,271,290\n118,138,174,245,316\n94\n3\n20,22,49,79,84,92,95,153\n0\n0,180\n0,14,180\n0\n2,6,13,180\n22,180\n0,24\n0,22,180\n169\n13,21,30,71,73,238,334\n0\n0\n4\n0\n0\n68,70,182,185,302\n65,186,300\n199,294\n192,194,290,300\n0\n63\n57,59,310\n189,296\n187,203,297\n0\n0,2\n196,239,292\n0\n0,25\n0\n92\n17,77,96\n68,151,172\n69,177,201\n287,290,306\n0\n0\n0,25,49,69\n0,28\n66\n66\n293\n294\n0,11,26\n83,85,102\n87,105\n7,11,14,46,54,58,148,155\n14,47\n5\n11,163\n16,51,140,171\n4,13,41,59,171\n4,35,54,86,224\n4,7,36,59,69,217,219,236,239\n257,268,270,339\n265,339\n225\n222\n225\n228\n63,163,180,279\n1,40,280,343\n0,39,62,80,162,180\n66,116,138,141,145,167,180\n0,3,27,29,65\n13,36,58,76,101,119,172\n0,9,60,74,106,157,159,171,180\n0,63,104,107,110,133,145,172,177,180\n0,2,33,39,42,59,76,102,146,155,168,174,180\n84,109,115,180\n99,152,156,165,172,176\n0,8,37,69,100,103,106,123,162,169,175,178\n63,106,133,171,177,180\n46,66,82,117,170,173\n143,163,180\n0,22,32,60,68,96,111,132,155,167,171\n1,3,7,122\n61,177\n32,34,38,56,180\n56,168\n61,180\n27,58,109,140,180\n39,64,94,180\n27,61,86,154,178,180\n0,12,30,36,51\n36,55,77,99,102,105,144,179\n21,55,71,77,87,91,95,124,139,163\n50,53,62,175,177,179\n13,50\n14\n13,102,106,260,263,282,333,351\n52,64,180\n61,180\n56,178\n59,180\n60,180\n61,180\n3,315\n0,21\n51\n3,72,114,133,162,165,180\n47,110,115,132,160,169,172,180\n0,180\n0,179\n0,180\n7,9,29,87,180\n2,102,149,154,158,185,189\n3,49,96,118,120,136,161,164,181,184,188,198,236\n8,32,41\n14,30,33,64,356\n138,143,149,172,184,188,198\n142,182,198,204\n11,48,190,205,211\n13,344,346\n181,279,297\n181\n69,177\n66,82,142,178\n76,78,141,169\n306,316\n295\n57,70,72,170\n32,56\n48,50,61,180\n60,94\n47,66\n286\n58,62,180\n180\n180\n1,187\n169,188,192,212,358\n15,17,156,184,206,208\n26,167,172,180,199\n0,3,37,180\n46,61,66,156,165,177,180\n142,155\n119,129,138,178\n180\n146,178,180\n76,92,127,131,180\n100,139,157,180\n22,26,33,74,89,102,306,321\n58,79,87,135,148\n81,103,134\n151,168\n43\n85,149,161\n150\n32,44,82,174,180\n0,75,147\n83,131,145,151,173,179\n96,103,107,117,148,180\n72,82,84,88,131,140,148,150,158,160,162,170,180\n106,150,163,180\n73,148,167\n69,129,154,171\n42,72,175\n44\n23,57,74,77,97,106,109,180\n80,152,169,180\n1,3,14,16,124\n59,180\n9,52,172,331,344\n4,17,54,166,312,340\n17,21,34,58,141,310,312,330,347\n19,28,33,36,57,60,64,312,336,341,353\n78,160\n78,131,161\n68,125,155\n68,102,117,131,152\n10,39,74,291,323,347,359\n18,43,346\n6,13,19,24,44,56,80,174,311,330,359\n15,46,53,162,180,313,357\n4,39,66,70,298\n1,40,65,75\n12,29,56,76,86\n46,64,141,163,180\n57,83,179\n44,64,180\n62,180\n39,54,56,68,72,169\n52,174,299\n56,175,194,287,300\n0,21,36\n0,180\n0,180\n180\n0,52,180\n0,180\n1,6,48,73,172,176,180\n0\n0,27,48\n45,75,168\n22,61,180\n0,11,35,117,133,157,159,173\n0,36,144,180\n21,46,54,63,93,115,180\n0,14,33,61,66,73\n212,214,235,237,255\n226,252\n0,9,15,18\n0,6,13,33\n46,62,180\n67,166,168\n55,57,72,75,80,164\n26,44\n56,73,163,173,177\n53,59,170,175\n58,143,163,179\n0,180\n0,54,139,180\n27,105,129,146,163\n48,103,105,130,180\n0\n0,25,31,180\n0,180\n0,3,8,20,23,71,91\n17,55,130,132,139,147,153,180\n0,24,34\n4,7,60,97,137,155,172\n0,177,180\n0,8,31,59,154,164,167,180\n0,7,28,34\n0,18,176\n32,66\n2\n0,179\n146,149,156,169\n180\n73,86,101\n0\n0,180\n0,6,180\n0,163,180\n0,6,150,169,180\n0,20,23,151,180\n32,64,67,95,119,122,180\n63,95,180\n51,92,123\n56,60,74,180\n0,55\n58,174,176\n74,178\n64,180\n65,170,185,201,290,312\n62,67,200,301,306,311\n68,302,320,328\n297\n191,299\n57,71,184,194,301\n60,75,176,193,288,308\n52,282,307,316\n53,60,84,297\n69,71,210,262,304,321\n57,71,300\n38,66,68,85,131,146,149,176,206,220\n49,54,56,63,68,74,76,123,128,133,140,169,180,186,224\n60,65,71,160,177,211\n173,202\n165,189,194,202\n161,194\n167,171,188,193\n164,166,171,179,191,208\n0,14,45,56,81\n31,44,55,66,89\n180\n163,180\n180\n0,4,12,18,46,66,90\n9,13,21,29,34,39,69,78,82\n0\n180\n180\n80,88,91,98,108,114,119,138\n180\n60,303\n0,107,111,118,127,132,141,143\n301,324\n59,174,299\n61,174,299\n24,38,96,150\n270\n270\n38,51,54,319,322\n30,48,182,294\n181\n181\n303,321,342\n299,314\n299,315\n49,61,68\n47,76\n17,40,327\n38,328,340,347\n0\n0,29,153,177,180\n38,41,62,90\n0,35,40,50,90\n49,56,60,64,72,75,98,119,154,160,173,180\n1,34,38,78,87,90\n101,126\n0,8,59,79\n118,180\n21,27,29,87,97,108,162,170,172,174,177\n0,44,79,96,139,180\n27\n51,59,70,90\n154,181,209,227,237\n339\n340,349,351\n0,31,42,47,51,59\n0,47\n0\n0\n0\n180\n0\n0,19\n0,5\n178,180\n0,37\n0,7,12\n0,18,62\n0,28\n6,38\n53,180\n180\n53\n55\n0\n0,6,8,18,38,71,80,83,90\n51,87,90\n0,2,31,82\n5,14,17,26,57,62,68,75,121,127,130,142,157,165\n56,60,71,82,90\n49,69\n34,55,90\n51,72,104,119\n136,180\n0,34\n0\n0,28,30,35,39,41,43,45,100,131,133,135,180\n0,22,37,58,64,67,90\n0,35,90\n51,69,102,113,127,179\n56,75\n0,30,32\n180\n37\n27,58,64,79,82,108,137\n0,23,125,136,142,156,167,172,180\n126,135,152,155,160,165,180\n337\n2,22,26,45,48,51,61,64,79,90\n0,26,104,131,148,167,176\n160,191,250\n160,167,171,203,207,217,221,244\n139,161,164,176,180\n0\n85,90\n35,53,63,80\n77\n302,305,327,333\n0,20,26\n32,51,70,78,87,103,109,113,115,122,131,133,141,143,160,164\n0,71,90\n7,35\n0,29,48,67,89\n0,8,10\n0,8,28,43,77,98,127,141,164,170,180\n34,37,57,63,67,74,90\n0,2,11,43,90\n64,75,80,114\n90\n0,2,37\n0,59,93,120,135,139\n0,6,11,180\n179\n0,2,6,28,155,180\n0,129,137,151,173,180\n2,25,34,36,180\n180\n51,305\n111,275,301,305,320,336\n168,204\n304\n305\n18,308,312,318,322,325\n4,38,42,50,53,280,310,314,323,327\n293,321,323,331,337,354\n286,288,306,325,330\n117,126,133,160\n112,140,165,206\n0,10,16,18,26,36,77,126,139,171,174,177\n20,36,77,96,99,156,180\n57,180\n180\n73,124,177\n66,84,125,173,182\n63\n0,39\n0,45,70\n0,166,169,180\n19,54\n196,298\n314\n74,308,312,315,328,335\n1,3,24,35,44,53,90\n44,58,61,75,97,99,102,123,156,159,175,180\n0,166,180\n33,126,145,159,180\n0,180\n0,180\n180\n251,304\n24\n0\n0,20\n0,15,18,33\n14,46,81,105,112,123,145,180\n37,43,63,87,90\n39,90\n0,16,21,47\n0,45,90\n0\n90\n0,2,7,9,30,47,62\n0,32,34,38,51\n28,48\n58,180\n180\n0,12,37,40,71,171,180\n0,3\n181\n87,251,258,272\n54,79,82,98,106,111,130\n163,166,180\n180\n126,319,325,329,333\n125,137,146,300,305,312,319,331,335\n155,168,180\n61,90,102\n0\n71,262,289\n69,292\n0,43,64,90\n14,36\n0,14,17,29,48\n2,8,10,17,26\n0\n0\n0\n2,8,13,180\n1,14,33,54\n180\n12,113,122,142,158,180\n0\n19,191,217,287,310,340\n0,33\n180\n1,30,180\n162,180\n0\n180\n0\n24\n15,47,49,76,127\n21,181,200,206,210\n29,200,203,231\n59,90\n184,304\n179,302\n0,29\n154,180\n180\n177,180\n0\n0,24,120,136,168\n0,37,147,180\n35,96,109,126,151,157,180\n180\n0\n180\n0,169\n1,5,180\n0,16,180\n0,180\n0,33,67,180\n0,180\n0,23,55,132,151,180\n0,180\n0,145,180\n0,180\n0,143,151,180\n3,10,19,21,30,166\n45,59,86,89,137,158,172,177,191,194,232,248,266,319\n10,43,78,103,151,153,176,245,257,266,287,326,331,338\n0,20\n1,21,167,173,180\n0,154,180\n24,44,57,84\n97\n0\n2\n64,80,119\n56\n2,64,78,135,180\n49\n71,85,111,115,145,180\n45\n47,54,61,180\n49,130\n56,63,174,185,302,342\n49,69,173,295\n61\n72,82,104\n180\n286\n188,277\n82,160,167,180,294,296\n75,95,132,156,162,168\n177,179\n129,150,180\n11,147,175,180\n0,180\n180\n0\n180\n2,4,180\n180\n6,161,180\n0,170\n0\n180\n179\n180\n180\n0\n151,176,180\n59,75,97,117,164,192,220,251,264\n74,104,237\n50,54,61,77,89,96,211\n180\n0,79,107,126,136,161,180\n0\n146,173,178\n180\n0,49,76,87\n0,122,143,173,178,180\n0\n0\n180\n0,7,144,171,180\n180\n0,180\n1,180\n0,25,127,157\n0,2,20,46,67,97,100\n0\n0\n148,175,179\n9,39,51,54,136,139,159,178\n0,75,107,180\n0\n0\n137,150,153,180\n42,44,46,113,132,162,168,171,196\n42,46,74,107,137,166,168,201,204\n30,49,73,91,119,176,181,190,199,206\n47,70,89,116,204\n4,17,323,328,341\n7,245,326,341\n107,115,150,176,181,199,219,224\n109,116,146,192\n30,121,147,166,194,204,313,317,321,324,332,335,356\n31,57,60,136,150,156,162,203,314,327\n14,180\n0,162,165,180\n8,163,180\n167,186\n155,188\n0,30,34,58\n0,84,180\n0\n180\n136,158,180\n0,180\n0\n180\n2,30\n0\n139,180\n2,7,25\n180\n180\n65,157,162,173,180\n0,21\n39,133\n0\n0\n20,26,34\n22,37,322\n180\n159,173,180\n0\n0\n180\n12,35,37,180\n13,16,19,24,40,55\n68,85,135,157,160,169\n0,58,73,179\n63,180\n0\n0,113,115,117,147\n30,61,180\n180\n49,51,57\n1,56\n57,178\n44,78\n65,171,180\n62\n61\n5,9,51,64,300,316\n0\n13,18,38,40,78,131,136,152,178,180\n45,67,89\n0,13,44,89\n71,111,118,120,145\n50,54,71,90\n0,46\n43,68,90\n163,166\n0,16,33\n155\n132,157\n0,36,56,66,123,126,138,163\n100\n0,2,146,171,176,180\n19,58,72,92,117,125,128,156,180\n0\n53\n0,72\n83,101,110\n12,34,46,49,52,67,70,84,90\n0\n47,137,180\n1,4,67,90\n1,29,70,87,90\n174\n139,168,180\n0,36\n0\n13\n143,180\n17,47,66,88\n60,68,78,98,106,110,113,150\n0,21,44,48,66,90\n41,72,114,180\n140,178\n137,164,177\n0,18,20,30\n0,20\n0\n2,24,51,144,180\n73\n2,37,70,90\n63,66,96,99,114,180\n85,90\n2,16\n0,12,25,86,180\n0\n162,180\n157,180\n179\n5,24,33\n50,70,90,105,145\n0,3\n69,154,173,180\n0,58,91,107,142,157,162,168\n8,125,138,151,161,172,180\n0\n0,37,180\n7,118,135,171\n0\n0\n125,234\n143,168,189,208,228,236\n33,69,90\n22,38,57,82,126,144,165\n0,4,50,89\n60,62,87,90,92,97,115,129,133\n132,141,152,161,173,180\n155\n0\n1\n0,21,103,128,162,180\n0,49,71,81,90\n0,35\n44,68,111,135,167,170,180\n64,67,71\n39\n50,58,63,67,87,96,128\n54,90\n52,71,98,118\n137,145,174,176\n138,143,163,180\n0,32\n0,20\n0,10,68,73,79,96,139,178,180\n23,139,159\n0,178,180\n25,47,53,60,135,180\n0\n0,141,155,157,180\n0,21,133\n118,121,138\n166,180\n150\n0,35,132\n65,131\n45,47,122\n44,99,101,119,162\n7,25,32,41,44\n13,18,21,42,44\n25,43,105,129,218,238\n27,66,73,75,77,79,107,217,236\n21,48,55,57,79,85\n53,57\n39,89,109\n36,70,101,104\n13\n23,45\n14,17,43\n29,34,46,76,80\n111,128,147,149,152,173,197,199,209,238,243,245\n110,148,172,197,251,253\n146,160,169,173,175,199\n160,180,194\n3,8,21,41\n1,22,32,40\n259,290,324\n21,282,302,308,322\n243,249,255,260,279,308,325,332,334\n256,275,318,339\n37,44,49,57,86,97,99,107,131,153\n0,14,34,50,70,83,106,108,111,114,133,138,142,153,157,178\n27,44,48,85,93,105,113,214,220,261\n28,55,93,106,114,116,140,219,221\n29,56,77\n33,35,41,48,82\n108,152,168,176,196,218,241\n106,164,200,203,206,237\n18,35\n17,42,356\n13,130,133,238,352\n5,11,17,110,131,225,232,243\n203,209,212,222,229,267\n8,29,72,292,328\n6,17,27\n13,33,342,352\n8,30,33,87,124,145,235,272\n20\n17,343\n20,61,211,236\n19,30,231,233,250\n24,59,106\n55,303\n58,305\n149,178\n146,152,158,180\n60,185,293\n61,180,182,291\n80,180\n80,145,155,181\n141,182\n56,303\n57,303\n177,303\n186\n187\n169,189\n55,57,77\n2,22,36,58\n34,57,306,332,342\n7,53,70,307,324,334,344\n71,122,181\n73,163,180\n50,190,303\n64,82,192,306\n57,59,61\n199,204,207,210,216,297\n71,177\n266,306\n47,298,322,345\n46,52,58,313,345\n0,54,305,326,328\n1,52,303,349\n186,281\n60,180,304\n63,150,179,243,304\n65,165,183,306\n61,81,157,165,169,171\n309\n63,188,296\n64,186,244,295\n43\n63,180\n62,67,292,298,305\n64,149,182,309\n62,184,297,312\n179\n177\n3,6,124,126,138\n13,25\n105,112,135,137\n111,136\n137\n61,180\n58,169\n180\n180\n53\n25,52\n61,180\n52\n71,180,191\n42,65,183,305\n53,81\n58\n68,134,173\n67,94,101,175\n65,137,193\n68,135,172,185,188\n189,201,291,298\n187,190,196,243,293\n61,170,299\n55,180,301\n49,309\n34,44,53,309,312\n68,169\n70,170\n14,19,27,30,55,144,152,176,180\n0,7,14,21,66,149,180\n134,140,154,172,180\n13,28,64,92,151,172,177,180\n123,163\n161,179,182\n38,64,93,99,105,144,158,181,303,331\n157,180\n0,19,32,50,168,177,180\n0,27,58,88,147,178,180\n109,137,150,152,166,179\n0,37,44,51\n41,180\n142,153,155,159,176,189\n128,148,162,173,183,188,199,218\n132,170\n122,128,134,150,172,200,279,299\n35,96,129,169,193,293,311\n73,293,329,344\n122,164\n52,66,85,97,179\n62,169\n57,180\n67,75,87,180\n180\n59\n1,19,37,39,41,74\n30,48\n37,67,70,180\n63,180\n0\n50,52,180\n42,59\n58,68,73,164\n47,53,62,76,166\n25,58,123,171\n41,61,180\n12,31,33,35,49\n0,3,7,10,17,44,78\n70,180\n44,310,321,324\n305\n1,33\n0,44,78,90\n90\n0,49,72,90\n48,74,76,86,91,102,120,135\n90\n56,90\n61,84\n58,90\n4,14,39\n132,160,179\n0\n0,56,88,90\n130,180\n20,45,70\n87\n0,21,44\n90\n0,3,57\n2,12,48,71,73,77,87\n55,93,110,115,126\n59,89\n90\n0,65\n0,9,36,43,68,95,100,105,116\n111,136,158,180\n7,25,33,35,37,48,67\n1,13,64,83,90\n12,38,43,45,72,93,104\n66,84,90\n0,7,49,52,78\n136,151,180\n0,3,6,36,40,51,66,90\n38,84,90\n0,22,137,175\n53,65,83,90\n0,3,5\n58,75\n65,90\n110,113,132,155,180\n11,13,40\n90,93,110,130\n12\n11,84,338\n142,164,187,204,240,249\n140,162,201,203,244\n1,69,342\n6,340\n28,351\n351\n144,215,248\n144,165,198,218,246,280\n157,193,207,238\n156,190,208\n45,58,77,84,90\n49,70\n0,57,59,66,86,89\n0,47,50,57,59,66,78\n14,125,139,163\n61\n0\n117,147,175,180\n101,158,178,180\n0\n0,27\n0,3,19,23,29,32,45,48,71,90\n1,21,35,51,57,70,74,90\n0,3,10,25\n0,38\n0,17,34\n11,66,84,124,177,180\n9\n0\n8,39,64,88,91,122,142\n3,26,73,79,86,130,155\n0,23\n0,29\n95,123,163,180\n0,18\n0,149,152,178\n0\n78,180\n12,35,51\n0\n0\n0,29,35,41,157,162,180\n180\n55,71,180\n29,33,58,80\n70,77,179\n13,18,22,26,28,68\n0,41,180\n180\n304\n300\n0,4,11,15,60,311,334\n27,57,293,310,356\n9,56,308,310\n12,15,58,309\n48,310\n48,314\n152,274\n120,156,162,164,166\n60,282,296\n63,296\n70\n80,100,131,171\n77,95,131,150,155,161\n57,278,294\n76,120,170,189,195\n75,169,187\n172,185,194,213\n182\n160,185\n20,49,63,160,169,175,178,186,291\n15,46,54,60,166,181,281,294,312\n2,5,295,326,343,345,355\n0,86,93,101,118,143,179\n95,130\n117,137\n187,206\n192,207\n291,306\n43,53,64,295,310\n47,63,172,299\n115,135,153,156,160,163,166,226,230,237,241,270,274,285\n91,113,115,120,129,132,144,194,237,264\n163,172,178,235,263,271,275,279,285\n178,208,262,278,284,296\n61,310,351,358\n27,45,55,74,314,335\n308,326\n44,184,297\n44,185,297\n98,116\n104,111,118,144\n182,202\n184\n62,174,307\n163,174,176,309\n19,21,35,41,56,91,94,150,166\n6,12,24,50,71,87,158\n264,267,271,282,312\n274,276\n42,67,314,337,358\n31,61,315,357,359\n171,279\n185,255,274\n3,318,333,346\n122,141,143,149\n110,128,149,193,209\n12,69,314,326,330,335,348,355\n313,325,355\n79,107,287\n109,113,119,127,149,168\n104,106,116,119,122,144\n178,191,223,239,244,250,266,284\n204,251,281,284\n51,307,325,342\n19,322,340,344,352\n297,315,334\n44,276,304,320,337,353\n0,7,63,93,129,131,157,160,180\n0,24,39,87,132,180\n2,39\n41,64,115,132,138,147,153,171\n90\n90\n66,72,90\n91\n64,179\n180\n52\n50,66,70,90\n76,78\n168\n30,54\n38,58\n62,80,83,87,90\n4\n0,11,36\n0,42,82\n0,14,39,41,45,56,90\n53,90\n5,56,92,104,109,138\n55,73,109,126,133\n34,36,69,82,85,89,102,107,230\n24,40,51,54,56,71,86,125,226,243\n124,139,168,195,222,225,243\n165,183,202,225\n45,62\n7,57,70,72,74,90\n21,359\n23\n7,55,304,351\n60,175,309,319\n62,172,191,312,319\n12\n62,177,180\n61,63,170,180\n180\n180\n52\n54\n54\n69,169\n71,97,169\n66,180\n49\n47\n73\n61,90\n67,69,73,78,80,86\n24,42\n44,98,123\n71,73,90\n90\n60,73\n82,90\n55,58,90\n90\n90\n43,49,60,71,78,83,89,95,104,130,161\n80,83,87,90\n53,90\n0,29,43,90\n0,148,180\n66,180\n52,180\n56,299\n62,297\n184\n12,15,57,60,302\n59,180\n180\n180\n12,54\n59,180\n45\n0,132,137,148,151,161,168,172,176,180\n0,139,159,180\n0\n0,175,180\n0,4,6,12,180\n0,20,22,24,137,142,156,171,180\n0,14,17,33\n0\n2,18,36\n0,136\n180\n180\n180\n1\n89\n92\n0\n0\n46,65,90\n90,98,101,256,264,273\n8,180\n0,179\n17,22,38,55,84\n59,89\n84,88\n0\n0,18\n0\n0,36,69\n4,19,166,188\n5,188\n0,26,32,36,117,180\n21,64,90\n89\n0,19,54\n0,7,72,87,90\n21,29,37,60,70\n52,180\n153,174,180\n0\n313,336\n311\n0,8,13,23,34,42,44,67,73,81,96,99,120,146,151,153\n0,4,8,25,37,46,69\n0\n12,18,24,89,121,152\n1,8,41,69,72,85,111,140,151,174\n70,89\n23,50,81,121,124\n32,60,75,77,83,94,120\n164,181,208\n0,28,311\n359\n0,46,318\n0,52,54,90\n72,89\n0,60,62,90\n90\n25,50,90\n74,92\n88\n77,79,89,96,101,126\n65,96,120\n146,171,178\n1,181\n3,160,163,179\n0,180\n90\n0\n0,22,93,180\n0\n0,35\n0\n0,19,33,51,134,148,180\n53,74,117,123,140\n2,179\n207\n60\n31,33,65,75,94,100,107,276,305,333\n0,17,35,58,61,65,68,71,88,165,212,269,308,316,325,344\n38,53,79\n0\n0\n178\n0\n180\n0,11,151\n0\n0,35,60,65,68\n0,14,18,22,26,84,90\n0,7,19,33\n26,52,288,292,301,319,333\n67\n67\n30,57,88\n0,8,16,24,53,106\n0\n0,128,134\n0,2,6,10,13,76,99,112,159\n89,160,180\n1,33,38\n0,17,102,110,113,175\n0\n0,42,152,180\n8,35,56,90\n8\n0,180\n0,24,78,84,99,102,105,117,134,173\n6,59,63,79,116,136\n5,39,41,48,65,72,85,111,125\n111,233,258,270,288\n0\n73,76,105\n99,102,142\n57,77,139,172,179\n32,40,44,49,57,79,165\n90\n88\n151\n30,52,70\n91,93\n70,88,90\n93,115,138\n43\n121,130,152\n148\n114,133,140,143,171\n0,10,180\n0,3,17,29,172\n1,27\n108,125,134,136,150,183,288\n111,131,142,149,156,158,165,168\n77,98,121,145,283\n106,136,148\n103,138,152,186,283\n95,114,140,149,159\n98,126,143,188\n98,101,111,134,154,171\n0,24,26,41,48,67,126,165\n22,46,81,178\n0,24,30,32\n90\n85\n180\n0,3,16\n18\n2,180\n12,27,174\n2,54,65,95,121,163,180\n6,28,46,63,88,91,117,136,162,180\n0,8,10,19,107,109,137,165\n0,18,42,62,76\n90\n0,18,36,40,90\n54,74,89\n69,107,110\n47,68,106,109\n11,42,104,153,180\n0,21,180\n99,103,128,290,333\n175,355\n179,352\n56,66,180\n52,62,180\n17,21,50,57,59,73,129,159,179\n26,46,78,102,109,122,124,146,166\n52,81,170\n54,168,302\n45,63,151,170,180\n63,180\n174,177,180\n11,14,27,52,66,74,77,108,124,157,171\n42,51,63,172,180\n65,183,308,310\n49,66,172,177,183,289,297,300,316\n51,76,78,90\n82,88,90\n2,45,47\n110\n80,90\n21,35\n0,29,31,46,56,71\n33,135,175\n24,151,176,180\n61,64,180\n43,57,75\n60,180\n29,47,63,118,143,159\n54,56,174,180\n1,46,62,92,115,149,152,156,165,170,180\n0,6,9,14,180\n60,180\n0,180\n0,8,12,39,43,52,73,78,81,93,122,128,142,146,151,177,180\n0,180\n0,28,39,47,49,57,80,110,112,135,151,156,180\n0,43,94,112\n0,180\n2,74,81,93,114\n0,2,8,145,149,176,180\n0,180\n0,180\n0,144,180\n0,20,36,48,81,145,180\n0\n0,28,127,154,179\n10,14,37,62,70,82,85,142,155,180\n0\n0\n9,30,35,86,100,105,140,173,194,216,258\n18,28,79,95,111,121,141,188,195,208,220,258\n29,34,55,59,63,67,71,128,189,198,220\n10,26,29,39,82,182\n281,318,338,357\n133,137,141,148,160,170,208,210\n138,162,185,209\n18,63,132,196,213,228,337,357\n18,51,347,355,358\n0,3\n180\n178\n15,170\n0\n0,163,171,177\n0\n0,163,165\n90,119,177\n75,94,134,145,178\n2,23,180\n0,40,97,158,160,169,171,180\n0\n12,14,17,22,180\n0\n0\n7,12,27,30,62,95,114,125,184,205,208\n22,27,33,54,61,71,93,127,185,188,212\n25,331,338,344,354,358\n18,243,265,317,352\n117,147,171,198\n16,30,32,89,190,194\n15,28,30,33,185,195,197\n0,180\n75,176\n177\n35,67,78,85,157\n54,178\n0,10,20\n0\n3,7,12,17,176,180\n0,153,180\n180\n0,180\n172\n1,7,9,15,170,180\n0,3,29,53,74\n0\n0,38,180\n0\n0,2,180\n7,155,174,178,180\n13,31,171,198,214\n2,5,17,198,356\n0\n0,33,145,165,180\n0,61,90\n0,16,38,68,86,99,131,180\n0,2,23,179\n0,23,30,180\n0,180\n0,13,141,163,179\n0,179\n0,44,47,50,59,76,85,92,127,133,143,146,180\n0,23,26,60,65,80,140,151,163,180\n100,126,158,279,288,301,319,335,339,344,353\n104,130,132,138,141,147,316,338,341,348,352\n0,180\n164,180\n1,21,145,190\n7,144,172,204,351\n20,23,353,358\n0,174,180\n1,58,77,88,96,132,145,153,177,180\n0,6,173,180\n0,180\n0,180\n1,21,171,178,180\n0,43,141,171\n17,28,158,206,338\n7,23,30,104,135,137,150,185,187,192,194,213,325,329\n0\n5,51,61,182,317,341\n4,8,12,54,58,179,298,318,342,345\n33,64,105,184,289,328\n3,25,38,44,70,315\n0,61,180\n52,68,86\n90,93\n61,84,115\n80\n78\n92,118\n78,97\n0,166,174\n0,20\n90\n90\n83,99,105,139,180\n0,3,120\n0,13,18,38,66\n0,15\n64,81,94\n87,122\n64\n66\n62,78\n51,70,72\n63\n68,180\n82,150,180\n55\n58,180\n75,87,106\n197,210,213,227,234,271\n207,268,283,290\n1,180\n68\n73\n150,179\n0\n144,150,156,160,168,173,177,180\n105,111,119,125,127,129,138,174,180\n0\n4,180\n0\n0\n0\n15,130,132,156,174,178\n97,117,119\n154,178\n150,173,176\n0\n0\n0\n180\n17,19,41,58,70,78,83,86,92,108,114,123,139,169\n12,65,70,154\n0\n0\n0,180\n0,180\n1,36\n0\n0\n1,176,180\n0,2,18,154,156,163,180\n1,16\n26,32,35,40,118\n0\n0\n12,22,25,119,140,178,212,221\n10,18,25,52,58,98,113,115,133\n15,19,21,23,32,98,100,102,112\n0,120,124,141,144,180\n0,177\n0,180\n0,180\n0,180\n0,45,125,180\n43,103,190,213,218,264\n286\n64,183,293\n69,186,292\n181\n181\n53,303\n48,64,282,304,330\n69,72,174\n75,175\n59,170,299\n69,161\n71,172\n60,180,304\n58,181,307\n65,84,174,303,320,324\n184\n177,191\n189,192,297\n181,200,267,297\n42,48,66,176\n67,170\n63,65,82,174,189,307\n63\n59,63,66,76,185,302\n59,291,301\n72,180,204,207\n70,180,192\n35,40,57,311\n54,68,75,83,186,189,202,204,206,208,229,247,294,298,303\n64,67,69,176,178,209,272,279,287,297,308\n0\n0,2,137,144,147,174,179\n0\n1\n0\n180\n166\n180\n0,180\n0,139,149,178\n0\n0\n180\n179\n3,7,172\n0,9,38\n3\n0\n180\n0,31\n85,129,147,180\n3\n180\n159,180\n0,154,174,180\n0\n180\n0,17\n180\n0,180\n0,24,50,52\n0,25\n180\n152,171,180\n23\n180\n0,3,6\n3,7,75\n180\n17,51,53,58,62,84,88,97\n18,58\n70,90,94,103,112,152,155\n66,244\n11,26,41,47,63,89,110,113,122,226,246,274\n48,68,82,85,98,269,318\n62,87\n55,59,61,63,66,87,93\n83,89,92,102,129,146\n16,347,355\n10,15,19,348\n58,183,306\n69,179,304\n295\n64,177\n64,161,176\n196,291,294,298,302\n189,203,297\n0,26,90\n0,41,57,63,79,84,124,126,180\n6,13,49,83,89\n0\n180\n0,33,40,44,53,79,88,112,129,180\n0,46,102,135\n0\n0,29\n180\n180\n180\n1,70,73,96,111,116\n0,21,25,28,110,124,129,134\n137,160,180\n129,180\n2,7,162,165,180\n0,6,180\n4,7,42,54,75,80,93,128,134,180\n0\n180\n145,180\n178,180\n82,92,108,124,149,179\n0,49\n90,118,120,144,151,166\n256,291,323,325\n294,304,308,310,328\n7,29,42,46,51,54,88,344\n5,14,29,58,85\n112,152,198,218,253\n111,121,154,178,201,222,255\n144,163,199,254\n26,153,259,270,322,341,348\n261,315,333\n144,147,195,213\n147,165,195,198,231,272\n0\n0,28,33,118,140\n180\n0\n0,124,130,144,152,154,162,180\n4,61,71,75,78\n0\n0\n1,160,180\n31,55,62,70,101,165,180\n23,28,40,60,164,166\n3,23,41,51,86,109,124,127\n6,10,12,25,60,73,79,95,121,157\n52,92,241,251,262,300,339,345,354\n47,73,101,122\n69,90,93\n1,19,36,58,64\n0\n7,13,55,117,120,141,160\n22,168\n26,43,137,178\n39,222\n36,213\n209\n208,230\n180\n145,180\n0,3,63,170\n27,54,60,64\n64,179\n65,140,169\n65,156,171\n186,209,303\n54,56,180,296\n62,187,299\n62,180\n56\n62,90,188,280,284,293,314\n64,170\n65,173\n33,62,180\n41,49,62,65,79\n249,288,290\n197,199,271,292\n199,286\n286\n214,250,260\n204,222,253,266\n0\n7,36\n33\n65,77,90\n56,64,171\n63,80\n62,137\n22\n22,32,61\n38,46,50,306\n173,296\n60,68,75,312\n64\n60,63,78\n2,174\n176,186,357\n180\n180\n0,22\n16,34,52,229\n90\n35,57,66,70,72\n54,56,180\n0,134,137,152,156,167\n10,35\n359\n0\n16\n22,24,26,36,46,56,61,67\n12,178\n22,43,61\n26,57\n1,157\n0,44\n0,8,15,137,153\n0,18,21\n1,5\n12\n13,41\n62,83\n217,239,266,269,277,279,298,312\n0\n0,180\n0,18,42,47,49,73,137,162,179\n0\n0\n0,6,33,45,48,100,102,108,155,158\n153,170,172,180\n180\n0,13,173\n15,49,58,61,96,103\n0\n0\n46,169,191,193,205\n174,179\n24,60,83,180\n180\n42,62,65\n0\n0\n61,297,317,320\n59,65,305\n12,42,44\n0,16,18,20,46\n35,58,60,72,93,154,160,167\n37\n0\n0,3,18,26\n0,83,112,180\n15,166\n0,180\n9,12,18,28,34,193,358\n61,65,97,170,180\n49,76,80\n53,80,82,98,167,180\n51\n35\n66,77\n49,57,80\n14,31,44,62,71,81\n43,70,184,304,308,317\n45,66,138,181,310,339\n75,98,100,154,168\n76,105,163\n18,40,66,309,354\n20,44,60,189,292,311,329\n3,8,17,29,36,47,179\n38,48,180\n54,66,68,180\n68,172,175\n70,131,180\n0,5,9,46\n28,38,47,64,153,184,190,201,318\n26,41,44,47,60,153,172,195,206,210,213,318\n60,180\n0,6,152,155,180\n149,180\n9,13,27,42,90,125,127,167,174,176,180\n0,43,180\n180\n121,151,180\n67,93,124,126,141,158\n141,180\n33\n12,33\n0\n0,180\n16,150,180\n0,24,32,159,163,180\n137,180\n36,95,98,118,233\n2\n0\n6\n0,40,59\n155,180\n0\n152,180\n0\n75,79,88,90\n0\n0,14,24,56\n0\n0,30,80,83,90\n1,38\n62,71,78,114,138,160\n85,101,120\n82,84,102,118\n91,93,96,98,101,114,268,296,299\n113,238,243,249,267,279,294,300\n75,91,93,101,109,133,140,147,283,288,300\n86,99,112,153,160,291,311\n91,134,275,303\n87,117,249,274,284,305\n0\n0,19,42,61,80\n0,22\n6,16\n33\n0,2\n10\n0,180\n33,48,67,128,180\n0,180\n0,26,40,154,180\n0,180\n0\n49,76,107,180\n134,154\n75,180\n0,16,156,163,180\n0,180\n0,19,142,163,172,180\n0,180\n0,161,180\n180\n0,144,149,151,157,180\n180\n50,55,62,70,167,180\n58,75,173\n49\n0,9,23,45\n49,67,179\n48,164\n0,6,50\n60,66,161,168,180\n0\n0,123,180\n1,31,56,88\n0,27\n0,40,124,180\n3,63\n147,180\n180\n0,7\n0\n0,45,57,180\n0,50,72,180\n29,41,143,180\n180\n0,7,58,131,149,180\n180\n160,173,180\n180\n152,179\n157,162,180\n179\n180\n124,163,180\n0,30,34\n0,36\n0\n0\n0\n0,29\n0\n0,33\n46,135,162,180\n0,3,27,51,180\n68,109,143,165,172,176,180\n180\n180\n0,24\n0,32\n179\n0,13,52,180\n177,180\n0,2,39,44,48,148,176\n0,33,43\n0,41,61,120,136\n54,180\n53\n0,52\n0,23,34\n180\n180\n125,129,147,180\n0,55,179\n170\n54\n158,162,180\n157,180\n53,56,128,180\n72,164,318\n73,127,148,169,276,311\n51,58,75,79,96,151,181,342\n63,96,135\n278,301\n300\n312\n312\n258,303,312,343\n276,298\n177,235,289\n177,229,287\n188,204,217,219,289\n187,215,219,293\n179,212,232,272\n177,197,199,230,273,288,290\n55,308\n55,307\n2,26,51,57,324\n21,52,311,323\n5,54,83,315,319\n11,55,90,311,331,350\n52,310\n55,311\n25,46,57,322,336\n58,78\n56,94,308\n3,60,316\n61,322\n1,10,14,18,61\n5,55,323,349,354\n52,55,72,164,178\n61,71,73,146,177,313\n314\n191,292,297,303\n168,190,282,299\n17,19,48,284,312,315\n48,81,283,302,319,358\n34,45\n45,323\n31,46,323\n68,172,284,289,293,299\n65,97,99,173,293,296\n64,66,79,158,180\n299\n298\n297,344\n155,190,287\n158,180,215,285\n184,202,278\n54,312\n55,308\n47,59,315,343\n54,316,350\n64,176\n63,174\n163,290,305,307\n49,313\n47,313\n67,149,170,180,183\n69,155,161,169,171\n174,178,231,282\n145,180,228,286,288,298\n176,232\n176,229,231\n47,310\n49,310\n40,48,314\n45,47\n0,28,107\n15,59,93\n0,61,95,97,103\n0,51,96\n99,143\n64,86,122\n0,15,42,65\n20\n0,18,46,52,60\n14,66\n18,37,64\n12,32,55\n126,167,180\n93,127,159,169,172,178\n129\n125,155,173,178,180\n128,158\n125,152,178,180\n98,129,151,180\n123,143,146,150\n0,26,64,75,94,113,143\n41,51,57,97,144\n1,37\n0,103,147\n98,113\n21,45,68\n22\n13,33,43,51,67\n29,32\n98,122,143,157,167,180\n23,67,85,88,116,120,129\n0,20,61,63,103,125,180\n0,23,25,31,108\n25,74,77,82\n78,107,130,137,180\n87\n18\n19\n15,45\n14,57,59\n128,156\n162\n130,163,180\n1,15,21,51,67,103,112\n65,68,71,74,76,93,117,145\n0,119\n0,16,52,89,118\n0,177\n180\n180\n0,100,122,128,137\n7,37\n9,120,339\n117,334,355\n80,107\n92,111,124,126,146,179\n283,303\n285,303\n305\n289,304\n15,49,65,298,328,347\n19,50,68,296,328,348\n6,13,34,66,315,333,349,355,357\n1,6,17,66,317,327\n23,42,334,351\n2,14,16,28,36,45,49,326,353\n18,41,49,69,347\n18,47,342\n3,18,68,332\n1,10,12,30,37,341,354\n342\n183,202,216,248,278,280\n180,208,229,231,251,253,257,289\n218,221,252\n179,209,241,259\n117,225,353\n121,219,347,355,357\n114,140\n107,109,128,146\n302\n302\n0,2,17,36,40,46,337,347,351\n17,48,54,330,334,350\n16,43,48,333,346\n15,23,46,338\n9,116\n116\n162,194,244,262\n182,219,225,233,239,248,263\n328,343,349,358\n328,353\n0,90\n90\n0,96\n0,83\n90\n0,90\n14,30,66\n0,17,69\n111,163\n112,149,180\n0,11,29,42,82,90\n0,16,58,89\n62,90\n0,44,66\n113,131,136,148,180\n0\n180\n0,40,180\n79,97,263,281\n1\n0,180\n40,45,64\n15,38,170\n18,39,61,79,90\n1,41,76,90\n3,11,41,65,85,100\n42,49,79\n142\n86,103\n107\n17,43,62,127\n84,90\n0,58,93,134\n0,59,72,77,180\n138,165,176,180\n0,23,30,33,56,59,86,97\n138,180\n0,3,6,30,72,104,120,144,180\n1,26,50,99\n36,76,106\n15,74,90,92,137\n126,149,157,171\n63,302\n63,305\n60\n61\n0,89\n0,3,20,77,90\n0,4,27,29,90\n62,90\n29,47\n34,90\n63,90\n0,11,80\n11,13,42,46,52,101\n90\n42,81,90\n87\n106,143\n24,44,55,57\n0,21,102\n57,180\n17,20,25,40\n15,61,299\n44,63,295,349\n180\n180\n0,27,29,37,178,180\n0,180\n0\n0\n71,190,297\n189,297\n70,185,271,289\n59,292\n48,71,269,295,312\n71,178,200\n73,142,179,201\n71,151,184\n67,150,155,161,177\n75,142,181\n78,144,180\n182,198,293,299\n54,300\n64,66,308\n165\n34,41,61,68,78,83,102,128,130,158,180\n0,22,28,55,60,82,84,97\n136,166\n0,3,15,29,53,76,78,80,88,90\n0,63,65,90\n0,45,56,58,86,113\n9,77\n0,90\n0,76,81,84\n10,26,28,36,40\n120,151,180\n128,157\n1,9,33,53,61,90\n0,47,79,105,126\n62,79,90\n0,40,65\n118,147,180\n0,26,118,165\n15,90,103,110,123,135,156,179\n0,24,39\n37\n19,133,156,165\n4,46\n0,26,34,42\n0,81,111,125,154\n26,45,48,109,127,165,178\n1,33\n143,180\n126,153\n0,96\n96,109,159,166,180\n106\n123,147\n94,106\n88,91,95,106,111\n46,72,174\n0,32,51,180\n41,49,60,310\n16,50,52,83,311\n63,73,148,168,181,246,293\n54,62,73,80,82,145,166,177,300\n292\n37,53,308\n26,56\n67,82,86,94,98,125,128,144\n23,47,58,60,317,337,343\n72,140,159,179,286,306\n62,155,160,304\n12,24,27,31,58,76,327\n17,38,76,318\n0,41,87\n0,34,43,53,77,92,94,101\n37,64,68\n0,15,27\n85,89\n23,43,75,99\n80,89\n16,100,173\n0,49,51,57,66,68,90\n2,97\n2,52,90\n12,42,90\n0,66,87,102\n68,90\n118,138,157,161,170\n103,125,155,158,180\n103,133,135,138,155,158,180\n65,97,109,112,114\n0,20,41,63,180\n90\n58,90\n90\n52\n97,133,159,187,190,287\n75,168,191,287\n68,133,180\n72,74,181\n67,77,99\n52,61,180\n47,49,69,77,85\n97,110\n0,19,29,84,90\n97\n52,180\n152,180\n158,181,188,193,273,295\n65,297\n71,179\n69,178\n70,72,158,185\n79,166,186,188,190\n5,220,245\n302\n300\n70,178\n69,89,177\n54,180\n69,178\n70,109,112,138,185\n90\n97\n90\n100,120\n114\n70,189,297\n66,191,220,292\n69,177,207\n69,177\n78,82,180\n68,70,183\n70,122,186\n63,89\n27,77,80,101\n90\n0,52,60,88\n90\n13,65\n65\n41,60\n58,92,190,205,227,242,292\n60,292\n60,290\n56,100,289,316\n179\n179\n77,183\n182\n193,285\n88\n71,90\n0,25,33,36,53,180\n48\n35,56\n34,57,168\n51\n76,81,91,110,182,303\n87,113,181,306\n180\n52,87,150,174\n180\n247,293,311,313,315\n249,293\n292\n289\n0,55,300\n8,11,55,302\n55\n6,55\n0,16,61,111,119,125\n58,79,165,180\n44,58,73,90\n21,94,97\n29,42,45,48,82\n2,14,30,35,78,87,102,105\n31,68,76,90\n90\n0,86\n180\n180\n185\n185\n59\n291\n290\n246,293\n248,295\n292\n292\n42,55\n0,5\n0,138,155,180\n0\n138,140,142,145,154,156,173\n0\n63,186,294\n65,184,293\n69,293\n67,190,210,291\n59,96\n57,80,300,333\n60,300\n69,175\n68,176\n66,162,177,180,187,191,292\n70,161,180\n55,66,80,82,180\n0\n0\n0\n0\n180\n167\n180\n177\n0\n0\n180\n180\n0\n0\n180\n168\n0\n180\n0,180\n0,180\n180\n180\n0,80,127,133,138,180\n8,39,46,49,68,78,120,146\n113,141,169,172\n120,137,169,176,178,180\n1,67,89,91,94,108,145,155,157,167,180\n57,180\n180\n35,45,58,307\n29,59,305\n56,312\n27,57,304,323\n180\n45,65,296\n0,180\n0,27,32,58\n180\n0,22,26,65\n70,106,157,161,299\n70,146,149,301\n63,65,87,91,93,122,169\n70,93,95,121,132\n63,65,81,108,143\n96,114,144\n256,298\n262,300,305,332\n60,90\n60,92\n61\n59\n178,296\n178,299\n179,198,201,247,291\n181,211,237,253,296\n180,264\n71,73,119,127,129,132,136,143,146,299\n69,133,154,298\n63\n63\n283\n40,59,63,73,76,88,97,101,139,308\n55,75,124\n151,188,196,199,202,219,271,278,280,317\n193,217,252,257,286\n0,180\n0,23,180\n0,55,96,120,137,144,180\n0,5,13,15,25,45,49,53,79,104,143\n14,37,53,88,108,110,121,136,171,180\n0\n1\n0\n0\n358\n0\n46,310\n71,87,101,124,151,223,245,263,270\n0,10,13,20,27,54,306,333,340,347,350\n78,97,263,282\n71,85,98\n34,51,76,94\n44,60,88,137\n0,176\n0\n0,23,173,178,330\n0\n182\n46,53,67,174,304\n180\n136,145,171,177,181,224\n0\n0\n0,16\n0,64,94,121,141,152,155,157,162,166,171\n0,9,40,171,180\n92,115,128\n183,358\n19,34,47,307,311,315,329,354\n7,11,14,355\n173,180\n10,29,158,180\n0\n0,180\n0,27,31\n0,180\n0,180\n180\n6,180\n0,180\n0,180\n1,15,73,81,93,95,101,111,131\n4,132,149,333,339,346\n0,110,135,145,265,356\n0,43,64,83\n0,36,58,92,109\n90\n0,17,36,71\n111,142,163\n26,97,112,136,143\n0,122\n3,8,25,28,102,113,123,141\n0,13,32\n137,139\n113,130,180\n123,127,149,169\n66,90,115,118,124,127,140\n0,34,79,100\n89,120,124,128\n93,123,136\n110,126,153\n57,180\n49,52,61,63,180\n35,44,56,172,174\n180\n159\n55,180\n65,175,292,303,308\n67,172,295,306\n62,187,331\n56,305,330\n54,303\n56,314,317\n56,293,310\n177,299\n172,196,275,293\n37,62,66,169,302\n61,176,299\n57,307\n57,305\n0,170\n0,102\n0,32,55,180\n0,5,13\n180\n180\n180\n173\n0,36\n0,178,180\n180\n180\n0,73,88,97,100,104,112,123,127,130\n5,9,41,47,51,84,113\n0,20,47,51,57,69,100\n134,151,180\n128,151,180\n131,179\n94,124,163,173,179\n0,19,22,52,55,108,121,146,149,151\n0,50,104\n0,85,97,105\n106,153\n150\n3,116\n0\n0\n0,115\n180\n180\n180\n180\n0,180\n0,179\n215,241,260,262\n193,213,234,244\n4,117,135,202,240\n2,101,130,164,197,205,235\n12,205,228,237,239,353\n1,211,218,220,223,242,342\n31,54,80\n31,57\n31,56\n94,108,112,114,135,177,179,182\n74,77,107,122,128,138,176\n102,141\n108,144,147,150\n81,105,139,164\n93,110,113,140\n101,111,114,144\n89,108,123,144,167\n60,185,297\n62,187,222,297\n41,47,53,72,171,184,190,203,213,221,229,240,284,305\n43,60,66,69,183,191,200,281,296,304\n47,56,60,184,202,258,268,295\n40,195,205,228,258,294\n227,274,280,286\n25,28,57,91\n20,23,58\n60\n62,88\n57\n64\n53,304\n52,304\n301\n1,10,34,60,304,330\n49,279,308\n278,306,326\n67,132,149,176\n69,177\n73,123,176,202\n72,124,128,149,176\n67,117,181\n44,66,108,180\n96,112\n74,100,121,144,154,169,178,181\n46,73,164,184\n64,81,183,297\n67,188,296,340\n48\n47\n52,307\n53,307\n49,74,87,91,153,170,196\n74,95,139,167,170,193\n38,72,168\n62,182,274,297\n60,182,297\n304\n50,305\n305\n50,304,352\n71,73,171\n50,72,176,200\n77,149,172\n63,180,285,298\n0,5,42,76,99,134,180\n23,61,70,101,180\n45\n164,180\n159,180\n159,180\n164\n64,68,180\n47,49,65,72,105,180\n66,75,88,100,103,161,170,175,180\n165,178\n158\n0\n0\n90\n0,18,22,28,90\n0,8,11,28,30,36,57,69,77,85\n90\n0,18\n0,20\n180\n112,162\n0,33,37,77,85,90\n0,105\n90\n0,30\n114,143,180\n0,119\n0\n0,41,43,116,180\n180\n0,4,7,27,47,67,94,121,157,159\n0\n0\n15\n0\n1,17\n13\n0,5\n162,173,180\n138,167,172\n107,149,180\n0,50,53,103\n16,25,89,112,115,136,146,153,157,179\n0\n0,27,66\n0\n11,78\n157,176,180\n1,6,92,123,127,171\n0,32,111,131,134\n0\n0\n0,18\n180\n180\n107,110,135\n0\n0\n0\n142,176\n14,83,87,113,124,147,169,180\n0,14,25\n122,165\n166\n0\n180\n0,37\n14,28,49\n1,21\n1,8,21,43,46,52\n180\n180\n42\n9,45\n0,5,22,46,49\n85,129,177\n84,105,112,116,148\n78,111,151,172\n95,140,176\n102,135\n265,271,278,298,320,324\n312\n62,304\n61,303,326\n15,23,33,62,308\n19,27,43,62,92,318,321,344\n59\n35,39,58,350,353\n133,174,176,185,218,233,289\n151,153,172,178,239,278,282,284,287\n138,176,261\n133,152,172,187,192,276\n79,108,116,162,296\n72,79,88,91,116,164,297\n27,63,103,305,329,350\n29,61,305,343\n56\n58,105\n159,186,196,226,260,267,281\n152,190,193,258,279\n75,101,126,133,139,155\n70,93,103,143,152,159\n150,171,194,263,288\n182,271\n49,308,323,326\n52,92,322\n48,80,314,317\n47,75,84,86,315\n46,320\n186,247,289,292\n175,192,198,252,270,289\n72,78,93,159\n76,78,141,163\n51,315\n16,25,52,314,325\n181,277,281,284,288,290\n176,192,279\n180\n0,154\n357\n0,10,13,15,29,32,36,67,116,129,132,153\n48,310\n0,180\n0\n16,20,27,37,40,54,56,70,103,105,115,128\n23,42,64,80,83,90\n0,5,33,63,90\n131,155\n47,54,90\n2,5,23\n180\n117,156,167,173,180\n0,24\n0,20\n0\n0,10,20\n22,33,38,335\n76,92,111\n0\n60,77,148,180\n93,135\n187,296\n71,181,294\n67,169,186,296\n289,291\n53,188,211,214,302\n180\n169,180\n1,14,180\n67,186\n65,152,183\n62,76,96,115,171\n77,80,88\n33,80\n84\n156\n68,81,83,85,93,116\n67,92,103,111,131,157\n25\n77,80,103\n0,2,9,11,19,21\n97,102,111,130,150\n296\n296\n49,172\n50,173\n46,190,291\n48,188,289,291\n49,185,291\n42,160,183,292\n40,289,309\n34\n0,18,37,55,61,63,68,90\n11,14,31,34,58,79,164,177,180\n75\n0,12,18,23,25\n147,172,176,180\n22,36,48,61,76,78,80,95,169\n59,95,109,126,144,148,172\n0\n50,61,68,92,104\n54,103,127,133,136,139,149,154,156\n45,85,355\n81,103,126,147,160\n89,109,132,151\n21,36,40,59,86,90\n0,8,13,22,43,54,69,73,75,93,95,134,143\n62,64,89\n15,20,39,48,90\n0,5,9,12,18,40,59,68,72,96\n51,90\n72\n12,43,73\n105,160,180\n109,142,170,180\n57,59,63,94,119\n0,10,40\n0,35\n40,59,312\n43,61,311\n20,29,41,54,91,325,344,358\n177\n0,3,6,10,30,44\n0,92\n0,33,95\n47,58,295\n62,181,280,299\n58,70,225\n61,171,190\n0\n0\n1\n0\n0,180\n0\n1\n55,59,297,311\n80,112,118\n64,74,290\n79,99,102,296\n0\n0\n63,189,294\n63,185,295\n186,293\n0\n351\n12,29,67\n116,160\n12\n0,16\n65,90\n0,180\n0\n0\n180\n141,170,180\n0\n180\n0,123,179\n359\n358\n85\n67,69,87\n1\n56,167\n54,66,166\n28,48,139,163,172,180\n180\n0,4,7,39,61,64,81,129,147,149,157,170,178,180\n47,49,58,63,328\n60,318,324,332\n0,180\n0,59\n0,180\n0\n0,180\n0\n0,43,146,180\n0,180\n0\n0,180\n1,180\n0\n0,180\n13,19,31,33,38,61,79,109,129,155,160,168,174,180\n0,13,180\n0,17,101,119,136\n158,160,162,180\n64,189,294,304\n69,183,304\n54,304\n54,303,327\n43,61,78,164,178\n62,72,78,163,185\n51,306\n46,50,306\n0,2,8,18,47,67,83,95,125,160,165,168,170,174,180\n0,33,56,88,110\n49,54,56,63,66,93,103,121,138,157,177\n68,108,128,174,180\n64,92,102,133,155,157,180\n59,90,101,110,116\n9,24,62\n118,167,170,180\n49,52,180\n90\n104,135,171,177,180\n180\n180\n90\n26,37,53\n73,99,110\n33,36,40,58\n41,54,56,81,84,90\n0,20,54,75,81,94,112\n106,145,168\n61,281,306\n60,282,305\n62,306\n61,305\n290,310\n291,310\n59,306,333\n0\n0\n0\n0,180\n0\n157,178,180\n180\n0,56,58,180\n0\n126,180\n0,180\n0\n0\n179\n0,2,177,179\n0\n167,172,177,180\n0,44\n0,63,69,180\n0\n0,24\n0\n0,10,17,32,66,163,165,180\n11,26\n0,56,150,179\n0,21,24,123,135,180\n152,156,180\n0,18,136\n0,19,54,67,69,72,74,90\n0\n180\n0,169\n0,45,87,105\n121,148,164,166\n102,108\n0,13,99,116\n9,30,44,79,98,128,137,146,156,180\n0,41,43,78,83,107,109\n0,33,35,37,52,81,84,92,130,180\n10,59,68,91,95,101,107,110\n13,57\n180\n59,304\n58,304\n0,47\n4,19,29,180\n0,4,27,50,55,77\n0,38,57\n0,38,78\n0,180\n0,21,28,36\n0\n0,33,35,38\n0,3,9,36,38,63,66,90\n0,27,45\n151,180\n90\n69,90\n0,155,180\n70,89\n27,59\n62,83\n74,91,97,117\n75,77,79,96\n89\n75,97\n0,54,76,82\n79,92,100,119,150,180\n40,52,72,83,101,127\n68,83,106,120,155\n71,83,88,119,122,139,173,180\n85,97,113,118\n2,7,9,18,22,89,95\n110,125,155,159,161,164,167\n44,81,111,117,142,146,159,180\n39,54,91,129\n193,205,262,270,290,296\n191,289,291\n70,181,202\n62,151,180\n182,195,300\n185,191,195,296\n0\n0,47,115,180\n0,31,57,81,90\n0,3,35,53,55\n17,45,55,128\n50,57\n0,180\n180\n4,180\n0\n0\n0,28,52,90\n180\n0\n0,180\n0\n0\n0,21,145,163,166,180\n0,27,34,70,129,134\n0\n180\n7\n8\n128,132,180\n180\n180\n162,179\n142,158,170\n9\n180\n180\n180\n180\n0,18,21,52,59,65,154\n0\n180\n180\n67,90,93,138,172,180\n0,49,129,151,170,180\n91,180\n0,22\n163,165,180\n119,167\n79,104,108,111,125,130,134,292\n64,92,119,150\n293\n40,59,84\n46,317,327\n29,48,322,336,339\n62,124,157,176,211\n54,317,345\n52,315\n53,304,340\n70,98,104,137,155\n0\n180\n1\n0\n1,33,55,64,67\n36,67,71,180\n0,180\n76,194,283,298\n188,299\n19,38,54,61,126,144,159,163\n180\n13,34,39,62,95,119,159,170\n180\n163,180\n0\n0,19\n0,180\n153,180\n0,180\n180\n180\n0,46,68,89,92,107,137,140,152,180\n44,62,125,130,136\n0,7,61,64,84,99,116,146,162,180\n82,87,115\n68,305\n180\n180\n0\n0,162,180\n173,182,188\n0,180\n0,3\n18,87,100,106,142\n0,4,7,10,13,16,74,77,82,84,90,98,109,115,132\n105,165,200\n100,170,201\n16\n0,5,169,180\n0,5,9,14,165,168,170,176,178\n180\n0\n21,27,30,53,65\n1,59\n180\n0,120,180\n0,180\n180\n0,180\n145,180\n1,154,180\n0,162,180\n180\n1,180\n163,180\n0,173,180\n0,180\n0,178\n180\n69,91,121,163\n0,2,5,24\n170\n0,156,180\n23,148,180\n89,91\n0,16,149,175\n0\n0,90\n0\n0,26\n136,164,166,176\n0,40,87,90,147,180\n0,35,65,68,89,92\n125,127,155,180\n75,94,103,109,112\n173\n180\n0,91,116\n180\n42,51,53,58,136,143\n0,180\n11,22,30,160\n21,27,33,36,73,90\n0,55\n17,27,38,46,68,90\n0,2,55,65,75\n0,10,20,164,180\n3,180\n0,180\n0,96,180\n0,14,177,180\n0,4,175,179\n0,180\n0,180\n0,180\n0\n180\n0,180\n180\n180\n0,44,109,114,154,174\n111,144,162,164,180\n5,59,62,67,97\n180\n0,180\n0\n180\n145,152,166,168\n0,180\n142,180\n0,17,180\n0\n0,176,180\n59,93\n56,100,102,150,180\n0,99,134\n110,116,123,158,162,169,178\n0\n0\n0\n0\n0,12,15,40,180\n180\n0\n0,16,54\n180\n180\n0\n180\n0,31\n0,8,25,45,131,161,163,167,180\n0,180\n0,23,35,68,88,109\n0,8,24\n0\n0,180\n0,25,41\n0\n2,10,25,143\n0\n165,180\n180\n0,31,180\n0,180\n0,180\n0,180\n0,180\n13,82,108,110,115,119,126,141,144\n55,90\n3,52,73,111,139\n37,88\n13,59\n120,165\n135,156,160\n0,6,57,96,104,109,122,128,134,139,149,153\n0,94,115,128,131,138\n11\n0,16,34,66\n126,151\n128,161\n0,119,121\n128,141,164,180\n2,15\n1,10,50\n58,180\n180\n56\n63,170\n14,56,303,320,354\n3,29,55,303\n56,300\n36,57,301\n176,180,192,194,269,271,279,293,323\n179,182,293\n63,176,291,301\n59,178,299\n305\n3,9,15,35,39,54,76,307,336\n54,77,309,322\n176,200,260,288,310\n59,168,287\n62,161\n0,180\n0\n0,156,168,179\n0\n0,180\n0,27,62\n0,21,35,152,180\n6,59,180\n0\n10\n180\n180\n180\n180\n54,63,66,133,169,180\n0,18,34,38,40\n180\n0,97,117\n0,23,35,90,117\n80,109,150\n83,102,127\n19,30,71\n130,178,180\n110,112,119,150\n91,136,152,176\n125,138,141,179\n8,39,63,85,117\n0,7,14,67,89,108\n55,90\n0,11,35,73\n18,47,75\n160\n0,25,38,69,106,120,122,145,148,151,157,161\n0,21,75,78,83,95,105\n169,180\n0,5,10,13,137,151\n9,12\n0,25\n180\n180\n180\n0,151,154,166,180\n0\n180\n19,34,37,48,119,127,144,147,152,155,167,180\n0,180\n0\n131,158,180\n180\n210,216,238,243,256\n124,127,208,233,358\n0,128,130,210,232\n32,55\n30,56,78\n56\n57\n20,345,349\n23,350\n110,115,133,144,156,162,171\n128,133,144,170,175,189\n111,142,159,179\n75,90,108,128,146,160\n1,13,101,114,238,241,245\n62,185,298\n58,188,298\n191,196,198,223,296\n54,70,194,197,213,216,241,298\n188,191,215,226,232,242,287,299\n180,190,197,290,297\n58,82\n59\n38,59\n49,54,60\n5,53,305,347\n6,53,306,340\n55,304,320,322\n51,309,327\n44,304\n45,52,58,303\n70,180\n70,179\n66,104,181\n102,180\n71,114,123,130,178\n66,79,82,171,173,177\n62,184,295\n61,83,188,297\n137,163,166,199,296\n202,221,297,305\n17,47,312\n50,310\n83,171\n88,173\n91,157,179\n53,56,191,297\n57,189,193,269,294\n63\n13,52,281,305\n51,278,306\n50,307\n40,260,310,327\n73,174\n77,173\n53,68,184,294\n68,178,196,300\n49,312\n51,309\n0,16,18,27,31,39,51,75,114,180\n16,18,43,47,54,57,84,99\n0,54,56,91\n80,180\n114,164\n154\n25,59,72,74,142,180\n0,69,76,78,100\n0,50,55,70,75,90,92\n59,73,79,148,154,180\n0,16,19,29,33,62\n19,23,27,37,65\n128,162\n160\n162,180\n156\n29,74,92\n72,108,114,128,135,162,180\n0,56,62,66,87\n50,73,94,96,151,154,180\n75,92,103,170,180\n21,39,41,64\n19,29,49,63\n130,132,137,139,141,167\n134,164\n157\n53,57,59,81,84,86,90,93,95,107,113,119,126,130,168,170,173,175\n0,2,5,9,29,62,78,90\n72,88,91,180\n77,101\n0,37\n0,41\n2,16,44,73,90\n8,58,90\n2,66,119\n90\n6\n0,40\n180\n143,180\n180\n110,135,152,180\n0\n0,42\n0\n0\n0,31,36,92,123\n0,5,16,33,35,73\n0,78\n0,44,90\n2,14,30\n0,12,43,50,53,56,66\n0,17,49\n0,26\n162,180\n117,156,179\n0,31,33\n0,108,146\n47\n0,27,90\n1,29\n0,29\n123,154,180\n0\n0,180\n0,56,59,61,63,73,131,180\n0\n12\n9,11,17,19,21,54\n180\n0,53,80,122,180\n0\n0,39\n0,177,180\n180\n21,27,29,180\n0\n1\n180\n126,141,180\n0,20\n138,175,180\n21,51,75,97,116,139,159,180\n0,18\n35,42,46,62,112,144,163\n19,50,180\n0,4,6,43,47,49\n14,24,34,180\n29\n43,62\n0,6,23,28,33,38,48,179\n0,13,24,40,43,54,76\n41\n19,40\n90,124\n84,89,103,119,126,150\n2,62,295\n30,60,93,293\n1,26,28,40,66,68,325,344,351,356\n20,28,40,67,321,338,340,355\n38,57\n59,61,63,67,70,100,119,173\n67,174\n86,152\n85,90,103,106,132,150\n62,301\n63\n26,46,330,351,353\n26,49,326,332,334\n89,105,127\n71,83,86,90,103,106,115,135\n173,289\n172,190,193\n37,41,45,314\n71,77,84,152,155\n51,303\n29,32,35,53,337\n46,84,315,322\n13,52,82,326\n73,173\n75,108,167\n47,312,336\n6,50,76,96,313,316,328\n72,87,94,119,144\n69,125,128,157\n0,33,44,48\n0,55\n134,175,180\n180\n0\n0\n0,156,180\n0,6,20,74,97,123,148,154,162\n180\n0\n0\n9,13,15,170\n1,10,13,19,26\n41,180\n29,33,37,55,68,90\n90\n1,26,52,180\n65,90\n79,105,145,166\n180\n58\n162,180\n78,101,113,123,137\n0,22,56\n0,38,57,82\n0,6,28,35,43,60,82\n48,180\n53,78,90\n87,89\n0,93,160\n78,144,178\n0,44,76\n93\n94,108,122,127,157\n24,55\n30,59\n102\n100,102,105,180\n0,14,43,81\n0,38,151,180\n55,79,81,90\n86,90\n0,22,80\n16,54,56,62,64,89\n0,27,29,100\n62,82\n90\n117,119,132,159,167,180\n32,69\n14,42,90\n1,21,38,95\n82\n4,7,28,30,32,65,67\n69,86,119,309\n69,115,304\n176,204,290,310\n150,176,247,292,309\n59,306\n59,301\n43,46,62,65,93\n61,94\n60\n60\n69\n67,80,83,142\n51,80,280,284,313\n52,286,313\n60,83,86,89,154,166,241,250,253,279,282\n66,68,84,132,152,154,161,170,245,282\n312\n112,138,161,200,278\n113,160,201,280\n59,302\n59,302\n68,87,114,120,129,156,268,274,276,284,292,294,300\n71,90,111,119,123,162,269,273,289,295\n278,315\n278,314\n62,91,285\n35,41,47,75,101,103,293,295\n78,123,138,270\n78,98,271,300\n0\n0\n0,8\n104,125\n12,16,24,40,74,327,355\n9,43,75,328,353\n123\n117,136,324\n36,72,324,359\n38,327,357\n180\n141,169,179\n13,15,35,41,90\n0,25,30,103\n86\n90\n86\n90\n15,60\n15,71\n110,165\n85,103,132\n150\n127\n57,173,175,180\n10,55,303,321,358\n19,55,304,359\n16,57,92,309,338,356\n63,176\n56,71,302\n180\n180\n0\n167,180\n0,5\n154,180\n67,189,226,298\n68,191,222,226,282,289,300\n206,299\n208,299\n56,58\n62\n57\n57\n2,53,305,353,358\n55,304,339\n72,179\n179\n61,186,207,296\n62,186,279,288,300\n45,313\n92,173\n185,299\n54,304,342\n304,343\n81,97,129,137,169\n75,95\n14\n0,4,29,173,176,180\n0,4,9,36,53,59,81\n40,51,89,110\n77,85\n124,146,155,167,177,179\n0\n23,64,90\n59,180\n57,306\n57,75,82,304\n177\n77,144,156,177\n52,180\n3,8,17,40,45,58\n180\n180\n56,180\n56,314\n56\n48,305\n48,284\n0,9,83,85,90,100,105,119\n52,91,113,119\n24,49,55,62\n0,9,70\n98,117,135\n123,151\n90,112,151\n87,96,108,129\n93\n29,57,78\n0,6,13,51,102,133,137\n10,27,41,43,69,71,101\n87\n91\n0,8,35,78,84,88,97,159,164\n0,31,38,42,93,102,109\n91,109,111,158\n58,105\n0,10,20,41\n0,35,331,354,357\n29,329,348\n85,88\n0,18,95\n90\n6,23,46,80\n106,141\n1,23,25,35,41,90\n0,6,105\n1,33\n0\n0\n0,180\n1,21,27,87,89,153,155,179\n90\n13,33,171,178\n62,66,69,86,89\n0\n0,180\n0,2,6,171,180\n25,32,41\n63,74,87,90\n0\n180\n0\n0\n357\n359\n0\n180\n0,21\n0,22\n0,31\n33,38,41\n79,284\n78,283\n0\n53,70,81,137,169\n36,53,75,84,92,126\n164\n0,41,54\n180\n0,40,58,60,180\n79,96,102,105,170\n93,96,159,165\n46,281,299,308,312,314\n49,280,303,305\n0\n180\n0\n180\n0\n180\n0,180\n0\n180\n0,2,6\n0\n0,27\n0,37,52,54,56,110,125\n118\n180\n105,142,164,167,180\n0,8,10,43,57,78,102,180\n0,29,39,43,89\n180\n40,180\n0,22,32,42,161,180\n180\n180\n80,96\n192,216,227,237,241,245,256,259\n2,34\n24,45,63,77\n27,37,71,90\n57,61,90\n99,130,151\n91,111,134\n17,36,54\n89,109,125,128\n2,30\n20\n0,35,54,143\n0,21,23,33\n80,120,133,147\n61,97,123,128,164,302,307,313\n88,94,100,104,120,126\n94,109,119,133,139\n56,93,306\n60,92\n85,105,115,141,168\n74,102,124,147,163,296,301\n79,97,102,108,146,161,164,167\n95,108,111,118,125,144,157,176\n106,136\n84,101\n75,79,109,127,141\n52,76,113,142,178\n153,172\n112,152,161,167\n91,144\n64\n95,118,162\n109,135,157,180\n89,150,164,180\n89,91,114,124,152,180\n68,73,75,92,107,119,168\n86,125,148,180\n96,118,133,151,157,161\n108,119,131,142,152,170,180\n96,141,162\n0\n114,153\n1,17\n64,90\n104,111,121,140,157,159,180\n255\n97,256\n0,50\n1,11,15,19,47,52,56,119\n63,68,90\n2,12,33,46,60\n0,45,77\n0,7,11,13,35,42,59,62,91\n90\n100,117,180\n0,22,180\n81,88,91,106,138,155,157\n91,107,118,147\n91,100,130,151\n21,52,94\n10\n108,110,157\n106,128,140,142\n10,51\n87,115\n88,102,121,211,214,216,231,236,245,248\n81,96,223,246,249\n108,221,238,263,279\n0,4,18,25,47\n0,55,66,68,88,116,118,121,146,180\n0,15,24,35,46,52,64,100\n46\n145\n64,181,199,298\n45,59,179,187,190,193,297,313\n0,6,180\n0\n180\n158,180\n0,12,78,89,102,106,114,121,136,174\n0\n145,180\n0,150,157,169\n0\n148,180\n0,3,35,59,98,102,106,110,114,135,148\n0,27,29,33,57,100,160,174,180\n0,116\n37,310\n28,33,39,58,308\n2,24\n61,182\n98\n85\n53,66,185,188,194,295\n57,80,87,110\n61,63,69,79,111,129\n0,24,66,76,88,116\n61,66,92\n0\n36,39,57,161,180\n0,35,45\n70,90\n0,22,34,37,42,60\n69,87,89,114,127\n54,61,74,101,143\n58,75,188,300\n78,184,300\n0,10,81\n1,180\n0,177\n0\n0\n0,160,170,176\n53,64,177\n0,179\n0\n3,12\n2\n0,103,180\n152,166,172,180\n14,52,62,108,173,178,180\n0\n0\n180\n160,180\n0\n154,173\n0,24,31,87\n0\n0,178\n180\n180\n0,180\n171,180\n0,145,176,180\n0,177,180\n0,24,157,180\n0,180\n16,38,61,85,88,91,99,130,158,175,180\n15,41,49,57,79,87,105,107,130,152,154,180\n0,2,169\n2\n0,154,168\n0,7,180\n34,51,79,88,94,121,160,164,173,303\n25,30,36,67,89,118,156,173,290,312\n58,330,333\n59,326\n0,5,135,153\n0\n0,180\n65,182,184,296\n66,187,204,295,325\n59,75,303\n58,303,338\n66,176\n66,86,93,164,180\n188,296\n295\n54,306\n62,145,151,179\n0\n0,174,180\n72,82,90\n87\n59,90,107\n35,64\n72,103\n62,296\n297\n180\n0,72,98\n150,157,180\n0\n0\n0\n0\n180\n180\n180\n180\n0\n0\n180\n180\n0\n0\n180\n170\n0\n180\n0\n0\n0\n223,227,247,269\n257,277,280\n74,143\n274,282,289\n288\n287\n0\n0,25,38,43,46,122,127,140,175,180\n180\n180\n0,38,48,88,180\n26,64,66,71,73,135\n113,152,173,176,180\n103,151,179\n10,27,41,56,70,148,168\n109,147,153,175\n0,180\n11,52,76,144,150,180\n41,61,66,77,79,93,119,168\n58,308\n57,354\n189,212,293\n192,292\n0\n174,191\n67,174,192\n65,71,190,289\n189,196,289\n61,305\n0,177\n90\n90,110\n0\n5,31,65,100\n85,118\n100,126\n103,109,118\n58,72,298,351\n39,45,55,75,115,302,307,313,350\n25,76,114,294,358\n76,111\n0,3,20,23,42,45,48\n170,180\n61,297,300,303\n45,60,75,299,317\n53,100,132,161\n53,82,124,144,169\n66\n12,65,307\n180\n0,180\n0,180\n0,180\n0,163,171,180\n5,8,15,17,20,23,31,39,55,65,75,113,123,127,155,176,179\n0,125\n72,74,84,88,90,140,148,163,180\n53,76,80,84,88,92,116,135\n53,66,86,140\n19,61\n62,187,298\n61,184,297,301\n53,64,300\n58,301\n66,68,137,176,192\n68,177\n67,190,192,303\n64,185,300\n53,306\n58,303\n0,180\n0\n109,154,180\n0,2,156,161,163,171,179\n1,39,56,85,99,101,123,126,180\n115,180\n0\n0\n0,22\n0\n0,64\n180\n180\n0\n180\n14\n70,125,180\n175\n161,180\n180\n114,143,153,180\n87,120,145\n180\n180\n94,106,141\n72,94,116,130,136,151,163,165,298,300\n71,105,126,140,149,297\n44,61,300\n59,63,306,317\n176,265,287\n175,193,275,295\n73,140,163,295\n68,74,121,147,299\n43,62,80\n53,68,85,308\n43,90,308,322\n47,81,311,328\n111,113,115,166\n0\n286\n273,290,307,331\n308\n302\n54,298,300,304\n70\n180\n180\n56,70,291,303\n61,174,297\n0,8,180\n0\n14,26,50,55,70,76,94,96,99,160,180\n98,134\n0,180\n28,180\n0,11,34,112\n0,40,44,74,84,101,179\n10,19,55,67,72,76,83,96\n0,25,30,59\n222,233,259,315,332\n25,220,276\n21,31,217,248,268\n249,270\n218,260,273,275\n33,49,279\n0\n0\n1\n0,2\n0\n0\n1\n180\n0,180\n1,167,174,176\n0,180\n2,6,29,77\n0,14\n0\n21,160\n0,180\n2,17,29\n0,180\n0,123,180\n0,25,29,38,85,116,158\n38\n180\n4,180\n0,180\n0,5,11,14,94,110,133\n0,25,27,31,44,47,88,114,128,132,154\n0,21,59,99,101,104,158,160\n136,180\n0,33,180\n0\n128,132,144,180\n0,8,10,164,171,177\n0,179\n0,159,164,180\n0,2,180\n180\n0,17,24,180\n2\n0\n0\n0\n74,94,138\n12,39,62,69,72,91\n43,78,109,111,125,178,180\n90,114,146,170\n74\n0\n0\n0,11,13,60,65,80,90\n0,10,50,57,78\n0,174,180\n1,15,17,52,180\n3,15\n8,180\n0\n1,24\n0\n180\n0\n22,94,135,154,180\n67,81,91,95,112,130,172,180\n35,145,167,180\n0,180\n0\n0\n180\n26,28,141,144,148,159,161,172,175\n0,23,147,150,156,180\n0,180\n0,180\n54,90,124,149,180\n0,35,54,134,153,171,174,177\n0\n0,180\n0\n0\n0\n0,3,25,180\n0,9\n0,23,30\n58,81,87,114,123,133\n168,180\n0\n0,180\n0,179\n0\n3,7,9,180\n0\n152,166,180\n180\n128,138,155,169,174\n146\n311,318,326,350\n284,312,326,352\n59\n63,67,83,206\n56,66,85,96,205,229\n29,309,333,341,359\n287,313,322,353,358\n4,10,16,30,33,65,338,358\n20,50,68,358\n219,272,326\n224,272,314,316,318,328\n79,201\n48,66\n168,180,198\n85,197\n157,179,191,208,213\n68,77,177,202\n224,271,286,303,323\n284,308\n269,281,290,302,327,345\n224,278,319,321\n58\n0,11,24,51\n7,30,83,88,90\n10,12,37,59,75\n9,96,154,158,166,168,171\n0,66,73,77,89\n59,180\n180\n136,180\n60,123,177,180\n61,180\n56,71,163,180\n49,180\n50\n53,58,178\n180\n60,180\n180\n48,51,174,180\n59,76,164,180\n0,59\n178\n179\n175\n176\n34,39,59,303\n12,31,34,60,297,326\n51,54,57,315\n50,54\n79,118,124,177,294\n52,304\n52,307,338\n51,285,309\n306\n62,188,302\n63,184,279,304\n182\n57,180,197,293\n58,180,198,288,307\n42,71,166,287,317,320\n182\n180\n27,50,62,64,68,75,78\n32,52\n57,99,178,225,309\n58,164,184,309\n227\n70,161,296\n67,165,169,296\n53,309\n54,306\n177,203,287\n178,282,288\n16,53,82,297,311\n55,310\n176,217,234\n180,223,226,237,240,285,287\n71,177,293\n57,166,184,300\n180\n73,166,293,295\n26,54,310\n2,54,307\n175,196,214,271,290\n178,197,209,290\n34,41,48,290,310\n44,310,324\n52,294,304,308,321\n55,157,181,291\n34,158,182,280,283,295\n179\n7,9,122\n1,4\n160,168,180\n0,96,101,108,133\n13,93,97,106,122,124,150\n0,120,163\n0,32,38,40,52,79,94,109,125,142,163,167,180\n2\n54,77,160\n0,18,59,98,100,104,154\n106\n83,99,101,113,122\n75,107\n82,87,110\n0,4,21,35,54\n0,7,25\n18,57\n93,113,124,148,169\n130,180\n139,174,176\n177,179\n0,106,108,121\n180\n0,3,9,30,114\n0,9,16,50,65,85,123,128,134,157,170,180\n93,121\n1,22\n180\n3,10,349,359\n150,161,163,338,357\n151,338,351\n114,143,164,352\n5,35,43,46\n4,318,325,344,348\n242\n234,246\n0,60\n45,63,90\n0,7,9,29,33,40,61,64,83,87,90\n3,10,19,90\n50,73,80\n0,54,120,173,176\n0,17,28,47,57,90\n90\n0,21,23\n0,15,26\n0,11\n143,150,177,179\n118,165\n0,57,73\n0,8,21,25,28,40,45,90\n10,26,121\n3\n119,142,180\n150,164\n14,47,49,89\n13,116\n180\n0\n145,166,180\n40\n0,22,31,44,64,69,89\n142\n0,54,89\n0,7,119,123,138,149,168,179\n13\n153,160,180\n4,23,155,158,163,166,169,177\n162,184,191,205,208,214\n237\n237\n139,165,176,179,195\n147,167,173,195,217\n6,35,37,50,167\n10,36,55,98,110,147,160\n22,27,52,55,61,67,161,175\n13,47,157\n359\n359\n18,53,69,96\n14,58,97\n209\n208\n31,58,73,170,180\n48,77,166,169,180\n58,180\n0,25,74,85,92,122,132,143,157\n38,60,80\n90\n39,46,52,72\n180\n80,91\n3,31,55,70,88,120,122,124,136,157\n47,80,90,93\n0,7,31,47,53,62,67,83,87,90,117,149,154,157,165,180\n0,10\n0,12,57,78,80\n17,107,128\n87,90\n90\n1,20,33,49,68,83,99,119,122,125,128,131,150,157,165,170\n3,22,25,49,52,54,58,88,117,164\n55,148,180\n150,171,175,179,201,283,315\n58,149,165,173,179\n29,45,63,78,105,136,158,180\n48,75\n0,13,21,32,37,47,51,74,79,90\n0,115,126\n6,10,12,32,65,87,111,146,152,179\n1,15,22,25,31,60,139,142,149,151,166\n56,60,180\n20,94,101,110,140\n79\n80,88,90,103,126\n0,29,52,81,86,90\n0\n35,64,68,118\n42,66,149,151,158,163,180\n28,44,58,63,180\n0,8,50,76,86,90\n0,2,137\n32,57,72,88,121,180\n61,80,174,198,289,291,314\n53,80,178,196,295,304,306,310,316\n0\n94,129,152,156,160\n90\n41,88\n61,90\n45,75,105,138,159\n0,3,41,74,121,136\n19,53,66,79,90\n5,43,69,72,149,151,167\n45,48,56,59,148,167\n53,55\n0,26\n0,10,33,55,90\n48\n34,78,80,92,95,118,146,166\n6,10,26,78,93,95,127,155\n2,113,343\n2,23,39,71,132,138,166\n28,64,122,147\n59,68,74,146,149,180\n24,27,35,49,62,177\n39,180\n66,167,310,321\n60,77,207,300,332\n0,9,15,28,35,41,44,60,90\n0,13,56\n26,41,45,90,111,122,159,162\n29,50,88,94,98,103,123,164\n0,8,10,23,30,51,72,90\n0,2,8,23,49,55,57,60,68,71,75\n17,38,80,111,133,158,178\n15,80,82,108,165,179\n56,180\n0,3,14,20,57\n23,55\n0,16,24,37,46,51,90\n90\n0,40,63,90\n0,21,42,54,63,90\n0,121\n58,180\n27,44,54,62\n20,22,25,47,76\n62,180\n16,51,90\n14,37,42,52,56\n22,30,40,51,54,79\n19,44,60,93,163\n0,20,66,72,84,86,90\n20,59,112,140,161\n0,19,57,108,114,139,158,169\n43,59,87,133,139,149,153,157,174,180\n0,5,11,13,46,49,69,90\n0,5,14,45,59\n0\n61,68,76\n351\n350\n45,51,59,162\n28,56,96,102,109,148,180\n39,85,137,163,169,180\n28,141,159\n0\n0,47,139,180\n1,3,26,34,39,46,71,76,90\n0,2,16,112,131\n3,25,58,90\n90\n145,168,171,174,176,179\n0,24,41,67,90\n0,39,95,121,144,180\n44,63,90\n120,153,175,180\n0,11,15,52\n18,121,136,161\n0,30,44,49,62,75\n0,26,58\n0,20,120\n144,180\n8,12,18,20,37,49,62,102,105\n3,14,26,44,58,66,106\n29,38,41,85,134,158\n0,88,102,122,135,148,150,153\n0,10,30,49,59,82,105,128,131,134,150,180\n0,22,64,109,138\n18,70,72,85,92,115,118,142,149,160,163,165,167\n0,20,34,111,115,120,138\n59,180\n33,35,51,63,70,179\n54,180\n41,61,180\n2,40,78,86,90\n107\n70,177\n0,24\n184\n75,179\n22,38,53,57,71\n0,43,51,76\n49,179\n58,79,169,171,197,299,319\n56,77,172,197,270,273,294,300,309,311,313,318,320\n35,71,73,163,165,185,265,285,311\n51,151,181,185,270,293,295,310\n26,48,55\n2,25,28,55,74,82,86,88,90\n17,19,28,83,87,90\n17,85,90,99,109,138,165\n19,109,177\n18,51,53,77\n0,2,4,11,17,47,52,67,90\n2,5,45,72\n42,75,163\n51,54,73,151,157,166,186,263,281,308\n29,51,61,153,182,270,279,283,311\n12,32,54,72,90\n4,6,8,15,19,32,42,49,65,72,90\n53\n17,47,78\n1,28,35,39,42,123,155\n0,9,52\n147,168\n29,31,33,50,66,90\n2,7,27,49,75\n0,3,10,112\n0,52,64,88,121,148,168\n44,64,82,170,172\n47,69,176,180\n0,18,33,56,79,90\n14,61\n0,12,18,20,22,47,78,81,90\n0,54\n33,60,90\n12,65\n0,3,10\n80,97\n44,49,65\n29\n0,14,17,48,59,64,68,74,87,90\n0,14,34,40,43,53,60\n57\n172\n15,18,50,63,82,95,136,163\n43,74,100,113,219,221,224,276,314,349\n40,68,73,114,160,199,225,295,312,336\n49,70,173,180\n0,6,13,19,38,70,90\n0,67,99,122,143,173\n0,5,34,38,53,59,90\n1,5,15,45,65,83,88,104,116,132,134,146,176\n0,4,112,114,121,139\n0,123\n37,45,61,68,91,150,170,175,180\n0,13,36,89,120,157\n60,180\n40,63,181,300\n60,178,299\n54,64,177,299\n75,93,112,184,215,232,281,321,354\n34,63,183,203,273,301,328\n0,3,40,48,74,80,86,113,154,169\n173,180\n22,26,34,51,185,187,284,300\n24,54,183,290,299,305\n21,34,41,59,106,125,138\n60,64,167,172,179,181,292\n48,80,183,186,277,296\n56,73,177,195,301\n66,185,300\n0,2,7,12,153,166,168,180\n3,130,158,160\n151,163,169,191,341\n123,153,189,209,241\n199,214,225,234\n230,251,260,277,280,292,304,328,330,338,340,343\n228,235,253,282,330\n244,266,269,325,332,340\n211,214,240,273,302,347\n196,244,262,286,296,301,329,338,350\n6,68,123\n3,17,20,67,115\n30,49,52\n263,321,336\n262,329,336,340\n19,48,92,95,99,106,125\n314,330,332,334\n0,19,39,90\n36,101,118,136\n90\n123,133,136,141,162\n156\n19,48,54,72,90\n151,158,161,166,186,204\n0,38\n58,180\n180\n304,310\n307\n56,184,211,298\n56,185,298\n48,67\n55,310\n55,310\n0,47,67,124\n0,20,41,72,84,103,111,121,152,180\n0,30,73,104,123,166\n11,34,86,97,109,124,170\n0,10,20,26,103,107,110,123,131,173\n0\n156,180\n4,7,39,51,53,71,75,77,106,120,135,180\n1,5,115,126,135,141,146,159,180\n8,49,87,115,133,213,235,333,345\n25,41,92,94,96,135,144,155,192,202,208,270,338,357\n4,27,88,92,95,122,154,174,195,199,201,208,211,233,330,335,341\n59,180\n56,69,306\n54\n50,180\n52,179\n48,300\n49,301\n47,290,311,331\n58,296,308,323\n26,296,328\n293\n65,172\n69,171\n180\n65,178\n185,292\n185,259,267,271,290\n174,178,181,199,201,294\n55\n65,158\n61,172,194,295\n64,127,182,302\n63,167,183,302\n161,175,177,194\n302,328\n65,93,153,178\n64,166,182\n60,175\n59,181,308\n63,182\n0,10,25,40,46,56,67,78,110,121,127\n99,128,131,134,164\n0,2,15,21,46,61,86,92,104,117,123,164\n52,67,69,172,299\n47,66,76,85,156,161,176,179,194,269,275,285\n41,61,63,70,88,91,96,104,124,134\n98,117,131\n44,85,97,119,127,136,138,151,154\n13,15,30,177\n90\n104\n90\n67,90\n90\n10,34,70,75,108,142,144\n57,59,68,90\n117,150,175\n111\n48,51,53,58,68,80,84,97,122\n112\n37,40,55,60,65,70,89,97,101,104,143\n98\n91\n48\n56,180\n48,50,84,313\n31,56,311\n56,62,93,163,166,173,198,291,307\n64,163,177,206,284,317\n64,175,198,286,314\n50,67,87\n0,9,37,63,78,90\n0,21,72,88,90\n0,17,43,106,127,131\n52,67,69\n31,60,172,178\n12,173\n14,34,176\n12,58,74,77,101,159,163,178\n8,21,42,81,84,165\n0,9,57,87,111,138,156\n0,137,180\n65,98,106,129\n10,12,39,75\n0,67,88\n9,90,112,136\n2,14,33,69,71,75,83,85,87,104,147,168\n19,53,102,122,148,167\n0,3,6,27,65,84,104,123,126,152,178\n15,66,81\n0,9,15,32,37,43,79,99,114,157,180\n0,2,25,27,29,66,123,140,161,163,175,180\n0,73,75,91,110\n0,11,24,50,108,113,116,120,140,180\n0\n0\n133,138,172,177,180\n114,118,122,138,159\n142,148,180\n156,160,173,177,179\n25,113,125,154\n3,36,61,70,100,126,141,151,154\n130,140,143,169\n0,18,20,29,111,137\n1,12,36,75,103,127,154,158,160,163,166,171,174,180\n0,28,32,84,101\n145,171\n99,151\n0,25,99,118,129\n223,255\n226,271\n225,276,288,291,293\n225,248\n128,150,217\n123,154,175,217\n165,175,196\n143,154,175,219\n146,217\n153,213\n150,214\n59,76,288,301\n68\n88,157\n189,293\n181,208\n188,193,198,202,279,298,317\n63,171,185,285,304\n60,79,186,188,304\n63,188,203,301\n56\n292,307\n299,302\n301\n303\n51,179,183,196,212,214,237,294\n52,188,237\n61,286,303\n68,175,192\n69,94,177\n69,97,176\n67,123,176\n59,80,122,157,179\n67,71,121,123,149,161,172,176,178\n169,171,173,176,186\n59,180,302\n59,68,178,306\n302\n63,299\n58,301\n72,174,185\n0,35,69,90\n0,4,6,33,40,60,70,90\n0,129,145,149,164,166,176,179\n0,133,150,152,180\n117,151,166,178,180\n0,14,31,89\n0,134,155,157,180\n45,90\n0\n0,59\n111,141,168\n32,49,52,120,123,161\n122,160,165,167\n46,82,136,144,167\n252,255,257,268,270,285,325,327\n252,280,306,329,351\n31,79,82,85,95,101,359\n10,14,16,22,38,91,95,102\n10,56,69,123,127,147\n0,3,73,122,139,152\n7,119,236,240,244\n6,121,233,359\n282,285,294,300,321\n281,284,311,313,323,326\n222,242,266\n224,232,243\n39,53,96,115,356\n18,21,25,39,51,93,108,359\n39,49,51,86,89,161\n1,7,50,70,73,77,80,90,151\n244\n243\n8,287,295,298,330,351\n5,8,287,330,351\n4,122,145\n30,63,135,180\n109,131\n88,101,253\n89,114,119,124,127,155\n9,243,261,306\n245,247,354,356\n244,258,308,316,324,339\n15,21,27,110,120\n61,180\n32,40,43,65,85,179\n47,179\n53,180\n58,66,180\n60\n68\n63\n64,166,196,199\n61,173\n46,302,332\n46,300,331\n255,262,268,298\n186,261,291,294,296\n176,197,288,304\n53,56,169,187,302\n39,59,158,180,299\n12,60\n298\n300\n64,96,164\n62,81,96,139,159,161,176\n179,196,235,297\n183,197,295,298,306\n287\n189,296\n53,70,170\n61,176\n63,167\n44,67,189,300\n172,188,303\n184\n156,184,187,191,226\n63,91,298\n59,72,144,159,172,296,298,300,308\n57,306\n31,35,57,302,325,327\n157,181,205,226\n47,60,301\n59,179,301,307\n301\n301\n173,303\n298\n297\n54\n59\n57,185,202,268,289\n55,187,292\n54,181,305,309,318,326,329\n39,47,56,174,312\n58,177,300\n58,178,296,312\n175,188\n0,24,51,56,62,92,120,139,180\n58,180\n180\n145,149,176\n45,57,62,70,173\n60,92,173,180\n47,180\n0,112,129\n71,92,168\n10,28,46,48,50,82,100,164\n30,44,50,162,272,295,323,344\n35,280,323\n300\n300\n26,73,130,148,151,155,157,163,172,180\n24,52,173,288\n41,52,175,181,196,203,291\n58,174,289\n1,28,49,64,84,86,90\n0,16,43,55,58,90\n8,45,54,89,108,138,156,162,169\n6,14,28,34,52,119,139\n13,73,84,88,91,112,122,168\n22,63,69,85,111,123,126,133,171\n59,83,142,152,180\n58,60,182,297\n59,95,184,287\n2,37,43,53,90\n0,25,111,127,144,160\n23\n6,45,117,137,154\n0,24,50,72,75\n90\n8,58,78,85,102,174\n26,45,76,100,172\n10,23,29,123,149,208,214,221,255,351\n18,107,110,124,206,228,359\n6,9,12,15,21,140,162\n8,23,27,137,139,160,173,175,179\n0,19,48,74,80,90,96,171\n13,66,113,116\n0,90,102,125,127,152\n60,64,67,70,73,76,84,179\n45,61,64,83,180\n62,156,177,188,193,203\n44,66,154,181,199,269\n254,300,340\n196\n0,51\n0,3,5,10,39,90\n0,52,90\n3,13,15,29,31,56,58,63,89,101,128,145\n59,74,96,103,130,179\n0,25,55,88\n0,23,47,68\n0,26,58,78,80,83,95,135,161,180\n0,37,47,89,109,124,154,180\n36,56,90,114,120,134,137,170\n65,189,306\n68,181,307\n58,181,299\n57,179,299\n19,22,25,38,78,94,156\n31,55,58,95,177\n143,165,180\n160,180\n120,129\n0,103,135,140,153,171,173\n0,6,10,133,155,180\n11,127,149,153,157\n3,139,164,186,189,204,324,345\n2,5,8,10,12,82,105,134,154,168,171,188,243,292,323,330,346,348\n250,284,322,335\n15,17,69,109,139,157,171,173,175,248,254,264,345\n9,20,153,155,170,180,245,341\n0,3,31,91,188,221,242,267,310,329,351\n24,40,122,125,174,195,218,253,272,308,355\n180\n194\n57,62,178,192,309\n72,149,172\n0,9,13,15,55\n180\n0,42,180\n85,89\n120\n33\n7,28,40,43,52,70,84,90\n0,119\n62,180\n0,23,41,62,90\n0,117,140,144,155,159\n0,71,79,90\n0,81,95,122,132\n0,8,101\n0,56,80\n51,55,77,79,163,180\n62,171,175,186,299\n12,30,48\n0,17,98,100,102,118,120,122\n0,6,31,65,90\n0,119,162,165\n0,33,67,87,90\n2,8,14,28,35,39,46,59,72,107,143,146,163,169,177\n9,17,29,37,46,62,69,90,139\n0,46,90,160,177,180\n17,31,38,41,44,74,77,82,85,180\n50,80,123,154\n0,5,26\n18,44,59,62\n0,6,120,135\n0,2,7,17,36,70,72,74,90\n180\n16,29,58\n40\n0,7,9,38,67,90\n13,19,30,48,59,79\n0,90\n0,19,67,77,106,111,113,129,132,160,180\n1,8,18,43,53,159,176,180\n24,35\n178\n175,177\n174\n0,3,26,29,33,39,54,70,84,86,89\n0,90\n0,10,54,59,61,64,67,72\n8,28,59,116,180\n0,2,12,122\n53,58,176,178,180\n180\n7,123\n0,24,83,86,120,122,124,143,151,180\n59,205,311\n38,59,178,184,190,218,277,280,292,295,299,312,337\n23,44,50,56,62,69,75,81,143,160,175,189,205,241,259,278,300,337\n66,90\n0,82,84,90\n0,13,22,25,45,54,61,88\n11,13,64,70,85,90\n4,12,27,50,63,65,94,125,147\n4,20,27,31,43,52,63,67,70,84,111,121,123,156,160,170,172,176,178\n0,6,9,15,28\n1,4,21,29,67,77,90\n0,31,61,73,75,90\n29,65,87,97,134\n0,18,32,74,90\n180\n0,26,104,124,138,180\n0,10,52,90\n0,29,47,94,124,152\n15,52,95,114,120,142,180\n14,79,99,126,161\n0\n0,14\n0\n156,180\n0,3\n0\n0\n180\n0,13,91,106,116,122,140,165\n3,43,76,123,143,147,150,180\n58,60,63,67,78,99\n32,56,77,80,117\n0,91,180\n0,6,24,46,69,73,92,125,149\n102,119,124,135\n13,35,60,112,117,121\n25,27,70,72,90\n17,26,31,54\n87,90\n64,120\n68\n54,73,101\n62,76,90,92,94,130\n5,21,36,42,65,218,228,349,352\n11,28,36,39,42,157,217,231,234,351,353\n0\n124,137,139\n10,34,150\n42,76,153,172\n180\n235,257\n234\n300,320,337\n263,294,307,321,349\n20,98,112,125,143,165,169,194,250,352\n118,155,177,209,234,354\n106\n103\n74,88\n0,5,7,30,32,35,37,54,90\n0,11,15,19,28,58,90\n0,2,40,94,121,137,180\n137,180\n0,3,14,20,85,119,147,180\n0,4,7,20,25,29,51,82,120,123,126,129,150,180\n2,7,10,109,113,116,118,134\n61,181,301\n65,184,303\n53\n60,75,183,290,311\n200\n191,274\n55,304,306\n55,305,307,318\n72,146,180\n62,172,195,304\n60,187,308\n193,288\n57,306,351\n52,306,329\n0,8,43,47,88,90\n0,9,92,96,127,129,149,151\n147,167\n2,4,6,48,81,83,85\n8,114,127,145\n0\n0,124,130,156,176\n15,23,27,30,53,127,148,154,158,174,178\n317,319,339\n283,324\n15,34,40,54,72,91,111,123,125,135,144,149,162,166,172\n4,16,18,20,38,51,59,61,84,87,102,124,135,145,163\n304,341\n304,337\n0,2,13,17,35\n8,115,118,222,225,233,237,246,262,265\n53,120,180\n65,180\n54,69,153,173\n41,74,82,84,88,130,172\n49,306\n49,51,60,64,67,98,168,296\n40,58,174,191,297,299,307\n299\n298\n58,76,191,288,305\n58,186,306\n54,58,66,146,175,187,309\n42,58,74,88,143,149,156,177,297\n0,3,57,118,174,180\n167\n66\n0,3,12,15,64,72,80,84,119,121,173,178,180\n142,170,173,180\n0,22,54,83,106,109,180\n0,20,55,79,88,103,106,125,169\n34,61,164,180\n22,25,27\n125,129,154,172,176,180\n2,11,52,71\n18,28,57,78,129\n51,167\n16,114,159\n38,41,46,51,80,85,180\n1,14,29,31,41,62,64,80,90\n0,33,49,53,84,86,118,132,136,142,155,180\n0,7,14,55\n44,58,180\n0,24,36,61,87\n60,180\n151,180\n2,16,23,29,48\n0,4,32\n10,60,108,125,131,137,176,180\n25,29,33,56,89,91,128,147\n172\n172\n2,57,306\n18,52,77,90\n4,41\n54,69,179\n177,265\n177,270\n2,60,90\n64,160,180\n10,93,120,139,180\n7,20,38,66,86,139,147,149,169,172,180\n139,171,180\n180\n5,24,45,55,82,117,147,160\n2,15,20,36,42,75,146,165\n20,31,41,112,134,148,150,167\n25,38,43,150,177\n0,36,45,55,82,156\n69,154,180,300,309\n54,57,180,306\n13,18,24,40,67,99,141,165\n0,8,28,39,41,43,70,81,108,157,180\n15,44,75\n35,64,77,80,95,157,171,180\n0,11,22,60,85,126,128,149,180\n37,55,82,87,90\n0,10,15,27,46,88,111,127,155\n46,71,166\n3,125,167,224,229,232,240,352,357\n3,111,165,171,177,224,227,233,240,288\n21,40,46,74,80,86,101,119,133,154,168\n44,79,161\n42,60,87,127,153,180\n38,80,125,155,175,202,224,258,281,335\n28,49,333\n27,49\n34,39,43,64,85,133,154\n23,58,100,119,142\n0,35,55,68,92,147,180\n47,170,207,291,314\n93,156,159,180\n0,10,34,39,50,79,113,133,137,139,151,165,180\n0,20,32,104,146,148,153\n0,20,100,106,117,130,147,163\n14,37,136,234,317,320,331,351,357\n89,95,116,149,208,227,315,321,332,354\n0,61\n1,38,46,55,72,77,90\n55,82,180\n0,19,70,82,90\n0,11,112,134,152,177,180\n2,21,42,45,68,89,91,93,95,97,108,111,118,126,144,148,166,169,173,176\n5,31,34,63,79,88,115,118,138\n1,30,72,97\n6,28,97\n61,90,180\n57,176,183,292,310\n49,72,166,182,196,278,306,308\n14,149,177,180\n32,55,82,90\n0,5,56,65,68,75,89\n3,6,58,90\n90\n127,175,180\n0,52,58,63,68,79,81,108,120,125,133,137,140,145,163,166\n6,17,73,98,115,148,155\n12,15,25,30,46,55,114,134,136,168\n15,46,65,86,90,105,133,170\n254,273,275,282,285,291,295,336\n256,272,274,287,295,344\n303\n303\n0,32,64,90\n0,12,25,37,40,55,71,90\n127,141\n1,19,22,31,33,49,68,90\n0,7,120\n0,17,22,30,100,118,127,137,142,144,146\n0,2,4,11,15,38,50,53,90\n0,2,23,25,59,90\n7,12,15,33,67,96,110,167\n10,96,106,113,166\n0,32,65,91,124,158\n0,18,35,83,87,90,110,120,126,142,147,149,180\n0,10,16,42,45,76,83,90\n17,23,35,63,105,120,138,154,173\n13,22,26,29,57,79,104,161\n0,20,40,68,90\n28,55,64,70\n0,22,60,67,92,108,111,155,170,180\n44,79,163\n26,43,60,147,165,169,202,249,323,356\n9,39,78,95,140,155,178,246,254,280,319,355\n25,88,197,203,210,216,222,259,311,330\n14,132,187,217,235,240,250,260,266,322,328,335\n33,58,92,95,137,157,180\n0,6,41,51,54,69,79,90,110,152,156,158,178,180\n0,23,90,97,106,125,142\n9,46,62,64,86,108,120,123,132,137,147,149,156,159,172,180\n0,14,101,104,124,126,147,180\n0,6,20,50,74,77,113,124,129,133\n18,50,103,109,115,135\n14,33,37,41,62,147,180\n0,4,9,113,132\n26,67,97,142,162,171,180\n43,46,61,175,180\n0,22,112,117,124,132,135\n60,182,285,300\n38,64,177,188,302\n0,9,26,56,59,95,107,117,137\n0,43,72,93,141\n81,101,132,146,172\n152,175,177,179\n0,24,42,120,126,134,138,147\n121,124,129,147,149,163,188,329,353,358\n5,142,144,147,181,229,258,310,334,349\n241,273,303,345\n273,288,326,334,345\n2,4,6,18,28,40,42,45,55,60,89,136,147,156,158,221,234,279,316,347,358\n7,12,17,64,126,136,147,196,200,216,265,281,290,332,344,349,356\n0,9,121,138,141,153,156,179\n144,159,169,178\n172,220\n285,307,323,331,348\n0,25,31,42,142,154,160,164,177,180\n0,13,25,45,50,68,72,89,127,171,176\n62,92,106,119,121\n0,14,16,24,77,87,109,112,141,159\n1,35,127,130,143,180\n70,91,140\n74,90\n70,81,113\n24,55,59,69,78\n73,88,90\n55,60,90\n78,117\n122,128,132,145,162\n57,60,63\n71\n73,115,119\n54\n71\n85,90,93,180\n64,78\n76,86,88\n71,90\n85\n75,90\n90\n17,19,113\n67,86,90\n120,147\n35\n32\n25,62,67,84,90\n3,23,31,40,69,88\n76,90\n148,160,172,180\n19,58,78\n9,14,24,136,157\n326\n5,253,271,292,316,319,322,325,328,334\n62,79,169\n43,67,169,190,300,303\n150,161,172,186\n55,71,98,126,137,156\n52,83,100,124,156\n8,21,126,150,168\n23,36,41,93,128,131,134,146,159\n8,34,170\n9,33,63,88,92\n18,20,45,85,158,161,165,168,174\n6,25,32,55,121,125,137,146,159\n7,59,76,103,122,142,145,169\n8,36,39,64,89\n145,164\n118,151,180\n98,105,124,126,139\n160,171,180\n0,28,109,125\n0,40,48,58,84,105,108,111,117,142,161,177,180\n163,166,169,187,205\n162,164,166,186,201\n55,59,61,158,161,179\n34,53,65,72,173,180\n59,61,180,298\n57,180,287,295\n54,56,166,172,186,300\n175\n175\n58,180,299\n57,74,179,296\n0,2,6,180\n0,10,20,30,53,82,138,161,180\n27,46,56,62,68,80,127,167,180\n296\n308\n190,274\n62,298,300\n57,80,82,177,189,299\n47,69,289,309\n50,64,80,179,304\n61,180\n138,167\n167\n0,56,81,99\n62,77,83,95\n65,184,306\n64,183,306\n0,19\n5,71,164\n170\n0,20,24,32,69\n11,13,31,34,90,98,131,143,149,174\n11,47,85,94,106,117,131,150,169\n149,153,156,180\n153,172,176,180\n0,6,9,31\n17,34,59,105,132\n6,26,54,77,117,140,158,175\n7,32,115,118,127\n15,65,69,125,139\n10,62,129\n274,301,319,340\n272,286,302,317,320,337\n35\n66,140\n2,5,64,141,143,156,162,167,175,179\n15\n1,14,53,60,78,114,118,124,139,153,180\n59,162,180\n0,33,53,63,115,160,172,180\n34,59,70,171,180\n7,27,62,71,89,119,156\n0\n167,169,180\n14\n0,16\n0\n0,6,8,15,18,56,106,183\n57\n0,43,60\n1,90\n39,181,293,307\n276,306,329\n47,50,306\n302,317\n64\n0,8,27,34\n0,7,106,115,118,124\n0,2,15,22,48,55\n131,141,144\n179\n0,24,99,122\n75\n0,37\n0,14,17\n13,37,76,136,172,176,179\n16,39,51,62,66,115,145,147,152,180\n1,33,59,67,79,90\n0,20,49\n102\n102\n100\n94\n96\n312\n98,310\n270,320\n197\n65,116\n1,3,5,45,67,90\n61,86,90\n136,145,148,157,170\n0,63,74,90\n9,12,15,36\n35,49\n41,54\n38\n12,30,33,38,59\n67\n42,60\n0,169\n1,31,40,62,85,95,106,123,179\n0,3,99,140,179\n1,26,31,185,305,315,334\n35,57,153,185,210,234,271,317,351\n4,18,24,72,154,159,165,201,246,314,346,349,352,354,357\n0,17,32,37,43,141,187,211,347\n68\n138,156\n8,26,102,136,157,166,172\n41,179,185,191\n1,22,40,62,68,74,208,329,347\n28,47,54\n149,154,175,178,180\n66,83,90\n0,25,40,140,142,163,165\n23,85,90\n105\n123,135,162,180\n99,111,150,173';
  result = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(data_0, '\n');
  return result;
}
;
carcc.gettorsionBinsData = function gettorsionBinsData(){
  carcc.$clinit_TorsionDBData();
  var data_0, result;
  data_0 = '0,0,0,0,31,31,63,0,0,0,0,63,63,95,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\n0,0,0,0,0,0,0,0,18,0,0,36,18,72,127,0,18,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,25,127,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,36,36,36,0,0,54,0,90,127,36,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,28,56,127,56,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,56,56\n0,0,0,0,0,31,0,0,15,0,0,15,0,0,0,0,15,15,0,15,0,0,0,0,15,0,0,0,7,0,0,0,0,0,0,0,127\n127,47,25,12,14,11,6,6,7,3,2,6,3,5,0,1,1,3,2\n99,127,68,57,46,27,38,30,13,12,13,23,15,12,14,20,28,34,43\n127,94,54,36,29,14,11,7,6,6,6,2,5,3,6,4,5,0,0\n127,60,20,12,4,1,1,3,1,1,1,4,2,1,3,0,4,1,2,1,2,3,0,0,0,2,0,1,1,2,0,1,2,4,3,6,27\n127,76,38,19,0,25,12,25,31,25,6,0,0,0,0,0,6,12,12\n127,29,4,4,4,0,8,4,0,8,8,0,0,4,4,0,0,0,0\n0,0,31,31,31,127,31,95,0,31,63,127,63,0,0,0,0,31,63\n115,127,80,34,23,11,11,0,23,23,34,23,46,11,23,0,11,23,0\n0,42,42,127,0,0,42,21,21,0,0,0,0,21,0,0,0,0,0\n60,127,48,84,36,18,12,6,24,12,0,0,0,0,0,0,0,0,0\n127,101,114,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76\n127,12,25,0,0,12,25,12,12,50,25,0,25,12,0,0,25,0,50\n0,0,19,14,39,43,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,42,127,42,127,0,84,42,84,0,0,0,84,0,0,42,84,0,0\n0,95,127,95,31,31,31,31,31,0,31,31,31,31,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,5,10,0,26,0,15,0,0,5,10,0,0,0,0,0,0,0,0,0,0,10,0,5,0,0,0,10,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,45,127\n29,14,4,0,0,0,19,9,9,43,9,14,29,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,39,127\n5,4,0,0,0,0,0,3,3,18,18,79,127,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n21,42,21,21,10,0,0,10,0,52,127,116,42,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,10,10,10,15,21,15,42,5,10,15,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,10,21,15,127\n0,0,0,0,0,0,0,0,0,12,127,38,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,0,0,0,0,0,0,0,15,31,15,63,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,63,31,15,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,127,0,0,0,0,0,0,0,0\n56,127,14,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,15,5,0,0,0,0,0,5,5,5,0,0,10,5,10,42,47,10,26,127\n0,7,3,46,76,7,0,0,7,19,53,103,127,23,23,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,6,6,26,46,13,60,46,73,73,113,106,127,73,80,60,20,13,20,20,0,0,0,0,6,6,6,26,26,26,53,33,73,73,66,106\n0,0,0,0,0,0,0,0,21,42,42,42,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,42,42,127\n0,0,0,0,0,0,0,0,127,14,14,0,0,0,0,0,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0\n0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,25,0,0\n0,0,0,0,0,0,0,0,0,0,7,9,14,25,21,9,0,0,4,2,0,0,0,0,0,0,0,0,0,2,0,11,37,61,117,127,122\n0,0,0,0,0,0,0,0,0,0,2,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,9,56,127,66,53,127\n0,0,0,0,0,0,0,0,0,39,127,78,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,35,127,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,11,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,23,44,82,127,59\n0,0,0,0,0,0,0,18,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,127,84,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0\n0,0,0,0,0,0,0,0,0,63,31,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,54,36,54,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,18,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,76,127,127,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,50,0,0,0,0,0,0,0,0,25\n101,0,0,101,0,0,0,0,0,0,0,50,50,127,0,25,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,0,0,0,0,0,0,9,0,0,0,36,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,0,21,0,0,0,0,21,21,0,0,105,0,21,42,0,0,0,21,0,63,0,0,0,0,21,0,21,0,0,21,0,0,21,0,0,127\n0,15,95,0,0,127,31,63,0,0,0,0,15,0,0,0,0,0,0,0,0,0,15,0,0,15,0,79,15,0,0,0,0,31,0,15,127\n0,0,0,0,0,0,0,0,0,42,0,127,0,84,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0\n0,0,0,0,0,0,0,7,59,127,14,0,0,0,37,37,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,67,14,0,0\n0,0,0,0,0,0,10,0,95,84,0,10,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,10,0,0\n0,0,0,0,25,0,25,0,101,101,50,76,0,25,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,50,25,0,101,127,50,76,25,0,0,0,0,0,0,0,0\n0,0,0,0,50,25,50,25,127,25,50,101,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,25,25,25,0,50,50,76,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,127,25,50,25,101,0,50,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,42,0,0,42,0,42,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,84,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,63,127,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,127,0,0,0,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,42,21,21,0,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0\n0,0,0,0,0,0,0,42,42,42,42,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,127,0\n0,0,0,0,0,0,0,42,42,42,42,0,0,0,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0\n0,0,0,0,0,0,0,0,84,42,42,42,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,0,42,84,0\n0,0,0,0,0,0,0,70,28,84,56,56,98,14,28,28,84,70,0,42,0,0,0,0,0,0,0,0,0,0,28,0,127,70,14,28,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,127,8,16\n21,0,0,10,5,31,127,21,21,10,0,10,15,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\n84,127,84,84,84,42,0,28,28,84,0,0,0,0,14,0,14,14,0\n127,31,0,0,63,31,31,0,63,127,0,0,0,0,0,31,0,0,63\n127,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,21,42,42,84,21,42,0,0,42,0,0,0,42,0,0,0,0,0\n0,0,0,0,0,0,0,7,47,7,39,63,71,47,47,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,39,63,127,63\n0,0,0,0,0,0,0,0,0,42,127,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84\n0,0,0,0,0,0,0,0,0,34,57,92,127,23,57,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,57,46,69\n0,0,0,0,0,0,0,25,0,0,50,127,127,76,76,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,101,101\n0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,127,63,63,0,127,63,63,0\n127,0,63,31,31,63,95,95,63,31,0,0,63,0,0,31,31,0,0,63,0,0,0,31,31,31,31,0,31,31,95,95,95,0,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,79,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,42,63,21,42,21,127,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,21,63,42\n0,0,0,0,0,0,0,0,63,127,18,18,0,9,72,127,45,9,0,0,0,0,0,0,0,0,0,0,0,9,0,27,72,108,54,18,0\n0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,63,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,127,0\n0,0,4,4,8,0,12,16,76,105,110,55,97,59,110,84,105,16,8,4,4,0,4,0,0,4,0,0,4,0,12,38,55,127,101,38,84\n0,0,0,0,0,0,0,0,0,0,95,31,31,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,31,63,0,63,0,63,127\n0,0,0,0,0,0,18,54,127,90,90,18,18,54,54,54,36,0,18,0,0,0,18,18,0,36,0,0,0,0,18,0,0,36,36,90,36\n0,0,0,12,12,114,114,127,25,25,38,0,76,38,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,0,15,0,63,127,47,95\n0,0,0,0,0,25,0,50,0,0,0,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0\n0,0,0,0,0,0,25,0,0,0,0,127,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,0,0\n0,0,18,0,0,0,0,0,0,18,18,54,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,108\n0,0,0,0,0,1,0,8,8,42,91,75,61,58,127,24,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,72,56,77\n0,0,0,0,0,0,0,0,0,0,0,127,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,75,127\n0,0,0,0,25,0,0,101,127,127,25,25,0,50,25,25,101,25,25,0,0,0,0,0,25,0,0,0,25,0,0,0,0,127,0,50,101\n0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,21,63,127,42\n23,0,11,5,0,23,23,80,121,127,51,75,57,57,75,127,63,40,34,40,0,5,5,0,0,0,5,0,11,23,34,5,69,63,57,46,34\n0,0,0,0,0,10,0,42,105,84,31,52,42,42,42,116,10,21,10,0,0,0,0,0,0,0,0,0,0,0,21,42,127,31,42,21,84\n0,0,0,0,0,0,0,42,84,0,84,84,21,0,21,42,105,21,21,42,0,0,0,0,0,0,0,0,0,0,84,63,42,63,21,21,0,0,127,63,105,21,0,21,0,0,0,0,0,0,0,0,0,0,42,63,21,105,21,42,21,0,21,127,42,0,21,21,0,0,0,0\n0,0,0,0,0,0,21,21,0,63,84,42,21,0,0,84,63,127,0,0,0,0,0,0,0,0,0,0,0,21,63,21,42,21,84,0,0,42,84,63,63,63,42,21,0,0,0,0,0,0,0,0,0,0,0,63,63,42,84,21,0,0,63,84,63,0,63,42,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,12,76,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127\n0,0,0,0,0,0,0,0,0,31,0,31,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,31,31,127\n0,0,0,0,0,0,0,0,0,0,15,15,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,127\n0,0,0,0,0,0,0,0,14,0,0,112,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,28\n0,0,0,0,0,0,0,0,0,101,101,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,63,12,0\n0,0,0,0,0,0,0,0,0,127,0,127,0,0,0,0,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,127,0,0,0,0,0,127,127,127\n0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,26,43,127,13,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,71,127,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,0,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84\n0,0,0,0,0,0,0,0,0,8,101,127,33,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,36,127,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,95,95,31,0,127,0,0,0,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,19,6,38,6,50,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,12,25,127\n0,0,0,0,0,0,4,9,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,63,127\n0,0,0,0,0,0,0,18,0,0,90,18,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,84,0,84,42,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,0,18,0,0,0,0,0,0,0,0,0,0,0\n0,7,28,0,7,0,7,21,0,14,0,35,7,0,28,14,7,28,0,28,7,14,21,0,7,0,7,0,14,7,0,7,28,14,7,7,127\n0,0,21,42,42,0,0,0,0,21,21,21,127,63,0,42,21,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,42,0,0\n0,0,0,0,0,0,0,0,0,15,15,0,0,15,111,111,127,47,15,0,15,0,0,0,0,0,0,0,0,0,15,0,0,15,47,0,31\n0,0,0,0,0,0,0,0,0,0,127,42,42,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84\n0,0,0,0,0,0,0,36,0,54,36,36,108,127,54,36,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,108\n0,0,0,0,0,0,0,0,45,54,36,54,36,36,81,45,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,63,45,27,127\n0,0,0,0,0,0,0,0,0,0,12,127,101,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,114,127\n0,0,0,0,0,0,0,0,0,0,84,127,127,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,36,27,117,0,0,0,0,9,0,0,0,127,9,36,36,9,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,50,127,38,50,25,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,38,50,101\n0,0,0,0,0,0,0,0,0,0,0,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,84,127\n0,0,0,3,0,0,0,3,0,24,69,42,9,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,30,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,127,44\n0,0,0,0,0,0,0,0,0,0,42,0,21,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,95,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,14,70,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,112,70,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,48,127,66,42,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,24,30,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,12,42,30,42,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,24,72,127,54,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,127,21,0,0,63,21,0,0,21,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,0,31,15,63,127,111,127,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,31,0,95,63,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,25,0,0,25,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,28,0,56,28,70,84,112,112,56,42,84,56,112,28,42,0,0,0,0,0,0,0,0,0,0,0,28,42,70,70,84,127,112\n0,0,0,0,0,0,0,0,0,0,0,10,21,21,52,63,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,21,10,0,0,10,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,23,0,23,11,0,46,127,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,92,11,0,11,0,11,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,3,10,32,89,127,77,33,13,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,12,44,90,110\n0,0,0,0,0,0,0,21,127,84,0,0,0,42,21,127,0,21,21,0,0,0,0,0,0,0,0,0,0,21,0,0,42,63,21,21,0\n0,0,0,0,0,0,0,0,0,46,53,80,127,46,38,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,30,57,100,76\n0,0,0,0,0,0,0,0,0,84,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,42,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,15,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127\n0,0,0,0,0,0,0,0,9,27,18,72,117,117,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,127,127\n0,0,0,0,0,0,0,47,63,111,127,47,15,15,79,63,47,31,15,0,0,0,0,0,0,0,0,0,0,0,31,15,63,63,63,47,31\n0,0,0,0,0,0,0,0,0,14,14,56,112,42,127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,98,42,42,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,14,42,56,42,0,14,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,18,72,54,90,127,90,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,108,72,72,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,54,54,108,18,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,105,105,84,42,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,105,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,42,105,42,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,63,105,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,31,127,116,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,21,21,10,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,10,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,10,42,74,127,52,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,31,31,21,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,105,10,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,1,1,4,18,41,127,79,28,14,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,14,54,79\n0,0,0,0,0,0,0,0,0,1,4,46,127,46,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,49,104\n0,0,0,0,0,0,0,0,18,9,9,45,90,27,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,9,9,54,127\n0,0,0,0,0,0,0,0,127,0,0,63,0,127,63,63,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,127\n0,0,0,0,0,0,25,0,38,127,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,31,63,0,127,31,63,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,63\n112,127,84,56,70,0,42,42,14,14,14,0,14,0,0,14,0,0,0\n14,21,14,28,0,0,0,0,0,0,0,0,14,0,14,0,0,0,14,7,0,0,0,0,7,0,0,0,14,0,0,42,56,63,91,98,127\n127,95,63,95,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0\n0,127,108,54,36,0,0,0,0,36,0,0,0,0,0,0,0,0,0\n127,63,0,21,21,42,0,21,0,42,0,0,0,0,42,0,0,21,0\n127,31,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,95,0,95,63\n0,25,0,0,0,25,25,25,50,76,127,76,0,50,127,50,50,0,0,25,25,25,0,0,0,0,0,0,25,25,0,0,25,76,50,50,50\n0,0,0,0,0,0,0,84,84,84,63,0,0,21,63,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,42,0,0\n0,0,0,0,0,0,0,0,15,63,47,127,63,15,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,79,47,0\n0,0,0,0,0,0,0,0,0,0,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,4,0,4,31,58,127,54,40,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,45,117\n0,0,0,0,0,0,0,0,0,3,20,73,127,79,25,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,25,65,92\n0,0,0,0,0,0,0,0,0,8,50,42,127,50,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,84\n0,0,0,0,0,0,0,0,0,63,0,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,127,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,50,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,0,127,63,63,63,127,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,0,63,63,0,0,0,63,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,0,63,63,0,63,63,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,0,127,127,63,63,0,63,0,0,0,0,0\n56,28,70,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,0,2,0,0,0,0,0,2,0,0,0,0,6,4,0,2,127\n127,20,9,5,11,3,3,1,3,0,0,3,0,3,3,3,1,0,0\n127,122,14,4,24,0,4,0,9,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,9,0,4,0,4,0,0,0,4,0,0,0,48\n0,0,0,0,0,0,0,0,0,0,0,69,127,92,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,92\n79,31,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127\n31,15,0,15,63,15,0,15,0,47,79,79,47,15,31,63,63,0,127\n0,0,0,0,0,21,0,0,21,0,0,0,127,0,0,0,0,21,0,0,0,42,0,0,0,0,0,42,0,21,0,21,0,0,0,0,0\n0,0,0,84,84,0,0,42,0,0,127,42,42,42,0,0,42,42,0\n84,63,42,105,0,42,84,63,105,63,21,105,21,105,105,21,42,63,127\n84,42,0,0,0,0,0,0,0,0,0,42,127,42,84,0,0,0,0,0,0,42,0,0,0,84,0,0,0,0,0,0,0,0,0,42,0\n0,0,84,84,0,84,0,127,42,0,42,0,0,0,0,0,0,42,0\n108,36,63,63,45,99,81,127,63,90,18,63,63,27,54,54,81,45,54\n0,29,48,39,19,78,39,19,39,68,39,58,39,19,68,39,19,127,9,29,29,87,58,39,39,68,39,58,58,19,39,48,68,19,29,48,58\n75,127,110,70,94,64,48,48,78,51,91,86,72,75,105,54,56,64,43\n127,95,95,95,31,0,31,0,31,0,31,0,63,31,63,0,31,0,127,63,0,95,0,31,63,31,127,31,31,63,31,0,63,0,63,95,0\n127,0,31,31,31,31,63,63,0,0,31,0,31,63,31,0,31,63,31,0,0,63,63,63,0,0,0,0,31,0,0,0,0,31,0,31,63\n0,42,42,42,0,0,0,0,0,0,0,0,84,0,84,0,84,0,0,0,0,42,0,84,42,0,0,0,0,0,0,0,127,0,0,0,0\n0,7,49,28,35,28,49,56,49,21,14,21,56,77,42,127,42,0,84\n0,0,0,0,0,0,0,10,10,31,84,0,21,0,10,21,21,10,74,0,21,31,21,10,0,10,31,42,10,0,10,84,0,95,52,21,127\n42,0,0,84,0,63,127,42,0,0,0,63,0,0,0,0,0,0,0\n0,0,0,31,0,0,0,31,127,0,31,0,0,31,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0\n0,0,0,0,0,127,63,127,0,63,63,127,63,63,127,63,63,0,63,0,0,0,0,63,0,0,0,127,0,0,0,0,0,0,0,0\n95,0,31,0,0,31,63,0,63,95,31,0,31,0,31,0,0,0,63,31,31,0,31,31,0,0,31,0,127,0,0,0,0,0,31,0\n0,0,0,42,0,42,127,127,84,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n13,23,63,127,26,40,16,16,6,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,63,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127\n0,42,0,0,0,0,0,0,0,0,42,84,127,127,0,0,127,0,0\n0,0,63,0,0,63,0,0,63,0,0,0,0,0,0,63,63,0,127,0,0,127,0,0,0,127,0,63,0,0,0,127,63,0,0,0,127\n0,0,0,0,0,0,0,0,42,0,0,0,0,21,0,0,0,21,0,0,0,21,63,0,0,21,42,21,0,42,21,21,0,0,0,21,127\n0,0,0,0,0,36,0,0,0,0,18,18,18,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,0\n1,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,47,127\n2,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,12,30,127\n0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,56,127\n127,16,4,4,1,0,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,24,18,9,7,2,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,10,2,3,2,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,1,3,5,5,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,11,41,127\n0,0,0,0,0,0,0,0,1,2,5,5,4,7,7,4,5,5,3,1,4,2,1,1,0,1,1,0,0,1,2,7,16,27,66,92,127\n0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,6,0,3,3,0,6,0,0,6,0,0,0,0,3,3,6,6,18,9,6,127\n1,0,0,0,0,0,0,2,4,8,17,127,25,5,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n1,1,1,1,1,1,2,3,6,9,20,127,58,8,2,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n17,18,7,6,4,1,2,1,5,13,22,127,47,17,2,1,0,2,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,2,3,4,10,13,12,6,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,24,71,127\n0,1,2,0,4,3,7,22,64,127,111,55,19,8,5,6,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,7,0,3,3,0,3,10,0,0,0,0,0,0,0,0,0,0,0,0,3,17,7,10,21,38,67,59,127\n3,1,3,0,1,1,7,10,31,127,127,69,24,7,6,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n18,18,20,22,11,4,0,0,0,1,4,5,6,4,6,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,3,3,15,30,127\n2,3,2,3,1,0,2,10,13,29,70,125,127,27,5,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n7,3,9,5,7,1,0,0,0,1,0,0,3,5,7,12,16,32,30,52,47,70,90,92,59,127,85,116,50,38,25,32,29,21,18,23,18\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,30,15,86,71,60,127,86,96,55,50,30,45,30,35,20,15,0,0,0\n47,19,18,5,9,4,1,1,3,3,1,3,5,3,10,19,31,28,36,34,37,77,80,124,123,127,78,43,34,23,11,7,4,2,11,10,15\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,4,3,12,14,33,69,74,92,127,66,34,15,12,4,1,1,3,0,0,3\n31,42,92,127,42,15,11,5,4,9,5,3,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n24,8,47,127,35,15,15,3,7,21,5,0,3,10,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n60,35,102,127,73,31,25,16,17,25,6,6,8,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n9,19,21,127,78,34,7,7,14,24,19,12,7,26,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,19,0,48,48,87,78,107,127,87,107,39,0,19,29,9,0,9,0\n115,51,40,5,5,0,0,0,0,0,0,0,0,11,0,0,0,11,28,11,23,28,46,69,92,127,75,34,11,0,0,17,0,5,11,0,0\n0,36,36,18,0,36,0,36,18,127,54,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n112,127,56,0,0,14,0,0,98,28,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,67,42,25,76,127,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,31,127,0,31,31,0,0,0,0,0,0,0,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,0,7,3,11,34,57,96,127,69,57,38,15,3,0,0,3,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,63,95,31,127,0,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,21,105,127,63,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,1,4,1,6,17,54,127,104,30,9,9,8,6,0,1,0,0,1,0,0,0,0,0,1,0,6\n0,0,0,0,0,0,0,0,0,0,22,82,127,119,97,52,67,29,29,7,7,0,0,7,0,0,0,0,0,0,0,7,29,14,14,7,14\n0,0,0,0,0,0,0,0,0,25,0,101,50,76,50,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,127,25,50\n0,0,0,0,0,0,0,0,0,0,3,3,11,9,2,4,1,2,0,0,0,0,0,2,1,0,0,0,0,0,0,0,3,10,34,43,127\n7,1,0,12,0,0,0,7,0,7,10,12,29,61,127,21,3,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,28,42,127,14,42,70,42,42,0,0,0,0,0,0,0,0,0,0,14,14,0,14,42,42,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,127,84,84,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,28,0,14,28,0,70,28,127,14,56,0,0,14,0,0,0,28,0,0,0,0,0,0,0,0,14,28,28\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,95,127\n0,0,0,0,0,0,0,0,0,0,15,0,15,15,0,15,15,15,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,63,84,21,42,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,11,0,0,34,34,69,127,92,103,92,34,11,11,11,0,0,0,0,0,11,0,11,0,0,0,0,115\n0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,13,13,31,36,127\n0,0,0,0,0,0,0,0,0,21,0,127,21,63,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n24,24,0,0,12,6,60,78,42,120,127,127,72,30,0,0,0,18,0,6,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,0,1,8,17,11,1,4,0,1,0,1,0,0,0,0,1,0,0,2,0,0,0,2,3,0,18,127\n0,0,0,0,0,0,10,0,0,0,0,0,0,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,84,127\n0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,11,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,6,13,6,6,4,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,9,0,4,0,4,4,0,127\n0,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,21,42,95,127,10,52,0,10,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,3,3,6,25,3,0,0,0,0,3,0,0,0,3,0,6,0,3,19,53,69,127\n0,0,0,0,0,0,0,0,0,0,2,9,21,31,23,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,3,8,22,77,127\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,36,0,0,0,0,0,0,0,0,0,18,0,0,18,0,18,127,36\n0,0,0,0,0,0,0,0,0,18,0,36,108,127,18,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,2,1,3,5,4,6,6,33,127,27,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,127\n0,0,0,0,0,0,0,0,0,0,0,12,12,63,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,21,21,42,42,42,127,42\n27,18,18,18,0,13,0,0,0,0,4,0,27,22,0,0,0,0,4,0,0,0,13,0,18,54,31,31,4,4,18,18,45,36,127,95,45\n127,5,0,0,0,0,10,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n19,29,19,0,0,0,0,9,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,31,0,0,31,0,127,127\n127,21,0,0,0,21,21,0,0,0,42,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,10,29,83,123,126,127,91,68,39,26,18,18,11,7,8,2,7,4,3,3,6,7,7,24,31,54,74\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,127,127,0,0,25,50,0,25,0,0,0,0,50,50,25,25,76,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,12,38,25,0,12,12,12,0,25,12,0,25,0,0,38,50,25,114,127\n5,6,5,7,11,16,30,19,29,49,65,127,113,35,16,20,5,3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,11,0,0,0,11,23,11,11,57,127,0,46,34,69,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,1,1,5,31,127,16,0,0,0,0,3,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,2,3,0,1,3,5,11,9,33,43,82,103,107,57,43,19,9,8,14,7,2,1,3,3,1,2,2,3,8,5,14,45,37,76,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,21,42,35,127\n0,0,0,0,0,0,0,0,38,127,63,25,12,0,25,0,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,1,0,0,0,7,28,49,64,59,56,45,30,10,11,3,1,1,4,4,1,3,2,1,1,4,12,21,26,75,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,95,127,0,0,0,0,31,0,0,0,0,0,31,31,63,0,31,95,63\n0,0,11,3,11,7,23,59,79,71,127,99,87,19,11,19,31,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,1,3,11,12,28,26,20,18,5,15,9,1,0,2,5,7,4,5,3,0,1,10,20,24,39,91,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79,47,127\n0,0,0,0,0,0,0,0,0,0,3,12,42,33,30,48,6,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,12,60,127,120\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,127,0,0,127,63,0\n0,0,0,0,4,0,0,0,0,19,58,63,73,107,127,83,43,39,39,14,14,24,4,19,14,9,9,0,0,0,0,0,4,9,14,34,48\n0,31,31,63,0,0,0,0,31,31,31,31,127,0,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n14,0,7,0,7,21,14,14,63,14,77,112,127,98,98,49,56,0,14,7,0,0,0,7,0,0,0,0,0,7,7,7,84,119,14,77,42\n0,0,0,0,0,0,0,0,0,0,21,21,42,42,21,42,63,42,42,0,0,0,0,21,0,0,0,0,0,0,21,0,63,42,21,84,127\n0,0,0,0,0,0,0,0,0,42,0,21,0,0,42,21,0,0,0,21,0,0,0,0,0,0,0,0,21,0,42,0,21,127,42,105,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0,84,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,2,3,6,7,3,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,11,64,115,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,8,8,87,127,61\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,25,38,127\n0,0,9,0,9,0,0,0,0,0,97,117,39,29,29,127,9,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,31,95,127\n0,0,0,0,0,0,0,0,2,0,2,9,58,79,39,16,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,9,7,51,127\n0,0,0,0,0,0,0,0,0,0,0,0,10,63,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,52,127\n0,0,0,0,0,0,0,0,0,0,1,1,14,33,15,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,33,127\n0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,5,2,1,0,0,0,0,0,0,0,0,0,2,0,0,1,1,7,25,49,88,127\n0,0,0,0,0,0,0,0,3,0,3,15,7,3,3,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,19,19,127,84\n0,0,0,0,0,0,0,14,0,28,28,0,28,127,56,14,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,47,47,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,33,38,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,42,0,84,0,84,127,42,42,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,2,4,1,0,0,0,0,0,1,0,0,0,2,4,9,33,77,117,127\n0,0,0,0,0,0,0,0,0,0,0,63,21,63,127,21,63,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,42,21,0,105,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,50,25,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,25,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\n127,0,0,0,0,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,50,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,127,54,54,54,127,36,54,36,18,0,18,0,0,18,54,0,18,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,7,0,0,127,10,29,3,21,10,10,3,3,108\n127,127,31,0,0,0,31,0,0,0,0,0,0,31,31,0,95,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n23,57,46,11,0,0,0,0,0,0,0,0,11,69,127,11,23,0,23,0,0,115,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0\n98,36,8,4,0,0,0,12,0,127,20,0,4,28,24,32,28,8,4,0,0,4,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,4,14,52,114,127,65,20,7,2,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,5,7,15\n2,1,0,1,2,1,2,1,3,4,4,46,127,25,3,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,4,18,127,125,77,39,27,2,7,2,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,1\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,25,50,127,50,25,0,25,0,0,0,0,0,0,0,0,25,0,0,25,0,0\n29,0,0,0,0,0,14,0,7,29,44,29,22,127,14,0,0,7,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,1,0,0,0,1,8,2,8,16,13,21,11,127,79,1,2,2,1,0,0,0,0,0,0,0,0,1,1,1,2,4\n0,0,0,0,0,0,0,0,18,127,66,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,21,63,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,63,127\n36,127,72,72,54,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,18,0,0,0,0,0,18,18,0,0,0\n79,127,43,14,6,0,6,4,0,2,0,2,2,2,0,8,0,10,4,12,14,16,39,41,83,60,60,60,14,16,8,0,4,0,2,0,0\n0,0,0,0,0,0,0,0,0,15,0,15,0,15,0,31,0,15,31,47,0,31,47,79,95,31,31,31,79,95,47,79,31,47,79,31,127\n56,14,112,70,28,42,98,127,42,84,14,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n3,5,10,23,7,3,0,0,3,1,0,0,12,127,17,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,1,2,6,16,38,54,29,10,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,6,19,68,127\n0,0,0,0,0,0,0,0,0,0,11,11,34,40,5,40,28,11,5,5,0,0,0,0,0,0,0,0,0,0,5,17,11,28,57,92,127\n0,0,0,0,1,2,1,0,3,8,19,127,77,14,6,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,2,11,16,24,127,82,11,24,11,5,8,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,6,0,0,0,0,0,6,0,0,0,19,82,95,88,82,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,57,101,127\n0,0,6,0,0,0,0,6,18,54,127,42,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,4,19,63,78,127\n127,63,0,15,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,47,47,79,95\n0,0,0,0,0,0,42,127,0,0,84,0,42,42,42,0,84,0,0,0,42,84,0,0,0,0,42,0,0,0,0,0,0,42,0,0,0\n127,49,24,38,9,10,3,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,24,13,32,6,4,3,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,42,0,127,42\n127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,39,11,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,7,16,17,12,8,5,4,3,2,2,2,2,2,3,4,5,10,16,29,53,97,127\n0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,2,9,13,14,16,16,10,13,14,11,14,17,16,32,50,56,110,127\n0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,4,0,4,0,7,7,4,7,2,18,37,68,82,96,96,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,31,0,31,31,31,31,63,63,127,63,127,127\n0,0,0,0,1,1,2,3,5,6,8,50,127,14,3,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,6,5,6,9,2,5,9,17,22,26,56,127,22,11,4,2,3,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,1,0,0,0,0,5,4,15,35,114,127,33,6,5,1,1,7,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,7,4,8,0,0,0,1,0,3,6,127,72,10,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,1,2,8,12,18,28,21,19,12,11,7,7,4,3,1,2,2,3,4,6,15,15,26,41,65,115,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,22,0,7,44,14,37,89,104,127,82,29\n0,0,0,6,6,6,6,6,16,100,127,87,26,13,19,22,6,22,26,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,7,28,127,91,35,14,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,1,2,2,4,6,6,4,2,2,2,1,1,0,0,1,0,2,2,1,4,6,11,22,49,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,4,7,0,2,2,4,4,19,16,19,2,7,11,7,16,55,47,59,127,71\n5,3,4,12,10,15,18,26,69,127,116,51,15,5,6,1,1,10,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,4,16,8,4,29,76,127,101,29,16,4,12,21,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,2,4,3,3,8,8,8,3,4,2,1,0,0,0,0,0,0,0,1,2,3,3,8,19,49,91,127\n0,0,0,6,3,0,0,3,25,22,57,127,69,3,0,3,6,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,0,12,0,0,0,25,25,12,50,76,76,127,50\n0,0,0,0,0,0,0,0,15,0,15,63,95,127,31,0,0,15,15,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,31,95,127,31,63,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,4,0,26,96,127,61,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,54,0,18,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,36,0,36,0,127,54,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,9,7,2,0,9,2,4,9,9,4,21,17,26,36,51,39,83,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,23,7,23,39,39,47,71,79,55,87,87,79,127\n0,6,0,0,0,0,0,0,0,0,6,26,46,40,80,26,40,0,6,127,26,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,3,0,0,0,0,0,7,19,23,0,3,0,7,30,50,11,11,3,3,34,26,46,38,42,57,34,76,73,57,80,61,84,111,127,107\n0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,14,14,14,7,22,29,37,22,37,37,37,74,127,44\n0,0,0,0,42,42,42,84,84,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,47,0,0,0,0,0,0,0,15,47,47,63,15,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,11,19,9,16,26,43,39,32,43,27,29,32,33,27,44,55,53,75,92,114,127,107\n0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,21,10,95,84,31,0,63,127,116,42,42,31,21,42,10,52,0,42,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,31,0,0,0,31,0,127,31,0,0,95,0,0,0\n0,0,0,0,0,0,0,8,11,0,59,101,127,36,11,14,50,39,2,2,11,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n32,9,4,0,1,0,0,0,7,28,65,127,82,5,20,0,0,0,4,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n67,33,8,0,0,0,0,0,0,0,0,127,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,18,36,36,0,0,0,36,36,36,90,36,108,127,108\n0,0,0,0,0,0,0,50,25,0,0,25,0,0,0,0,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,76,127,114,80,12,8,12,0,0,0,0,0,0,0,0,4,0,4,4,0,25,42,71,110,127\n0,0,0,0,0,0,0,0,0,0,0,0,21,84,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,0,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,42\n0,0,0,0,0,0,0,0,0,15,15,31,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,47,71,127\n0,0,0,0,0,0,0,10,0,10,0,0,52,127,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84\n0,0,6,6,6,0,6,0,0,0,3,3,66,127,76,30,6,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,0,0,23,50,26\n0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,10,0,0,0,0,0,0,0,0,42,74,63,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,0,63,63,63,0,63,63,0,63,63,0,0,0,0,63,63,127\n0,0,0,0,0,0,0,0,0,0,0,127,105,42,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,95,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,52,127\n127,13,1,0,0,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,26,127\n63,127,52,10,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,3,1,9,1,13,4,6,2,8,13,11,9,17,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,1,0,0,0,1,5,30,42,75,127\n127,38,0,0,0,0,38,50,0,0,0,50,38,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,17,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,4,9,14,32,97,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,29,82,127\n127,21,17,17,7,8,8,21,38,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,9,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,52,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,19,65,127\n0,0,0,0,0,0,0,0,0,0,0,0,2,12,36,53,48,46,29,56,24,41,26,29,29,9,19,12,24,2,9,17,7,34,31,24,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,127,31,63,63,0,0,127,95,0,0,0,0,0,63,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,84,63,105,127,105,105,42,21,63,105,0,21,21,0,21,21,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,0,0,63,84,63,63,0,21,0,42,0,42,42,21,21,0,84,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,25,50,25,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,3,127\n0,0,0,0,0,0,0,0,5,7,21,34,55,71,56,34,12,13,11,1,1,0,0,0,0,0,0,0,0,0,1,2,3,6,12,27,127\n58,28,6,3,0,0,0,0,1,3,10,123,127,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0,84,0,0,0,0,0,42,84,0,0,0,0,0,0,42,0,0,0\n0,0,0,0,25,76,50,127,50,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0\n0,0,0,0,0,0,0,115,127,80,34,11,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,18,18,36,54,54,54,127,72,54,18,0,54,0,18,18,0,0,36,0,36,0,18,18,0,90,36,72,108\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,63,0,31,0,0,0,0,63,0,127,31,31,31,95,0\n0,0,0,0,0,0,0,0,0,0,1,1,1,11,13,11,11,8,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,5,11,18,127\n19,28,45,21,3,0,0,1,0,1,1,127,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,30,50,127,76,20,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,52,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,95,127\n0,0,0,0,0,0,0,0,11,19,69,78,112,127,78,34,19,9,3,0,0,0,0,0,0,0,0,0,0,3,3,1,2,4,17,21,53\n0,0,0,0,0,0,0,0,0,0,0,0,36,127,0,72,127,54,54,0,0,0,0,0,36,0,18,0,0,0,0,54,90,90,108,54,0\n46,18,16,4,0,0,0,0,0,0,1,127,104,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,89,40,36,7,0,0,0,0,0,0,22,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,63,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,0,0,0,0,0,0,0,0,27,90,86,99,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,13,26,60,113,127,100,46,40\n0,0,0,0,0,0,0,0,0,0,0,0,60,127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,63,127\n127,114,12,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,12,12,12,50,25,12,0,25,12,12,0,12,0,0,12,0,0\n117,95,39,13,0,1,3,0,0,0,0,0,0,0,0,0,0,1,0,3,6,7,28,60,86,127,83,52,30,13,4,0,1,1,0,0,3\n0,0,25,0,12,0,0,0,0,0,0,0,0,0,12,25,38,38,50,0,0,0,127,76,114,114,127,38,25,12,38,0,0,38,12,12,50\n84,84,127,127,70,42,35,21,14,14,0,0,14,7,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,127,111,23,15,63,23,31,15,0,0,0,39,7,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,31,63,127\n0,0,0,0,0,0,0,0,0,2,7,15,29,35,23,10,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,4,12,35,82,127\n0,0,0,0,0,19,0,0,0,0,0,39,39,29,29,19,39,0,39,0,0,0,9,0,0,0,0,0,0,9,0,9,19,19,19,127,78\n34,0,23,34,17,0,0,0,5,5,28,127,51,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n6,3,2,1,1,1,2,2,4,12,35,127,44,5,3,5,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n7,2,0,0,2,1,0,2,13,26,79,127,63,6,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,1,1,0,1,8,12,15,21,10,6,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,2,9,19,46,87,127\n0,0,0,1,0,1,1,13,44,97,127,86,19,11,5,3,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,17,0,0,0,0,0,17,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,12,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,0,16,71,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127,115\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,36,127\n127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,40,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,2,10,13,5,9,9,5,1,2,1,0,0,1,1,4,0,0,0,1,1,9,25,62,92,127\n0,0,0,0,0,0,0,0,0,0,0,5,13,12,34,60,94,127,92,69,59,53,41,33,25,21,18,19,23,16,22,30,36,40,65,94,81\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,10,0,42,52,0,31,74,127,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,3,7,48,78,127,56,29,33,33,26,7,7,3,3,0,0,0,0,3,7\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,3,0,7,0,0,0,0,0,3,0,0,7,43,35,51,75,127\n0,0,0,0,0,0,0,0,1,6,59,96,127,22,9,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,9,29,63,112,107,117,58,53,63,24,14,68,112,87,29,19,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,36,0,108,108,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,25,127,25,76,50,101,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,49,63,70,127,14,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,2,3,19,26,19,31,25,13,7,2,2,0,0,0,0,0,0,0,0,1,1,3,6,13,39,54,109,127\n0,0,0,0,1,0,0,0,0,0,1,5,13,23,43,78,116,121,111,115,127,90,48,45,33,55,40,50,38,36,31,33,48,41,66,63,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,10,31,52,127,74,42\n0,0,0,0,0,0,0,36,36,127,54,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,7,7,0,0,23,15,7,31,0,0,0,0,0,0,0,0,0,7,7,15,23,7,15,15,71,39,127\n0,0,0,0,0,0,0,0,1,0,0,1,2,4,11,29,56,38,22,23,9,5,2,3,4,3,0,1,2,0,4,4,11,22,31,76,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,95,63,95,63,95,0,95,31,31,0,95,0,0,31,31,0,127\n0,21,0,0,63,21,21,84,127,127,63,63,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,31,63,127,47,31,127,47,15,31,0,0,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,0,21,63,21,0,21,0,0,21,0,0,0,0,0,0,0,63,0,0,21,21,42,127,105,84\n0,0,0,0,0,0,0,0,0,3,0,0,8,29,42,78,73,89,39,49,29,17,13,10,3,5,5,5,15,10,6,15,24,32,96,89,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,14,3,0,11,11,11,37,26,11,3,26,3,26,26,11,18,70,74,127\n3,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,5,20,38,28,47,99,102,127,102,49,24,20,10,10,4,2,4,5,9\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,47,63,63,63,127,47,31,7,7,0,0,0,7,15\n14,14,44,89,82,89,67,127,127,52,0,14,0,37,44,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,9,0,0,0,9,9,19,19,9,0,19,68,127,39\n13,13,20,20,13,20,26,13,13,0,6,0,0,0,0,0,0,0,6,0,13,46,53,127,113,127,60,60,33,26,13,33,20,0,0,0,26\n0,31,0,0,0,0,0,0,0,0,63,31,63,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,50\n31,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,39,71,127,87,63,39,15,7,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,28,60,99,127\n0,0,0,0,0,0,0,0,1,1,2,8,22,29,23,10,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,14,37,97,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,15,15,0,47,47,127,95,31\n20,2,5,17,5,0,0,0,2,0,35,127,25,12,2,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n13,8,7,4,2,1,1,3,7,20,29,127,36,3,1,0,6,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,2,0,0,0,0,0,2,12,32,127,51,6,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,1,0,0,1,0,3,0,3,25,25,12,3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,6,3,18,43,127,106\n0,0,0,0,0,3,0,6,20,99,96,127,123,0,0,6,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,0,8,10,12,9,8,4,3,1,1,1,0,0,1,1,0,1,0,0,1,2,7,14,37,56,96,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,0,0,63,50,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,14,3,14,7,14,18,89,127\n0,0,0,0,0,0,0,1,0,1,13,127,55,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,1,0,1,6,8,20,26,25,11,8,6,1,1,0,0,0,0,2,0,0,0,0,0,1,0,5,16,33,66,104,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,76,127,127,0\n0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,108\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,59,42,76,127,50,16,16,84,16,33,25,42,16,25,0,76,16,42,59,16,76,67\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,50,0,63,127,0,12,0,0,12,12,0,0,0,0,0\n54,18,9,27,127,99,90,127,45,9,4,22,9,36,36,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,0,0,0,76,50,0,25,25,0,0,25,25,0,0,25,0,0,25,50,25,127,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,108,36,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,42,42,0,0,84,42,0,0,0,0,42,127,42,84,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,42,127,84,84\n0,0,0,0,0,0,0,0,10,0,0,0,0,0,10,10,10,45,50,45,55,25,30,20,30,35,20,10,30,40,60,96,40,127,101,55,121\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,50,50,76,127,76,50,101,101,0,50,50,50\n0,0,0,0,0,0,0,0,0,0,47,127,31,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,84,105,63,21,21,0,0,21,42,63,0,0,63,21,21,63,0,127,42,42,84,42,63,21,42\n0,0,0,21,21,84,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,58,39,48,48,68,39,39,39,39,39,9,68,87,58,117,68,87,127,78,19,0\n9,0,0,9,4,4,0,0,9,18,27,127,90,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,15,31,15,31,31,111,63,15,63,127,0,0,63,31,95,47,0,31,0\n0,7,0,0,0,0,0,0,3,11,34,23,38,50,42,34,11,11,0,0,0,0,0,0,0,0,0,0,0,3,0,7,11,23,96,127,92\n0,0,0,0,0,0,0,0,0,0,0,0,0,90,54,0,0,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,36,54,127,36\n0,0,0,0,0,0,0,3,0,0,9,0,127,74,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,9,9,9,39,0,9,9,0,0,19,0,19,39,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,3,56,89,37,7,3,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,18,82,127\n0,0,0,0,0,0,0,0,0,0,0,0,56,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,112\n0,0,0,0,0,0,0,0,31,0,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,15,95,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,15,0,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,127,0,0,127,63,127,63,127,127,127,63,127,0,0\n0,0,0,0,0,0,0,0,0,0,42,42,127,42,0,21,21,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,116,84\n0,0,0,0,0,0,0,0,0,0,0,0,50,0,101,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,76,127,50\n0,0,0,0,0,0,0,0,0,0,0,25,25,127,76,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,101\n0,21,0,0,42,21,0,21,21,0,42,21,0,0,0,84,21,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20\n127,81,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,27,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,45\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,6,14,38,87,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3,10,10,29,32,120,127\n127,95,111,31,79,0,15,31,0,15,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,63,31,95,95,95,127,63,63,31,0,31,0,31,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,25,127,127,50,101,25,101,76,50,50,0,0,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,3,3,5,11,55,44,34,17,7,13,1,1,0,0,0,0,0,0,0,1,1,9,3,15,21,86,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,28,127,42,56\n0,0,0,0,18,27,0,0,0,18,72,72,127,18,72,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,4,9,21,43,39,26,21,7,2,0,0,0,0,0,0,2,0,0,0,7,2,14,29,73,107,127\n0,0,0,0,0,0,0,0,3,8,14,50,117,127,93,53,20,8,4,0,0,0,0,0,0,0,0,0,0,0,2,0,4,18,32,47,61\n0,0,0,0,0,0,0,0,0,2,3,110,127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,44,44,93,127,60,33,16,22,5,0,0,0,0,0,11,5,0,0,0,22,0,11,5,16,22\n0,2,0,0,0,0,0,0,0,6,0,24,127,11,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,5,55,99,127,22,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,2,9,36,84,127,103,62,35,19,4,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,1,4,11,2\n0,0,0,0,0,0,0,0,0,0,15,31,23,127,39,63,47,55,31,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,23,7,95\n0,0,0,0,0,0,0,0,0,0,0,80,127,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,12,0,67,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,26,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,7,14,127\n95,95,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,25,0,0,0,0,0,0,0,50,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,95,127,63,31,0,63,0,31,0,0,0,0,0,0,0,0,63,0,0,0,95,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0\n91,127,101,60,30,30,30,30,15,10,15,20,10,20,25,20,25,10,30\n46,23,11,0,23,0,0,0,0,0,0,0,0,0,23,23,127,34,115\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31,63,31,31,0,0,0,31,31,0,127\n42,127,112,112,84,42,98,98,56,84,14,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,56,70,70,84,70\n80,127,57,57,34,69,57,34,34,57,46,34,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,23,80,57,69,92\n42,0,0,84,42,84,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,50,0,50,50,50,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,25,0,25,0,0,127,25,0,0,0,25,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,8,8,16,33,16,67,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,0,42,0,0,0,127,21,0,0,21,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,21\n0,0,0,0,0,0,0,0,0,0,0,0,15,55,111,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,70,42,42,0,28,98,127,98,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,14,0,14,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,38,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,90,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,36,18,0,0,36,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,127,42,127,0,84,0,0,0,42,42,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,42,42,127,42,21,0,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,0,21,42,84,63,127,42,105,127,63,21,21,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,31,63,0,31,127,31,95,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,76,127,76,50,0,25,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n99,27,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,5,5,11,44,71,127,88\n0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,0,84,0,0,42,42,84,42,127,0\n0,0,0,42,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,42,0,42,0,127,84,127,42,0\n21,21,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,84,84,127,84,84,0,63\n0,0,0,0,0,0,0,0,0,0,0,127,101,0,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,21,0,42,42,42,63,42,21,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,28,28,56,84,112,127,42,56\n127,15,15,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,15,47,63\n0,42,42,42,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,42,0,0,42,42,42,42,42\n0,0,0,0,0,0,0,0,0,18,18,72,127,72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,76,127,101,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,4,0,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,14,65,127,79,32,23,0,4,4,9,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,38,38,127,63,76,12,12,25,12,12,0,0,12,0,0,0,0,0,0,25,0,0,0,12,12,0,0,0,12,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,95,0,0,127,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,31,31,0,127,95,0,0,0,0,31,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,76,0,0,0,25,0,0,0,0,25,50,0,25,0,25,127,50,25,0,25,25,25,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,31,0,127,63,63,31,63,95,95,127,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,127,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,50,50,76,50,76,0,25,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\n76,25,0,0,50,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n105,127,84,63,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,21\n63,127,42,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21\n0,0,0,25,0,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,127\n0,0,0,0,0,0,0,0,0,0,11,34,11,69,127,127,34,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n108,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,50,25,76,76,127,25,25,127,0,50,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,25,25\n127,31,31,127,127,31,127,127,63,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31\n31,31,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,127,0,0,63\n63,127,127,127,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,63\n0,0,0,0,10,0,0,0,0,0,0,0,0,10,52,21,74,84,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,48,127,109,43,4,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,111,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,39,127\n127,84,74,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,10,10,10,21,52,10,84,116,127,105\n31,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,95,127,31\n25,0,50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,127,101,76,25\n0,0,0,0,31,0,95,31,0,0,63,127,31,0,63,31,0,95,0,0,0,95,0,0,31,31,0,0,0,0,0,31,127,31,0,0,63\n127,26,24,25,44,65,86,77,49,25,9,4,0,0,0,0,0,0,0\n0,0,0,0,1,3,4,19,54,106,127,112,80,53,22,16,13,12,16\n0,0,0,0,0,0,0,2,4,9,19,35,83,108,127,94,72,67,68\n0,1,0,0,0,1,2,9,18,24,63,110,127,117,69,43,27,26,29,27,28,29,31,23,23,20,9,8,3,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,1,5,8,32,56,70,95,109,127\n0,0,0,0,0,0,0,0,0,2,4,9,27,34,61,69,91,96,127\n127,19,4,11,2,0,1,1,0,2,1,1,0,0,0,0,0,0,0\n127,37,15,15,13,6,5,11,23,16,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,32,25,34,82,101,127,89,36,24,42,20\n0,0,1,0,15,29,109,87,13,13,127,101,27,29,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,116,52,52,31,31,31,63,10,10,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,42,42,63,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,0,42,42,105,42,0,0,42\n36,90,0,127,36,18,0,0,0,0,0,18,0,0,0,0,0,36,36\n0,9,9,16,11,37,84,127,105,65,30,28,14,14,4,2,0,4,4\n0,0,0,0,0,0,0,11,0,0,23,23,127,57,11,0,0,11,0,0,0,0,0,0,11,0,0,23,11,0,0,11,0,0,0,11,0\n0,8,8,16,25,76,67,76,127,101,25,67,42,50,42,8,8,25,16\n0,0,0,0,0,0,63,127,31,63,127,95,31,63,0,0,0,0,95,0,63,31,63,31,95,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,50,25,25,50,127,25,76,101,50\n0,1,0,3,7,4,16,27,74,91,127,100,123,76,56,35,29,27,47\n0,0,0,0,0,0,0,0,36,72,72,54,127,72,18,54,18,18,36,36,0,18,36,108,127,90,54,54,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,10,31,63,116,21,63,21,42,127,63\n63,63,0,63,0,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,42,42,84,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,7,21,21,14,35,14,49,127\n11,9,8,13,15,24,41,68,84,100,103,127,115,93,62,53,27,29,19\n127,25,88,25,12,25,12,50,12,25,12,12,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,45,45,63,63,127,72,127,63,36,81,63,45,90,108,127,63,54,81,81,18,9,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,6,0,46,66,80,113,73,106,66,127,13\n6,9,9,12,19,31,47,57,50,44,92,127,66,82,85,95,66,88,101\n28,98,70,127,42,56,56,14,28,28,0,14,14,0,14,0,14,0,0\n0,0,0,0,0,25,0,0,25,0,0,0,0,25,0,25,25,101,0,25,0,50,25,25,127,25,76,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,42,42,0,84,42,42,127,0,84,84\n93,97,98,116,124,122,127,115,125,96,62,48,10,14,3,5,3,5,2\n0,0,0,0,0,0,7,7,28,63,77,127,77,56,21,28,14,0,7,42,14,7,7,28,35,21,49,28,0,7,28,14,7,14,7,7,14\n21,21,10,0,0,0,0,0,21,10,21,42,52,52,10,95,84,42,127\n63,127,119,103,103,95,63,71,87,71,79,55,63,55,0,23,15,23,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,0,0,0,21,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,21,0,0\n40,20,32,36,45,86,73,127,36,16,24,12,16,4,8,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,9,9,0,9,19,127,107,87,78,107,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,81,38,33,29,10,5,1,2,0,7,0,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,47,63,127,31,47,63,31,15,0,15,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79,31,111,127,79,47,31,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,25,0,0,38,25,12,0,25,12,12,50,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,7,8,8,10,15,16,20,54,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,0,4,4,6,18,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,6,127\n127,27,0,45,36,27,18,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,87,7,23,7,15,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,1,5,18,50,109,127,108,57,39,29,20,15,12,14\n0,0,0,0,0,0,5,0,0,5,28,46,63,80,86,46,34,57,40,63,28,40,23,57,127,51,23,5,11,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,7,23,52,57,88,59,59,127,100\n16,17,13,20,26,83,108,127,96,93,80,55,58,34,37,20,11,4,4\n0,0,0,0,0,0,0,0,14,14,42,127,112,98,56,42,28,70,0,14,14,0,28,70,42,98,28,14,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,0,0,127,50,25,76,25,25,50,50\n0,2,4,0,0,2,2,31,119,127,63,19,26,12,13,7,2,0,1,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,18,108,81,127,117,36,54,54,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,1,2,4,16,16,22,58,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,29,14,22,127,59,44,52,29\n127,95,127,63,31,95,95,95,31,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,127,95,31,31,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,31,0,0,0,0,31,127,31,63,31,31,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,63,63,127,127,31,0,0,0,0\n0,0,0,0,0,0,0,0,84,127,118,50,8,8,8,0,0,0,0,0,0,0,16,0,0,8,8,8,8,0,0,8,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,50,101,25,127,0,25,25,25,25,50,25,0,0,25,50,76,0,0,25,0,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,9,21,86,107,127,32,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,19,58,48,68,19,127,68,48,39,107,19,0,9,29,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0\n31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,31,31,127,31\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,0,0,0,127,0,0,0,84,0,42,127,0,0,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,127,63,63,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,31,95,0,127,0,0,31,31,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0\n0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,17,0,0,11,127\n0,0,7,0,0,0,0,14,42,56,14,35,7,77,0,14,7,0,0,0,7,0,7,0,0,0,0,21,7,0,0,14,7,35,0,14,127\n0,0,0,0,0,0,12,12,0,38,101,127,12,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,50,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,28,35,105,14,63,127,14,28,28,0,14,28,28,35,35,21,42,14,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,46,34,23,115,57,115,57,69,127,34,23,11,23,11,11,57,11,0,34,11,0,23,0,0,0,0,0\n31,0,0,0,0,0,0,0,21,15,21,42,21,15,26,0,5,5,5,0,10,0,5,5,0,10,5,5,5,0,0,0,10,5,5,63,127\n0,18,0,0,0,0,0,18,18,72,0,127,54,18,36,36,18,36,18,0,0,18,0,0,0,36,18,18,0,0,0,0,0,18,18,18,72\n0,0,0,0,0,0,0,0,0,0,0,42,127,42,84,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,84,0,42,0,0,0,0\n0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,7,7,42\n28,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,127,127,56\n0,0,0,0,0,0,0,0,0,0,0,0,14,56,127,42,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,23,103,127,46,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,5,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,0,15,47,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,42,105,127\n127,52,74,31,42,10,10,0,21,52,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,10,10,5,0,0,5,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,15,0,0,0,31,0,127,79,47,95,15,15,15,0,0,15,31,31,47,15,31,31,0,0,0,0,0,0,0,31\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,127,31,63\n0,0,0,0,0,0,0,0,63,0,95,127,0,31,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,0,31,31,31,0,0,0,0\n0,0,0,0,0,31,0,31,31,0,63,127,0,0,0,31,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,63,63,0\n127,55,13,21,7,0,2,5,5,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,15,7,55,31,0,0,0,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,12,12,88,127,63,50,38,63,25,25,38,0,50,38,0,25,12,0,12,12,0,0,12,12,0,0,0,0\n0,0,0,0,0,0,12,6,6,12,6,12,0,6,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,12,0,0,0,6,127\n0,0,0,0,0,0,0,21,63,21,0,21,127,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,95,15,31,0,0,0,31,127,111,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,3,14,59,81,69,31,13,7,4,1,1,0,0,0,0,0,0,0,1,0,2,3,7,18,38,71,127\n10,4,1,0,0,1,10,9,5,9,34,37,78,58,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1,5,20,71,127\n54,9,0,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,63,127,127\n127,7,6,2,0,0,0,0,0,0,0,0,2,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,22\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,127,63,15,0,0,0,15,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,15,15,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0\n0,0,0,25,0,25,0,0,25,0,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,127,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,14,84,127,127,42,14,127,56,0,0,0,0,0,14,0,0,0,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,19,82,127,76,12,0,25,0,0,0,0,6,6,0,12,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,27,27,72,54,18,9,0,54,0,0,0,0,0,9,9,18,9,0,9,0,0,0,9,27,117,127,90,27,0,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,4,14,23,37,18,0,4,37,9,4,0,0,0,0,0,0,4,0,0,0,0,0,23,103,127,79,14,32,0,0,0,0,0,0,0,0,0,0,0\n1,6,3,1,3,3,6,13,19,17,89,127,89,26,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,3,14,9,21,17,13,3,4,3,1,0,1\n2,5,10,4,1,4,5,16,10,43,68,127,65,59,4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,10,16,10,13,2,7,0,1,0,7,5\n25,0,0,0,0,25,50,25,0,0,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,0,0,0,0,0,0,0,25\n42,0,0,0,0,42,0,0,127,42,42,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,84,42,0,42,42,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,11,11,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,127,11,23,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,5,11,2,5,2,2,11,14,23,77,127,57,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,17,25,31,11,2,5,0,0,0,0,0\n6,0,15,6,3,6,12,15,21,60,87,127,66,21,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,24,33,12,9,0,0,0,0,0,3\n0,0,0,0,0,0,25,76,25,101,76,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25,25,0,0,0,0,0,0\n0,0,0,0,0,0,25,0,127,127,101,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,42,127,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,50,127,25,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,101,25,0,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,0,21,42,127,21,0,63,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,21,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,84,42,21,21,0,0,0,0,0,0,0\n0,0,0,0,0,0,42,0,21,21,127,105,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0\n31,0,0,0,0,0,0,31,63,95,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,21,21,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0\n34,36,4,0,2,0,0,0,2,2,4,7,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,83,127\n50,0,0,0,0,12,0,0,25,12,50,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,13,127,103,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,5,5,1,7,1,0,0,0,0,1,1,1,0,1,5,3,1,10,9,18,19,127,70,34,5,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n12,5,3,3,1,1,5,9,39,89,110,127,53,16,1,5,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,21,31,21,21,0,0,0,0,0,0,0,0,0,0,0,21,10,10,0,21,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,31,31,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,18,72,72,99,45,18,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,108,127,63,45,27,0,0,0,0,0,0\n0,0,0,0,0,0,0,9,81,27,127,45,18,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,108,63,18,18,9,27,0,9,0,9,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,0,25,0,0,50,76,101,127,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,63,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,25,0,0,0,0,0,101,50,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,0,42,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,16,8,8,0,0,0,0,0,16,0,16,0,0,8,42,25,59,42,127,93,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,10,10,10,10,0,21,0,0,42,42,0,0,21,10,21,42,10,31,74,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,0,9,13,9,22,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,45,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,50,0,0,25,0,0,0,0,0,0,0,0,0,25,0,25,50,25,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,2,4,3,0,2,0,0,0,0,0,0,0,0,0,0,0,1,2,4,10,53,127,49,3,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,5,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,16,16,77,60,104,66,44,11,0,0,5,0,0,5,0,5,0,5,0,0,0,16,55,82,127,60,16,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,88,127,101,50,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,28,0,0,0,0,0,0,42,28,84,127,98,28,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,25,21,127,110,30,4,2,4,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,8,35,105,127,73,13,0,3,0,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,11,79,31,19,11,3,0,0,0,0,0,3,0,7,3,0,7,0,0,0,3,0,23,31,23,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,127,115,55,43,11,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,6,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,108,127,17,3,1,0,0,0,0,0,0,0,0,0\n0,0,0,13,0,9,4,0,18,31,49,40,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,31,45,49,9,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,9,63,99,127,90,49,22,9,0,0,4,0,0,0,0\n0,0,0,0,0,4,9,9,14,23,42,56,28,9,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,14,18,42,14,18,4,9,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,18,61,127,89,51,47,28,4,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,76,101,127,50,0,0,0,0,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,76,101,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,74,31,52,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,74,127,10,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,4,13,9,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,18,127,111,7,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,2,6,12,39,69,127,84,45,21,7,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,5,13,37,72,83\n0,0,0,0,0,0,0,0,0,0,18,127,127,36,36,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,36\n0,7,0,0,0,0,0,0,14,22,97,89,82,82,59,127,14,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,104,82,74,59\n0,0,0,0,0,0,0,0,1,3,5,7,9,18,16,19,10,10,12,0,0,0,0,0,0,0,1,3,3,0,0,16,1,29,96,103,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,95,63,127\n0,0,0,0,0,42,0,42,42,127,0,42,84,42,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,21,63,42,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,36,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,12,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,32,127\n1,1,0,0,0,1,2,4,8,33,100,127,32,6,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n5,4,2,2,1,8,4,19,28,121,127,86,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,25,0,0,0,101,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n4,1,2,4,4,5,6,14,27,46,61,127,60,16,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,42,0,0,42,21,42,21,63,84,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,2,2,14,50,124,127,82,38,20,17,0,2,0,0,0,0,0,0,0,0,0,0,0,2,5,2,26,50,85,82\n0,0,0,0,0,0,0,0,0,0,0,0,25,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,88,127\n3,0,0,0,0,3,13,6,36,127,122,82,8,8,1,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,25,63,127,101,76,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,1,4,12,43,66,63,73,29,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,12,24,85,127\n0,0,0,0,0,0,0,11,11,11,46,69,57,103,127,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,57,46\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,15,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127\n0,1,5,0,3,5,35,38,93,127,88,56,17,3,1,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,14,0,0,0,0,28,127,70,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,14,14,97,112,127,112,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,22,29\n0,0,0,0,0,0,0,0,0,1,3,11,25,15,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,15,68,127\n0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,72,127,54,9,0\n0,0,0,0,0,0,0,2,8,2,19,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,9,18,36,0,45,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13\n0,0,0,0,0,0,0,0,0,50,12,25,127,88,76,0,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,127,84,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,112,127,127,14,14,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,9,0,29,58,127,117,87,9,0,0,0,9,19,39,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,2,2,10,127,33,20,15,5,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,127,84,127,0,42,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,101,127,25,0,0,0,0,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,9,9,0,0,0,0,0,0,0,0,9,0,0,0,9,9,0,19,68,127,127,48,9,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,36,0,0,0,0,0,0,0,0,0,18,0,0,0,18,0,18,108,54,127,36,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,1,2,0,2,3,4,0,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,6,18,63,127,72,42,17,2,0,0,0,0,0\n0,0,0,0,0,0,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,24,127,43,18,8,1,1,0,1,1,0,0\n0,1,5,1,0,0,5,7,9,9,34,78,46,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,25,127,105,23,5,0,1,0,1,0,3,5\n5,1,0,0,1,0,0,0,5,7,20,42,34,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,28,127,72,18,10,0,0,6,3,2,0,3\n0,0,0,0,0,0,0,0,0,25,25,12,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,0,38,88,127,114,50,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,21,0,21,0,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,105,127,127,0,84,0,21,0,0,0,0,0,0\n0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,84,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,39,19,9,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,19,127,9,87,87,97,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,101,76,127,50,0,0,0,0,0,0,25,0,0,0,0,0,0,0,25,50,25,50,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,0,54,18,0,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,21,127,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,127,22,0,0,0,0,0,0,0,0,0,0,0,5,5,27,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,127,46,0,0,0,0,0,0,0,0,0,0,0,23,11,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,84,127,42,42,0,42,0,0,0,0,42,0,0,42,0,0,0,42,42,84,0,84,0,0,0,0,0,84,0,0,0,0,0,0,42,0\n127,55,55,23,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,15,47,39,23,87,15,39,55,0,15,7,0\n127,95,31,0,63,95,0,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,117,81,27,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,18,36\n108,60,78,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,24,127,6,12,6,12,0,0,12,0,48,96,36,0,0,0\n0,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,21,52,31,127,52,21,52,10,0,0,31,0,0,0\n0,25,12,12,12,25,25,127,88,63,25,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,0,25,0,0,12,25,38,38,0,12,0\n127,63,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,51,75,43,31,28,17,5,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,20,0,2,5,5,11,25,20,57\n123,127,96,59,42,13,1,11,9,5,0,0,0,1,0,0,0,0,5,0,1,21,21,9,46,48,73,78,65,55,34,13,23,13,23,19,7\n0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,63,95,95,0,127,95,0,31,31,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,0,5,11,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,1,13,127\n127,45,20,2,1,1,1,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,21,127,42,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n89,97,127,7,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,0,45,127,81,27,36,45,63,127,99,90,36,27,36,72,127,27,36,27,9,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,2,2,2,6,127,90,9,6,4,11,13,32,62,66,39,23,6,13,9,4,4,0,2,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0\n127,95,31,63,31,31,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0\n0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,84,42,84,127,0,84,42,42,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127\n50,127,127,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,50,50,25,0\n63,31,15,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,63,63,127,47,0,31,15,0,0,31,15,15,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,19,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,42,42,127,63,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,10,0,0,10,10,0,21,21,21,21,21,127,31,0,0,21,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,127\n127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,31,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,95,63,0,63,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,127,42,84,42,42,0,0,0\n0,25,50,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,127,50,0\n42,42,84,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42\n63,127,21,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,63,63,63,63,42\n0,0,95,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,127,31,127,31,95,31\n0,95,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,63,95,0,0,63,63,31,63\n0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,31,31,127,0,0,31,31,0,0,0,63,0,0,31,127,0,0,0,31,95,63,95\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,31,63,31,95,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,0,63,0,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,95,95,0,31,0,127,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,63,0\n31,79,79,79,0,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,47,0,127,47,31\n19,39,39,127,39,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,29,29,29,9,19\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,31,31,63,31,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,63,63,0,31,0,0,31,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,63,79,47,127,79,63,63,31,0,0,0,0,0,0,15,0,0,0,0,0,0,0,15,0,15,15,0,0,0,0,0,0,0,0,0,63,0,15,15,95,95,47,15,31,0,0,0,15\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,127,42,84,127,42,84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,42,0,127,127,84,84,0,84,84,42,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,76,0,0,25,0,50,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,0,0,0,0,54,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,0,0,0,0,0,0,0,0\n36,0,54,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,36,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72\n79,127,31,15,47,15,0,0,15,15,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,0,31,0,0,15,47,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31\n0,25,101,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,76,25,127,76,101,127,25,0,50,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,36,108,90,127,54,0,72,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,72,54,54,54,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,21,21,0,0,63,0,21,127,0,63,127,84,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,15,15,15,0,0,0,15,31,127,15,31,0,0,0,15,31,111,15,63,47,63,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,50,76,127,101,50,50,50,0,50,0,101,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,54,127,36,127,54,0,36,0,36,127,36,90,54,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n20,20,53,16,32,16,12,4,4,4,4,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,4,0,0,8,12,12,49,65,127,86,94,36,45\n15,47,84,58,42,47,15,10,5,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,10,0,0,5,21,63,68,100,127,111,79,42\n72,36,36,54,36,36,108,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,72,54,108,54,90,127,90,108\n12,38,88,63,127,0,0,12,12,38,76,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,38,12,50,76,50,101,114,63,114\n42,42,10,10,21,0,0,0,0,0,0,0,0,0,0,10,0,0,10,10,21,31,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,31,10,63,127,95,95\n66,48,18,12,12,12,6,0,6,0,6,6,0,0,0,6,6,6,0,12,18,18,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,24,12,60,66,127,120\n31,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31\n0,12,24,12,0,0,0,0,0,0,0,0,0,0,0,12,12,96,127,102,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,12\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,42,42,28,14,127,42,0,0,42,0,28,28,14,0,0,0,0,28,0,14,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,36,72,127,36,54,54,18,18,90,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,42,70,112,42,84,0,14,14,0,0,0,14,0,0,0,14,0,14,28,28,14,56,127,84,0,0,28,14,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,90,108,54,127,18,54,54,0,0,0,0,0,0,18,18,18,0,0,18,0,54,36,36,108,72,18,36,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,127,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,98,42,28,84,28,84,42,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,98,70,56,28,14,14,0,14,0,14,0,0,14,0,14,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,111,111,31,63,47,111,0,63,63,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,15,79,127,63,95,15,47,47,31,0,47,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,0,0,0,0,0,0,0,0,42,0,42,0,42,42,127,42,84,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,127,0,0,42,42,42,0,0,0,0,0,0,0,0,0,42,127,84,84,42,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,11,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,50,50,127,50,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,0,0,0,0,0,0,0,0,28,0,0,56,112,84,42,127,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,63,31,0,0,0,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\n9,0,4,4,6,1,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,29,59,85,127,75,54,25\n10,6,9,6,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,29,58,90,127,77,49,27\n0,127,42,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,0,84,127,84,63,42\n0,11,23,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,69,127,115,69,69,34\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,31,0,95,95,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,50,25,25,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,21,63,0,21,21,63,21,127,42,42,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,0,95,31,0,0,127,0,63,31,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,42,127,127,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n19,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,9,0,9,68,78,127,78,19\n42,14,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,105,84,127,70\n31,0,0,0,0,0,31,63,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,31,0,31,31,31,0,31,63,127,63,0\n63,63,0,0,0,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,63,63,63,63,0,127,0,0\n0,0,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,84,0,42,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,76,0,25,50,76,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,127,42,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,42,127,21,0,0,21,0\n101,76,101,0,101,76,50,50,76,25,25,50,127,0,0,0,25,101,25,50,25,25,25,25,50,50,50,50,76,50,50,76,50,25,0,101,50\n30,60,25,20,30,10,40,15,5,15,10,5,10,0,5,15,0,10,20,20,45,50,55,111,127,116,96,40,35,20,5,20,5,5,20,0,30\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,12,38,63,127,101,88,0,50,0,12,12,0,12,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,11,5,28,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,31,40,127\n36,0,0,0,127,36,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n28,14,14,0,14,127,112,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,105,102,67,91,42,52,21,7,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,81,74,27,29,31,17,24,13,6,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n56,14,0,28,0,42,42,0,0,14,14,14,0,0,0,0,14,28,0,0,0,56,42,84,112,127,70,70,56,0,0,0,0,0,0,14,0\n127,15,55,7,31,0,0,15,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,28,0,0,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,105,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,0,31,31,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,63\n31,31,63,95,127,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,127,127,63,31\n99,18,18,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,9,27,36,127\n63,127,63,31,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,63,31,31\n50,76,127,50,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,101,0\n90,36,18,0,0,0,36,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,54,0,127,127\n127,108,0,54,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,54,108,54\n127,109,87,70,52,43,33,26,19,15,11,10,5,3,3,3,2,1,4\n127,68,61,98,88,100,91,59,37,56,49,49,51,29,29,28,19,17,28\n127,80,71,55,25,16,8,0,0,0,0,0,4,8,8,0,0,4,0\n13,6,6,127,40,13,0,0,13,0,0,0,0,0,0,0,0,0,0\n1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,14,22,29,32,38,58,79,106,127\n21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,74,31,84,127,84,105,95,0,42,105,63,0,10,63\n112,127,77,56,35,31,0,3,7,7,3,0,0,0,0,0,0,0,0\n63,31,127,0,63,63,0,0,0,0,31,95,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,75,127\n127,75,11,2,16,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,31,95,63,0,31,63,127,63\n40,38,45,52,65,98,127,98,114,95,62,40,28,28,18,16,16,7,17\n5,0,0,4,6,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2,0,1,5,17,35,63,103,127,111,114,115,67,41,15,33,30\n28,98,28,112,56,127,42,84,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127\n127,31,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,0,1,1,2,2,13,6,16,15,32,65,97,127,97,94,64,43,25,17,12,5\n6,0,0,0,0,1,1,0,0,1,0,4,1,3,0,1,0,0,2,0,4,6,10,19,37,66,122,127,122,79,89,46,26,11,6,4\n25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,76,76,76,76,101,127,76,76\n25,50,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,0,0,50,25,0,50,127,76,76,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,14,0,0,14,42,77,42,127,98,70,63,105,35,21,21,14,7\n8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,8,8,8,0,0,8,0,0,25,42,59,76,93,127,67,33,0,33,8,16,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,76,50,0,0,101,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,127,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n10,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,10,0,21,31,95,116,127,42,52,42,21\n7,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,29,67,127,44,59,22,14\n70,42,42,14,0,42,70,56,28,0,28,0,28,0,98,112,56,127,112,84,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0\n15,47,111,15,31,79,63,0,15,47,0,31,15,47,63,31,95,95,127,111,47,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,21,21,21,42,84,127,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,0,0,0,84,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,26,3,23,26,15,42,127,123,119,103,88,80,80,38,34,30,80,80,46,34,46,38,53,30,11,11,11,50,34,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,1,2,1,8,17,45,41,30,39,34,30,10,8,9,30,68,127,39,25,16,9,8,13,2,6,3,10,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,63,127,21,0,42,21,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,127,25,25,25,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,95,127,31,0,31,0,0,31,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,31,127,31,15,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,31,31,127,0,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,31,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n9,11,5,9,7,1,1,3,1,7,11,7,7,13,19,31,37,56,62,93,111,76,121,127,97,72,74,64,64,46,54,23,23,23,17,5\n17,27,17,9,0,2,4,2,12,7,14,12,24,17,22,49,39,72,77,107,82,127,114,109,117,89,89,92,62,49,27,47,32,17,24,22\n2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,6,5,14,15,19,6,7,13,10,14,6,11,42,43,84,110,127,67,56,40,24,15,4\n3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,8,11,17,11,9,9,8,13,9,11,11,39,47,76,103,127,78,42,42,21,13,6\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,95,63,31,63,127,0,31,31,95,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,63,95,127,127,31,31,63,63,31,31,0,31,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,105,7,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,106,13,0,0,13,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,1,0,47,127,96,27,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,2,1,33,127,69,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,9,9,4,4,9,0,22,127,86,4,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,4,4,4,0,4,4,23,127,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,8,33,101,127,110,93,93,42,25\n0,23,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,7,0,0,0,15,31,119,103,127,111,79,55,47\n0,3,3,3,1,0,0,0,0,0,1,1,3,3,9,15,11,17,13,42,127,91,31,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,3,48,33,9\n0,2,6,2,2,0,0,0,0,0,2,2,4,11,13,9,18,20,20,50,127,113,18,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,39,2,41,48,16\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,37,63,63,47,100,74,68,42,10,37,42,127,63,52,58,26,21,10,5,5,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,8,25,8,25,101,101,127,101,118,110,110,42,42,93,93,110,50,84,59,42,16,0,8,16,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n5,0,0,0,0,0,0,0,0,0,0,0,0,0,17,11,0,5,17,46,51,34,23,11,28,17,40,127,98,34,46,5,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,17,17,11,34,17,23,11,23,17,51,57,127,75,17,17,5,5,5,0,5\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,76,76,76,0,127,25,25,76,127,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,127,0,63,127,127,0,63,127,63,0,0,63,63,127,0,0,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,19,127,6,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,127,74,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,50,127,69,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,31,31,31,31,31,31,31,0,0,0,0,0,63,0,95,0,127,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,31,31,63,31,0,31,31,0,0,0,63,0,0,0,127,95,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,30,13,30,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,36,13,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,101,127,25,0,25\n0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,127,25,50,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,52,10,0,10,31,10,10,21,31,21,21,10,10,10,0,0,0,0,10,21,10,0,10,31,74,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,111,31,0,15,31,63,0,15,31,15,15,47,0,15,15,0,0,0,0,0,31,15,0,0,79,95,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,18,18,18,72,18,127,36,36,36,0,0,0,108\n63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,95,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0\n114,117,127,59,39,39,74,57,117,62,32,34,49,27,0,2,0,0,0\n46,80,11,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,0,46,127,69,46,69,46,115,46\n93,127,80,84,16,25,29,8,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,19,11,0,127\n0,0,7,0,47,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,103,39,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,21,0,68,127,58,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,0,63,0,63,0,127,42,84,42,21,0,0,0,0,0,0,0\n0,0,0,14,0,0,0,14,14,0,42,84,112,84,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,70,127,56\n0,0,0,18,0,0,0,0,0,18,0,108,127,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,108\n0,0,0,0,101,50,0,0,0,0,0,0,0,0,0,0,0,25,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,101,50,50,0,0,0,0,0,0,0,0,25,25,0,76,127,0,0,0\n0,23,0,0,0,0,0,0,0,0,0,0,23,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95\n12,5,1,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,5,5,15,43,127\n33,6,0,30,33,13,60,36,33,20,10,0,6,0,0,0,0,0,3,3,0,0,13,0,0,3,10,13,23,13,16,33,70,86,90,116,127\n5,5,0,0,4,0,1,1,0,15,25,18,11,1,0,0,0,4,1,0,1,2,4,1,1,5,7,1,1,1,1,4,0,8,14,11,127\n127,92,53,19,14,9,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,84,63,21,0,0,0,0,0,0,0,0,0,0\n108,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,127,63,127\n0,0,0,0,0,0,0,0,0,7,97,127,97,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,14,74\n0,0,0,31,31,31,95,0,31,127,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,24,29,63,127,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,25,76,25,50,0,127,25,25,0,0,0,0,0,0,0,0,0,0\n127,114,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,12,0,0\n127,105,42,42,0,0,0,0,42,0,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,63,31,95,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,0,21,42,42,21,127,0,42\n0,0,0,0,0,0,0,63,127,127,63,0,127,0,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,127,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,28,127,70,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,25,0,0,0,0,25,76,0,0,76,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,101\n0,0,0,0,0,0,0,0,0,0,36,0,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,50,127,50,25,101,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,127,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,69,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,35,87,127\n0,0,0,0,0,0,0,0,0,0,0,0,127,84,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,127,42,42,0,84,0,42,42,0,42,0,42,0,0,0,0,0,0,0\n127,0,12,0,12,12,0,38,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,0,0,12,12,12,0,12,0\n0,0,0,34,0,23,0,11,0,34,46,46,103,57,80,57,11,57,92,46,23,69,127,34,34,11,23,11,11,11,11,0,0,23,0,0\n0,0,0,0,0,0,50,0,25,101,127,25,0,0,0,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76,76,50,25,0\n127,105,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,79,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,127\n9,0,0,0,0,0,0,0,4,4,4,127,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,54,90,127,99,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,9,0\n0,0,0,0,0,0,0,0,0,0,63,0,31,0,127,31,63,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,63,31,63\n0,0,0,0,0,0,0,0,0,0,0,10,5,0,0,5,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,10,21,58,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,101,50,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,21,0,84,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,42,0,0,0,0,0,21,0,21,0,0,0,0,42,0,0,0,0,0,0,0,127\n0,0,0,0,25,0,50,0,0,0,50,50,25,0,0,25,0,0,25,0,0,127,0,25,0,0,0,0,0,0,0,0,25,0,0,0\n0,0,0,0,0,0,42,84,42,42,42,127,42,0,0,0,42,0,42,42,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,42\n0,0,0,0,31,0,63,63,31,127,63,31,31,31,31,0,31,0,0,0,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,127,63,0,127,63,63,0,0,0,0,0,0,63,0,95,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0\n0,0,0,0,0,0,0,127,0,0,42,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,45,127,72,81,54,0,18,9,0,0,0,0,0,0,0,0,0,0,9,0,18,27,45,18,0,45,54\n0,0,0,0,42,0,0,84,84,84,42,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,63,95,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,101,50,76,76,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,127,95,0,127,0,0,0,0,0,31,0,0,127,63,95,0,0,0,0,31,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,63,95,127,31,0,0,0,0,31,0,31,63,127,95,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,127,42,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0\n0,0,0,0,0,0,0,0,6,0,6,12,31,25,6,19,19,12,0,0,44,12,6,38,12,12,12,12,19,38,63,127,82,19,50,50,50\n0,0,0,0,0,0,0,0,0,12,76,50,63,127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50\n0,0,0,0,0,7,0,14,14,0,0,0,0,127,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,15,15,47,47,31,31,47,15,15,15,15,127,15,95,31\n42,84,63,52,42,26,42,127,26,42,10,10,15,0,0,0,0,0,10\n63,63,95,63,95,63,31,31,31,63,127,127,63,63,0,0,0,0,0\n0,0,14,7,7,21,49,84,49,112,127,105,49,49,35,49,14,7,0\n127,116,77,65,51,42,22,14,2,0,0,0,0,0,0,0,0,0,0\n46,46,46,46,11,23,23,69,103,92,103,127,57,34,0,0,0,0,0,0,0,11,46,11,69,34,80,23,23,23,46,57,23,11,11,127,46\n107,127,78,43,43,24,14,34,24,9,9,19,14,48,73,78,4,39,78\n28,28,28,24,21,35,52,127,63,88,59,28,28,0,3,7,0,0,0\n0,0,0,0,0,0,0,0,28,0,14,56,14,56,70,28,0,28,0,14,0,14,0,0,0,28,28,127,42,28,56,42,42,0,28,28,112\n127,33,0,3,3,15,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,58,29,4,0,0,0,0,0,0,0,4,4,0,0,0,9,9,0,4,0,4,0,0,4,4,0,4,4,4,4,4,29,24,14,9,9\n127,127,63,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,127,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,34,80,127,11,11,0,0,0,0,0,0\n84,127,56,56,14,14,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,0,112\n42,105,63,84,0,42,84,0,0,42,42,21,21,42,0,42,21,84,0,63,21,42,42,21,0,0,63,0,0,0,42,0,0,42,0,63,127\n42,127,28,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,35,14\n0,42,63,0,0,84,0,0,0,0,0,0,0,0,21,0,63,21,0,0,0,21,0,0,0,21,0,42,42,84,63,105,0,0,0,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,63,95,31,63,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,95,95,127,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,9,0,0,9,19,0,58,0,58,48,107,127,87,117,39,29,29,19,19,9,29,19,0,9,0,0,9,0,0,0,0,0,0,0\n0,0,0,0,0,0,16,42,42,59,127,59,59,84,84,93,67,16,25,16,42,8,42,8,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,63,0,63,63,63,0,0,0,127,0,0,63,0,63,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,31,0,63,31,0,127,0,63,95,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,119,127\n0,0,0,0,0,0,0,0,9,0,0,27,27,127,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,27,117,127,9,0,0,0,0,0,9,27,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,69,127,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,12,38,0,12,0,38,12,12,50,38,38,12,12,0,12,0,12,0,12,0,0,0,0,12,0,0,12,38,25,38,38,38,127,25,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,127,25,50,101,101\n0,0,0,0,0,0,0,0,0,9,9,90,108,81,72,9,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,9,9,45,127\n0,0,0,0,0,18,108,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,12,0,38,12,12,12,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,63,0,31,31,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,0,0,127\n0,0,0,0,0,0,0,0,0,15,111,63,95,15,111,47,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,63,111,127\n0,0,21,42,0,21,0,0,127,127,0,42,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,31,31,127,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,63\n0,0,42,0,42,0,0,42,0,42,42,127,127,42,0,0,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,127,0,25,25,25,25,0,76,101,25,0,0,0,0,0,0,0,0\n0,0,127,21,63,42,21,42,0,0,0,0,63,0,0,0,0,0,0\n0,0,0,0,0,0,0,21,0,21,63,63,63,127,105,42,84,42,42\n63,0,0,0,63,31,31,31,127,31,31,0,0,31,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,0,127,31,63,127,63,31,63\n127,42,42,0,21,42,42,42,42,21,0,0,0,0,0,0,0,0,0\n0,0,0,31,0,63,0,63,0,127,0,127,95,63,0,0,0,0,0\n0,0,0,0,0,0,0,25,50,0,0,25,25,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,50,50\n0,0,0,0,0,0,31,0,0,0,0,0,95,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,127\n23,0,7,7,11,31,39,83,55,83,127,63,51,19,43,23,35,39,23\n127,0,0,0,0,95,31,0,63,0,95,31,0,95,31,0,0,31,0\n0,0,0,0,0,0,0,0,0,0,0,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,127,42,42,42,42,42,42,0\n0,31,31,63,0,63,127,31,31,63,127,63,31,0,0,0,0,31,0\n0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,26,127,60,6,53,0,46,13,0,0,0,0\n63,0,0,0,0,0,0,0,0,0,127,0,63,63,127,0,63,0,0,63,0,0,63,0,0,0,63,0,127,127,0,0,0,63,0,63\n63,0,0,0,0,0,0,0,0,0,63,0,63,63,63,127,0,63,63,0,0,0,63,0,0,0,127,63,63,63,0,0,0,0,63,63\n0,0,0,0,0,0,0,0,0,0,21,21,42,21,21,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,127,63,21,0\n0,0,50,50,0,25,25,50,127,50,50,0,50,25,101,76,76,50,50,0,0,0,50,25,0,50,50,25,76,76,50,76,50,25,25,76,101\n101,101,50,50,0,0,0,50,0,50,0,0,0,0,50,50,25,0,50,50,101,127,50,76,50,50,25,76,76,0,0,0,76,25,0,25,101\n127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,127,127,0,0,0,127,0,127,0,0,0,0,0,0,0,0\n0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,127,0,0,21,0,0,0,0,0,0,0\n0,1,1,1,5,10,21,40,24,40,59,93,121,105,65,44,29,10,7,5,1,1,0,0,3,0,0,0,0,1,1,17,12,22,61,75,127\n0,0,0,0,0,0,0,0,0,0,31,15,31,127,15,63,0,0,31,0,0,0,0,0,0,0,0,0,0,15,0,15,0,31,0,15,95\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,0,0,63,0,0,0,0,0,31,0,31,31,0,31,127,95,0\n0,0,0,0,10,10,0,10,10,127,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,25,0,0,25,0,50,25,25,25,25,25,0,0,0,25,76,0,0,0,0,0,0,0,0,25,0,25,0,0,25,25,0,127,101,0\n0,0,0,0,0,14,0,63,21,14,91,127,70,105,77,35,21,14,14,0,0,0,0,0,0,0,0,0,0,0,0,14,35,28,28,98,70\n0,0,0,0,0,0,0,0,0,76,101,76,50,127,76,76,0,25,0,0,0,0,0,0,0,25,0,0,0,0,0,50,0,0,25,127,101\n0,0,0,0,21,0,0,0,63,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,0,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0\n84,127,105,42,0,0,84,42,0,42,0,0,0,0,0,0,0,0,0\n0,21,21,63,63,42,63,127,127,63,21,0,21,63,21,0,63,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,47,63,79,95,15,0,0,0,31,15,31\n0,0,0,0,31,0,95,31,63,127,31,95,31,0,0,0,0,0,0\n0,0,0,42,42,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,0,0,42,42,0,0\n127,0,15,0,0,95,47,47,63,0,0,0,0,0,0,0,0,0,0\n0,18,0,0,18,18,54,72,127,90,54,108,108,36,127,108,72,36,36\n127,63,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,18,0,0,18,36,90,54,127,54,0,18,18,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,18,18,0,36,0,0,54,127,72,36,36,36,18,0,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,42,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,0,0,127,84,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,31,0,0,0,0,0,31,31,63,127,0,95,31,0,0,31,0,0\n127,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,31,31,15,47,47,79,15,63,31,31,127,63,47,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,127,127,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,84,84,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,11,0,34,80,103,127,80,80,46,127,80,69\n76,127,76,88,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\n0,0,0,0,0,0,0,0,0,31,0,127,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63\n0,0,0,0,0,0,0,33,16,50,42,127,59,16,50,59,59,16,33\n0,0,0,0,0,0,0,0,0,0,0,42,21,84,127,42,84,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,21,0,0,0,21,63,127,63,63,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,84,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,21,0,127,63,84,42,0,0,0,0,0,0,0,0\n0,16,16,8,0,16,0,16,33,59,42,127,101,33,50,59,67,67,16\n0,14,127,0,0,14,14,14,0,0,14,0,0,14,0,0,0,0,0\n0,50,25,50,127,25,25,50,25,101,101,0,101,25,0,25,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,84,127,84,0,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,18,36,54,90,127,90,127,18,36,0,36,54,54,0,0\n0,0,0,0,0,0,0,0,14,14,0,14,14,56,70,127,98,56,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,0,21,0,21,105,42,127,63,21,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,127,103,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,95\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,127,106\n127,72,45,27,72,63,63,72,63,54,27,9,9,9,9,9,18,45,0\n0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,5,15,21,68,127,47,74,26,52,42\n127,59,35,15,19,15,3,0,0,0,0,0,0,0,0,0,0,0,0\n18,16,39,47,63,72,105,98,127,109,92,75,68,49,17,27,14,18,16\n0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,5,9,29,57,101,127,86,108,62,77,40,40,22,27,11,0\n63,31,47,63,127,47,79,111,79,111,127,127,47,15,47,0,0,0,0\n127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,47\n47,55,127,55,71,31,7,55,15,15,15,23,63,79,79,7,71,55,79,79,111,87,63,71,47,47,71,39,103,71,39,79,87,111,71,63\n37,67,104,37,59,37,29,7,0,0,22,7,59,29,44,14,22,52,37,67,52,82,112,59,52,119,74,52,82,104,52,127,89,82,59,52\n63,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,127,0,0,127,63,127,127,63,63,63,0,63,0,127,0,0,127,0,0,63,0\n63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,127,127,0,0,127,0,63,63,0,63,127,0,0,0,63,0,63\n31,31,95,47,15,15,0,0,0,0,15,0,0,0,0,0,0,0,0,31,15,111,79,63,15,63,127,15,0,0,15,0,0,31,15,0\n36,18,127,36,54,72,36,0,0,0,18,0,0,0,0,0,0,0,18,36,36,72,72,36,72,108,54,18,0,0,0,0,0,18,54,36\n0,0,0,42,0,84,0,42,0,42,42,42,0,0,0,0,0,0,0,0,0,84,0,0,84,0,84,0,0,84,84,42,127,0,42,0\n0,42,42,0,0,0,0,0,0,0,42,0,0,42,0,0,42,84,0,0,0,42,0,84,42,84,42,0,84,42,127,0,0,0,0,84\n50,50,50,25,127,50,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,16,25,76,67,8,8,59,16,0,8,16,0,0,0,0,0,8,0,8,33,25,42,33,84,127,118\n0,0,0,0,0,0,0,0,0,10,0,0,0,21,10,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,21,52,95,127\n0,0,0,0,0,0,0,0,0,0,0,5,23,51,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,51,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,127,86,11,5,11,5,11,17,5,0,0\n0,0,0,0,0,0,0,0,0,0,5,5,28,51,57,23,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,46,127,86,34,11,11,23,28,5,0,0,5\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,127,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,84,42,127,42,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,127,127,63,127,63,0,127,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,31,0,31,31,127,79,0,31,63,31,15,31,31,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,47,63,127,79,0,15,0\n0,0,0,25,0,76,25,50,127,101,0,76,25,0,0,0,0,0,0\n0,0,0,6,6,30,6,24,96,60,96,66,60,127,36,42,30,30,0\n0,0,0,0,0,0,0,0,0,31,63,95,63,127,79,63,47,15,0\n112,84,127,98,28,14,14,0,42,14,0,42,0,28,0,0,0,0,0\n7,7,0,7,7,14,28,35,77,105,77,70,35,56,28,21,21,42,35,56,28,28,14,91,63,127,56,63,77,35,28,0,28,0,0,7\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,4,0,0,0,0,4,0,0,4,19,92,127,122,127,73,29,9,9\n0,0,0,0,0,0,18,18,18,6,0,0,0,0,0,0,0,0,6,6,0,0,0,12,54,114,60,127,78,66,18,24,12,0,6,18,24\n28,38,29,13,13,49,115,127,77,43,19,14,7,8,0,1,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,15,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,17,68,127,58,12,2,8,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31\n0,0,0,0,25,0,0,50,76,127,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,101,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,0,31,31,95,127,63,0,0,31,63,63,31,0,31,0,63,31,0\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,127,0,0,0,0,84,0,0,42,42,42\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,42,42,84,127,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,31,31,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,63,63,0,127,127,0,0,0,0,63,0,0,0,0,0,127,63,0,0,0,0,0,0,127,0,0,0,0,63,0,63,0\n18,0,9,9,72,18,18,36,9,36,127,36,63,27,9,0,18,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,42,63,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,31,0,47,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127\n0,0,0,0,0,0,0,0,0,31,127,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,63\n0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,42,0,127,0\n127,42,21,63,0,105,0,63,42,0,42,21,0,21,0,21,21,21,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,127,72,72,72,36,54,0,0,18,0,0\n0,0,11,0,0,11,23,46,127,69,34,11,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,101,127,0,0,0,0,0,0,0,0,25,0,25,25,76,0\n31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,95,0,31,0,0,0,0,0,0,31,0,31,63,127,95,31\n0,0,0,0,0,0,0,0,0,0,127,0,50,0,0,0,0,50,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,50,0\n0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,84,0,0,42,0,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,127,127,0,42,0,0,0,0,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,50,76,25,25,50,127,25,50,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,76,76,25,76,50\n0,0,2,2,2,2,8,8,0,27,19,91,127,91,38,24,33,22,16,0,0,0,2,0,0,2,0,0,0,0,0,5,16,24,49,85,127\n0,0,0,0,0,0,0,0,31,31,0,63,63,95,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,0,31,63\n0,0,0,0,0,127,0,0,0,84,0,42,84,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84\n0,0,0,0,0,0,0,0,0,0,50,0,50,101,25,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0\n0,0,12,0,0,0,0,0,25,38,25,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,38,63,76,76,114,50,63,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,38,76,127\n0,0,0,0,0,0,0,0,9,36,54,127,90,63,99,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,9,36,54,36\n0,50,0,50,76,50,76,0,76,25,0,0,25,0,0,50,0,101,25,101,0,0,0,0,50,0,50,127,50,25,25,76,76,50,25,25,0\n0,0,0,0,0,0,0,0,0,18,18,108,54,36,54,36,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,36,127,72\n0,0,0,0,0,0,0,0,0,0,101,50,127,101,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\n0,18,0,0,0,36,36,18,0,72,72,127,54,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,25,25,0,0,25,50,50,76,25,76,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,127,50,0\n0,0,0,0,0,0,42,84,0,0,42,127,42,84,42,42,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,95,127,127,63\n63,42,21,42,42,63,21,42,63,63,42,42,84,127,105,105,21,84,21,0,63,63,21,42,21,42,21,21,0,42,0,84,63,42,42,21\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,95,63,31,31,63,0,63,0,0,31,0\n15,51,31,31,83,63,67,127,95,67,67,87,43,15,11,0,3,7,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\n0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,42,105,42,21,0,0,0,21,0,0,0,0,21,0,0,0,21,63,42,21,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127\n0,0,0,0,0,0,0,0,0,11,11,34,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,63,63,0,63,0,63,63,0,63,63,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,21,0,0,0,0,42,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,42,0,0,0,0,0,0,0,0,0,0\n84,0,0,0,0,0,84,42,0,0,42,42,42,0,42,0,42,0,84,42,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,127,0\n0,0,0,0,0,0,0,0,5,5,28,80,127,46,23,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,5,11,28,80\n0,0,0,0,0,0,0,18,18,36,90,36,90,54,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,54,108,18,36\n0,0,0,0,0,0,0,0,0,0,0,21,105,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127\n3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,0,3,1,127\n0,0,0,0,0,0,11,0,0,0,11,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n1,3,2,1,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2,0,1,10,6,127\n13,10,6,1,1,0,3,3,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,3,3,1,0,1,5,3,1,3,18,21,38,41,127\n0,9,9,9,18,9,18,0,27,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,9,127\n0,9,0,0,0,9,9,14,4,34,24,127,83,83,53,34,14,14,0,9,0,4,0,9,0,14,0,0,4,4,4,19,4,9,19,34,19\n0,63,31,31,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,42,0,0,0,0,0,0,127,127,0,84,0,0,84,0,0,0\n0,0,50,25,25,25,12,0,12,38,63,127,25,12,12,12,38,0,0,25,0,0,0,25,0,0,0,0,25,0,25,0,0,12,38,101,50\n0,0,0,0,0,0,0,0,127,0,127,0,0,63,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0\n0,42,0,42,0,42,0,84,84,84,42,42,0,42,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,42,42,0,42,42,0,84,0,0,0,42,0,42,0,0,127,0,0,0,0,42,0,42,0,0,0,0,0,0,42,42,0,0\n0,42,0,84,0,42,0,42,42,0,84,84,42,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,0,42,0,0,0,42,127,42,42,84,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,42,42,0,42,0,0,0,0,42,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,18,127,90,72,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,25,0,127,76,25,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n28,42,0,0,0,0,28,0,28,70,28,127,112,56,28,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,42,0,84,84\n0,0,47,0,0,0,0,0,0,127,15,0,0,0,0,15,0,0,0,15,0,0,15,31,79,15,0,0,0,0,0,0,15,0,15,0,31\n9,23,9,42,28,23,47,32,51,47,56,89,23,4,14,4,4,0,0,0,4,0,0,9,0,0,0,0,0,4,4,0,0,28,28,127,94\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,127\n18,36,36,36,27,54,127,72,81,81,127,90,36,36,27,18,18,0,0,9,0,0,9,9,0,0,18,27,0,0,0,0,9,27,0,72,18\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,9,9,9,0,0,0,0,0,0,0,0,9,0,9,54,127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,42,0,14,0,14,14,0,0,0,0,0,0,0,0,28,0,14,127,127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,25,50,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,0,63,42,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,42,0,0,84,127,0,0,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,0\n0,0,0,0,0,0,0,0,0,31,95,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,127\n0,0,0,0,0,0,14,7,7,0,21,56,98,14,0,0,0,7,0,7,0,7,0,0,0,7,0,0,0,14,14,0,0,0,7,35,127\n23,11,11,34,69,115,127,127,57,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,5,2,2,5,32,17,56,85,127,41,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,54,81,36,9,0,9,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,99,127\n0,0,0,63,0,0,0,0,0,95,31,31,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,0,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,84,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,0,0,0,0,0,0,0,0,0,0,42\n0,0,0,0,0,0,0,0,0,0,0,0,18,108,36,90,54,0,18,0,0,0,0,0,0,0,0,0,0,18,72,0,72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,18,90,72,54,36,0,0,0,0,0,0,0,0,0,0,0,0,36,72,36,54,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,0,0,0,15,0,31,15,15,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,15,0,0,31,15,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,31,0,0,0,0,0,0,0,15,79\n0,50,50,25,0,0,25,25,25,25,25,25,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,0,0,101,127,50,0,0,0,0,25,0,0,0,0,0,0,25,0,0,25,0,0,25,25,25,50,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,50,50,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,69,16,8,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,69,22,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,10,21,42,52,116,63,127,10,21,10,21,0,0,10,0,0,10,10,127\n127,80,25,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,21,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,103,31,23,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,28,5,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,25,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,12,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127\n42,63,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,42\n0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,10,0,0,21,74,127\n127,105,74,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,95,31,31,31,31,127,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,0,0,0,31,95,0,0,31,31,63,95,31,63,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0\n76,127,50,50,50,25,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,50,0,0,50,25,101,0,25,76,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,25\n36,18,54,108,18,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,88,88,101,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,47,0,15,0,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n111,31,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,15,0,15,15,15,0,31,0,0,0,0,15,0,0,0,0,0,15,0,95,127,63,31,111\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,15,15,63,0,0,15,0,0,15,0,0,0,0,0,15,0,0,15,15,15,63,79,31,95\n0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,0,0,21,21,0,21,21,42,21,21,84,105,127,42,63,21\n50,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,25,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,25,25,76,25,76\n21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,42,21,127,42,42\n0,42,52,127,127,127,31,21,10,21,0,0,0,0,0,10,10,0,10,0,0,10,0,42,31,0,21,10,0,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0,10,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n7,7,63,127,91,21,42,35,0,0,0,0,0,7,0,0,0,0,0,0,7,0,7,14,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\n5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,26,127\n127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,5,5,12,17,18,11,2,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,2,7,26,48,127\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,127,63,0,31,0,31,31,0,0,0,0,0,0,0,0,0,31,95,95,63,31,95,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,6,32,127,37,3,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,23,127,32,3,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,15,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,3,9,61,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,21,84,127,66,18,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,1,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,100,127,73,17,2,0,0,5,0,0,2,0,0,0,0,2,0,0,0,5,2,8,0,5,5,5,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,127,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,3,6,15,58,127,113,30,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,12,6,0,0,0,31,76,127,82,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,50,44,19,19,0,0,0,0,0,0,0\n28,14,0,14,0,0,14,84,70,42,70,127,112,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,98,112,14,14,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,18,36,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,15,127\n0,0,0,0,0,0,0,1,0,9,18,38,127,88,68,28,5,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,4,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,6,18,18,9,22,5,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,1,1,5,6,21,45,111,127,85,54,2,2,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,3,5,8,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,12,7,21,20,25,5,1,0,0,0,0,0,1,0\n0,0,0,0,0,0,0,25,0,0,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,63,31,31,0,31,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,127,31,63,63,31,63,0,95,0,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,29,127,39,1,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,3,28,127,63,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,16,50,25,25,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,59,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,44,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127,14,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,64,127,67,55,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,17,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,10,68,127,89,21,5,5,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,10,10,26,26,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,10,7,4,3,5,3,1,0,0,0,0,0,0,0,0,1,0,1,4,20,55,118,127,55,12,3,2,1,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,14,13,12,7,3,1,0,0,0,0,0,0,0,0,0,0,0,3,2,13,40,95,127,79,18,0,1,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,14,29,19,14,14,0,9,0,0,0,0,0,0,0,0,0,0,4,0,0,24,24,127,78,34,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,39,21,4,0,8,8,0,0,0,0,0,0,0,0,0,0,0,4,13,39,39,127,87,35,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,127,25,76,0,0,0,50,50,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,127,90,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,72,54,18,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,18,72,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,90,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,31,63,0,31,0,31,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,36,36,0,18,0,127,0,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,0,84,84,42,0,0,84,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,42,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,63,31,31,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,95,0,0,31,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0\n127,117,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,7,7,21,28,14,7,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,17,28,63,92,66,77,8,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,8,5,37,57,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,14,0,0,3,0,39,43\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,127,29\n0,0,0,0,1,1,1,1,4,6,49,127,23,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,7,0,7,0,0,39,15,39,103,127,79,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n12,9,9,9,0,0,0,9,3,30,30,127,65,12,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,127,0,21,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,21,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,38,127\n0,0,0,0,0,0,0,0,0,0,0,7,127,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,4,4,0,0,8,4,4,0,8,21,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,71,93,127,12,12,0,0,0,0,0,0,0\n0,0,0,5,0,0,0,0,0,11,11,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,115,93,33,5,5,5,0,0,0,0,0\n0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,47,0,0,0,0,0,0,0,0,0\n127,106,55,23,9,3,1,0,0,0,0,0,0,0,0,0,0,0,0\n28,18,12,9,8,5,2,7,6,6,4,3,4,2,2,2,1,1,0,1,1,2,2,2,3,6,7,8,9,11,10,14,16,19,33,71,127\n127,65,43,38,15,18,19,31,43,42,71,64,78,82,88,75,73,96,103\n127,53,27,11,3,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,4,4,1,4,10,17,74,62,127\n115,127,66,40,30,16,13,6,5,5,7,5,4,6,3,5,7,9,6,8,6,8,7,3,3,8,6,6,4,6,6,10,13,14,22,33,38\n127,63,0,42,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,21,0,21,0,21,42,42,21,0,0,0,42,84,127\n106,113,73,40,40,13,33,40,6,0,20,6,13,0,6,6,20,0,33,33,40,53,40,26,20,20,33,26,46,33,20,33,40,40,127,66,53\n127,74,23,17,7,7,3,0,2,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,2,3,6,9,20,38,51,61,65\n26,40,26,26,6,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,13,6,40,80,40,40,86,127,120\n112,127,56,38,38,38,63,24,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,109,84,30,30,21,5,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,6,19,64,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,30,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,53,127\n127,54,27,4,4,18,18,4,18,9,4,18,9,9,4,22,0,9,9,9,22,9,9,9,9,18,13,13,9,9,0,0,0,0,0,4,18\n84,68,47,15,15,0,5,0,5,0,0,5,5,0,0,0,5,5,0,0,0,0,0,0,0,0,5,5,5,10,5,26,31,37,52,121,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,15,42,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,53,127\n0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,42,105,127\n19,24,9,2,4,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,7,12,34,51,127\n127,70,30,13,4,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,8,15,26\n127,90,54,33,35,17,17,11,13,5,2,5,16,8,4,8,5,2,13,2,2,8,11,10,5,2,2,11,4,10,11,16,8,22,35,29,70\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,12,42,127\n53,53,48,46,21,38,21,18,11,10,8,10,4,11,14,9,7,32,21,51,39,49,66,94,118,109,120,118,112,104,110,105,96,104,121,127,89\n7,14,32,21,3,0,0,18,0,7,0,50,0,0,3,10,3,7,3,3,18,21,36,18,14,72,87,54,76,76,127,72,39,29,32,21,14\n0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,42,21,21,0,0,84,42,21,84,105,0,21,84,21,42,84,0,21,0,127\n0,0,0,21,0,63,42,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,21,0,0,63,21,84,21,63,127,84,42,42,21,0,0\n78,84,18,24,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,6,18,18,18,24,12,36,12,18,24,12,18,12,18,12,0,18,6,0,12,12,6,24,18,12,18,18,24,18,12,18,24,12,24,30,30,36,60,42,127,84,102,102,66,48,114,114,96,78\n73,46,80,20,13,6,0,0,6,0,0,0,0,0,0,0,0,13,0,0,0,0,13,0,6,0,20,13,20,26,6,20,6,20,0,6,0,20,6,0,0,0,13,13,6,13,40,6,13,26,13,20,33,13,26,13,13,33,66,53,40,40,86,60,20,113,127,46,40,120,93,66\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,21,21,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,0,84,0,0,127,42,0,84,0,0,0,42,0,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n76,25,76,101,50,25,127,127,0,0,25,0,0,0,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,47,39,31,15,47,15,15,23,7,7,0,7,39,63,71,103,127,87,39,55,39,15,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,42,118,25,25,25,0,8,16,8,25,42,25,16,50,59,118,84,127,67,42,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,127,0,14,14,0,0,0,0,14,0,42,28,42,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,105,0,0,0,0,0,0,0,0,0,42,63,42,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n22,9,18,13,4,0,0,4,0,4,4,9,0,0,4,4,0,4,13,18,4,9,0,18,13,4,0,0,27,9,9,22,13,0,4,4,0,13,0,0,0,9,9,0,4,9,4,0,13,0,18,4,22,9,22,9,9,4,4,13,18,31,40,45,86,72,90,104,127,81,31,36\n31,19,19,6,6,19,0,0,0,6,0,6,0,6,0,0,0,12,0,0,0,6,6,0,0,12,0,12,19,12,6,6,6,0,0,0,0,6,0,19,12,6,12,12,0,12,12,12,25,38,12,12,12,44,25,6,6,0,6,19,6,12,50,69,82,127,88,101,82,107,57,44\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,42,0,0,0,0,0,0,84,0,127,84,84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,127,0,63,0,63,63,63,0,63,0,0,63,0,63\n63,63,0,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,127,0,0,0,63,0,63,63,127,0,0,0,0,0,0,0,0\n103,63,87,47,43,63,39,23,31,47,31,19,51,35,15,71,71,43,127\n0,33,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,13,26,40,127,40,93,33,26,13,6,6,46,13,13\n36,0,0,0,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,50,127,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,84,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,5,15,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,42,127\n0,0,0,0,0,0,0,0,0,21,0,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,42\n0,0,0,0,0,50,0,0,0,25,50,127,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,76,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,105,63,0,0,0,0,0,0,0,0,0\n0,21,0,0,0,0,0,0,0,0,0,21,116,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,127,0,4,0,0,0,0,0,19,9\n0,0,0,0,0,0,0,0,0,0,0,21,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,0,84,84,127,127,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,36,127,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,127,120\n84,127,63,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,63,0,0,42,0,0,0,21,0,0,0,0,0,0,0,0,0,84\n0,0,0,0,0,0,0,4,0,6,22,81,124,127,102,22,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,22,58,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,42,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,63,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,25,0,0,0,0,0,0,25,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,101,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,50,76,127,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,0,127,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0\n127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,63,0,31,0,31,0\n0,0,5,0,0,0,2,2,4,22,46,99,127,69,36,8,8,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,2,5,12,14,23\n0,0,0,0,0,0,0,3,3,24,63,127,51,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,45,27,127,72\n1,3,5,3,6,5,10,22,27,75,125,127,59,9,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,50,0,0,101,0,0,0,127,25,50,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,12,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,8,4,21,127,67,50,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,2,0,2,4,11,0,2,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,25,84,127,68,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,9,4,31,9,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,40,113,127,122,18,0,4,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,22,16,5,0,27,127,33,11,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,16,3,127,52,6,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,61,127,10,0,0,0,3,3,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,90,108,90,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,14,26,127,35,11,5,2,14,2,0,5,0,0,0,0,2,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,8,15,127,15,5,1,8,3,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,15,15,15,0,47,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,47,0,15,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,5,0,2,7,0,0,0,0,0,0,0,0,0,5,5,5,12,22,25,40,96,127,35,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,14,5,2,2,0,8,0,2,0,2,0,0,0,0,2,5,5,14,31,31,53,59,127,56,14,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,21,21,127,42,10,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,10,10,127,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,50,50,25,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,101,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,101,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,36,90,127,54,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,108,0,36,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,3,29,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,7,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,127,6,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,0,0,0,0,0,0,0,0,31,0,0,95,31,31,31,0,95,127,63,0,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,42,0,42,0,0,0,42,84,42,42,42,0,127,42,84,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,10,10,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,50,25,0,25,25,0,0,0,0,0,0,25,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,23,0,0,23,0,0,0,0,0,0,11,0,11,0,23,23,46,57,103,127,92,57,103,11,11,0,0,11,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,9,9,0,0,0,0,0,0,0,0,0,9,9,18,9,99,54,127,27,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,0,18,18,0,0,18,18,54,18,72,127,72,18,54,18,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,25,50,25,0,25,0,25,25,76,127,25,101,50,76,50,50,50,0,0,0,0,0,0,0,0,0,0,0\n127,40,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,115,87,61,44,12,13,6,3,1,1,0,0,0,0,0,0,0,0\n127,79,25,20,12,11,5,8,2,11,7,3,5,4,9,1,4,3,3,5,9,5,6,4,6,5,5,7,2,11,5,8,7,7,10,34,30\n127,33,2,0,2,0,8,5,30,8,49,27,33,33,24,44,38,55,71\n84,84,63,42,0,63,21,0,42,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,42,127,127,21,63,84,84\n0,108,18,18,127,0,0,0,36,0,54,0,18,36,0,0,54,18,36,18,18,54,18,36,18,72,36,54,0,72,36,36,72,18,18,108,0\n0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,63,0,127,0,127,0,0,0,0,0,0,63,0\n84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,42,84,0,127,42,0,84,84,0,0,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,63,74,127\n0,50,0,0,0,0,0,76,0,0,50,25,50,0,127,25,50,25,25,0,0,25,25,25,0,25,25,0,25,0,0,0,25,0,0,0,50\n0,0,0,12,0,0,0,0,0,0,0,12,0,12,25,38,63,101,127,88,38,0,12,12,25,25,12,0,0,25,0,0,0,0,0,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,31,127,63,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,42,84,127,84,0,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,23,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,0,111,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,127,84,21,105,105,105,0\n30,96,127,35,60,45,40,55,10,71,91,71,10,25,40,20,25,45,0,15,0,5,0,0,10,15,0,0,0,15,0,0,5,10,10,10,0\n127,119,39,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n117,97,68,97,39,127,48,58,58,48,48,29,29,9,9,0,29,19,9,19,19,29,0,0,19,19,29,0,0,9,19,39,0,9,19,0,39\n58,127,107,29,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,63,63,0,0,127,0,0,63,0,0,0,0,127,127,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,63,0,0,0,63,0,63,0,0\n0,0,63,0,0,63,63,0,127,63,63,63,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0,0,0,63,0,63,0,63\n0,21,21,0,63,42,42,21,0,127,21,42,21,63,42,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,127,0,0,127,127,0,0,0,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,21,42,105,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,0,0,0,0,127,0,0,0\n0,0,0,0,0,0,0,0,0,1,0,1,2,8,18,30,55,85,127\n0,0,0,0,0,0,0,0,0,0,0,0,7,7,3,26,74,67,127,93,89,59,63,48,59,85,59,26,11,22,3,11,18,11,33,14,7\n127,25,15,19,19,3,6,9,19,9,6,3,12,9,3,6,6,19,19\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,28,0,0,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,0,0,0,63,127,63,0,63,127,0,63,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,127,84,0,84,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,63,31,127,95,63,63,31,0,63,31,0,31,0,95,95,95,31,0,0,0,31,0,63,31,0,0,31,31,31,0,0,0,0,0,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25,25,76,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,0,7,14,127,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,15,0,63,31,0,0,31,0,0,31,31,47,47,63,0,127,0,0,0,47,0,0,15,0,15,15,31,31,0,15,31,47,31,0,31,31\n0,0,0,0,0,0,63,0,127,0,127,63,127,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,63,0,0,63,0,0,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0\n127,39,11,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,71,103\n7,19,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,7,19,78,127\n127,63,42,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,42\n127,55,15,15,0,39,0,15,55,0,39,7,7,7,15,39,7,31,7,0,7,0,0,7,15,7,7,31,15,31,23,15,0,31,31,55,95\n42,0,0,0,0,0,0,0,0,0,42,42,42,0,127,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,42,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0\n0,0,0,0,0,63,0,0,0,0,63,0,0,63,63,0,0,63,127,63,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0\n0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,84,0,127,42,0,0,0,0\n0,0,0,0,0,0,0,42,42,0,0,0,0,84,0,0,0,127,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,63,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,84,84,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,42,84,84,84,127\n63,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,15,0,0,15,15,0,0,0,0,0,0,0,0,0,15,0,63,63,127\n0,0,0,0,0,0,63,0,0,0,0,0,31,95,31,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,63,0,31,0,127,63\n0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,74,127,127,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,42,42,127,127,0,0,0,0,0,0,0,0,0,0\n127,105,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,21,63,21,42,21,105,42,21,84,127,63,105,42,42,0,42,21,0,0,0,21,21,0,21,21,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,127,108,72,90,18,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,5,40,34,5,23,17,0,5,0,0,0,0,0,0,0,0,0,0,11,11,11,5,34,75,127\n0,0,0,39,0,0,7,15,15,47,111,127,87,39,23,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,9,0,107,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,19,0,127,58,0\n0,0,0,0,0,0,0,4,4,39,29,58,97,127,102,68,68,19,4,9,0,0,0,0,0,0,0,0,0,9,4,14,19,19,53,92,68\n0,0,0,0,0,0,0,0,0,0,21,21,84,42,42,21,42,127,63,21,0,0,21,0,0,0,0,0,21,21,0,0,21,21,21,0,0\n0,0,0,0,0,0,0,0,7,14,14,35,28,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,49,127\n0,0,0,0,0,0,25,0,0,0,25,127,25,50,76,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101\n0,0,25,0,0,25,25,127,25,25,0,50,127,50,0,25,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,31,63,31,63,0,63,31,127,95,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n36,72,36,72,127,18,72,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,1,0,0,0,0,0,2,1,2,8,15,27,60,127,64,7,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,2\n0,63,0,63,0,0,0,63,0,63,127,63,0,0,127,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,11,80,0,57,34,69,11,69,0,23,23,23,0,0,0,0,0,0,0,0,0,23,23,57,23,34,127,92\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,0,127,42,84,84,42,0,0,42,84,0\n127,127,84,63,21,84,105,21,0,42,0,0,0,0,0,0,0,0,0\n0,0,25,0,0,0,25,50,25,25,127,76,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,50,0,50,0,76,25,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,63,0,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,0,63,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,31,0,31,0,0,31,0,127,31,0,0,63,31,0\n0,0,42,42,0,127,0,0,42,127,42,84,0,42,84,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,31,95,31,63,31,31,0,0,0,0,0,0,31,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,50,0,25,76,127,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,42,21,105,127,127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,127,63\n127,105,116,95,116,95,116,105,10,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,99,99,36,99,72,117,99,36,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,42,63,63,21,42,63,0,0,0,0,21,0,0,0,21,0,0,0,0,0,0,84,42,63,42,105,127,63,42,0,0,21,0,0,0,0\n84,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,42,63,0,127,0,42,0,0,0,21,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,127,0,0,0,0,31,31,0,0,0,0,0,0,0\n63,127,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,7,15,50,96,127,55,23,8,7,3,2,0,0,0,0,0,0,0,0,0,0,2,1,0,1,15,34,68,100\n0,0,0,0,0,0,0,0,0,22,29,37,127,29,52,29,29,44,7,0,7,0,0,0,0,0,0,0,0,7,0,7,22,22,67,52,119\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,11,29,47,127\n0,0,0,0,1,0,0,0,1,4,33,127,68,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,11,0,0,11,34,80,103,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127,115\n127,109,86,60,39,34,21,11,9,4,2,1,1,0,0,0,0,0,0\n11,13,7,3,6,5,7,8,15,12,1,4,2,3,3,2,1,0,1,0,0,1,1,3,3,6,6,7,7,11,4,8,7,8,24,57,127\n127,115,47,23,19,5,1,5,9,5,27,29,37,41,47,73,57,67,79\n127,110,98,91,79,77,49,47,37,11,4,2,2,2,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,31,0,95,0,63,95,31,95,31,0,31,0,127,31,63,0,31,95,127,63,63,0,31,31,63,31,127,0\n127,56,13,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n105,127,109,68,53,20,15,7,2,3,2,2,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,8,15,41,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,10,10,21,0,84,95,105,95,127\n51,62,49,70,91,118,127,91,75,40,18,9,2,1,1,0,0,0,0\n0,6,9,2,6,9,4,13,50,34,55,53,55,39,46,32,32,16,4,16,18,43,27,30,50,64,78,55,32,39,78,16,87,127,69,64,46\n4,2,8,4,10,8,24,6,10,34,47,43,59,71,65,63,98,100,127\n127,48,12,5,7,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,4,4,9,11,30,127\n86,29,24,9,4,11,6,0,0,2,2,13,2,0,2,6,4,2,4,0,0,0,0,0,0,4,0,0,2,15,11,4,9,38,74,77,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,15,39,31,55,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,21,84,84,127\n127,65,23,11,9,7,5,4,5,2,3,1,2,1,0,2,7,2,0,4,2,3,1,4,1,2,4,1,3,3,1,1,2,3,9,9,28\n0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,15,15,0,0,15,31,0,15,31,0,0,0,47,31,127\n127,73,52,37,14,5,3,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n56,0,127,84,98,42,70,70,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n66,40,60,60,106,127,113,13,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,46,13,4,5,5,4,3,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,63,0,0,21,0,0,0,42,63,42,42,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,84,84,21,42,21,0,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,2,0,1,5,14,22,54,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,5,7,63,114,127,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,0,13,30,36,26,30,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,10,33,72,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,6,0,12,12,24,66,111,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,40,63,96,100,100,127\n127,47,10,0,0,0,0,5,0,5,5,5,0,0,0,0,0,5,15,15,10,0,5,0,0,0,0,0,0,0,5,0,0,0,0,0,0\n127,63,9,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,27,18,27,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,21,47,68,121,127\n0,6,13,0,6,6,6,13,60,26,20,0,6,13,6,0,0,0,6,0,6,6,13,6,20,6,13,33,73,100,93,113,127,86,73,13,53\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,50,50,101,76,50,127,25,25,0\n110,76,63,42,12,16,12,16,12,25,16,33,16,21,33,29,42,33,63,127,29,59,29,33,50,38,38,12,42,33,12,21,33,8,4,0,0\n127,31,31,31,31,0,0,0,0,0,0,0,0,31,31,0,0,31,127,0,95,63,63,0,31,31,63,0,63,31,31,31,0,0,0,0,0\n80,121,127,57,57,28,11,11,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,15,63,79,63,47,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,8,6,4,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,76,76,50,25,50,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,40,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,23,39,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,4,3,8,24,69,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,19,29,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,31,31,0,0,0,95,31,127,31,63,0,0,0,0\n0,63,0,21,42,0,21,0,21,0,0,21,21,42,42,105,21,0,127,84,105,42,0,21,21,42,0,0,0,21,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,10,43,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,51,80,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,4,9,13,36,127\n7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,24,21,52,127\n95,127,79,63,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,47,47,31\n118,127,50,8,59,67,25,33,16,8,8,0,33,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,16,8,33,16,67,101,93,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,25,0,25,0,101,127,127,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,20,69,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,25,79,127\n0,28,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,56,42,56,98,127,0,14,56\n127,38,114,12,38,25,38,0,50,12,12,25,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,12,0,0,0,0,12,0,0,0,0\n58,68,48,58,58,39,29,39,58,58,9,58,0,39,39,29,0,9,0,0,0,9,0,19,39,68,117,127,48,58,58,39,9,29,29,19,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,0,24,63,127\n50,61,43,58,18,21,14,3,0,0,3,7,3,3,3,0,3,7,3,10,10,39,43,54,79,72,112,108,123,108,127,112,90,119,65,83,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,12,0,0,38,50,50,50,127,25,0,0,12,0,0,12,0\n0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,11,11,16,38,33,22,99,33,82,66,127,99\n127,53,41,13,7,7,2,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,79,57,31,6,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,6\n127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,8,2,4,20,33,53,73,100,86,127,71,84,55,71,51,71,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,11,0,57,46,92,127,103,103,69,11,23,0,11,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,108,127,36,18,0,0,0,18,54,18,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,76,127,50,101,0,0,0,0\n12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,12,0,50,12,0,0,50,0,0,0,12,12,0,12,0,0,0,0,25,12,0,12,0,12,12,12,0,12,0,12,0,0,25,12,63,12,0,25,38,38,101,63,114,127,76,63\n31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,31,15,15,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,15,15,0,15,15,15,0,15,15,0,31,31,15,47,0,95,15,31,127,15,47,0,15,95,79,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,127,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,18,108,72,36,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,0,127,31,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n112,112,52,67,29,22,7,7,7,14,7,14,14,22,14,0,0,14,52,7,7,0,0,14,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,59,127\n127,90,27,54,9,0,9,0,36,0,18,18,0,9,18,9,0,18,36,45,9,18,9,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,99,54\n0,0,0,42,42,0,42,0,0,127,42,42,0,0,0,42,0,0,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,16,9,9,29,16,39,45,29,16,26,29,16,32,9,6,35,22,58,87,71,97,110,127,107,91,55,6,9,3,9,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,8,2,25,16,8,16,14,31,28,8,16,16,19,14,8,22,16,31,87,73,76,127,98,98,53,33,22,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0,0,31,127,31,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,0,0,42,0,0,127,42,84,84,0,0,0,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,42,42,56,0,0,0,14,0,0,28,28,14,28,14,14,56,56,127,98,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,28,14,0,0,0,0,14,0,0,42,14,28,70,84,42,14,127,14,14,0,28,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,9,39,9,0,0,0,0,0,0,0,0,0,39,87,127,29,9,19,29,78,87,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,76,127,25,50,25,0,0,0,0,0,0,0,0,25,25,76,101,25,101,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,25,0,25,50,76,0,0,0,0,0,127,50,25,101,101,76,101,50,25,0,25,0,50,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,127,50,0,0,50,0,0,0,127,50,127,76,25,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,42,127,42,0,0,0,42,42,0,0,0,0,42,0,0,0,127,127,127,84,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,63,0,31,0,31,0,63,31,0,0,95,95,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,21,10,21,42,0,74,31,21,31,63,10,63,52,31,31,63,31,105,31,63,95,105,127,116\n50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,25,0,12,50,25,50,12,25,63,50,63,63,101,50,63,50,76,38,50,76,114,114,127,101\n0,0,42,84,127,127,42,42,42,0,0,0,0,0,84,0,0,0,42,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,21,21,0,0,42,42,63,10,21,21,10,52,63,127,116,74,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,54,18,9,54,18,45,27,18,54,18,18,18,36,27,72,127,27,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,31,31,47,47,0,15,15,0,0,15,0,0,15,0,31,79,79,127,111,63,0,31,15\n0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,76,0,0,0,0,50,0,25,0,50,25,25,127,50,101,50,25,25\n127,107,94,48,47,22,18,3,0,2,0,0,0,0,0,0,0,0,0\n84,127,42,28,0,0,70,84,42,14,28,0,14,0,0,0,0,0,0,0,14,0,0,0,0,14,28,42,0,42,0,14,0,0,0,0,28\n0,0,0,0,0,0,0,25,0,0,25,25,76,127,50,25,50,25,0\n110,58,45,30,36,51,85,111,127,100,76,36,30,20,8,6,6,3,3\n0,0,0,0,0,0,0,21,0,42,42,21,42,21,42,0,0,0,42,0,21,63,63,42,21,127,21,42,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,18,0,0,18,0,0,18,18,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,25,25,25,0\n127,31,3,0,0,9,9,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,36,8,13,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,21,127,63\n127,127,87,47,28,8,0,1,0,0,0,0,0,0,0,0,0,0,0\n127,36,0,63,18,0,27,45,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,0,45,27,27,9,0,0,9,0\n0,25,0,0,0,0,0,76,88,76,101,76,127,114,0,25,63,88,101\n114,122,103,120,122,105,127,88,55,29,16,6,2,0,0,0,0,0,0\n127,127,0,0,0,0,95,31,95,31,31,63,0,0,63,0,0,63,0,0,0,0,0,0,0,63,127,0,0,0,31,0,31,0,0,0,0\n127,52,10,3,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,54,9,0,9,9,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,18,0,36,18\n127,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,11,27,127\n24,43,69,113,113,104,115,115,127,121,114,100,61,68,52,30,13,13,8,8,3,2,2,8,9,5,1,2,5,4,5,6,2,9,15,18\n14,38,51,70,71,86,90,108,104,127,115,88,53,43,36,18,17,9,3,5,2,2,0,8,12,1,0,1,0,4,2,6,6,5,7,16\n0,20,45,121,127,116,96,96,45,86,50,55,25,25,20,5,10,20,0,10,35,15,5,5,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,5,10,15,0,5,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n7,11,44,97,127,119,82,37,63,22,44,26,18,26,29,11,7,3,0,3,0,7,3,3,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,7,11,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,47,47,127,47,47,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,15,7,7,23,15,127,39,23,15,0,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n3,3,10,14,54,72,94,127,116,65,10,14,7,0,10,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\n2,5,5,26,29,59,70,127,82,64,29,11,0,0,0,2,0,0,0,8,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,25,50,101,76,76,127,50,0,25,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,18,36,27,63,127,45,9,0,0,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,25,0,0,76,76,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,31,0,31,127,127,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,36,0,18,0,0,18,0,18,0,0,0,18,18,0,0,0,0,72,127,36,54,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,0,21,0,0,0,0,0,0,21,21,0,0,0,0,21,0,0,63,84,0,42,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n5,17,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,11,17,17,28,5,40,51,80,51,51,51,40,17,23,17,23,28,127,63,51,63,40,23,28\n7,22,14,14,22,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,22,29,59,89,112,52,44,52,59,59,29,14,14,7,104,127,82,59,119,59,44,14\n14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,28,56,127,56,42,28,0,0,0,0,42,14,42,84,98,28,14,28,84,14\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,127,42,84,0,84,42,0,84,42,0,84,84,42,84,84,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,0,12,0,88,101,127,101,12,12,25,0,12,12,12,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,42,28,14,98,112,127,56,14,14,14,42,28,0,28,28,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,28,14,0,0,14,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,31,31,0,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n27,45,27,45,36,36,63,72,72,99,127,45,54,72,45,9,36,18,27,0,18,54,18,18,9,9,9,18,0,18,27,27,45,18,18,18\n48,29,48,48,58,68,97,78,97,107,78,39,127,39,48,19,9,0,9,9,19,0,9,9,0,9,9,29,19,39,9,29,48,19,19,9\n0,0,95,127,31,127,0,31,31,63,0,31,31,63,31,63,0,0,31,63,127,63,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,0,31,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,76,25,127,50,101,50,25,25,25,50,25,25,0,0,76,50,0,0,50,101,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\n0,0,0,0,0,0,31,31,0,31,0,63,127,31,0,31,95,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,42,42,0,0,84,127,0,0,42,0,0,42,42,42,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,63,127,0,0,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,92,34,80,127,92,80,103,23,0,11,23,11,0,11,11,0,0,0,0,80,11,23,46,23,0,11,0,0,0,0,0,0,0,0,0,0,11,11,0,11,0,23,69,11,34,46,92,46,92,57,23,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n12,38,76,25,38,12,50,88,63,12,12,38,0,0,12,0,0,0,12,12,12,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,12,0,0,12,38,127,88,101,63,50,50,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12\n0,0,0,0,0,0,0,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,84,0,42,42,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,0,63,127,63,31,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,31,15,31,127,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,14,56,127,0,0,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,127,0\n0,0,0,31,63,63,63,31,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,0,84,42,127,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42\n0,21,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,84,105,127,63,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,105,0\n50,50,0,0,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,76,127,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,25,0,25,0\n21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42\n0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,127,63,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,31,0,0,31,0,31,0,0,127,95,0,31,0,0,0,0,0,0,31,0,0,31,0\n105,21,127,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,63\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,42,0,42,84,42,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,36,127,72,72,18,18,36,54,36,36,108,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,10,42,127,21,31,63,10,42,42,0,42,10,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,57,127,57,23,0,23,34,0,0,0,23,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,52,74,42,10,31,42,84,42,63,21,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,84,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\n0,127,31,95,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,0,0,0,63,0,0,63,0,31,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,63,31,95,95,31,127,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,127,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,0,95,95,95,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0\n0,7,23,15,39,39,31,31,23,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,23,63,71,127,39,7,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,25,25,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,0,0,0,21,63,21,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,0,50,25,127,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,14,0,84,127,14,0,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,101,0,0,0,0,0,0,0,0,0,0,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,99,9,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,88,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,12,101,127,0,12,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,10,10,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,105,127,95,21,10,0,10,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,42,52,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,21,127,105,21,0,10,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,2,3,16,4,3,0,0,0,0,0,1,0,0,0,0,0,1,3,0,2,2,7,16,45,127,85,7,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,5,20,11,13,3,7,3,1,0,3,0,0,1,0,0,0,3,0,0,1,7,17,34,70,127,73,53,9,15,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,0,8,0,0,0,0,8,0,16,33,110,127,110,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,127,47,127,63,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,25,0,0,0,0,25,0,0,76,0,25,0,0,25,50,0,25,50,127,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,18,9,0,0,0,0,0,9,9,0,0,0,9,0,0,0,18,18,108,127,63,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,25,0,0,0,0,0,0,101,127,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,49,35,127,14,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,63,127,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,63,95,95,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,21,58,127,47,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,28,28,0,0,14,14,0,0,0,0,0,0,0,0,0,14,0,0,0,14,14,14,70,127,56,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,18,36,54,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,63,63,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n25,0,25,0,25,0,50,0,0,101,127,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,25,0,0,0,25,0,25\n18,0,0,0,0,36,0,0,0,36,72,54,72,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,36,127,108,36,18,0,36,0,36,36,36,0,0\n42,21,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,127,84,42,42,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,50,0,101,0,127,127,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,0,0,0,0,0,0,31,31,127,127,127,127,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,7,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,49,105,127,112,35,7,0,7,0,0,0,0,0\n0,0,0,0,9,0,0,0,0,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,117,108,18,9,9,9,9,9,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,21,7,21,7,0,21,7,0,0,0,0,7,0,0,7,7,42,84,127,105,42,7,7,0,7,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,24,6,6,0,6,6,6,6,12,6,6,18,0,0,0,0,0,0,30,12,84,127,114,42,12,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,15,15,0,15,0,0,0,0,31,15,0,0,0,0,15,15,63,47,127,79,15,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,1,1,1,2,7,14,33,127,29,11,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,5,5,4,9,18,16,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,3,19,92,127,115,50,61,7,0,3,0,3,0,3,0,3,7,0,3,3,7,11,11,23,42,65,38,11,15,3,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,95,63,127,63,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,6,13,26,26,53,127,20,6,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,46,0,92,103,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,31,127,31,31,0,31,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,25,0,25,0,25,25,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,50,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,18,18,18,127,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,36,54,72,36,36,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,76,25,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,42,0,127,84,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,12,12,38,38,0,0,0,0,0,0,0,0,12,38,63,12,127,12,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,31,127,47,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,12,12,25,63,127,101,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,10,0,10,63,127,116,63,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0\n0,2,2,0,0,0,0,0,2,6,37,100,122,124,80,37,24,0,4,0,0,0,0,0,0,0,0,2,0,8,4,11,11,35,91,102,127,84,17,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,22,35,44,13,6,2,2,2,0,0,0,0\n0,0,0,0,0,0,0,0,4,0,24,60,127,112,42,12,14,4,6,6,8,2,4,0,0,0,0,4,2,2,4,8,16,42,60,124,120,94,34,18,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,32,30,20,22,10,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,69,127,57,34,46,0,23,11,11,0,0,11,11,0,11,11,11,0,34,11,0,11,11,34,57,57,57,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,15,0,15,79,111,31,15,31,63,95,79,31,47,47,47,31,31,31,31,15,31,0,0,31,47,31,79,127,127,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,5,26,47,121,127,37,10,0,0,0,5,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,6,26,53,93,127,40,26,20,20,20,26,6,6,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,72,127,0,36,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,21,63,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,127,84,0,0,0,0,0,0,21,63,0,0,0,0,0,0,0,0,0,42,0,0,84,84,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,10,15,2,2,0,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,85,127,38,12,0,7,5,2,0,0,2,0,0,0,0,0,0,0,0,0,5,0,2,5,5,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,76,76,127,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,7,23,63,127,111,95,103,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,71,87,7,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,7,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,20,73,127,86,53,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,20,80,60,20,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,26,13,6,6,0,6,0,0,0,0,0,0\n118,127,80,42,16,0,8,0,0,4,0,0,0,0,4,0,0,0,0,0,4,0,0,8,12,12,16,12,12,8,12,0,4,12,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,127,127\n0,2,11,5,19,57,127,44,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,31,63,63,31,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n19,0,9,9,9,127,127,48,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42\n0,0,0,0,0,0,127,84,0,42,84,42,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,42,127,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,4,9,9,4,18,47,103,127,89,23,23,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,4,4,4,4,9,9,27,72,127,113,54,27,13,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,31,31,95,31,95,31,63,63,95,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,31,31,31,63,63,95,127,63,31,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,0,127,0,127,0,0,42,0,127,0,42,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,10,5,0,10,20,81,127,30,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,19,0,0,12,38,101,127,69,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,1,7,2,2,5,31,58,100,127,108,55,24,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0,5,6,15,26,64,78\n0,0,0,0,0,0,0,36,36,90,90,0,54,54,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,3,9,62,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,14,127\n0,1,3,5,7,9,1,1,13,57,81,127,115,19,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,3,0,3,0,10,0,10,3,3,32,54,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,14,7,0,7,14,42,127,91,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,56\n0,0,0,0,0,0,0,12,12,12,0,127,114,127,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,0\n0,0,0,0,14,0,0,0,0,70,28,112,127,98,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,70,28,42,42,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,14,0,0,0,0,0,0,0,0\n0,0,12,0,0,0,12,12,0,12,50,88,127,38,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,38,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,38,25,12,12,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,7,7,7,84,84,127,49,21,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n3,0,0,0,0,0,0,0,0,3,127,63,75,11,7,7,3,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,31,127,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,58,0,0,0,0,0,9,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,11,0,0,0,0,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,3,0,5,8,26,93,127,40,16,6,4,5,5,0,2,1,1,1,0,1,3,0,2,6,8,12,31,98,84,19,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,3,1,1,5,25,78,127,52,18,11,3,1,0,1,3,1,0,0,0,0,2,3,3,6,3,12,46,84,73,20,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,127,21,0,0,21,21,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,52,10,52,74,127,21,31,31,10,21,10,0,10,10,10,21,0,0,10,0,0,10,31,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,9,9,29,48,29,39,127,87,9,9,0,29,0,0,0,0,0,0,0,0,9,0,0,0,0,0,19,19,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,7,35,98,127,84,7,7,7,0,0,0,0,0,7,7,7,7,28,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,5,23,75,127,63,23,0,0,17,0,0,0,5,0,0,0,5,0,0,17,5,17,17,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,56,127,112,28,42,0,0,0,0,0,0,28,0,0,14,0,0,0,0,0,0,0,14,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,7,0,0,0,14,127,7,7,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,7,22,7,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,22,71,35,17,17,12,5,5,12,12,10,0,0,0,0,2,0,0,5,2,15,45,33,88,127,43,7,0,0,5,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,4,28,45,37,26,8,4,4,10,8,15,10,0,0,0,4,0,0,2,0,13,30,78,100,127,28,6,2,0,2,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,25,127,76,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,0,0,0,0,0,0,0,0,0,15,31,0,15,0,0,0,0,111,111,127,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,0,31,127,95,63,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,9,29,29,19,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,78,78,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,127,29,48,19,29,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,101,88,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,38,101,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,12,127,12,12,0,12,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,95,63,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,54,36,18,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,0,0,18,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,25,101,76,101,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,50,0,0,0,0,25,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,0,26,86,127,45,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,4,0,4,7,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,2,2,19,127,104,37,0,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,63,63,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,63,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,0,0,42,127,63,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,42,42,42,0,0,0,0,0,0,0,0,0\n50,0,50,0,25,50,0,25,127,25,101,127,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,25,25,101,101\n0,0,25,0,0,0,0,0,0,25,50,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50\n0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,9,54,36,81,18,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,42,42,127,84,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,25,76,25,0,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,3,29,108,101,23,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,67,127\n0,0,0,0,0,0,0,0,0,0,0,7,7,37,29,74,127,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,0\n0,0,0,0,0,0,0,0,0,0,2,4,7,2,7,7,9,11,4,0,7,7,0,0,0,0,0,0,0,0,0,0,14,21,44,87,127\n63,31,0,31,0,95,31,127,31,63,0,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,29,0,19,58,78,127,117\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,10,0,10,42,0,42,42,127\n0,47,15,0,0,31,0,31,95,127,31,47,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,14,28,127,14,0,28,0,28,56,0,14,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n11,5,7,4,7,26,39,73,72,127,69,94,70,26,11,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n20,5,5,10,15,18,23,12,41,51,127,44,12,7,0,0,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,14,31,31,43,85,46,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,53,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,31,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127\n0,0,0,0,0,0,0,0,5,10,5,26,47,26,42,31,21,0,5,0,5,0,0,0,0,0,0,0,0,0,5,5,0,21,42,37,127\n0,0,0,0,0,0,0,0,9,36,36,45,63,63,63,45,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,54,36,63,127\n36,0,0,0,0,0,0,18,127,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,14,14,0,0,0,0,14,0,0,28,42,56,127,98,84,42,14,14,14,0,0,0,0,0,0,0,14,0,0,28,14,14,14,98,127,84\n0,0,0,0,0,0,21,0,63,0,42,21,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,3,5,2,3,4,27,27,97,127,84,27,3,1,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n14,0,7,0,0,14,29,37,127,104,82,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,95,63,31,31,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,31,31,63,0,31,0,0,0,0\n0,0,0,0,50,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,0,101,25,0,0,25,25,25,25,0\n18,0,0,0,0,0,0,0,18,72,36,18,127,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,108,90,36,90,36,18,18,0,0,18,18\n0,0,0,0,0,0,0,25,12,25,0,25,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,63,12,76,127,63,38,38,0,0,0,0,0\n0,0,0,0,18,0,0,0,18,72,72,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,54,18,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,36,54,18,36,18,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,25,0,50,50,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,0,0,0,127,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,76,0,0,0,0,0,0\n84,127,98,14,42,42,70,14,28,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,18,0,0,18,18,127,108,0,54,18,36,54,36,36,72\n0,26,5,68,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,84,28,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,14,56,0,127,112\n127,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50\n0,42,0,84,127,0,0,0,84,42,42,0,0,0,42,84,84,42,42,42,42,42,84,0,84,0,84,0,0,0,0,42,0,42,42,84,0\n108,18,18,54,36,36,54,36,36,18,0,36,18,90,36,36,18,127,90,36,90,18,108,18,36,18,18,36,54,0,90,18,36,72,36,18,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,0,0,127,63,127,0,0,0,0,127\n0,31,127,0,0,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,0,15,15,0,63,63,127,31,0,15,15,0,31,0,0,31,15,15,0,0,0,0,0,15,0,0,0,31,0,31,0,15,0,95,0\n84,0,42,42,42,0,0,127,0,0,0,0,0,42,0,0,0,42,0,84,0,0,0,0,42,42,0,42,0,84,0,84,84,0,42,0,84\n0,0,0,0,0,0,0,0,0,0,63,0,127,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,12,57,95,12,6,19,0,0,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,6,127,114\n0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,84,0,0,0,127,42,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84\n31,127,0,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,31,31,31\n63,63,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,63,63,0,127,0,0,63,0,0,0,63,0,0,0,0,0,0,0\n0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,0,0,63,0,127,63,63,63,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0\n0,0,0,0,0,21,21,21,42,42,42,84,105,63,0,63,42,105,84,127,63,63,21,105,84,21,0,42,84,0,21,0,21,0,0,21\n127,57,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,9,38\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,95,127,95,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,127,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,31,95,0,31,0,0,0,63,0,0,0,0,31,63,0,31,31,0,31,0,0,0,0,0,0,0,0,127,95,0,0,0,0,0\n127,42,25,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,55,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4\n127,68,26,79,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,52,52\n127,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,52,74,95,68,10,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,10\n0,0,15,47,79,63,63,31,15,15,0,0,0,0,0,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,15,63,63,47,127\n127,12,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n36,90,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0,127,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,127,0,63,63,63,0,0,0,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0\n23,127,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,117,127,36,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,79,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,76,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,25,50,25,25,0,0,0,0,0,0,0,0,0\n127,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,18,0,18,36,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,36,9,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,11,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,34,127,11,0,0,0,0,0,0,0,0,0,0\n127,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,127,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,127,21,0,21,0,0,0,0,0,0,0,0,0,0\n127,34,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,114,31,12,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,51,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,15,0,0,0,0,0,0,0,0,0,15,0,0,15,63,63,95,127,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,63,63,31,31,127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,127,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,127,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,50,50,127,0,0,0,0,0,0,0,0,0\n127,56,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,81,36,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,0,25,12,38,12,0,0,12,0,12,12,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,127,38,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,14,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,63,31,31,127,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,127,18,18,36,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0\n69,92,127,46,115,34,11,0,11,23,11,0,34,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,11,11,23,80\n77,98,77,127,105,35,35,14,14,21,28,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,49,0\n127,76,101,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25\n0,101,127,127,50,127,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0\n46,23,80,103,69,34,57,11,0,11,11,23,0,0,0,0,11,0,0,0,0,11,0,0,0,0,0,11,11,11,0,69,23,80,127,115\n78,58,117,58,78,39,9,29,39,39,0,39,9,29,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,19,39,78,68,127,97\n127,42,127,42,0,0,127,42,127,0,42,0,42,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42\n46,127,46,69,34,11,34,0,57,0,0,11,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,23,11,23,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,46\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,42,127,42,42,0,0,0,0,0,0,0,0,84,0,84,127,84,0,42\n31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,95,63,0,0,0,0,0,0,0,0,0,0,63,31,127,63,0,0\n0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,42,96,127,66,36,6,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,7,77,127,112,70,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,23,39,47,127,71,23,23,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,63,72,127,72,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,18,36,18,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0\n18,27,9,0,9,18,27,108,72,81,9,18,9,9,18,54,117,72,18,36,9,0,18,0,0,9,0,0,9,27,9,45,127,63,72,36,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,31,95,31,63,31,31,0,31,31,0,31,63,127,127,31,63\n127,0,63,0,63,63,127,0,63,0,0,0,63,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,84,0,42,0,0,42,0,0,0,42,42,0,127,127,127,0,0,0,84,0,0,0,84,0,0,0,0,0,0,0,0,0,42,0,0\n0,31,63,0,0,31,0,0,0,0,0,63,127,31,31,31,63,0,0,0,0,31,31,0,0,0,0,0,0,0,31,63,63,31,0,31,0\n63,6,6,12,31,25,19,63,25,50,101,88,101,127,82,69,69,44,57,38,19,12,38,6,12,12,31,25,19,38,38,0,44,44,76,107,25\n56,14,28,0,0,42,42,42,42,42,28,0,84,28,70,70,84,56,28,0,56,42,14,14,0,0,28,42,56,84,56,28,70,84,127,42,112\n0,0,0,0,0,0,0,0,0,0,0,1,2,6,5,10,15,19,12,8,7,9,9,6,9,8,14,14,22,23,22,32,52,68,89,94,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,9,0,9,27,36,63,127,63,81,117,117,108,108\n0,21,21,0,0,0,21,63,105,0,21,21,63,21,127,63,21,21,0,21,21,21,21,0,63,21,21,0,0,21,0,63,63,42,42,63,42\n0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,0,0,0,21,0,21,63,21,21,0,21,0,42,21,0,21,63,63,105,127,105,127\n0,0,0,0,0,0,0,0,0,9,4,0,9,13,9,9,9,4,9,0,9,0,9,18,18,4,9,9,13,22,27,95,45,104,108,72,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,63,42,0,21,127\n127,0,0,0,63,63,0,127,0,0,0,63,0,63,63,0,0,0,0,127,0,0,63,0,0,0,127,63,0,0,63,0,63,0,63,63,0\n0,111,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,127,31,15,0,0,15,0,0,0,0,0,0\n0,3,3,0,0,0,0,23,7,47,31,127,103,119,99,23,11,19,3,0,0,3,0,0,3,0,0,0,7,3,11,11,31,23,95,103,55\n0,0,0,0,0,0,36,54,0,72,54,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0\n0,0,0,0,4,0,24,14,29,48,48,127,63,43,29,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0\n0,0,0,0,14,0,0,14,0,70,42,112,84,127,56,14,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,28,0\n0,0,0,0,0,36,0,18,0,72,0,127,72,18,36,0,0,0,0,0,0,0,36,0,0,0,0,18,36,0,0,0,18,18,18,72,36\n0,0,0,0,0,0,0,0,25,0,0,0,50,127,25,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0\n0,0,0,0,0,12,0,0,0,0,0,25,25,0,25,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,50,0,127\n0,42,42,127,0,42,0,42,0,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,11,11,23,23,34,127,11,46,23,69,23,23,0,0,23,0,11,11,0,0,0,0,23,23,0,11,0,23,57,46,115\n0,0,0,127,127,63,63,0,0,0,0,127,0,0,63,0,0,63,63,0,63,0,0,0,127,127,63,63,63,0,0,0,63,127,0,0\n0,0,0,0,0,0,0,0,0,84,127,42,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84\n0,0,21,21,0,0,0,42,21,127,127,42,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,37,127,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42\n0,0,0,0,0,0,0,0,0,42,127,42,63,63,63,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,31,95,63\n0,0,0,0,0,0,0,0,31,0,0,63,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,127\n0,0,0,0,0,0,0,0,42,0,84,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84\n0,0,0,0,0,0,0,5,5,17,40,80,127,75,51,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,40,86,46\n0,0,0,0,0,0,0,0,0,0,6,63,127,69,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,57,114\n0,0,0,0,0,0,5,0,0,0,8,41,127,60,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,24,110\n0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,127,63,21,21,21,0,0,0,0\n0,54,0,54,127,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,95,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,0,36,0,0,0,0,18,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,36,0,0,18,36,0,0,18,36,108,54,36,127,108\n0,0,0,0,0,0,0,63,0,95,95,0,0,0,0,0,0,0,0,31,31,63,31,95,31,31,31,127,0,31,0,31,31,31,0,63,0\n117,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,78\n127,63,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,31,42,84,105\n127,76,41,12,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,22,22,31\n25,0,38,0,0,12,12,0,0,0,0,12,0,0,0,0,0,25,12,0,0,0,0,0,0,0,0,12,0,0,0,12,0,25,25,38,127\n96,127,73,48,37,46,16,7,16,5,5,3,0,1,0,0,0,1,1,3,1,5,1,1,0,1,0,3,1,5,1,5,5,3,7,10,19,16,14,25,8,8,5,1,0,3,3,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,3,10,16,32,84\n127,106,106,83,93,53,10,10,6,16,20,20,3,0,0,0,0,0,3,3,3,0,3,3,13,0,3,6,3,3,3,6,10,3,13,13,13,26,10,20,16,6,0,3,3,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,10,6,23,66,80\n42,127,127,98,14,14,0,14,14,28,0,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,28\n63,0,127,105,84,0,21,21,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,127,127,0,127,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,84,0,21,21,0,0,0,127,42,21,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n82,104,127,112,52,59,29,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,14,0,7,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,22,52\n46,73,127,127,86,60,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,0,6\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,48,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,127,39,19,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,70,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,20,17,16,2,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,2,3,37,127,127,28,3,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,39,127,79,15,47,23,15,0,0,0,0,0,0,0,0,7,0,7,0,0,0,7,23,71,87,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,84,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,25,101,76,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,90,90,72,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,10,31,105,127,31,52,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,31,21,0\n0,0,0,0,0,0,72,84,0,6,6,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,14,0,0,42,14,84,42,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,0\n0,0,0,0,0,0,0,0,0,0,8,84,127,62,11,15,6,2,4,15,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,33,20,0,13,127,40,33,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,9,36,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,36,27,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,9,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127\n109,127,75,51,28,5,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,11,23,28,57,69,109,40,28,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,0,5,0,28,63,86\n100,106,53,40,26,33,26,13,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,6,13,13,13,26,46,20,33,40,6,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,80,127\n0,21,84,63,42,63,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,127,63,63,42,0,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,11,23,23,46,69,127,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,34,0,11,23,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,15,15,0,0,15,31,127,31,63,47,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127\n0,0,0,0,0,0,50,101,127,127,127,50,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,25,0,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,31,111,15,15,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,127,63,127,0,127,0,0,0,63,63,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,0,1,1,1,1,0,0,3,5,15,23,46,83,127\n0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,0,0,17,28,83,92,127\n0,2,0,3,2,0,0,0,1,3,2,4,5,5,4,6,7,5,16,6,7,6,4,9,8,10,17,5,15,11,13,25,37,42,45,91,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,0,127,63,63,63,0,63,0\n0,0,0,0,31,31,0,31,31,0,0,0,0,0,0,31,0,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,95,31,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,127,63,63,0,0,0,0,0,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,0,0,84,0,42,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,84,0,0\n0,0,0,0,0,0,0,0,127,79,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,18,36,72,127,72,18,90,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,84,127,127,21,127,0,0,0\n0,0,0,0,0,18,36,18,18,127,0,0,0,0,0,36,72,54,18,18,18,0,0,0,0,0,0,0,0,0,0,18,36,18,72,36,72\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,8,17,48,74,122,127,74,26,8,52,13,26,17,13,13,21,0,8,8,4,8,0,13,26,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,63,95,15,127,63,111,95,127,95,15,15,0,15,15,0,0,0,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,18,0,36,127,72,36,72,36,54,0,18,0,18,18,18,18,36,54,18,0,54,54,0,54,54,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,39,87,63,79,111,127,111,87,103,39,31,15,0,15,7,15,7,23,7,31,31\n0,0,0,0,0,0,0,0,0,1,0,0,18,32,123,127,65,36,13,8,6,9,1,3,1,0,3,1,1,3,4,1,4,8,11,1,0\n0,0,0,0,0,0,0,0,0,0,12,51,72,117,127,99,66,45,30,12,24,15,6,3,3,15,12,12,9,6,3,9,9,0,27,6,6\n0,0,0,0,0,0,0,0,88,25,0,0,25,101,0,127,25,12,12,0,0,0,0,0,0,0,0,0,0,12,0,38,12,50,76,50,76\n0,0,0,0,0,0,0,0,35,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,42,0,0,0,0,21,127,42,42,21,63,21,0,0,42,0,0,84,0,0,0,0,0,0,0,21,0,0,21,42,105,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,50,76,0\n84,63,84,21,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,127,84,127,127,105,63,21,21,0,0,0,0,0,0,0\n0,2,2,0,2,2,9,18,23,32,37,127,89,101,39,25,21,16,11,2,0,0,0,0,0,0,0,0,2,2,9,14,18,28,39,103,98\n14,14,43,14,9,29,29,43,58,63,127,92,78,48,14,48,9,4,0,0,9,0,0,0,0,0,0,4,0,4,4,0,14,29,43,48,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,39,34,48,53,68,112,73,53,102,78,34\n18,14,26,3,7,22,33,48,52,74,74,59,104,26,7,26,11,0,7,0,0,0,0,0,0,0,0,3,0,0,7,0,14,22,14,14,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,11,22,29,18,26,33,63,70,127,59,56,14\n18,0,0,36,18,0,54,108,18,36,36,127,90,54,18,36,0,18,0,18,0,0,0,0,0,0,0,0,36,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,18,72,72,72,54,127,108,54\n72,18,54,0,54,36,18,72,18,18,18,72,108,18,108,0,0,18,0,0,0,18,0,18,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,127,36,108,127,36,90,54\n0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,4,17,8,4,0,0,0,0,0,0,4,0,0,4,8,17,48,127,61,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,15,26,10,0,0,0,0,0,0,0,5,0,10,0,15,10,52,127,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,42,84,0,84,0,0,0,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,31,0,0,31,0,0,95,0,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,47,15,15,31,63,111,127,63,79,0,0,0,0,31,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,15,0,31,0,0,15,31,79,0\n0,0,0,21,10,10,52,52,127,63,95,31,0,0,0,10,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,42,10,0\n12,12,0,38,0,25,12,25,50,76,50,88,101,25,0,0,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,38,114,76,127,50,25,38,12,25,0,0,25\n14,0,0,42,0,0,0,42,70,42,84,28,84,0,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,42,14,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,14,28,56,98,98,127,84,70,28,28,28,0,0,42\n9,9,0,0,0,0,9,48,127,39,0,9,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0\n25,0,0,0,0,12,0,76,127,88,0,0,12,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0\n0,0,31,0,0,63,0,31,31,31,63,127,31,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,36,36,36,18,63,63,54,27,27,0,0,0,0,0,0,0,0,0,0,0,18,9,0,0,63,0,27,108,127\n0,0,0,0,0,0,0,0,11,11,34,127,92,57,57,11,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,11,57,80,103,46\n0,0,0,0,0,0,0,0,28,14,14,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,28\n0,0,0,0,0,0,0,0,0,15,26,42,127,116,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,58,95,74\n0,0,15,0,0,0,0,15,0,15,47,111,31,31,15,47,15,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,15,127,79,79,31\n0,0,0,0,0,0,0,0,31,0,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,95,127,95,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,0,0,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,95,127,31,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,63,63,0,0,0,0,0,0,0,0,0,0\n127,0,0,21,21,28,0,42,28,0,0,0,0,0,0,7,0,0,0\n12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,9,127\n0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,89,127,59\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,2,4,127\n127,2,0,0,0,0,0,0,0,0,8,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5\n63,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,31,79,127\n63,127,31,31,0,0,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0\n127,63,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,111,31,15,0,15,15,0,0,15,15,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,84,105,21,0,21,0,42,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,84,21,0\n0,63,31,95,95,63,95,63,31,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,127,63\n0,0,127,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,127,0,0,63,127,127,0,0,63,0\n127,127,63,31,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,0,0,0,0,0,31,127\n0,0,0,0,47,0,0,0,0,15,15,0,15,15,0,0,0,0,31,47,0,0,15,31,0,0,15,0,0,0,0,0,0,0,0,0,127\n63,0,0,31,0,0,0,63,0,0,0,127,95,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,76,76,25,127,0,50,76,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,84,63,127,42,21,21,105,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,127,31,95,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n95,95,111,47,127,15,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,39,29,78,39,87,127,58,68,97,87,78,48,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,29,19\n0,0,0,0,0,0,0,0,0,25,0,38,50,88,76,50,0,0,0,0,0,0,0,0,0,0,12,0,0,12,50,50,12,127,76,38,50\n0,0,0,0,0,0,0,0,0,0,50,127,0,76,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,76,0,50\n0,0,0,0,14,42,28,14,84,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,42,63,84,127,21,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,21,63,63,42\n0,0,0,0,0,0,0,0,0,95,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,0\n0,0,0,0,0,0,0,0,0,21,0,105,63,21,21,0,21,0,0,0,0,0,0,0,0,0,0,21,0,42,0,42,63,63,42,21,127\n2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,6,20,31,47,127\n7,3,0,0,0,0,0,0,3,0,10,10,14,0,0,0,0,3,3,0,0,0,7,3,29,39,61,127,108,105,61,39,39,36,3,7,14\n0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,63,0,0,127,0,0,31,63,0,0,0\n0,0,0,0,0,0,0,0,0,15,31,0,0,15,0,0,0,0,15,0,47,15,15,31,15,47,47,63,31,15,0,0,0,0,0,15,127\n127,19,7,19,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,127,25,76,50,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\n8,15,4,0,2,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,4,10,21,63,85,122,127\n0,127,84,21,63,63,21,0,0,0,0,21,0,21,21,21,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,25,38,38,12,12,0,0,0,12,25,0,12,0,0,0,0,0,0,0,0,0,0,0,25,38,0,25,38,38,12,50,12,12,12,127\n127,127,63,0,15,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0\n0,84,84,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,0,0,0,84,0,0,42,0,0\n63,91,39,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,83,87,55,127\n40,127,80,93,33,13,26,33,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,6,6,6,6,13\n50,50,127,25,25,50,0,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,38,63,127,76,101,76,12,38,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,25,25,25\n0,0,0,0,0,63,127,127,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,127,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n36,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,99,54,127,108\n0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,54,127,54,36,127,127,72,108\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,6,13,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,56,42,56,70,14,127,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,73,19,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0\n0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,127\n42,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,10,10,127\n63,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,63,127,63,0\n63,15,31,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,15,0,15,0,31,127\n0,0,0,4,12,33,46,55,12,16,4,8,0,12,8,0,0,0,4,8,0,0,4,0,8,0,0,0,0,0,0,0,0,0,4,0,127\n0,0,0,0,0,0,0,0,0,0,0,31,31,63,31,0,0,31,95,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63\n0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,31,0,127,63,95,63,0,31,63,31,31,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,9,0,0,18,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,127\n25,0,0,0,0,0,0,0,12,25,12,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,127,95,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,7,3,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,84,84,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,21,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,84,63,63,42,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,127,28,14,28,14,28,0,28,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,2,1,52,127,109,38,31,25,12,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,23,123,127,63,35,67,35,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,63,42,21,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,101,50,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,42,0,42,0,42,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,16,25,16,33,16,16,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,25,127,50,25,16,16,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,42,42,0,0,0,0,42,42,127,127,84,84,0,84,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,50,76,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,0,0,0,0,0,0,0,0,0,0\n0,42,0,0,0,42,42,42,42,42,0,42,0,84,84,42,42,0,42,0,0,0,0,0,0,84,127,127,0,84,84,42,0,0,0,84,42,0,0,0,42,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,0,0,0,63,0,0,63,0,127,63,63,63,63,63,127,0,0,0,0,0,0,0,127,63,0,127,0,127,0,0,0,63,127,0,127,127,127,0,63,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,63,127,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,63,76,127,50,12,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,127,69,69,23,11,34,11,23,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,54,0,0,0,18,54,127,18,36,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,127,42,84,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,31,31,31,127,95,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,63,127,31,0,0,0,31,0,31,0,63,0,0,0,31,0,0\n0,0,0,0,0,31,31,31,0,95,0,0,0,127,0,31,31,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,127,12,12,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,40,127\n0,127,84,84,84,84,0,0,42,0,42,0,0,84,84,0,42,127,84\n0,63,63,0,63,63,0,127,63,63,0,63,0,0,63,0,63,63,0\n127,25,50,12,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,9,12,12,22,92,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,0,84,0,42,84,0,0,42,127,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,47,58,37,127\n0,0,0,0,0,0,0,0,0,0,0,54,108,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,36,18,0,0,0,0,0,0,0,0,0\n50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,76,0,50,25,25,50,0,25,127,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,0,127,18,0,0,0,18,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,84,0,127,42,42,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,50,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,50,50,0,0,0,0\n0,0,0,0,0,0,31,0,0,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,25,25,0,50,25,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127,0,25,67,0,8,8,0,0,0,0,0\n0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,92,11,23,127,23,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,9,39,127,19,9,19,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,25,0,25,25,0,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,25,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,25,50,0,0,0\n31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,31,63,63,0\n127,78,44,26,3,15,5,3,0,0,0,0,0,0,0,0,0,0,0\n127,42,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,0,42,21,42\n0,0,0,0,12,0,50,63,127,38,50,50,50,76,38,25,0,12,0\n127,15,0,0,0,15,15,31,15,31,47,47,0,0,0,0,0,15,0\n0,0,0,0,0,0,0,0,42,0,42,42,0,42,0,84,0,0,0,42,42,0,0,0,42,0,0,0,0,0,0,42,0,42,0,127,0\n127,123,90,60,36,27,21,15,27,21,6,9,12,9,12,18,21,15,24\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,52,127,116,74,105,31,52,127,74,31,0,10,0,0,0,0,0,0,0\n69,127,69,115,57,11,23,11,0,23,23,57,46,69,11,46,80,23,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,0,2,1,0,1,1,0,1,4,37,127\n14,44,48,112,127,89,108,123,78,89,89,37,33,18,7,7,11,11,18,3,14,11,11,18,3,11,3,14,7,44,74,115,108,89,108,127,82\n60,127,60,66,54,36,24,18,18,42,18,6,18,0,0,0,18,0,6,6,12,0,0,6,0,0,6,6,12,6,0,6,0,0,0,6,0\n11,0,22,55,66,127,88,66,55,71,27,27,11,11,16,11,5,0,0\n0,0,21,0,0,0,0,0,0,42,21,42,21,42,0,42,0,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,63,127,63,0,0,0,0,127,0,0,63,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,14,0,0\n18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,90,36,90,90\n127,21,10,0,0,21,0,10,10,10,10,10,10,10,0,0,0,0,0\n127,77,40,27,9,13,0,0,0,4,4,0,4,0,0,0,0,0,0\n42,127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,38,12,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,3,1,9,31,127\n127,41,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,76,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n28,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,79,127\n84,127,34,9,4,2,22,47,29,19,2,7,0,0,0,0,0,0,4\n127,50,101,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,108,0,36,9,9,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,52,10,0,21,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n92,23,127,23,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,22,45,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127\n0,0,0,0,0,0,0,21,32,10,58,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,127,0,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,81,53,46,25,14,8,4,0,0,0,0,0,0,0,0,0,0,0\n28,56,98,28,42,84,70,127,70,98,28,28,14,14,14,28,0,14,28\n0,0,0,0,0,0,0,0,23,7,79,15,15,31,31,39,87,47,127\n67,67,59,71,78,127,110,114,105,69,27,23,33,14,12,8,10,6,8\n42,0,42,0,21,21,21,0,21,42,84,42,127,42,84,127,42,21,21,21,0,0,21,21,42,42,21,63,0,21,63,42,63,42,84,0,0\n0,0,0,0,0,0,0,0,0,0,21,42,0,63,42,42,42,127,0\n0,0,0,0,0,0,0,25,50,127,84,93,42,76,84,59,59,67,16\n0,0,0,0,0,3,7,19,3,0,7,7,7,11,15,84,76,127,84\n0,0,0,0,0,0,0,0,0,0,76,0,0,25,50,25,25,0,0,25,50,50,25,127,76,50,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,39,63,127,119,31,0,15,0,0,0,23,15\n127,72,26,8,13,0,4,2,2,0,2,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,83,71,51,30,24,14,3,1,2,0,0,0,0,0,0,0,0,0\n20,18,10,2,6,8,12,4,12,10,6,6,4,0,0,0,4,0,2,2,4,4,0,0,4,8,20,14,10,10,6,2,10,22,30,61,127\n72,36,0,0,18,9,0,36,0,0,0,0,18,0,18,9,18,45,127\n26,17,14,27,35,73,100,123,127,62,53,35,14,13,2,1,2,6,2\n0,0,0,0,0,0,0,0,7,91,105,63,42,70,49,56,14,21,21,42,28,42,21,14,42,21,35,21,21,0,14,28,21,70,56,49,127\n0,0,0,0,0,0,0,0,0,0,0,15,15,0,31,127,31,31,31\n127,95,41,28,6,6,6,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,14,127\n0,0,0,0,0,3,3,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,63,0,0,0,0,127,63,63,127,63,0,127,63,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0\n0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0,63,127,0,127,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,84,84,42,84,127,0,84\n25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,25,101,50,0\n116,127,111,74,42,52,52,37,26,47,47,37,58,42,47,84,68,79,52\n127,52,21,10,10,21,21,0,0,0,0,0,0,0,0,0,0,10,0,10,42,31,21,21,21,74,74,105,31,95,95,52,0,31,21,10,21\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,101,25,0,0,12,63,38,0,0,0,0,0,12,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,127,90,90,54,72,72,0,18,36,18,36,36,18,36,18,0,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,42,0,42,42,42,42,42,0\n127,63,21,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,14,42,98,28,127,127,28\n0,0,0,31,0,0,31,31,31,0,127,31,31,95,0,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,0,76,25,0,0,25,0,0,0,0\n112,127,87,88,95,90,98,73,47,26,20,17,13,14,7,9,5,4,4\n0,0,0,31,0,0,95,0,31,95,95,95,63,95,63,95,0,127,31,31,63,95,0,31,95,0,63,31,31,31,31,0,31,63,31,0,0\n36,0,0,0,0,0,0,18,0,0,0,0,54,72,127,127,36,54,36\n119,127,119,97,82,59,67,22,59,7,22,22,0,0,0,0,0,0,0\n112,98,70,42,42,127,70,70,14,14,14,14,0,84,42,28,70,84,84\n120,109,127,120,83,79,58,60,40,2,4,4,2,0,0,2,0,0,0\n0,39,48,9,39,58,68,39,68,107,19,39,9,9,9,29,19,9,9,9,9,9,29,29,78,127,87,68,68,39,68,19,9,29,19,19,0\n0,0,0,0,0,0,0,23,0,7,39,55,55,23,55,23,31,15,127\n32,49,38,44,46,59,78,93,120,127,92,74,45,46,28,20,9,13,8\n0,0,0,0,0,0,0,14,0,0,42,42,84,127,56,42,98,56,42,56,28,70,42,42,84,28,14,14,14,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,3,26,52,63,123,127,127\n127,79,79,63,47,15,15,79,63,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,0,0,0,0,0,0,0,21,0,0,127,21,84,21,21,0,0,42,0,21,0,0,21,0,21,0,21,21,0,0,0,0,0,0,0,0\n95,47,127,15,31,15,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31\n25,12,12,12,12,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,12,25,12,12,38,12,127\n21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,10,21,21,31,31,52,95,52,127,63\n42,8,16,4,4,4,4,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,21,16,29,127,59\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84\n0,0,0,0,0,0,0,0,0,95,95,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,21,21,0,42,127,0,21,0,42,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,50,50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,10,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127,16,0,0,0,0,0,0,0,0,0\n0,0,0,31,31,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,95,63,63,127,0,31,31,0,0,0\n0,84,0,0,0,0,0,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,127,42,84,42,42,42,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,127,63,0,0,63,0,127,63,0,127,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,84,127,127,127,42,84,84,84,84,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,42,0,0,42,127,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,0,0,42,42,42,0,0,84,42,127,42,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,0,127,0,84,42,0,42,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,42,42,42,42,84,42,0,0,0,42,42,42,0\n0,0,0,0,63,63,0,127,127,0,0,0,0,0,0,63,63,0,63,63,63,63,0,63,0,0,0,0,0,0,0,63,63,0,0,0,127\n0,0,0,0,0,0,0,0,15,15,47,127,63,63,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,31,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,31,127,31,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,0,25,127,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,25,101,25,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,54,72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n36,9,0,0,0,9,18,99,127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,13,0,0,0,0,0,20,66,127,66,6,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,0,127\n0,18,0,54,127,18,0,0,0,0,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,76,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,127,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,84,0,0,84,0,0,0,0\n0,63,63,0,31,0,31,31,31,0,31,63,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,31,0,31,127,95,31,95,63,95,0,63,0,63,31,0,0,63,31,0,0,0,0,31,0,63,0,127,31,63\n127,81,33,12,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,0,3,18\n0,0,0,0,0,31,63,95,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,0,0,127,0,0,79,0,0,15,0\n72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,36\n92,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,69\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,127,79,47,47,31,0,0,0,0,0,0,0\n0,0,6,13,127,26,80,33,0,0,0,0,0,0,0,0,0,0,0\n84,127,70,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,25,25,76,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0\n26,46,53,93,33,66,106,127,86,46,6,13,20,0,6,0,0,0,0\n0,0,0,31,0,0,0,0,0,31,0,0,0,0,0,31,31,31,0,0,31,31,31,0,31,31,0,0,0,95,0,0,0,0,0,63,127\n0,0,0,0,0,0,31,15,15,31,31,31,63,127,15,79,15,0,31\n0,0,0,0,0,0,0,0,12,0,0,0,0,0,6,25,63,101,127\n127,47,55,23,23,31,15,0,0,31,7,7,7,0,0,0,0,0,0\n50,0,0,0,0,50,76,0,127,76,101,76,50,50,50,25,0,0,50\n127,52,21,63,21,21,10,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,95,95,127\n63,95,63,63,31,31,127,31,0,31,0,0,31,0,0,0,0,0,0\n0,63,0,0,0,63,63,63,63,127,127,127,0,63,0,0,0,0,0\n0,0,0,0,0,0,21,0,0,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,27,36,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,69,127\n0,42,42,127,0,0,127,84,127,42,84,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,84,0\n74,127,127,14,29,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,30,48,127,75,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,42,28,70,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28,0,28,56,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,63,63,127,127,0,63,0,63,63,0,0,63,0,127,63,0,63,63,63,0,63,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,2,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,127,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,127,0,0,63,63,0,63,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,12,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,84,127,84,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,116,52,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,127,31,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,36,0,0,0,0,0,0,0,0,0,0,0,0\n46,34,0,11,11,0,57,80,92,127,92,46,46,46,57,0,23,103,115\n12,30,127,96,60,18,0,12,0,0,0,0,0,0,0,0,0,0,0\n0,42,127,127,42,84,42,42,0,127,127,84,0,0,42,0,0,0,0\n0,127,76,50,127,25,76,50,0,25,0,0,0,0,0,0,0,0,0\n127,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,127,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,127,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,21,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42\n72,90,36,127,72,36,54,127,18,0,18,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127\n0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,42,0,127,42,0,127,84,0,0,0,84\n127,58,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,0,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,127,0,0,0,63,0,127,63,0,63\n127,92,61,39,25,4,0,7,3,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,16,26,93,127\n0,127,47,0,0,0,79,15,0,15,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,15,79,15,95,127\n127,57,25,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,9,77,127\n127,45,38,35,10,0,3,0,0,0,3,3,0,0,0,3,0,0,0\n0,0,15,15,15,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,42,127,42,0,0,0,42,84,127,0,0,0,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,84,127,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,84,127,42,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,12,25,0,12,76,127,76\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,84,127,63,0,21,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,127,105,84,0,0,0,0,0,0,0,0,0\n0,90,18,0,36,36,127,36,36,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,47,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,114,101\n127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,31,0,31,0,0,0,31,0,0\n127,21,0,0,0,0,21,21,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,21,21,0,42,42,105,127\n0,0,0,0,0,0,21,21,21,0,0,0,0,0,0,0,0,0,0,21,0,21,42,0,0,21,21,0,0,0,21,0,0,21,21,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,2,7,127\n127,53,26,30,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127\n21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n52,78,56,52,13,4,4,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,17,39,74,65,127,105\n95,47,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,95,95,127\n127,111,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,63\n127,38,0,0,12,0,25,12,12,0,0,0,0,25,12,0,0,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,25\n84,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,31,105\n127,95,52,14,14,17,14,0,10,0,3,7,0,0,0,0,0,0,0,0,0,3,0,0,3,0,10,14,0,7,21,10,3,7,31,42,49\n127,85,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,44\n127,31,19,12,12,3,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,6,9,6,0,9,12,9,38,69\n108,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,4,0,4,40,63\n117,127,19,29,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,9,9,19,0,0,29,29,117\n0,127,84,84,42,84,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,0\n0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,63,63,63,0,0,0,0,0,0,0,63,63,63,0,0,0,63,0,63,0,0,63,63,63,0,0,0,0,0,0,63,63,0,127,63,63,0,63,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0\n0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,63,0,127,63,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,0,63,0,63,0,0,63,63,0,0,0,0,0,63,0,63,0,63,63,0,0\n118,82,83,70,127,101,59,43,24,5,0,0,0,0,0,0,0,0,0\n127,76,38,12,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,12,25,50\n127,127,50,50,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,0,12,25,25\n0,0,0,0,0,42,0,0,84,84,42,127,84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,69,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,88,69,6,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,68,68,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,13,20,20,127,6,13,40,0,13,0,6,0,0,6,40,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,36,127,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n28,14,14,0,0,0,0,0,0,0,28,0,84,98,28,42,42,42,14,14,14,0,0,0,0,0,0,28,0,0,0,14,28,112,42,127,84\n0,0,0,0,0,0,9,9,14,127,122,89,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,3,0,0,0,0,0,3,10,10,14,17,45,14,17,17,14,7,0,7,0,10,0,0,3,0,17,24,7,10,28,49,52,70,127\n0,0,0,0,0,0,14,14,70,127,84,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,21,0,0,0,42,21,21,84,105,0,127,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42\n0,0,0,0,0,0,0,0,0,127,21,105,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,84,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,84,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,0,0,0\n0,0,0,0,0,0,0,0,0,84,84,42,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,5,19,59,127,97,24,10,10,1,0,3,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,42,127,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,29,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,31,63,63,127,95,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,25,0,76,50,127,50,0,0,25,0,0,25,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,117,81,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,31,63,0,31,0,95,127\n0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,127,127,0\n32,10,7,9,4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,10,42,81,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,127\n127,43,15,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,2,17,61,127\n127,84,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,127,127\n31,23,39,15,23,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,71,127,79,71,111,63\n31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,127,111,127,31\n127,81,26,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,33,8,76,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,49,70,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,10,10,79,127\n127,38,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,23,11,11,34,80,127,127,115\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0,63,63,63,0,0,63,63,0,0,0,0,0,0,0,0,63,0,0,0,0,127,0,63,0,0,127,127,127,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,0,31,0,127,127,63,63,0,0,95,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,63,0,63,0,127,0,127,127,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,3,2,1,0,1,4,12,21,44,90,127\n10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,5,0,0,10,74,47,5,0,21,5,0,10,10,5,37,127,42,37,52,74\n127,63,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,9,27,54,127,18\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,63,127,84\n127,37,10,0,0,0,0,0,0,0,10,0,0,0,5,5,5,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,21,0,21,63,63,127,84\n127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,68,5,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,87,127\n0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,95,63,63,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,127\n67,127,37,41,22,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,18,59,82\n53,42,25,28,1,1,5,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,3,1,5,15,53,100,127\n101,114,50,25,50,127,63,12,50,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,12,12,0,0,0,0\n0,84,42,127,127,127,42,84,0,127,42,0,0,42,42,0,0,0,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,19,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,0,0,10,121,68,127\n0,0,36,0,0,0,0,18,0,18,0,36,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,36,18,0,54,54,127,36,36,18,108\n127,91,20,0,0,0,0,0,0,2,2,0,2,2,2,5,5,0,0,0,2,5,2,2,0,2,0,2,0,0,2,2,0,2,53,106,66\n127,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,58,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,0,31,21,10,52,31,116,127\n27,5,38,49,38,55,77,115,88,127,82,82,38,60,22,16,5,5,0,5,5,5,11,11,11,5,11,22,0,11,16,27,11,44,11,27,27,44,71,88,44,44,49,38,22,33,11,11,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,11\n10,12,21,34,68,83,72,106,100,127,86,89,56,36,39,40,32,18,7,10,7,10,17,3,15,4,17,14,15,14,12,14,12,34,17,21,25,51,54,84,79,79,81,75,62,53,18,1,3,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,3,1,1\n0,0,0,0,0,84,42,84,0,42,84,0,0,0,84,0,42,0,127,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,8,33,93,84,84,127,67,8,8,8,8,0,8,8,0,0,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n21,0,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,84,21,63,127,84,42,21\n18,72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,18,0,0,0,0,18,0,36,72,72,90,36,127,127,36,108\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28,0,56,0,0,0,14,28,14,28,28,42,28,56,98,42,70,127,127,98,56,56,14,56,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,32,42,14,28,18,0,42,28,65,56,32,32,32,4,23,32,42,127,65,51,32,28,32,18,9,18,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n14,0,0,42,28,70,127,70,42,28,14,14,0,0,14,0,0,0,0,0,0,0,0,14,14,14,0,0,0,14,14,0,14,14,14,0,0,0,14,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,14,14,0,14,0,14,0\n0,0,12,25,12,25,88,25,38,25,25,12,0,25,0,0,0,0,0,12,0,0,0,0,0,0,12,0,12,0,12,12,12,0,12,0,0,0,50,0,127,63,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,0,38,0,0,12,0,0\n18,18,54,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127,127\n127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,21,0,21,0\n63,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,63,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,42,127,84,84,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n120,127,55,32,21,4,4,13,4,0,4,4,12,2,5,1,2,1,0\n50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,25,0,0,0,0,25,0,0,0,0,0,25,0,101,127,50\n127,63,45,13,18,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,9,47,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,127,31,63,31,63,63\n127,95,56,77,42,10,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,3,0,0,3,0,10,24,35,42\n127,48,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,6,24,58,127\n119,119,127,56,0,3,10,3,0,0,0,0,0,0,0,0,0,0,0\n127,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,18,127\n63,127,95,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,127\n0,0,0,0,0,0,0,0,0,0,0,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,0\n127,51,17,11,11,17,5,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,47,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,0,0,0,0,0,0,0,0\n127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,0,95,127,0,63,127,95,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n10,21,68,89,127,121,89,84,100,89,52,63,15,52,10,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,5,0,0,0,15\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,58,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,90,127,72,36,18,108\n127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n108,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127\n0,0,127,63,0,0,0,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95\n0,0,84,0,42,84,0,42,127,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,116,127,42,74,95,52,21,21,42,10,0,10,0,0,21,0,0,0,21,0,10,21,10,0\n36,0,0,0,0,0,0,0,0,0,36,54,127,0,36,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,36,72\n0,0,0,0,0,0,0,0,0,0,0,63,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,63,42,0,0,21,21,0,0,0,0,0,0\n0,0,4,0,0,0,18,2,2,4,32,100,106,94,45,6,6,4,4,0,0,0,2,0,0,0,2,0,0,0,0,2,0,16,47,75,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,33,127\n0,0,0,0,0,0,21,0,42,127,42,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n9,1,3,1,3,0,7,10,23,21,61,127,95,12,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,127,76,101,101,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,101\n0,0,0,0,0,0,0,31,127,95,63,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,47,127,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,0\n0,0,0,0,0,0,0,0,0,0,10,10,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,58,117,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,63,63,127,0,0,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,127,63,0,0,0,0,0,0,0\n127,106,102,94,83,84,53,25,14,6,0,0,0,0,0,0,0,0,0\n8,17,17,17,17,17,56,35,52,52,30,21,8,0,0,8,4,4,0,0,4,0,0,4,4,30,21,26,13,21,91,48,26,21,83,127,43\n0,0,0,0,0,0,0,0,31,47,0,15,63,79,127,15,95,95,127\n13,3,5,3,5,18,42,82,127,116,109,71,42,23,10,4,1,4,1\n0,0,0,0,0,0,0,0,0,21,56,42,63,70,127,56,42,7,21,35,7,42,21,49,14,42,21,7,21,49,28,0,14,0,0,7,0\n0,0,0,0,0,0,0,0,0,0,28,0,0,70,98,98,0,127,112\n0,46,0,0,0,46,23,69,115,127,80,80,11,0,0,11,0,0,0\n0,0,0,0,0,0,0,0,0,15,0,0,0,47,127,0,0,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,7,95,103,95,127,55,79\n127,33,46,33,80,11,35,57,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,50,127,38,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,76,127,127,127,127,25,0,0\n127,95,31,0,0,0,0,31,0,0,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,63,0,31,31,0,0,0,0,31,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,15,0,15,0\n0,0,0,0,42,0,0,0,0,0,0,0,42,0,42,84,0,0,42,0,0,0,127,84,42,84,84,42,0,0,0,42,0,0,0,42,0\n63,127,63,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,42,0,127,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n46,80,23,23,11,0,0,34,46,34,103,92,92,127,115,115,103,69,46\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,50,50,25,127,25,101,50,101,50,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,42,0,21,0,63,84,63,21,42,21,21,63,63,21,105,105,127\n120,127,101,77,51,43,34,29,21,17,9,4,4,1,0,1,0,0,0\n0,1,1,1,0,1,1,1,5,5,7,3,0,2,1,0,0,0,0,0,0,0,0,1,0,0,2,5,5,1,3,2,1,3,27,64,127\n39,39,39,9,9,0,9,0,0,9,48,58,58,127,87,58,0,9,0\n127,102,87,68,68,78,87,78,39,29,9,4,0,9,19,4,4,4,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,31,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,18,127,18,18,18,54,90,108,72,108\n127,127,0,31,31,31,63,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,41,16,7,5,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,21,105,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,0,15,47,0,31,127\n0,0,9,4,13,4,4,4,27,13,22,13,77,95,63,90,63,72,127\n0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,42,42,0,0,84,42,0,42,42,0,0,0,0,0,0,42,0,0,0,0,0,0\n70,91,81,100,127,118,85,72,52,43,63,43,54,81,50,65,52,30,30\n0,0,0,0,0,0,0,3,0,7,0,3,0,3,7,30,0,0,0,3,3,3,15,26,3,3,3,0,3,0,0,0,11,3,46,127,76\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,0,21,10,84,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,42,127,101,25,0,8,33,59,25,33,0\n0,25,25,50,101,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n56,56,42,98,112,127,70,84,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n121,127,88,95,81,40,12,10,1,3,0,1,0,0,0,0,0,0,0\n14,0,3,7,17,14,10,7,0,7,0,10,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,7,0,0,3,10,17,28,127\n0,0,0,0,0,0,0,0,14,0,0,14,42,42,70,127,14,0,0\n39,25,31,47,50,76,98,127,127,70,56,33,14,5,5,11,0,2,11\n0,0,0,0,0,0,31,0,0,0,0,31,0,95,0,0,0,0,0,31,31,0,31,0,31,0,0,0,0,0,0,31,0,31,63,127,63\n0,0,0,0,0,0,0,0,0,15,0,0,15,15,47,63,95,111,127\n127,21,42,74,74,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,21,0,0,21,31,31,10,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,10,127\n127,63,23,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,39,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,7,10,7,33,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,63,127\n108,72,127,9,27,0,9,18,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,0,0,0,42,0,42,42,42,0,0,0,0,84,84,127,127,0,0,0,0,0,0\n84,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,95,95,63,127\n127,127,31,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,31,0,0,31,0,0,31,0,0\n0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,42,42,84,42,0,0,84,42,0,84,0\n127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,21,42,0,0,21,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0\n63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,127,0,127,95,95,31,0,0,0,31,127,63,63\n127,74,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,114,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,18,0,0,0,0,18,0,0,0,0,0,0,0,0,36,72,36,127,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,31,0,0,0,31,0,0,31,31,0,95,63,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n19,19,40,23,52,71,127,107,95,91,67,50,23,28,14,23,9,14,9\n0,0,0,0,42,0,0,0,42,0,0,42,0,0,0,0,84,42,0,0,0,0,42,42,42,127,84,0,0,42,0,0,0,42,0,0,0\n17,17,21,12,17,33,32,59,94,110,119,127,82,109,85,64,46,57,53\n0,0,0,0,0,0,0,0,0,0,42,0,127,42,42,0,0,42,84,0,84,42,42,127,127,42,42,84,42,42,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,0,95,0,127,63,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,72,108,36,36,0,0\n127,40,20,33,20,6,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,118,106,82,92,47,22,10,4,0,0,0,0,0,0,0,0,0,0\n115,63,11,34,51,46,28,17,11,5,11,0,0,0,0,0,0,0,0,0,11,17,0,0,0,11,5,0,0,17,11,63,34,69,40,51,127\n127,0,0,0,15,0,0,0,31,31,31,79,15,31,31,63,15,15,63\n60,35,42,37,50,77,116,127,97,74,37,26,11,8,2,3,0,0,3\n0,0,0,0,0,0,21,42,63,127,63,0,21,42,21,21,0,21,0,0,0,0,21,21,0,0,21,21,21,0,0,21,21,42,63,21,42\n0,0,0,0,0,0,0,0,0,0,63,63,127,127,63,127,127,63,0\n3,1,6,1,33,67,100,127,127,102,81,45,15,10,12,6,8,3,0\n0,0,0,0,0,0,0,15,15,47,31,47,0,47,31,0,31,31,15,47,47,0,0,31,31,127,95,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,6,16,56,89,127,123,115,75,62,57,44,38,35\n0,0,0,0,0,0,0,0,0,127,95,63,127,63,127,127,0,31,0,31,63,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,15,23,15,15,23,15,63,127,95,95\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,23,103,63,55,47,127\n127,49,42,21,0,21,21,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,49,0,4,45,4,18,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,50,0,127,0,0,0,0,0,0,0,0,0,0,50,0,50,0,0,25,25,0,0,0,0,0,0,25,0,25,0,0,0,0,25,0,101\n0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,54,54,127,54,36,36,0,18,0,0,0\n115,127,103,46,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,23\n0,0,0,0,0,31,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,63,31,31,0,0,0,0,0,127\n127,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,68,32,27,23,7,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,3,3,7,4,4,2,8,4\n127,47,0,31,0,47,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,47,0,31,0,15,0,0,0,0,0,0\n0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,21,42,21,127,63,21,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,56,0,0,0,0,0\n42,0,0,0,0,21,21,42,42,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,105,84,127,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,127,95,31,31,0,0,0,0,0,0,0\n20,36,39,51,60,92,86,85,113,127,126,105,96,68,43,36,35,24,21,19,14,23,18,22,31,30,18,23,16,8,15,7,13,18,10,16\n22,34,53,48,60,71,90,119,122,127,118,107,99,67,45,39,35,43,23,16,28,29,16,25,33,28,20,21,11,10,4,7,10,6,8,16\n42,63,63,0,127,42,105,84,63,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,21\n50,76,101,76,127,127,50,76,127,101,25,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,37,58,74,127,116,31,68,79,42,31,47,15,31,10,21,0,21,47,52,58,74,31,10,5,5,5,5,0,0,0,0,0,0,0,0,0,5,0,0,5,26,31,58,21,5,31,42,5,21,5,5,0,0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,5\n0,29,42,29,71,127,76,88,42,80,71,21,16,16,12,16,21,8,12,38,63,97,88,46,16,4,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,12,29,25,8,0,29,12,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4\n0,0,0,42,0,42,0,42,84,105,127,105,127,63,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,28,28,42,84,127,56,98,42,14,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,3,13,35,42,71,65,113,127,117,32,29,16,26,3,3,0,9,3,6,0,6,3,3,0,0,0,0,0,3,0,0,0,3,0,6\n0,8,11,17,20,32,100,127,103,59,94,32,17,5,8,5,2,2,0,8,8,2,8,0,0,0,0,2,0,0,0,0,5,0,2,0\n0,84,84,127,63,21,21,63,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0\n0,31,31,31,95,127,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,28,0,14,14,28,42,127,98,42,0,0,14,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,36,36,72,36,54,127,36,72,0,18,0,0,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,12,6,0,18,0,18,18,18,12,24,42,90,84,42,60,54,102,48,78,127,48,48,6,6,6,0,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,40,15,0,0,5,0,5,15,5,15,5,45,60,86,30,30,76,127,111,71,50,86,40,15,10,0,5,0,5,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,31,95,0,31,95,0,127,63,0,31,127,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,21,21,42,42,127,42,0,42,42,21,84,105,42,42,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,42,0,42,127,84,0,0,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,25,25,127,101,25,50,76,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,11,46,46,80,92,57,115,46,34,57,80,127,34,127,11,69,0,11,11\n0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,9,27,45,27,127,90,18,72,36,63,63,63,127,117,63,63,27,27,9,18\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,31,0,127,95,63,0,0,0,0,31,0,31,63,31,0,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,63,0,127,105,127,21,0,0,0,21,21,42,63,21,0,21,0,21,0,0\n25,31,31,82,50,57,114,101,82,88,107,76,127,63,31,57,76,57,82,25,69,50,63,63,31,31,31,38,19,19,19,25,12,12,0,25\n23,23,40,34,23,57,98,103,86,121,121,127,46,98,86,86,51,75,75,28,57,51,69,57,57,23,23,17,28,23,11,17,23,5,11,28\n0,0,25,25,25,127,101,25,25,25,50,25,25,0,0,0,101,25,76,50,76,25,76,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,50,50,50,0,25,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n21,42,63,63,42,127,84,63,42,42,42,21,0,21,0,21,42,42,84,84,63,21,63,42,63,42,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\n0,0,0,0,11,115,127,34,23,0,23,23,34,0,11,23,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,31,21,127,21,42,74,31,0,0,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,0,0,0,0,0,0,8,8,25,0,42,50,0,33,33,16,127,59,16,33,25,25,50,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,15,15,15,47,47,63,79,0,15,0,127,47,111,127,79,95,79,31,0,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,36,90,127,54,36,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,15,127,31,31,15,31,79,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\n0,0,95,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31\n0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,63,63,127,63,127,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,31,0,0,127,95,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,31,0,0,0,0,0\n127,63,95,63,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0\n0,42,127,42,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84\n0,127,84,42,84,42,42,127,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n14,28,32,89,127,65,61,56,14,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4\n5,15,52,116,127,42,58,21,15,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,5,0\n21,21,0,63,127,63,21,21,0,0,0,0,42,21,0,0,0,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,42,84,42,84,0,42,42,0,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,14,0,0,0,0,14,28,127,28,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,8,0,25,25,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,93,33,0,8,0,0,0,8,0,0,0\n0,0,0,0,0,0,0,11,11,34,23,46,92,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,127,34,11,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,47,127,47,79,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,0,9,18,9,45,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,101,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,31,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,44,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,104,112,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,15,0,0,0,0,0,0,0,0,0,0,15,0,15,0,15,15,15,47,79,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,25,50,127,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,4,4,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,100,21,8,13,4,0,0,0,0,0,0\n0,0,0,0,0,4,0,0,0,4,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,127,27,13,9,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,63,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,127,127,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,69,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,80,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,127,95,111,79,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n25,0,0,0,25,0,0,50,0,0,101,50,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,14,28,14,0,14,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,112,127,84,56,56,0,14,14,0,42,0,0\n0,42,14,0,0,0,14,0,56,28,127,112,42,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,98,14,42,14,14,14,14,28,14,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,47,87,55,23,7,15,0,0,0,0,0,23,7,0,0,0,0,0,0,7,23,7,23,127,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,12,38,25,76,88,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,127,63,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,108,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,18,36,18,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,50,50,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,76,127,127,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,127,127,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,63,105,63,42,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,21,42,127,84,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,63,63,0,0,127,63,0,63\n0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,31,31,0,0,63,31,0,31\n40,17,0,0,0,5,5,17,23,63,86,127,86,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,46,34,23,5,0,17,0,0,0,0,11\n13,18,4,0,4,9,4,9,40,58,127,108,49,13,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,54,18,9,9,0,0,0,4,9,0,9\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,1,0,3,6,36,88,127,84,46,26,5,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,50,87,40,13,5,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,0,1,0,3,19,56,56,39,14,10,5,0,1,0,0,0,1\n0,0,0,0,0,0,3,0,11,7,19,71,127,111,99,27,11,7,3,3,0,0,0,0,0,0,0,0,3,11,7,3,3,7,23,99,51,75,19,11,0,0,0,7,0,0,0,0,11,7,0,0,0,0,0,0,0,3,3,39,31,47,51,7,23,0,3,3,0,0,3,0\n0,0,0,0,0,0,0,0,0,0,9,0,18,54,18,0,9,0,0,0,0,0,9,0,0,0,0,0,0,0,9,9,27,127,36,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,31,127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,101,50,25,0,0,0,0,0,0,0\n0,0,0,0,0,14,0,0,0,0,0,0,98,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,98,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,84,56,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,0,74,63,31,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,21,127,31,31,21,0,0,0,0,10,0,0,10,10,0,0,0,0,0,0,0,0,21,84,10,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,102,127,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,48,68,127,48,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,127,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,7,15,55,47,103,127,103,0,15,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,39,23,55,47,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,23,23,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,5,10,40,96,127,25,40,5,5,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,10,15,15,40,30,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,20,5,0,0,0,0,0,0,5,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,79,79,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,15,31,15,0,0,0,0,0,0,0\n0,0,95,31,31,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,63,42,21,63,63,63,127,105,63,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,12,76,76,38,127,63,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,3,12,39,78,99,127,127,81,21,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,45,111,96\n0,0,0,0,0,0,0,0,12,12,101,88,127,114,38,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,12,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,49,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,127\n0,1,0,0,0,0,0,2,5,21,73,127,12,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,84,84,42,0,0,84,127,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,3,27,43,75,87,127,51,31,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,27,63\n0,0,0,0,0,0,11,0,0,23,92,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,0,0,42,63,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,0,42,127,127,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,54,72,108,127,72,36,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,14,70,127,127,98,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,2,0,0,4,14,29,127,97,43,14,7,4,4,0,0,4,0,0,0,4,4,2,0,0,2,4,51,92,95,53,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,5,10,37,127,99,35,13,8,5,2,10,0,5,0,2,0,0,0,0,0,0,2,18,35,75,91,64,10,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,12,127,25,0,0,0,0,0,0,0,0,0,0,0,0,38,0,12,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,31,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,31,31,127,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,95,63,0,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,127,95,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,25,50,0,0,0,0,0,0,0,76,101,0,0,0,0,25,0,0,25,0,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,14,14,14,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,42,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,127,56,28,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,54,127,108,72,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,54,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,127,0,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,18,36,36,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,54,127,36,0,54,0,0,0,0,0,0\n0,0,0,0,0,0,42,0,42,84,0,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,84,127,42,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,57,23,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,46,57,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,70,127,56,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,8,0,8,8,0,8,0,8,25,25,33,8,0,0,0,0,0,0,0,0,8,0,0,0,0,8,16,8,16,8,8,0,67,127,33\n0,31,0,0,31,0,0,0,0,0,0,0,31,15,31,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,31,0,0,95,95,127,95\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,0,47,31,95,47,79,79,127,31\n0,0,127,0,63,0,127,0,0,0,0,0,0,31,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0,0,31,0,0,31,63,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,23,11,103,127,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,21,21,84,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,42,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,84,0,0,42,42,42,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,0,25,12,38,12,63,63,127\n127,47,0,111,15,15,79,63,0,15,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,31\n0,12,12,25,25,38,38,12,38,76,76,127,114,88,38,50,38,63,50,38,0,0,0,0,0,0,0,0,0,25,0,0,12,12,25,38,25\n0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,21,21,10,21,74,10,31,127,42,42,63\n0,31,0,0,31,0,63,31,31,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,15,0,0,15,0,79,127,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,63,0,95,0,0,31,0,63,63,127,63,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,0,31,127,31,31,63,31,95,31,63,31,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,50,0,127,50,127,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,63,0,0,63,63,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,63,0,0,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,63,0,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,84,127,0,0,14,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,31,47,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,10,5,26,37,52,15,42,26,10,10,5,0,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,63\n0,0,0,0,0,0,0,0,0,0,18,108,72,127,54,54,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,90,18,0\n0,0,0,1,0,1,0,1,2,16,76,127,118,60,15,6,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,5,9,26,40\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0,36,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,54,127,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,127,95\n0,0,0,11,0,0,11,0,11,23,23,80,127,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,47,111,47,79,79,47,79,47,31,0,0,0,47,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,28,0,0,112,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,63,0,0,63,127,63,127,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\n0,0,0,0,0,0,0,3,0,3,6,44,92,127,54,13,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,13,6,6,41\n127,95,31,31,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,42,127,105,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,31,0,31,31,31,31,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,36,0,36,127,127,54,90,72,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,18,54,108,18,0,0\n0,0,0,0,0,0,0,18,18,127,0,54,108,54,54,36,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,90,127,18,0\n0,0,0,0,0,42,0,0,21,0,63,127,63,105,63,42,21,21,0,21,0,0,21,0,63,21,21,0,0,0,0,0,0,21,127,42,0\n0,0,0,0,0,0,0,6,6,6,13,60,127,80,46,6,0,6,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,6,6,33,80\n0,0,31,31,0,0,63,31,31,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,31,0,47,15,63,79,95,95,127,0,0,0,0,47,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,14,56,28,70,70,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28\n0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,84,0,42,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,90,127,108,72,0,0,0,0,0,0,0,0\n52,61,48,55,58,71,74,127,65,74,26,6,9,3,0,0,0,0,0\n0,10,0,0,10,0,10,31,127,127,95,105,52,42,21,31,10,31,0\n0,0,0,0,0,0,6,3,0,20,13,23,33,43,36,76,56,70,127\n0,8,0,4,8,0,16,32,122,77,127,102,69,20,49,36,16,12,8\n0,0,0,0,0,0,0,0,14,28,70,0,0,28,14,112,42,14,14,28,0,127,0,14,14,0,42,28,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,39,53,106,127\n0,0,0,0,0,2,2,15,48,83,111,120,127,81,66,56,46,54,54\n0,0,0,0,0,0,0,0,3,23,67,127,75,115,87,63,91,87,79\n0,0,0,0,0,0,0,0,7,11,46,38,76,26,42,50,65,127,123\n127,38,76,88,63,12,25,88,63,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,79,15,47,63,79,111,111,15,95,0\n127,105,98,56,49,35,31,14,3,0,0,0,0,0,0,0,0,0,0\n127,96,54,24,15,10,9,8,10,15,18,22,19,17,16,16,15,14,18\n1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,3,4,8,11,26,53,82,127,84,61,25,18,13,10,19,17,23,38\n0,0,0,101,101,127,0,0,0,50,0,0,0,0,76,25,0,0,0\n0,0,0,0,0,1,2,1,2,8,32,30,59,61,71,90,127,121,107\n127,118,55,50,97,67,46,46,71,101,50,33,25,4,12,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,6,9,18,32,43,63,79,106,127\n127,63,87,23,31,15,0,0,0,0,0,7,7,0,0,0,0,0,0\n56,70,63,84,56,42,49,63,98,91,127,98,42,91,91,84,112,77,112\n0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,18,54,127,18,0,54,18,36,18,54,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,5,5,20,0,30,96,66,127,101\n0,0,0,0,0,0,0,0,0,2,7,0,0,0,0,4,28,110,127\n127,47,10,10,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0\n0,48,48,0,29,9,127,68,107,78,87,19,0,48,39,19,0,9,9,19,0,0,29,0,39,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,8,6,3,7,24,19,20,16,12,22,21,15,18,52,127\n84,93,127,42,0,8,50,8,33,33,67,42,8,25,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n58,19,30,30,22,24,32,29,53,55,87,102,100,127,109,79,89,74,87\n0,0,16,16,0,0,8,16,16,8,16,33,42,67,76,93,59,67,127,127,93,50,118,8,25,8,0,0,0,8,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,0,95,31,63,127,127,63\n9,6,6,4,0,0,0,4,4,25,18,13,25,43,76,127,122,96,23,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,7,1,9,7,7,10,12,43,127\n0,31,31,0,0,0,0,31,31,0,127,0,0,31,31,0,0,63,0\n9,15,16,32,41,66,101,123,127,102,95,74,54,35,34,22,25,22,24\n26,33,0,0,13,13,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,13,73,93,127,40,46,20,13,40,100,40,93\n0,0,0,0,9,9,19,48,48,48,97,78,78,127,78,48,9,9,58\n63,127,127,15,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,10,21,52,74,21,116,127,127,10,21\n0,0,0,0,0,0,0,0,0,0,5,0,13,29,13,15,42,84,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,14,9,7,11,55,25,18,35,58,74,53,48,62,80,127\n0,0,21,0,7,0,0,56,127,35,63,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,63,127,95,31,0,95,0,0,0,0,0,0,0,0,0\n34,69,127,115,34,11,0,11,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0\n29,52,127,52,14,7,0,0,7,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,37,0,0,7\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,10,4,12,53,127,30,14,20,22,22,16,22,32,18,10,10,0,0,6,4,4,2,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,6,30,127,113,17,24,27,30,68,30,58,54,41,17,17,13,3,3,13,10,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n6,12,6,0,0,0,6,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,38,25,19,127,107,12,19\n4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,28,32,127,47,0,0\n55,45,32,20,3,1,8,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,8,16,35,64,93,127,116\n69,41,36,14,4,8,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,6,13,37,47,112,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,84,84,127,127,0,0,0,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,25,0,0,0,0,0,50,0,25,0,127,50,25,0,0,25,25,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,14,127,98,0,0,0,28,70,112,28,98,127,84,112,28,0,14,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,36,45,0,0,0,18,45,45,63,27,127,81,63,18,36,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,84,84,42,42,42,42,42,127,42,84,84\n0,0,0,0,0,0,0,0,31,31,63,63,0,63,127,63,31,0,0\n127,90,81,108,63,63,63,45,18,36,36,27,63,18,45,54,90,72,90\n127,71,25,33,33,16,8,8,8,21,16,12,21,16,12,12,38,8,8\n0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,25,0,25,0,0,0,127,0,50,0,0\n0,0,0,0,0,0,0,0,9,9,9,68,127,78,29,0,0,0,0\n127,17,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,63,31,0,31,31,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,15,0,0,0,15,15,47,63,31,47,63,79,127\n127,64,33,54,28,17,13,2,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,36,5,1,3,1,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,0,25,76,50,25,101,50,25,50,76,0,0,76,101,127,76,50,0\n101,127,50,25,25,0,76,76,50,25,0,76,0,50,0,76,0,25,50\n0,25,25,25,50,127,101,0,0,0,0,0,0,0,0,0,0,0,0\n127,72,54,36,40,13,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,108,36,90,127,36,36,90,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,18,18,18,0,0,0,0,0,0,0,0,0,36,18,0,18,0,18,0,0,18,0,0,72,127,18,0,0,0,0,18,0,0,18,0,36\n66,62,127,71,11,7,5,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,67,21,17,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,31,0,0,0,0,0,63,0,0,31,95,31,95,0,31,0,31,31,0,0,0,0,127,63,0,0,31,0,0,0,0,0,0,0,0\n84,84,127,0,0,42,42,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,42,127,0,0,0,0,42,0,0,0,0,0\n127,70,49,14,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,39,15,23,7,31,47,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,31,31,0,0,0,0,0,0,0,31,0,31,63\n127,37,5,21,21,10,15,10,0,0,0,5,0,0,0,0,0,0,0\n16,8,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,4,0,8,29,38,29,42,50,33,93,114,105,127\n127,100,86,23,3,5,3,1,1,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,1,3,28,68,73,127,98,82,37,19,2,1,1,1,1,0,0,0,1,2,1,4,10,3,11,32,52\n0,63,63,127,31,0,31,63,31,0,31,0,0,0,0,0,0,0,0\n127,88,38,88,38,25,12,12,0,0,0,0,0,0,0,0,0,12,0\n127,76,41,24,16,9,6,2,2,1,0,0,0,0,0,0,0,0,0\n23,0,0,0,0,23,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,0,23,127,115\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,31,47,95,127\n0,1,0,0,0,0,0,0,0,5,1,18,10,5,29,7,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,38,127\n0,0,0,0,11,46,23,34,46,46,34,127,103,69,23,115,115,92,115\n0,0,0,0,0,0,0,0,0,2,0,0,5,5,14,11,2,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,31,72,69,127\n0,63,105,105,63,127,42,105,21,21,21,0,0,42,21,0,0,0,0\n127,123,40,11,8,5,6,11,15,11,6,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,1,3,18,25,66,96,83\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,35,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,39,127,39,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,37,127,44,0,0,0,0,0,0,0,0,0,0\n14,0,7,0,7,0,7,0,14,0,49,77,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,7,21,7,7,0,0,14,0,0,0,0\n0,0,0,0,0,25,8,8,0,0,42,67,127,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,25,25,16,0,0,8,0,0,0,0,16\n0,8,8,8,0,0,0,8,0,16,59,127,110,25,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,25,8,0,0,0,0,0,0,0,0\n0,0,5,5,0,5,0,0,15,5,15,127,96,30,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,10,35,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,15,31,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,127,31,15,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,84,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,63,0,127,127,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,6,6,6,54,127,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,18,0,24,6,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,9,127,117,39,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,9,0,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,0,0,31,0,0,0,0,0,31,0,0,0,0,0,31,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,127,0,0,0,0,0,0,42,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,127,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,21,0,0,0,0,0,0,42,0,0,0,0,0,0,0,21,127,84,127,42,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,127,76,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,95,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,127,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,42,0,0,0,0,0,42,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,42,0,0,0,0,0,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0\n21,0,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,84,84,127,0,42,0,21,21\n0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,63,0,63,0,63,0,0,63,127,0,0,0,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,84,42,127,127,42,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,42,28,0,70,42,127,42,14,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,69,34,127,0,0,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,76,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,0,50,50,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,76,0,25,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,0,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,0,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,42,42,0,42,42,0,0,0,0,84,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,63,0,63,0,0,63,127,31,63,31,0,0,0,0,0,0,63,0,0,0,0,0,0,0,31,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,127,42,42,42,84,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,84,0,0,0,0,0,0,0,0,42,127,84,42,0,84,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0\n11,15,11,0,3,0,3,3,0,3,0,3,11,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,7,35,43,127,55,59,59,55,43,19,27,11,27\n15,10,5,5,5,20,15,0,10,0,15,5,15,0,20,15,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,10,10,10,40,91,91,127,101,45,66,111,91,25,35,10\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,18,18,18,127,54,0,0,0,0,0\n0,12,0,12,0,0,12,50,101,50,114,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,114,127,76,38,76,38,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,50,50,63,50,50,12,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,9,9,18,99,90,45,36,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,72,108,27,63,18,9,0,0,0,0,0,0,0,0,0,0,0,0,9,18,9,54,127,63,63,9,0,9,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,20,40,93,60,60,80,80,127,60,73,26,20,0,6,0,0,0,0,0\n0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,15,5,15,52,42,95,127,58,84,100,47,31,21,21,26,5,15,5,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,127,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,8,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,127,33,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,76,25,0,0,0,0,0,0,0\n0,42,0,42,127,0,84,84,0,42,42,42,42,0,0,0,42,84,0,127,42,0,0,0,0,0,0,42,0,42,127,0,42,42,84,0\n25,25,25,0,25,127,25,50,50,101,101,101,0,0,50,0,0,76,25,25,0,0,0,0,0,0,0,0,0,0,0,50,25,25,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,36,36,54,54,36,108,127,36,18,18,0,36,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,105,42,127,42,42,42,21,21,0,0,0,0,0,0,0,0,0,0\n77,16,44,16,0,5,0,0,5,5,0,0,0,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,33,71,93,55,127,49,49,33,71,27,27,38\n63,37,21,15,0,0,10,5,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,37,127,100,95,52,63,42,21,26,37,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,25,0,25,25,25,50,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,56,0,127,0,28,28,42,28,56,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,90,72,18,18,72,127,36,0,0,0,0,0,0,18,18,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,42,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,127,127,0,42,84,42,0,0,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,84,42,0,84,0,0,0,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,31,0,0,31,127,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0,31,0,0,0,31,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,42,42,84,0,0,42,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,31,31,0,31,31,127,127,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,0,0,0,0,0,21,0,0,21,0,21,0,0,21,21,0,127,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,31,63,31,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0\n15,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,95,111,79,79,31,127,31,15\n42,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,21,63,21,105,63,84,21\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,127,0,127,127,63,63,0,0\n42,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,42,42,42,0,42,0,0,84,84,0,42,42\n12,0,6,6,0,0,0,0,12,6,19,25,44,44,31,12,19,6,0,0,6,0,0,0,0,6,12,0,6,0,25,19,19,25,19,50,127\n127,84,31,21,31,52,10,0,21,0,0,0,0,0,0,0,0,21,10,0,10,10,0,31,31,42,31,31,31,10,21,0,0,10,0,0,42\n127,90,90,45,36,18,9,9,27,9,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,21,0,0,21,42,0,0,0,0,0,0,0,0,42,127,0,42,0,84,0,42,0,0,42,0,84,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,27,72,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,72\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,21,42,105,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,12,63,127,105,33,16,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,8,33,50,50,101,127,59,25,25,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,25,67,67\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,10,127\n0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,6,0,26,26,106,127,73,33,40,40,46,13,20,53\n0,0,0,0,0,0,0,0,0,0,38,38,50,50,63,127,127,101,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,127,72,36,36\n0,0,0,0,0,0,127,7,0,0,14,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,43,127,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,127,127,31,0,31,31,0\n127,47,79,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,21,127,42,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0\n0,31,0,0,0,0,31,63,127,95,31,0,0,0,0,0,31,0,0\n84,0,21,42,0,0,21,84,105,63,63,63,127,21,21,42,0,0,42\n0,0,0,0,0,0,0,9,39,39,127,87,78,48,48,29,19,39,19\n3,3,3,7,10,3,35,45,77,59,88,127,74,63,63,42,28,10,24,28,7,17,17,14,0,3,3,0,7,0,0,3,0,3,0,3\n0,7,0,2,9,9,9,34,43,70,58,127,70,39,58,56,46,17,19,14,4,4,9,4,4,4,2,2,4,0,0,0,0,0,0,0\n0,0,0,0,25,25,127,101,101,76,0,0,0,101,50,50,50,25,50,50,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,25,76,0,25,0,25,50,25,0,50,76,76,25,0,0,25,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,25,25,127,25,0,0,0,25,0,0,0,25,0,50,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,42,0,0,127,42,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,21,0,0,0,0,42,63,0,21,127,63,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0\n0,21,21,0,0,21,0,0,21,84,0,127,63,0,42,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,15,15,111,111,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15\n14,0,84,42,127,127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,63,31,0,0,0,0,0,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,31,0,0,0,0,0,0,0,31,0\n0,0,0,0,0,0,0,0,0,0,0,55,127,42,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,63,16,21,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,33,29,29,33,21,42,4,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,50,101,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,50,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,76,76,50,127,0,0,0,0,0,0\n0,63,127,84,42,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,5,0,77,77,127,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,38,27,44\n0,0,0,0,0,0,0,0,0,0,0,0,76,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,50,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,127\n0,0,0,0,0,0,0,4,4,15,127,70,4,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,127,101,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,127,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,127,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,17,5,40,75,69,127,34,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,57,109,69\n0,0,0,0,0,0,0,0,0,64,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,5,33,66,121,127,60,5,5,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,56,14,0\n0,0,0,0,0,0,0,0,0,0,0,59,22,37,29,29,112,127,74\n0,0,0,0,0,0,21,0,0,0,0,0,105,63,127,63,105,127,0\n0,21,21,21,63,127,0,21,84,42,42,0,21,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,31,31,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,13,26,127,66,33,93,106\n0,0,0,0,0,0,0,0,0,0,0,0,1,14,44,70,101,122,127\n0,0,0,0,0,0,0,0,0,0,0,101,127,50,76,127,50,0,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,114,88,127\n0,0,0,0,0,0,0,0,0,31,0,15,47,0,0,31,63,31,127\n0,0,0,0,0,0,0,0,0,0,0,9,4,13,49,22,81,90,127\n0,0,0,0,0,0,0,0,0,0,0,1,1,1,3,7,36,90,127\n0,0,0,0,0,0,0,0,0,31,0,31,0,31,0,0,31,0,31,0,31,31,0,0,0,31,127,0,0,0,0,0,31,0,0,0,0\n0,0,0,0,0,0,0,0,11,0,23,23,23,23,69,103,127,115,115\n0,0,0,0,0,0,0,0,0,21,21,42,21,0,21,21,0,42,127\n95,127,79,79,47,31,63,15,15,15,15,15,0,0,0,0,0,15,31\n12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,31,15,9,3,3,31,107,127\n0,0,0,0,0,0,0,0,0,0,17,30,118,109,127,74,52,35,30,4,4,0,0,0,0,0,0,0,0,0,0,17,30,30,70,61,122\n0,0,0,0,0,0,0,0,0,21,74,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127\n0,0,0,0,0,0,0,0,0,31,15,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,38,88,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,91,127,56,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,63,31,0,31,0,0,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,63,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,1,6,27,97,127,71,23,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,25,73,126\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,91,119,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127\n0,0,4,1,0,0,0,4,2,3,56,127,22,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,9,22,76,82,69,31,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,9,47,127,127\n0,0,0,0,0,0,0,9,48,127,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n108,127,72,72,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,36,0,36,0,18,18,0,18,18,0\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,84,42,42,84,21,105,21,42,0\n127,68,68,31,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,97,74,59,11,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,18,11,7\n127,50,101,63,50,19,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,12,31,76\n127,79,47,0,15,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,31,0,31,0,0,31,31,47,31\n0,54,90,90,90,54,18,127,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,39,71,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0\n104,44,59,67,59,82,127,97,119,67,22,7,7,0,0,0,7,0,0\n127,127,63,31,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,10,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,47,127,42,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,32,127,29,6,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19\n0,0,0,0,0,0,0,0,0,0,0,0,4,8,16,16,38,59,127,55,38,21,25,0,8,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,127,54,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,34,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,36\n127,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24\n0,0,0,0,0,0,0,8,8,59,25,16,127,118,101,59,25,8,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,19,63,127\n9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,9,22,49,127\n0,0,0,18,0,0,18,36,127,0,0,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,127,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,84,105,127\n127,49,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,25,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,42,21,0,0,0,42,0,84,0,0,0,0,21,105,0,0,0,0\n42,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21\n63,127,0,0,31,31,31,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,31,31,63,0,31,0,0,0,31,0,0,0,0,63,63\n0,0,0,0,63,0,0,0,0,0,0,0,42,42,21,0,21,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,17,17,0,127\n0,31,0,31,127,15,0,0,0,0,0,47,0,0,0,0,0,0,0\n42,42,84,21,0,0,0,0,0,0,0,21,0,42,21,127,21,21,0\n0,0,0,0,63,63,0,127,0,0,0,63,127,63,127,127,0,0,0\n0,0,0,0,0,0,0,0,0,95,31,63,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,21,105,52,95,127\n127,56,14,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,12,0,0,12,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,105,0,0,0,0,0,0,0,0\n0,84,42,42,105,21,84,63,42,42,42,42,42,42,0,42,42,63,21,127,63,84,63,127,105,127,42,21,63,42,63,63,42,21,42,0,0\n0,21,0,21,42,42,42,0,63,0,42,21,0,105,127,63,0,0,0\n127,127,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,127,127,0,63,0,0,63,0,0,0,0,0,0\n0,127,50,50,0,25,0,0,50,0,0,0,0,25,25,0,25,0,25,0,0,25,50,25,25,0,0,25,0,25,50,25,0,0,50,127\n0,0,0,0,0,0,0,0,0,25,0,0,25,0,25,50,25,127,101,50,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,12,0,12,38,0,127,76,101,50,12,38,12,25,12,0,0,12,0,0,76,76,63,76,25,12,38,0,12,12,0,0,12\n0,0,0,0,0,6,6,0,6,13,33,73,113,53,33,13,40,20,33,0,26,13,53,93,127,120,46,13,13,0,6,0,0,6,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,36,45,18,127,36,36,45,9,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,18,0,9,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,9\n57,80,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n127,36,36,36,0,0,18,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,0,18,0,36,0,36,54\n0,36,0,0,0,0,18,0,0,127,54,108,108,54,72,36,0,0,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,63,42,63,127\n63,31,0,0,0,0,0,0,0,31,0,0,127,0,31,0,31,127,127\n0,0,0,0,0,0,0,0,0,1,0,4,3,3,13,56,78,127,64\n0,0,0,0,39,29,29,0,48,68,127,117,39,68,39,29,29,39,19\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,101,127,101,101,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,38,63,101,127,63,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,127,25,25,50,50,50,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,25,50,50,0,25,50,101,50,127,50,0,25,0,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,72,72,127,0\n127,39,23,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,55,103,55,15,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15\n97,37,22,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,22,7,14,44,127,29,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0\n127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,127\n123,127,42,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0\n127,84,70,56,105,56,70,63,14,28,7,14,0,0,0,0,0,0,0,21,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,14\n127,77,21,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,9,18,9,0,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,97,50,29,4,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8\n50,127,12,25,0,0,12,50,0,12,12,12,0,0,12,0,0,0,0,0,0,12,0,0,0,12,38,25,38,38,114,12,25,38,0,50,25\n0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,31,0,0,0,0,0,0,31,0,63,0,31,63,127,63,31,0,0,0,0,0,0\n63,127,87,31,23,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,0,0,7,0,0,0,0,0,0,0,23,23,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,63,63,127,63,63,0,0,63,63,63,127,63,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,63,0,0,0,0,63,63,0,0,0,0\n63,0,0,63,0,0,63,0,63,0,0,63,63,0,63,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,63,0,63,63,0,0,0,0,0,63,127,0,63,63,63,0,0,63,0,0\n0,0,0,0,0,0,42,42,127,0,14,14,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,127,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,41,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,114,101,127\n127,127,39,7,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,127,101\n0,95,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,31,0,0,0,0\n31,127,0,7,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0\n84,127,84,42,42,0,42,0,42,0,0,42,0,42,42,0,0,0,0\n63,95,31,63,63,63,63,31,0,0,0,0,0,31,0,31,127,0,127\n84,0,0,84,42,42,127,42,84,42,42,0,0,0,0,0,0,0,0\n0,0,0,0,18,18,36,0,0,0,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,18,0,0,0,18,0,0,18,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,58,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,98,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n11,11,27,27,38,99,127,60,77,38,38,38,27,33,11,11,5,5,11\n0,0,76,0,0,76,0,0,0,25,127,76,76,50,50,50,25,0,25,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,65,17,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,12,12,12,0,0,0,0,0,0,0,0\n127,0,31,95,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,95,31,0,0,0,0,0,0,0,0,63,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,31,95,0\n127,56,56,49,49,7,7,21,0,14,0,0,0,0,0,0,0,0,0\n127,63,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,127,0,127\n127,96,52,37,24,9,9,3,0,0,0,0,0,0,0,0,0,0,0\n127,90,29,4,4,2,2,2,7,2,2,0,0,0,0,0,2,0,2,0,0,2,0,0,0,2,2,2,0,7,0,7,2,9,29,51,73\n0,127,95,31,0,0,0,63,0,0,0,31,0,0,0,0,0,31,0\n76,25,127,50,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,114,127\n127,0,0,0,0,127,0,0,0,0,0,0,0,0,63,0,127,0,63,0,127,0,0,63,127,0,63,0,63,0,0,0,0,0,0,63,0\n0,50,25,0,0,0,25,0,0,0,76,76,25,127,50,50,76,50,25,25,0,25,50,101,101,0,76,0,50,25,0,0,0,0,0,0\n0,50,0,0,0,25,0,25,50,25,25,50,50,76,101,0,76,0,0,50,25,76,127,50,50,50,50,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,84,0,84,42,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,114,25,38,25,38,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,50,76,76,127,76,50,76,0,0,0,0,0,25,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,101,50,127,25,25,25,0,0,0,25,25,0,0,0,0,0,0\n0,0,0,0,0,0,0,7,7,14,52,37,37,44,67,74,127,22,7,0,0,0,0,0,0,0,7,22,14,14,7,0,0,29,22,37,14\n0,0,0,0,0,0,42,84,0,127,42,84,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0\n0,0,0,0,0,0,5,0,0,0,0,0,15,5,42,37,84,127,116\n0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,37,63,127,79,79,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,26,127,52,5,0,0,0,0\n0,2,4,17,9,14,27,7,22,37,54,62,27,72,127,62,34,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,127,25,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,76,25,50,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,76,50,25,25,127,76,0,0,50,0,25,0,0,0,0,0,0,0\n0,1,1,0,0,3,3,10,92,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,127,127,42,84,84,0,42,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,127,0,42,42,0,84,0,0,0,0,84,0,0\n39,107,127,78,68,68,48,29,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,29,107,58\n63,0,31,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,95,0\n84,127,84,84,42,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,31,31,63,39,31,31,55,15,47,47,95,127,15,31,7,0,7,15,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,19,117,107,127,48,68,48,29,58,19,39,29,0,58,29,19,0,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,0,0,31,0,0,0,95,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,29,19,127,68,19,19,9,29,39,39,19,39,29,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,105,84,127,42,63,0,21,0,21,21,63,63,21,21,0,0,21,21,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,63,0,63,63,31,0,0,0,31,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,84,84,127,127,0,84,42,42,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,42,0,42,42,127,42,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,0,0,63,63,127,127,63,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,127,0,0\n31,31,0,63,31,127,0,0,31,31,63,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\n84,0,0,42,84,84,127,42,84,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,32,84,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,63,90,54,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,33,127,118\n42,21,42,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,23,80,127,115,115,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63\n0,0,31,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,31,127\n101,76,50,25,0,0,0,0,0,0,25,25,25,0,25,0,0,0,25,25,25,0,0,50,50,127,0,0,25,0,0,0,25,25,0,0,50\n16,8,25,0,0,76,33,16,42,42,25,50,127,110,50,59,8,33,16,25,16,16,16,16,33,8,16,16,16,8,8,33,33,59,0,67,118\n63,63,0,95,63,63,31,0,0,0,31,0,0,0,31,0,0,31,0,0,63,95,95,95,127,0,31,95,95,31,0,0,0,63,0,0,0\n0,18,18,72,54,18,0,0,54,36,0,0,127,0,18,18,18,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,5,5,11,23,5,40,127\n0,15,0,127,111,15,15,15,31,0,15,0,0,0,0,0,0,15,31\n0,0,0,0,0,0,0,0,14,14,28,42,28,56,84,98,84,127,84\n0,0,0,0,0,0,0,0,0,0,0,14,0,84,127,42,14,0,0,0,42,28,28,28,14,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,21,0,21,127,105,63,21,0,0,21,21,21,63,21,21,0,0,0,0,0,0,0,0,0,0,0\n80,66,120,127,40,73,40,0,20,13,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,6,6,26,20,13,0,33,93,26\n63,31,31,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,95,31,0,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,63,0,0,0,0\n105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,31,63,127,95,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,31,10,105,127\n68,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,39,78,87,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,19,9,39,87,68,127\n0,0,0,0,0,0,0,0,0,31,95,0,95,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,127,63\n0,0,0,0,0,0,0,0,0,42,127,21,84,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42\n31,63,21,31,42,21,42,0,10,10,31,21,10,42,52,63,42,10,31,10,0,10,21,31,31,74,63,63,31,63,42,127,74,74,31,63\n16,0,8,8,42,33,25,33,8,25,16,8,42,59,25,127,118,42,50,25,16,25,16,25,16,50,8,8,16,25,16,8,50,25,42,33\n0,0,0,0,0,0,0,0,18,36,36,127,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,63,127,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,18,0,18,0,54,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,54,127,36,0\n0,0,0,0,0,0,0,0,0,0,0,84,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,105,127\n0,0,127,63,63,0,63,0,0,63,63,63,63,63,0,63,63,0,0,0,0,127,127,0,0,63,0,0,0,0,63,63,127,0,63,0\n0,0,0,0,0,0,0,0,31,31,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,63,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,0,127,42,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,36,127,108,0,36,54,54,36,72,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,63,127,0\n39,0,9,9,9,29,39,68,87,117,127,78,39,0,0,9,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,15,47,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,50,101\n0,0,0,21,21,42,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,63,0,0,127,63,63,63,0,63,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,15,15,95,127,63\n0,0,0,0,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,127,63\n0,0,0,0,0,0,0,0,0,0,21,21,42,105,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127\n0,0,0,0,0,0,0,0,0,25,0,127,76,0,25,101,25,0,0\n0,0,0,0,0,0,0,0,0,0,0,38,88,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,127\n0,0,0,0,0,127,127,127,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,63,0,0,63,0,0,0\n0,0,0,0,0,0,0,0,0,42,105,127,105,42,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,42\n127,127,127,0,63,0,0,0,0,63,0,0,63,0,0,0,0,0,63,0,0,0,127,63,127,0,0,0,63,0,63,63,0,63,0,63,0\n84,42,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,84,84\n0,0,0,0,0,0,0,0,0,0,28,56,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,56,0\n79,60,33,14,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,7,16,22,59,84,127\n29,4,14,29,0,0,4,14,9,9,19,9,9,14,9,14,24,19,14,43,9,9,0,4,19,14,4,29,0,53,14,14,48,14,92,53,127\n66,57,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,30,69,127\n63,63,6,12,0,12,6,6,6,12,12,6,25,0,0,0,12,0,0,0,6,6,0,19,0,0,12,12,6,6,31,12,12,31,38,114,127\n127,69,28,11,5,11,0,0,11,5,5,0,5,0,0,0,5,11,5,23,5,0,5,5,0,0,0,0,0,0,0,0,0,0,5,0,0\n25,25,9,12,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,31,25,47,127\n127,84,84,42,0,0,0,0,0,0,0,0,0,21,84,42,63,42,42,84,42,0,21,42,21,0,21,0,0,0,0,0,0,0,21,0,0\n0,63,31,31,0,0,15,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,63,15,31,47,127,79,111,127\n127,72,16,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,13,24,26\n127,69,20,4,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,2,7,12,23,32\n127,100,40,20,6,6,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,0,6,6\n112,127,56,70,42,42,28,28,28,28,56,28,0,0,0,0,28,28,0,0,0,14,0,0,0,0,28,14,14,42,14,0,28,56,56,84,28\n127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,68,45,18,4,22,18,13,4,0,0,0,4,0,0,0,0,0,0,0,0,4,0,0,0,4,4,0,0,4,13,4,18,4,27,54,36\n0,3,7,3,3,3,15,3,23,3,15,59,19,63,39,43,39,59,39,31,27,0,3,3,0,0,3,7,7,7,3,3,7,19,11,47,127\n127,35,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,42,21,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n97,94,72,127,61,76,58,83,65,47,43,18,7,14,10,3,21,29,7,14,14,21,3,3,3,7,10,25,43,21,14,10,3,10,10,14,10,7,25,32,21,7,32,50,21,25,14,10,3,0,3,0,10,0,0,0,0,0,0,0,0,0,0,3,3,7,10,10,36,25,54,39\n95,82,104,120,99,110,127,95,62,62,35,14,13,6,8,5,12,4,8,10,5,12,10,13,6,10,13,20,41,29,20,18,6,16,13,20,20,20,28,24,22,32,60,20,32,33,17,2,2,5,4,2,9,1,1,1,0,1,1,0,1,0,1,4,5,6,9,10,29,41,48,72\n0,72,18,54,90,90,72,127,108,0,18,0,18,18,0,18,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,0,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18\n0,14,56,14,28,127,14,56,70,28,42,0,0,0,0,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,0,42,127,84,84,0,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,31,95,31,63,0,31,31,31,0,0,0,0,31,63,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,127,84,84,0,0,127,0,42,0,42,42,42,42,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,63,21,127,63,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,21\n15,15,79,0,127,47,31,15,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,15\n42,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,39,127,68,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,127,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,127,81,127\n127,59,11,7,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,84,84,127,127,84\n127,69,34,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,31,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,63,0,127,31,0,0,0,0,0,0,63,31,127,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,21,31,10,127,95,63,95,31,31,31,0,21,21,0,74,21,10,42,21,84,95,84\n52,18,22,0,11,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,3,11,44,127,119\n0,42,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,84,0,42,84,42,127,0\n127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,36,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,18,0,36,54,127,108\n127,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n6,38,25,6,38,19,38,19,6,19,0,0,12,12,0,0,0,0,12,6,12,6,0,6,6,25,6,0,0,0,0,6,12,12,38,63,101,127,82,69,6,50,38,25,19,19,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n18,0,0,27,36,36,18,36,45,9,9,9,9,9,9,27,0,0,9,27,0,0,0,0,0,18,9,0,0,0,0,0,0,9,36,63,127,81,117,99,27,27,54,72,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,0,0,21,127,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,0,42,0,21\n0,42,0,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,42,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,31,0,0,31,31,127,0,0,0,63,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,63,31,0,95,63,0,0,0,0,31,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,50,0,25,0,50,0,25,0,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,101,50,76,127,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,39,127,58,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,42,42,42,0,0,0,0,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,108\n0,127,76,50,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0\n127,113,65,35,10,9,4,3,1,1,1,1,1,0,0,0,0,1,0\n0,127,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,84\n93,105,63,42,38,21,16,8,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,21,8,25,21,21,63,127,110\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,19,14,58,29,63,127\n73,61,36,38,28,14,4,0,2,0,0,0,2,0,2,0,0,2,2,0,0,2,0,4,6,2,0,0,8,8,22,40,65,49,69,118,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,63,47\n127,47,63,111,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,79,127,111,0\n84,63,127,0,0,0,21,0,0,0,0,42,0,0,0,21,0,0,0\n108,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n74,68,37,10,5,0,0,5,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,31,68,127\n127,49,69,34,20,17,5,5,8,0,5,0,0,0,0,0,0,0,0\n0,127,63,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,12,76,25\n63,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,0\n6,48,60,48,54,78,127,36,84,6,6,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,24,18,30,18,24,18,54,18,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,18,12\n77,49,60,115,127,57,49,46,15,2,2,2,2,0,0,0,2,0,0,0,0,0,0,2,0,0,4,0,0,0,0,4,2,0,4,11,17,22,37,62,80,37,53,40,28,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,17,4,6,77,37\n127,99,52,24,9,3,1,0,0,0,0,0,0,0,0,0,0,0,0\n127,80,41,25,21,22,24,30,23,19,13,8,7,4,4,2,2,1,2,1,1,2,4,7,8,15,18,25,28,31,31,22,23,22,23,25,33\n90,53,22,14,5,31,8,25,36,36,36,62,67,59,62,56,70,127,107\n30,20,5,10,5,7,2,2,2,2,0,0,0,5,2,0,2,5,0,2,12,2,0,0,0,5,7,5,2,0,0,2,2,7,15,50,127\n42,21,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,127\n53,60,23,16,3,20,6,10,3,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,13,6,3,36,50,76,127\n127,39,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,71,95\n80,11,5,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,11,0,23,11,34,23,0,127\n127,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,31,63,63,127\n50,50,25,57,12,6,6,6,12,25,12,19,12,12,0,19,19,0,31,0,6,0,6,6,25,12,6,19,12,6,31,6,44,57,50,82,127\n127,127,63,48,48,41,44,33,26,18,3,7,14,11,0,7,3,11,0,11,7,3,11,11,18,22,18,56,56,52,26,59,37,56,56,70,112\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,25,127,101,101,76,25,50,0,50,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,50,0,76,25,127,101,101,25,25,50,25,50,50\n0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,84,42,127,42,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,84,84,42,0,84,0,84,42\n127,101,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,12,76\n0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,21,10,0,127\n127,76,50,12,63,50,0,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101\n101,127,127,88,63,84,50,8,29,8,8,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,8,4,4,50,0,0,0,4,4,8,0,0,4,0,4,12,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,16,8,33,97,93,110\n0,25,50,50,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\n108,54,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,36,54,108,127,72\n63,127,42,10,21,0,0,0,0,10,0,0,21,0,0,21,10,0,0,10,10,0,0,0,0,0,52,0,10,0,10,10,0,0,10,10,0\n0,47,31,15,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0\n58,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,48,97\n127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0\n101,127,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0\n0,127,0,0,0,0,0,0,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,18,0,0\n31,31,63,95,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,31,0,63,31,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,0,0\n74,52,65,56,52,96,48,127,26,30,21,17,4,4,4,0,4,0,0,0,0,13,0,0,0,0,0,17,0,4,4,4,0,13,8,13,26,35,35,21,43,21,52,56,21,8,8,8,0,4,0,0,4,0,0,0,0,0,0,0,0,0,0,4,17,13,13,4,13,8,8,21\n95,127,47,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,36,0,0,0,0,18,0,0,108,36,54,72,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,90,108,127,54,18,18,36,0,18,0\n25,12,12,25,0,12,0,0,0,38,12,76,25,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,12,76,127,12,25,25,25,38,12,0\n0,0,0,0,0,0,42,0,42,0,0,0,42,127,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,42,0,0,0,0,0\n0,42,0,0,42,0,42,0,127,0,84,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0\n0,6,0,0,0,0,0,6,0,0,0,19,25,19,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,82,127\n0,0,0,0,0,0,0,0,0,0,18,18,0,36,72,0,36,127,18,18,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,127,50,101,127,76,50,0,25,0,0,0,0,0,0,0,25,0,0,25,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,127,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,95,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,41,127,76,37,9,4,8,11,5,1,2,1,0,0,0,0,2,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,25,127,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,111,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,15,47,15,0\n127,63,9,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,56\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,0,14,37,56,47,75,127,98,98,28,56,37,47,37,9,28,18,42,37,37,9,18,42,14,65,98,122\n84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,127,84,127,127,0,0,0,0,0,0,0,0,0,0,0\n42,42,84,105,21,127,0,42,42,21,0,0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,14,42,127,56,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,16,67,50,127,67,25,50,33,25,25,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,98,70,127,70,42,70,14,42,42,42,28,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,7,39,79,127,63,47,7,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,1,0,4,7,30,89,127,99,72,50,25,15,10,11,3,4,1,2,0,0,0,0,0,0,0,1,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,8,50,25,12,127,88,46,38,38,8,8,8,4,0,0,0,4,0,0,0,4,0,0,0,0,0\n0,0,0,0,0,0,0,0,23,39,127,79,19,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,5,38,69,127,96,96,33,20,4,4,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,31,10,52,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,84,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,47,15,0,0,0,0,0,0,0,0,0,0,0,31,0,15,63,31,95,127\n0,0,0,0,0,0,0,0,27,0,27,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,25,101,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,127,101\n0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,76,25,127,101,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,21,63,42,63,0,0,63,0,0,0,42,21,84,63,63,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,36,127,36,54,0,0,0,0,0,0,0,0,18,0,0,18,0,54,0,54,0,0,0,0,0,0,0,0,0,0,0,0\n63,37,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,14,84,127,14,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,3,6,34,83,127,105,114,6,30,0,0,0,0,0,0,0,6,0,3,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,2,0,37,57,89,127\n127,88,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,31,31,127,0,79,63,15,63,63,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,31,31,31,63,0,63,31,31,0,0,0,31,31,127,0\n127,118,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n3,1,5,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,15,33,71,127\n127,77,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n58,127,19,9,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,13,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,14,14,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,28,0,28,14,28,56,127,84,42,28,56,28\n0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,50,38,76,127,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,0,76,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,42,84,127,42,84,21,63,42,42\n127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,72,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,2,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,58,127\n0,0,0,28,14,0,14,28,14,28,0,14,0,14,14,14,14,14,14,0,14,28,28,14,28,28,14,14,56,14,0,0,42,56,127,28,84\n0,42,127,84,42,42,0,21,0,0,0,0,21,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,21,0,0\n127,56,18,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,50,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,46,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0\n29,48,9,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,14,48,127\n72,127,72,18,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,32,15,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,74,52,31,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,127,99,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,36\n0,28,14,127,70,56,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,14,42,14,28,98,112\n31,79,31,127,63,47,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,50,25,50,127,0,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,0,0,0,0,0,0,0,0,0,0,0\n127,47,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,31,63,31,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,31,0,31,0,0,0,0,0,63,31,0,0,0,0,63,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n25,50,101,50,76,127,76,0,101,25,0,50,0,25,0,0,0,0,25,25,101,25,25,76,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n21,63,127,84,84,84,84,63,84,0,21,0,0,0,0,0,0,0,0,42,21,21,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\n127,63,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,15,0,31,0,0,0,0,15,15,127\n112,127,42,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28\n127,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31\n127,74,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,21\n127,63,36,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,27,36,54\n127,31,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,31,0,0,0,0,0,0,0,0,31,0\n0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,42,42,42,42,42,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,101,25,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,10,21,10,42,21,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,52,42,105,95,63,42,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,84,127,31,10,10,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,0,15,31,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,47,127,79,95,63,15,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,47,63,111,79,63,47,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,7,0,0,14,28,70,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,35,127,127,35,14,0,7,0,0,0,0,0,0\n8,0,0,0,0,0,0,8,0,42,8,16,8,25,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,8,16,16,25,101,127,50,8,0,8,0,8,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,63,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,84,127,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,12,12,25,25,50,63,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,12,88,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,14,14,0,98,98,112,127,56,42,28,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,56,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,84,56,42,70,0,14,0,0,0,0,0,0\n0,0,0,0,0,0,7,0,7,22,14,29,104,127,104,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,22,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,22,37,14,37,37,0,22,14,7,0,7,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,48,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,42,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,11,11,11,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,11,49,127,88,71,33,16,5,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,3,10,3,10,13,0,3,0,0,0,0,0,0,0,0,3,6,6,0,36,33,90,127,110,86,56,10,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,12,0,25,25,127,88,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,18,0,18,72,127,90,72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,63,63,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,127,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,127,50,25,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,11,34,23,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,57,57,23,127,23,11,23,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,63,31,127,79,31,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,47,0,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,36,36,90,90,127,72,72,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,72,72,36,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,25,0,25,0,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0\n0,0,0,0,31,0,0,31,0,0,63,31,31,0,63,0,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,95,31,63,63,0,63,31,31,0,31,31,0,0,31,31,0,0,0,31,0,31,63,95,63,127,63,95,0,0,0,0,0,0,0,0,0\n0,42,0,0,0,0,0,0,0,0,0,42,42,127,42,42,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,84,84,0,84,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,42,42,0,84,42,0,0,42,0,42,0,0,0,0,0,0,0,0\n127,90,42,16,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0\n9,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,4,13,4,9,27,72,127,108,99\n127,90,25,11,6,0,1,1,0,0,0,0,0,0,0,0,0,0,0\n127,86,69,71,8,4,2,4,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,79,57,31,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,8,27,70,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,127,50,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,6,18,53,92,127\n127,75,25,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,5,9,16,38,39\n127,57,23,5,5,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,11,11,5,0,5,23,23,34\n127,66,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,58,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,4,19,63,115,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,11,27,81,92,127\n63,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,95,63\n78,127,87,87,39,68,0,68,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n40,127,106,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,123,66,19,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,29,127\n127,84,54,26,9,9,8,9,7,2,1,1,1,0,0,2,1,1,3\n0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,0,0,0,0,0,8,8,8,16,93,33,33,33,76,84,127,101\n101,127,118,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,17,59,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,31,74,84,63,10,21,127\n127,77,41,16,5,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,5,3,6,5,7,3,9,5,6\n127,95,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,20,62,127\n42,21,42,127,127,0,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,103,127\n76,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,76,127\n95,127,31,0,31,31,15,0,15,15,0,31,0,0,0,0,0,0,0\n72,18,0,0,54,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,11,29,67,127\n0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,0,95,95,63,63\n0,23,39,31,79,127,47,47,55,0,7,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,19,127\n72,127,127,54,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0\n63,95,127,63,31,0,0,0,0,0,15,0,0,0,15,31,15,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,51,127\n0,21,31,127,95,21,105,10,31,31,31,31,42,31,21,31,10,52,21,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n16,20,69,127,57,86,61,28,40,65,45,57,90,57,28,32,20,20,8,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,31,31,31,63,0,0,63,31,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,79,95,47,47,15,0,47,79,63,31,63,127,111,111,47,47,47,31,47,15,15,15,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,31,79,31,31,0,0,31,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,15,15\n0,0,0,0,0,0,0,0,63,63,127,63,0,63,127,63,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0\n0,0,0,0,0,25,0,0,0,25,25,76,76,127,25,0,0,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,63,31,63,127,0,127,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,0,42,84,127,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,47,47,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,15\n0,63,127,95,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,0\n0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,95,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,12,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,34,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,57,127,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,11,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,0,95,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,127,84,21,42,0,0,0,0,0,0,0,0,0\n77,77,78,92,106,127,124,85,51,37,25,16,14,6,5,4,4,3,6\n127,98,40,26,17,15,18,24,27,21,26,25,26,24,25,10,18,18,13,13,16,19,26,39,50,49,45,44,33,25,12,18,13,15,18,30,36\n8,2,6,2,4,2,4,6,31,33,52,41,24,35,45,89,95,127,104\n127,47,11,4,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,8,24,49,32,51,84,127\n127,67,28,3,3,0,7,3,5,1,5,3,3,0,1,7,3,7,9,1,1,5,11,7,5,5,7,11,0,1,3,0,0,3,1,1,22\n127,77,22,6,2,2,1,0,4,10,4,0,2,4,1,0,0,0,0,2,4,2,2,4,9,16,13,14,22,10,13,9,5,1,2,1,0\n127,99,30,0,3,0,0,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,87,34,19,7,2,9,7,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,3,8,46,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,127,108\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,38,127\n127,84,21,0,0,0,0,0,0,0,0,0,21,0,21,42,0,0,21,105,21,21,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,21,42,0,21,21,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,42,0,0,63,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,3,0,0,5,5,3,5,29,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,10,2,0,0,0,0,0,2,2,38,127\n0,31,15,0,15,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,47,0,15,127\n127,95,95,63,63,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\n56,28,42,42,14,28,28,0,28,0,14,0,14,0,14,28,0,0,14,14,0,0,0,0,42,14,42,42,14,28,14,0,14,28,70,127,56\n127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,9,52,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,4,1,2,0,0,0,2,53,127\n0,0,0,3,2,2,1,0,0,0,1,0,1,3,0,1,0,3,0,1,0,1,4,4,4,15,32,58,51,67,71,85,84,105,121,118,127\n0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,25,0,12,12,0,0,25,0,12,38,0,12,12,76,76,50,50,50,101,88,127\n127,114,0,88,25,12,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,112,56,28,0,0,14,28,0,14,28,42,14,42,28,56,127,70,14,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,0,0,50,0,0,0,25,25,76,127,25,50,76,0,25,127,101,50,127,25,25,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,0,101,25,127,101,101,50,127,76,0,101,76,25,25,0,0,0\n0,31,63,0,0,31,63,31,31,0,31,0,31,0,0,0,31,95,127,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0\n31,0,31,0,31,0,95,31,0,0,0,0,31,0,0,63,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,22,0,0,0,22,22,52,127,59,44,22,52,22,14,14,44,59,67,44,29,22,67,14,7,7,0,7,89,82,22,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,16,0,16,0,42,33,59,110,127,93,8,16,33,8,33,25,50,110,67,25,25,59,59,16,8,8,8,59,67,59,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,127,42,0,127,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,6,19,0,0,6,12,25,12,50,38,69,63,127,57,31,6,31,44,6\n0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,0,0,0,0,11,11,23,34,92,127,57,46,92,69,69,11,23,11\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,84,84,84,42,42,127,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,84,42,0,0,0,42,127,42,84,0,0,0,0,84,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,80,78,22,26,7,4,1,0,0,0,0,0,0,0,0,0,0,0\n127,53,26,9,5,3,3,5,3,0,3,0,0,0,0,1,0,0,0,0,0,0,0,3,3,0,1,1,17,7,0,1,1,0,0,3,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,127,101\n127,117,49,19,4,3,2,0,0,0,0,0,0,0,0,0,0,0,0\n127,72,42,12,12,6,0,0,0,3,0,3,0,0,0,0,0,0,3,0,0,0,0,3,6,3,9,0,6,15,0,9,6,15,3,21,6\n101,25,101,25,0,0,0,0,0,0,25,127,76,101,25,50,101,25,50\n127,71,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,49,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,105,42\n0,0,0,0,0,63,127,127,0,0,0,127,0,0,127,63,0,63,0,0,127,0,0,63,0,0,0,0,0,0,0,0,63,0,63,127,127\n0,0,31,0,31,63,0,63,127,31,0,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,63,0,0\n76,76,25,25,25,50,25,0,50,25,0,25,0,0,0,0,25,25,25,0,0,101,76,25,50,127,50,76,25,0,25,0,0,25,25,50\n0,63,42,0,84,63,63,0,0,21,0,42,63,0,21,21,21,0,21,21,21,21,84,42,127,105,21,0,0,0,0,105,84,21,0,21\n0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,0,127,127,0,0,0,0,0,127,127,127,0,0,0,0,0,0,127,0,127,127\n0,0,0,0,42,0,0,0,0,127,0,42,0,127,84,127,127,84,0,0,42,42,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n25,0,0,0,0,0,0,0,0,25,25,0,50,127,127,50,76,0,25,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,63,31,0,31,31,0,127,31,0,0,31,31,31,31,0,0,0,0\n127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,0,52,0,21,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,10,0,10,21,42,10,52,42,84,127,74,52,31\n50,50,38,0,50,25,0,0,12,0,0,0,12,0,0,0,0,0,0,0,12,0,0,0,0,0,0,50,0,50,50,63,101,114,127,101\n21,0,42,21,63,21,127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,42,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,69,57,127,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,127,10,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,15,0,31,47,127\n84,0,42,0,0,0,0,0,0,0,84,127,84,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0\n0,0,0,0,0,84,0,0,0,42,127,127,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,16,16,76,76,127,76,16,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,25,16\n0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,15,15,0,0,0,0,0,0,0,0,0,15,15,31,31,0,0,15,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,10,10,10,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,18,72,54,72,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,54,36,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,28,28,70,70,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,28,127,0,14,0,0,14,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,5,33,30,55,66,53,43,10,25,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,12,30,127\n0,0,0,0,0,0,0,0,25,25,50,50,127,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0,127,127,63,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,36,127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,27,127,45,9,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,9,9,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,10,10,0,10,0,0,31,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0\n0,0,0,0,0,31,0,63,31,63,0,63,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,63,0,0,0,0,105,21,105,127,42,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,127,56,14,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,28,127,14,98,28,28,14,14,14,14,14,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,72,72,72,36,36,72,18,18,0,54,18,36,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n36,127,72,0,0,0,18,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,18,36,54,54,127,36,18,0,0,18,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,31,0,127,127,63,95,0,95,0\n0,0,0,0,0,0,0,0,0,0,84,63,84,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,95,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,111,127,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,12,12,127,50,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,84,127,84,42,84,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,84,127,33,84,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,15,0,15,47,0,15,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,127,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,48,127,78,117,9,48,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,6,0,0,0,24,72,54,66,72,127,127,90,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79\n90,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,54,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\n127,31,42,10,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0\n31,0,31,31,63,0,31,63,0,31,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,79,127,127\n0,0,0,0,0,0,0,31,0,0,31,127,63,31,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,84,105,127,116,105,42,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,63,63\n0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,127,63,42,127,105,21,0\n0,63,127,105,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,112\n127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,42,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,63,63,0,63,95,0,127,31,95,63,31,95,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,63,127,105,42,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,0,0,127\n0,0,0,0,15,15,0,47,95,127,31,47,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,15,15,15,0,0,0,31,95,127,31,31,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n74,37,37,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,52,44,67,127,112,74,37,22,0\n127,95,38,12,12,25,6,0,6,19,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n36,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,36,18,54,127,0,0,0,0,0\n127,50,25,12,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,76,127,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,105,127,84,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,0,0,42,21,0,42,63,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,50,25,0,0,25,0,50,0,127,0,0,0,50,0,25,0,0,0,0,0,0,0,0,0\n127,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,91,68,60,10,10,0,5,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,30,25\n42,105,0,42,0,21,0,21,21,42,21,42,0,0,21,42,0,0,0,0,0,0,0,21,0,0,0,42,21,0,21,42,127,84,42,84,127\n127,55,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0\n42,0,63,0,0,0,42,42,0,21,21,0,0,0,0,0,0,0,21,21,0,42,0,21,0,0,0,0,21,127,42,84,127,0,0,21,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,127,50,25,25,76,0\n0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,33,127,33\n63,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31\n0,0,0,42,0,0,0,0,0,0,42,0,42,42,0,0,0,0,84,84,84,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,45,9,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,84,42,0,42,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,81,54,45,127\n0,0,0,0,31,95,0,0,0,0,63,0,127,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127\n0,0,0,0,0,0,0,0,25,25,0,50,127,76,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31,31,31,0,63,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,42,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,0,0,0,0,0,0,0,0,0\n0,0,42,0,0,0,0,42,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,23,7,0,15,7,0,23,71,127,87,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,84,42,0,0,127,42,42,84,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0\n0,0,0,0,28,14,14,127,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,61,49,34,15,18,18,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,42,52,105,127,52,95,63,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,10,0,0,5,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,5,0,21,10,0,0,0,0,0,0,0,0,21,31,89,74,127\n0,12,101,76,50,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,101,38,0\n127,69,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,34\n127,0,42,42,0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42\n0,0,0,0,0,0,0,0,0,0,18,54,90,127,72,72,36,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0,0,36,0,36,0\n0,0,0,0,0,0,0,0,39,127,68,78,78,58,19,39,87,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,63,63,127,63,63,63,63,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,127,63,63,0\n0,0,0,0,0,0,0,6,20,127,120,100,46,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,14,0,0,70,127,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,42,127,63,21,105,21,0,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0\n0,0,0,0,0,0,9,9,68,97,9,127,97,0,0,0,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,63,0,0,63,0,63,127,0,0,127,127,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,25,0,0,0,101,0,25,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,25,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76,50,101,127,0,25,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,50,25,0,25,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,25,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,76,50,127,0,0,25,0,25,25,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,95,0,31,31,31,31,0,31,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,21,63,0,0,21,21,21,0,0,0,0,0,0,0,0,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,21,10,0,0,21,21,21,10,0,21,10,31,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,21,95,63,63,127,84,21,0,10,10,0,0,0,21\n0,0,0,23,23,0,11,0,23,46,11,23,46,23,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,11,34,34,46,115,127,0,11,23,11,0,0,0,11\n14,21,28,21,7,28,21,35,0,35,28,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,21,35,42,127\n0,0,0,0,0,0,0,31,0,15,0,15,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127\n0,0,0,0,0,0,0,0,0,31,63,31,63,127,127,63,63,31,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,68,127,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,21,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,18,36,127,36,54,0,0,0,0,0,0,18,0\n56,127,56,84,14,28,56,0,42,42,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,127,127,0,0,127,63,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,127,0,63,127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0\n0,0,0,0,0,63,31,0,0,63,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,63,63,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,63,15,127,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0\n0,13,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,6,26,6,10,30,30,120,127\n0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,38,0,25,127\n0,0,42,0,21,63,0,42,21,63,0,0,21,0,0,63,0,84,21,84,63,21,0,21,21,42,21,21,21,0,0,0,21,42,63,21,127\n0,6,0,6,0,0,6,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,44,31,127,101\n0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,8,15,66,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,0,0,0,21,21,0,10,21,74,74,127\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,0,0,0,42,0,42,0,0,42,42,84,42,42,84,84,0,0,42,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,29,63,127\n0,0,0,21,21,42,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,18,18,0,54,127,36,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,74,52,24,49,21,7,10,0,3,0,0,0,0,0,0,0,0,0\n12,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,18,24,57,78,127\n0,0,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,3,26,30,33,46,36,36,23,56,66,127\n28,49,21,14,0,0,14,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,14,7,21,21,14,21,56,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,21,0,63,42,42,127\n0,0,0,0,0,0,95,31,127,0,0,0,0,0,0,0,0,31,0,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,117,111,72,45,66,33,54,45,30,21,12,21,6,6,3,3,3,0\n127,41,19,9,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,54,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n98,127,42,7,0,0,0,0,14,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,63,127,42\n127,81,38,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,63,0,0,12,0,127\n84,127,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,63,63,63\n127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,72,90,81,127,90,99,36,27,0,9,0,18,0,0,0,0,0,0\n127,73,18,14,6,1,2,0,0,0,2,0,0,1,0,0,0,0,0\n56,127,47,9,9,14,14,14,4,0,0,0,4,0,4,0,0,9,0\n127,105,84,31,0,31,10,74,42,42,21,0,0,0,0,10,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,127,0,0,0,0,0,63,0,63,0,0,127,127,0,0,63,0,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,67,74,29,59,127,119,37,14,14,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,66,66,20,53,127,113,13,26,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,21,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,0,0,0,21,42,21,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,50,0,0,101,101,25,50,25,0,25,25,25,0,0,0,25,0,0,0,25,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,42,42,0,84,42,0,0,127,42,0,42,0,84,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,84,0,84,84,42,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,0,42,84,84,42,42,0,0,0,42,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,84,84,0,42,84,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,0,63,0,63,0,63,127,63,0,63,0,0,0,0,0,0,0\n95,127,119,55,103,31,7,0,0,0,0,0,0,0,0,0,0,0,0\n127,74,31,21,10,10,21,31,63,52,31,52,31,63,21,10,31,10,0\n127,74,0,10,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0\n111,79,119,71,127,71,55,55,71,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,19,44,127,107,88,6,6,0,0,0,0,0,0,0,0\n40,127,80,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,84,105,127,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,72\n0,0,0,0,0,0,0,42,0,127,84,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,42,42,84\n127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,39\n50,0,0,0,12,12,12,12,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,0,0,0,0,127\n27,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,45,54,127\n127,101,114,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0\n0,0,0,0,0,0,0,0,0,31,127,15,0,0,15,95,0,47,0,0,0,31,31,0,0,0,15,0,0,0,15,0,0,0,0,0,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,21,105,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127\n127,47,15,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,15,111,63\n127,63,26,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,13,15,43,91\n63,127,15,47,15,47,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,31,31,63,0\n46,80,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,127,92\n127,79,63,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,31,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,63,15,15,63,127\n70,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,7,7,7,14,14,14,7,56,127,112\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,10,21,15,31,42,95,127\n0,0,0,0,0,0,0,14,56,84,42,127,14,84,112,98,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,28,28,0\n0,0,0,0,0,0,0,0,0,31,0,63,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,63,63\n0,0,0,0,11,0,0,0,69,69,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,0,31,95,63,31,63,127,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,3,12,3,15,19,28,25,34,9,19,15,6,3,0,0,3,0,0,0,0,0,0,0,0,0,0,6,12,22,25,50,76,127\n0,0,0,0,0,9,36,27,72,117,117,127,45,36,54,9,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,18,0,0\n0,23,0,0,0,0,0,34,11,46,127,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,31,0,0,31,0,0,0,127,0,95,95,31,95,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,95,31,0,127,0\n127,103,60,30,14,6,2,1,0,0,0,0,0,0,0,0,0,0,0\n127,112,99,69,60,56,58,30,18,14,5,2,2,2,4,2,3,2,1,1,1,7,4,8,9,24,4,0,0,1,1,0,1,2,4,8,15\n127,103,67,21,11,11,13,17,3,33,59,115,73,59,27,31,19,13,31\n127,91,60,51,55,56,55,52,40,27,11,8,3,2,1,0,1,1,0\n73,63,30,24,33,34,55,91,127,81,48,45,16,7,3,2,1,1,0,0,2,0,0,0,11,7,3,3,1,0,0,0,0,0,0,6,60\n0,5,5,0,0,0,11,11,17,23,34,63,103,127,86,34,51,5,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,6,30,30,6,9,17,17,26,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,5,2,4,7,8,17,127\n127,39,66,102,17,4,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,23,19,25,11,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n11,0,0,0,2,0,0,8,2,13,8,11,30,0,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,2,0,2,8,24,27,104,127\n15,7,2,2,0,0,0,0,5,7,21,15,0,2,0,5,0,0,0,0,2,0,2,0,0,0,0,0,0,0,2,0,0,0,13,31,127\n0,0,0,0,12,12,12,19,25,6,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,31,19,31,107,127\n3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,18,83,127\n0,5,5,0,0,0,0,0,0,5,11,23,17,17,5,5,0,5,0,0,0,0,0,0,5,0,23,11,0,11,11,5,0,17,28,46,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,21,84,105,84,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,38,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,9,0,9,45,54,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,3,4,3,25,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,29,58,9,97,48,127,97\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,41,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,15,0,0,0,15,31,47,47,31,63,127\n127,46,33,29,12,21,12,25,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,21,7,3,3,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,92,25,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,12,16,3,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,15,31,47,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,19,13,21,7,4,3,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,21,10,0,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,6,0,60,33,93,33,127,80\n0,21,21,0,0,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,0,0,0,0,0,21,21,0,0,21,21,0,84,42,21,0,105,63,42,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,27,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,88,127\n127,28,7,0,35,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,23,3,0,7,3,11,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,116,127\n39,9,9,29,9,14,4,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,39,92,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,127,50\n42,127,63,0,0,0,0,21,0,21,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,21,21,0,21,42,105,105,42\n127,127,47,31,23,7,23,7,15,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n23,0,0,0,0,0,0,11,11,11,11,11,46,57,0,0,0,0,0,0,0,0,0,23,11,11,23,127,57,34,23,23,0,0,0,0,0\n1,2,3,2,3,4,8,12,29,51,98,127,88,40,11,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,18,28\n0,0,0,0,0,0,0,15,63,79,127,127,79,63,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0\n23,19,19,34,23,46,46,50,50,127,80,123,80,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,31,15,63,71,111,79,127,79,23,47,63,7,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,9,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,127,84,21,0,42,0,42,127\n2,5,0,0,0,2,9,17,16,64,124,127,113,83,17,4,1,4,2,0,1,0,0,0,0,0,0,0,0,0,0,0,3,3,9,21,13\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,23,0\n0,0,0,0,0,0,0,0,3,24,80,127,54,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,42,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,18,0,0,45,127\n0,0,0,0,0,0,0,11,11,34,46,69,34,34,0,0,0,0,0,0,0,0,0,0,0,80,127,0,0,0,0,0,0,0,23,34,23\n0,0,0,0,0,0,0,0,7,4,14,12,59,72,102,127,39,29,19,27,22,4,2,2,0,2,2,7,7,12,14,22,39,37,32,12,17,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,2,4,0,0,7,7,2,0,4,0,0,0,0\n0,0,0,0,0,0,0,0,9,13,13,26,107,87,91,127,74,45,26,16,29,0,0,3,13,13,22,3,9,6,22,3,3,13,13,6,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,0,3,0,6,9,6,9,0,3,0,3,0,0,0,0\n0,0,0,0,0,0,0,0,0,63,63,47,31,63,15,15,47,0,47,127,79,15,47,0,0,0,0,0,0,15,0,15,0,0,0,31,31,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,0,79,0,0,0,0,15,127,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,0,3,2,2,5,11,127,18,17,3,1,0,1,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,2,8,14,127,18,8,4,1,0,1,1,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,24,127,120,20,44,13,3,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,101,101,50,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,18,127,18,90,0,36,0,0,0,0,18,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,56,28,0,14,127,127,14,14,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,57,117,127,39,21,20,8,2,2,2,0,0,3,4,1,1,1,2,1,2,6,9,9,23,32,15,6,1,0,1,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,2,5,5,50,127,116,36,27,24,9,5,1,2,2,4,8,3,3,1,1,1,3,1,3,7,30,111,83,23,16,7,2,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,31,127,15,15,47,0,0,0,15,0,0,0,0,0,15,0,0,47,63,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,84,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,29,47,127,39,13,1,7,1,3,5,1,9,25,15,7,0,1,1,1,7,3,17,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,15,43,127,102,24,9,0,21,3,3,6,6,21,24,21,18,0,0,3,3,0,6,6,3,3,9,0,0,0,0,0,0,0,0,0,0,0,0,0\n1,0,0,0,0,0,1,3,7,12,36,127,31,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,16,13,7,3,2,1,0,0,0,0,0\n0,0,0,0,0,0,1,1,10,14,37,127,31,11,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,14,10,5,3,1,0,0,0,0,0,0\n31,31,0,0,0,63,0,0,0,31,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,127,95,63,0,0,0,0,0\n0,0,0,0,31,0,0,31,31,0,63,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,0,31,127,0,0,0,0,0,0\n2,2,3,0,0,1,0,3,12,21,70,127,42,16,4,2,4,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,9,10,6,0,0,0,2,1,1\n0,2,8,5,2,2,8,17,20,56,76,127,79,26,5,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,20,35,0,0,11,2,2,2,5,2\n0,0,0,0,0,1,0,1,7,32,127,115,30,7,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,1,1,1,0,0,0,0,0,1\n0,0,1,0,1,3,2,7,10,19,54,127,58,14,2,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,5,11,4,3,2,2,0,0,0,1,0\n0,0,0,0,0,63,0,0,0,127,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,63,127,84,84,42,21,84,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,15,31,127,31,15,15,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0\n4,8,1,0,4,11,12,17,25,20,31,103,127,118,19,9,2,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,4,10,4,2,0,0,0,0,0\n2,3,3,1,2,2,5,5,18,35,35,66,127,108,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,6,14,17,2,0,0,2,0,0\n127,21,42,42,42,42,0,0,0,0,42,63,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\n23,23,11,0,0,0,0,11,0,0,57,127,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,11,0,0,11,23,0\n0,0,0,0,0,0,0,0,0,21,21,21,21,42,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,72,127,72,54,90,72,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,54,72,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,105,105,42,21,21,0,0,0,0,0,0,0,0,0,0,0,21,42,21,42,84,63,21,63,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,9,0,14,83,127,83,9,0,0,0,4,0,0,0,0,0,0,0,0,0,4,14,24,39,4,19,29,4,0,0,0,0,4,0,0,0,0,0\n0,0,10,5,5,5,15,5,55,127,127,66,15,10,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,20,0,0,0,15,40,25,20,25,0,0,5,0,0,0\n0,7,0,0,7,0,21,0,56,119,127,56,14,28,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,7,7,0,42,63,21,0,0,0,0,0,7\n0,0,0,0,25,50,76,76,50,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,0,0\n0,0,0,0,0,0,0,0,18,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0\n0,0,0,0,0,0,31,0,15,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0\n0,0,2,0,0,0,0,0,0,4,14,42,72,89,92,82,14,9,2,2,2,2,0,0,0,0,0,0,2,4,4,19,24,74,87,127,42,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,14,4,7,14,4,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,31,89,87,76,42,15,5,2,5,7,0,2,0,0,0,0,0,0,5,7,31,50,79,113,127,68,39,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,10,5,13,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,0,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,26,43,127,52,0,4,2,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,59,64,127,57,0,0,2,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,111,127,31,0,0,0,0,0,0,15,0,15,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,31,63,63,95,95,127,47,31,15,0,0,0,0,0,0,0,0,0,0,0,47,79,111,111,127,63,15,31,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,9,19,9,117,87,68,68,39,9,9,9,0,9,0,0,0,9,0,0,0,0,0,0,39,39,127,87,19,9,39,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,127,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,1,0,1,1,4,17,42,127,32,8,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,7,6,4,2,0,0,0,0,0,0\n0,1,1,0,1,0,1,2,9,18,41,127,44,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,12,2,2,3,0,0,0,1,0,0\n0,0,0,0,0,10,0,0,84,63,31,95,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,10,0,0,0,10,0,10,0\n0,0,0,0,0,7,0,37,29,97,52,127,74,22,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,7,14,7,0,0,0,22,0\n0,0,0,0,0,0,0,0,0,0,0,31,95,63,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,63,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,50,101,127,50,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,101,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,76,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,7,0,7,22,37,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,74,127,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,84,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,63,42,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,58,127,107,58,39,9,0,9,0,0,0,0,0,0,0,0,0,48,0,29,0,9,9,9,9,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,27,45,108,127,81,36,27,0,9,0,0,0,0,0,0,0,9,0,0,0,18,0,18,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,72,127,99,117,108,54,63,18,9,0,0,0,9,18,0,9,0,0,0,0,9,9,18,63,27,18,0,18,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,40,60,100,127,66,60,46,13,6,0,0,6,13,20,6,0,0,0,0,0,0,13,0,40,20,26,40,33,33,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,12,12,127,63,0,0,0,0,0,0,0,0,12,25,12,12,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,23,0,11,127,57,11,0,0,0,0,0,0,0,11,23,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,18,27,45,99,45,45,27,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,27,18,0,9,0,0,0,0,0\n0,0,0,0,0,0,0,19,9,127,117,48,9,9,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,39,58,48,9,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,127,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0\n0,0,0,0,0,21,0,21,127,105,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n105,56,49,21,7,10,5,10,3,3,7,8,15,12,10,35,26,49,37,79,75,127,104,79,63,42,24,35,12,0,1,0,0,0,0,0,0\n0,0,7,0,7,0,0,0,0,0,0,15,0,7,7,7,47,71,71,127,87,15,55,15,0,0,7,0,0,0,0,0,0,0,0,0,0\n127,63,31,95,0,31,0,0,0,0,0,0,31,31,0,31,0,0,95,0,31,63,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0\n8,0,0,0,1,0,0,0,0,4,7,10,1,8,13,33,45,65,127,86,102,100,55,55,40,20,13,8,7,0,5,0,0,1,2,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,12,127,63,38,50,12,0,12,0,0,12,12,0,0,0,0,0,0,0\n0,0,0,0,0,0,12,0,0,0,0,50,25,25,63,63,63,101,127,38,63,0,12,0,38,12,0,0,0,0,0,0,0,0,0,0,0\n33,47,58,127,58,24,15,8,5,8,4,0,3,5,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n4,20,11,52,127,68,9,4,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,21,0,127,105,21,0,0,21,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n58,57,82,127,75,36,32,28,8,19,10,3,7,12,7,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n9,29,68,53,127,43,24,58,39,19,9,0,29,34,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n61,65,127,105,65,39,21,61,8,4,8,30,17,0,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,9,9,11,17,43,65,127,85,68,21,5,14,3,7,5,3,8,9\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,16,5,5,22,38,16,127,60,44,27,27,0,16,11,16,11,22,11\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,1,0,1,9,31,83,127,52,12,5,2,0,0,1,0,0,2\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,127,63,63,0,0,0,95,0,0,31,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,15,9,18,17,67,127,103,79,51,70,54,47,63,47,39,26,15\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,33,46,33,26,40,60,127,127,40,0,6,6,13\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,22,29,29,89,89,74,127,112,89,52,29,67,44,22,7,22,44,89\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,95,127,0,31,0,31,31,0,31,0,0,0,0\n127,81,54,45,18,9,27,0,0,0,0,0,18,18,18,18,18,36,127,81,90,72,90,108,81,27,9,9,0,27,9,0,0,0,0,0,0\n0,0,0,7,0,0,0,7,0,7,7,7,0,7,0,7,44,44,89,127,119,89,67,59,44,22,7,0,7,7,7,0,0,0,0,0,0\n127,101,76,25,0,0,0,12,12,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,36,36,9,9,9,9,0,0,0,0,0,0,0,0,9,0,18,18,18,54,36,45,0,27,0,0,0,0,9,9,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,6,9,31,53,85,107,50,85,127,50,31,12,3,3,3,0,0,0,0,0,0,0\n48,39,83,92,122,127,53,4,9,19,0,4,9,4,24,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,127,127,31,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,42,127,105,77,21,49,21,28,7,35,7,0,56,28,14,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,31,31,31,95,127,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,0,0,63,127,127,21,42,127,42,63,63,84,21,21,84,127\n0,0,0,0,0,25,0,0,0,0,0,0,0,25,0,0,50,127,25,76,0,0,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0\n127,46,17,0,11,5,0,5,0,0,5,0,11,5,5,0,0,5,11,34,34,28,40,11,5,17,5,5,0,0,0,0,0,0,0,5,23\n87,61,46,17,21,7,29,4,9,7,0,4,9,7,9,17,48,31,53,70,80,127,119,87,39,2,0,4,0,0,0,0,0,0,2,0,0\n0,0,0,0,0,63,0,0,31,0,0,0,0,0,127,127,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,38,22,9,6,12,22,41,28,31,12,3,12,6,12,6,3,3,0,22,41,127,88\n0,0,2,0,1,1,2,1,0,0,2,2,4,15,27,72,117,127,122,109,108,74,39,20,10,0,0,0,0,0,1,0,0,0,0,0,0\n25,0,50,76,127,38,38,38,12,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,74,127,10,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n4,24,78,127,85,43,28,10,6,10,8,6,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,56,70,127,56,28,28,0,14,0,0,14,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,6,0,6,38,127,95,25,19,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,50,50,127,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,14,0,14,28,77,84,127,56,42,0\n127,31,47,31,15,15,31,0,0,15,15,15,0,31,47,0,0,0,0,15,15,31,15,15,31,0,0,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,29,9,19,68,97,29,127,48,39,29,39,39,58,117,117,78,97,19,0,0,39,0,0,0,0,0,9,0\n127,89,67,46,15,12,8,3,4,1,0,0,0,0,0,0,0,1,2,2,5,6,8,6,8,8,5,4,2,2,4,0,1,1,1,1,1\n42,127,21,63,21,0,0,0,0,0,84,0,0,0,0,0,0,0,84,0,0,0,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0\n127,100,82,89,48,37,48,33,29,11,7,0,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,11,0,22\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,7,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6,3,13,127\n127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,63,127,0,127,0,63,0,0,0,0,0,0,0\n95,15,127,47,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,15,15,15,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5,5,31,74,105,116,127,58,68,26,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0\n7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,22,14,52,74,127,97,74,59,37,52,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,22,0,0,14,14\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,21,105,127,42,84,21,63,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,127,31,0,95,0,0,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,127,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,8,0,110,127,16,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,33,127,8,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,57,127,0,0,0,0,0,0,0,0,0,0\n35,23,67,127,27,75,39,19,7,31,23,23,7,7,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,3,11,11,7,35,35,15,27,111,59,35\n26,15,29,108,127,47,26,13,0,7,7,0,7,10,21,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,0,5,5,7,13,18,5,29,39,29,37\n76,25,76,25,76,0,25,0,25,0,0,25,76,127,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,25,25,0,25,25,50,25\n101,25,0,101,76,0,50,0,0,0,25,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,25,50,0,0,0,0,25\n0,0,0,0,31,127,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,31,0,31,0\n0,0,25,127,0,50,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,0,0,25,25\n5,21,74,84,127,52,5,26,0,15,10,10,5,5,15,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,5,37,52,63,15\n14,52,44,127,89,67,82,22,14,37,44,7,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,14,22,89,97,22,37\n95,0,31,127,31,95,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0\n42,0,84,84,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,84\n0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,80,127,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,10,31,31,10,52,127,84,63,74,74,31,21,0,31,42,63,31,0,0,0,10,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,42,127,42,63,21,21,63,21,21,84,63,127,63,63,21,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,63,63,42,21,21,0,21,127,42,63,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,28,14,84,14,14,0,56,84,127,98,0,0,0,14,0,14,14,14,28,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,19,19,107,127,58,97,68,48,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,19\n50,0,0,0,12,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,88,63,114,88,127,88,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,31,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,101,50,127,76,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,81,0,5,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,127,54,0,4,0,0,0,0,0,0,0,0\n38,25,63,50,88,25,12,12,25,0,38,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,127,63,50,63,63\n12,25,88,127,114,63,38,12,12,0,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,88,50,114,12,63,63,38\n7,0,87,127,87,47,39,23,7,0,31,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,23,39,23,63,7\n25,25,63,76,63,12,127,12,0,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,50,76,76,38,12\n0,14,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,14,0,42,42,127,98,127,98,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0\n0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,14,98,70,98,84,127,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,42,42,42,0,0,0,0,0,0,0,42,127,0,42,127,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,0,63,0,0,31,0,31,63,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,28,14,56,0,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,47,0,15,15,47\n22,19,10,9,6,10,9,10,12,17,21,27,39,52,72,83,109,125,127\n0,0,0,0,1,1,1,0,1,2,1,3,7,14,15,41,75,100,127\n81,28,19,10,7,5,7,4,5,6,14,10,13,26,25,38,48,60,98,127,118,69,47,24,13,7,3,2,1,1,0,0,0,0,0,1,0\n108,18,0,9,0,0,0,0,0,0,0,0,0,9,27,72,108,127,63,36,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n3,0,0,0,0,0,0,0,0,0,0,0,1,4,7,19,37,71,127\n0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,19,6,44,127\n20,39,82,127,68,54,82,66,24,11,3,1,5,15,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,19,58,127,127,68,19,39,9,0,9,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,16,39,18,13,10,20,28,45,73,81,78,127,118,90,58,47\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,24,69,32,32,12,32,32,81,94,127,98,90,61,24,32,24\n23,62,42,59,51,65,47,57,108,72,69,67,67,97,82,112,127,115,98\n6,4,4,4,5,3,2,4,3,7,14,23,18,16,21,28,52,94,127,77,47,50,33,21,14,10,9,4,5,2,0,0,0,0,0,0,0\n0,0,0,0,0,0,1,0,3,2,17,61,91,109,25,22,39,127,103\n127,14,10,14,0,0,0,17,31,123,21,7,21,17,35,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,71,88,29,4,42,16,12,46,46,21,16,16,25,50,127\n127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,127\n21,10,0,10,0,0,0,127,105,105,74,21,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\n0,0,0,0,0,0,0,0,0,0,0,23,0,46,46,80,127,46,34,34,46,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,46,46,57,103,80,46,46,11,11,0,0,0,0,0,0,0,0,0,0\n127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,45,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0\n0,0,0,0,0,0,0,0,12,0,12,12,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,95,0,0,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0\n0,0,63,127,127,63,0,0,127,0,0,0,63,0,0,127,0,63,0\n127,68,63,52,52,21,15,15,26,37,5,10,0,5,10,26,0,10,10\n127,83,105,109,76,10,2,4,2,4,0,0,6,2,4,2,10,6,8,4,21,8,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,9,9,0,19,9,48,19,117,127,68,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,98,127,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,127,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,127,90,36,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,31,31,0,0,31,31,127,31,31,31,127,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,9,0,0,9,0,19,19,127,19,78\n71,71,44,40,10,27,35,40,82,82,120,112,127,103,88,86,71,46,38,31,44,21,21,12,4,2,4,4,6,0,0,0,2,0,0,0,0\n90,54,18,9,9,0,0,0,0,0,0,27,18,18,9,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,11,39,21,35,75,49,54,39,72,94,101,105,75,127\n0,31,0,0,31,31,0,63,0,63,95,31,95,95,0,0,0,127,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,7,22,14,0,0,0,22,104\n0,42,28,0,0,28,42,28,14,14,14,14,56,56,84,127,28,70,56,14,14,14,0,28,0,28,0,0,14,42,0,0,0,0,0,0,84\n101,127,50,0,25,0,25,0,0,12,12,12,0,0,0,12,0,0,0,25,12,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,31,31,31,0,0,0,0,95,63,127,63,63,63,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,14,0,14,0,0,0,0,14,0,0,0,14,28,127,14,0,42,14,0,0,0,0,0,0,14,14,28,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,50,50,0,101,0,25,127,25,50\n0,0,0,0,0,0,0,0,0,0,0,7,71,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,7,7,0,0,7,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,9,0,0,9,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,8,25,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,9,0,18,127,36,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,0,63,0,127,63,0,0,0,0,0,0,0,0,31,31,31,31,0\n127,63,81,90,36,36,27,36,9,9,9,0,0,0,0,0,9,0,36,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,47,15,63,127\n0,0,0,0,0,31,31,31,63,127,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,25,0,12,0,0,0,0,0,12,76,38,88,127\n0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,0,63,63,127\n0,7,5,4,4,5,8,10,14,15,35,28,62,73,105,122,127,112,121\n4,9,9,11,9,2,11,16,19,23,14,19,19,21,59,31,67,71,64,76,127,112,62,14,28,11,11,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,4,2,9,20,49,92,127\n0,0,0,0,0,0,0,0,5,5,0,0,11,11,22,127,66,115,66\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,90,108,127,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,28,56,28,0,0,56,28,14,0,0,14,0,0,0\n0,0,0,0,63,127,21,21,84,42,42,63,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n36,127,0,18,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,18,54,54,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,12,88,101,127,63,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25\n0,0,31,31,95,0,63,63,127,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,15,0,0,0,0,0,0,0,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,0,15,15,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,0,31,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,31,0,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127\n127,62,25,4,3,4,2,3,2,2,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,2,0,4,5,4\n127,45,11,3,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,7\n127,72,25,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0\n127,39,31,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,50,127,88,76,12,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,127,21,0,21,0,0,21,0,0,0,0,21,0,0,0,0,0,0,21,63,127,127,105,105,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,76,127,76,0,76,0,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,23,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,31,127,71,55,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,18,9,9,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,9,0,127,127,45,0,9,9,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,127,105,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,52,31,0,0,0,0,0,0,0,0,0,0,0,10,10,0,0,0,10,0,31,127,63,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,29,39,0,0,0,0,0,0,0,0,0,0,0,9,19,0,0,0,48,0,58,127,19,9,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,84,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,50,25,50,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127,63,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,12,127,76,101,0,0\n0,4,6,4,6,10,12,24,14,24,14,51,20,49,30,26,20,30,20,10,14,16,8,4,0,4,6,2,2,0,10,8,10,10,32,98,127\n127,31,0,23,7,23,7,15,7,15,31,47,47,31,15,15,7,15,15,39,15,23,7,0,0,7,0,0,0,0,0,7,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,8,5,0,8,25,95,127,107,36,5\n127,0,63,31,0,31,127,31,0,0,31,31,0,0,0,63,31,31,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,88,60,36,53,32,24,17,20,24,26,26,36,31,28,22,27,28,47\n109,127,63,33,23,22,16,2,7,4,2,7,6,3,7,6,8,16,14,6,8,2,17,9,4,1,1,0,0,1,1,0,0,0,0,0,0\n0,5,5,0,0,0,0,0,0,0,5,20,20,30,127,81,111,81,20\n11,11,2,0,2,0,2,5,2,0,0,0,5,11,14,34,86,103,127\n50,50,50,25,0,0,0,0,0,0,0,25,0,25,127,76,101,101,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,76,76,127,50,25,101,25,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,29,28,29,7,26,31,61,68,82,24,37,51,70,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,63,31,63,0,95,127,31,95,0,0,0\n78,105,105,90,58,68,105,95,75,58,46,58,65,63,41,43,61,75,127\n32,40,20,20,15,7,3,2,17,27,30,13,17,19,24,21,35,27,43,46,51,78,66,64,95,127,106,92,74,45,23,6,0,0,0,0,0\n0,0,0,0,0,2,2,5,21,27,62,83,70,127,56,62,51,56,32\n39,39,0,9,9,48,68,78,127,97,9,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,10,1,0,16,85,127,90,84,43,15,6,25,62\n127,34,11,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,0,0,0,0,5,5,0,0\n0,0,0,14,0,0,0,0,0,4,0,0,0,0,0,4,9,19,19,19,4,14,14,4,9,9,9,0,4,14,24,24,29,58,68,48,127\n127,13,12,2,1,3,1,8,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,23,55,127,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,84,42,127,84,105,63,63,0,42,21,42,21,0\n127,63,105,21,21,0,0,0,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,105,21,84,42,21,42,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,105,0,0,21,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,21,21,84,21,0,42,0,0,0,0,21,0,21,0,0,0,0\n0,0,0,0,0,25,0,0,12,0,12,12,0,0,0,12,0,0,50,63,76,101,127,76,50,114,127,50,76,12,12,38,50,88,25,63,0\n11,11,3,3,11,41,65,127,26,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,19,19,44,19,6,6,12,6,50,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,127,50,25,25,0,127,0,50,0,0,0\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,10,10,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,42,127,42,21,84,42,0,0,21,0,0,0,0,42,42,21,0,42,42\n0,0,0,0,0,0,0,4,0,0,4,0,4,0,4,9,24,34,24,43,53,127,39,68,9,4,4,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,2,0,2,33,127,64,47,38,7,16,7,9\n0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,0,0,0,127,0,95,95,95,63,31,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,38,63,76,50,114,38,50,0,0,0,0,0,12,0,0,0,0,0,0\n0,0,9,19,19,68,78,39,107,97,127,68,58,9,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,48,58,0\n0,13,0,6,26,46,60,60,40,73,127,73,53,33,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,33,33,80\n0,0,0,0,0,0,0,18,18,36,0,54,36,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,72,127,72,18,0,0,18,0,0,0,0\n0,0,0,46,34,0,0,11,57,46,46,115,11,46,0,11,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,23,127,57,11,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,127,0,84,42,84,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,95,0,0,0,31,0,0,0,0,0,0,31,31,31,0,63,127,63,31,95,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,36,18,0,127,108,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,50,25,0,25,0,76,127,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,0,25,25,0,25,25,0,0,0,50,0,25,25,0,50,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,63,0,0,63,0,127,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,63,0,0,63,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,127,127,0,127,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,63,0,63,0,0,0,0,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0\n0,0,50,25,0,25,25,0,25,0,25,25,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,25,0,0,0,0,0\n0,0,12,0,38,0,50,50,127,12,0,0,0,0,25,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,63,88,12,50,0,0,12,0,0\n56,28,14,14,0,0,0,0,28,14,0,0,0,0,42,56,127,112,56\n127,45,90,90,18,0,27,9,27,0,18,0,9,0,9,9,0,9,0,27,0,36,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,18,0,18,0,36,72,90,127,90,127,0,0,0\n127,105,21,0,31,10,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,7,0,15,15,39,79,79,55,127\n0,0,0,0,0,11,0,0,23,11,0,5,17,17,98,51,51,51,17,98,127,40,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,56,42,84\n0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0\n84,28,14,35,49,35,63,63,49,84,91,63,98,84,84,91,35,127,112\n127,63,76,0,12,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,38,25,0,0,12,0,0,0,12,0,0,12,0,25,38,38,101,127\n39,58,58,58,43,34,14,9,48,4,14,34,24,14,39,43,87,107,127\n80,127,80,66,46,13,20,20,0,0,0,0,20,6,6,20,33,53,33,46,53,73,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,25,0,0,25,25,25,50,127,50,0,101,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,63,0,0,127,63,0,127,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,0,25,76,127,50,25,0,25,0,25,25,0,0,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,42,0,84,42,42,0,0,84,0,42,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,95,63,127,63,31,63,63,0,31,0,0,0,0,0,0,0,0,0,0,0\n0,31,31,31,127,63,0,31,127,63,31,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,127\n0,0,0,0,0,0,0,0,0,0,0,50,12,12,12,50,38,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,127,58\n5,0,2,0,0,14,14,19,31,107,112,127,59,67,16,19,2,14,2,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,2,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,25,0,0,25,0,25,0,25,50,50,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,42,127,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,11,60,127,66,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,53,127,100,20,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,15,0,0,63,127,47,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,21,0,0,63,63,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,127\n0,0,0,0,0,0,0,0,84,42,42,42,0,42,127,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,21,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,7,0,7,0,7,0,7,0,0,7,7,0,23,23,23,63,127,15\n0,0,0,0,0,0,9,0,0,0,9,0,0,0,9,0,19,29,39,127,127,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,105,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,5,127\n0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,7,15,0,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,23,127,15,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,111,127,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,0,0,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,90,127,54,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,15,7,87,23,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,119,127,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,0,127,84,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,84,127,21,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,76,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,10,10,63,42,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,95,127,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,6,36,30,24,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,127,72,12,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,50,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,0,0,0,0,42,0,42,42,0,0,0,0,42,0,0,0,0,0,0,0,127,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,2,11,24,44,30,55,127\n0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,28,42,37,51,127,98,32,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,38,127,110\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,42,84,84,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,127,54,18,72,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,11,0,0,0,34,23,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,46,127,80,11,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0,11,23,11,92,80,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,14,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28,56,28,28,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,28,42,56,127,14,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,23,46,127,57,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,23,115,127,46,11,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,11,34,127,23,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,115,127,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,23,23,15,15,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,15,39,63,127,31,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,28,14,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,28,0,42,42,56,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,15,0,0,0,47,63,15,15,47,127,31\n0,0,0,0,0,42,42,0,0,0,0,0,0,0,21,63,0,21,42,127,105,63,105,0,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,10,21,15,52,79,52,89,127\n0,12,0,0,0,0,0,0,0,12,12,12,12,0,12,0,38,101,127,63,38,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,44,127\n0,0,63,31,31,0,0,0,0,0,31,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,9,0,0,0,58,0,58,127,19,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,31,0,127,0,95,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,31,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,105,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,127,127,0,84,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,84,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,90,68,23,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,11,127,99,58,28,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,25,127,88,55,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,39,127,87,51,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,18,36,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,47,63,31,127\n0,0,0,0,0,0,0,0,0,0,0,3,10,13,23,23,20,60,127\n0,18,0,18,18,36,36,18,54,0,127,108,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72\n0,0,0,0,0,0,0,0,25,25,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,127,50,25,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,5,25,15,15,30,81,60,127,45,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,5,0\n0,0,0,0,0,0,0,0,18,72,72,127,36,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,42,42,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,36,54,54,54,18,0,18,36,0,0,0,0,0,0,0,0,0,0,36,54,127,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,63,31,127,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,63,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,4,9,0,0,0,0,4,29,107,127,34,4,0,9,4,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,15,0,5,0,0,0,5,31,116,127,63,10,5,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,17,127,84,21,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,52,127,45,7,0,0,0,0,0,0,0,0,0,0,0\n9,0,0,0,0,0,0,0,0,4,9,127,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,4,0,0,0,0,0,0,0,0,0\n5,0,5,5,0,0,0,0,0,5,20,127,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,10,127,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,10,0,0,0,0,0,0,0,0,15,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,63,127,63,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,31,31,63,31,95,127,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,0,127\n0,0,0,0,0,0,0,0,0,63,0,127,95,0,127,127,0,95,127\n0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,63,63,63,63,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,6,6,0,12,6,12,12,12,24,18,36,90,127,48,120\n127,21,42,42,21,21,21,42,0,0,21,0,0,0,0,42,21,21,0,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,50,0,101,25,0,0,0,0,25,127,76,76,76,50,0\n0,0,0,0,0,0,0,0,0,0,3,7,7,14,22,33,52,82,127\n95,15,0,0,0,0,15,0,0,0,0,0,0,0,31,15,47,127,63,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,127,69,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,114,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,78,127,84,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,67,127,73,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,42,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127,19,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,50,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,31,95,127,15,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,0,0,0,0,0,0,0,63,127,79,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,127,87,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,78,9,9,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,0,0,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,105,63,84,0,0,0,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,71,55,31,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,15,7,15,0,0,0,7,95\n127,67,56,33,7,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,31,31,15,127,31,63\n127,91,31,14,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,4,0,0,2,14,2,47,79,79,59,43,6,4,0,4,0,2,0,0,0,0,0,4,0,2,2,4,0,2,16,20,36,69,65,16,12,2,0,0,2,2,0,0,0,0,0,2,0,0,0,4,8,24,98,127,57,22,6,2,0,2,0,4,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,6,27,77,127,94,29,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,10,30,29,19,14,5,0,1,0,0,0,0,0,1,0,0,0,0,2,2,3,12,52,91,93,62,33,13,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,58,9,127,9,9,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,10,42,0,10,10,10,0,10,0,0,0,0,0,0,0,0,10,0,21,63,52,127,31,10,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,18,127,54,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,127,50,25,0,0,0,0,25,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,127,39,0,0,0,0,9,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,16,59,76,127,93,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,42,76,25,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,2,15,43,42,16,2,5,2,0,1,1,0,0,0,0,0,0,0,0,0,0,4,7,42,127,63,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,0,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,0,12,38,114,127,88,76,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,12,76\n0,0,0,0,0,0,0,0,0,0,31,0,31,0,31,31,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,127\n127,55,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,68,18,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,57,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,69,17,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,31,55,85,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,3,10,42,105,127,105,113,59\n0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,1,8,17,31,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,30,38,50,123,127,107\n127,85,28,8,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3\n96,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,46,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,79,127,95\n127,48,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,67,31,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,27,25,40,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,72,127,36,0\n127,80,27,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,39,127\n127,77,31,11,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,6,15,28,39\n127,86,39,16,7,2,4,2,2,2,1,0,1,0,0,0,1,0,0,0,1,1,0,0,2,0,0,0,0,0,0,0,2,5,19,55,109\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,6,17,2,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,9,6,29,127\n127,91,57,38,27,23,18,12,11,8,8,6,3,2,3,4,4,4,3,4,3,3,4,3,6,5,6,5,5,6,5,3,2,4,5,5,5\n56,127,123,56,84,67,45,42,28,56,24,49,28,77,49,35,52,42,31,31,24,17,28,7,14,10,10,3,0,14,10,0,0,3,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,24,24,45,20,4,16,53,127,106,20,57,106,81,122,110,90\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,11,11,34,127,80,46,34,23,46,57,57,69,46\n127,117,98,119,68,72,35,30,11,14,7,7,7,18,16,9,11,11,23,16,18,21,35,18,11,9,9,0,4,23,7,7,14,2,7,9,4\n0,0,0,0,0,0,0,0,10,10,52,127,95,63,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,39,127\n0,0,0,0,0,11,11,23,11,0,11,57,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,57,92,92,46,11,0,11,0,0,0,0,0\n0,0,0,0,0,10,0,10,0,0,31,21,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,127,95,21,0,0,10,0,0,0,0,0\n0,0,0,0,0,15,0,0,0,0,15,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,95,127,15,0,0,0,0,0,0,0\n0,0,0,0,0,42,0,0,0,0,84,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,44,6,44,127\n0,0,0,0,0,0,0,0,0,14,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,14,0,0,0,0,0,0,0,0,0,0\n127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18\n105,127,42,21,21,0,21,10,0,0,0,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,9,127\n127,7,15,7,7,0,7,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,2,1,1,18,63,117,127,113,72,41,40,25,21,43,33,20,14,5,2,4,0,0,6,0,9,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,8,8,2,1,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,8,30,83,127,92,57,33,41,16,15,6,6,3,4,1,1,0,0,4,3,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,2,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,14,14,42,98,127,42,28,14,14,42,0,42,0,0,0,28,28,0,14,0,0,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,88,127,25,38,12,12,38,12,12,0,0,12,12,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,21,0,42,105,42,21,21,21,63,127,21,0,0,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,21,105,127,0,21,0,21,0,0,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,42,84,42,127,84,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,54,18,54,127,18,36,90,0,0,36,36,0,18,0,0\n0,0,0,0,2,0,0,0,0,0,2,28,127,14,0,2,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,10,45,127,56,0,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0\n0,0,0,0,0,0,0,0,0,11,23,34,127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,19,95,127,23,2,6,1,1,2,1,2,0,0,1,0,0,0,0,0,2,4,8,8,14,19,31,31,8,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,15,14,3,5,1,0,0,2,1,0,0,1,0,0,0,0,0,1,1,2,8,21,22,19,59,127,46,3,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,127,25,25,0,25,25,0,0,0,0,0,0,25,25,50,0,0,0,0,25,0,25,76,76,0,0,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,98,0,28,0,0,56,42,0,0,0,14,14,0,28,14,0,0,0,0,14,14,56,127,84,28,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,79,95,127,63,15,0,0,15,0,15,0,15,15,15,15,15,31,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,79,47,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,45,99,127,54,18,27,9,18,0,0,0,0,0,9,0,0,9,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,45,0,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,2,1,2,0,5,127,119,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,2,0,0,2,0,0,0,0,8,105,127,7,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,105,21,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,0,0,63,63,0,95,127,0,63,31,31,0,31,0,0,0,0,0,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,5,0,15,5,0,111,127,79,31,68,10,0,0,0,0,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,18,36,0,18,18,0,18,18,0,0,0,0,0,18,36,18,90,90,108,36,127,36,18,0,0,0,18,18,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,0,0,63,42,21,0,0,21,21,0,0,0,0,21,42,21,21,42,0,63,42,42,127,0,0,0,0,21,0,0,0,0,0,0,0,0\n109,127,83,43,21,13,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,30,41,48,52,91\n15,2,1,0,5,5,0,0,1,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,5,0,3,0,1,5,17,45,73,127\n127,97,79,44,31,28,17,19,7,5,8,17,5,4,4,2,5,5,10,23,8,13,5,22,20,17,13,5,20,5,20,11,20,20,36,42,35\n63,31,63,0,63,63,95,0,31,0,31,0,31,0,0,31,63,0,0,0,0,127,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0\n31,79,111,127,79,47,31,47,95,15,47,47,15,0,0,95,15,79,111,15,15,47,31,31,15,31,15,31,31,0,0,15,0,0,47,31,0\n127,33,7,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50\n127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\n127,28,42,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,112\n111,127,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,99\n0,0,0,0,0,0,0,0,0,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,127,0,0,0,63,63,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,63,0,127,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,101,76,101,127,127,76,76,50,0,50,76,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,76,50,0,50,76,76,127,127,101,76,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,95,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,0,63,95,63,0,0,0,127,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,31,31,95,31,95,31,127,63,31,63,0,63,95,0,0,31,0,0,0,0,31,0,0,31,0,0,31,0,0,0,0\n127,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90\n127,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,69\n127,105,42,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,21,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,42,0,0,0,42,105\n127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,38,127,63,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,42,63,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,127,42,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,19,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,76,0,76,76,101,127,25,127,50,50,50,0,25,0,25,50,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,40,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n80,127,73,46,53,53,26,20,6,6,6,6,0,20,0,0,20,20,33,40,33,13,0,0,6,6,0,6,0,13,0,20,6,6,20,0,13\n84,98,112,127,14,28,0,14,0,14,0,0,0,0,0,0,0,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,42,28,28,56\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,84,127,42,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0\n127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42\n25,0,0,76,25,50,25,127,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,25,101,25,0,0,25,25\n63,31,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,18,90,127,24\n0,42,84,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,42,0\n127,63,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n65,51,32,16,8,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,3,34,127\n127,34,20,9,4,3,3,3,2,0,1,0,0,0,0,0,0,0,0\n119,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,15,23,79,127\n30,45,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,53,93,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,15,127\n72,45,72,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,127\n0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\n46,20,10,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,83,127\n127,74,74,52,63,21,10,10,0,0,0,0,0,0,31,0,10,0,31,21,21,10,42,31,0,31,42,31,10,0,10,10,0,0,0,0,0\n84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0\n127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,42,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84\n111,106,87,76,71,65,77,91,97,93,97,108,104,117,111,117,123,127,120\n127,99,45,43,24,16,11,18,14,11,4,11,8,9,5,23,36,41,40,61,33,58,62,43,29,29,17,10,5,4,1,2,0,1,0,0,0\n1,2,0,1,0,0,0,0,1,1,0,4,14,21,71,72,78,127,124\n0,34,11,103,92,11,46,127,80,23,11,46,0,11,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,25,59,59,21,12,16,84,76,105,55,50,84,127,55,21,0\n0,0,0,0,0,9,9,0,0,9,0,0,0,0,9,9,9,72,72,72,127,54,81,63,36,45,9,18,36,18,27,0,9,0,0,0,0\n127,81,51,15,18,3,6,0,0,0,0,0,3,3,0,0,3,3,6,6,9,15,24,27,51,48,21,21,6,3,0,0,0,0,0,0,0\n0,127,127,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,63,127,0,0,63,0,0,0,0,0,0,0,0\n0,11,92,127,34,0,80,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,63,79,127,47,95,47,31,0,15,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,9,27,108,117,127,45,36,18,0,0,0,0,9,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,84,84,0,0,42,0,0,42,0,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,127,127,63,0,0,127,0,63,63,0,63,0,63,0,0,0,0,0,0,0\n127,127,42,42,21,0,21,0,21,0,0,0,0,0,0,42,21,0,0,42,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,0,12,0,0,12,0,12,0,12,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,84,127,84,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,0,0,127,63,63,31,0,0,0\n0,0,0,0,0,0,1,2,6,17,69,127,104,49,15,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,42,64\n0,0,0,0,0,0,0,0,0,56,127,28,70,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,28,28\n0,0,0,0,0,0,63,63,95,0,95,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,10,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,21,0,0\n0,0,0,0,0,0,0,0,0,11,127,93,121,16,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,11,22\n0,0,0,0,0,0,0,0,0,0,0,36,108,127,72,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,90,36,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,36,18,36,36,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,47,63,79,95,127,31,31,15,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,63,47,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,47,63,31,31,47,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0\n0,0,0,0,0,0,0,7,3,19,59,123,127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,35,39,19,0,3,3,3,0,0,0,0\n0,0,0,0,0,0,7,0,14,52,97,127,89,22,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,112,59,59,29,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,72,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,42,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,42,0,0,21,63,42,42,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,18,18,18,127,72,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,0,25,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,10,95,127,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,52,10,0,0,10,0,0,0,0,0,0\n127,56,8,5,2,1,0,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,1,0,0,2,1,0,3,3,4,0\n127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n44,77,41,33,8,5,24,16,2,0,2,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,27,33,46,127\n127,15,31,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,53,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,16,54,49,117,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,10,44,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,11,14,25,47,56,127,112,67\n127,64,14,5,7,2,5,3,3,3,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0\n127,107,69,41,24,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,10,9\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,27,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,1,10,13,75,127\n127,102,77,63,40,27,27,20,10,8,10,3,5,9,11,16,7,7,11,6,15,6,11,7,7,9,10,6,10,1,4,1,0,0,0,0,0\n89,82,127,112,59,29,22,7,14,7,7,14,0,7,22,14,52,52,29,22,22,0,7,7,0,7,0,0,0,0,0,0,0,0,0,0,0\n112,35,84,127,105,112,77,42,14,14,7,21,7,21,49,7,0,7,0,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,2,3,2,6,19,46,65,105,115,81,94,127,110,65,30,18,17,24\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,2,20,28,24,22,27,100,127,95,58,13,6,9,12\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,2,2,1,1,9,25,38,83,111,127,97,95,60,43,37,41,18,17,22,26\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,10,35,127,96,116,81,25,45,15,20,15,20,15,20,20\n105,127,74,52,63,42,52,0,0,10,10,10,10,0,10,10,0,10,52,31,42,105,105,52,42,52,21,21,10,0,42,10,0,0,10,10,0\n127,96,65,52,26,14,10,5,2,3,4,2,2,2,3,2,0,2,1,3,3,6,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,78,66,30,15,15,3,3,0,3,0,0,0,0,6,3,12,15,6,3,3,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,8,0,1,4,7,10,24,43,90,127,37,12,7,2,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,11,34,103,127,100,34,3,0,3,0\n127,111,119,55,55,63,15,7,0,0,0,0,0,0,0,0,7,0,0,0,0,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0\n127,80,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,15,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,69,11,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,2,10,4,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,3,25,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,27,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,12,25,38,127\n127,59,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,17\n127,60,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,25,38,40\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,42,42,105,105,84,84,42,63,84,127,21,21,42,42,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,42,42,105,21,21,127,127,105,42,84,21,21,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\n66,55,60,27,0,22,0,0,0,0,5,0,0,5,5,0,0,0,0,0,0,0,0,5,11,0,5,0,5,0,0,0,0,0,0,0,5,0,11,5,22,16,5,27,22,33,49,127,82,99,77,27,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27\n46,75,23,17,11,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,11,5,0,5,5,0,11,11,0,11,0,0,0,11,0,0,5,0,0,17,11,0,5,40,46,57,69,127,63,46,46,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,51\n0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,127,31,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\n84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,127,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42\n0,0,0,0,0,0,25,0,0,0,127,101,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,9,9,9,0,9,0,108,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,38,0,0,12,0,127,50,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,42,31,21,63,63,31,63,63,127,105,127,21,31,0,0,0,21,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,7,7,0,7,47,87,103,39,95,55,47,103,127,47,47,7,23,0,15,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,127,127,42,84,42,0,42,84,84,127,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,127,14,42,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,10,15,30,35,35,10,35,66,35,86,127,71,66,25,71,45,60,10,20,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,34,80,46,69,34,57,57,46,103,80,92,115,127,46,34,34,23,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,76,0,127,0,0,25,25,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,21,63,0,42,105,21,21,21,21,42,63,127,63,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n1,0,0,0,0,0,0,2,2,14,14,30,49,33,14,9,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,8,21,46,59,46,18,17,18,12,5,8,3,2,2,0,0,1,0,2,4,3,8,21,42,80,127,114,81,27,9,2,1,0,0,0,0,0,0\n0,0,0,0,1,1,2,2,2,7,21,23,28,31,16,11,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,5,5,17,20,36,26,25,13,7,3,0,5,5,0,2,3,0,1,0,2,0,3,8,14,38,85,112,127,73,26,9,0,2,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,50,0,0,50,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,25,25,25,0,50,0,0,50,0,0,50,25,0,25,25,0,0,0,25,101,127,76,25,50,0,76,0,0,0,25,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,50,0,0,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,0,50,50,50,0,0,0,0,0,0,0,0,0,25,0,0,0,76,50,50,50,101,101,101,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,7,15,0,7,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,23,7,7,7,7,7,0,0,0,0,0,0,0,0,15,15,7,23,15,7,63,103,127,111,47,0,7,7,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,9,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,4,0,9,0,0,4,9,0,0,9,0,9,14,0,0,4,9,39,127,92,63,29,19,14,4,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,72,18,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,2,5,2,5,5,2,16,51,67,127,16,5,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,6,0,3,0,3,0,35,58,127,29,6,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,27,127,63,18,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,12,38,127,76,44,0,0,12,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,31,63,127,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,12,12,0,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,1,1,16,22,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,9,66,127,38,5,4,0,0,0,0,0,0,0\n1,0,0,0,0,1,0,0,2,4,20,20,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,9,62,127,32,2,0,2,1,0,1,0,1,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,76,25,12,12,0,0,0,0,0,0,0\n0,18,0,18,0,0,0,18,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,127,18,18,0,0,18,0,0,0,0,18\n0,0,0,14,0,0,0,0,0,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,14,42,127,112,70,14,0,0,0,0,0,0,14\n0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,0,0,11,127,23,23,11,11,11,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,1,3,17,42,30,15,14,6,1,0,0,0,0,0,0,4,5,7,2,3,2,4,5,15,46,127,91,18,8,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,3,12,26,43,26,12,4,3,0,0,0,0,0,0,0,0,0,0,0,2,2,4,6,26,127,93,12,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,3,0,27,102,106,51,6,20,6,10,0,0,0,6,6,0,3,13,24,24,30,24,34,44,109,127,20,6,6,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,1,0,3,27,60,41,23,9,0,5,0,0,3,3,0,7,1,1,0,1,5,1,0,13,66,127,91,27,0,3,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,1,1,1,6,19,95,83,17,4,4,3,2,2,0,1,5,2,2,0,2,0,1,0,2,7,17,19,46,127,75,13,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,7,15,1,11,66,102,81,27,3,6,3,1,1,3,3,2,3,2,1,1,1,2,0,0,5,7,22,60,127,90,20,10,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,127,127,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127,5,0,0,5,0,5,0,11,34,17,0,0,5,23,0,5,11,5,23,11,28,17,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,8,0,16,0,0,16,16,50,16,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,8,0,8,25,127,67,76,33,59,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,7,21,35,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,0,21,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,28,42,127,91,56,7,0,0,7,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,6,6,6,6,19,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,12,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,127,76,25,0,0,0,0,0,6,0,6,0,0\n0,0,0,0,0,0,0,0,7,56,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,5,127,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,9,0,0,0,0,0,0,0,0,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,117,0,27,9,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,63,38,12,12,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,42,21,21,0,21,0,0,0,0,0,0,0,0,0,10,0,10,10,84,127,84,21,0,21,74,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,0,0,15,127,111,79,0,15,31,15,0,0,0,0,15,0,15,31,0,0,0,31,31,95,0,63,0,79,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,63,0,0,0,0,63,127,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,6,18,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,18,30,18,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,6,66,127,72,60,36,6,0,0,0,0,0,0,0,0\n0,0,0,0,0,3,0,0,0,0,0,0,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,20,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,0,6,10,56,90,127,23,3,3,0,0,0,0,0,0,0,0\n0,0,0,0,4,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,30,74,127,65,13,13,0,0,0,0,0,0,0\n0,0,0,0,0,0,4,0,0,4,14,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,9,43,68,127,83,29,4,0,0,0,4,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,127,45,18,18,18,9,0,0,0,0,0\n10,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,42,10,10,0,0,0,10,10,21\n0,0,0,0,0,0,0,0,0,0,25,25,0,50,127,76,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,76,127,25,76,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,15,0,15,0,31,111,127,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,15,15,79,31,95,31,15,0,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,127,0,31,0,0,0,0,0,0,0,0,0\n50,25,50,0,12,12,0,0,50,0,25,50,25,63,127,63,127,50,0,25,50,0,0,12,0,0,0,25,0,0,0,0,0,0,0,0,25\n0,0,0,0,0,42,0,0,0,0,21,84,42,42,63,42,21,0,0,0,21,21,0,0,0,0,0,0,0,21,0,0,0,21,42,21,127\n0,0,0,0,0,0,0,21,63,127,84,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,0,0,1,6,5,1,18,33,127,125,63,50,26\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,2,0,0,0,1,8,86,127,49,5,5,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,34,92,127,69,80,57,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,0,127,54,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,127,101\n0,0,0,0,0,0,0,0,25,63,38,12,50,38,50,25,50,0,0,0,0,25,0,0,0,0,0,0,12,0,0,12,0,50,63,38,127\n0,0,0,0,0,0,0,0,0,11,11,11,80,46,69,46,69,46,46,57,127,80,80,80,46,0,0,11,0,0,11,11,23,11,0,11,23\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,8,42,84,127,76,110,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,63,0,0,0\n127,87,36,12,4,1,1,0,0,0,0,1,1,1,1,1,1,1,0\n127,92,45,18,8,4,2,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0\n2,1,2,2,1,1,1,1,2,4,6,8,17,25,41,63,91,106,127\n33,23,10,10,8,16,6,19,6,4,2,6,6,8,8,33,44,76,127\n0,42,0,21,42,21,63,21,42,21,21,42,21,21,127,0,105,63,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,127,101\n127,31,10,16,18,11,6,2,3,0,1,0,0,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n34,47,60,92,127,72,89,30,18,18,9,0,1,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,3,6,10,14,18,17,35,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,9,1,1,4,4,6,12,58,103,92,127,84,65,56\n121,96,81,86,60,75,71,80,73,70,79,60,88,100,98,113,105,103,127\n127,72,71,53,50,33,46,31,30,21,30,17,24,27,24,47,43,41,52,47,60,52,69,30,29,22,21,5,0,1,0,0,1,0,0,1,0\n0,0,0,0,0,0,4,6,1,12,24,20,34,27,41,106,85,106,127\n127,55,25,6,10,25,23,21,8,8,4,1,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,3,1,1,3,21,19,8,8,12,25,38,59,127\n127,73,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,5,2,3,0,0,0,0,0,0,0,0,0,0,0\n127,70,13,0,0,3,0,0,1,0,0,0,0,1,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,42,12,12,12,0,4,4,8,4,4,4,8,8,16,8,33,25,42,25,80,42,101,105,101,93,55,29,33,29,21,25,46,59,76,127,67\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,79,127\n127,101,63,114,25,25,38,12,25,25,50,0,50,101,101,38,12,0,12,12,12,0,0,0,25,12,0,0,0,0,12,25,12,12,0,0,0\n127,18,5,9,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,66,30,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,18,90,90,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,45,25,9,6,3,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,27,36,45,36,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n55,63,119,127,75,39,19,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,39,95,79,31,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,54,127,36,54,72,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,28,0,14,42,127,84,127,112,56\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,63,127,63,127,127,127,0,0,0,63,0\n127,63,46,34,0,11,0,0,5,0,17,5,5,0,0,0,0,0,5,0,17,17,5,11,0,0,0,5,0,0,0,0,0,0,0,0,0\n0,0,10,0,10,0,10,0,10,0,0,0,10,0,21,84,74,84,127,74,31,74,63,63,63,52,21,0,10,21,0,10,21,0,21,21,21\n127,30,13,12,6,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,0,21,21,0,127,42,42,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,67,59,41,17,8,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n40,53,127,61,57,28,16,0,0,0,0,0,0,0,0,8,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,111,95,31,127,63,95\n0,127,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,42,42,0,0,0,0,0,0,0,21,0,0\n84,63,0,21,0,0,84,0,42,0,0,0,0,0,0,0,0,21,0,0,21,63,127,105,0,63,21,63,21,0,0,0,0,0,0,0,0\n127,16,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,71,31,9,0,1,0,0,0,1,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,127,14,56,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,7,11,23,11,23,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,25,21,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,95,31,95,0,0,63,0,0,0,0,0,0,0,0,0\n127,25,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,38,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,47,15,7,19,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,4,4,0,8,0,8,127,83,61\n0,0,0,28,0,0,0,0,0,0,0,0,0,0,14,70,28,84,98,28,0,98,127,84,127,98,56,56,0,28,14,14,0,84,0,42,0\n127,31,0,10,31,21,21,10,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,30,86,127,50,35,60\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,6,0,0,0,3,7,73,127,85,57,22\n127,55,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,115\n70,76,69,86,83,87,99,127,123,84,46,26,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1\n0,0,14,28,14,14,14,14,56,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0\n92,103,69,46,127,98,46,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,127,76,101,67,84,50,0,25,8,8,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,14,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,2,1,4,11,127\n0,11,23,17,17,34,80,80,127,103,80,51,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n4,8,13,3,6,24,25,48,66,127,85,32,30,10,4,8,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,2,0\n28,14,0,14,14,28,0,70,112,70,127,98,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,2,4,21,21,65,91,127,96,58,70,52,43,35,30,35,64,29,26,20,11,13,11,2,0,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,9,9,34,69,127,94,103,55,82,92,86,76,82,67,75,36,21,21,26,26,13,7,1,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,63,127,127,63,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,84,42,0,42,0,0,127,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,63,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,50,127,101,50,25,0,25,0,25,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,28,56,14,127,112,0,0,14,0,0,0,0,0\n1,2,0,1,3,4,3,5,8,16,17,32,127,109,35,4,2,0,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6,2,2,2,2,2,1,0,0,1,1\n3,2,2,2,1,3,1,7,13,24,30,44,127,76,33,7,1,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,8,5,2,4,4,6,3,0,0,1,1\n0,0,16,25,8,8,25,25,8,42,42,50,118,127,16,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,8,0,0,8\n0,0,0,12,6,12,0,12,48,42,24,18,127,48,48,6,0,0,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,24,24,24,30,12,0,6,6,0,0\n0,3,1,0,0,0,1,2,5,1,8,52,127,13,5,1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,1\n2,2,0,0,1,0,2,5,1,4,17,66,127,15,5,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,1,0,0,1,4,1\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,8,0,0,16,8,42,59,93,118,50,127,101,42,16,8,0,8,16,0,16,33,0,0,0,8,0,8,8,0,8,25,59,0,16,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,12,6,6,44,82,76,38,127,19,38,12,19,6,12,0,0,0,6,6,0,0,0,0,0,12,6,19,6,6,12,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,12,25,12,50,127,76,38,0,0,25,0,0,0,0,0,0,0,0,12,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,55,127,0,0,15,0,7,7,103,23,23,7,39,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,11,15,35,75,67,55,47,51,27,27,3,39,15,3,27,31,27,27,63,83,127,127,71,55,19,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,11,7,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,4,4,36,53,45,40,53,40,49,20,8,32,20,36,12,0,24,40,20,53,86,81,127,110,57,28,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,16,8,0,4,0,0,0,0,0,0,0,0,0\n0,0,10,3,17,24,13,17,6,41,72,30,127,106,54,3,0,10,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,30,17,6,3,0,13,0,0,6,0,6\n0,0,5,5,8,13,10,21,8,35,29,54,127,67,43,10,5,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,16,10,8,5,2,0,2,10,2,5,5\n0,0,0,0,0,0,0,42,0,42,63,105,127,21,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,50,12,127,88,50,12,0,0,0,0,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,0,25,76,76,76,25,127,0,0,0,0,25,25,0,0,0,0,25,25,25,0,25,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,25,0,0,76,25,101,50,76,0,0,0,0,0,0,0,0,0,0,25,0,25,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,21,10,10,21,31,31,21,21,0,10,0,10,10,10,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,25,76,50,12,25,50,38,38,12,0,0,12,12,0,38,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,15,15,10,10,63,74,127,68,10,10,0,0,0,0,0,0,0,0,0,10,0,5,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,76,127,50,76,50,0,0,25,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,31,31,127,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,31,0,31,31,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,50,127,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0\n0,0,0,4,0,4,13,4,54,127,95,77,13,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,27,22,13,18,4,4,0,4,0,0\n0,0,0,0,0,9,0,48,87,117,127,87,9,0,0,29,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,19,48,39,39,19,9,9,19,0,0,0\n0,0,0,0,0,0,0,0,127,127,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,0,0,0,0,25\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,95,127,0,31,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,63,0,0,63,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,14,0,28,0,0,0,0,0,0,0,14,0,14,14,127,70,56,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,127,0,0,0,0,0,0,0,0,0,0,25,25,50,0,101,101,76,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,5,5,17,34,57,121,127,28,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,23,23,23,11,0,0,0,0,0\n0,0,5,0,5,0,5,11,22,60,60,127,22,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,22,11,5,16,5,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,95,127,63,63,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,127,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12\n127,29,33,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,55,105\n0,84,0,42,42,84,84,42,84,84,0,42,84,42,127,42,42,42,0,0,0,0,0,84,42,0,42,42,0,0,42,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0\n127,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,31,63\n127,39,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,25,50,25,25,25,25,25,25,0,127,0,25,25,25,0,0,0,25,25,76,0,0,0,76,0,50,0,0,0,0,0,0,0,0,0\n0,18,0,0,36,0,18,36,127,54,36,0,36,0,18,0,36,18,0\n31,0,15,15,0,0,31,0,15,0,15,0,63,31,0,31,47,111,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,63,21,0,0,42,21,0,0,0,0\n0,0,0,0,0,0,0,0,31,31,31,31,95,0,0,0,31,63,127\n50,59,42,101,84,127,84,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,19,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,3,20,27,3,13,0,10,34,99,127,92,102,85,82,102\n127,38,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,42,42,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,63,105,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,84,127,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,108,54,18,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,18,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,0,127,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,95,0,95,127,63,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,31,127\n0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,38,63,101,25,12,12,0,0,12,38,127,38,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,84,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,42,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,36,90,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,80,127,69,127,46\n127,0,31,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95\n0,0,0,0,0,0,0,0,0,0,0,0,11,103,127,23,34,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,23,23,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,15,0,0,5,0,42,89,127,47,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,127,84,0,0,84,0,0,0,84,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,7,0,3,0,3,7,3,22,29,48,127,97,104,115,104\n0,3,0,0,0,0,3,15,0,11,15,42,19,46,88,100,127,111,76,57,50,38,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,11,22,82,60,127,88,121\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,14,7,49,56,70,98,127,28,7,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,0,127,84,42,84,0,84,0,42,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,42,84,84,127,0,0,127,42,0,0,42,0,0,0,0,42,0,0,0,0,0\n0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,0,9,127,81,27,9,9,0,0,0,0,0,0,0,0,0,0,0,0\n65,127,97,116,83,119,94,32,36,3,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,127,84,42,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,127,29,39,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,23,127,39,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,54,127,18,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,27,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,127,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,95,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,95,95,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,42,84,21,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,18,0,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,54,127,72,54,36,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,0,76,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,114,127,25,0,12,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,31,0,0,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,34,69,127,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,79,0,31,47,0,15,31,0,15,79,47,15,47,31,31,31,79,127\n0,95,127,127,127,31,31,63,63,95,63,95,127,63,63,63,127,95,0,31,0,31,0,0,0,31,0,0,0,0,0,31,63,127,63,31,63\n0,0,0,0,2,1,1,1,0,1,1,2,3,16,37,127,46,20,23\n0,95,31,95,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,48,78,127,19,0,0,9,9,0\n0,0,21,42,84,42,42,42,21,127,63,42,42,21,21,21,63,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,50,25,101,76,127,50,50,25,50,76,25,25,0,76,25,25,0,0,25,25,0\n127,127,112,107,109,86,72,65,28,28,33,10,12,7,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0\n12,0,0,0,0,0,0,0,0,25,25,12,12,12,25,12,25,101,127,127,101,88,127,25,76,38,38,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,7,7,7,49,0,0,0,35,21,28,63,42,127,42,91,35,14,14,7,14,14,7,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n25,0,0,0,0,0,0,0,25,127,76,0,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,0,63,95,95,95,0,31,31,31,0,0,127,63,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,42,42,84,84,127,0,127,127,127,84,127,0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,36,18,36,0,54,18,72,18,127,72,72,72,36,54,72,72\n15,23,7,23,23,15,23,31,63,39,31,127,15,7,39,15,23,15,15,23,15,0,0,0,0,7,39,0,23,15,7,0,0,0,0,0,0\n0,0,5,0,5,0,5,0,0,23,28,69,121,109,63,51,63,75,127\n8,10,21,10,24,7,23,36,34,24,31,34,46,53,80,80,93,127,121\n10,15,21,10,15,21,5,63,31,52,15,26,52,37,37,47,21,10,68,89,127,15,10,5,5,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,3,4,9,12,3,6,20,49,104,127,95\n0,0,0,0,0,9,0,0,0,0,18,54,54,90,54,127,63,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,6,6,0,0,13,0,13,26,0,0,26,20,86,127,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,84,127,93,76,16,33,0,0,0,8,0,0,33,8,0,16,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,92,127,47,4,11,9,20,27,27,20,15,9,6,4,2,13\n0,0,0,0,0,0,0,0,0,0,42,84,84,42,127,0,0,0,42,42,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0\n0,90,36,72,0,54,18,90,72,127,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,77,87,54,87,51,37,54,61,28,11,7,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,21,0,0,0,0,21,42,21,42,127,63,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,0,0,0,21,0,0,0,21\n0,0,0,0,0,0,0,0,0,31,0,95,127,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0\n63,0,0,63,0,63,0,63,63,0,63,127,0,0,0,0,0,127,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,127,127,84,84,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,84,42,0,42,0,0,0,0,0,0,0,0,0,42,42,84,84,127,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,116,74,42,21,0,21,21,0,0,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,42,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,127,127,0,84,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,36,72,36,90,127,54,72,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,127,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,50,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,50,10,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4\n127,51,17,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,76,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5\n112,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n112,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,84,42,127,127,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,84,84,127,0,42,0,84,42,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,84,84,127,127,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,14,0,14,28,127,84,70,14,14,0,28,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,14,0,0,0,0,0,0,0,0,0,0,0\n69,127,34,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n76,127,38,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,84,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,105,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,25,25,0,0,0,0,0,0,0,0,0,0\n127,76,38,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n89,67,82,74,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,22,127,127,89\n28,14,56,28,14,28,127,14,0,0,28,0,56,28,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,42,127,92,23,3,0,3,7,19,50,73,50,15,7,15\n72,108,127,102,96,12,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,63,127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,0,0,42,63,63,21,42,105,127\n127,108,80,43,25,17,3,7,2,0,1,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,2,5,7,7,14,18,18,36\n127,79,22,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,74,8,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,16,8,21,55,67,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,42,127,42,0\n127,90,25,15,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n104,127,59,44,37,29,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,22,14,29,44,59\n127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101\n127,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,111,127,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,42,127,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36\n0,0,0,0,0,0,0,0,0,25,50,127,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,50,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,31,31,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\n14,14,14,7,35,0,35,49,127,42,0,7,7,7,7,0,28,0,0,0,0,0,7,0,0,14,21,0,14,7,28,0,7,21,14,35,0\n0,0,0,0,0,0,0,0,63,42,21,42,127,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,63,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,63,95,95,31,127,31,0,0\n0,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,0\n127,72,63,90,45,36,0,0,0,0,0,0,18,0,0,0,0,0,0\n21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,31,127\n127,31,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,63\n127,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,50,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,50,76,127,101\n101,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50\n127,50,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,81,30,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,58,87\n46,23,23,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,57,127\n127,111,74,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42\n0,0,42,84,0,42,42,42,42,42,0,0,42,0,0,0,42,0,0,0,0,0,42,0,0,0,42,0,0,0,0,84,42,0,127,0,84\n9,4,2,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,7,20,57,112,127\n84,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42,0,0,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,127,84,84,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,27,27,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,81,127,36,27,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,27,90,54,63,18,63,0,0,9,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,5,0,5,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,21,52,74,127,68,10,0,5,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,10,42,127,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,52,21,0,10,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,8,76,127,42,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,16,16,42,67,33,16,0,8,8,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,36,0,0,54,18,0,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,18,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,42,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,105,127,105,21,0,21,0,0,0,0,0,0\n49,88,74,67,56,74,38,24,42,67,74,42,49,63,52,35,31,28,38,45,45,28,42,67,91,116,116,56,67,59,63,109,119,112,123,127,84\n0,63,42,0,0,0,42,21,21,0,0,42,0,0,0,0,0,63,21,42,21,105,127,105,42,42,0,21,0,21,0,0,0,0,0,0,0\n0,0,0,0,13,26,66,66,93,100,127,86,120,93,113,60,40,13,26,6,33,46,6,6,6,13,6,26,13,13,6,6,6,6,26,13,40\n0,0,0,0,0,0,0,0,0,0,0,0,36,72,127,36,0,18,0,0,0,18,18,0,0,18,18,0,0,0,0,0,0,0,0,18,0\n0,0,0,0,0,0,0,0,0,0,18,0,36,36,18,0,0,18,0,0,18,36,0,0,0,0,36,18,0,0,0,54,0,18,18,127,36\n0,0,0,0,0,0,0,0,0,0,0,54,127,18,18,0,0,18,18,18,0,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,18,0,0,18,0,0,0,0,18,0,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,95,63,63,127,0\n0,0,0,0,0,6,12,18,84,48,66,84,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,127,120\n0,0,0,0,1,2,0,2,1,6,12,22,34,71,81,74,104,127,100\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,14,21,35,127,24,17,17,0,3,7,3,0,0,0,0,3,3,7,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,80,127,69,14,11,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,35,91,52,43,96,17,87,127,30,8,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,50,76,0,101,50,127,0,25,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,3,3,7,11,7,7,11,127,111,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,8,8,0,33,0,8,0,127,50,84,50\n0,25,0,0,50,0,0,0,0,0,25,25,0,0,0,127,0,25,76,76,50,25,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,127,84,42,84,0,84,84,0,0\n0,0,0,0,0,0,0,0,0,0,0,13,127,43,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,6,33,116,60,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,108,43,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,12,3,3,46,127,43,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,72,127,9,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,108,9,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,127,2,0,4,3,2,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,10,0,5,5,2,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,21,0,0,0,0\n127,43,12,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,29,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n52,33,18,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,10,13,20,40,71,100,127\n127,74,30,9,4,0,0,2,0,0,0,0,0,0,0,0,0,4,0,0,0,1,0,2,0,4,2,0,1,2,0,1,1,1,1,3,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,63,127,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,2,8,8,8,51,127\n104,127,48,22,20,2,4,2,6,2,2,12,0,6,0,0,0,0,0,0,0,4,0,2,0,0,0,0,2,4,4,26,30,26,44,58,100\n127,74,20,12,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,84,0,0,0,0,21,0,0,0,63,84\n127,87,31,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,23,31,71,15\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,39,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,95,127\n127,63,63,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,17,11,11\n63,127,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,105,105,84,127\n127,47,31,15,0,0,0,0,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,70,42,0,7,0,0,0,0,0,0,7,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14\n127,63,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,42,10,5,26,15,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,69,34,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,84,0,42,42,0,84,42,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,127,127,127,127,0\n0,15,47,15,15,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n56,28,0,0,0,0,0,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,28,0,42,42,127,56\n72,127,54,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,18,18,0,0,0,0,0,0,0,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,12,12,38,127\n127,111,15,63,15,31,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0\n63,0,0,127,127,95,0,0,0,0,127,63,63,0,63,31,0,63,0\n127,45,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,127\n120,127,40,40,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0\n127,28,20,14,2,0,0,0,2,2,2,0,2,0,0,0,2,0,5,0,11,14,2,11,2,2,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,21,0,0,42,84,127,21,21,42,42,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,76,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,14,28,56,0,14,14,0,14,0,0,0,0,14,0,0,0,14,28,127,98,56,0,42,28,0,0,0,0,0,0,0,0,0,0,0,0\n0,56,56,42,0,14,14,14,28,56,14,0,0,42,14,70,14,56,0,127,56,70,28,42,28,14,0,42,28,14,0,28,14,0,0,14,0\n79,127,71,39,15,15,7,7,7,15,0,0,0,0,23,15,15,23,15,0,23,15,31,15,0,0,7,0,0,0,7,0,0,0,0,0,0\n50,25,0,0,0,12,12,25,12,12,38,38,0,12,0,12,127,12,76,63,12,38,0,0,0,88,25,50,38,0,25,0,0,0,0,0,25\n0,0,84,0,0,0,0,0,0,0,0,42,42,0,0,42,0,42,127,42,84,42,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,31,0,0,0,0,0,0,95,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,28,127\n0,0,0,0,0,0,0,0,0,25,0,25,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,76,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,21,0,0,0,0,0,0,0,0,0\n127,82,39,26,27,25,21,8,7,15,8,8,6,3,2,0,0,1,0\n38,6,19,0,6,19,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,19,57,127\n84,84,63,0,63,63,63,42,0,21,127,42,42,63,63,127,84,21,42\n127,33,12,0,4,0,0,4,4,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,34,7,9,7,19,12,21,19,19,4,4,2,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,58,7,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,10,15\n127,127,26,21,21,21,15,31,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,81,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,103,63,31,31,15,0,15,7,0,0,0,0,0,0,0,0,0,0\n0,42,42,42,0,42,84,84,127,84,0,42,42,42,42,0,0,42,0\n67,0,16,8,16,127,76,0,8,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,25,0,0,0,0,127\n0,0,0,0,0,0,0,0,4,0,0,0,36,54,90,45,81,117,127\n0,0,0,0,0,0,0,0,0,0,0,0,14,14,127,28,28,14,0\n94,127,94,54,21,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,14,0,0,0,7,7\n0,0,0,0,0,0,0,0,0,0,0,12,12,101,50,127,25,63,38,38,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,21,105,63,84,127,63,0,21,0,42,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,29,127,29,78\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,63,31,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,0,127,0,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,10,21,52,63,52,127\n0,0,0,0,0,0,0,0,0,0,7,14,35,70,70,127,112,21,56,70,77,42,56,21,28,0,0,0,0,0,0,0,7,0,0,0,0\n15,0,0,0,7,7,15,15,23,23,79,127,31,0,7,7,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,3,0,0,7,7,11,7,3,3,7,3,0,11,3,3,3,0,0,7,0,3,7,44,85,82,127\n0,0,0,0,0,0,0,14,0,14,14,0,14,84,127,56,70,84,70,28,14,42,14,14,14,14,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,127,0,0,0,31,0,0,31,0,0,0,0,0,0,63,0,0,0,0,0\n0,0,0,0,0,0,2,8,5,8,13,32,37,62,127,64,54,51,70,59,32,40,27,16,18,29,8,5,18,8,2,2,2,2,13,10,10\n0,0,0,0,0,0,0,0,0,0,0,0,9,45,9,72,72,127,99,63,127,18,0,27,9,9,0,0,9,0,0,0,0,0,0,0,0\n7,14,7,7,3,10,3,0,3,3,21,39,58,72,90,101,116,87,127,123,79,79,39,32,7,0,0,0,0,0,0,0,0,3,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,0,28,127,28,0,14,28,56,112,70,70,84,28,84\n0,0,0,0,2,0,0,2,17,11,11,17,32,59,56,103,109,127,62,73,35,32,41,26,29,32,23,2,20,11,5,14,11,20,8,8,5\n0,0,2,0,0,0,2,4,7,4,7,9,12,14,27,42,59,82,127,97,74,57,42,32,2,4,4,2,0,0,0,0,0,0,2,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,42,0,0,0,0,0,0,0,0,0,63,0,0,84,42,84,84,127,63,42,21,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,54,54,127,72,36,54,18,0,0,0,0,18,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,6,40,6,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,127,60,20,33,20,86,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,51,40,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,34,11,28,5,0,0,11,127,34,17,28,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,42,127,21,0,0,0,0,0,0,0,0,0,0\n127,90,51,30,15,4,2,1,0,0,0,0,0,0,0,0,0,0,0\n93,81,45,47,23,16,13,10,3,4,2,3,0,1,0,2,0,0,0,0,0,0,4,4,3,1,2,0,2,1,1,1,4,3,4,13,127\n123,127,61,19,19,39,58,19,35,26,26,13,26,16,0,6,3,6,0\n127,79,111,15,31,15,15,0,15,15,0,79,0,0,15,0,0,0,0\n0,0,0,42,42,0,0,0,42,42,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,6,0,127,38,82,57,31,0,6,0,0,0\n127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,95\n0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,40,127\n19,14,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,4,4,68,127\n127,80,46,20,12,6,4,2,1,0,0,0,0,0,0,0,0,0,0\n127,68,20,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0\n127,63,0,10,10,21,21,21,0,10,21,31,0,0,0,0,0,10,21\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,27,45,36,127\n127,72,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3\n127,56,10,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,26\n127,105,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0\n127,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n90,127,90,9,9,18,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,18,0,9,0\n127,36,39,3,9,12,9,9,15,0,3,0,0,6,3,6,0,0,0,0,0,0,0,3,0,6,3,6,6,0,0,0,0,0,0,0,0\n127,48,18,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\n101,127,101,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n12,38,127,0,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,0,0,0,0,0,42,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,3,9,23,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,127,76,25,101,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,42,0,84,84,42,42,42,0\n0,33,127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,127\n127,127,63,0,63,47,15,0,15,0,15,15,0,31,0,0,0,0,15,0,0,0,0,0,15,0,0,0,0,0,15,15,0,0,0,0,0\n127,22,40,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,15,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,23,0,11,0,0,0,0,0,0,23,11,11,0,23,46,57,127,103,69\n63,0,0,0,0,0,0,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,0,0,31,0,0,31,31,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,42,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,14,0\n72,9,0,54,127,72,45,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,0,28,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,25,101,127,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,42,0,42,42,42,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,42,0,127,127,84,42,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,127,25,76,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,0,42,21,127,21,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,95,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,63,31,0,0,0,0\n0,0,0,0,0,0,18,0,0,36,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,0,127,0,0,36,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,127,127,0,0,0,0,0,0,0,0,0,0,127,0,63,0,0,0,63,0,127,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,14,0,0,0,0,0,0,0,0,28,98,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,28,42,127,98,56,0,0,28,28,28,0\n0,0,0,0,0,12,0,0,12,25,63,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,25,114,127,63,50,38,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,0,0,0,0,0,0,31,0,0,0\n0,0,0,0,42,0,0,0,0,0,0,0,0,42,127,42,0,42,42,84,127,42,42,42,0,0,42,0,0,42,42,127,0,0,0,0,0\n127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127\n127,88,76,19,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0\n127,111,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,42,63,0,0,21,42,63,0,0,0,21,0,21,21,0,0,0,0\n0,12,25,25,50,38,101,76,127,38,38,63,12,12,25,0,12,0,0,0,0,0,0,0,0,0,12,0,0,0,12,0,25,38,25,63,101\n127,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,31,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,105,21,0,0,0,0,0,0,0,0,0,0\n0,9,9,29,39,19,0,127,78,29,48,19,48,19,9,0,0,9,0,0,0,0,0,0,0,9,9,0,39,29,19,0,0,29,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,127\n23,51,63,127,34,46,51,46,63,46,28,11,40,11,17,5,0,5,11,17,5,11,0,0,11,0,0,0,0,0,0,5,5,5,5,5,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,27,127\n127,63,10,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n115,127,0,34,69,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,73,16,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,40,46\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,18,9,0,18,9,127\n127,44,6,12,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,38,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127\n127,63,42,0,10,0,0,0,10,10,10,0,10,74,74,10,0,10,42,0,21,63,52,21,21,0,0,31,10,0,21,0,10,0,10,31,21\n0,0,0,0,0,0,0,0,0,127,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,42,21,0,42,0,0,0,0,0,0,0,0\n0,63,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,63,0,0,31,0,0,31,31,0,0,0,0,31,0,0,31,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,39,39,55,127,87,111,111,79,15,0,0,15,0,0,0,0,0,0,0,0,0,7,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,63,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5\n127,76,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,127,50,0,63,76\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,0,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,61,127\n127,25,76,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,0,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0\n0,42,42,0,84,0,0,0,0,0,0,0,0,42,0,42,84,0,84,0,42,84,0,127,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,42,84,127,84,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,22,127,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0\n127,31,95,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,63,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,25,31,38,127\n127,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41\n0,0,0,84,0,42,42,0,42,0,127,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,12,12,12,0,0,0,0,0,0,0,38,25,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,15,127\n127,69,24,6,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1,2,3,5,3,1,0,0,0,0,0,0,4,24,64,82\n42,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,105,127,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,33,127\n127,85,27,12,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,10,17\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,28,14,42,14,7,7,7,28,127\n63,31,31,23,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,15,63,87,127\n101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,12,12,0,101,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,58,127\n127,71,79,31,39,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,47,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,26,0,52,127\n0,47,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79,31,127,63\n127,95,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,6,12,11\n127,70,18,37,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,48,48,52\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,54,36,0,0,0,18,0,36,0,0,0,0,0,54,127,127,90,0,0\n31,31,31,15,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,63,127,72,18\n36,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,36,18,36,72,54,127,18,0,36,36\n0,0,0,0,18,36,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,127,36,18,36,0,18,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,95,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,21,31,31,84,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,0,0,21,127,42,127\n127,61,22,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0\n68,127,73,9,14,4,0,0,0,4,0,0,0,0,4,0,0,4,0\n127,94,20,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4\n72,72,18,36,18,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,31,127,63,63,0\n106,127,80,33,13,0,0,0,13,0,0,0,6,0,0,0,6,0,13,0,0,0,0,0,6,0,0,0,0,6,6,0,0,0,0,6,26\n127,66,79,53,34,12,12,3,3,9,0,3,3,9,0,6,3,0,3,6,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,7,7,0,0,55,127,63,0,7,55,95\n0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,84,127,0,84,42,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,38,127,66,66\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,95,127\n63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,127,63,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,19,19,58,102,127\n0,0,0,0,0,0,0,31,31,63,0,95,0,31,0,0,0,0,0,0,0,0,0,0,0,63,63,95,63,63,127,0,0,0,0,0,0\n127,47,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\n0,95,127,63,63,63,63,31,31,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,31,0,0\n11,0,11,40,34,34,11,34,40,11,0,5,0,0,5,28,0,5,127\n127,95,31,31,31,0,0,0,0,0,31,127,31,0,0,0,0,0,0\n0,0,84,84,84,42,0,84,0,42,0,0,0,0,84,0,42,127,0\n63,63,63,31,0,0,31,0,0,0,63,95,127,31,63,95,63,0,0\n28,28,14,0,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,14,0\n101,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101\n127,75,61,34,20,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,7,16\n127,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,6,0,0,0,0,6,82,88\n127,49,35,49,42,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,35,14,56\n63,127,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,31,84\n127,84,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,31,84\n127,60,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,62\n127,78,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,22,58\n127,57,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,6,127,127\n127,55,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127\n127,86,68,37,35,26,18,13,7,10,16,0,1,1,0,0,1,3,0,0,0,3,4,2,2,3,0,1,3,10,8,14,12,17,29,26,24\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,11,13,2,2,6,0,13,24,4,29,27,27,24,52,127\n63,127,95,0,31,0,0,0,0,0,31,63,31,63,31,31,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,26,127\n127,77,39,17,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,13,37\n127,70,28,37,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,5,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,0,72,0,72,127,18,36\n127,84,38,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,4,4,2,0,4,6,25,63,127\n76,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,127\n88,127,38,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,7,14\n0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,28,28,56,84,127,56,28,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,31,0,0,0,0,31,0,0,31,0,0,31,0,0,0,0,31,0,63,63,0,0,31,0,0,0,0,63,63,31,0,0,0,95,127\n31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,47,111,95,127,63,31,15,47,31,63,47,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,63,127,127,127,127,127,127,127\n127,58,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,85,83,35,11,4,2,2,0,0,0,0,0,1,0,0,0,0,0\n127,38,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,103,55,23,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,25,0,50,0,0,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,84,127\n127,46,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n88,44,41,127,63,19,28,9,3,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,34,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,127\n127,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\n127,105,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,95,47,15,15,79,31,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,0,0,0,15,63,0,47,31,127\n118,127,100,38,35,8,8,5,0,0,2,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,5,5\n84,42,0,0,42,127,0,42,0,0,0,0,0,42,0,42,0,0,42,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,31,127,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,97,57,27,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0\n14,14,7,7,4,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,49,127\n127,48,23,8,9,7,6,3,12,5,6,2,1,0,0,0,0,0,0\n127,57,0,28,11,0,5,0,0,0,0,5,0,0,0,0,0,0,0\n0,36,18,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,0,18,0,0,0,0,0\n127,90,90,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,13,9,5,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,57,127\n127,63,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,63,127\n63,26,2,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,34,127\n72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0\n8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,39,52,127,122\n105,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,21,42,116,127\n84,42,127,84,84,42,0,0,0,0,0,0,0,0,0,0,84,0,42,0,42,42,42,42,42,84,0,42,42,42,0,0,0,0,0,0,0\n56,68,72,70,73,80,90,90,97,111,109,127,122,106,101,86,80,84,85\n109,98,109,76,54,45,54,21,26,12,26,31,7,24,21,19,29,34,48,45,61,78,127,92,84,96,69,89,100,76,35,9,2,3,1,0,2\n0,0,0,1,1,2,4,5,7,2,1,22,35,71,96,105,102,109,127\n2,19,47,43,26,10,7,5,5,1,8,65,127,16,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,10,26,37,67,46,15,24,19,31,31,42,68,127,104,24,15\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,127,63,0,63,63,31,0,0,0\n0,50,0,0,0,0,25,0,0,0,0,25,25,0,25,0,0,0,50,50,76,25,25,76,50,127,0,101,50,25,25,50,0,0,0,0,0\n46,127,69,69,11,0,0,11,0,0,0,0,0,0,0,0,0,11,11,34,23,0,103,92,69,80,57,92,34,80,0,23,0,0,0,0,0\n8,48,127,83,17,13,26,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,0,111,127,127,15,15,63,31,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,21,9,11,37,58,127,96,28,28,7,2,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,30,127,91,76,40,30,10,20,5,10,10,5,0\n127,39,39,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,23,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,127,0,31,31,63,31,31,0\n90,27,36,127,27,9,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,76,127,76,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,2,13,31,71,119,127,81,25,12,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,6,2,12\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,74,50,127\n0,0,0,0,0,0,0,0,0,33,42,127,67,16,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,21,0,105,84,127,105,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n7,7,11,19,7,0,2,0,9,26,23,127,62,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,4,47,57,14,11,21,23,0,0,0,0,11,14\n7,5,2,0,7,7,5,10,7,28,36,114,49,7,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,5,98,127,44,10,15,12,0,2,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,50,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,21,42,21,21,0,0,0,0,0,0,0,0,0,0,21,0,42,42,21,21,42,42,127,42,0,0,0,21,21,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,50,127,25,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,34,80,57,46,23,0,11,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,11,115,115,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,23,11,34,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,8,59,33,33,8,25,16,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,8,42,59,93,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,33,0,8,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0\n0,42,0,42,0,0,42,0,42,42,84,127,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,0,42,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,12,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,127,95,31,0,0,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,127,116,74,21,31,10,10,0,10,0,0,0,0,0,0,0,0,0,0,10,0,0,10,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,10,10,52,127,127,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,109,59,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,2,17,28,54,70\n127,50,50,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n97,127,48,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,19,39,39,48,9,29,39,58\n127,49,46,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,61,6,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,27\n127,127,21,0,21,0,42,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n47,0,0,7,0,7,0,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,15,79,127\n21,10,21,0,10,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\n127,19,0,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n95,47,127,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,8,40,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,4,28,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,27,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,20,127\n0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,0,76,127,50,0\n127,28,0,14,35,0,7,14,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,127\n127,84,26,0,5,0,0,5,0,5,0,0,0,5,0,5,10,5,10,26,26,5,21,37,37,15,5,5,10,0,0,0,0,0,0,5,0\n50,0,0,0,76,127,25,76,0,25,0,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,12,25,114,127,63,63,25,38,38,38,25,25,0,0,0,0,12,12,12,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,127,0,0,31,31,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0\n0,0,10,0,10,10,21,31,0,0,0,0,0,10,127,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,13,43,90,110,127,20,13,16,6,6,3,6,10,6\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,14,84,70,28,70,0,0,14,56,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,10,0,0,10,37,42,68,79,84,127,37,95,63,37,10,37,37,21\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,21,42,127,84,21,84,105,0,21,0,0,42,105,84\n0,0,31,0,0,0,0,0,31,0,0,0,0,31,0,0,0,31,0,0,0,0,127,63,127,95,0,0,0,0,0,0,0,0,0,0,0\n127,0,127,63,127,63,0,0,0,0,0,0,0,63,0,0,0,127,63,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,28,0,7,0,21,35,35,127,63,63,14,14,28,7,0,0,7,0,0,0,0,0,0,0,0,0\n7,14,7,14,10,7,7,10,14,0,3,3,10,18,72,127,7,3,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,18,0,0,0,0,72,36,0,0,18,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,88,127,76,38,50,0\n0,25,0,0,25,0,25,0,0,25,0,0,0,25,25,25,0,0,25,25,25,127,25,0,25,50,0,0,25,25,25,25,0,25,0,0,0\n127,84,42,42,0,42,0,0,21,0,0,0,0,0,42,21,42,42,21,21,63,21,84,0,21,0,0,0,0,0,21,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,50,38,127,76,88,25\n42,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,127,21,0,0,0,0,0\n47,71,127,71,47,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,10,0,10,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,16,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,9,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,45,127\n127,84,21,42,0,10,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,10,10,0,63\n127,87,63,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,52,63,127,127\n0,0,0,42,127,0,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,84,84,84,127,42,84,84,0,127,84\n127,63,11,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,15,27,39,31\n127,46,23,14,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,2,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,63,95,0,0,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,25,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,0,31,63,0,127,31,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,42,31,21,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,10,0,0,0,0,0,0,10,0,0,0,0,10,0,31,0,10,63,95,95,127,105,63,42,10,10,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,10,10,63\n70,63,21,7,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,21,0,7,7,0,0,0,0,0,0,7,0,0,0,7,0,14,14,21,56,127,112,63,63,35,28,14,21,0,0,0,0,0,0,0,0,0,0,0,0,14,0,7,14,14,56\n0,0,0,0,0,0,10,0,0,10,10,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,10,0,0,0,10,127,10,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,10,0,0,0,0,127,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,9,0,127,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n18,72,54,54,127,108,36,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,18,0\n36,0,54,54,127,127,72,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,42,84,0,0,84,0,42,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,50,50,50,127,25,76,25,76,0,0,25,0,25,0,50,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,63,42,21,21,63,84,42,105,63,42,127,42,0,0,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,127,63,63,0,0,31,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,1,0,0,0,1,0,0,1,11,3,11,17,14,8,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,20,50,51,48,26,29,11,4,4,3,0,2,2,0,1,0,0,0,0,2,11,17,36,79,122,127,87,33,12,6,2,0,2,0,0,0,0\n0,2,0,0,0,3,1,1,1,1,6,10,17,9,10,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,24,43,37,48,40,19,17,9,2,3,1,0,0,0,1,0,1,0,1,2,7,7,25,80,106,127,69,43,18,14,3,1,6,0,1,0,0\n0,0,11,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,23,0,23,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,11,127,69,0,11,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,15,0,0,31,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,15,0,15,15,0,15,0,0,15,15,0,0,0,0,0,0,0,0,0,127,95,47,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,15,15,0,15,0,15,15,31,15,15,0,15,0,0,0,0,0,79,79,63,95,127,95,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,0,15,15,0,0,0,0,0,0,0,0,15,0,0,15,0,0,0,31,111,63,127,95,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,5,0,0,0,5,21,121,127,21,5,0,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,5,0,0,20,30,91,127,45,15,10,25,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,4,0,0,0,0,0,8,0,0,61,127,20,12,0,0,0,0,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,25,0,127,76,127,127,101,50,101,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n5,13,1,0,0,1,0,1,4,25,63,68,25,1,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,5,10,56,127,49,13,6,4,2,4,0,13,4,1\n1,14,0,1,0,0,0,1,10,32,71,75,33,5,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,5,14,60,127,55,46,14,5,1,3,14,7,0,0\n0,0,0,0,0,0,0,0,0,0,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,95,79,0,31,15,15,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,12,88,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,25,38,127,38,12,12,25,12,0,0,0,0\n0,0,0,0,0,10,0,0,10,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,21,95,127,42,10,10,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,127,15,31,0,15,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,7,62,127,57,11,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,9,91,127,46,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,10,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,10,21,31,127,95,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,29,0,58,127,58,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,59,22,127,74,7,37,0,0,0,0,22,14,7,7,14,7,0,0,7,0,29,37,44,97,97,44,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,111,111,15,63,79,0,0,0,0,0,15,0,0,0,0,0,0,0,0,63,95,79,127,95,95,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,1,5,12,24,44,41,14,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,12,27,55,42,38,38,21,13,6,2,0,0,0,0,0,0,2,0,0,0,0,3,14,37,99,127,85,64,32,13,2,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,17,30,39,48,17,0,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,21,48,56,52,91,48,30,17,0,4,0,0,0,0,0,0,0,0,0,0,0,0,13,21,83,127,105,65,21,0,4,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,0,15,0,0,0,15,47,0,0,0,15,0,0,0,0,0,0,0,0,0,0,31,0,31,63,127,31,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,0,127,42,0,0,0,0,0,0,0,0\n0,0,0,4,4,0,4,18,42,47,94,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,32,117,127,9,9,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,50,76,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,88,114,127,12,0,12,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,56,127,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,42,56,56,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,38,101,63,50,0,0,0,0,0,0,0,0,0,0,0,0,12,12,127,101,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,111,111,127,47,0,0,0,0,0,0,0,0,0,15,0,0,15,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,9,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,24,29,39,43,19,9,0,0,0,0,4,0,0,0,0,0,0,0,0,0,9,14,29,127,73,39,14,4,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,6,12,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,24,42,36,36,42,6,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,78,60,127,102,36,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,14,0,127,70,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,9,15,0,0,12,0,6,41,120,101,31,6,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,12,9,0,25,107,127,107,41,28,12,3,0,0,0,0,3\n2,0,0,0,2,0,0,4,9,27,55,32,13,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,6,0,4,18,60,127,71,36,13,11,9,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,0,76,76,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,50,50,127,101,0,25,25,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,101,12,25,12,0,12,0,0,0,0,0,0,0,0,0,0,12,0,50,88,127,38,50,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,47,111,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,111,127,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,15,0,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,79,79,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,127,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,63,127,114,50,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,127,63,63,0,0,0,0,0,0,0\n72,30,18,0,12,18,18,12,12,30,12,54,30,54,78,127,102,30,54,48,0,12,24,12,30,0,6,0,0,0,6,0,0,6,6,36,36\n0,0,0,127,84,42,0,0,84,42,0,84,42,0,0,42,0,42,42,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,35,35,28,14,7,0,7,0,7,0,14,14,0,35,35,49,91,119,84,70,14,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,54,72,72,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,18,0,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,51,5,5,5,17,86,28,69,98,92,127,103,51,69\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,4,56,127,39,4,0,0,0\n0,0,21,0,21,21,42,0,0,21,0,42,63,21,127,63,21,84,0,0,0,0,0,0,0,0,21,0,42,21,0,0,21,0,0,21,84\n50,101,25,25,0,0,0,0,0,0,0,0,0,50,25,25,25,25,0,76,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n10,0,0,0,0,0,5,0,0,0,10,5,0,15,63,31,47,42,127,37,58,15,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,21,8,8,8,16,12,16,4,0,0,4,0,0,0,0,0,0,4,8,8,8,4,0,25,71,127\n0,31,0,63,31,0,63,0,31,0,0,31,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,21,0,21,21,0,21,0,0,21,63,127,105,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,6,9,18,12,12,0,9,27,57,123,127,57,27,12\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,24,87,127,71,26,4,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,58,127,87,68,19,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,127,127,14,14,0,0\n0,0,0,0,25,0,25,25,0,0,25,25,25,50,76,127,76,0,50,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,11,0,0,0,0,17,11,34,40,34,86,127,103,86,75,75,51,23,17,34,23,11,17,5,23,5,11,0,11,28,34,11,34,127\n14,7,0,7,0,0,0,0,0,14,28,21,42,14,35,28,84,77,127,56,42,35,14,14,7,0,0,0,0,0,0,0,0,0,0,7,0\n0,0,0,0,0,0,0,0,0,0,10,10,0,31,74,74,42,31,10,52,31,10,31,10,0,0,0,0,0,0,42,21,21,10,31,52,127\n0,0,0,0,0,15,0,0,0,0,0,0,15,47,95,127,95,0,111,47,15,47,47,0,0,0,0,0,0,0,0,0,0,0,47,0,31\n0,0,0,31,127,15,15,0,47,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,42,42,42,84,84,127,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,14,9,23,9,9,14,23,56,127,117,32,9\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,8,0,4,8,4,20,45,127,106,73,20,8\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,12,25,0,0,0\n0,0,0,0,0,0,0,0,0,63,127,127,63,127,0,0,127,63,63,63,63,63,0,63,63,63,0,63,0,0,0,0,127,0,127,63,0\n0,19,9,9,0,48,68,19,29,19,19,39,127,87,48,58,29,68,19,97,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,95,63,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,96,67,62,62,67,87,109,127,76,29,8,3,1,0,0,0,0,0\n94,85,43,38,38,59,71,107,114,127,69,23,12,3,4,2,0,0,0,0,1,0,2,4,1,3,2,3,2,1,0,0,3,3,2,2,0\n12,9,9,3,3,9,12,15,41,22,38,19,41,82,76,98,69,111,127\n0,10,3,4,1,10,13,25,33,74,92,127,116,98,98,78,68,83,69\n8,4,4,0,0,8,0,0,25,67,50,59,127,114,127,80,84,63,50,46,50,16,29,38,63,42,12,0,0,0,0,0,0,4,0,4,0\n0,0,0,0,0,0,0,0,0,0,1,8,20,29,42,65,117,122,127\n127,31,84,42,21,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,43,26,30,13,0,10,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,11,3,78,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,26,8,2,4,8,11,29,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,16,55,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,127,127,127,0,42,0,0,0,0,42,0\n127,21,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,43,48,6,4,2,0,4,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,15,1,5,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,117,96,73,64,63,64,62,40,34,24,14,9,5,5,4,3,3,5\n127,97,69,42,30,23,26,24,26,21,15,12,7,7,5,3,3,3,3,3,3,5,4,6,5,5,7,4,1,1,0,0,0,0,0,0,0\n59,52,67,37,82,29,37,14,37,7,7,22,14,37,127,74,74,37,44\n10,3,0,0,0,0,2,9,5,11,46,80,89,102,101,127,117,101,88\n117,127,87,58,48,48,9,9,19,29,19,0,9,0,0,0,0,9,0\n127,31,42,42,42,0,31,10,0,0,10,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n19,97,127,48,117,68,19,19,0,0,19,0,9,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,24,6,11,4,6,0,4,0,11,22,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n21,10,10,21,31,127,31,63,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,6,11,8,13,16,15,18,43,49,44,43,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,10,5,10,2,5,12,55,127,66,35,12,35,15\n127,113,109,88,97,105,115,106,112,79,54,41,30,14,14,9,6,8,0\n120,127,110,92,70,39,24,20,14,14,14,10,11,6,4,2,1,5,6,5,6,16,11,10,3,3,3,2,6,7,6,2,0,0,0,0,0\n0,0,0,31,0,0,95,95,63,127,127,63,0,31,0,0,0,0,0\n0,13,2,2,8,16,13,8,8,5,18,51,62,94,81,86,91,127,97\n127,47,47,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,72,0,18,18,36,27,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,53,46,11,3,5,13,15,22,18,12,8,34,127\n127,64,27,11,6,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,3,0,0,0,1,0,2\n44,29,7,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,82,123,127\n15,23,9,7,6,1,0,1,0,0,6,11,9,3,14,3,9,6,1,3,7,6,7,9,9,14,17,11,11,4,3,1,12,9,34,53,127\n127,11,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n68,64,109,127,47,5,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,127,31,95,63,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,47,31,63,127,127\n6,6,0,0,3,0,0,0,0,3,6,6,3,3,0,3,6,3,0,3,3,0,0,6,13,17,3,0,6,3,17,6,17,20,37,127,116\n127,21,25,8,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,118,101,50,8,4,0,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,76,82,26,7,10,5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,2,5\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,28,37,70,127\n0,2,0,5,7,4,5,7,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,5,0,1,4,15,19,44,112,127\n127,74,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,88,84,21,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,18,52,127\n0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,17,11,5,5,5,0,0,28,34,103,127,103\n127,39,4,4,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,21,42,127,63,84\n0,0,0,0,42,0,0,0,0,42,0,42,0,0,42,0,42,0,0,84,84,0,0,84,0,0,0,0,127,0,0,84,0,42,0,42,84\n127,63,0,105,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,25,25,25,0,25,25,25,50,0,25,0,0,0,0,0,25,25,127,0,0,0,0,50,0,25,0,76,25,25,0,0\n0,0,0,9,11,9,5,39,66,85,127,80,42,19,9,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,5,15\n50,127,101,50,76,25,50,101,76,101,101,76,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0\n112,106,115,127,106,105,115,114,123,103,79,62,50,15,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,15,18,15\n0,15,31,15,47,63,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,101,101,127,101,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n108,127,90,54,72,36,72,54,36,72,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,36\n0,18,18,18,18,54,18,18,0,36,0,127,36,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n5,5,13,10,29,18,60,63,127,108,55,26,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,31,0,63,0,31,95,127,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,95,47,63,31,63,111,47,111,127,111,95,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,23,34,69,69,46,127,103,69,80,103,103,57,127,115,127,57,46,11,34,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n5,5,0,0,0,0,0,5,0,0,5,52,127,52,79,10,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,5,0,0,5,0,0,0,0,0,0,0,0\n0,0,0,0,0,6,0,6,0,6,6,80,127,73,20,0,6,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,6,0,0,6,0,0,0,0,0,0\n31,47,15,0,95,47,31,111,47,95,15,47,0,111,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,15,127,79,63,15,47,31,47,15\n11,23,0,92,34,69,46,80,46,92,11,34,23,127,46,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,23,23,11,34,80,34,34,23\n0,0,0,0,0,0,0,15,15,0,63,47,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,7,7,29,7,22,14,0,7,0,7,29,0,0,0,14,0,0,0,0,7,7,14,29,37,74,127,37,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,23,11,34,34,46,34,23,11,11,0,0,0,0,0,0,0,0,0,0,0,11,11,34,69,103,92,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,12,34,34,34,21,30,27,21,52,37,52,49,89,68,86,127,111,92,34,15,9,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,29,32,44,23,44,32,59,44,41,29,73,79,56,85,118,112,127,50,56,26,20,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,2,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,2,8,45,118,127,37,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,2,0,0,2,13,43,127,116,37,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,0,0,0,0,0,0,0,0,0\n7,15,0,0,23,55,7,7,15,39,23,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,55,71,127,63,55,7,15,23\n0,18,0,0,0,90,18,18,0,36,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,72,72,108,36,36,18,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,54,108,18,36,72,54,18,18,127,72,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,50,25,25,127,101,25,101,25,25,25,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,42,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,111,15,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,63,21,63,21,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,42,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,42,42,0,0,0,0,0,0,0,0,42,0,84,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,12,0,0,0,0,12,12,50,88,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,31,31,31,31,31,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0\n0,0,0,0,0,21,0,21,42,105,127,0,0,0,0,0,63,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,42,0,42,0,0,0,0,0,0\n0,0,0,36,0,0,0,36,54,72,127,90,36,18,0,18,54,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,36,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,42,7,14,0,0,0,0,0,0,0,0,0,0,7,21,63,14,49,49,63,127,49,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,11,34,11,23,57,46,0,34,0,0,0,23,0,0,0,0,0,11,34,34,23,46,103,127,46,46,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n7,0,0,0,0,23,39,15,79,119,127,63,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,7,39,23,15,7,7,23,0,7,0,0\n0,12,0,0,0,0,19,12,38,95,127,82,44,0,0,6,6,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,6,12,31,0,25,6,12,0,0,0,6\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,42,0,0,42,0,0,0,0,42,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,42,0,42,0,0,0,0,0,42,0,84,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,53,22,4,1,0,4,2,1,5,1,2,1,0,0,1,4,1,0\n127,93,35,30,22,17,7,7,7,5,12,20,10,15,12,0,2,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,31,0,63,0,127,95,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,31,116,127\n127,23,3,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,28,6,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n105,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,21,127\n0,63,0,0,63,0,0,0,0,0,0,0,0,63,0,127,0,0,0,63,0,0,0,63,63,63,63,0,0,0,63,0,63,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,55,127\n127,23,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,105,21,10,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,31,127,31,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0\n127,63,63,63,63,127,0,63,31,0,0,0,0,0,0,0,0,0,0\n3,6,7,11,18,29,60,118,127,117,98,68,29,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,2,11,27,26\n0,0,0,0,0,21,0,21,21,0,84,42,21,127,84,63,0,21,84\n0,0,0,0,0,0,0,1,2,2,3,8,9,15,30,46,77,99,127\n127,42,63,42,52,116,42,63,42,10,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42\n0,0,0,0,0,0,0,0,0,0,0,2,6,8,8,17,26,72,127\n0,0,0,0,0,0,0,0,0,0,0,0,9,27,86,99,99,127,45,45,27,13,27,18,13,9,0,0,9,0,4,4,0,9,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,42,127\n0,0,0,0,0,0,0,0,0,10,10,127,127,13,3,13,3,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,2,0,1,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,34,34,69,103,127,92,86,69,92,109,75,40,86,40,17,34,28,17,5,5,0\n6,4,5,8,10,10,6,7,11,9,40,127,77,15,7,3,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n24,0,0,6,12,6,30,12,54,24,54,72,127,12,0,0,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,42,0,0,0,42,127,0,127,84,0,0,42,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,1,1,4,7,21,67,114,127,75,26,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,6,11\n0,0,0,0,0,0,0,0,0,21,0,63,21,21,21,127,21,63,0\n0,0,0,0,3,2,2,6,4,7,16,21,29,49,66,87,125,127,121\n0,9,0,0,0,0,0,0,0,0,0,9,9,18,18,32,51,70,127,122,89,61,47,14,9,4,4,0,0,4,0,0,14,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,127,75,117,75,90,66,33,24,0,6,3,0,0,9,15,9,3,0,3,6,6,12\n19,9,4,19,34,29,39,53,73,73,83,34,4,9,34,127,63,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,0,1,1,3,6,30,38,80,127,126,82,54,25,12,6,3,2,0,0,0,0,1,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,74,31,31,84,63,63,74,31,52,52,10,10,31,127,31,52,52,10,21\n3,1,1,2,7,6,6,5,10,23,73,127,68,14,3,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,63,63,63,31,0,31,63,127,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,6,1,8,11,13,21,36,45,61,102,113,127,83,74,48,33,24,8,3,2,4,1,1,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,63,63,0,63,0,0,0,0,0,0,0,0,0,63,127\n0,11,11,46,11,11,0,92,80,127,92,57,11,0,0,11,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n43,9,4,1,3,3,11,13,18,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,2,2,3,29,127\n0,0,0,0,0,9,0,0,0,0,29,9,19,19,48,127,87,107,97\n0,0,0,0,0,0,0,7,0,7,7,0,14,44,67,59,127,97,119\n8,4,4,6,2,6,4,2,20,12,29,52,41,97,83,127,127,122,62\n0,0,0,14,0,0,0,0,0,0,7,14,7,7,14,0,49,70,127\n5,27,11,12,5,5,4,6,1,4,15,4,15,18,15,40,30,50,61,78,127,69,40,15,6,0,1,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,3,3,9,21,42,73,116,127,123\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,21,63,42,21,0,21,127,42,105,63,42,42\n8,12,29,50,59,114,93,127,59,29,16,4,8,25,33,12,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,5,18,13,10,26,15,39,42,44,23,23,39,31,52,68,97,124,127\n8,4,4,10,6,8,2,8,10,2,8,2,19,12,21,38,58,55,127,111,114,71,60,21,40,8,2,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,1,2,1,5,14,13,20,20,29,46,100,127,108,105\n0,63,63,0,127,63,63,127,0,0,0,63,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,9,0,0,0,0,9,9,54,127,36,0,18,9,0,9,0,0,9,18,9,9,0,0,0,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0,0,0,0,0,0\n0,0,0,0,0,10,0,0,0,0,0,10,0,74,127,31,0,21,0,0,0,0,31,21,21,10,10,0,0,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,0,0,0,0,0,0,0,10\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,31,39,127,95,15,31,7,7,23,7,0,0,0,0,0,0,0,0,0,0,0,15,15,23,31,55,63,7,0,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,9,0,45,45,127,90,36,18,18,9,0,0,0,0,0,0,0,0,18,0,9,0,0,0,0,9,18,54,81,0,0,18,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,2,3,53,127,24,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,2,1,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,3,5,50,127,23,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,2,0,0,0,0,0,0,0,0,0,0\n0,0,4,0,0,0,4,8,49,24,20,57,127,73,73,69,8,0,12,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0\n0,0,2,0,0,0,2,0,0,2,8,37,127,40,49,37,0,0,8,28,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,3,0,0,0,0,37,127,34,10,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,3,43,127,32,10,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,105,0,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,0,54,18,18,0,0,0,0,0,0,18,0,18,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,7,39,127,87,15,15,0,0,23,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,7,23,0,23,103,63,47,7,7,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,28,127,70,23,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,0,4,9,14,56,47,14,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,23,46,46,57,23,80,46,57,92,80,46,23,23,23,0,0,11,0,11,23,34,46,23,34,11,23,0,0,0,11,0,0,0,0,0,0,0,0,34,11,0,11,11,23,34,46,127,69,69,23,23,11,11,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,11,46,46,46,46,69,127,57,34,34,11,23,11,0,0,23,34,0,11,11,34,0,34,11,34,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,0,0,69,23,92,80,103,92,34,23,34,11,11,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,0,127,28,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,10,0,0,3,3,13,0,6,54,127,54,27,10,10,10,0,17,44,13,3,3,0,0,0,0,0,0,0,0,0,0,3,6,6,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,11,3,0,0,0,19,3,27,63,127,91,31,19,3,0,3,3,23,11,3,0,0,0,3,0,0,0,0,0,0,0,0,7,19,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,5,44,127,33,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,6,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,4,47,127,29,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,5,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,14,28,127,98,28,28,0,42,0,0,28,14,70,14,42,70,56,28,0,42,70,42,28,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,42,14,28,14,14,14,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,19,68,127,58,58,9,48,19,0,19,29,19,9,29,19,0,9,0,0,19,78,19,19,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,9,0,19,9,9,19,9,29,19,9,29,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,0,0,0,0,2,17,127,10,2,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,17,0,0,0,0,3,52,127,12,3,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,127,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,42,0,42,0,0,42,0,42,84,42,0,0,84,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127,63,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,101,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0\n127,123,72,58,27,26,20,3,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0\n91,127,79,79,62,28,26,28,16,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,127,63,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,0,63,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,0,42,21,21,42,21,84,127,42,42,21,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,84,0,0,21,84,84\n76,25,50,0,0,0,0,50,50,76,50,0,0,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,25,50,50,50,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,58,52,42,74,127,105,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,50,50,76,127,114,88,76,38,63,38,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0\n127,0,0,0,0,0,84,84,84,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,0,0,42\n0,0,0,0,0,50,0,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,0,0,0,25\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,127,76,76,0\n4,5,7,8,5,9,6,10,10,9,10,19,26,32,53,54,75,127,119\n123,51,17,24,6,10,20,13,3,0,6,3,3,10,6,48,68,68,92,102,116,127,102,82,41,34,20,13,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,8,4,25,67,63,78,120,93,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,33,80,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,101,76,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,101,127\n0,0,28,127,42,14,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,18,0,0,0,0,0,0,0,0,0,36,127,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,42,0,0,0,14,0,0,0,28,42,127,42,14,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,31,0,0,0,31,63,0,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,127,108,18,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127,59,2,0,0,0,0,0,0,0,0,0\n0,3,3,0,3,0,0,7,19,30,34,127,107,30,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0\n63,63,108,54,36,0,0,0,9,9,0,63,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,90,0,9,63,18,0,0,0,0,0,127\n18,6,0,0,12,0,0,0,0,0,30,66,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,18,0,0,6,0,0,0,0,6,0\n25,0,0,127,50,0,0,0,0,0,0,76,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,25,0,25,0\n0,0,0,0,0,0,0,0,0,42,42,42,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,14,14,18,52,108,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,63,127\n127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,12,12,127\n101,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,6,0,127,101\n0,0,0,0,0,0,0,0,0,0,2,8,59,94,99,10,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,27,29,113,127,75,16,16,0,0,0,8,2,0,2,0,0,0,0,0,0,24,18,29,54,86,108,48,2,5,2,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,5,0,0,5,31,31,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,10,52,127,47,21,15,0,10,0,10,5,0,0,0,5,0,0,0,0,5,63,5,26,52,95,68,5,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,127,84,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,127,50,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,54,36,54,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,3,127,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,79,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n24,34,3,0,0,0,0,0,3,0,12,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,127,21,12,0,3,0,3,3,18,34,12\n0,0,0,0,0,0,0,0,0,0,0,29,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,63,127,24,14,4,0,0,9,19,4,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,57,127,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,55,127,25,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,10,5,15,100,100,95,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,15,47,74,127,68,68,0,84,42,0,10,0,0,0,0,0,0,0,0,0,0,5,63,15,42,63,79,5,10,0,0,0,5,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,84,70,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,84,127,98,56,14,0,28,0,0,0,0,0,0,0,0,0,0,0,28,28,0,14,28,70,28,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,31,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,127,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,127,0,76,0,0,0,0,25,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,76,25,25,0,0,0,0,0,25,0,0\n0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,127,95,0,95,0,31,0,0,31,0,63,0,63,0,0,0,0,31,63,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,127,52,74,0,63,42,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,127,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,127,31,0,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0\n84,84,63,105,42,0,42,127,105,63,21,21,63,21,21,0,42,42,0\n0,0,0,0,0,0,0,15,0,15,0,31,0,0,0,0,0,15,15,0,15,95,47,127,0,15,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,11,0,0,0,0,0,0,23,57,46,127,34,92\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,25,12,25,0,38,25,63,0,127\n127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,25,0,0,12,0,0,0,0,25,0,0,38,25,127\n0,0,2,1,2,0,4,9,11,37,51,80,127,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,5\n0,0,0,0,0,0,0,3,0,3,18,127,67,37,7,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,18,11,11,3,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,4,127,97,9,4,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,19,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,54,108,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,12,0,0,0,0,12,0,12,0,25,0,50,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n3,4,5,10,13,12,20,44,67,99,127,114,95,46,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,17,41,61\n0,95,63,31,95,31,0,31,127,63,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,35,115,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,2,127\n0,0,0,6,0,2,14,21,38,69,99,127,101,114,74,16,4,4,0,0,0,0,0,0,0,0,0,2,4,0,0,0,0,4,6,27,33\n0,0,0,0,0,0,0,0,0,1,23,127,54,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,25,2,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,27,127,66,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,1,1,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,127,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,25,0,127,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,84,0,42,84,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,54,27,117,108,127,72,36,63,36,45,54,0,27,0,0,0,0,0,0,0,0,0\n0,0,25,25,76,127,76,50,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n46,127,51,92,34,63,40,34,28,11,5,0,0,11,40,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,127,0,95,31,31,31,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,48,127,127,39,107,68,0,19,19,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,127,84,42,42,21,0,0,0,21,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,127,25,25,76,50,127,76,0,25,76,0,0,0,0,0,25,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,127,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,42,127,127,42,42,0,0,42,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n15,7,7,11,11,3,3,3,3,11,11,11,7,42,34,34,57,42,73,96,123,127,84,80,38,19,3,23,11,3,0,7,3,0,0,0,0\n18,4,28,18,0,9,4,0,9,14,0,4,0,14,14,0,14,28,23,98,127,79,79,9,4,0,4,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,69,69,127,57,34,57,34,11,11,0,0,0,0,0,11,0,0,0,0,0,0\n0,0,5,0,0,0,0,0,0,0,0,0,0,0,5,20,30,71,127,106,60,55,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,60,16,27,5,22,71,55,44,44,38,33,11,27,22,127,104,49,99,93,110,77,93,33,71,33,38,16,38,0,11,5,22,0,16,0,0\n127,54,36,0,0,9,18,0,27,9,0,0,0,9,0,0,18,36,36,63,27,36,45,36,18,0,0,0,0,0,0,0,0,9,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,84,21,42,127,63,0,21,84,0,42,21,0,0,0,0,21,0,42,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,18,0,54,36,127,90,108,18,0,0,18,0,0,0,0,0,0,0,0,0,0\n63,79,15,127,47,95,39,31,31,31,15,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n18,0,18,0,0,0,0,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,108,72,18,0,18\n0,0,0,0,18,36,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,90,127,18,36,36,18\n2,1,1,0,0,1,0,1,2,2,0,11,21,26,47,82,100,97,127\n25,12,0,8,0,8,0,0,0,0,0,0,0,0,0,8,12,33,55,127,76,46,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,16,46,127\n42,84,105,0,63,127,42,0,42,63,42,21,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,45,18,3,6,0,18,42,127,117,12,9,3,9,0,0,0\n12,3,6,3,8,5,5,6,8,4,6,8,13,24,43,49,78,90,127\n0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,44,44,44,127,37,37,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,25,50,0,12,0,12,25,0,0,0,0,0,0,0,0,0,0,0\n127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n43,19,8,0,0,2,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,2,26,83,127\n28,23,5,2,5,2,0,5,0,0,2,0,0,2,0,2,2,5,0,2,0,2,0,0,0,0,0,0,0,5,2,11,5,31,49,72,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,15,45,127\n50,50,50,127,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,25,50,0\n0,0,0,0,0,0,0,0,0,15,0,0,15,15,0,31,127,95,63\n127,66,19,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1\n127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42\n0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,84,127,84\n0,0,0,0,101,0,127,0,50,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,95,31,31,42,63,21,127\n127,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,127\n95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95\n127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\n127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,63\n127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34\n127,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\n127,0,0,7,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,72,0,0,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,42,21,0,21,42,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,25,25,25,76,76,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,84,116,31,31,0,10,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,55,39,15,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,74,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,28,28,14,56,84,14,70,127,14,42,84,0,14,0,0,0,0,0,0,0,28,0,0,0,0,0,0,28,0,0\n0,0,0,0,31,31,63,31,127,31,0,0,31,0,63,63,63,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,38,127,38,0,0\n0,18,0,0,0,36,0,54,72,36,54,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,33,6,127\n63,0,0,0,31,0,0,95,127,95,63,63,31,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,112,42,127,28,84,14,56,56,0,0,0,0,0,14,0,0,0,14,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,47,47,127,15,31,31,0,0,0,0,0,0,0,15,0,31,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,127,63,63,127,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,127,127,0,63,0,0,0,0,0,0,0\n127,19,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127\n127,89,37,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127\n127,40,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,127\n23,127,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,69\n127,89,43,14,11,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,127\n127,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,74,63,21,10,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,81,9,0,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,21,21,10,0,52,42,63,31,0,42,10,0,0,0,0,0,0,0,0,42,42,21,10,10,31,0,0,10,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,127,18,7,3,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,31,0,0,0,0,31,0,0,31,31,127,0,63,0\n0,36,36,0,18,0,0,0,72,54,18,18,36,0,0,18,0,18,0,0,54,18,0,0,0,0,0,0,0,0,0,0,0,0,18,127,72\n0,63,0,0,0,127,127,63,63,127,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\n0,0,9,0,0,0,9,90,127,90,54,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,36\n31,0,0,47,15,111,15,127,47,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,31\n0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,10,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,52,10,10,127,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,127,0,31,31,0,0,31,31,0,31,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,127,76,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n16,29,59,71,127,84,110,50,88,101,88,55,76,55,76,88,118,50,25\n29,39,83,50,94,90,94,79,94,87,54,36,68,97,101,127,58,43,58,43,14,21,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,11,11,0,11,34,34,127,23\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,31,0,0,0,127,127,31,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,95,95,95,127,31,31,95,31,0,0,31,31,31,0,0,0,31,0,0,0,0\n0,0,0,15,0,0,0,127,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,25,0,25,0,25,0,25,50,0,0,0,0,0,0,0,0,0,0\n28,84,56,0,28,56,127,56,28,56,42,28,14,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,94,84,82,127,82,87,91,58,61,21,9,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4\n127,63,0,0,63,63,127,63,127,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0\n50,25,25,50,127,0,127,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,31,31,0,95,63,63,31,31,63,63,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,127,84,0,0,84,42,84,84,42,0,0,42,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,127,18,72,36,36,18,90,36,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,63,105,42,105,105,127,42,63,21,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,84,127,127,0,42,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,50,127,50,0,0,0,0,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,72,36,0,54,0,36,18,36,18,54,54,127,54,72,18,36,90,36,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,0,0,31,0,95,31,31,0,63,63,31,0,63,127,63,63,127,63,95,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,0,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,0,48,29,29,48,29,48,0,39,9,68,68,127,117,39,29,58,29,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,31,31,111,15,31,47,15,15,47,15,79,127,47,111,127,63,127,15,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,127,127,63,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,127,105,127,42,0,42,21,0,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,0,95,0,0,0,31,0,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,42,0,42,84,84,42,0,42,0,84,127,0,0,0,0,42,42,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,21,42,35,28,56,127,56,70\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,54,0,0,36,18,54,54,127,90,72,90,127,36,0\n0,0,0,0,0,0,0,0,0,0,0,0,2,22,33,41,71,113,127,121,107,91,55,52,35,49,24,55,60,88,57,33,22,16,2,2,5\n0,0,0,0,0,0,0,0,0,0,0,76,101,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,12,18,27,29,36,24,11,22,23,11,14,13,32,43,51,80,110,127,48,37,26\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,7,21,77,28,63,77,56,112,77,127,56,14,28,14\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,15,0,0,0,0,0,0,0,0,31,31,31,0,127,0,15,0\n0,0,0,0,0,0,0,0,0,6,0,6,6,12,18,30,48,54,78,66,42,42,114,72,78,42,72,54,96,60,127,120,48,66,0,6,12\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,9,18,0,72,27,9,18,0,18,27,9,0,9,0,27,0,36,81,127,117,99,90\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,14,112,98,56,84,70,14,0,14,127,56,98,14,42,70,127,56,56,14,28,14,28\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,22,14,52,82,127,89,44,14,7,37,7,44,67,0,14,14,7,14,14,7,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,63,63,31,63,95,95,0,63,63,127,31,31,0,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,42,0,21,42,127,21,42,0,42,63,0,0,0\n42,127,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,50,127,76,101,0,25,0,0\n101,101,25,127,127,25,25,50,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,38,12,12,25,38,50,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,15,31,15,127,0,15,15,31,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,95,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,84,127,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,52,31,10,31,0,21,0,42,21,31,0,0,0,0,0,0,0\n31,127,47,95,111,47,15,0,0,15,15,0,15,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,15,0,0,0,0,0,0\n0,0,0,0,0,0,5,0,0,0,0,17,11,5,23,11,57,51,127\n0,127,50,101,127,25,0,25,25,50,25,0,50,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,87,71,66,60,34,34,15,26,18,26,10,7,7,2,5,5,0,0\n127,95,95,95,127,31,63,31,95,31,31,0,63,31,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,25,0,0,0,0,0,25,0,0,76,127,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,95,31,0,0,0,0,0,0,0,31,31,31,127\n58,97,73,117,97,127,92,73,29,29,48,14,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,50,25,25,50,101,76,0,76,0,0,76,127,0,50,50,25,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,95,127,63,63,63,31,63,95,63,0,31,95,31,127,63,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,7,29,44,67,59,112,67,82,74,127,59,44,44,67,89,59,37,7,74,14,22,0,7,0,0\n0,0,0,5,0,11,0,11,22,44,127,77,44,16,0,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,15,15,19,34,15,15,30,34,30,61,53,73,127,65,92,61,15,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,19,29,29,68,87,127,107,48,39,97,97,68,78,48,68,39,19,0,9,0,0\n0,0,14,14,0,0,0,14,28,56,42,127,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,50,50,101,127,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,0,50,76,76,0,76,76,25,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,127,42,14,70,42,14,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,42,42,28,42,14,28,70,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,31,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,84,84,42,127,42,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,42,21,0,0,0,0,0,0,21,21,0,42,21,63,42,84,127,127,127,21,42,63,42,105,42,42,0,21,0,42,0,0,0,0,21,0\n127,42,21,21,0,21,0,84,21,0,31,0,10,0,10,0,21,31,0,105,95,63,21,52,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,127,93,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,50,76,0,0,0,0,0\n0,0,0,0,0,0,0,14,0,0,0,14,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,14,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,70,14,127,112,42,14,28,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0,0,42,0,0,0,0,0,0,0,0\n80,127,73,46,13,13,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,6,40,13\n127,42,31,8,2,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,42,84,84,42,0,42,127\n63,31,31,15,31,0,15,0,0,0,0,0,0,0,0,15,0,15,0,15,0,47,0,15,15,0,15,31,31,0,0,0,0,0,127,79,63\n127,119,111,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,74,0,0,0,0,10,42,127\n127,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,31,10,0\n127,51,28,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,80,57,27,11,2,8,5\n101,50,76,0,50,50,101,127,127,0,0,25,0,25,0,0,0,0,0,25,25,0,25,0,25,0,50,50,50,25,101,25,0,0,0,25,0\n127,0,0,0,63,63,63,63,127,0,63,0,127,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0\n127,42,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,127,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,18,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,54,0,0,0,0,0,0,0,0\n127,127,84,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,111,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,127,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,31,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,0,127,95,0,0,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,0,127,63,63,0,127,0,0,0,0,127,0,0,63,0,63,0,0,0,0,0,0,0,0,0\n0,15,0,15,0,47,15,0,0,0,0,0,0,95,0,0,63,63,127,47,31,0,31,47,63,0,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,108,0,127,18,0,72,108,18,90,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,21,63,63,84,42,42,127,42,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,0,21,0\n127,105,63,42,0,0,21,0,21,21,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,76,127\n0,63,42,127,63,105,105,21,42,105,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,25,25,76,0,25,25,50,76,50,25,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,63,0,0,127,127,127,0,0,63,0,127,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,92,127,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,127,46,11,11,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,0,11,0,0,0,0,0,0,0,0,0\n0,90,127,54,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,127,50,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\n127,73,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,6\n127,42,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,45,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n108,127,99,75,55,29,16,8,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,4,2,12,8,5,7,8,8\n0,0,0,0,0,0,0,0,15,15,127,31,31,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,15,127\n101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,50,127,101\n127,79,47,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,42,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,116,95,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n55,35,30,11,14,7,5,9,1,2,1,1,1,2,1,1,1,0,3,2,6,0,6,2,0,3,3,0,0,1,2,10,17,33,72,115,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,50,76,127,25,63,38,50,50\n0,0,15,31,15,0,0,0,0,15,0,0,15,31,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,31,79,127,31\n127,71,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,94,46,23,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,9,16,35,72,94,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,112,28,56,127,84\n127,86,51,23,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,78,39,68,19,127,39,58\n127,73,29,9,0,4,9,0,4,0,0,4,0,0,0,0,0,9,4,0,0,0,0,0,4,0,0,0,0,0,0,4,0,0,0,0,0\n127,88,48,23,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2\n127,121,97,41,20,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,11,14,14\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,27,86,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,38,127\n127,80,27,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,18,90,72\n127,124,68,50,66,34,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,0,5,31,39,34,23,74\n127,49,42,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,21,0\n72,54,27,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,45,127\n111,103,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,23,127\n12,31,31,82,31,44,88,82,114,101,63,50,95,107,31,44,25,19,44,19,12,25,69,44,82,95,127,95,82,31,50,31,19,57,0,25,25\n0,0,0,36,18,0,0,0,54,18,0,54,0,18,36,72,18,90,0,36,0,127,54,18,0,18,36,18,0,18,0,54,0,0,0,0,36\n127,86,76,63,26,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,6,0,0\n127,55,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n105,127,89,15,52,26,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,15,21,37,10,0\n84,21,63,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127\n0,0,0,0,0,0,42,127,0,0,42,0,0,0,0,42,42,42,84,42,0,42,0,0,42,42,0,0,0,0,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,42,0,42,0,0,0,0,0,84,42,0,42,42,42,84,0,0,0,0,127,0,0,0,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,0,101,101,25,0,0,0\n0,0,0,0,0,0,0,0,25,0,50,76,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,0,0,0,0,0\n95,127,79,47,47,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,0,0,15,15,0,0,0,0,0\n127,106,72,20,25,5,2,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,66,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,20,29\n0,0,0,0,0,0,0,0,6,3,9,9,12,15,12,9,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,15,15,21,9,9,9,3,0,0,0,0,0,0,0,0,0,0,0,3,3,0,6,43,55,127,80,58,27,12,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,8,16,12,16,33,38,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,8,8,38,25,4,8,4,4,0,0,0,0,0,0,0,0,0,0,4,4,4,21,59,88,118,127,67,29,12,4,8,0,4,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,127,112,42,0,0,0,0,0,0,0,14,0\n0,0,0,0,0,0,0,0,0,0,0,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,127,101,38,12,0,0,0,12,0,12,0,0\n0,0,0,0,0,0,0,0,0,0,0,7,31,87,55,31,7,0,0,7,0,0,0,0,7,0,0,0,0,0,0,0,0,7,23,127,87,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,19,127,29,39,9,0,0,19,0,0,0,0,0,9,0,0,0,9,0,0,9,19,9,68,97,29,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,84,127,105,42,10,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,37,127,37,7,14,7,7,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,76,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,7,0,0,0,29,14,67,119,127,59,89,44,37,22,29,14,7,0,0,7,0,0,7,0,0,14,7,0,7,14,7,44\n127,28,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,88,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,28,56,84,98,28,127,56\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,48,127,114,30,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,29,9,9,9,9,29,127,48,29,68,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,10,0,0,0,10,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,21,0,21,63,105,127,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,33,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,44,7,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,39,127\n127,56,13,23,3,0,0,0,0,0,0,0,0,0,6,3,0,3,0,3,6,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,15,31,127,127\n127,68,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,82,27,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,74,20,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,49,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,38,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,54,45,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,53,97,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,55,127\n127,59,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,57,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,47,84,127\n127,69,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,31,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,42,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,127,39,0\n127,69,19,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,70,127,84\n127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,44,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,42,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,18,0,72,36,0,36,90,127,72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,42,0,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,31,127,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,25,0,25,25,101,25,127,25,101,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,72,54,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,79,63,0,0,0,0,0,0,0,0,0,0,0,0\n127,74,52,25,18,10,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,92,34,10,7,7,7,5,2,10,2,5,0,2,2,0,0,0,0,5,0,0,2,2,5,7,0,5,2,5,0,0,0,7,2,7,10\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,31,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1,23,127\n127,125,76,64,51,46,44,57,44,52,33,53,32,35,22,24,11,15,15,13,6,9,4,5,3,1,1,0,0,0,0,0,0,1,1,1,8\n0,28,28,14,42,42,70,14,14,42,56,84,112,70,84,127,42,56,42,28,14,28,0,0,0,0,14,28,14,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,10,15,30,54,55,26,16,25,38,66,97,127,116,95,81,95,85,88\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,16,42,0,0,0,0,8,8,42,42,127,110,25,42,8,16,16\n23,75,127,63,51,80,46,57,80,69,51,34,46,57,86,63,46,51,46,40,23,28,11,5,5,0,11,0,0,28,11,17,11,17,40,5,11\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,127,57,34,34,0,0,23,34,34,11,46,23,57,57,46\n112,127,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28\n0,0,25,25,0,0,0,25,0,0,50,0,0,0,50,50,76,0,25,0,0,0,0,0,0,0,0,0,0,50,0,50,0,50,50,127,101\n0,0,0,0,0,0,0,0,63,63,0,0,127,63,0,127,127,0,63,0,63,0,0,0,63,0,0,0,0,0,0,0,0,127,63,0,0\n0,0,0,0,0,0,0,0,0,0,36,108,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,14,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,50,25,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,50,127,63,88,0,12,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,63,127,21,105,21,21,21,21,0,0,0,0,0,0,0\n127,6,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,18,18,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,11,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,11,0,0,11,0,0,0,0,0,0,0,0,0,0,11,0,23,34,92,127,57,34,11,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,108,36,54,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,36,0,0,0,0,0,0,0,0,0\n127,103,71,63,55,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0\n0,0,0,0,0,0,0,0,0,0,11,17,25,40,46,51,101,127,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,127,127,101,50,25,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0\n127,97,21,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,84,63,21,0,0,21,21,0,0,0,21,63,127,127,0,0,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,63,127,15,47,0,0,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,0,0,25,76,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,54,72,36,72,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,0,0,0,0,0,0,0,0,0,25,25\n0,0,0,0,0,0,0,0,31,0,31,63,0,0,63,127,31,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,31,0\n23,0,0,0,23,23,23,0,0,0,0,0,0,0,11,127,46,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,69,0,0,0,11,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,21,21,52,31,42,127,52,84,74,52,10,10,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,56,70,127,84,84\n0,0,0,0,0,0,0,0,0,42,0,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,127,0,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,50,127,0,0,0,0,25,0,0,25,0,25,0,0,0,25,25,101,0,0,0,25,76,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,95,0,0,0,31,31,31,0,0,0,0,0,0,31,63,0,0,31,63,31,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,15,0,0,0,0,15,0,31,63,127,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,18,0,0,0,0,0,0,0,0,18,18,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,56,127\n127,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11\n127,40,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,9,27\n127,50,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,12\n127,45,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,36,0\n12,6,18,6,12,6,6,18,12,6,18,24,30,6,24,24,24,6,18,12,0,12,0,12,6,18,12,6,12,48,18,24,78,30,96,127,96\n127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,10,0,0,10,10,52,95,116,116,84,63,116,63,74,31,31,10,21,10,21,21,31,52,10,52,31,21,63,116,127\n0,0,0,31,0,0,31,0,0,31,0,95,0,0,31,31,0,31,0,31,31,63,95,63,127,31,31,0,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,50,0,25,0,25,0,50,127,25,25,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0\n0,42,0,127,127,127,0,0,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,6,3,13,53,127,76,40,3,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,23,63,43,23,13,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,6,20,33,66,60,50,13,6,3,3,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,3,17,61,127,78,24,44,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,27,24,89,102,61,20,6,3,0,0,3,0,0,0,0,0,0,0,0,0,10,3,13,37,92,109,82,82,92,17,3,0,0,0,0,0,0,0\n0,0,0,0,0,0,15,0,0,31,15,47,15,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,31,15,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,63,127,15,0,15,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,71,39,7,15,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,50,101,76,76,25,50,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,127,76,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,14,56,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,56,70,127,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,12,0,0,25,38,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,12,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,76,127,127,50,12,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,127,50,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,21,0,21,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,63,0,21,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,95,47,0,0,0,0,0,0,0,0,0\n127,58,14,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,25\n127,72,10,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,12,25,88,25,25,12,50,127\n127,119,115,71,44,38,34,11,3,0,1,5,0,0,5,0,1,1,0,0,0,0,0,1,0,1,1,0,0,1,3,13,5,3,13,7,3\n127,55,79,19,7,7,0,0,23,0,3,11,3,0,7,15,11,35,3,3,7,0,3,3,0,7,0,0,0,0,0,0,3,0,3,7,15\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,16,2,0,0,0,0,0,0,0,0,2,16,44,127\n127,62,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,73,12,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,18,9,0,18,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,57,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,51,17,28,8,8,5,0,0,0,0,0,2,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,42,21,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,127\n127,54,13,9,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,63,127\n36,36,127,72,108,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,21,0,0,0,0,0,0,0,0,21,42,0,0,0,21,0,0,0,0,0,42,0,21,0,0,0,0,0,0,42,21,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2,0,10,64,127,120,90\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,0,127,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,23,34,77,127,115\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,12,0,0,0,12,0,12,0,12,25,12,25,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,25,76,0,0,0,25,50,25,0,0,0,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,9,27,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,7,7,39,71,71,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,18,108,72,90,90,127,18,72,18,0,18,18,36,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,10,10,52,127,84,63,10,10,42,10,0,10,31,10,10,21,0,10,10,31,10,10,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,10,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,31,111,111,127,63,47,31,15,15,0,15,0,31,47,47,31,0,47,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,0,63,63,63,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0\n0,31,0,0,0,0,0,0,63,0,127,31,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,31,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,71,127,87,16,6,26,9,0,0,3,0,0,0,0,0,0,0,0,0,9,0,0,6,6,9,3,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,127,52,10,21,15,15,0,0,0,0,5,0,0,0,0,0,0,0,0,10,15,5,0,15,10,26,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,42,105,21,127,21,0,0,0,0,21,0,21,21,0,0,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,0,31,63,95,127,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,63,0,95,127,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,31,0,127,127,31,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,31,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,21,0,127,42,42,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,0,0,21,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,101,25,0,0,0,0,0,0,0,50,127,101,25,50\n63,127,95,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,21,127,105,105,63,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,31,31,47,23,111,127,0,7,0,15,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,14,37,44,37,52,127,22,7,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,127,63,18,27,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,95,127,127,95,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,31,0,127,127,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127\n0,0,0,0,0,0,0,0,0,9,63,36,108,54,127,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,36,18,81,27,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,23,80,127,103,57,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,69,34,23,23,11,0,0,0,0,0,0,0,0\n0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,127\n127,45,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n56,28,98,127,84,56,84,42,14,14,28,42,28,0,28,14,28,14,42,98,28,70,14,0,0,0,0,0,14,0,0,14,42,28,0,28,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,63,0,0,0,0,38,63,127,25,0,0,0,0,0,0,0,0\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,21\n0,0,0,0,0,5,10,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,26,58,127\n50,50,50,127,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,102,58,34,53,29,14,4,9,14,0,0,9,4,4,19,14,4,14,4,39,9,4,0,0,0,0,0,0,4,4,0,0,14,24,39,48\n0,25,0,25,0,25,0,0,25,25,76,0,76,0,127,0,25,76,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,127,0,25,0,50,25,25,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,0,42,0,0,42,42,63,84,21,0,42,0,0,0,21,0,21,84,0,42,127,42,42,42,21,0\n0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,15,10,26,21,47,47,74,100,116,127,47,37,26,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,7,0,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,7,29,22,14,52,89,127,52,89,44,14,14,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,42,127,42,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,63,63,127,95,0,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,31,31,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,67,19,8,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,93,35,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,31,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,68,92,14,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,80,51,11,23,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,57,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,57,31,25,19,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,95\n84,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,84\n127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,0,63\n14,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,127\n127,31,63,63,0,31,31,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,38,50,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,40,28,17,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,42,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0\n127,102,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,9,73,78\n127,0,31,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n14,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,14,21,43,127,94\n127,77,7,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,0,0,0,0,0,0,7,14\n0,127,25,0,0,50,0,0,25,0,0,0,0,0,0,0,0,50,0,0,0,0,0,50,0,0,0,0,0,0,0,0,25,0,0,0,0\n0,0,9,0,0,0,58,39,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,127\n25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,63,127\n108,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,127,36\n63,63,31,63,63,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,31,127,127,31,31,0,31,31,0,0,0,0,0,0,0,0,0\n31,0,0,0,31,0,31,15,47,63,15,47,0,0,15,15,15,63,79,31,47,15,15,0,31,47,79,15,63,79,79,127,79,0,0,0,0\n108,18,54,0,36,0,0,0,0,0,0,18,0,18,0,0,18,0,54,54,127,90,90,72,36,0,0,0,0,18,0,18,54,0,18,0,0\n0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,7,7,0,15,15,0,7,0,3,3,39,75,127\n127,87,34,7,4,4,9,9,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,3,0,4,6,13,30,31,45\n127,22,3,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,6,0,6,0,19,6,38,31,127\n0,36,18,0,18,0,0,18,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,54,90,72,90,127,127,72\n127,102,63,33,12,27,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,0,3,3,9,18,24\n54,27,36,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,45,0,54,108,127\n127,127,95,47,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,3,15,43,23,79,127\n127,35,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,56\n127,31,47,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,64,27,3,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0\n127,99,27,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,62,50,22,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,127,0,63,31,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0\n0,0,10,10,0,0,0,10,0,10,0,31,10,52,10,42,42,84,127,116,21,52,42,0,0,0,10,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,9,0,4,4,4,9,39,83,127,48,29,19,29,19,68,29,0,19,19,0,0,0,0,0,0,0,19,19,39\n0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,8,44,33,127,52,24,5,22,16,11,2,0,2,5,41,27,0,0,2,2,2,0\n0,0,0,0,0,0,0,0,0,0,0,50,50,50,127,50,127,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,112,21,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,37,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n28,14,0,28,0,0,0,0,14,0,28,70,42,70,14,84,127,84,56\n0,36,0,36,0,0,0,0,0,36,18,18,0,18,36,108,127,36,36\n0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,46,46,127,69\n34,23,11,5,17,0,0,0,0,23,17,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,127,92\n127,63,127,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n38,57,127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0\n127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,42,63,0,21,95,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,39,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,45,127\n127,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,18,18,72,72,0,54,0,0,0,0,0,18,0,0,0,0,18,18,0,0,18,0,0,0,0,36,18,18,18,127,54,0,0,0,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,127,0,31,63,31,0,63,0,0,0,31,0,0,0,0,0,0,0,63,0,0\n0,0,0,0,0,31,31,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,127,0,63,0,31,31,0\n127,74,28,15,24,10,6,0,8,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,4,10,6,8,10,37,87\n127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,10,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,7,53,127\n0,0,0,0,0,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,127,0,63,31,0\n127,68,43,9,24,9,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,19,0,19,4,34,63,19\n127,111,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127\n15,15,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,127\n0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,63,0,0,0,0,0,31,0,31,63,31,95,127,31,0,0,0,0,63\n36,0,0,0,0,36,0,127,36,0,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,0,90,90,36,18,18,0,36\n127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14\n21,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,26,75,127\n127,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,29,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,59,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n101,76,127,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,50\n72,127,96,120,12,15,18,3,3,0,0,0,0,0,0,0,0,0,0\n127,127,47,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,63,63,63,63,0,0,0,63,127,0,0,127,0,63,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,80,127,11,0\n127,79,15,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,38,38,63,25,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,50\n56,46,15,15,10,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,53,69,127\n127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,111,111,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\n127,84,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,24,0,4,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,63,127,127,0,63,0,63,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,31,15,47,127,47,47,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,18,0,127,0,0,0,18,0,18\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,95,127,0,63,0,0,0,31,0,63\n0,0,0,0,0,0,0,0,0,0,28,127,112,112,70,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,95,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,127,42,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,0,0,0,15,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,15,0,0,0,15,31,15,0,0,0,31,0,0,31,47\n63,63,31,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,63,0,0,31,0,0,31,31,0,0,0,63,63,63\n31,0,31,0,31,0,31,31,0,0,31,31,95,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0\n63,12,12,50,25,38,0,0,0,12,127,0,0,50,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,76,25,127,25,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,21,0,21,0,0,0,0,0,21,21,0,0,21,0,0,0,42,21,21,42,127,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,63,31,31,127,111,127,63,15,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,31,0,79,0,0,127,63,47,0,15,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,70,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,11,0,11,0,0,0,0,0,0,0,11,11,0,0,80,127,46,34,80,0,11,34,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,95,0,0,31,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,42,0,0,42,0,0,127,84,42,0,42,84,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,0,0,18,127,36,54,0,18,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,36,18,0,18,127,36,18,36,0,18,18,0,18,90,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,127,127,63,63,0,0,0,63,63,0,127,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,47,47,63,127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,84,127,127,84,42,84,0,0,0,42,0,0,0,0,0,0,0,0\n90,81,127,36,0,18,18,9,0,0,9,0,0,0,0,0,9,27,0\n0,31,127,0,63,0,0,31,0,0,0,0,63,0,31,127,63,0,0\n0,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,127,63,0,0,0,31,0,0,0,0,63,0,63,63,0,127,0,0\n127,63,31,21,10,0,0,0,0,0,0,0,21,0,21,10,10,21,21\n0,0,0,0,0,0,0,3,3,15,29,101,123,101,37,17,3,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,3,19,51,81,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,7,18,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,13,30,13,43,127\n0,0,0,0,3,0,0,0,0,10,3,50,127,58,18,14,0,0,0,3,0,3,0,0,3,7,0,0,0,0,0,0,3,3,25,21,14\n0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,127,0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,84\n0,1,1,1,0,0,0,2,5,29,77,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,52,127\n0,0,0,0,0,0,0,0,0,0,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,63,21,42,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,127\n0,0,0,0,0,0,0,0,25,66,30,45,127,71,25,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,40,30\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,63,127\n0,0,0,0,0,0,0,0,95,31,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\n0,0,0,0,0,0,0,0,31,0,0,63,63,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,95,127\n127,0,0,0,0,0,0,0,0,0,0,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,14,124,127,38,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,8,77,127,34,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,22,127,42,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,9,0,0,19,29,9,9,29,39,127,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,0,9,0,0,0,0,0,0,0,9\n12,38,12,38,12,12,12,12,0,0,12,38,127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,12,12,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,15,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,0,31,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,76,127,101,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,0,0,0,0,42,0,84,0,42,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,21,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,127,21,21,21,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,111,15,0,0,0,0,31,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,95,95,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,63,21,21,21,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,56,77,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,7,14,42,56,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,5,16,93,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,127,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,84,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,15,51,127,111,35,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,40,127,34,23,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,63,31,0,0,127,127,63,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,8,0,0,8,42,127,59,25,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,4,70,94,127,23,0,0,4,0,0,4,9,0,0,0,0,0,0,0,0,0,0,0,0,14,4,28,28,14,4,4,0,0,0,9,18,42,28,4,0,0,0,0,0,0,0,0,0,0,4,4,9,42,122,23,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,16,8,59,84,8,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,8,33,42,16,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,16,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,84,127,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,1,6,9,6,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,2,2,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,8,31,127,50,27,4,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,6,10,9,5,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,4,2,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,55,127,79,31,0,5,0,0,0,0,0,0,0,0\n0,0,1,0,2,2,7,9,17,60,107,127,83,16,0,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,0,18,35,45,24,14,8,1,5,1,1,1,0\n0,0,0,0,0,0,1,1,11,56,47,127,53,6,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3,3,3,2,2,1,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,4,28,127,84,21,7,8,9,13,7,2,1,1,0,0,0,0,0,0,0,0,0,0,0,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,25,123,127,38,12,13,10,3,1,1,0,0,0,0,0,0,0,0,0,0,2,7,2,6,4,5,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,7,7,0,0,0,14,70,77,127,42,7,14,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,7,0,35,14,0,0,0,0,0,0,0,0\n2,2,0,0,0,2,4,8,15,25,49,127,55,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,19,10,0,0,0,0,0,2,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,39,31,31,0,7,0,0,23,15,0,7,15,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,91,106,20,0,15,0,0,0,10,0,5,5,5,5,0,0,0,0,0,5,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,0,54,72,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,108,54,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,72,127,54,36,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,36,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,36,0,54,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,72,127,0,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,6,18,12,0,12,42,114,127,96,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,48,24,42,12,0,6,0,0,0,0,0\n12,0,0,0,6,6,12,12,38,25,127,127,88,38,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,38,44,12,19,0,6,0,6,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,127,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0,31,0,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,127,84,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,127,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,21,42,21,84,0,0,0,0,21\n0,0,0,0,0,0,15,15,47,79,31,127,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,15,79,31,15,15,47,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n36,0,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,18,54,54,127,0,54,18,0,0,0,0,0,0,0,0\n42,105,127,21,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,105,84,63,127,63,0\n127,55,23,23,47,0,0,0,0,0,0,0,0,0,0,0,0,7,0,23,7,7,7,7,15,31,23,55,31,7,0,0,0,0,0,0,0\n0,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,42,0,42,84,127,0,0,0,0,42,0,0,0,0,0,0\n122,127,42,8,8,4,0,1,0,2,2,2,2,1,0,1,0,0,0,5,8,8,45,84,112,109,42,9,2,2,1,2,4,4,4,1,5\n127,0,0,15,0,31,15,63,0,47,15,63,31,0,0,63,63,15,31,31,0,15,63,15,15,31,31,0,31,0,15,15,15,95,15,47,31\n127,38,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,42,84,42,0,0,42,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,127,21,0,0,0\n84,0,0,127,42,84,0,0,0,0,0,0,42,0,0,0,0,0,84,0,84,42,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,11,17,65,127,123,27,20,4,0,1,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127,90,72,72,54,54,0,0,54,36,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,79,63,87,103,127,63,63,39,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,95,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n23,5,11,17,40,11,11,69,28,0,23,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n16,50,25,16,50,127,67,8,25,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n53,70,94,115,127,97,62,11,8,2,2,17,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,0,27,27,54,27,81,36,0,9,127,72,27,0,9,27,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,66,127,121,93,77,55,22,11,0,5,0,27,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,63,45,36,127,108,127,117,63,72,9,18,54,54,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,111,127,63\n72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,0,72,36,72,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\n0,84,84,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,127,84,0,42,0,0,0,0,0,0,0,0,0\n0,63,0,63,0,0,0,0,0,0,63,0,127,0,127,0,63,0,63,0,0,0,0,0,0,63,0,63,0,0,127,0,63,63,0,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,0,0,0,31,127,63,0,0,0,0,0,0,0,0,0,0,0\n50,127,76,50,101,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,127\n0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,127\n90,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,36,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,18,9,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,8,52,127,87,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,21,17,8,0,8\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,31,31,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95\n127,98,70,70,56,28,42,0,14,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,28,42,70,28\n127,56,98,42,98,28,70,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,0,42,28,56,56,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,84,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n116,100,64,34,26,21,18,20,29,43,68,95,127,89,55,39,25,20,21\n0,0,6,0,6,0,6,12,12,12,12,19,25,19,25,44,44,76,127\n127,0,127,63,0,63,127,63,127,0,0,63,0,127,0,0,127,127,0\n5,2,5,5,10,2,0,2,5,0,10,15,7,15,23,39,74,82,127\n0,0,0,0,0,0,0,0,42,127,84,127,0,84,0,0,84,0,0\n127,77,22,9,8,6,3,1,2,3,4,3,4,3,1,3,2,1,2,2,10,12,17,76,120,64,17,9,4,3,3,4,1,3,4,3,5\n36,54,36,18,18,36,127,18,18,36,54,18,72,18,0,0,0,18,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,127\n127,46,23,11,34,28,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,21,0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n60,120,102,127,84,90,54,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,52,42,74,42,95,10,31,95,21,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15,17,1,10,12,25,34,56,77,119,114,127,101,49\n112,66,38,15,14,20,36,21,38,73,72,113,127,65,51,81,59,38,34\n0,31,0,15,15,15,0,31,0,47,0,0,31,15,31,95,63,79,127\n0,31,47,15,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,127,127,111,31,79,79,0,0,0,0,0,0,0,0\n127,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,0,9,45,44,62,35,34,20,19,29,77,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,57,0,34,127,0,0,0\n24,28,50,39,41,47,76,79,116,123,127,122,84,47,47,46,87,78,114\n0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,54,36,36,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,24,127\n127,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,28,14,28,127,42,28,28\n0,0,0,0,0,0,21,105,127,105,31,10,0,0,0,0,0,0,0\n0,25,0,50,0,50,25,0,101,127,50,76,0,76,76,25,76,101,101\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,127,104,37,14,7,7,0,0,0\n127,116,81,67,57,61,77,86,110,83,120,114,102,106,100,63,65,90,90\n0,21,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,63,42,21,0,0,21,0,21,0,63,42,0,127\n76,25,127,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,27,57,49,71,63,93,74,63,74,127,99\n127,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,127,127,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,127,127,63,63,63,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,127,104,66,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127,71,71,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,9,0,0,9,18,9,18,49,22,22,31,127,31,22,31,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,19,6,6,57,12,63,25,25,38,38,127,25,12,6,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,25,25,0,0,0,101,127,101,101,101,127,101,25,0,25,0,0,0,0,0,25,0,0,25,0,0,0,0,0,25,0,0,25,25,0\n0,31,0,31,0,63,63,127,95,31,127,31,127,0,31,0,0,0,0,63,0,31,0,31,0,0,0,0,31,0,0,31,31,31,0,0\n42,0,0,84,0,42,42,0,0,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,84,84,42,42\n0,0,63,0,31,0,0,0,31,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127,63,63,0,0\n127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47\n127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47\n0,0,0,127,63,0,0,0,0,0,63,63,0,127,0,127,0,0,127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,50,0,0,0,0,0,0,25,50,50,25,0,25,0,0,25,127,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,52,112,127,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,28,61,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,42,127,84,0,0,0,84,28,28,14,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,70,70,0\n0,0,0,0,25,0,0,0,0,50,50,25,0,25,50,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,127,50,50\n0,0,0,0,0,0,21,0,0,0,21,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,42\n127,0,0,0,31,0,31,0,0,0,0,0,0,0,31,63,31,0,31,31,0,0,0,0,63,63,0,0,63,95,0,31,31,0,0,0,0\n0,0,0,0,0,0,0,0,25,0,0,25,25,50,0,76,127,0,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127\n0,0,0,0,0,0,31,31,127,0,127,0,0,0,31,31,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,31,95,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,0,31,7,47,87,127,95,47,47,47,47,15,31,39,55,7,95,95,55,31,39,0,15,31,0,31,7,39,7,103,119,79,87,71,23,47\n0,0,0,0,0,0,0,0,0,18,18,0,0,0,36,72,54,54,0,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,127,38,88,0,38,38,38,12,25,12,12,25,25,0,25,12,25,25,12,63,63,76,101,101,38,76,38,12,0,50,12,25,38,12,76,76\n42,105,63,127,21,0,0,21,0,0,0,21,0,0,0,0,0,21,0\n127,83,83,35,107,37,10,30,10,15,10,21,17,10,0,2,8,0,4\n0,0,0,36,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,18,90,90,18,36,54,127,36,0,0,0,0,0,0,0,0,0\n0,4,0,4,0,4,0,0,0,0,4,0,4,0,4,4,127,122,18\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,77,127\n127,127,63,63,127,15,31,63,15,0,63,0,0,31,0,15,15,15,15,0,15,15,0,47,15,31,31,15,15,63,111,111,47,95,79,79\n36,127,45,9,45,9,18,18,0,18,18,0,18,9,0,0,0,27,9,18,0,0,0,18,18,0,9,9,18,18,36,36,99,54,81,72\n0,0,0,0,0,0,0,0,0,0,25,76,38,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,12,0,25,38,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,0,84,84,42,84,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,31,127,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,42,84,0,0,84,0,0,0,42,0,84,127,0,0,0,0,84,0,0,0,0,0,42,0,0,42,42,84,42,0,0,84\n0,0,0,0,0,0,0,63,0,63,127,0,0,0,63,0,63,0,0\n23,115,103,115,115,92,103,46,103,80,127,103,69,23,11,46,11,34,0\n0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,31,127,63,31,95,0,0,0,0,0,0,0,0,0\n127,25,101,50,0,0,50,25,0,0,0,0,0,50,0,0,25,25,25,0,0,0,50,0,0,0,0,25,25,25,76,0,50,0,0,25\n63,95,0,63,0,0,63,31,0,0,0,0,63,31,0,0,31,0,0,0,0,0,0,0,31,0,63,95,63,63,63,127,31,0,0,31\n0,0,0,0,0,0,0,0,0,0,0,76,25,0,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101\n0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,50,0,25,0,0,0,0,25,127,50,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,10,10,42,105,127,95,21\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,31,95,31,63,95,0,31,31,31,0,0,0,0,0,0,0,0,0,0\n0,14,0,0,0,28,0,14,14,42,127,84,42,0,14,28,0,42,0\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,42,42,42,0,0,42,0,42,42,0,0,0,0,0,0,0,0,127,42,42,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,95,0,31,31,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,31,63,0,0,127\n0,0,0,0,0,63,47,15,95,127,63,31,47,47,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,127\n0,63,0,31,0,0,0,31,0,63,31,31,0,0,63,31,95,0,127\n70,21,28,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,49,77,77,127,56,21,49,0,0,0,0,0\n0,0,0,0,0,0,31,31,0,0,0,127,31,0,31,63,0,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,63,0\n0,0,0,0,0,0,0,9,9,27,36,45,81,72,9,72,90,45,27,0,9,0,0,0,0,0,0,0,0,0,0,0,18,36,99,99,90,72,27,81,127,36,36,9,0,0,0,0,0,0,0,0,0,0,0,18,36,27,36,45,9,36,54,45,63,36,9,18,9,9,0,0\n0,0,0,0,0,0,0,0,10,31,63,31,42,42,42,95,52,116,31,0,0,0,0,0,0,0,0,0,0,0,0,10,21,84,42,127,116,63,105,95,95,95,0,10,0,0,0,0,0,0,0,0,0,0,0,0,21,42,52,42,63,42,95,42,63,42,31,21,10,10,0,0\n127,52,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,50,101,0,127,101,0,25,0,25,0,25,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,28,56,127\n0,0,0,0,0,0,0,0,9,9,0,0,0,0,9,27,63,117,127,72,27,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,76,25,0,0,0,76,127\n0,0,0,0,0,0,0,0,21,127,0,0,0,0,0,21,0,0,0,0,0,21,0,0,0,0,0,21,21,0,0,0,21,0,0,0,0\n42,21,42,21,0,0,0,0,42,21,0,0,0,0,0,42,0,0,0,0,0,0,0,21,127,42,21,21,42,0,21,0,0,0,0,0,0\n0,0,63,63,63,127,0,0,0,0,127,127,0,63,0,63,127,63,0\n0,31,0,0,0,0,0,0,31,31,0,0,31,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,31,0,63,0\n0,0,0,0,0,0,0,63,0,63,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,63,127,127,63\n0,0,0,0,0,0,0,0,42,84,84,127,127,0,42,0,0,0,0\n127,127,111,31,63,63,47,31,0,0,0,0,0,0,0,0,0,0,0\n0,76,127,76,0,0,127,50,50,0,76,101,50,76,25,25,0,25,0\n0,0,0,0,0,0,0,0,0,127,95,63,63,31,0,0,0,0,0\n36,18,0,0,0,0,72,36,18,36,18,18,0,0,18,18,36,18,72,36,18,36,0,54,36,18,18,36,54,127,72,18,54,36,72,18\n25,50,50,0,50,25,76,0,0,0,0,0,0,0,25,0,0,25,25,76,50,0,0,101,25,127,76,50,50,76,76,101,127,0,0,0\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0\n63,0,0,63,127,63,63,127,127,127,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,127,63,63,63,63,0,0,0,63,0,0\n0,0,0,0,31,63,127,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,63,127,0,31,0,0,0\n0,0,0,0,0,0,0,0,12,12,25,88,63,38,25,63,25,25,0,12,0,0,0,0,0,0,0,0,0,25,0,12,0,76,63,101,127\n0,0,0,0,18,18,18,18,0,36,127,36,18,54,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36\n0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,127,63,31,95,0,31,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,42,42,0,0,84,42,0,0,0,0\n0,50,0,25,0,50,76,0,25,76,0,101,127,101,25,0,0,25,0\n14,7,0,7,7,0,0,7,14,22,29,127,82,37,14,29,0,0,0\n0,0,0,0,31,0,0,31,95,63,31,31,0,0,31,0,31,0,63,95,0,63,31,63,63,127,31,31,0,0,31,31,0,63,0,0\n0,0,0,0,0,63,63,31,31,95,95,127,31,0,0,0,31,0,95,0,63,63,0,0,63,95,0,31,0,0,0,0,0,63,0,0\n63,31,95,63,0,0,63,0,0,31,63,63,0,31,63,31,31,0,127\n0,127,84,42,84,84,42,0,42,127,42,127,42,42,127,42,127,0,0\n127,0,0,127,0,63,0,0,63,0,0,0,0,0,0,63,127,63,0,0,0,0,63,0,0,0,63,63,0,0,0,0,127,0,0,63\n127,0,63,127,63,0,0,0,0,0,0,0,0,127,0,127,127,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,63,0,0\n0,0,0,0,0,0,0,0,18,18,54,90,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,36\n0,31,31,0,31,0,0,0,0,0,31,127,95,31,31,0,0,0,0\n0,0,0,95,0,127,95,0,0,0,0,127,0,0,0,0,0,0,0\n25,19,38,76,38,38,76,69,63,69,127,63,69,31,31,6,12,12,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,127\n127,0,0,0,0,0,0,63,127,0,0,0,0,63,0,0,0,63,0\n72,18,0,36,36,36,18,127,72,90,108,54,72,72,54,36,0,36,0\n36,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,72,72,36,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,76,50,0,50,127,0,76,50,50,50,0,0,0,0\n0,0,0,31,127,31,63,31,95,127,127,63,63,0,31,0,31,0,0\n0,0,0,0,0,0,0,0,0,0,31,63,95,127,31,0,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,63,127,127\n0,0,14,14,14,0,0,42,42,42,127,56,42,14,14,0,0,0,28\n0,0,42,42,42,0,127,84,127,84,84,42,84,42,0,0,0,0,0\n0,0,0,0,63,0,0,0,63,63,0,127,0,0,0,0,63,0,0\n0,0,0,0,31,0,0,0,0,31,0,0,31,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0\n31,15,15,127,79,79,63,0,31,0,0,31,31,95,79,31,95,31,95\n0,42,0,84,84,42,0,42,0,0,0,42,84,42,0,42,0,0,0,0,42,0,127,0,0,42,0,127,0,127,0,0,84,42,0,0\n0,31,0,95,0,31,0,0,0,31,0,127,31,0,31,0,0,0,0,0,63,0,95,0,31,0,0,31,0,31,0,63,63,31,0,31\n0,0,0,0,0,0,0,0,0,127,0,127,63,63,0,0,0,63,63,0,0,0,0,0,0,0,0,63,0,63,0,63,63,0,63,127,0\n127,42,42,63,42,21,0,21,0,42,21,21,0,84,84,42,21,0,127\n54,18,36,63,18,0,9,36,63,127,72,63,99,63,18,0,18,0,0\n127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,70\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,56\n0,0,0,0,0,0,0,63,0,127,127,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0\n0,0,0,0,0,18,36,0,9,9,72,127,99,45,27,18,36,0,0,18,0,0,18,0,0,0,9,0,0,27,27,18,0,0,0,18,0\n0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,63,127,63,63,127,0,0,31,0,31,0\n0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,95,0,0,0\n127,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,63,127,127\n25,12,16,21,46,25,33,46,46,50,25,33,29,71,93,80,42,93,127\n117,87,58,68,68,48,29,9,0,0,0,0,0,0,0,0,9,9,19,29,58,48,97,58,58,127,97,87,68,29,9,0,9,0,0,0,0\n76,25,50,0,25,63,25,12,38,50,76,114,63,127,50,50,25,12,25\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76,50,101,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,127,63,42,127\n70,70,28,28,56,49,63,35,98,49,28,35,56,70,70,56,84,127,84\n19,29,0,0,0,0,0,9,9,0,0,0,0,9,0,0,19,0,29,9,29,9,39,68,127,68,39,0,48,39,29,0,0,0,0,9,0\n0,0,0,0,0,0,0,0,0,38,0,38,88,127,38,25,0,12,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,54,18,18,0,18,36,72,36,72,0,72,127,72\n23,40,34,40,23,69,80,69,92,109,127,109,115,103,34,17,23,23,11\n0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,42,0,42,21,0,0,0,21,21,0,0,0\n63,95,0,0,0,31,0,31,0,63,31,31,127,0,63,63,63,0,0\n89,127,52,48,52,56,78,67,97,85,108,127,97,100,74,74,63,48,22\n0,101,0,25,25,25,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,127,76,127,50,50,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,14,14,70,84,84\n50,76,76,76,76,127,50,25,25,50,0,76,25,101,25,0,0,0,0,25,0,50,0,0,0,0,0,0,25,0,0,0,25,0,0,0\n127,127,63,31,63,95,63,31,63,95,31,0,63,31,95,31,0,0,0,0,63,95,31,31,0,0,0,0,31,0,0,0,0,0,0,31\n0,0,0,0,0,0,42,0,84,0,0,0,0,0,0,0,84,127,42,0,0,0,0,0,0,0,0,84,0,0,0,84,127,0,0,0,0\n76,127,25,38,12,0,0,0,12,0,0,0,0,0,0,0,12,12,12,12,25,25,0,12,88,25,25,38,25,0,12,25,0,0,12,0,0\n63,47,31,79,63,79,127,79,31,47,31,15,47,31,0,47,15,79,0,15,15,111,47,15,47,31,47,47,15,111,79,95,15,63,0,95,31\n127,63,0,0,127,63,0,0,0,0,0,0,127,127,0,63,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0\n0,0,0,42,42,42,0,0,0,0,0,0,42,0,127,42,0,42,42,0,42,42,42,84,84,42,0,127,84,84,84,84,0,84,42,0,0\n127,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,95,0,0,0,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,1,4,17,30,55,55,41,31,25,22,25,16,3,1,1,0,0,0,0,0,0,1,1,4,3,2,7,22,70,127\n0,0,0,0,0,0,63,42,0,42,0,63,0,63,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,127\n0,0,0,0,0,0,1,1,16,46,63,66,73,30,13,12,4,1,0,1,0,0,0,0,0,0,0,0,0,2,0,1,0,9,11,63,127\n0,0,0,0,0,0,0,11,0,23,11,46,127,103,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,69\n0,127,63,0,0,0,0,127,63,127,0,0,0,0,63,63,63,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,15,15,63,31,47,31,15,15,0,15,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,42,0,0,127,42,42,84,0,84,42,0,42,0,0,0\n84,0,0,0,0,0,42,84,42,84,127,127,127,0,0,42,0,0,0\n0,0,0,0,0,0,0,0,0,25,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50\n0,0,0,0,0,0,0,0,0,0,0,101,50,25,0,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,50,25,0,25,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,101,50,101,0,50,50,25,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,63,42,21,63,127,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,63,0,21,21,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,0,42,84,21,42,21,21,42,21,0,0,0,0,0,0\n0,0,0,0,0,0,42,0,42,0,0,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,0,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,0,0,0,0,42,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,31,63,0,31,95,0,31,0,0,0,0,0,0,0\n0,0,0,21,42,127,63,0,21,42,21,42,63,0,21,0,0,0,0\n19,9,9,48,78,19,127,29,48,9,78,29,78,9,9,19,9,9,19\n71,45,116,91,60,127,127,76,55,76,30,30,40,40,71,71,91,96,71\n0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,127,0,0,0,0,0,42,0,0,0,42,0,42,0\n0,42,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,0,0,0,0,0,0,0,0,0,0,42,42\n0,0,0,84,84,0,0,0,0,42,127,84,84,0,0,127,0,0,0\n0,63,31,63,63,31,0,0,63,0,95,31,31,31,95,0,0,0,127\n112,56,70,56,42,42,14,28,28,112,56,28,56,42,127,112,70,28,28\n0,0,0,0,0,0,5,16,77,49,5,0,0,0,22,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,71,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,84,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,84,0,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,63,0,63,0,63,127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,0,0,63,63,63,127,0,0,0,0,0,0,0,0\n0,42,0,42,0,0,84,0,0,0,127,84,42,42,42,127,0,42,0\n50,38,63,38,50,50,76,76,63,63,76,101,25,38,76,38,38,127,50\n0,0,0,5,0,15,0,20,25,76,106,127,91,10,5,5,0,0,0\n57,66,83,84,78,69,81,60,102,127,105,92,65,83,71,48,60,71,36\n50,76,50,12,0,12,12,0,25,0,0,0,0,0,0,0,0,0,0,0,0,25,38,50,127,101,76,12,0,12,0,76,0,0,0,0,0\n0,21,0,21,0,0,0,0,42,105,127,105,42,42,21,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,36,18,0,18,18,0,0\n0,0,0,0,25,25,25,25,25,76,127,101,25,76,25,0,0,25,0\n109,123,106,116,61,127,106,65,68,120,113,92,82,92,116,109,106,72,75\n101,25,76,127,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,25,76,76,25,25,50,0,0,0,0,0,0,0,25,0,0\n0,84,0,0,0,0,0,0,0,0,127,0,0,42,0,0,0,0,42,0,0,0,0,42,42,42,0,0,0,42,0,42,0,0,42,0,0\n0,0,0,0,0,0,18,0,0,72,0,18,108,72,90,18,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,36,127,54,36\n0,0,0,0,0,0,0,0,21,105,84,21,21,21,127,21,0,0,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,84,105,0\n0,42,0,0,42,0,42,127,0,0,42,42,42,0,0,42,42,42,0\n6,16,20,13,23,10,20,23,40,43,56,73,90,127,30,33,3,3,0\n0,42,84,84,0,127,0,0,0,42,42,0,0,0,42,0,42,42,0\n127,69,69,39,11,3,5,7,9,51,91,105,75,59,53,29,19,15,3\n22,50,60,68,57,100,127,118,100,75,60,49,33,55,60,64,92,111,114\n30,68,98,79,49,11,1,1,3,43,83,108,87,127,104,58,39,0,0\n84,63,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,72,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,95,31,63,127,0,0,63,0,0,0,0,0\n0,0,0,25,50,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,25,12,38,50,12,0,0,0,38,25,0,38,0,12,38,12,0,25\n63,0,95,31,31,31,127,31,95,31,63,31,63,0,0,31,0,0,0\n0,0,0,0,0,0,0,0,31,63,31,127,127,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,36,6,127,36,24\n0,0,14,56,0,28,14,70,0,42,84,28,56,98,28,28,42,14,28,70,28,14,14,0,0,0,14,84,28,14,14,14,127,112,28,0,28\n0,0,0,0,0,0,0,0,25,25,0,0,0,0,25,101,0,0,0,25,25,25,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,0,0,0,0,0,0,0,0,50,0,0,0,0,25,0,127,25,76,0,0,0,0,0,50,0\n0,0,0,0,0,0,0,0,50,0,0,0,25,25,0,50,25,0,0,0,0,0,50,76,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,50,0,25,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,127,50,50,0,25,25,50,0,0,0\n0,0,0,0,0,0,0,0,0,101,50,76,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,50\n106,103,96,100,95,103,98,110,121,101,103,94,70,96,84,86,82,103,127\n124,67,34,41,25,28,15,17,2,2,8,0,4,7,4,4,11,5,11,31,46,21,24,79,127,105,83,33,30,56,25,18,10,11,12,5,17\n69,23,69,34,92,92,92,127,115,92,34,57,80,57,0,11,23,92,46\n127,31,31,63,31,31,0,0,31,127,31,0,31,63,31,0,31,63,0,63,0,0,31,63,31,31,31,63,31,0,63,0,0,0,63,63,0\n127,63,84,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,63,42,42,63,105,0,0,42,0,0,0,0,0,0,0,0\n127,45,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,63,72,27,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,63,63,63,63,0,63,63,63,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,127,0\n0,42,0,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,84,84,0,0,0,0,0,42,42,0,0,0,0\n0,0,0,0,0,0,0,0,10,21,31,58,68,68,15,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,21,68,127\n0,0,0,0,0,42,0,42,42,42,0,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,127,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,50,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,42,0,0,0,0,0,84\n0,0,0,0,0,0,0,42,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,42,42,42,0,0,0,0,42,0,0,0,0,0\n0,42,42,0,0,0,0,42,0,42,42,0,0,0,0,42,0,42,0,0,0,42,42,127,0,42,0,0,0,0,0,42,0,42,84,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,63,127,84\n0,0,0,0,63,63,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,127,0,63,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0,0,0,0,0,0,0,0,0\n0,0,0,36,0,36,0,0,18,18,0,18,0,18,0,0,0,0,0,0,36,18,18,18,127,90,54,72,90,54,0,18,0,0,18,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,127,63,127,63,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,101,0,0,0,0,0,0,0,0,0,0\n90,54,72,90,54,18,0,0,0,0,9,0,0,0,0,9,0,0,0,0,0,0,0,0,18,27,36,54,117,81,108,117,90,45,127,63,54\n63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,31,127,63,0,31,31,31,31,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,42,42,0,0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,9,39,68,97,78,127,107,58,19,9,9,0,9,9,0,9,19,0,0,0,0,9,9,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,0,21,42,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,14,0,14,70,14,28,14,0,28,28,0,28,0,14,0,14,0,42,112,112,56,127,98,70,28\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,31,0,42,10,31,52,10,10,0,10,21,21,10,0,0,10,21,31,42,95,116,127,74,52,31,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,0,63,0,127,0,0,0,0,0,0,0,0,0,63,127,63,0,127,63,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,84,127,84,42,84,42,0,42,0,42,0,0,0,84,84,0,0,0,0,0,0,0,127,42,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,31,63,0,0,127,63,0,0,31,0,63,31,95,31,31,0,0,31,0,31,0,31,31,31\n0,127,42,0,21,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,31,63,31,95,31,0,0,0,0,0,0,0,31,31,0,0,0,0,31,0,63,63,31,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\n0,0,0,0,31,127,0,127,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,76,127,25,25,25,0,0,0,0,0,0,25,25,50,50,101,0,25,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,95,95,31,31,0,0,0,0,0,0,0,0,0,127,63,95,31,95,0,31\n0,0,0,127,50,50,25,25,0,0,25,0,0,0,0,0,0,0,50,0,0,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,12,76,127,50,12,0,38,0,0,0,0\n10,7,0,7,2,5,2,17,7,5,5,5,12,10,30,53,63,81,127\n0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,14,14,28,56,70,127,0,14,28,0,0,14,14,0,0,0,0,0,0,0,0\n0,0,0,0,6,0,0,0,0,0,6,0,0,0,6,25,44,114,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,0,50,0,0,127,76,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,76,50,76,0,0,0\n0,0,0,9,27,9,9,0,9,36,18,18,27,18,54,63,27,127,108\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,127,0,50,0,25,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,38,12,25,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,28,127,112,70,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,34,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,105,42,127,63,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,108,127,36,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,127,63,31,0,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,9,9,29,127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,19,39,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,12,12,0,0,0,0,0,0,0\n120,102,100,67,65,56,33,28,23,20,31,15,15,15,13,15,24,22,45,41,55,68,97,101,126,127,116,95,50,55,35,32,20,13,12,18,3\n63,0,0,15,31,15,0,0,15,15,0,0,15,15,47,15,15,31,31,0,47,63,0,15,79,47,15,15,15,31,127,0,47,0,0,15,0\n127,15,15,0,0,15,15,15,0,0,0,0,0,0,15,15,0,0,0,0,0,47,0,0,63,31,15,0,15,0,0,0,15,31,15,0,0\n30,40,50,45,35,20,15,20,20,0,10,30,15,35,40,40,76,111,106,50,71,86,127,81,91,66,81,50,15,30,35,5,5,10,5,10,0\n0,63,127,127,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,63,127,63,127,0,0,0,0,0,0,0,63,0\n97,127,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,39,21,42,74,31,50,23,39,127\n80,33,73,60,26,26,0,20,26,6,6,26,0,13,40,13,26,26,86,66,66,127,113,46,100,100,40,73,66,46,53,33,13,6,13,13,40\n127,90,90,81,18,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,18,9,0,18,18,0,18,9,0,9,0,9,36\n0,31,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,31,31,0,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,0\n0,0,0,0,42,127,0,0,42,0,0,0,0,0,0,0,0,42,42,84,42,42,0,0,0,0,0,84,42,0,42,0,42,0,0,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42\n63,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,63,127,0,127,0,0,0,63,0,0,0,0,0,63,0,63,0,0,127,0,0,63,127,63,0,127,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,47,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63\n0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,63,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,14,14,70,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,6,13,13,33,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,86,127,113,6,20,26,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,23,57,69,46,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,103,92,103,127,46,11,46,0,11,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,127,50,0,25,0,25,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,21,127,21,21,21,21,0,0,0,0,0\n0,0,0,11,11,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,127,92,34,23,11,11,0,57,0,0,0,0,11\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,108,54,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,105,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,103,115,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,111,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,42,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,55,127,63,23,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,23,79,47,111,47,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,63,127,38,25,0,0,0,0,0,0,0,12,0,0,88,0,50,0,12,76,101,50,114,12,0,12,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,72,127,54,72,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,50,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,31,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,4,22,9,18,58,58,127,86,40,18,4,4,0,0,0,0,0,0,9,0,0,0,0,4,4,18,63,49,54,90,63,54,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,18,36,31,27,36,13,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,8,0,13,52,48,127,43,13,0,0,0,8,0,0,0,0,0,0,0,0,0,8,0,0,17,8,21,13,70,74,21,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,8,43,35,39,26,4,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,84,84,0,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,25,0,0,127,127,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,72,18,36,18,0,18,127,108,36,0,0,0,0,0,0,0,0,0,18,18,0,90,0,108,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,63,31,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,63,111,95,47,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,9,29,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,25,127,65,25,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,7,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0\n0,42,84,42,42,127,42,0,42,0,42,0,42,0,0,42,0,42,0,0,0,0,127,0,42,42,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,31,31,63,127,111,127,0,15,0,15,15,0,31,0,0,0,31,47,0,0,0\n127,63,63,0,63,0,0,0,0,63,0,0,63,0,0,0,0,63,0,0,63,0,63,63,0,63,63,0,0,0,0,0,63,63,63,0,0\n0,0,0,0,0,0,0,0,0,63,63,63,63,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,127,0,0,127,0,127,0,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,127,127,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,31,0,0,0,127,95,95,95,63,0,63,31,63,0,63,63,31,63,31,63,0,95,95,63,95,63,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,95,63,127,0,63,0,0,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,42,0,42,0,127,0,0,84,127,42,42,84,127,0,42,42,0,0,0,0,0\n63,21,21,42,21,0,127,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,0,0,21,105\n0,0,0,0,0,0,0,0,0,2,4,12,19,42,49,75,86,95,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,127,84,84,70,42,28,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,1,0,1,0,2,15,24,62,109,127\n0,0,0,0,0,0,0,0,0,0,0,31,31,127,63,63,0,31,127\n0,0,0,0,0,0,5,1,1,3,10,14,21,40,36,44,83,123,127\n0,0,11,0,0,0,5,16,0,0,0,0,5,0,5,11,0,5,55,66,71,127,60,127,93,49,16,5,5,16,0,0,5,0,0,0,0\n0,0,0,0,0,0,25,0,25,50,76,127,50,101,127,50,0,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,5,5,5,17,51,121,127,127,40,5,86,69,34\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,39,127,87,107,68,39,9,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,36,72,18,72,72,36,36,72,36,72,54,127,90,54,72,72,90,90,90,18,0,0,0,0,0,0,0,0,0\n0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,72,18,127,36,18,18,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,63,0,63,0,127,63,127,0,0,63,127,63,63,127,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,127,105,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,63,127,82,22,37,26,18,7,14,0,3,3,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,18,36,18,127,90,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,3,0,0,3,0,12,21,45,69,87,102,127,42,27,9,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,3,24,27,18,66\n0,0,0,0,0,0,0,0,0,63,63,0,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31,0,0,0,0,0,0,0\n0,0,0,0,0,0,50,25,0,0,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,42,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,63,127,50,19,25,38,19,12,6,12\n0,63,0,31,0,0,0,63,0,31,31,31,31,63,31,127,95,63,0\n71,39,43,23,15,27,27,31,43,51,39,75,63,79,127,103,63,95,79\n63,31,0,31,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,95,127,127,0,63,0,95,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,38,25,127,12,12,38,0,0,0,0\n0,0,0,0,0,0,25,25,0,76,25,25,101,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,101,127,101\n25,50,127,127,50,76,76,25,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76\n63,31,63,127,0,0,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,127\n50,50,127,76,50,25,25,0,0,0,0,50,0,25,0,25,25,0,0,0,50,0,0,0,0,0,0,0,0,25,25,0,101,25,50,25\n76,50,25,101,76,127,50,50,25,101,0,25,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0\n0,63,63,21,0,0,0,0,0,0,0,42,21,0,0,0,21,42,21,0,21,42,84,63,21,21,42,21,42,42,21,127,21,21,42,0,0\n23,127,34,34,23,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,11,11,0,0,0,0,0,34,57,23\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,31,127,31,0,95,0,0,31,0,0,0,0,0,0,0,0,0,0\n0,25,38,25,12,0,0,12,0,12,0,25,25,38,63,127,63,38,25\n127,63,0,7,0,0,0,7,0,0,23,23,71,95,111,39,39,55,63\n0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,84,0,0,42,127,42,42,0,0,0,0,0,0,0\n28,42,28,84,42,28,42,28,28,0,14,0,14,0,28,14,14,14,28,14,42,127,14,70,56,14,42,0,14,42,42,14,14,14,42,0,0\n0,0,42,0,127,42,0,0,0,0,0,42,0,0,0,0,0,0,0,42,42,0,42,0,42,0,0,0,0,0,84,0,0,42,0,0,0\n42,42,63,21,21,42,42,21,0,0,21,21,21,42,42,0,21,21,0,21,84,105,21,42,21,127,21,63,21,0,63,63,0,0,21,42,0\n0,0,0,101,25,0,0,0,0,0,0,0,0,127,50,0,50,0,0\n0,31,0,31,0,0,31,0,0,31,0,0,0,0,0,31,0,31,0,0,31,0,0,63,0,0,0,0,0,0,0,31,63,0,31,31,127\n121,93,71,22,33,49,38,33,27,22,22,0,11,11,16,5,44,22,27,82,66,115,110,104,121,127,93,77,99,88,44,38,5,16,38,16,44\n127,105,63,21,0,21,0,0,0,0,0,0,0,0,42,42,21,42,84,21,21,63,105,63,21,42,21,0,0,21,0,0,0,21,0,0,0\n0,31,0,31,0,31,31,0,0,0,95,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,31,127,31,63,31,0,0,31,0,0,127\n127,66,31,51,25,5,14,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n107,127,95,51,29,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,0,42,42,77,91,127,98,112,21,7,42,28,56,84,14\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,127,0,42,84,84,84,84,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,3,13,27,45,64,107,127,118,118,118,125,99,69,64,78,114\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,23,0,34,23,46,75,109,127,109,109,121,121,115\n0,0,0,0,25,25,25,0,0,0,0,0,25,0,0,25,0,0,0,0,50,25,127,50,50,50,76,0,0,0,25,25,0,0,0,0,0\n16,0,8,0,0,0,0,16,8,0,0,8,0,8,0,8,0,0,50,67,127,59,16,0,0,16,0,8,8,8,0,8,8,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,101,25,25,0,101,76,101,127,0\n127,0,0,31,0,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,15,0,0,31,0,0,0,0,0,0,0,0,0\n42,63,42,52,52,31,21,31,31,10,10,0,0,0,21,0,10,0,21,10,63,10,31,21,42,127,95,21,42,42,21,0,31,10,10,31,0\n127,127,111,0,0,15,15,0,15,0,0,0,0,0,0,0,15,31,0,15,47,15,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,95,31,0,63,127,63,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,0,0,23,15,31,31,79,103,119,127,95,87,63,15,0\n63,31,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,31,31,63,31,127,63,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,63,127,42,21,0,21,0,63,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,63,63,63,21,21,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,27,99,127,72,36,9,0,0,0,9,0,9,27,18,0,9,18,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,56,42,14,14,28,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,27,27,54,9,18,18,18,27,9,0,0,0,0,0,0,18,18,18,54,81,127,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,12,0,0,0,12,25,12,0,12,38,0,0,0,25,50,63,114,127,101,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,31,0,31,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,84,127,127,0,42,0,42,0,0,0,0,84,42,84,127,84,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,76,25,76,0,0,25,0,0,0,0,25,0,50,76,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,21,21,63,105,127,84,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,50,0,25,0,0,25,0,0,25,25,25,50,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,127,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,14,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,15,47,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,50,76,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,11,46,80,80,127,69,46,11,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,23,80,57,46,80,92,92,69,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,11,57,115,115,103,11,11,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,7,39,103,55,15,31,55,31,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,15,31,47,47,55,111,23,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,31,39,79,127,63,7,7,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,127,36,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,56,42,42,84,14,0,14,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,95,111,95,127,95,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,105,84,42,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,127,95,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,70,56,98,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,70,14,28,14,28,14,0,14,28,14,14,0,0,0,0,0,0,0,0,14,127,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,127,31,42,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,52,21,10,10,0,0,0,0,0,84,21,10,10,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,127,18,36,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,21,31,63,31,10,0,0,0,0,0,0,0,0,0,0,0,0,10,21,10,52,52,42,127,42,10,10,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,7,87,0,0,0,23,39,7,0,0,0,0,0,0,0,0,0,0,0,23,23,47,79,127,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,3,8,71,119,35,14,7,1,3,3,0,0,0,1,3,3,0,0,1,0,12,12,23,67,127,96,28,7,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,2,13,109,64,18,7,2,0,0,0,0,0,0,5,1,0,0,0,0,0,0,11,13,55,127,72,16,9,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,127,63,31,0,0,0,0,0,63,0,0,0,0,0,0,31,0,0,0,95,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,0,0,0,0,0,0,127,31,31,0,0,63,0,31,0,63,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,42,56,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,56,127,127,14,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,50,25,50,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,127,50,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,117,19,9,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,81,127,72,9,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,13,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,100,113,127,40,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,25,127,76,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,25,50,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,97,81,64,47,28,33,27,37,17,20,7,6,9,11,6,3,5,1\n95,79,95,63,31,15,127,47,47,79,31,31,15,31,0,31,0,0,63\n127,63,67,33,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,16,16,46,38,29,8,8,25,8,8,12,12,12,0\n84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,127,42,42,42,0,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,15,0,0,15,15,0,79,31,47,127,31,31,63\n127,90,86,97,73,104,108,82,84,57,59,55,22,25,27,15,28,33,38\n122,127,83,30,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,17,13,39,39,26,61,52,48,43,21,13,43,4,4,0,35\n0,0,0,0,0,0,0,25,127,76,76,50,0,0,0,0,0,25,50\n127,58,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,0,0,0,0,0,0,0,0,0,0,10,42,10,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,31,0,0,63,63,63,0,0,0,31,31,0,0\n28,17,34,11,0,0,11,5,0,5,5,0,5,0,0,0,0,0,0,0,0,0,0,5,5,5,5,28,11,57,63,109,80,127,75,51\n19,25,31,0,12,0,6,6,0,0,0,0,0,0,0,0,6,0,0,0,6,0,0,6,12,12,6,6,44,44,82,101,82,127,57,95\n0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,127,0,0,0,0,0,0,0,0,63,63,63,127,63,0,0,127,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,0,42,0,28,56,28,56,0,28,70,42,84,112,84,127,70,42,42,0,14\n18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,90,18,0,18,18,54,18,54,18,18,36,90,36,54,72,72,127,90,0,18,72,72\n25,0,0,0,25,0,127,50,0,0,0,0,0,0,0,25,25,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,42,127,42,84,84,0,84,127,42,0,0,0,0,42,0,0,84,0,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n65,66,127,73,53,70,39,15,22,8,6,5,6,6,12,8,5,3,12,6,13,15,12,30,34,51,32,41,65,53,66,53,29,46,60,53\n114,99,114,52,44,54,34,39,19,24,17,4,7,2,12,7,4,12,19,12,22,49,42,64,127,102,69,69,87,79,49,82,62,94,79,94\n36,36,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,108,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0\n28,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,127,70,14,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,42\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,0,42,42,42,0,0,84,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,63,127,127,63,127,63,63,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,63,31,0,63,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,36,36,36,36,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,21,21,21,0,52,21,52,84,31,42,116,21,42,0,0,0,10,10,21,21,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,74\n115,69,34,11,34,23,23,69,80,57,34,127,11,11,0,0,0,11,23,23,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,80\n42,0,21,0,0,0,21,21,0,42,21,42,21,0,0,0,21,21,21,21,0,0,0,0,0,0,0,21,21,63,63,105,127,105,63,42\n31,47,15,47,0,0,15,0,0,47,47,15,31,0,0,31,0,15,15,15,0,0,0,0,0,0,0,0,0,47,127,111,47,15,63,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,11,57,127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5,22,127,82,66,93,66,82,16,27,11,11,0,22,0,0,38,5\n0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,15,127,76,66,101,50,81,25,10,5,10,0,20,0,0,30,10\n127,25,88,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,63,25,0,25,25,12,12,0,0,0,0,0\n0,0,0,0,0,50,127,50,0,0,0,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,76,127,50,0,0,0,0,0,0,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,127,95,0,31,0,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,127,0,63,127,0,63,0,0,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,0,0,50,25,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0\n42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,63,0,0,0,0,0,0,0,0,31,63,0,31,31,31,0,31,0,0,0\n0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,17,21,33,64,36,18,6,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,8,39,52,127\n0,0,0,0,0,0,18,0,0,36,0,0,0,18,18,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,72\n0,0,0,0,0,0,0,0,0,112,127,0,28,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,14\n0,0,0,0,0,0,33,30,30,33,73,127,23,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,16,60,113\n0,0,0,0,0,0,0,0,0,0,63,0,21,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,42,127\n0,0,0,0,0,0,0,0,0,54,0,54,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,0,15,127,15,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,112,28,56,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,18,27,90,18,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,108,54,45,9,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,95,95,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,47,111,127,63,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,0,0,0,0,21,0,0,0,0,0\n0,0,0,0,0,0,0,14,14,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,28,84,127,70,28,0,0,42,0,70,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,15,0,7,7,0,0,0,47,127,95,71,7,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,54,127,90,72,54,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,95,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,127,0,0,0,0,0,0,0,0,0,0\n0,0,42,42,0,0,0,0,0,0,42,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,127,47,15,47,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,127,72,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,8,67,50,118,127,93,33,59,0,8,0,8,0,0,0,0,0,8,0,0,0,8,8,76,50,25,16,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,78,96,102,127,78,18,24,30,12,12,6,6,0,0,6,6,0,12,12,12,6,0,36,0,18,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,0,0,0,0,0,0,5,0,5,0,0,0,0,0,0,5,15,30,50,111,127,10,20,10,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,95,31,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,127,28,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,28,17,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,127,111,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,36,127,108,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,31,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,84,63,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,105,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,127,127,63,95,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,23,46,0,0,0,0,11,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,103,127,34,11,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,84,42,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,6,0,0,24,42,78,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,18,12,36,24,12,0,0,0,6,0,0,0,0\n0,0,0,0,0,5,11,5,0,17,63,115,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,40,40,5,0,5,11,5,5,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,31,63,63,0,0,127,127,95,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,14,14,28,0,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,56,70,14,28,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,21,21,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,127,105,42,127,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,127,84,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,47,127,47,31,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,101,127,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,28,56,127,119,77,21,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,10,31,127,116,31,0,0,10,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,25,127,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,50,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,76,50,25,25,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,18,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,36,18,0,0,0,18,0,0,0,0,18,0,0,0,0,0,0,0,0,36,0,36,18,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,0,63,0,0,0,0,0\n0,0,0,0,0,0,0,0,84,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,15,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,36,36,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,108,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0,36,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,21,0,0,0,21,0,0,0,0,21,0,21,0,0,0,0,0,21,0,0,0,0,0,63,0,0,21,0,21,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,7,0,14,44,59,127,29,52,14,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,29,52,119\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,13,30,55,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,42,21,105,21,127\n0,0,0,0,0,0,0,0,31,127,31,63,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\n0,0,0,0,0,0,0,0,0,8,8,127,127,101,33,42,33,8,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,0\n0,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,63,127,95\n127,42,42,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,42,0,84,84,127,84,0,42,105,0,42,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0\n0,0,0,0,0,25,25,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,101,0,0,0,0,127,101,25,0,0,25,0,0\n0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,127,101,25,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,25,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,28,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,42,42,0,0,0,0,0,127,42,84,127,42,0,84,0,0,42,0,0,0,0,42,42,0,127,42,42,84,0,84,0,0\n0,0,0,0,0,25,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,0,25,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,63,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,127,50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,50,25,0,0,0,25,0,0,0,0,0,0,0,0\n95,31,31,31,63,63,127,47,15,31,15,31,63,31,31,79,111,95,127\n71,87,61,68,74,58,61,52,104,127,71,78,113,61,26,39,32,35,52\n0,63,63,0,0,0,0,0,63,0,63,0,63,0,0,0,0,0,63,0,0,63,127,0,63,0,0,0,127,0,0,63,0,0,63,0\n0,42,42,0,42,0,42,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,127,0,0,0,0,0,0,0\n40,26,26,26,40,0,0,0,0,6,6,0,6,13,33,20,26,13,26,26,6,33,53,46,33,40,46,13,26,33,46,33,86,100,127,73\n74,22,14,0,7,14,0,0,0,0,7,14,7,29,7,14,14,14,29,14,7,59,59,37,67,29,67,37,59,7,82,59,59,104,127,112\n0,0,0,0,0,7,2,18,23,68,47,87,108,63,50,47,66,50,60,5,5,0,5,0,0,0,0,5,0,10,0,10,2,26,95,92,127\n0,0,0,0,0,0,0,0,0,0,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,117,90,9,63,9,18,9,27,0,18,9,0,0,9,0,0,9,0\n84,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,42,0,0,42,0,42,127,0,42,42,0\n74,52,97,87,119,127,83,75,70,62,49,39,49,35,29,26,26,22,11\n9,29,34,4,0,0,0,0,4,4,4,0,0,0,0,0,0,4,0,0,9,34,39,39,68,19,78,92,127,43,39,43,29,24,24,9,0\n101,50,0,25,25,127,25,0,0,50,127,25,25,25,25,50,25,25,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127,55\n89,99,75,102,41,44,30,13,10,24,6,44,20,13,6,6,6,10,3,3,13,6,0,13,6,13,20,30,37,51,58,72,82,92,102,127\n108,87,116,61,54,39,50,43,18,25,14,21,7,3,10,18,18,0,0,7,7,7,3,7,18,7,29,32,65,65,72,79,76,112,101,127\n0,50,127,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\n127,31,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,95,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31\n63,31,63,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,95,31,127,63,0\n42,127,42,84,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,0,42,42,42,42,84,127\n0,63,0,127,127,63,0,0,0,31,31,0,0,31,0,31,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0\n63,0,95,127,63,31,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,127,31,0,0,31,0,95,63,63,63,31,0,95,31,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,42,21,63,21,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,127\n0,0,0,0,0,0,0,0,18,0,9,0,0,18,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,9,27,18,54,45,108,127\n0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,42,42,0,21,42,0,127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42,127,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,21,127,63,42,42,0,0,0,0,0,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,111,15,47,63,15,15,15,15,63,127,127,47,95,63,0,31,0,0\n50,76,76,76,25,25,0,25,127,25,0,0,0,0,0,25,25,25,101\n127,72,54,17,18,8,17,22,34,61,106,54,82,46,32,17,6,15,27\n57,57,57,46,69,34,23,46,11,11,11,11,23,11,23,0,0,23,0,11,0,11,0,46,46,57,127,46,23,46,0,23,0,11,34,57\n101,63,63,38,25,25,25,12,25,0,0,25,25,0,0,25,0,0,0,38,0,0,38,25,50,88,127,114,25,0,0,12,12,0,50,76\n23,23,23,34,103,103,57,103,34,34,92,127,103,23,23,11,46,46,69\n127,31,0,0,31,31,0,0,0,63,31,0,31,31,63,31,0,0,0\n84,42,0,0,42,42,0,42,0,0,84,42,127,42,42,0,84,0,42,0,42,0,0,42,0,0,42,42,42,0,0,42,0,42,0,84,84\n127,74,0,0,0,0,0,21,10,0,10,0,0,0,10,0,0,10,10,0,0,10,31,0,42,52,10,10,10,0,10,21,0,0,0,0,21\n0,0,0,0,0,0,0,63,0,0,63,0,127,0,0,0,0,0,63,0,0,0,0,63,0,63,0,63,63,0,0,0,0,0,127,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,11,0,46,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,23,46,23,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,57,23,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,31,52,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,74,127,105,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,10,42,84,74,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,95,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,127,42,10,0,0,0,0,0,0,0,0,0\n0,0,0,0,50,0,25,50,127,25,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0\n25,0,0,0,25,101,50,127,25,25,0,0,50,0,0,0,25,0,0,76,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,25,25,25,12,63,25,50,25,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,42,0,21,127,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,127,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,104,73,42,63,33,19,7,9,1,3,1,3,1,0,0,0,1,3,3,6,4,4,4,7,15,20,15,33,22,9,22,14,7,19,20,9\n84,127,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,84,42,0,42,0\n0,50,50,76,25,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,76,0,50,101,127,0,50,0,25,50,25,50,0,0,0\n89,127,97,29,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,14,22,14,14,14,22,52,0,67,7,14,29,7,29,22,0,22,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,14,14,22,59,82,37,104\n42,42,21,63,21,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,21,42,0,21,0,0,42,0,21,0,21,42,21,0,42,21,0,21,63,0,21,0,0,21,0,0,0,0,21,21,0,0,0,0,0,0,0,0,21,21,0,0,0,0,21,21,0,42,0,127,84,21\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,0,0,0,84,84,0,0,0,0,0,0,42,0,0,84,42,0,0,0\n63,15,15,31,15,15,0,0,0,0,0,0,0,15,31,0,15,0,0,0,0,31,15,15,0,0,0,31,0,31,0,95,15,15,0,47,15,0,0,0,0,15,0,0,0,0,0,15,0,0,31,0,31,0,15,0,0,0,0,0,0,15,0,0,0,15,15,15,111,95,95,127\n50,25,25,25,50,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,76,127,50,25,0,25,0,25,0,0,0,0,0,25,0,0,0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,101,127,101,76,25\n0,63,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,0,0,0,63,127,31,0,0,31,31,0,0,0,31,31,0,0,0,0,0,0,0,63,0,0,0,31,0,0,0,31,0\n63,0,0,0,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0,0,0,0,0,0,63,0,0,63,0,63,0,0,127,127,0,63,63,0,0,0,63,0,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,84,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,127,63,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,84,84,127,0,42,0,0,0,42,84,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,127,84\n63,127,79,0,0,15,0,0,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,79,31\n0,0,0,0,1,2,3,2,2,14,25,28,45,64,78,100,112,119,127\n0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,0,29,82,52,127,74,7,7,7,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n71,71,101,35,86,66,86,81,35,91,60,71,66,101,127,66,60,86,71\n127,42,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,42,0,31,0,0,0,0,0,0,0,0,0\n0,6,0,0,0,0,0,6,0,40,20,73,127,106,46,20,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,26,53,80\n93,120,86,80,60,127,106,46,86,33,40,13,13,13,13,0,13,26,53\n127,79,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,47,15,0,63,15,31,15,0,0\n127,84,21,21,21,0,0,0,0,0,0,0,0,0,42,0,0,21,42\n72,127,18,36,18,0,18,0,0,0,0,18,0,18,0,0,90,18,0,36,0,0,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0\n127,95,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,127,0,84,0,0,0,0,0,0,42,42,127,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,21,0,0,42,0,0,42,84,63,42,42,0,21,0,0,0,0,21,0,0,0,21,0,21,42,21,21,63,127\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,50,50,0,25,0,25,25,50,127,25,0,0,0,0,0,0,0\n63,95,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,63,127,31,95,63,0,0,0,0,0,0,0,0,0,0\n57,31,37,48,57,50,83,55,51,56,54,39,61,62,59,52,86,102,127\n72,42,12,6,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,4,8,11,27,127,83,71,9,6,7,3,1,2,3,2,2,2,0\n36,0,0,36,18,36,127,54,54,0,0,18,0,54,18,0,18,18,0\n127,0,63,127,63,63,63,63,63,127,0,63,0,63,63,127,0,63,0,0,0,63,127,0,0,0,0,63,63,127,63,63,0,63,63,63\n0,42,84,42,42,84,42,127,42,84,0,42,0,84,0,84,0,42,0,42,0,0,0,0,0,0,0,84,84,42,0,0,0,0,42,0\n0,14,7,0,0,7,0,59,59,59,127,14,14,22,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,7,29,29,37,37,22,29,0\n0,0,0,31,0,0,31,31,0,63,0,0,0,0,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,25,0,0,0,76,50,127,76,25,0,25,0\n84,84,127,31,31,42,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,21,0,0,0,42,127,21,0,84,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,84,42,0,0,0,0,0,0,0,0\n97,39,58,68,68,48,107,127,107,58,48,68,39,39,39,78,19,39,39\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,84\n0,0,50,76,25,50,25,50,0,0,0,127,76,25,0,0,0,0,0\n0,0,0,10,0,21,0,84,127,74,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n50,50,25,50,25,0,0,127,76,25,0,25,25,50,76,0,0,25,50\n0,31,31,95,0,95,127,63,0,31,0,31,0,31,63,31,95,63,0\n0,9,0,0,0,9,0,0,0,0,0,0,0,9,0,18,18,54,127\n0,95,31,0,63,31,0,31,0,0,0,0,0,31,31,0,63,0,0,0,31,0,63,63,0,63,127,0,95,31,0,31,63,63,0,0,63\n0,127,63,31,95,31,0,0,31,0,31,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,31,31,31,95,127,31,31,63,63\n0,0,0,84,84,0,127,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,27,81,108,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,108,90,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,84,84,84,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,18,18,0,36,0,18,36,0,18,54,18,54,72,127,36,54,72,72\n7,3,0,0,0,0,0,0,0,0,0,0,1,0,1,5,50,92,127\n0,25,0,50,0,0,0,25,50,25,101,76,50,127,50,50,101,50,50\n0,0,25,0,0,0,25,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,25,25,25,25,0,0,0,0,0,0,0,0,0,0,50\n84,84,84,42,84,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,63,42,84,127,127,63,63,21,21,21,0,0,21,0,0,0\n0,0,0,0,0,0,0,0,0,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,50,76,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,0,0,0,0,25,25,127,127,25,0,0,25,0,0,0,0,0,0,0\n127,12,0,0,25,63,12,12,0,0,0,0,0,12,0,0,12,12,12,12,0,0,12,38,50,50,50,25,0,0,25,0,0,0,0,0,25\n0,0,0,0,0,0,0,0,0,0,0,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,42,0,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,42,0,42,42,0,127,0,84,42,0,84,0,0,42,42,0,0,0\n0,0,0,0,63,0,63,0,0,63,0,63,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0,63,0,0,63,0,0,63,0,0,0,0,0,0,63,0,0,0,127,0,0,0,63,0,0,127,63,127,0,0,0,0,0,127,63,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,26,79,127\n0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25\n127,0,0,21,0,42,0,0,21,0,21,0,21,0,0,0,21,42,0\n13,0,20,13,0,0,0,6,20,46,66,26,73,86,53,60,86,127,80\n36,0,36,0,18,54,54,18,0,18,90,54,36,18,54,0,18,0,36,72,18,18,72,72,72,127,54,0,0,54,36,0,0,0,0,0\n21,42,21,0,21,42,0,42,21,42,42,42,42,21,63,21,21,21,63,0,0,84,84,105,42,127,63,21,21,0,21,21,63,21,21,21\n63,31,127,0,0,95,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,127,127,0,63,127,0,0,0,63,0,63,63,127,0,0,127,0\n50,127,0,0,0,0,50,0,0,25,0,76,76,76,127,76,101,0,101\n0,0,0,0,0,0,63,0,0,0,0,0,0,127,0,0,31,31,63,0,95,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0\n0,127,42,42,42,42,127,84,42,0,0,0,0,0,0,84,0,0,84\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127\n0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,84,42,0,127,0,0,0,0,0,0,42,0\n0,36,36,36,18,0,0,18,18,54,18,127,0,18,0,0,0,0,36\n0,127,25,0,0,25,25,0,0,50,25,0,0,0,0,25,0,0,25,76,0,25,0,25,25,76,25,0,25,0,50,25,0,0,0,0,0\n0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,63,63,63,63,0,0,127,63,0,0,0,0,0,127,0\n0,42,0,84,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,42,0,0,0,0,127,0,42,0,0,0,0,42,42,0,0,0\n108,127,0,54,9,9,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,127,63,84,84,63,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,127,84,63,74,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,47,111,127,63\n127,63,105,84,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,127,42,8,8,8,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,81,60,27,10,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,7,23,57,86,127\n0,42,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,0,42,0,42,0,0,0,42,0,0,0,0,42,0,0,0\n18,0,9,0,0,0,9,0,9,13,0,31,18,36,36,77,31,40,36,18,27,40,27,63,127,90,81,27,18,13,31,9,4,0,0,0,9\n0,0,0,0,0,0,0,0,0,0,25,0,50,25,25,50,127,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,42,0,0,0,42,127,42,0,84,42,127,42,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,84\n0,50,0,0,101,50,50,0,50,76,25,25,50,0,50,50,0,25,25,25,25,50,25,25,76,127,76,25,0,76,50,50,25,50,25,0,0\n0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,42,21,21,63,84,105,127,42,0,63,42,42,0,42,0,0,0,0,0,0,0,0\n0,0,50,0,25,0,25,127,0,0,0,0,25,0,0,0,0,0,0,0,0,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,9,9,0,18,0,0,0,9,27,99,45,127,117,36,18,0\n0,0,15,0,15,0,15,0,15,15,47,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,114,50,127\n0,0,0,0,0,0,0,0,9,9,48,48,127,48,107,39,39,48,0,0,0,0,0,9,19,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,50,127,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,21,21,42,84,127,63,63,0,21,0,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,0,0,127,0,42,63,42,21,21,42,0,0,21,0,0,21,21,21,0,0,0,0,0,0,0,0,0\n25,127,50,25,76,0,25,0,50,25,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,0,25,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0\n31,0,127,95,0,31,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,31,0,0,0,63,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,31\n127,68,37,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,127,84,42,0,0,0,0,0,0\n3,0,5,3,0,0,6,4,1,0,0,0,1,0,0,0,0,0,0,0,0,1,4,3,6,2,17,50,65,97,127,93,59,30,19,12,9\n0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,42,0,127,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,4,0,0,4,9,9,9,29,48,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,127,127,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,88,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,31,127,95,127,0,95,63,0,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,25,50,25,25,50,0,127,50,25,25,0,0,25,0\n0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,127,0,0,0,63,0,0,0,63,63,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,63,63,0,63,63,127,0,63,0,0,0,127,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,127,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,127,56,28,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,63,0,0,127,0,127,63,0,63,0,63,0,0,0,63,127,127\n0,31,31,95,0,127,31,31,0,0,0,95,63,31,0,0,0,95,127\n63,47,31,31,0,0,0,0,31,15,0,0,0,15,0,0,0,0,47,0,31,63,15,63,127,127,0,15,31,0,0,0,0,0,0,0,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,63,105,127,21,42,21,0,0,0,42,42\n63,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,127,95,31,0,31,0,31,0,0,0,0,0,31,63\n31,63,47,15,15,15,31,31,0,15,79,31,0,0,0,31,15,47,15,15,15,0,47,47,31,95,31,47,0,15,63,31,15,0,15,127,127\n101,76,76,76,50,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,50,76,25,76,50,50,127,76,0,0,0,0,25,0,0,0\n0,0,0,0,0,0,0,0,0,12,24,72,72,84,42,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,60,127,60,24,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,30,42,120,90,30,6,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,19,97,78,87,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,48,68,39,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,48,48,127,29,0,9,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,127,101,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,42,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,127,88,88,25,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,72,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,108,18,90,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,31,63,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,31,31,31,31,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,84,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,127,42,0,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,18,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,18,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,5,11,16,5,27,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,127,44,38,11,0,0,5,0,0,11,0\n0,0,0,0,0,0,0,7,0,23,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,127,111,0,0,7,0,7,0,0,0,0\n124,98,127,116,77,85,69,54,51,57,54,46,46,20,25,15,7,5,25\n112,84,56,127,56,42,0,0,0,0,0,0,0,0,0,0,0,14,14,28,0,14,14,0,70,84,28,98,0,14,28,0,14,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,56,42,42,56,84,127,84,84,56\n103,93,88,85,62,88,64,62,72,127,114,77,90,64,72,28,49,44,31\n0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,25,0,101,0,101,0,0,0,0,0,0\n127,103,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0,0,18,0,54,127,54,18,36,18\n15,0,15,15,15,0,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,15,15,127,31,63,111,31,0,15\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,63,127,95,31,95,0,63,31,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,84,42,127,127,0,84,0,0,0\n38,76,127,63,88,50,25,50,50,12,63,50,38,38,50,50,12,25,63,38,12,76,63,25,63,38,38,76,38,63,88,50,38,38,38,38\n45,127,9,72,54,27,36,18,18,45,45,45,81,45,36,18,9,36,18,9,36,0,18,27,54,54,27,36,36,81,36,9,72,45,36,36\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,11,22,63,70,127,63,56,14,22,3,7,11,11,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,6,27,48,65,127,68,41,27,6,3,13,10,3,0,0\n0,63,31,95,63,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,63,0,0,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,3,3,43,127,91,75,79,3,11,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,3,3,15,63,87\n0,0,0,0,0,0,15,0,0,0,0,15,63,127,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,0\n0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,0,0,42,0,42,127,0,42,84,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,14,14,28,127,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,112,0,14,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,63,63,63,63,0,63,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,84,42,84,84,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,127,0,34,11,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,33,127,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,25,127,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,42,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,127,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,42,0,0,127,127,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0\n63,0,31,0,0,0,0,0,0,63,31,127,63,31,63,0,0,0,0,0,0,0,0,63,63,31,0,0,31,0,0,0,0,31,31,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,127,52,52,0\n0,0,0,0,0,0,0,0,0,0,0,21,21,127,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,31,31,31,31,0,0,0,0,0,31,0,63,31,31,0,31,0,31,0,0,0,31,63,63,63,31,0,0,31,0,0,31,31,63,127,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,127,0,63,63,127,127,127,127\n54,18,0,0,9,9,0,0,36,45,81,72,54,36,45,0,36,45,9,9,0,0,18,0,0,9,0,0,0,0,9,0,0,0,36,18,127\n127,21,42,21,84,21,21,0,0,0,21,21,21,0,0,21,0,21,0,21,63,42,42,21,63,63,63,21,21,42,0,21,0,21,42,0,0\n0,0,0,0,12,0,0,25,0,0,0,38,50,63,0,38,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,50,0,38,12,127\n0,0,31,95,127,63,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,0,15,63,127,47,47,79,79,31\n3,6,5,6,6,15,18,27,45,57,62,66,56,80,127,120,57,29,10,6,1,0,0,0,0,0,0,0,0,0,0,3,2,0,2,4,0\n0,0,0,33,5,5,0,5,0,16,71,127,71,44,77,33,49,66,5,11,0,5,0,0,0,11,11,5,0,5,0,0,5,0,0,0,0\n0,0,0,0,0,0,2,1,5,4,12,9,3,1,1,5,0,0,1,1,0,0,0,0,1,2,4,5,2,6,7,24,70,105,127,63,30\n0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,0,127,76,0,0,0,0,0,0,0,25,0,0,0,0\n0,0,0,0,0,0,31,95,31,63,95,31,63,0,31,0,63,31,0,31,0,0,0,0,0,0,0,31,0,0,0,0,0,31,31,31,127\n127,0,15,63,15,0,63,15,0,0,31,15,31,47,0,31,63,15,0\n115,34,11,23,0,0,23,23,11,0,34,0,11,0,0,0,23,11,11,11,0,23,46,57,127,34,23,11,34,0,23,34,11,11,0,11,0\n127,31,63,95,63,31,0,0,0,0,127,63,63,95,31,0,0,0,0\n0,0,0,0,0,0,0,19,63,25,38,63,127,12,44,19,6,6,0,0,0,0,0,0,0,0,0,0,0,0,6,0,38,31,44,76,38\n65,45,36,8,45,36,24,16,24,32,61,86,127,127,36,40,16,12,24\n0,0,0,0,0,0,0,0,0,0,0,72,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,127,42,84,42,42,0\n50,25,25,63,38,12,76,25,12,127,38,50,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,63,0,0,31,63,31,127,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,63,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,127,0,0,63,0,63,0,0,0,0,0,0,63,63,127\n0,0,0,0,42,0,42,42,0,0,0,42,0,0,0,0,42,0,127,42,42,0,0,0,0,42,42,0,0,42,42,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n25,25,0,0,0,0,0,0,0,0,0,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0\n0,0,63,63,63,63,0,0,0,0,63,63,0,0,63,127,63,127,0\n11,3,11,3,11,20,43,127,119,100,81,62,37,22,3,0,1,0,3\n0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,11,103,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,12,114,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n76,38,50,25,0,12,0,25,38,50,38,88,127,38,25,25,0,0,76\n0,0,0,0,0,0,0,0,0,63,0,31,127,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,63,63\n0,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,95,95,0,63,0,31,0,0,0,0,0,0,63\n0,63,0,0,63,63,0,0,63,0,0,0,63,63,63,0,127,63,127,0,63,0,0,0,0,0,63,63,63,127,63,63,63,0,63,63,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,31,63,0,0,31,95,95,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\n0,63,0,42,42,127,21,0,21,0,21,21,21,0,0,0,84,42,0,0,21,0,0,42,21,0,0,21,0,84,21,21,0,21,0,0\n127,31,31,63,0,47,15,15,0,15,15,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,15,31,31,0,31,15,31,15\n0,0,42,84,127,42,84,0,84,0,42,0,0,0,0,0,0,0,42,0,0,42,0,0,42,0,84,0,42,42,42,42,0,42,84,0\n63,0,31,95,31,127,63,0,31,63,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,0,0,0,31\n0,63,0,0,0,0,63,63,127,0,63,127,127,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,63,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,25,25,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,50,50,127,0,25,0,0,0,0,0,0,0\n0,0,0,31,0,31,0,31,31,31,0,0,0,31,0,0,0,0,0,0,31,0,0,0,0,0,31,63,0,127,0,0,31,0,31,0,0\n0,42,42,0,0,42,127,0,127,84,42,42,0,42,0,42,0,84,0,0,0,42,0,42,0,0,0,42,42,42,42,84,127,42,0,42,0\n44,22,52,59,44,14,22,37,67,82,37,52,0,29,29,127,44,29,29\n0,0,0,31,0,31,31,31,63,0,0,0,63,0,31,0,63,0,0,63,0,0,0,0,0,0,0,0,31,31,0,127,95,31,31,63,0\n0,5,0,5,0,0,5,0,2,0,2,28,63,25,11,2,5,5,5,0,0,0,0,2,0,5,5,0,0,5,2,5,5,5,14,28,127\n0,0,0,0,0,0,63,31,63,31,0,31,0,0,0,0,95,127,0\n0,25,50,0,0,76,50,0,0,25,25,0,0,0,0,0,0,127,76,0,0,0,76,0,0,25,25,0,0,25,50,50,25,0,25,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,21,0,0\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,63,127,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,63,127,0,63,127,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,63,0,0,127,127,63,63,63,0,0,0,63,0,63,0,0,127,0,0,63,63,0,0,63,0,0,63,63,0,0,63,0,0\n0,0,0,0,0,0,29,0,22,127,14,0,0,0,7,52,74,7,14,0,0,0,0,0,0,0,0,0,0,0,0,22,52,44,7,0,0\n0,0,0,0,0,0,25,0,50,25,0,0,127,0,0,0,0,50,25,0,25,0,0,0,25,0,0,25,0,0,25,50,0,0,25,127,0\n0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,63,0,63,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0\n0,0,0,0,0,15,31,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0\n0,0,0,0,0,54,18,0,0,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,63,0,63,63,0,0,0,127,0,0,63,127,127,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,0\n0,0,0,63,63,127,0,0,0,0,0,0,63,0,0,0,0,0,0,63,63,63,0,0,63,0,0,0,127,63,0,0,0,0,0,0,0\n84,0,0,0,0,0,0,42,0,0,0,127,0,84,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,84,0\n0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,0,0,0,18,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,15,0,31,15,15,111,127\n0,47,15,47,0,0,63,63,15,63,127,31,0,15,0,63,47,63,31,15,15,0,31,15,15,0,31,31,0,31,111,47,15,63,15,0,31\n0,25,76,25,50,76,50,127,25,0,0,0,0,0,0,0,0,25,25,25,127,25,76,0,0,25,0,0,50,50,0,76,25,0,0,0,0\n127,21,42,63,127,105,0,63,0,0,21,0,0,0,0,0,0,21,0,84,42,84,42,21,21,42,0,42,0,63,42,0,21,21,0,0,0\n0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,127,127,0,63,0,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,63,127,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,127\n95,47,0,15,0,0,0,0,0,0,0,0,127,31,15,0,0,0,0\n127,63,63,63,31,0,0,127,95,31,127,95,63,31,63,31,31,63,0\n0,0,0,0,0,0,0,0,0,0,127,25,101,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,101\n118,95,88,127,99,118,76,46,48,50,40,35,38,71,38,61,52,55,59\n0,127,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,31,0,127,31,95,0,31,31,0,0,95,63,63\n127,42,84,21,63,84,0,0,42,21,0,21,0,42,42,21,21,0,63,0,21,42,42,21,21,42,0,21,21,42,42,42,42,42,105,42\n90,72,127,0,18,36,18,72,36,0,0,54,18,36,36,0,18,36,36,18,0,0,18,18,18,18,0,36,54,18,0,18,36,36,72,36\n31,63,0,0,0,0,31,0,0,0,0,0,0,0,31,0,0,0,31,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\n0,127,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\n0,0,0,0,0,0,0,0,0,10,10,31,31,31,10,21,0,0,42,0,0,0,0,0,0,0,10,0,0,0,0,0,10,0,10,52,127\n0,0,0,0,0,0,0,0,0,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,0,127,42,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,42,42,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,42,0,42,84,0,0,0,0,0,0,0,0,0\n0,0,0,84,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,0,0,84,42,127\n0,0,0,0,0,0,63,31,0,0,63,127,63,31,0,0,31,31,0\n112,70,112,56,70,14,42,28,42,70,112,70,127,42,42,127,56,56,28\n81,102,120,92,49,24,18,34,29,63,70,106,127,95,47,34,40,81,104\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,34,127,46\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,50,0,0,0,0,0,50,25,101,127,50\n31,31,0,0,0,0,31,0,0,0,31,31,0,63,31,31,0,63,0,0,31,63,0,63,95,63,31,63,63,31,127,0,31,31,0,31\n0,31,31,0,63,0,0,0,0,0,0,31,31,31,31,63,31,0,0,31,31,0,31,63,31,0,0,0,31,127,63,95,0,63,0,0\n72,36,18,54,36,18,0,18,54,54,36,36,18,18,0,18,0,18,0,0,18,54,36,127,72,18,36,18,54,0,18,0,18,108,90,54\n21,42,21,84,42,0,21,0,0,84,21,21,0,63,21,0,42,21,0,21,63,84,84,21,21,63,127,105,105,0,0,0,0,84,63,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,63,31,31,31,31,0,31,0,0,0,0,0,0,31,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,42,42,127,0,127,0,0,0,0,0,0,0,0,42,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,79,127,79,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,63,127,0,0,0,0,0,0,0,0,0,0\n63,0,0,0,31,0,63,31,0,31,63,31,127,95,127,0,31,63,127\n84,84,0,0,84,0,84,0,127,42,42,127,42,127,127,84,84,42,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,18,18,127,18,18,0,0,0,0,0,0\n105,10,21,10,10,10,10,21,10,84,105,52,0,127,74,21,0,21,0\n63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,0,0,0,0,0,0,0,0,0,0,0\n127,27,18,36,36,18,45,45,9,18,0,0,0,0,0,9,0,0,18,27,54,18,0,27,27,18,0,36,36,0,45,9,9,0,0,0,0\n0,63,31,31,31,31,0,31,31,0,0,63,0,0,31,31,0,31,127\n127,54,72,0,18,9,9,9,27,72,45,63,99,36,45,18,18,18,18\n0,63,63,0,63,0,0,63,0,0,0,0,63,63,127,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,63,0,0\n0,42,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,42,0,0\n127,0,0,0,42,0,63,63,0,0,0,0,0,21,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0\n101,25,25,50,101,0,25,25,25,0,0,0,0,0,0,25,50,25,50,25,25,25,127,0,25,101,0,50,25,0,76,0,0,0,0,25,0\n127,49,56,89,54,58,35,25,37,11,23,11,30,28,44,47,44,32,56\n0,0,0,42,0,0,42,127,42,0,0,0,0,42,0,0,0,0,0,0,0,84,0,0,42,0,0,0,42,0,0,42,0,0,0,42\n0,0,63,0,63,63,0,63,0,0,0,63,0,0,0,0,63,0,0,0,63,63,0,0,0,0,0,0,0,0,63,127,63,127,0,0\n127,31,0,63,52,63,0,52,21,52,21,0,21,42,105,0,0,21,0\n0,0,0,0,0,63,63,0,0,0,0,127,63,0,63,0,0,0,0\n0,14,0,0,42,42,0,42,14,0,14,14,42,28,56,14,14,28,28,70,14,0,28,14,0,0,0,14,14,42,14,127,14,14,14,42,0\n0,0,0,0,0,0,0,0,21,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0\n0,0,0,0,0,63,0,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,63,0,63,0,0,0,63,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63\n0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,63,127,0,0,63,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,63,0,0,0,63,0,0,0,0,0,0,63,63,0,0,0,0,0,0,127\n0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,42,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,127,0,0,0,0,0\n0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,63,0,63,0,63,0,63,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0\n0,0,0,0,0,0,84,127,0,0,0,0,42,0,0,0,0,42,0,84,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,84\n0,47,0,0,0,0,0,111,79,63,95,111,47,79,15,79,15,31,47,31,0,15,0,15,0,15,0,0,0,31,79,31,31,95,111,95,127\n63,63,0,31,95,127,31,31,0,31,0,0,31,0,0,0,0,0,95,0,31,63,31,0,63,31,63,0,31,31,0,0,0,0,0,0,0\n50,25,101,25,0,0,76,0,50,76,101,76,50,76,25,25,0,101,50,0,25,76,0,50,0,25,50,127,0,101,25,50,76,25,101,101,0\n127,63,84,105,105,21,0,0,21,0,0,0,0,0,0,0,21,0,0,0,42,0,0,42,105,105,63,63,0,21,21,0,0,0,0,21,0\n0,127,0,0,84,0,0,0,0,0,84,0,0,0,0,127,0,42,0,0,0,84,84,42,84,42,127,127,42,0,42,0,0,0,0,0,0\n0,0,0,42,127,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,84,84,0,0,0,0,0,0,0,0\n0,0,0,31,0,0,15,15,0,15,0,0,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,31,15,79,127\n0,127,31,31,31,0,31,0,0,0,0,31,0,0,0,0,0,31,0,0,31,63,31,63,63,31,31,0,31,0,0,0,0,0,0,0,0\n0,0,0,0,63,0,63,0,0,0,0,0,0,63,0,0,0,0,0,127,0,63,0,0,0,0,0,63,0,127,0,0,63,63,0,63,0\n0,21,0,0,0,0,0,0,21,42,0,42,127,21,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,0\n127,63,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,21,21,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,14,14,127,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,28,112,28,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,18,18,0,0,36,36,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,72,0,54,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,90,36,18,18,0,0,0,0,0,0,0\n0,31,0,31,63,63,127,0,0,0,31,63,0,31,0,0,0,0,31,31,63,0,0,63,31,0,0,95,0,31,0,0,0,31,0,0,0\n105,85,61,65,45,27,21,18,34,23,21,14,3,7,3,7,3,12,12,10,12,16,21,29,34,32,45,96,125,127,65,43,19,29,12,10,7\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,31,31,0,31,127,95,0,0,0,31,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,0,47,127,111,127\n127,95,0,63,0,31,31,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,31,31,0,0,31,0,0,0,0,0\n54,127,0,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,0,36,36,90,0,36,18,18,0,18,18,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,36,54,36,36,90,72\n54,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,18,72,36,54,72,36,54,0,0,36,18,36,18,18,0,0,0,0,0,18,0,18,0,0,0,18,18,0,0,0,0,18,0,0,0,0,54,0,0,18,72,72,54,90,127,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,42,0,0,0,0,42,42,0,0,0,0,42,42,42,127,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,0,0,0,0,0,0,127,0,31,63,95,31,0\n63,31,31,31,0,63,31,31,31,63,0,31,63,0,0,0,0,0,127,0,31,0,0,31,0,0,31,31,31,31,31,31,63,31,0,0,0,0,0,31,0,0,0,31,31,0,63,31,31,0,31,0,0,0,0,0,127,0,0,31,0,0,0,31,31,0,63,0,31,95,31,31\n25,50,0,50,25,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,25,50,25,25,0,25,50,0,0,0,0,25,0,0,25,0,25,0,25,76,76,0,0,25,0,0,0,0,25,50,50,0,25,25,0,25,0,0,0,0,25,0,127,25,50,76,50,76\n0,29,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,19,0,39,48,9,48,68,9,68,97,127,97\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,127,42,42,127,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,0,0,0,0,0,31,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,127,0,42,0,42,42,84,0,0,42,0\n0,63,0,0,63,63,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,63,63,0,127,127,0\n76,38,38,12,50,63,25,50,25,63,50,50,25,25,38,38,25,0,38,12,50,50,63,50,127,114,101,101,50,12,63,12,0,12,25,25,0\n0,0,0,0,31,0,0,0,0,0,0,0,31,31,0,31,0,63,95,127,31,63,63,95,63,127,31,0,31,0,0,0,0,0,0,0,0\n0,31,95,0,127,95,63,31,0,0,0,31,0,0,31,63,31,31,31,31,0,0,63,0,31,0,0,0,31,31,0,31,0,31,0,0,0\n42,127,42,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,0,21,0,21,0,0,0,0,21,0\n0,0,0,0,0,0,0,0,0,0,8,8,33,110,118,101,76,110,127,110,93,33,33,16,0,0,0,0,16,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,29,19,87,58,58,87,127,117,39,9,19,19,9,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,84,127,42,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,63,0,0,0,31,95,63,127,31,0,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,4,13,27,58,122,127,63,72,81\n0,0,0,0,0,0,0,0,0,0,7,14,7,0,7,35,70,91,127\n0,0,0,0,0,0,0,0,0,0,0,10,31,42,84,127,63,127,31,52,42,0,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,70,14,42,42,127,70,14,14,28,14,0,0\n0,0,0,0,0,0,0,15,0,0,111,79,127,47,95,15,31,0,0\n0,0,0,0,0,1,0,1,4,4,10,16,49,95,127,112,77,57,44\n0,0,0,0,0,0,0,0,0,0,9,27,36,86,127,90,99,63,45,27,36,4,9,4,13,0,0,4,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,3,11,64,127,15,3,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,2,2,13,28,61,115,124,127,84,66,37,33,17,15,15,7,2,7,2,1,1,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,76,25,127,0,25,0,0,0,0,0,0,0,0,25,0,0,0,25,0\n0,0,0,0,0,0,0,0,0,0,0,47,63,31,63,63,127,47,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,18,0,0,0,18,0,18,90,127,72,72,72\n0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,47,15,127,63\n0,0,0,0,0,0,0,0,0,0,0,7,0,3,18,41,78,127,63,33,33,33,14,14,11,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,1,1,1,29,44,52,102,127,98,82,77\n0,0,0,0,0,1,1,2,2,6,9,15,21,30,41,53,87,114,127\n0,0,5,2,5,4,0,2,0,1,0,1,0,1,2,10,13,17,35,29,51,80,127,121,90,51,42,5,3,1,1,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,12,6,19,31,88,63,127,50,25,38,12\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,10,10,5,4,11,67,127,107,64,44,14,38,16,11\n0,0,0,0,0,36,36,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,127,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,10,0,0,0,0,0,0,10,5,0,10,26,127,21\n10,0,5,15,0,26,5,15,21,15,0,21,42,42,42,42,79,58,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,15,47,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,25,0,25,50,76,0\n0,4,0,37,14,28,9,37,37,42,98,122,108,127,47,56,79,47,0\n0,0,25,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,0,25,0,25,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127,63,63,63,0,0,0\n42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,0,127,42,0,0,42,42,42,0,42,42,42,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,25,101,127,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,0,0,127,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,50,0,50,25,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,76,0,0,50,25,0,0,25,50,127,25,0,0,0,25,50,0,76,0,50,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,127,25,0,0,25,25,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n84,127,105,105,105,63,84,42,42,21,21,21,21,0,0,0,0,21,0,0,0,0,0,21,21,42,84,0,0,21,21,21,42,63,21,63\n54,54,54,54,127,72,90,90,18,108,0,36,36,0,0,18,0,0,18,18,0,0,0,0,0,18,18,0,36,0,18,18,18,36,0,18\n0,31,95,0,0,0,127,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\n0,25,127,0,0,0,0,25,0,0,0,0,25,50,0,0,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n31,0,0,95,95,31,63,0,127,95,127,63,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,31,0,0,0,31,31,0,31,31\n63,127,63,31,63,31,31,63,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,63,0,31,31,63,63,31,0\n106,118,127,90,81,40,32,20,24,24,20,36,57,36,24,16,16,24,36,45,73,40,69,94,114,122,86,36,57,36,40,36,20,49,45,36,16\n0,0,42,0,0,0,0,42,21,0,21,63,84,127,105,21,21,0,63,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,127,76,101,50,50,50,0,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,9,10,0,7,10,17,64,79,61,52,44,90,127,94\n0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,0,36,18,54,36,36,0,127,54,36,90,0,54,18,18,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,0,0,84,98,14,56,127,56\n127,63,31,0,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,63,31,0,0,0,0,31,0,0,31,0,0\n0,31,0,31,0,31,31,95,63,31,127,31,95,95,0,0,95,63,31,0,63,31,63,63,31,63,0,31,31,95,0,31,31,63,31,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,21,21,0,127,63,21,63,84,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,127,18,72,54,54,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,63,63,42,127,63,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,21,127,0\n0,0,0,0,0,0,0,63,0,0,127,127,0,127,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0\n0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,101,12,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,25,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,50,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,127,31,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,23,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,21,0,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,0,21,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,127,90,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,18,0,18,0,0,0,0,0,0,0,0\n36,36,27,9,0,0,9,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,18,9,45,54,127\n0,63,47,63,0,63,0,47,0,0,47,47,0,0,0,0,15,15,0,0,0,0,0,0,15,0,0,31,15,0,0,15,127,47,0,15,63\n0,0,0,0,0,31,0,0,0,31,31,0,31,0,0,31,0,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,31,127,63,31,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,90,36,0,0,0,0,0,0,0,18,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,127,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,101,127,76,50,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,0,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,84,127,21,42,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,84,0,0,0,84,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,84,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,31,47,79,47,47,127,63,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,31,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,31,95,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,127\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,42,0,0,0,42,63,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,28,56,127,0,0\n63,63,0,0,0,0,0,0,0,0,0,127,0,31,0,0,63,31,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,95,63,0,127,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,3,11,67,127,52,37,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,97,108,74,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,82,112,14,7,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,17,57,127,40,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,86,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,34,69,63,17,0,0,0,0,0,0,0,0\n127,34,23,11,57,46,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,57\n127,42,63,42,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,127,0\n127,127,0,95,63,31,31,63,31,31,0,0,0,95,127,31,31,31,0\n46,69,127,127,57,34,57,34,46,0,34,0,0,0,23,23,11,57,23,46,23,23,11,0,0,11,34,11,11,11,11,0,0,34,46,80\n39,97,127,97,68,29,97,19,9,19,19,9,0,9,0,0,9,9,19,0,19,0,9,19,9,9,9,19,0,29,39,29,19,48,58,29\n0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,10,10,74,127,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,72,127,54,0,18,18,0\n0,31,0,47,0,127,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n38,38,38,63,88,12,63,88,63,12,12,12,50,12,0,0,0,0,0,0,12,25,12,0,38,63,63,127,25,50,12,25,12,0,12,12\n0,42,84,21,105,63,105,42,21,42,105,42,63,0,21,21,0,21,0,0,0,21,21,42,42,21,84,105,63,127,21,0,42,0,84,63\n0,108,127,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18\n0,0,42,42,42,0,0,0,0,0,0,42,42,127,42,84,0,0,0,0,0,0,0,0,84,84,42,0,42,42,0,0,0,0,0,0\n0,63,63,63,0,0,0,0,0,0,0,0,127,31,31,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,95,63,0,0,31,0,0,0,127,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,42,0,0,127,84,42,0,84,0,0,42,42,0,0,0\n0,0,0,0,0,0,72,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,21,0,0,0,0,0,0,0,0,63,0,42,127,84,21,0,0,0,0,0,0,0,0,0,0,21,21,105,42,0,0,0,0,0,0\n0,84,0,0,0,0,0,0,0,42,0,42,84,127,84,42,0,0,0,0,0,0,0,0,0,0,42,84,84,84,84,42,84,0,42,42\n0,0,0,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,31,47,47,31,15,0,0,0,47,15,15,47,15,0,15,0,15,0,0,47,15,31,79,31,63,47,0,0,31,31,31,47,0,0,31,0\n0,0,0,0,0,0,0,0,0,31,31,127,95,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,95,0\n127,63,54,18,18,9,27,27,18,63,63,36,81,36,81,27,36,18,27,0,9,27,127,45,127,81,54,45,18,9,18,81,81,36,54,54,36\n0,0,0,0,0,0,63,0,31,31,31,63,63,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0\n0,42,0,0,0,127,42,42,0,0,0,0,42,42,0,42,0,42,84,0,0,0,0,84,42,42,0,0,0,0,42,42,42,0,0,0,0\n127,71,33,21,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,56,70,127,84\n50,25,127,101,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,79,63,127,111,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,84,28,35,14,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,0,84,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84\n0,0,0,0,0,0,0,0,0,0,14,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n19,9,0,0,0,0,0,0,19,19,9,39,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,63,63,84,21,21,21,0,0,0,0,0,0,0,21,0,0,21,0\n0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,25,50,76,0,25,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,127,50,25,0,0,25,0,0,0,0,25,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,54,127,72,36,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,38,38,127,12,38,0,25,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,38,63,127,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n72,127,108,72,36,36,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,127,0,63,0,0,0,0,0,0,0,0,0,0\n127,31,63,127,63,31,127,0,0,63,95,0,127,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25,25,76,25,25,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,88,127\n50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,25,0,0,127,76,25,25,25,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,18,0,0,36,72,72,127,90,18,72\n127,63,31,15,15,15,0,79,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n127,95,79,31,79,31,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n10,5,15,5,10,25,76,76,40,71,35,40,5,10,5,20,10,10,10,5,5,10,10,15,15,81,121,127,111,91,50,20,20,10,10,15,0\n0,0,0,95,63,0,95,31,95,95,31,31,63,95,0,63,0,0,0,0,31,0,127,95,31,31,31,0,95,95,31,127,31,0,0,31,0\n127,44,76,38,57,44,82,107,50,25,25,50,57,25,50,44,69,50,25\n0,42,0,84,84,42,42,0,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,50,118,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,88,12,12,12,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,15,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,33,118,127,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,101,0,101,0,0,0,0,0,0,0,0,127,101,25,25,0,0,0,0,0,0,0,0,0,0\n45,27,40,27,22,4,0,4,13,4,9,9,40,36,36,36,54,77,127\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,101,127,50\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,50,0,25,25,127,76,0\n31,79,0,15,0,0,15,0,0,0,0,15,31,47,0,95,47,79,127\n0,38,12,25,25,0,76,127,88,76,12,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,21,63,84,127,63,63,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\n21,0,0,0,0,0,21,42,127,42,42,63,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,15,47,127,0,31,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0\n0,0,31,0,0,31,63,0,31,31,63,63,31,127,31,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,21,42,21,127,84,21,0,0,0\n0,0,0,0,0,0,0,0,54,18,0,127,108,54,72,0,0,0,0\n31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,47,0\n127,47,55,55,7,23,7,15,15,23,0,0,15,7,0,0,7,0,7,7,7,0,31,15,47,23,31,7,15,47,31,55,55,79,63,87,111\n28,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,28,0,0,0,0,0,0,28,0,0,14,56,28,56,127,56\n36,0,0,0,18,36,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,127,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,0,18,0,18,0,36,54,36,18,0,0\n0,0,0,0,0,0,0,127,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,63,0,0,0,63,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,127,63\n0,127,127,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,127,127,127\n95,0,0,31,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0\n0,0,0,0,0,0,0,0,0,0,25,50,25,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,127,63,15,0,15,0,0,0,0\n0,0,127,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,127,127,0,0,0,0,127,127,0,0,127,127,0,127,0\n0,0,0,0,0,0,0,127,63,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n63,0,0,0,63,63,0,0,63,0,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0\n0,0,0,0,0,76,127,50,50,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,56,28,28,56,98,127,84\n0,0,0,0,0,0,0,0,0,0,0,0,76,0,101,25,0,127,0\n127,31,31,0,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,0,31,31,31,31,0,0\n0,7,15,7,111,127,15,7,15,0,0,0,0,15,31,23,31,71,31\n0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,23,11,0,57,46,127,46,57,57,11,23,11,0,0,0,0,11,0,0,0,0\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,127,63,63,31,63,0,0,31,31,31,0,127,63\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,42,127,127,0,42,0,0,0,0,42,0,0,0,0,42,0';
  result = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(data_0, '\n');
  return result;
}
;
carcc.gettorsionFrequencyData = function gettorsionFrequencyData(){
  carcc.$clinit_TorsionDBData();
  var data_0, result;
  data_0 = '24,45,24,8\n1,90,5,5\n99,1\n51,49\n23,9,64,3\n58,42\n7,9,3,5,6,4,5,62\n91,2,4,4\n74,5,20\n96,1,2,2\n80,3,1,16\n72,21,7\n86,4,2,6,2\n19,30,37,15\n60,11,4,16,2,2,1,3,1,1\n80,20,1\n93,7\n69,31\n46,34,5,11,3\n100\n3,50,5,21,8,14\n68,3,12,2,7,7\n12,3,9,5,2,3,66\n100\n17,12,11,16,1,43\n5,95\n33,67\n5,31,4,60\n100\n19,25,56\n10,7,1,82\n45,55,1\n1,8,3,31,58\n1,28,71\n64,3,30,4\n46,1,1,53\n71,29,1\n21,35,44\n9,91\n2,62,36\n100\n100\n7,55,38\n100\n19,70,7,1,4\n19,19,62\n36,3,17,6,39\n68,7,24\n12,8,4,4,47,25\n26,73\n7,5,15,23,16,3,30\n1,13,40,15,2,29\n18,5,8,26,35,8\n50,28,22\n48,37,15\n1,27,2,1,2,3,19,2,6,5,32\n7,14,9,12,2,1,2,3,5,10,16,5,11\n1,1,7,25,1,1,38,1,1,24\n25,23,1,10,7,18,15,1\n17,19,64\n12,13,18,9,48\n30,23,22,24\n10,7,8,9,20,25,15,5\n17,8,10,14,13,11,24,2,1\n100\n8,82,10\n100\n34,13,30,17,1,3,2\n32,18,37,1,12\n100\n43,6,17,25,2,2,5\n39,61\n31,35,20,13\n55,45\n54,46\n31,1,30,6,10,16,4,2\n5,8,36,2,2,1,4,10,29,3\n100\n16,11,39,15,6,13\n28,35,36,1\n11,26,11,50,1,1\n45,6,5,2,28,12,1\n100\n1,34,33,32\n24,7,21,48\n41,11,10,2,2,1,33\n70,3,28\n1,98\n12,87,1\n1,76,13,10\n48,51\n34,38,28\n61,1,38\n100\n43,27,21,9\n1,1,9,1,89\n1,41,32,3,20,2\n33,6,24,27,6,4\n10,3,6,14,17,19,18,13\n1,12,16,7,1,6,15,7,6,10,12,1,6\n45,55\n3,3,1,10,31,52\n55,45\n72,28\n43,26,32\n23,13,2,2,2,2,2,53\n41,3,1,3,1,1,38,1,10\n100\n100\n92,7,1\n59,12,9,20\n100\n100\n18,11,49,9,7,5,1\n12,11,18,58\n4,5,92\n1,99\n9,5,85,1\n73,13,14\n1,7,3,4,9,7,7,4,2,11,1,2,2,10,30\n21,66,7,6\n2,83,14,1\n22,10,20,48\n46,3,6,45\n14,15,34,16,21\n42,58\n74,6,20\n43,52,5\n48,52\n8,92\n43,57\n100\n98,1,1\n100\n10,46,42,1,1\n22,78\n70,30\n26,74\n60,33,1,6,1\n9,6,85\n4,10,85\n97,1,1,1\n39,3,18,24,16\n42,58\n2,4,2,1,1,49,38,2\n48,52\n38,33,2,24,2\n48,52\n21,2,2,2,15,9,5,36,1,7\n1,7,6,1,8,12,25,41\n100\n35,65\n47,53\n41,25,20,10,5\n50,25,4,21\n43,32,25\n34,10,21,9,26\n34,34,32\n55,16,3,25\n50,23,26\n30,70\n58,42\n51,49\n42,7,52\n7,7,1,39,13,1,32\n100\n8,63,3,25\n88,12\n5,4,2,2,1,86\n47,46,7\n97,3\n70,7,3,7,3,1,3,6\n25,11,63\n1,3,36,29,6,1,18,5\n47,16,37\n64,32,4\n33,46,21\n57,43\n54,46\n55,45\n1,26,16,12,15,5,26\n7,1,25,8,23,36\n12,51,37\n24,48,28\n31,5,18,18,1,1,13,9,2,2,1\n5,4,1,3,1,3,2,3,1,1,17,4,5,17,22,10\n12,29,12,47\n6,94\n81,2,11,6\n83,5,1,2,9\n74,26\n53,47\n9,13,23,20,17,18\n1,1,59,1,13,24,1\n34,1,50,12,2\n10,12,3,21,4,4,10,13,22\n27,24,30,1,10,8\n17,11,18,21,24,8\n12,32,22,2,5,7,18,2\n1,5,4,6,3,3,4,3,4,2,2,12,12,2,5,2,4,7,5,4,11\n38,31,22,4,4\n26,2,5,7,9,8,4,17,3,4,3,1,7,5\n10,11,13,16,12,21,17\n2,18,19,18,9,7,9,18\n14,30,54,2\n17,1,2,3,14,7,1,11,15,6,22\n3,15,69,12\n1,51,1,4,1,13,13,13,5\n30,14,11,6,14,22,1,4\n10,8,31,4,14,5,3,20,7\n1,90,1,1,1,1,5\n100\n11,2,32,55\n9,75,16\n1,1,1,17,17,6,8,12,1,23,13\n6,19,17,18,39\n2,7,31,60\n100\n5,95\n100\n92,8\n98,2\n94,2,4\n9,91\n7,4,89\n3,2,1,1,2,1,1,1,12,4,74\n100\n100\n30,70\n15,85\n95,5\n1,2,1,3,93\n100\n5,23,5,5,62\n1,3,96\n2,37,46,7,8\n86,14\n14,1,80,6\n100\n91,6,2\n82,12,6\n83,12,5\n70,17,6,7\n1,52,41,6\n35,6,56,1,1,1\n4,7,10,2,7,2,8,58,1\n58,41\n24,11,66\n100\n8,9,64,8,11\n100\n85,6,8,1\n2,97,1,1\n100\n88,8,1,1,2\n52,3,3,6,36\n10,90\n1,5,93\n33,19,27,3,17,1\n42,58,1\n6,3,75,4,12\n100\n5,1,2,46,46\n24,24,53\n57,16,26\n81,2,2,15\n1,84,1,14\n2,98\n1,98,1\n9,89,2\n21,79\n10,89\n4,96\n18,82\n2,3,2,2,4,2,1,1,84\n6,94\n2,8,90\n22,78\n6,92\n99,1\n100\n100\n41,47,12\n30,70\n7,28,65\n21,7,21,51\n87,13\n29,71\n22,1,78\n51,3,45\n70,30\n54,10,17,17,2\n4,10,2,6,1,2,75\n1,99\n8,57,29,6\n93,7\n52,48\n100\n79,2,3,3,8,5\n22,26,1,51\n17,34,10,3,22,14\n90,4,7\n23,4,73\n79,21\n25,75\n9,21,17,4,28,21\n82,4,3,7,4\n2,24,55,19\n1,30,35,25,9\n10,3,4,15,10,11,48\n3,4,10,8,55,19\n78,6,15\n4,2,93\n100\n100\n1,55,44\n11,26,12,51\n45,55\n36,64\n25,75\n100\n6,1,3,90\n9,79,11\n100\n100\n3,97\n18,11,4,66\n100\n100\n6,93\n6,94\n32,68\n100\n100\n64,5,30\n14,4,14,69\n69,12,15,4\n100\n36,22,31,9,2\n3,45,8,9,35\n71,13,10,6\n15,16,46,22\n38,31,12,3,12,3\n88,12\n100\n100\n16,82,1,1,1,1\n7,3,27,56,7\n20,74,5\n100\n100\n100\n100\n42,46,8,4\n50,1,2,47\n1,3,1,6,2,29,36,17,6\n33,5,58,4\n23,2,75\n34,66\n14,5,8,72\n100\n100\n1,44,55\n100\n5,2,94\n36,1,63\n31,7,8,18,4,4,8,20,1,1\n100\n100\n16,84\n100\n100\n14,86\n10,2,1,1,85\n1,3,95\n3,4,8,85\n100\n9,89,2\n93,7\n21,79\n19,81\n3,86,12\n3,77,7,12\n100\n8,92\n5,9,1,1,85\n1,95,4\n4,2,85,8\n10,90\n2,91,7\n47,29,24\n80,20\n99,1\n100\n21,12,67\n3,2,95\n17,9,4,5,12,54\n59,41\n4,8,19,22,4,35,7\n3,3,10,5,4,75\n21,26,30,22\n5,10,50,35\n15,14,4,2,65\n27,45,7,3,2,8,8\n1,23,53,24\n74,23,3\n15,81,4\n40,60\n7,11,82\n22,1,77\n41,59\n100\n27,73\n22,78\n1,74,25\n3,1,61,1,34\n99,1\n4,27,14,55\n12,17,7,18,6,11,3,2,25\n99,1\n100\n10,90\n95,5\n19,81\n97,3\n10,5,85\n2,98\n52,21,27\n100\n100\n100\n77,23\n98,2\n100\n100\n22,15,15,6,41\n64,31,5\n28,16,34,19,1,1,1\n44,6,4,15,13,18\n75,25\n100\n60,40\n33,67\n52,8,15,23,1\n60,41\n100\n100\n53,2,6,3,1,3,31\n1,10,13,22,24,19,6,5\n24,76\n39,61\n97,3\n100\n100\n80,20\n19,4,16,14,2,1,43\n35,65\n91,9\n64,36\n2,98\n95,5\n100\n61,39\n100\n67,3,19,1,6,2\n45,55\n2,7,9,21,42,2,4,1,4,1,2,5\n8,86,1,5\n61,27,13\n3,1,96\n25,75\n2,18,6,9,65\n30,70\n8,87,5\n4,96\n15,85\n97,3\n90,10\n100\n100\n100\n100\n100\n100\n100\n100\n11,89\n48,1,51\n1,14,85\n2,1,95,2\n1,1,98\n100\n15,54,2,29\n100\n49,50,1,1\n100\n10,12,78\n27,6,6,24,4,14,20\n100\n47,53\n2,8,5,6,6,73\n32,1,1,66\n3,2,3,33,15,8,4,8,13,3,9\n2,11,87\n53,38,8\n22,9,69\n41,1,2,1,55\n2,16,1,4,6,70\n98,2\n96,4\n37,45,18\n3,1,2,16,78\n3,1,2,2,8,2,73,3,4,2\n8,31,61\n100\n20,80\n100\n19,81\n13,46,41\n9,3,9,79\n12,83,5\n100\n12,88\n100\n10,90\n3,96\n6,94\n100\n17,83\n4,4,93\n100\n99\n33,11,3,6,11,3,32\n16,78,1,5\n11,39,33,17\n3,4,4,23,6,1,1,3,55\n100\n100\n100\n31,3,5,15,42,5\n22,8,21,48\n25,1,10,56,7\n47,29,24\n100\n31,10,7,3,15,7,8,3,15,2\n100\n10,7,6,2,13,24,7,6,24,1\n1,5,94\n13,4,30,23,27,3\n1,29,69\n33,2,50,14\n100\n1,99\n23,1,6,69\n36,1,3,61\n54,46\n1,13,23,48,14\n42,24,34\n1,8,17,29,6,10,12,18\n35,11,53\n41,59\n58,42\n3,13,2,2,2,12,67\n85,15\n100\n72,28\n100\n100\n13,72,7,4,4\n100\n18,4,41,32,2,2\n11,49,8,31\n35,65\n4,95\n9,90\n23,77\n64,36\n100\n100\n85,2,4,7,2\n100\n100\n92,8\n46,28,26\n100\n100\n1,1,98\n100\n100\n64,8,28\n7,12,33,7,2,3,5,5,25\n20,44,12,2,1,10,5,2,2\n32,68\n21,42,5,32\n41,15,18,25\n38,10,11,2,14,1,23\n5,95\n4,6,90\n4,54,42\n100\n21,39,19,6,14\n100\n28,60,3,4,1,2,2\n100\n71,12,13,3\n100\n25,42,6,18,8\n11,9,79,1\n8,23,8,10,24,27\n4,2,31,62,1\n98,1,1\n20,79\n11,1,21,21,12,34\n40,7,52\n4,3,1,86,8\n61,10,22,1,2,1,4\n33,66\n7,55,37\n98\n2,27,13,8,21,1,12,17\n86,13\n52,47\n81,19\n2,2,93,4\n6,79,2,8,1,2,1\n29,38,5,28,1\n23,8,68,1\n4,1,20,7,7,47,12\n5,37,57\n1,16,79,4\n10,18,72\n12,1,77,10\n36,10,27,5,4,18\n24,76\n42,41,4,14\n99,1,1\n86,13,1\n100\n100\n100\n13,40,5,7,17,13,5\n18,22,17,37,5\n26,32,5,36\n95,5\n100\n100\n100\n100\n100\n18,82\n1,4,1,94\n7,12,1,81\n5,95\n14,27,7,12,10,4,21,6\n36,64\n92,8\n100\n71,9,3,16\n100\n100\n97,3\n82,18\n87,13\n45,55\n78,4,18\n48,8,12,1,27,1,2\n33,22,25,20\n1,97,2\n85,10,4\n1,69,22,2,2,5\n14,9,9,28,13,6,21\n10,4,28,8,29,20\n85,15\n48,7,45\n35,65\n49,51\n43,57\n3,1,22,74\n1,99\n66,34\n43,5,4,35,13\n55,32,13\n1,17,33,20,28\n90,7,1,2\n33,7,3,3,53\n7,9,9,5,19,31,21\n52,47,1\n59,8,12,9,7,2,2,1,1\n6,4,23,36,10,13,7\n8,48,5,10,26,3,1\n21,21,1,56,1\n5,95\n1,59,40\n96,1,2,1\n6,31,25,6,21,6,6\n100\n7,18,9,67\n100\n100\n1,99\n64,36\n93,7\n98,2\n41,26,33\n100\n5,95\n61,8,31\n37,9,25,29\n100\n100\n100\n18,65,12,6\n45,46,4,2,3\n87,13\n11,23,4,3,3,8,48\n92,2,6\n51,7,15,23,4\n100\n25,44,26,5\n4,3,1,92\n1,16,26,8,8,5,36,1\n90,1,9\n28,64,7,1,1\n3,4,13,4,77\n15,14,24,1,4,9,33\n80,20\n18,9,42,16,16\n7,32,12,6,26,1,11,3,2\n5,32,2,1,1,1,1,1,4,53\n3,47,3,14,9,24\n74,1,1,24\n3,97\n80,1,3,15\n4,8,87\n99,1\n100\n2,98\n27,3,70\n100\n86,14\n95,5\n65,14,18,3\n4,1,95\n70,5,6,1,1,17\n1,6,53,4,1,35\n94,2,2,2\n66,28,6\n52,25,2,18,1,2\n12,4,7,6,4,68\n35,63,1,1\n48,52\n41,59\n4,4,39,53\n10,2,3,85\n75,3,22\n1,99,1\n100\n26,1,66,6,1\n11,1,18,1,7,56,1,4,1\n65,35\n97,1,2\n33,8,5,54\n1,1,18,10,70\n3,78,19\n5,79,13,3\n18,38,39,5\n1,1,19,7,5,15,21,4,16,4,3,5\n3,20,77\n10,1,90\n3,3,72,22\n5,77,17,1\n65,35\n84,16\n14,1,29,20,19,6,12\n50,8,1,41\n29,10,14,14,30,1\n37,6,2,12,11,12,21\n4,4,2,89\n1,24,11,63,1\n44,56\n26,4,70\n13,87\n100\n5,3,92\n7,90,3\n57,17,7,4,15\n21,6,5,4,4,10,27,23\n46,54\n52,42,5,1\n1,99\n99\n100\n40,47,13\n1,5,44,25,26\n7,6,87\n3,5,1,2,4,16,17,52\n19,81\n46,54\n39,22,39\n100\n100\n1,1,1,10,18,33,35\n7,93\n2,52,45\n100\n4,94,2\n100\n100\n23,1,1,1,17,57\n3,97\n2,1,20,18,60\n26,17,57\n86,14\n36,52,12\n19,37,44\n3,10,86\n55,45\n71,29\n1,38,28,33\n27,73\n1,1,83,15\n7,17,10,10,16,6,13,1,20\n5,37,42,15\n100\n100\n100\n100\n100\n1,1,1,2,96\n1,99\n1,98\n33,9,34,24\n53,47\n11,89\n96,4\n100\n46,54\n82,18\n100\n100\n98,2\n4,96\n90,10\n17,83\n100\n100\n12,7,12,10,60\n94,6\n54,1,46\n40,60\n100\n84,16\n96,4\n80,20\n65,35\n11,1,87\n6,2,5,3,83\n2,3,95\n100\n2,3,38,56,2\n29,66,3,3\n16,4,80\n3,5,12,80\n45,55\n9,11,28,7,45\n54,23,7,16\n14,1,38,30,17,1\n8,38,17,37\n79,21\n78,22\n44,5,1,1,1,13,9,13,8,1,4\n41,59\n55,45\n83,13,4\n8,30,30,1,2,29\n2,2,2,88,5\n4,7,62,3,5,19\n100\n10,64,5,21\n58,2,35,2,3\n3,3,2,37,9,32,2,13\n2,2,95\n4,96\n100\n14,82,4\n100\n27,44,29\n44,1,49,2,4\n98,2\n80,2,3,12,2,1\n14,11,33,12,21,8\n100\n46,9,45\n15,2,1,71,10,1\n2,98\n1,99\n3,14,5,5,71,2\n100\n26,9,7,26,4,28\n1,1,32,66\n15,1,85\n22,7,7,7,52,5\n47,12,41\n35,8,33,24\n5,6,16,2,25,19,14,8,4\n6,1,7,13,1,18,4,4,15,30\n1,1,1,13,8,11,49,1,3,14\n73,15,1,7,1,4\n44,5,15,36\n66,12,17,2,3\n20,13,8,58\n58,42\n2,57,1,2,8,30\n7,39,4,17,12,7,3,10\n1,77,22\n80,20\n100\n56,18,26\n42,8,2,2,20,26\n18,13,1,54,6,6,1\n4,1,77,19\n67,31,1\n8,3,5,4,27,52\n5,5,29,26,13,22\n69,31\n51,48\n2,7,3,14,1,2,2,70\n32,3,3,62\n5,16,18,27,34\n28,12,27,33\n22,10,68\n4,1,1,1,10,85\n26,29,29,6,10\n10,83,7\n29,39,10,9,4,3,8\n54,14,31\n45,4,32,18\n45,2,7,2,1,38,4\n19,4,11,8,46,2,10\n31,41,1,27\n29,14,7,11,35,1,2\n26,16,2,13,1,32,11\n1,4,5,6,5,25,1,3,50\n1,8,12,10,36,7,10,14\n100\n100\n13,87,1\n9,3,32,13,42\n46,54\n4,96\n100\n37,6,57\n11,89\n18,82\n42,1,57\n11,6,13,43,28\n19,4,11,4,10,21,31\n1,4,1,83,11\n9,91\n100\n11,11,19,2,13,45\n8,1,1,1,1,12,32,42\n24,4,1,68,3\n62,5,27,5\n8,86,5\n1,1,97,1\n5,9,19,2,9,11,6,2,5,6,5,7,14\n22,8,1,1,2,2,61,1,3,1\n1,95,1,2\n100\n100\n10,89,1\n3,8,89\n100\n100\n10,1,11,3,3,70,2\n71,20,1,8\n96,4\n92,8\n48,1,51\n45,54\n100\n51,1,10,34,4\n52,4,1,25,8,12\n2,2,95\n9,2,2,1,85\n100\n28,19,21,3,3,21,3,2\n97,3\n2,2,92,4\n100\n10,60,22,8\n98,2\n28,32,16,24\n100\n93,7\n47,53\n100\n1,90,9\n11,17,7,37,29\n100\n100\n100\n100\n22,10,25,43\n7,1,12,5,6,27,8,34\n3,3,57,37\n1,3,89,6\n79,21\n55,45\n100\n3,8,3,2,84\n5,4,92\n15,19,2,19,7,36,1\n18,14,2,1,3,61\n18,19,63\n1,7,92\n2,1,1,58,20,11,7\n2,24,16,50,4,2,2\n82,15,1,2,1\n4,4,4,53,35,1\n39,52,9\n96,4\n1,12,22,22,44\n43,57\n1,2,2,95\n1,3,2,90,2,2\n10,5,85\n9,6,85\n21,21,35,22\n75,23,2\n100\n99,1\n3,97\n3,97\n9,1,1,3,86\n7,93\n1,42,57\n10,3,88\n2,9,64,25\n2,72,27\n1,52,45,1,1\n3,1,1,31,25,15,3,20,1,1\n4,31,2,3,61\n1,13,7,4,3,71,1\n15,22,14,20,30\n1,24,5,25,9,17,19,1\n2,98\n100\n100\n100\n20,6,4,18,4,9,35,3\n21,6,5,68\n100\n100\n1,99,1\n1,99\n37,10,10,12,6,26\n37,13,1,8,8,1,5,27\n100\n100\n43,36,21\n100\n33,67\n8,37,43,12\n25,2,35,22,17\n100\n24,76\n54,46\n11,80,9\n11,13,12,63\n1,41,57\n51,49\n19,18,2,30,4,28\n12,61,27\n11,89\n2,1,18,1,5,74\n5,1,23,2,3,5,1,59\n98,2\n24,51,26\n41,59\n100\n7,20,22,27,24\n74,26\n32,68\n100\n5,24,19,53\n99\n92,8\n2,4,5,90\n1,1,11,84,4\n62,15,22,1\n100\n100\n17,3,8,4,29,32,8\n89,11\n90,10\n6,46,15,33\n69,31\n100\n100\n100\n100\n23,47,16,10,5\n50,2,2,1,7,19,3,4,7,5\n1,2,1,18,22,23,28,1,1,1,1\n40,24,36\n100\n26,74\n3,97\n59,41\n59,41\n97,2,1\n9,57,1,13,20\n2,98\n60,40\n100\n100\n8,92\n1,22,10,7,60\n16,35,1,5,1,43,1\n26,41,7,1,6,17,1\n62,8,5,25\n29,38,21,11\n36,1,1,1,1,59,1\n49,1,1,1,25,22,1\n58,2,13,2,3,23\n1,35,40,8,16\n6,3,39,35,10,6\n3,33,31,28,5\n24,13,20,43\n53,47\n50,50\n20,14,66\n80,8,10,3\n10,6,5,4,2,4,1,2,2,50,13\n73,27\n11,89\n100\n14,4,11,12,2,43,14\n13,35,51,1\n31,17,2,28,22\n100\n100\n6,6,39,18,10,21\n62,1,4,1,19,13\n3,12,85,1\n18,12,2,27,5,3,7,2,23\n90,10\n68,1,4,1,2,1,1,1,19,3\n55,15,4,25\n99\n78,1,1,20\n7,15,10,7,1,2,4,6,7,3,2,2,5,4,2,23\n76,3,21\n2,13,10,11,44,20\n24,29,47\n100\n2,1,45,44,8\n46,40,5,8\n24,18,16,12,28,1,1\n8,2,6,23,44,8,8\n100\n100\n90,9\n87,13\n6,7,26,1,16,3,41\n30,5,65\n61,1,39\n100\n14,8,78\n12,3,4,5,3,23,26,24\n22,22,1,55\n9,7,68,10,7\n66,1,34\n8,1,4,62,25\n56,5,5,35\n52,35,13\n100\n10,27,60,1,1\n1,46,37,6,11\n58,2,2,15,9,15\n10,9,16,29,9,27\n14,27,4,55\n1,29,10,1,59\n3,80,6,11\n18,14,8,4,5,11,8,6,6,16,5\n60,40\n9,1,61,8,19,2\n2,8,43,42,5\n1,75,13,11\n5,5,35,1,1,36,17\n1,24,21,5,1,31,17\n17,14,6,62\n6,18,1,23,3,1,5,6,6,2,11,18\n10,12,5,7,36,13,6,10\n30,21,10,13,26\n3,33,6,58,1\n57,43\n61,3,1,4,3,28\n6,3,20,4,14,30,23\n3,3,94\n8,9,3,3,16,4,45,10\n7,51,41\n17,5,37,3,37\n1,99\n1,66,34\n66,16,19\n2,2,19,58,11,2,4,4\n49,40,8,3\n45,21,34\n8,43,41,8\n23,77\n33,13,14,6,27,5,3\n100\n91,8\n3,8,62,15,3,10\n21,79\n99,1\n100\n69,4,1,14,12\n1,80,1,18\n99,1\n22,49,14,14,1\n100\n100\n7,31,13,49\n100\n92,3,5,1\n41,59\n55,45\n56,44\n100\n54,46\n62,35,3\n67,8,25\n82,17\n100\n100\n100\n100\n1,2,2,1,59,13,12,9\n15,66,15,3,1,1\n7,36,45,12\n6,6,68,20\n79,21\n2,2,97\n6,76,5,3,2,8\n100\n100\n100\n37,23,23,2,14\n1,1,80,18\n100\n43,56,1,1\n100\n4,3,4,23,4,4,56,2\n100\n100\n18,3,13,8,5,17,3,13,2,19\n18,8,8,17,16,12,22\n17,1,1,14,2,27,14,2,4,4,4,3,7,1\n9,1,30,5,25,20,1,10\n29,38,29,5\n13,11,3,3,8,21,29,12\n8,4,16,3,2,18,2,46\n5,2,1,1,14,37,35,4,3\n17,12,67,4\n27,12,1,2,58\n5,95\n26,18,49,8\n30,2,56,6,5\n94,1,4,1\n31,69\n1,33,14,7,9,36\n100\n59,4,27,10\n97,3\n100\n3,40,6,49,2\n100\n10,69,11,10\n1,39,9,7,29,13,2\n100\n99,1\n8,1,82,10\n30,70\n100\n100\n100\n1,51,49\n43,57\n100\n1,6,48,26,8,3,6,2\n63,6,31\n1,99\n1,14,17,69\n7,3,29,1,30,8,8,6,8\n1,1,11,4,12,3,4,3,59,2\n100\n1,25,74\n41,12,9,39\n100\n100\n31,2,5,62\n9,22,13,13,42\n42,17,12,19,11\n100\n100\n73,27\n31,68\n24,22,6,10,10,27\n32,59,9\n1,8,1,89,1\n13,10,35,22,11,10\n1,50,49\n3,4,25,30,17,21\n12,7,35,17,28\n4,48,42,6\n27,73\n64,23,14\n76,16,4,5\n6,20,2,7,20,24,10,12\n18,17,10,54\n95,5\n2,14,46,38\n4,11,12,20,20,2,30\n21,3,76\n9,63,16,12\n8,2,10,12,35,7,2,2,5,1,1,15\n61,6,12,17,5\n9,4,65,21,1\n100\n33,47,20\n100\n32,40,27\n100\n100\n28,8,12,8,9,4,3,28\n100\n100\n1,99\n73,1,14,12\n8,15,14,5,5,20,3,30\n65,1,34\n27,45,28\n43,57\n100\n1,99\n1,2,2,4,91\n11,2,2,2,1,83\n9,6,5,13,11,2,54\n2,3,66,1,3,3,2,20\n8,23,7,63\n8,34,49,2,7\n13,4,39,8,1,2,6,25\n36,46,1,17\n2,5,35,2,3,6,2,2,1,3,3,2,4,11,2,12,1,3\n4,7,5,30,10,34,2,5\n100\n100\n4,4,57,35\n2,10,39,37,2,6,4\n2,7,42,2,1,46\n100\n1,5,2,2,28,36,5,3,18\n2,8,90\n15,2,1,3,2,77\n28,2,70\n69,31\n1,35,17,15,32\n34,14,51\n5,42,1,1,5,46\n1,1,97,1\n1,1,1,97\n37,63\n7,23,35,3,26,4\n9,1,63,1,25,1\n25,26,8,41\n41,59\n11,5,9,1,4,42,2,26\n15,2,8,8,10,1,39,14\n45,55\n55,45\n100\n100\n71,6,23\n100\n100\n100\n100\n100\n100\n92,8\n100\n21,71,1,8\n9,91\n100\n20,2,20,11,16,13,4,12,2\n26,35,6,1,22,9\n48,51\n100\n94,4,1,1\n2,9,1,1,3,1,4,42,38\n15,83\n11,6,1,10,68,4\n73,3,5,4,15\n3,1,1,95\n78,1,1,12,1,2,4\n91,7,2\n3,97\n100\n20,80\n4,14,17,3,35,27\n100\n100\n100\n100\n96,4\n91,3,2,1,3\n100\n100\n3,69,28\n4,20,43,32\n35,63,1,1\n27,1,72,1\n100\n17,1,82\n99\n82,18\n79,4,17\n1,14,11,74\n9,17,46,4,12,13\n100\n100\n29,22,50\n25,24,51\n93,7\n81,1,19\n100\n8,2,90\n13,87\n12,14,74\n18,3,79\n5,63,32\n52,47\n47,53\n90,10\n33,1,26,23,12,5\n1,7,11,9,1,72\n30,64,5,1\n15,37,23,26\n65,1,25,1,1,6,1\n13,37,16,13,5,7,8\n100\n68,32,1\n52,48\n53,47\n100\n100\n1,99\n6,2,7,84,2\n42,32,26\n100\n100\n100\n1,3,11,85\n8,92\n100\n9,91\n13,87\n100\n22,7,71\n30,34,3,34\n100\n4,96\n63,2,1,3,1,1,2,2,24\n33,4,2,1,14,45\n41,1,1,4,1,1,1,1,7,2,8,7,5,21\n46,54\n8,8,1,12,72\n77,23\n100\n100\n100\n100\n48,5,3,3,2,2,3,6,10,12,2,4\n36,64\n100\n100\n4,96\n24,76\n89,11\n57,4,2,4,33\n100\n2,12,1,2,28,15,16,21,3\n1,7,1,1,5,1,1,9,24,43,6\n9,13,33,14,6,14,9\n15,3,16,66\n3,1,2,2,1,1,1,1,2,1,4,1,1,1,1,1,1,2,1,1,21,16,34\n10,4,2,2,1,1,2,3,2,1,5,1,1,10,2,4,7,20,19,4\n23,77\n19,28,3,26,6,6,1,1,10\n13,41,39,4,2\n13,5,7,4,70\n25,9,5,60\n51,2,28,19\n54,22,24\n1,4,3,4,4,1,1,1,1,4,3,4,70\n2,1,5,1,1,1,1,1,1,8,8,39,32\n1,21,78,1\n1,1,1,1,1,16,5,12,22,4,1,8,13,13\n9,11,13,9,1,1,1,1,7,1,44\n32,13,2,12,12,30\n7,77,14,2\n8,92\n39,10,14,37\n100\n24,76\n72,28\n2,60,37\n61,11,11,16\n100\n6,60,35\n80,20\n100\n100\n100\n44,50,7\n100\n73,1,7,3,3,11\n66,34\n27,57,5,7,3,1\n38,42,21\n1,28,32,38,1\n59,1,40,1\n75,22,3\n64,1,25,7,4\n82,18\n100\n100\n3,97\n3,10,35,52\n100\n100\n5,95\n15,85\n19,81\n100\n98,2\n100\n85,4,5,1,4\n90,8,2\n11,3,13,73\n1,99\n4,2,94\n7,1,1,90\n100\n3,95\n15,29,56\n28,1,1,71\n48,17,36\n63,4,33\n87,13\n91,9\n1,1,7,1,16,18,58\n1,1,1,9,38,19,32\n22,78\n84,16\n78,4,7,10,1\n1,1,2,55,41\n1,1,2,95\n3,3,13,80\n2,5,1,23,23,30,15\n100\n100\n100\n57,3,2,3,6,1,2,1,5,21\n24,20,4,52\n9,5,14,2,1,1,3,4,29,31\n14,4,3,7,6,3,7,2,4,5,12,5,4,4,3,3,6,5,4\n19,7,7,20,5,22,19\n6,8,1,1,1,50,28,1,5\n100\n13,10,12,43,7,3,2,1,2,2,5\n79,12,1,2,6\n25,74,1\n65,15,17,3\n86,10,3\n79,21\n7,93\n49,51\n34,13,29,8,2,6,1,2,1,3,1\n100\n39,21,2,15,2,1,3,2,4,4,2,3,2,1\n100\n23,16,1,33,1,1,6,12,1,4,1,2\n1,11,9,31,21,1,11,1,1,3,11\n1,3,25,3,15,17,12,5,17,2\n12,4,33,51\n100\n20,14,66\n100\n1,25,34,30,4,1,4\n65,10,7,17\n97,3\n31,29,31,9\n59,16,12,14\n2,2,43,4,5,29,8,7\n58,42\n9,91\n12,1,1,2,24,19,5,11,14,12\n18,14,8,42,1,1,13,1,1,1,1\n45,55\n16,84\n61,1,37\n32,2,2,14,12,1,1,7,2,6,1,19\n19,42,37,1,1\n33,1,1,63,1,1\n1,1,16,29,1,1,1,19,26,1\n7,36,58\n5,12,83\n21,24,9,18,15,10,2,1\n32,68\n11,2,1,84\n3,23,6,15,53\n23,77\n97,3\n30,28,43\n58,21,20\n1,1,13,10,3,8,25,25,2,3,1,1,4,2\n69,31\n23,5,72\n7,93\n39,14,47\n57,43\n34,5,49,1,2,1,8\n12,16,71\n29,9,6,16,40\n38,42,20\n1,4,23,4,67\n33,30,37\n100\n7,4,1,29,36,23\n10,2,10,6,2,5,4,60\n1,4,71,18,7\n70,12,14,3\n11,88\n6,9,22,63\n19,4,1,1,57,18\n11,10,1,49,24,5\n16,13,22,25,23,1\n1,17,19,14,49\n14,86\n100\n33,67\n17,25,15,6,38\n37,31,33\n19,11,3,11,17,39\n21,1,4,74,1\n95,5\n99\n53,47\n58,26,16\n100\n100\n1,36,63\n100\n13,12,1,1,2,11,61\n45,22,33\n100\n7,24,1,16,28,11,14\n100\n100\n100\n2,4,1,42,21,19,11\n12,88\n1,31,29,34,4\n5,23,71\n100\n100\n39,3,3,3,5,47\n3,82,15\n2,2,95\n75,3,2,2,1,1,17\n2,2,5,2,5,5,4,7,69\n100\n60,7,30,2\n15,6,80\n92,8\n50,49\n77,9,5,8\n100\n100\n2,24,74\n100\n100\n100\n80,1,3,15\n100\n2,98\n100\n2,1,12,1,1,4,1,38,13,27\n35,12,12,7,35\n35,5,3,3,33,10,7,4\n32,3,10,6,5,19,7,2,3,5,7\n26,74\n8,20,27,45\n100\n9,66,18,6\n100\n100\n100\n100\n22,3,40,34\n4,5,8,3,28,44,8\n100\n100\n1,99\n3,97\n83,14,3\n43,6,15,2,33\n12,1,57,29\n100\n100\n8,3,2,77,10\n62,8,21,6,2\n3,23,14,1,3,7,42,1,5\n100\n2,98\n2,4,10,1,1,29,11,7,29,7\n96,3\n2,31,67\n100\n93,7\n100\n2,56,11,32\n2,98\n85,15\n100\n1,7,5,1,1,1,3,2,2,1,12,66\n7,6,2,1,3,1,5,4,9,8,27,27\n29,18,50,2,1\n44,9,9,9,30\n29,16,30,25\n77,1,3,8,10,1\n3,2,1,3,1,2,16,1,3,26,41\n7,11,50,1,23,7\n17,2,2,6,72,1\n1,6,11,6,76\n28,62,10\n1,11,1,29,14,23,8,5,8\n2,21,8,4,2,35,28\n6,6,37,13,9,17,12\n11,50,39\n47,20,19,15\n1,2,13,11,11,22,26,14\n35,1,1,1,48,3,4,8\n2,7,23,3,35,29\n7,2,17,35,39\n5,3,11,5,3,4,2,6,20,42\n2,1,1,10,37,4,5,40\n83,9,7,1\n2,1,2,5,28,62\n10,2,4,13,3,6,2,14,46\n25,1,1,1,68,1,3\n23,3,3,8,63\n100\n55,28,5,2,7,2\n1,84,16\n36,64\n11,8,13,4,25,22,17\n51,1,48\n100\n89,11\n86,14\n100\n100\n47,14,15,2,20,2\n3,21,6,32,38\n6,13,6,8,23,43\n37,12,11,12,3,2,3,17,3\n97,1,3\n100\n56,1,16,4,23\n94,6\n1,99\n32,6,59,2,1\n97,2,2\n85,3,6,1,1,1,2,1\n75,8,10,2,4,1,2\n100\n7,90,3\n98,1\n98,2\n35,14,33,5,13\n89,5,6\n54,46,1\n27,63,11\n19,2,4,2,73\n22,2,32,44\n6,31,12,19,31\n2,1,1,3,29,17,1,29,18\n41,41,18\n39,2,1,4,3,10,2,21,17\n3,80,3,3,12\n6,4,69,9,5,3,4\n89,3,3,4\n1,1,4,11,84\n6,2,4,6,44,11,5,9,1,7,5\n11,4,27,20,19,1,1,1,5,11\n37,4,7,2,18,28,2,1\n18,12,3,13,2,3,2,6,10,2,23,2,5\n11,58,26,5\n1,23,51,1,22,1,1\n7,48,45\n45,2,1,5,3,2,4,1,1,9,28\n9,8,27,3,1,52\n29,1,61,4,3,1,1\n15,1,13,71,1\n4,30,66\n87,13\n1,25,35,5,35\n60,40\n16,10,5,53,17\n8,3,68,20\n18,17,59,4,2\n8,75,1,16\n29,1,70\n5,1,11,82,1,1\n55,44\n1,1,45,50,1,1\n55,43,1\n5,2,51,29,12\n85,13,2\n32,32,36\n7,14,18,12,49\n71,1,18,9,1,1\n73,12,15\n6,3,5,2,54,29\n12,3,17,65,3\n37,63\n6,5,1,89\n17,14,69\n37,29,6,16,11,1\n29,6,65\n99\n30,70\n2,98\n24,7,65,4\n2,3,95\n33,67\n10,90\n14,86\n1,2,97\n3,56,41\n22,13,12,52\n5,1,93\n8,1,92\n6,94\n10,90\n1,14,1,85\n100\n12,4,84\n1,4,96\n35,65\n7,10,59,4,10,2,5\n3,16,18,3,44,1,14\n36,64\n44,37,20\n18,82\n99\n7,93\n10,82,2,2,4\n14,2,3,81,1\n9,2,1,4,1,2,3,78\n2,3,4,8,84\n77,23\n66,1,1,33\n68,32\n98,1,2\n84,8,2,6\n59,30,11\n3,2,48,13,3,14,17\n34,1,18,47\n95,5\n30,33,8,8,20,1,1\n9,22,68\n1,3,96\n100\n100\n7,4,3,19,67\n47,42,11\n37,2,49,12\n55,45\n100\n47,3,1,1,3,4,4,1,36\n18,26,11,2,6,1,37\n100\n1,99\n84,16\n100\n30,39,8,2,1,20\n9,2,81,3,5\n98,1,1\n68,32\n59,33,9\n85,7,2,1,3,1,2\n100\n1,99\n30,26,22,22\n1,2,3,94\n13,39,5,43\n47,10,21,21\n42,58\n100\n3,97\n1,2,1,94,2\n13,2,19,9,12,4,14,12,16\n4,2,1,2,14,6,57,15\n20,11,4,20,15,6,23\n5,3,2,90\n5,95\n1,1,62,36\n55,45\n100\n3,97\n7,93\n3,5,2,90\n4,73,23\n3,81,16\n63,35,1,1\n1,56,23,19\n97,1,2\n94,2,4\n57,43\n100\n1,1,99\n54,2,43\n56,44\n63,1,29,7\n9,59,7,7,18\n85,6,9\n86,3,10,1\n79,3,18\n92,4,4\n74,25\n32,7,61\n26,9,65\n99\n8,6,4,82\n54,19,21,6\n18,38,44\n46,25,29\n17,1,40,42\n27,13,14,45\n72,28\n93,3,1,3\n92,1,6\n12,4,15,20,17,16,16\n62,34,4\n1,99,1\n68,1,13,18\n12,12,34,1,12,28\n3,6,4,44,7,36\n42,58\n3,47,50\n31,68,1\n17,38,45\n49,51\n94,6\n3,8,2,87\n18,44,28,10\n4,96\n5,15,79\n22,2,76\n52,28,20\n2,98\n10,88,1\n49,51\n20,20,60\n14,10,4,14,1,58\n48,52\n10,89,1\n1,55,5,32,7\n25,5,70\n3,97\n2,98\n92,8\n30,17,35,3,5,3,7\n6,2,57,17,9,9\n10,31,25,10,20,4\n8,14,78\n37,10,8,20,25\n46,3,22,28\n54,46\n26,43,32\n1,50,4,13,7,7,19\n8,92\n1,2,38,59\n100\n2,19,12,8,12,5,14,4,10,13,2\n8,2,3,6,2,2,6,11,21,9,5,1,1,2,3,8,2,9\n49,4,37,10\n38,63\n8,2,4,1,39,1,3,2,7,8,26\n2,7,11,14,12,3,1,15,9,4,14,6,2\n51,49\n34,66\n100\n10,47,34,9\n26,8,7,22,21,3,3,8,3\n7,9,41,8,33,1,1\n1,1,1,22,74,1\n5,2,3,22,36,2,2,16,4,6,1\n100\n5,89,5\n15,1,6,15,34,30\n56,1,1,40,1\n100\n100\n12,13,7,11,9,2,7,39\n100\n95,5\n54,14,32\n100\n15,24,60,1\n38,61\n98,2\n34,3,62\n100\n9,6,32,22,22,1,9\n100\n100\n100\n100\n100\n10,13,27,34,16\n95,1,4\n5,95\n22,18,40,19\n100\n100\n21,20,60\n24,76\n15,2,83\n100\n20,80\n23,1,76\n100\n97,3\n100\n99\n1,36,63\n1,1,98\n9,80,11\n17,19,64\n100\n100\n68,16,1,15\n97,3\n100\n100\n100\n100\n6,28,65\n37,36,27\n28,72\n46,10,31,3,4,4,2,1\n91,9\n100\n97,2\n43,4,2,51\n7,30,12,4,46\n47,37,4,10,3\n29,38,14,1,2,6,8,1,1\n19,15,19,47\n54,45\n100\n100\n100\n100\n55,38,6,1\n98,1,1,1\n8,29,1,28,33,1\n1,33,3,2,2,50,7\n2,11,24,23,40\n16,1,4,70,5,5,1\n2,12,37,13,5,13,12,1,6\n5,60,1,1,3,3,7,14,3,4\n1,4,7,2,4,5,23,7,16,4,13,11,3\n8,2,1,89\n2,27,17,15,19,20\n1,1,18,33,1,1,1,11,13,10,6,4\n5,14,8,55,11,7\n1,5,3,8,55,27\n15,30,55\n10,7,17,6,5,11,1,19,10,5,8\n8,13,20,59\n66,34\n9,4,6,69,11\n99,1\n92,8\n6,47,3,6,39\n1,53,1,46\n1,23,1,1,57,19\n3,50,6,1,41\n3,36,22,1,1,2,6,29\n33,7,1,1,3,3,1,33,4,14\n21,19,29,18,7,7\n2,98\n100\n36,19,13,7,6,1,1,19\n31,24,44\n22,77\n54,46\n57,43\n54,46\n59,41\n1,99\n21,79\n100\n8,2,3,5,19,5,58\n26,21,10,21,9,4,3,6\n72,28\n52,48\n73,27\n6,7,2,8,77\n78,2,2,1,1,8,9\n74,6,1,1,1,1,2,1,4,2,2,4,1\n91,1,7\n75,1,1,2,20\n1,3,1,62,9,20,5\n48,45,6,1\n93,2,2,1,1\n98,2,1\n51,1,48\n100\n15,85\n51,11,1,37\n36,41,1,23\n73,27\n100\n63,7,16,14\n45,55\n16,13,11,59\n93,7\n18,82\n100\n12,13,76\n100\n100\n61,39\n3,12,11,2,72\n17,27,1,33,13,10\n72,5,3,13,6\n1,4,57,37\n81,2,6,3,4,4,1\n75,25\n14,28,29,29\n100\n2,79,19\n4,6,5,4,81\n8,6,70,17\n7,7,11,1,24,1,1,48\n1,35,36,28,1\n58,19,23\n51,49\n100\n2,73,25\n100\n8,25,30,32,5\n50,25,25\n85,5,1,3,3,3\n27,11,12,43,2,5\n30,4,6,13,8,10,1,1,6,2,5,11,2\n83,1,3,13\n92,2,6\n85,7,2,6\n16,43,40\n100\n3,23,6,7,2,5,5,49\n1,1,87,11\n4,15,3,10,68\n52,48\n5,39,10,30,15\n4,1,43,7,7,38\n2,1,15,29,2,2,1,17,30\n5,6,2,5,10,6,10,2,21,19,14\n18,82\n18,2,81\n19,36,45\n21,1,1,26,52\n8,67,2,1,5,16,1\n4,86,9\n1,3,2,1,14,26,2,5,38,6,3\n3,15,17,1,8,51,4\n4,87,3,3,2\n5,90,1,4\n1,10,84,1,4\n9,32,2,7,49\n58,2,40\n9,11,80\n48,52\n1,17,18,5,8,50\n24,58,18\n12,57,5,6,19\n50,18,31\n10,90\n1,99\n100\n90,7,3\n21,78\n28,39,11,11,5,5,2\n100\n96,2,2\n35,38,26\n52,4,44\n3,16,10,11,20,17,21,1\n63,8,8,20\n11,6,1,6,23,12,40\n12,1,7,43,18,19\n8,4,32,25,32\n58,42\n40,23,10,27\n16,35,42,7\n54,39,7\n43,32,24\n18,21,2,3,7,50\n21,79\n50,13,13,18,6\n43,32,12,13\n37,6,33,24\n3,97\n2,5,91,3\n13,24,14,22,27\n7,9,8,46,29\n100\n89,4,3,4\n6,94\n7,10,36,12,20,12,2\n20,6,7,4,4,8,21,29\n95,2,3\n24,27,30,1,1,16,1\n50,38,12\n40,42,9,1,1,2,1,5\n7,58,9,26\n4,86,9\n90,10\n100\n29,71\n21,17,6,56\n100\n28,25,47\n100\n99,1\n10,3,87\n68,6,26\n4,25,7,62,2\n35,2,2,13,48\n52,3,3,3,1,1,37\n31,61,8\n3,63,33\n3,2,26,68\n7,93\n30,34,35\n37,63\n9,91\n28,1,1,1,28,41\n18,19,7,27,7,23\n6,62,21,11\n100\n2,98\n34,9,3,12,41\n10,1,1,1,1,88\n43,44,8,5\n17,13,2,68\n12,11,1,6,59,10\n39,2,59\n13,10,12,2,24,9,11,7,10,1\n8,4,6,3,4,7,9,8,4,4,4,6,9,22,1\n1,3,1,1,1,94\n96,4\n79,3,9,8\n20,80\n19,20,21,41\n9,4,14,5,65,3\n8,68,4,20,1\n7,27,2,35,30\n100\n98,2\n100\n6,8,13,19,3,13,38\n6,5,7,16,14,30,1,9,12\n100\n100\n100\n1,11,6,6,14,8,20,34\n100\n52,48\n6,24,10,11,8,3,18,20\n99,1\n7,42,52\n15,55,30\n8,61,26,5\n100\n100\n23,5,2,32,39\n1,25,17,57\n100\n100\n1,74,25\n63,37\n42,58\n75,4,21\n13,88\n1,4,95\n1,60,6,34\n100\n40,4,43,10,3\n30,26,43,1\n41,12,9,34,4\n7,5,4,3,8,6,10,1,1,2,17,35\n69,3,9,10,6,3\n67,33\n23,37,22,18\n3,97\n19,6,29,2,1,3,21,8,3,4,5\n83,10,2,2,3,1\n100\n26,14,10,50\n14,37,15,6,27\n100\n62,9,29\n69,10,4,5,7,5\n99,1\n100\n100\n100\n100\n100\n99,1\n39,61\n76,24\n77,23\n13,49,38\n93,6,1\n67,33\n97,3\n2,98\n100\n100\n100\n100\n3,9,14,3,61,4,1,1,4\n28,55,17\n4,4,91,1\n3,1,1,3,21,8,4,21,5,3,6,1,12,11\n8,6,21,33,32\n51,49\n4,2,94\n10,19,13,57\n88,12\n98,2\n100\n14,3,1,1,1,1,1,4,1,5,1,6,60\n28,3,7,1,2,1,57\n9,89,3\n28,17,13,1,13,27\n5,95\n97,1,2\n100\n100\n1,33,40,9,16,1,1\n10,1,23,4,1,29,11,19,3\n1,5,31,19,12,31,2\n100\n34,3,12,5,3,2,8,4,26,3\n27,4,10,29,26,3,1\n76,21,3\n37,10,24,9,9,2,5,5\n61,16,15,4,4\n100\n89,11\n12,37,13,37\n100\n38,58,4,1\n58,9,33\n6,26,14,8,6,10,3,2,2,7,2,1,1,3,5,4\n4,84,12\n83,17\n41,28,2,11,19\n8,26,66\n1,7,11,22,5,1,34,12,2,3,1\n2,1,28,6,12,11,40\n2,4,7,84,2\n35,7,24,33\n100\n10,58,32\n16,61,11,3,4,4\n11,41,42,5\n100\n2,2,8,20,9,59\n2,4,4,11,43,36\n11,1,2,2,85\n100\n85,15\n1,5,4,3,77,10\n99,1\n100\n100\n3,32,19,7,14,25\n9,7,3,7,1,1,16,21,10,25\n42,13,16,7,21,1\n10,3,59,14,14\n16,4,8,72\n19,18,54,9\n16,16,4,10,7,3,2,4,23,7,2,4\n5,23,14,14,27,5,13\n86,14\n100\n19,4,77\n21,28,5,34,12\n100\n14,86\n7,92,1\n42,5,1,51\n72,28\n18,82\n100\n1,41,10,32,6,10\n8,29,1,18,2,17,25\n2,17,15,22,4,2,4,6,4,2,18,3\n92,2,6\n42,15,27,12,3\n95,5\n72,28\n100\n4,96\n100\n100\n2,98\n3,22,8,67\n1,1,15,13,3,4,14,49\n13,3,80,2,2\n1,99\n71,6,13,10\n4,91,6\n100\n100\n9,18,9,29,35,1,1\n8,17,11,11,53\n1,99\n22,78\n100\n2,20,26,30,5,4,13\n28,72\n100\n60,8,1,30\n46,5,6,1,7,13,23\n3,1,96\n100\n54,21,7,9,10\n24,10,13,5,3,15,7,11,12\n1,5,93\n5,55,39\n100\n57,9,34\n71,29\n11,44,12,33\n99,1\n1,26,24,8,41\n15,13,21,24,27\n100\n100\n100\n22,22,37,20\n11,55,30,3\n100\n9,17,1,35,30,8\n100\n7,34,13,1,7,38\n98,2\n100\n56,27,16\n19,81\n100\n100\n100\n100\n43,29,26,1,1\n4,1,27,19,49\n7,34,49,10\n8,92\n16,84\n3,98\n46,54\n5,95\n100\n79,21\n100\n65,8,1,26,1\n19,9,12,60\n12,1,16,5,1,4,63\n100\n100\n100\n1,99\n5,20,75\n25,2,72\n78,22\n69,16,9,5\n64,36\n59,5,1,3,5,27\n83,17\n55,5,40\n73,27\n63,2,3,32\n10,35,5,14,17,17\n1,1,9,2,19,1,1,3,10,6,5,38,1,5\n1,1,1,1,18,17,1,24,3,8,9,3,2,10\n43,57\n55,8,14,8,15\n84,2,14\n1,34,64,1\n100\n100\n100\n72,14,14\n100\n3,22,12,1,62\n100\n17,5,1,1,7,70\n100\n50,19,26,5\n76,24\n21,10,40,27,1,1\n33,46,13,8\n100\n26,73,1\n100\n100\n86,13\n19,12,5,39,12,12\n1,1,93,1,5,1\n81,19\n1,30,70\n31,8,50,11\n20,80\n100\n100\n100\n15,38,47\n100\n15,40,45\n9,91\n100\n100\n100\n100\n100\n100\n5,80,14\n1,10,19,4,1,17,42,1,6\n65,32,2\n8,4,12,52,4,19,1\n100\n1,5,21,4,1,38,31\n100\n4,73,23\n100\n90,1,5,3\n17,6,2,52,11,11\n100\n100\n100\n3,4,7,74,12\n100\n69,31\n22,78\n57,41,1,1\n4,6,58,20,3,5,4\n100\n100\n4,77,19\n2,4,3,1,5,3,63,18\n46,2,1,51\n100\n100\n2,6,2,89\n31,4,22,2,2,5,1,1,30\n27,21,5,2,4,3,2,16,19\n35,15,17,19,1,1,2,9,1,1\n91,3,2,1,3\n1,8,17,10,65\n29,2,27,42\n2,6,4,18,8,51,2,9\n10,5,34,52\n74,5,3,6,1,1,1,1,1,1,1,2,1\n40,1,2,1,2,3,2,42,1,6\n24,76\n90,3,4,2\n79,11,11\n14,86\n1,99\n91,1,3,5\n5,5,89\n100\n100\n7,39,53\n79,21\n100\n100\n97,3\n100\n3,97\n24,70,6\n100\n100\n53,1,3,19,24\n88,12\n78,22\n100\n100\n41,9,50\n59,40,1\n100\n71,15,13\n100\n100\n100\n53,6,6,34\n13,4,6,13,56,7\n56,34,2,2,1,5\n5,58,6,30\n74,26\n100\n38,22,7,32,1\n3,48,50\n100\n41,10,49\n2,98\n76,24\n99,1\n82,10,8\n100\n100\n14,28,1,8,24,25\n100\n6,1,15,15,1,7,2,21,26,6\n11,49,40\n4,1,94,1\n56,19,2,9,13\n2,1,36,62\n13,87\n1,81,19\n45,55\n51,29,19\n100\n6,94\n71,1,6,6,5,5,6,1\n100\n18,65,8,3,2,4\n1,1,18,1,33,19,20,1,6\n100\n100\n24,76\n11,49,40\n5,25,3,2,2,13,5,34,11\n100\n9,5,86\n4,17,77,1\n45,50,4,1,1\n100\n33,55,12\n55,45\n100\n100\n15,85\n4,8,49,40\n43,16,2,24,2,6,7,1\n4,56,2,4,32,1\n2,8,11,80\n5,95\n66,29,5\n2,31,10,57\n13,87\n100\n2,18,4,2,73\n100\n4,92,2,2\n8,6,4,4,1,77\n69,31\n32,68\n12,1,31,4,51\n100\n3,97\n17,83\n100\n91,5,5\n7,9,1,18,66\n21,79\n1,4,67,29\n89,7,1,1,1,1,2,1\n1,43,21,2,17,2,15\n100\n82,14,5\n15,26,34,25\n100\n100\n2,97\n1,9,1,7,62,20\n91,7,1\n1,1,1,23,73,1,1\n2,4,90,5\n12,11,6,2,3,2,45,3,16\n11,2,10,11,39,27\n100\n100\n100\n28,18,2,1,17,33\n21,35,23,4,16\n23,77\n46,15,3,6,14,13,2\n37,18,46\n99\n18,4,4,6,10,13,45\n96,4\n44,38,10,8\n13,3,59,25\n3,2,39,57\n80,20\n79,21\n20,35,4,4,5,6,5,13,6\n5,91,4\n95,3,1\n1,1,2,1,64,32\n100\n88,2,3,2,6\n68,13,18\n14,16,70\n91,9\n100\n5,22,72\n10,90\n46,41,14\n83,2,3,11,1\n16,36,22,9,17\n25,11,20,22,22\n37,23,22,1,10,8\n55,2,1,1,1,2,29,5,5\n4,36,21,34,2,4\n50,49\n96,2,2\n93,2,3,2\n99\n93,7\n3,1,95\n19,12,62,3,4\n6,1,4,1,2,28,20,4,32,1,1,1\n7,3,25,63,1,1\n16,7,10,7,13,47\n41,8,50\n1,3,54,42\n1,58,9,31\n2,47,51\n2,34,8,10,46\n1,4,1,2,58,1,16,8,11\n9,64,23,3\n32,6,3,19,15,2,2,13,6,3\n1,4,15,29,14,11,4,2,2,9,1,1,2,1,1,3\n27,3,8,15,10,5,14,6,10,2\n46,3,25,3,6,9,1,3,3\n71,17,13\n27,18,25,24,5\n3,3,19,5,51,18,1\n2,25,26,7,38,2\n88,12\n52,44,5\n26,5,4,54,11\n3,8,4,16,12,24,5,27\n26,5,8,27,34,1\n5,80,1,13,1\n56,8,36\n73,1,6,20\n39,36,22,1,1,1,1,1\n100\n97,3\n81,12,3,3\n27,6,22,30,14\n1,99,1\n19,81\n49,51\n5,95\n4,5,2,88\n2,77,20\n35,32,29,4\n24,76\n17,4,3,76\n1,99\n7,93\n9,91\n99,1\n100\n100\n3,97\n47,49,4\n1,1,9,90\n8,8,76,1,8\n6,49,1,31,4,1,8\n49,5,46\n50,2,49\n4,42,54\n19,3,21,56\n40,13,47\n17,6,6,7,13,50\n56,44\n1,99\n22,30,8,40\n1,5,1,70,24\n10,61,27,1,2\n7,69,22,2\n1,99\n50,26,24\n47,2,28,2,21\n30,65,2,1\n1,6,22,21,14,36\n100\n32,41,26\n33,46,1,20\n100\n96,3\n42,54,1,2,1\n64,1,26,9\n69,25,1,5\n100\n100\n20,53,7,6,14\n21,79\n19,3,41,37\n29,71\n100\n57,43\n91,9\n100\n100\n100\n31,69\n74,26\n100\n94,2,2\n1,79,20,1\n96,4\n100\n51,2,47\n50,1,2,47\n80,19,1\n43,7,46,3,1\n44,16,13,27\n12,13,10,35,29\n19,21,60\n45,23,33\n26,74\n3,9,23,36,28\n60,40\n69,31\n1,1,1,1,20,8,3,38,25\n1,2,1,2,7,2,85\n10,2,21,49,17\n30,27,1,8,1,21,5,8\n5,95\n55,20,24\n1,1,1,5,1,1,1,1,70,19\n13,87\n35,28,23,6,2,4,2\n1,12,57,18,1,8,2\n5,8,16,4,59,8\n7,24,22,47\n95,4\n27,6,6,7,4,50\n7,9,35,7,21,17,4,1\n1,99\n1,10,1,1,48,1,1,36\n2,2,8,2,2,83,2\n7,1,92,1\n1,99\n34,14,2,5,45\n76,24\n77,23\n5,3,9,83\n100\n100\n15,50,6,5,16,9\n4,96\n5,33,37,26\n79,21\n100\n36,40,24\n38,62\n44,5,29,22\n19,4,28,17,32\n3,61,12,23\n2,66,32\n8,10,3,4,75\n2,3,2,4,2,74,12\n86,14\n6,73,7,14\n100\n22,78\n1,88,7,4\n100\n2,85,12,1\n18,17,16,3,2,26,1,17\n100\n79,21\n71,29\n23,77\n21,42,37\n33,60,6\n100\n72,22,4,1\n74,26\n74,7,19\n100\n45,25,30\n100\n16,82,3\n3,19,38,14,4,10,12\n1,57,7,12,22\n4,96\n100\n99,1\n2,12,36,28,12,2,1,1,6\n5,18,16,61\n51,4,6,2,2,31,4\n7,5,69,15,4\n1,2,1,1,34,40,20\n14,66,20\n1,3,7,2,87\n2,6,92\n7,3,2,5,3,40,10,30\n95,4,1\n11,3,55,31\n40,51,2,8\n18,24,58\n22,78\n9,91\n2,2,12,29,55\n3,3,94\n7,4,74,14\n100\n82,3,14\n6,53,15,22,3,1\n1,43,31,21,5\n6,2,92\n2,98\n2,98\n100\n5,72,23\n3,1,18,61,16,1\n28,20,50,2\n16,21,63\n27,9,41,6,16\n35,65\n70,6,2,3,16,3\n72,6,4,1,3,3,11\n20,20,1,58\n100\n100\n1,36,39,24\n4,33,51,12\n100\n94,6\n1,1,14,7,5,12,6,8,44,3\n34,2,30,4,8,6,7,9\n2,4,5,89\n98,2\n41,41,17\n12,13,5,61,6,3\n100\n100\n1,7,48,6,4,33,1\n60,5,1,2,1,31,1\n91,9\n70,30\n61,9,1,29\n81,19\n5,20,5,70\n100\n75,25\n72,27,1\n100\n100\n3,3,1,4,3,2,84\n100\n8,21,72\n8,3,45,44\n8,9,82\n26,20,12,7,30,6\n46,5,49\n100\n100\n100\n1,1,1,1,84,11,1\n10,67,2,19,2\n2,86,6,5\n1,2,83,14\n35,65\n31,69\n78,22\n20,21,19,9,30\n75,20,6\n89,10\n100\n26,1,1,73\n59,34,1,1,4,1\n32,1,67\n12,5,77,3,3\n1,94,5\n1,6,10,84\n100\n9,91\n1,1,22,28,8,4,9,1,27\n1,8,1,1,9,62,1,17,1\n3,3,5,76,3,6,4\n5,13,5,35,7,29,5\n1,99\n10,89\n88,12\n96,4\n95,5\n27,1,16,55,1\n15,1,1,83\n1,1,8,7,3,5,2,10,5,6,10,7,3,31\n1,8,2,12,2,3,63,4,1,4\n9,4,1,1,26,7,13,6,34\n1,6,67,9,8,10\n4,82,6,8\n4,1,2,4,51,38\n31,69\n32,43,25\n29,38,33\n28,72\n46,17,31,6\n99,1\n100\n1,28,71\n5,11,8,76\n11,8,11,5,10,13,12,18,12\n4,2,22,45,2,14,9\n24,8,7,56,4\n40,60\n1,2,53,19,24\n1,2,69,14,14\n99,1\n1,1,98\n1,71,2,26\n55,11,4,29\n2,42,48,2,7\n8,1,63,5,6,14,1,1\n60,30,11\n30,46,23\n22,13,6,23,35,1\n10,9,5,2,3,72\n1,6,1,1,2,1,4,86\n1,1,53,46\n1,3,58,38\n3,33,24,20,20\n1,39,60\n10,18,21,1,34,17\n1,1,34,1,1,2,9,5,48\n51,12,1,3,29,4\n90,10\n8,8,30,15,7,2,5,25\n100\n100\n15,4,80\n100\n77,23\n100\n100\n64,5,15,16\n57,43\n100\n57,43\n97,3\n84,4,2,3,6\n100\n5,94,1\n8,91,1\n14,5,18,8,13,40,3\n85,15\n1,85,7,1,4,1\n68,26,3,1,1\n19,22,19,5,2,8,4,3,17\n14,1,9,3,5,29,1,7,24,8\n1,1,77,1,13,7,1\n56,1,32,11\n23,76\n5,68,3,3,10,9\n98,2\n100\n28,31,40,1\n42,23,18,17\n19,25,2,23,31\n100\n74,18,8\n8,10,75,7\n100\n100\n100\n100\n100\n53,47\n35,1,65\n47,53\n100\n100\n100\n14,86\n29,11,19,8,13,20\n63,37\n48,4,48\n22,21,57\n100\n50,50\n78,22\n10,8,82\n100\n100\n1,2,6,2,1,4,1,7,16,58,1\n53,14,22,11\n25,75\n84,6,4,5\n4,13,83\n52,48\n24,76\n92,8\n98,2\n100\n9,9,21,20,41\n52,48\n100\n100\n2,98\n37,63\n100\n79,7,5,1,1,4,1,1,1,1\n22,31,43,4\n100\n94,5,1\n8,14,19,32,26\n57,2,2,5,4,6,1,11,13\n3,34,27,36\n100\n16,17,67\n99,1\n100\n100\n100\n100\n100\n100\n100\n100\n12,87,1\n26,18,27,9,3,18\n2,98\n12,88\n1,3,94,1,1\n5,95\n75,25\n100\n99,1\n100\n56,17,27\n30,1,1,69\n82,18\n44,9,2,3,18,25\n16,35,49\n100\n15,71,14\n6,37,54,2,1\n6,3,13,24,53\n35,64\n10,61,29\n100\n99,1\n100\n6,3,2,10,6,1,7,3,2,2,10,8,25,5,3,8\n2,1,1,23,3,15,55\n100\n1,10,1,56,29,1\n19,25,2,2,4,3,14,2,12,16\n9,91\n1,53,3,16,27\n1,34,2,2,8,3,51\n21,77,2\n79,6,15\n100\n78,3,19\n9,34,54,3\n28,72\n14,11,9,65\n100\n11,79,11\n9,91\n100\n31,22,7,22,17,1\n25,73,2\n1,79,21\n45,55\n39,5,2,54\n67,33\n100\n100\n49,48,2,1\n100\n91,9\n100\n39,1,6,3,7,28,16\n11,1,14,2,73\n83,17\n100\n100\n16,25,11,32,1,1,1,8,1,4\n1,1,4,6,3,3,3,1,1,1,18,15,19,8,15,1\n96,1,3\n100\n100\n100\n100\n100\n8,62,31\n100\n91,3,3,3,2\n41,4,6,6,16,24,4\n8,4,14,75\n20,68,5,5,1,1,1\n100\n100\n83,15,2\n1,8,2,9,75,5\n100\n86,5,9\n6,6,18,10,17,1,1,31,10\n1,78,21\n90,2,8\n34,29,1,9,7,20\n100\n57,2,1,40\n78,11,1,9\n100\n19,81\n11,11,13,17,7,5,4,28,5,1\n5,19,15,21,28,11\n3,6,5,1,23,12,2,37,10\n1,1,38,59,1\n100\n3,2,95\n46,50,3\n20,55,9,12,3\n13,27,8,23,27,1,1\n100\n100\n100\n12,28,60\n43,57\n93,4,4\n39,51,10\n100\n65,33,2\n100\n71,1,7,12,9\n5,59,36\n3,6,6,17,68\n44,56\n27,16,3,3,47,3,2\n58,14,6,4,3,3,4,9\n1,1,1,96,1\n55,25,20\n63,2,20,10,5\n52,37,4,4,4\n14,66,13,7\n13,18,8,55,6,1\n1,43,43,2,1,1,1,8\n58,25,1,17\n10,44,13,32\n100\n100\n100\n6,9,85\n100\n57,43\n1,32,67\n33,9,1,8,38,2,7\n3,9,8,33,1,6,6,3,8,23\n5,6,4,19,17,27,20,2\n2,39,19,33,7\n100\n2,71,5,8,13\n13,38,48\n67,19,14\n2,67,16,14\n58,2,1,7,32\n40,5,55\n29,31,33,4,3\n46,54\n42,58\n29,25,46\n51,19,31\n2,7,4,2,1,17,23,32,11\n15,2,47,1,5,3,5,5,16\n59,3,37\n55,42,3\n2,33,5,56,4\n49,51\n63,21,16\n8,11,5,22,4,3,2,22,1,23,1\n10,3,45,33,10\n37,19,24,20\n1,51,1,3,1,1,8,2,33\n48,22,19,11\n46,37,17\n4,52,44\n100\n89,11\n18,82\n40,17,18,3,21,1\n5,3,92\n15,1,51,33\n27,23,50\n1,62,37\n51,49\n65,2,2,27,2,2\n33,42,15,10\n41,1,1,1,32,7,1,6,1,3,8\n10,13,14,22,41\n72,28\n38,62\n3,3,4,4,1,5,5,2,3,10,4,4,6,4,3,34,6\n38,62\n23,1,1,2,1,4,1,1,1,2,5,2,55\n82,5,11,1\n26,74\n35,21,4,29,10\n3,6,9,6,4,53,20\n75,25\n71,29\n95,1,4\n41,7,2,9,3,6,31\n100\n66,9,1,4,20\n1,1,5,15,15,9,16,3,1,34\n100\n100\n40,7,18,5,1,2,8,2,6,10,1\n34,31,1,1,2,1,8,6,1,8,4,1\n45,32,1,1,1,1,1,2,3,6,7\n8,32,20,28,6,6\n1,1,90,8\n12,10,11,17,5,5,17,23\n29,15,12,43\n91,1,1,4,1,1,3,1\n78,2,12,5,2\n33,67\n100\n100\n4,96\n100\n6,38,25,31\n100\n71,13,16\n11,30,59\n5,52,2,12,30\n13,2,85\n7,3,1,17,6,21,10,35\n100\n4,2,3,4,87\n100\n100\n5,3,8,7,2,3,1,3,54,3,11\n7,5,8,1,1,4,3,2,27,29,13\n69,10,4,1,10,6\n71,21,1,6,1\n39,50,10,1\n9,17,13,5,24,32\n5,5,1,5,21,27,36\n34,66\n5,95\n100\n25,37,2,1,36\n1,99\n47,30,23\n100\n11,13,8,14,35,19\n51,4,45\n100\n33,67\n100\n7,11,6,29,41,5\n18,73,1,8,1\n100\n48,2,51\n100\n9,44,47\n68,1,16,8,7\n19,53,1,13,14\n5,3,42,34,16\n100\n47,15,21,2,15\n19,29,52\n21,5,1,1,1,4,4,62\n7,20,1,72\n33,2,4,61\n50,50\n36,6,6,23,30\n54,45\n27,2,1,2,2,3,1,2,4,2,1,1,50\n36,3,9,1,1,1,15,1,7,25\n1,39,2,4,1,5,33,1,3,2,8\n4,13,4,8,10,12,32,4,2,7,4\n73,27\n24,76\n60,20,17,4\n71,5,1,1,21\n56,41,1,3\n47,40,12\n63,4,6,1,2,15,1,2,4,1\n20,16,22,42\n67,33\n87,13\n68,1,15,11,6\n81,13,6,1\n31,12,8,43,4\n20,14,26,1,1,1,1,7,2,2,3,17,3,3\n100\n2,22,18,1,53,3\n4,3,5,16,12,1,4,39,8,8\n13,43,1,30,13,1\n1,6,17,38,1,37\n1,15,84\n3,35,62\n60,39\n12,76,12\n100\n100\n91,9\n92,8\n74,19,6\n93,7\n100\n100\n38,2,11,10,39\n5,7,87\n7,30,44,8,11\n3,97\n71,20,10\n79,21\n100\n100\n13,87\n97,1,2\n100\n42,57\n15,2,83\n100\n32,68\n31,61,8\n27,9,13,2,6,42\n74,1,7,17\n31,69\n100\n100\n4,96\n100\n33,10,9,19,5,12,5,8\n7,6,16,3,3,6,13,20,25\n100\n3,97\n100\n100\n100\n5,4,1,74,6,9\n92,4,4\n22,78\n77,12,12\n100\n100\n100\n100\n3,3,10,1,2,4,1,3,1,8,2,8,12,41\n77,8,3,11\n100\n100\n98,2\n37,63\n93,7\n100\n100\n85,8,7\n1,1,37,7,5,2,47\n15,85\n36,17,19,21,7\n100\n100\n12,19,26,12,5,11,11,6\n20,7,36,1,4,17,5,8,1\n32,6,6,16,20,4,2,2,10\n61,2,2,3,2,31\n96,4\n58,42\n81,19\n62,38\n53,15,20,13\n1,1,51,23,19,5\n100\n15,52,33\n6,49,44\n100\n100\n25,75\n12,10,9,66,2\n14,15,72\n33,67\n32,47,21\n1,99\n50,50\n39,30,32\n62,7,31\n61,1,7,25,1,5\n100\n34,66\n5,4,91\n4,6,1,89\n2,5,63,30\n76,24\n48,31,1,1,1,18\n100\n4,1,2,15,14,64\n22,24,54\n72,22,3,2\n59,16,24\n1,3,78,18\n8,3,6,2,12,10,1,1,1,5,2,3,20,9,16\n16,5,14,12,13,15,3,5,10,2,2\n100\n1,2,5,1,1,76,14\n100\n100\n100\n100\n100\n100\n67,33\n72,7,4,16\n100\n100\n100\n100\n17,23,60\n30,48,22\n100\n100\n100\n95,5\n1,1,17,80\n100\n100\n54,45\n88,5,5,1\n100\n100\n4,96\n100\n15,85\n78,13,5,4\n30,70\n100\n48,45,7\n100\n100\n28,22,50\n32,56,11\n100\n53,9,5,3,11,9,6,4\n50,50\n59,9,9,2,14,6,1\n37,63\n21,1,10,4,40,8,1,1,1,1,11,2\n45,36,5,11,1,1,1\n75,25\n37,9,9,9,34,2,1\n26,7,6,59,1,1\n78,19,3\n30,15,22,32\n24,24,52\n14,39,47\n100\n76,24\n78,1,21\n42,17,5,9,27\n4,1,96\n5,93,2\n36,8,5,5,1,3,13,14,14\n1,1,28,47,22\n100\n100\n67,3,1,1,2,3,4,7,5,7\n69,4,2,26\n100\n95,5\n100\n100\n100\n38,7,8,34,5,8\n73,1,1,1,3,9,6,5\n3,4,93\n7,93\n6,10,12,8,62\n28,68,3\n6,18,1,1,2,1,1,8,10,52\n100\n100\n3,97\n92,8\n2,1,3,7,38,48\n92,8\n36,3,3,15,2,41\n2,43,20,33\n45,13,5,15,22\n15,22,2,1,2,1,54,1\n7,2,25,1,66\n3,41,24,12,20\n3,1,39,3,26,12,17\n61,22,1,17\n1,2,1,4,77,3,12\n4,58,38\n4,8,34,54\n17,21,21,31,9,1\n100\n86,2,3,1,8\n100\n100\n75,3,1,3,1,1,4,13\n25,41,5,8,20\n100\n100\n41,3,56\n24,3,2,16,7,4,42\n12,4,40,26,9,8\n26,9,5,1,6,18,14,21\n7,2,3,17,11,2,1,2,36,17\n1,1,15,3,15,36,1,8,19\n18,70,6,6\n94,2,4\n29,5,43,15,7\n100\n6,7,1,1,1,13,71\n9,91\n95,1,4,1\n87,13\n97,3\n100\n99,1\n100\n6,94\n5,7,70,18\n8,46,19,26\n90,10\n65,22,13\n71,17,12\n10,10,80\n21,25,3,51\n54,3,43\n60,40\n100\n15,6,1,11,10,1,56\n77,23\n75,25\n3,78,19\n26,26,21,20,8\n9,54,37\n22,21,19,38\n21,79\n100\n82,4,14\n52,23,14,11\n100\n81,19\n100\n69,16,15\n40,54,6\n99,1\n100,1\n100\n70,29,1\n8,16,16,60\n2,98\n15,4,18,63\n100\n21,12,67\n93,7\n31,16,54\n100\n100\n90,10\n34,20,36,10\n100\n1,63,7,11,18\n34,39,27\n3,11,5,31,16,35\n97,3\n100\n100\n100\n8,3,5,13,22,15,10,22\n69,31\n2,74,24\n9,90\n19,81\n96,4\n6,2,3,33,57\n81,7,11\n29,71\n100\n95,5\n15,84\n1,36,9,3,18,22,10,1\n100\n83,17\n28,3,6,3,5,4,5,26,20\n100\n100\n2,10,11,1,2,5,4,3,39,22\n67,10,10,14\n100\n26,1,74\n1,1,7,2,52,37\n100\n100\n1,67,14,18,1\n73,27\n30,58,1,11\n100\n2,45,53\n100\n100\n11,72,9,8\n18,28,54\n7,47,46\n21,2,1,3,74\n19,24,26,28,1,1,1,1\n100\n100\n4,6,53,37\n3,2,5,90\n41,59\n82,18\n4,3,18,8,8,23,38\n31,51,4,9,4\n72,12,16\n33,20,16,1,27,3\n100\n100\n65,34\n41,52,7\n1,1,32,27,10,30\n16,8,8,17,9,41\n14,20,4,4,49,8\n70,10,14,1,6\n74,13,14\n3,10,11,73,2\n6,11,16,4,8,51,4\n5,12,5,17,4,17,41\n9,2,89\n14,33,47,5\n84,10,7\n7,87,7\n23,10,44,24\n13,6,9,12,6,14,2,32,5\n11,4,2,5,25,7,7,23,2,2,5,6\n97,3\n2,2,7,2,88\n6,94\n1,1,13,10,37,7,2,9,9,5,6\n1,2,96\n100\n6,7,87\n31,3,18,15,33,1\n1,99\n100\n5,95\n100\n6,94\n1,31,68\n32,1,2,8,4,53\n5,95\n75,12,7,1,5\n100\n100\n100\n97,1,2\n4,96\n100\n33,67\n100\n40,31,19,9\n100\n6,38,55,1\n100\n88,10,1,1,1\n60,40\n10,6,10,9,57,9\n26,64,10\n17,14,60,9\n5,2,2,2,2,37,31,7,11\n28,6,3,6,38,10,2,6\n13,7,6,3,15,5,11,3,8,3,24\n27,1,26,4,6,19,16\n32,11,23,33\n13,10,12,10,9,46\n100\n46,2,27,22,4\n90,10\n27,73\n100\n19,81\n100\n47,53\n1,34,26,1,39\n87,13\n15,9,23,9,44\n9,91\n100\n39,35,12,13\n50,50\n49,51\n41,7,4,1,47\n58,42\n55,10,8,5,7,14\n46,54\n75,1,24\n100\n22,2,1,1,2,71\n100\n29,14,6,29,20,2\n19,1,80\n100\n5,1,31,63\n35,8,57\n85,15\n4,1,94\n27,27,12,4,29\n100\n92,5,4\n35,3,58,3\n65,35\n33,56,3,8\n1,99\n23,77\n100\n29,71\n100\n2,4,10,84\n13,16,1,70\n5,12,1,82\n100\n1,1,18,8,5,68\n100\n22,34,44\n100\n11,89\n6,1,93\n100\n100\n12,17,72\n87,6,7\n89,11\n100\n100\n100\n98,2\n100\n91,9\n1,1,18,79\n2,6,1,1,92\n7,3,22,26,19,8,15\n100\n100\n79,21\n85,15\n100\n14,10,1,74\n83,18\n10,33,1,1,1,2,52\n90,1,8\n3,3,28,6,60\n84,16\n100\n5,95\n16,24,60\n100\n100\n3,2,44,50\n2,91,7\n100\n100\n1,1,99\n24,76\n23,19,36,22\n70,28,3\n78,7,5,5,2,4\n20,17,3,3,43,2,11,1\n31,61,7\n3,97\n100\n100\n100\n1,71,29,1\n28,72\n77,2,21\n57,4,40\n3,51,3,8,34\n37,22,25,16\n70,1,18,11\n68,1,4,21,3,1,1\n81,19\n85,15\n7,4,7,13,68\n1,46,20,34\n3,83,3,6,5\n4,78,1,13,3,2\n96,4\n91,9\n14,59,25,1,1\n77,23\n99,1,1\n3,90,7\n90,10\n32,4,7,19,38\n13,70,10,5,2\n10,4,85,1,1\n44,7,23,3,18,6\n100\n49,27,4,20\n1,68,19,11\n2,1,71,4,10,12\n71,1,4,1,22,1\n43,56\n91,9\n5,95,1\n47,46,2,1,1,3\n38,1,1,56,2,3\n13,7,53,26,1\n100\n100\n98,1\n3,47,50\n4,52,1,43\n84,1,16\n89,11\n88,12\n24,56,19,1\n84,13,3\n49,50\n66,34\n71,12,9,8\n31,69\n55,45\n73,14,2,5,5\n91,1,3,2,3\n35,45,3,17\n1,67,5,9,4,15\n80,19\n86,7,7\n59,41\n69,31\n27,65,7\n48,52\n31,2,67\n1,3,96\n67,6,11,7,8\n1,3,96\n96,4\n13,79,7\n7,86,4,3\n100\n4,79,11,6,1\n94,6\n63,23,14\n75,12,13\n92,2,6\n6,78,4,5,5,2\n100\n69,14,9,5,3\n76,24\n22,75,3,1\n7,61,12,20\n84,7,1,8\n38,2,4,1,27,26,2\n1,1,1,94,2\n95,5\n58,40,2\n46,54\n88,4,8\n100\n63,11,5,2,18\n50,50\n7,28,21,16,2,26\n1,1,38,50,5,5,1\n50,2,2,2,33,5,6\n34,1,2,3,60\n7,37,20,35\n11,21,1,5,63\n100\n100\n100\n93,7\n90,5,5\n3,97\n100\n10,86,4\n33,8,11,7,17,12,12\n17,4,6,4,16,3,47,3\n89,11\n67,9,12,6,7\n98,2\n100\n100\n44,5,21,16,14\n99,1\n9,89,2\n90,6,4\n3,97\n5,67,10,16,1,1\n18,82\n17,83\n100\n1,99\n43,9,5,1,12,30\n57,1,6,2,6,28\n15,15,2,35,15,1,10,5,3\n17,5,32,24,15,7\n36,18,45,1\n3,22,26,7,1,5,6,22,8\n59,2,5,5,30\n58,12,30\n16,61,7,15\n5,16,23,1,1,38,16\n100\n8,48,20,20,2,2\n5,29,6,4,22,7,23,3\n27,20,53\n23,61,1,14\n93,1,6\n85,1,3,4,6\n84,16\n9,6,74,12\n100\n100\n3,5,30,2,1,6,31,9,13\n48,2,2,18,13,16\n62,2,3,16,17\n27,23,6,44\n1,99\n100\n1,19,24,56\n1,11,8,1,3,10,66\n55,13,22,9\n78,22\n8,92\n100\n25,75\n24,76\n100\n1,98\n61,33,6\n1,92,6\n10,90\n20,75,5\n4,8,13,24,47,4\n3,3,11,83\n41,59\n42,42,16\n29,5,4,20,42\n100\n100\n7,90,2\n39,10,10,40\n100\n89,11\n1,2,97\n23,76,1\n55,13,1,25,6\n70,19,10,2\n33,52,1,2,5,7\n2,1,97\n100\n10,90\n100\n4,49,39,8\n85,14\n26,64,9,1\n42,9,2,2,44\n29,46,15,11\n3,4,2,2,32,25,22,9\n67,33\n2,3,4,13,58,1,6,5,8\n68,9,7,16\n10,78,12\n2,66,7,9,15\n4,37,8,52\n88,11\n88,11\n100\n100\n62,38\n9,14,51,23,3\n21,51,4,13,11\n2,98\n12,88\n5,95\n11,89\n1,2,97\n2,2,7,2,3,83\n100\n1,46,53\n100\n81,19\n44,38,4,14\n55,14,31\n91,9\n17,9,7,67\n1,16,84\n4,76,15,5\n100\n100\n91,1,2,2,4,1\n95,5\n100\n100\n1,19,80\n25,74\n24,69,6,1\n60,40\n1,7,1,76,16\n17,79,3\n13,1,80,6\n52,1,47\n1,1,3,1,95\n27,3,70\n19,6,76\n47,1,39,13\n1,99\n15,12,73\n100\n6,3,17,8,3,9,4,1,1,3,46\n34,5,4,19,18,2,1,16\n3,97\n6,20,5,31,3,8,3,3,11,11\n66,13,7,14\n83,1,1,1,8,5\n1,99\n6,94\n30,33,6,30\n51,8,9,10,22\n13,37,50\n43,57\n3,22,28,4,12,31\n17,7,7,18,50\n76,17,7\n22,77,1\n3,76,21\n92,5,1,1\n2,14,3,7,3,1,14,56\n84,1,15\n100\n5,79,5,11\n87,13\n78,4,4,14\n62,5,27,3,4\n1,1,1,40,36,18,4\n8,92\n29,71\n70,30\n77,23\n43,20,14,2,20\n100\n2,98\n24,75\n25,11,8,32,24\n83,2,15\n2,22,51,25\n10,4,25,59\n12,25,28,1,33\n6,18,5,30,37,1,3\n5,1,9,9,10,9,39,16,2\n100\n7,82,11\n15,85\n53,2,2,3,4,9,5,21\n1,10,25,22,37,6,1\n58,1,38,1,1,1\n71,9,12,6\n16,4,2,6,24,1,47\n4,48,7,41\n27,6,68\n82,3,4,1,2,2,1,5\n2,52,46\n82,1,16\n81,19\n1,5,45,49\n83,17\n21,78,1\n11,25,5,8,7,8,36\n88,11\n10,1,88\n24,7,69\n67,2,12,19\n49,51\n8,23,30,22,16\n16,66,7,4,6\n3,10,4,9,7,5,61\n3,66,6,7,17\n2,29,27,25,18\n100\n12,88\n100\n100\n1,6,3,50,39,1\n1,4,95,1\n2,1,97\n4,5,91\n2,2,95\n15,45,40\n20,15,32,4,29\n65,35\n9,1,2,62,26\n100\n58,42\n2,98\n4,8,4,4,4,75\n24,75\n34,65\n33,67\n13,11,1,76\n21,8,36,8,26\n64,1,35\n100\n100\n37,63\n30,1,70\n54,46\n62,39\n33,8,5,1,54\n100\n100\n100\n61,39\n100\n13,52,34\n9,33,3,54\n45,54,1\n41,59\n15,23,62\n9,12,79\n53,2,44\n37,63\n11,9,8,72\n100\n2,7,2,88\n100\n21,79\n100\n98,2\n16,16,63,1,1,1,1\n96,4\n99,1\n71,9,9,10\n100\n100\n3,97\n100\n99,1\n100\n13,87\n2,12,11,5,58,11\n100\n98,3\n8,89,4\n100\n14,27,15,1,42,1\n42,8,49,2\n100\n4,55,1,41\n100\n11,86,1,1,2\n10,90\n100\n100\n1,86,13\n2,2,90,6\n100\n4,96\n8,79,1,10,1,1\n68,3,5,24\n2,30,30,38\n13,55,32\n2,4,2,2,90\n36,18,6,9,13,6,6,4\n25,37,33,4\n100\n28,72\n100\n100\n100\n100\n100\n100\n100\n28,72\n28,72\n100\n100\n1,99\n37,62\n73,10,2,15\n100\n7,2,2,4,10,5,69\n100\n36,26,38\n43,14,43\n2,97\n5,21,4,70\n99,1\n18,1,80,1\n13,86\n71,29\n34,66\n16,1,6,7,2,6,63\n80,5,15\n3,3,15,14,65\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n71,29\n61,39\n100\n100\n83,3,3,1,3,5\n46,4,3,6,17,19,2,2\n12,34,31,23\n4,45,26,14,5,5\n64,7,3,1,2,13,4,1,2,1,3\n72,28\n100\n8,1,36,55\n1,32,67\n17,83\n1,71,27,1\n100\n1,6,93\n96,4\n87,2,3,8\n100\n87,1,1,11\n77,18,2,1,3\n95,1,2,2\n36,32,7,4,9,9,2\n72,6,10,2,9\n8,7,36,44,5\n87,1,11\n21,79\n1,47,38,13\n98,2\n99,1\n100\n100\n68,32\n12,88\n54,1,1,12,32\n37,14,2,5,42\n16,84\n27,28,2,3,1,1,2,4,9,22\n80,1,5,14\n100\n100\n100\n1,8,5,26,32,9,3,4,13,1\n3,95,2\n3,6,1,1,1,3,47,8,30,1\n20,2,12,8,56\n59,41\n5,2,93\n57,3,5,6,2,2,25\n4,13,6,4,36,5,2,3,12,9,6\n34,14,6,23,4,4,4,5,5,1\n100\n100\n100\n100\n100\n100\n49,51\n1,1,8,11,5,1,13,36,24\n9,9,5,7,18,7,7,18,7,5,9\n25,25,25,25\n1,19,80\n6,50,37,6\n32,44,22,1\n72,28\n100\n61,7,9,17,6\n100\n100\n4,1,30,13,52\n100\n6,3,39,10,32,10\n100\n100\n83,17\n77,2,13,1,1,1,1,1,1,1,1\n9,62,2,9,18\n81,18,1\n31,69\n17,36,7,3,1,1,25,9\n13,11,20,56\n83,17\n67,1,19,13\n100\n58,42\n95,2,4\n32,68\n24,76\n100\n32,68\n2,98\n26,74\n35,19,4,1,6,4,1,12,17\n26,1,67,1,3,1\n29,8,10,27,1,25\n36,17,20,26\n52,4,2,16,26\n100\n4,34,55,7\n20,43,37\n1,61,25,2,10\n66,34\n21,23,6,6,20,3,21,1\n4,61,34\n40,60\n8,90,2\n46,47,1,6\n1,55,9,13,5,11,6\n72,3,6,20\n89,6,3,2\n88,12,1\n1,13,86\n69,31\n29,25,9,19,17\n33,9,45,7,6\n100\n100\n89,11\n48,28,13,2,8\n49,20,20,11\n8,46,46\n70,28,1\n59,41\n88,10,3\n64,1,35\n45,55\n33,31,1,35\n6,34,26,31,3\n69,9,22\n60,40\n73,27\n96,4\n98,2\n48,7,1,44\n37,26,37\n100\n100\n100\n100\n95,5\n95,4,1\n100\n100\n82,6,1,2,1,2,2,1,1,3\n18,48,2,1,2,29,1\n5,79,1,2,1,10,1\n46,49,6\n14,81,4\n94,6\n1,85,4,8,2\n44,2,9,1,1,29,8,2,1,2\n96,1,3\n91,7,1,1\n5,95\n100\n99,1\n100\n100\n96,4\n100\n100\n100\n100\n92,8\n75,25\n54,35,4,6\n2,27,46,24\n28,1,1,5,64\n27,2,3,1,3,1,62\n22,13,44,5,15,1\n38,10,14,8,14,16,1\n1,98,1\n9,91\n14,86\n8,16,4,6,62,2,1,2\n1,1,37,11,4,42,3\n53,47\n85,5,3,7\n1,15,57,27\n21,9,6,64\n28,12,17,43\n21,27,1,47,3\n19,28,54\n18,20,1,61\n2,5,3,3,2,4,3,7,1,3,1,10,43,13\n6,2,3,3,10,5,11,13,16,31\n3,1,3,5,4,4,6,75\n7,1,1,2,6,82\n94,1,5,1\n3,1,94,2\n1,1,98\n100\n91,9\n100\n100\n15,85\n17,83\n100\n6,5,1,1,88,1\n7,4,88\n2,90,8\n28,5,1,66\n33,67\n41,1,57,1\n32,1,1,2,63\n41,3,56\n3,45,2,50\n3,97\n46,1,17,7,1,9,9,10\n2,17,1,79\n14,1,13,72\n10,6,83,2\n100\n100\n9,91\n9,91\n1,14,2,3,2,55,23\n44,6,6,11,16,18\n13,81,7\n7,20,1,72\n3,9,88\n100\n5,95\n100\n3,85,12\n22,23,54\n2,46,44,7\n54,5,42\n1,1,22,76\n3,14,7,65,8,2,2\n4,24,26,4,43\n100\n94,6\n99,1\n95,5\n100\n9,17,74\n10,9,13,12,2,54\n17,17,6,19,33,4,1,1,2\n87,13\n100\n100\n100\n100\n18,2,1,8,71\n4,2,2,12,3,14,7,16,11,28\n100\n81,19\n4,96\n100\n5,95\n38,8,12,24,8,9\n64,36\n100\n75,25\n4,12,84\n94,6\n100\n11,1,1,45,43\n100\n13,7,27,6,7,30,3,3,3,2\n100\n100\n100\n100\n50,50\n100\n13,87\n63,13,24\n9,49,42\n1,88,11\n85,3,3,10\n1,1,52,17,19,1,3,1,2,5\n100\n30,67,3\n100\n96,4\n58,34,8\n15,44,7,17,16,1\n28,13,43,8,8\n100\n100\n76,24\n100\n100\n46,47,7\n100\n100\n100\n2,98\n1,14,14,39,19,2,10,2\n66,5,29\n1,99\n100\n100\n100\n10,90\n12,4,84\n36,64\n24,26,42,1,3,3\n100\n100\n100\n5,95\n3,3,4,46,43\n73,26,1\n42,15,5,30,7\n1,1,66,33\n1,34,65\n99,1\n1,1,1,91,2,5\n99\n95,5\n88,7,5\n8,2,9,76,5\n4,1,20,50,2,12,11,1\n100\n3,1,92,1,3\n2,30,6,41,1,6,11\n3,1,26,60,1,4,2,1,4\n16,79,4\n41,2,31,8,7,10\n34,1,6,57,2\n13,7,3,10,9,55,2\n12,71,1,13,2,2\n9,74,12,5\n100\n97,2\n15,30,23,2,5,1,25\n16,26,24,3,32\n54,32,1,3,1,8\n59,3,25,7,2,5\n2,8,87,2,1\n94,5\n61,37,2,1\n73,22,5\n80,1,9,11\n66,5,1,2,27\n88,11\n91,1,7,1\n45,4,1,1,1,49\n8,5,6,81\n17,16,7,61\n78,22\n1,1,77,15,6\n79,7,3,2,3,5\n83,13,4\n100\n99,1\n100\n4,3,3,2,17,4,19,32,8,3,1,4\n50,50\n57,43\n100\n11,5,9,3,3,14,13,7,9,9,1,16\n9,70,6,6,7,2\n1,5,5,15,73\n83,17\n10,30,59\n10,6,84\n100\n8,47,18,13,15\n97,4\n83,17\n100\n25,45,30\n44,5,16,35\n14,85,1\n100\n61,12,2,25\n51,49\n59,41\n22,56,22\n1,1,7,90\n44,56\n1,86,9,3,1\n100\n72,28\n27,6,66\n80,20\n3,4,94\n6,56,12,24,1\n56,10,34\n2,98\n100\n100\n42,4,3,7,9,35\n19,52,5,22,1,1\n100\n3,3,94\n7,9,17,12,17,38\n22,15,61,1,1\n100\n99\n71,28\n88,12\n20,3,76\n3,5,49,43\n13,28,59\n8,4,27,60\n1,99,1\n100\n28,5,3,14,2,4,6,36\n15,15,1,2,30,18,15,2,1\n100\n28,12,18,12,30\n96,2,2,1\n32,4,37,9,5,2,7,1,3\n1,50,10,20,6,8,4\n100\n6,1,2,52,38\n10,78,2,1,1,3,1,1,2\n81,1,18\n1,53,4,34,7\n1,27,55,16\n7,9,7,47,20,11\n7,2,2,8,19,30,2,3,6,5,4,8,4\n36,28,36\n4,1,10,1,84\n1,2,2,2,3,22,9,8,11,40\n4,96\n100\n1,15,84\n78,7,15\n63,31,1,5\n27,13,41,10,10\n10,32,58\n82,18\n8,82,9\n1,99,1\n5,3,16,23,52,1,1,1\n100\n10,13,19,51,7,1\n38,62\n94,5,1\n4,24,72\n7,23,13,56\n73,22,5\n76,24,1\n100\n100\n100\n100\n97,3\n100\n100\n41,58,1,1\n64,21,14\n33,56,10\n80,3,4,13\n100\n100\n11,46,43\n20,26,53\n42,58\n100\n100\n23,39,38\n56,44\n100\n61,39\n25,74\n79,21\n100\n100\n100\n5,88,7\n100\n100\n82,1,17\n100\n100\n100\n18,11,71\n100\n86,14\n60,10,30\n9,31,1,4,14,40\n100\n1,3,2,56,2,2,3,7,3,4,2,9,4,2\n16,6,18,33,27\n24,30,17,29\n31,69\n99,1\n20,80\n100\n68,32\n100\n22,3,1,74\n53,47\n100\n61,39\n20,80\n100\n72,28\n14,7,9,7,8,1,1,1,1,13,5,12,18,4\n4,2,94\n66,12,4,1,17\n45,10,43,2\n9,41,35,14\n5,7,88\n61,38\n56,42,2\n3,17,22,15,43\n22,17,34,14,14\n16,84\n3,5,91\n2,3,5,8,10,9,1,6,22,14,4,4,4,5,4\n23,8,3,10,56\n33,8,11,6,23,1,7,1,5,1,5\n90,3,3,1,4\n14,1,7,7,4,5,61\n64,13,9,10,4\n1,1,99\n8,43,36,13\n21,14,64\n100\n92,3,3,1,1\n100\n100\n100\n36,7,56\n3,29,68\n6,2,3,89\n1,5,4,43,10,38\n4,6,2,18,9,43,17\n8,60,32\n45,2,52\n40,10,50\n3,97\n2,98\n94,6\n93,7\n12,87,1\n100\n100\n100\n21,79\n100\n8,75,17\n100\n52,1,1,46\n100\n52,47\n56,44\n100\n100\n100\n18,67,13,3\n100\n53,24,13,10\n86,14\n90,2,3,5\n100\n81,19\n100\n13,2,2,11,2,34,32,4\n21,79\n23,3,13,61\n85,2,1,3,6,4\n3,5,92\n86,11,3\n4,43,29,3,3,2,8,8\n100\n100\n98,2\n83,1,1,15\n19,61,8,12\n34,66\n1,23,66,9\n17,2,11,17,39,3,6,2,3,1\n74,2,2,6,7,5,5\n11,3,1,2,11,13,11,18,26,2\n4,3,1,28,15,7,17,23\n1,99\n100\n37,63\n43,57\n93,7\n12,2,11,75\n9,14,20,13,10,34\n96,2,2\n64,34,2\n86,14\n80,4,4,12\n100\n97,1,1,2\n5,5,6,31,33,6,9,3\n25,63,11\n47,53\n100\n98,2\n97,1,3\n71,29\n83,17\n1,99\n96,2,1,1\n37,10,33,20\n100\n61,39\n2,87,4,6\n5,1,1,3,1,88\n1,3,50,28,9,10\n1,85,1,1,13\n44,6,34,2,6,4,4,1\n64,31,1,4\n1,1,1,1,1,64,31\n3,25,27,6,8,8,24\n2,72,4,11,1,1,7,1\n1,3,94,1\n1,6,6,5,52,30\n15,40,45\n22,51,26\n25,19,56\n1,34,65\n7,6,9,77\n100\n75,1,2,22\n66,25,7,1,1\n22,57,1,11,8\n9,16,54,21\n58,42\n49,51\n100\n16,84\n100\n100\n61,18,13,8\n100\n100\n87,13\n100\n100\n90,3,3,1,1,1\n79,3,9,3,3,2\n100\n100\n100\n100\n3,4,93\n100\n100\n62,38\n41,46,14\n100\n100\n100\n100\n100\n75,4,13,2,3,2,1\n100\n100\n100\n2,2,2,6,77,11\n10,39,28,1,20,2\n94,6\n20,80\n5,2,93\n1,99\n5,6,4,4,33,23,25,1\n1,1,98,1\n100\n1,94,5\n53,22,25\n1,26,66,2,5\n49,24,24,1,1\n24,63,13\n32,68\n1,89,10\n25,32,19,3,21\n100\n100\n100\n100\n53,36,1,5,5\n57,1,3,39\n77,23\n1,55,1,43\n60,40\n14,51,8,8,1,13,3,2\n100\n43,18,20,8,6,1,1,2\n100\n4,96\n100\n81,19\n80,20\n20,80\n63,37\n100\n100\n36,2,19,3,1,20,3,3,1,11\n52,9,17,7,15\n7,13,12,2,16,1,6,1,1,41\n57,42,1\n1,99\n100\n100\n100\n45,24,31\n36,30,35\n5,95\n18,82\n1,74,15,9,1\n2,3,2,3,6,6,12,6,5,8,3,10,22,11,1\n23,24,54\n1,87,12\n100\n21,52,22,4\n4,8,8,29,24,6,12,4,5\n100\n100\n19,3,6,60,12\n53,47\n100\n53,3,43\n37,63\n100\n86,14\n37,63\n23,1,76\n21,2,77\n100\n74,26\n12,88\n17,48,34\n86,14\n74,26\n100\n2,15,7,76\n11,11,37,41\n100\n12,71,17\n9,85,5\n50,50\n26,26,3,45\n100\n99,1\n100\n57,43\n10,38,39,13\n91,1,1,1,1,5\n93,3,1,2,1,1\n4,4,49,43\n69,12,8,2,8\n100\n100\n51,1,49\n100\n9,7,3,12,31,37\n95,5\n46,17,18,18\n25,7,10,15,7,35\n73,27\n36,9,5,1,4,46\n5,23,37,5,29\n22,6,16,52,3\n69,31\n91,9\n50,1,49\n60,20,16,4\n27,39,26,8\n67,33\n73,27\n75,25\n100\n100\n96,4\n100\n100\n78,4,1,1,4,12\n9,6,16,3,66\n47,16,9,15,12\n100\n85,15\n100\n100\n8,20,32,39\n96,4\n4,96\n41,2,57\n100\n84,11,5\n5,95\n1,11,11,23,51\n2,76,22\n1,1,1,38,24,11,24\n100\n100\n100\n100\n8,8,6,54,24\n100\n100\n32,66,2\n100\n100\n100\n100\n82,18\n12,15,18,1,7,7,4,3,34\n98,2\n32,36,1,9,1,21\n12,88,1\n100\n28,72\n87,3,10\n100\n4,28,4,64\n100\n11,89\n100\n43,3,55\n43,57\n93,8\n2,98\n26,74\n47,10,10,3,4,8,11,4,3\n81,19\n31,5,3,39,23\n3,97\n42,58\n32,68\n72,11,16\n5,2,2,19,6,3,23,12,5,13,5,6\n44,4,27,3,6,15\n100\n2,79,18,2\n11,89\n93,7\n84,10,7\n12,44,41,2\n26,74\n14,85,1\n94,6\n100\n100\n84,16\n9,48,27,10,6\n2,4,43,51\n38,62\n14,20,66\n10,7,6,7,10,8,4,43,4\n20,23,56\n32,54,10,5\n30,62,8\n100\n1,5,1,4,3,69,1,17,1\n86,1,1,13\n1,6,1,91,1\n84,14,1\n94,6\n65,35\n100\n64,20,4,12\n100\n89,11\n88,9,3\n12,1,6,2,79\n19,6,75\n100\n100\n100\n100\n100\n100\n1,5,6,1,83,5\n71,17,3,3,6\n100\n62,14,24\n8,71,20,1,1\n75,21,4\n80,11,10\n4,26,70\n95,4,1\n33,16,39,12\n1,63,24,11\n40,13,20,26\n1,1,1,1,97\n5,16,41,1,30,8\n6,94\n4,17,9,70\n1,44,55\n100\n5,1,1,11,48,5,8,8,4,5,2,1\n52,5,6,3,9,4,21\n86,14\n7,8,8,10,6,60\n45,55\n78,22\n100\n100\n100\n82,2,2,1,14\n100\n100\n11,2,2,1,10,2,17,9,4,15,3,23\n58,42\n100\n3,29,68\n100\n18,15,28,28,12\n1,1,3,69,26\n31,2,3,2,62\n1,99\n1,85,15\n100\n100\n96,2,2\n82,18\n30,33,2,14,15,5,1\n42,16,23,2,1,16\n15,53,30,1\n1,11,85,1,1,1\n1,20,1,11,27,16,24\n9,30,61\n8,31,61\n7,3,9,5,75\n2,6,7,5,4,5,4,68\n5,6,2,4,6,2,25,50\n9,1,2,34,53\n86,14\n100\n1,99\n44,20,36\n4,38,53,5\n3,39,54,4\n12,79,3,7\n35,57,9\n13,87\n2,5,3,89\n7,93\n5,95\n9,2,89\n3,97\n42,5,1,1,50\n27,3,9,24,6,31\n17,30,54\n18,1,38,44\n5,3,4,13,74\n1,1,42,56\n1,42,57\n33,67\n61,39\n51,49\n94,1,4\n4,3,33,60\n3,15,14,1,67\n100\n3,38,3,56\n29,2,69\n23,77\n1,1,98,1\n35,65\n42,58\n1,12,23,63\n1,12,1,86\n13,86\n1,99\n15,1,1,3,2,1,5,53,7,11\n14,15,8,8,4,7,2,41\n39,2,1,57\n47,53\n9,91\n100\n11,13,24,26,8,18\n47,8,3,5,38\n1,2,1,15,11,34,37\n7,5,9,4,1,73\n9,15,13,1,7,55\n4,2,1,5,88\n12,88\n100\n98,2\n100\n9,84,6\n63,4,4,2,2,6,19\n5,11,7,3,74\n1,31,5,12,4,5,42\n59,19,14,7,1\n80,10,9,1\n21,57,21,1\n6,2,3,2,3,84\n1,98\n100\n18,7,16,6,3,3,4,2,8,2,7,6,2,1,3,2,3,6\n1,1,1,2,22,41,16,17\n39,8,8,45\n92,8\n49,51\n40,60\n2,1,11,30,55\n1,75,24\n1,84,15\n100\n100\n94,6\n100\n23,77\n100\n18,72,1,9\n100\n95,5\n100\n100\n77,2,15,1,6\n4,14,25,2,8,48\n2,98\n92,7,1\n50,39,11\n12,78,1,1,1,1,7\n78,7,15\n15,85\n37,63\n9,85,6\n46,23,30\n92,6,2\n99\n3,3,94\n90,10\n69,31\n28,20,51\n100\n20,80\n18,3,1,1,2,5,17,54\n100\n100\n29,15,17,10,29,1\n100\n3,3,2,6,85\n100\n99,1\n97,2,1\n100\n3,1,3,93\n100\n100\n100\n7,1,93\n94,6\n7,70,23\n1,6,6,23,8,15,13,27\n55,45\n9,1,2,24,31,11,22\n5,90,6\n5,9,24,28,8,25\n38,5,51,7\n100\n95,5\n15,34,4,7,7,5,19,9\n1,10,27,4,3,48,7\n100\n10,90\n19,81\n25,9,17,18,28,2\n1,93,6\n2,91,5,1\n6,12,4,23,10,10,27,3,3,2\n16,12,21,22,6,8,11,4\n4,96\n6,2,3,2,6,8,2,70\n32,68\n15,85\n8,4,9,8,18,53\n97,3\n100\n15,11,65,2,6\n15,14,39,7,25\n39,19,42\n2,9,5,4,26,21,16,18\n99,1\n93,2,4\n22,5,23,50\n16,3,16,36,29\n81,19\n10,5,9,69,7\n48,38,4,9\n4,72,20,4\n16,84\n30,2,68\n80,14,6\n2,79,1,1,6,8,4\n84,2,1,1,12\n68,18,13,1\n93,2,2,3\n87,13\n19,71,10\n100\n100\n100\n51,2,47\n8,1,1,27,1,44,1,6,10\n100\n100\n100\n33,19,47,1\n27,9,7,30,27\n86,14\n2,2,1,20,53,23\n100\n26,60,2,12\n4,96\n85,13,2,1\n100\n100\n11,89\n9,39,4,30,19\n1,15,85\n5,19,73,3\n5,1,21,13,40,1,19\n93,7\n28,62,10\n88,12\n2,96,2\n93,4,3\n5,62,34\n100\n11,31,9,15,33\n6,94\n42,58\n100\n22,8,38,33\n1,13,80,6\n22,20,3,55\n5,39,15,40\n79,21\n4,1,95\n3,5,3,4,5,80\n18,1,1,80\n1,99\n100\n8,6,19,36,28,3\n88,12\n2,19,79\n1,3,3,92\n100\n6,3,34,8,20,15,14\n77,5,11,6\n69,24,6\n57,6,34,3\n4,66,2,27,1\n94,6\n95,5\n11,5,41,39,4\n89,11\n100\n100\n99\n60,7,14,19\n47,5,2,1,45\n60,6,34\n11,15,4,19,11,4,3,1,1,15,18\n7,3,33,4,2,1,2,4,1,42\n100\n3,4,68,20,5\n3,80,10,8\n94,6\n94,6\n29,5,9,3,17,21,2,2,1,6,1,2,2\n44,7,8,1,6,15,3,1,7,7\n1,99\n10,90\n31,68,1\n1,4,1,29,21,24,10,11\n89,1,10,1\n98,1,1,1\n100\n100\n50,50\n29,71\n3,7,2,39,5,16,28\n3,21,17,30,29\n100\n80,18,2\n53,1,17,29\n74,25,1\n100\n1,88,11\n2,1,3,1,93\n25,1,3,71\n100\n100\n100\n100\n92,8\n1,99\n23,77\n68,1,31\n100\n100\n97,1,1,1\n31,11,20,10,27\n1,34,59,6\n52,26,1,17,1,3\n47,53\n1,1,98\n100\n100\n100\n20,79\n17,83\n9,91\n26,38,1,35\n10,41,1,1,12,2,32\n18,82\n8,92\n56,44\n100\n100\n100\n12,9,53,20,7\n13,77,10\n5,95\n100\n31,34,11,23\n18,63,4,1,15\n32,68\n77,23\n52,48\n4,95,1\n99,1\n53,13,6,14,12\n80,20\n100\n11,52,28,4,2,1\n12,10,19,38,5,9,8\n2,9,4,85\n47,53\n5,17,5,30,31,12\n100\n6,3,91\n96,4\n84,16\n90,1,2,8\n99\n2,1,5,91\n77,22\n9,16,21,22,16,17\n100\n100\n87,13\n86,14\n100\n92,8\n99,1\n3,24,19,8,11,6,9,19\n1,76,7,17\n98,1,1,1\n28,64,8\n1,67,33\n99,1\n1,99,1\n25,9,52,13\n100\n60,1,40\n1,2,3,3,85,2,2\n11,1,2,2,3,1,78\n100\n100\n6,3,21,17,4,4,41,1,2\n44,3,3,3,23,9,15\n64,11,19,5\n1,98\n27,16,47,10\n4,8,84,3,1\n18,70,12\n82,18\n14,1,86\n100\n33,34,23,10\n20,80\n2,2,1,1,2,92\n3,2,96\n84,16\n100\n100\n22,78\n16,1,3,1,1,4,1,73\n100\n73,1,21,5\n3,2,3,74,18\n100\n78,22\n5,8,12,54,21\n59,30,11\n34,27,24,15\n100\n100\n100\n100\n100\n100\n100\n100\n75,25\n44,56\n83,16\n44,18,39\n43,57\n69,31\n100\n32,47,17,3,1\n56,4,35,5,1,1\n100\n3,49,48\n100\n5,52,11,17,14\n60,4,12,15,9\n42,39,6,12\n22,1,45,13,5,14\n31,1,33,34\n100\n100\n100\n100\n100\n100\n80,20\n100\n100\n15,15,71\n100\n98,2\n48,27,1,1,3,15,5\n100\n100\n38,1,27,25,9\n1,5,6,21,6,1,8,51\n9,41,7,22,21\n100\n67,33\n2,19,20,54,1,4\n100\n100\n32,68\n75,1,3,4,3,6,6,1\n95,5\n36,31,5,28\n33,22,37,9\n2,1,97\n7,1,92\n74,18,8\n1,95,4\n75,1,12,12\n27,73\n100\n28,61,10,1\n15,28,15,41\n22,37,3,37\n1,31,20,23,23,1,2,1\n25,13,6,13,16,27\n21,47,19,6,8\n75,21,5\n61,39\n17,5,8,42,27\n11,13,11,23,34,4,5\n1,13,3,14,52,3,3,11\n23,1,3,3,3,26,39,3\n69,31\n90,9\n44,50,1,5,1\n1,1,47,34,18\n25,75\n15,49,6,29\n71,29\n100\n20,9,71\n1,24,70,5\n36,16,46,3\n15,10,23,7,44,1\n1,1,1,18,1,8,71\n39,27,33,1\n66,4,22,3,1,3\n28,4,30,3,32,1,2\n1,75,23\n100\n4,96\n31,68\n14,86\n10,4,17,37,4,4,25\n100\n4,96\n84,16\n11,29,19,36,1,1,2,1\n7,3,90\n12,64,1,18,4\n90,9,1\n15,15,8,28,14,8,4,4,3\n99\n1,45,55\n19,80,1\n16,2,1,37,27,7,10\n40,3,24,32\n37,27,25,11\n2,97,1\n100\n9,6,85\n47,30,4,19\n3,97\n50,50\n9,33,1,7,3,5,11,10,7,13\n33,20,23,11,12\n45,6,47,1,1\n10,8,45,37,1\n14,3,6,2,45,11,4,11,3,1\n32,3,1,14,1,3,1,46\n100\n100\n29,3,1,67\n1,1,23,5,2,6,60,1\n40,42,18\n100\n100\n49,51\n23,12,1,2,6,3,1,3,11,39\n100\n25,74\n77,2,2,19\n100\n95,5\n7,15,42,2,2,1,1,1,2,10,17\n12,17,5,37,21,1,1,1,6\n97,3\n1,99\n1,3,1,1,95\n99,1\n24,76\n100\n100\n7,44,8,11,8,23\n1,41,30,29\n21,15,19,25,15,5\n3,10,14,3,49,21\n14,34,51\n100\n24,17,45,11,3\n90,2,8\n8,92\n10,61,4,6,18,2\n16,11,13,31,29\n9,4,55,20,11\n48,4,3,45\n4,4,91\n11,87,3\n95,5\n98,1\n100\n100\n94,3,1,1\n50,11,39\n29,71\n100\n26,74\n100\n31,2,67\n61,5,21,13\n12,1,8,4,50,12,12\n100\n100\n100\n30,70\n100\n43,57\n93,1,3,3\n100\n94,6\n100\n100\n96,4\n43,57\n78,1,15,6\n88,9,3\n51,1,1,46\n68,32\n8,26,17,1,1,2,1,36,5,1,2\n5,4,2,6,25,8,16,15,10,3,3,3\n16,82,2\n100\n86,5,9\n8,46,47\n26,1,12,20,13,8,5,6,1,8\n1,3,1,22,34,20,9,1,9,1\n18,51,30\n81,19\n36,53,8,3\n100\n79,21\n13,6,9,72\n17,12,1,68,1\n10,8,81\n13,85,1\n46,53\n46,1,2,4,47\n7,93\n99\n1,99\n90,1,2,7\n100\n90,4,6\n53,8,40\n100\n8,65,26\n1,99\n16,84\n11,89\n100\n100\n95,3,3\n3,1,96\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n100\n2,3,21,75\n72,12,16\n10,90\n26,23,50\n100\n100\n100\n80,4,1,1,3,2,2,2,3,3\n100\n100\n61,15,18,5,1\n22,29,5,10,30,4\n18,60,9,6,7\n15,82,3\n23,10,20,2,35,3,6\n53,10,6,31\n88,13\n1,3,19,2,4,71\n10,17,6,21,20,6,1,19\n95,5\n99,1\n29,2,69\n21,78\n100\n78,22\n1,68,31\n2,4,8,85\n9,15,75\n1,99\n99,1\n100\n85,15\n100\n33,4,59,4\n89,11\n65,35\n34,10,56\n1,61,34,4\n1,2,21,65,6,1,3,1,1\n21,63,9,2,5\n92,7\n3,3,14,3,42,10,24\n88,11\n68,12,8,12\n1,15,1,83,1\n33,2,29,35\n25,12,13,17,34\n100\n1,98,1\n100\n91,9\n84,16\n83,17\n70,5,7,18\n1,2,1,1,1,1,1,3,10,2,11,1,3,3,13,37,10\n67,33\n17,12,4,4,17,5,6,4,30\n17,3,3,2,1,2,70,1\n16,5,75,3\n81,19\n42,25,33\n28,28,23,21\n23,21,56\n65,35\n21,39,2,35,3\n32,68\n16,7,6,70\n10,23,67\n34,66\n11,89\n87,13\n100\n1,35,64\n12,79,3,1,1,4,1\n59,3,4,20,1,3,1,1,10\n9,91\n100\n100\n82,18\n100\n97,3\n100\n100\n100\n100\n100\n12,11,75\n100\n31,69\n100\n2,2,3,93\n81,18,1\n100\n100\n41,51,9\n59,9,10,1,1,10,2,3,2,2\n67,1,19,3,6,4\n20,74,6\n60,31,5,3\n92,2,6\n65,13,8,14\n59,1,27,13\n22,53,3,6,15\n3,79,19\n17,66,2,15\n85,1,14,1\n71,1,28,1\n19,6,16,60\n100\n100\n2,21,75,3\n99\n100\n3,47,19,32\n100\n100\n100\n21,50,8,20\n66,4,30\n1,3,96\n100\n35,15,4,6,1,2,12,4,11,8,1\n24,76\n76,24\n3,97\n27,66,1,7\n74,1,2,5,1,7,11\n6,3,32,16,7,19,13,5\n77,7,13,3\n12,3,33,12,39\n2,1,97\n1,3,1,10,85\n10,90\n1,72,6,21\n3,43,53\n100\n100\n100\n20,80\n100\n100\n100\n100\n13,86\n50,24,13,13\n13,87\n21,52,6,21\n5,95\n100\n95,5\n61,39\n52,2,46\n3,97\n92,2,7\n73,6,5,1,8,8,1\n100\n100\n8,92\n39,61\n14,10,6,13,6,47,5\n1,2,1,2,8,9,24,1,9,8,36\n28,2,2,21,6,33,5,4\n12,88\n62,5,34\n100\n1,1,2,95\n2,3,4,38,23,29\n93,7\n26,7,4,64\n16,80,4\n100\n67,1,2,30\n100\n100\n100\n100\n80,20,1\n1,1,9,7,5,77\n2,57,13,13,4,9,2\n71,10,17,1\n100\n100\n100\n4,2,3,22,8,50,11\n5,10,10,1,73\n3,65,33\n9,1,2,13,75\n66,34\n97,3\n100\n58,42\n100\n100\n100\n41,4,9,41,4\n12,42,4,22,8,1,9,3\n30,58,11,2\n65,35\n100\n100\n100\n11,11,6,3,3,26,28,4,9\n56,5,2,2,2,33\n55,45\n25,75\n1,8,4,80,8\n3,33,9,7,41,2,2,3\n100\n12,88\n100\n100\n100\n10,45,7,38\n54,46\n96,1,3\n13,13,22,24,5,22\n99,1\n100\n90,10\n55,45\n100\n19,20,50,10\n100\n2,14,84\n100\n12,49,3,23,13\n100\n42,11,40,7\n1,74,7,18\n100\n4,2,93,1\n9,2,56,32,1,1\n1,17,6,2,72\n30,3,3,23,39\n4,1,4,6,1,83,1,1\n23,28,24,25\n19,1,80\n32,3,11,4,4,45\n95,5\n17,82\n3,22,73\n26,73\n1,61,24,3,10\n3,6,44,46\n1,1,1,69,28\n25,75\n6,15,2,51,3,23\n1,65,18,16\n100\n4,74,21,1\n81,9,5,3,2\n21,23,1,7,49\n7,35,17,9,12,7,12\n80,6,3,3,9\n49,51\n100\n1,99\n77,2,15,6\n43,57\n50,23,1,27\n35,65\n100\n28,45,27\n100\n64,36\n100\n48,46,1,5\n31,1,6,61\n97,3\n100\n100\n100\n100\n13,4,74,8\n29,1,2,53,10,3\n5,5,11,80\n51,49\n55,19,14,12,1\n26,73\n11,84,6\n1,1,98\n100\n65,2,33\n81,8,6,6\n100\n84,1,15,1\n62,1,37,1,1\n1,4,82,1,7,5\n100\n100\n13,60,3,3,4,6,10\n1,99\n44,1,13,14,28\n41,2,26,31\n99\n9,4,87\n9,2,2,87\n74,26\n93,7\n85,12,3\n92,4,4\n1,83,3,1,12\n87,13\n82,12,6\n88,2,1,2,2,3,3\n26,35,39\n20,5,26,50\n100\n18,57,13,12\n5,73,22\n1,76,23\n75,1,1,1,23\n29,18,1,54\n12,4,5,1,79\n47,34,18\n54,11,11,15,10\n21,12,10,57\n1,15,36,9,12,28\n100\n8,9,84\n15,85\n37,59,4\n66,3,3,1,27\n18,16,11,4,28,22,1\n53,46,1\n11,9,1,2,13,16,2,9,9,1,8,8,10\n100\n48,13,38\n5,48,1,20,6,20,1\n100\n63,5,15,2,15\n4,96\n1,3,96\n4,3,17,33,42\n21,11,68\n95,5\n3,17,31,44,5\n91,9\n84,10,6\n81,19\n27,26,20,27\n100\n8,6,19,1,67\n8,1,1,1,29,9,1,3,1,21,3,24\n46,54\n52,48\n100\n8,34,50,8\n9,12,3,11,66\n84,14,2\n6,13,7,74\n95,3,1,2\n77,3,1,16,3\n100\n42,58\n49,51\n6,13,80\n5,7,11,16,13,10,7,4,15,5,8\n1,1,3,96\n91,3,5\n49,3,45,1,1\n30,3,30,8,21,8\n100\n72,14,14\n70,5,26\n8,92\n22,36,34,8\n5,95\n30,51,19\n4,1,3,1,2,4,3,82\n15,2,83\n100\n1,39,60\n16,84\n10,38,29,23\n1,99\n100\n100\n36,58,6\n100\n2,11,2,36,8,11,30\n100\n37,54,9\n2,6,23,17,1,5,18,29\n100\n34,10,56\n32,1,14,9,10,9,20,5\n6,40,26,5,3,20\n100\n100\n1,8,16,10,65\n3,26,17,51,2\n1,23,18,53,3\n1,50,30,8,3,1,7\n15,1,7,2,8,1,57,9\n12,24,65\n100\n100\n18,4,35,43\n7,32,60\n100\n100\n38,19,14,24,4\n14,33,24,24,4\n59,41\n19,1,18,1,3,19,1,31,4\n1,22,78\n100\n43,21,24,12\n100\n61,39\n3,31,4,5,22,1,1,1,2,31\n5,49,17,29\n13,12,7,1,1,2,1,3,1,1,34,2,2,1,3,16\n40,59\n54,36,9,1,1\n7,45,47\n81,19\n100\n34,10,4,5,1,1,1,4,1,1,1,2,14,11,5,5\n33,1,6,2,1,1,3,5,4,44\n37,7,56\n30,30,10,28,1,1,1\n7,1,20,23,49\n16,5,1,33,8,1,28,9\n71,29\n3,25,19,5,6,17,18,2,4,2\n24,46,29\n12,7,13,9,4,8,4,14,11,17\n21,1,3,1,6,7,21,6,14,17,1\n11,17,71\n1,27,10,1,62\n100\n28,6,6,49,12\n3,5,73,11,2,5\n100\n23,6,9,61\n23,36,6,5,5,8,18\n10,42,3,13,32\n12,9,24,29,19,7\n4,17,80\n5,46,21,1,1,27\n16,15,24,19,6,4,16\n8,19,22,21,8,4,2,3,12\n100\n1,88,4,3,5\n100\n1,99\n15,85\n90,1,1,7,1\n5,20,10,3,48,15\n39,36,2,20,2\n1,9,13,13,22,23,18\n13,9,9,10,21,39\n55,45\n85,15\n4,31,23,40,2\n100\n16,4,2,8,8,10,33,18\n7,5,9,1,7,5,32,34\n1,98,1\n1,20,45,1,23,10,1\n44,1,6,50\n22,5,11,1,1,60\n6,6,2,56,23,7\n12,88\n14,1,60,25\n1,1,1,75,22\n2,6,3,15,3,6,4,57,4\n7,1,91\n1,12,14,22,9,32,5,6\n16,41,9,6,3,4,18,2\n4,14,15,2,5,19,19,21\n4,9,8,20,20,3,4,3,11,3,14\n20,1,33,1,6,13,26\n31,35,22,1,1,10\n47,53\n7,11,4,1,77\n85,15\n1,21,6,17,18,37,1\n100\n26,42,9,23\n11,8,44,13,21,3\n20,79\n50,50\n22,36,6,37\n13,5,12,68,1\n37,62\n7,89,4\n11,32,32,9,16\n16,6,22,33,7,16\n1,1,1,61,35\n4,43,22,10,10,7,4\n25,19,13,31,11\n5,17,26,15,9,3,23,1\n8,29,7,1,5,5,3,6,14,21\n15,10,4,16,5,4,28,19\n3,6,15,47,29\n100\n42,18,40\n100\n100\n23,39,19,20\n9,73,1,1,1,11,4\n1,1,89,1,4,6\n36,5,59\n100\n13,5,5,77\n1,2,10,8,7,6,22,7,38\n4,19,14,21,42\n13,14,72,1\n100\n7,42,15,11,11,15\n18,11,14,14,43\n11,2,10,57,19,1\n6,91,3\n18,32,27,23\n2,7,3,88\n58,31,8,3\n34,2,9,3,33,19\n32,7,61\n32,3,64\n27,73\n20,5,14,26,2,3,24,3,2\n27,3,21,16,3,14,16\n1,5,7,43,9,35\n58,2,7,20,9,1,1,2\n7,2,26,1,6,7,10,4,2,1,20,13\n32,26,40,1,1\n7,7,7,2,4,15,9,23,15,2,2,2,5\n33,1,1,25,20,19,1\n51,49\n11,12,8,13,26,30\n53,47\n3,70,27\n25,41,27,4,3\n100\n62,38\n59,41\n100\n1,99\n1,49,21,24,6\n7,31,61,1\n38,62\n13,19,9,10,20,24,6\n13,29,14,10,2,1,13,6,2,2,3,2,4\n3,16,15,11,10,28,2,8,6\n36,12,4,5,6,7,5,25\n57,15,28\n2,29,25,36,3,1,2,1,1\n21,4,37,27,5,6\n26,1,4,10,43,1,14\n36,42,21\n25,27,29,19\n3,3,3,9,20,17,10,19,15\n7,27,23,43\n34,36,30\n7,1,7,4,10,11,27,1,16,16\n7,34,13,16,1,1,6,8,16\n7,10,39,38,7\n4,2,2,7,2,17,6,19,2,6,33\n100\n33,54,13\n24,1,1,1,1,61,11\n3,3,95\n89,11\n8,2,3,71,12,4\n6,21,17,24,32\n11,6,39,43\n33,29,1,1,24,11,1\n9,45,6,22,18\n35,28,25,11\n12,1,36,25,22,5\n11,89\n2,29,13,9,23,4,9,7,4\n50,50\n49,1,50\n33,67\n12,16,73\n90,10\n53,38,8\n100\n46,5,14,13,3,3,4,8,2,1\n2,27,32,5,18,7,8\n100\n100\n4,3,19,23,2,13,11,26\n2,17,5,25,5,1,5,4,34,2\n2,6,8,17,2,8,2,4,37,12\n40,35,21,4\n6,7,6,4,39,11,27\n42,1,9,35,10,1\n2,5,34,22,3,13,21\n6,8,10,16,11,5,4,1,11,7,7,4,10\n18,29,18,6,27,1\n56,44\n23,6,11,13,9,1,20,4,13\n6,43,1,1,44,5\n46,54\n16,32,29,22\n21,45,34\n1,6,62,30\n1,18,18,1,34,1,1,9,18\n1,52,6,1,13,26,1\n7,10,6,5,1,5,1,43,1,21\n59,41\n10,14,1,10,34,27,1,1\n25,14,28,29,2,1\n8,1,2,2,8,46,34\n11,15,9,12,5,9,39\n1,1,17,14,5,63\n1,1,7,1,90\n24,7,70\n3,5,4,16,47,6,15,3\n9,74,9,8\n53,9,2,30,6\n3,87,2,3,5\n72,17,2,9\n4,11,3,4,3,1,1,19,9,13,8,25\n5,3,16,6,70\n39,6,1,24,4,25\n3,6,52,3,16,20\n5,8,33,4,18,17,3,1,11\n88,1,11\n24,11,15,5,44\n93,5,2\n52,9,39\n39,32,9,19\n79,1,6,3,3,7,1\n90,3,2,5\n5,1,5,89\n5,87,6,2\n100\n3,10,5,16,64\n100\n6,8,3,15,68\n18,20,16,36,1,9\n98,1\n89,11\n100\n67,33\n100\n60,39,1,1\n46,27,27\n59,41\n72,28\n69,31\n46,4,1,49\n8,7,1,12,6,15,1,21,27,2\n43,8,2,8,29,10\n13,4,31,3,29,18,1\n4,32,6,2,4,3,3,22,24,1\n100\n50,50\n5,12,2,1,1,3,1,1,36,15,16,6\n14,58,6,2,4,2,5,1,9\n11,1,6,1,1,49,1,1,30\n23,1,16,5,16,16,1,3,6,4,1,8,1,1\n6,7,9,6,12,1,3,10,16,3,7,6,10,1,1,2,1\n58,42\n30,6,64\n99\n5,95\n1,99\n16,84\n26,73\n12,7,76,5\n1,12,72,15\n6,79,15\n100\n26,74\n9,91\n100\n63,37\n50,50\n43,12,1,2,40\n6,3,4,31,26,29\n100\n44,55\n30,1,20,49\n43,1,40,17\n41,5,29,24\n38,14,18,29\n35,65\n18,38,2,43\n17,47,35\n72,28\n14,85,1\n25,74\n3,23,29,1,4,3,4,6,17,2,10\n82,2,2,3,11\n8,25,5,1,1,1,1,2,8,12,15,20\n27,29,19,24,1\n1,7,11,17,1,6,16,16,1,1,3,19\n34,2,2,7,8,5,4,6,18,13\n92,8,1\n7,3,18,26,6,17,20,1,1\n3,2,38,56\n100\n100\n100\n61,39\n100\n1,1,1,1,93,1,2\n42,11,45,2\n3,73,24\n100\n8,3,3,11,2,10,4,29,31\n100\n5,7,8,9,9,12,26,5,6,14,1\n100\n100\n100\n72,28\n20,23,1,57\n18,40,41\n20,15,28,8,5,20,1,1,1\n51,1,47,1,1,1\n62,35,1,1,1\n73,24,2\n7,8,6,19,56,4\n24,1,62,8,4\n18,5,5,55,10,7\n87,4,10\n2,40,47,11\n77,23\n38,19,43\n49,7,2,1,4,16,10,10\n20,52,21,3,2,3\n4,14,5,9,26,14,28\n69,2,29\n1,61,37,1\n10,10,1,78\n34,52,14\n7,1,26,65\n3,21,11,2,1,3,2,1,1,38,12,5\n57,1,30,1,9,1\n5,3,10,9,12,1,22,9,14,11,5\n35,57,8\n8,3,1,1,3,1,7,1,5,21,50\n3,14,2,1,8,1,51,14,1,1,4,1\n46,5,4,15,30\n3,2,10,12,2,2,1,3,45,19\n100\n100\n42,30,17,7,4\n5,3,4,31,57\n36,39,25\n44,15,27,7,7\n11,58,25,6\n3,4,1,2,79,4,2,2,3\n6,12,15,67\n55,9,8,9,12,8\n4,25,6,1,13,39,1,1,1,1,1,2,1,4\n80,2,2,4,12\n55,45\n3,97\n18,1,22,12,46\n75,25\n90,10\n83,12,1,1,2\n87,12\n26,13,62\n7,6,6,81\n19,6,75\n21,39,1,39\n41,58\n3,97\n38,62\n1,83,16,1\n100\n99,1\n81,19\n96,4\n39,9,21,28,1,1,1\n30,10,27,3,29\n21,12,19,15,33\n1,47,1,51\n100\n59,41\n56,44\n100\n100\n46,1,1,16,4,5,8,19\n54,25,21\n16,7,77\n26,67,7\n19,13,68\n41,1,58\n41,1,58\n1,56,8,1,35\n3,5,15,15,13,6,16,9,18\n17,6,9,6,62\n7,27,66\n19,13,14,54\n100\n6,94\n5,95\n64,19,18\n83,13,4,1\n6,10,23,27,20,4,3,7\n64,22,2,6,1,3,1,1\n23,4,29,37,7\n17,16,57,5,5\n37,5,51,7\n56,34,2,5,3\n80,20\n100\n82,18\n56,37,7\n2,1,1,1,1,95\n4,52,7,36\n1,22,14,40,23\n3,1,4,1,1,17,42,31\n12,15,18,39,15\n64,12,6,14,2,1,1\n15,6,6,16,27,11,2,16\n55,1,3,12,4,26\n25,28,1,29,13,4\n39,53,3,2,2\n10,68,1,21\n33,21,7,14,25\n11,6,22,11,26,24\n67,26,7\n18,15,68\n26,29,8,1,36\n3,2,3,23,23,7,2,36\n3,6,7,4,3,76\n5,13,17,1,1,1,1,4,58\n100\n100\n1,46,11,32,4,6\n1,1,88,4,7\n49,39,13\n39,13,43,4\n83,17\n14,53,34\n1,9,12,12,19,48\n6,79,15,1\n22,17,29,32\n45,7,18,7,22,1\n1,4,1,74,21\n38,62\n1,5,1,3,43,47\n83,17\n57,43\n14,10,76\n100\n100\n100\n30,68,1,1\n35,65\n22,78,1\n13,68,19\n1,3,2,94\n10,4,33,15,39\n51,1,17,31\n11,11,1,1,78\n1,1,1,26,72\n6,94\n100\n100\n72,1,27\n69,8,2,5,3,1,12\n1,1,1,98\n1,1,32,8,58\n100\n83,17\n1,67,32\n78,22\n86,14\n1,24,16,60\n13,3,83\n100\n7,40,20,32,1\n17,2,80\n20,1,7,22,1,14,6,9,21\n72,28\n2,1,72,20,2,3\n5,25,66,2\n7,39,54\n15,16,41,28\n100\n100\n75,25\n100\n100\n100\n100\n25,27,4,4,41\n53,23,23\n28,41,7,9,1,11,2\n7,6,24,37,26\n20,58,21\n31,56,8,4\n62,38\n9,1,1,3,1,1,23,9,53\n52,48\n100\n4,3,93\n59,13,11,16,1\n93,2,2,3\n6,94\n89,6,4\n29,1,70\n2,53,10,4,13,5,3,9\n11,3,1,1,1,12,72,1\n5,1,95\n100\n100\n3,50,2,15,6,5,7,5,4,2\n1,20,18,61\n17,12,45,21,2,1,1\n7,65,27\n8,35,4,9,28,10,6\n27,13,26,6,15,13\n15,14,8,1,47,10,1,3,1\n13,2,9,22,7,22,26\n8,7,3,1,3,16,10,52\n1,4,2,6,15,5,5,7,55\n36,19,1,1,43\n28,25,47,1\n45,1,53,1\n83,7,5,3,2\n52,1,1,8,1,37\n100\n9,1,21,53,16\n29,24,30,8,8\n100\n26,8,1,1,1,63\n11,4,3,1,80\n50,1,1,44,1,1,1,1,1,1\n13,7,3,39,2,5,31\n14,5,6,12,13,2,48\n18,7,6,10,12,6,18,7,15\n11,63,7,6,12,1,1,1\n87,1,7,6\n5,27,1,23,26,18\n14,5,6,5,5,9,9,46\n2,1,1,1,95\n13,8,28,4,5,42\n1,25,12,60,1,1\n1,86,13\n100\n51,49\n5,8,5,29,23,30\n45,49,7\n21,8,14,2,7,2,1,4,2,1,33,6\n4,1,3,1,44,48\n2,47,36,15\n43,7,19,30\n14,8,27,6,1,5,1,8,3,27\n54,5,1,1,4,28,5,2\n1,34,1,1,9,15,3,35\n14,40,46\n19,36,46\n26,28,46\n33,28,39\n7,7,5,79,1,1,1\n73,5,1,14,6\n16,25,58\n4,96\n59,41\n76,2,6,7,4,3,3\n13,23,27,1,31,6\n26,51,8,3,11\n48,6,17,2,6,3,3,16\n4,2,3,2,8,3,6,5,10,2,4,10,2,1,2,1,16,18\n42,33,1,25\n2,4,4,5,4,14,2,1,3,2,2,2,55\n1,6,17,16,1,1,5,51\n5,2,4,1,23,44,8,4,8,1,1\n5,1,11,15,1,8,39,1,1,1,19\n100\n100\n42,30,1,1,26\n23,1,76\n11,27,8,34,20\n100\n61,4,34\n82,18\n100\n100\n18,20,4,3,12,29,5,9\n55,45\n61,39\n40,37,11,2,10\n64,8,6,2,9,11\n80,5,1,13\n74,19,2,1,2\n14,82,4\n64,27,10\n2,2,18,21,9,47\n7,8,11,7,67\n27,3,69\n37,1,6,2,4,22,6,21\n6,2,31,14,47\n35,62,1,1\n6,73,17,3,1\n3,9,10,5,4,8,6,2,13,8,9,11,2,5,5\n15,2,20,12,8,5,16,2,20\n6,58,3,28,3,2\n1,5,7,4,4,8,3,7,8,53\n1,1,1,98\n12,73,15\n1,70,13,16\n21,12,56,11\n3,6,4,10,55,7,2,10,5\n100\n34,20,46\n100\n16,4,15,31,23,12\n11,10,41,1,1,36\n2,98\n22,10,1,7,4,4,4,14,18,13,3\n6,19,13,1,3,39,9,9\n33,67\n100\n56,44\n100\n2,3,5,3,3,1,14,47,10,5,7\n3,97\n2,6,26,9,6,8,12,32\n1,1,56,30,12\n5,18,16,61\n12,14,47,14,14\n100\n27,71\n27,18,3,4,17,5,21,1,1,2\n81,12,6\n19,1,1,4,1,20,6,1,9,4,11,23,4\n8,1,5,1,1,1,5,1,1,11,1,1,1,1,10,1,35,18\n3,97\n5,42,23,31\n55,1,7,2,10,2,1,23\n2,2,37,8,30,21\n3,1,12,15,4,7,11,39,8\n3,3,1,3,4,9,4,3,6,7,17,9,18,3,5,1,1,2,3\n6,19,17,11,47\n6,32,3,15,24,3,17\n30,3,18,23,22,3\n10,29,16,35,10\n42,9,39,3,6\n100\n11,1,6,31,41,11\n4,29,62,5\n41,4,8,14,21,11\n1,1,1,23,11,26,37\n23,26,1,36,13\n100\n69,30\n100\n5,95\n14,86\n100\n100\n100\n3,47,45,1,3,1,1,1\n1,2,35,54,1,2,4,1\n12,5,4,6,56,17\n1,39,32,28,1\n31,34,34\n3,1,15,16,4,6,5,31,20\n72,7,14,6\n21,62,1,4,4,8\n3,2,53,40,1\n5,3,2,90\n72,28\n96,4\n100\n7,91,2\n41,33,3,3,9,11\n53,16,4,10,6,2,2,5,1\n46,1,2,2,1,12,12,4,4,8,6\n100\n51,23,26\n2,2,96\n1,1,65,33\n100\n98,2\n100\n20,62,18\n1,31,5,62,1\n20,2,2,16,2,11,20,25,2,2\n1,29,42,14,1,13\n100\n100\n65,35\n3,7,10,13,3,4,11,4,44\n2,11,4,7,18,21,37\n4,18,5,5,62,3,2\n82,18\n4,11,2,1,1,58,1,24\n2,3,8,1,2,4,9,9,11,3,2,9,8,30\n7,11,22,11,5,3,3,39\n34,32,34\n40,23,36\n100\n25,1,40,14,20\n99\n90,10\n32,32,36\n50,23,18,8\n25,4,71\n28,5,18,48\n60,12,29\n1,99\n20,78,2\n34,64,2\n6,64,6,21,2,1\n14,42,3,3,18,16,2,2\n18,82\n5,4,32,51,2,2,4\n1,1,68,31\n100\n13,7,3,67,11\n7,1,1,2,3,4,26,21,31,1,2\n41,49,9\n6,94\n26,4,1,11,7,7,13,1,1,6,7,10,2,2,2\n19,2,2,8,1,7,6,10,2,4,2,13,1,13,10\n95,5\n94,6\n5,5,30,19,41\n15,16,9,10,8,6,11,2,13,10\n62,3,35\n65,34\n1,1,1,97\n1,30,7,9,11,1,41\n59,40\n20,15,4,5,9,1,13,34\n1,3,1,15,35,22,25\n100\n100\n29,1,1,19,51\n21,50,29\n8,11,1,1,60,18,1\n1,46,1,1,1,1,1,49,1\n1,4,46,17,17,15\n100\n100\n3,3,4,5,12,3,1,1,13,15,26,6,6\n31,38,19,12\n11,1,45,13,1,1,28\n24,15,4,2,1,9,8,31,6\n2,40,13,45\n49,12,39\n2,2,48,24,17,7\n1,1,37,61\n6,1,63,27,4\n8,92\n1,99,1\n13,5,8,25,9,6,34\n19,16,7,9,1,16,10,20,2\n29,5,2,3,2,3,37,3,3,3,8,1\n18,7,29,46\n13,38,50\n23,14,1,60,2\n57,43\n97,3\n6,21,7,12,54\n14,19,68\n1,39,7,1,7,1,23,21\n6,6,6,1,27,31,12,12\n100\n100\n6,46,47\n33,7,58,3\n2,98\n10,14,76\n95,5\n96,4\n23,65,11\n60,16,24\n40,1,41,11,7\n1,4,1,10,33,17,9,17,5,1,3\n53,42,5\n100\n5,40,1,7,19,7,19,2\n44,6,13,1,4,8,13,10\n40,12,4,2,14,6,7,14\n54,5,9,21,10\n9,34,3,44,5,5\n46,1,7,15,31\n15,13,21,50\n1,3,1,23,1,1,60,11\n2,2,8,16,5,16,2,9,1,37,2\n27,38,35\n19,9,4,4,5,43,3,13\n1,2,1,33,3,1,1,2,54\n40,1,37,12,9\n2,8,2,21,2,30,10,5,20\n12,11,77\n6,19,19,15,6,8,14,6,6\n10,10,1,5,1,11,6,16,30,10\n1,34,26,1,5,1,13,5,1,14,1\n41,33,27\n11,19,10,2,9,47\n3,3,3,34,3,3,3,29,3,18\n22,77,1\n31,69\n6,5,10,18,59,1,1\n42,1,27,1,29\n11,1,15,55,1,1,17\n1,65,1,33,1\n6,4,3,87\n6,6,9,4,20,19,5,3,1,1,19,7,1\n1,17,30,31,8,5,8\n19,34,16,11,4,4,11,1\n1,1,1,6,15,8,59,7,1\n1,8,55,1,1,8,1,2,6,15\n54,46\n26,19,7,33,2,12,2\n44,4,52\n30,42,14,5,9\n15,21,10,29,1,16,8\n19,11,2,2,8,3,1,1,1,2,5,3,4,2,6,3,13,5,3,5\n48,7,9,10,1,8,2,2,11\n30,1,1,68\n58,1,41\n31,10,58\n24,14,20,16,26\n6,1,1,28,30,15,10,9\n20,12,45,22\n20,73,5,2\n4,31,35,3,7,18,2\n9,24,42,26\n100\n27,62,10\n6,2,4,5,3,4,5,7,16,11,5,5,4,18,1,2\n2,5,24,4,15,32,17\n2,5,1,1,14,5,30,2,5,35\n14,8,6,4,1,20,31,17\n42,18,14,8,9,4,5,1\n1,20,16,21,41,1\n100\n100\n4,9,54,32\n18,1,7,11,10,9,43,2\n25,75\n15,1,1,4,2,39,36,3\n19,56,24\n30,5,6,16,16,8,1,6,3,2,7\n3,3,4,13,15,7,5,1,48\n7,26,1,1,63,2\n8,8,5,2,57,2,17,2\n59,23,5,12,1\n54,42,1,1,1,1\n18,17,4,6,5,6,18,4,12,2,3,3,2\n28,5,29,2,4,18,9,4\n1,3,78,1,10,1,1,1,1\n9,8,6,2,1,1,13,59\n29,28,15,24,4\n20,67,4,9\n2,16,7,15,18,2,2,29,3,7\n20,1,79\n2,49,2,2,11,19,2,11,2,2\n1,1,41,1,1,1,1,11,10,1,18,10\n20,20,2,3,2,11,2,2,2,39\n2,55,2,2,2,8,10,8,2,2,4,2\n59,1,13,10,1,1,15\n2,1,17,6,15,7,3,7,1,7,3,2,24,5\n20,36,8,3,13,17,3\n9,21,4,7,8,8,1,1,5,9,2,3,2,3,13,4\n9,44,2,1,21,22,1,1\n10,7,4,5,5,6,19,11,10,22\n35,1,1,6,1,56\n4,2,2,2,8,1,81\n13,6,27,43,9\n13,1,26,32,8,3,17\n7,2,65,11,14\n71,1,3,3,6,8,8\n34,32,3,31\n1,21,20,9,48\n6,2,40,8,6,8,1,11,17\n45,8,1,3,44\n1,1,5,92,1\n3,63,17,17\n54,1,29,6,3,1,3,1\n2,2,1,10,11,2,8,13,22,29\n6,12,3,15,9,1,2,4,11,38\n1,11,6,82\n11,1,34,6,48\n2,2,5,2,7,2,1,3,2,4,9,6,2,5,5,1,9,8,2,16,4\n2,2,4,2,9,2,5,2,1,15,11,1,2,17,6,12,9\n5,3,4,9,6,12,5,56\n12,60,19,9\n63,37\n32,30,7,30,1\n7,12,7,4,18,10,4,3,23,11\n12,1,11,6,11,2,4,2,49,2,1\n2,40,6,26,24\n3,16,5,34,17,7,4,3,6,4\n66,1,9,13,5,6\n39,60,1\n25,75\n18,81,1\n3,37,24,4,31\n76,16,8\n3,1,96\n97,3\n21,4,7,64,3\n42,11,46\n100\n97,2,1\n100\n100\n44,9,42,3\n29,71\n77,10,13\n18,82\n100\n92,8\n100\n1,1,97\n87,5,8\n5,95\n100\n100\n2,4,1,39,54\n1,7,4,9,25,54\n24,76\n52,2,34,12\n8,73,19\n1,3,4,84,9\n100\n17,1,5,29,13,4,7,4,6,14\n95,1,4\n1,53,24,9,5,8\n7,14,12,68\n10,9,32,8,4,37\n1,1,67,6,25\n44,29,12,2,12\n57,8,19,2,1,1,2,2,8\n25,74,1\n59,1,24,6,10\n17,15,52,1,3,2,1,1,7\n41,4,8,11,2,3,7,2,22\n31,10,1,11,30,2,7,8\n2,6,4,76,12\n81,19\n2,27,71\n17,9,28,28,18\n32,19,49\n45,32,4,19\n2,14,10,17,11,7,3,2,12,10,8,2,2\n8,3,4,42,42\n6,2,5,42,44\n26,12,32,5,2,24\n1,42,7,34,10,6\n4,5,54,37\n28,50,6,16\n17,14,1,1,29,39\n100\n100\n40,27,33\n54,4,24,18\n4,7,12,76\n3,23,7,8,13,2,5,27,12\n1,4,5,1,1,8,10,67,2\n100\n100\n90,10\n77,11,12\n63,8,6,13,4,6\n12,45,22,21\n28,47,7,13,5\n40,60\n71,29\n100\n37,30,17,16\n5,26,10,59\n34,36,30\n36,37,27\n66,34\n93,7,1\n100\n46,10,7,10,26\n25,24,4,10,12,8,5,1,1,10\n60,5,3,1,1,3,3,9,15\n1,1,1,97\n94,3,2,1\n5,4,6,85\n29,22,7,4,38\n4,30,17,2,5,31,1,11\n83,7,5,5,1\n13,26,22,29,9\n39,38,23\n22,45,1,33\n30,1,48,5,6,10\n100\n65,35\n2,3,36,19,20,6,5,5,2,1\n100\n18,9,9,7,1,15,9,11,1,15,5\n59,9,32\n23,3,13,14,28,14,4,1\n11,25,45,12,6\n1,33,4,2,21,23,16\n100\n33,8,60\n100\n5,95\n100\n36,11,20,6,17,1,7,1\n100\n11,8,81\n93,6\n1,1,75,24\n99,1,1\n3,5,92\n88,11\n100\n19,68,8,5\n11,18,26,11,10,24\n5,6,34,23,12,20\n64,7,29\n100\n7,1,31,62\n100\n74,26\n72,5,22\n2,34,5,56,1,1,1\n11,22,3,8,7,20,12,3,13,2\n24,35,15,6,18,2\n10,49,41\n100\n100\n100\n100\n100\n100\n99,1\n91,9\n100\n42,58\n3,3,14,3,13,64\n1,59,40\n14,5,3,8,70\n24,6,12,58\n8,4,4,85\n48,51\n62,38\n99\n1,10,7,7,76\n100\n10,90\n39,61\n24,4,4,2,1,1,2,14,49\n5,9,18,4,65\n6,13,11,32,4,1,32\n19,10,1,1,1,19,1,7,38\n14,9,1,1,1,5,1,1,1,1,20,11,11,5,16\n26,9,1,4,1,1,1,1,55\n100\n98,2\n1,1,56,16,17,7,1\n94,1,5,1\n2,21,2,2,11,2,38,22,2\n89,4,7\n12,9,55,12,12\n42,26,31\n46,1,9,11,12,12,9\n55,28,17\n100\n36,12,7,45\n53,46,1,1';
  result = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(data_0, '\n');
  return result;
}
;
carcc.gettorsionIDData = function gettorsionIDData(){
  carcc.$clinit_TorsionDBData();
  var data_0, result;
  data_0 = 'daD@h@\\H\\D\\L\\B\\Djfdrjj`Cj`XZV^[lgl|WjBp^C~RQdp\ndaDD`HP@cIICISKUT@]LCbURss\\bCPVCp_rPmV@\ndaDH@@RfzaJjjbHGWPhxdtl|yXEGDfgf}HDoTE`|G|dC]`<\ndaDH@@RfzaJjjbHGWPhxdtl|yqGDf}HDoTE`|G|dC]`<\ndaDH@@RfzaJjjbHGWPhxdtl|yqGDf}HDoTE`|G|dC]`>\ndaT@`@\\DjfjZn[jjjkJcKhGP`phxdtl|wY@xD`uyo]{|lKUfp\ndax@@DiU[zh@zHfegfzLG``\ndax@@DiYn`@@wHmumm}l=\ndax@@DiYn`@@wHmumm}t=\ndax@@DiYn`@@wHmumn}t=\ndax@@DiYn`@@wHmuum}t\ndax@@DiYn`@@wHmuun}t=\ndax@@DiYn`@@wHnuun}t=\ndax@@DiYn`h@zsEgfyEnmlG``=\ndax@@DiYnf@@zaJyEnnmom`=\ndax@@DiYnf@@zaJyEvnmom`=\ndax@@DiYnf@@zqDffyEv`mom`=\ndax@@DiYnf@@zqDffyEv`mon`\ndax@@DiYnf@@zqDff~TEm}l=\ndax@@DiYnf@@zqDff~Uyn}t=\ndax@@DiYnf@@zqDfjyEv`mom`=\ndax@@DiYnf@@zqDfj~TEm}l=\ndax@@Djfjjh@zDFEGDfegf{HG@dF`lG``\ndax@@Djfjjh@zDFEGDfeggI@phdwY@xD`tE`|D\ndax@@Djfjjh@zDFEGDfeggM@phdtwY@xD`tE`|D\ndax@@Djfjjh@zDFEGDfeggN@pdwY@xD`tE`|D\ndax@@Djfjjh@zDFEGDfeggN@plwY@xD`tE`}x\ndax@@Djfjjh@zDFEGDjegj{HG@dF`lG``\ndax@@DjfjjjHP]BCBcbSRssd`XRV[l`\\BPZBp^|>\ndax@@DjfjjjHP]BCBcbSRsug@XR[l`\\BPZBp^B<\ndax@@DjfjjjHP]BCBcbSRsug@XR[l`\\BPZBp^B>\ndax@D@bH\\DbL\\B\\JbFbN\\Dfnjjh@zRGGNHxlwPo]x\ndax@H@\\H\\D\\J\\Djfjjh@zXFGDegf{I{@dFoLG``\ndax@H@\\H\\D\\J\\Djfjjh@zXFGDeggN@pdwYOXD`uy`|D\ndax@H@\\H\\D\\L\\Djfjjh@zXFDfegf{I{ODF`lG``\ndax@H@\\H\\J\\F\\Djfjjh@zXFEGDgj{HG@dFoM{``\ndax@H@\\J\\F\\N\\Djfjjh@zhFEGDf{HG@dFoM{o@\ndax@H@\\J\\F\\N\\Djfjjh@zhFEGDf}HG@dFoMx\ndax@H@dDdJdFdDfnjjh@zJGDgfzDGo@\ndax@H@dDdJdFdDfnjjh@zJGDgfzE{o@\ndax@H@dDdJdFdDfnjjh@zJGDggNHxlwP`|D\ndax@H@dDdJdFdDfnjjh@zJGDggNHxlwPo]x\ndax@H@dDdJdFdDfnjjh@zJGDkfzDGo@\ndax@H@dDdJdFdDfnjjh@zJGDkgNHxlwP`}x\ndax@H@dDdJdFdDfnjjh@zJGDkjzDG``\ndax@H@dDdLdJdLbdLeUT@]EBRss]F}w`\ndax@H@dDdLdJdLbdLeUUAPNbaIZyncA{p<\ndax@H@dDdLdJdLbdLeUUAPNbaIZyncA{p>\ndax@P@BFBDiuZ{h@zHEEgfzHG``\ndax@P@QFQDiuZ{h@zHEEgfzHG``\ndax@P@\\H\\Djfjjh@zDFEGDfegf{HG@dF`lG``\ndax@P@\\H\\Djfjjh@zDFEGDjegj{HG@dF`lG``\ndax@P@\\H\\Djnjjh@zxEGDfegf{Q{@dF`lG``\ndax@P@\\H\\Djnjjh@zxEGDfegf{Q{OEz`lG``\ndax@P@\\H\\Djnjjh@zxEGDfegf}YxoTE`|D\ndax@P@\\H\\Djnjjj@P]\\BcbSRss]h}`R}PVCpP<\ndax@P@\\H\\Djnjjj@P]\\BcbSRss]h}`R}PVCpP>\ndax@P@\\H\\Djnjjj@P]\\BcbSRss^lBWjBp^B<\ndax@P@\\H\\Djnjjj@P]\\BcbSRss^lBWjBp^B>\ndax@Q@|Bh@dnRjZjj`Ck`XT\\ZV^[t`\\CPVCpP\ndax@R@BH|HeIijjj@NnaQqIiYyoV^KuAXOA@\ndax@R@QH|HeIijjj@NnaQqIiYyoV^KuAXOA@\ndax@R@\\H\\HyJkjjj@NnAQqIiYyoV^KuAXOA@\ndax@X@\\H\\D\\L\\B\\J\\Djfjjh@zHFEgf{I{OEzoLG``\ndax@X@\\H\\D\\L\\B\\J\\Djfjjh@zHFEggI@phdwYOYxoUy`|D\ndax@X@\\H\\D\\L\\B\\J\\Djfjjh@zHFEggN@pdwYOYxoUy`|D\ndax@X@kDdLdJkFdNdLbdLeUT@]IBR\ndax@`@BDf]j^@@zbJyAoMmom`=\ndax@`@BDf]j^@@zbJyAoNmom`=\ndax@`@BDf]j^@@zbJyAoNmwn`=\ndax@`@\\Df]j^@@zRGFyA{Nmom`=\ndax@`@\\Djfjjh@zDFEGDfegf{HG@dF`lG``\ndax@`@\\Djfjjh@zDFEGDfegf{HG@ez`lG``\ndax@`@\\Djfjjh@zDFEGDjegf{HG@dF`lG``\ndax@`@\\Djfjjh@zDFEGHjegf{HG@dF`lG``\ndax@`@\\Djfjjh@zDFEKHjegf{HG@dF`lG``\ndax@`@\\LddUUUr@]LBcbRss\\dC`RCwP\ndax@`@dDffjjjHP]]BcbSRssgHTR[u`RCPVCpP<\ndax@b@|@eJijjj@NaAaQqIiYynrApI^hKAxH\ndax@b@|@eJijjj@NaAaQqIiYynrAsq^hKAxH\ndax@b@|@eJijjj`DGP`phyDtl|wY@xDoTE`|D<\ndax@b@|@eJijjj`DGP`phyDtl|wY@xDoTE`|D>\ndax@h@BDdLdJdFdLbdLeUT@]YBSs]@}w`\ndax@h@\\H\\D\\L\\B\\Djfjjh@zhFFegf{I{OEz`lG``\ndax@h@\\H\\D\\L\\B\\Djfjjh@zhFFegf{I{OEz`lG`\x7FddEB\ndax@h@\\H\\D\\L\\B\\Djfjjh@zhFFegf}I{OTE`|D\ndax@h@\\H\\D\\L\\J\\Djfjjh@zhFDegf{I{ODFoLG``\ndax@h@\\H\\D\\L\\J\\Djfjjh@zhFDeggI@phdwYOYx`uy`|D\ndax@h@\\H\\D\\L\\J\\Djfjjj@P]TCBRssg@XR[lgl|PZ|p^B<\ndax@h@\\H\\D\\L\\J\\Djfjjj@P]TCBRssg@XR[lgl|PZ|p^B>\ndax@h@dDdLdJdFdLbdLeUT@]YBSs^NB\ndax@h@dDdLdJdFdLbdLeUT@]YBSs^N|\ndax@h@dDdLdJdFdLbdLeUT@]YBSu^NB\ndax@h@kDdLdJdFdLbdLeUT@]YBSs^N|\ndax@p@\\H\\D\\Djfjjh@zxFGDfegf{I{@dF`lG``\ndax@p@\\H\\D\\Djfjjh@zxFGDfegj{I{@dF`lG``\ndax@p@\\J\\F\\Djfjjh@zXFEGDgf{HG@dFoM{``\ndax@p@\\J\\F\\Djfjjh@zXFEGDgj{HG@dFoM{``\ndax@p@\\J\\F\\DjfjjjHP]LCBcbSs^dC`RCWnB<\ndax@p@\\J\\F\\DjfjjjHP]LCBcbSs^dC`RCWnB>\ndax@p@dDdLdLbdLeUT@]UBSRss_JBp^B\ndax@p@dDdLdLbdLeUT@]UBSRss_JBp^|\ndax@p@dDdLdLbdLeUT@]UBSRsu_JBp^B\ndax@p@dDdLdLbdLeUT@]UBSRuu_JBp^B\ndax@p@dDdLdLbdLeUT@]UBSTus_JBp^|\ndax@p@|D\\L\\DffjjjHP]MBbSRss^l|PZBp^B<\ndax@p@|D\\L\\DffjjjHP]MBbSRss^l|PZBp^B>\ndaxB@@RfRZzjjdaX`zJGDggN@hdwP`|D<\ndaxB@@RfRZzjjdaX`zJGDggN@hdwP`|D>\ndaxBRHSFCpkpslddlcUT`HdGV@d|wRo\\D>\ndaxB`HSJCprRRrMUPAtPIKOMtXOA@\ndaxD@@QIkjjj@NfaqIiYysbNIMrHMAXOA@\ndaxD@@QIkjjjbDGSPxdtl|yHEGDfyDF`lG``<\ndaxD@@QImYk`@Nhanc[{X=\ndaxD@@iIijjj@NfaQqIYynVAHKAxH\ndaxD@@iIijjj@NfaQqIYysTJNMKMrpIAXOA@\ndaxD@@iIijjjRDbCihT\\RV^\\yBcS\\lBPVCpP\ndaxD@@iIijjjRDdCihT\\RV^\\yBbs\\lBPVCw`>\ndaxD@@iIijjjRDdCihT\\RV^\\yBcS\\lBPVCpP<\ndaxD@@yIUVnz@NdaY@\ndaxDHHP@biAiCiCIICHmU@GV@xdw```\ndaxDPHP@b`cIICHmU@GU@xeL|wH`uy`|D\ndaxD`HP@cIICHmU@GS@xdtl|wH`tE`|D\ndaxD`HP@cIICHmU@GS@xeTl|wH`tE`|D\ndaxD`HPGCIICIUU@GS@xdtl|wHoTE`|D\ndaxDpJXIAICICHiCIUU@GVPd|wc``\ndaxDpJXIAICICHiCIUU@GVPd|wco@\ndaxH@@RYvjxHaAtdNM|pK[{X+\ndaxH@@RZZjj`CkhT\\RZV^[u`RCPVCpP\ndaxH@@RZZjj`CkhT\\RZV^\\lCBcbSS^lBPZBp^B\ndaxH@@RZZjj`CkhT\\RZV^\\uBcbSS^lBPZBp^B\ndaxH@@RZZjj`CkhT\\RZV^lmBcbSRs^lBPZBp^B\ndaxH@@RZZjjhQAutJNIMKONZaQqIYoVAHMAXO^@<\ndaxH@@RZZjjhaAutJNIMKONVAaQqIioVAKuAXOA@<\ndaxH@@RZZjjhaAutJNIMKONZAaQIioVAHMAXOA@<\ndaxH@@RZZjjhaAutJNIMKONZaQqIioVAKuAXOA@>\ndaxH@@RZZjjhaAutJNIMKON\\aQIoVAHMAXOA@<\ndaxH@@RZZjjhaAutJNIMKON\\aQIoVAHMAXOA@>\ndaxH@@RZZjjhaAutJNIMKON\\aQYoVAHMAXO^@>\ndaxH@@RZZjjhaAutJNIMKON\\aqIoVAKuAXOA@<\ndaxH@@RZZjjhaAutJNIMKON\\aqIoVAKuAXOA@>\ndaxH@@RZZjjhaAutJNIMKON\\aqYoVAKuAXO^@<\ndaxHHBApapQpqpRjZjj`Cj`XZV^[tgl}PVCpP\ndaxHPJBPRPRZzjjhrAuTNIKWM|KsA{p<\ndaxHPJBPRPRZzjjhrAuTNIKWM|KsA{p>\ndaxH`HApRjzjj`Ck`T\\RZV^[u`RCPVCpP\ndaxH`HApRjzjj`Ck`T\\RZV^[ugb}PVCpP\ndaxH`HApRjzjj`Ck`T\\bjV^[u`RCPVCpP\ndaxH`HApRjzjjhAAupJNIMKOMzpI^hKAxH<\ndaxH`HApRjzjjhAAupJNIMKOMzpI^hKAxH>\ndaxH`JBHRZZjjhaAttJNIKONRaQiYnVAHKAxH>\ndaxHpJBHRHrHrJPrUUPAtTIKOMtXOA@\ndaxHpJBPRPrPrJPrUUPAtTIKOMtXOA@\ndaxHpJBPRPrPrJPrUUPAtTIKOMt[w^@\ndaxHpJBPRPrPrJPrUUTE@zJDegfzLGo@<\ndaxHpJBPRPrPrJPrUUTE@zJDegfzLGo@>\ndaxHpJBPRPrPrJPrUUTE@zJDegjzLG``<\ndaxHpJBPRPrPrJPrUUTE@zJDegjzLG``>\ndaxHpJBPRPrPrJPrUUTE@zJDekfzLGo@<\ndaxHpJBPRPrPrJPrUUTE@zJDekfzLGo@>\ndaxL@@RdfnjjjHP]UCbRsse`T\\RZV[xPVCpP<\ndaxLHHS@BJdFdNdLddlbuT@]HBR\ndaxLJHS@BJdFdNdL{IIKHmU@GR@d`\ndaxL`HS@\\LddleUT@]TBSRss_JBp^B\ndaxLhJ[`\\H\\D\\L\\B\\Djfjjh@zPFF~I{OEx\nday@@@QIkjjj@NfaqIiYysPLJIMMrHMAXOA@\ndayDaLJD@HrR{IICHmU@GU@xtl|wr`lG``\ndaz@@@RYvHx@C\\`wfvwvp=\ndaz@@@RYvHx@C\\`wfvwwP\ndaz@@@RYvHx@C\\`wgVwvp=\ndaz@@@RYvix@CjHkdF|zv~v=\ndaz@@@RYvix@CjHkdG\\zv~v=\ndaz@B@BTf]bN@@wHMymm}t\ndaz@HBApapQpqpRjZjj`Cj`XZV^[tgl}PVCpP\ndaz@bHCpBTjnjjh@zxEGDfegf}YxoTE`|D\ndaz@pJBPRPrPrJPrUUPAtTIKOMtXOA@\ndaz@pJBPRPrPrJPrUUTE@zJDegjzLG``>\ndazDHLa@BJdFdNdLddlbuT@]HBR\ndazDJLa@BJdFdNdL{IIKHmU@GR@d`\ndazD`La@BLddlbuT@]TBSRss_JBp^B\ndazH`D`OCIICHuUPBCi`\\RZV^[dWjBp^B<\ndazH`D`OCIICHuUPBCi`\\RZV^[dWjBp^B>\ndazHpFhIAICICHiCIUUPRCkHR^[qpP<\ndazHpFhIAICICHiCIUUPRCkHR^[qpP>\ndazLQFaLCpkpsfgIIKHuUHBIAu`IOMtkwA@<\ndazLQFaLCpkpsfgIIKHuUHBIAu`IOMtkwA@>\ndctD@@gHiDTeIU]uPAttNIHjnmrpIATNa@\ndctD@@gHiDTeIU]uPAttNQPjvurpIATNa@\nded@@DiUfoh@@Mr[_[G\\{@=\nded@@DiUfoh@@Mr[_]G\\}@\nded@P@\\F\\LddUTeUuPAtHJNIKOHlmvPNAHOADLa@\ndedD@@{HiDUIU]T@]MCdTrMM\\lBPQCHP\ndiD@@DiYkhJ`ChlV^Q[tVzvp^BHP=\ndiD@@DiYkhJ`ChlV^Q[tVzzp^BHP\ndiD@@DiYkhJ`ChlV^aktVzvp^BHP=\ndiD@@DiYkhJ`ChlVnaktVzvp^BHP=\ndiD@@DiYkhJ`ChlVnaktVzzp^BHP\ndiD@H@\\H\\D\\L\\LddjTjn@@z`F}QyOY{nct=\ndiD@`@\\LddUTjn@@zHEGDf}HG@dGmcl=\ndiD@`@\\LddUTjn@@zHEGDf}HG@dGmct\ndiD@`@\\LddUTjn@@zHEGDf}HG@dGnct=\ndiD@`@\\LddUTjnX@zhEGDej}HG@dGnct\ndiD@`@\\LddUTjnX@zxEGDegdV}HG@dGnbD\ndiD@`@\\LddUTjnX@zxEGDegdZ}HG@dGnbD\ndiDH@@rJQERjx@CkH\\R[e`RCvqv=\ndiDH@@rJQERjx@CkH\\R[e`RCvqz\ndiDH@@rJQERjx@CkH\\bke`RCvqv=\ndiDH@@rJQERjx@CkH\\bke`RCvqz\ndiDH@@rJQERjxHaAudNIMrpI^{X{@+\ndiDH@@rJQERjxHaAudNIMrpI^{X{@-\ndiDH@@rJQERjxHaAudNIMrpI^{X}@<\ndiDH@@rJQERjy`Cih\\RV^Q[y`RBO`\ndiDH@@rJQERjy`Cih\\bf^Q[e`RCwQB\ndiF@@@rJQERjx@CkH\\R[e`RCvqv=\ndiF@`NAprRQURjx@Ch`T\\R[t`\\BP^vNp\ndiF@a@b`BX{HiDUJk`@NlarJnVAHO[Gh\ndiFH@NCHiDUJk`@NlaqInVAHO[GX\ngC`@Die@zHXir\ngC`@Die@zHXis]Knz\ngC`@Die@zHXis^Kh\ngC`@Die@zHXisgAbd\ngC`@Die@zHXisgAbfzW]t\ngC`@Die@zHXisgAbf|WP\ngC`@Dij@zHXis]HNB\ngC`@Dij@zHXis]HN|\ngC`@Dij@zHXis]Kv|\ngC`@Dij@zHXisgAbfzP\\D\ngC`@Dij@zHXisgAbfzP]x\ngC`@Dij@zHXisgAbfzWmx\ngC`@Dij@zHXiu]HNB\ngC`@Dij@zHXiugAbfzP\\D\ngC`@Dij@zHXjs]HN|\ngC`@Dij@zHXjsgAbfzP]x\ngC`@Dij@zHXju]HNB\ngC`@Dij@zHXjugAbfzP\\D\ngC`@DkZ@zHXis]SnB\ngC`@DkZ@zHXis]Sn|\ngC`@DkZ@zHXis^XH\ngC`@DkZ@zHXis^[p\ngC`@DkZ@zHXisgAbfzg\\D\ngC`@DkZ@zHXisgAbfzg]x\ngC`@DkZ@zHXisgAbf|pP\ngC`@DkZ@zHXisgAbf|w`\ngC`@DkZ@zHXiu]SnB\ngC`@DkZ@zHXiu^XH\ngC`@DkZ@zHXiugAbfzg\\D\ngC`@DkZ@zHXiugAbf|pP\ngC`B@DPHPQ`aJZ`NdFH\ngC`B@DPHPQ`aJZ`NdFN\\FJP\ngC`B@DPHWaoAJZ`NdFMto[p\ngC`D@DPHRfhChabgMt`xH\ngC`D@DPHRfhChabgN\\FJ[iApP\ngC`D@DPHRfhChabgN\\FJ[i^w`\ngC`D@DPHRfhChabkUt`xH\ngC`D@DPHRnhCkASf|pP\ngC`D@DPHRnhCkASj|pP\ngC`D@DXHRVhCiQR\ngC`D@DXHRVhCiQSgAbd\ngC`D@DXHRfhCkAbf|PP\ngC`D@DXHRfhCkAbgNCEMx``\ngC`D@DXHRfhCkAbj|PP\ngC`D@DYpRVhCiQS]Cv|\ngC`D@VPlRfhChabkUt`xH\ngC`D@VYpRfhCkAbfzP]x\ngC`D@bQDRfhChabgMt`xH\ngC`D@bQDRfhChabkUt`xH\ngC`D@bSpRnhCkASfzglD\ngC`D@xYpRVhCiQS]Cv|\ngC`D@xYpRVhCiQSgAbfzGmx\ngC`DABPHRVhCkQSj|pP\ngC`DADZHRVhCiQR\ngC`DAb[DRVhCiQR\ngC`DAx[pRVhCiQR\ngC`DAx[pRVhCiQS]Cv|\ngC`Dax[pDzTej@zTTwP}o@\ngC`H@DIKRAuhir\ngC`H@DIKTAuhis]CvB\ngC`H@DIKTAuhis^XH\ngC`H@DIKTAuhis^[p\ngC`H@DIKTAuhisgAbfzGlD\ngC`H@DIKTAuhisgAbf|pP\ngC`H@DIKTAuhisgAbf|w`\ngC`H@DIKTAuhiu]CvB\ngC`H@DIKTAuhiu^XH\ngC`H@DISRAtPqSfzP]t\ngC`H@DISRAtPqSf|PP\ngC`H@DISRAtPqSgNCEMt`{h\ngC`H@DISRAtPqSgNCEMx``\ngC`H@DISRAtPqUfzP]t\ngC`H@DISRAtPqUgNCEMt`{h\ngC`H@DISTAtPqSfzP\\D\ngC`H@DISTAtPqSfzP]x\ngC`H@DISTAtPqSfzWlD\ngC`H@DISTAtPqSgNCEMt`xH\ngC`H@DISTAtPqSgNCEMt`{p\ngC`H@DISTAtPqSgNCEMtoXH\ngC`H@DISTAtPqSjzP\\D\ngC`H@DISTAtPqSjzWlD\ngC`H@DISTAtPqSkNCEMt`xH\ngC`H@DISTAtPqUfzP\\D\ngC`H@DISTAtPqUfzP]x\ngC`H@DISTAtPqUgNCEMt`xH\ngC`H@DISTAtPqUjzP\\D\ngC`H@VIKTAuhis]CvB\ngC`H@bIKTAuhis^XH\ngC`H@bISRAtPqSf|PP\ngC`H@bISTAtPqSfzP\\D\ngC`H@bISTAtPqSgNCEMt`xH\ngC`H@bISTAtPqSjzP\\D\ngC`H@bISTAtPqUfzP\\D\ngC`H@bISTAtPqUjzP\\D\ngC`H@xIKRAuhis^Cp\ngC`H@xIKTAuhis]CvB\ngC`H@xIKTAuhis]Cv|\ngC`H@xIKTAuhis^XH\ngC`H@xIKTAuhisgAbfzGlD\ngC`H@xIKTAuhiu]CvB\ngC`HADIKTAuhis^XH\ngC`HAVIKTAuhis^XH\ngC`HAbIKTAuhis^XH\ngC`HAxIKTAuhis]CvB\ngC`HAxIKTAuhis^XH\ngC`HAxIKTAuhisgAbfzGlD\ngC`HAxIKTAuhiu]CvB\ngC`HMPISTAu`qS]HN|\ngC`HMPISTAu`qS^HH\ngC`IAVBTii@zHXjs]HNz\ngC`IAxBTej@ztTyna{A@\ngC`IAxBTej@ztTys`qS]CvB\ngC`IMP[dij@zpXindG^@\ngC`L@DPHPPeMPGVCGMy``\ngC`L@DPHPPeMPGVCGMyo@\ngC`L@DPHPPeMPGVCGUy``\ngC`L@DPHPPeMPGVCGV\\FJ[sA@\ngC`L@VPHPPeMPGVCGMy``\ngC`L@bPHPPeMPGVCGMy``\ngC`PAEdij@zPXypXi@\ngC``@deZ@ztTyoLD\ngC``ADij@zHXis]HN|\ngC``ADij@zHXis]Kv|\ngC``ADij@zHXisgAbfzP\\D\ngC``ADij@zHXisgAbfzP]x\ngC``ADij@zHXisgAbfzWmx\ngC``Adej@zTT`\ngC``Adej@zTTypXi@\ngC``Adij@zpXioDD\ngC``Adij@zpXioEx\ngC``Adij@zpXis`qS^HH\ngC``Adij@zpXjoDD\ngC``Adij@zpXjs`qS^HH\ngC`hH`xIKTAuhis]Cv|\ngCa@@dkHGVbgH\ngCa@@dkHGVbgMyn`\ngCa@@dkPGVbgMy``\ngCa@@dmHGVbgH\ngCa@@dmHGVbgMyn`\ngCa@@dmHGVbgN\\FJP\ngCa@@dmHGVbgN\\FJ[s]@\ngCa@@dmPGVbgMy``\ngCa@@dmPGVbgMyo@\ngCa@@dmPGVbgN\\FJ[sA@\ngCa@@dmPGVbgN\\FJ[s^@\ngCa@@dmPGVbgUy``\ngCa@@dmPGVbgV\\FJ[sA@\ngCa@@eMHGQCEN[iAwP\ngCa@@eMHGQCEN[qA@\ngCa@@eMHGQCEN[q^@\ngCa@@eMHGQCEN\\xLTwRCn`\ngCa@@eMHGQCEN\\xLTwbB\ngCa@@eMHGQCEV[iAwP\ngCa@@eMHGQCEV\\xLTwRCn`\ngCa@@eMHGQCEV\\xLTwbB\ngCa@@eMPGQCEN[iApP\ngCa@@eMPGQCEN[iAw`\ngCa@@eMPGQCEN[i^pP\ngCa@@eMPGQCEN[i^w`\ngCa@@eMPGQCEN\\xLTwRC``\ngCa@@eMPGQCEN\\xLTwRCo@\ngCa@@eMPGQCEN\\xLTwR}``\ngCa@@eMPGQCEN\\xLTwR}o@\ngCa@@eMPGQCENkiApP\ngCa@@eMPGQCENki^pP\ngCa@@eMPGQCENlxLTwRC``\ngCa@@eMPGQCENlxLTwR}``\ngCa@@eMPGQCEV[iApP\ngCa@@eMPGQCEV[iAw`\ngCa@@eMPGQCEV\\xLTwRC``\ngCa@@eMPGQCEV\\xLTwRCo@\ngCa@@eMPGQCEVkiApP\ngCa@@eMPGQCEVlxLTwRC``\ngCaH@jAJZ`NlFN[i^pP\ngCaH@jAJZ`NlFN\\xLTwR}``\ngCaH@jAJZ`NlFN\\xLTwfB\ngCaH@jAJZ`NlFN\\xLTwf|\ngCaHDGAIZ`NmEN[h^pP\ngCaHH@aIZ`NmEN[h^pP\ngCaHH@aIZ`NmEN[h^w`\ngCaHH@aIZ`NmEN\\xLTwP}``\ngCaHHGAIZ`NmEN[h^pP\ngCaHHGAIZ`NmEN[h^w`\ngCaHHGAIZ`NmEN\\xLTwP}``\ngCaHHGAIZ`NmENkh^pP\ngCaHHOAIZ`NmEN[h^pP\ngCaHHOAIZ`NmEN[h^w`\ngCaHHOAIZ`NmEN[sA@\ngCaHHOAIZ`NmEN\\xLTwP}``\ngCaHHOAIZ`NmEN\\xLTwP}o@\ngCaHHOAIZ`NmEN\\xLTwf|\ngCaHHOAIZ`NmENkh^pP\ngCaHHOAIZ`NmENlxLTwP}``\ngCaHL@aIZ`NeEH\ngCaHL@aIZ`NeEN\\FJP\ngCaHLDQIZ`NeEH\ngCaHLGAIZ`NeEMxO@\ngCaHLHaIZ`NeEH\ngCaHLLQIZ`NeEH\ngCaHLOAIZ`NeEMxO@\ngCaI@jA\\eMPGVCGMtoXH\ngCaIHO@RdmPGVbgMtOXH\ngCaIHO@RdmPGVbgN\\FJ[h^pP\ngCaIL@`RdmPGRbd\ngCd@@deZ@ztTyoLG}h`\ngCd@@deZ@ztTys`qS^XO{Q@\ngCd@@deZ@ztTzoLG}h`\ngCd@@deZ@ztTzs`qS^XO{Q@\ngCd@ADie@zHXis]Kn{~rD@\ngCd@ADie@zHXis^Ko{HP\ngCd@ADie@zHXisgAbfzW]w}dH\ngCd@ADie@zHXis~rD@\ngCd@ADif@zHXis]KnC~rD@\ngCd@ADif@zHXis^XO{HP\ngCd@ADif@zHXisgAbfzW\\G}dH\ngCd@ADif@zHXisgAbf|p_vP`\ngCd@ADif@zHXiu]KnC~rD@\ngCd@ADif@zHXiu^XO{HP\ngCd@ADij@zHXis]HNC~rD@\ngCd@ADij@zHXis]HNC~t@\ngCd@ADij@zHXiu]HNC~rD@\ngCd@ADij@zHXju]HNC~rD@\ngCd@ADkj@zpTzoLD\ngCd@AdeY@zTT`\ngCd@Adej@zTT`\ngCd@Adej@zTTypXi@\ngCd@Adij@zpXioDG}h@\ngCd@Adij@zpXis`qS^HO{P@\ngCd@Adij@zpXjoDG}h@\ngCd@Adij@zpXjs`qS^HO{P@\ngCd@aAteJz`NlEN[sA\x7FZ@\ngCd@aAteJz`NlEN[s^\x7FZ@\ngCd@aaNeIZ`NeEH\ngCd@aaNeIZ`NeEN\\FJP\ngCd@aaNeIZ`NeEN\\FJ[h^w`\ngCd@aaNeIZ`NeEN\\FJ[p^@\ngCdAAIrTs@]DLTznewA\x7FYB@\ngCdAAaJRu@]JJP\ngCdAAaJRu@]JJ[p^@\ngCdAAaJRu@]JJ\\xLT`\ngCdAAaJRu@]JJ\\xLTw`|\ngCdDE`DPHRfhCiAb\ngCdHH`DIKRAuhis]Cv{~rb@\ngCdHH`DIKRAuhis^Cw{JH\ngCdHI`DIKTAthis`qS^Cw{R@\ngCe@E`dkPGRbg}h`\ngCh@@dkHGVbgH\ngCh@@dkPGVbgMy``\ngCh@@dmHGVbgH\ngCh@@dmHGVbgMyn`\ngCh@@dmHGVbgN\\FJP\ngCh@@dmHGVbgN\\FJ[s]@\ngCh@@dmPGVbgMtOXH\ngCh@@dmPGVbgMy``\ngCh@@dmPGVbgMyo@\ngCh@@dmPGVbgN\\FJ[h^pP\ngCh@@dmPGVbgN\\FJ[sA@\ngCh@@dmPGVbgN\\FJ[s^@\ngCh@@dmPGVbgUy``\ngCh@@dmPGVbgV\\FJ[sA@\ngCh@@eLhGQCEN\\xLTwR{n\x7Fm@\ngCh@@eLhGQCEN\\xLTwb{~t@\ngCh@@eMHGQCEN[iAw_v`@\ngCh@@eMHGQCEN[i^w_v`@\ngCh@@eMHGQCEN[qA\x7FZ@\ngCh@@eMHGQCEN\\xLTwRCn\x7Fm@\ngCh@@eMHGQCEN\\xLTwbC~t@\ngCh@@eMHGQCEV[iAw_v`@\ngCh@@eMHGQCEV[qA\x7FZ@\ngCh@@eMPGQCEN[iApP\ngCh@@eMPGQCEN[iAp_v`@\ngCh@@eMPGQCEN[iAw`\ngCh@@eMPGQCEN[iAwov`@\ngCh@@eMPGQCEN[i^pP\ngCh@@eMPGQCEN\\xLTwRC``\ngCh@@eMPGQCEN\\xLTwRC`\x7Fm@\ngCh@@eMPGQCEN\\xLTwRCo@\ngCh@@eMPGQCEN\\xLTwRCo_m@\ngCh@@eMPGQCEN\\xLTwR}``\ngCh@@eMPGQCENkiApP\ngCh@@eMPGQCENkiAp_v`@\ngCh@@eMPGQCENki^pP\ngCh@@eMPGQCENlxLTwRC``\ngCh@@eMPGQCEV[iApP\ngCh@@eMPGQCEV[iAp_v`@\ngCh@@eMPGQCEV[iAwov`@\ngCh@@eMPGQCEV\\xLTwRC``\ngCh@@eMPGQCEV\\xLTwRC`\x7Fm@\ngCh@@eMPGQCEVkiApP\ngCh@@eMPGQCEVkiAp_v`@\ngCh@@e[PGQCEN[j]p_v`@\ngCh@@e[PGQCEN[sA\x7FZ@\ngCh@@e[PGQCEN[s^\x7FZ@\ngCh@@e[PGQCEN\\xLTwT{`\x7Fm@\ngCh@@e[PGQCENkj]p_v`@\ngCh@@e[PGQCENksA\x7FZ@\ngCh@@e[PGQCENlxLTwT{`\x7Fm@\ngChA@IRUdCkQSf|GP\ngChA@IRVdCkQSd\ngChA@IRVhCkQSfzGlD\ngChA@IRVhCkQSf|pP\ngChA@IRVhCkQSf|w`\ngChA@IRVhCkQSgNCEMtOXH\ngChA@IRVhCkQSgNCEMy``\ngChA@IRVhCkQSgNCEMyo@\ngChA@IRVhCkQSj|pP\ngChA@IRVhCkQSkNCEMy``\ngChA@IRfhChabgMt`xH\ngChA@IRfhChabgMt`{p\ngChA@IRfhChabgMtoXH\ngChA@IRfhChabgN\\FJ[iApP\ngChA@IRfhChabgUt`xH\ngChA@IRfhChabgUtoXH\ngChA@IRfhChabgV\\FJ[iApP\ngChA@IRfhChabkUt`xH\ngChA@IRmhChabgMuNxO{P@\ngChA@IRmhChabgMy`\x7Fm@\ngChA@IRmhChabgN\\FJ[j]p_v`@\ngChA@IRmhChabgUuNxO{P@\ngChDD@bABUt`]XJ\\wf{~tP\ngChDDDRHbUt`]XJ\\wf{~tP\ngChHD@aIZ`NmEN[h^p_vb@\ngChHDOAIZ`NmENkh^p_vb@\ngChHH@aIZPNmEN[h^w_vd@\ngChHH@aIZ`NmEN[h^p_vd@\ngChHH@aIZ`NmEN[h^wovd@\ngChHH@aIZ`NmEN\\xLTwP}`\x7FmH\ngChHH@aIZ`NmENkh^p_vd@\ngChHH@aJZPNbFJlypXindG]\x7FZP\ngChHHOAIZ`NmEN[h^p_vd@\ngChHHOAIZ`NmEN\\xLTwP}`\x7FmH\ngChHHOAIZ`NmENkh^p_vd@\ngChHL@aIZ`NeEH\ngChHL@aIZ`NeEMxO@\ngChHL@aIZ`NeEN\\FJP\ngChHL@aJZ`NlFJ[qA@\ngChHL@aJZ`NlFJ\\xLTwbB\ngChHLHaIZ`NeEH\ngChHLLQIZ`NeEH\ngChHLOAIZ`NeEH\ngChIDOARdmPGVbgMtOXH\ngChIHOBRdkPGVbgMy`\x7FmH\ngChIL@cRdmPGRbd\ngChIL@cRdmPGRbf|G`\ngChILLSRdmPGRbd\ngCh`LHe]PGRBd\ngCi@DDeZ@ztTyoLG}h`\ngCi@DDeZ@ztTyoM{}h`\ngCi@DDeZ@ztTzoLG}h`\ngCi@HDii@zHXis]HN{~t`\ngCi@HDii@zHXis^HO{R@\ngCi@HDii@zHXisgAbfzP]w}i@\ngCi@HDii@zHXjs]HN{~t`\ngCi@HDij@zHXis]HNB\ngCi@HDij@zHXis]HNC~t`\ngCi@HDkj@zpTyoLD\ngCi@HDkj@zpTyoMx\ngCi@HDkj@zpTys`qS^XH\ngCi@HDkj@zpTzoLD\ngCi@LDej@zTT`\ngCi@LDej@zTTypXi@\ngCi@LDej@zTTypXioMx\ngCi@LDij@zpXioDD\ngCi@LDij@zpXis`qS^HH\ngCi@LDij@zpXjs`qS^HH\ngCiALMJRu@]JJP\ngCiALMJRu@]JJ[s^@\ngCiALMJRu@]JJ\\xLT`\ngCiALMJRu@]JJ\\xLTwf|\ngCl@ADe[PGVBgUy`\x7Fl``\ngClAADnRmhCkASj|p_vPP\ngFp@DjYZXHCkASfyW]x{n\x7FrTrp=\ngFp@DjYZjjQCiabgIZyHXis\\kv|_WwyJYX<\ngFp@DjxujhCiabgIZwL{`dMC~RvN@\ngFp@LdaahUPGVrVmsMkYCP\x7Fdmc`=\ngFp@LdaahUPGVrVmsMkY}__dmc`=\ngFp@LdaahUPGVrVmsMkiCP\x7Fdmc`\ngFp@LdaahUTrGVrVmsMkYC__dmc`+\ngFp@LdaahUTrGVrVmsMkYC__dmc`-\ngFp@LdaahUTrGVrVmsMkiC__dmc`<\ngFp@LdaahUTrGVrVmsMkiC__dmc`>\ngFp@LddLUUPGSCENRusdyK\\pJBPtOyHZX\ngFp@LddLUUPGSCENRusdyK\\sr|PtOyHZX\ngFp@LddLUUTBGSCENRurPqRVy`Uxah_rPtp>\ngFp@LddLUUTBGSCENRus`iK\\sr|PtOyHZX>\ngFp@LddLUUTBGSCENRusdyK\\pJ|PtOyHZX<\ngFp@LddLUUTBGSCENRusdyK\\pJ|PtOyHZX>\ngFp@LddLUUTBGSCENRushiK\\pJ|PtOyHZX<\ngFp`@TfXujjJChqSfnSENRwVCP\x7Fdmc`<\ngFp`@TizJjiRYChqSfn\\dm[iAh_rPup<\ngFp`@TizJjiRZChqSfmtoTOyHZx<\ngFp`@TizJjiRZChqSfmtoTOyHZx>\ngFp`@TizJjiRZChqSfn\\dm[iAh_rPup<\ngFp`@TizJjiRZChqSfn\\dm[iAh_rPup>\ngFp`@dfxujhChqrVmtPtOyKXx\ngFp`@dfxujhChqrVmt_WwyKXx\ngFp`@dfxujjYChqrVmtPwwyKXx<\ngFp`@dfxujjYChqrVmtPwwyKXx>\ngFq@@dmXuU@]VJ\\ek_XICP\x7Fdem`\ngFq@@dsFmU@]VJ\\ek_XICP\x7Fdmc`\ngFq@@dsFmU@]VJ]Ek_XICP\x7Fdmc`\ngFq@@dsFmUQH]VJ]Ek_XIC__dmc`<\ngFq@@dsFmUQH]VJ]Ek_XIC__dmc`>\ngFq@@dsFuURH]VJ\\ek_XICP\x7Fdmc`<\ngFq@@dsFuURH]VJ\\ek_XICP\x7Fdmc`>\ngFq@@eMXuURH]LLTyKVyP\\D~h_rRvp<\ngFq@@eMqUURH]VJ\\ek_HICP\x7Fdak`<\ngFq@@eMqUURH]VJ\\ek_HICP\x7Fdak`>\ngFq@@eMqUURH]VJ\\ek_KqCP\x7Fdak`<\ngFq@@eMqUURH]VJ\\ekdaRVm|oDMC~RFn@>\ngFq@@eMqUURH]VJ\\ekgIKV~WbFa\x7FICW@<\ngFq@@eMqUURH]VJ\\ekgIKV~WbFa\x7FICW@>\ngFq@@eMqUURH]VJ\\ekgIrV~PRFa\x7FICW@<\ngFq@@eMqUURH]VJ\\ekgIrV~PRFa\x7FICW@>\ngFq@@eMqUURH]VJ\\ekgIrV~PSza\x7FICW@<\ngFq@@eOQUARP]JJ[yAN{o|dM\\+\ngFq@@eOQUARP]JJ[yAN{o|dM\\-\ngFq@@eOQUARP]JJ[y^N{o|dM\\+\ngFq@@eOQUARP]JJ[y^N{o|dM\\-\ngFq`@bdwFmUSP]ZNZweC~RvN@>\ngFq`ALe\\qUU@]ENRunbFa\x7FISW@\ngFx@@eMXuU@]LLTyKVyP\\Dah_rRvuh@\ngFx@@eOQMA@]JJ[y^N{o|dM\\=\ngFx@@eOQUARP]JJ[yAN{o|dM\\+\ngFx@@eOQUARP]JJ[yAN{o|dM\\-\ngFx@@eOQUARP]JJ[y^N{o|dM\\+\ngFx@@eOQUARP]JJ[y^N{o|dM\\-\ngFx@@eSFuU@]LLTyKVyP\\Dah_rVquh@=\ngFx@@eSFuU@]LLTzKVyP\\Dah_rVquh@\ngFx@@eSFuU@]LLUZKVyP\\Dah_rVqp\ngFxAAIRicZ`@NbFR\\wJC`gm{~RvN@=\ngFxAAYRicZ`@NbFR\\wJC`gm{~RvNm@=\ngFx`DBdwFmUSP]ZNZweC~RvN@<\ngFy@DDfxujhChqrVmtPtOyKXx\ngFy@DDfxujjYChqrVmtPwwyKXx<\ngFy@DDfxujjYChqrVmtPwwyKXx>\ngGP@DiWj`NbgIZwQCP`\ngGP@DjZ@@Mrm{Yw]`=\ngGP@DjZ@@Mrm{Yw^`=\ngGP@DjZ@@Mrm{Y{^`=\ngGP@DjZ@@Mrm{iw^`\ngGP@DjZ@@Mrm{i{^`=\ngGP@DjZ@@Mrn{i{^`=\ngGP@DjZ@@NZFJ\\enUw]O[t=\ngGP@DjZ@@N\\EI[e[wSn}@\ngGP@DjZ@@N\\EN[e[wSv}@\ngGP@DjZ@@N\\FN[e]wSv}@\ngGP@DjZX@NhJyV}l{np=\ngGP@DjZX@NhJyV}l{oP\ngGP@DjZX@NhJyV}l}oP=\ngGP@DjZX@NhJyV}t{np=\ngGP@DjZX@NhJyV}t{oP\ngGP@DjZX@NhJyW]l{np=\ngGP@DjZX@NhJyW]l{oP\ngGP@DjZX@NhJyW]l}oP=\ngGP@DjZX@NhJyW]t{np=\ngGP@DjZX@NhJyW]t{oP\ngGP@DjZX@NhJyW]t}oP=\ngGP@DjZX@NhKNBdmrn{iw^`\ngGP@DjZX@NhKNCDmrn{Yw^`\ngGP@DjZX@NhKNCDmrn{iw^`\ngGP@DjZX@NlEN[e]pSn{@=\ngGP@DjZX@NlEN[e]pSn{\x7FIPh`=\ngGP@DjZX@NlEN[e]pSn}@\ngGP@DjZX@NlEN[e]pSv}@=\ngGP@DjZX@NlEN[e]wcn{@=\ngGP@DjZX@NlEN[e]wcn{\x7FIPh`=\ngGP@DjZX@NlEN[e]wcn}@\ngGP@DjZX@NlEN[e]wcv}@=\ngGP@DjZX@NlEN[{AN{l=\ngGP@DjZX@NlEN[{AN{t\ngGP@DjZX@NlEN[{AO[t=\ngGP@DjZX@NlEN[{^N{l=\ngGP@DjZX@NlEN[{^N{t\ngGP@DjZX@NlEN\\xJRwJ{`g]z\ngGP@DjZX@NlEN\\xJRwJ{oG]z\ngGP@DjZX@NlEN\\xJRwvB]wh\ngGP@DjZX@NlEN\\xJRwv|]wh\ngGP@DjZX@NlEN\\xJ\\wJ{`gmz\ngGP@DjZX@NlEN\\xJ\\wvB^wh\ngGP@DjZX@NlEN\\xLRwJ{`g]z\ngGP@DjZX@NlEN\\xLRwvB]wh\ngGP@DjZX@NlEN\\xLRwv|]wh\ngGP@DjZX@NlEN\\xL\\wJ{`gmz\ngGP@DjZX@NlEN\\xL\\wvB^wh\ngGP@DjZX@NlENke]pSn{@=\ngGP@DjZX@NlENke]pSn}@\ngGP@DjZX@NlENke]pSv}@=\ngGP@DjZX@NlENk{AN{l=\ngGP@DjZX@NlENk{AN{t\ngGP@DjZX@NlENk{AO[t=\ngGP@DjZX@NlENlxJRwJ{`g]z\ngGP@DjZX@NlENlxJRwvB]wh\ngGP@DjZX@NlENlxLRwJ{`g]z\ngGP@DjZX@NlENlxLRwvB]wh\ngGP@DjZX@NlENlxL\\wJ{`gmz\ngGP@DjZX@NlENlxL\\wvB^wh\ngGP@DjZY`NbFR\\wJ{`g]z\ngGP@DjZY`NbFR\\wJ{`gmv\ngGP@DjZY`NbFR\\wJ{`gmz\ngGP@DjZY`NbFR\\wJ{oGmv\ngGP@DjZY`NbFR\\wJ{oGmz\ngGP@DjZY`NbFR\\wvB]wX\ngGP@DjZY`NbFR\\wvB^wh\ngGP@DjZY`NbFR]WJ{`gmv\ngGP@DjZY`NbFR]WJ{`gmz\ngGP@DjZY`NdJUrm{Yw]`\ngGP@DjZY`NdJUrm{iw^`\ngGP@DjZY`NdJUrn{Y{]`\ngGP@DjZY`NdJUrn{i{^`\ngGP@DjZY`NfFJ\\ek\\knB^tH\ngGP@DjZY`NfFJ\\ek]XMB\ngGP@DjZY`NfFJ\\ek_KnCP`\ngGP@DjZY`NfFJ\\ek_XI{_@\ngGP@DjZY`NfFJ\\ekfabgI[e]pSva@\ngGP@DjZY`NfFJ\\ekfabgI[kAhP\ngGP@DjZY`NfFJ\\ekfabgI[y]pZD\ngGP@DjZY`NfFJ\\ekgARVyW\\D}hP\ngGP@DjZY`NfFJ\\ekgARV~W\\Fa@\ngGP@DjZY`NfFJ\\ekgASf~W\\Fa@\ngGP@DjZY`NfFJ\\ekgAbVzpZD\ngGP@DjZY`NfFJ\\ekgAbV~W\\Fa@\ngGP@DjZY`NfFJ\\ekgAcfyW\\D}hP\ngGP@DjZY`NfFJ\\ekgAcf~W\\Fa@\ngGP@DjZY`NfFJ\\em\\knB^tH\ngGP@DjZY`NfFJ\\em]XMB\ngGP@DjZY`NfFJ\\em_KnCP`\ngGP@DjZY`NfFJ\\em_XI{P`\ngGP@DjZY`NfFJ\\emgAcfyW\\D}hP\ngGP@DjZY`NfFJ\\emgAcf~W\\Fa@\ngGP@DjZY`NfFJ]Em\\knB^tH\ngGP@DjZY`NfFJ]Em]XMB\ngGP@DjZY`NfFJ]Em_KnCP`\ngGP@DjZY`NfFJ]EmgAcfyW\\D}hP\ngGP@DjZj`NfFJ\\ek\\hNBPtH\ngGP@DjZj`NfFJ\\ekfabgI[eApRFa@\ngGP@DjZj`NfFJ\\fm\\hNBPtH\ngGP@DjZj`NfFJmFm\\hNBPtH\ngGP@DjZjdEDNfFJ\\ekdacdmr`xIC_@<\ngGP@DjZjdEDNfFJ\\ekdacdmr`xIC_@>\ngGP@DjZjdEDNfFJ\\ekfabgI[eAwbF~@<\ngGP@DjZjdEDNfFJ\\ekfabgI[eAwbF~@>\ngGP@DjZjdEDNfFJ\\ekgARVyP]xao`<\ngGP@DjZjdEDNfFJ\\ekgARVyP]xao`>\ngGP@DjZjdEDNfFJ\\ekgAbVyP\\Dao`<\ngGP@DjZjdEDNfFJ\\ekgAbVyP\\Dao`>\ngGP@DjZjdEDNfFJ\\ekgAcfyP\\DahP<\ngGP@DjZjdEDNfFJ\\ekgAcfyP\\DahP>\ngGP@DjZjdEDNfFJ\\ekgAcfyP\\Dao`<\ngGP@DjZjdEDNfFJ\\ekgAcfyP\\Dao`>\ngGP@DjZjdEDNfFJ\\emgAbVyP\\DahP<\ngGP@DjZjdEDNfFJ\\emgAbVyP\\DahP>\ngGP@DjZjdEDNfFJ\\emgAcfyP\\DahP<\ngGP@DjZjdEDNfFJ\\emgAcfyP\\DahP>\ngGP@DjZjdEDNfFJ\\fmgAcfyP\\DahP<\ngGP@DjZjdEDNfFJ\\fmgAcfyP\\DahP>\ngGP@DjZjdEDNfFJ]EkfabgI[eApRF~@<\ngGP@DjZjdEDNfFJ]EkfabgI[eApRF~@>\ngGP@DjZjdEDNfFJ]Em\\hNBPtH<\ngGP@DjZjdEDNfFJ]Em\\hNBPtH>\ngGP@DjZjdEDNfFJ]EmgAcfyP\\DahP<\ngGP@DjZjdEDNfFJ]EmgAcfyP\\DahP>\ngGP@DjZjdEDNfFJ]FmgAcfyP\\DahP<\ngGP@DjZjdEHNfFJ\\ekfabgI[eAwbF~@\ngGP@DjZjdEHNfFJ\\ekgARVyP]xao`\ngGP@DjZjdEHNfFJ\\ekgAbVyP\\Dao`<\ngGP@DjZjdEHNfFJ\\ekgAbVyP\\Dao`>\ngGP@DjZjdEHNfFJ\\ekgAcfyP\\DahP\ngGP@DjZjdEHNfFJ\\emgAbVyP\\DahP<\ngGP@DjZjdEHNfFJ\\emgAbVyP\\DahP>\ngGP@DjZjdEHNfFJ\\emgAcfyP\\DahP<\ngGP@DjZjdEHNfFJ\\emgAcfyP\\DahP>\ngGP@DjZjdEHNfFJ\\fkgAbVyP\\Dao`<\ngGP@DjZjdEHNfFJ\\fkgAbVyP\\Dao`>\ngGP@DjZjdEHNfFJ\\fmgAcfyP\\DahP<\ngGP@DjZjdEHNfFJ\\fmgAcfyP\\DahP>\ngGP@DjZjdEHNfFJ]EkfabgI[eApRF~@>\ngGP@DjZjdEHNfFJ]EkgAbVyP\\Dao`<\ngGP@DjZjdEHNfFJ]EkgAbVyP\\Dao`>\ngGP@DjZjdEHNfFJ]Em\\hNBPtH\ngGP@DjZjdEHNfFJ]EmgAbVyP\\DahP<\ngGP@DjZjdEHNfFJ]EmgAbVyP\\DahP>\ngGP@DjZjhDNfFJ\\fmdacdmr`xICP`<\ngGP@DjZjhDNfFJ\\fmdacdmr`xICP`>\ngGP@DjZjhDNfFJ]Fm\\hNBPtH>\ngGP@DjZjiDNfFJ\\ek\\hNBPwp<\ngGP@DjZjiDNfFJ\\ek\\hNBPwp>\ngGP@DjZjiDNfFJ\\ekdabdmr`xIC_@<\ngGP@DjZjiDNfFJ\\ekdabdmr`xIC_@>\ngGP@DjZjiDNfFJ\\ekdabgMr`xICP`<\ngGP@DjZjiDNfFJ\\ekdabgMr`xICP`>\ngGP@DjZjiDNfFJ\\ekfabgI[eApRF~@<\ngGP@DjZjiDNfFJ\\ekfabgI[eApRF~@>\ngGP@DjZjiDNfFJ\\em\\hNBPtH<\ngGP@DjZjiDNfFJ\\em\\hNBPtH>\ngGP@DjZjiDNfFJ\\emdabgMr`xICP`<\ngGP@DjZjiDNfFJ\\emdabgMr`xICP`>\ngGP@DjZjiDNfFJ\\emfabgI[eApRFa@<\ngGP@DjZjiDNfFJ\\emfabgI[eApRFa@>\ngGP@Djfj`NfFJ\\ek\\hNBPtH\ngGP@Djfj`NfFJ\\ek\\hNBPtOyJED\ngGP@Djfj`NfFJ\\ek\\hNBPwp\ngGP@Djfj`NfFJ\\ek\\hNB_TH\ngGP@Djfj`NfFJ\\ek\\hNB_Wp\ngGP@Djfj`NfFJ\\ek\\hN|_TH\ngGP@Djfj`NfFJ\\ekdaSdmr`{q}P`\ngGP@Djfj`NfFJ\\ekdaSdmr`{q}_@\ngGP@Djfj`NfFJ\\ekdabdmr`xICP`\ngGP@Djfj`NfFJ\\ekdabdmr`xIC_@\ngGP@Djfj`NfFJ\\ekdabdmr`xI}P`\ngGP@Djfj`NfFJ\\ekgAbVyP\\DahP\ngGP@Djfj`NfFJ\\ekgAbVyP\\Dao`\ngGP@Djfj`NfFJ\\ekgArVyP\\Dah_rTJH\ngGP@Djfj`NfFJ\\ekgArVyP\\D~hP\ngGP@Djfj`NfFJ\\ekgArVyP\\D~o`\ngGP@Djfj`NfFJ\\em\\hNBPtH\ngGP@Djfj`NfFJ\\em\\hNB_TH\ngGP@Djfj`NfFJ\\emgAbVyP\\DahP\ngGP@Djfj`NfFJ\\emgArVyP\\D~hP\ngGP@Djfj`NfFJ\\fk\\hNBPtH\ngGP@Djfj`NfFJ\\fk\\hNBPwp\ngGP@Djfj`NfFJ\\fkdabdmr`xICP`\ngGP@Djfj`NfFJ\\fkdabdmr`xIC_@\ngGP@Djfj`NfFJ\\fkgArVyP\\DahP\ngGP@Djfj`NfFJ\\fkgArVyP\\Dao`\ngGP@Djfj`NfFJ\\fm\\hNBPtH\ngGP@Djfj`NfFJ]Fk\\hNBPtH\ngGP@Djfj`NfFJ]Fk\\hNBPwp\ngGP@Djfj`NfFJ]FkgAbVyP\\DahP\ngGP@Djfj`NfFJ]Fm\\hNBPtH\ngGP@Djfj`NfFJmEk\\hNB_TH\ngGP@Djfj`NfFJmFk\\hNBPtH\ngGP@DjfjhDNfFJ\\ekdabdmr`{q}P`<\ngGP@DjfjhDNfFJ\\ekdabdmr`{q}P`>\ngGP@DjfjhDNfFJ\\ekdacdmr`xI}P`<\ngGP@DjfjhDNfFJ\\ekdacdmr`xI}P`>\ngGP@DjfjhDNfFJ\\ekdacdmr`xI}_@<\ngGP@DjfjhDNfFJ\\ekdacdmr`xI}_@>\ngGP@DjfjhDNfFJ\\ekgARVyP]x~hP<\ngGP@DjfjhDNfFJ\\ekgARVyP]x~hP>\ngGP@DjfjhDNfFJ\\ekgAbVyP\\D~hP<\ngGP@DjfjhDNfFJ\\ekgAbVyP\\D~hP>\ngGP@DjfjhDNfFJ\\fkgAbVyP\\DahP<\ngGP@DjfjhDNfFJ\\fkgAbVyP\\DahP>\ngGP@DjfjhDNfFJ]Ek\\hNB_TH<\ngGP@DjfjhDNfFJ]Ek\\hNB_TH>\ngGP@DjfjhDNfFJ]EkgAbVyP\\D~hP<\ngGP@DjfjhDNfFJ]EkgArVyP\\D~hP<\ngGP@DjfjhDNfFJ]EkgArVyP\\D~hP>\ngGP@DjfjhDNfFJ]FkgARVyP\\DahP<\ngGP@DjfjhDNfFJ]FkgARVyP\\DahP>\ngGP@DjfjhDNfFJ]FkgARVyP\\Dao`<\ngGP@DjfjhDNfFJ]FkgARVyP\\Dao`>\ngGP@Djyj`NbIIZwLwmdMB\ngGP@Djyj`NbIIZwLwndMB\ngGP@Djyj`NbIIZwL{mdMB\ngGP@Djyj`NbIIZwL{ndMB\ngGP@Djyj`NbIIkWLwmdMB\ngGP@Djyj`NbIIkWLwndMB\ngGP@Djyj`NbIIkWL{ndMB\ngGP@Djyj`NbIIkYLTyK\\s^zPtH\ngGP@Djyj`NfFJ\\ek\\snBPtH\ngGP@Djyj`NfFJ\\ek_XICP`\ngGP@Djyj`NfFJ\\ek_XICP\x7FdlRP\ngGP@Djyj`NfFJ\\ekdacdmsNxICP`\ngGP@Djyj`NfFJ\\ekdacdm}`dMB\ngGP@Djyj`NfFJ\\ekdqSdmsNxICP`\ngGP@Djyj`NfFJ\\ekdqSdmsN{qCP`\ngGP@Djyj`NfFJ\\ekdqSdm}`dMB\ngGP@Djyj`NfFJ\\ekfabgI[f]pRFa@\ngGP@Djyj`NfFJ\\ekfabgI[{AHZD\ngGP@Djyj`NfFJ\\ekfabgI[{^HZD\ngGP@Djyj`NfFJ\\fm\\snBPtH\ngGP@Djyj`NfFJ\\fm_XICP`\ngGP@Djyj`NfFJ\\fmdacdmsNxICP`\ngGP@Djyj`NfFJ]Ek\\snBPtH\ngGP@Djyj`NfFJ]Ek_XICP`\ngGP@Djyj`NfFJ]Ekdacdm}`dMB\ngGP@Djyj`NfFJ]EkfabgI[f]pRFa@\ngGP@Djyj`NfFJ]EkfabgI[{AHZD\ngGP@Djyj`NfFJ]FmdacdmsNxICP`\ngGP@DjyjhdNbIIZwLwmdM|>\ngGP@DjyjhdNbIIZwLwndM|<\ngGP@DjyjhdNbIIZypXynYw[HZD<\ngGP@DjyjhdNbIIZypXynYw[HZD>\ngGP@DjyjhdNbIIZypXynYw]HZD<\ngGP@DjyjhdNbIIZypXynYw]HZD>\ngGP@DjyjhdNbII[WLwndMB<\ngGP@DjyjhdNbII[WLwndMB>\ngGP@DjyjhdNbII[WL{ndMB<\ngGP@DjyjhdNbII[WL{ndMB>\ngGP@DjyjhdNbII[YpXynYw]HZD<\ngGP@DjyjhdNbII[YpXynYw]HZD>\ngGP@DjyjhdNbII[YtTynYw]HZD<\ngGP@DjyjhdNbIIjypXenYw]H[x<\ngGP@DjyjhdNfFJ\\ek_XIC_@<\ngGP@DjyjhdNfFJ\\ek_XIC_@>\ngGP@DjyjhdNfFJ\\ekdacdm}`dM|<\ngGP@DjyjhdNfFJ\\ekdacdm}`dM|>\ngGP@DjyjhdNfFJ\\ekdacdm}`dM}~RqI@>\ngGP@DjyjhdNfFJ\\ekfabgI[f]pRF~@>\ngGP@DjyjhdNfFJ\\ekfabgI[{AH[x<\ngGP@DjyjhdNfFJ\\ekfabgI[{AH[x>\ngGP@DjyjhdNfFJ\\ekfabgI[{^H[x<\ngGP@DjyjhdNfFJ\\ekfabgI[{^H[x>\ngGP@DjyjhdNfFJ\\ekgAbVyg\\Dao`<\ngGP@DjyjhdNfFJ\\ekgAbVyg\\Dao`>\ngGP@DjyjhdNfFJ\\ekgAbV~pRF~@<\ngGP@DjyjhdNfFJ\\ekgAbV~pRF~@>\ngGP@DjyjhdNfFJ\\ekgAcfyg\\DahP<\ngGP@DjyjhdNfFJ\\ekgAcfyg\\DahP>\ngGP@DjyjhdNfFJ\\ekgAcf~pRFa@<\ngGP@DjyjhdNfFJ\\ekgAcf~pRFa@>\ngGP@DjyjhdNfFJ\\ekgQRV~pRF~@<\ngGP@DjyjhdNfFJ\\ekgQRV~pRF~@>\ngGP@DjyjhdNfFJ\\ekgQRV~wbF~@<\ngGP@DjyjhdNfFJ\\ekgQRV~wbF~@>\ngGP@DjyjhdNfFJ\\ekgQSfyg\\DahP<\ngGP@DjyjhdNfFJ\\ekgQSfyg\\DahP>\ngGP@DjyjhdNfFJ\\ekgQSf~pRFa@<\ngGP@DjyjhdNfFJ\\ekgQSf~pRFa@>\ngGP@DjyjhdNfFJ\\ekgQSf~wbFa@<\ngGP@DjyjhdNfFJ\\ekgQSf~wbFa@>\ngGP@DjyjhdNfFJ\\em\\snBPtH<\ngGP@DjyjhdNfFJ\\em\\snBPtH>\ngGP@DjyjhdNfFJ\\em_XICP`<\ngGP@DjyjhdNfFJ\\em_XICP`>\ngGP@DjyjhdNfFJ\\emdacdmsNxICP`<\ngGP@DjyjhdNfFJ\\emdacdmsNxICP`>\ngGP@DjyjhdNfFJ\\emgAbVyg\\DahP<\ngGP@DjyjhdNfFJ\\emgAbVyg\\DahP>\ngGP@DjyjhdNfFJ\\emgAbV~pRFa@<\ngGP@DjyjhdNfFJ\\emgAcfyg\\DahP<\ngGP@DjyjhdNfFJ\\emgAcfyg\\DahP>\ngGP@DjyjhdNfFJ\\emgAcf~pRFa@<\ngGP@DjyjhdNfFJ\\emgAcf~pRFa@>\ngGP@DjyjhdNfFJ\\emgQSfyg\\DahP<\ngGP@DjyjhdNfFJ\\emgQSf~pRFa@>\ngGP@DjyjhdNfFJ\\fkgAbVyg\\Dao`<\ngGP@DjyjhdNfFJ\\fkgAbVyg\\Dao`>\ngGP@DjyjhdNfFJ\\fkgAbV~pRF~@<\ngGP@DjyjhdNfFJ\\fmgAcfyg\\DahP<\ngGP@DjyjhdNfFJ\\fmgAcfyg\\DahP>\ngGP@DjyjhdNfFJ]EkgAcfyg\\DahP<\ngGP@DjyjhdNfFJ]EkgAcfyg\\DahP>\ngGP@DjyjhdNfFJ]EkgAcf~pRFa@<\ngGP@DjyjhdNfFJ]EkgQSfyg\\DahP<\ngGP@DjyjhdNfFJ]EkgQSfyg\\DahP>\ngGP@DjyjhdNfFJ]EmgAcf~pRFa@>\ngGP@Dkij`NfFJ\\ek\\snBPtH\ngGP@Dkij`NfFJ\\ek_XICP`\ngGP@Dkij`NfFJ\\ek_XIC_@\ngGP@Dkij`NfFJ\\ekdabgMsNxICP`\ngGP@Dkij`NfFJ\\ekdabgM}`dMB\ngGP@Dkij`NfFJ\\ekgAbVyg\\Dao`\ngGP@Dkij`NfFJ\\ekgAbV~pRF~@\ngGP@Dkij`NfFJ\\ekgAbfyg\\DahP\ngGP@Dkij`NfFJ\\ekgAbf~pRFa@\ngGP@Dkij`NfFJ\\em_XICP`\ngGP@Dkij`NfFJ\\fmgAbfyg\\DahP\ngGP@Dkij`NfFJ\\fmgAbf~pRFa@\ngGP@DkijhdNfFJ\\ekdabdm}`dM|<\ngGP@DkijhdNfFJ\\ekgAbfyg\\Dao`>\ngGP@DkijhdNfFJ\\ekgAbf~pRF~@<\ngGP@DkijhdNfFJ\\ekgAbf~pRF~@>\ngGP@DkijhdNfFJ\\emgAbfyg\\DahP<\ngGP@DkijhdNfFJ\\emgAbfyg\\DahP>\ngGP@DkijhdNfFJ\\emgAbf~pRFa@<\ngGP@DkijhdNfFJ\\emgAbf~pRFa@>\ngGP@Lda`U@][IZwLvmdMB=\ngGP@Lda`U@][IZwLvmdMC~RqI@=\ngGP@Lda`U@][IZwLvmgu|=\ngGP@Lda`U@][IZwLvmgu}~RqI@=\ngGP@Lda`U@][IZwLvndMB\ngGP@Lda`U@][IZwLvndMC~RqI@\ngGP@Lda`U@][IZwLzndMB=\ngGP@Lda`U@][IZwLzndMC~RqI@=\ngGP@Lda`U@][IZyHTyK\\sjzPtH\ngGP@Lda`U@][IZyLTyK\\sZzPtH\ngGP@Lda`U@][IZyhXirVygUtahP=\ngGP@Lda`U@][IkWLvmdMB=\ngGP@Lda`U@][IkWLvndMB\ngGP@Lda`U@][IkWLzndMB=\ngGP@Lda`U@][IkYHTyK\\sjzPtH\ngGP@Lda`U@][IkYLTyK\\sZzPtH\ngGP@Lda`USH][IZwLvmdM|+\ngGP@Lda`USH][IZwLvmdM|-\ngGP@Lda`USH][IZwLvmdM}~RqI@+\ngGP@Lda`USH][IZwLvmdM}~RqI@-\ngGP@Lda`USH][IZwLvndM|<\ngGP@Lda`USH][IZwLvndM|>\ngGP@Lda`USH][IZyHTyK\\sjzPwp>\ngGP@Lda`USH][IZyLTyK\\sZzPwp>\ngGP@Lda`USH][IZyLTyK\\sZzPwwyKDd>\ngGP@Lda`USH][IZypTynYu]HZD<\ngGP@Lda`USH][IZypTynYu]HZD>\ngGP@Lda`USH][IZytTenYm]H[x<\ngGP@Lda`USH][IZytTenYm]H[x>\ngGP@Lda`USH][IZytTenYm]H[{|ebR<\ngGP@Lda`USH][IZytTenYm]H[{|ebR>\ngGP@Lda`USH][IZytTynYm]HZD<\ngGP@Lda`USH][IZytTynYm]HZD>\ngGP@Lda`USH][IZytTynYm]HZG|ebR<\ngGP@Lda`USH][IZytTynYm]HZG|ebR>\ngGP@Lda`USH][IZytTynYm]H[x<\ngGP@Lda`USH][IZytTynYm]H[x>\ngGP@Lda`USH][IZytTynYm]Okx<\ngGP@Lda`USH][IZytTynYm]Okx>\ngGP@Lda`USH][I[WLvmdMB+\ngGP@Lda`USH][I[WLvmdMB-\ngGP@Lda`USH][I[WLvndMB<\ngGP@Lda`USH][I[WLvndMB>\ngGP@Lda`USH][I[WLzndMB+\ngGP@Lda`USH][I[WLzndMB-\ngGP@Lda`USH][I[YHTyK\\sjzPtH<\ngGP@Lda`USH][I[YHTyK\\sjzPtH>\ngGP@Lda`USH][I[YLTyK\\sZzPtH<\ngGP@Lda`USH][I[YLTyK\\sZzPtH>\ngGP@Lda`USH][I[YpTenYu]HZD<\ngGP@Lda`USH][I[YpTenYu]HZD>\ngGP@Lda`USH][I[YpTynYu]HZD<\ngGP@Lda`USH][I[YpTynYu]HZD>\ngGP@Lda`USH][I[YtTenYm]HZD<\ngGP@Lda`USH][I[YtTenYm]HZD>\ngGP@Lda`USH][I[YtTynYm]HZD<\ngGP@Lda`USH][I[YtTynYm]HZD>\ngGP@Lda`USH][IjwLvmdM|+\ngGP@Lda`USH][IjwLvmdM|-\ngGP@Lda`USH][IjwLvndM|<\ngGP@Lda`USH][IjwLvndM|>\ngGP@Lda`USH][IjyHTyK\\sjzPwp<\ngGP@Lda`USH][IjyHTyK\\sjzPwp>\ngGP@Lda`USH][IjyLTyK\\sZzPwp<\ngGP@Lda`USH][IjyLTyK\\sZzPwp>\ngGP@Lda`USH][IjytTenYm]H[x<\ngGP@Lda`USH][IjytTenYm]H[x>\ngGP@Lda`USH][IjytTynYm]H[x<\ngGP@Lda`USH][IjytTynYm]H[x>\ngGP@Lda`USH][IkYpTynYu]HZD<\ngGP@Lda`USH][IkYpTynYu]HZD>\ngGP@Lda`USH][IkYtTynYm]HZD<\ngGP@Lda`USH][IkYtTynYm]HZD>\ngGPAEJU\\uPGSCENRusPqSdmsNxICP`\ngGPAEJU\\uPGSCENRusPqSdm}`dMB\ngGPAKrUM@@FyV}l}oP=\ngGPAMJUML@GVBgN\\EI[{AN{t\ngGPAMNRPpJ`Nmdm[f]WRFa@=\ngGPAMNRPpJ`Nmdukf[VrFa@=\ngGPAMNRPpJ`Nmdukf[WRFa@\ngGPAMNRPpJ`Nmdukf]WRFa@=\ngGPAMNRPpJ`NmdultLTyK\\sjzPtH=\ngGPAMNRPpJ`NmdulxJ\\wLzndMB>\ngGPAMNRPpJ`NmdulzJ\\wLvndMB>\ngGPAMvRPpJ`Nijyful}oP=\ngGPB@DZPLaYAJZjhCkAbf|PP\ngGPB@DZPLaYAJZjhCkAbj|PP\ngGPBABRDKaWAJnjhCkASf~pSz~@>\ngGPBADJHLQXaInjhCiQr\ngGPD@DDHRYjY@zTeWHwmg]v\ngGPD@DDHRYjY@zTeWHwmg]z\ngGPD@DDHRYjY@zTeWHwng]z\ngGPD@DDHRYjY@zTeYtTenQo]N{t\ngGPD@DDHRYjY@ztdunao[@\ngGPD@DDHRYjjTR`zLTykgAcfzpZD>\ngGPD@DFPRYfi@zLTykgQRVzp[t\ngGPD@DGpRYjY@ztduoao[oP\ngGPD@DHHRZzj@zL\\ek]DMB\ngGPD@DHHRZzj@zL\\ekgIrVyGexahP\ngGPD@DHHRZzj@zL\\ekgIrVzHZD\ngGPD@DHHR[f`@zd[h{np=\ngGPD@DHHR[ff@zL\\ek]GmB\ngGPD@DHHR[j`@zd[h{np=\ngGPD@DHHR[j`@zd[h{oP\ngGPD@DKpRYjZ@zLdfm\\c^vPtH\ngGPD@DSpRZVj@zlTyKV~pRFa@\ngGPD@DXHRfjj@zhXiKV~PRFa@\ngGPD@DXHRfjj@zhXiKWNCEM|`dMB\ngGPD@DXHRfjj@zhXjKV~PRFa@\ngGPD@DXHRfjjdPzhXiK[NCEM|`dMB<\ngGPD@DXHRfjjdPzhXiK[NCEM|`dMB>\ngGPD@DZ`R[ij@zLlfm\\cZvPtH\ngGPD@VIpRVjj@zlTyKV~pRFa@\ngGPD@bSpRZVj@zlTzMV~pRFa@\ngGPD@xIpR[j`@zd[d^Wcn{@=\ngGPD@xIpR[j`@zd[d^Wcn}@\ngGPD@xQpRjzj@zhTyKVyglDahP\ngGPD@xQpRkf`@zP\\wL{`gmz+\ngGPD@xQpRkf`@zP]WL{`g]v+\ngGPD@xQpRkf`@zP]WL{`gmz+\ngGPD@xUpRjZj@zhXirVyP\\Dao`\ngGPDADFHRYjY@zLTykgQRVzw[t\ngGPDADFHRYjjTRPzLTyk]XMB\ngGPDAHFPRYjjTRPzLTykgQRVzpZD\ngGPDAHFPRYjjTRPzLTykgQRVzp[x<\ngGPDAHFPRYjjTRPzLTykgQRVzp[x>\ngGPDAHJPRZzj@zL\\ek]DMB\ngGPDAHJPRZzj@zL\\ek]DM|\ngGPDAHJPRZzj@zL\\ek]GuB\ngGPDAbGDRYjjTRPzLTyk]XMB\ngGPDAbGDRYjjTRPzLTym]XMB>\ngGPDAbR`RYj`@zT]YtTeolD{oP>\ngGPDAxKpRYfj@zlTyKV~pRFa@\ngGPDAxSpRijj@zXXirVmr`xICP`\ngGPDAxSpRkj``PzP]WL}`g]v+\ngGPDAxSpRkj``PzP]WL}`g]v-\ngGPDAxSpRkj``PzP]WvB]wX+\ngGPDAxSpRkj``PzP]WvB]wX-\ngGPDAxSpRkjj`PzhTyKV~pRFa@<\ngGPDAxSpRkjj`PzhTyKV~pRFa@>\ngGPDaxF`Dgdjfj`NjFJ\\unTGAOjD\ngGPDaxF`Dgdjfj`NjFJ\\uodGAhP\ngGPDaxF`DgdjfjhDNjFJ]UodGAhP<\ngGPDaxF`DgdjfjhDNjFJ]UodGAhP>\ngGPEAxSpdiUuPPH]HNkf^pSn{@+\ngGPEAxSpdiUuPPH]HNkf^pSn{@-\ngGPFAVRDTIhPueaDfZj`NeEN]EIP>\ngGPH@DIJm]@]ZIZweB\ngGPH@DIKUU@]VJ\\ek\\cvBPtH\ngGPH@DIKUU@]VJ\\ek\\cvBPwp\ngGPH@DIKUU@]VJ\\ek_XICP`\ngGPH@DIKUU@]VJ\\ekgAbf~pRFa@\ngGPH@DILsP@]JNlzJRwvB]wh\ngGPH@DILuH@]JN[d^wSn{@=\ngGPH@DILuH@]JN[h{np=\ngGPH@DILuH@]JN[x^N{l=\ngGPH@DILuH@]JN[{]N{l=\ngGPH@DILuH@]RUrM{Yw]`=\ngGPH@DILuH@]RUrM{Yw^`\ngGPH@DILuH@]RUrM{Y{^`=\ngGPH@DILuH@]RUrM{iw]`=\ngGPH@DILuH@]RUrM{iw^`\ngGPH@DILuH@]RV]EI[d[wSn}@\ngGPH@DILuK@]FRRunQo[OZD\ngGPH@DILuK@]FRRunQo]OZD\ngGPH@DILuK@]FRRunQo]O[x\ngGPH@DILuK@]FRRuoao[hP\ngGPH@DILuK@]FRRvnQo[OZD\ngGPH@DILuK@]JRkd[vsn}@\ngGPH@DILuK@]JRkd[vsv}@\ngGPH@DILuPRH]JN[d^pSn{@+\ngGPH@DILuPRH]JN[d^pSn{@-\ngGPH@DILuPRH]JN[{AN{l+\ngGPH@DILuPRH]JN[{AN{l-\ngGPH@DILuPRH]JN[{AN{t>\ngGPH@DILuPRH]JNk{AN{l-\ngGPH@DIMMU@]VJ\\ekdqSdm}`dMB\ngGPH@DIMMU@]VJ\\ekgAbV~pRFa@\ngGPH@DIMMURH]VJ\\ekgQRV~pRFa@<\ngGPH@DIMMURH]VJ\\ekgQRV~pRFa@>\ngGPH@DIMtu@]FVRunQm[HZD\ngGPH@DIMtu@]FVRunQm]HZD\ngGPH@DISUU@]LLTyKVyP\\DahP\ngGPH@DISUU@]LLTyKWNCDmr`xIC_@\ngGPH@DISUU@]LLTyKWNCEMr`xICP`\ngGPH@DISUU@]LLTzMZyP\\DahP\ngGPH@DISUU@]LLUYKVyP\\DahP\ngGPH@DISUU@]LLUYKWNCEMr`xICP`\ngGPH@DISUU@]LLUYKZyP\\DahP\ngGPH@DISm]@]DJRundFa@\ngGPH@VILuH@]JN[h{np=\ngGPH@VILuH@]JN[x^N{l=\ngGPH@VILuH@]JN[{]N{l=\ngGPH@bILuH@]JN[h{np=\ngGPH@bILuH@]JN[{]N{l=\ngGPH@bILuH@]RUrM{Yw]`=\ngGPH@bILuH@]RUrM{iw]`=\ngGPH@bISUU@]LLUYKVyP\\DahP\ngGPH@xIKUU@]VJ\\ek\\cvBPtH\ngGPH@xILuH@]JN[d^wSn{@=\ngGPH@xILuH@]JN[x^N{l=\ngGPH@xIMMU@]VJ\\ek\\cvBPtH\ngGPH@xITuP@]XJ\\wJC`g]z\ngGPH@xITuP@]XJmWJC`g]v=\ngGPH@xITuP@]XJmWJC`g]z\ngGPH@xITuPPH]XJ]WJC`g]v+\ngGPH@xITuPPH]XJ]WJC`g]v-\ngGPH@xITuU@]LLTyKVyP\\DahP\ngGPH@xIUMT`]LLTyKVyP\\DaoP\ngGPH@xIUMT`]LLTyKV~P\\Da@\ngGPH@xIUMT`]LLTyMV~P\\Da@\ngGPH@xIUMT`]LLTzMV~P\\Da@\ngGPH@xIUMU@]LLTyKVyP\\DahP\ngGPH@xIUMU@]LLTyKVyP\\Dao`\ngGPH@xIUMU@]LLTyKVyP\\D~hP\ngGPH@xIUMU@]LLTyKWNCDmr`xICP`\ngGPH@xIUMU@]LLTyKZyP\\DahP\ngGPH@xIUMU@]LLTyMVyP\\DahP\ngGPH@xIUMU@]LLTzMVyP\\DahP\ngGPH@xIUMU@]LLTzMWNCDmr`xICP`\ngGPH@xIUMU@]LLTzMZyP\\DahP\ngGPHABILuH@]JN[h{np=\ngGPHABITuP@]XJmWJC`g]v=\ngGPHABITuP@]XJmWJC`g]z\ngGPHABITuP@]XJmWJC`gmz=\ngGPHABITuS@]LLTyKWNCGMr`xI{P`>\ngGPHADILuH@]JN[h{np=\ngGPHADILuH@]JN[{]N{l=\ngGPHADILuH@]JN\\zJRwvz]wh\ngGPHADILuPRH]JN[{AN{l+\ngGPHADILuPRH]JN[{AN{l-\ngGPHADILuUJIP]VJ\\ekgQRV~pRF~@<\ngGPHADIMMU@]VJ\\ek_XICP`\ngGPHADIMMU@]VJ\\ekdqSdm}`dMB\ngGPHADIMMURH]VJ\\ekgQRV~pRFa@<\ngGPHADIMMURH]VJ\\ekgQRV~pRFa@>\ngGPHADIMMURH]VJ\\ekgQrV~pSza@>\ngGPHAHILuH@]JN[{]N{l=\ngGPHAHILuK@]VJ\\ekgQRVzOZD\ngGPHAHILuK@]VJ\\ekgQRV~wSva@\ngGPHAHILuPRH]JN[{AN{l-\ngGPHAHIMMU@]VJ\\ekdqSdm}`dMB\ngGPHAHIMMURH]VJ\\ekgQRV~pRFa@<\ngGPHAHIMMURH]VJ\\ekgQRV~pRFa@>\ngGPHAVILuH@]JN[{]N{l=\ngGPHAVILuH@]JN\\zJRwvz]wh\ngGPHAVIMMU@]VJ\\ekdqSdm}`dMB\ngGPHAbIKUU@]VJ\\ek_XICP`\ngGPHAbILuH@]JN[{]N{l=\ngGPHAbILuPRH]JN[{AN{l+\ngGPHAbILuPRH]JN[{AN{l-\ngGPHAbILuPRH]JN\\zJ\\wvB^wh<\ngGPHAbILuUJIH]VJ]EmgQSf~pRFa@>\ngGPHAbIMMU@]VJ\\ekdqSdm}`dM|\ngGPHAxILsP@]JNk{AN{l=\ngGPHAxILuH@]JN[d^wSn{@=\ngGPHAxILuH@]JN[h{np=\ngGPHAxILuH@]JN[x^N{l=\ngGPHAxILuH@]JN[x^N{t\ngGPHAxILuH@]JN[{]N{l=\ngGPHAxILuPRH]JN[d^pSn{@+\ngGPHAxILuPRH]JN[d^pSn{@-\ngGPHAxILuUJIH]VJ\\ekgQSfyGlDahP<\ngGPHAxIMMU@]VJ\\ekdqSdmrOXICP`\ngGPHAxIMMU@]VJ\\ekdqSdm}`dMB\ngGPHAxITuP@]XJ\\wJC`g]v=\ngGPHAxITuP@]XJ\\wJC`g]z\ngGPHAxITuP@]XJ\\wJC`gmz=\ngGPHAxITuP@]XJmWJC`g]v=\ngGPHAxITuP@]XJmWJC`g]z\ngGPHAxITuP@]XJmWJC`gmz=\ngGPHAxITuP@]XJmYHXiK\\hNB]wh\ngGPHAxITuP@]XJmYhXirVyP\\D}oP=\ngGPHAxITuPPH]XJ]WJC`g]v+\ngGPHAxITuPPH]XJ]WJC`g]v-\ngGPHAxITuPPH]XJ]WJC`g]z<\ngGPHAxITuPPH]XJ]WJC`g]z>\ngGPHAxITuPPH]XJ]WJC`gmz+\ngGPHAxITuPPH]XJ]WJC`gmz-\ngGPHAxITuPPH]XJlwJCoG]v+\ngGPHAxITuPPH]XJlwJCoG]v-\ngGPHAxITuS@]LLUZKVyP\\D}hP\ngGPHAxITuU@]LLTyKVyP\\DahP\ngGPHAxITuU@]LLUZKVyP\\DahP\ngGPHAxITuUPH]LLTzKVyP\\DahP<\ngGPHAxITuUPH]LLTzKVyP\\DahP>\ngGPHKPITuURH]TLTyM\\hNBPwp<\ngGPHKPYIC@jfPzVRwtvmdH+\ngGPHKPYIC@jfPzVRwtvmdH-\ngGPHKPYIC@jfPzVRytTenYm]H[x>\ngGPHMPITtp@]HJ[e]wcn{@=\ngGPHMPITtp@]HJ[e]wcv}@=\ngGPHMPITtp@]HJ[h{np=\ngGPHMPITtp@]HJ[y]N{l=\ngGPHMPITtp@]HJ[y]O[t=\ngGPHMPYIC@j@zvRunYu]HZD=\ngGPHMPYIC@j@zvRvnYu]HZD+\ngGPHMPYIC@j@zvRvshis\\sZzPtH>\ngGPHMPYIC@j@zvSVnYm[HZD=\ngGPHMPYIC@j@zvSVnYm]HZD\ngGPHMPYIC@j@zvSVnYu]HZD=\ngGPHMPYIC@j@zvSVsPqSdmsNkiCP`=\ngGPHMPYIC@j@zvSVshis\\sZzPtH>\ngGPHMPYICFj@zXXjrVv\\EN[f]PRFa@>\ngGPHMPYICFj@zXXjrZusNhICP`\ngGPHMPYICJj@zXXirVnRFJ\\wLB`dMB>\ngGPHaxCeJSLuPGUbgI[YtTynQwAHZD>\ngGPI@DBTjZh@NlEVkeApSn{@=\ngGPI@DBTjZhHDNlENkeApSn}@<\ngGPI@DBTjZhHDNlENlxJRwJC`g]z<\ngGPI@DBTjZhHDNlENlxJRwJC`g]z>\ngGPI@DZTfzZ`NcKIkWHvmdMB\ngGPI@VBTjZh@NlEVkeApSn{@=\ngGPIAxBTfZd@NeGMrO[iw]`=\ngGPIAxBTfZhIDNeGMrOXIw]`+\ngGPIAxBTfZhIDNeGMrOXIw]`-\ngGPIAxBTffj`NkENRurXirVyGlDahP\ngGPIAxBTffj`NkENRurXirV~pRFa@\ngGPIAxBTijj`NfFJ\\ek\\kvBPtH\ngGPIAxBTjZh@NlEN[eApSn}@\ngGPIAxBTjZh@NlEVkeApSn{@=\ngGPIAxBTjZh@NlEVkeApSn}@\ngGPIAxBTjZh@NlEVkeApSv}@=\ngGPIAxBTjZhHDNlENkeApSv}@+\ngGPIAxBTjZhHDNlENkeApSv}@-\ngGPIAxBTjZj`NfFJ\\ek\\hNBPtH\ngGPIAxBTjZjhDNfFJ]Ek\\hNBPtH<\ngGPIAxBTjZjhDNfFJ]Ek\\hNBPtH>\ngGPIAxBTjfjPNfFJmFk\\hNBPwh\ngGPIAxBTjfj`NfFJ\\ek\\hNBPtH\ngGPIAxBTjfj`NfFJ\\em\\hNBPtH\ngGPIAxBTjfj`NfFJ\\fk\\hNBPtH\ngGPIAxBTjfj`NfFJ]Fk\\hNBPtH\ngGPIAxBTjfj`NfFJ]FkgAbVyP\\DahP\ngGPIAxBTjfj`NfFJmFk\\hNBPtH\ngGPIAxBTjfj`NfFJmFm\\hNBPtH\ngGPIEPKdkij`NfFJ]Fm\\snBPtH\ngGPIEPKdkjj`NfFJ\\em\\pNBPtH\ngGPIEPKdkjj`NfFJ\\fm\\pNBPtH\ngGPIEPKdkjj`NfFJ\\fmgAbfy`\\DahP\ngGPIEPKdkjj`NfFJ]Fm\\pNBPtH\ngGPIMP[djZX@NdEMrn{qw]`=\ngGPIMP[djZX@NdEMrn{q{^`=\ngGPIMP[lda`U@][I[WLzndMB+\ngGPIMP[lda`U@][IkWLvndMB\ngGPIMP[lda`U@][IkWLzndMB=\ngGPIMP[ldaeU@]LLTyK[ICEN[fAPRFa@>\ngGPIMP[ldaeU@]LLTyMZy`TDahP\ngGPJ@DQpSa``aBTuUPGVCFvRFJ\\wR}P`\ngGPJ@xQpSagBnFRRVj`NdDmsOKv}_@\ngGPL@DXHHPeMUTAtPqSWICEN[i^hP\ngGPL@xIpsadTajhCkQKWNSdm|OKuB\ngGPL@xQpSaddLZ@CjAnYu^O[t+\ngGPL@xQpSaddajhCharVmsOKqCP`\ngGPL@xQpSaddajhCharVmsOKqC__d`XP\ngGPLADHHhPdtuTAtXirVzwc{|dcb\ngGPLAHJPtadTajdCkQKT\ngGPLAHJPtadTajdCkQKV|oP\ngGPLAHJPtadTajhCkQKV|hP\ngGPLAHJPtadTajhCkQKV|o`\ngGPLAHJPtadTajhCkQKZ|hP\ngGPP@cTfyi`NeGH\ngGPPAcTijj`NlFJ\\xLTwbB\ngGPP`cUuyInZXCiQr\ngGPQ@c[rS\\tpGRcd\ngGPT@cYPZ`R[jj@zT\\`\ngGPTHlPxUpRjZj@zPXwe|\ngGPTHlPxUpRjZj@zPXypXeoKx\ngGPTHlQxUpRjvj@zPTwe|\ngGPTHlQxWpRjvj@zPTwe|\ngGPTIcQxIpRVjj@zTTw`|\ngGPUHlQxWpOIU[UPH]HJ[r~@<\ngGPUHlQxWpOIU[UPH]HJ[r~@>\ngGPXHlPDYIHUj@zp\\uoJD\ngGPXHlPDYIHUj@zp\\usdyK^TH\ngGPXHlPxIUMU@]XLZweB\ngGPXHlPxIUMU@]XL[WeB\ngGPXHlQxIU[U@]XJZweB\ngGPXHlQxIU[U@]XJZyLTyK^TH\ngGPXHlQxIU[U@]XJ[WeB\ngGPXHlQxIU[UPH]XJZytTeoJD<\ngGPXHlQxIU[UPH]XJZytTeoJD>\ngGPXHlQxIU[UPH]XJ[YtTeoJD<\ngGPXHlQxIU[UPH]XJ[YtTeoJD>\ngGPXIcPVIKUU@]JJP\ngGPXhlQx[crUVuPGVBfmyP`\ngGPYAcUPKdkjj`NlFJ[rA@\ngGPYAcUPKdkjj`NlFJ\\xLTwdB\ngGPYAcUPKdkjj`NlFR\\xLTwdB\ngGPYHlPDGlddJu@]XNZweB\ngGPYHlQxGdjmjhDNlEM[ra@<\ngGPYHlQxGdjmjhDNlEM[ra@>\ngGPYHlQxGdjmjhDNlEM\\zJRweB<\ngGPYHlQxGdjmjhDNlEM\\zJRweB>\ngGPYHlQxGdjmjhDNlEMkra@<\ngGPYHlQxGdjmjhDNlEMkra@>\ngGPYHlQxGdjmjhDNlEMlzJRweB<\ngGPYHlQxGdjmjhDNlEMlzJRweB>\ngGP`@TfYi`NcENZytTenlFa@\ngGP`@TfYi`NcEN[YtTenlFa@\ngGP`@TfYi`NcENkWVCP`\ngGP`@TfYi`NcENkYtTenlFa@\ngGP`@TfYjPNcENZytTenlF}@\ngGP`@TfYjPNcENZytTenmz}@\ngGP`@TfYjPNcENZytTeoLD\ngGP`@TfYjPNcENjytTenlF}@\ngGP`@TfYjPNcENjytTeoLD\ngGP`@TfYjPNmEV[{AN{l\ngGP`@TfYjPNmEV[{AN{t\ngGP`@TfYjPNmEVk{AN{l\ngGP`@TfYjPNmEVk{AN{t\ngGP`@TfYjPNmEVlzJRwvB]wh\ngGP`@TfYjhhNcENZwVCP`<\ngGP`@TfYjhhNcENZwVCP`>\ngGP`@TfYjhhNcENZwV}P`<\ngGP`@TfYjhhNcENZyLTyK]XMB<\ngGP`@TfYjhhNcENZyLTyK]XMB>\ngGP`@TfYjhhNcENZytTenlFa@<\ngGP`@TfYjhhNcENZytTenlFa@>\ngGP`@TfYjhhNcENZytTenlF~@<\ngGP`@TfYjhhNcENZytTenlF~@>\ngGP`@TfYjhhNcENZytTenmza@<\ngGP`@TfYjhhNcENjwVCP`<\ngGP`@TfYjhhNcENjwVCP`>\ngGP`@TfZfPNeIUrM{Yw]`\ngGP`@TfZfPNeIV]EI[d[wSn}@\ngGP`@TfZjeDdNcENZwVCP`\ngGP`@TfZjeDdNcENZwVC_@<\ngGP`@TfZjeDdNcENZyHXiK]XMB<\ngGP`@TfZjeDdNcENZyHXiK]XMB>\ngGP`@TfZjeDdNcENZyHXiK]XM|<\ngGP`@TfZjeDdNcENZyhXirVzpZD\ngGP`@TfZjeDdNcENZypXenlFa@<\ngGP`@TfZjeDdNcENZypXenlFa@>\ngGP`@TfZjeDdNcENZypXenlF~@>\ngGP`@TfZjeDdNcENZytTenlFa@\ngGP`@TfZjeDdNcENZytTenlF~@<\ngGP`@TfZjeDdNcENZytTenlF~@>\ngGP`@TfZjeDdNcEN[WVCP`<\ngGP`@TfZjeDdNcEN[WVCP`>\ngGP`@TfZjeDdNcEN[YtTynlFa@<\ngGP`@TfZjeDdNcEN[YtTynlFa@>\ngGP`@TfZjeDdNcENkWVCP`\ngGP`@TfZjeDhNcENZwVCP`<\ngGP`@TfZjeDhNcENZwVCP`>\ngGP`@TfZjeDhNcENZwVC_@<\ngGP`@TfZjeDhNcENZwVC_@>\ngGP`@TfZjeDhNcENZyHXiK]XMB<\ngGP`@TfZjeDhNcENZyHXiK]XMB>\ngGP`@TfZjeDhNcENZyhXirVzpZD<\ngGP`@TfZjeDhNcENZyhXirVzpZD>\ngGP`@TfZjeDhNcENZypXenlFa@<\ngGP`@TfZjeDhNcENZypXenlFa@>\ngGP`@TfZjeDhNcENZypXynlFa@>\ngGP`@TfZjeDhNcENZytTenlFa@<\ngGP`@TfZjeDhNcENZytTenlFa@>\ngGP`@TfZjeDhNcENZytTenlF~@<\ngGP`@TfZjeDhNcENZytTenlF~@>\ngGP`@TfZjeDhNcENZytTenmz~@<\ngGP`@TfZjeDhNcEN[WVCP`<\ngGP`@TfZjeDhNcEN[WVCP`>\ngGP`@TfZjeDhNcEN[YpXenlFa@<\ngGP`@TfZjeDhNcENkWVCP`<\ngGP`@TfZjeDhNcENkWVCP`>\ngGP`@TfzZihNcENZweB>\ngGP`@TfzZihNcENZytTeneva@>\ngGP`@TfzZihNmKM[x[VzD<\ngGP`@TfzZihNmKM[x[VzD>\ngGP`@dfnjPNcGIZyr\\enbF}@\ngGP`@dfnjPNcGIZyr\\eoBD\ngGP`@dfnj`NcGIZwQCP`\ngGP`@dfnj`NcGIZyHXiK]DMB\ngGP`@dfnj`NcGIZyHXiK]DM|\ngGP`@dfnj`NcGIZyr\\enbFa@\ngGP`@dfnj`NcGIZyr\\enbF~@\ngGP`@dfnj`NcGIZyr\\encza@\ngGP`@dfnj`NcGI[WQCP`\ngGP`@dfnj`NcGIjyHXiK]DMB\ngGP`@dfnjiDNcGIZyHTyK]DMB<\ngGP`@dfnjiDNcGIZyHTyK]DMB>\ngGP`@dfnjiDNcGIZypTenbFa@<\ngGP`@dfnjiDNcGIZypTenbFa@>\ngGP`@dfnjiDNcGIZypTenbF~@<\ngGP`@dfnjiDNcGIZypTencza@<\ngGP`@dfnjiDNcGIZypTencza@>\ngGP`@dfyh@NiFzN{l=\ngGP`@dfyh@NiFzN{t\ngGP`@dfyh@NiFzO[t=\ngGP`@dfyh@NiGNbdmt]wh\ngGP`@dfyh@NiGNbgMt^wh\ngGP`@dfyi`NcGIZwQ{P`\ngGP`@dfyi`NcGIZwQ{P\x7FdlRP\ngGP`@dfyi`NcGIZwQ{_@\ngGP`@dfyi`NcGIZweB\ngGP`@dfyi`NcGIZwe|\ngGP`@dfyi`NcGIZytTencva@\ngGP`@dfyi`NcGIZytTeoJD\ngGP`@dfyi`NcGIZytTyncva@\ngGP`@dfyi`NcGIZytTyncv~@\ngGP`@dfyi`NcGIZytTyoJD\ngGP`@dfyi`NcGI[WQ{P`\ngGP`@dfyi`NcGI[WeB\ngGP`@dfyi`NcGI[YtTyncva@\ngGP`@dfyi`NcGI[YtTyoJD\ngGP`@dfyi`NeGUt]wX\ngGP`@dfyi`NeGUt]wh\ngGP`@dfyi`NeGUt^wX\ngGP`@dfyi`NeGUt^wh\ngGP`@dfyi`NeGV]EN[h}oP\ngGP`@dfyj`NcGIZwQCP`\ngGP`@dfyj`NcGIZwQCP\x7FdlRP\ngGP`@dfyj`NcGIZwQ}_@\ngGP`@dfyj`NcGIkWQCP`\ngGP`@dfyjidNcGIZwQC_@<\ngGP`@dfyjidNcGIZwQC_@>\ngGP`@dfyjidNcGIZyLTyK]DM|>\ngGP`@dfyjidNcGIZytTenbF~@<\ngGP`@dfyjidNcGIZytTenbF~@>\ngGP`@dfyjidNcGIZytTynbFa@<\ngGP`@dfyjidNcGIZytTynbFa@>\ngGP`@dfyjidNcGIZytTynbF~@<\ngGP`@dfyjidNcGIZytTynbF~@>\ngGP`@dfyjidNcGI[WQCP`<\ngGP`@dfyjidNcGI[WQCP`>\ngGP`@dfyjidNcGI[YtTynbFa@>\ngGP`@dfyjidNcGIjwQC_@<\ngGP`@dfyjidNcGIjwQC_@>\ngGP`@dfzh@NiFzN{l=\ngGP`@dfzh@NiFzN{t\ngGP`@dfzh@NiGICEI[h{oP\ngGP`@dfzhIDNiGNBdmt]wh<\ngGP`@dfzhIDNiGNBdmt]wh>\ngGP`@dfzj`NcGIZwQCP`\ngGP`@dfzj`NcGIZyhXirVzHZD\ngGP`@dfzjeEdNcGIZypTynbFa@<\ngGP`@dfzjeEdNcGIZypTynbFa@>\ngGP`@dfzjeEhNcGIZypTynbFa@>\ngGP`ADkjj`NjENRuolDahP\ngGP`ADkjj`NjENRurPqSf~pRFa@\ngGP`ADkjj`NjENRus`qK_XIC_@\ngGP`ADkjj`NjENRus`qS_XICP`\ngGP`ADkjj`NjENRvolDahP\ngGP`ADkjj`NjENcVolDahP\ngGP`ADkjj`NjENcVrPqSf~pRFa@\ngGP`ATeVn`NeDh\ngGP`ATffj`NcENRwVBP`\ngGP`ATffjiDNcENRwVB_@<\ngGP`ATffjiDNcENRwVB_@>\ngGP`ATffjiDNcENRytTenlDa@<\ngGP`ATffjiDNcENRytTenlDa@>\ngGP`ATffjiDNcENSWVBP`>\ngGP`Adeij`NcEIZwQCP`\ngGP`Adijj`NjFJRuodDahP\ngGP`Adijj`NjFJRuodD~o`\ngGP`Adijj`NjFJRurPqrV~WbFa@\ngGP`Adijj`NjFJRus`qS_HICP`\ngGP`Adijj`NjFJRus`qS_KqCP`\ngGP`Adijj`NjFJSVs`qS_HICP`\ngGP`Adijj`NjFJbus`qS_HICP`\ngGP`AdijjiDNjFJRuodDao`<\ngGP`AdijjiDNjFJRuodDao`>\ngGP`AdijjiDNjFJRurPqSf~PRFa@>\ngGP`AdijjiDNjFJRurPqSf~WbFa@<\ngGP`AdijjiDNjFJRurPqSf~WbFa@>\ngGP`AdijjiDNjFJRurPqrV~PRF~@>\ngGP`AdijjiDNjFJRus`qK_HIC_@<\ngGP`AdijjiDNjFJRus`qK_HIC_@>\ngGP`AdijjiDNjFJRus`qK_KqC_@>\ngGP`AdijjiDNjFJRus`qS_HIC_@<\ngGP`AdijjiDNjFJRus`qs_HICP`<\ngGP`AdijjiDNjFJRus`qs_HICP`>\ngGP`AdijjiDNjFJRus`qs_HIC_@<\ngGP`AdijjiDNjFJRus`qs_HIC_@>\ngGP`AdijjiDNjFJRus`qs_KqCP`<\ngGP`AdijjiDNjFJRus`qs_KqCP`>\ngGP`AdijjiDNjFJRvodDahP<\ngGP`AdijjiDNjFJRvodDahP>\ngGP`AdijjiDNjFJRvs`qS_HICP`<\ngGP`AdijjiDNjFJRvs`qS_HICP`>\ngGP`AdijjiDNjFJRvs`qs_HICP`<\ngGP`AdijjiDNjFJRvs`qs_HICP`>\ngGP`AdijjiDNjFJSUs`qK_HIC_@<\ngGP`AdijjiDNjFJSUs`qK_HIC_@>\ngGP`AdijjiDNjFJbus`qK_HIC_@<\ngGP`AdijjiDNjFJbus`qs_HICP`<\ngGP`AdijjiDNjFJbus`qs_HICP`>\ngGP`AdijjiDNjFJbvs`qs_HICP`<\ngGP`AdijjiDNjFJbvs`qs_HICP`>\ngGPa@SrSLuHGQbgM\\zJRwVC^`\ngGPa@SrSMSHGQbgM\\zJRwV{^`\ngGPa@erS\\t@GTc]G]v=\ngGPa@erS\\t@GTc]G]z\ngGPa@erS\\t@GTc]Gmz=\ngGPa@erS\\tpGQcdm[ra@\ngGPa@erS\\uPGQcdm[hahP\ngGPa@erS\\uPGQcdm[hah_rVIH\ngGPa@erS\\uTrGQcdmkhahP<\ngGPa@iJS]T@GTc]G]v=\ngGPa@krS\\t@GTc]Gmz\ngGPa@mrS\\uPGRcjzO[t\ngGPdCPVZ`R[ij@ztTyoEt\ngGPdE`DRPrRRrtAu`ek^TH\ngGPdH`DTHrRPkTAu`yK]DM|\ngGPdH`DWprRPkTAu`yK]DM|\ngGPdH`VTlRjZj@zHXzM_XIC_@\ngGPdH`VUpRjZj@zHXzM_XIC_@\ngGPdH`xUpRjZj@zHXyK_XIC_@\ngGPdH`xUpRjZj@zHXyKgAbV~pRF~@\ngGPdH`xUpRjZj@zHXzM_XIC_@\ngGPdH`xUpRjZj@zHXzMgAbV~pRF~@\ngGPdH`xUpRjZj`PzHXyM_XIC_@<\ngGPdH`xUpRjZj`PzHXyM_XIC_@>\ngGPdH`xV`RjZj@zHXzM]XIB\ngGPdI`VIpRVjj@zLTfm_CqCP`\ngGPeE`DSpGIM\\uRH]FNSUnbFa@>\ngGPeH`VUDliUMU@]DL]FnlDa@\ngGPh@iPIMuP@]RMt]wX=\ngGPh@iPIMuP@]RMt]wh\ngGPh@iPIMuP@]RMt^wh=\ngGPh@iPIMuP@]RN\\EI[h{oP>\ngGPh@iPIMuS@]FNRuncva@\ngGPh@iPIMuS@]FNRuoJD\ngGPh@iPIMuS@]FNRvncva@\ngGPh@iPIMuS@]FNRvoJD\ngGPh@iPIMuS@]JNkh{oP\ngGPh@iPIMuU@]FNRunbFa@\ngGPh@iPIMuUSH]FNRvnbFa@>\ngGPhCPDILuK@]JR[h[vp\ngGPhCPDILuK@]JR[h[wP\ngGPhCPDILuK@]ZJ\\`\ngGPhCPDILuK@]ZJ\\wfz\ngGPhCPDILuSRH]ZJ\\wP}``>\ngGPhCPDILuSRH]ZJ\\wfB<\ngGPhCPDILuSRH]ZJ\\wfB>\ngGPhCQBILuK@]ZJ\\wfz\ngGPhCQDILuSRH]ZJ\\wfB>\ngGPhCQbILuSRH]ZJ\\wfB>\ngGPhCQxILsS@]ZJ\\wfB\ngGPhCQxILuK@]ZJ\\wP}n`\ngGPhCQxILuK@]ZJ\\wfz\ngGPhDPDIMuUJKH]ZNZytTeoJD<\ngGPhDPDIMuUJKH]ZNZytTeoJD>\ngGPhH`DYIHUi@zH\\ek^DH\ngGPhH`DYIHUi@zH\\ekgIrVzH[t\ngGPhH`DYIHUi@zH\\fk]DMz\ngGPhH`DYIHUi@zH\\fk^DH\ngGPhH`DYIHUj@zH\\ek]DMB\ngGPhH`DYIHUj@zH\\ekgIrVzHZD\ngGPhH`DYIHUj@zH\\em]DMB\ngGPhH`DYIHUj@zH\\fk]DMB\ngGPhH`DYIHUj@zH\\fk]DM|\ngGPhH`DYIHUj@zH\\fm]DMB\ngGPhH`xIUMU@]TL\\ek_XICP`\ngGPhH`xIUMU@]TL\\ek_[q}P`\ngGPhH`xIUMU@]TL\\ekgAbV~pRF~@\ngGPhH`xIUMU@]TL\\ekgAbV~wcza@\ngGPhH`xIUMU@]TL\\em_XICP`\ngGPhH`xIUMU@]TL]Fm_XICP`\ngGPhH`xYIHZj@zH\\ek]DMB\ngGPhHaVYICE`@z`[h{oP\ngGPhHaVYICJ`@z`[h{np=\ngGPhHaxIU[U@]TJ\\ek_XICP`\ngGPhHaxIU[U@]TJ]Fm_XICP`\ngGPhHaxIU[UPH]TJ\\fk_XICP`<\ngGPhHaxYICJ`@z`[h{oP\ngGPhI`xIKUU@]FJRuoaxahP\ngGPhaePRUrUuUPGUCEIkWtBPtH\ngGPhaePRUrUuUPGUCEIkYpXiohDahP\ngGPiAePKdkjj`NjFJSVs`qS_PICP`\ngGPiCPDWdfZe`NeIMtM{X\ngGPllQHR`TaNliM]U@]ZNZyr\\eoJD\ngGPmLQHR`TaNRZzj@zt\\usdyK^TH\ngGQ@@dmMTAuXirVm}`dMB\ngGQ@@dmMTAuXirVm}`dM|\ngGQ@@dmMTAuXirVu}`dMB\ngGQ@@dmMTAuXirZu}`dMB\ngGQ@@dmUTAuXirVm}`dMB\ngGQ@@dmUTAuXirVm}`dM|\ngGQ@@dmUTAuXirVnRFJ\\wvBPtH\ngGQ@@dmUTAuXirVn\\FJ[{AHZD\ngGQ@@dmUTAuXirVu}`dMB\ngGQ@@dsM@AthyolD{np=\ngGQ@@dsM@AthyolD{oP\ngGQ@@dsM@AthyolD}oP=\ngGQ@@dsM@Athyomx{np=\ngGQ@@dsM@Athyomx{oP\ngGQ@@dsM@AthyshiK_XIw^`\ngGQ@@dsM@AthyshiK_[qw^`\ngGQ@@dsM@Athyshis_XI{^`\ngGQ@@dsM@Athyshis_[q{^`\ngGQ@@dsM@AthzolD{np=\ngGQ@@dsM@AthzolD{oP\ngGQ@@dsM@AthzolD}oP=\ngGQ@@dsM@AthzshiK_XIw^`\ngGQ@@dsM@Athzshis_XI{^`\ngGQ@@dsMLAuXirVmu`tH\ngGQ@@dsMLAuXirVmu`wp\ngGQ@@dsMLAuXirVmuoTH\ngGQ@@dsMLAuXirVm}`gmB\ngGQ@@dsMLAuXirVm}`gm|\ngGQ@@dsMLAuXirVn]EI[kAhP\ngGQ@@dsMLAuXirVn]EI[kAo`\ngGQ@@dsMLAuXirVn]EI[k^hP\ngGQ@@dsMLAuXirVn]EI[{AOZD\ngGQ@@dsMLAuXirVn]EI[{AO[x\ngGQ@@dsMLAuXirVn]EI[{^OZD\ngGQ@@dsMLAuXirVn]EN[kAhP\ngGQ@@dsMLAuXirVn]EN[kAo`\ngGQ@@dsMLAuXirVn]EN[k^hP\ngGQ@@dsMLAuXirVn]EN[{AOZD\ngGQ@@dsMLAuXirVn]EN[{AO[x\ngGQ@@dsMLAuXirVn]EN[{^OZD\ngGQ@@dsMLAuXirVu}`gmB\ngGQ@@dsMLAuXirVv]EI[{AOZD\ngGQ@@dsMLAuXirVv]EN[kAhP\ngGQ@@dsMLAuXirVv]EN[{AOZD\ngGQ@@dsMLAuXitVmu`tH\ngGQ@@dsMLAuXitVmu`wp\ngGQ@@dsMLAuXitVm}`gmB\ngGQ@@dsMLAuXitVm}`gm|\ngGQ@@dsMLAuXitVn]EI[kAhP\ngGQ@@dsMLAuXitVn]EI[kAo`\ngGQ@@dsMLAuXitVn]EI[{AOZD\ngGQ@@dsMLAuXitVn]EI[{AO[x\ngGQ@@dsMLAuXitVn]EN[kAhP\ngGQ@@dsMLAuXitVn]EN[kAo`\ngGQ@@dsMLAuXitVn]EN[{AOZD\ngGQ@@dsMLAuXitVn]EN[{AO[x\ngGQ@@dsMLAuXitVuu`tH\ngGQ@@dsMLAuXitVu}`gmB\ngGQ@@dsMLAuXitVv]EN[kAhP\ngGQ@@dsMLAuXitVv]EN[{AOZD\ngGQ@@dsMLAuhjs_XIw]`\ngGQ@@dsMLAuhjs_XIw^`\ngGQ@@dsMLAuhjs_XI{]`\ngGQ@@dsMLAuhjs_XI{^`\ngGQ@@dsMLAuhjs_[qw^`\ngGQ@@dsMLAuhjsgQSf~pSv{@\ngGQ@@dsMLAuhjsgQSf~pSv}@\ngGQ@@dsMLAuhju_XIw^`\ngGQ@@dsMLAuhju_XI{]`\ngGQ@@dsMLAuhju_XI{^`\ngGQ@@dsMLAuhjugQSf~pSv{@\ngGQ@@dsMLAuhjugQSf~pSv}@\ngGQ@@dsMTAuXirVm}`dMB\ngGQ@@dsMTAuXirVm}`dMC~RqI@\ngGQ@@dsMTAuXirVm}oDMB\ngGQ@@dsMTAuXirVnSENRwvBPtH\ngGQ@@dsMTAuXirVnSENRwv|PtH\ngGQ@@dsMTAuXirZvSENRwvBPtH\ngGQ@@dsMTAuXitVm}`dMB\ngGQ@@dsMTAuXitVm}`dMC~RqI@\ngGQ@@dsMTAuXitVm}`gu|\ngGQ@@dsMTAuXitZu}`dMB\ngGQ@@dsMUDauXirVm}`dM|<\ngGQ@@dsMUDauXirVm}`dM|>\ngGQ@@dsMUDauXirVnSENRwvBPwp<\ngGQ@@dsMUDauXirVnSENRwvBPwp>\ngGQ@@dsMUDauXirVnSENRwv|Pwp>\ngGQ@@dsMUDauXirVn]EI[{AH[x<\ngGQ@@dsMUDauXirVn]EI[{AH[x>\ngGQ@@dsMUDauXirVn]EI[{AH[{|ebR>\ngGQ@@dsMUDauXirVn]EN[{AHZD<\ngGQ@@dsMUDauXirVn]EN[{AHZD>\ngGQ@@dsMUDauXirVn]EN[{AHZG|ebR<\ngGQ@@dsMUDauXirVn]EN[{AHZG|ebR>\ngGQ@@dsMUDauXirVn]EN[{AH[x<\ngGQ@@dsMUDauXirVn]EN[{AH[x>\ngGQ@@dsMUDauXirVn]EN[{AOkx<\ngGQ@@dsMUDauXirVn]EN[{AOkx>\ngGQ@@dsMUDauXirVn]EN[{^HZD<\ngGQ@@dsMUDauXirVn]EN[{^HZD>\ngGQ@@dsMUDauXirVv]EN[{AHZD<\ngGQ@@dsMUDauXirVv]EN[{AHZD>\ngGQ@@dsMUDauXitVm}`dM|<\ngGQ@@dsMUDauXitVm}`dM|>\ngGQ@@dsMUDauXitVn]EI[{AH[x<\ngGQ@@dsMUDauXitVn]EN[{AHZD<\ngGQ@@dsMUDauXitVn]EN[{AHZD>\ngGQ@@dsMUDauXitVu}`dMB<\ngGQ@@dsMUDauXitVu}`dMB>\ngGQ@@dsT`Athyncn{@=\ngGQ@@dsT`Athyncn}@\ngGQ@@dsT`Athyncv}@=\ngGQ@@dsT`Athyomt{np=\ngGQ@@dsT`Athyomt{oP\ngGQ@@dsT`Athys`qK]G]z\ngGQ@@dsT`Athys`qK_[iw^`\ngGQ@@dsT`AthyshiK]G]z\ngGQ@@dsT`AthyshiK_[iw^`\ngGQ@@dsT`Athyshis_[i{^`\ngGQ@@dsT`AuIWHwmg]v=\ngGQ@@dsT`AuIWHwmg]z\ngGQ@@dsT`AuIWHwmgmz=\ngGQ@@dsT`AuIWHwng]v=\ngGQ@@dsT`AuIWHwng]z\ngGQ@@dsT`AuIYtTenQo]N{t\ngGQ@@dsTlAtYIKV~F}na@\ngGQ@@dsTlAtYIKZyF}l}hP\ngGQ@@dsTlAuXirVnZFJ\\encva@\ngGQ@@dsTlAuXirVn]EN[{]OZD\ngGQ@@dsUAHathyolD{np+\ngGQ@@dsUAHathyolD{np-\ngGQ@@dsUAHathyolD{oP<\ngGQ@@dsUAHathyolD{oP>\ngGQ@@dsUAHathyolD}oP+\ngGQ@@dsUAHathyolD}oP-\ngGQ@@dsUAHathyomx{np+\ngGQ@@dsUAHathyomx{np-\ngGQ@@dsUAHathyomx{oP<\ngGQ@@dsUAHathyomx{oP>\ngGQ@@dsUAHathyrPqRV~pSn}@<\ngGQ@@dsUAHathyrPqRV~pSn}@>\ngGQ@@dsUAHathys`qK_XIw^`<\ngGQ@@dsUAHathys`qK_XIw^`>\ngGQ@@dsUAHathyshiK_XIw^`<\ngGQ@@dsUAHathyshiK_XIw^`>\ngGQ@@dsUAHathyshiK_[qw^`<\ngGQ@@dsUAHathyshiK_[qw^`>\ngGQ@@dsUAHathyshis_XI{^`<\ngGQ@@dsUAHathyshis_XI{^`>\ngGQ@@dsUAHathyshis_[q{^`<\ngGQ@@dsUAHathyshis_[q{^`>\ngGQ@@dsUAHathzolD{np+\ngGQ@@dsUAHathzolD{np-\ngGQ@@dsUAHathzolD{oP<\ngGQ@@dsUAHathzolD{oP>\ngGQ@@dsUAHathzolD}oP-\ngGQ@@dsUAHathzs`qK_XIw^`<\ngGQ@@dsUAHathzs`qK_XIw^`>\ngGQ@@dsUMHauXirVmu`tH<\ngGQ@@dsUMHauXirVmu`tH>\ngGQ@@dsUMHauXirVm}`gmB<\ngGQ@@dsUMHauXirVm}`gmB>\ngGQ@@dsUMHauXirVm}`gm|>\ngGQ@@dsUMHauXirVnRFJ\\wVCP`<\ngGQ@@dsUMHauXirVnZFJ\\enlFa@>\ngGQ@@dsUMHauXirVn\\FN[{AOZD<\ngGQ@@dsUMHauXirVn\\FN[{AOZD>\ngGQ@@dsUMHauXirVn]EI[kAhP<\ngGQ@@dsUMHauXirVn]EI[kAhP>\ngGQ@@dsUMHauXirVn]EI[kAo`<\ngGQ@@dsUMHauXirVn]EI[kAo`>\ngGQ@@dsUMHauXirVn]EI[k^hP>\ngGQ@@dsUMHauXirVn]EI[{AO[x>\ngGQ@@dsUMHauXirVn]EI[{^OZD<\ngGQ@@dsUMHauXirVn]EN[kAhP<\ngGQ@@dsUMHauXirVn]EN[kAhP>\ngGQ@@dsUMHauXirVn]EN[{AOZD<\ngGQ@@dsUMHauXirVn]EN[{AOZD>\ngGQ@@dsUMHauXirVuu`tH<\ngGQ@@dsUMHauXitVmu`tH<\ngGQ@@dsUMHauXitVmu`tH>\ngGQ@@dsUMHauhjs_XIw]`<\ngGQ@@dsUMHauhjs_XIw]`>\ngGQ@@dsUMHauhjs_[qw]`<\ngGQ@@dsUMHauhjs_[qw]`>\ngGQ@@dsUThdauXirVm}`dM|<\ngGQ@@dsUThdauXirVm}`dM|>\ngGQ@@dsUThdauXirVnRFJRwvBPwp<\ngGQ@@dsUThdauXirVnRFJ\\wvBPtH>\ngGQ@@dsUThdauXirVnSENRwvBPwp>\ngGQ@@dsUThdauXirVn\\FN[{AHZD<\ngGQ@@dsUThdauXirVn\\FN[{AHZD>\ngGQ@@dsUThdauXirVn]EI[{AH[x<\ngGQ@@dsUThdauXirVn]EI[{AH[x>\ngGQ@@dsUThdauXirVn]EN[{AHZD<\ngGQ@@dsUThdauXirVn]EN[{AHZD>\ngGQ@@dsUThdauXirVn]EN[{AH[x<\ngGQ@@dsUThdauXirVn]EN[{AH[x>\ngGQ@@dsUThdauXirVn]EN[{AOkx<\ngGQ@@dsUThdauXirVn]EN[{AOkx>\ngGQ@@dsUThdauXirVn]EN[{^HZD<\ngGQ@@dsUThdauXirVn]EN[{^HZD>\ngGQ@@dsUThdauXirVn]EN[{^Okx<\ngGQ@@dsUThdauXirVu}`dMB<\ngGQ@@dsUThdauXirVv]EN[{AHZD<\ngGQ@@dsUThdauXirVv]EN[{AHZD>\ngGQ@@dsUThdauXitVn]EN[{AHZD<\ngGQ@@dsUThdauXitVn]EN[{AHZD>\ngGQ@@dsUTheAuXirVm}`dM|<\ngGQ@@dsUTheAuXirVm}`dM|>\ngGQ@@dsUTheAuXirVm}oDM|<\ngGQ@@dsUTheAuXirVnRFJRwvBPwp>\ngGQ@@dsUTheAuXirVnRFJ\\wvBPtH<\ngGQ@@dsUTheAuXirVnRFJ\\wvBPtH>\ngGQ@@dsUTheAuXirVn\\FN[{AHZD<\ngGQ@@dsUTheAuXirVn\\FN[{AHZD>\ngGQ@@dsUTheAuXirVn]EI[{AH[x<\ngGQ@@dsUTheAuXirVn]EI[{AH[x>\ngGQ@@dsUTheAuXirVn]EI[{^H[x>\ngGQ@@dsUTheAuXirVn]EN[{AHZD<\ngGQ@@dsUTheAuXirVn]EN[{AHZD>\ngGQ@@dsUTheAuXirVn]EN[{AH[x<\ngGQ@@dsUTheAuXirVn]EN[{AH[x>\ngGQ@@dsUTheAuXirVn]EN[{AOkx<\ngGQ@@dsUTheAuXirVn]EN[{AOkx>\ngGQ@@dsUTheAuXirVu}`dMB<\ngGQ@@dsUTheAuXirVu}`dMB>\ngGQ@@dsUTheAuXirVv]EN[{AHZD<\ngGQ@@dsUTheAuXitVm}`dM|>\ngGQ@@dsUTiDauXirVn]EN[{^HZD<\ngGQ@@dsUTiDauXirVn]EN[{^HZD>\ngGQ@@dsUTiDauXitVn\\FN[{AHZD<\ngGQ@@dsUTiDauXitVn\\FN[{AHZD>\ngGQ@@dsUTiDauXitVn]EN[{AHZD>\ngGQ@@dsUUHauXirVm}`dMB<\ngGQ@@dsUUHauXirVm}`dMB>\ngGQ@@dsUUHauXirVm}`dMC~RqI@<\ngGQ@@dsUUHauXirVm}`gu|>\ngGQ@@dsUUHauXirVm}oDMB<\ngGQ@@dsUUHauXirVm}oDMB>\ngGQ@@dsUUHauXirVm}oGu|<\ngGQ@@dsUUHauXirVnSENRwvBPtH<\ngGQ@@dsUUHauXirVnSENRwvBPtH>\ngGQ@@dsUUHauXirVnSENRwv|PtH<\ngGQ@@dsUUHauXirVnZFJ\\eolDahP<\ngGQ@@dsUUHauXirVnZFJ\\eolDahP>\ngGQ@@dsUUHauXirVnZFJ\\eomxahP<\ngGQ@@dsUUHauXitVm}`dMB<\ngGQ@@dsUUHauXitVm}`dMB>\ngGQ@@dtuRAuXirVmu`dH\ngGQ@@dtuRAuXirVnSENRwVBP`\ngGQ@@dtuRAuXirVn\\FI[kAHP\ngGQ@@dtuRAuXirVn\\FI[{AH[t\ngGQ@@dtuRAuXitZn\\FI[kAHP\ngGQ@@dtuSHauXirVmu`gp>\ngGQ@@dtuSHauXirVnRFJRwVBP`<\ngGQ@@dtuSHauXirVnRFNRwVB_@<\ngGQ@@dtuSHauXirVnSENRwVB_@>\ngGQ@@dtuSHauXirVn]EI[kAHP<\ngGQ@@dtuSHauXirVn]EI[kAHP>\ngGQ@@dtuSHauXirVn]EI[{AH[t<\ngGQ@@dtuSHauXirVn]EI[{AH[t>\ngGQ@@dtuSHauXirVn]GI[kAO`<\ngGQ@@dtuSHauXirZn]EI[kAHP<\ngGQ@@dtuSHauXirZn]EI[kAHP>\ngGQ@@dtuTAuXirVm}`dMB\ngGQ@@dtuTAuXirVm}oGuB\ngGQ@@dtuTAuXirVnSENRwvBPtH\ngGQ@@dtuTAuXirVnSENRwvBPwp\ngGQ@@dtuTAuXirVn\\FI[{AHZD\ngGQ@@dtuTAuXirVn\\FI[{AH[x\ngGQ@@dtuTAuXirVu}`dMB\ngGQ@@dtuTAuXitZm}`dMB\ngGQ@@dtuUHauXirVm}`guB<\ngGQ@@dtuUHauXirVm}`guB>\ngGQ@@dtuUHauXirVnRFJRwvBPtH<\ngGQ@@dtuUHauXirVnRFJRwvBPtH>\ngGQ@@dtuUHauXirVnRFNRwvB_TH<\ngGQ@@dtuUHauXirVnRFNRwvB_TH>\ngGQ@@dtuUHauXirVnSENRwvB_TH<\ngGQ@@dtuUHauXirVn]EI[{AHZD<\ngGQ@@dtuUHauXirVn]EI[{AHZD>\ngGQ@@dtuUHauXirVn]EI[{AHZG|dcb>\ngGQ@@dtuUHauXirVn]EI[{AH[x<\ngGQ@@dtuUHauXirVn]EI[{AH[x>\ngGQ@@dtuUHauXirVn]EI[{AOjD<\ngGQ@@dtuUHauXirVn]EI[{AOjD>\ngGQ@@dtuUHauXirVn]EI[{^OjD<\ngGQ@@dtuUHauXirVn]EI[{^OjD>\ngGQ@@dtuUHauXirVn]GI[{AOjD<\ngGQ@@dtuUHauXirVn]GI[{AOjD>\ngGQ@@dtuUHauXirVn]GI[{AOkx<\ngGQ@@dtuUHauXirVn]GI[{AOkx>\ngGQ@@dtuUHauXirVv]EI[{AHZD<\ngGQ@@dtuUHauXirZm}`dMB<\ngGQ@@dtuUHauXirZm}`dMB>\ngGQ@@dtuUHauXirZm}`dM|<\ngGQ@@dtuUHauXirZn\\FI[{AHZD<\ngGQ@@dtuUHauXirZn\\FI[{AHZD>\ngGQ@@dtuUHauXirZn]EI[{AHZD<\ngGQ@@dtuUHauXirZn]EI[{AHZD>\ngGQ@@dtuUHauXirZu}`dMB<\ngGQ@@dtuUHauXirZu}`dMB>\ngGQ@@dtuUHauXitVm}`guB<\ngGQ@@dtuUHauXitVm}`guB>\ngGQ@@dtuUHauXitVn]GI[{AOjD>\ngGQ@@dwSTAtYYKVyFulahP\ngGQ@@dwSTAuXirVmtPtH\ngGQ@@dwSTAuXirVm|ndMB\ngGQ@@dwSULauXirVn]EN[hahP>\ngGQ@@dwSULauXirVn]EN[y]HZD<\ngGQ@@eMUTAtpqSdm[eApRFa@\ngGQ@@eMUTAtpqSdm[eApRFa\x7FIHx`\ngGQ@@eMUTAtpqSdm[eApRF~@\ngGQ@@eMUTAtpqSdm[eApSz~@\ngGQ@@eMUTAtpqSdm\\dLTynTGAHZD\ngGQ@@eMUTAtpqSdm\\dLTynU{AHZD\ngGQ@@eMUTAtpqSdm\\xLRwJC`dM|\ngGQ@@eMUTAtpqSdm\\xLRwJ}`dM|\ngGQ@@eMUTAtpqSdm\\xLTwJC`dMB\ngGQ@@eMUTAtpqSdm\\xLTwJ}`dMB\ngGQ@@eMUTAtpqSdmkeApRFa@\ngGQ@@eMUTAtpqSdmkeApRFa\x7FIHx`\ngGQ@@eMUTAtpqSdukeApRFa@\ngGQ@@eMUTAtpqShukeApRFa@\ngGQ@@eMUTAtpqShulxLTwJ}`dMB\ngGQ@@eMUTAtpqUdm[eApRFa@\ngGQ@@eMUTAtpqUdm\\xLRwJC`dM|\ngGQ@@eMUTAtpqUdm\\xLTwJC`dMB\ngGQ@@eMUTAtpqUdulxLTwJC`dMB\ngGQ@@eMUUHatpqSdm\\dLTenU{AH[x>\ngGQ@@eMUUHatpqSdm\\xLTwJC`dM|<\ngGQ@@eMUUHatpqSdm\\xLTwJC`dM|>\ngGQ@@eMUUHatpqSdmlxLTwJC`dMB<\ngGQ@@eMUUHatpqSdmlxLTwJC`dMB>\ngGQ@@eMUUHatpqSdu[eApRF~@<\ngGQ@@eMUUHatpqSdu[eApRF~@>\ngGQ@@eMUUHatpqUdmlxLTwJC`dMB>\ngGQA@NRYjP@zT\\wQw]`=\ngGQA@NRYjP@zT\\wvz]wX=\ngGQA@NRYjP@zT\\ytTeomt{oP\ngGQAAIRYj`@zT\\wvB]wX+\ngGQAAIRYjf@zlTyK[Nbdm}`gmB>\ngGQBBGBNB\\LxYIIZj@zpRunYy^wjD\ngGQDHGBnBUSUPGUCENRwJC`dM|\ngGQDHGBnBUSUPGUCENRwJC`gu|\ngGQDHGBnBUSUPGUCENRypXenTGAH[x\ngGQDHGBnBUSUPGUCENSWJC`dM|\ngGQDHGBnBUSUPGUCEVcWJC`dM|\ngGQDJ@aABSWUPGVcdmxP`\ngGQDJIARBSWUPGVcdmx_@\ngGQDJIARBSWUPGVcdn\\gI[p~@\ngGQDLOA^FQRFj`NmDm[x^WjD\ngGQHAJAIfj@CiQs_XIw]`+\ngGQHAJAIfj@CiQs_XI{^`+\ngGQHAJAIfj@CiQu_XIw^`>\ngGQHAJAIfj@CiQu_XI{^`+\ngGQHAJAIfj@CiQugQRV~pSn}@>\ngGQHAJAIfj@CiQugQSf~pSv}@>\ngGQHAJAIfjXCjqShmk{AOZD>\ngGQHAJAIfjhCjqSdm[{AHZD>\ngGQHAjAInfhChrrZurMkYCP`\ngGQHB@aIfiXChqSfn]EI[k]hP\ngGQHB@aIfiXChqSfuyP`\ngGQHB@aIfiXChqSfv]EI[k]hP\ngGQHB@aIfiXCkRSV~F}na@\ngGQHB@aIfiXCkRSV~F}va@\ngGQHB@aIfiXCkRSWNbdm|M{mB\ngGQHB@aIfiXCkRSZ~F}na@\ngGQHB@aIfiXCkRSZ~F}va@\ngGQHB@aIfiXCkRS[Nbdm|M{mB\ngGQHB@aIfidCiRU\\c^v]wX\ngGQHB@aIfjiQJChqSjn\\FI[kAhP>\ngGQHB@aInfjZCkRsV~Fuva@<\ngGQHBGAIfiXChqSfn]EI[h^hP\ngGQHBHaIfiXChqSfn]EI[k]hP\ngGQHBHaIfiXChqSfn]EI[k]o`\ngGQHBHaIfiXChqSfn]EI[ra@\ngGQHBHaIfiXChqSfv]EI[k]hP\ngGQHBHaIfjiQIChqSfmu`tH<\ngGQHBHaIfjiQJChqSfmu`tH>\ngGQHBHaIfjiQJChqSfn]EI[kAhP<\ngGQHBHaIfjiQJChqSfn]EI[kAhP>\ngGQHBIAIfiXChqSfn]EI[k]hP\ngGQHBIAIfjiQIChqSfnSENRwVCP`>\ngGQHBIAIfjiQIChqSfn]EI[kAhP>\ngGQHBIAIfjiQJChqSfn]EI[kAhP<\ngGQHBIAIfjiQJChqSfn]EI[kAhP>\ngGQHBJqIfiXChqSfn]EI[k]hP\ngGQHBJqIfiXChqSfn]EI[ra@\ngGQHBJqIfjiQJChqSfn]EI[kAhP<\ngGQHBLQIfiXChqSfn]EI[k]hP\ngGQHBLQIfiXChqSfn]EI[ra@\ngGQHBLQIfiXChqSfv]EI[k]hP\ngGQHBLQIfjZQChqSfuu`tH<\ngGQHBLQIfjZQChqSfuu`tH>\ngGQHBLQIfjiQIChqSfmu`tH>\ngGQHBLQIfjiQJChqSfmu`tH>\ngGQHBLQInfjZChqSfn]EI[ra@>\ngGQHD@aInZ@CjQshiK]G]z\ngGQHD@aInf@CjQncn{@=\ngGQHD@aInfhChqrVmtPtH\ngGQHDHaInf@CjQncn{@=\ngGQHDOAIijjQCjqSdm\\dLTenQ{AH[x<\ngGQHDOAIijjQCjqSdm\\dLTeolDao`<\ngGQHDOAIkjjQChqrVnRFJRwQC_@<\ngGQHDOAIkjjQChqrVnRFJRwp|Pwp<\ngGQHDOAInf@CjQncn{@=\ngGQHDOAInjBQCjQoax{np+\ngGQHDOAInjBQCjQoax{np-\ngGQHH@aJnZBACiAs_XIw]`+\ngGQHH@aJnZBACiAs_XIw]`-\ngGQHH@aJnZBACiAs_XIw^`>\ngGQHH@aJnZBACiAs_[qw]`-\ngGQHH@aJnZBACiAu_XIw]`+\ngGQHH@aJnZBACiAu_XIw]`-\ngGQHH@aJnZBACiAu_XIw^`<\ngGQHH@aJnZBACiAu_XIw^`>\ngGQHH@aJnZBACiAugQRV~pSn}@<\ngGQHH@aJnZBACiAugQRV~pSn}@>\ngGQHH@aJnZZACkAUf~pSv}@<\ngGQHH@aJnZZACkAUf~pSv}@>\ngGQHH@aJnZZACkAUj~pSv}@<\ngGQHH@aJnZZACkAUj~pSv}@>\ngGQHH@aJnZjACjaShm[{AHZD>\ngGQHHDQJnZ@CiAu_XIw^`>\ngGQHHGAIZjhCjqSdm[d^pRFa@\ngGQHHGAIZjhCjqSdm[d^pRF~@\ngGQHHGAIZjhCjqSdm\\xLTwH}`dMB\ngGQHHGAIZjhCjqSdmkd^pRFa@\ngGQHHGAIZjhCjqSdukd^pRFa@\ngGQHHGAJijhCiabgIZwJC`dMB\ngGQHHGAJijhCiabgIZwJC`dM|\ngGQHHGAJijhCiabgIZwJC`guB\ngGQHHGAJijhCiabgIZwJC`gu|\ngGQHHGAJijhCiabgI[WJC`dMB\ngGQHHGAJijhCiabgI[WJC`guB\ngGQHHGAJijhCiabkQZwJC`guB\ngGQHHGAJijhCiabkQ[WJC`guB\ngGQHHGAJijhCiabkQjwJC`dMB\ngGQHHGAJkjdCjaSdm[kAHP\ngGQHHGAJkjhCjaSdm[{AHZD\ngGQHHOAJkZhCjaSdm[{AHZD\ngGQHHOAJkZhCjaShu[{AHZD\ngGQHHOAJkZhCjaShuk{AHZD\ngGQHJGAJijhCjabgI[yApRD\ngGQH`jBRnRnjj@zXXitZus@xICP`\ngGQI@jA\\e]UTAtpqSdukfApRFa@\ngGQI@jA\\e]UTAtpqSdulxLTwLC`dMB\ngGQI@jA\\e]UTAtpqShukfApRFa@\ngGQIAJB\\dsU@AthzolD}oP+\ngGQIAJB\\dtuTAuXirVm}`dMB\ngGQIAJB\\dtuTAuXitZn\\FI[{AHZD\ngGQIB@`|dsTrAuiIkgQRV~F}v}@\ngGQIHBpReWU@At`zolD{oP>\ngGQIHO@ReUuTAuPirVm}`dMB\ngGQIJO@ReTuTAuPqSdm|`xIB\ngGQLBIARFdLbdMU@]ZIZweB\ngGQLBIARFdLbdMU@]ZI[WeB\ngGQLJHaQFbLbdMU@]JIP\ngGQLJIARFdLbdMU@]JIP\ngGQLL@b^BBDfmjiDNcGIjwQCP`<\ngGQ`@ZdsMTAuhisdqSdmy``\ngGQ`@ZdwSTAtiYnam[@\ngGQ`@bdwMLAuhyk^TH\ngGQ`@bdwMLAuhym^TH\ngGQ`@bdwMRAthzncn{@\ngGQ`@bdwMRAthzncn}@\ngGQ`@bdwMRAuhyj\ngGQ`@bdwMRAuhyk^Wh\ngGQ`@bdwMUMAuhyk^TH<\ngGQ`@bdwMUMAuhyk^TH>\ngGQ`@bdwMUMAuhyk^Wp<\ngGQ`@bdwMUMAuhyk^Wp>\ngGQ`@bdwMUMAuhykgQSf|hP<\ngGQ`@bdwMUMAuhykgQSf|hP>\ngGQ`@bdwMUMAuhym^TH<\ngGQ`@bdwMUMAuhym^TH>\ngGQ`@bdwUThlauhykgARV|hP<\ngGQ`@bdwUThlauhykgARV|hP>\ngGQ`@bdwUThmAuhykgARV|hP<\ngGQ`@bdwUThmAuhykgARV|hP>\ngGQ`@bdwUThmAuhykgARV|o`<\ngGQ`@bdwUUMAuhykdabdmyP`<\ngGQ`@bdwUUMAuhykdabdmyP`>\ngGQ`@jduuTAuhyK^DH\ngGQ`@jduuTAuhyKgIrV|HP\ngGQ`@jduuTAuhyM^DH\ngGQ`ALe]UTAtPiKVzHZD\ngGQ`ALe]UTAtPiKWNCEMtPtH\ngGQ`ALe]UUDatPiKWICEN[hahP<\ngGQ`AbeMUTAtPqSVzPZD\ngGQ`AbeMUTAtPqSWICEN[iAhP\ngGQ`AbeMUTAtPqS[ICEN[iAhP\ngGQa@bnR[fjf`zt\\uoJD<\ngGQa@bnR[fjf`zt\\uoJD>\ngGQa@bnR[fjf`zt\\voJD<\ngGQa@bnR[fjf`zt\\voJD>\ngGQdEb@b^BSRuPGVbfmyP`\ngGQdEb@b^BSRuPGVbfuyP`\ngGQdEbGBNBUWUPGVBfmuOTH\ngGQdHl@btFRREZ`NlGI[h~o`\ngGQdHlGBnBUSUPGVCDmtPwp\ngGQdHlGBnBUSUPGVCDmt_Wp\ngGQdHlGBnBUSUPGVCDutPwp\ngGQdHlGBtBUSUPGVCDuxP`\ngGQdHlOB~BUVuTBGVBdutPwp>\ngGQdHlOB~BUVuTBGVBdv]EI[hao`<\ngGQdHlOB~BUVuTBGVBdv]EI[hao`>\ngGQdIbBqNBRuUPGVbfmtOWp\ngGQdLZ@a^BRuSPGRbf|G`\ngGQdhlOBt@f|eTuTAu`qM]DM|\ngGQdibOAT@e\\dmUTAuhim]CuB\ngGQeEb@bN@yIijhCkQSV|o`\ngGQeEb@bN@yIijhCkQSZ|hP\ngGQhHl@cIIBmPGQCdm[hahP\ngGQhHl@cIIBmPGQCdm[h~hP\ngGQhHl@cIIBmPGQCdmkhahP\ngGQhHl@cIIBmPGQCdmkh~hP\ngGQhHl@cIIBmPGQCdu[hahP\ngGQhHl@cIIBmPGQCdukhahP\ngGQhHl@cIIJmPGVBVmy_@\ngGQhHlBqJijhChabZv\\GI[hah_rTJH\ngGQhHlGAJijhChabVmtPtH\ngGQhHlGAJijhChabVmtPwp\ngGQhHlGCIIKUHGVBVh\ngGQhHlGCIIKUPGVBVmyP`\ngGQhHlOAJkZjAChaRVmtPtH<\ngGQhHlOAJkZjAChaRVmtPtH>\ngGQhHlOAJkZjAChaRVmt_TH<\ngGQhHlOAJkZjAChaRVmt_TH>\ngGQhHlOAJkZjAChaRVn]EI[hahP<\ngGQhHlOAJkZjAChaRVn]EI[hahP>\ngGQhHlOAJkZjAChaRVn]EI[h~hP<\ngGQhHlOAJkZjAChaRVn]EI[h~hP>\ngGQhHlOAJkZjAChaRVutPtH<\ngGQhHlOAJkZjAChaRVutPtH>\ngGQhHlOAJkZjAChaRZmtPtH<\ngGQhHlOAJkZjAChaRZmtPtH>\ngGQhHlOAJkZjAChaRZutPtH<\ngGQhHlOAJkZjAChaRZutPtH>\ngGQhHlOCIIJuHGVBVmy^`\ngGQhHlOCIIJuPGVBVmyP`\ngGQhHlOCIIJuPGVBVuyP`\ngGQiAbjA\\e]UTAtPqSZz`ZD\ngGQiHl@c]ddeVhCkAKV|hP\ngGQiHl@c]ddeVhCkAKV|o`\ngGQiHlOC]ddeZjACkAKV|hP<\ngGQiHlOC]ddeZjACkAKV|hP>\ngGR@@cTfxH@MrMkYw]`=\ngGR@@cTfyi`NeKUrMkYw]`\ngGR@@cTfyi`NeKUrMkYw^`\ngGR@@cTfyi`NeKUrMkiw^`\ngGR@@cTfzj`NeGNZFJ\\e@\ngGR@@lTfYj`NeEUt]wo{Q@\ngGR@@lTfYj`NeIUrM{Yw^\x7FmD\ngGR@@lTfxJ`NijyFul{n\x7Fvf@=\ngGR@@lTfxJ`NijyFul{o_vf@=\ngGR@@m\\bdMU@]JIP\ngGR@ACTjzj`NdIMuM{_{P@\ngGR@ACTjzj`NdIMuM{o{P@\ngGRA@l]rSLuPGRdjyF}l{o_vb@\ngGRD@cYPZ`R[jj@zT\\`\ngGRDHlQxWpRjYi@zPX\x7FmH\ngGREHlQxWpTiULtpH]HL\\xJR\x7FmH<\ngGREHlQxWpTiULtpH]HL\\xJR\x7FmH>\ngGREHlQxWpWIU[U@]HJ\\xLRwe}~tP\ngGREIcQxKpTiKSU@]JJ\\xLT\x7FmH\ngGRHHlQxIU[U@]XJZweC~tP\ngGRHHlQxYIHPj@zVZwtvmtO{S@\ngGRHHlQxYIHPj@zVZwtvmww{S@\ngGRHHlQxYIHPj@zVZyr\\eoim[h_vf@\ngGRHHlQxYIHPj@zV[WtvmtO{S@\ngGRIHlQxBTjfj`NlFM[ra@\ngGRIHlQxRTjmj`NlEM[ra\x7FZH\ngGT@@TfX`@MrM{Yw]`\ngGT@@TfX`@MrM{Yw^`\ngGT@@TfX`@MrM{Y{]`\ngGT@@TfX`@MrM{iw^`\ngGT@@TfX`@N]EI[d[wSn}@\ngGT@@TfXa`NdfmrM{Y{P`\ngGT@@TfXa`Ndfm|M{]B\ngGT@@TfXa`NdfurM{Y{P`\ngGT@@TfXa`Ndfu|M{]B\ngGT@@TfXbPNdfmtM{X\ngGT@@TfXbPNdfm|M{]z\ngGT@@TfXbPNhjyF}l{np\ngGT@@TfXbPNhjyF}l{oP\ngGT@@TfXbPNhjyF}l}np\ngGT@@TfXbPNhjyF}t{np\ngGT@@TfXbPNhjyF}t{oP\ngGT@@TfXbPNhkNbdmrM{iw^`\ngGT@@TfYh@NiJyF}l{np\ngGT@@TfYh@NiJyF}t{np\ngGT@@TfYi`NcENZwVCP`\ngGT@@TfYi`NcENkWH{`gmB\ngGT@@TfYjPNcENZytTeoLD\ngGT@@TfYjPNmEV[{AN{l\ngGT@@TfYjPNmEV[{AN{t\ngGT@@TfZfPNeIUrM{Yw]`\ngGT@@TfZfPNeIUrM{Yw^`\ngGT@@TfZfPNeIUrM{Y{]`\ngGT@@TfZfPNeIUrM{iw^`\ngGT@@TfZfPNeIUrN{Y{]`\ngGT@@TfZfPNeIUrN{i{^`\ngGT@@TfZjeDdNcENZwVCP`\ngGT@@TfZjeDdNcENZytTenlFa@\ngGT@@TfZjeDdNcEN[WVCP`<\ngGT@@TfZjeDdNcEN[YtTynlFa@>\ngGT@@TfZjeDdNcENkWVCP`\ngGT@@TfZjeDhNcENZwVCP`<\ngGT@@TfZjeDhNcENZwVCP`>\ngGT@@TfZjeDhNcENZyhXirVzpZD<\ngGT@@TfZjeDhNcENZytTenlFa@<\ngGT@@TfZjeDhNcENZytTenlFa@>\ngGT@@TfZjeDhNcEN[WVCP`<\ngGT@@TfZjeDhNcEN[WVCP`>\ngGT@@TfZjeDhNcEN[YpXynlFa@>\ngGT@@TfZjeDhNcENkWVCP`<\ngGT@@TfZjeDhNcENkWVCP`>\ngGT@@TfZjeDhNcENkYpXynlFa@>\ngGT@@TfxJihNefm|Mk]B<\ngGT@@TfxJihNefm|Mk]B>\ngGT@@TfxJihNefm|Mk]|>\ngGT@@TfzZihNmKM\\zJ\\wpvntH<\ngGT@@TfzZihNmKM\\zJ\\wpvntH>\ngGT@@TfzZihNmKM\\zJ\\wpzntH>\ngGT@@TfzZihNmKMlzJ\\wpvntH<\ngGT@@TfzZihNmKMlzJ\\wpvntH>\ngGT@@TjZjPNbFR\\wJC`g]z=\ngGT@@TjZjPNbFR\\wJC`gmz=\ngGT@@TjZjPNbFR\\ypXenTGAN{w}h@\ngGT@@TjZjPNbFR\\ypXenTGAO[t\ngGT@@TjZjPNbFR\\ypXenTGAO[w}h@\ngGT@@TjZjPNjFJ\\undGA\x7FZ@=\ngGT@@TjZjPNjFJ\\uodGAo_v`@=\ngGT@@TjZjPNjFJ\\usPqSdm|`xM{~t@=\ngGT@@TjZjPNjFJ\\us`qK]HNC~t@\ngGT@@TjZjPNjFJ\\us`qK_HNC^\x7Fm@\ngGT@@TjZjPNjFJ]Us`is_HNC^\x7Fm@\ngGT@@TjZjPNjFJ]Us`qK_HNC^\x7Fm@\ngGT@@TjZjdEDNjFJ\\vs`qs_HNCP`<\ngGT@@TjZjiDNjFJ\\uodGAh_v`@+\ngGT@@TjZjiDNjFJ\\urPqrV~P\\Fa\x7FZ@<\ngGT@@TjZjiDNjFJ\\usPqSdm|`xMB<\ngGT@@TjZjiDNjFJ\\usPqSdm|`xMB>\ngGT@@TjZjiDNjFJ\\usPqSdm|`xMC~t@-\ngGT@@TjZjiDNjFJ\\us`qK_HNC__m@<\ngGT@@TjZjiDNjFJ\\us`qK_HNC__m@>\ngGT@@TjZjiDNjFJ\\us`qs_HNCP\x7Fm@>\ngGT@@TjZjiDNjFJ\\vodGAhP>\ngGT@@TjZjiDNjFJ\\vrPqSf~P\\Fa@<\ngGT@@TjZjiDNjFJ\\vrPqSf~P\\Fa@>\ngGT@@TjZjiDNjFJ\\vs`qs_HNCP\x7Fm@<\ngGT@@TjZjiDNjFJ]Vs`qs_HNCP\x7Fm@<\ngGT@@TjZjiDNjFJ]Vs`qs_HNCP\x7Fm@>\ngGT@@TjZjiDNlJM\\xJRwrwntO{P@<\ngGT@@TjZjiDNlJM\\xJRwrwntO{P@>\ngGT@@TjZjiDNlJMlxL\\wr{ntO{P@<\ngGT@@TjZjiDNlJMlxL\\wr{ntO{P@>\ngGT@@dfXb`NhjyF}l{n\x7Fvb@=\ngGT@@dfXb`NhjyF}l{o_vb@\ngGT@@dfXb`NhjyF}l}o_vb@=\ngGT@@dfXb`NhjyF}t{n\x7Fvb@=\ngGT@@dfXb`NhjyF}t{o_vb@\ngGT@@dfXb`Nldm[d[vrFa\x7FZH=\ngGT@@dfXb`Nldm[d[wRFa@\ngGT@@dfXb`Nldm[d[wRFa\x7FZH=\ngGT@@dfXb`Nldm\\zJ\\wHwndMC~tP\ngGT@@dfXb`Nldmkd[vrFa\x7FZH\ngGT@@dfXb`Nldmkd[wRFa\x7FZH\ngGT@@dfXb`Nldukd[vrFa\x7FZH=\ngGT@@dfXb`Nldukd[wRFa\x7FZH=\ngGT@@dfXbhdNldm\\zJ\\wHwndMB<\ngGT@@dfXbhdNldmlzJRwHwndMB<\ngGT@@dfXbhdNldmlzJRwHwndMB>\ngGT@@dfYj`NcIIZwHwndMC~tP=\ngGT@@dfYj`NkENRuolDah_vb@=\ngGT@@dfYj`NkENRuomxah_rPJMh`=\ngGT@@dfYj`NkENRusPqSdm}`dMC~tP=\ngGT@@dfYj`NkENRus`qs_XICP\x7FmD\ngGT@@dfYj`NkENRushis_XICP\x7FmD\ngGT@@dfYj`NkENRvs`qs_XICP\x7FmD\ngGT@@dfYj`NkENRvshiK_XICP\x7FmD\ngGT@@dfYj`NkENRvshiK_[qCP\x7FmD\ngGT@@dfYj`NkENRvshis_XICP\x7FmD\ngGT@@dfYj`NkENbuolDah_vb@=\ngGT@@dfYj`NkENbusPqSdm}`dMC~tP=\ngGT@@dfYj`NkENbus`qs_XICP\x7FmD\ngGT@@dfYj`NkENbvs`qs_XICP\x7FmD\ngGT@@dfnjPNcGIZyr\\eoBD\ngGT@@dfnj`NcGIZwQCP`\ngGT@@dfnj`NcGIZyHXiK]DMB\ngGT@@dfnj`NcGIZyr\\enbFa@\ngGT@@dfnj`NcGI[WQCP`\ngGT@@dfxH@MrMkYw]`=\ngGT@@dfxH@MrMkYw^`=\ngGT@@dfxH@MrMkY{^`=\ngGT@@dfyh@NiFzN{l=\ngGT@@dfyh@NiFzN{t\ngGT@@dfyh@NiFzO[t=\ngGT@@dfyh@NiF~GSn{@=\ngGT@@dfyh@NiF~GSn{\x7FI@p`=\ngGT@@dfyh@NiF~GSn}@\ngGT@@dfyh@NiGNBdmt]wh\ngGT@@dfyh@NiGNbdmt]wh\ngGT@@dfyh@NiJyFul{np=\ngGT@@dfyh@NiJyFul{oP\ngGT@@dfyh@NiJyFul}oP=\ngGT@@dfyh@NiJyFut{np=\ngGT@@dfyh@NiJyFut{oP\ngGT@@dfyh@NiJyFut}oP=\ngGT@@dfyh@NiKNbdmrMkiw^`\ngGT@@dfyi`NcGIZytTyncva@\ngGT@@dfyi`NeGV\\EN[h}np\ngGT@@dfyi`NeKUrMkiw^`\ngGT@@dfyj`NcGIZwQCP`\ngGT@@dfyj`NcKIZwHvndMB\ngGT@@dfyjidNcGI[WQCP`<\ngGT@@dfzh@NiFzN{l=\ngGT@@dfzh@NiFzN{t\ngGT@@dfzhIDNiGNBdmt]wh<\ngGT@@dfzhIDNiGNBdmt]wh>\ngGT@@dfzi`NeGUt]wh\ngGT@ADjZj`NbJIZwJ{ndMC~t@=\ngGT@ADjZj`NfFJ\\ek\\hNBPtO{HP=\ngGT@ADjZj`NfFJ\\ekgAcfyP\\Dah_vP`\ngGT@ADjZj`NfFJ\\em\\hNBPtO{HP=\ngGT@ADjZjiDNfFJ\\ekgAcfyP\\Dah_v`@<\ngGT@ADjzh@NdGM}`g]w~t@=\ngGT@ADjzh@NdGM}`g]{~t@\ngGT@ADjzh@NdGM}`gm{~t@=\ngGT@ADjzh@NdGM}oG]w~t@=\ngGT@ADjzh@NdGU}`g]w~t@=\ngGT@ADjzh@NhJyf}l{n\x7Fv`@=\ngGT@ADjzh@NhJyf}l{o_v`@\ngGT@ADjzh@NhJyf}l}o_v`@=\ngGT@ADjzh@NhJyf}t{n\x7Fv`@=\ngGT@ADjzh@NhJyf}t{o_v`@\ngGT@ADjzh@NhJyf}t}o_v`@=\ngGT@ADjzh@NhKNbdmsM{iw^\x7Fm@\ngGT@ADjzi`NbIIZwLwmgmC~t@\ngGT@ADjzi`NbIIZwtwmtO{P@\ngGT@ADjzi`NjENRushis_XI{P\x7Fm@\ngGT@ADjzj`NbIIZwLwmdMC~t@\ngGT@ADjzj`NbIIZwLwndMC~t@\ngGT@ADjzj`NjENRuolDah_v`@\ngGT@ADjzj`NjENRurPqrV~pRFa\x7FZ@\ngGT@ADjzjdDhNjENRus`qs_XICP`<\ngGT@ADjzjhdNbII[WLwndMC~t@>\ngGT@ADjzjhdNbII[YtTynYo]HZG}h@>\ngGT@ADjzjhdNjENRurPqrV~pRF~\x7FZ@<\ngGT@ADjzjhdNjENRurPqrV~pRF~\x7FZ@>\ngGT@ADjzjhdNjENRus`qs_XICP\x7Fm@<\ngGT@ADjzjhdNjENRus`qs_XICP\x7Fm@>\ngGT@ADjzjhdNjENRvolDah_v`@<\ngGT@ADjzjhdNjENRvolDah_v`@>\ngGT@ADjzjhdNjENRvshis_XICP\x7Fm@<\ngGT@ADjzjhdNjENRvshis_XICP\x7Fm@>\ngGT@ADkij`NjENRuolDah_v`@\ngGT@ATeVn`NeDh\ngGT@ATffj`NcENRwVBP`\ngGT@ATffj`NcENRyLTyK]XIB\ngGT@ATffjiDNcENRytTenlDa@<\ngGT@ATffjiDNcENRytTenlDa@>\ngGT@Adijj`NjFJRuodDah_v`@\ngGT@Adijj`NjFJRus`qS_HICP\x7Fm@\ngGT@Adijj`NjFJbus`qS_HICP\x7Fm@\ngGT@`QIeIfH@C\\c^v]wX\ngGT@`QIeIfH@CgAcfyG]l}np\ngGT@`QIeIfjiQJChqSfn]EI[kAhP<\ngGT@`QIeIfjiQJChqSjuu`tH<\ngGT@`QIeIfjiQJChqSjuu`tH>\ngGT@`aJyInZ@CjRnQu[N{l=\ngGT@aAteJzjhCjaSdm[{AHZG}h@\ngGTA@QJSLP@FyF}l{np\ngGTA@QJSLP@FyF}l{oP\ngGTA@QJSLPpGRSV~F}na@\ngGTA@QJSLuHGVbkM}`g]v\ngGTA@QJSLuHGVbkV]EN[{AO[l\ngGTA@QJSMURbTGQbgM\\zJRwVCP`<\ngGTA@aJSLuPGUbgIZwH{`dMC~tP=\ngGTA@aJSLuPGUbgIZyhXirV~pRFa\x7FZH=\ngGTA@aJS\\D@FyFul{np=\ngGTA@aJS\\t@GTc]G]v=\ngGTA@aJS\\t@GTc]G]z\ngGTA@aJS\\t@GTc_Ciw]`=\ngGTA@aJS\\t@GTc_Ciw]\x7Fd`XP=\ngGTA@aJS\\t@GTe\\cZv]wX=\ngGTA@aJS\\t@GTe\\cjz]wX=\ngGTA@erS\\t@GTe\\cZv]wX=\ngGTAAAJU\\t@GTE\\s^z^wo{P@=\ngGTAAAJU]R@GTE\\s^v]w_{P@=\ngGTAAAJU]R@GTE\\s^z]w_{P@=\ngGTAAIJTuMPGSCENRus`qS\\knBPtO{P@\ngGTAAQJSSUPGQbgI[kAHP\ngGTAAQJUSUPGUCENRyHXiK_HNBP`\ngGTBLQDSpTQ_AIkjTCiQs~tp\ngGTCLQDSpTQ_@}dTaihCiQKgIrV|oova@\ngGTD@UPZ`Rkjj@zHYImgQSfz`ZG}h@>\ngGTD@]PV`rRFUTAtPqSfz`TD>\ngGTDCPDZ`R[ij@zTlwPvm`\ngGTDEPDDHR[ff@zT\\`\ngGTDEPDDHR[ii@zTmWHvmg]v\ngGTDEaxSpRkjj`PzHTek]DMB<\ngGTDEaxSpRkjj`PzHTek]DMB>\ngGTDQMPV`Dr]uyJffXChabdnZFJ\\enmz~\x7FYB@\ngGTDcPDHHWFTfyi`NeGUt^wh\ngGTEIaxKpTiKSU@]FJSVs`qS]DMC~t`\ngGTH@]PYICJj@zhXisV~`TFa@>\ngGTH@]PYICJj@zhXisZ~`TFa@>\ngGTH@iPIMuP@]RMt]wX=\ngGTH@iPIMuP@]RMt^wh=\ngGTHAMPIUuP@]PMt]w_{P@=\ngGTHAMPIUuP@]PM}oG]w~t@=\ngGTHCPDILsS@]ZJ\\ytTenlD}@\ngGTHCPDILuH@]RUrM{Yw]`=\ngGTHCPDILuK@]JR[h[vp\ngGTHCPDILuK@]JRkd[vsn{@\ngGTHCPDILuK@]JRkd[vsn}@\ngGTHCQHILuK@]ZJ\\ytTy@\ngGTHCQxITuS@]DLeZnTGAN{t\ngGTHDPDIMtp@]RUrMkYw]`\ngGTHDPDIMtuSP]ZVZwpvmtH>\ngGTHE`DILsU@]FJRunbFa\x7FZH=\ngGTHE`DILsU@]FJRushis]DMC~tP\ngGTHE`DILsU@]FJRvnbFa\x7FZH\ngGTHE`DILsU@]FJRvshis]DMC~tP\ngGTHE`DIMtu@]FNRunbFa\x7FZX=\ngGTHE`DIMtu@]FNRushis]DMC~tp\ngGTHE`DIMtu@]FVRunQm[HZG}i`=\ngGTHHPxILuS@]FJ\\voa{Ah_vd@\ngGTHHPxILuS@]FJ\\voa{^h_vd@\ngGTHHaxITuUPH]TL]Ek_XICP`<\ngGTHHaxITuUPH]TL]Ek_XICP`>\ngGTHHaxYICJ`@z`[h{np=\ngGTH`iPBYrSWUTbGQcdm[hahP<\ngGTH`iPBYrSWUTbGQcdm[hahP>\ngGTHaMPB]rU\\t@GTC_[qw]\x7Fm@=\ngGTHdPDCeJS]L@GTc]G]v\ngGTHe`DCeJS]MPGQcdm\\zJ\\wQCP\x7FmL\ngGTHe`DCeJS]MPGQcdmlzJ\\wQCP\x7FmL\ngGTICQHFTfZe`NmEN\\zJR`\ngGTICQxFTjZi`NbFRmWJC`gmz\ngGT`CPdfyi`NeGH\ngGT`CPdfyj`NeGH\ngGT`EPTfyi`NeGH\ngGT`EPTfyi`NeGN]EIP\ngGT`EPTfzZPNeKUrMkYw]`\ngGT`E`TfYjhhNmEM[ra@<\ngGT`LPdfyj`NmGM[ra\x7FZX\ngGT`LPdfyj`NmGM[r~\x7FZX\ngGT`LPdfyj`NmGMkra\x7FZX\ngGT`hPiJyInZ@CjQncn}\x7FZP\ngGT`hPiJyInZXCiQu]G]w~t`\ngGT`hPiJyInZXCiQu]G]{~t`\ngGT`hPiJyInZdCiQu]G]w~t`\ngGT`hPiJyInZdCiQu]G]{~t`\ngGT`hPiJyInZdCiQu]Gmw~t`\ngGT`hPiJyInZdCiQu]Gm{~t`\ngGT`hPiJyInZdCkQsV|o_vd@\ngGT`hPiJyInZjYCkQsZ|h_vd@<\ngGT`hPiJyInZjYCkQsZ|h_vd@>\ngGT`i`iJyInZhChqrVmtPtO{JX=\ngGT`i`iJyInZhChqrVutPtO{JX\ngGTahPiJx|dwMRAthzncn}\x7FZP\ngGTdLXaxWpRjvj@zPTwe|\ngGTdlX`DTHwF\\ddJu@]HN[h~oovf@\ngGTeI\\QxKpTiKSU@]JJ\\xLR\x7FmH\ngGTeLXaxWpOYIIZZ@zPRyr\\eoK{}hP\ngGThLX`DYIHUj@zp\\uoJG}i`\ngGThLX`DYIHUj@zp\\voJG}i`\ngGThLXaxIUMA@]JM[{[NzD\ngGThLXaxIUMA@]JM\\xLRwvv]tH\ngGThLXaxIUMA@]JMk{[NzD\ngGThLXaxIUMA@]JMlxLRwvv]tH\ngGThLXaxIU[U@]XJ[WeB\ngGThLXaxIU[U@]XJ[WeC~RQq@\ngGThLXaxYIHVj`Pzp\\voJG}i`<\ngGThLXaxYIHVj`Pzp\\voJG}i`>\ngGThMX`DYIHUj@zp\\foBG}i`\ngGThmX`D[kNRREZ`NlGIkpa\x7FZX\ngGTiCQePKdkjj`NlFJ[rA@\ngGTiCQePKdkjjhdNlFR\\xL\\wdB<\ngGTiLXaxGdjffhDNlFMkra@<\ngGTiLXaxGdjffhDNlFMkra@>\ngGU@CPdsMLAuhiu^XH\ngGU@CPdsMLAuhjs_XIw^`\ngGU@CPdsMLAuhju_XIw^`\ngGU@CPdsTlAtiJnQo[N{t\ngGU@DPdsMTAtXisVzpZG}h`\ngGU@DPdsMTAtXisVzp[{}h`\ngGU@DPdsMTAtXisWNbdmu`tO{Q@\ngGU@DPdsMTAtXisWNbgMu`tO{Q@\ngGU@DPdsMTAtXisZzpZG}h`\ngGU@DPdsMTAtXis[NbgMu`tO{Q@\ngGU@DPdsMTAtXiuVzpZG}h`\ngGU@DPdsMTAtXiuVzp[{}h`\ngGU@DPdsMTAtXiuWNbdmu`tO{Q@\ngGU@DPdsMTAtXiuWNbgMu`tO{Q@\ngGU@DPdsMTAtXiu[NbgMu`tO{Q@\ngGU@DPdsMTAuhjs_XIw]\x7FmD\ngGU@DPdsMTAuhjs_XIw^\x7FmD\ngGU@DPdsMTAuhjsgQRV~pSn}\x7FZH\ngGU@DPdsMTAuhju_XIw^\x7FmD\ngGU@DPdsUUHauhjs_XIw]\x7FmD<\ngGU@DPdsUUHauhjs_XIw^\x7FmD<\ngGU@DPdsUUHauhjs_XIw^\x7FmD>\ngGU@DPdwM@AuHwQw]`\ngGU@DPdwM@AuHwQw^`\ngGU@DPdwM@AuHytTencn}@\ngGU@DPdwMLAthzncn{@\ngGU@DPdwMLAthzncn}@\ngGU@DPdwMLAuhyk]GmB\ngGU@DPdwMLAuhyk^TH\ngGU@DPdwMLAuhykgQRVzOZD\ngGU@DPdwMLAuhykgQRV|hP\ngGU@DPdwMLAuhykgQSf|hP\ngGU@DPdwMLAuhym^TH\ngGU@DPdwMLAuhymgQSf|hP\ngGU@DPdwMRAthzncn{@\ngGU@DPdwMRAthzncn}@\ngGU@DPdwMRAthzncv{@\ngGU@DPdwMRAthzncv}@\ngGU@DPdwMRAthzshiK]G]z\ngGU@DPdwMRAthzshiK]Gmz\ngGU@DPdwMRAthzshis]Gmv\ngGU@DPdwMRAuhyj\ngGU@DPdwMRAuhyk^Wh\ngGU@DPdwMRAuhykgQRT\ngGU@DPdwMRAuhykgQRV|oP\ngGU@DPdwMRAuhykgQSd\ngGU@DPdwMUMAuhyk^TH<\ngGU@DPdwMUMAuhyk^TH>\ngGU@DPdwMUMAuhyk^Wp<\ngGU@DPdwMUMAuhyk^Wp>\ngGU@DPdwMUMAuhykgQRV|hP<\ngGU@DPdwMUMAuhykgQRV|hP>\ngGU@DPdwMUMAuhykgQSf|hP<\ngGU@DPdwMUMAuhykgQSf|hP>\ngGU@DPdwMUMAuhym^TH<\ngGU@DPdwMUMAuhym^TH>\ngGU@DPdwS@AuHwQw]`\ngGU@DPdwS@AuIWHvmg]v\ngGU@DPdwSRAtiZnQm[N{t\ngGU@DPdwSUMAuhykgQSf|hP<\ngGU@DPdwSUMAuhykgQSf|hP>\ngGU@E`dsMTAtXiKVzHZG}h`=\ngGU@E`dsMTAtXiKVzH[{}h`\ngGU@E`dsMTAtXiKWNbdmtPww{Q@\ngGU@E`dsMTAtXiKWNbgMtPtO{Q@\ngGU@E`dsMTAtXiKWNbgMtPww{Q@\ngGU@E`dsMTAtXiKZzHZG}h`\ngGU@E`dsMTAtXiK[NbdmtPtO{Q@\ngGU@E`dsMTAtXiK[NbgMtPtO{Q@\ngGU@E`dsMTAtXiMZzHZG}h`=\ngGU@E`dsMTAthjshiK]G]{~tP\ngGU@E`dsMTAthjshis]Gm{~tP\ngGU@E`dwSTAtXyKVzHZG}i`=\ngGU@E`dwSTAtXyKWNbgMtPtO{S@\ngGU@E`dwSTAtXyK[NbgMtPtO{S@\ngGU@LPdmUTAuhik^TH\ngGU@h`NdiMtp@]RMt]w_{R@=\ngGUACPYRYjV@ztTynmt}@\ngGUADPYR[fi@zT]YtTencn}@\ngGUADPYR[fi@zT]YtTencv}@\ngGUADPYR[fjf`zt\\uoJD<\ngGUADPYR[fjf`zt\\uoJD>\ngGUADP^R[fi@zT]WQw^`\ngGUAE`iRYff@zLTekgQSfzOZG}h`\ngGUAE`iR[ij@zL\\ek]DMC~tp=\ngGUAE`iR[ij@zL\\fm]DMC~tp=\ngGUAIQIRZZj@zLTyKdqSdmu`dH\ngGUDLT@b^BSRuPGVbfmyP\x7Fdd\\P\ngGUDLT@b^BSRuPGVbfuyP`\ngGUDLTHb^BSSPPGRSV~vsna@\ngGUDLTHb^BSSPPGRSZ~vsna@\ngGUHEjICHiCUPGRbT\ngGUHeaZCS^RYfj@ztTfshiK]DM}~tP\ngGX@@dmMTAuXirVm}`dMB\ngGX@@dmUTAuXirVm}`dMB\ngGX@@dmUTAuXirVnRFJ\\wvBPtH\ngGX@@dmUTAuXirVn\\FI[{AH[x\ngGX@@dmUTAuXirVn\\FJ[{AHZD\ngGX@@dmUTAuXirVu}`dMB\ngGX@@dmUTAuXirVv\\FI[{AHZD\ngGX@@dmUTAuXirZu}`dMB\ngGX@@dmUUDauXirVn\\FJ[{AH[x<\ngGX@@dmUUDauXirVn\\FJ[{AH[x>\ngGX@@dmUUDauXirVv\\FJ[{AHZD>\ngGX@@dsD@AnQo[N{l=\ngGX@@dsD@AnQo[N{t\ngGX@@dsD@AnQo[O[t=\ngGX@@dsD@AnQo]N{l=\ngGX@@dsD@AnQo]N{t\ngGX@@dsD@AnQo]O[t=\ngGX@@dsD@AnQw[N{l=\ngGX@@dsD@AnQw]N{l=\ngGX@@dsD@As`qK\\cnv]wh\ngGX@@dsD@AshiK\\c^z]wh\ngGX@@dsD@Ashis\\c^z^wh\ngGX@@dsDLAuEWHwng]z\ngGX@@dsDLAudek\\c^v^tH\ngGX@@dsDLAudek\\cnv^wp\ngGX@@dsDLAudek_C^wP`\ngGX@@dsDLAudem\\c^v^tH\ngGX@@dsDLAudemgAcfyG]l}hP\ngGX@@dsDLAudemgQRVyF}t}hP\ngGX@@dsM@AthynQwAN{l=\ngGX@@dsM@AthynQwAN{t\ngGX@@dsM@AthynQw^N{l=\ngGX@@dsM@AthyolD{np=\ngGX@@dsM@AthyolD{oP\ngGX@@dsM@AthyolD}oP=\ngGX@@dsM@Athyomx{np=\ngGX@@dsM@Athys`qK\\cnB]wh\ngGX@@dsM@Athys`qK_XIw^`\ngGX@@dsM@AthyshiK\\cnB]wh\ngGX@@dsM@AthyshiK_XIw^`\ngGX@@dsM@AthyshiK_[qw^`\ngGX@@dsM@Athyshis_XI{^`\ngGX@@dsM@AthznQwAN{l=\ngGX@@dsM@AthznQwAN{t\ngGX@@dsM@AthzolD{np=\ngGX@@dsM@AthzolD{oP\ngGX@@dsM@Athzs`qK\\cnB]wh\ngGX@@dsM@Athzs`qK_XIw^`\ngGX@@dsM@AthzshiK\\cnB]wh\ngGX@@dsM@AthzshiK_XIw^`\ngGX@@dsM@AuIWHwmg]v=\ngGX@@dsM@AuIWHwmg]z\ngGX@@dsM@AuIWHwmgmz=\ngGX@@dsM@AuIWHwng]v=\ngGX@@dsM@AuIWHwng]z\ngGX@@dsM@AuIWHwngmz=\ngGX@@dsM@AuIYtTenQo]N{t\ngGX@@dsMLAuXirVmu`tH\ngGX@@dsMLAuXirVm}`gmB\ngGX@@dsMLAuXirVn]EN[kAhP\ngGX@@dsMLAuXirVn]EN[{AOZD\ngGX@@dsMLAuXirVn]EN[{^OZD\ngGX@@dsMLAuXirVu}`gmB\ngGX@@dsMLAuXitVmrNxI{P`\ngGX@@dsMLAuXitVn\\FN[kAhP\ngGX@@dsMLAuhjs_XIw^`\ngGX@@dsMTAtYIKVyF}lahP\ngGX@@dsMTAtYIKVyF}tahP\ngGX@@dsMTAtYIM[IbgI[d[wRFa@\ngGX@@dsMTAuXirVmrNxICP`\ngGX@@dsMTAuXirVm}`dMB\ngGX@@dsMTAuXirVnSENRwH{`dMB\ngGX@@dsMTAuXirVnSENRwvBPtH\ngGX@@dsMUDauXirVn]EN[{AHZD<\ngGX@@dsMUDauXirVn]EN[{AHZD>\ngGX@@dsT`Athyncn{@=\ngGX@@dsT`Athyncn}@\ngGX@@dsT`Athyomt{np=\ngGX@@dsT`Athyomt{oP\ngGX@@dsT`Athys`qK]G]z\ngGX@@dsT`Athys`qK_[iw^`\ngGX@@dsT`AthyshiK_[iw^`\ngGX@@dsT`AuIWHwmg]v=\ngGX@@dsT`AuIWHwmg]z\ngGX@@dsT`AuIWHwmgmz=\ngGX@@dsT`AuIWHwng]v=\ngGX@@dsT`AuIWHwng]z\ngGX@@dsT`AuIWHwngmz=\ngGX@@dsT`AuIWH{mg]v=\ngGX@@dsT`AuIWH{mg]z\ngGX@@dsT`AuIWH{ng]v=\ngGX@@dsT`AuIWH{ng]z\ngGX@@dsT`AuIYpXenQw[N{t\ngGX@@dsT`AuIYpXenQw]N{t\ngGX@@dsT`AuIYtTenQo]N{t\ngGX@@dsT`AuIYtTenQw]N{t\ngGX@@dsTlAtYIKVyF}l}hP\ngGX@@dsTlAtYIKVyF}t}o`\ngGX@@dsTlAtYIKV~F}na@\ngGX@@dsTlAtYIKV~F}va@\ngGX@@dsTlAtYIKWNCGMrN{Y{P`\ngGX@@dsTlAtYIKZyF}l}hP\ngGX@@dsTlAtYIKZyF}t}hP\ngGX@@dsTlAtYIKZyG]l}hP\ngGX@@dsTlAtYIK[NCDm|N{]B\ngGX@@dsTlAtYIK[NCDm|N{mB\ngGX@@dsTlAtiJnQo]O[l\ngGX@@dsTlAtiJnQw]N{t\ngGX@@dsUAHathyolD{np+\ngGX@@dsUAHathyolD{np-\ngGX@@dsUAHathyolD{n\x7FrPJH+\ngGX@@dsUAHathyolD{n\x7FrPJH-\ngGX@@dsUAHathyolD{oP<\ngGX@@dsUAHathyolD{oP>\ngGX@@dsUAHathyolD}oP+\ngGX@@dsUAHathyolD}oP-\ngGX@@dsUAHathyomx{np+\ngGX@@dsUAHathyomx{np-\ngGX@@dsUAHathyomx{n\x7FrPJH+\ngGX@@dsUAHathyomx{n\x7FrPJH-\ngGX@@dsUAHathyomx{oP<\ngGX@@dsUAHathyomx{oP>\ngGX@@dsUAHathys`qK_XIw^`<\ngGX@@dsUAHathys`qK_XIw^`>\ngGX@@dsUAHathys`qK_[qw^`<\ngGX@@dsUAHathys`qK_[qw^`>\ngGX@@dsUAHathys`qs_XI{^`<\ngGX@@dsUAHathys`qs_XI{^`>\ngGX@@dsUAHathyshiK_XIw^`<\ngGX@@dsUAHathyshiK_XIw^`>\ngGX@@dsUAHathyshiK_[qw^`<\ngGX@@dsUAHathyshiK_[qw^`>\ngGX@@dsUAHathzolD{np+\ngGX@@dsUAHathzolD{np-\ngGX@@dsUAHathzolD{oP<\ngGX@@dsUAHathzolD{oP>\ngGX@@dsUAHathzolD}oP+\ngGX@@dsUAHathzolD}oP-\ngGX@@dsUAHathzs`qK_XIw^`<\ngGX@@dsUAHathzs`qK_XIw^`>\ngGX@@dsUAHathzs`qs_XI{^`<\ngGX@@dsUAHathzs`qs_XI{^`>\ngGX@@dsUMHauXirVmu`tH<\ngGX@@dsUMHauXirVmu`tH>\ngGX@@dsUMHauXirVm}`gmB<\ngGX@@dsUMHauXirVn\\FN[{AOZD<\ngGX@@dsUMHauXirVn\\FN[{AOZD>\ngGX@@dsUMHauXirVv\\FN[{AOZD>\ngGX@@dsUMHauXitVmu`tH>\ngGX@@dsUMHauXitVn\\FN[{AOZD<\ngGX@@dsUMHauXitVn\\FN[{AOZD>\ngGX@@dsUMHauhjs_XIw^`<\ngGX@@dsUMHauhjs_XIw^`>\ngGX@@dsUThdauXirVnRFJ\\wvBPtH>\ngGX@@dsUThdauXirVn\\FN[{AHZD<\ngGX@@dsUThdauXirVn\\FN[{AHZD>\ngGX@@dsUThdauXirVn]EN[{AHZD<\ngGX@@dsUThdauXirVn]EN[{AHZD>\ngGX@@dsUThdauXirVu}`dMB<\ngGX@@dsUThdauXirVu}`dMB>\ngGX@@dsUThdauXirVv]EN[{AHZD<\ngGX@@dsUThdauXirVv]EN[{AHZD>\ngGX@@dsUThdauXirVv]EN[{^HZD<\ngGX@@dsUThdauXitVn\\FN[{AHZD<\ngGX@@dsUThdauXitVn\\FN[{AHZD>\ngGX@@dsUThdauXitVu}`dMB<\ngGX@@dsUThdauXitVu}`dMB>\ngGX@@dsUTheAuXirVnRFJRwvBPwp<\ngGX@@dsUTheAuXirVnRFJRwvBPwp>\ngGX@@dsUTheAuXirVnRFJ\\wvBPtH<\ngGX@@dsUTheAuXirVnRFJ\\wvBPtH>\ngGX@@dsUTheAuXirVn\\FN[{AHZD<\ngGX@@dsUTheAuXirVn\\FN[{AHZD>\ngGX@@dsUTheAuXirVn]EN[{AHZD<\ngGX@@dsUTheAuXirVn]EN[{AHZD>\ngGX@@dsUTheAuXirVu}`dMB<\ngGX@@dsUTheAuXirVu}`dMB>\ngGX@@dsUTheAuXirVvZFJ\\eolDahP>\ngGX@@dsUTheAuXirVv]EI[{AHZD<\ngGX@@dsUTheAuXirVv]EN[{AHZD>\ngGX@@dsUTheAuXirZn]EI[{AH[x<\ngGX@@dsUTheAuXitVv\\FN[{AHZD<\ngGX@@dsUTheAuXitVv\\FN[{AHZD>\ngGX@@dsUTiDauXitVn\\FN[{AHZD<\ngGX@@dsUTiDauXitVn\\FN[{AHZD>\ngGX@@dsUTiDauXitVn]EN[{AHZD<\ngGX@@dsUUHauXirVm}`dMB<\ngGX@@dsUUHauXirVm}`dMB>\ngGX@@dsUUHauXirVm}oDMB<\ngGX@@dsUUHauXirVm}oDMB>\ngGX@@dsUUHauXirVnSENRwvBPtH>\ngGX@@dsUUHauXirVnZFJ\\eolDahP<\ngGX@@dsUUHauXirVnZFJ\\eolDahP>\ngGX@@dsUUHauXirVnZFJ\\eomxahP<\ngGX@@dsUUHauXirZu}`dMB<\ngGX@@dsUUHauXirZu}`dMB>\ngGX@@dsUUHauXitVm}`dMB<\ngGX@@dsUUHauXitVm}`dMB>\ngGX@@dsUUHauXitVnRFNRwvBPtH<\ngGX@@dsUUHauXitVnRFNRwvBPtH>\ngGX@@dtuRAuXirVmu`dH\ngGX@@dtuRAuXirVn\\FI[{AH[t\ngGX@@dtuSHauXirVn]EI[kAHP<\ngGX@@dtuSHauXirVn]EI[kAHP>\ngGX@@dtuSHauXirZn]EI[{AH[t>\ngGX@@dtuTAuXirVm}`dMB\ngGX@@dtuTAuXirVm}`dM|\ngGX@@dtuTAuXirVnSENRwvBPtH\ngGX@@dtuTAuXirVnSENRwvBPwp\ngGX@@dtuTAuXirVn\\FI[{AHZD\ngGX@@dtuTAuXirVn\\FI[{AH[x\ngGX@@dtuTAuXirVu}`dMB\ngGX@@dtuTAuXirVv\\FI[{AHZD\ngGX@@dtuUHauXirVm}`guB<\ngGX@@dtuUHauXirVm}`guB>\ngGX@@dtuUHauXirVnRFJRwvBPtH<\ngGX@@dtuUHauXirVnRFJRwvBPtH>\ngGX@@dtuUHauXirVn]EI[{AHZD<\ngGX@@dtuUHauXirVn]EI[{AHZD>\ngGX@@dtuUHauXirVn]EI[{AOjD<\ngGX@@dtuUHauXirVn]EI[{AOjD>\ngGX@@dtuUHauXirVn]GI[{AOjD<\ngGX@@dtuUHauXirVn]GI[{AOjD>\ngGX@@dtuUHauXirZm}`dMB<\ngGX@@dtuUHauXirZm}`dMB>\ngGX@@dtuUHauXirZn\\FI[{AHZD<\ngGX@@dtuUHauXirZn\\FI[{AHZD>\ngGX@@dtuUHauXirZn]EI[{AHZD<\ngGX@@dtuUHauXirZn]EI[{AHZD>\ngGX@@dwATAulek\\cZvPtH\ngGX@@dwATAulek\\cZvPtOyKDd\ngGX@@dwATAulek\\cZzPtH\ngGX@@dwATAulfm\\cZvPtH\ngGX@@dwAULaulekgQSfyFutahP<\ngGX@@dwAULaulekgQSfyFutahP>\ngGX@@dwAULaulem\\cZvPtH<\ngGX@@dwSTAtYYKVyFutahP\ngGX@@dwSTAtYYKVyGUlahP\ngGX@@dwSTAtYYMZyFulahP\ngGX@@dwSTAtYYMZyFutahP\ngGX@@dwSTAtYYMZyGUlahP\ngGX@@dwSTAuXirVmtPtH\ngGX@@dwSULatYYKWNbgMrMkiCP`<\ngGX@@dwSULatYYKWNbgMrMkiCP`>\ngGX@@dwSULatYYKWNbgMrNkiCP`>\ngGX@@dwSULatYYKZyFulahP<\ngGX@@dwSULatYYKZyFulahP>\ngGX@@dwSULauXirVn\\EN[hahP>\ngGX@@dwSULauXirVv]EN[y]HZD<\ngGX@@eMUTAtpqSdm[eApRFa@\ngGX@@eMUTAtpqSdm[eApRFa\x7FIHxv`@\ngGX@@eMUTAtpqSdm[eApRFa\x7FZ@\ngGX@@eMUTAtpqSdm[eApRF~\x7FZ@\ngGX@@eMUTAtpqSdm\\dLTynTGAHZG}h@\ngGX@@eMUTAtpqSdm\\xLTwJC`dMB\ngGX@@eMUTAtpqSdm\\xLTwJC`dMC~t@\ngGX@@eMUTAtpqSdm\\xLTwJ}`dMB\ngGX@@eMUTAtpqSdmkeApRFa@\ngGX@@eMUTAtpqSdmkeApRFa\x7FZ@\ngGX@@eMUTAtpqSdmlxLRwJC`dMC~t@\ngGX@@eMUTAtpqSdukeApRFa\x7FZ@\ngGX@@eMUTAtpqSdulxLTwJC`dMC~t@\ngGX@@eMUTAtpqShukeApRFa@\ngGX@@eMUTAtpqShukeApRFa\x7FZ@\ngGX@@eMUTAtpqUdm[eApRFa@\ngGX@@eMUTAtpqUdm[eApRFa\x7FZ@\ngGX@@eMUTAtpqUdm\\xLTwJC`dMB\ngGX@@eMUTAtpqUdm\\xLTwJC`dMC~t@\ngGX@@eMUTAtpqUdmkeApRFa\x7FZ@\ngGX@@eMUUHatpqSdu[eApRF~\x7FZ@<\ngGX@@eMUUHatpqSdu[eApRF~\x7FZ@>\ngGX@@eSU@AuAWJwmg]w~t@=\ngGX@@eSU@AuAWJwmg]{~t@=\ngGX@@eSU@AuAWJwmgm{~t@=\ngGX@@eSU@AuAWJwng]w~t@=\ngGX@@eSU@AuAWJwng]{~t@\ngGX@@eSU@AuAWJwngm{~t@=\ngGX@@eSU@AuAWJ{ng]w~t@=\ngGX@@eSU@AuAWJ{ng]{~t@=\ngGX@@eSU@AuAWJ{ngm{~t@=\ngGX@@eSU@AuAYpTenUo]N{w}h@\ngGX@@eSU@AuAYpXenUw]N{w}h@\ngGX@@eSU@Au`is\\hNB]w_yJEFt@=\ngGX@@eSU@Au`is\\hNB]w_{P@=\ngGX@@eSU@Au`is\\hNB]wh\ngGX@@eSU@Au`is\\hNB]woyJEFt@=\ngGX@@eSU@Au`is\\hNB]wo{P@=\ngGX@@eSU@Au`is\\hNB^wh=\ngGX@@eSU@Au`is\\hNB^wo{P@=\ngGX@@eSU@Au`is\\hN|]w_yJEFt@=\ngGX@@eSU@Au`is\\hN|]w_{P@=\ngGX@@eSU@Au`is\\hN|]wo{P@\ngGX@@eSU@Au`is\\hN|^wo{P@=\ngGX@@eSU@Au`isfabgI[eApSv}@=\ngGX@@eSU@Au`isfabgI[eApSv}\x7FZ@=\ngGX@@eSU@Au`isgARVyP]x{o_v`@\ngGX@@eSU@Au`isgAbVyP\\D{o_v`@\ngGX@@eSU@Au`isgAcfyP\\D}o_v`@\ngGX@@eSU@Au`iu\\hNB]w_{P@=\ngGX@@eSU@Au`iu\\hNB]wo{P@\ngGX@@eSU@Au`iu\\hNB^wo{P@=\ngGX@@eSU@Au`iugARVyP\\D{o_v`@\ngGX@@eSU@Au`iugAbVyP\\D{o_v`@\ngGX@@eSU@Au`js\\hN|]w_{P@=\ngGX@@eSU@Au`ju\\hNB]w_{P@=\ngGX@@eSU@Au`ju\\hNB]wh\ngGX@@eSU@Au`ju\\hNB]wo{P@=\ngGX@@eSU@Au`ju\\hNB^wh=\ngGX@@eSU@Au`ju\\hNB^wo{P@=\ngGX@@eSU@Au`jufabgI[eApSv}@=\ngGX@@eSU@Au`jugAbVyP\\D{o_v`@\ngGX@@eSU@Au`jugAcfyP\\D}o_v`@\ngGX@@eSUA@au`is\\hN|^wh-\ngGX@@eSUA@au`isgARVyP]x{oP<\ngGX@@eSUA@au`isgARVyP]x{oP>\ngGX@@eSUA@au`isgAbVyP\\D{oP<\ngGX@@eSUA@au`isgAbVyP\\D{oP>\ngGX@@eSUA@au`isgAcfyP\\D}oP<\ngGX@@eSUA@au`isgAcfyP\\D}oP>\ngGX@@eSUA@au`iugARVyP\\D{oP<\ngGX@@eSUA@au`iugARVyP\\D{oP>\ngGX@@eSUA@au`iugASfyP\\D}oP<\ngGX@@eSUA@au`iugASfyP\\D}oP>\ngGX@@eSUA@au`jugAbVyP\\D{oP<\ngGX@@eSUA@au`jugAbVyP\\D{oP>\ngGX@@eSULAtPrSfyP\\D}o_v`@=\ngGX@@eSULAtaRnUw]N{w}h@=\ngGX@@eSULAtpqSdm[eApSva\x7FZ@=\ngGX@@eSULAtpqSdm[yApZG}h@=\ngGX@@eSULAtpqSdm[yAwjG}h@\ngGX@@eSULAtpqSdm\\dLTenTGAOZG}h@=\ngGX@@eSULAtpqSdm\\tLTyK_HNCP\x7Fm@=\ngGX@@eSULAtpqSdm\\xLRwJC`gmC~t@\ngGX@@eSULAtpqSdm\\xLRwrC`tO{P@\ngGX@@eSULAtpqSdm\\xL\\wJC`gmC~t@\ngGX@@eSULAtpqSdm\\xL\\wrC`tO{P@\ngGX@@eSULAtpqSdmkeApSva\x7FZ@=\ngGX@@eSULAtpqSdmkyApZG}h@=\ngGX@@eSULAtpqSdmltLTyK\\hNB^tO{P@=\ngGX@@eSULAtpqSdmlxL\\wJC`gmC~t@\ngGX@@eSULAtpqSdmlxL\\wrC`tO{P@\ngGX@@eSULAtpqShm[yApZG}h@\ngGX@@eSULAtpqShm\\xL\\wJC`gmC~t@\ngGX@@eSULAtpqShm\\xL\\wrC`tO{P@\ngGX@@eSULAtpqShmkeApSva\x7FZ@\ngGX@@eSULAtpqShmkyApZG}h@\ngGX@@eSULAtpqShmlxL\\wJC`gmC~t@\ngGX@@eSULAtpqShmlxL\\wrC`tO{P@\ngGX@@eSULAtpqUdm\\xJ\\wJCoGmC~t@\ngGX@@eSUTAtQQKVyV}lah_v`@=\ngGX@@eSUTAtQQKVyV}tah_v`@\ngGX@@eSUTAtQQKVyW]tah_v`@=\ngGX@@eSUTAtpqSdm[eApRFa@\ngGX@@eSUTAtpqSdm[eApRFa\x7FIPhv`@=\ngGX@@eSUTAtpqSdm[eApRFa\x7FIXdv`@=\ngGX@@eSUTAtpqSdm[eApRFa\x7FZ@=\ngGX@@eSUTAtpqSdm[eAwbFa\x7FZ@\ngGX@@eSUTAtpqSdm\\dL\\enTGAHZG}h@\ngGX@@eSUTAtpqSdm\\tLTyK\\hNBPtH\ngGX@@eSUTAtpqSdm\\tLTyK\\hNBPtO{P@=\ngGX@@eSUTAtpqSdukeApRFa@\ngGX@@eSUTAtpqSdukeApRFa\x7FZ@=\ngGX@@eSUTAtpqShm[eApRFa\x7FZ@\ngGX@@eSUTAtpqShm\\dL\\enTGAHZG}h@\ngGX@@eSUT`hatpqSdm\\dL\\enTGAH[x>\ngGX@@eSUT`hatpqSdm\\xLRwJC`dM|>\ngGX@@eSUT`hatpqSdm\\xL\\wJC`dMB<\ngGX@@eSUT`hatpqSdm\\xL\\wJC`dMB>\ngGX@@eSUT`hatpqSdmlxL\\wJC`dMB<\ngGX@@eSUT`hatpqSdmlxL\\wJC`dMB>\ngGX@@eSUT`hatpqSdulxL\\wJC`dMB<\ngGX@@eSUT`hatpqSdulxL\\wJC`dMB>\ngGX@@eSUT`hatpqShm\\xJ\\wJC`dMB>\ngGX@@eSUT`hatpqShmlxJ\\wJC`dMB<\ngGX@@eSUT`iAtpqSdm\\xL\\wJC`dMB<\ngGX@@eSUT`iAtpqSdm\\xL\\wJC`dMB>\ngGX@@eSUT`iAtpqSdmldL\\enTGAHZD>\ngGX@@eSUT`iAtpqSdmlxLRwJC`dMB<\ngGX@@eSUT`iAtpqSdmlxLRwJC`dMB>\ngGX@@eSUT`iAtpqSdmlxL\\wJC`dMB<\ngGX@@eSUT`iAtpqSdu\\xLRwJC`dM|<\ngGX@@eSUT`iAtpqSdu\\xLRwJC`dM|>\ngGX@@eSUT`iAtpqShm\\xJ\\wJC`dMB<\ngGX@@eSUU@atpqSdm\\dL\\enTGAHZD<\ngGX@@eSUU@atpqSdm\\dL\\enTGAHZD>\ngGX@@eSUU@atpqShm[eApRFa@<\ngGX@@eSUU@atpqShm[eApRFa@>\ngGX@@eSUUHatQQKWNCGMrn{iCP\x7Fm@<\ngGX@@eSUUHatQQKZyV}lah_v`@+\ngGX@@eSUUHatpqSdm[eApRF~\x7FZ@+\ngGX@@eSUUHatpqSdm[eApRF~\x7FZ@-\ngGX@@eSUUHatpqSdm\\dLTynTGAHZD<\ngGX@@eSUUHatpqSdm\\dLTynTGAHZD>\ngGX@@eSUUHatpqSdm\\dL\\enTGAH[{}h@<\ngGX@@eSUUHatpqSdm\\tLTyK\\hNBPwp<\ngGX@@eSUUHatpqSdm\\tLTyK\\hNBPwp>\ngGX@@eSUUHatpqSdm\\xJ\\wJCoDMC~t@<\ngGX@@eSUUHatpqSdm\\xJ\\wJCoDMC~t@>\ngGX@@eSUUHatpqSdm\\xLRwJC`dM}~t@<\ngGX@@eSUUHatpqSdm\\xLRwJC`dM}~t@>\ngGX@@eSUUHatpqSdm\\xL\\wJC`dMC~t@<\ngGX@@eSUUHatpqSdm\\xL\\wJC`dMC~t@>\ngGX@@eSUUHatpqSdm\\xL\\wJC`dM}~t@<\ngGX@@eSUUHatpqSdmkeApRFa@<\ngGX@@eSUUHatpqSdmkeApRFa@>\ngGX@@eSUUHatpqSdmkeApRFa\x7FZ@+\ngGX@@eSUUHatpqSdmkeApRFa\x7FZ@-\ngGX@@eSUUHatpqSdmldLTynTGAHZD<\ngGX@@eSUUHatpqSdmldLTynTGAHZD>\ngGX@@eSUUHatpqSdmltLTyK\\hNBPtH<\ngGX@@eSUUHatpqSdmltLTyK\\hNBPtH>\ngGX@@eSUUHatpqSdmltLTyK\\hNBPtO{P@+\ngGX@@eSUUHatpqSdmltLTyK\\hNBPtO{P@-\ngGX@@eSUUHatpqSdmlxLRwJC`dMC~t@<\ngGX@@eSUUHatpqSdmlxLRwJC`dMC~t@>\ngGX@@eSUUHatpqSdmlxL\\wJC`dMC~t@<\ngGX@@eSUUHatpqSdmlxL\\wJC`dMC~t@>\ngGX@@eSUUHatpqSdu\\tLTyK\\hNBPwp>\ngGX@@eSUUHatpqSdu\\xLRwJC`dM}~t@<\ngGX@@eSUUHatpqSdulxL\\wJC`dMC~t@>\ngGX@@eSUUHatpqShm\\xJ\\wJC`dMC~t@<\ngGX@@eSUUHatpqShm\\xJ\\wJC`dMC~t@>\ngGX@@eSUUHatpqShm\\xL\\wJC`dMC~t@<\ngGX@@eSUUHatpqShm\\xL\\wJC`dMC~t@>\ngGX@@eSUUHatpqShmkeApRFa\x7FZ@>\ngGX@@eSUUHatpqShmlxJ\\wJC`dMC~t@<\ngGX@@eSUUHatpqShmlxJ\\wJC`dMC~t@>\ngGX@@eSUUHatpqShmlxLRwJC`dMC~t@<\ngGX@@eSUUHatpqShmlxLRwJC`dMC~t@>\ngGX@@eSUUHatpqShmlxL\\wJC`dMC~t@<\ngGX@@eSUUHatpqShmlxL\\wJC`dMC~t@>\ngGX@@eSUUHatpqShulxL\\wJC`dMC~t@<\ngGX@@eSUUHatpqShulxL\\wJC`dMC~t@>\ngGX@@e]MTAtpqSdm[f]pRFa\x7FZ@\ngGX@@e]MTAtpqSdm[{AHZG}h@\ngGX@@e]MTAtpqSdm\\xLTwL{`dMC~t@\ngGX@@e]MTAtpqSdmk{AHZG}h@\ngGX@`IWITtp@]PUrm{Y{^\x7Fm@=\ngGX@`IWITtp@]PUrm{i{^\x7Fm@=\ngGX@`IWITtp@]XJ\\wvB^wo{P@=\ngGX@`NtiMtu@]FVSVnQm[HZD\ngGXA@IRVjj@zlTyKV~pRFa@\ngGXA@IRVjj@zlTyKWICEN[{AHZD\ngGXA@IRVjj@zlTyKWNCEM}`dMB\ngGXA@IRYb@@wH{mg]v=\ngGXA@IRYb@@wH{ng]v=\ngGXA@IRYb@@ypXenQw[N{t\ngGXA@IRYb@@ypXynQw[O[t\ngGXA@IRYb@@ypXynQw]O[t\ngGXA@IRYf`@zT\\wH{`g]v=\ngGXA@IRYf`@zdkd[vsn{@=\ngGXA@IRYjP@zdkd[vsn{@=\ngGXA@IRYjP@zdkd[wSn{@=\ngGXA@IRYjP@zdkd]vsn{@=\ngGXA@IRYjP@zdkd]wSn{@=\ngGXA@IRYj`dPzT\\wvB]wX+\ngGXA@IRYj`dPzT\\wvB]wX-\ngGXA@IRYj`dPzT\\wvB]wh<\ngGXA@IRYj`dPzT\\wvB]wh>\ngGXA@IRYj`dPzT\\ypXeolD{oP<\ngGXA@IRYj`dPzT\\ypXeolD{oP>\ngGXA@IRYj`dPzT]WvB]wX+\ngGXA@IRYj`dPzT]WvB]wX-\ngGXA@IRYjfdPzlTzKWNCGM}`gmB<\ngGXA@IRYjfdPzlTzKWNCGM}`gmB>\ngGXA@IRYjjTR`zlTyKWNCGM}`dMB>\ngGXA@IRYjjdPzlTyKV~pRFa@<\ngGXA@IRYjjdPzlTyKV~pRFa@>\ngGXA@IRZZi@zlTyKWNCDm}`dMz\ngGXA@IRZZj@zlTyKV~pRFa@\ngGXA@IRZZj@zlTyKV~pRF~@\ngGXA@IRZZj@zlTyKWIbgI[d^pRF~@\ngGXA@IRZZj@zlTyKWIbgI[{AHZD\ngGXA@IRZZj@zlTyKWNCDm}`dMB\ngGXA@IRZZjdPzlTyKWICEI[{AHZD<\ngGXA@IRZZjdPzlTyKWICEI[{AHZD>\ngGXA@IRZZjdPzlTyKWNbdm}`dMB<\ngGXA@IRZZjdPzlTyKWNbdm}`dMB>\ngGXA@IRfjj@zXXirVmr`xICP`\ngGXA@IRfjj@zXXirVn\\FJ[e^pRFa@\ngGXA@IRih@@wJwmg]w~t@=\ngGXA@IRih@@wJwng]w~t@=\ngGXA@IRih@@wJ{ng]w~t@=\ngGXA@IRihF@ztRunUo[OZG}h@=\ngGXA@IRii`@z`ke[vsn{\x7FZ@=\ngGXA@IRii`@z`ke[vsn}\x7FZ@\ngGXA@IRii`@z`ke[vsv}\x7FZ@=\ngGXA@IRii`@z`ke]vsv}\x7FZ@=\ngGXA@IRii`@z`ke]wSn{\x7FZ@=\ngGXA@IRii`@z`ke]wSv}\x7FZ@=\ngGXA@IRii`@zpTynUwAN{o}h@=\ngGXA@IRii`@zpTynUwAO[w}h@=\ngGXA@IRii`@zpTynUw^O[w}h@=\ngGXA@IRii`@zpTyolD{o_v`@\ngGXA@IRii`@zpTyolD}o_v`@=\ngGXA@IRii`@zpTznUwAN{o}h@=\ngGXA@IRij`@zpTynTGAN{l=\ngGXA@IRij`@zpTynTGAN{t\ngGXA@IRijj@zXXirVmr`xICP`\ngGXA@IRijj@zXXirVnZFJ\\enTGAHZD\ngGXA@IRijjPTPzXXirVn\\FN[eApRFa@<\ngGXA@IRijjPT`zXXirVn\\FN[eApRFa@>\ngGXA@IRijjdPzXXirVnRFJ\\wJC`dMB<\ngGXA@IRijjdPzXXirVur`xICP`>\ngGXA@IRjZj@zXXirVmr`xICP`\ngGXA@IRjZj@zXXirVnRFJRwJC`dMB\ngGXA@IRjZj@zXXirVnRFJRwJC`dM|\ngGXA@IRjZj@zXXirVn\\FI[eApRFa@\ngGXA@IRjZj@zXXirVur`xICP`\ngGXA@IRjZj@zXXirVv\\FI[eApRFa@\ngGXA@IRkfj@zHdek\\s^vPtO{P@\ngGXA@IRkfj@zHdek\\s^zPtO{P@\ngGXA@IRkfj@zHdek\\snvPtO{P@\ngGXA@IRkfj@zHdek\\snzPtO{P@\ngGXA@IRkfj@zXXirVmsNxICP\x7Fm@\ngGXA@IRkfj@zXXirVm}`dMC~t@\ngGXA@IRnfj@zXXirVn\\FJ[f]pRFa\x7FZ@\ngGXA@NRYjP@zdkd[vsn{@=\ngGXA@NRYjP@zdkd[wSn{@=\ngGXA@NRYjV@zLdem\\c^v^tH\ngGXA@NRZZj@zlTyKWIbgI[{AHZD\ngGXAAiR[ij@zLlemgARVyGUlahP>\ngGXAAiR[ij@zLlemgARVyGUtahP>\ngGXAAiR[ij@zLlfkgASfyGUlao`>\ngGXAAiR[ij@zLlfm\\cZvPtH\ngGXAAiR[ij@zLlfm\\cZzPtH\ngGXAAiR[ij@zLlfmgASfyGUlahP>\ngGXAAiR[ij@zLlfmgASfyGUtahP>\ngGXD@jCTBUMT@GTC]G]w~t@=\ngGXDAjBtFRPrj`NjFJ\\eohEAHP>\ngGXDD@`aBS]MHGRejyFul{np\ngGXDD@`aBS]MHGRejyFul{oP\ngGXDD@b^BSRuPGUbgQjwvBPtO{Q@\ngGXDH@aABS]T@GTc\\cr|]w_{R@=\ngGXDH@aABS]T@GTc\\cr|]wo{R@=\ngGXDHGANBS]T@GTc\\cr|^wh=\ngGXDHGANBS]T@GTc\\cr|^woyHFD=\ngGXDHHQPbS]T@GTc]Gmz=\ngGXDHHQPbS]T@GTc]Gm{~RAa@=\ngGXDHO@~BUMUTbGUCEVjwrC`tH<\ngGXDHO@~BUMUTbGUCEVjwrC`tH>\ngGXDHOANBRtuPGUbgIZwvBPtO{R@\ngGXDHOA^BS]T@GTc]G]w~RAamH=\ngGXDHOA^BS]T@GTc]G]w~t`=\ngGXDHOA^BS]T@GTc]Gmz=\ngGXDHOA^BS]T@GTc]Gm{~RAa@=\ngGXDHOA^BS]UPGQcdm[d^WbFa\x7FI@pvd@=\ngGXDJDR^BSRuPGQbgI[kAHP\ngGXDJIARBSWUPGVcdmx_@\ngGXDL@aABS\\uPGQcdm[hah_vf@=\ngGXDL@bABUuUTRGQBdm\\dLTynbFa@<\ngGXDL@bABUuUTRGQBdm\\dLTynbFa@>\ngGXEHOA^BeIZZhCjqShuk{AHZG}i@\ngGXEHOA^DeInZ@CjQoat}o_rPLMi@=\ngGXEL@aAByInZhChqrVmtPtO{S@=\ngGXEaJAT@f\\nRfjj@zhXzMZyWlDahP\ngGXHAJAIfj@CiQs_XIw]`+\ngGXHAJAIfj@CiQs_XI{^`+\ngGXHAJAIfj@CiQu_XIw]`+\ngGXHAJAIfj@CiQu_XI{^`+\ngGXHAJAIfj@CiQugAbV~pSn}@>\ngGXHAJAIfj@CiQugAcf~pSv}@>\ngGXHAJAIfjXCkQUkNCGM}`gmv>\ngGXHAJAIfjhCjqSdm\\fJ\\eolDahP>\ngGXHAjAJfj@CiAS\\hN|]w_{P@=\ngGXHAjAJfj@CiAS\\hN|^wo{P@=\ngGXHAjAJfj@CiAS_HIw]\x7Fm@=\ngGXHAjAJfj@CiAS_HI{^\x7Fm@=\ngGXHAjAJfj@CiAU_HIw]\x7Fm@=\ngGXHAjAJfjBACiAS_HI{^`+\ngGXHAjAJfjBACiAS_HI{^`-\ngGXHAjAJfjBACiAU_HI{^`+\ngGXHAjAJfjBACiAU_HI{^`-\ngGXHAjAJfjXCjabhmlxJ\\wrCoTO{P@\ngGXHAjAJfjjACjabdm[yAHZD<\ngGXHAjAJfjjACjabdm[yAHZD>\ngGXHAjCIHYUPGSCENRunXEAHZD\ngGXHAjCIHYUPGSCENRusPqSdms@hICP\x7Fm@=\ngGXHB@aIfi@CjRnQo[N{l\ngGXHB@aIfi@CjRnQo[N{t\ngGXHB@aIfi@CjRnQo]N{l\ngGXHB@aIfiXCiRU\\c^v]wh\ngGXHB@aIfiXCkRSV~F}na@\ngGXHB@aIfidCiRU\\c^v^wX\ngGXHB@aIfidCiRU\\c^v^wh\ngGXHB@aIfidCkRSV~F}n}@\ngGXHB@aIfjBQCiQsgAbV~pSn}@>\ngGXHB@aIfjiQJChqSfn]EN[kAhP<\ngGXHB@aInfjZCkRsV~Funa@<\ngGXHB@aInfjZCkRsV~Funa@>\ngGXHBOAJfj@CkAUjyP\\D{np\ngGXHBOAJfjdCjabgM\\dLTeodGAoP\ngGXHD@aIfZhCjqSdm[{AHZG}h`=\ngGXHD@aIfZhCjqSdm\\zJ\\wvBPtO{Q@\ngGXHD@aIfZhCjqShm[{AHZG}h`=\ngGXHD@aIfZhCjqShm\\zJ\\wvBPtO{Q@\ngGXHD@aIfZhCjqShmk{AHZG}h`\ngGXHD@aIfihChrRVmrM{YCP\x7FmD=\ngGXHD@aIfihChrRVmrM{iCP`=\ngGXHD@aIfihChrRZurM{YCP\x7FmD=\ngGXHD@aIfihCiRU\\c^v]w_{Q@=\ngGXHD@aIfjjQCjqShmlxL\\wvBPtO{Q@>\ngGXHD@aIkjjQChqrVn\\gI[hahP<\ngGXHD@aIkjjQChqrVn\\gI[hahP>\ngGXHD@aInZ@CjQncn{@=\ngGXHD@aInZ@CjQncn}@\ngGXHD@aInZ@CjQshiK]G]z\ngGXHD@aInZXChqrVmt^tH\ngGXHD@aInZXChqrVmyP`\ngGXHD@aInZhChqrVmtPtH\ngGXHD@aInf@CjQncn{@=\ngGXHD@aInf@CjQncn}@\ngGXHD@aInf@CjRnQm[N{l=\ngGXHD@aInf@CjRnQm[N{t\ngGXHD@aInf@CjRnQm[O[t=\ngGXHD@aInf@CjRshiK\\cZz]wh\ngGXHD@aInfXChrrVm|Mk]B\ngGXHD@aInfXCiRu\\cZv^wh\ngGXHD@aInjBQCjQncn{@+\ngGXHD@aInjBQCjQncn{@-\ngGXHD@aInjBQCjQncn}@>\ngGXHDDQInf@CjRnQm[N{l=\ngGXHDOAInjBQCjQoax{np+\ngGXHDOAInjBQCjQoax{np-\ngGXHH@aIZjhCjqSdm[d^pRFa\x7FZP\ngGXHH@aIZjhCjqSdmk{AHZG}i@\ngGXHH@aIfj@CiQs\\cvB]w_{R@=\ngGXHH@aIfj@CiQs\\cvB]wo{R@\ngGXHH@aIfj@CiQsgAbVyGlD{o_vd@\ngGXHH@aIfj@CiQsgQRVyGlD{o_vd@\ngGXHH@aIfj@CiQsgQSfyGlD}o_vd@\ngGXHH@aIfj@CiQu\\cvB]w_{R@=\ngGXHH@aIfjXCjqSdm[d^pSva\x7FZP\ngGXHH@aIfjXCjqSdm\\xL\\wH}`gmC~t`\ngGXHH@aIfjXCjqSdmlzJ\\wp}`tO{R@\ngGXHH@aIfjXCkQUgNCDmrOXI{^\x7FmH\ngGXHH@aIfjXCkQUgNbgMrOXI{^\x7FmH\ngGXHH@aIfjhCjqSdm[d^pRFa\x7FZP\ngGXHH@aIfjhCjqSdm[{AHZG}i@\ngGXHH@aIfjhCjqSdm\\fJ\\enQ{AHZG}i@\ngGXHH@aIfjjICjqSdm\\zJ\\wH}`dMC~t`<\ngGXHH@aIfjjICjqSdm\\zJ\\wH}`dMC~t`>\ngGXHH@aIfjjICjqSdmlzJRwH}`dMC~t`>\ngGXHH@aIfjjICjqSdmlzJ\\wH}`dMC~t`<\ngGXHH@aIfjjICjqSdmlzJ\\wH}`dMC~t`>\ngGXHH@aIfjjICjqSdulzJ\\wH}`dMC~t`>\ngGXHH@aIfjjICjqShm\\zJ\\wH}`dMC~t`<\ngGXHH@aIfjjICjqShm\\zJ\\wH}`dMC~t`>\ngGXHH@aJnZBACiAu_XIw]`+\ngGXHH@aJnZBACiAu_XIw]`-\ngGXHHGAIfj@CiQs\\cvB]w_{R@=\ngGXHHGAIfj@CiQs\\cvB^wo{R@=\ngGXHHGAIfj@CiQs_XI{^\x7FmH=\ngGXHHGAIfjXCjqShm\\xLRwp}`tO{R@\ngGXHHGAIfjXCjqShm\\xL\\wVCP\x7FmH\ngGXHHGAIfjXCjqShm\\xL\\wp}`tO{R@\ngGXHHGAIfjhCjqSdm[d^pRFa\x7FZP\ngGXHHGAIfjhCjqSdm[{AHZG|dBcZP\ngGXHHOAIZZhCjqSdm[{AHZG}i@\ngGXHHOAIZjhCjqSdm[d^pRFa\x7FZP\ngGXHHOAIZjhCjqSdm[{AHZD\ngGXHHOAIfj@CiQs\\cvB]w_{R@=\ngGXHHOAIfj@CiQs\\cvB^wo{R@=\ngGXHHOAIfj@CiQs_XIw]\x7FmH=\ngGXHHOAIfj@CiQs_XI{^\x7FmH=\ngGXHHOAIfjBQCiQs_XI{^`+\ngGXHHOAIfjBQCiQs_XI{^`-\ngGXHHOAIfjhCjqSdm[d^pRFa\x7FZP\ngGXHHOAIfjhCjqSdm[{AHZG}i@\ngGXHHOAIfjjICjqSdmkd^pRFa\x7FZP<\ngGXHHOAIfjjQCjqSdm[{AHZD<\ngGXHHOAIfjjQCjqSdm[{AHZD>\ngGXHHOAJkZhCjaSdm[f]pRFa@\ngGXHHOAJkZhCjaSdm[{AHZD\ngGXHHOAJnjBACiAu_XIw]`+\ngGXHHOAJnjBACiAu_XIw]`-\ngGXHHOAJnjjACjaSdm[{AHZD<\ngGXHHOAJnjjACjaSdm[{AHZD>\ngGXHL@aJZjhCjabdm[yAHZD\ngGXH`Z@R^RjZj@zhXisV~P\\Fa@\ngGXH`Z@R^RjZj@zhXisWICEI[yApZD\ngGXHaJ@SNRYj`@zT]WvB^wh+\ngGXHaJ@SNRZZj@zlTyKV~pRFa@\ngGXHaJ@SNRZZjdPzlTyMV~pRFa@<\ngGXHaJ@SNRZZjdPzlTyMV~pRFa@>\ngGXHaj@SnRii`@zPTwJ{oG]w~t@=\ngGXHaj@SnRii`@zPTwJ{oGm{~t@=\ngGXHaj@SnRii`@zPTwv|]w_{P@=\ngGXHaj@SnRii`@zPTwv|]wo{P@\ngGXHaj@SnRii`@zPTwv|^wo{P@=\ngGXHaj@SnRii`@zPTypTeomx{o_v`@\ngGXHaj@SnRkfj@zhXiKVyg]xah_rPJMh@\ngGXHaj@SnRkfj@zhXiKV~wbFa\x7FZ@\ngGXHhG@]IR[ij@zlTyKV~WRFa\x7FI@pvd@\ngGXI@Z@ReTuTAuPqSfm|`xMB\ngGXIAjC\\eSU@At`inTG^N{o}h@=\ngGXIDHaRdmUTAuXirVm}`dMB\ngGXIHDPReWU@At`zolD{np+\ngGXIHO@ReUuTAuPirVm}`dMB\ngGXIHOBRdmMTAuXirVm}`dMC~t`\ngGXIHOBRdsMTAuXirVm}`dMC~t`\ngGXLJIARFdLbdMU@]JIP\ngGX`BDdwM@AuHwQw]`\ngGX`BDdwM@AuHwQw^`\ngGX`BDdwMLAthzncn{@\ngGX`BDdwMLAthzncn}@\ngGX`BDdwMLAuhyk]GmB\ngGX`BDdwMLAuhyk^TH\ngGX`BDdwMLAuhym]GmB\ngGX`BDdwMLAuhym^TH\ngGX`BDdwMRAthzncn{@\ngGX`BDdwMRAthzncn}@\ngGX`BDdwMRAthzncv{@\ngGX`BDdwMRAthzncv}@\ngGX`BDdwMRAthzshiK]Gmz\ngGX`BDdwMRAuhyj\ngGX`BDdwMRAuhyk^Wh\ngGX`BDdwMRAuhykgQRT\ngGX`BDdwMRAuhykgQRV|oP\ngGX`BDdwMUMAuhyk^TH<\ngGX`BDdwMUMAuhyk^TH>\ngGX`BDdwMUMAuhyk^Wp<\ngGX`BDdwMUMAuhyk^Wp>\ngGX`BDdwMUMAuhykgQRV|hP>\ngGX`BDdwMUMAuhykgQSf|hP<\ngGX`BDdwMUMAuhykgQSf|hP>\ngGX`BDdwMUMAuhym^TH<\ngGX`BDdwMUMAuhym^TH>\ngGX`BDdwULAuhykdabdmyP`\ngGX`BDdwUThlauhykgARV|hP>\ngGX`BDdwUThmAuhykgARV|hP<\ngGX`DBdsMTAtXisVzpZG}h`\ngGX`DBdsMTAtXisWNbdmu`tO{Q@\ngGX`DBdsMTAtXiuVzpZG}h`\ngGX`DBdsMTAtXiuWNbdmu`tO{Q@\ngGX`DBdsMTAtXiuZzpZG}h`\ngGX`DBdwMLAuhyk^TH\ngGX`DBdwMLAuhym^TH\ngGX`DBdwMRAthzncn{@\ngGX`DBdwMRAthzncn}@\ngGX`DBdwMRAthzshiK]G]z\ngGX`DBdwMRAuhyj\ngGX`DBdwMRAuhykgQRT\ngGX`DBdwMRAuhykgQRV|oP\ngGX`DBdwMUMAuhyk^TH<\ngGX`DBdwMUMAuhyk^TH>\ngGX`DBdwMUMAuhykgQRV|hP<\ngGX`DBdwMUMAuhykgQRV|hP>\ngGX`DBdwMUMAuhykgQSf|hP>\ngGX`DBdwMUMAuhym^TH<\ngGX`DBdwMUMAuhym^TH>\ngGX`DBdwSRAtiZnQm[N{l\ngGX`DBdwUThmAuhykgARV|hP<\ngGX`DBdwUThmAuhykgARV|hP>\ngGX`JDduuTAuhyK^DH\ngGX`JDduuTAuhyM^DH\ngGX`LDdwMTAtXyKVzHZG|ebSZX=\ngGX`LDdwMTAtXyKVzHZG}i`=\ngGX`LDdwMTAtXyKVzH[{|ebSZX\ngGX`LDdwMTAtXyKVzH[{}i`\ngGX`LDdwMTAtXyKWNbgMtPtO{S@\ngGX`LDdwMTAtXyKZzHZG}i`\ngGX`LDdwMTAtXyK[NbgMtPtO{S@\ngGX`LDdwMTAtXyMVzH[{}i`\ngGX`LDdwMTAtXyMZzHZG}i`=\ngGX`LDdwMTAthzncn{\x7FZX=\ngGX`LDdwMTAthzncn}\x7FZX\ngGX`LDdwMTAthzncv}\x7FZX=\ngGX`bDnLiMsP@]RMt]wX\ngGX`bDnLiMsT`]ZNZ`\ngGX`bDnLiMsUSP]ZNZweB<\ngGX`bDnLiMsUSP]ZNZweB>\ngGX`hEIWIMsP@]RMt]w_{R@=\ngGX`hEIWIMsP@]RMt]wo{R@\ngGX`hEIWIMsP@]RMt^wo{R@=\ngGX`hEIWIMsS@]FNRuncva\x7FZP\ngGX`hEIWIMsS@]FNRuncv~\x7FZP\ngGX`hEIWIMsS@]FNRuoJG}i@\ngGX`hEIWIMsS@]JNkh{n\x7Fvd@\ngGX`hEIWIMsS@]JNkh{o_vd@\ngGX`hEIWIMsS@]JNkh}n\x7Fvd@\ngGX`hEIWIMsS@]JNkh}o_vd@\ngGX`hEIWIMsU@]FNRunbFa\x7FZP\ngGX`hEIWIMsUSH]FNRunbF~\x7FZP<\ngGX`hEIWIMsUSH]FNRunbF~\x7FZP>\ngGXaBDYR[f`@zd[h{np\ngGXaBDYR[fi@zt\\uoKt\ngGXaBDYR[fjf`zt\\uoJD<\ngGXaBDYR[fjf`zt\\uoJD>\ngGXaBDYR[fjf`zt\\voJD<\ngGXaBDnR[f`@zd[h{np\ngGXaBDnR[f`@zd[h{oP\ngGXaBDnR[ff@zT]WQw^`\ngGXaBDnR[fi@zT]WQw]`\ngGXaBDnR[fi@zT]WQw^`\ngGXaBDnR[fi@zt\\u@\ngGXaBDnR[fi@zt\\uoKt\ngGXaBDnR[fjf`zt\\uoJD<\ngGXaBDnR[fjf`zt\\uoJD>\ngGXaLDnR[fj@zL\\ek]DMC~tp=\ngGXdBl@b^BSRuTbGVbfmyP`<\ngGXdBl@b^BSRuTbGVbfmyP`>\ngGXdBl@b^BSRuTbGVbfuyP`<\ngGXdBl@b^BSRuTbGVbfuyP`>\ngGXdBl@b^FQREj`NmDm[ra\x7FZD\ngGXdMD@baFRREZPNlGIkhao_vf@\ngGXdMD@baFRREZPNlGIkpa\x7FZX\ngGXdMD@baFRREZ`NlGI[haoovf@\ngGXdMD@baFRREZ`NlGIkhaoovf@\ngGXeMD@baF{IIBmPGVCdmtPww{S@\ngGXeMD@baF{IIBmPGVCdmt_Ww{S@\ngGXeMD@baF{IIBmPGVCdutPww{S@\ngGXhHZ@aIfjXCkQSfzGlG}i@\ngGXhHZ@aIfjXCkQSgNbdmtOXO{R@\ngGXhLEJAInjhChqrVmtPtO{S@=\ngGXhLEJAInjhChqrVutPtO{S@\ngGXhMD@cIIBmHGQCdu[hao_vf@\ngGXhMD@cIIBmHGQCdu[pa\x7FZX\ngGXhMD@cIIBmHGQCdu\\yNRwQC^\x7FmL\ngGXhMD@cIIBmHGQCdu\\yNRwaC~tp\ngGXhMD@cIIBmPGQCdm[hah_vf@\ngGXhMD@cIIBmPGQCdm[h~h_vf@\ngGXhMD@cIIBmPGQCdmkhah_vf@\ngGXhMD@cIIBmPGQCdu[hah_vf@\ngGXhMD@cIIBmPGQCdu[haoovf@\ngGXhMD@cIIBmPGQCdu\\yNRwQCP\x7FmL\ngGXhMD@cIIBmPGQCdukhah_vf@\ngGXhMD@cIIJmPGVBVmyP`\ngGXhMD@cIIJmPGVBVmy_@\ngGXhMD@cIIJmPGVBVn\\gI[ra@\ngGXhMD@cIIJmPGVBVuyP`\ngGXhMDOCIHYUPGQCdm[hahP\ngGXhbLjA\\YRnjjbPzHYImgAcfz`ZD<\ngGXhbLjA\\YRnjjbPzHYImgAcfz`ZD>\ngGXhdZ@aS^RYjV@zTdwPwm\x7FmD\ngGXiMD@c]ddaVhCharZmtPtO{S@\ngGXiMD@c]ddaVhCharZutPtO{S@\ngGY@BDfYh@NeGM}`g]v\ngGY@BDfYh@NeGN]EI[{AN{t\ngGY@BDfYh@NeGU}`g]v\ngGY@BDfYh@NeGU}`g]z\ngGY@BDfYh@NeGV]EI[{AN{t\ngGY@BDfYi`NcENZwVCP`\ngGY@BDfYi`NcENZwvB^tH\ngGY@BDfYi`NcENZytTenlFa@\ngGY@BDfYi`NcEN[YtTeolD}hP\ngGY@BDfYi`NcENjwVCP`\ngGY@BDfYi`NcENkWvB^tH\ngGY@BDfYi`NmEV[{AN{t\ngGY@BDfYi`NmEVk{AN{t\ngGY@BDfYi`NmEVlzJRwvB]wh\ngGY@BDfYjPNcENZytTenlF}@\ngGY@BDfYjPNcENZytTeoLD\ngGY@BDfYjPNcENZytTyoLD\ngGY@BDfYjPNcENjwVC^`\ngGY@BDfYjPNcENjwfB\ngGY@BDfYjPNcENjytTenlF}@\ngGY@BDfYjPNcENjytTeoLD\ngGY@BDfYjPNmEV[{AN{l\ngGY@BDfYjPNmEV[{AN{t\ngGY@BDfYjPNmEV[{AO[l\ngGY@BDfYjPNmEV\\zJRwvB]wh\ngGY@BDfYjPNmEV\\zJRwvB^wh\ngGY@BDfYjPNmEVk{AN{l\ngGY@BDfYjPNmEVk{AN{t\ngGY@BDfYjPNmEVk{AO[l\ngGY@BDfYjPNmEVk{AO[t\ngGY@BDfYjPNmEVlzJRwvB]wh\ngGY@BDfYjPNmEVlzJRwvB^wh\ngGY@BDfYjhhNcENZwVCP`>\ngGY@BDfYjhhNcENjwVCP`<\ngGY@BDfYjhhNcENjwVCP`>\ngGY@BDfZd@NiJyF}l{oP\ngGY@BDfZe`NmIM[x[vzD\ngGY@BDfZfPNeIUrM{Yw]`\ngGY@BDfZfPNmEV[h{np\ngGY@BDfZfPNmEV[h{oP\ngGY@BDfZfPNmIM[x[v{t\ngGY@BDfZhIDNeGM}`g]v>\ngGY@BDfZhIDNeGN]EI[{AO[t>\ngGY@BDfZjeDdNcENZwVCP`<\ngGY@BDfZjeDdNcENZwVCP`>\ngGY@BDfZjeDdNcENZypXenlFa@<\ngGY@BDfZjeDdNcENZypXenlFa@>\ngGY@BDfZjeDdNcENZytTenlFa@<\ngGY@BDfZjeDdNcENZytTenlFa@>\ngGY@BDfZjeDdNcENZytTynlFa@<\ngGY@BDfZjeDdNcENZytTynlFa@>\ngGY@BDfZjeDdNcEN[WVCP`<\ngGY@BDfZjeDdNcEN[YtTynlFa@<\ngGY@BDfZjeDdNcEN[YtTynlFa@>\ngGY@BDfZjeDdNcENkWVCP`>\ngGY@BDfZjeDhNcENZwVCP`<\ngGY@BDfZjeDhNcENZwVCP`>\ngGY@BDfZjeDhNcENZyLTyK]XMB<\ngGY@BDfZjeDhNcENZyLTyK]XMB>\ngGY@BDfZjeDhNcENZytTenlFa@<\ngGY@BDfZjeDhNcENZytTenlFa@>\ngGY@BDfZjeDhNcENZytTynlFa@<\ngGY@BDfZjeDhNcENZytTynlFa@>\ngGY@BDfZjeDhNcEN[WVCP`<\ngGY@BDfZjeDhNcEN[WVCP`>\ngGY@BDfZjeDhNcENjwVCP`<\ngGY@BDfZjeDhNcENjwVCP`>\ngGY@BDfZjeHhNcENjwVCP`<\ngGY@BDfZjeHhNcENjwVCP`>\ngGY@BDfZjeHhNcENjypXynlFa@>\ngGY@BDfzZihNmKM[x[VzD<\ngGY@BDfzZihNmKM[x[VzD>\ngGY@DDfYj`NkENRuolDah_vb@=\ngGY@DDfYj`NkENRuolDaoovb@\ngGY@DDfYj`NkENRuomxah_vb@=\ngGY@DDfYj`NkENRushiK_XIC__mD\ngGY@DDfYj`NkENRushiK_[qC__mD\ngGY@DDfYj`NkENRushis_XICP\x7FmD\ngGY@DDfYj`NkENRushis_XIC__mD\ngGY@DDfYj`NkENRushis_[qCP\x7FmD\ngGY@DDfYj`NkENRvolDah_vb@\ngGY@DDfYj`NkENRvomxah_vb@\ngGY@DDfYj`NkENRvshiK_XICP\x7FmD\ngGY@DDfYj`NkENRvshiK_[qCP\x7FmD\ngGY@DDfYj`NkENRvshis_XICP\x7FmD\ngGY@DDfYj`NkENRvshis_[qCP\x7FmD\ngGY@DDfYj`NkENSUolDaoovb@\ngGY@DDfYj`NkENSUshiK_XIC__mD\ngGY@DDfYj`NkENSUshiK_[qC__mD\ngGY@DDfYj`NkENSVolDah_vb@=\ngGY@DDfYj`NkENSVshis_XICP\x7FmD\ngGY@DDfYj`NkENbuolDah_vb@=\ngGY@DDfYj`NkENbuolDaoovb@\ngGY@DDfYj`NkENbushiK_XIC__mD\ngGY@DDfYj`NkENbushis_XICP\x7FmD\ngGY@DDfYj`NkENbushis_XIC__mD\ngGY@DDfYj`NkENbvolDah_vb@\ngGY@DDfYj`NkENbvshiK_XICP\x7FmD\ngGY@DDfYj`NkENbvshis_XICP\x7FmD\ngGY@DDfYj`NkENcVolDah_vb@=\ngGY@DDfYj`NkENcVshis_XICP\x7FmD\ngGY@DDfYj`NmEV[{AN{w}h`\ngGY@DDfYj`NmEV[{AO[w}h`=\ngGY@DDfYj`NmEV\\zJRwvB]wo{Q@\ngGY@DDfYj`NmEV\\zJ\\wvB^wo{Q@\ngGY@DDfYj`NmEVk{AN{w}h`\ngGY@DDfYj`NmEVk{AO[w}h`=\ngGY@DDfYj`NmEVlzJ\\wvB^wo{Q@\ngGY@DDfZf`NcIIZwHwndMB=\ngGY@DDfZf`NkENRuomtah_vb@=\ngGY@DDfZf`NkENRushis_[iCP\x7FmD\ngGY@DDfZjiDNkENRuolDah_vb@+\ngGY@DDfZjiDNkENRuolDah_vb@-\ngGY@DDfZjiDNkENRushis_XICP\x7FmD<\ngGY@DDfZjiDNkENRvolDah_vb@<\ngGY@DDfZjiDNmEV[{AN{w}h`<\ngGY@DDfZjiDNmEV[{AN{w}h`>\ngGY@DDfZjiDNmEV[{AO[w}h`-\ngGY@DDffj`NkENRuolDah_vb@\ngGY@DDffjiDNkENRushiK_XICP\x7FmD>\ngGY@DDfnjYDNcGIZypTeoCx<\ngGY@DDfnjYDNcGIZypTeoCx>\ngGY@DDfnjiDNcGIZwQCP`<\ngGY@DDfnjiDNcGIZwQCP`>\ngGY@DDfnjiDNcGIZyHXiK]DMB>\ngGY@DDfnjiDNcGIZyr\\enbFa@<\ngGY@DDfnjiDNcGIZyr\\enbFa@>\ngGY@DDfnjiDNcGIZytTenbFa@<\ngGY@DDfnjiDNcGIZytTenbFa@>\ngGY@DDfyh@NiFzN{l=\ngGY@DDfyh@NiFzN{t\ngGY@DDfyh@NiFzO[t=\ngGY@DDfyh@NiGNbdmt]wh\ngGY@DDfyh@NiGNbgMt^wh\ngGY@DDfyi`NcGIZwQ{P`\ngGY@DDfyi`NcGIZweB\ngGY@DDfyi`NcGIZytTencva@\ngGY@DDfyi`NcGIZytTeoJD\ngGY@DDfyi`NcGIZytTyncva@\ngGY@DDfyi`NcGIZytTyncv~@\ngGY@DDfyi`NcGIZytTyoJD\ngGY@DDfyi`NcGI[WQ{P`\ngGY@DDfyi`NcGI[WeB\ngGY@DDfyi`NcGI[YtTyncva@\ngGY@DDfyi`NcGI[YtTyoJD\ngGY@DDfyi`NeGUt]wh\ngGY@DDfyi`NeGUt^wX\ngGY@DDfyi`NeGUt^wh\ngGY@DDfyi`NeGV]EI[h}oP\ngGY@DDfyi`NeGV]EN[h}np\ngGY@DDfyi`NeGV]EN[h}oP\ngGY@DDfyj`NcGIZwQCP`\ngGY@DDfyj`NcGIZwQCP\x7FdlRP\ngGY@DDfyj`NcGIZyLTyK]DMB\ngGY@DDfyj`NcGIkWQCP`\ngGY@DDfyjidNcGIZwQC_@<\ngGY@DDfyjidNcGIZwQC_@>\ngGY@DDfyjidNcGIZytTenbF~@<\ngGY@DDfyjidNcGIZytTenbF~@>\ngGY@DDfyjidNcGIZytTynbFa@<\ngGY@DDfyjidNcGIZytTynbFa@>\ngGY@DDfyjidNcGIZytTynbF~@>\ngGY@DDfyjidNcGI[WQCP`<\ngGY@DDfyjidNcGI[WQCP`>\ngGY@DDfyjidNcGI[YtTynbFa@<\ngGY@DDfyjidNcGI[YtTynbFa@>\ngGY@DDfzX@NiFzN{l=\ngGY@DDfzX@NiFzN{t\ngGY@DDfzX@NiGNBdmt]wh\ngGY@DDfzX@NiJyFul{np=\ngGY@DDfzX@NiJyFul{oP\ngGY@DDfzX@NiJyFul}oP=\ngGY@DDfzX@NiKNbdmrMkiw^`\ngGY@DDfzY`NcGIZypTyoJD\ngGY@DDfzY`NcKIZwpvmtH\ngGY@DDfzZ`NcKIZwHvmdMB\ngGY@DDfzZ`NcKIZwHvmdMC~RqI@\ngGY@DDfzhIDNiFzN{l+\ngGY@DDfzhIDNiFzN{l-\ngGY@DDfzhIDNiFzN{t<\ngGY@DDfzhIDNiGNbdmt]wh<\ngGY@DDfzhIDNiGNbdmt]wh>\ngGY@HDfZh@NeGM}`g]w~t`=\ngGY@HDfZh@NeGN]EI[{AN{w}i@\ngGY@HDfZhIDNeGM}`g]v+\ngGY@HDfZhIDNeGM}`g]v-\ngGY@HDfZhIDNeGM}oG]v-\ngGY@HDfZhIDNeGM}oG]z<\ngGY@HDfZhIDNeGM}oG]z>\ngGY@HDfZhIDNeGNRFJRwvB]wh<\ngGY@HDfZhIDNeGNRFJRwvB]wh>\ngGY@HDfZi`NkENRushis]XMC~t`\ngGY@HDfZj`NkENRurPqrV~pRFa\x7FZP\ngGY@HDkjj`NjENRuolDahP\ngGY@HDkjj`NjENRus`qS_XICP`\ngGY@JDffj`NcENRwVBP`\ngGY@JDffjiDNcENRytTenlDa@<\ngGY@JDffjiDNcENRytTenlDa@>\ngGY@JDffjiDNcENRyt\\enlD~@>\ngGY@JDffjiDNcENSWVBP`<\ngGY@JDffjiDNcENSWVBP`>\ngGY@LDejj`NcEIZwQCP`\ngGY@LDejj`NcEIZypXinbFa@\ngGY@LDejjhhNcEIZwQC_@>\ngGY@LDejjhhNcEIZypXynbFa@<\ngGY@LDejjhhNcEIZypXynbFa@>\ngGY@LDijj`NjFJRuodDahP\ngGY@LDijj`NjFJRus`qS_HICP`\ngGY@LDijjiDNjFJRus`qs_HICP`<\ngGY@LDijjiDNjFJRus`qs_HICP`>\ngGY@LDijjiDNjFJbus`qs_HICP`<\ngGY@LDijjiDNjFJbus`qs_HICP`>\ngGY@LDijjiDNjFJbus`qs_HIC_@<\ngGY@LDijjiDNjFJbus`qs_HIC_@>\ngGY@bAqeIfiXChqSfn]EI[ra@\ngGY@dAreInf@CjQshiK]G]z\ngGY@hAteIfi@CiQs]G]w~t`=\ngGY@hAteIfi@CiQs_[iw]\x7FmH=\ngGY@hAteIijhCjqSdm[{AHZD\ngGY@hAteIijjQCjqSdm\\zJRwvBPtH<\ngGY@hAteIijjQCjqSdm\\zJRwvBPtH>\ngGYABCJSLuTTGQbgU[kAhP<\ngGYABCJSLuTTGQbgU[kAhP>\ngGYABCJSMURbRGQbgM\\zJRwVCP`<\ngGYABCJSMURbRGQbgUkkAhP<\ngGYABCJSMURbTGQbgM[kAhP<\ngGYABCJSMURdTGQbgU[kAhP<\ngGYABCJSMURdTGQbgU[kAhP>\ngGYABIJSMUHGVbkM}`g]v>\ngGYABIJSMUHGVbkM}`g]z>\ngGYABIJSMUHGVbkV]EN[{AO[l>\ngGYADArSMSPGUbgIZytTyomtah_vb@\ngGYADArS]L@GTc]G]v=\ngGYADEJSMTDbGRcf~pSn}\x7FZH<\ngGYADEJS]L@GTc_Ki{^`=\ngGYAJKJSSUPGQbgI[kAHP\ngGYALMJRuUPGQbdm[hahP\ngGYDJQDJHR[jf@zT\\`\ngGYHBaxIMtp@]RMt]wX\ngGYHDIPIMuP@]RN]EI[h{oP>\ngGYHDPDIMts@]ZVZwpvmtH\ngGYHDQxILuUJIP]FJ\\uoa{^o`>\ngGYHE@DIUsUPH]TJ\\ek_[qCP\x7FmD-\ngGYHE@DYICF``Pz`[h{np+\ngGYHEAxIU[U@]TJ]Fk_XICP\x7FmD\ngGYHEAxIU[U@]TJ]Fm_XICP\x7FmD\ngGYHHPDILuS@]FJ\\uoa{Ah_vd@\ngGYHHPDILuS@]FJ\\ushiK_CvCP\x7FmH\ngGYHHPDILuS@]FJ\\voa{Ah_vd@\ngGYHHPDILuS@]FJ\\vshiK_CvCP\x7FmH\ngGYHHPDILuS@]FJ]Uoa{Ah_vd@\ngGYHHPDILuS@]FJ]UshiK_CvCP\x7FmH\ngGYHHPDILuS@]FJ]UshiK_CvC__mH\ngGYHHPDILuT`]FJ\\uoa{Ao_vd@\ngGYHHPDILuUQP]FJ\\ushiK_CvCP\x7FmH<\ngGYHHPxILuS@]FJ\\ushiK_CvCP\x7FmH\ngGYHJPDILuK@]JR[h[vp\ngGYHJPDILuK@]JR[h[wP\ngGYHJPDILuK@]JR\\zJRwPwn`\ngGYHJPDILuK@]ZJ\\`\ngGYHJPDILuK@]ZJ\\wfz\ngGYHJPDILuK@]ZJ\\ypXe@\ngGYHJPDILuL`]JRkd[vsn{@\ngGYHJPDILuL`]JRkd[wSn{@\ngGYHJPDILuSRH]ZJ\\wfB<\ngGYHJQDILuK@]ZJ\\ytTeoMt\ngGYHJQHILuK@]ZJ\\ytTe@\ngGYHJQHILuSRH]ZJ\\wfB>\ngGYHK@xIUMU@]TLTyK_HNB_@\ngGYHKAxIU[U@]DJ\\enlDa@\ngGYHKAxIU[U@]DJ\\erXirVzpRD\ngGYHKAxIU[U@]DJ]FnlDa@\ngGYHL`DIMsU@]FNRunbFa\x7FZX=\ngGYHL`DIMtu@]FNRunbFa\x7FZX=\ngGYHdIPSeJSWUTbGQcdm[hahP<\ngGYHdIPSeJSWUTbGQcdm[hahP>\ngGYHlEPKmJUuUPGUCEIkYpXiohDahP\ngGYHlEPKmJUuUPGUCIIkYpXiohDahP\ngGYIHEPKdkjj`NjENcVolDahP\ngGYILEPKdkjj`NjFJSVs`qS_PICP`\ngGYLcaHR`TaNLiM]U@]ZNZyr\\eoJD\ngGYLcaHR`TaNLiM]U@]ZN[Yr\\eoJD\ngGY`JDTfyi`NeGH\ngGY`LDTfyj`NmGM[ra\x7FZX\ngGY`hDYJyInZdCiQu]G]w~t`\ngGY`hDYJyInZjZCkQsV|h_vd@>\ngGYhCE`DYIHUj@zp\\uoJD\ngGYhCE`DYIHUj@zp\\usdyK^TH\ngGYhCE`DYIHUj@zp\\voJD\ngGYhCE`DYIHUj@zp\\vsdyK^TH\ngGYhCE`DYIIUi@zpRusdyK^Wo{P`\ngGYhCE`DYIIUj@zpRuoJG}hP\ngGYhCE`DYIIUj@zpRusdyK^TO{P`\ngGYhCE`DYIIUj@zpRusdyK^Ww{P`\ngGYhCEaxIU[UPH]XJZweB<\ngGYhCEaxIU[UPH]XJZweB>\ngGYhCEaxIU[UPH]XJZytTeoJD<\ngGYhCEaxIU[UPH]XJZytTeoJD>\ngGYhCEaxIU[UPH]XJ[WeB<\ngGYhCEaxIU[UPH]XJ[WeB>\ngGYhCEaxYIIVj@zpRuoJG}hP\ngGYhCEaxYIIVj@zpRvoJG}hP\ngGYhKE`DYIHUj@zp\\foBD\ngGYhjLUPKkJUuUPGVCEMy@`\ngGYhjLUPKkJUuUPGVCIMy@`\ngGYhjLUPKkJUuUPGVCIN\\FI[rA@\ngGYhkEax[kNRRUjhDNdDh<\ngGYhkEax[kNRRUjhDNdDh>\ngGYiKE`D[lddju@]HIP\ngG\\@@ZdsDLAuDwPwm`\ngG\\@@ZdsMLAtiInao]@\ngG\\@@ZdwATAuLwPvm`\ngG\\@@bdsDTAtduoao[h_vb@\ngG\\@@bdsDTAuEWHwmg]w~tP\ngG\\@@bdsDTAuEWHwmg]{~tP\ngG\\@@bdsDTAuEWHwng]{~tP\ngG\\@@bdsMTAtXisWNCDmu`tO{Q@\ngG\\@@bdsMTAtXisWNCGMu`tO{Q@\ngG\\@@bdsMTAtXiuWNCGMu`tO{Q@\ngG\\@@bdwA@AnQm[N{l=\ngG\\@@bdwM@AuIWHvmg]v\ngG\\@@bdwM@AuIWHvng]v\ngG\\@@bdwMLAtiZnQm[N{t\ngG\\@@bdwMLAtiZnQm]N{t\ngG\\@@bdwMUMAuiYk_CZ{P`>\ngG\\@@ldsMTAtXiKVzHZG}h`=\ngG\\@@ldsMTAtXiKWMCENRwQCP\x7FmD=\ngG\\@@ldsMTAtXiKWMCENRwpzPtO{Q@=\ngG\\@@ldsMTAtXiKWNCGMtPtO{Q@\ngG\\@@ldsMTAtXiKWNbgMtPtO{Q@\ngG\\@@ldsMTAtXiK[NCGMtPtO{Q@\ngG\\@@ldsMTAtXiK[NbgMtPtO{Q@\ngG\\@@ldsMTAtYIKVyF}lah_vb@=\ngG\\@@ldsMTAthjoat}o_vb@=\ngG\\@@ldwATAuMWHvmg]w~tp=\ngG\\@@ldwATAuMWHvmgm{~tp=\ngG\\@@ldwATAulek\\cZvPtO{S@=\ngG\\@@ldwATAulem\\cZvPtO{S@=\ngG\\@@ldwATAulfm\\cZvPtO{S@=\ngG\\@ABeWURAuaIk_S^{^\x7Fm@\ngG\\@ABeWUUDatPisWIbgI[kAh_v`@<\ngG\\@ABeWUUDatPisWIbgI[kAh_v`@>\ngG\\@ABeWUUDauaIk_S^{P\x7Fm@<\ngG\\@ABeWUUDauaIk_S^{P\x7Fm@>\ngG\\@ABeWUUDauaIm_S^wP\x7Fm@<\ngG\\@ABeWUUDauaIm_S^wP\x7Fm@>\ngG\\@ABeWUUDauaIm_S^{P\x7Fm@<\ngG\\@ABeWUUDauaIm_S^{P\x7Fm@>\ngG\\@AEddLj@CjBnYm[N{o}h@=\ngG\\@AEddLj@CjBnYm[N{w}h@=\ngG\\A@ZIRYb@@wHwmg]v=\ngG\\A@lIRYfj@zLTek]DMC~tP=\ngG\\A@lIRYfj@zLTek_CiCP\x7FmD=\ngG\\A@lIRYfj@zLTekfabgI[hah_vb@=\ngG\\A@lIRYfj@zLTekgAcf~GRFa\x7FZH\ngG\\DEb@b^BSRuPGVbfmy__dd\\[Q@\ngG\\DEb@b^BSRuPGVbfuyP\x7FmD\ngG\\EebDR^@yRYRZyjdPzt\\unev~\x7FIPxvf@>\ngG\\H@[jCIHYUPGQCEN[jAPP\ngG\\HEb@aIfZhCkQSV|h_vb@\ngG\\HEb@aInfhCkRsV~Funa\x7FZX\ngG\\HHlOAJfjhChabVmtPtH\ngG\\HHlOAJfjhChabVutPtO{R@\ngG\\IHl@`ReSUTAtPqKVzHZD\ngG\\`hZEIWIMsS@]JN_vd@\ngG\\`hZEIWIMsS@]JNkh{n\x7Fvd@\ngG\\`hZEIWIMsS@]JNkh{o_vd@\ngG\\ahZEIWWdfyi`NeGUt]w_{R@\ngG]@DZDfyi`NeGUt]wX\ngG]@DZDfyi`NeGUt]wh\ngG]@EbDfYj`NmEM[ra\x7FZH\ngG]@EbDfYj`NmEM\\zJ\\weC~tP\ngG]@LZDejj`NeEH\ngG]HEcAxIULE@]JM[y[vzD\ngG]HEcAxIULE@]JM\\xNRwrwmtH\ngG]HEcAxIULE@]JMlxNRwrwmtH\ngG]HEcAxIU[U@]XJZweC~tP\ngG]HEcAxIU[U@]XJ[WeC~tP\ngG]HEcAxYIIXJ@zQZyp\\eoeo[h_va@\ngG]HlZEPKmJUuUPGVCIMy@`\ngJP@DjXDCiQK]K^v=\ngJP@DjXDCiQK]K^z\ngJP@DjXDCiQK]Knz=\ngJP@DjXDCiQK_K^v^`=\ngJP@DjXDCiQK_K^z^`\ngJP@DjXDCiQK_Knz^`=\ngJP@DjXDCiQKgASfzV}t\ngJP@DjXDCiQKgASf~V}t}@\ngJP@DjXDCiQKgAcfzW]t\ngJP@DjXDCiQKgAcf~W]t}@\ngJP@DjYdCjabgI[i]pP\ngJP@DjYdCjabgI[i]w`\ngJP@DjYdCjabgI[kAOP\ngJP@DjYdCjabgI[sA@\ngJP@DjYdCjabgI[y]pSt\ngJP@DjYdCjabgI\\xJ\\wR{``\ngJP@DjYdCjabgI\\xJ\\wR{o@\ngJP@DjYdCjabgI\\xJ\\wVB^`\ngJP@DjYdCjabgI\\xJ\\wV|^`\ngJP@DjYdCjabgI\\xJ\\wfB\ngJP@DjYdCjabgI\\xJ\\wf|\ngJP@DjYdCjabgI\\xJ\\wr{`gh\ngJP@DjYdCjabgI\\xJ\\wr{oGh\ngJP@DjYdCjabgI\\xL\\wR{``\ngJP@DjYdCjabgI\\xL\\wR{o@\ngJP@DjYdCjabgI\\xL\\wVB^`\ngJP@DjYdCjabgI\\xL\\wV|^`\ngJP@DjYdCjabgI\\xL\\wfB\ngJP@DjYdCjabgI\\xL\\wf|\ngJP@DjYdCjabgI\\xL\\wr{`gh\ngJP@DjYdCjabgI\\xL\\wr{oGh\ngJP@DjYdCjabgQ[i]pP\ngJP@DjYdCjabgQ[sA@\ngJP@DjYdCjabgQ[y]pSt\ngJP@DjYdCjabgQ\\xJ\\wR{``\ngJP@DjYdCjabgQ\\xJ\\wr{`gh\ngJP@DjYdCjabgQ\\xL\\wVB^`\ngJP@DjYdCjabgQ\\xL\\wr{`gh\ngJP@DjYdCkBbVzV}l\ngJP@DjYdCkBbVzV}t\ngJP@DjYdCkBbVzW]l\ngJP@DjYdCkBbVzW]t\ngJP@DjYdCkBbV~V}t}@\ngJP@DjYdCkBbV~W]t}@\ngJP@DjZhCjabgI[yApRD\ngJP@DjZhCjabgI[yApRG|eBb\ngJP@DjZhCjabgI[yApSx\ngJP@DjZhCjabgI[y^wbD\ngJP@DjZhCjabgI\\dLTyodGAHP\ngJP@DjZhCjabgI\\dLTyodGAO`\ngJP@DjZhCjabgI\\dLTyoe{^HP\ngJP@DjZhCjabgIkyApRD\ngJP@DjZhCjabgIldLTyodGAHP\ngJP@DjZhCjabkQ[yApRD\ngJP@DjZhCjabkQ\\dLTyodGAHP\ngJP@DjZhCjabkQ\\dLTyodGAO`\ngJP@DjZhCjabkQkyApRD\ngJP@DjZjACjabgI[yAwbD<\ngJP@DjZjACjabgI[yAwbD>\ngJP@DjZjACjabgI[yAwbG|eBb>\ngJP@DjZjACjabgI[yAwcx<\ngJP@DjZjACjabgI\\dLTyodG^HP<\ngJP@DjZjACjabgI\\dLTyodG^HP>\ngJP@DjZjACjabgI\\dLTyodG^H_rTJH<\ngJP@DjZjACjabgI\\dLTyodG^H_rTJH>\ngJP@DjZjACjabgI\\dLTyodG^O`<\ngJP@DjZjACjabgI\\dLTyodG^O`>\ngJP@DjZjACjabgI\\xJ\\wrCoDH<\ngJP@DjZjACjabgI\\xJ\\wrCoDH>\ngJP@DjZjACjabgI\\xJ\\wrCoDOyJED<\ngJP@DjZjACjabgI\\xJ\\wrCoDOyJED>\ngJP@DjZjACjabgI\\xJ\\wrCoGp<\ngJP@DjZjACjabgI\\xJ\\wrCoGp>\ngJP@DjZjACjabgI\\xL\\wrC`dH<\ngJP@DjZjACjabgI\\xL\\wrC`dH>\ngJP@DjZjACjabgI\\xL\\wrC`dOyJED<\ngJP@DjZjACjabgI\\xL\\wrC`dOyJED>\ngJP@DjZjACjabgI\\xL\\wrC`gp<\ngJP@DjZjACjabgI\\xL\\wrC`gp>\ngJP@DjZjACjabgI\\xL\\wrCoDH<\ngJP@DjZjACjabgI\\xL\\wrCoDH>\ngJP@DjZjACjabgI\\xL\\wrCoDOyJED<\ngJP@DjZjACjabgI\\xL\\wrCoGp<\ngJP@DjZjACjabgI\\xL\\wrCoGp>\ngJP@DjZjACjabgI\\xL\\wr}oDH<\ngJP@DjZjACjabgI\\xL\\wr}oDH>\ngJP@DjZjACjabgI\\xL\\wr}oGp<\ngJP@DjZjACjabgI\\xL\\wr}oGp>\ngJP@DjZjACjabgIkyAwbD<\ngJP@DjZjACjabgIkyAwbD>\ngJP@DjZjACjabgIldLTyodG^H_rTJH<\ngJP@DjZjACjabgIlxJ\\wrCoDH<\ngJP@DjZjACjabgIlxJ\\wrCoDH>\ngJP@DjZjACjabgIlxL\\wrC`dH<\ngJP@DjZjACjabgIlxL\\wrC`dH>\ngJP@DjZjACjabgIlxL\\wrCoDH<\ngJP@DjZjACjabgIlxL\\wr}oDH<\ngJP@DjZjACjabgIlxL\\wr}oDH>\ngJP@DjZjACjabgQ[yApRD<\ngJP@DjZjACjabgQ[yApRD>\ngJP@DjZjACjabgQ[yApSx>\ngJP@DjZjACjabgQ\\dLTyodGAHP<\ngJP@DjZjACjabgQ\\dLTyodGAHP>\ngJP@DjZjACjabgQ\\dLTyodGAO`>\ngJP@DjZjACjabgQ\\xJ\\wrC`dH<\ngJP@DjZjACjabgQ\\xJ\\wrC`dH>\ngJP@DjZjACjabgQ\\xJ\\wrC`gp>\ngJP@DjZjACjabgQ\\xL\\wrC`dH<\ngJP@DjZjACjabgQ\\xL\\wrC`dH>\ngJP@DjZjACjabgQ\\xL\\wrC`gp<\ngJP@DjZjACjabgQ\\xL\\wrC`gp>\ngJP@DjZjACjabgQkyApRD<\ngJP@DjZjACjabgQkyApRD>\ngJP@DjZjACjabgQlxJ\\wrC`dH<\ngJP@DjZjACjabgQlxL\\wrC`dH<\ngJP@DjZjACjabgQlxL\\wrC`dH>\ngJP@DjZjACjabkI[yAwbD<\ngJP@DjZjACjabkI[yAwbD>\ngJP@DjZjACjabkI\\xJ\\wrCoDH<\ngJP@DjZjACjabkI\\xJ\\wrCoDH>\ngJP@DjZjACjabkI\\xJ\\wrCoGp<\ngJP@DjZjACjabkI\\xJ\\wrCoGp>\ngJP@DjZjACjabkQ\\xL\\wrC`dH<\ngJP@DjZjACjabkQ\\xL\\wrC`dH>\ngJP@DjZjACjabkQ\\xL\\wrC`gp<\ngJP@DjZjACjabkQ\\xL\\wrC`gp>\ngJP@DjvhCjabgI[kAHP\ngJP@DjvhCjabgI[kAO`\ngJP@DjvhCjabgI[k^HP\ngJP@DjvhCjabgI[z]pRD\ngJP@DjvhCjabgI[z]pSx\ngJP@DjvhCjabgI[z]wbD\ngJP@DjvhCjabgI\\xL\\wVBP`\ngJP@DjvhCjabgI\\xL\\wVB_@\ngJP@DjvhCjabgI\\xL\\wV|P`\ngJP@DjvhCjabgI\\xL\\wt{`dH\ngJP@DjvhCjabgI\\xL\\wt{`gp\ngJP@DjvhCjabgI\\xL\\wt{oDH\ngJP@DjvhCjabgI\\zJ\\wVBP`\ngJP@DjvhCjabgI\\zJ\\wVB_@\ngJP@DjvhCjabgI\\zJ\\wV|P`\ngJP@DjvhCjabgI\\zJ\\wV|_@\ngJP@DjvhCjabgI\\zJ\\wt{`dH\ngJP@DjvhCjabgI\\zJ\\wt{`gp\ngJP@DjvhCjabgI\\zJ\\wt{oDH\ngJP@DjvhCjabgI\\zJ\\wt{oGp\ngJP@DjvhCjabgIkkAHP\ngJP@DjvhCjabgIkz]pRD\ngJP@DjvhCjabgIlxL\\wt{`dH\ngJP@DjvhCjabgQ[kAHP\ngJP@DjvhCjabgQ[z]pRD\ngJP@DjvhCjabgQ\\xL\\wVBP`\ngJP@DjvhCjabgQ\\xL\\wVB_@\ngJP@DjvhCjabgQ\\xL\\wt{`dH\ngJP@DjvhCjabgQ\\xL\\wt{`gp\ngJP@DjvhCjabgQ\\zJ\\wt{`dH\ngJP@DjvhCjabgQkz]pRD\ngJP@DjvhCkBRV~f}la@\ngJP@DjvhCkBRV~f}ta@\ngJP@DjvhCkBRV~f}t~@\ngJP@DjvhCkBRV~g]la@\ngJP@DjvhCkBRV~g]ta@\ngJP@DjvhCkBRWNCGM}N{YB\ngJP@DjvhCkBRWNCGM}N{Y|\ngJP@DjvhCkBRWNCGM}N{iB\ngJP@DjvhCkBRWNCGM}N{i|\ngJP@DjvhCkBRWNbgM}M{iB\ngJP@DjvhCkBRWNbgM}M{i|\ngJP@DjvhCkBRWNbgM}N{iB\ngJP@DjvhCkBRZ~f}ta@\ngJP@DjvhCkBRZ~g]ta@\ngJP@DkfhCjabgI[kAHP\ngJP@DkfhCjabgI[kAH_rRNH\ngJP@DkfhCjabgI[z]pRD\ngJP@DkfhCjabgI\\dLTynlDa@\ngJP@DkfhCjabgI\\dLTyoiwAHP\ngJP@DkfhCjabgQkkAHP\ngJP@DkfhCjabgQkz]pRD\ngJP@DkfjICjabgI[kAO`<\ngJP@DkfjICjabgI[kAO`>\ngJP@DkfjICjabgI[z]pSx<\ngJP@DkfjICjabgI[z]pSx>\ngJP@DkfjICjabgI\\dLTynlD~@<\ngJP@DkfjICjabgI\\dLTynlD~@>\ngJP@DkfjICjabgI\\dLTyoiwAO`<\ngJP@DkfjICjabgI\\dLTyoiwAO`>\ngJP@DkfjICjabgI\\xLTwVBP`<\ngJP@DkfjICjabgI\\xLTwVBP`>\ngJP@DkfjICjabgI\\xLTwVB_@<\ngJP@DkfjICjabgI\\xLTwVB_@>\ngJP@DkfjICjabgI\\xLTwV|_@<\ngJP@DkfjICjabgI\\xLTwV|_@>\ngJP@DkfjICjabgI\\xLTwt{`dH<\ngJP@DkfjICjabgI\\xLTwt{`dH>\ngJP@DkfjICjabgI\\xLTwt{`gp<\ngJP@DkfjICjabgI\\xLTwt{`gp>\ngJP@DkfjICjabgI\\xLTwt{oGp<\ngJP@DkfjICjabgI\\xL\\wVB_@<\ngJP@DkfjICjabgI\\xL\\wVB_@>\ngJP@DkfjICjabgI\\xL\\wt{`gp<\ngJP@DkfjICjabgI\\xL\\wt{`gp>\ngJP@DkfjICjabgIkkAHP<\ngJP@DkfjICjabgIkkAHP>\ngJP@DkfjICjabgIkz]pRD<\ngJP@DkfjICjabgIkz]pRD>\ngJP@DkfjICjabgIldLTynlDa@<\ngJP@DkfjICjabgIldLTynlDa@>\ngJP@DkfjICjabgIlxLTwVBP`<\ngJP@DkfjICjabgIlxLTwVBP`>\ngJP@DkfjICjabgIlxLTwt{`dH<\ngJP@DkfjICjabgIlxLTwt{`dH>\ngJP@DkfjICjabgQ[kAO`<\ngJP@DkfjICjabgQ[kAO`>\ngJP@DkfjICjabgQ\\xL\\wt{`gp<\ngJP@DkfjICjabgQ\\xL\\wt{`gp>\ngJP@DkfjICjabgQlxLTwVBP`<\ngJP@DkfjICjabgQlxLTwVBP`>\ngJP@LdaB`Nedm}MkYB=\ngJP@LdaB`Nedm}MkY|=\ngJP@LdaB`Nedm}MkiB\ngJP@LdaB`Nedm}Mki|\ngJP@LdaB`Nedm}NkiB=\ngJP@LdaB`Nedm}Nki|=\ngJP@LdaB`Nedn\\EN[z]WRD\ngJP@LdaB`Nedn\\EN[z]WSx\ngJP@LdaB`Nedn]EN[z[WRD\ngJP@LdaB`Nedn]EN[z[WSx\ngJP@LdaB`Nedu}MkYB=\ngJP@LdaB`Nedu}MkiB\ngJP@LdaB`Nedu}NkiB=\ngJP@LdaB`Nedv\\EN[z]WRD\ngJP@LdaB`Nedv]EN[z[WRD\ngJPAEJUsTAuPqSdv\\FJ[kAHP>\ngJPAMJULrAuPqSdn\\EN[sA@\ngJPBABPHPQ`aJfj@zpXeoBD\ngJPBABRHPQ`aJnj@zpTeoBD>\ngJPD@DHHRYZ`NcENRwVBP`\ngJPD@DHHRYZ`NcENbwVBP`\ngJPD@DHHR[j`NmGI[pa@\ngJPD@DHHR[j`NmGI[x^WbD\ngJPD@DJ`Rfh@NhFzvsl=\ngJPD@DPHRnh@NhFzvsl=\ngJPD@DPHRnh@NhFzvst\ngJPD@DPHRnh@NhFzwSt=\ngJPD@DPHRnh@NhGNCGMumgh\ngJPD@DPHRni`NdEUungh\ngJPD@DPHRni`NdEV\\FN[k]OP\ngJPD@DPHRnj`NbENRwVBP`\ngJPD@DSpRnh@NhF~gml{@=\ngJPD@DXHRfjPNbFJRwRB^`\ngJPD@DXHRfjPNbFJRwbB\ngJPD@DXHRfjPNbFJRypXyndD}@\ngJPD@DXHRfjPNbFJbwRB^`\ngJPD@DXHRfjPNbFJbypXyndD}@\ngJPD@DXHRfjPNlFR[yAvsl\ngJPD@DXHRfjPNlFR[yAvst\ngJPD@DXHRfjPNlFRkyAvsl\ngJPD@DXHRfjPNlFRkyAvst\ngJPD@DXHRfjPNlFRlxL\\wrCmgh\ngJPD@DXHRfjiDNbFJRypXindDa@<\ngJPD@DXHRfjiDNbFJRypXindDa@>\ngJPD@DXHRfjiDNbFJSYpXindDa@<\ngJPD@DXHRfjiDNbFJSYpXindDa@>\ngJPD@VPlRnh@NhFzvst\ngJPD@bQDRnh@NhFzvsl=\ngJPD@bQDRnh@NhFzvst\ngJPD@bSpRnh@NhF~gml{@=\ngJPDAxGpRij`NbFJmWRC``\ngJPDAxSpRnX@NhFzwSt=\ngJPE@bSpdiWT@GTC_Svv]`=\ngJPH@DIKT@GTc][Yv=\ngJPH@DIKT@GTc][Yz\ngJPH@DIKT@GTc][iz=\ngJPH@DIKT@GTc_Cvv]`=\ngJPH@DIKT@GTc_Cvv^`\ngJPH@DIKT@GTcgAcfzvst\ngJPH@DIKTpGQbgI\\xLTwVzP`\ngJPH@DIKTpGQbgIkpa@\ngJPH@DIKUPGQbgI[kAHP\ngJPH@DIKUPGQbgI[x^pRD\ngJPH@DIKUTRGQbgI\\xLTwVBP`<\ngJPH@DIKUTRGQbgI\\xLTwVBP`>\ngJPH@DILmHGQbgI\\zJ\\wVB^`\ngJPH@DILmHGQbgI\\zJ\\wfB\ngJPH@DILthGVddmtM{X\ngJPH@DILthGVddmtM{h\ngJPH@DILthGVddm|M{Yz\ngJPH@DILthGVddm|M{iz\ngJPH@DILuTbGQbgI[kAHP<\ngJPH@DILuTbGQbgI[kAHP>\ngJPH@DILuTbGQbgI[x^pRD<\ngJPH@DILuTbGQbgI\\xL\\wVBP`<\ngJPH@DILuTbGQbgI\\xL\\wVBP`>\ngJPH@DILuTbGQbgI\\zJ\\wVBP`<\ngJPH@DILuTbGQbgI\\zJ\\wVBP`>\ngJPH@DILuTbGQbgI\\zJ\\wV|P`<\ngJPH@DILuTbGQbgI\\zJ\\wV|P`>\ngJPH@DILuTbGQbgI\\zJ\\wp}`dH<\ngJPH@DILuTbGQbgI\\zJ\\wp}`dH>\ngJPH@DILuTbGQbgQ[kAHP>\ngJPH@DILuTbGQbgQ\\xL\\wVBP`<\ngJPH@DILuTbGQbgQ\\xL\\wVBP`>\ngJPH@DIMsPGQbgI\\zJ\\wRzP`\ngJPH@DIMsPGVedm|MkYB\ngJPH@DIMsPGVedm|MkiB\ngJPH@DIMsPGVedn]EN[x[WRD\ngJPH@DIMsPGVedu|MkiB\ngJPH@DIST@GRBf~P]l{@=\ngJPH@DIST@GRBf~P]l}@\ngJPH@DIST@GRBf~P]t}@=\ngJPH@DIST@GRBf~Wml{@=\ngJPH@DIST@GRBf~Wml}@\ngJPH@DIST@GRBgNCEM|`{iz\ngJPH@DIST@GRBgNCGM|`{Yz\ngJPH@DIST@GRBgNCGM|o[Yz\ngJPH@DIST@GRBj~P]l{@=\ngJPH@DIST@GRBj~P]l}@\ngJPH@DIST@GRBj~P]t}@=\ngJPH@DIST@GRBkNCEM|`{iz\ngJPH@DIST@GRBkNCGM|`{Yz\ngJPH@DISTpGUCENRwRBP`\ngJPH@DISTpGUCENRwrCndH\ngJPH@DISTpGUCENRypXiodG]HP\ngJPH@DISTpGUCENRypXioe{]HP\ngJPH@DISTpGUCENSWrCndH\ngJPH@DISTpGUCENSYpXindDa@\ngJPH@DISTpGUCENSYpXiodG]HP\ngJPH@DISTpGUCEVRwRBP`\ngJPH@DISTpGUCEVRwrCndH\ngJPH@DISTpGUCEVRypXiodG]HP\ngJPH@DISTpGUCEVRypXyodG]HP\ngJPH@DISTpGUCEVSWrCndH\ngJPH@DISTpGVCIM|`{Yz\ngJPH@DISTpGVCIM|`{iv\ngJPH@DISTpGVCIM|`{iz\ngJPH@DISTpGVCIN\\FN[yAwSt\ngJPH@DISTpGVCIU|`{Yz\ngJPH@DISTpGVCIU|`{iz\ngJPH@DISUPGUCENRwrC`dH\ngJPH@DISUPGUCEVRwrC`dH\ngJPH@DISUTbGUCENRypXiodGAHP<\ngJPH@DISUTbGUCENRypXiodGAHP>\ngJPH@DISUTbGUCENSWrC`dH<\ngJPH@DISUTbGUCENSWrC`dH>\ngJPH@DISUTbGUCENSYHXis_HNBP`<\ngJPH@DISUTbGUCENSYpXiodGAHP<\ngJPH@DISUTbGUCENSYpXiodGAHP>\ngJPH@DISUTbGUCEVRwrC`gp>\ngJPH@DISUTbGUCEVRypXiodGAHP<\ngJPH@DISUTbGUCEVSWrC`dH<\ngJPH@DISUTbGUCEVSWrC`dH>\ngJPH@DISUTbGUCEVSYpXiodGAHP<\ngJPH@DISUTbGUCEVSYpXiodGAHP>\ngJPH@VIST@GRBj~P]l{@=\ngJPH@VIST@GRBj~P]l}@\ngJPH@VIST@GRBj~P]t}@=\ngJPH@VISTpGUCENSYpXiodG]HP\ngJPH@bIKT@GTc][Yv=\ngJPH@bIKT@GTc][Yz\ngJPH@bIKT@GTc][iz=\ngJPH@bIMsPGVedm|MkiB\ngJPH@bIST@GRBf~P]l{@=\ngJPH@bIST@GRBf~P]l}@\ngJPH@bIST@GRBf~Wml{@=\ngJPH@bIST@GRBj~P]l{@=\ngJPH@bIST@GRBj~P]l}@\ngJPH@bIST@GRBj~P]t}@=\ngJPH@bIST@GRBkNCGM|`{Yz\ngJPH@bISTpGUCEVRwrCndH\ngJPH@bISTpGUCEVSWrCndH\ngJPH@bISTpGVCIU|`{iz\ngJPH@bISUPGUCEVRwrC`dH\ngJPH@xIKT@GTc][iz=\ngJPH@xIKT@GTc_Cvv]`=\ngJPH@xIKT@GTc_Cvz^`=\ngJPH@xIKUPGQbgI[x^pRD\ngJPH@xILuTbGQbgI[x^pRD<\ngJPH@xILuTbGQbgI[x^pRD>\ngJPH@xILuTbGQbgI\\zJ\\wp}`dH<\ngJPH@xILuTbGQbgI\\zJ\\wp}`dH>\ngJPH@xIMsPGQbgI[x^WRD\ngJPH@xITuPGUCENRwrC`dH\ngJPH@xITuPGUCENSWrC`dH\ngJPHABIKT@GTcgAcfzvst\ngJPHADIKT@GTc][Yv=\ngJPHADIKT@GTc][Yz\ngJPHADIKUPGQbgI[kAHP\ngJPHADILthGQbgI\\zJ\\`\ngJPHADILuTbGQbgI[kAHP<\ngJPHADILuTbGQbgI[kAHP>\ngJPHADILuTbGQbgI\\zJ\\wVBP`<\ngJPHADILuTbGQbgI\\zJ\\wVBP`>\ngJPHADILuTbGQbgI\\zJ\\wV|P`<\ngJPHADILuTbGQbgI\\zJ\\wV|P`>\ngJPHAHILuLbGQbgI[sA@>\ngJPHAHILuTbGQbgI[kAHP<\ngJPHAHILuTbGQbgI[kAHP>\ngJPHAHILuTbGQbgI\\zJ\\wVBP`<\ngJPHAHILuTbGQbgI\\zJ\\wVBP`>\ngJPHAVIKUPGQbgI[kAHP\ngJPHAVILuTbGQbgI\\zJ\\wVBP`<\ngJPHAVILuTbGQbgI\\zJ\\wVBP`>\ngJPHAbIKT@GTc][Yv=\ngJPHAbIKT@GTc][Yz\ngJPHAbIKT@GTc][iz=\ngJPHAbIKTpGQbgI[k]HP\ngJPHAbIKTpGQbgI[pa@\ngJPHAbILuTbGQbgI[kAHP<\ngJPHAbILuTbGQbgI[kAHP>\ngJPHAbILuTbGQbgI\\zJ\\wVBP`<\ngJPHAbILuTbGQbgI\\zJ\\wVBP`>\ngJPHAbILuTbGQbgI\\zJ\\wVB_@>\ngJPHAbILuTbGQbgI\\zJ\\wV|P`<\ngJPHAbILuTbGQbgI\\zJ\\wV|P`>\ngJPHAxIKT@GTc][Yv=\ngJPHAxIKT@GTc][Yz\ngJPHAxIKT@GTc_Cvv]`=\ngJPHAxIKT@GTc_Cvv^`\ngJPHAxIKT@GTc_Cvz^`=\ngJPHAxIKTpGQbgI\\xLTwVzP`\ngJPHAxIKTpGQbgI\\xLTwp}ndH\ngJPHAxIKUPGQbgI[x^pRD\ngJPHAxILuTbGQbgI[x^pRD<\ngJPHAxILuTbGQbgI\\xL\\wVBP`<\ngJPHAxILuTbGQbgI\\xL\\wVBP`>\ngJPHAxILuTbGQbgI\\xL\\wp}`dH>\ngJPHAxILuTbGQbgI\\zJ\\wVBP`<\ngJPHAxILuTbGQbgI\\zJ\\wVBP`>\ngJPHAxILuTbGQbgI\\zJ\\wp}`dH<\ngJPHAxILuTbGQbgI\\zJ\\wp}`dH>\ngJPHAxILuTbGQbgQ[x^pRD<\ngJPHAxISR@GRBfzwSt=\ngJPHAxISR@GRBf~W]t}@=\ngJPHAxITuPGUCENRwrC`dH\ngJPHAxITuPGUCENSWrC`dH\ngJPHAxITuPGUCENSWr}oDH\ngJPHAxITuPGUCEVbwrC`dH\ngJPHAxITuPGUCEVcWrC`dH\ngJPHAxITuTBGUCENbwrC`dH<\ngJPHAxITuTBGUCENbwrC`dH>\ngJPHCPITuPGQCEN\\dLTyodGAO`\ngJPHEPIWUPGUCENcWtC`dH\ngJPHMPITsHGQCEI[i]worTJH\ngJPHMPITuTBGQCEI\\xJ\\wRBP`<\ngJPHMPITuTBGQCEI\\xJ\\wRBP`>\ngJPHMPITuTBGQCEI\\xJ\\wrCoDH<\ngJPHMPITuTBGQCEI\\xJ\\wrCoDH>\ngJPHMPITuTBGQCEI\\xL\\wRBP`<\ngJPHMPITuTBGQCEI\\xL\\wRBP`>\ngJPHMPITuTBGQCEI\\xL\\wrCoDH<\ngJPHMPITuTBGQCEI\\xL\\wrCoDH>\ngJPHMPYIBE@]KIkz[WRD\ngJPI@DBTjZhCjabgI[yApRD\ngJPIAVBTij@CiAS_HNv]`=\ngJPIAVBTij@CiAS_Kvv^`\ngJPIAVBTij@CiAU_HNv]`=\ngJPIAVBTij@CiAU_HNv^`\ngJPIAVBTij@CiAU_HNz^`=\ngJPIAxBTej@CjQoa{[Np=\ngJPIAxBTej@CjQoa{[OP\ngJPIAxBTfZjQChqSdn]EN[kAHP<\ngJPIAxBTfZjQChqSdn]EN[kAHP>\ngJPIAxBTfZjQChqSdn]EN[x^pRD<\ngJPIAxBTfZjQChqSdn]EN[x^pRD>\ngJPIAxBTjZhCjabkQ[yApRD\ngJPIMPZTjZjAChabdn\\EN[yAwbD<\ngJPIMPZTjZjAChabdn\\EN[yAwbD>\ngJPIMP[djZjAChabdn\\EN[iAHP<\ngJPIMP[djZjAChabdn\\EN[iAHP>\ngJPIMP[djZjAChabdn\\EN[yAwbD<\ngJPIMP[djZjAChabdn\\EN[yAwbD>\ngJPIMP[djZjAChabdn\\FN[yAwbD>\ngJPL@DHHpPdru@]ZJRwaB\ngJP`@TfVhCkQSf|pP\ngJP`@TfVhCkQSf|w`\ngJP`@TfVhCkQSgNbgMy``\ngJP`@TfVhCkQSj|pP\ngJP`@TfZjQCkQSf|pP<\ngJP`@TfZjQCkQSf|pP>\ngJP`@TfZjQCkQSf|w`<\ngJP`@TfZjQCkQSf|w`>\ngJP`@TfZjQCkQSgICEN[sA@>\ngJP`@TfZjQCkQSgNCGMy``<\ngJP`@TfZjQCkQSgNCGMy``>\ngJP`@TfZjQCkQSgNbgMy``<\ngJP`@TfZjQCkQSgNbgMy``>\ngJP`@TfZjQCkQSj|pP>\ngJP`@TfyhCiRs]CZv\ngJP`@TfyhCiRs]CZz\ngJP`@dfVhChqSdmu`dH\ngJP`@dfVhChqSdmu`gp\ngJP`@dfVhChqSdmuoDH\ngJP`@dfVhChqSdmuoGp\ngJP`@dfVhChqSdn]EN[kAHP\ngJP`@dfVhChqSdn]EN[kAO`\ngJP`@dfVhChqSdn]EN[k^HP\ngJP`@dfVhChqSdn]EN[k^O`\ngJP`@dfVhChqSduu`dH\ngJP`@dfVhChqSduuoDH\ngJP`@dfVhChqSdv]EN[kAHP\ngJP`@dfVhChqSdv]EN[k^HP\ngJP`@dfVhChqShmu`dH\ngJP`@dfVhChqShmu`gp\ngJP`@dfVhChqShn]EN[kAHP\ngJP`@dfVhChqShn]EN[kAO`\ngJP`@dfVhChqShuu`dH\ngJP`@dfVhChqShv]EN[kAHP\ngJP`@dfvdCkQrT\ngJP`@dfvdCkQrV|OP\ngJP`@dfvdCkQrWNbgH\ngJP`@dfvdCkQrWNbgMx^`\ngJP`@dfvhCkQrV|HP\ngJP`@dfvhCkQrV|O`\ngJP`@dfvhCkQrWNbgMxP`\ngJP`@dfvhCkQrWNbgMx_@\ngJP`@dfvhCkQrZ|HP\ngJP`@dfzhCkQrV|HP\ngJP`@dfzhCkQrWICEN[pa@\ngJP`@dfzjQCkQrWNBgMxP`<\ngJP`@dfzjQCkQrWNBgMxP`>\ngJP`@dfzjQCkQrWNBgMx_@<\ngJP`@dfzjQCkQrWNBgMx_@>\ngJP`ADkjhChaSdnRFJ\\wVBP`\ngJP`ADkjjIChaSdn\\FJ[kAHP<\ngJP`AdefdCiQU][Yv\ngJP`AdijdChabdmt`gh\ngJP`AdijdChabdn\\FN[iAOP\ngJP`AdijdCkAdf~P]l}@\ngJP`AdijjQChabdmt`dH<\ngJP`AdijjQChabdmt`dH>\ngJP`AdijjQChabdmt`gp<\ngJP`AdijjQChabdmt`gp>\ngJP`AdijjQChabdmtoDH<\ngJP`AdijjQChabdmtoDH>\ngJP`AdijjQChabdnRFJ\\wRBP`<\ngJP`AdijjQChabdnRFJ\\wRBP`>\ngJP`AdijjQChabdn\\FJ[iAHP<\ngJP`AdijjQChabdn\\FJ[iAHP>\ngJP`AdijjQChabdn\\FJ[iAO`<\ngJP`AdijjQChabdn\\FJ[iAO`>\ngJP`AdijjQChabdn\\FN[iAHP<\ngJP`AdijjQChabdn\\FN[iAHP>\ngJP`AdijjQChabdn\\FN[iAO`<\ngJP`AdijjQChabdn\\FN[iAO`>\ngJP`AdijjQChabdn\\FN[i^O`<\ngJP`AdijjQChabdut`dH<\ngJP`AdijjQChabdut`dH>\ngJP`AdijjQChabdv\\FJ[iAHP<\ngJP`AdijjQChabdv\\FJ[iAHP>\ngJP`AdijjQChabdv\\FN[iAHP>\ngJP`AdijjQChabhmt`dH<\ngJP`AdijjQChabhmt`dH>\ngJP`AdijjQChabhn\\FN[iAHP<\ngJP`AdijjQChabhn\\FN[iAHP>\ngJPa@erS[RAuhyJ\ngJPa@erS[RAuhyK^Gh\ngJPa@erS[TAuhyK^DH\ngJPa@erS[TAuhyK^Gp\ngJPa@erS[TAuhyM^DH\ngJPa@mrSKTAtXitVzpRD\ngJPaAiJTuTAtPqRVzPRD>\ngJPdAePF`Rnj`NlFJ\\xLTwdB>\ngJPdAiPJ`Rfj`NlFI\\xLTwa|>\ngJPdAiPJ`Rfj`NlFIlxLTwR|P`>\ngJPdAiPJ`Rfj`NlFIlxLTwaB>\ngJPdHaBFDRij`NlFN\\dLTyoLD>\ngJPdHaVFlRij`NlFNksA@>\ngJPdI`xJ`RVj`NmEIkh^HP>\ngJPeI`VIDTiKUPGVbdutODH>\ngJPh@iPIMuHGVcdh\ngJPh@iPIMuHGVcdmx^`\ngJPh@iPIMuPGVcdmxP`\ngJPhAePIWUPGQCEIkjAHP>\ngJPhAePIWUPGQCEIlxLTwTBP`>\ngJPhAePIWUPGQCIIkjAHP>\ngJPhAePIWUPGQCIIlxLTwTBP`>\ngJPhAePIWUPGQCIIlxL\\wTBP`>\ngJPhDPDIMuTbGRcd<\ngJPhE`DIMsPGVcdmxP`\ngJPhHaVITuPGQCGQ[kAHP>\ngJPhI`xIKTpGVbdmtODH\ngJPhIaVIKTpGVbdmxP`\ngJPhIaVIKTpGVbdmx_@\ngJPhLPDIKTpGRbd\ngJPhLQDIKTpGRbd\ngJPhLQxIKTpGRbf|G`\ngJPhaePRUrTuTAu`qK]KqB>\ngJPhaePRUrTuTAu`qM]KqB>\ngJPhaePRUrTuTAu`qMgAbfzWbD>\ngJPi@cPGdfVhCkQSkNbgMu`gp\ngJPiLPDGdejXCiQR\ngJQ@@dlp@]RMumgX=\ngJQ@@dlp@]RMumgh\ngJQ@@dlp@]RMungh=\ngJQ@@dls@]FJ\\enmta@\ngJQ@@dls@]FJ\\eoBD\ngJQ@@dls@]FJ\\foBD\ngJQ@@dls@]JJkk[OP\ngJQ@@dls@]JJkk]Np\ngJQ@@dls@]JJkk]OP\ngJQ@@dlu@]FJ\\enlDa@\ngJQ@@dluQH]FJ\\enlD~@<\ngJQ@@dluQH]FJ\\enlD~@>\ngJQ@@dmP@]RMumgX=\ngJQ@@dmP@]RMumgh\ngJQ@@dmP@]RMungh=\ngJQ@@dmP@]RN\\FJ[k]OP\ngJQ@@dmP@]RN\\FN[k[OP\ngJQ@@dmS@]FJ\\enmta@\ngJQ@@dmS@]FJ\\eoBD\ngJQ@@dmS@]FJ\\eoCx\ngJQ@@dmS@]FJ\\es`qS][iB\ngJQ@@dmS@]FJ\\es`qs][iB\ngJQ@@dmS@]FJ\\es`qs^DH\ngJQ@@dmS@]FJ\\es`qs^Gp\ngJQ@@dmS@]FJ\\fnmta@\ngJQ@@dmS@]FJ\\foBD\ngJQ@@dmS@]JJkk[OP\ngJQ@@dmS@]JJkk]OP\ngJQ@@dmS@]JJlxL\\wVz^`\ngJQ@@dmU@]FJ\\enlDa@\ngJQ@@dmU@]FJ\\enlDa\x7FIHx`\ngJQ@@dmU@]FJ\\enmx~@\ngJQ@@dmU@]FJ\\erPqSfzpRD\ngJQ@@dmU@]FJ\\erPqSfzpRG|dcb\ngJQ@@dmU@]FJ]FnlDa@\ngJQ@@dmUQH]FJ\\enlD~@<\ngJQ@@dmUQH]FJ\\enlD~@>\ngJQ@@dmUQH]FJ\\enlD~\x7FIHx`>\ngJQ@@dmUQH]FJ\\es`qS]XIB<\ngJQ@@dmUQH]FJ\\es`qS]XIB>\ngJQ@@dmUQH]FJ\\es`qS]XI|<\ngJQ@@dmUQH]FJ\\es`qS]XI|>\ngJQ@@dmUQH]FJ\\es`qs]XI|<\ngJQ@@dmUQH]FJ\\es`qs]XI|>\ngJQ@@dmUQH]FJ\\fnlDa@<\ngJQ@@dmUQH]FJ\\fnlDa@>\ngJQ@@dmUQH]FJ\\fs`qS]XIB<\ngJQ@@dmUQH]FJ\\fs`qS]XIB>\ngJQ@@drt`]FJ\\enlD}@\ngJQ@@drt`]FJ\\enmx}@\ngJQ@@drt`]FJ\\eoLD\ngJQ@@drt`]FJ\\eoMx\ngJQ@@drt`]FJ\\eshis]XIz\ngJQ@@drt`]FJ\\eshis][qz\ngJQ@@drt`]FJ\\eshis^XH\ngJQ@@drt`]FJ\\eshis^[p\ngJQ@@drt`]FJ]EnlD}@\ngJQ@@drt`]FJ]EoLD\ngJQ@@drt`]FJ]Eshis]XIz\ngJQ@@drt`]FJ]Eshis^XH\ngJQ@@dru@]FJ\\enlDa@\ngJQ@@dru@]FJ\\enlD~@\ngJQ@@dru@]FJ\\enmxa@\ngJQ@@dru@]FJ\\eshis]XIB\ngJQ@@dru@]FJ\\eshis]XI|\ngJQ@@dru@]FJ\\eshis][qB\ngJQ@@dru@]FJ\\eshis][q|\ngJQ@@dru@]FJ\\fnlDa@\ngJQ@@dru@]FJ]EnlDa@\ngJQ@@dru@]FJ]EnlD~@\ngJQ@@dru@]FJ]Eshis]XIB\ngJQ@@dru@]FJ]Eshis]XI|\ngJQ@@dru@]FJ]FnlDa@\ngJQ@@dsR`]FJ\\e@\ngJQ@@dsR`]FJ\\eoCt\ngJQ@@dsR`]FJ\\eoMt\ngJQ@@dsR`]FJ\\eshir\ngJQ@@dsR`]FJ\\eshis][iz\ngJQ@@dsR`]FJ\\eshis^Gh\ngJQ@@dsR`]FJ\\eshis^[h\ngJQ@@dsR`]ZRRwPwm`\ngJQ@@dsR`]ZRRwpwmgh\ngJQ@@dsTrH]FJ\\enlD}@<\ngJQ@@dsTrH]FJ\\enlD}@>\ngJQ@@dsTrH]FJ\\eoLD<\ngJQ@@dsTrH]FJ\\eoLD>\ngJQ@@dsTrH]FJ\\eoMx<\ngJQ@@dsTrH]FJ\\eoMx>\ngJQ@@dsTrH]FJ\\erPqSfzpSt>\ngJQ@@dsTrH]FJ\\erPqSf|pP<\ngJQ@@dsTrH]FJ\\erPqSf|pP>\ngJQ@@dsTrH]FJ\\eshis]XIz<\ngJQ@@dsTrH]FJ\\eshis]XIz>\ngJQ@@dsTrH]FJ\\eshis][qz<\ngJQ@@dsTrH]FJ\\eshis][qz>\ngJQ@@dsTrH]FJ\\eshis^XH<\ngJQ@@dsTrH]FJ\\eshis^XH>\ngJQ@@dsTrH]FJ\\eshis^[p<\ngJQ@@dsTrH]FJ\\eshis^[p>\ngJQ@@dsURH]FJ\\enlDa@<\ngJQ@@dsURH]FJ\\enlDa@>\ngJQ@@dsURH]FJ\\enlD~@<\ngJQ@@dsURH]FJ\\enlD~@>\ngJQ@@dsURH]FJ\\enmxa@<\ngJQ@@dsURH]FJ\\enmxa@>\ngJQ@@dsURH]FJ\\enmx~@>\ngJQ@@dsURH]FJ\\erPqSfzpRD<\ngJQ@@dsURH]FJ\\erPqSfzpRD>\ngJQ@@dsURH]FJ\\erPqSfzpSx<\ngJQ@@dsURH]FJ\\erPqSfzpSx>\ngJQ@@dsURH]FJ\\erPqSfzwbD>\ngJQ@@dsURH]FJ\\erPqSfzwcx>\ngJQ@@dsURH]FJ\\es`qs]XIB<\ngJQ@@dsURH]FJ\\es`qs]XIB>\ngJQ@@dsURH]FJ\\es`qs]XI|<\ngJQ@@dsURH]FJ\\es`qs]XI|>\ngJQ@@dsURH]FJ\\es`qs][qB<\ngJQ@@dsURH]FJ\\es`qs][qB>\ngJQ@@dsURH]FJ\\eshis]XIB<\ngJQ@@dsURH]FJ\\eshis]XIB>\ngJQ@@dsURH]FJ\\eshis]XI|<\ngJQ@@dsURH]FJ\\eshis]XI|>\ngJQ@@dsURH]FJ\\eshis][qB<\ngJQ@@dsURH]FJ\\eshis][qB>\ngJQ@@dsURH]FJ\\eshis][qC~RAQ@>\ngJQ@@dsURH]FJ\\eshis][q|<\ngJQ@@dsURH]FJ\\eshis][q|>\ngJQ@@dsURH]FJ\\fnlDa@<\ngJQ@@dsURH]FJ\\fnlDa@>\ngJQ@@dsURH]FJ\\frPqSfzpRD<\ngJQ@@dsURH]FJ\\frPqSfzpRD>\ngJQ@@dsURH]FJ\\fs`qs]XIB<\ngJQ@@dsURH]FJ\\fs`qs]XIB>\ngJQ@@dsURH]FJ\\fshis]XIB<\ngJQ@@dsURH]FJ\\fshis]XIB>\ngJQ@@dsURH]FJ\\fshis][qB<\ngJQ@@dsURH]FJ]EnlDa@<\ngJQ@@dsURH]FJ]EnlDa@>\ngJQ@@dsURH]FJ]Es`qs]XIB<\ngJQ@@dsURH]FJ]Es`qs]XIB>\ngJQ@@dsURH]FJ]Es`qs]XI|<\ngJQ@@dsURH]FJ]Es`qs]XI|>\ngJQ@@dsURH]FJ]Eshis]XIB<\ngJQ@@dsURH]FJ]Eshis]XIB>\ngJQ@@dsURH]FJ]Eshis]XI|<\ngJQ@@dsURH]FJ]FnlDa@>\ngJQ@@dwM@]FJ\\eneta@\ngJQ@@dwM@]FJ\\eoBD\ngJQ@@dwM@]FJ\\es`is]KiB\ngJQ@@dwM@]FJ\\eshis]KiB\ngJQ@@dwM@]FJ\\eshis]Ki|\ngJQ@@dwM@]FJ\\eshis^DH\ngJQ@@dwM@]FJ\\eshis^Gp\ngJQ@@dwM@]FJ\\foBD\ngJQ@@dwM@]ZVRwpvmdH\ngJQ@@dwM@]ZVRwpvndH\ngJQ@@dwM@]ZVRytTyoam]HP\ngJQ@@dwM@]ZVRytTyoam]O`\ngJQ@@eMP@]HJ[yAvsl=\ngJQ@@eMP@]HJ[yAvst\ngJQ@@eMP@]HJ[yAwSt=\ngJQ@@eMP@]HJ[y^vsl=\ngJQ@@eMP@]HJ[y^vst\ngJQ@@eMP@]HJ[y^wSt=\ngJQ@@eMP@]HJ\\xLTwrCngh\ngJQ@@eMP@]HJ\\xLTwr}ngh\ngJQ@@eMP@]HJ\\xL\\wrCmgh\ngJQ@@eMP@]HJ\\xL\\wr}mgh\ngJQ@@eMP@]HJkyAvsl=\ngJQ@@eMP@]HJkyAvst\ngJQ@@eMP@]HJkyAwSt=\ngJQ@@eMP@]HJlxLTwrCngh\ngJQ@@eMP@]HJlxL\\wrCmgh\ngJQ@@eMS@]TLTyK]HIB\ngJQ@@eMS@]TLTyK]HI|\ngJQ@@eMS@]TLTyK_HNzP`\ngJQ@@eMS@]TLTyK_HNzP\x7Fdd\\P\ngJQ@@eMS@]TLTyK_HNz_@\ngJQ@@eMS@]TLTyKgAbfzPRD\ngJQ@@eMS@]TLTyKgAbfzPSx\ngJQ@@eMS@]TLTyKgAbfzWbD\ngJQ@@eMS@]TLTyKgAbf~P]ta@\ngJQ@@eMS@]TLTyKgAbf~P]t~@\ngJQ@@eMS@]TLTyKgAbf~Wmta@\ngJQ@@eMS@]TLTyKgAbf~Wmt~@\ngJQ@@eMS@]TLTyKgAcfzPRD\ngJQ@@eMS@]TLTyKgAcf~P]ta@\ngJQ@@eMS@]TLTyKgAcf~Wmt~@\ngJQ@@eMS@]TLTyM]HIB\ngJQ@@eMS@]TLTyM_HNzP`\ngJQ@@eMS@]TLTyMgAbfzPRD\ngJQ@@eMS@]TLTyMgAbfzWbD\ngJQ@@eMS@]TLTyMgAbf~P]ta@\ngJQ@@eMS@]TLTyMgAbf~Wmta@\ngJQ@@eMS@]TLTyMgAcf~P]ta@\ngJQ@@eMS@]TLUYK]HIB\ngJQ@@eMS@]TLUYK_HNzP`\ngJQ@@eMS@]TLUYKgAbfzPRD\ngJQ@@eMS@]TLUYKgAbf~P]ta@\ngJQ@@eMS@]TLUYKgAbf~P]t~@\ngJQ@@eMS@]TLUYKgAcfzPRD\ngJQ@@eMS@]TLUYKgAcf~P]ta@\ngJQ@@eMS@]TLUYM_HNzP`\ngJQ@@eMS@]TLUYMgAbfzPRD\ngJQ@@eMS@]TLUYMgAbf~P]ta@\ngJQ@@eMS@]XLdwrCmgh\ngJQ@@eMS@]XLdwrCngX\ngJQ@@eMS@]XLdwrCngh\ngJQ@@eMS@]XLdypXiodG]OP\ngJQ@@eMS@]XLdypXyodG[OP\ngJQ@@eMS@]XLdypXyodG]OP\ngJQ@@eMS@]XLeYpXiodG]OP\ngJQ@@eMS@]XLeYpXyodG[OP\ngJQ@@eMU@]TLTyK_HNBP`\ngJQ@@eMU@]TLTyK_HNBP\x7Fdd\\P\ngJQ@@eMU@]TLTyK_HN|_@\ngJQ@@eMU@]TLTyK_KvBP`\ngJQ@@eMU@]TLTyKdabgM|`xIB\ngJQ@@eMU@]TLTyKdabgM|oXIB\ngJQ@@eMU@]TLTzM_HNBP`\ngJQ@@eMU@]TLUYK_HNBP`\ngJQ@@eMU@]TLUYK_HNBP\x7Fdd\\P\ngJQ@@eMURH]TLTyK_HNB_@<\ngJQ@@eMURH]TLTyK_HNB_@>\ngJQ@@eMURH]TLTyK_HNB__dd\\P<\ngJQ@@eMURH]TLTyK_HNB__dd\\P>\ngJQ@@eMURH]TLTyK_KvB_@<\ngJQ@@eMURH]TLTyKdabgM|`xI|<\ngJQ@@eMURH]TLTyKdabgM|`xI|>\ngJQ@@eMURH]TLTyKgAbf~P\\Da@<\ngJQ@@eMURH]TLTyKgAbf~P\\Da@>\ngJQ@@eMURH]TLTyKgAbf~P\\D~@<\ngJQ@@eMURH]TLTyKgAbf~P\\D~@>\ngJQ@@eMURH]TLTyKgAbf~WlDa@<\ngJQ@@eMURH]TLTyKgAbf~WlDa@>\ngJQ@@eMURH]TLTyKgAcf~P\\D~@<\ngJQ@@eMURH]TLTyKgAcf~P\\D~@>\ngJQ@@eMURH]TLTyKgAcf~WlD~@<\ngJQ@@eMURH]TLTyKgAcf~WlD~@>\ngJQ@@eMURH]TLTyM_HNBP`<\ngJQ@@eMURH]TLTyM_HNBP`>\ngJQ@@eMURH]TLTyMgAbf~P\\Da@<\ngJQ@@eMURH]TLTyMgAbf~P\\Da@>\ngJQ@@eMURH]TLTyMgAbf~WlDa@<\ngJQ@@eMURH]TLTyMgAbf~WlDa@>\ngJQ@@eMURH]TLTyMgAcf~P\\Da@<\ngJQ@@eMURH]TLTyMgAcf~P\\Da@>\ngJQ@@eMURH]TLTzK_HNB_@<\ngJQ@@eMURH]TLTzK_HNB_@>\ngJQ@@eMURH]TLTzKgAcf~P\\D~@<\ngJQ@@eMURH]TLTzKgAcf~P\\D~@>\ngJQ@@eMURH]TLTzMgAbf~P\\Da@<\ngJQ@@eMURH]TLTzMgAbf~P\\Da@>\ngJQ@@eMURH]TLUYKgAbf~P\\Da@<\ngJQ@@eMURH]TLUYKgAbf~P\\Da@>\ngJQ@@eMURH]TLUYKgAbf~P\\D~@<\ngJQ@@eMURH]TLUYKgAcf~P\\D~@<\ngJQ@@eMURH]TLUYKgAcf~P\\D~@>\ngJQ@@eMURH]TLUYM_HNBP`<\ngJQ@@eMURH]TLUYM_HNBP`>\ngJQ@@eMURH]TLUYMgAbf~P\\Da@<\ngJQ@@eMURH]TLUYMgAbf~P\\Da@>\ngJQ@@eMURH]TLUZKgAcf~P\\D~@<\ngJQ@@eMURH]TLUZKgAcf~P\\D~@>\ngJQAAIRYjPNcENRytTyoLD>\ngJQAAIRYjPNcENbwVB^`>\ngJQAAIRYjPNcENbypXynlD}@>\ngJQDAJATBTuTAtPqtZzpRD\ngJQDHHPpbU]TAu`isdabgMy``>\ngJQDL@aABSKTAuhiK^DH\ngJQDL@aABS[TAuhyK^DH\ngJQH@jAJZ`@z`[k[OP\ngJQH@jAJZ`@z`[k]OP=\ngJQH@jAJZ`@z`[y^vsl=\ngJQH@jAJZ`@z`[y^vst\ngJQH@jAJZ`@z`[y^wSt=\ngJQH@jAJZ`@z`\\xLTwr}ngh\ngJQH@jAJZ`@z`\\xL\\wVv^`\ngJQH@jAJZ`@z`\\xL\\wr}mgh\ngJQH@jAJZf@zHXyKgAbfzWbD\ngJQH@jAJZf@zHXyMgAbfzWbD\ngJQH@jAJZf@zHXyMgAbf~Wmta@\ngJQH@jAJZj@zHXyK]XIB\ngJQH@jAJZjdPzHXyKgAbfzpRD<\ngJQH@jAJzj@zhXitZ~`\\Da@\ngJQHB@aIfe@zTdwPwm`\ngJQHB@aInZ@zTlwPvm`\ngJQHB@aInZ@ztTyoEt\ngJQHBDQIfjdPztTyoLD<\ngJQHBHaIfjdPztTyoLD<\ngJQHBHaIfjdPztTyoLD>\ngJQHBIAIfjdPztTyoLD>\ngJQHBOAIfjdPztTyna{A@<\ngJQHD@aIej@zLTzKgQSfzpRD\ngJQHD@aIff@zLTyKgQSfzwRD\ngJQHD@aIff@ztdeoao[HP\ngJQHD@aIfjdPzLTyKgQSfzpRD<\ngJQHD@aIfjdPzLTyKgQSfzpRD>\ngJQHDIAIfjdPzLTyKgQSfzpRD<\ngJQHH@aIZ`@zd[x^vsl=\ngJQHH@aIZ`@zd[x^vst\ngJQHH@aIZ`@zd[x^wSt=\ngJQHH@aIZ`@zd\\xL\\wp}mgh\ngJQHH@aIZf@zLTyK]CqB\ngJQHH@aIZf@zLTyK_CvzP`\ngJQHH@aIZf@zLTyKgAbfzGbD\ngJQHH@aIZf@zLTyM_CvzP`\ngJQHH@aIZj@zLTyK_CvBP`\ngJQHH@aIZjbPzLTyK_CvB_@<\ngJQHH@aJmj`PzHTyK]XIB<\ngJQHH@aJmj`PzHTyK]XIB>\ngJQHH@aJmj`PzHTyKgQSfzpRD<\ngJQHH@aJmj`PzHTyKgQSfzpRD>\ngJQHH@aJmj`PzHTyM]XIB<\ngJQHH@aJmj`PzHTyM]XIB>\ngJQHH@aJmj`PzHTzK]XIB<\ngJQHH@aJmj`PzHTzK]XIB>\ngJQHH@aJmj`PzHTzM]XIB>\ngJQHHBqIZ`@zd\\xLTwp}ngh\ngJQHHGAIZ`@zd[x^vsl=\ngJQHHGAIZ`@zd[x^vst\ngJQHHGAIZ`@zd[x^wSt=\ngJQHHGAIZ`@zd\\xLTwVz^`\ngJQHHGAIZ`@zd\\xL\\wVv^`\ngJQHHGAIZf@zLTyK]CqB\ngJQHHGAIZf@zLTyK_CvzP`\ngJQHHGAIZj@zLTyK_CvBP`\ngJQHHGAIZjbPzLTyK_CvB_@<\ngJQHHGAIZjbPzLTyK_CvB_@>\ngJQHHGAIZjbPzLTyKgAbf~GlDa@>\ngJQHHGAIZjbPzLTyM_CvBP`<\ngJQHHGAIZjbPzLTyM_CvBP`>\ngJQHHOAIZ`@zd[k[Np=\ngJQHHOAIZ`@zd[k[OP\ngJQHHOAIZ`@zd[k]OP=\ngJQHHOAIZ`@zd[x^vsl=\ngJQHHOAIZ`@zd[x^vst\ngJQHHOAIZ`@zd[x^wSt=\ngJQHHOAIZ`@zd\\xLTwVz^`\ngJQHHOAIZ`@zd\\xLTwp}ngh\ngJQHHOAIZ`@zd\\xL\\wVv^`\ngJQHHOAIZ`@zd\\xL\\wp}mgh\ngJQHHOAIZf@zLTyM_CvzP`\ngJQHHOAIZj@zLTyK]XIB\ngJQHHOAIZj@zLTyK_CvBP`\ngJQHHOAIZjbPzLTyKgAbf~GlDa@<\ngJQHHOAIZjbPzLTyKgAbf~GlDa@>\ngJQHHOAIZjbPzLTyMgAbf~GlDa@>\ngJQHHOAIZjbPzLTzKgAcf~GlD~@>\ngJQHL@aIZf@ztTeoBD\ngJQHL@aIZf@ztTfnaxa@\ngJQHL@aIZf@ztTfoBD\ngJQHL@aIZjb`ztTeoBD<\ngJQHL@aIZjb`ztTeoBD>\ngJQHL@aIZjb`ztTes`qs^DH<\ngJQHL@aIZjb`ztTes`qs^DH>\ngJQHL@aJZf@zHXiK]HIB\ngJQHL@aJZf@zHXiK]HI|\ngJQHL@aJZf@zHXiK]KqB\ngJQHL@aJZf@zHXiM]HIB\ngJQHL@aJZf@zHXjK]HIB\ngJQHL@aJZf@zHXjK]HI|\ngJQHL@aJZf@zHXjM]HIB\ngJQHL@aJZjdPzHXiK]HIB<\ngJQHL@aJZjdPzHXiK]HIB>\ngJQHL@aJZjdPzHXjK]HIB<\ngJQHL@aJZjdPzHXjK]HIB>\ngJQHLHaIZf@ztTeoBD\ngJQHLHaIZf@ztTfoBD\ngJQHLHaIZjb`ztTeoBD<\ngJQHLHaIZjb`ztTeoBD>\ngJQHLJqIZjb`ztTeoBD>\ngJQHLLQIZf@ztTfoBD\ngJQH`jBRnRfj`NbFNSYpXioe{AHP>\ngJQI@jA\\eMP@]PN\\FJ[y^wSt\ngJQI@jA\\eMP@]PN\\FN[y^vst\ngJQI@jA\\eMS@]DL\\fs`qS]KqB\ngJQI@jA\\eMS@]DL\\fs`qS_KvzP`\ngJQIHO@RdmP@]RM|O[Yv=\ngJQ`@bdvu@]JNP\ngJQ`@ldru@]ZJRwaB\ngJQ`@ldru@]ZJRwa|\ngJQ`@ldru@]ZJRytTyoBD\ngJQ`@ldru@]ZJRytTyoCx\ngJQ`@ldru@]ZJSWaB\ngJQ`AbeMU@]XLTyHXis^HH\ngJQa@bnR[Z`NeGH\ngJQdAcJATBTuTAt`qs`qR>\ngJQeAcJATByJZj@zPXypXioEx>\ngJQhAbjAJzj@zpXioHD\ngJQhAbjAJzj@zpYIoHD\ngJQhAbjAJzj@zpYIs`qS^PH>\ngJQhHl@aJmj`PzpTeshis^DH<\ngJQhHl@aJmj`PzpTeshis^DH>\ngJQhHlOAJfj@zpXeoBD\ngJQhHlOAJfj@zpXerPqSf|HP\ngJQhHlOAJfj@zpXfoBD\ngJQhHlOAJfj`PzpXfs`qs^DH<\ngJQhHlOAJfj`PzpXfs`qs^DH>\ngJR@@lTfVhCiRS]C^w~tP\ngJR@@lTfphCjYnam[\x7FZX=\ngJR@ALTkfXCiAU][Yw~t@\ngJR@ALTkfXCiAU][Y{~t@\ngJR@`lQJyIej@zTdwPwm\x7FmD\ngJR@`lQJyIej@zTdwPwn\x7FmD\ngJR@`lQJyIej@zTdwP{n\x7FmD\ngJR@`lUqeIej@zTdwPwm\x7FmD\ngJR@`l]qeIlJ@zf[h[V\x7Fvf@=\ngJRA@lQJSKTAthi\x7FZH\ngJRA@lUrSKTAtiInao[\x7FZH\ngJRA@lUrSKTAtiInao]\x7FZH\ngJRAALSrUsLAt`jnml{\x7FZ@\ngJRAAL]JUsLAt`jnmt}\x7FZ@\ngJT@@TfRDCjInao[@\ngJT@@TfVhCkQSf|pP\ngJT@@TfVhCkQSkNbgMtNxH\ngJT@@TfZjQCkQSf|pP<\ngJT@@TfZjQCkQSf|pP>\ngJT@@TfZjQCkQSgNCGMy``<\ngJT@@TfZjQCkQSgNCGMy``>\ngJT@@TfZjQCkQSgNbgMy``<\ngJT@@TfZjQCkQSgNbgMy``>\ngJT@@TfZjQCkQSkNCGMy``<\ngJT@@TfZjQCkQSkNCGMy``>\ngJT@@TfphCjYnam[@\ngJT@@TfphCjYnam]@\ngJT@@TfyhCiRs]CZv\ngJT@@TfyhCiRs]CZz\ngJT@@TfyhCiRs]Cjv\ngJT@@TfyhCiRs]Cjz\ngJT@@TfyhCiRsgASfzGUl\ngJT@@TfyhCiRsgQSfzGUt\ngJT@@TjZhChabgMt`xH\ngJT@@TjZhChabgMt`xO{P@=\ngJT@@TjZhChabgMt`{w{P@\ngJT@@TjZhChabgNRFJ\\wRC``\ngJT@@TjZhChabgNRFJ\\wrC`gp\ngJT@@TjZhChabgN\\EN[iAwov`@\ngJT@@TjZhChabgN\\FN[iAp_v`@\ngJT@@TjZhChabgUt`xO{P@\ngJT@@TjZhChabgV\\FN[iAp_v`@\ngJT@@TjZhCiBc]K^w~t@=\ngJT@@TjZhCiBc]K^{~t@\ngJT@@TjZhCiBcgASfzV}w}h@\ngJT@@TjZjAChabgN\\FN[iApP<\ngJT@@TjZjAChabgN\\FN[iApP>\ngJT@@TjZjAChabgN\\FN[iAw`<\ngJT@@TjZjAChabgN\\FN[iAw`>\ngJT@@TjZjAChabgVRFJ\\wRC``<\ngJT@@TjZjAChabgVRFJ\\wRC``>\ngJT@@TjZjAChabgV\\FN[iApP>\ngJT@@defhChqSdmu`dO{Q@=\ngJT@@defhChqSdn\\FJ[kAH_vb@\ngJT@@defhChqSdv\\FJ[kAH_vb@\ngJT@@dfRHCiIK_C^vP\x7FmD\ngJT@@dfRHCiIK_C^zP\x7FmD\ngJT@@dfRHCiIK_CnvP\x7FmD\ngJT@@dfRHCiIKgQSf~F}ta\x7FZH\ngJT@@dfRHCiIM_C^vP\x7FmD\ngJT@@dfRHCiIM_C^zP\x7FmD\ngJT@@dfRHCiIMgQSf~F}ta\x7FZH\ngJT@@dfVhChqSdmu`dO{Q@\ngJT@@dfVhChqSdn\\FN[kAH_vb@\ngJT@@dfVhChqSdn\\FN[k^H_vb@\ngJT@@dfVhChqSdn]EN[x]pRG}h`\ngJT@@dfVhChqSduu`dO{Q@\ngJT@@dfVhChqSduuoDO{Q@\ngJT@@dfVhChqSdu|NxIC~tP\ngJT@@dfVhChqSdv\\FN[kAH_vb@\ngJT@@dfVhChqShmu`dO{Q@\ngJT@@dfVhChqShmu`gw{Q@\ngJT@@dfVhChqShn\\FN[kAH_vb@\ngJT@@dfVhChqShuu`dO{Q@\ngJT@@dfVhChqShu|NxIC~tP\ngJT@@dfVhChqShv\\FN[kAH_vb@\ngJT@@dfVhCkRRV~F}la\x7FZH\ngJT@@dfVhCkRRV~F}ta\x7FZH\ngJT@@dfVhCkRRWNbgM|M{iC~tP\ngJT@@dfVhCkRRZ~F}ta\x7FZH\ngJT@@dfphCiYK_CZvP`=\ngJT@@dfvdCkQrWNBgH\ngJT@@dfvdCkQrWNbgH\ngJT@@dfvdCkRrVzFut\ngJT@@dfvhCkQrV|HP\ngJT@@dfvhCkQrWNbgMxP`\ngJT@@dfvhCkQrZzGRD\ngJT@@dfvhCkQrZ|HP\ngJT@@dfvhCkRrV~Fula@\ngJT@@dfvhCkRrV~Futa@\ngJT@@dfvhCkRrZ~Fula@\ngJT@@dfvhCkRrZ~Futa@\ngJT@@dfzhCkQrV|HP\ngJT@@dfzhCkQrWICEN[pa@\ngJT@@dfzjQCkQrWNBgMxP`<\ngJT@@dfzjQCkQrWNBgMxP`>\ngJT@ADiihCjabgI[kAH_vP`=\ngJT@ADiihCjabgI[kAOovP`\ngJT@ADiihCjabgI[y]pRG}dH=\ngJT@ADiihCjabgI\\xLTwVBP\x7Fla@\ngJT@ADiihCjabgI\\xLTwr{`dO{HP\ngJT@ADiihCjabgIkkAH_vP`\ngJT@ADiihCjabgIlxLTwr{`dO{HP\ngJT@ADiihCjabgQkkAH_vP`=\ngJT@ADiihCkAdfzvso}dH=\ngJT@ADiihCkAdfzwSw}dH=\ngJT@ADiihCkAdgNCEM|n{i{~rD@\ngJT@ADiihCkAdgNCGM|n{Y{~rD@\ngJT@ADjZhCjabgI[yApRG}dH=\ngJT@ADjZhCjabgI[yApRG}h@=\ngJT@ADjZhCjabgI[yApRG}i@\ngJT@ADjZhCjabgI[yAwbG}dH\ngJT@ADjZhCjabgI\\xL\\wrC`dO{P@\ngJT@ADjZhCjabgIkyApRG}dH=\ngJT@ADjZhCjabgQ[yApRG}dH\ngJT@ADjZhCjabgQkyApRG}dH\ngJT@ADjZhCkBbV~W]ta\x7FYB@=\ngJT@ADjzhChaSdmu`dO{P@\ngJT@ADjzhChaSdn\\FN[kAH_v`@\ngJT@ADjzhChaSdn]EN[kAH_v`@\ngJT@ADjzhChaSduu`dO{P@\ngJT@ADjzhChaShmu`dO{P@\ngJT@ADjzhCkBRV~f}la\x7FZ@\ngJT@ADjzhCkBRV~f}l~\x7FZ@\ngJT@ADjzhCkBRV~f}ta\x7FZ@\ngJT@ADjzhCkBRWNbgM}M{iC~t@\ngJT@ADjzhCkBRZ~f}la\x7FZ@\ngJT@ADjzhCkBRZ~f}ta\x7FZ@\ngJT@ADjzjAChaSdmu`dH<\ngJT@ADjzjAChaSdmu`dH>\ngJT@ADjzjAChaSdn]EN[kAHP<\ngJT@ADjzjAChaSdn]EN[kAHP>\ngJT@ADjzjAChaSduu`dH<\ngJT@ADjzjAChaSduu`dH>\ngJT@ADkf@CjAnml{\x7FZ@=\ngJT@ADkf@CjAnml}\x7FZ@\ngJT@ADkf@CjAnmt}\x7FZ@=\ngJT@ADkf@CjAoiw[N\x7Fv`@=\ngJT@ADkf@CjAoiw[O_v`@\ngJT@ADkf@CjAoiw]O_v`@=\ngJT@ADkfXChaSdmundO{P@\ngJT@ADkfXChaSduundO{P@\ngJT@ADkfXCiAU][i{~t@\ngJT@ADkj@CjAnml{\x7FZ@=\ngJT@ADkj@CjAnml}\x7FZ@\ngJT@ADkj@CjAnmt}\x7FZ@=\ngJT@ADkjXChaSdmundO{P@\ngJT@AdefdCiQU][Yv\ngJT@AdefdCiQU][Yz\ngJT@AdefdCiQU][iv\ngJT@AdefdCiQUgAbf~G]t}@\ngJT@Adii@CiAS][Yw~t@\ngJT@Adii@CiAS_Knv]\x7Fm@\ngJT@Adii@CiASgAbf~W]t{\x7FZ@\ngJT@Adii@CiASgAcf~W]l}\x7FZ@\ngJT@AdiiXChabdmtngw{P@\ngJT@AdiiXChabdv\\FJ[y]wRG}h@\ngJT@AdiiXChabdv\\FN[y]wRG}h@\ngJT@AdiidChabdn\\FN[i]O_v`@\ngJT@AdiidChabdn\\FN[q]\x7FZ@\ngJT@AdiidCkAdfzwSo}h@\ngJT@AdiidCkAdfzwSw}h@\ngJT@AdiidCkAdgNCEM|n{i{~t@\ngJT@AdiidCkAdgNCGMumgo{P@\ngJT@AdiidCkAdgNCGMungo{P@\ngJT@AdiidCkAdgNCGM|n{Y{~t@\ngJT@AdiidCkAdgNCGM|n{i{~t@\ngJT@AdijdChabdmt`go{P@\ngJT@AdijdChabdn\\FJ[iAO_v`@\ngJT@AdijdChabdn\\FN[iAO_v`@\ngJT@AdijdChabdn\\FN[qA\x7FZ@\ngJT@AdijdCkAdf~P]t{\x7FZ@\ngJT@AdijdCkAdf~P]t}@\ngJT@AdijdCkAdf~Wmt}@\ngJT@AdijdCkAdgNCEM|`{iz\ngJT@AdijdCkAdgNCGM|`{Y{~t@\ngJT@AdijdCkAdgNCGM|`{iz\ngJT@AdijjQChabdmt`dO{P@<\ngJT@AdijjQChabdmt`dO{P@>\ngJT@AdijjQChabdnRFJ\\wRBP`>\ngJT@AdijjQChabdv\\FJ[iAHP<\ngJT@AdijjQChabdv\\FJ[iAH_v`@<\ngJT@AdijjQChabdv\\FJ[iAH_v`@>\ngJT@AdijjQChabhmt`dO{P@<\ngJT@AdijjQChabhv\\FJ[iAH_v`@<\ngJT@AdijjQChabhv\\FJ[iAH_v`@>\ngJT@`QIeIfjdPztTys`qs^XH>\ngJT@`QIeIlJ@zf[h[Vp\ngJT@`aJyIdb@zRRypXyoaw[H_vb@\ngJT@`aJyIdb@zRRytTyoaw]H_vb@\ngJT@aAteJz`@z`[k[N\x7Fv`@=\ngJT@aAteJz`@z`[k[O_v`@\ngJT@aAteJz`@z`[k]O_v`@=\ngJT@aAteJzj@zHTyK]XIC~t@\ngJTA@QJSIBAuDwPwm`\ngJTA@QJSMUHauhis^XH<\ngJTA@QJSMUHauhis^XH>\ngJTA@QJSXTAuLwPvm`\ngJTA@QJUMTAtPqSgICEN[iApP\ngJTA@SJSXTAuLwPvm`\ngJTA@SJUMTAtPqSgICEN[iApP\ngJTA@SJUMTAtPqSgICEN[yApSx\ngJTA@aJRsTAtXirWNCEM|NxIC~tP\ngJTA@aJRsTAtXir[NCEM|NxIC~tP\ngJTA@aJSIDAtdeoao[H_vb@\ngJTA@aJSIDAtdeoaw[H_vb@\ngJTA@aJSIDAtdfoao[H_vb@\ngJTA@aJSKTAtXirWNbgMu`dO{Q@\ngJTA@aJS[RAuhyKgQSd\ngJTA@aJS[TAuiYK_CZvP`\ngJTA@aJS[TAuiYM_CjzP`\ngJTAAAJU[TAuaIK_S^vP\x7Fm@\ngJTAAaJRuRAthjnml{@\ngJTAAaJRuUEAuhiK^DH>\ngJTD@UPZ`Rkj`NlFR\\zJ\\wdC~t@\ngJTDAePF`Rnj`NlFR\\xL\\wdC~t@>\ngJTDAiPJ`Rfj`NlFI\\xLTwaB>\ngJTDE`DGpRYZ`NeEMx__mD\ngJTDEaxR`RYj`NmEIlzJ\\waC~tP>\ngJTDLPDHHR[Z`NeGO{S@\ngJTDLPDPHRnh@NhFzvsl=\ngJTDLPDPHRni`NdEUumgX\ngJTDLPDPHRni`NdEUumgh\ngJTD`UPZ`DkdjzjACkAbgNbgMyO@<\ngJTD`UPZ`DkdjzjACkAbgNbgMyO@>\ngJTDe`DDHT{dfyhCiRs_CZv__mL\ngJTDlQVPHGZTejXCiQR\ngJTELPDPHtiWTpGRBd\ngJTHACPISSPGQCENlxL\\wr{`gw{HP\ngJTHAePIWUPGQCII\\xLTwTBP\x7Fm@>\ngJTHDPDIMsPGRefzFul\ngJTHE`DILmHGVbdmx^\x7FmD\ngJTHE`DILmHGVbdn]EN[p}\x7FZH\ngJTHE`DILmPGVbdmxP\x7FmD\ngJTHE`DILmPGVbdmx__mD\ngJTHE`DILmPGVbdn]EN[pa\x7FZH\ngJTHE`DILmPGVbduxP\x7FmD\ngJTHE`DILmPGVbdv]EN[pa\x7FZH\ngJTHE`DILthGVddmtM{_{Q@\ngJTHE`DILthGVddm|M{Y{~tP\ngJTHE`DILthGVddn]EN[x[wSw}h`\ngJTHE`DIMsPGVcdmxP\x7FmL\ngJTHE`DIMsPGVcdn]EN[pa\x7FZX\ngJTHE`DIMsPGVcduxP\x7FmL\ngJTHE`DIMsPGVedm|MkYC~tp\ngJTHE`DIMsPGVedu|MkYC~tp\ngJTHEaDILthGVbdn]EN[p}\x7FZH\ngJTHHPDILuPGVbgN]EN[h^p_vd@\ngJTHH`xIKUPGQbgI[x^pRD\ngJTHHaxILuHGQbgI[h^p_vTP\ngJTHI`DIKT@GTc_Cvv]\x7FmH\ngJTHI`DIKTpGRbj~Gml{\x7FZP\ngJTHI`DIKUHGRbj~Gmt}\x7FZP\ngJTHIaxIKT@GTc_Cvv]\x7FmH\ngJTHLPDIST@GRBf~P]l{@=\ngJTHLPDIST@GRBj~P]l{@=\ngJTHLPDISTpGVCEMx``\ngJTHLPDISTpGVCEN\\FJ[qA@\ngJTHLPDISTpGVCEN\\FN[iAwP\ngJTHLPDISTpGVCIM|`{Yv\ngJTHLPDISTpGVCIM|`{Yz\ngJTHLPDISTpGVCIN\\FN[yAvst\ngJTH`mPB]rS[TAuiYK_CjzP`\ngJTHe`DCeJS\\tAuhyKgQSf|H_vf@\ngJTHe`DJ]rS\\tAuiYKgQSf~Futa\x7FZX\ngJTHe`bCeJS\\tAuhyK]KiC~tp\ngJTHi`DSmJRu@AuHwp}mg_{R@\ngJTHlQxCmJTuLAu`rU_HNz^`\ngJTIE`DJTfyhCkRrV~Fula\x7FZX\ngJTILPDZTijXCkAbf|PP\ngJTIhaVCiJeJZ`@z`[k[N\x7Fvd@=\ngJTIhaVCiJeJZ`@z`[k]O_vd@=\ngJTIhabCiJeJZ`@z`[k[N\x7Fvd@=\ngJTIhabCiJeJZ`@z`[k]O_vd@=\ngJT`E`TfVhCiQR\ngJT`LPdfVhCiQR\ngJT`LPdfvhCiQs~tp\ngJT`i`iJyImi@zt\\eoCw}eL\ngJT`i`iJyImj@zt\\eoBG}eL\ngJT`i`iJyImj@zt\\foBG}eL\ngJTai`iJ{\\dvu@]ZNRwaC~rf@\ngJTai`iJ{\\dvu@]ZNSWaC~rf@\ngJU@DPdru@]ZJ\\wfC~tP\ngJU@DPdru@]ZJ\\wf}~tP\ngJU@DPdru@]ZJ\\ytTyoLG}h`\ngJU@DPdru@]ZJ]WfC~tP\ngJU@DPdru@]ZJ]YtTyoLG}h`\ngJU@DPdvt`]JN\\zJ\\`\ngJU@DPdvu@]JNP\ngJU@DPdvu@]JN\\zJ\\`\ngJU@E`drt`]ZJRwa{~tP\ngJU@E`drt`]ZJRytTyoCw}h`\ngJU@E`dru@]ZJRwaC~tP\ngJU@E`dru@]ZJRwa}~tP\ngJU@E`dru@]ZJRytTyoBG}h`\ngJU@E`dru@]ZJRytTyoC{}h`\ngJU@E`dru@]ZJSWaC~tP\ngJU@E`dru@]ZJSYtTyoBG}h`\ngJU@E`dwM@]ZVSWpvmdO{S@\ngJU@H`dlu@]FJ\\enlDa\x7FYQ@=\ngJU@H`dlu@]FJ\\fnlDa\x7FYQ@\ngJU@I`eMU@]XLdwrCmgo{R@\ngJU@LPdmS@]JJkk[Np\ngJU@LPdmS@]JJkk[OP\ngJU@LPdmS@]JJlxL\\wVv^`\ngJU@LPeMP@]HJ[yAvsl=\ngJU@LPeMP@]HJkyAvsl=\ngJU@LPeMS@]XLTwbB\ngJU@LPeMS@]XLUWbB\ngJU@LPeMU@]XLTwbB\ngJU@e`NTiMsPGVcdn]EN[pa\x7FZX\ngJUADPYRYZ`NmENksA\x7FZH\ngJUADPYR[Z`NeGH\ngJUAE`nRYZ`NmEI\\zJ\\waC~tP\ngJUAE`nRYZ`NmEIlzJ\\waC~tP\ngJUAEanRYZ`NmEI[pa\x7FZH\ngJUAEanRYZ`NmEI\\zJ\\waC~tP\ngJUDEhO@~BUMTAt`q\x7FIPh`\ngJUHEhOAJfj@zpXfoBG|eBb\ngJUHH\\@aIZf@zTTw`}~t`\ngJUHLPjAJzj@zpXioHD\ngJUIH\\@b\\dmS@]JJ[p^\x7FZP\ngJX@@dlp@]RMumgX=\ngJX@@dlp@]RMumgh\ngJX@@dlp@]RMungh=\ngJX@@dlp@]RM|N{Yv=\ngJX@@dlp@]RM|N{Yz\ngJX@@dlp@]RN\\FJ[x]wSt\ngJX@@dlp@]RN\\FN[k[OP\ngJX@@dlp@]RN\\FN[x]vst\ngJX@@dls@]FJ\\enmta@\ngJX@@dls@]FJ\\eoBD\ngJX@@dls@]FJ\\foBD\ngJX@@dls@]JJkk[OP\ngJX@@dls@]JJkk]OP\ngJX@@dlu@]FJ\\enlDa@\ngJX@@dmP@]RMumgX=\ngJX@@dmP@]RMumgh\ngJX@@dmP@]RMungh=\ngJX@@dmP@]RN\\FJ[k]OP\ngJX@@dmP@]RN\\FN[k[OP\ngJX@@dmP@]RN\\FN[x^vst\ngJX@@dmS@]FJ\\enmta@\ngJX@@dmS@]FJ\\eoBD\ngJX@@dmS@]FJ\\es`qS][iB\ngJX@@dmS@]FJ\\es`qS^DH\ngJX@@dmS@]FJ\\es`qs][iB\ngJX@@dmS@]FJ\\es`qs^DH\ngJX@@dmS@]FJ\\foBD\ngJX@@dmS@]FJ\\fs`qs][iB\ngJX@@dmS@]JJlxLTwVz]`\ngJX@@dmS@]JJlxLTwVz^`\ngJX@@dmU@]FJ\\enlDa@\ngJX@@dmU@]FJ\\erPqSfzpRD\ngJX@@dmU@]FJ]FnlDa@\ngJX@@dmUQH]FJ\\enlD~@<\ngJX@@dmUQH]FJ\\es`qS]XIB<\ngJX@@dmUQH]FJ\\es`qS]XIB>\ngJX@@dmUQH]FJ\\es`qS]XI|<\ngJX@@dmUQH]FJ\\es`qS]XI|>\ngJX@@dmUQH]FJ\\es`qs]XI|<\ngJX@@dmUQH]FJ\\es`qs]XI|>\ngJX@@dmUQH]FJ\\fnlDa@<\ngJX@@dmUQH]FJ\\fnlDa@>\ngJX@@dmUQH]FJ\\frPqSfzpRD>\ngJX@@dmUQH]FJ\\fs`qS]XIB<\ngJX@@dmUQH]FJ\\fs`qS]XIB>\ngJX@@dmUQH]FJ\\fs`qs]XIB<\ngJX@@dmUQH]FJ]EnlD~@<\ngJX@@dmUQH]FJ]EnlD~@>\ngJX@@drP`]II[h[vp\ngJX@@drP`]II[h[wP\ngJX@@drP`]II[x[vst\ngJX@@drP`]II\\xL\\wp{mgh\ngJX@@drt`]FJ\\enlD}@\ngJX@@drt`]FJ\\enmx}@\ngJX@@drt`]FJ\\eoLD\ngJX@@drt`]FJ\\eoMx\ngJX@@drt`]FJ\\es`qs]XIz\ngJX@@drt`]FJ\\es`qs_CnB^`\ngJX@@drt`]FJ\\eshis]CnB\ngJX@@drt`]FJ\\eshis]XIz\ngJX@@drt`]FJ\\eshis^XH\ngJX@@drt`]FJ\\eshis_CnB^`\ngJX@@drt`]FJ]EnawA@\ngJX@@drt`]FJ]Es`qs]XIz\ngJX@@drt`]FJ]Eshis_CnB^`\ngJX@@dru@]FJ\\enlDa@\ngJX@@dru@]FJ\\enlD~@\ngJX@@dru@]FJ\\eoawAHP\ngJX@@dru@]FJ\\eoaw^HP\ngJX@@dru@]FJ\\es`qs]XIB\ngJX@@dru@]FJ\\eshis]XIB\ngJX@@dru@]FJ\\eshis][qB\ngJX@@dru@]FJ\\eshis_CnBP`\ngJX@@dru@]FJ\\eshis_Cn|P`\ngJX@@dru@]FJ\\fnlDa@\ngJX@@dru@]FJ]EnlDa@\ngJX@@dru@]FJ]EoawAHP\ngJX@@dru@]FJ]Es`qs]XIB\ngJX@@dru@]FJ]Es`qs]XI|\ngJX@@dru@]FJ]Eshis_CnBP`\ngJX@@dru@]ZRRwpwmdH\ngJX@@dru@]ZRRwpwndH\ngJX@@dru@]ZRRytTyoao]HP\ngJX@@dsR`]FJ\\e@\ngJX@@dsR`]FJ\\es`qs^Gh\ngJX@@dsR`]FJ\\es`qs^[h\ngJX@@dsR`]FJ\\eshir\ngJX@@dsR`]FJ\\eshis][iz\ngJX@@dsR`]FJ\\eshis^Gh\ngJX@@dsR`]ZRRwPwm`\ngJX@@dsR`]ZRRwPwn`\ngJX@@dsR`]ZRRwP{m`\ngJX@@dsR`]ZRRwP{n`\ngJX@@dsR`]ZRRwpwmgh\ngJX@@dsR`]ZRRwpwngh\ngJX@@dsR`]ZRRwp{mgh\ngJX@@dsR`]ZRRytTyoaw]OP\ngJX@@dsTrH]FJ\\enlD}@>\ngJX@@dsTrH]FJ\\eoLD<\ngJX@@dsTrH]FJ\\eoLD>\ngJX@@dsTrH]FJ\\erPqSf|pP<\ngJX@@dsTrH]FJ\\erPqSf|pP>\ngJX@@dsTrH]FJ\\erPqSf|w`<\ngJX@@dsTrH]FJ\\erPqSf|w`>\ngJX@@dsTrH]FJ\\es`qs^XH<\ngJX@@dsTrH]FJ\\es`qs^XH>\ngJX@@dsTrH]FJ\\eshis]XIz<\ngJX@@dsTrH]FJ\\eshis^XH<\ngJX@@dsTrH]FJ\\eshis^XH>\ngJX@@dsTrH]FJ\\eshis^[p<\ngJX@@dsTrH]FJ]EoLD<\ngJX@@dsURH]FJ\\enlDa@<\ngJX@@dsURH]FJ\\enlDa@>\ngJX@@dsURH]FJ\\enlD~@<\ngJX@@dsURH]FJ\\enlD~@>\ngJX@@dsURH]FJ\\enmxa@<\ngJX@@dsURH]FJ\\enmxa@>\ngJX@@dsURH]FJ\\erPqSfzpRD<\ngJX@@dsURH]FJ\\erPqSfzpRD>\ngJX@@dsURH]FJ\\erPqSfzwbD<\ngJX@@dsURH]FJ\\erPqSfzwbD>\ngJX@@dsURH]FJ\\es`qs]XIB<\ngJX@@dsURH]FJ\\es`qs]XIB>\ngJX@@dsURH]FJ\\es`qs]XI|<\ngJX@@dsURH]FJ\\es`qs]XI|>\ngJX@@dsURH]FJ\\es`qs][qB<\ngJX@@dsURH]FJ\\es`qs][qB>\ngJX@@dsURH]FJ\\eshis]XIB<\ngJX@@dsURH]FJ\\eshis]XIB>\ngJX@@dsURH]FJ\\eshis]XI|<\ngJX@@dsURH]FJ\\eshis]XI|>\ngJX@@dsURH]FJ\\eshis][qB<\ngJX@@dsURH]FJ\\eshis][qB>\ngJX@@dsURH]FJ\\fnlDa@<\ngJX@@dsURH]FJ\\fnlDa@>\ngJX@@dsURH]FJ\\fnmxa@<\ngJX@@dsURH]FJ\\fnmxa@>\ngJX@@dsURH]FJ\\fs`qs]XIB<\ngJX@@dsURH]FJ\\fs`qs]XIB>\ngJX@@dsURH]FJ\\fshis]XIB<\ngJX@@dsURH]FJ\\fshis]XIB>\ngJX@@dsURH]FJ\\fshis][qB>\ngJX@@dsURH]FJ]EnlDa@<\ngJX@@dsURH]FJ]EnlDa@>\ngJX@@dsURH]FJ]ErPqSfzpRD<\ngJX@@dsURH]FJ]Es`qs]XIB<\ngJX@@dsURH]FJ]Es`qs]XIB>\ngJX@@dsURH]FJ]Es`qs]XI|<\ngJX@@dsURH]FJ]Es`qs]XI|>\ngJX@@dsURH]FJ]Eshis]XIB<\ngJX@@dsURH]FJ]Eshis]XIB>\ngJX@@dsURH]FJ]FnlDa@<\ngJX@@dsURH]FJ]FnlDa@>\ngJX@@dsURH]FJ]Fs`qs]XIB<\ngJX@@dsURH]FJ]Fs`qs]XIB>\ngJX@@dvE@]KI[x[VrD\ngJX@@dvE@]KI[x[Vsx\ngJX@@dvE@]KI[x[WRD\ngJX@@dvE@]KI[x]VrD\ngJX@@dvE@]KI\\zJ\\wpvndH\ngJX@@dvE@]KI\\zJ\\wpvngp\ngJX@@dvE@]KIkx[VrD\ngJX@@dvE@]KIkx[WRD\ngJX@@dwM@]FJ\\eneta@\ngJX@@dwM@]FJ\\eoBD\ngJX@@dwM@]FJ\\es`is]KiB\ngJX@@dwM@]FJ\\es`is^DH\ngJX@@dwM@]FJ\\eshis]KiB\ngJX@@dwM@]FJ\\eshis]Ki|\ngJX@@dwM@]FJ\\eshis^DH\ngJX@@dwM@]FJ\\eshis^Gp\ngJX@@dwM@]FJ\\fneta@\ngJX@@dwM@]ZVRwpvmdH\ngJX@@dwM@]ZVRwpvndH\ngJX@@dwM@]ZVRwpzmdH\ngJX@@dwM@]ZVRwpzndH\ngJX@@dwM@]ZVRypTyoau[HP\ngJX@@dwM@]ZVRypTyoau]HP\ngJX@@dwM@]ZVRytTyoam]HP\ngJX@@dwM@]ZVRytTyoau]HP\ngJX@@dwM@]ZVRytTyoau]O`\ngJX@@dwM@]ZVSWpvmdH\ngJX@@dwM@]ZVSWpvndH\ngJX@@dwM@]ZVSWpzmdH\ngJX@@dwM@]ZVSWpzndH\ngJX@@eMH@]HJ[k[N\x7Fv`@=\ngJX@@eMH@]HJ[k[O_v`@\ngJX@@eMH@]HJ[k]O_v`@=\ngJX@@eMH@]HJ[y]vso}h@=\ngJX@@eMH@]HJ[y]vsw}h@\ngJX@@eMH@]HJ[y]wSw}h@=\ngJX@@eMH@]HJ\\xLTwVz^\x7Fm@\ngJX@@eMH@]HJ\\xLTwr{ngo{P@\ngJX@@eMH@]HJ\\xL\\wVv^\x7Fm@\ngJX@@eMH@]HJ\\xL\\wr{mgo{P@\ngJX@@eMK@]TLTyK][iC~t@\ngJX@@eMK@]TLTyK_KnzP\x7Fm@\ngJX@@eMK@]TLTyKgAbfzWRG}h@\ngJX@@eMK@]TLTyKgAbf~W]ta\x7FZ@\ngJX@@eMK@]XLdypXioew]O_v`@\ngJX@@eMP@]HJ[yAvso}h@=\ngJX@@eMP@]HJ[yAvsw}h@\ngJX@@eMP@]HJ[yAwSt=\ngJX@@eMP@]HJ[yAwSw}h@=\ngJX@@eMP@]HJ[y^vso}h@=\ngJX@@eMP@]HJ[y^vsw}h@\ngJX@@eMP@]HJ\\xLTwrCngh\ngJX@@eMP@]HJ\\xLTwrCngo{P@\ngJX@@eMP@]HJ\\xLTwr}ngh\ngJX@@eMP@]HJ\\xL\\wrCmgo{P@\ngJX@@eMP@]HJ\\xL\\wr}mgo{P@\ngJX@@eMP@]HJkyAvso}h@=\ngJX@@eMP@]HJkyAvsw}h@\ngJX@@eMP@]HJkyAwSt=\ngJX@@eMP@]HJkyAwSw}h@=\ngJX@@eMP@]HJlxLTwrCngh\ngJX@@eMP@]HJlxLTwrCngo{P@\ngJX@@eMP@]HJlxL\\wrCmgo{P@\ngJX@@eMS@]TLTyK]HIC~t@\ngJX@@eMS@]TLTyK_HNzP\x7Fdd\\[P@\ngJX@@eMS@]TLTyK_HNzP\x7Fm@\ngJX@@eMS@]TLTyKgAbfzPRG}h@\ngJX@@eMS@]TLTyKgAbf~P]ta\x7FZ@\ngJX@@eMS@]TLTyKgAbf~Wmta\x7FZ@\ngJX@@eMS@]TLTyKgAcf~P]ta\x7FZ@\ngJX@@eMS@]TLTyM_HNzP\x7Fm@\ngJX@@eMS@]TLTyMgAbfzPRG}h@\ngJX@@eMS@]TLTyMgAbf~P]ta\x7FZ@\ngJX@@eMS@]TLUYK]HIC~t@\ngJX@@eMS@]TLUYK_HNzP\x7Fdd\\[P@\ngJX@@eMS@]TLUYK_HNzP\x7Fm@\ngJX@@eMS@]TLUYKgAbfzPRG}h@\ngJX@@eMS@]TLUYKgAbf~P]ta\x7FZ@\ngJX@@eMS@]TLUYKgAcf~P]ta\x7FZ@\ngJX@@eMS@]TLUYM_HNzP\x7Fm@\ngJX@@eMS@]TLUYMgAbf~P]ta\x7FZ@\ngJX@@eMS@]XLdwrCng_{P@\ngJX@@eMS@]XLdwrCngo{P@\ngJX@@eMS@]XLeWrCmgo{P@\ngJX@@eMS@]XLeWrCngo{P@\ngJX@@eMU@]TLTyK_HNBP`\ngJX@@eMU@]TLTyK_HNBP\x7Fdd\\[P@\ngJX@@eMU@]TLTyK_HNBP\x7Fm@\ngJX@@eMU@]TLTyK_KvBP`\ngJX@@eMU@]TLTzM_HNBP`\ngJX@@eMU@]TLTzM_HNBP\x7Fm@\ngJX@@eMU@]TLUYK_HNBP`\ngJX@@eMU@]TLUYK_HNBP\x7Fm@\ngJX@@eMU@]TLUZM_HNBP\x7Fm@\ngJX@@eMURH]TLTyK_HNB__m@<\ngJX@@eMURH]TLTyK_HNB__m@>\ngJX@@eMURH]TLTyKgAbf~P\\Da@<\ngJX@@eMURH]TLTyKgAbf~P\\Da@>\ngJX@@eMURH]TLTyKgAbf~P\\Da\x7FZ@<\ngJX@@eMURH]TLTyKgAbf~P\\Da\x7FZ@>\ngJX@@eMURH]TLTyKgAbf~WlDa@<\ngJX@@eMURH]TLTyM_HNBP`<\ngJX@@eMURH]TLTyM_HNBP`>\ngJX@@eMURH]TLTyM_HNBP\x7Fm@<\ngJX@@eMURH]TLTyM_HNBP\x7Fm@>\ngJX@@eMURH]TLTyMgAbf~P\\Da@<\ngJX@@eMURH]TLTyMgAbf~P\\Da@>\ngJX@@eMURH]TLTyMgAbf~P\\Da\x7FZ@<\ngJX@@eMURH]TLTyMgAbf~P\\Da\x7FZ@>\ngJX@@eMURH]TLTzK_HNB__m@<\ngJX@@eMURH]TLTzK_HNB__m@>\ngJX@@eMURH]TLTzKgAcf~P\\D~@<\ngJX@@eMURH]TLTzKgAcf~P\\D~@>\ngJX@@eMURH]TLTzMgAbf~P\\Da@<\ngJX@@eMURH]TLUYK_HNB__m@>\ngJX@@eMURH]TLUYKgAbf~P\\Da@<\ngJX@@eMURH]TLUYKgAbf~P\\Da@>\ngJX@@eMURH]TLUYKgAbf~P\\Da\x7FZ@<\ngJX@@eMURH]TLUYKgAbf~P\\Da\x7FZ@>\ngJX@@eMURH]TLUYM_HNBP\x7Fm@<\ngJX@@eMURH]TLUYM_HNBP\x7Fm@>\ngJX@@eMURH]TLUYMgAbf~P\\Da\x7FZ@<\ngJX@@eMURH]TLUYMgAbf~P\\Da\x7FZ@>\ngJX@@eMURH]TLUZK_HNB__m@<\ngJX@@eMURH]TLUZK_HNB__m@>\ngJX@@eST`]TLTyK]HNC~t@=\ngJX@@eST`]TLTyK_HNB^\x7Fm@=\ngJX@@eST`]TLTyKgASfzP]{}h@\ngJX@@eST`]TLTyKgASf~P]x}\x7FZ@\ngJX@@eST`]TLTyKgAcfzP\\G}h@\ngJX@@eST`]TLTyKgAcf~P\\D}\x7FZ@\ngJX@@eST`]TLTzK]HNC~t@\ngJX@@eST`]TLTzK_HNB^\x7Fm@\ngJX@@eST`]TLTzKgASf~P\\D}\x7FZ@\ngJX@@eST`]TLTzKgAcfzP\\G}h@\ngJX@@eST`]TLTzKgAcf~P\\D}\x7FZ@\ngJX@@eST`]XTRwRwn\x7Fm@\ngJX@@eST`]XTRwR{n\x7Fm@=\ngJX@@eSU@]TLTyK_HNBP`\ngJX@@eSU@]TLTyK_HNBP\x7FdhT[P@=\ngJX@@eSU@]TLTyK_HNBP\x7Fm@=\ngJX@@eSU@]TLTyK_HNB_@\ngJX@@eSU@]TLTyK_HNB__m@=\ngJX@@eSU@]TLTyK_HN|P\x7Fm@\ngJX@@eSU@]TLTyKdabgM|`xIB\ngJX@@eSU@]TLTyKdabgM|`xIC~t@=\ngJX@@eSU@]TLTyKdabgM|`xI|\ngJX@@eSU@]TLTyKgASf~P]xa\x7FZ@\ngJX@@eSU@]TLTyKgAcf~P\\Da\x7FZ@\ngJX@@eSU@]TLTyKgAcf~P\\D~\x7FZ@\ngJX@@eSU@]TLTyKgAcf~P]xa\x7FZ@\ngJX@@eSU@]TLTyM_HNBP`\ngJX@@eSU@]TLTyM_HNBP\x7FdhT[P@=\ngJX@@eSU@]TLTyM_HNBP\x7Fm@=\ngJX@@eSU@]TLTyM_HN|P\x7Fm@\ngJX@@eSU@]TLTyMgASf~P]xa\x7FZ@\ngJX@@eSU@]TLTyMgAcf~P\\Da\x7FZ@\ngJX@@eSU@]TLTzK_HNBP\x7Fm@\ngJX@@eSU@]TLTzKgASf~P\\Da\x7FZ@\ngJX@@eSU@]TLTzKgAcf~P\\Da\x7FZ@\ngJX@@eSU@]TLTzKgAcf~P\\D~\x7FZ@\ngJX@@eSU@]TLTzM_HNBP\x7Fm@\ngJX@@eSU@]TLTzMgASf~P\\Da\x7FZ@\ngJX@@eSU@]TLTzMgAcf~P\\Da\x7FZ@\ngJX@@eSU@]TLUZK_HNBP`\ngJX@@eSU@]TLUZK_HNBP\x7Fm@=\ngJX@@eSU@]TLUZM_HNBP\x7Fm@=\ngJX@@eSU@]XTRwrwmdO{P@=\ngJX@@eSU@]XTRwrwmgw{P@=\ngJX@@eSU@]XTRwrwndO{P@\ngJX@@eSU@]XTRwrwngw{P@\ngJX@@eSU@]XTRwr{ndO{P@=\ngJX@@eSU@]XTRypTyoeo]H_v`@\ngJX@@eSU@]XTRypXyoew]H_v`@\ngJX@@eSU@]XTSWrwmdO{P@=\ngJX@@eSU@]XTSWrwndO{P@\ngJX@@eSU@]XTSWr{ndO{P@=\ngJX@@eSU@]XTSYpXyoew]H_v`@\ngJX@@eSUPH]TLTyK_HN|P`<\ngJX@@eSUPH]TLTyK_HN|P`>\ngJX@@eSUPH]TLTyKgASf~P]xa@<\ngJX@@eSUPH]TLTyKgASf~P]xa@>\ngJX@@eSUPH]TLTyKgAcf~P\\Da@<\ngJX@@eSUPH]TLTyKgAcf~P\\Da@>\ngJX@@eSUPH]TLTyKgAcf~P\\D~@<\ngJX@@eSUPH]TLTyKgAcf~P\\D~@>\ngJX@@eSUPH]TLTyKgAcf~P]xa@<\ngJX@@eSUPH]TLTyKgAcf~P]xa@>\ngJX@@eSUPH]TLTyM_HN|P`<\ngJX@@eSUPH]TLTyM_HN|P`>\ngJX@@eSUPH]TLTyMgAcf~P\\Da@<\ngJX@@eSUPH]TLTyMgAcf~P\\Da@>\ngJX@@eSUPH]TLTzK_HNBP`<\ngJX@@eSUPH]TLTzK_HNBP`>\ngJX@@eSUPH]TLTzKdabgM|`xIB<\ngJX@@eSUPH]TLTzKgASf~P\\Da@<\ngJX@@eSUPH]TLTzKgASf~P\\Da@>\ngJX@@eSUPH]TLTzKgAcf~P\\Da@<\ngJX@@eSUPH]TLTzKgAcf~P\\Da@>\ngJX@@eSUPH]TLTzM_HNBP`<\ngJX@@eSUPH]TLTzM_HNBP`>\ngJX@@eSUPH]TLTzMgAcf~P\\Da@<\ngJX@@eSUPH]TLTzMgAcf~P\\Da@>\ngJX@@eSUPH]TLUYK_HN|P`<\ngJX@@eSUPH]TLUYK_HN|P`>\ngJX@@eSUPH]TLUYM_HN|P`<\ngJX@@eSUPH]TLUYM_HN|P`>\ngJX@@e\\u@]TLTyK]XIC~t@\ngJX@@e\\u@]TLTyK_SnBP\x7Fm@\ngJX@@e\\u@]TLTzM]XIC~t@\ngJX@@e\\uQH]TLTyK]XI}~t@>\ngJX@@e\\uQH]TLTyKgAbf~g\\Da\x7FZ@<\ngJX@@e\\uQH]TLTyKgAbf~g\\Da\x7FZ@>\ngJX@@e\\uQH]TLTyM]XIC~t@<\ngJX@@e\\uQH]TLTyM]XIC~t@>\ngJX@@e\\uQH]TLTyMgAbf~g\\Da\x7FZ@<\ngJX@@e\\uQH]TLTyMgAbf~g\\Da\x7FZ@>\ngJXA@IRVX@NiFzvst\ngJXA@IRVX@NiGNCGM|N{Yz\ngJXA@IRVh@NiFzvsl=\ngJXA@IRVh@NiFzvst\ngJXA@IRVh@NiFzwSt=\ngJXA@IRVh@NiF~Gml{@=\ngJXA@IRVh@NiF~Gml}@\ngJXA@IRVh@NiF~Gmt}@=\ngJXA@IRVh@NiGNCEMungh\ngJXA@IRVh@NiGNCEM|O[iz\ngJXA@IRVh@NiGNCGMumgh\ngJXA@IRVi`NcENRwaB\ngJXA@IRVi`NcENRypXynmta@\ngJXA@IRVi`NcENRypXyoBD\ngJXA@IRVj`NcENRwVBP`\ngJXA@IRVjhdNcENRypXinlDa@<\ngJXA@IRVjhdNcENRypXinlDa@>\ngJXA@IRVjhdNcENRypXioa{AHP<\ngJXA@IRVjhdNcENSWVBP`>\ngJXA@IRVjhdNcENSYpXinlDa@<\ngJXA@IRYHPNddmtN{X\ngJXA@IRYZPNcENRwP{o@\ngJXA@IRYZPNcENRwVB^`\ngJXA@IRYZPNcENRwp{`gh\ngJXA@IRYZPNcENRypXyoawAOP\ngJXA@IRYZPNcENRytTyoawAOP\ngJXA@IRYjiDNcENRwVBP`<\ngJXA@IRYjiDNcENRwVBP`>\ngJXA@IRYjiDNcENRwVB_@<\ngJXA@IRYjiDNcENRwVB_@>\ngJXA@IRYjiDNcENRyHXis]XIB>\ngJXA@IRYjiDNcENRyHXis][qB<\ngJXA@IRYjiDNcENRyHXis_CvBP`<\ngJXA@IRYjiDNcENRyHXis_CvBP`>\ngJXA@IRYjiDNcENRypXynlDa@<\ngJXA@IRYjiDNcENRypXynlDa@>\ngJXA@IRYjiDNcENRytTynlDa@<\ngJXA@IRYjiDNcENRytTynlDa@>\ngJXA@IRYjiDNcENSWVBP`<\ngJXA@IRYjiDNcENSWVBP`>\ngJXA@IRYjiDNcENSYpXynlDa@<\ngJXA@IRYjiDNcENSYtTynlDa@>\ngJXA@IRYjiDNcENbwVBP`>\ngJXA@IRYjiDNcENbypXynlDa@<\ngJXA@IRYjiDNcENbypXynlDa@>\ngJXA@IR[B`Nedm|MkYB\ngJXA@IR[B`Nedm|MkiB\ngJXA@IRfd@NdEMumg_{P@=\ngJXA@IRfd@NdEMumgo{P@\ngJXA@IRfd@NdEM|n{Yw~t@=\ngJXA@IRfd@NdEM|n{Y{~t@\ngJXA@IRfd@NdEM|n{i{~t@=\ngJXA@IRfd@NdEN\\FN[y]vsw}h@\ngJXA@IRfe`NjFJ\\es`qS]KiC~t@\ngJXA@IRfh@NdEM|`{Yv=\ngJXA@IRfj`NjFJ\\eodGAHP\ngJXA@IRfjiDNjFJ\\es`qS_HNBP`<\ngJXA@IRfjiDNjFJ\\es`qS_HNBP`>\ngJXA@IRfjiDNjFJ\\fodGAHP<\ngJXA@IRfjiDNjFJ\\fodGAHP>\ngJXA@IRij`NjFJ\\eodGAHP\ngJXA@IRij`NjFJ\\eodGAO`\ngJXA@IRij`NjFJ\\erPqSf~P\\Da@\ngJXA@IRij`NjFJ\\erPqSf~P\\D~@\ngJXA@IRij`NjFJ\\fodGAHP\ngJXA@IRijhDNjFJ\\es`qs_HNBP`<\ngJXA@IRijhDNjFJ\\es`qs_HNBP`>\ngJXA@IRijhDNjFJ\\fs`qs_HNBP`<\ngJXA@IRijhDNjFJ\\fs`qs_HNBP`>\ngJXA@IRkZ`NjFJ\\enlDa\x7FZ@\ngJXA@IRkZ`NjFJ\\eoiwAH_v`@\ngJXA@IRkZ`NjFJ\\es`qs]XIC~t@\ngJXA@IRkZ`NjFJ\\es`qs_SnBP\x7Fm@\ngJXA@IRkZ`NjFJ\\eshis]XIC~t@\ngJXA@IRkZ`NjFJ\\eshis_SnBP\x7Fm@\ngJXA@IRkZ`NjFJ\\fnlDa\x7FZ@\ngJXA@IRkZ`NjFJ\\foiwAH_v`@\ngJXA@IRkZ`NjFJ]EoiwAH_v`@\ngJXA@IRkZ`NjFJ]Es`qs]XIC~t@\ngJXA@IRkZ`NlII[z[vrG}h@\ngJXA@IRkZ`NlII[z[wRG}h@\ngJXA@IRkZ`NlII[z]vrG}h@\ngJXA@IRkZ`NlII[z]wRG}h@\ngJXA@IRkZ`NlIIkz[vrG}h@\ngJXA@IRkZ`NlIIkz[wRG}h@\ngJXA@IRkZ`NlIIkz]vrG}h@\ngJXA@IRkZ`NlIIkz]wRG}h@\ngJXA@IRnZ`NjFJ\\eoiwAH_v`@\ngJXA@IRnZhdNjFJ\\fs`qS_SnBP\x7Fm@<\ngJXA@IRnZhdNjFJ\\fs`qS_SnBP\x7Fm@>\ngJXA@IrRDJ@zVRwtvmdO{P@=\ngJXA@IrRDJ@zVRwtvndO{P@\ngJXA@IrRDJ@zVRwtzndO{P@=\ngJXA@IrRDJ@zVRypTyoiu]H_v`@\ngJXA@IrRDJ@zVRytTyoim]H_v`@\ngJXA@IrRDJ@zVSWtvmdO{P@=\ngJXA@IrRDJ@zVSWtvndO{P@\ngJXA@NRfh@NdEM|`{Yw~t@=\ngJXA@NRfi`NjFJles`qS_HNzP\x7Fm@\ngJXAAnR[f`NmKIkx[WRD\ngJXDB@cABTuRAu`qS^HH\ngJXDB@cABTuRAu`rS_HNv]`\ngJXDD@bABUuTAtPirVzpRG}h`=\ngJXDHOA^BS]TAuhyK^DH\ngJXDHOA^BS]TAuhyK_Cr|P\x7FmH=\ngJXDL@aABSKTAuhiK^DH\ngJXDL@aABS[TAuhyK^DO{S@\ngJXDL@bABUu@Au@wVv]`\ngJXH@jAJZ`@z`[k[N\x7Fv`@=\ngJXH@jAJZ`@z`[k]OP=\ngJXH@jAJZ`@z`\\xLTwVz^`\ngJXH@jAJZ`@z`\\xL\\wVv^\x7Fm@\ngJXH@jAJzj@zhYIr[NCEM}@xIC~t@>\ngJXH@jAJzj@zhYIt[NCEM}@xIB>\ngJXH@jAJzj@zhYIt[NCEM}@xIC~t@>\ngJXHAJAIfi@zLTyKgAcf|pP>\ngJXHAJAIfi@zLTzKgAcf|pP>\ngJXHAjAJfi@zHXiKgASf|P_v`@\ngJXHAjAJfi@zHXiKgAcfzPSw}h@\ngJXHAjAJfi@zHXiKgAcf|P_v`@\ngJXHAjAJfi@zHXjK]HI{~t@\ngJXHAjAJfj@zHXiKgAcf~P]xa\x7FZ@\ngJXHAjAJfj`PzHXjK]HIB<\ngJXHAjAJfj`PzHXjK]HIB>\ngJXHB@aIfe@zTdwPwm`\ngJXHB@aInZ@zTlwPvm`\ngJXHB@aInZ@zTlwPvn`\ngJXHB@aInZ@zTlytTynam]@\ngJXHBOAJfj@zHXis]HNB\ngJXHBOAJfj@zHXisdabgMt`xH\ngJXHBOAJfj@zHXju]HNB\ngJXHBOAJfj`PzHXiu]HNB<\ngJXHBOAJfj`PzHXiu]HNB>\ngJXHD@aIZjbPzLTyKgAbfzpRD<\ngJXHD@aIZjbPzLTyKgAbfzpRD>\ngJXHD@aIej@zLTyK]XIC~tP\ngJXHD@aIej@zLTyKgQSfzpRG}h`\ngJXHD@aIej@zLTyM]XIC~tP\ngJXHD@aIej@zLTyMgQSfzpRG}h`\ngJXHD@aIej@zLTzK]XIC~tP\ngJXHD@aIej@zLTzKgQSfzpRG}h`\ngJXHD@aIej@zLTzM]XIC~tP\ngJXHD@aIfe@ztdenao]\x7FZH\ngJXHD@aIfe@ztdeshis_C^z^\x7FmD\ngJXHD@aIff@zLTyK][iC~tP\ngJXHD@aIff@zLTyM][iC~tP\ngJXHD@aIff@ztdeoao]H_vb@\ngJXHD@aIff@ztdfoao]H_vb@\ngJXHD@aIff@ztdfshis_C^zP\x7FmD\ngJXHD@aImi@zt\\eshir\ngJXHD@aImj@zt\\eshis^DH\ngJXHD@aInZ@ztleoam[HP\ngJXHD@aInZ@ztlfoam[HP\ngJXHDHaIfe@zLTyKgQSf|O_vb@\ngJXHDOAIZj@zLTyK]XIB\ngJXHDOAIZj@zLTyK_CvBP`\ngJXHDOAIZj@zLTyKdabgMu`dH\ngJXHDOAIZj@zLTyKdabgM|OXIB\ngJXHDOAIZj@zLTyM]XIC~tP\ngJXHDOAIfjdPzLTzM_CvBP\x7FmD>\ngJXHH@aIYj@zLTyK]XIC~t`\ngJXHH@aIZ`@zd[x^vso}i@=\ngJXHH@aIZ`@zd[x^vsw}i@\ngJXHH@aIZ`@zd[x^wSw}i@=\ngJXHH@aIZ`@zd\\xL\\wp}mgo{R@\ngJXHH@aIZf@zLTyK_CvzP\x7FmH\ngJXHH@aIZf@zLTyKgAbf~Gmta\x7FZP\ngJXHH@aIZf@zTUWp}ngo{R@\ngJXHH@aIZj@zLTyK]XIC~t`\ngJXHH@aIZj@zLTyK_CvBP\x7FmH\ngJXHH@aIZj@zLTzM]XIC~t`\ngJXHH@aIZj@zLTzM_CvBP\x7FmH\ngJXHH@aIZjbPzLTyK]XI}~t`<\ngJXHH@aIZjbPzLTyK]XI}~t`>\ngJXHH@aIZjbPzLTyK_CvB__mH<\ngJXHH@aIZjbPzLTyK_CvB__mH>\ngJXHH@aIZjbPzLTyKgAbf~GlDa\x7FZP<\ngJXHH@aIZjbPzLTyKgAbf~GlDa\x7FZP>\ngJXHH@aIZjbPzLTyM]XIC~t`<\ngJXHH@aIZjbPzLTyM]XIC~t`>\ngJXHH@aIZjbPzLTyM_CvBP\x7FmH<\ngJXHH@aIZjbPzLTyM_CvBP\x7FmH>\ngJXHH@aIZjbPzLTzK]XI}~t`<\ngJXHH@aIZjbPzLTzK_CvB__mH<\ngJXHH@aIZjbPzLTzK_CvB__mH>\ngJXHH@aIfi@zLTyK_CvB^\x7FmH\ngJXHH@aIfi@zLTyKgQSfzGlG}i@\ngJXHH@aIfi@zLTyKgQSf~GlD}\x7FZP\ngJXHH@aIfj@zLTyK_CvBP\x7FmH\ngJXHH@aIfj@zLTyKgAcf~GlDa\x7FZP\ngJXHH@aIfj@zLTyKgQSf~GlDa\x7FZP\ngJXHH@aIfj@zLTyKgQSf~GlD~\x7FZP\ngJXHH@aIfj@zLTyKgQSf~Gmxa\x7FZP\ngJXHH@aIfj@zLTyM_CvBP\x7FmH\ngJXHH@aIfj@zLTyMgQSf~GlDa\x7FZP\ngJXHH@aIfj@zLTzK_CvBP\x7FmH\ngJXHH@aIfj@zLTzKgQSf~GlDa\x7FZP\ngJXHH@aIfj@zLTzKgQSf~GlD~\x7FZP\ngJXHH@aIfj@zLTzM_CvBP\x7FmH\ngJXHH@aJz`@z`[k[OP\ngJXHH@aJz`@z`\\xL\\wVv^`\ngJXHHGAIZ`@zd[x^vsw}i@\ngJXHHGAIZ`@zd[x^wSt=\ngJXHHGAIfj@zLTyKgQSf~GlDa\x7FZP\ngJXHHGAIfjdPzLTzK_CvB_@<\ngJXHHGAIfjdPzLTzK_CvB_@>\ngJXHHOAIY`@zd[k[N\x7Fvd@=\ngJXHHOAIY`@zd[k[O_vd@\ngJXHHOAIY`@zd[k]O_vd@=\ngJXHHOAIZ`@zd[k[O_vd@\ngJXHHOAIZ`@zd[x^vso}i@=\ngJXHHOAIZ`@zd[x^vsw}i@\ngJXHHOAIZ`@zd[x^wSw}i@=\ngJXHHOAIZ`@zd\\xL\\wp}mgo{R@\ngJXHHOAIZj@zLTyK_CvBP\x7FmH\ngJXHHOAIZjbPzLTyM_CvBP\x7FmH<\ngJXHHOAIZjbPzLTyM_CvBP\x7FmH>\ngJXHHOAIfj@zLTyK_CvBP\x7FmH\ngJXHHOAIfj@zLTyKgAcf~GlDa\x7FZP\ngJXHHOAIfj@zLTyKgAcf~GlD~\x7FZP\ngJXHHOAIfj@zLTyKgQSf~GlDa\x7FZP\ngJXHHOAIfj@zLTyM_CvBP\x7FmH\ngJXHHOAIfj@zLTyMgAcf~GlDa\x7FZP\ngJXHHOAIfj@zLTzK]XIC~t`\ngJXHHOAIfjdPzLTyK]XIB<\ngJXHHOAIfjdPzLTyK]XIB>\ngJXHHOAIfjdPzLTyK_CvBP`>\ngJXHHOAJfj@zhXjtZ~P\\Da\x7FZP\ngJXHL@aIZ`@zd[k[Np\ngJXHL@aIZ`@zd[k[OP\ngJXHL@aIZf@ztTfs`qS^DH\ngJXHL@aIZf@ztTfs`qs_CvzP`\ngJXHL@aIZjb`ztTeoBD<\ngJXHL@aIZjb`ztTeoBD>\ngJXHL@aJZ`@zPTwrCmgX\ngJXHL@aJZ`@zPTwrCmgh\ngJXHL@aJZ`@zPTwrCngX\ngJXHL@aJZ`@zPTypXyodG[OP\ngJXHL@aJZ`@zPUWrCmgX\ngJXHL@aJZ`@zPUWrCmgh\ngJXHL@aJZ`@zPUYpXyodG[OP\ngJXHL@aJZf@zHXiK]HIB\ngJXHL@aJZf@zpYIodG[OP\ngJXHL@aJZf@zpYIs`qs_HNv^`\ngJXHL@aJZi@zHXiK]HIz\ngJXHL@aJZi@zHXjK]HIz\ngJXHL@aJZi@zpYIodG[OP\ngJXHL@aJZjdPzHXjMgAbfzPRD<\ngJXHL@aJZjdPzHXjMgAbfzPRD>\ngJXHLDQJZ`@zPTwrCmgX\ngJXHLJqIZjb`ztTeoBD<\ngJXHLLQIZ`@zd[k[OP\ngJXHLLQIZ`@zd[k]OP\ngJXHLLQIZjb`ztTeoBD<\ngJXHLOAIZ`@zd[x^vsl\ngJXHLOAIZi@zTUWp}mgX\ngJXHaj@SnRkZ`NbFJRwV|P\x7Fm@\ngJXIB@`rdwM@]JV[h[Vp\ngJXID@aRdwL`]ZVRwPvn`\ngJXIDOARdmU@]FJ\\eoa{AHP\ngJXIH@b\\dmP@]RM|O[Yw~t`=\ngJXIHOBRdlp@]RMungo{R@=\ngJXIHOBRdlu@]FJ\\enlDa\x7FZP\ngJXIHOBRdru@]FJ\\enlDa\x7FZP\ngJXIL@cRdmP@]RMumgX\ngJXIL@cRdmUQP]ZJRwaB<\ngJXIL@cRdmUQP]ZJRwaB>\ngJXLB@bAFBDkjdCiAU][Yv\ngJXLL@aAABDfVhCiQR\ngJX`BDdru@]ZJ\\wfB\ngJX`BDdru@]ZJ\\wf|\ngJX`BDdru@]ZJ]WfB\ngJX`BDdvu@]JNP\ngJX`BDdwU@]JNP\ngJX`BLeMT`]XLTwbB\ngJX`DBdru@]ZJ\\wfC~tP\ngJX`DBdru@]ZJ\\wf}~tP\ngJX`DBdru@]ZJ]WfC~tP\ngJX`DBdvu@]JNP\ngJX`DBdvu@]JN\\zJ\\`\ngJX`DBdwM@]JV[h[Vp\ngJX`LDdru@]ZJRwaB\ngJX`LDdru@]ZJRwa|\ngJX`LDdru@]ZJRytTyoBD\ngJX`LDdru@]ZJRytTyoCx\ngJX`LDdru@]ZJSWaB\ngJX`LDdru@]ZJSYtTyoBD\ngJX`LDdvt`]ZNRwa{~tp\ngJX`LDdvu@]ZNRwaC~tp\ngJX`LDdvu@]ZNRwa}~tp\ngJX`LDdvu@]ZNRytTyoBG}i`\ngJX`LDdvu@]ZNRytTyoC{}i`\ngJX`LDdvu@]ZNSWaC~tp\ngJX`LDdvu@]ZNSYtTyoBG}i`\ngJX`bDnLiMmPGRcd\ngJX`bDnLiMmPGRcf|O`\ngJX`hEIWIMmHGVcdmx^\x7FmH\ngJX`hEIWIMmHGVcdo{R@\ngJX`hEIWIMmPGVcdmxP\x7FmH\ngJX`hEIWIMmPGVcdmx__mH\ngJXaBDYR[Z`NeGH\ngJXaBDYR[Z`NeGMx_@\ngJXaBDnR[Z`NeGH\ngJXaLDnR[Z`NmGI[pa\x7FZX\ngJXhMDOAJfj`PzpXfoBD<\ngJXhMDOAJfj`PzpXfoBD>\ngJXhMDOAJfj`PzpXfs`qs^DH<\ngJXhMDOAJfj`PzpXfs`qs^DH>\ngJY@BDfVhCkQSf|pP\ngJY@BDfVhCkQSj|pP\ngJY@BDfZTCiRS]C^v\ngJY@BDfZjQCkQSf|pP<\ngJY@BDfZjQCkQSf|pP>\ngJY@BDfZjQCkQSgNCGMy``<\ngJY@BDfZjQCkQSgNCGMy``>\ngJY@BDfZjQCkQSgNbgMy``<\ngJY@BDfZjQCkQSgNbgMy``>\ngJY@BDfZjQCkQSj|pP<\ngJY@BDfZjQCkQSj|pP>\ngJY@BDfZjQCkQSkNCGMy``>\ngJY@BDfyhCiRs]CZv\ngJY@DDefhChqSdmu`dO{Q@=\ngJY@DDefhChqSduu`dO{Q@\ngJY@DDejhChqSdmu`dO{Q@=\ngJY@DDejhChqSdn\\FN[kAOovb@\ngJY@DDejhChqSduu`dO{Q@\ngJY@DDejhChqSdv\\FJ[kAH_vb@\ngJY@DDejhCiQU][Y{~tP\ngJY@DDejjIChqSdn\\FJ[kAHP<\ngJY@DDejjIChqSdn\\FJ[kAHP>\ngJY@DDfVdChqSdn]EN[kAO_vb@\ngJY@DDfVdChqShmu`go{Q@\ngJY@DDfVdChqShn]EN[kAO_vb@\ngJY@DDfVhChqSdmu`dO{Q@\ngJY@DDfVhChqSdmu`gw{Q@\ngJY@DDfVhChqSdmuoDO{Q@\ngJY@DDfVhChqSdmuoGw{Q@\ngJY@DDfVhChqSdn]EN[kAH_vb@\ngJY@DDfVhChqSdn]EN[kAOovb@\ngJY@DDfVhChqSdn]EN[k^H_vb@\ngJY@DDfVhChqSdn]EN[k^Oovb@\ngJY@DDfVhChqSduu`dO{Q@\ngJY@DDfVhChqSduuoDO{Q@\ngJY@DDfVhChqSdv]EN[kAH_vb@\ngJY@DDfVhChqSdv]EN[k^H_vb@\ngJY@DDfVhChqShmu`dO{Q@\ngJY@DDfVhChqShmu`gw{Q@\ngJY@DDfVhChqShn]EN[kAH_vb@\ngJY@DDfVhChqShn]EN[kAOovb@\ngJY@DDfVhChqShuu`dO{Q@\ngJY@DDfVhChqShv]EN[kAH_vb@\ngJY@DDfZTCkRRVzF}w}h`\ngJY@DDfZXChqSdmundO{Q@\ngJY@DDfZXChqSduundO{Q@\ngJY@DDfZjQChqSdmu`dO{Q@<\ngJY@DDfZjQChqSdmu`dO{Q@>\ngJY@DDfZjQChqSdn]EN[k^H_vb@<\ngJY@DDfZjQChqSduu`dO{Q@<\ngJY@DDfZjQChqShuu`dO{Q@<\ngJY@DDfZjQChqShuu`dO{Q@>\ngJY@DDfvdCkQrT\ngJY@DDfvdCkQrV|OP\ngJY@DDfvdCkQrWNbgH\ngJY@DDfvdCkQrWNbgMx^`\ngJY@DDfvhCkQrV|HP\ngJY@DDfvhCkQrV|O`\ngJY@DDfvhCkQrWNbgMxP`\ngJY@DDfvhCkQrWNbgMx_@\ngJY@DDfvhCkQrZ|HP\ngJY@DDfvhCkQr[NbgMxP`\ngJY@DDfydCkRrVzFul\ngJY@DDfyhCkRrV~Fula@\ngJY@DDfyhCkRrZ~Fula@\ngJY@DDfzjQCkQrWNBgMxP`<\ngJY@DDfzjQCkQrWNBgMxP`>\ngJY@DDfzjQCkQrWNbgMxP`<\ngJY@DDfzjQCkQrWNbgMxP`>\ngJY@HDef@CjQnmt}\x7FZP=\ngJY@HDfZjQChqSdn]EN[kAHP<\ngJY@HDfZjQChqSdn]EN[kAHP>\ngJY@HDfZjQChqSduu`dH<\ngJY@HDfZjQChqSduu`dH>\ngJY@HDfZjQChqShn\\FN[kAHP<\ngJY@HDijhCjabgI[yApRD\ngJY@HDijhCjabgI[yApRG}i@=\ngJY@HDijhCjabgI[yApS{}i@\ngJY@HDijhCjabgI[yAwcx\ngJY@HDijhCjabgI\\xLTwrC`dO{R@\ngJY@HDijhCjabgIkyApRG}i@\ngJY@HDijjQCjabgI[yApSx<\ngJY@HDijjQCjabgI[yApSx>\ngJY@HDijjQCjabgI\\xLTwrC`dH<\ngJY@HDijjQCjabgI\\xLTwrC`dH>\ngJY@HDijjQCjabgIlxLTwrC`dH<\ngJY@HDijjQCjabgIlxLTwrC`dH>\ngJY@HDkjhChaSdmu`dH\ngJY@HDkjhChaSdnRFJ\\wVBP`\ngJY@HDkjjIChaSdn\\FJ[kAHP<\ngJY@HDkjjIChaSdn\\FJ[kAHP>\ngJY@HDkjjIChaSduu`dH<\ngJY@HDkjjIChaSduu`dH>\ngJY@HDkjjIChaSdv\\FJ[kAHP<\ngJY@HDkjjIChaSdv\\FJ[kAHP>\ngJY@LDef@CjQnml{@\ngJY@LDefdCiQU][Yv\ngJY@LDefdCiQU][Yz\ngJY@LDefdCiQU][iv\ngJY@LDefdCiQU][iz\ngJY@LDej@CjQnml{@\ngJY@LDejXCkQRV|HP\ngJY@LDejdCiQU][Yv\ngJY@LDejdCiQU][Yz\ngJY@LDejdCiQU][iz\ngJY@LDejdCiQUgAbfzwSl\ngJY@LDejjJCkQRV|HP<\ngJY@LDejjJCkQRV|HP>\ngJY@LDejjJCkQRWNCEMxP`<\ngJY@LDejjJCkQRWNCEMxP`>\ngJY@LDejjJCkQRWNCGMxP`<\ngJY@LDejjJCkQRWNCGMxP`>\ngJY@LDejjJCkQRZ|HP<\ngJY@LDejjJCkQRZ|HP>\ngJY@LDejjJCkQR[NCEMxP`<\ngJY@LDejjJCkQR[NCEMxP`>\ngJY@LDij@CiAS_HNv]`\ngJY@LDij@CiAS_HNv^`\ngJY@LDij@CiASgAcf~P]l}@\ngJY@LDij@CiAU_HNv]`\ngJY@LDij@CiAU_HNv^`\ngJY@LDij@CiAUgAcf~P]l}@\ngJY@LDijXChabdmt`dH\ngJY@LDijXChabdmt`gp\ngJY@LDijXChabdn\\FJ[iAHP\ngJY@LDijXChabdut`dH\ngJY@LDijXChabdv\\FJ[iAHP\ngJY@LDijXChabdv\\FN[yAwRD\ngJY@LDijXChabhn\\FN[yAwRD\ngJY@LDijXCkAdf~P]l}@\ngJY@LDijXCkAdgNCGM|`{Yz\ngJY@LDijXCkAdj~P]l}@\ngJY@LDijdChabdmx``\ngJY@LDijdChabdn\\FN[iAOP\ngJY@LDijdChabdn\\FN[i^OP\ngJY@LDijdChabhn\\FN[iAOP\ngJY@LDijdCkAdf~P]t{@\ngJY@LDijdCkAdf~P]t}@\ngJY@LDijdCkAdgNCGM|`{Yz\ngJY@LDijdCkAdgNCGM|`{iz\ngJY@LDijdCkAdj~P]t}@\ngJY@LDijjQChabdmt`dH<\ngJY@LDijjQChabdmt`dH>\ngJY@LDijjQChabdn\\FJ[iAHP<\ngJY@LDijjQChabdn\\FJ[iAHP>\ngJY@LDijjQChabdn\\FN[iAHP<\ngJY@LDijjQChabdn\\FN[iAHP>\ngJY@LDijjQChabdut`dH<\ngJY@LDijjQChabdut`dH>\ngJY@LDijjQChabdv\\FJ[iAHP<\ngJY@LDijjQChabdv\\FJ[iAHP>\ngJY@LDijjQChabhv\\FJ[iAHP<\ngJY@LDijjQChabhv\\FJ[iAHP>\ngJY@dAreInZ@zt\\eshis^DH\ngJYABCJSKTAuhiu^XH\ngJYABCJSMUHauhis]XI|<\ngJYABCJSMUHauhis^XH<\ngJYABCJSMUHauhis^XH>\ngJYABCJSMUHauhiu^XH<\ngJYABCJSMUHauhiu^XH>\ngJYABCJS\\tAtiYnam[@\ngJYADArSMLAtXirWNbgMxP\x7FmD\ngJYADEJS[RAuhyKgQSf|OP\ngJYALMJRuUEAuhiK^DH<\ngJYALMJRuUEAuhiK^DH>\ngJYALMJTu@At`iodG[Np\ngJYDC`DPHRni`NdEH\ngJYHC`DIKTpGRbd\ngJYHC`DIKTpGRbgNCGH\ngJYHC`DISTpGVCEUx``\ngJYHC`DISUHGVCIM|`{Yv\ngJYHC`VIKTpGRbf|G`\ngJYHCaDIKTpGRbd\ngJYHCaxIKTpGRbf|G`\ngJYHDPDIMsPGRefzFul\ngJYHE@DIUmLBGQBgI[k^O_vb@<\ngJYHE@DIUmTBGQBgI[k^H_vb@<\ngJYHE@DIUmTBGQBgI[k^H_vb@>\ngJYHE@DIUmTBGQBgI[k^Oovb@<\ngJYHE@DIUmTBGQBgI[k^Oovb@>\ngJYHE@DIUmTBGQBgQ[kAH_vb@>\ngJYHI`DIKTpGVbdmtODO{R@\ngJYHI`DIKTpGVbdutODO{R@\ngJYHIaxIKTpGVbdmtOGw{R@\ngJYHIaxIKTpGVbdutODO{R@\ngJYHLEPISTpGVCDv\\FJ[i^HP\ngJYHL`DILmPGVbdmxP`\ngJYHL`DILmPGVbduxP`\ngJYHL`DILtpGVbdmxP`\ngJYHL`DILtpGVddm|M{YB\ngJYHL`DIMmPGVcdmxP\x7FmL\ngJYHL`DIMmPGVcduxP\x7FmL\ngJYHM@DIKT@GTc_Cvv^`\ngJYHlEPKmJTuLAu`qMgAbf~Wmta@\ngJY`BEdfVhCiQR\ngJY`LDTfvhCiQs~tp\ngJY`hEiNyIej@ztTeoBG}i@\ngJYieLPxAeIyIZf@zTT\x7FmD\ngJ\\@@bdrQ@]QMtM{_{Q@\ngJ\\@@bdrQ@]QMtM{o{Q@\ngJ\\@@bdru@]JR[h[w_vb@\ngJ\\@@bdru@]ZJ]YpXyoLG}h`\ngJ\\@@bdru@]ZJ]YtTynawA\x7FZH\ngJ\\@@bdvt`]JV[h[Vp\ngJ\\@@bdvt`]JV[h[WP\ngJ\\@@bdvu@]JNP\ngJ\\@@bdvu@]JV[h[Vp\ngJ\\@@bdvu@]JV[h[WP\ngJ\\@@ldru@]ZJRwPzP\x7FmD\ngJ\\@@ldru@]ZJRwaC~tP\ngJ\\@@ldru@]ZJRypXyoBG}h`\ngJ\\@@ldru@]ZJRytTyoBG}h`\ngJ\\@@ldru@]ZJSWPzP\x7FmD\ngJ\\@@ldru@]ZJSWaC~tP\ngJ\\@@ldru@]ZRRwpwmdO{Q@\ngJ\\@@ldru@]ZRRwpwndO{Q@\ngJ\\@@ldru@]ZRRytTyoao]H_vb@\ngJ\\@@ldru@]ZRSWpwmdO{Q@\ngJ\\@@ldru@]ZRSWpwndO{Q@\ngJ\\@@ldvE@]KI[x[VrG}i`=\ngJ\\@@ldvE@]KI[x[Vs{}i`=\ngJ\\@@ldvE@]KIkx[VrG}i`=\ngJ\\@ABeWU@]HR[j[v\x7Fv`@\ngJ\\@ABeWU@]HR[j[w_v`@\ngJ\\@ABeWU@]XJ\\wfC~t@\ngJ\\@ABeWU@]XJ\\ytTyoLG}h@\ngJ\\@ADeSU@]XTSWrwndO{HP\ngJ\\@ADe\\u@]DJ\\enlDa\x7FYA@=\ngJ\\@ADe\\u@]DJ\\es`qS]XIC~rB@\ngJ\\@AEddMTAuaYK_SZvP\x7Fm@=\ngJ\\@AEddMTAuaYM_SZvP\x7Fm@=\ngJ\\@ALe\\p@]PMumg_{P@\ngJ\\@ALe\\s@]HJkk[O_v`@\ngJ\\@ALe\\s@]XJSYpXinita\x7FZ@\ngJ\\@ALe\\t`]HJkk[N\x7Fv`@\ngJ\\@ALe\\t`]HJlxLTwVz^\x7Fm@\ngJ\\@AbeMK@]XLTwb{~t@\ngJ\\@AbeMK@]XLTypXioEw}h@\ngJ\\@AbeMK@]XLTypXyoEw}h@\ngJ\\@`bnLiLmPGRdfzF}o}h`\ngJ\\A@bIR[Z`NeKMtMkX\ngJ\\A@bnR[Z`NeKMtMkX\ngJ\\A@lIRYZ`NmEI[h]H_vb@\ngJ\\A@lIRYZ`NmEI[pa\x7FZH\ngJ\\A@lIRYZ`NmEI\\xL\\wPzP\x7FmD\ngJ\\A@lIRYZ`NmEI\\xL\\waC~tP\ngJ\\A@lIRYZ`NmEI\\zJ\\waC~tP\ngJ\\A@lIRYZ`NmEIkh]H_vb@\ngJ\\A@lIRYZ`NmEIkpa\x7FZH\ngJ\\A@lIRYZ`NmII[x[vrG}h`\ngJ\\A@lIR[B`Nedm|MkYC~tp\ngJ\\AAciRfe`NlFJ[i]w_v`@\ngJ\\AAciRfe`NlFJ[q]\x7FZ@\ngJ\\DAcJATBTuTAt`qs`qR>\ngJ\\HEb@aIej@zTT\x7FmD\ngJ\\HEb@aIfe@zTdwPwm\x7FmD\ngJ\\HEb@aInZ@zTlwPvm\x7FmL\ngJ\\HHlOAJfj@zpXeoC{|eBb\ngJ\\HHlOAJfj@zpXfoBG|eBcZP\ngJ\\HIb@aIZ`@zd[x^vso}i@=\ngJ\\HIbOAIY`@zd[k[N\x7Fvd@=\ngJ\\H`cj@SnR[Z`NeKMtNkh\ngJ\\Hib@b]iRVh@NiF~Gml{\x7FZP\ngJ\\IIb@b\\dmP@]RM|O[Yw~t`=\ngJ\\aibEIW[dfvhCiQs~rf@\ngJ]@EbDfVhCiQS~tP\ngJ]@ebEqeIej@zTT\x7FmD\ngJ]AEbCJSKTAthi\x7FZH\ngKP@DklVj@zhXirVzpRG|dml\ngKP@DklVj@zhXirWICEN[kAH_rRvp\ngKP@DklVj@zhXirWICEN[z]pRG|dml\ngKP@DklVjbPzhXirV~g\\D~\x7FIK[@<\ngKP@DklVjbPzhXirV~g\\D~\x7FIK[@>\ngKP@DklVjbPzhXirWICEN[kAOorRvp<\ngKP@DklVjbPzhXirWICEN[kAOorRvp>\ngKP@LdabjhCjabgI[zAPRG|dML\ngKP@LdabjjACjabgI[zAWbG|dML<\ngKP@LdabjjACjabgI[zAWbG|dML>\ngKP@LdabjjACjabgI\\dLTyohE^H_rPtp<\ngKP@LdabjjACjabgI\\dLTyohE^H_rPtp>\ngKP@LdabjjACjabgI\\xJ\\wtBoDOyHZX<\ngKP@LdabjjACjabgI\\xJ\\wtBoDOyHZX>\ngKP@LdabjjACjabgI\\zJ\\wtBoDOyHZX<\ngKP@LdabjjACjabgI\\zJ\\wtBoDOyHZX>\ngKP`@TixjjdPztTyoDG|dL\\<\ngKQ@@dmcUPGQbgI[kAH_rRvp\ngKQ@@eOEUTbGQbgI[iAH_rPqp<\ngKQ@@eOEUTbGQbgI[iAH_rPqp>\ngKQ@@eOEUTbGQbgI[i^H_rPqp<\ngKQ@@eOEUTbGQbgI[i^H_rPqp>\ngKQ@@eOEUTbGQbgI\\yNRwRBP\x7Fdac`<\ngKQ@@eOEUTbGQbgI\\yNRwRBP\x7Fdac`>\ngKQ@@eOEUTbGQbgI\\yNRwR|P\x7Fdac`<\ngKQ@@eOEUTbGQbgI\\yNRwR|P\x7Fdac`>\ngKX@@dmcUPGQbgI[kAH_rRvp\ngNp@DiYzA@zVVwQw]`=\ngNp@DiYzA@zVVwqw]oh=\ngNp@DiYzB@zVVwqw]lH=\ngNp@DiYzB@zVVwqw^lH\ngNp@DiYzB@zVVwq{^lH=\ngNp@Djfjj@zxXirVk[uApRFaXP\ngNp@Djfjj@zxXirVk\\dLRuoTGAHZEa@\ngNp@Djfjj@zxXirVk\\dNRuoTGAOjEa@\ngNp@Djfjj@zxXirVk\\lLTyKV}P\\DahVD\ngNp@Djfjj@zxXirVk\\lLTyKV}P\\Daogx\ngNp@Djfjj@zxXirVk\\lLTyKV}P\\D~hVD\ngNp@Djfjj@zxXirVk\\tLTek^hNBPtKB\ngNp@Djfjj@zxXirVk\\tLTek^hNB_TKB\ngNp@Djfjj@zxXirVskuApRFaXP\ngNp@Djfjj@zxXirVsldNRuoTGAOjEa@\ngNp@Djfjj@zxXirZk[uApRFaXP\ngNp@Djfjj@zxXirZk\\lLTyKV}P\\DahVD\ngNp@Djfjj@zxXirZk\\tLTek^hNBPtKB\ngNp@Djfjj@zxXitZk[uApRFaXP\ngNp@Djfjj@zxXitZskuApRFaXP\ngNp@DjfjjPTPzxXirVk\\tL\\ek^hNB_TK|<\ngNp@DjfjjPTPzxXirVk\\tL\\ek^hNB_TK|>\ngNp@DjfjjPTPzxXirZk\\tL\\ek^hNBPtK|<\ngNp@DjfjjPTPzxXirZk\\tL\\ek^hNBPtK|>\ngNp@DjfjjPTPzxXirZk\\xLRwjC`dMBp`<\ngNp@DjfjjPTPzxXirZk\\xLRwjC`dMBp`>\ngNp@DjfjjPTPzxXirZklxLRwjC`dMBp`<\ngNp@DjfjjPT`zxXirVk\\dL\\eoTGAOjEa@>\ngNp@DjfjjPT`zxXirVk\\tL\\ek^hNB_TK|>\ngNp@DjfjjPT`zxXirZk\\xLRwjC`dMBp`<\ngNp@DjfjjPT`zxXirZk\\xLRwjC`dMBp`>\ngNp@DjfjjPT`zxXirZklxLRwjC`dMBp`<\ngNp@DjfjjPT`zxXirZklxLRwjC`dMBp`>\ngNp@Djfjj`PzxXirVk\\tL\\ek^hNB_TKB<\ngNp@Djfjj`PzxXirVk\\tL\\ek^hNB_TKB>\ngNp@Djfjj`PzxXirZk\\dLRuoTGAHZEa@<\ngNp@Djfjj`PzxXirZk\\tL\\ek^hNBPtKB<\ngNp@Djfjj`PzxXirZk\\tL\\ek^hNBPtKB>\ngNp@DjfjjdPzxXirVk[uApRFa_`>\ngNp@DjfjjdPzxXirVk\\dLTeoTGAHZEa@<\ngNp@DjfjjdPzxXirVk\\dLTeoTGAHZEa@>\ngNp@DjfjjdPzxXirVk\\dLTuoTGAHZE~@<\ngNp@DjfjjdPzxXirVk\\dLTuoTGAHZE~@>\ngNp@DjfjjdPzxXirVk\\lLTyKV}P\\DahWx<\ngNp@DjfjjdPzxXirVk\\lLTyKV}P\\DahWx>\ngNp@DjfjjdPzxXirVk\\lLTyKV}P\\D~hWx<\ngNp@DjfjjdPzxXirVk\\tLTek^hNBPtK|<\ngNp@DjfjjdPzxXirVk\\tLTek^hNBPtK|>\ngNp@DjfjjdPzxXirVk\\xLRwjC`dMBp`<\ngNp@DjfjjdPzxXirVk\\xLRwjC`dMBp`>\ngNp@DjfjjdPzxXirVk\\xLZwjC`dMB\x7F@<\ngNp@DjfjjdPzxXirVk\\xLZwjC`dMB\x7F@>\ngNp@DjfjjdPzxXirVk\\xNRwjC`guBp`<\ngNp@DjfjjdPzxXirVk\\xNRwjC`guBp`>\ngNp@DjfjjdPzxXirVk\\xNZwjC`guB\x7F@<\ngNp@DjfjjdPzxXirVk\\xNZwjC`guB\x7F@>\ngNp@DjfjjdPzxXirVkkuApRFaXP<\ngNp@DjfjjdPzxXirVkkuApRFaXP>\ngNp@DjfjjdPzxXirVkldLTeoTGAHZEa@>\ngNp@DjfjjdPzxXirVkltLTek^hNBPtKB<\ngNp@DjfjjdPzxXirVklxLRwjC`dMBp`<\ngNp@DjfjjdPzxXirVklxLRwjC`dMBp`>\ngNp@DjfjjdPzxXirVklxLZwjC`dMBp`<\ngNp@DjfjjdPzxXirVklxLZwjC`dMBp`>\ngNp@DjfjjdPzxXirVslxLRwjC`dMBp`>\ngNp@DjfjjdPzxXirZk\\xNRwjC`dMBp`<\ngNp@DjfjjdPzxXirZk\\xNRwjC`dMBp`>\ngNp@DjfjjdPzxXirZkkuApRFaXP<\ngNp@DjfjjdPzxXirZkkuApRFaXP>\ngNp@DjfjjdPzxXitZk\\dJ\\eoTGAHZEa@>\ngNp@DjzZj@zhdejv}f}tahVD\ngNp@DjzZj@zhdejwNCGM{N{iCPlH\ngNp@DjzZj@zhdejwNbgM{M{iCPlH\ngNp@DjzZj@zhdejz}f}tahVD\ngNp@DjzZj@zhdelz}f}tahVD\ngNp@DjzZj@zxXirVk[gAHZEa@\ngNp@DjzZj@zxXirVk[v]pRFaXP\ngNp@DjzZj@zxXirVk\\fJ\\en]xahVD\ngNp@DjzZj@zxXirVk\\lLTyKVywbFaXP\ngNp@DjzZj@zxXirVk\\lLTyKV}g\\DahVD\ngNp@DjzZj@zxXirVk\\tLTyK\\xICPlH\ngNp@DjzZj@zxXirVk\\tLTyK\\{qCPlH\ngNp@DjzZj@zxXirVk\\tLTyK^snBPtKB\ngNp@DjzZj@zxXirVk\\tLTyK^sn|PtKB\ngNp@DjzZj@zxXirVk\\xLZwl{`dMB\x7F@\ngNp@DjzZj@zxXirVk\\xL\\wNBPtKB\ngNp@DjzZj@zxXirVk\\xL\\wl{`dMBp`\ngNp@DjzZj@zxXirVk\\zJZwNBPtK|\ngNp@DjzZj@zxXirVk\\zJ\\wNBPtKB\ngNp@DjzZj@zxXirVk\\zJ\\wN|PtKB\ngNp@DjzZj@zxXirVk\\zJ\\wl{oDMBp`\ngNp@DjzZj@zxXirVkkgAHZEa@\ngNp@DjzZj@zxXirVsldLRuoYwAHZEa@\ngNp@DjzZj@zxXitVk[gAHZEa@\ngNp@DjzZj@zxXitVk[v]pRFaXP\ngNp@DjzZj@zxXitVk\\tLTyK^snBPtKB\ngNp@DjzZj@zxXitVk\\xL\\wNBPtKB\ngNp@DjzZj@zxXitVkldL\\eoYwAHZEa@\ngNp@DjzZjbPzhdej{NCGM{N{iCPlH<\ngNp@DjzZjbPzxXirVk\\tLTyk\\xICPop<\ngNp@DjzZjbPzxXirVk\\tLTyk\\xICPop>\ngNp@DjzZjbPzxXirVk\\tLTyk^snBPtK|>\ngNp@DjzZjbPzxXirVklxL\\wl{`dMBp`<\ngNp@DjzZjbPzxXirVklxL\\wl{`dMBp`>\ngNp@DjzZjbPzxXirVslxLRwl{`dMBp`<\ngNp@DjzZjbPzxXirVslxLRwl{`dMBp`>\ngNp@LdadBj@zNRu[^sZvPtKB=\ngNp@LdadBj@zNRu[^sZvPtKC~RqI@=\ngNp@LdadBj@zNRu[^sZvPtKC~VqIi@=\ngNp@LdadBj@zNRu[^sZvPtK|=\ngNp@LdadBj@zNRu[^sZvPtK}~VqIi@=\ngNp@LdadBj@zNRu[^sZzPtKB\ngNp@LdadBj@zNRu[^sjzPtKB=\ngNp@LdadBj@zNRu[^sjzPtKC~RqI@=\ngNp@LdadBj@zNRu[dqSdm{MkiCPlH\ngNp@LdadBj@zNRu[gASV}gUtahWx\ngNp@LdadBj@zNRu[gASf}gUtahVD\ngNp@LdadBj@zNRu[gQSV}futahWx\ngNp@LdadBj@zNRu[gQSf}futahVD\ngNp@LdadBj@zNRu]^sZvPtKB=\ngNp@LdadBj@zNRu]^sZvPtKC~RqI@=\ngNp@LdadBj@zNRu]^sZzPtKB\ngNp@LdadBj@zNRu]dqSdm{MkiCPlH\ngNp@LdadBj@zNRu]gQSV}futahVD\ngNp@LdadBj@zNRu]gQSV}futahVG|ebR\ngNp@LdadBj@zNRv]^sZvPtKB=\ngNp@LdadBj@zNRv]^sZzPtKB\ngNp@LdadBj@zNRv]daRVm{NkiCPlH\ngNp@LdadBj@zNRv]dqRVm{MkiCPlH\ngNp@LdadBj@zNRv]gQSf}futahVD\ngNp@LdadBj@zNSU[^sZvPws|=\ngNp@LdadBj@zNSV[^sZvPtK|=\ngNp@LdadBj@zNSV[gQSV}futahWx\ngNp@LdadBj@zNSV]^sZvPtKB=\ngNp@LdadBj@zNSV]^sZzPtKB\ngNp@LdadBj@zNSV]dqSdm{MkiCPlH\ngNp@LdadBj@zNSV]gQSf}futahVD\ngNp@LdadBjfPzNRu[^sZvPtK}~Rqi@-\ngNp@LdadBjfPzNRu[gQSf}futahWx>\ngNp@LdadBjfPzNRu]dqSfm{MkiCPlH<\ngNp@LdadBjfPzNRu]dqSfm{MkiCPlH>\ngNp@LdadBjfPzNRu]gQSf}futahVD<\ngNp@LdadBjfPzNRu]gQSf}futahVD>\ngNp@LdadBjfPzNRv[^sZvPtK|+\ngNp@LdadBjfPzNRv[^sZvPtK|-\ngNp@LdadBjfPzNRv[^sZvPtK}~Rqi@+\ngNp@LdadBjfPzNRv[^sZvPtK}~Rqi@-\ngNp@LdadBjfPzNRv[gQRV}futahW{|ecR<\ngNp@LdadBjfPzNRv[gQRV}futahW{|ecR>\ngNp@LdadBjfPzNRv]gQRV}futahVD<\ngNp@LdadBjfPzNRv]gQRV}futahVD>\ngNp@LdadBjfPzNSV[gQSf}futahWx<\ngNp@LdadBjfPzNSV[gQSf}futahWx>\ngNpB@xQpSagCIIKJj`NbDmVwl|o[uBp\x7Fe`XTP\ngNpB@xQpk`wAJkjj`NbENRwNBPws|\ngNpBADFPl`yAInij`NmENP\ngNpCAHR`TaiB]dTaeT@GTc]W[z\ngNpD@DHHRZzj@CiQK_DMv}`=\ngNpD@DHHRZzj@CiQK_Guv}`=\ngNpD@DHHRZzj@CiQM_DMv}`=\ngNpD@DHHRZzjhCjqrVk\\eNRuobFaXP\ngNpD@DIpRYjfhCiqSdmVwH|PtK|\ngNpD@DIpRYjfhCjrRVk[t[vrFaXP\ngNpD@DIpRYjfhCjrRVk[t[vrFa_`\ngNpD@DIpRYjfhCjrRVk[t[wRFaXP\ngNpD@DSpRZYj@CkQrVypRF{^p=\ngNpD@DSpRZYj@CkQtZypRF{^p=\ngNpD@DSpRZYj@CkQtZypRF{_P\ngNpD@DSpRZYj@CkQtZypRF}_P=\ngNpD@DSpRZYj@CkQt[MbgIZwNBPwkz=\ngNpD@DSpRZYjBQCkQrZypRF{^p+\ngNpD@DSpRZYjBQCkQrZypRF{^p-\ngNpD@DSpRZYjhCiqSdmVwNBPtKB\ngNpD@DSpRZYjjQCiqSduVwNBPtKB<\ngNpD@DSpRZYjjQCiqSduVwNBPtKB>\ngNpD@bIpRYjfhCjrRVk[t[vrFaXP\ngNpD@bQpRZZj@CkQtZypRF{^p=\ngNpD@bSpRZYj@CkQtZypRF{^p=\ngNpD@bSpRZYj@CkQtZypRF{_P\ngNpD@bSpRZYjBQCkQrZypRF{^p+\ngNpD@bSpRZYjBQCkQrZypRF{^p-\ngNpD@bSpRZYjhCiqSdmVwNBPtKB\ngNpD@xN`RjZjXCiabgIZwJC`dMz\ngNpD@xQpRjzj@CkArV}glDanwl=\ngNpD@xQpRjzj@CkArV}glDanwt\ngNpD@xQpRjzj@CkAtZ}glDanwl=\ngNpD@xQpRjzj@CkAt[IbgM[v^pRF{_P\ngNpD@xQpRjzjBACkArZ}glDanwl-\ngNpD@xQpRjzjhCiaSdmVwNBPtKB\ngNpD@xQpRjzjhCiaSdmVwl}`dMBp`\ngNpD@xRPRjzj@CkAtZypRF{^p=\ngNpD@xRPRjzj@CkAtZypRF{_P\ngNpD@xUpRjZjdCiabgIVwJC`dM|\ngNpD@xUpRjZjjQCiabgIWWjC`dM|p`<\ngNpD@xUpRjZjjQCiabgIWWjC`dM|p`>\ngNpDADFHR[jZhCjqSfk\\fJRuoevaXP\ngNpDAHJPRZzj@CiQK_DMv~`\ngNpDAHJPRZzj@CiQK_Guv}`=\ngNpDAHJPRZzj@CiQK_Guv~`\ngNpDAHJPRZzj@CiQK_Guz~`=\ngNpDAHJPRZzjXCjqrVk[xaoVD\ngNpDAxKpR[ijhCjqrVk[xahVD\ngNpDAxSpRjyj@CkAtZypRF{^p=\ngNpDAxSpRjyjBACkArZypRF{^p+\ngNpDAxSpRjyjBACkArZypRF{^p-\ngNpD`DR`Dsdffj`@zt]Fn\\DaoWt=\ngNpDaxF`Dgdjfj`@zpTynTGAnwl=\ngNpDaxF`Dgdjfj`@zpUZnTGAnwl=\ngNpDaxF`Dgdjfj`@zpUZoTGAOkm{@=\ngNpDaxF`Dgdjfj``PzpTznTGAnwl+\ngNpDaxF`Dgdjfj``PzpTznTGAnwl-\ngNpDaxF`Dgdjfj``PzpTznTGAnwt<\ngNpDaxF`Dgdjfj``PzpTzoTGAOkm{\x7FIPx`+\ngNpDaxF`Dgdjfj``PzpTzoTGAOkm{\x7FIPx`-\ngNpDaxF`Dgdjfjj@zXXisUmr`xMBp`\ngNpDaxF`Dgdjfjj@zXXisUmz`xI}PlH\ngNpDaxF`Dgdjfjj@zXXjuUmr`xMBp`\ngNpDaxF`Dgdjfjj`PzXXiuUmr`xMBp`<\ngNpDaxF`Dgdjfjj`PzXXiuUmr`xMBp`>\ngNpDaxR`Dsdffj`@zt]Fn\\DaoWt=\ngNpDaxR`Dsdffj`@zt]FoQ{AH[u}@=\ngNpDaxR`Dsdffj`dPzt\\foQ{AH[u}\x7FI@h`+\ngNpDaxR`Dsdffj`dPzt\\foQ{AH[u}\x7FI@h`-\ngNpE@DSpdiMMU@AuhzM\\xIC]oX=\ngNpE@bSpdiMMU@AuhzM\\xIC]oX=\ngNpE@bSpdiMMUAHauhyM\\xIC]oX+\ngNpE@bSpdiMMUAHauhyM\\xIC]oX-\ngNpE@bSpdiMMUTAtxirVk[gAHZEa@\ngNpEADR`gIMMU@AuhzM\\xIC^oh=\ngNpEAHR`gIMMU@AuhzM\\xIC]oX=\ngNpEAHR`gIMMU@AuhzM\\xIC^oh=\ngNpEAHR`gIMMU@AuhzMfqSdm[gAH[u}@=\ngNpEAVRDdiMMU@AuhzM\\xIC]oX=\ngNpEAVSpdiMMU@AuhzM\\xIC]oX=\ngNpEAVSpdiMMU@AuhzM\\xIC]oh\ngNpEAVSpdiMMUTAtxirVk[gAHZEa@\ngNpEAbSpdiMMU@AuhzM\\xIC]oX=\ngNpEAxF`DiUMU@Au`ju\\hNC]oX=\ngNpEAxF`DiUMUTAtpqSfk[eApZEa@\ngNpEAxRPDiU]U@Au`zM\\xIC]oX=\ngNpEAxRPDiU]U@Au`zM\\xIC^oh=\ngNpEAxR`gIMMU@AuhzM\\xIC^oh=\ngNpEAxSpDiUMUTAupqSdmgWjC`dMBp`\ngNpEAxSpDiU]U@Au`zM\\xIC]oX=\ngNpEAxSpDiU]UA@au`yM\\xIC]oX+\ngNpEAxSpDiU]UA@au`yM\\xIC]oX-\ngNpEAxSpDiU]UTAtpirVk[gAHZEa@\ngNpH@DIMMU@AuhyK\\xIC]oX=\ngNpH@DIMMU@AuhzM\\xIC]oX=\ngNpH@DIMMU@AuhzMdqSfms`dMv~`\ngNpH@DIMMUAHauhyK^cvBPw[w~RAQ@-\ngNpH@DIMMUAHauhyMdqSfms`dMv~`<\ngNpH@DIMMUAHauhyMdqSfms`dMv~`>\ngNpH@DIMuMTAuYYKUmzMkYCPlH\ngNpH@DIMuMTAuYYKUuzMkYCPlH\ngNpH@DIMuMTAuYYKYuzMkYCPlH\ngNpH@DISmW@At`iodF{_P\ngNpH@bIMMU@AuhzMdqSfms`dMv~`\ngNpH@bISmW@At`iodF{_P\ngNpH@xIUMU@AtPirV}P\\Danwl=\ngNpH@xIUMU@AtPirV}P\\Danwt\ngNpH@xIUMU@AtPirV}P\\DaoWt=\ngNpH@xIUMU@AtPirV}P\\D~nwl=\ngNpH@xIUMU@AtPirWNCFmz`xIC]oh\ngNpH@xIUMU@AtPirZ}P\\Danwl=\ngNpH@xIUMU@AtPirZ}P\\Danwt\ngNpH@xIUMU@AtPirZ}P\\DaoWt=\ngNpH@xIUMU@AtPir[NCfmz`xIC]oh\ngNpH@xIUMU@AtPitZ}P\\Danwl=\ngNpH@xIUMU@AtPitZ}P\\Danwt\ngNpH@xIUMU@AtPjtV}P\\D~nwl=\ngNpH@xIUMU@AtPjtZ}P\\Danwl=\ngNpH@xIUMU@AtPjtZ}P\\Danwt\ngNpH@xIUMU@AtPjt[NCFmz`xIC]oh\ngNpH@xIUMUA@atPitV}P\\D~nwl+\ngNpH@xIUMUA@atPitV}P\\D~nwl-\ngNpH@xIUMULAuPrSdmz`xIC^oX\ngNpH@xIUMULAupqSdmVwJC`dKB\ngNpH@xIUMULAupqSdmVwjC`dMzp`\ngNpH@xIUMULAupqSdmVwjC`dMzp\x7FdbZP\ngNpH@xIUMULAupqSdmWWjC`dMzp`\ngNpH@xIUMULAupqSduVwJC`dKB\ngNpH@xIUMUTAupqSdmVwjC`dMBp`\ngNpH@xIUMUTAupqSdmVwjC`guBp`\ngNpH@xIUMUTAupqSduVwjC`dMBp`\ngNpH@xIUMUTAupqShuVwjC`dMBp`\ngNpHABIUMM@AtPitZ}W\\Danwl=\ngNpHADIMMULAtxirVk\\vJ\\ek\\xIC^op\ngNpHAHILuUUHatxirVk\\zJ\\wNBPtKB<\ngNpHAHIMMU@AuhyK\\xIC]oX=\ngNpHAHIMMUUHatxirVk\\vJ\\ek\\xI}PlH<\ngNpHAbILuUUHatxirVk\\zJ\\wNBPtKB>\ngNpHAxIMMU@AuhzM\\xIC]oX=\ngNpHAxIMMU@AuhzM^cvBPw[v=\ngNpHAxITuUTAupqUhmVwjC`dMBp`\ngNpHAxITuUU@aupqSdmVwjCoDMBp`<\ngNpHAxITuUU@aupqSdmVwjCoDMBp`>\ngNpHAxITuUU@aupqUdmVwjCoDMBp`<\ngNpHAxITuUU@aupqUdmVwjCoDMBp`>\ngNpHAxIUMA@AoUw]H[m{@=\ngNpHAxIUMM@AtPitZypRF{^p=\ngNpHAxIUMM@AtPitZ}W\\Danwl=\ngNpHAxIUMMA@atPirZ}W\\Danwl+\ngNpHAxIUMMA@atPirZ}W\\Danwl-\ngNpHGPYICHETAulfm\\sZvPtH=\ngNpIABBTjfj`@zHTzM^hNBPw[v=\ngNpIABBTjfj`@zHUZM^hNBPw[v=\ngNpIAxBTjZjj@zxXirVk[u^wbFaXP\ngNpIAxBTjZjj`PzxXirVk[uAwbFaXP<\ngNpIAxBTjZjj`PzxXirVk[uAwbFaXP>\ngNpIAxBTjfj`@zHTyK^hNBPwkz=\ngNpIAxBTjfj`@zHTyM^hNBPw[v=\ngNpIAxBTjfj`@zHTyM^hNBPwkz=\ngNpIAxBTjfj`@zHTzM^hNBPw[v=\ngNpIAxBTjfj`@zHTzM^hNBPw[z\ngNpIAxBTjfj`@zHTzM^hNBPwkz=\ngNpIAxBTjfj`@zHTzMgAcV}P\\Danwt\ngNpIAxBTjfj`@zHUZK^hNB_W[v=\ngNpIAxBTjfj`@zHUZM^hNBPw[v=\ngNpIAxBTjfj`@zHUZM^hNBPw[z\ngNpIAxBTjfjf@zxXjtZk[eApREa@\ngNpIAxBTjfjj@zxXirVk[uApRFaXP\ngNpIAxBTjfjj@zxXirZk[uApRFaXP\ngNpIMP[ldadBj@zNRu[^sZvPtKB=\ngNpIMP[ldadBj@zNRu]^sjzPtKB=\ngNpIMP[ldadBj@zNRv]^sZvPtKB=\ngNpIMP[ldadBj@zNRv]^sjzPtKB=\ngNpIMP[ldadBj@zNSV]^sZvPtKB=\ngNpIMP[ldadBj@zNSV]^sjzPtKB=\ngNpIMP[ldadBj@zNSV]dqSdm{MkiCPlH\ngNpL@DIpK`dsUMPGQdfk[t[vszaXP\ngNpL@VSDVIddaeT@GRBZ~H[m{@=\ngNpL@VSDVIddaeT@GRBZ~H[m}@\ngNpL@xIpsadTaeT@GTc^cr}oW[v=\ngNpL@xQpSaddaeT@GRBZ}gexanwl=\ngNpL@xQpSaddaeT@GRBZ}gexaoWw|dCB=\ngNpL@xQpSaddaeUPGUCdmVwl|oDMBp\x7Fd`XP\ngNpL@xUp[`eTuUPGUCENRwjC`dM|\x7F@\ngNpLABIps`dsUUTbGUbdmVwN|PtKB<\ngNpLABIps`dsUUTbGUbdmVwN|PtKB>\ngNpLADJHtQdTaeUPGQbVskjaXP\ngNpLAHJPtadTaeT@GTc]W[v=\ngNpLAHJPtadTaeT@GTc]W[z\ngNpLAHJPtadTaeT@GTc]Wkz=\ngNpLAHJPtadTaeTpGQbVk[j}XP\ngNpLAHJPtadTaeTpGQbVk[qa@\ngNpLAHJPtadTaeTpGQbVkkqa@\ngNpLAHJPtadTaeTpGRbZzoWl\ngNpLAHJPtadTaeTpGRbZzoWt\ngNpLAHJPtadTaeUPGQbVk[jaXP\ngNpLAHJPtadTaeUTJGQbVk[ja_`<\ngNpLAHJPtadTaeUTJGQbVkkjaXP<\ngNpLAHJPtadTaeUTJGQbVkkjaXP>\ngNpLAxIps`dsUUTbGUbdmVwN|PtKB<\ngNpLAxIps`dsUUTbGUbdmVwN|PtKB>\ngNpLaxKpw`itiLtuTAuXiMYusoDMBp`\ngNpMAxZ`M@IRjZjhCjabfk[uAwczaX_rRNH\ngNpMAxZ`M@IRjZjjACjabfk[eAwjEa\x7FIHx`<\ngNpMAxZ`M@IRjZjjACjabfk[eAwjEa\x7FIHx`>\ngNpP@cTfzZj@zt\\moFD\ngNpXHmQxYIIXuUBau`e[^LH<\ngNpXHmQxYIIXuUBau`e[^LH>\ngNpXHmQxYIIXuUBau`e]^LH<\ngNpXHmQxYIIXuUBau`e]^LH>\ngNp`@TfZZj@zlTyjv~pZEa@\ngNp`@TfZZj@zlTzjv~pZEa@\ngNp`@TfZZjb`zlTyjv~pZE~@<\ngNp`@TfZZjb`zlTyjv~pZE~@>\ngNp`@TfZZjb`zlTyjwIbgI[{AhVD>\ngNp`@TfZZjb`zlTyjwNbdm}`tKB<\ngNp`@TfZZjb`zlTyjwNbdm}`tKB>\ngNp`@TfZZjb`zlTyjwNbdm}`tK|>\ngNp`@TfZZjb`zlTyjwNbdm}oTKB<\ngNp`@TfZZjb`zlTyjwNbdm}oTKB>\ngNp`@TfZZjb`zlTyjwNbfm}`tK|<\ngNp`@TfZZjb`zlTyjwNbfm}`tK|>\ngNp`@TfZZjb`zlTyj{Nbfm}`tKB<\ngNp`@TfZZjb`zlTzjwNbdm}`tKB<\ngNp`@TfZZjb`zlTzjwNbdm}`tKB>\ngNp`@TfZZjb`zlTzjwNbfm}`tK|<\ngNp`@Tfzfjf`zlTyjwNbdmuPlH>\ngNp`@dfnj`@zTRwqC]oX=\ngNp`@dfnj`@zTRwqC]oh\ngNp`@dfnj`@zTRwq}]oX=\ngNp`@dfnj`@zTRyr\\uobF{_P\ngNp`@dfnj`@zTRyr\\uocz{_P\ngNp`@dfnj`@zTSWqC]oX=\ngNp`@dfnj`dPzTRypTuobF{_P>\ngNp`@dfnjf@zl\\ejwNSdmtPlH\ngNp`@dfnjj@zl\\ejv~HZEa@\ngNp`@dfnjj@zl\\ejwISdm[xahVD\ngNp`@dfnjjTV`zl\\ejwNBdm|PtKB<\ngNp`@dfnjjTV`zl\\ejwNBdm|PtKB>\ngNp`@dfnjjdPzl\\ejwMBgIZwqCPlH<\ngNp`@dfnjjdPzl\\ejwMBgIZwqCPlH>\ngNp`@dfnjjfPzl\\ejwICEM[xahWx<\ngNp`@dfnjjfPzl\\ejwNSdm|PtKB<\ngNp`@dfnjjfPzl\\ejwNSdm|PtKB>\ngNp`@dfzZj@zl\\ejv~HZEa@\ngNp`@dfzZj@zl\\ejv~HZEa\x7FIXd`\ngNp`@dfzZj@zl\\ejv~HZEa\x7FKXdt`\ngNp`@dfzZj@zl\\ejv~HZE~@\ngNp`@dfzZj@zl\\ejv~H[y~@\ngNp`@dfzZj@zl\\ejwIbgI[xahVD\ngNp`@dfzZj@zl\\ejwNbgM|PtKB\ngNp`@dfzZj@zl\\ejz~HZEa@\ngNp`@dfzZj@zl\\elz~HZEa@\ngNp`@dfzZjfPzl\\ejv~HZE~\x7FIXt`<\ngNp`@dfzZjfPzl\\elv~HZE~@<\ngNp`@dfzZjfPzl\\elv~HZE~@>\ngNp`@dfzjj@zl\\ejv~HZEa@\ngNp`@dfzjjdPzl\\ejwNBgM|PtKB>\ngNp`ATffjjTRPzlTyJv~pSya@<\ngNp`ATffjjTRPzlTyJwMCEIZwvBPlH<\ngNp`ATffjjTRPzlTyJwMCEIZwvBPlH>\ngNp`ATffjjTRPzlTyJwNbfm}`dKB<\ngNp`ATffjjTRPzlTyJwNbfm}`dKB>\ngNp`ATffjjTRPzlTyJwNbfm}`dK|<\ngNp`ATffjjTRPzlTyJwNbfm}`dK|>\ngNp`ATffjjTRPzlTyJwNbfm}`gsB>\ngNp`ATffjjTRPzlTyJwNbfm}oGsB>\ngNp`ATffjjTRPzlTyJwNcfm}`gsB<\ngNp`ATffjjTRPzlTyJwNcfm}`gsB>\ngNp`ATffjjTR`zlTyJwICEM[{AHVD>\ngNp`ATffjjTR`zlTyJwNbdm}`dKB<\ngNp`ATffjjTR`zlTyJwNbfm}`dKB<\ngNp`ATffjjTR`zlTyJwNbfm}`dKB>\ngNp`ATffjjTR`zlTyJwNbfm}`dK|<\ngNp`ATffjjTR`zlTyJwNcfm}`gsB<\ngNp`ATffjjTR`zlTyLv~pREa@<\ngNp`ATffjjTR`zlTyLz~pREa@>\ngNp`ATffjjb`zlTyJv~pREa@<\ngNp`ATffjjb`zlTyJv~pREa@>\ngNp`ATffjjb`zlTyJv~wcya@<\ngNp`ATffjjb`zlTyJwIbgM[{AHVD>\ngNp`ATffjjb`zlTyJwNCFm}`dKB<\ngNp`ATffjjb`zlTyJwNCFm}`dKB>\ngNp`ATffjjb`zlTyJz~pREa@>\ngNp`ATffjjb`zlTzLv~pREa@<\ngNp`ATffjjb`zlTzLv~pREa@>\ngNpa@erS]MU@]VNRu[_DMBp`\ngNpa@erS]MU@]VNRu[_DMBp\x7FdlRP\ngNpa@erS]MU@]VNSV]_DMBp`\ngNpdH`DTHrRPqZjYCharYm|PwsB<\ngNpdH`DTHrRPqZjYCharYm|PwsB>\ngNpdJqHJPRZzjXCkQrV|HP\ngNpdJqHJPRZzjXCkQrV|O`\ngNpdJqHJPRZzjXCkQrZ|HP\ngNpeE`DSpGYEHYMAHauHwUv}`+\ngNphH`DYIHXm@At`eobF{^p=\ngNphH`DYIHXm@At`eobF{_P\ngNphH`DYIHXm@At`eocz{^p=\ngNphH`DYIHXm@At`eocz}_P=\ngNphH`DYIHXm@At`fobF{^p=\ngNphH`DYIHXm@At`fobF{_P\ngNphH`DYIHXm@At`fobF}_P=\ngNphH`DYIHXm@At`fsdyk_DMv~`\ngNphH`DYIHXmLAuPyMUmtPlH\ngNphH`DYIHXmLAuPyMUm|PwkB\ngNphH`DYIHXmLAuPyMUutPlH\ngNphH`DYIHXmLAuPyMUu|PwkB\ngNphH`DYIHXmLAu`zK_DMz~`\ngNphH`DYIHXmLAu`zM_DMz~`\ngNphH`DYIHXmTAuPyKUm|PtKB\ngNphH`DYIHXmTAuPyMUm|PtKB\ngNphH`DYIHXmULauPyKUn\\gI[xahVD<\ngNphH`DYIHXmULauPyKUn\\gI[xahVD>\ngNphH`DYIHXmULauPyMUm|PtK|<\ngNphH`DYIHXmULauPyMUu|PtKB<\ngNphH`DYIHXmULauPyMUu|PtKB>\ngNphH`VYIHYU@At`fobF{^p=\ngNphH`xYIHYU@At`eobF{^p=\ngNphH`xYIHYU@At`fobF{^p=\ngNphH`xYIHYU@At`fobF{_P\ngNphH`xYIHYU@At`fobF}_P=\ngNphH`xYIHYUTAuPyKUm|PtKB\ngNphHaxYIHXuA@at`eobF{^p+\ngNphHaxYIHXuA@at`eobF{^p-\ngNphHaxYIHXuA@at`fobF{^p+\ngNphHaxYIHXuA@at`fobF{^p-\ngNphJpDIMMULAtXirVzpRD\ngNphJqHIMMULAtXirVzpRD\ngNphJqbIMMULAtXirVzpRD\ngNpi@iPSdfnj`@zTSWqC]oX=\ngNpi@iPSdfnj`@zTSWqC^oh=\ngNplJqDJHtQdTaeTpGRbT\ngNplJqHJPtadTaeTpGRbT\ngNpmJqDJHtP~rJPrjXCiQJ\ngNpmJqHJPt`~rJPrjXCiQJ\ngNq@@dju\\@GTc]W[v=\ngNq@@dju\\@GTc]W[z\ngNq@@dsSUPGSbgIZmn\\DahVD\ngNq@@dsSUPGSbgIZmn\\DahWx\ngNq@@dsSUPGSbgIZmn]xahVD\ngNq@@dsSUPGSbgIZmrXirVypRFaXP\ngNq@@dsSUPGSbgIZmrXirVywbFaXP\ngNq@@dsSUPGSbgIZmshik\\xICPop\ngNq@@dsSUPGSbgIZmshik\\{qCPop\ngNq@@dsSUPGSbgIZmshis\\xICPlH\ngNq@@dsSUPGSbgIZmshis\\{qCPlH\ngNq@@dsSUPGSbgIZnn\\DahVD\ngNq@@dsSUPGSbgIZnn]xahVD\ngNq@@dsSUPGSbgIZnshik\\xICPlH\ngNq@@dsSUPGSbgI[Nn\\DahVD\ngNq@@dsSUPGSbgQZmn\\DahVD\ngNq@@dsSUPGSbgQZmn\\DahWx\ngNq@@dsSUPGSbgQZmshik\\xICPop\ngNq@@dsSUPGSbgQZmshis\\xICPlH\ngNq@@dsSUPGSbgQZnn\\DahVD\ngNq@@dsSUTRGSbgIZmrXisVypRFa_`<\ngNq@@dsSUTRGSbgIZmrXisVypRFa_`>\ngNq@@dsSUTRGSbgIZmrXisVywbFa_`<\ngNq@@dsSUTRGSbgIZmrXisVywbFa_`>\ngNq@@dsSUTRGSbgIZmshis\\xICPop<\ngNq@@dsSUTRGSbgIZmshis\\xICPop>\ngNq@@dsSUTRGSbgIZmshis\\{qCPop<\ngNq@@dsSUTRGSbgIZnshis\\xICPlH<\ngNq@@dsSUTRGSbgIZnshis\\xICPlH>\ngNq@@dsSUTRGSbgQZmshis\\xICPop>\ngNq@@dsSUTRGSbgQZnshis\\xICPlH<\ngNq@@dsUURbRGSbgIZmsPqSfms`dMB\x7F@<\ngNq@@dsUURbRGSbgIZmshis\\xICPop<\ngNq@@dsUURdRGSbgIZmshiK\\xIC_Op>\ngNq@@dsUURdRGSbgIZmshis\\xICPop<\ngNq@@dsUURdRGSbgIZmshis\\xICPop>\ngNq@@dsUURdRGSbgIZnshis\\xICPlH<\ngNq@@dsUUTbGSbgIZmn\\DahVD<\ngNq@@dsUUTbGSbgIZmn\\DahVD>\ngNq@@dsUUTbGSbgIZmn\\DahWx>\ngNq@@dsUUTbGSbgIZmrPqSfypRFaXP<\ngNq@@dsUUTbGSbgIZmrXirVypRFaXP<\ngNq@@dsUUTbGSbgIZmrXirVypRFaXP>\ngNq@@dsUUTbGSbgIZmrXirVywbFaXP<\ngNq@@dsUUTbGSbgIZmrXirVywbFaXP>\ngNq@@dsUUTbGSbgIZmsPqSdms`dMBp`<\ngNq@@dsUUTbGSbgIZmsPqSdms`dMBp`>\ngNq@@dsUUTbGSbgIZms`qs\\xICPlH<\ngNq@@dsUUTbGSbgIZmshik\\xICPop<\ngNq@@dsUUTbGSbgIZmshik\\xICPop>\ngNq@@dsUUTbGSbgIZmshis\\xICPlH<\ngNq@@dsUUTbGSbgIZmshis\\xICPlH>\ngNq@@dsUUTbGSbgIZmshis\\{qCPlH<\ngNq@@dsUUTbGSbgIZmshis\\{qCPlH>\ngNq@@dsUUTbGSbgIZnshik\\xICPlH>\ngNq@@dsUUTbGSbgQZmn\\DahVD<\ngNq@@dsUUTbGSbgQZmn\\DahVD>\ngNq@@dsUUTbGSbgQZms`qk\\xICPop>\ngNq@@dsUUTbGSbgQZms`qs\\xICPlH<\ngNq@@dsUUTbGSbgQZms`qs\\xICPlH>\ngNq@@dsUUTbGSbgQZmshis\\xICPlH>\ngNq@@dtuT@GVcdms`dMv}`=\ngNq@@dtuT@GVcdms`dMv}\x7Fdd\\P=\ngNq@@dtuT@GVcdms`dMv~`\ngNq@@dtuT@GVcdmsoGuv~`\ngNq@@dtuT@GVcdn\\FM[gAH[m}@\ngNq@@dtuT@GVchus`dMv}`=\ngNq@@dtuT@GVchus`dMv~`\ngNq@@dtuT@GVchus`dMz~`=\ngNq@@dtuT@GVchvSENZwNBPw[z\ngNq@@dtuT@GVchvVFJ\\ek\\xIC^oh=\ngNq@@dtuT@GVchv\\FM[gAH[m}@\ngNq@@dtuTDbGVcdms`guv}`+\ngNq@@dtuTDbGVcdms`guv}`-\ngNq@@dtuTDbGVcdms`guv}\x7Fdd\\P-\ngNq@@dtuTDbGVcdn]EM[gAH[m}@<\ngNq@@dtuTDbGVcdn]EM[gAH[m}@>\ngNq@@dtuTDbGVcdn]GM[gAOkm}@<\ngNq@@dtuTDbGVcdn]GM[gAOkm}@>\ngNq@@dtuTDbGVcdus`dMv}`+\ngNq@@dtuTDbGVcdus`dMv}`-\ngNq@@dtuTDbGVcdus`dMv~`<\ngNq@@dtuTDbGVcdus`dMv~`>\ngNq@@dtuTDbGVcdv]EM[gAH[m}@<\ngNq@@dtuTDbGVcdv]EM[gAH[m}@>\ngNq@@dtuTDbGVcdv]GI[gAH[u}@<\ngNq@@dtuTDbGVcdv]GI[gAH[u}@>\ngNq@@dtuTDbGVcdv]GM[gAH[m}@<\ngNq@@dtuTDbGVcdv]GM[gAH[m}@>\ngNq@@dtuTDbGVchms`guv}`+\ngNq@@dtuTDbGVchms`guv}`-\ngNq@@dtuTDbGVchvRFJZwNBPw[z<\ngNq@@dtuTDbGVchvRFJZwNBPw[z>\ngNq@@dtuTDbGVchv]EM[gAH[m}@<\ngNq@@dtuTDbGVchv]EM[gAH[m}@>\ngNq@@dtuTpGSbgIZmolDaXP\ngNq@@dtuTpGSbgIZmrpqSdm[{AHVD\ngNq@@dtuTpGSbgIZmsXirVm}`dKB\ngNq@@dtuTtbGSbgIZmsXirVm}`gsB<\ngNq@@dtuTtbGSbgIZmshiK\\xIC^lH<\ngNq@@dtuTtbGSbgIZmshik_XIBp`<\ngNq@@dtuTtbGSbgIZmshik_XIBp`>\ngNq@@dtuTtbGSbgIZmshik_XIB\x7F@<\ngNq@@dtuTtbGSbgIZmshyk_XI|p`<\ngNq@@dtuUPGSbgIZmn\\DahVD\ngNq@@dtuUPGSbgIZmn\\DahVG|dSR\ngNq@@dtuUPGSbgIZmrpqSdm[gAHZEa@\ngNq@@dtuUPGSbgIZmsXirVms`dMBp`\ngNq@@dtuUPGSbgI[Nn\\DahVD\ngNq@@dtuURbRGSbgIZmrPqRVypRFaXP<\ngNq@@dtuURbRGSbgIZmrXiKVypRFa_orQMH<\ngNq@@dtuURbRGSbgIZmrXiKVypRFa_orQMH>\ngNq@@dtuURbRGSbgIZmshiK\\xICPlH<\ngNq@@dtuURbRGSbgIZmshiK\\xICPlH>\ngNq@@dtuURbRGSbgIZmshik\\xICPop<\ngNq@@dtuURbRGSbgIZmshik\\xICPop>\ngNq@@dtuURbRGSbgIZmshyK\\xI}PlH<\ngNq@@dtuURbRGSbgIZmshyK\\xI}PlH>\ngNq@@dtuURbRGSbgIjmshyK\\xICPlH>\ngNq@@dtuURbRGSbgIjnn\\DahVD<\ngNq@@dtuURbRGSbgIjnn\\DahVD>\ngNq@@dtuURbTGSbgIZmrPqRVypRFaXP<\ngNq@@dtuURbTGSbgIZmsPqRVms`dMB\x7F@<\ngNq@@dtuURbTGSbgIZmsPqRVms`dMB\x7F@>\ngNq@@dtuURbTGSbgIZmshiK\\xICPlH<\ngNq@@dtuURbTGSbgIZmshiK\\xICPlH>\ngNq@@dtuURbTGSbgIZmshik\\xICPop<\ngNq@@dtuURbTGSbgIZmshik\\xICPop>\ngNq@@dtuURbTGSbgIZmshik\\xICPowyIGD>\ngNq@@dtuURbTGSbgIZmshyK\\xI}PlH>\ngNq@@dtuURbTGSbgIZnshiK\\xICPlH<\ngNq@@dtuURbTGSbgIjmshiK\\xICPlH<\ngNq@@dtuURbTGSbgIjmshiK\\xICPlH>\ngNq@@dtuURbTGSbgIjnn\\DahVD>\ngNq@@dtuUTRGSbgIZmn\\DahWx<\ngNq@@dtuUTRGSbgIZmrXirVypRFaXP<\ngNq@@dtuUTRGSbgIZmrXirVypRFaXP>\ngNq@@dtuUTRGSbgIZmsXirVms`dMB\x7F@<\ngNq@@dtuUTRGSbgIZmsXirVms`dMB\x7F@>\ngNq@@dtuUTRGSbgIZms`qK\\xICPlH<\ngNq@@dtuUTRGSbgIZms`qK\\xICPlH>\ngNq@@dtuUTRGSbgIZms`qk\\xICPop>\ngNq@@dtuUTRGSbgIZnn\\DahVD<\ngNq@@dtuUTRGSbgIZnn\\DahVD>\ngNq@@dtuUTRGSbgQjnn\\DahVD<\ngNq@@dtuUTRGSbgQjnn\\DahVD>\ngNq@@dtuUTbGSbgIZmn\\D~hVD>\ngNq@@dtuUTbGSbgIZmrXiKVypRFaXP<\ngNq@@dtuUTbGSbgIZmrXiKVypRFaXP>\ngNq@@dtuUTbGSbgIZmrXyKVypSzaXP<\ngNq@@dtuUTbGSbgIZmrXyKVypSzaXP>\ngNq@@dtuUTbGSbgIZmsPqRVms`dMBp`<\ngNq@@dtuUTbGSbgIZmsPqRVms`dMBp`>\ngNq@@dtuUTbGSbgIZmsXirVms`guBp`<\ngNq@@dtuUTbGSbgIZmsXirVms`guBp`>\ngNq@@dtuUTbGSbgIjmn\\DahVD<\ngNq@@dtuUTbGSbgIjmn\\DahVD>\ngNq@@dtuUTbGSbgIkNn\\DahVD>\ngNq@@dwTuPGSbgIZmnUtahVD\ngNq@@dwTuPGSbgIZmobFaXP\ngNq@@dwTuPGSbgIZmshis\\kiCPlH\ngNq@@dwTuPGSbgIZmshis_DMBp`\ngNq@@dwTuPGUedmVwhvmdMBp`\ngNq@@dwTuPGUedmWWhvmdMBp`\ngNqDJDR^BSSMT`]FJmFn\\Danwl\ngNqDJHaQBSWUS@]FNRnnbEa@\ngNqDJIARBSWUUSP]FNRmsdyk]GsB<\ngNqHB@aInij`NcKMgWHvmtKB\ngNqHB@aInijihNcKMWWHvmtKB<\ngNqHB@aInijihNcKMWWHvmtKB>\ngNqHBLQInijihNkENZmshiK_KmBp`<\ngNqHBLQInijihNkENZmshiK_KmBp`>\ngNqHD@aInij`NkGIZmobFaXP\ngNqHH@aJnfjhDNfENRu[\\xICPlH>\ngNqHH@aJnfjhDNfENbu[\\xICPlH<\ngNqHH@aJnfjhDNfENbu[\\xICPlH>\ngNqHHGAJkjh@NlGI[gAH[m{@=\ngNqHHGAJkjh@NlGQkgAH[m{@=\ngNqHHGAJkjhHDNlGIkgAH[m{@+\ngNqHHGAJkjhHDNlGIkgAH[m{@-\ngNqHHGAJkjhHDNlGQ[gAOkm{@+\ngNqHHGAJkjhHDNlGQ[gAOkm{@-\ngNqHHGAJkjj`NfENRu[\\xICPlH\ngNqHHGAJkjjhDNfENSU[\\xICPlH<\ngNqHHGAJkjjhDNfENSU[\\xICPlH>\ngNqHHOAJkfh@NlGI[gAH[m{@=\ngNqHHOAJkfh@NlGI[gAH[m}@\ngNqHHOAJkfh@NlGQkgAH[m{@=\ngNqHHOAJkfh@NlGQkgAH[m}@\ngNqHHOAJkfh@NlGQkgAH[u}@=\ngNqHHOAJkfh@NlGQlvJ\\ek\\xIC^oh=\ngNqHHOAJkfhHDNlGIkgAH[m{@+\ngNqHHOAJkfhHDNlGIkgAH[m{@-\ngNqHHOAJkfhHDNlGIkgAH[m}@<\ngNqHHOAJkfhHDNlGIkgAH[m}@>\ngNqHHOAJkfhHDNlGQ[gAOkm{@+\ngNqHHOAJkfhHDNlGQ[gAOkm{@-\ngNqHHOAJkfi`NfENcU[\\xIC^lH\ngNqHHOAJkfi`NfENcU]\\xIC^lH\ngNqHHOAJkfi`NfENcU]_XIBp`\ngNqHHOAJkfj`NfENRu[\\xICPlH\ngNqHHOAJkfj`NfENcU[\\xICPlH\ngNqHHOAJkfjhDNfENSU[\\xICPlH<\ngNqHHOAJkfjhDNfENSU[\\xICPlH>\ngNqHHOAJkfjhdNfENcU]\\xICPlH<\ngNqHJIAIijjeDhNkENRmshik_XI|p`>\ngNqHaJ@SNRZZj@CkQtZypRF}_P=\ngNqIAJB\\dtuT@GVchus`dMv}`=\ngNqIAJB\\dtuT@GVchus`dMz~`=\ngNqIAJB\\dtuTDbGVcdus`dMz~`+\ngNqIAJB\\dtuTDbGVcdus`dMz~`-\ngNqIHO@ReUuT@GVChus`dMv}`=\ngNqIHO@ReUuT@GVChus`dMz~`=\ngNqLJIARFdLbdLjf@ztRmoFD\ngNqLJIARFdLbdLjf@ztRnoFD\ngNqLJIARFdLbdLji@ztRmoGt\ngNqLJIARFdLbdLjja`ztRmoFD<\ngNqLJIARFdLbdLjja`ztRmoFD>\ngNqLJIARFdLbdLjja`ztRmoGx<\ngNqLJIARFdLbdLjja`ztRmoGx>\ngNqLL@b^BBLbdLZ`dPzd[j{^p+\ngNqLL@b^BBLbdLZ`dPzd[j{^p-\ngNq`@ZdsSUPGQbgK\\zJZwVBp`\ngNq`@ZdsSUPGQbgK\\zJZwV|p`\ngNq`@ZdsSUTRGQbgK\\zJ\\wVBp`<\ngNq`@bdwSUPGQcfk[jaXP\ngNq`@bdwSUPGQcfk[j~_`\ngNq`@bdwSUPGQcfskjaXP\ngNq`@bdwSUTtGQcfk[ja_`<\ngNq`@bdwSUTtGQcfk[ja_`>\ngNq`@bdwSUTtGQcfk\\zJRwUBp`>\ngNq`@bdwSUTtGQcfkkjaXP<\ngNq`@bdwSUTtGQcfkkjaXP>\ngNq`@bdwSUTtGQcfs[ja_`<\ngNq`@bdwSUTtGQcfs[ja_`>\ngNq`@jduuURbrGQcdk\\xJZwQBp`<\ngNq`@jduuURbtGQcdk\\dJ\\uncya@>\ngNq`@jduuUTtGQcdk[haXP<\ngNq`@jduuUTtGQcdk\\yNZwQBp`<\ngNq`@mdTaeT@GTc]W[v=\ngNq`AVdtuUPGQbgI\\lLTyKVzpRD\ngNqa@bnR[ijhChqsUmuPlH\ngNqhHl@cIIKEh@NhFznwl=\ngNqhHl@cIIKEh@NhFznwt\ngNqhHlBsIIKJh@NhGNSdmu^ooyHFD\ngNqhHlGCIIKJh@NhFznwl=\ngNqhHlGCIIKJh@NhFznwt\ngNqhHlGCIIKJj`NbDmVwUBp`\ngNqhHlOCIIKFh@NhFznwl=\ngNqhHlOCIIKFh@NhFznwt\ngNqhHlOCIIKFh@NhFzoWt=\ngNqhHlOCIIKFi`NbDmVwUzp`\ngNqhHlOCIIKFi`NbDmVwcB\ngNqhHlOCIIKFi`NbDmWWUzp`\ngNqhHlOCIIKFj`NbDmVwUBp`\ngNqhHlOCIIKFjhTNbDmWWUBp`>\ngNqi@mJB]dTaeT@GTc]W[v=\ngNqi@mJB]dTaeT@GTc]W[z\ngNqiHl@c]ddebt@GTC]W[v=\ngNqiHl@c]ddebt@GTC]W[z\ngNqiHl@c]ddebt@GTC]Wkz=\ngNqiHlOC]ddecTDBGTC]W[v+\ngNqiHlOC]ddecTDBGTC]W[v-\ngNr@ACTjzjj@zpdmoio[X_v`@\ngNr@ACTjzjj@zpdnoio[X_v`@\ngNrDEcPDSpRZYjhCkQRv|X_vb@\ngNrDHlQxWpRjyjhCkARwNCDmu_LO{Q@\ngNrHEcQxIMMUTAthjnkm{\x7FZH\ngNrHHlPxIUMUTAt`rnkm}\x7FZP\ngNrHHlQxIU\\uTAtPijvzhVG}h`=\ngNrHHlQxIU\\uTAtPijwIbgI[jaX_vb@\ngNrHHlQxYIHXETAulu[\\sZwPlO{S@=\ngNrHHlQxYIHXETAulu[gIrVyfunaX_vf@\ngNrIHlQxRTjnZj@zHTu[]TKC~tP=\ngNrIHlQxRTjnZj@zHTu[_SmBp\x7FmD=\ngNrIXlPxAiJgRYRjZj@CjAnkm{\x7Fb@[R@=\ngNr`hZpiJyInfj`NeGO{R@\ngNt@@TfzBj@zvZmnQm[hVD\ngNt@@Tfzfj@zLlu[gASfyGUnaXP\ngNt@@Tfzfj@zLlu[gQSfyFuvaXP\ngNt@@TjZjj`PzXXiuUn\\EN[eApZEa@<\ngNt@@TjZjj`PzXXiuUn\\EN[eApZEa@>\ngNt@@dfnj`@zTRwqC]oX=\ngNt@@dfnj`@zTRwq}]oX=\ngNt@@dfnj`@zTSWqC]oX=\ngNt@@dfzZj@zl\\ejvyGRFaXP\ngNt@@dfzZj@zl\\ejv~HZEa@\ngNt@@dfzjj@zl\\ejv~HZEa@\ngNt@@dfzjj@zl\\ejwICEN[xahVD\ngNt@ADjzjj@zXTyKUms`dMBp\x7Fm@\ngNt@ADjzjj@zhdejv}f}tahVG}h@\ngNt@ATffjjb`zlTyJz~pREa@>\ngNtDHpxUpRjZjjQCjabgI[eApRF~@<\ngNtDHpxUpRjZjjQCjabgI[eApRF~@>\ngNtDJqHJPRZzj@CiQK_Guv}`=\ngNtHH`xIUMUTAtpqrVk[gAHZEa\x7FZP=\ngNtHH`xYIHYU@At`fobF{^p=\ngNtHHaxYIHXE@AoYm[H[m{@=\ngNtH`iPBYrSWUPRH]JIkxanwl+\ngNtH`iPBYrSWUPRH]JIkxanwl-\ngNtI@]P[ldadjj@zHlv]gASfygUvaX_v`@\ngNtI@iPSdfnj`@zTSWqC]oX=\ngNtIHaxB\\ddLj`@zPSWqC]oX=\ngNtI`]PB]qgIHYFj`NbKMVwLvmtKC~t@\ngNtI`iPBYreIkjh@NeDu|Pw[v=\ngNtI`iPBYreIkjj`NkGIZmrTyKV~HZEa@\ngNtLJqDJHtQdTaeTpGRbT\ngNtLJqHJPtadTaeT@GTc]W[v=\ngNtLJqHJPtadTaeTpGRbT\ngNtLJqHJPtadTaeTpGRbZznwl\ngNtLJqHJPtadTaeTpGRbZznwt\ngNtLlQHR`TaNLiM]UTAtXyjwNSdmuPlO{S@\ngNtLlQHR`TaNLiM]UTAtXyj{NSdmuPlO{S@\ngNtLlQHR`TaNLiM]UTAthzsdyK]Wk{~tp\ngNtLlQHR`TaNtiM]U@AuHyr\\unkm}\x7FZX\ngNtLlQHR`TaNtiM]ULAtXyj{NSdmu^lO{S@\ngNtLlQHR`TaNtiM]ULAthzsdyK]Wk{~tp\ngNtMLQHR`TaNRZzjhCiQugIrVzoWw}i`\ngNtMLQHR`TaNRZzjhCiQugIsVznww}i`\ngNt`CPdfzZj@zt\\moFD\ngNt`CPdfzZj@zt\\moGx\ngNt`EPTfzZjfPzt\\mshiK^LH<\ngNt`EPTfzZjfPzt\\mshiK^LH>\ngNt`hPiJyInfj`NcGMVwUBp\x7FdbZ[R@\ngNt`hPiJyInfj`NcGMVwUBp\x7FmH\ngNtdLx`DTHrRRqZdCiAM]W[v\ngNthJx`DYIHXmLAu`zK_DMv~`\ngNthLX`DYIHXmTAtPyjvzhVG}i`=\ngNthLX`DYIHXmTAtPyjwNSdmuPlO{S@\ngNthLX`DYIHXmTAt`znkm{\x7FZX=\ngNthMX`DYIHXmTAtPyLvzHVG}i`\ngNthMX`DYIHXmTAtPyLvzHW{}i`\ngNthMX`DYIHXmTAu`zM_DMv~\x7FmL\ngNthMX`DYIIXm@Au@wUv}`\ngNthejqHJWrSSUSRH]ZJRwaC~tP<\ngNthejqHJWrSSUSRH]ZJRwaC~tP>\ngNtiLPiPSdfnjj@zT]Yr\\enku}\x7FZX\ngNtiLPiPSdfnjjdPzT]YhTyKVzoWw}i`-\ngNu@DPdwSUPGQcfk[jaXP\ngNu@DPdwSUPGQcfk[jaX_rQMH\ngNu@DPdwSUPGQcfk\\zJ\\wUBp`\ngNu@DPdwSUTtGQcfk\\fJ\\enjEa@<\ngNu@DPdwSUTtGQcfk\\fJ\\enjEa@>\ngNu@DPdwSUTtGQcfk\\zJRwUBp`<\ngNu@DPdwSUTtGQcfk\\zJRwUBp`>\ngNu@DPdwSUTtGQcfkkjaXP<\ngNu@DPdwSUTtGQcfkkjaXP>\ngNuHDz@aIkjiiDNmGI\\dLTuoBD<\ngNuHDz@aIkjiiDNmGI\\dLTuoBD>\ngNuHDz@aIkjiiDNmGI\\zJZwaB<\ngNuHEhOCIIKFh@NhFznwl=\ngNx@@dju\\@GTc]W[v=\ngNx@@dsSUPGSbgIZmn\\DahVD\ngNx@@dsSUPGSbgIZmshis\\xICPlH\ngNx@@dsSUPGSbgQZmn\\DahVD\ngNx@@dsSUPGUddmVwhwmdMBp`\ngNx@@dsSUPGUddmVwhwndMBp`\ngNx@@dsUUTbGSbgIZmn\\DahVD<\ngNx@@dsUUTbGSbgIZmn\\DahVD>\ngNx@@dsUUTbGSbgIZmrPqSfypRFaXP<\ngNx@@dsUUTbGSbgIZmsPqSdms`dMBp`<\ngNx@@dsUUTbGSbgIZmsPqSdmsoDMBp`<\ngNx@@dsUUTbGSbgIZmsPqSdmsoDMBp`>\ngNx@@dsUUTbGSbgIZms`qs\\xICPlH<\ngNx@@dsUUTbGSbgIZms`qs\\xICPlH>\ngNx@@dsUUTbGSbgIZmshis\\xICPlH>\ngNx@@dsUUTbGSbgQZmn\\DahVD<\ngNx@@dsUUTbGSbgQZmn\\DahVD>\ngNx@@dsUUTbGSbgQZmsPqSdms`dMBp`<\ngNx@@dsUUTbGSbgQZms`qs\\xICPlH<\ngNx@@dsUUTbGSbgQZms`qs\\xICPlH>\ngNx@@dtuT@GVcdms`dMv}`=\ngNx@@dtuT@GVcdms`dMv~`\ngNx@@dtuT@GVcdn\\FM[gAH[m}@\ngNx@@dtuT@GVchus`dMv}`=\ngNx@@dtuT@GVchus`dMv~`\ngNx@@dtuT@GVchvSENZwNBPw[z\ngNx@@dtuTDbGVcdms`guv}`+\ngNx@@dtuTDbGVcdms`guv}`-\ngNx@@dtuTDbGVcdn]EM[gAH[m}@<\ngNx@@dtuTDbGVcdn]EM[gAH[m}@>\ngNx@@dtuTDbGVcdus`dMv}`+\ngNx@@dtuTDbGVcdus`dMv}`-\ngNx@@dtuTDbGVchv]EM[gAH[m}@<\ngNx@@dtuTDbGVchv]EM[gAH[m}@>\ngNx@@dtuTpGSbgIZms`qK\\xIC^lH\ngNx@@dtuTtbGQbkIkgAH[m}@>\ngNx@@dtuUPGSbgIZmn\\DahVD\ngNx@@dtuUPGSbgIZmrpqSdm[gAHZEa@\ngNx@@dtuURbRGSbgIZmshiK\\xICPlH>\ngNx@@dtuURbTGSbgIZmshiK\\xICPlH>\ngNx@@dtuUTRGSbgIZms`qK\\xICPlH<\ngNx@@dtuUTRGSbgIZnn\\DahVD<\ngNx@@dtuUTRGSbgIZnn\\DahVD>\ngNx@@dtuUTbGSbgIZmrXiKVypRFaXP<\ngNx@@dtuUTbGSbgIZmrXiKVypRFaXP>\ngNx@@dtuUTbGSbgIZmsPqRVms`dMBp`<\ngNx@@dtuUTbGSbgIZmsPqRVms`dMBp`>\ngNx@@dtuUTbGSbgIjmn\\DahVD<\ngNx@@dtuUTbGSbgIjmn\\DahVD>\ngNx@@dwPUPGQrVk[t[VrFaXP\ngNx@@dwPUPGQrVk\\zJ\\whvndMBp`\ngNx@@dwPUPGQrVkkt[VrFaXP\ngNx@@dwTuPGSbgIZmobFaXP\ngNx@@dwTuPGSbgIZmshis\\kiCPlH\ngNx@@dwTuPGUedmVwhvmdMBp`\ngNx@@dwTuPGUedmVwhvndMBp`\ngNx@@dwTuPGUedmVwhzmdMBp`\ngNx@@dwTuPGUedmVypTyoQu]HZEa@\ngNx@@dwTuPGUedmVytTyoQm]HZEa@\ngNx@@dwTuPGUedmWWhvmdMBp`\ngNx@@dwTuPGUedmWWhvndMBp`\ngNx@@dwTuPGUedmgWhvmdMBp`\ngNx@@dwTuPGUedmgWhvndMBp`\ngNx@@dwTuPGUedugWhvmdMBp`\ngNx@@eSUUPGUEDmVwjwmdMBp\x7Fm@=\ngNx@@eSUUPGUEDmVwjwndMBp\x7Fm@\ngNx@@eSUUPGUEDmVwj{ndMBp\x7Fm@=\ngNx@@eSUUPGWCENRu[^hNBPtKB\ngNx@@eSUUPGWCENRu[^hNBPtKC~t@=\ngNx@@eSUUPGWCENRu[^hN|PtKC~t@\ngNx@@eSUUPGWCENRu[gASf}P]xahVG}h@\ngNx@@eSUUPGWCENRu[gAcf}P\\DahVG}h@\ngNx@@eSUUPGWCENRu]gAcV}P\\DahVG}h@\ngNx@@eSUUPGWCENbu[^hNBPtKC~t@\ngNx@@eSUUPGWCENcV]^hNBPtKC~t@\ngNx@@eSUUTBGWCENRu[gASf}P]xahVD<\ngNx@@eSUUTBGWCENRu[gASf}P]xahVD>\ngNx@@eSUUTBGWCENRu[gAcf}P\\DahVD<\ngNxA@IRZZj@CkQrVypRF{^p=\ngNxA@IRZZj@CkQtZypRF{^p=\ngNxA@IRijjhCkabgIZmoTGAHZEa@\ngNxA@IRijjjACkabgIZms`is^hN|PtKB<\ngNxA@IRijjjACkabgIZms`is^hN|PtKB>\ngNxA@IRjZj@ChaSdmz`xIC]oX=\ngNxA@IRjZjhCkabgIZmoTGAHZEa@\ngNxA@IRkijhCjbRVk[v[vrFaX_v`@\ngNxA@IRkijhCjbRVk[v]vrFaX_v`@\ngNxA@IRkijhCkabgIZmshis\\{qCPlO{P@\ngNxA@IRkijhCkabgQZmrPqrV}g\\DahVG}h@\ngNxDD@b^BSWMPRH]JIkxanwl+\ngNxDD@b^BSWMPRH]JIkxanwl-\ngNxDDDR^BSWMPRH]JIkxanwl+\ngNxDDDR^BSWMPRH]JIkxanwl-\ngNxDHDQHbS]UU@]VNRu[_DMBp`\ngNxDHGBnBUSUURH]LLTyJz}P\\DaofD<\ngNxDHGBnBUSUURH]LLTyJz}P\\DaofD>\ngNxDHOANBS]UU@]VNRu[^cr|PtKC~RAamH\ngNxDHOA^BS]UU@]VNRu[\\cqCPlOyHFFt`\ngNxDHOA^BS]UU@]VNRu[^cr|PtKC~RAamH=\ngNxDHOA^BS]UU@]VNRu[_DMBp`\ngNxDHOA^BS]UU@]VNRu[_DMBp\x7Fd`XP\ngNxDHOA^BS]UU@]VNRu[_DMBp\x7Fd`X[R@=\ngNxDL@aNBSMTu@]VRRu[^c^vPtKB\ngNxE@jCT@eJfjj`NjFIZmobFaXP\ngNxEHBqE`eInjjiDNkGIZmnUxahVG|dCB<\ngNxEHBqE`eInjjiDNkGIZmnUxahVG|dCB>\ngNxEHOA^DeInfj`NkGIZmnQtahVG|dCCZP\ngNxEHOA^DeInfj`NkGIZmnUxahVG|dCCZP\ngNxHAjAJfjj`NfFJRu[\\hICPlO{P@\ngNxHAjAJfjjhDNfFJRu[\\hICPlH>\ngNxHAjAJfjjhDNfFJRu[gAcfyWbFaXP<\ngNxHAjAJfjjhDNfFJRu[gAcfyWbFaXP>\ngNxHD@aIkjhIDNeDm|Pw[v-\ngNxHD@aInfj`NkGIZmobFaXP\ngNxHD@aInij`NkKIZmoQm[HZEa@\ngNxHDOAInjjiDNkGIZmnQxahVD>\ngNxHH@aIfjj`NgENRu[gQSf}GlDahVG}i@\ngNxHHGAIfjj`NgENRu[\\xICPlOyHEFt`\ngNxHHGAIfjj`NgENRu[^cvBPtKC~RAQmH\ngNxHHGAIfjj`NgENRu[^cvBPtKC~t`\ngNxHHGAIfjjiDNgENRu[^cvBPtKB<\ngNxHHGAIfjjiDNgENRu[^cvBPtKB>\ngNxHHGAJijj`NnFJ\\ejv}P\\DahVG}i@=\ngNxHHGAJkjh@NlGQkgAH[m{@=\ngNxHHGAJkjj`NfENRu[\\xICPlH\ngNxHHOAJkfh@NlGQkgAH[m{@=\ngNxHHOAJkfh@NlGQkgAH[m}@\ngNxHHOAJkfhHDNlGIkgAH[m{@+\ngNxHHOAJkfhHDNlGIkgAH[m{@-\ngNxHHOAJkfhHDNlGIkv]pRF}_P+\ngNxHHOAJkfhHDNlGIkv]pRF}_P-\ngNxHHOAJkfj`NfENRu[\\xICPlH\ngNxHHOAJnjjhDNfENRu[\\{qCPlH<\ngNxHHOAJnjjhDNfENRu[\\{qCPlH>\ngNxHJIAIiji`NcEVRwN|_W[v\ngNxHaJ@SNRZZj@CkQrVypRF{^p=\ngNxHaJ@SNRZZj@CkQtZypRF{^p=\ngNxHaJ@SNRZZj@CkQtZypRF}_P=\ngNxHaJ@SNRZZj@CkQt[MbgIZwNBPwkz=\ngNxHaJ@SNRZZj@CkQt[NCFms`dMv~`\ngNxHaJ@SNRZZjBQCkQrZypRF{^p+\ngNxHaJ@SNRZZjBQCkQrZypRF{^p-\ngNxHaJ@SNRZZjBQCkQrZypRF}_P+\ngNxHaJ@SNRZZjBQCkQrZypRF}_P-\ngNxHaJ@SNRZZjBQCkQt[Nbfms`dMv~`<\ngNxHaJ@SNRZZjBQCkQt[Nbfms`dMv~`>\ngNxHaJ@SNRZZjjQCiqSdmVyLTek\\xICPlH<\ngNxHaJ@SNRZZjjQCiqSdmVyLTek\\xICPlH>\ngNxHaj@SnrRFPJhChyKUu{MkYCPlO{P@=\ngNxHaj@SnrRFPJhChyKYu{MkYCPlO{P@=\ngNxHaj@SnrRFPJhChyKYv]EN[v[WRFaX_v`@\ngNxHaj@SnrRFPJhChyMYu{MkYCPlO{P@=\ngNxHaj@SnrRFPJhChyMYu{MkiCPlO{P@\ngNxHhG@]IR[jZhCiqSdmVwJzPtKC~RAamH\ngNxIAJB\\dtuT@GVchus`dMv}`=\ngNxIAJB\\dtuT@GVchus`dMz~`=\ngNxIAJB\\dtuTDbGVcdus`dMz~`+\ngNxIAJB\\dtuTDbGVcdus`dMz~`-\ngNxIAjC\\dwTuPGUedugWhzmdMBp`\ngNxIHGBRdwTuPGSbgIZmoQy]HZEa\x7FI@pvd@\ngNxIHO@ReUuT@GVChus`dMv}`=\ngNxIHO@ReUuTDBGVCdus`dMv}`+\ngNxIHO@ReUuTDBGVCdus`dMv}`-\ngNxIHOBReUsT@GVChus`dMv}`=\ngNxIHOB\\eUsT@GVChu{NxIC]oX=\ngNxLHGBnC\\Djfjj@zhXirV}P\\Daogx\ngNxLHGBnC\\Djnjj@zHTyK\\xIC_Op\ngNxLHGBnChDjfjjdPzhXirVyP\\Dao`<\ngNxLHGBnChDjfjjdPzhXirVyP\\Dao`>\ngNxLHOANF\\DfZjjdPzlTejvywbFaXP<\ngNxLHOANF\\DfZjjdPzlTejvywbFaXP>\ngNxLJHaQFbLbdLj`@zd[j{^p\ngNxLJIARFdLbdLj`@zd[j{^p\ngNxLJIARFdLbdLj`@zd[j{_P\ngNxLJIARFdLbdLjf@zTSWUv}`\ngNxLJIARFdLbdLjf@zTSWUv~`\ngNxLJIARFdLbdLjf@ztRmoFD\ngNxLJIARFdLbdLjf@ztRnoFD\ngNxLJIARFdLbdLji@zTSWUv}`\ngNxLJIARFdLbdLji@zTSWUv~`\ngNxLJIARFdLbdLji@zTSWUz~`\ngNxLJIARFdLbdLji@ztRm@\ngNxLJIARFdLbdLji@ztRmoGt\ngNxLJIARFdLbdLjja`ztRmoFD<\ngNxLJIARFdLbdLjja`ztRmoFD>\ngNxMHOANF\\IJSMMU@]VJRu[\\{qCPlO{R@\ngNx`BDdwSUPGQcfk[jaXP\ngNx`BDdwSUPGQcfk[jaX_rQMH\ngNx`BDdwSUPGQcfk\\zJ\\wUBp`\ngNx`BDdwSUPGQcfskjaXP\ngNx`BDdwSUTtGQcfk[ja_`<\ngNx`BDdwSUTtGQcfk[ja_`>\ngNx`BDdwSUTtGQcfk\\zJRwUBp`<\ngNx`BDdwSUTtGQcfk\\zJRwUBp`>\ngNx`BDdwSUTtGQcfkkjaXP<\ngNx`BDdwSUTtGQcfkkjaXP>\ngNx`DBdwSUPGQcfk[jaXP\ngNx`DBdwSUPGQcfk\\zJ\\wUBp`\ngNx`DBdwSUTtGQcfk[ja_`<\ngNx`DBdwSUTtGQcfk\\zJRwUBp`>\ngNx`bDnLiMtuTAtXyjvzhVD\ngNx`hEIWIMtuTAuXyKUm|PtKC~t`\ngNx`hEIWIMtuTAuXyKUm|PtK}~t`\ngNx`hEIWIMtuTAuXyKUu|PtKC~t`\ngNxaBDYR[ijhChqsUmuPlH\ngNxdMD@baFRRFKU@]DNSMobF~X_vf@\ngNxdMD@baFRRFKU@]DNSNobF~X_vf@\ngNxdMD@baFRRVKT`]HIkj{^p\ngNxhKD@cIICEh@NdDm|Pw[v\ngNxhMD@cIICEj`NjGIZmobFaX_vf@=\ngNxhMD@cIICEj`NjGIZmoczaX_vf@=\ngNxhMD@cIICEj`NjGIZnobFaX_vf@\ngNxhMD@cIICEj`NjGIZnsdyk_DMBp\x7FmL\ngNxhMD@cIICEj`NjGIjmobFaX_rQMMi`=\ngNxhMD@cIICEj`NjGIjmobFaX_vf@=\ngNxhMD@cIICEj`NjGIjmobFa_ovf@\ngNxhMD@cIICEj`NjGIjmsdyK_DMBp\x7FmL\ngNxhMD@cIICEj`NjGIjnobFaX_vf@\ngNxhMD@cIICEj`NjGIjnsdyk_DMBp\x7FmL\ngNxhMD@cIICEj`NjGIkMobFa_ovf@\ngNxhMD@cIICEj`NlGQ[xaoWw}i`=\ngNxhMD@cIICEj`NlGQkxanwo}i`=\ngNxhMD@cIICEj`NlGQkxanww}i`\ngNxhMD@cIICEj`NlGQkxaoWw}i`=\ngNxhMD@cIIKEh@NhFznwl=\ngNxhMD@cIIKEh@NhFznwt\ngNxhMD@cIIKEh@NhFzoWt=\ngNxhMD@cIIKEh@NhGNSfmu]oh\ngNxhMD@cIIKEi`NbDmVyr\\enkua@\ngNxhMD@cIIKEi`NdDv\\gI[j}^p\ngNxhlEJB]iRZzj@CiQM_DMv}\x7FmL=\ngNxhlEJB]irJPrj@CjQnkm{@=\ngNxhlEJB]irJPrj@CjQomz{^p=\ngNxhlEJB]irJPrj@CjQsdyk]W[z\ngNxiMD@c]ddebt@GTC]W[v=\ngNy@BDfZZj@zlTyjv~pZEa@\ngNy@BDfZZjb`zlTyjwNbdm}`tKB>\ngNy@BDfZZjb`zlTzjwNbdm}`tKB>\ngNy@BDfZjjTR`zlTzjwNCDm}`tKB>\ngNy@BDfZjjdPzlTyjv~pZEa@>\ngNy@BDfZjjdPzlTyl{NbgM}`tKB<\ngNy@DDffjjdPz\\TyKUn]EI[gAHZEa\x7FZH<\ngNy@DDffjjdPz\\TyKUn]EI[gAHZEa\x7FZH>\ngNy@DDfnj`dPzTRwqC]oX+\ngNy@DDfnj`dPzTRwqC]oX-\ngNy@DDfnj`dPzTRwq}]oX-\ngNy@DDfnj`dPzTRytTuobF{_P>\ngNy@DDfnj`dPzTSWqC]oX+\ngNy@DDfnj`dPzTSWqC]oX-\ngNy@DDfzZj@zl\\ejv~HZEa@\ngNy@DDfzZj@zl\\ejv~HZE~@\ngNy@DDfzZj@zl\\ejwNbfm|PtK|\ngNy@DDfzZj@zl\\ejwNbgM|PtKB\ngNy@DDfzZj@zl\\ejz~HZEa@\ngNy@DDfzZj@zl\\ej{Nbfm|PtKB\ngNy@DDfzZj@zl\\elz~HZEa@\ngNy@DDfzZj@zl\\flz~HZEa@\ngNy@DDfzZjfPzl\\ej{NbgM|PtKB<\ngNy@DDfzZjfPzl\\ej{NbgM|PtKB>\ngNy@DDfzfj@zl\\ejv~HZEa@\ngNy@DDfzfj@zllejv}FulahVD\ngNy@DDfzjjdPzl\\ejv~HZEa@<\ngNy@HDfZjjdPz\\TyKUms`dMBp`<\ngNy@HDfZjjdPz\\TyKUms`dMBp`>\ngNy@HDfZjjdPz\\TyKUn]EN[g^HZEa@<\ngNy@HDfZjjdPz\\TyKUn]EN[g^HZEa@>\ngNy@HDfZjjdPz\\TzKUms`dMBp`<\ngNy@HDfZjjdPz\\TzKUms`dMBp`>\ngNy@JDffj`@zt\\en\\Danwl\ngNy@JDffj`@zt]Fn\\Danwl\ngNy@JDffji@zLUYK\\xIC]oX\ngNy@JDffjjTRPzlTyJwNbfm}`dKB<\ngNy@JDffjjTR`zlTyJwIcdm[{AOfD<\ngNy@JDffjjTR`zlTyJwNbfm}`dK|<\ngNy@JDffjjb`zlTyJv~pREa@<\ngNy@JDffjjb`zlTyJv~pREa@>\ngNy@JDffjjb`zlTzLv~pREa@<\ngNy@JDffjjb`zlTzLv~pREa@>\ngNy@hAteInij`NgENRu[_DMBp\x7FmH\ngNyAHIJSMMU@]NJ\\ejwNbgMsoDMBp\x7FmH\ngNyDGQDJHRZzjXCkQrWNSfmxP`\ngNyDGQHJPRZzjXCkQrV|HP\ngNyDGQHJPRZzjXCkQrV|O`\ngNyHE@DYICHuU@auPyKUm|PtKB<\ngNyHE@DYICHuU@auPyKUm|PtKB>\ngNyHE@DYIHXmA@at`eobF{^p+\ngNyHE@DYIHXmA@at`eobF{^p-\ngNyHEAxIU\\uTAtPjrVywcz{__vb@\ngNyHEAxIU\\uTAtpitZk[gAHZEa\x7FZH=\ngNyHEAxYIHXuA@at`fobF{^p+\ngNyHEAxYIHXuA@at`fobF{^p-\ngNyHKAxIU\\u@Au`zM\\xIC]oX\ngNyHdIPSeJSSUP@]ZNcYpXun\\Danww}h`\ngNyHdIPSeJSSUS@]FJmFs`qK\\xIC^oo{Q@\ngNyHdIPSeJSWUPRH]JIkxanwl+\ngNyHdIPSeJSWUPRH]JIkxanwl-\ngNyHdIPSeJSWUPRH]JIkxanwt<\ngNyHdIPSeJSWUPRH]JIkxaoWt+\ngNyHdIPSeJSWUPRH]JIkxaoWt-\ngNyHdIPSeJSWUPRH]JIlyNZwqC]oh<\ngNyHdIPSeJSWUPRH]JIlyNZwqC]oh>\ngNyIDIPSdffjj@z\\TzMUv\\FI[gAHZEa\x7FZH\ngNyIDIPSdfnj`dPzTSWqC^oh+\ngNyIDIPSdfnj`dPzTSWqC^oh-\ngNyIDMP[dfzfj@zl\\ej{IbgI[e]HZEa@\ngNyLGQDJHtQdTaeTpGRbT\ngNyLGQDJHtQdTaeUHGRbT\ngNyLGQHJPtadTaeTpGRbT\ngNyLGQHJPtadTaeUHGRbT\ngNyLGQbKDvIdTaeTpGRbT\ngNyLcaHR`TaNLyEHYU@AuHyr\\enku}\x7FZD\ngNyLcaHR`TaNLyEHYU@AuHyr\\unkm}\x7FZD\ngNyLcaHR`TaNLyEHYULAtXejwNSdmxp\x7FmB\ngNyLcaHR`TaNLyEHYULAtXej{NSdmxp\x7FmB\ngNyLcaHR`TaNLyEHYULAthfsdyK]Wk{~tH\ngNy`JDTfzZjfPzt\\moFD>\ngNydMDpDTHrRPqZhCkAr[NSdmtPww{S@\ngNyhCE`DYIIXmTAtPejwNSdmuPlO{P`\ngNyhCEaxYIIXuTAtPejvzhVG}hP=\ngNyhKEaxYIIXuUBau`e[^LH>\ngNyhKEaxYIIXuUBau`e[^Op>\ngNyhKEaxYIIXuUBau`e]^LH<\ngNyhKEaxYIIXuUBau`e]^LH>\ngNyhMEPDYIHXmTAtPyLvzHVG}i`\ngNyhbEiPScNQRFUS@]FIZms`yK^LO{P`\ngNzHHlZGAJijj`NdFUu]oo{R@\ngN|@@ZeSUUPGVEEu|n{kC~t@=\ngN|@@bdwSUPGQefk[d[WZEa@\ngN|@@bdwSUPGQefk\\zJ\\wHvntKB\ngN|@@mdTaeT@GTc]W[z\ngN|DEbHb^FQRFPU@]XmVwJwmtKC~tH=\ngN|LlZIBTBdIqeIkjj`NmGKlyNRwcC~tp\ngN|LlZIBTBdIveIkjjPNmGK\\yNR\x7FmL\ngN|`hZEIWIMtuTAuhy[^LO{R@\ngN|`hZEIWIMtuTAuhy]^LO{R@\ngN}HEcAxIU\\uTAtPijvzhVG}h`=\ngN}HEcAxYIIYATAubu[gArVyV}naX_va@\ngN}HebIPSeJSSUS@]FJZmsXirVmu^lO{Q@\ngN}HebIPSmJSSUURH]FJZmsXirVmuPlO{Q@+\ngN}HebIPSmJSSUURH]FJZmsXirVmuPlO{Q@-\ngN}HebIPSmJSSUURH]JJlvJ\\ek]Wk{~tP+\ngN}HebIPSmJSSUURH]JJlvJ\\ek]Wk{~tP-\ngOp@DjfVjjdEDNnFJ\\ejwMBgIZwjCoDMB\x7F_die`<\ngOp@DjfVjjdEDNnFJ\\ejwMBgIZwjCoDMB\x7F_die`>\ngOp@DjfVjjdEHNnFJ\\ejwMBgIZwjCoDMB\x7F_die`>\ngOp@DjfVjjdEHNnFJ\\ejwMCGIZwj}oDMB\x7F_die`<\ngOp@DjzfZj`NnFJ\\ejv}g\\DahVG|dLl\ngOp@LdadMBj`NcdmVwlvmdMBp\x7Fdmc`=\ngOp@LdadMBj`NcdmVwlvmdMB\x7F_dmc`=\ngOp@LdadMBj`NcdmVytTuoYm]HZEa\x7FI[G@\ngOp@LdadMBj`NcdmWWlvmdMBp\x7Fdmc`=\ngOp@LdadMBjidNcdmVwlvmdM|p\x7Fdmc`+\ngOp@LdadMBjidNcdmVwlvmdM|p\x7Fdmc`-\ngOp@LdadMBjidNcdmWWlvmdM|p\x7Fdmc`+\ngOp@LdadMBjidNcdmWWlvmdM|p\x7Fdmc`-\ngOpB@xQpSagCIIKHjhHCjAoYy^wku}\x7FKCSH`=\ngOpBADQpSagCHiCEjhHCjQnU{^oWw|eLl=\ngOpL@xQpSaddadUTDAt`foYy^H[u}\x7FICS@=\ngOpMAxZ`M@IRj[Fjj@zhXijv}P]x~hVG|dml\ngOp`@dfzMZj`NkGIZmobFaX_rVqp\ngOp`@dfzMZj`NkGIZnobFaX_rVqp\ngOp`@dfzMZjidNkGIZmobF~X_rVqp<\ngOp`@dfzMZjidNkGIZmobF~X_rVqp>\ngOp`@dfzMZjidNkGIZnobF~X_rVqp<\ngOp`@dfzMZjidNkGIZnobF~X_rVqp>\ngOphH`DYIHYVmU@]TNSU[_DMBp\x7Fdck`\ngOq@@dsQkUTAtxitVk[gAHZEa\x7FI[G@\ngOq@@eMtUTEIAuhiK\\hIC]o_yHYx+\ngOq@@eMtUUUIAtxirVk[eAHZEa\x7FICO@<\ngOq`@bdwQkUUMAtXyjvzhVG|el\\<\ngOt@@TjZkjj`NfFJ]U[gAcfyP\\FaX_rQuuh@\ngOu@DPdwU[UTAtXyjvzhVG|d]\\\ngOx@@eSQmUTAupqSdmVwjC`dMBp\x7FdmckP@=\ngOx`hEIWIMtZuU@]VNRu[_DMBp\x7FdmckR@\ngOxhMD@cIICJujhCjarZk[xahVG|d]]ZX=\ngOxhMD@cIICJujjYCjarZk[xahW{|d]]ZX\ngOy@DDfzMZj`NkGIZmobFaX_rVqp\ngOy@DDfzMZj`NkGIZnobFaX_rVqp';
  result = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(data_0, '\n');
  return result;
}
;
carcc.gettorsionRangeData = function gettorsionRangeData(){
  carcc.$clinit_TorsionDBData();
  var data_0, result;
  data_0 = '14-38,46-74,87-105,169-191\n33-44,47-81,83-92,92-103\n133-160,167-185\n159-184,249-280\n199-221,221-232,232-255,258-267\n40-75,160-200\n18-26,28-37,37-45,48-64,72-81,93-105,109-127,171-189\n-27-27,49-56,56-76,76-104\n-43-43,45-65,65-115\n-28-28,58-61,61-70,70-90\n-16-16,44-69,69-82,157-203\n-21-21,21-52,73-107\n-11-11,20-33,33-39,39-59,59-78\n3-25,25-43,43-67,78-102\n0-24,32-49,49-52,52-69,69-73,73-77,77-79,79-87,87-89,89-91\n0-26,26-46,58-76\n-29-29,29-51\n0-20,170-190\n-14-14,21-58,58-70,70-89,89-91\n8-37\n-1-1,1-28,28-30,30-47,52-69,69-87\n0-27,27-29,29-43,43-47,47-56,56-63\n42-60,60-62,62-80,80-100,136-146,146-155,171-189\n167-193\n-12-12,24-41,41-50,50-71,71-81,164-180\n-11-11,43-70\n-23-23,40-70\n28-42,42-75,75-87,160-200\n42-70\n36-55,55-73,293-321\n31-49,49-61,61-75,294-322\n-3-3,3-15,53-71\n55-63,74-93,114-135,143-170,170-190\n0-4,7-29,42-72\n17-92,92-107,132-179,179-181\n34-65,83-101,140-153,160-180\n32-51,72-92,151-169\n33-51,70-87,151-176\n46-79,156-204\n40-67,153-175,175-185\n40-65\n40-63\n48-75,156-176,176-184\n33-52\n-1-1,1-17,21-37,165-176,176-184\n37-56,65-86,152-175\n47-74,79-88,170-190,199-217,296-315\n49-75,75-86,291-318\n-4-4,4-9,9-11,11-13,46-74,74-93\n-9-9,49-75\n0-18,28-46,47-58,58-75,85-107,125-133,169-191\n-1-1,1-13,13-42,125-146,156-167,167-193\n38-60,60-62,62-66,66-85,155-178,178-182\n33-54,64-88,155-176\n33-55,66-85,155-176\n22-29,30-59,59-63,63-65,65-70,70-79,156-181,181-195,259-277,277-286,286-319\n13-29,29-44,44-52,52-67,67-73,73-84,136-155,155-173,173-185,185-204,273-292,292-298,298-320\n15-29,34-41,41-49,49-72,72-83,137-155,171-197,197-211,267-285,288-314\n34-51,51-71,140-151,151-162,172-179,268-286,286-298,302-317\n33-58,58-78,162-198\n29-42,42-59,67-88,148-164,164-196\n29-56,62-79,79-90,158-179\n30-43,43-48,48-55,55-63,63-83,136-166,166-179,179-181\n28-46,46-51,51-58,58-71,71-83,83-100,149-174,174-179,179-181\n160-180\n-11-11,18-48,51-70\n171-189\n0-10,10-14,14-34,34-55,72-77,77-88,88-92\n-10-10,11-31,31-53,67-78,78-102\n0-19\n-9-9,9-12,12-19,19-35,35-39,39-44,55-73\n32-82,158-202\n39-61,61-83,162-177,177-183\n41-77,156-204\n45-84,159-201\n48-68,81-99,139-157,157-160,160-165,165-175,175-179,179-181\n-2-2,2-11,11-50,51-60,63-70,70-75,84-103,110-137,137-168,171-189\n48-69\n31-49,49-58,58-84,154-171,171-175,175-185\n33-56,61-87,151-177,179-181\n37-60,60-82,160-182,182-205,275-293,306-324\n32-58,161-174,174-179,179-180,187-209,282-300,306-324\n157-180\n3-19,30-61,61-89,149-180\n42-65,91-109,143-167,167-193\n27-60,60-73,73-91,100-115,115-124,124-134,159-201\n17-48,48-51,51-78\n129-132,158-180\n17-35,48-69,325-343\n20-38,48-70,321-338,338-350\n44-75,167-193\n38-59,59-80,161-180\n46-71,151-165,165-195\n166-194\n28-57,57-96,158-177,177-183\n39-53,58-72,75-93,109-127,163-180\n2-15,24-63,63-100,134-149,149-178,178-180\n26-57,57-63,63-93,147-172,172-178,178-182\n30-49,49-52,52-65,65-101,144-179,180-215,263-303,303-338\n20-33,33-62,68-93,141-160,160-162,162-178,178-203,203-219,267-281,281-300,304-324,324-326,326-341\n43-70,170-190\n38-50,56-60,65-72,72-91,149-169,169-191\n49-72,166-180\n48-72,168-192\n38-57,65-83,158-180\n37-63,74-85,150-168,190-208,211-229,288-305,307-324,338-365\n50-70,70-71,76-80,80-83,87-99,164-181,183-203,275-290,290-300\n294-319\n296-319\n48-80,183-192,296-314\n47-79,158-170,170-175,175-185\n41-65\n48-73\n-2-2,2-4,4-19,19-24,24-27,27-29,40-58\n36-54,54-61,61-76,167-193\n24-43,43-68,168-192\n26-38,39-69\n19-31,31-34,37-66,302-320\n174-195,276-289,289-306\n-1-1,1-22,22-35,35-47,47-66,66-76,76-86,86-93,93-96,96-121,121-128,128-140,140-148,148-170,170-190\n4-28,43-76,76-87,160-178\n39-48,62-91,154-179,179-181\n43-57,57-62,62-80,165-195\n30-77,77-81,81-94,164-196\n34-47,47-58,58-85,154-169,169-180\n48-71,167-193\n44-69,69-71,71-86\n5-29,56-87,97-115\n44-82,158-202\n47-65,165-195\n39-63,169-191\n164-196\n51-75,177-195,290-308\n163-191\n43-61,174-190,190-201,212-230,278-296\n45-68,163-190\n50-76,165-189\n51-79,155-190\n41-61,61-81,86-99,130-138,172-190\n178-198,202-229,276-308\n180-192,216-236,276-308\n189-212,218-233,266-279,285-298\n20-67,67-70,70-96,148-175,175-185\n54-85,289-316\n35-46,46-54,54-58,58-60,60-62,62-85,288-310,317-325\n44-76,163-197\n31-52,59-87,87-99,149-178,178-182\n40-78,160-200\n36-55,55-58,58-61,61-63,149-166,166-170,170-172,172-192,278-296,301-321\n42-58,61-78,78-90,152-170,178-194,194-213,270-288,293-313\n292-314\n47-71,169-191\n42-78,164-196\n30-61,61-92,144-170,170-178,178-182\n47-81,169-201,278-291,291-319\n42-81,163-200,282-318\n41-69,69-81,167-188,188-203,288-315\n46-80,167-196,290-316\n50-78,165-193,193-205,293-318\n48-76,167-203,298-320\n44-62,285-303\n47-76,165-195\n49-71,168-192\n38-84,149-165,165-195\n33-41,44-52,52-55,55-82,83-102,150-163,168-192\n26-55\n30-41,41-83,158-166,166-194\n-28-28,28-53\n-7-7,7-25,51-76,81-103,132-143,150-210\n-5-5,5-22,25-43\n0-25,38-46\n-17-17,17-25,25-28,28-37,37-44,44-45,61-69,80-100\n-11-11,22-40,155-205\n-4-4,16-30,30-60,60-90,90-111,131-142,156-176,176-180\n29-57,60-89,151-176\n35-80,152-179,179-181\n44-70,165-192,287-304\n46-77,167-193\n46-74,165-195\n43-73,168-192\n34-47,53-76,165-182,182-191,286-294,294-297,297-315\n37-45,58-76,158-175,175-179,179-196,275-297\n44-72,168-189,292-315\n51-74,167-190,282-313\n33-59,59-61,61-69,69-81,99-117,156-174,274-293,293-301,301-303,303-305,319-337\n32-45,45-50,50-51,54-58,58-59,61-65,65-67,70-74,74-75,99-117,275-293,293-295,295-298,298-306,306-318,318-336\n-2-2,2-16,32-50,97-116\n153-170,171-189\n-13-13,14-16,16-45,50-83\n-14-14,18-32,32-38,111-132,171-189\n50-71,170-190\n-12-12,171-189\n-10-10,10-33,35-54,54-66,66-79,79-90\n14-31,33-49,50-69,75-93,97-115,127-147,153-166\n6-31,31-40,40-71,71-89,89-91\n-5-5,5-19,19-23,23-45,45-49,49-53,53-63,63-78,78-102\n-12-12,49-60,60-78,98-113,113-132,168-192\n2-14,14-18,18-26,26-35,35-54,77-103\n0-11,11-35,35-55,55-57,57-63,63-71,71-89,89-91\n-1-1,1-14,14-22,22-34,34-41,41-46,46-53,53-59,59-66,66-69,69-73,73-96,96-117,117-119,119-127,127-129,129-135,135-148,148-159,159-168,168-192\n0-31,31-62,62-84,84-88,88-92\n0-28,28-42,48-62,62-80,80-94,94-104,104-114,114-138,138-142,142-150,150-158,158-160,160-174,174-180\n0-12,12-26,26-43,46-77,77-97,97-120,160-200\n-1-1,1-20,53-72,72-90,98-112,112-116,116-130,150-167\n0-19,19-49,49-89,89-91\n34-61,61-64,64-71,71-79,79-102,102-118,118-121,121-145,145-162,162-166,166-180\n-3-3,3-16,16-41,43-62\n8-25,29-51,51-53,53-57,62-72,76-94,142-160,163-178,178-182\n16-43,43-52,52-58,58-62,62-70,70-95,105-123,128-136\n-1-13,18-31,31-60,60-78,83-104,104-112,112-122,126-149,162-179\n5-17,17-46,56-69,75-88,127-145,202-220,224-235\n0-39\n19-33,33-35,37-55,162-180\n-11-11,46-74,74-87\n3-16,22-30,36-49,67-84,84-96,98-105,117-127,127-136,136-143,143-168,171-189\n31-49,97-122,122-138,138-163,169-191\n16-24,44-59,59-78,166-194\n168-192\n51-73,167-193\n168-192\n-10-10,22-42\n-18-18,29-44\n-10-10,21-27,27-45\n47-87,168-192\n37-80,80-115,159-201\n45-68,72-88,88-92,92-97,97-106,106-110,110-113,117-129,142-165,165-168,168-192\n44-66\n44-67\n-27-27,42-68\n42-84,165-195\n31-64,71-89\n36-47,60-72,72-82,135-149,153-207\n34-64\n-2-2,2-28,41-62,62-85,166-194\n-3-3,3-23,39-70\n0-29,74-117,117-154,154-170,170-190\n88-145,145-170\n-26-26,49-60,73-148,162-198\n96-144\n0-29,39-60,62-80\n0-32,34-56,56-77\n0-36,36-56,56-75\n0-33,35-56,56-64,64-80\n83-94,98-129,129-153,153-177\n-17-17,80-97,97-140,146-150,152-163,163-178\n-1-1,1-6,6-14,14-16,16-23,23-24,26-33,33-57,65-68\n0-14,32-59\n66-83,83-87,87-110\n65-86\n85-96,96-102,102-124,124-139,171-189\n69-111\n40-74,75-79,79-85,85-86\n-1-1,2-25,75-93,97-115\n72-102\n48-94,149-172,172-175,175-178,178-182\n44-76,76-78,78-80,143-159,159-180\n46-85,163-197\n-3-3,3-25,50-80\n50-69,69-77,77-95,137-155,155-179,179-181\n49-60,60-80,100-118\n39-52,52-57,57-99,115-133,165-180\n163-197\n44-62,62-63,69-72,72-106,171-189\n38-56,63-81,104-124\n64-99,99-112,171-189\n62-106,108-122,139-161,171-189\n45-55,55-92,139-157,158-176\n105-123,160-200\n34-46,47-75,77-89\n-15-15,24-68,75-96\n53-87,170-190\n56-79,167-193\n52-69,171-189\n143-170,170-190\n123-133,135-141,141-143,143-146,146-155,155-163,163-165,168-170,171-189\n3-28,92-131\n58-75,75-98,163-197\n49-80,165-195\n88-106,165-195\n49-74,88-106\n53-76\n52-73\n69-88,161-179,179-181\n53-81,166-194\n113-131,146-164,164-180\n-31-31,50-74,108-144,148-180\n-9-9,23-48\n0-16,31-48\n128-149,149-156,167-193\n-9-9,15-26,44-66\n51-106,156-204\n70-102,105-126,142-161,161-179,179-181\n68-87,87-112,112-120,120-140,140-144,148-155,157-203\n-3-3,22-76\n31-46,46-70,70-90,90-105\n49-69,84-105\n42-90,157-203\n159-201\n35-62,62-64,64-67,67-71,72-82,82-92\n53-74,74-101,112-129,160-200\n68-86,86-104,142-161,161-163,163-177,177-183\n25-71,71-76,76-92\n53-104,109-144,158-202\n162-179,179-181\n51-84,164-196\n62-80,123-144,144-154,162-164,164-174,174-180\n43-108,108-118,118-134,160-176,176-180\n-1-1,1-23,34-70,70-90\n2-12,26-59,59-87,151-176,176-184\n42-64,64-66,66-70,70-84,84-99,143-166,166-194\n36-46,46-55,59-82,135-154,154-177,177-183\n88-120,120-122,122-133\n51-77,77-95,163-197\n160-200\n159-201\n12-16,42-66,66-91\n63-74,152-165,165-168,168-180\n52-79,168-192\n56-76,166-194\n54-77,169-191\n161-199\n41-66,66-68,68-86,164-196\n35-48,53-80,80-95\n154-206\n162-198\n57-79,164-196\n59-78,83-98,98-100,100-135\n160-200\n48-94\n64-82,170-190\n63-75,75-104\n59-81,81-106\n71-100\n78-99\n67-94,95-106,168-192\n71-89,89-93,93-111,169-191\n-9-9,19-29,29-38,38-48\n-11-11\n82-105,105-115,115-142,154-173,176-184\n104-123,126-147,147-155,155-170,170-190\n-12-12,60-77,77-89,98-118\n-4-4,4-18,56-87,94-115\n-12-12,36-57,57-72,72-74,74-91,102-127\n53-83,157-203\n49-70\n56-89\n58-74,74-106,108-120,146-158,158-161,165-177\n-9-9,19-35,37-54,54-74,78-97\n48-80,80-101,155-205\n36-57\n123-151\n170-190\n168-192\n-6-6,6-26,107-126,151-173\n-17-17,31-46,65-85,93-149\n39-51,63-77,77-82,82-97,97-100,100-130,130-163,163-178,178-182\n0-19,19-22,22-56,56-69\n0-26,34-50,55-75\n48-80,166-194\n46-71,71-77,77-96,158-202\n45-70\n41-78\n-12-12,52-83,163-197\n37-62\n141-153,153-155,161-180\n-14-14,140-151,155-205\n24-43,52-56,56-60,60-72,72-76,76-80,80-91,94-114,122-140,155-173\n-23-23\n-23-23\n144-164,164-196\n-10-10\n-12-12\n63-119,157-203\n92-128,128-135,135-138,138-140,146-214\n117-126,126-140,148-180\n99-111,111-117,117-131,134-180\n48-69\n0-27,35-72,83-104\n43-70,81-104\n-23-23,47-67\n54-118,152-208\n121-133,136-178,178-182\n7-27,36-68,68-78,78-98\n36-67\n50-121,160-200\n64-101,103-139,139-142,142-145,151-209\n0-3,24-62,76-98\n15-28,28-31,34-66,69-91\n46-101,161-199\n8-27,37-67,72-94\n143-170,170-177,177-183\n46-75,81-105\n17-45,68-86\n16-41\n51-81,143-161,161-180\n79-105,110-124,141-219\n113-145,145-152,152-154,154-157,157-165,165-195\n50-83,83-106\n35-59,67-94,94-131,131-152,152-155,155-177,177-180\n107-120,120-127,127-146,146-152,152-156,156-204\n14-30,30-41,41-52,52-63\n81-100,101-119,145-170,170-180\n65-105,105-125,125-131,131-134,134-180\n88-115,115-146,146-156,156-160,160-163,163-175,175-185\n79-97,100-123,131-153,157-175\n43-72,72-94,97-119\n-13-13,41-69,83-104\n-13-13,47-66\n109-133,140-157,157-203\n25-46,52-65,71-95\n52-85,157-203\n58-79\n53-76,163-197\n38-70,163-180\n28-39,55-77,170-190\n4-24,24-39,53-79,143-159,165-195\n55-79,151-169\n94-121,154-168,168-172,172-188\n69-87,87-99,99-106,106-120,120-126,129-137,137-140,140-142,164-180\n48-70,83-101\n48-72\n-11-11,164-196\n-10-10,15-36\n-13-13,164-196\n-16-16,35-55\n106-137,137-147,153-207\n120-140,161-199\n-10-10,24-43,48-75\n169-191\n163-197\n165-195\n-25-25,25-51\n-9-9,18-36\n168-192\n166-194\n61-88,88-104,104-130,130-149,149-211\n62-98,98-123,136-154\n61-84,84-92,92-114,114-140,140-143,143-147,147-152\n60-95,95-105,105-112,112-130,130-149,171-189\n53-83,159-201\n165-195\n43-91,166-194\n-13-13,47-67\n62-85,85-89,89-103,116-136,157-175\n16-37,37-54\n57-92\n28-55\n45-93,93-97,97-111,118-132,132-138,142-152,152-180\n69-83,83-103,103-126,138-156,156-166,166-176,176-179,179-181\n54-94,166-194\n0-22,48-66\n0-28,49-57\n0-19\n164-196\n41-83,163-197\n55-72,72-74,74-83,83-96,110-121,121-129,148-180\n-17-17,48-67\n-20-20,48-69\n74-103,171-189\n103-122,156-180\n145-179,179-181\n54-74\n-14-14,169-191\n168-192\n-12-12,84-102,102-128,128-130,130-144,144-159\n-16-16,105-147\n1-26,67-81,81-99,102-117,117-141,141-144,144-156,156-158,158-169,169-171,171-174,174-186\n-1-1,1-40,49-54,54-78\n0-24,24-49,58-84\n145-157,157-159,159-201\n46-81,164-196\n17-35,47-71,71-79,79-98,158-202\n0-26,45-67\n-19-19,42-66,72-90\n-13-13,39-67\n43-79,162-198\n34-65,74-89\n-10-10,27-51\n-9-9\n167-193\n166-194\n156-204\n-9-9\n-9-9\n169-191\n164-196\n55-105,161-199\n62-130,130-132,132-228\n87-95,141-161,161-199\n69-80,80-83,87-136,169-191\n74-96,99-108,155-205\n44-70\n-9-9,9-51,51-53,53-84\n40-69\n7-24,24-42,64-78,83-97\n40-70\n47-66,66-91,159-201\n61-89,89-92,92-95,95-118,118-124,124-149,149-180\n155-180\n32-46,46-63\n43-60,60-80,80-94,130-149,149-159,159-201\n65-106,113-117,117-133,160-200\n72-82,82-85,85-89,89-112,112-122,122-128,128-132,132-142,142-162,162-170,170-180\n-4-4,9-25,25-60\n17-40,40-71,72-93\n51-89,130-149,154-180\n60-113,124-129,129-143,143-148,154-206\n78-98,100-136,136-138,138-147,147-158,158-202\n93-148,166-180\n99-151,167-193\n0-27,27-51,54-82\n89-107,107-109,126-137,137-158,160-180\n0-7,7-9,9-13,13-18,18-38,38-54,99-148,148-154,154-166,171-189\n-13-13,41-59,59-79\n166-194\n-13-13,104-141\n161-199\n49-82,163-197\n123-150,152-170,170-180\n-6-6,6-10,10-27,45-66\n0-24,40-66,71-97\n44-66\n51-77,163-197\n36-68\n47-95,158-202\n139-154,156-204\n137-156,160-200\n46-66\n42-83,159-201\n60-75,75-81,149-180\n37-57\n166-194\n67-102,102-120,120-126,126-138,138-158,158-162,162-198\n90-108,108-134,138-141,144-162\n-8-8,8-29,29-47,49-83\n45-56,62-70,70-80,80-101,101-107,107-108,116-117,119-126,159-180\n166-194\n166-194\n84-114\n84-106,106-110,110-120,120-144,155-178,178-182\n138-155,155-158,158-166,166-180\n70-112,112-114,114-134,134-178,178-182\n113-148,148-168,168-192\n44-74\n48-82,89-113,113-127,127-132,132-147,147-153,153-160,160-162,162-179,179-181\n14-45\n65-88,88-96,96-103,103-105,105-125,125-150,150-154,154-157,157-179,179-181\n-5-5,5-30,43-68\n71-94,94-102,102-126,126-146,146-174,175-185\n-12-12,41-87,161-199\n56-80,80-85,157-177,177-180\n52-71\n53-64,64-99\n25-54,54-57,66-81,81-104\n52-80,80-82,82-95,167-193\n53-75,169-191\n33-47,47-61,61-72,163-179,179-181\n57-83,146-168,169-191\n74-92,104-123,123-138,138-152,152-154,154-158,158-163,163-178\n46-73,73-93,164-196\n54-87,152-180\n54-86,164-180\n-4-4,11-32,32-35,35-39,39-42,42-62,68-100\n-10-10,169-191\n-12-12\n-10-10,170-190\n163-197\n160-200\n0-2,2-31,31-45,45-54,54-65\n156-204\n84-101,101-103,103-123,123-144,144-152,152-160\n64-80,80-106,106-111,111-135\n57-99,165-195\n146-156,156-180\n13-33,42-77\n55-92,160-200\n48-83,160-200\n48-67\n50-68\n56-96,121-141,147-163,163-177,177-180\n50-73\n35-60\n44-82,155-205\n48-75,75-95,164-196\n49-67\n47-67\n-2-2,2-5,170-190\n162-198\n0-24\n190-212,240-255,255-274\n-1-1,1-5,5-20,20-27,27-29,29-32,32-47,77-96,96-122\n-3-3,3-27,27-46,46-51,51-54,54-74,74-82,82-86,86-90\n-19-19,68-90\n111-123,123-149,158-169,169-191\n-5-24,24-36,36-60,147-175\n-9-17,17-27,27-39,39-41,41-64,64-74,143-171\n-9-5,5-40\n-4-5,7-12,12-42\n23-35,43-65,75-95\n36-71\n-2-16,22-40,44-62,250-272,342-358\n59-82\n69-95,95-122,168-185,185-197,197-200,207-216,216-229\n78-105\n210-232,275-293,304-322,322-329\n211-246\n263-286,287-306,306-308,308-322,327-349\n264-276,276-281,281-311,313-323\n248-270,270-290,290-293,293-297,297-307,307-326\n152-160,166-169,169-189,189-217,248-266\n158-195,195-196,217-235\n-11-11,159-201\n-5-5,95-113,121-149,149-167,167-173,173-187\n8-37,303-323,323-356\n17-35,301-312,312-314,314-357,357-372\n48-68,68-71,71-84,154-164,164-168,173-176,176-184\n132-165,165-195\n104-130,143-168,168-180\n342-370\n2-4,4-22,22-30,30-40,295-316,316-327,330-344,344-362\n45-76,168-197\n46-64,64-79\n57-87,192-215\n52-69,69-80,192-223,230-248\n59-79,184-220,220-222,222-240,240-246,275-284,296-307\n45-62,62-83,90-98,181-198,201-218\n272-291,291-300,300-323,329-347\n210-221,221-223,223-242,274-285,285-297,298-323,326-347\n269-287,298-323,323-352\n50-68,71-90,178-205,211-221\n48-66,70-88,179-198\n63-81,90-108,172-194,194-212\n-9-9,9-13,13-28,28-32,32-35,35-54\n-9-12,15-42\n-9-5,5-22,25-48,156-171\n-10-18,26-44,144-162\n13-42,166-184,339-357\n167-193\n50-90\n-17-17\n-6-7,7-30,30-33,33-37,37-58,151-169,169-174\n-19-6,6-18,18-26,26-51,51-67\n-11-5,5-23,129-137,149-169\n-13-32,138-147\n64-90\n89-115\n167-193\n76-104\n-17-17\n-5-13,158-186\n110-125,125-138,138-141,147-180\n1-4,4-16,21-34,324-361\n3-8,324-363\n21-40,45-67,67-77,77-96,96-116,116-132,150-172,172-188\n-11-11,11-51\n33-77,81-99\n47-90\n39-87,87-100,100-104,104-140\n60-120\n56-124\n-12-12,35-61\n-23-23,28-54\n124-174,174-186\n18-42,42-68\n-20-20,20-23,23-46\n27-58,117-128,128-142,142-144,144-171,171-176,176-184\n-6-6,6-14,14-30,79-101\n-1-1,17-63,78-102\n48-72,126-149,168-192\n-2-2,12-56,56-78,78-82,82-85,85-95\n25-38,38-42,42-46,46-71,82-100,100-108,108-131\n43-56,56-59,59-73,73-76,76-87,87-93\n29-81,81-99\n36-85,85-102,102-142\n44-71,71-109\n-13-13,13-43\n130-154,159-201\n121-136,136-138,138-164,164-196\n0-6,18-90\n0-25,25-58\n41-87,87-92,92-96,96-127,127-145\n44-74,74-87,87-93\n0-9,9-41,41-66,66-80,80-100\n0-41,41-54,54-58,70-88\n61-96,96-104,104-107,107-109,109-138\n30-48,48-56,56-62,62-65,65-74,74-86,86-94\n0-28,28-62,76-86\n35-80,86-107,107-127,127-142,142-163,163-170,170-177,177-179,179-181\n0-15,32-46,46-66,66-82,82-85,85-89,89-91\n-2-2,2-33,33-36,36-43,43-76,76-88,88-90\n52-68,68-79,82-100,112-130,162-179\n-2-2,2-61\n10-17,21-42,42-60\n-27-27,40-48,48-60,60-73\n-1-1,1-14,14-24,24-26,26-43,43-57,57-74\n109-148\n114-132,132-154,154-167,167-193\n154-206\n169-191\n155-165,171-189\n-11-11,11-37\n-18-18,18-33\n33-83,88-92\n45-80,80-106,106-136\n51-129\n-7-7,7-79\n42-83,83-98,98-138\n43-63,63-67,67-81,81-99\n31-68\n18-68\n158-202\n132-149,149-174,174-179,179-181\n0-18,18-45,45-50,50-53,53-63\n0-27,41-59\n-11-11,24-45,45-49,49-51,51-53,53-67,129-164\n34-61,99-117,120-146\n39-72,72-81,81-101,106-132,132-151\n31-61\n36-56,56-77,77-97,97-114\n-9-9,138-153,153-155,157-203\n50-61,61-83,98-117,117-124,124-128,128-130,130-151,151-166\n37-68,110-128,136-160\n37-59,59-80,80-86,105-120,124-139\n-2-2,2-16,147-165,165-170,171-189\n33-45,45-55,55-80,93-104,125-146,150-169,169-191\n36-63,118-147\n45-61,61-65,65-97,97-118,118-138\n40-55,55-76,76-82,82-85,85-110,110-113,113-137,137-149,149-165\n-9-9,34-79,79-89,89-92,92-94,94-98,98-103,103-109,120-149,167-193\n-12-12,33-69,69-73,73-95,118-143,163-197\n51-76,82-98,101-117,140-167\n11-19,171-189\n-10-10,151-155,160-169,169-180\n-9-9,12-38,162-180\n58-87,87-89\n41-68\n139-149,170-190\n141-164,164-167,167-180\n155-205\n-27-27,32-56\n-16-16,29-48\n50-94,103-123,123-149,171-189\n41-50,77-95,154-180\n34-70,114-123,126-135,135-139,139-142,145-167\n14-27,27-38,42-62,68-78,94-112,154-180\n-18-18,28-36,36-43,43-60\n-11-11,11-28,31-51\n45-73,73-95,95-98,98-132,132-139,147-167\n23-42,42-46,46-54,54-71,148-166,171-189\n29-52,53-74,74-75,80-90\n-18-18,30-57\n51-85,161-199\n-18-18,18-38,38-71,167-193\n-10-10,47-64,64-84,161-199\n-9-9,63-83,168-192\n273-286,295-320,326-343\n293-321\n60-77,154-166,166-188,236-246,312-330\n8-32,36-45,45-65,65-81,154-162,169-188,222-232,232-236,241-251\n39-63,63-81\n42-73,91-102,107-116\n151-190,190-208,226-253,275-305\n146-156,156-162,163-192,192-212,271-303\n-10-17,36-69,292-343\n-1-22,35-71,292-336,340-359\n18-43,44-70,302-324,346-370\n-7-9,14-28,28-46,46-49,49-51,51-57,57-71,301-309,319-334,334-337,337-340,340-350\n141-151,180-207,275-300\n143-161,176-194,266-297\n-4-13,13-25,36-67,296-330\n-1-22,31-69,298-330,349-359\n27-62,300-330\n32-63,301-324\n50-58,71-89,173-191,192-209,266-283,283-286,286-301\n35-59,59-71,176-194,270-296\n40-63,63-70,70-88,161-183,282-310,310-315\n44-76,76-89,136-144,155-170,170-181,285-302,302-325\n22-32,32-36,36-38,38-69\n-9-9,31-44,44-47,47-70,293-311\n33-55,302-323\n-14-14,36-69,167-193\n-10-10,37-67\n171-192\n59-84,84-100,164-195\n-21-21,34-67,74-90\n56-79,79-97,140-158,158-165,165-185\n57-75,75-79,79-82,82-84,84-86,86-98,156-176,176-198\n37-72,294-328\n32-70,294-324,324-341,341-349\n62-80,167-192\n161-197\n39-62\n32-47,47-63,298-316\n40-58,160-168,170-192,295-313,313-335\n71-94,117-144,149-188\n64-81,81-91,91-93,93-101,101-117,117-141,141-164,164-193\n46-82,166-194\n62-93,161-188\n63-90,141-166,166-185\n171-192\n171-190\n23-41,43-61,76-94,115-123,170-190,284-294,294-310\n175-221,288-311\n49-75,175-217,283-312\n35-67\n-5-13,36-69,74-84\n167-195\n170-197\n51-80,105-117,117-124,128-142,157-186,281-311\n51-76,282-304\n7-26,26-31,34-66,167-194,283-318\n27-69,166-209,282-319\n167-200,215-238\n168-183,183-202,217-235\n55-77,149-180,285-308\n57-81,154-181,286-307\n43-79,162-198\n47-73,166-194\n-12-12,40-65,65-85,157-180\n40-96,160-180\n54-68,73-87,152-178,178-180\n18-34,34-44,44-49,49-54,54-64,64-68,68-84,84-97,167-193\n123-131,155-170,170-179,179-181\n164-180\n169-191\n171-189\n169-191\n39-65\n-1-1,1-3,3-5,5-15,34-62\n19-37,43-66\n3-10,32-68\n-13-13,13-28,28-48,48-65\n43-78,160-200\n54-74,165-195\n34-62,68-86\n33-62\n36-74,165-195\n43-84,164-180\n170-190\n171-189\n25-62,71-88\n-12-12,25-54\n41-77,162-180\n47-74,167-193\n147-177\n44-64\n39-53,53-57,57-65,65-82,164-180\n66-85,171-189\n40-78,84-88,165-195\n282-298,298-316\n286-313\n42-72,88-112\n46-73,93-111\n37-72,87-105\n42-65,76-98\n181-204,259-267,277-306\n180-190,190-192,192-199,199-210,276-306\n31-43,45-65,296-328\n294-320\n-1-20,25-37,37-69,296-319,338-359\n40-67,295-319,329-348,348-370\n38-69,264-277,277-313\n23-39,39-50,50-68,283-321\n22-40,295-317\n51-68,68-86,159-176,176-178,178-199\n59-89,155-177,177-180,180-195\n172-197,201-216,268-281,281-290,290-303,303-313\n171-185,185-211,268-283,283-303\n190-208,263-292\n188-210,259-282\n0-23,23-36,46-58,58-61,65-77,82-98,98-103,103-116,133-151,165-176,176-184\n0-27,119-177\n-14-14,14-50\n0-22,162-179,179-181\n-1-1,1-17,95-122,122-124,124-136,147-170\n-2-2,2-8,8-26,110-152,155-174\n-3-3,3-16,18-55,107-123,123-144,146-176\n-11-11\n-1-1,1-33,129-149,154-180\n-26-26,33-50,102-161,161-168,168-180\n17-25,85-94,100-103,103-132,132-136,136-154,154-156,156-172\n147-158,158-165,171-189\n149-167,171-189\n-13-13\n-1-1,1-20,34-45\n0-18\n54-81,81-116,116-151\n52-73,77-80,81-123,123-126,126-145\n95-121,121-124\n-26-26,26-28,28-31,31-50,164-171,179-181\n-4-4,4-15,123-142,142-148,148-162,162-178\n171-189\n0-18,30-48,144-180\n0-14,14-20,20-21,109-151,155-178,178-182\n153-166,170-190\n54-72,100-126\n56-69,69-86,86-89,89-92,92-115,118-125\n171-189\n111-139,139-161,311-323,323-344,344-348,348-370\n116-134,288-299,299-319,319-343\n0-18,41-59,329-358\n-13-7,7-9,9-11,11-13,13-37,326-335\n-7-14,14-30,328-353\n1-31,293-319,323-342,342-361\n0-4,4-16,101-125,227-234,234-266,312-336,336-349,349-356,356-360\n91-107,107-109,109-127,225-248,248-251,251-271,271-286,291-309,309-329,335-364\n63-75,75-78,82-86,91-102,102-106,106-111,111-133,262-275,280-287,294-322\n91-124,124-133,176-194,258-276,292-310,342-350\n-3-24,24-39,321-336,336-357\n-4-30,324-336,336-351,351-353,353-356\n141-163,163-170,170-174,174-199\n197-232,240-271\n3-26,113-159,224-236,236-254,288-307,307-338\n-5-14,106-147,227-247,297-316,316-325,325-332,332-335,335-352\n274-291,294-313,317-337\n295-314,321-339\n305-323\n4-29,211-248,347-364\n-11-17,17-32,32-52,65-83,200-231,238-260\n-13-14,14-29,180-188,191-236,236-247,247-263,331-340\n191-207,207-209,211-242,242-260\n191-215,215-232,242-246\n192-210,212-219,223-232,232-238,241-256,256-277\n145-164,164-188,197-226,238-258,258-266,266-289\n193-249,249-278\n195-231,232-273\n0-2,2-9,9-11,11-37,44-57,68-86,282-301,316-360\n-1-37,42-61,285-308,317-359\n12-19,19-39,307-330,330-346,346-372\n3-28,33-59,310-341,341-363\n88-123,317-332,332-375\n19-33,46-53,66-77,77-85,85-118,326-376\n-11-4,4-22,79-102,102-116,329-347\n0-21,76-102,341-360\n109-130,130-153,153-169,169-185,196-209,209-214,214-232\n107-146,146-157,157-185\n112-155,202-217,222-249,250-277\n114-144,144-146,146-159,175-193,193-202,213-258,258-276\n104-124,124-127,127-135,135-146,204-238,238-242,242-263\n125-145,145-165,217-227,227-256\n82-104,104-117,117-122,122-138,264-297,300-309,329-351\n78-103,103-121,121-123,123-145,233-253,263-295,295-321\n89-100,100-108,111-115,115-121,121-133,244-271,301-312,312-318,318-356\n96-99,113-133,243-261,261-285,322-342,342-345,345-350,350-362\n296-315\n297-315\n221-237,237-274,275-285\n171-189,220-236,239-253,253-256,256-272\n233-261,265-297\n9-41,321-360\n321-360\n-3-34,295-321,329-357\n3-27,324-361\n121-130,130-162\n126-154,154-164,209-246\n202-216,216-220,220-233,233-259,259-277\n202-220,220-222,222-229,229-231,231-242,242-259,259-282\n213-224,224-232,232-237,239-269,269-280\n302-323,327-370\n330-367\n25-45,45-63,281-305,305-310,310-329,329-364\n-5-1,24-40,43-59,284-301,303-312,312-321,321-333,334-355\n-1-19,19-24,24-35,315-350,350-353\n100-125,125-129,129-148,150-172\n95-103,107-144,195-213\n2-19,281-299,320-339,343-360\n-2-2,2-13,13-44,44-49,49-68,76-104,104-124,124-128,128-136,136-144,144-152,152-166,166-194\n-19-19,19-42,42-46,46-49,49-63,63-78,90-148,162-166,166-178,178-182\n70-78,100-141,146-150,150-168\n169-191\n163-197\n-8-8,10-39,40-51\n-1-1,1-13,16-42\n0-38\n-41-41\n-12-12,12-15,15-39,39-62,73-93,100-145,169-191\n-12-12,12-32,32-35,35-54\n-10-10,20-40\n44-68,72-90\n10-33,321-339,345-370\n2-29,331-362\n339-370\n-8-18,18-20,24-45,320-350,350-352\n-1-25,26-35,35-36,329-351,351-354,354-359\n23-31,46-56,336-371\n16-26,26-29,29-33,309-321,340-376\n-46-46\n-10-10,10-23,23-40,40-43,43-46,46-80,80-87,87-93\n-28-28,54-79\n-1-1,1-3,3-28,34-51\n140-220\n-14-14,108-150,150-172,172-188\n-27-27,36-56\n0-8,8-20,20-34,43-64\n168-192\n-13-13,17-33\n42-72,72-90\n0-79\n8-31,118-173,173-187\n0-4,4-11,11-13,13-26,26-43\n171-189\n-10-10\n111-168\n112-164\n124-146,146-151,151-162,162-190\n5-17,17-18,110-129,130-143,143-149,149-163,163-165,165-185\n108-133,257-283,288-321,321-353\n105-114,248-271,292-340,340-360\n295-313,315-333\n113-135,135-157\n124-144\n-1-4,4-22,289-303,303-309,314-359\n1-15,293-310,317-361\n-8-19,19-50,50-60,61-77,77-80,80-105,328-348\n-7-19,19-39,39-45,45-48,48-56,56-112\n61-79,79-92,92-118\n42-60,66-75,90-117\n105-120,120-122,122-124,124-186,186-214,214-238,238-263\n104-125,133-159,159-179,181-221,224-241,241-249,249-264\n129-162,162-178,178-185,185-189,194-204\n123-133,133-136,136-139,139-161,161-181,181-191\n134-153,153-179,205-226\n130-164,168-175\n121-137,140-153,153-163,163-172,172-192\n146-170,170-190\n2-5,5-28,31-53,65-169\n0-3,3-23,23-49,54-168,168-174,174-180\n239-275,275-291,297-351\n241-273,273-293,298-350\n98-112,112-121,121-139,139-157\n90-130,130-154,154-167\n292-313\n292-313,318-323\n91-104,110-134\n92-105,110-134\n229-254,254-256,256-258,258-264,271-292\n232-258,270-292\n278-296,314-333,333-359\n1-18,279-304,315-361\n5-27,52-82,82-115,327-361\n6-25,75-118,327-361\n114-129,134-181,181-227,233-237,237-254\n104-124,124-127,127-129,129-158,158-179,179-193,193-195,195-222,226-232,232-246\n61-80,83-116,116-118,118-121,121-157\n40-58,74-97,97-105,105-110,110-113,113-151,164-173\n265-282,282-295,295-302,302-313,313-332\n241-253,253-275,275-279,279-295,295-302,302-319,319-346,346-361\n281-289,294-314\n295-313\n114-137\n114-138\n-4-17,17-22,22-25,25-45,61-71,71-78,78-102,109-117\n2-32,32-48,48-68,74-101\n126-157\n126-157\n42-60,320-352,354-364\n38-56,322-360\n106-132,135-155,155-169,169-195,208-231,231-255\n106-132,132-153,153-155,155-170,170-187,187-200,211-231,233-255\n79-99\n82-99\n28-54,54-75,80-100\n-13-13\n-4-4,4-27\n0-2,2-21,21-53,53-71\n-13-13,122-134,134-163,163-176,176-184\n-33-33\n63-79,79-101\n14-33,326-347\n152-166,166-194,194-207\n-5-5,5-15,15-25,25-60\n28-41,43-74,162-198\n45-72,169-191\n14-31,79-106,243-253,253-281,313-327,327-347\n-13-13,56-79,171-189\n-18-18,166-194\n-4-4,4-9,9-54,102-122,123-146,146-214\n-14-14,14-32,37-66,78-97,97-114,117-144,144-154,165-195\n-21-21,34-56\n7-31,162-178,178-182\n65-82,281-309\n-13-13\n12-30,149-160,160-167,167-174,174-180\n43-70,164-196\n9-34,34-65\n36-64\n-1-1,1-12,12-20,20-43\n-14-14\n-18-18,32-57\n126-136,138-144,144-152,152-208\n51-69,101-119,134-151,151-179,179-181\n30-55,55-66,90-116,159-177\n46-77\n46-67\n50-67,67-69,69-77,77-81,81-100,161-179,179-181\n45-69,294-312\n49-69,292-312\n62-72,72-93,93-100,100-119\n40-58,63-81\n46-67\n-12-12\n161-199\n54-83\n58-75,75-97,97-106,106-111,129-136\n-12-12,12-15,15-20,20-21,26-35,35-54,123-132,132-145,145-160,160-168\n6-16,16-26,27-35,38-60,60-79,79-101,101-138,138-140,140-143,143-154,157-165\n26-59,69-90,147-179\n-12-12\n58-76,168-192\n-9-9,46-66\n46-65,296-314\n46-65,296-314\n44-74,164-178,178-182\n51-60,60-88,114-132,156-170,170-180\n47-67,161-199\n57-82,171-189\n172-191\n-11-11\n-6-6,8-33\n52-62,62-74,96-122,133-141,171-189\n14-40,44-65,68-79,79-87,87-96,98-119,153-171\n25-43,43-63,71-89,89-90,93-98,98-117,165-183\n20-61,61-70,70-86,92-119\n21-39,39-61,82-110,135-152\n26-47,47-57,64-82,86-104,132-150,163-181,277-295\n25-44,65-83,85-103,146-160,160-180,278-304,308-326\n45-78,81-94,141-163,163-165,165-168,168-192\n10-26,28-48,48-70,166-175,175-185\n51-62,62-65,65-92,168-191,275-293,329-347\n82-91,166-179,179-188,188-208,295-317\n41-55,55-60,60-73,102-126\n44-75,97-126\n89-117,243-271\n48-58,73-91,157-178\n46-78,78-89,161-179,179-181\n46-72,72-90,90-103,103-110,110-114,114-123,123-126,126-130,130-134,134-170,170-180\n42-75,164-196\n17-36,56-74\n-10-10\n14-35,35-38,38-46,46-58,58-61,61-87,87-93\n0-5,5-23,23-59,81-99\n0-20,20-34,34-36,36-54,54-70\n20-83\n-34-34\n0-10,10-24,24-68,101-142,142-165,165-195\n-32-32,32-35,35-49,49-51,51-81,81-99\n0-2,2-15,15-64,72-82\n36-67,67-84,84-93,122-147,147-152,152-154,154-163,163-167,167-193\n-10-10,15-40\n-15-15,46-68,72-97,114-130,130-142,142-145,145-147,147-150,150-178,178-182\n-14-14,36-60,91-99,120-142\n125-150\n-23-23,35-39,142-152,162-198\n0-5,5-21,21-41,41-57,57-60,60-66,66-76,76-86,87-97,97-102,102-105,105-107,107-122,122-140,143-157,162-198\n-16-16,151-163,163-197\n-1-1,1-17,17-35,62-93,128-163,169-191\n54-67,67-76,76-93\n55-94\n19-28,28-30,34-67,67-101,101-129\n27-62,62-92,92-101,101-120\n15-32,32-45,50-70,70-88,88-116,226-244,247-265\n22-37,37-38,40-45,45-57,57-76,81-99,149-167\n166-194\n51-76\n57-78,99-117\n57-78,163-186\n3-24,24-41,41-78,92-96,136-157,157-159,159-180\n142-166,166-168,168-192\n47-78,137-145,167-193\n22-45\n11-27,27-33,33-60\n38-53,53-55,55-58,58-62,64-67,67-89,149-171,171-189\n42-61,61-81,83-90,160-200\n2-18,18-29,31-57,57-66,66-77\n30-67,145-163,168-192\n4-23,28-35,35-42,42-70,93-115\n-16-16,16-22,22-30,30-55\n0-19,19-42,52-70\n38-90\n-10-10,11-29,29-55,55-58,62-74\n34-48,50-71,71-83,83-85,85-90\n-15-15,15-17,17-19,19-30,30-35,35-50\n8-26,26-35,35-45,45-55,55-57,57-72\n29-49,49-77,77-90,157-180\n19-37,51-71,71-90,144-159,164-196\n0-11,19-71,71-78,78-90\n-9-9,16-29,29-35,35-38,38-42,42-49,49-54,54-58,58-62,62-77,82-98\n49-71,171-189\n-8-8,12-25,125-155,155-161,161-179,179-181\n-2-2,2-14,14-39,39-65,79-101\n11-19,120-147,147-156,156-167\n40-49,52-58,58-86,91-102,106-118,122-153,159-188\n42-52,57-73,73-86,86-99,101-118,120-151,161-188\n44-61,61-77,81-106,155-180\n4-24,24-56,56-58,58-97,99-114,114-119,119-131,131-140,140-147,147-150,150-167,167-193\n-4-4,4-20,28-52,64-83,84-126,126-148,150-168,168-192\n-6-6,6-24,76-94,96-107,122-146\n-1-1,1-23,104-112,123-142,142-153\n26-85,156-204\n44-87,87-98,136-148,154-163,163-168,168-192\n51-65,65-69,69-88,100-108,134-158,158-173,173-180\n12-21,23-30,34-63\n20-37,37-46,46-49,52-54,73-91,146-158,158-178,178-182\n22-40,40-87,153-207\n39-54,54-56,56-85,146-164,167-193\n11-29,33-62\n38-53,56-78,158-178\n0-18,20-33,33-50\n-2-2,2-5,5-23,23-55,55-71,71-74,74-80,80-90\n111-134,134-153,160-178,178-182\n15-42,42-48,48-64\n9-17,35-58,299-324,334-342\n0-11,16-46\n20-48,48-55,55-63,63-66,66-84,84-89,89-91\n-14-14\n43-81,81-94\n12-25,25-41,41-70,70-82,82-84,84-100\n182-202,292-314\n44-74,150-168\n170-190\n56-79,79-83,83-84,159-176,176-187\n39-53,56-76,100-118,164-185\n227-249,280-298\n-10-10,29-54,54-60,60-74,74-88\n-9-9\n-9-9\n2-16,16-39,39-48,48-79\n171-189\n52-75,75-78,78-89,167-185\n51-67,67-87\n41-69,69-90\n-6-6,6-23\n169-191\n42-74,164-196\n31-67,67-89,89-91\n50-79,79-81,81-99\n52-79,79-95\n93-113\n61-80\n171-189\n24-55\n-2-2,2-7,7-16,16-23,33-70,70-77,77-84,84-90\n-2-2,2-20,22-41,41-47,47-53,59-72\n0-7,7-32,32-60,60-81\n51-60,63-69,69-96,111-132\n17-61,61-86\n33-43,46-52,57-92\n32-51,59-94,94-100,100-103,103-105,105-120\n163-187\n168-192\n164-196\n-13-13,13-32,32-58,60-72,72-108\n-11-11,110-118,136-175,175-185\n-27-27\n0-37,37-87,87-89,89-91\n110-175\n-2-2,2-5,5-9,9-27,27-29,29-31,31-69,69-80\n-10-10\n77-103\n-2-32,32-46,46-77,77-90,90-96,96-121,121-126,126-148,148-151,151-178\n-1-35,45-75,75-95,95-117,117-137,137-151,151-179\n-10-13,18-28,226-242,245-262,262-265,265-281,281-288,301-304,304-312,312-320,320-325,325-328,332-345,345-350\n-1-17,226-244,266-286,286-291,291-313,316-335,336-346,346-359\n-6-26,92-119,119-138,154-174\n0-12,12-20,20-22,22-24,24-36,86-113,113-136,161-180\n6-24,27-35,35-63,97-105,111-115,115-135,135-138,138-176\n-2-4,4-6,41-54,60-70,73-94,99-133,133-159,165-173,175-178\n0-7,7-11,11-31,48-58\n53-78,78-97,97-100,100-114,147-180\n59-79,165-195\n53-82,198-223,293-319,323-351\n53-81,198-215,294-323,323-333,333-345\n168-209,271-281,281-285,290-300\n101-121,123-155\n96-111,111-132,132-137,137-139,139-142,142-167\n77-104\n13-45,45-48,48-67,67-85\n55-83,87-93\n17-64\n9-25,25-53,53-55,55-88,88-92\n41-89\n-1-1,1-27,28-49,49-71\n-9-9,22-76,76-93,93-106,106-134,134-154,154-171\n167-195\n47-85,89-91\n23-47,82-102,114-160,167-193\n-17-17,17-55\n80-100\n166-193\n-15-16\n13-23,23-45,45-61\n160-178,178-197\n164-192\n-1-1,1-8,8-36,41-68,68-80,80-83,83-89,89-91\n281-313,322-330,341-367\n49-67,80-126\n49-67,78-93,93-101,101-125\n16-27,30-32,32-42,59-77,92-112,131-140,159-173,173-177,177-183\n-2-2,2-9,9-21,21-23,23-31,31-33,33-36,36-38,38-71,75-81\n58-85\n46-63,66-84,84-105\n66-85,85-88,88-90,90-107\n170-190\n169-191\n39-62,62-66,66-80,163-197\n-2-2,2-19,137-154,154-166,166-194\n-14-14,14-27,27-36,36-66,70-90\n113-163\n26-56\n86-113,146-180\n85-114,144-184\n41-51,51-60,60-70,77-95,104-122,168-192\n51-74,283-317,317-336\n50-68,187-195,239-257,275-311,321-339\n34-51,51-59,59-86,153-171,171-177,177-183\n18-33,42-90,160-200\n31-41,44-49,49-65,65-84,148-169,169-191\n17-34,37-50,50-70,70-88,167-193\n40-52,52-72,72-88,160-178\n34-48,48-68\n35-85,159-177,177-183\n39-83,153-175,175-177,177-180\n-7-7,7-33,33-35,35-49,69-102,115-147,147-159,159-179\n42-58,58-68,68-80,167-193\n44-82,167-193\n-4-4,18-36,36-56,56-72\n23-41,44-56,56-64,64-76,76-95,148-156,158-180\n23-43,43-46,46-80\n45-64,65-86,86-89,89-91\n-8-8,8-11,11-32,32-52,52-93,93-109,109-113,113-117,117-135,135-140,140-143,143-172\n114-139,139-142,142-149,149-169,169-191\n-5-5,5-9,9-50,50-70,82-90\n167-192\n63-90,160-178,178-182\n170-190\n38-59,68-94,150-175\n170-190\n45-68\n52-72,72-80,80-92,92-100,103-108,108-111,111-113,113-132\n54-77\n53-81\n19-37,50-75\n-12-12,16-26,107-124,124-137\n-10-10,20-39,44-64,64-71,71-79,79-102,142-154,160-180\n45-73,93-111,167-193\n32-57,57-82,157-180\n51-74,167-193\n171-189\n21-38,47-65\n-2-2,2-7,7-12,12-30,169-191\n-20-20,22-45,108-131,131-144,144-149,158-202\n0-16,16-22,22-28,28-42,42-61,137-147,171-189\n-13-13,18-33,38-84,104-113,113-136,136-156,156-162,162-198\n-2-2,2-12,12-14,14-34\n3-21,77-105,128-154,154-156,159-173\n1-23,23-36,37-70,70-92,92-103,105-123,133-159,163-180\n32-60,60-89,149-160,160-180\n4-8,13-26,26-55,55-59,59-67,73-91,159-171,173-177,177-179,186-192,198-203,203-206,206-214,214-233,239-251,259-280,296-299,330-341\n4-13,13-26,26-39,39-69,158-183,187-223,302-309,311-329\n57-83\n35-68\n-3-3,3-15,30-82,157-203\n-2-2,2-19,38-56,105-130,162-166,168-178,178-182\n0-5,5-19,19-68,68-83,105-124,162-198\n170-190\n-1-1,1-11,11-13,13-15,15-39,39-68,68-85,123-142,158-202\n69-78,88-110,155-182\n63-91,91-96,96-100,100-114,140-151,155-182\n57-85,137-141,147-179\n56-83,151-178\n20-35,35-61,61-73,73-83,156-180\n39-58,58-69,167-193\n23-41,45-70,78-96,96-104,134-159,169-191\n-1-1,1-3,7-47,50-51\n-1-1,1-5,5-13,21-56\n46-73,168-192\n4-22,37-61,165-189,189-196,286-305,310-320\n30-56,146-164,171-198,273-284,284-309,344-362\n56-71,71-90,139-151,151-175\n57-84,142-177\n19-35,35-40,40-55,163-166,170-184,187-213,300-308,345-365\n-4-21,21-27,27-42,44-61,164-188,188-191,191-215,293-323\n53-82,153-173\n56-75,150-178\n-14-14\n-16-16\n86-131,131-150,171-189\n-15-15\n-10-10\n-21-21\n-11-11\n-10-10\n-9-9\n-12-12,170-190\n167-193\n-2-2,2-20,150-168,170-190\n138-162,168-192\n-17-17\n-4-21,21-23,23-46,140-162,162-182,182-192,192-195,195-212,338-348\n-16-2,2-33,144-165,165-169,169-194,194-208\n5-35,344-365\n205-243\n202-231,234-242,242-249,254-268\n14-32,221-245,245-247,247-251,251-260,260-262,262-280,327-349,349-369\n236-262,327-371\n0-15,284-302,302-304,304-319,319-356,356-360\n-15-17,238-247,247-265,293-317,329-345\n4-10,10-21,289-307,326-364\n2-41,66-79,79-88,103-128,128-130,130-143,215-245\n2-39,93-133,134-153\n-13-13,166-194\n-10-10\n47-84,165-195\n60-65,69-80,80-97,97-108,157-179,179-204\n284-306\n284-306\n281-311\n168-192\n171-198,280-308\n172-198,268-286,286-291,291-295,295-313\n166-194\n42-70\n10-34,41-68,296-325\n-10-9,26-44,44-69,294-320\n55-77,167-197,293-309,312-328\n46-74,74-86,166-189,294-312\n165-187\n63-82,148-161,165-190\n171-189\n47-79,280-319\n47-81,168-204,283-320\n24-40,43-60,60-73,296-317\n21-43,43-70,286-323,323-328,328-346,346-365\n169-191\n170-191\n55-87,165-184,290-311\n56-82,166-184,290-309\n53-83,166-188\n53-79,120-131,166-194\n292-310\n173-204,204-220,277-307\n175-211,279-308\n175-193,193-220,282-312\n177-205,205-222,278-310\n191-199,256-283,287-311\n47-73,286-314\n46-74,288-311\n57-77,184-202\n50-71,71-83,289-300,300-309,309-320,320-336\n29-40,40-48,48-60,60-72,186-204,285-308\n28-50,50-72,72-78,78-79\n267-284,284-297,297-309,309-330\n54-80,80-92,165-188,193-211,219-237,252-263,287-305\n40-60,60-81,157-176,180-201,251-270,270-283,283-300\n-14-14\n-11-11,11-38,40-43\n43-78,163-197\n137-155,167-193\n168-192\n43-65\n2-14,32-67\n-4-4,4-6,6-22,40-67,73-88\n40-58,58-75,159-180\n169-191\n51-71\n47-70\n4-13,20-40,40-70,292-319\n38-63,292-319\n297-319\n41-61,293-317\n42-50,297-316\n-19-19\n-28-28,28-88,150-210\n-25-25,25-73,73-75,75-105\n-16-16\n127-148,160-180\n-27-27,42-58,58-69,69-94,94-97,97-102,102-117,119-140,140-220\n-14-14,14-29,96-115,115-119,124-156,167-193\n-24-24,24-26,26-28,28-45,45-50,50-59,59-70,70-78,78-101,101-104,104-122,122-140,140-151,151-180\n-18-18,152-208\n-6-6,6-29,128-137,140-158,158-202\n-18-18,18-43\n-27-27\n165-195\n165-195\n167-193\n-14-14,18-30,30-38,38-45,45-50,50-56,56-63,63-83,83-111,111-143,143-155,169-191\n-21-21,151-209\n164-196\n169-191\n0-8,165-195\n-24-24,162-198\n-17-17,161-180\n-35-35,50-80,80-100,100-126,131-229\n168-192\n0-3,3-49,49-58,58-74,80-129,129-143,143-159,159-179,179-181\n-1-1,1-22,25-36,36-45,45-65,66-76,76-84,87-116,116-137,137-168,168-180\n77-100,100-116,116-138,138-151,151-155,155-170,170-180\n15-39,90-113,113-135,135-172\n108-131,131-136,136-146,146-153,153-156,156-161,161-168,168-171,171-188,193-204,204-235,235-238,238-240,240-244,244-248,248-254,254-261,261-270,270-274,274-276,276-316,316-333,333-379\n2-24,122-144,144-153,153-173,173-197,203-220,220-230,230-241,241-248,248-250,250-271,271-275,275-277,277-298,298-300,300-306,306-316,316-338,338-358,358-362\n94-113,113-135\n-8-3,3-18,18-22,22-38,38-43,43-55,58-72,77-87,87-106\n-11-2,2-23,23-45,74-92,92-102\n125-146,146-154,154-168,168-183,190-242\n128-160,164-188,188-195,195-237\n146-172,172-183,201-222,222-235\n144-166,203-218,218-235\n41-62,80-106,106-129,129-149,149-170,173-184,184-197,197-217,219-232,235-259,259-268,268-287,297-368\n17-33,74-94,126-165,177-197,197-200,200-203,203-206,206-210,210-221,221-254,254-280,301-335,335-372\n130-148,155-177,198-232,239-257\n8-16,21-35,112-130,226-244,255-273,290-298,298-301,301-310,310-324,324-326,331-334,334-342,342-354,354-364\n-8-5,5-16,16-25,25-35,92-110,163-181,224-242,248-264,267-275,287-296,296-322\n0-21,21-34,34-36,36-52,52-67,67-90\n0-15,115-161,161-179,179-181\n-10-10,13-33\n140-154,154-156,156-159,159-173\n137-175\n53-77,169-191\n45-68,163-180\n17-25,43-72,292-314\n45-69,281-298,298-305,305-319\n288-316\n-13-13,52-77,169-191\n124-143,167-193\n50-75\n41-73\n49-75\n50-61,61-76,168-192\n167-193\n-16-16,66-78,85-100,100-106,106-119,171-189\n47-80,164-196\n56-76,162-193,287-296,299-305,305-308,308-309\n47-75,159-187,285-313\n17-35,55-66,66-83,157-187,187-201\n49-72,81-99,163-187,189-203\n45-76,160-185,285-296\n0-16,119-135,138-164,164-176,176-184\n42-76,160-200\n41-67\n161-199\n0-16,31-66\n2-10,15-25,37-54,54-72\n45-64\n35-62\n34-61,284-311\n33-70,286-313\n290-312,315-336\n290-312\n293-314,322-342\n164-194\n49-72,76-84,84-96,96-111,169-187\n50-71,75-95,164-181\n55-72,72-77,77-92,94-116\n49-67,296-320\n181-201,201-218,274-312\n178-204,204-213,213-226,272-312\n276-307\n261-269,284-306\n239-258,258-278,278-298\n184-207,242-256,261-273,278-301\n48-73,173-196,290-313\n46-70,161-187,286-320\n45-64,296-316\n45-64,295-314\n171-183,183-186,189-207,240-255,255-269,269-281,281-310\n170-182,182-185,189-201,229-251,260-286,286-296,296-314\n49-78,161-184\n56-75,167-184\n57-86,86-90,90-103,124-142,159-177\n181-190,196-199,199-215,258-288,288-308\n182-190,193-200,200-217,264-307\n219-237,237-247,248-265,265-303\n183-193,213-224,242-247,247-264,264-274,274-291,291-306\n-10-10\n-9-9\n-27-27\n-22-22,34-46,46-58,58-79,79-116,118-121,121-130,130-134,134-157,157-203\n-10-10,30-63,63-67,67-113\n-3-3,3-6,6-22,22-26,26-28,28-30,30-36,36-51,141-168,168-192\n-8-8,8-13,13-16,16-27,34-58,58-72,72-93,93-97,97-105,105-117,117-137,137-145,145-151,151-156,156-159,159-163,163-171,171-177,177-183\n-12-12,55-73,85-103,111-129,129-131,131-141,168-192\n-1-10,103-121,132-150,247-262,266-281,293-325,325-347,347-351,351-359\n68-112\n-12-12,26-45,45-59,59-96,100-114,114-120,120-124,124-126,128-133,133-146,171-189\n66-104,111-135,135-137,137-153,167-193\n66-84,84-109,132-150\n37-70,70-88,159-178,178-182\n60-89,162-179,179-181\n59-82,169-191\n146-163,166-194\n132-161,161-180\n0-23,23-36,36-64,64-77,77-80,80-97,97-109,109-132,136-157,157-178,178-182\n-27-27\n-15-15,15-35,35-37,37-63,63-72,72-76,76-88,88-96,96-116,116-142,142-154,154-167,170-179,179-181\n0-21\n-3-16,17-36,36-47,56-77,84-102,155-173,288-297,306-323,327-337,337-341,346-350,350-353\n3-16,29-36,36-41,41-59,59-79,79-94,287-307,307-320,327-337,337-341,343-361\n-1-1,1-7,10-34,34-36,36-46,46-56,56-64,64-66,66-83,87-103\n19-34,34-38,38-56,66-92\n32-61\n115-123,134-149,155-172\n67-113\n54-64,70-91,91-113,113-152,152-167,167-170,170-180\n-25-25,30-52,52-74,74-106\n169-190,206-218\n-11-11,18-40,40-66,72-98\n73-97,97-104,104-110,110-123\n-1-1,1-3,3-38,38-46,46-58,59-88,99-126,126-151\n76-99,99-125\n74-92,94-118\n3-26,26-30,30-38,38-43,43-72,72-91,92-112,117-147,147-170,170-190\n23-39,39-45,45-48,48-69,69-81,85-100,206-225,228-242,245-261,270-288,291-309\n-14-14,166-194\n-18-18,167-193\n-17-17,42-46,165-195\n-17-17,17-23,23-29,29-61,61-102,110-121,121-123,123-141,141-145,145-157,157-160,160-180\n44-59,59-73,73-99,249-267,349-367\n-12-10,41-59,62-76,76-99,209-227,333-348\n15-33,40-53,59-74,78-88,126-144,173-191,257-267,267-276,276-295,341-359\n42-50,72-96,138-165\n27-38,56-74,78-105\n56-81,81-95,95-97,97-103,103-114,237-256,256-259,263-275\n0-25,144-180\n-9-9,93-101,101-107,164-196\n20-28,54-75,81-101,145-166,168-192\n48-73,145-177\n54-80,156-176\n91-108,108-118,118-136\n-10-10,10-17,17-28\n36-44,46-51,51-71,71-81,81-83,83-90,90-105,105-125,125-129,129-142,146-156,163-169,169-177,177-180\n92-114,114-129\n56-92,145-159,159-201\n6-25,36-73\n55-76,148-161,161-180\n39-89,152-208\n45-71,71-74,74-97,99-101,133-143,151-152,154-179\n37-57,57-76,162-198\n46-66,66-71,71-74,74-89,167-193\n20-47,47-72,73-94\n-1-1,1-7,7-27,27-31,31-69\n-7-7,7-18,18-36\n57-87\n-4-4,4-9,24-36,36-59,59-78,78-91\n41-58,58-60,60-71,71-78,78-81,81-90,90-108,149-211\n89-102,108-116,124-160,163-178,178-182\n-19-19,19-27,27-41,41-54\n26-37,37-68\n26-37,37-45,45-57,57-81\n-6-13,13-19,33-50,168-186,304-334,334-348\n65-85,105-129,133-140,140-160,161-179,179-181\n5-22,22-33,33-47,47-62,62-81,99-117\n-1-1,1-14,14-24,24-40,68-95\n8-25,25-52\n22-52\n-10-10,156-180\n-3-3,3-13,13-19,19-21,21-43\n0-14,14-27,27-45\n-8-8,8-18,18-21,21-37,103-122,122-148\n-12-12,12-27,89-98,114-151,157-175\n94-123,133-142\n-15-15\n42-75,163-197\n41-92,158-177,177-183\n163-197\n45-67\n38-44,49-74,166-194\n-34-34\n-19-19,19-57,57-63,63-67,67-91,104-156,163-197\n-21-21,40-76,76-104\n0-46\n34-56,56-91,91-94,94-121,121-154,154-173,173-187\n-13-13\n0-30\n165-195\n109-127,127-146,146-148,148-170,170-175,175-179,179-181\n-4-4,4-53\n0-16,23-91,91-142,142-178,178-182\n0-36,36-67,67-113\n-14-14\n165-195\n-22-22,22-37,43-64,64-97,135-154,159-180\n129-146,149-179,179-181\n52-61,148-156,160-200\n-17-17,68-91,91-107,119-131,139-143,143-153,159-201\n-2-2,2-8,72-90,104-113,125-134,134-140,140-145,145-158,165-195\n-23-23\n0-23,23-25,25-43,46-66\n0-7,7-9,9-37\n-13-13,21-50\n0-16,38-72\n0-28,28-39,39-48,48-69\n163-197\n159-201\n131-144,146-168,168-192\n164-196\n160-200\n151-209\n-12-12,25-42,42-62,83-110\n-12-12\n132-148,156-204\n156-180\n1-18,18-26,26-58,58-62,62-74,100-122,122-125,128-155,155-160,160-180\n124-149,149-153,153-157,157-159,159-180\n-25-25,25-47,47-56,56-65,65-115,115-134,134-152,152-171\n-23-23,58-78,78-92,92-97,97-101,101-120,120-131,131-134,134-138,138-145,145-162\n0-5,5-31\n0-2,2-9,9-18,18-40\n-12-12\n-1-1,1-23,23-42,42-59\n169-191\n162-198\n165-195\n164-196\n57-83,105-117,130-150,150-168\n-3-3,3-10,10-28,28-46,52-82,82-113,113-133\n169-191\n163-197\n134-144,166-194\n-14-14,159-201\n-24-24,161-179,179-181\n-14-14,14-21,21-51,51-60,146-180\n119-139,146-149,155-174,174-180\n167-193\n167-193\n-14-14,31-53,122-131,137-175,175-185\n0-22,22-28,28-48,48-63,103-112\n0-3,3-32,32-54,54-56,56-63,63-84,112-160,160-163,163-180\n170-190\n148-159,166-194\n-1-1,1-7,7-34,43-65,75-90,98-137,137-145,145-149,149-174,174-180\n114-149,170-190\n-13-13,126-163,163-197\n-19-19\n-20-20,165-195\n-11-11\n85-104,112-158,158-167,167-193\n70-91,104-151\n111-140,154-175\n127-166\n120-129,129-149,149-167,170-184,184-188,188-202,213-234,234-245,245-254,254-267,280-312,312-362\n114-132,132-151,220-238,238-244,244-258,258-266,274-286,286-293,293-302,302-309,309-333,333-368\n97-107,115-119,119-135,135-136,141-151\n90-115,115-117,117-119,119-121,121-135\n109-127,127-134,134-146,146-161\n-17-29,35-42,42-54,54-78,78-101,105-115\n28-41,41-48,48-51,51-62,62-67,67-77,77-105,105-109,109-131,341-357,357-383\n7-19,19-33,33-59,68-78,78-90,103-114\n115-162,162-166,166-169,169-186,189-252,257-273\n104-118,118-142,142-169,169-187,189-252\n166-191,230-256,259-277\n158-174,174-194,194-203,203-221,221-225,225-239,241-254,254-260,260-273\n128-137,137-169,188-207,207-213,213-216,216-237,237-252\n144-161,161-178,201-233,233-239,239-243,243-256,257-285\n128-161,201-227,227-254\n137-174,210-229,229-239,239-255\n136-144,156-167,167-190,202-213,213-221,221-233,233-259,261-282\n175-201,201-204,204-206,206-208,223-252,252-254,254-257,257-269\n111-115,117-131,133-156,164-172,212-229,229-244\n166-177,177-181,184-204,204-228,228-247\n227-245,245-253,253-275,275-284,284-288,288-293,293-296,296-305,305-331,331-366\n211-229,231-238,240-244,244-272,272-319,319-323,323-329,329-365\n5-44,61-79,84-108,137-155\n122-137,137-139,139-146,146-159,159-197,197-231\n127-144,144-146,146-150,150-164,164-166,166-172,172-174,174-191,191-230\n230-268,268-270,270-272,294-302,311-350,350-352,352-367\n251-278,285-296,296-303,303-317,317-356\n-30-30\n-20-20,20-56,120-133,133-136,136-155,170-190\n24-42,49-78,78-90\n-17-17,17-68\n31-51,51-59,59-76,80-94,94-115,115-128,128-144\n127-146,150-159,164-196\n148-176\n-10-10,19-40\n-14-14,14-30\n158-202\n-23-23\n-12-12,12-26,26-53,109-131,138-162,168-192\n-13-13,29-47,47-50,50-73,73-107\n-1-1,1-6,6-8,8-11,11-21,21-51\n-13-13,22-35,35-43,43-61,61-70,74-80,80-93,118-138,142-166\n-12-12,18-20,20-31\n-19-19\n-11-11,13-17,17-45,150-166,166-194\n-11-11,14-29\n131-139,169-191\n-9-26,26-29,29-82,106-132,132-154\n-4-80,106-127,136-162\n4-70,76-90,90-114,114-130,203-217,220-228,228-244,250-273\n3-50,50-61,61-89,95-115,206-238,238-243,243-257\n35-66\n17-31,31-75,75-86\n12-54,68-81\n10-55,83-111\n13-32,32-36,36-53,97-115,205-223\n17-51,57-76,215-233\n202-223,227-252,252-266\n200-223,223-250,250-263\n94-119,123-131,131-151,156-166,188-225\n93-120,141-152,188-206,206-226\n227-254,254-289,289-307,307-328,328-369\n1-7,7-12,12-14,14-30,246-281,281-308,308-310,310-337,337-361\n258-289,304-341,341-363\n260-291,291-293,293-294,300-305,305-309,309-322,322-325,325-342,342-367\n80-88,92-126,128-135,135-142,142-161\n75-86,86-90,90-125,126-140,140-146,146-151,151-162\n95-118,125-134,136-141,141-154\n63-81,84-94,94-98,102-114,114-140\n-10-5,5-7,7-13,13-22,22-62,62-79,79-95,95-127,127-134,134-158,158-170\n-8-12,12-17,17-40,40-54,54-82,86-100,100-108,113-120,120-143,143-172\n4-35,35-43,43-53,53-55,55-85,85-114,229-237,237-243\n-6-16,16-24,24-26,26-40,40-42,42-46,46-48,48-64,64-86,86-89,89-124,199-217,241-263\n33-44,44-71,71-89,96-104\n100-118,130-150,152-177,177-184,188-210,213-228,231-247\n101-109,128-152,152-178\n-1-46,49-66,71-84,91-104,104-109,109-112,112-128,177-190,190-199,201-224,224-264\n-8-11,11-21,21-63,84-106,183-207,215-260\n30-56,189-202,202-233,233-238,241-245,245-246,261-274\n57-74,103-121,195-217,218-252,258-276\n23-41,214-234,234-257\n42-64,66-88\n16-34,120-132,132-154,311-321,340-366\n10-39,39-58\n-12-2,2-7,7-9,9-30,30-45\n13-30,212-230,230-261,339-360\n-11-11,11-31,232-263,295-319,331-343\n4-20,234-260,266-278,345-364\n236-256,301-319,337-368\n211-223,238-250,256-274,278-304,328-342,347-361\n1-21,339-361\n-8-10,231-243,243-263,263-285,301-319,326-344\n91-125,125-159,159-164\n77-90,90-92,92-117,117-138,138-154\n91-125,125-143,147-155\n90-122,122-146,146-168\n-4-6,6-14,14-27,228-242,242-262\n0-31,86-104,107-126,225-245,251-269,348-360\n-3-38,103-121,225-252\n106-124,124-131,131-148,151-162,217-247,247-265\n12-34,90-98,122-139,226-264,332-343\n3-51,203-241\n12-21,33-40,196-209,211-243\n60-80,80-103,164-196\n54-82,147-167,167-172,172-183,259-285,300-318\n280-305,305-308,308-328\n46-69\n2-20,57-77\n49-60,291-315\n47-65,272-289,292-316,316-327\n33-42,51-68,286-314\n38-65,282-314\n52-81,162-187\n50-91,157-195\n105-114,116-134,159-188\n61-83,155-178,178-199\n64-93,113-142,142-162,162-191\n74-96,113-123,165-193\n84-102,126-144,163-190\n51-71,163-189\n102-119,119-153\n61-79,168-185,191-209,282-316\n162-187\n51-75,75-91,158-192\n137-148,148-156,159-192\n60-82,161-194\n-2-12,18-33,33-60,60-62,62-76,313-317,338-356\n15-33,40-54,54-72,160-178,290-325,325-327,327-357\n6-22,340-366\n169-189,189-208,213-231\n23-41,41-72\n39-72\n42-64,290-320\n43-64,291-319,321-325,325-330,330-347\n191-231,231-236,236-249,284-316,324-338\n178-210,210-222,222-226,226-239,239-241,241-246,246-258,285-315\n185-195,208-218,218-236,249-267,285-319\n56-81,152-194\n52-86,121-130,130-136,147-199\n49-73,73-88\n57-90,94-96,96-101\n57-89,159-176,176-178,178-193\n43-73,73-94,94-107\n23-35,41-45,47-73,186-208,284-294,296-307,307-323\n35-67,67-69,181-200,284-319\n47-80,163-171\n32-47,47-57,57-59,59-61,61-74,177-195,294-312\n176-202,212-238,273-309\n178-196,209-221,285-306\n39-74\n44-74\n160-171,171-175,175-178,178-196,276-302\n46-82,158-193,293-322\n47-78,94-118,158-196,292-324\n48-72,167-188\n153-179\n43-82,82-97,97-110,110-117,117-129,129-139,139-150,150-153,153-192\n45-70,70-102,102-122,122-125,126-145,145-148,150-194\n92-114\n253-261,286-315\n285-323,323-348\n289-318\n40-72,176-202,224-242,275-288,288-290,290-312\n46-73,73-92,179-201,209-225,278-311\n49-73,77-93,294-312\n42-78,163-197\n48-80,159-193,292-326\n-21-21,109-135,135-142,142-145,145-157,157-161,161-175\n163-197\n-1-1,15-42\n0-10,10-20,20-28,28-40\n-1-1,1-4,4-10,16-42\n-4-1,1-26,127-136,335-356\n22-42,42-47,47-62,62-84\n293-311,322-343\n169-187\n87-103,111-147\n56-76,79-93,93-96,110-148,154-165\n76-97,97-101,101-116,116-121,121-129,129-131,131-140,140-147,147-160\n66-81,81-84,84-86,88-92,95-111,111-115,115-141,141-159\n188-209,209-219,219-221,221-241,241-259,259-264,264-282\n88-104,104-111,111-117,120-146\n93-113,120-148\n16-27,27-33,41-78,161-199\n31-58,58-78\n167-193\n146-164,170-190\n0-32,39-69\n13-24,24-36,36-40,45-67\n24-42,47-75,168-192\n29-43,48-78,165-195\n39-75,156-194,296-304,304-310\n33-39,43-77,156-188,287-319\n43-72,84-88,88-103\n43-69,75-80,80-96\n285-303,303-314\n293-312\n130-145,149-164,172-192\n49-78,88-107,156-184\n51-80,156-184\n42-67,67-68,71-99,152-176\n37-50,50-88,88-106,106-134,153-176\n39-79,82-100,158-183\n51-77,109-126,126-146,165-173\n52-79,85-97,134-172\n45-74,96-116,154-172\n51-71,151-177\n174-213,213-236,278-310\n178-211,211-242,280-310\n287-307\n182-203,241-258,258-274,283-308\n57-79,79-92,150-182,182-200\n41-75,164-192,281-321\n46-71,168-191,283-316\n33-57,62-72,291-309,309-327\n27-46,46-53,53-66,292-314\n32-66,289-317\n51-76,153-171,171-174,174-193\n51-75,82-96,148-183\n46-62,62-66,66-85,162-180,180-194,281-297,297-314\n48-71,169-194,279-291\n31-43,46-77,315-333\n51-71,162-180,302-315,315-332\n170-182,182-189,189-209,268-284,284-297,297-316\n-2-2,2-17,17-28,28-78,137-163,163-197\n41-66,167-193\n15-33,144-168,168-180\n144-170,175-208,216-234\n145-163,163-182,182-203\n50-74,168-192\n58-88,163-180\n46-64,64-95,95-112,161-199\n-13-13,13-43,43-70,153-170\n140-156,158-202\n118-136,140-160,160-180\n-15-15,17-25,27-67\n4-30,30-52,52-69\n0-8,20-70\n-11-11,15-64,74-91\n42-78,166-194\n58-76,76-95,168-192\n38-61,61-68,68-70,70-86,90-109,160-200\n38-87,159-201\n-10-10,32-51,56-71\n0-8,48-91,140-159,159-179,179-181\n25-48,48-50,50-75\n0-19,27-59\n1-15,25-59\n52-82,83-98\n12-40,58-76,296-318,318-320,320-325,325-328,328-342\n12-30,42-46,292-314,314-326,328-340,340-358\n35-49,49-73,289-310,310-315,315-338,343-369\n28-47,47-72,291-335\n37-67,176-194,194-207,274-295,295-314\n33-68,179-189,273-295,301-321\n35-56,312-331\n-3-3,3-18,18-45\n25-28,35-59,59-62,62-71,71-75,75-79,79-90\n-3-3,3-30\n130-138,140-148,152-176,176-204\n-10-13\n-3-3,3-28,32-56,62-77,77-91,91-97,97-113,113-119,119-139,157-179,179-181\n-8-8,8-12,12-17,17-27,27-30,30-33,33-50,50-75,75-100,100-111,111-121,121-123,123-125,125-130,130-138,138-155,155-158,158-180\n115-136,136-140,140-164,171-189\n0-17,17-40\n-5-5,6-8,8-16,16-19,19-54,54-59,59-68,68-79,79-102,139-165,166-194\n-1-1,1-10,10-26,26-44,79-101,111-122,129-131,136-152,152-157,157-159,159-172,172-179,179-181\n45-64,64-83\n53-81,169-191\n60-80\n23-41,44-62,62-77,171-189\n-6-8,8-11,11-14,14-31,143-161,161-163,163-165,165-172,172-174\n-10-2,60-69,77-94,94-96,96-114,114-129,131-149\n17-35,97-110,116-129,165-175,175-202,325-343\n17-39,39-43,43-47,47-72,72-105,105-107,107-109,109-129,129-137,137-152,152-164\n-11-12\n135-143,169-191,208-216\n45-67,114-132,170-182,231-251,261-282,282-300\n105-136,136-147,165-183,235-254,307-325\n77-108\n0-18\n8-21,21-38,38-58,69-83,83-91,91-93,93-111,143-162\n-17-17\n-12-12,166-194\n-13-13,13-28,163-197\n-11-11\n0-3,3-8,8-28,170-190\n8-46,157-203\n-9-9,13-24\n-17-17,17-31,161-199\n158-181\n5-13,19-23,23-42,55-72,72-83,229-247,326-334\n-15-15\n-10-10\n0-22\n-10-10\n-13-13\n60-69,69-86,162-183,183-201,292-313\n53-77,177-195,290-300\n191-199,279-307\n175-193,193-203,279-298,298-315\n-9-9\n54-80\n36-58,58-74,300-320\n178-199,285-306\n178-197,197-203,283-309\n-10-10\n-1-1,1-20\n187-205,230-248,283-309\n-11-11\n-15-15,23-40\n-12-12\n71-104\n8-26,64-85,85-113\n59-77,142-155,156-189\n58-80,162-190,191-210\n278-288,288-297,297-317\n-10-10\n-22-22\n-16-16,16-37,46-49,52-81\n-14-14,20-37\n56-75\n56-77\n283-303\n285-304\n-2-2,2-17,17-37\n69-84,84-96,96-117\n76-94,94-115\n-18-10,10-13,13-31,37-48,48-57,57-76,139-154,154-158\n-17-42,42-69\n-12-22\n-1-38,154-163\n3-38,42-63,129-144,148-183\n2-6,6-32,32-56,56-73,148-182\n-14-21,21-51,51-67,74-101,214-224\n-15-5,5-28,28-52,55-63,63-81,204-218,218-234,234-238,238-250\n244-261,261-269,269-284,319-354\n245-282,323-352\n208-240\n207-239\n200-245\n211-244\n48-76,152-176,176-193,270-288\n-10-19,31-49,271-289,334-348\n-17-17,23-60,61-64,66-104,141-179,179-181\n62-66,100-133,133-140,140-144,144-150,150-178,178-182\n-1-1,1-11,11-28,28-45,54-77\n1-26,30-45,47-58,61-89,93-101,111-119,163-178\n-2-2,2-22,46-72,72-87,95-117,142-158,158-170,170-171,173-187\n-10-10,14-103,103-105,105-108,108-119,119-134,134-154,154-176,176-178,178-182\n-1-1,1-16,16-37,37-41,41-49,49-60,60-93,93-118,126-153,153-157,157-170,170-179,179-181\n57-99,99-113,113-117,131-229\n88-109,131-153,153-160,160-166,166-173,173-180\n-2-2,2-8,24-50,50-90,97-102,102-104,104-109,111-134,143-163,163-172,172-177,177-180\n49-76,86-118,123-145,149-176,176-179,179-181\n37-53,53-78,78-98,101-130,137-171,171-180\n134-152,152-170,170-190\n-9-9,12-25,25-44,47-62,62-68,87-107,107-120,123-142,145-162,162-168,168-179\n0-2,2-6,6-17,109-136\n38-82,152-180\n21-33,33-35,35-39,39-69,167-193\n27-75,158-178\n38-77,166-194\n16-35,36-75,100-118,130-149,158-202\n30-48,54-79,85-103,164-196\n18-36,58-78,79-95,145-161,164-179,179-181\n-1-1,1-27,27-34,34-38,38-70\n23-37,37-66,66-93,93-100,100-103,103-110,134-155,159-180\n8-35,46-66,66-74,74-77,81-87,90-94,94-95,112-138,138-150,154-171\n39-51,51-58,58-74,164-176,176-178,178-180\n2-13,29-68\n5-24\n0-24,86-104,104-116,243-261,261-272,275-291,324-339,339-360\n39-59,59-78,164-196\n44-73,155-205\n36-69,163-180\n41-80,163-197\n48-72,168-192\n49-72,169-191\n-6-12,299-339\n-7-7,7-33\n37-65\n0-17,63-81,105-123,123-144,144-164,164-166,166-194\n28-57,88-114,114-123,123-145,145-165,165-170,170-175,175-185\n-12-12,169-191\n-14-14,157-180\n-18-18,158-202\n0-8,8-22,22-29,76-97,163-197\n-18-34,81-115,124-150,150-157,157-161,161-186,186-215\n-20-33,37-64,85-107,107-119,119-129,129-137,146-162,162-166,166-182,182-187,187-194,194-216,225-245\n-17-22,29-34,34-56\n-2-29,29-31,31-33,52-64,343-358\n129-139,139-143,148-157,162-183,183-186,186-197,197-211\n129-163,170-195,195-203,203-204\n-12-34,43-62,179-198,198-206,209-218\n-6-32,333-345,345-348\n168-193,271-279,286-310\n170-193\n58-82,165-189\n55-80,80-95,129-153,165-189\n63-77,77-93,132-150,160-177\n294-315,315-327\n282-311\n45-68,68-71,71-85,148-180\n23-42,47-66\n31-49,49-58,58-75,165-195\n48-75,85-106\n38-54,54-80\n276-295\n47-61,61-80,164-196\n169-191\n170-190\n-19-24,164-204\n156-171,171-191,191-211,211-223,342-395\n1-16,16-42,144-156,172-196,196-207,207-218\n5-37,150-168,168-174,174-194,194-211\n-1-1,1-17,24-59,169-191\n25-60,60-63,63-76,143-159,159-170,170-179,179-181\n130-154,154-168\n112-121,121-133,133-151,159-180\n159-201\n136-148,160-179,179-181\n37-77,77-106,106-128,128-139,145-215\n91-109,130-141,141-173,173-187\n11-22,24-29,29-36,65-79,79-89,100-111,297-308,308-330\n49-62,62-82,82-102,125-147,147-157\n69-94,94-118,123-145\n142-160,160-178\n33-54\n77-85,132-159,159-174\n137-174\n19-34,34-54,69-98,152-179,179-181\n-12-12,62-89,135-159\n62-127,127-143,143-146,146-161,161-174,174-180\n77-99,99-104,104-109,109-134,139-157,170-190\n56-81,81-83,83-87,87-104,105-132,132-147,147-149,149-151,151-159,159-161,161-166,166-179,179-181\n75-134,147-153,153-165,165-195\n59-92,139-155,155-180\n49-103,114-148,148-159,159-180\n33-51,55-92,148-180\n35-54\n14-32,47-67,67-75,75-87,87-98,98-107,107-118,165-195\n71-89,143-157,158-178,178-182\n0-2,2-13,13-15,15-30,95-146\n32-87,153-207\n1-20,20-82,154-189,297-340,340-361\n1-16,16-20,20-82,148-187,290-316,316-361\n7-18,18-22,22-44,44-82,132-151,297-311,311-313,313-335,335-362\n11-21,21-31,31-34,34-43,43-58,58-63,63-80,301-313,313-337,337-351,351-371\n59-93,145-172\n60-91,116-133,146-172\n59-77,106-136,141-167\n58-78,93-107,112-120,120-141,141-162\n0-18,18-56,65-83,287-295,309-335,337-358,358-360\n6-19,19-58,336-358\n5-7,7-17,17-23,23-25,25-46,46-71,74-92,164-184,295-328,328-346,348-365\n7-24,29-50,50-78,146-164,164-195,290-341,347-367\n-7-15,28-51,58-67,67-80,290-298\n-8-10,28-52,61-65,69-87\n3-15,26-34,34-75,75-76,80-86\n33-49,49-86,131-150,151-165,165-195\n42-82,82-89,157-180\n31-53,53-73,164-196\n45-76,163-197\n35-40,42-55,55-66,66-71,71-86,156-180\n34-62,154-198,282-311\n44-67,158-193,193-203,272-289,289-311\n-10-10,10-26,26-47\n-11-11,171-189\n-12-12,162-198\n171-189\n-9-9,42-63,171-189\n-13-13,167-193\n0-5,5-18,39-57,64-82,161-172,174-179,179-181\n-18-18\n-15-15,21-27,40-48\n32-60,61-86,152-180\n0-49,51-70,155-205\n-2-2,2-25,25-44,108-125,125-145,145-158,158-172,172-177\n-18-18,28-45,132-153,169-191\n11-30,35-53,53-54,56-74,82-106,106-126,171-189\n-12-12,12-23,24-42,46-65,65-72,72-89\n201-213,213-216,216-236,236-248,248-277\n213-239,239-267\n-6-6,6-14,14-17,17-35\n-2-2,2-12,12-32,32-43\n15-55,55-85,167-193\n43-81,143-167,167-180\n45-56,56-71,71-73,73-76,76-89,153-180\n15-32,32-56\n36-69,69-84,148-164,164-176,176-180\n39-57,57-73,154-171,171-180\n42-76,128-147,147-169,169-180\n-17-17,161-199\n-10-10,40-66,117-170,175-185\n16-38,92-119,119-136,136-146,156-172\n36-61,85-104,104-112,112-149,171-189\n-20-20\n-23-23,23-29,29-40,169-191\n-16-16,157-203\n-1-1,1-4,4-16,16-21,21-34,57-84,87-95\n4-33,43-70,117-131,131-136,136-141,141-148,148-169,169-191\n-16-16,21-29,29-47\n0-6,6-18,51-69,88-106,128-145,145-165,165-178\n-18-18,157-178,178-182\n-6-6,6-27,27-42,49-69,147-155,155-166,166-169,169-191\n-1-1,1-23,23-29,29-56\n-1-1,1-44,163-180\n20-44,57-75\n0-17\n-13-13,157-180\n129-147,147-155,155-158,158-180\n171-189\n61-79,79-90,90-112\n-11-11\n-15-15,168-192\n-4-4,4-6,165-195\n-19-19,153-170,170-190\n-1-1,1-17,137-155,155-179,179-181\n-18-18,18-22,22-34,138-164,165-195\n16-54,56-65,65-78,83-107,112-121,121-131,171-189\n51-74,82-108,171-189\n42-51,73-107,107-136\n48-57,57-62,62-84,171-189\n-10-10,40-65\n46-82,156-175,175-194\n63-84,162-190\n53-79,171-189\n54-76,161-175,180-191,195-210,281-299,303-322\n47-64,64-80,191-209,287-305,305-308,308-325\n59-77,291-312,312-327,327-344\n285-319\n180-205,286-324\n43-70,70-85,172-185,185-206,291-311\n51-70,70-84,167-183,186-202,279-290,293-324\n42-62,272-293,297-311,311-316\n39-58,58-78,78-95,280-317\n53-70,70-84,207-210,253-271,288-319,319-334\n45-69,69-71,290-310\n16-50,53-67,67-83,83-97,119-139,139-147,147-160,166-188,193-218,218-220\n35-51,51-55,55-62,62-65,65-69,69-75,75-88,112-126,126-131,131-135,135-140,156-172,172-181,181-203,220-224\n51-61,61-65,70-80,151-167,170-186,198-232\n156-187,194-212\n153-187,187-190,190-200,200-214\n147-174,183-218\n157-169,169-179,179-189,189-216\n149-165,165-167,167-177,177-180,180-204,204-208\n-2-2,2-24,33-45,48-68,72-89\n15-33,33-54,54-56,56-77,77-90\n170-190\n152-175,178-182\n169-191\n-2-2,2-7,7-15,15-33,35-53,53-74,74-106\n2-9,12-16,16-22,22-30,30-36,36-59,64-70,70-79,79-90\n-29-29\n169-191\n162-198\n71-81,81-90,90-95,95-101,101-111,111-115,115-129,129-148\n158-202\n49-70,293-312\n-10-10,86-110,110-116,116-124,124-131,131-133,133-142,142-153\n281-310,315-333\n49-69,162-192,287-310\n50-71,164-184,288-310\n15-25,25-51,87-104,138-150\n260-280\n261-280\n28-48,48-53,53-54,308-321,321-332\n21-33,37-60,169-195,280-306\n172-190\n172-190\n294-305,305-332,332-351\n290-309,309-332\n290-307,307-325\n39-60,60-62,62-78\n38-57,57-87\n8-26,29-40,317-345\n29-47,317-339,339-341,341-368\n-21-21\n-10-10,16-42,138-169,169-179,179-181\n22-40,40-51,51-85,87-93\n-10-10,20-36,36-42,42-63,78-102\n46-54,54-59,59-63,63-66,66-74,74-85,89-107,110-128,145-157,157-160,164-174,174-186\n0-33,33-36,36-53,53-79,79-88,88-92\n78-117,117-141\n-5-5,5-34,40-69,69-90\n108-129,169-191\n0-24,24-28,28-68,76-93,93-99,99-124,136-165,165-171,171-173,173-176,176-180\n-36-36,36-67,69-89,89-109,126-159,169-191\n6-70\n38-57,57-67,67-77,77-103\n145-163,169-194,200-220,220-227,229-248\n329-349\n328-348,348-350,350-364\n-11-11,16-37,37-43,43-49,49-58,58-73\n-21-21,38-58\n-13-13\n-12-12\n-13-13\n169-191\n-11-11\n-12-12,16-19\n-3-3,3-16\n164-179,179-181\n-15-15,22-54\n-1-1,1-11,11-23\n-17-17,17-32,52-62\n-13-13,14-43\n0-19,30-38\n40-66,166-194\n170-190\n32-64\n34-70\n-27-27\n-1-1,1-7,7-17,17-19,19-65,65-79,79-82,82-84,84-96\n35-62,62-88,88-92\n-1-1,1-3,3-68,81-90\n0-12,12-16,16-21,21-33,33-61,61-67,67-69,69-96,104-121,124-128,128-141,141-143,143-161,161-180\n44-57,57-61,61-73,73-85,85-95\n33-60,60-90\n22-46,46-56,66-114\n43-60,60-87,90-105,105-130\n118-150,169-191\n-16-16,31-45\n-31-31\n-17-17,17-29,29-32,32-36,36-40,40-42,42-44,44-64,91-108,116-132,132-134,134-153,160-200\n-13-13,15-27,27-46,50-58,60-66,66-68,71-109\n-8-8,8-63,76-104\n38-63,63-86,86-112,112-114,114-145,145-180\n45-59,59-90\n-19-19,29-31,31-48\n168-192\n27-46\n18-36,42-60,60-76,76-80,80-94,99-117,128-146\n-12-12,14-32,112-135,135-140,140-143,143-163,163-168,168-179,179-181\n117-128,128-136,136-153,153-159,159-163,163-179,179-181\n324-359\n0-21,21-24,24-39,39-46,46-50,50-52,52-62,62-66,66-89,89-91\n-18-18,18-36,87-114,114-140,140-165,165-175,175-180\n147-174,178-204,241-259\n146-166,166-170,170-190,190-204,204-216,216-219,219-232,235-254\n120-152,152-163,163-174,174-178,178-182\n-23-23\n59-89,89-91\n24-41,41-61,61-69,69-90\n63-90\n289-303,303-325,325-331,331-342\n-17-17,17-22,22-65\n18-37,37-63,63-76,76-85,85-94,94-108,108-112,112-114,114-117,117-128,128-132,132-133,140-142,142-149,150-162,162-178\n-10-10,54-87,87-93\n0-34,34-60\n-16-16,16-45,45-53,53-73,73-90\n-1-1,1-9,9-45\n-1-1,1-15,15-32,32-64,67-89,91-99,103-140,140-160,160-166,166-178,178-182\n25-36,36-38,38-62,62-65,65-72,72-79,79-101\n-1-1,1-5,5-13,13-78,86-94\n45-73,73-77,77-97,97-140\n63-117\n-1-1,1-26,26-51\n-9-9,47-78,82-104,116-124,127-136,136-149\n-1-1,1-10,10-33,171-189\n163-180\n-1-1,1-3,3-15,15-39,143-162,162-198\n-9-9,118-132,132-139,139-152,152-174,174-186\n0-23,23-26,26-35,35-47,160-200\n165-195\n38-71,293-316\n102-120,267-275,290-301,303-306,306-331,331-339\n156-187,195-213\n295-314\n296-314\n8-18,294-311,311-317,317-319,319-324,324-346\n-5-13,26-41,41-44,44-52,52-53,271-289,301-311,311-320,320-324,324-340\n274-305,310-322,322-330,330-333,333-350,350-363\n272-287,287-289,289-319,319-328,328-343\n105-124,124-129,129-144,144-179\n100-123,130-149,149-182,195-217\n-5-5,5-15,15-17,17-25,25-35,35-49,73-77,110-127,127-151,157-173,173-175,175-180\n10-20,24-36,68-87,87-97,97-121,146-156,171-189\n40-71,169-191\n171-189\n62-93,116-124,161-191\n55-74,74-94,116-134,161-181,181-193\n50-75\n-11-11,26-51\n-12-12,33-57,62-70\n-12-12,159-168,168-170,170-190\n7-29,43-64\n187-205,287-313\n302-326\n65-83,294-311,311-313,313-325,325-331,331-344\n0-2,2-21,21-24,26-43,43-45,45-62,81-99\n31-45,45-60,60-69,69-90,90-98,98-101,101-112,112-132,143-158,158-161,161-179,179-181\n-18-18,155-169,169-191\n21-51,115-134,134-154,154-169,170-190\n-14-14,170-190\n-13-13,169-191\n170-190\n239-263,292-324\n10-40\n-19-19\n-1-1,1-35\n-1-1,1-16,16-20,20-55\n5-23,37-55,70-91,94-111,111-116,116-123,136-154,170-190\n23-41,41-44,44-86,86-89,89-91\n31-39,73-107\n-15-15,15-19,19-34,34-65\n-10-10,21-79,81-99\n-30-30\n73-107\n-1-1,1-6,6-8,8-21,21-41,46-52,57-71\n-13-13,20-33,33-37,37-41,41-72\n19-33,36-59\n46-76,169-191\n167-193\n-2-2,2-22,22-38,38-55,58-84,163-172,172-188\n-2-2,2-21\n165-194\n64-99,239-257,257-259,259-285\n35-71,71-80,80-93,93-99,99-107,107-119,119-150\n155-165,165-169,171-189\n171-189\n111-145,309-324,324-327,327-332,332-342\n113-132,132-140,140-158,288-300,304-306,306-315,318-324,324-333,333-351\n151-155,160-170,171-189\n52-61,79-98,98-122\n-23-23\n57-95,247-273,277-301\n58-79,282-301\n-18-18,23-59,59-76,76-104\n0-28,33-45\n-1-1,1-16,16-28,28-34,34-62\n0-5,5-9,9-16,16-25,25-48\n-15-15\n-15-15\n-17-17\n0-5,5-10,10-23,168-192\n0-4,4-27,27-47,47-63\n171-189\n3-21,103-121,121-122,126-152,152-172,172-188\n-13-13\n11-19,176-203,214-232,278-296,301-310,325-363\n-23-23,31-46\n164-196\n0-16,19-43,171-189\n145-164,164-196\n-14-14\n168-192\n-22-22\n9-35\n4-27,33-48,48-59,67-85,118-136\n12-21,172-187,188-202,202-207,207-231\n20-38,187-202,202-227,227-245\n47-68,72-108\n170-196,286-319\n169-179,287-315\n-15-15,15-46\n145-159,159-201\n162-198\n163-179,179-181\n-10-10\n-16-16,16-36,111-123,123-155,159-177\n-9-9,24-51,128-157,161-199\n24-50,87-97,97-118,118-126,142-153,153-161,162-198\n171-189\n-21-21\n171-189\n-9-9,156-185\n0-3,3-25,154-206\n-15-15,15-29,155-205\n-23-23,167-193\n-12-12,17-46,57-79,170-190\n-15-15,162-198\n-22-22,22-46,48-65,115-138,138-160,160-200\n-12-12,169-191\n-22-22,135-156,159-201\n-14-14,167-193\n-17-17,133-145,145-160,163-197\n0-4,4-18,18-20,20-28,28-48,151-179\n36-49,55-68,70-88,88-89,123-148,152-162,168-173,173-177,181-193,193-205,222-232,235-259,263-275,311-319\n1-19,34-52,69-87,94-112,135-152,152-165,168-185,230-256,256-260,260-276,276-296,314-326,330-332,332-341\n-10-10,10-44\n0-20,20-35,156-170,170-175,175-185\n-20-20,141-159,159-201\n15-31,32-47,47-66,75-93\n87-107\n-19-19\n0-20\n49-78,78-97,109-129\n44-73\n0-17,46-75,75-104,126-144,155-205\n35-63\n45-83,83-104,104-113,113-126,133-152,152-208\n30-59\n25-53,53-59,59-80,171-189\n37-61,118-130\n43-62,62-76,162-182,182-200,293-311,333-351\n38-59,59-82,161-188,286-304\n47-76\n58-73,73-103,103-113\n168-192\n275-296\n165-203,268-286\n72-92,151-165,165-169,169-201,282-295,295-312\n66-84,86-103,114-148,151-158,158-166,166-177\n159-178,178-180\n120-135,135-163,166-194\n1-22,135-159,163-179,179-181\n-24-24,164-196\n167-193\n-14-14\n167-193\n0-3,3-18,158-202\n164-196\n0-29,149-170,170-190\n-11-11,151-180\n-14-14\n159-201\n163-180\n167-193\n166-194\n-11-11\n136-152,154-179,179-181\n50-63,67-83,87-107,111-117,155-173,181-205,206-232,242-254,254-264\n59-90,92-123,225-237\n38-53,53-56,56-64,65-88,88-91,91-109,202-220\n160-200\n-9-9,62-92,96-119,119-135,135-137,146-171,171-189\n-12-12\n137-155,161-177,177-180\n157-203\n-12-12,40-49,64-83,83-101\n-12-12,113-132,139-147,155-177,177-179,179-181\n-10-10\n-12-12\n169-191\n-2-2,2-7,133-149,149-178,178-182\n168-192\n-24-24,166-194\n0-22,162-198\n-14-14,14-47,119-127,149-157\n-1-1,1-5,5-36,36-56,56-67,90-99,99-109\n-10-10\n-10-10\n136-157,162-178,178-180\n1-9,27-45,45-53,53-54,127-138,138-142,142-171,172-180\n-13-13,59-87,94-118,165-195\n-10-10\n-11-11\n124-139,139-152,152-155,155-205\n-4-43,43-45,45-76,97-121,123-143,143-166,166-169,169-173,173-234\n4-44,44-73,73-93,96-118,120-150,150-167,167-174,174-202,202-233\n19-42,42-59,62-81,81-100,110-128,167-177,177-181,183-197,197-199,203-215\n25-62,68-82,82-99,112-120,194-215\n3-4,8-29,304-324,324-329,329-359\n-4-17,236-254,305-332,332-356\n94-108,108-128,135-151,151-177,177-183,183-218,218-220,220-237\n96-115,115-124,124-172,172-234\n11-53,109-132,137-157,157-179,190-194,199-204,300-314,314-318,318-322,322-328,328-334,334-342,352-356\n8-56,56-59,59-65,124-136,142-151,151-161,161-177,184-217,310-318,318-340\n0-28,166-194\n-14-14,154-164,164-176,176-184\n0-20,154-170,173-187\n156-172,172-203\n146-162,166-207\n-21-21,29-31,31-47,47-85\n-10-10,73-94,163-197\n-20-20\n168-192\n127-144,145-167,167-193\n-27-27,161-199\n-11-11\n167-193\n0-20,26-40\n-10-10\n131-139,168-192\n0-4,4-24,24-34\n169-191\n170-190\n48-75,148-158,158-162,164-175,175-185\n-16-16,16-34\n29-48,120-147\n-10-10\n-10-10\n3-25,25-28,28-55\n0-36,36-74,313-332\n160-200\n146-170,170-177,177-183\n-9-9\n-15-15\n170-190\n3-21,25-36,36-53,169-191\n2-15,15-17,17-20,20-28,28-49,54-64\n55-82,82-113,124-144,146-159,159-161,161-179\n-9-9,44-72,72-84,161-180\n49-76,170-190\n-12-12\n-17-17,99-114,114-116,116-138,140-147\n20-39,45-76,162-198\n168-192\n33-50,50-52,52-70\n0-12,35-68\n42-81,163-180\n31-60,69-87\n52-79,156-176,176-184\n50-73\n50-72\n-5-6,6-24,42-54,54-64,290-308,308-326\n-40-40\n0-17,17-19,19-39,39-61,68-90,114-135,135-138,138-161,161-179,179-181\n34-52,52-77,77-90\n-11-11,11-14,23-69,85-90\n41-87,87-117,117-119,119-135,135-162\n40-53,53-55,57-78,78-102\n-13-13,22-61\n34-52,58-81,81-99\n147-164,164-180\n-11-11,11-28,28-48\n144-165\n121-135,135-173\n-14-14,27-41,46-61,61-79,114-125,125-133,133-149,154-172\n89-112\n-1-1,1-17,136-156,159-171,174-177,177-183\n10-28,49-60,60-81,83-98,98-120,120-127,127-139,147-165,167-193\n-19-19\n43-77\n-22-22,31-90\n72-84,84-106,106-125\n1-20,20-45,45-48,48-51,51-53,53-68,68-71,71-88,88-92\n-45-45\n19-73,121-156,166-194\n0-2,2-23,44-82,86-94\n0-18,18-52,59-83,83-88,88-92\n161-180\n124-152,152-178,178-182\n-16-16,16-48\n-15-15\n0-36\n130-156,157-203\n3-29,29-48,48-75,75-90\n47-67,67-77,77-78,86-105,105-107,107-112,112-123,141-159\n-1-1,1-43,43-45,45-49,49-89,89-91\n30-54,56-82,93-130,164-196\n137-152,161-180\n123-152,152-175,175-180\n-1-1,1-19,19-22,22-41\n-4-4,4-42\n-31-31\n0-9,9-44,44-64,134-153,163-197\n53-85\n0-4,4-61,69-82,82-98\n48-65,65-75,86-98,98-111,111-114,154-206\n61-87,87-93\n0-9,9-38\n-10-10,10-13,13-39,77-95,170-190\n-12-12\n151-164,169-191\n146-165,165-195\n161-180\n0-22,23-30,30-44\n37-58,62-80,82-91,91-116,129-156\n-1-1,1-17\n60-78,151-156,156-177,177-183\n-18-18,49-67,82-97,101-116,133-147,152-158,158-162,167-177\n2-17,106-134,134-150,150-152,152-170,170-173,173-187\n-10-10\n-18-18,25-48,169-191\n0-19,108-126,126-149,160-180\n-13-13\n-13-13\n114-125,215-249\n134-152,159-177,180-196,199-211,211-235,235-250\n0-68,68-87,87-93\n13-28,32-47,48-66,74-91,104-141,141-153,156-174\n-2-2,2-13,13-86,86-90\n45-61,61-74,78-89,89-91,91-94,96-98,98-128,128-130,130-153\n120-139,139-144,144-155,155-162,162-176,176-184\n140-172\n-25-25\n0-33\n-13-13,13-51,91-114,117-137,142-167,167-193\n-9-9,35-64,64-80,80-83,83-97\n-11-11,11-60\n26-59,59-83,101-119,123-145,145-168,168-179,179-181\n44-65,65-70,70-90\n16-62\n32-57,57-61,61-66,66-74,74-89,89-109,111-141\n33-88,88-92\n37-62,62-86,86-108,108-129\n122-144,144-148,148-175,175-180\n123-140,140-146,148-169,169-191\n-21-21,21-44\n-13-13,13-38\n-4-4,4-22,59-69,69-73,78-89,89-106,126-152,165-179,179-181\n13-33,125-158,158-166\n-21-21,165-179,179-181\n16-34,38-50,50-53,57-69,117-156,171-189\n-11-11\n-24-24,129-143,143-156,156-164,164-196\n-16-16,16-34,121-148\n108-119,119-127,127-160\n154-178,178-182\n140-161\n-9-9,21-46,118-145\n56-74,118-147\n-7-46,46-98,98-148\n-5-94,94-100,100-108,108-151,151-165\n-15-8,8-28,28-39,39-43,43-57\n-5-15,15-20,20-31,31-43,43-60\n1-39,39-81,81-124,128-145,204-230,230-261\n1-64,64-70,70-74,74-76,76-78,78-84,84-122,205-227,227-257\n16-25,25-49,49-56,56-78,78-82,82-100\n33-56,56-77\n10-65,76-97,99-120\n12-62,68-83,83-103,103-118\n-4-39\n2-36,36-45\n11-16,16-19,21-55\n12-30,30-35,35-65,68-77,77-92\n101-122,122-130,130-148,148-150,150-154,154-183,183-198,198-200,200-227,233-239,239-244,244-256\n98-121,126-153,153-183,183-227,242-252,252-265\n132-154,154-161,161-170,170-174,174-186,186-220\n138-172,172-181,181-222\n-6-4,4-8,10-31,31-55\n-2-1,8-31,31-34,34-54\n245-260,260-304,304-350\n12-30,260-295,295-303,303-311,311-353\n234-245,245-253,253-256,256-260,263-293,299-309,309-328,328-333,333-346\n243-258,258-288,298-334,334-352\n-8-43,43-48,48-50,50-72,72-96,96-98,98-101,101-126,126-147,147-166\n-1-1,1-15,15-37,37-65,65-82,82-100,100-107,107-109,109-112,112-132,132-136,136-139,139-150,150-156,156-165,165-179\n5-41,41-45,45-66,72-91,91-101,101-106,106-124,197-215,215-240,250-272\n-8-54,54-67,70-104,104-108,108-115,115-135,135-153,203-220,220-232\n18-44,47-69,69-89\n20-34,34-39,39-47,47-62,69-95\n97-119,141-153,153-175,175-180,180-212,212-236,236-241\n97-115,140-178,178-201,201-204,204-236,236-253\n6-34,34-51\n4-31,31-54,347-363\n-1-30,123-132,132-142,222-253,341-359\n-3-5,7-16,16-26,95-122,122-140,211-231,231-234,234-253\n191-208,208-210,210-214,214-226,226-252,258-276\n-3-8,17-40,63-81,283-301,319-337\n-12-16,16-19,19-40\n-1-29,29-42,330-344,344-359\n-3-17,17-32,32-44,78-96,115-133,136-154,226-244,263-281\n0-48\n2-48,331-350\n-1-36,50-72,203-211,226-236\n5-29,29-35,217-232,232-248,248-264\n15-33,48-70,97-115\n41-65,291-316\n33-70,294-317\n140-158,164-199\n131-148,148-156,156-159,161-190\n52-60,163-197,282-305\n43-75,162-181,181-194,283-291\n68-93,166-192\n69-92,132-150,150-157,163-193\n132-150,163-194\n38-67,292-318\n41-69,293-317\n166-198,294-312\n162-207\n177-198\n161-169,179-199\n41-56,56-76,76-85\n-7-11,13-26,26-41,41-72\n24-44,44-68,290-327,330-332,334-353\n-4-17,34-68,69-79,296-323,323-332,332-335,335-356\n59-90,113-132,159-191\n54-90,154-164,165-192\n41-59,175-205,290-323\n47-77,77-92,181-204,284-318\n45-58,58-60,60-76\n189-203,203-206,206-209,209-213,213-231,285-308\n57-86,165-190\n257-275,288-316\n38-47,287-309,314-322,333-360\n37-48,48-56,56-67,301-329,331-360\n-10-12,34-66,293-325,325-327,327-339\n-9-14,34-66,291-322,335-351\n177-195,268-294\n45-79,166-194,290-323\n46-80,133-157,164-195,233-252,287-325\n50-81,152-177,181-193,295-306\n52-67,71-93,145-159,159-166,166-170,170-189\n290-322\n53-73,178-206,281-307\n49-78,168-202,234-244,285-305\n34-52\n47-77,171-189\n46-63,63-81,283-295,295-298,302-314\n43-78,139-157,161-195,295-322\n48-81,161-197,287-297,300-321\n170-191\n167-189\n0-5,5-28,113-125,125-131,131-150\n1-14,14-37\n91-111,111-113,113-136,136-161\n99-117,117-153\n122-152\n40-77,163-197\n42-80,156-180\n169-191\n170-190\n41-64\n14-36,36-65\n42-81,164-196\n40-62\n56-83,176-180,187-191\n33-47,53-85,170-196,296-314\n36-68,73-90\n44-75\n54-83,122-148,159-188\n53-82,92-99,99-120,157-189\n56-75,126-150,184-202\n58-78,123-147,160-184,184-187,187-188\n175-199,199-216,275-292,292-311\n177-188,188-195,195-207,233-252,282-304\n40-71,159-191,287-314\n40-72,167-193,288-314\n34-65,298-331\n30-36,36-46,46-69,290-311,311-326\n57-84,154-181\n59-84,159-183\n2-14,17-20,20-29,29-37,39-68,130-151,151-159,162-177,177-183\n-3-3,3-11,11-17,17-30,54-80,140-153,156-204\n122-139,139-141,141-156,156-177,177-183\n1-22,22-40,55-73,77-95,142-156,161-176,176-178,178-182\n114-132,149-174\n150-170,170-180,180-197\n29-47,55-73,84-95,95-103,103-114,135-148,154-167,172-190,284-319,321-342\n144-162,162-198\n-9-9,9-27,27-47,47-71,156-169,169-178,178-182\n-1-1,1-33,33-76,76-101,138-154,157-179,179-181\n100-118,120-138,138-151,151-153,153-177,177-180\n-10-10,14-38,38-46,46-64\n28-55,167-193\n128-150,150-154,154-158,158-167,169-177,177-209\n119-137,137-150,150-171,171-175,175-187,187-197,197-199,215-218\n123-141,147-190\n113-124,124-132,132-140,144-157,157-186,191-209,270-286,286-311\n26-44,87-105,117-129,160-178,184-202,279-308,308-320\n64-82,284-302,319-340,342-353\n113-131,147-175\n34-65,65-83,83-90,90-108,164-180\n47-88,158-180\n43-73,163-197\n55-72,72-79,79-100,155-205\n163-197\n38-73\n0-8,8-35,35-38,38-40,40-56,63-87\n21-33,34-60\n28-37,49-68,68-88,169-191\n49-79,157-203\n-17-17\n36-51,51-69,171-189\n20-47,47-59\n37-67,67-69,69-95,153-175\n32-52,52-54,54-72,72-89,154-179\n16-36,43-90,111-137,161-180\n28-42,47-76,168-192\n2-20,20-32,32-34,34-37,37-62\n-1-1,1-6,6-9,9-15,15-18,18-58,68-89\n41-82,166-194\n35-44,291-320,320-323,323-336\n290-322\n0-13,13-56\n-11-11,30-75,75-86,86-94\n45-135\n-8-8,29-71,71-89,89-91\n36-61,61-75,75-85,85-90,90-93,93-118,118-121,121-148\n69-111\n34-81,81-99\n41-77,77-90\n40-68,68-112\n0-8,8-27,27-52\n120-143,143-176,176-180\n-35-35\n-22-22,33-81,81-89,89-91\n109-158,158-202\n8-31,36-54,60-80\n46-90\n-13-13,13-33,33-68\n57-123\n-1-1,1-27,47-67\n0-3,3-25,25-60,60-72,72-74,74-81,81-90\n52-55,81-106,106-111,111-119,119-137\n42-60,66-90\n77-103\n-14-14,55-65\n-1-1,1-18,18-41,41-60,60-86,86-99,99-101,101-107,107-129\n92-119,119-146,146-165,165-195\n0-21,21-26,26-34,34-36,36-38,38-66,66-79\n0-12,12-22,22-79,79-89,89-91\n3-12,24-41,41-44,44-47,47-81,81-103,103-125\n48-67,67-88,88-92\n-2-2,2-21,33-51,51-53,53-93\n122-137,137-152,162-198\n-2-2,2-5,5-6,26-36,38-41,41-61,61-74,74-106\n6-82,82-89,89-91\n-14-14,14-32,120-159,159-180\n24-55,55-81,81-84,84-96\n-1-1,1-4,4-17\n44-61,61-90\n50-69,69-111\n98-112,112-118,118-139,139-164,164-196\n2-12,12-24,28-58\n76-91,91-94,94-124,124-139\n-11-25\n-5-23,75-93,329-347\n131-149,152-178,178-195,195-225,230-248,248-262\n130-141,150-176,176-202,202-230,234-260\n-1-15,60-78,320-359\n-4-18,322-351\n26-45,327-376\n329-376\n135-144,198-229,234-262\n132-144,159-174,187-206,206-230,234-258,271-289\n136-167,176-194,194-226,232-252\n137-168,176-195,195-232\n32-54,54-62,62-83,83-86,86-94\n36-58,58-85\n-43-43,43-58,58-61,61-67,67-88,88-90\n-30-30,35-49,49-56,56-58,58-63,63-69,69-90\n3-25,107-125,138-148,152-179\n45-74\n-10-10\n108-126,132-161,161-177,177-183\n92-111,137-162,162-179,179-181\n-29-29\n-11-11,18-38\n-1-1,1-4,4-21,21-26,26-30,30-41,41-47,47-57,57-89,89-91\n0-20,20-22,22-48,48-53,53-64,64-73,73-84,84-96\n-1-1,1-6,6-11,11-36\n-27-27,33-50\n-9-9,9-30,30-51\n0-25,56-78,78-96,114-133,166-179,179-181\n0-23\n-16-16\n2-17,30-48,49-81,81-90,90-101,112-132,136-151\n0-20,20-26,64-76,76-79,83-95,120-139,146-164\n-19-19,19-35\n-16-16,16-40\n81-109,113-133,154-167,167-193\n-16-16,16-43\n-10-10,126-150,150-153,153-180\n-19-19\n56-97,155-205\n0-27,27-48,48-60\n-33-33\n-23-23\n-10-10,26-34,34-36,36-54,146-158,158-163,165-195\n159-201\n42-57,57-84,169-191\n17-32,32-36,36-68,68-90\n54-73,73-92,161-180\n0-14,14-21,21-25,25-27,27-52,57-79\n-15-15,25-57,158-202\n170-190\n292-315\n289-311\n-9-0,2-9,9-12,12-22,42-75,288-325,326-334\n17-39,45-69,284-294,294-326,347-365\n6-24,42-70,293-309,309-321\n3-13,13-28,45-70,296-319\n36-59,298-323\n39-57,302-328\n139-176,265-283\n110-130,141-157,157-163,163-165,165-179\n47-71,273-293,293-306\n51-75,283-310\n58-83\n71-89,91-109,122-140,157-182\n66-85,85-104,122-140,141-151,151-155,160-170\n47-71,269-280,280-305\n64-90,111-129,157-188,188-193,193-204\n66-84,154-183,184-200\n163-175,175-185,188-195,195-224\n171-194\n151-169,175-197\n11-29,40-50,50-72,149-168,168-173,173-176,176-185,185-195,282-300\n6-24,35-53,53-54,59-69,156-167,167-193,272-283,283-305,305-321\n-1-4,4-16,284-306,314-342,342-344,344-351,352-359\n0-12,77-90,90-94,94-113,113-118,134-152,167-179\n86-104,110-150\n107-118,118-151\n170-201,201-216\n180-202,204-216\n279-305,305-306\n32-52,52-53,56-75,284-309,309-319\n38-57,57-72,163-181,288-311\n106-124,126-141,145-154,154-159,159-161,161-165,165-166,216-229,229-233,233-238,238-251,261-270,273-275,275-294\n82-97,101-114,114-115,117-128,128-130,130-134,134-164,186-194,228-246,255-264\n152-170,170-176,176-187,226-244,250-268,268-272,272-278,278-280,280-307\n169-187,200-208,249-277,277-282,282-290,290-308\n44-79,294-348,348-357,357-380\n14-38,38-49,49-62,62-84,293-326,326-364\n298-316,316-336\n28-60,170-208,275-313\n29-62,171-210,277-314\n79-102,102-142\n81-110,110-117,117-143,143-162\n172-192,194-211\n174-193\n53-62,163-187,294-320\n153-165,165-175,175-185,296-323\n5-20,20-28,28-40,40-47,47-68,75-92,92-105,135-160,160-181\n-4-9,9-13,13-33,33-65,65-71,73-100,145-171\n235-265,265-269,269-272,272-299,302-321\n257-275,275-308\n34-52,57-76,295-331,331-349,349-381\n24-43,51-72,294-343,343-358,358-379\n162-180,270-288\n176-194,246-257,260-284\n1-12,306-331,331-334,334-361\n103-134,134-142,142-144,144-163\n98-110,113-139,139-160,184-193,199-209\n4-22,60-78,296-325,325-328,328-332,332-345,345-348,352-360\n299-323,323-341,345-365\n61-89,95-123,274-300\n96-112,112-118,118-122,122-138,138-161,165-177\n94-105,105-113,113-118,118-120,120-123,123-164\n169-180,180-191,214-229,233-240,240-244,249-255,255-266,268-296\n195-213,242-255,263-282,282-299\n39-51,298-308,308-336,336-362\n11-31,310-329,329-341,341-350,350-370\n288-299,299-322,322-351\n35-53,268-285,293-318,318-325,325-348,348-365\n-2-2,5-10,39-87,90-97,118-130,130-139,139-159,159-165,165-195\n-17-17,17-38,38-48,78-97,99-155,169-191\n0-28,32-50\n31-50,55-73,105-125,125-137,137-145,145-149,149-157,157-180\n71-109\n74-106\n52-70,70-73,73-107\n74-106\n40-83,162-180\n170-190\n42-62\n33-64,64-67,67-81,81-99\n47-77,77-90\n156-180\n21-39,44-63\n29-47,50-67\n50-76,76-81,81-83,85-88,88-92\n0-22\n-1-1,1-34,34-45\n-12-12,27-55,73-88\n-10-10,10-23,23-40,40-43,43-49,49-84,84-96\n34-82,82-98\n-8-6,24-87,87-103,103-106,106-126,130-150\n25-70,70-102,103-123,123-132,132-149\n19-35,35-53,55-78,78-84,84-86,86-98,98-106,106-117,219-243\n12-37,37-41,41-53,53-55,55-60,60-85,85-86,110-137,217-237,237-251\n115-129,134-148,156-179,186-204,206-224,224-234,236-252\n154-181,181-190,192-211,216-234\n32-50,50-82\n-3-15,36-69,69-71,71-73,73-84,84-102\n5-35,346-360\n2-36\n-8-18,45-65,293-315,342-352\n48-75,163-192,290-313,313-332\n50-75,160-186,186-191,296-314,314-333\n0-34\n48-75,161-178,178-182\n53-62,62-79,159-179,179-181\n171-189\n171-189\n41-62\n43-65\n43-65\n58-82,158-181\n61-81,88-106,157-182\n47-80,164-196\n39-59\n31-60\n61-86\n47-67,67-113\n53-68,68-71,71-77,77-79,79-83,83-90\n0-36,36-61\n33-54,87-98,114-132\n59-72,72-80,80-100\n65-115\n47-67,67-90\n67-88,88-92\n39-57,57-68,68-112\n63-117\n74-106\n34-46,46-49,53-60,68-71,75-79,79-83,88-91,91-97,97-115,120-140,152-170\n49-81,81-84,84-89,89-91\n39-67,67-113\n-28-28,28-39,39-64,79-101\n-14-14,136-161,166-194\n50-93,152-208\n41-63,169-191\n40-66,290-308\n50-73,286-297\n171-197\n2-14,14-31,40-58,58-72,290-315\n45-74,166-194\n162-198\n170-190\n3-21,43-65\n45-76,164-196\n34-55\n-22-22,120-136,136-147,147-150,150-154,154-167,167-170,170-174,174-178,178-182\n-9-9,128-147,147-177,177-183\n-27-27\n-21-21,161-179,179-181\n-1-1,1-5,5-11,11-31,167-193\n-18-18,18-21,21-23,23-39,124-138,138-154,154-158,158-174,174-186\n-1-1,1-16,16-27,27-52\n-24-24\n0-9,9-19,19-54\n-18-18,125-136\n171-189\n168-192\n169-191\n-9-10\n67-114\n76-105\n-11-10\n-10-10\n34-48,48-84,89-91\n79-93,93-99,99-112,247-262,262-265,265-282\n2-17,164-196\n-11-11,158-180\n8-18,18-22,24-49,52-64,75-93\n50-60,60-90\n70-87,87-90\n-12-12\n-10-10,14-18\n-23-23\n-15-15,20-39,60-79\n-5-18,18-28,157-171,174-201\n-11-16,174-201\n-12-12,15-31,31-35,35-48,105-138,169-191\n13-30,52-78,78-102\n70-90\n-7-7,7-29,45-62\n-1-1,1-20,54-86,86-89,89-91\n12-21,27-30,30-46,49-62,62-81\n38-74,158-202\n138-155,155-177,177-183\n-13-13\n303-323,328-345\n300-324\n-6-6,6-11,11-14,14-31,31-41,41-43,43-63,63-71,71-77,77-82,82-97,97-106,106-137,137-147,147-152,152-176\n-3-3,3-6,6-8,12-35,35-38,38-55,55-81\n-13-13\n3-14,14-22,22-33,76-101,110-121,144-161\n-5-4,4-26,31-41,59-70,70-81,81-95,95-124,128-141,141-162,162-175\n56-71,71-112\n11-23,30-79,79-92,106-122,122-152\n16-34,43-74,74-76,76-78,78-93,93-100,100-137\n150-168,168-203,207-216\n-9-11,18-37,302-321\n347-372\n-26-20,36-46,306-332\n-12-12,36-53,53-80,84-96\n55-73,73-90\n-13-13,48-61,61-72,74-106\n68-112\n13-32,32-83,83-97\n65-75,75-111\n69-107\n56-78,78-87,87-90,90-100,100-115,119-135\n51-76,76-114,116-120\n137-155,159-177,177-180\n-10-19,169-202\n-9-18,150-162,162-164,164-191\n-13-13,171-189\n79-101\n-16-16\n-12-12,12-54,85-102,171-189\n-16-16\n-17-17,25-45\n-20-20\n-16-16,18-24,24-44,44-64,120-136,136-167,167-193\n40-53,70-83,104-122,122-124,124-155\n0-22,165-180\n197-221\n50-69\n18-32,32-52,52-66,66-89,89-97,97-100,104-116,263-289,296-314,322-333\n-6-7,10-22,27-35,49-60,60-63,63-66,66-70,70-71,83-97,156-174,203-221,254-281,298-315,315-320,320-334,339-350\n25-52,52-53,67-79\n-20-20\n-12-12\n159-180\n-16-16\n166-194\n-1-1,1-24,139-164\n-15-15\n-25-25,28-35,50-60,62-66,66-68\n-13-13,13-15,15-19,19-23,23-39,67-89,89-91\n-5-5,5-9,9-20,20-56\n13-38,42-62,278-291,291-300,300-309,311-323,329-342\n57-77\n57-77\n3-55,55-79,81-90\n-1-1,1-14,14-18,18-33,41-90,98-116\n-12-12\n-11-11,111-129,129-148\n-1-1,1-3,3-9,9-12,12-22,67-85,90-100,100-122,150-168\n80-98,148-175,175-185\n0-31,31-34,34-52\n-9-9,9-28,93-103,103-112,112-122,162-180\n-25-25\n-14-14,29-56,147-154,162-198\n0-19,26-44,47-65,77-103\n0-24\n-14-14,168-192\n-9-9,15-33,63-80,80-92,92-100,100-104,104-108,108-128,128-134,164-177\n-4-17,44-62,62-73,73-98,98-130,130-150\n-4-14,20-40,40-47,47-49,49-71,71-84,84-89,89-123,123-140\n102-120,224-242,245-263,263-284,284-297\n-27-27\n62-74,74-78,78-126\n82-100,100-122,133-142\n37-60,60-90,124-156,157-177,177-180\n21-33,33-43,43-45,45-53,53-69,73-88,156-174\n64-116\n66-105\n139-161\n3-33,33-56,56-87\n76-92,92-111\n52-87,87-89,89-91\n77-103,103-128,131-152\n31-54\n97-128,128-148,148-152\n137-161\n99-132,132-133,136-141,141-155,162-179\n-1-1,1-42,164-196\n-2-2,2-11,11-20,20-41,157-180\n0-14,14-38\n86-118,118-133,133-135,135-137,137-169,174-192,279-298\n88-128,128-141,141-148,148-153,153-157,157-161,161-167,167-194\n68-86,89-107,112-130,133-163,274-292\n89-121,121-143,143-164\n85-129,131-139,139-169,175-197,273-293\n84-104,104-128,132-140,148-153,153-159\n89-107,107-140,140-157,177-199\n89-99,99-110,110-119,121-147,147-154,166-180\n-4-5,10-25,25-39,39-41,45-57,58-76,117-135,157-165\n7-37,37-58,72-90,164-187\n-8-8,8-28,28-31,31-47\n75-105\n68-90\n164-196\n-1-1,1-5,5-25\n3-32\n0-19,158-202\n3-13,13-38,161-180\n0-20,41-64,64-65,81-103,103-133,153-163,170-190\n0-16,16-36,36-50,50-86,86-89,89-108,108-128,128-145,145-166,166-194\n-3-3,3-9,9-12,12-35,92-108,108-128,128-149,157-165\n-2-2,2-31,32-52,52-72,72-88\n68-112\n-3-3,6-32,32-38,38-55,79-101\n37-57,57-76,76-90\n55-82,92-109,109-123\n37-47,53-84,92-108,108-123\n0-38,41-53,93-115,136-162,162-198\n-18-18,18-32,166-194\n87-102,102-118,118-138,278-302,325-333\n155-189,339-369\n161-192,332-367\n42-62,62-81,167-193\n40-61,61-77,163-197\n14-18,18-40,40-54,54-58,58-60,60-99,99-142,142-175,175-194\n8-44,44-51,51-101,101-103,103-116,116-123,123-136,136-152,152-188\n37-62,73-81,153-181\n42-65,154-186,294-302\n33-45,48-74,141-157,158-179,179-181\n48-76,169-191\n160-176,176-179,179-181\n1-12,12-24,24-37,37-64,64-71,71-75,75-77,99-122,122-133,145-170,170-178\n31-49,49-52,52-73,160-178,178-182\n55-76,174-192,293-309,309-323\n40-51,51-79,163-173,173-177,182-192,280-290,290-299,299-300,306-325\n40-64,64-77,77-87,87-93\n67-83,83-89,89-91\n0-10,21-46,46-64\n97-130\n68-89,89-91\n11-23,23-45\n-14-14,19-30,30-44,44-47,47-68,68-80\n21-45,127-135,159-180\n13-36,142-157,160-177,177-183\n46-63,63-76,164-196\n34-45,46-67,67-87\n48-71,170-190\n17-29,46-53,57-72,109-127,134-149,153-168\n40-55,55-81,163-177,177-183\n0-23,37-52,56-71,83-99,101-126,133-151,151-152,155-164,164-166,166-170,174-186\n-2-2,2-7,7-12,12-28,166-194\n48-72,162-198\n-20-20,158-202\n-4-4,4-10,10-23,26-42,42-44,44-61,61-75,75-79,79-85,85-109,109-124,124-133,133-144,144-149,149-154,154-179,179-181\n-13-13,164-196\n-15-15,25-33,33-40,40-48,48-51,51-69,71-89,94-111,111-124,124-138,138-153,153-158,158-202\n-16-16,34-65,75-106,106-122\n-22-22,159-201\n0-20,61-80,80-82,82-104,104-123\n-1-1,1-6,6-27,133-146,146-150,150-177,177-183\n-13-13,164-196\n-14-14,160-200\n-17-17,131-144,169-191\n-19-19,19-32,32-37,37-60,71-91,123-154,154-206\n-15-15\n-20-20,20-43,117-135,139-158,158-180\n0-13,13-18,18-42,42-63,63-76,76-84,84-107,125-152,152-156,161-199\n-11-11\n-17-17\n-29-25,25-32,32-70,72-96,96-103,103-117,120-162,162-178,178-203,203-240,248-270\n-26-19,19-57,71-82,87-96,96-116,118-122,125-163,163-194,194-197,197-218,218-240,251-275\n-4-31,31-50,52-57,57-61,61-65,65-69,69-83,116-140,175-192,192-212,212-230\n0-11,11-28,28-36,36-57,71-94,172-193\n272-290,309-319,319-355,355-368\n122-134,134-139,139-145,145-159,159-165,167-185,198-209,209-226\n126-151,151-172,172-194,194-221\n0-37,54-72,123-141,188-196,207-218,223-237,327-337,350-359\n-1-39,43-51,333-351,351-357,357-359\n-2-2,2-16\n168-193\n165-192\n2-27,157-180\n-13-13\n-13-13,138-164,164-172,172-180\n-16-16\n-20-20,151-164,164-180\n79-101,105-130,154-180\n61-78,78-126,127-135,135-155,155-180\n0-20,20-36,164-196\n-13-13,28-40,88-106,143-159,159-161,161-170,170-173,173-187\n-10-10\n2-13,13-16,16-21,21-34,157-203\n-10-10\n-10-10\n-4-9,9-15,15-29,29-54,54-74,82-110,110-116,116-137,162-203,203-207,207-230\n4-24,24-31,31-51,51-57,57-62,62-83,83-102,117-138,166-186,186-205,205-223\n11-36,316-337,337-343,343-345,345-357,357-368\n2-31,231-255,260-274,309-317,343-356\n107-130,136-158,162-180,189-207\n6-19,19-31,31-44,77-101,177-191,191-208\n12-21,21-29,29-30,32-44,169-186,186-196,196-216\n-11-11,160-200\n62-89,164-188\n166-187\n23-46,57-77,77-78,82-94,146-168\n45-63,163-180\n-7-7,7-18,18-35\n-21-21\n0-5,5-11,11-15,15-29,158-177,177-183\n-31-31,134-157,157-203\n153-207\n-28-28,148-212\n160-180\n0-3,3-8,8-10,10-29,154-179,179-181\n-1-1,1-17,21-38,44-62,65-83\n-15-15\n-18-18,27-47,166-194\n-27-27\n-1-1,1-25,159-201\n0-19,146-161,164-176,176-179,179-181\n-12-14,14-47,158-175,176-205,205-230\n0-4,4-6,6-42,173-227,335-360\n-19-19\n-23-23,23-73,108-162,162-166,166-194\n-17-17,17-69,69-111\n-15-15,15-35,35-52,57-75,75-88,88-109,118-146,166-194\n-1-1,1-14,19-32,165-180\n-20-20,20-26,26-44,158-202\n-16-16,167-193\n-12-12,12-29,128-146,146-168,168-180\n-13-13,149-180\n-29-29,32-45,45-49,49-58,58-66,68-83,83-88,88-102,110-132,132-139,139-144,144-148,148-212\n-20-20,20-25,25-55,57-64,64-75,75-84,99-150,150-152,152-164,164-196\n92-100,111-155,155-173,268-285,285-290,292-303,303-334,334-336,336-342,342-345,345-364\n94-112,112-131,131-134,134-139,139-146,146-163,297-333,333-340,340-342,342-351,351-363\n-16-16,159-201\n153-169,169-191\n-17-16,16-42,136-154,180-200\n-8-44,128-154,159-187,187-217,334-352\n2-22,22-35,344-354,354-358\n-22-22,155-178,178-182\n0-19,48-65,68-85,85-89,89-96,122-142,142-147,147-153,167-179,179-181\n-5-5,5-20,161-174,174-186\n-14-14,170-190\n-10-10,168-192\n0-15,20-30,157-174,174-179,179-181\n-13-13,33-55,128-154,162-179\n-4-26,26-43,149-167,182-218,329-347\n-17-13,13-25,25-57,96-113,126-136,136-146,146-154,157-186,186-189,189-193,193-198,198-233,310-328,328-343\n-22-22\n-3-15,38-57,57-74,178-182,297-340,340-353\n-4-5,5-10,10-31,40-57,57-72,171-179,287-304,304-332,332-343,343-356\n20-46,51-75,96-114,175-194,276-302,319-337\n-6-12,14-25,30-39,39-57,61-79,303-328\n-13-13,48-75,166-194\n44-52,55-75,75-96\n62-92,92-115\n52-69,73-94,106-124\n52-94\n66-89\n79-107,111-140\n56-93,93-106\n-13-13,153-173,173-180\n-17-17,17-32\n75-105\n73-105\n54-98,98-101,101-125,125-151,151-209\n-2-2,2-16,85-132\n-2-2,2-15,15-36,36-51,56-76\n-1-1,1-35\n47-78,78-93,93-108\n71-113,113-136\n49-84\n50-94\n50-64,64-103\n37-63,68-71,71-83\n45-82\n44-84,166-194\n69-94,140-152,154-206\n37-65\n46-78,162-198\n54-76,76-102,102-121\n186-206,206-212,212-225,225-228,228-243,249-291\n185-221,265-268,272-284,284-303\n0-14,170-190\n57-86\n56-90\n141-154,161-180\n-14-14\n125-149,149-153,153-157,157-167,167-169,169-176,176-178,178-182\n94-106,106-112,112-124,124-126,126-128,128-134,134-151,161-175,175-185\n-12-12\n0-20,164-196\n-12-12\n-22-22\n-10-10\n1-26,115-131,131-133,133-172,172-175,175-180\n77-113,113-118,118-130\n141-160,160-180\n134-168,168-174,174-180\n-9-9\n-14-14\n-11-11\n169-191\n6-18,18-27,27-53,55-58,64-71,71-82,82-84,84-91,91-96,96-113,113-116,116-129,129-148,155-180\n0-33,52-69,69-77,146-165\n-14-14\n-13-13\n-11-11,168-192\n-16-16,166-194\n0-17,26-46\n-12-12\n-18-18\n0-23,163-177,177-183\n-1-1,1-3,3-34,141-155,155-161,161-164,164-196\n0-5,5-37\n8-28,28-33,33-39,39-54,115-133\n-11-11\n-10-10\n0-13,13-23,23-45,109-128,132-153,169-188,197-216,218-236\n-4-15,15-19,19-51,51-53,53-72,84-108,108-114,114-129,129-137\n-6-18,18-20,20-22,22-30,30-49,87-99,99-101,101-104,104-127\n-21-21,112-120,123-131,134-143,143-153,169-191\n-15-15,162-180\n-17-17,168-192\n-14-14,166-194\n-16-16,154-206\n-10-10,35-55,115-136,167-193\n34-52,94-112,179-201,201-216,216-233,252-264\n272-300\n40-80,162-206,277-306\n56-79,159-201,267-310\n167-196\n166-192\n40-67,286-316\n33-55,55-77,268-286,286-316,323-341\n54-71,71-94,157-193\n53-88,163-187\n47-71,157-191,289-310\n60-78,149-181\n53-82,160-183\n46-72,168-193,290-318\n42-83,172-194,282-324\n43-78,82-88,163-185,277-318,318-321,321-343\n167-194\n158-180,180-203\n171-191,191-210,283-316\n169-188,188-216,253-269,276-316\n33-43,43-52,53-80,164-190\n51-84,156-185\n44-64,64-78,78-91,165-179,184-198,295-317\n51-76\n49-62,62-64,64-67,67-86,173-196,289-322\n45-74,277-293,293-322\n49-93,168-197,197-206,206-216\n47-96,165-183,183-205\n26-36,36-40,43-68,296-322\n43-62,62-69,69-82,82-90,165-188,188-201,201-203,203-205,205-207,207-222,222-229,239-257,272-296,296-301,301-317\n49-66,66-68,68-89,164-177,177-193,197-221,264-272,275-281,281-295,295-301,304-308\n-17-17\n-1-1,1-18,123-143,143-146,146-150,156-178,178-180\n-15-15\n0-22\n-20-20\n165-195\n153-180\n162-198\n-16-16,159-201\n-16-16,128-147,147-161,161-180\n-12-12\n-11-11\n162-198\n160-180\n0-6,6-21,158-180\n-5-5,5-28,28-47\n0-19\n-17-17\n170-190\n-22-22,29-54\n72-98,117-132,132-155,155-205\n0-18\n166-194\n146-170,170-190\n-18-18,136-161,161-179,179-181\n-12-12\n166-194\n-1-1,1-30\n167-193\n-11-11,159-201\n-16-16,16-37,37-51,51-65\n-10-10,13-36\n164-196\n140-162,162-179,179-181\n0-48\n170-190\n-2-2,2-5,5-19\n0-6,6-25,62-86\n168-192\n2-41,41-52,52-57,57-60,60-75,75-87,87-96,96-110\n-1-37,37-93\n59-86,86-93,93-102,102-105,105-122,136-154,154-155\n53-78,233-262\n-11-25,25-28,28-45,45-49,49-88,88-108,108-112,112-118,120-138,216-228,232-262,265-288\n36-58,58-78,78-83,83-95,95-107,260-278,309-327\n42-75,76-97\n40-58,58-60,60-62,62-64,64-83,83-87,92-102\n68-88,88-91,91-93,93-113,120-136,139-155\n-4-29,335-354,354-356\n-2-13,13-18,18-30,332-358\n49-67,171-193,287-318\n59-78,166-194,292-317\n285-308\n54-75,167-186\n53-75,158-161,165-187\n185-211,278-293,293-295,295-299,299-316\n180-189,201-212,276-314\n-1-1,1-57,80-100\n-25-25,25-50,50-62,62-78,78-82,82-95,95-125,125-156,156-204\n0-10,10-22,33-62,62-84,84-90\n-12-12\n151-209\n-14-14,21-39,39-43,43-48,48-65,65-81,81-100,100-124,124-145,160-200\n-15-15,32-57,90-107,107-167\n-13-13\n-17-17,24-44\n168-192\n165-195\n169-191\n0-13,54-71,71-83,83-107,107-112,112-126\n-20-20,20-21,23-26,26-28,101-110,113-126,126-133,133-145\n127-146,146-162,169-191\n116-140,169-191\n0-6,6-27,148-163,163-168,168-192\n-3-3,3-28,170-190\n0-6,6-41,41-49,49-54,67-79,79-87,87-105,113-131,131-153,158-202\n-13-13\n169-191\n132-157,169-191\n125-179,179-181\n79-89,89-98,98-114,114-134,134-161,161-180\n-25-25,39-57\n79-103,109-119,119-127,127-150,150-152,152-180\n248-256,271-310,310-324,324-346\n266-301,301-307,307-309,309-319,319-345\n-2-18,18-41,41-45,45-46,48-52,52-54,75-101,341-344\n-7-11,11-14,19-40,49-63,67-100\n102-122,133-182,182-211,211-236,240-266\n100-120,120-124,128-172,172-182,182-214,214-238,238-268\n132-158,158-174,190-208,245-263\n15-37,142-164,256-260,260-280,288-339,339-342,342-359\n252-271,293-327,327-355\n135-145,145-163,182-204,204-236\n137-155,155-175,184-196,196-214,222-240,263-281\n-24-24\n-16-16,24-32,32-58,107-118,128-154\n164-196\n-17-17\n-19-19,110-129,129-136,136-149,149-153,153-155,155-166,166-194\n0-20,45-70,70-72,72-76,76-90\n-15-15\n-11-11\n0-16,156-164,165-195\n16-45,46-55,59-63,63-83,90-112,154-166,166-194\n10-27,27-30,30-50,50-72,151-165,165-177\n-19-17,17-33,37-50,50-64,74-95,95-115,115-125,125-149\n-6-9,9-11,11-15,15-39,40-72,72-78,78-86,86-96,96-135,146-169\n43-61,83-101,229-248,248-251,255-274,289-311,330-341,341-347,347-365\n37-56,56-95,95-111,113-131\n48-89,89-92,92-104\n0-13,13-20,23-46,49-63,63-80\n-15-15\n1-10,10-27,48-67,114-119,119-122,122-142,142-181\n14-33,131-194\n0-41,42-52,127-137,169-179\n29-49,208-233\n22-49,205-213\n199-219\n198-218,222-239\n170-190\n136-156,165-195\n-2-2,2-16,44-83,160-180\n18-36,41-58,58-63,63-75\n45-81,162-180\n54-81,125-153,156-182\n54-78,145-164,164-182\n177-195,198-220,293-312\n40-55,55-76,168-192,282-309\n44-81,177-197,280-310\n39-85,167-193\n38-76\n52-72,78-90,179-197,270-283,283-292,292-298,298-326\n52-76,157-182\n53-77,156-184\n30-43,51-74,166-194\n17-43,43-55,55-64,64-75,75-88\n240-258,267-289,289-306\n179-198,198-214,262-280,281-302\n189-209,269-297\n271-298\n195-244,244-251,251-272\n192-220,220-240,240-260,260-279\n-12-12\n0-18,22-46\n13-48\n43-76,76-85,85-95\n42-59,59-78,161-179\n53-72,75-89\n52-72,128-146\n10-40\n9-31,31-47,52-70\n29-40,40-48,48-59,293-318\n162-184,283-313\n39-66,66-69,69-86,296-323\n48-86\n46-61,61-66,66-93\n-13-18,162-189\n162-184,184-200,344-374\n167-192\n169-191\n-18-18,18-35\n-4-27,27-43,43-62,220-238\n64-116\n26-41,46-65,65-67,67-71,71-82\n37-55,55-76,162-198\n-11-11,122-136,136-139,139-155,155-161,161-180\n0-22,27-35\n347-370\n-17-17\n5-27\n11-23,23-25,25-29,29-38,38-51,51-59,59-64,64-84\n2-35,167-182\n12-22,27-56,56-76\n13-40,45-74\n0-19,134-180\n-28-28,35-57\n-6-6,6-9,9-15,126-143,143-163\n-13-13,13-19,19-33\n0-4,4-21\n0-29\n0-26,31-53\n50-70,70-97\n208-222,222-251,255-268,268-270,270-278,278-290,290-308,308-321\n-10-10\n-22-22,163-197\n-15-15,15-26,26-43,43-48,48-62,63-83,128-146,146-169,169-180\n-11-11\n-15-15\n-1-1,1-18,23-43,43-46,46-57,83-101,101-107,107-124,136-157,157-171\n139-166,166-171,171-176,176-184\n165-195\n-12-12,12-22,163-180\n6-24,40-50,50-59,59-61,84-102,102-118\n-11-11\n-9-9\n37-55,155-183,183-192,192-204,204-214\n158-176,176-180\n14-33,43-70,74-92,171-189\n169-191\n30-42,44-63,63-80\n-11-11\n-15-15\n52-70,287-315,315-319,319-323\n52-60,60-78,287-315\n3-21,30-43,43-58\n-13-13,13-17,17-19,19-27,32-59\n26-45,46-59,59-69,69-89,89-102,145-157,157-160,164-176\n16-48\n-33-33\n-1-1,1-4,4-25,25-46\n-13-13,70-94,99-121,159-201\n1-29,152-180\n-12-12,170-190\n8-11,11-13,13-24,24-28,33-43,184-201,349-368\n47-62,62-84,89-108,157-177,177-183\n36-70,70-77,77-91\n41-67,67-81,81-96,96-107,156-178,178-182\n37-65\n24-46\n53-75,75-95\n32-50,50-69,72-90\n5-21,24-32,32-56,56-69,69-74,74-92\n32-56,59-80,174-196,289-305,305-309,309-330\n34-56,56-76,129-147,172-190,289-322,324-351\n63-91,91-99,99-120,145-157,157-168\n65-95,97-117,153-172\n8-26,26-53,53-84,283-325,345-363\n8-30,30-52,52-82,177-200,277-293,293-327,327-340\n0-4,4-15,15-20,20-35,35-38,38-60,160-180\n28-47,47-61,163-197\n40-55,55-67,67-88,169-191\n56-79,160-174,174-180\n59-81,119-146,169-191\n-4-4,4-7,7-38,38-58\n16-34,34-42,42-54,54-74,144-162,173-189,189-191,191-221,309-327\n15-34,34-42,42-45,45-51,51-70,144-162,163-181,184-203,203-207,207-211,211-222,309-327\n39-76,176-184\n-4-4,4-20,131-154,154-156,158-202\n140-155,158-202\n1-9,12-14,14-35,35-57,69-112,112-126,126-128,155-168,168-175,175-178,178-182\n-7-7,38-56,157-203\n166-194\n111-133,139-157,161-199\n55-77,81-93,108-125,125-133,133-154,154-167\n132-141,165-195\n16-46\n1-15,15-48\n-30-30\n-19-19,159-201\n5-23,124-161,161-199\n-19-19,22-26,26-42,139-160,160-166,166-194\n127-147,157-203\n24-47,79-97,97-107,109-127,222-233\n0-58\n-15-15\n0-19\n-15-15,31-40,51-69\n142-158,162-198\n-15-15\n139-165,169-191\n-16-16\n58-76,76-84,84-89,89-91\n-14-14\n-1-1,1-16,16-42,51-59\n-15-15\n-19-19,21-42,73-81,81-87,87-93\n0-22,23-55\n54-62,69-72,72-78,103-114,127-152,152-160\n69-88,88-117,117-131\n69-83,83-90,90-117,117-129\n79-92,92-95,95-97,97-99,99-102,102-127,257-279,286-297,297-315\n99-122,226-241,241-245,245-253,253-278,278-291,291-296,296-314\n64-82,82-92,92-99,99-102,102-119,123-134,134-146,146-154,274-287,287-290,290-317\n72-98,98-101,101-132,137-155,157-175,277-301,301-322\n80-104,125-143,263-286,293-313\n78-96,105-129,239-259,261-279,279-288,288-326\n-29-29\n-18-18,18-22,22-53,53-78,78-90\n-12-12,15-34\n0-9,9-46\n18-47\n-1-1,1-18\n0-23\n-10-10,169-191\n24-36,36-57,57-76,119-137,166-194\n-11-11,170-190\n-9-9,12-29,29-50,139-166,171-189\n-11-11,164-196\n-20-20\n40-58,65-92,96-119,171-189\n125-143,145-163\n63-85,171-189\n-13-13,13-28,142-162,162-167,168-192\n-15-15,164-196\n-16-16,16-33,133-153,153-164,164-173,173-187\n-18-18,166-194\n-17-17,149-161,164-196\n154-206\n-15-15,129-145,145-150,150-152,152-158,162-198\n152-208\n33-54,54-61,61-64,64-85,156-178,178-182\n40-58,72-84,151-180\n32-61\n-7-7,7-9,11-31,31-58\n19-65,65-82,154-180\n25-84,154-174\n-4-4,4-6,30-63\n43-62,62-81,152-166,166-169,169-191\n-21-21\n-44-44,99-135,161-199\n0-20,25-34,34-85,85-90\n-18-18,18-56\n-17-17,17-63,113-141,170-190\n1-19,37-86\n135-159,159-201\n167-193\n-3-3,3-24\n-23-23\n-10-10,30-47,47-69,162-198\n-18-18,37-64,66-74,168-192\n14-30,30-58,134-150,158-202\n167-193\n-2-2,2-16,42-84,114-141,141-156,163-197\n171-189\n144-161,161-174,174-186\n169-191\n141-158,162-180\n141-161,161-163,169-191\n145-180\n169-191\n113-136,146-164,164-196\n-25-25,25-33,33-49\n-9-9,27-45\n-11-11\n-14-14\n-13-13\n-23-23,24-29\n-21-21\n-15-15,23-43\n32-46,123-136,146-163,163-197\n-1-1,1-17,21-36,42-60,166-194\n57-80,99-117,121-149,149-166,166-174,174-177,177-183\n165-195\n164-196\n-12-12,12-39\n-11-11,16-45\n167-180\n-10-10,10-35,38-52,165-195\n160-179,179-181\n-1-1,1-17,27-39,43-45,45-48,138-148,153-180\n-30-30,32-35,35-54\n-9-9,26-42,42-72,105-123,123-158\n34-71,164-196\n33-76\n-4-4,4-68\n-8-8,8-24,24-62\n171-189\n171-189\n115-128,128-134,134-161,161-199\n-11-11,37-72,161-180\n160-180\n41-67\n148-158,160-164,169-191\n148-167,170-190\n35-55,55-71,119-137,161-199\n51-103,131-187,305-342\n46-101,113-140,140-159,159-193,262-288,290-326\n38-57,57-74,74-77,77-81,81-116,138-164,168-197,330-342\n50-72,85-110,126-144\n265-279,290-314\n289-312\n300-333\n297-330\n249-267,288-310,310-325,334-352\n263-286,286-310\n163-198,222-247,265-304\n164-199,214-248,274-303\n178-191,191-216,216-218,218-228,275-300\n177-198,198-216,216-237,280-308\n165-193,209-214,214-246,252-293\n163-191,196-198,198-209,211-247,262-282,282-289,289-300\n41-66,294-328\n40-67,293-327\n-8-12,18-26,37-52,52-69,303-336\n12-26,30-71,289-314,314-334\n-5-21,39-68,78-96,299-317,317-332\n-1-21,32-70,81-100,300-325,325-342,342-359\n40-65,297-332\n39-67,296-334\n16-34,35-54,54-70,313-326,332-345\n43-74,74-97\n44-71,85-103,299-317\n-8-13,31-74,299-334\n38-74,301-334\n-10-9,9-11,11-15,15-32,42-74\n-5-16,41-67,311-335,339-352,352-355\n39-53,53-56,56-85,155-168,174-187\n48-70,70-72,72-87,137-155,166-190,305-322\n305-323\n178-209,265-296,296-298,298-316\n158-170,178-202,268-292,292-309\n3-18,18-20,31-64,274-296,299-314,314-333\n32-67,75-90,273-294,294-302,306-330,346-358\n17-37,37-58\n35-56,314-332\n22-32,32-56,314-332\n48-84,153-189,273-288,288-292,292-294,294-312\n49-83,92-98,98-117,150-191,282-294,294-312\n48-65,65-69,69-90,149-168,172-189\n286-311\n284-311\n285-308,341-344\n145-162,164-211,265-312\n144-163,163-205,213-219,271-310\n166-199,200-211,268-288\n41-66,296-332\n40-66,295-331\n32-48,48-72,306-325,339-343\n29-69,303-333,341-359\n50-86,163-199\n47-82,156-188\n153-185,279-297,297-306,306-315\n32-64,303-323\n32-59,299-326\n53-86,137-165,165-172,172-182,182-198\n53-86,145-156,156-165,165-170,170-187\n159-177,177-203,220-245,264-303\n132-150,160-202,215-242,266-287,287-291,291-311\n163-186,219-245\n160-187,219-230,230-247\n27-72,297-326\n35-64,298-324\n28-41,41-61,305-323\n30-46,46-63\n-21-21,24-44,65-140\n11-19,47-65,73-118\n-24-24,51-73,81-96,96-102,102-120\n-9-9,39-59,68-130\n78-117,132-152\n48-65,65-107,110-131\n-1-1,1-33,40-57,57-80\n1-32\n-4-4,7-27,34-50,50-59,59-69\n0-47,57-82\n0-31,31-52,52-77\n0-31,31-45,45-78\n103-146,163-169,169-191\n80-101,104-155,155-163,163-170,170-177,177-180\n115-143\n108-140,146-165,165-175,175-179,179-181\n103-156,156-180\n112-134,134-165,169-179,179-181\n78-100,100-146,146-165,165-195\n103-137,137-145,145-146,148-166\n-25-25,25-39,54-74,74-77,77-104,104-132,136-154\n29-42,46-56,56-67,74-128,140-158\n0-18,28-46\n-20-20,77-127,135-159\n78-104,104-131\n0-36,40-56,56-84\n7-45\n0-30,30-42,42-50,50-53,53-84\n7-31,31-52\n85-107,107-132,132-151,151-166,166-168,168-192\n14-32,58-71,73-86,86-104,108-116,119-127,127-138\n-15-15,19-40,45-62,62-75,83-122,122-140,170-190\n-22-22,22-24,24-30,30-50,71-124\n15-33,62-76,76-81,81-96\n65-89,89-127,127-132,132-156,163-197\n65-117\n2-41\n8-36\n0-36,43-70\n0-31,48-58,58-75\n116-128,144-180\n148-173\n119-139,143-179,179-181\n0-14,14-20,20-37,40-56,56-77,90-109,109-130\n42-67,67-69,69-73,73-75,75-92,92-96,96-132,136-155\n-24-24,83-157\n-15-15,15-26,43-60,81-89,104-132\n-45-45,163-179\n170-190\n169-191\n-13-13,91-100,111-125,125-134,134-150\n0-20,28-46\n-10-23,101-145,325-350\n95-146,317-347,347-367\n68-82,82-133\n80-92,98-122,122-125,125-134,137-155,170-188\n274-291,293-312\n276-292,292-312\n295-314\n280-291,293-314\n1-39,39-59,59-77,286-302,302-334,334-361\n3-35,49-57,57-79,285-304,304-329,329-363\n-2-11,11-31,31-45,51-80,302-329,332-334,334-351,351-356,356-358\n-10-5,5-8,8-35,55-76,306-325,325-339\n14-34,34-50,321-350,350-360\n0-4,4-15,15-26,26-35,35-37,37-46,46-59,314-338,342-360\n-1-35,38-43,43-58,58-81,325-359\n-4-40,40-68,325-356\n-8-5,5-32,57-79,322-342\n0-3,3-11,11-27,27-30,34-46,329-351,351-360\n330-353\n167-186,186-214,214-233,233-263,266-279,279-296\n167-191,196-222,222-230,230-235,235-252,252-255,255-276,279-298\n196-220,220-238,238-274\n165-192,195-222,229-242,242-273\n99-141,213-225,338-364\n97-139,209-219,332-349,349-356,356-368\n101-132,132-150\n96-108,108-112,112-144,144-161\n293-312\n293-311\n-1-1,1-5,5-33,33-39,39-41,41-62,324-345,345-350,350-359\n1-36,42-51,51-69,315-333,333-344,344-361\n1-42,42-46,46-58,320-340,340-359\n-1-21,21-41,41-58,323-359\n-1-9,95-138\n92-131\n153-171,174-205,231-251,251-274\n173-191,204-223,223-232,232-235,235-240,240-249,249-273\n317-337,337-344,344-357,357-373\n317-344,344-364\n-19-19,44-136\n66-114\n-32-32,59-120\n-10-10,67-103\n71-109\n-4-4,75-105\n0-26,26-47,54-79\n-1-1,3-41,60-78\n99-122,125-180\n99-127,127-176,176-184\n-3-3,3-14,14-30,30-53,53-89,89-91\n-11-11,11-31,31-64,64-122\n47-75,75-105\n-17-17,33-57,57-79\n101-125,125-132,132-137,137-162,162-198\n-9-9\n170-190\n-10-10,27-61,170-190\n57-93,93-113,249-266,266-303\n0-15\n-13-13,168-192\n31-41,41-45,51-74\n6-23,25-50,161-179\n6-30,31-48,52-65,65-87,87-93\n0-32,32-59,59-87,87-93\n0-8,8-27,36-51,51-70,70-90,90-114\n33-46,46-50,56-90\n130-153\n75-88,88-125\n92-119\n8-17,31-54,54-73,118-136\n67-89,89-91\n-23-23,23-92,92-123,127-147\n-17-17,46-69,69-76,76-88,167-193\n111-146,146-172,172-178,178-182\n-4-4,15-26,26-31,31-35,35-57,57-73,74-94,94-110\n128-154,170-190\n-1-1,1-5,5-15,15-47,49-100,103-107,107-134,134-153,171-189\n0-18,21-41,41-63,88-119\n22-50,58-97,98-117\n11-15,63-86,86-91,91-103,124-150\n118-126,132-156,156-160,160-180\n52-74,287-318\n52-74,293-318\n49-70\n50-74\n-20-20,74-111\n-2-2,2-10,10-31,65-88,88-92\n-3-3,3-25,25-28,28-51,78-111\n50-63,64-116\n16-31,31-62\n24-45,68-112\n52-71,71-109\n-2-2,2-17,41-90\n0-12,12-23,23-45,45-50,50-56,56-127\n70-110\n34-42,62-83,83-97\n72-100\n94-131,131-156\n12-34,34-54,54-56,56-72\n-15-15,15-35,90-123\n43-74,169-191\n3-19,19-24,24-28,28-62\n6-24,49-72,289-311\n32-44,50-74,283-295,338-349\n167-193\n171-189\n-14-14,24-28,28-36,36-50,155-179,179-181\n-14-14,165-195\n-14-14\n-16-16\n60-71,179-200,279-314\n175-203,277-312\n60-82,171-201,263-271,282-298\n48-71,280-305\n39-57,60-82,260-278,284-309,309-325\n60-82,164-193,197-213\n53-93,130-142,167-190,194-221\n60-82,142-160,170-197\n58-76,141-151,151-155,160-164,166-189\n64-86,132-152,169-197\n64-88,134-153,158-198\n172-197,197-207,278-298,298-308\n45-63,282-315\n48-65,65-78,288-321\n145-176\n6-36,36-43,43-67,67-77,77-82,82-101,101-119,119-129,129-139,139-159,164-196\n-15-15,15-26,26-36,36-58,58-79,79-83,83-85,85-112\n123-143,151-180\n-1-1,1-14,14-19,19-39,43-53,64-77,77-79,79-81,81-89,89-100\n-37-37,37-64,64-77,77-103\n-29-29,43-48,48-57,57-64,66-101,101-128\n2-9,54-90\n-15-15,68-112\n-22-22,60-80,80-82,82-100\n0-23,23-27,27-32,32-37,37-52\n105-132,132-164,164-196\n107-141,141-172\n0-2,2-21,21-50,50-55,55-72,72-108\n-31-31,31-60,60-80,80-107,107-153\n38-78,78-88,88-92\n-13-13,17-52,57-65\n107-127,132-169,169-191\n-12-12,18-38,114-118,155-165\n6-24,72-101,101-107,107-122,122-133,133-136,136-157,157-180\n-12-12,22-25,25-52\n26-48\n4-31,103-155,155-161,161-180\n0-22,33-57\n-25-25,25-30,30-35,35-53\n-13-13,72-91,93-123,123-135,142-166\n17-36,36-46,46-64,85-118,118-151,151-175,175-180\n0-13,17-45\n128-161,163-197\n113-144,144-173\n-10-10,82-110\n78-106,106-126,147-165,165-168,168-192\n74-123\n114-130,135-174\n81-97,97-132\n76-90,90-94,94-97,97-110,110-126\n14-70,71-82,160-180\n-7-7,12-37,37-73,163-197\n29-46,46-50,50-76,297-323\n6-28,32-51,51-73,76-84,300-324\n52-65,65-84,140-148,154-173,173-194,237-255,281-293\n45-61,61-64,64-74,74-81,81-94,134-152,152-176,176-191,290-300\n283-301\n28-38,38-66,297-319\n16-38,41-68\n55-81,81-85,85-88,91-96,96-109,113-127,127-132,132-155\n14-30,33-48,48-59,59-72,305-333,333-341,341-352\n53-83,131-145,150-168,170-188,277-295,297-315\n52-82,140-156,156-173,295-313\n1-20,20-26,26-29,29-42,42-72,72-85,307-336\n2-18,18-49,63-90,306-339\n-19-19,31-51,65-90\n-30-30,30-38,38-52,52-62,66-84,84-93,93-95,95-114\n24-40,43-66,66-84\n-12-12,14-16,16-42\n60-87,87-90\n14-29,32-51,54-86,86-111\n67-87,87-90\n5-27,85-109,164-177\n-12-12,12-50,50-54,54-61,61-67,67-74,74-106\n0-18,89-106\n0-20,48-56,69-111\n0-32,32-50,50-130\n-34-34,52-69,69-92,92-120\n44-79,79-101\n108-127,128-147,147-160,160-168,168-179\n91-112,112-138,143-157,157-167,169-191\n93-103,117-134,134-137,137-148,148-157,157-164,164-196\n57-65,75-107,107-110,110-113,113-129\n-2-2,2-30,30-51,51-77,166-194\n78-102\n47-66,66-114\n75-105\n30-75\n88-106,120-145,148-159,165-189,189-208,278-296\n66-84,156-168,179-204,278-296\n59-77,124-133,168-193\n60-73,73-89,168-194\n63-67,72-77,86-116\n40-53,53-74,163-197\n31-48,48-59,59-76,76-78,78-95\n86-106,106-124\n-15-15,15-19,23-41,57-87,87-93\n78-111\n40-66,170-190\n141-152,171-189\n149-168,169-186,186-192,192-203,264-281,285-308\n55-77,282-309\n61-80,168-191\n56-80,168-189\n53-71,71-84,149-161,161-196\n61-88,161-169,169-187,187-189,189-204\n-5-23,211-229,236-254\n286-317\n285-312\n50-81,168-187\n58-82,84-89,167-188\n41-66,168-192\n58-79,168-187\n59-81,93-111,111-123,129-147,173-200\n64-116\n72-111\n74-106\n87-112,112-131\n100-137\n56-85,173-203,277-308\n54-79,173-205,211-229,275-304\n56-83,166-192,199-207\n58-81,166-189\n68-80,80-98,169-191\n57-69,69-86,168-196\n60-82,112-122,163-199\n53-73,73-90\n18-36,65-78,78-86,86-118\n56-124\n-13-13,38-59,59-72,75-114\n77-103\n1-26,50-78\n44-80\n22-59,59-60\n49-67,83-101,180-202,202-214,218-232,237-251,283-301\n49-71,283-292\n49-70,281-299\n46-75,91-109,279-299,307-325\n167-194\n167-194\n60-88,171-196\n170-196\n179-218,276-294\n63-90\n53-72,72-108\n-4-4,12-27,27-35,35-38,38-65,171-189\n36-63\n22-54,54-56\n21-35,35-72,158-177\n36-73\n61-77,77-90,90-106,106-119,168-197,294-312\n65-105,105-123,163-195,295-306\n171-189\n40-52,73-99,141-159,162-180\n163-197\n236-262,280-305,310-312,312-314,314-325\n237-262,281-307\n281-303\n277-301\n-8-0,45-65,290-313\n-9-9,9-21,45-65,292-312\n45-64\n-3-15,45-64\n-2-2,2-27,52-70,100-118,118-119,124-134\n31-72,73-79,155-169,169-191\n35-45,45-66,66-81,81-99\n6-24,70-96,96-111\n14-30,30-43,43-46,46-49,52-90\n0-13,13-27,27-33,33-47,65-84,84-95,95-104,104-114\n12-43,54-73,73-89,89-91\n63-117\n-10-10,67-102\n167-192\n168-193\n173-197\n173-197\n39-70\n282-300\n280-300\n238-255,281-304\n238-258,284-306\n280-302\n282-303\n33-43,44-65\n-3-3,3-20\n-24-24,125-153,153-164,170-190\n-21-21\n124-139,139-141,141-143,143-147,147-155,155-158,158-180\n-16-16\n47-82,167-202,280-309\n51-79,166-203,277-311\n59-69,278-305\n54-81,173-206,206-224,276-314\n49-70,87-105\n46-67,71-89,286-315,324-342\n51-69,289-310\n52-85,163-194\n55-84,164-186\n55-77,153-166,166-178,178-186,186-188,188-202,280-313\n50-88,151-169,169-191\n51-59,59-67,67-81,81-94,161-199\n-12-12\n-13-13\n-12-12\n-13-13\n161-199\n149-180\n161-199\n152-180\n-15-15\n-12-12\n169-191\n159-201\n-12-12\n-16-16\n160-200\n156-180\n-14-14\n168-192\n-16-16,159-201\n-18-18,165-195\n161-199\n166-194\n-36-36,66-98,106-129,129-134,134-159,159-201\n0-37,37-43,43-47,47-55,55-77,77-118,118-135,135-161\n95-124,124-152,152-170,170-180\n105-121,121-150,150-170,170-177,177-179,179-181\n0-40,54-80,80-90,90-92,92-96,96-133,133-154,154-156,156-166,166-169,169-191\n42-75,167-193\n168-192\n16-44,44-46,48-68,292-321\n18-29,45-70,293-319\n44-68,294-323\n18-36,43-71,293-313,319-332\n158-202\n36-54,57-65,287-305\n-10-10,171-189\n-18-18,23-28,28-41,48-67\n169-191\n-17-17,21-24,24-26,51-79\n53-97,97-128,139-159,159-174,282-313\n55-100,135-148,148-172,289-316\n45-64,64-79,79-88,88-92,92-107,113-134,157-181\n56-88,88-94,94-111,114-122,122-143\n53-64,64-71,71-93,93-118,132-152\n71-109,112-114,135-153\n247-265,282-316\n259-262,279-303,303-322,323-343\n49-70,80-99\n48-71,81-92\n51-71\n45-69\n167-190,267-309\n166-198,275-311\n165-197,197-199,199-201,233-260,272-305\n169-197,198-222,226-240,240-264,281-308\n170-190,250-276\n56-72,72-87,109-120,120-128,128-131,131-133,133-137,137-144,144-166,289-311\n53-91,129-137,141-165,289-310\n53-73\n53-72\n272-299\n31-44,58-62,62-64,64-74,74-87,87-96,96-100,100-114,128-150,299-317\n41-58,60-97,114-134\n142-160,178-195,195-198,198-200,200-202,212-230,250-277,277-279,279-296,307-317\n182-205,207-217,240-256,256-264,264-298\n-24-24,151-209\n-11-11,12-34,162-198\n-36-36,46-70,70-106,106-130,130-139,139-149,149-211\n-1-1,1-10,10-14,14-16,16-39,39-48,48-52,52-64,68-90,96-104,133-153\n0-29,29-49,49-65,67-100,100-109,109-118,118-128,128-148,158-179,179-181\n-12-12\n-15-13\n-11-11\n-11-11\n344-381\n-13-13\n37-55,302-319\n62-77,81-91,91-101,114-134,140-151,214-229,233-248,248-267,267-285\n-4-4,4-12,12-16,16-22,22-45,45-65,295-315,315-338,338-344,344-348,348-356\n69-87,87-106,254-273,273-291\n62-73,73-86,86-110\n25-37,37-64,64-90,90-107\n24-52,52-77,77-99,134-137\n-12-11,166-187\n-11-11\n-14-16,16-33,161-174,174-192,318-340\n-9-9\n162-195\n37-52,52-55,55-78,163-188,291-318\n170-190\n126-141,141-147,147-176,176-180,180-211,211-235\n-15-15\n-13-13\n-13-13,13-26\n-39-39,56-72,76-109,114-124,133-143,143-153,153-156,156-158,158-165,165-170,170-180\n-1-1,1-29,35-53,156-172,172-188\n79-106,106-125,125-137\n172-196,342-370\n4-24,24-45,45-60,295-310,310-313,313-315,317-341,341-364\n3-8,8-12,12-24,343-363\n160-179,179-181\n0-22,23-38,148-158,171-189\n-13-13\n-21-21,169-191\n-16-16,24-29,29-49\n-10-10,165-195\n-15-15,162-198\n169-191\n0-20,168-192\n-4-4,169-191\n-14-14,168-192\n0-14,14-36,63-80,80-82,82-94,94-100,100-102,102-120,120-147\n-8-4,123-134,134-163,324-336,336-339,343-352\n-2-15,99-121,123-136,136-156,256-274,344-358\n-23-23,23-45,45-66,66-90\n-35-35,35-54,54-65,65-96,96-140\n60-120\n-3-3,3-24,24-61,63-81\n99-125,125-155,155-180\n15-35,76-111,111-134,134-137,137-161\n-20-20,91-143\n0-7,7-20,20-27,27-39,90-111,111-114,114-136,136-150\n-2-2,2-24,24-43\n117-138,138-167\n100-114,114-151,167-193\n110-126,126-146,146-156,159-169\n57-75,79-101,112-116,116-122,122-126,126-135,135-140\n-19-19,28-46,69-87,87-110\n80-98,108-123,123-126,126-128\n69-107,114-133,133-145\n101-115,115-135,142-168\n42-73,166-194\n39-51,51-59,59-62,62-76,164-196\n24-43,43-47,47-69,160-173,173-180\n167-193\n150-173\n42-69,163-197\n50-89,155-187,279-301,301-304,304-321\n45-85,158-187,282-305,305-322\n53-71,173-200,319-342\n42-68,291-323,326-341\n39-69,291-320\n45-68,297-315,315-317\n46-66,284-295,295-320\n165-194,290-309\n161-182,182-211,266-279,279-306\n28-45,45-65,65-80,160-178,293-302\n45-79,165-187,287-310\n41-69,298-317\n47-68,291-315\n-13-13,156-180\n-11-11,90-114\n-24-24,24-47,47-68,161-199\n-4-4,4-10,10-24\n167-193\n157-203\n168-192\n150-180\n-13-13,29-54\n-23-23,160-179,179-181\n170-190\n166-194\n-38-38,58-87,87-89,89-99,99-101,101-111,111-119,119-125,125-128,128-157\n0-6,6-35,39-46,46-48,48-59,59-109,111-124\n-1-1,1-45,45-49,49-55,55-58,58-82,88-109\n112-142,142-174,174-186\n112-133,133-168,174-186\n107-169,169-180\n92-99,110-157,157-164,164-177,177-180\n-18-18,18-20,20-37,50-54,54-58,83-120,120-139,139-147,147-150,150-164\n-28-28,46-58,85-122\n-24-24,65-95,95-102,104-118\n96-118,135-167\n134-164\n0-33,104-116\n-13-13\n-13-13\n-13-13,104-128\n170-190\n168-192\n170-190\n153-207\n-12-12,170-190\n-13-13,163-180\n191-231,231-256,256-261,261-273\n183-196,196-222,222-243,243-268\n-10-27,106-129,129-146,181-207,207-261\n-13-20,92-112,119-145,154-174,184-204,204-206,209-257\n-1-24,192-213,213-236,236-238,238-252,344-359\n-14-11,202-212,212-219,219-222,222-232,233-251,333-346\n22-39,42-65,71-89\n20-44,47-67\n23-42,46-65\n80-97,97-111,111-113,113-117,117-153,170-178,178-181,181-191\n62-76,76-82,91-120,120-127,127-129,129-161,169-189\n90-126,126-157\n97-125,131-145,145-148,148-163\n65-82,82-114,114-154,154-187\n78-103,103-112,112-117,117-167\n84-107,107-113,113-127,127-157\n75-98,98-122,122-124,124-158,160-178\n39-81,168-218,277-314\n40-81,164-209,213-233,278-314\n33-41,43-52,52-63,63-85,167-174,174-187,187-195,195-212,212-215,215-227,227-230,230-250,272-299,299-318\n34-54,54-61,61-68,68-81,169-188,188-194,194-211,267-285,285-297,297-318\n32-52,52-57,57-71,171-194,194-215,247-261,261-273,273-311\n29-51,188-198,198-208,218-236,238-271,277-315\n216-238,265-276,276-284,284-295\n7-27,27-32,41-70,81-102\n11-22,22-30,44-71\n48-73\n48-76,80-98\n40-72\n49-73\n41-64,293-316\n40-63,293-315\n289-317\n-11-7,7-23,25-43,51-69,294-317,325-339\n38-60,270-289,295-322\n266-278,296-324,324-339\n53-88,117-146,146-151,162-189\n55-88,165-188\n61-96,113-129,139-189,199-216\n58-88,115-126,126-138,138-156,163-189\n55-79,103-138,162-193\n34-48,52-81,96-116,166-194\n85-96,101-123\n65-84,89-100,108-131,133-153,153-155,155-170,170-179,179-192\n31-49,60-85,151-166,170-216\n52-78,78-91,169-203,281-311\n46-78,178-200,281-309,328-352\n39-58\n38-57\n42-61,297-322\n43-63,296-323\n40-49,63-86,86-90,90-104,139-154,156-182,183-208\n63-90,90-108,119-148,155-168,168-182,182-203\n28-48,61-92,160-168\n49-76,168-200,263-274,283-316\n51-70,167-194,282-310\n291-319\n36-68,287-319\n293-329\n41-59,293-324,341-364\n54-72,72-88,154-200\n38-56,60-83,159-193,193-211\n66-96,141-149,161-183\n54-72,171-189,274-287,287-314\n-1-1,1-27,29-47,47-92,92-112,125-143,170-190\n14-32,45-63,63-83,91-111,163-197\n32-57\n149-179,179-181\n148-171,179-181\n143-179,179-181\n142-177\n53-65,65-83,167-193\n34-48,48-57,57-70,70-88,96-114,156-204\n44-69,69-84,84-89,89-101,101-125,143-168,168-172,172-176,176-184\n150-177,177-180\n146-171\n-16-16\n-18-18\n58-122\n-16-16,16-21,21-23,23-49,69-111\n-5-5,5-9,9-12,12-29,29-31,31-48,48-58,58-71,71-78,78-98\n69-111\n-14-14,14-41\n-1-1,1-47\n153-207\n102-125,143-180\n-24-24,24-35,35-52,52-79,79-86,86-94\n-57-57,57-135\n47-133\n-17-17,17-53\n103-127,130-154,157-203\n-14-14,89-135\n-12-12\n-24-24,30-42,42-51,71-149,149-211\n165-195\n-3-3,3-6,6-26,26-38,38-52,52-81,85-105,112-131,141-158,158-172\n-12-12\n-14-14\n0-30\n-23-23\n0-11,11-33\n0-32\n-1-1,1-27\n149-172,172-176,176-184\n126-145,145-168,168-180\n98-116,124-161,169-191\n-19-19,36-52,52-67,85-124\n12-18,18-32,66-102,102-114,114-135,135-137,137-151,151-155,155-164,164-180\n-20-20\n-12-12,12-42,55-66\n-24-24\n0-32,66-90\n145-168,168-179,179-181\n0-3,3-19,83-101,106-124,124-136,162-179\n-16-16,18-47,95-125,125-133,133-145\n-10-10\n-15-15\n-13-13,13-29\n152-208\n159-201\n85-109,109-129,129-144\n-10-10\n-11-11\n-21-21\n133-147,161-180\n5-14,66-84,84-98,98-123,123-143,143-153,153-177,177-183\n-11-11,11-15,15-40\n110-134,151-180\n153-180\n-13-13\n167-193\n-3-3,3-59\n2-23,23-29,29-62\n0-11,11-38\n0-7,7-16,16-42,42-44,44-50,50-65\n170-190\n170-190\n7-61\n0-15,21-67\n-4-4,4-12,12-23,23-47,47-66\n63-118,118-164,171-187\n64-99,99-110,110-113,113-145,145-179\n69-87,102-120,136-165,165-184\n86-104,128-160,162-190\n86-118,126-144\n256-268,268-271,275-280,283-318,318-321,321-336\n290-324\n43-75,290-318\n38-76,291-317,317-345\n3-22,22-24,24-37,37-73,297-320\n7-26,26-28,28-49,49-76,81-102,302-320,320-339,339-355\n48-70\n22-37,37-40,46-70,335-351,351-376\n123-141,151-175,175-177,177-201,209-219,219-243,273-304\n135-152,152-154,156-173,173-212,229-239,261-279,279-283,283-286,286-302\n127-149,153-194,250-270\n121-144,147-158,159-182,182-191,191-206,267-285\n60-107,107-109,109-125,125-183,280-309\n58-78,78-86,86-89,89-105,105-129,131-185,279-313\n5-36,36-76,94-116,290-322,322-341,341-360\n4-34,34-78,288-328,330-358\n31-72\n39-74,101-109\n149-169,169-192,192-210,216-226,246-265,265-269,269-292\n140-169,172-191,191-208,245-260,260-290\n60-88,88-124,124-127,127-137,137-143,143-169\n58-92,92-94,94-120,126-149,149-153,153-168\n140-153,153-173,173-209,250-277,279-288\n161-207,261-281\n34-62,290-322,322-325,325-326\n39-63,82-101,312-322\n33-63,71-80,301-316,316-338\n30-62,66-83,83-85,85-97,300-345\n32-61,309-330\n166-207,238-256,273-291,291-292\n166-189,189-192,197-207,243-260,262-273,273-302\n59-77,77-86,86-96,146-171\n60-77,77-89,126-143,143-177\n33-65,300-334\n3-20,20-25,34-64,303-324,324-342\n160-197,266-280,280-283,283-285,285-289,289-303\n160-191,191-204,270-279\n171-189\n-10-10,145-163\n343-374\n-4-4,7-11,11-14,14-16,16-31,31-33,33-51,51-92,106-124,124-131,131-132,144-162\n39-57,301-320\n-13-13,160-200\n-12-12\n2-19,19-24,24-35,35-39,39-43,44-55,55-65,65-83,88-104,104-114,114-116,116-142\n10-26,26-59,61-72,72-81,81-89,89-91\n-1-1,1-19,19-41,52-72,72-108\n120-145,145-165\n33-48,48-67,76-104\n0-4,4-6,6-37\n168-192\n99-132,140-165,165-172,172-177,177-183\n-11-11,16-33\n-17-17,17-33\n-34-34\n-4-4,4-18,18-35\n11-31,31-34,34-48,326-344\n65-76,81-101,104-120\n-10-10\n38-75,75-92,137-148,169-191\n80-109,123-147\n177-209,285-310\n61-80,165-193,285-303\n58-76,160-175,178-186,286-308\n277-290,290-307\n44-62,169-204,204-212,212-214,293-311\n170-190\n151-176,176-184\n0-12,12-25,162-198\n57-83,173-197\n54-80,143-162,170-197\n54-62,64-89,89-104,104-125,162-180\n53-79,79-81,81-90\n24-38,47-109\n60-90\n132-169\n52-79,79-82,82-84,84-90,91-102,102-127\n59-77,77-102,102-105,105-122,125-140,148-166\n14-37\n61-79,79-87,92-117\n-1-1,1-4,4-10,10-14,14-20,20-46\n86-98,98-103,103-128,128-139,141-159\n282-312\n278-306\n39-60,158-182\n40-61,163-182\n36-58,181-190,274-304\n40-48,175-201,271-290,290-307\n30-59,174-196,271-309\n32-52,146-169,171-195,277-304\n31-49,279-301,307-318\n22-46\n-17-17,17-30,30-40,40-60,60-62,62-67,67-76,76-104\n0-13,13-30,30-32,32-35,35-70,70-97,152-175,175-179,179-181\n62-90\n-7-7,7-13,13-20,20-24,24-40\n129-160,166-172,174-179,179-181\n7-34,34-37,37-60,60-71,71-77,77-79,79-92,92-95,160-178\n56-59,75-108,108-117,117-137,137-145,145-161,164-180\n-55-55\n39-60,60-62,62-69,69-103,103-135\n36-64,71-125,125-131,131-134,134-137,137-147,147-150,150-155,155-165\n34-58,76-94,344-368\n77-81,84-121,121-129,134-159,159-176\n85-89,92-117,117-148,148-166\n7-25,25-37,37-44,44-73,73-87,87-93\n-7-7,7-10,10-14,14-27,27-46,46-67,67-70,70-74,74-85,85-94,94-105,121-141,141-154\n43-63,63-74,74-90\n0-18,18-21,21-47,47-49,49-131\n-1-1,1-6,6-10,10-15,15-23,23-51,51-61,61-69,69-81,81-111\n36-60,67-113\n47-87\n3-12,20-53,57-84\n92-127,148-168,168-192\n97-124,125-169,169-171,171-189\n42-58,58-61,61-79,83-105,110-128\n-3-3,3-26,26-62\n-29-29,29-55\n26-41,41-73,298-324\n34-44,46-74,302-320\n9-20,27-29,31-46,46-65,78-105,316-334,335-348,354-367\n164-187\n-1-1,1-4,4-8,8-29,29-40,40-53\n-18-18,67-105\n-22-22,26-47,86-95\n36-48,48-71,277-314\n50-76,166-200,267-283,283-316\n46-69,69-84,216-225\n49-73,158-185,185-199\n-13-13\n-18-18\n0-14\n-15-15\n-12-12,169-191\n-14-14\n0-14\n39-56,56-78,288-301,307-320\n51-96,96-116,116-133\n48-66,66-95,278-304\n63-97,97-101,101-114,285-307\n-17-17\n-15-15\n54-73,173-203,282-305\n52-75,175-195,281-310\n176-196,283-309\n-17-17\n335-383\n0-18,18-39,44-80\n104-128,143-180\n0-27\n-11-11,11-33\n53-74,74-106\n-25-25,146-214\n-14-14\n-14-14\n159-201\n132-141,159-179,179-181\n-15-15\n171-189\n-29-29,114-132,155-180\n345-373\n345-381\n68-102\n55-68,68-73,73-108\n-11-12\n43-73,152-178\n41-65,65-79,154-177\n19-38,38-58,130-148,155-163,165-173,173-187\n170-190\n-1-1,1-6,6-10,10-51,55-63,63-71,71-81,114-140,140-148,148-156,156-160,160-174,174-179,179-181\n33-48,48-51,51-59,59-77,315-341\n48-71,305-322,322-329,329-348\n-18-18,164-196\n-29-29,50-59\n-11-11,165-195\n-17-17\n-11-11,170-190\n-11-11\n-14-14,31-55,142-146,155-205\n-14-14,168-192\n-14-14\n-15-15,167-193\n0-15,167-193\n-17-17\n-12-12,168-192\n2-18,18-24,24-32,32-37,37-44,57-69,71-88,100-118,120-138,145-159,159-162,162-169,169-179,179-181\n-10-10,10-26,162-198\n-13-13,13-30,93-101,112-126,126-145\n137-159,159-161,161-179,179-181\n54-78,177-204,279-303,303-318\n50-80,174-198,287-317\n43-64,294-317\n42-66,284-322,324-336\n35-43,50-69,69-89,149-168,168-188\n52-66,66-73,73-89,153-173,177-194\n42-60,294-318\n38-46,48-57,295-321\n-1-1,1-6,6-15,15-34,34-58,58-82,82-84,84-103,103-142,142-162,162-166,166-169,169-173,173-178,178-182\n-15-15,22-45,45-65,75-93,93-133\n20-51,51-55,55-61,61-64,64-90,90-94,94-117,117-122,124-154,154-161,161-180\n56-84,98-108,121-128,165-176,176-184\n51-77,88-92,94-112,124-141,146-156,156-164,164-196\n48-75,77-96,96-105,105-115,115-125\n1-14,19-33,51-75\n109-127,151-168,168-178,178-182\n27-50,50-65,163-197\n52-128\n87-123,129-149,158-176,176-179,179-181\n171-189\n171-189\n77-104\n14-36,36-39,39-67\n65-73,84-101,101-132\n14-35,35-38,38-42,47-69\n32-41,43-55,55-63,66-83,83-85,85-95\n-10-10,10-29,44-54,64-80,80-85,85-106,106-123\n93-119,132-158,158-177\n51-71,272-291,295-316\n50-71,273-291,294-315\n53-71,294-318\n53-61,293-317\n281-299,302-321\n281-300,303-320\n50-68,295-317,324-342\n-12-12\n-10-10\n-15-15\n-17-17,155-205\n-16-16\n152-159,159-179,179-181\n167-193\n-21-21,45-57,57-72,149-211\n-15-15\n115-138,168-192\n-15-15,152-208\n-10-10\n-13-13\n164-180\n-1-1,1-18,158-178,178-180\n-14-14\n149-170,170-176,176-179,179-181\n-17-17,32-57\n-15-15,48-65,65-83,165-195\n-17-17\n-14-14,14-38\n-18-18\n-8-8,8-13,13-17,22-41,58-66,142-164,164-179,179-181\n0-14,14-38\n-12-12,43-69,138-157,157-180\n-17-17,18-23,23-24,110-127,127-147,171-189\n143-153,153-161,165-195\n-17-17,17-35,127-145\n-5-5,5-31,43-64,64-68,68-71,71-73,73-84,84-96\n-11-11\n170-190\n-19-19,161-169\n-17-17,42-53,79-88,88-127\n107-132,136-160,160-165,165-177\n83-103,103-123\n-1-1,1-38,83-114,114-128\n0-25,25-31,31-56,56-85,85-123,123-131,131-145,145-151,151-166,169-191\n-22-22,33-42,42-54,64-81,81-97,97-108,108-123\n-11-11,18-34,34-36,36-42,42-66,69-82,82-89,89-112,118-156,171-189\n2-10,49-59,67-68,72-93,93-99,99-102,102-109,109-123\n4-22,44-70\n169-191\n40-73,294-315\n48-67,293-314\n-35-35,40-74\n0-17,17-20,20-42,165-195\n-3-3,3-16,16-39,39-53,53-62,62-90\n-12-12,30-47,47-66\n-14-14,14-59,67-89\n-12-12,163-197\n-18-18,18-24,24-29,29-49\n-14-14\n-24-24,32-34,34-36,36-49\n-2-2,2-7,7-18,18-37,37-57,57-64,64-79,86-94\n-12-12,14-39,39-55\n141-161,171-189\n57-123\n59-89,89-91\n-22-22,146-155,169-191\n55-86,86-107\n6-42,44-74\n59-62,70-90\n60-90,90-91,96-106,108-126\n59-76,76-78,78-91,91-110\n59-90\n53-90,90-125\n-9-9,28-66,70-78,78-97\n63-91,91-95,97-107,110-137,137-151,159-201\n36-42,42-54,56-82,82-100,100-115,115-137\n59-71,72-93,97-110,116-129,146-164\n47-81,81-84,84-117,117-120,120-136,136-156,158-179,179-181\n59-94,94-112,112-114,114-131\n1-4,4-8,8-17,17-21,21-35,48-93,93-119\n100-112,112-137,137-158,158-160,160-163,163-166,166-180\n32-45,49-110,110-116,116-141,141-143,143-148,148-178,178-182\n25-40,40-55,62-119,127-140\n181-193,198-217,253-265,265-271,271-295,295-313\n181-202,272-290,290-313\n57-82,170-194,194-213\n52-74,139-164,170-201\n173-183,183-204,290-314\n174-186,186-192,192-205,283-309\n-21-21\n-32-32,46-64,102-130,169-191\n-20-20,20-53,53-74,74-87,87-93\n-2-2,2-28,34-37,37-54,54-67\n5-28,31-46,46-65,119-138\n35-54,54-71\n-12-12,168-192\n168-192\n0-18,168-192\n-20-20\n-13-13\n-13-13,15-42,42-62,79-101\n156-204\n-13-13\n-12-12,169-191\n-12-12\n-10-10\n-17-17,19-33,136-155,155-165,165-173,173-187\n-19-19,22-28,28-49,58-81,107-132,132-150\n-14-14\n170-190\n0-23\n0-19\n119-128,131-140,165-195\n169-191\n170-190\n141-170,170-180\n124-150,150-169,169-180\n0-18\n171-189\n171-189\n171-189\n170-190\n-16-16,16-19,19-41,42-52,54-63,63-74,144-154\n-24-24\n168-192\n170-190\n58-76,81-92,92-101,126-145,151-179,179-181\n-10-10,39-58,118-141,145-156,161-179,179-181\n80-108,168-192\n-9-9,9-41\n154-164,164-166,168-192\n110-128,153-177\n67-79,94-104,106-109,109-112,112-126,126-133,133-150,283-301\n55-73,83-97,104-147,147-159\n281-312\n31-42,43-71,75-84\n27-58,303-321,321-341\n20-33,37-61,307-334,334-337,337-348\n48-74,112-139,142-170,170-185,202-220\n44-65,302-331,335-362\n38-63,299-334\n44-62,293-314,331-349\n59-81,81-103,103-120,133-141,141-165\n-9-9\n170-190\n0-17\n-14-14\n0-18,21-44,47-56,56-65,65-76\n7-66,66-68,68-85,152-208\n-11-11,169-191\n67-85,182-206,274-285,285-310\n176-205,281-311\n2-24,24-53,53-60,60-75,115-130,130-153,153-161,161-172\n171-189\n0-26,26-38,38-58,58-79,79-108,117-128,146-161,164-179\n171-189\n152-164,167-193\n-18-18\n-14-14,14-34\n-17-17,167-193\n133-163,169-191\n-13-13,167-193\n170-190\n170-190\n-18-18,33-51,53-82,82-91,91-94,94-123,126-139,139-150,150-159,159-201\n35-54,54-74,115-129,129-133,133-148\n-3-3,3-16,45-63,63-64,73-95,95-103,109-116,137-152,156-168,168-192\n56-84,84-102,110-125\n59-77,286-317\n170-190\n171-189\n-10-10\n-17-17,150-169,169-191\n160-177,177-185,185-201\n-11-11,169-191\n-1-1,1-25\n9-27,77-96,96-104,104-115,133-151\n-1-1,1-5,5-8,8-11,11-15,15-19,59-76,76-80,80-83,83-89,89-92,92-100,100-113,113-127,127-141\n95-116,154-176,189-214\n91-109,150-181,192-210\n6-26\n-2-2,2-18,157-177,177-183\n-1-1,1-6,6-10,10-34,150-167,167-169,169-175,175-177,177-180\n160-200\n-11-10\n8-26,26-29,29-38,38-64,64-75\n0-16,48-78\n170-190\n-15-15,93-138,165-195\n-15-15,158-202\n169-191\n-15-15,162-198\n128-164,168-192\n0-30,142-156,163-197\n-9-9,153-163,165-195\n168-192\n0-28,159-201\n153-166,166-194\n-16-16,158-176,176-184\n-14-14,158-202\n-19-19,162-180\n170-190\n59-69,78-102,109-131,151-176\n-1-1,1-3,3-14,14-24\n154-180\n-10-10,130-171,171-189\n14-33,136-170,174-186\n71-90,90-113\n-9-9,9-30,134-156,161-180\n-14-14\n-20-20,79-101\n-13-13\n-15-15,15-37\n126-145,150-165,165-175,175-180\n-19-19,31-49,80-89,89-99,137-157,170-190\n-27-27,33-53,53-66,66-83,83-90,90-99\n114-126,126-140,145-168,168-192\n53-88,88-94,102-108,108-110,110-128\n158-180\n166-194\n-11-11,82-98,104-131\n160-200\n27-46,46-52,52-54,54-71,117-138,138-157\n-14-14,170-190\n0-19,19-28,28-54,148-174\n0-25,25-29,29-35,35-52,62-79,79-101\n-22-22,45-66\n4-26,26-34,36-45,45-55,60-68,75-105\n-1-1,1-20,45-64,64-67,67-86\n-8-8,8-13,13-33,154-175,176-184\n0-18,169-191\n-23-23,158-202\n-14-14,87-105,168-192\n-12-12,12-29,159-179,179-181\n-3-3,3-18,159-177,177-180\n-14-14,166-194\n-11-11,170-190\n-13-13,169-191\n-12-12\n168-192\n-12-12,166-194\n169-191\n170-190\n-34-34,40-59,96-113,113-132,135-156,156-180\n98-130,130-145,145-163,163-165,165-195\n0-19,44-60,60-65,65-82,88-107\n170-190\n-17-17,168-192\n-23-23\n169-191\n137-146,146-157,157-167,167-180\n-17-17,166-194\n122-156,166-194\n-16-16,16-30,169-191\n-15-15\n-11-11,160-178,178-182\n46-64,68-113\n53-56,85-101,101-114,139-161,167-193\n-9-9,80-122,122-147\n101-113,113-116,120-132,139-160,160-168,168-172,172-180\n-13-13\n-21-21\n-12-12\n-23-23\n-6-6,6-14,14-26,28-51,168-192\n161-199\n-15-15\n-6-6,6-37,44-63\n170-190\n168-192\n-11-11\n170-190\n-11-11,22-40\n-4-4,4-16,16-39,39-45,119-142,151-162,162-166,166-169,169-191\n-24-24,168-192\n-11-11,11-34,34-44,55-78,83-97,101-118\n-1-1,1-21,23-33\n-19-19\n-29-29,169-191\n-17-17,24-30,30-62\n-21-21\n0-3,3-24,24-35,133-155\n-19-19\n151-167,167-193\n166-194\n-11-11,22-40,163-197\n-22-22,169-191\n-12-12,169-191\n-9-9,162-198\n-13-13,155-205\n0-29,71-92,92-109,109-112,112-116,116-123,123-136,136-143,143-154\n0-80,80-100\n0-43,43-63,63-74,74-127,127-156\n13-45,54-90\n0-37,48-71\n102-137,137-180\n121-149,149-157,157-173\n-5-5,5-15,48-57,84-103,103-108,108-111,111-126,126-133,133-136,136-147,147-152,152-165\n-22-22,81-99,99-127,127-129,129-134,134-157\n0-33\n-1-1,2-30,30-46,56-66\n113-132,132-169\n115-155,158-179\n-21-21,101-120,120-132\n115-128,133-153,153-179,179-181\n0-6,6-28\n0-2,2-23,41-59\n40-75,159-201\n162-198\n41-69\n43-80,160-179\n3-27,39-67,289-315,315-331,343-363\n-9-12,12-32,36-68,293-321\n47-65,289-314\n27-46,47-57,291-311\n163-179,179-187,187-193,193-206,256-270,270-277,277-280,280-305,313-333\n170-181,181-201,277-304\n49-83,162-190,280-300,300-314\n47-84,158-190,282-317\n294-317\n-6-5,5-13,13-22,25-35,37-40,40-70,75-85,298-316,327-345\n45-63,68-86,300-311,311-331\n167-185,190-200,251-267,274-299,303-319\n47-80,159-177,279-287\n48-76,156-176\n-17-17,160-200\n-23-23\n-17-17,134-165,165-169,169-180\n-18-18\n-12-12,170-190\n-13-13,20-39,54-62\n-12-12,17-25,25-46,139-162,168-192\n0-20,50-68,170-190\n-10-10\n0-22\n169-191\n170-190\n169-191\n170-190\n45-56,56-64,64-75,124-141,148-179,179-181\n-12-12,12-30,30-35,35-39,39-54\n169-191\n-13-13,70-104,104-143\n-9-9,13-34,34-54,81-99,108-126\n60-101,101-126,139-164\n68-97,97-113,115-139\n3-20,20-42,61-83\n113-145,166-179,179-181\n96-111,111-116,116-138,141-159\n76-101,109-148,148-166,166-180\n104-133,133-139,139-153,164-180\n2-17,30-48,54-72,76-94,101-132\n-1-1,1-8,8-33,58-76,78-99,99-108\n46-65,71-120\n-3-3,3-31,31-51,60-85\n9-27,38-60,60-84\n145-180\n-9-9,22-25,35-38,57-82,87-117,117-121,121-134,134-147,147-150,150-156,156-160,160-161\n-18-18,18-37,61-76,76-79,79-91,91-96,96-124\n149-178,178-182\n-2-2,2-7,7-12,12-24,128-138,138-161\n0-10,10-26\n-13-13,16-35\n170-190\n161-199\n168-192\n-20-20,142-153,153-161,161-168,168-192\n-18-18\n159-201\n10-29,29-36,36-44,44-48,110-126,126-129,129-145,145-151,151-153,153-166,166-170,170-190\n-13-13,159-201\n-16-16\n120-131,148-167,167-193\n170-190\n195-213,213-223,223-240,240-254,254-270\n115-126,126-135,196-209,209-256,344-388\n-22-25,117-129,129-152,195-211,214-263\n23-37,44-64\n21-39,46-65,68-87\n47-66\n47-66\n-4-44,335-345,348-353\n1-46,338-361\n93-113,113-132,132-134,134-149,149-161,161-169,169-180\n101-132,132-139,139-157,159-170,174-176,176-210\n97-118,118-152,152-174,174-179\n66-79,79-94,94-126,126-136,138-150,156-169\n-8-2,2-22,92-103,103-123,224-239,239-244,244-258\n36-81,169-212,278-316\n42-81,169-214,281-319\n177-193,193-197,197-213,213-232,285-307\n44-54,60-79,179-196,196-204,204-214,214-228,234-252,286-312\n173-189,189-204,208-217,217-227,227-240,240-257,272-289,289-313\n169-189,189-193,193-207,276-291,291-311\n47-70,73-92\n44-80\n30-38,48-70\n32-52,52-58,58-75\n-4-15,39-66,293-319,334-356\n-6-16,37-67,292-323,329-352\n45-65,290-319,319-321,321-335\n39-62,290-323,323-339\n34-54,289-319\n37-45,48-56,56-67,288-321\n56-87,168-192\n56-87,167-191\n55-86,94-104,166-193\n90-114,164-196\n54-89,103-122,122-126,126-130,156-193\n55-78,78-80,80-93,155-172,172-174,174-196\n44-77,165-211,279-315\n40-77,82-93,164-208,281-313\n128-146,154-164,164-173,189-209,271-309\n193-211,212-230,283-300,300-320\n8-17,30-60,297-324\n37-65,296-324\n68-96,158-187\n70-101,162-184\n76-105,153-157,168-188\n39-55,55-71,173-207,283-313\n45-70,174-192,192-208,258-273,278-314\n51-74\n3-24,39-65,269-287,291-325\n36-66,266-285,292-325\n40-62,289-322\n31-49,251-269,295-326,326-327\n62-94,156-190\n63-94,160-189\n43-53,55-80,174-199,278-309\n59-77,168-186,190-205,281-312\n40-58,299-324\n42-60,296-325\n-15-15,15-17,17-20,20-29,29-36,36-40,40-52,52-102,103-130,165-195\n5-17,17-32,32-44,44-52,52-55,55-67,81-85,85-111\n-22-22,43-55,55-61,65-108\n60-91,164-196\n104-125,131-180\n144-166\n3-40,41-61,61-73,73-91,129-152,165-195\n-18-18,56-73,73-77,77-84,84-112\n-9-9,39-53,53-57,57-72,72-78,78-91,91-109\n47-65,65-74,74-96,134-153,153-159,166-194\n-6-6,6-18,18-28,28-29,31-47,52-80\n7-22,22-25,25-27,33-47,52-84\n108-141,147-180\n144-174\n146-179,179-181\n144-169\n14-41,49-91,91-103\n42-105,105-113,113-126,126-133,133-146,146-168,168-192\n-19-19,39-58,58-65,65-68,68-116\n40-50,59-88,88-95,95-119,142-152,152-161,161-199\n58-88,88-100,100-117,160-179,179-181\n10-32,32-40,40-50,55-73\n4-21,21-43,43-61,61-72\n115-131,131-134,134-138,138-140,140-145,145-180\n127-135,146-180\n147-169\n39-55,55-58,58-74,74-82,82-85,85-88,88-92,92-94,94-105,105-108,108-117,117-125,125-128,128-130,166-169,169-171,171-174,174-180\n-1-1,1-3,3-6,6-13,13-46,46-74,74-87,87-106\n60-83,83-90,90-101,166-194\n63-100,100-111\n-17-17,17-54\n-16-16,16-59\n0-14,14-18,18-49,49-76,76-104\n6-14,29-82,82-98\n0-16,38-109,109-134\n59-121\n0-22\n-23-23,31-50\n168-192\n130-157,166-194\n167-193\n100-120,123-150,150-161,169-191\n-10-10\n-17-17,29-53\n-10-10\n-55-55\n-30-30,30-32,32-82,82-93,93-148\n-1-1,1-11,11-32,32-34,34-50,53-90\n-11-11,44-90\n-34-34,35-58,78-102\n0-11,11-28,28-41\n-2-2,2-36,41-45,45-51,51-55,55-57,57-78\n-13-13,16-35,35-60\n-9-9,9-42\n117-166,166-194\n105-135,142-176,176-180\n-16-16,16-32,32-69\n-43-43,80-125,129-160\n22-61\n-15-15,15-39,48-132\n0-16,19-38\n-15-15,15-43\n112-136,136-167,167-193\n-16-16\n-18-18,163-197\n-26-26,43-58,58-60,60-62,62-68,68-92,92-149,162-198\n-9-9\n0-25\n0-10,10-14,14-18,18-20,20-33,45-63\n152-208\n-16-16,40-68,68-88,108-135,160-200\n-17-17\n-21-21,28-48\n-21-21,159-178,178-182\n160-200\n3-23,23-28,28-45,161-199\n-11-11\n0-18\n162-198\n109-140,140-148,159-201\n-15-15,17-33\n129-148,152-178,178-182\n12-30,38-60,66-84,84-106,106-125,130-149,149-167,167-193\n-10-10,10-30\n23-41,41-43,43-47,47-82,99-123,134-151,151-176\n7-24,28-67,163-197\n-1-1,1-5,5-23,23-44,44-48,48-69\n0-23,23-25,25-68,160-200\n3-41\n28-61,61-77\n-3-3,3-22,22-25,25-31,31-37,37-41,41-59,165-180\n-1-1,1-16,16-36,36-41,41-44,44-67,67-85\n12-59\n4-22,22-56\n77-97,97-150\n57-88,88-95,95-108,108-121,121-148,148-164\n-9-2,49-77,284-306\n19-37,47-73,82-105,284-293\n-3-10,10-27,27-30,30-55,55-67,67-84,311-342,342-348,348-353,353-357\n3-24,24-34,34-55,55-81,310-328,328-339,339-353,353-363\n27-39,39-68\n43-60,60-62,62-66,66-69,69-85,85-112,112-128,150-186\n45-93,153-188\n64-99,99-171\n68-87,87-93,93-105,105-115,115-133,133-175\n49-75,292-311\n49-75\n11-37,37-59,310-349,349-352,352-371\n16-37,37-63,311-331,331-333,333-351\n71-101,101-115,115-145\n60-72,72-84,84-89,89-92,92-105,105-114,114-125,125-145\n155-184,280-298\n161-186,187-191,191-202\n23-40,40-42,42-60,301-331\n58-76,76-79,79-97,130-153,153-169\n35-62,292-313\n15-30,30-33,33-39,39-64,324-350\n30-58,73-96,303-316,316-335\n4-22,31-69,69-96,317-335\n60-91,142-186\n52-97,99-117,142-188\n24-65,301-326,326-348\n-5-15,31-64,71-76,86-96,301-314,314-327,327-342\n61-86,86-87,91-103,110-128,134-154\n48-91,110-127,127-138,148-166\n-14-14,25-36,36-46,46-70\n-28-28,39-79\n122-146,146-179,179-181\n166-194\n-11-11\n-11-11\n-13-13,152-160,167-193\n-4-4,4-10,16-29,59-85,88-106,109-135,139-150,150-155,155-162\n167-193\n-10-10\n-15-15\n0-10,10-14,14-31,161-179\n0-9,9-12,12-14,14-25,25-46\n18-64,163-197\n18-29,32-36,36-37,40-57,57-80,80-100\n62-118\n0-12,12-50,51-65,169-191\n51-66,71-109\n61-103,103-129,133-157,157-166\n168-192\n47-69\n152-169,171-189\n66-84,84-112,112-114,114-136,136-171\n-1-1,1-31,42-69\n-9-9,12-39,39-69,73-92\n-4-4,4-13,17-31,31-36,36-56,56-69,73-91\n31-64,162-198\n41-64,64-87,87-93\n51-88,88-90\n-11-11,65-118,148-169\n61-113,134-158,158-180\n-8-8,8-62,62-88\n71-115\n76-95,95-119,119-126,126-145,145-180\n8-29,40-68\n19-44,44-78\n69-133\n88-101,101-103,103-130,167-193\n-2-2,2-25,28-61,68-93\n-15-15,19-56,138-161,170-190\n42-57,57-80,80-84,84-96\n59-88,88-92\n-17-17,17-28,43-90\n7-25,41-55,55-58,58-63,63-69,71-90\n-24-24,24-28,28-38,59-117\n53-63,63-100\n62-118\n106-118,118-124,124-144,144-164,164-179,179-181\n1-51,55-82\n0-15,15-55,55-125\n0-7,7-27,27-48,63-126\n49-90\n0-6,6-9,9-29,29-31,31-43,49-66,66-76\n58-83,84-99,107-137,296-322\n58-82,102-134,291-317\n158-198,198-215,268-307,307-319\n138-154,157-198,244-262,279-304,306-309\n49-70,281-328\n49-70,279-315\n30-44,44-47,47-64,64-82,86-104\n48-80,84-104\n50-72\n49-72\n55-81\n54-79,79-82,82-96,130-153\n39-65,69-98,270-283,283-285,287-327\n40-64,275-296,296-325\n45-67,67-84,84-87,87-119,130-165,165-182,230-249,249-252,252-256,258-281,281-308\n52-67,67-70,70-114,118-143,143-153,153-157,157-165,165-183,233-253,258-312\n292-321\n102-123,127-143,148-179,187-211,265-300\n99-125,144-177,187-214,269-295\n49-70,287-314\n49-70,290-313\n54-82,82-100,100-118,118-122,122-143,143-176,258-269,269-275,275-277,277-291,291-293,293-299,299-310\n55-89,89-102,102-118,118-120,120-138,149-175,249-272,272-275,275-293,293-312\n270-278,305-325\n269-287,304-324\n52-74,77-106,276-294\n26-37,37-45,45-51,57-87,87-102,102-118,284-294,294-311\n56-91,114-126,130-148,261-279\n59-92,95-107,262-280,291-309\n-31-31\n-45-45\n-5-5,5-22\n92-112,112-136\n8-13,13-23,23-25,25-57,66-83,315-340,340-368\n8-18,29-58,65-85,317-340,340-368\n94-137\n91-135,135-152,313-335\n23-53,63-81,309-338,350-369\n20-48,313-338,348-366\n169-191\n132-150,156-178,178-180\n0-14,14-17,17-36,36-42,52-128\n-22-22,22-26,26-47,69-133\n56-90\n76-104\n69-102\n78-102\n5-27,51-69\n6-24,60-82\n96-123,150-180\n74-96,100-112,120-146\n135-164\n117-137\n37-69,163-174,174-179,179-181\n4-25,38-66,294-314,314-331,346-364\n10-19,44-66,294-314,344-370\n3-27,47-67,83-101,300-319,329-342,348-356\n42-76,160-186\n47-61,66-80,292-311\n156-204\n167-193\n-12-12\n157-169,169-191\n-1-1,1-19\n142-165,168-192\n52-80,171-204,215-244,273-311\n56-79,172-207,215-223,225-236,271-288,288-290,290-312\n194-220,278-310\n196-220,285-310\n39-57,57-70\n53-71\n47-66\n48-66\n1-14,41-64,295-317,338-357,357-361\n45-74,294-317,329-349\n59-92,168-190\n169-190\n45-77,165-199,199-218,273-310\n51-73,171-210,278-287,287-289,289-311\n34-58,297-325\n75-105,161-185\n172-197,281-312\n45-54,292-320,333-351\n290-316,334-352\n71-94,94-111,122-131,131-150,158-180\n61-93,93-113\n0-29\n-1-1,1-19,19-39,163-175,175-179,179-181\n-3-3,3-8,8-23,23-52,52-57,57-72,72-90\n28-40,43-62,78-92,94-124\n60-78,78-90\n114-132,132-152,152-156,156-170,170-178,178-180\n-9-9\n14-33,55-64,75-105\n37-72,164-196\n46-70,294-324\n48-67,73-77,77-91,295-314\n155-189\n68-77,140-144,148-158,161-189\n24-71,165-195\n0-5,5-14,14-30,30-44,44-54,54-72\n165-195\n171-189\n31-78,165-195\n45-67,303-324\n45-67\n37-58,292-318\n36-59,275-293\n-1-1,1-20,68-84,84-88,88-96,96-102,102-111,111-130\n43-61,71-112,112-117,117-140\n9-44,47-52,52-55,59-71\n-5-5,5-48,57-81\n89-104,107-129,129-149\n107-150,150-152\n81-94,101-133,142-160\n75-93,93-97,97-122,122-139\n78-108\n15-43,48-64,67-88\n-3-3,3-11,11-31,33-53,57-129,129-136,136-149\n0-26,26-29,33-42,42-54,54-70,70-73,79-117\n71-118\n73-111\n-7-7,7-18,18-63,63-83,83-86,86-89,89-145,152-160,160-177\n-16-16,20-32,32-40,40-53,77-100,100-107,107-126\n66-102,102-110,110-131,143-161\n54-58,83-118\n-6-6,6-13,13-40,40-60\n-2-16,25-45,318-349,350-356,356-358\n16-44,311-344,344-360\n56-87,87-90\n-15-15,15-18,78-113\n77-103\n0-15,15-35,35-60,71-89\n96-119,128-154\n0-12,12-24,24-30,30-36,36-47,59-121\n-4-4,4-15,79-119\n0-18,24-43\n-17-17\n-11-11\n-14-14,166-194\n0-20,20-24,24-43,84-88,88-97,140-154,154-156,160-180\n75-105\n0-29,30-42,150-176,176-180\n52-62,64-67,67-70,71-88,88-90\n-14-14\n-12-12,170-190\n-1-1,1-5,5-16,148-177,177-183\n12-31,31-40,40-50\n51-69,69-80,80-88,88-92\n-10-10\n170-190\n-14-14\n-9-9\n344-373\n350-369\n-11-12\n171-189\n-10-10,11-31\n-11-11,11-33\n-16-16,20-42\n10-35,35-39,39-53\n68-89,271-300\n68-89,271-294\n-13-13\n30-58,58-79,79-96,128-146,160-169\n16-50,50-57,57-83,83-91,91-101,117-135\n149-175\n-4-4,21-47,47-72\n160-200\n-9-9,26-53,53-59,59-81,170-190\n66-95,95-97,97-104,104-117,152-180\n70-94,94-117,143-160,160-178\n35-58,272-284,284-306,306-311,311-313,313-324\n30-59,271-284,288-304,304-324\n-10-10\n170-190\n-14-14\n170-190\n-12-12\n169-191\n-15-15,169-191\n-20-20\n169-191\n-1-1,1-3,3-22\n-30-30\n-13-13,19-38\n-18-18,19-51,51-53,53-55,55-67,98-122,122-138\n107-130\n171-189\n92-123,133-146,146-165,166-177,177-183\n-1-1,1-9,9-26,32-55,55-72,74-78,92-112,168-192\n-12-12,18-37,37-40,40-54,77-99\n171-189\n28-64,161-199\n-5-5,5-24,24-33,33-59,149-161,169-191\n166-194\n171-189\n69-86,86-107\n181-213,214-216,220-227,233-238,238-242,242-250,250-258,258-259\n0-17,25-34\n0-34,34-60,60-64,64-90\n0-33,33-54,54-88,88-110\n46-60,60-64,68-112\n91-99,121-138,140-164\n58-103,103-125,125-145\n8-24,26-49,49-54\n79-104,106-109,113-126,126-137\n0-16,16-69\n0-53\n-11-11,11-48,48-64,134-152\n-7-7,7-22,22-27,27-45\n68-92,96-132,132-134,134-161\n52-70,83-107,110-124,124-141,146-172,293-303,303-307,312-322\n74-93,93-99,99-102,102-111,111-121,121-140\n80-97,97-118,118-131,131-137,137-149\n45-73,84-102,296-306\n50-70,82-102\n71-98,98-108,108-122,122-154,154-185\n53-87,87-112,112-133,133-154,154-186,280-297,297-316\n69-80,80-101,101-104,104-124,124-160,160-162,162-165,165-184\n70-107,107-109,109-116,116-121,121-126,126-147,147-175,175-187\n92-125,125-148\n65-100,100-115\n63-78,78-97,100-115,119-127,140-150\n43-61,67-85,91-131,131-152,163-180\n132-156,156-180\n101-123,123-160,160-162,162-180\n64-127,127-168\n49-78\n75-112,112-131,131-180\n93-110,110-136,136-175,175-185\n77-101,135-153,153-177,177-183\n61-90,90-101,101-123,123-130,130-172,177-183\n56-69,69-74,74-77,77-106,106-108,108-134,148-180\n64-108,111-138,138-179,179-181\n71-114,114-121,121-147,147-156,156-160,160-178\n96-118,118-121,121-141,141-143,143-169,169-170,177-183\n93-96,116-155,155-173\n-21-21\n106-114,139-169\n0-9,9-40\n53-71,71-109\n95-109,109-113,113-129,129-152,152-158,158-169,171-189\n239-274\n84-110,234-276\n-31-31,34-63\n0-3,3-12,12-17,17-32,38-47,50-53,53-68,107-119\n47-65,65-69,69-111\n0-4,4-32,32-35,35-58,58-69\n-40-40,40-73,76-88\n-3-3,3-9,9-12,12-29,29-41,41-52,52-60,60-71,80-102\n74-106\n91-102,102-129,158-202\n-5-5,5-58,171-189\n69-87,87-90,90-92,92-128,128-150,150-156,156-176\n63-106,106-108,108-131,131-164\n61-96,96-117,117-142,142-167\n6-24,35-69,86-94\n0-21\n85-109,109-118,118-178\n77-118,118-139,139-141,141-166\n2-10,34-65\n78-96,106-124\n70-90,90-119,119-121,199-213,213-215,215-221,221-233,233-241,241-246,246-263\n70-91,91-113,205-237,237-247,247-261\n98-119,212-225,225-249,255-269,273-288\n-2-2,2-5,5-22,22-43,43-56\n-16-16,38-56,56-67,67-69,69-104,104-117,117-120,120-140,140-158,167-193\n-14-14,14-23,23-25,25-45,45-48,48-62,62-68,78-120\n35-56\n134-163\n53-77,172-191,191-199,278-317\n36-49,55-68,167-185,185-189,189-191,191-196,281-311,311-322\n-5-5,5-25,166-194\n-17-17\n168-192\n145-168,168-192\n-10-10,10-36,74-78,83-93,93-105,105-113,113-115,115-124,124-148,162-180\n-18-18\n135-154,168-192\n-12-12,142-150,154-160,160-180\n-14-14\n136-166,173-187\n-2-2,2-17,17-48,50-72,86-100,100-104,104-108,108-112,112-120,120-138,138-160\n-9-9,13-28,28-30,30-49,49-69,91-109,151-164,170-176,176-184\n-11-11,106-116\n28-46,298-323\n19-29,29-33,38-48,49-67,297-320\n0-17,20-33\n48-71,172-194\n80-110\n68-103\n44-54,54-74,182-186,186-192,192-204,284-306\n48-63,65-84,84-98,98-124\n49-62,62-67,67-75,75-93,102-121,121-129\n-7-7,13-35,57-74,74-77,77-106,106-129\n50-62,62-82,82-114\n-12-12\n21-38,38-46,46-78,152-173,173-187\n-20-20,27-35,37-56\n61-75,75-105\n-4-4,4-33,33-35,35-38,38-52,53-60\n59-78,78-88,88-100,100-120,120-139\n44-58,58-62,62-89,89-113,133-153\n48-70,71-89,178-198,289-313\n69-78,176-184,291-309\n-1-1,1-21,69-81\n0-19,171-189\n-14-14,163-179\n-13-13\n-16-16\n-31-31,136-165,165-171,171-177\n39-63,63-77,164-180\n-11-11,158-180\n-20-20\n0-5,5-24\n0-18\n-35-35,99-120,159-201\n140-165,165-167,167-177,177-183\n2-27,48-52,54-72,98-118,162-177,177-179,179-181\n-13-13\n-18-18\n158-202\n148-167,167-193\n-21-21\n138-161,161-180\n-14-14,22-25,25-45,78-96\n-18-18\n-21-21,158-180\n164-196\n163-197\n-14-14,166-194\n156-173,173-187\n-28-28,136-148,148-177,177-183\n-15-15,154-178,178-182\n-20-20,22-34,153-161,168-192\n-16-16,167-193\n0-20,20-54,54-83,83-86,86-90,90-98,98-100,100-157,157-174,174-176,176-184\n6-25,32-41,48-52,52-63,63-86,86-95,95-106,106-119,119-145,145-153,153-163,171-189\n-1-1,1-25,159-179\n0-17\n-33-33,143-160,160-180\n-1-1,1-22,168-192\n25-46,46-60,65-82,82-93,93-108,113-132,151-160,163-172,172-182,293-313\n16-26,26-30,35-45,58-77,77-102,109-127,145-163,169-182,279-301,303-321\n49-67,309-331,331-343\n42-72,316-335\n-4-4,4-28,124-145,145-163\n-22-22\n-12-12,167-193\n36-81,165-183,183-208,279-315\n42-84,166-201,203-215,278-315,324-341\n50-68,68-85,292-314\n46-71,292-316,334-338\n54-81,165-188\n55-82,85-87,87-102,154-165,165-193\n166-199,279-310\n282-314\n45-63,293-318\n44-100,138-146,146-158,158-180\n-11-11\n-12-12,165-175,175-185\n56-81,81-83,83-97\n75-101\n50-68,71-103,103-120\n26-44,55-73\n59-83,87-124\n54-71,287-305\n287-306\n169-191\n-17-17,62-86,86-108\n147-154,154-158,165-195\n-13-13\n-14-14\n-14-14\n-12-12\n169-191\n158-202\n163-197\n167-193\n-12-12\n-14-14\n167-193\n164-196\n-13-13\n-15-15\n168-192\n159-180\n-13-13\n161-199\n-12-12\n-12-12\n-17-17\n214-223,225-233,233-254,254-284\n244-271,271-278,278-295\n65-83,131-156\n251-275,275-283,283-303\n276-300\n273-301\n-23-23\n-16-16,24-36,36-40,40-44,44-60,106-126,126-137,137-153,158-176,176-184\n170-190\n170-190\n-26-26,26-46,46-85,85-125,159-201\n0-40,40-65,65-67,67-72,72-105,124-147\n93-127,127-170,170-175,175-178,178-182\n86-115,133-175,175-180\n0-22,22-32,32-55,55-57,57-114,133-154,154-179\n98-129,136-151,151-157,157-180\n-15-15,162-198\n1-11,43-62,64-91,135-144,146-153,153-207\n31-49,49-65,65-68,68-78,78-91,91-106,110-128,158-178\n46-69,296-320\n46-68,345-363\n177-201,208-216,279-307\n179-205,275-322\n-10-10\n164-187,187-203\n58-76,163-186,186-202\n49-67,67-85,177-203,272-305\n173-190,190-208,277-306\n52-70,293-315\n-25-25,174-179\n54-126\n71-109,109-125\n-18-18\n0-19,23-41,54-78,89-109\n67-99,108-129\n89-111,114-140\n93-108,108-111,111-138\n49-60,60-82,288-309,341-351\n30-42,42-45,47-62,62-85,107-115,293-303,303-307,312-322,341-359\n14-36,66-86,105-122,286-294,349-367\n67-86,100-120\n-2-2,2-7,7-22,22-24,24-44,44-47,47-63\n155-179,179-181\n41-76,284-298,298-302,302-316\n36-50,50-70,70-84,284-316,316-326\n44-63,96-100,121-142,148-184\n43-63,69-95,113-134,134-154,154-179\n46-78\n3-21,52-76,298-316\n167-193\n-10-10,171-189\n-11-11,169-191\n-11-11,168-192\n-12-12,152-164,164-172,172-188\n1-6,6-12,12-16,16-19,19-22,22-27,27-32,32-42,42-64,64-68,68-105,111-114,114-125,125-135,135-156,156-177,177-180\n-17-17,113-135\n52-73,73-83,83-86,86-89,89-121,121-141,141-156,156-164,164-196\n39-66,73-78,78-83,83-87,87-89,89-93,93-133,133-135\n41-62,62-69,69-97,128-140\n6-30,51-70\n47-76,169-205,280-316\n47-81,164-200,277-299,299-317\n36-59,59-78,289-313\n45-70,290-318\n54-67,67-91,126-137,167-190,190-204\n55-79,161-190\n54-82,175-191,191-204,286-316\n52-75,175-197,287-316\n32-65,295-319\n49-67,291-315\n-13-13,169-191\n-13-13\n99-109,142-166,166-194\n-1-1,1-35,142-160,160-162,162-164,164-178,178-180\n0-20,29-39,50-63,63-98,98-100,100-116,116-124,124-135,158-202\n99-125,168-192\n-12-12\n-13-13\n-13-13,13-34\n-14-14\n-24-24,54-73\n156-204\n168-192\n-16-16\n168-192\n0-38\n58-81,113-140,159-201\n158-180\n147-168,168-192\n159-201\n102-114,131-143,149-155,159-201\n72-101,108-134,137-154\n169-191\n158-202\n72-99,99-127,128-153\n58-90,90-105,105-129,129-130,135-139,139-160,160-164,164-176,288-299,299-316\n55-98,104-108,108-139,139-144,144-162,288-306\n28-46,46-72,287-313\n35-62,62-74,293-313,313-321\n164-198,256-275,275-299\n164-189,189-207,264-284,284-307\n53-88,131-149,154-173,285-305\n56-69,69-91,114-121,134-150,288-312\n31-43,45-77,77-93\n44-56,56-83,83-85,297-319\n28-57,81-99,300-308,320-331\n34-62,72-90,299-323,323-337\n96-112,112-114,114-126,155-180\n-20-20\n269-304\n258-274,274-293,293-318,321-340\n277-320\n289-318\n46-54,277-299,299-303,303-317\n49-90\n171-189\n170-190\n41-58,58-81,277-293,293-315\n48-81,165-184,280-316\n-1-1,1-17,169-191\n-14-14\n0-25,25-43,43-52,52-67,67-71,71-78,78-95,95-98,98-115,148-176,176-184\n86-108,119-145\n-11-11,166-194\n18-37,163-197\n-4-4,4-23,28-43,100-124\n-31-31,36-43,43-56,56-83,83-88,88-111,161-180\n3-17,17-23,36-62,62-70,70-73,73-82,82-93,93-105\n-12-12,17-26,26-44,48-59\n212-232,232-242,242-286,300-320,320-360\n14-35,206-224,238-297\n9-21,23-42,206-217,227-251,251-294\n236-256,258-288\n209-227,245-272,272-274,274-287\n22-33,35-60,260-293\n-14-14\n-15-15\n0-16\n-1-1,1-19\n-21-21\n-12-12\n0-24\n167-193\n-10-10,165-195\n0-13,156-170,170-175,175-180\n-12-12,169-191\n0-4,4-23,23-29,67-87\n-1-1,1-25\n-19-19\n3-32,152-160\n-14-14,166-194\n0-15,15-17,19-40\n-10-10,161-199\n-14-14,110-136,169-191\n-14-14,17-28,28-37,37-47,76-94,107-125,149-167\n23-50\n170-190\n0-17,164-196\n-14-14,159-201\n-4-4,4-10,10-13,13-28,86-95,95-126,126-143\n-9-9,12-26,26-28,28-32,32-45,45-65,66-112,112-115,115-129,129-137,137-166\n-18-18,18-30,46-69,84-100,100-102,102-125,146-159,159-175\n114-158,164-196\n-16-16,22-47,157-203\n-10-10\n119-128,130-138,138-149,157-203\n-2-2,2-9,9-25,144-165,165-172,172-180\n-28-28,162-180\n-18-18,149-161,161-165,165-195\n-1-1,1-28,171-189\n157-203\n-12-12,16-19,19-26,168-192\n0-22\n-14-14\n-13-13\n-18-18\n59-88,88-107,129-147\n1-12,27-39,45-63,63-70,70-74,74-114\n33-51,64-98,98-110,110-124,124-136,164-179,179-181\n72-108,108-129,137-156,158-179\n50-99\n-14-14\n-11-11\n-6-6,6-12,12-25,43-63,63-67,67-88,88-92\n-4-4,4-22,38-56,56-59,59-90\n-12-12,156-177,177-183\n0-14,14-16,16-30,38-65,164-196\n0-14,14-30\n0-19,168-192\n-9-9\n0-15,15-34\n-17-17\n169-191\n-14-14\n5-43,84-102,125-143,143-166,171-189\n56-70,70-90,90-92,92-107,107-122,122-139,163-178,178-182\n21-49,131-161,162-172,179-181\n-26-26,155-205\n-14-14\n-19-19\n169-191\n16-27,27-44,132-143,143-147,147-150,150-160,160-171,171-173,173-180\n-22-22,22-38,136-148,148-153,153-159,159-201\n-13-13,169-191\n-18-18,169-191\n45-63,81-99,113-124,126-160,170-190\n-9-9,19-47,47-66,121-139,139-168,168-172,172-175,175-180\n-9-9\n-13-13,166-194\n-12-12\n-17-17\n-12-12\n-1-1,1-21,21-37,158-202\n-7-7,7-27\n-19-19,22-26,26-39\n48-66,70-82,82-100,104-121,121-125,125-147\n158-178,179-181\n-22-22\n-24-24,169-191\n-24-24,164-180\n-9-9\n0-4,4-8,8-25,169-191\n-18-18\n143-153,153-169,169-191\n171-189\n121-129,129-153,153-157,157-173,173-190\n128-173\n302-317,317-320,320-335,339-361\n275-290,295-324,324-335,339-365\n46-79\n53-63,66-68,68-100,197-215\n44-63,63-66,70-92,92-107,196-214,220-238\n26-29,299-319,324-340,340-343,344-371\n274-296,309-316,316-322,338-354,354-381\n0-8,8-12,12-20,20-32,32-33,49-77,329-347,349-360\n9-31,41-59,59-79,344-369\n209-229,263-281,313-338\n213-245,263-272,303-315,315-317,317-319,319-339\n65-94,191-201\n34-51,51-81\n159-169,169-185,185-213\n64-96,183-209\n146-157,168-190,190-205,205-209,209-228\n64-70,70-88,156-190,190-214\n215-233,262-276,281-289,289-315,315-334\n274-294,296-324\n258-271,271-289,289-291,291-324,324-333,333-354\n215-233,267-295,303-320,320-332\n39-72\n-1-1,1-23,23-37,42-60\n0-24,24-45,73-85,85-89,89-91\n0-11,11-28,31-46,50-63,63-85\n1-19,80-106,138-156,156-161,161-167,167-170,170-180\n-19-19,50-69,69-74,74-78,78-90\n44-77,162-198\n170-190\n128-136,158-202\n46-75,113-134,159-178,178-182\n52-69,171-189\n46-66,66-82,154-170,171-189\n38-60,169-191\n41-59\n37-54,54-80,164-180\n170-190\n36-77,154-206\n165-195\n33-49,49-65,165-176,176-184\n43-75,75-76,154-165,165-195\n-9-9,46-73\n166-190\n166-190\n164-187\n166-186\n18-38,38-41,41-70,292-322\n-4-29,29-33,33-42,48-71,286-308,315-337\n48-52,52-55,55-70,305-330\n37-53,53-70\n68-92,104-122,122-139,168-186,285-303\n41-66,292-320\n42-61,295-318,329-347\n42-60,276-293,297-323\n294-328\n49-73,175-201,279-313\n52-74,174-193,267-290,296-313\n171-198\n46-69,171-185,185-207,284-302\n47-69,171-181,181-209,279-297,298-316\n33-51,62-71,153-188,278-296,301-319,319-330\n167-195\n169-194\n19-37,39-61,61-63,63-65,65-68,72-77,77-91\n28-32,39-68\n42-69,87-108,159-193,212-237,297-320\n43-75,155-171,171-202,299-318\n214-241\n58-83,139-183,283-310\n54-81,148-168,168-183,284-310\n36-67,293-330\n37-66,280-331\n165-190,194-220,274-300\n166-194,264-284,284-302\n7-16,38-68,78-93,287-297,299-321\n37-68,298-321\n164-195,204-227,227-244\n166-194,211-225,225-231,231-239,239-250,271-286,286-295\n57-83,160-192,279-311\n43-69,150-167,167-195,286-314\n168-193\n62-83,146-181,277-294,294-304\n14-33,39-69,297-327\n-7-11,34-70,294-325\n162-192,192-204,206-223,262-279,281-298\n159-187,187-208,208-218,276-301\n25-40,40-43,43-48,281-295,297-321\n33-55,297-320,320-338\n29-68,281-297,297-305,305-317,317-333\n41-69,148-166,169-193,280-301\n25-43,149-168,168-195,271-281,281-288,288-306\n167-191\n0-8,8-20,98-145\n0-2,2-30\n141-161,161-179,179-181\n-25-25,81-97,97-107,107-111,111-147\n3-26,78-96,96-104,104-108,108-123,123-134,141-159\n-16-16,104-136,149-170\n-11-11,12-37,37-39,39-43,43-67,67-93,93-99,99-119,119-141,141-148,148-164,164-173,173-187\n0-16\n40-66,67-86,151-170\n-3-3,3-32,50-68,83-99,99-101,101-116,145-163\n92-121\n70-98,98-100,100-112,112-114,114-133\n63-77,79-134\n73-83,83-87,93-123\n-3-3,3-8,8-24,24-44,44-63\n-6-6,6-13,13-41\n0-37,45-71\n83-97,97-115,115-136,136-161,162-179\n112-154,163-197\n109-163,163-175,175-180\n159-178,178-180\n-13-13,89-107,107-116,116-133\n171-189\n-2-2,2-5,5-25,25-39,102-137\n-7-7,7-9,13-25,41-51,51-78,78-96,114-124,124-128,133-142,143-168,168-171,171-189\n83-103,110-133\n0-15,15-36\n170-190\n1-4,4-21,334-358,358-361\n136-153,153-162,162-163,327-344,344-370\n136-163,328-350,350-363\n103-114,134-152,156-164,341-362\n-27-34,34-42,42-45,45-54\n-11-38,305-323,323-326,326-347,347-349\n224-254\n223-239,239-258\n-29-29,29-90\n18-47,47-67,67-113\n-2-2,2-8,8-18,18-31,31-39,39-51,51-63,63-72,72-86,86-88,88-92\n0-6,6-11,11-32,59-121\n34-71,71-74,74-80\n-16-16,36-70,104-135,160-174,174-180\n-14-14,14-18,18-40,40-48,48-70,79-101\n80-100\n-13-13,13-22,22-37\n-13-13,13-17,17-38\n-1-1,1-35\n127-144,144-162,162-178,178-180\n107-127,135-180\n-18-18,18-70,70-90\n-7-7,7-13,13-23,23-27,27-33,33-43,43-54,58-122\n0-25,25-41,101-147\n0-17\n109-121,128-163,163-197\n139-151,151-174\n0-17,17-48,48-70,70-90\n4-22,104-135\n165-195\n-10-10\n133-154,154-178,178-182\n27-54\n-4-4,4-28,28-32,32-58,58-65,65-74,74-90\n130-158\n-21-21,21-80,80-90\n-2-2,2-16,103-122,122-136,136-138,142-155,155-169,169-180\n0-25\n125-158,158-164,164-196\n-2-19,19-32,145-156,156-160,160-164,164-167,167-176,176-178\n153-162,169-189,189-202,202-207,207-209,209-226\n225-251\n225-252\n129-139,151-166,166-178,178-184,184-217\n137-149,149-171,171-182,182-208,213-228\n-1-6,23-36,36-43,43-68,160-174\n7-10,14-48,48-70,86-107,107-123,144-147,151-171\n6-26,26-27,39-54,54-57,57-66,66-67,139-173,173-186\n1-28,33-61,135-171\n349-369\n349-369\n7-29,42-53,55-83,84-111\n5-23,45-74,85-110\n195-221\n195-219\n19-43,47-66,66-84,159-178,178-182\n37-59,59-88,152-168,168-179,179-181\n46-70,163-197\n-10-10,22-25,61-84,84-86,86-92,112-131,131-133,133-156,156-167\n29-45,48-65,65-90\n79-101\n25-42,42-46,51-61,63-81\n171-189\n68-89,89-112\n0-9,9-54,54-63,63-74,74-118,118-121,121-123,123-129,129-138,138-180\n36-58,66-87,87-92,92-106\n-6-6,6-26,26-46,46-52,52-55,55-66,66-72,74-86,86-89,89-91,91-142,142-150,150-156,156-158,158-166,166-194\n-5-5,5-26\n-11-11,11-46,46-74,74-79,79-88\n7-25,92-118,118-140\n73-89,89-91\n78-102\n-9-19,19-32,32-42,42-62,66-73,73-83,93-101,104-121,121-124,124-127,127-130,130-135,135-153,153-163,163-167,167-171\n-5-21,21-23,23-42,42-50,50-53,53-55,55-69,75-102,108-129,134-175\n44-76,139-160,165-195\n139-157,157-173,173-176,176-192,194-210,274-292,306-324\n48-68,140-151,151-166,166-174,174-193\n19-37,37-45,56-64,64-89,95-115,127-142,146-172,172-188\n29-59,62-88\n-1-1,1-18,18-31,31-34,34-38,38-50,50-70,70-75,75-87,87-93\n-13-13,100-123,123-142\n2-8,8-11,11-22,22-41,56-75,75-100,102-120,131-150,150-168,168-182\n-12-14,14-15,18-24,24-26,26-43,50-70,116-140,140-143,143-150,150-164,164-166\n46-58,58-78,169-191\n11-29,79-100,100-109,109-119,130-151\n63-90\n69-86,86-89,89-92,92-119,119-137\n-13-13,18-33,34-69,69-85,85-87,87-93\n-11-11\n23-46,61-66,66-79,108-135\n31-54,54-84,138-150,150-155,155-160,160-170,170-190\n18-31,31-57,57-59,59-80,164-196\n-5-5,5-22,30-61,61-81,81-89,89-91\n-1-1,1-23,114-160\n22-32,48-67,67-85,85-97,112-130,167-193\n36-69,69-94,158-188,188-215,271-290,290-300,300-345\n37-61,61-95,156-186,186-212,277-298,298-305,305-308,308-312,312-345\n-12-12\n85-103,109-145,146-153,153-157,157-171\n66-114\n32-41,72-104\n53-61,79-101\n35-55,66-84,96-114,127-138,152-168\n-1-1,1-21,30-54,65-74,111-133,133-156\n6-31,43-65,65-67,67-79,89-91\n0-14,33-51,55-70,70-82,140-150,150-160,160-180\n28-46,46-52,52-58,58-70,139-157,157-180\n35-54,54-71\n-22-22,22-39\n-1-1,1-22,22-42,42-79,86-94\n36-70\n23-58,66-79,79-82,82-93,93-105,105-125,125-159,159-190\n-7-9,9-19,19-39,74-80,80-94,94-104,104-138,138-168\n-7-11,100-132,334-352\n-4-7,11-27,27-53,62-80,118-137,137-154,157-172\n15-40,55-73,110-129,129-162\n39-67,67-72,72-94,137-147,147-153,157-203\n14-25,25-33,33-36,36-58,58-86,162-180\n30-48,158-202\n55-76,158-176,292-320,320-341\n51-67,70-86,198-216,288-322,322-342\n-3-3,3-13,13-17,17-34,34-36,36-42,42-45,45-73,79-101\n-11-11,11-15,39-79\n23-26,29-43,43-63,78-104,104-112,112-139,146-160,160-173\n19-37,37-64,75-91,91-97,97-99,99-103,112-135,156-164\n-1-1,1-9,9-21,21-25,25-38,38-60,60-80,80-100\n-1-1,1-7,7-14,14-34,34-54,54-56,56-59,59-61,61-70,70-72,72-90\n8-28,34-47,68-94,102-120,124-133,149-168,169-188\n3-27,57-81,81-97,101-117,156-168,168-183\n39-71,166-194\n-2-2,2-13,13-18,18-29,46-72\n9-37,47-55\n-1-1,1-23,23-27,27-38,38-47,47-81,88-92\n80-100\n-9-9,30-49,54-72,77-103\n-10-10,10-25,25-53,53-61,61-85,85-95\n-16-16,107-139\n49-67,171-189\n17-35,35-53,53-55,55-75\n8-21,21-23,23-30,30-67,72-76\n46-73,163-197\n4-26,29-71,81-99\n4-19,19-38,38-51,51-55,55-70\n13-28,28-32,32-40,45-53,53-54,70-88\n10-28,35-50,54-69,83-93,151-173\n-3-3,3-41,50-71,71-78,78-85,85-89,89-91\n7-40,47-80,101-122,122-153,153-171\n-7-7,7-31,45-70,93-112,112-126,132-139,146-168,168-169\n34-47,47-72,75-99,124-135,135-143,143-151,151-155,155-163,163-175,175-185\n-4-4,4-10,10-12,12-35,35-47,47-55,55-81,81-99\n-1-1,1-7,7-27,29-56,56-77\n-9-9\n52-66,66-71,71-85\n340-362\n339-361\n31-46,46-58,58-73,150-172\n18-39,44-83,92-99,99-102,106-118,134-160,167-193\n30-48,76-94,125-160,161-165,165-173,173-187\n17-39,132-142,147-171\n-10-10\n-9-9,38-56,130-148,155-205\n0-2,2-7,7-27,27-37,37-45,45-53,53-74,74-78,78-102\n-1-1,1-15,15-36,81-113,113-151\n0-14,14-34,34-89,89-91\n65-115\n142-153,154-170,170-173,173-175,175-177,177-180\n-13-13,13-31,31-51,51-71,71-109\n-11-11,28-50,74-100,100-133,133-155,168-192\n35-46,46-80,85-95\n107-133,134-163,163-176,176-184\n-2-2,2-13,13-16,16-90\n8-27,99-134,134-146,152-161\n-13-13,26-30,33-47,47-50,50-71,71-89\n-17-17,17-27,27-90\n-15-15,15-23,106-144\n134-155,161-199\n-6-11,11-13,13-19,19-35,35-37,46-50,50-75,86-104,104-114\n-9-13,13-15,15-34,34-54,54-59,59-78,93-120\n20-31,31-39,39-50,74-96,125-143,146-169\n-20-20,71-89,89-108,108-131,131-147,147-149,149-151,151-162\n-7-7,7-11,11-48,48-51,51-71,71-94,94-118,118-129,129-133,133-135,135-166,166-194\n-11-11,11-32,53-82,100-118,129-147\n7-30,54-71,71-80,82-87,87-97,97-117,117-127,127-146,146-159,159-161,161-164,164-166,166-176\n-9-9,11-24,30-43,99-112,112-119,119-132,132-147\n40-95,166-194\n22-34,34-45,45-54,54-65,65-89,165-180\n37-76,167-193\n30-42,44-74,168-192\n0-17,26-54,64-85,85-89,89-91\n98-116\n55-80,167-186\n-13-13,13-54\n173-194\n66-84,168-190\n13-26,26-48,48-56,56-70,70-84\n-9-9,23-44,44-70,72-85\n39-68,164-180\n47-67,67-90,156-170,170-184,184-209,284-315,315-331\n46-65,65-91,153-187,187-207,261-272,272-279,279-299,299-307,307-310,310-312,312-316,316-319,319-332\n24-35,56-72,72-84,144-164,164-174,174-196,261-265,274-294,300-322\n40-65,141-161,170-183,183-201,261-279,281-294,294-298,298-325\n11-38,38-49,49-74\n0-4,4-27,27-41,41-72,72-80,80-83,83-87,87-89,89-91\n0-18,18-20,20-54,54-85,85-88,88-92\n4-30,76-86,86-90,92-100,100-119,129-147,154-176\n9-29,96-120,163-186\n6-29,39-52,52-67,67-86\n-1-1,1-3,3-5,5-12,12-30,33-51,51-59,59-80,80-100\n0-4,4-33,33-56,56-90\n30-52,65-84,153-173\n35-53,53-54,66-85,143-151,153-162,162-173,173-198,254-271,272-290,297-319\n17-37,37-60,60-74,142-164,173-191,261-271,271-280,280-291,295-311\n3-22,22-42,43-63,63-85,85-95\n0-5,5-7,7-9,9-18,18-20,20-38,38-43,43-64,64-66,66-74,74-106\n35-67\n0-31,31-75,75-90\n0-19,22-28,32-37,37-40,40-51,103-138,143-165\n-3-3,3-9,36-72\n137-160,161-179\n13-30,30-32,32-35,35-65,65-76,78-102\n0-4,4-21,21-37,37-60,60-90\n-2-2,2-4,4-22,100-136\n-13-13,43-62,62-73,79-97,108-133,136-158,163-177\n33-51,51-81,81-94,153-171,171-180\n36-59,59-80,163-178,178-182\n-8-8,13-22,22-42,45-68,68-88,88-92\n0-21,21-79\n-1-1,1-15,15-19,19-21,21-33,35-47,62-80,80-88,88-92\n-22-22,37-86\n0-59,59-61,61-119\n0-27,40-83\n-1-1,1-4,4-23\n69-96,96-106\n29-47,47-62,62-74\n10-42\n-12-12,12-15,15-30,38-58,58-61,61-65,65-71,71-85,85-89,89-91\n-1-1,1-21,21-39,39-41,41-52,52-58,58-72\n35-68\n153-180\n5-17,17-24,24-53,53-81,81-85,85-112,124-148,148-180\n34-43,64-85,86-102,102-123,205-220,220-221,223-238,267-285,296-329,341-349\n31-40,52-69,69-87,104-124,150-160,188-209,221-229,286-299,299-328,328-347\n39-59,59-79,160-179,179-181\n-3-3,3-10,10-16,16-20,20-62,62-75,75-105\n-35-35,57-70,70-106,106-140,140-168,172-178\n-1-1,1-8,8-36,36-52,52-54,54-74,74-106\n0-4,4-12,12-31,35-55,55-75,75-87,87-95,103-106,106-123,123-133,133-144,144-157,162-180\n-3-3,3-20,95-113,113-116,116-137,137-139\n-13-13,107-135\n24-44,44-52,52-64,64-78,84-102,141-154,154-174,174-176,176-184\n-3-3,3-26,30-45,80-98,106-131,145-157\n39-75,165-195\n20-49,49-73,169-194,286-310\n52-69,166-188,286-309\n51-54,57-75,165-189,282-311\n66-83,83-102,103-121,175-193,206-227,227-241,272-290,312-321,345-363\n25-43,53-73,172-183,197-212,263-283,289-311,319-337\n-2-2,2-16,27-42,42-48,65-76,76-84,84-95,100-133,145-157,157-178\n157-176,176-184\n14-22,24-33,33-41,41-51,174-186,186-194,275-290,294-309\n13-39,43-65,173-193,279-298,298-299,304-314\n7-33,33-35,35-41,53-71,93-109,109-132,132-154\n45-61,61-78,158-168,168-177,177-180,180-193,272-303\n39-57,71-89,166-184,184-197,266-277,281-317\n47-63,66-82,169-177,188-204,287-313\n55-80,174-196,288-312\n-1-1,1-5,5-8,8-27,120-163,163-167,167-179,179-181\n0-18,113-150,150-159,159-170\n138-162,162-168,168-169,179-203,333-341\n112-124,126-174,183-192,201-218,228-255\n186-212,212-223,223-225,227-245\n216-239,239-259,259-268,268-279,279-291,291-298,298-304,314-329,329-333,333-339,339-342,342-364\n209-231,231-238,238-268,268-299,306-359\n231-260,260-268,268-269,313-331,331-333,333-351\n202-212,212-224,224-271,271-286,292-311,336-361\n186-206,230-248,248-277,279-287,287-299,299-316,319-329,336-338,341-363\n-4-27,59-77,113-133\n-8-11,11-18,18-32,57-77,92-132\n17-47,47-51,51-52\n244-285,309-322,322-356\n249-279,317-335,335-339,339-358\n8-37,43-57,83-94,94-98,98-102,102-115,118-134\n302-329,329-331,331-333,333-343\n-16-16,16-25,25-49,62-118\n27-45,80-117,117-130,130-136\n72-108\n111-123,125-134,134-137,137-150,150-172\n135-171\n7-35,35-53,53-57,57-73,73-107\n141-153,153-159,159-163,163-183,183-194,194-213\n-17-17,35-38\n46-75,169-191\n169-191\n290-309,309-321\n290-320\n46-67,172-197,202-220,289-307\n44-67,175-195,288-309\n38-58,58-77\n44-65,297-322\n44-66,298-323\n-43-43,43-66,66-69,72-168\n-11-11,11-34,34-41,55-81,81-92,92-110,110-112,112-137,137-169,171-189\n-14-14,20-43,63-73,95-110,110-146,151-178\n0-29,29-47,50-96,96-98,98-123,123-157,162-173\n-1-1,1-19,19-24,24-26,94-103,105-109,109-112,112-127,127-145,164-177\n-16-16\n132-168,168-192\n0-6,6-32,32-45,47-52,52-58,58-72,72-76,76-78,78-118,118-134,134-166,166-194\n0-3,3-32,100-123,123-128,128-138,138-143,143-158,158-165,165-195\n-4-20,40-58,76-87,106-123,125-142,201-223,226-244,324-334,334-355\n15-37,37-50,76-93,93-95,95-112,125-143,143-144,148-155,180-198,198-206,206-217,261-279,329-347,348-366\n-9-15,19-37,76-89,89-93,93-107,113-131,143-154,164-184,184-198,198-200,200-205,205-209,209-221,224-242,321-331,331-335,340-349\n47-72,169-191\n47-67,67-78,293-319\n41-68\n39-50,164-200\n43-61,167-195\n31-69,286-321\n36-64,282-325\n37-57,282-290,301-324,324-331\n49-67,283-297,297-321,321-335\n18-38,284-319,319-338\n281-306\n52-78,156-185\n56-91,154-183\n167-191\n47-77,167-189\n169-198,276-306\n170-202,246-266,266-268,268-272,272-304\n166-174,177-180,180-184,189-200,200-210,281-309\n43-77\n54-76,149-179\n48-72,163-179,182-204,285-306\n39-83,118-136,156-197,281-318\n47-77,148-168,168-197,281-317\n150-169,169-176,176-186,186-206\n291-314,318-338\n52-80,82-103,143-154,154-190\n54-75,154-174,174-193\n48-72,166-184\n49-69,169-195,298-308\n52-73,172-192\n-1-1,1-17,17-39,39-42,42-50,50-56,63-71,71-91,101-120,120-122,122-142\n77-114,117-129,129-132,132-139,152-174\n-1-1,1-13,13-19,19-30,37-51,56-70,77-89,89-92,96-107,107-119,119-138,150-179\n38-57,57-68,68-82,162-182,290-308\n38-52,57-66,72-79,79-97,147-157,157-161,166-177,177-187,191-203,260-272,272-275,278-296\n27-60,60-62,62-64,64-76,76-89,89-95,95-100,100-111,111-131,131-147\n74-113,113-127,127-140\n35-53,74-85,88-108,108-126,126-129,129-137,137-150,150-152,152-154\n12-14,14-15,21-45,164-192\n56-124\n88-128\n70-110\n51-80,80-100\n55-125\n1-19,25-34,54-71,74-81,85-133,138-143,143-157\n34-58,58-61,61-83,86-94\n106-126,134-166,166-180\n91-133\n35-49,49-52,52-54,54-67,67-69,69-81,81-85,85-108,108-137\n92-132\n26-38,38-48,48-56,56-62,62-68,68-79,79-96,96-99,99-103,103-123,134-152\n77-112\n77-120\n28-65\n31-75,157-203\n38-49,49-65,75-93,303-324\n19-40,40-71,303-320\n42-60,60-77,84-102,152-164,164-168,168-186,189-207,282-297,301-316\n51-75,154-164,164-188,197-215,275-293,308-326\n48-76,163-188,193-207,277-295,305-323\n37-63,63-85,85-90\n-4-4,4-23,34-43,43-64,64-89,89-91\n-19-19,19-22,22-84,84-89,89-91\n-12-12,12-28,34-52,94-121,121-130,130-140\n37-66,66-68,68-78\n20-31,33-78,156-177,177-180\n1-37,162-181\n5-25,25-44,164-185\n0-35,47-67,67-75,75-77,92-110,142-162,162-171,171-180\n-11-9,9-36,36-61,66-82,82-94,153-169\n-2-2,2-21,46-67,75-97,97-124,124-144,144-177\n-24-24,127-149,163-197\n56-74,84-105,105-125,125-138\n0-11,11-26,35-39,49-90\n-12-12,48-81,81-90\n0-9,81-96,100-124,124-150\n0-4,4-27,27-51,58-70,70-72,72-80,80-84,84-86,86-88,88-135,135-161,161-180\n5-32,44-62,89-112,118-131,140-148,159-176\n-2-2,2-5,5-19,19-43,43-83,83-89,89-116,116-125,125-143,143-164,165-180\n5-28,56-78,78-89\n-6-6,6-9,14-22,25-33,33-37,42-52,67-89,93-103,103-114,146-168,168-192\n-1-1,1-21,21-26,26-28,28-58,58-70,73-137,137-159,159-162,162-164,164-178,178-182\n-20-20,62-74,74-80,80-98,98-134\n-4-4,7-11,14-38,41-59,96-108,110-114,114-116,118-123,123-156,169-191\n-28-28\n-24-24\n108-137,137-157,157-174,174-179,179-181\n102-116,116-120,120-126,126-146,146-173\n110-143,143-169,169-191\n122-159,159-165,165-176,176-178,178-180\n11-38,92-122,122-138,144-164\n0-18,26-46,57-61,63-79,84-113,118-134,134-143,145-152,152-166\n116-132,132-141,141-152,152-180\n-10-10,10-19,19-26,26-44,99-126,128-146\n0-3,3-33,33-55,72-79,79-112,112-153,153-156,156-159,159-161,161-164,164-167,167-172,172-175,175-185\n-17-17,21-30,30-48,72-88,88-116\n131-158,158-180\n88-110,121-176\n-14-14,22-25,88-110,110-120,120-146\n208-237,244-277\n211-250,262-279\n210-240,257-286,286-289,289-292,292-302\n212-243,243-260\n109-141,141-163,195-232\n109-136,142-165,165-186,193-233\n153-174,174-181,181-216\n129-146,146-172,172-175,198-233\n128-167,196-233\n144-153,196-231\n139-169,192-228\n50-61,64-91,279-299,299-310\n54-79\n74-100,148-166\n177-204,283-303\n169-202,202-208\n177-192,192-194,194-200,200-216,270-288,289-307,308-326\n43-81,156-172,172-202,274-286,286-318\n49-72,72-92,164-187,187-205,285-319\n54-72,178-200,200-212,288-316\n45-69\n281-301,301-321\n279-300,300-316\n283-317\n289-315\n33-64,171-179,181-185,185-206,206-213,213-226,226-249,285-303\n38-66,178-209,227-251\n46-73,277-290,290-315\n54-83,147-190,190-202\n60-78,83-105,158-190\n57-83,93-107,159-190\n57-80,113-134,161-189\n50-62,66-95,113-131,148-164,165-193\n59-67,69-78,111-122,122-136,136-156,156-163,163-173,173-177,177-192\n160-170,170-172,172-175,175-177,177-197\n47-78,168-196,283-313\n45-65,65-82,169-188,289-319\n292-313\n52-75,286-313\n47-70,288-315\n55-88,154-179,179-198\n-31-31,31-61,61-87,87-93\n-1-1,1-5,5-19,19-39,39-59,59-68,68-79,79-101\n-19-19,108-142,142-147,147-162,162-165,165-175,175-178,178-180\n-14-14,123-133,137-151,151-173,173-187\n107-127,131-152,152-177,177-179,179-181\n-13-13,13-16,16-73,73-90\n-18-18,102-153,153-156,156-171,171-189\n31-61,81-99\n-11-11\n-9-9,49-59\n99-124,127-151,159-177\n22-42,42-50,50-68,109-121,121-125,132-195\n111-129,133-164,164-166,166-195\n37-55,68-94,122-137,137-157,157-178\n242-253,253-256,256-267,267-269,269-271,271-296,296-326,326-352\n232-262,264-293,293-313,313-343,343-363\n15-42,65-80,80-83,83-94,94-95,100-110,350-368\n0-12,12-15,15-18,18-28,28-52,76-94,94-96,96-114\n-19-45,54-60,60-82,82-125,125-130,130-161\n-25-1,1-51,60-77,85-134,134-150,150-155\n-4-17,106-140,225-239,239-243,243-257\n5-21,107-134,230-233,340-365\n265-284,284-293,293-297,297-310,310-330\n265-283,283-293,299-312,312-316,316-325,325-341\n209-237,237-258,258-278\n209-226,226-233,233-255\n15-44,44-71,80-113,113-126,344-375\n14-19,19-22,22-26,26-45,45-65,80-106,106-122,344-374\n34-40,40-50,50-66,70-88,88-101,136-186\n-2-3,3-26,36-68,68-71,71-73,76-79,79-83,83-102,139-178\n234-254\n232-253\n2-17,271-293,293-297,297-322,324-341,341-362\n3-7,7-17,272-318,323-339,339-361\n0-23,110-137,137-160\n20-39,50-76,124-146,167-193\n89-123,123-142\n76-89,89-119,242-263\n80-98,111-115,115-120,120-125,125-140,140-167\n1-9,230-257,257-275,297-315\n229-246,246-260,339-355,355-376\n234-257,257-267,297-314,314-318,318-338,338-348\n6-17,17-25,25-36,98-119,119-135\n41-76,164-196\n23-33,33-42,42-43,55-65,75-93,166-180\n38-66,165-180\n26-65,167-193\n43-62,62-80,160-200\n39-70\n54-84\n53-84\n46-82,152-186,191-197,197-208\n50-74,154-189\n35-57,292-312,323-341\n27-57,278-313,317-342\n247-255,257-266,266-277,285-311\n178-186,252-270,279-292,292-295,295-310\n164-189,191-206,280-294,294-313\n44-55,55-72,160-177,179-196,290-313\n30-48,50-68,149-163,167-192,280-312\n3-12,46-71\n286-319\n289-311\n44-86,92-109,150-187\n44-80,80-95,95-109,114-150,150-160,160-162,162-187\n171-179,189-196,223-235,278-313\n174-187,193-206,280-297,297-299,299-318\n278-297\n177-201,286-306\n44-54,54-83,161-180\n50-74,160-189\n50-76,157-182\n35-53,58-76,180-197,286-313\n163-182,182-188,289-316\n168-196\n147-165,171-186,186-190,190-203,217-235\n53-73,82-91,287-311\n49-71,71-81,135-148,148-171,171-181,285-297,297-299,299-303,303-320\n43-68,281-320\n17-34,34-36,42-69,289-313,316-326,326-343\n144-167,167-189,189-220,221-226\n34-48,48-70,286-319\n40-72,166-194,286-306,306-322\n287-313\n284-313\n160-191,290-315\n280-313\n275-309\n42-72\n48-72\n45-72,176-195,195-202,259-268,275-303\n45-66,173-201,278-307\n46-63,172-189,296-305,308-317,317-319,319-328,328-329\n31-39,44-49,49-66,163-186,303-320\n43-71,167-197,289-313\n44-70,167-190,287-305,305-321\n165-183,183-199\n-13-13,15-33,42-52,52-56,61-71,83-101,111-130,130-151,170-190\n43-79,162-198\n161-199\n133-146,146-150,150-180\n35-55,55-61,61-67,67-82,164-177\n47-86,91-98,161-175,175-185\n38-56,158-202\n-21-21,101-119,119-129\n61-81,85-101,149-182\n1-11,11-40,40-47,47-49,49-66,74-82,93-109,154-174\n16-30,43-48,48-59,153-171,263-281,287-295,313-334,338-353\n25-35,271-289,312-334\n291-310\n291-310\n17-26,53-100,120-130,133-149,149-153,153-156,156-162,162-169,169-178,178-182\n15-33,42-63,163-184,278-304\n38-47,47-64,162-180,180-193,193-196,200-212,282-300\n48-66,156-186,268-302\n0-9,9-45,45-52,52-65,65-85,85-89,89-91\n-14-14,14-29,29-53,53-57,57-77,77-103\n-1-20,32-49,49-54,80-93,98-127,128-138,149-159,159-162,166-174\n-5-13,13-14,19-29,29-43,45-52,104-129,129-148\n8-27,57-79,79-87,87-90,90-97,97-121,121-138,138-188\n19-33,45-67,67-74,74-95,95-118,118-124,124-130,130-139,139-190\n32-72,72-98,127-143,143-153,160-200\n44-59,59-70,170-200,288-306\n45-73,86-104,172-196,278-296\n0-29,31-42,42-52,52-62,78-102\n-14-14,17-34,102-115,119-135,139-145,145-178\n0-90\n0-18,34-56,96-122,122-153,153-178\n-13-13,13-35,35-63,63-73,74-88\n78-102\n7-46,46-75,75-83,83-92,92-107,123-187\n23-44,44-63,63-89,89-105,123-203\n-3-22,22-23,28-38,113-132,140-158,199-211,211-214,218-230,246-264,342-356\n12-29,96-109,109-112,112-146,196-206,219-238,346-372\n-2-8,8-10,10-13,13-20,20-36,130-140,146-178\n5-18,18-26,26-37,124-138,138-152,152-161,161-174,174-177,177-185\n-5-5,5-31,38-56,60-75,75-89,89-90,95-105,162-179\n0-33,57-75,96-114,114-126\n-13-13,80-101,101-102,106-126,126-142,142-161\n48-62,62-65,65-69,69-72,72-75,75-82,82-96,163-180\n42-54,54-62,62-74,79-87,152-208\n52-72,147-165,165-187,187-190,190-194,194-217\n35-53,57-74,145-163,169-197,197-208,260-278\n245-263,283-315,331-349\n183-207\n-31-31,35-81\n-1-1,1-4,4-6,6-28,28-50,70-110\n-23-23,23-80,80-100\n-22-8,8-14,14-28,28-30,30-48,48-57,57-59,59-77,79-97,97-103,107-143,143-158\n47-67,70-74,87-102,102-104,107-143,162-223\n-2-2,2-43,43-70,70-90\n-11-11,13-35,38-57,57-80\n-11-11,15-39,40-71,71-79,79-80,82-92,92-95,124-146,152-164,164-196\n-12-12,27-45,45-59,79-89,97-110,110-144,144-163,171-189\n27-42,46-66,81-99,105-116,116-124,124-136,136-137,161-179\n53-75,177-201,294-319\n51-79,166-202,296-318\n45-70,168-200,285-313\n44-71,166-191,287-311\n10-20,20-24,24-26,26-49,69-84,88-103,147-165\n15-47,48-57,57-58,84-103,168-186\n122-151,151-168,168-192\n151-162,162-198\n108-128,128-146\n-33-33,81-110,110-136,136-152,152-164,164-172,172-180\n-2-2,2-9,9-26,124-138,138-169,174-186\n0-25,103-142,142-151,151-154,154-172\n-13-22,124-147,147-182,182-187,187-203,203-224,310-327,327-347\n0-4,4-6,6-9,9-11,11-27,73-91,94-121,121-142,142-164,164-169,169-178,178-207,231-255,281-292,314-327,327-332,332-347,347-360\n239-262,273-295,313-323,323-345\n11-16,16-31,59-89,98-124,124-144,144-167,167-172,172-174,174-189,238-250,250-258,261-279,328-371\n8-11,11-30,135-154,154-168,169-174,174-180,234-256,325-368\n-7-1,1-3,20-31,82-100,177-201,208-232,232-251,259-267,301-319,321-338,342-353\n16-24,35-49,109-123,123-141,165-180,184-203,203-232,245-262,263-281,299-317,345-366\n170-191\n172-205\n43-60,60-76,169-182,188-201,299-319\n58-85,140-158,161-184\n-2-2,2-12,12-14,14-34,43-69\n164-196\n-17-17,34-52,156-204\n46-86,86-90\n89-134\n23-42\n0-18,18-38,38-42,42-45,45-57,57-82,82-86,86-94\n-18-18,109-138\n41-79,160-200\n-13-13,13-40,40-59,59-73,76-104\n-15-15,107-127,130-143,143-146,146-157,157-176\n-18-18,62-78,78-81,81-99\n-24-24,68-93,93-104,110-122,128-145\n-1-1,1-23,91-101\n-21-21,45-66,71-80\n43-52,52-60,60-78,78-98,147-165,165-195\n52-62,163-171,173-181,181-186,280-310\n2-24,24-30,32-61\n-16-16,16-17,89-99,99-101,101-106,106-119,119-121,121-137\n-5-5,5-8,8-50,50-69,69-111\n-15-15,103-134,152-164,164-179\n-7-7,10-48,52-77,84-89,89-91\n-1-3,3-12,12-24,24-31,31-36,36-44,44-56,56-61,61-93,97-117,129-144,144-159,159-164,164-172,172-179\n-1-16,16-17,19-31,36-44,44-56,56-63,63-83,83-90,128-151\n-15-15,28-67,81-98,142-175,175-179,179-181\n8-20,20-31,33-40,40-43,43-53,61-76,76-78,78-84,84-95,159-201\n41-59,71-89,114-132,139-171\n-1-1,1-25,25-42\n9-27,34-55,55-61,61-77\n-5-5,5-15,103-134,134-148\n-1-1,1-6,6-9,9-18,18-63,63-71,71-73,73-86,86-94\n162-198\n4-24,24-43,48-70\n26-55\n-6-6,6-8,8-26,26-51,51-81,81-99\n2-14,14-20,20-46,46-48,56-59,62-90\n-4-4,72-108\n-14-14,14-41,55-67,69-87,95-107,107-112,112-118,118-131,131-151,151-173,173-187\n0-3,3-16,16-35,35-43,49-66,133-170,170-177,177-183\n8-25,25-48\n155-180\n156-176,176-191\n159-190\n-2-2,2-12,12-27,27-32,32-38,38-40,40-57,57-80,80-85,85-87,87-90\n-12-12,74-106\n-3-3,3-22,32-56,56-60,60-62,62-65,65-70,70-90\n2-17,19-37,48-69,103-130,171-189\n-1-1,1-11,11-27,100-150\n38-55,55-72,162-177,177-179,179-181\n171-189\n0-17,107-135\n-10-10,12-41,73-84,84-101,105-121,121-123,123-141,142-145,145-151,170-190\n46-73,195-215,302-320\n25-50,52-68,169-180,180-188,188-199,208-228,261-279,279-280,284-293,293-296,296-304,304-327,328-337\n10-34,38-46,46-54,54-59,59-62,66-71,71-79,79-90,134-148,152-168,172-179,185-195,199-214,232-249,249-268,269-284,284-315,328-346\n53-69,76-104\n-11-11,69-83,83-87,87-93\n-12-12,12-14,14-23,23-25,37-52,52-54,58-70,73-90\n0-12,12-23,35-68,68-72,72-86,86-94\n-8-4,11-14,16-38,38-59,59-64,64-81,81-102,102-137,137-156\n3-14,14-24,24-28,28-35,35-44,44-58,58-64,64-68,68-78,78-97,97-116,116-122,122-147,147-157,157-169,169-171,171-173,173-177,177-183\n-1-1,1-8,8-14,14-19,19-39\n0-2,2-20,20-22,22-39,45-76,76-80,80-100\n-12-12,22-41,44-62,62-74,74-89,89-91\n20-38,56-76,76-89,89-108,125-143\n-13-13,13-21,21-46,66-74,84-96\n171-189\n-13-13,17-35,94-104,112-129,129-148,168-192\n-1-1,1-27,33-66,80-100\n-15-15,18-36,36-58,81-107,107-138,138-164\n6-24,43-61,86-99,105-119,119-130,130-153,168-192\n3-25,69-89,92-108,116-141,150-172\n-21-21\n-13-13,13-33\n-28-28\n144-157,157-203\n-1-1,1-33\n-19-19\n-20-20\n161-199\n-2-2,2-26,79-105,105-106,112-116,121-130,132-149,156-174\n2-17,23-44,44-96,96-142,142-144,144-148,148-162,171-189\n42-59,59-62,62-64,64-68,68-90,90-107\n23-41,46-66,66-79,79-94,108-126\n-11-11,78-100,167-193\n-5-5,5-8,10-33,33-62,62-70,70-83,83-97,97-138,138-174\n72-115,115-121,121-134,134-146\n1-22,22-44,51-69,100-112,115-118,118-133\n9-26,26-38,50-71,71-88,89-91\n4-21,21-26,29-32,32-65\n68-88,88-92\n42-90,109-130\n56-81\n42-56,56-94,97-101\n50-71,71-89,89-91,91-93,93-107,120-140\n-7-18,18-31,31-37,37-54,54-74,206-218,224-228,340-351,351-353\n-2-26,26-28,33-37,37-40,40-42,147-167,206-225,225-233,233-245,339-352,352-358\n-16-16\n114-132,132-138,138-149\n1-21,21-46,127-174\n33-51,67-85,135-164,164-180\n161-199\n223-250,252-257\n222-246\n287-306,306-334,334-354\n254-272,280-305,305-309,309-338,344-358\n7-33,89-102,108-115,115-125,136-152,155-165,168-183,183-203,241-259,343-361\n109-127,144-166,166-199,199-218,225-243,345-363\n93-116\n92-114\n61-84,84-100\n-1-1,1-6,6-16,16-31,31-33,33-36,36-48,48-54,74-106\n-2-2,2-14,14-17,17-22,22-42,47-70,76-104\n-1-1,1-21,31-50,82-95,95-135,135-147,171-189\n115-159,166-194\n-1-1,1-12,12-14,19-29,76-94,107-136,143-156,169-191\n-1-1,1-5,5-19,19-21,21-26,26-39,39-61,69-98,98-122,122-125,125-127,127-142,142-163,165-195\n0-3,3-8,8-24,94-111,111-115,115-117,117-119,119-147\n45-79,167-196,285-315\n51-79,173-201,287-315\n43-72\n51-72,72-84,174-201,281-300,300-325\n185-213\n181-203,265-283\n43-67,291-305,305-322\n41-69,289-306,306-317,317-335\n63-81,138-146,169-191\n50-74,163-182,183-213,287-329\n50-69,178-195,296-321\n184-202,278-298\n37-69,295-322,341-360\n37-66,294-319,322-341\n-1-1,1-41,41-46,46-80,80-89,89-91\n-3-3,3-30,77-94,94-106,108-128,128-145,145-150,150-167\n130-148,148-180\n0-3,3-5,5-33,33-80,80-82,82-84,84-90\n2-17,105-115,115-137,137-145\n-12-12\n-2-10,109-129,129-137,144-171,171-178\n5-22,22-25,25-28,28-39,44-62,113-131,131-149,149-156,156-173,173-176,176-185\n290-318,318-338,338-353\n275-283,310-345\n-7-31,31-39,39-41,41-65,65-80,80-97,97-122,122-124,124-126,126-136,136-146,146-161,161-165,165-170,170-173\n-8-15,15-17,17-19,19-36,36-39,39-52,52-60,60-78,78-86,86-100,100-108,108-134,134-136,136-156,156-172\n284-328,333-352\n285-325,331-348\n-1-1,1-3,3-16,16-25,25-46\n-3-19,99-117,117-127,212-224,224-230,230-234,234-244,244-246,250-263,263-275\n39-73,112-129,166-194\n53-76,165-195\n45-59,64-78,144-160,163-183\n32-50,55-80,80-83,83-87,87-97,121-139,159-183\n35-59,296-316\n33-50,50-58,58-61,61-65,65-76,89-107,158-178,282-308\n31-46,50-58,165-180,180-201,280-298,298-305,305-323\n289-317\n289-308\n49-67,69-85,182-200,277-295,295-315\n48-69,173-198,285-316\n46-54,56-65,65-75,137-155,161-186,186-199,300-318\n33-43,43-72,72-78,84-97,134-146,146-149,153-161,161-190,288-306\n-1-1,1-19,37-78,105-130,160-176,176-184\n154-180\n53-83\n-2-2,2-7,7-13,13-27,41-70,70-79,79-81,81-84,104-120,120-137,156-177,177-179,179-181\n130-153,153-172,172-178,178-182\n-13-13,15-30,35-73,73-98,99-107,107-119,164-196\n-12-12,12-36,42-65,72-85,85-88,90-104,104-112,112-157,157-179\n23-34,48-82,151-168,168-192\n6-24,24-26,26-41\n116-125,127-135,140-163,163-173,173-179,179-181\n0-4,4-12,19-57,57-89\n7-27,27-35,41-73,73-94,117-148\n29-67,151-180\n7-25,92-127,150-168\n25-39,39-42,42-47,47-71,71-84,84-101,160-200\n0-10,10-24,24-30,30-40,40-42,42-63,63-72,72-89,89-91\n-20-20,23-41,41-50,50-68,72-85,85-96,102-131,131-135,135-141,141-147,147-174,174-186\n-5-5,5-8,8-27,43-73\n29-47,47-80,153-207\n-13-13,13-35,35-37,37-86,86-90\n48-73,167-193\n135-178,178-182\n0-5,5-21,21-26,26-35,35-69\n-3-3,3-16,16-53\n1-19,50-72,100-108,119-127,127-135,135-146,164-177,177-183\n14-25,27-32,32-45,47-65,76-90,90-106,119-139,139-157\n161-183\n161-182\n-7-2,47-67,297-315\n4-31,44-52,65-89,89-91\n0-10,21-67\n44-59,59-78,165-180\n158-188,256-274\n158-188,261-279\n0-22,30-77,80-100\n41-81,147-171,171-189\n0-24,84-102,109-134,134-151,171-189\n3-8,13-20,33-47,51-70,70-106,125-142,142-148,148-163,163-171,171-172,178-182\n127-158,159-179,179-181\n171-189\n-5-6,6-37,39-45,47-66,71-97,104-130,130-159,159-172\n-10-14,14-18,18-34,34-38,38-56,61-88,135-157,157-170\n7-28,28-40,40-48,108-112,121-142,142-149,149-158,158-176\n4-37,37-41,41-54,140-161,166-184\n-12-12,25-44,44-46,46-66,71-82,145-156\n56-82,145-163,171-189,285-301,301-323\n39-56,56-72,170-189,283-322\n4-14,14-18,23-27,27-51,58-76,90-108,125-156,156-176\n-2-2,2-8,18-29,29-40,40-42,42-60,65-70,73-92,104-108,131-173,176-184\n0-27,27-61,61-90\n17-50,52-71,71-79,79-89,89-105,136-170,170-173,173-187\n-4-4,4-18,18-26,47-76,79-97,111-127,127-136,139-153,166-194\n23-54,54-64,71-86,86-89,89-91\n-2-2,2-14,14-16,16-40,40-46,78-97,102-120,120-135,139-166\n37-55,62-80,156-175\n2-12,116-135,158-176,214-228,228-231,231-236,236-253,343-353,353-357\n-6-12,102-120,156-167,167-175,175-186,214-225,225-228,228-235,235-253,279-297\n12-23,23-43,43-59,65-76,76-84,84-90,90-112,112-119,132-142,144-166,166-177\n25-54,67-92,150-173\n23-50,50-69,78-98,123-131,143-164,166-194\n29-47,71-89,116-134,144-165,168-184,193-211,215-233,246-270,272-290,327-335\n18-38,40-58,324-342\n17-37,40-58\n22-34,37-40,40-54,54-74,74-96,124-142,145-163\n10-35,49-67,88-110,114-128,133-151\n-10-10,26-44,46-57,57-77,83-101,138-156,175-185\n38-56,161-179,198-216,279-301,305-323\n80-106,144-157,157-161,161-199\n-7-7,7-21,21-37,37-41,41-64,65-101,101-122,125-136,136-138,138-140,140-163,163-179,179-181\n-1-1,1-21,21-44,81-118,131-147,147-152,152-167\n-9-9,9-41,83-104,104-116,116-124,124-136,136-158,158-163\n7-23,28-46,127-145,224-234,305-318,318-321,321-347,347-355,355-364\n80-91,91-99,99-126,140-158,199-217,219-227,306-318,318-321,325-332,343-363\n-15-15,51-73\n0-27,27-43,43-47,47-71,71-73,73-89,89-91\n43-67,71-94,165-195\n-11-11,11-56,56-77,77-84,84-96\n-5-5,5-25,102-119,119-151,151-152,164-178,178-182\n-2-17,17-37,37-44,44-56,56-80,80-90,90-92,92-94,94-96,96-100,100-110,110-116,116-125,125-133,133-147,147-152,152-168,168-172,172-174,174-178\n-27-20,20-32,32-47,47-68,77-80,80-102,102-116,116-123,125-150\n-14-14,21-39,63-81,86-108\n-10-18,23-37,88-106\n42-79,79-99,168-192\n37-69,160-178,178-203,278-298,298-319\n36-62,64-81,157-168,168-188,188-206,268-287,290-307,307-317\n5-26,138-159,163-178,178-182\n23-41,43-68,71-82,89-91\n-1-1,1-31,31-64,64-66,66-71,71-88,88-90\n0-5,5-31,31-76,76-104\n67-113\n118-136,154-179,179-181\n-8-13,42-53,53-59,59-67,67-73,73-80,80-93,93-109,109-123,123-131,131-135,135-139,139-142,142-162,162-165,165-172\n-5-6,11-20,50-85,89-103,103-128,135-154,154-171\n11-14,14-24,24-29,29-31,31-54,54-77,96-132,132-135,135-152,155-191\n3-33,33-54,54-74,74-89,89-91,91-118,118-147,157-183\n244-264,264-274,274-280,280-284,284-290,290-294,294-308,327-345\n247-260,260-273,273-280,280-289,289-308,335-353\n290-315\n293-313\n-9-9,13-38,38-78,78-102\n-11-11,11-15,15-28,28-39,39-48,48-57,57-89,89-91\n113-129,129-153\n0-18,18-20,20-23,23-32,32-35,35-58,58-82,84-96\n-2-2,2-19,106-133\n-12-12,12-18,18-24,24-49,81-111,111-126,126-128,128-139,139-143,143-145,145-164\n-1-1,1-3,3-6,6-14,14-28,32-44,44-52,52-53,75-105\n-1-1,1-20,21-24,24-29,29-88,88-92\n-3-7,9-13,13-15,29-42,54-80,87-99,99-110,158-173\n-1-32,82-104,104-108,108-122,157-175\n-11-11,13-32,56-74,82-100,115-133,149-167\n-10-10,10-32,32-48,68-84,84-89,89-98,98-118,118-122,122-138,138-143,143-148,148-157,168-192\n-9-9,9-12,12-41,41-44,44-52,52-78,78-88,88-92\n8-20,20-23,25-45,54-72,97-105,116-128,130-144,148-163,164-182\n0-16,16-23,23-28,28-29,48-66,70-88,93-115,143-173\n-11-11,11-35,35-54,54-81,82-98\n17-28,45-63,63-64,69-79\n-8-8,8-45,45-61,61-81,81-105,105-110,110-122,133-167,167-173,173-187\n33-54,70-88,154-172\n17-30,34-55,55-69,138-153,157-165,168-186,193-211,239-249,314-332,347-365\n6-18,30-48,67-92,92-104,131-145,150-164,169-187,233-248,248-254,271-289,308-330,347-355\n15-35,77-99,188-200,200-203,207-212,212-220,220-231,250-268,302-318,318-339\n5-23,120-143,178-196,208-225,227-236,236-240,245-250,256-260,265-275,313-325,325-328,332-344\n22-43,49-67,75-93,93-105,128-146,148-166,170-190\n-5-5,5-15,28-47,47-52,52-67,67-78,78-83,83-103,106-114,140-154,154-157,157-159,159-179,179-181\n-11-11,11-45,81-96,96-100,100-116,116-138,138-152\n0-20,23-58,58-63,63-77,77-95,95-118,118-122,122-124,124-133,133-145,145-148,148-153,153-157,157-162,162-178,178-182\n-2-2,2-28,92-103,103-107,107-125,125-145,145-147,176-184\n-5-5,5-15,15-29,41-59,65-75,75-92,99-118,118-125,125-130,130-152\n9-27,41-59,94-105,105-113,113-118,122-148\n5-25,25-33,35-40,40-49,54-72,135-147,163-197\n-3-3,3-5,5-28,95-128,128-146\n14-38,58-76,86-112,127-156,156-162,169-171,173-187\n32-45,45-47,47-79,165-176,176-184\n-12-12,16-31,100-112,114-118,118-126,126-134,134-145\n49-74,171-193,275-286,286-310\n27-38,45-78,164-186,186-203,289-320\n-7-7,7-11,11-39,42-58,58-70,83-95,106-108,108-125,125-151\n-32-32,32-66,66-75,75-96,103-171\n72-90,92-110,129-133,133-157,163-178\n144-153,157-176,176-178,178-180\n-23-23,23-25,25-55,105-124,124-132,132-135,135-144,144-147\n110-122,122-128,128-131,131-148,148-162,162-171,173-201,310-334,334-354,354-383\n4-17,126-143,143-145,145-168,170-201,225-233,249-267,301-319,319-335,335-364\n232-250,263-283,294-303,327-357\n263-281,285-297,315-333,333-336,336-356\n1-3,3-5,5-15,15-21,21-36,36-41,41-43,43-51,51-56,56-69,81-100,123-143,143-148,148-157,157-174,218-222,222-249,270-290,306-322,322-355,355-361\n6-10,10-13,13-26,51-77,113-134,134-139,139-157,184-199,199-202,202-228,254-278,278-281,288-303,319-340,340-345,345-355,355-366\n-7-7,7-16,109-126,126-139,139-145,145-155,155-158,158-180\n135-146,146-168,168-176,176-180\n156-182,198-234\n275-295,295-315,315-324,324-347,347-357\n-8-8,14-29,29-37,37-42,131-149,149-158,158-162,162-165,165-178,178-182\n-12-12,12-14,14-35,35-46,46-67,67-71,71-84,84-90,90-157,161-175,175-180\n54-62,76-103,103-107,107-120,120-142\n-2-2,2-15,15-17,17-38,65-86,86-99,99-111,111-120,131-153,153-171\n0-18,29-44,115-128,128-141,141-156,167-193\n55-78,78-114,131-149\n56-76,76-116\n56-71,71-103,108-122\n15-24,40-58,58-68,68-70,70-89\n54-84,84-89,89-91\n41-59,59-64,70-110\n55-106,111-128\n109-127,127-129,129-133,133-160,160-163\n43-59,59-61,61-83\n52-90\n51-106,111-118,118-130\n43-65\n50-105\n71-89,89-91,91-111,176-184\n48-66,66-94\n60-85,85-87,87-90\n59-74,74-106\n67-117\n52-89,89-91\n55-125\n0-18,18-34,81-135\n45-84,84-87,87-93\n105-127,133-180\n19-46\n23-41\n16-34,52-66,66-68,71-85,85-95\n1-7,7-27,27-33,33-48,48-70,70-90\n61-78,78-102\n138-159,159-161,161-178,178-182\n4-26,26-74,74-90\n1-10,10-14,19-24,125-152,152-170\n308-348\n-8-16,244-261,261-271,283-305,305-318,318-320,320-324,324-326,326-330,330-348\n50-76,78-88,159-169\n34-50,52-80,159-178,182-200,290-301,301-319\n138-153,153-165,165-173,173-198\n46-64,64-81,86-108,116-132,132-138,138-169\n43-61,74-88,88-110,115-124,145-169\n-9-20,20-60,111-139,139-151,151-171\n-6-35,35-40,40-65,84-104,119-129,129-132,132-139,141-146,151-172\n-4-18,22-46,161-176\n0-18,24-42,54-72,79-88,90-108\n5-19,19-29,29-61,81-85,148-159,159-164,164-166,166-169,169-184\n-7-23,23-28,28-42,42-68,113-121,123-130,130-144,144-148,148-173\n0-42,42-74,74-77,77-104,104-140,140-143,143-160,160-180\n1-8,26-38,38-45,45-81,81-99\n129-163,163-180\n102-125,133-160,160-200\n80-102,102-110,110-125,125-138,138-160\n147-165,165-172,172-188\n-15-15,15-44,97-112,112-137\n-7-7,14-42,42-52,52-73,73-92,92-106,106-110,110-112,112-133,133-154,154-173,173-178,178-182\n143-164,164-168,168-174,174-195,195-221\n146-163,163-165,165-173,173-194,194-223\n39-56,56-60,60-84,148-160,160-163,163-180\n25-40,40-63,63-66,66-85,164-177,177-183\n48-60,60-77,163-191,288-308\n46-68,169-199,272-288,288-307\n38-55,55-67,157-169,169-172,174-198,289-311\n166-185\n166-185\n46-68,170-190,288-311\n47-70,70-85,169-190,285-308\n-1-1,1-5,5-20,162-198\n-1-1,1-19,19-27,27-42,42-62,72-92,127-149,152-172,172-188\n18-33,37-46,53-60,60-65,65-68,72-93,117-137,155-179,179-181\n284-310\n298-317\n177-207,265-283\n49-84,289-299,299-314\n45-72,72-81,81-91,165-186,186-201,290-310\n38-57,57-89,280-299,299-319\n34-55,55-78,78-91,165-194,295-313\n50-72,166-194\n128-149,157-176\n148-178\n-14-14,46-68,68-90,90-108\n52-64,64-80,80-84,84-107\n52-80,170-197,294-320\n52-77,171-196,293-319\n-16-12,12-41\n-7-21,59-83,155-169\n157-180\n-15-15,15-23,23-30,30-50,57-87\n-5-12,12-29,29-33,33-57,64-94,94-116,118-141,141-148,148-155,159-175\n-5-42,42-68,74-91,93-99,99-107,109-124,124-137,137-157,157-175\n140-149,152-154,154-158,162-198\n140-169,170-175,175-179,179-181\n-3-3,3-7,7-14,14-45\n-17-26,26-49,49-70,96-112,112-161\n1-7,7-42,42-69,74-92,100-118,118-155,155-159,159-181\n-4-18,23-41,106-117,117-126,126-136\n3-29,50-67,67-82,112-137,137-151\n-3-24,50-75,119-140\n263-284,292-314,314-328,331-349\n263-284,284-288,288-314,314-319,319-328,328-346\n25-45\n43-78,128-151\n0-4,4-15,46-81,127-142,142-155,155-160,160-166,166-173,173-177,177-180\n6-24\n0-13,13-29,38-57,57-73,73-78,93-115,115-123,123-138,138-140,140-169,169-191\n42-79,151-167,167-193\n-22-22,22-35,35-60,60-96,101-146,146-171,171-179,179-181\n23-42,42-60,60-81,157-177,177-183\n3-13,13-39,51-62,69-71,76-98,106-132,145-167\n-18-18\n152-168,168-170,170-190\n0-27\n-1-1,1-38\n-24-24\n-15-4,4-7,7-14,14-16,16-32,47-65,98-106,174-192\n46-67\n-12-12,31-44,44-71\n0-31,79-101\n30-48,172-190,280-306,306-323\n264-293,299-315,320-338\n37-48,48-66,288-319\n281-316,316-332\n52-76\n-2-2,2-25,25-33,33-43\n-3-3,3-16,93-111,111-116,116-120,120-138\n-1-1,1-4,4-21,21-40,40-50,50-69\n116-140,140-142,142-163\n163-180\n-9-9,15-33,87-110,110-144\n56-90\n-23-23,23-54\n-13-13,13-15,15-36\n0-15,15-67,67-93,115-161,167-173,173-177,177-180\n6-25,25-50,50-54,54-65,65-83,95-128,128-146,146-148,148-164,169-191\n0-18,18-47,47-65,65-71,71-89,89-91\n-6-6,6-35,35-61\n88-113\n86-113\n83-112\n83-104\n85-106\n302-326\n82-109,301-319\n261-280,306-334\n183-208\n54-77,105-133\n0-2,2-4,4-27,31-48,48-69,69-111\n52-67,71-87,87-93\n125-142,142-147,147-150,152-158,158-180\n-14-14,50-64,64-75,75-105\n-4-10,10-14,14-18,18-62\n16-42,42-68\n27-51,51-70\n26-62\n3-17,22-32,32-37,37-42,42-75\n47-78\n32-44,44-76\n-13-13,158-180\n0-25,25-36,36-55,55-72,75-87,87-98,98-107,107-136,136-180\n-2-2,2-16,86-111,130-150,153-180\n-9-11,13-30,30-46,176-197,292-311,311-315,318-351\n25-45,49-57,144-162,176-194,201-219,224-244,262-280,305-317,341-361\n2-14,14-22,22-33,63-81,145-155,155-159,164-174,192-210,237-255,305-323,332-347,347-350,350-353,353-354,356-362\n-3-10,10-17,29-33,33-37,42-52,132-150,178-196,202-220,338-357\n48-80\n124-151,155-160\n2-16,18-35,82-115,125-144,149-164,164-170,170-178\n27-57,170-181,181-189,189-200\n-3-10,13-31,33-49,53-64,64-72,72-83,197-222,320-339,339-351\n17-45,45-50,50-63\n133-150,150-157,157-177,177-179,179-181\n52-74,74-85,85-95\n-16-16,21-30,30-49,124-141,141-152,152-164,164-177\n8-39,61-86,86-94\n80-134\n103-133,133-151,151-166,166-194\n88-106,106-127,141-159,164-177';
  result = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(data_0, '\n');
  return result;
}
;
defineClass(1219, 1, {1:1});
cggl.Lcom_actelion_research_chem_conf_TorsionDBData_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDBData', 1219, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDescriptor = function $clinit_TorsionDescriptor(){
  carcc.$clinit_TorsionDescriptor = emptyMethod;
  jl.$clinit_Object();
  carcc.TORSION_EQUIVALENCE_TOLERANCE = 3.141592653589793 / 12;
}
;
carcc.TorsionDescriptor = function TorsionDescriptor(torsion, maxTorsion){
  carcc.$clinit_TorsionDescriptor();
  Object_0.call(this);
  this.$init_60();
  this.mTorsion = torsion;
  this.mMaxTorsion = maxTorsion;
}
;
defineClass(294, 1, {294:1, 10:1, 1:1}, carcc.TorsionDescriptor);
_.$init_60 = function $init_60(){
}
;
_.compareTo_1 = function compareTo_14(td){
  return this.compareTo_7(castTo(td, 294));
}
;
_.compareTo_7 = function compareTo_13(td){
  var dif, i;
  for (i = 0; i < this.mTorsion.length; i++) {
    dif = $wnd.Math.abs(this.mTorsion[i] - td.mTorsion[i]);
    if (dif > 0.2617993950843811 && dif < this.mMaxTorsion[i] - 0.2617993950843811)
      return dif < this.mMaxTorsion[i] / 2 ^ this.mTorsion[i] < td.mTorsion[i]?1:-1;
  }
  return 0;
}
;
_.equals_2 = function equals_8(td){
  var dif, i;
  for (i = 0; i < this.mTorsion.length; i++) {
    dif = $wnd.Math.abs(this.mTorsion[i] - td.mTorsion[i]);
    if (dif > 0.2617993950843811 && dif < this.mMaxTorsion[i] - 0.2617993950843811)
      return false;
  }
  return true;
}
;
_.toString_0 = function toString_11(){
  var i, sb;
  sb = new jl.StringBuilder;
  for (i = 0; i < this.mTorsion.length; i++) {
    sb.append_9(i == 0?'Torsions: ':', ');
    sb.append_9(caru.toString_21(this.mTorsion[i], 3) + '(' + jl.round_2(this.mMaxTorsion[i] + 0.5) + ')');
  }
  return sb.toString_0();
}
;
carcc.TORSION_EQUIVALENCE_TOLERANCE = 0;
cggl.Lcom_actelion_research_chem_conf_TorsionDescriptor_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDescriptor', 294, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDescriptorHelper = function $clinit_TorsionDescriptorHelper(){
  carcc.$clinit_TorsionDescriptorHelper = emptyMethod;
  jl.$clinit_Object();
  carcc.SYMMETRY_REDUNDANCY_ANGLE = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [2 * 3.141592653589793, 3.141592653589793, 2 * 3.141592653589793 / 3, 3.141592653589793 / 3]);
  carcc.SYMMETRY = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {35:1, 4:1, 1:1, 7:1}, 6, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 0, 0, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 0, 1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 1, 1, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 2, 3, 2])]);
}
;
carcc.TorsionDescriptorHelper = function TorsionDescriptorHelper(mol){
  carcc.$clinit_TorsionDescriptorHelper();
  Object_0.call(this);
  this.$init_61();
  this.mMol = mol;
  this.mMol.ensureHelperArrays_0(63);
  this.mRotatableBond = carcc.findRotatableBonds_0(mol);
  this.findAtomSequences();
}
;
carcc.TorsionDescriptorHelper_0 = function TorsionDescriptorHelper_0(mol, rotatableBond){
  carcc.$clinit_TorsionDescriptorHelper();
  Object_0.call(this);
  this.$init_61();
  this.mMol = mol;
  this.mMol.ensureHelperArrays_0(63);
  this.mRotatableBond = rotatableBond;
  this.findAtomSequences();
}
;
carcc.findRotatableBonds_0 = function findRotatableBonds_0(mol){
  carcc.$clinit_TorsionDescriptorHelper();
  var bond, bond0, count, isRotatableBond, rotatableBond;
  mol.ensureHelperArrays_0(7);
  isRotatableBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
  count = 0;
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    if (carcc.qualifiesAsDescriptorBond(mol, bond0)) {
      isRotatableBond[bond0] = true;
      count++;
    }
  }
  rotatableBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
  count = 0;
  for (bond = 0; bond < mol.getBonds_0(); bond++)
    if (isRotatableBond[bond])
      rotatableBond[count++] = bond;
  return rotatableBond;
}
;
carcc.getFirstNonSPAtom = function getFirstNonSPAtom(mol, startAtom, atom, maxBond){
  var i, nextAtom, nextBond;
  for (i = 0; i < 2; i++) {
    nextAtom = mol.getConnAtom_0(atom[1], i);
    if (nextAtom != atom[0]) {
      if (nextAtom == startAtom)
        return false;
      nextBond = mol.getConnBond_0(atom[1], i);
      atom[0] = atom[1];
      atom[1] = nextAtom;
      if (mol.getConnAtoms_0(nextAtom) == 1)
        return false;
      if (jsNotEquals(maxBond, null) && !mol.isMarkedAtom_0(atom[0]) && !mol.isMarkedAtom_0(atom[1]))
        maxBond[0] = $wnd.Math.max(maxBond[0], nextBond);
      if (!carcc.isLinearAtom(mol, nextAtom))
        return true;
      return carcc.getFirstNonSPAtom(mol, startAtom, atom, maxBond);
    }
  }
  return false;
}
;
carcc.getNormalizedTorsion = function getNormalizedTorsion(angle, symmetryClass){
  var limit;
  limit = carcc.SYMMETRY_REDUNDANCY_ANGLE[symmetryClass] / 2;
  while (angle < -limit)
    angle += 2 * 3.141592653589793;
  while (angle >= limit)
    angle -= carcc.SYMMETRY_REDUNDANCY_ANGLE[symmetryClass];
  return angle;
}
;
carcc.isLinearAtom = function isLinearAtom(mol, atom){
  return mol.getConnAtoms_0(atom) == 2 && mol.getAtomPi_0(atom) == 2 && mol.getAtomicNo_0(atom) <= 7;
}
;
carcc.qualifiesAsDescriptorBond = function qualifiesAsDescriptorBond(mol, bond){
  var bondAtom, chainEndAtom, connAtom, connAtoms, i, i0, i1, i2, j, maxBond, qualifiedConnAtoms;
  if (mol.getBondOrder_0(bond) != 1 || mol.isAromaticBond_0(bond) || mol.getBondRingSize_0(bond) == 3)
    return false;
  bondAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i0 = 0; i0 < 2; i0++) {
    bondAtom[i0] = mol.getBondAtom_0(i0, bond);
    if (mol.isMarkedAtom_0(bondAtom[i0]) || mol.getNonHydrogenNeighbourCount_0(bondAtom[i0]) <= 1)
      return false;
  }
  if (carcc.isLinearAtom(mol, bondAtom[0]) || carcc.isLinearAtom(mol, bondAtom[1])) {
    maxBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1, 15, 1);
    maxBond[0] = bond;
    chainEndAtom = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, 2, 0, 2);
    for (i1 = 0; i1 < 2; i1++) {
      if (carcc.isLinearAtom(mol, bondAtom[i1])) {
        chainEndAtom[i1] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
        chainEndAtom[i1][0] = bondAtom[1 - i1];
        chainEndAtom[i1][1] = bondAtom[i1];
        if (!carcc.getFirstNonSPAtom(mol, bondAtom[1 - i1], chainEndAtom[i1], maxBond))
          return false;
      }
    }
    if (jsNotEquals(maxBond, null) && bond != maxBond[0])
      return false;
    for (i2 = 0; i2 < 2; i2++)
      if (jsNotEquals(chainEndAtom[i2], null))
        bondAtom[i2] = chainEndAtom[i2][1];
  }
  for (i = 0; i < 2; i++) {
    connAtoms = mol.getConnAtoms_0(bondAtom[i]);
    if (connAtoms == 1)
      return false;
    qualifiedConnAtoms = 0;
    for (j = 0; j < connAtoms; j++) {
      connAtom = mol.getConnAtom_0(bondAtom[i], j);
      if (!mol.isMarkedAtom_0(connAtom))
        qualifiedConnAtoms++;
    }
    if (qualifiedConnAtoms < 2)
      return false;
  }
  return true;
}
;
defineClass(359, 1, {1:1}, carcc.TorsionDescriptorHelper, carcc.TorsionDescriptorHelper_0);
_.$init_61 = function $init_61(){
}
;
_.chooseSequenceEndAtom = function chooseSequenceEndAtom(rootAtom, rearAtom, halfSymmetry){
  var connAtom, i, maxRank, maxRankAtom;
  if (halfSymmetry == 1 && !this.isFlatAtom(rootAtom)) {
    if (this.mMol.getConnAtoms_0(rootAtom) == 3)
      return -1;
    if (this.mMol.getConnAtoms_0(rootAtom) == 3) {
      connAtom = this.getTerminalAtoms(rootAtom, rearAtom);
      if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[1]))
        return connAtom[2];
      if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[2]))
        return connAtom[1];
      else 
        return connAtom[0];
    }
  }
  maxRank = -1;
  maxRankAtom = -1;
  for (i = 0; i < this.mMol.getConnAtoms_0(rootAtom); i++) {
    connAtom = this.mMol.getConnAtom_0(rootAtom, i);
    if (connAtom != rearAtom && maxRank < this.mMol.getSymmetryRank_0(connAtom)) {
      maxRank = this.mMol.getSymmetryRank_0(connAtom);
      maxRankAtom = connAtom;
    }
  }
  return maxRankAtom;
}
;
_.findAtomSequences = function findAtomSequences(){
  var atom, halfSymmetry1, halfSymmetry2, i, j;
  this.mAtomSequence = initMultidimensionalArray(cggl.I_classLit, [{35:1, 4:1, 1:1, 7:1}, {6:1, 4:1, 1:1}], [6, 5], 15, [this.mRotatableBond.length, 4], 2);
  this.mRearAtom = initMultidimensionalArray(cggl.I_classLit, [{35:1, 4:1, 1:1, 7:1}, {6:1, 4:1, 1:1}], [6, 5], 15, [this.mRotatableBond.length, 2], 2);
  this.mSymmetryClass = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  atom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i = 0; i < this.mRotatableBond.length; i++) {
    for (j = 0; j < 2; j++) {
      atom[0] = this.mMol.getBondAtom_0(1 - j, this.mRotatableBond[i]);
      atom[1] = this.mMol.getBondAtom_0(j, this.mRotatableBond[i]);
      if (carcc.isLinearAtom(this.mMol, atom[1]))
        carcc.getFirstNonSPAtom(this.mMol, atom[0], atom, null);
      this.mAtomSequence[i][1 + j] = atom[1];
      this.mRearAtom[i][j] = atom[0];
    }
    halfSymmetry1 = this.getHalfSymmetry(this.mAtomSequence[i][1], this.mRearAtom[i][0]);
    halfSymmetry2 = this.getHalfSymmetry(this.mAtomSequence[i][2], this.mRearAtom[i][1]);
    this.mSymmetryClass[i] = carcc.SYMMETRY[halfSymmetry1][halfSymmetry2];
    this.mAtomSequence[i][0] = this.chooseSequenceEndAtom(this.mAtomSequence[i][1], this.mRearAtom[i][0], halfSymmetry1);
    this.mAtomSequence[i][3] = this.chooseSequenceEndAtom(this.mAtomSequence[i][2], this.mRearAtom[i][1], halfSymmetry2);
  }
}
;
_.getHalfSymmetry = function getHalfSymmetry(atom, rearAtom){
  var connAtom;
  if (this.mMol.getConnAtoms_0(atom) == 2)
    return 1;
  connAtom = this.getTerminalAtoms(atom, rearAtom);
  if (this.mMol.getConnAtoms_0(atom) == 3) {
    if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[1]))
      return this.isFlatAtom(atom)?2:1;
    else 
      return this.isFlatAtom(atom)?1:0;
  }
  if (this.mMol.getConnAtoms_0(atom) == 4) {
    if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[1]) && this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[2]))
      return 3;
    if (this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[1]) || this.mMol.getSymmetryRank_0(connAtom[0]) == this.mMol.getSymmetryRank_0(connAtom[2]) || this.mMol.getSymmetryRank_0(connAtom[1]) == this.mMol.getSymmetryRank_0(connAtom[2]))
      return 1;
  }
  return 0;
}
;
_.getTerminalAtoms = function getTerminalAtoms(atom, rearAtom){
  var connAtom, i, index_0;
  index_0 = 0;
  connAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getConnAtoms_0(atom) - 1, 15, 1);
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mMol.getConnAtom_0(atom, i) != rearAtom)
      connAtom[index_0++] = this.mMol.getConnAtom_0(atom, i);
  return connAtom;
}
;
_.getTorsionDescriptor = function getTorsionDescriptor(conformer){
  var i, maxTorsion, torsion;
  torsion = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  maxTorsion = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  for (i = 0; i < this.mRotatableBond.length; i++) {
    torsion[i] = carcc.getNormalizedTorsion(carcc.calculateTorsionExtended_0(conformer, this.mAtomSequence[i]), this.mSymmetryClass[i]);
    maxTorsion[i] = carcc.SYMMETRY_REDUNDANCY_ANGLE[this.mSymmetryClass[i]];
  }
  return new carcc.TorsionDescriptor(torsion, maxTorsion);
}
;
_.isFlatAtom = function isFlatAtom(atom){
  if (this.mMol.getAtomPi_0(atom) == 1 && this.mMol.getAtomicNo_0(atom) < 10 || this.mMol.isAromaticAtom_1(atom) || this.mMol.isFlatNitrogen_0(atom))
    return true;
  return false;
}
;
carcc.HALF_SYMMETRY_C1 = 0;
carcc.HALF_SYMMETRY_D1 = 1;
carcc.HALF_SYMMETRY_D2 = 2;
carcc.HALF_SYMMETRY_D3 = 3;
carcc.SYMMETRY_120 = 2;
carcc.SYMMETRY_180 = 1;
carcc.SYMMETRY_360 = 0;
carcc.SYMMETRY_60 = 3;
cggl.Lcom_actelion_research_chem_conf_TorsionDescriptorHelper_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDescriptorHelper', 359, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionDetail = function $clinit_TorsionDetail(){
  carcc.$clinit_TorsionDetail = emptyMethod;
  jl.$clinit_Object();
  carcc.SYMMETRY_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {35:1, 4:1, 1:1, 7:1}, 6, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 0, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 3, 3])]);
  carcc.FRAGMENT_ATOMS = 8 + 2 * 8;
  carcc.FRAGMENT_BONDS = 13 + 2 * 8;
}
;
carcc.TorsionDetail = function TorsionDetail(){
  carcc.$clinit_TorsionDetail();
  Object_0.call(this);
  this.$init_62();
  this.mFragment = new carc2.StereoMolecule_0(24, 29);
  this.mToMoleculeAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 24, 15, 1);
  this.mCentralAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mRearAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mRefAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
}
;
defineClass(286, 1, {1:1}, carcc.TorsionDetail);
_.$init_62 = function $init_62(){
}
;
_.classify = function classify(mol, bond){
  var atom, atomMask, bondInFragment, connAtom, connBond, delocalizedBondFound, esrType1, esrType2, esrTypeChanged, fatom1, fatom2, fconn1, fconn2, feature, fragBond, fragmentAtom, halfSymmetry1, halfSymmetry2, hasZ, i, i0, i1, i2, i3, i4, idcode, isInverted, isSmallRingBond, j, nonHNeighbours, preferredBond, rank1, rank2, ratom1, ratom2, ringNo, ringSet, ringSize, symmetryID, symmetryType, temp;
  this.mFragment.clear_0();
  this.mID = null;
  mol.ensureHelperArrays_0(63);
  if (mol.getBondOrder_0(bond) != 1 || mol.isAromaticBond_0(bond))
    return false;
  if (mol.getAtomicNo_0(mol.getBondAtom_0(0, bond)) == 1 || mol.getAtomicNo_0(mol.getBondAtom_0(1, bond)) == 1)
    return false;
  isSmallRingBond = mol.isSmallRingBond_0(bond);
  if (isSmallRingBond && mol.getBondRingSize_0(bond) < 6)
    return false;
  atomMask = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  this.mAlkyneAtomCount = 0;
  for (i0 = 0; i0 < 2; i0++) {
    this.mCentralAtom[i0] = mol.getBondAtom_0(i0, bond);
    this.mRearAtom[i0] = mol.getBondAtom_0(1 - i0, bond);
    while (mol.getAtomPi_0(this.mCentralAtom[i0]) == 2 && mol.getNonHydrogenNeighbourCount_0(this.mCentralAtom[i0]) == 2 && mol.getAtomicNo_0(this.mCentralAtom[i0]) < 10) {
      for (j = 0; j < mol.getConnAtoms_0(this.mCentralAtom[i0]); j++) {
        connAtom = mol.getConnAtom_0(this.mCentralAtom[i0], j);
        if (connAtom != this.mRearAtom[i0] && mol.getAtomicNo_0(connAtom) != 1) {
          if (mol.getConnAtoms_0(connAtom) == 1 || this.mAlkyneAtomCount == 2 * 8)
            return false;
          atomMask[this.mCentralAtom[i0]] = true;
          this.mRearAtom[i0] = this.mCentralAtom[i0];
          this.mCentralAtom[i0] = connAtom;
          this.mAlkyneAtomCount++;
          break;
        }
      }
    }
    nonHNeighbours = mol.getNonHydrogenNeighbourCount_0(this.mCentralAtom[i0]);
    if (nonHNeighbours > 4 || nonHNeighbours == 1)
      return false;
    atomMask[this.mCentralAtom[i0]] = true;
  }
  for (i1 = 0; i1 < 2; i1++) {
    for (j = 0; j < mol.getConnAtoms_0(this.mCentralAtom[i1]); j++) {
      connAtom = mol.getConnAtom_0(this.mCentralAtom[i1], j);
      if (mol.getAtomicNo_0(connAtom) != 1)
        atomMask[connAtom] = true;
    }
  }
  this.mToFragmentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  mol.copyMoleculeByAtoms_0(this.mFragment, atomMask, true, this.mToFragmentAtom);
  for (i2 = 0; i2 < this.mToFragmentAtom.length; i2++)
    if (this.mToFragmentAtom[i2] != -1)
      this.mToMoleculeAtom[this.mToFragmentAtom[i2]] = i2;
  this.mFragment.setFragment_0(true);
  if (isSmallRingBond) {
    bondInFragment = this.mFragment.getBond_0(this.mToFragmentAtom[this.mCentralAtom[0]], this.mToFragmentAtom[this.mCentralAtom[1]]);
    if (bondInFragment != -1) {
      this.mFragment.setBondQueryFeature_0(bondInFragment, 256, true);
      ringSet = mol.getRingSet_0();
      for (ringNo = 0; ringNo < ringSet.getSize_0(); ringNo++) {
        if (ringSet.isBondMember_0(ringNo, bond)) {
          for (i3 = 0; i3 < 2; i3++) {
            for (j = 0; j < mol.getConnAtoms_0(this.mCentralAtom[i3]); j++) {
              connAtom = mol.getConnAtom_0(this.mCentralAtom[i3], j);
              if (connAtom != this.mRearAtom[i3]) {
                if (ringSet.isAtomMember_0(ringNo, connAtom) && mol.getAtomicNo_0(connAtom) != 1) {
                  this.mFragment.setBondQueryFeature_0(this.mFragment.getBond_0(this.mToFragmentAtom[this.mCentralAtom[i3]], this.mToFragmentAtom[connAtom]), 256, true);
                  break;
                }
              }
            }
          }
        }
      }
    }
  }
  for (i4 = 0; i4 < 2; i4++) {
    if (mol.isFlatNitrogen_0(this.mCentralAtom[i4]))
      this.mFragment.setAtomQueryFeature(this.mToFragmentAtom[this.mCentralAtom[i4]], 268435456, true);
    delocalizedBondFound = false;
    for (j = 0; j < mol.getConnAtoms_0(this.mCentralAtom[i4]); j++) {
      connAtom = mol.getConnAtom_0(this.mCentralAtom[i4], j);
      if (connAtom != this.mRearAtom[i4] && mol.getAtomicNo_0(connAtom) != 1) {
        fragBond = this.mFragment.getBond_0(this.mToFragmentAtom[this.mCentralAtom[i4]], this.mToFragmentAtom[connAtom]);
        if (this.mFragment.getBondType_0(fragBond) == 64) {
          delocalizedBondFound = true;
        }
         else if (mol.getAtomicNo_0(connAtom) == 6 && !mol.isAromaticAtom_1(this.mCentralAtom[i4])) {
          feature = mol.isAromaticAtom_1(connAtom)?2:4;
          this.mFragment.setAtomQueryFeature(this.mToFragmentAtom[connAtom], feature, true);
        }
        connBond = mol.getConnBond_0(this.mCentralAtom[i4], j);
        ringSize = mol.getBondRingSize_0(connBond);
        if (ringSize == 3 || ringSize == 4)
          this.mFragment.setBondQueryFeature_0(fragBond, ringSize << 17, true);
        if (mol.isAromaticBond_0(connBond) || mol.getConnBondOrder_0(this.mCentralAtom[i4], j) == 2) {
          nonHNeighbours = mol.getNonHydrogenNeighbourCount_0(connAtom);
          hasZ = nonHNeighbours == 3;
          if (!hasZ && nonHNeighbours == 2 && !mol.isRingAtom_0(connAtom))
            hasZ = mol.getZNeighbour_0(this.mCentralAtom[1 - i4], connBond) != -1;
          if (hasZ) {
            feature = and_0(4063232, not_0(1048576));
            this.mFragment.setAtomQueryFeature(this.mToFragmentAtom[connAtom], feature, true);
          }
           else if (mol.isAromaticBond_0(connBond)) {
            feature = and_0(4063232, not_0(524288));
            this.mFragment.setAtomQueryFeature(this.mToFragmentAtom[connAtom], feature, true);
          }
        }
        if (mol.getConnBondOrder_0(this.mCentralAtom[i4], j) == 1) {
          if (mol.getNonHydrogenNeighbourCount_0(connAtom) == 4) {
            feature = and_0(4063232, not_0(2097152));
            this.mFragment.setAtomQueryFeature(this.mToFragmentAtom[connAtom], feature, true);
          }
           else if (mol.getAtomicNo_0(connAtom) == 6) {
            this.mFragment.setAtomQueryFeature(this.mToFragmentAtom[connAtom], 2097152, true);
          }
        }
      }
    }
    if (!delocalizedBondFound) {
      if (mol.isAromaticAtom_1(this.mCentralAtom[i4]))
        this.mFragment.setAtomQueryFeature(this.mToFragmentAtom[this.mCentralAtom[i4]], 2, true);
      else 
        this.mFragment.setAtomQueryFeature(this.mToFragmentAtom[this.mCentralAtom[i4]], 4, true);
    }
  }
  this.mFragment.ensureHelperArrays_0(63 | 128);
  for (i = 0; i < 2; i++) {
    fragmentAtom = this.mToFragmentAtom[this.mCentralAtom[i]];
    if (this.mFragment.getAtomParity_0(fragmentAtom) == 3) {
      if (mol.getAtomParity_0(this.mCentralAtom[i]) == 3) {
        return false;
      }
       else {
        preferredBond = this.mFragment.getAtomPreferredStereoBond_0(fragmentAtom);
        this.mFragment.setBondType_0(preferredBond, 257);
        if (this.mFragment.getBondAtom_0(0, preferredBond) != fragmentAtom) {
          this.mFragment.setBondAtom_0(1, preferredBond, this.mFragment.getBondAtom_0(0, preferredBond));
          this.mFragment.setBondAtom_0(0, preferredBond, fragmentAtom);
        }
        this.mFragment.ensureHelperArrays_0(63 | 128);
      }
    }
  }
  fatom1 = this.mToFragmentAtom[this.mCentralAtom[0]];
  fatom2 = this.mToFragmentAtom[this.mCentralAtom[1]];
  ratom1 = this.mToFragmentAtom[this.mRearAtom[0]];
  ratom2 = this.mToFragmentAtom[this.mRearAtom[1]];
  esrType1 = this.mFragment.getAtomESRType_0(fatom1);
  esrType2 = this.mFragment.getAtomESRType_0(fatom2);
  if (this.mFragment.isAtomStereoCenter_0(fatom1) && this.mFragment.isAtomStereoCenter_0(fatom2)) {
    if ((esrType1 != 0 || esrType2 != 0) && (esrType1 != esrType2 || this.mFragment.getAtomESRGroup_0(fatom1) != this.mFragment.getAtomESRGroup_0(fatom2)))
      return false;
  }
  esrTypeChanged = false;
  if (this.mFragment.isAtomStereoCenter_0(fatom1) && esrType1 != 0) {
    this.mFragment.setAtomESR_0(fatom1, 0, -1);
    esrTypeChanged = true;
  }
  if (this.mFragment.isAtomStereoCenter_0(fatom2) && esrType2 != 0) {
    this.mFragment.setAtomESR_0(fatom2, 0, -1);
    esrTypeChanged = true;
  }
  if (esrTypeChanged)
    this.mFragment.ensureHelperArrays_0(63 | 128);
  rank1 = this.mFragment.getSymmetryRank_0(fatom1);
  rank2 = this.mFragment.getSymmetryRank_0(fatom2);
  if (rank1 < rank2) {
    temp = this.mCentralAtom[0];
    this.mCentralAtom[0] = this.mCentralAtom[1];
    this.mCentralAtom[1] = temp;
    temp = this.mRearAtom[0];
    this.mRearAtom[0] = this.mRearAtom[1];
    this.mRearAtom[1] = temp;
    temp = fatom1;
    fatom1 = fatom2;
    fatom2 = temp;
    temp = ratom1;
    ratom1 = ratom2;
    ratom2 = temp;
  }
  isInverted = false;
  if (this.mFragment.isAtomStereoCenter_0(fatom1) || this.mFragment.isAtomStereoCenter_0(fatom2)) {
    if (this.mFragment.isAtomStereoCenter_0(fatom1)) {
      isInverted = this.mFragment.getAbsoluteAtomParity_0(fatom1) == 1;
    }
     else if (this.mFragment.isAtomStereoCenter_0(fatom2)) {
      isInverted = this.mFragment.getAbsoluteAtomParity_0(fatom2) == 1;
    }
    if (isInverted) {
      for (atom = 0; atom < this.mFragment.getAllAtoms_0(); atom++)
        this.mFragment.setAtomX_0(atom, -this.mFragment.getAtomX_0(atom));
      this.mFragment.ensureHelperArrays_0(63 | 128);
    }
  }
  fconn1 = this.getReferenceNeighbor(fatom1, ratom1);
  fconn2 = this.getReferenceNeighbor(fatom2, ratom2);
  this.mRefAtom[0] = fconn1 == -1?-1:this.mToMoleculeAtom[fconn1];
  this.mRefAtom[1] = fconn2 == -1?-1:this.mToMoleculeAtom[fconn2];
  idcode = this.mFragment.getIDCode_0();
  if (jsEquals(idcode, null))
    return false;
  halfSymmetry1 = this.getHalfSymmetry_0(fatom1, ratom1);
  halfSymmetry2 = this.getHalfSymmetry_0(fatom2, ratom2);
  if (halfSymmetry1 == 0 && halfSymmetry2 == 0 && (this.mFragment.getChirality_0() & ~65535) == 131072)
    symmetryType = 2;
  else 
    symmetryType = carcc.SYMMETRY_0[halfSymmetry1][halfSymmetry2];
  symmetryID = symmetryType == 0?isInverted?'<':'>':symmetryType == 1?isInverted?'-':'+':symmetryType == 3?'=':'';
  this.mID = idcode + ('' + symmetryID);
  return true;
}
;
_.getCentralAtom = function getCentralAtom(no){
  return this.mCentralAtom[no];
}
;
_.getFragment = function getFragment(){
  return this.mFragment;
}
;
_.getHalfSymmetry_0 = function getHalfSymmetry_0(atom, rearAtom){
  var connAtom, i, j, rank;
  if (this.mFragment.getConnAtoms_0(atom) == 2)
    return 1;
  connAtom = this.getTerminalAtoms_0(atom, rearAtom);
  if (this.mFragment.getConnAtoms_0(atom) == 3) {
    if (this.mFragment.getSymmetryRank_0(connAtom[0]) == this.mFragment.getSymmetryRank_0(connAtom[1]))
      return this.isFlatAtom_0(atom)?2:1;
    else 
      return this.isFlatAtom_0(atom)?1:0;
  }
  if (this.mFragment.getConnAtoms_0(atom) == 4) {
    for (i = 0; i < connAtom.length; i++) {
      rank = this.mFragment.getSymmetryRank_0(connAtom[i]);
      for (j = i + 1; j < connAtom.length; j++)
        if (rank == this.mFragment.getSymmetryRank_0(connAtom[j]))
          return 1;
    }
  }
  return 0;
}
;
_.getID = function getID(){
  return this.mID;
}
;
_.getRearAtom = function getRearAtom(no){
  return this.mRearAtom[no];
}
;
_.getReferenceAtom = function getReferenceAtom(no){
  return this.mRefAtom[no];
}
;
_.getReferenceNeighbor = function getReferenceNeighbor(atom, remoteBondAtom){
  var candidate, conn, connHandled, connRank, equalRankFound, i, j, maxConn, maxRank, symConn;
  maxConn = -1;
  maxRank = -1;
  symConn = -1;
  connHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mFragment.getConnAtoms_0(atom), 16, 1);
  for (i = 0; i < this.mFragment.getConnAtoms_0(atom); i++) {
    if (!connHandled[i]) {
      conn = this.mFragment.getConnAtom_0(atom, i);
      if (conn != remoteBondAtom) {
        connRank = this.mFragment.getSymmetryRank_0(conn);
        if (maxRank < connRank) {
          equalRankFound = false;
          for (j = i + 1; j < this.mFragment.getConnAtoms_0(atom); j++) {
            candidate = this.mFragment.getConnAtom_0(atom, j);
            if (candidate != remoteBondAtom && this.mFragment.getSymmetryRank_0(candidate) == connRank) {
              connHandled[j] = true;
              if (equalRankFound)
                return conn;
              equalRankFound = true;
            }
          }
          if (!equalRankFound) {
            maxRank = connRank;
            maxConn = conn;
          }
           else {
            symConn = conn;
          }
        }
      }
    }
  }
  if (maxConn == -1)
    if (this.isFlatAtom_0(atom))
      return symConn;
  return maxConn;
}
;
_.getTerminalAtoms_0 = function getTerminalAtoms_0(atom, rearAtom){
  var connAtom, i, index_0;
  index_0 = 0;
  connAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragment.getConnAtoms_0(atom) - 1, 15, 1);
  for (i = 0; i < this.mFragment.getConnAtoms_0(atom); i++)
    if (this.mFragment.getConnAtom_0(atom, i) != rearAtom)
      connAtom[index_0++] = this.mFragment.getConnAtom_0(atom, i);
  return connAtom;
}
;
_.isFlatAtom_0 = function isFlatAtom_0(atom){
  return this.mFragment.getAtomPi_0(atom) == 1 && this.mFragment.getAtomicNo_0(atom) < 10 || this.mFragment.isAromaticAtom_1(atom) || this.mFragment.isFlatNitrogen_0(atom);
}
;
_.mAlkyneAtomCount = 0;
carcc.FRAGMENT_ATOMS = 0;
carcc.FRAGMENT_BONDS = 0;
carcc.HALF_SYMMETRY_C1_0 = 0;
carcc.HALF_SYMMETRY_D1_0 = 1;
carcc.HALF_SYMMETRY_D2_0 = 2;
carcc.MAX_TRIPLE_BONDS = 8;
carcc.SYMMETRY_C1C1_OR_C1D1 = 0;
carcc.SYMMETRY_C1D2 = 1;
carcc.SYMMETRY_D1D1 = 2;
carcc.SYMMETRY_D1D2_OR_D2D2 = 3;
cggl.Lcom_actelion_research_chem_conf_TorsionDetail_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionDetail', 286, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionInfo = function $clinit_TorsionInfo(){
  carcc.$clinit_TorsionInfo = emptyMethod;
  jl.$clinit_Object();
}
;
carcc.TorsionInfo = function TorsionInfo(symmetryClass){
  carcc.$clinit_TorsionInfo();
  Object_0.call(this);
  this.$init_63();
  this.symmetryClass = symmetryClass;
}
;
carcc.TorsionInfo_0 = function TorsionInfo_0(ti){
  carcc.$clinit_TorsionInfo();
  var i;
  Object_0.call(this);
  this.$init_63();
  this.symmetryClass = ti.symmetryClass;
  if (jsNotEquals(ti.angle, null)) {
    this.angle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, ti.angle.length, 15, 1);
    for (i = 0; i < this.angle.length; i++)
      this.angle[i] = narrow_short(360 - ti.angle[this.angle.length - i - 1]);
  }
  if (jsNotEquals(ti.range, null)) {
    this.range = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [ti.range.length, 2], 2);
    for (i = 0; i < this.range.length; i++) {
      this.range[i][0] = narrow_short(360 - ti.range[this.angle.length - i - 1][1]);
      this.range[i][1] = narrow_short(360 - ti.range[this.angle.length - i - 1][0]);
    }
  }
  if (jsNotEquals(ti.frequency, null)) {
    this.frequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, ti.frequency.length, 15, 1);
    for (i = 0; i < this.frequency.length; i++)
      this.frequency[i] = ti.frequency[this.frequency.length - i - 1];
  }
  if (jsNotEquals(ti.binSize, null)) {
    this.binSize = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, ti.binSize.length, 15, 1);
    for (i = 0; i < this.binSize.length; i++)
      this.binSize[i] = ti.binSize[this.binSize.length - i - 1];
  }
}
;
defineClass(157, 1, {157:1, 1:1}, carcc.TorsionInfo, carcc.TorsionInfo_0);
_.$init_63 = function $init_63(){
}
;
_.get360DegreeAngles = function get360DegreeAngles(){
  var fullAngle, i, i0, i1, i2, i3, i4, i5, length_0;
  fullAngle = null;
  switch (this.symmetryClass) {
    case 1:
      fullAngle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2 * this.angle.length, 15, 1);
      for (i0 = 0; i0 < this.angle.length; i0++) {
        fullAngle[i0] = this.angle[i0];
        fullAngle[this.angle.length + i0] = narrow_short(180 + this.angle[i0]);
      }

      return fullAngle;
    case 2:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[this.angle.length - 1] == 180?this.angle.length - 1:this.angle.length;
      length_0 = i2 - i1;
      fullAngle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, this.angle.length + length_0, 15, 1);
      for (i3 = 0; i3 < this.angle.length; i3++)
        fullAngle[i3] = this.angle[i3];
      for (i4 = i1; i4 < i2; i4++)
        fullAngle[fullAngle.length - 1 - i4 + i1] = narrow_short(360 - this.angle[i4]);
      return fullAngle;
    case 3:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[this.angle.length - 1] == 90?this.angle.length - 1:this.angle.length;
      length_0 = i2 - i1;
      fullAngle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2 * this.angle.length + 2 * length_0, 15, 1);
      for (i5 = 0; i5 < this.angle.length; i5++) {
        fullAngle[i5] = this.angle[i5];
        fullAngle[this.angle.length + length_0 + i5] = narrow_short(180 + this.angle[i5]);
      }

      for (i = i1; i < i2; i++) {
        fullAngle[this.angle.length + length_0 - 1 - i + i1] = narrow_short(180 - this.angle[i]);
        fullAngle[fullAngle.length - 1 - i + i1] = narrow_short(360 - this.angle[i]);
      }

      return fullAngle;
    default:return this.angle;
  }
}
;
_.get360DegreeFrequencies = function get360DegreeFrequencies(){
  var fullFrequency, i, i0, i1, i2, i3, i4, i5, length_0, size_0;
  fullFrequency = null;
  size_0 = this.frequency.length;
  switch (this.symmetryClass) {
    case 1:
      fullFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2 * size_0, 15, 1);
      for (i0 = 0; i0 < size_0; i0++) {
        fullFrequency[i0] = this.frequency[i0];
        fullFrequency[size_0 + i0] = this.frequency[i0];
      }

      return fullFrequency;
    case 2:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[size_0 - 1] == 180?size_0 - 1:size_0;
      length_0 = i2 - i1;
      fullFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, size_0 + length_0, 15, 1);
      for (i3 = 0; i3 < size_0; i3++)
        fullFrequency[i3] = this.frequency[i3];
      for (i4 = i1; i4 < i2; i4++)
        fullFrequency[fullFrequency.length - 1 - i4 + i1] = this.frequency[i4];
      return fullFrequency;
    case 3:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[size_0 - 1] == 90?size_0 - 1:size_0;
      length_0 = i2 - i1;
      fullFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2 * size_0 + 2 * length_0, 15, 1);
      for (i5 = 0; i5 < size_0; i5++) {
        fullFrequency[i5] = this.frequency[i5];
        fullFrequency[size_0 + length_0 + i5] = this.frequency[i5];
      }

      for (i = i1; i < i2; i++) {
        fullFrequency[size_0 + length_0 - 1 - i + i1] = this.frequency[i];
        fullFrequency[fullFrequency.length - 1 - i + i1] = this.frequency[i];
      }

      return fullFrequency;
    default:return this.frequency;
  }
}
;
_.get360DegreeRanges = function get360DegreeRanges(){
  var fullRange, i, i0, i1, i2, i3, i4, i5, length_0, size_0;
  fullRange = null;
  size_0 = this.range.length;
  switch (this.symmetryClass) {
    case 1:
      fullRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2 * size_0, 2], 2);
      for (i0 = 0; i0 < size_0; i0++) {
        fullRange[i0][0] = this.range[i0][0];
        fullRange[i0][1] = this.range[i0][1];
        fullRange[size_0 + i0][0] = narrow_short(180 + this.range[i0][0]);
        fullRange[size_0 + i0][1] = narrow_short(180 + this.range[i0][1]);
      }

      return fullRange;
    case 2:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[size_0 - 1] == 180?size_0 - 1:size_0;
      length_0 = i2 - i1;
      fullRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [size_0 + length_0, 2], 2);
      for (i3 = 0; i3 < size_0; i3++) {
        fullRange[i3][0] = this.range[i3][0];
        fullRange[i3][1] = this.range[i3][1];
      }

      for (i4 = i1; i4 < i2; i4++) {
        fullRange[fullRange.length - 1 - i4 + i1][0] = narrow_short(360 - this.range[i4][1]);
        fullRange[fullRange.length - 1 - i4 + i1][1] = narrow_short(360 - this.range[i4][0]);
      }

      return fullRange;
    case 3:
      i1 = this.angle[0] == 0?1:0;
      i2 = this.angle[size_0 - 1] == 90?size_0 - 1:size_0;
      length_0 = i2 - i1;
      fullRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2 * size_0 + 2 * length_0, 2], 2);
      for (i5 = 0; i5 < size_0; i5++) {
        fullRange[i5][0] = this.range[i5][0];
        fullRange[i5][1] = this.range[i5][1];
        fullRange[size_0 + length_0 + i5][0] = narrow_short(180 + this.range[i5][0]);
        fullRange[size_0 + length_0 + i5][1] = narrow_short(180 + this.range[i5][1]);
      }

      for (i = i1; i < i2; i++) {
        fullRange[size_0 + length_0 - 1 - i + i1][0] = narrow_short(180 - this.range[i][1]);
        fullRange[size_0 + length_0 - 1 - i + i1][1] = narrow_short(180 - this.range[i][0]);
        fullRange[fullRange.length - 1 - i + i1][0] = narrow_short(360 - this.range[i][1]);
        fullRange[fullRange.length - 1 - i + i1][1] = narrow_short(360 - this.range[i][0]);
      }

      return fullRange;
    default:return this.range;
  }
}
;
_.mergeAngles = function mergeAngles(mergedAngle, iTarget, iDelete, range1, range2){
  var i, iNew, newAngle, newFrequency, newRange, newSize;
  this.angle[iTarget] = narrow_short(mergedAngle);
  this.frequency[iTarget] = narrow_short(this.frequency[iTarget] + this.frequency[iDelete]);
  this.range[iTarget][0] = narrow_short(range1);
  this.range[iTarget][1] = narrow_short(range2);
  newSize = this.angle.length - 1;
  newAngle = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, newSize, 15, 1);
  newFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, newSize, 15, 1);
  newRange = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 7:1, 49:1}, 16, newSize, 0, 2);
  iNew = 0;
  for (i = 0; i < this.angle.length; i++) {
    if (i != iDelete) {
      newAngle[iNew] = this.angle[i];
      newFrequency[iNew] = this.frequency[i];
      newRange[iNew] = this.range[i];
      iNew++;
    }
  }
  this.angle = newAngle;
  this.frequency = newFrequency;
  this.range = newRange;
}
;
_.mergeTorsions_0 = function mergeTorsions_0(mergeSpan){
  var additionalFrequency, angle1, angle2, i, i1, i10, i2, i20, mergedAngle, minAngleDif, minIndex, startIndex;
  additionalFrequency = 0;
  while (this.angle.length != 0) {
    if (this.angle.length == 1) {
      if (this.symmetryClass == 1 || this.symmetryClass == 0)
        break;
      else if (this.symmetryClass == 2 && (this.angle[0] == 0 || this.angle[0] == 180))
        break;
      else if (this.symmetryClass == 3 && (this.angle[0] == 0 || this.angle[0] == 90))
        break;
    }
    startIndex = this.angle[0] != 0 && (this.symmetryClass == 2 || this.symmetryClass == 3)?-1:0;
    minIndex = -1;
    minAngleDif = 2147483647;
    for (i10 = startIndex; i10 < this.angle.length; i10++) {
      i20 = i10 + 1;
      angle1 = i10 >= 0?this.angle[i10]:-this.angle[0];
      angle2 = i20 < this.angle.length?this.angle[i20]:this.symmetryClass == 1?this.angle[0] + 180:this.symmetryClass == 2?360 - this.angle[this.angle[i10] == 180?i10 - 1:i10]:this.symmetryClass == 3?180 - this.angle[this.angle[i10] == 90?i10 - 1:i10]:this.angle[0] + 360;
      if (minAngleDif > angle2 - angle1) {
        minAngleDif = angle2 - angle1;
        minIndex = i10;
      }
    }
    if (minAngleDif > mergeSpan)
      break;
    i1 = minIndex;
    i2 = i1 + 1;
    if (i1 == -1) {
      additionalFrequency += this.frequency[0];
      this.angle[0] = 0;
      this.frequency[0] = narrow_short(this.frequency[0] * 2);
      this.range[0][0] = -this.range[0][1];
    }
     else if (i2 < this.angle.length) {
      mergedAngle = this.mergedAngle(i1, i2, this.angle[i2]);
      this.mergeAngles(mergedAngle, i1, i2, this.range[i1][0], this.range[i2][1]);
    }
     else if (this.symmetryClass == 1) {
      i2 = 0;
      mergedAngle = this.mergedAngle(i1, i2, this.angle[i2] + 180);
      if (mergedAngle <= 180)
        this.mergeAngles(mergedAngle, i1, i2, this.range[i1][0], this.range[i2][1] + 180);
      else 
        this.mergeAngles(mergedAngle - 180, i2, i1, this.range[i2][0], this.range[i1][1] - 180);
    }
     else if (this.symmetryClass == 2) {
      i2 = this.angle[i1] == 180?i1 - 1:i1;
      if (this.angle[i1] < 180) {
        additionalFrequency += this.frequency[i1];
        this.angle[i1] = 180;
        this.frequency[i1] = narrow_short(this.frequency[i1] * 2);
        this.range[i1][1] = narrow_short(360 - this.range[i1][0]);
      }
       else {
        (jl.$clinit_System() , jl.out_0).println_0('WARNING: TorsionDB - Should have caught the symmetrical situation one peak earlier.');
        mergedAngle = this.mergedAngle(i1, i2, this.angle[i2]);
        this.mergeAngles(mergedAngle, i2, i1, this.range[i2][0], this.range[i1][1]);
      }
    }
     else if (this.symmetryClass == 3) {
      i2 = this.angle[i1] == 90?i1 - 1:i1;
      if (this.angle[i1] < 90) {
        additionalFrequency += this.frequency[i1];
        this.angle[i1] = 90;
        this.frequency[i1] = narrow_short(this.frequency[i1] * 2);
        this.range[i1][1] = narrow_short(180 - this.range[i1][0]);
      }
       else {
        (jl.$clinit_System() , jl.out_0).println_0('WARNING: TorsionDB - Should have caught the symmetrical situation one peak earlier.');
        mergedAngle = this.mergedAngle(i1, i2, this.angle[i2]);
        this.mergeAngles(mergedAngle, i2, i1, this.range[i2][0], this.range[i1][1]);
      }
    }
     else {
      i2 = 0;
      mergedAngle = this.mergedAngle(i1, i2, this.angle[i2] + 360);
      if (mergedAngle <= 360)
        this.mergeAngles(mergedAngle, i1, i2, this.range[i1][0], this.range[i2][1] + 360);
      else 
        this.mergeAngles(mergedAngle - 360, i2, i1, this.range[i2][0], this.range[i1][1] - 360);
    }
  }
  if (additionalFrequency != 0)
    for (i = 0; i < this.frequency.length; i++)
      this.frequency[i] = narrow_short(jl.round_2(100 * this.frequency[i] / (100 + additionalFrequency)));
}
;
_.mergedAngle = function mergedAngle_0(i1, i2, angle2){
  return jl.round_2((this.angle[i1] * this.frequency[i1] + angle2 * this.frequency[i2]) / (this.frequency[i1] + this.frequency[i2]));
}
;
_.symmetryClass = 0;
cggl.Lcom_actelion_research_chem_conf_TorsionInfo_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionInfo', 157, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_TorsionPrediction = function $clinit_TorsionPrediction(){
  carcc.$clinit_TorsionPrediction = emptyMethod;
  jl.$clinit_Object();
}
;
carcc.TorsionPrediction = function TorsionPrediction(mol, torsionAtom){
  carcc.$clinit_TorsionPrediction();
  var atom1, atom2, conns1, conns2;
  Object_0.call(this);
  this.$init_64();
  atom1 = torsionAtom[1];
  atom2 = torsionAtom[2];
  conns1 = mol.getConnAtoms_0(atom1) - 1;
  conns2 = mol.getConnAtoms_0(atom2) - 1;
  if (conns1 > 3 || conns2 > 3) {
    this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 4, 15, 1);
    this.mTorsion[0] = 45;
    this.mTorsion[1] = 135;
    this.mTorsion[2] = 225;
    this.mTorsion[2] = 315;
    this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [4, 2], 2);
    this.mTorsionRange[0][0] = 30;
    this.mTorsionRange[0][1] = 60;
    this.mTorsionRange[1][0] = 120;
    this.mTorsionRange[1][1] = 150;
    this.mTorsionRange[2][0] = 210;
    this.mTorsionRange[2][1] = 240;
    this.mTorsionRange[2][0] = 300;
    this.mTorsionRange[2][1] = 330;
    this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 4, 15, 1);
    this.mFrequency[0] = 25;
    this.mFrequency[1] = 25;
    this.mFrequency[2] = 25;
    this.mFrequency[3] = 25;
  }
   else if ((mol.getAtomPi_0(atom1) == 0 || mol.getAtomicNo_0(atom1) > 9) && (mol.getAtomPi_0(atom2) == 0 || mol.getAtomicNo_0(atom2) > 9)) {
    if (conns1 == 3 && conns2 == 3 || conns1 == 3 && conns2 == 2 || conns1 == 3 && conns2 == 1 || conns1 == 2 && conns2 == 3 || conns1 == 1 && conns2 == 3 || conns1 == 2 && conns2 == 2 && (torsionAtom[0] != -1 || torsionAtom[3] != -1)) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 60;
      this.mTorsion[1] = 180;
      this.mTorsion[2] = 300;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = 45;
      this.mTorsionRange[0][1] = 75;
      this.mTorsionRange[1][0] = 165;
      this.mTorsionRange[1][1] = 195;
      this.mTorsionRange[2][0] = 285;
      this.mTorsionRange[2][1] = 315;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 33;
      this.mFrequency[1] = 33;
      this.mFrequency[2] = 33;
    }
     else if (conns1 == 1 && conns2 == 2 && torsionAtom[3] == -1 || conns1 == 2 && conns2 == 1 && torsionAtom[0] == -1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 60;
      this.mTorsion[1] = 180;
      this.mTorsion[2] = 300;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = 45;
      this.mTorsionRange[0][1] = 75;
      this.mTorsionRange[1][0] = 165;
      this.mTorsionRange[1][1] = 195;
      this.mTorsionRange[2][0] = 285;
      this.mTorsionRange[2][1] = 315;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 40;
      this.mFrequency[1] = 20;
      this.mFrequency[2] = 40;
    }
     else if (conns1 == 1 && conns2 == 1 || conns1 == 1 && conns2 == 2 && torsionAtom[3] != -1 || conns1 == 2 && conns2 == 1 && torsionAtom[0] != -1 || conns1 == 2 && conns2 == 2 && torsionAtom[0] == -1 && torsionAtom[3] == -1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 60;
      this.mTorsion[1] = 180;
      this.mTorsion[2] = 300;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = 45;
      this.mTorsionRange[0][1] = 75;
      this.mTorsionRange[1][0] = 165;
      this.mTorsionRange[1][1] = 195;
      this.mTorsionRange[2][0] = 285;
      this.mTorsionRange[2][1] = 315;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 25;
      this.mFrequency[1] = 50;
      this.mFrequency[2] = 25;
    }
  }
   else if ((mol.getAtomPi_0(atom1) == 0 || mol.getAtomicNo_0(atom1) > 9) && mol.getAtomPi_0(atom2) == 1 || (mol.getAtomPi_0(atom2) == 0 || mol.getAtomicNo_0(atom2) > 9) && mol.getAtomPi_0(atom1) == 1) {
    if (conns1 == 3 || conns2 == 3) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 6, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 60;
      this.mTorsion[2] = 120;
      this.mTorsion[3] = 180;
      this.mTorsion[4] = 240;
      this.mTorsion[5] = 300;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [6, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 45;
      this.mTorsionRange[1][1] = 75;
      this.mTorsionRange[2][0] = 105;
      this.mTorsionRange[2][1] = 135;
      this.mTorsionRange[3][0] = 165;
      this.mTorsionRange[3][1] = 195;
      this.mTorsionRange[4][0] = 225;
      this.mTorsionRange[4][1] = 255;
      this.mTorsionRange[5][0] = 285;
      this.mTorsionRange[5][1] = 315;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 6, 15, 1);
      this.mFrequency[0] = 16;
      this.mFrequency[1] = 16;
      this.mFrequency[2] = 16;
      this.mFrequency[3] = 16;
      this.mFrequency[4] = 16;
      this.mFrequency[5] = 16;
    }
     else if (conns1 == 1 && conns2 == 1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mTorsion[0] = 120;
      this.mTorsion[1] = 240;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
      this.mTorsionRange[0][0] = 105;
      this.mTorsionRange[0][1] = 135;
      this.mTorsionRange[1][0] = 225;
      this.mTorsionRange[1][1] = 255;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mFrequency[0] = 50;
      this.mFrequency[1] = 50;
    }
     else if (mol.getAtomPi_0(atom1) == 1 && conns1 == 2 && conns2 == 1 || mol.getAtomPi_0(atom2) == 1 && conns2 == 2 && conns1 == 1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mTorsion[0] = 90;
      this.mTorsion[1] = 270;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
      this.mTorsionRange[0][0] = 75;
      this.mTorsionRange[0][1] = 105;
      this.mTorsionRange[1][0] = 255;
      this.mTorsionRange[1][1] = 285;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mFrequency[0] = 50;
      this.mFrequency[1] = 50;
    }
     else if (mol.getAtomPi_0(atom1) == 1 && conns1 == 1 && conns2 == 2 && torsionAtom[3] == -1 || mol.getAtomPi_0(atom2) == 1 && conns2 == 1 && conns1 == 2 && torsionAtom[0] == -1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 120;
      this.mTorsion[2] = 240;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 105;
      this.mTorsionRange[1][1] = 135;
      this.mTorsionRange[2][0] = 225;
      this.mTorsionRange[2][1] = 255;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 60;
      this.mFrequency[1] = 20;
      this.mFrequency[2] = 20;
    }
     else if (mol.getAtomPi_0(atom1) == 1 && conns1 == 1 && conns2 == 2 && torsionAtom[3] != -1 || mol.getAtomPi_0(atom2) == 1 && conns2 == 1 && conns1 == 2 && torsionAtom[0] != -1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 120;
      this.mTorsion[2] = 240;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 105;
      this.mTorsionRange[1][1] = 135;
      this.mTorsionRange[2][0] = 225;
      this.mTorsionRange[2][1] = 255;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
      this.mFrequency[0] = 20;
      this.mFrequency[1] = 40;
      this.mFrequency[2] = 40;
    }
     else if (conns1 == 2 && conns2 == 2) {
      if (torsionAtom[0] == -1 || torsionAtom[3] == -1) {
        this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
        this.mTorsion[0] = 0;
        this.mTorsion[1] = 180;
        this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
        this.mTorsionRange[0][0] = -15;
        this.mTorsionRange[0][1] = 15;
        this.mTorsionRange[1][0] = 165;
        this.mTorsionRange[1][1] = 195;
        this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
        this.mFrequency[0] = 50;
        this.mFrequency[1] = 50;
      }
       else {
        this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
        this.mTorsion[0] = 90;
        this.mTorsion[1] = 270;
        this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
        this.mTorsionRange[0][0] = 75;
        this.mTorsionRange[0][1] = 105;
        this.mTorsionRange[1][0] = 255;
        this.mTorsionRange[1][1] = 285;
        this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
        this.mFrequency[0] = 50;
        this.mFrequency[1] = 50;
      }
    }
  }
   else if (mol.getAtomPi_0(atom1) == 1 && mol.getAtomPi_0(atom2) == 1) {
    if (conns1 == 1 && conns2 == 1) {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 180;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [2, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 165;
      this.mTorsionRange[1][1] = 195;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 2, 15, 1);
      this.mFrequency[0] = 10;
      this.mFrequency[1] = 90;
    }
     else {
      this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 6, 15, 1);
      this.mTorsion[0] = 0;
      this.mTorsion[1] = 50;
      this.mTorsion[2] = 130;
      this.mTorsion[3] = 180;
      this.mTorsion[4] = 230;
      this.mTorsion[5] = 310;
      this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [6, 2], 2);
      this.mTorsionRange[0][0] = -15;
      this.mTorsionRange[0][1] = 15;
      this.mTorsionRange[1][0] = 35;
      this.mTorsionRange[1][1] = 65;
      this.mTorsionRange[2][0] = 115;
      this.mTorsionRange[2][1] = 145;
      this.mTorsionRange[3][0] = 165;
      this.mTorsionRange[3][1] = 195;
      this.mTorsionRange[4][0] = 215;
      this.mTorsionRange[4][1] = 245;
      this.mTorsionRange[5][0] = 295;
      this.mTorsionRange[5][1] = 325;
      this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 6, 15, 1);
      this.mFrequency[0] = 40;
      this.mFrequency[1] = 5;
      this.mFrequency[2] = 5;
      this.mFrequency[3] = 40;
      this.mFrequency[4] = 5;
      this.mFrequency[5] = 5;
    }
  }
   else {
    this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 1, 15, 1);
    this.mTorsion[0] = 180;
    this.mTorsionRange = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [1, 2], 2);
    this.mTorsionRange[0][0] = 165;
    this.mTorsionRange[0][1] = 195;
    this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 1, 15, 1);
    this.mFrequency[0] = 100;
  }
}
;
defineClass(354, 1, {1:1}, carcc.TorsionPrediction);
_.$init_64 = function $init_64(){
}
;
_.getTorsionFrequencies = function getTorsionFrequencies_0(){
  return this.mFrequency;
}
;
_.getTorsionRanges = function getTorsionRanges_0(){
  return this.mTorsionRange;
}
;
_.getTorsions = function getTorsions_0(){
  return this.mTorsion;
}
;
cggl.Lcom_actelion_research_chem_conf_TorsionPrediction_2_classLit = createForClass('com.actelion.research.chem.conf', 'TorsionPrediction', 354, cggl.Ljava_lang_Object_2_classLit);
carcc.$clinit_VDWRadii = function $clinit_VDWRadii(){
  carcc.$clinit_VDWRadii = emptyMethod;
  carcc.VDW_RADIUS = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {65:1, 4:1, 1:1}, 5, 15, [1, 1.2000000476837158, 1.4299999475479126, 2.119999885559082, 1.9800000190734863, 1.909999966621399, 1.7699999809265137, 1.659999966621399, 1.5, 1.4600000381469727, 1.5800000429153442, 2.5, 2.509999990463257, 2.25, 2.190000057220459, 1.899999976158142, 1.8899999856948853, 1.8200000524520874, 1.8300000429153442, 2.7300000190734863, 2.619999885559082, 2.5799999237060547, 2.4600000381469727, 2.4200000762939453, 2.450000047683716, 2.450000047683716, 2.440000057220459, 2.4000000953674316, 2.4000000953674316, 2.380000114440918, 2.390000104904175, 2.319999933242798, 2.2899999618530273, 1.8799999952316284, 1.8200000524520874, 1.8600000143051147, 2.25, 3.2100000381469727, 2.8399999141693115, 2.75, 2.5199999809265137, 2.559999942779541, 2.450000047683716, 2.440000057220459, 2.4600000381469727, 2.440000057220459, 2.1500000953674316, 2.5299999713897705, 2.490000009536743, 2.430000066757202, 2.4200000762939453, 2.4700000286102295, 1.9900000095367432, 2.0399999618530273, 2.059999942779541, 3.4800000190734863, 3.0299999713897705, 2.9800000190734863, 2.880000114440918, 2.9200000762939453, 2.950000047683716, 2.9200000762939453, 2.9000000953674316, 2.869999885559082, 2.8299999237060547, 2.7899999618530273, 2.869999885559082, 2.809999942779541, 2.8299999237060547, 2.7899999618530273, 2.799999952316284, 2.740000009536743, 2.630000114440918, 2.5299999713897705, 2.569999933242798, 2.490000009536743, 2.4800000190734863, 2.4100000858306885, 2.2899999618530273, 2.319999933242798, 2.450000047683716, 2.4700000286102295, 2.5999999046325684, 2.5399999618530273, 2.5, 2.5, 2.5, 2.5, 2.5, 2.799999952316284, 2.930000066757202, 2.880000114440918, 2.7100000381469727, 2.819999933242798, 2.809999942779541, 2.8299999237060547, 3.049999952316284, 3.4000000953674316, 3.049999952316284, 2.700000047683716]);
  carcc.COVALENT_RADIUS = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {65:1, 4:1, 1:1}, 5, 15, [0.25, 0.3199999928474426, 0.46000000834465027, 1.3300000429153442, 1.0199999809265137, 0.8500000238418579, 0.75, 0.7099999785423279, 0.6299999952316284, 0.6399999856948853, 0.9599999785423279, 1.600000023841858, 1.3899999856948853, 1.2599999904632568, 1.159999966621399, 1.1100000143051147, 1.0299999713897705, 0.9900000095367432, 1.0700000524520874, 1.9600000381469727, 1.7100000381469727, 1.4800000190734863, 1.3600000143051147, 1.340000033378601, 1.2200000286102295, 1.190000057220459, 1.159999966621399, 1.1100000143051147, 1.100000023841858, 1.2000000476837158, 1.2000000476837158, 1.2400000095367432, 1.2100000381469727, 1.2100000381469727, 1.159999966621399, 1.1399999856948853, 1.2100000381469727, 2.0999999046325684, 1.850000023841858, 1.6299999952316284, 1.5399999618530273, 1.4700000286102295, 1.3799999952316284, 1.2799999713897705, 1.25, 1.25, 1.2000000476837158, 1.3899999856948853, 1.440000057220459, 1.4600000381469727, 1.399999976158142, 1.399999976158142, 1.3600000143051147, 1.3300000429153442, 1.350000023841858, 2.319999933242798, 1.9600000381469727, 1.7999999523162842, 1.6299999952316284, 1.7599999904632568, 1.7400000095367432, 1.7300000190734863, 1.7200000286102295, 1.6799999475479126, 1.690000057220459, 1.6799999475479126, 1.6699999570846558, 1.659999966621399, 1.649999976158142, 1.6399999856948853, 1.7000000476837158, 1.6200000047683716, 1.5199999809265137, 1.4600000381469727, 1.3700000047683716, 1.309999942779541, 1.2899999618530273, 1.2200000286102295, 1.2300000190734863, 1.2400000095367432, 1.4199999570846558, 1.5, 1.440000057220459, 1.5099999904632568, 1.4500000476837158, 1.4700000286102295, 1.4500000476837158, 2.2300000190734863, 2.009999990463257, 1.8600000143051147, 1.75, 1.690000057220459, 1.7000000476837158, 1.7100000381469727, 1.7200000286102295, 1.659999966621399, 1.659999966621399, 1.6799999475479126, 1.6799999475479126, 1.649999976158142, 1.6699999570846558, 1.7300000190734863, 1.7599999904632568, 1.6100000143051147, 1.5700000524520874, 1.4900000095367432, 1.4299999475479126, 1.409999966621399, 1.340000033378601, 1.2899999618530273, 1.2799999713897705, 1.2100000381469727, 1.3700000047683716, 1.3600000143051147, 1.4299999475479126, 1.6200000047683716, 1.75, 1.649999976158142, 1.5700000524520874]);
}
;
cggl.Lcom_actelion_research_chem_conf_VDWRadii_2_classLit = createForInterface('com.actelion.research.chem.conf', 'VDWRadii');
carcc2.$clinit_DiastereotopicAtomID = function $clinit_DiastereotopicAtomID(){
  carcc2.$clinit_DiastereotopicAtomID = emptyMethod;
  jl.$clinit_Object();
  carcc2.xAtomicNumber = carc2.getAtomicNoFromLabel_0('X', 32);
}
;
carcc2.addMissingChirality = function addMissingChirality(molecule){
  carcc2.$clinit_DiastereotopicAtomID();
  carcc2.addMissingChirality_0(molecule, 1);
}
;
carcc2.addMissingChirality_0 = function addMissingChirality_0(molecule, esrType){
  carcc2.$clinit_DiastereotopicAtomID();
  var connAtom, i, iAtom, stereoBond, tempMolecule;
  for (iAtom = 0; iAtom < molecule.getAllAtoms_0(); iAtom++) {
    tempMolecule = molecule.getCompactCopy_0();
    carcc2.changeAtomForStereo(tempMolecule, iAtom);
    tempMolecule.ensureHelperArrays_0(15);
    for (i = 0; i < tempMolecule.getAtoms_0(); i++) {
      if (tempMolecule.isAtomStereoCenter_0(i) && tempMolecule.getStereoBond_0(i) == -1) {
        stereoBond = tempMolecule.getAtomPreferredStereoBond_0(i);
        if (stereoBond != -1) {
          molecule.setBondType_0(stereoBond, 257);
          if (molecule.getBondAtom_0(1, stereoBond) == i) {
            connAtom = molecule.getBondAtom_0(0, stereoBond);
            molecule.setBondAtom_0(0, stereoBond, i);
            molecule.setBondAtom_0(1, stereoBond, connAtom);
          }
          molecule.setAtomESR_0(i, esrType, 0);
        }
      }
    }
  }
}
;
carcc2.changeAtom_0 = function changeAtom_0(molecule, iAtom){
  molecule.setAtomCustomLabel_0(iAtom, molecule.getAtomLabel_0(iAtom) + '*');
  if (molecule.getAtomicNo_0(iAtom) == 1) {
    molecule.setAtomicNo_0(iAtom, carcc2.xAtomicNumber);
  }
   else {
    molecule.setAtomMass_0(iAtom, molecule.getAtomMass_0(iAtom) + 5);
  }
}
;
carcc2.changeAtomForStereo = function changeAtomForStereo(molecule, iAtom){
  molecule.setAtomicNo_0(iAtom, carcc2.xAtomicNumber);
}
;
carcc2.getAtomIds = function getAtomIds(molecule){
  carcc2.$clinit_DiastereotopicAtomID();
  var iAtom, ids, numberAtoms, tempMolecule;
  carcc2.addMissingChirality(molecule);
  numberAtoms = molecule.getAllAtoms_0();
  ids = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, numberAtoms, 6, 1);
  for (iAtom = 0; iAtom < numberAtoms; iAtom++) {
    tempMolecule = molecule.getCompactCopy_0();
    carcc2.changeAtom_0(tempMolecule, iAtom);
    carcc2.makeRacemic(tempMolecule);
    ids[iAtom] = (new carc2.Canonizer_0(tempMolecule, 8)).getIDCode_0();
  }
  return ids;
}
;
carcc2.makeRacemic = function makeRacemic(molecule){
  var i;
  molecule.ensureHelperArrays_0(15);
  for (i = 0; i < molecule.getAllAtoms_0(); i++) {
    if (molecule.getAtomParity_0(i) != 0) {
      molecule.setAtomESR_0(i, 1, 0);
    }
  }
}
;
defineClass(964, 1, {1:1});
carcc2.xAtomicNumber = 0;
cggl.Lcom_actelion_research_chem_contrib_DiastereotopicAtomID_2_classLit = createForClass('com.actelion.research.chem.contrib', 'DiastereotopicAtomID', 964, cggl.Ljava_lang_Object_2_classLit);
carcc2.$clinit_HoseCodeCreator = function $clinit_HoseCodeCreator(){
  carcc2.$clinit_HoseCodeCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carcc2.getHoseCodes = function getHoseCodes(mol, maxSphereSize, type_0){
  carcc2.$clinit_HoseCodeCreator();
  var ids, rootAtom;
  ids = initMultidimensionalArray(cggl.Ljava_lang_String_2_classLit, [{4:1, 1:1, 7:1}, {4:1, 1:1, 7:1, 15:1}], [15, 2], 6, [mol.getAtoms_0(), maxSphereSize], 2);
  mol.ensureHelperArrays_0(7);
  for (rootAtom = 0; rootAtom < mol.getAtoms_0(); rootAtom++) {
    ids[rootAtom] = carcc2.getHoseCodesForAtom(mol, rootAtom, maxSphereSize, type_0);
  }
  return ids;
}
;
carcc2.getHoseCodesForAtom = function getHoseCodesForAtom(mol, rootAtom, maxSphereSize, type_0){
  var atom, atomList, atomMask, connAtom, fragment, i, ids, j, max_0, min_0, newMax, sphere;
  fragment = new carc2.StereoMolecule_0(mol.getAtoms_0(), mol.getBonds_0());
  ids = new ju.Vector;
  min_0 = 0;
  max_0 = 0;
  atomMask = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  for (sphere = 0; sphere < maxSphereSize && max_0 < mol.getAtoms_0(); sphere++) {
    if (max_0 == 0) {
      atomList[0] = rootAtom;
      atomMask[rootAtom] = true;
      max_0 = 1;
    }
     else {
      newMax = max_0;
      for (i = min_0; i < max_0; i++) {
        atom = atomList[i];
        for (j = 0; j < mol.getConnAtoms_0(atom); j++) {
          connAtom = mol.getConnAtom_0(atom, j);
          if (false)
            (jl.$clinit_System() , jl.out_0).println_0('---> ' + atom + ' to ' + connAtom);
          if (!atomMask[connAtom]) {
            switch (type_0) {
              case 0:
                atomMask[connAtom] = true;
                atomList[newMax++] = connAtom;
                break;
              case 1:
                if (!(carcc2.isCsp3(mol, atom) && carcc2.isCsp3(mol, connAtom))) {
                  if (false)
                    (jl.$clinit_System() , jl.out_0).println_0('NO SKIP');
                  atomMask[connAtom] = true;
                  atomList[newMax++] = connAtom;
                }
                 else {
                  if (false)
                    (jl.$clinit_System() , jl.out_0).println_0('SKIP');
                }

                break;
            }
          }
        }
      }
      min_0 = max_0;
      max_0 = newMax;
    }
    mol.copyMoleculeByAtoms_0(fragment, atomMask, true, null);
    ids.add((new carc2.Canonizer_0(fragment, 8)).getIDCode_0());
  }
  return castTo(ids.toArray_0(initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, ids.size(), 6, 1)), 15);
}
;
carcc2.getHoseCodesFromDiaID = function getHoseCodesFromDiaID(diastereotopicID, maxSphereSize, type_0){
  carcc2.$clinit_HoseCodeCreator();
  var atomCustomLabel, atomID, i, molecule;
  molecule = (new carc2.IDCodeParser_0(true)).getCompactMolecule(diastereotopicID);
  atomID = -1;
  for (i = 0; i < molecule.getAllAtoms_0(); i++) {
    atomCustomLabel = molecule.getAtomCustomLabel_0(i);
    if (jsNotEquals(atomCustomLabel, null) && jl.endsWith_Ljava_lang_String__Z__devirtual$(atomCustomLabel, '*')) {
      atomID = i;
      break;
    }
  }
  if (atomID >= 0) {
    return carcc2.getHoseCodesForAtom(molecule, atomID, maxSphereSize, type_0);
  }
  return initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, 0, 6, 1);
}
;
carcc2.isCsp3 = function isCsp3(mol, atomID){
  if (mol.getAtomicNo_0(atomID) != 6)
    return false;
  if (mol.getAtomCharge_0(atomID) != 0)
    return false;
  if (mol.getImplicitHydrogens_0(atomID) + mol.getConnAtoms_0(atomID) != 4)
    return false;
  return true;
}
;
defineClass(965, 1, {1:1});
carcc2.DEBUG = false;
carcc2.FULL_HOSE_CODE = 0;
carcc2.HOSE_CODE_CUT_C_SP3_SP3 = 1;
cggl.Lcom_actelion_research_chem_contrib_HoseCodeCreator_2_classLit = createForClass('com.actelion.research.chem.contrib', 'HoseCodeCreator', 965, cggl.Ljava_lang_Object_2_classLit);
carcc2.$clinit_HydrogenHandler = function $clinit_HydrogenHandler(){
  carcc2.$clinit_HydrogenHandler = emptyMethod;
  jl.$clinit_Object();
  carcc2.cos30 = $wnd.Math.cos(30 / 360 * 3.141592653589793 * 2);
  carcc2.sin30 = $wnd.Math.sin(30 / 360 * 3.141592653589793 * 2);
  carcc2.cos330 = $wnd.Math.cos(-30 / 360 * 3.141592653589793 * 2);
  carcc2.sin330 = $wnd.Math.sin(-30 / 360 * 3.141592653589793 * 2);
  carcc2.cos60 = $wnd.Math.cos(60 / 360 * 3.141592653589793 * 2);
  carcc2.sin60 = $wnd.Math.sin(60 / 360 * 3.141592653589793 * 2);
  carcc2.cos300 = $wnd.Math.cos(-60 / 360 * 3.141592653589793 * 2);
  carcc2.sin300 = $wnd.Math.sin(-60 / 360 * 3.141592653589793 * 2);
  carcc2.cos45 = $wnd.Math.cos(45 / 360 * 3.141592653589793 * 2);
  carcc2.sin45 = $wnd.Math.sin(45 / 360 * 3.141592653589793 * 2);
  carcc2.cos315 = $wnd.Math.cos(-45 / 360 * 3.141592653589793 * 2);
  carcc2.sin315 = $wnd.Math.sin(-45 / 360 * 3.141592653589793 * 2);
}
;
carcc2.addImplicitHydrogens = function addImplicitHydrogens(molecule){
  carcc2.$clinit_HydrogenHandler();
  var iAtom, nAtomsBefore;
  molecule.ensureHelperArrays_0(1);
  nAtomsBefore = molecule.getAtoms_0();
  for (iAtom = 0; iAtom < nAtomsBefore; iAtom++) {
    carcc2.addImplicitHydrogens_0(molecule, iAtom);
  }
}
;
carcc2.addImplicitHydrogens_0 = function addImplicitHydrogens_0(molecule, iAtom){
  carcc2.$clinit_HydrogenHandler();
  var angle1, angle2, angle3, atom, atomicNo, averageLength, bond, currentDistance, distance, dx, dx1, dx2, dy, dy1, dy2, i, i0, iHydrogen, iNew, length_0, length1, length2, nHydrogens, nNeighbours, nNeighbours0, normal, stereoAtom1, stereoAtom2, stereoBond, x_0, y_0;
  atomicNo = 1;
  nHydrogens = molecule.getImplicitHydrogens_0(iAtom);
  x_0 = molecule.getAtomX_0(iAtom);
  y_0 = molecule.getAtomY_0(iAtom);
  switch (nHydrogens) {
    case 1:
      {
        nNeighbours0 = molecule.getConnAtoms_0(iAtom);
        if (nNeighbours0 == 0) {
          dx = molecule.getAverageBondLength_4(true);
          dy = 0;
        }
         else {
          dx = x_0 - molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0));
          dy = y_0 - molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0));
        }
        if (nNeighbours0 == 1) {
          iNew = molecule.addAtom_0(x_0 + carcc2.cos45 * dx + carcc2.sin45 * dy, y_0 - carcc2.sin45 * dx + carcc2.cos45 * dy);
        }
         else if (nNeighbours0 == 2) {
          dx = x_0 - 0.5 * (molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 1)));
          dy = y_0 - 0.5 * (molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 1)));
          iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
        }
         else if (nNeighbours0 == 3) {
          stereoAtom1 = molecule.getConnAtom_0(iAtom, 0);
          for (i0 = 1; i0 < 3; i0++) {
            bond = molecule.getConnBond_0(iAtom, i0);
            if (molecule.getBondType_0(bond) == 129 || molecule.getBondType_0(bond) == 257) {
              stereoAtom1 = molecule.getConnAtom_0(iAtom, i0);
            }
          }
          angle1 = $wnd.Math.abs(carc2.getAngleDif(carc2.getAngle_0(molecule.getAtomX_0(iAtom), molecule.getAtomY_0(iAtom), molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0)), molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0))), carc2.getAngle_0(molecule.getAtomX_0(iAtom), molecule.getAtomY_0(iAtom), molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 1)), molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 1)))));
          angle2 = $wnd.Math.abs(carc2.getAngleDif(carc2.getAngle_0(molecule.getAtomX_0(iAtom), molecule.getAtomY_0(iAtom), molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0)), molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0))), carc2.getAngle_0(molecule.getAtomX_0(iAtom), molecule.getAtomY_0(iAtom), molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 2)), molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 2)))));
          angle3 = $wnd.Math.abs(carc2.getAngleDif(carc2.getAngle_0(molecule.getAtomX_0(iAtom), molecule.getAtomY_0(iAtom), molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 1)), molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 1))), carc2.getAngle_0(molecule.getAtomX_0(iAtom), molecule.getAtomY_0(iAtom), molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 2)), molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 2)))));
          normal = true;
          if (angle1 > angle2 && angle1 > angle3) {
            if (angle2 + angle3 < 3.141592653589793) {
              normal = false;
              dx = x_0 - 0.5 * (molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 1)));
              dy = y_0 - 0.5 * (molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 1)));
            }
          }
           else if (angle2 > angle1 && angle2 > angle3) {
            if (angle1 + angle3 < 3.141592653589793) {
              normal = false;
              dx = x_0 - 0.5 * (molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 2)));
              dy = y_0 - 0.5 * (molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0)) + molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 2)));
            }
          }
           else {
            if (angle1 + angle2 < 3.141592653589793) {
              normal = false;
              dx = x_0 - 0.5 * (molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 1)) + molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 2)));
              dy = y_0 - 0.5 * (molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 1)) + molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 2)));
            }
          }
          if (normal) {
            stereoAtom2 = molecule.getConnAtom_0(iAtom, 0);
            distance = 1.7976931348623157E308;
            for (i = 0; i < 3; i++) {
              atom = molecule.getConnAtom_0(iAtom, i);
              if (atom != stereoAtom1) {
                currentDistance = $wnd.Math.pow(molecule.getAtomX_0(iAtom) - molecule.getAtomX_0(atom), 2) + $wnd.Math.pow(molecule.getAtomY_0(iAtom) - molecule.getAtomY_0(atom), 2);
                if (currentDistance < distance) {
                  stereoAtom2 = atom;
                  distance = currentDistance;
                  (jl.$clinit_System() , jl.out_0).println_0('Minimal distance: ' + stereoAtom1 + ' - ' + stereoAtom2 + ' - ' + distance + ' - ' + molecule.getAtomicNo_0(stereoAtom2));
                }
              }
            }
            iNew = molecule.addAtom_0((molecule.getAtomX_0(stereoAtom1) + molecule.getAtomX_0(stereoAtom2)) / 2, (molecule.getAtomY_0(stereoAtom1) + molecule.getAtomY_0(stereoAtom2)) / 2);
          }
           else {
            iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
          }
        }
         else {
          iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
        }
        molecule.setAtomicNo_0(iNew, 1);
        molecule.addBond_1(iAtom, iNew, 1);
      }

      break;
    case 2:
      nNeighbours = molecule.getConnAtoms_0(iAtom);
      if (nNeighbours == 1) {
        dx = x_0 - molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0));
        dy = y_0 - molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0));
        iNew = molecule.addAtom_0(x_0 + (carcc2.cos60 * dx - carcc2.sin60 * dy) * 0.7, y_0 + (carcc2.sin60 * dx + carcc2.cos60 * dy) * 0.7);
        molecule.setAtomicNo_0(iNew, 1);
        molecule.addBond_1(iAtom, iNew, 1);
        iNew = molecule.addAtom_0(x_0 + (carcc2.cos300 * dx - carcc2.sin300 * dy) * 0.7, y_0 + (carcc2.sin300 * dx + carcc2.cos300 * dy) * 0.7);
        molecule.setAtomicNo_0(iNew, 1);
        molecule.addBond_1(iAtom, iNew, 1);
      }
       else if (nNeighbours == 2) {
        dx1 = x_0 - molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0));
        dy1 = y_0 - molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0));
        dx2 = x_0 - molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 1));
        dy2 = y_0 - molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 1));
        length1 = $wnd.Math.sqrt(dx1 * dx1 + dy1 * dy1) * 0.7;
        length2 = $wnd.Math.sqrt(dx2 * dx2 + dy2 * dy2) * 0.7;
        dx = dx1 + dx2;
        dy = dy1 + dy2;
        length_0 = $wnd.Math.sqrt(dx * dx + dy * dy);
        averageLength = (length1 + length2) / 2;
        dx = dx / length_0 * averageLength;
        dy = dy / length_0 * averageLength;
        stereoBond = molecule.getStereoBond_0(iAtom);
        iNew = molecule.addAtom_0(x_0 + carcc2.cos30 * dx - carcc2.sin30 * dy, y_0 + carcc2.sin30 * dx + carcc2.cos30 * dy);
        molecule.setAtomicNo_0(iNew, 1);
        if (stereoBond > -1) {
          molecule.addBond_1(iAtom, iNew, 1);
        }
         else {
          molecule.addBond_1(iAtom, iNew, 257);
        }
        iNew = molecule.addAtom_0(x_0 + carcc2.cos330 * dx - carcc2.sin330 * dy, y_0 + carcc2.sin330 * dx + carcc2.cos330 * dy);
        molecule.setAtomicNo_0(iNew, 1);
        molecule.addBond_1(iAtom, iNew, 1);
      }
       else {
        for (iHydrogen = 0; iHydrogen < nHydrogens; iHydrogen++) {
          iNew = molecule.addAtom_0(x_0, y_0);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
        }
      }

      break;
    case 3:
      {
        if (molecule.getConnAtom_0(iAtom, 0) > 0) {
          dx = (x_0 - molecule.getAtomX_0(molecule.getConnAtom_0(iAtom, 0))) * 0.7;
          dy = (y_0 - molecule.getAtomY_0(molecule.getConnAtom_0(iAtom, 0))) * 0.7;
          iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
          iNew = molecule.addAtom_0(x_0 - dy, y_0 + dx);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
          iNew = molecule.addAtom_0(x_0 + dy, y_0 - dx);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
        }
         else {
          dx = molecule.getAverageBondLength_4(true);
          dy = molecule.getAverageBondLength_4(true);
          iNew = molecule.addAtom_0(x_0 + dx, y_0 + dy);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
          iNew = molecule.addAtom_0(x_0 - dy * carcc2.cos60, y_0 + dx * carcc2.sin60);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
          iNew = molecule.addAtom_0(x_0 - dy * carcc2.cos60, y_0 - dx * carcc2.sin60);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
        }
      }

      break;
    default:{
        for (iHydrogen = 0; iHydrogen < nHydrogens; iHydrogen++) {
          iNew = molecule.addAtom_0(x_0, y_0);
          molecule.setAtomicNo_0(iNew, 1);
          molecule.addBond_1(iAtom, iNew, 1);
        }
        break;
      }

  }
}
;
carcc2.getNumberOfHydrogens = function getNumberOfHydrogens(molecule){
  carcc2.$clinit_HydrogenHandler();
  var iAtom, nbHydrogens;
  molecule.ensureHelperArrays_0(1);
  nbHydrogens = 0;
  for (iAtom = 0; iAtom < molecule.getAllAtoms_0(); iAtom++) {
    if (molecule.getAtomicNo_0(iAtom) == 1)
      nbHydrogens++;
    else 
      nbHydrogens += molecule.getPlainHydrogens(iAtom);
  }
  return nbHydrogens;
}
;
defineClass(963, 1, {1:1});
carcc2.H_BOND_RATIO = 0.7;
carcc2.cos30 = 0;
carcc2.cos300 = 0;
carcc2.cos315 = 0;
carcc2.cos330 = 0;
carcc2.cos45 = 0;
carcc2.cos60 = 0;
carcc2.sin30 = 0;
carcc2.sin300 = 0;
carcc2.sin315 = 0;
carcc2.sin330 = 0;
carcc2.sin45 = 0;
carcc2.sin60 = 0;
cggl.Lcom_actelion_research_chem_contrib_HydrogenHandler_2_classLit = createForClass('com.actelion.research.chem.contrib', 'HydrogenHandler', 963, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_CoordinateInventor = function $clinit_CoordinateInventor(){
  carcc3.$clinit_CoordinateInventor = emptyMethod;
  jl.$clinit_Object();
  carcc3.MODE_CONSIDER_MARKED_ATOMS = 4 | 8;
  carcc3.TOTAL_FLIPS = 32 + 64 + 128;
}
;
carcc3.CoordinateInventor = function CoordinateInventor(){
  carcc3.$clinit_CoordinateInventor();
  carcc3.CoordinateInventor_0.call(this, 2);
}
;
carcc3.CoordinateInventor_0 = function CoordinateInventor_0(mode){
  carcc3.$clinit_CoordinateInventor();
  Object_0.call(this);
  this.$init_65();
  this.mMode = mode;
  if ((mode & 1) == 0 && isNull(carcc3.sDefaultTemplateList))
    carcc3.buildDefaultTemplateList();
}
;
carcc3.buildDefaultTemplateList = function buildDefaultTemplateList(){
  if (isNull(carcc3.sDefaultTemplateList))
    carcc3.sDefaultTemplateList = new carcc3.InventorDefaultTemplateList;
}
;
carcc3.getMeanAngle = function getMeanAngle(angle, noOfAngles){
  carcc3.$clinit_CoordinateInventor();
  var cosSum, i, length_0, meanAngle, sinSum;
  sinSum = 0;
  cosSum = 0;
  for (i = 0; i < noOfAngles; i++) {
    sinSum += angle[i].mLength * $wnd.Math.sin(angle[i].mAngle);
    cosSum += angle[i].mLength * $wnd.Math.cos(angle[i].mAngle);
  }
  if (cosSum == 0)
    meanAngle = sinSum > 0?3.141592653589793 / 2:-3.141592653589793 / 2;
  else {
    meanAngle = $wnd.Math.atan(sinSum / cosSum);
    if (cosSum < 0)
      meanAngle += 3.141592653589793;
  }
  length_0 = $wnd.Math.sqrt(sinSum * sinSum + cosSum * cosSum) / noOfAngles;
  return new carcc3.InventorAngle(meanAngle, length_0);
}
;
defineClass(88, 1, {1:1}, carcc3.CoordinateInventor, carcc3.CoordinateInventor_0);
_.$init_65 = function $init_65(){
}
;
_.addRingFragment = function addRingFragment(ringAtom, ringBond){
  var f, i, ringSize;
  ringSize = ringAtom.length;
  f = new carcc3.InventorFragment(this.mMol, ringSize, false);
  f.mAtomX[0] = 0;
  f.mAtomY[0] = 0;
  for (i = 0; i < ringSize; i++) {
    f.mPriority[i] = 128 - ringSize;
    f.mGlobalAtom[i] = ringAtom[i];
  }
  if (ringSize < 8)
    this.createRegularRingFragment(f);
  else 
    this.createLargeRingFragment(f, ringAtom, ringBond);
  this.mFragmentList.add(f);
}
;
_.calcNextBaseValues = function calcNextBaseValues(baseValue, symRank, atomBits, maxConnAtoms){
  var atom, connRank, i, i0, j, k, neighbours, rank;
  connRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, maxConnAtoms, 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++) {
      rank = symRank[this.mMol.getConnAtom_0(atom, i0)];
      for (j = 0; j < i0; j++)
        if (rank < connRank[j])
          break;
      for (k = i0; k > j; k--)
        connRank[k] = connRank[k - 1];
      connRank[j] = rank;
    }
    neighbours = this.mMol.getAllConnAtoms_0(atom);
    baseValue[atom].init_0(atom);
    baseValue[atom].add_0(atomBits, fromInt_0(symRank[atom]));
    baseValue[atom].add_0((maxConnAtoms - neighbours) * (atomBits + 1), 0);
    for (i = 0; i < neighbours; i++)
      baseValue[atom].add_0(atomBits + 1, fromInt_0(connRank[i]));
  }
}
;
_.calculateAtomSymmetries = function calculateAtomSymmetries(){
  var atom, atom0, atomBits, baseValue, baseValueSize, bond, bondParity, maxConnAtoms, newNoOfRanks, oldNoOfRanks, symRank;
  atomBits = carc2.getNeededBits(this.mMol.getAtoms_0());
  maxConnAtoms = 2;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++)
    maxConnAtoms = $wnd.Math.max(maxConnAtoms, this.mMol.getAllConnAtoms_0(atom0));
  baseValueSize = narrow_int((62 + 2 * atomBits + maxConnAtoms * (atomBits + 1)) / 63);
  baseValue = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_CanonizerBaseValue_2_classLit, {4:1, 1:1, 7:1}, 175, this.mMol.getAllAtoms_0(), 0, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    setCheck(baseValue, atom, new carc2.CanonizerBaseValue(baseValueSize));
    baseValue[atom].init_0(atom);
  }
  symRank = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    bondParity = this.mMol.getBondParity_0(bond);
    if (bondParity == 1 || bondParity == 2) {
      baseValue[this.mMol.getBondAtom_0(0, bond)].add_1(fromInt_0(bondParity));
      baseValue[this.mMol.getBondAtom_0(1, bond)].add_1(fromInt_0(bondParity));
    }
  }
  newNoOfRanks = this.consolidateRanks(baseValue, symRank);
  do {
    oldNoOfRanks = newNoOfRanks;
    this.calcNextBaseValues(baseValue, symRank, atomBits, maxConnAtoms);
    newNoOfRanks = this.consolidateRanks(baseValue, symRank);
  }
   while (oldNoOfRanks != newNoOfRanks);
  return symRank;
}
;
_.consolidateRanks = function consolidateRanks(baseValue, symRank){
  var i, rank;
  rank = 0;
  ju.sort_5(baseValue);
  for (i = 0; i < baseValue.length; i++) {
    if (i == 0 || baseValue[i].compareTo_0(baseValue[i - 1]) != 0)
      rank++;
    symRank[baseValue[i].getAtom()] = rank;
  }
  return rank;
}
;
_.correctChainEZParities = function correctChainEZParities(){
  var angle1, angle2, bond, bondAtom, connAtom, dbAngle, f, fragmentNo, i, j, k, minConnAtom;
  for (fragmentNo = 0; fragmentNo < this.mFragmentList.size(); fragmentNo++) {
    f = castTo(this.mFragmentList.getAtIndex(fragmentNo), 42);
    for (i = 0; i < f.mGlobalBond.length; i++) {
      bond = f.mGlobalBond[i];
      if (this.mMol.getBondOrder_0(bond) == 2) {
        if (!this.mMol.isSmallRingBond_0(bond) && (this.mMol.getBondParity_0(bond) == 3 || this.mMol.getBondParity_0(bond) == 0))
          this.mMol.setBondParityUnknownOrNone_0(bond);
        if (!this.mMol.isRingBond_0(bond) && this.mMol.getConnAtoms_0(this.mMol.getBondAtom_0(0, bond)) > 1 && this.mMol.getConnAtoms_0(this.mMol.getBondAtom_0(1, bond)) > 1 && (this.mMol.getBondParity_0(bond) == 1 || this.mMol.getBondParity_0(bond) == 2)) {
          minConnAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
          bondAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
          for (j = 0; j < 2; j++) {
            minConnAtom[j] = this.mMol.getMaxAtoms_0();
            bondAtom[j] = this.mMol.getBondAtom_0(j, bond);
            for (k = 0; k < this.mMol.getAllConnAtoms_0(bondAtom[j]); k++) {
              connAtom = this.mMol.getConnAtom_0(bondAtom[j], k);
              if (connAtom != this.mMol.getBondAtom_0(1 - j, bond) && minConnAtom[j] > connAtom)
                minConnAtom[j] = connAtom;
            }
          }
          dbAngle = carcc3.getAngle_2(f.mAtomX[f.mGlobalToLocalAtom[bondAtom[0]]], f.mAtomY[f.mGlobalToLocalAtom[bondAtom[0]]], f.mAtomX[f.mGlobalToLocalAtom[bondAtom[1]]], f.mAtomY[f.mGlobalToLocalAtom[bondAtom[1]]]);
          angle1 = carcc3.getAngle_2(f.mAtomX[f.mGlobalToLocalAtom[minConnAtom[0]]], f.mAtomY[f.mGlobalToLocalAtom[minConnAtom[0]]], f.mAtomX[f.mGlobalToLocalAtom[bondAtom[0]]], f.mAtomY[f.mGlobalToLocalAtom[bondAtom[0]]]);
          angle2 = carcc3.getAngle_2(f.mAtomX[f.mGlobalToLocalAtom[bondAtom[1]]], f.mAtomY[f.mGlobalToLocalAtom[bondAtom[1]]], f.mAtomX[f.mGlobalToLocalAtom[minConnAtom[1]]], f.mAtomY[f.mGlobalToLocalAtom[minConnAtom[1]]]);
          if (this.getAngleDif_0(dbAngle, angle1) < 0 ^ this.getAngleDif_0(dbAngle, angle2) < 0 ^ this.mMol.getBondParity_0(bond) == 2) {
            f.flipOneSide(bond);
          }
        }
      }
    }
  }
}
;
_.createChargeAssociation = function createChargeAssociation(){
  var atom, charge, chargeList, f, f$iterator, fragmentCharge, i, ic, ic$iterator, nc, nc$iterator, negChargeList, pc, pc$iterator, pc$iterator0, pc$iterator1, posChargeList;
  negChargeList = new ju.ArrayList;
  posChargeList = new ju.ArrayList;
  chargeList = new ju.ArrayList;
  for (f$iterator = this.mFragmentList.iterator(); f$iterator.hasNext_0();) {
    f = castTo(f$iterator.next_3(), 42);
    fragmentCharge = 0;
    chargeList.clear();
    for (i = 0; i < f.size_1(); i++) {
      atom = f.getGlobalAtom(i);
      charge = this.mUnPairedCharge[atom];
      if (charge != 0) {
        chargeList.add(new carcc3.InventorCharge(f, i, charge));
        fragmentCharge += charge;
      }
    }
    if (fragmentCharge != 0) {
      ju.sort_8(chargeList, new carcc3.CoordinateInventor$2(this));
      for (ic$iterator = chargeList.iterator(); ic$iterator.hasNext_0();) {
        ic = castTo(ic$iterator.next_3(), 69);
        if (fragmentCharge * ic.charge > 0) {
          charge = $wnd.Math.abs(fragmentCharge) >= $wnd.Math.abs(ic.charge)?ic.charge:fragmentCharge;
          fragmentCharge -= charge;
          (charge < 0?negChargeList:posChargeList).add(new carcc3.InventorCharge(f, ic.atom, charge));
          if (fragmentCharge == 0)
            break;
        }
      }
    }
  }
  if (negChargeList.size() == 0 || posChargeList.size() == 0)
    return null;
  ju.sort_8(posChargeList, new carcc3.CoordinateInventor$3(this));
  ju.sort_8(negChargeList, new carcc3.CoordinateInventor$4(this));
  for (pc$iterator0 = posChargeList.iterator(); pc$iterator0.hasNext_0();) {
    pc = castTo(pc$iterator0.next_3(), 69);
    for (nc$iterator = negChargeList.iterator(); nc$iterator.hasNext_0();) {
      nc = castTo(nc$iterator.next_3(), 69);
      if (pc.charge == -nc.charge) {
        this.mUnPairedCharge[pc.fragment_0.getGlobalAtom(pc.atom)] -= pc.charge;
        this.mUnPairedCharge[nc.fragment_0.getGlobalAtom(nc.atom)] -= nc.charge;
        return new carcc3.FragmentAssociation_0(pc.fragment_0, nc.fragment_0, pc.atom, nc.atom);
      }
    }
  }
  for (pc$iterator1 = posChargeList.iterator(); pc$iterator1.hasNext_0();) {
    pc = castTo(pc$iterator1.next_3(), 69);
    for (nc$iterator = negChargeList.iterator(); nc$iterator.hasNext_0();) {
      nc = castTo(nc$iterator.next_3(), 69);
      if (pc.charge > -nc.charge) {
        this.mUnPairedCharge[pc.fragment_0.getGlobalAtom(pc.atom)] += nc.charge;
        this.mUnPairedCharge[nc.fragment_0.getGlobalAtom(nc.atom)] -= nc.charge;
        return new carcc3.FragmentAssociation_0(pc.fragment_0, nc.fragment_0, pc.atom, nc.atom);
      }
    }
  }
  for (pc$iterator = posChargeList.iterator(); pc$iterator.hasNext_0();) {
    pc = castTo(pc$iterator.next_3(), 69);
    for (nc$iterator = negChargeList.iterator(); nc$iterator.hasNext_0();) {
      nc = castTo(nc$iterator.next_3(), 69);
      if (pc.charge < -nc.charge) {
        this.mUnPairedCharge[pc.fragment_0.getGlobalAtom(pc.atom)] -= pc.charge;
        this.mUnPairedCharge[nc.fragment_0.getGlobalAtom(nc.atom)] += pc.charge;
        return new carcc3.FragmentAssociation_0(pc.fragment_0, nc.fragment_0, pc.atom, nc.atom);
      }
    }
  }
  return null;
}
;
_.createDisconnectedAssociation = function createDisconnectedAssociation(){
  if (this.mFragmentList.size() < 2)
    return null;
  return new carcc3.FragmentAssociation(castTo(this.mFragmentList.getAtIndex(0), 42), castTo(this.mFragmentList.getAtIndex(1), 42));
}
;
_.createLargeRingFragment = function createLargeRingFragment(f, ringAtom, ringBond){
  var FIRST_RING_SIZE, LAST_RING_SIZE, bit, bondAngle, bondEConstraint, bondParity, bondZConstraint, bondZList, cAngleCorrection, cBondZList, correction, i, i0, inverted, isRightTurn, isSymmetrical, maxBit, newBondZList, rightTurns, ringIndex, rotation, tempZList, wasRightTurn, zList;
  FIRST_RING_SIZE = 9;
  LAST_RING_SIZE = 25;
  cAngleCorrection = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 2), {4:1, 1:1, 7:1}, 13, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [20]), null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 10]), null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [-4, 12]), stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 0, -7.5]), null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [narrow_int(60 / 7), narrow_int(-60 / 7)]), null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [-2.4])]);
  cBondZList = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {35:1, 4:1, 1:1, 7:1}, 6, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [146]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [627]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2457, 1170]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2451, 8643, 2519]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [9362, 14798]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [34377, -2147448999, 26214]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [37449, 137313, 95703, 34371, 37815, 54891, 132867, -2147309741, 54857, 55129, -2147449005, -2147449065]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [530697, 531819, 899169, 137289, 694617, -2146951863, -2146952797, -2146939175, -2146929547, -2146929564, -2146625111, -2146931799, -2146940503, -2146931935]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1007293, 610915]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [542985, 137283, 2122017, 530691, 2206773, -2144711351, 219209, 2840841, 137555, -2146871031, -2147264167, 613705, -2145360543, -2146625271, 694611, 2454837, -2145356703, -2147345133, -2146928951, -2146931805, -2144641719, -2146951869, -2146625237, -2146624183, 2841963, 1074905, -2146625117, 2799955, -2144723645, 138583, 859225, -2145264843, -2145216253, -2146624149, -2144700727, -2146928917, -2143905527, -2144045771, -2146789097, 2288547, 544407, 2104323, -2146911977, -2144479405, 3633737, -2146870089, -2146952169]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [8487297, 2172633, 2116611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8829813]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [14071213])]);
  maxBit = 1 << f.size_1();
  bondEConstraint = 0;
  bondZConstraint = 0;
  if (f.size_1() > 7) {
    for (i = 0; i < f.size_1(); i++) {
      bondParity = this.getLargeRingBondParity(ringAtom, ringBond, i);
      if (bondParity == 1)
        bondEConstraint += maxBit;
      else if (bondParity == 2)
        bondZConstraint += maxBit;
      bondEConstraint >>>= 1;
      bondZConstraint >>>= 1;
    }
  }
  ringIndex = f.size_1() - 9;
  if (f.size_1() >= 9 && f.size_1() <= 25 && jsNotEquals(cBondZList[ringIndex], null)) {
    for (zList = 0; zList < cBondZList[ringIndex].length; zList++) {
      isSymmetrical = (-2147483648 & cBondZList[ringIndex][zList]) == 0;
      bondZList = 2147483647 & cBondZList[ringIndex][zList];
      for (inverted = false; !inverted; inverted = !inverted) {
        if (inverted) {
          if (isSymmetrical)
            break;
          newBondZList = 0;
          for (bit = 1; bit != maxBit; bit <<= 1) {
            newBondZList <<= 1;
            if ((bondZList & bit) != 0)
              newBondZList |= 1;
          }
          bondZList = newBondZList;
        }
        for (rotation = 0; rotation < f.size_1(); rotation++) {
          if ((bondZList & bondEConstraint) == 0 && (~bondZList & bondZConstraint) == 0) {
            bondAngle = 0;
            correction = 3.141592653589793 / 180 * (jsEquals(cAngleCorrection[ringIndex], null)?0:cAngleCorrection[ringIndex][zList]);
            rightTurns = 0;
            tempZList = bondZList;
            isRightTurn = true;
            for (i0 = 0; i0 < f.size_1(); i0++) {
              if (isRightTurn)
                rightTurns++;
              if ((tempZList & 1) == 0)
                isRightTurn = !isRightTurn;
              tempZList >>>= 1;
            }
            wasRightTurn = rightTurns > narrow_int(f.size_1() / 2);
            for (i = 1; i < f.size_1(); i++) {
              f.mAtomX[i] = f.mAtomX[i - 1] + $wnd.Math.sin(bondAngle);
              f.mAtomY[i] = f.mAtomY[i - 1] + $wnd.Math.cos(bondAngle);
              if ((bondZList & 1) == 0)
                wasRightTurn = !wasRightTurn;
              bondAngle += correction + (wasRightTurn?3.141592653589793 / 3:-3.141592653589793 / 3);
              bondZList >>>= 1;
            }
            return;
          }
          if ((bondZList & 1) != 0)
            bondZList |= maxBit;
          bondZList >>>= 1;
        }
      }
    }
  }
  this.createRegularRingFragment_0(f, bondEConstraint, bondZConstraint);
}
;
_.createMetalBondAssociations = function createMetalBondAssociations(){
  var associationList, atom1, atom2, atomIndex1, atomIndex2, bond, f1, f2, fa, temp;
  associationList = null;
  fa = null;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (this.mMol.getBondType_0(bond) == 32) {
      atom1 = this.mMol.getBondAtom_0(0, bond);
      atomIndex1 = -1;
      f1 = 0;
      for (; f1 < this.mFragmentList.size(); f1++) {
        atomIndex1 = castTo(this.mFragmentList.getAtIndex(f1), 42).getLocalAtom(atom1);
        if (atomIndex1 != -1)
          break;
      }
      atom2 = this.mMol.getBondAtom_0(1, bond);
      atomIndex2 = -1;
      f2 = 0;
      for (; f2 < this.mFragmentList.size(); f2++) {
        atomIndex2 = castTo(this.mFragmentList.getAtIndex(f2), 42).getLocalAtom(atom2);
        if (atomIndex2 != -1)
          break;
      }
      if (f1 != f2) {
        if (f1 > f2) {
          temp = f1;
          f1 = f2;
          f2 = temp;
          temp = atomIndex1;
          atomIndex1 = atomIndex2;
          atomIndex2 = temp;
        }
        if (jsEquals(fa, null))
          fa = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_FragmentAssociation_2_classLit, {4:1, 1:1, 7:1}, 1343, this.mFragmentList.size(), 0, 2);
        if (jsEquals(fa[f2], null))
          setCheck(fa, f2, initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_FragmentAssociation_2_classLit, {1343:1, 4:1, 1:1, 7:1}, 141, f2, 0, 1));
        if (isNotNull(fa[f2][f1]))
          fa[f2][f1].add_6(atomIndex1, atomIndex2);
        else {
          setCheck(fa[f2], f1, new carcc3.FragmentAssociation_0(castTo(this.mFragmentList.getAtIndex(f1), 42), castTo(this.mFragmentList.getAtIndex(f2), 42), atomIndex1, atomIndex2));
          if (isNull(associationList))
            associationList = new ju.ArrayList;
          associationList.add(fa[f2][f1]);
        }
      }
    }
  }
  return associationList;
}
;
_.createRegularRingFragment = function createRegularRingFragment(f){
  var angleChange, i;
  angleChange = 3.141592653589793 - 3.141592653589793 * (f.size_1() - 2) / f.size_1();
  for (i = 1; i < f.size_1(); i++) {
    f.mAtomX[i] = f.mAtomX[i - 1] + $wnd.Math.sin(angleChange * (i - 1));
    f.mAtomY[i] = f.mAtomY[i - 1] + $wnd.Math.cos(angleChange * (i - 1));
  }
}
;
_.createRegularRingFragment_0 = function createRegularRingFragment_0(f, bondEConstraint, bondZConstraint){
  var angleChange, bitMinus1, bitMinus2, bitPlus1, currentBit, i, i0, i1, index_0, moveToCenter, offset, priority, shift_0, startIndex, startPriority;
  if (bondEConstraint == 0 || (bondEConstraint & bondZConstraint) != 0) {
    this.createRegularRingFragment(f);
    return;
  }
  startIndex = -1;
  startPriority = 0;
  bitMinus2 = 1 << f.size_1() - 2;
  bitMinus1 = 1 << f.size_1() - 1;
  currentBit = 1;
  bitPlus1 = 2;
  for (i0 = 0; i0 < f.size_1(); i0++) {
    if ((bondZConstraint & (bitMinus1 | currentBit)) == 0 && (bondEConstraint & (bitMinus1 | currentBit)) != 0 && (bondEConstraint & bitMinus2) == 0) {
      priority = 0;
      if ((bondZConstraint & bitMinus2) != 0)
        priority += 4;
      if ((bondEConstraint & bitMinus1) != 0)
        priority += 2;
      if ((bondEConstraint & currentBit) != 0)
        priority += 1;
      if (startPriority < priority) {
        startPriority = priority;
        startIndex = i0;
      }
    }
    bitMinus2 = bitMinus1;
    bitMinus1 = currentBit;
    currentBit = bitPlus1;
    bitPlus1 = 1 << (i0 + 2 < f.size_1()?i0 + 2:i0 + 2 - f.size_1());
  }
  if (startIndex == -1) {
    this.createRegularRingFragment(f);
    return;
  }
  moveToCenter = 0;
  moveToCenter |= 1 << startIndex;
  offset = 2;
  while (offset < f.size_1() - 1) {
    index_0 = startIndex + offset < f.size_1()?startIndex + offset:startIndex + offset - f.size_1();
    bitMinus1 = 1 << (index_0 == 0?f.size_1() - 1:index_0 - 1);
    if ((bondZConstraint & bitMinus1) != 0) {
      offset++;
      continue;
    }
    currentBit = 1 << index_0;
    if ((bondEConstraint & bitMinus1) != 0) {
      if ((bondZConstraint & currentBit) != 0) {
        this.createRegularRingFragment(f);
        return;
      }
      moveToCenter |= currentBit;
      offset += 2;
      continue;
    }
    bitPlus1 = 1 << (index_0 + 1 < f.size_1()?index_0 + 1:index_0 + 1 - f.size_1());
    if ((bondEConstraint & currentBit) != 0 && (bondZConstraint & bitPlus1) != 0) {
      moveToCenter |= currentBit;
      offset += 3;
      continue;
    }
    offset++;
  }
  if (moveToCenter == 0) {
    this.createRegularRingFragment(f);
    return;
  }
  angleChange = 3.141592653589793 - 3.141592653589793 * (f.size_1() - 2) / f.size_1();
  for (i1 = 1; i1 < f.size_1(); i1++) {
    f.mAtomX[i1] = f.mAtomX[i1 - 1] + $wnd.Math.sin(angleChange * (i1 - 1));
    f.mAtomY[i1] = f.mAtomY[i1 - 1] + $wnd.Math.cos(angleChange * (i1 - 1));
  }
  currentBit = 1;
  shift_0 = 2 * $wnd.Math.sin(angleChange / 2);
  for (i = 0; i < f.size_1(); i++) {
    if ((moveToCenter & currentBit) != 0) {
      f.mAtomX[i] += shift_0 * $wnd.Math.cos(angleChange * (i - 0.5));
      f.mAtomY[i] -= shift_0 * $wnd.Math.sin(angleChange * (i - 0.5));
    }
    currentBit <<= 1;
  }
}
;
_.getAngleDif_0 = function getAngleDif_0(angle1, angle2){
  var angleDif;
  angleDif = angle1 - angle2;
  while (angleDif < -3.141592653589793)
    angleDif += 2 * 3.141592653589793;
  while (angleDif > 3.141592653589793)
    angleDif -= 2 * 3.141592653589793;
  return angleDif;
}
;
_.getConnAtoms_1 = function getConnAtoms_0(f, atom){
  var connAtoms, i;
  connAtoms = 0;
  for (i = 0; i < this.mMol.getAllConnAtoms_0(atom); i++) {
    if (f.isMember_0(this.mMol.getConnAtom_0(atom, i)))
      connAtoms++;
  }
  return connAtoms;
}
;
_.getFusedFragment = function getFusedFragment(f1, f2, commonAtom){
  var angle1, angle2, angleInc, index1, index2;
  index1 = f1.getLocalAtom(commonAtom);
  index2 = f2.getLocalAtom(commonAtom);
  f2.translate_0(f1.mAtomX[index1] - f2.mAtomX[index2], f1.mAtomY[index1] - f2.mAtomY[index2]);
  angle1 = this.suggestNewBondAngle(f1, commonAtom);
  angle2 = this.suggestNewBondAngle(f2, commonAtom);
  angleInc = 0;
  if (this.getConnAtoms_1(f1, commonAtom) == 1 && this.getConnAtoms_1(f2, commonAtom) == 1)
    angleInc = 3.141592653589793 / 3;
  f2.rotate_0(f2.mAtomX[index2], f2.mAtomY[index2], angle1 - angle2 + angleInc + 3.141592653589793);
  return this.getMergedFragment(f1, f2, 1);
}
;
_.getFusedFragment_0 = function getFusedFragment_0(f1, f2, commonAtom, commonAtoms){
  var angleDif, angleDifFlip, connAtom, connIndex, f1Angle, f1NeighbourAngle, f2Angle, f2NeighbourAngle, f2NeighbourAngleFlip, i, i0, i1, i2, i3, index1, index2, j, meanAngleDif, meanAngleDifFlip, meanNeighbourAngleF1, meanNeighbourAngleF2, meanNeighbourAngleF2Flip, meanX1, meanX2, meanY1, meanY2, neighbourAngle, neighbourCountF1, neighbourCountF2;
  index1 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, commonAtoms, 15, 1);
  index2 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, commonAtoms, 15, 1);
  for (i0 = 0; i0 < commonAtoms; i0++) {
    index1[i0] = f1.getLocalAtom(commonAtom[i0]);
    index2[i0] = f2.getLocalAtom(commonAtom[i0]);
  }
  meanX1 = 0;
  meanY1 = 0;
  meanX2 = 0;
  meanY2 = 0;
  for (i1 = 0; i1 < commonAtoms; i1++) {
    meanX1 += f1.mAtomX[index1[i1]];
    meanY1 += f1.mAtomY[index1[i1]];
    meanX2 += f2.mAtomX[index2[i1]];
    meanY2 += f2.mAtomY[index2[i1]];
  }
  meanX1 /= commonAtoms;
  meanY1 /= commonAtoms;
  meanX2 /= commonAtoms;
  meanY2 /= commonAtoms;
  f2.translate_0(meanX1 - meanX2, meanY1 - meanY2);
  f1Angle = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 7:1}, 54, commonAtoms, 0, 1);
  f2Angle = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 7:1}, 54, commonAtoms, 0, 1);
  angleDif = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 7:1}, 54, commonAtoms, 0, 1);
  angleDifFlip = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 7:1}, 54, commonAtoms, 0, 1);
  for (i2 = 0; i2 < commonAtoms; i2++) {
    setCheck(f1Angle, i2, new carcc3.InventorAngle_0(meanX1, meanY1, f1.mAtomX[index1[i2]], f1.mAtomY[index1[i2]]));
    setCheck(f2Angle, i2, new carcc3.InventorAngle_0(meanX1, meanY1, f2.mAtomX[index2[i2]], f2.mAtomY[index2[i2]]));
    setCheck(angleDif, i2, new carcc3.InventorAngle(f1Angle[i2].mAngle - f2Angle[i2].mAngle, f1Angle[i2].mLength * f2Angle[i2].mLength));
    setCheck(angleDifFlip, i2, new carcc3.InventorAngle(f1Angle[i2].mAngle + f2Angle[i2].mAngle, f1Angle[i2].mLength * f2Angle[i2].mLength));
  }
  meanAngleDif = carcc3.getMeanAngle(angleDif, commonAtoms);
  meanAngleDifFlip = carcc3.getMeanAngle(angleDifFlip, commonAtoms);
  neighbourCountF1 = 0;
  neighbourCountF2 = 0;
  for (i3 = 0; i3 < commonAtoms; i3++) {
    for (j = 0; j < this.mMol.getAllConnAtoms_0(commonAtom[i3]); j++) {
      connAtom = this.mMol.getConnAtom_0(commonAtom[i3], j);
      if (f1.isMember_0(connAtom) && !f2.isMember_0(connAtom))
        neighbourCountF1++;
      if (!f1.isMember_0(connAtom) && f2.isMember_0(connAtom))
        neighbourCountF2++;
    }
  }
  f1NeighbourAngle = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 7:1}, 54, neighbourCountF1, 0, 1);
  f2NeighbourAngle = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 7:1}, 54, neighbourCountF2, 0, 1);
  f2NeighbourAngleFlip = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 7:1}, 54, neighbourCountF2, 0, 1);
  neighbourCountF1 = 0;
  neighbourCountF2 = 0;
  for (i = 0; i < commonAtoms; i++) {
    for (j = 0; j < this.mMol.getAllConnAtoms_0(commonAtom[i]); j++) {
      connAtom = this.mMol.getConnAtom_0(commonAtom[i], j);
      if (f1.isMember_0(connAtom) && !f2.isMember_0(connAtom)) {
        connIndex = f1.getLocalAtom(connAtom);
        setCheck(f1NeighbourAngle, neighbourCountF1, new carcc3.InventorAngle_0(f1.mAtomX[index1[i]], f1.mAtomY[index1[i]], f1.mAtomX[connIndex], f1.mAtomY[connIndex]));
        neighbourCountF1++;
      }
      if (!f1.isMember_0(connAtom) && f2.isMember_0(connAtom)) {
        connIndex = f2.getLocalAtom(connAtom);
        neighbourAngle = new carcc3.InventorAngle_0(f2.mAtomX[index2[i]], f2.mAtomY[index2[i]], f2.mAtomX[connIndex], f2.mAtomY[connIndex]);
        setCheck(f2NeighbourAngle, neighbourCountF2, new carcc3.InventorAngle(meanAngleDif.mAngle + neighbourAngle.mAngle, neighbourAngle.mLength));
        setCheck(f2NeighbourAngleFlip, neighbourCountF2, new carcc3.InventorAngle(meanAngleDifFlip.mAngle - neighbourAngle.mAngle, neighbourAngle.mLength));
        neighbourCountF2++;
      }
    }
  }
  meanNeighbourAngleF1 = carcc3.getMeanAngle(f1NeighbourAngle, neighbourCountF1);
  meanNeighbourAngleF2 = carcc3.getMeanAngle(f2NeighbourAngle, neighbourCountF2);
  meanNeighbourAngleF2Flip = carcc3.getMeanAngle(f2NeighbourAngleFlip, neighbourCountF2);
  if ($wnd.Math.abs(this.getAngleDif_0(meanNeighbourAngleF1.mAngle, meanNeighbourAngleF2.mAngle)) > $wnd.Math.abs(this.getAngleDif_0(meanNeighbourAngleF1.mAngle, meanNeighbourAngleF2Flip.mAngle))) {
    f2.rotate_0(meanX1, meanY1, meanAngleDif.mAngle);
  }
   else {
    f2.flip(meanX1, meanY1, 0);
    f2.rotate_0(meanX1, meanY1, meanAngleDifFlip.mAngle);
  }
  return this.getMergedFragment(f1, f2, commonAtoms);
}
;
_.getLargeRingBondParity = function getLargeRingBondParity(ringAtom, ringBond, index_0){
  var bondParity, higherIndex, highestIndex, lowerIndex, sharedRing1, sharedRing2;
  higherIndex = index_0 == ringAtom.length - 1?0:index_0 + 1;
  lowerIndex = index_0 == 0?ringAtom.length - 1:index_0 - 1;
  highestIndex = higherIndex == ringAtom.length - 1?0:higherIndex + 1;
  if (this.mMol.getBondOrder_0(ringBond[index_0]) == 2) {
    bondParity = this.mMol.getBondParity_0(ringBond[index_0]);
    if (bondParity == 1 || bondParity == 2) {
      if (this.isLowestIndexNeighbour(ringAtom[lowerIndex], ringAtom[index_0], ringAtom[higherIndex]) ^ this.isLowestIndexNeighbour(ringAtom[highestIndex], ringAtom[higherIndex], ringAtom[index_0]))
        bondParity = bondParity == 1?2:1;
      return bondParity;
    }
  }
  if (this.mMol.isSmallRingBond_0(ringBond[index_0])) {
    sharedRing1 = this.mMol.getRingSet_0().getSharedRing_0(ringBond[lowerIndex], ringBond[index_0]);
    sharedRing2 = this.mMol.getRingSet_0().getSharedRing_0(ringBond[higherIndex], ringBond[index_0]);
    if (sharedRing1 != -1 || sharedRing2 != -1)
      return sharedRing1 == sharedRing2?2:1;
    return 2;
  }
  return 0;
}
;
_.getLongestUnhandledChain = function getLongestUnhandledChain(atom){
  var candidate, current, graphAtom, graphBond, graphLevel, graphParent, highest, i, index_0, j, theBond, theChain;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom;
  graphLevel[atom] = 1;
  graphParent[0] = -1;
  current = 0;
  highest = 0;
  while (current <= highest) {
    if (current == 0 || !this.mAtomHandled[graphAtom[current]]) {
      for (i = 0; i < this.mMol.getAllConnAtoms_0(graphAtom[current]); i++) {
        candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
        theBond = this.mMol.getConnBond_0(graphAtom[current], i);
        if (graphLevel[candidate] == 0 && !this.mBondHandled[theBond]) {
          graphAtom[++highest] = candidate;
          graphBond[highest] = theBond;
          graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
          graphParent[highest] = current;
        }
      }
    }
    if (current == highest) {
      theChain = new carcc3.InventorChain(graphLevel[graphAtom[current]]);
      index_0 = current;
      for (j = 0; j < theChain.getChainLength(); j++) {
        theChain.mAtom[j] = graphAtom[index_0];
        theChain.mBond[j] = graphBond[index_0];
        index_0 = graphParent[index_0];
      }
      return theChain;
    }
    current++;
  }
  return null;
}
;
_.getMaxPriorityAssociation = function getMaxPriorityAssociation(associationList){
  var association, association$iterator, maxFA, maxPriority;
  maxPriority = 0;
  maxFA = null;
  for (association$iterator = associationList.iterator(); association$iterator.hasNext_0();) {
    association = castTo(association$iterator.next_3(), 141);
    if (maxPriority < association.getPriority()) {
      maxPriority = association.getPriority();
      maxFA = association;
    }
  }
  return maxFA;
}
;
_.getMergedFragment = function getMergedFragment(f1, f2, commonAtoms){
  var count, f, i, i0, index_0;
  f = new carcc3.InventorFragment(this.mMol, f1.mGlobalAtom.length + f2.mGlobalAtom.length - commonAtoms, f1.mKeepMarkedAtoms | f2.mKeepMarkedAtoms);
  count = 0;
  for (i0 = 0; i0 < f1.mGlobalAtom.length; i0++) {
    f.mGlobalAtom[count] = f1.mGlobalAtom[i0];
    f.mPriority[count] = f1.mPriority[i0];
    f.mAtomX[count] = f1.mAtomX[i0];
    f.mAtomY[count++] = f1.mAtomY[i0];
  }
  for (i = 0; i < f2.mGlobalAtom.length; i++) {
    index_0 = f1.getLocalAtom(f2.mGlobalAtom[i]);
    if (index_0 == -1) {
      f.mGlobalAtom[count] = f2.mGlobalAtom[i];
      f.mPriority[count] = f2.mPriority[i];
      f.mAtomX[count] = f2.mAtomX[i];
      f.mAtomY[count++] = f2.mAtomY[i];
    }
     else {
      if (f.mPriority[index_0] < f2.mPriority[i]) {
        f.mPriority[index_0] = f2.mPriority[i];
        f.mAtomX[index_0] = f2.mAtomX[i];
        f.mAtomY[index_0] = f2.mAtomY[i];
      }
    }
  }
  return f;
}
;
_.getShortestConnection = function getShortestConnection(atom1, atom2){
  var bondSequence, candidate, chainLength, current, graphAtom, graphBond, graphLevel, graphParent, highest, i, j, theBond;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom2;
  graphLevel[atom2] = 1;
  graphParent[0] = -1;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getAllConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      theBond = this.mMol.getConnBond_0(graphAtom[current], i);
      if (candidate == atom1) {
        chainLength = graphLevel[graphAtom[current]];
        bondSequence = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, chainLength, 15, 1);
        bondSequence[0] = theBond;
        for (j = 1; j < chainLength; j++) {
          bondSequence[j] = graphBond[current];
          current = graphParent[current];
        }
        return bondSequence;
      }
      if (graphLevel[candidate] == 0) {
        graphAtom[++highest] = candidate;
        graphBond[highest] = theBond;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
        graphParent[highest] = current;
      }
    }
    if (current == highest)
      return null;
    current++;
  }
  return null;
}
;
_.getSmallestRingFromBond = function getSmallestRingFromBond(bond){
  var atom1, atom2, candidate, current, graphAtom, graphBond, graphLevel, graphParent, highest, i, index_0, j, theRing;
  atom1 = this.mMol.getBondAtom_0(0, bond);
  atom2 = this.mMol.getBondAtom_0(1, bond);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphParent = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom1;
  graphAtom[1] = atom2;
  graphBond[1] = bond;
  graphLevel[atom1] = 1;
  graphLevel[atom2] = 2;
  graphParent[0] = -1;
  graphParent[1] = 0;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      if (current > 1 && candidate == atom1) {
        theRing = new carcc3.InventorChain(graphLevel[graphAtom[current]]);
        graphBond[0] = this.mMol.getConnBond_0(graphAtom[current], i);
        index_0 = current;
        for (j = 0; j < theRing.getChainLength(); j++) {
          theRing.mAtom[j] = graphAtom[index_0];
          theRing.mBond[j] = graphBond[index_0];
          index_0 = graphParent[index_0];
        }
        return theRing;
      }
      if (graphLevel[candidate] == 0 && this.mMol.isRingAtom_0(candidate)) {
        graphAtom[++highest] = candidate;
        graphBond[highest] = this.mMol.getConnBond_0(graphAtom[current], i);
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
        graphParent[highest] = current;
      }
    }
    current++;
  }
  return null;
}
;
_.getSmallestRingSize = function getSmallestRingSize(atom1, atom2, atom3){
  var candidate, current, graphAtom, graphLevel, highest, i;
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphLevel = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom2;
  graphAtom[1] = atom1;
  graphLevel[atom2] = 1;
  graphLevel[atom1] = 2;
  current = 1;
  highest = 1;
  while (current <= highest) {
    for (i = 0; i < this.mMol.getConnAtoms_0(graphAtom[current]); i++) {
      candidate = this.mMol.getConnAtom_0(graphAtom[current], i);
      if (candidate == atom3)
        return 1 + graphLevel[graphAtom[current]];
      if (graphLevel[candidate] == 0 && this.mMol.isRingAtom_0(candidate)) {
        graphAtom[++highest] = candidate;
        graphLevel[candidate] = graphLevel[graphAtom[current]] + 1;
      }
    }
    current++;
  }
  return 0;
}
;
_.invent = function invent_0(mol){
  this.invent_0(mol, null);
}
;
_.invent_0 = function invent_1(mol, ffp){
  var atom, f, f$iterator, i, j, paritiesPresent, parityState;
  paritiesPresent = (mol.getHelperArrayStatus_0() & 15) != 0;
  parityState = mol.getHelperArrayStatus_0() & 248;
  if (isNull(this.mRandom))
    this.mRandom = new ju.Random;
  if ((this.mMode & 2) != 0)
    mol.removeExplicitHydrogens_1(false, false);
  this.mMol = mol;
  this.mMol.ensureHelperArrays_0(7);
  this.mFFP = ffp;
  this.mFragmentList = new carcc3.CoordinateInventor$1(this);
  this.mAtomHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
  this.mBondHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllBonds_0(), 16, 1);
  this.mUnPairedCharge = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++)
    this.mUnPairedCharge[atom] = this.mMol.getAtomCharge_0(atom);
  if ((this.mMode & 12) != 0) {
    this.locateMarkedFragments();
  }
  if (isNotNull(this.mCustomTemplateList))
    this.mAtomIsPartOfCustomTemplate = this.locateTemplateFragments(this.mCustomTemplateList, 512);
  if ((this.mMode & 1) == 0 && isNotNull(carcc3.sDefaultTemplateList))
    this.locateTemplateFragments(carcc3.sDefaultTemplateList, 256);
  this.locateInitialFragments();
  this.joinOverlappingFragments();
  this.locateChainFragments();
  this.joinOverlappingFragments();
  for (f$iterator = this.mFragmentList.iterator(); f$iterator.hasNext_0();) {
    f = castTo(f$iterator.next_3(), 42);
    f.locateBonds();
  }
  this.correctChainEZParities();
  this.optimizeFragments();
  this.locateSingleAtoms();
  this.joinMetalBondedFragments();
  this.joinChargedFragments();
  this.joinRemainingFragments();
  for (i = 0; i < this.mFragmentList.size(); i++) {
    f = castTo(this.mFragmentList.getAtIndex(i), 42);
    for (j = 0; j < f.size_1(); j++) {
      this.mMol.setAtomX_0(f.mGlobalAtom[j], f.mAtomX[j]);
      this.mMol.setAtomY_0(f.mGlobalAtom[j], f.mAtomY[j]);
      this.mMol.setAtomZ_0(f.mGlobalAtom[j], 0);
    }
  }
  if (paritiesPresent) {
    this.mMol.setParitiesValid_0(parityState);
    this.mMol.setStereoBondsFromParity_0();
  }
  if (this.mAbsoluteOrientationTemplateFound)
    this.mMol.removeAtomMarkers_0();
}
;
_.isLowestIndexNeighbour = function isLowestIndexNeighbour(atom, rootAtom, excludeAtom){
  var connAtom, i;
  for (i = 0; i < this.mMol.getConnAtoms_0(rootAtom); i++) {
    connAtom = this.mMol.getConnAtom_0(rootAtom, i);
    if (connAtom != excludeAtom && connAtom < atom)
      return false;
  }
  return true;
}
;
_.joinAssociatedFragments = function joinAssociatedFragments(association, minDistance){
  var mergedFragment;
  association.arrange(minDistance, (this.mMode & 12) != 0);
  mergedFragment = this.getMergedFragment(association.getFragment_0(0), association.getFragment_0(1), 0);
  this.updateFragmentList(association.getFragment_0(0), association.getFragment_0(1), mergedFragment);
}
;
_.joinChargedFragments = function joinChargedFragments(){
  var association;
  association = this.createChargeAssociation();
  while (isNotNull(association)) {
    this.joinAssociatedFragments(association, 1.5);
    association = this.createChargeAssociation();
  }
}
;
_.joinFragments = function joinFragments(f1, f2, commonAtoms){
  var commonAtom, count, i, j, joinedFragment;
  commonAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, commonAtoms, 15, 1);
  count = 0;
  for (i = 0; i < f1.mGlobalAtom.length; i++)
    for (j = 0; j < f2.mGlobalAtom.length; j++)
      if (f1.mGlobalAtom[i] == f2.mGlobalAtom[j])
        commonAtom[count++] = f1.mGlobalAtom[i];
  joinedFragment = commonAtoms == 1?this.getFusedFragment(f1, f2, commonAtom[0]):this.getFusedFragment_0(f1, f2, commonAtom, commonAtoms);
  this.updateFragmentList(f1, f2, joinedFragment);
}
;
_.joinMetalBondedFragments = function joinMetalBondedFragments(){
  var association, associationList;
  associationList = this.createMetalBondAssociations();
  while (isNotNull(associationList)) {
    association = this.getMaxPriorityAssociation(associationList);
    this.joinAssociatedFragments(association, 1.2);
    associationList = this.createMetalBondAssociations();
  }
}
;
_.joinOverlappingFragments = function joinOverlappingFragments(){
  var commonAtom, commonAtoms, f1, f2, handlePreferred, i, j, joinPriority, k, k0, k1, l, maxCommonAtoms, maxF1Priority, maxF2Priority, maxFragment1, maxFragment2, maxJoinPriority;
  while (true) {
    maxJoinPriority = 0;
    maxCommonAtoms = 0;
    maxFragment1 = null;
    maxFragment2 = null;
    for (i = 1; i < this.mFragmentList.size(); i++) {
      f1 = castTo(this.mFragmentList.getAtIndex(i), 42);
      for (j = 0; j < i; j++) {
        f2 = castTo(this.mFragmentList.getAtIndex(j), 42);
        commonAtom = 0;
        commonAtoms = 0;
        maxF1Priority = 0;
        maxF2Priority = 0;
        for (k0 = 0; k0 < f1.size_1(); k0++) {
          for (l = 0; l < f2.size_1(); l++) {
            if (f1.mGlobalAtom[k0] == f2.mGlobalAtom[l]) {
              commonAtoms++;
              commonAtom = f1.mGlobalAtom[k0];
              if (maxF1Priority < f1.mPriority[k0])
                maxF1Priority = f1.mPriority[k0];
              if (maxF2Priority < f2.mPriority[l])
                maxF2Priority = f2.mPriority[l];
            }
          }
        }
        if (commonAtoms > 0) {
          handlePreferred = commonAtoms == 1 && this.getConnAtoms_1(f1, commonAtom) == 1 && this.getConnAtoms_1(f2, commonAtom) == 1?0:1;
          if (maxF1Priority > maxF2Priority)
            joinPriority = (handlePreferred << 24) + (maxF1Priority << 16) + (maxF2Priority << 8) + commonAtoms;
          else 
            joinPriority = (handlePreferred << 24) + (maxF2Priority << 16) + (maxF1Priority << 8) + commonAtoms;
          if (maxJoinPriority < joinPriority) {
            maxJoinPriority = joinPriority;
            maxCommonAtoms = commonAtoms;
            maxF1Priority = 0;
            maxF2Priority = 0;
            for (k1 = 0; k1 < f1.size_1(); k1++)
              if (maxF1Priority < f1.mPriority[k1])
                maxF1Priority = f1.mPriority[k1];
            for (k = 0; k < f2.size_1(); k++)
              if (maxF2Priority < f2.mPriority[k])
                maxF2Priority = f2.mPriority[k];
            if (maxF1Priority > maxF2Priority) {
              maxFragment1 = f1;
              maxFragment2 = f2;
            }
             else {
              maxFragment1 = f2;
              maxFragment2 = f1;
            }
          }
        }
      }
    }
    if (maxJoinPriority == 0)
      break;
    if (maxCommonAtoms == maxFragment1.size_1())
      this.mFragmentList.remove(maxFragment1);
    else if (maxCommonAtoms == maxFragment2.size_1())
      this.mFragmentList.remove(maxFragment2);
    else 
      this.joinFragments(maxFragment1, maxFragment2, maxCommonAtoms);
  }
}
;
_.joinRemainingFragments = function joinRemainingFragments(){
  var association;
  association = this.createDisconnectedAssociation();
  while (isNotNull(association)) {
    this.joinAssociatedFragments(association, 1.8);
    association = this.createDisconnectedAssociation();
  }
}
;
_.locateChainFragments = function locateChainFragments(){
  var atom, f, i, i0, longestChain, theChain, unhandledBonds;
  while (true) {
    longestChain = null;
    for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
      unhandledBonds = 0;
      for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++)
        if (!this.mBondHandled[this.mMol.getConnBond_0(atom, i0)])
          unhandledBonds++;
      if (unhandledBonds == 1) {
        theChain = this.getLongestUnhandledChain(atom);
        if (isNull(longestChain) || theChain.getChainLength() > longestChain.getChainLength())
          longestChain = theChain;
      }
    }
    if (isNull(longestChain))
      break;
    f = new carcc3.InventorFragment(this.mMol, longestChain.getChainLength(), false);
    for (i = 0; i < longestChain.getChainLength(); i++) {
      this.mAtomHandled[longestChain.mAtom[i]] = true;
      if (i < longestChain.getChainLength() - 1)
        this.mBondHandled[longestChain.mBond[i]] = true;
      f.mGlobalAtom[i] = longestChain.mAtom[i];
      f.mAtomX[i] = $wnd.Math.cos(3.141592653589793 / 6) * i;
      f.mAtomY[i] = (i & 1) == 1?0:0.5;
      f.mPriority[i] = 128 + longestChain.getChainLength();
    }
    this.mFragmentList.add(f);
  }
}
;
_.locateFlipBonds = function locateFlipBonds(bondFlipPriority, atomSymRank){
  var atom1, atom2, bond, bondAtom, connAtom, connSymRank, i, j, oneBondEndIsSymmetric, symmetricEndFound;
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    if (this.mMol.isRingBond_0(bond) || this.mMol.getBondOrder_0(bond) != 1 || this.mMol.getAllConnAtoms_0(atom1) == 1 || this.mMol.getAllConnAtoms_0(atom2) == 1)
      continue;
    if ((this.mMode & 4) != 0 && this.mMol.isMarkedAtom_0(atom1) && this.mMol.isMarkedAtom_0(atom2))
      continue;
    oneBondEndIsSymmetric = false;
    for (i = 0; i < 2; i++) {
      bondAtom = this.mMol.getBondAtom_0(i, bond);
      if (this.mMol.getAllConnAtoms_0(bondAtom) > 2) {
        symmetricEndFound = true;
        connSymRank = -1;
        for (j = 0; j < this.mMol.getAllConnAtoms_0(bondAtom); j++) {
          connAtom = this.mMol.getConnAtom_0(bondAtom, j);
          if (connAtom != this.mMol.getBondAtom_0(1 - i, bond)) {
            if (connSymRank == -1)
              connSymRank = atomSymRank[connAtom];
            else if (connSymRank != atomSymRank[connAtom])
              symmetricEndFound = false;
          }
        }
        if (symmetricEndFound) {
          oneBondEndIsSymmetric = true;
          break;
        }
      }
    }
    if (!oneBondEndIsSymmetric) {
      if ((this.mMode & 8) != 0 && this.mMol.isMarkedAtom_0(atom1) && this.mMol.isMarkedAtom_0(atom2))
        bondFlipPriority[bond] = 1;
      else 
        bondFlipPriority[bond] = 2;
    }
  }
}
;
_.locateInitialFragments = function locateInitialFragments(){
  var alleneAtom, atom, atom0, atom1, atom2, bond, bond0, bond1, connAtom, count, current, f, found, i, i0, i1, isElementaryRing, j, j0, j1, last, members, nextIndex, primaryConnAtom, primaryConnBond, primaryConns, ringAtom, ringBond, ringNo, ringSet, ringSize, skipRing, temp, theRing;
  for (atom0 = 0; atom0 < this.mMol.getAtoms_0(); atom0++) {
    if (this.mMol.getAllConnAtoms_0(atom0) > 4) {
      f = new carcc3.InventorFragment(this.mMol, 1 + this.mMol.getAllConnAtoms_0(atom0), false);
      f.mAtomX[this.mMol.getAllConnAtoms_0(atom0)] = 0;
      f.mAtomY[this.mMol.getAllConnAtoms_0(atom0)] = 0;
      f.mPriority[this.mMol.getAllConnAtoms_0(atom0)] = 32;
      f.mGlobalAtom[this.mMol.getAllConnAtoms_0(atom0)] = atom0;
      this.mAtomHandled[atom0] = true;
      for (i = 0; i < this.mMol.getAllConnAtoms_0(atom0); i++) {
        connAtom = this.mMol.getConnAtom_0(atom0, i);
        f.mAtomX[i] = $wnd.Math.sin(3.141592653589793 / 3 * i - 3.141592653589793 / 3 * 2);
        f.mAtomY[i] = $wnd.Math.cos(3.141592653589793 / 3 * i - 3.141592653589793 / 3 * 2);
        f.mPriority[i] = 32;
        f.mGlobalAtom[i] = connAtom;
        this.mAtomHandled[connAtom] = true;
        this.mBondHandled[this.mMol.getConnBond_0(atom0, i)] = true;
      }
      this.mFragmentList.add(f);
    }
  }
  ringSet = this.mMol.getRingSet_0();
  for (ringNo = 0; ringNo < ringSet.getSize_0(); ringNo++) {
    ringSize = ringSet.getRingSize_0(ringNo);
    ringAtom = ringSet.getRingAtoms_0(ringNo);
    skipRing = false;
    if ((this.mMode & 12) != 0) {
      skipRing = true;
      for (i = 0; i < ringSize; i++) {
        if (!this.mMol.isMarkedAtom_0(ringAtom[i])) {
          skipRing = false;
          break;
        }
      }
    }
    if (!skipRing) {
      isElementaryRing = false;
      for (i0 = 0; i0 < ringSize; i0++) {
        if (this.mMol.getAtomRingSize_0(ringAtom[i0]) == ringSize) {
          isElementaryRing = true;
          break;
        }
      }
      if (isElementaryRing) {
        ringBond = ringSet.getRingBonds_0(ringNo);
        this.addRingFragment(ringAtom, ringBond);
        for (i = 0; i < ringSize; i++) {
          this.mAtomHandled[ringAtom[i]] = true;
          this.mBondHandled[ringBond[i]] = true;
        }
      }
    }
  }
  for (bond0 = 0; bond0 < this.mMol.getBonds_0(); bond0++) {
    if (this.mMol.isRingBond_0(bond0) && !this.mBondHandled[bond0]) {
      theRing = this.getSmallestRingFromBond(bond0);
      ringAtom = theRing.getRingAtoms_1();
      ringBond = theRing.getRingBonds_2();
      this.addRingFragment(ringAtom, ringBond);
      for (i = 0; i < theRing.getChainLength(); i++) {
        this.mAtomHandled[ringAtom[i]] = true;
        this.mBondHandled[ringBond[i]] = true;
      }
    }
  }
  for (bond1 = 0; bond1 < this.mMol.getAllBonds_0(); bond1++) {
    if (!this.mBondHandled[bond1] && this.mMol.getBondOrder_0(bond1) == 3) {
      atom1 = this.mMol.getBondAtom_0(0, bond1);
      atom2 = this.mMol.getBondAtom_0(1, bond1);
      members = this.mMol.getAllConnAtoms_0(atom1) + this.mMol.getAllConnAtoms_0(atom2);
      if (members > 2) {
        f = new carcc3.InventorFragment(this.mMol, members, false);
        count = 0;
        for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom1); i0++) {
          connAtom = this.mMol.getConnAtom_0(atom1, i0);
          if (connAtom != atom2) {
            f.mGlobalAtom[count++] = connAtom;
            this.mAtomHandled[connAtom] = true;
            this.mBondHandled[this.mMol.getConnBond_0(atom1, i0)] = true;
          }
        }
        f.mGlobalAtom[count++] = atom1;
        f.mGlobalAtom[count++] = atom2;
        for (i1 = 0; i1 < this.mMol.getAllConnAtoms_0(atom2); i1++) {
          connAtom = this.mMol.getConnAtom_0(atom2, i1);
          if (connAtom != atom1) {
            f.mGlobalAtom[count++] = connAtom;
            this.mAtomHandled[connAtom] = true;
            this.mBondHandled[this.mMol.getConnBond_0(atom2, i1)] = true;
          }
        }
        for (i = 0; i < members; i++) {
          f.mAtomX[i] = i;
          f.mAtomY[i] = 0;
          f.mPriority[i] = 1;
        }
        this.mAtomHandled[atom1] = true;
        this.mAtomHandled[atom2] = true;
        this.mBondHandled[bond1] = true;
        this.mFragmentList.add(f);
      }
    }
  }
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    if (!this.mBondHandled[bond] && this.mMol.getBondOrder_0(bond) == 2) {
      alleneAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
      for (i = 0; i < 2; i++) {
        alleneAtom[0] = this.mMol.getBondAtom_0(i, bond);
        alleneAtom[1] = this.mMol.getBondAtom_0(1 - i, bond);
        if (this.mMol.getAtomPi_0(alleneAtom[0]) == 1 && this.mMol.getAtomPi_0(alleneAtom[1]) == 2 && this.mMol.getAllConnAtoms_0(alleneAtom[1]) == 2) {
          this.mAtomHandled[alleneAtom[0]] = true;
          this.mAtomHandled[alleneAtom[1]] = true;
          this.mBondHandled[bond] = true;
          last = 1;
          do {
            nextIndex = this.mMol.getConnAtom_0(alleneAtom[last], 0) == alleneAtom[last - 1]?1:0;
            alleneAtom[last + 1] = this.mMol.getConnAtom_0(alleneAtom[last], nextIndex);
            if (this.mMol.getAtomPi_0(alleneAtom[last + 1]) == 2 && this.mMol.getAllConnAtoms_0(alleneAtom[last + 1]) > 2)
              break;
            this.mAtomHandled[alleneAtom[last + 1]] = true;
            this.mBondHandled[this.mMol.getConnBond_0(alleneAtom[last], nextIndex)] = true;
            last++;
          }
           while (this.mMol.getAtomPi_0(alleneAtom[last]) == 2 && this.mMol.getAllConnAtoms_0(alleneAtom[last]) == 2);
          members = this.mMol.getAllConnAtoms_0(alleneAtom[0]) + this.mMol.getAllConnAtoms_0(alleneAtom[last]) + last - 1;
          f = new carcc3.InventorFragment(this.mMol, members, false);
          for (j0 = 0; j0 <= last; j0++) {
            f.mAtomX[j0] = j0;
            f.mAtomY[j0] = 0;
            f.mPriority[j0] = 64;
            f.mGlobalAtom[j0] = alleneAtom[j0];
          }
          current = last + 1;
          found = false;
          for (j1 = 0; j1 < this.mMol.getAllConnAtoms_0(alleneAtom[0]); j1++) {
            connAtom = this.mMol.getConnAtom_0(alleneAtom[0], j1);
            if (connAtom != alleneAtom[1]) {
              f.mAtomX[current] = -0.5;
              f.mAtomY[current] = found?$wnd.Math.sin(3.141592653589793 / 3):-$wnd.Math.sin(3.141592653589793 / 3);
              f.mPriority[current] = 64;
              f.mGlobalAtom[current] = connAtom;
              current++;
              found = true;
            }
          }
          found = false;
          for (j = 0; j < this.mMol.getAllConnAtoms_0(alleneAtom[last]); j++) {
            connAtom = this.mMol.getConnAtom_0(alleneAtom[last], j);
            if (connAtom != alleneAtom[last - 1]) {
              f.mAtomX[current] = last + 0.5;
              f.mAtomY[current] = found?-$wnd.Math.sin(3.141592653589793 / 3):$wnd.Math.sin(3.141592653589793 / 3);
              f.mPriority[current] = 64;
              f.mGlobalAtom[current] = connAtom;
              current++;
              found = true;
            }
          }
          this.mFragmentList.add(f);
        }
      }
    }
  }
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (this.mMol.getAllConnAtoms_0(atom) == 4) {
      primaryConnAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
      primaryConnBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
      primaryConns = 0;
      for (i0 = 0; i0 < 4; i0++) {
        primaryConnAtom[primaryConns] = this.mMol.getConnAtom_0(atom, i0);
        primaryConnBond[primaryConns] = this.mMol.getConnBond_0(atom, i0);
        if (this.mMol.getAllConnAtoms_0(primaryConnAtom[primaryConns]) == 1 && !this.mBondHandled[primaryConnBond[primaryConns]])
          primaryConns++;
      }
      if (primaryConns == 2) {
        f = new carcc3.InventorFragment(this.mMol, 3, false);
        for (i = 0; i < 2; i++) {
          this.mAtomHandled[primaryConnAtom[i]] = true;
          this.mBondHandled[primaryConnBond[i]] = true;
          f.mGlobalAtom[i] = primaryConnAtom[i];
          f.mPriority[i] = 32;
        }
        f.mAtomX[0] = -0.5;
        f.mAtomY[0] = 0.866;
        f.mAtomX[1] = 0.5;
        f.mAtomY[1] = 0.866;
        f.mAtomX[2] = 0;
        f.mAtomY[2] = 0;
        f.mPriority[2] = 32;
        f.mGlobalAtom[2] = atom;
        this.mFragmentList.add(f);
      }
      if (primaryConns == 3) {
        for (i1 = 0; i1 < 2; i1++) {
          if (this.mMol.getBondOrder_0(primaryConnBond[i1]) == 1) {
            temp = primaryConnAtom[i1];
            primaryConnAtom[i1] = primaryConnAtom[2];
            primaryConnAtom[2] = temp;
            temp = primaryConnBond[i1];
            primaryConnBond[i1] = primaryConnBond[2];
            primaryConnBond[2] = temp;
          }
        }
        f = new carcc3.InventorFragment(this.mMol, 4, false);
        for (i = 0; i < 3; i++) {
          this.mAtomHandled[primaryConnAtom[i]] = true;
          this.mBondHandled[primaryConnBond[i]] = true;
          f.mGlobalAtom[i] = primaryConnAtom[i];
          f.mPriority[i] = 32;
        }
        f.mAtomX[0] = -1;
        f.mAtomY[0] = 0;
        f.mAtomX[1] = 1;
        f.mAtomY[1] = 0;
        f.mAtomX[2] = 0;
        f.mAtomY[2] = 1;
        f.mAtomX[3] = 0;
        f.mAtomY[3] = 0;
        f.mPriority[3] = 32;
        f.mGlobalAtom[3] = atom;
        this.mFragmentList.add(f);
      }
    }
  }
}
;
_.locateMarkedFragments = function locateMarkedFragments(){
  var atom, atom0, atom1, atom2, atom3, atom4, atomCount, atomIndex, avbl, bond, bondCount, coreFragmentCount, f, f0, f1, f2, fragment, fragmentAtomCount, fragmentNo, maxFragment, maxFragmentAtoms;
  atomCount = 0;
  for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++)
    if (this.mMol.isMarkedAtom_0(atom0))
      atomCount++;
  if (atomCount < 2)
    return;
  bondCount = 0;
  avbl = 0;
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    if (this.mMol.isMarkedAtom_0(atom1) && this.mMol.isMarkedAtom_0(atom2)) {
      this.mBondHandled[bond] = true;
      this.mAtomHandled[atom1] = true;
      this.mAtomHandled[atom2] = true;
      avbl += this.mMol.getBondLength_0(bond);
      bondCount++;
    }
  }
  if (bondCount != 0 && avbl != 0)
    avbl /= bondCount;
  else {
    avbl = this.mMol.getAverageBondLength_0();
  }
  for (atom3 = 0; atom3 < this.mMol.getAllAtoms_0(); atom3++)
    if (this.mMol.isMarkedAtom_0(atom3) && !this.mAtomHandled[atom3])
      atomCount--;
  if (atomCount < 2)
    return;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  coreFragmentCount = this.mMol.getFragmentNumbers_0(fragmentNo, true, true);
  fragmentAtomCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, coreFragmentCount, 15, 1);
  for (atom4 = 0; atom4 < this.mMol.getAllAtoms_0(); atom4++)
    if (fragmentNo[atom4] != -1)
      fragmentAtomCount[fragmentNo[atom4]]++;
  fragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorFragment_2_classLit, {4:1, 1:1, 7:1}, 42, coreFragmentCount, 0, 1);
  for (f0 = 0; f0 < coreFragmentCount; f0++)
    setCheck(fragment, f0, new carcc3.InventorFragment(this.mMol, fragmentAtomCount[f0], true));
  atomIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, coreFragmentCount, 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    f1 = fragmentNo[atom];
    if (f1 != -1) {
      fragment[f1].mPriority[atomIndex[f1]] = 1024;
      fragment[f1].mGlobalAtom[atomIndex[f1]] = atom;
      fragment[f1].mAtomX[atomIndex[f1]] = this.mMol.getAtomX_0(atom) / avbl;
      fragment[f1].mAtomY[atomIndex[f1]] = this.mMol.getAtomY_0(atom) / avbl;
      atomIndex[f1]++;
    }
  }
  maxFragment = -1;
  maxFragmentAtoms = 0;
  for (f2 = 0; f2 < coreFragmentCount; f2++) {
    if (maxFragmentAtoms < fragmentAtomCount[f2]) {
      maxFragmentAtoms = fragmentAtomCount[f2];
      maxFragment = f2;
    }
  }
  this.mFragmentList.add(fragment[maxFragment]);
  for (f = 0; f < coreFragmentCount; f++)
    if (f != maxFragment)
      this.mFragmentList.add(fragment[f]);
}
;
_.locateSingleAtoms = function locateSingleAtoms(){
  var atom, f;
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (!this.mAtomHandled[atom] && this.mMol.getAllConnAtoms_0(atom) == 0) {
      f = new carcc3.InventorFragment(this.mMol, 1, false);
      this.mAtomHandled[atom] = true;
      f.mGlobalAtom[0] = atom;
      f.mAtomX[0] = 0;
      f.mAtomY[0] = 0;
      f.mPriority[0] = 0;
      this.mFragmentList.add(f);
    }
  }
}
;
_.locateTemplateFragments = function locateTemplateFragments(templateList, priority){
  var atom, atom$array, atom$index, atom$max, atomIsPartOfTemplate, b, definesAbsoluteOrientation, fragment, i, match_0, match$iterator, matchList, searcher, searcherWithIndex, template, template$iterator, templateAtomCount, templateMol, useFFP;
  useFFP = jsNotEquals(this.mFFP, null) && templateList.size() != 0 && jsNotEquals(castTo(templateList.getAtIndex(0), 235).getFFP(), null);
  searcher = null;
  searcherWithIndex = null;
  if (useFFP) {
    searcherWithIndex = new carc2.SSSearcherWithIndex;
    searcherWithIndex.setMolecule_2(this.mMol, this.mFFP);
  }
   else {
    searcher = new carc2.SSSearcher;
    searcher.setMolecule_0(this.mMol);
  }
  atomIsPartOfTemplate = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAtoms_0(), 16, 1);
  for (template$iterator = templateList.iterator(); template$iterator.hasNext_0();) {
    template = castTo(template$iterator.next_3(), 235);
    matchList = null;
    templateMol = template.getFragment();
    if (useFFP) {
      searcherWithIndex.setFragment_3(templateMol, template.getFFP());
      if (searcherWithIndex.findFragmentInMolecule(4, 8) != 0)
        matchList = searcherWithIndex.getGraphMatcher().getMatchList();
    }
     else {
      searcher.setFragment_1(templateMol);
      if (searcher.findFragmentInMolecule(4, 8) != 0)
        matchList = searcher.getMatchList();
    }
    if (isNotNull(matchList)) {
      for (match$iterator = matchList.iterator(); match$iterator.hasNext_0();) {
        match_0 = castTo(match$iterator.next_3(), 6);
        templateAtomCount = 0;
        for (atom$array = match_0 , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
          atom = atom$array[atom$index];
          if (atomIsPartOfTemplate[atom])
            templateAtomCount++;
        }
        if (templateAtomCount <= 1) {
          definesAbsoluteOrientation = template.keepAbsoluteOrientation();
          if (this.mAbsoluteOrientationTemplateFound)
            definesAbsoluteOrientation = false;
          else 
            this.mAbsoluteOrientationTemplateFound = true;
          fragment = new carcc3.InventorFragment(this.mMol, match_0.length, definesAbsoluteOrientation);
          for (i = 0; i < match_0.length; i++) {
            atom = match_0[i];
            if (definesAbsoluteOrientation)
              this.mMol.setAtomMarker_0(atom, true);
            fragment.mPriority[i] = priority;
            fragment.mGlobalAtom[i] = atom;
            fragment.mAtomX[i] = template.getNormalizedAtomX(i);
            fragment.mAtomY[i] = template.getNormalizedAtomY(i);
            atomIsPartOfTemplate[atom] = true;
            this.mAtomHandled[atom] = true;
          }
          for (b = 0; b < templateMol.getBonds_0(); b++)
            this.mBondHandled[this.mMol.getBond_0(match_0[templateMol.getBondAtom_0(0, b)], match_0[templateMol.getBondAtom_0(1, b)])] = true;
          this.mFragmentList.add(fragment);
        }
      }
    }
  }
  return atomIsPartOfTemplate;
}
;
_.optimizeFragments = function optimizeFragments(){
  var atomSymRank, availableBond, availableBonds, bond, bondFlipPriority, bondSequence, collidingAtom, collisionList, collisionNo, currentRank, f, flip, fragmentNo, i, lastBond, minCollisionFragment, minCollisionPanalty, nextAvailableRank, theBond, theRank;
  atomSymRank = this.calculateAtomSymmetries();
  bondFlipPriority = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, this.mMol.getAllBonds_0(), 15, 1);
  this.locateFlipBonds(bondFlipPriority, atomSymRank);
  for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++)
    if (bondFlipPriority[bond] == 2 && (this.mMol.isRingAtom_0(this.mMol.getBondAtom_0(0, bond)) || this.mMol.isRingAtom_0(this.mMol.getBondAtom_0(1, bond))))
      bondFlipPriority[bond] = 3;
  for (fragmentNo = 0; fragmentNo < this.mFragmentList.size(); fragmentNo++) {
    f = castTo(this.mFragmentList.getAtIndex(fragmentNo), 42);
    collisionList = f.getCollisionList();
    minCollisionPanalty = f.getCollisionPanalty();
    minCollisionFragment = new carcc3.InventorFragment_0(f);
    lastBond = -1;
    for (flip = 0; flip < 224 && collisionList.size() != 0; flip++) {
      collisionNo = this.mRandom.nextInt_0(collisionList.size());
      collidingAtom = castTo(collisionList.getAtIndex(collisionNo), 6);
      bondSequence = this.getShortestConnection(collidingAtom[0], collidingAtom[1]);
      availableBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, bondSequence.length, 15, 1);
      availableBonds = 0;
      if (flip < 32) {
        for (i = 1; i < bondSequence.length - 1; i++)
          if (bondFlipPriority[bondSequence[i]] == 3)
            availableBond[availableBonds++] = bondSequence[i];
      }
       else if (flip < 32 + 64) {
        for (i = 1; i < bondSequence.length - 1; i++)
          if (bondFlipPriority[bondSequence[i]] >= 2)
            availableBond[availableBonds++] = bondSequence[i];
      }
       else {
        for (i = 1; i < bondSequence.length - 1; i++)
          if (bondFlipPriority[bondSequence[i]] >= 1)
            availableBond[availableBonds++] = bondSequence[i];
      }
      if (availableBonds != 0) {
        theBond = availableBond[0];
        if (availableBonds > 1) {
          do {
            theBond = availableBond[this.mRandom.nextInt_0(availableBonds)];
          }
           while (theBond == lastBond);
        }
        if (theBond != lastBond) {
          lastBond = theBond;
          f.flipOneSide(theBond);
          collisionList = f.getCollisionList();
          if (minCollisionPanalty > f.getCollisionPanalty()) {
            minCollisionPanalty = f.getCollisionPanalty();
            minCollisionFragment = new carcc3.InventorFragment_0(f);
          }
        }
      }
    }
    this.mFragmentList.setAtIndex(fragmentNo, minCollisionFragment);
    f = minCollisionFragment;
    currentRank = 1;
    do {
      nextAvailableRank = 9999;
      for (i = 0; i < f.size_1(); i++) {
        theRank = atomSymRank[f.mGlobalAtom[i]];
        if (theRank == currentRank)
          f.optimizeAtomCoordinates(i);
        else if (theRank > currentRank && theRank < nextAvailableRank)
          nextAvailableRank = theRank;
      }
      currentRank = nextAvailableRank;
    }
     while (nextAvailableRank != 9999);
  }
}
;
_.setRandomSeed_0 = function setRandomSeed_0(seed){
  this.mRandom = new ju.Random_0(seed);
}
;
_.suggestNewBondAngle = function suggestNewBondAngle(f, atom){
  var angleDif, connAngle, connAngles, connAtom, connBond, i, i0, i1, index_0, j, maxAngleDif, maxIndex, ringSize, rootIndex, tempAngle, tempAtom, tempBond;
  connAngle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom) + 1, 15, 1);
  connAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom) + 1, 15, 1);
  connBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllConnAtoms_0(atom) + 1, 15, 1);
  rootIndex = f.getLocalAtom(atom);
  connAngles = 0;
  for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(atom); i0++) {
    connAtom[connAngles] = this.mMol.getConnAtom_0(atom, i0);
    connBond[connAngles] = this.mMol.getConnBond_0(atom, i0);
    index_0 = f.getLocalAtom(connAtom[connAngles]);
    if (index_0 != -1)
      connAngle[connAngles++] = carcc3.getAngle_2(f.mAtomX[rootIndex], f.mAtomY[rootIndex], f.mAtomX[index_0], f.mAtomY[index_0]);
  }
  if (connAngles == 1)
    return connAngle[0] + 3.141592653589793;
  for (i1 = connAngles - 1; i1 > 0; i1--) {
    for (j = 0; j < i1; j++) {
      if (connAngle[j] > connAngle[j + 1]) {
        tempAngle = connAngle[j];
        connAngle[j] = connAngle[j + 1];
        connAngle[j + 1] = tempAngle;
        tempAtom = connAtom[j];
        connAtom[j] = connAtom[j + 1];
        connAtom[j + 1] = tempAtom;
        tempBond = connBond[j];
        connBond[j] = connBond[j + 1];
        connBond[j + 1] = tempBond;
      }
    }
  }
  connAngle[connAngles] = connAngle[0] + 2 * 3.141592653589793;
  connAtom[connAngles] = connAtom[0];
  connBond[connAngles] = connBond[0];
  maxAngleDif = -100;
  maxIndex = 0;
  for (i = 0; i < connAngles; i++) {
    angleDif = connAngle[i + 1] - connAngle[i];
    if (connAngles > 2 && this.mMol.isRingBond_0(connBond[i]) && this.mMol.isRingBond_0(connBond[i + 1])) {
      ringSize = this.getSmallestRingSize(connAtom[i], atom, connAtom[i + 1]);
      if (ringSize != 0)
        angleDif -= 100 - ringSize;
    }
    if (maxAngleDif < angleDif) {
      maxAngleDif = angleDif;
      maxIndex = i;
    }
  }
  return (connAngle[maxIndex] + connAngle[maxIndex + 1]) / 2;
}
;
_.updateFragmentList = function updateFragmentList(fOld1, fOld2, fJoined){
  var index_0;
  index_0 = $wnd.Math.min(this.mFragmentList.indexOf(fOld1), this.mFragmentList.indexOf(fOld2));
  this.mFragmentList.addAtIndex(index_0, fJoined);
  this.mFragmentList.remove(fOld1);
  this.mFragmentList.remove(fOld2);
}
;
_.mAbsoluteOrientationTemplateFound = false;
_.mMode = 0;
carcc3.FLIP_AS_LAST_RESORT = 1;
carcc3.FLIP_POSSIBLE = 2;
carcc3.FLIP_PREFERRED = 3;
carcc3.LAST_RESORT_FLIPS = 128;
carcc3.MODE_CONSIDER_MARKED_ATOMS = 0;
carcc3.MODE_DEFAULT = 2;
carcc3.MODE_KEEP_MARKED_ATOM_COORDS = 4;
carcc3.MODE_PREFER_MARKED_ATOM_COORDS = 8;
carcc3.MODE_REMOVE_HYDROGEN = 2;
carcc3.MODE_SKIP_DEFAULT_TEMPLATES = 1;
carcc3.POSSIBLE_FLIPS = 64;
carcc3.PREFERRED_FLIPS = 32;
carcc3.TOTAL_FLIPS = 0;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor', 88, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_CoordinateInventor$1 = function $clinit_CoordinateInventor$1(){
  carcc3.$clinit_CoordinateInventor$1 = emptyMethod;
  ju.$clinit_ArrayList();
}
;
carcc3.CoordinateInventor$1 = function CoordinateInventor$1(this$0){
  carcc3.$clinit_CoordinateInventor$1();
  this.this$01 = this$0;
  ju.ArrayList.call(this);
  this.$init_66();
}
;
defineClass(511, 18, {4:1, 1:1, 18:1, 38:1, 57:1, 143:1}, carcc3.CoordinateInventor$1);
_.$init_66 = function $init_66(){
}
;
_.add = function add_12(f){
  return this.add_5(castTo(f, 42));
}
;
_.add_5 = function add_11(f){
  var ff, ff$iterator;
  for (ff$iterator = this.iterator(); ff$iterator.hasNext_0();) {
    ff = castTo(ff$iterator.next_3(), 42);
    if (ff.equals_3(f))
      return false;
  }
  return getClassPrototype(18).add.call(this, f);
}
;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor$1_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor/1', 511, cggl.Ljava_util_ArrayList_2_classLit);
carcc3.$clinit_CoordinateInventor$2 = function $clinit_CoordinateInventor$2(){
  carcc3.$clinit_CoordinateInventor$2 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carcc3.CoordinateInventor$2 = function CoordinateInventor$2(this$0){
  carcc3.$clinit_CoordinateInventor$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_67();
}
;
defineClass(512, 1, {1:1, 50:1}, carcc3.CoordinateInventor$2);
_.$init_67 = function $init_67(){
}
;
_.compare_0 = function compare_7(o1, o2){
  return this.compare_3(castTo(o1, 69), castTo(o2, 69));
}
;
_.equals_0 = function equals_9(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_3 = function compare_6(o1, o2){
  var c1, c2;
  c1 = $wnd.Math.abs(o1.charge);
  c2 = $wnd.Math.abs(o2.charge);
  return c1 < c2?-1:c1 == c2?0:1;
}
;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor$2_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor/2', 512, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_CoordinateInventor$3 = function $clinit_CoordinateInventor$3(){
  carcc3.$clinit_CoordinateInventor$3 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carcc3.CoordinateInventor$3 = function CoordinateInventor$3(this$0){
  carcc3.$clinit_CoordinateInventor$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_68();
}
;
defineClass(513, 1, {1:1, 50:1}, carcc3.CoordinateInventor$3);
_.$init_68 = function $init_68(){
}
;
_.compare_0 = function compare_9(o1, o2){
  return this.compare_3(castTo(o1, 69), castTo(o2, 69));
}
;
_.equals_0 = function equals_10(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_3 = function compare_8(o1, o2){
  var c1, c2;
  c1 = o1.fragment_0.size_1();
  c2 = o1.fragment_0.size_1();
  return c1 < c2?1:c1 == c2?0:-1;
}
;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor$3_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor/3', 513, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_CoordinateInventor$4 = function $clinit_CoordinateInventor$4(){
  carcc3.$clinit_CoordinateInventor$4 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carcc3.CoordinateInventor$4 = function CoordinateInventor$4(this$0){
  carcc3.$clinit_CoordinateInventor$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_69();
}
;
defineClass(514, 1, {1:1, 50:1}, carcc3.CoordinateInventor$4);
_.$init_69 = function $init_69(){
}
;
_.compare_0 = function compare_11(o1, o2){
  return this.compare_3(castTo(o1, 69), castTo(o2, 69));
}
;
_.equals_0 = function equals_11(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_3 = function compare_10(o1, o2){
  var c1, c2;
  c1 = o1.fragment_0.size_1();
  c2 = o1.fragment_0.size_1();
  return c1 < c2?-1:c1 == c2?0:1;
}
;
cggl.Lcom_actelion_research_chem_coords_CoordinateInventor$4_2_classLit = createForClass('com.actelion.research.chem.coords', 'CoordinateInventor/4', 514, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_FragmentAssociation = function $clinit_FragmentAssociation(){
  carcc3.$clinit_FragmentAssociation = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.FragmentAssociation = function FragmentAssociation(f1, f2){
  carcc3.$clinit_FragmentAssociation();
  var i, j;
  Object_0.call(this);
  this.$init_70();
  this.mFragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorFragment_2_classLit, {4:1, 1:1, 7:1}, 42, 2, 0, 1);
  setCheck(this.mFragment, 0, f1);
  setCheck(this.mFragment, 1, f2);
  this.mX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i = 0; i < 2; i++) {
    for (j = 0; j < this.mFragment[i].size_1(); j++) {
      this.mX[i] += this.mFragment[i].getAtomX_0(j);
      this.mY[i] += this.mFragment[i].getAtomY_0(j);
    }
    this.mCount[i] = this.mFragment[i].size_1();
  }
}
;
carcc3.FragmentAssociation_0 = function FragmentAssociation_0(f1, f2, atomIndex1, atomIndex2){
  carcc3.$clinit_FragmentAssociation();
  Object_0.call(this);
  this.$init_70();
  this.mFragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorFragment_2_classLit, {4:1, 1:1, 7:1}, 42, 2, 0, 1);
  setCheck(this.mFragment, 0, f1);
  setCheck(this.mFragment, 1, f2);
  this.mX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mX[0] = this.mFragment[0].getAtomX_0(atomIndex1);
  this.mY[0] = this.mFragment[0].getAtomY_0(atomIndex1);
  this.mX[1] = this.mFragment[1].getAtomX_0(atomIndex2);
  this.mY[1] = this.mFragment[1].getAtomY_0(atomIndex2);
  this.mCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mCount[0] = 1;
  this.mCount[1] = 1;
}
;
defineClass(141, 1, {141:1, 1:1}, carcc3.FragmentAssociation, carcc3.FragmentAssociation_0);
_.$init_70 = function $init_70(){
}
;
_.add_6 = function add_13(atomIndex1, atomIndex2){
  this.mX[0] += this.mFragment[0].getAtomX_0(atomIndex1);
  this.mY[0] += this.mFragment[0].getAtomY_0(atomIndex1);
  this.mX[1] += this.mFragment[1].getAtomX_0(atomIndex2);
  this.mY[1] += this.mFragment[1].getAtomY_0(atomIndex2);
  this.mCount[0]++;
  this.mCount[1]++;
}
;
_.arrange = function arrange(minDistance, keepFirstFragment){
  var angle, binCount, dx, dy, high, i, i0, i1, i2, i3, i4, i5, index_0, j, leftX, low, range, relY, yMax, yMin;
  angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i0 = 0; i0 < 2; i0++) {
    this.mX[i0] /= this.mCount[i0];
    this.mY[i0] /= this.mCount[i0];
    angle[i0] = this.mFragment[i0].calculatePreferredAttachmentAngle(this.mX[i0], this.mY[i0], this.mFragment[1 - i0].size_1(), minDistance);
  }
  this.mFragment[0].rotate_0(this.mX[0], this.mY[0], 3.141592653589793 / 2 - angle[0]);
  this.mFragment[1].rotate_0(this.mX[1], this.mY[1], 3.141592653589793 * 3 / 2 - angle[1]);
  yMin = 1.7976931348623157E308;
  yMax = -1.7976931348623157E308;
  dy = this.mY[0] - this.mY[1];
  for (i1 = 0; i1 < this.mFragment[1].mAtomY.length; i1++) {
    this.mFragment[1].mAtomY[i1] += dy;
    if (yMin > this.mFragment[1].mAtomY[i1])
      yMin = this.mFragment[1].mAtomY[i1];
    if (yMax < this.mFragment[1].mAtomY[i1])
      yMax = this.mFragment[1].mAtomY[i1];
  }
  range = yMax - yMin + 2 * minDistance;
  binCount = round_int($wnd.Math.ceil(range));
  yMin += (range - binCount) / 2 - minDistance;
  leftX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, binCount, 15, 1);
  for (i2 = 0; i2 < binCount; i2++)
    leftX[i2] = this.mX[1] + minDistance;
  for (i3 = 0; i3 < this.mFragment[1].mAtomY.length; i3++) {
    relY = this.mFragment[1].mAtomY[i3] - yMin;
    low = round_int(relY - minDistance);
    high = $wnd.Math.min(round_int(relY + minDistance), binCount - 1);
    for (j = low; j <= high; j++) {
      if (leftX[j] > this.mFragment[1].mAtomX[i3])
        leftX[j] = this.mFragment[1].mAtomX[i3];
    }
  }
  for (i4 = 0; i4 < binCount; i4++)
    leftX[i4] -= minDistance;
  dx = this.mX[0] - this.mX[1];
  for (i5 = 0; i5 < this.mFragment[0].mAtomX.length; i5++) {
    index_0 = round_int(this.mFragment[0].mAtomY[i5] - yMin);
    if (index_0 >= 0 && index_0 < leftX.length && dx < this.mFragment[0].mAtomX[i5] - leftX[index_0])
      dx = this.mFragment[0].mAtomX[i5] - leftX[index_0];
  }
  for (i = 0; i < this.mFragment[1].mAtomX.length; i++)
    this.mFragment[1].mAtomX[i] += dx;
  if (keepFirstFragment) {
    this.mFragment[0].rotate_0(this.mX[0], this.mY[0], angle[0] - 3.141592653589793 / 2);
    this.mFragment[1].rotate_0(this.mX[0], this.mY[0], angle[0] - 3.141592653589793 / 2);
  }
}
;
_.getFragment_0 = function getFragment_0(i){
  return this.mFragment[i];
}
;
_.getPriority = function getPriority(){
  return this.mFragment[0].size_1() * this.mFragment[1].size_1();
}
;
cggl.Lcom_actelion_research_chem_coords_FragmentAssociation_2_classLit = createForClass('com.actelion.research.chem.coords', 'FragmentAssociation', 141, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorAngle = function $clinit_InventorAngle(){
  carcc3.$clinit_InventorAngle = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorAngle = function InventorAngle(angle, length_0){
  carcc3.$clinit_InventorAngle();
  Object_0.call(this);
  this.$init_71();
  this.mAngle = angle;
  this.mLength = length_0;
}
;
carcc3.InventorAngle_0 = function InventorAngle_0(x1, y1, x2, y2){
  carcc3.$clinit_InventorAngle();
  var xdif, ydif;
  Object_0.call(this);
  this.$init_71();
  this.mAngle = carcc3.getAngle_2(x1, y1, x2, y2);
  xdif = x2 - x1;
  ydif = y2 - y1;
  this.mLength = $wnd.Math.sqrt(xdif * xdif + ydif * ydif);
}
;
carcc3.getAngle_2 = function getAngle_2(x1, y1, x2, y2){
  carcc3.$clinit_InventorAngle();
  var angle, xdif, ydif;
  xdif = x2 - x1;
  ydif = y2 - y1;
  if (ydif != 0) {
    angle = $wnd.Math.atan(xdif / ydif);
    if (ydif < 0) {
      if (xdif < 0)
        angle -= 3.141592653589793;
      else 
        angle += 3.141592653589793;
    }
  }
   else 
    angle = xdif > 0?3.141592653589793 / 2:-3.141592653589793 / 2;
  return angle;
}
;
defineClass(54, 1, {54:1, 1:1}, carcc3.InventorAngle, carcc3.InventorAngle_0);
_.$init_71 = function $init_71(){
}
;
_.mAngle = 0;
_.mLength = 0;
cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorAngle', 54, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorChain = function $clinit_InventorChain(){
  carcc3.$clinit_InventorChain = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorChain = function InventorChain(chainLength){
  carcc3.$clinit_InventorChain();
  Object_0.call(this);
  this.$init_72();
  this.mAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, chainLength, 15, 1);
  this.mBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, chainLength, 15, 1);
}
;
defineClass(353, 1, {1:1}, carcc3.InventorChain);
_.$init_72 = function $init_72(){
}
;
_.getChainLength = function getChainLength(){
  return this.mAtom.length;
}
;
_.getRingAtoms_1 = function getRingAtoms_0(){
  return this.mAtom;
}
;
_.getRingBonds_2 = function getRingBonds_1(){
  return this.mBond;
}
;
cggl.Lcom_actelion_research_chem_coords_InventorChain_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorChain', 353, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorCharge = function $clinit_InventorCharge(){
  carcc3.$clinit_InventorCharge = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorCharge = function InventorCharge(fragment, atom, charge){
  carcc3.$clinit_InventorCharge();
  Object_0.call(this);
  this.$init_73();
  this.fragment_0 = fragment;
  this.atom = atom;
  this.charge = charge;
}
;
defineClass(69, 1, {69:1, 1:1}, carcc3.InventorCharge);
_.$init_73 = function $init_73(){
}
;
_.atom = 0;
_.charge = 0;
cggl.Lcom_actelion_research_chem_coords_InventorCharge_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorCharge', 69, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorDefaultTemplateList = function $clinit_InventorDefaultTemplateList(){
  carcc3.$clinit_InventorDefaultTemplateList = emptyMethod;
  ju.$clinit_ArrayList();
  carcc3.DEFAULT_TEMPLATE = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['gkvt@@@@LddTTTrbTRTRTRRRRRRRRRRRRRrVRrIh\\IAaQxlY@gRHdJCJcRXlv_CfJx|A\\hRHejiLaQjTje^kSjtFcIhvXmVKMjt{lN{Kavy\\^wGjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjh@@vo@HBC@PhLN@bPhtFKCcpDbILaRhtzCIbsX\\nOO`JDbqDjSKdJeJmQjtz}Ahr[LVkMnpz\\nwGj{PBhBdBlBBBjBfBnBaBiBeBmBcBkBgBoB`bhbdblbbbjbfbnbabibebmbcbkbgbob`RhRdRlRbRjRfRnRaRiReRmRcRkRgRoR`rhrdrlrbrjrfrnrarirermrcrkrgror`JhJdJlJbJjJfJnJaJiJeJmJcJkJgJoJ`jhjdjljbjjjfjnjajijej` !BnkjyVwsVr|iQn|Q|goTZWPIJwbudnRkVYBez]siZymNJZUqNFBqZWxS~iCXVU]SeRjwrtSPAjkvXLpBAZauDPzq]PfMlecrMnkv|@\\SFD`m|mWiEoCXp`SIe_J[l|[XCbloTV`[Gc@FJGopyyoOlFQfUy^w\\Bgz|', 'gcrt@@@@LdbbbbTRbRbRbRRRRRRRRRRRRVRrVQIA`HtRGAaIxZAHfShTjCIbqylQGKgqdBaXeQJeruBiPitZmFoPZLFSYbvZlVGMnsZ]vWSmr{]UUUUUUUUUUUUUUUUUUUUUUUUUUUUUT@@[G`DAA`HTFG@QHTZCEaqxBQDfPiTZ]AdqYlNWGgpEBQXbUIerEReVhuZ]^`tYMfKUfwX]NW[jkPBhBdBlBbBjBfBnBaBiBeBmBcBkBgBoB`bhbdblbbbjbfbnbabibebmbcbkbgbob`RhRdRlRbRjRfRnRaRiReRmRcRkRgRoR`rhrdrlrbrjrfrnrarirermrcrkrgror`JhJdJlJbJjJfJnJaJiJeJmJcJkJgJoJ`jhjdjljbjjjfjnjajij` !B^cR]`]Fm]QkfljE\\p\x7FUVfgOmFXsQe_gXPyXis_wF|vUUX_XbxpzU]HUFgYViwFo~@uemc@}~T\x7FIEPioYVwr]JnM~[ZEC\\g}~o_pUfdo~irsklTLiyVJshnw^iVAsZ`_~}PYkckURH{FYMImFaRaccUlCZSHMfP', 'dml@@Dje^VGiyZjjjh@vtHSBinFU@ !BPTCTy[skMzUPF`AJbBixEZHS[Il', 'dml@@DjYVvGiyZjjjh@vtHSBinFU@ !BwLo~BJ~UquhXBinZ\\ykA@F_eMrT', 'dml@@LdfbbQX^fUZjjj`C[PaLJfxYT !BzxIHVc{OiJVRpprePho~]}y\x7FwLl', 'deL@@DjUYkfEijjjj@MeBDpj[ad !B\x7FaA\x7FMVr[AvkKzm_jKvVbD{sk', 'dil@@LddTQRl[NX^Fjjjj@MiBDpj[a@ !BPfL@\x7Fox@M~T@\x7Fox@\x7F`C~@@', 'daL@@DjYtKJqjynjjjj@MaBDpj[` !B`bL@_gx@@Gy~@Gx@_`@']);
}
;
carcc3.InventorDefaultTemplateList = function InventorDefaultTemplateList(){
  carcc3.$clinit_InventorDefaultTemplateList();
  var ffp, fragment, idcode, idcode$array, idcode$index, idcode$max, searcher, template;
  ju.ArrayList.call(this);
  this.$init_74();
  searcher = new carc2.SSSearcherWithIndex;
  for (idcode$array = carcc3.DEFAULT_TEMPLATE , idcode$index = 0 , idcode$max = idcode$array.length; idcode$index < idcode$max; ++idcode$index) {
    idcode = idcode$array[idcode$index];
    fragment = (new carc2.IDCodeParserWithoutCoordinateInvention).getCompactMolecule(idcode);
    ffp = searcher.createLongIndex(fragment);
    template = new carcc3.InventorTemplate(fragment, ffp, false);
    template.normalizeCoordinates();
    this.add(template);
  }
}
;
defineClass(644, 18, {4:1, 1:1, 18:1, 38:1, 57:1, 143:1}, carcc3.InventorDefaultTemplateList);
_.$init_74 = function $init_74(){
}
;
cggl.Lcom_actelion_research_chem_coords_InventorDefaultTemplateList_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorDefaultTemplateList', 644, cggl.Ljava_util_ArrayList_2_classLit);
carcc3.$clinit_InventorFragment = function $clinit_InventorFragment(){
  carcc3.$clinit_InventorFragment = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorFragment = function InventorFragment(mol, atoms, keepMarkedAtoms){
  carcc3.$clinit_InventorFragment();
  Object_0.call(this);
  this.$init_75();
  this.mMol = mol;
  this.mKeepMarkedAtoms = keepMarkedAtoms;
  this.mGlobalAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atoms, 15, 1);
  this.mPriority = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atoms, 15, 1);
  this.mAtomX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, atoms, 15, 1);
  this.mAtomY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, atoms, 15, 1);
}
;
carcc3.InventorFragment_0 = function InventorFragment_0(f){
  carcc3.$clinit_InventorFragment();
  var i, i0;
  Object_0.call(this);
  this.$init_75();
  this.mMol = f.mMol;
  this.mKeepMarkedAtoms = f.mKeepMarkedAtoms;
  this.mGlobalAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, f.size_1(), 15, 1);
  this.mPriority = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, f.size_1(), 15, 1);
  this.mAtomX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, f.size_1(), 15, 1);
  this.mAtomY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, f.size_1(), 15, 1);
  for (i0 = 0; i0 < f.size_1(); i0++) {
    this.mGlobalAtom[i0] = f.mGlobalAtom[i0];
    this.mPriority[i0] = f.mPriority[i0];
    this.mAtomX[i0] = f.mAtomX[i0];
    this.mAtomY[i0] = f.mAtomY[i0];
  }
  if (jsNotEquals(f.mGlobalBond, null)) {
    this.mGlobalBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, f.mGlobalBond.length, 15, 1);
    for (i = 0; i < f.mGlobalBond.length; i++)
      this.mGlobalBond[i] = f.mGlobalBond[i];
  }
  if (jsNotEquals(f.mGlobalToLocalAtom, null)) {
    this.mGlobalToLocalAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, f.mGlobalToLocalAtom.length, 15, 1);
    for (i = 0; i < f.mGlobalToLocalAtom.length; i++)
      this.mGlobalToLocalAtom[i] = f.mGlobalToLocalAtom[i];
  }
}
;
defineClass(42, 1, {42:1, 1:1}, carcc3.InventorFragment, carcc3.InventorFragment_0);
_.$init_75 = function $init_75(){
}
;
_.calculateMinMax = function calculateMinMax(){
  var i, surplus;
  if (this.mMinMaxAvail)
    return;
  this.mMinX = this.mAtomX[0];
  this.mMaxX = this.mAtomX[0];
  this.mMinY = this.mAtomY[0];
  this.mMaxY = this.mAtomY[0];
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    surplus = this.getAtomSurplus(i);
    if (this.mMinX > this.mAtomX[i] - surplus)
      this.mMinX = this.mAtomX[i] - surplus;
    if (this.mMaxX < this.mAtomX[i] + surplus)
      this.mMaxX = this.mAtomX[i] + surplus;
    if (this.mMinY > this.mAtomY[i] - surplus)
      this.mMinY = this.mAtomY[i] - surplus;
    if (this.mMaxY < this.mAtomY[i] + surplus)
      this.mMaxY = this.mAtomY[i] + surplus;
  }
  this.mMinMaxAvail = true;
}
;
_.calculatePreferredAttachmentAngle = function calculatePreferredAttachmentAngle(x_0, y_0, neighbourAtomCount, padding){
  var BIN_ANGLE, angle, bin, bin0, cos_0, d, distance, dx, dy, i, i0, i1, i2, i3, j, localMinDistance, maxBin, maxDistance, minBin, minDistance, neighbourBin, neighbourCount, neighbourRadius, preferredBin, sd, sin_0, squareRadius;
  if (this.size_1() == 1)
    return 0;
  BIN_ANGLE = 2 * 3.141592653589793 / this.CIRCULAR_BINS;
  neighbourRadius = padding + $wnd.Math.sqrt(neighbourAtomCount);
  distance = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.CIRCULAR_BINS, 15, 1);
  for (i0 = 0; i0 < this.mGlobalAtom.length; i0++) {
    angle = carcc3.getAngle_2(x_0, y_0, this.mAtomX[i0], this.mAtomY[i0]);
    bin0 = this.correctBin(toInt_0(jl.round_1(angle * this.CIRCULAR_BINS / (2 * 3.141592653589793))));
    dx = x_0 - this.mAtomX[i0];
    dy = y_0 - this.mAtomY[i0];
    sd = dx * dx + dy * dy;
    if (distance[bin0] < sd)
      distance[bin0] = sd;
  }
  maxDistance = -1;
  maxBin = -1;
  for (i1 = 0; i1 < this.CIRCULAR_BINS; i1++) {
    distance[i1] = $wnd.Math.sqrt(distance[i1]);
    if (maxDistance < distance[i1]) {
      maxDistance = distance[i1];
      maxBin = i1;
    }
  }
  preferredBin = this.correctBin(maxBin - narrow_int(this.CIRCULAR_BINS / 2));
  for (i2 = 0; i2 <= narrow_int(this.CIRCULAR_BINS / 2); i2++) {
    distance[this.correctBin(preferredBin + i2)] += 0.01 * i2;
    distance[this.correctBin(preferredBin - i2)] += 0.01 * i2;
  }
  neighbourCount = narrow_int(this.CIRCULAR_BINS / 4);
  sin_0 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, neighbourCount, 15, 1);
  cos_0 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, neighbourCount, 15, 1);
  for (i3 = 1; i3 < neighbourCount; i3++) {
    sin_0[i3] = $wnd.Math.sin(i3 * 0.17453292519943295);
    cos_0[i3] = $wnd.Math.cos(i3 * 0.17453292519943295);
  }
  squareRadius = neighbourRadius * neighbourRadius;
  minDistance = 1.7976931348623157E308;
  minBin = -1;
  for (bin = 0; bin < this.CIRCULAR_BINS; bin++) {
    if (distance[bin] >= minDistance)
      continue;
    localMinDistance = distance[bin];
    for (i = 1; i < neighbourCount; i++) {
      for (j = -1; j <= 1; j += 2) {
        neighbourBin = this.correctBin(bin + j * i);
        if (distance[neighbourBin] * cos_0[i] <= localMinDistance)
          continue;
        d = cos_0[i] * $wnd.Math.min(distance[neighbourBin], neighbourRadius / sin_0[i]);
        if (localMinDistance < d) {
          localMinDistance = d;
          if (minDistance <= localMinDistance)
            break;
        }
      }
      if (minDistance <= localMinDistance)
        break;
    }
    if (minDistance > localMinDistance) {
      minDistance = localMinDistance;
      minBin = bin;
    }
  }
  return 3.141592653589793 * 2 * minBin / this.CIRCULAR_BINS;
}
;
_.correctBin = function correctBin(bin){
  return bin < 0?bin + this.CIRCULAR_BINS:bin >= this.CIRCULAR_BINS?bin - this.CIRCULAR_BINS:bin;
}
;
_.equals_3 = function equals_12(f){
  var i, sorted, sortedF;
  if (f.size_1() != this.size_1())
    return false;
  sorted = this.getSortedAtoms();
  sortedF = f.getSortedAtoms();
  for (i = 0; i < sorted.length; i++)
    if (sorted[i] != sortedF[i])
      return false;
  return true;
}
;
_.flip = function flip_0(x_0, y_0, mirrorAngle){
  var angle, distance, i;
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    distance = $wnd.Math.sqrt((this.mAtomX[i] - x_0) * (this.mAtomX[i] - x_0) + (this.mAtomY[i] - y_0) * (this.mAtomY[i] - y_0));
    angle = 2 * mirrorAngle - carcc3.getAngle_2(x_0, y_0, this.mAtomX[i], this.mAtomY[i]);
    this.mAtomX[i] = x_0 + distance * $wnd.Math.sin(angle);
    this.mAtomY[i] = y_0 + distance * $wnd.Math.cos(angle);
  }
}
;
_.flipOneSide = function flipOneSide(bond){
  var angle, atom, atom1, atom2, candidate, coreOffSide, coreOnSide, count, current, distance, flipOtherSide, graphAtom, highest, i, i0, i1, index_0, isOnSide, mirrorAngle, x_0, y_0;
  if (jsEquals(this.mFlipList, null))
    this.mFlipList = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mMol.getAllBonds_0(), 0, 2);
  if (jsEquals(this.mFlipList[bond], null)) {
    graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mGlobalAtom.length, 15, 1);
    isOnSide = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 16, 1);
    atom1 = this.mMol.getBondAtom_0(0, bond);
    atom2 = this.mMol.getBondAtom_0(1, bond);
    graphAtom[0] = atom1;
    isOnSide[atom1] = true;
    current = 0;
    highest = 0;
    while (current <= highest) {
      for (i0 = 0; i0 < this.mMol.getAllConnAtoms_0(graphAtom[current]); i0++) {
        candidate = this.mMol.getConnAtom_0(graphAtom[current], i0);
        if (!isOnSide[candidate] && candidate != atom2) {
          graphAtom[++highest] = candidate;
          isOnSide[candidate] = true;
        }
      }
      if (current == highest)
        break;
      current++;
    }
    flipOtherSide = highest + 1 > narrow_int(this.mGlobalAtom.length / 2);
    if (this.mKeepMarkedAtoms) {
      coreOnSide = false;
      coreOffSide = false;
      for (i0 = 0; i0 < this.mGlobalAtom.length; i0++) {
        atom = this.mGlobalAtom[i0];
        if (this.mMol.isMarkedAtom_0(atom) && atom != atom1 && atom != atom2) {
          if (isOnSide[this.mGlobalAtom[i0]])
            coreOnSide = true;
          else 
            coreOffSide = true;
        }
      }
      if (coreOnSide != coreOffSide)
        flipOtherSide = coreOnSide;
    }
    count = 2;
    this.mFlipList[bond] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, flipOtherSide?this.mGlobalAtom.length - highest:highest + 2, 15, 1);
    for (i1 = 0; i1 < this.mGlobalAtom.length; i1++) {
      if (this.mGlobalAtom[i1] == atom1)
        this.mFlipList[bond][flipOtherSide?0:1] = i1;
      else if (this.mGlobalAtom[i1] == atom2)
        this.mFlipList[bond][flipOtherSide?1:0] = i1;
      else if (flipOtherSide ^ isOnSide[this.mGlobalAtom[i1]])
        this.mFlipList[bond][count++] = i1;
    }
  }
  x_0 = this.mAtomX[this.mFlipList[bond][0]];
  y_0 = this.mAtomY[this.mFlipList[bond][0]];
  mirrorAngle = carcc3.getAngle_2(x_0, y_0, this.mAtomX[this.mFlipList[bond][1]], this.mAtomY[this.mFlipList[bond][1]]);
  for (i = 2; i < this.mFlipList[bond].length; i++) {
    index_0 = this.mFlipList[bond][i];
    distance = $wnd.Math.sqrt((this.mAtomX[index_0] - x_0) * (this.mAtomX[index_0] - x_0) + (this.mAtomY[index_0] - y_0) * (this.mAtomY[index_0] - y_0));
    angle = 2 * mirrorAngle - carcc3.getAngle_2(x_0, y_0, this.mAtomX[index_0], this.mAtomY[index_0]);
    this.mAtomX[index_0] = x_0 + distance * $wnd.Math.sin(angle);
    this.mAtomY[index_0] = y_0 + distance * $wnd.Math.cos(angle);
  }
}
;
_.getAtomSurplus = function getAtomSurplus(atom){
  return neq(this.mMol.getAtomQueryFeatures(this.mGlobalAtom[atom]), 0)?0.6:this.mMol.getAtomicNo_0(this.mGlobalAtom[atom]) != 6?0.25:0;
}
;
_.getAtomX_0 = function getAtomX_1(index_0){
  return this.mAtomX[index_0];
}
;
_.getAtomY_0 = function getAtomY_1(index_0){
  return this.mAtomY[index_0];
}
;
_.getCollisionList = function getCollisionList(){
  var collidingAtom, collisionList, dist, i, j, panalty, xdif, ydif;
  this.mCollisionPanalty = 0;
  collisionList = new ju.ArrayList;
  for (i = 1; i < this.mGlobalAtom.length; i++) {
    for (j = 0; j < i; j++) {
      xdif = $wnd.Math.abs(this.mAtomX[i] - this.mAtomX[j]);
      ydif = $wnd.Math.abs(this.mAtomY[i] - this.mAtomY[j]);
      dist = $wnd.Math.sqrt(xdif * xdif + ydif * ydif);
      if (dist < 0.8) {
        collidingAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
        collidingAtom[0] = this.mGlobalAtom[i];
        collidingAtom[1] = this.mGlobalAtom[j];
        collisionList.add(collidingAtom);
      }
      panalty = 1 - $wnd.Math.min(dist, 1);
      this.mCollisionPanalty += panalty * panalty;
    }
  }
  return collisionList;
}
;
_.getCollisionPanalty = function getCollisionPanalty(){
  return this.mCollisionPanalty;
}
;
_.getGlobalAtom = function getGlobalAtom(localAtom){
  return this.mGlobalAtom[localAtom];
}
;
_.getHeight = function getHeight(){
  this.calculateMinMax();
  return this.mMaxY - this.mMinY + 1;
}
;
_.getLocalAtom = function getLocalAtom(globalAtom){
  var i;
  for (i = 0; i < this.mGlobalAtom.length; i++)
    if (globalAtom == this.mGlobalAtom[i])
      return i;
  return -1;
}
;
_.getSortedAtoms = function getSortedAtoms(){
  if (jsEquals(this.mSortedAtom, null)) {
    this.mSortedAtom = ju.copyOf_9(this.mGlobalAtom, this.mGlobalAtom.length);
    ju.sort_3(this.mSortedAtom);
  }
  return this.mSortedAtom;
}
;
_.getWidth = function getWidth(){
  this.calculateMinMax();
  return this.mMaxX - this.mMinX + 1;
}
;
_.isMember_0 = function isMember_0(globalAtom){
  var i;
  for (i = 0; i < this.mGlobalAtom.length; i++)
    if (globalAtom == this.mGlobalAtom[i])
      return true;
  return false;
}
;
_.locateBonds = function locateBonds(){
  var atom, connAtoms, fragmentBonds, i, i0, j;
  fragmentBonds = 0;
  for (i0 = 0; i0 < this.mGlobalAtom.length; i0++) {
    atom = this.mGlobalAtom[i0];
    connAtoms = this.mMol.getAllConnAtoms_0(atom);
    for (j = 0; j < connAtoms; j++)
      if (this.mMol.getConnAtom_0(atom, j) > atom)
        fragmentBonds++;
  }
  this.mGlobalBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragmentBonds, 15, 1);
  this.mGlobalToLocalAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  fragmentBonds = 0;
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    atom = this.mGlobalAtom[i];
    connAtoms = this.mMol.getAllConnAtoms_0(atom);
    this.mGlobalToLocalAtom[atom] = i;
    for (j = 0; j < connAtoms; j++)
      if (this.mMol.getConnAtom_0(atom, j) > atom)
        this.mGlobalBond[fragmentBonds++] = this.mMol.getConnBond_0(atom, j);
  }
}
;
_.optimizeAtomCoordinates = function optimizeAtomCoordinates(atom){
  var a1, a2, bondLength, collisionForce, d, d1, d2, force, forces, i, m1, m2, x_0, x1, x2, xs, y_0, y1, y2, ys;
  x_0 = this.mAtomX[atom];
  y_0 = this.mAtomY[atom];
  collisionForce = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_coords_InventorAngle_2_classLit, {4:1, 1:1, 7:1}, 54, 4, 0, 1);
  forces = 0;
  for (i = 0; i < this.mGlobalBond.length; i++) {
    if (forces >= 4)
      break;
    if (atom == this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(0, this.mGlobalBond[i])] || atom == this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(1, this.mGlobalBond[i])])
      continue;
    x1 = this.mAtomX[this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(0, this.mGlobalBond[i])]];
    y1 = this.mAtomY[this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(0, this.mGlobalBond[i])]];
    x2 = this.mAtomX[this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(1, this.mGlobalBond[i])]];
    y2 = this.mAtomY[this.mGlobalToLocalAtom[this.mMol.getBondAtom_0(1, this.mGlobalBond[i])]];
    d1 = $wnd.Math.sqrt((x1 - x_0) * (x1 - x_0) + (y1 - y_0) * (y1 - y_0));
    d2 = $wnd.Math.sqrt((x2 - x_0) * (x2 - x_0) + (y2 - y_0) * (y2 - y_0));
    bondLength = $wnd.Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
    if (d1 < bondLength && d2 < bondLength) {
      if (x1 == x2) {
        d = $wnd.Math.abs(x_0 - x1);
        if (d < 0.5)
          setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(x1, y_0, x_0, y_0), (0.5 - d) / 2));
      }
       else if (y1 == y2) {
        d = $wnd.Math.abs(y_0 - y1);
        if (d < 0.5)
          setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(x_0, y1, x_0, y_0), (0.5 - d) / 2));
      }
       else {
        m1 = (y2 - y1) / (x2 - x1);
        m2 = -1 / m1;
        a1 = y1 - m1 * x1;
        a2 = y_0 - m2 * x_0;
        xs = (a2 - a1) / (m1 - m2);
        ys = m1 * xs + a1;
        d = $wnd.Math.sqrt((xs - x_0) * (xs - x_0) + (ys - y_0) * (ys - y_0));
        if (d < 0.5)
          setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(xs, ys, x_0, y_0), (0.5 - d) / 2));
      }
      continue;
    }
    if (d1 < 0.5) {
      setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(x1, y1, x_0, y_0), (0.5 - d1) / 2));
      continue;
    }
    if (d2 < 0.5) {
      setCheck(collisionForce, forces++, new carcc3.InventorAngle(carcc3.getAngle_2(x2, y2, x_0, y_0), (0.5 - d2) / 2));
      continue;
    }
  }
  if (forces > 0) {
    force = carcc3.getMeanAngle(collisionForce, forces);
    this.mAtomX[atom] += force.mLength * $wnd.Math.sin(force.mAngle);
    this.mAtomY[atom] += force.mLength * $wnd.Math.cos(force.mAngle);
  }
}
;
_.rotate_0 = function rotate_0(x_0, y_0, angleDif){
  var angle, distance, i;
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    distance = $wnd.Math.sqrt((this.mAtomX[i] - x_0) * (this.mAtomX[i] - x_0) + (this.mAtomY[i] - y_0) * (this.mAtomY[i] - y_0));
    angle = carcc3.getAngle_2(x_0, y_0, this.mAtomX[i], this.mAtomY[i]) + angleDif;
    this.mAtomX[i] = x_0 + distance * $wnd.Math.sin(angle);
    this.mAtomY[i] = y_0 + distance * $wnd.Math.cos(angle);
  }
}
;
_.size_1 = function size_2(){
  return this.mGlobalAtom.length;
}
;
_.translate_0 = function translate_0(dx, dy){
  var i;
  for (i = 0; i < this.mGlobalAtom.length; i++) {
    this.mAtomX[i] += dx;
    this.mAtomY[i] += dy;
  }
}
;
_.CIRCULAR_BINS = 36;
_.mCollisionPanalty = 0;
_.mKeepMarkedAtoms = false;
_.mMaxX = 0;
_.mMaxY = 0;
_.mMinMaxAvail = false;
_.mMinX = 0;
_.mMinY = 0;
carcc3.cCollisionLimitAtomMovement = 0.5;
carcc3.cCollisionLimitBondRotation = 0.8;
cggl.Lcom_actelion_research_chem_coords_InventorFragment_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorFragment', 42, cggl.Ljava_lang_Object_2_classLit);
carcc3.$clinit_InventorTemplate = function $clinit_InventorTemplate(){
  carcc3.$clinit_InventorTemplate = emptyMethod;
  jl.$clinit_Object();
}
;
carcc3.InventorTemplate = function InventorTemplate(fragment, ffp, keepAbsoluteOrientation){
  carcc3.$clinit_InventorTemplate();
  Object_0.call(this);
  this.$init_76();
  this.mFragment = fragment;
  this.mFFP = ffp;
  this.mKeepAbsoluteOrientation = keepAbsoluteOrientation;
}
;
defineClass(235, 1, {235:1, 1:1}, carcc3.InventorTemplate);
_.$init_76 = function $init_76(){
}
;
_.getFFP = function getFFP(){
  return this.mFFP;
}
;
_.getFragment = function getFragment_1(){
  return this.mFragment;
}
;
_.getNormalizedAtomX = function getNormalizedAtomX(atom){
  return this.mFragment.getAtomX_0(atom) / this.mAVBL;
}
;
_.getNormalizedAtomY = function getNormalizedAtomY(atom){
  return this.mFragment.getAtomY_0(atom) / this.mAVBL;
}
;
_.keepAbsoluteOrientation = function keepAbsoluteOrientation_0(){
  return this.mKeepAbsoluteOrientation;
}
;
_.normalizeCoordinates = function normalizeCoordinates(){
  this.mAVBL = this.mFragment.getAverageBondLength_0();
}
;
_.mAVBL = 0;
_.mKeepAbsoluteOrientation = false;
cggl.Lcom_actelion_research_chem_coords_InventorTemplate_2_classLit = createForClass('com.actelion.research.chem.coords', 'InventorTemplate', 235, cggl.Ljava_lang_Object_2_classLit);
carcd.$clinit_ISimilarityCalculator = function $clinit_ISimilarityCalculator(){
  carcd.$clinit_ISimilarityCalculator = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_descriptor_ISimilarityCalculator_2_classLit = createForInterface('com.actelion.research.chem.descriptor', 'ISimilarityCalculator');
carcd.$clinit_DescriptorHandler = function $clinit_DescriptorHandler(){
  carcd.$clinit_DescriptorHandler = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_descriptor_DescriptorHandler_2_classLit = createForInterface('com.actelion.research.chem.descriptor', 'DescriptorHandler');
carcd.$clinit_AbstractDescriptorHandlerLongFP = function $clinit_AbstractDescriptorHandlerLongFP(){
  carcd.$clinit_AbstractDescriptorHandlerLongFP = emptyMethod;
}
;
defineClass(1205, 1, {1:1});
cggl.Lcom_actelion_research_chem_descriptor_AbstractDescriptorHandlerLongFP_2_classLit = createForClass('com.actelion.research.chem.descriptor', 'AbstractDescriptorHandlerLongFP', 1205, cggl.Ljava_lang_Object_2_classLit);
carcf.$clinit_ForceField = function $clinit_ForceField(){
  carcf.$clinit_ForceField = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_forcefield_ForceField_2_classLit = createForInterface('com.actelion.research.chem.forcefield', 'ForceField');
carcf.$clinit_AbstractForceField = function $clinit_AbstractForceField(){
  carcf.$clinit_AbstractForceField = emptyMethod;
  jl.$clinit_Object();
  carcf.TOLX = 4 * 3.0E-8;
}
;
carcf.AbstractForceField = function AbstractForceField(mol){
  carcf.$clinit_AbstractForceField();
  var at, i, implicitHydrogens;
  Object_0.call(this);
  this.$init_77();
  implicitHydrogens = 0;
  for (at = 0; at < mol.getAtoms_0(); at++) {
    implicitHydrogens += mol.getImplicitHydrogens_0(at);
  }
  if (implicitHydrogens > 0) {
    throw toJs(new jl.IllegalArgumentException_0('molecule needs explicit hydrogen atoms for force field calculations'));
  }
  this.mMol = mol;
  this.mDim = 3 * mol.getAllAtoms_0();
  this.mGrad = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  this.mPos = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  this.mNewpos = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  this.mIsInterrupted = false;
  this.mTimeInterval = 20;
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    this.mPos[3 * i] = mol.getAtomX_0(i);
    this.mPos[3 * i + 1] = mol.getAtomY_0(i);
    this.mPos[3 * i + 2] = mol.getAtomZ_0(i);
  }
}
;
defineClass(435, 1, {1:1});
_.$init_77 = function $init_77(){
  this.listeners = new ju.ArrayList;
}
;
_.linearSearch = function linearSearch(oldPt, oldVal, dir_0, newPt, maxStep){
  var MAX_ITER_LINEAR_SEARCH, a, b, disc, i, i0, i1, i2, i3, i4, it, lambda, lambda2, lambdaMin, ret, rhs1, rhs2, slope, sum, temp, test_0, tmpLambda, tmpPt, val2;
  MAX_ITER_LINEAR_SEARCH = 1000;
  ret = -1;
  tmpPt = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  sum = 0;
  slope = 0;
  test_0 = 0;
  lambda = 0;
  lambda2 = 0;
  lambdaMin = 0;
  tmpLambda = 0;
  val2 = 0;
  sum = 0;
  for (i0 = 0; i0 < this.mDim; i0++)
    sum += dir_0[i0] * dir_0[i0];
  sum = $wnd.Math.sqrt(sum);
  if (sum > maxStep)
    for (i1 = 0; i1 < this.mDim; i1++)
      dir_0[i1] *= maxStep / sum;
  slope = 0;
  for (i2 = 0; i2 < this.mDim; i2++)
    slope += dir_0[i2] * this.mGrad[i2];
  if (slope >= 0)
    return ret;
  test_0 = 0;
  for (i3 = 0; i3 < this.mDim; i3++) {
    temp = $wnd.Math.abs(dir_0[i3]) / $wnd.Math.max($wnd.Math.abs(oldPt[i3]), 1);
    if (temp > test_0)
      test_0 = temp;
  }
  lambdaMin = 1.0E-7 / test_0;
  lambda = 1;
  it = 0;
  while (it < 1000) {
    if (lambda < lambdaMin) {
      ret = 1;
      break;
    }
    for (i4 = 0; i4 < this.mDim; i4++)
      newPt[i4] = oldPt[i4] + lambda * dir_0[i4];
    this.mTotalEnergy = this.getTotalEnergy_1(newPt);
    if (this.mTotalEnergy - oldVal <= 1.0E-4 * lambda * slope)
      return 0;
    if (it == 0)
      tmpLambda = -slope / (2 * (this.mTotalEnergy - oldVal - slope));
    else {
      rhs1 = this.mTotalEnergy - oldVal - lambda * slope;
      rhs2 = val2 - oldVal - lambda2 * slope;
      a = (rhs1 / (lambda * lambda) - rhs2 / (lambda2 * lambda2)) / (lambda - lambda2);
      b = (-lambda2 * rhs1 / (lambda * lambda) + lambda * rhs2 / (lambda2 * lambda2)) / (lambda - lambda2);
      if (a == 0)
        tmpLambda = -slope / (2 * b);
      else {
        disc = b * b - 3 * a * slope;
        if (disc < 0)
          tmpLambda = 0.5 * lambda;
        else if (b <= 0)
          tmpLambda = (-b + $wnd.Math.sqrt(disc)) / (3 * a);
        else 
          tmpLambda = -slope / (b + $wnd.Math.sqrt(disc));
      }
      if (tmpLambda > 0.5 * lambda)
        tmpLambda = 0.5 * lambda;
    }
    lambda2 = lambda;
    val2 = this.mTotalEnergy;
    lambda = $wnd.Math.max(tmpLambda, 0.1 * lambda);
    ++it;
  }
  for (i = 0; i < this.mDim; i++)
    newPt[i] = oldPt[i];
  return ret;
}
;
_.minimise = function minimise(){
  return this.minimise_0(4000, 1.0E-4, 1.0E-6);
}
;
_.minimise_0 = function minimise_0(maxIts, gradTol, funcTol){
  var i, i0, listener, listener$iterator, res;
  res = 1;
  for (i0 = 0; i0 < this.mMol.getAllAtoms_0(); i0++) {
    this.mPos[3 * i0] = this.mMol.getAtomX_0(i0);
    this.mPos[3 * i0 + 1] = this.mMol.getAtomY_0(i0);
    this.mPos[3 * i0 + 2] = this.mMol.getAtomZ_0(i0);
  }
  res = this.run_minimiser(maxIts, gradTol, funcTol);
  if (res == 0) {
    for (i = 0; i < this.mMol.getAllAtoms_0(); i++) {
      this.mMol.setAtomX_0(i, this.mPos[3 * i]);
      this.mMol.setAtomY_0(i, this.mPos[3 * i + 1]);
      this.mMol.setAtomZ_0(i, this.mPos[3 * i + 2]);
    }
  }
  for (listener$iterator = this.listeners.iterator(); listener$iterator.hasNext_0();) {
    listener = castTo(listener$iterator.next_3(), 882);
    listener.stateChanged();
  }
  return res;
}
;
_.run_minimiser = function run_minimiser(maxIts, gradTol, funcTol){
  var dGrad, fac, fad, fae, fp, gradScale, hessDGrad, i, i0, i1, i2, i3, i4, i5, i6, invHessian, itab, iter, j, listener, listener$iterator, maxStep, newPos, status_0, sum, sumDGrad, sumXi, t0, t1, temp, term, test_0, timePassed, tmp, xi;
  this.mGrad = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  dGrad = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  hessDGrad = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  newPos = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  xi = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  invHessian = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim * this.mDim, 15, 1);
  for (i0 = 0; i0 < this.mDim; i0++)
    newPos[i0] = this.mPos[i0];
  fp = this.getTotalEnergy_1(this.mPos);
  this.updateGradient();
  this.zeroGradient();
  sum = 0;
  for (i1 = 0; i1 < this.mDim; i1++) {
    invHessian[i1 * this.mDim + i1] = 1;
    xi[i1] = -this.mGrad[i1];
    sum += this.mPos[i1] * this.mPos[i1];
  }
  maxStep = 100 * $wnd.Math.max($wnd.Math.sqrt(sum), this.mDim);
  t0 = jl.currentTimeMillis_0();
  for (iter = 1; iter <= maxIts && !this.mIsInterrupted; iter++) {
    status_0 = this.linearSearch(this.mPos, fp, xi, newPos, maxStep);
    if (status_0 < 0)
      return 2;
    fp = this.mTotalEnergy;
    test_0 = 0;
    for (i2 = 0; i2 < this.mDim; i2++) {
      xi[i2] = newPos[i2] - this.mPos[i2];
      this.mPos[i2] = newPos[i2];
      temp = $wnd.Math.abs(xi[i2]) / $wnd.Math.max($wnd.Math.abs(this.mPos[i2]), 1);
      if (temp > test_0)
        test_0 = temp;
      dGrad[i2] = this.mGrad[i2];
    }
    if (test_0 < 1.2E-7) {
      return 0;
    }
    gradScale = this.updateGradient();
    this.zeroGradient();
    test_0 = 0;
    term = $wnd.Math.max(this.mTotalEnergy * gradScale, 1);
    for (i3 = 0; i3 < this.mDim; i3++) {
      tmp = $wnd.Math.abs(this.mGrad[i3]) * $wnd.Math.max($wnd.Math.abs(this.mPos[i3]), 1);
      test_0 = $wnd.Math.max(test_0, tmp);
      dGrad[i3] = this.mGrad[i3] - dGrad[i3];
    }
    test_0 /= term;
    if (test_0 < gradTol) {
      return 0;
    }
    fac = 0;
    fae = 0;
    sumDGrad = 0;
    sumXi = 0;
    for (i4 = 0; i4 < this.mDim; i4++) {
      itab = i4 * this.mDim;
      hessDGrad[i4] = 0;
      for (j = 0; j < this.mDim; j++)
        hessDGrad[i4] += invHessian[itab + j] * dGrad[j];
      fac += dGrad[i4] * xi[i4];
      fae += dGrad[i4] * hessDGrad[i4];
      sumDGrad += dGrad[i4] * dGrad[i4];
      sumXi += xi[i4] * xi[i4];
    }
    if (fac > $wnd.Math.sqrt(3.0E-8 * sumDGrad * sumXi)) {
      fac = 1 / fac;
      fad = 1 / fae;
      for (i5 = 0; i5 < this.mDim; i5++)
        dGrad[i5] = fac * xi[i5] - fad * hessDGrad[i5];
      for (i6 = 0; i6 < this.mDim; i6++) {
        itab = i6 * this.mDim;
        for (j = i6; j < this.mDim; j++) {
          invHessian[itab + j] += fac * xi[i6] * xi[j] - fad * hessDGrad[i6] * hessDGrad[j] + fae * dGrad[i6] * dGrad[j];
          invHessian[j * this.mDim + i6] = invHessian[itab + j];
        }
      }
    }
    for (i = 0; i < this.mDim; i++) {
      itab = i * this.mDim;
      xi[i] = 0;
      for (j = 0; j < this.mDim; j++)
        xi[i] -= invHessian[itab + j] * this.mGrad[j];
    }
    t1 = jl.currentTimeMillis_0();
    timePassed = sub_2(t1, t0);
    if (gte_0(timePassed, this.mTimeInterval)) {
      for (listener$iterator = this.listeners.iterator(); listener$iterator.hasNext_0();) {
        listener = castTo(listener$iterator.next_3(), 882);
        listener.stateChanged();
      }
      t0 = t1;
    }
  }
  return 1;
}
;
_.zeroGradient = function zeroGradient(){
  var i, i$array, i$index, i$max;
  if (jsNotEquals(this.mFixedAtoms, null)) {
    for (i$array = this.mFixedAtoms , i$index = 0 , i$max = i$array.length; i$index < i$max; ++i$index) {
      i = i$array[i$index];
      this.mGrad[3 * i] = 0;
      this.mGrad[3 * i + 1] = 0;
      this.mGrad[3 * i + 2] = 0;
    }
  }
}
;
_.mDim = 0;
_.mIsInterrupted = false;
_.mTimeInterval = 0;
_.mTotalEnergy = 0;
carcf.EPS = 3.0E-8;
carcf.FUNCTOL = 1.0E-4;
carcf.MAXSTEP = 100;
carcf.MOVETOL = 1.0E-7;
carcf.TOLX = 0;
cggl.Lcom_actelion_research_chem_forcefield_AbstractForceField_2_classLit = createForClass('com.actelion.research.chem.forcefield', 'AbstractForceField', 435, cggl.Ljava_lang_Object_2_classLit);
carcf.$clinit_ForceFieldChangeListener = function $clinit_ForceFieldChangeListener(){
  carcf.$clinit_ForceFieldChangeListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_forcefield_ForceFieldChangeListener_2_classLit = createForInterface('com.actelion.research.chem.forcefield', 'ForceFieldChangeListener');
carcfm.$clinit_EnergyTerm = function $clinit_EnergyTerm(){
  carcfm.$clinit_EnergyTerm = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_EnergyTerm_2_classLit = createForInterface('com.actelion.research.chem.forcefield.mmff', 'EnergyTerm');
carcfm.$clinit_AngleBend = function $clinit_AngleBend(){
  carcfm.$clinit_AngleBend = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.AngleBend = function AngleBend(table, mol, a1, a2, a3){
  Object_0.call(this);
  this.$init_78();
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
  this.isLinear = table.atom.linear(mol.getAtomType(a2));
  this.theta0 = table.angle.theta_0(mol, a1, a2, a3);
  this.ka = table.angle.ka_1(mol, a1, a2, a3);
}
;
carcfm.findIn = function findIn(t, mol){
  carcfm.$clinit_AngleBend();
  var angles, atom, i, k, nbr_i, nbr_k;
  angles = new ju.ArrayList;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    if (mol.getAllConnAtoms_0(atom) > 1) {
      for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
        nbr_i = mol.getConnAtom_0(atom, i);
        for (k = i + 1; k < mol.getAllConnAtoms_0(atom); k++) {
          nbr_k = mol.getConnAtom_0(atom, k);
          angles.add(new carcfm.AngleBend(t, mol, nbr_i, atom, nbr_k));
        }
      }
    }
  }
  return angles;
}
;
defineClass(614, 1, {150:1, 1:1}, carcfm.AngleBend);
_.$init_78 = function $init_78(){
}
;
_.getEnergy_0 = function getEnergy_0(pos){
  var angle, c2, cb, theta;
  theta = (new carcfm.Vector3_4(pos, this.a2, this.a1)).angle_0(new carcfm.Vector3_4(pos, this.a2, this.a3));
  angle = jl.toDegrees(theta) - this.theta0;
  cb = -0.006981317;
  c2 = 143.9325 * 0.017453292519943295 * 0.017453292519943295;
  if (this.isLinear)
    return 143.9325 * this.ka * (1 + $wnd.Math.cos(theta));
  return 0.5 * 0.043844346773450435 * this.ka * angle * angle * (1 + -0.006981317 * angle);
}
;
_.getGradient = function getGradient(pos, grad){
  var angleTerm, c2, cb, cosTheta, dCos_dS, dE_dTheta, dist0, dist1, r0, r1, sinTheta, sinThetaSq;
  r0 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).normalise();
  r1 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).normalise();
  dist0 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).length_1();
  dist1 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).length_1();
  cosTheta = r0.cosAngle(r1);
  sinThetaSq = 1 - cosTheta * cosTheta;
  sinTheta = 1.0E-8;
  if (sinThetaSq > 0)
    sinTheta = $wnd.Math.sqrt(sinThetaSq);
  angleTerm = 57.29577951308232 * $wnd.Math.acos(cosTheta) - this.theta0;
  cb = -0.006981317;
  c2 = 143.9325 * 0.017453292519943295 * 0.017453292519943295;
  dE_dTheta = 57.29577951308232 * c2 * this.ka * angleTerm * (1 + 1.5 * cb * angleTerm);
  if (this.isLinear)
    dE_dTheta = -143.9325 * this.ka * sinTheta;
  dCos_dS = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [1 / dist0 * (r1.x_0 - cosTheta * r0.x_0), 1 / dist0 * (r1.y_0 - cosTheta * r0.y_0), 1 / dist0 * (r1.z_0 - cosTheta * r0.z_0), 1 / dist1 * (r0.x_0 - cosTheta * r1.x_0), 1 / dist1 * (r0.y_0 - cosTheta * r1.y_0), 1 / dist1 * (r0.z_0 - cosTheta * r1.z_0)]);
  grad[3 * this.a1] += dE_dTheta * dCos_dS[0] / -sinTheta;
  grad[3 * this.a1 + 1] += dE_dTheta * dCos_dS[1] / -sinTheta;
  grad[3 * this.a1 + 2] += dE_dTheta * dCos_dS[2] / -sinTheta;
  grad[3 * this.a2] += dE_dTheta * (-dCos_dS[0] - dCos_dS[3]) / -sinTheta;
  grad[3 * this.a2 + 1] += dE_dTheta * (-dCos_dS[1] - dCos_dS[4]) / -sinTheta;
  grad[3 * this.a2 + 2] += dE_dTheta * (-dCos_dS[2] - dCos_dS[5]) / -sinTheta;
  grad[3 * this.a3] += dE_dTheta * dCos_dS[3] / -sinTheta;
  grad[3 * this.a3 + 1] += dE_dTheta * dCos_dS[4] / -sinTheta;
  grad[3 * this.a3 + 2] += dE_dTheta * dCos_dS[5] / -sinTheta;
}
;
_.a1 = 0;
_.a2 = 0;
_.a3 = 0;
_.isLinear = false;
_.ka = 0;
_.theta0 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_AngleBend_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'AngleBend', 614, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_BadAtomTypeException = function $clinit_BadAtomTypeException(){
  carcfm.$clinit_BadAtomTypeException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
carcfm.BadAtomTypeException = function BadAtomTypeException(message){
  carcfm.$clinit_BadAtomTypeException();
  jl.RuntimeException_1.call(this, message);
  this.$init_82();
}
;
defineClass(276, 23, {276:1, 4:1, 14:1, 1:1, 23:1, 20:1}, carcfm.BadAtomTypeException);
_.$init_82 = function $init_82(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_BadAtomTypeException_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'BadAtomTypeException', 276, cggl.Ljava_lang_RuntimeException_2_classLit);
carcfm.$clinit_BadRingAromException = function $clinit_BadRingAromException(){
  carcfm.$clinit_BadRingAromException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
carcfm.BadRingAromException = function BadRingAromException(){
  carcfm.$clinit_BadRingAromException();
  jl.RuntimeException.call(this);
  this.$init_83();
}
;
defineClass(613, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, carcfm.BadRingAromException);
_.$init_83 = function $init_83(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_BadRingAromException_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'BadRingAromException', 613, cggl.Ljava_lang_RuntimeException_2_classLit);
carcfm.$clinit_BondStretch = function $clinit_BondStretch(){
  carcfm.$clinit_BondStretch = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.BondStretch = function BondStretch(table, mol, bond){
  carcfm.BondStretch_0.call(this, table, mol, mol.getBondAtom_0(0, bond), mol.getBondAtom_0(1, bond));
}
;
carcfm.BondStretch_0 = function BondStretch_0(table, mol, a1, a2){
  Object_0.call(this);
  this.$init_84();
  this.a1 = a1;
  this.a2 = a2;
  this.r0 = table.bond.r0_1(mol, a1, a2);
  this.kb = table.bond.kb_1(mol, a1, a2);
}
;
carcfm.findIn_0 = function findIn_0(t, mol){
  carcfm.$clinit_BondStretch();
  var b, bstretches;
  bstretches = new ju.ArrayList;
  for (b = 0; b < mol.getAllBonds_0(); b++)
    bstretches.add(new carcfm.BondStretch(t, mol, b));
  return bstretches;
}
;
defineClass(339, 1, {150:1, 1:1}, carcfm.BondStretch);
_.$init_84 = function $init_84(){
}
;
_.getEnergy_0 = function getEnergy_1(pos){
  var c1, c3, cs, diff, dist;
  c1 = 143.9325;
  cs = -2;
  c3 = 7 / 12;
  dist = (new carcfm.Vector3_3(pos, this.a1)).distance_0(new carcfm.Vector3_3(pos, this.a2));
  diff = (dist - this.r0) * (dist - this.r0);
  return 0.5 * 143.9325 * this.kb * diff * (1 + -2 * (dist - this.r0) + 0.5833333333333334 * -2 * -2 * diff);
}
;
_.getGradient = function getGradient_0(pos, grad){
  var c1, c3, cs, dE_dr, dist, distTerm, i;
  cs = -2;
  c1 = 143.9325;
  c3 = 7 / 12;
  dist = (new carcfm.Vector3_3(pos, this.a1)).distance_0(new carcfm.Vector3_3(pos, this.a2));
  distTerm = dist - this.r0;
  dE_dr = 143.9325 * this.kb * distTerm * (1 + 1.5 * -2 * distTerm + 2 * 0.5833333333333334 * -2 * -2 * distTerm * distTerm);
  if (dist > 0) {
    for (i = 0; i < 3; i++) {
      grad[3 * this.a1 + i] += dE_dr * (pos[3 * this.a1 + i] - pos[3 * this.a2 + i]) / dist;
      grad[3 * this.a2 + i] -= dE_dr * (pos[3 * this.a1 + i] - pos[3 * this.a2 + i]) / dist;
    }
  }
}
;
_.a1 = 0;
_.a2 = 0;
_.kb = 0;
_.r0 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_BondStretch_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'BondStretch', 339, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Csv = function $clinit_Csv(){
  carcfm.$clinit_Csv = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.readFile = function readFile(path){
  carcfm.$clinit_Csv();
  var br, c, e, format, line, ln, row, size_0, table;
  br = null;
  try {
    br = new ji.BufferedReader(new ji.StringReader(path));
    size_0 = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(br.readLine()));
    format = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(jl.trim__Ljava_lang_String___devirtual$(br.readLine()), ',');
    table = initMultidimensionalArray(cggl.Ljava_lang_Object_2_classLit, [{4:1, 1:1, 7:1}, {4:1, 1:1, 7:1}], [7, 1], 5, [size_0, format.length], 2);
    for (ln = 0; jsNotEquals(line = br.readLine(), null) && ln < size_0; ln++) {
      row = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(jl.trim__Ljava_lang_String___devirtual$(line), ',');
      for (c = 0; c < format.length; c++) {
        switch (jl.charAt_I_C__devirtual$_0(format[c], 0)) {
          case 105:
            setCheck(table[ln], c, jl.valueOf_26(jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(row[c]))));
            break;
          case 102:
            setCheck(table[ln], c, jl.valueOf_23(parseDouble(jl.trim__Ljava_lang_String___devirtual$(row[c]))));
            break;
          case 99:
            setCheck(table[ln], c, valueOf_22(jl.charAt_I_C__devirtual$_0(jl.replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$(jl.replace_Ljava_lang_CharSequence_Ljava_lang_CharSequence__Ljava_lang_String___devirtual$(jl.trim__Ljava_lang_String___devirtual$(row[c]), "'", ''), '"', ''), 0)));
            break;
        }
      }
    }
    return table;
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 66)) {
      e = $e1;
      (jl.$clinit_System() , jl.out_0).println_0('IO Exception!');
    }
     else 
      throw toJs($e1);
  }
   finally {
    try {
      if (isNotNull(br))
        br.close_0();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 66)) {
        e = $e0;
        (jl.$clinit_System() , jl.out_0).println_0("Couldn't close buffered reader!");
      }
       else 
        throw toJs($e0);
    }
  }
  return initMultidimensionalArray(cggl.Ljava_lang_Object_2_classLit, [{4:1, 1:1, 7:1}, {4:1, 1:1, 7:1}], [7, 1], 5, [1, 1], 2);
}
;
carcfm.readIntsFile = function readIntsFile(path){
  carcfm.$clinit_Csv();
  var cols_0, i, j, newtable, rows_0, table;
  table = carcfm.readFile(path);
  rows_0 = table.length;
  cols_0 = table[0].length;
  newtable = initMultidimensionalArray(cggl.I_classLit, [{35:1, 4:1, 1:1, 7:1}, {6:1, 4:1, 1:1}], [6, 5], 15, [rows_0, cols_0], 2);
  for (i = 0; i < rows_0; i++)
    for (j = 0; j < cols_0; j++)
      newtable[i][j] = castTo(table[i][j], 32).intValue();
  return newtable;
}
;
defineClass(1212, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_Csv_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Csv', 1212, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Electrostatic = function $clinit_Electrostatic(){
  carcfm.$clinit_Electrostatic = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.Electrostatic = function Electrostatic(mol, a1, a2, rel_0, chge1, chge2, distModel, dielConst){
  Object_0.call(this);
  this.$init_85();
  this.mol = mol;
  this.a1 = a1;
  this.a2 = a2;
  this.rel_0 = rel_0;
  this.distModel = distModel;
  this.charge_term = chge1 * chge2 / dielConst;
}
;
carcfm.findIn_1 = function findIn_1(table, mol, sep, nonbondedCutoff, dielModel, dielConst){
  carcfm.$clinit_Electrostatic();
  var charges, eles, i, j, relation;
  eles = new ju.ArrayList;
  charges = carcfmt2.getCharges(table, mol);
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    for (j = 0; j < i + 1; j++) {
      relation = sep.get_1(new carcfm.SortedPair(i, j));
      if ((jsEquals(relation, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR)) || jsEquals(relation, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_X))) && $wnd.Math.abs(charges[i]) > 1.0E-5 && $wnd.Math.abs(charges[j]) > 1.0E-5) {
        if ((new carcfm.Vector3_1(mol, i, j)).length_1() < nonbondedCutoff) {
          eles.add(new carcfm.Electrostatic(mol, i, j, relation, charges[i], charges[j], dielModel, dielConst));
        }
      }
    }
  }
  return eles;
}
;
defineClass(615, 1, {150:1, 1:1}, carcfm.Electrostatic);
_.$init_85 = function $init_85(){
}
;
_.getEnergy_0 = function getEnergy_2(pos){
  var corr_dist, diel, dist;
  dist = (new carcfm.Vector3_4(pos, this.a1, this.a2)).length_1();
  corr_dist = dist + 0.05;
  diel = 332.0716;
  if (this.distModel)
    corr_dist *= corr_dist;
  return diel * this.charge_term / corr_dist * (jsEquals(this.rel_0, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR))?0.75:1);
}
;
_.getGradient = function getGradient_1(pos, grad){
  var corr_dist, dE_dr, dGrad, dist, i;
  dist = (new carcfm.Vector3_4(pos, this.a1, this.a2)).length_1();
  corr_dist = dist + 0.05;
  corr_dist *= this.distModel?corr_dist * corr_dist:corr_dist;
  dE_dr = -332.0716 * (this.distModel?2:1) * this.charge_term / corr_dist * (jsEquals(this.rel_0, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR))?0.75:1);
  for (i = 0; i < 3; i++) {
    dGrad = 0.02;
    if (dist > 0)
      dGrad = dE_dr * (pos[3 * this.a1 + i] - pos[3 * this.a2 + i]) / dist;
    grad[3 * this.a1 + i] += dGrad;
    grad[3 * this.a2 + i] -= dGrad;
  }
}
;
_.a1 = 0;
_.a2 = 0;
_.charge_term = 0;
_.distModel = false;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Electrostatic_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Electrostatic', 615, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_ForceFieldMMFF94 = function $clinit_ForceFieldMMFF94(){
  carcfm.$clinit_ForceFieldMMFF94 = emptyMethod;
  carcf.$clinit_AbstractForceField();
  carcfm.mTables = new ju.HashMap;
}
;
carcfm.ForceFieldMMFF94 = function ForceFieldMMFF94(mol, tablename){
  carcfm.$clinit_ForceFieldMMFF94();
  carcfm.ForceFieldMMFF94_0.call(this, mol, tablename, new ju.HashMap);
}
;
carcfm.ForceFieldMMFF94_0 = function ForceFieldMMFF94_0(m, tablename, options){
  carcfm.$clinit_ForceFieldMMFF94();
  var dielConst, dielModel, nonBondedThresh, sep, table;
  carcf.AbstractForceField.call(this, m);
  this.$init_86();
  this.mMMFFMol = new carcfm.MMFFMolecule(m);
  this.mMol.ensureHelperArrays_0(7);
  table = castTo(carcfm.mTables.get(tablename), 261);
  nonBondedThresh = options.containsKey('nonbonded cutoff')?jl.doubleValue__D__devirtual$_0(castToDouble(castToDouble(options.get('nonbonded cutoff')))):100;
  dielConst = options.containsKey('dielectric constant')?jl.doubleValue__D__devirtual$_0(castToDouble(castToDouble(options.get('dielectric constant')))):1;
  dielModel = options.containsKey('dielectric model')?jl.equals_Ljava_lang_Object__Z__devirtual$_2(castToString(castToString(options.get('dielectric model'))), 'distance'):false;
  sep = new carcfm.Separation(this.mMMFFMol);
  if (!options.containsKey('angle bend') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('angle bend')))))
    this.mEnergies.addAll(carcfm.findIn(table, this.mMMFFMol));
  if (!options.containsKey('bond stretch') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('bond stretch')))))
    this.mEnergies.addAll(carcfm.findIn_0(table, this.mMMFFMol));
  if (!options.containsKey('electrostatic') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('electrostatic')))))
    this.mEnergies.addAll(carcfm.findIn_1(table, this.mMMFFMol, sep, nonBondedThresh, dielModel, dielConst));
  if (!options.containsKey('out of plane') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('out of plane')))))
    this.mEnergies.addAll(carcfm.findIn_2(table, this.mMMFFMol));
  if (!options.containsKey('stretch bend') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('stretch bend')))))
    this.mEnergies.addAll(carcfm.findIn_3(table, this.mMMFFMol));
  if (!options.containsKey('torsion angle') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('torsion angle')))))
    this.mEnergies.addAll(carcfm.findIn_4(table, this.mMMFFMol));
  if (!options.containsKey('van der waals') || jl.booleanValue__Z__devirtual$(castToBoolean(castToBoolean(options.get('van der waals')))))
    this.mEnergies.addAll(carcfm.findIn_5(table, this.mMMFFMol, sep, nonBondedThresh));
}
;
carcfm.initialize_2 = function initialize_2(tableSet){
  carcfm.$clinit_ForceFieldMMFF94();
  carcfm.loadTable(tableSet, carcfm.newMMFF94(tableSet));
}
;
carcfm.loadTable = function loadTable(name_0, table){
  if (!carcfm.mTables.containsKey(name_0))
    carcfm.mTables.put(name_0, table);
}
;
defineClass(260, 435, {1:1}, carcfm.ForceFieldMMFF94, carcfm.ForceFieldMMFF94_0);
_.$init_86 = function $init_86(){
  this.mEnergies = new ju.ArrayList;
}
;
_.getTotalEnergy_0 = function getTotalEnergy(){
  return this.getTotalEnergy_1(this.mPos);
}
;
_.getTotalEnergy_1 = function getTotalEnergy_0(pos){
  var term, term$iterator, total;
  total = 0;
  for (term$iterator = this.mEnergies.iterator(); term$iterator.hasNext_0();) {
    term = castTo(term$iterator.next_3(), 150);
    total += term.getEnergy_0(pos);
  }
  return total;
}
;
_.size_1 = function size_3(){
  return this.mMMFFMol.getAllAtoms_0();
}
;
_.updateGradient = function updateGradient(){
  var engy, engy$iterator, gradScale, i, i0, maxGrad;
  this.mGrad = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDim, 15, 1);
  for (engy$iterator = this.mEnergies.iterator(); engy$iterator.hasNext_0();) {
    engy = castTo(engy$iterator.next_3(), 150);
    engy.getGradient(this.mPos, this.mGrad);
  }
  maxGrad = -100000000;
  gradScale = 0.1;
  for (i0 = 0; i0 < this.mDim; i0++) {
    this.mGrad[i0] *= gradScale;
    if (this.mGrad[i0] > maxGrad)
      maxGrad = this.mGrad[i0];
  }
  if (maxGrad > 10) {
    while (maxGrad * gradScale > 10)
      gradScale *= 0.5;
    for (i = 0; i < this.mDim; i++)
      this.mGrad[i] *= gradScale;
  }
  return gradScale;
}
;
_.zeroGradient = function zeroGradient_0(){
  var hydrogenMap, i, i$array, i$index, i$max, mappedIndex;
  if (jsNotEquals(this.mFixedAtoms, null)) {
    hydrogenMap = this.mMMFFMol.getHydrogenMap();
    for (i$array = this.mFixedAtoms , i$index = 0 , i$max = i$array.length; i$index < i$max; ++i$index) {
      i = i$array[i$index];
      mappedIndex = hydrogenMap[i];
      this.mGrad[3 * mappedIndex] = 0;
      this.mGrad[3 * mappedIndex + 1] = 0;
      this.mGrad[3 * mappedIndex + 2] = 0;
    }
  }
}
;
carcfm.MMFF94 = 'MMFF94';
carcfm.MMFF94S = 'MMFF94s';
carcfm.MMFF94SPLUS = 'MMFF94s+';
cggl.Lcom_actelion_research_chem_forcefield_mmff_ForceFieldMMFF94_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'ForceFieldMMFF94', 260, cggl.Lcom_actelion_research_chem_forcefield_AbstractForceField_2_classLit);
carcfm.$clinit_MMFFMolecule = function $clinit_MMFFMolecule(){
  carcfm.$clinit_MMFFMolecule = emptyMethod;
  carc2.$clinit_StereoMolecule();
}
;
carcfm.MMFFMolecule = function MMFFMolecule(mol){
  carcfm.$clinit_MMFFMolecule();
  var allset, changed, i, i0, r, rings;
  carc2.StereoMolecule_1.call(this, mol);
  this.$init_87();
  this.mHydrogenMap = this.getHandleHydrogenMap_0();
  rings = this.getRingSet_0();
  this.mRingArom = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_RingBoolean_2_classLit, {4:1, 1:1, 7:1}, 177, rings.getSize_0(), 0, 1);
  for (i0 = 0; i0 < this.mRingArom.length; i0++)
    setCheck(this.mRingArom, i0, (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET));
  allset = false;
  changed = true;
  while (!allset && changed) {
    allset = true;
    changed = false;
    for (r = 0; r < rings.getSize_0(); r++) {
      if (jsEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET))) {
        setCheck(this.mRingArom, r, carcfmt2.ringIsMMFFAromatic_0(this, r));
        if (jsNotEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET)))
          changed = true;
      }
      if (jsEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET)))
        allset = false;
    }
  }
  if (!allset)
    throw toJs(new carcfm.BadRingAromException);
  this.mAtomTypes = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.getAllAtoms_0(), 15, 1);
  for (i = 0; i < this.mAtomTypes.length; i++) {
    this.mAtomTypes[i] = -1;
    this.mAtomTypes[i] = carcfmt2.getType_0(this, i);
    if (this.mAtomTypes[i] == 0)
      throw toJs(new carcfm.BadAtomTypeException("Couldn't assign an atom type to atom " + i + ' (' + this.getAtomLabel_0(i) + ')'));
  }
}
;
defineClass(436, 19, {100:1, 70:1, 19:1, 4:1, 1:1}, carcfm.MMFFMolecule);
_.$init_87 = function $init_87(){
}
;
_.getAtomType = function getAtomType_0(a){
  return this.mAtomTypes[a];
}
;
_.getHydrogenMap = function getHydrogenMap(){
  return this.mHydrogenMap;
}
;
_.isSetRingMMFFAromaticity = function isSetRingMMFFAromaticity(r){
  return jsEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.NOT_SET))?false:true;
}
;
_.ringIsMMFFAromatic = function ringIsMMFFAromatic(r){
  return jsEquals(this.mRingArom[r], (carcfm.$clinit_RingBoolean() , carcfm.TRUE))?true:false;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_MMFFMolecule_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'MMFFMolecule', 436, cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit);
carcfm.$clinit_OutOfPlane = function $clinit_OutOfPlane(){
  carcfm.$clinit_OutOfPlane = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.OutOfPlane = function OutOfPlane(table, mol, ac, a1, a2, a3){
  Object_0.call(this);
  this.$init_88();
  this.ac = ac;
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
  this.koop = table.oop.getKoop(mol, ac, a1, a2, a3);
}
;
carcfm.findIn_2 = function findIn_2(t, mol){
  carcfm.$clinit_OutOfPlane();
  var a1, a2, a3, ac, oops;
  oops = new ju.ArrayList;
  for (ac = 0; ac < mol.getAllAtoms_0(); ac++) {
    if (mol.getAllConnAtoms_0(ac) != 3)
      continue;
    a1 = mol.getConnAtom_0(ac, 0);
    a2 = mol.getConnAtom_0(ac, 1);
    a3 = mol.getConnAtom_0(ac, 2);
    oops.add(new carcfm.OutOfPlane(t, mol, ac, a1, a2, a3));
    oops.add(new carcfm.OutOfPlane(t, mol, ac, a1, a3, a2));
    oops.add(new carcfm.OutOfPlane(t, mol, ac, a2, a3, a1));
  }
  return oops;
}
;
defineClass(277, 1, {150:1, 1:1}, carcfm.OutOfPlane);
_.$init_88 = function $init_88(){
}
;
_.getEnergy_0 = function getEnergy_3(pos){
  var c2, chi, n, rji, rjk, rjl;
  rji = (new carcfm.Vector3_4(pos, this.ac, this.a1)).normalise();
  rjk = (new carcfm.Vector3_4(pos, this.ac, this.a2)).normalise();
  rjl = (new carcfm.Vector3_4(pos, this.ac, this.a3)).normalise();
  n = rji.cross_0(rjk).normalise();
  chi = 57.29577951308232 * $wnd.Math.asin(n.dot_0(rjl));
  c2 = 143.9325 * 0.017453292519943295 * 0.017453292519943295;
  return 0.5 * c2 * this.koop * chi * chi;
}
;
_.getGradient = function getGradient_2(pos, grad){
  var c2, chi, cosChi, cosChiSq, cosTheta, dE_dChi, dji, djk, djl, i, n, rji, rjk, rjl, sinChi, sinTheta, sinThetaSq, t1, t2, t3, term1, term2, tg1, tg3, tg4;
  rji = new carcfm.Vector3_4(pos, this.ac, this.a1);
  rjk = new carcfm.Vector3_4(pos, this.ac, this.a2);
  rjl = new carcfm.Vector3_4(pos, this.ac, this.a3);
  dji = rji.length_1();
  djk = rjk.length_1();
  djl = rjl.length_1();
  rji = rji.normalise();
  rjk = rjk.normalise();
  rjl = rjl.normalise();
  n = rji.negate().cross_0(rjk).normalise();
  c2 = 143.9325 * 0.017453292519943295 * 0.017453292519943295;
  sinChi = rjl.dot_0(n);
  cosChiSq = 1 - sinChi * sinChi;
  cosChi = $wnd.Math.max(cosChiSq > 0?$wnd.Math.sqrt(cosChiSq):0, 1.0E-8);
  chi = 57.29577951308232 * $wnd.Math.asin(sinChi);
  cosTheta = rji.dot_0(rjk);
  sinThetaSq = $wnd.Math.max(1 - cosTheta * cosTheta, 1.0E-8);
  sinTheta = $wnd.Math.max(sinThetaSq > 0?$wnd.Math.sqrt(sinThetaSq):0, 1.0E-8);
  dE_dChi = 57.29577951308232 * 0.043844346773450435 * this.koop * chi;
  t1 = rjl.cross_0(rjk);
  t2 = rji.cross_0(rjl);
  t3 = rjk.cross_0(rji);
  term1 = cosChi * sinTheta;
  term2 = sinChi / (cosChi * sinThetaSq);
  tg1 = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [(t1.x_0 / term1 - (rji.x_0 - rjk.x_0 * cosTheta) * term2) / dji, (t1.y_0 / term1 - (rji.y_0 - rjk.y_0 * cosTheta) * term2) / dji, (t1.z_0 / term1 - (rji.z_0 - rjk.z_0 * cosTheta) * term2) / dji]);
  tg3 = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [(t2.x_0 / term1 - (rjk.x_0 - rji.x_0 * cosTheta) * term2) / djk, (t2.y_0 / term1 - (rjk.y_0 - rji.y_0 * cosTheta) * term2) / djk, (t2.z_0 / term1 - (rjk.z_0 - rji.z_0 * cosTheta) * term2) / djk]);
  tg4 = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [(t3.x_0 / term1 - rjl.x_0 * sinChi / cosChi) / djl, (t3.y_0 / term1 - rjl.y_0 * sinChi / cosChi) / djl, (t3.z_0 / term1 - rjl.z_0 * sinChi / cosChi) / djl]);
  for (i = 0; i < 3; i++) {
    grad[3 * this.a1 + i] += dE_dChi * tg1[i];
    grad[3 * this.ac + i] += -dE_dChi * (tg1[i] + tg3[i] + tg4[i]);
    grad[3 * this.a2 + i] += dE_dChi * tg3[i];
    grad[3 * this.a3 + i] += dE_dChi * tg4[i];
  }
}
;
_.a1 = 0;
_.a2 = 0;
_.a3 = 0;
_.ac = 0;
_.koop = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_OutOfPlane_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'OutOfPlane', 277, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_PeriodicTable = function $clinit_PeriodicTable(){
  carcfm.$clinit_PeriodicTable = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.row_0 = function row_0(ano){
  carcfm.$clinit_PeriodicTable();
  if (ano < 3)
    return 0;
  else if (ano < 11)
    return 1;
  else if (ano < 19)
    return 2;
  else if (ano < 37)
    return 3;
  else if (ano < 55)
    return 4;
  return 0;
}
;
carcfm.rowtm = function rowtm(ano){
  carcfm.$clinit_PeriodicTable();
  var row;
  row = 0;
  if (ano == 2)
    row = 1;
  else if (ano >= 3 && ano <= 10)
    row = 2;
  else if (ano >= 11 && ano <= 18)
    row = 3;
  else if (ano >= 19 && ano <= 36)
    row = 4;
  else if (ano >= 37 && ano <= 54)
    row = 5;
  if (ano >= 21 && ano <= 30 || ano >= 39 && ano <= 48)
    row *= 10;
  return row;
}
;
defineClass(1211, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_PeriodicTable_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'PeriodicTable', 1211, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_RingBoolean = function $clinit_RingBoolean(){
  carcfm.$clinit_RingBoolean = emptyMethod;
  jl.$clinit_Enum();
  carcfm.TRUE = new carcfm.RingBoolean('TRUE', 0);
  carcfm.FALSE = new carcfm.RingBoolean('FALSE', 1);
  carcfm.NOT_SET = new carcfm.RingBoolean('NOT_SET', 2);
}
;
carcfm.RingBoolean = function RingBoolean(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_89();
}
;
carcfm.valueOf_1 = function valueOf_1(name_0){
  carcfm.$clinit_RingBoolean();
  return valueOf((carcfm.$clinit_RingBoolean$Map() , carcfm.$MAP_0), name_0);
}
;
carcfm.values_1 = function values_1(){
  carcfm.$clinit_RingBoolean();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_RingBoolean_2_classLit, 1), {4:1, 1:1, 7:1}, 177, 0, [carcfm.TRUE, carcfm.FALSE, carcfm.NOT_SET]);
}
;
defineClass(177, 11, {177:1, 4:1, 10:1, 11:1, 1:1}, carcfm.RingBoolean);
_.$init_89 = function $init_89(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_RingBoolean_2_classLit = createForEnum('com.actelion.research.chem.forcefield.mmff', 'RingBoolean', 177, cggl.Ljava_lang_Enum_2_classLit, carcfm.values_1, carcfm.valueOf_1);
carcfm.$clinit_RingBoolean$Map = function $clinit_RingBoolean$Map(){
  carcfm.$clinit_RingBoolean$Map = emptyMethod;
  carcfm.$MAP_0 = createValueOfMap(carcfm.values_1());
}
;
defineClass(1154, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_RingBoolean$Map_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'RingBoolean/Map', 1154, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Search = function $clinit_Search(){
  carcfm.$clinit_Search = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.binary = function binary(col, val, lo, hi, findlow, arr){
  carcfm.$clinit_Search();
  var at, max_0, min_0, vat;
  lo = $wnd.Math.max(0, lo);
  hi = $wnd.Math.min(arr.length_0(), hi);
  at = narrow_int((hi - lo) / 2);
  min_0 = lo;
  max_0 = hi;
  if (arr.get_0(min_0, col) > val || arr.get_0(max_0 - 1, col) < val)
    return -1;
  while (hi >= lo) {
    at = lo + narrow_int((hi - lo) / 2);
    vat = arr.get_0(at, col);
    if (vat == val) {
      if (findlow && at > min_0 && arr.get_0(at - 1, col) == val)
        hi = at;
      else if (!findlow && at < max_0 - 1 && arr.get_0(at + 1, col) == val)
        lo = at;
      else 
        return at;
    }
     else if (vat > val)
      hi = at;
    else if (vat < val)
      lo = at;
    if (hi - lo == 1 && arr.get_0(lo, col) < val && arr.get_0(hi, col) > val)
      break;
  }
  return -1;
}
;
carcfm.binary_0 = function binary_0(col, val, data_0){
  carcfm.$clinit_Search();
  return carcfm.binary(col, val, 0, data_0.length_0(), true, data_0);
}
;
carcfm.binary_1 = function binary_1(cols_0, vals, data_0){
  carcfm.$clinit_Search();
  var hi, i, lo;
  if (cols_0.length != vals.length)
    return -1;
  lo = 0;
  hi = data_0.length_0();
  for (i = 0; i < cols_0.length - 1; i++) {
    lo = carcfm.binary(cols_0[i], vals[i], lo, hi + 1, true, data_0);
    hi = carcfm.binary(cols_0[i], vals[i], lo, hi + 1, false, data_0);
    if (lo == -1 || hi == -1)
      return -1;
  }
  return carcfm.binary(cols_0[i], vals[i], lo, hi + 1, true, data_0);
}
;
carcfm.s_0 = function s_0(a, b){
  carcfm.$clinit_Search();
  return a;
}
;
defineClass(1209, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_Search_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Search', 1209, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Searchable = function $clinit_Searchable(){
  carcfm.$clinit_Searchable = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Searchable_2_classLit = createForInterface('com.actelion.research.chem.forcefield.mmff', 'Searchable');
carcfm.$clinit_Separation = function $clinit_Separation(){
  carcfm.$clinit_Separation = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.Separation = function Separation(mol){
  carcfm.$clinit_Separation();
  var atom, i, j, k, keyfour, keythree, keytwo, nbr1, nbr2, nbr3;
  Object_0.call(this);
  this.$init_90();
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    this.table.put(new carcfm.SortedPair(atom, atom), (carcfm.$clinit_Separation$Relation() , carcfm.ONE_ONE));
    for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
      nbr1 = mol.getConnAtom_0(atom, i);
      keytwo = new carcfm.SortedPair(atom, nbr1);
      this.table.put(keytwo, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_TWO));
      for (j = 0; j < mol.getAllConnAtoms_0(nbr1); j++) {
        nbr2 = mol.getConnAtom_0(nbr1, j);
        keythree = new carcfm.SortedPair(atom, nbr2);
        if (!this.table.containsKey(keythree) || maskUndefined(this.table.get(keythree)) === maskUndefined((carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR)))
          this.table.put(keythree, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_THREE));
        for (k = 0; k < mol.getAllConnAtoms_0(nbr2); k++) {
          nbr3 = mol.getConnAtom_0(nbr2, k);
          keyfour = new carcfm.SortedPair(atom, nbr3);
          if (!this.table.containsKey(keyfour))
            this.table.put(keyfour, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR));
        }
      }
    }
  }
}
;
defineClass(437, 1, {1:1}, carcfm.Separation);
_.$init_90 = function $init_90(){
  this.table = new ju.HashMap;
}
;
_.get_1 = function get_1(key){
  return jsNotEquals(this.table.get(key), null)?castTo(this.table.get(key), 136):(carcfm.$clinit_Separation$Relation() , carcfm.ONE_X);
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Separation_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Separation', 437, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Separation$Relation = function $clinit_Separation$Relation(){
  carcfm.$clinit_Separation$Relation = emptyMethod;
  jl.$clinit_Enum();
  carcfm.ONE_ONE = new carcfm.Separation$Relation('ONE_ONE', 0);
  carcfm.ONE_TWO = new carcfm.Separation$Relation('ONE_TWO', 1);
  carcfm.ONE_THREE = new carcfm.Separation$Relation('ONE_THREE', 2);
  carcfm.ONE_FOUR = new carcfm.Separation$Relation('ONE_FOUR', 3);
  carcfm.ONE_X = new carcfm.Separation$Relation('ONE_X', 4);
}
;
carcfm.Separation$Relation = function Separation$Relation(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_91();
}
;
carcfm.valueOf_2 = function valueOf_2(name_0){
  carcfm.$clinit_Separation$Relation();
  return valueOf((carcfm.$clinit_Separation$Relation$Map() , carcfm.$MAP_1), name_0);
}
;
carcfm.values_2 = function values_2(){
  carcfm.$clinit_Separation$Relation();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_Separation$Relation_2_classLit, 1), {4:1, 1:1, 7:1}, 136, 0, [carcfm.ONE_ONE, carcfm.ONE_TWO, carcfm.ONE_THREE, carcfm.ONE_FOUR, carcfm.ONE_X]);
}
;
defineClass(136, 11, {136:1, 4:1, 10:1, 11:1, 1:1}, carcfm.Separation$Relation);
_.$init_91 = function $init_91(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Separation$Relation_2_classLit = createForEnum('com.actelion.research.chem.forcefield.mmff', 'Separation/Relation', 136, cggl.Ljava_lang_Enum_2_classLit, carcfm.values_2, carcfm.valueOf_2);
carcfm.$clinit_Separation$Relation$Map = function $clinit_Separation$Relation$Map(){
  carcfm.$clinit_Separation$Relation$Map = emptyMethod;
  carcfm.$MAP_1 = createValueOfMap(carcfm.values_2());
}
;
defineClass(1125, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_Separation$Relation$Map_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Separation/Relation/Map', 1125, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_SortedPair = function $clinit_SortedPair(){
  carcfm.$clinit_SortedPair = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.SortedPair = function SortedPair(a, b){
  carcfm.$clinit_SortedPair();
  Object_0.call(this);
  this.$init_92();
  this.a = a > b?a:b;
  this.b = a > b?b:a;
}
;
defineClass(106, 1, {106:1, 10:1, 1:1}, carcfm.SortedPair);
_.$init_92 = function $init_92(){
}
;
_.compareTo_1 = function compareTo_16(that){
  return this.compareTo_8(castTo(that, 106));
}
;
_.compareTo_8 = function compareTo_15(that){
  if (this.a > that.a)
    return 1;
  if (this.a < that.a)
    return -1;
  if (this.b > that.b)
    return 1;
  if (this.b < that.b)
    return -1;
  return 0;
}
;
_.equals_0 = function equals_13(obj){
  var that;
  if (maskUndefined(obj) === maskUndefined(this))
    return true;
  if (!instanceOf(obj, 106))
    return false;
  that = castTo(obj, 106);
  return this.a == that.a && this.b == that.b;
}
;
_.hashCode_1 = function hashCode_3(){
  return (new jl.Integer(this.a)).hashCode_1() ^ (new jl.Integer(this.b)).hashCode_1();
}
;
_.toString_0 = function toString_14(){
  return this.a + ',' + this.b;
}
;
_.a = 0;
_.b = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_SortedPair_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'SortedPair', 106, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_StretchBend = function $clinit_StretchBend(){
  carcfm.$clinit_StretchBend = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.StretchBend = function StretchBend(table, mol, a1, a2, a3){
  Object_0.call(this);
  this.$init_93();
  this.mol = mol;
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
  this.theta0 = table.angle.theta_0(mol, a1, a2, a3);
  this.r0i = table.bond.r0_1(mol, a1, a2);
  this.r0k = table.bond.r0_1(mol, a3, a2);
  this.kba_ijk = table.stbn.kba(mol, a1, a2, a3);
  this.kba_kji = table.stbn.kba(mol, a3, a2, a1);
}
;
carcfm.findIn_3 = function findIn_3(t, mol){
  carcfm.$clinit_StretchBend();
  var atom, atomt, bend, i, k, nbr_i, nbr_k, stbn;
  stbn = new ju.ArrayList;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    atomt = mol.getAtomType(atom);
    if (mol.getAllConnAtoms_0(atom) <= 1 && t.atom.linear(atomt))
      continue;
    for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
      nbr_i = mol.getConnAtom_0(atom, i);
      for (k = 0; k < mol.getAllConnAtoms_0(atom); k++) {
        nbr_k = mol.getConnAtom_0(atom, k);
        if (nbr_i > nbr_k)
          continue;
        if (carcfm.valid(t, mol, nbr_i, atom, nbr_k)) {
          bend = new carcfm.StretchBend(t, mol, nbr_i, atom, nbr_k);
          if ($wnd.Math.abs(bend.kba_ijk) > 1.0E-4 || $wnd.Math.abs(bend.kba_kji) > 1.0E-4) {
            stbn.add(bend);
          }
        }
      }
    }
  }
  return stbn;
}
;
carcfm.valid = function valid(table, mol, a1, a2, a3){
  var a2t;
  a2t = mol.getAtomType(a2);
  if (table.atom.linear(a2t) || a1 == a3)
    return false;
  if (mol.getBond_0(a1, a2) == -1 || mol.getBond_0(a2, a3) == -1)
    return false;
  return true;
}
;
defineClass(616, 1, {150:1, 1:1}, carcfm.StretchBend);
_.$init_93 = function $init_93(){
}
;
_.getEnergy_0 = function getEnergy_4(pos){
  var dist1, dist2, factor, theta;
  dist1 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).length_1();
  dist2 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).length_1();
  theta = (new carcfm.Vector3_4(pos, this.a2, this.a1)).angle_0(new carcfm.Vector3_4(pos, this.a2, this.a3));
  factor = 143.9325 * 0.017453292519943295 * (jl.toDegrees(theta) - this.theta0);
  return factor * (dist1 - this.r0i) * this.kba_ijk + factor * (dist2 - this.r0k) * this.kba_kji;
}
;
_.getGradient = function getGradient_3(pos, grad){
  var angleTerm, c5, cosTheta, dCos_dS1, dCos_dS2, dCos_dS3, dCos_dS4, dCos_dS5, dCos_dS6, dist1, dist2, distTerm, p12, p32, sinTheta, sinThetaSq;
  dist1 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).length_1();
  dist2 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).length_1();
  p12 = (new carcfm.Vector3_4(pos, this.a2, this.a1)).normalise();
  p32 = (new carcfm.Vector3_4(pos, this.a2, this.a3)).normalise();
  c5 = 143.9325 * 0.017453292519943295;
  cosTheta = p12.dot_0(p32);
  sinThetaSq = 1 - cosTheta * cosTheta;
  sinTheta = $wnd.Math.max(sinThetaSq > 0?$wnd.Math.sqrt(sinThetaSq):0, 1.0E-8);
  angleTerm = 57.29577951308232 * $wnd.Math.acos(cosTheta) - this.theta0;
  distTerm = 57.29577951308232 * (this.kba_ijk * (dist1 - this.r0i) + this.kba_kji * (dist2 - this.r0k));
  dCos_dS1 = 1 / dist1 * (p32.x_0 - cosTheta * p12.x_0);
  dCos_dS2 = 1 / dist1 * (p32.y_0 - cosTheta * p12.y_0);
  dCos_dS3 = 1 / dist1 * (p32.z_0 - cosTheta * p12.z_0);
  dCos_dS4 = 1 / dist2 * (p12.x_0 - cosTheta * p32.x_0);
  dCos_dS5 = 1 / dist2 * (p12.y_0 - cosTheta * p32.y_0);
  dCos_dS6 = 1 / dist2 * (p12.z_0 - cosTheta * p32.z_0);
  grad[3 * this.a1 + 0] += 2.5120960256267386 * (p12.x_0 * this.kba_ijk * angleTerm + dCos_dS1 / -sinTheta * distTerm);
  grad[3 * this.a1 + 1] += 2.5120960256267386 * (p12.y_0 * this.kba_ijk * angleTerm + dCos_dS2 / -sinTheta * distTerm);
  grad[3 * this.a1 + 2] += 2.5120960256267386 * (p12.z_0 * this.kba_ijk * angleTerm + dCos_dS3 / -sinTheta * distTerm);
  grad[3 * this.a2 + 0] += 2.5120960256267386 * ((-p12.x_0 * this.kba_ijk - p32.x_0 * this.kba_kji) * angleTerm + (-dCos_dS1 - dCos_dS4) / -sinTheta * distTerm);
  grad[3 * this.a2 + 1] += 2.5120960256267386 * ((-p12.y_0 * this.kba_ijk - p32.y_0 * this.kba_kji) * angleTerm + (-dCos_dS2 - dCos_dS5) / -sinTheta * distTerm);
  grad[3 * this.a2 + 2] += 2.5120960256267386 * ((-p12.z_0 * this.kba_ijk - p32.z_0 * this.kba_kji) * angleTerm + (-dCos_dS3 - dCos_dS6) / -sinTheta * distTerm);
  grad[3 * this.a3 + 0] += 2.5120960256267386 * (p32.x_0 * this.kba_kji * angleTerm + dCos_dS4 / -sinTheta * distTerm);
  grad[3 * this.a3 + 1] += 2.5120960256267386 * (p32.y_0 * this.kba_kji * angleTerm + dCos_dS5 / -sinTheta * distTerm);
  grad[3 * this.a3 + 2] += 2.5120960256267386 * (p32.z_0 * this.kba_kji * angleTerm + dCos_dS6 / -sinTheta * distTerm);
}
;
_.a1 = 0;
_.a2 = 0;
_.a3 = 0;
_.kba_ijk = 0;
_.kba_kji = 0;
_.r0i = 0;
_.r0k = 0;
_.theta0 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_StretchBend_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'StretchBend', 616, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Tables = function $clinit_Tables(){
  carcfm.$clinit_Tables = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.Tables = function Tables(csv_angle, csv_atom, csv_bci, csv_bndk, csv_bond, csv_covrad, csv_dfsb, csv_def, csv_hblaurie, csv_oop, csv_pbci, csv_stbn, csv_torsion, csv_vdws){
  Object_0.call(this);
  this.$init_94();
  this.angle = new carcfmt.Angle(this, csv_angle);
  this.chge = new carcfmt.Charge(this, csv_pbci, csv_bci);
  this.atom = new carcfmt.Atom(this, csv_atom);
  this.bndk = new carcfmt.Bndk(this, csv_bndk);
  this.bond = new carcfmt.Bond(this, csv_bond);
  this.covrad = new carcfmt.CovRad(this, csv_covrad);
  this.dfsb = new carcfmt.Dfsb(this, csv_dfsb);
  this.def = new carcfmt.Def(this, csv_def);
  this.hblaurie = new carcfmt.HerschbachLaurie(this, csv_hblaurie);
  this.oop = new carcfmt.OutOfPlane_0(this, csv_oop);
  this.stbn = new carcfmt.Stbn(this, csv_stbn);
  this.torsion = new carcfmt.Torsion(this, csv_torsion);
  this.vdws = new carcfmt.VanDerWaals_0(this, csv_vdws);
}
;
carcfm.newMMFF94 = function newMMFF94(tableSet){
  carcfm.$clinit_Tables();
  return new carcfm.Tables('2342\nint,int,int,int,float,float\n0,0,1,0,0.000,108.900\n0,1,1,1,0.851,109.608\n0,1,1,2,0.736,109.445\n0,1,1,3,0.777,107.517\n0,1,1,4,1.006,110.265\n0,1,1,5,0.636,110.549\n0,1,1,6,0.992,108.133\n0,1,1,8,0.777,108.290\n0,1,1,9,1.136,108.194\n0,1,1,10,1.050,109.960\n0,1,1,11,1.225,108.313\n0,1,1,12,1.056,108.679\n0,1,1,13,1.078,106.820\n0,1,1,14,0.980,109.945\n0,1,1,15,0.743,107.397\n0,1,1,17,1.089,108.578\n0,1,1,18,1.093,109.315\n0,1,1,19,0.755,115.436\n0,1,1,20,1.021,108.659\n0,1,1,22,1.001,110.125\n0,1,1,25,0.803,112.356\n0,1,1,26,0.833,109.879\n0,1,1,34,1.179,106.493\n0,1,1,37,0.756,108.617\n0,1,1,39,0.927,109.170\n0,1,1,40,1.130,108.678\n0,1,1,41,0.330,98.422\n0,1,1,43,1.135,108.019\n0,1,1,45,1.197,105.028\n0,1,1,54,1.173,106.424\n0,1,1,55,1.150,107.604\n0,1,1,56,1.199,110.371\n0,1,1,57,1.012,109.900\n0,1,1,58,1.179,106.327\n0,1,1,61,1.125,109.311\n0,1,1,63,1.006,110.058\n0,1,1,64,0.988,111.064\n0,1,1,67,1.216,104.557\n0,1,1,68,1.018,107.195\n0,1,1,73,1.160,104.658\n0,1,1,78,1.012,109.850\n0,1,1,80,0.947,113.327\n0,1,1,81,1.108,109.837\n0,2,1,2,1.113,111.453\n0,2,1,3,0.667,104.829\n0,2,1,4,1.022,109.873\n0,2,1,5,0.632,110.292\n0,2,1,6,1.074,108.699\n0,2,1,8,0.884,111.553\n0,2,1,9,1.118,109.577\n0,2,1,10,1.160,107.963\n0,2,1,11,1.192,110.419\n0,2,1,12,1.070,109.410\n0,2,1,15,1.078,109.560\n0,2,1,17,1.077,109.434\n0,2,1,18,1.188,105.110\n0,2,1,20,1.053,107.448\n0,2,1,22,0.942,114.020\n0,2,1,25,0.893,106.815\n0,2,1,26,1.029,99.065\n0,2,1,34,1.066,111.817\n0,2,1,37,0.985,111.446\n0,2,1,39,1.124,109.513\n0,2,1,40,1.149,108.270\n0,2,1,45,1.232,103.978\n0,2,1,63,0.935,114.692\n0,2,1,67,1.224,104.687\n0,3,1,3,0.974,111.746\n0,3,1,4,1.019,109.850\n0,3,1,5,0.650,108.385\n0,3,1,6,0.528,104.112\n0,3,1,8,1.197,105.837\n0,3,1,9,1.201,105.535\n0,3,1,10,0.634,102.655\n0,3,1,11,1.189,110.328\n0,3,1,12,1.136,106.064\n0,3,1,13,1.147,103.645\n0,3,1,14,1.048,106.404\n0,3,1,15,1.125,107.192\n0,3,1,17,1.092,108.602\n0,3,1,18,1.120,108.119\n0,3,1,20,0.969,111.830\n0,3,1,22,0.999,110.522\n0,3,1,26,0.742,116.555\n0,3,1,34,1.141,107.871\n0,3,1,37,1.011,109.833\n0,3,1,39,1.136,108.751\n0,3,1,40,1.174,106.941\n0,3,1,41,1.033,108.216\n0,3,1,45,1.221,104.281\n0,3,1,63,1.069,107.077\n0,3,1,64,1.028,109.186\n0,3,1,81,1.167,107.327\n0,4,1,4,0.954,114.186\n0,4,1,5,0.615,111.417\n0,4,1,6,1.273,109.977\n0,4,1,8,1.099,111.063\n0,4,1,9,1.187,106.750\n0,4,1,10,1.117,110.488\n0,4,1,13,1.021,110.047\n0,4,1,15,1.028,112.432\n0,4,1,18,1.187,105.351\n0,4,1,22,1.174,102.556\n0,4,1,26,0.853,108.999\n0,4,1,34,1.148,108.160\n0,4,1,37,0.993,111.424\n0,5,1,5,0.516,108.836\n0,5,1,6,0.781,108.577\n0,5,1,8,0.653,110.297\n0,5,1,9,0.733,109.894\n0,5,1,10,0.740,107.646\n0,5,1,11,0.875,107.897\n0,5,1,12,0.698,108.162\n0,5,1,13,0.613,106.049\n0,5,1,14,0.508,113.019\n0,5,1,15,0.576,109.609\n0,5,1,17,0.634,107.944\n0,5,1,18,0.663,106.855\n0,5,1,19,0.450,113.195\n0,5,1,20,0.706,111.000\n0,5,1,22,0.618,110.380\n0,5,1,25,0.487,109.486\n0,5,1,26,0.466,111.172\n0,5,1,34,0.872,106.224\n0,5,1,35,0.644,125.663\n0,5,1,37,0.627,109.491\n0,5,1,39,0.811,106.299\n0,5,1,40,0.719,109.870\n0,5,1,41,0.525,108.904\n0,5,1,43,0.692,109.083\n0,5,1,45,0.741,105.197\n0,5,1,46,0.719,106.735\n0,5,1,54,0.874,106.973\n0,5,1,55,0.861,108.507\n0,5,1,56,0.814,108.223\n0,5,1,57,0.626,110.420\n0,5,1,58,0.750,105.481\n0,5,1,61,0.710,109.227\n0,5,1,62,0.655,113.035\n0,5,1,63,0.621,110.467\n0,5,1,64,0.622,110.457\n0,5,1,67,0.732,106.474\n0,5,1,68,0.748,103.817\n0,5,1,72,0.547,116.576\n0,5,1,73,0.633,107.153\n0,5,1,78,0.640,109.078\n0,5,1,80,0.684,105.144\n0,5,1,81,0.721,107.870\n0,6,1,6,1.156,111.368\n0,6,1,8,1.333,112.223\n0,6,1,9,1.224,116.950\n0,6,1,10,1.432,108.568\n0,6,1,11,1.593,106.900\n0,6,1,15,1.273,112.012\n0,6,1,17,1.348,108.655\n0,6,1,19,0.906,117.214\n0,6,1,20,1.293,108.202\n0,6,1,22,1.287,108.913\n0,6,1,25,1.171,103.598\n0,6,1,26,0.888,118.433\n0,6,1,34,1.257,114.975\n0,6,1,37,0.878,107.978\n0,6,1,39,1.485,106.464\n0,6,1,40,1.371,110.779\n0,6,1,41,1.333,106.467\n0,6,1,45,1.523,104.438\n0,6,1,57,1.308,108.467\n0,6,1,63,1.351,106.535\n0,6,1,64,1.238,111.308\n0,8,1,8,1.203,110.856\n0,8,1,9,1.133,114.080\n0,8,1,10,1.258,108.683\n0,8,1,12,1.217,107.251\n0,8,1,15,1.120,112.356\n0,8,1,20,1.116,109.353\n0,8,1,25,1.143,98.698\n0,8,1,34,1.138,113.412\n0,8,1,37,1.090,110.992\n0,8,1,39,1.364,104.193\n0,8,1,40,0.964,123.962\n0,8,1,41,1.234,103.868\n0,8,1,43,1.137,113.596\n0,8,1,45,1.583,96.139\n0,8,1,57,1.038,114.266\n0,8,1,63,1.104,110.598\n0,8,1,64,1.156,108.127\n0,9,1,10,1.209,110.720\n0,9,1,12,1.173,109.152\n0,9,1,15,1.024,117.465\n0,9,1,25,1.060,102.432\n0,9,1,37,1.077,111.565\n0,9,1,40,1.084,116.728\n0,9,1,80,1.163,107.509\n0,10,1,10,1.191,111.995\n0,10,1,15,1.161,110.502\n0,10,1,17,1.269,105.509\n0,10,1,20,1.220,104.838\n0,10,1,22,1.132,109.262\n0,10,1,25,1.015,104.822\n0,10,1,37,1.107,110.423\n0,10,1,40,1.264,108.536\n0,10,1,41,1.087,110.961\n0,10,1,57,1.268,103.622\n0,11,1,11,1.638,106.081\n0,11,1,15,1.254,109.517\n0,11,1,20,1.243,107.637\n0,11,1,25,1.244,97.532\n0,11,1,34,1.338,108.669\n0,11,1,35,1.556,110.367\n0,11,1,37,1.151,112.278\n0,11,1,41,1.301,105.053\n0,11,1,45,1.550,100.991\n0,11,1,73,1.303,106.569\n0,11,1,75,0.884,114.378\n0,12,1,12,1.096,110.422\n0,12,1,15,1.146,111.064\n0,12,1,18,1.299,104.827\n0,12,1,19,0.932,108.971\n0,12,1,20,1.081,108.605\n0,12,1,22,1.097,108.028\n0,12,1,25,0.989,106.118\n0,12,1,37,1.076,109.030\n0,12,1,39,1.150,110.359\n0,12,1,45,1.353,101.430\n0,12,1,63,1.071,109.474\n0,12,1,64,1.093,108.338\n0,13,1,13,1.093,111.645\n0,13,1,20,1.084,106.534\n0,13,1,22,1.068,107.469\n0,13,1,45,1.305,101.383\n0,14,1,20,1.021,107.718\n0,15,1,15,1.147,111.896\n0,15,1,25,1.059,103.308\n0,15,1,34,1.222,107.318\n0,15,1,37,1.051,110.959\n0,15,1,40,1.149,111.005\n0,15,1,41,1.263,100.981\n0,15,1,63,1.060,110.596\n0,15,1,64,1.059,110.703\n0,15,1,73,1.289,105.029\n0,17,1,37,1.065,110.049\n0,18,1,20,1.121,107.960\n0,18,1,22,1.283,101.125\n0,18,1,37,1.203,104.390\n0,18,1,45,1.287,105.273\n0,18,1,64,1.093,109.683\n0,19,1,54,0.772,119.506\n0,20,1,20,1.229,99.084\n0,20,1,37,1.052,107.428\n0,20,1,45,1.169,106.335\n0,22,1,22,0.990,111.226\n0,22,1,25,0.885,107.293\n0,22,1,34,1.045,112.940\n0,22,1,37,1.037,108.586\n0,22,1,45,1.182,106.181\n0,25,1,25,0.551,127.138\n0,25,1,34,0.779,119.271\n0,25,1,37,0.784,113.945\n0,25,1,40,1.062,102.417\n0,25,1,58,0.916,110.234\n0,26,1,26,0.625,118.700\n0,34,1,34,1.216,109.167\n0,34,1,37,1.075,111.275\n0,34,1,41,1.048,112.238\n0,34,1,63,1.077,111.412\n0,34,1,73,1.142,110.240\n0,37,1,37,0.986,111.315\n0,37,1,40,1.129,109.188\n0,37,1,43,1.074,111.478\n0,37,1,45,1.259,102.800\n0,37,1,57,0.981,112.047\n0,37,1,64,1.175,102.239\n0,37,1,68,1.100,109.983\n0,37,1,78,1.005,110.638\n0,37,1,81,1.176,107.040\n0,39,1,39,1.260,108.547\n0,40,1,40,1.182,112.005\n0,40,1,55,1.322,105.786\n0,40,1,63,1.032,114.505\n0,40,1,64,1.000,116.376\n0,41,1,41,1.082,105.400\n0,41,1,63,1.061,107.112\n0,41,1,81,1.093,110.553\n0,45,1,45,1.391,102.088\n0,0,2,0,0.000,119.400\n1,0,2,0,0.000,118.200\n2,0,2,0,0.000,120.800\n3,0,2,0,0.000,62.600\n6,0,2,0,0.000,60.500\n0,1,2,1,0.752,118.043\n0,1,2,2,0.672,122.141\n1,1,2,2,0.684,116.929\n1,1,2,3,0.698,116.104\n0,1,2,4,0.828,125.045\n1,1,2,4,0.846,121.613\n0,1,2,5,0.446,120.108\n0,1,2,6,1.160,115.518\n0,1,2,10,1.015,116.707\n0,1,2,12,0.983,115.343\n0,1,2,13,0.964,115.395\n0,1,2,15,0.939,119.465\n0,1,2,17,0.883,121.868\n0,1,2,18,0.961,117.918\n0,1,2,20,0.880,118.310\n0,1,2,22,0.873,119.114\n0,1,2,30,0.826,124.605\n1,1,2,37,0.721,116.064\n0,1,2,40,0.982,118.515\n0,1,2,45,1.121,109.921\n0,1,2,56,1.006,117.192\n1,1,2,63,0.768,127.945\n1,1,2,64,0.966,113.884\n1,1,2,67,1.115,110.185\n1,2,2,2,0.747,121.550\n2,2,2,2,0.796,126.284\n6,2,2,2,0.173,60.549\n1,2,2,3,0.545,111.297\n2,2,2,3,0.893,118.456\n5,2,2,3,0.184,59.145\n1,2,2,4,0.902,121.053\n2,2,2,4,0.889,119.794\n0,2,2,5,0.535,121.004\n1,2,2,5,0.463,118.442\n0,2,2,6,1.117,121.267\n1,2,2,6,1.204,114.538\n1,2,2,9,0.960,123.536\n2,2,2,9,1.045,116.273\n0,2,2,10,1.003,120.828\n1,2,2,10,1.026,117.324\n0,2,2,11,1.089,119.100\n1,2,2,11,1.090,116.828\n0,2,2,12,0.931,120.132\n1,2,2,12,0.957,117.526\n0,2,2,13,0.867,122.717\n0,2,2,14,0.818,122.584\n1,2,2,14,0.819,122.344\n0,2,2,15,0.931,121.553\n1,2,2,15,0.949,119.466\n0,2,2,17,0.977,117.167\n0,2,2,18,1.044,114.561\n0,2,2,19,0.668,124.721\n0,2,2,20,0.931,117.784\n0,2,2,22,0.809,126.820\n3,2,2,22,0.149,66.165\n0,2,2,25,0.700,123.830\n0,2,2,34,1.066,116.151\n0,2,2,35,0.911,137.103\n1,2,2,37,0.598,117.508\n2,2,2,37,0.817,124.229\n1,2,2,39,0.976,122.360\n0,2,2,40,0.773,126.830\n1,2,2,40,0.976,120.132\n0,2,2,41,0.432,110.442\n0,2,2,43,1.144,111.808\n0,2,2,45,1.194,109.231\n1,2,2,45,1.062,113.984\n0,2,2,46,1.005,121.534\n0,2,2,55,0.995,121.154\n0,2,2,56,1.234,108.879\n0,2,2,62,0.808,135.269\n1,2,2,63,0.948,118.277\n1,2,2,64,0.866,123.528\n2,2,2,64,0.859,121.998\n1,2,2,67,1.132,112.136\n0,2,2,72,0.770,134.269\n1,2,2,81,1.078,116.541\n2,3,2,3,0.853,120.370\n2,3,2,4,0.878,119.739\n1,3,2,5,0.487,117.291\n1,3,2,6,1.142,116.738\n2,3,2,9,1.005,117.648\n1,3,2,10,1.039,115.698\n1,3,2,11,1.150,112.876\n1,3,2,12,0.997,114.732\n1,3,2,13,0.946,116.643\n1,3,2,14,0.891,117.111\n1,3,2,15,1.023,114.635\n1,3,2,20,0.870,119.265\n1,3,2,22,0.816,123.510\n1,3,2,30,1.025,112.209\n1,3,2,34,1.099,111.723\n1,3,2,35,1.141,118.767\n2,3,2,37,0.868,119.758\n1,3,2,40,1.024,116.408\n1,3,2,41,0.855,119.505\n1,3,2,43,1.046,114.257\n1,3,2,45,1.077,112.401\n1,3,2,46,1.066,114.841\n2,4,2,4,0.832,124.158\n0,4,2,5,0.573,121.000\n1,4,2,5,0.545,120.000\n2,4,2,9,0.973,120.845\n1,4,2,15,0.906,122.447\n1,4,2,18,0.947,119.537\n1,4,2,30,0.819,126.938\n2,4,2,37,0.864,121.093\n1,4,2,40,1.083,114.355\n1,4,2,45,1.158,109.426\n2,4,2,63,0.860,122.442\n0,5,2,5,0.365,119.523\n0,5,2,6,0.589,108.757\n1,5,2,9,0.643,117.000\n0,5,2,10,0.667,114.859\n0,5,2,11,0.795,108.186\n0,5,2,12,0.622,110.650\n0,5,2,13,0.566,113.513\n0,5,2,15,0.546,119.562\n0,5,2,17,0.492,124.000\n0,5,2,18,0.548,119.053\n0,5,2,22,0.534,120.000\n0,5,2,25,0.395,124.000\n0,5,2,30,0.572,120.000\n0,5,2,35,0.682,124.164\n1,5,2,37,0.491,117.423\n1,5,2,39,0.655,115.724\n0,5,2,40,0.568,112.322\n0,5,2,41,0.294,123.706\n0,5,2,45,0.728,107.774\n0,5,2,55,0.651,116.000\n0,5,2,62,0.568,125.344\n1,5,2,63,0.550,120.000\n1,5,2,64,0.546,120.000\n0,5,2,72,0.531,122.009\n1,5,2,81,0.665,115.000\n1,6,2,9,1.214,120.520\n0,6,2,10,1.311,115.921\n0,6,2,22,1.080,120.560\n0,6,2,35,1.172,132.391\n1,6,2,37,1.198,114.441\n0,6,2,40,1.239,119.073\n0,6,2,45,1.637,102.438\n1,9,2,10,1.098,119.802\n1,9,2,15,0.915,127.574\n2,9,2,37,0.981,119.536\n1,9,2,40,0.922,130.521\n0,10,2,12,1.144,112.723\n0,10,2,15,1.078,117.519\n0,10,2,25,1.144,100.818\n1,10,2,37,1.021,117.139\n0,10,2,40,0.988,126.034\n0,10,2,41,0.951,120.000\n0,12,2,12,1.012,119.105\n0,12,2,17,1.110,114.206\n0,12,2,18,1.201,110.553\n0,12,2,19,0.704,126.646\n0,12,2,20,0.903,120.563\n0,12,2,30,0.892,122.753\n1,12,2,37,0.976,116.136\n0,12,2,45,1.076,115.543\n0,13,2,18,1.132,113.616\n0,15,2,15,0.996,123.027\n0,15,2,35,0.950,133.654\n1,15,2,37,1.007,115.757\n0,15,2,40,0.895,128.924\n0,17,2,17,1.051,117.955\n1,18,2,37,1.183,106.608\n0,22,2,22,0.841,122.108\n3,22,2,22,0.180,58.963\n1,22,2,37,0.806,124.693\n1,30,2,37,0.849,123.816\n1,35,2,37,0.991,128.032\n0,40,2,40,0.949,128.436\n0,40,2,56,1.072,120.987\n1,40,2,63,0.922,124.268\n1,40,2,64,0.955,121.881\n0,40,2,72,0.820,135.317\n0,45,2,45,1.284,108.095\n2,64,2,64,0.888,120.342\n0,0,3,0,0.000,117.300\n1,0,3,0,0.000,115.800\n4,0,3,0,0.000,90.800\n7,0,3,0,0.000,91.100\n8,0,3,0,0.000,88.900\n0,1,3,1,1.151,118.016\n1,1,3,2,1.106,116.853\n1,1,3,3,1.214,114.612\n0,1,3,5,0.808,117.280\n0,1,3,6,1.043,109.716\n0,1,3,7,0.938,124.410\n0,1,3,9,0.978,119.788\n1,1,3,9,1.038,115.132\n0,1,3,10,0.984,112.735\n0,1,3,12,1.007,113.972\n0,1,3,15,1.024,113.612\n0,1,3,16,0.949,119.986\n0,1,3,18,0.732,134.097\n0,1,3,20,0.830,120.312\n0,1,3,22,0.928,115.001\n0,1,3,35,1.058,122.808\n1,1,3,37,1.051,115.191\n1,1,3,39,1.178,107.895\n0,1,3,40,0.979,118.457\n0,1,3,41,0.897,116.681\n0,1,3,43,1.046,113.731\n0,1,3,45,1.132,109.019\n0,1,3,51,1.160,116.573\n0,1,3,53,1.052,115.065\n0,1,3,54,1.135,111.322\n1,1,3,58,1.162,108.129\n0,1,3,62,1.119,111.523\n1,1,3,63,0.909,117.001\n1,1,3,64,0.887,118.253\n0,1,3,67,1.142,110.666\n0,1,3,74,1.010,116.851\n0,1,3,75,0.646,128.037\n2,2,3,2,0.976,112.562\n6,2,3,2,0.157,62.792\n2,2,3,3,0.957,113.239\n1,2,3,5,0.901,115.350\n1,2,3,6,0.932,106.510\n1,2,3,7,0.936,122.623\n1,2,3,9,0.831,122.253\n2,2,3,9,1.120,111.408\n1,2,3,10,1.042,111.721\n1,2,3,12,0.901,120.769\n1,2,3,15,1.057,112.105\n1,2,3,16,0.881,124.850\n1,2,3,22,0.969,113.027\n1,2,3,25,0.853,109.794\n2,2,3,37,0.973,112.935\n2,2,3,39,1.197,107.592\n1,2,3,40,0.910,123.437\n1,2,3,43,1.105,111.169\n1,2,3,53,1.082,114.032\n1,2,3,54,1.012,118.588\n1,2,3,55,1.186,107.278\n1,2,3,56,1.151,108.909\n2,2,3,63,0.918,116.947\n2,2,3,64,1.033,110.084\n1,2,3,67,1.022,117.597\n2,3,3,3,0.822,121.775\n8,3,3,3,1.280,89.965\n1,3,3,5,0.943,113.762\n1,3,3,6,0.935,103.030\n1,3,3,7,0.919,117.024\n1,3,3,9,1.050,115.704\n1,3,3,10,1.129,110.421\n1,3,3,12,1.053,111.492\n1,3,3,15,1.390,97.562\n1,3,3,16,1.092,111.888\n1,3,3,20,0.977,110.910\n1,3,3,22,1.010,110.295\n8,3,3,30,1.353,87.789\n2,3,3,37,0.932,114.949\n2,3,3,39,1.237,105.384\n1,3,3,40,1.003,117.124\n1,3,3,41,0.790,124.361\n1,3,3,45,0.919,121.023\n1,3,3,53,1.170,109.169\n2,3,3,63,0.981,112.685\n2,3,3,64,0.880,118.840\n1,3,3,67,1.119,111.860\n1,4,3,6,1.269,111.750\n1,4,3,7,1.126,120.852\n1,4,3,9,1.192,109.833\n2,4,3,37,0.964,114.081\n0,5,3,5,0.594,116.699\n0,5,3,6,0.819,108.253\n0,5,3,7,0.670,123.439\n0,5,3,9,0.623,119.491\n1,5,3,9,0.638,117.168\n0,5,3,10,0.874,111.761\n0,5,3,16,0.522,124.405\n1,5,3,37,0.564,116.400\n0,5,3,40,0.959,111.684\n0,5,3,53,0.644,118.000\n0,5,3,54,0.816,115.471\n1,5,3,63,0.559,118.000\n1,5,3,64,0.566,117.000\n0,5,3,67,0.700,113.698\n0,6,3,6,1.678,109.094\n0,6,3,7,1.155,124.425\n0,6,3,9,1.275,119.478\n1,6,3,9,1.416,111.868\n0,6,3,10,1.405,112.187\n0,6,3,16,1.269,116.317\n0,6,3,20,1.182,113.581\n4,6,3,20,1.495,93.130\n0,6,3,22,1.276,110.826\n7,6,3,30,1.530,93.191\n1,6,3,37,0.808,102.881\n1,6,3,39,1.611,104.655\n0,6,3,40,1.371,113.565\n0,6,3,41,1.477,102.658\n0,6,3,43,1.330,114.183\n0,6,3,48,1.315,115.328\n0,6,3,51,1.409,120.427\n0,6,3,54,1.495,110.510\n0,6,3,62,1.421,112.542\n1,6,3,63,1.339,109.082\n1,6,3,64,1.267,111.993\n1,6,3,80,1.256,113.698\n1,7,3,9,1.147,127.084\n0,7,3,10,0.907,127.152\n0,7,3,12,0.984,130.049\n0,7,3,15,1.101,123.313\n0,7,3,20,0.713,129.492\n0,7,3,22,1.093,121.851\n1,7,3,30,0.972,129.010\n1,7,3,37,0.734,119.968\n1,7,3,39,1.352,116.727\n0,7,3,41,1.281,112.087\n0,7,3,43,1.163,124.549\n0,7,3,48,1.114,127.879\n1,7,3,54,1.288,114.184\n0,7,3,55,1.258,120.056\n0,7,3,56,1.175,123.854\n1,7,3,58,1.323,117.081\n0,7,3,62,1.129,129.349\n1,7,3,63,1.036,126.456\n1,7,3,64,1.071,124.133\n1,7,3,78,0.955,132.047\n1,9,3,9,1.119,120.094\n2,9,3,9,1.021,124.131\n0,9,3,10,1.105,120.697\n1,9,3,10,1.154,116.608\n0,9,3,12,1.056,118.046\n0,9,3,15,1.036,119.679\n1,9,3,15,1.042,118.787\n1,9,3,16,0.936,127.665\n0,9,3,17,1.035,117.902\n0,9,3,18,1.121,114.698\n0,9,3,20,0.951,120.437\n0,9,3,22,1.040,116.861\n0,9,3,25,0.955,109.442\n0,9,3,35,1.054,134.470\n1,9,3,37,0.997,119.569\n2,9,3,37,1.060,114.740\n0,9,3,40,0.844,128.078\n1,9,3,40,1.018,124.152\n0,9,3,41,1.114,112.513\n0,9,3,45,1.497,102.140\n2,9,3,54,1.244,108.056\n1,9,3,57,1.038,118.096\n1,9,3,63,1.004,120.054\n1,9,3,64,1.053,117.060\n1,9,3,80,0.959,124.150\n0,10,3,10,1.612,114.923\n0,10,3,15,1.167,112.206\n0,10,3,16,1.005,123.150\n0,10,3,18,1.299,106.052\n0,10,3,20,1.019,115.213\n4,10,3,20,1.338,92.724\n0,10,3,22,1.076,113.651\n7,10,3,30,1.438,90.508\n0,10,3,35,1.223,122.649\n1,10,3,37,1.101,112.495\n1,10,3,39,1.434,104.419\n0,10,3,40,1.093,119.697\n0,10,3,43,1.144,115.929\n0,10,3,51,1.375,114.685\n0,10,3,55,1.286,109.590\n0,10,3,56,1.200,113.168\n1,10,3,63,1.075,114.623\n1,10,3,64,1.098,113.233\n1,10,3,78,1.182,109.543\n0,11,3,40,1.296,113.244\n0,11,3,75,0.850,120.964\n0,12,3,40,1.095,115.284\n1,12,3,63,0.965,117.217\n0,12,3,74,1.110,116.502\n0,15,3,15,1.109,115.620\n0,15,3,16,0.981,124.329\n0,15,3,17,1.191,110.607\n0,15,3,18,1.061,118.034\n4,15,3,20,1.345,91.041\n1,15,3,30,1.026,113.753\n1,15,3,37,1.037,113.305\n0,15,3,40,1.066,117.388\n1,15,3,57,0.896,122.260\n0,15,3,67,1.407,102.583\n0,15,3,74,1.076,119.117\n1,16,3,30,0.991,117.695\n0,16,3,35,1.030,130.230\n1,16,3,37,0.934,121.415\n1,16,3,39,1.004,123.196\n0,16,3,62,0.963,126.347\n1,16,3,63,1.006,117.454\n1,16,3,64,1.064,114.110\n0,17,3,17,0.939,123.528\n1,18,3,37,0.948,118.188\n4,20,3,20,1.495,94.800\n4,20,3,22,1.286,89.459\n7,20,3,37,1.282,89.733\n4,20,3,43,1.384,90.526\n0,22,3,22,0.932,115.334\n4,22,3,22,1.496,83.915\n1,22,3,37,0.940,114.995\n1,25,3,37,0.677,123.404\n0,25,3,67,0.661,131.520\n2,37,3,37,0.933,115.566\n1,37,3,40,0.987,118.790\n1,37,3,41,0.864,119.565\n1,37,3,43,1.125,110.383\n1,37,3,45,1.120,110.268\n1,37,3,54,1.033,117.645\n1,37,3,62,1.085,114.132\n2,37,3,63,0.934,116.163\n2,37,3,64,0.955,114.701\n1,37,3,67,1.084,114.460\n2,39,3,39,1.231,112.582\n0,40,3,40,1.146,117.002\n1,40,3,63,0.888,126.089\n1,40,3,64,1.145,110.889\n0,40,3,75,0.790,122.163\n0,45,3,53,1.382,105.849\n1,55,3,64,1.267,104.747\n2,64,3,64,0.989,113.280\n0,0,4,0,0.000,180.000\n1,0,4,0,0.000,180.000\n0,1,4,4,0.423,180.000\n0,1,4,42,0.463,180.000\n0,2,4,2,0.442,180.000\n1,2,4,4,0.432,180.000\n0,2,4,30,0.444,180.000\n1,2,4,42,0.474,180.000\n1,3,4,4,0.427,180.000\n1,3,4,42,0.469,180.000\n0,4,4,5,0.281,180.000\n0,4,4,6,0.551,180.000\n0,4,4,10,0.486,180.000\n1,4,4,37,0.430,180.000\n0,7,4,9,0.648,180.000\n1,9,4,42,0.537,180.000\n0,15,4,42,0.487,180.000\n0,20,4,42,0.469,180.000\n0,22,4,42,0.472,180.000\n1,37,4,42,0.472,180.000\n0,42,4,43,0.541,180.000\n1,42,4,63,0.474,180.000\n1,42,4,64,0.473,180.000\n0,0,6,0,0.000,110.400\n3,0,6,0,0.000,57.900\n4,0,6,0,0.000,90.200\n0,1,6,1,1.197,106.926\n0,1,6,2,0.967,103.614\n0,1,6,3,0.923,108.055\n0,1,6,6,1.884,103.905\n0,1,6,8,1.629,105.422\n0,1,6,9,1.628,106.496\n0,1,6,10,1.656,105.317\n0,1,6,15,1.480,111.230\n0,1,6,17,1.493,111.951\n0,1,6,18,1.370,116.346\n0,1,6,19,1.093,114.943\n0,1,6,20,1.316,112.833\n0,1,6,21,0.793,106.503\n0,1,6,22,1.391,109.759\n0,1,6,25,1.095,115.581\n0,1,6,26,1.170,112.081\n0,1,6,37,1.075,102.846\n0,1,6,40,1.719,103.733\n0,1,6,41,1.454,109.046\n0,1,6,43,1.642,105.462\n0,1,6,45,1.642,105.875\n0,1,6,63,1.449,109.545\n0,1,6,64,1.512,106.848\n0,2,6,2,1.354,113.339\n0,2,6,3,0.671,98.438\n0,2,6,18,1.365,117.169\n0,2,6,25,1.025,120.078\n0,2,6,29,0.816,105.727\n0,2,6,37,1.418,110.694\n0,2,6,57,1.341,114.785\n0,3,6,3,1.455,110.067\n0,3,6,4,1.409,112.404\n0,3,6,8,1.648,105.872\n0,3,6,10,1.596,108.437\n0,3,6,18,1.274,121.468\n0,3,6,19,1.019,119.840\n0,3,6,20,1.379,111.381\n4,3,6,20,1.748,91.216\n0,3,6,22,1.328,113.491\n0,3,6,24,0.583,111.948\n0,3,6,25,1.006,121.410\n0,3,6,29,0.876,111.417\n0,3,6,37,0.614,95.300\n0,3,6,64,1.424,111.483\n0,4,6,18,1.423,115.233\n0,6,6,21,1.362,95.697\n0,8,6,21,0.832,99.409\n0,9,6,21,1.115,101.592\n0,10,6,21,0.923,99.688\n0,18,6,18,1.334,125.242\n0,18,6,33,0.812,115.364\n0,18,6,37,1.429,114.473\n0,18,6,39,1.558,114.152\n0,18,6,43,1.710,108.479\n0,19,6,19,0.642,141.096\n0,19,6,21,0.597,118.204\n0,19,6,37,0.941,124.421\n4,20,6,20,1.339,89.100\n0,20,6,21,0.944,104.587\n0,20,6,37,1.394,110.394\n0,21,6,40,1.124,101.417\n0,21,6,43,1.058,103.253\n0,21,6,54,1.175,100.000\n0,21,6,55,1.139,101.000\n3,22,6,22,0.242,58.680\n3,22,6,43,0.279,57.087\n0,24,6,25,0.607,118.533\n0,25,6,25,0.777,129.375\n0,25,6,37,1.099,115.923\n0,26,6,37,1.090,116.692\n0,29,6,30,0.986,108.000\n0,29,6,37,0.726,105.409\n0,29,6,64,0.923,108.922\n0,37,6,37,1.462,108.967\n0,37,6,58,1.607,108.274\n0,0,8,0,0.000,110.400\n3,0,8,0,0.000,58.500\n4,0,8,0,0.000,95.000\n0,1,8,1,1.090,107.018\n0,1,8,6,1.297,102.829\n0,1,8,8,1.347,105.708\n0,1,8,9,1.182,114.240\n0,1,8,10,1.307,108.079\n0,1,8,15,1.085,118.283\n0,1,8,17,1.096,117.478\n0,1,8,19,0.779,122.759\n0,1,8,20,1.221,105.873\n0,1,8,22,1.147,109.200\n0,1,8,23,0.763,109.062\n0,1,8,25,0.865,117.482\n0,1,8,26,0.926,112.630\n0,1,8,40,1.363,105.609\n0,1,8,45,1.266,110.149\n0,1,8,46,1.265,111.092\n0,6,8,6,1.776,107.296\n0,6,8,17,1.664,105.334\n0,6,8,22,1.456,107.100\n0,6,8,23,0.861,100.510\n3,8,8,8,0.230,60.000\n0,8,8,23,0.792,108.917\n0,8,8,25,1.068,110.595\n0,8,8,26,1.047,110.816\n0,9,8,23,0.832,108.864\n4,10,8,20,1.805,84.690\n0,10,8,23,0.846,106.788\n0,12,8,22,1.227,107.439\n0,15,8,19,0.845,125.674\n4,17,8,17,1.198,110.056\n0,17,8,23,0.647,116.842\n0,19,8,23,0.542,112.000\n4,20,8,20,1.103,90.370\n0,20,8,23,0.684,113.359\n3,22,8,22,0.209,57.087\n0,22,8,23,0.697,110.033\n0,22,8,25,0.896,115.361\n0,23,8,23,0.595,105.998\n0,23,8,25,0.510,117.000\n0,23,8,26,0.553,110.959\n0,23,8,34,0.808,109.000\n0,23,8,39,0.757,111.820\n0,23,8,40,0.819,108.120\n0,23,8,43,0.857,106.222\n0,23,8,55,0.868,106.000\n0,23,8,56,0.876,105.092\n0,0,9,0,0.000,111.500\n1,0,9,0,0.000,109.100\n0,1,9,3,0.878,106.409\n0,1,9,9,1.306,110.005\n0,1,9,53,1.216,113.995\n0,1,9,67,1.391,106.413\n1,2,9,3,1.242,109.856\n1,2,9,9,1.306,112.528\n1,3,9,3,1.204,111.488\n1,3,9,4,1.194,113.272\n0,3,9,6,1.579,106.872\n0,3,9,8,1.386,108.822\n1,3,9,9,1.390,108.355\n0,3,9,10,1.365,109.548\n0,3,9,12,1.373,103.303\n0,3,9,15,1.265,110.780\n0,3,9,18,1.205,114.743\n0,3,9,20,1.198,109.751\n0,3,9,25,0.873,119.927\n0,3,9,27,0.818,108.779\n0,3,9,34,1.355,108.199\n0,3,9,35,1.511,109.907\n1,3,9,37,1.185,111.663\n1,3,9,39,1.396,108.538\n0,3,9,40,1.365,109.440\n0,3,9,41,1.169,112.551\n0,3,9,45,1.369,109.796\n1,3,9,53,1.351,110.578\n1,3,9,54,1.643,98.943\n0,3,9,55,1.431,106.195\n0,3,9,56,1.375,109.289\n1,3,9,57,1.125,115.780\n1,3,9,63,1.247,109.989\n1,3,9,64,1.302,106.461\n1,3,9,78,1.323,106.641\n1,3,9,81,1.567,101.581\n0,4,9,19,0.456,161.741\n1,4,9,67,1.402,108.868\n0,6,9,67,1.794,105.043\n0,9,9,10,1.518,109.154\n1,9,9,37,1.397,108.014\n0,9,9,40,1.594,106.413\n0,9,9,62,1.390,114.417\n1,9,9,63,1.320,112.325\n1,9,9,64,1.352,109.711\n1,37,9,53,1.343,110.162\n1,37,9,67,1.296,111.871\n0,40,9,67,1.538,108.056\n1,53,9,64,1.318,111.149\n0,0,10,0,0.000,117.500\n3,0,10,0,0.000,58.900\n4,0,10,0,0.000,92.900\n0,1,10,1,1.117,117.909\n0,1,10,2,1.004,118.916\n0,1,10,3,0.821,119.600\n0,1,10,6,1.179,108.865\n0,1,10,8,1.137,116.189\n0,1,10,9,1.132,117.005\n0,1,10,10,1.247,111.009\n0,1,10,17,1.014,122.388\n0,1,10,20,0.960,119.679\n0,1,10,25,0.745,125.390\n0,1,10,28,0.552,120.066\n0,1,10,37,1.038,116.332\n0,1,10,39,1.060,120.838\n0,1,10,40,1.194,113.314\n0,1,10,41,1.031,118.033\n0,1,10,45,1.268,109.599\n0,1,10,63,0.949,122.185\n0,1,10,64,0.960,121.315\n0,2,10,2,1.146,112.878\n0,2,10,3,1.000,120.703\n0,2,10,6,1.405,111.609\n0,2,10,20,1.132,111.544\n0,2,10,28,0.638,118.553\n0,2,10,37,0.977,121.506\n0,3,10,3,0.709,120.274\n0,3,10,4,0.864,130.236\n0,3,10,6,0.960,110.133\n0,3,10,8,1.168,116.075\n4,3,10,8,1.527,93.608\n0,3,10,9,1.174,116.443\n0,3,10,10,1.184,115.377\n0,3,10,13,0.998,118.867\n0,3,10,14,0.871,124.162\n0,3,10,15,1.076,118.969\n0,3,10,17,1.132,116.612\n0,3,10,20,0.936,122.540\n4,3,10,20,1.371,93.349\n0,3,10,22,0.975,120.929\n0,3,10,25,0.794,122.157\n0,3,10,26,0.848,117.912\n0,3,10,28,0.575,120.277\n0,3,10,34,1.251,112.201\n0,3,10,35,1.395,112.633\n0,3,10,37,1.023,118.596\n0,3,10,40,1.216,113.680\n0,3,10,41,1.098,115.913\n0,3,10,45,1.212,113.447\n0,3,10,63,1.091,115.381\n0,3,10,64,1.048,117.574\n0,4,10,20,0.816,131.702\n0,6,10,28,0.829,113.214\n0,6,10,37,1.393,111.476\n0,8,10,28,0.703,117.160\n0,8,10,37,1.167,115.599\n0,9,10,26,0.847,123.206\n0,9,10,28,0.751,114.501\n0,9,10,37,1.222,113.553\n0,9,10,39,1.310,115.309\n0,10,10,28,0.735,114.715\n0,10,10,41,1.237,113.743\n0,15,10,28,0.614,119.033\n4,20,10,20,1.381,91.694\n0,20,10,28,0.555,123.394\n0,20,10,37,1.006,117.703\n3,22,10,22,0.202,58.894\n0,22,10,28,0.605,119.583\n0,25,10,28,0.447,122.785\n0,28,10,28,0.435,115.630\n0,28,10,34,0.757,113.000\n0,28,10,35,0.836,114.000\n0,28,10,37,0.628,118.227\n0,28,10,40,0.754,113.000\n0,28,10,41,0.560,128.067\n0,28,10,63,0.640,118.099\n0,28,10,64,0.643,117.575\n0,37,10,40,1.232,112.412\n0,0,15,0,0.000,97.900\n4,0,15,0,0.000,80.200\n0,1,15,1,1.654,97.335\n0,1,15,2,1.321,97.853\n0,1,15,3,1.325,97.326\n0,1,15,4,1.344,97.370\n0,1,15,9,1.725,89.814\n0,1,15,15,1.377,100.316\n0,1,15,18,1.309,101.641\n0,1,15,19,1.007,102.069\n0,1,15,20,1.366,94.913\n0,1,15,22,1.268,99.768\n0,1,15,25,0.967,104.732\n0,1,15,30,1.379,95.613\n0,1,15,37,1.439,97.111\n0,1,15,40,1.555,94.643\n0,1,15,57,1.301,98.686\n0,1,15,63,1.304,98.330\n0,1,15,64,1.306,98.066\n0,1,15,71,0.931,96.494\n0,2,15,2,1.434,95.108\n0,2,15,3,1.318,98.813\n0,2,15,4,1.426,95.780\n0,2,15,15,1.457,97.789\n0,2,15,37,1.362,96.942\n0,2,15,43,1.709,90.872\n0,3,15,3,1.402,95.424\n0,3,15,6,1.804,94.075\n0,3,15,15,1.403,99.399\n4,3,15,20,1.666,79.842\n0,3,15,37,1.308,98.541\n0,3,15,63,1.390,96.051\n0,3,15,71,0.830,97.000\n0,6,15,37,1.679,97.231\n0,8,15,8,1.444,105.143\n0,8,15,37,1.446,98.976\n0,9,15,9,1.626,98.524\n0,9,15,64,1.504,97.105\n0,10,15,15,1.415,103.715\n0,12,15,37,1.428,97.534\n0,15,15,15,1.413,104.893\n0,15,15,18,1.563,99.173\n0,15,15,37,1.361,100.790\n0,15,15,64,1.332,102.040\n0,15,15,71,0.787,99.239\n4,20,15,30,1.978,73.428\n0,20,15,37,1.361,95.589\n0,25,15,25,0.947,99.505\n4,25,15,25,1.030,87.982\n0,25,15,26,1.002,96.851\n0,25,15,37,1.172,95.428\n0,26,15,37,1.144,96.710\n4,30,15,30,1.732,79.546\n0,37,15,37,1.295,98.802\n0,37,15,63,1.379,96.197\n0,37,15,64,1.286,99.423\n0,37,15,71,0.813,96.222\n0,71,15,71,0.734,93.377\n0,0,17,0,0.000,99.400\n4,0,17,0,0.000,78.400\n0,1,17,1,1.415,93.266\n0,1,17,2,1.387,94.732\n0,1,17,3,1.430,92.852\n0,1,17,6,1.863,92.132\n0,1,17,7,1.408,107.104\n0,1,17,8,1.661,91.498\n0,1,17,10,1.547,94.839\n0,1,17,20,1.453,91.368\n0,1,17,22,1.423,92.591\n0,1,17,37,1.376,94.911\n0,2,17,2,1.313,97.901\n0,2,17,7,1.478,105.412\n0,2,17,43,1.207,108.882\n0,3,17,7,1.513,103.431\n0,6,17,6,2.164,97.766\n0,6,17,7,1.850,107.431\n0,7,17,8,1.438,113.808\n0,7,17,10,1.525,110.549\n0,7,17,20,1.442,104.737\n0,7,17,22,1.449,104.928\n0,7,17,37,1.500,104.313\n4,8,17,20,1.891,78.354\n0,8,17,37,1.687,91.169\n0,37,17,37,1.487,91.633\n0,0,18,0,0.000,104.600\n4,0,18,0,0.000,80.300\n0,1,18,1,1.230,101.166\n0,1,18,2,1.264,100.420\n0,1,18,3,1.242,100.883\n0,1,18,6,1.744,95.671\n0,1,18,9,1.438,99.465\n0,1,18,20,1.224,101.315\n0,1,18,22,1.207,101.417\n0,1,18,32,1.446,107.066\n0,1,18,37,1.234,101.070\n0,1,18,43,1.449,98.014\n0,1,18,48,1.277,106.586\n0,1,18,62,1.374,102.402\n0,2,18,2,1.254,101.492\n0,2,18,6,1.664,98.668\n0,2,18,9,1.539,96.849\n0,2,18,32,1.422,108.979\n0,2,18,37,1.263,100.489\n0,2,18,48,1.083,116.668\n0,3,18,9,1.418,100.361\n0,3,18,32,1.557,103.453\n0,3,18,43,1.350,101.747\n0,6,18,6,1.922,103.052\n0,6,18,9,1.916,97.446\n0,6,18,32,1.837,108.063\n0,6,18,37,1.528,102.229\n0,6,18,43,1.644,103.815\n0,9,18,12,1.464,101.180\n0,9,18,32,1.583,109.945\n0,9,18,37,1.358,102.378\n0,9,18,43,1.323,109.227\n0,12,18,32,1.584,103.959\n0,12,18,37,1.376,98.976\n0,15,18,32,1.497,107.170\n0,15,18,37,1.324,101.399\n0,20,18,32,1.383,109.292\n0,20,18,37,1.108,106.508\n4,20,18,43,1.831,80.297\n0,22,18,32,1.465,105.247\n0,32,18,32,1.569,120.924\n0,32,18,37,1.497,105.280\n0,32,18,39,1.804,101.600\n0,32,18,43,1.569,108.548\n0,32,18,48,1.229,126.841\n0,32,18,55,1.509,112.548\n0,32,18,58,1.592,106.139\n0,32,18,62,1.326,121.426\n0,32,18,63,1.571,103.212\n0,32,18,64,1.634,101.771\n0,32,18,80,1.400,110.401\n0,37,18,37,1.157,104.380\n0,37,18,39,1.404,99.854\n0,37,18,43,1.416,99.200\n0,37,18,48,1.330,104.466\n0,37,18,55,1.397,100.926\n0,37,18,62,1.178,110.665\n0,37,18,63,1.202,102.735\n0,43,18,43,1.545,99.905\n0,43,18,64,1.285,104.868\n0,0,19,0,0.000,108.700\n4,0,19,0,0.000,89.900\n0,1,19,1,0.616,113.339\n0,1,19,5,0.390,110.795\n0,1,19,6,0.777,113.958\n0,1,19,8,0.716,111.521\n0,1,19,9,0.779,106.380\n0,1,19,12,0.729,108.947\n0,1,19,20,0.656,108.828\n0,1,19,40,0.754,108.858\n0,1,19,63,0.699,106.924\n0,1,19,75,0.530,111.633\n0,2,19,12,0.819,102.981\n0,5,19,5,0.258,108.699\n0,5,19,6,0.520,109.677\n0,5,19,8,0.461,109.070\n0,5,19,12,0.446,106.756\n0,6,19,6,1.051,111.280\n0,6,19,12,0.968,106.022\n0,6,19,37,0.870,108.096\n0,8,19,8,0.862,108.099\n0,8,19,12,0.786,110.683\n0,12,19,12,0.879,104.597\n0,15,19,15,0.816,108.681\n4,20,19,20,0.802,89.931\n0,37,19,37,0.726,105.045\n0,0,20,0,0.000,113.200\n4,0,20,0,0.000,88.800\n0,1,20,1,0.943,113.131\n0,1,20,3,0.906,114.940\n0,1,20,5,0.417,114.057\n0,1,20,6,1.231,110.677\n0,1,20,8,1.080,111.090\n0,1,20,10,1.100,110.057\n0,1,20,11,1.173,110.993\n0,1,20,12,0.976,114.773\n0,1,20,15,1.035,111.226\n0,1,20,18,0.978,115.383\n0,1,20,20,0.502,113.313\n0,1,20,22,0.915,115.201\n0,1,20,25,0.744,116.096\n0,1,20,26,0.721,117.611\n0,1,20,30,0.908,115.220\n0,1,20,34,1.090,110.505\n0,1,20,37,0.947,112.650\n0,1,20,41,0.973,111.787\n0,1,20,43,1.087,110.187\n0,1,20,45,1.132,108.074\n0,2,20,3,0.982,111.060\n0,2,20,5,0.596,113.035\n0,2,20,6,1.139,115.851\n0,2,20,12,0.951,116.750\n0,2,20,20,0.931,114.138\n0,3,20,3,0.982,109.919\n0,3,20,5,0.624,112.989\n0,3,20,6,1.157,113.611\n4,3,20,8,1.473,87.271\n0,3,20,10,1.016,113.988\n0,3,20,11,1.184,109.849\n0,3,20,12,0.969,114.891\n0,3,20,13,1.008,110.951\n0,3,20,20,0.849,118.273\n4,3,20,20,1.524,88.961\n0,3,20,34,1.137,107.667\n4,3,20,37,1.382,85.619\n0,3,20,43,0.960,116.707\n0,4,20,5,0.584,115.078\n0,4,20,20,0.920,115.312\n0,5,20,5,0.439,109.107\n0,5,20,6,0.818,111.352\n0,5,20,8,0.728,114.011\n0,5,20,9,0.657,112.826\n0,5,20,10,0.663,112.010\n0,5,20,12,0.339,114.117\n0,5,20,15,0.562,114.339\n0,5,20,17,0.561,113.000\n0,5,20,18,0.605,111.570\n0,5,20,20,0.564,113.940\n0,5,20,26,0.472,109.722\n0,5,20,30,0.688,116.038\n0,5,20,34,0.661,112.000\n0,5,20,37,0.552,115.670\n0,5,20,40,0.682,111.331\n0,5,20,43,0.655,111.686\n0,6,20,6,1.443,114.408\n0,6,20,10,1.225,116.666\n0,6,20,13,1.162,114.868\n0,6,20,20,1.109,116.117\n4,6,20,20,1.433,93.413\n0,6,20,22,1.106,117.205\n0,6,20,30,1.144,114.705\n4,6,20,30,1.658,87.873\n0,8,20,20,1.185,105.606\n4,8,20,20,1.486,91.244\n0,8,20,26,0.874,111.782\n0,9,20,20,1.103,109.640\n0,10,20,15,1.170,109.525\n0,10,20,17,1.127,110.564\n0,10,20,18,1.404,100.845\n0,10,20,20,1.032,113.170\n4,10,20,20,1.468,87.497\n4,10,20,30,1.507,86.657\n0,10,20,37,0.963,117.360\n0,11,20,11,1.504,108.020\n0,11,20,17,1.221,109.460\n0,11,20,20,1.051,116.673\n0,11,20,30,0.997,120.309\n0,12,20,12,1.020,117.603\n0,12,20,19,0.973,105.821\n0,12,20,20,0.866,118.108\n0,12,20,30,0.887,120.399\n0,13,20,13,1.077,113.361\n0,13,20,20,0.938,115.037\n0,14,20,20,0.837,112.888\n0,15,20,15,1.094,114.048\n0,15,20,20,1.058,109.793\n4,15,20,20,1.324,90.483\n0,15,20,30,0.960,115.468\n4,15,20,30,1.447,86.726\n4,17,20,17,1.309,94.977\n0,17,20,20,0.930,116.108\n0,18,20,20,1.007,113.480\n4,18,20,20,1.355,90.185\n0,18,20,41,1.241,102.656\n0,19,20,19,0.567,122.298\n4,19,20,19,0.921,88.477\n0,20,20,20,1.008,108.644\n4,20,20,20,1.149,90.294\n0,20,20,22,0.840,119.817\n4,20,20,22,1.364,86.669\n4,20,20,25,1.181,84.818\n0,20,20,30,0.994,109.745\n4,20,20,30,1.399,85.303\n0,20,20,34,1.069,111.143\n4,20,20,34,1.382,90.128\n0,20,20,37,0.833,119.709\n4,20,20,37,1.346,86.810\n0,20,20,40,1.097,110.254\n0,20,20,41,0.922,114.408\n0,20,20,43,0.964,116.540\n4,20,20,43,1.290,92.879\n0,20,20,45,1.083,110.090\n0,22,20,22,0.866,118.829\n4,22,20,22,1.649,79.399\n4,26,20,26,0.789,96.811\n0,26,20,34,0.843,113.805\n0,34,20,41,1.070,111.943\n0,37,20,43,0.954,117.365\n0,0,22,0,0.000,116.100\n3,0,22,0,0.000,59.400\n4,0,22,0,0.000,91.600\n0,1,22,1,0.903,116.483\n0,1,22,2,0.884,118.360\n0,1,22,3,0.836,121.424\n0,1,22,4,0.900,117.720\n0,1,22,5,0.604,111.788\n0,1,22,6,1.179,113.545\n0,1,22,8,0.973,117.469\n0,1,22,17,1.070,109.087\n0,1,22,18,1.097,108.265\n0,1,22,22,0.871,118.246\n0,1,22,37,0.882,118.041\n0,1,22,43,1.014,114.899\n3,2,22,2,0.263,48.820\n0,2,22,3,0.956,114.147\n0,2,22,4,0.784,126.957\n0,2,22,5,0.573,115.869\n0,2,22,6,1.012,123.319\n0,2,22,22,0.880,118.260\n3,2,22,22,0.166,60.845\n0,2,22,45,1.009,116.146\n0,3,22,3,0.819,122.977\n0,3,22,4,0.876,119.718\n0,3,22,5,0.559,116.738\n0,3,22,6,1.184,113.646\n0,3,22,8,1.072,112.261\n0,3,22,10,0.987,117.750\n0,3,22,12,0.930,118.047\n4,3,22,20,1.267,90.869\n0,3,22,22,0.861,119.252\n4,3,22,22,1.196,93.287\n4,3,22,30,1.301,89.217\n0,3,22,37,0.852,120.464\n0,3,22,40,1.033,114.288\n0,3,22,43,1.124,109.441\n0,3,22,45,1.117,110.033\n0,4,22,5,0.560,118.000\n0,4,22,6,1.200,113.650\n0,4,22,8,0.966,119.034\n0,4,22,15,0.931,120.455\n0,4,22,22,0.877,118.890\n0,4,22,45,1.089,112.227\n0,5,22,5,0.242,114.938\n0,5,22,6,0.683,117.836\n0,5,22,8,0.621,115.758\n0,5,22,10,0.658,113.806\n0,5,22,11,0.776,108.296\n0,5,22,12,0.620,109.865\n0,5,22,20,0.623,110.000\n0,5,22,22,0.583,117.875\n0,5,22,37,0.532,119.438\n0,5,22,40,0.653,112.855\n0,5,22,41,0.519,122.000\n0,5,22,43,0.658,112.128\n0,5,22,45,0.665,112.000\n0,6,22,12,1.136,118.409\n0,6,22,17,1.328,108.583\n0,6,22,18,1.381,107.009\n0,6,22,22,1.124,115.942\n3,6,22,22,0.205,60.711\n0,6,22,37,1.093,118.170\n3,6,22,43,0.179,68.138\n0,6,22,45,1.422,108.368\n0,8,22,22,0.925,120.144\n3,8,22,22,0.176,61.507\n0,10,22,22,0.916,121.411\n3,10,22,22,0.184,60.603\n0,11,22,11,1.610,102.859\n0,11,22,22,1.062,116.086\n0,12,22,12,1.067,114.988\n0,12,22,22,0.925,117.971\n0,13,22,13,1.085,113.473\n0,13,22,22,0.908,117.606\n0,15,22,22,0.918,120.404\n0,17,22,22,1.029,111.106\n0,18,22,22,1.078,109.054\n0,20,22,22,0.812,122.430\n4,20,22,22,1.198,92.930\n0,22,22,22,0.787,124.070\n3,22,22,22,0.171,60.000\n4,22,22,22,1.225,91.653\n0,22,22,30,0.777,124.514\n0,22,22,34,0.983,116.415\n0,22,22,37,0.847,120.135\n3,22,22,40,0.178,61.163\n0,22,22,41,0.886,118.045\n3,22,22,43,0.176,61.536\n0,22,22,45,1.022,114.380\n0,34,22,41,1.008,116.095\n0,37,22,37,0.846,120.774\n3,37,22,37,0.237,51.029\n0,37,22,43,0.936,119.789\n0,0,25,0,0.000,106.500\n4,0,25,0,0.000,89.100\n0,1,25,1,1.072,99.158\n0,1,25,3,1.268,91.423\n0,1,25,6,1.394,98.288\n0,1,25,8,1.150,101.775\n0,1,25,12,1.180,98.890\n0,1,25,15,1.074,103.431\n0,1,25,25,0.852,100.707\n0,1,25,32,1.186,107.891\n0,1,25,37,0.972,104.924\n0,1,25,40,1.358,93.644\n0,1,25,43,1.190,98.760\n0,1,25,71,0.537,109.363\n0,1,25,72,0.976,111.306\n0,2,25,6,1.302,102.892\n0,2,25,8,1.022,109.148\n0,2,25,10,1.629,85.839\n0,2,25,32,0.983,120.127\n0,2,25,72,0.863,119.249\n0,3,25,6,1.277,103.026\n0,3,25,32,1.164,109.307\n0,6,25,6,1.769,99.311\n0,6,25,8,1.419,104.161\n0,6,25,9,1.403,105.407\n0,6,25,10,1.448,102.194\n0,6,25,11,1.680,99.260\n0,6,25,12,1.489,98.818\n0,6,25,32,1.501,109.688\n0,6,25,37,1.312,102.280\n0,6,25,39,1.617,97.314\n0,6,25,40,1.380,105.601\n0,6,25,71,0.844,100.242\n0,6,25,72,1.219,112.058\n0,8,25,8,1.224,105.341\n0,8,25,10,1.214,104.893\n0,8,25,11,1.411,101.655\n0,8,25,20,1.010,108.094\n0,8,25,32,1.217,114.325\n0,8,25,37,1.106,104.742\n0,8,25,40,1.265,103.617\n0,8,25,72,0.977,117.767\n0,9,25,32,1.232,114.493\n0,10,25,10,1.346,98.856\n0,10,25,32,1.273,110.640\n0,10,25,72,1.021,114.624\n0,11,25,32,1.528,106.045\n0,12,25,12,1.303,99.224\n0,12,25,32,1.305,106.320\n0,15,25,15,1.113,107.673\n4,15,25,15,1.264,93.138\n0,15,25,32,1.248,107.964\n0,15,25,72,0.933,119.729\n4,20,25,20,1.220,85.039\n0,20,25,72,0.965,111.595\n0,25,25,72,0.890,106.612\n0,32,25,32,1.248,122.857\n0,32,25,37,1.097,113.430\n0,32,25,39,1.605,99.255\n0,32,25,40,1.122,119.057\n0,32,25,43,1.257,110.308\n0,32,25,57,1.219,108.740\n0,32,25,63,1.211,108.168\n0,32,25,71,0.642,117.733\n0,32,25,72,1.050,121.823\n0,37,25,37,0.947,107.124\n0,37,25,40,0.965,112.107\n0,37,25,72,0.868,118.776\n0,40,25,40,1.496,95.270\n0,40,25,72,1.035,114.441\n0,57,25,57,1.059,102.995\n0,63,25,63,1.032,102.950\n0,71,25,71,0.419,100.483\n0,0,26,0,0.000,98.100\n4,0,26,0,0.000,83.600\n0,1,26,1,1.085,98.054\n0,1,26,8,1.263,96.331\n0,1,26,10,1.115,102.175\n0,1,26,12,1.147,98.926\n0,1,26,15,1.141,100.260\n0,1,26,20,1.075,98.171\n0,1,26,26,0.997,92.571\n0,1,26,37,1.081,98.754\n0,1,26,71,0.672,97.353\n0,6,26,6,1.833,97.935\n0,6,26,11,1.663,100.061\n0,6,26,12,1.442,99.021\n0,8,26,8,1.189,105.662\n0,8,26,12,1.028,110.069\n0,8,26,34,1.509,93.096\n0,11,26,11,1.757,94.795\n0,12,26,15,1.271,99.730\n0,12,26,34,1.508,90.565\n0,12,26,40,1.165,103.783\n0,12,26,71,0.704,96.577\n0,15,26,26,1.047,96.592\n0,15,26,40,1.543,91.164\n4,20,26,20,1.252,83.624\n0,71,26,71,0.473,94.470\n0,0,30,0,0.000,134.200\n1,0,30,0,0.000,131.800\n4,0,30,0,0.000,97.700\n7,0,30,0,0.000,92.300\n1,2,30,3,0.778,128.756\n0,2,30,15,0.805,130.439\n0,2,30,20,0.727,132.187\n0,2,30,22,0.737,131.100\n1,2,30,30,0.751,132.225\n1,3,30,4,0.721,134.566\n1,3,30,5,0.410,135.975\n1,3,30,6,0.845,137.596\n1,3,30,20,0.714,130.677\n7,3,30,20,1.280,89.957\n1,3,30,30,0.857,122.418\n7,3,30,30,1.260,93.102\n0,4,30,20,0.690,136.444\n0,5,30,20,0.390,131.835\n0,5,30,30,0.364,132.652\n0,6,30,30,0.876,139.045\n0,15,30,15,0.876,130.718\n4,15,30,15,1.239,101.359\n0,15,30,30,0.782,132.228\n4,15,30,30,1.141,100.902\n4,20,30,30,1.117,95.513\n7,20,30,30,1.191,93.909\n0,20,30,40,0.769,134.526\n1,20,30,67,0.704,138.631\n4,22,30,22,1.179,93.007\n8,30,30,30,1.230,93.732\n0,30,30,40,0.706,145.470\n1,30,30,67,0.907,125.792\n0,0,34,0,0.000,109.400\n4,0,34,0,0.000,89.400\n0,1,34,1,0.862,112.251\n0,1,34,2,1.154,109.212\n0,1,34,8,1.330,106.399\n0,1,34,9,1.166,112.989\n0,1,34,10,1.388,104.291\n0,1,34,20,1.201,106.135\n0,1,34,26,0.913,112.004\n0,1,34,36,0.576,111.206\n0,1,34,37,1.141,109.045\n0,2,34,36,0.694,112.000\n0,8,34,36,0.796,109.753\n0,9,34,36,0.793,108.649\n0,10,34,36,0.828,108.000\n4,20,34,20,1.448,89.411\n0,20,34,36,0.665,112.526\n0,22,34,36,0.694,110.000\n0,36,34,36,0.578,107.787\n0,36,34,37,0.717,108.668\n0,36,34,43,0.840,108.000\n0,0,37,0,0.000,118.800\n1,0,37,0,0.000,115.900\n3,0,37,0,0.000,64.700\n4,0,37,0,0.000,91.800\n0,1,37,37,0.803,120.419\n0,1,37,38,0.992,118.432\n0,1,37,58,1.027,116.528\n0,1,37,63,0.837,123.024\n0,1,37,64,0.821,124.073\n0,1,37,69,1.038,115.506\n1,2,37,37,0.712,119.695\n1,2,37,38,1.029,117.220\n1,3,37,37,0.798,114.475\n7,3,37,37,1.320,90.784\n1,3,37,38,1.109,112.724\n1,3,37,58,1.134,111.566\n1,3,37,69,1.119,111.916\n1,4,37,37,0.906,119.614\n1,4,37,38,1.087,114.623\n0,5,37,37,0.563,120.571\n0,5,37,38,0.693,115.588\n0,5,37,58,0.699,113.316\n0,5,37,63,0.702,121.238\n0,5,37,64,0.523,121.446\n0,5,37,69,0.794,111.638\n0,5,37,78,0.563,119.432\n0,6,37,37,0.968,116.495\n0,6,37,38,1.324,115.886\n0,6,37,64,1.139,118.868\n1,9,37,37,0.974,121.003\n1,9,37,38,1.137,117.591\n0,10,37,37,1.025,117.918\n0,10,37,38,1.088,120.135\n0,10,37,58,1.077,120.925\n0,11,37,37,1.094,118.065\n0,11,37,38,1.223,117.328\n0,12,37,37,0.950,118.495\n0,12,37,38,1.126,113.859\n0,12,37,64,1.076,111.320\n0,13,37,37,0.917,118.117\n0,14,37,37,0.861,118.045\n0,15,37,37,0.755,121.037\n0,15,37,38,1.027,119.421\n0,15,37,64,0.976,117.125\n0,17,37,37,0.930,119.408\n0,17,37,38,1.179,110.828\n0,17,37,64,0.946,118.357\n0,18,37,37,1.029,113.991\n0,18,37,38,1.278,106.908\n0,18,37,64,0.975,117.029\n0,19,37,37,0.660,125.278\n0,20,37,37,0.744,129.614\n4,20,37,37,1.217,93.425\n0,22,37,37,0.805,125.777\n3,22,37,37,0.152,64.704\n0,22,37,38,0.904,124.494\n0,25,37,37,0.718,121.600\n0,26,37,37,0.691,122.967\n0,34,37,37,1.030,116.423\n0,34,37,64,1.074,113.905\n0,35,37,37,0.964,131.858\n0,35,37,38,1.187,124.980\n0,37,37,37,0.669,119.977\n1,37,37,37,0.864,122.227\n4,37,37,37,1.380,90.193\n0,37,37,38,0.596,126.139\n1,37,37,38,1.033,117.271\n0,37,37,39,1.038,117.619\n1,37,37,39,1.078,114.622\n0,37,37,40,1.045,121.633\n0,37,37,41,0.892,119.572\n0,37,37,43,1.013,117.860\n0,37,37,45,1.114,112.337\n0,37,37,46,0.999,120.038\n0,37,37,55,1.002,120.163\n0,37,37,56,1.020,117.801\n1,37,37,57,0.881,120.932\n0,37,37,58,1.014,120.052\n1,37,37,58,1.127,112.251\n0,37,37,61,1.072,115.515\n0,37,37,62,0.941,124.384\n0,37,37,63,0.478,111.243\n1,37,37,63,0.894,120.190\n0,37,37,64,0.423,112.567\n1,37,37,64,0.912,118.973\n1,37,37,67,1.064,114.980\n0,37,37,69,0.872,116.778\n1,37,37,69,1.042,116.438\n0,37,37,78,0.974,116.439\n0,37,37,81,1.034,115.664\n1,37,37,81,1.104,111.759\n0,38,37,38,0.725,128.938\n0,38,37,40,1.024,123.755\n0,38,37,43,1.165,115.355\n0,38,37,58,0.979,128.362\n1,38,37,58,1.257,111.356\n0,38,37,62,1.148,118.349\n0,38,37,63,1.095,115.386\n1,38,37,63,1.076,114.910\n0,38,37,64,1.070,116.605\n1,38,37,67,1.289,109.610\n0,40,37,58,1.103,119.417\n0,40,37,63,0.943,122.904\n0,40,37,64,0.931,123.541\n0,40,37,78,0.931,123.604\n0,41,37,58,0.967,120.535\n0,45,37,63,1.031,116.781\n0,45,37,64,1.156,110.199\n0,45,37,69,1.248,111.041\n0,58,37,62,1.016,125.987\n0,58,37,63,1.152,112.628\n0,58,37,64,1.291,106.250\n1,58,37,64,1.108,113.166\n0,58,37,78,1.188,110.842\n0,0,38,0,0.000,113.800\n0,37,38,37,1.085,115.406\n0,37,38,38,1.289,112.016\n0,37,38,63,1.230,110.181\n0,37,38,64,1.207,111.032\n0,37,38,69,1.238,114.692\n0,37,38,78,1.118,114.813\n0,38,38,38,1.343,118.516\n0,0,39,0,0.000,120.700\n1,0,39,0,0.000,125.400\n0,1,39,63,0.854,123.380\n0,1,39,65,1.111,118.049\n1,2,39,63,0.858,130.275\n1,2,39,65,0.900,133.220\n1,3,39,63,0.900,127.045\n1,3,39,65,1.126,118.909\n0,6,39,63,1.166,122.985\n0,6,39,65,1.396,117.707\n0,8,39,63,1.000,124.868\n0,8,39,65,1.057,127.145\n1,9,39,63,0.981,127.725\n1,9,39,65,1.170,122.487\n0,10,39,63,1.109,119.788\n0,10,39,65,1.118,124.961\n0,18,39,63,1.108,117.061\n0,23,39,63,0.551,127.770\n0,23,39,65,0.752,118.352\n0,23,39,78,0.581,124.000\n0,25,39,63,0.667,134.561\n0,25,39,65,0.944,118.135\n0,37,39,63,0.900,127.009\n1,37,39,63,0.922,125.312\n1,37,39,65,1.080,121.090\n0,40,39,63,0.984,126.832\n0,45,39,63,1.056,121.641\n0,45,39,65,1.354,112.464\n0,63,39,63,1.152,109.599\n1,63,39,63,0.887,128.078\n0,63,39,64,1.004,120.577\n1,63,39,64,0.899,126.936\n0,63,39,65,1.284,112.087\n1,63,39,65,1.146,117.990\n0,63,39,78,1.300,105.800\n0,64,39,65,1.007,126.117\n0,65,39,65,1.462,116.898\n0,0,40,0,0.000,115.000\n3,0,40,0,0.000,57.800\n0,1,40,1,1.064,113.703\n0,1,40,2,0.998,118.873\n0,1,40,3,1.007,118.319\n0,1,40,6,1.421,109.742\n0,1,40,9,1.203,113.198\n0,1,40,10,1.232,111.320\n0,1,40,11,1.436,104.665\n0,1,40,12,1.202,109.320\n0,1,40,20,1.047,114.970\n0,1,40,25,0.912,114.483\n0,1,40,28,0.689,112.374\n0,1,40,30,1.024,118.604\n0,1,40,37,0.835,107.349\n0,1,40,39,1.254,110.622\n0,1,40,40,1.183,114.011\n0,1,40,45,1.223,112.226\n0,1,40,46,1.025,122.982\n0,1,40,63,1.084,114.473\n0,1,40,64,1.064,115.483\n0,2,40,2,0.997,120.651\n0,2,40,3,0.981,121.660\n0,2,40,6,1.316,115.626\n0,2,40,9,1.118,119.196\n0,2,40,10,1.142,117.260\n0,2,40,19,0.732,128.087\n0,2,40,28,0.767,111.053\n0,2,40,37,1.049,117.022\n0,2,40,39,1.192,115.106\n0,2,40,40,1.060,122.253\n0,2,40,63,1.008,120.447\n0,3,40,3,0.883,128.240\n0,3,40,8,1.259,111.557\n0,3,40,9,1.106,119.822\n0,3,40,10,1.269,111.261\n0,3,40,12,1.146,112.718\n0,3,40,15,1.105,117.871\n0,3,40,20,1.130,112.139\n0,3,40,22,1.072,114.420\n0,3,40,25,0.820,121.724\n0,3,40,28,0.700,114.808\n0,3,40,37,1.056,116.655\n0,3,40,40,1.147,117.511\n0,3,40,64,1.132,113.602\n0,6,40,28,0.889,110.000\n0,8,40,28,0.764,111.915\n0,8,40,37,1.216,112.920\n0,8,40,63,1.351,108.085\n0,9,40,28,0.774,112.549\n0,9,40,37,1.236,112.751\n0,10,40,28,0.799,109.725\n0,10,40,37,1.316,108.686\n0,11,40,37,1.546,101.687\n0,15,40,15,1.154,121.497\n3,22,40,22,0.204,57.777\n0,22,40,37,1.066,114.220\n0,22,40,63,1.126,112.006\n0,25,40,28,0.485,120.000\n0,25,40,37,0.868,117.977\n0,26,40,28,0.506,118.000\n0,26,40,37,0.812,122.336\n0,28,40,28,0.560,109.160\n0,28,40,30,0.656,119.230\n0,28,40,37,0.662,110.288\n0,28,40,39,0.789,110.951\n0,28,40,40,0.782,111.731\n0,28,40,45,0.674,120.000\n0,28,40,54,0.738,118.714\n0,28,40,63,0.670,116.188\n0,28,40,64,0.659,117.057\n0,28,40,78,0.618,119.829\n0,37,40,37,1.004,119.018\n0,37,40,45,1.376,106.579\n0,37,40,54,1.394,107.777\n0,37,40,63,1.060,116.867\n0,45,40,64,1.283,111.332\n0,45,40,78,1.410,105.678\n0,46,40,64,1.189,116.345\n0,0,41,0,0.000,118.300\n0,1,41,32,1.209,114.689\n0,1,41,72,1.024,114.936\n0,2,41,32,1.309,115.461\n0,3,41,32,1.210,114.810\n0,5,41,32,0.912,113.960\n0,6,41,72,1.319,113.899\n0,9,41,72,1.089,117.795\n0,10,41,72,1.039,121.240\n0,20,41,32,1.090,120.965\n0,22,41,32,1.079,122.748\n0,32,41,32,1.181,130.600\n0,32,41,37,1.136,118.871\n0,32,41,41,1.401,107.694\n0,37,41,72,1.035,114.919\n0,55,41,72,0.982,123.972\n0,62,41,72,1.052,120.425\n0,72,41,72,0.912,130.128\n0,72,41,80,1.094,112.175\n0,0,43,0,0.000,113.300\n0,1,43,1,1.109,110.353\n0,1,43,2,1.052,114.321\n0,1,43,3,0.938,121.050\n0,1,43,4,0.927,123.204\n0,1,43,18,1.116,115.011\n0,1,43,25,0.853,115.637\n0,1,43,28,0.646,113.739\n0,1,43,37,1.083,112.511\n0,1,43,45,1.140,115.034\n0,1,43,64,1.025,116.188\n0,2,43,18,1.227,110.268\n0,3,43,18,1.011,121.488\n0,3,43,20,1.053,113.913\n4,3,43,20,1.327,93.575\n0,3,43,28,0.626,117.464\n0,4,43,28,0.616,122.000\n0,4,43,45,1.253,112.373\n0,6,43,18,1.673,104.311\n3,6,43,22,0.279,54.827\n0,6,43,28,0.868,110.000\n0,6,43,37,1.519,105.833\n0,6,43,43,1.603,108.652\n0,8,43,18,1.511,104.036\n0,8,43,28,0.794,110.320\n0,15,43,15,1.558,103.008\n0,15,43,18,1.409,108.458\n0,17,43,18,1.367,111.904\n0,18,43,18,1.144,120.463\n0,18,43,20,0.961,123.768\n4,18,43,20,1.451,92.867\n0,18,43,22,1.171,112.379\n0,18,43,28,0.628,116.881\n0,18,43,34,1.324,111.347\n0,18,43,37,1.185,112.132\n0,18,43,43,1.379,109.036\n0,18,43,64,1.108,116.279\n0,20,43,28,0.626,115.000\n3,22,43,22,0.209,57.032\n0,25,43,28,0.468,118.274\n0,28,43,28,0.477,112.596\n0,28,43,34,0.810,110.000\n0,28,43,37,0.669,113.350\n0,28,43,64,0.658,115.293\n0,0,44,0,0.000,91.600\n0,63,44,63,1.962,88.495\n0,63,44,65,2.261,94.137\n0,63,44,78,1.738,86.270\n0,63,44,80,1.748,86.194\n0,65,44,65,1.530,101.147\n0,65,44,80,1.629,93.534\n0,78,44,78,0.903,119.401\n0,0,45,0,0.000,116.700\n0,1,45,32,1.260,118.182\n0,2,45,32,1.294,118.082\n0,3,45,32,1.343,115.589\n0,6,45,32,1.787,111.682\n0,8,45,32,1.515,115.695\n0,9,45,32,1.339,123.850\n0,10,45,32,1.578,112.194\n0,20,45,32,1.245,118.893\n0,22,45,32,1.293,117.503\n0,32,45,32,1.467,128.036\n0,32,45,37,1.298,117.857\n0,32,45,39,1.715,107.633\n0,32,45,40,1.497,116.432\n0,32,45,43,1.545,113.711\n0,32,45,63,1.335,116.765\n0,32,45,64,1.330,116.908\n0,32,45,78,1.394,114.962\n0,0,46,0,0.000,111.000\n0,1,46,7,1.440,110.492\n0,2,46,7,1.489,112.709\n0,7,46,8,1.724,109.817\n0,7,46,37,1.519,110.569\n0,7,46,40,1.650,111.405\n0,0,48,0,0.000,118.400\n0,3,48,18,1.065,122.928\n0,18,48,28,0.736,113.969\n0,0,49,0,0.000,111.400\n0,50,49,50,0.522,111.433\n0,0,51,0,0.000,111.400\n0,3,51,52,0.913,111.360\n0,0,53,0,0.000,180.000\n0,3,53,47,0.574,180.000\n0,9,53,47,0.649,180.000\n0,0,54,0,0.000,119.500\n1,0,54,0,0.000,115.700\n0,1,54,1,0.923,121.439\n0,1,54,3,0.707,124.083\n0,1,54,36,0.294,122.881\n0,3,54,6,1.376,115.398\n1,3,54,9,1.128,114.457\n0,3,54,36,0.685,119.698\n1,3,54,40,1.105,116.439\n0,6,54,36,0.826,115.000\n0,9,54,40,1.195,123.403\n0,36,54,36,0.300,113.943\n0,0,55,0,0.000,120.800\n0,1,55,1,0.951,119.946\n0,1,55,36,0.307,126.448\n0,1,55,37,1.032,117.035\n0,1,55,57,0.751,120.606\n0,1,55,80,0.972,121.082\n0,2,55,3,1.041,116.994\n0,2,55,36,0.621,120.000\n0,2,55,57,1.047,118.847\n0,3,55,9,1.053,121.298\n0,3,55,36,0.567,124.000\n0,3,55,57,0.953,123.573\n0,3,55,62,1.041,122.163\n0,6,55,36,0.833,114.000\n0,6,55,57,1.408,112.958\n0,8,55,36,0.656,122.000\n0,8,55,57,1.259,113.209\n0,9,55,57,1.001,126.373\n0,18,55,36,0.578,125.000\n0,18,55,57,1.054,122.320\n0,36,55,36,0.355,117.729\n0,36,55,37,0.623,120.405\n0,36,55,41,0.485,134.689\n0,36,55,57,0.663,119.499\n0,36,55,64,0.632,118.000\n0,36,55,80,0.684,115.880\n0,37,55,57,1.110,115.816\n0,41,55,57,0.911,126.801\n0,57,55,62,1.054,123.366\n0,57,55,64,1.026,119.465\n0,0,56,0,0.000,119.100\n0,1,56,36,0.472,123.585\n0,1,56,57,0.774,119.267\n0,2,56,9,1.181,116.311\n0,2,56,36,0.582,124.037\n0,2,56,57,1.029,118.607\n0,3,56,36,0.585,121.521\n0,3,56,57,0.885,126.567\n0,8,56,36,0.785,111.009\n0,8,56,57,1.288,110.357\n0,9,56,36,0.683,120.258\n0,9,56,57,1.186,115.661\n0,36,56,36,0.450,117.534\n0,36,56,37,0.602,120.000\n0,36,56,57,0.646,120.649\n0,36,56,63,0.579,123.766\n0,36,56,80,0.625,120.000\n0,37,56,57,1.058,115.912\n0,57,56,63,1.019,118.915\n0,0,57,0,0.000,120.900\n1,0,57,0,0.000,118.100\n0,1,57,55,1.017,117.865\n1,3,57,55,1.085,115.034\n0,5,57,55,0.674,116.747\n0,6,57,55,1.279,119.257\n1,9,57,55,0.980,128.143\n0,12,57,55,1.058,118.327\n0,15,57,55,0.983,123.646\n0,25,57,55,0.790,122.889\n1,37,57,55,0.967,121.379\n0,55,57,55,0.855,126.476\n1,55,57,63,1.016,118.800\n1,55,57,64,1.039,117.166\n0,56,57,56,1.342,120.010\n0,0,58,0,0.000,119.000\n1,0,58,0,0.000,119.900\n0,1,58,37,1.003,119.236\n0,1,58,64,0.961,121.070\n1,3,58,37,0.983,121.506\n0,6,58,37,1.371,114.370\n0,18,58,37,1.005,120.665\n0,36,58,37,0.650,118.713\n0,36,58,63,0.650,118.000\n0,36,58,64,0.620,120.051\n0,37,58,37,0.996,122.710\n1,37,58,37,1.036,118.260\n0,37,58,63,1.087,116.989\n0,37,58,64,1.061,117.942\n0,0,59,0,0.000,105.600\n0,63,59,63,1.273,106.313\n0,63,59,65,1.750,107.755\n0,63,59,78,1.713,101.179\n0,63,59,80,1.599,105.341\n0,65,59,65,1.754,107.683\n0,65,59,78,1.644,107.142\n0,65,59,82,1.864,103.624\n0,0,61,0,0.000,180.000\n0,1,61,60,0.475,180.000\n0,37,61,42,0.536,180.000\n0,37,61,60,0.484,180.000\n0,0,62,0,0.000,108.300\n0,1,62,18,1.316,109.273\n0,2,62,23,0.817,105.542\n0,3,62,3,1.318,106.821\n0,3,62,18,1.311,111.144\n0,3,62,55,1.528,102.414\n0,9,62,18,1.515,107.660\n0,18,62,37,1.229,114.618\n0,18,62,41,1.366,108.722\n0,18,62,63,1.427,106.284\n0,18,62,64,1.317,110.366\n0,0,63,0,0.000,123.300\n1,0,63,0,0.000,124.300\n0,1,63,39,0.935,121.832\n0,1,63,44,0.902,122.101\n0,1,63,59,1.175,115.253\n0,1,63,64,0.737,131.378\n0,1,63,66,0.865,127.610\n1,2,63,39,1.027,117.864\n1,2,63,59,0.987,127.524\n1,2,63,64,0.730,133.818\n1,2,63,66,0.828,132.383\n1,3,63,39,0.900,125.395\n1,3,63,44,0.935,120.481\n1,3,63,59,1.158,117.219\n1,3,63,64,0.766,130.065\n1,3,63,66,0.950,123.049\n1,4,63,44,0.848,126.602\n1,4,63,59,1.211,114.804\n1,4,63,64,0.795,127.817\n0,5,63,39,0.617,121.127\n0,5,63,44,0.393,126.141\n0,5,63,59,0.784,114.076\n0,5,63,64,0.577,131.721\n0,5,63,66,0.643,125.134\n0,5,63,78,0.482,130.000\n0,5,63,81,0.588,124.000\n0,6,63,39,1.234,120.509\n0,6,63,59,1.564,113.514\n0,6,63,64,0.951,131.301\n1,9,63,39,1.068,121.741\n1,9,63,44,0.963,124.598\n1,9,63,64,0.804,134.237\n1,9,63,66,0.912,133.020\n0,10,63,39,1.084,120.356\n0,10,63,44,1.112,115.732\n0,10,63,59,1.307,116.218\n0,10,63,64,0.867,128.750\n0,10,63,66,0.981,127.617\n0,12,63,39,1.111,114.439\n0,12,63,44,1.035,119.321\n0,12,63,64,0.838,126.226\n0,12,63,66,0.980,122.280\n0,15,63,39,1.064,117.958\n0,15,63,44,0.952,125.654\n0,15,63,64,0.813,129.284\n0,15,63,66,0.962,124.490\n0,18,63,44,1.110,116.077\n0,18,63,64,0.740,135.028\n0,19,63,39,0.647,132.369\n0,19,63,64,0.517,141.986\n0,25,63,39,0.597,139.439\n0,25,63,66,0.776,122.699\n0,35,63,59,1.351,124.475\n0,35,63,64,0.808,145.098\n0,37,63,39,1.011,132.046\n1,37,63,39,0.934,123.481\n0,37,63,44,0.764,133.930\n1,37,63,44,0.915,121.637\n0,37,63,59,1.041,124.836\n1,37,63,59,1.214,114.211\n0,37,63,64,0.679,122.881\n1,37,63,64,0.742,131.784\n0,37,63,66,0.742,140.668\n1,37,63,66,0.871,128.130\n0,38,63,39,1.022,124.814\n0,38,63,64,0.910,126.513\n0,39,63,39,0.910,131.461\n1,39,63,39,1.105,119.174\n0,39,63,40,1.112,119.261\n1,39,63,44,1.144,114.126\n0,39,63,45,1.166,115.115\n1,39,63,57,0.931,123.222\n0,39,63,58,1.042,123.231\n1,39,63,63,0.949,122.353\n0,39,63,64,0.813,107.255\n1,39,63,64,0.943,123.441\n0,39,63,66,1.012,110.865\n1,39,63,66,1.095,120.834\n0,40,63,44,0.943,125.881\n0,40,63,59,1.298,117.078\n0,40,63,64,0.845,130.865\n0,40,63,66,0.940,130.926\n0,44,63,45,1.125,114.633\n0,44,63,56,1.030,120.178\n0,44,63,62,0.991,122.899\n1,44,63,63,0.894,123.341\n0,44,63,64,0.853,108.480\n0,44,63,66,0.854,114.516\n0,44,63,72,0.915,129.129\n0,44,63,78,1.217,106.254\n0,44,63,81,1.278,108.400\n0,45,63,59,1.467,108.824\n0,45,63,64,0.940,122.725\n0,45,63,66,1.164,116.157\n0,56,63,66,0.875,134.888\n1,57,63,66,0.945,123.246\n0,58,63,64,0.965,122.522\n0,59,63,64,1.035,110.108\n0,59,63,66,1.181,115.592\n0,62,63,66,0.976,128.662\n1,63,63,64,0.776,129.499\n1,63,63,66,0.929,124.689\n0,66,63,72,0.911,129.610\n0,0,64,0,0.000,121.400\n1,0,64,0,0.000,121.700\n0,1,64,63,0.776,128.041\n0,1,64,64,0.766,128.061\n0,1,64,65,0.963,120.640\n0,1,64,66,0.952,120.685\n0,1,64,81,1.050,114.735\n0,1,64,82,1.013,117.414\n1,2,64,63,0.861,122.947\n1,2,64,64,0.816,125.433\n1,2,64,65,0.907,125.781\n1,2,64,66,1.010,118.540\n1,2,64,82,0.923,124.473\n1,3,64,63,0.828,124.890\n1,3,64,64,0.774,128.286\n1,3,64,65,0.973,120.954\n1,3,64,66,0.949,121.821\n1,3,64,81,0.995,118.754\n1,4,64,63,0.845,123.889\n1,4,64,64,0.804,126.131\n1,4,64,65,1.036,117.401\n1,4,64,66,1.010,118.254\n0,5,64,63,0.501,126.170\n0,5,64,64,0.546,127.405\n0,5,64,65,0.664,118.412\n0,5,64,66,0.699,120.478\n0,5,64,78,0.482,127.331\n0,5,64,81,0.605,120.000\n0,5,64,82,0.597,122.000\n0,6,64,63,1.112,120.985\n0,6,64,64,1.043,123.922\n0,6,64,65,1.348,115.506\n0,6,64,66,1.156,123.890\n1,9,64,64,0.959,120.924\n1,9,64,65,1.098,119.529\n1,9,64,66,1.013,123.743\n0,10,64,63,0.937,123.695\n0,10,64,64,0.893,125.735\n0,10,64,65,1.016,124.788\n0,10,64,66,1.065,121.125\n0,12,64,63,0.845,126.259\n0,12,64,64,0.869,124.058\n0,12,64,65,1.020,120.198\n0,12,64,66,0.971,122.900\n0,13,64,63,0.845,123.004\n0,13,64,64,0.883,120.111\n0,15,64,63,0.870,124.581\n0,15,64,64,0.882,123.309\n0,15,64,65,1.008,121.049\n0,15,64,66,0.990,121.826\n0,18,64,65,1.065,118.404\n0,18,64,66,1.067,118.002\n0,37,64,63,0.906,117.966\n0,37,64,64,0.854,136.087\n1,37,64,64,0.772,128.673\n0,37,64,65,0.799,134.844\n1,37,64,65,0.942,122.866\n0,37,64,66,0.845,130.337\n0,37,64,78,0.706,135.432\n0,37,64,81,0.917,124.856\n0,37,64,82,0.946,123.684\n1,37,64,82,1.000,119.086\n0,38,64,63,0.988,121.242\n0,38,64,64,0.858,129.014\n0,38,64,65,0.989,127.335\n0,38,64,66,1.022,124.454\n0,39,64,64,1.086,114.312\n0,39,64,65,1.060,122.481\n1,39,64,65,1.204,114.188\n1,39,64,66,1.170,115.157\n0,40,64,63,0.948,123.538\n0,40,64,64,0.928,123.853\n0,40,64,65,0.958,129.125\n0,40,64,81,1.035,123.154\n0,40,64,82,1.183,115.934\n0,43,64,63,0.885,126.749\n0,43,64,64,0.898,124.876\n0,43,64,65,1.024,123.706\n0,43,64,66,1.017,123.409\n0,45,64,63,0.981,120.063\n0,45,64,64,0.921,123.014\n0,45,64,65,1.276,110.521\n0,45,64,66,1.199,113.371\n0,55,64,64,0.907,124.405\n0,55,64,65,1.002,125.220\n1,57,64,65,1.020,117.950\n1,57,64,66,0.959,121.017\n0,58,64,63,1.075,115.646\n0,58,64,64,0.815,131.812\n0,58,64,66,0.978,126.562\n0,62,64,64,0.885,126.560\n0,62,64,65,1.073,121.703\n0,63,64,64,0.866,108.239\n1,63,64,64,0.827,124.584\n0,63,64,66,1.038,111.621\n0,63,64,78,1.172,105.176\n0,63,64,81,1.164,110.895\n0,63,64,82,1.395,101.902\n0,64,64,64,0.967,115.037\n0,64,64,65,0.916,113.570\n1,64,64,66,1.003,118.067\n0,64,64,78,1.194,103.479\n0,64,64,82,1.210,108.553\n0,65,64,66,1.055,115.369\n0,65,64,81,1.168,116.240\n0,66,64,66,0.932,129.624\n0,0,65,0,0.000,104.500\n0,39,65,64,1.738,101.550\n0,39,65,66,1.589,106.360\n0,39,65,82,1.740,101.208\n0,44,65,64,1.430,103.829\n0,44,65,66,1.366,110.552\n0,44,65,78,1.419,104.213\n0,59,65,64,1.788,103.452\n0,59,65,81,1.774,104.872\n0,0,66,0,0.000,106.900\n0,63,66,64,1.206,103.779\n0,63,66,66,1.406,106.735\n0,63,66,78,1.339,105.365\n0,63,66,81,1.408,106.806\n0,64,66,65,1.709,107.658\n0,65,66,66,1.932,111.306\n0,0,67,0,0.000,119.900\n1,0,67,0,0.000,116.600\n0,1,67,3,0.982,120.683\n0,1,67,9,1.178,115.581\n0,1,67,32,1.233,119.589\n0,1,67,67,1.257,111.574\n1,2,67,32,1.118,126.320\n1,2,67,67,1.231,113.438\n0,3,67,23,0.567,128.000\n0,3,67,32,1.290,120.945\n1,3,67,37,1.122,113.631\n1,9,67,30,1.142,118.899\n0,9,67,32,1.325,125.531\n1,9,67,37,1.186,115.979\n0,23,67,32,0.805,120.000\n1,30,67,32,1.370,114.854\n1,32,67,37,1.240,120.019\n0,32,67,67,1.504,117.327\n1,37,67,67,1.310,110.017\n0,0,68,0,0.000,108.800\n0,1,68,1,1.159,108.238\n0,1,68,23,0.772,107.200\n0,1,68,32,0.958,110.757\n0,23,68,23,0.650,104.892\n0,23,68,32,0.659,112.977\n0,0,69,0,0.000,120.300\n0,32,69,37,1.123,121.777\n0,32,69,38,1.486,117.217\n0,37,69,37,1.223,116.447\n0,38,69,38,1.122,125.930\n0,31,70,31,0.658,103.978\n0,0,73,0,0.000,106.600\n0,1,73,32,1.590,100.180\n0,1,73,72,1.481,96.166\n0,32,73,32,1.665,115.012\n0,32,73,72,1.326,115.134\n0,0,74,0,0.000,113.000\n0,3,74,7,1.357,113.010\n0,0,75,0,0.000,94.900\n0,1,75,3,1.138,96.779\n0,3,75,19,1.044,91.970\n0,3,75,71,0.729,95.899\n0,0,76,0,0.000,107.600\n0,76,76,76,1.434,109.889\n0,76,76,78,1.493,103.519\n0,78,76,78,1.235,109.421\n0,0,77,0,0.000,109.500\n0,32,77,32,1.652,109.472\n0,0,78,0,0.000,121.900\n1,0,78,0,0.000,126.100\n0,1,78,78,0.744,130.960\n0,1,78,81,0.938,121.477\n1,3,78,78,0.827,125.468\n1,3,78,81,0.922,123.748\n0,5,78,76,0.584,123.407\n0,5,78,78,0.546,128.000\n0,5,78,79,0.617,122.000\n0,5,78,81,0.542,109.881\n1,9,78,78,0.863,129.501\n1,9,78,81,0.991,125.857\n0,37,78,76,0.770,137.282\n0,37,78,78,0.803,128.249\n0,37,78,81,0.864,128.714\n0,38,78,78,0.844,130.617\n0,38,78,81,1.023,123.532\n0,39,78,64,0.734,138.714\n0,39,78,78,1.202,109.426\n0,40,78,76,0.930,130.150\n0,40,78,78,0.778,135.746\n0,40,78,81,1.058,121.251\n0,44,78,63,0.677,141.902\n0,44,78,64,0.663,142.589\n0,44,78,66,0.816,134.701\n0,44,78,78,1.089,111.702\n0,45,78,76,1.199,114.467\n0,45,78,78,0.915,125.050\n0,45,78,81,1.216,112.926\n0,59,78,64,0.963,128.471\n0,59,78,65,1.097,128.375\n0,59,78,78,1.443,105.916\n0,63,78,64,0.942,117.779\n0,64,78,65,0.835,131.530\n0,64,78,78,1.038,111.834\n0,66,78,78,1.030,118.376\n0,76,78,76,1.245,113.179\n0,76,78,78,1.159,111.900\n0,78,78,78,1.336,99.459\n0,78,78,81,1.302,105.130\n0,79,78,81,1.217,114.792\n0,0,79,0,0.000,103.400\n0,78,79,81,1.569,102.043\n0,79,79,81,1.625,104.857\n0,0,80,0,0.000,121.900\n1,0,80,0,0.000,128.200\n0,1,80,81,0.864,127.147\n1,3,80,81,0.886,128.181\n0,5,80,81,0.651,125.682\n0,18,80,81,1.032,120.869\n0,41,80,81,0.909,125.057\n0,44,80,55,0.918,127.755\n0,44,80,81,1.184,112.411\n0,55,80,59,1.254,120.263\n0,55,80,81,0.991,127.612\n0,56,80,81,1.003,126.038\n0,59,80,81,1.439,112.030\n0,81,80,81,1.205,108.609\n0,0,81,0,0.000,119.500\n0,1,81,63,0.996,120.129\n0,1,81,64,0.978,119.970\n0,1,81,78,0.879,126.535\n0,1,81,79,1.144,116.113\n0,1,81,80,0.895,126.324\n1,2,81,78,0.927,125.080\n1,2,81,80,0.895,128.399\n1,9,81,78,1.015,124.270\n1,9,81,80,1.106,120.028\n0,36,81,64,0.522,130.295\n0,36,81,66,0.583,128.738\n0,36,81,78,0.578,124.658\n0,36,81,80,0.575,124.787\n0,37,81,64,0.929,122.408\n1,37,81,64,0.983,119.722\n0,37,81,65,1.184,114.158\n1,37,81,65,1.281,110.477\n1,37,81,78,0.884,126.208\n1,37,81,80,0.940,123.333\n0,63,81,64,1.115,114.945\n0,64,81,65,1.075,122.099\n0,64,81,80,1.143,113.176\n0,66,81,80,1.067,122.250\n0,78,81,80,0.957,110.556\n0,79,81,80,1.379,107.936\n0,32,82,59,1.666,114.660\n0,32,82,64,1.075,131.706\n0,32,82,65,1.238,129.293\n0,59,82,64,1.563,105.660\n0,64,82,65,1.281,112.955\n', '95\nint,int,int,int,int,int,int,int,int\n1,6,4,4,0,0,0,0,0\n2,6,3,4,0,2,0,0,1\n3,6,3,4,0,2,0,0,1\n4,6,2,4,0,3,0,1,1\n5,1,1,1,0,0,0,0,0\n6,8,2,2,1,0,0,0,0\n7,8,1,2,0,2,0,0,0\n8,7,3,3,1,0,0,0,0\n9,7,2,3,0,2,0,0,1\n10,7,3,3,1,1,0,0,0\n11,9,1,1,1,0,0,0,0\n12,17,1,1,1,0,0,0,0\n13,35,1,1,1,0,0,0,0\n14,53,1,1,1,0,0,0,0\n15,16,2,2,1,0,0,0,0\n16,16,1,2,0,2,0,0,0\n17,16,3,4,0,2,0,0,0\n18,16,4,4,0,0,0,0,0\n19,14,4,4,0,0,0,0,0\n20,6,4,4,0,0,0,0,0\n21,1,1,1,0,0,0,0,0\n22,6,4,4,0,0,0,0,0\n23,1,1,1,0,0,0,0,0\n24,1,1,1,0,0,0,0,0\n25,15,4,4,0,0,0,0,0\n26,15,3,3,1,0,0,0,0\n27,1,1,1,0,0,0,0,0\n28,1,1,1,0,0,0,0,0\n29,1,1,1,0,0,0,0,0\n30,6,3,4,0,2,0,0,1\n31,1,1,1,0,0,0,0,0\n32,8,1,12,1,1,0,0,0\n33,1,1,1,0,0,0,0,0\n34,7,4,4,0,0,0,0,0\n35,8,1,1,1,1,0,0,0\n36,1,1,1,0,0,0,0,0\n37,6,3,4,0,2,1,0,1\n38,7,2,3,0,2,1,0,0\n39,7,3,3,1,1,1,0,1\n40,7,3,3,1,0,0,0,0\n41,6,3,4,0,1,0,0,0\n42,7,1,3,0,3,0,0,0\n43,7,3,3,1,0,0,0,0\n44,16,2,2,1,1,1,0,0\n45,7,3,4,0,2,0,0,0\n46,7,2,3,0,2,0,0,0\n47,7,1,2,0,2,0,0,0\n48,7,2,2,0,0,0,0,0\n49,8,3,3,0,0,0,0,0\n50,1,1,1,0,0,0,0,0\n51,8,2,3,0,2,0,0,0\n52,1,1,1,0,0,0,0,0\n53,7,2,4,0,2,0,1,0\n54,7,3,4,0,2,0,0,1\n55,7,3,34,0,1,0,0,0\n56,7,3,34,0,1,0,0,0\n57,6,3,4,0,2,0,0,1\n58,7,3,4,0,1,1,0,1\n59,8,2,2,1,1,1,0,0\n60,6,1,3,0,3,0,0,0\n61,7,2,4,0,3,0,1,0\n62,7,2,2,1,0,0,0,0\n63,6,3,4,0,2,1,0,1\n64,6,3,4,0,2,1,0,1\n65,7,2,3,0,2,1,0,0\n66,7,2,3,0,2,1,0,0\n67,7,3,4,0,2,0,0,1\n68,7,4,4,0,0,0,0,0\n69,7,3,4,0,1,1,0,0\n70,8,2,2,1,0,0,0,0\n71,1,1,1,0,0,0,0,0\n72,16,1,1,1,1,0,0,0\n73,16,3,3,0,0,0,0,0\n74,16,2,4,0,2,0,0,0\n75,15,2,3,0,2,0,0,1\n76,7,2,2,1,0,0,0,0\n77,17,4,4,0,0,0,0,0\n78,6,3,4,0,2,1,0,1\n79,7,2,3,0,2,1,0,0\n80,6,3,4,0,2,0,0,1\n81,7,3,4,0,1,1,0,1\n82,7,3,4,0,1,1,0,0\n87,26,0,0,0,0,0,0,0\n88,26,0,0,0,0,0,0,0\n89,9,0,0,0,0,0,0,0\n90,17,0,0,0,0,0,0,0\n91,35,0,0,0,0,0,0,0\n92,3,0,0,0,0,0,0,0\n93,11,0,0,0,0,0,0,0\n94,19,0,0,0,0,0,0,0\n95,30,0,0,0,0,0,0,0\n96,20,0,0,0,0,0,0,0\n97,29,0,0,0,0,0,0,0\n98,29,0,0,0,0,0,0,0\n99,12,0,0,0,0,0,0,0\n', '498\nint,int,int,float\n0,1,1,0.0000\n0,1,2,-0.1382\n0,1,3,-0.0610\n0,1,4,-0.2000\n0,1,5,0.0000\n0,1,6,-0.2800\n0,1,8,-0.2700\n0,1,9,-0.2460\n0,1,10,-0.3001\n0,1,11,-0.3400\n0,1,12,-0.2900\n0,1,13,-0.2300\n0,1,14,-0.1900\n0,1,15,-0.2300\n0,1,17,-0.1935\n0,1,18,-0.1052\n0,1,19,0.0805\n0,1,20,0.0000\n0,1,22,-0.0950\n0,1,25,0.0000\n0,1,26,-0.1669\n0,1,34,-0.5030\n0,1,35,-0.4274\n0,1,37,-0.1435\n0,1,39,-0.2556\n0,1,40,-0.3691\n0,1,41,0.1060\n0,1,43,-0.3557\n0,1,45,-0.2402\n0,1,46,-0.3332\n0,1,54,-0.3461\n0,1,55,-0.4895\n0,1,56,-0.3276\n0,1,57,-0.1050\n0,1,58,-0.4880\n0,1,61,-0.2657\n0,1,62,-0.2000\n0,1,63,-0.1800\n0,1,64,-0.1810\n0,1,67,-0.0990\n0,1,68,-0.2560\n0,1,72,-0.5500\n0,1,73,-0.0877\n0,1,75,-0.2550\n0,1,78,-0.1680\n0,1,80,-0.1440\n0,1,81,-0.5140\n0,2,2,0.0000\n1,2,2,0.0000\n1,2,3,-0.0144\n0,2,4,-0.0650\n1,2,4,-0.0650\n0,2,5,0.1500\n0,2,6,-0.0767\n1,2,9,-0.1710\n0,2,10,-0.1090\n0,2,11,-0.1495\n0,2,12,-0.1400\n0,2,13,-0.1100\n0,2,14,-0.0900\n0,2,15,-0.1010\n0,2,17,-0.0560\n0,2,18,0.0170\n0,2,19,0.2290\n0,2,20,0.1160\n0,2,22,0.0400\n0,2,25,0.1470\n0,2,30,-0.0310\n0,2,34,-0.3560\n0,2,35,-0.3500\n1,2,37,0.0284\n1,2,39,0.0310\n0,2,40,-0.1000\n0,2,41,0.2500\n0,2,43,-0.1910\n0,2,45,-0.2044\n0,2,46,-0.2940\n0,2,55,-0.3410\n0,2,56,-0.3030\n0,2,62,-0.0500\n1,2,63,-0.0450\n1,2,64,-0.0460\n1,2,67,0.0360\n0,2,72,-0.4500\n1,2,81,-0.3790\n1,3,3,0.0000\n1,3,4,-0.1050\n0,3,5,0.0600\n0,3,6,-0.1500\n0,3,7,-0.5700\n0,3,9,-0.4500\n1,3,9,-0.2110\n0,3,10,-0.0600\n0,3,11,-0.2220\n0,3,12,-0.2090\n0,3,15,-0.1410\n0,3,16,-0.3800\n0,3,17,-0.0960\n0,3,18,-0.0230\n0,3,20,0.0530\n0,3,22,0.0000\n0,3,25,0.1070\n1,3,30,-0.0710\n0,3,35,-0.3610\n1,3,37,0.0862\n1,3,39,-0.0090\n0,3,40,-0.0500\n0,3,41,0.1470\n0,3,43,-0.2363\n0,3,45,-0.1650\n0,3,48,-0.4300\n0,3,51,-0.9500\n0,3,53,-0.0134\n0,3,54,-0.4000\n1,3,54,-0.3290\n0,3,55,-0.3810\n0,3,56,-0.3430\n1,3,57,-0.0100\n1,3,58,-0.3930\n0,3,62,-0.0300\n1,3,63,-0.0850\n1,3,64,-0.0860\n0,3,67,-0.0040\n0,3,74,-0.3190\n0,3,75,-0.2474\n1,3,78,-0.0730\n1,3,80,-0.0490\n0,4,5,0.1770\n0,4,6,-0.0430\n0,4,7,-0.4870\n0,4,9,-0.3000\n1,4,9,-0.1060\n0,4,10,-0.0440\n0,4,15,-0.0360\n0,4,20,0.1810\n0,4,22,0.1050\n0,4,30,0.0340\n1,4,37,0.0730\n0,4,40,-0.0640\n0,4,42,-0.5571\n0,4,43,-0.1260\n1,4,63,0.0200\n1,4,64,0.0190\n0,5,19,0.2000\n0,5,20,0.0000\n0,5,22,-0.1000\n0,5,30,-0.1500\n0,5,37,-0.1500\n0,5,41,0.2203\n0,5,57,-0.1500\n0,5,63,-0.1500\n0,5,64,-0.1500\n0,5,78,-0.1500\n0,5,80,-0.1500\n0,6,6,0.0000\n0,6,8,-0.1000\n0,6,9,-0.0630\n0,6,10,0.0355\n0,6,15,0.0070\n0,6,17,0.0520\n0,6,18,0.1837\n0,6,19,0.2974\n0,6,20,0.2579\n0,6,21,0.4000\n0,6,22,0.1480\n0,6,24,0.5000\n0,6,25,0.2712\n0,6,26,0.1010\n0,6,29,0.4500\n0,6,30,0.0770\n0,6,33,0.5000\n0,6,37,0.0825\n0,6,39,0.1390\n0,6,40,-0.0210\n0,6,41,0.2950\n0,6,43,-0.0830\n0,6,45,-0.0090\n0,6,54,-0.1810\n0,6,55,-0.2330\n0,6,57,0.1380\n0,6,58,-0.2450\n0,6,63,0.0630\n0,6,64,0.0620\n0,7,17,0.5000\n0,7,46,0.1618\n0,7,74,0.5000\n0,8,8,0.0000\n0,8,9,-0.0530\n0,8,10,0.0090\n0,8,12,-0.0510\n0,8,15,0.0170\n0,8,17,0.0620\n0,8,19,0.3470\n0,8,20,0.2096\n0,8,22,0.1580\n0,8,23,0.3600\n0,8,25,0.2679\n0,8,26,0.1110\n0,8,34,-0.2380\n0,8,39,0.1490\n0,8,40,-0.0110\n0,8,43,-0.0730\n0,8,45,-0.0070\n0,8,46,-0.1760\n0,8,55,-0.2230\n0,8,56,-0.1850\n0,9,9,0.0000\n0,9,10,0.0620\n0,9,12,0.0020\n0,9,15,0.0700\n0,9,18,0.1880\n0,9,19,0.4000\n0,9,20,0.2870\n0,9,25,0.3180\n0,9,27,0.4000\n0,9,34,-0.1850\n0,9,35,-0.1500\n1,9,37,0.1790\n1,9,39,0.2020\n0,9,40,0.0420\n0,9,41,0.3580\n0,9,45,0.0460\n0,9,53,0.3179\n0,9,54,-0.1180\n0,9,55,-0.1700\n0,9,56,-0.1320\n1,9,57,0.2010\n0,9,62,0.1810\n1,9,63,0.1260\n1,9,64,0.1250\n0,9,67,0.2070\n1,9,78,0.1380\n1,9,81,-0.2080\n0,10,10,0.0000\n0,10,13,0.0060\n0,10,14,0.0360\n0,10,15,0.0080\n0,10,17,0.0530\n0,10,20,0.2250\n0,10,22,0.1490\n0,10,25,0.2560\n0,10,26,0.1020\n0,10,28,0.3700\n0,10,34,-0.2470\n0,10,35,-0.2120\n0,10,37,0.1170\n0,10,39,0.1400\n0,10,40,-0.0200\n0,10,41,0.2960\n0,10,45,-0.0160\n0,10,63,0.0640\n0,10,64,0.0630\n0,11,20,0.2980\n0,11,22,0.2317\n0,11,25,0.3290\n0,11,26,0.1750\n0,11,37,0.1900\n0,11,40,0.0530\n0,12,15,0.0680\n0,12,18,0.1860\n0,12,19,0.3701\n0,12,20,0.2900\n0,12,22,0.2273\n0,12,25,0.3160\n0,12,26,0.2112\n0,12,37,0.1770\n0,12,40,0.0400\n0,12,57,0.1990\n0,12,63,0.1240\n0,12,64,0.1230\n0,13,20,0.2190\n0,13,22,0.1430\n0,13,37,0.1110\n0,13,64,0.0570\n0,14,20,0.1890\n0,14,37,0.0810\n0,15,15,0.0000\n0,15,18,0.1180\n0,15,19,0.3300\n0,15,20,0.2170\n0,15,22,0.1410\n0,15,25,0.2480\n0,15,26,0.0940\n0,15,30,0.0700\n0,15,37,0.1015\n0,15,40,-0.0280\n0,15,43,-0.0900\n0,15,57,0.1310\n0,15,63,0.0560\n0,15,64,0.0550\n0,15,71,0.1800\n0,16,16,0.0000\n0,17,17,0.0000\n0,17,20,0.1720\n0,17,22,0.0960\n0,17,37,0.0640\n0,17,43,-0.1350\n0,18,18,0.0000\n0,18,20,0.0990\n0,18,22,0.0230\n0,18,32,-0.6500\n0,18,37,-0.0090\n0,18,39,0.0140\n0,18,43,-0.1380\n0,18,48,-0.5895\n0,18,55,-0.3580\n0,18,58,-0.3700\n0,18,62,0.2099\n0,18,63,-0.0620\n0,18,64,-0.0630\n0,18,80,-0.0260\n0,19,19,0.0000\n0,19,20,-0.1130\n0,19,37,-0.2210\n0,19,40,-0.3580\n0,19,63,-0.2740\n0,19,75,-0.3490\n0,20,20,0.0000\n0,20,22,-0.0760\n0,20,25,0.0310\n0,20,26,-0.1230\n0,20,30,-0.1380\n0,20,34,-0.4720\n0,20,37,-0.1080\n0,20,40,-0.2450\n0,20,41,0.0710\n0,20,43,-0.3070\n0,20,45,-0.2410\n0,22,22,0.0000\n0,22,30,-0.0710\n0,22,34,-0.3960\n0,22,37,-0.0320\n0,22,40,-0.1690\n0,22,41,0.1470\n0,22,43,-0.2310\n0,22,45,-0.1650\n0,23,39,-0.2700\n0,23,62,-0.4000\n0,23,67,-0.2920\n0,23,68,-0.3600\n0,25,25,0.0000\n0,25,32,-0.7000\n0,25,37,-0.1390\n0,25,39,-0.1160\n0,25,40,-0.2760\n0,25,43,-0.3380\n0,25,57,-0.1170\n0,25,63,-0.1920\n0,25,71,-0.0362\n0,25,72,-0.6773\n0,26,26,0.0000\n0,26,34,-0.3490\n0,26,37,0.0150\n0,26,40,-0.1220\n0,26,71,0.0960\n0,28,40,-0.4000\n0,28,43,-0.4200\n0,28,48,-0.4000\n0,30,30,0.0000\n0,30,40,-0.0980\n1,30,67,0.0670\n0,31,70,-0.4300\n0,32,41,0.6500\n0,32,45,0.5200\n0,32,67,0.6330\n0,32,68,0.7500\n0,32,69,0.7500\n0,32,73,0.3500\n0,32,77,0.4500\n0,32,82,0.6330\n0,34,36,0.4500\n0,34,37,0.3640\n0,34,43,0.1650\n0,35,37,0.3290\n0,35,63,0.2760\n0,36,54,-0.4000\n0,36,55,-0.4500\n0,36,56,-0.4500\n0,36,58,-0.4570\n4,36,58,-0.4500\n0,36,81,-0.4500\n0,37,37,0.0000\n1,37,37,0.0000\n0,37,38,-0.3100\n0,37,39,0.0230\n1,37,39,0.0230\n0,37,40,-0.1000\n0,37,41,0.1790\n0,37,43,-0.1990\n0,37,45,-0.1330\n0,37,46,-0.3020\n0,37,55,-0.3490\n0,37,56,-0.3110\n1,37,57,0.0220\n0,37,58,-0.3610\n1,37,58,-0.3610\n4,37,58,-0.3500\n0,37,61,-0.1380\n0,37,62,0.0020\n0,37,63,0.0000\n1,37,63,-0.0530\n0,37,64,0.0000\n1,37,64,-0.0540\n1,37,67,0.0280\n0,37,69,-0.0895\n0,37,78,-0.0410\n0,37,81,-0.3870\n1,37,81,-0.3870\n0,38,38,0.0000\n0,38,63,0.2570\n0,38,64,0.2560\n0,38,69,0.3380\n0,38,78,0.2690\n1,39,39,0.0000\n0,39,40,-0.1600\n0,39,45,-0.1560\n0,39,63,-0.1516\n1,39,63,-0.0760\n0,39,64,-0.0770\n1,39,64,-0.0770\n0,39,65,-0.4180\n0,39,78,-0.0640\n0,40,40,0.0000\n0,40,45,0.0040\n0,40,46,-0.1650\n0,40,54,-0.1600\n0,40,63,0.0840\n0,40,64,0.0830\n0,40,78,0.0960\n0,41,41,0.0000\n0,41,55,-0.5280\n0,41,62,-0.1770\n0,41,72,-0.5000\n0,41,80,-0.1960\n0,42,61,0.4920\n0,43,43,0.0000\n0,43,45,0.0660\n0,43,64,0.1450\n0,44,63,0.0400\n0,44,65,-0.2207\n0,44,78,0.0690\n0,44,80,0.0930\n0,45,63,0.0800\n0,45,64,0.0790\n0,45,78,0.0920\n0,47,53,0.3700\n0,49,50,0.5673\n0,51,52,0.5000\n0,55,57,0.3544\n0,55,62,0.3510\n0,55,64,0.2950\n0,55,80,0.3320\n0,56,57,0.4000\n0,56,63,0.2580\n0,56,80,0.2700\n4,57,58,-0.4000\n1,57,63,-0.0750\n1,57,64,-0.0760\n0,58,63,0.3080\n0,58,64,0.3070\n0,59,63,0.1400\n0,59,65,-0.1209\n0,59,78,0.1690\n0,59,80,0.1930\n0,59,82,0.2380\n0,60,61,0.3700\n0,62,63,-0.0550\n0,62,64,-0.0560\n0,63,63,0.0000\n1,63,63,0.0000\n0,63,64,0.0000\n0,63,66,-0.3381\n0,63,72,-0.4000\n0,63,78,0.0120\n0,63,81,-0.3340\n0,64,64,0.0000\n0,64,65,-0.2888\n0,64,66,-0.2272\n0,64,78,0.0130\n0,64,81,-0.3330\n0,64,82,0.0820\n0,65,66,0.0000\n0,65,78,0.3070\n0,65,81,-0.0390\n0,65,82,0.3760\n0,66,66,0.0000\n0,66,78,0.2990\n0,66,81,-0.0470\n0,71,75,-0.0958\n0,72,73,0.4500\n0,76,76,0.0000\n0,76,78,0.4000\n0,78,78,0.0000\n1,78,78,0.0000\n0,78,79,-0.3030\n0,78,81,-0.3500\n0,79,81,-0.0430\n0,80,81,-0.4000\n', '58\nint,int,float,float\n1,6,1.084,5.15\n1,7,1.001,7.35\n1,8,0.947,9.10\n1,9,0.92,10.6\n1,14,1.48,2.3\n1,15,1.415,2.95\n1,16,1.326,4.30\n1,17,1.28,4.3\n1,35,1.41,4.2\n1,53,1.60,2.7\n6,6,1.512,3.80\n6,7,1.439,4.55\n6,8,1.393,5.40\n6,9,1.353,6.20\n6,14,1.86,2.6\n6,15,1.84,2.7\n6,16,1.812,2.85\n6,17,1.781,2.75\n6,35,1.94,2.6\n6,53,2.16,1.4\n7,7,1.283,6.00\n7,8,1.333,5.90\n7,9,1.36,5.9\n7,14,1.74,3.7\n7,15,1.65,4.8\n7,16,1.674,3.75\n7,17,1.75,3.5\n7,35,1.90,2.9\n7,53,2.10,1.6\n8,8,1.48,3.6\n8,9,1.42,4.6\n8,14,1.63,5.2\n8,15,1.66,4.7\n8,16,1.470,9.90\n8,17,1.70,4.1\n8,35,1.85,3.4\n8,53,2.05,1.6\n9,14,1.57,6.4\n9,15,1.54,7.1\n9,16,1.55,6.9\n14,14,2.32,1.3\n14,15,2.25,1.5\n14,16,2.15,2.0\n14,17,2.02,3.1\n14,35,2.19,2.1\n14,53,2.44,1.5\n15,15,2.21,1.7\n15,16,2.10,2.4\n15,17,2.03,3.0\n15,35,2.21,2.0\n15,53,2.47,1.4\n16,16,2.052,2.50\n16,17,2.04,2.9\n16,35,2.24,1.9\n16,53,2.40,1.7\n17,17,1.99,3.5\n35,35,2.28,2.4\n53,53,2.67,1.6\n', '493\nint,int,int,float,float\n0,1,1,4.258,1.508\n0,1,2,4.539,1.482\n0,1,3,4.190,1.492\n0,1,4,4.707,1.459\n0,1,5,4.766,1.093\n0,1,6,5.047,1.418\n0,1,8,5.084,1.451\n0,1,9,4.763,1.458\n0,1,10,4.664,1.436\n0,1,11,6.011,1.360\n0,1,12,2.974,1.773\n0,1,13,2.529,1.949\n0,1,14,1.706,2.090\n0,1,15,2.893,1.805\n0,1,17,2.841,1.813\n0,1,18,3.258,1.772\n0,1,19,2.866,1.830\n0,1,20,4.650,1.504\n0,1,22,4.286,1.482\n0,1,25,2.980,1.810\n0,1,26,2.790,1.830\n0,1,34,3.844,1.480\n0,1,35,7.915,1.307\n0,1,37,4.957,1.486\n0,1,39,6.114,1.445\n0,1,40,4.922,1.446\n0,1,41,3.830,1.510\n0,1,43,3.971,1.472\n0,1,45,3.844,1.480\n0,1,46,3.813,1.482\n0,1,54,4.267,1.461\n0,1,55,4.646,1.454\n0,1,56,4.166,1.453\n0,1,57,4.669,1.461\n0,1,58,4.329,1.451\n0,1,61,4.845,1.424\n0,1,62,4.456,1.444\n0,1,63,4.481,1.471\n0,1,64,4.518,1.469\n0,1,67,4.188,1.459\n0,1,68,4.217,1.479\n0,1,72,2.956,1.801\n0,1,73,2.608,1.839\n0,1,75,2.547,1.858\n0,1,78,4.593,1.465\n0,1,80,4.373,1.477\n0,1,81,4.512,1.441\n0,2,2,9.505,1.333\n1,2,2,5.310,1.430\n1,2,3,4.565,1.468\n0,2,4,9.538,1.297\n1,2,4,5.657,1.415\n0,2,5,5.170,1.083\n0,2,6,5.520,1.373\n1,2,9,6.385,1.360\n0,2,10,6.329,1.362\n0,2,11,6.283,1.350\n0,2,12,3.390,1.720\n0,2,13,3.413,1.854\n0,2,14,2.062,2.025\n0,2,15,3.896,1.720\n0,2,17,3.247,1.773\n0,2,18,3.789,1.728\n0,2,19,3.052,1.811\n0,2,20,4.593,1.465\n0,2,22,4.926,1.448\n0,2,25,3.750,1.742\n0,2,30,8.166,1.331\n0,2,34,5.207,1.407\n0,2,35,10.343,1.250\n1,2,37,5.007,1.449\n1,2,39,6.164,1.368\n0,2,40,6.110,1.370\n0,2,41,3.746,1.505\n0,2,43,4.928,1.420\n0,2,45,4.725,1.430\n0,2,46,7.466,1.325\n0,2,55,6.164,1.368\n0,2,56,6.246,1.365\n0,2,62,7.105,1.336\n1,2,63,6.030,1.400\n1,2,64,5.754,1.411\n1,2,67,4.685,1.432\n0,2,72,4.179,1.700\n1,2,81,6.357,1.361\n1,3,3,4.418,1.489\n1,3,4,5.135,1.438\n0,3,5,4.650,1.101\n0,3,6,5.801,1.355\n0,3,7,12.950,1.222\n0,3,9,10.077,1.290\n1,3,9,6.273,1.364\n0,3,10,5.829,1.369\n0,3,11,6.570,1.340\n0,3,12,3.449,1.715\n0,3,15,3.536,1.748\n0,3,16,4.735,1.665\n0,3,17,2.888,1.808\n0,3,18,3.394,1.760\n0,3,20,3.298,1.530\n0,3,22,4.593,1.465\n0,3,25,3.164,1.792\n1,3,30,4.481,1.471\n0,3,35,11.012,1.237\n1,3,37,4.488,1.457\n1,3,39,5.978,1.375\n0,3,40,6.110,1.370\n0,3,41,4.286,1.482\n0,3,43,4.928,1.420\n0,3,45,4.531,1.440\n0,3,48,5.412,1.398\n0,3,51,8.562,1.290\n0,3,53,7.637,1.320\n0,3,54,10.333,1.280\n1,3,54,2.771,1.563\n0,3,55,4.886,1.422\n0,3,56,4.907,1.421\n1,3,57,5.492,1.422\n1,3,58,5.163,1.409\n0,3,62,7.568,1.322\n1,3,63,5.468,1.423\n1,3,64,5.288,1.431\n0,3,67,8.217,1.304\n0,3,74,5.204,1.639\n0,3,75,4.191,1.710\n1,3,78,5.705,1.413\n1,3,80,6.719,1.375\n0,4,4,15.206,1.200\n0,4,5,5.726,1.065\n0,4,6,7.193,1.328\n0,4,7,14.916,1.176\n0,4,9,15.589,1.172\n1,4,9,7.041,1.338\n0,4,10,6.824,1.345\n0,4,15,4.330,1.690\n0,4,20,5.178,1.436\n0,4,22,5.400,1.426\n0,4,30,10.227,1.282\n1,4,37,5.445,1.424\n0,4,42,16.582,1.160\n0,4,43,6.947,1.341\n1,4,63,5.633,1.416\n1,4,64,5.492,1.422\n0,5,19,2.254,1.485\n0,5,20,4.852,1.093\n0,5,22,5.191,1.082\n0,5,30,5.176,1.086\n0,5,37,5.306,1.084\n0,5,41,3.256,1.144\n0,5,57,5.633,1.076\n0,5,63,5.531,1.080\n0,5,64,5.506,1.080\n0,5,78,5.506,1.080\n0,5,80,5.633,1.076\n0,6,6,4.088,1.449\n0,6,8,5.059,1.450\n0,6,9,4.491,1.395\n0,6,10,5.982,1.410\n0,6,15,4.757,1.661\n0,6,17,5.779,1.608\n0,6,18,5.326,1.630\n0,6,19,4.661,1.660\n0,6,20,5.623,1.433\n0,6,21,7.794,0.972\n0,6,22,4.556,1.433\n0,6,24,7.403,0.981\n0,6,25,5.243,1.630\n0,6,26,5.481,1.618\n0,6,29,7.839,0.973\n0,6,30,9.359,1.271\n0,6,33,7.143,0.986\n0,6,37,5.614,1.376\n0,6,39,4.629,1.388\n0,6,40,4.609,1.389\n0,6,41,6.754,1.342\n0,6,43,3.937,1.426\n0,6,45,4.321,1.404\n0,6,54,5.117,1.365\n0,6,55,4.772,1.381\n0,6,57,7.128,1.330\n0,6,58,4.792,1.380\n0,6,63,7.324,1.324\n0,6,64,6.664,1.345\n0,7,17,8.770,1.500\n0,7,46,9.329,1.235\n0,7,74,9.129,1.490\n0,8,8,3.264,1.420\n0,8,9,4.581,1.342\n0,8,10,3.909,1.378\n0,8,12,3.371,1.761\n0,8,15,4.060,1.652\n0,8,17,3.901,1.663\n0,8,19,4.254,1.700\n0,8,20,5.107,1.456\n0,8,22,4.223,1.457\n0,8,23,6.490,1.019\n0,8,25,4.629,1.660\n0,8,26,4.027,1.699\n0,8,34,3.775,1.386\n0,8,39,3.435,1.408\n0,8,40,3.710,1.390\n0,8,43,3.977,1.374\n0,8,45,4.267,1.358\n0,8,46,5.519,1.301\n0,8,55,4.229,1.360\n0,8,56,3.995,1.373\n0,9,9,7.256,1.243\n1,9,9,3.808,1.384\n0,9,10,4.480,1.347\n0,9,12,3.635,1.739\n0,9,15,3.791,1.671\n0,9,18,4.465,1.626\n0,9,19,3.687,1.741\n0,9,20,4.401,1.447\n0,9,25,5.379,1.619\n0,9,27,6.230,1.026\n0,9,34,3.223,1.423\n0,9,35,5.095,1.366\n1,9,37,5.529,1.393\n1,9,39,4.685,1.337\n0,9,40,4.382,1.352\n0,9,41,5.650,1.388\n0,9,45,4.857,1.329\n0,9,53,7.291,1.242\n0,9,54,4.991,1.323\n0,9,55,3.825,1.383\n0,9,56,4.602,1.341\n1,9,57,6.824,1.345\n0,9,62,4.749,1.334\n1,9,63,6.824,1.345\n1,9,64,5.458,1.396\n0,9,67,6.752,1.258\n1,9,78,6.644,1.351\n1,9,81,3.909,1.378\n0,10,10,3.977,1.374\n0,10,13,3.110,1.878\n0,10,14,1.967,2.029\n0,10,15,3.593,1.686\n0,10,17,3.930,1.661\n0,10,20,4.240,1.456\n0,10,22,4.970,1.418\n0,10,25,3.820,1.714\n0,10,26,3.651,1.727\n0,10,28,6.663,1.015\n0,10,34,3.960,1.375\n0,10,35,4.898,1.375\n0,10,37,5.482,1.395\n0,10,39,4.382,1.352\n0,10,40,3.841,1.382\n0,10,41,7.466,1.325\n0,10,45,3.524,1.402\n0,10,63,6.137,1.369\n0,10,64,5.952,1.376\n0,11,20,6.339,1.348\n0,11,22,5.296,1.389\n0,11,25,6.019,1.583\n0,11,26,6.204,1.575\n0,11,37,6.511,1.342\n0,11,40,4.187,1.440\n0,12,15,2.978,2.031\n0,12,18,2.808,2.051\n0,12,19,2.838,2.050\n0,12,20,2.859,1.751\n0,12,22,3.056,1.750\n0,12,25,3.063,2.023\n0,12,26,2.448,2.100\n0,12,37,3.378,1.721\n0,12,40,3.737,1.731\n0,12,57,3.714,1.694\n0,12,63,3.413,1.718\n0,12,64,3.649,1.699\n0,13,20,2.767,1.920\n0,13,22,2.928,1.902\n0,13,37,3.031,1.891\n0,13,64,3.031,1.891\n0,14,20,0.884,2.332\n0,14,37,1.781,2.075\n0,15,15,2.531,2.050\n0,15,18,2.214,2.094\n0,15,19,2.022,2.146\n0,15,20,2.757,1.822\n0,15,22,3.802,1.727\n0,15,25,2.319,2.112\n0,15,26,2.359,2.106\n0,15,30,3.750,1.731\n0,15,37,3.565,1.765\n0,15,40,3.859,1.666\n0,15,43,3.221,1.717\n0,15,57,3.993,1.713\n0,15,63,3.724,1.733\n0,15,64,3.548,1.747\n0,15,71,4.014,1.341\n0,17,20,2.397,1.865\n0,17,22,2.566,1.844\n0,17,37,3.098,1.787\n0,17,43,4.900,1.601\n0,18,20,3.172,1.780\n0,18,22,2.757,1.822\n0,18,32,10.748,1.450\n0,18,37,3.281,1.770\n0,18,39,3.504,1.693\n0,18,43,3.301,1.710\n0,18,48,6.186,1.540\n0,18,55,4.432,1.628\n0,18,58,2.568,1.783\n0,18,62,5.510,1.570\n0,18,63,3.524,1.749\n0,18,64,3.856,1.723\n0,18,80,4.150,1.702\n0,19,20,2.288,1.900\n0,19,37,3.072,1.809\n0,19,40,4.470,1.686\n0,19,63,3.219,1.795\n0,19,75,1.600,2.226\n0,20,20,3.663,1.526\n0,20,22,4.251,1.484\n0,20,25,2.718,1.838\n0,20,26,2.588,1.853\n0,20,30,3.977,1.507\n0,20,34,4.171,1.460\n0,20,37,3.740,1.516\n0,20,40,4.784,1.427\n0,20,41,4.286,1.482\n0,20,43,3.737,1.487\n0,20,45,3.844,1.480\n0,22,22,3.969,1.499\n0,22,30,3.785,1.513\n0,22,34,4.103,1.464\n0,22,37,4.481,1.471\n0,22,40,4.188,1.459\n0,22,41,5.071,1.441\n0,22,43,4.070,1.466\n0,22,45,4.311,1.452\n0,23,39,7.112,1.012\n0,23,62,6.339,1.026\n0,23,67,6.610,1.019\n0,23,68,5.899,1.038\n0,25,25,1.514,2.253\n0,25,32,8.296,1.510\n0,25,37,3.586,1.755\n0,25,39,4.370,1.676\n0,25,40,4.629,1.660\n0,25,43,3.237,1.762\n0,25,57,4.356,1.699\n0,25,63,3.711,1.745\n0,25,71,3.001,1.411\n0,25,72,3.744,1.950\n0,26,26,1.414,2.279\n0,26,34,3.395,1.748\n0,26,37,3.207,1.788\n0,26,40,4.870,1.646\n0,26,71,2.959,1.415\n0,28,40,6.576,1.018\n0,28,43,6.265,1.028\n0,28,48,6.413,1.024\n0,30,30,9.579,1.343\n1,30,30,5.355,1.428\n0,30,40,8.447,1.298\n1,30,67,5.274,1.404\n0,31,70,7.880,0.969\n0,32,41,9.756,1.261\n0,32,45,9.420,1.233\n0,32,67,7.926,1.269\n0,32,68,4.398,1.348\n0,32,69,6.098,1.261\n0,32,73,8.427,1.510\n0,32,77,10.648,1.450\n0,32,82,8.594,1.252\n0,34,36,6.163,1.028\n0,34,37,4.347,1.450\n0,34,43,4.401,1.351\n0,35,37,9.767,1.262\n0,35,63,12.760,1.207\n0,36,54,6.529,1.022\n0,36,55,6.744,1.014\n0,36,56,6.490,1.017\n0,36,58,6.610,1.019\n0,36,81,6.980,1.016\n0,37,37,5.573,1.374\n1,37,37,5.178,1.436\n0,37,38,5.737,1.333\n0,37,39,5.978,1.375\n1,37,39,5.650,1.388\n0,37,40,6.168,1.398\n0,37,41,4.537,1.468\n0,37,43,4.764,1.428\n0,37,45,4.705,1.431\n0,37,46,6.191,1.367\n0,37,55,6.615,1.352\n0,37,56,5.055,1.414\n1,37,57,5.092,1.440\n0,37,58,7.432,1.326\n1,37,58,5.055,1.414\n0,37,61,5.724,1.385\n0,37,62,7.137,1.335\n0,37,63,6.095,1.372\n1,37,63,5.178,1.436\n0,37,64,6.161,1.379\n1,37,64,5.265,1.432\n1,37,67,4.725,1.430\n0,37,69,5.396,1.352\n0,37,78,6.719,1.375\n0,37,81,3.987,1.471\n1,37,81,4.531,1.440\n0,38,38,5.002,1.246\n0,38,63,7.299,1.330\n0,38,64,6.978,1.340\n0,38,69,5.036,1.321\n0,38,78,6.218,1.366\n0,39,40,4.101,1.367\n0,39,45,3.524,1.402\n0,39,63,6.301,1.364\n1,39,63,6.137,1.369\n0,39,64,6.357,1.361\n1,39,64,5.482,1.395\n0,39,65,5.513,1.339\n0,39,78,6.137,1.369\n0,40,40,4.248,1.359\n0,40,45,4.305,1.356\n0,40,46,4.727,1.335\n0,40,54,6.817,1.256\n0,40,63,6.733,1.348\n0,40,64,6.644,1.351\n0,40,78,5.900,1.378\n0,41,41,5.029,1.443\n0,41,55,5.577,1.391\n0,41,62,7.137,1.335\n0,41,72,4.519,1.678\n0,41,80,5.222,1.434\n0,42,61,16.223,1.087\n0,43,43,4.211,1.361\n0,43,45,3.710,1.390\n0,43,64,5.389,1.399\n0,44,63,3.589,1.717\n0,44,65,3.374,1.684\n0,44,78,3.711,1.734\n0,44,80,3.910,1.719\n0,45,63,5.119,1.411\n0,45,64,5.076,1.413\n0,45,78,5.724,1.385\n0,47,53,12.192,1.140\n0,49,50,6.812,0.991\n0,51,52,7.100,0.987\n0,55,57,7.227,1.319\n0,55,62,3.977,1.374\n0,55,64,5.529,1.393\n0,55,80,7.500,1.324\n0,56,57,4.137,1.383\n0,56,63,5.900,1.378\n0,56,80,6.470,1.357\n1,57,63,5.400,1.426\n1,57,64,5.135,1.438\n0,58,63,6.794,1.346\n0,58,64,6.164,1.368\n0,59,63,5.787,1.360\n0,59,65,4.756,1.388\n0,59,78,6.127,1.364\n0,59,80,7.064,1.332\n0,59,82,3.855,1.431\n0,60,61,15.749,1.170\n0,62,63,6.947,1.341\n0,62,64,6.273,1.364\n1,63,63,5.729,1.412\n0,63,64,7.118,1.377\n0,63,66,8.326,1.313\n0,63,72,4.503,1.679\n0,63,78,7.434,1.352\n0,63,81,7.778,1.316\n0,64,64,4.313,1.418\n1,64,64,4.926,1.448\n0,64,65,8.258,1.335\n0,64,66,4.456,1.369\n0,64,78,5.492,1.422\n0,64,81,5.824,1.381\n0,64,82,6.794,1.346\n0,65,66,7.243,1.323\n0,65,78,8.447,1.298\n0,65,81,5.223,1.313\n0,65,82,5.622,1.297\n0,66,66,3.874,1.368\n0,66,78,6.385,1.360\n0,66,81,3.960,1.375\n0,67,67,6.085,1.280\n0,71,75,2.852,1.423\n0,72,73,2.628,2.035\n0,76,76,4.286,1.357\n0,76,78,6.824,1.345\n0,78,78,5.573,1.374\n0,78,79,8.890,1.287\n0,78,81,5.046,1.381\n0,79,79,6.408,1.269\n0,79,81,4.305,1.356\n0,80,81,8.237,1.335\n', '18\nint,float,float\n1,0.33,2.20\n3,1.34,0.97\n6,0.77,2.50\n7,0.73,3.07\n8,0.72,3.50\n9,0.74,4.12\n11,1.54,1.01\n12,1.30,1.23\n14,1.15,1.74\n15,1.09,2.06\n16,1.03,2.44\n17,1.01,2.83\n19,1.96,0.91\n20,1.74,1.04\n29,1.38,1.75\n30,1.31,1.66\n35,1.15,2.74\n53,1.33,2.21\n', '30\nint,int,int,float,float\n0,1,0,0.15,0.15\n0,1,1,0.10,0.30\n0,1,2,0.05,0.35\n0,1,3,0.05,0.35\n0,1,4,0.05,0.35\n1,1,1,0.30,0.30\n1,1,2,0.30,0.50\n1,1,3,0.30,0.50\n1,1,4,0.30,0.50\n2,1,2,0.50,0.50\n2,1,3,0.50,0.50\n2,1,4,0.50,0.50\n3,1,3,0.50,0.50\n3,1,4,0.50,0.50\n4,1,4,0.50,0.50\n0,2,0,0.00,0.00\n0,2,1,0.00,0.15\n0,2,2,0.00,0.15\n0,2,3,0.00,0.15\n0,2,4,0.00,0.15\n1,2,1,0.30,0.30\n1,2,2,0.25,0.25\n1,2,3,0.25,0.25\n1,2,4,0.25,0.25\n2,2,2,0.25,0.25\n2,2,3,0.25,0.25\n2,2,4,0.25,0.25\n3,2,3,0.25,0.25\n3,2,4,0.25,0.25\n4,2,4,0.25,0.25\n', '99\nint,int,int,int,int\n1,1,1,1,0\n2,2,2,1,0\n3,3,3,1,0\n4,4,4,1,0\n5,5,5,5,0\n6,6,6,6,0\n7,7,7,6,0\n8,8,8,8,0\n9,9,9,8,0\n10,10,10,8,0\n11,11,11,11,0\n12,12,12,12,0\n13,13,13,13,0\n14,14,14,14,0\n15,15,15,15,0\n16,16,16,15,0\n17,17,17,15,0\n18,18,18,15,0\n19,19,19,19,0\n20,20,1,1,0\n21,21,21,5,0\n22,22,22,1,0\n23,23,23,5,0\n24,24,24,5,0\n25,25,25,25,0\n26,26,26,25,0\n27,27,28,5,0\n28,28,28,5,0\n29,29,29,5,0\n30,30,2,1,0\n31,31,31,31,0\n32,32,7,6,0\n33,33,21,5,0\n34,34,8,8,0\n35,35,6,6,0\n36,36,36,5,0\n37,37,2,1,0\n38,38,9,8,0\n39,39,10,8,0\n40,40,10,8,0\n41,41,3,1,0\n42,42,42,8,0\n43,43,10,8,0\n44,44,16,15,0\n45,45,10,8,0\n46,46,9,8,0\n47,47,42,8,0\n48,48,9,8,0\n49,49,6,6,0\n50,50,21,5,0\n51,51,7,6,0\n52,52,21,5,0\n53,53,42,8,0\n54,54,9,8,0\n55,55,10,8,0\n56,56,10,8,0\n57,57,2,1,0\n58,58,10,8,0\n59,59,6,6,0\n60,60,4,1,0\n61,61,42,8,0\n62,62,10,8,0\n63,63,2,1,0\n64,64,2,1,0\n65,65,9,8,0\n66,66,9,8,0\n67,67,9,8,0\n68,68,8,8,0\n69,69,9,8,0\n70,70,70,70,70\n71,71,5,5,0\n72,72,16,15,0\n73,73,18,15,0\n74,74,17,15,0\n75,75,26,25,0\n76,76,9,8,0\n77,77,12,12,0\n78,78,2,1,0\n79,79,9,8,0\n80,80,2,1,0\n81,81,10,8,0\n82,82,9,8,0\n83,0,0,0,0\n84,0,0,0,0\n85,0,0,0,0\n86,0,0,0,0\n87,87,87,87,87\n88,88,88,88,88\n89,89,89,89,89\n90,90,90,90,90\n91,91,91,91,91\n92,92,92,92,92\n93,93,93,93,93\n94,94,94,94,94\n95,95,95,95,95\n96,96,96,96,96\n97,97,97,97,97\n98,98,98,98,98\n99,99,99,99,99\n', '25\nint,int,float,float,float\n0,0,1.26,0.025,0.025\n0,1,1.66,0.30,0.36\n0,2,1.84,0.38,0.58\n0,3,1.98,0.49,0.65\n0,4,2.03,0.51,0.80\n0,5,2.03,0.25,0.81\n0,30,1.85,0.15,0.53\n0,40,1.84,0.61,0.61\n0,50,1.78,0.97,0.62\n1,1,1.91,0.68,0.68\n1,2,2.28,0.74,0.92\n1,3,2.35,0.85,1.02\n1,4,2.33,0.68,1.12\n1,5,2.50,0.97,1.22\n1,30,2.08,1.14,0.97\n1,40,2.34,1.17,1.08\n2,2,2.41,1.18,1.18\n2,3,2.52,1.02,1.28\n2,4,2.61,1.28,1.40\n2,5,2.60,0.84,1.24\n3,3,2.58,1.41,1.35\n3,4,2.66,0.86,1.48\n3,5,2.75,1.14,1.55\n4,4,2.85,1.62,1.62\n4,5,2.76,1.25,1.51\n', jl.equals_Ljava_lang_Object__Z__devirtual$_2(tableSet, 'MMFF94s') || jl.equals_Ljava_lang_Object__Z__devirtual$_2(tableSet, 'MMFF94s+')?'117\nint,int,int,int,float\n0,2,0,0,0.020\n1,2,1,2,0.030\n1,2,2,2,0.027\n1,2,2,3,0.026\n1,2,2,5,0.013\n1,2,2,37,0.032\n2,2,2,5,0.013\n2,2,3,5,0.012\n2,2,5,5,0.006\n2,2,5,6,0.027\n2,2,5,37,0.017\n2,2,5,40,0.012\n2,2,5,41,0.008\n0,3,0,0,0.130\n1,3,1,7,0.146\n1,3,2,7,0.138\n1,3,3,7,0.134\n1,3,5,7,0.122\n1,3,6,7,0.141\n1,3,7,10,0.129\n1,3,7,37,0.138\n2,3,5,7,0.113\n2,3,5,9,0.081\n2,3,6,7,0.127\n2,3,7,10,0.116\n3,3,5,7,0.113\n3,3,6,7,0.127\n5,3,5,7,0.103\n5,3,5,9,0.074\n5,3,5,54,0.078\n5,3,6,7,0.119\n5,3,7,10,0.102\n5,3,9,40,0.067\n6,3,7,37,0.127\n7,3,10,10,0.113\n7,3,20,20,0.151\n9,3,40,40,0.057\n0,8,0,0,0.000\n0,10,0,0,0.015\n1,10,1,3,0.015\n1,10,3,6,0.015\n1,10,3,28,0.015\n3,10,3,28,0.015\n3,10,28,28,0.015\n0,17,0,0,0.000\n0,26,0,0,0.000\n0,30,0,0,0.010\n5,30,20,30,0.008\n0,37,0,0,0.035\n1,37,37,37,0.040\n2,37,37,37,0.031\n3,37,37,37,0.027\n5,37,37,37,0.015\n5,37,37,38,0.046\n5,37,37,63,0.008\n5,37,37,64,0.012\n5,37,37,69,0.016\n5,37,38,38,0.084\n6,37,37,37,0.048\n15,37,37,37,0.025\n37,37,37,40,0.046\n0,39,0,0,0.020\n1,39,63,63,0.012\n23,39,63,63,-0.014\n23,39,63,65,0.021\n23,39,65,65,0.062\n0,40,0,0,0.030\n1,40,28,37,0.030\n2,40,28,28,0.030\n3,40,28,28,0.030\n28,40,28,37,0.030\n0,41,0,0,0.180\n1,41,32,32,0.178\n2,41,32,32,0.161\n5,41,32,32,0.158\n0,43,0,0,0.000\n0,45,0,0,0.150\n0,49,0,0,0.000\n50,49,50,50,0.000\n0,54,0,0,0.020\n1,54,3,36,0.016\n3,54,36,36,0.018\n0,55,0,0,0.020\n1,55,36,57,0.020\n36,55,36,57,0.020\n0,56,0,0,0.020\n1,56,36,57,0.020\n36,56,36,57,0.020\n0,57,0,0,0.080\n5,57,55,55,0.038\n56,57,56,56,0.158\n0,58,0,0,0.025\n0,63,0,0,0.050\n5,63,39,64,0.019\n5,63,39,66,0.068\n5,63,44,64,0.014\n5,63,44,66,0.055\n5,63,59,64,0.033\n5,63,59,66,0.085\n37,63,39,64,0.010\n0,64,0,0,0.040\n5,64,63,64,0.006\n5,64,63,66,0.043\n5,64,64,65,0.052\n5,64,65,66,0.094\n37,64,63,64,-0.01\n0,67,0,0,0.070\n0,69,0,0,0.070\n32,69,37,37,0.067\n0,73,0,0,0.000\n0,78,0,0,0.045\n5,78,78,81,0.046\n0,80,0,0,0.080\n5,80,81,81,0.057\n0,81,0,0,0.025\n36,81,78,80,0.016\n0,82,0,0,0.000\n':'117\nint,int,int,int,float\n0,2,0,0,0.020\n1,2,1,2,0.030\n1,2,2,2,0.027\n1,2,2,3,0.026\n1,2,2,5,0.013\n1,2,2,37,0.032\n2,2,2,5,0.013\n2,2,3,5,0.012\n2,2,5,5,0.006\n2,2,5,6,0.027\n2,2,5,37,0.017\n2,2,5,40,0.012\n2,2,5,41,0.008\n0,3,0,0,0.130\n1,3,1,7,0.146\n1,3,2,7,0.138\n1,3,3,7,0.134\n1,3,5,7,0.122\n1,3,6,7,0.141\n1,3,7,10,0.129\n1,3,7,37,0.138\n2,3,5,7,0.113\n2,3,5,9,0.081\n2,3,6,7,0.127\n2,3,7,10,0.116\n3,3,5,7,0.113\n3,3,6,7,0.127\n5,3,5,7,0.103\n5,3,5,9,0.074\n5,3,5,54,0.078\n5,3,6,7,0.119\n5,3,7,10,0.102\n5,3,9,40,0.067\n6,3,7,37,0.127\n7,3,10,10,0.113\n7,3,20,20,0.151\n9,3,40,40,0.057\n0,8,0,0,0.000\n0,10,0,0,-0.020\n1,10,1,3,-0.02\n1,10,3,6,-0.033\n1,10,3,28,-0.02\n3,10,3,28,-0.030\n3,10,28,28,-0.019\n0,17,0,0,0.000\n0,26,0,0,0.000\n0,30,0,0,0.010\n5,30,20,30,0.008\n0,37,0,0,0.035\n1,37,37,37,0.040\n2,37,37,37,0.031\n3,37,37,37,0.027\n5,37,37,37,0.015\n5,37,37,38,0.046\n5,37,37,63,0.008\n5,37,37,64,0.012\n5,37,37,69,0.016\n5,37,38,38,0.084\n6,37,37,37,0.048\n15,37,37,37,0.025\n37,37,37,40,0.046\n0,39,0,0,0.020\n1,39,63,63,0.012\n23,39,63,63,-0.014\n23,39,63,65,0.021\n23,39,65,65,0.062\n0,40,0,0,-0.005\n1,40,28,37,-0.006\n2,40,28,28,-0.007\n3,40,28,28,-0.007\n28,40,28,37,0.004\n0,41,0,0,0.180\n1,41,32,32,0.178\n2,41,32,32,0.161\n5,41,32,32,0.158\n0,43,0,0,0.000\n0,45,0,0,0.150\n0,49,0,0,0.000\n50,49,50,50,0.000\n0,54,0,0,0.020\n1,54,3,36,0.016\n3,54,36,36,0.018\n0,55,0,0,0.020\n1,55,36,57,0.020\n36,55,36,57,0.020\n0,56,0,0,0.020\n1,56,36,57,0.020\n36,56,36,57,0.020\n0,57,0,0,0.080\n5,57,55,55,0.038\n56,57,56,56,0.158\n0,58,0,0,0.025\n0,63,0,0,0.050\n5,63,39,64,0.019\n5,63,39,66,0.068\n5,63,44,64,0.014\n5,63,44,66,0.055\n5,63,59,64,0.033\n5,63,59,66,0.085\n37,63,39,64,0.010\n0,64,0,0,0.040\n5,64,63,64,0.006\n5,64,63,66,0.043\n5,64,64,65,0.052\n5,64,65,66,0.094\n37,64,63,64,-0.011\n0,67,0,0,0.070\n0,69,0,0,0.070\n32,69,37,37,0.067\n0,73,0,0,0.000\n0,78,0,0,0.045\n5,78,78,81,0.046\n0,80,0,0,0.080\n5,80,81,81,0.057\n0,81,0,0,0.025\n36,81,78,80,0.016\n0,82,0,0,0.000\n', '99\nint,float,float\n1,0.000,0.000\n2,-0.135,0.000\n3,-0.095,0.000\n4,-0.200,0.000\n5,-0.023,0.000\n6,-0.243,0.000\n7,-0.687,0.000\n8,-0.253,0.000\n9,-0.306,0.000\n10,-0.244,0.000\n11,-0.317,0.000\n12,-0.304,0.000\n13,-0.238,0.000\n14,-0.208,0.000\n15,-0.236,0.000\n16,-0.475,0.000\n17,-0.191,0.000\n18,-0.118,0.000\n19,0.094,0.000\n20,-0.019,0.000\n21,0.157,0.000\n22,-0.095,0.000\n23,0.193,0.000\n24,0.257,0.000\n25,0.012,0.000\n26,-0.142,0.000\n27,0.094,0.000\n28,0.058,0.000\n29,0.207,0.000\n30,-0.166,0.000\n31,0.161,0.000\n32,-0.732,0.500\n33,0.257,0.000\n34,-0.491,0.000\n35,-0.456,0.500\n36,-0.031,0.000\n37,-0.127,0.000\n38,-0.437,0.000\n39,-0.104,0.000\n40,-0.264,0.000\n41,0.052,0.000\n42,-0.757,0.000\n43,-0.326,0.000\n44,-0.237,0.000\n45,-0.260,0.000\n46,-0.429,0.000\n47,-0.418,0.000\n48,-0.525,0.000\n49,-0.283,0.000\n50,0.284,0.000\n51,-1.046,0.000\n52,-0.546,0.000\n53,-0.048,0.000\n54,-0.424,0.000\n55,-0.476,0.000\n56,-0.438,0.000\n57,-0.105,0.000\n58,-0.488,0.000\n59,-0.337,0.000\n60,-0.635,0.000\n61,-0.265,0.000\n62,-0.125,0.250\n63,-0.180,0.000\n64,-0.181,0.000\n65,-0.475,0.000\n66,-0.467,0.000\n67,-0.099,0.000\n68,-0.135,0.000\n69,-0.099,0.000\n70,-0.269,0.000\n71,-0.071,0.000\n72,-0.580,0.500\n73,-0.200,0.000\n74,-0.301,0.000\n75,-0.255,0.000\n76,-0.568,0.250\n77,-0.282,0.000\n78,-0.168,0.000\n79,-0.471,0.000\n80,-0.144,0.000\n81,-0.514,0.000\n82,-0.099,0.000\n83,0.000,0.000\n84,0.000,0.000\n85,0.000,0.000\n86,0.000,0.000\n87,2.000,0.000\n88,3.000,0.000\n89,-1.000,0.000\n90,-1.000,0.000\n91,-1.000,0.000\n92,1.000,0.000\n93,1.000,0.000\n94,1.000,0.000\n95,2.000,0.000\n96,2.000,0.000\n97,1.000,0.000\n98,2.000,0.000\n99,2.000,0.000\n', '282\nint,int,int,int,float,float\n0,1,1,1,0.206,0.206\n0,1,1,2,0.136,0.197\n0,1,1,3,0.211,0.092\n0,1,1,5,0.227,0.070\n0,1,1,6,0.173,0.417\n0,1,1,8,0.136,0.282\n0,1,1,10,0.187,0.338\n0,1,1,11,0.209,0.633\n0,1,1,12,0.176,0.386\n0,1,1,15,0.139,0.217\n0,1,1,34,0.236,0.436\n0,1,1,37,0.152,0.260\n0,1,1,39,0.144,0.595\n0,1,1,41,0.122,0.051\n0,1,1,56,0.262,0.451\n0,1,1,68,0.186,0.125\n0,2,1,2,0.282,0.282\n0,2,1,3,0.206,0.022\n0,2,1,5,0.234,0.088\n0,2,1,6,0.183,0.387\n0,2,1,8,0.214,0.363\n0,3,1,5,0.157,0.115\n0,3,1,6,-0.036,0.456\n0,3,1,10,0.038,0.195\n0,5,1,5,0.115,0.115\n0,5,1,6,0.013,0.436\n0,5,1,8,0.027,0.358\n0,5,1,9,0.040,0.418\n0,5,1,10,0.043,0.261\n0,5,1,11,0.003,0.452\n0,5,1,12,-0.018,0.380\n0,5,1,15,0.018,0.255\n0,5,1,18,0.121,0.218\n0,5,1,20,0.069,0.327\n0,5,1,22,0.055,0.267\n0,5,1,34,-0.003,0.342\n0,5,1,37,0.074,0.287\n0,5,1,39,0.092,0.607\n0,5,1,40,0.023,0.335\n0,5,1,41,0.093,0.118\n0,5,1,54,0.016,0.343\n0,5,1,55,0.030,0.397\n0,5,1,56,0.031,0.384\n0,5,1,68,0.041,0.216\n0,6,1,6,0.320,0.320\n0,6,1,37,0.310,0.160\n0,11,1,11,0.586,0.586\n0,12,1,12,0.508,0.508\n0,1,2,1,0.250,0.250\n0,1,2,2,0.203,0.207\n2,1,2,2,0.222,0.269\n2,1,2,3,0.244,0.292\n0,1,2,5,0.215,0.128\n2,1,2,37,0.246,0.260\n1,2,2,2,0.250,0.219\n2,2,2,3,0.155,0.112\n0,2,2,5,0.207,0.157\n1,2,2,5,0.267,0.159\n0,2,2,6,0.118,0.576\n2,2,2,37,0.143,0.172\n0,2,2,40,0.289,0.390\n0,2,2,41,0.191,-0.047\n1,3,2,5,0.264,0.156\n0,5,2,5,0.140,0.140\n0,5,2,6,0.213,0.502\n2,5,2,37,0.153,0.288\n0,5,2,40,0.070,0.463\n0,5,2,41,0.191,0.005\n0,1,3,1,0.358,0.358\n2,1,3,2,0.246,0.409\n2,1,3,3,0.303,0.145\n0,1,3,5,0.321,0.183\n0,1,3,6,0.338,0.732\n0,1,3,7,0.154,0.856\n0,1,3,10,0.223,0.732\n2,1,3,37,0.217,0.207\n1,2,3,5,0.407,0.159\n1,2,3,6,0.429,0.473\n1,2,3,7,0.214,0.794\n1,2,3,9,0.227,0.610\n1,2,3,10,0.298,0.600\n1,3,3,5,0.251,0.133\n1,3,3,6,0.066,0.668\n1,3,3,7,-0.093,0.866\n0,5,3,5,0.126,0.126\n0,5,3,6,0.174,0.734\n0,5,3,7,0.032,0.805\n0,5,3,9,0.037,0.669\n0,5,3,10,0.169,0.619\n0,5,3,40,0.087,0.685\n0,5,3,54,0.098,0.210\n0,6,3,7,0.494,0.578\n4,6,3,20,1.179,0.752\n2,6,3,37,0.350,0.175\n0,7,3,10,0.771,0.353\n0,7,3,20,0.865,-0.181\n2,7,3,37,0.707,0.007\n0,9,3,40,0.680,0.260\n0,10,3,10,1.050,1.050\n4,20,3,20,0.536,0.536\n0,40,3,40,0.482,0.482\n0,1,6,1,0.309,0.309\n0,1,6,2,0.157,0.375\n0,1,6,3,-0.153,0.252\n0,1,6,21,0.256,0.143\n0,1,6,37,0.163,0.375\n0,2,6,3,-0.228,0.052\n0,2,6,29,0.259,0.163\n4,3,6,20,0.456,0.379\n0,3,6,24,0.215,0.064\n0,3,6,37,-0.225,-0.320\n0,8,6,21,0.304,0.055\n0,10,6,21,0.419,0.158\n0,18,6,33,0.309,0.120\n4,20,6,20,0.739,0.739\n0,29,6,37,0.130,0.241\n0,31,6,31,0.227,0.227\n0,1,8,1,0.312,0.312\n0,1,8,6,0.212,0.354\n0,1,8,23,0.309,0.135\n0,6,8,23,0.418,0.020\n4,20,8,20,0.653,0.653\n0,20,8,23,0.128,0.122\n0,23,8,23,0.190,0.190\n0,1,9,3,0.326,0.580\n0,3,9,27,0.464,0.222\n0,1,10,1,0.063,0.063\n0,1,10,3,-0.021,0.340\n0,1,10,6,-0.024,0.374\n0,1,10,28,0.155,-0.051\n0,3,10,3,-0.219,-0.219\n0,3,10,6,0.497,0.513\n0,3,10,28,0.137,0.066\n0,28,10,28,0.081,0.081\n0,1,15,1,0.125,0.125\n0,1,15,15,0.012,0.238\n0,1,15,37,0.048,0.229\n0,1,15,71,0.080,-0.012\n0,15,15,71,0.172,-0.068\n0,37,15,71,0.187,-0.027\n0,71,15,71,0.045,0.045\n0,1,18,1,0.023,0.023\n0,1,18,6,0.003,0.213\n0,1,18,32,-0.091,0.390\n0,1,18,43,-0.008,0.607\n0,6,18,6,0.088,0.088\n0,6,18,32,0.123,0.369\n0,32,18,32,0.404,0.404\n0,32,18,43,0.384,0.281\n0,43,18,43,0.428,0.428\n0,1,20,5,0.290,0.098\n0,1,20,20,0.179,0.004\n0,3,20,5,-0.049,0.171\n4,3,20,20,0.607,0.437\n0,5,20,5,0.182,0.182\n0,5,20,6,0.051,0.312\n0,5,20,8,0.072,0.226\n0,5,20,12,0.014,0.597\n0,5,20,20,0.101,0.079\n0,5,20,30,0.108,0.123\n4,6,20,20,0.823,0.396\n4,8,20,20,0.701,0.369\n0,12,20,20,0.310,0.000\n4,20,20,20,0.283,0.283\n4,20,20,30,0.340,0.529\n0,1,22,5,0.067,0.174\n0,1,22,22,0.199,0.039\n0,5,22,5,0.254,0.254\n0,5,22,22,0.181,0.108\n5,22,22,22,0.000,0.000\n0,5,26,5,-0.121,-0.121\n0,5,30,20,0.251,0.007\n0,5,30,30,0.267,0.054\n4,20,30,30,0.413,0.705\n0,1,34,1,0.202,0.202\n0,1,34,36,0.160,-0.009\n0,36,34,36,0.087,0.087\n0,1,37,37,0.485,0.311\n1,2,37,37,0.321,0.235\n1,3,37,37,0.179,0.217\n0,5,37,37,0.279,0.250\n0,5,37,38,0.267,0.389\n0,5,37,63,0.216,0.434\n0,5,37,64,0.167,0.364\n0,5,37,69,0.273,0.391\n0,6,37,37,0.830,0.339\n0,15,37,37,0.650,0.259\n0,37,37,37,-0.411,-0.411\n0,37,37,38,-0.424,-0.466\n0,37,37,40,0.429,0.901\n0,37,37,63,-0.173,-0.215\n0,37,37,64,-0.229,-0.229\n0,37,37,69,-0.244,-0.555\n0,38,37,38,-0.516,-0.516\n0,37,38,37,-0.342,-0.342\n0,37,38,38,-0.164,-1.130\n0,1,39,63,0.313,0.500\n0,23,39,63,-0.131,0.422\n0,23,39,65,-0.122,0.281\n0,63,39,63,0.469,0.469\n0,63,39,65,0.741,0.506\n0,65,39,65,0.706,0.706\n0,1,40,28,0.238,0.091\n0,1,40,37,0.153,0.590\n0,2,40,28,0.342,0.156\n0,3,40,28,0.228,0.104\n0,28,40,28,0.094,0.094\n0,28,40,37,0.186,0.423\n0,1,41,32,0.503,0.943\n0,2,41,32,0.594,0.969\n0,5,41,32,0.276,0.852\n0,32,41,32,0.652,0.652\n0,18,43,23,0.377,0.057\n0,23,43,23,0.082,0.082\n0,63,44,63,0.591,0.591\n0,63,44,65,0.857,0.978\n0,50,49,50,0.072,0.072\n0,1,54,3,0.192,-0.051\n0,1,54,36,0.240,0.079\n0,3,54,36,0.005,0.127\n0,36,54,36,0.148,0.148\n0,1,55,36,0.189,0.033\n0,1,55,57,0.166,0.211\n0,36,55,36,0.106,0.106\n0,36,55,57,0.093,0.080\n0,1,56,36,0.211,-0.040\n0,1,56,57,0.026,0.386\n0,36,56,36,0.101,0.101\n0,36,56,57,0.108,0.068\n0,5,57,55,0.043,0.420\n0,55,57,55,0.125,0.125\n0,56,57,56,0.431,0.431\n0,58,57,58,0.732,0.732\n0,63,59,63,0.497,0.497\n0,63,59,65,0.723,0.874\n0,5,63,39,0.009,0.654\n0,5,63,44,-0.015,0.446\n0,5,63,59,0.067,0.588\n0,5,63,64,0.055,0.370\n0,5,63,66,0.110,0.464\n0,37,63,39,0.178,0.523\n0,37,63,64,-0.045,0.497\n0,39,63,64,0.422,0.409\n0,39,63,66,0.436,0.525\n0,44,63,64,0.581,0.426\n0,44,63,66,0.542,0.365\n0,59,63,64,0.852,0.332\n0,59,63,66,0.775,0.300\n0,5,64,63,0.086,0.345\n0,5,64,64,0.085,0.369\n0,5,64,65,0.051,0.436\n0,5,64,66,0.113,0.452\n0,37,64,63,0.059,0.299\n0,37,64,64,0.277,0.377\n0,63,64,64,0.206,0.030\n0,63,64,66,0.171,0.078\n0,64,64,65,0.079,0.403\n0,65,64,66,0.406,0.066\n0,39,65,64,0.528,0.644\n0,39,65,66,0.397,0.258\n0,44,65,64,0.816,0.543\n0,59,65,64,1.177,0.594\n0,63,66,64,0.213,-0.173\n0,63,66,66,0.234,0.077\n0,64,66,65,-0.149,0.383\n0,65,66,66,0.199,0.101\n0,1,68,1,0.217,0.217\n0,1,68,23,0.285,0.050\n0,1,68,32,-0.047,0.503\n0,23,68,23,0.145,0.145\n0,23,68,32,-0.182,0.504\n0,32,69,37,1.018,0.418\n0,37,69,37,-0.169,-0.169\n0,31,70,31,0.210,0.210\n0,5,78,78,0.279,0.250\n0,5,78,81,0.083,0.250\n0,78,78,81,-0.398,0.314\n0,5,80,81,-0.101,0.691\n0,81,80,81,0.732,0.732\n0,36,81,78,0.021,0.368\n0,36,81,80,0.018,0.422\n0,78,81,80,0.366,0.419\n', jl.equals_Ljava_lang_Object__Z__devirtual$_2(tableSet, 'MMFF94s')?'926\nint,int,int,int,int,float,float,float\n0,0,1,1,0,0.000,0.000,0.300\n5,0,1,1,0,0.200,-0.800,1.500\n0,1,1,1,1,0.103,0.681,0.332\n5,1,1,1,1,0.144,-0.547,1.126\n0,1,1,1,2,-0.295,0.438,0.584\n0,1,1,1,3,0.066,-0.156,0.143\n0,1,1,1,5,0.639,-0.630,0.264\n0,1,1,1,6,-0.688,1.757,0.477\n5,1,1,1,6,0.000,0.000,0.054\n0,1,1,1,8,-1.420,-0.092,1.101\n5,1,1,1,8,0.000,-0.158,0.323\n0,1,1,1,11,0.593,0.662,1.120\n0,1,1,1,12,-0.678,0.417,0.624\n0,1,1,1,15,-0.714,0.698,0.000\n0,1,1,1,34,-0.647,0.550,0.590\n0,2,1,1,5,0.321,-0.411,0.144\n0,3,1,1,3,0.443,0.000,-1.140\n0,3,1,1,5,-0.256,0.058,0.000\n0,3,1,1,6,-0.679,-0.029,0.000\n0,5,1,1,5,0.284,-1.386,0.314\n0,5,1,1,6,-0.654,1.072,0.279\n0,5,1,1,8,-0.744,-1.235,0.337\n0,5,1,1,10,0.000,0.000,0.418\n0,5,1,1,11,0.000,0.516,0.291\n0,5,1,1,12,0.678,-0.602,0.398\n0,5,1,1,15,1.142,-0.644,0.367\n0,5,1,1,25,0.000,0.000,0.295\n0,5,1,1,34,0.692,-0.530,0.278\n0,5,1,1,37,0.000,0.000,0.389\n0,5,1,1,39,0.000,0.000,0.278\n0,5,1,1,41,0.000,0.000,-0.141\n0,5,1,1,56,0.000,0.000,0.324\n0,5,1,1,68,0.000,0.000,0.136\n0,6,1,1,6,0.408,1.397,0.961\n5,6,1,1,6,0.313,-1.035,1.631\n0,8,1,1,8,1.055,0.834,0.000\n0,11,1,1,11,-0.387,-0.543,1.405\n0,12,1,1,12,0.000,0.000,0.893\n0,15,1,1,15,-0.177,0.000,0.049\n0,0,1,2,0,0.000,0.000,0.000\n2,0,1,2,0,0.000,0.000,0.000\n5,0,1,2,0,0.000,0.000,0.000\n0,0,1,2,2,0.000,0.000,-0.650\n5,0,1,2,2,0.000,0.000,-0.650\n0,1,1,2,1,0.419,0.296,0.282\n0,1,1,2,2,-0.494,0.274,-0.630\n0,1,1,2,5,0.075,0.000,0.358\n0,2,1,2,2,-0.293,0.115,-0.508\n0,2,1,2,5,0.301,0.104,0.507\n0,3,1,2,1,0.565,-0.554,0.234\n0,3,1,2,2,-0.577,-0.482,-0.427\n0,3,1,2,5,0.082,0.000,0.123\n0,5,1,2,1,0.000,-0.184,0.220\n0,5,1,2,2,0.501,-0.410,-0.535\n2,5,1,2,2,0.000,0.000,0.055\n2,5,1,2,3,0.000,0.000,-0.108\n0,5,1,2,5,-0.523,-0.228,0.208\n2,5,1,2,37,0.000,0.000,0.000\n0,6,1,2,1,-0.467,0.000,0.490\n0,6,1,2,2,0.425,0.168,-0.875\n0,6,1,2,5,0.000,0.136,0.396\n0,8,1,2,1,-0.504,0.371,0.557\n0,8,1,2,2,0.541,0.539,-1.009\n0,8,1,2,5,0.000,0.204,0.464\n0,0,1,3,0,0.000,0.400,0.300\n2,0,1,3,0,0.000,0.500,0.350\n5,0,1,3,0,0.000,0.000,0.000\n0,0,1,3,1,0.000,0.000,0.550\n0,0,1,3,5,0.000,0.200,0.700\n0,0,1,3,7,0.000,0.400,0.400\n0,1,1,3,1,0.103,0.177,0.545\n0,1,1,3,5,-0.072,0.316,0.674\n0,1,1,3,6,-0.117,-0.333,0.202\n0,1,1,3,7,0.825,0.139,0.325\n0,1,1,3,10,-0.763,1.244,0.986\n0,2,1,3,5,0.663,-0.167,0.426\n0,2,1,3,7,-0.758,0.112,0.563\n0,5,1,3,1,-0.073,0.085,0.531\n2,5,1,3,2,0.000,0.000,0.115\n2,5,1,3,3,0.000,0.000,0.446\n0,5,1,3,5,-0.822,0.501,1.008\n0,5,1,3,6,0.000,-0.624,0.330\n0,5,1,3,7,0.659,-1.407,0.308\n0,5,1,3,10,-0.687,1.244,0.136\n2,5,1,3,37,0.000,0.000,0.056\n0,5,1,3,43,0.000,1.027,0.360\n0,5,1,3,51,0.000,1.543,0.350\n0,5,1,3,53,0.000,0.501,0.000\n0,5,1,3,74,0.000,0.513,-0.344\n0,5,1,3,75,0.000,0.511,-0.186\n0,6,1,3,6,0.447,0.652,0.318\n0,6,1,3,7,-0.395,0.730,-0.139\n0,10,1,3,7,0.530,2.905,2.756\n0,10,1,3,10,0.465,-0.241,1.850\n0,0,1,4,0,0.000,0.000,0.000\n0,0,1,6,0,0.000,0.000,0.200\n5,0,1,6,0,0.000,-0.200,0.400\n0,1,1,6,1,-0.681,0.755,0.755\n5,1,1,6,1,0.000,0.243,-0.596\n0,1,1,6,3,-0.547,0.000,0.320\n0,1,1,6,21,0.000,0.270,0.237\n0,2,1,6,21,0.102,0.460,-0.128\n0,3,1,6,21,-1.652,-1.660,0.283\n0,5,1,6,1,0.571,0.319,0.570\n0,5,1,6,2,0.000,0.000,0.306\n0,5,1,6,3,0.572,0.000,-0.304\n0,5,1,6,21,0.596,-0.276,0.346\n0,5,1,6,25,0.000,0.000,0.061\n0,5,1,6,37,0.000,0.000,0.106\n0,5,1,6,45,0.000,0.000,-0.174\n0,6,1,6,1,0.229,-0.710,0.722\n5,6,1,6,1,0.000,0.000,0.040\n0,6,1,6,21,1.488,-3.401,-0.320\n0,37,1,6,21,0.712,1.320,-0.507\n0,0,1,8,0,0.000,-0.300,0.500\n5,0,1,8,0,0.000,0.000,0.297\n0,1,1,8,1,-0.439,0.786,0.272\n5,1,1,8,1,0.115,-0.390,0.658\n0,1,1,8,6,-0.608,0.339,1.496\n0,1,1,8,23,-0.428,0.323,0.280\n0,2,1,8,23,0.594,-0.409,0.155\n0,5,1,8,1,0.393,-0.385,0.562\n0,5,1,8,6,0.598,-0.158,0.399\n0,5,1,8,23,-0.152,-0.440,0.357\n0,0,1,9,0,0.000,0.000,0.000\n5,0,1,9,0,0.000,0.000,0.000\n0,5,1,9,3,0.204,-0.335,-0.352\n0,5,1,9,53,0.000,0.000,0.097\n0,0,1,10,0,0.000,0.000,0.300\n5,0,1,10,0,0.000,0.000,0.000\n0,0,1,10,3,0.000,0.000,1.000\n0,1,1,10,3,-0.884,0.578,0.818\n0,1,1,10,6,0.000,-0.379,0.565\n0,1,1,10,28,0.750,-0.404,0.369\n0,3,1,10,3,3.219,-2.699,1.875\n0,3,1,10,28,0.207,0.461,0.324\n0,5,1,10,1,0.000,0.000,0.706\n0,5,1,10,3,-2.334,1.517,-0.065\n0,5,1,10,6,0.000,0.688,0.665\n0,5,1,10,28,-0.982,-0.207,0.166\n0,0,1,15,0,0.000,0.000,0.400\n5,0,1,15,0,0.000,0.000,0.336\n0,1,1,15,1,-1.047,0.170,0.398\n0,1,1,15,15,-1.438,0.263,0.501\n0,1,1,15,71,-0.376,-0.133,0.288\n0,5,1,15,1,1.143,-0.231,0.447\n0,5,1,15,15,1.555,-0.323,0.456\n0,5,1,15,37,0.000,0.000,0.459\n0,5,1,15,71,0.229,0.203,0.440\n0,0,1,17,0,0.000,0.000,0.350\n5,0,1,17,0,0.000,0.000,0.000\n0,5,1,17,1,0.000,0.000,0.536\n0,5,1,17,7,0.000,0.000,0.212\n0,0,1,18,0,0.000,0.000,0.100\n5,0,1,18,0,0.000,0.000,0.112\n0,5,1,18,1,0.000,0.000,0.000\n0,5,1,18,6,0.000,0.000,0.099\n0,5,1,18,32,0.000,0.585,0.388\n0,5,1,18,43,0.000,-0.412,0.121\n0,5,1,18,48,0.000,0.000,0.195\n0,5,1,18,62,0.000,0.000,-0.088\n0,0,1,19,0,0.000,0.000,0.150\n5,0,1,19,0,0.000,0.000,0.179\n0,5,1,19,5,0.000,0.000,0.196\n0,5,1,19,6,0.000,0.000,0.176\n0,5,1,19,12,0.000,0.000,0.152\n0,0,1,20,0,0.000,0.000,0.350\n5,0,1,20,0,0.000,0.000,0.350\n0,5,1,20,5,0.000,0.000,0.344\n0,5,1,20,20,0.000,0.000,0.361\n0,0,1,22,0,0.000,0.000,0.236\n5,0,1,22,0,0.000,0.000,0.236\n0,0,1,25,0,0.000,0.000,0.300\n5,0,1,25,0,0.000,0.000,0.251\n0,1,1,25,1,0.000,-0.207,0.232\n0,1,1,25,32,0.000,0.288,0.218\n0,5,1,25,1,0.000,0.152,0.235\n0,5,1,25,6,0.000,0.000,0.495\n0,5,1,25,32,0.000,-0.130,0.214\n0,5,1,25,43,0.000,0.000,0.466\n0,5,1,25,72,0.000,0.000,0.243\n0,0,1,26,0,0.000,0.000,0.450\n5,0,1,26,0,0.000,0.000,0.376\n0,5,1,26,12,0.000,0.000,0.439\n0,5,1,26,71,0.000,0.000,0.472\n0,0,1,34,0,0.000,0.000,0.250\n5,0,1,34,0,0.000,0.000,0.198\n0,1,1,34,36,0.000,0.000,0.187\n0,5,1,34,1,0.000,0.000,0.247\n0,5,1,34,36,0.000,0.000,0.259\n0,0,1,37,0,0.000,0.000,0.200\n5,0,1,37,0,0.000,0.000,0.000\n0,1,1,37,37,0.000,0.449,0.000\n0,5,1,37,37,0.000,-0.420,0.391\n0,6,1,37,37,0.000,0.000,0.150\n0,0,1,39,0,0.000,0.000,0.000\n5,0,1,39,0,0.000,0.000,0.000\n0,1,1,39,63,0.000,-0.080,-0.056\n0,5,1,39,63,0.000,0.000,-0.113\n0,0,1,40,0,0.000,0.000,0.250\n5,0,1,40,0,0.000,0.000,0.297\n0,5,1,40,28,0.000,-0.105,0.000\n0,5,1,40,37,0.000,0.000,0.468\n0,0,1,41,0,0.000,0.600,0.000\n0,1,1,41,32,0.000,1.263,0.000\n0,5,1,41,32,0.000,0.000,-0.106\n0,5,1,41,72,0.000,0.632,0.000\n0,0,1,43,0,0.000,0.000,0.150\n5,0,1,43,0,0.000,0.000,0.297\n0,5,1,43,18,0.357,-0.918,0.000\n0,5,1,43,25,0.000,0.000,0.061\n0,5,1,43,28,-0.249,0.382,0.343\n0,0,1,45,0,0.000,0.000,0.100\n0,5,1,45,32,0.000,0.000,0.125\n0,0,1,46,0,0.000,0.000,-0.500\n0,5,1,46,7,0.000,0.000,-0.540\n0,0,1,54,0,0.000,0.000,0.000\n2,0,1,54,0,0.000,0.000,0.000\n5,0,1,54,0,0.000,0.000,0.000\n0,5,1,54,3,0.000,0.000,-0.315\n0,5,1,54,36,0.000,0.000,0.315\n0,0,1,55,0,0.000,0.000,0.000\n5,0,1,55,0,0.000,0.000,0.000\n0,5,1,55,36,0.000,-0.058,0.084\n0,5,1,55,57,0.000,-0.058,-0.092\n0,0,1,56,0,0.000,0.000,-0.300\n0,1,1,56,36,0.875,0.668,-0.015\n0,1,1,56,57,-0.870,0.775,-0.406\n0,5,1,56,36,-0.958,-0.629,-0.372\n0,5,1,56,57,0.952,-0.715,-0.483\n0,0,1,57,0,0.000,0.000,0.000\n5,0,1,57,0,0.000,0.000,0.000\n0,0,1,58,0,0.000,0.000,0.000\n0,0,1,62,0,0.000,0.000,0.250\n0,5,1,62,18,0.000,0.000,0.270\n0,0,1,63,0,0.000,0.000,0.000\n5,0,1,63,0,0.000,0.000,0.000\n0,0,1,64,0,0.000,0.000,0.000\n5,0,1,64,0,0.000,0.000,0.000\n0,0,1,67,0,0.000,0.000,0.000\n5,0,1,67,0,0.000,0.000,0.000\n0,0,1,68,0,0.000,0.000,0.400\n0,1,1,68,1,-0.117,0.090,0.751\n0,1,1,68,23,0.373,0.153,0.635\n0,1,1,68,32,-0.090,-0.169,0.075\n0,5,1,68,1,0.134,-0.112,0.329\n0,5,1,68,23,-0.361,-0.202,0.560\n0,5,1,68,32,0.072,0.218,0.093\n0,0,1,73,0,0.000,0.000,0.500\n0,5,1,73,32,0.000,0.000,0.509\n0,5,1,73,72,0.000,0.000,0.443\n0,0,1,75,0,0.000,0.000,0.000\n0,0,1,78,0,0.000,0.000,0.000\n0,0,1,80,0,0.000,0.000,0.000\n0,0,1,81,0,0.000,0.000,0.000\n0,0,2,2,0,0.000,12.000,0.000\n1,0,2,2,0,0.000,1.800,0.000\n5,0,2,2,0,0.000,12.000,0.000\n0,1,2,2,1,-0.403,12.000,0.000\n0,1,2,2,2,0.000,12.000,0.000\n1,1,2,2,2,-0.418,2.089,-0.310\n0,1,2,2,5,0.000,12.000,0.000\n1,1,2,2,5,0.412,2.120,0.269\n1,2,2,2,2,0.094,1.621,0.877\n0,2,2,2,5,0.000,12.000,0.000\n1,2,2,2,5,0.317,1.421,-0.870\n0,3,2,2,5,0.000,12.000,0.000\n0,5,2,2,5,0.000,12.000,0.000\n1,5,2,2,5,-0.406,1.767,0.000\n0,5,2,2,6,0.000,12.000,0.000\n0,5,2,2,37,0.000,12.000,0.000\n0,5,2,2,40,0.000,12.000,0.000\n0,5,2,2,41,0.000,12.000,0.000\n0,5,2,2,45,0.000,12.000,0.000\n0,5,2,2,62,0.000,12.000,0.000\n1,0,2,3,0,0.000,2.500,0.000\n1,1,2,3,1,0.136,1.798,0.630\n1,1,2,3,5,0.497,2.405,0.357\n1,1,2,3,6,-0.211,1.925,-0.131\n1,1,2,3,7,-0.401,2.028,-0.318\n1,1,2,3,10,0.000,2.237,-0.610\n1,2,2,3,1,-0.325,1.553,-0.487\n1,2,2,3,5,-0.295,2.024,-0.590\n1,2,2,3,6,-0.143,1.466,0.000\n1,2,2,3,7,0.362,1.978,0.000\n1,2,2,3,9,0.296,1.514,0.481\n1,2,2,3,10,0.000,1.599,0.380\n1,5,2,3,1,0.213,1.728,-0.042\n1,5,2,3,5,-0.208,1.622,0.223\n1,5,2,3,6,0.359,1.539,0.194\n1,5,2,3,7,0.000,2.046,0.000\n1,5,2,3,9,-0.290,1.519,-0.470\n1,5,2,3,10,0.000,1.409,0.254\n1,0,2,4,0,0.000,0.000,0.000\n0,0,2,6,0,0.000,3.100,0.000\n2,0,2,6,0,0.000,3.600,0.000\n5,0,2,6,0,0.000,3.600,0.000\n0,2,2,6,1,-1.953,3.953,-1.055\n0,2,2,6,3,-1.712,2.596,-0.330\n0,2,2,6,29,-0.215,2.810,-0.456\n0,5,2,6,1,1.951,3.936,1.130\n0,5,2,6,3,1.719,2.628,0.360\n0,5,2,6,29,0.216,2.808,0.456\n1,0,2,9,0,0.000,1.800,0.000\n0,0,2,10,0,0.000,6.000,0.000\n2,0,2,10,0,0.000,6.000,0.000\n5,0,2,10,0,0.000,6.000,0.000\n0,0,2,15,0,0.000,1.423,0.000\n2,0,2,15,0,0.000,1.423,0.000\n5,0,2,15,0,0.000,1.423,0.000\n0,0,2,17,0,0.000,1.423,0.000\n0,0,2,18,0,0.000,0.000,0.000\n2,0,2,18,0,0.000,0.000,0.000\n5,0,2,18,0,0.000,0.000,0.000\n0,0,2,19,0,0.000,0.000,0.000\n0,0,2,20,0,0.000,0.000,0.000\n2,0,2,20,0,0.000,0.000,0.000\n0,0,2,22,0,0.000,0.000,0.000\n2,0,2,22,0,0.000,0.000,0.000\n5,0,2,22,0,0.000,0.000,0.000\n0,0,2,25,0,0.000,0.000,0.000\n0,0,2,30,0,0.000,12.000,0.000\n0,0,2,34,0,0.000,0.000,0.000\n2,0,2,34,0,0.000,0.000,0.000\n1,0,2,37,0,0.000,2.000,0.000\n1,1,2,37,37,0.000,2.952,-0.079\n1,2,2,37,37,0.000,1.542,0.434\n1,5,2,37,37,0.000,1.308,-0.357\n1,0,2,39,0,0.000,6.000,0.000\n0,0,2,40,0,0.000,3.700,0.000\n2,0,2,40,0,0.000,3.600,0.000\n5,0,2,40,0,0.000,3.600,0.000\n0,2,2,40,28,0.000,3.305,-0.530\n0,5,2,40,28,0.139,3.241,0.139\n0,0,2,41,0,0.000,1.200,0.000\n2,0,2,41,0,0.000,1.800,0.000\n0,2,2,41,32,0.000,1.235,0.000\n0,5,2,41,32,0.000,1.231,0.000\n0,0,2,43,0,0.000,3.600,0.000\n2,0,2,43,0,0.000,3.600,0.000\n0,0,2,45,0,0.000,2.200,0.000\n2,0,2,45,0,0.000,1.800,0.000\n0,2,2,45,32,0.000,2.212,0.000\n0,5,2,45,32,0.000,2.225,0.000\n0,0,2,46,0,0.000,1.800,0.000\n2,0,2,46,0,0.000,1.800,0.000\n0,0,2,55,0,0.000,4.800,0.000\n0,0,2,56,0,0.000,4.800,0.000\n0,0,2,62,0,0.000,8.000,0.000\n0,2,2,62,23,1.693,7.903,0.532\n0,5,2,62,23,-1.696,7.897,-0.482\n1,0,2,63,0,0.000,1.800,0.000\n1,0,2,64,0,0.000,1.800,0.000\n1,0,2,67,0,0.000,1.800,0.000\n1,0,2,81,0,0.000,4.800,0.000\n1,0,3,3,0,0.000,0.600,0.000\n4,0,3,3,0,0.000,1.800,0.000\n1,1,3,3,1,-0.486,0.714,0.000\n1,1,3,3,6,-0.081,-0.125,0.132\n1,1,3,3,7,1.053,1.327,0.000\n1,5,3,3,6,0.000,0.188,0.436\n1,5,3,3,7,0.000,0.177,-0.412\n1,6,3,3,6,0.269,0.437,0.000\n1,6,3,3,7,-0.495,0.793,-0.318\n1,7,3,3,7,-0.260,1.084,0.193\n0,0,3,6,0,0.000,5.500,0.000\n2,0,3,6,0,0.000,5.500,0.000\n4,0,3,6,0,0.000,3.600,0.000\n5,0,3,6,0,0.000,3.600,0.000\n0,1,3,6,1,-1.244,5.482,0.365\n0,1,3,6,24,-1.166,5.078,-0.545\n0,1,3,6,37,-0.677,5.854,0.521\n2,2,3,6,24,0.256,4.519,0.258\n2,3,3,6,24,1.663,4.073,0.094\n0,5,3,6,1,0.526,5.631,0.691\n0,5,3,6,2,0.159,6.586,0.216\n0,5,3,6,24,-2.285,4.737,0.468\n0,7,3,6,0,0.700,6.500,-0.400\n0,7,3,6,1,0.682,7.184,-0.935\n0,7,3,6,2,-0.168,6.572,-0.151\n0,7,3,6,24,1.662,6.152,-0.058\n0,7,3,6,37,0.635,5.890,-0.446\n2,37,3,6,24,0.000,3.892,-0.094\n0,0,3,9,0,0.000,16.000,0.000\n1,0,3,9,0,0.000,1.800,0.000\n5,0,3,9,0,0.000,12.000,0.000\n0,2,3,9,27,0.000,16.000,0.000\n0,5,3,9,1,0.687,16.152,0.894\n0,5,3,9,27,0.000,16.000,0.000\n0,40,3,9,1,-0.704,18.216,0.000\n0,40,3,9,27,0.000,16.000,0.178\n0,0,3,10,0,0.000,6.000,0.000\n2,0,3,10,0,0.000,6.000,0.000\n4,0,3,10,0,0.000,6.000,0.000\n5,0,3,10,0,0.000,6.000,0.000\n0,1,3,10,1,0.831,6.061,0.522\n0,1,3,10,6,-1.152,8.588,1.511\n0,1,3,10,28,-0.259,5.934,1.326\n2,2,3,10,28,0.000,6.561,0.294\n0,5,3,10,1,-0.195,6.304,1.722\n0,5,3,10,3,-0.705,5.383,0.234\n0,5,3,10,28,-0.417,5.981,0.511\n0,7,3,10,1,-0.491,6.218,0.000\n0,7,3,10,3,0.733,-0.543,-0.163\n0,7,3,10,6,1.234,8.372,-0.539\n0,7,3,10,28,1.168,4.857,-0.341\n0,10,3,10,28,0.000,3.706,1.254\n0,0,3,15,0,0.000,1.423,0.000\n2,0,3,15,0,0.000,1.423,0.000\n4,0,3,15,0,0.000,1.423,0.000\n5,0,3,15,0,0.000,1.423,0.000\n0,0,3,17,0,0.000,1.423,0.000\n5,0,3,17,0,0.000,1.423,0.000\n0,0,3,18,0,0.000,0.000,0.000\n2,0,3,18,0,0.000,0.000,0.000\n0,0,3,20,0,0.000,0.000,-0.300\n2,0,3,20,0,0.000,0.000,0.000\n4,0,3,20,0,0.000,0.000,-0.300\n5,0,3,20,0,0.000,0.000,0.000\n0,7,3,20,0,0.000,0.400,0.400\n0,7,3,20,5,0.000,0.000,-0.131\n0,7,3,20,20,0.000,0.000,0.000\n0,20,3,20,5,0.000,0.000,0.085\n0,20,3,20,20,0.000,0.000,0.000\n0,0,3,22,0,0.000,0.000,0.000\n2,0,3,22,0,0.000,0.000,0.000\n4,0,3,22,0,0.000,0.000,0.000\n5,0,3,22,0,0.000,0.000,0.000\n0,7,3,22,0,0.000,0.400,0.400\n0,0,3,25,0,0.000,0.000,0.000\n2,0,3,25,0,0.000,0.000,0.000\n1,0,3,30,0,0.000,1.800,0.000\n4,0,3,30,0,0.000,1.800,0.000\n1,0,3,37,0,0.000,2.500,0.000\n4,0,3,37,0,0.000,1.800,0.000\n1,1,3,37,37,0.000,2.428,0.000\n1,6,3,37,37,0.000,1.743,0.000\n1,7,3,37,37,0.000,2.256,0.000\n1,43,3,37,37,-0.241,3.385,-0.838\n1,0,3,39,0,0.000,5.500,0.000\n0,0,3,40,0,0.000,3.900,0.000\n2,0,3,40,0,0.000,3.600,0.000\n5,0,3,40,0,0.000,3.600,0.000\n0,5,3,40,28,-1.355,3.964,0.800\n0,9,3,40,28,1.045,3.785,-0.291\n0,40,3,40,28,0.508,2.985,0.809\n0,0,3,41,0,0.000,1.800,0.000\n2,0,3,41,0,0.000,1.800,0.000\n0,0,3,43,0,0.000,4.500,0.000\n2,0,3,43,0,0.000,3.600,0.000\n4,0,3,43,0,0.000,3.600,0.000\n5,0,3,43,0,0.000,3.600,0.000\n0,1,3,43,18,1.712,3.309,0.233\n0,1,3,43,28,-0.414,4.168,-0.875\n0,7,3,43,18,-0.880,5.091,-0.129\n0,7,3,43,28,0.536,5.276,-0.556\n2,37,3,43,18,-0.701,4.871,1.225\n2,37,3,43,28,-0.086,5.073,0.878\n0,0,3,45,0,0.000,1.800,0.000\n2,0,3,45,0,0.000,1.800,0.000\n0,0,3,48,0,0.000,0.000,0.892\n0,0,3,51,0,0.000,13.500,0.000\n0,1,3,51,52,0.000,13.549,0.000\n0,0,3,54,0,0.000,8.000,0.000\n1,0,3,54,0,0.000,2.500,0.000\n5,0,3,54,0,0.000,12.000,0.000\n0,5,3,54,1,0.000,8.000,0.000\n0,5,3,54,36,0.000,8.000,0.000\n0,0,3,55,0,0.000,4.800,0.000\n2,0,3,55,0,0.000,4.800,0.000\n0,0,3,56,0,0.000,4.800,0.000\n2,0,3,56,0,0.000,4.800,0.000\n1,0,3,57,0,0.000,2.500,0.000\n1,0,3,58,0,0.000,4.800,0.000\n0,0,3,62,0,0.000,3.600,0.000\n2,0,3,62,0,0.000,3.600,0.000\n5,0,3,62,0,0.000,3.600,0.000\n1,0,3,63,0,0.000,2.500,0.000\n1,0,3,64,0,0.000,2.500,0.000\n0,0,3,67,0,0.000,12.000,0.000\n0,0,3,74,0,0.000,19.000,0.000\n0,1,3,74,7,0.000,19.349,0.000\n0,0,3,75,0,0.000,19.000,0.000\n0,1,3,75,71,0.000,18.751,0.000\n1,0,3,78,0,0.000,2.500,0.000\n1,0,3,80,0,0.000,2.500,0.000\n0,0,6,6,0,0.000,-2.000,0.000\n5,0,6,6,0,0.000,-2.000,0.000\n0,0,6,8,0,0.900,-1.100,-0.500\n5,0,6,8,0,0.000,0.000,0.274\n0,21,6,8,1,0.261,-0.330,-0.542\n0,21,6,8,23,1.503,-1.853,-0.476\n0,0,6,9,0,0.000,3.600,0.000\n5,0,6,9,0,0.000,3.600,0.000\n0,0,6,10,0,1.200,0.500,-1.000\n0,21,6,10,1,0.829,0.000,-0.730\n0,21,6,10,3,0.675,-0.185,-1.053\n0,0,6,15,0,0.000,-4.000,0.000\n0,0,6,17,0,0.000,1.423,0.000\n5,0,6,17,0,0.000,1.423,0.000\n0,0,6,18,0,0.000,0.000,0.100\n5,0,6,18,0,0.000,0.000,0.103\n0,33,6,18,1,-0.520,-0.471,-0.267\n0,33,6,18,6,-1.623,0.204,0.438\n0,33,6,18,32,1.616,0.425,0.191\n0,0,6,19,0,0.000,0.000,0.150\n5,0,6,19,0,0.000,0.000,0.165\n0,21,6,19,1,-0.620,-0.329,0.303\n0,21,6,19,5,0.683,0.220,0.000\n0,0,6,20,0,0.000,0.000,0.400\n4,0,6,20,0,0.000,0.000,0.217\n5,0,6,20,0,0.000,0.000,0.217\n0,20,6,20,5,0.000,0.000,-0.079\n4,20,6,20,20,0.000,0.000,0.000\n0,0,6,22,0,0.000,0.000,0.217\n0,0,6,25,0,0.000,0.000,0.650\n5,0,6,25,0,0.000,0.000,0.231\n0,1,6,25,1,-1.704,-0.452,0.556\n0,1,6,25,6,0.000,0.000,0.777\n0,1,6,25,32,1.205,0.914,0.612\n0,24,6,25,6,-3.209,-7.622,1.065\n0,24,6,25,32,-5.891,-3.332,0.290\n0,0,6,26,0,0.000,0.000,0.346\n0,0,6,30,0,0.000,3.600,0.000\n2,0,6,30,0,0.000,3.600,0.000\n0,0,6,37,0,0.000,3.200,0.000\n5,0,6,37,0,0.000,3.600,0.000\n0,1,6,37,37,0.000,4.382,0.000\n0,3,6,37,37,0.000,2.576,0.000\n0,29,6,37,37,0.000,2.801,0.000\n0,0,6,39,0,0.000,0.000,0.000\n0,0,6,40,0,0.000,0.000,0.274\n0,0,6,41,0,0.000,3.600,0.000\n0,0,6,43,0,0.000,0.000,0.274\n0,0,6,45,0,0.000,6.000,0.000\n0,1,6,45,32,0.000,6.208,0.000\n0,0,6,54,0,0.000,3.600,0.000\n0,0,6,55,0,0.000,3.600,0.000\n0,0,6,57,0,0.000,3.600,0.000\n0,0,6,58,0,0.000,3.600,0.000\n0,0,6,63,0,0.000,3.600,0.000\n0,0,6,64,0,0.000,3.600,0.000\n0,0,8,8,0,0.000,0.000,0.375\n5,0,8,8,0,0.000,0.000,0.375\n0,0,8,9,0,0.000,3.600,0.000\n5,0,8,9,0,0.000,3.600,0.000\n0,0,8,10,0,0.000,0.000,0.000\n4,0,8,10,0,0.000,0.000,0.000\n0,0,8,15,0,0.000,0.000,0.424\n0,0,8,17,0,0.000,1.423,0.000\n4,0,8,17,0,0.000,1.423,0.000\n5,0,8,17,0,0.000,1.423,0.000\n0,0,8,19,0,0.000,0.000,0.225\n0,0,8,20,0,0.000,0.000,0.350\n4,0,8,20,0,0.000,0.000,0.300\n5,0,8,20,0,0.000,0.000,0.297\n0,20,8,20,5,0.000,0.120,0.472\n4,20,8,20,20,0.000,-0.097,0.200\n0,23,8,20,5,-0.101,-0.324,0.371\n0,23,8,20,20,0.107,0.253,0.151\n0,0,8,22,0,0.000,0.000,0.297\n0,0,8,25,0,0.000,0.000,0.316\n5,0,8,25,0,0.000,0.000,0.316\n0,0,8,26,0,0.000,0.000,0.474\n5,0,8,26,0,0.000,0.000,0.474\n0,0,8,34,0,0.000,0.000,0.250\n0,0,8,39,0,0.000,0.000,0.000\n0,0,8,40,0,0.000,0.000,0.375\n0,0,8,43,0,0.000,0.000,0.375\n0,0,8,45,0,0.000,3.600,0.000\n0,0,8,46,0,0.000,3.600,0.000\n0,0,8,55,0,0.000,3.600,0.000\n0,0,8,56,0,0.000,3.600,0.000\n0,0,9,9,0,0.000,12.000,0.000\n1,0,9,9,0,0.000,1.800,0.000\n5,0,9,9,0,0.000,12.000,0.000\n0,0,9,10,0,0.000,6.000,0.000\n5,0,9,10,0,0.000,6.000,0.000\n0,0,9,15,0,0.000,1.423,0.000\n0,0,9,18,0,0.000,0.000,0.000\n0,0,9,19,0,0.000,0.000,0.000\n0,0,9,20,0,0.000,0.000,0.000\n0,0,9,25,0,0.000,0.000,0.000\n0,0,9,34,0,0.000,0.000,0.000\n5,0,9,34,0,0.000,0.000,0.000\n1,0,9,37,0,0.000,1.800,0.000\n1,0,9,39,0,0.000,6.000,0.000\n0,0,9,40,0,0.000,3.600,0.000\n0,0,9,41,0,0.000,4.800,0.000\n0,0,9,45,0,0.000,1.800,0.000\n0,0,9,54,0,0.000,12.000,0.000\n0,0,9,55,0,0.000,4.800,0.000\n0,0,9,56,0,0.000,4.800,0.000\n1,0,9,57,0,0.000,1.800,0.000\n0,0,9,62,0,0.000,3.600,0.000\n1,0,9,63,0,0.000,1.800,0.000\n1,0,9,64,0,0.000,1.800,0.000\n0,0,9,67,0,0.000,12.000,0.000\n1,0,9,78,0,0.000,1.800,0.000\n1,0,9,81,0,0.000,4.800,0.000\n0,0,10,10,0,0.000,0.000,0.000\n5,0,10,10,0,0.000,0.000,0.000\n0,0,10,15,0,0.000,0.000,0.000\n0,0,10,17,0,0.000,4.743,0.000\n0,0,10,20,0,0.000,0.000,0.000\n4,0,10,20,0,0.000,0.000,0.000\n5,0,10,20,0,0.000,0.000,0.000\n0,0,10,22,0,0.000,0.000,0.000\n0,0,10,25,0,0.000,0.000,0.000\n0,0,10,26,0,0.000,0.000,0.000\n5,0,10,26,0,0.000,0.000,0.000\n0,0,10,34,0,0.000,0.000,0.000\n0,0,10,37,0,0.000,6.000,0.000\n0,0,10,39,0,0.000,0.000,0.000\n0,0,10,40,0,0.000,0.000,0.000\n5,0,10,40,0,0.000,0.000,0.000\n0,0,10,41,0,0.000,6.000,0.000\n0,0,10,45,0,0.000,6.000,0.000\n0,0,10,63,0,0.000,6.000,0.000\n0,0,10,64,0,0.000,6.000,0.000\n0,0,15,15,0,-1.400,-8.300,1.000\n5,0,15,15,0,0.000,-8.000,0.000\n0,1,15,15,1,-1.663,-8.408,1.433\n0,1,15,15,71,-1.088,-8.245,0.411\n0,0,15,18,0,0.000,0.000,0.160\n0,0,15,19,0,0.000,0.000,0.255\n5,0,15,19,0,0.000,0.000,0.255\n0,0,15,20,0,0.000,0.000,0.336\n4,0,15,20,0,0.000,0.000,0.336\n0,0,15,22,0,0.000,0.000,0.336\n0,0,15,25,0,0.000,0.000,0.358\n4,0,15,25,0,0.000,0.000,0.358\n0,0,15,26,0,0.000,0.000,0.537\n0,0,15,30,0,0.000,1.423,0.000\n4,0,15,30,0,0.000,1.423,0.000\n0,0,15,37,0,0.000,1.300,0.000\n5,0,15,37,0,0.000,1.423,0.000\n0,1,15,37,37,0.000,2.177,0.000\n0,71,15,37,37,0.000,0.505,0.333\n0,0,15,40,0,0.000,0.000,0.424\n0,0,15,43,0,0.000,0.000,0.424\n0,0,15,57,0,0.000,1.423,0.000\n0,0,15,63,0,0.000,1.423,0.000\n0,0,15,64,0,0.000,1.423,0.000\n0,0,17,20,0,0.000,0.000,0.000\n4,0,17,20,0,0.000,0.000,0.000\n5,0,17,20,0,0.000,0.000,0.000\n0,0,17,22,0,0.000,0.000,0.000\n0,0,17,37,0,0.000,1.423,0.000\n0,0,17,43,0,0.000,3.795,0.000\n0,0,18,20,0,0.000,0.000,0.112\n4,0,18,20,0,0.000,0.000,0.112\n5,0,18,20,0,0.000,0.000,0.112\n0,0,18,22,0,0.000,0.000,0.112\n0,0,18,37,0,0.000,-1.200,-0.300\n0,32,18,37,37,-0.173,-0.965,-0.610\n0,39,18,37,37,0.000,-0.760,0.227\n0,43,18,37,37,0.228,-1.741,-0.371\n0,0,18,39,0,0.000,0.000,0.500\n0,32,18,39,63,0.000,0.687,0.680\n0,37,18,39,63,0.000,-0.513,0.357\n0,0,18,43,0,0.000,0.000,0.350\n4,0,18,43,0,0.000,0.000,0.141\n5,0,18,43,0,0.000,0.000,0.141\n0,1,18,43,1,-0.914,-0.482,0.179\n0,1,18,43,3,-0.392,-2.724,0.312\n0,1,18,43,28,-1.508,-1.816,-0.175\n0,1,18,43,37,0.823,-1.220,-0.770\n0,32,18,43,1,1.588,1.499,1.410\n0,32,18,43,3,0.653,0.254,0.000\n0,32,18,43,28,0.528,0.342,0.000\n0,32,18,43,37,0.812,1.513,1.266\n0,37,18,43,1,-1.139,-0.703,1.088\n0,37,18,43,28,-2.014,-1.646,-2.068\n0,37,18,43,37,-1.519,-0.328,1.437\n0,43,18,43,28,3.011,-1.405,2.038\n0,0,18,48,0,0.000,0.000,0.400\n0,1,18,48,28,1.767,1.606,0.408\n0,32,18,48,28,-1.463,-2.548,0.310\n0,0,18,55,0,0.000,0.000,0.000\n0,0,18,58,0,0.000,0.000,0.000\n0,0,18,62,0,0.000,0.000,0.500\n0,1,18,62,1,-0.403,-0.273,0.440\n0,32,18,62,1,0.291,0.385,0.582\n0,0,18,63,0,0.000,0.000,0.000\n0,0,18,64,0,0.000,0.000,0.000\n0,0,18,80,0,0.000,0.000,0.000\n0,0,19,20,0,0.000,0.000,0.179\n4,0,19,20,0,0.000,0.000,0.179\n0,0,19,37,0,0.000,0.000,0.000\n0,0,19,40,0,0.000,0.000,0.225\n0,0,19,63,0,0.000,0.000,0.000\n0,0,19,75,0,0.000,0.000,0.000\n0,0,20,20,0,0.000,0.000,0.200\n4,0,20,20,0,0.000,0.000,0.000\n5,0,20,20,0,0.000,0.000,0.236\n0,1,20,20,5,0.067,0.081,0.347\n0,1,20,20,20,-0.063,-0.064,0.140\n0,3,20,20,5,0.000,0.000,0.083\n0,3,20,20,20,0.000,0.000,0.000\n0,5,20,20,5,0.000,0.000,0.424\n0,5,20,20,6,0.000,0.000,-0.080\n0,5,20,20,8,0.000,0.127,0.450\n0,5,20,20,12,-0.072,-0.269,0.439\n0,5,20,20,20,-0.057,0.000,0.307\n4,6,20,20,20,0.000,0.000,0.000\n4,8,20,20,20,0.000,-0.091,0.192\n0,12,20,20,20,0.077,0.202,0.183\n4,20,20,20,20,0.000,0.000,0.000\n0,0,20,22,0,0.000,0.000,0.236\n4,0,20,22,0,0.000,0.000,0.236\n0,0,20,25,0,0.000,0.000,0.251\n4,0,20,25,0,0.000,0.000,0.251\n0,0,20,26,0,0.000,0.000,0.376\n4,0,20,26,0,0.000,0.000,0.376\n5,0,20,26,0,0.000,0.000,0.376\n0,0,20,30,0,0.000,0.000,0.000\n2,0,20,30,0,0.000,0.000,0.000\n4,0,20,30,0,0.000,0.000,0.000\n0,0,20,30,30,0.000,0.000,-0.500\n0,0,20,34,0,0.000,0.000,0.198\n4,0,20,34,0,0.000,0.000,0.198\n0,0,20,37,0,0.000,0.000,0.000\n4,0,20,37,0,0.000,0.000,0.000\n0,0,20,40,0,0.000,0.000,0.297\n0,0,20,41,0,0.000,0.000,0.000\n0,0,20,43,0,0.000,0.000,0.297\n4,0,20,43,0,0.000,0.000,0.297\n0,0,20,45,0,0.000,0.000,0.000\n0,0,22,22,0,0.000,0.000,0.236\n4,0,22,22,0,0.000,0.000,0.236\n5,0,22,22,0,0.000,0.000,0.236\n0,0,22,30,0,0.000,0.000,0.000\n4,0,22,30,0,0.000,0.000,0.000\n0,0,22,34,0,0.000,0.000,0.198\n0,0,22,37,0,0.000,0.000,0.000\n0,0,22,40,0,0.000,0.000,0.297\n0,0,22,41,0,0.000,0.000,0.000\n0,0,22,43,0,0.000,0.000,0.297\n5,0,22,43,0,0.000,0.000,0.297\n0,0,22,45,0,0.000,0.000,0.000\n0,0,25,25,0,0.000,0.000,0.267\n0,0,25,37,0,0.000,0.000,0.000\n5,0,25,37,0,0.000,0.000,0.000\n0,0,25,39,0,0.000,0.000,0.000\n0,0,25,40,0,0.000,0.000,0.316\n5,0,25,40,0,0.000,0.000,0.316\n0,0,25,43,0,0.000,0.000,0.250\n0,1,25,43,1,-2.686,-1.512,0.591\n0,1,25,43,28,-3.730,-0.531,0.000\n0,32,25,43,1,2.108,1.896,0.965\n0,32,25,43,28,2.977,0.732,-0.502\n0,0,25,57,0,0.000,0.000,0.000\n0,0,25,63,0,0.000,0.000,0.000\n0,0,26,26,0,0.000,0.000,0.600\n5,0,26,26,0,0.000,0.000,0.600\n0,0,26,34,0,0.000,0.000,0.316\n5,0,26,34,0,0.000,0.000,0.316\n0,0,26,37,0,0.000,1.423,0.000\n0,0,26,40,0,0.000,0.000,0.474\n0,0,30,30,0,0.000,12.000,0.000\n1,0,30,30,0,0.000,1.800,0.000\n4,0,30,30,0,0.000,1.800,0.000\n0,0,30,40,0,0.000,3.600,0.000\n1,0,30,67,0,0.000,1.800,0.000\n0,0,34,37,0,0.000,0.000,0.000\n0,0,34,43,0,0.000,0.000,0.250\n0,0,37,37,0,0.000,7.000,0.000\n1,0,37,37,0,0.000,2.000,0.000\n4,0,37,37,0,0.000,6.000,0.000\n5,0,37,37,0,0.000,6.000,0.000\n0,1,37,37,5,0.000,7.000,0.000\n0,1,37,37,37,0.000,7.000,0.000\n0,2,37,37,5,0.000,7.000,0.000\n0,2,37,37,37,0.000,7.000,0.000\n0,3,37,37,5,0.000,7.000,0.000\n0,3,37,37,37,0.000,7.000,0.000\n0,5,37,37,5,0.000,7.000,0.000\n0,5,37,37,6,0.000,7.000,0.000\n0,5,37,37,15,0.000,7.000,0.000\n0,5,37,37,18,0.000,7.000,0.000\n0,5,37,37,37,0.000,7.000,0.000\n0,5,37,37,40,0.000,7.000,0.000\n0,5,37,37,43,0.000,7.000,0.000\n0,6,37,37,37,0.000,7.000,0.000\n0,15,37,37,37,0.000,7.000,0.000\n0,18,37,37,37,0.000,7.000,0.000\n0,37,37,37,37,0.000,7.000,0.000\n0,37,37,37,40,0.000,7.000,0.000\n0,37,37,37,43,0.000,7.000,0.000\n0,0,37,38,0,0.000,7.000,0.000\n0,0,37,39,0,0.000,3.600,0.000\n1,0,37,39,0,0.000,6.000,0.000\n0,0,37,40,0,0.000,4.000,0.000\n5,0,37,40,0,0.000,3.600,0.000\n0,37,37,40,1,0.000,4.095,0.382\n0,37,37,40,28,0.698,2.542,3.072\n0,0,37,41,0,0.000,1.800,0.000\n0,0,37,43,0,0.000,2.000,1.800\n5,0,37,43,0,0.000,3.600,0.000\n0,37,37,43,18,0.372,2.284,2.034\n0,37,37,43,28,0.000,1.694,1.508\n0,0,37,45,0,0.000,1.800,0.000\n0,0,37,46,0,0.000,1.800,0.000\n0,0,37,55,0,0.000,4.800,0.000\n0,0,37,56,0,0.000,4.800,0.000\n1,0,37,57,0,0.000,1.800,0.000\n0,0,37,58,0,0.000,6.000,0.000\n1,0,37,58,0,0.000,4.800,0.000\n0,0,37,62,0,0.000,3.600,0.000\n0,0,37,63,0,0.000,7.000,0.000\n1,0,37,63,0,0.000,1.800,0.000\n0,0,37,64,0,0.000,7.000,0.000\n1,0,37,64,0,0.000,1.800,0.000\n1,0,37,67,0,0.000,1.800,0.000\n0,0,37,69,0,0.000,7.000,0.000\n0,0,37,78,0,0.000,6.000,0.000\n0,0,37,81,0,0.000,6.000,0.000\n1,0,37,81,0,0.000,4.800,0.000\n0,0,38,38,0,0.000,7.000,0.000\n0,0,38,58,0,0.000,7.000,0.000\n0,0,38,63,0,0.000,7.000,0.000\n0,0,38,64,0,0.000,7.000,0.000\n0,0,38,69,0,0.000,6.000,0.000\n0,0,38,78,0,0.000,6.000,0.000\n0,0,39,40,0,0.000,0.000,0.000\n0,0,39,45,0,0.000,6.000,0.000\n0,0,39,63,0,0.000,4.000,0.000\n1,0,39,63,0,0.000,6.000,0.000\n5,0,39,63,0,0.000,3.600,0.000\n0,1,39,63,5,0.000,4.000,0.000\n0,1,39,63,64,0.000,4.000,0.000\n0,18,39,63,5,0.000,4.000,0.000\n0,18,39,63,64,0.000,4.000,0.000\n0,63,39,63,5,0.000,4.000,0.000\n0,63,39,63,64,0.000,4.000,0.000\n0,0,39,64,0,0.000,3.600,0.000\n1,0,39,64,0,0.000,6.000,0.000\n0,0,39,65,0,0.000,4.000,0.000\n0,0,39,78,0,0.000,3.600,0.000\n0,0,40,40,0,0.000,0.000,0.375\n0,0,40,45,0,0.000,3.600,0.000\n0,0,40,46,0,0.000,3.600,0.000\n0,0,40,54,0,0.000,3.600,0.000\n2,0,40,54,0,0.000,3.600,0.000\n0,0,40,63,0,0.000,3.600,0.000\n0,0,40,64,0,0.000,3.600,0.000\n0,0,40,78,0,0.000,3.600,0.000\n0,0,41,41,0,0.000,1.800,0.000\n0,0,41,55,0,0.000,4.800,0.000\n0,0,41,62,0,0.000,3.600,0.000\n0,0,41,80,0,0.000,1.800,0.000\n0,0,43,43,0,0.000,0.000,0.375\n0,0,43,45,0,0.000,3.600,0.000\n0,0,43,64,0,0.000,3.600,0.000\n0,0,44,57,0,0.000,7.000,0.000\n0,0,44,63,0,0.000,7.000,0.000\n0,0,44,65,0,0.000,7.000,0.000\n0,0,44,78,0,0.000,2.846,0.000\n0,0,44,80,0,0.000,2.846,0.000\n0,0,45,63,0,0.000,1.800,0.000\n0,0,45,64,0,0.000,1.800,0.000\n0,0,45,78,0,0.000,1.800,0.000\n0,0,55,57,0,0.000,10.000,0.000\n2,0,55,57,0,0.000,4.800,0.000\n5,0,55,57,0,0.000,4.800,0.000\n0,1,55,57,5,0.423,12.064,0.090\n0,1,55,57,55,-0.428,12.044,0.000\n0,36,55,57,5,-0.268,8.077,-0.806\n0,36,55,57,55,0.273,8.025,0.692\n0,0,55,62,0,0.000,3.600,0.000\n0,0,55,64,0,0.000,4.800,0.000\n0,0,55,80,0,0.000,4.800,0.000\n0,0,56,57,0,0.000,6.000,0.000\n0,1,56,57,56,0.000,6.886,-0.161\n0,36,56,57,56,0.000,4.688,0.107\n0,0,56,63,0,0.000,4.800,0.000\n0,0,56,80,0,0.000,4.800,0.000\n1,0,57,63,0,0.000,1.800,0.000\n1,0,57,64,0,0.000,1.800,0.000\n0,0,58,63,0,0.000,6.000,0.000\n0,0,58,64,0,0.000,6.000,0.000\n0,0,59,63,0,0.000,7.000,0.000\n0,0,59,65,0,0.000,7.000,0.000\n0,0,59,78,0,0.000,3.600,0.000\n0,0,59,80,0,0.000,3.600,0.000\n0,0,59,82,0,0.000,3.600,0.000\n0,0,62,63,0,0.000,3.600,0.000\n0,0,62,64,0,0.000,3.600,0.000\n1,0,63,63,0,0.000,1.800,0.000\n0,0,63,64,0,0.000,7.000,0.000\n0,5,63,64,5,0.000,7.000,0.000\n0,5,63,64,64,0.000,7.000,0.000\n0,39,63,64,5,0.000,7.000,0.000\n0,39,63,64,64,0.000,7.000,0.000\n0,0,63,66,0,0.000,7.000,0.000\n0,0,63,78,0,0.000,6.000,0.000\n0,0,63,81,0,0.000,6.000,0.000\n0,0,64,64,0,0.000,7.000,0.000\n1,0,64,64,0,0.000,1.800,0.000\n0,5,64,64,5,0.000,7.000,0.000\n0,5,64,64,63,0.000,7.000,0.000\n0,63,64,64,63,0.000,7.000,0.000\n0,0,64,65,0,0.000,7.000,0.000\n0,0,64,66,0,0.000,7.000,0.000\n0,0,64,78,0,0.000,6.000,0.000\n0,0,64,81,0,0.000,6.000,0.000\n5,0,64,81,0,0.000,6.000,0.000\n0,0,64,82,0,0.000,6.000,0.000\n0,0,65,66,0,0.000,7.000,0.000\n0,0,65,78,0,0.000,6.000,0.000\n0,0,65,81,0,0.000,6.000,0.000\n0,0,65,82,0,0.000,6.000,0.000\n0,0,66,66,0,0.000,7.000,0.000\n0,0,66,78,0,0.000,6.000,0.000\n0,0,66,81,0,0.000,6.000,0.000\n0,0,67,67,0,0.000,12.000,0.000\n5,0,67,67,0,0.000,12.000,0.000\n0,0,76,76,0,0.000,3.600,0.000\n0,0,76,78,0,0.000,3.600,0.000\n0,0,78,78,0,0.000,7.000,0.000\n0,0,78,79,0,0.000,6.000,0.000\n0,0,78,81,0,0.000,4.000,0.000\n0,0,79,79,0,0.000,6.000,0.000\n0,0,79,81,0,0.000,6.000,0.000\n0,0,80,81,0,0.000,4.000,0.000\n':jl.equals_Ljava_lang_Object__Z__devirtual$_2(tableSet, 'MMFF94s+')?'930\nint,int,int,int,int,float,float,float\n0,0,1,1,0,0.000,0.000,0.300\n5,0,1,1,0,0.200,-0.800,1.500\n0,1,1,1,1,0.103,0.681,0.332\n5,1,1,1,1,0.144,-0.547,1.126\n0,1,1,1,2,-0.295,0.438,0.584\n0,1,1,1,3,0.066,-0.156,0.143\n0,1,1,1,5,0.639,-0.630,0.264\n0,1,1,1,6,-0.688,1.757,0.477\n5,1,1,1,6,0.000,0.000,0.054\n0,1,1,1,8,-1.420,-0.092,1.101\n5,1,1,1,8,0.000,-0.158,0.323\n0,1,1,1,11,0.593,0.662,1.120\n0,1,1,1,12,-0.678,0.417,0.624\n0,1,1,1,15,-0.714,0.698,0.000\n0,1,1,1,34,-0.647,0.550,0.590\n0,2,1,1,5,0.321,-0.411,0.144\n0,3,1,1,3,0.443,0.000,-1.140\n0,3,1,1,5,-0.256,0.058,0.000\n0,3,1,1,6,-0.679,-0.029,0.000\n0,5,1,1,5,0.284,-1.386,0.314\n0,5,1,1,6,-0.654,1.072,0.279\n0,5,1,1,8,-0.744,-1.235,0.337\n0,5,1,1,10,0.000,0.000,0.418\n0,5,1,1,11,0.000,0.516,0.291\n0,5,1,1,12,0.678,-0.602,0.398\n0,5,1,1,15,1.142,-0.644,0.367\n0,5,1,1,25,0.000,0.000,0.295\n0,5,1,1,34,0.692,-0.530,0.278\n0,5,1,1,37,0.000,0.000,0.389\n0,5,1,1,39,0.000,0.000,0.278\n0,5,1,1,41,0.000,0.000,-0.141\n0,5,1,1,56,0.000,0.000,0.324\n0,5,1,1,68,0.000,0.000,0.136\n0,6,1,1,6,0.408,1.397,0.961\n5,6,1,1,6,0.313,-1.035,1.631\n0,8,1,1,8,1.055,0.834,0.000\n0,11,1,1,11,-0.387,-0.543,1.405\n0,12,1,1,12,0.000,0.000,0.893\n0,15,1,1,15,-0.177,0.000,0.049\n0,0,1,2,0,0.000,0.000,0.000\n2,0,1,2,0,0.000,0.000,0.000\n5,0,1,2,0,0.000,0.000,0.000\n0,0,1,2,2,0.000,0.000,-0.650\n5,0,1,2,2,0.000,0.000,-0.650\n0,1,1,2,1,0.419,0.296,0.282\n0,1,1,2,2,-0.494,0.274,-0.630\n0,1,1,2,5,0.075,0.000,0.358\n0,2,1,2,2,-0.293,0.115,-0.508\n0,2,1,2,5,0.301,0.104,0.507\n0,3,1,2,1,0.565,-0.554,0.234\n0,3,1,2,2,-0.577,-0.482,-0.427\n0,3,1,2,5,0.082,0.000,0.123\n0,5,1,2,1,0.000,-0.184,0.220\n0,5,1,2,2,0.501,-0.410,-0.535\n2,5,1,2,2,0.000,0.000,0.055\n2,5,1,2,3,0.000,0.000,-0.108\n0,5,1,2,5,-0.523,-0.228,0.208\n2,5,1,2,37,0.000,0.000,0.000\n0,6,1,2,1,-0.467,0.000,0.490\n0,6,1,2,2,0.425,0.168,-0.875\n0,6,1,2,5,0.000,0.136,0.396\n0,8,1,2,1,-0.504,0.371,0.557\n0,8,1,2,2,0.541,0.539,-1.009\n0,8,1,2,5,0.000,0.204,0.464\n0,0,1,3,0,0.000,0.400,0.300\n2,0,1,3,0,0.000,0.500,0.350\n5,0,1,3,0,0.000,0.000,0.000\n0,0,1,3,1,0.000,0.000,0.550\n0,0,1,3,5,0.000,0.200,0.700\n0,0,1,3,7,0.000,0.400,0.400\n0,1,1,3,1,0.103,0.177,0.545\n0,1,1,3,5,-0.072,0.316,0.674\n0,1,1,3,6,-0.117,-0.333,0.202\n0,1,1,3,7,0.825,0.139,0.325\n0,1,1,3,10,-0.763,1.244,0.986\n0,2,1,3,5,0.663,-0.167,0.426\n0,2,1,3,7,-0.758,0.112,0.563\n0,5,1,3,1,-0.073,0.085,0.531\n2,5,1,3,2,0.000,0.000,0.115\n2,5,1,3,3,0.000,0.000,0.446\n0,5,1,3,5,-0.822,0.501,1.008\n0,5,1,3,6,0.000,-0.624,0.330\n0,5,1,3,7,0.659,-1.407,0.308\n0,5,1,3,10,-0.687,1.244,0.136\n2,5,1,3,37,0.000,0.000,0.056\n0,5,1,3,43,0.000,1.027,0.360\n0,5,1,3,51,0.000,1.543,0.350\n0,5,1,3,53,0.000,0.501,0.000\n0,5,1,3,74,0.000,0.513,-0.344\n0,5,1,3,75,0.000,0.511,-0.186\n0,6,1,3,6,0.447,0.652,0.318\n0,6,1,3,7,-0.395,0.730,-0.139\n0,10,1,3,7,0.530,2.905,2.756\n0,10,1,3,10,0.465,-0.241,1.850\n0,0,1,4,0,0.000,0.000,0.000\n0,0,1,6,0,0.000,0.000,0.200\n5,0,1,6,0,0.000,-0.200,0.400\n0,1,1,6,1,-0.681,0.755,0.755\n5,1,1,6,1,0.000,0.243,-0.596\n0,1,1,6,3,-0.547,0.000,0.320\n0,1,1,6,21,0.000,0.270,0.237\n0,2,1,6,21,0.102,0.460,-0.128\n0,3,1,6,21,-1.652,-1.660,0.283\n0,5,1,6,1,0.571,0.319,0.570\n0,5,1,6,2,0.000,0.000,0.306\n0,5,1,6,3,0.572,0.000,-0.304\n0,5,1,6,21,0.596,-0.276,0.346\n0,5,1,6,25,0.000,0.000,0.061\n0,5,1,6,37,0.000,0.000,0.106\n0,5,1,6,45,0.000,0.000,-0.174\n0,6,1,6,1,0.229,-0.710,0.722\n5,6,1,6,1,0.000,0.000,0.040\n0,6,1,6,21,1.488,-3.401,-0.320\n0,37,1,6,21,0.712,1.320,-0.507\n0,0,1,8,0,0.000,-0.300,0.500\n5,0,1,8,0,0.000,0.000,0.297\n0,1,1,8,1,-0.439,0.786,0.272\n5,1,1,8,1,0.115,-0.390,0.658\n0,1,1,8,6,-0.608,0.339,1.496\n0,1,1,8,23,-0.428,0.323,0.280\n0,2,1,8,23,0.594,-0.409,0.155\n0,5,1,8,1,0.393,-0.385,0.562\n0,5,1,8,6,0.598,-0.158,0.399\n0,5,1,8,23,-0.152,-0.440,0.357\n0,0,1,9,0,0.000,0.000,0.000\n5,0,1,9,0,0.000,0.000,0.000\n0,5,1,9,3,0.204,-0.335,-0.352\n0,5,1,9,53,0.000,0.000,0.097\n0,0,1,10,0,0.000,0.000,0.300\n5,0,1,10,0,0.000,0.000,0.000\n0,0,1,10,3,0.000,0.000,1.000\n0,1,1,10,3,-0.884,0.578,0.818\n0,1,1,10,6,0.000,-0.379,0.565\n0,1,1,10,28,0.750,-0.404,0.369\n0,3,1,10,3,3.219,-2.699,1.875\n0,3,1,10,28,0.207,0.461,0.324\n0,5,1,10,1,0.000,0.000,0.706\n0,5,1,10,3,-2.334,1.517,-0.065\n0,5,1,10,6,0.000,0.688,0.665\n0,5,1,10,28,-0.982,-0.207,0.166\n0,0,1,15,0,0.000,0.000,0.400\n5,0,1,15,0,0.000,0.000,0.336\n0,1,1,15,1,-1.047,0.170,0.398\n0,1,1,15,15,-1.438,0.263,0.501\n0,1,1,15,71,-0.376,-0.133,0.288\n0,5,1,15,1,1.143,-0.231,0.447\n0,5,1,15,15,1.555,-0.323,0.456\n0,5,1,15,37,0.000,0.000,0.459\n0,5,1,15,71,0.229,0.203,0.440\n0,0,1,17,0,0.000,0.000,0.350\n5,0,1,17,0,0.000,0.000,0.000\n0,5,1,17,1,0.000,0.000,0.536\n0,5,1,17,7,0.000,0.000,0.212\n0,0,1,18,0,0.000,0.000,0.100\n5,0,1,18,0,0.000,0.000,0.112\n0,5,1,18,1,0.000,0.000,0.000\n0,5,1,18,6,0.000,0.000,0.099\n0,5,1,18,32,0.000,0.585,0.388\n0,5,1,18,43,0.000,-0.412,0.121\n0,5,1,18,48,0.000,0.000,0.195\n0,5,1,18,62,0.000,0.000,-0.088\n0,0,1,19,0,0.000,0.000,0.150\n5,0,1,19,0,0.000,0.000,0.179\n0,5,1,19,5,0.000,0.000,0.196\n0,5,1,19,6,0.000,0.000,0.176\n0,5,1,19,12,0.000,0.000,0.152\n0,0,1,20,0,0.000,0.000,0.350\n5,0,1,20,0,0.000,0.000,0.350\n0,5,1,20,5,0.000,0.000,0.344\n0,5,1,20,20,0.000,0.000,0.361\n0,0,1,22,0,0.000,0.000,0.236\n5,0,1,22,0,0.000,0.000,0.236\n0,0,1,25,0,0.000,0.000,0.300\n5,0,1,25,0,0.000,0.000,0.251\n0,1,1,25,1,0.000,-0.207,0.232\n0,1,1,25,32,0.000,0.288,0.218\n0,5,1,25,1,0.000,0.152,0.235\n0,5,1,25,6,0.000,0.000,0.495\n0,5,1,25,32,0.000,-0.130,0.214\n0,5,1,25,43,0.000,0.000,0.466\n0,5,1,25,72,0.000,0.000,0.243\n0,0,1,26,0,0.000,0.000,0.450\n5,0,1,26,0,0.000,0.000,0.376\n0,5,1,26,12,0.000,0.000,0.439\n0,5,1,26,71,0.000,0.000,0.472\n0,0,1,34,0,0.000,0.000,0.250\n5,0,1,34,0,0.000,0.000,0.198\n0,1,1,34,36,0.000,0.000,0.187\n0,5,1,34,1,0.000,0.000,0.247\n0,5,1,34,36,0.000,0.000,0.259\n0,0,1,37,0,0.000,0.000,0.200\n5,0,1,37,0,0.000,0.000,0.000\n0,1,1,37,37,0.000,0.449,0.000\n0,5,1,37,37,0.000,-0.420,0.391\n0,6,1,37,37,0.000,0.000,0.150\n0,0,1,39,0,0.000,0.000,0.000\n5,0,1,39,0,0.000,0.000,0.000\n0,1,1,39,63,0.000,-0.080,-0.056\n0,5,1,39,63,0.000,0.000,-0.113\n0,0,1,40,0,0.000,0.000,0.250\n5,0,1,40,0,0.000,0.000,0.297\n0,5,1,40,28,0.000,-0.105,0.000\n0,5,1,40,37,0.000,0.000,0.468\n0,0,1,41,0,0.000,0.600,0.000\n0,1,1,41,32,0.000,1.263,0.000\n0,5,1,41,32,0.000,0.000,-0.106\n0,5,1,41,72,0.000,0.632,0.000\n0,0,1,43,0,0.000,0.000,0.150\n5,0,1,43,0,0.000,0.000,0.297\n0,5,1,43,18,0.357,-0.918,0.000\n0,5,1,43,25,0.000,0.000,0.061\n0,5,1,43,28,-0.249,0.382,0.343\n0,0,1,45,0,0.000,0.000,0.100\n0,5,1,45,32,0.000,0.000,0.125\n0,0,1,46,0,0.000,0.000,-0.500\n0,5,1,46,7,0.000,0.000,-0.540\n0,0,1,54,0,0.000,0.000,0.000\n2,0,1,54,0,0.000,0.000,0.000\n5,0,1,54,0,0.000,0.000,0.000\n0,5,1,54,3,0.000,0.000,-0.315\n0,5,1,54,36,0.000,0.000,0.315\n0,0,1,55,0,0.000,0.000,0.000\n5,0,1,55,0,0.000,0.000,0.000\n0,5,1,55,36,0.000,-0.058,0.084\n0,5,1,55,57,0.000,-0.058,-0.092\n0,0,1,56,0,0.000,0.000,-0.300\n0,1,1,56,36,0.875,0.668,-0.015\n0,1,1,56,57,-0.870,0.775,-0.406\n0,5,1,56,36,-0.958,-0.629,-0.372\n0,5,1,56,57,0.952,-0.715,-0.483\n0,0,1,57,0,0.000,0.000,0.000\n5,0,1,57,0,0.000,0.000,0.000\n0,0,1,58,0,0.000,0.000,0.000\n0,0,1,62,0,0.000,0.000,0.250\n0,5,1,62,18,0.000,0.000,0.270\n0,0,1,63,0,0.000,0.000,0.000\n5,0,1,63,0,0.000,0.000,0.000\n0,0,1,64,0,0.000,0.000,0.000\n5,0,1,64,0,0.000,0.000,0.000\n0,0,1,67,0,0.000,0.000,0.000\n5,0,1,67,0,0.000,0.000,0.000\n0,0,1,68,0,0.000,0.000,0.400\n0,1,1,68,1,-0.117,0.090,0.751\n0,1,1,68,23,0.373,0.153,0.635\n0,1,1,68,32,-0.090,-0.169,0.075\n0,5,1,68,1,0.134,-0.112,0.329\n0,5,1,68,23,-0.361,-0.202,0.560\n0,5,1,68,32,0.072,0.218,0.093\n0,0,1,73,0,0.000,0.000,0.500\n0,5,1,73,32,0.000,0.000,0.509\n0,5,1,73,72,0.000,0.000,0.443\n0,0,1,75,0,0.000,0.000,0.000\n0,0,1,78,0,0.000,0.000,0.000\n0,0,1,80,0,0.000,0.000,0.000\n0,0,1,81,0,0.000,0.000,0.000\n0,0,2,2,0,0.000,12.000,0.000\n1,0,2,2,0,0.000,1.800,0.000\n5,0,2,2,0,0.000,12.000,0.000\n0,1,2,2,1,-0.403,12.000,0.000\n0,1,2,2,2,0.000,12.000,0.000\n1,1,2,2,2,-0.418,2.089,-0.310\n0,1,2,2,5,0.000,12.000,0.000\n1,1,2,2,5,0.412,2.120,0.269\n1,2,2,2,2,0.094,1.621,0.877\n0,2,2,2,5,0.000,12.000,0.000\n1,2,2,2,5,0.317,1.421,-0.870\n0,3,2,2,5,0.000,12.000,0.000\n0,5,2,2,5,0.000,12.000,0.000\n1,5,2,2,5,-0.406,1.767,0.000\n0,5,2,2,6,0.000,12.000,0.000\n0,5,2,2,37,0.000,12.000,0.000\n0,5,2,2,40,0.000,12.000,0.000\n0,5,2,2,41,0.000,12.000,0.000\n0,5,2,2,45,0.000,12.000,0.000\n0,5,2,2,62,0.000,12.000,0.000\n1,0,2,3,0,0.000,2.500,0.000\n1,1,2,3,1,0.136,1.798,0.630\n1,1,2,3,5,0.497,2.405,0.357\n1,1,2,3,6,-0.211,1.925,-0.131\n1,1,2,3,7,-0.401,2.028,-0.318\n1,1,2,3,10,0.000,2.237,-0.610\n1,2,2,3,1,-0.325,1.553,-0.487\n1,2,2,3,5,-0.295,2.024,-0.590\n1,2,2,3,6,-0.143,1.466,0.000\n1,2,2,3,7,0.362,1.978,0.000\n1,2,2,3,9,0.296,1.514,0.481\n1,2,2,3,10,0.000,1.599,0.380\n1,5,2,3,1,0.213,1.728,-0.042\n1,5,2,3,5,-0.208,1.622,0.223\n1,5,2,3,6,0.359,1.539,0.194\n1,5,2,3,7,0.000,2.046,0.000\n1,5,2,3,9,-0.290,1.519,-0.470\n1,5,2,3,10,0.000,1.409,0.254\n1,0,2,4,0,0.000,0.000,0.000\n0,0,2,6,0,0.000,3.100,0.000\n2,0,2,6,0,0.000,3.600,0.000\n5,0,2,6,0,0.000,3.600,0.000\n0,2,2,6,1,-1.953,3.953,-1.055\n0,2,2,6,3,-1.712,2.596,-0.330\n0,2,2,6,29,-0.215,2.810,-0.456\n0,5,2,6,1,1.951,3.936,1.130\n0,5,2,6,3,1.719,2.628,0.360\n0,5,2,6,29,0.216,2.808,0.456\n1,0,2,9,0,0.000,1.800,0.000\n0,0,2,10,0,0.000,6.000,0.000\n2,0,2,10,0,0.000,6.000,0.000\n5,0,2,10,0,0.000,6.000,0.000\n0,0,2,15,0,0.000,1.423,0.000\n2,0,2,15,0,0.000,1.423,0.000\n5,0,2,15,0,0.000,1.423,0.000\n0,0,2,17,0,0.000,1.423,0.000\n0,0,2,18,0,0.000,0.000,0.000\n2,0,2,18,0,0.000,0.000,0.000\n5,0,2,18,0,0.000,0.000,0.000\n0,0,2,19,0,0.000,0.000,0.000\n0,0,2,20,0,0.000,0.000,0.000\n2,0,2,20,0,0.000,0.000,0.000\n0,0,2,22,0,0.000,0.000,0.000\n2,0,2,22,0,0.000,0.000,0.000\n5,0,2,22,0,0.000,0.000,0.000\n0,0,2,25,0,0.000,0.000,0.000\n0,0,2,30,0,0.000,12.000,0.000\n0,0,2,34,0,0.000,0.000,0.000\n2,0,2,34,0,0.000,0.000,0.000\n1,0,2,37,0,0.000,2.000,0.000\n1,1,2,37,37,0.000,2.952,-0.079\n1,2,2,37,37,0.000,1.542,0.434\n1,5,2,37,37,0.000,1.308,-0.357\n1,0,2,39,0,0.000,6.000,0.000\n0,0,2,40,0,0.000,3.700,0.000\n2,0,2,40,0,0.000,3.600,0.000\n5,0,2,40,0,0.000,3.600,0.000\n0,2,2,40,28,0.000,3.305,-0.530\n0,5,2,40,28,0.139,3.241,0.139\n0,0,2,41,0,0.000,1.200,0.000\n2,0,2,41,0,0.000,1.800,0.000\n0,2,2,41,32,0.000,1.235,0.000\n0,5,2,41,32,0.000,1.231,0.000\n0,0,2,43,0,0.000,3.600,0.000\n2,0,2,43,0,0.000,3.600,0.000\n0,0,2,45,0,0.000,2.200,0.000\n2,0,2,45,0,0.000,1.800,0.000\n0,2,2,45,32,0.000,2.212,0.000\n0,5,2,45,32,0.000,2.225,0.000\n0,0,2,46,0,0.000,1.800,0.000\n2,0,2,46,0,0.000,1.800,0.000\n0,0,2,55,0,0.000,4.800,0.000\n0,0,2,56,0,0.000,4.800,0.000\n0,0,2,62,0,0.000,8.000,0.000\n0,2,2,62,23,1.693,7.903,0.532\n0,5,2,62,23,-1.696,7.897,-0.482\n1,0,2,63,0,0.000,1.800,0.000\n1,0,2,64,0,0.000,1.800,0.000\n1,0,2,67,0,0.000,1.800,0.000\n1,0,2,81,0,0.000,4.800,0.000\n1,0,3,3,0,0.000,0.600,0.000\n4,0,3,3,0,0.000,1.800,0.000\n1,1,3,3,1,-0.486,0.714,0.000\n1,1,3,3,6,-0.081,-0.125,0.132\n1,1,3,3,7,1.053,1.327,0.000\n1,5,3,3,6,0.000,0.188,0.436\n1,5,3,3,7,0.000,0.177,-0.412\n1,6,3,3,6,0.269,0.437,0.000\n1,6,3,3,7,-0.495,0.793,-0.318\n1,7,3,3,7,-0.260,1.084,0.193\n0,0,3,6,0,0.000,5.500,0.000\n2,0,3,6,0,0.000,5.500,0.000\n4,0,3,6,0,0.000,3.600,0.000\n5,0,3,6,0,0.000,3.600,0.000\n0,1,3,6,1,-1.244,5.482,0.365\n0,1,3,6,24,-1.166,5.078,-0.545\n0,1,3,6,37,-0.677,5.854,0.521\n2,2,3,6,24,0.256,4.519,0.258\n2,3,3,6,24,1.663,4.073,0.094\n0,5,3,6,1,0.526,5.631,0.691\n0,5,3,6,2,0.159,6.586,0.216\n0,5,3,6,24,-2.285,4.737,0.468\n0,7,3,6,0,0.700,6.500,-0.400\n0,7,3,6,1,0.682,7.184,-0.935\n0,7,3,6,2,-0.168,6.572,-0.151\n0,7,3,6,24,1.662,6.152,-0.058\n0,7,3,6,37,0.635,5.890,-0.446\n2,37,3,6,24,0.000,3.892,-0.094\n0,0,3,9,0,0.000,16.000,0.000\n1,0,3,9,0,0.000,1.800,0.000\n5,0,3,9,0,0.000,12.000,0.000\n0,2,3,9,27,0.000,16.000,0.000\n0,5,3,9,1,0.687,16.152,0.894\n0,5,3,9,27,0.000,16.000,0.000\n0,40,3,9,1,-0.704,18.216,0.000\n0,40,3,9,27,0.000,16.000,0.178\n0,0,3,10,0,0.000,6.000,0.000\n2,0,3,10,0,0.000,6.000,0.000\n4,0,3,10,0,0.000,6.000,0.000\n5,0,3,10,0,0.000,6.000,0.000\n0,1,3,10,1,0.831,6.061,0.522\n0,1,3,10,6,-1.152,8.588,1.511\n0,1,3,10,28,-0.259,5.934,1.326\n2,2,3,10,28,0.000,6.561,0.294\n0,5,3,10,1,-0.195,6.304,1.722\n0,5,3,10,3,-0.705,5.383,0.234\n0,5,3,10,28,-0.417,5.981,0.511\n0,7,3,10,1,-0.491,6.218,0.000\n0,7,3,10,3,0.733,-0.543,-0.163\n0,7,3,10,6,1.234,8.372,-0.539\n0,7,3,10,28,1.168,4.857,-0.341\n0,10,3,10,28,0.000,3.706,1.254\n0,0,3,15,0,0.000,1.423,0.000\n2,0,3,15,0,0.000,1.423,0.000\n4,0,3,15,0,0.000,1.423,0.000\n5,0,3,15,0,0.000,1.423,0.000\n0,0,3,17,0,0.000,1.423,0.000\n5,0,3,17,0,0.000,1.423,0.000\n0,0,3,18,0,0.000,0.000,0.000\n2,0,3,18,0,0.000,0.000,0.000\n0,0,3,20,0,0.000,0.000,-0.300\n2,0,3,20,0,0.000,0.000,0.000\n4,0,3,20,0,0.000,0.000,-0.300\n5,0,3,20,0,0.000,0.000,0.000\n0,7,3,20,0,0.000,0.400,0.400\n0,7,3,20,5,0.000,0.000,-0.131\n0,7,3,20,20,0.000,0.000,0.000\n0,20,3,20,5,0.000,0.000,0.085\n0,20,3,20,20,0.000,0.000,0.000\n0,0,3,22,0,0.000,0.000,0.000\n2,0,3,22,0,0.000,0.000,0.000\n4,0,3,22,0,0.000,0.000,0.000\n5,0,3,22,0,0.000,0.000,0.000\n0,7,3,22,0,0.000,4.200,1.900\n0,0,3,25,0,0.000,0.000,0.000\n2,0,3,25,0,0.000,0.000,0.000\n1,0,3,30,0,0.000,1.800,0.000\n4,0,3,30,0,0.000,1.800,0.000\n1,0,3,37,0,0.000,2.500,0.000\n4,0,3,37,0,0.000,1.800,0.000\n1,1,3,37,37,0.000,2.428,0.000\n1,6,3,37,37,0.000,1.743,0.000\n1,7,3,37,37,0.000,2.256,0.000\n1,43,3,37,37,-0.241,3.385,-0.838\n1,0,3,39,0,0.000,5.500,0.000\n0,0,3,40,0,0.000,3.900,0.000\n2,0,3,40,0,0.000,3.600,0.000\n5,0,3,40,0,0.000,3.600,0.000\n0,5,3,40,28,-1.355,3.964,0.800\n0,9,3,40,28,1.045,3.785,-0.291\n0,40,3,40,28,0.508,2.985,0.809\n0,0,3,41,0,0.000,1.800,0.000\n2,0,3,41,0,0.000,1.800,0.000\n0,0,3,43,0,0.000,4.500,0.000\n2,0,3,43,0,0.000,3.600,0.000\n4,0,3,43,0,0.000,3.600,0.000\n5,0,3,43,0,0.000,3.600,0.000\n0,1,3,43,18,1.712,3.309,0.233\n0,1,3,43,28,-0.414,4.168,-0.875\n0,7,3,43,18,-0.880,5.091,-0.129\n0,7,3,43,28,0.536,5.276,-0.556\n2,37,3,43,18,-0.701,4.871,1.225\n2,37,3,43,28,-0.086,5.073,0.878\n0,0,3,45,0,0.000,1.800,0.000\n2,0,3,45,0,0.000,1.800,0.000\n0,0,3,48,0,0.000,0.000,0.892\n0,0,3,51,0,0.000,13.500,0.000\n0,1,3,51,52,0.000,13.549,0.000\n0,0,3,54,0,0.000,8.000,0.000\n1,0,3,54,0,0.000,2.500,0.000\n5,0,3,54,0,0.000,12.000,0.000\n0,5,3,54,1,0.000,8.000,0.000\n0,5,3,54,36,0.000,8.000,0.000\n0,0,3,55,0,0.000,4.800,0.000\n2,0,3,55,0,0.000,4.800,0.000\n0,0,3,56,0,0.000,4.800,0.000\n2,0,3,56,0,0.000,4.800,0.000\n1,0,3,57,0,0.000,2.500,0.000\n1,0,3,58,0,0.000,4.800,0.000\n0,0,3,62,0,0.000,3.600,0.000\n2,0,3,62,0,0.000,3.600,0.000\n5,0,3,62,0,0.000,3.600,0.000\n1,0,3,63,0,0.000,2.500,0.000\n1,0,3,64,0,0.000,2.500,0.000\n0,0,3,67,0,0.000,12.000,0.000\n0,0,3,74,0,0.000,19.000,0.000\n0,1,3,74,7,0.000,19.349,0.000\n0,0,3,75,0,0.000,19.000,0.000\n0,1,3,75,71,0.000,18.751,0.000\n1,0,3,78,0,0.000,2.500,0.000\n1,0,3,80,0,0.000,2.500,0.000\n0,0,6,6,0,0.000,-2.000,0.000\n5,0,6,6,0,0.000,-2.000,0.000\n0,0,6,8,0,0.900,-1.100,-0.500\n5,0,6,8,0,0.000,0.000,0.274\n0,21,6,8,1,0.261,-0.330,-0.542\n0,21,6,8,23,1.503,-1.853,-0.476\n0,0,6,9,0,0.000,3.600,0.000\n5,0,6,9,0,0.000,3.600,0.000\n0,0,6,10,0,1.200,0.500,-1.000\n0,21,6,10,1,0.829,0.000,-0.730\n0,21,6,10,3,0.675,-0.185,-1.053\n0,0,6,15,0,0.000,-4.000,0.000\n0,0,6,17,0,0.000,1.423,0.000\n5,0,6,17,0,0.000,1.423,0.000\n0,0,6,18,0,0.000,0.000,0.100\n5,0,6,18,0,0.000,0.000,0.103\n0,33,6,18,1,-0.520,-0.471,-0.267\n0,33,6,18,6,-1.623,0.204,0.438\n0,33,6,18,32,1.616,0.425,0.191\n0,0,6,19,0,0.000,0.000,0.150\n5,0,6,19,0,0.000,0.000,0.165\n0,21,6,19,1,-0.620,-0.329,0.303\n0,21,6,19,5,0.683,0.220,0.000\n0,0,6,20,0,0.000,0.000,0.400\n4,0,6,20,0,0.000,0.000,0.217\n5,0,6,20,0,0.000,0.000,0.217\n0,20,6,20,5,0.000,0.000,-0.079\n4,20,6,20,20,0.000,0.000,0.000\n0,0,6,22,0,0.000,0.000,0.217\n0,0,6,25,0,0.000,0.000,0.650\n5,0,6,25,0,0.000,0.000,0.231\n0,1,6,25,1,-1.704,-0.452,0.556\n0,1,6,25,6,0.000,0.000,0.777\n0,1,6,25,32,1.205,0.914,0.612\n0,24,6,25,6,-3.209,-7.622,1.065\n0,24,6,25,32,-5.891,-3.332,0.290\n0,0,6,26,0,0.000,0.000,0.346\n0,0,6,30,0,0.000,3.600,0.000\n2,0,6,30,0,0.000,3.600,0.000\n0,0,6,37,0,0.000,3.200,0.000\n5,0,6,37,0,0.000,3.600,0.000\n0,1,6,37,37,0.000,4.382,0.000\n0,3,6,37,37,0.000,2.576,0.000\n0,29,6,37,37,0.000,2.801,0.000\n0,0,6,39,0,0.000,0.000,0.000\n0,0,6,40,0,0.000,0.000,0.274\n0,0,6,41,0,0.000,3.600,0.000\n0,0,6,43,0,0.000,0.000,0.274\n0,0,6,45,0,0.000,6.000,0.000\n0,1,6,45,32,0.000,6.208,0.000\n0,0,6,54,0,0.000,3.600,0.000\n0,0,6,55,0,0.000,3.600,0.000\n0,0,6,57,0,0.000,3.600,0.000\n0,0,6,58,0,0.000,3.600,0.000\n0,0,6,63,0,0.000,3.600,0.000\n0,0,6,64,0,0.000,3.600,0.000\n0,0,8,8,0,0.000,0.000,0.375\n5,0,8,8,0,0.000,0.000,0.375\n0,0,8,9,0,0.000,3.600,0.000\n5,0,8,9,0,0.000,3.600,0.000\n0,0,8,10,0,0.000,0.000,0.000\n4,0,8,10,0,0.000,0.000,0.000\n0,0,8,15,0,0.000,0.000,0.424\n0,0,8,17,0,0.000,1.423,0.000\n4,0,8,17,0,0.000,1.423,0.000\n5,0,8,17,0,0.000,1.423,0.000\n0,0,8,19,0,0.000,0.000,0.225\n0,0,8,20,0,0.000,0.000,0.350\n4,0,8,20,0,0.000,0.000,0.300\n5,0,8,20,0,0.000,0.000,0.297\n0,20,8,20,5,0.000,0.120,0.472\n4,20,8,20,20,0.000,-0.097,0.200\n0,23,8,20,5,-0.101,-0.324,0.371\n0,23,8,20,20,0.107,0.253,0.151\n0,0,8,22,0,0.000,0.000,0.297\n0,0,8,25,0,0.000,0.000,0.316\n5,0,8,25,0,0.000,0.000,0.316\n0,0,8,26,0,0.000,0.000,0.474\n5,0,8,26,0,0.000,0.000,0.474\n0,0,8,34,0,0.000,0.000,0.250\n0,0,8,39,0,0.000,0.000,0.000\n0,0,8,40,0,0.000,0.000,0.375\n0,0,8,43,0,0.000,0.000,0.375\n0,0,8,45,0,0.000,3.600,0.000\n0,0,8,46,0,0.000,3.600,0.000\n0,0,8,55,0,0.000,3.600,0.000\n0,0,8,56,0,0.000,3.600,0.000\n0,0,9,9,0,0.000,12.000,0.000\n1,0,9,9,0,0.000,1.800,0.000\n5,0,9,9,0,0.000,12.000,0.000\n0,0,9,10,0,0.000,6.000,0.000\n5,0,9,10,0,0.000,6.000,0.000\n0,0,9,15,0,0.000,1.423,0.000\n0,0,9,18,0,0.000,0.000,0.000\n0,0,9,19,0,0.000,0.000,0.000\n0,0,9,20,0,0.000,0.000,0.000\n0,0,9,25,0,0.000,0.000,0.000\n0,0,9,34,0,0.000,0.000,0.000\n5,0,9,34,0,0.000,0.000,0.000\n1,0,9,37,0,0.000,1.800,0.000\n1,0,9,39,0,0.000,6.000,0.000\n0,0,9,40,0,0.000,3.600,0.000\n0,0,9,41,0,0.000,4.800,0.000\n0,0,9,45,0,0.000,1.800,0.000\n0,0,9,54,0,0.000,12.000,0.000\n0,0,9,55,0,0.000,4.800,0.000\n0,0,9,56,0,0.000,4.800,0.000\n1,0,9,57,0,0.000,1.800,0.000\n0,0,9,62,0,0.000,3.600,0.000\n1,0,9,63,0,0.000,1.800,0.000\n1,0,9,64,0,0.000,1.800,0.000\n0,0,9,67,0,0.000,12.000,0.000\n1,0,9,78,0,0.000,1.800,0.000\n1,0,9,81,0,0.000,4.800,0.000\n0,0,10,10,0,0.000,0.000,0.000\n5,0,10,10,0,0.000,0.000,0.000\n0,0,10,15,0,0.000,0.000,0.000\n0,0,10,17,0,0.000,4.743,0.000\n0,0,10,20,0,0.000,0.000,0.000\n4,0,10,20,0,0.000,0.000,0.000\n5,0,10,20,0,0.000,0.000,0.000\n0,0,10,22,0,0.000,0.000,0.000\n0,0,10,25,0,0.000,0.000,0.000\n0,0,10,26,0,0.000,0.000,0.000\n5,0,10,26,0,0.000,0.000,0.000\n0,0,10,34,0,0.000,0.000,0.000\n0,0,10,37,0,0.000,2.700,0.000\n0,0,10,39,0,0.000,0.000,0.000\n0,0,10,40,0,0.000,0.000,0.000\n5,0,10,40,0,0.000,0.000,0.000\n0,0,10,41,0,0.000,6.000,0.000\n0,0,10,45,0,0.000,6.000,0.000\n0,0,10,63,0,0.000,0.600,0.000\n0,3,10,63,44,-10.200,7.000,0.000\n0,0,10,64,0,0.000,1.200,0.000\n0,28,10,64,63,2.400,2.900,0.000\n0,0,15,15,0,-1.400,-8.300,1.000\n5,0,15,15,0,0.000,-8.000,0.000\n0,1,15,15,1,-1.663,-8.408,1.433\n0,1,15,15,71,-1.088,-8.245,0.411\n0,0,15,18,0,0.000,0.000,0.160\n0,0,15,19,0,0.000,0.000,0.255\n5,0,15,19,0,0.000,0.000,0.255\n0,0,15,20,0,0.000,0.000,0.336\n4,0,15,20,0,0.000,0.000,0.336\n0,0,15,22,0,0.000,0.000,0.336\n0,0,15,25,0,0.000,0.000,0.358\n4,0,15,25,0,0.000,0.000,0.358\n0,0,15,26,0,0.000,0.000,0.537\n0,0,15,30,0,0.000,1.423,0.000\n4,0,15,30,0,0.000,1.423,0.000\n0,0,15,37,0,0.000,3.000,0.000\n5,0,15,37,0,0.000,1.423,0.000\n0,1,15,37,37,0.000,2.177,0.000\n0,71,15,37,37,0.000,0.505,0.333\n0,0,15,40,0,0.000,0.000,0.424\n0,0,15,43,0,0.000,0.000,0.424\n0,0,15,57,0,0.000,1.423,0.000\n0,0,15,63,0,0.000,1.423,0.000\n0,0,15,64,0,0.000,1.423,0.000\n0,0,17,20,0,0.000,0.000,0.000\n4,0,17,20,0,0.000,0.000,0.000\n5,0,17,20,0,0.000,0.000,0.000\n0,0,17,22,0,0.000,0.000,0.000\n0,0,17,37,0,0.000,1.423,0.000\n0,0,17,43,0,0.000,3.795,0.000\n0,0,18,20,0,0.000,0.000,0.112\n4,0,18,20,0,0.000,0.000,0.112\n5,0,18,20,0,0.000,0.000,0.112\n0,0,18,22,0,0.000,0.000,0.112\n0,0,18,37,0,0.000,-1.200,-0.300\n0,32,18,37,37,-0.173,-0.965,-0.610\n0,39,18,37,37,0.000,-0.760,0.227\n0,43,18,37,37,0.228,-1.741,-0.371\n0,0,18,39,0,0.000,0.000,0.500\n0,32,18,39,63,0.000,0.687,0.680\n0,37,18,39,63,0.000,-0.513,0.357\n0,0,18,43,0,0.000,0.000,0.350\n4,0,18,43,0,0.000,0.000,0.141\n5,0,18,43,0,0.000,0.000,0.141\n0,1,18,43,1,-0.914,-0.482,0.179\n0,1,18,43,3,-0.392,-2.724,0.312\n0,1,18,43,28,-1.508,-1.816,-0.175\n0,1,18,43,37,0.823,-1.220,-0.770\n0,32,18,43,1,1.588,1.499,1.410\n0,32,18,43,3,0.653,0.254,0.000\n0,32,18,43,28,0.528,0.342,0.000\n0,32,18,43,37,0.812,1.513,1.266\n0,37,18,43,1,-1.139,-0.703,1.088\n0,37,18,43,28,-2.014,-1.646,-2.068\n0,37,18,43,37,-1.519,-0.328,1.437\n0,43,18,43,28,3.011,-1.405,2.038\n0,0,18,48,0,0.000,0.000,0.400\n0,1,18,48,28,1.767,1.606,0.408\n0,32,18,48,28,-1.463,-2.548,0.310\n0,0,18,55,0,0.000,0.000,0.000\n0,0,18,58,0,0.000,0.000,0.000\n0,0,18,62,0,0.000,0.000,0.500\n0,1,18,62,1,-0.403,-0.273,0.440\n0,32,18,62,1,0.291,0.385,0.582\n0,0,18,63,0,0.000,0.000,0.000\n0,0,18,64,0,0.000,0.000,0.000\n0,0,18,80,0,0.000,0.000,0.000\n0,0,19,20,0,0.000,0.000,0.179\n4,0,19,20,0,0.000,0.000,0.179\n0,0,19,37,0,0.000,0.000,0.000\n0,0,19,40,0,0.000,0.000,0.225\n0,0,19,63,0,0.000,0.000,0.000\n0,0,19,75,0,0.000,0.000,0.000\n0,0,20,20,0,0.000,0.000,0.200\n4,0,20,20,0,0.000,0.000,0.000\n5,0,20,20,0,0.000,0.000,0.236\n0,1,20,20,5,0.067,0.081,0.347\n0,1,20,20,20,-0.063,-0.064,0.140\n0,3,20,20,5,0.000,0.000,0.083\n0,3,20,20,20,0.000,0.000,0.000\n0,5,20,20,5,0.000,0.000,0.424\n0,5,20,20,6,0.000,0.000,-0.080\n0,5,20,20,8,0.000,0.127,0.450\n0,5,20,20,12,-0.072,-0.269,0.439\n0,5,20,20,20,-0.057,0.000,0.307\n4,6,20,20,20,0.000,0.000,0.000\n4,8,20,20,20,0.000,-0.091,0.192\n0,12,20,20,20,0.077,0.202,0.183\n4,20,20,20,20,0.000,0.000,0.000\n0,0,20,22,0,0.000,0.000,0.236\n4,0,20,22,0,0.000,0.000,0.236\n0,0,20,25,0,0.000,0.000,0.251\n4,0,20,25,0,0.000,0.000,0.251\n0,0,20,26,0,0.000,0.000,0.376\n4,0,20,26,0,0.000,0.000,0.376\n5,0,20,26,0,0.000,0.000,0.376\n0,0,20,30,0,0.000,0.000,0.000\n2,0,20,30,0,0.000,0.000,0.000\n4,0,20,30,0,0.000,0.000,0.000\n0,0,20,30,30,0.000,0.000,-0.500\n0,0,20,34,0,0.000,0.000,0.198\n4,0,20,34,0,0.000,0.000,0.198\n0,0,20,37,0,0.000,0.000,0.000\n4,0,20,37,0,0.000,0.000,0.000\n0,0,20,40,0,0.000,0.000,0.297\n0,0,20,41,0,0.000,0.000,0.000\n0,0,20,43,0,0.000,0.000,0.297\n4,0,20,43,0,0.000,0.000,0.297\n0,0,20,45,0,0.000,0.000,0.000\n0,0,22,22,0,0.000,0.000,0.236\n4,0,22,22,0,0.000,0.000,0.236\n5,0,22,22,0,0.000,0.000,0.236\n0,0,22,30,0,0.000,0.000,0.000\n4,0,22,30,0,0.000,0.000,0.000\n0,0,22,34,0,0.000,0.000,0.198\n0,0,22,37,0,0.000,0.500,-2.800\n0,0,22,40,0,0.000,0.000,0.297\n0,0,22,41,0,0.000,0.000,0.000\n0,0,22,43,0,0.000,0.000,0.297\n5,0,22,43,0,0.000,0.000,0.297\n0,0,22,45,0,0.000,0.000,0.000\n0,0,25,25,0,0.000,0.000,0.267\n0,0,25,37,0,0.000,0.000,0.000\n5,0,25,37,0,0.000,0.000,0.000\n0,0,25,39,0,0.000,0.000,0.000\n0,0,25,40,0,0.000,0.000,0.316\n5,0,25,40,0,0.000,0.000,0.316\n0,0,25,43,0,0.000,0.000,0.250\n0,1,25,43,1,-2.686,-1.512,0.591\n0,1,25,43,28,-3.730,-0.531,0.000\n0,32,25,43,1,2.108,1.896,0.965\n0,32,25,43,28,2.977,0.732,-0.502\n0,0,25,57,0,0.000,0.000,0.000\n0,0,25,63,0,0.000,0.000,0.000\n0,0,26,26,0,0.000,0.000,0.600\n5,0,26,26,0,0.000,0.000,0.600\n0,0,26,34,0,0.000,0.000,0.316\n5,0,26,34,0,0.000,0.000,0.316\n0,0,26,37,0,0.000,1.423,0.000\n0,0,26,40,0,0.000,0.000,0.474\n0,0,30,30,0,0.000,12.000,0.000\n1,0,30,30,0,0.000,1.800,0.000\n4,0,30,30,0,0.000,1.800,0.000\n0,0,30,40,0,0.000,3.600,0.000\n1,0,30,67,0,0.000,1.800,0.000\n0,0,34,37,0,0.000,0.000,0.000\n0,0,34,43,0,0.000,0.000,0.250\n0,0,37,37,0,0.000,7.000,0.000\n1,0,37,37,0,0.000,2.000,0.000\n4,0,37,37,0,0.000,6.000,0.000\n5,0,37,37,0,0.000,6.000,0.000\n0,1,37,37,5,0.000,7.000,0.000\n0,1,37,37,37,0.000,7.000,0.000\n0,2,37,37,5,0.000,7.000,0.000\n0,2,37,37,37,0.000,7.000,0.000\n0,3,37,37,5,0.000,7.000,0.000\n0,3,37,37,37,0.000,7.000,0.000\n0,5,37,37,5,0.000,7.000,0.000\n0,5,37,37,6,0.000,7.000,0.000\n0,5,37,37,15,0.000,7.000,0.000\n0,5,37,37,18,0.000,7.000,0.000\n0,5,37,37,37,0.000,7.000,0.000\n0,5,37,37,40,0.000,7.000,0.000\n0,5,37,37,43,0.000,7.000,0.000\n0,6,37,37,37,0.000,7.000,0.000\n0,15,37,37,37,0.000,7.000,0.000\n0,18,37,37,37,0.000,7.000,0.000\n0,37,37,37,37,0.000,7.000,0.000\n0,37,37,37,40,0.000,7.000,0.000\n0,37,37,37,43,0.000,7.000,0.000\n0,0,37,38,0,0.000,7.000,0.000\n0,0,37,39,0,0.000,3.600,0.000\n1,0,37,39,0,0.000,2.600,0.000\n0,0,37,40,0,0.000,4.000,0.000\n5,0,37,40,0,0.000,3.600,0.000\n0,37,37,40,1,0.000,4.095,0.382\n0,37,37,40,28,0.698,2.542,3.072\n0,0,37,41,0,0.000,1.800,0.000\n0,0,37,43,0,0.000,2.000,1.800\n5,0,37,43,0,0.000,3.600,0.000\n0,37,37,43,18,0.372,2.284,2.034\n0,37,37,43,28,0.000,1.694,1.508\n0,0,37,45,0,0.000,1.800,0.000\n0,0,37,46,0,0.000,1.800,0.000\n0,0,37,55,0,0.000,4.800,0.000\n0,0,37,56,0,0.000,4.800,0.000\n1,0,37,57,0,0.000,1.800,0.000\n0,0,37,58,0,0.000,6.000,0.000\n1,0,37,58,0,0.000,4.800,0.000\n0,0,37,62,0,0.000,3.600,0.000\n0,0,37,63,0,0.000,7.000,0.000\n1,0,37,63,0,0.000,1.800,0.000\n1,37,37,63,39,0.000,3.000,4.100\n1,37,37,63,44,0.000,3.000,2.100\n0,0,37,64,0,0.000,7.000,0.000\n1,0,37,64,0,0.000,1.800,0.000\n1,0,37,67,0,0.000,1.800,0.000\n0,0,37,69,0,0.000,7.000,0.000\n0,0,37,78,0,0.000,6.000,0.000\n0,0,37,81,0,0.000,6.000,0.000\n1,0,37,81,0,0.000,4.800,0.000\n0,0,38,38,0,0.000,7.000,0.000\n0,0,38,58,0,0.000,7.000,0.000\n0,0,38,63,0,0.000,7.000,0.000\n0,0,38,64,0,0.000,7.000,0.000\n0,0,38,69,0,0.000,6.000,0.000\n0,0,38,78,0,0.000,6.000,0.000\n0,0,39,40,0,0.000,0.000,0.000\n0,0,39,45,0,0.000,6.000,0.000\n0,0,39,63,0,0.000,4.000,0.000\n1,0,39,63,0,0.000,6.000,0.000\n5,0,39,63,0,0.000,3.600,0.000\n0,1,39,63,5,0.000,4.000,0.000\n0,1,39,63,64,0.000,4.000,0.000\n0,18,39,63,5,0.000,4.000,0.000\n0,18,39,63,64,0.000,4.000,0.000\n0,63,39,63,5,0.000,4.000,0.000\n0,63,39,63,64,0.000,4.000,0.000\n0,0,39,64,0,0.000,3.600,0.000\n1,0,39,64,0,0.000,6.000,0.000\n0,0,39,65,0,0.000,4.000,0.000\n0,0,39,78,0,0.000,3.600,0.000\n0,0,40,40,0,0.000,0.000,0.375\n0,0,40,45,0,0.000,3.600,0.000\n0,0,40,46,0,0.000,3.600,0.000\n0,0,40,54,0,0.000,3.600,0.000\n2,0,40,54,0,0.000,3.600,0.000\n0,0,40,63,0,0.000,3.600,0.000\n0,0,40,64,0,0.000,3.600,0.000\n0,0,40,78,0,0.000,3.600,0.000\n0,0,41,41,0,0.000,1.800,0.000\n0,0,41,55,0,0.000,4.800,0.000\n0,0,41,62,0,0.000,3.600,0.000\n0,0,41,80,0,0.000,1.800,0.000\n0,0,43,43,0,0.000,0.000,0.375\n0,0,43,45,0,0.000,3.600,0.000\n0,0,43,64,0,0.000,3.600,0.000\n0,0,44,57,0,0.000,7.000,0.000\n0,0,44,63,0,0.000,7.000,0.000\n0,0,44,65,0,0.000,7.000,0.000\n0,0,44,78,0,0.000,2.846,0.000\n0,0,44,80,0,0.000,2.846,0.000\n0,0,45,63,0,0.000,1.800,0.000\n0,0,45,64,0,0.000,1.800,0.000\n0,0,45,78,0,0.000,1.800,0.000\n0,0,55,57,0,0.000,10.000,0.000\n2,0,55,57,0,0.000,4.800,0.000\n5,0,55,57,0,0.000,4.800,0.000\n0,1,55,57,5,0.423,12.064,0.090\n0,1,55,57,55,-0.428,12.044,0.000\n0,36,55,57,5,-0.268,8.077,-0.806\n0,36,55,57,55,0.273,8.025,0.692\n0,0,55,62,0,0.000,3.600,0.000\n0,0,55,64,0,0.000,4.800,0.000\n0,0,55,80,0,0.000,4.800,0.000\n0,0,56,57,0,0.000,6.000,0.000\n0,1,56,57,56,0.000,6.886,-0.161\n0,36,56,57,56,0.000,4.688,0.107\n0,0,56,63,0,0.000,4.800,0.000\n0,0,56,80,0,0.000,4.800,0.000\n1,0,57,63,0,0.000,1.800,0.000\n1,0,57,64,0,0.000,1.800,0.000\n0,0,58,63,0,0.000,6.000,0.000\n0,0,58,64,0,0.000,6.000,0.000\n0,0,59,63,0,0.000,7.000,0.000\n0,0,59,65,0,0.000,7.000,0.000\n0,0,59,78,0,0.000,3.600,0.000\n0,0,59,80,0,0.000,3.600,0.000\n0,0,59,82,0,0.000,3.600,0.000\n0,0,62,63,0,0.000,3.600,0.000\n0,0,62,64,0,0.000,3.600,0.000\n1,0,63,63,0,0.000,1.800,0.000\n0,0,63,64,0,0.000,7.000,0.000\n0,5,63,64,5,0.000,7.000,0.000\n0,5,63,64,64,0.000,7.000,0.000\n0,39,63,64,5,0.000,7.000,0.000\n0,39,63,64,64,0.000,7.000,0.000\n0,0,63,66,0,0.000,7.000,0.000\n0,0,63,78,0,0.000,6.000,0.000\n0,0,63,81,0,0.000,6.000,0.000\n0,0,64,64,0,0.000,7.000,0.000\n1,0,64,64,0,0.000,1.800,0.000\n0,5,64,64,5,0.000,7.000,0.000\n0,5,64,64,63,0.000,7.000,0.000\n0,63,64,64,63,0.000,7.000,0.000\n0,0,64,65,0,0.000,7.000,0.000\n0,0,64,66,0,0.000,7.000,0.000\n0,0,64,78,0,0.000,6.000,0.000\n0,0,64,81,0,0.000,6.000,0.000\n5,0,64,81,0,0.000,6.000,0.000\n0,0,64,82,0,0.000,6.000,0.000\n0,0,65,66,0,0.000,7.000,0.000\n0,0,65,78,0,0.000,6.000,0.000\n0,0,65,81,0,0.000,6.000,0.000\n0,0,65,82,0,0.000,6.000,0.000\n0,0,66,66,0,0.000,7.000,0.000\n0,0,66,78,0,0.000,6.000,0.000\n0,0,66,81,0,0.000,6.000,0.000\n0,0,67,67,0,0.000,12.000,0.000\n5,0,67,67,0,0.000,12.000,0.000\n0,0,76,76,0,0.000,3.600,0.000\n0,0,76,78,0,0.000,3.600,0.000\n0,0,78,78,0,0.000,7.000,0.000\n0,0,78,79,0,0.000,6.000,0.000\n0,0,78,81,0,0.000,4.000,0.000\n0,0,79,79,0,0.000,6.000,0.000\n0,0,79,81,0,0.000,6.000,0.000\n0,0,80,81,0,0.000,4.000,0.000\n':'926\nint,int,int,int,int,float,float,float\n0,0,1,1,0,0.000,0.000,0.300\n5,0,1,1,0,0.200,-0.800,1.500\n0,1,1,1,1,0.103,0.681,0.332\n5,1,1,1,1,0.144,-0.547,1.126\n0,1,1,1,2,-0.295,0.438,0.584\n0,1,1,1,3,0.066,-0.156,0.143\n0,1,1,1,5,0.639,-0.630,0.264\n0,1,1,1,6,-0.688,1.757,0.477\n5,1,1,1,6,0.000,0.000,0.054\n0,1,1,1,8,-1.420,-0.092,1.101\n5,1,1,1,8,0.000,-0.158,0.323\n0,1,1,1,11,0.593,0.662,1.120\n0,1,1,1,12,-0.678,0.417,0.624\n0,1,1,1,15,-0.714,0.698,0.000\n0,1,1,1,34,-0.647,0.550,0.590\n0,2,1,1,5,0.321,-0.411,0.144\n0,3,1,1,3,0.443,0.000,-1.140\n0,3,1,1,5,-0.256,0.058,0.000\n0,3,1,1,6,-0.679,-0.029,0.000\n0,5,1,1,5,0.284,-1.386,0.314\n0,5,1,1,6,-0.654,1.072,0.279\n0,5,1,1,8,-0.744,-1.235,0.337\n0,5,1,1,10,0.000,0.000,0.427\n0,5,1,1,11,0.000,0.516,0.291\n0,5,1,1,12,0.678,-0.602,0.398\n0,5,1,1,15,1.142,-0.644,0.367\n0,5,1,1,25,0.000,0.000,0.295\n0,5,1,1,34,0.692,-0.530,0.278\n0,5,1,1,37,0.000,0.000,0.389\n0,5,1,1,39,0.000,0.000,0.278\n0,5,1,1,41,0.000,0.000,-0.141\n0,5,1,1,56,0.000,0.000,0.324\n0,5,1,1,68,0.000,0.000,0.136\n0,6,1,1,6,0.408,1.397,0.961\n5,6,1,1,6,0.313,-1.035,1.631\n0,8,1,1,8,1.055,0.834,0.000\n0,11,1,1,11,-0.387,-0.543,1.405\n0,12,1,1,12,0.000,0.000,0.893\n0,15,1,1,15,-0.177,0.000,0.049\n0,0,1,2,0,0.000,0.000,0.000\n2,0,1,2,0,0.000,0.000,0.000\n5,0,1,2,0,0.000,0.000,0.000\n0,0,1,2,2,0.000,0.000,-0.650\n5,0,1,2,2,0.000,0.000,-0.650\n0,1,1,2,1,0.419,0.296,0.282\n0,1,1,2,2,-0.494,0.274,-0.630\n0,1,1,2,5,0.075,0.000,0.358\n0,2,1,2,2,-0.293,0.115,-0.508\n0,2,1,2,5,0.301,0.104,0.507\n0,3,1,2,1,0.565,-0.554,0.234\n0,3,1,2,2,-0.577,-0.482,-0.427\n0,3,1,2,5,0.082,0.000,0.123\n0,5,1,2,1,0.000,-0.184,0.220\n0,5,1,2,2,0.501,-0.410,-0.535\n2,5,1,2,2,0.000,0.000,0.055\n2,5,1,2,3,0.000,0.000,-0.108\n0,5,1,2,5,-0.523,-0.228,0.208\n2,5,1,2,37,0.000,0.000,0.000\n0,6,1,2,1,-0.467,0.000,0.490\n0,6,1,2,2,0.425,0.168,-0.875\n0,6,1,2,5,0.000,0.136,0.396\n0,8,1,2,1,-0.504,0.371,0.557\n0,8,1,2,2,0.541,0.539,-1.009\n0,8,1,2,5,0.000,0.204,0.464\n0,0,1,3,0,0.000,0.400,0.300\n2,0,1,3,0,0.000,0.500,0.350\n5,0,1,3,0,0.000,0.000,0.000\n0,0,1,3,1,0.000,0.000,0.550\n0,0,1,3,5,0.000,0.200,0.700\n0,0,1,3,7,0.000,0.400,0.400\n0,1,1,3,1,0.103,0.177,0.545\n0,1,1,3,5,-0.072,0.316,0.674\n0,1,1,3,6,-0.117,-0.333,0.202\n0,1,1,3,7,0.825,0.139,0.325\n0,1,1,3,10,-0.927,1.112,1.388\n0,2,1,3,5,0.663,-0.167,0.426\n0,2,1,3,7,-0.758,0.112,0.563\n0,5,1,3,1,-0.073,0.085,0.531\n2,5,1,3,2,0.000,0.000,0.115\n2,5,1,3,3,0.000,0.000,0.446\n0,5,1,3,5,-0.822,0.501,1.008\n0,5,1,3,6,0.000,-0.624,0.330\n0,5,1,3,7,0.659,-1.407,0.308\n0,5,1,3,10,-0.412,0.693,0.087\n2,5,1,3,37,0.000,0.000,0.056\n0,5,1,3,43,0.000,1.027,0.360\n0,5,1,3,51,0.000,1.543,0.350\n0,5,1,3,53,0.000,0.501,0.000\n0,5,1,3,74,0.000,0.513,-0.344\n0,5,1,3,75,0.000,0.511,-0.186\n0,6,1,3,6,0.447,0.652,0.318\n0,6,1,3,7,-0.395,0.730,-0.139\n0,10,1,3,7,0.338,2.772,2.145\n0,10,1,3,10,0.548,0.000,1.795\n0,0,1,4,0,0.000,0.000,0.000\n0,0,1,6,0,0.000,0.000,0.200\n5,0,1,6,0,0.000,-0.200,0.400\n0,1,1,6,1,-0.681,0.755,0.755\n5,1,1,6,1,0.000,0.243,-0.596\n0,1,1,6,3,-0.547,0.000,0.320\n0,1,1,6,21,0.000,0.270,0.237\n0,2,1,6,21,0.102,0.460,-0.128\n0,3,1,6,21,-1.652,-1.660,0.283\n0,5,1,6,1,0.571,0.319,0.570\n0,5,1,6,2,0.000,0.000,0.306\n0,5,1,6,3,0.572,0.000,-0.304\n0,5,1,6,21,0.596,-0.276,0.346\n0,5,1,6,25,0.000,0.000,0.061\n0,5,1,6,37,0.000,0.000,0.106\n0,5,1,6,45,0.000,0.000,-0.174\n0,6,1,6,1,0.229,-0.710,0.722\n5,6,1,6,1,0.000,0.000,0.040\n0,6,1,6,21,1.488,-3.401,-0.320\n0,37,1,6,21,0.712,1.320,-0.507\n0,0,1,8,0,0.000,-0.300,0.500\n5,0,1,8,0,0.000,0.000,0.297\n0,1,1,8,1,-0.439,0.786,0.272\n5,1,1,8,1,0.115,-0.390,0.658\n0,1,1,8,6,-0.608,0.339,1.496\n0,1,1,8,23,-0.428,0.323,0.280\n0,2,1,8,23,0.594,-0.409,0.155\n0,5,1,8,1,0.393,-0.385,0.562\n0,5,1,8,6,0.598,-0.158,0.399\n0,5,1,8,23,-0.152,-0.440,0.357\n0,0,1,9,0,0.000,0.000,0.000\n5,0,1,9,0,0.000,0.000,0.000\n0,5,1,9,3,0.204,-0.335,-0.352\n0,5,1,9,53,0.000,0.000,0.097\n0,0,1,10,0,0.000,0.000,0.300\n5,0,1,10,0,0.000,0.000,0.000\n0,0,1,10,3,0.000,0.000,1.000\n0,1,1,10,3,-1.027,0.694,0.948\n0,1,1,10,6,0.159,-0.552,0.198\n0,1,1,10,28,0.552,-0.380,0.326\n0,3,1,10,3,3.100,-2.529,1.494\n0,3,1,10,28,0.079,0.280,0.402\n0,5,1,10,1,0.000,0.000,0.779\n0,5,1,10,3,-2.099,1.363,0.021\n0,5,1,10,6,-0.162,0.832,0.552\n0,5,1,10,28,-0.616,0.000,0.274\n0,0,1,15,0,0.000,0.000,0.400\n5,0,1,15,0,0.000,0.000,0.336\n0,1,1,15,1,-1.047,0.170,0.398\n0,1,1,15,15,-1.438,0.263,0.501\n0,1,1,15,71,-0.376,-0.133,0.288\n0,5,1,15,1,1.143,-0.231,0.447\n0,5,1,15,15,1.555,-0.323,0.456\n0,5,1,15,37,0.000,0.000,0.459\n0,5,1,15,71,0.229,0.203,0.440\n0,0,1,17,0,0.000,0.000,0.350\n5,0,1,17,0,0.000,0.000,0.000\n0,5,1,17,1,0.000,0.000,0.536\n0,5,1,17,7,0.000,0.000,0.212\n0,0,1,18,0,0.000,0.000,0.100\n5,0,1,18,0,0.000,0.000,0.112\n0,5,1,18,1,0.000,0.000,0.000\n0,5,1,18,6,0.000,0.000,0.099\n0,5,1,18,32,0.000,0.585,0.388\n0,5,1,18,43,0.000,-0.412,0.121\n0,5,1,18,48,0.000,0.000,0.195\n0,5,1,18,62,0.000,0.000,-0.088\n0,0,1,19,0,0.000,0.000,0.150\n5,0,1,19,0,0.000,0.000,0.179\n0,5,1,19,5,0.000,0.000,0.196\n0,5,1,19,6,0.000,0.000,0.176\n0,5,1,19,12,0.000,0.000,0.152\n0,0,1,20,0,0.000,0.000,0.350\n5,0,1,20,0,0.000,0.000,0.350\n0,5,1,20,5,0.000,0.000,0.344\n0,5,1,20,20,0.000,0.000,0.361\n0,0,1,22,0,0.000,0.000,0.236\n5,0,1,22,0,0.000,0.000,0.236\n0,0,1,25,0,0.000,0.000,0.300\n5,0,1,25,0,0.000,0.000,0.251\n0,1,1,25,1,0.000,-0.207,0.232\n0,1,1,25,32,0.000,0.288,0.218\n0,5,1,25,1,0.000,0.152,0.235\n0,5,1,25,6,0.000,0.000,0.495\n0,5,1,25,32,0.000,-0.130,0.214\n0,5,1,25,43,0.000,0.000,0.466\n0,5,1,25,72,0.000,0.000,0.243\n0,0,1,26,0,0.000,0.000,0.450\n5,0,1,26,0,0.000,0.000,0.376\n0,5,1,26,12,0.000,0.000,0.439\n0,5,1,26,71,0.000,0.000,0.472\n0,0,1,34,0,0.000,0.000,0.250\n5,0,1,34,0,0.000,0.000,0.198\n0,1,1,34,36,0.000,0.000,0.187\n0,5,1,34,1,0.000,0.000,0.247\n0,5,1,34,36,0.000,0.000,0.259\n0,0,1,37,0,0.000,0.000,0.200\n5,0,1,37,0,0.000,0.000,0.000\n0,1,1,37,37,0.000,0.449,0.000\n0,5,1,37,37,0.000,-0.420,0.391\n0,6,1,37,37,0.000,0.000,0.150\n0,0,1,39,0,0.000,0.000,0.000\n5,0,1,39,0,0.000,0.000,0.000\n0,1,1,39,63,0.000,-0.080,-0.056\n0,5,1,39,63,0.000,0.000,-0.113\n0,0,1,40,0,0.000,0.000,0.250\n5,0,1,40,0,0.000,0.000,0.297\n0,5,1,40,28,0.000,-0.097,0.203\n0,5,1,40,37,0.000,0.000,0.329\n0,0,1,41,0,0.000,0.600,0.000\n0,1,1,41,32,0.000,1.263,0.000\n0,5,1,41,32,0.000,0.000,-0.106\n0,5,1,41,72,0.000,0.632,0.000\n0,0,1,43,0,0.000,0.000,0.150\n5,0,1,43,0,0.000,0.000,0.297\n0,5,1,43,18,0.357,-0.918,0.000\n0,5,1,43,25,0.000,0.000,0.061\n0,5,1,43,28,-0.249,0.382,0.343\n0,0,1,45,0,0.000,0.000,0.100\n0,5,1,45,32,0.000,0.000,0.125\n0,0,1,46,0,0.000,0.000,-0.500\n0,5,1,46,7,0.000,0.000,-0.540\n0,0,1,54,0,0.000,0.000,0.000\n2,0,1,54,0,0.000,0.000,0.000\n5,0,1,54,0,0.000,0.000,0.000\n0,5,1,54,3,0.000,0.000,-0.315\n0,5,1,54,36,0.000,0.000,0.315\n0,0,1,55,0,0.000,0.000,0.000\n5,0,1,55,0,0.000,0.000,0.000\n0,5,1,55,36,0.000,-0.058,0.084\n0,5,1,55,57,0.000,-0.058,-0.092\n0,0,1,56,0,0.000,0.000,-0.300\n0,1,1,56,36,0.875,0.668,-0.015\n0,1,1,56,57,-0.870,0.775,-0.406\n0,5,1,56,36,-0.958,-0.629,-0.372\n0,5,1,56,57,0.952,-0.715,-0.483\n0,0,1,57,0,0.000,0.000,0.000\n5,0,1,57,0,0.000,0.000,0.000\n0,0,1,58,0,0.000,0.000,0.000\n0,0,1,62,0,0.000,0.000,0.250\n0,5,1,62,18,0.000,0.000,0.270\n0,0,1,63,0,0.000,0.000,0.000\n5,0,1,63,0,0.000,0.000,0.000\n0,0,1,64,0,0.000,0.000,0.000\n5,0,1,64,0,0.000,0.000,0.000\n0,0,1,67,0,0.000,0.000,0.000\n5,0,1,67,0,0.000,0.000,0.000\n0,0,1,68,0,0.000,0.000,0.400\n0,1,1,68,1,-0.117,0.090,0.751\n0,1,1,68,23,0.373,0.153,0.635\n0,1,1,68,32,-0.090,-0.169,0.075\n0,5,1,68,1,0.134,-0.112,0.329\n0,5,1,68,23,-0.361,-0.202,0.560\n0,5,1,68,32,0.072,0.218,0.093\n0,0,1,73,0,0.000,0.000,0.500\n0,5,1,73,32,0.000,0.000,0.509\n0,5,1,73,72,0.000,0.000,0.443\n0,0,1,75,0,0.000,0.000,0.000\n0,0,1,78,0,0.000,0.000,0.000\n0,0,1,80,0,0.000,0.000,0.000\n0,0,1,81,0,0.000,0.000,0.000\n0,0,2,2,0,0.000,12.000,0.000\n1,0,2,2,0,0.000,1.800,0.000\n5,0,2,2,0,0.000,12.000,0.000\n0,1,2,2,1,-0.403,12.000,0.000\n0,1,2,2,2,0.000,12.000,0.000\n1,1,2,2,2,-0.418,2.089,-0.310\n0,1,2,2,5,0.000,12.000,0.000\n1,1,2,2,5,0.412,2.120,0.269\n1,2,2,2,2,0.094,1.621,0.877\n0,2,2,2,5,0.000,12.000,0.000\n1,2,2,2,5,0.317,1.421,-0.870\n0,3,2,2,5,0.000,12.000,0.000\n0,5,2,2,5,0.000,12.000,0.000\n1,5,2,2,5,-0.406,1.767,0.000\n0,5,2,2,6,0.000,12.000,0.000\n0,5,2,2,37,0.000,12.000,0.000\n0,5,2,2,40,0.000,12.000,0.000\n0,5,2,2,41,0.000,12.000,0.000\n0,5,2,2,45,0.000,12.000,0.000\n0,5,2,2,62,0.000,12.000,0.000\n1,0,2,3,0,0.000,2.500,0.000\n1,1,2,3,1,0.136,1.798,0.630\n1,1,2,3,5,0.497,2.405,0.357\n1,1,2,3,6,-0.211,1.925,-0.131\n1,1,2,3,7,-0.401,2.028,-0.318\n1,1,2,3,10,-0.084,2.214,-0.610\n1,2,2,3,1,-0.325,1.553,-0.487\n1,2,2,3,5,-0.295,2.024,-0.590\n1,2,2,3,6,-0.143,1.466,0.000\n1,2,2,3,7,0.362,1.978,0.000\n1,2,2,3,9,0.296,1.514,0.481\n1,2,2,3,10,0.095,1.583,0.380\n1,5,2,3,1,0.213,1.728,-0.042\n1,5,2,3,5,-0.208,1.622,0.223\n1,5,2,3,6,0.359,1.539,0.194\n1,5,2,3,7,0.000,2.046,0.000\n1,5,2,3,9,-0.290,1.519,-0.470\n1,5,2,3,10,0.000,1.395,0.227\n1,0,2,4,0,0.000,0.000,0.000\n0,0,2,6,0,0.000,3.100,0.000\n2,0,2,6,0,0.000,3.600,0.000\n5,0,2,6,0,0.000,3.600,0.000\n0,2,2,6,1,-1.953,3.953,-1.055\n0,2,2,6,3,-1.712,2.596,-0.330\n0,2,2,6,29,-0.215,2.810,-0.456\n0,5,2,6,1,1.951,3.936,1.130\n0,5,2,6,3,1.719,2.628,0.360\n0,5,2,6,29,0.216,2.808,0.456\n1,0,2,9,0,0.000,1.800,0.000\n0,0,2,10,0,0.000,6.000,0.000\n2,0,2,10,0,0.000,6.000,0.000\n5,0,2,10,0,0.000,6.000,0.000\n0,0,2,15,0,0.000,1.423,0.000\n2,0,2,15,0,0.000,1.423,0.000\n5,0,2,15,0,0.000,1.423,0.000\n0,0,2,17,0,0.000,1.423,0.000\n0,0,2,18,0,0.000,0.000,0.000\n2,0,2,18,0,0.000,0.000,0.000\n5,0,2,18,0,0.000,0.000,0.000\n0,0,2,19,0,0.000,0.000,0.000\n0,0,2,20,0,0.000,0.000,0.000\n2,0,2,20,0,0.000,0.000,0.000\n0,0,2,22,0,0.000,0.000,0.000\n2,0,2,22,0,0.000,0.000,0.000\n5,0,2,22,0,0.000,0.000,0.000\n0,0,2,25,0,0.000,0.000,0.000\n0,0,2,30,0,0.000,12.000,0.000\n0,0,2,34,0,0.000,0.000,0.000\n2,0,2,34,0,0.000,0.000,0.000\n1,0,2,37,0,0.000,2.000,0.000\n1,1,2,37,37,0.000,2.952,-0.079\n1,2,2,37,37,0.000,1.542,0.434\n1,5,2,37,37,0.000,1.308,-0.357\n1,0,2,39,0,0.000,6.000,0.000\n0,0,2,40,0,0.000,3.700,0.000\n2,0,2,40,0,0.000,3.600,0.000\n5,0,2,40,0,0.000,3.600,0.000\n0,2,2,40,28,0.000,3.756,-0.530\n0,5,2,40,28,0.073,3.698,0.291\n0,0,2,41,0,0.000,1.200,0.000\n2,0,2,41,0,0.000,1.800,0.000\n0,2,2,41,32,0.000,1.235,0.000\n0,5,2,41,32,0.000,1.231,0.000\n0,0,2,43,0,0.000,3.600,0.000\n2,0,2,43,0,0.000,3.600,0.000\n0,0,2,45,0,0.000,2.200,0.000\n2,0,2,45,0,0.000,1.800,0.000\n0,2,2,45,32,0.000,2.212,0.000\n0,5,2,45,32,0.000,2.225,0.000\n0,0,2,46,0,0.000,1.800,0.000\n2,0,2,46,0,0.000,1.800,0.000\n0,0,2,55,0,0.000,4.800,0.000\n0,0,2,56,0,0.000,4.800,0.000\n0,0,2,62,0,0.000,8.000,0.000\n0,2,2,62,23,1.693,7.903,0.532\n0,5,2,62,23,-1.696,7.897,-0.482\n1,0,2,63,0,0.000,1.800,0.000\n1,0,2,64,0,0.000,1.800,0.000\n1,0,2,67,0,0.000,1.800,0.000\n1,0,2,81,0,0.000,4.800,0.000\n1,0,3,3,0,0.000,0.600,0.000\n4,0,3,3,0,0.000,1.800,0.000\n1,1,3,3,1,-0.486,0.714,0.000\n1,1,3,3,6,-0.081,-0.125,0.132\n1,1,3,3,7,1.053,1.327,0.000\n1,5,3,3,6,0.000,0.188,0.436\n1,5,3,3,7,0.000,0.177,-0.412\n1,6,3,3,6,0.269,0.437,0.000\n1,6,3,3,7,-0.495,0.793,-0.318\n1,7,3,3,7,-0.260,1.084,0.193\n0,0,3,6,0,0.000,5.500,0.000\n2,0,3,6,0,0.000,5.500,0.000\n4,0,3,6,0,0.000,3.600,0.000\n5,0,3,6,0,0.000,3.600,0.000\n0,1,3,6,1,-1.244,5.482,0.365\n0,1,3,6,24,-1.166,5.078,-0.545\n0,1,3,6,37,-0.677,5.854,0.521\n2,2,3,6,24,0.256,4.519,0.258\n2,3,3,6,24,1.663,4.073,0.094\n0,5,3,6,1,0.526,5.631,0.691\n0,5,3,6,2,0.159,6.586,0.216\n0,5,3,6,24,-2.285,4.737,0.468\n0,7,3,6,0,0.700,6.500,-0.400\n0,7,3,6,1,0.682,7.184,-0.935\n0,7,3,6,2,-0.168,6.572,-0.151\n0,7,3,6,24,1.662,6.152,-0.058\n0,7,3,6,37,0.635,5.890,-0.446\n2,37,3,6,24,0.000,3.892,-0.094\n0,0,3,9,0,0.000,16.000,0.000\n1,0,3,9,0,0.000,1.800,0.000\n5,0,3,9,0,0.000,12.000,0.000\n0,2,3,9,27,0.000,16.000,0.000\n0,5,3,9,1,0.687,16.152,0.894\n0,5,3,9,27,0.000,16.000,0.000\n0,40,3,9,1,-0.758,18.216,-0.188\n0,40,3,9,27,0.000,16.000,0.000\n0,0,3,10,0,0.000,6.000,0.000\n2,0,3,10,0,0.000,6.000,0.000\n4,0,3,10,0,0.000,6.000,0.000\n5,0,3,10,0,0.000,6.000,0.000\n0,1,3,10,1,0.647,6.159,0.507\n0,1,3,10,6,-1.035,8.791,1.464\n0,1,3,10,28,-0.294,5.805,1.342\n2,2,3,10,28,-0.287,7.142,0.120\n0,5,3,10,1,-0.183,6.314,1.753\n0,5,3,10,3,-0.751,5.348,0.209\n0,5,3,10,28,-0.388,5.972,0.459\n0,7,3,10,1,-0.319,6.294,-0.147\n0,7,3,10,3,0.776,-0.585,-0.145\n0,7,3,10,6,1.107,8.631,-0.452\n0,7,3,10,28,1.435,4.975,-0.454\n0,10,3,10,28,0.000,3.495,1.291\n0,0,3,15,0,0.000,1.423,0.000\n2,0,3,15,0,0.000,1.423,0.000\n4,0,3,15,0,0.000,1.423,0.000\n5,0,3,15,0,0.000,1.423,0.000\n0,0,3,17,0,0.000,1.423,0.000\n5,0,3,17,0,0.000,1.423,0.000\n0,0,3,18,0,0.000,0.000,0.000\n2,0,3,18,0,0.000,0.000,0.000\n0,0,3,20,0,0.000,0.000,-0.300\n2,0,3,20,0,0.000,0.000,0.000\n4,0,3,20,0,0.000,0.000,-0.300\n5,0,3,20,0,0.000,0.000,0.000\n0,7,3,20,0,0.000,0.400,0.400\n0,7,3,20,5,0.000,0.000,-0.131\n0,7,3,20,20,0.000,0.000,0.000\n0,20,3,20,5,0.000,0.000,0.085\n0,20,3,20,20,0.000,0.000,0.000\n0,0,3,22,0,0.000,0.000,0.000\n2,0,3,22,0,0.000,0.000,0.000\n4,0,3,22,0,0.000,0.000,0.000\n5,0,3,22,0,0.000,0.000,0.000\n0,7,3,22,0,0.000,0.400,0.400\n0,0,3,25,0,0.000,0.000,0.000\n2,0,3,25,0,0.000,0.000,0.000\n1,0,3,30,0,0.000,1.800,0.000\n4,0,3,30,0,0.000,1.800,0.000\n1,0,3,37,0,0.000,2.500,0.000\n4,0,3,37,0,0.000,1.800,0.000\n1,1,3,37,37,0.000,2.428,0.000\n1,6,3,37,37,0.000,1.743,0.000\n1,7,3,37,37,0.000,2.256,0.000\n1,43,3,37,37,-0.241,3.385,-0.838\n1,0,3,39,0,0.000,5.500,0.000\n0,0,3,40,0,0.000,3.900,0.000\n2,0,3,40,0,0.000,3.600,0.000\n5,0,3,40,0,0.000,3.600,0.000\n0,5,3,40,28,-1.477,4.362,0.902\n0,9,3,40,28,1.496,4.369,-0.417\n0,40,3,40,28,0.178,3.149,0.778\n0,0,3,41,0,0.000,1.800,0.000\n2,0,3,41,0,0.000,1.800,0.000\n0,0,3,43,0,0.000,4.500,0.000\n2,0,3,43,0,0.000,3.600,0.000\n4,0,3,43,0,0.000,3.600,0.000\n5,0,3,43,0,0.000,3.600,0.000\n0,1,3,43,18,1.712,3.309,0.233\n0,1,3,43,28,-0.414,4.168,-0.875\n0,7,3,43,18,-0.880,5.091,-0.129\n0,7,3,43,28,0.536,5.276,-0.556\n2,37,3,43,18,-0.701,4.871,1.225\n2,37,3,43,28,-0.086,5.073,0.878\n0,0,3,45,0,0.000,1.800,0.000\n2,0,3,45,0,0.000,1.800,0.000\n0,0,3,48,0,0.000,0.000,0.892\n0,0,3,51,0,0.000,13.500,0.000\n0,1,3,51,52,0.000,13.549,0.000\n0,0,3,54,0,0.000,8.000,0.000\n1,0,3,54,0,0.000,2.500,0.000\n5,0,3,54,0,0.000,12.000,0.000\n0,5,3,54,1,0.000,8.000,0.000\n0,5,3,54,36,0.000,8.000,0.000\n0,0,3,55,0,0.000,4.800,0.000\n2,0,3,55,0,0.000,4.800,0.000\n0,0,3,56,0,0.000,4.800,0.000\n2,0,3,56,0,0.000,4.800,0.000\n1,0,3,57,0,0.000,2.500,0.000\n1,0,3,58,0,0.000,4.800,0.000\n0,0,3,62,0,0.000,3.600,0.000\n2,0,3,62,0,0.000,3.600,0.000\n5,0,3,62,0,0.000,3.600,0.000\n1,0,3,63,0,0.000,2.500,0.000\n1,0,3,64,0,0.000,2.500,0.000\n0,0,3,67,0,0.000,12.000,0.000\n0,0,3,74,0,0.000,19.000,0.000\n0,1,3,74,7,0.000,19.349,0.000\n0,0,3,75,0,0.000,19.000,0.000\n0,1,3,75,71,0.000,18.751,0.000\n1,0,3,78,0,0.000,2.500,0.000\n1,0,3,80,0,0.000,2.500,0.000\n0,0,6,6,0,0.000,-2.000,0.000\n5,0,6,6,0,0.000,-2.000,0.000\n0,0,6,8,0,0.900,-1.100,-0.500\n5,0,6,8,0,0.000,0.000,0.274\n0,21,6,8,1,0.261,-0.330,-0.542\n0,21,6,8,23,1.503,-1.853,-0.476\n0,0,6,9,0,0.000,3.600,0.000\n5,0,6,9,0,0.000,3.600,0.000\n0,0,6,10,0,1.200,0.500,-1.000\n0,21,6,10,1,0.875,0.180,-0.733\n0,21,6,10,3,0.529,0.000,-1.163\n0,0,6,15,0,0.000,-4.000,0.000\n0,0,6,17,0,0.000,1.423,0.000\n5,0,6,17,0,0.000,1.423,0.000\n0,0,6,18,0,0.000,0.000,0.100\n5,0,6,18,0,0.000,0.000,0.103\n0,33,6,18,1,-0.520,-0.471,-0.267\n0,33,6,18,6,-1.623,0.204,0.438\n0,33,6,18,32,1.616,0.425,0.191\n0,0,6,19,0,0.000,0.000,0.150\n5,0,6,19,0,0.000,0.000,0.165\n0,21,6,19,1,-0.620,-0.329,0.303\n0,21,6,19,5,0.683,0.220,0.000\n0,0,6,20,0,0.000,0.000,0.400\n4,0,6,20,0,0.000,0.000,0.217\n5,0,6,20,0,0.000,0.000,0.217\n0,20,6,20,5,0.000,0.000,-0.079\n4,20,6,20,20,0.000,0.000,0.000\n0,0,6,22,0,0.000,0.000,0.217\n0,0,6,25,0,0.000,0.000,0.650\n5,0,6,25,0,0.000,0.000,0.231\n0,1,6,25,1,-1.704,-0.452,0.556\n0,1,6,25,6,0.000,0.000,0.777\n0,1,6,25,32,1.205,0.914,0.612\n0,24,6,25,6,-3.209,-7.622,1.065\n0,24,6,25,32,-5.891,-3.332,0.290\n0,0,6,26,0,0.000,0.000,0.346\n0,0,6,30,0,0.000,3.600,0.000\n2,0,6,30,0,0.000,3.600,0.000\n0,0,6,37,0,0.000,3.200,0.000\n5,0,6,37,0,0.000,3.600,0.000\n0,1,6,37,37,0.000,4.382,0.000\n0,3,6,37,37,0.000,2.576,0.000\n0,29,6,37,37,0.000,2.801,0.000\n0,0,6,39,0,0.000,0.000,0.000\n0,0,6,40,0,0.000,0.000,0.274\n0,0,6,41,0,0.000,3.600,0.000\n0,0,6,43,0,0.000,0.000,0.274\n0,0,6,45,0,0.000,6.000,0.000\n0,1,6,45,32,0.000,6.208,0.000\n0,0,6,54,0,0.000,3.600,0.000\n0,0,6,55,0,0.000,3.600,0.000\n0,0,6,57,0,0.000,3.600,0.000\n0,0,6,58,0,0.000,3.600,0.000\n0,0,6,63,0,0.000,3.600,0.000\n0,0,6,64,0,0.000,3.600,0.000\n0,0,8,8,0,0.000,0.000,0.375\n5,0,8,8,0,0.000,0.000,0.375\n0,0,8,9,0,0.000,3.600,0.000\n5,0,8,9,0,0.000,3.600,0.000\n0,0,8,10,0,0.000,0.000,0.000\n4,0,8,10,0,0.000,0.000,0.000\n0,0,8,15,0,0.000,0.000,0.424\n0,0,8,17,0,0.000,1.423,0.000\n4,0,8,17,0,0.000,1.423,0.000\n5,0,8,17,0,0.000,1.423,0.000\n0,0,8,19,0,0.000,0.000,0.225\n0,0,8,20,0,0.000,0.000,0.350\n4,0,8,20,0,0.000,0.000,0.300\n5,0,8,20,0,0.000,0.000,0.297\n0,20,8,20,5,0.000,0.120,0.472\n4,20,8,20,20,0.000,-0.097,0.200\n0,23,8,20,5,-0.101,-0.324,0.371\n0,23,8,20,20,0.107,0.253,0.151\n0,0,8,22,0,0.000,0.000,0.297\n0,0,8,25,0,0.000,0.000,0.316\n5,0,8,25,0,0.000,0.000,0.316\n0,0,8,26,0,0.000,0.000,0.474\n5,0,8,26,0,0.000,0.000,0.474\n0,0,8,34,0,0.000,0.000,0.250\n0,0,8,39,0,0.000,0.000,0.000\n0,0,8,40,0,0.000,0.000,0.375\n0,0,8,43,0,0.000,0.000,0.375\n0,0,8,45,0,0.000,3.600,0.000\n0,0,8,46,0,0.000,3.600,0.000\n0,0,8,55,0,0.000,3.600,0.000\n0,0,8,56,0,0.000,3.600,0.000\n0,0,9,9,0,0.000,12.000,0.000\n1,0,9,9,0,0.000,1.800,0.000\n5,0,9,9,0,0.000,12.000,0.000\n0,0,9,10,0,0.000,6.000,0.000\n5,0,9,10,0,0.000,6.000,0.000\n0,0,9,15,0,0.000,1.423,0.000\n0,0,9,18,0,0.000,0.000,0.000\n0,0,9,19,0,0.000,0.000,0.000\n0,0,9,20,0,0.000,0.000,0.000\n0,0,9,25,0,0.000,0.000,0.000\n0,0,9,34,0,0.000,0.000,0.000\n5,0,9,34,0,0.000,0.000,0.000\n1,0,9,37,0,0.000,1.800,0.000\n1,0,9,39,0,0.000,6.000,0.000\n0,0,9,40,0,0.000,3.600,0.000\n0,0,9,41,0,0.000,4.800,0.000\n0,0,9,45,0,0.000,1.800,0.000\n0,0,9,54,0,0.000,12.000,0.000\n0,0,9,55,0,0.000,4.800,0.000\n0,0,9,56,0,0.000,4.800,0.000\n1,0,9,57,0,0.000,1.800,0.000\n0,0,9,62,0,0.000,3.600,0.000\n1,0,9,63,0,0.000,1.800,0.000\n1,0,9,64,0,0.000,1.800,0.000\n0,0,9,67,0,0.000,12.000,0.000\n1,0,9,78,0,0.000,1.800,0.000\n1,0,9,81,0,0.000,4.800,0.000\n0,0,10,10,0,0.000,0.000,0.000\n5,0,10,10,0,0.000,0.000,0.000\n0,0,10,15,0,0.000,0.000,0.000\n0,0,10,17,0,0.000,4.743,0.000\n0,0,10,20,0,0.000,0.000,0.000\n4,0,10,20,0,0.000,0.000,0.000\n5,0,10,20,0,0.000,0.000,0.000\n0,0,10,22,0,0.000,0.000,0.000\n0,0,10,25,0,0.000,0.000,0.000\n0,0,10,26,0,0.000,0.000,0.000\n5,0,10,26,0,0.000,0.000,0.000\n0,0,10,34,0,0.000,0.000,0.000\n0,0,10,37,0,0.000,6.000,0.000\n0,0,10,39,0,0.000,0.000,0.000\n0,0,10,40,0,0.000,0.000,0.000\n5,0,10,40,0,0.000,0.000,0.000\n0,0,10,41,0,0.000,6.000,0.000\n0,0,10,45,0,0.000,6.000,0.000\n0,0,10,63,0,0.000,6.000,0.000\n0,0,10,64,0,0.000,6.000,0.000\n0,0,15,15,0,-1.400,-8.300,1.000\n5,0,15,15,0,0.000,-8.000,0.000\n0,1,15,15,1,-1.663,-8.408,1.433\n0,1,15,15,71,-1.088,-8.245,0.411\n0,0,15,18,0,0.000,0.000,0.160\n0,0,15,19,0,0.000,0.000,0.255\n5,0,15,19,0,0.000,0.000,0.255\n0,0,15,20,0,0.000,0.000,0.336\n4,0,15,20,0,0.000,0.000,0.336\n0,0,15,22,0,0.000,0.000,0.336\n0,0,15,25,0,0.000,0.000,0.358\n4,0,15,25,0,0.000,0.000,0.358\n0,0,15,26,0,0.000,0.000,0.537\n0,0,15,30,0,0.000,1.423,0.000\n4,0,15,30,0,0.000,1.423,0.000\n0,0,15,37,0,0.000,1.300,0.000\n5,0,15,37,0,0.000,1.423,0.000\n0,1,15,37,37,0.000,2.177,0.000\n0,71,15,37,37,0.000,0.505,0.333\n0,0,15,40,0,0.000,0.000,0.424\n0,0,15,43,0,0.000,0.000,0.424\n0,0,15,57,0,0.000,1.423,0.000\n0,0,15,63,0,0.000,1.423,0.000\n0,0,15,64,0,0.000,1.423,0.000\n0,0,17,20,0,0.000,0.000,0.000\n4,0,17,20,0,0.000,0.000,0.000\n5,0,17,20,0,0.000,0.000,0.000\n0,0,17,22,0,0.000,0.000,0.000\n0,0,17,37,0,0.000,1.423,0.000\n0,0,17,43,0,0.000,3.795,0.000\n0,0,18,20,0,0.000,0.000,0.112\n4,0,18,20,0,0.000,0.000,0.112\n5,0,18,20,0,0.000,0.000,0.112\n0,0,18,22,0,0.000,0.000,0.112\n0,0,18,37,0,0.000,-1.200,-0.300\n0,32,18,37,37,-0.173,-0.965,-0.610\n0,39,18,37,37,0.000,-0.760,0.227\n0,43,18,37,37,0.228,-1.741,-0.371\n0,0,18,39,0,0.000,0.000,0.500\n0,32,18,39,63,0.000,0.687,0.680\n0,37,18,39,63,0.000,-0.513,0.357\n0,0,18,43,0,0.000,0.000,0.350\n4,0,18,43,0,0.000,0.000,0.141\n5,0,18,43,0,0.000,0.000,0.141\n0,1,18,43,1,-0.914,-0.482,0.179\n0,1,18,43,3,-0.392,-2.724,0.312\n0,1,18,43,28,-1.508,-1.816,-0.175\n0,1,18,43,37,0.823,-1.220,-0.770\n0,32,18,43,1,1.588,1.499,1.410\n0,32,18,43,3,0.653,0.254,0.000\n0,32,18,43,28,0.528,0.342,0.000\n0,32,18,43,37,0.812,1.513,1.266\n0,37,18,43,1,-1.139,-0.703,1.088\n0,37,18,43,28,-2.014,-1.646,-2.068\n0,37,18,43,37,-1.519,-0.328,1.437\n0,43,18,43,28,3.011,-1.405,2.038\n0,0,18,48,0,0.000,0.000,0.400\n0,1,18,48,28,1.767,1.606,0.408\n0,32,18,48,28,-1.463,-2.548,0.310\n0,0,18,55,0,0.000,0.000,0.000\n0,0,18,58,0,0.000,0.000,0.000\n0,0,18,62,0,0.000,0.000,0.500\n0,1,18,62,1,-0.403,-0.273,0.440\n0,32,18,62,1,0.291,0.385,0.582\n0,0,18,63,0,0.000,0.000,0.000\n0,0,18,64,0,0.000,0.000,0.000\n0,0,18,80,0,0.000,0.000,0.000\n0,0,19,20,0,0.000,0.000,0.179\n4,0,19,20,0,0.000,0.000,0.179\n0,0,19,37,0,0.000,0.000,0.000\n0,0,19,40,0,0.000,0.000,0.225\n0,0,19,63,0,0.000,0.000,0.000\n0,0,19,75,0,0.000,0.000,0.000\n0,0,20,20,0,0.000,0.000,0.200\n4,0,20,20,0,0.000,0.000,0.000\n5,0,20,20,0,0.000,0.000,0.236\n0,1,20,20,5,0.067,0.081,0.347\n0,1,20,20,20,-0.063,-0.064,0.140\n0,3,20,20,5,0.000,0.000,0.083\n0,3,20,20,20,0.000,0.000,0.000\n0,5,20,20,5,0.000,0.000,0.424\n0,5,20,20,6,0.000,0.000,-0.080\n0,5,20,20,8,0.000,0.127,0.450\n0,5,20,20,12,-0.072,-0.269,0.439\n0,5,20,20,20,-0.057,0.000,0.307\n4,6,20,20,20,0.000,0.000,0.000\n4,8,20,20,20,0.000,-0.091,0.192\n0,12,20,20,20,0.077,0.202,0.183\n4,20,20,20,20,0.000,0.000,0.000\n0,0,20,22,0,0.000,0.000,0.236\n4,0,20,22,0,0.000,0.000,0.236\n0,0,20,25,0,0.000,0.000,0.251\n4,0,20,25,0,0.000,0.000,0.251\n0,0,20,26,0,0.000,0.000,0.376\n4,0,20,26,0,0.000,0.000,0.376\n5,0,20,26,0,0.000,0.000,0.376\n0,0,20,30,0,0.000,0.000,0.000\n2,0,20,30,0,0.000,0.000,0.000\n4,0,20,30,0,0.000,0.000,0.000\n0,0,20,30,30,0.000,0.000,-0.500\n0,0,20,34,0,0.000,0.000,0.198\n4,0,20,34,0,0.000,0.000,0.198\n0,0,20,37,0,0.000,0.000,0.000\n4,0,20,37,0,0.000,0.000,0.000\n0,0,20,40,0,0.000,0.000,0.297\n0,0,20,41,0,0.000,0.000,0.000\n0,0,20,43,0,0.000,0.000,0.297\n4,0,20,43,0,0.000,0.000,0.297\n0,0,20,45,0,0.000,0.000,0.000\n0,0,22,22,0,0.000,0.000,0.236\n4,0,22,22,0,0.000,0.000,0.236\n5,0,22,22,0,0.000,0.000,0.236\n0,0,22,30,0,0.000,0.000,0.000\n4,0,22,30,0,0.000,0.000,0.000\n0,0,22,34,0,0.000,0.000,0.198\n0,0,22,37,0,0.000,0.000,0.000\n0,0,22,40,0,0.000,0.000,0.297\n0,0,22,41,0,0.000,0.000,0.000\n0,0,22,43,0,0.000,0.000,0.297\n5,0,22,43,0,0.000,0.000,0.297\n0,0,22,45,0,0.000,0.000,0.000\n0,0,25,25,0,0.000,0.000,0.267\n0,0,25,37,0,0.000,0.000,0.000\n5,0,25,37,0,0.000,0.000,0.000\n0,0,25,39,0,0.000,0.000,0.000\n0,0,25,40,0,0.000,0.000,0.316\n5,0,25,40,0,0.000,0.000,0.316\n0,0,25,43,0,0.000,0.000,0.250\n0,1,25,43,1,-2.686,-1.512,0.591\n0,1,25,43,28,-3.730,-0.531,0.000\n0,32,25,43,1,2.108,1.896,0.965\n0,32,25,43,28,2.977,0.732,-0.502\n0,0,25,57,0,0.000,0.000,0.000\n0,0,25,63,0,0.000,0.000,0.000\n0,0,26,26,0,0.000,0.000,0.600\n5,0,26,26,0,0.000,0.000,0.600\n0,0,26,34,0,0.000,0.000,0.316\n5,0,26,34,0,0.000,0.000,0.316\n0,0,26,37,0,0.000,1.423,0.000\n0,0,26,40,0,0.000,0.000,0.474\n0,0,30,30,0,0.000,12.000,0.000\n1,0,30,30,0,0.000,1.800,0.000\n4,0,30,30,0,0.000,1.800,0.000\n0,0,30,40,0,0.000,3.600,0.000\n1,0,30,67,0,0.000,1.800,0.000\n0,0,34,37,0,0.000,0.000,0.000\n0,0,34,43,0,0.000,0.000,0.250\n0,0,37,37,0,0.000,7.000,0.000\n1,0,37,37,0,0.000,2.000,0.000\n4,0,37,37,0,0.000,6.000,0.000\n5,0,37,37,0,0.000,6.000,0.000\n0,1,37,37,5,0.000,7.000,0.000\n0,1,37,37,37,0.000,7.000,0.000\n0,2,37,37,5,0.000,7.000,0.000\n0,2,37,37,37,0.000,7.000,0.000\n0,3,37,37,5,0.000,7.000,0.000\n0,3,37,37,37,0.000,7.000,0.000\n0,5,37,37,5,0.000,7.000,0.000\n0,5,37,37,6,0.000,7.000,0.000\n0,5,37,37,15,0.000,7.000,0.000\n0,5,37,37,18,0.000,7.000,0.000\n0,5,37,37,37,0.000,7.000,0.000\n0,5,37,37,40,0.000,7.000,0.000\n0,5,37,37,43,0.000,7.000,0.000\n0,6,37,37,37,0.000,7.000,0.000\n0,15,37,37,37,0.000,7.000,0.000\n0,18,37,37,37,0.000,7.000,0.000\n0,37,37,37,37,0.000,7.000,0.000\n0,37,37,37,40,0.000,7.000,0.000\n0,37,37,37,43,0.000,7.000,0.000\n0,0,37,38,0,0.000,7.000,0.000\n0,0,37,39,0,0.000,3.600,0.000\n1,0,37,39,0,0.000,6.000,0.000\n0,0,37,40,0,0.000,4.000,0.000\n5,0,37,40,0,0.000,3.600,0.000\n0,37,37,40,1,0.000,4.336,0.370\n0,37,37,40,28,0.715,2.628,3.355\n0,0,37,41,0,0.000,1.800,0.000\n0,0,37,43,0,0.000,2.000,1.800\n5,0,37,43,0,0.000,3.600,0.000\n0,37,37,43,18,0.372,2.284,2.034\n0,37,37,43,28,0.000,1.694,1.508\n0,0,37,45,0,0.000,1.800,0.000\n0,0,37,46,0,0.000,1.800,0.000\n0,0,37,55,0,0.000,4.800,0.000\n0,0,37,56,0,0.000,4.800,0.000\n1,0,37,57,0,0.000,1.800,0.000\n0,0,37,58,0,0.000,6.000,0.000\n1,0,37,58,0,0.000,4.800,0.000\n0,0,37,62,0,0.000,3.600,0.000\n0,0,37,63,0,0.000,7.000,0.000\n1,0,37,63,0,0.000,1.800,0.000\n0,0,37,64,0,0.000,7.000,0.000\n1,0,37,64,0,0.000,1.800,0.000\n1,0,37,67,0,0.000,1.800,0.000\n0,0,37,69,0,0.000,7.000,0.000\n0,0,37,78,0,0.000,6.000,0.000\n0,0,37,81,0,0.000,6.000,0.000\n1,0,37,81,0,0.000,4.800,0.000\n0,0,38,38,0,0.000,7.000,0.000\n0,0,38,58,0,0.000,7.000,0.000\n0,0,38,63,0,0.000,7.000,0.000\n0,0,38,64,0,0.000,7.000,0.000\n0,0,38,69,0,0.000,6.000,0.000\n0,0,38,78,0,0.000,6.000,0.000\n0,0,39,40,0,0.000,0.000,0.000\n0,0,39,45,0,0.000,6.000,0.000\n0,0,39,63,0,0.000,4.000,0.000\n1,0,39,63,0,0.000,6.000,0.000\n5,0,39,63,0,0.000,3.600,0.000\n0,1,39,63,5,0.000,4.000,0.000\n0,1,39,63,64,0.000,4.000,0.000\n0,18,39,63,5,0.000,4.000,0.000\n0,18,39,63,64,0.000,4.000,0.000\n0,63,39,63,5,0.000,4.000,0.000\n0,63,39,63,64,0.000,4.000,0.000\n0,0,39,64,0,0.000,3.600,0.000\n1,0,39,64,0,0.000,6.000,0.000\n0,0,39,65,0,0.000,4.000,0.000\n0,0,39,78,0,0.000,3.600,0.000\n0,0,40,40,0,0.000,0.000,0.375\n0,0,40,45,0,0.000,3.600,0.000\n0,0,40,46,0,0.000,3.600,0.000\n0,0,40,54,0,0.000,3.600,0.000\n2,0,40,54,0,0.000,3.600,0.000\n0,0,40,63,0,0.000,3.600,0.000\n0,0,40,64,0,0.000,3.600,0.000\n0,0,40,78,0,0.000,3.600,0.000\n0,0,41,41,0,0.000,1.800,0.000\n0,0,41,55,0,0.000,4.800,0.000\n0,0,41,62,0,0.000,3.600,0.000\n0,0,41,80,0,0.000,1.800,0.000\n0,0,43,43,0,0.000,0.000,0.375\n0,0,43,45,0,0.000,3.600,0.000\n0,0,43,64,0,0.000,3.600,0.000\n0,0,44,57,0,0.000,7.000,0.000\n0,0,44,63,0,0.000,7.000,0.000\n0,0,44,65,0,0.000,7.000,0.000\n0,0,44,78,0,0.000,2.846,0.000\n0,0,44,80,0,0.000,2.846,0.000\n0,0,45,63,0,0.000,1.800,0.000\n0,0,45,64,0,0.000,1.800,0.000\n0,0,45,78,0,0.000,1.800,0.000\n0,0,55,57,0,0.000,10.000,0.000\n2,0,55,57,0,0.000,4.800,0.000\n5,0,55,57,0,0.000,4.800,0.000\n0,1,55,57,5,0.423,12.064,0.090\n0,1,55,57,55,-0.428,12.044,0.000\n0,36,55,57,5,-0.268,8.077,-0.806\n0,36,55,57,55,0.273,8.025,0.692\n0,0,55,62,0,0.000,3.600,0.000\n0,0,55,64,0,0.000,4.800,0.000\n0,0,55,80,0,0.000,4.800,0.000\n0,0,56,57,0,0.000,6.000,0.000\n0,1,56,57,56,0.000,6.886,-0.161\n0,36,56,57,56,0.000,4.688,0.107\n0,0,56,63,0,0.000,4.800,0.000\n0,0,56,80,0,0.000,4.800,0.000\n1,0,57,63,0,0.000,1.800,0.000\n1,0,57,64,0,0.000,1.800,0.000\n0,0,58,63,0,0.000,6.000,0.000\n0,0,58,64,0,0.000,6.000,0.000\n0,0,59,63,0,0.000,7.000,0.000\n0,0,59,65,0,0.000,7.000,0.000\n0,0,59,78,0,0.000,3.600,0.000\n0,0,59,80,0,0.000,3.600,0.000\n0,0,59,82,0,0.000,3.600,0.000\n0,0,62,63,0,0.000,3.600,0.000\n0,0,62,64,0,0.000,3.600,0.000\n1,0,63,63,0,0.000,1.800,0.000\n0,0,63,64,0,0.000,7.000,0.000\n0,5,63,64,5,0.000,7.000,0.000\n0,5,63,64,64,0.000,7.000,0.000\n0,39,63,64,5,0.000,7.000,0.000\n0,39,63,64,64,0.000,7.000,0.000\n0,0,63,66,0,0.000,7.000,0.000\n0,0,63,78,0,0.000,6.000,0.000\n0,0,63,81,0,0.000,6.000,0.000\n0,0,64,64,0,0.000,7.000,0.000\n1,0,64,64,0,0.000,1.800,0.000\n0,5,64,64,5,0.000,7.000,0.000\n0,5,64,64,63,0.000,7.000,0.000\n0,63,64,64,63,0.000,7.000,0.000\n0,0,64,65,0,0.000,7.000,0.000\n0,0,64,66,0,0.000,7.000,0.000\n0,0,64,78,0,0.000,6.000,0.000\n0,0,64,81,0,0.000,6.000,0.000\n5,0,64,81,0,0.000,6.000,0.000\n0,0,64,82,0,0.000,6.000,0.000\n0,0,65,66,0,0.000,7.000,0.000\n0,0,65,78,0,0.000,6.000,0.000\n0,0,65,81,0,0.000,6.000,0.000\n0,0,65,82,0,0.000,6.000,0.000\n0,0,66,66,0,0.000,7.000,0.000\n0,0,66,78,0,0.000,6.000,0.000\n0,0,66,81,0,0.000,6.000,0.000\n0,0,67,67,0,0.000,12.000,0.000\n5,0,67,67,0,0.000,12.000,0.000\n0,0,76,76,0,0.000,3.600,0.000\n0,0,76,78,0,0.000,3.600,0.000\n0,0,78,78,0,0.000,7.000,0.000\n0,0,78,79,0,0.000,6.000,0.000\n0,0,78,81,0,0.000,4.000,0.000\n0,0,79,79,0,0.000,6.000,0.000\n0,0,79,81,0,0.000,6.000,0.000\n0,0,80,81,0,0.000,4.000,0.000\n', "95\nint,float,float,float,float,char\n1,1.050,2.490,3.890,1.282,'-'\n2,1.350,2.490,3.890,1.282,'-'\n3,1.100,2.490,3.890,1.282,'-'\n4,1.300,2.490,3.890,1.282,'-'\n5,0.250,0.800,4.200,1.209,'-'\n6,0.700,3.150,3.890,1.282,'A'\n7,0.650,3.150,3.890,1.282,'A'\n8,1.150,2.820,3.890,1.282,'A'\n9,0.900,2.820,3.890,1.282,'A'\n10,1.000,2.820,3.890,1.282,'A'\n11,0.350,3.480,3.890,1.282,'A'\n12,2.300,5.100,3.320,1.345,'A'\n13,3.400,6.000,3.190,1.359,'A'\n14,5.500,6.950,3.080,1.404,'A'\n15,3.000,4.800,3.320,1.345,'A'\n16,3.900,4.800,3.320,1.345,'A'\n17,2.700,4.800,3.320,1.345,'-'\n18,2.100,4.800,3.320,1.345,'-'\n19,4.500,4.200,3.320,1.345,'-'\n20,1.050,2.490,3.890,1.282,'-'\n21,0.150,0.800,4.200,1.209,'D'\n22,1.100,2.490,3.890,1.282,'-'\n23,0.150,0.800,4.200,1.209,'D'\n24,0.150,0.800,4.200,1.209,'D'\n25,1.600,4.500,3.320,1.345,'-'\n26,3.600,4.500,3.320,1.345,'A'\n27,0.150,0.800,4.200,1.209,'D'\n28,0.150,0.800,4.200,1.209,'D'\n29,0.150,0.800,4.200,1.209,'D'\n30,1.350,2.490,3.890,1.282,'-'\n31,0.150,0.800,4.200,1.209,'D'\n32,0.750,3.150,3.890,1.282,'A'\n33,0.150,0.800,4.200,1.209,'D'\n34,1.000,2.820,3.890,1.282,'-'\n35,1.500,3.150,3.890,1.282,'A'\n36,0.150,0.800,4.200,1.209,'D'\n37,1.350,2.490,3.890,1.282,'-'\n38,0.850,2.820,3.890,1.282,'A'\n39,1.100,2.820,3.890,1.282,'-'\n40,1.000,2.820,3.890,1.282,'A'\n41,1.100,2.490,3.890,1.282,'-'\n42,1.000,2.820,3.890,1.282,'A'\n43,1.000,2.820,3.890,1.282,'A'\n44,3.000,4.800,3.320,1.345,'A'\n45,1.150,2.820,3.890,1.282,'-'\n46,1.300,2.820,3.890,1.282,'-'\n47,1.000,2.820,3.890,1.282,'A'\n48,1.200,2.820,3.890,1.282,'A'\n49,1.000,3.150,3.890,1.282,'-'\n50,0.150,0.800,4.200,1.209,'D'\n51,0.400,3.150,3.890,1.282,'-'\n52,0.150,0.800,4.200,1.209,'D'\n53,1.000,2.820,3.890,1.282,'-'\n54,1.300,2.820,3.890,1.282,'-'\n55,0.800,2.820,3.890,1.282,'-'\n56,0.800,2.820,3.890,1.282,'-'\n57,1.000,2.490,3.890,1.282,'-'\n58,0.800,2.820,3.890,1.282,'-'\n59,0.650,3.150,3.890,1.282,'A'\n60,1.800,2.490,3.890,1.282,'A'\n61,0.800,2.820,3.890,1.282,'A'\n62,1.300,2.820,3.890,1.282,'A'\n63,1.350,2.490,3.890,1.282,'-'\n64,1.350,2.490,3.890,1.282,'-'\n65,1.000,2.820,3.890,1.282,'A'\n66,0.750,2.820,3.890,1.282,'A'\n67,0.950,2.820,3.890,1.282,'A'\n68,0.900,2.820,3.890,1.282,'A'\n69,0.950,2.820,3.890,1.282,'A'\n70,0.870,3.150,3.890,1.282,'A'\n71,0.150,0.800,4.200,1.209,'D'\n72,4.000,4.800,3.320,1.345,'A'\n73,3.000,4.800,3.320,1.345,'-'\n74,3.000,4.800,3.320,1.345,'-'\n75,4.000,4.500,3.320,1.345,'A'\n76,1.200,2.820,3.890,1.282,'A'\n77,1.500,5.100,3.320,1.345,'A'\n78,1.350,2.490,3.890,1.282,'-'\n79,1.000,2.820,3.890,1.282,'A'\n80,1.000,2.490,3.890,1.282,'-'\n81,0.800,2.820,3.890,1.282,'-'\n82,0.950,2.820,3.890,1.282,'A'\n87,0.450,6.000,4.000,1.400,'-'\n88,0.550,6.000,4.000,1.400,'-'\n89,1.400,3.480,3.890,1.282,'A'\n90,4.500,5.100,3.320,1.345,'A'\n91,6.000,6.000,3.190,1.359,'A'\n92,0.150,2.000,4.000,1.300,'-'\n93,0.400,3.500,4.000,1.300,'-'\n94,1.000,5.000,4.000,1.300,'-'\n95,0.430,6.000,4.000,1.400,'-'\n96,0.900,5.000,4.000,1.400,'-'\n97,0.350,6.000,4.000,1.400,'-'\n98,0.400,6.000,4.000,1.400,'-'\n99,0.350,3.500,4.000,1.300,'-'\n");
}
;
defineClass(261, 1, {261:1, 1:1}, carcfm.Tables);
_.$init_94 = function $init_94(){
}
;
carcfm.RESOURCE_PATH = '/resources/forcefield/mmff94/';
cggl.Lcom_actelion_research_chem_forcefield_mmff_Tables_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Tables', 261, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_TorsionAngle = function $clinit_TorsionAngle(){
  carcfm.$clinit_TorsionAngle = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.TorsionAngle = function TorsionAngle(table, mol, a1, a2, a3, a4){
  var kbs;
  Object_0.call(this);
  this.$init_95();
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
  this.a4 = a4;
  this.a1t = mol.getAtomType(a1);
  this.a2t = mol.getAtomType(a2);
  this.a3t = mol.getAtomType(a3);
  this.a4t = mol.getAtomType(a4);
  kbs = table.torsion.getForceConstants(mol, a1, a2, a3, a4);
  this.v1 = kbs.v1;
  this.v2 = kbs.v2;
  this.v3 = kbs.v3;
}
;
carcfm.findIn_4 = function findIn_4(t, mol){
  carcfm.$clinit_TorsionAngle();
  var a1, a2, a3, a4, j, k, l, tor, tors;
  tors = new ju.ArrayList;
  for (a1 = 0; a1 < mol.getAllAtoms_0(); a1++) {
    for (j = 0; j < mol.getAllConnAtoms_0(a1); j++) {
      a2 = mol.getConnAtom_0(a1, j);
      for (k = 0; k < mol.getAllConnAtoms_0(a2); k++) {
        a3 = mol.getConnAtom_0(a2, k);
        if (a1 == a3)
          continue;
        for (l = 0; l < mol.getAllConnAtoms_0(a3); l++) {
          a4 = mol.getConnAtom_0(a3, l);
          if (a2 == a4 || a1 == a4)
            continue;
          if (a4 > a1) {
            tor = new carcfm.TorsionAngle(t, mol, a1, a2, a3, a4);
            if (tor.nonZero())
              tors.add(tor);
          }
        }
      }
    }
  }
  return tors;
}
;
defineClass(617, 1, {150:1, 1:1}, carcfm.TorsionAngle);
_.$init_95 = function $init_95(){
}
;
_.getEnergy_0 = function getEnergy_5(pos){
  var cos2Phi, cos3Phi, cosPhi, r1, r2, r3, r4, t1, t2;
  r1 = new carcfm.Vector3_4(pos, this.a1, this.a2);
  r2 = new carcfm.Vector3_4(pos, this.a3, this.a2);
  r3 = new carcfm.Vector3_4(pos, this.a2, this.a3);
  r4 = new carcfm.Vector3_4(pos, this.a4, this.a3);
  t1 = r1.cross_0(r2);
  t2 = r3.cross_0(r4);
  cosPhi = t1.cosAngle(t2);
  cos2Phi = 2 * cosPhi * cosPhi - 1;
  cos3Phi = cosPhi * (2 * cos2Phi - 1);
  return 0.5 * (this.v1 * (1 + cosPhi) + this.v2 * (1 - cos2Phi) + this.v3 * (1 + cos3Phi));
}
;
_.getGradient = function getGradient_4(pos, grad){
  var cosPhi, d, dCos_dT, dE_dPhi, r, sin2Phi, sin3Phi, sinPhi, sinPhiSq, sinTerm, t;
  r = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_Vector3_2_classLit, 1), {4:1, 1:1, 7:1}, 26, 0, [new carcfm.Vector3_4(pos, this.a2, this.a1), new carcfm.Vector3_4(pos, this.a2, this.a3), new carcfm.Vector3_4(pos, this.a3, this.a2), new carcfm.Vector3_4(pos, this.a3, this.a4)]);
  t = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_forcefield_mmff_Vector3_2_classLit, 1), {4:1, 1:1, 7:1}, 26, 0, [r[0].cross_0(r[1]), r[2].cross_0(r[3])]);
  d = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [t[0].length_1(), t[1].length_1()]);
  if ($wnd.Math.abs(d[0]) < 1.0E-5 || $wnd.Math.abs(d[1]) < 1.0E-5)
    return;
  setCheck(t, 0, t[0].normalise());
  setCheck(t, 1, t[1].normalise());
  cosPhi = t[0].dot_0(t[1]);
  sinPhiSq = 1 - cosPhi * cosPhi;
  sinPhi = sinPhiSq > 0?$wnd.Math.sqrt(sinPhiSq):0;
  sin2Phi = 2 * sinPhi * cosPhi;
  sin3Phi = 3 * sinPhi - 4 * sinPhi * sinPhiSq;
  dE_dPhi = 0.5 * (-this.v1 * sinPhi + 2 * this.v2 * sin2Phi - 3 * this.v3 * sin3Phi);
  sinTerm = -dE_dPhi * ($wnd.Math.abs(sinPhi) < 1.0E-5?1 / cosPhi:1 / sinPhi);
  dCos_dT = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [1 / d[0] * (t[1].x_0 - cosPhi * t[0].x_0), 1 / d[0] * (t[1].y_0 - cosPhi * t[0].y_0), 1 / d[0] * (t[1].z_0 - cosPhi * t[0].z_0), 1 / d[1] * (t[0].x_0 - cosPhi * t[1].x_0), 1 / d[1] * (t[0].y_0 - cosPhi * t[1].y_0), 1 / d[1] * (t[0].z_0 - cosPhi * t[1].z_0)]);
  grad[3 * this.a1 + 0] += sinTerm * (dCos_dT[2] * r[1].y_0 - dCos_dT[1] * r[1].z_0);
  grad[3 * this.a1 + 1] += sinTerm * (dCos_dT[0] * r[1].z_0 - dCos_dT[2] * r[1].x_0);
  grad[3 * this.a1 + 2] += sinTerm * (dCos_dT[1] * r[1].x_0 - dCos_dT[0] * r[1].y_0);
  grad[3 * this.a2 + 0] += sinTerm * (dCos_dT[1] * (r[1].z_0 - r[0].z_0) + dCos_dT[2] * (r[0].y_0 - r[1].y_0) + dCos_dT[4] * -r[3].z_0 + dCos_dT[5] * r[3].y_0);
  grad[3 * this.a2 + 1] += sinTerm * (dCos_dT[0] * (r[0].z_0 - r[1].z_0) + dCos_dT[2] * (r[1].x_0 - r[0].x_0) + dCos_dT[3] * r[3].z_0 + dCos_dT[5] * -r[3].x_0);
  grad[3 * this.a2 + 2] += sinTerm * (dCos_dT[0] * (r[1].y_0 - r[0].y_0) + dCos_dT[1] * (r[0].x_0 - r[1].x_0) + dCos_dT[3] * -r[3].y_0 + dCos_dT[4] * r[3].x_0);
  grad[3 * this.a3 + 0] += sinTerm * (dCos_dT[1] * r[0].z_0 + dCos_dT[2] * -r[0].y_0 + dCos_dT[4] * (r[3].z_0 - r[2].z_0) + dCos_dT[5] * (r[2].y_0 - r[3].y_0));
  grad[3 * this.a3 + 1] += sinTerm * (dCos_dT[0] * -r[0].z_0 + dCos_dT[2] * r[0].x_0 + dCos_dT[3] * (r[2].z_0 - r[3].z_0) + dCos_dT[5] * (r[3].x_0 - r[2].x_0));
  grad[3 * this.a3 + 2] += sinTerm * (dCos_dT[0] * r[0].y_0 + dCos_dT[1] * -r[0].x_0 + dCos_dT[3] * (r[3].y_0 - r[2].y_0) + dCos_dT[4] * (r[2].x_0 - r[3].x_0));
  grad[3 * this.a4 + 0] += sinTerm * (dCos_dT[4] * r[2].z_0 - dCos_dT[5] * r[2].y_0);
  grad[3 * this.a4 + 1] += sinTerm * (dCos_dT[5] * r[2].x_0 - dCos_dT[3] * r[2].z_0);
  grad[3 * this.a4 + 2] += sinTerm * (dCos_dT[3] * r[2].y_0 - dCos_dT[4] * r[2].x_0);
}
;
_.nonZero = function nonZero(){
  return $wnd.Math.abs(this.v1) > 0.001 || $wnd.Math.abs(this.v2) > 0.001 || $wnd.Math.abs(this.v3) > 0.001;
}
;
_.a1 = 0;
_.a1t = 0;
_.a2 = 0;
_.a2t = 0;
_.a3 = 0;
_.a3t = 0;
_.a4 = 0;
_.a4t = 0;
_.v1 = 0;
_.v2 = 0;
_.v3 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_TorsionAngle_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'TorsionAngle', 617, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_VanDerWaals = function $clinit_VanDerWaals(){
  carcfm.$clinit_VanDerWaals = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.VanDerWaals = function VanDerWaals(table, mol, a1, a2){
  var rs, wd;
  Object_0.call(this);
  this.$init_96();
  this.a1t = mol.getAtomType(a1);
  this.a2t = mol.getAtomType(a2);
  this.a1 = a1;
  this.a2 = a2;
  rs = this.minimum(table);
  wd = this.wellDepth(table, rs);
  this.da1 = table.vdws.da(this.a1t);
  this.da2 = table.vdws.da(this.a2t);
  if (this.da1 == 68 && this.da2 == 65 || this.da1 == 65 && this.da2 == 68) {
    rs = rs * table.vdws.darad;
    wd *= table.vdws.daeps;
  }
  this.rstar_ij = rs;
  this.well_depth = wd;
}
;
carcfm.findIn_5 = function findIn_5(table, mol, sep, nonbondedCutoff){
  carcfm.$clinit_VanDerWaals();
  var atompair, i, j, relation, vdws;
  vdws = new ju.ArrayList;
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    for (j = i + 1; j < mol.getAllAtoms_0(); j++) {
      atompair = new carcfm.SortedPair(i, j);
      relation = sep.get_1(atompair);
      if ((jsEquals(relation, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_FOUR)) || jsEquals(relation, (carcfm.$clinit_Separation$Relation() , carcfm.ONE_X))) && (new carcfm.Vector3_1(mol, i, j)).length_1() < nonbondedCutoff) {
        vdws.add(new carcfm.VanDerWaals(table, mol, i, j));
      }
    }
  }
  return vdws;
}
;
defineClass(618, 1, {150:1, 1:1}, carcfm.VanDerWaals);
_.$init_96 = function $init_96(){
}
;
_.getEnergy_0 = function getEnergy_6(pos){
  var aTerm, aTerm2, aTerm7, bTerm, dist, dist2, dist7, rstar_ij2, rstar_ij7, vdw1, vdw1m1, vdw2, vdw2m1;
  dist = (new carcfm.Vector3_4(pos, this.a1, this.a2)).length_1();
  vdw1 = 1.07;
  vdw1m1 = 1.07 - 1;
  vdw2 = 1.12;
  vdw2m1 = 1.12 - 1;
  dist2 = dist * dist;
  dist7 = dist2 * dist2 * dist2 * dist;
  aTerm = 1.07 * this.rstar_ij / (dist + 0.07000000000000006 * this.rstar_ij);
  aTerm2 = aTerm * aTerm;
  aTerm7 = aTerm2 * aTerm2 * aTerm2 * aTerm;
  rstar_ij2 = this.rstar_ij * this.rstar_ij;
  rstar_ij7 = rstar_ij2 * rstar_ij2 * rstar_ij2 * this.rstar_ij;
  bTerm = 1.12 * rstar_ij7 / (dist7 + 0.1200000000000001 * rstar_ij7) - 2;
  return aTerm7 * bTerm * this.well_depth;
}
;
_.getGradient = function getGradient_5(pos, grad){
  var dE_dr, dGrad, dist, i, q, q2, q6, q7, q7pvdw2m1, t, t2, t7, vdw1, vdw1m1, vdw2, vdw2m1, vdw2t7;
  vdw1 = 1.07;
  vdw1m1 = 1.07 - 1;
  vdw2 = 1.12;
  vdw2m1 = 1.12 - 1;
  vdw2t7 = 1.12 * 7;
  dist = (new carcfm.Vector3_4(pos, this.a1, this.a2)).length_1();
  q = dist / this.rstar_ij;
  q2 = q * q;
  q6 = q2 * q2 * q2;
  q7 = q6 * q;
  q7pvdw2m1 = q7 + 0.1200000000000001;
  t = 1.07 / (q + 1.07 - 1);
  t2 = t * t;
  t7 = t2 * t2 * t2 * t;
  dE_dr = this.well_depth / this.rstar_ij * t7 * (-7.840000000000001 * q6 / (q7pvdw2m1 * q7pvdw2m1) + (-7.840000000000001 / q7pvdw2m1 + 14) / (q + 0.07000000000000006));
  for (i = 0; i < 3; i++) {
    dGrad = 0.01 * this.rstar_ij;
    if (dist > 0)
      dGrad = dE_dr * (pos[3 * this.a1 + i] - pos[3 * this.a2 + i]) / dist;
    grad[3 * this.a1 + i] += dGrad;
    grad[3 * this.a2 + i] -= dGrad;
  }
}
;
_.minimum = function minimum(table){
  var da1, da2, gamma_ij, rs1, rs2;
  rs1 = table.vdws.r_star(this.a1t);
  rs2 = table.vdws.r_star(this.a2t);
  da1 = table.vdws.da(this.a1t);
  da2 = table.vdws.da(this.a2t);
  gamma_ij = (rs1 - rs2) / (rs1 + rs2);
  return 0.5 * (rs1 + rs2) * (1 + (da1 == 68 || da2 == 68?0:table.vdws.b * (1 - $wnd.Math.exp(-table.vdws.beta_0 * gamma_ij * gamma_ij))));
}
;
_.wellDepth = function wellDepth(table, rs){
  var alpha1, alpha2, c4, gi1, gi2, ni1, ni2, rstar_ij2;
  gi1 = table.vdws.g_i(this.a1t);
  gi2 = table.vdws.g_i(this.a2t);
  alpha1 = table.vdws.alpha_i(this.a1t);
  alpha2 = table.vdws.alpha_i(this.a2t);
  ni1 = table.vdws.n_i(this.a1t);
  ni2 = table.vdws.n_i(this.a2t);
  rstar_ij2 = rs * rs;
  c4 = 181.16;
  return c4 * gi1 * gi2 * alpha1 * alpha2 / (($wnd.Math.sqrt(alpha1 / ni1) + $wnd.Math.sqrt(alpha2 / ni2)) * rstar_ij2 * rstar_ij2 * rstar_ij2);
}
;
_.a1 = 0;
_.a1t = 0;
_.a2 = 0;
_.a2t = 0;
_.da1 = 0;
_.da2 = 0;
_.rstar_ij = 0;
_.well_depth = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_VanDerWaals_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'VanDerWaals', 618, cggl.Ljava_lang_Object_2_classLit);
carcfm.$clinit_Vector3 = function $clinit_Vector3(){
  carcfm.$clinit_Vector3 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfm.Vector3 = function Vector3(x_0, y_0, z_0){
  Object_0.call(this);
  this.$init_97();
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.z_0 = z_0;
}
;
carcfm.Vector3_0 = function Vector3_0(mol, atom){
  Object_0.call(this);
  this.$init_97();
  this.x_0 = mol.getAtomX_0(atom);
  this.y_0 = mol.getAtomY_0(atom);
  this.z_0 = mol.getAtomZ_0(atom);
}
;
carcfm.Vector3_1 = function Vector3_1(mol, atom1, atom2){
  carcfm.$clinit_Vector3();
  carcfm.Vector3_2.call(this, (new carcfm.Vector3_0(mol, atom1)).to(new carcfm.Vector3_0(mol, atom2)));
}
;
carcfm.Vector3_2 = function Vector3_2(that){
  Object_0.call(this);
  this.$init_97();
  this.x_0 = that.x_0;
  this.y_0 = that.y_0;
  this.z_0 = that.z_0;
}
;
carcfm.Vector3_3 = function Vector3_3(pos, offset){
  carcfm.$clinit_Vector3();
  Object_0.call(this);
  this.$init_97();
  this.x_0 = pos[3 * offset];
  this.y_0 = pos[3 * offset + 1];
  this.z_0 = pos[3 * offset + 2];
}
;
carcfm.Vector3_4 = function Vector3_4(pos, atom1, atom2){
  carcfm.$clinit_Vector3();
  carcfm.Vector3_2.call(this, (new carcfm.Vector3_3(pos, atom1)).to(new carcfm.Vector3_3(pos, atom2)));
}
;
defineClass(26, 1, {26:1, 1:1}, carcfm.Vector3, carcfm.Vector3_0, carcfm.Vector3_1, carcfm.Vector3_3, carcfm.Vector3_4);
_.$init_97 = function $init_97(){
}
;
_.angle_0 = function angle_0(that){
  return $wnd.Math.acos(this.dot_0(that) / (this.length_1() * that.length_1()));
}
;
_.cosAngle = function cosAngle(that){
  return this.dot_0(that) / (this.length_1() * that.length_1());
}
;
_.cross_0 = function cross_0(that){
  return new carcfm.Vector3(this.y_0 * that.z_0 - this.z_0 * that.y_0, this.z_0 * that.x_0 - this.x_0 * that.z_0, this.x_0 * that.y_0 - this.y_0 * that.x_0);
}
;
_.distance_0 = function distance_1(that){
  return $wnd.Math.sqrt((this.x_0 - that.x_0) * (this.x_0 - that.x_0) + (this.y_0 - that.y_0) * (this.y_0 - that.y_0) + (this.z_0 - that.z_0) * (this.z_0 - that.z_0));
}
;
_.dot_0 = function dot_1(that){
  return this.x_0 * that.x_0 + this.y_0 * that.y_0 + this.z_0 * that.z_0;
}
;
_.equals_0 = function equals_14(obj){
  var that;
  if (maskUndefined(obj) === maskUndefined(this))
    return true;
  if (!instanceOf(obj, 26))
    return false;
  that = castTo(obj, 26);
  return $wnd.Math.abs(this.x_0 - that.x_0) < 0.01 && $wnd.Math.abs(this.y_0 - that.y_0) < 0.01 && $wnd.Math.abs(this.z_0 - that.z_0) < 0.01;
}
;
_.hashCode_1 = function hashCode_4(){
  return jl.hashCode__I__devirtual$_1(jl.$create_1(this.x_0)) + jl.hashCode__I__devirtual$_1(jl.$create_1(this.y_0)) + jl.hashCode__I__devirtual$_1(jl.$create_1(this.z_0));
}
;
_.length_1 = function length_1(){
  return $wnd.Math.sqrt(this.x_0 * this.x_0 + this.y_0 * this.y_0 + this.z_0 * this.z_0);
}
;
_.negate = function negate(){
  return new carcfm.Vector3(-this.x_0, -this.y_0, -this.z_0);
}
;
_.normalise = function normalise(){
  if (this.length_1() > 0)
    return new carcfm.Vector3(this.x_0 / this.length_1(), this.y_0 / this.length_1(), this.z_0 / this.length_1());
  return new carcfm.Vector3(0, 0, 0);
}
;
_.to = function to_0(that){
  return new carcfm.Vector3(that.x_0 - this.x_0, that.y_0 - this.y_0, that.z_0 - this.z_0);
}
;
_.x_0 = 0;
_.y_0 = 0;
_.z_0 = 0;
carcfm.TOL = 0.01;
cggl.Lcom_actelion_research_chem_forcefield_mmff_Vector3_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff', 'Vector3', 26, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Angle = function $clinit_Angle(){
  carcfmt.$clinit_Angle = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Angle = function Angle(t, csvpath){
  carcfmt.$clinit_Angle();
  Object_0.call(this);
  this.$init_98();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
defineClass(692, 1, {1:1}, carcfmt.Angle);
_.$init_98 = function $init_98(){
}
;
_.get_0 = function get_2(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.getEmpiricalKa = function getEmpiricalKa(mol, a1, a2, a3, theta0){
  var D, atno, beta_0, c, i, r0_ij, r0_jk, theta0_rad, z_0;
  z_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 0, 0]);
  c = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 0, 0]);
  atno = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [mol.getAtomicNo_0(a1), mol.getAtomicNo_0(a2), mol.getAtomicNo_0(a3)]);
  beta_0 = 1.75;
  for (i = 0; i < 3; i++) {
    switch (atno[i]) {
      case 1:
        z_0[i] = 1.395;
        break;
      case 6:
        z_0[i] = 2.494;
        c[i] = 1.016;
        break;
      case 7:
        z_0[i] = 2.711;
        c[i] = 1.113;
        break;
      case 8:
        z_0[i] = 3.045;
        c[i] = 1.337;
        break;
      case 9:
        z_0[i] = 2.847;
        break;
      case 14:
        z_0[i] = 2.35;
        c[i] = 0.811;
        break;
      case 15:
        z_0[i] = 2.35;
        c[i] = 1.068;
        break;
      case 16:
        z_0[i] = 2.98;
        c[i] = 1.249;
        break;
      case 17:
        z_0[i] = 2.909;
        c[i] = 1.078;
        break;
      case 35:
        z_0[i] = 3.017;
        break;
      case 53:
        z_0[i] = 3.086;
        break;
    }
  }
  r0_ij = this.t.bond.r0_1(mol, a1, a2);
  r0_jk = this.t.bond.r0_1(mol, a2, a3);
  D = (r0_ij - r0_jk) * (r0_ij - r0_jk) / ((r0_ij + r0_jk) * (r0_ij + r0_jk));
  theta0_rad = 0.017453292519943295 * theta0;
  if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 4))
    beta_0 *= 0.85;
  else if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 3))
    beta_0 *= 0.05;
  return beta_0 * z_0[0] * c[1] * z_0[2] / ((r0_ij + r0_jk) * theta0_rad * theta0_rad * $wnd.Math.exp(2 * D));
}
;
_.getEmpiricalTheta0 = function getEmpiricalTheta0(mol, a1, a2, a3){
  var a2t;
  if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 3))
    return 60;
  else if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 4))
    return 90;
  a2t = mol.getAtomType(a2);
  switch (this.t.atom.crd(a2t)) {
    case 2:
      if (mol.getAtomicNo_0(a2) == 8)
        return 105;
      else if (this.t.atom.linear(a2t))
        return 180;
      break;
    case 3:
      if (this.t.atom.val_0(a2t) == 3 && this.t.atom.mltb(a2t) == 0) {
        if (mol.getAtomicNo_0(a2) == 7)
          return 107;
        else 
          return 92;
      }

      break;
    case 4:
      return 109.45;
  }
  return 120;
}
;
_.index_1 = function index_1(mol, a1, a2, a3){
  var a1t, a1tf, a2t, a3t, a3tf, angt, i, index_0;
  a1t = mol.getAtomType(a1);
  a2t = mol.getAtomType(a2);
  a3t = mol.getAtomType(a3);
  angt = carcfmt2.getType(this.t, mol, a1, a2, a3);
  index_0 = -1;
  for (i = 0; i < 5 && index_0 < 0; i++) {
    a1tf = this.t.def.table[a1t - 1][i];
    a3tf = this.t.def.table[a3t - 1][i];
    if (a1tf > a3tf)
      a1tf = castTo(carcfm.s_0(jl.valueOf_26(a3tf), jl.valueOf_26(a3tf = a1tf)), 32).intValue();
    index_0 = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 1, 3, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [a2t, a1tf, a3tf, angt]), this);
  }
  return index_0;
}
;
_.ka_0 = function ka(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][4], 24));
}
;
_.ka_1 = function ka_0(mol, a1, a2, a3){
  var index_0;
  index_0 = this.index_1(mol, a1, a2, a3);
  if (index_0 < 0)
    return this.getEmpiricalKa(mol, a1, a2, a3, this.getEmpiricalTheta0(mol, a1, a2, a3));
  else {
    if ($wnd.Math.abs(this.ka_0(index_0)) < 0.001)
      return this.getEmpiricalKa(mol, a1, a2, a3, this.theta(index_0));
    else 
      return this.ka_0(index_0);
  }
}
;
_.length_0 = function length_2(){
  return this.table.length;
}
;
_.theta = function theta_0(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][5], 24));
}
;
_.theta_0 = function theta_1(mol, a1, a2, a3){
  var index_0;
  index_0 = this.index_1(mol, a1, a2, a3);
  if (index_0 < 0)
    return this.getEmpiricalTheta0(mol, a1, a2, a3);
  else 
    return this.theta(index_0);
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Angle_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Angle', 692, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Atom = function $clinit_Atom(){
  carcfmt.$clinit_Atom = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Atom = function Atom(t, csvpath){
  carcfmt.$clinit_Atom();
  Object_0.call(this);
  this.$init_99();
  this.table = carcfm.readIntsFile(csvpath);
}
;
defineClass(657, 1, {1:1}, carcfmt.Atom);
_.$init_99 = function $init_99(){
}
;
_.arom = function arom(type_0){
  return this.table[this.index_2(type_0)][6] > 0;
}
;
_.crd = function crd(type_0){
  return this.table[this.index_2(type_0)][2];
}
;
_.get_0 = function get_3(row, col){
  return this.table[row][col];
}
;
_.index_2 = function index_2(type_0){
  return carcfm.binary_0(0, type_0, this);
}
;
_.length_0 = function length_3(){
  return this.table.length;
}
;
_.linear = function linear(type_0){
  var idx;
  idx = this.index_2(type_0);
  return idx >= 0?this.table[idx][7] > 0:false;
}
;
_.mltb = function mltb(type_0){
  return this.table[this.index_2(type_0)][5];
}
;
_.pilp = function pilp(type_0){
  return this.table[this.index_2(type_0)][4];
}
;
_.sbmb = function sbmb(type_0){
  return this.table[this.index_2(type_0)][8] > 0;
}
;
_.val_0 = function val_0(type_0){
  return this.table[this.index_2(type_0)][3];
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Atom_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Atom', 657, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Bndk = function $clinit_Bndk(){
  carcfmt.$clinit_Bndk = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Bndk = function Bndk(t, csvpath){
  carcfmt.$clinit_Bndk();
  Object_0.call(this);
  this.$init_100();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(700, 1, {1:1}, carcfmt.Bndk);
_.$init_100 = function $init_100(){
}
;
_.get_0 = function get_4(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.kb_0 = function kb(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][3], 24));
}
;
_.length_0 = function length_4(){
  return this.table.length;
}
;
_.r0_0 = function r0_0(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][2], 24));
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Bndk_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Bndk', 700, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Bond = function $clinit_Bond(){
  carcfmt.$clinit_Bond = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Bond = function Bond(t, csvpath){
  carcfmt.$clinit_Bond();
  Object_0.call(this);
  this.$init_101();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
defineClass(696, 1, {1:1}, carcfmt.Bond);
_.$init_101 = function $init_101(){
}
;
_.get_0 = function get_5(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.kb_0 = function kb_0(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][3], 24));
}
;
_.kb_1 = function kb_1(mol, atom1, atom2){
  var a1no, a1t, a2no, a2t, bidx, bndk_idx, bondt, coeff, index_0, r0;
  bondt = carcfmt2.getType_1(this.t, mol, mol.getBond_0(atom1, atom2));
  a1t = mol.getAtomType(atom1);
  a2t = mol.getAtomType(atom2);
  if (a1t > a2t)
    a1t = castTo(carcfm.s_0(jl.valueOf_26(a2t), jl.valueOf_26(a2t = a1t)), 32).intValue();
  index_0 = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 2, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [a1t, a2t, bondt]), this);
  if (index_0 >= 0) {
    return this.kb_0(index_0);
  }
   else {
    a1no = mol.getAtomicNo_0(atom1);
    a2no = mol.getAtomicNo_0(atom2);
    if (a1no > a2no)
      a1no = castTo(carcfm.s_0(jl.valueOf_26(a2no), jl.valueOf_26(a2no = a1no)), 32).intValue();
    r0 = this.r0_1(mol, atom1, atom2);
    bndk_idx = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [a1no, a2no]), this.t.bndk);
    if (bndk_idx >= 0) {
      coeff = $wnd.Math.pow(this.t.bndk.r0_0(bndk_idx) / r0, 6);
      return this.t.bndk.kb_0(bndk_idx) * coeff;
    }
     else {
      bidx = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0, 1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [carcfm.rowtm(a1no), carcfm.rowtm(a2no)]), this.t.hblaurie);
      return $wnd.Math.pow(10, -(r0 - this.t.hblaurie.fget(bidx, 2)) / this.t.hblaurie.fget(bidx, 3));
    }
  }
}
;
_.length_0 = function length_5(){
  return this.table.length;
}
;
_.r0_0 = function r0_1(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][4], 24));
}
;
_.r0_1 = function r0_2(mol, atom1, atom2){
  var a1cri, a1no, a1t, a2cri, a2no, a2t, bondt, c, chi_i, chi_j, index_0, r0_i, r0_j;
  bondt = carcfmt2.getType_1(this.t, mol, mol.getBond_0(atom1, atom2));
  a1t = mol.getAtomType(atom1);
  a2t = mol.getAtomType(atom2);
  if (a1t > a2t)
    a1t = castTo(carcfm.s_0(jl.valueOf_26(a2t), jl.valueOf_26(a2t = a1t)), 32).intValue();
  index_0 = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 2, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [a1t, a2t, bondt]), this);
  if (index_0 >= 0)
    return this.r0_0(index_0);
  else {
    a1no = mol.getAtomicNo_0(atom1);
    a2no = mol.getAtomicNo_0(atom2);
    if (a1no > a2no)
      a1no = castTo(carcfm.s_0(jl.valueOf_26(a2no), jl.valueOf_26(a2no = a1no)), 32).intValue();
    a1cri = carcfm.binary_0(0, a1no, this.t.covrad);
    a2cri = carcfm.binary_0(0, a2no, this.t.covrad);
    r0_i = this.t.covrad.r0_0(a1cri);
    r0_j = this.t.covrad.r0_0(a2cri);
    chi_i = this.t.covrad.chi(a1cri);
    chi_j = this.t.covrad.chi(a2cri);
    c = a1no == 1 || a2no == 1?0.05:0.085;
    return r0_i + r0_j - c * $wnd.Math.pow($wnd.Math.abs(chi_i - chi_j), 1.4);
  }
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Bond_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Bond', 696, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Charge = function $clinit_Charge(){
  carcfmt.$clinit_Charge = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Charge = function Charge(t, csv_pbci, csv_bci){
  carcfmt.$clinit_Charge();
  Object_0.call(this);
  this.$init_102();
  this.pbci = carcfm.readFile(csv_pbci);
  this.bci = carcfm.readFile(csv_bci);
}
;
defineClass(693, 1, {1:1}, carcfmt.Charge);
_.$init_102 = function $init_102(){
}
;
_.bci_binary_search = function bci_binary_search(col, val, lo, hi, findlow){
  return carcfm.binary(col, val, lo, hi, findlow, new carcfmt.Charge$1(this));
}
;
_.getFcadj = function getFcadj(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.pbci[type_0 - 1][2], 24));
}
;
_.getPartial = function getPartial(bondt, a1t, a2t){
  var a1hi, a1lo, a2hi, a2lo, ath, atl, sign;
  sign = a1t > a2t?1:-1;
  atl = a1t > a2t?a2t:a1t;
  ath = a1t > a2t?a1t:a2t;
  a1lo = this.bci_binary_search(1, atl, 0, this.bci.length, true);
  a1hi = this.bci_binary_search(1, atl, 0, this.bci.length, false);
  if (a1lo == -1 || a1hi == -1)
    return this.getPbci(a1t) - this.getPbci(a2t);
  a2lo = this.bci_binary_search(2, ath, a1lo, a1hi + 1, true);
  a2hi = this.bci_binary_search(2, ath, a1lo, a1hi + 1, false);
  if (a2lo == -1 || a2hi == -1)
    return this.getPbci(a1t) - this.getPbci(a2t);
  if (bondt == 0 && this.get_bci_n(a2lo, 0) == 0)
    return sign * this.get_bci_f(a2lo, 3);
  else if (bondt == 1 && this.get_bci_n(a2hi, 0) == 1)
    return sign * this.get_bci_f(a2hi, 3);
  return this.getPbci(a1t) - this.getPbci(a2t);
}
;
_.getPbci = function getPbci(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.pbci[type_0 - 1][1], 24));
}
;
_.get_bci_f = function get_bci_f(row, col){
  return jl.doubleValue__D__devirtual$(castTo(this.bci[row][col], 24));
}
;
_.get_bci_n = function get_bci_n(row, col){
  return jl.intValue__I__devirtual$(castTo(this.bci[row][col], 24));
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Charge_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Charge', 693, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Charge$1 = function $clinit_Charge$1(){
  carcfmt.$clinit_Charge$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Charge$1 = function Charge$1(this$0){
  carcfmt.$clinit_Charge$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_103();
}
;
defineClass(694, 1, {1:1}, carcfmt.Charge$1);
_.$init_103 = function $init_103(){
}
;
_.get_0 = function get_6(row, col){
  return jl.intValue__I__devirtual$(castTo(this.this$01.bci[row][col], 24));
}
;
_.length_0 = function length_6(){
  return this.this$01.bci.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Charge$1_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Charge/1', 694, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_CovRad = function $clinit_CovRad(){
  carcfmt.$clinit_CovRad = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.CovRad = function CovRad(t, csvpath){
  carcfmt.$clinit_CovRad();
  Object_0.call(this);
  this.$init_104();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(701, 1, {1:1}, carcfmt.CovRad);
_.$init_104 = function $init_104(){
}
;
_.chi = function chi_0(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][2], 24));
}
;
_.get_0 = function get_7(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.length_0 = function length_7(){
  return this.table.length;
}
;
_.r0_0 = function r0_3(index_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][1], 24));
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_CovRad_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'CovRad', 701, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Def = function $clinit_Def(){
  carcfmt.$clinit_Def = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Def = function Def(t, csvpath){
  carcfmt.$clinit_Def();
  Object_0.call(this);
  this.$init_105();
  this.table = carcfm.readIntsFile(csvpath);
}
;
defineClass(703, 1, {1:1}, carcfmt.Def);
_.$init_105 = function $init_105(){
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Def_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Def', 703, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Dfsb = function $clinit_Dfsb(){
  carcfmt.$clinit_Dfsb = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Dfsb = function Dfsb(t, csvpath){
  carcfmt.$clinit_Dfsb();
  Object_0.call(this);
  this.$init_106();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(702, 1, {1:1}, carcfmt.Dfsb);
_.$init_106 = function $init_106(){
}
;
_.get_0 = function get_8(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.index_1 = function index_3(mol, a1, a2, a3){
  var a1r, a2r, a3r;
  a1r = carcfm.row_0(mol.getAtomicNo_0(a1));
  a2r = carcfm.row_0(mol.getAtomicNo_0(a2));
  a3r = carcfm.row_0(mol.getAtomicNo_0(a3));
  if (a1r > a3r)
    a1r = castTo(carcfm.s_0(jl.valueOf_26(a3r), jl.valueOf_26(a3r = a1r)), 32).intValue();
  return carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 0, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [a2r, a1r, a3r]), this);
}
;
_.kb_2 = function kb_2(mol, a1, a2, a3){
  var a1r, a3r, at, idx;
  a1r = carcfm.row_0(mol.getAtomicNo_0(a1));
  a3r = carcfm.row_0(mol.getAtomicNo_0(a3));
  at = a1r > a3r?4:3;
  idx = this.index_1(mol, a1, a2, a3);
  return idx >= 0?jl.doubleValue__D__devirtual$(castTo(this.table[idx][at], 24)):0;
}
;
_.length_0 = function length_8(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Dfsb_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Dfsb', 702, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_HerschbachLaurie = function $clinit_HerschbachLaurie(){
  carcfmt.$clinit_HerschbachLaurie = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.HerschbachLaurie = function HerschbachLaurie(t, csvpath){
  carcfmt.$clinit_HerschbachLaurie();
  Object_0.call(this);
  this.$init_107();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(704, 1, {1:1}, carcfmt.HerschbachLaurie);
_.$init_107 = function $init_107(){
}
;
_.fget = function fget(row, col){
  return jl.doubleValue__D__devirtual$(castTo(this.table[row][col], 24));
}
;
_.get_0 = function get_9(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.length_0 = function length_9(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_HerschbachLaurie_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'HerschbachLaurie', 704, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_OutOfPlane_0 = function $clinit_OutOfPlane_0(){
  carcfmt.$clinit_OutOfPlane_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.OutOfPlane_0 = function OutOfPlane_0(t, csvpath){
  carcfmt.$clinit_OutOfPlane_0();
  Object_0.call(this);
  this.$init_108();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
defineClass(695, 1, {1:1}, carcfmt.OutOfPlane_0);
_.$init_108 = function $init_108(){
}
;
_.get_0 = function get_10(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.getKoop = function getKoop(mol, ac, a1, a2, a3){
  var act, i, index_0, n, nbr, nbrf;
  act = mol.getAtomType(ac);
  nbr = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [mol.getAtomType(a1), mol.getAtomType(a2), mol.getAtomType(a3)]);
  for (i = 0; i < 4; i++) {
    nbrf = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 3, 15, 1);
    for (n = 0; n < 3; n++)
      nbrf[n] = this.t.def.table[nbr[n] - 1][i + 1];
    ju.sort_3(nbrf);
    index_0 = carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 0, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [act, nbrf[0], nbrf[1], nbrf[2]]), this);
    if (index_0 >= 0)
      return jl.doubleValue__D__devirtual$(castTo(this.table[index_0][4], 24));
  }
  return 0;
}
;
_.length_0 = function length_10(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_OutOfPlane_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'OutOfPlane', 695, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Stbn = function $clinit_Stbn(){
  carcfmt.$clinit_Stbn = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Stbn = function Stbn(t, csvpath){
  carcfmt.$clinit_Stbn();
  Object_0.call(this);
  this.$init_109();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
defineClass(697, 1, {1:1}, carcfmt.Stbn);
_.$init_109 = function $init_109(){
}
;
_.get_0 = function get_11(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.index_1 = function index_4(mol, a1, a2, a3){
  var a1t, a2t, a3t, angt;
  a1t = mol.getAtomType(a1);
  a2t = mol.getAtomType(a2);
  a3t = mol.getAtomType(a3);
  angt = carcfmt2.getStbnType(this.t, mol, a1, a2, a3);
  if (a1t > a3t)
    a1t = castTo(carcfm.s_0(jl.valueOf_26(a3t), jl.valueOf_26(a3t = a1t)), 32).intValue();
  return carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 1, 3, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [a2t, a1t, a3t, angt]), this);
}
;
_.kba = function kba(mol, a1, a2, a3){
  var a1t, a3t, at, b1t, b2t, idx;
  a1t = mol.getAtomType(a1);
  a3t = mol.getAtomType(a3);
  b1t = carcfmt2.getType_2(this.t, mol, a1, a2);
  b2t = carcfmt2.getType_2(this.t, mol, a2, a3);
  idx = this.index_1(mol, a1, a2, a3);
  at = a1t > a3t || a1t == a3t && b1t < b2t?1:0;
  if (idx >= 0)
    return jl.doubleValue__D__devirtual$(castTo(this.table[idx][4 + at], 24));
  return this.t.dfsb.kb_2(mol, a1, a2, a3);
}
;
_.length_0 = function length_11(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Stbn_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Stbn', 697, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Torsion = function $clinit_Torsion(){
  carcfmt.$clinit_Torsion = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Torsion = function Torsion(t, csvpath){
  carcfmt.$clinit_Torsion();
  Object_0.call(this);
  this.$init_110();
  this.table = carcfm.readFile(csvpath);
  this.t = t;
}
;
carcfmt.s_1 = function s_1(a, b){
  return a;
}
;
defineClass(698, 1, {1:1}, carcfmt.Torsion);
_.$init_110 = function $init_110(){
}
;
_.get_0 = function get_12(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.getForceConstants = function getForceConstants(mol, a1, a2, a3, a4){
  var N_jk, U, V, W, a1t, a2t, a3t, a4t, atno, beta_0, bond, canIAtomType, canJAtomType, canKAtomType, canLAtomType, canTorType, i, iWildCard, idx, iter, lWildCard, maxIter, pi_jk, tort, tort1, tort2;
  a1t = mol.getAtomType(a1);
  a2t = mol.getAtomType(a2);
  a3t = mol.getAtomType(a3);
  a4t = mol.getAtomType(a4);
  tort = carcfmt2.getType_3(this.t, mol, a1, a2, a3, a4);
  tort1 = tort > 10?narrow_int(tort / 10):tort;
  tort2 = tort > 10?tort - tort1 * 10:0;
  idx = -1;
  iter = 0;
  iWildCard = 0;
  lWildCard = 0;
  canTorType = tort1;
  maxIter = 5;
  while (iter < maxIter && (idx == -1 || maxIter == 4) || iter == 4 && tort1 == 5 && tort2 > 0) {
    if (maxIter == 5 && iter == 4) {
      maxIter = 4;
      iter = 0;
      canTorType = tort2;
    }
    if (iter == 1) {
      iWildCard = 1;
      lWildCard = 3;
    }
     else if (iter == 2) {
      iWildCard = 3;
      lWildCard = 1;
    }
     else {
      iWildCard = iter;
      lWildCard = iter;
    }
    canIAtomType = this.t.def.table[a1t - 1][$wnd.Math.min(iWildCard + 1, 4)];
    canJAtomType = a2t;
    canKAtomType = a3t;
    canLAtomType = this.t.def.table[a4t - 1][$wnd.Math.min(lWildCard + 1, 4)];
    if (canJAtomType > canKAtomType) {
      canKAtomType = castTo(carcfmt.s_1(jl.valueOf_26(canJAtomType), jl.valueOf_26(canJAtomType = canKAtomType)), 32).intValue();
      canLAtomType = castTo(carcfmt.s_1(jl.valueOf_26(canIAtomType), jl.valueOf_26(canIAtomType = canLAtomType)), 32).intValue();
    }
     else if (canJAtomType == canKAtomType && canIAtomType > canLAtomType) {
      canLAtomType = castTo(carcfmt.s_1(jl.valueOf_26(canIAtomType), jl.valueOf_26(canIAtomType = canLAtomType)), 32).intValue();
    }
    idx = this.index_3(canIAtomType, canJAtomType, canKAtomType, canLAtomType, canTorType);
    if (idx != -1 && maxIter == 4)
      break;
    iter++;
  }
  if (idx >= 0)
    return new carcfmt.Torsion$Kb_1(this, idx);
  bond = mol.getBond_0(a2, a3);
  U = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 0]);
  V = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 0]);
  W = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [0, 0]);
  atno = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [mol.getAtomicNo_0(a2), mol.getAtomicNo_0(a3)]);
  N_jk = (this.t.atom.crd(a2t) - 1) * (this.t.atom.crd(a3t) - 1);
  for (i = 0; i < 2; i++) {
    switch (atno[i]) {
      case 6:
        U[i] = 2;
        V[i] = 2.12;
        break;
      case 7:
        U[i] = 2;
        V[i] = 1.5;
        break;
      case 8:
        U[i] = 2;
        V[i] = 0.2;
        W[i] = 2;
        break;
      case 14:
        U[i] = 1.25;
        V[i] = 1.22;
        break;
      case 15:
        U[i] = 1.25;
        V[i] = 2.4;
        break;
      case 16:
        U[i] = 1.25;
        V[i] = 0.49;
        W[i] = 8;
        break;
    }
  }
  if (this.t.atom.linear(a2t) || this.t.atom.linear(a3t))
    return new carcfmt.Torsion$Kb_0(this, 0, 0, 0);
  if (this.t.atom.arom(a2t) && this.t.atom.arom(a3t) && mol.isAromaticBond_0(bond)) {
    beta_0 = this.t.atom.val_0(a2t) == 3 && this.t.atom.val_0(a3t) == 4 || this.t.atom.val_0(a2t) == 4 && this.t.atom.val_0(a3t) == 3?3:6;
    pi_jk = this.t.atom.pilp(a2t) == 0 && this.t.atom.pilp(a3t) == 0?0.5:0.3;
    return new carcfmt.Torsion$Kb_0(this, 0, beta_0 * pi_jk * $wnd.Math.sqrt(U[0] * U[1]), 0);
  }
  if (mol.getBondOrder_0(bond) == 2) {
    beta_0 = 6;
    pi_jk = this.t.atom.mltb(a2t) == 2 && this.t.atom.mltb(a3t) == 2?1:0.4;
    return new carcfmt.Torsion$Kb_0(this, 0, beta_0 * pi_jk * $wnd.Math.sqrt(U[0] * U[1]), 0);
  }
  if (this.t.atom.crd(a2t) == 4 && this.t.atom.crd(a3t) == 4)
    return new carcfmt.Torsion$Kb_0(this, 0, 0, $wnd.Math.sqrt(V[0] * V[1]) / N_jk);
  if (this.t.atom.crd(a2t) == 4 && this.t.atom.crd(a3t) != 4) {
    if (this.t.atom.crd(a3t) == 3 && (this.t.atom.val_0(a3t) == 4 || this.t.atom.val_0(a3t) == 34 || this.t.atom.mltb(a3t) > 0) || this.t.atom.crd(a3t) == 2 && (this.t.atom.val_0(a3t) == 3 || this.t.atom.mltb(a3t) > 0))
      return new carcfmt.Torsion$Kb(this);
    else 
      return new carcfmt.Torsion$Kb_0(this, 0, 0, $wnd.Math.sqrt(V[0] * V[1]) / N_jk);
  }
  if (this.t.atom.crd(a3t) == 4 && this.t.atom.crd(a2t) != 4) {
    if (this.t.atom.crd(a2t) == 3 && (this.t.atom.val_0(a2t) == 4 || this.t.atom.val_0(a2t) == 34 || this.t.atom.mltb(a2t) > 0) || this.t.atom.crd(a2t) == 2 && (this.t.atom.val_0(a2t) == 3 || this.t.atom.mltb(a2t) > 0))
      return new carcfmt.Torsion$Kb(this);
    else 
      return new carcfmt.Torsion$Kb_0(this, 0, 0, $wnd.Math.sqrt(V[0] * V[1]) / N_jk);
  }
  if (mol.getBondOrder_0(bond) == 1 && this.t.atom.mltb(a2t) > 0 && this.t.atom.mltb(a3t) > 0 || this.t.atom.mltb(a2t) > 0 && this.t.atom.pilp(a3t) > 0 || this.t.atom.pilp(a2t) > 0 && this.t.atom.mltb(a3t) > 0) {
    if (this.t.atom.pilp(a2t) > 0 && this.t.atom.pilp(a3t) > 0)
      return new carcfmt.Torsion$Kb(this);
    if (this.t.atom.pilp(a2t) > 0 && this.t.atom.mltb(a3t) > 0) {
      beta_0 = 6;
      pi_jk = 0;
      if (this.t.atom.mltb(a2t) == 1)
        pi_jk = 0.5;
      else if (carcfm.row_0(atno[0]) == 2 && carcfm.row_0(atno[1]) == 2)
        pi_jk = 0.3;
      else if (carcfm.row_0(atno[0]) != 2 || carcfm.row_0(atno[1]) != 2)
        pi_jk = 0.15;
      return new carcfmt.Torsion$Kb_0(this, 0, beta_0 * pi_jk * $wnd.Math.sqrt(U[0] * U[1]), 0);
    }
    if (this.t.atom.pilp(a3t) > 0 && this.t.atom.mltb(a2t) > 0) {
      beta_0 = 6;
      pi_jk = 0;
      if (this.t.atom.mltb(a3t) == 1)
        pi_jk = 0.5;
      else if (carcfm.row_0(atno[0]) == 2 && carcfm.row_0(atno[1]) == 2)
        pi_jk = 0.3;
      else if (carcfm.row_0(atno[0]) != 2 || carcfm.row_0(atno[1]) != 2)
        pi_jk = 0.15;
      return new carcfmt.Torsion$Kb_0(this, 0, beta_0 * pi_jk * $wnd.Math.sqrt(U[0] * U[1]), 0);
    }
    if ((this.t.atom.mltb(a2t) == 1 || this.t.atom.mltb(a3t) == 1) && (atno[0] != 6 || atno[1] != 6))
      return new carcfmt.Torsion$Kb_0(this, 0, 6 * 0.4 * $wnd.Math.sqrt(U[0] * U[1]), 0);
    return new carcfmt.Torsion$Kb_0(this, 0, 6 * 0.15 * $wnd.Math.sqrt(U[0] * U[1]), 0);
  }
  if ((atno[0] == 8 || atno[0] == 16) && (atno[1] == 8 || atno[1] == 16))
    return new carcfmt.Torsion$Kb_0(this, 0, -$wnd.Math.sqrt(W[0] * W[1]), 0);
  return new carcfmt.Torsion$Kb_0(this, 0, 0, $wnd.Math.sqrt(V[0] * V[1]) / N_jk);
}
;
_.index_3 = function index_5(a1t, a2t, a3t, a4t, tort){
  return carcfm.binary_1(stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 3, 1, 4, 0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [a2t, a3t, a1t, a4t, tort]), this);
}
;
_.length_0 = function length_12(){
  return this.table.length;
}
;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Torsion_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Torsion', 698, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_Torsion$Kb = function $clinit_Torsion$Kb(){
  carcfmt.$clinit_Torsion$Kb = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.Torsion$Kb = function Torsion$Kb(this$0){
  carcfmt.$clinit_Torsion$Kb();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_111();
  this.v1 = 0;
  this.v2 = 0;
  this.v3 = 0;
}
;
carcfmt.Torsion$Kb_0 = function Torsion$Kb_0(this$0, v1, v2, v3){
  carcfmt.$clinit_Torsion$Kb();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_111();
  this.v1 = v1;
  this.v2 = v2;
  this.v3 = v3;
}
;
carcfmt.Torsion$Kb_1 = function Torsion$Kb_1(this$0, index_0){
  carcfmt.$clinit_Torsion$Kb();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_111();
  this.v1 = jl.doubleValue__D__devirtual$(castTo(this$0.table[index_0][5], 24));
  this.v2 = jl.doubleValue__D__devirtual$(castTo(this$0.table[index_0][6], 24));
  this.v3 = jl.doubleValue__D__devirtual$(castTo(this$0.table[index_0][7], 24));
}
;
defineClass(68, 1, {1:1}, carcfmt.Torsion$Kb, carcfmt.Torsion$Kb_0, carcfmt.Torsion$Kb_1);
_.$init_111 = function $init_111(){
}
;
_.toString_0 = function toString_15(){
  return this.v1 + ',' + this.v2 + ',' + this.v3;
}
;
_.v1 = 0;
_.v2 = 0;
_.v3 = 0;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_Torsion$Kb_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'Torsion/Kb', 68, cggl.Ljava_lang_Object_2_classLit);
carcfmt.$clinit_VanDerWaals_0 = function $clinit_VanDerWaals_0(){
  carcfmt.$clinit_VanDerWaals_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt.VanDerWaals_0 = function VanDerWaals_0(t, csvpath){
  carcfmt.$clinit_VanDerWaals_0();
  Object_0.call(this);
  this.$init_112();
  this.table = carcfm.readFile(csvpath);
}
;
defineClass(699, 1, {1:1}, carcfmt.VanDerWaals_0);
_.$init_112 = function $init_112(){
}
;
_.alpha_i = function alpha_i(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[this.index_4(type_0)][1], 24));
}
;
_.da = function da(type_0){
  return castTo(this.table[this.index_4(type_0)][5], 133).charValue();
}
;
_.g_i = function g_i(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[this.index_4(type_0)][4], 24));
}
;
_.get_0 = function get_13(row, col){
  return jl.intValue__I__devirtual$(castTo(this.table[row][col], 24));
}
;
_.index_4 = function index_6(type_0){
  return carcfm.binary_0(0, type_0, this);
}
;
_.length_0 = function length_13(){
  return this.table.length;
}
;
_.n_i = function n_i(type_0){
  return jl.doubleValue__D__devirtual$(castTo(this.table[this.index_4(type_0)][2], 24));
}
;
_.r_star = function r_star(type_0){
  var idx;
  idx = this.index_4(type_0);
  return jl.doubleValue__D__devirtual$(castTo(this.table[idx][3], 24)) * $wnd.Math.pow(jl.doubleValue__D__devirtual$(castTo(this.table[idx][1], 24)), this.power);
}
;
_.b = 0.2;
_.beta_0 = 12;
_.daeps = 0.5;
_.darad = 0.8;
_.power = 0.25;
cggl.Lcom_actelion_research_chem_forcefield_mmff_table_VanDerWaals_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.table', 'VanDerWaals', 699, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Angle_0 = function $clinit_Angle_0(){
  carcfmt2.$clinit_Angle_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.getStbnType = function getStbnType(table, mol, a1, a2, a3){
  carcfmt2.$clinit_Angle_0();
  var a1t, a3t, angt, b1t, b1tf, b2t, b2tf;
  a1t = mol.getAtomType(a1);
  a3t = mol.getAtomType(a3);
  b1tf = carcfmt2.getType_2(table, mol, a1, a2);
  b2tf = carcfmt2.getType_2(table, mol, a2, a3);
  b1t = a1t <= a3t?b1tf:b2tf;
  b2t = a1t < a3t?b2tf:b1tf;
  angt = carcfmt2.getType(table, mol, a1, a2, a3);
  switch (angt) {
    case 1:
      return b1t > 0 || b1t == b2t?1:2;
    case 2:
      return 3;
    case 3:
      return 5;
    case 4:
      return 4;
    case 5:
      return b1t > 0 || b1t == b2t?6:7;
    case 6:
      return 8;
    case 7:
      return b1t > 0 || b1t == b2t?9:10;
    case 8:
      return 11;
  }
  return 0;
}
;
carcfmt2.getType = function getType(table, mol, a1, a2, a3){
  carcfmt2.$clinit_Angle_0();
  var bondsum, type_0;
  bondsum = carcfmt2.getType_2(table, mol, a1, a2) + carcfmt2.getType_2(table, mol, a2, a3);
  type_0 = bondsum;
  if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 3))
    type_0 += bondsum > 0?4:3;
  else if (carcfmt2.inRingOfSize(mol, a1, a2, a3, 4))
    type_0 += bondsum > 0?6:4;
  return type_0;
}
;
carcfmt2.inRingOfSize = function inRingOfSize(mol, a1, a2, a3, size_0){
  carcfmt2.$clinit_Angle_0();
  var a, a$array, a$index, a$max, angle, r, ring, rings;
  rings = mol.getRingSet_0();
  angle = new ju.HashSet;
  angle.add(jl.valueOf_26(a1));
  angle.add(jl.valueOf_26(a2));
  angle.add(jl.valueOf_26(a3));
  if (mol.getBond_0(a1, a2) >= 0 && mol.getBond_0(a2, a3) >= 0)
    for (r = 0; r < rings.getSize_0(); r++)
      if (rings.getRingSize_0(r) == size_0) {
        ring = new ju.HashSet;
        for (a$array = rings.getRingAtoms_0(r) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
          a = a$array[a$index];
          ring.add(jl.valueOf_26(a));
        }
        if (ring.containsAll(angle))
          return true;
      }
  return false;
}
;
defineClass(1222, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Angle_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Angle', 1222, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Atom_0 = function $clinit_Atom_0(){
  carcfmt2.$clinit_Atom_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.degree = function degree(mol, atom){
  return mol.getAllConnAtoms_0(atom) + mol.getImplicitHydrogens_0(atom);
}
;
carcfmt2.getHeavyType = function getHeavyType(mol, atom){
  var EdoubledC, EtripledC, N2toC, N3toC, NtoN, OtoC, OtoN, OtoN3, StoC, StoN, alpha_0, alpha$iterator, alphaBetaSameRing, alphaHet, beta_0, beta$iterator, betaHet, bond, doubleBondedElement, doubleCN, i, i0, i1, inAromatic6Ring, isAlphaOS, isBetaOS, isCarbonylO, isCarboxylateO, isCdoubleS, isImineOrAzo, isIsonitrile, isNAZT, isNCNplus, isNCOorNCS, isNGDplus, isNNNorNNC, isNOxideO, isNSO, isNSP, isNbrBenzeneC, isNbrC, isNitroO, isNitroso, isNitrosoO, isOdoubleS, isOxideOtoC, isOxideOtoH, isOxideOtoN, isPhosphateOrPerchlorateO, isSulfateO, isSulfonamideN, isSulfoxideO, isThioSulfinateO, j, j0, k, nFormalCharge, nHtoO, nIn5Ring, nIn6Ring, nN, nN2, nN3, nNtoS, nO, nONtoS, nOtoS, nOtoSP, nS, nStoS, nTermOtoN, nTermOtoS, nbr, nbr2, nbr3, nbrTermS, surroundedByArom, surroundedByBenzeneC;
  if (mol.isAromaticAtom_1(atom)) {
    if (carcfmt2.isInAromaticRingOfSize(mol, atom, 5)) {
      alphaHet = new ju.ArrayList_0(mol.getAllAtoms_0());
      betaHet = new ju.ArrayList_0(mol.getAllAtoms_0());
      alphaBetaSameRing = false;
      isAlphaOS = false;
      isBetaOS = false;
      if (mol.getAtomicNo_0(atom) == 6 || mol.getAtomicNo_0(atom) == 7) {
        for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
          nbr = mol.getConnAtom_0(atom, i0);
          if (!carcfmt2.isInAromaticRingOfSize(mol, nbr, 5))
            continue;
          if (carcfmt2.inSameRing(mol, atom, nbr, 5) && (mol.getAtomicNo_0(nbr) == 8 || mol.getAtomicNo_0(nbr) == 16 || mol.getAtomicNo_0(nbr) == 7 && carcfmt2.degree(mol, nbr) == 3 && !carcfmt2.isAtomNOxide(mol, nbr)))
            alphaHet.add(jl.valueOf_26(nbr));
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(nbr); j0++) {
            nbr2 = mol.getConnAtom_0(nbr, j0);
            if (nbr2 == atom)
              continue;
            if (!carcfmt2.isInAromaticRingOfSize(mol, nbr2, 5))
              continue;
            if (carcfmt2.inSameRing(mol, atom, nbr2, 5) && (mol.getAtomicNo_0(nbr2) == 8 || mol.getAtomicNo_0(nbr2) == 16 || mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 3 && !carcfmt2.isAtomNOxide(mol, nbr2)))
              betaHet.add(jl.valueOf_26(nbr2));
          }
        }
        for (alpha$iterator = alphaHet.iterator(); alpha$iterator.hasNext_0();) {
          alpha_0 = castTo(alpha$iterator.next_3(), 32).intValue();
          if (mol.getAtomicNo_0(alpha_0) == 8 || mol.getAtomicNo_0(alpha_0) == 16) {
            isAlphaOS = true;
            break;
          }
        }
        for (beta$iterator = betaHet.iterator(); beta$iterator.hasNext_0();) {
          beta_0 = castTo(beta$iterator.next_3(), 32).intValue();
          if (mol.getAtomicNo_0(beta_0) == 8 || mol.getAtomicNo_0(beta_0) == 16) {
            isBetaOS = true;
            break;
          }
        }
        for (i = 0; i < alphaHet.size(); i++)
          for (j = i; j < betaHet.size(); j++)
            if (carcfmt2.inSameRing(mol, castTo(alphaHet.getAtIndex(i), 32).intValue(), castTo(betaHet.getAtIndex(j), 32).intValue(), 5)) {
              alphaBetaSameRing = true;
              break;
            }
      }
      switch (mol.getAtomicNo_0(atom)) {
        case 6:
          if (betaHet.isEmpty()) {
            nN = 0;
            nFormalCharge = 0;
            nIn5Ring = 0;
            nIn6Ring = 0;
            for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
              nbr = mol.getConnAtom_0(atom, i);
              if (mol.getAtomicNo_0(nbr) == 7 && carcfmt2.degree(mol, nbr) == 3) {
                nN++;
                if (mol.getAtomCharge_0(nbr) > 0 && !carcfmt2.isAtomNOxide(mol, nbr))
                  nFormalCharge++;
                if (carcfmt2.isInAromaticRingOfSize(mol, nbr, 5))
                  nIn5Ring++;
                if (carcfmt2.isInAromaticRingOfSize(mol, nbr, 6))
                  nIn6Ring++;
              }
            }
            if ((nN == 2 && nIn5Ring > 0 || nN == 3 && nIn5Ring == 2) && nFormalCharge > 0 && nIn6Ring == 0)
              return 80;
          }

          if (!(alphaHet.isEmpty() ^ betaHet.isEmpty())) {
            surroundedByBenzeneC = true;
            surroundedByArom = true;
            for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
              nbr = mol.getConnAtom_0(atom, i);
              if (mol.getAtomicNo_0(nbr) != 6 || !carcfmt2.inRingOfSize_0(mol, nbr, 6))
                surroundedByBenzeneC = false;
              if (carcfmt2.inSameRing(mol, atom, nbr, 5) && !mol.isAromaticAtom_1(nbr))
                surroundedByArom = false;
            }
            if (alphaHet.isEmpty() && betaHet.isEmpty() && !surroundedByBenzeneC && surroundedByArom)
              return 78;
            if (!alphaHet.isEmpty() && !alphaHet.isEmpty() && (!alphaBetaSameRing || !isAlphaOS && !isBetaOS))
              return 78;
          }

          if (!alphaHet.isEmpty() && (betaHet.isEmpty() || isAlphaOS))
            return 63;
          if (!betaHet.isEmpty() && (alphaHet.isEmpty() || isBetaOS))
            return 64;
          break;
        case 7:
          if (carcfmt2.isAtomNOxide(mol, atom))
            return 82;
          if (alphaHet.isEmpty() && betaHet.isEmpty()) {
            if (carcfmt2.degree(mol, atom) == 3)
              return 39;
            return 76;
          }

          if (carcfmt2.degree(mol, atom) == 3)
            if (alphaHet.isEmpty() ^ betaHet.isEmpty())
              return 81;
          if (!alphaHet.isEmpty() && (betaHet.isEmpty() || isAlphaOS))
            return 65;
          if (!betaHet.isEmpty() && (alphaHet.isEmpty() || isBetaOS))
            return 66;
          if (!alphaHet.isEmpty() && !betaHet.isEmpty())
            return 79;
          break;
        case 8:
          return 59;
        case 16:
          return 44;
      }
    }
    if (carcfmt2.isInAromaticRingOfSize(mol, atom, 6)) {
      switch (mol.getAtomicNo_0(atom)) {
        case 6:
          return 37;
        case 7:
          if (carcfmt2.isAtomNOxide(mol, atom))
            return 69;
          if (carcfmt2.degree(mol, atom) == 3)
            return 58;
          return 38;
      }
    }
  }
  switch (mol.getAtomicNo_0(atom)) {
    case 3:
      if (mol.getConnAtoms_0(atom) == 0)
        return 92;
      break;
    case 6:
      if (carcfmt2.degree(mol, atom) == 4) {
        if (mol.getAtomRingSize_0(atom) == 3)
          return 22;
        if (mol.getAtomRingSize_0(atom) == 4)
          return 20;
        return 1;
      }

      if (carcfmt2.degree(mol, atom) == 3) {
        nN2 = 0;
        nN3 = 0;
        nO = 0;
        nS = 0;
        doubleBondedElement = 0;
        for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
          nbr = mol.getConnAtom_0(atom, i0);
          if (mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
            doubleBondedElement = mol.getAtomicNo_0(nbr);
          if (carcfmt2.degree(mol, nbr) == 1) {
            if (mol.getAtomicNo_0(nbr) == 8)
              nO++;
            if (mol.getAtomicNo_0(nbr) == 16)
              nS++;
          }
           else if (mol.getAtomicNo_0(nbr) == 7) {
            if (carcfmt2.degree(mol, nbr) == 3)
              nN3++;
            else if (carcfmt2.degree(mol, nbr) == 2 && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
              nN2++;
          }
        }
        if (nN3 >= 2 && nN2 == 0 && doubleBondedElement == 7) {
          return 57;
        }
        if (nO == 2 || nS == 2) {
          return 41;
        }
        if (mol.getAtomRingSize_0(atom) == 4 && doubleBondedElement == 6) {
          return 30;
        }
        if (doubleBondedElement == 7 || doubleBondedElement == 8 || doubleBondedElement == 15 || doubleBondedElement == 16) {
          return 3;
        }
        return 2;
      }

      if (carcfmt2.degree(mol, atom) == 2) {
        return 4;
      }

      if (carcfmt2.degree(mol, atom) == 1) {
        return 60;
      }

      break;
    case 7:
      nTermOtoN = 0;
      isSulfonamideN = false;
      for (i1 = 0; i1 < mol.getAllConnAtoms_0(atom); i1++) {
        nbr = mol.getConnAtom_0(atom, i1);
        if (mol.getAtomicNo_0(nbr) == 8 && carcfmt2.degree(mol, nbr) == 1)
          nTermOtoN++;
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) >= 3 && (mol.getAtomicNo_0(nbr) == 15 || mol.getAtomicNo_0(nbr) == 16)) {
          nOtoSP = 0;
          for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
            nbr2 = mol.getConnAtom_0(nbr, j);
            if (mol.getAtomicNo_0(nbr2) == 8 && carcfmt2.degree(mol, nbr2) == 1)
              nOtoSP++;
          }
          if (!isSulfonamideN)
            isSulfonamideN = nOtoSP >= 2;
        }
      }

      if (carcfmt2.degree(mol, atom) == 4) {
        if (carcfmt2.isAtomNOxide(mol, atom))
          return 68;
        return 34;
      }

      if (carcfmt2.degree(mol, atom) == 3) {
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) >= 4) {
          doubleCN = false;
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2) {
              doubleCN = mol.getAtomicNo_0(nbr) == 7 || mol.getAtomicNo_0(nbr) == 6;
              if (mol.getAtomicNo_0(nbr) == 6) {
                for (j = 0; doubleCN && j < mol.getAllConnAtoms_0(nbr); j++) {
                  nbr2 = mol.getConnAtom_0(nbr, j);
                  if (nbr2 == atom)
                    continue;
                  doubleCN = !(mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 3);
                }
              }
            }
          }
          if (nTermOtoN == 1)
            return 67;
          if (nTermOtoN >= 2)
            return 45;
          if (doubleCN)
            return 54;
        }
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) >= 3) {
          isNCOorNCS = false;
          isNCNplus = false;
          isNGDplus = false;
          isNNNorNNC = false;
          isNbrC = false;
          isNbrBenzeneC = false;
          EdoubledC = 0;
          EtripledC = 0;
          N2toC = 0;
          N3toC = 0;
          OtoC = 0;
          StoC = 0;
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (mol.getAtomicNo_0(nbr) == 6) {
              isNbrC = true;
              if (mol.isAromaticAtom_1(nbr) && mol.getAtomRingSize_0(nbr) == 6)
                isNbrBenzeneC = true;
              N2toC = 0;
              N3toC = 0;
              OtoC = 0;
              StoC = 0;
              nFormalCharge = 0;
              inAromatic6Ring = 0;
              for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
                nbr2 = mol.getConnAtom_0(nbr, j);
                bond = mol.getBond_0(nbr, nbr2);
                if (mol.getBondOrder_0(bond) == 2 && (mol.getAtomicNo_0(nbr2) == 8 || mol.getAtomicNo_0(nbr2) == 16))
                  isNCOorNCS = true;
                if (mol.getBondOrder_0(bond) == 2 || mol.isAromaticBond_0(bond) && (mol.getAtomicNo_0(nbr2) == 6 || mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.inRings(mol, nbr2) == 1))
                  EdoubledC = mol.getAtomicNo_0(nbr2);
                if (mol.getBondOrder_0(bond) == 3)
                  EtripledC = mol.getAtomicNo_0(nbr2);
                if (mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 3) {
                  if (mol.getAtomCharge_0(nbr2) == 1)
                    nFormalCharge++;
                  if (carcfmt2.isInAromaticRingOfSize(mol, nbr, 6))
                    inAromatic6Ring++;
                  OtoN3 = 0;
                  for (k = 0; k < mol.getAllConnAtoms_0(nbr2); k++) {
                    nbr3 = mol.getConnAtom_0(nbr2, k);
                    if (mol.getAtomicNo_0(nbr3) == 8)
                      OtoN3++;
                  }
                  if (OtoN3 < 2)
                    N3toC++;
                }
                if (mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 2 && (mol.getBondOrder_0(bond) == 2 || mol.isAromaticBond_0(bond)))
                  N2toC++;
                if (mol.isAromaticAtom_1(nbr2)) {
                  if (mol.getAtomicNo_0(nbr2) == 8)
                    OtoC++;
                  if (mol.getAtomicNo_0(nbr2) == 16)
                    StoC++;
                }
              }
              if (EdoubledC == 7) {
                if (N3toC == 2 && N2toC == 0 && nFormalCharge > 0 && inAromatic6Ring == 0 && carcfmt2.degree(mol, nbr) < 4)
                  isNCNplus = true;
                if (N3toC == 3)
                  isNGDplus = true;
              }
            }
             else if (mol.getAtomicNo_0(nbr) == 7) {
              NtoN = 0;
              OtoN = 0;
              StoN = 0;
              for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
                nbr2 = mol.getConnAtom_0(nbr, j);
                bond = mol.getBond_0(nbr, nbr2);
                if (mol.getBondOrder_0(bond) == 2) {
                  if (mol.getAtomicNo_0(nbr2) == 6) {
                    for (k = 0; k < mol.getAllConnAtoms_0(nbr2); k++) {
                      nbr3 = mol.getConnAtom_0(nbr2, k);
                      if (nbr3 == atom)
                        continue;
                      if (mol.getAtomicNo_0(nbr3) == 7)
                        NtoN++;
                      else if (mol.getAtomicNo_0(nbr3) == 8)
                        OtoN++;
                      else if (mol.getAtomicNo_0(nbr3) == 16)
                        StoN++;
                    }
                    if (NtoN == 0 && OtoN == 0 && StoN == 0 && !isNbrBenzeneC)
                      isNNNorNNC = true;
                  }
                  if (mol.getAtomicNo_0(nbr2) == 7 && !isNbrBenzeneC)
                    isNNNorNNC = true;
                }
              }
            }
          }
          if (isNbrC) {
            if (EtripledC == 7)
              isSulfonamideN = true;
            if (isNCNplus)
              return 55;
            if (isNGDplus)
              return 56;
            if (!isNCOorNCS && !isSulfonamideN && (OtoC == 0 && StoC == 0 && isNbrBenzeneC || EdoubledC == 6 || EdoubledC == 7 || EdoubledC == 15 || EtripledC == 6))
              return 40;
          }
          if (!isSulfonamideN && (isNCOorNCS || isNNNorNNC))
            return 10;
        }
      }

      if (carcfmt2.degree(mol, atom) == 2) {
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) == 4) {
          isIsonitrile = false;
          for (i = 0; !isIsonitrile && i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            isIsonitrile = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 3;
          }
          if (isIsonitrile)
            return 61;
          return 53;
        }
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) == 3) {
          isNitroso = false;
          isImineOrAzo = false;
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2) {
              isNitroso = mol.getAtomicNo_0(nbr) == 8 && nTermOtoN == 1;
              isImineOrAzo = mol.getAtomicNo_0(nbr) == 6 || mol.getAtomicNo_0(nbr) == 7;
            }
          }
          if (isNitroso && !isImineOrAzo)
            return 46;
          if (isImineOrAzo)
            return 9;
        }
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) >= 2) {
          isNSO = false;
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (mol.getAtomicNo_0(nbr) == 16) {
              nTermOtoS = 0;
              for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
                nbr2 = mol.getConnAtom_0(nbr, j);
                if (mol.getAtomicNo_0(nbr2) == 8 && carcfmt2.degree(mol, nbr2) == 1)
                  nTermOtoS++;
              }
              isNSO = nTermOtoS == 1;
            }
          }
          if (isNSO)
            return 48;
          if (!isSulfonamideN)
            return 62;
        }
      }

      if (isSulfonamideN)
        return 43;
      if (carcfmt2.degree(mol, atom) == 1) {
        isNSP = false;
        isNAZT = false;
        for (i = 0; !isNSP && !isNAZT && i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          isNSP = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 3;
          if (mol.getAtomicNo_0(nbr) == 7 && carcfmt2.degree(mol, nbr) == 2) {
            for (j = 0; !isNAZT && j < mol.getAllConnAtoms_0(nbr); j++) {
              nbr2 = mol.getConnAtom_0(nbr, j);
              isNAZT = mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 2 || mol.getAtomicNo_0(nbr2) == 6 && carcfmt2.degree(mol, nbr2) == 3;
            }
          }
        }
        if (isNSP)
          return 42;
        if (isNAZT)
          return 47;
      }

      return 8;
    case 8:
      if (carcfmt2.degree(mol, atom) == 3)
        return 49;
      if (carcfmt2.degree(mol, atom) == 2) {
        if (mol.getOccupiedValence_0(atom) + mol.getImplicitHydrogens_0(atom) == 3)
          return 51;
        nHtoO = 0;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 1)
            nHtoO++;
        }
        if (nHtoO + mol.getImplicitHydrogens_0(atom) == 2)
          return 70;
        return 6;
      }

      if (mol.getConnAtoms_0(atom) <= 1) {
        nNtoS = 0;
        nOtoS = 0;
        nStoS = 0;
        isOxideOtoH = mol.getAllConnAtoms_0(atom) - mol.getConnAtoms_0(atom) + mol.getImplicitHydrogens_0(atom) > 0?true:false;
        isCarboxylateO = false;
        isCarbonylO = false;
        isOxideOtoC = false;
        isNitrosoO = false;
        isOxideOtoN = false;
        isNOxideO = false;
        isNitroO = false;
        isThioSulfinateO = false;
        isSulfateO = false;
        isSulfoxideO = false;
        isPhosphateOrPerchlorateO = false;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          if (isOxideOtoH)
            break;
          if (isCarboxylateO)
            break;
          if (isCarbonylO)
            break;
          if (isOxideOtoC)
            break;
          if (isNitrosoO)
            break;
          if (isOxideOtoN)
            break;
          if (isNOxideO)
            break;
          if (isNitroO)
            break;
          if (isThioSulfinateO)
            break;
          if (isSulfateO)
            break;
          if (isSulfoxideO)
            break;
          if (isPhosphateOrPerchlorateO)
            break;
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 6 || mol.getAtomicNo_0(nbr) == 7 || mol.getAtomicNo_0(nbr) == 16) {
            for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
              nbr2 = mol.getConnAtom_0(nbr, j);
              if (mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree(mol, nbr2) == 2)
                nNtoS++;
              if (mol.getAtomicNo_0(nbr2) == 8 && carcfmt2.degree(mol, nbr2) == 1)
                nOtoS++;
              if (mol.getAtomicNo_0(nbr2) == 16 && carcfmt2.degree(mol, nbr2) == 1)
                nStoS++;
            }
          }
          isOxideOtoH = mol.getAtomicNo_0(nbr) == 1;
          if (mol.getAtomicNo_0(nbr) == 6) {
            isCarboxylateO = nOtoS == 2;
            isCarbonylO = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2;
            isOxideOtoC = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 1 && nOtoS == 1;
          }
          if (mol.getAtomicNo_0(nbr) == 7) {
            isNitrosoO = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2;
            if (mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 1 && nOtoS == 1) {
              isOxideOtoN = carcfmt2.degree(mol, nbr) == 2 || mol.getOccupiedValence_0(nbr) + mol.getImplicitHydrogens_0(nbr) == 3;
              isNOxideO = mol.getOccupiedValence_0(nbr) + mol.getImplicitHydrogens_0(nbr) == 4;
            }
            isNitroO = nOtoS >= 2;
          }
          if (mol.getAtomicNo_0(nbr) == 16) {
            isThioSulfinateO = nStoS == 1;
            isSulfateO = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 1 || mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2 && nOtoS + nNtoS > 1;
            isSulfoxideO = mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2 && nOtoS + nNtoS == 1;
          }
          isPhosphateOrPerchlorateO = mol.getAtomicNo_0(nbr) == 15 || mol.getAtomicNo_0(nbr) == 17;
        }
        if (isOxideOtoC || isOxideOtoN || isOxideOtoH)
          return 35;
        if (isCarboxylateO || isNitroO || isNOxideO || isThioSulfinateO || isSulfateO || isPhosphateOrPerchlorateO)
          return 32;
        if (isCarbonylO || isNitrosoO || isSulfoxideO)
          return 7;
      }

      break;
    case 9:
      if (mol.getConnAtoms_0(atom) == 1)
        return 11;
      if (mol.getConnAtoms_0(atom) == 0)
        return 89;
      break;
    case 11:
      if (mol.getConnAtoms_0(atom) == 0)
        return 93;
      break;
    case 12:
      if (mol.getConnAtoms_0(atom) == 0)
        return 99;
      break;
    case 14:
      return 19;
    case 15:
      if (carcfmt2.degree(mol, atom) == 4)
        return 25;
      if (carcfmt2.degree(mol, atom) == 3)
        return 26;
      if (carcfmt2.degree(mol, atom) == 2)
        return 75;
      break;
    case 16:
      if (carcfmt2.degree(mol, atom) == 3 || carcfmt2.degree(mol, atom) == 4) {
        nONtoS = 0;
        nStoS = 0;
        isCdoubleS = false;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 6 && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
            isCdoubleS = true;
          if (mol.getConnAtoms_0(nbr) == 1 && mol.getAtomicNo_0(nbr) == 8 || carcfmt2.degree(mol, nbr) == 2 && mol.getAtomicNo_0(nbr) == 7)
            nONtoS++;
          if (mol.getConnAtoms_0(nbr) == 1 && mol.getAtomicNo_0(nbr) == 16)
            nStoS++;
        }
        if (carcfmt2.degree(mol, atom) == 3 && nONtoS == 2 && isCdoubleS || carcfmt2.degree(mol, atom) == 4)
          return 18;
        if (nONtoS > 0 && nStoS > 0 || nONtoS == 2 && !isCdoubleS)
          return 73;
        return 17;
      }

      if (carcfmt2.degree(mol, atom) == 2) {
        isOdoubleS = false;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 8 && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
            isOdoubleS = true;
        }
        if (isOdoubleS)
          return 74;
        return 15;
      }

      if (carcfmt2.degree(mol, atom) == 1) {
        nbrTermS = 0;
        isCdoubleS = false;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
            nbr2 = mol.getConnAtom_0(nbr, j);
            if (mol.getAtomicNo_0(nbr2) == 16 && carcfmt2.degree(mol, nbr2) == 1)
              nbrTermS++;
          }
          if (mol.getAtomicNo_0(nbr) == 6 && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2)
            isCdoubleS = true;
        }
        if (isCdoubleS && nbrTermS != 2)
          return 16;
        return 72;
      }

      break;
    case 17:
      if (mol.getConnAtoms_0(atom) == 4) {
        nO = 0;
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomicNo_0(nbr) == 8)
            nO++;
        }
        if (nO == 4)
          return 77;
      }

      if (mol.getConnAtoms_0(atom) == 1)
        return 12;
      if (mol.getConnAtoms_0(atom) == 0)
        return 90;
      break;
    case 19:
      if (mol.getConnAtoms_0(atom) == 0)
        return 94;
      break;
    case 20:
      if (mol.getConnAtoms_0(atom) == 0)
        return 96;
      break;
    case 26:
      if (mol.getConnAtoms_0(atom) == 0) {
        if (mol.getAtomCharge_0(atom) == 2)
          return 87;
        if (mol.getAtomCharge_0(atom) == 3)
          return 88;
      }

      break;
    case 29:
      if (mol.getConnAtoms_0(atom) == 0) {
        if (mol.getAtomCharge_0(atom) == 1)
          return 97;
        if (mol.getAtomCharge_0(atom) == 2)
          return 98;
      }

      break;
    case 30:
      if (mol.getConnAtoms_0(atom) == 0)
        return 95;
      break;
    case 35:
      if (mol.getConnAtoms_0(atom) == 1)
        return 13;
      if (mol.getConnAtoms_0(atom) == 0)
        return 91;
      break;
    case 53:
      if (mol.getConnAtoms_0(atom) == 1)
        return 14;
      break;
  }
  return 0;
}
;
carcfmt2.getHydrogenType = function getHydrogenType(mol, atom){
  var bond, i, isHOCCorHOCN, isHOCO, isHOP, isHOS, j, k, nbr, nbr2, nbr3;
  for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
    nbr = mol.getConnAtom_0(atom, i);
    switch (mol.getAtomicNo_0(nbr)) {
      case 6:
        return 5;
      case 7:
        switch (carcfmt2.getHeavyType(mol, nbr)) {
          case 8:
          case 39:
          case 62:
          case 67:
          case 68:
            return 23;
          case 34:
          case 54:
          case 55:
          case 56:
          case 58:
          case 81:
            return 36;
          case 9:
            return 27;
          default:return 28;
        }

      case 8:
        switch (carcfmt2.getHeavyType(mol, nbr)) {
          case 49:
            return 50;
          case 51:
            return 52;
          case 70:
            return 31;
          case 6:
            isHOCCorHOCN = false;
            isHOCO = false;
            isHOP = false;
            isHOS = false;
            for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
              nbr2 = mol.getConnAtom_0(nbr, j);
              if (mol.getAtomicNo_0(nbr2) == 6) {
                for (k = 0; k < mol.getAllConnAtoms_0(nbr2); k++) {
                  nbr3 = mol.getConnAtom_0(nbr2, k);
                  if (nbr3 == nbr)
                    continue;
                  bond = mol.getBond_0(nbr2, nbr3);
                  if ((mol.getAtomicNo_0(nbr3) == 6 || mol.getAtomicNo_0(nbr3) == 7) && (mol.getBondOrder_0(bond) == 2 || mol.isAromaticBond_0(bond)))
                    isHOCCorHOCN = true;
                  if (mol.getAtomicNo_0(nbr3) == 8 && mol.getBondOrder_0(bond) == 2)
                    isHOCO = true;
                }
              }
              if (mol.getAtomicNo_0(nbr2) == 15)
                isHOP = true;
              if (mol.getAtomicNo_0(nbr2) == 16)
                isHOS = true;
            }

            if (isHOCO || isHOP)
              return 24;
            if (isHOCCorHOCN)
              return 29;
            if (isHOS)
              return 33;
          default:return 21;
        }

      case 14:
        return 5;
      case 15:
        return 71;
      case 16:
        return 71;
    }
  }
  return 0;
}
;
carcfmt2.getType_0 = function getType_0(mol, atom){
  carcfmt2.$clinit_Atom_0();
  if (mol.getAtomType(atom) > -1)
    return mol.getAtomType(atom);
  if (mol.getAtomicNo_0(atom) == 1)
    return carcfmt2.getHydrogenType(mol, atom);
  else 
    return carcfmt2.getHeavyType(mol, atom);
}
;
carcfmt2.inRingOfSize_0 = function inRingOfSize_0(mol, atom, size_0){
  var r, rings;
  if (mol.isRingAtom_0(atom)) {
    rings = mol.getRingSet_0();
    for (r = 0; r < rings.getSize_0(); r++)
      if (rings.getRingSize_0(r) == size_0 && rings.isAtomMember_0(r, atom))
        return true;
  }
  return false;
}
;
carcfmt2.inRings = function inRings(mol, atom){
  var r, rc, rings;
  rings = mol.getRingSet_0();
  rc = 0;
  for (r = 0; r < rings.getSize_0(); r++)
    if (rings.getAtomIndex_0(r, atom) >= 0)
      rc++;
  return rc;
}
;
carcfmt2.inSameRing = function inSameRing(mol, a1, a2, size_0){
  var r, rings;
  if (!mol.isRingAtom_0(a1) || !mol.isRingAtom_0(a2))
    return false;
  rings = mol.getRingSet_0();
  for (r = 0; r < rings.getSize_0(); r++)
    if (rings.getRingSize_0(r) == size_0 && rings.isAtomMember_0(r, a1) && rings.isAtomMember_0(r, a2))
      return true;
  return false;
}
;
carcfmt2.isAtomNOxide = function isAtomNOxide(mol, atom){
  var i, nbr;
  if (mol.getAtomicNo_0(atom) == 7 && carcfmt2.degree(mol, atom) >= 3) {
    for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
      nbr = mol.getConnAtom_0(atom, i);
      if (mol.getAtomicNo_0(nbr) == 8 && carcfmt2.degree(mol, nbr) == 1)
        return true;
    }
  }
  return false;
}
;
carcfmt2.isInAromaticRingOfSize = function isInAromaticRingOfSize(mol, atom, size_0){
  var r, rings;
  if (mol.isAromaticAtom_1(atom)) {
    rings = mol.getRingSet_0();
    for (r = 0; r < rings.getSize_0(); r++) {
      if (rings.getRingSize_0(r) != size_0 || !rings.isAtomMember_0(r, atom))
        continue;
      if (mol.ringIsMMFFAromatic(r))
        return true;
    }
  }
  return false;
}
;
carcfmt2.ringIsMMFFAromatic_0 = function ringIsMMFFAromatic_0(mol, r){
  carcfmt2.$clinit_Atom_0();
  var a, a$array, a$index, a$max, atom, b, b$array, b$index, b$max, c, i, j, nbr, passes, ri, rings;
  rings = mol.getRingSet_0();
  if (!rings.isAromatic_0(r))
    return carcfm.$clinit_RingBoolean() , carcfm.FALSE;
  if (rings.getRingSize_0(r) == 6) {
    for (a$array = rings.getRingAtoms_0(r) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
      a = a$array[a$index];
      if (mol.getOccupiedValence_0(a) + mol.getImplicitHydrogens_0(a) != carcfmt2.degree(mol, a) + 1)
        return carcfm.$clinit_RingBoolean() , carcfm.FALSE;
    }
    for (b$array = rings.getRingBonds_0(r) , b$index = 0 , b$max = b$array.length; b$index < b$max; ++b$index) {
      b = b$array[b$index];
      c = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [-1, -1]);
      if (mol.getBondOrder_0(b) == 1) {
        for (j = 0; j <= 1; j++) {
          atom = mol.getBondAtom_0(j, b);
          for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
            nbr = mol.getConnAtom_0(atom, i);
            if (!rings.isAtomMember_0(r, nbr) && mol.getBondOrder_0(mol.getBond_0(atom, nbr)) == 2) {
              c[j] = nbr;
              break;
            }
          }
        }
        if (c[0] > -1 && c[1] > -1) {
          for (ri = 0; ri < rings.getSize_0(); ri++) {
            if (rings.isAtomMember_0(ri, c[0]) && rings.isAtomMember_0(ri, c[1]) && !mol.isSetRingMMFFAromaticity(ri))
              return carcfm.$clinit_RingBoolean() , carcfm.NOT_SET;
            if (rings.isAtomMember_0(ri, c[0]) && rings.isAtomMember_0(ri, c[1]) && !mol.ringIsMMFFAromatic(ri))
              return carcfm.$clinit_RingBoolean() , carcfm.FALSE;
          }
        }
      }
    }
  }
  if (rings.getRingSize_0(r) == 5) {
    passes = 1;
    for (a$array = rings.getRingAtoms_0(r) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
      a = a$array[a$index];
      if (mol.getOccupiedValence_0(a) + mol.getImplicitHydrogens_0(a) == carcfmt2.degree(mol, a) && passes > 0) {
        passes--;
        continue;
      }
      if (mol.getOccupiedValence_0(a) + mol.getImplicitHydrogens_0(a) != carcfmt2.degree(mol, a) + 1) {
        return carcfm.$clinit_RingBoolean() , carcfm.FALSE;
      }
    }
  }
  return carcfm.$clinit_RingBoolean() , carcfm.TRUE;
}
;
defineClass(1155, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Atom_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Atom', 1155, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Bond_0 = function $clinit_Bond_0(){
  carcfmt2.$clinit_Bond_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.getType_1 = function getType_1(table, mol, bond){
  carcfmt2.$clinit_Bond_0();
  return carcfmt2.getType_2(table, mol, mol.getBondAtom_0(0, bond), mol.getBondAtom_0(1, bond));
}
;
carcfmt2.getType_2 = function getType_2(table, mol, atom1, atom2){
  carcfmt2.$clinit_Bond_0();
  var a1t, a2t, b, b$array, b$index, b$max, bond, notInAromaticRing, r, rings;
  a1t = mol.getAtomType(atom1);
  a2t = mol.getAtomType(atom2);
  bond = mol.getBond_0(atom1, atom2);
  notInAromaticRing = true;
  rings = mol.getRingSet_0();
  for (r = 0; r < rings.getSize_0() && notInAromaticRing; r++) {
    for (b$array = rings.getRingBonds_0(r) , b$index = 0 , b$max = b$array.length; b$index < b$max; ++b$index) {
      b = b$array[b$index];
      if (b == bond && mol.ringIsMMFFAromatic(r)) {
        notInAromaticRing = false;
        break;
      }
    }
  }
  return mol.getBondOrder_0(bond) == 1 && notInAromaticRing && (table.atom.arom(a1t) && table.atom.arom(a2t) || table.atom.sbmb(a1t) && table.atom.sbmb(a2t))?1:0;
}
;
defineClass(1165, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Bond_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Bond', 1165, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Charge_0 = function $clinit_Charge_0(){
  carcfmt2.$clinit_Charge_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.degree_0 = function degree_0(mol, atom){
  return mol.getAllConnAtoms_0(atom) + mol.getImplicitHydrogens_0(atom);
}
;
carcfmt2.getCharges = function getCharges(table, mol){
  carcfmt2.$clinit_Charge_0();
  var M, atom, bond, bondType, charges, fcharges, i, i0, i1, nbr, nbrType, q0, sumFormal, sumPartial, type_0, v;
  fcharges = carcfmt2.getFormalCharges(mol);
  charges = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, fcharges.length, 15, 1);
  for (atom = 0; atom < fcharges.length; atom++) {
    type_0 = mol.getAtomType(atom);
    q0 = fcharges[atom];
    v = table.chge.getFcadj(type_0);
    M = table.atom.crd(type_0);
    sumFormal = 0;
    sumPartial = 0;
    if ($wnd.Math.abs(v) < 1.0E-4)
      for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
        nbr = mol.getConnAtom_0(atom, i0);
        if (fcharges[nbr] < 0)
          q0 += fcharges[nbr] / (2 * mol.getAllConnAtoms_0(nbr));
      }
    if (type_0 == 62)
      for (i1 = 0; i1 < mol.getAllConnAtoms_0(atom); i1++) {
        nbr = mol.getConnAtom_0(atom, i1);
        if (fcharges[nbr] > 0)
          q0 -= fcharges[nbr] / 2;
      }
    for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
      nbr = mol.getConnAtom_0(atom, i);
      bond = mol.getBond_0(atom, nbr);
      nbrType = mol.getAtomType(nbr);
      bondType = carcfmt2.getType_1(table, mol, bond);
      sumPartial += table.chge.getPartial(bondType, type_0, nbrType);
      sumFormal += fcharges[nbr];
    }
    charges[atom] = (1 - M * v) * q0 + v * sumFormal + sumPartial;
  }
  return charges;
}
;
carcfmt2.getFormalCharges = function getFormalCharges(mol){
  var a, a$array, a$index, a$max, atom, charges, conj, i, i0, i1, j, k, nConj, nNitrogensIn5Ring, nSecNtoNbr, nTermOStoNbr, nbr, nbr2, nbr2type, nbrType, old_nConj, r, ring, rings, type_0;
  charges = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  overatoms: for (atom = 0; atom < charges.length; atom++) {
    type_0 = mol.getAtomType(atom);
    charges[atom] = 0;
    switch (type_0) {
      case 32:
      case 72:
        for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
          nbr = mol.getConnAtom_0(atom, i0);
          nbrType = mol.getAtomType(nbr);
          nSecNtoNbr = 0;
          nTermOStoNbr = 0;
          for (j = 0; j < mol.getAllConnAtoms_0(nbr); j++) {
            nbr2 = mol.getConnAtom_0(nbr, j);
            if (mol.getAtomicNo_0(nbr2) == 7 && carcfmt2.degree_0(mol, nbr2) == 2 && !mol.isAromaticAtom_1(nbr2))
              nSecNtoNbr++;
            if ((mol.getAtomicNo_0(nbr2) == 8 || mol.getAtomicNo_0(nbr2) == 16) && carcfmt2.degree_0(mol, nbr2) == 1)
              nTermOStoNbr++;
          }
          if (mol.getAtomicNo_0(nbr) == 16 && nTermOStoNbr == 2 && nSecNtoNbr == 1)
            nSecNtoNbr = 0;
          if (mol.getAtomicNo_0(nbr) == 6 && nTermOStoNbr > 0) {
            charges[atom] = nTermOStoNbr == 1?-1:-(nTermOStoNbr - 1) / nTermOStoNbr;
            continue overatoms;
          }
          if (nbrType == 45 && nTermOStoNbr == 3) {
            charges[atom] = -1 / 3;
            continue overatoms;
          }
          if (nbrType == 25 && nTermOStoNbr > 0) {
            charges[atom] = nTermOStoNbr == 1?0:-(nTermOStoNbr - 1) / nTermOStoNbr;
            continue overatoms;
          }
          if (nbrType == 18 && nTermOStoNbr > 0) {
            charges[atom] = nSecNtoNbr + nTermOStoNbr == 2?0:-(nSecNtoNbr + nTermOStoNbr - 2) / nTermOStoNbr;
            continue overatoms;
          }
          if (nbrType == 73 && nTermOStoNbr > 0) {
            charges[atom] = nTermOStoNbr == 1?0:-(nTermOStoNbr - 1) / nTermOStoNbr;
            continue overatoms;
          }
          if (nbrType == 77 && nTermOStoNbr > 0) {
            charges[atom] = -1 / nTermOStoNbr;
            continue overatoms;
          }
        }

        break;
      case 76:
        ring = 0;
        rings = mol.getRingSet_0();
        for (r = 0; r < rings.getSize_0(); r++)
          if (rings.isAtomMember_0(r, atom)) {
            ring = r;
            break;
          }

        if (ring < rings.getSize_0()) {
          nNitrogensIn5Ring = 0;
          for (a$array = rings.getRingAtoms_0(ring) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
            a = a$array[a$index];
            if (a > -1 && mol.getAtomType(a) == 76)
              nNitrogensIn5Ring++;
          }
          if (nNitrogensIn5Ring > 0) {
            charges[atom] = -1 / nNitrogensIn5Ring;
            continue overatoms;
          }
        }

        break;
      case 55:
      case 56:
      case 81:
        charges[atom] = mol.getAtomCharge_0(atom);
        nConj = 1;
        old_nConj = 0;
        conj = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
        conj[atom] = true;
        while (nConj > old_nConj) {
          old_nConj = nConj;
          for (i1 = 0; i1 < mol.getAllAtoms_0(); i1++) {
            if (!conj[i1])
              continue;
            for (j = 0; j < mol.getAllConnAtoms_0(i1); j++) {
              nbr = mol.getConnAtom_0(i1, j);
              nbrType = mol.getAtomType(nbr);
              if (nbrType != 57 && nbrType != 80)
                continue;
              for (k = 0; k < mol.getAllConnAtoms_0(nbr); k++) {
                nbr2 = mol.getConnAtom_0(nbr, k);
                nbr2type = mol.getAtomType(nbr2);
                if (nbr2type != 55 && nbr2type != 56 && nbr2type != 81)
                  continue;
                if (conj[nbr2])
                  continue;
                conj[nbr2] = true;
                charges[atom] += mol.getAtomCharge_0(nbr2);
                nConj++;
              }
            }
          }
        }

        charges[atom] /= nConj;
        continue overatoms;
      case 61:
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          nbr = mol.getConnAtom_0(atom, i);
          if (mol.getAtomType(nbr) == 42) {
            charges[atom] = 1;
            continue overatoms;
          }
        }

        continue overatoms;
      case 34:
      case 49:
      case 51:
      case 54:
      case 58:
      case 92:
      case 93:
      case 94:
      case 97:
        charges[atom] = 1;
        continue overatoms;
      case 87:
      case 95:
      case 96:
      case 98:
      case 99:
        charges[atom] = 2;
        continue overatoms;
      case 88:
        charges[atom] = 3;
        continue overatoms;
      case 35:
      case 62:
      case 89:
      case 90:
      case 91:
        charges[atom] = -1;
        continue overatoms;
    }
    charges[atom] = 0;
  }
  return charges;
}
;
defineClass(1156, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Charge_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Charge', 1156, cggl.Ljava_lang_Object_2_classLit);
carcfmt2.$clinit_Torsion_0 = function $clinit_Torsion_0(){
  carcfmt2.$clinit_Torsion_0 = emptyMethod;
  jl.$clinit_Object();
}
;
carcfmt2.getType_3 = function getType_3(table, mol, a1, a2, a3, a4){
  carcfmt2.$clinit_Torsion_0();
  var bijt, bjkt, bklt, bond_jk, size_0, tort;
  bond_jk = mol.getBond_0(a2, a3);
  bijt = carcfmt2.getType_2(table, mol, a1, a2);
  bjkt = carcfmt2.getType_2(table, mol, a2, a3);
  bklt = carcfmt2.getType_2(table, mol, a3, a4);
  tort = bjkt;
  if (bjkt == 0 && mol.getBondOrder_0(bond_jk) == 1 && (bijt == 1 || bklt == 1))
    tort = 2;
  size_0 = carcfmt2.inRingOfSize_1(mol, a1, a2, a3, a4);
  if (size_0 == 4 && mol.getBond_0(a1, a3) == -1 && mol.getBond_0(a2, a4) == -1)
    return 40 + tort;
  if (size_0 == 5 && (mol.getAtomType(a1) == 1 || mol.getAtomType(a2) == 1 || mol.getAtomType(a3) == 1 || mol.getAtomType(a4) == 1))
    return 50 + tort;
  return tort;
}
;
carcfmt2.inRingOfSize_1 = function inRingOfSize_1(mol, a1, a2, a3, a4){
  var a, a$array, a$index, a$max, r, ring, rings, tor;
  if (mol.getBond_0(a1, a2) == -1 || mol.getBond_0(a2, a3) == -1 || mol.getBond_0(a3, a4) == -1)
    return 0;
  if (mol.getBond_0(a4, a1) >= 0)
    return 4;
  rings = mol.getRingSet_0();
  tor = new ju.HashSet;
  tor.add(jl.valueOf_26(a1));
  tor.add(jl.valueOf_26(a2));
  tor.add(jl.valueOf_26(a3));
  tor.add(jl.valueOf_26(a4));
  for (r = 0; r < rings.getSize_0(); r++)
    if (rings.getRingSize_0(r) == 5) {
      ring = new ju.HashSet;
      for (a$array = rings.getRingAtoms_0(r) , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
        a = a$array[a$index];
        ring.add(jl.valueOf_26(a));
      }
      if (ring.containsAll(tor))
        return 5;
    }
  return 0;
}
;
defineClass(1210, 1, {1:1});
cggl.Lcom_actelion_research_chem_forcefield_mmff_type_Torsion_2_classLit = createForClass('com.actelion.research.chem.forcefield.mmff.type', 'Torsion', 1210, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_CompoundFileParser = function $clinit_CompoundFileParser(){
  carci.$clinit_CompoundFileParser = emptyMethod;
  jl.$clinit_Object();
}
;
carci.CompoundFileParser = function CompoundFileParser(){
  carci.$clinit_CompoundFileParser();
  Object_0.call(this);
  this.$init_113();
}
;
defineClass(485, 1, {1:1});
_.$init_113 = function $init_113(){
}
;
_.close_0 = function close_0(){
  var ioe;
  if (isNotNull(this.mReader)) {
    try {
      this.mReader.close_0();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 66)) {
        ioe = $e0;
      }
       else 
        throw toJs($e0);
    }
  }
}
;
_.getCoordinates_0 = function getCoordinates_1(){
  this.updateIDCodeAndCoords();
  return this.mCoords;
}
;
_.getIDCode_0 = function getIDCode_3(){
  this.updateIDCodeAndCoords();
  return this.mIDCode;
}
;
_.getMolecule_0 = function getMolecule_2(){
  var coords, e, idcode;
  if (!this.mStructureUpToDate) {
    idcode = this.getIDCode_0();
    coords = this.getCoordinates_0();
    this.mMol_0 = null;
    try {
      this.mMol_0 = (new carc2.IDCodeParser_0(jsEquals(coords, null))).getCompactMolecule_0(idcode, coords);
      if (isNotNull(this.mMol_0))
        this.mMol_0.setName_0(this.getMoleculeName());
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
      }
       else 
        throw toJs($e0);
    }
  }
  this.mStructureUpToDate = true;
  return this.mMol_0;
}
;
_.next_1 = function next_0(){
  this.mStructureUpToDate = false;
  this.mIDCodeUpToDate = false;
  return this.advanceToNext();
}
;
_.updateIDCodeAndCoords = function updateIDCodeAndCoords(){
  var canonizer, e, mol;
  if (!this.mIDCodeUpToDate) {
    try {
      mol = new carc2.StereoMolecule_1(this.getMolecule_0());
      mol.normalizeAmbiguousBonds_0();
      mol.canonizeCharge_0(true);
      canonizer = new carc2.Canonizer(mol);
      this.mIDCode = canonizer.getIDCode_0();
      this.mCoords = canonizer.getEncodedCoordinates();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
        this.mIDCode = null;
        this.mCoords = null;
      }
       else 
        throw toJs($e0);
    }
    this.mIDCodeUpToDate = true;
  }
}
;
_.mIDCodeUpToDate = false;
_.mStructureUpToDate = false;
cggl.Lcom_actelion_research_chem_io_CompoundFileParser_2_classLit = createForClass('com.actelion.research.chem.io', 'CompoundFileParser', 485, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_RXNFileCreator = function $clinit_RXNFileCreator(){
  carci.$clinit_RXNFileCreator = emptyMethod;
  jl.$clinit_Object();
}
;
carci.RXNFileCreator = function RXNFileCreator(r, programName){
  carci.$clinit_RXNFileCreator();
  var e, i, rxn, scale, theWriter;
  Object_0.call(this);
  this.$init_114();
  rxn = new carcr.Reaction_0(r);
  try {
    theWriter = new ji.StringWriter;
    theWriter.write_2('$RXN' + '\n');
    theWriter.write_2(jsNotEquals(programName, null)?programName:'');
    theWriter.write_2('\n' + '\n');
    theWriter.write_2('OCL_RXN_V1.0:' + carcr.encode(r, true, 1 | 2 | 8 | 16));
    theWriter.write_2('\n');
    theWriter.write_2('  ' + rxn.getReactants_0() + '  ' + rxn.getProducts_0() + '\n');
    scale = this.getScalingFactor(rxn);
    for (i = 0; i < rxn.getMolecules_0(); i++) {
      theWriter.write_2('$MOL' + '\n');
      (new carc2.MolfileCreator_1(rxn.getMolecule_1(i), true, scale, null)).writeMolfile(theWriter);
    }
    this.rxnbuffer = theWriter.getBuffer();
    theWriter.close_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println_0('Error in RXNFileCreator: ' + e);
    }
     else 
      throw toJs($e0);
  }
}
;
defineClass(439, 1, {1:1}, carci.RXNFileCreator);
_.$init_114 = function $init_114(){
  this.rxnbuffer = null;
}
;
_.getRXNfile = function getRXNfile(){
  return isNotNull(this.rxnbuffer)?this.rxnbuffer.toString_0():null;
}
;
_.getScalingFactor = function getScalingFactor(rxn){
  var avbl, bondCount, m;
  avbl = 0;
  bondCount = 0;
  for (m = 0; m < rxn.getMolecules_0(); m++) {
    avbl += rxn.getMolecule_1(m).getAverageBondLength_0() * rxn.getMolecule_1(m).getAllBonds_0();
    bondCount += rxn.getMolecule_1(m).getAllBonds_0();
  }
  if (bondCount != 0)
    return bondCount / avbl;
  return 1;
}
;
carci.NL = '\n';
carci.RXN_CODE_TAG = 'OCL_RXN_V1.0:';
cggl.Lcom_actelion_research_chem_io_RXNFileCreator_2_classLit = createForClass('com.actelion.research.chem.io', 'RXNFileCreator', 439, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_RXNFileParser = function $clinit_RXNFileParser(){
  carci.$clinit_RXNFileParser = emptyMethod;
  jl.$clinit_Object();
}
;
carci.RXNFileParser = function RXNFileParser(){
  carci.$clinit_RXNFileParser();
  Object_0.call(this);
  this.$init_115();
}
;
defineClass(438, 1, {1:1}, carci.RXNFileParser);
_.$init_115 = function $init_115(){
}
;
_.getReaction = function getReaction(buffer){
  return this.getReaction_0(buffer, false);
}
;
_.getReaction_0 = function getReaction_0(buffer, ignoreIdCode){
  var theReaction, theReader;
  theReaction = new carcr.Reaction;
  theReader = new ji.BufferedReader(new ji.StringReader(buffer));
  this.parse_11(theReaction, theReader, ignoreIdCode);
  return theReaction;
}
;
_.parse_11 = function parse_12(theReaction, theReader, ignoreIdCode){
  var ok, theLine;
  theLine = theReader.readLine();
  ok = false;
  if (jsEquals(theLine, null) || !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, '$RXN')) {
    throw toJs(new jl.Exception_1("'$RXN' tag not found"));
  }
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(theLine, '$RXN V3000')) {
    ok = this.parseV3(theReaction, theReader, ignoreIdCode);
  }
   else {
    ok = this.parseV2(theReaction, theReader, ignoreIdCode);
  }
  return ok;
}
;
_.parseV2 = function parseV2(theReaction, theReader, ignoreIdCode){
  var comment, encoding, i, i0, molParser, molfile, name_0, product, productCount, reactant, reactantCount, theLine;
  name_0 = jl.trim__Ljava_lang_String___devirtual$(theReader.readLine());
  if (jl.length__I__devirtual$_0(name_0) != 0)
    theReaction.setName_0(name_0);
  theReader.readLine();
  comment = theReader.readLine();
  if (!ignoreIdCode && jl.startsWith_Ljava_lang_String__Z__devirtual$(comment, 'OCL_RXN_V1.0:')) {
    encoding = jl.substring_I_Ljava_lang_String___devirtual$(comment, jl.length__I__devirtual$_0('OCL_RXN_V1.0:'));
    if (isNotNull(carcr.decode_1(encoding, true, theReaction)))
      return true;
  }
  theLine = theReader.readLine();
  reactantCount = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(theLine, 0, 3)));
  productCount = jl.parseInt_2(jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(theLine, 3, 6)));
  molParser = new carc2.MolfileParser;
  for (i0 = 0; i0 < reactantCount; i0++) {
    theLine = theReader.readLine();
    if (jsEquals(theLine, null) || !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, '$MOL')) {
      throw toJs(new jl.Exception_1("'$MOL' tag not found"));
    }
    reactant = new carc2.StereoMolecule;
    molfile = new jl.StringBuffer_0(32768);
    do {
      theLine = theReader.readLine();
      molfile.append_2(theLine);
      molfile.append_2('\n');
    }
     while (jsNotEquals(theLine, null) && !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  END'));
    if (jsEquals(theLine, null)) {
      throw toJs(new jl.Exception_1("'M  END' not found"));
    }
    molParser.parse_6(reactant, molfile);
    theReaction.addReactant_0(reactant);
  }
  for (i = 0; i < productCount; i++) {
    theLine = theReader.readLine();
    if (jsEquals(theLine, null) || !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, '$MOL')) {
      throw toJs(new jl.Exception_1("'$MOL' tag not found"));
    }
    product = new carc2.StereoMolecule;
    molfile = new jl.StringBuffer_0(32768);
    do {
      theLine = theReader.readLine();
      molfile.append_2(theLine);
      molfile.append_2('\n');
    }
     while (jsNotEquals(theLine, null) && !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  END'));
    if (jsEquals(theLine, null)) {
      throw toJs(new jl.Exception_1("'M  END' not found"));
    }
    molParser.parse_6(product, molfile);
    theReaction.addProduct_0(product);
  }
  return true;
}
;
_.parseV3 = function parseV3(theReaction, theReader, ignoreIdCode){
  var comment, encoding, i, molParser, molecule, molfile, name_0, p, productCount, reactantCount, t, theLine;
  name_0 = jl.trim__Ljava_lang_String___devirtual$(theReader.readLine());
  if (jl.length__I__devirtual$_0(name_0) != 0)
    theReaction.setName_0(name_0);
  theReader.readLine();
  comment = theReader.readLine();
  if (!ignoreIdCode && jl.startsWith_Ljava_lang_String__Z__devirtual$(comment, 'OCL_RXN_V1.0:')) {
    encoding = jl.substring_I_Ljava_lang_String___devirtual$(comment, jl.length__I__devirtual$_0('OCL_RXN_V1.0:'));
    if (isNotNull(carcr.decode_1(encoding, true, theReaction)))
      return true;
  }
  theLine = theReader.readLine();
  molParser = new carc2.MolfileParser;
  if (jsNotEquals(theLine, null) && jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  V30 COUNTS')) {
    t = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(theLine, 13));
    p = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(t, ' ');
    reactantCount = jl.parseInt_2(p[0]);
    productCount = jl.parseInt_2(p[1]);
    if (reactantCount > 0) {
      theLine = theReader.readLine();
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('M  V30 BEGIN REACTANT', theLine)) {
        for (i = 0; i < reactantCount; i++) {
          molecule = new carc2.StereoMolecule;
          molfile = new jl.StringBuffer_0(32768);
          molfile.append_2('\nActelion Java MolfileCreator 2.0\n\n  0  0  0  0  0  0              0 V3000\n');
          do {
            theLine = theReader.readLine();
            molfile.append_2(theLine);
            molfile.append_2('\n');
          }
           while (jsNotEquals(theLine, null) && !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  V30 END CTAB'));
          molParser.parse_6(molecule, molfile);
          theReaction.addReactant_0(molecule);
        }
      }
      theLine = theReader.readLine();
    }
    if (productCount > 0) {
      theLine = theReader.readLine();
      if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('M  V30 BEGIN PRODUCT', theLine)) {
        for (i = 0; i < productCount; i++) {
          molecule = new carc2.StereoMolecule;
          molfile = new jl.StringBuffer_0(32768);
          molfile.append_2('\nActelion Java MolfileCreator 2.0\n\n  0  0  0  0  0  0              0 V3000\n');
          do {
            theLine = theReader.readLine();
            molfile.append_2(theLine);
            molfile.append_2('\n');
          }
           while (jsNotEquals(theLine, null) && !jl.startsWith_Ljava_lang_String__Z__devirtual$(theLine, 'M  V30 END CTAB'));
          molParser.parse_6(molecule, molfile);
          theReaction.addProduct_0(molecule);
        }
        theLine = theReader.readLine();
      }
    }
    return true;
  }
  return false;
}
;
carci.AUX_MOLFILE_HEADER = '\nActelion Java MolfileCreator 2.0\n\n  0  0  0  0  0  0              0 V3000\n';
carci.DEFAULT_CAPACITY = 32768;
carci.END_CTAB = 'M  V30 END CTAB';
carci.END_MOL_TAG = 'M  END';
carci.MOL_MAGIC = '$MOL';
carci.RXN_MAGIC = '$RXN';
carci.RXN_V3_COUNTS_LINE = 'M  V30 COUNTS';
carci.RXN_V3_MAGIC = '$RXN V3000';
carci.V30_BEGIN_PRODUCT = 'M  V30 BEGIN PRODUCT';
carci.V30_BEGIN_REACTANT = 'M  V30 BEGIN REACTANT';
cggl.Lcom_actelion_research_chem_io_RXNFileParser_2_classLit = createForClass('com.actelion.research.chem.io', 'RXNFileParser', 438, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_RXNFileV3Creator = function $clinit_RXNFileV3Creator(){
  carci.$clinit_RXNFileV3Creator = emptyMethod;
  jl.$clinit_Object();
}
;
carci.RXNFileV3Creator = function RXNFileV3Creator(r, programName){
  carci.$clinit_RXNFileV3Creator();
  var e, i, pcnt, rcnt, rxn, scalingFactor, theWriter;
  Object_0.call(this);
  this.$init_116();
  rxn = new carcr.Reaction_0(r);
  try {
    theWriter = new ji.StringWriter;
    theWriter.write_2('$RXN V3000' + '\n');
    theWriter.write_2(jsNotEquals(programName, null)?programName:'');
    theWriter.write_2('\n' + '\n');
    theWriter.write_2('OCL_RXN_V1.0:' + carcr.encode(r, true, 1 | 2 | 8));
    theWriter.write_2('\n');
    rcnt = rxn.getReactants_0();
    pcnt = rxn.getProducts_0();
    theWriter.write_6('M  V30 COUNTS ' + rcnt + ' ' + pcnt + '\n', rcnt, pcnt);
    scalingFactor = this.getScalingFactor_0(rxn);
    if (rcnt > 0) {
      theWriter.write_2('M  V30 BEGIN REACTANT' + '\n');
      for (i = 0; i < rxn.getReactants_0(); i++) {
        theWriter.write_2(carc2.writeCTAB(rxn.getReactant_0(i), scalingFactor));
      }
      theWriter.write_2('M  V30 END REACTANT' + '\n');
    }
    if (pcnt > 0) {
      theWriter.write_2('M  V30 BEGIN PRODUCT' + '\n');
      for (i = 0; i < rxn.getProducts_0(); i++) {
        theWriter.write_2(carc2.writeCTAB(rxn.getProduct_0(i), scalingFactor));
      }
      theWriter.write_2('M  V30 END PRODUCT' + '\n');
    }
    theWriter.write_2('M  END' + '\n');
    this.rxnbuffer = theWriter.getBuffer();
    theWriter.close_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      (jl.$clinit_System() , jl.err).println_0('Error in RXNFileCreator: ' + e);
    }
     else 
      throw toJs($e0);
  }
}
;
defineClass(440, 1, {1:1}, carci.RXNFileV3Creator);
_.$init_116 = function $init_116(){
  this.rxnbuffer = null;
}
;
_.getRXNfile = function getRXNfile_0(){
  return isNotNull(this.rxnbuffer)?this.rxnbuffer.toString_0():null;
}
;
_.getScalingFactor_0 = function getScalingFactor_0(rxn){
  var avbl, bondCount, m;
  avbl = 0;
  bondCount = 0;
  for (m = 0; m < rxn.getMolecules_0(); m++) {
    avbl += rxn.getMolecule_1(m).getAverageBondLength_0() * rxn.getMolecule_1(m).getAllBonds_0();
    bondCount += rxn.getMolecule_1(m).getAllBonds_0();
  }
  if (bondCount != 0)
    return bondCount / avbl;
  return 1;
}
;
carci.NL_0 = '\n';
carci.RXN_CODE_TAG_0 = 'OCL_RXN_V1.0:';
cggl.Lcom_actelion_research_chem_io_RXNFileV3Creator_2_classLit = createForClass('com.actelion.research.chem.io', 'RXNFileV3Creator', 440, cggl.Ljava_lang_Object_2_classLit);
carci.$clinit_SDFileParser = function $clinit_SDFileParser(){
  carci.$clinit_SDFileParser = emptyMethod;
  carci.$clinit_CompoundFileParser();
  carci.cIDFieldNames = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Idorsia No', 'Actelion No', 'ID', 'IDNUMBER', 'COMPOUND_ID', 'NAME', 'COMPND']);
}
;
carci.SDFileParser = function SDFileParser(reader, fieldName){
  carci.$clinit_SDFileParser();
  carci.CompoundFileParser.call(this);
  this.$init_117();
  this.mNoOfRecords = -1;
  this.mFieldName = fieldName;
  this.mReader = instanceOf(reader, 91)?castTo(reader, 91):new ji.BufferedReader(reader);
  this.init_4();
}
;
defineClass(484, 485, {1:1}, carci.SDFileParser);
_.$init_117 = function $init_117(){
}
;
_.advanceToNext = function advanceToNext(){
  var e, field, fieldIndex, fieldName, idName, idName$array, idName$index, idName$max, line, molfileComplete;
  if (isNull(this.mReader))
    return false;
  this.mMolfileBuffer.setLength(0);
  this.mDataBuffer.setLength(0);
  this.mMol = null;
  molfileComplete = false;
  fieldIndex = -1;
  fieldName = null;
  this.mFieldData = jsEquals(this.mFieldName, null)?null:initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, this.mFieldName.length, 6, 1);
  this.mIDFieldIndex = -1;
  do {
    try {
      line = this.mReader.readLine();
      if (jsEquals(line, null)) {
        this.mMolfileBuffer.setLength(0);
        this.mReader.close_0();
        return false;
      }
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 66)) {
        e = $e0;
        this.mMolfileBuffer.setLength(0);
        return false;
      }
       else 
        throw toJs($e0);
    }
    if (!molfileComplete) {
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, '>')) {
        molfileComplete = true;
        this.mMolfileBuffer.append_9('M  END');
        this.mMolfileBuffer.append_4(10);
        this.mDataBuffer.append_9(line);
        this.mDataBuffer.append_4(10);
      }
       else {
        this.mMolfileBuffer.append_9(line);
        this.mMolfileBuffer.append_4(10);
        if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, 'M  END'))
          molfileComplete = true;
        continue;
      }
    }
     else {
      this.mDataBuffer.append_9(line);
      this.mDataBuffer.append_4(10);
    }
    if (jsNotEquals(this.mFieldName, null)) {
      if (jl.length__I__devirtual$_0(line) == 0) {
        fieldIndex = -1;
      }
       else if (fieldIndex == -1) {
        fieldName = this.extractFieldName(line);
        if (jsNotEquals(fieldName, null)) {
          fieldIndex = -1;
          for (field = 0; field < this.mFieldName.length; field++) {
            if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(fieldName, this.mFieldName[field])) {
              fieldIndex = field;
              break;
            }
          }
          if (this.mIDFieldIndex == -1) {
            for (idName$array = carci.cIDFieldNames , idName$index = 0 , idName$max = idName$array.length; idName$index < idName$max; ++idName$index) {
              idName = idName$array[idName$index];
              if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(fieldName, idName)) {
                this.mIDFieldIndex = fieldIndex;
                break;
              }
            }
          }
        }
      }
       else {
        if (jsEquals(this.mFieldData[fieldIndex], null)) {
          this.mFieldData[fieldIndex] = line;
        }
         else {
          this.mFieldData[fieldIndex] = jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(jl.concat_Ljava_lang_String__Ljava_lang_String___devirtual$(this.mFieldData[fieldIndex], '\n'), line);
        }
      }
    }
  }
   while (!jl.startsWith_Ljava_lang_String__Z__devirtual$(line, '$$$$'));
  return true;
}
;
_.extractAllFieldNames = function extractAllFieldNames(recordsToInspect){
  var e, fieldName, fieldNameList, line, records;
  records = 0;
  fieldNameList = new carc2.UniqueStringList;
  while (records < recordsToInspect) {
    try {
      line = this.mReader.readLine();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 66)) {
        e = $e0;
        if (records < recordsToInspect)
          this.mNoOfRecords = records;
        break;
      }
       else 
        throw toJs($e0);
    }
    if (jsEquals(line, null)) {
      if (records < recordsToInspect)
        this.mNoOfRecords = records;
      break;
    }
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, '$$$$'))
      records++;
    if (jl.startsWith_Ljava_lang_String__Z__devirtual$(line, '>')) {
      fieldName = this.extractFieldName(line);
      if (jsNotEquals(fieldName, null))
        fieldNameList.addString(fieldName);
    }
  }
  try {
    this.mReader.close_0();
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 66)) {
      e = $e1;
    }
     else 
      throw toJs($e1);
  }
  this.mFieldName = fieldNameList.toArray_1();
}
;
_.extractFieldName = function extractFieldName(line){
  var closeBracket, i, index_0, openBracket;
  if (jl.length__I__devirtual$_0(line) == 0 || jl.charAt_I_C__devirtual$_0(line, 0) != 62)
    return null;
  index_0 = 1;
  openBracket = 0;
  closeBracket = 0;
  while (index_0 < jl.length__I__devirtual$_0(line)) {
    if (jl.charAt_I_C__devirtual$_0(line, index_0) == 60) {
      if (openBracket != 0)
        return null;
      openBracket = index_0;
    }
     else if (jl.charAt_I_C__devirtual$_0(line, index_0) == 62) {
      if (closeBracket != 0)
        return null;
      closeBracket = index_0;
    }
    index_0++;
  }
  if (openBracket != 0 && openBracket < closeBracket)
    return jl.substring_II_Ljava_lang_String___devirtual$(line, openBracket + 1, closeBracket);
  index_0 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(line, 'DT', 1);
  if (index_0 == -1)
    return null;
  i = index_0 + 2;
  while (jl.length__I__devirtual$_0(line) > i && isDigit(jl.charAt_I_C__devirtual$_0(line, i)))
    i++;
  return i == index_0 + 2?null:jl.substring_II_Ljava_lang_String___devirtual$(line, index_0, i);
}
;
_.getFieldData_0 = function getFieldData(index_0){
  if (jsEquals(this.mFieldData, null))
    return null;
  return this.mFieldData[index_0];
}
;
_.getFieldNames_0 = function getFieldNames(){
  if (jsEquals(this.mFieldName, null))
    this.extractAllFieldNames(10240);
  return this.mFieldName;
}
;
_.getFieldNames_1 = function getFieldNames_0(recordsToInspect){
  if (jsEquals(this.mFieldName, null))
    this.extractAllFieldNames(recordsToInspect);
  return this.mFieldName;
}
;
_.getMolecule_0 = function getMolecule_3(){
  if (isNotNull(this.mMol))
    return this.mMol;
  this.mMol = (new carc2.MolfileParser).getCompactMolecule(this.getNextMolFile_0());
  if (isNotNull(this.mMol) && (jsEquals(this.mMol.getName_0(), null) || jl.length__I__devirtual$_0(this.mMol.getName_0()) == 0))
    this.mMol.setName_0(this.getMoleculeName());
  return this.mMol;
}
;
_.getMoleculeName = function getMoleculeName(){
  return this.mIDFieldIndex != -1 && jsNotEquals(this.mFieldData, null)?this.mFieldData[this.mIDFieldIndex]:isNotNull(this.mMol)?this.mMol.getName_0():null;
}
;
_.getNextFieldData_0 = function getNextFieldData(){
  var fieldData;
  fieldData = this.mDataBuffer.toString_0();
  return fieldData;
}
;
_.getNextMolFile_0 = function getNextMolFile(){
  var molfile;
  molfile = this.mMolfileBuffer.toString_0();
  return molfile;
}
;
_.getRowCount = function getRowCount(){
  return this.mNoOfRecords;
}
;
_.init_4 = function init_4(){
  this.mMolfileBuffer = new jl.StringBuilder_0(10240);
  this.mDataBuffer = new jl.StringBuilder_0(10240);
}
;
_.mIDFieldIndex = 0;
_.mNoOfRecords = 0;
carci.DEFAULT_RECORDS_TO_INSPECT = 10240;
carci.cNewLineString = '\n';
cggl.Lcom_actelion_research_chem_io_SDFileParser_2_classLit = createForClass('com.actelion.research.chem.io', 'SDFileParser', 484, cggl.Lcom_actelion_research_chem_io_CompoundFileParser_2_classLit);
carcp.$clinit_CLogPPredictor = function $clinit_CLogPPredictor(){
  carcp.$clinit_CLogPPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.ATOM_TYPE = stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 60:1}, 5, 14, [524290, 524292, 589826, 589827, 589828, 589829, 589832, 589833, 589837, 589838, 598019, 598020, 598024, 606211, 688130, 688131, 688132, 688137, 688142, 696324, 819202, 819203, 819204, 819205, 819214, 827396, 1048580, 1114114, 1114115, 1114116, 1114120, 1212420, 1220611, 1343492, 1343496, 1638402, 1638403, 17367042, 17367043, 17367044, 17367045, 17367048, 17367049, 17367053, 17367054, 17375236, 17465346, 17465348, 17465353, 17473540, 1208483842, 1208483848, 1208483912, 1208549378, 1208549379, 1208549380, 1208549384, 1208549388, 1208549442, 1208549443, 1208549444, 1208549448, 1208557571, 1208565763, 1208565827, 1409875970, 1409875971, 1409875972, 1409875976, 1409876034, 1409876035, 1409876036, 1409876040, 1409884163, 1409974274, 1409974280, 1409974338, 1678245892, 1678311426, 1678311427, 1678311428, 1678311432, 1678311490, 1678311491, 1678311492, 1678311496, 1678409730, 1678409731, 1678409732, 1678409794, 1678540802, 1678540808, 1678540810, 1678540866, 2282291202, 2282291203, 2282291266, 2282291267, 2282389506, 2282389507, 2282389570, 2282389571, 2282389572, 2282520578, 2282520579, 2282520642, 2282520643, 2282537027, 2483617794, 2483617795, 2483617858, 2483617859, 2483617860, 2483617864, 2483716098, 2483716099, 2483716162, 2483716163, 2484150275, 2484248579, 2752675842, 3356033026, 3356139523, 3557359618, 3557457922, 3557588994, 34510798914, 34510798915, 34510798916, 34510798920, 34510807107, 34510815299, 34712125506, 34712125507, 34712125508, 34712125512, 34712223810, 34712223811, 34712223812, 34712223816, 34980560962, 34980560963, 34980659266, 34980659267, 34980659268, 35568287746, 35568287747, 35568287748, 35568287752, 35568287756, 35568287810, 35568287811, 35568287812, 35568287816, 35568287820, 35568386050, 35568386051, 35568386052, 35568386114, 35568386120, 35568517122, 35568517123, 35568517124, 35568517128, 35568517186, 35568517187, 35568517188, 35568517192, 35568812034, 35568812035, 35568812098, 35568812099, 35568910338, 35568910339, 35568910403, 35569336322, 35569434626, 35585064962, 35585064963, 35585064964, 35585064968, 35585065026, 35585065027, 35585065028, 35585065032, 35769614338, 35769614340, 35769614402, 35769712642, 35770138626, 35770236930, 35786391554, 35786391555, 2475109646403, 2475109711874, 2475109711875, 2475109711938, 2475109711939, 2475109720067, 2475109720131, 2475109728259, 2475109728323, 2887426572290, 2887426572291, 2887426572354, 2887426572355, 2887627898882, 2887627898883, 2887627898946, 2887627997186, 2887627997250, 3437182386178, 3437182386179, 3437182386242, 3437182386243, 3437383712770, 3437383712771, 3437383712834, 3437383811074, 3437652148226, 3437652377602, 4674132967426, 4674132967490, 4674132967491, 4674132975619, 4674334294018, 4674334294082, 4674334294083, 4674334302211, 4674334302275, 4674334392322, 4674334392386, 4674602729474, 4674602729538, 4674602827842, 4674602958850, 4674602958914, 5086449827842, 5086449827848, 5086449827906, 5086449827907, 5086449827912, 5086651154434, 5086651154498, 5086651162627, 5086651252738, 5086651252743, 5086651252802, 5086651252808, 5086651260931, 5086919589890, 5086919589954, 5086919688194, 5086919688258, 5086919819330, 5636205641794, 5636406968322, 5636406968386, 5636407066626, 5636407066690, 5636675403842, 5636675502082, 5636675502146, {l:589890, m:73760, h:4}, {l:589891, m:73760, h:4}, {l:598083, m:73760, h:4}, {l:688194, m:73760, h:4}, {l:688195, m:73760, h:4}, {l:696387, m:73760, h:4}, {l:819266, m:73760, h:4}, {l:65602, m:73764, h:4}, {l:65603, m:73764, h:4}, {l:589890, m:172064, h:4}, {l:589891, m:172064, h:4}, {l:598083, m:172064, h:4}, {l:688194, m:172064, h:4}, {l:688195, m:172064, h:4}, {l:696387, m:172064, h:4}, {l:819266, m:172064, h:4}, {l:65602, m:172068, h:4}, {l:65603, m:172068, h:4}, {l:589890, m:172112, h:4}, {l:589891, m:172112, h:4}, {l:688194, m:172112, h:4}, {l:819266, m:172112, h:4}, {l:65602, m:172116, h:4}, {l:65608, m:172116, h:4}, {l:163906, m:172116, h:4}, {l:589890, m:303136, h:4}, {l:688194, m:303136, h:4}, {l:819266, m:303136, h:4}, {l:65602, m:303140, h:4}, {l:589890, m:303184, h:4}, {l:688194, m:303184, h:4}, {l:819266, m:303184, h:4}, {l:65602, m:303188, h:4}, {l:65602, m:303252, h:4}, {l:589826, m:590112, h:4}, {l:589827, m:590112, h:4}, {l:589890, m:590112, h:4}, {l:589891, m:590112, h:4}, {l:589826, m:590160, h:4}, {l:589827, m:590160, h:4}, {l:589890, m:590160, h:4}, {l:589891, m:590160, h:4}, {l:688130, m:590160, h:4}, {l:688194, m:590160, h:4}, {l:589826, m:590224, h:4}, {l:589827, m:590224, h:4}, {l:589890, m:590224, h:4}, {l:589891, m:590224, h:4}, {l:688131, m:590224, h:4}, {l:688194, m:590224, h:4}, {l:819203, m:590224, h:4}, {l:589826, m:590368, h:4}, {l:589890, m:590368, h:4}, {l:688130, m:590368, h:4}, {l:688194, m:590368, h:4}, {l:696323, m:590368, h:4}, {l:819202, m:590368, h:4}, {l:819208, m:590368, h:4}, {l:819266, m:590368, h:4}, {l:589826, m:590416, h:4}, {l:589832, m:590416, h:4}, {l:589890, m:590416, h:4}, {l:589891, m:590416, h:4}, {l:589896, m:590416, h:4}, {l:688130, m:590416, h:4}, {l:688136, m:590416, h:4}, {l:688194, m:590416, h:4}, {l:696323, m:590416, h:4}, {l:819202, m:590416, h:4}, {l:819266, m:590416, h:4}, {l:688130, m:590480, h:4}, {l:688194, m:590480, h:4}, {l:65602, m:598052, h:4}, {l:65603, m:598052, h:4}, {l:65602, m:598100, h:4}, {l:65603, m:598100, h:4}, {l:73795, m:598100, h:4}, {l:163906, m:598100, h:4}, {l:163907, m:598100, h:4}, {l:65602, m:598164, h:4}, {l:163906, m:598164, h:4}, {l:589826, m:598304, h:4}, {l:589827, m:598304, h:4}, {l:589890, m:598304, h:4}, {l:589891, m:598304, h:4}, {l:688130, m:598304, h:4}, {l:688194, m:598304, h:4}, {l:1114114, m:598304, h:4}, {l:1114178, m:598304, h:4}, {l:1212418, m:598304, h:4}, {l:1212424, m:598304, h:4}, {l:1212482, m:598304, h:4}, {l:589826, m:598308, h:4}, {l:589826, m:688416, h:4}, {l:589890, m:688416, h:4}, {l:589826, m:688464, h:4}, {l:589890, m:688464, h:4}, {l:589890, m:688528, h:4}, {l:589826, m:688720, h:4}, {l:688130, m:688720, h:4}, {l:688130, m:688784, h:4}, {l:65602, m:696356, h:4}, {l:65602, m:696404, h:4}, {l:163906, m:696404, h:4}, {l:589826, m:696608, h:4}, {l:1114178, m:696608, h:4}, {l:1212418, m:696608, h:4}, {l:589826, m:696612, h:4}, {l:524355, m:590112, h:288}, {l:589825, m:590112, h:288}, {l:589826, m:590112, h:288}, {l:589890, m:590112, h:288}, {l:598019, m:590112, h:288}, {l:598083, m:590112, h:288}, {l:589826, m:590112, h:336}, {l:589890, m:590112, h:336}, {l:598019, m:590112, h:336}, {l:598083, m:590112, h:336}, {l:589826, m:688416, h:336}, {l:589890, m:688416, h:336}, {l:589826, m:688464, h:336}, {l:589890, m:688464, h:336}, {l:688130, m:688464, h:336}, {l:589826, m:590112, h:400}, {l:589827, m:590112, h:400}, {l:589890, m:590112, h:400}, {l:589891, m:590112, h:400}, {l:589826, m:688416, h:400}, {l:589826, m:688464, h:400}, {l:688130, m:688464, h:400}, {l:589826, m:819488, h:400}, {l:589890, m:819488, h:400}, {l:589826, m:819536, h:400}, {l:589826, m:819600, h:400}, {l:688130, m:819600, h:400}, {l:819202, m:819600, h:400}, {l:589827, m:819488, h:544}, {l:589831, m:688416, h:592}, {l:589831, m:688464, h:592}, {l:688135, m:688464, h:592}, {l:688199, m:688464, h:592}, {l:589831, m:819536, h:592}, {l:688135, m:819536, h:592}, {l:688135, m:819600, h:592}, {l:688202, m:819600, h:592}, {l:589832, m:1212704, h:592}, {l:589896, m:1212704, h:592}, {l:589832, m:1212752, h:592}, {l:688136, m:1212752, h:592}, {l:688200, m:1212752, h:592}, {l:589831, m:688464, h:656}, {l:688135, m:688464, h:656}, {l:688135, m:819536, h:656}, {l:589891, m:65936, h:8228}, {l:589826, m:590112, h:8480}, {l:589890, m:590112, h:8480}, {l:598019, m:590112, h:8480}, {l:589826, m:688416, h:8480}, {l:589890, m:688416, h:8480}, {l:589826, m:688464, h:8480}, {l:589890, m:688464, h:8480}, {l:688130, m:688464, h:8480}, {l:819202, m:819600, h:8480}, {l:688135, m:1212752, h:8480}, {l:589832, m:1213008, h:8480}, {l:589896, m:1213008, h:8480}, {l:688136, m:1213008, h:8480}, {l:688200, m:1213008, h:8480}, {l:688135, m:1343824, h:8480}, {l:589826, m:590112, h:8484}, {l:589890, m:590112, h:8484}, {l:589826, m:590160, h:8484}, {l:589890, m:590160, h:8484}, {l:1212424, m:590416, h:8484}, {l:1212488, m:590416, h:8484}, {l:688130, m:598304, h:8484}, {l:688194, m:598304, h:8484}, {l:589826, m:590112, h:8528}, {l:589890, m:590112, h:8528}]);
  carcp.INCREMENT = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {65:1, 4:1, 1:1}, 5, 15, [0.6966999769210815, 0, 0.4885999858379364, -0.47269999980926514, -0.07490000128746033, 0.6262000203132629, 0.273499995470047, 0.5699999928474426, 0.7009999752044678, 0.9534000158309937, -3.6435000896453857, -2.150899887084961, 0.4975000023841858, -2.19950008392334, -0.2809000015258789, -0.8259999752044678, -0.1784999966621399, -1.620300054550171, -1.0959999561309814, -0.3619999885559082, 0.13950000703334808, -0.29750001430511475, -1.2907999753952026, 1.0161999464035034, -1.3825000524520874, -2.5383999347686768, 0.33169999718666077, 0.4291999936103821, -0.5824000239372253, -0.1834000051021576, 0.1306000053882599, -0.5015000104904175, 0.6262000203132629, -0.5257999897003174, 0.4244000017642975, -0.16099999845027924, -0.2777999937534332, 0.5110999941825867, -0.435699999332428, -0.10409999638795853, 0.3424000144004822, -0.061500001698732376, 0.6035000085830688, 0.7226999998092651, 0.43459999561309814, -1.6821000576019287, -0.3310000002384186, -0.49799999594688416, -1.4915000200271606, -0.3650999963283539, 0.45969998836517334, 0.3384000062942505, 0.6632999777793884, 0.4544000029563904, 0.15970000624656677, 0.633899986743927, 0.35040000081062317, 0.04490000009536743, 0.34200000762939453, 0.26109999418258667, 0.40459999442100525, 0.5218999981880188, -1.065000057220459, -1.2314000129699707, -1.802299976348877, -0.36320000886917114, -0.4108000099658966, 0.30570000410079956, -0.14560000598430634, -0.27129998803138733, -0.5192999839782715, 0.45260000228881836, 0.5539000034332275, 0.8374000191688538, -0.7070000171661377, -0.48809999227523804, -0.4099999964237213, 0, 0.14790000021457672, 0.3447999954223633, 0.42980000376701355, 0.5579000115394592, -0.1264999955892563, -0.042500000447034836, 0.07670000195503235, 0.6635000109672546, -0.38119998574256897, -0.8367999792098999, 1.0286999940872192, -0.10209999978542328, 0.3587000072002411, -0.5945000052452087, 0.16920000314712524, -0.121799997985363, 0.32829999923706055, 0.22390000522136688, 0.20430000126361847, 0.05900000035762787, -0.48350000381469727, 0.6165000200271606, -0.4011000096797943, 0.5577999949455261, -0.21639999747276306, -0.017500000074505806, 0.29809999465942383, 0.10999999940395355, 0.27149999141693115, -0.2994999885559082, -0.46700000762939453, 0.1565999984741211, 0.046799998730421066, -0.13210000097751617, 1.3686000108718872, 0, -0.4115999937057495, 1.0185999870300293, -0.3935000002384186, 0.5223000049591064, 0.3684999942779541, 0.25769999623298645, 1.5192999839782715, 0.2705000042915344, 0.3790999948978424, 0.012000000104308128, -0.33970001339912415, 0.14830000698566437, 0.2766000032424927, 0.35929998755455017, 0.7714999914169312, 0.3149999976158142, -1.618499994277954, 0.18889999389648438, -0.2651999890804291, -0.09650000184774399, 0.420199990272522, 0.18709999322891235, -0.3684000074863434, -0.07779999822378159, 0.8942999839782715, 0.3693999946117401, 0.28790000081062317, 0.4489000141620636, -0.26010000705718994, 0.4771000146865845, 0.1923000067472458, 0.43810001015663147, 0.16949999332427979, 0.45249998569488525, 0.3352000117301941, 0.1582999974489212, 0.4036000072956085, -0.04800000041723251, 0.5023000240325928, -0.26489999890327454, 0.76910001039505, -0.35519999265670776, 1.0300999879837036, -0.11410000175237656, -0.5932000279426575, 0.17489999532699585, 0.13130000233650208, -0.18039999902248383, 0.399399995803833, 0.22910000383853912, 0.31690001487731934, 0.35989999771118164, -0.0038999998942017555, -0.2955999970436096, 0.4408999979496002, -0.16089999675750732, 0.3774999976158142, -0.13459999859333038, 0.2838999927043915, 0.5128999948501587, 0.1265999972820282, 0.4293999969959259, 0.28060001134872437, 0.49070000648498535, 0.3540000021457672, 0.219200000166893, 0.15649999678134918, 0.6934999823570251, 0.3617999851703644, 0.6735000014305115, 0.5777999758720398, -0.5636000037193298, 0.5569000244140625, 0.30379998683929443, -0.32760000228881836, -0.6991999745368958, 0.010300000198185444, -0.4659000039100647, 0.38179999589920044, 0.33169999718666077, 0.18410000205039978, 0.707099974155426, 0.12269999831914902, 0.7949000000953674, -0.6592000126838684, -1.3148000240325928, -0.4066999852657318, -0.1316000074148178, -0.4925000071525574, -0.09290000051259995, -0.4352000057697296, -0.2206999957561493, -0.9959999918937683, -0.723800003528595, -0.5468999743461609, -1.2939000129699707, -0.01360000018030405, 0.065700002014637, 0.7189000248908997, 0.05700000002980232, 0.661899983882904, -0.6381000280380249, -0.8072999715805054, 0.23549999296665192, 0.30480000376701355, -0.019899999722838402, -0.07519999891519547, 0.44609999656677246, 0.1559000015258789, 1.1167999505996704, -1.8039000034332275, 0.23649999499320984, -0.22059999406337738, 0.4480000138282776, -1.1339999437332153, -0.5652999877929688, -0.40529999136924744, -0.13609999418258667, 0.2198999971151352, 0.053599998354911804, -0.020999999716877937, 0.6984999775886536, 0.9642999768257141, -0.41519999504089355, -1.0369000434875488, -0.18299999833106995, 0.5882999897003174, -0.29179999232292175, -0.5293999910354614, -0.6541000008583069, 0.9473000168800354, -0.19059999287128448, -0.8483999967575073, -0.3456999957561493, 0.9541000127792358, 1.4230999946594238, -0.7924000024795532, -0.6019999980926514, 0.07999999821186066, -0.2596000134944916, 0.8381999731063843, -0.4415999948978424, -0.37040001153945923, -0.7487000226974487, -0.10790000110864639, -0.29919999837875366, -0.3276999890804291, 0.025100000202655792, -0.9187999963760376, 0.10939999669790268, 0.8230999708175659, -3.233299970626831, 0.03500000014901161, 0.38179999589920044, -0.7379999756813049, 0.2791000008583069, 0.3206000030040741, 0.5662000179290771, -0.3783999979496002, 0.4032000005245209, -1.794800043106079, -0.15539999306201935, 0.3785000145435333, 0.05339999869465828, -0.16529999673366547, -0.09870000183582306, -0.10050000250339508, -0.6460999846458435, 0.8034999966621399, -0.24050000309944153, -0.12380000203847885, -0.35760000348091125, 0.09610000252723694, -0.6401000022888184, 0.2029000073671341, 0.23589999973773956, 0.4950999915599823, 0.19210000336170197, -0.37450000643730164, 0.34630000591278076, 0.289900004863739, -0.15330000221729279, -0.4169999957084656, 0.37700000405311584, 0.6998000144958496, 0.593999981880188, 0.5911999940872192, -0.5570999979972839, 0.023800000548362732, -0.2475000023841858, 0.030700000002980232, -0.38749998807907104, -0.7437000274658203, 0.5144000053405762, 0.00570000009611249, 0.765500009059906, 0.1720000058412552, -2.5624001026153564, -0.30660000443458557, 0.36469998955726624, 0.17270000278949738, -0.03290000185370445, -0.18930000066757202, 0.07020000368356705, -1.2453999519348145, 0.14959999918937683, -1.3825000524520874, 0.4146000146865845, -0.2667999863624573, -0.11060000211000443, 0.03620000183582306, -0.3188999891281128, -0.7278000116348267, -0.08940000087022781, -0.22769999504089355, -0.2393999993801117, 1.011199951171875, -0.2962000072002411, 0.7775999903678894, 0.2944999933242798, -0.22339999675750732, 0.27639999985694885, 0.8011000156402588, -0.17440000176429749, 0.15809999406337738, -1.7552000284194946, -0.384799987077713, 0.5993000268936157, 0.5267999768257141, -0.04170000180602074, 0.4733000099658966, -0.3400999903678894, -0.14499999582767487, 0.7088000178337097, -0.13179999589920044, 0.04259999841451645, -0.5027999877929688, 0.3831999897956848, -0.011800000444054604, -0.4357999861240387, 0.3749000132083893, -0.12030000239610672, -0.5648000240325928, -0.1972000002861023, -0.8769000172615051, -0.3675000071525574, -0.2003999948501587, -0.6069999933242798, -0.18569999933242798, 0.3467999994754791, -0.36239999532699585, 0.5357999801635742, -0.3700999915599823, 0.13359999656677246, 0.9545000195503235, 0.11389999836683273, -0.16990000009536743, 0.33169999718666077, 0.2890999913215637, 0.2612999975681305, -0.03440000116825104, -1.9498000144958496, -2.024899959564209, -0.6004999876022339, -0.6258000135421753, -1.2348999977111816, 0.328000009059906, -0.54339998960495, -0.7712000012397766, -0.9057000279426575, -0.16680000722408295, -0.9904999732971191, -0.03720000013709068, -1.1638000011444092, 0.12620000541210175, -0.5248000025749207, -0.15379999577999115, -0.36820000410079956, 0.3249000012874603, 0.06499999761581421, 0.051100000739097595, -0.46070000529289246, 0.22310000658035278, 0.28220000863075256, 0.1396999955177307, -0.49380001425743103, 0.39480000734329224, -0.4074999988079071, -0.6410999894142151, -0.009100000374019146, -0.13330000638961792, -0.5192000269889832, -0.16609999537467957, 0.33169999718666077, -0.07069999724626541, 0.4805999994277954, 0.38280001282691956, 0.22290000319480896, 0.6159999966621399, 0.33709999918937683, 0.188400000333786, 0.13809999823570251, -1.4915000200271606, 0.2833000123500824, -0.1225999966263771, -3.9189000129699707, -0.459199994802475, -0.3434999883174896, -0.6654000282287598, -0.5055999755859375, -0.863099992275238, 0.15360000729560852, -0.6427000164985657, -0.08839999884366989, -0.0471000000834465, 0.11060000211000443, 0.382099986076355, -0.23919999599456787, -0.4050999879837036, 0.08910000324249268, -0.6972000002861023, -0.4699000120162964, 0.09220000356435776, 0.08060000091791153, -0.6773999929428101, -0.062199998646974564, -0.9300000071525574, 0.13369999825954437]);
  carcp.cCLogPUnknown = -999;
}
;
carcp.CLogPPredictor = function CLogPPredictor(){
  carcp.$clinit_CLogPPredictor();
  var l, l$array, l$index, l$max;
  Object_0.call(this);
  this.$init_118();
  if (isNull(carcp.sSortedTypeList)) {
    {
      cggl.Lcom_actelion_research_chem_prediction_CLogPPredictor_2_classLit;
      if (isNull(carcp.sSortedTypeList)) {
        carcp.sSortedTypeList = new caru.SortedList;
        for (l$array = carcp.ATOM_TYPE , l$index = 0 , l$max = l$array.length; l$index < l$max; ++l$index) {
          l = jl.valueOf_27(l$array[l$index]);
          carcp.sSortedTypeList.add_10(l);
        }
      }
    }
  }
}
;
defineClass(312, 1, {1:1}, carcp.CLogPPredictor);
_.$init_118 = function $init_118(){
}
;
_.assessCLogP = function assessCLogP(mol){
  var atom, cLogP, e, index_0, type_0;
  cLogP = 0;
  mol.normalizeAmbiguousBonds_0();
  mol.ensureHelperArrays_0(7);
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    try {
      type_0 = carc2.getAtomType(mol, atom, 6241);
      index_0 = carcp.sSortedTypeList.getIndex_0(jl.valueOf_27(type_0));
      if (index_0 != -1)
        cLogP += carcp.INCREMENT[index_0];
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
      }
       else 
        throw toJs($e0);
    }
  }
  return cLogP;
}
;
_.getDetail_0 = function getDetail(mol){
  var atom, atomType, countMap, detail, e, errorCount, formatter, type_0, type$iterator, typeCount;
  detail = new carcp.ParameterizedStringList;
  detail.add_7('cLogP Values are estimated applying an atom-type based increment system.', 2);
  detail.add_7('Atom-types are 64-bit numbers describing atoms and their near surrounding.', 2);
  detail.add_7('Recognized atom types and their contributions are:', 2);
  if (isNotNull(mol)) {
    mol.normalizeAmbiguousBonds_0();
    mol.ensureHelperArrays_0(7);
    errorCount = 0;
    countMap = new ju.TreeMap;
    formatter = new jt.DecimalFormat('#0.000');
    for (atom = 0; atom < mol.getAtoms_0(); atom++) {
      try {
        atomType = carc2.getAtomType(mol, atom, 6241);
        typeCount = castTo(countMap.get(new jl.Long(atomType)), 32);
        if (isNull(typeCount))
          countMap.put(new jl.Long(atomType), new jl.Integer(1));
        else 
          countMap.put(new jl.Long(atomType), new jl.Integer(typeCount.intValue() + 1));
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 14)) {
          e = $e0;
          errorCount++;
        }
         else 
          throw toJs($e0);
      }
    }
    if (errorCount != 0)
      detail.add_7('Warning: ' + errorCount + ' atom type(s) could not be determined.', 2);
    for (type$iterator = countMap.keySet().iterator(); type$iterator.hasNext_0();) {
      type_0 = castTo(type$iterator.next_3(), 93);
      if (carcp.sSortedTypeList.contains_3(type_0))
        detail.add_7(countMap.get(type_0) + ' * ' + formatter.format_1(carcp.INCREMENT[carcp.sSortedTypeList.getIndex_0(type_0)]) + ' AtomType: 0x' + toHexString_0(type_0.longValue()), 2);
      else 
        detail.add_7('Warning: For atom type 0x' + toHexString_0(type_0.longValue()) + ' (' + countMap.get(type_0) + ' times found) is no increment available.', 2);
    }
  }
  return detail;
}
;
carcp.ATOM_TYPE_MODE = 6241;
carcp.cCLogPUnknown = 0;
cggl.Lcom_actelion_research_chem_prediction_CLogPPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'CLogPPredictor', 312, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_DrugScoreCalculator = function $clinit_DrugScoreCalculator(){
  carcp.$clinit_DrugScoreCalculator = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.calculate = function calculate(mCLogP, mSolubility, mMolweight, mDruglikeness, toxRisks){
  carcp.$clinit_DrugScoreCalculator();
  var cLogPScore, drugLikenessScore, drugScore, i, molweightScore, solubilityScore;
  cLogPScore = 1 / (1 + $wnd.Math.exp(mCLogP - 5));
  solubilityScore = 1 - 1 / (1 + $wnd.Math.exp(mSolubility + 5));
  molweightScore = 1 / (1 + $wnd.Math.exp(0.012 * mMolweight - 6));
  drugLikenessScore = 1 - 1 / (1 + $wnd.Math.exp(mDruglikeness));
  drugScore = (0.5 + cLogPScore / 2) * (0.5 + solubilityScore / 2) * (0.5 + molweightScore / 2) * (0.5 + drugLikenessScore / 2);
  for (i = 0; jsNotEquals(toxRisks, null) && i < toxRisks.length; i++) {
    if (toxRisks[i] == 2)
      drugScore *= 0.8;
    else if (toxRisks[i] == 3)
      drugScore *= 0.6;
  }
  return drugScore;
}
;
defineClass(971, 1, {1:1});
cggl.Lcom_actelion_research_chem_prediction_DrugScoreCalculator_2_classLit = createForClass('com.actelion.research.chem.prediction', 'DrugScoreCalculator', 971, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_DruglikenessPredictor = function $clinit_DruglikenessPredictor(){
  carcp.$clinit_DruglikenessPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.cDruglikenessUnknown = -999;
}
;
carcp.DruglikenessPredictor = function DruglikenessPredictor(){
  carcp.$clinit_DruglikenessPredictor();
  var e;
  Object_0.call(this);
  this.$init_119();
  {
    cggl.Lcom_actelion_research_chem_prediction_DruglikenessPredictor_2_classLit;
    if (!carcp.sInitialized) {
      try {
        carcp.sIncrementTable = new carcp.IncrementTable(carcp.druglikenessNoIndex);
        carcp.sInitialized = true;
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 14)) {
          e = $e0;
          (jl.$clinit_System() , jl.out_0).println_0('Unable to initialize DruglikenessPredictor');
        }
         else 
          throw toJs($e0);
      }
    }
  }
}
;
defineClass(431, 1, {1:1}, carcp.DruglikenessPredictor);
_.$init_119 = function $init_119(){
}
;
_.assessDruglikeness_0 = function assessDruglikeness(testMolecule, threadMaster){
  var detail, druglikeness, fragment, fragmentCount, i, increment, incrementSum, nastyIncrementSum, sss;
  detail = new carcp.ParameterizedStringList;
  if (!carcp.sInitialized) {
    detail.add_7('Druglikeness predictor not properly initialized.', 2);
    return -999;
  }
  detail.add_7('Found sub-structure fragments and their contributions:', 2);
  detail.add_7('(yellow atoms carry at least one more substituent)', 2);
  nastyIncrementSum = 0;
  incrementSum = 0;
  fragmentCount = 0;
  sss = new carc2.SSSearcher_0(1);
  fragment = new carc2.StereoMolecule;
  for (i = 0; i < carcp.sIncrementTable.getSize_0(); i++) {
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return -999;
    jl.yield_0();
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, carcp.sIncrementTable.getFragment_1(i));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0()) {
      increment = carcp.sIncrementTable.getIncrement(i);
      if (increment < -1)
        nastyIncrementSum += increment;
      else {
        incrementSum += increment;
        fragmentCount++;
      }
      detail.add_7(carcp.sIncrementTable.getFragment_1(i), 1);
      detail.add_7(jl.toString_41(increment), 3);
    }
  }
  if (fragmentCount == 0)
    return -1;
  druglikeness = nastyIncrementSum + incrementSum / $wnd.Math.sqrt(fragmentCount);
  druglikeness = druglikeness + 0.0625 * (fragmentCount - 40);
  this.mDetail = detail;
  return druglikeness;
}
;
_.getDetail_1 = function getDetail_0(){
  return this.mDetail;
}
;
_.getDruglikenessString_0 = function getDruglikenessString(testMolecule){
  var druglikeness, fragment, fragmentCount, i, incrementSum, sss;
  if (!carcp.sInitialized)
    return 'Druglikeness predictor not properly initialized.';
  incrementSum = 0;
  fragmentCount = 0;
  sss = new carc2.SSSearcher_0(1);
  fragment = new carc2.StereoMolecule;
  for (i = 0; i < carcp.sIncrementTable.getSize_0(); i++) {
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, carcp.sIncrementTable.getFragment_1(i));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0()) {
      incrementSum += carcp.sIncrementTable.getIncrement(i);
      fragmentCount++;
    }
  }
  druglikeness = fragmentCount == 0?-1:incrementSum / $wnd.Math.sqrt(fragmentCount);
  return druglikeness + '\t' + fragmentCount + '\t' + testMolecule.getAtoms_0();
}
;
carcp.cDruglikenessUnknown = 0;
carcp.druglikenessNoIndex = 'sNy@LDeVjj@XTKU|TH\t5.89\nKA|P@QvRRJjjj@LFaLJnyC@\t5.86\nHiFH@H{IIEUJjj@FGPfES]rA@\t5.82\nJoB@@BUJssoPvxPTA@@@FFpaUpriv\x7FDsP\t5.61\nHeTH@@RV[TYZ`@@AaUMpssHP`\t5.19\nHmtH@@RVYWeVhH@@FCESCJ|rDx\t5.18\nj`qA@@IIULsj\x7FiuoUP@`@@@CAUF\\DkQkN}qFB@\t5.1\nsOx@@eJymUT@pLVOLJp\t4.95\nj`a`@@@YIEEDthdg^jjj`@@@XV`cAJLxKQkN}rD`\t4.89\nHk]@@@yJeWmZ{Sjj`@`@XSBEPrngqLx\t4.83\nHkmL`LfDD@cIIBhhd]MZ`X@@FEXwKoDdp\t4.7\nHefD@Hz\\ddUTuUUP@pFDpj[ayD`\t4.7\nHaF@@@Ri_ijjj@FAPaUsL[`\t4.63\nHeV@@@RUYTYj`@@AatIS\\L|PL@\t4.6\nHif@@@RiUzzjjh@XMBXUMqND\t4.55\nHcuHA@E`dYrRQVYRUUUT@LEaLJfzUt\t4.49\nHcLD@@QIeVuWVj`@@A`q\\LkoDq`\t4.49\nsGY@LDeVj`FABuxhP\t4.38\nHcLL@@RlbbTLRRzuT@@@LFkae]xfD\t4.37\nHcNL`LaA@HrRPjIKKju@`@@pkFzUxeZ\t4.36\nHid@p@kFkAkDfUfn`BH@FF@p|qLx\t4.35\nJoBD@@IS\\rjzv[uP@@@@@X[EMprng[|a@\t4.33\nHg|H@@RYfUWd}nh@@@@@X[ATwCJz]|`@\t4.33\nHeT@p@kNkIkDfY[XXBH`@XXGSsLhP\t4.33\nJoBD@@IKLrjzv[mP@@@@@XKS\\Lkiv\x7FDa@\t4.3\nHmtHpIBlzlVlRYeeXXBHX@FFAr|sJD\t4.28\nHie@@@yJeWkjjj`A`tIaTwDxP\t4.28\nHeU@@@yJeWZzjjj@FCPfES\\PY@\t4.18\nHidH@@RYm^Fjjh@X\\BES\\ODc@\t4.14\nHeV@@@RV[TYz`@@AaUMpsqDH\t4.14\nsNplJyDJHtQddeeUPCBqXwdX\t4.1\nHg|@`@bDfUueZX{`@h@@@FB`fETkiwrN@\t4.05\nJoB`@@]ddRRJTRU][uUU@A@@XKBXUKiv\x7FDXP\t4.04\nJoBD@DIU\\vjzv[uPTEDP@XGFTwCJz]orB@\t4.04\nHg|H@@RYfUWd}nhJBbH@XFFES\\LkiwrH@\t4.04\nHg}@@@yJeWe^nNzjhHB@AaLHUCNg_DqP\t4.04\nHk^@@MRjY]\\]TzhJBH@FDieMpri|Pm@\t4.04\nHcn@@@Re]eRi]jj@B@AaLIa\\LkoDB`\t4.04\nHmt@`@dDfUuZZ@Bj@A`rXUCODyP\t3.99\nHeT@@DjUghP`h`@X]BESCODs`\t3.99\nsNuhLxj@cIHUEi`FDwDF\t3.99\nHmuL@FFnWIIEEJQfjYi`A`cCqLH\t3.98\nj`q`@@@IJsLjoiuoUT@@@@@CBtDXYpTeZMYwnP@\t3.94\nHklHpEbPRPrPrRRqIYHYj`@j@A`UMp|SS@\t3.94\nHo~@@HrRQVKJIJwjjj@@@FApfES\\ng[|`P\t3.94\nHkn@@@rQQEJIKSjj`@@A`lIaTLki|PF@\t3.94\nHeVH@DAImeQej@@@FETwCODS@\t3.94\nsNx@IddbmUPCBqXwdX\t3.89\nHmtD@@QIeyVUZh@@@XTwCJ|SB@\t3.87\nHeW@@@zTjU_kjjjh@X]BXULODzP\t3.83\nHcLD@H[IIDcLdnuT`@@CAlKae^Hf`\t3.83\nHg}@`AlHaIe]YVfNx@Jjh`AaHIaUJz_Dzp\t3.82\nHg~H@CyJieU~SvzhF`b@AaNESCJ{_DPp\t3.82\nHmtL@@Pdf{eYUj`@@A`qMproDS@\t3.79\nsNy@BDivjj@XFZodP\t3.79\nsGY@LDeZj`FAbMy@\t3.79\nsGX@@eLuT@pHVOEJ\t3.79\nHeT@`@dDfUuih@J`@XTfEP|Si@\t3.78\nJoB@@BUJssoPvxPTA@@@FApfEWCJg[|cP\t3.76\nHmuD`LVD@HrRRqIXYV`@`@XUS\\J|c@\t3.75\nHg}L`FM]n@cIIDhTheSCMUUSSP@pzDpjG^PX\t3.74\nsGYhMEPDYIBei@XS\\PH\t3.7\nj`q@A@@RGiAIe]fuzLlz@Bh@H@@XRQ`eNJtZwHR@\t3.69\nj`q@@@DjUggUhJw``hBB@@A`ZBBTxJRcV]{bLZ@\t3.69\nHg~@@@rRIIEQIUqwUUP@P@LEaLJiWSobMp\t3.69\nHk^@@@Ri_YVftzjh@H@FDpaTLki|SF@\t3.69\nHg~@@MRjY]_GUNjB`b`@XRfTwCJgqBl\t3.69\nHkn@@@rRJGJIKSjj`@@A`lIaTLki|a`\t3.69\nHmvH@DAIn[VUZh@@@XLc\\LkqLh\t3.69\nHaFH@NAIYUnZjh@XEaTwLaN@\t3.69\nqCaHK@Hg`dsPFDGME`\t3.69\nKAz@@ArUJmUT@XMBXUMrN@\t3.68\nsJY@LDeZhAahcqC@\t3.68\nHklD`HXxcIIDcLeevjd@H@FGXWCJgrD@\t3.66\nHmtH`NBHRYWVih@Jh@FG@fETkrA@\t3.66\nHiFH@BAJ]ejjh@XMFTwCrD@\t3.66\nKA|P@XBRlmUT@XMBES]r@@\t3.66\nsGT@ATiVj`FAbqxaP\t3.66\nHk]D@DHIRYge\\ftvj`PH@FE\\Jz_Dp`\t3.62\nHid@p@kFkAkDfUfn`BH@FA@cCqLx\t3.62\nsNx@@eRmUPCBqXwdX\t3.62\nsGY@DDfuj`FBMxe`\t3.6\nsGX`JBdruT@pHbwDZ\t3.59\nHknH@JCIDdhhd]Nj`h@@FDqc\\Lki|a@\t3.56\nHmv@pBBlFlVlRYfyZXHJH@FF@J|pnd\t3.56\nHeUL@DpFEIeYzyjfZ@FBIgDzP\t3.56\nJoCB@E|NRRJJIIGKYoU@uAD@AaNESRnf\x7FDFp\t3.55\nHo~D@Hy|ddUTtRVNzjj@B@AalIaTwRnorC@\t3.55\nJoB`P@vDPdrnlktqw@AUUQ@AaHIaUJz_Dyp\t3.55\nHkmL`LZDh@cIHULhdmMZZjj@F@xwCJz_H@\t3.55\nHmvDPLa@BNbLddlTVeUhH@@FAXwCqIT\t3.55\nHknH@JCIDdhhd]Nj`h@@F@qc\\LkoDPp\t3.55\nHcLH@@rJJIPiKkUP@@@p{FxYW^He@\t3.55\nKAzY@XtIPAFRPjYZZ@LDqnHG@\t3.55\nKAxH@@bSKKUT@XXUMqLx\t3.55\nsJQdEbOBAD^u@LINYX`\t3.55\nJgC@PG@DISLroutgmt@P@D@@XBALLki|Sk@\t3.54\nHk^L`FWS`HrRQJEJZfFZjjfZ@FCPfEV|`P\t3.52\nJoc@PG@DISLrj}]Mz}@D@PP@A`HDprnwqC\\\t3.51\nHcNHpBtJpZqZqIf[eZXHJI@Aa`BoLKi@\t3.51\nHcMDPLvD@HzHrRRqQ[RjtDA@@pKFx^IN`\t3.48\nsOt@@tiWMjj`FEbqoDF\t3.48\nHaE@@@YJe~fjjh@XUBXU\\c`\t3.47\nHk]D`FuS`HrRQJEIJfFZjjfZ@FCPfEP|Sm@\t3.47\nHmMH`FeXBLddRJRinFjjih@XUFEW\\QI@\t3.47\nHeV@pBBlzlflRYgea``b@Aa`]OLpa@\t3.44\nHid@`@bDfUvf`@h@FE@fEWDxP\t3.44\nsNy@BDiujj@XFZobQ@\t3.43\nsGY@LDeVj`FAbMxa`\t3.43\nKAxD@@c\\dvlts@FAIa\\\t3.42\njdyA`@@HbdsrnlkbexKT@E@A@@CBVJLxHug^xaTP\t3.4\njdyA@@IIULsZny`ncU@C@D@@@pMQgAJtZsoAcrA@\t3.4\nj`aAb@HLyzHrRQJFYIHf]USAAD@@pE``iJt[wHV@\t3.4\nj`qa@@D@R[fYU_Sk^Zh@@@@@FFdLxJRmFl{wHX@\t3.4\nj`qa@@C\\RjYU_~QmVj`ZBJ`@FBlDhpTeZl{bD^@\t3.4\nj`qA@@@ISKMjoiuoUT@@@@@C@tDLxJRmFl{wHT@\t3.4\nj`q@@@DjUggUhJw``hBB@@AaZBLDipTeFl{wHZ@\t3.4\njhiA@@@ILrsZkf|xKUP@@@@@LCXYpTeZMYw`|``\t3.4\njhi@`@@HRYyWVUEKpVh@J@@@@XRqQgAFl{wDJB\t3.4\nHg]L`LfDD@cIIBhhd]ikTC@P@LFqnW[yD`\t3.4\nJoCD@A|eTrj\x7Fr^wU@tDT@AaNESCJ{_DQp\t3.4\nHg}@@@yJeWe^nNzjhHB@A`lHUCJz]|c@\t3.4\nHcLDpITJsjsZqIfVYXXBHZ@A`P\\n|SA@\t3.4\nHknL`LaA@HrRPjIKY]VhDB@A`vMtj_Hh\t3.4\nHmv@@@RYvUeZj@@@F@pfMproD@`\t3.4\nHeV@@@RiU~njjj`AatIaTp|Si@\t3.4\nHef@@@rRJJIuUU@C@XSBinGdR\t3.4\nj`q@`@HRRjyeU\x7FSk^j`A@@@@FFhTYpRmFl{wHD@\t3.4\nsFt@ATiTvjhA`Xl^HT\t3.4\nHiFD@J@dfWZjj`A`HPfTwCrB@\t3.38\nsNq`@fdvkSHCCKGdh\t3.37\nHcnD`FWXBLddRaRuLLuUUKP@pjDpjxgB\t3.37\nHevH`Ff@cIIDbmS\\MUUM@C@hpjxb\\\t3.37\nHeTD@@QImeQej@@@FETwCODS@\t3.37\nHklL@H[lddRaaRtzjX@@@XMaCJ{qNL\t3.35\nHcNHpBtJpZqZqIfUeZXHJI@A`PDJ|sNd\t3.33\nJoBfPCZio@QddbTJRVuLLuUULsP@X]BXUCoDzp\t3.33\nHk]D`FeS`HrRQHiIZfxZjjfZ@FCQaUt|QM@\t3.33\nHg}D`FeS`HrRQHiIZTwCUUTsT@LFcBkixbV\t3.33\nsOt@@tjWkjj`FEbqoHp\t3.32\nJgC@PG@DISLroutgmt@P@D@@XRALLkiwrN@\t3.31\nJoc@PG@DISLrj}]Mz}@D@PP@AaHDprnv\x7FHL\t3.31\nHeV@@@RYyTYj`@@A`LIeMpsr@@\t3.31\nHeVH@NAIYWVyjjj@FEXULOLaI@\t3.31\nHifH@NAIYW[fjj`A`VES\\rDD\t3.31\nHieH@FxDigwJiej@FFXU\\qND\t3.31\nQO`BNZ`XL|`\t3.31\nsOt@@tjWkjj`FAbMxlp\t3.31\nsJX@@dsU@LMEnHD\t3.3\nHaD@@DjUZzjj`A`pPaUwDq`\t3.28\nHeVD`Ia@BLdabRwBl@D@CBbingd@\t3.26\nHmtD`NTHaIe]Vf`@jP@XTBXU\\PY@\t3.24\nHeTH@@RYe\\YZB@@AaVEWCqFd\t3.24\nHefD@JADeUeZjj@FCXS\\L|b@\t3.24\nKA|H@TBIJjmUPA`VDw\\RJ@\t3.24\nHo|L`H[gbLddRafRvNzjXHB@AavDLz[|aP\t3.24\nHg\\L`H[kbLddRaaRvgUS@A@@p{BFUv~Qp\t3.24\nsGX`JDdjmT@pVOEJ\t3.23\nsJXhMD@bOV`FDwHP\t3.23\njhi``@G\\DeTsJn~iqoUPMPTT@@pu`eFRUhuoAyAp\t3.22\nHkmDPLvD@HzHrRRqQ[JUV``J@AaVMp{qIL\t3.22\nHk^DBIAIeIgeYQe]Zjjjh@XBUMpki|SI@\t3.22\nHcnDBAAAeIVUexYUjjjj@F@xUMtkoD`P\t3.22\nHevHBFAiRYVVfxZjjj@F@pfEWCODA`\t3.22\nHcML@FFnwIIEEDZJuSMS@CCLX^HT`\t3.22\nHcLD@@QIeVuWVjjj`AaqUprn|SF@\t3.22\nHiV@B@BTjYnnXZjjh@X]BXUMwD@P\t3.22\nHmuL@DpFEIeY~nZifh@XXfSqNT\t3.22\nHeTD@@QImeQejjj@FCES\\L|QL@\t3.22\nHmtD@@QIeyVUZjjh@XMS\\LkqLH\t3.22\nHaE@@@yJe~fjjh@XUBES\\SN@\t3.22\nsJX@@eKU@LLH^IX\t3.22\nKA|P@DBSNuUT@X\\DHUMwHp\t3.2\nsNy@LDeVjj@XLKFod`\t3.2\nHeTD@@qI[eQej@@@FCYS\\L|RD@\t3.19\nHid@@DjU^nBBH@FEPaTwLsa@\t3.19\nHidH`NBHRYWZZ@B`@XTBXU\\`P\t3.18\nsGQ`@jdjmR@pfxhP\t3.18\nHid@`@dDfUvf`@h@FAIaUqND\t3.18\nHmuH@DHDf{eYUj`@@A`vMproDP`\t3.17\nHeVD@NADfVuFVh@@@XESCOHH\t3.17\nHaE@@@YJe~fjjh@XEBEWDs`\t3.14\nJoBb@BDByEEEMDdbSV{UTC@P@FGYpr]oqBt\t3.13\nHg}D@DHERYfywIcmjjA@`@XM`siwqBx\t3.13\nHcOLAHePPheNR[e]VyjZfd@XYWCqEt\t3.13\nHie@@@GIHddZzjjh@XMBXU]qFD\t3.13\nsGXhMD@cIHXmPCBGbE@\t3.13\nsOx@@eRimUT@pLQoEf\t3.13\nHevH`Ld@aJY[RZnjjid@XXDIsBxP\t3.13\nsOx@@drm\\@@@prkyab\t3.1\nHiVH`LD@cIEDhRZnjjfPAa`PgLJn@\t3.09\nHg}L`LGSl@cIEDhddXWTuUUTmH@phHPkx`r\t3.08\nHaF@@@RiUkjjj@FEPfEWD[`\t3.08\nHk^L`LWS@HRfVuxnijjjei@FAABGqBD\t3.07\nsNq`@fdskUHCBGbu@\t3.07\nHk]D`LES@HrQQJIKDfkjjjfY@FEABDOLz]@\t3.07\nHg}D`LES@HrQQJIKFDu]UUTsR@LJBDH^Ytv\t3.07\nHmMH`LEPBDieeRZnjjjY@FAABEsNFP\t3.07\nsOx@@drm\\@@@pqky`l\t3.07\nsJX@@eKU@LMEnHD\t3.07\nJoBaPFBivxABTrsjvWTuUUSLr@FCABDM|Rm@\t3.04\nHk]L`LE]L@aJYYwbzfjjjVd@XTDHQ|Ra@\t3.04\nHk]D`LF]@HRfV_xfkjjjYi@FEABDOLkc@\t3.04\nHcmD`LF]@HRfV_rZnjjifPAaPPaCsJyP\t3.04\nHeuH`LFPBDiegIjzjjfPA`PPa\\rnD\t3.04\nHaF@@@RiUkjjj@FCPfEW\\a`\t3.04\nsNt@A\\dbJjj@XFKGbk@\t3.04\nj`qa@@I@RYeU{TRg^jBBJjH@FE`XIQgAJtZso\\a@\t3.03\njdyP@@G^rRQRiQHjIBdFMT@ETuD@CCRLDhqVc^CD\t3.03\nj`q`@@@ITrjwoHsoUAP@@@@C@rLDhJRmFl{wH\\@\t3.03\nj`q@`@H\\RjyY]_Sk^j`ZBbH@FAhDhpTeZMYwnPp\t3.03\nj`qA@@HIU\\rj\x7FiuoUPUAQD@CBtLDhs`eZMYwnPd\t3.03\nj`aP`D@VdXDyIHiTimMAJj`BIj@@XRQ`eFBT{p\t3.03\nHcL@HHbDbLbMbLddjbRtkUP@P@LAaL[ag^PP\t3.03\nHg}L`FM]n@cIIDhTheSCMUUSSP@pZDpjGbZX\t3.03\nHg\\HpEbPRPrPrRRqIYICMT@ET@CBj[aOb[X\t3.03\nJoBb@CCWYIHhiSDdpv}TsP@P@FEKiv\x7FLpa@\t3.03\nHg~L`FWS`HrRQJEJ[TpsUUTsT@LJaLJnHM`\t3.03\nJoCD@B`eLjsj|ioUUAAD@AalXS\\Lz]orD@\t3.03\nHkoDPFF]N`aPcIIEJeeNFjfjU@FEIaUOHT\t3.03\nHk^L`FWS`HrRQJEJZfFZjjfZ@FEPfEWDGP\t3.03\nHk^@@@rQQIFIJftpHH@@@F@ieLLkoDHp\t3.03\nHo~H@EAIYeV^dvhHJJ@A`iTwCNg[|RD@\t3.03\nHknDB@dpgIIEJeMaVj@Hd@FGIaTpkrM@\t3.03\nHg}D@DHERYfywIcmjjA@`@XTLz]|sBx\t3.03\nHc^`@@pjYJYenkae]@bJhh@XDLkoHx\t3.03\nHmvHB@dIrRQRiPUj`B@@X\\fESBoHd\t3.03\nHae@PDp@bOAIfXj[fjj`AaPES]rH@\t3.03\nHcLH`ABPRYW[ZZ@BZ`@XLfETkrM@\t3.03\nHmtH`ABHRYWUih@Jh@FC@fET|Se@\t3.03\nHeV@B@B\\ddTjPsU@@@CCdpj[iy@`\t3.03\nHkl@@LddTjTRFZh@J`@X\\fESKoHL\t3.03\nHcN`@@pjYJYenk`Hbj@A`Prn|c`\t3.03\nHcL@@LddTjTPsU@AP@LNSBiewdR\t3.03\nHeTH@@Rf{TYj`@@A`qTwCODa@\t3.03\nHif@@@RiUzzjjh@X]BXUMwHD\t3.03\nsJPXHlPDQ}T@phbq@\t3.03\nHcnL`Le]@HrQQJEJEuMUURt`C@`aMxaT\t3.02\nHifD@FADfyWaZ@@@FAEWCrD@\t3.02\nHeT@@DjU_k``b`@X]BES]ODpP\t3.01\nsOx@@eR}]UT@plVMyF\t3.01\nsGP`ITjnjPFBqxh`\t3.01\nHie@@@{IHddZzjjh@XMBXUCrF@\t3\nHif@@@RYfVF@b@@XTUMp|`@\t3\nHmv@pIbPRPrPrRRqIPUj`B@@XESBoHd\t2.95\nHg^B@FACmInY]XYZZjid@XXw[sDjp\t2.92\nHknL@FACR[fWTYZZjiPAac]oLRe@\t2.92\nHmvH@JAIUYVUZjjh@X\\fDwCODaP\t2.92\nHmvD@FALbfbbQFVfji@FFMr|qJD\t2.92\nHeVH@JCHeEDcpluUH@prfgfPW@\t2.92\nHcND@JCTefWWaYjje@FFTr|rBd\t2.92\nHet@@DjYUX^dHbH`A`rDwCODr`\t2.92\nHeVH@IAJYW~F``H@FEIaMwDjP\t2.92\nHaF@@@RfYkjYj@FF@S\\sJx\t2.92\nsJPdE`DSpRYZ`FBAxi`\t2.92\nsOt`DPtfWMZi`GfVH\t2.92\nsJXhMD@bOV`FDOI`\t2.92\nHmvH@DAIVYdUZ@b@@XLc\\LkrH@\t2.91\nsNx@AddQeUPCBqXwdX\t2.91\nHaF@@@RfUi`HH@FAIeMqBx\t2.9\nsGX@@eLuT@phbqyJ\t2.89\nsNt@@|dbJjj@XVKF|c@\t2.88\nHaF@`N@HRYWih@H@FEIaUwH@\t2.88\nHid@@DjU^nBBH@FCPaTw\\SA@\t2.88\nqCh@BIWLAaEqS@\t2.84\nsGX@HeTuT@pLVOIP\t2.84\nHie@@@{IHddZzjjh@XUBXU\\Qa@\t2.83\nJoCbPCRzg@QddbQRRtuMpuUULuP@XMFEWSsDmp\t2.82\nHcLL`NWPbDfUuZf`@jX@FE@fEWDGP\t2.82\nHcNH@DAIgfYgVhBH@A`r\\LkoHp\t2.82\nKAxX@QSYIIiZih@pSBxd\\\t2.82\nsNq`IVeUuTpCAX|TX\t2.82\nsGQ@@drmT@pROEj\t2.82\nsOx@@eR}]UT@plQkyL\t2.82\nHidH`ABHRYWZZ@B`@XTBXU\\Sa@\t2.81\nHeTH`ABHRYWVf`@j@AaPIaUqNd\t2.81\nHif@@@Rge^Eh@@@XTUMp|RD@\t2.81\nsGX`BDdwMR@pbxcP\t2.81\nqCx@AYIf`OLE`\t2.81\nHaDH`NBHRYWih@H@FE@fEWHx\t2.81\nj`qAB@H^bDjn[U_UXsjh@@@`@AaheF\\EIVcN}rD@\t2.8\nHk]D`LFD@HrRPjJIEatujB`H@FEYWBoLgS@\t2.8\nHknHpEdJsjsZsHhheEEVF@bFh@FEArz_DpP\t2.8\nJoB@P@QBSJ{MkSV|@EP@@@FF`fETkiv\x7FHx\t2.8\nHcld@dsmBPzIZYyIfVuXUvjjYj@FBToDsP\t2.8\nHcmD`LFD@HrRPjIKLJzmPPD@C@lxYyeKh\t2.8\nHg^H`MDHaIe]UZf`@jj`@XRBXURiwrN@\t2.8\nHkmL@FFnOIIEEDlqvjYjf@FAXSCqIT\t2.8\nHg^H@AAJY[Ue[jhHJ@@XJaTwRng_H`\t2.8\nHeVD`La@BLdaTRPrm@@@CBlinGbAH\t2.8\nHcNH@DAInYWWVjB@@AarTwRn|SA@\t2.8\nHklH@@RYeg_SZjB@@A`NTwBngqDd\t2.8\nHmv@@@Rf~UeZj@@@FDaFDwCJ|a@\t2.8\nHeUH@DpDf^UFVjjh@X\\aTwCOHp\t2.8\nHeT@`@bDfUuih@J`@XLBXUCqNd\t2.8\nHeVH@DAImeQej@@@FCIS\\L|c@\t2.8\nHifD@AADfyWaZjj@FAES]sDpP\t2.8\nHaF@`FBHRYVkh@`@FF@e\\sFx\t2.8\nHaF@@@Rie[jjj@FEPfMwDJ`\t2.8\nsGYiKE`D[lddju@LH^R`\t2.8\nsNx@AdbbMUPCBqXwbC@\t2.8\nsJP`@TfVhAaEqX`\t2.79\nsFx@@eJfuU@LCEcqB`\t2.77\nHeWH`LJQ@HrQQEJYULtt@LLABxcR\t2.76\nHieH`LHPBLdTQRrjYi`Aa`HWD[`\t2.76\nsOy@FDiguie`FFqoDf\t2.76\nQMIDBKpRVAaGFP\t2.76\nHaE@@@yJeVnjjh@XUBXU\\Qn@\t2.75\nsGP`@dfUj`FBuyB\t2.74\nHo~LpBNwBlflvlRYfVVVVBBhfP@XTASm|PU@\t2.73\nHknDpBtpkAkEkDfYnVZXHJI`@XD@j_DJP\t2.73\nHeVH@FAIfUqfhH@@FCAAUp|sFd\t2.73\nHidH@@RUe^Ejjh@XMaTwCqHP\t2.73\nsKT@Adi\\Vj@XYX|d@\t2.73\nsKQ@@eKcRpCAX|TP\t2.72\nsFx@@eJfuU@LKEc^P@\t2.72\nHmth`LKed@cIEDUMLjfYf`Aa`HWDyP\t2.71\nHeWH`LKi@HrQQESYULsL@LLABxgB\t2.71\nHaG@`LK`BLdTQVUSLp@ppDKbMp\t2.71\nHaEH@FxDig|jfV`AafEWDS`\t2.71\nHmtH`ABPRYW[ih@Ih@FEIaUOHT\t2.71\nHif@@@rRIIFnjjj@FCPfEW\\Qa@\t2.71\nHeeH@DhDeUeZjj@FGIaMpsrH@\t2.71\nKAzP@IPIJjmUPAaRXS]qHh\t2.71\nsOtHLPDYHhckSM@LLD^Q`\t2.71\nsFtHLPDISNmLpCCAGdh\t2.71\nsKX@@dmcUPC@qX|`@\t2.71\nsJXhMD@cIHUhAaMq@`\t2.7\nHaFH@JAIYUnX@@@XEaMwH`\t2.69\nJoc@@@YHhhheDbNsYoP@PPD@@XJS\\Lkiv\x7FH@\t2.67\nHg^@pCbPRPrPrRRqIPjCMT@ET@CCjXYW[yA`\t2.67\nHo}D@HggrRQUSQIX{jjh@H@FBpfES\\iorM@\t2.67\nHkl@pHdDdLdLddlRTJFZh@J`@XMSCJgrM@\t2.67\nHmtH@@rQQJEJUjh@@@X\\aMproDb`\t2.67\nHmtH@@RY^UeVj@@@FGHS\\LkrL@\t2.67\nHedL@JZ\\ddTZUTuH@pILKnPH\t2.67\nHiDL@Hilddtjjfh@XYa]qHD\t2.67\nHaF@@@Ri_ijjf@FEPfEWHx\t2.67\nKA|@@Qddbljj`CAhSBinQp\t2.67\nHeTH@@RYe\\YjB@@AapXU\\L|RF@\t2.67\nHeULAHdDJISdfyW[fijT@XYWCrI@\t2.64\nHg|@@DjYU_~V]`@@B`@FDiaTwCN|P{@\t2.64\nsJX@@eMU@LBIcrH\t2.62\nJob@@BULj~jprmnDQE@@@@XJfDwCiv\x7FHh\t2.61\nHcMH@LDDeYWWajjjj@FDaBES]J|cP\t2.61\nHeU@@@yJeWZzjjj@FGPfESSrA@\t2.61\nHeT@@DjU^k``b`@X]BES\\ODrP\t2.61\nsOp@DjWkjj`FEbM_DL\t2.61\nHk\\d@dsmBPzIZY{HhheLdVE]jjfZh@XIR|SC@\t2.6\nHeV@pBBlzlflRYgea``b@A`PYt|Pa@\t2.6\nHeT@p@kNkIkDfY[XXBH`@XDF]ODhP\t2.6\nHmtD@@EJYUgehHJ@@X\\fTwBoDJP\t2.6\nsGX@@eMuT@pHfODj\t2.6\nHkLN@HiiWSrRSQHqRjZfX@XMFDrf\t2.59\nHmwLAHePPheNR[e][fijY@FFUp|aP\t2.58\nHeVH@LAI[eQej@@@FCIS\\L|RL@\t2.57\nsOtHBpDIRocRs@LDIsJl\t2.55\nJoB@H@RCrBSJzroSG\\@E@A@@F@iaUJz_Hx\t2.55\nsNq`@jdvsUPCCKWbK@\t2.55\nHedJ@@RaeImmfji`AaRYSSrB@\t2.54\nsGX@@eRuT@ptVxcP\t2.54\njhi@`@JLRjYeu]TzpZijjjj`@XFQ`gARUhugAyCp\t2.53\njhiA@@HIU\\rjkz}XMT@PA@@@LKPIQgARUhuoAyAp\t2.53\nJoBR@RXI`h]DmJ}dTTTTvQSSiuUTsUP@XEW[_H\\\t2.53\nj`qa@@J@Re]YyTeG^jjj`@`@FAhHpQgIZMYwnPD\t2.53\nj`q@`@@^RYWUe^cKN`@j@B@@FB`HpRbmFm{bNB@\t2.53\nj`qA@@HIU\\rj\x7FiuoUPA@@@@C@tBTYpRmFl{wHR@\t2.53\njhi@`@@HR[YfUWMypVf`@@@@@XJxJRmFl{p^HQ`\t2.53\njdya@@J@RVVyeU{A}Eiz@@@@@A`hTeZMYw`qyB@\t2.53\nj`q@`@@HR[fYU_Sk^Zh@@@@@FFlLxJRmFl{wHH@\t2.53\nj`qA@@@IJsLjoiuoLt@@@@@CASNBdkQkN}qDD@\t2.53\njhqa@@C@RYegV^tyjhHJJ@@XFqQgARUjsoAyA@\t2.53\nHg|d@dpSAPzIZU{Hhhhilbtz]UULuP@prnwdV\t2.53\nHg}DPLFD@HnHrRPjJIGLNfmPTAP@LFrnE[xdz\t2.53\nJoCd@DC_YIHhhdd\\mf}USUUT@FBxULLkiorK@\t2.53\nJoB`@@[ddTRRVJWKNuUUUUP@XZfES\\Lj]|RG@\t2.53\nJoC@A@ANRRIGIQIMuoUUL@D@AalIaTrz]orA@\t2.53\nj`q`@@@IJsLjoiuo\\t@@@@@CASNBdkQkN}rB@\t2.53\nHk]DPLFD@HNHrRPjIKYaWUjB@h@FEYpr_DiP\t2.53\nJoBB@EMddbbbQRrv[uSUUUP@XZfEprng[|a`\t2.53\nJoCFAF``{JSJroJng[UUUUT@FBeS\\Lj]oqLt\t2.53\nHk\\d@dpSAPzIZUyIfYoVgSjjifh@XYW[rC@\t2.53\nHg}@@@wIHhddlUrsmUUUUP@pULJfxYT~IE`\t2.53\nHo~@B@B\\ddTQJbRmzjj`@@A`\\IaTwKiv\x7FHD\t2.53\nHg|`@@pmrQQIPiYTrzAAUUD@LARfxYT~QX\t2.53\nHo|L@@RlbbTVbbQmvjhJ@@AaITLkiv\x7FDs`\t2.53\nHg^L`LaC@HrRPzIKJRju@AT@C@\\InF]OdV\t2.53\nHk\\`@@pmrQQIPiZfWPHJjb@FGIS\\LkrC@\t2.53\nHk]@@@wIHhddl^V]jjjjh@XRfES\\LkqHL\t2.53\nHg~H@DCHhhdeBepg[UU@A@@pdjxYWSodX\t2.53\nHkn@B@B\\dbarbRtzjh@@@XKBXUCJz_DA`\t2.53\nJoBD@@IS\\rjzv[uP@@@@@XKEMprng_DQp\t2.53\nHknL`LaC@HrRPzIKJUVh@J@AavDwCI|cP\t2.53\nHcl`@@pmrQQIPiTrzAAUQ@CCdinFUyF`\t2.53\nHg|H@JRjVWWd}njZjjh@XZfDwCJz]|b@\t2.53\nHg|H@@RYfUWd}nh@@@@@XKATwCJz_DBp\t2.53\nHcm@@@uJfUWyYvjjjj@FDiaTwCJ|RM@\t2.53\nHo~D@IADfUYUgWZjBB`@FDdwBng[|c@\t2.53\nHkmL@FFnOIIEEDRaVjYjV@FEXpsoHH\t2.53\nHeTL`HS@aLddlRPru@@@CC`SJ[ayD`\t2.53\nHcl@@DjYU_egZjjjh@XZBXUMprn|b@\t2.53\nHmvD`La@BLddNbReUj@@@FCXS\\L|aP\t2.53\nHcML@FFnwIIEEDZJuSMS@CCFF^Ia@\t2.53\nHcML@DpFEIeY}kfjYi`AaRYJ{rN@\t2.53\nHcLH@@RVYUYujBB@@X\\ULLkoLaN@\t2.53\nHmvD@EADfVUyUjjj`A`qTwCODqP\t2.53\nHmuL@DpFEIeY~nZifh@XXfKqNd\t2.53\nHeVH@BAJ]eQfjjj@FGQeMpsrD@\t2.53\nHeTH@@RYe\\YjB@@AapPUMp|SI@\t2.53\nHeV@@@RiUvnjjj`AatIaTw\\PY@\t2.53\nHifH@LAIVUxZjj`AatHUMp|`@\t2.53\nHie@@@qJYYhP`h@A`REP|Qn@\t2.53\nHieD@DHNRY[Rijih@XIc\\qBD\t2.53\nHaE@@@qJUwBZZh@XEBEWD[`\t2.53\nHaED@DHNRY[Jfjf@FDYsDI`\t2.53\nKAxX@@gILkmUHA`fEqJX\t2.53\nsOx@@eJm]UT@p\\VM_H@\t2.53\nsJX@@eSU@LDmqP`\t2.53\nsFq@@eLzts@LEkqH`\t2.52\nsJY@DDfvhAaEqX`\t2.52\nqCqPZHAD]XCB[d@\t2.52\nHidH@@RUe^Eh@@@XTUMp|RD@\t2.52\nHeTHPABHfHRYeUn`HJ@AaPXWSqJD\t2.51\nsOx@@eR}]UT@pLQoEf\t2.51\nHknHpBtJpZqZqIfUeffBBbX@FE@Pj_DrP\t2.5\nHifH@DAIVUxVjj`AarXUMp|b@\t2.49\nHifLAHABbTyInU[fijPA`e]rA@\t2.49\nHaFLAHABbTyInUnZfd@XIW\\a`\t2.49\nsFt@AdigUjhAaekrD\t2.46\nqCp@AIZ`LINXK@\t2.46\nHmv@pBBlFlVlRYfyZXHJH@FA@LkqBx\t2.45\nHif@`FBHRYVzz@H`@XDBTwLsa@\t2.45\nsOt@AdigkB@@FFU_Eb\t2.45\nHmtHPABHfHRYeW[hBBh@FEAa]ODiP\t2.45\nJoBbHFSB@DBDYIHUEDdekgZuAHTB@F@xwBng_H\\\t2.44\nHcN@@@rRHiQIKmUP@@@pfDpnFUwdT\t2.44\nsGYDJQDJHR[jf@XXQ\\e@\t2.44\nsGQLKHaQFbLddmU@LCEkrD\t2.44\nsJY@BDfZhAaaEqX`\t2.44\nsJP`@dfvhA`l^Q@\t2.43\nHg^HpBLJrZsZqIfYYye``jI`@XTASm|Se@\t2.41\nqCp@AIZ`LDmqB@\t2.41\nHaF@@@RVU[j@@@FEQaTwDC`\t2.41\nHaD@`@bDfUzZ@B@AaPIaUrN@\t2.41\nHedJ@HiagIIMEYUML@LBcFgdD\t2.39\nHid@@DjU^nBBH@FCPaTp|SN@\t2.39\nJoB`HBvDQLPdsJormuo@PUTi@AaHXWCNf\x7FHh\t2.37\nHo~D@M@\\dTRRbNTyZBBbj@A`ZYS\\Lkiv\x7FHH\t2.37\nHcN@@@rQQHqIKmUP@@@pTHSBxYW^QP\t2.37\nHo~B@D@UMInUeWzV`BJj@AaQUmorD@\t2.37\nHknL@D@UR[eY_iZ@Hj@A`QUi|QI@\t2.37\nHknL@D@]R[e[_iZ@Hj@A`QTi|QN@\t2.37\nHeTH@@RYe\\Yjjj`A`HIaUpsqHX\t2.37\nHmvD@D@TfyV~eh@b@AaaToLSi@\t2.37\nHmvD@DBTfyW^Eh@J@AaaToLQn@\t2.37\nHeU@@@qJYYzDHJH@FEHULODzP\t2.37\nHie@@@qJYWk``b@AaRES]qLD\t2.37\nHaE@@@qJYVnBB@@XDaUwDq`\t2.37\nsNx@@eLmUPCBbKGbk@\t2.37\nsNt`DPtfuZi@XYX|e@\t2.37\nsNt`DQTfuZZ@XQ|Rp\t2.37\nsKT@@Ti\\YZ@XR\\rq@\t2.37\nQMPBcdGcH\t2.37\nHmtD@@QIme\\YZ`@`@XTeMp|SE@\t2.36\nHiFD@FADf]Yjj`A`QUp|c@\t2.36\nKA|H@TBIJkMUPA`VDw\\b@\t2.36\nsGU@DPdvmT@prqyJ\t2.36\nsJY@LDeVdAaEqP`\t2.36\nHeTD@@YIfUqfhH@@FC@U\\L|rLX\t2.36\nHid@@DjU^nBBH@FCPfEP|Qn@\t2.35\nsJT@@TkVhA`enJD\t2.34\nHcML@FFnwIIEEDZJuSMS@C@lXYyA@\t2.33\nHmuL@DpFEIeY~nZifh@XDfRoHx\t2.33\nHaG@@@rdigjXHB@A`fMqDx\t2.33\nsO|@AjeL}XP@@pV_Db\t2.33\nJoCbPCRzg@QddbQRRtuMpuUULuP@X]FEWR\x7FDRp\t2.32\nsNq`@fdskUHCAX|e@\t2.32\nsJX@@eSU@LMEnP`\t2.32\nHmuH@DHDf{eYUj`@@AavDwCJ|a@\t2.3\nsGR@@mTf]jPFFBoEb\t2.3\nsGX@@eLuT@pHbwDZ\t2.3\nqCr@PIKLAy`l\t2.3\nsJX@@eMU@LLL^JH\t2.3\nHg\\B@@z]RVUeWXV@Hjh@FEXRg_H`\t2.29\nHcLL@@yTee[]aX@bh@FAXT{qHX\t2.29\nHeTD@@EIYWVy`@h@FFXT|rJX\t2.29\nsJ\\@@bdjt`LLD^JX\t2.29\nHg^DpBtpkAkEkDfYnVvfBBbZ@A`PBi|Pk@\t2.28\nHklDpEtJpZpzqIfYfVf@bah@FA@NgqNd\t2.28\nsGX@@eLuT@pLVoDB\t2.28\nHo~DpBNpkIkMkDfYeeYe``jIX@FE@Tz\x7FDyP\t2.28\nHeTD@@EJYU^f```@FCIc\\L|Pj@\t2.28\nsKR@AEdi\\Vf@^KD\t2.28\nsJU@DPdvu@LDmrD\t2.28\nHid@@DjUfaBB`@FCPfEP|Qn@\t2.28\nsJY@DDfvhAyeb\t2.28\nsKR@AEdi\\Vf@XS\\a@\t2.27\nqCp@AJZ`LEEqC@\t2.27\nHidL@@pTifvnjjj@FEPaTwLsa@\t2.26\nHaDD@@YJYZnjjh@XEFEWLQn@\t2.26\nsOx@@drm\\@@@pJM_DL\t2.25\nHaDD@@qJYnnjjh@XEBDwLrn@\t2.23\nsGX@AddQjhA`Xl^R`\t2.23\nHidH@@Rfuvz`@`@XXfUsBXP\t2.22\nHkmL`LNDD@cIIBhdmeuZ`PH@FCXwRi|b`\t2.22\nHeVH`IDHaIe]jZ@BX@FE@fEWHd\t2.22\nHmt@@DjU^ZxHHj@A`LIaTpsrE@\t2.22\nHeT@@DjU^k``b`@XCBXULL|c`\t2.22\nHieH@DDDfyWaZ@@@FAES]rD@\t2.22\nsOx@@eRimUT@plVMyF\t2.22\nHiDJ@@PnEInvZjX@XDaTOHp\t2.22\nHcNL`IaM@HrRFIKI\\Jp@T`@phj[ix`J\t2.22\nsNyA@qNRRJuU@LGEcV\t2.22\nsGP@DjVj`FAbMxa`\t2.22\nHcLL@@zTeeY]aX@bh@FAXR{qHD\t2.22\nHeTD@@yIYVvE`BH@FFXT|rFD\t2.22\nHeV@@@Rig\\YjB@@A`rEWCODq`\t2.22\nHeT@P@bIbDfYU[hBB`@XTFEt|Ra@\t2.21\nHeWH@DJPRY[TYZ`@@AaRTwCrB@\t2.21\nHmtD@@QIge\\YZ`@`@XUeMp|aP\t2.21\nsO|@AbeLmXD@@prkyB\t2.21\nsGX`LBdjlt@pexh`\t2.21\nqCr@PISRAaErX\t2.21\nqCqRZHAFzNlAxa`\t2.21\nsJY`hEiNyIej@^P`\t2.21\nHaEH@DxDeeVyjj`A`VES\\RN@\t2.21\nsGQ@HeUuT@ptuxdP\t2.21\nj`qAB@A@bDfUvVuhqwh@Jh@@@AahBLDisQkN}rB`\t2.19\njhiP`@DD@iIf[eW\\cK^Zj`XHh@AaK`iZMYw`|Q``\t2.19\nj`qP`@FBisIIEED[DdpSoUSMP@P@CAfMFl{wLDEH\t2.19\nj`aa`@H\\m{IIEUMDeBYuUU@DP@C@tDXIQgIJM[p\t2.19\nj`qA@@@ISKMjoiuoUT@@@@@CCTDLxJRmFl{bJ^@\t2.19\nj`aA@@OYIHhbeHhyVj``jJ@@XJQ`eFRUhwnP\\\t2.19\nHo\x7FD`Hu~fpcIIEULeDk^jjjZX@XSBXUMpwrC@\t2.19\nHg]LPLfDD@bxcIIBhhd]ikTC@P@LFqnW[yD`\t2.19\nHg_L`L[hR`BLdaTrbRQvmMUUP@pGFFUt{y@@\t2.19\nJoBP@@XVyHhdhTleSKhDEUUD@FDiS\\Lj]|ap\t2.19\nHg~@pNbPRPrPrRRqQISSiwU@@@@@LBZ]obJX\t2.19\nHg~@pJbPRPrPrRRqISICIwU@@@@@LB[SobBh\t2.19\nJoBDP@aDILkmrmM[p@U@@@@XZBXU\\ng[|`P\t2.19\nHk^DB@TpgIIEECTfGijjjih@XSBXUMpsrM@\t2.19\nJoB`PCFDPdrmvnuvg@DUUQ@A`hIe\\Lkm|ap\t2.19\nHg~DB@TpgIIEECThp}MUUUMP@pfDpj[agdV\t2.19\nHo\x7F@@JE|ddTnRbRmzjj`@@AalIaTpkiwrN@\t2.19\nJoBb@BDByEEEMDdbSV{UTC@P@FC\\Lg[|sBt\t2.19\nJoC@@@YIDdThdlUG]US@AP@FFpfESRnf\x7FHx\t2.19\nHknLPLaA@HNHrRPjIKY]VhDB@A`vMtj_Hh\t2.19\nHo|D`JyxcIIEFeDecnjZ`@`@XBfEJz[|a`\t2.19\nHg}H@HP\\ddRJTrUL]uUR@D@CBXpje]N~P`\t2.19\nHg|LA@kTfnRfYgW[iN`jBbP@XTPsi|Q[@\t2.19\nHg}HADH@zIRYeYwIcnjfB@`@X]prng_Hp\t2.19\nHg~@`IBHRYWVUicn@B`@@@XRBXUKiwrN@\t2.19\nHo|H@GrRQQEJQN[j``jH@FBiaTpkiorI@\t2.19\nHcNL`EaLBDrRRqIYCKT@E@@pDDrfxUyF`\t2.19\nJoCD@A|eTrj\x7Fr^wU@tDT@A`nESCJ{[|a@\t2.19\nHk]@`FLHaIe[mZ{S`BJjH@XRBYWCJ{rC@\t2.19\nHg}@`FLHaIe[m^ntx@bjh`AaHIe\\LkoHl\t2.19\nHo}L@EN]_IIEYEEBSnjjfZX@XMBXRgrA@\t2.19\nHk~@@JrRQQIFHUgYNjjjjh@XGBXUMprnf\t2.19\nHo}L@C^moIIEFeEEC^jZjYh@XLfDwCqC\\\t2.19\nHk]@@@YJUueRkSjj`@`@XKBXUCJz_DA`\t2.19\nHmNHB@TIrRQQPuazZjjj`AaLIaTwCOHT\t2.19\nHg]L@ItUoIIEXhiciuUSML@LFaLJ]yE@\t2.19\nHg}@@@UJfUW\x7FegZ`hHj@A`jXUMpsi|bp\t2.19\nHkm@@@kIHbdhdmNjj@@@FBpfDprngrJ@\t2.19\nHmvL`EaLBDrRRqIXYZ`@`@X\\BYS\\OHT\t2.19\nHko@@@q\\dTRbqThP`hj`@XBaTpsi|c`\t2.19\nHk]@@@UJfUW~V]jB`b`@XRfES\\L{rC@\t2.19\nHcND@M@\\dTRRbOKPPTP@LASJ[ae^HV`\t2.19\nHk^@@@Ri_YVftzjh@H@FBpfEPrngrF@\t2.19\nHcm@@@UJfUWyYvhJBH@FDiaTwCN|aP\t2.19\nHigDPLXXP@b`cIHUDnEZfd@XIe\\PN@\t2.19\nHev@B@B\\ddTTKCtuUUT@LAaLJfx^QH\t2.19\nHg\\H@@RYegUvvj```@FDyS\\Jz]|QI@\t2.19\nHknH@FAIfUWaVhHHh@FFaFES\\Lz_HT\t2.19\nHg\\H@NrRQRqZIRmTDAT@CCdpf{SyE`\t2.19\nHcLL@@RlbbTLRRzuUUT@LNinFUwbXP\t2.19\nHkmL@FFnOIIEEDlqvjYjf@FAXpsqBT\t2.19\nHcM@@@gIEDdTiS@PUT@C@TrfxUwdD\t2.19\nHcNH@McIIEXdmJuT@D@CCdpfxYyF`\t2.19\nHcND@E@TfUvzf`@jh@FD`fEWCN|aP\t2.19\nHklH@NrRQRqZJUj``J@AarXS]i|aP\t2.19\nHcO@@@rTie_ZnBBJh@F@hUMpkoHp\t2.19\nHcOH@DKPRYYUYujAB@@XLeMpsrE@\t2.19\nHmtH`ABHRYWUih@Jh@FC@fEW\\RU@\t2.19\nHeW@`FFZBLddTjWCUST`C@dpjyD`\t2.19\nHmtL@@Pdf{eYUjjj`AaqTwCJ|QL@\t2.19\nHmvD@AADfyW^Ejjj`AaQTwSsDqP\t2.19\nHcw@@Hx\\ddRLTeUSU@CBXSBxYWP\t2.19\nHmtD@@EIe]nf`@j`@XBBXU\\J|bP\t2.19\nKAxPPUD`dadataddeRjj`CBFyA@\t2.19\nHeVD@AADfyWxVjjh@XDUMwLSI@\t2.19\nHeVH@BAIUeQfjjj@F@`fTwCOH`\t2.19\nHeT@`@qDfUuih@J`@XLBXUCqNd\t2.19\nHeU@@@yJeWzzjjj@FGPfESCqNd\t2.19\nHmwH@DIPRYYWeVhD@@FEISCOHx\t2.19\nHmvH@DAIe[VUZh@@@X]eMproHP\t2.19\nHie@`FF`cIIEJnFjfd@XDfEWHx\t2.19\nHeVH@FAIfUqfhH@@FGAFEWCqFd\t2.19\nHeTD@@qI[eQejjj@FGXUMpsqHP\t2.19\nHmTL@Fy\\ddUfRjijPAaTIaCrI@\t2.19\nHiT`@@pjRfUj[a@`h`A`gCqDX\t2.19\nHid`@@pjRfUjXBB`@XIp|QF@\t2.19\nHaDH@@RYm[jjj@FC@aTw\\RL@\t2.19\nHaEH@LXDeYVzje`A`REW\\PH@\t2.19\nHieH@BxDivWajjV@FAYSCqHP\t2.19\nHiF@@HrRQVJjj`AatIaTw\\`P\t2.19\nHidH@HRjuVFjjh@XMBYSCqBx\t2.19\nHiDD@F{IIEYjjZ@FAPfErA@\t2.19\nHieD@FFnRjYfFjYh@^EaLH\t2.19\nHaED@DHNRY[Jfjf@GaIaL\t2.19\nKAxH@MvRRJrjf@LBaLKd\\\t2.19\nsGPdE`DSpRYVj@XXF|d@\t2.19\nsNq@JeTuUPCBkFod`\t2.19\nqCbHHAD|DeZ@pPwI@\t2.19\nsFxHB@aJUqiZ@XHSbU@\t2.19\nQMPARVAaWDP\t2.19\nsJX@@eSU@LEEqX`\t2.19\nsOq@@eLm]UT@ptMyef\t2.18\nsOpHADILkW@@@LBEcqU`\t2.18\nqC`P@HRfhCAC\\TP\t2.18\nsFx@@eRfuU@LCD[rX\t2.17\nj`q@`@HRRjyeU\x7FSk^j`B@@@@FFhTYpRmFl{wDDd\t2.17\nqCh@CIKTA`hnHX\t2.16\nsOt@AdiWqZZ`FAbMyF\t2.15\nsGX`LDdsmT@pVOIP\t2.15\nsJX`LDdru@LInP`\t2.15\nHieL@DpFEIeYkfjY`A`bYrN@\t2.15\nsGP`@dfui`FFVOIP\t2.15\nHeVD`La@BLddlRPrm@@@C@j[axfR\t2.15\nsNu@DpdjkUPC@hu|Tp\t2.14\nsGX@@eJuT@pLVODJ\t2.14\nHid@@DjU^nBBH@FGPfEWCrF@\t2.14\nHeT@pHdDdLdLddlRPsU@@@CCJ[nHL`\t2.14\nHkld`LKmePBLdTQTRbrjYffh@XDBD_Ht\t2.13\nHcLB@HZ]rRQJJqCMUUUP@pELJfxUyF`\t2.13\nHcOD`LKiT@cIEDUDeeTsMM@C@`Pmy@`\t2.13\nHmtL@HZ\\ddRblFZjjj@FGIaTwKrA@\t2.13\nHeWH`LKa@HrQQEIYULsT@LBABgdL\t2.13\nHaGDAHK`RISdfyVyjZPAaE\\Pf@\t2.13\nKA|@@@eRkUU@FCPfES\\c`\t2.13\nsGX@AddQjhA`Xm^P`\t2.13\nsJQhHl@bOV`FBq@\t2.13\nHif@@@RfU~F``@@XLfDwCq@h\t2.13\nQMPARZAaWDP\t2.13\nsJX@@eOU@LMEnHD\t2.13\nHieH@DxDee]nZjj@FAXUMqHD\t2.12\nsNxDLHaqBRjuU@LFHcWrX\t2.12\nsNz@@mVdssTpCCAWbs@\t2.12\nqCsAPKR]rSM@^Q@\t2.12\nsGQ@@drmJ@pRwDZ\t2.12\nqCp@AJZ`LHnXS@\t2.12\nHcnLbLe]@HwldTRaRa]SUUTmH@ppHSbEP\t2.11\nHk^LbLWS@HOdiem^KjZjjiZPAa`PgDHP\t2.11\nHcNL@ICNrQQSRjTMUUUP@pfDJfxUwdX\t2.11\nHmvD@ACdiewjZjjj`A`LXUMtkrD@\t2.11\nHif@@@RUe^Fh@@@X]BES\\OH@\t2.11\nqCh@BISLAyhl\t2.11\nHo~LpBtwBlFlVlrJJJZISUi``hfd@FA@JgqBl\t2.1\nHg\\LpEvpkAkCkDfYfYVf@bai@A`PCi|Si@\t2.1\nHg\\h@De]CHeDeMDcimU@PP@LFcFE[yA@\t2.1\nHcL`@@rirQQSRiUpPQU@@pkFx]xdj\t2.1\nHcLh@DxYCHdeEDcJmPDD@CBhqawdH\t2.1\nHeT`@@rirQQSRupPQP@LBqnGdR\t2.1\nsGY@BDeVj`FAbux`P\t2.1\nsNq@@dr{UPCCHwbs@\t2.1\nHaDH@@Rfu[j@@@FFIe\\pfx\t2.1\nQM`AIXFE\\Q@\t2.1\nsJQ@@dju@LEcqQ@\t2.1\nHcLD@@QIeVuWVj`@@AaqMprn|c@\t2.09\nHeTD@@EIe]jZ@Bh@FG@fEWCrI@\t2.09\nHeVH@DAImeQej@@@FCYS\\L|a@\t2.09\nsNx`LDdskUPCAX|UX\t2.09\nHg}LbFM]n@c^rRQJEJITpsUUTtt@LFaLJayA`\t2.09\nHk^LbFWS`HwlddRaRfiafjjif`AaTIaUrA@\t2.09\nQMPBchGfR\t2.09\nsGYALMJRmUPCBbHwdp\t2.08\nRF`EFCqH\t2.08\nHig@@@rdifznBBH@FFXw\\`P\t2.07\nHaG@@@rdifzxHH@AafMwHH\t2.07\nsJT@@TeZhAaaEqX`\t2.07\nHeTH`ABPRYWZf`@f@A`RXU\\bP\t2.07\nqCq@XIIf`LInQ@\t2.07\nHmtD@@QIn[VUZh@@@X\\fTwCOHT\t2.06\nHifH@DAInUxV`@@A`aUpd[a@\t2.06\nsJX`LDdru@LH^S@\t2.06\nHaF@`NBHRYWih@H@FE@fEWHx\t2.06\nHeL`@@JfRiUfnXVfjjjh@XMBYpr\t2.06\nHeU@@@{IHddUWUUUP@pZDpjGbMH\t2.06\nHeTH@@RfV\\YhH`@AaRDpsqJx\t2.05\nsJU@E`djt`LHnJD\t2.05\nsJPH@DISUPCCCGbb@\t2.05\nHifH@DAInUxV`@@Aaa\\OLRf@\t2.04\nHcLL@@PTfye]]ZhH@@F@yS\\LkoHP\t2.04\nHieH@FDDfUfnjjj@FGAATwCqDp\t2.04\nsKXHB@aJWFe`FBDxe`\t2.04\nHmvD@E@TfUvzZ@Bj@AapHU\\L|SE@\t2.03\nHaD@@DjWZXHB@AaTXS]rD@\t2.03\nsJX@@eMU@LMEnHD\t2.03\nHaDH@@RVU[f@@@FBXWBbfx\t2.03\nQMhHchFD|h\t2.02\nHg^``NeSlHaIe][Zf`@ii`@XRBXU]JgrK@\t2.02\nHkl``NeSBHRYWVvf`@ii@AaHIaUtj_Ht\t2.02\nHmw@`NePbDfUujZ@Bf@AapIaUt|aP\t2.02\nHeU@`NdHaIe]ZZ@Bd@FG@fEWSrA@\t2.02\nHidH@@RYm^Fh@@@XMaTwCq@`\t2.02\nsOpHADILkW@@@LJEc^Q`\t2.02\nsOx@@eJqh@P@pLQoHp\t2.01\nHg|@@LdbRbtJUB]aAP@@@CCXSBhYWSod\\\t2.01\nsGY@DDfUj`FDWMcP\t2.01\njdy``@J@BdlsOJkbezKMUPTBH@C@QJLUjsh|q@w`\t1.99\njhiP`@DD@iIf[eW\\cK^Zj`XHh@A`kGARtZsoAy@`\t1.99\njhi``@F@PdwLsvoIW`mMUPPB@@pEQgMFlxOLHex\t1.99\nj`qa@@J@RVYgm\\Tg^YjjB@P@F@bTXkQk^yb@g@\t1.99\nHg]HpBOPkAkEkLbbbfbT[SAAQM@@phAT{xaR\t1.99\nHg}D`LFD@HrRPjJIYLNvmPTDP@LFrnFUyfgX\t1.99\nHg~L`LaC@HrRPqQYI]NvmTBDP@LFXUt{yE@\t1.99\nj`a`P@D@ejrSKZrkbTu@DUT@@pXbcCN}rA@\t1.99\nHg~@@@rQQQUQIUqwSMP@P@LA@fzUv~YeF\t1.99\nHkmH@JXLdRRbbQtzjB`@@XCF\\Lki|a@\t1.99\nHclD@@kIEEKDeeKmUP@P@LNcNFUwbHP\t1.99\nHkmL@FFnOIIEEEBqvjYjf@FAXpsqBT\t1.99\nHknD@EADfVU}eVjjjh@X\\UMpsoDpp\t1.99\nHcLH`ABHRYWYzZ@Bj`@X\\BXURoD{P\t1.99\nHcLH@@rIQQQHkkTE@@@pxj[iW^YBB\t1.99\nHg^L@DB]RY[VWEVh@bh@FEISG_DIP\t1.99\nHg^L@DBSRY[VwEVh@bh@FEIS[_DHP\t1.99\nHcND@EADfVU~UZjjj@FCES\\L|SM@\t1.99\nHmtH`ABHRYWYih@Jh@FC@fET|Se@\t1.99\nHmLD@@qJY{WJeZj@B@A`rMproDb`\t1.99\nHmM@@@qJWYWBeVf@B@AaVMpssHQP\t1.99\nHkmH@DhDfUnYTvj@b@@X\\fCJz_Hh\t1.99\nHcML@DpFEIeY~kfjYj`A`RYJ|Sm@\t1.99\nHeTH`ABHRYWZf`@j@A`pIaUODxP\t1.99\nHmvH@AAJYUgehHJ@@XBfES]J|`P\t1.99\nHmvD@JADeUeYUjjj`AavDwCJ|b@\t1.99\nHmtH@@RYeUEZ```@F@aaTwBoDbP\t1.99\nHcND@DBTfVulUZ`BH@FAIS[sBEP\t1.99\nHcND@DATfVutYZ`@h@FAIS[sBxP\t1.99\nHeULBDpFGNRYV^nZif`AaB\\Si@\t1.99\nHeVH@FAIe]ZZjjj@FG@fEWCqHd\t1.99\nHmtH@@RVYWeVhH@@FCTwCJ|rDH\t1.99\nHeVD@J@TiWUJjjjh@XMBXS]rI@\t1.99\nHmtD@@QIee^UZjjh@XLULLkqLx\t1.99\nHifH@FAIe]ijjj`A`pIaUwD`P\t1.99\nHifD@J@TiWTjjjj@FCPfDw\\`P\t1.99\nHeTD@@QIemQejjj@FETwCODp`\t1.99\nHaFH@FAIe^fjjh@XTBXU\\RN@\t1.99\nHidD@@QInUxVjj`AaQTwCqDp\t1.99\nHaFH@FAIe^fjjh@XMBXU]r@@\t1.99\nHifH@NAJ[W[jjj`A`tXULOHP\t1.99\nHifH@NAIYW[fjj`AaVESCqHP\t1.99\nHiFH@LAIYVjjh@XBBXUMp|b@\t1.99\nHaF@@@Ri][jjj@FCPaTw\\c@\t1.99\nKA|P@TBTkuUT@XUFDw\\a@\t1.99\nKA|@@@eSKUU@FCPfDw\\b`\t1.99\nsNqdEbOBABUVmU@LMJ~P`\t1.99\nsOy@FDfUkjj`FEBqoEF\t1.99\nsNx@AdbbMUPCAbXu|b@\t1.99\nsNy@LDeVjj@XTXu|TP\t1.99\nsNq`IVeUuTpCCXod`\t1.99\nsGY@DDfyj`FBVxcP\t1.99\nHeUH@DDDf[WxVjjh@XDUMwDrP\t1.99\nKA|@`XDQtPdkOUU@FCABDw\\b`\t1.99\nHieH@DDDf[WaZjj@FAES]qLD\t1.99\nsKTHLPDIRxtl@p`xh`\t1.99\nqC`P@HRfhCBCfbp\t1.98\nsJU@DPdvu@OLlP\t1.98\nHieH`B[`BDiWWBiYj@FFA@|QJ@\t1.97\nHeTL@@pTifwkjjjh@X]BESCODs`\t1.97\nHidD@@[IEDiZzjjh@XMFESCqDx\t1.97\nsJP`@dfvdAaEqX`\t1.97\nsGY@DDfuj`FBQxmP\t1.96\nsGX@AddQjhAahcqZ`\t1.96\nsJQ@@dsU@LDCsQX\t1.96\nqCh@CIKTA``nJX\t1.95\nHiDB@@SaR[Ufjf@FAIeCrB@\t1.95\nJoc@HCADRDILkZvm]Jv|@QP@D@AaHIeSiv\x7FHX\t1.94\nsFt@AdigUjXA`d^KT\t1.94\nsFt@@Ti_FVhAaIsKT\t1.94\nHg~@@@RiU~Ukcnjj`@`@X[BXUMJz]|c`\t1.94\nHcND@IADfyW[aZ@Bh@FCES\\n|a@\t1.94\nHeTD@@QIgeQej@@@FEYS\\OHd\t1.94\nHklL@@kldTtTRQEZBHb`@XTcCN|`p\t1.94\nHmtD@@iJ[eWihHH`@XDaCODYP\t1.94\nHidH@@Rfuvz`@`@XXeMsLHP\t1.94\nHeUD@NdBRYgeajjj`A`HPeMpsqLH\t1.93\nsGX@@eSUT@pLVOIP\t1.93\nHg}LbLGSl@b~rQQJIIFEuMUUUKR@LBBDKbCH\t1.92\nJoBaQFBivxAE|eLlzmeuMUUTsL`AaPPaCqJt\t1.92\nHk]LbLE]L@`~RfV]xnijjjei@FAABEqJD\t1.92\nj`aA@@GYIHhbeHfiVj``jJ@@XJQ`eFBdkQnP|\t1.92\nsNqLKIARFdLddjjj@XP|c@\t1.92\nsJP@DiVhAaaCqK@\t1.92\nqCb@AIj`LHNZK@\t1.92\nsGQhHl@cIIBmPCBGdh\t1.91\nsJP`@dfvdA`enP`\t1.91\nsJU@DPdvt`OLlP\t1.9\nHmuD`LVD@HrRRqIXYV`@`@XES\\ODqP\t1.9\nHmtD@@yIYe^UZ``@@XBaTwCJ|b@\t1.9\nHieH@LDDeYWajjj@FGABES]rA@\t1.9\nHeUH@LDDeYWxZjjh@X\\DHUMwHd\t1.9\nqCp@AJZ`LINXK@\t1.9\nHk]H`AdpbDfUmUiev@Bfd`AaPIe[qND\t1.88\nHaED@dpFChdi[dfUjzjjPA`bUqLx\t1.88\nsGY@LDeUj`FFQoEL\t1.88\nsJ\\@@bdks@OEb\t1.88\nHk^@@@rQQIFIJftpHH@@@FDieLLki|``\t1.88\nHieDPLZD@HhHrREQKaVii@FAYWCr@@\t1.88\nHcLD@@QIn[WeVj@B@AarYS\\L|cP\t1.88\nHaDH@@RVU[fjj@FEXUMwDa@\t1.88\nsNx@AddTMUPCBqXwdX\t1.88\nsGX`LDdwMT@pQoH`\t1.88\nHaDH@@Rfu[j@@@FFIS\\sBx\t1.88\nsJX@@eSU@LINYX`\t1.88\nsGY`hEiNyIgZhAaCrT\t1.87\nHid@@DjU^nBBH@FGPaTwCrL@\t1.87\nQMB@HRZAyd`\t1.87\nHcND@MADfVU~UZ``H@FCESCN|c`\t1.86\nHidD@@EIe]ih@J@A`pIaTOHx\t1.86\nKA|PD@pSddbljj`CAhSBknPp\t1.86\nsNxA@IrRQVjhAaXlWrT\t1.86\nsNqhHl@cIICej`FBMyF\t1.86\nHeTD@@iJ[e^f```@FAHPsqFx\t1.86\nsGX@@eLuT@pHfoDb\t1.85\nHmtD@@gIELeDVz`@j@A`RYr|Pa@\t1.85\nsJQ@IGuPCAQ\\VH\t1.85\nsOt@AdieuZf`FBQxjp\t1.84\nHidH@@Rfufz`@`@XXf]sBXP\t1.84\nsJX@IGuPCCKGd`\t1.84\nqCr@XISTAaEqS@\t1.83\nsJP`@TfVhA`d^S@\t1.83\nHidH@@RYm^Fh@@@XLDES]qLD\t1.83\nHcLL@@kdinYTUhHbH@FEHpsoHT\t1.83\nqCb@AIZ`LDmqB@\t1.82\nsJY@LDeZhAa`mqP`\t1.82\nsJXHLHaIVj@XXQ\\VH\t1.81\nHid@`@qDfUvf`@h@FE@fEWDxP\t1.8\nHeTD@@EIe]jZ@Bh@FC@aUp|SI@\t1.8\nJoBD@@IKLrjzv[mP@@@@@XZeMprng[|b@\t1.8\nHidD@@QInUxV`@@AaB\\hj[a@\t1.8\nsNq`IVeUuTpCAQ|VH\t1.8\nHidL@@pTifvnjjj@FCPaTp|SN@\t1.8\nsJQ@@dsU@LMEnHD\t1.8\nqCp@BOTAyhl\t1.8\nHmu@pBXJpZqZqIf[oi`bH`@XX@ksBZP\t1.79\nHcND@DBdeVyU]Zj@@@FGHU\\LksHsP\t1.79\nHmvH@LAIUYVUZX@@@XLc\\LkqHH\t1.79\nHaF@B@B\\ddRK]UUP@pZDrf{dD\t1.79\nsOxA@IRi^njj@XNKFod@\t1.79\nsFx@@eJfuU@LCL[qA@\t1.79\nsGU@E`djmL@pROEJ\t1.79\nHo~DPJHPbDbDf{VyVwjZj@@@FBaBUpkiwqF\\\t1.79\nHkmL`LVDL@cIIKDedaeZ@Bd@FETwBoDsP\t1.79\nHmuL@ATBYIf[oijjjh@XRDIe\\LkqBX\t1.79\nHmvD@EADfVuqej@B@AaUMpkrB@\t1.79\nsGQ`@ZdrmT@prMyL\t1.79\nHaD@`@bDfYVz@`@AaPXS]rJ@\t1.78\nsJX@@eKU@LEEsCD\t1.78\nsFx@@eJf`@@LCEkrD\t1.77\nqCp@AJZ`LDEqS@\t1.77\nsJT@@TeZhAahmq@`\t1.77\njhiQ`@FBisvRRJJJKEYBLxMTsAPI@@LIDXJRmV\\D\t1.76\njhiQ@@DT@drsJsNku`mUAQED@@ptcCIJtZsoAyB`\t1.76\nj`q``@ERuddbRRbnRXk`jjjYjj@AaJBLDxHug\\ax\t1.76\nj`qP@@@BRfUWyWdg^hHH`@@@FA`HpRcNBtZsnHex\t1.76\njhya@@J@RfV]YwIQUoAjTH@@H@@XJYrRmFl{p^PP\t1.76\nj`a`@@@YIEChhhdW^jjhJ@@@XV`cAJBdkQkN}rC@\t1.76\nj`ia@@D@RYYYU\\cMNmyjh@@@@@FDd\\EIVcV]qFO@\t1.76\nj`q`@@@YIEDdcDef\\]zjjhHB@@XN`cAJLyIVcV]x\t1.76\njhiQ`@DD@hJSLwJnyFV|uU@pPp@C@VNBehuo\\PQp\t1.76\njhi@`@H^RjyV}}EjsjjjB@j@@XF`cANBdkQkAyA`\t1.76\nj`qP@@@\\RiUwYVgG^jjf`@`@FFhHpRcMFl{wDBd\t1.76\nj`qa@@D@RYfv]TgK^ZjhHH`@FBbTxJRmFm{bLN@\t1.76\nj`q@`@@TRfYW{TRg^hJB@@@@FFdXIpRmFl{wHL@\t1.76\njdy``@G\\DeTsJn~j\\[uTCTEEP@C@vBTYIVcV|FH\t1.76\nj`qP@@@LRe]UYTeG^@Bj`@@@FAhHpQgAZMYwnPd\t1.76\nj`qP@@@\\RiUwYVgG^jjj`@`@FFhHpRcMFl{wDBd\t1.76\nj`aq@@DV\\CHheEDcddkSTE@UP@C@rBTYpTeFl{p\t1.76\nj`q@`@HNRju^uu`cVjjh@J`@FFhHqQ`iJt[wHD@\t1.76\njhi@`@@HR[fuvUdkpVj@B@@@@XZQagARMYw`|aP\t1.76\njhi@`@@HRYyWVUEKpVh@Ijh`@XJqQgAFl{p^PT\t1.76\nj`qQ`@DXArRSLm\x7FJlD{sUSL@D@@pihug^ycEA@\t1.76\nj`aA`@HLyddbTLrRbMzjfBB`@AaKAARUhug\\ax\t1.76\nJoBfPCRio@QddbQRRtuMpuUULuP@X]FEWS_DQp\t1.76\nj`qA`@@HddwJzroAN|t@E@@@@LAHISQkN}qCN@\t1.76\nj`q@`@@HR[YWYTTg^Z`@`@@@FBdTYpVcV]{dL@\t1.76\nj`aQ@@DZ@dwLjsrkMTDEE@@LMHhs`iJMYwnPp\t1.76\nJoB`@@CddRRJTRU][uUU@A@@X[BXU\\ng[|Qa@\t1.76\nHg^BpLaCl@chcPcIIKEEeiJkPPDh@LJqnE^Qh\t1.76\njhq``@I@BeLljrrIUADQUT@@pT`eF\\tZso\\`D\t1.76\nj`aa@@C@RYegU{Ufj``b`@FFlTYpTeZl{wHH@\t1.76\nJoC@A@ANRQQIUQIDuoUUL@D@AalIeMrz]oq@D\t1.76\nHo}L`L^DL@cIIChdliiUZ`@j`@XSaMpsiwrG@\t1.76\nJoB`@DgddbbRRQpgmuPUAE@@XJfES\\J{_Dep\t1.76\nJob@@FRRJJEIKXRv[uP@@A@@FFyS\\Lkiv\x7FHH\t1.76\nHg\x7F@PBWPbAbLbbbRfaSR]pPLUQ@CBPqae]Np\t1.76\nJoBB@D[ddfbRbJwC[uUTBA@@X[BXWCJg[|a`\t1.76\nHg]L`EnDpHSIIKDeddLmP@UP@LEALinE]OdV\t1.76\njhqQ@@DT@drlsLjXKUAQEP@@ptc@iJtZsoA@\t1.76\nJoBp@@XUMNRJJIESIUunADT@@@AaqMJz]|ap\t1.76\nj`aa@@I@RfVUYXRjBHbj`@FBdDhsfcV]{dE@\t1.76\nJgCFAD`esJSOJrhrn{[UUUUT@F@eS\\Jz_DrP\t1.76\nHg}@@IOIIEDddbI{]TEPQ@@pULJfxUv~II`\t1.76\nJoBDPD@DIWLrjzv[mP@@@@@XZeMprng[|`@\t1.76\nJoCB@BsnRRIIJJyLoCUUSMU@A`LIa\\IwrG@\t1.76\nJoB`P@vDPdrnlktqw@AUUQ@A`hIaUJz[|c`\t1.76\nJoCd@bDpAtRdsLm{euoUTpPD@Aaprng[|a`\t1.76\nHcNDpLa@BJbFbLddLTJRzmT@@@LFinFUyF`\t1.76\nHmnDBJAZgIDeDdXPjzZjjjh@XCBXS\\L|Re@\t1.76\nHk~LBAACFTeYVUxYUSZjjjj@F@xUMtkoD`P\t1.76\nHo~B`LaK\\@cIICEBeeEuZh@I`@XUprk|Rf@\t1.76\nHctNPDpfFUCpkprRQRVSSUST@LFpfzUyF`\t1.76\nJoB`@@NeRk|kuqwUUP@T@AalIaTtkiorN@\t1.76\nJoB@P@QBSLjsnNv}HP@@@@FD`U\\Lj]|sM\\\t1.76\nJoB@P@QBRsLjnmf|t@@@@@FDaS\\Lki|rK\\\t1.76\nHo~L@C`YrRSIFYIRfjjfjj@FDpfTr{[|``\t1.76\nHknL`EaLBDrRRqIYHYZ`@j@AaHIeMpkoHL\t1.76\nHklDPNGX`xcIIDcEeHRjifj@FGPfDvgrE@\t1.76\nHg^L@MAirJIJHsIUt@QUT@CAPSFxYW[yA`\t1.76\nJoBd@BNBRsLjnmf{TEAQD@FBeS\\LkiwqH\\\t1.76\nJoB`@@ReRkkZuuoUUT@D@A`\\IaTwKiv\x7FHd\t1.76\nJoBd@BNBSKLjnmf{TEAQD@FFhUMprng_H\\\t1.76\nHg^B`LaCl@cIIBidliJkT@Dp@LJ[af~Ie@\t1.76\nHg^D`La@BLddLTVRVvmTDD@@pznFUt~Hu`\t1.76\nHg~@@@rRJIJqIMqwUUP@P@LMaLIne]N~QP\t1.76\nJoC`@@QrTvnljwV|uUP@P@FDxULng[|QA@\t1.76\nHg]L`LnDD@cIIBhhd]ikTC@P@LFqnW[yD`\t1.76\nHcoL`DphWP|LddtTSeMpmUUMP@phj[ayF`\t1.76\nJoBD@DIU\\k^x{[uUTDA@@X[BXWCJz]|Qg@\t1.76\nHg~H@KAIfYU^Svz`hJH`A`XXUMprng_H`\t1.76\nJoBf@BXCBdrl\x7FJuunuSL@D@AarXng[|c`\t1.76\nHg~D@Eg\\ddRRTUsKpuUTsU@CChSBxSyE`\t1.76\nHo~H`CDHaIe]gVih@Jjj@A`hIaUJ{[|c`\t1.76\nHk\\H@HrRSIFIJftzjh@H@FBpfTprngrB@\t1.76\nHg~H@DCHhhieBdWG[UU@A@@pDjFUt{xf\\\t1.76\nJoCD@B@dsMl{eunuUPPD@AaIUpriv\x7FDsP\t1.76\nJoBf@BXCBdrl\x7FJuunuSL@D@AaRz]osDs`\t1.76\nHcLDPNEXcXcIIDcDYBUULu@CChSBY]y@`\t1.76\nHg}@@@yJe}YVfNzjj@B@A`lHUMJz]|SN@\t1.76\nJoBD@@ISLk^x{[tE@@@@@XJfEpriv\x7FD[P\t1.76\nHk^@@@rQQIFIJftzjh@H@FFaBYSCJz_HH\t1.76\nHg|@@DjYV}~T{jjjjj@FEaBXS\\LkiwrJ@\t1.76\nHknD`La@BLddJbRRTujBB@@X]S\\LkoDpp\t1.76\nHk^@@@rRIHjIHjtzjh@H@FBpaTprngrL@\t1.76\nHg\x7F@@@adjuueZX{jjh@H@FDiaUJz]|RN@\t1.76\nHclLA@iTfnrQQQQEMt{PUAB@CBbFUwdL\t1.76\nHmTNPDpfFUCpkprRQRVRZjZ@FEXSRoHx\t1.76\nHg}@@@yJeWe^nNzjhHB@AaLIaTLz_DVp\t1.76\nHcL@p@bBBAbDfYVyi``hh@FGAaMpsqEt\t1.76\nHg|H@HRjymUV}NjB`hH@X[FTwCJz]|``\t1.76\nHg~H@DAIenUTfvvj``b@A`IMprnwsDpp\t1.76\nHg~@@@Ri_VUicnjj`@`@X[BES]Jz]|c@\t1.76\nHknB`LaML@cIIKDeeAeZ@BX@FETwB_Hp\t1.76\nHg]H@DlLbbTTRNRzuAPE@@peBinFUOdV\t1.76\nHknL@MAirJIJHsJn`BJj@AaHIc\\LkoHL\t1.76\nHg]L@FFnoIIEEDl\\NuSMTl@LFqaeSyA@\t1.76\nHg]H@FlDfYU^QVhHHj@AahQaTwCNgrK@\t1.76\nHg}@@@UJfUW\x7FegZ`hHj@AaJXS\\Lz_Djp\t1.76\nHmOD`DphTOCIIMEDz[aZjjZ@FEES\\OHd\t1.76\nHg|H@HRju^uXSnjj`@`@XKBYSCJz_DJp\t1.76\nJoB@@BULjo{rsl@@@U@@FBiaTwCNwqC\\\t1.76\nHk\\LA@kTfnRfYgUndzBhJD@FEDLz_HT\t1.76\nHk]@@@yJeWmZ{Sjj`@`@XSBXUCJ{qNL\t1.76\nHk^D@Eg\\ddRRTUY^FjjfZ`A`tIa\\OHL\t1.76\nHmt@p@bBBAbDfYVvfBBb@A`pXSCODyP\t1.76\nHg|H@@RYWVUicn@BZjH@XRfETkiwq@x\t1.76\nHk\\H@@RYfUVSWZ`hJB@FFaaTwCJz_H`\t1.76\nHmL@P@BNBDigy\\jUiffi@F@`fUproHH\t1.76\nHk^H@DAIenUr[SZjB@`@X\\S\\Jz_LSI@\t1.76\nHo}@@@UIYeV^d~hHJJ@A`iTwCNg[|a@\t1.76\nHmtHPAfHVHrRQHiRDjjVh@X]BXURoHX\t1.76\nHcNL@MAirJIJHsUt@QU@@pDDqnFUyF`\t1.76\nHk^@@@Re]YTjtzjh@H@FFpfESCJz_H@\t1.76\nHo}H@DhDfUefWWZhHb`@FDi`rng[|b`\t1.76\nHk]@@@UJfUW~V]jB`b`@XBfDwCN|Rc@\t1.76\nHeNHBJBiReYVDJnfjjjh@X]BXS\\ODjP\t1.76\nHg|L@@RdfV^Urh{Zj``H@FGEpsiwqLT\t1.76\nHkn@`ECDRYWUZf`@jj@AaHIaTLz_Hx\t1.76\nHkn@`EBHRYWUZf`@jj@AaHIaTLz_Hx\t1.76\nHk\\@@DjU^ukmLHDjh`AaLHUCJz_Ds`\t1.76\nHo~B@NAK]IenWVeVijjfPA`Q\\I|Qg@\t1.76\nHcMD`LvD@HrRRqIYCJt@E@@p{J[aWP\t1.76\nHknD@IBdifW^EZB`b`@XRfDwBngrJ@\t1.76\nHcm@@@UJfUWyYvhJBH@F@iaMpsoDiP\t1.76\nHg^H@EAIYeUz]Z``b`@XRUMpsiwqHP\t1.76\nHclL@@RlbbTLRQTnmU@A@@pkae]xfD\t1.76\nHk\\L@@RdfV^uJmMjj@B@A`qCJz_Ds`\t1.76\nHk\\H@@RfYU\\]Tz@@@@@FGXWCJ{sJXp\t1.76\nHknH@DCHheEDceujB`H@F@hUMproHL\t1.76\nHknD@E@TfUvyih@Jj`@XJBXU\\LkoHL\t1.76\nHeWDbLihP@cNrREQICJt@@@LLxYy@@\t1.76\nHmt@P@bABDfUuZZ@Bj@AapIaUp|RU@\t1.76\nHmuD`LVD@HrRRqIXYV`@`@XUeMp|aP\t1.76\nHknH@FAIfYWyuhJBH@FDxU\\Lki|a`\t1.76\nHcnD@EgTjeUeexZjjYh@XMBXWCrE@\t1.76\nHo~H@FAIfYV}dv`hJJ@AanEWCJz]n\t1.76\nHcnH@DAIenuIeujh@H@FCEprn|qLX\t1.76\nHmtL@@Z\\bbRbLkh@bh@FG@fMpsrE@\t1.76\nHcNH@DCHheEDbnmPT@@C@TJfxYWdZ\t1.76\nHeWD`LihP@cIHUDdLkP@@@psNGbAH\t1.76\nHkmL@DpFEIeY}ZyjfZj@FEIbz_DzP\t1.76\nHcMH@DDDfyWWaZjjj@FGHUMtkqLt\t1.76\nHmt@`@bDfUujZ@Bj@A`HIaUtkrA@\t1.76\nHcvL@Hz]rRQQMSUUTt@LFSBimyB`\t1.76\nHknD@FADfy^Utvix@@@XTLki|QJ@\t1.76\nHcND@NALbbTtRLjuMUR@LBKawbMH\t1.76\nHg^L@NAKRY[eueVijje@FAEpgqFt\t1.76\nHcN@@@Re]eUvjh@@@XRDXWCJ{qDh\t1.76\nHid@PNbAbLddUTaJjZ`A`tXU\\OHP\t1.76\nHcNH@AAJYU^zZBBJ@A`NES]J{rD@\t1.76\nHcN@@HrRQJqIKmUP@@@pVDpjxYWP\t1.76\nHiWH`DphCpRjyj[aZjj`A`UMp|``\t1.76\nHmv@@@rRHjIJUjh@@@X]BXwCODIP\t1.76\nHcNH@IaJkU~XZjjj`AaLIeMpkoHH\t1.76\nHknH@EAJ[WUfz`@jh@F@iaTtz_HD\t1.76\nHmt@@LddTQVeZhH@@F@iaTwCOHT\t1.76\nHmuH@DDDfyW^Ejjj`A`rES]ODqP\t1.76\nHaeH`Dr@|DjybinZjj@FAES]r@@\t1.76\nHieH@DhDeVWaZjj@FCIaMp|RJ@\t1.76\nHmtH@@RYWUih@Jh@FG@fETkqND\t1.76\nHeUH@DDDfyWxVjjh@XTaTw\\SI@\t1.76\nHif@`ABHRYWZZ@B`@XLBXU]rA@\t1.76\nHid@`@bDeYWaf@@@FE@UMwLaA@\t1.76\nHeTD@@QImYQejjj@FGXUMpsrD@\t1.76\nHcNH@JAIY^UWVg`@@AaWCJ{qHH\t1.76\nHmtD@@QIevVUZjjh@X]eMproHH\t1.76\nHeVD@AADfyWxVjjh@XTUMt|QL@\t1.76\nHmt@@DjUgjDHJJ@A`LHULLkqLx\t1.76\nHmvD@D@dfueYUj`@@A`vMproHP\t1.76\nHmv@@HrRSFIJUjh@@@XSBXS\\Lj\t1.76\nHmtD@@QIn[VUZh@@@XLfMpsqJT\t1.76\nHie@@@EJe}ijjj`AaTHU]sLXP\t1.76\nHaE@@@{IHhbSUUT@LJaBinIg@\t1.76\nHif@@@rQQIFf@`h@FEIeMwDHP\t1.76\nHieH@DDDfyWaZjj@FEHUMwDpP\t1.76\nHefD@Hz\\ddTSUUUH@piLJfy@`\t1.76\nHaF@B@B\\ddRK]UUP@pZDpj[d\\\t1.76\nHeVH@DAIemQej@@@FAIPssB[`\t1.76\nHieH@JDDiWTjjjj@FCPfDw\\`P\t1.76\nHaf@@@RYfJfzjjh@X]BXUMwH@\t1.76\nHaDH`F@HRf^rjYj@FE@fTwDK`\t1.76\nHaE@@@yJUtjjjh@XUBXS\\pJx\t1.76\nsNqlHlOBqCbLddlZj@XEZodH\t1.76\nHeV@@@RUYTYy`@@AaUMpsqDp\t1.76\nHeTD@@iJ[e^f```@FEHS]OHD\t1.76\nsGPBAbJPLaYAInjhA`aNS@\t1.76\nKA|P@QrUSMUT@XTfES\\c`\t1.76\nKA|P@XBRlkUT@XTaTw\\b@\t1.76\nsNxA@IrRJFjhAaXl[qA`\t1.76\nsFuHEhOAJnMZj@XHwbF@\t1.76\nsNy@BDeVjj@XVKU|`@\t1.76\nsFq@@drfuU@LBl[qB@\t1.76\nsFq@@drfuU@LKEc^P@\t1.76\nsGPhH`DYIHUj@XKWdH\t1.76\nsFt@@TiTt@@A`i^IX\t1.76\nsFt@ADiTt@@A`c^IX\t1.76\nsJY@LDejhAahcqC@\t1.76\nsGY@DDeYj`FAVMyH\t1.76\nsGR@@cTe[f`GbM@\t1.76\nHeTD@@qI[eQej@@@FGIeMpsrH@\t1.76\nHifH@AAJ[W[j@B@A`VES\\QA@\t1.76\nQMhHRYAxb\t1.76\nsJY@BDizhA`inID\t1.76\nHeTD@@EJ[Uvz`@h@FAIgSqBh\t1.75\nHidH@@RYm^Fh@@@XMATwCq@p\t1.75\nsNp`@dfVZj@XJobq@\t1.75\nHkmHpBXpkIkMkDfYemyXHbbP@XDASoLXU@\t1.74\nHidL@@sdifzajjj@FCPaTw\\SA@\t1.74\nHaDD@@yJY^fjjh@XUFEW\\QF@\t1.74\nHaDD@@YJYZnjjh@XUFES\\QN@\t1.74\nsJQ@@dkU@LLL^JH\t1.74\nqCp@AJZ`LDmqB@\t1.74\nHeTH@@ReyTYj`@@AaTTwCsDrP\t1.74\nHaF@@@RYe[hB@@FAXS]q@h\t1.73\nHaDH@@Rfu[j@@@FFIg\\pjX\t1.73\nHg\x7FD@L[`QIeyUTYNvjZ`@@A`vEr{_HL\t1.72\nHcm@`FtHaIe[UkiV@@@`@FC@fTJ|cP\t1.72\nHcoH@DJ`RUeUVy]ZZ`@@AaRTL{qHT\t1.72\nHk^H@IAJ[VuVzUh@JZH@XTfDq|P]@\t1.72\nHk^H@IAJ[VvvzUh@JZH@XTfDq|R]@\t1.72\nHg~H@IAJ[VvUneZ@Bfh`AaRXSWqML\t1.72\nHew@@@pldTTJVTLmP@P@LBqngbDH\t1.72\nHcnH@IAJ[Vw[iV`@ib@FEIaMoDFP\t1.72\nHmN@@@rRJJYDfeZ`XB@A`U\\L|sFT\t1.72\nHev@@@rQQQHyPsPLA@@pHfx^XER\t1.72\nHmN@@@RfYWraV`XH`@XDS\\OLBU@\t1.72\nHcn@@@RifurZ]jA`b@A`U\\L|sEt\t1.72\nHaDH`NBDRYWih@H@FAIa]q@h\t1.72\nsOt@@tigujj`FEbqoDF\t1.72\nHid@P@bAbDfY]n`HH@FEAa\\OHh\t1.72\nHeVH@LAI[eQej@@@FGIeMpsrH@\t1.72\nHaDH@@RVU[jjj@FG@fES]rH@\t1.72\nHeTH@@ReyTYj`@@A`tTwCODS@\t1.72\nQM`BN`^YH\t1.72\nHmNH@NAJ[VUnFZjjj`A`LXULLkrD@\t1.71\nHevH@FAIeYZ[ajjjh@XCBXU\\L|`@\t1.71\nHeTB@@pYRf[^njjj`AatHUMt|SA@\t1.71\nHidL@@X\\dTRekjjj`A`tXU\\ODQ`\t1.71\nHeVD@IADfyWxV`@`@XDUMwDRP\t1.71\nHieD@DDNRYWbijih@XDfEWHD\t1.71\nsGPYHlPDGlddJu@LIP\t1.71\nsGXA@IRjZj@XFKWdH\t1.71\nsJY@LDeZhA`Pl^R@\t1.71\nsGU@DPdsmR@pbxmP\t1.7\nJoC@@@ITskNx{[uA@@@@@XZaUprng[|c@\t1.7\nHg~@@@RfUYwySn``@@@@XZfDwCJz]|`@\t1.7\nHcLHpEbPRPrPrRRqIYCMT@E@@pJfx^Qh\t1.7\nHmtHpEbPRPrPrRRqIXYj`@`@XES\\OHT\t1.7\nHeVD`La@BLddlRPrm@@@CBlinGdR\t1.7\nsNplJyDJHtQddeeUPCAqXu`\t1.7\nqCr@XIJrAyhl\t1.7\nqCa@CIJtA`enR@\t1.7\nHaE@@@aJyUnh@@@XUaTw\\PH@\t1.7\nJoBBPDH@QddabbRRrv[kP@@@@@XCS\\Lki|Rw@\t1.7\nsNx`BDdw[UPCCKObM@\t1.69\nJob@@FRQQIIEI\\Lk[dDaP@@@FBiaMpz]orJ@\t1.68\nHcMB@NTLgTify^ajjjj@FBpaTwCJ{rL@\t1.68\nHmv@pBBlFlVlRYeYZXHJH@FAApksLJP\t1.68\nHmuL@AdFUJYY^njjjh@XSFES\\LkrD@\t1.68\nHifD@ACLdTTqkjjj`A`tHS\\ODr`\t1.68\nHeV@@@rRHqICMT@@@LNaJ[agdX\t1.68\nHmvD@DATf^Uqej@B@A`rYS\\OHT\t1.68\nHeTH@@RfUWihHH@AarXS\\L|b`\t1.68\nHie@@@EJeWkjjj`A`tIaTwDxP\t1.68\nHaFH@NCIEDcSUUT@LJ`j[nHf@\t1.68\nHeVH@DAIemQej@@@FFIS\\HnFP\t1.68\nHaG@@@qdig|ijj`A`RXU\\Qn@\t1.68\nsNx@@eLmUPCBbXwbS@\t1.68\nsNx@@eRmUPCBqFodp\t1.68\nsGQHLHaI[ihA`aNHt\t1.68\nsJX@@dkS@LMD^HX\t1.68\nsJX@@eSU@LDcqS@\t1.68\nqCp@AJv`LHnJX\t1.68\nqCp@AJZ`LDMqQ@\t1.68\nsGX@@eJuT@pHfODj\t1.67\nHaF@@@RVU[f@@@FEXUMwDB@\t1.67\nqCb@AIj`LHnXS@\t1.67\nsGY@DDf]j`FDWMcP\t1.67\nHmuL@DpFEIeY~nZifh@XHf\\siT\t1.66\nQMPBchFD\\Y@\t1.66\nHaD@`@dDfUzZ@B@A`RXU\\c`\t1.66\nqCp@BOTAaIqK@\t1.66\nHidH`ABPRYWZZ@BP@XDfEWHx\t1.65\nqCpB@ReMPFFbwH@\t1.65\nsJP@DiZhAaaMqH`\t1.65\nRFDEYFCBNT\t1.65\nsJY@DDfvhA`l^Q@\t1.64\nQMbDBDf`XUqD\t1.64\nsGU@EPdjmT@prqxiP\t1.64\nHeVH@IAIe]ZZ@Bh@FC@fEW\\PY@\t1.64\nHif@@@rRJEKaj@@@FEES\\ODS@\t1.64\nsOpH@DILkW@@@LBcWqC@\t1.64\nqCp@AIj`LEEqC@\t1.64\nHifL@ABnReYrZjjh@XMaTwCqHP\t1.63\nHmtD@@yIYe^UZ`P@@XLeLLkqHH\t1.63\nJoCFP`s[aH]L|drml\x7FTr{@AUTp`A`RUk|SA@\t1.62\nHcnHaAdICigdfUmffWX@JjD@XXe[sLEP\t1.62\nHeUH@DhDeVYzVjjh@XLfDwSqHD\t1.62\nHeVD@DAdfygFV``@@XYSSsDxP\t1.62\nHifH@BAIfUXXHH@AaPXUMqND\t1.62\nHieH@JXDefWaXB@@FFEp|RF@\t1.62\nHaF@@@Rig[jjj@FCPfDw\\b`\t1.62\nHaE@@@qJYZfZjh@XDeMwHH\t1.62\nsF|HLZ@aJYuif@XP\\RH\t1.62\nsOt@AdiVMZj`FAQkyH\t1.62\nsGY@LDenj`FEDQoI`\t1.62\nsGX@@eJuT@phfMyD\t1.62\nqCx@AYIV`LDEqS@\t1.62\nHeVD@IADfyWxV`@`@XTUMt|a@\t1.62\nsFt@@TiTt@@AaikrH\t1.62\nqCr@HIJtA`enR@\t1.62\nsGQ`@jdvmT@pruyB\t1.62\nsOx@@eSI]UT@pLQ_Ej\t1.62\nsGY@BDfZj`FADQxmP\t1.62\nsJY@BDfZhAaaCqK@\t1.62\nsGQ@@dkMT@pVOMEP\t1.62\nsJQ@@drt`LHnKD\t1.62\nj`qP@@@\\RiUuyVgG^jjf`@`@FAhHpRcAZMYwnPd\t1.61\nJoB`@@\\eRk{JuuoUUL@D@A`\\IaTpkiv\x7FHx\t1.61\nHmvDPLa@BEbLddlRVFUh@H@FETwBoHp\t1.61\nHcLB`HQ]@HrRFIKJ\\Jp@S@@phj[my@@\t1.61\nHmuDbLVD@HslddlRVFUh@H@FETwBoHp\t1.61\nHg\\D@@QIme]XYZ`@j`@XReMpkiwrL@\t1.61\nHcL@@LdbRVbM\\DDUP@LIaLJfF]yB`\t1.61\nHeVB@FCAeJYyzzjjj@FGPUMpsqDp\t1.61\nHcLH@ErRQRiYCMT@E@@pYLinGbEh\t1.61\nHie@B@xIrRQHynjjj@FCPfES\\`P\t1.61\nHeTL`HS@BLddlRPrm@@@CAlinFP\t1.61\nHaE@B@xIrRQHmuUU@CAhSBinQp\t1.61\nHmtH@@Rfuv[j@Bh@FCXUMJ|QA@\t1.61\nHid@`@bDfUvf`@h@FC@fEP|c`\t1.61\nsNyDJQDJHR[nihA`QE^Q`\t1.61\nsNx@@dlwUPCCZobQ@\t1.61\nsNp@Di]jj@XLSFodP\t1.61\nsGXA@IRjZj@XYZ|TH\t1.61\nsGP@Divj`FABMxi`\t1.61\nsJT@@TfZhAahmq@`\t1.61\nHmtL@@JTfYwfzB@j@AapXU\\L|aP\t1.61\nHedF@@PfFTf{nZjf@FCIaTt`\t1.61\nsJX@@eSU@LECqK@\t1.61\nj`q``@D@]dTTtTRVJXKUfjA`bh@AaSdeZ}qFC@\t1.6\njhia`@D@]yIYfU}VgEFZ`XHih@A`q`iJtGbHV@\t1.6\nJoCB@@a^QIQQQHkLNfuHTAT@A`r]Jf\x7FD`P\t1.6\nJoCB@BA^QJJJIKEUrfu@pQT@AaSCJoqHt\t1.6\nJoCB@BA^QQSQQHyLNfuPLAT@AaWRnoqLD\t1.6\nHg~D@D@|bTTTRNU\\nmPLAT@CBfFUobQp\t1.6\nJoCB@B@zRsLk\x7FWJ[TCADp@FELLkoL`{@\t1.6\nHk^H@DCHhihhdVGSZhF@`@XEtkoLpS@\t1.6\nHk^H@ACHdhhhdVGSZdJ@`@XTgRi|rAt\t1.6\nHcnH@DCHeEEDcWKkTC@P@LBXYWfQv`\t1.6\nHmtHPABHVHRYeY[hBBh@FCAaUr|PY@\t1.6\nHcLHPABHVHRYeYvz@`j`@XLFEWKqIt\t1.6\nHk^H@DAIYfUzySZ`XH`@XDproLcS@\t1.6\nHg~H@DAIfye]avvjA`b@A`WRn|sCl\t1.6\nHeWDAHHPRISdfygXVijd@XIW\\Qi@\t1.6\nHigDAHK`RISdfyUnZfi@FBTOHH\t1.6\nHigDAHHPRISdfyeaZfi@FDUqFx\t1.6\nsNy@LDeUjj@XTKF|TX\t1.6\nsOt@@Ti]qej`FBeyef\t1.6\nsF|@AbeLzmU@LLm^P`\t1.6\nsGY@DDeUj`FFQoEL\t1.6\nHif@@@RUe^Gh@@@XTUMp|a@\t1.6\nHcND@DCTeUe^UZh@H@FGHS\\L{qHp\t1.6\nsOy@DDeekZj`FFu_EB\t1.6\nsJP`@dfzhA`inXH`\t1.6\nHmuH@LDDeYW^Fjjj`A`HPaTwSrE@\t1.59\nsJU@DPdru@LHnKD\t1.59\nsJY@HDizXAyeb\t1.59\nqCpPXQBRu@XXQ\\f@\t1.59\nsJQ@@dsU@LLL^JH\t1.59\nsJX@@eSU@LLl^R@\t1.59\nqCb@AIV`LDmrP\t1.59\nqCaPQ@Hck@XS\\`@\t1.59\nsGP`@dfyj`FBMxe`\t1.59\nQM`AIhFE\\Q@\t1.59\nsOx@@eLm]UT@pXbu_HP\t1.58\nHcND@LCTeme^UZh@H@FGHS\\L{qHp\t1.58\nHaDH@@Rfu[j@@@FFYS\\qBx\t1.58\nHg\x7FD`LFyt@aJYY\x7FlfkjjjYjPA`pPaC_Lkc@\t1.57\nHmN@`FBHRYVukiV@@@@@XLBYPkrI@\t1.57\nHeVL@ICARf[^njjj`A`LHUMpsrL@\t1.57\nHifD@AAldTRekjjj`AatXUMp|a@\t1.57\nHid@P@qFqDfUfn`BH@FA@fMqND\t1.57\nHiTH@@RfU|kahDB@A`QMp|QJ@\t1.57\nHieD@DDFR[fVEijX@XQwDR`\t1.57\nHaFD@NBdefZyfi`AaC\\RB@\t1.57\nsFy@HDi[FehAaKqX`\t1.57\nsJT@AdizhAa`mqP`\t1.57\nsGQ@@djmT@pvMxh`\t1.57\nsF|@AjeKxmM@LEMqJ`\t1.57\nsGT@A\\dbMU@LCEcrT\t1.57\nsJP@DizhAa`cqS@\t1.57\nHifD@D@TefUnZjf@FAXS]qHh\t1.57\nsNpP@btf{Zj@XEXodh\t1.57\nsKT@Adi\\Vf@XS\\tQ@\t1.57\nsFx@@eRfuU@LMC^IX\t1.57\nqCp@AIZ`LEEqC@\t1.57\nsGQ@@dkUT@plVMy@\t1.56\nHiDJ@@PnEInvZjX@XDfDOHh\t1.56\nHifH@DAIVUxV`@@AaQTwCqHP\t1.56\nsJQ@@eMU@LEMqH`\t1.56\nHidL@@p\\dTTqkjjj`A`tHS\\ODr`\t1.55\nHidD@@EIe]ih@J@AaPHUCqLx\t1.55\nsBP@H|UT@ppbyL\t1.55\nsGXHLHaIVjhAaaEqF`\t1.54\nHiDJ@@PfEIn{Zjh@XLfESCrN@\t1.54\nKAxH@TvRRJNjZ@LLSByG@\t1.54\nHeTL@@JTfYw[hHB`@XLFEWSrA@\t1.53\nHeVH@DAIgeQej@@@FCIeMp|bP\t1.53\nqCj@KAIV`LHnJX\t1.53\nsOy@JDiWMjj`FAbqyF\t1.53\nj`qPB@AVAHILkkJ{QakP@UUUD@CBRLDiIVcNxcg`\t1.52\nJoB`P@vD`drnlktqw@AUUQ@A`JXURngqN\\\t1.52\nHg}@`AlIAIe]YVfNx@Jjh`A`JXURngqNl\t1.52\nsNxA@IRfZjhA`xlZ~P@\t1.52\nsGY@DDf]j`FBMxe`\t1.52\nHidH@@Rfuvz`@`@XYeMsDHP\t1.52\nHifH@AAIYW[f@B@AaVESCrH@\t1.52\nHidH@@RfU~F``@@XLfDwCrJ@\t1.52\nQMJHBHvAaOH@\t1.52\nQMB@HRZAaOD`\t1.52\nsGY@DDeej`FBexlP\t1.51\nsJY@DDeVhA`h^IX\t1.51\nHidH@@Rfuvz`@`@XXfMsBhP\t1.51\nHaF@@@Rfu[j@@@FEXUMwDA@\t1.51\nHaFH@LAIYfnZjh@XDaUwDa`\t1.5\nsOy@LDeekZj`FAQkxi`\t1.5\nHaDH@@Rfu[j@@@FFIc\\pjx\t1.5\nHeTD`HP@cIHXdmpk@A@@pHj[nHD`\t1.5\nQM`BN`XUqD\t1.5\nHiV@@@Rifzyajjj`AatIaTw\\`P\t1.49\nsJXA@IRij`FFVODH\t1.49\nsGX@@eLuT@pLVODJ\t1.49\nj`iP@@@PRfUUg_EIF]zZb@@@@@FBbLEIVcV]{dD@\t1.48\nj`qaB@MBADILklmkQcoP@UP@@@CAPDXISakN}rB`\t1.48\nJocDP`rDatsvQQISJJVTr{[p@UUTL@FCIVg[|SE@\t1.48\nj`i@B@@ABTsLjotyJvgT@P@aP@@pd@cARUhunH]x\t1.48\njdy``@J@BdlsOJkbezKMUPTBH@C@QJLUYwh|qCQ`\t1.48\nj`qA@@@YHheEdXdaR]z`bB@@@@XZPQgARtZso\\aP\t1.48\nj`aaB@HB]DYIHkECDeK^jjf@H@@XZ`cAJ\\Ujso@\t1.48\njhqa`@M@IIIf]{eYgHHBjjh@A`xFBTxJRmFl{pP\t1.48\nHo~HHNnIAICIAXcIIKEEhcIvjBBJ`@XLwKiwrG@\t1.48\nj`qP@@@XRfV]{V`g^BBb`@@@FFdDhs`mFl{wHJ@\t1.48\nj`qQ@@JV@eMrsooEFmPPTUTP@LEHHs`iJtYwH^@\t1.48\nHg]DqNm]bPRPrPz]{IIKEDheIuPPLP@LLXSyE`\t1.48\nj`qa@@J@RVYgm\\Tg^YjjB@P@F@bTXhug^yb@m@\t1.48\nHcMDpnd]bPRPrPZQyYwlddlRbLkUMUT@LDj^Qp\t1.48\nHg^HHNnIAICIAXcIIKEEhcNuPPQP@LJ[ev~PX\t1.48\nJobD@@ILsJr|wif}PTEPe@AaXXUMprng[|b@\t1.48\nJoc@@@YHhhheEcrsYoPAA@B@@XJS\\Lkiv\x7FH@\t1.48\nHg\\HpMbPRPrPrRRqIPsCMT@ET@CCjXYt{yB`\t1.48\nJgB@P@AFRJJJIIFad}n`@`@`@C@PIne]ObCX\t1.48\nJoBD@@YHihdcDepv}@PP@@@FBeS\\Jz]orD@\t1.48\nJoCDPBbDPdrnwJtuo@AT@@@A`hIaUvg[|`P\t1.48\nj`a`P@A@P{rSKKOkJtuMUUL`@phS`iVxag`\t1.48\nJob@P@ABTsLjoWS^oPA@BD@@XBALLkm|Pw@\t1.48\nHg\x7FH@HyVrRQJIWIUtkUSUUT@LApjxYt~IE`\t1.48\nHko@PITpbNbLbbbTURXXBHZP@XBFTwBi|cP\t1.48\nHg\\LpINxdDdLdLddlRTJ`kU@DS@@pJfF~QH\t1.48\nJoB`@@YdbbTVLRUC[aAQ@@@@XJaTpkiv\x7FHx\t1.48\nHk~@@HrRQQIFHUgYNjjjjh@XJfEWCJz_HX\t1.48\nHg]DpBX{BlFlVlRYf{~zXHbJX@FA@JwqBX\t1.48\nHcl@P@BABLdTRafQTnuKLuH@pDDJae]yG@\t1.48\nJoBdP@sXQBSJvlkSJ\\@EMSD@FC@fUi|Sg@\t1.48\nHknHpINIAICICIIKDeMaVj@Hd@FATLkqFt\t1.48\nHknHpCjIAICICIIJeEDmNjhB@@FADJ{rI@\t1.48\nHg^HpCjIAICICIIJeEDiiuU@PP@LBHUwdV\t1.48\nHcN@HNbPRPrPVHrRRqQZSmTDD@@pInW^QH\t1.48\nHklDpMNIAICICIIKDeeAfj@BX@FATwGrA@\t1.48\nHg\\DpINIAICICIIKDeMhJuPADp@LBiaodJ\t1.48\nHk\\d@dpSAPzIZUyIfYoVgSjjifh@XEWZX\t1.48\nHg|H@@rJJIHqIMqw@PP@@@LEpj[iWSod@\t1.48\nHg~D@DClbbTTTjSB]mUL@D@C@TXYWSodX\t1.48\nHg^H@ACIEDdhlYrtDEEP@LMSBinFUt~QX\t1.48\nHk_H@HyVrRQJIWJneZjZjj@FGXU\\L{qHL\t1.48\nHo~L@M@iRYg^ufzB@jj`@XZFEWCNg[|aP\t1.48\nJoBd@EVBTwKN\x7Frg]AAQUD@FDhS\\Lki|ap\t1.48\nHg~@@@rQQQUQIUqwSMP@P@LA@fz]N~YeJ\t1.48\nJoCD@B@drsJkkYnu@@@@@AaJUprng_DYp\t1.48\nHo}L@FFnoIIEEEB\\avjYjih@X]cCJf\x7FHH\t1.48\nHedBJHSBCpzHFHfHKlddqTcUUP@pkJxY@\t1.48\nHc^@@HRjU^^dUGZjjjj@FBiaTwCJ{rH@\t1.48\nHcmH`FeXBLddRJRUMpuUUKP@pjLJnxbZ\t1.48\nHknH@ACIEDdhl^V``hh@FBiaTwCJgrM@\t1.48\nHg|@@LddTjTrPr]uP@@@@C@TpjXUOb[X\t1.48\nHg|@@LddTjRRPr]uP@@@@C@Tpjy]ObMX\t1.48\nHg}H`AfpbDfUmYZYS`@ijR@FE@fT_D{P\t1.48\nHcoH@HyVrRQJIWUtkUSUU@CAlJnF^IF`\t1.48\nHg}H@JlDinV]~T{hHJJb@FDhS\\Lki|bp\t1.48\nHg}@@@qJYWyVnNp`b@@@A`jES]Jz]|c@\t1.48\nHedDpJZHaHcHcIIKEiUUT@LNaLInGdR\t1.48\nHkmD@AvnrRQQsQKSjfje`AarXSRi|c`\t1.48\nHmvDPLa@BNbLddlTVeUhH@@FEXwBoHd\t1.48\nHg|H@@RYfUWd}mh@@@@@XRUMpriwrM@\t1.48\nHmOH@HyVrRQJIVneZjZj`A`vEWCODaP\t1.48\nHmv@pIbPRPrPrRRqIPUj`B@@XYPkqFd\t1.48\nHmu@PITHchcHhheEVF@bF@A`pYS\\OHT\t1.48\nHmtHpIbPRPrPrRRqIPUj`B@@XYSCqIT\t1.48\nHkmL@FFnOIIEEDlqvjYjf@FEXproHH\t1.48\nHiDDpJZHaHcHcIIKEjjj@FCPfDp|c`\t1.48\nHknD@AALbbTRbqWVijjd@XTWCI|Qe@\t1.48\nHo~L@AAGRYYY}UujZjjT@XTWCM|Qc@\t1.48\nHmMHADp@zIRYeuIiVjh@@@XUgCJ|b`\t1.48\nHg]L@DpFEIeY~^nZifjh@X\\fRng_Hx\t1.48\nHeuHADp@zIRYUTjFZj@@@FEHwCOHp\t1.48\nHklH@@RYWY^f`@jj@A`hIaUpki|bP\t1.48\nHcm@@@qJUvUpeuih@H@F@pa\\LkoHh\t1.48\nHcND@JCTeUe^UZjjj@F@iaMpsoDaP\t1.48\nHcLD@NwIIDcDbpuUUS@C@XSBiagdJ\t1.48\nHcMH@NVlddTZbR{UMTl@LFSBF]yC@\t1.48\nHcmH@DhDfUe]aWVjA@`@XTf]J|P]@\t1.48\nHcNH@IAIfUWEZ``b@A`lXUMprn|`@\t1.48\nHcNH`IDHaIe]mih@Ij@AapIaUJ|cP\t1.48\nHcMD@FFnrRQQQ]LMTsUP@pKIW^XSB\t1.48\nHcmH@DhDfUe]aWVjA@`@XDgRoLp]@\t1.48\nHmwH@Dp`RYyUeVjjj@FGIS\\LkrL@\t1.48\nHmvD@E@TfUvzZ@Bj@A`HIaUpsrE@\t1.48\nHmvH`IDHaIe]nf`@f`@XLBXUSrE@\t1.48\nHetH@@RYnWaFZjjZ@F@`aTwCODc@\t1.48\nHcLD@@QInYWWVjB@@A`JYS\\LkrM@\t1.48\nHmt@`@bDfUuZZ@Bj@AapIaUp|RU@\t1.48\nHiDLpB[`bDbJ|Dfunff`A`PI`|b`\t1.48\nHcND@LADf]YU]Zj@@@FGXWCJ{rJ@\t1.48\nHeV@PIBHzHRYeea`Ha@A`pYS\\OHd\t1.48\nHcND@EADfVU~UZjjj@FGES\\L{rL@\t1.48\nHmuH@DDDeYW^Ejjj`AarXUMt|RE@\t1.48\nHeVD`La@BLddlRPrm@@@C@linx`r\t1.48\nHct`@JF]rRQRzKUUSV@LFaLJfyD`\t1.48\nHcML@DpFEIeY}kfjYj`A`RXn|Si@\t1.48\nHmLD@@yIYe^neVdHB@A`SCJ|RB@\t1.48\nHmUDB@UiB\\ddUbtjji`AatIaUr`\t1.48\nHmv@@@RYvUeZj@@@FDpfDwCJ|`@\t1.48\nHeTH@NrRQHqLMUUT@LAaLJfF^Qp\t1.48\nHmv@@@RgVUeZj@@@FDaBXwCJ|``\t1.48\nHmvH@NAIYWUnZjjh@X\\fESCODaP\t1.48\nHmwH@DJPR[YWFVjjj@FCYS\\J|a@\t1.48\nHeVDB@ZPgIIEXdLuUUP@pzDpjxP\t1.48\nHmuD@DHNRY[]Jfjfj@FEXproDP`\t1.48\nHmuD@DHNRY[]Jfjfj@FALLksDp`\t1.48\nHeV@@@rRJIJmuUUT@LAaLInF^QP\t1.48\nHiEL`LZDh@cIHULeij@FFXp|PN@\t1.48\nHmvD@DCdfVyyUjB@@A`RMr|pad\t1.48\nHeUH@DpDeYUFVjjh@X\\aTwCOH`\t1.48\nHeUH@DHDfVuFVh@@@XLeMpsrB@\t1.48\nHmtH@@RYWYih@Jh@F@`fEWBoHd\t1.48\nHeT@`@bDfUuih@J`@X\\BXU\\OHd\t1.48\nHmVDB@FPgIIETijjih@X]BXULh\t1.48\nHef`@@SFyIeYfjZ`AapIeLL|c`\t1.48\nHieH@DDDeYWaZjj@FCIaTw\\RA@\t1.48\nHeUH@DDDeYWxVjjh@XLfES]qHd\t1.48\nHeU@@@EJYU^f```@FG@fES]qAd\t1.48\nHaD@P@bBbDfYvzB@@A`PDw\\SJ@\t1.48\nHieH@DDDeYWaZjj@FEXUMwLaA@\t1.48\nHeUH@DDDeYWxVjjh@XUaTw\\rDd\t1.48\nHeVH@FAIfUqfhH@@F@aFEWCOHX\t1.48\nHeVHB@XIrRQVICMUSR@LNaLKad\t1.48\nHeUH@DdDf^UFVjjh@XTUMp|qLd\t1.48\nHeUH@LDDeYWxVjjh@XLaTwSrH@\t1.48\nHeg@@JF\\ddTneUTp@pZDpj[bCH\t1.48\nHmW@@JE\\ddTnRjjfpA`tIaTwHx\t1.48\nHif@@@rRIHhjjjj@FGPaTwCrL@\t1.48\nHie@@@QIYUxVjj`AatXUMp|`@\t1.48\nHaEHADH@zIRYUJjij@FBMwDS@\t1.48\nHiFHB@DIrRQUJjjPA`tIaTwHx\t1.48\nHiD`@@SFRYUfjZ@FG@fTwCrB@\t1.48\nHif@`ABPRYWZZ@B`@XTfEW\\`P\t1.48\nHaF@`F@HRf_rjYj@FE@fEWD[`\t1.48\nHiE@@JGIIEKjji@FCPfES\\Sa@\t1.48\nHiE@@JGIIEKjjj@FCPfES\\Sa@\t1.48\nHeUD@FFnRjYeajfZ`AaF\\HfFP\t1.48\nHeV@@@RYyTYj`@@AaHPfTwCH\t1.48\nHifD@D@Tf[WaZjj@FAES]rL@\t1.48\nHaE@@@aJmUnjjh@XLfES]rH@\t1.48\nHieL@DpFEIeYkfjY`AaB\\SN@\t1.48\nHiFH@HGIIEXjji@FCPfEW\\a`\t1.48\nHeT@@DjU]k``b`@XMBESCqLd\t1.48\nHaF@@@ReU[jjj@FGPfES]r@@\t1.48\nHif@@@Ri]^Fjjh@X]BES\\OHp\t1.48\nHaEH@HSlddRmMUTp@prLKbIP\t1.48\nsNqBGIARFdKDYIIYUT@pQoHp\t1.48\nHieH@DHDeYWaZ@@@FEIS\\OH`\t1.48\nHieD@DHNRY[Rijih@XPwBSBD\t1.48\nHiEH@FzlddTZjfh@XTfDw\\`P\t1.48\nHaDH@@RVU[jjj@FCIaTw\\PH@\t1.48\nKA|Y@]BX@QddarVj`CCBinQp\t1.48\nHaE@@@yJe~fjjh@XMBXUMrN@\t1.48\nHid@@LdbRQk``R@AaTHUCqLX\t1.48\nHeT@@DjU]k``R`@XMBESSqLD\t1.48\nHaF@@@rRIHeUUS@CAhSBinQp\t1.48\nsNqBGIARFdKHYIIYUT@payF\t1.48\nHiFH@JAIUfZjh@XUaMp|RD@\t1.48\nHaFD@DAdfUjyjf`AabYWHx\t1.48\nKA|@@Uddbejj`CAhSBinQp\t1.48\nKAzP@MuYIHhzih@pILInQp\t1.48\nKAxH@UvRRJNjZ@LLSBxc\\\t1.48\nsNyiKE`D[lddjVj@XP|UX\t1.48\nsGPdE`DSpRYvj@XXF|Tp\t1.48\nsGQLLIAREdDfvj`FDgHP\t1.48\nsOpH@DISOkSK@LBEkqE`\t1.48\nsKXDD@b^BRvKU@LLL^R@\t1.48\nsOxA@IRjVnjj@XVKU|a@\t1.48\nsOq@@drm]UT@phQkxi`\t1.48\nsFxA@IRiSZj`FEbqoH@\t1.48\nsF|@@ldrfmU@LBl[r@\t1.48\nsGYHMQDIJmT`LLHnKD\t1.48\nsN|@@ldssUPCBaFodp\t1.48\nsGQhHlOAJmZhAaCqB`\t1.48\nsNy@LDeVjj@XTKF|TX\t1.48\nsGT@@deYj`FEBqoI@\t1.48\nsNx@JeTuUPCBqXodh\t1.48\nsNy@GTjfjf@XYX|c@\t1.48\nsJR@@lTfVhAa`mrD\t1.48\nsGY@DDf]j`FFQoI`\t1.48\nqCbHXRBdDfj@pdyL\t1.48\nsJ\\@ABeOL`LECqK@\t1.48\nsGX@@eMuT@phbqyJ\t1.48\nqCsCPKCevyIj`H\t1.48\nHaDD@@{IEDcSUUT@LJ`j[nHf@\t1.48\nQMhDRZAaGFP\t1.48\nHidH`ABHRYWZZ@BP@XTBXU\\c`\t1.48\nsFpH@DISNmLpC@aZ|a@\t1.48\nsGQ`@bdwMT@pROEj\t1.48\nqC`P@HRZhCBSfBp\t1.48\nqCr@XIKTA`hnHX\t1.48\nqCp@AIj`LDmqB@\t1.48\nqCp@AJZ`LEMqA@\t1.48\nJoCb@BvxTeMrkk]IwPPP@P@AaRDporC@\t1.47\nHcNB@JciwIIMEeKruUUU@CBXSBiae^Qh\t1.47\nHk_H@NtpRfumUaWZ@@@`@FAIcGqBd\t1.47\nHk_H@IWPRfunUatz@@H@@FAIcKqBL\t1.47\nHmVB@A@feIf[vjjj@FBaBXULLkrN@\t1.47\nHmwDAHHPRISdfyeVEjZjPAae]OHT\t1.47\nHmvL@JciRjyvyZjjj@F@pfESCOHT\t1.47\nHeWDAHHPRISdfyeXVijd@XIT|c`\t1.47\nHmO@@@rdigmZZUB@@@@FFYp|qIT\t1.47\nHeTB@HhYRjwUnjjj`A`tHS\\ODrP\t1.47\nHidL@HhTjmunjjj@FEPaLODs`\t1.47\nHiFL@F@nRYgZjj@F@aBXS\\OHh\t1.47\nHaE@@@sIEDceMST@LLPfxe\\\t1.47\nsNx`BJdrmUPCAbHu|f@\t1.47\nsOx@@eR}]UT@plqkyD\t1.47\nsGY@JDinj`FFbwDZ\t1.47\nsJY@DDeVhAaecrP\t1.47\nHg^L@M@iRYg^u[hHBjh@FBaaUprnwrC@\t1.47\nHidH`H@HRme^Eh@@@XTUMp|PD@\t1.47\nHid@`@bDfUvf`@h@FC@fEW\\`P\t1.47\nsFt@AdiWEihAahcrT\t1.46\nHaD@@DjUZxHH@AaTXU]qDX\t1.46\nsJ\\@@ldru@LDEqX`\t1.45\nHeTH@@rQQQHcMAP@@LFpj[axbR\t1.45\nHo}BAHLDUxeNR[e]m^Eh@JjP@X\\UMtj_Dvp\t1.44\nHkmLAHLDVISdfyW[xV`@j`@XLUMtkqML\t1.44\nJoBF@@HrS\\srzLv{PPD@@@FGISZ]orE@\t1.44\nHcLDrITJsjsZq^RYefVF@bF`@XXG[qLD\t1.44\nHkLNB@PfESSdf{n{Zjjj@FBxUMprnf\t1.44\nHclH@@rJJIPiMr{@P@@@CA`XYW^Ie@\t1.44\nHcMD@DHMR[nUyUj`@`@X]aMpsoHP\t1.44\nHeUD@BdARYgUnjjj`A`HPaTwSqLD\t1.44\nHif@PBBHzHRYgfFBB@@XTFMp|``\t1.44\nHeTL@@Z\\bbRbM]@DT@CA`SFz^PH\t1.44\nHmtL@@ZTieeqV`hH@A`rEproDi`\t1.44\nHmv@@@Ri^ueZj@@@F@pfMproHh\t1.44\nHeU@@@yJeWZzjjZ@FCPfES\\PY@\t1.44\nHeTD@NGIIDcCBUUMP@pJDpnHt`\t1.44\nHeVH@NAIYWVyjjj@FCIaTp|RI@\t1.44\nHieH@BDDfY}njjj@FGABEWCqLX\t1.44\nHmtH@@RfUWzZBBH@F@iaTwBoHd\t1.44\nHie@@@yJeWkjji`A`tIaTwDxP\t1.44\nHidD@NGIIDcHRjih@XEBXWDXP\t1.44\nHidH@@RUY^Ejjh@X\\fES\\OH`\t1.44\nHidD@F{IIEYhRjfh@XYFEqDD\t1.44\nHidD@@iJ[gxZB@@AaRDwCrJ@\t1.44\nHidH@@RfU~F``@@XMaTwCrD@\t1.44\nHaDH@NrRQHpeUS@C@hSBxeL\t1.44\nHaDD@F{IIEYBUTt@LLcBxb\\\t1.44\nsNyhMEPDYIBhmL@pfx`p\t1.44\nsOq@GddblUUL@ptqxeP\t1.44\nsFu@E`drfmU@LD[qK@\t1.44\nsKXA@IReqjhA`Xl^P@\t1.44\nsJY@DDeVhA`l^JH\t1.44\nsGX`DJdjmT@prMxi`\t1.44\nsFx@@eLzuU@LCEkq@`\t1.44\nHidH@@RYm^Fh@@@XLATwCqHp\t1.44\nHg]HpBXpkIkMkDfYemnVBHhf@AaPENwqFT\t1.43\nHknL@M@iRYg^un``Jj@AaHXU\\LkoHL\t1.43\nsGX`LDdrmT@pexlP\t1.43\nHeT@@DjU^k``b`@XCBXU\\L|a`\t1.43\nHeTD@@iJ[e^f```@FAHSCqNd\t1.43\nsFy@JDiTvjhA`Xl^R`\t1.43\nqCp@AIZ`LMEnP@\t1.42\nHaFH@JAJUtjjjh@XUBXS\\c`\t1.42\nHaDH@@RYWih@H@FFHU\\pLx\t1.42\nHcNLAHAEbTyInUvxV`@j@A`qTwRoHt\t1.41\nHiFDPJHPbDbDf{Vij`AaPPeCqFx\t1.41\nHeTH@@RYe\\YjB@@AatXU\\L|PF@\t1.41\nHidH`BBHRYeVFBB@@XDFTOD[`\t1.41\nHaDH`BBHRYg[hH@@FAAe]qBX\t1.41\nHeTH@@RYm_aZ@B@AaQTwSrL@\t1.41\nsOp@DjUMjj`FCDVMyF\t1.41\nsNx`DFdkKUPC@kE|Th\t1.41\nHif@@@RfU~F``@@XLFES]qDD\t1.4\nsGP`@TeYj`FFVOEJ\t1.4\nsNp`Jtjfjf@XYX|c@\t1.4\nsOq@@drm\\@@@prMyaf\t1.4\nHcNL@M@iRYg^vzB@j`@XBFEWCJ|cP\t1.39\nHiU@@@iJYWrnFP`H@FAESCqDx\t1.39\nKA|X@HC\\dkJuU@FEIaMwDb`\t1.39\nsJU@DPdju@LDmqP`\t1.39\nqCr@PIWTAaEqS@\t1.39\nqC`@ISTAxQE`\t1.39\nHcLHpMbPRPrPrRRqIPcMT@E@@pjfF]yB`\t1.38\nHk^D@IADf^UeFUujjjj`A`ITwBngrL@\t1.38\nHcnD@AADeYVWaeVjjjh@XCaTwRn|b@\t1.38\nHmtL@@Pdf{eYUj`@@AavDwCJ|a@\t1.38\nHmVDB@ZPgIIEXmJjjX@X]BXU\\h\t1.38\nHeTH@@RYWVf`@j@AapIaTL|c`\t1.38\nsGQ@@dsuT@pHVOEJ\t1.38\nsKX@@eKcUPCCSGbB@\t1.38\nqCb@AIj`LEEqC@\t1.38\nsFx@@eJfuU@LJIc^Q@\t1.37\nsGX@@eRuT@pLQoI`\t1.37\nHeVB@ICFEJYyzzjjj@FGPUMpsqDp\t1.36\nHeV@@@Re[TYj`@@AapES\\L|RD@\t1.36\nHifH@JAJUuJjjj`A`tIaMwHD\t1.36\nKAxD@@c\\dvluS@FBXWDS`\t1.36\nsGPa@erS\\uPCB[bM@\t1.36\nqCqPZHAD]XCqC@\t1.36\nsGP`@TfZj`FADMxe`\t1.35\nsJX@@eOU@LML^HH\t1.35\nsNx@IddbmUPCBqXodh\t1.34\nsGY@DDfyj`FBMxe`\t1.34\nQMB@HchFD\\Y@\t1.34\nsNq`@bdw[UPCCKGbk@\t1.33\nqCh@AIJtA``nJX\t1.33\nHif@@@RUe^Fh@@@XLaTwCq@`\t1.33\nHkoBAHePPcbTyInUuVyjZfe@FAUpkrM@\t1.32\nHmvD@NADfVyyUjB@@A`SCJ|Pn@\t1.32\nHeUD@DpFRUVTYZZZPA`REt|RA@\t1.32\nsOx@@eRimUT@plqkyD\t1.32\nsG]@EbDf]jPFBVyJ\t1.32\nqCh@AIJtA`inHH\t1.32\nqCh@BIWTA``nJX\t1.32\nHeTD@@QImeQej@@@FEIS\\ODrP\t1.32\nsJQhHl@bOV`FDOI`\t1.32\nHidD@@IIf][hHB@AaPXU]rA@\t1.32\nsOq@@drm\\@@@prKyaj\t1.32\nHmvD`Ia@BLdabRrxU`@h@FEES]ODAP\t1.32\nHidH@@RfU~F``@@XTfDw\\Ra@\t1.32\nqCr@XIJtAyhl\t1.32\nHknDrBtpkAkEkCyIf[effBBbX@FF@J|Pi@\t1.31\nsJ]@EbDfVhA`enP`\t1.31\nHif@@@RfU~F``@@XLBXS]qJD\t1.31\nHaD@P@bFbDfUjz@H@AaPIeMrN@\t1.31\nsJY@DDefhAaIqX`\t1.31\nHaD@@DjUZxHH@AaTHU]qLX\t1.31\nHg|L@@QdfygUQd{ZB@@@@FGISKiwrN@\t1.3\nsGX@@eSUT@ptQxmP\t1.3\nHeTD@@iIYe^e```@FAMpsqHH\t1.3\nqC`P@HRVhCBKfDp\t1.3\nsJU@DPdvu@LInID\t1.3\nqCqPZH^D]hCsAX\t1.28\nsNp`@df]Zj@XKWbK@\t1.28\nqCp@AJZ`LLHnS@\t1.28\n`Lg@^P\t1.28\nQMhDRVAaOJ@\t1.28\nHaFD@DCdfUriji`A`RXU\\a`\t1.27\nsGX`JBdruT@pHaoDl\t1.27\nsJX`LDdvu@LH^IX\t1.27\nHidH@@RfU~F``@@XEc\\OLPj@\t1.27\nsOt@AdigkB@@FAQkyL\t1.27\nsGXhMD@cIHTmPCB[fAh\t1.27\nRGDPDQ`|R@\t1.27\nqCb@AIj`LDEqS@\t1.27\nqC`@ISTA``nJX\t1.27\nHidD@@GHhdhZZ@B`@XTBTp|SN@\t1.26\nHg}H@DTDeUfUqT{ZjP`H@F@hWRng_Dc@\t1.26\nHcm@@@uJYU_rnf`Pbh@FG@aMpsqEt\t1.26\nHmtD@@iJ[eWihHH`@XTaLL|aP\t1.26\nqCr@XIKTA`enHP\t1.26\nHeTD@@iJ[g^F``H@FAHSCqJd\t1.26\nHmtD@@iJ[eWihHH`@XDaLODeP\t1.26\nqCr@HIJtAaIqK@\t1.26\nsOp@DjWkjj`FCDQkyL\t1.26\nsJX@@eMU@LLInID\t1.26\nsJXA@IczhA`hnKD\t1.26\nqC`@IVtA`anJH\t1.26\nQM`AIhFD|R@\t1.26\nsJY@DDfVhAaEqX`\t1.26\nsKPH@DIRxtl@pHfOH`\t1.25\nHaDD@@IIf]n``@@XTFES\\c`\t1.25\nHeT@pHdDdLdLddlRPsU@@@C@j[iy@`\t1.25\nsGQ@@druT@pHaoDl\t1.25\nQM`BN`XI\\d\t1.25\nQM`AIhFCOH@\t1.25\nQM`AIhGfR\t1.24\nsJY@LDefhAaEsSD\t1.23\nsJY@DDefhAyib\t1.23\nsOpHADILkW@@@LJDZ~S@\t1.22\nHaD@@DjUZxHH@A`TIa\\rfx\t1.22\nsOpHADILkW@@@LLE^[E`\t1.22\nHmvH@DAImYVUZh@@@XLS\\LkqDp\t1.22\nsOq@@drm\\@@@pQoBEf\t1.22\nqCr@HILtAaErX\t1.22\nsJXhMD@bOV`Gbq@\t1.22\nqCp@BOTA`hnS@\t1.22\nHaD@@DjUZxHH@A`THU\\sFx\t1.22\nqCr@HILtAxe`\t1.22\nHidH@@Rfufz`@`@XXfMsBxP\t1.21\nHaF@@@Ri_ijjj@FEPaTwDs`\t1.21\nsOx@@eJymUT@plVMx`p\t1.21\nqC`P@HRZhCAK\\P`\t1.21\nsJY@DDeVhAaMsQD\t1.21\nsOy@LDeekZj`FAVKxiP\t1.2\nsJXA@IRij`FAbqy@\t1.2\nqCa@AIMTA`inHH\t1.2\nHidH@@RfU~F``@@XUaMp|QJ@\t1.2\nsOr@AcTiek@`@GfQX\t1.2\nHidD@@iIYgxVB@@AaQTwCrH@\t1.2\nHaFH@NAIYUnX@@@XEaTwH`\t1.2\nsJQDBHaQBS]R@ppbyL\t1.2\nsGX@AddQjhAah[qK@\t1.2\nHmvDAHAHeNR[e]xV`@h@FAES]qIT\t1.19\nHmLD@@eIfUTfEV``R@A`U\\J|c@\t1.19\nHeTH@@Rfuunh@J@AaRYSCqBd\t1.19\nsGXA@IRijj@XFKGbE@\t1.19\nsJX@IGuPCCQ[dH\t1.19\nsOp@DjWkB@@FAfKxeP\t1.19\nRG@DXOD`\t1.19\nsJY@BDfZhAahmq@`\t1.18\nsGQ`@ldsmT@pQoI`\t1.18\nsGQ@@dsuT@pHaoDl\t1.18\nsJX@@eOU@LBIcrH\t1.18\nHmvLAHAEbTyInUwaZ@B`@XTUMr|bP\t1.18\nKAxUBPfEp^F\\WYIIbfjd@pbnPp\t1.18\nHif@@@Rge^Fh@@@X]BES\\OH@\t1.18\nHaF@B@BTjUZxHH@A`tIaUwHX\t1.18\nqCh@CISTA``nJX\t1.18\nsGU@E`dsmT@pROEj\t1.18\nsKQ@@eKcUPCCSGdP\t1.18\nqCr@PISRAxe`\t1.18\nHknL`IaM@HrRFIKISaV@Bf@A`qTwR_H@\t1.18\nHk^@@@RiU{Vntzjh@H@FBpfEPrngrN@\t1.18\nHifL@NBaReYrZjjh@XMaTwCqHP\t1.18\nHcLD@@kIEMDdcttDDT@CAdIae^Qh\t1.18\nsJY@LDejhAaaEqX`\t1.18\nsNp`@df]Zj@XKGbk@\t1.18\nqC`@ISTAaAsQX\t1.18\nJoba@FCBJzUSsZoSCiwUUTuMP@XTaR]|Rn@\t1.17\nHeTLB@QdyInYqehH@@FETwCH\t1.17\nHaF@`FBHRYVkh@`@FE@fUwHX\t1.17\nHifH@NAJ[VXZ@H@A`RXw\\Pa@\t1.17\nHaE@@@qJYVnBB@@XTfEW\\a`\t1.17\nsFtHLPDISNmLpCCAWdH\t1.17\nj`qaB@GBAHILkmroQegP@SUUD@CBRLDiIVcVyCp\t1.17\nJoCDPCbD`drnwJtuo@AMUQ@AaJXURng_H\\\t1.17\nHkoD`LDxP@cIIBhdmeuZ`PH@FGXwCJgrJ@\t1.17\nHg]L`LnDD@cIIBhhd]ikTC@P@LF[iW[yF@\t1.17\nHmvDRLa@BJbL{IIBidiUZ`@@AaUMpsrE@\t1.17\nHg^L@DAaRUf^uNvjj@@@FBiaTprngqHl\t1.17\nJoBD@@ILvnroC[m@A@@@@XRUMrz]orL@\t1.17\nHo\x7FH@DVpRYYU]YujBBJ`@XJaTwCIv\x7FHT\t1.17\nHo}D@ElDRYYU]YujBBJ`@XRUMpr]orE@\t1.17\nHcOD`LWXP@cIIKDedLkP@R@C@j[axfZ\t1.17\nHcND@FATfYev]jB``@FDaFEWCJ|Qm@\t1.17\nHcLD@NGIIDcDYBUULu@CChSBY]y@`\t1.17\nHeTHPBBlzlRYgea``b@AaPXWCrI@\t1.17\nHmtH@ArRQHiRDjjVh@X]BXURoHX\t1.17\nHeVH@IAIfu~Fh@H@FCAATw\\SI@\t1.17\nHidH`ABHRYWZZ@B`@XLBXUCrN@\t1.17\nHeV@@@RYyTYj`@@A`HIeMpsrH@\t1.17\nHeTD@@qIUeQej@@@FCIS\\L|b@\t1.17\nHid@@LddUTaJjZ`A`tXU\\OHP\t1.17\nHaFH@BAIf]n``@@XDFTwDK`\t1.17\nsNx@HeTuUPC@kU|a@\t1.17\nsKP@DjTZj@XDQGdp\t1.17\nsGX@@eSUT@pJqoI@\t1.17\nQO@HyjA`erP\t1.17\nHeTD@@QIemQej@@@FATwCqBd\t1.17\nQM`AIdGfR\t1.17\nRG@DXLJy@\t1.17\nj`qA@@@YHihhhdd]Nmzj@B@@@@XZ`s`iJtZso\\``\t1.16\nj`qa@@F@RYV{m^gKN`BJ@B@@FB`HqSbmFm{dI@\t1.16\nJgB@P@AFRJJJIIFad}n`@`@`@CBPIne]N~PH\t1.16\nHg]DrBX{BlFlVlodfYn\x7FnfBHbf@Aa`BoDI`\t1.16\nJoBD@@YEEEEDdbmf}P@P@@@FFqS\\Lkiv\x7FH@\t1.16\nJoBP@@XUYHhhceDdwVxEAP@@@FCEWBn|p{\\\t1.16\nHg^HpBLJrZsZqIfVYYe``jI`@XT@sm|SE@\t1.16\nHg|@@LdbbRLrSB]aDP@@@CATJfFUt{yF@\t1.16\nJoCD@C@drm|kuqw@DP@P@A`hIe]Jz[|a`\t1.16\nHg\x7F@@@qdigvU|kSZj`@h@FDiaTLkm|a`\t1.16\nHkmD@ELDrJIQIIF]Z``b@AaqTwCI|aP\t1.16\nHeWD`LjXP@cIHUDdLkP@@@pSFy`\\H\t1.16\nHmtD`NTHaIe]Vf`@jP@XLBXUCrI@\t1.16\nHeVD`La@BLddlRPrm@@@CCLj^XwB\t1.16\nHcLD@@QIeeUgVhHH@AaqTwCN|aP\t1.16\nHeTH`BBHRYeUa``b@A`PYP|Si@\t1.16\nHmvH@DAIge\\YZ`@`@XLfTwCrE@\t1.16\nHeVD@DBTeYWxV`@`@XLaTwSrH@\t1.16\nHeUD@LdDRY[TYZjj`A`UMp|Pi@\t1.16\nHidH`BBHRYgVzB@`@XDFUwDHP\t1.16\nHeTH@@RV[TYZ`@@A`qTwCODa@\t1.16\nHid@@LddRL[jjj`AatIaUp|a`\t1.16\nHeVD@FADfygFV``@@XEWCODQ`\t1.16\nHeVH@IAJ[WVz`@h@FCIaTp|bP\t1.16\nHiT@@DjUfa[``hH@X]BXULOHx\t1.16\nHieD@LDDR[e^Ejjh@XDUMwDPP\t1.16\nHidH@@RYm^Fh@@@XLDESCqLx\t1.16\nHieH@DXDfyWaZ@@@FAEWCrD@\t1.16\nHaDH@HRjw[jjj@FCPfTw\\``\t1.16\nHaF@@@RiUkjjj@FEPaTwDs`\t1.16\nHaD@@DjWzZjj`A`pPaUwDq`\t1.16\nKAxH@@bRjsUT@XUaTw\\b@\t1.16\nsOq@@drm]UT@pXVM_I@\t1.16\nqChPK@HRUhCAA\\Tp\t1.16\nsJYiCE`D[h}Z@^P`\t1.16\nsJX`LDdvu@LEcrH\t1.16\nsGX@@dk]T@pvMyD\t1.16\nsJPa@erS[T@|VH\t1.16\nHaDD@@IIf]n``@@XDFEwDi`\t1.15\nHidD@@IIf][hHB@AafUwL@a@\t1.15\nHiDHPHApiprRQVRjj`A`rXS\\H\t1.15\nsJ\\@@ldru@LLEnP`\t1.14\nsJQ@@dsU@LLEnJD\t1.14\nQMPARVAaGFP\t1.14\nqCb@AIZpLDMrP\t1.13\nHaD@P@bNbDfUZZ@B@AaPHS]rL@\t1.13\nHaD@@DjUZxHH@AadIgBJfx\t1.13\nqCp@AIj`LMEnP@\t1.13\nKA|P@HBS[KUT@XDUMwDS@\t1.12\nsKP@Di\\Zj@XDQ[dH\t1.12\nHidH@@Rfy^F`H@@XDU\\ODQ`\t1.11\nsNu@EPdrsUPCCKWbK@\t1.11\nHaDH@@RYe[hB@@FAXS]q@h\t1.11\nHaDH@@RVU[f@@@FFTw\\rLH\t1.11\nsGP@Divj`FFBoMLP\t1.1\nsKT@Adi\\Vf@XFKD\t1.1\nKAxD@Ae\\dmvuU@FEIaUwDa`\t1.1\nqCx@AYIf`LHNIX\t1.1\nHeTH@@rQSIPmu@AP@LBSNGfDt`\t1.09\nHidD@@EIYW[j@B@A`PXU\\rFD\t1.09\nsGX`LJdmuT@pHboEb\t1.09\nsJX@@eMU@LBHmrD\t1.09\nsJP@DkVhAaacqQ@\t1.09\nHeTD@@IIf]vzB@h@FCAaUp|bP\t1.09\nsKT@Adi\\Vf@XZH|f@\t1.09\nHid@P@kAkDfUff`@h@FA@cCqLx\t1.09\nqCx@AYIf`LDErX\t1.09\nHifH@DAIVUxV`@@AaRES]qHD\t1.09\nsJX@@eKU@LCEcr@\t1.09\nHaF@@@RYe[hB@@FEXUMwH@\t1.08\nsGX@@eNuT@phfMyD\t1.08\nHaD@P@qFqDfUjz@H@A`PIc\\Rn@\t1.07\nsKX@@eKcUPC@qX|`@\t1.07\nHif@@@Rge^Fh@@@XMATwCq@P\t1.07\nqCa@CIJtAaEqS@\t1.07\nqCb@AIV`OME`\t1.07\nHmtB@@zURVUgXV@Hh@FEXWRoH`\t1.06\nqCp@AJZ`LLEnR@\t1.06\nHidH@@Rfuvz`@`@XDfTwDHP\t1.06\nHg|@@DjYV}~T{`d@@@@FBic\\LkiwrJ@\t1.06\nHidH@@RfU~F``@@XEaMwLRa@\t1.06\nHidH@@RYWZZ@B`@XTBXU\\Sa@\t1.06\nsJP`@TeVhA`d^JX\t1.06\nHcNJ@MCNeTify^ajjjj@FBpaTwCJ{rL@\t1.05\nHmvB@EAaeJYY^njjjh@XSFES\\LkrD@\t1.05\nHk\\D@@iIYgU^GSXH@@@@XLURngqHX\t1.05\nHmLH@@RYVuiiV@@@@@XLE\\LkqDp\t1.05\nsFq@@eLzuU@LCEkrD\t1.05\nHaDH@@Rfu[j@@@FFIW\\sBX\t1.04\nsGU@E`dsmT@pQoDl\t1.04\nHaFH@NAIe^f`@`@XDfEWDC`\t1.04\nsGU@EPdrmT@pRoEb\t1.04\n`IJpCr@\t1.04\nqCp@AIZ`LHnXS@\t1.04\nQM@HzAyd`\t1.04\nsNx@@eJ}UPCBqZobA@\t1.03\nsNq`@fdvkUHCAX|Rh\t1.03\nsJX@@dkU@LMEnHD\t1.03\nqCp@AIZ`LEMqA@\t1.02\nsGPXHlPDYIHUj@XP|e@\t1.01\nsOx@@drm\\@@@pQoBEf\t1.01\nsGT`EPTfyi`GbU@\t1.01\nqCpB@RduPFFbwH@\t1.01\nHefDB@XPgIIETiUUL@LJaLJnQH\t1.01\nHidD@@iJ[gxZB@@A`RDp|Rn@\t1.01\nsNyA@qNRRJuU@LCEcqU`\t1.01\nsGU@EPdvmT@pRwDZ\t1\nsJX@@eOU@LBHmrD\t1\nHeVH@DAIYmQej@@@FETwCOD``\t1\nHeTD@@iJ[e^f```@FEHS\\OHd\t1\nsOpHADILkW@@@LBDWqZ`\t1\nHaDH@@RYWih@H@FA@aUqLx\t1\nHidH@@RYm^Eh@@@XDUMwDpP\t1\nsOpHAHILkW@@@LBl[rL\t1\nsFy@DDfTujhAaekrD\t0.99\nsKX@@eKcUPCCCGbb@\t0.99\nqCb@AIZ`LDMqQ@\t0.99\nHg|@`@bLbbbRLRS\\]pDD@@@CAPpfzUt{yE@\t0.98\nHklJ@@R]MIemYqUj@Hh@FETtz_HH\t0.98\nHeTH`ABHRYWZf`@f@AaPIaUrI@\t0.98\nHcLD@@eJ[V][j@Bj@AaRYp{qBT\t0.98\nHie@@@QInUxV`@@A`pHUMwHD\t0.98\nKA|P@HBSMkUT@XDUMwHp\t0.98\nsNx@@eLuUPCBbKWbK@\t0.98\nsNx@@eJmUPCAqXu|`@\t0.98\nqC`@IVtA`enHP\t0.98\nsNyABCJSOUU@LJHj~KD\t0.98\nsGQ`@bdwMT@prqyJ\t0.98\nJoBD@DIU\\vjzv[uP@@@@@X[EMprng[|``\t0.98\nHg|H@@RYfUWd}nh@@@@@XZATwCJz]|b@\t0.98\nHmTFB@PfETyIn{mjjj@FGXUMpkrI@\t0.97\nqCbPPABUm@XI[d@\t0.97\nKAxDD@S]wILsuUPAaPPaMqLh\t0.97\nsNx`JDdrkUPCAE|Vh\t0.97\nHaD@@DjUZxHD@AaTXU]qDX\t0.97\nHidH@@RUe^Fh@@@X\\DES\\OHP\t0.97\nHaDH@@Rfu[j@@@FAIeMqBx\t0.97\nsGX`DJdjmR@pbyib\t0.97\nHaD@P@kNkDfUZZ@B@A`PHw\\SB@\t0.96\nHiFDB@XPgIIETjji@FEPfEWHx\t0.96\nJoCF@F``iLkJ|jz]mUUUUP@XJUMpriv\x7FHp\t0.95\nHg^D@E@TfUvujZ@Bjj@AahHU\\LkiwrL@\t0.95\nHmtD@@eIfUTUjBB@@XBDES\\L|SE@\t0.95\nHmvD@LATenUqej@B@AarYS\\J|b@\t0.95\nHeVH`NdHaIe]ZZ@Bd@FC@fEW\\`P\t0.95\nHif@@@rRJEKajjj@FGPaTwCrL@\t0.95\nHmtD@@QImYVUZX@@@XTwCJ|qLH\t0.95\nHeTH@@RfUWihHH@AaVES]sDFP\t0.95\nHifH@AAIe]ih@J@A`pIaTOHx\t0.95\nHidD@@iIYgxVB@@A`QTw\\RA@\t0.95\nHaFD@DCdeeVyjj`A`VES\\b@\t0.95\nsOp@DiUkjj`FCDVMyF\t0.95\nsJPhH`DYIBm@LEcr@\t0.95\nHeTH@@rQSIPmu@AP@LJSFx^HT`\t0.95\nHeT@pHdDdLdLddlRPsU@@@CCJF^Hw@\t0.95\nKA|PD@pSddbljj`CAhSBinQp\t0.95\nHaDH@@RYe[hB@@FAAaMqJx\t0.95\nsJY@LDeZhAaaMqH`\t0.95\nHcNH@DAIevUWVj`@@AarUprn|SB@\t0.95\nsGP@DiUiPFADVxcP\t0.95\nsJT@@TizhAaaMqH`\t0.95\nqCr@HIJtAyhl\t0.95\nsOx@@drm\\@@@pJq_DJ\t0.94\nsGQ@@dsUT@ppQyij\t0.94\nsGU@DPdwMT@pVODj\t0.94\nqCp@AIZ`LInXQ@\t0.94\nJoB@@BUJssoPvxPTA@@@FFpaTLkiv\x7FDs`\t0.93\nHidHPBBlzlRYgfFBB@@XDF\\ODI`\t0.93\nHmvH@AAIYWYnX@J`@XMaTtkrH@\t0.93\nHidL@@IdfYoa`b@@FE@UMwHD\t0.93\nsFt@ATiTvjhA`qEcP\t0.93\nsNy@DDeeZj@XGFod`\t0.93\nsOx@@drm\\@@@prMyaf\t0.93\nsGP`@dfuj`FBVxcP\t0.93\nHaDH@@Rfu[j@@@FAXUMqDx\t0.93\nsGY@LDeVj`FABqxiP\t0.92\nHcND`La@BLddJfRtjmP@P@LFqnF]yE@\t0.92\nsGU@EPdrmT@pRwDZ\t0.92\nsGQ@@djmT@pruxhP\t0.92\nqCp@AJZ`LInXQ@\t0.92\nqC`@IRtAaAsQX\t0.92\nqCbPXABRt`^XQ@\t0.91\nqC`HBHTPduPFFDWI`\t0.91\nHid@@DjU^nBBH@FCPaUp|SF@\t0.91\nQMPARZAaGFP\t0.91\n`IH`CB@\t0.91\nQM`BN`XQqd\t0.91\nKAzH@IP\\dvjuT`FFIe\\Pf@\t0.9\nsNqaIV~RjzjXAaIqX`\t0.9\nsGY@DDeUj`FBQyij\t0.9\nsJY@DDeVhAaEsSD\t0.9\nsJY@LDejhAa`cqS@\t0.89\nHidH@@Rfuvz`@`@XEaTwDPP\t0.89\nsJQ@@eMU@LEEqX`\t0.89\nsJQ@@dsU@LLHnKD\t0.89\nsJQ@@dju@LH^ZK@\t0.89\nHiDJB@PfENR[nvjj@FEXULOHx\t0.88\nHidH@@RfU~F``@@XDfDwLka@\t0.88\nHaD@`@dDfYVz@`@A`VDw\\b`\t0.88\nKA|H@TBILlmUPAafEwDi`\t0.88\nsNp`@dfUZf@XHobu@\t0.88\nqCp@AIj`LLEnR@\t0.88\nHeV@@@rRHqICMT@@@LFbfxYxbX\t0.88\nHmvH@LAI[YVUZh@@@X\\aMproDc@\t0.88\nsKXHB@aJWFe`FFDwH`\t0.87\nHidD@@iIYgxVB@@A`QMp|RJ@\t0.87\nsOpHADILkW@@@LBEWqX`\t0.87\nHmtD@@UIUe\\YZ`@`@XMeMpkqHP\t0.87\nsJX@@eKU@LLL^JH\t0.87\nsJQ@@dsU@LLH^IX\t0.87\nHkLNCHiiWS[ex~rRSQHqRjZfX@XYFD\t0.86\nHmn@@HRjuYX^gejjjj`A`lIaTwCJ`\t0.86\nHedJA@RaeNgdfvvZjf@FFYS\\``\t0.86\nHefDB@XPgIIETiUUL@LJaLJ^QP\t0.86\nHif@@@Rge^Fh@@@XLDES]qDD\t0.86\nsGPBIHJPtaXcIIKUPCBWdH\t0.86\nsNq@GddbmUHC@qX|e@\t0.86\nsGY@LDefj`FABqxiP\t0.86\nsNx@HeTuUPCCKGbk@\t0.86\nsNp`@dfvZj@XGFodP\t0.86\nsGX@HeTuT@prqxiP\t0.86\nsJPH@DILuPCAQ\\pq@\t0.86\nsJY@BDfZhAaaMqH`\t0.86\nsNp`@dfUZj@XHwbs@\t0.86\nsJQ@@dmU@LLEnJD\t0.86\nsJX@@dkU@LCEcr@\t0.85\nsJXhMD@cIHUhAyab\t0.85\nsJT@@TizhA`h^XK@\t0.84\nqCh@BIWLAaMqQ@\t0.84\nqCj@KAIf`LHnS@\t0.84\nHmN@@@RfUWrnf`Pb`@X\\BDwCOHT\t0.84\nsOq@@drm\\@@@pHQoEf\t0.84\nsGQ`@jdjmT@pVOEJ\t0.83\nsGQLKIARFdLddmU@LH^R`\t0.83\nsJXhMD@cIHUhAaCqC@\t0.83\nHaF@@@Rfu[j@@@FEAaTwDS`\t0.83\nsJQ@@dmU@LLl^HP\t0.82\nsJU@DPdvu@LH^IX\t0.82\nsJY@DDfvhAaCqK@\t0.82\nsJP`@TeVdAyhl\t0.82\nHcLJ@@PUuInUgzV`BJ@AaQTJ{rD@\t0.81\nsOxA@IRi^lH@@XVHu|f@\t0.81\nsOpHADILkW@@@LBCWqK@\t0.81\nsNp`@deVZj@X[U|TH\t0.81\nsNp`@deYZj@X[F|TX\t0.81\nsJX@@eKU@LML^HH\t0.81\nHaDH@@RYVih@H@FE@fTwHx\t0.81\nsFx@@eLzuU@LBIkqH`\t0.81\nsJQ@@dlu@LDmqP`\t0.81\nqCr@XIKTA``nJX\t0.81\nsJQ@@djs@LDmqP`\t0.81\nqCr@HIJtAaEqS@\t0.81\nHmTJ@@IaUIf[njjj@FBaBXUMpkrI@\t0.8\nHedJ@@IaeIf[zjj`AaHPfESCOHx\t0.8\nsGXhMD@cIHXmPCs@t\t0.8\nHeV@@@Re[TYj`@@AatIS\\L|PB@\t0.8\nqCb@AIf`ODl\t0.8\nHedJAHiaenglddtUeTtp@pRLyA@\t0.79\nsJY@DDeVhA`inID\t0.79\nsJX@@dku@LInID\t0.79\nsFp@DjTvjhAaQD[rX\t0.79\nsGP`@deYj`FBqxiP\t0.79\nHiF@@@RifZjj@FGPfES]rA@\t0.79\nqCa@CIJtAyhl\t0.79\nsFp`@dfTujXA`l^R`\t0.78\nsNp`@dfyZj@XEXodh\t0.78\nsGP`@dfyj`FFVOIP\t0.78\n`IHPCr@\t0.78\nsG\\@@ldsmT@pHVOIP\t0.78\nHaDH@@RVU[j@@@FAAaUsH[`\t0.78\nQMhDRVAxr\t0.78\nHeTHPBBlzlRYgea``b@A`PYp|Pi@\t0.77\nHmtD@@QIee^UZ``@@XLULLkrN@\t0.77\nsGQa@bnR[fj@XP|Vh\t0.77\nQO@HyjAaGFP\t0.77\nsGX@@eNuT@pLqoDD\t0.77\nsNq`@fdvkUPCCKObM@\t0.77\nsOx@@drm\\@@@phVMyF\t0.77\nsJX`DBdjt`LHnJX\t0.77\nKAxD@@c\\dvluS@FFIg\\``\t0.76\nHaDD@@IIf]n``@@XYeMs@K`\t0.76\nsOp@DjWkB@@FBaxUjp\t0.76\nHaDH@@RVU[j@@@FCAaTw\\b@\t0.76\nsJX`DBdvt`ODl\t0.75\nHidH@@RVUvy`@`@XUaTp|b@\t0.75\nqCp@AJZ`LLInQ@\t0.75\nsOp`Hdjekjj`FBqxjp\t0.75\nqCb@AIVPLHnJX\t0.75\nHeTB@@sirQQSRtMUUT@LNaB[agbYP\t0.74\nsGQ`@jdvmT@pQoDl\t0.74\nsNx`DJdjsUPC@hu|Tp\t0.74\nsOq@@drm\\@@@pHU_Eb\t0.74\nHidD@@QInUxV`@@A`QTw\\QA@\t0.74\nHaDH@@Rfu[j@@@FEXUMwHP\t0.74\nsOq@@drm\\@@@pRoBLV\t0.74\nHaD@@DjUZxHH@A`tIaUwHX\t0.74\nHeVH@AAIYWVy`@h@FEXULODbP\t0.73\nsNx@AddQUUPC@pu|Rp\t0.73\nsJP`@TeVhA`l^JH\t0.73\nHmt@pHdDdLdLddlRTFZh@H@FATpsrE@\t0.73\nsJT@@deVhAa`mqP`\t0.73\nsOq@@drm\\@@@pROBMV\t0.73\nqCr@XIKTA`aNIX\t0.73\nHidHPBBlzlRYgfFBB@@XTFEp|a`\t0.72\nHiDJA@PnENGdf{Yji`A`aUrL@\t0.72\nHeUH@DdDfyWxV`@`@XDUMwDRP\t0.72\nsJY@LDeZhA`QEnP`\t0.72\nsNqa@jnR[YjhA`m^Hl\t0.72\nsJY@LDeZhAaaEqX`\t0.72\nsOp@DjWkB@@FFbOMjp\t0.72\nqC`@ISTAaEsBX\t0.72\nsKP`Adi\\Zj@^ZH`\t0.71\nHidH@@RYWZZ@B`@XLBXU]rA@\t0.71\nsJQ`@bdvu@LDcrX\t0.71\nQM`BN`XL|`\t0.71\nqCb@AIZ`LDEqS@\t0.71\nKA|X@TB\\dvjuT`FFIe\\Pf@\t0.7\nsGY@DDeej`FBfxcP\t0.7\nsGXA@IRiZj@XVKF|`@\t0.7\nsJQhHl@cIHUhAaCr@\t0.7\nsJP`@TfZhAaacqQ@\t0.69\nHk\\H@@RfYU\\]Tz@@@@@F@xUMproDtp\t0.69\nHidD@@QInUxZ`@@AaQTwCs@a@\t0.69\nsOx@@eJ~MKT@ppeydV\t0.69\nsJY@DDfvhA`enP`\t0.69\nsGQ`@jdvmT@pRoEb\t0.69\nsGY@LDeZj`FFDWDZ\t0.69\nHaF@@@RVU[j@@@FEXUMwDB@\t0.69\nsGP`@df]j`FDwDZ\t0.69\nsOq@@drm\\@@@phVKyJ\t0.67\nHev@@@RfUWJzZABH@FC@aMt|`P\t0.67\nsJQ@@dju@LInZH`\t0.67\n`L@OH\t0.67\nqCp@AIZPLMEnP@\t0.66\nsJQ@@dsU@LDmsBD\t0.66\nsJP`@TizhA`h^IX\t0.66\nHaDH@@RYWih@H@FE@fEWHx\t0.66\nHaD@@DjUZxHH@AaTIaUqFx\t0.66\nqC`HBHTPduHFBByL\t0.65\nsJPXHlPDQzt@pfyB\t0.65\nsJU@DPdvu@LHnKD\t0.65\nqCbPXABRt`XR\\PP\t0.65\nHidH@@RfU~F``@@XTfMp|Pj@\t0.65\nsJP@DiVhA``nZX`\t0.65\nqCb@AIVPOME`\t0.65\nsJQ@@dkU@LEMsAD\t0.64\nsGP`@dfUj`FDoEb\t0.64\nsGY@DDfUj`FBVxcP\t0.64\nsGY@DDfuj`FDoLlP\t0.64\nsGX`BJdruT@pHboEb\t0.63\nHidDB@QNR[e^Eh@@@XDS\\OHh\t0.63\nsNu@DpdvkUPCCKGbk@\t0.63\nsJT@AdiZhA``^ZK@\t0.63\nsGQa@jnR[Vj@XKWdH\t0.63\nsGP`@dfuj`FBMxe`\t0.63\nsGP`@df]j`FBqyJ\t0.62\nHeTH@@RfU\x7FahHB@AaRXS]qJd\t0.62\nHaDH@@Rfu[j@@@FAYS]qDH\t0.62\nRG@DTLHyP\t0.62\nsGQ@@druT@pHbwDZ\t0.62\nsJPXHlPDQzt@pVH\t0.62\nHid@P@bNbDfYYa`H`@FEAc\\OHh\t0.61\nsOq@@drm\\@@@pqky`l\t0.61\nqCaPQ@HRmhCB[d@\t0.61\nQM@HvAyd`\t0.61\nHifH@AAIYW[f@B@A`VES\\RA@\t0.6\nsFx@@eJxtm@LDIsHt\t0.6\nsOq@@drm\\@@@pJM_DL\t0.6\nHmtB`HSBCprRSFIJUZh@@@XMaMpsrE@\t0.59\nHeTDPAdHc`aIe]jZ@BT@FE@fEWHx\t0.59\nHeV@@@rRJEK\\MP@P@LJJfz^Hf@\t0.59\nHif@@@Rfuvz`@`@XUaTp|PD@\t0.59\nqCcPQXPd]hCAK\\`@\t0.59\nsGU@DPdwMT@pVoDb\t0.59\nsGY@DDfuj`FFVOIP\t0.59\nsJP@DizhAa`mqP`\t0.58\nsGP`ATeUfPFBVxhP\t0.58\nqCp@AJZ`LDIqK@\t0.58\nHaDH@@RYVih@H@FFIS\\pLx\t0.57\nQMPARVA`cr`\t0.57\nHidH@@Rge^Fh@@@XTUMp|RD@\t0.57\nsOq@@drm\\@@@ppSylZ\t0.56\nHmvH@DAIUYVUZh@@@X\\aMproDc@\t0.56\nQMPARZAyd`\t0.56\nHmvH@FCHhhhdYVhJ@@AaHQaUproHX\t0.55\nHiF@@@ReUZjj@F@pfES\\OH@\t0.55\nHid@@LdbRQk``b@AaTHUCqLX\t0.55\nsNxA@IrRQVjhA`Xl^Jl\t0.55\nHiV@@@RfU|kahDB@A`pHS\\OHh\t0.54\nsFx@@eJf`@@LCL[rH\t0.54\nsFx@@eJf`@@LMM^ID\t0.54\nHaDH@@Rfu[j@@@FAIaUqFx\t0.54\nHaDH@@RYWih@H@FAIaUq@x\t0.54\nHifH@JAIYgxVB@@A`QMp|RJ@\t0.53\nsGYALMJRmUPC@aF|Tp\t0.53\nqCp@AIj`LDEqS@\t0.53\nsN|@@ldskUPCBaXwdX\t0.53\nHid@@DjU^nBBH@FGPfES]rA@\t0.53\nHaF@@@RVU[j@@@FCQaTw\\`@\t0.53\nsGQ@@druT@pHboEb\t0.52\nHidH@@Rge^Fh@@@XDUMwLaA@\t0.52\nsJP@DjYdA`inID\t0.51\nHifH@DAInUxV`@@A`QTw\\QA@\t0.51\nsGU@E`drmT@pbylZ\t0.51\nsOq@@drm\\@@@pJqoDF\t0.51\nKAxD@Ae\\dmvuT`FAIaUqHX\t0.5\nsGP`@dfuj`FBUxlP\t0.5\nqC`P@HRfhCAB\\Rp\t0.5\nsOpH@DILkW@@@LBl[qA`\t0.5\nqC`@ISTA`anJH\t0.5\nsGY@DDfUj`FBqxeP\t0.49\nHiDB@@IaRYfzjj@F@aBXULOHx\t0.49\nKAxD@@S\\dsOUU@FGABXS]rJ@\t0.49\nsJP@DiYXAaaEqX`\t0.49\nsJQ@@dru@LHnKD\t0.49\nqCa@CIJtAaMqQ@\t0.49\nHidD`HP@cIHXdnEX@@@XDUMwD@P\t0.49\nHaDH@@RYe[hB@@FEAaMwHh\t0.48\nsJU@E`dru@LHnKD\t0.48\nsGP`@df]j`FDOEj\t0.48\nKAxD@@c\\dvluS@FBIwDp`\t0.47\nsGX@@dkUT@pJqoDH\t0.47\nqCa@CIKTA``nJX\t0.47\nsNu@DPdwKUPCCXwbS@\t0.46\nHif@@@RUe^Fh@@@X\\BES\\OH`\t0.46\nsGP`ATeejPFDWMLP\t0.46\nRFD@QFCBnP\t0.46\nsOq@@drm\\@@@phVMyF\t0.46\nQM@HzAaWDP\t0.45\nQMBBHRYAaGFP\t0.44\nsOq@@drm\\@@@prqyaV\t0.44\nsGQ@@djmT@pVoMDP\t0.44\nqCaBAKdfZ@|f@\t0.44\nRFD@QFCqH\t0.44\nsJY@DDfVhAaCqK@\t0.43\nQMPARVAyd`\t0.43\nqC`@Qz`LDIqK@\t0.43\nHmv@B@B\\ddUbReZj@@@F@pfMproHH\t0.42\nsNy@LDeYjj@XDQGbk@\t0.42\nHaD@@DjUZxHD@AaTHU]qLX\t0.42\nHaDH@@RVU[j@@@FEXUMwDB@\t0.42\nqCr@XIKTAaAsQX\t0.42\nqCb@AIZ`LHnXS@\t0.42\nqCb@AIZ`LHNZK@\t0.42\nsOx@@eLmXD@@pJu_HP\t0.41\nsGY@DDfUj`FBUxlP\t0.41\nsGY@LDeVj`FADQxmP\t0.41\nsGT`EaTf]jPFDWEb\t0.41\nHaDH@@RVU[j@@@FEAaTwDc`\t0.41\nsOp@DjWkB@@FBbx\\Zp\t0.41\nsJP`@dfVhAaMrD\t0.41\nqC`@ISJA`aNIX\t0.41\nRG@DTOD`\t0.41\nsOp@DjWkB@@FAbMxlp\t0.41\nHidH@@RUe^Eh@@@XLaTwCrH@\t0.4\nsOq@@drm\\@@@pJq_DJ\t0.4\nQMhDRVAaWI@\t0.4\nsJPa@erS[T@pfyB\t0.4\nHeTH@@RUYTYZ`@@A`vTwCODa@\t0.4\nHidH@@Rfufz`@`@XDfMwDHP\t0.39\nHiD@@LddUdjjh@XMBXS]rA@\t0.39\nsJQ@@dkU@LLEnJD\t0.39\nsJP`@dfvhAyeb\t0.39\nsGY@DDeej`FDOMMP\t0.38\nqCa@AIMTAaIsAX\t0.38\nHaDD@@IIf]n``@@XEeMwD@`\t0.37\nsOp@DjWkB@@FEbM_I`\t0.37\nRF@QP|R@\t0.37\nsJY@DDefhA`l^R@\t0.36\nqCb@AIj`LINXK@\t0.36\nQMHAIhFD\\Y@\t0.36\n`Ib`hFD\t0.35\nHg|@@DjU_eZx{BAH@@@FBpaUtkiwqLX\t0.35\nsNp`@df^Zj@XKGbk@\t0.35\nHaDH@@RVU[j@@@FAXUMs@c`\t0.35\nQMHAIXGcH\t0.35\nqCaBC[dej@p`xh`\t0.34\nsJY@DDfVhA`enP`\t0.34\nKAxP`PCaSaddbljj`CBdpf{dT\t0.34\nHid@@DjU^nBBH@FCPfEW\\Qa@\t0.34\nHaDH@@RVU[f@@@FAXUMqHx\t0.34\nqCpB@SGj@pTWDL\t0.34\nHk\\@@DjU^ukmLHH@@@A`lHU\\Lki|c@\t0.34\nqCb@AJZ`OME`\t0.34\n`IlQpFD\t0.33\nHg|@@LdbRbtJUB]aAP@@@CAXPjFUt{xf\\\t0.33\nsFp@DiTt@@AaaCsKT\t0.33\nRFDDQFCBNT\t0.33\nsJP@DizhA`Pl^R@\t0.31\nsJP`@dfvhAaCqK@\t0.31\nqCb@AIj`LDIqK@\t0.31\nHidD@@iJ[gxZB@@A`QMp|QJ@\t0.3\nKA|P@HBRjsUT@XTaTw\\RL@\t0.3\nHeVD`Ia@BLdabRwBl@D@C@binx`R\t0.3\nsGP`@dfUj`FDOEj\t0.3\nsFp@DiTt@@A`QC^IX\t0.3\nsJPYHlPDGh}Z@^S@\t0.29\nqCp@AI^`ODl\t0.29\nsFp@DiTt@@A`anFHt\t0.29\nQM`AIXGfR\t0.29\nQOHBNZ`^L`\t0.28\nHidD@@QInUxV`@@AaQTwCrD@\t0.28\nsKX@@eKcRpCAB\\rq@\t0.28\nKAxD@@S\\dsOUU@FCABDw\\SJ@\t0.28\nsJP@DiZhAaaCqK@\t0.28\nQMPARVAaOD`\t0.27\nQM@H~AaWI@\t0.27\nsJQ@@dlu@LEcqQ@\t0.26\nsJP`AdizhAyhb\t0.26\nHid@@DjU^nBBH@FCPfES\\Sa@\t0.25\nHeTD@@QIemQej@@@FETwCOHH\t0.25\nqCr@HILtAaMrH\t0.25\nHid@@LdbRQk``b@AaTHUMqLD\t0.24\nsNq`AjdmsUPC@kF|TX\t0.24\nsGQ`AjdmmT@pruxhP\t0.24\nsGU@E`drmT@pRwDZ\t0.24\nsFp@DiTt@@A`a^FKD\t0.24\nQMHAIhGfR\t0.24\nsJY@DDeVhA`enJD\t0.23\nQMHBN`XUrP\t0.23\nqCa@CISTAyhl\t0.22\nQM@HvAaGFP\t0.22\nsJX@IGuPCAK\\TH\t0.21\nqC`HBHtPdmPFBFxh`\t0.21\nsGX`DJdjmR@pRwEB\t0.2\nqCj@KAIf`ODl\t0.2\nHaDH@@Rfu[j@@@FFXU\\qFx\t0.19\nHaF@@@RYWih@H@FE@fEWHx\t0.19\nsJQ@@eOU@LECqK@\t0.19\nqCr@HIJtAaMqQ@\t0.19\nRF@Q`|R@\t0.19\nsOq@@drm\\@@@pjqky@\t0.18\nQMDa^RVAyP\t0.18\nqC`@IRtA`aNIX\t0.18\nRFPDTNJlNT\t0.18\nRFPDTOJ@\t0.18\nQM`AIhFBOJ@\t0.17\nHidH@@RYm^Fh@@@X\\DES\\OHp\t0.17\nsJY@DDefhAaMqP`\t0.17\nsOx@@drm\\@@@pjqky@\t0.17\nqCcPQXAD]XCB[d@\t0.15\nQMFI@bM`XSr@\t0.14\nsFp@DiTt@@AaaEsXt\t0.13\nRFPDXLJy@\t0.11\nRFQAtXOJ@\t0.09\nRFPDXLHyP\t0.09\nqCb@AIV`LInJH\t0.08\n`H@^P\t0.08\nQMDARZAyd`\t0.05\n`I@`Cr@\t0.05\nsJXA@IczhAahmrD\t0.03\nsJP`@deVhAaMqP`\t0.03\nsJP`@TizhAaCsQX\t0.01\nsFp@DiTt@@A`QEnHt\t-0.02\nQMHBN`^L`\t-0.02\nqCa@CIKTAaAsQX\t-0.03\nQM`AIhFD\\Y@\t-0.04\nsGQ`@ZdruT@pHaoDl\t-0.05\nRG@DXLHyP\t-0.05\nsFp@DiTvjhAaacsQT\t-0.06\nRGAALXLJy@\t-0.06\nsJU@E`dru@OLlP\t-0.08\nHo|H@NrRQRqZZR]j``bh@FDiaMvg[|bP\t-0.09\nRFPDXOD`\t-0.09\nsOp@DjWkB@@FBexUbp\t-0.1\nqCb@AJZ`LHnJX\t-0.1\n`J@OH\t-0.1\nsJQ@@eKU@LECqK@\t-0.11\nsJX`BDdvu@LHnKD\t-0.11\nHk\\@@DjU^ukmLHH@@@AaLHU\\LkoDpp\t-0.11\nsFp@DiTvjhAaQEcrT\t-0.11\nsJP@DjZhAaaEqX`\t-0.11\nsJP`@dfVhAxlP\t-0.11\nqCb@AIZ`LINXK@\t-0.13\nsJPXHlQxQ{T@prq@\t-0.14\nsJP`@TeZhAaaCqK@\t-0.14\nsNq`@VdsMUPCBbHobu@\t-0.14\nQMDARZAaWDP\t-0.15\nHidB@@saRf]ZZjjh@XUEMp|qLH\t-0.15\nQMHAIXFD|h\t-0.15\nsGT@@Tivj`FADqxeP\t-0.16\nsJP@DjVhAahmrD\t-0.16\nqCa@CIKTA`anJH\t-0.16\nsFp@DiTt@@AaQEcrT\t-0.16\nsJP`@TfZhA`QD^S@\t-0.18\nsJPLIDJHtQGuPCCQ[dH\t-0.18\nsFp@DiTt@@A`QE^KD\t-0.18\nsJX@@eMU@LML^HH\t-0.19\nKA|@D@DyIHjjjh@pZDpj[d\\\t-0.19\nqCr@XIJtAaEqS@\t-0.19\nHaDH@@Rfu[j@@@FEIaTwHx\t-0.2\nqCp@AIZ`LDEqS@\t-0.2\nsOx@@drm\\@@@pJqoDF\t-0.2\nRF@Q`pce@\t-0.2\nHcl@@DjYU_egX@@@@@XRfES\\LkrM@\t-0.21\nsGP`@dfyj`FBVxcP\t-0.21\nqCa@AIJtAxi`\t-0.21\nsJX@@dmU@LLl^HP\t-0.22\nQMBBHRZAaGFP\t-0.22\nsGP@LdbKU@LCEcrT\t-0.23\nHaDH@@RVU[f@@@FEXUMwH`\t-0.23\nsNxA@IrRQVjhAaXl[rL\t-0.24\nQM@HvAaOD`\t-0.24\nsOp@DjWkB@@FAakxe`\t-0.24\nsGP@DiVj`FADUxlP\t-0.25\nqCb@AJZ`LInJH\t-0.25\nHaF@@@Rfu[jjj@FGAFES]rD@\t-0.27\nsNyA@qNRRJuU@LKEc^Q`\t-0.27\nKAx@@YIDTjjh@pxHSBknPp\t-0.28\nsFx@@eJf`@@LCEcrT\t-0.28\nqC`@ISTAa`mrP\t-0.28\nHaDH@@RYWih@H@FF@U\\qLx\t-0.28\nqCa@CIKTAaaMrH\t-0.28\nqCb@AIV`LHnJX\t-0.28\nHaF@@@RYWih@H@FAIaUq@x\t-0.29\nsJQ`@ldru@OEb\t-0.3\nsOx@@eJyh@P@pLVOHp\t-0.32\nHaD@@DjWzXHB@AaTIaUrN@\t-0.32\nKA|@@@eSMUU@FCPaTw\\c@\t-0.32\nsJP`@TeZhA`inXH`\t-0.32\nHmt@pHdDdLdLddlRVFZh@H@FATwCrE@\t-0.33\nHg\\@@LddTQRdTwUAAT@@pULJfFUt~QX\t-0.33\nHiF@B@B\\ddURjjh@X]BXUMwHD\t-0.33\nsJP@DiVhAa`mqP`\t-0.33\nQMABHXaIhFBOJ@\t-0.33\nsJP`@TfZhAaaCqK@\t-0.33\nsGP@Dj}j`FFVOEJ\t-0.34\nsJX`BDdvu@OLlP\t-0.34\nHeT@pHdDdLdLddlRPsU@@@C@j[ayD`\t-0.34\nHedHXFbPRPrPzPFPfPrRRqRUUU@CBByC@\t-0.34\nqCpB@ReMPFBfx``\t-0.34\nsFp@DiTt@@A`aNEXt\t-0.34\nHaDH@@RVU[f@@@FFXw\\rBh\t-0.35\nHmtJ@@siWIEDeDZFjjj`AatEWCJ|QF@\t-0.35\nqCa@AIMTAaMsBH\t-0.35\nsJX@@eKU@LLHnKD\t-0.35\nsGP`ATf^j`FADMxe`\t-0.36\nqCp@AIj`LDIqK@\t-0.36\nsGP`ATfVj`FADUxlP\t-0.37\nqCpPXABRu@XJKbF@\t-0.37\nRFB@QADXOD`\t-0.37\nHk\\@@DjU^ukmLHH@@@A`LHUCJ{sLxp\t-0.37\nsJQ@@dju@LDmqP`\t-0.37\nRFTPDQP|`\t-0.37\nQM@HzAaGFP\t-0.37\nQMHAIdFE\\Q@\t-0.38\nsJX`DBdvu@LH^IX\t-0.38\nqCb@AIZ`LEMqA@\t-0.38\nsNp`@dfUZj@XHobu@\t-0.38\nQM``eIhFCOH@\t-0.38\nQMFI@bMP^P\t-0.38\nHaD@@DjUZxHD@AaTIaUqFx\t-0.39\nsNp@LdbJjj@XVKF|PX\t-0.39\nsJP@DjvhA`enJD\t-0.39\nHaD@@DjUZxHH@A`tHUMwHp\t-0.39\nQMHAIhFBWI@\t-0.39\nsJPhHaxIRuPCAX|`@\t-0.4\nsJPXHlQxQ{T@|rq@\t-0.4\nqCa@AILtAxe`\t-0.4\nRGPQFCBNT\t-0.41\nsJPH@DIRuPCCBKbq@\t-0.42\nsJQ`@bdvu@LH^IX\t-0.42\nsGX`BDdwMT@pfydZ\t-0.42\nsGP`@TfZj`FADQxmP\t-0.42\nQMJHBHvAxb\t-0.42\nsFp@DiTt@@AxqEcP\t-0.42\nsGP@DjUj`FFbwDZ\t-0.43\nHmvD`La@BLddlRVFUh@H@FETwBoHp\t-0.43\nsGQ@@dkMT@pvMxh`\t-0.43\nQM``fN`XL|`\t-0.43\nQMHAIhFD|R@\t-0.43\nQMDARVAaOJ@\t-0.43\nHif@@@RUe^Fh@@@XLBES]qHD\t-0.44\nsGP@Djfj`FAVMyH\t-0.44\nqC`@Qv`LDmrP\t-0.44\nqCaPQ@Hck@^HX\t-0.44\nqCa@AILtAaErX\t-0.44\nQMDARVAqUaqd\t-0.44\nQMDARVAxr\t-0.44\nHid@@DjUfaBB`@FCPaTw\\SA@\t-0.45\nqCb@AJZ`LINIX\t-0.45\nHif@@@Rge^Fh@@@X\\DES\\OHP\t-0.46\nHiD@@LdbJTjjh@XBDIaTw\\`P\t-0.46\nsJP`@dfvhA`enP`\t-0.46\nqCaPQCpcm@XQ\\Pp\t-0.47\n`IjqpFD\t-0.47\nsJQ@@dmU@LLL^JH\t-0.47\nHaD@@DjWzXHB@A`THU\\SN@\t-0.47\nKA|H@XGIJsuUPA`pPaMwHh\t-0.48\nsKP`@Ti\\Zj@XR\\Rp\t-0.48\nHeTJ@@qaeJYyzzjjj@FGPUMpsqDp\t-0.49\nsNq`AVeMmUPC@sU|RH\t-0.49\nsGX`DJdrmT@pRoEb\t-0.5\nsGQ@@drmT@pRwDZ\t-0.5\nsGQ`AjdmuT@pHboEb\t-0.5\nHaDH@@RVU[f@@@FAYS]qHH\t-0.5\nqC`@Qv`LHnJX\t-0.5\nqCb@AIZ`LDIqK@\t-0.5\nsGP@LdbMU@LCEcqB`\t-0.51\nsGP@LdbMU@LCEkq@`\t-0.51\nHmvD`La@BLddJfReUj@@@FAMpssLiP\t-0.52\nsJPH@DISuPC@bK\\a@\t-0.53\nHiD@@Dj}Yjf`A`rXU\\OH`\t-0.53\nsGY@DDeYj`FFVOEJ\t-0.53\nsJP@DjVhA`hnKD\t-0.53\nqCr@XIKTA`anJH\t-0.53\nHaD@@DjWjXHB@A`TIS\\SN@\t-0.54\nsJPhHaxISuPCAX|PP\t-0.54\nsOq@@drm\\@@@pHVOEV\t-0.54\nsGP@LdbMU@LJHl^R`\t-0.54\nsJXHL@aIVj@XZK\\PH\t-0.55\nsNx`LFdjmUPCAbHu|f@\t-0.55\nqChPK@HRYhCBCbV@\t-0.55\nsKP@Di\\Vj@XXP|Rp\t-0.55\nqC`@IVtA`aNIX\t-0.55\nsGQhHl@cIHTmPCBGbE@\t-0.55\nsNp@LdbJjj@XLQXwdX\t-0.55\nqCb@AIj`LMEnP@\t-0.55\nHeT@@LddTjPsU@@@CCdpj[ayD`\t-0.55\nsJQhHl@cIHUhAx`P\t-0.55\nsJP@DjZhAahmq@`\t-0.55\nsJXHD@aIYj@XP\\tq@\t-0.56\nsGQ@@djuT@pHVOEJ\t-0.56\nHaD@@DjUZxHH@A`TES\\qLx\t-0.57\nsGY@DDeUj`FFVOEJ\t-0.57\nqCp@AIZ`LLHnS@\t-0.57\nqCb@AIZ`LEEqC@\t-0.57\nQMHAIhFE\\Q@\t-0.57\nsJP`@TizhAaicrH\t-0.58\nHidB@@kaReYrZjjh@XMaTwCqHP\t-0.58\nqC`@IRtA`anJH\t-0.58\nqC`@IVtA``nJX\t-0.58\nRGAALXOD`\t-0.58\nqC`P@HRfhCCBKdp\t-0.59\nsNp@LddUjj@XVKE|e@\t-0.59\nsOq@@drm\\@@@prkyab\t-0.59\nsJQ@@eOU@LEMqH`\t-0.59\nHaDL@@kldRTIMUUP@pKJ[nYBD\t-0.59\nqC`@ISTA`enHP\t-0.59\nsJP`@dfvhAaEqX`\t-0.59\nqC`@Qz`LLHnS@\t-0.59\nsNp@DiWjj@XLQFodp\t-0.6\nqCa@CIKTAaaErX\t-0.6\nsNp`@dfUZj@XKGbk@\t-0.6\nqC`@IVtA`hnHX\t-0.61\nsJP@DjZhAa`cqS@\t-0.61\nsJY@LDejhAa`mqP`\t-0.61\nqCcPQX^D]hCAK\\`@\t-0.61\nsOp@DjWkB@@FEbq_IP\t-0.62\nsGP`@dfyj`FBQxmP\t-0.62\nsOq`AVeJnMUT@pvMyhf\t-0.62\nHef@B@B\\ddURUUUP@pFDpj[ayD`\t-0.62\nHcLF`HSFgP|LdfrbTHjuUUT@LNpjzUwb@H\t-0.63\nHaf@@@RiUkfzjjh@XUBDw\\SJ@\t-0.63\nHeTD@@QIgeQej@@@FATwCqLd\t-0.63\nsNp`@dfWZj@X[U|a@\t-0.63\nQM`AIhFBWI@\t-0.63\nqCb@AIV`LINIX\t-0.64\nHaF@B@BTeeVz`@@A`tXUMwH@\t-0.64\nsF|@AbeJf`@@OMEP\t-0.64\nHmtJ@@pYUJYmVnjjjh@XCBTwCJ|SB@\t-0.64\nQMHAIdGfR\t-0.64\nHiFL@BANR[gfjf@FFIa\\Ra@\t-0.65\nqC`XBHTQhaIj`LLEnR@\t-0.65\nHeTD@@QIemQej@@@FAUpsqBX\t-0.66\nHeTB@@XYRfV~njjj`AatYS\\L|QB@\t-0.66\nHmL@@DjYeVdU@@`@@FGXULLkrN@\t-0.67\nHifDAHAHeNR[e^Eh@@@XHP|rfx\t-0.67\nsGP`@dfuj`FFqoH`\t-0.67\nsJQhHlOAJmj@XP|Pp\t-0.67\nsJQ@@dju@LLl^R@\t-0.67\nHmtJ@@siWIEEMDZFjjj`A`LHU\\LkqLX\t-0.67\nsGQ`@ZdruT@pHbOEj\t-0.68\nsJX@@dkU@LBHmrD\t-0.68\nHidH@@RYm^Eh@@@XTUMp|c@\t-0.68\nsGX`BDdwMT@pRwDZ\t-0.68\nHaDL@@sdigZZjj`A`TYW\\qBX\t-0.69\nqCb@AJZPLINIX\t-0.69\nqC`HBHtPdlpFBFxh`\t-0.69\nsJY@DDejhA`l^HP\t-0.69\nsGQhHlOAJoZhA`c^HX\t-0.69\nHmtJ@@siUJYn~ajjjh@XSBXS\\LkrJ@\t-0.7\nsGPYHlQxGdjmj`FDwIP\t-0.7\nqCbPHABSS@^HX\t-0.7\nHifDAHAHeNR[e^Eh@@@XHU\\qnD\t-0.71\nHid@`@BDiyWaj@@@FC@UMp|RD@\t-0.71\nHid@@DjUfaBB`@FGPfESCrN@\t-0.71\nqCh@CIKTA`anJH\t-0.71\nHidD@@QInUxV`@@AaRDwCrJ@\t-0.71\nqC`P@HRVhCAB\\Rp\t-0.72\nsGY@DDfUjPFBVxcP\t-0.72\nHidB@@qarQQZFnjjj@FCQaMp|QJ@\t-0.72\nHif@@@RYm^Fh@@@X]FES\\OH@\t-0.72\nHidH@@RUe^Eh@@@XTaTw\\RA@\t-0.72\nHidD@@QInUxV`@@A`QMp|QJ@\t-0.72\nsGP`@dfuj`FFVOIP\t-0.72\n`ImAHFD\t-0.72\nHeTL`HS@BLddlRPrm@@@CBlinGdR\t-0.74\nqCb@AJZ`LEErX\t-0.74\nsJQ@@dju@LDcqS@\t-0.74\n`Ld`^P\t-0.74\nRFTQXQ`|R@\t-0.75\nQMhHRZAaGFP\t-0.75\nHaDH@@RYe[hB@@FF@S\\sJx\t-0.75\nsJQ@@eOU@LDmqP`\t-0.75\nsGP`ATeUjPFBVxhP\t-0.75\nHet@@DjYUX^d@@@@AarXS\\L|b`\t-0.76\nHeV@B@B\\dbLRPsU@@@C@XSJ[agd@\t-0.76\nsJP`@TizhA`l^JH\t-0.76\nqC`@Qz`LEEqC@\t-0.76\nsNqDHGBnFRRJuU@LBlWrT\t-0.77\nsJQ@@dlu@LLl^R@\t-0.78\nKA|X@DBLdvluS@FBHWDs`\t-0.78\nqCbPP^BRu@XI[d@\t-0.78\nHid@@DjU^nBAH@FGPfES]rA@\t-0.78\nsOpHAbILkW@@@LJEc^Q`\t-0.78\nqCa@CIKTA`aNIX\t-0.78\nQMDARZA`cr`\t-0.79\nHeVH@IAIe]ZZ@Bh@FG@fEWSrA@\t-0.79\nHidH@@Rge^Fh@@@XLaTwCrH@\t-0.79\nKAxP@Uddbcjf`C@dpfyG@\t-0.79\nRFD@QECBNT\t-0.79\nHeTB@@XYrQQJHuuUUT@LNcB[agbIP\t-0.79\nqCcPQXAD]XCqC@\t-0.79\nsGP`@dfUj`FDwDZ\t-0.79\nHeV@@@rRJEK\\MP@P@LFSBinyD`\t-0.8\nHaDL@@sdigzZjj`A`TXw\\qBh\t-0.81\nsGX@@djuT@phbqyJ\t-0.81\nsGP@Djfj`FAbqyJ\t-0.81\nHaD@@DjYvxH`@A`RDw\\SJ@\t-0.81\nHeTB@@pYRf[vnjjj`AatIc\\L|Pj@\t-0.82\nHidB@@saRf]ZZjjh@XMFTwCqDH\t-0.82\nqCr@PIKLAaAqK@\t-0.82\nKAx@@YIDTfjh@pZDpj{dL\t-0.82\nqCb@AIf`LHnS@\t-0.82\nHeTJ@@qaeJYyzzjjj@F@qaTwCOHP\t-0.83\nHetD@@QIemRhYZ`@`@XDwCOHH\t-0.83\nsJP@DkVhAahmq@`\t-0.83\nsNp`@dfvZj@XXu|Rp\t-0.83\nqCc@AYIf`ODl\t-0.83\nQMBBHRZA`erP\t-0.83\nHklF@@pUt|dTTRbQjZjjjh@XKBESCJz_Hx\t-0.84\nsJPXHlQxQ{T@pRwHP\t-0.84\nHaDH@@RVU[j@@@FEQaTwDC`\t-0.85\nsFp@DjfJjhAaicqJ`\t-0.85\nQMhHchGcH\t-0.85\nKA|X@QS\\eUkUU@FGPfES\\\t-0.85\nsGPXHlQxIU[U@LEcrT\t-0.85\n`IhapFD\t-0.85\nQMFI@bM`^H`\t-0.85\nHmtJ@@pYUJYmVnjjjh@XSBYS\\LkrB@\t-0.86\nHidD@@QInUxV`@@A`RDp|Rn@\t-0.86\nHiDH@@RUUVjj@FGIaTwCrH@\t-0.86\nHaF@@@RYe[hB@@FAXUMq@x\t-0.86\nHeTH@@RUYTYY`@@AarYS\\L|b@\t-0.86\nsOp`@tieujj`FAfkxdP\t-0.86\nsGQ@HeUuT@pLVOIP\t-0.86\nsJQ@@dmU@LBIcrH\t-0.86\nsJY@BDeVhA`d^JX\t-0.86\nHaDH@@RVU[f@@@FFYS\\rBx\t-0.86\nsNp`@dfuZj@XEXwdX\t-0.87\nQM@HzA`sr@\t-0.87\nHaDH@@RVU[j@@@FAAc]sHJ`\t-0.88\nsGX`LJdmuT@phfMyD\t-0.88\nsGX@@eJuT@pHbwDZ\t-0.88\nj`i@`@@HRYYUg\\eIF]yjB@@B@@F@fBdkQkNx`g`\t-0.89\nHet@@DjfehZfjjj`AarES\\L|c@\t-0.89\nHeTD@@EIYWVy`@h@FEXUMOH`\t-0.89\nsGPhHaxISuU@LMc^HH\t-0.89\nsJXHD@aIYj@XXX|d@\t-0.89\nsJP`@deVhAqIXPVOI@\t-0.89\nsJP`@deVhA`l^R@\t-0.89\nqCb@AJZ`LEMrH\t-0.89\nsFp`ATiWFjhAal[qQ@\t-0.9\nsGQ@@dsmT@prqyJ\t-0.9\nQMA@HPaIXFD\\Y@\t-0.9\nsNphHaxIRkUT@pNM_H@\t-0.9\nsOx@@drm]UT@p\\VM_H@\t-0.9\nHiFD@BADf{Ujj`A`rXUMwHD\t-0.91\nqCb@AIY`LEEqC@\t-0.91\nsJQHH@aJuj@XI[bA@\t-0.91\nHmtH@HrRQVIJUjh@@@X\\fDwCOHT\t-0.92\nsJQhHlOBOZ`FBVyB\t-0.92\nsJQ@IGuPCCQ[dH\t-0.92\nqC`P@HRVhCAQ\\Pp\t-0.92\nHidB@@qarQQZFnjjj@FEPS\\OLSJ@\t-0.92\nsJP@DjZhAa`mqP`\t-0.92\nHcND@BADf{YU]Zj@@@F@iaUproHt\t-0.93\nHaDD@@yIe^f`@`@XHe\\HLK`\t-0.93\nsGP@LdbMU@LBHcqZ`\t-0.93\nQM@HzA`erP\t-0.93\nsOx@@drm\\@@@ppUylV\t-0.95\nsJX@@dkU@LLEnJD\t-0.95\nHaDH@@Rfu[j@@@FEIaUwHX\t-0.96\nsJY@BDizhAaicrH\t-0.96\nQMpRRWhuAyP\t-0.96\nQMACD\\QIhFBOJ@\t-0.96\nsJX`LDdvu@OLlP\t-0.96\nsFp`ATiWFjhA`m^ZH`\t-0.96\nsGP`@dfui`FBqxeP\t-0.97\nKAxYDPf@DYvRRUIZj@LLJfyG@\t-0.98\nsOpHAVILkW@@@LJEc^Q`\t-0.98\nsFx@@eJfuU@LJHl^R`\t-0.98\nqCa@CIKLA`anJH\t-0.98\nsJP`@TizhAahmrD\t-0.98\nsKQ@@eKcUPCAX|TP\t-0.98\nJoBD@@IS\\rjzv[uP@@@@@XKS\\Lkiv\x7FDa@\t-0.98\nsNy@DDf]Zj@XYZ|QX\t-0.99\nRFTPxQP|`\t-0.99\nqCp@AI^PODl\t-0.99\nHcLF@@siWTify^ajjjj@FBpaTwCJ{rL@\t-0.99\nqCpB@SGj@ptVy@\t-0.99\nHaD@@DjUZxHH@AaTHS]qLh\t-1\nKAx@@IVjmUPAapPfES\\c`\t-1\nqC`@IWtAaEqS@\t-1\nHaD@`@BDimVz`@@A`pXUMwHP\t-1\nsJPhHaxIVmPCAX|`@\t-1\nsOx@@drm\\@@@prqyaV\t-1.01\nqCa@AIJtAaMrP\t-1.01\nsJPLIHJPtaGuPCrD\t-1.01\nsNy`BDtfuZi@XYX|e@\t-1.02\nRF`dS]ECr@\t-1.02\nHaD@@DjUZxHD@A`tIaUwHX\t-1.02\nqCb@AIj`LLEnR@\t-1.02\nsOp@DjWkB@@FAfMxdp\t-1.03\nqCr@XIKTAahmr@\t-1.03\nKAxY@PfAxIUjmUPA`QTw\\`@\t-1.03\nsJP@DkVhAa`mqP`\t-1.03\nRFTQxQ`pkd@\t-1.03\nsNp`@deUZj@X[F|TX\t-1.04\nqC`@IStAxe`\t-1.04\nsOq`AVeJnMUT@pNM_ED\t-1.04\nsJQhHl@bOV`FDwHP\t-1.04\nHmvLAHAEbT{Hihdh^Eh@I@AaaTODzP\t-1.05\nHmL@@DjYUVGi@@@`@FGIaUpsrE@\t-1.05\nHev@@@RfUWJzZABH@FE@aMwDFP\t-1.05\nHiF@@@rRHiJjj`AatIaTw\\`P\t-1.05\nHaD@@DjUZzjj`AapPaTw\\c@\t-1.05\nHaFH@DAIYUnZjh@XEaTwDc`\t-1.05\nHaFH@NAIe^f`@`@XTfEW\\`@\t-1.05\nHiFD@BADf{Yjj`A`rYS\\OHH\t-1.05\nsJPXhlQx[ct^u@LH`\t-1.05\nsFp`@TivJjhAahmrT\t-1.05\nsGQHL@aJYihA``nHt\t-1.05\nsJU@DPdru@LDcrX\t-1.05\nsJQ@@dju@LEMqH`\t-1.05\nQMABlZqIhFBOJ@\t-1.05\nRFHEFCqH\t-1.05\nHaDH@@RVU[j@@@FAAeMsHK`\t-1.05\nKA|X@DBLdvluS@FFIa\\c`\t-1.05\nqCbPXQBRt`XP\\TP\t-1.05\nqC`@ISTA`aNIX\t-1.05\nJoBD@@ILrkNx{[mA@@@@@XJU\\Lkiv\x7FHp\t-1.06\nHeTD@@QImeQej@@@FCIeMp|bP\t-1.06\nHeTD@@QIemQej@@@FEES\\OHd\t-1.06\nHidH@@RYm^Eh@@@XUaTw\\`P\t-1.06\nsJT@@TizhA`QL^Q@\t-1.06\nQMBCpRZAaOD`\t-1.06\nRGPQECr`\t-1.06\nqCbHXRBdDfj@|Tp\t-1.06\nHaDL@@[die|jjj`AaTYS]qDH\t-1.06\nqCr@XIJtAaMqQ@\t-1.06\nQMFIOBM`XSr@\t-1.06\njhi@`@@^Rfuue]Yrsj@B`@h@@XJQ`eFJtZp^PD\t-1.07\nJoBD@@ISZzrk][t@E@@@@XRfESKiwqA\\\t-1.07\nHiDNPhSB[aCpkpsb{nGlddqdZih@P\t-1.07\nHiDD`HPOAJUfjjh@XMaTwCr@@\t-1.07\nsOp@DjWkB@@FAbqxjp\t-1.07\nQM@HvAaWDP\t-1.07\nsJXA@IRej`FAbqy@\t-1.07\nsGP`@dfuj`FBQxmP\t-1.07\nHmuD`IVD@HrRFIKKaV@BP@XDUMwDAP\t-1.08\nsKP@H~Jj`FBqxh`\t-1.08\nsGX`DJdjmT@pRoMLP\t-1.08\nsKQ@@eKcUPCB[fbH\t-1.09\nsJY@LDefhA`enJD\t-1.09\nsGP`@dfuj`FBqxeP\t-1.09\nsJXHB@aIVj@XZH|Pp\t-1.1\nHeTD@@QInYQehB@@FEISCOHx\t-1.1\nHaE@@@yIe^f`@`@XXfEs@k`\t-1.1\nHid@@LdbbQxXF@@A`RTw\\sBD\t-1.1\nQMhXNiRZAxr\t-1.1\nsJP`@dfvhAaMqH`\t-1.1\nKAx@@IRzmUPAapPaTw\\c@\t-1.11\nsNx`BDdw[UPCCXobU@\t-1.11\nsFp`@dfTujhA`m^P`\t-1.11\nsJQ`@bdvu@LHnKD\t-1.11\nsJQ@@dkU@LMEnHD\t-1.11\nsJQ@@eKU@LEMqH`\t-1.11\nsGXA@IRiZj@XFHwbF@\t-1.11\n`Ic@hFD\t-1.13\nHmtJ@@XYUJYY^njjjh@XSFES\\LkrD@\t-1.13\nsGP`@dfUjPFDwDZ\t-1.13\nsJQHL@aJVf@XHKba@\t-1.14\nQMB@HRZAaGFP\t-1.14\n`Ig`hFD\t-1.14\nHif@@@RYWZZ@BP@XTfEW\\PA@\t-1.14\nsNp`@teUZi@XYX|Th\t-1.14\nsGQ`@jdvmR@pbxlP\t-1.14\nsGPP@cTfyi`FBU@\t-1.14\nHidB@@kaReYrZjjh@XUaTp|rDx\t-1.14\nqC`@IRtAaaErX\t-1.15\nsNx@@eLuUPCAqXu|`@\t-1.15\nsGP`@df]j`FBMyL\t-1.15\nHcMB@hdDWXeNf]yInU^xV`@f@A`aCqJX\t-1.16\nHeTH@@ReyTYj`@@A`tYS\\ODRP\t-1.16\nHaE@@@aJyUnh@@@XLFES]rH@\t-1.16\nHidD@@yJ[VXZ@H@A`RXp|Pn@\t-1.16\nHaDD@@YIeZn`B@@XXf]s@i`\t-1.16\nKA|@@AddQRjj`CAhSBinQp\t-1.16\nsNp@DkUZj@XLKFod`\t-1.16\nsGQ@@eJuR@ptuxdP\t-1.16\nsGY@JDiVj`FAbuyB\t-1.16\nsJQ@@dmU@LBEcrP\t-1.16\nsFy@LDigVfXAydZ\t-1.16\nQMJAhHzAxr\t-1.16\nsGQ@@eNuT@pLqoH`\t-1.16\nsGPXhlQx[crUVuPCrT\t-1.16\nHaDH@@Rfu[j@@@FFXw\\qBh\t-1.16\nJoBbPCCk`DISJj{nTLuUUSSP@XZDIaTwBi|bp\t-1.17\nHk]H`FGPBDieU]rafjjjZ`A`hPfES\\J|`p\t-1.17\nHmMH`FEPBLdTRRQrafjjih@XBDIaTp|c`\t-1.17\nHcmH`FGPBDieU_JFZjjih@XRDIaTwCrE@\t-1.17\nHeuH`FzPBDiewrnFjjf`AapPfTw\\``\t-1.17\nHiUH`JXPBDiU_B[jjih@XLDXUMrD@\t-1.17\nsFp@DiTujhA`Pm^JD\t-1.17\nsGP@DiUj`FEDVOIP\t-1.17\nsGQ`@jdsmT@pfxcP\t-1.17\nsGQ`@bdwML@|Rh\t-1.17\nsGX`LDdwMT@|rM@\t-1.17\nqC`@IVtAaaMrH\t-1.18\nHidD@@QInUxV`@@AaRES]rA@\t-1.18\nHeTD@@eIYe^E`HD@FAEWCqHX\t-1.18\nqCb@AIj`LLHnS@\t-1.18\nHidH@@RVY^E`H@@XDU\\ODa`\t-1.18\nQM@HvA`erP\t-1.18\nsNqDHG@nFRQFUU@LBmWq@`\t-1.18\nqCqAPJRnRYhCrX\t-1.18\nsNp@DkUZj@XLQXwdX\t-1.19\nqCp@AIZPLDEqS@\t-1.19\nsGQLKHaQFbLddmU@LCEcrT\t-1.19\nKAxH@@bSZkUT@XTfES\\c`\t-1.19\nsJP`@dfvdAaMqH`\t-1.19\nRGPp]SFCr`\t-1.2\nHmLH@@RYUUiiV@@@@@X\\BEproHp\t-1.21\nHiV@@@RfU|kahDB@AaPHS]qJD\t-1.21\nqCbPXQBRu@XHSbV@\t-1.21\nHcN@@@rRJIIGRmPTA@@pELJfxYyF`\t-1.21\nHeTD@@eIYWVy`@d@FAXUMqHD\t-1.21\nQMB`HIchFCOH@\t-1.21\nHaDH@@RVU[f@@@FAXU]qHX\t-1.21\nQM@H~Axr\t-1.21\nQMHAIhFCOH@\t-1.21\nQM@HvA`cr`\t-1.22\nqCr@XIKTAaaMrH\t-1.22\nHg|H@@RYfUWd}nh@@@@@XJUMprng_DB@\t-1.22\nHg^J@DCiV|bbtTVaTzuUUUP@pULJnE]N~Pp\t-1.23\nHcNB@DCiUIgf^gVjjj`AarXU\\J|Qm@\t-1.23\nHidD@@QInUxV`@@AabEwLia@\t-1.23\nHaDH@@RYVih@H@FFAW\\qLX\t-1.23\nsOpHAHILkW@@@LBlWrT\t-1.23\nsGT@ATivj`FEDqoH`\t-1.23\nqCaPQCpRmhCB[d@\t-1.23\nsOp@DjWkB@@FFbwLZp\t-1.24\nHiDD@@QImUZjh@XLfES]rA@\t-1.24\nQMJH|HvAxb\t-1.24\nsJP`@dfVhAaCrX\t-1.24\nHklNaHSBySCpsb{IILUDhYujjjj@FCTpki|bP\t-1.25\nHcMB@hDDWXeNF]yInUnzV`BF@AaaUOHx\t-1.25\nHg^L@BAAR[eVuNvji@@@FDiaUJz]|a`\t-1.25\nHmtD@@eJ[WUnh@J`@XTfES\\PU@\t-1.25\nHmtD@@QIn[VUZh@@@X\\fMproHh\t-1.25\nHidD@@QInUxV`@@A`RDw\\Ra@\t-1.25\nsNp`@tfUZi@XI[bM@\t-1.25\nQOHBNZ`XUrP\t-1.25\nsNp`@dfWZj@X[F|c@\t-1.25\nsNpXhlQx[cvRRXmU@LI^Q`\t-1.25\nsOx@@drm\\@@@pHVOEV\t-1.25\nHeVDAHAHeNR[e_aZ@B@A`QTw\\bP\t-1.25\nsJX@@dmU@LCEcr@\t-1.26\nqCbPPABUm@XQ\\Pp\t-1.26\nsJP@DiVhAaaEqX`\t-1.26\nsGX`DJdjmT@prqxiP\t-1.27\nsJP@H~j@XZK\\a@\t-1.27\nHeV@B@BTiVuFZh@@@XCBES\\L|`@\t-1.28\nHidH@@Rge^Fh@@@XTaTw\\RA@\t-1.28\nsNx`LDdvkUPCCXwbS@\t-1.28\nRGDQxQ`|R@\t-1.28\nHaF@@@Rfu[j@@@FCAaTw\\a@\t-1.28\nsJP@H~j@XJKbq@\t-1.28\nHmN@@@rRJIKEaxZjjj`AaLIaMproHh\t-1.29\nKA|I@Dw@DIJwUTpAaTIa]r@@\t-1.29\nsFx@@eLzuU@LJHm^P`\t-1.29\nqCr@PIKTA`anJH\t-1.29\nsJQ@@dru@LDmrD\t-1.29\nsNq`@jdvsTpCB[bS@\t-1.3\nRGAALXLHyP\t-1.3\nHaD@@DjWZXHB@A`TXw\\QB@\t-1.3\nsNp`@dfUZj@XXu|f@\t-1.31\nHeTD@@QImeQej@@@FCIS\\L|c@\t-1.31\nsJQ@@eOT`LML^Q@\t-1.32\nHidD@@QInUxV`@@A`REp|Rf@\t-1.32\nsJPYHlQxGh}j@XQ\\f@\t-1.32\nqCb@AIZPLMEnP@\t-1.32\nsOp@DjWkB@@FEbqoHp\t-1.32\nj`aAb@FBdAprRQUJYQIN}UUM@@@@peAFBTtZsnP|\t-1.33\nHg^DIItxdDdLdKbId~rRRqISQBmT@Pt@CCJZ~PH\t-1.33\njhip@@@P\\eKLjo}HvkM@@@EP@@pTRcARUjw`|ap\t-1.33\nHo}DHL^D@HVPvPNPrRRqQJQN[V``jH@FAXporI@\t-1.33\nHo}DHLzD@HNPnP^PrRRqQ[JRUV``Jh@FAXwCrI@\t-1.33\nj`qa@@H@RVYUg^Qg^f``@@@@FF`TXJRmFl{wHD@\t-1.33\nj`aP`@N^`sIIEYdhdmYuUMP@P@CBRLDxIVcVyCp\t-1.33\nHaD@D@|HBDBLBBBJ|FBNBLddqfTuSP@pJDqnHW@\t-1.33\njdi@H@@HMYw`qR[fYf[iZZ@hafX@A`QEoQxbV`\t-1.33\nj`aa`@APYsIIEYdeDd{uUML@@@C@RLDtZso\\aH\t-1.33\nJgRF@EM^RRJJHjkNHRd]gZijjfj`@pyLKae^PX\t-1.33\nJoB@QGTG]ddRtJbReL]a@T@D@@XKBYSRiv\x7FHx\t-1.33\nJoBBQBzG`DiSJkvoS[tDDUTP@XZfES\\Lg[|`@\t-1.33\nj`a``@APYddbltrbR]zjfj@@@AaiFB\\EKQkN|\t-1.33\nJoBe@BX@j[yEEDeEeJw[[USSUT@F@xU]Iv\x7FHt\t-1.33\nHknDqItxdDdLdId~rRRqISPUj`BF@AaeLoHD\t-1.33\nHg]HpMLhdDdLdLddjbRrTkUP@T`@pinF]yE`\t-1.33\nJcBB@E[ddbTQJqbxazQfjZjZj@CAdpfx^IB`\t-1.33\nJcBB@EMddbbbJsbDiGYvjZjjj@CCdpnFUyF`\t-1.33\nHo}BbFvDqpBL{IIJeDedeuZjjjh@XRU\\Lj]n\t-1.33\nJoC@QDAxAJTsMjnmf}T@@@@@FFeS\\Lkiv\x7FH@\t-1.33\nHg|@b@|@eJYUg_eNzB@@@@A`jXS\\Lki|PK@\t-1.33\nHkmHpMLhdDdLdLddjbRreZj@B`@XTwCN|`p\t-1.33\nHg|DbEtO@IRfUWmzSn``bjH@XJfES\\Lg_H@\t-1.33\nKA|PPPrPFPAPGPFRRJrjf@NBQ@q@I@y@yD@\t-1.33\nJoBb@EFNyIHiTlhepv}USUMT@FGPfDtwrG@\t-1.33\nHklHHCbPRPrPvHrRRqISPUj`BI@A`ULn|`P\t-1.33\nHg\\L`HS@\\LddRtRRIwUTE@@@pffxYWSodX\t-1.33\nJoC`@@PJUrnljwV{@AP@@@FBxULJz]orH@\t-1.33\nHklDpMNIAICICIIKDeMAVj@HX@FATrgrA@\t-1.33\nHcL@HHdDdLdMqLddlRTHsU@AP@LJiiW^PH\t-1.33\nJoBd@AonRRJUKJICMoU@ASP`AarXUMp|bp\t-1.33\nHcL@HHdDdLdMbLddlRTHsU@AP@LJiiW^PH\t-1.33\nHklDpJZIAICICIIKLhdmNjZ@@@FACJ{rC@\t-1.33\nHg\\D`HlGCIIEUEDeiuU@PP@LISBhYWSyE`\t-1.33\nHo\x7FD@Nux[IIEYdeDk^jfjeh@XBfEtg[|`P\t-1.33\nHg\\HpJbPRPrPrRRsQIYKmTp@T@CBnFUOdV\t-1.33\nHeT@H@\\HbDbLbLddlRPsU@@@CChSJ[ayD`\t-1.33\nHo~DANW^g^rRQRqJJJSj``Xh@FEIaV\x7FDXp\t-1.33\nHmt@HHdDdLdEbLddlRVFZh@H@FFTr|Sa@\t-1.33\nJoB`@@Ndrnlktqvtlp@T@A`hIaUJz[|c`\t-1.33\nHmt@HHdDdLdIqLddlRTEZh@`@FATtkrA@\t-1.33\nHo~DB@XPgIIETihdk^jjX@@@XKBXUKivx\t-1.33\nHklD`HPGCIHdbhdmNjj@@@FDxULLki|`@\t-1.33\nHo|F@@RUm|bfbbTRlGV``Xf@AabJ\x7FLkm@\t-1.33\nHo~D@NalddUfRbRmzjZ`@@AaJXWBng_H\\\t-1.33\nHcL@PH\\JqLddT\\RR{UT@@@LISBkae]yD@\t-1.33\nHe\\H@JrRQJHxq\\P}HsUMUUP@pYLInGbQH\t-1.33\nHmtFaHSBEP|LxnrRSFJJUZjjh@XYSCqNd\t-1.33\nHklHhCBPJPZPFPVPRYf{\x7Fi`bHj@AaA|cP\t-1.33\nHg^HB@xIrRQRpqIG]UU@@@C@xSBine]Np\t-1.33\nHmTLpHZP\\J\\A\\LddUbtjjj`AarXU\\J|bP\t-1.33\nHiDLpJXT`L`B`LddTZjfd@\\XbAb@RArN@\t-1.33\nJoBF@@IrSJzljUV{UUP@P@FDxULng[|`P\t-1.33\nHedLHJ[h|DbLbBbLddTcuTuP@piLHYyG@\t-1.33\nHmtLbHS@|@gIIEXdiVj`@@AapDwCJ|QL@\t-1.33\nHmtBaHSBCpsb{IILXdiUj`@@A`S\\L|aP\t-1.33\nHmTBHJXUbPRPrPxJrRRsIJjZi@FD]rI@\t-1.33\nHcLL`HS@\\LddQbRr{UPP@@LNinFUwbI`\t-1.33\nHcLHpMbPRPrPrRRqIPcMT@D`@pJfe^PH\t-1.33\nHmTBHJXUbPRPrPytrRRsIJjZi@FD]rI@\t-1.33\nHg\\L@HSLddRtRRIwUTE@@@pffxYWSodX\t-1.33\nHeT@p@BJBFBLdTTRHsPT@@CC`SBxYxeL\t-1.33\nHklH`HAprRQUQQKSjj@`@A`JXUCNgrE@\t-1.33\nHg^L@NakrRQVZJIZ]UMUS@CCdpagSyB`\t-1.33\nsOpNAxPHPQ``aE|FDYIIcjuS@LCEgqF`\t-1.33\nHcLHbMCpBTieV_ehHJH@FBiaTwCJ{r@@\t-1.33\nJoBB@@Ndrnlktqvtlp@T@AaJXURnf\x7FHx\t-1.33\nHmtHPHApIprRHjIJUjh@@@XBBXwCJ|``\t-1.33\nHcvJ`FaLWPBLddjRbRuUU@C@\\JfFUwd\\\t-1.33\nHk^@B@BTjU^ukmLHH@@@A`lHU\\Lki|c@\t-1.33\nHk^D@D@\\bbbbRQImMj`XB@AaU\\ngrI@\t-1.33\nHg\\L@NN|ddTlVVdkUA@S@@pyLInV~PH\t-1.33\nHmTDHJVIAICi@YCIICELZijd@XPwDJP\t-1.33\nHmv@pIbPRPrPrRRqIPUj`B@@XESRoHD\t-1.33\nHiD@XHdDdLdJdNdAdLddltjjh@XPWHX\t-1.33\nHmv@pEbPRPrPrRRqIXYj`@`@XES\\OHT\t-1.33\nHmt@P@\\HbLddqbReZj@@@FGPc\\LkqLH\t-1.33\nHk^D@D@\\bbbbRQImMj`XB@A`WKi|Ri@\t-1.33\nHmv@pIbPRPrPrRRqIPUj`B@@XESCOHT\t-1.33\nHmv@pIbPRPrPrRRqIPUj`B@@XEProHX\t-1.33\nHk^H@IOIIEJeLaWSj`BFH@XLfESCrM@\t-1.33\nHcLH`HAprRQUQIKmUP@@@pELJne]y@`\t-1.33\nHg]L@NvFOIIEYhddnuTuTt@LJSBF~QH\t-1.33\nHcN@bACpBTieU{ihHHh@FDiaTwRn|`@\t-1.33\nHmt@P@\\HqLddqbReZj@@@F@qaMproHP\t-1.33\nHo|H@KrRQRiQHpYj`@jX@FCIaKk|Rf@\t-1.33\nHedHHNbPRPrPYprRRiQUUU@C@bhYyC@\t-1.33\nHg~D@DAdfygUQd{ZB@@@@FCUrz]|QF@\t-1.33\nHmtBbHSB@HKlddNbReUj@@@FAMpsrE@\t-1.33\nHmVBcNaLHOCNKngIILTiFjjh@XUSCJ`\t-1.33\nHmtB`HSBCprRSFIJUZh@@@XTwCJ|SB@\t-1.33\nHet@b@|@gIEEDcSCMAPD@C@Tpj[agd@\t-1.33\nHiDDHJZHaHcH`oCIIKLjij@FEPf\\OHH\t-1.33\nHctBPHZUApGprRQVYSUTtt@LJSB{^PH\t-1.33\nHid@p@bH\\DbDfyWaj@@@FG@aTwCrH@\t-1.33\nHmLB@HSerRQHiJfFZjjj`A`vESBoHd\t-1.33\nHklD@NOIIEKEeiVjB@d@FGIaMr{rA@\t-1.33\nHcLL@HSLddQbRr{UPP@@LNinFUwbI`\t-1.33\nHo|F@@Q]mtfyfYZSZBHXX@FFIk|siL\t-1.33\nHo|F@@SSmtfyVV{iZ@HfX@FFH[|pjd\t-1.33\nHk\\@@DjU^ukmNeZ@B@AaLHUCJz_Ds`\t-1.33\nHklH@ErRQRqJJ]j`Hb@AarXSKi|PY@\t-1.33\nHklH@IrRQRiPhUj`BJ@AarXUMI|P]@\t-1.33\nHmTBHJXUbPRPrPzlrRRsIJjZi@Gb]H\t-1.33\nHgnD@NalddUfbreUMUT@LASBe]N~PH\t-1.33\nHaL@@DjYtkBqjynjjjj@FCABDw\\SJ@\t-1.33\nHklD@NwIIEKEeiVjB@h@FGIaMrgrA@\t-1.33\nHknBAHAEvISdfyW[xV`@f`@XDUMwHL\t-1.33\nHkL@bLhLyJgnYzjjj`AaXPfES\\Lki`\t-1.33\nHeTL`HS@|LdbLRPsU@@@CA`inF^Hf@\t-1.33\nHeTDbHPO@IrRHqICMT@@@LFrfxYx`H\t-1.33\nHid@p@qH|DqDfyWaj@@@FG@aTwCrH@\t-1.33\nHcM@@@wIHhdd]JuAPD@C@Tpj[agdZ\t-1.33\nHko@@@`Tke]e[f@Bj`@XCaTtki|b@\t-1.33\nHeTDPHP@bYCIHXdmpk@A@@pHj[nP@\t-1.33\nHiDLHJXXdDdLdNBlddlrjfh@XQwHD\t-1.33\nHctDPJEYCYCIIEFiiUMMP@pILInQH\t-1.33\nHmTLRHS@BN\\L{IIJdiEjjh@XLULLj\t-1.33\nHkND@NalddUfRbjijj@F@ia]Jz_HD\t-1.33\nHiDLHJXXdDdLdN]Lddlrjfh@XQwHD\t-1.33\nHeT@P@bH\\Df^UFZh@@@X\\BTwCODc@\t-1.33\nHklD@@qJYVu}NjhH@@FDiS\\Lki|b@\t-1.33\nHkLB@NFUrRQRqSFjifh@XMBXVgrE@\t-1.33\nHmtB@HRUrRQHiJfjjjh@XMaTtkqND\t-1.33\nHiDLpJXXbDbLbLddlrjfd@XYBYrN@\t-1.33\nHmt@`NqLddTlVeZhH@@FCIaMr|PY@\t-1.33\nHmt@`EqLddTjVFZh@H@FCIaTr|Sa@\t-1.33\nHmVLB@ZUB\\ddUfTjji`AatIaUr|a`\t-1.33\nHmVB`FaLT@cIIJiDUjjd@XUaMp|bP\t-1.33\nHiFDHNihBDdLdBdLddTgjeh@XQwHD\t-1.33\nHiDDpJzHaHcHcIIJeJjf@FAPfErA@\t-1.33\nHmv@`JVYrRQRiHYj`@`@XLfDtkrN@\t-1.33\nHefDpFFXdDdLdLddjfeUTp@prfgdD\t-1.33\nHmT@bLhLyJgnVjjj@FBaBXU\\LkrF@\t-1.33\nHedLpJFXdDdLdLddlReUTp@pSiyA@\t-1.33\nHk\\D@@iIYgU^GSXH@@@@XLSRngqHh\t-1.33\nHctB`HZUGprRQVYSUTtt@LJSB{^PH\t-1.33\nHmTH`HAprRIIPjjje@FDiaTwCJ|`@\t-1.33\nHcLD@NwIIEKEeJuPPD@CCdpfx]yB`\t-1.33\nKAxXPTwQxIDYDEDIUMUSPAabXWD[`\t-1.33\nHedLPH[`\\J|LddUbuUUP@pYLJagd\\\t-1.33\nHmTLPHeP\\JBDjeUjjjT@XLfDwCrJ@\t-1.33\nHcM@@@wIHhdd]JuAPD@CBTpj[agP\t-1.33\nHcLH@NrRQRqYRmTDA@@pyLInW^PH\t-1.33\nHkLFb@RfgRhByIgeYfjjY`A`VDi`\t-1.33\nHctB`HY]AprRQVYJUTwL@LLSByF`\t-1.33\nHid@P@BJBDie_ahH@@FCAaMp|QJ@\t-1.33\nHeT@`@|LdbLRPsU@@@CC`bfxYxbX\t-1.33\nHmtD`AdOAJYUgedHF@@XLfDwKq@d\t-1.33\nHeTD`HDGCIIEXituTuP@piLKiy@`\t-1.33\nHiDLHJXXdDdLdNkLddlrjfh@^Ip`\t-1.33\nHcvL@NamrRQVYQUTuR@LFSBxUyD`\t-1.33\nHcvB@JFUwIIEJhiUULp@pZDpjgdZ\t-1.33\nHeTH`HAprRSPiCMT@@@LNpj[agdP\t-1.33\nHmtH`HApRi[WeZhH@@F@xUMproH@\t-1.33\nHetL@HR\\ddRJULLuUUT@LBpj[b\\H\t-1.33\nHefDpFjXdDdLdLddltUTuH@p`^Qp\t-1.33\nHedDjAeICI@iBiAiB^rRQR^UUS@B\t-1.33\nHcND@JADfUyU]Zj@@@FGEWCJ{rL@\t-1.33\nHmTH`HAprRQIIVjji@F@iaMproHh\t-1.33\nHmVH`DTGCIIEHizjjd@XMaTwSrA@\t-1.33\nHiDLPHS@BB\\LdaTRVjh@XES\\OD@`\t-1.33\nHedLPHZP\\A|LddUfUUMH@pILKnPH\t-1.33\nHmw@@@`Tke]Vy`@j@A`vESRoD`P\t-1.33\nHiFHb@E``IrRQUJjjPA`tIaTwHx\t-1.33\nHedJb@RfDj@nRYyyjjX@XYaSrF@\t-1.33\nHcuB@NFFW\\ddUfReULs@CCDpnQh\t-1.33\nHmv@@JrRQRiHYj`@`@XLfDtkrN@\t-1.33\nHmtD@@qJY{VUjh@@@X\\eMproDc@\t-1.33\nHctL@NF\\ddTlVuUSM@CAhSBW^Pp\t-1.33\nHmtD@@yJUe^Uj``@@XCATwCJ|a@\t-1.33\nHiDDpJzIAICICIIJeJjf@FDErA@\t-1.33\nHcLB@@RUR[fVQuhHF@@XHb|JnGP\t-1.33\nHcLB@@Q]R[e[neh@a`@XHf|HjzP\t-1.33\nHcLB@@Q]R[e]nEh@I`@XHf|Hj[`\t-1.33\nKAxA`@xPD\\DYIHjjjh@pZDpj[d\\\t-1.33\nHidD`HRgCIIEYLJjjh@XUaMp|a@\t-1.33\nHiFDpFhXdDdLdLddlrjfd@XPwHx\t-1.33\nHmVL@JFUrRQRjJjjY@FCPfET|c`\t-1.33\nHmvD@LADfueYUj`@@A`vMproDP`\t-1.33\nHmTH`DAprRQRKrjjf@FCXUMr|bP\t-1.33\nHmNH@BAIfUmaeX@@@@A`pXproHx\t-1.33\nHmVD@Aa\\ddUbajjjPAarXUMp|bP\t-1.33\nKAxX`Ia@tQDYIIcJjh@phHinxfD\t-1.33\nsGQBK@aPF`C@IUMT`NLdCHAPNR@\t-1.33\nsGQLJhCPA`Djfj`GFRAd@hDI^R@\t-1.33\nHcL@@LddTjTPsU@AP@LJSBW^YSR\t-1.33\nHmvD@DClbbbRJIfjVj@FEYSCOHT\t-1.33\nKAxX`Pf@xTxYIHkJjh@pHj[nHf@\t-1.33\nHmLH@@RYVuiiV@@@@@XLe\\Lkq@p\t-1.33\nHmtH@ErRQRiXYj`@`@X\\fTwBoHH\t-1.33\nHiDDPNDGA`cIIEUJje@FEPfEWHX\t-1.33\nHiDLPJxP\\FBLddUTjjT@XEBXWHX\t-1.33\nHiDL`HS@\\LddQTjih@XTUMp|QL@\t-1.33\nKAxY`DwQDIDYDYIIUJjX@prDsd\\\t-1.33\nHiDDPHXGBoCIIETjjj@FEIa\\OHh\t-1.33\nHmtB@HPYrRQHzZfjjfh@XEaToHX\t-1.33\nHiDDPFxGBoCIIEYjjZ@FEPfDOHh\t-1.33\nHid@b@|@eJYWxZB@@AarXUMp|`@\t-1.33\nHeTH`LCDRVyTYi`@@A`pQS\\OHd\t-1.33\nHeU@@@eJYW~F``H@FCIaTw\\PI@\t-1.33\nHmtD@@eIfUTUZBA@@XMaUpkrF@\t-1.33\nHaD@P@bFbDfUjz@H@AaPIc]rJ@\t-1.33\nsGXCJJAPF`C@CdjfjpGFRAd@h@\t-1.33\nHmUL@NFFWIIEYdjjYd@XXfErI@\t-1.33\nKAxQ`TdQdPTPeTuUU@FEIaMwHh\t-1.33\nHeV@@IrRQRiCMT@@@LJSBinIp`\t-1.33\nHmTL`HYP\\LddUfRjinPAabXWHd\t-1.33\nHctB@HY]rRQVYJUTwL@LLSByF`\t-1.33\nHmTB@NFUrRQRqRjif@FAPfEqAT\t-1.33\nHid@`@|DiyWaj@@@FCPUMp|PD@\t-1.33\nHiDD`HPGCIHdcJjj@FCXUMp|`@\t-1.33\nHmtD@@QIee^UZ``@@XLU\\LkrF@\t-1.33\nHidD`@RJAInUxZ`@@A`pHULOHx\t-1.33\nHeTD@@IJUmQfj@@@FCQS\\L|QB@\t-1.33\nHmvH@AAIYWYnh@J`@X\\FESRoH`\t-1.33\nHidH`H@HRme^Eh@@@XLaTwCr@@\t-1.33\nHiFL`FaL@HrRRjQZj`A`VEp|a`\t-1.33\nHidH`HAprRQVKajij@FEIa\\OHX\t-1.33\nHedD`HDGCIIEXiUTr@LJSBz^PH\t-1.33\nKAxX`Pw@xUxYIHkJjX@pILJnQp\t-1.33\nHmVL@NaerRQVYJjfi@FEIa\\OHd\t-1.33\nHmVD@NalddUfTjij`A`rXWRoHD\t-1.33\nsNqBbJBRBdMHCcNRRUUU@LEWrD\t-1.33\nHedH`DAprRQRKuUU@CAlJfz^PH\t-1.33\nHmVB@NaiWIIEYeJjZX@XDfEwHT\t-1.33\nHiD@bLhLyJgmjjh@X\\DIa\\ODi`\t-1.33\nHiD@bLhLyJgyjjh@XBDHUMp|c@\t-1.33\nHmtL@@SDfUmYUj`@@A`S\\L|Re@\t-1.33\nHiDDPNDGA`cIIEUJke@FFIa\\a`\t-1.33\nHiDH`HAprRIIFjjPA`rYS\\OD@`\t-1.33\nHedD`HdGCIIEXmUSR@LJSB[nPH\t-1.33\nHiDL`HXP\\LddUfjjX@XDfEwDXP\t-1.33\nHiDL`HxP\\LddUTjih@XDfEWDxP\t-1.33\nHcvD@AalddUffeUMU@C@TpnFUt\t-1.33\nHeTH@@RUYTYj`@@A`HQeMpsrD@\t-1.33\nHmTJ@H[iWIIEYeJjZX@XXfErE@\t-1.33\nHid@`@\\Die_ahD@@FGIaTwCr@@\t-1.33\nHidH`DBHR[e^FX@@@XDATOD[`\t-1.33\nHiDLpJXXdDdLdLddlrjfd@^Qp\t-1.33\nHiDBb@RnJ`Kdf]Yji`A`fCrB@\t-1.33\nHig@@@idiUWajjj@FDaBXUMp`\t-1.33\nKAxHPTtRBRFRGNfRRVZjZ@OHx\t-1.33\nHeTL@@SDf^UFVh@@@XES\\ODrP\t-1.33\nHiDH`HAprRQURjf`AaRXWCrJ@\t-1.33\nHedL@NF\\ddTlUUSH@pJDpnHp`\t-1.33\nKAx@`@xQDYIIcJjh@pjDinxfD\t-1.33\nKAxH`MpNEAFRRJrje@LBaLKdT\t-1.33\nKAxH`TpND^FRRJNjZ@LBSB{dP\t-1.33\nHaDH`@b`RVU[j@@@FEXUMwDB@\t-1.33\nKAxI`UtRBRFRFRRUJji@LHKdL\t-1.33\nHaDH`HAprRQVMuUU@CBdpf{dT\t-1.33\nHiUH@HPDiUWBxZVeh@XIp|Rf@\t-1.33\nHiFH`DDGAJiijjh@XLfES]rA@\t-1.33\nHiDH`HAprRQVJjiPAaRXWCrF@\t-1.33\nKAxHPTtRBRFRGUfRRVZjZ@OHx\t-1.33\nKAx@`PD\\DYIHjjjh@pZDpj[d\\\t-1.33\nHefD@Nb\\ddUTuUUH@pYLJf{dB\t-1.33\nKA|I@YBAxYICDjjh@phBinxdH\t-1.33\nHefL@NairRQVYUTt`C@dpny@`\t-1.33\nHiD@`F\\LddUTjjh@X]BXU\\OHX\t-1.33\nHiE@`HZoCIIEUJij@FAIgCqBh\t-1.33\nKAx@`AxPDYIIcFjh@pjDinxfD\t-1.33\nsNpbJyDJHtP_CIIKJi`FFbwDV\t-1.33\nHiFH@HGIIEKjjj@FCIaUp|a`\t-1.33\nHiDD`NDGCIIEUJkf@FFIa\\`P\t-1.33\nHidD@@EIYW[f@B@AaTXUMrA@\t-1.33\nHidH@@RYm^Fh@@@X\\FES\\OH`\t-1.33\nHefL@L@YRUeVjjh@XRDHUMpr\t-1.33\nHid@@DjUfaBB`@FCPfMp|Pj@\t-1.33\nHidD@@EIYW[j@B@A`pQaTwHD\t-1.33\nHmTL@HY\\ddUfRjinPAabXWHd\t-1.33\nHedD@F{IIEYeUST@LJSBF^Q@\t-1.33\nHedB@HXYrRQVZUTs@CCDpnQH\t-1.33\nsNpB@DQppPPaJYjj`FEDU_Eb\t-1.33\nKA|A@TCaddbjjj`CAhSB[nQP\t-1.33\nKAzA@QsAFRRJrjf@LJaLInQp\t-1.33\nKAxY@Pf@DYIIUEjh@pKB[nQP\t-1.33\nHiFH`APGAJiijjh@XUaTw\\`P\t-1.33\nKAxI@QpNFRRJjjj@LJSBinQp\t-1.33\nHiFD@Jx\\ddT\\jjX@XUBXP|b`\t-1.33\nHiFH@AcIIEXjjj@FCIaUp|a`\t-1.33\nsNxBB@bRBdMHYIIUUT@ppkyB\t-1.33\nHaF@B@BTjWzXHB@AaTIaUrN@\t-1.33\nsJXLHhCPA`H~j@\\YHFPB`\\d@\t-1.33\nHiDH`HApRjUZjj@FCIaMp|b`\t-1.33\nKAxI@QpNFRRJjjf@LBSB[bUp\t-1.33\nKAxI@QpNFRRJjjf@LBSBkbMp\t-1.33\nKAxI@P`NBUNuTt@XUaTw\\PD@\t-1.33\nKAzQ@Qs@xYIHkJjX@pJDpnQp\t-1.33\nHedB@H[irRQVYUTt`CCDpnPH\t-1.33\nKA|P@QvRRJjjj@LFSBinyD@\t-1.33\nKAxX@AaYHhdZjh@pjDinyA@\t-1.33\nHaF@@@Rfu[j@@@FC@fES\\c`\t-1.33\nHidH@@RYm^Eh@@@XUaTp|c`\t-1.33\nHaDH@@RVU[j@@@FCAFTw\\``\t-1.33\nHiDD@J{IIETjjj@FAPfEqFD\t-1.33\nHiDL@JX\\ddTZjfd@XXfErN@\t-1.33\nHaf@@@RiUkfzjjh@X]BXUMp\t-1.33\nHiED@NFFrRQVZjfPAabXWHD\t-1.33\nHiDD@NGIIEJjje@FAPfEqJX\t-1.33\nKAxQ@\\CaddbjjjPCBhSBkdL\t-1.33\nHiDL@HX\\ddUfjid@XXfErN@\t-1.33\nKAz@@QvRRJjjj@LFaLJfyG@\t-1.33\nKA|I@]C@xYIHkJjX@pqLKd\\\t-1.33\nHaF@@@RnU[fjj@FCIaTw\\b@\t-1.33\nHigL@Ds`XTfUfn`BH@FF@p`\t-1.33\nHigL@Ds`XTfUfnZif@GfIg@\t-1.33\nKAxQ@PCaddblji`C@dpnyC@\t-1.33\nHaDD@@yIe^f`@`@XDBUwDp`\t-1.33\nHaDH@@RYWifjj@FEIaTwHx\t-1.33\nHaDH@@RVU[f@@@FEQeMwHH\t-1.33\nKAz@@ArTjmUT@X\\DIaUwHX\t-1.33\nKAxH@UvRRJjjj@LBaLKbMp\t-1.33\nHiDL@HSDjeVjj`A`QTw\\`P\t-1.33\nHiDD@H[IIEYjj[@FFIa\\`P\t-1.33\nKA|A@PC`eTsUU@FEIaTwHx\t-1.33\nKAxA@@xYIHjjkh@pILInQp\t-1.33\nsNtDHpxTHrRQVjTA`Uc^Q`\t-1.33\nKAxH@QvRRJjjj@LJSBknPp\t-1.33\nKA|P@]FRRJjjj@LJSBknPp\t-1.33\nHaD@@DjUZxHD@A`tHUMwHp\t-1.33\nsJPJaPRPTai@r@zSGuPCrP\t-1.33\nKA|X@XB\\drzuU@FFXw\\Pj@\t-1.33\nsNxLGIARFdLddjjj@XQ|Qh\t-1.33\nKAxP@@djkUU@FG@fES]rH@\t-1.33\nKAxH@ArRjmUT@XLBXU]qHX\t-1.33\nHaF@@@RYe[hB@@FA@UMqLx\t-1.33\nHiDH@@RYuVjj@FCIaTw\\`P\t-1.33\nsOpIAVBTfUk`@@FEVM_H@\t-1.33\nHiDB@@QnRY^vjZ@FBDOHp\t-1.33\nsNpY@jsPGdf^Zj@XKGbk@\t-1.33\nsNpDADQpRYzjhAaPcWqS@\t-1.33\nsNpD@xTJrRQVjhAaXl[rL\t-1.33\nsJQBBGBQBbMDQ}T@ptVyB\t-1.33\nsGPL@DQppPeKUT@pHQoEL\t-1.33\nsFqlAcJATEhDiTvjhAyhj\t-1.33\nsNpD@xPHrRQVjhAaXl[rL\t-1.33\nKAxA@@xYIHjjkl@pqLKd\\\t-1.33\nsNyLGYHJPtaddeeUHCqU`\t-1.33\nsNpdE`tRHRkzjhA`XZ~HX\t-1.33\nsNpyhlZqVGkszOvj`FBV@\t-1.33\nsNqhHlGCIHcJj`FFM_LE`\t-1.33\nsNqhHlOCIHcJj`FAAkxe`\t-1.33\nKA|@@@djkuU@FEIaTwHx\t-1.33\nsNxHHGCIIEZj`FEVM_I@\t-1.33\nsNqhHlKCIHcJj`FFM_Dl\t-1.33\nsOpHAbILkW@@@LBEgqF`\t-1.33\nsNpH@xYIDYUT@phakxe`\t-1.33\nsJPLADQpTPdwU@LBEcrP\t-1.33\nsGXDHGByBUSUPC@kF|d@\t-1.33\nsGPDADQpRUjj@XTKF|d@\t-1.33\nsNqhHjGCIHcJi`FBsx``\t-1.33\nsJPlLQxRHTQGtpCAQ\\a@\t-1.33\nsGQhHlGCIIKUPCAF|tV@\t-1.33\nsNxHHpcIIEZjPFEbq_IP\t-1.33\nsNyHHpxYIHkUR@pJqoI@\t-1.33\nsGQdEbOBQFRRFZ`FDgDZ\t-1.33\nsGXhMDOCIHUUPCC@wfbp\t-1.33\nsOxA@IRi^lH@@XVKF|c@\t-1.33\nsNpIEPKdkejj@XFJofFH\t-1.33\nsNpIMP[dj_jj@XTQE|Vh\t-1.33\nsGXDHGBxBUSUPC@kF|d@\t-1.33\nsGXDHGBzBUSUPC@kF|d@\t-1.33\nKAzD@XPHwIMkMLpAxb\\\t-1.33\nsNqHHGCIIEZjPFAVMyF\t-1.33\nsOpHAHILkW@@@LLc^KL\t-1.33\nsNpHADIJkUT@pXbqoHp\t-1.33\nsNy@iYMyJijjPFFVOHp\t-1.33\nsGXLKIARFdLddmU@LDZ\t-1.33\nsNqhAVjAJYjj`FFfOEV\t-1.33\nsGQi@jZ@|dsmT@pfxcP\t-1.33\nsNpIEPKdkejj@X\\QXu`\t-1.33\nsNpH@xIRkUT@p\\VM_H@\t-1.33\nsGPH@xYIDZi@XVKF|`@\t-1.33\nsGPD@xTJRjZj@XFKGdh\t-1.33\nsNxHGGCIIEZjpFFVOI@\t-1.33\nsNphIPxYIDYUL@prsy@\t-1.33\nsGPhH`xYIHZj@XKGfbh\t-1.33\npnH@BTlzemUR@X\\QXu`\t-1.33\nsGXDHGBaBUSUHCCKGdh\t-1.33\nsNyHEAxIWKUT@pNM_DH\t-1.33\nsNyHEAxIR}UT@pNM_DD\t-1.33\nsFxHHOAIeMjj@XEXwd@\t-1.33\nsGPM@xRPT`Nc}U@LMcP\t-1.33\nsNtHHpxYIHkUJ@prqyF\t-1.33\nsGQ`HmddejhA`c^ZK@\t-1.33\nsNq@KddbmUPC@qX|c@\t-1.33\nsGY@iYMyJijhAaecrP\t-1.33\nsGPhAUPISMU@LML^IT\t-1.33\nsGPhHaXISuU@LMc^HH\t-1.33\nqCcRAZTDyIj`LINXK@\t-1.33\nsGPhCQbILuS@LLI^S@\t-1.33\nsJQDDH`qBS\\t@pPOI`\t-1.33\nsJPIAxBTiZhA`Xl^P@\t-1.33\nsNq`AbeLuUPC@qU|VH\t-1.33\nsJPBHxJPt`YBOj`Gd`\t-1.33\nsNphH`xIUKUT@pvkyB\t-1.33\nsGQHHGAJejhAaecqB`\t-1.33\nsJPdE`DPHRie`FDgDB\t-1.33\nsNy`LDtfuZj@X[U|RH\t-1.33\nsGQHBLQIejXAaaMqJ`\t-1.33\nsJQdEbOBQD_M@LINKD\t-1.33\nsOp`Jtjeqje`FBqxh`\t-1.33\nsGPhCQbILuS@LDIqZ`\t-1.33\nsNt@H|ddUje@XYX|c@\t-1.33\nsJYHEAxIVuPCAX|pb@\t-1.33\nsGXHHOAIejhA`Uc^P@\t-1.33\nsJPIEPKdkZhA`h^XK@\t-1.33\nsNqhHlOAJeZj`FAAk@\t-1.33\nsNx@GddbmUPCBqXodh\t-1.33\nsNpH@xIUMUT@pjqkyH\t-1.33\nsGPhH`xISuU@LMc^HH\t-1.33\nsNq`@jdrkTpCAE|f@\t-1.33\nsKRAADQJTnKT`OLE`\t-1.33\nsNx`JDdrkUPCCFodp\t-1.33\nsNy@DDeeZj@XZX|UX\t-1.33\nsGP`@TfVj`FEDVOIP\t-1.33\nsJPhH`DIVmPCAX|`@\t-1.33\nsNp`@dfUZf@X[F|c@\t-1.33\nsJPH@xISuPCCSGbB@\t-1.33\nsNp`@df^Zj@X[U|a@\t-1.33\nsGPH@xIUMT`LBl[rP\t-1.33\nsGPhHPxISuS@LDkr@\t-1.33\nqC`HAps`dmPFBbxa`\t-1.33\nqC`HBHTPduPFFBwI@\t-1.33\nsNx@GddbmUXCCKGd`\t-1.33\nqCcRQXV@zOTAaAsQX\t-1.33\nsFy@LDigVfhAaEqF`\t-1.33\nsJPLAHJPL`dwS@OI`\t-1.33\nsJPDAxPHcvhAaIsKD\t-1.33\nsGPH@xIUMT`LCEcrT\t-1.33\nsNu`LPfdvkSHCqJ`\t-1.33\nsJPXHlPjQzt@pfyB\t-1.33\nsNqP@mVdssTpCqY`\t-1.33\nsGQ@JeTuT@pLVOIP\t-1.33\nsGY@LDizj`FFQoI@\t-1.33\nsGP`Adinj`FFQoI@\t-1.33\nqCpPP^BRu@XI[bD@\t-1.33\nqCqPZH^D^hCBCfbp\t-1.33\nsGY@DDeYj`FFqoED\t-1.33\nsJQIH@`SGmPC@aX`\t-1.33\nqCpRPA@eIj`LDmr@\t-1.33\nqCpRP^@eIj`LDmr@\t-1.33\nqCcPQXJd]XCB[d@\t-1.33\nsJQ@@eKU@LML^Q@\t-1.33\nsJP@DkVhA`Pl^R@\t-1.33\nqCbPXUbRt`XHSdP\t-1.33\nsGPP@mTf]jPGbq@\t-1.33\nqC`PBHRZhCCA[d`\t-1.33\nqCpHXRBdDfj@|Tp\t-1.33\nsBP@DiVj`FBFxh`\t-1.33\nsJPXHlQiQzl@|a@\t-1.33\nsJTILPyAdiZ|Ay@\t-1.33\nsJPHIxQ}T@prqyH\t-1.33\nqC`R@HDqz`LBHl\t-1.33\nsJP@DjVhAaecrP\t-1.33\nsJT`LPdfvdAxdP\t-1.33\nsGP`ATeUnPGba@\t-1.33\nsJPYHlQiGh}V@P\t-1.33\nsJPYHlPZGh}V@P\t-1.33\nqCr@XISRA`enR@\t-1.33\nQMA@HoAIXFD\\Y@\t-1.33\nQMACp_AIhFE\\Q@\t-1.33\nqC`@ISJAaaErX\t-1.33\nQMJd|BTf`XL|`\t-1.33\nQMFIDjN`XQqd\t-1.33\nQMFajByIhGfR\t-1.33\nqCh@CIRrAxe`\t-1.33\nQMFiK@zN`^YH\t-1.33\nRFQALXOD`\t-1.33\n`IGPCr@\t-1.33\nHiT`@@rnRfUjEnBB`PA`bMqLD\t-1.33\nsGY@DDf]j`FBVxcP\t-1.34\nQMdXZWde`^T\t-1.34\nRFDDaFCr`\t-1.34\nHev@@@rRIIRus]UUUP@pFDJfxYyF@\t-1.35\nHaE@@@aJyUnX@@@XEeMwD``\t-1.35\nsOpHAbILkW@@@LJEb~R`\t-1.35\nsKX@@eKcUPC@bX|b@\t-1.35\nsGP`ATf]jPFDwDb\t-1.35\nHcND@LCTeme^UZh@H@F@iaMpsoH`\t-1.35\nHiT@@LddTQQnFjjj@FGPfESCrN@\t-1.35\nHeT@@DjU]k``b`@XMBXUMqAd\t-1.35\nsKP`@Tixjj@XZK\\a@\t-1.35\nsJX@@dmU@LBEcrP\t-1.35\nQMA@HPaIhFE\\Q@\t-1.35\nQMBBHRZA`cr`\t-1.35\nsJX`BDdvu@LInID\t-1.35\nHeTLbHS@BL{IIKDdLkP@@@pragbMp\t-1.35\nsOq@@drm\\@@@pHM_Dl\t-1.35\nHidH@@RYfVF@b@@XXAMsJxP\t-1.35\nsGP@DiVj`FADMxe`\t-1.35\nsJPhH`DYIBm@LInHD\t-1.35\nsJQhHlOAJmj@XS\\PH\t-1.36\nqCaPQCpRfhCsAX\t-1.36\nQMJH|Df`^H`\t-1.37\nHeTB@@xYRfUVfjjj`AatES\\L|QL@\t-1.38\nsGP@DkUj`FEDVOIP\t-1.39\nsFt@AdiTt@@AaIsHt\t-1.39\nqCaPQCpRfhCBKbF@\t-1.39\nHg}B@DpAV|bbbRbrK]imUMMU@CAlJnN~IN`\t-1.4\nHcnH@LAIYe_x^fjjjj@FDhUMprn|PH@\t-1.4\nHeTD@@QIVUnEjjj@FCXS\\L|RJ@\t-1.4\nHidH@@rJJIEn`HH@FA@UMqLD\t-1.4\nKAxP@@dsjuU@FEIaTwHx\t-1.4\nKAxH@@bSJkTt@XEaTwHx\t-1.4\nsOx@@drm]UT@pXbM_I`\t-1.4\nsOq`Afdlm[UT@pbyhZ\t-1.4\nsOp`@dfUMZj`FFqoHp\t-1.4\nsJPHAVIJuPC@bK\\a@\t-1.4\nsGPhLQDIK]M@LDKrP\t-1.4\nsFy@LDi_FfhA`d^JT\t-1.4\nsJQHBGAJ^i@XJKbF@\t-1.4\nsKY@LDi\\ZZ@XQ\\TH\t-1.4\nqC`PCDRVhCCB[dP\t-1.4\nsGQ`@bdwML@pbyJ\t-1.4\nqC`PCDRZhCCBKdp\t-1.4\nQMaDbKpRZAaGFP\t-1.4\nqC`@IRtAa`mrP\t-1.4\nQMbh|BTf`XSqH\t-1.4\nqCr@XIKVAxa@\t-1.4\nRFTEPQP|h\t-1.4\nRFTPbQP|`\t-1.4\nsOq@@drm\\@@@ppUylV\t-1.4\nHidH@@RUe^Fh@@@XLATwCqHP\t-1.4\nHifDAHAHeNR[e^Eh@@@XHW\\rfD\t-1.41\nHidB@@kaReYrZjjh@X]FES\\OHP\t-1.41\nHeT@@DjU_k``b`@XCBXUMp|bP\t-1.41\nsGQhHlOAJmZhA`c^P@\t-1.41\nsOq@@drm\\@@@prsy`Z\t-1.41\nQMFIKBN`^YH\t-1.41\nsNy@DDeUZj@XEXwbc@\t-1.41\nHmtJ@@siUJYn~ajjjh@XCBDwCJ|SJ@\t-1.41\nqCaPQCpRmhCqC@\t-1.41\nsGX`LDdvmT@pVODj\t-1.42\nqC`XBPTaiAIj`OI@\t-1.42\nsNqiHl@c]ddeRuPCAF|c@\t-1.43\nQMRIOBN`^YH\t-1.43\nsGQ@@djmT@prqxiP\t-1.43\nHeT@H@bBbFbAbDfYnzXHb@@XDALODzP\t-1.44\nHif@`D@HRUe^EX@@@XTATw\\`P\t-1.44\nKAxH@@bSZsUT@XTaTw\\c@\t-1.44\nsNy@aAL{IILZj`FAVMyF\t-1.44\nsGY@aALyJkjhAaecrT\t-1.44\nsNp`@dfUZf@XHwbs@\t-1.44\nsJY@aALzOj`FBVyB\t-1.44\nqC`@IVtAa`mrP\t-1.44\nQMPBchFBWI@\t-1.44\nsJP`@TeZhA`QL^Q@\t-1.45\nsJQiHlOC\\eVu@ODB\t-1.45\nsJT@@TeZhA`QEnP`\t-1.46\nqC`@IWtA`hnS@\t-1.46\n`IoQHFD\t-1.46\nHidD@@QInUxV`@@A`RES\\Sa@\t-1.46\nHet@@DjYUX^d@@@@AarXUMp|bP\t-1.46\nqCb@AIZ`LLInQ@\t-1.46\nsOpH@DILkW@@@LJlZ~P@\t-1.46\nj`iA`@@V|eLsJnmARMiu@A@DT@@LFDYqQg\\pJw`\t-1.47\nJoBAQDIg@DYvRRVJKIIRmnmA@@@@AaS]ioqAl\t-1.47\nJoBAQDIc`DYvRRVIJYKCIvm@@@P@AaULJoqML\t-1.47\nHknJcEaLtp|LyYOdj~UvFVh@I`@XES\\OH@\t-1.47\nJobB@@VeLsJntLgkt@D@Q@@FCDwJ[|p]l\t-1.47\nHmL`B@aBB\\dRabRpiUj`@P@XTwCJ|PL@\t-1.47\nHk^@@@rRJFIQDYtz`@@@@F@ie\\Lz_HT\t-1.47\nHmtBbHSBCpKlddqbReVj@@@FAMpsqLT\t-1.47\nHcNBAHAEvISdfyW[aZ@BX@FAES]rM@\t-1.47\nHknJ@D@ae\\bbbRtJifjiZh@XYc[rC@\t-1.47\nHcLBbHSBCpKdjm{U]Zj@@@FA\\LkqFt\t-1.47\nHid@p@bFbAbDfUfn`BH@FE@fLOHx\t-1.47\nHeVD`Aa@BLdabRgRl@P@C@bkix`B\t-1.47\nHid@P@bH\\Df[Waj@@@FGAaTwCrH@\t-1.47\nHcNJ@LANF\\bbTRbILuTmT@LH[bKh\t-1.47\nHmMH@LhDigm\\jUid@H@FAMpsqDT\t-1.47\nHeT@`@\\DieUzZBA@@XBfES\\L|`@\t-1.47\nHmtH@@RYeY[hBBh@FGAaTLkrN@\t-1.47\nHifDAHAHeNR[e^Eh@@@XXwCqBh\t-1.47\nHmvJ@LANFTfVVRYjiZ`AaC\\RU@\t-1.47\nHeTH@@RYe\\YjB@@AapES\\L|RL@\t-1.47\nHcLH@@RYeYVz@`j`@X\\FEProHt\t-1.47\nHaD@b@|@eJ[Unh@@@XLfES]r@@\t-1.47\nHidH`ACDRYWZZ@BP@XTBXU\\c`\t-1.47\nHiTH@@RgeXSaj@B@A`tES\\OHP\t-1.47\nHaDH`HApRnU[j@@@FCQaTw\\`@\t-1.47\nHeTD@@YIfUqehH@@FEEWCODq`\t-1.47\nHid@`@qDee]nh@H@FCAFES\\`P\t-1.47\nHid@@LddRL[jjj`A`tIa\\ODi`\t-1.47\nKA|Y@]BX@QddeRVj`C@lJfyG@\t-1.47\nHeTD@@QIemQej@@@FAESSqND\t-1.47\nHifH@AAJ[W[j@B@AaRXUMrA@\t-1.47\nHif@@@RfU~F``@@X\\BXS\\OHh\t-1.47\nHif@@@RUe^Fh@@@X\\DHUMwHD\t-1.47\nHidH@@RUe^Fh@@@X\\DHUMwHD\t-1.47\nHaD@P@dNdDfUZZ@B@AabDwHp\t-1.47\nHif@@@RYWZZ@B`@XLBXUCrN@\t-1.47\nHeVB@LANEIeeRYjiZ@FDMqJd\t-1.47\nsJQL@hCPA`DijhAqd`Y@JArP\t-1.47\nHaDH@@RVU[f@@@FEQaUwHX\t-1.47\nHaF@@@Re]J`@h@FEPfDwHx\t-1.47\nHaD@@DjWzXHB@A`TYW\\QB@\t-1.47\nHaFL@LAFRYUJfjZ@FDUqLx\t-1.47\nKAxD@@c\\dwLuS@FFIg\\b`\t-1.47\nKAxH@@rTzmST@XDfEwDb`\t-1.47\nKA|P@HBSJsTt@XTfTw\\``\t-1.47\nqC`XBHTQhAIj`NIdBBByH\t-1.47\nsOpHAxILkWUU@LGEcWr@\t-1.47\nsGQHHGCIHcUPC@kF|`@\t-1.47\nsOx@@drm]UT@pXbqoHp\t-1.47\nsGQHHGCIHcUPCCHwbF@\t-1.47\nsNqHHGCIHcJi`FFV_DJ\t-1.47\nsGPH@DIJmU@LJHl^R`\t-1.47\nsNp`Jtjejj@XVXu|b@\t-1.47\nsJPDAbGDRUj`FADqyD\t-1.47\nsGXA@IrRHuR@plVMy@\t-1.47\nsGPhCQDILmR`LDIqK@\t-1.47\nsJQDDGBQD_U@LML^Q@\t-1.47\nsNy`LDtfuZi@XKGbU@\t-1.47\nsNx@@djoUPC@kF|c@\t-1.47\nsNp`@dfvZj@XEZodH\t-1.47\nqC`HBHtPdmPFFDwH`\t-1.47\nsGQHDHaInfhAa`[rX\t-1.47\nsNq@@dssUPC@hu|f@\t-1.47\nsJPHAXIRuPC@qX|`@\t-1.47\nsGPP`cUuyInZXA@\t-1.47\nsJQ@@eMU@LLl^R@\t-1.47\nsGQ@@dsMT@prMyL\t-1.47\nsJQ@@dmU@LBHmrD\t-1.47\nQMCCDoAqDf`XH|h\t-1.47\nsGT@ATeWfpGbV@\t-1.47\nQMABHWAIhFBWI@\t-1.47\nQMBcpIchFCOH@\t-1.47\nqC`@IS^Axe`\t-1.47\nRG@aMt\\OH@\t-1.47\nQM`PfzO`^R\t-1.47\nQMFIOBMP^P\t-1.47\nQMPARUAxb\t-1.47\nHaFH@BAIf]n``@@XYe]s@I`\t-1.48\nHg|H@@RfUYwySn``@@@@XJfDwCNg_HT\t-1.48\nHet@@DjYUX^d@@@@A`rDwCODr`\t-1.48\nsGX`BDdvmT@prqyJ\t-1.48\nHifDAHAHeNR[e^Eh@@@XXUMqND\t-1.48\nRF@Qp|R@\t-1.48\nsJPXhlQx[ct^u@OH`\t-1.48\nsJPhHaxIRuPCsCD\t-1.48\nQMFIOBN`^YH\t-1.48\n`IK@Cr@\t-1.49\nHaD@@DjWjXHB@A`f]phRf@\t-1.49\nsGQ@@eNuT@ptqxeP\t-1.49\nqC`XCDVIlQIj`LLEnR@\t-1.5\nHif@@@rRJEKaj@@@FCIaTw\\`P\t-1.5\nHaDH`H@HRnU[f@@@FEXUMwH@\t-1.5\nsGP`AdeUj`FBMxh`\t-1.51\nsGQ`@jdrmR@|VH\t-1.51\nsNx`DFdkKUHCCKWba@\t-1.51\nqCh@CIKTAaaErX\t-1.51\nQMBCDRYAaGFP\t-1.51\nHiT`@@rnRfUjEnBA``AabMwHD\t-1.51\nsJY@DDfvdAaMqH`\t-1.51\nsJQ@@dkU@LCEcr@\t-1.51\nRF@QPpce@\t-1.51\nJoBA@@YviSJwZ}C[uUTDA@@XSA\\LkiwsDip\t-1.52\nJgBD@@YHhhhddZFSvz@B@B@@LFInT{y`sh\t-1.52\nHcND@BADf{YU]Zj@@@F@ie\\LkoHH\t-1.52\nHid@`@BDiyWaj@@@FGAATwCrD@\t-1.52\nHeTD@@eJ[WVz`@h@FEIaTwDFP\t-1.52\nHidH@@RYWZZ@B`@XLBXUCrN@\t-1.52\nsOx@@drm\\@@@pHM_Dl\t-1.52\nsNp`ATfUjj@XTQF|VX\t-1.52\nsKP`@Ti\\Zj@XJ[dP\t-1.52\nsJQ@@dmU@LML^HH\t-1.52\nqCcRQX^FzNtAaEr@\t-1.52\nsNx`BDdw[UPCCKWbK@\t-1.52\nHmtL@@QTfyeQehBA@A`ULL|QN@\t-1.53\nHk^H@DAInUm^GSZ@@@@@XLWRngqDh\t-1.54\nHmNh@DkaTDfVYVzUZiYj@FFHL|aP\t-1.54\nHmLD@@QIe[VfeVi@B@A`U\\J|SI@\t-1.54\nHaF@@@RYe[hB@@FEAaTwHx\t-1.54\nKAxD@@c\\dr|uS@FDYqBx\t-1.54\nsNu@EPdrkUPCCKWbK@\t-1.54\nqC`HBHc`dmPFFBwI@\t-1.54\nsGQ`@bdwMT@pvMyD\t-1.54\nsGP`@dfUjPFBuyB\t-1.54\nsJP@Dk^hAahmrD\t-1.54\nqCa@BIWTAaMqQ@\t-1.54\nQMABHcAIhFBWI@\t-1.54\nqCaPSAXRVdCqA@\t-1.54\nsJP`@dfvlAxdP\t-1.54\nqCb@AIV`LEMrH\t-1.54\nqCp@AI^`LInQ@\t-1.54\nRFBFIFDXLHyP\t-1.54\nQMBBpRZA`sr@\t-1.54\n`IC`Cr@\t-1.54\nqCq@XIIf`ODl\t-1.54\nsJP@DiVhA`QD^S@\t-1.56\nsGP`@TfUi`FDwDj\t-1.56\nqCj@KAIV`LDmrP\t-1.56\nHev`@@rfeJY{ZxYBBFH@XXfCrI@\t-1.58\nHmN`@@rfeJY{^nFP`ah`AabXOHT\t-1.58\nsGP`ATiVj`FAbuyB\t-1.58\nJoBD@@ISZzrk][t@E@@@@XJfESKiv\x7FHD\t-1.59\nHg|@@DjU^Uzx{BB@`@@FDpaTLki|SK@\t-1.59\nHeV@@@RfU\x7FahHB@A`rXUMwDBP\t-1.59\nHie@@@aJVuxV`@@AaQTwCrL@\t-1.59\nHaE@@@aJyUnX@@@XUaTw\\b@\t-1.59\nqCb@AIVPLInJH\t-1.59\nHg|H@@RYfUWd}mh@@@@@XBUMprn|P{@\t-1.59\nj`qAB@G@bDfYeU\x7Fd[Uj`@@B`@AahAJLxJRmV}rD@\t-1.6\njdyP@@@^Rfuue]f\\lyjVX@Jh@AaiFBTXkQkAcr@`\t-1.6\njhyQ@@LT@eL}klkbde^CSH@P@P@@pds`iFl{p^PP\t-1.6\njhia@@G@RYfUW~d[Uj`@@Bh@@XFA@eF\\EIVoAyBp\t-1.6\nj`q`@@@YIEBedhdnB]zh@J@@@@XZQ`eF\\tZso\\aH\t-1.6\nj`q`B@K@|DifUW~EiQj@@@J`@AakAJLxJRcN}r@@\t-1.6\nHgl@DLdBdJdFdAdIdCdKdLddTbdYeUUTt@LD{^Ph\t-1.6\nj`q`@@@YIEBedhdnB]zh@J@@@@XZQ`eF\\ehug\\ax\t-1.6\nj`q@`@@LRYfWg^Qg^jB`@@@@FE`PIQ`iJtZso\\a`\t-1.6\nj`qH@@@P]yJVYU_yFuYh@@@d@@XRIQgARUjwH^@\t-1.6\njhiP@@@NRYfUW~d[Uf`@@Bh@@XZ@RcNBdkW`|aX\t-1.6\njhi`@@@ISLwZkf|xMUP@@@@@LO@``cNBdkQkN|D\t-1.6\nj`qa@@D@RYYUg^Qg^Z``@@@@FDdTXkQkN}sAAR@\t-1.6\nHglLxJ[hBLdBdAdIdCdKdLddTbdYeTmUT@LHwdJ\t-1.6\njdyP@@@QrJJJJjIJILEYtADP@U@@CAPBTYqVoAb\t-1.6\nj`q@@@DjYVWWyjwhI@HA@@A`YFJLxJRmFm{dG@\t-1.6\njhia@@G@RYfUW~d[Uf`@@Bh@@XJIQgARUkp^Pl\t-1.6\nHg^BpLaIT@b`aiCIICEELb]kU@h@@LJx]N~QP\t-1.6\njdip@`OAbBPIHJdKRBSLwKKnpTuSMU_h@OHR@\t-1.6\nJoB@Q@^@SddbbaRRrv[uP@@@@@XVFES\\Lkivx\t-1.6\nJoB@P@NFRRJJEIKKYoU@@@@@AanTwCJz]orB@\t-1.6\nj`q@`@@^RVUvUugCVX@H@I@@F@lDhrRmFxbC`\t-1.6\nHkLLHDYP\\HbJ\\I\\LddqdQdjjjj@FGQa\\NgrE@\t-1.6\nJoB@H@^@~BULrj~mf}PA@@@@FAaaTwRng[|`P\t-1.6\nHctHXMRPrPjPZPFPfPrRQRFDuUUT@LLy]yA@\t-1.6\nJoBDH@QPIPIS\\rjzv[uP@@@@@XKS\\Lkiv\x7FHP\t-1.6\nJoB@@FRQQIQKH}moAHA@@@AajYS\\Lz]orE@\t-1.6\nj`aP@`G^AHDdERAiAIf[eWvBfjYjoP@^HyH\t-1.6\nHkn@PHApiprRQJFIGSjhJ@@A`lXS\\Lki|b`\t-1.6\nJoC@PD@xIU\\vjzv[uP@@@@@XZUMprng[|b@\t-1.6\nHg\\BPHSS@HxHrRPqQISKZtD`h@CAjXYV~Qp\t-1.6\nJoBAPDIa`DYIIUHiEEMrzuUUMT@F@xPrnvx\t-1.6\nJoBDPD@xITlvjzv[uP@@@@@XZUMprng[|`@\t-1.6\nHgmL`JULHOCIIEIRdiMUUU@CA\\JfxYT{yF`\t-1.6\nHg\\@x@dBdFdAdEdCdKdDfYn\x7FnfBHbj@AyF`\t-1.6\nHknBPLaFx@``cIHXhhTmMZe@@@FECJz_D@`\t-1.6\nHg\\JPHSAd@b`cIIBhhd]ikTB`P@LJ[ev~QP\t-1.6\nHo~L`LaC@HrRPjJIKG[VhJAH@FGYS\\noqAd\t-1.6\nHklBPHQ]@HxHrRPqIJJSV``T@A`qTpr_Hx\t-1.6\nHklDPDp@b@cIIDXdmevV``H@FGQS]JgrA@\t-1.6\nHklHPHApiprRQJFIGSjhJ@@AaNDwCJz_Hh\t-1.6\nHctLpHS`\\J\\F\\LddRLbeUUU@CClIae]yG@\t-1.6\nHg^L`LaM@HrRPjIIHjZuA@d@CAl[iV~IP`\t-1.6\nHedFIDpnFPBHBJBFBBz^rRQURRuK@CAHh\t-1.6\nHg}@@@aJVYU^Svz`@@@@A`HMprnwphJc@\t-1.6\nHkLLPDtp\\ABLddTbLLjjje@FGXUMtkrA@\t-1.6\nHmTHHDApbHipVHRjvYjjj`A`LXS\\LkrJ@\t-1.6\nHcMB@hDDWXeNF]yInUnzV`BF@AaaUwHd\t-1.6\nHg|H@@RYfUWd}nh@@@@@XJDES\\LkoDNp\t-1.6\nHg\\D@HkIIDhTeDmuTDE@@LIpfzUt{y@`\t-1.6\nHcLDPDp@b@cIIDYdmJrt@D@CAh[ag^QP\t-1.6\nHmTDpHPGBgAgCIIDcEJjjh@X]aUproHX\t-1.6\nHcL@P@|I|DifUl]hJB`@FDiaTwBn|PI@\t-1.6\nHg}@@@mIe]e^ftx@H@H@A`HHUCJwqLt\t-1.6\nHg~@@@RYfUWd}mh@@@@@XJUMprng_H@\t-1.6\nHedLhDp`BJdFdAdIdLddTgdmUP@|Pn@\t-1.6\nHg|H@@RVUvU[cm`@`@@@XCaTtki|RK@\t-1.6\nHmtDPDp@b@cIIKDeafV@B@AaUMpkrH@\t-1.6\nHmvD`La@BLddNbReUjjj@FCTwCJ|SB@\t-1.6\nHk\\H@@RfYU\\]Tz@@@@@FDxUMprn|`p\t-1.6\nHmV@PHApEprRQQMRjjj@F@iaTwRoHD\t-1.6\nHeVD`La@BLdaTRPrmUU@CAbinF^HF@\t-1.6\nHiD@H@\\HbNdAdLddqTjjh@XUBXU\\a`\t-1.6\nHmtJ@@IaUIf[oijjjh@XJDIaTwBoHd\t-1.6\nHmUH`Dr@|LdbTLTjjj`A`HES\\LkrL@\t-1.6\nHmtD`HP@cIICLeaeZ@B@AaUMpkrB@\t-1.6\nHmtD`HP@cIICDeiUZA@@A`qTproHx\t-1.6\nHmUD`LJD@HrRPqIIZjj@FCTwCJ|``\t-1.6\nHk^D@DBTfYYwimMjdDB@A`vMpkoHL\t-1.6\nHiDDpDXGBHbgCIILYJjj@FEQa\\OHX\t-1.6\nHmtD`HP@cIICDeiUZB@@A`qTproHx\t-1.6\nHmU@`HPGCIIEDTjjjh@XCaTwCJ|a@\t-1.6\nHedAQHSBkad@a``nglddNTbuRp@`\t-1.6\nHcNJ@D@ae\\bbbRtMLuUKT@LDqnQh\t-1.6\nHcL@@DjU_VnBAId@FBpfES\\LkrM@\t-1.6\nHeTL`HRPBLdabRwBl@D@CBbingd@\t-1.6\nHmLD@@qJY{WJeZj@B@A`tMproDR`\t-1.6\nHmvH@H[IIEDYNFjjj`AarXSCJ|c`\t-1.6\nsFpF@DSpPQ``~EBDf_EjXA`Pm^JD\t-1.6\nHk\\H@@RfYU\\]Tz@@@@@FBxUMprnf\t-1.6\nHmt@`@|DifUqV`hH@A`JXS\\Lkq@h\t-1.6\nHiDHPDApbHrRPqRjj`AatXUMp|a@\t-1.6\nHg_@@@jteem]YWizV[`A`S\\L|cP\t-1.6\nHiDHPHApIpRiYjjj@FG@fTwCrB@\t-1.6\nHcLH@@RYWeUuiX@@@XBfEprn|b`\t-1.6\nHiED`LJD@HrRPiIZj`A`UMp|SB@\t-1.6\nHaD@R@bNhNyIe^f`@`@XTBXU\\c`\t-1.6\nHeV@B@B\\dbaRwBuRs@CAdpj[nQH\t-1.6\nHmV@@@rRJJIjjjj@FDpfES]J|`P\t-1.6\nKAxUBPfEp^F\\WYIIbfjh@pRnyC@\t-1.6\nHeth@DkiAIeeVxYZiVh@XH`|Pi@\t-1.6\nHiE@`HPGCIIDbjjj@FCXUMp|RD@\t-1.6\nHeU@@@eJYW~F``H@FGIaTwSr@@\t-1.6\nHmtD@@QImYVUZh@@@X\\fMproHH\t-1.6\nHcM@@@uIVUux^ZV[`A`QTw\\QI@\t-1.6\nHiDNPHSB[a@XhXrRPzQZe`A`aB\t-1.6\nHeT`@@`YRnUunX@I@A`VES\\RI@\t-1.6\nKAxD`Pc\\@QPQddJTVYPCALKbAP\t-1.6\nHif@`HApRkm^Fh@@@XMaTwCq@`\t-1.6\nHeTL@HP\\ddRUQ]UUU@CBlJfgd\\\t-1.6\nKAxH`P`NENFRRJrjj@LJpj[nP`\t-1.6\nHif@B@B\\dbaRxVjV`A`rXUMwHD\t-1.6\nHmu@@@UJf]|YjB@`@X\\aTwBoHp\t-1.6\nHaD@P@bH|DeeVz`@@A`pXUMwH`\t-1.6\nHeeH@DhLbbTJcUUP@pyLinF^PP\t-1.6\nKAxY`Pf@DMH]HYIHUEjh@pbnPP\t-1.6\nHiDB`HSACprRSIEjjPAaaTwHx\t-1.6\nHeU@@@gIHhTmpu@A@@pyLJfzP\t-1.6\nHef@@@rRJJIuUU@C@XPj[agdX\t-1.6\nHmvJ@LANF\\bbTReIfjej@GbLh\t-1.6\nHeg@B@J`gIHhXhuUT@LFSFxY@\t-1.6\nKAxAPAHIHEHMH]HIMwTuPAyE@\t-1.6\nHidL@HP\\ddRNijji`AafEWD[`\t-1.6\nHeTD@@eIYWVy`@d@FFXU\\rFD\t-1.6\nKAxQ@PC`eWMUU@FG@fES]rH@\t-1.6\nHeTH@@RYyTYZ`@@A`rTwCOHp\t-1.6\nHifH@AAJ[W[j@B@AaVESCrD@\t-1.6\nHidH@@RUe^Fh@@@X]BES\\OH@\t-1.6\nHaDL@@[die\\jjj`AaTXUMqDx\t-1.6\nHiFD@LADfWYjj`A`VMp|Pj@\t-1.6\nHifH@DAIVUxU`@@A`QTw\\`P\t-1.6\nHiEH@DHDf{Yjj`A`vES\\OHP\t-1.6\nHiD@@LdbJTZjh@X]BXUMwHD\t-1.6\nHaDD@@YJ[tjjjh@XDfEwDb`\t-1.6\nHeVJ@LANFTfVVIfjeh@^Ht`\t-1.6\nKA|H@XBIMkMUPA`VTw\\QB@\t-1.6\nHaFH@FAIe^fZjh@XDfEWHx\t-1.6\nsGPL@xRHTQddajhA`Xl^R`\t-1.6\nKAzP@I`ILsUUPAaTES]r@@\t-1.6\nKA|X@DB\\dwZuT`FAIaUrF@\t-1.6\nHid@@Di[Waz@@@FEES\\OHp\t-1.6\nKAz@@@VRQPrjZ@LBSF{dT\t-1.6\nHifB@LANEIeeIfje`AxeL\t-1.6\nsNxhMDOCIHUJj`FAAkyhl\t-1.6\nHiF@@@RifZjj@F@pfES\\H\t-1.6\nsNpD@DSpRYyjhAaPcWqS@\t-1.6\nsGQDHGCNBTmUPCCHwbF@\t-1.6\nsOpH@DILkW@@@LJEc^Q`\t-1.6\nsNpD@xRHRjzjhAaYcWrH\t-1.6\nsNqhHfOAJmvjPFBqxaP\t-1.6\nsNpH@xIRkUJ@p\\VM_H@\t-1.6\nsNt@@|dTQjj@XTKF|TX\t-1.6\nsGTHHaxISuU@LMc^XQ@\t-1.6\nsNqHHGAJeZj`FAVkx`P\t-1.6\nsOq@@drm[Rt@pJqoHp\t-1.6\nsJPhH`xYICU@LEcsBH\t-1.6\nsGP`ATefj`FEDqoH`\t-1.6\nsJQHHGAJfj@XYX|`@\t-1.6\nsFx@@eJf`@@LEcsQT\t-1.6\nsJQHHGAJfj@XIGbF@\t-1.6\nsOy`LDtfUMZi`Gbu@\t-1.6\nsNxA@NRfZjhA`xlZp\t-1.6\nsJQHHGAJni@XYX|P`\t-1.6\nsJQHHGAJVj@XIGbF@\t-1.6\nqC`H@Hg`dsPFDGME`\t-1.6\nsJYHEAxIWMPCAX|`@\t-1.6\nsGQ@@dsuT@phbqyJ\t-1.6\nqCbPXXbRu@XHSbV@\t-1.6\nsJP`@dfzhA`l^XQ@\t-1.6\nsJQHDHaInZ@XHGdp\t-1.6\nsOq`@fdrikUL@|Vh\t-1.6\nsOq`@fdrikTl@|Vh\t-1.6\nsKQ@@eKcUHCAX|TP\t-1.6\nsGPP@cTfyi`GbU@\t-1.6\nqCcPQXCD]XCB[d@\t-1.6\nqC`PCDRZhCCA[d`\t-1.6\nsJP`@dfvdA`l^Q@\t-1.6\nqC`PApRVdCCQ[d@\t-1.6\nqCcRQXUfzNlAa@\t-1.6\nqCb@AIZPLLEnR@\t-1.6\nQMIDbIpRZAaGFP\t-1.6\nsJY`BEdfVhAxlP\t-1.6\nsGQ`@ZdrmJ@|Rp\t-1.6\nqCb@AIVPLEErX\t-1.6\nQMABlYAIhFD\\h\t-1.6\nsJQ@@djw@OEB\t-1.6\nRFBBYQDXLJy@\t-1.6\nRFTPeQ`|R@\t-1.6\n`II`Cr@\t-1.6\n`II@CB@\t-1.6\nHiFL@BAAR[mVji@FEIaTwHx\t-1.6\nqCaBAKdfZ@xTlMXPf@\t-1.6\nqCaBAKdfZ@pf@\t-1.6\nJoBA@@XNiSJkN}][uUTDA@@XSE\\LkiwsDIp\t-1.6\nHmLL`HS@BLddJfRiiUZ`@`@XEproHh\t-1.6\nHcLB@@RUR[fVQuhHF@@XEWCoDQP\t-1.6\nsGY@JDeUj`FFVoEB\t-1.6\nKA|H@DBIMvmUPAaRXUMrN@\t-1.6\nsGX@JeTuT@prqxiP\t-1.61\nRFTQxQP|`\t-1.61\nsJQ@@eKU@LEEqX`\t-1.61\nqC`@Qz`LMEnP@\t-1.61\nHiDD@@QIeuZjh@XUaTw\\`P\t-1.62\nHidB@@[aRfU\\jjjh@XMFESCqDx\t-1.63\nsGP`@dfuj`FFVoHP\t-1.64\nsGQ@@dkMT@prqxiP\t-1.64\nKAxH@@bSKkUT@XEaTwHx\t-1.64\nHeTD@@QInYQehB@@FATpsqDx\t-1.64\nKA|H@HGIL|mUHAabXWDi`\t-1.65\nsGQ`@ldsmT@paxmP\t-1.65\nHaD@`@bDeeVz`@@A`pXUMwH`\t-1.65\nsJP@DjZhA`Pl^R@\t-1.65\nHmtJ@@XYUJYY^njjjh@XCFEWCJ|QF@\t-1.65\nsJU@E`dru@LH^IX\t-1.65\nsJP`@TiZhA`inID\t-1.65\nHidH@@Rfufzjjh@XMFTwCqDH\t-1.66\nHaGH@Dq`RYVkffi@FFTw\\c@\t-1.66\nHaED@DpFRYVkfjY@FFIW\\c@\t-1.66\nHaDH@@RVU[f@@@FAQaUqFx\t-1.66\nKA|H@LEIRjuUPAaTIaMrN@\t-1.66\nsNx`FJeJmUPCBqXodh\t-1.66\nsNx`FDdvkUPCCHobu@\t-1.66\nsNq`@fdr{UHCAX|e@\t-1.66\nsJY@DDeUhAaMrD\t-1.66\nQMA@HmBN`XI\\d\t-1.66\n`IM`Cr@\t-1.66\nHev`@@rfeJY{ZxYBBJD@XDfLH\t-1.66\nHidH@@RVUvy`@`@XEaTwD`P\t-1.66\nsGY@LDemj`FFVOEJ\t-1.66\nsGQ@@eJuT@ptVxcP\t-1.67\nHeTH@@RYe\\YZB@@A`vEWCOHX\t-1.68\nKA|H@DBIMwMUPAaRXS]rJ@\t-1.68\nqCrAPCiJSU@XI[d`\t-1.68\nRFTQxQ`|R@\t-1.68\nsJP@DkVhA`QEnP`\t-1.69\nqCp@AIZ`LDMqQ@\t-1.69\nRF`EFCBNT\t-1.69\nHmv@B@B\\ddUbReZj@@@FDpfDwCJ`\t-1.69\nsNq@@djkUPC@kF|TX\t-1.69\nHifDAHAHeNR[e^Eh@@@XXS]qJD\t-1.7\nsOpHAbILkW@@@LJDZ~S@\t-1.7\nJoBD@@ILrkNx{[uA@@@@@XFDEWCJz]orL@\t-1.7\nHmtD@@QImYVUZh@@@X\\aMproHp\t-1.7\nsJQ`@bdvt`LHnS@\t-1.7\nHaD@@DjfZzjj`AaVES]qHP\t-1.7\nqCcPQX^D]hCBKbF@\t-1.7\nQMABPYAIhGe@\t-1.7\nsGP`@dfUjPFDoEb\t-1.71\nHmt@HHdDdLdEbLddlRVFZh@H@FATwKrA@\t-1.72\nHo}L@J[SoIIEKEELQfjjjYh@XMBXPkrG@\t-1.72\nHg]L@J[SoIIEKEELLuUUSL@LFaLHUyA`\t-1.72\nHcl@@DjYU_egX@@@@@XRfDwCJ{rJ@\t-1.72\nHedLpJFXdDdLdLddlreTtp@panQH\t-1.72\nHcLL@@STfue^UZh@H@FCDwCN|QL@\t-1.72\nHmTB`HZUAprRQVYRjff@FAIa]rE@\t-1.72\nKA|Q`MTQBQFQFRRVJjf@LBaL[d\\\t-1.72\nHefDB@FPgIIETiUUL@LFaLIiyE@\t-1.72\nHeTH`ACpRfUWidHD@A`rXS]ODB`\t-1.72\nHmtH@ErRQRiHYj`@`@XLfETkqFx\t-1.72\nHmtH@IrRQRiPUj`B@@XLfESSqAT\t-1.72\nHmtH@NrRQRqZUj``@@X\\fDwRoHD\t-1.72\nHeVD@DClbbbRILuRu@C@liayD`\t-1.72\nHedL`HZP\\LddUfUUMH@pILKnPH\t-1.72\nHeV@@@Re[TYj`@@A`HPUMpsrD@\t-1.72\nsNplJu@Z@L@eTuTpCcI@r@TCdX\t-1.72\nHiDD`HX\\SIIEYjjZ@FAIaCrN@\t-1.72\nKAxI`MtRBRFRFRRURjf@LH{dD\t-1.72\nKAxP`PCaSaddbjjjPCBdpf{dT\t-1.72\nHeTD@@yJ[VvF`BH@FEIaCOHX\t-1.72\nHaE@@@aJyUnh@@@XLDXUMrN@\t-1.72\nHefD@NalddUfeUMP@pILH^QH\t-1.72\nsNyLGYDJHtQddeeUHC@qY|e@\t-1.72\nHiDD`HXGCIIEYjj[@FFIa\\`P\t-1.72\nHiFD@Jx\\ddUTjjX@XDfEWD`P\t-1.72\nHidH@@RUe^Fh@@@X\\BES\\OH`\t-1.72\nKAxI@MpNFRRJrjf@LBaLKd\\\t-1.72\nKAxI@P`NBUKmUT@XUaTw\\`@\t-1.72\nHiFD@NalddUfjih@XDfDOHx\t-1.72\nsGPJHBJPt`YBubUSUPCBWd`\t-1.72\nHiFL@AanrRQVZjf`AabXWHD\t-1.72\nsNpBHxJPt`YCIIEZj`FBkyH\t-1.72\nKA|Q@QpNFRRJVji@LBSB[dT\t-1.72\nsNqLKHaQFbLddljf@XZK\\c@\t-1.72\nKAxI@PpNFRRJrji@LLSBxc\\\t-1.72\nsNplByDJHtQddeUUHCCQ[dh\t-1.72\nKAxQ@\\CaddbjjnPCCDpnPp\t-1.72\nHaD@@DjWjXHB@AaTIc]rJ@\t-1.72\nsGXLKHaQFbLddmT`LCEkrD\t-1.72\nHif@@@RVUv{`@`@XEaTwHD\t-1.72\nHaDH@@RYe[hB@@FA@UMqLx\t-1.72\nKAxD@@c\\dvlts@FBXWDS`\t-1.72\nKAxH@MvRRJrjf@LLSBxd\\\t-1.72\nKA|@D@DiUJuUPAatIaTw@\t-1.72\nsNpD@xTHrRQVjhAaXl[rL\t-1.72\nsGPdE`DRHrRRrt@pTOIP\t-1.72\nsJQLCHaQFbH~j@XZK\\a@\t-1.72\nsO|HEfHaIeZx@@AaAqF`\t-1.72\nKAxX@PfIUJuUPAaeMwHH\t-1.72\nsNqHFGCIIEZj`FEbqoHp\t-1.72\nsNqhHl@cIIJej`FFqoHp\t-1.72\nsOpH@bILkW@@@LJlZ~P@\t-1.72\nsNyHHpxYIHkUL@prqxjp\t-1.72\nsNyHG@xYIHkUR@prqxjp\t-1.72\nsJXBB@bRBdMHQ}T@p`yB\t-1.72\nsOpHAxILkW@@@LBl[qA`\t-1.72\nsFxIHO@RdrfuU@LBl[r@\t-1.72\nsGPhH`xYIDZj@X[F|PP\t-1.72\nsGQDHGBtBUSUPCCKGdh\t-1.72\nsGPD@xPHRjZj@XFKGdh\t-1.72\nsGQhHlOCIIJuPCCKWdH\t-1.72\nsOy@FDfUkZj`FAVMyF\t-1.72\nqC`XBlTaiAIj`LHNR@\t-1.72\nsJPIEPKdkZhA`QL^Q@\t-1.72\nsGXHJGAJijhA`Xl^R`\t-1.72\nsGQHJGAJijhA`Xl^R`\t-1.72\nsGQ`AbeLuT@ptUxlP\t-1.72\nsJPH@DIJuPC@bK\\a@\t-1.72\nsJPhLQDIKTpCA@|d@\t-1.72\nqC`D@Hd`iCRD^hCr@\t-1.72\nsJPH@xIKUPC@qX|`@\t-1.72\nsGT@A\\dbMU@LMC^IX\t-1.72\nsNqA@IRiVjhA`xlZp\t-1.72\nsGQHI[AJijhAaecrT\t-1.72\nsJPH@xITuHC@qX|`@\t-1.72\nsGP`ATeejPFBQxi`\t-1.72\nsGP`ITjfj`FFVOIP\t-1.72\nqC`DBPe@iCRBSU@P\t-1.72\nsJQIHGB]GuPCCKD\t-1.72\nsGX@HeTuR@prqyJ\t-1.72\nQMCAxhabHzAad`\t-1.72\nsGT@ATegipGdH\t-1.72\nRFTE@Q`xi@y@\t-1.72\nQMBCpchFCOH@\t-1.72\nQMHAIdFD|R@\t-1.72\nQMbDBDfp^P\t-1.72\n`IDhCr@\t-1.72\nsNq`@VdsMUPCBbKGbk@\t-1.72\nsGQ`@ZdruT@pHboEb\t-1.72\nsGQ@@dsMT@pQoDl\t-1.72\nsNq`AVdlmUPCAbXu|b@\t-1.72\nQMFIOBN`XUqD\t-1.72\nqC`HBPT`duPGbf@\t-1.72\nHeTD`HP@cIHXdmpk@A@@phj[iy@@\t-1.73\nsOx@@drm\\@@@phVKyJ\t-1.74\nsNx`DFdskUHCAK\\Qh\t-1.74\nHaDD@@yIe^f`@`@XHa\\HLk`\t-1.74\nHet@@DjYUX^d@@@@A`rXS\\ODjP\t-1.74\nsGPYHlQxGdjmj`Gbu@\t-1.74\nHifDAHAHeNR[e^Eh@@@XXUCqFx\t-1.75\nHaF@@@Rfu[i@@@FAXUMqDx\t-1.75\nsGQ`@bdwMT@pVODj\t-1.75\nHeTJ@@qaeJYyzzjjj@FCPUMt|qLD\t-1.76\nsJX`BDdvu@LDmrD\t-1.76\nHmVBaNaLHO@nz\\ddqRdZjj`AaULLkrL@\t-1.76\nHidD@@QInUxV`@@AaRESCrN@\t-1.77\nHaDH@@RYVijjj@FCPaTw\\PL@\t-1.77\nsJPhLQbIKTpCBCba@\t-1.77\nsJPhI`xIKTpCBGd@\t-1.77\nsGY@DDfUjPFFVoHP\t-1.77\nsGQ`@jdvmT@prqyJ\t-1.77\nsGP`ATf]jPFBVyB\t-1.77\nsGX@@dj}T@prqyJ\t-1.77\nqC`PBlRVhCCBKdp\t-1.77\nqCaPS@pRVdCqA@\t-1.77\nQMhDRYAaOD`\t-1.77\nsOx@@drm\\@@@pHU_Eb\t-1.77\nsOp@DjWkB@@FAfkxdP\t-1.77\nHidH`H@HRnUvy`@`@XUaTp|`@\t-1.77\nHiDD@@QIeWZjh@XUaTw\\`P\t-1.78\nRFDBIFCqH\t-1.78\nHidD`HP@cIHXdnEX@@@XTUMp|`@\t-1.78\nHaD@`@BDfUzZ@B@AaRXU]r@@\t-1.78\nHeTH@@rJJJJlLADP@LL@fye]H\t-1.79\nHidH@@rJJIEn`HH@FF@S\\sJD\t-1.79\nRFDFIFCbkBD\\h\t-1.79\nRFDFIFCBNT\t-1.79\nHmtL`HS@BLddlRVFUh@H@FCYS\\J`\t-1.8\nHeVH@DAInU~Eh@H@FAES]qDd\t-1.8\nsGP`Adifj`FFboEb\t-1.81\nqCb@AIZ`LLHnS@\t-1.81\nKA|@@@djkUU@FGABXUMrN@\t-1.82\nKA|H@XGIKZmUHA`RXU\\RF@\t-1.82\nsGQhHjOCIHTuHCB[fBH\t-1.82\nsGP@Di]j`FADQxmP\t-1.82\nHg]L`FvDp@cIIJeDednkUUUT@LApjxYT~QX\t-1.83\nHkmL`FvDp@cIIJeDeeuZjjj@FGXU\\LkrC@\t-1.83\nHcML`FvDp@cIIJeDdnkUUU@CClJnFUyF`\t-1.83\nHg}@@@mJYeU|]Tz@@@H@A`hXUMpri|bp\t-1.83\nHmL@`EhLddTQaQnFjjjh@XSBXUMpsrE@\t-1.83\nHknHBFAiRYfUnSjB`h@AahQaUprngrF@\t-1.83\nHg^B@D@agHhhdmBeSMURuT@LJqet~QX\t-1.83\nHmL`B@aBBTiWe\\JUZh@D@FEMproDA@\t-1.83\nHknBAHAIvISdfyWVxV`@i`@XDUMwHL\t-1.83\nHmwDAHePRISdfyW^Eh@I@A`QTw\\aP\t-1.83\nHid@P@bDbDfyWaj@@@FG@aTwCrH@\t-1.83\nHeT@b@|@eJYU^f```@FGIaMpsq@h\t-1.83\nHiDLbHS@BL{IIJdejj@FAES]rA@\t-1.83\nKAx@PQHIHUHMHYIHXjjh@p`nIg@\t-1.83\nHmvJ@D@aeTfYWjYjjV`A`fMrE@\t-1.83\nHmtH@@RYvUeVf@@@FGHS\\LkrL@\t-1.83\nHidH`HApRem^Fh@@@XMaTwCr@@\t-1.83\nHid@`@|Die_ahH@@FCXUMp|PD@\t-1.83\nHidD@@QInUxZ`@@AaTES]s@PP\t-1.83\nHeTH@@RYWZf`@j@A`pIaTODzP\t-1.83\nHid@@DjUfaBB`@FEQc\\OLPj@\t-1.83\nHaD@`@bDeeVz`@@A`pQaTwHx\t-1.83\nHie@@@EJ[W[j@B@AaVESCq@P\t-1.83\nHmt@@DjYnvDHbJ@AaVUtkrA@\t-1.83\nKA|A@PCaddTJjj`CAdpj[nP@\t-1.83\nsNqdHjG@nFRQFUU@LBLWqJ`\t-1.83\nKAxX@@gILjmUHAafDwHh\t-1.83\nsNpXHlpDYIBdmT@pQoDF\t-1.83\nqCbPXXbRt`\\JVBlHHSdP\t-1.83\nsNyHHpxYIECUR@prux`P\t-1.83\nsGXHHGCIHcUPC@kF|P`\t-1.83\nsOq@@drm[UT@pJqoHp\t-1.83\nsGPHADIJmU@LJHl^R`\t-1.83\nsJQDBIARBS]T@pVOI@\t-1.83\nsNxHHGAJijj`FAVkyB\t-1.83\nsOu@E`drm[SR@pU_Eb\t-1.83\nsJPdEaDSpR[f`FDGEB\t-1.83\nsGP@LdbMU@LJHm^P`\t-1.83\nsNq`@fdr{UHCBGbu@\t-1.83\nsJPhHaIIRuPCAX|`@\t-1.83\nsJPHAXIKUPC@qX|`@\t-1.83\nsJPYHlPLGh}Z@^S@\t-1.83\nsJT@@TizhAaicqA@\t-1.83\nsJQA@IRej`FAbqy@\t-1.83\nsJTHH`xQ}T@pVOED\t-1.83\nqCbPXXbRt`XHSdP\t-1.83\nsJPXhlPL[ct^m@H\t-1.83\nsJQ@@dsU@LBHcrX\t-1.83\nsKQ@@eKcUPC@qX`\t-1.83\nqCp@AIZ`LLInQ@\t-1.83\nRFB@QZDXLJy@\t-1.83\nRFBDQFDXLHyP\t-1.83\nRFaDSGCr@\t-1.83\n`InqHFD\t-1.83\n`IoApGd\t-1.83\nsGQiHl@c]ddeVhAaCrT\t-1.83\n`IO@Cr@\t-1.84\nsNx`BDdw[UPC@kF|c@\t-1.85\nHefLa@XY{pBY{IIETiUUL@LJaLJnQp\t-1.86\nsGQiHlOC\\eWmT@paxaP\t-1.86\nsNp`@dfuZj@X[F|RX\t-1.86\nsJX`LDdru@OEb\t-1.86\nsNp@LdbLjj@XTQU|VH\t-1.87\nQMFIOBM`^H`\t-1.87\nHiDH`DBHR[UYjj@FCAaTw\\`P\t-1.88\nqCb@AIVpOEL\t-1.88\nRFDGaFCBnP\t-1.88\n`IE`CB@\t-1.88\nHet@@DjYUX^d@@@@A`rXwCODJ`\t-1.88\nsJP`@dfvdAaCqK@\t-1.88\nsJP@DiZhAaaEqX`\t-1.88\nHmv@@@rRJIIFUjB`@@XBfES\\L|aP\t-1.89\nsNx`LDdr{UPCAZ|QX\t-1.89\nsJQ@@djs@LDcqS@\t-1.89\nsJX`BDdvu@LDcrX\t-1.89\nsNx`JDdrsUPCAZ|QX\t-1.9\nqCb@AIZPLDmqB@\t-1.9\n`IDPCr@\t-1.9\nHmvLAHAIbTyInUwaZ@B`@XDUMwHT\t-1.9\nsNq@JeTuTpCCKGdX\t-1.9\nsGX`BDdwMT@prqyJ\t-1.9\nqCcPQX^D]hCsAX\t-1.9\nHcLFbHSFgP|L{IIlheBJmUUU@CAbkiW^H@`\t-1.91\nqCb@AIi`LInHH\t-1.91\nQMB@HRZA`erP\t-1.91\nJgB@@FRQQIIEIixSl@@@@@@CBTpnE]N~QP\t-1.92\nJgBD@@YHhhhddZFSvzdI`R`@LFInT{y`sh\t-1.92\nHk\\L@@PtfUe]ieujP`J@AaV\\L{rC@\t-1.92\nHefHA@`IclddqRUUUP@pyLJfx^QH\t-1.92\nHmt@@DjU_ZxHDf@AaLIaTwCOHT\t-1.92\nHeT@@DjU_k``RP@XCBXUMp|bP\t-1.92\nHidD@@QInUxV`@@A`RMp|Pj@\t-1.92\nHaD@`@qDeeVz`@@A`pQaTwHx\t-1.92\nHidD@@QInUxV`@@Aaa\\OLRf@\t-1.92\nHifD@DCdfYTfZiZ@FFYS\\`P\t-1.92\nHidH@@RVUvy`@`@XUFES\\`P\t-1.92\nHiFD@LADfuYjj`AaVTwCqDH\t-1.92\nHaD@@DkeV{`@@AaVES]rH@\t-1.92\nKAx@@YIDTjjh@pxHSBinQp\t-1.92\nsJQBDHbNF\\CDIJuPCA@|Tp\t-1.92\nsNpD@xRHrRSFjhAaXl[rL\t-1.92\nsOpH@fILkW@@@LJlZ~P@\t-1.92\nsOpHMPIToVD@@LKDZ~S@\t-1.92\nsGPhH`xITmU@LMc^P@\t-1.92\nsNpP@jtfvZf@XIOdp\t-1.92\nsNpP@jtfvZf@XS\\RX\t-1.92\nsJPHAbIJuPCCA[ba@\t-1.92\nsGT`EaTeUfPGba@\t-1.92\nsJY@DDfvdA`l^Q@\t-1.92\nsJP`ADkjhA`l^JH\t-1.92\nqCaHK@H`QGe@|P`\t-1.92\nqC`PApRfdCCQ[d@\t-1.92\nQMFICBN`XQqd\t-1.92\nRFTPXQ`|R@\t-1.92\nqCa@CIJrAxh`\t-1.92\nHcL@h@dBdFdAdEdDfYn\x7Fi`bHh@GdZ\t-1.94\nHaD@`@BDeeVz`@@A`tXUMwH@\t-1.94\nKAxH@@bSJkUT@XEaTwHx\t-1.94\nsNpXHlQxIUZuT@paxjp\t-1.94\nsNx`BDdw[UPC@kE|e@\t-1.94\nsGP`Adinj`FFboHP\t-1.94\nQMBBlRZA`erP\t-1.94\nsGP@DjZj`FADQxmP\t-1.94\nsGP`@dfUj`FBqyJ\t-1.95\nQM`AIxGd`\t-1.95\nqCcRQX^FzNtAx``\t-1.95\nsGP@LdbMU@LBEcqR`\t-1.96\nsNx`BDdvsUPCAK\\UX\t-1.96\nHifDAHAHeNR[e^Eh@@@XDUMwHD\t-1.96\nqC`@ISTAaaErX\t-1.96\nHefB@LANEImfVjf`A`VDL|QF@\t-1.97\nsNx`JDdrsUPCCXwdX\t-1.97\nsJPH@xISuHCCSGbB@\t-1.97\nqCj@KAIVPOEL\t-1.97\nRFTPlQ`|R@\t-1.97\nHifDAHAHeNR[e^Eh@@@XDS\\OHh\t-1.97\nsNq`@fdr{UHCB[bM@\t-1.97\nHaFHAH@NbTeeVz`@@A`VES\\RN@\t-1.97\nQMFiOAzM`^P\t-1.97\nHeTD@@eIYe^E`HD@FFEW\\rFD\t-1.98\nqC`H@HpPdmPFBbxa`\t-1.98\nqC`PBHRVhCCBKdp\t-2\nsGQhHl@cIIJmPCAX|e@\t-2\nHaFH@FAIeZn`B@@XXe]s@q`\t-2.01\nsGX`BDdvmT@pRwDZ\t-2.01\nsJQiHl@c]GkPCrD\t-2.01\njhyQ@@LT@eLw\\jobaoNCSL@@@P@@pEpTeZMYwD^B\t-2.02\nj`a``@NPYddblrRbR]zjfjjj@AaiFB\\dkQkN}r@`\t-2.02\nHmt@hL`J`N`I`E`DjYnvDHbJ@AqVHEHGHDhBhGHD\t-2.02\nj`qQ@@G^@dsLjolcZmT@@@T@@LM@IQgARUiwnP`\t-2.02\nj`q@`@@^RYWYm^cKN`@j@B@@FF`HpRdeZM[wH\\@\t-2.02\nHo|LHJXXdDdLdNkLddlrfbRmzij`@@A`wKiv\x7FHD\t-2.02\nHgnHxCuICI@iAiCi@YBYCIIEIYGMUUUM@CBKyA`\t-2.02\nKAxQPTdAd@T@tAtAddbejj`CbdPLPBPFPNPNQ@\t-2.02\nHg]DHNff`HRPrPJPrRQR]QIG]Tm@@@C@et{yG@\t-2.02\nJoB@I@Xb^BRdlsJkkYoU@@@@@A`XQS\\Lkiv\x7FHP\t-2.02\nJoB@I@QB^BRdlsJkkYoU@@@@@A`XQS\\Lkiv\x7FHP\t-2.02\nJoB@H@AEABTrj}ktv}AA@@@@FAaaTwRng[|a@\t-2.02\nHg|@R@kH|HeIfYU^Svz`@@@@AahES\\LkiwrH@\t-2.02\nHg\\DHJZIAICICjsIIKLeDd]uST@@@LJe]N~Qp\t-2.02\nj`aaP@NPXkSlddUfbbaVcUTuMSP@LJHpRWnPl\t-2.02\nJoC@QDAxAJUKMjnmf}T@@@@@FFeS\\Lkiv\x7FDB@\t-2.02\nHgnHhFjIAICi@YBWCIICEMCIUMUU@C@et{yA@\t-2.02\nJoB@Q@^@ReSLjokYoT@H@@@A`^ES\\Lkiv\x7FH@\t-2.02\nHo\\DHJvIAICi@YCIICELXiJijij@FAL]orB@\t-2.02\nHg\\DpIVIAICICIIKEEDb]uU@p@@LFxUt{yA@\t-2.02\nHklLPHS@\\J\\LddQbbQtzjB`@@XCS\\Lki|QL@\t-2.02\nJoC@HGAbObILkkJ}L]p@T@D@@XJBXURnf\x7FHx\t-2.02\nJoB@X@^ErCrBTsJkzNj]@@@E@@F@xUMproH@\t-2.02\nJoB@P@^BTkLjnmf}T@@@@@FApeMprng[|`@\t-2.02\nHg|@P@BH\\DfYeUyO[j@@@@@FF`UMprng_H`\t-2.02\nHcm@RDpLROBIRYfUQe]jjjj`AaHES\\LkoH`\t-2.02\nHcm@RDpHbOBIRYfUQe]jjjj`AaHES\\LkoH`\t-2.02\nJoBDPD@xIU\\vjzv[uP@@@@@XZUMprng[|b@\t-2.02\nHkLJHJ[mN@aICI@iCIIEIuEJiZi`A``krC@\t-2.02\nHg|@P@SHbDjyeUyO[j@@@@@FFpUMprng_H@\t-2.02\nHg|@b@|@eJYUg_eNzB@@@@AajXS\\Lkiwr@@\t-2.02\nHg|@P@QH|DfYeUyO[Z@@@@@FF`UMprng_H`\t-2.02\nHg|@P@BH|DfYeUyO[Z@@@@@FF`UMprng_H`\t-2.02\nHg}@A@LINTjWvUz[SB@`@`@F@paTLkoDrp\t-2.02\nHg|H`HALRkfUWd}nh@@@@@XJUMprng_DB@\t-2.02\nJoCD@D@e\\sJkkYoU@@@@@AalTwCJz]orD@\t-2.02\nHklHPHipZHrRQVZIKSjj`@@AaJXSCJz_Hh\t-2.02\nHklHpJbPRPrPrRRqJYKSjj`@@A`wCJz_HH\t-2.02\nHcLDPHhG@gCIHcMDdnuU@@@C@PSNFUwbEP\t-2.02\nHg~@`HApRkfUWd}nh@@@@@X[ATwCJz]|`@\t-2.02\nHcmHbDr@|@eJnYUFUvjjjj@F@eS\\LkoDB@\t-2.02\nJoB@P@^BTsJkzNj]@@@E@@FBxUMprmor@@\t-2.02\nHg|@`@bDfYeUyO[j@@@@@FB`UMprngqHl\t-2.02\nJoBD@@IS\\rjzv[uP@@@@@XZeMprng[|b@\t-2.02\nHg|@`@BDfYeUyO[j@@@@@FF`UMprng_H`\t-2.02\nHg|@`@qDfYeUyO[j@@@@@FF`UMprng_H`\t-2.02\nHklD`HPGCIHdhdd]Nj`h@@FDeS\\Lki|`@\t-2.02\nHcNHpMJIAICICIIJhdmJuT@D@C@fxYyF`\t-2.02\nHg|H`@b`RYfUWd}nh@@@@@XJUMprng_H@\t-2.02\nHed@H@BH\\LBBBLdTTUeUUP@pdHSJ[agdD\t-2.02\nHklHpJbPRPrPrRRsQIY]jf@B@A`WCJ|`p\t-2.02\nHmTLpHS@\\J\\F\\LddRLTjjj`AaqTwCJ|c@\t-2.02\nHco@`HS@|DjyeTYWVjjjh@XBUMprn|PH@\t-2.02\nHctBHJ[m`HRPrPJPrRQR]QURuR@LDE^QH\t-2.02\nHcL@PH\\JbLddT\\RR{UT@@@LISBkae]yD@\t-2.02\nHg|H`HBDRkfUWd}mh@@@@@XJUMprng_H@\t-2.02\nHcLHpMbPRPrPrRRqIPcMT@D`@pJfF^Ph\t-2.02\nHg~@@@RYfUWd}nh@@@@@XZATwCJz]|b@\t-2.02\nHk\\@b@k@eJYeUquSh@@@@@XZFES\\Lki`\t-2.02\nHk\\@`@sDifUWGUN`@@@@A`nES\\Lki|`@\t-2.02\nHeT@pHbDbLbLddlRPsU@@@CChSJ[ayD`\t-2.02\nHk\\@`@rdifUWGUN`@@@@A`nES\\Lki|`@\t-2.02\nHctLhAgTdLdBdJdFdLddTgfUUTt`CrE@\t-2.02\nHg}@@@aJnYU^Svz`@@@@A`iTwCJz]|b@\t-2.02\nHkn@`NaprRQRjYKSjjp@@A`JXPrngrH@\t-2.02\nHcvHPDDGBWCIIEHniUUUP@pELJfy]yD`\t-2.02\nHcvHPAPGBWCIIEHniUUUP@pGBinE]yD`\t-2.02\nHcmH`Dr@|DjyeTYWVjjjh@XBUMprn|`@\t-2.02\nHg|H@@RYfUWd}mh@@@@@XRUMprngrK@\t-2.02\nHmv@PHApIpRi[WeZhH@@F@qeMproD@`\t-2.02\nHed@hH\\DdLdAdIdLddTaeUUP@prf{dD\t-2.02\nHiFDhNihBDdLdBdApLddTgjeh@XPOHx\t-2.02\nHg}@@@mIe]e^ftx@H@H@A`JXUCJ{q@l\t-2.02\nHglF@HXUN|ddUfffeUMUL@LNSBxYWdV\t-2.02\nHmtD`HPGCIHdhTiVj`@@AaqTwCJ|`@\t-2.02\nHiD@p@BH\\LBLdRbLjjh@XBBXUMp|b@\t-2.02\nHg}@@@mIe]e^ftx@H@H@A`hIaTLkm`\t-2.02\nHkmD@J[SrRQRqQXYjjje`A`tIaBoHx\t-2.02\nHknB@D@agHhhdmBjYjjVj@FAXr{rC@\t-2.02\nHknD@NalddUfbRtzjZjh@X\\fDLkoHL\t-2.02\nHmTLPDp`ZHbDjmyjjjh@XBDTwCJ|``\t-2.02\nHcvD`Naj|LddUfbUUUU@C@TpjFUwdL\t-2.02\nHmtHPHApIpRi[WeZhH@@FGYS\\Lkq@H\t-2.02\nHk^@@@RYWYVftx@H@@@F@iaTLkoD@p\t-2.02\nHedLHJ[hBDdLdBdLddTgUTmP@pb^PH\t-2.02\nHkLJ@HXUOIIEYiijjZjPAarXWCJ|cP\t-2.02\nHmTLPDeP\\ABLddTb|jjiPAaVES]rA@\t-2.02\nHcL@@LdbRbceBDEEP@LIaL[ae]yE@\t-2.02\nHmtD`HPGAJge^Uj``@@X\\UMproDA@\t-2.02\nHcND@NalddUfbR{USUT@LFSBE]yD`\t-2.02\nHedDhAeICI@iBiAiCIIEIyUUL@OHd\t-2.02\nHmT@P@\\HbDjmyjjjh@XSBYS\\LkrB@\t-2.02\nHcNH@JGIIEJeipuUMU@CChSBY]yD`\t-2.02\nHkLDbMLG@~rRQRVPrjjjX@X\\fDwRh\t-2.02\nHmT@P@|HBDjmyfjjh@XSBYS\\LkrB@\t-2.02\nHctL`HS@\\DjevZjij`A`ITwCJ{rL@\t-2.02\nHmvLAHAEbTyInUwaZ@BP@XDUMwHd\t-2.02\nHcvD@AklddUTReUUU@CChSBY]yD`\t-2.02\nsJPKAPR@TAh@p@zOj`GAb@dCHAP@\t-2.02\nHcvD@NalddUfReUMU@CCdpne]y@`\t-2.02\nHeT@`@\\LddTjPsU@@@CCdpj[ayD`\t-2.02\nHeTL@HSLddlRPsU@@@CBj[agfPf@\t-2.02\nHed@P@bH\\DfUfjjj@FD`fES\\L|b@\t-2.02\nHmvDAHAHeNR[e]xV`@h@FEES]OHT\t-2.02\nHmuH@JY\\ddTlRzZjjf@FCPfDL|a`\t-2.02\nHedDPDpFbHaJmYjjj`AatES\\L|`@\t-2.02\nHefD`Naj|LddUfUUUP@pYLJagbMp\t-2.02\nHmVH`FboCIIEUDjjjh@X\\fEproHh\t-2.02\nHeTB@@HYRYgUnjjj`A`HPaMpsqLh\t-2.02\nHclH@@RVUmVy]X@@@@A`vLLkoD``\t-2.02\nHeTL`HS@|Dj~UFVh@@@XUS\\L|PL@\t-2.02\nHmVD@AklddUTtjjj`AatIaMJ|c`\t-2.02\nHeTH`HApRee\\YjB@@AavES\\L|`@\t-2.02\nHedL`@idhLdTTNeUUP@pZLKagdL\t-2.02\nHiDBPHSB@HiprRPzQZj`Aac\\OHH\t-2.02\nHmtH@NrRQRqZUj``@@X\\fDwBoHd\t-2.02\nHmtD@@yJUe^Uj``@@XCBTwCJ|``\t-2.02\nHcl@@DjYU_egX@@@@@XJfES\\Lkh\t-2.02\nKAxQ`HCaDQSaddfLjj`CBhpf{dT\t-2.02\nKAx@PQHIHYHLxYIITjjh@ppj{dL\t-2.02\nHmTD`HPGAJeVZjfj@F@xUMproH@\t-2.02\nHedL`HS@\\DjWfjjj@FCES\\L|PL@\t-2.02\nHmTB@HXUrRQVZZjfj@FCIa\\J|bP\t-2.02\nHedL`HS@|DjWfjjj@FG@UMpsrL@\t-2.02\nHeTD@@gHeDeBwL@D`@psB{fPp`\t-2.02\nHiDD`@iJCIEDUJjj@FCQaMp|a@\t-2.02\nHedL`HS@lDjWfjjj@FCES\\L|c@\t-2.02\nHed@`@\\DjWfjjj@FDaBES\\L|c@\t-2.02\nHmTB@HZUrRQVYRjff@FAIa]rE@\t-2.02\nKAx@`@xTxYIDUJjh@pZDpf{bAP\t-2.02\nKAxH`PpNENFRRJrjj@LJSBknPp\t-2.02\nHeT@@LddTjPsUUU@C@XSBinGdR\t-2.02\nHedL@@pldTTUeUUP@pzDinF^PP\t-2.02\nKAz@dI`Xd^DRdsMUU@FE@UMwH`\t-2.02\nHmVD@NalddUfbjij`A`RXT|PU@\t-2.02\nHiFH`FboCIIETjjj@FEIa\\ODi`\t-2.02\nHeVH@JGIIEJepuUMP@pjDpfyD`\t-2.02\nHefH`D`OAJVyjjj`AavES\\L|`@\t-2.02\nHef@`HkprRQJrUSU@CAdpnF^QP\t-2.02\nHed@`@\\LddTeeUUP@pyLInF^QP\t-2.02\nHefH@NkIIETiUUT@LFaLHYyC@\t-2.02\nKAxHPTtRBRFRGAVRRVZjZ@OHx\t-2.02\nHedF@@PfFTf{nZjf@FAXUMqDd\t-2.02\nHiDD`HPKAJUfjjh@XMaTwCr@@\t-2.02\nHeTH@@RYWZf`@j@AapIaTL|c`\t-2.02\nsNpJIHJPtaZqrFRRVUU@LI^P`\t-2.02\nHefD@NalddUfeUUP@pYLJagdL\t-2.02\nKA|I@]CUxYIHkJjh@pILJnHw@\t-2.02\nsJPBHDJ@t@XBOj`GFRAd@hGI@\t-2.02\nKA|Q`MTRBRFRFRRVZjZ@LH{dL\t-2.02\nHiDD`HPGAJUfjjh@XMaTwCr@@\t-2.02\nKAzQDIdAxAJU\\uUT@XDUMwDB@\t-2.02\nKA|A@PCaddbljj`CAdpj[nQ@\t-2.02\nHiD@`H\\DjfZjj`AarXUMp|b@\t-2.02\nHiD@b@|@eJiUjjh@XRDIaTwB\t-2.02\nKAzA`TtRBRFRFRRUJjY@ODK`\t-2.02\nHaD@`@|DimVzP@@AaVES]q@P\t-2.02\nHiD@`@\\DjVZkj`AarXUMp|`@\t-2.02\nHiDD@JGIIEFjii@FAIaMrN@\t-2.02\nsJPK@ERlUYjpu`ZOj`FEDVH\t-2.02\nKAxA@@xYIHkJjX@pjDpfyG@\t-2.02\nsJPKAVRHTQh`q@zOj`FEDVH\t-2.02\nHiFH@DAIYfZjh@XMaTwCrH@\t-2.02\nsJPKA\\SDVIlPx`ZOj`FEDVH\t-2.02\nsJPK@\\SDVIlPx`ZOj`FEDVH\t-2.02\nsJPKA\\RHTQh`q@ZOj`FEDVH\t-2.02\nsNpLAbWD^HdlmUPCAbXu|b@\t-2.02\nKA|P@UvRRJjji@LBSBkbPp\t-2.02\nHiD`bJ[aArAdjeVj\x7FpAa@@\t-2.02\nKA|P@UvRRJNji@LJaLJnPp\t-2.02\nsNtDHpxTHrRQVjhA`Uc^JL\t-2.02\nKAxX`EWAHIHIMvuMHAxdL\t-2.02\nsNtLJyHJPtaddeUTpCqE`\t-2.02\nsJQBbJBRBdMHCcL_U@OHP\t-2.02\nKAz@@AVRQERjj@LFaLIn@\t-2.02\nsNyhGE`DYIITmT@pvMyF\t-2.02\nsNpIAxBTjUjj@XNKFod@\t-2.02\nsGYhKEaxYIIVj@XYX|e@\t-2.02\nsNyHHpxYIHkUR@pLVOIP\t-2.02\nsNyHGKxYIHkUT@prqxjp\t-2.02\nsNphH{xYIHkUT@prqxjp\t-2.02\nsGXDHGBaBUSUPCCKGbe@\t-2.02\nsNphHpxYIHkUT@prqxjp\t-2.02\nsNqHFGCIIEZjPFAbqyJ\t-2.02\nsOpAMJUKua@@CBqFodp\t-2.02\nsNpH@xYIHkUT@plVMyF\t-2.02\nsNpHAxISMUT@p\\VM_H@\t-2.02\nsGPD@xTHRjZj@XFKGdh\t-2.02\nsNpHHDYIHkUT@plVMyF\t-2.02\nsNyA@qNRRJuT`LCEcrT\t-2.02\nsNtA@QNRQFMU@LBmWrP\t-2.02\nsNpHAXYIDYUT@pLM_Dl\t-2.02\nsGPH@xISuU@LCL[qA@\t-2.02\nsGPHAXISuU@LCL[qA@\t-2.02\nsJPhLQbIKTpCA@|d@\t-2.02\nsNq`@fdvkSHCAX|Rh\t-2.02\nsNp`Adimjj@XYF|TX\t-2.02\nqCaHKBHg`dtpFDGEL\t-2.02\nsGQHI_AJijhAaecrT\t-2.02\nsN|ICVGHLeRmWxCr@\t-2.02\nsJPIAxBX~j@XTQX`\t-2.02\nsGP@DjZj`FEBqoI@\t-2.02\nqCcPQXND^hCBCfbp\t-2.02\nsJQ@@dkU@LBHcrX\t-2.02\nsJPXHlPDQzt@|VH\t-2.02\nqC`PBpcu@^ZK@\t-2.02\nsBQ@@eLUT@pTWI`\t-2.02\nsGY@LDemj`FFVoEB\t-2.02\nHiDL`HS@|Djmujj`A`UMp|``\t-2.05\nHeTD@@QInU~Eh@H@FEHUMwHd\t-2.05\nsNqhHlOCIILVj`FBkxlP\t-2.05\nsGPhHaxIU{U@LD[qC@\t-2.05\nsGQLKIARFdLddmU@ODZ\t-2.05\nHifDAHAHeNR[e^Eh@@@XXSCqJx\t-2.06\nHiDJ@@PfEIn{Zjd@XEaTwDS`\t-2.06\nKAxH@@bSKKTt@XXUMrN@\t-2.06\nsJY@LDejhA`QEnP`\t-2.06\nqCbPPNBUu@XI[bD@\t-2.06\nHcN@B@B\\dbRTJR{UT@@@LEaLinFUwd@\t-2.06\nKA|@D@DiUJuUPA`tIeMwHH\t-2.06\nqCcRQXAFzNlAy@\t-2.06\nQMFi@azM`^P\t-2.06\nHefB@BAAeImgfji`A`RYT|a`\t-2.07\nHiFB@BANEImVZjX@XDfTOHH\t-2.07\nsNx@AddQeUPC@pu|Rp\t-2.07\nsGX@@eOUT@pLqoDD\t-2.07\nQMBCDRZAaGFP\t-2.07\nsGX`JDdrmT@pexlP\t-2.08\nsJQ@@dmU@LLInID\t-2.08\nRF`EECqH\t-2.1\nHkmLAHdDvISdfyWVxV`@i`@XTUMt|`p\t-2.11\nHcMLAHdDvISdfyWWaZ@Bd@FEES]OHT\t-2.11\nHklD@@QIVYYQujjjj@FBxUMprngrH@\t-2.11\nHeTLbHS@|LyJoeQej@@@FATwCq@d\t-2.11\nHcL@@DjU_VnBBJh@FBpfES\\LkrM@\t-2.11\nHiFHA@`IclddqRjjh@XLfES]rA@\t-2.11\nHidL@HP\\ddRNijjj`A`VEP|Qn@\t-2.11\nHidD`HPOAJvUxV`@@AaQTwCr@@\t-2.11\nHidH`DBHR[e^FX@@@XTATw\\`P\t-2.11\nKA|PBA@SGYIIbjjh@piLJfyG@\t-2.11\nKAxQ@HDPdvkMU@FEAaTwHx\t-2.11\nsNyDJQHJPR[nihAaGqR`\t-2.11\nsJPL@xRHTQGuPCCQ[dH\t-2.11\nqCbXXQD|EDIMRA``nR@\t-2.11\nsOx@@drm\\@@@pHV_DZ\t-2.11\nsJPDADIpRVj`FADqyD\t-2.11\nsGPH@DISMU@LBEcqR`\t-2.11\nsNp`ATiujj@XYY|TH\t-2.11\nsJQHHGAJ^j@XYX|`@\t-2.11\nsGX`JDdrmT@pQoI`\t-2.11\nsGP`@deUjPFFqoI@\t-2.11\nqCaPQApcu@XH[bb@\t-2.11\nqCaPAR`RZhCAA\\f@\t-2.11\nsJPdE`DRPcyXAyB\t-2.11\nsGP`@dfUj`FBMyL\t-2.11\nqC`PApcu@XXQ\\f@\t-2.11\nqCx@AYIf`LLE`\t-2.11\n`IE`Cr@\t-2.11\nsJQ`@bdvt`ODl\t-2.11\nHaD@`@bDeeVz`@@AaPXUMqHx\t-2.11\nsOp@DjWkiV`FAbMxlp\t-2.11\nsGX@@djuT@pHVOEJ\t-2.11\nsNxA@IRiVjhA`xlZ~P@\t-2.11\nHcLF@@siWTify^ajjjj@FDpaTwBn|SI@\t-2.13\nHmtLbHS@BL{IIKDeaeZ@B@AaUMpj\t-2.14\nHeUDAHdDbTyInU~Eh@H@FAES]rI@\t-2.14\nqCcQQX^B{]GZ@|`@\t-2.14\nHaF@@@RYWih@H@FA@aUqLx\t-2.15\nsJPhEaDIMsPCBCdH\t-2.15\nRGDQxQP|R@\t-2.15\nsOx@@drm\\@@@phQkyL\t-2.15\nsOp@DjWkjj`FEDVOEV\t-2.15\nQMBCpRZAaWDP\t-2.15\nsJP`@TfVdAxe`\t-2.15\nQMHAIXFE\\d\t-2.15\nqC`@IRtA`enHP\t-2.16\nHevH@DAIemRhYZ`@`@XDwCODP`\t-2.18\nJoC`@@PzTlrj\x7FI{[P@@A@@FDeS\\Lkm|ap\t-2.19\nHk\\D`HP@cIHXheDQgSV@@@@@XMWCNgq@T\t-2.19\nHk]@A@LINTjWvUimLHB@@@A`LHUCJ{qLL\t-2.19\nHclL@@STfUmVfeVi@B`@XEgBoDkP\t-2.19\nHmt@`@\\DjYuQVhHD@A`JES\\Lkq@p\t-2.19\nHmtD`HPOAJUyVUjh@@@XMc\\Lkq@H\t-2.19\nHcnD@D@TfYg\\fWVjA@`@XEtkoHh\t-2.19\nKAxPP]D`daT`taddabjj`CAB{dX\t-2.19\nHidH`HCpRUe^Fh@@@XLaTwCr@@\t-2.19\nKAxX`Pf@DDxYIBeEjh@prf{b@P\t-2.19\nHiFD@L@TeYVjj`AapPaTp|c`\t-2.19\nHid@@DjUfaBB`@FGPfES]rA@\t-2.19\nsNqLKIARCdLddJjj@XKWdH\t-2.19\nsNqDHG@nFRQFUU@LJEj~P`\t-2.19\nsNpdIPxEprRHrjhA`Pl~Ht\t-2.19\nsNpXHlqxYIITuR@payej\t-2.19\nsNt@A\\dbJjj@XVKE|e@\t-2.19\nsNqhHlOAJkVj`FBkyB\t-2.19\nsJPDADQpRVj`FABqyH\t-2.19\nsNp`@dfvZj@XEFodp\t-2.19\nsJPhHaxIUmPCBGbF@\t-2.19\nqC`HCDvHdmPFBFxh`\t-2.19\nsJPhHQLiJuPCCA[dH\t-2.19\nsJXHHOAIZj@XYX|P`\t-2.19\nsJPYHlQxGh}j@XIX\t-2.19\nsFx@@eJf`@@LKEcP\t-2.19\nsGP`@Tizj`FAfMyD\t-2.19\nsGP`ADiVj`FBMxe`\t-2.19\nsJPhH`xQ}T@pfyhb\t-2.19\nqCaPKBHRZXCBCdp\t-2.19\nQMCALhabHzA`sr@\t-2.19\nqCaHK@HdaGe@|`@\t-2.19\nqCbPPNBTu@XI[d@\t-2.19\nsJPH@xQ}T@pTWEb\t-2.19\nRFDEaFCqH\t-2.19\n`IlaHFD\t-2.19\nsNx@@djmUPCAbKF|c@\t-2.21\nqCpPHABRk@XP\\f@\t-2.21\nsJQ@@dsU@LBHmrD\t-2.21\nsJX@@dmU@LLL^JH\t-2.21\nsJXaBDnR[Z`FDwHP\t-2.21\nsFp@DiTt@@AaacsQT\t-2.21\nHeVD`La@BLddlRPrm@@@CBj[agdX\t-2.22\nHif@@@RfU~F``@@XLfES]q@D\t-2.22\nsJX`LDdvu@LInID\t-2.22\nsJP@DiZhA`QEnP`\t-2.22\nsJP`@TfZhA`QEnP`\t-2.23\nsNp`@dfVZf@XJodH\t-2.23\n`IK`Cr@\t-2.23\n`IG`Cr@\t-2.23\nHmVD@NalddUfRjij`A`rXWCOHT\t-2.25\nsGP`@dfui`FBuxdP\t-2.26\nsFp@DiTujdA`QC^IX\t-2.26\nHed@H@\\HbDbLbLddjRUUUP@pFDpj[ayD`\t-2.27\nHmtF`HSBEP|LddqbbeVjjj@FEXULODzP\t-2.27\nHeT@pHdDdLdLddlRPsU@@@C@jxYyC@\t-2.27\nHiDHHNbPRPrPYprRRiJjj`AaaTOHX\t-2.27\nHcND@LADfuYU]Zj@@@FGYWCJ{qDH\t-2.27\nHeTHbACpBTieUzZBA@@XLfDwSq@h\t-2.27\nHeTD@@YIfUqfhH@@FG@UMpsqHp\t-2.27\nHefD@NalddUfUUMP@piLKiy@`\t-2.27\nHifH@JGIIEJnFjih@XUBXS\\c`\t-2.27\nHiFL@BAAR[eVji@FAIa]qJX\t-2.27\nsNplJyDJHtQddeeTpCCQ[dX\t-2.27\nKAxQ@PCaddblji`C@dpfyG@\t-2.27\nKAxQ@PC`eUkUU@FCIaTw\\b@\t-2.27\nsNpBIHJPt`wCIIJjj`FBMyF\t-2.27\nHid@@DjWffB@h@FEPf\\OHX\t-2.27\nKA|P@XBRvsUT@XLfES]rH@\t-2.27\nsNqLKIARFdLddjjj@XQ|a@\t-2.27\nKAxH@MvRRJrjf@LBSB{dP\t-2.27\nsGPLIHJPtaddejhAaCrT\t-2.27\nsNqHHGCIIEZj`FAVKyJ\t-2.27\nsGPD@xRHRjzj@XFKGdh\t-2.27\nsNpH@xYIHkUR@plVKyJ\t-2.27\nqC`DAhdPhcQD^hC@bK@\t-2.27\nsJQdHl@`nFRPkPCq@`\t-2.27\nsJQHHGAJzj@XYX|P`\t-2.27\nsGXHI_AJijdAaecrT\t-2.27\nsGPH@xIUMU@LBl[rP\t-2.27\nsGX@JeTuT@pJqoI@\t-2.27\nqC`PApcu@XP\\tV@\t-2.27\nsJPYHlQLGh}V@P\t-2.27\nsJQa@bnR[ZPGdp\t-2.27\nsJPYHlQVGh}V@P\t-2.27\nRFBCQQDXLJy@\t-2.27\nQMBBpchGfR\t-2.27\nRFDAaFCqH\t-2.27\nKAxP@@djkUU@FGABXUMrN@\t-2.27\nQMbDBDePXQrP\t-2.27\nsJP`@deVhAaCqS@\t-2.27\nRFD@QFCBNT\t-2.28\nsJP`@TizhA`inID\t-2.28\nsGP`@Tivj`FBfxeP\t-2.29\nsNx`BDdw[UPCCXwbS@\t-2.31\nsGP`@dfyi`FBMyD\t-2.31\nsJPD@DDHRgj`FFDwDb\t-2.31\nqCaPQCpcm@^XK@\t-2.31\nqCa@CIKTA`hnHX\t-2.31\nqCb@AIj`LDmqB@\t-2.32\nsGP`@TeYf`FBUxhP\t-2.33\nHeVLAHAIbTyInU~Eh@H@FAES]rI@\t-2.33\nsNpYHlQxGlddqZj@XR|VX\t-2.33\nHeTLbHS@BL{IIKDdLkP@@@pJfx^QH\t-2.33\nRG@D\\OJ@\t-2.33\nsGP@DiVj`FADVxcP\t-2.33\nj`q@@@DjU_VUiqw``RX@@@A`ZBBTYpVcV]{bLR@\t-2.34\nHkLLxJ[hBLdBdAdIdMdCdBbHaHaHbXjejj@Gb\\h\t-2.34\nJoBDH@QPIPIRlrjzv[uP@@@@@XKS\\Lkiv\x7FDa@\t-2.34\nJoB@H@^E^BTrj}ktv}AA@@@@FFiaMtkiv\x7FDB`\t-2.34\nHg\\BPHP{@HTHrRPqIIZSjtBDJ@CCbinF]yB`\t-2.34\nJoBF@DHNRRIGSQITuoUUT@D@AaNEPkiv\x7FD[`\t-2.34\nHctDHDXGBHbgBWCIILYDYUUUP@pzLKaW^QH\t-2.34\nHmTHHDBHapIpzHrJIQRrjjj@F@aeMproD``\t-2.34\nJoB@P@NBULrj~mf}P@`@@@FAxUMprng[|`@\t-2.34\nJoBDPDAxIU\\vjzv[mP@@@@@XKS\\Lkiv\x7FHH\t-2.34\nHk\\@b@B@eJYeUquSh@@@@@XKaTwCJz_H@\t-2.34\nJoBD@@ISJlzoJ[tD@@P@@XJfDwCNf\x7FHl\t-2.34\nHknD`La@BLddJbRvWUjB@`@XMc]JgqJD\t-2.34\nHcNBAHAIvISdfyWWaZ@Bd@FAES]rE@\t-2.34\nHedLPHFP\\JBLddRaeUTh@pKB[nHe@\t-2.34\nHefD`La@|LdabbeUUP@pxBinF^IB@\t-2.34\nHcLD`HP@cIHXhhjJk@QD@CBfxYwd@\t-2.34\nHmUH`Dr@|DjUyjjjh@XBATwCJ|QL@\t-2.34\nHcNB@D@agHhhdmCSMURu@CCLY^Qh\t-2.34\nHed@P@BH|DfUfZjj@FD`fES\\L|b@\t-2.34\nHmv@@@rRJEKKaj@BP@X\\fES]OHT\t-2.34\nHcLD@@QIe^UWVj`@@AavEprn|b`\t-2.34\nHiDHHJbPRPzPFPrRPqRjZ`AxaL\t-2.34\nHidH`HApRkm^Fh@@@XMaTwCq@`\t-2.34\nHmt@@DjU_ZxHHj@AaLIaTwCOHT\t-2.34\nsNpJIVJPtaYArFRRVUU@LINP`\t-2.34\nHiE@`HPOAJ[fjjh@XMaTwCq@P\t-2.34\nHiDD@@kIEDUJjj@FCQaMp|a@\t-2.34\nHiF@`HApRjYjjj@FCXUMp|a@\t-2.34\nHaDH`HCpRVU[j@@@FEXUMwH@\t-2.34\nHaE@@@yIe^f`@`@XTBXU\\c`\t-2.34\nKAz@@AVRQERij@LBSF{bPP\t-2.34\nKA|H@DFIS[UUPAadMwDR`\t-2.34\nsGPdH`xEprRHuT@ppuxdP\t-2.34\nsNqTHmV@`aFRPjKR`ODB\t-2.34\nsNx`BMdbaeUPCCRobV@\t-2.34\nsNqHDHaImYj`FAFMyF\t-2.34\nsJQHBLQIfi@XHSbV@\t-2.34\nQMIDbKpRYAaGJ@\t-2.34\nsJT@@Te^lAyD\t-2.34\nQMBCDRZA`cr`\t-2.34\nQMBApRYA`sr@\t-2.34\nsJPYHlQxGh}j@^IX\t-2.34\nsGP@Djyj`FFbwDZ\t-2.35\nHaE@@@yIe^f`@`@XDfEWDC`\t-2.35\nsNx`DJdrkUPCCHwbs@\t-2.38\n`IaphFD\t-2.38\n`IiApD\t-2.38\nsGPXHlQxIU[U@LInHt\t-2.4\nHet@@LddTQbMpuUUT@LAaLJfz^PH\t-2.41\nHcLH@@RfyY^Vjjjh@XKFES\\LkoHP\t-2.41\nHet@@DjYUZ^D@@@@A`rDwCODr`\t-2.41\nHidD@@QInUxV`@@A`REP|Qn@\t-2.41\nHiDB`HRnApReYjif@FBLOH@\t-2.41\nHaDH@@Rfu[j@@@FAIa]qJX\t-2.41\nHaF@@@RVU[n@@@FAXUMrN@\t-2.41\nsGQHHGAJmjhA`Uc^HP\t-2.41\nsJQDHG@nBUMT@ppVyB\t-2.41\nsJXHHOAIYj@XKGbB@\t-2.41\nqC`P@HRVhCCBKdp\t-2.41\nqCbPPND^hCCA[d`\t-2.41\nsJQ@@dls@LEcrP\t-2.41\nQMJDbDf`XQqd\t-2.41\n`Ld`\\WaB@\t-2.42\n`Ld`XP\t-2.42\nHeT@@LdbbQwCUUU@CBPaBinF^Q`\t-2.44\nsGP`ATf]jPFDWEb\t-2.44\nHclD@@QIeYWieujP`H@FEYpsoHT\t-2.45\nKAxA@AbIJjuUPAapPfES\\c`\t-2.45\nqC`PCDRVhCAA\\Tp\t-2.45\nsJX@@dku@LDmrD\t-2.45\nQMPBcXGcH\t-2.45\nsGQ`@jdvmR@pfxdP\t-2.46\nj`aA@@NYIHiXihYIFj``hj@@XRQ`gIFl{wHJ@\t-2.48\nHg\\@xHdDdLdNdIdMdKdLddlTTtrgUADQ@@|`p\t-2.48\nj`aaP@NPXkSlddUfbbaVcUTuMSP@LJHpRUnP|\t-2.48\nh`\x7FC@@B`qVRRJsSQZRjfjjh@LEHpS`iZl{p\t-2.48\nHmTLhJ[hBDdLdBdA\\LddTgRjej`A`dkrA@\t-2.48\nHcLHPHApiprRQUQIKmUP@@@pELKae]yE@\t-2.48\nHo|H@NrRQRqZZR]j``bh@FDiaMtg[|cP\t-2.48\nsNpJE@Z@LAXApBUSUU@NJdCHAPJ`M@yH\t-2.48\nHg}@@@aJVYU^Svv`@@@@AaITwCJz_Hl\t-2.48\nHiD@H@\\HbDbLbLddjRjjh@X]BXUMwHD\t-2.48\nHo^L@AaerRQVZYJRjfjj`AaJXWCIvx\t-2.48\nHmu@`HZoCIIEUDiVjZj`AarXWCJ|b`\t-2.48\nHiD@HH\\DdLdBdLddTjjjh@XES\\OH`\t-2.48\nHkND@NalddUfRdjijj@FGIa\\ngrA@\t-2.48\nHedLPHS@\\J\\LddQTeUMP@phfxYxbX\t-2.48\nHcvL@NamrRQVYQUTuT@LNSBxYwdJ\t-2.48\nHiDLPHS@\\J\\LddUdjjh@XDS\\ODS@\t-2.48\nHiDDPHXGBgCIIEYjji@FEIa\\ODi`\t-2.48\nHeTD`HPOAJ]eQfj@@@FCYS\\L|PD@\t-2.48\nHmLH@ARjZYjZVjjZh@XMaTwKrI@\t-2.48\nKAxI`UtQBQFQFRRUJji@LBaLKdL\t-2.48\nKAxX`Pw@xTxYIHkJjh@pILJnHw@\t-2.48\nHiFL`FaL@HrRRiQZj`AafEWDxP\t-2.48\nHeV@@JrRQRiCMT@@@LJSBZ^Ip`\t-2.48\nKAxX`Pw@xUPYIHkJjh@pqLKbMp\t-2.48\nHmVD@AalddUffjij`A`rXWBoHd\t-2.48\nHefL@H[aRjUVjjh@XCBXUMp|bP\t-2.48\nKA|Y@MBX@QddeRVj`CCLJnHw@\t-2.48\nHiFL@H[aRjUZjj@FGPfDwCrJ@\t-2.48\nqC`FB`d@hCP@zOTAqh`I@rAr@\t-2.48\nKA|AP\\dad`TaT`t`eTuUU@Gd\\\t-2.48\nsGQLJhCPA`DjfjPGFRAd@hGI@\t-2.48\nHiE@`HZoCIIEUJij@FEIa\\OHh\t-2.48\nHid@@DjUfaBB`@FEPfMwLJa@\t-2.48\nKAxY@PwUXYIHkJjh@pqLKbMp\t-2.48\nHiF@`DApRjZZjj@FCXUMp|a@\t-2.48\nKA|H@XCIKJuUPA`pQaTwDS`\t-2.48\nKAxH@AfRJIFjj@LJaJ[nPP\t-2.48\nsNpdHpxV`rRQVjhAaecqU`\t-2.48\nKAxX@PwYIHkJjX@pqLKd\\\t-2.48\nHaD@@DiUVyjjPA`HPfES\\\t-2.48\nsNplJyHJPtaddeeTpCBL\t-2.48\nsNphH{XYIHkUT@prqxjp\t-2.48\nsGQDHG@nFRQFj`FABuyB\t-2.48\nsNx`LFdlmUPCBbXobU@\t-2.48\nsNqHHGCIIEZjPFAVKyJ\t-2.48\nsGXLKIARFdLddmT`ODZ\t-2.48\nsGYHEAxIVuU@LMc^XQ@\t-2.48\nsJPiLQxBTiZhA`Xl^P@\t-2.48\nsGPD@xVHRjZj@XEXwd`\t-2.48\nsGXHHGAJijhA`Xl^R`\t-2.48\nsGQII[B|eTuT@prqyJ\t-2.48\nsGX`LDdwUT@ptMx``\t-2.48\nsJQhHlGBOj`FDOME`\t-2.48\nsJQLCIARFdH~j@^P`\t-2.48\nsJPD@xPHczhAaecrP\t-2.48\nsJQHHGAJnj@XI[fDH\t-2.48\nsNp@Djfjj@XUXu|d@\t-2.48\nsGX@@dkUT@phVMyH\t-2.48\nsFp@DiTt@@A`qEcP\t-2.48\nqCcPQXVD^hCsQX\t-2.48\nsJQAINczhAaeb\t-2.48\nqCcPQXZT]TCr@\t-2.48\n`IB`Cr@\t-2.48\n`IDpCr@\t-2.48\nKAxX@ASIRjuUPAaTIaMrN@\t-2.48\nqCc@AYIj`OBHl\t-2.48\nsNq@@djmUPCAbKF|c@\t-2.49\nHg~@@@RYfUWd}nh@@@@@XJUMprng_DB@\t-2.49\nsJPHADIJuPC@bK\\a@\t-2.51\nsNp`ATf^ZZ@XYY|e@\t-2.51\nQMIDbKpRZAaGFP\t-2.51\nsNq`AVeJmUPCBqXwdX\t-2.51\nsGQDHGBnBUSUPCCKGdh\t-2.52\nHeTH@@Re[TYj`@@AatIS\\L|``\t-2.53\nsJP@DjvhA`inID\t-2.53\nQMH`yIhFD|h\t-2.54\nsGP@DiVj`FEDVOIP\t-2.54\nHmtH@@RYeeZZjjj@FBpfES\\Lkr@@\t-2.55\nHmND@DCdfVUrjUZ`PH@FALLkrD@\t-2.55\nHaDH`HCpRnU[f@@@FEXUMwH@\t-2.55\nHaDH@@RVU[j@@@FCAFES\\c`\t-2.55\nsJPhLQDIKTpCBCba@\t-2.55\nsJXHHGAJZj@XYX|`@\t-2.55\n`Jg@XP\t-2.55\nKA|X@DB\\dwNuT`FFIa\\Rf@\t-2.55\nHmtD@@QIgYVUZh@@@XLS\\LkrL@\t-2.56\nHeTLbHS@BL{IIKDdLkP@@@prf{bCH\t-2.57\nHidH@@Rge^Fh@@@XMATwCrD@\t-2.57\nsGQhHbGAJ^jXAaKqA@\t-2.58\nsGX`BDdwMT@pVODj\t-2.59\nsNy`BDtfuZi@XIGbu@\t-2.59\nqCbPXXbRt`XP\\TP\t-2.6\nj`q@`@@LRYfWg^Qg^jB`@@@@FA`DhpTeZMYwnHa`\t-2.61\njhip@@@P\\eKLjo}HvkM@@@EP@@pTRcNBdkW`|aX\t-2.61\nj`q`@@@IToLjoiuoUT@@@@@C@tDLxJRmFl{wHX@\t-2.61\nJoB@P@^BULrj~mf}PA@@@@FA`UMprng[|c@\t-2.61\nHg|@b@|@eJf[U^Svz`@@@@AanES\\Lkiwr@@\t-2.61\nJoC@@@IRlrjzv[uP@@@@@XGBTwCJz]or@@\t-2.61\nHg|H`HApRkfUWd}nh@@@@@X[ATwCJz]|`@\t-2.61\nHg\\B`HSM@HrRPjIIHjZuAAD@CCj[ae[yF`\t-2.61\nHmT@XDdLdJdFdAdIdLddTaajjj`AaG\\Pe@\t-2.61\nHkmLbFvDp@cNrRRiQIY]Vjjj`A`qUproHL\t-2.61\nJoB`@@Ndrnlktqw@AP@P@A`hIaUJz[|c`\t-2.61\nHcm@A@tIvTiWYTjWP@`@@@XCBXWCJ|PM@\t-2.61\nHcMLbFvDp@cNrRRiQIKjuUUP@pXjxYWdZ\t-2.61\nHk\\@`@|DifUWGUNjjjj`A`\\IaTwCJz_H@\t-2.61\nHedDpHhG@gCgCIHcEiUUT@LNAL[agdD\t-2.61\nHcLD`HP@cIHXhdhLk@PT@CBfxUwfAT`\t-2.61\nHcLD`HP@cIHXdlipk@AT@CBfzUwf@U@\t-2.61\nHcL@@LdbRbUeBDEEP@LAcFxYW^Ha@\t-2.61\nHcL@@LdbRbceBDEEP@LAaL[iW^IP`\t-2.61\nHid@`@\\LdbaRxZ`@@AarXUMp|`@\t-2.61\nKA|P`E@NENFRQERjj@LJSB[nHE@\t-2.61\nHiDNQHSB[a@XhXKa{IICiEjV@D\t-2.61\nHmw@@@`Tke]fy`@j@A`vESRoH`\t-2.61\nHidH`HCpRkm^Eh@@@XTUMp|PL@\t-2.61\nHidD`HPOAJ^UxZ`@@AaQTwCq@P\t-2.61\nHeT@@DjYoIjjjh@XJDIaTwCH\t-2.61\nKAzQ@IdAxIUsMUPA`QTw\\`@\t-2.61\nsNxTMEV@`aFRPjKR`OLLP\t-2.61\nsGXHHGAJfjhA`Uc^P@\t-2.61\nsGQHDHaImfhAaacrT\t-2.61\nsJPDAHJPR[j`FDwEB\t-2.61\nqCbB@\\duPFBVyH\t-2.61\nQMFAjAIhFBOJ@\t-2.61\nHifDAHAHeNR[e^Eh@@@XXWCqJX\t-2.61\nsGQ@@eKuT@ptqxeP\t-2.62\nHaDH@@RVU[f@@@FFXW\\rJX\t-2.64\nKAxX@@gILjmUHA`aMqLh\t-2.64\nsJQ@@dkU@LBHmrD\t-2.66\nJoBBXBwD`dadaddebbTRtj[uTaPI@@XDpz_H\\\t-2.67\nHmtLbHS@BL{IIKEDiUZ@`@A`S]J|`P\t-2.67\nKAx@P@xQDIDYDYIITjjh@pZDpj[d\\\t-2.67\nHcLH@NrRQRqYRmTDA@@pYLInWbCh\t-2.67\nHkLF`HSNgP\\DjUYfjjYf@FFBi|`@\t-2.67\nHmVL@NaerRQVYJjfj@FCIa]J|`P\t-2.67\nHedL@@pdie]jjj@FCIS\\L|b@\t-2.67\nHedL@HZ\\ddUfUUMH@pILKnPH\t-2.67\nKAxX@AaYHhdZjh@pIJ[nIA@\t-2.67\nKA|X@QS\\eUkUU@FCIaTw\\b@\t-2.67\nsNpDHDTHrRQVjhAaXl[rL\t-2.67\nsGPDHDTHRjZj@XFKGdh\t-2.67\nsGQHHGCIHcUPCCKWbA@\t-2.67\nsNx`LDdvkUPCAY|rM@\t-2.67\nsGXHHGAJijhA`Uc^R@\t-2.67\nsGQ`AbeLuT@pRoMLP\t-2.67\nsGX`LJdmuT@pHaoDl\t-2.67\nsGXHHGAJijdAaecrT\t-2.67\nsGPHHDIUMU@LCEcrT\t-2.67\nsGP`Adinj`FBUxhP\t-2.67\nqC`PALcu@XZK\\`@\t-2.67\nsGQ@@dsmL@pruyB\t-2.67\nQMIBhF`chGcH\t-2.67\nqCp@BOTAahl\t-2.67\nRFTQVQP|`\t-2.67\nsNp`@dfUZj@X[E|e@\t-2.68\nHaDH@@RVU[j@@@FCQaTw\\`@\t-2.68\nsNpHAbIJkUT@pXbqoHp\t-2.69\nqCb@AIVPLDmrP\t-2.69\nsGQ`@jdvmR@|rq@\t-2.69\nsGQ@@djuT@phbqyJ\t-2.7\nJoC`@@PzTlrj\x7FI{[P@@A@@F@eS\\LkoDmp\t-2.72\nHeTDPDp@bHcIIKDdLrp@@@pjJ[ayD`\t-2.72\nHiDDHJZIAICi@YCIICEJij@GbDp\t-2.72\nKA|Y@UBXGaddeTZj`CCDpnHw@\t-2.72\nHid@@DjUfaBB`@FGPaTwCrL@\t-2.72\nsNyhKEaxYIITuT@prqxjp\t-2.72\nqC`XBHc`haIj`LLEnR@\t-2.72\nqCcRQXCFzNlAy@\t-2.72\nRFTEPQ`|R@\t-2.73\nsGP`ATiVj`FFbwDZ\t-2.74\nHaE@@@aJyUnX@@@XEaTwDc`\t-2.75\nsJPXHlQxQ{T@pbxlP\t-2.76\nsJX`BDdvu@LH^IX\t-2.77\nHid@`@\\LdbaRxZ`@@A`rES\\ODC@\t-2.78\nHmLD@@QIe[VfeVi@B@A`V\\J|Ri@\t-2.78\nHedJ`HSFDGAJeyjjY`A`gSq@p\t-2.78\nsJPD@DPHRnj`FFFOED\t-2.78\nsNp@Dj{Zj@XFKGbk@\t-2.78\nqCa@CISTAaEqS@\t-2.78\nHefD@NalddUfUUMP@piLKayD`\t-2.79\nHiFL@BAAR[eVji@FAIaUqFx\t-2.79\nsNpP@btf{Zj@X[E|Rh\t-2.8\nHiD@XHdDdLdFdNdAdLddjdjjh@^PP\t-2.8\nsNp@DiUjj@XLQXwdX\t-2.81\nHo|DpHhG@gCgCIHcDhhd[^jjB`@@XZBYprng[|``\t-2.83\nj`q@`@HRRjyeU\x7FSk^j`B@@@@FAhTYpTeZMYwnPH\t-2.83\nHglLXDp`BJdFdA\\IdEdLddTaLTdmUUT@LLt{yG@\t-2.83\nj`q@@@LddTjVTRPiN}U@A@@@@LMHpRcNBtZsnP|\t-2.83\nHo\\LxAgTdLdBdJdFdKdGdLddTgfTtjjffh@^PX\t-2.83\nJoB@Y@RGTCrG\\drnlktqw@AP@P@A`JXURngrN@\t-2.83\nHg^DHNihBDdLdBdLddTgTRQwUKP@@@pjUt{yG@\t-2.83\nHcvBXNiev@aICI@i@Pb\\CIIEIxiUKTh@pb^PH\t-2.83\nJoB@Q@^@ReSLjokYoT@P@@@A`^ES\\Lkiv\x7FH@\t-2.83\nHkLLpHS`\\J\\F\\LddRLbdjjjj@FGXPrngrN@\t-2.83\nHmTHXERPrPjPZPFPfPrRQRFFjjj@FB\\oHH\t-2.83\nHcvFPJaLe]CpGprRRjKRMUTt@LFSBY]yG@\t-2.83\nHmVBhNiiV@aICI@i@PcIIEIuJiZT@XQwHD\t-2.83\nHcLHpMbPRPrPrRRjIKRmU@A@@pinF]yA@\t-2.83\nHmVFPJaLFUCp{prRRiJQjjZ@FCIaMJ|b`\t-2.83\nHo~D@NalddUfRbRmzjZ`@@AaJXWKiv\x7FHD\t-2.83\nHk\\@b@a@eJYeUquSh@@@@@XKaTwCJz_H@\t-2.83\nHk\\@`LhDjU^ukmLHH@@@A`lHU\\Lki|c@\t-2.83\nHmTDHNFIAICIAgCIIJeDjjjh@XDURoHX\t-2.83\nHmTJhJ[iV@aICI@i@PcIIEIuJiZT@^PH\t-2.83\nHmVHHFjIAICICgCIIKMEJijh@XXLkrN@\t-2.83\nHedLjDp`BJdFdAdIdB{IIEIyKUT@OHx\t-2.83\nHedDpHXGBg@WCIIEXmUUT@LFSBkiy@`\t-2.83\nHmM@`HPOAJYeWaeZjjj`A`NES\\Lkr@@\t-2.83\nHeTL`HS@\\LddlRPsU@@@CBj[agfPf@\t-2.83\nHmVD`Naj|LddUfTjjj`AarXUCJ|Qn@\t-2.83\nHmVHpHxGBYAYCIIEKCJjfh@XDfDwHD\t-2.83\nHcw@`H[j|LddUbbeTuU@CAdpYW^HU@\t-2.83\nHkLL`HS@\\DjUYfjjjj@FDeS\\Lki|`@\t-2.83\nHmW@RDp`|Hq@eJkfZjjj@F@aEMprh\t-2.83\nHmWHbDphCpBTjnYjjjh@X\\EMproH`\t-2.83\nsJPKAXR@TAh@p@zOj`GAb@dCHAP@\t-2.83\nKAxX`Pw@xUxYIHkJjh@pILJnHw@\t-2.83\nHefH`FboCIIETiUUT@LFSBxYxeL\t-2.83\nHmTH`HApRjyfjjj`AaJXUMproH`\t-2.83\nHeT@@LddTjPsU@@@CAdpjZ^Ip`\t-2.83\nHaD@P@bH\\DeeVz`@@A`pXUMwH`\t-2.83\nHiD@`@\\DiVZjj`A`LIaTwCr@@\t-2.83\nHiD@`@lDiVZjj`A`LIaTwCr@@\t-2.83\nHed@`@lDjWfjjj@F@paTwCOHp\t-2.83\nHig@PBhPdDdDfyWaj@@@GfPw@\t-2.83\nsGPBIDJHtQXcIIKUPC@qZ|a@\t-2.83\nsJPKAyRHTQh`q@zOj`FEDVH\t-2.83\nHiFH@FcIIEUJjj@FEIa\\OHh\t-2.83\nKAzA@P`^BTlsUT@XDUMwDC@\t-2.83\nHed@@Djffjjj@FGXUMpsrD@\t-2.83\nsNxBLIAREdGHIMmUT@|tq@\t-2.83\nKA|A@HC`eTuUU@FEXUMwHP\t-2.83\nsOpIMP[djWkB@@FEbM_I`\t-2.83\nsNpL@xVP\\`eTuUPCCKGd`\t-2.83\nsNtIH`DBTifjj@XGFod@\t-2.83\nsNtIHaxBTifjj@XGFod@\t-2.83\nsNp`H|ddUjj@XYX|UX\t-2.83\nsNq`AbeMmUPCCJod`\t-2.83\nsJPD@xRHczhAahmrD\t-2.83\nsJPXHlQDQzl@pa@\t-2.83\nsJPYHlQDCh}U@P\t-2.83\nqCcPQXAD]TB\t-2.83\nsNqThmVO@~Fy|eWsTpCq@`\t-2.83\nsGP@Dj}j`FFfODj\t-2.86\nsJQ@@drt`LDmrD\t-2.86\nqCr@HIJlAyL\t-2.86\nsJP`@TeVdAaEqS@\t-2.86\nKAx@@IRjuUPAapPfES\\c`\t-2.87\nHeTLbHS@BL{IIKDdLkP@@@pJnF^Pp\t-2.88\nHeTLbHS@BL{IIKDdLkP@@@pJfz^PH\t-2.88\nsGPD@DDHRgZj@XDSGbU@\t-2.88\nsNpXHjpTIRkUJ@p`xlP\t-2.88\nsJQhHbBaJ^i@XP\\Rp\t-2.88\nsJPYHlPDGh}Z@XS@\t-2.88\nKAx@@YIDTjjh@pXDpj{bPp\t-2.88\nqCaPS@hRVdCqA@\t-2.91\nsJQhHlOBOZ`GfVH\t-2.91\nHk^@@@RfYU\\]Tz@@@@@FBaaTwCJ{rC@\t-2.93\nHeU@@@gIHhTmpu@A@@pYLJf{dR\t-2.93\nHiFD@DBlbbTLZjh@XTfUp|Pf@\t-2.93\nHefD@DBdfV^Zjj@FCIaTL|Qn@\t-2.93\nKA|H@HAIMwMUPA`VDw\\QJ@\t-2.93\nsGPHAbIJmU@LJHl^R`\t-2.93\nsOx@@drm]UT@pxbqk@\t-2.93\nsJQHDHaInZ@XH[dH\t-2.93\nqCcAAY]nRYhCbRp@\t-2.93\nqCcAAY]nRYhB\t-2.93\nQMBApRZA`sr@\t-2.93\nHmt@h@dBdFdAdEdDfYn~fBHb@AyD`\t-2.94\nQMFAjAIhGfR\t-2.94\nQMhDRUAyH\t-2.96\nRFDUAFCqH\t-2.96\nqCp@AI^`LHnS@\t-2.96\nHgnB@NamOIIEYeEEUSUM@CCdpnD{yB`\t-2.98\nHmtD`HHIeIUYVUjh@@@X\\BXwCOHT\t-2.98\nsGPBE@Z@LAXAJijhApT`Y@JATCd`\t-2.98\nHiDDpJFIAICICIIKLjii@FDMrN@\t-2.98\nHaDH@@RVU[f@@@FEQaTwHx\t-2.98\nHaFD@DCdfYRYje`A`fMrJ@\t-2.98\nsNpdHpxWprRQVjdAaecrT\t-2.98\nsNpXHmPxYIDYUL@pcy`l\t-2.98\nsNqHHGCIIEZj`FAVMyF\t-2.98\nsNqHHGCIIEZjPFFVOEV\t-2.98\nsJPD@xRHczhAaIsKD\t-2.98\nsJPD@xQpczhAaecrP\t-2.98\nqCc@AYIj`LINXK@\t-2.98\nqCpB@SGZ@pRwI@\t-2.98\nQMFIJrMP^P\t-2.98\nqC`@Qv`LEErX\t-2.98\nqCbPPSJRu@XHKdp\t-3\nQMJHfTf`XQrP\t-3\nRFTQLq`pce@\t-3\n`IC@Cr@\t-3\nsJQ@@dkU@LLInID\t-3.01\nsGX`LDdrmT@pfxcP\t-3.01\nHed@xDkLdBdJdFdAdIdLddTgeUUP@paNQp\t-3.02\nHg|@`@bDfYeUyO[j@@@@@FF`UMprng_H`\t-3.02\nHidD`HP@cIHXdnEX@@@XHw\\HBhP\t-3.02\nKAx@`ADPxILsUUPAapIaTw\\b@\t-3.02\nKAxQ@PC`eWMUU@FCIaTw\\PH@\t-3.02\nKA|A@PG`dsMUU@FCIaTw\\`@\t-3.02\nHaDD@HSIIDcSUUT@LBpj[d\\\t-3.02\nsNxTMEV@`aFRPjKR`LInHD\t-3.02\nsGPdIPxEprRHuT@ppVxcP\t-3.02\nsOp`Hdjekjj`FFqoHp\t-3.02\nQMFIBbN`XQqd\t-3.02\nRFTPTQ`|R@\t-3.05\nRFDGaFCqH\t-3.05\nHk\\@@DjU^ukmNeZ@B@A`LHUCJ{sLxp\t-3.06\nHeTD@@QIUeQej@@@FEYS\\ODbP\t-3.07\nHig@@@`Tke]nX@H@FAXUMqHD\t-3.07\nsOx`DFdrikTl@pVoH`\t-3.07\nsNp`AdenZj@XEZoba@\t-3.07\nqCbPPNBUt`XI[bD@\t-3.07\nqC`PApRZhCCQ[d@\t-3.07\nsJQDHGCNBT}T@pRODL\t-3.07\nRFTPLQP|`\t-3.09\nHcMLbEvDp@cNrRRqIYCJt@D`@pJfx^Qh\t-3.11\nHg^@B@B\\ddRRTjQwUUP@@@pNDpfxYWSl\t-3.11\nHo~J@Naeu|ddUfbbatzjZfi`A`RXT|bp\t-3.11\nHmtHpBbPRPrPrRRjIJUjh@@@XDwCOHT\t-3.11\nHmt@`H\\LddUbReZj@@@F@iaMproH`\t-3.11\nHkND@NalddUfRTjijj@F@ia]Jz_HD\t-3.11\nHiDHhARPrPJPjPZPrRQR^jjPAyG@\t-3.11\nHiDDPHPGBgCIIEYJjj@FEXS\\OHP\t-3.11\nHmTB@@SarJIIPijij@FADtkrL@\t-3.11\nHeV@B@B\\ddTjPsU@@@C@Tpj[ad\t-3.11\nHefD@AalddUfeUMP@piLKayD`\t-3.11\nKAxH`EpRBRBS]mSR@XQWDa`\t-3.11\nHiDL@HX\\ddUfjih@XDfDOHx\t-3.11\nsNpLHxVH\\PeTuUPCBkFod`\t-3.11\nsNyLGYHJPtaddeeTpCrL\t-3.11\nsNqhHlIIJeZj`FFM_H@\t-3.11\nsNx@@eRmUPCAqXu`\t-3.11\nQM@HvA`sr@\t-3.11\nHiDB@@SaRYUfjf@FBDwDpP\t-3.13\nHo~B@LAEwHhddhhd[]jjA`@@XCaCNg[|b`\t-3.15\nsJPIAxBTeZhA`Xl^P@\t-3.15\nsJP`AdizhA`d^R@\t-3.16\nRFBDQADXLHyP\t-3.17\nj`q`@@@YIEBedhdnB]zh@IiX`@XJQ`eF\\tZsnHex\t-3.19\nHglHHDApbHipVHrRSJJJ^UUUUP@pvLInFUt{yE@\t-3.19\nJoBD@@ILrkNx{[uA@@@@@XZAUprng[|RL@\t-3.19\nHg|@`@\\DjYmUyO[j@@@@@FFxUMprng_H@\t-3.19\nHctHPHApIprRIQQNUUUT@LEALinFUwdD\t-3.19\nHgmH`Dr@|DjV^Yjjjjh@XZATwCJz]|c@\t-3.19\nHiDHPHApqprQJHrjj`A`rES\\ODC@\t-3.19\nHmW@@@H\\dbabLjfj`A`rXwRoHh\t-3.19\nHiE@`HPOAJUfjjh@XMaTwCs@a@\t-3.19\nqCq@XIIV`OEL\t-3.19\nHiF@B@BTjeVjj`A`LIaTwB\t-3.19\nsJPHAbIJuPC@bK\\a@\t-3.21\nHg^J@Naev|ddUfbbNgUSTtp@pqLKdR\t-3.23\nHiFD@AalddUfjih@XDfDOHx\t-3.23\nKAx@@YIHkJjh@pZDpj[d\\\t-3.23\nsGPDHxVHRjZj@XEXwd`\t-3.23\nsNq@GddbmUHCCKGbe@\t-3.23\nsNpH@xYIHkU\\@prqyF\t-3.23\nqCcPAZTBSU@^XK@\t-3.23\nsOx@@drm\\@@@pHQoEf\t-3.25\nRFBDQ^DXLHyP\t-3.25\nHiDDHJZIAICi@YCIICEJij@FDMrB@\t-3.27\nsGPdCQHJPR[jf@XR|d@\t-3.27\n`IJ@Cr@\t-3.27\nHg|@@DjU_eZx{BBH@@@FBpaUtkiwqLX\t-3.31\nHo\\DxM]ICI@iAiCi@YBYCIIEIYGLjjjii@FDGrK@\t-3.35\nj`a``@NPYddblrRbR]zjfj@@@A`iFB\\ehug^y@P\t-3.35\nHo\\BxJX]bPRPrPzlNPnP^PrRRsIJJRjZjZ`AyG@\t-3.35\njhqA@@EYIHiXeDkIKUTADUT@@pTcAFJtYw`|`H\t-3.35\nHiD@g@hHdDdLdBdJhFdNdAd@zIklddUdjjh@P\t-3.35\nHkLLhJ[hBDdLdBdA\\LddTgTRjejj@FARngrA@\t-3.35\nHkLDxMMICI@iAiCi@YBYCIIEIYGJjji`AyA`\t-3.35\nHg\\LPHS@\\J\\LddQbdRiwUPU@@@pEnFUt{xbX\t-3.35\nHg|@P@bH\\DfYeUyO[j@@@@@FF`UMprng_H`\t-3.35\nHklDPHXGBgCIIEYhdmNjj@@@F@iaCJz_Di`\t-3.35\nHko@hAdtdLdBdJdFdLddTgbRtzjh@@@^Hn`\t-3.35\nHmV@XEbPRPrPzPFPfPrRRqRJjjj@FBDoHX\t-3.35\nHo|@`NqLddTlVVdeZhHBj@AaJXS\\iv\x7FHD\t-3.35\nHo|@`NqLddTlVfdgZhHHj@AaJXS]iv\x7FHd\t-3.35\nHg|H`HCpRkfUWd}mh@@@@@XJUMprng_H@\t-3.35\nHkLLPHZP\\A\\LddUbRdjjZj@FGIa\\ngrI@\t-3.35\nHkLLPHXP\\I\\LddUfRdjjZj@FGIa\\ngrF@\t-3.35\nHmVHHFjIAICICgCIIKLiJjZh@XXLkrJ@\t-3.35\nHmVHHFjIAICICgCIIKEiJjZh@XXLkrF@\t-3.35\nHcLHpJbPRPrPrRRsQIKmTp@@@pKae^Qh\t-3.35\nHmM@bHPO@IRfYUxYVjjjh@XCaTwCJ|`@\t-3.35\nHk^@@@RfYU\\]Tz@@@@@FBxUMprngr@@\t-3.35\nHkM@`HzoCIIDbiEJijj`A`JXPrngrJ@\t-3.35\nHctDPHxG@WCIIETeIUSUP@pyLJiW^Pp\t-3.35\nHg^@@JrRQRiKRCMT@ET@C@TpfgSod\\\t-3.35\nHef@HJbPRPrPYprRRiRUSU@CCNF^PP\t-3.35\nHct@PHBNBLddURTeUUU@CAXSBine]@\t-3.35\nHmTDPHXGCgCIIETiJjjh@XLfDLkrJ@\t-3.35\nHctDPHXG@WCIIEXmIUTuP@pYLJUwd\\\t-3.35\nHkLD@J{IIETdiJjjj`A`LIaBngrF@\t-3.35\nHeTD`HP@cIICLdLkP@@@pjfxYyA@\t-3.35\nHiDBPHSBCpiprRSFQjj`Aac\\ODp`\t-3.35\nHidD`HP@cIHXdnEX@@@XDULODC`\t-3.35\nHiDBbJ[aCpBTjeVjj`AaHPfES\\H\t-3.35\nHmVD@NalddUfRjij`AaRXWKqAd\t-3.35\nHmTD@H[IIETiJjjh@XLfDLkrJ@\t-3.35\nKAxYDPwUXUvRRJrjj@LBSBkbMp\t-3.35\nHiFH`D`OAJyfjjh@XMaTwCq@`\t-3.35\nsJPK@zRHTQh`q@ZOj`FEDVH\t-3.35\nsJPK@yRHTQh`q@ZOj`FEDVH\t-3.35\nsNqdIVG@nFRQFUU@LLEnXu`\t-3.35\nsNqiCVO@ReRmUPCAqXu|`@\t-3.35\nsJPJ@tRHTQh`qD_U@LJHlP\t-3.35\nsNpiH{XWlddUjj@XYX|UX\t-3.35\nsJXHHGAJfj@XYX|P`\t-3.35\nqCcPQX^D^hCBCfbp\t-3.35\nsJPXHlPYQzj@`\t-3.35\n`IoAHGd\t-3.35\nHeT@H@dBdAdIdDfYu[hHB`@^Ie@\t-3.39\n`L@LH\t-3.4\nsJXDHGCNBT}T@ptQxa`\t-3.42\nsJTHHaxIWMPCAX|P`\t-3.42\nsJPhLQHIKTpCqP`\t-3.43\nKAxX`Pw@xUxYIHkJjX@pqLKbUp\t-3.45\nsGQLKHaQFbLddmT`LMEnP`\t-3.45\nqC`DBHg`hcQBSU@XXK\\d@\t-3.45\nsGQDHGB~BUSUPCCKGdh\t-3.45\nsGPH@xYIDZj@XFKGbE@\t-3.45\nHo|D`HP@cIHXhheMAUXBHj`@XBwCNg[|PE@\t-3.48\nHo|D`HP@cIHXhdicAeXBBj`@XBwBng[|PJ@\t-3.48\nJoBBPDHG`eJsJkkYoU@@@@@A`mMprng[|`@\t-3.48\nHo|@@LdbRbblThP`hjj@AalIc]Jz]orA@\t-3.48\nHg}@@@aJVYU^Svv`@@@@A`ITwCJ{qCl\t-3.48\nHk^@@@RfYU\\]Tz@@@@@FDaaTwCJ|SS@\t-3.48\nHmTLPHS@BB\\LdaTTTVjj`A`uMproD@`\t-3.48\nHiDDhJZ@aICICi@YCIIECJiZ@GbPP\t-3.48\nHee@@@[IEDTiUUT@LAALJfF^IG@\t-3.48\nHid@`@|Die_ahH@@FCIaMp|PJ@\t-3.48\nKAx@`@DPDIRsUUPA`pPUMwDS@\t-3.48\nKAxH@ABTluUT@XDUMwDS@\t-3.48\nqC`HBHc`duPFFBwI@\t-3.48\nqC`HBHc`duPFDGME`\t-3.48\nHmvB@D@aeIfUzfZjeh@XIc\\aP\t-3.52\nQMCBHoAbDf`XH|h\t-3.52\n`IlAHFD\t-3.52\nHiDHhJbPRPrPzPFPrRRsRjZ`AyC@\t-3.55\nsNpB@xRHTQhcIIJjj`FEbqoHp\t-3.55\nKAxX`Pw@xTDYIHkJjT@pqLKdT\t-3.55\nHaD@`@\\DimVz`@@A`rXUMwH@\t-3.55\nKAxQ@HC`eTuUU@FEXUMwHP\t-3.55\nsNpmJyHJPt`~rRRrjXA@\t-3.55\nsNpH@xITkUT@p\\VM_H@\t-3.55\nsJPH@xIRuPC@qX|`@\t-3.55\nsGQHHGAJWjhAaecqB`\t-3.56\nHcND@LADfUyU]Zj@@@FGXWCJ{rJ@\t-3.57\nsGPeCQHJPoIMuS@OI@\t-3.58\nsJPdE`DRHcyXAaIrD\t-3.58\nsNp`@Ti]jj@XFZodP\t-3.58\n`IjApGd\t-3.59\nj`q`@@@YIEBedhdnB]zh@J@@@@XJQ`eF\\tZsnHex\t-3.61\nKAxLbPfDwAxUxEw]ddfLZi`CqLh\t-3.61\nsNqHHGAJkjj`FAqkxh`\t-3.61\nsNt@@\\dbLjj@XEZod`\t-3.61\nsNpP@jtfvZf@^YY`\t-3.61\nqC`PCDRVhCCBKdp\t-3.62\nKAxI@PpNFRRJrjf@LLSByG@\t-3.64\nsGQhHlGCIIKUHCAF|tV@\t-3.64\nsNq@IddbmUPC@kE|e@\t-3.64\nsNqdHl@`nFRPjKU@LEWq@`\t-3.67\nsJPhH`xQ}T@pVOED\t-3.67\nqCbPPND^hCBKfDp\t-3.67\nsJQHHGAJVj@XI[bA@\t-3.7\nHkLLzJ[hBLdBdAdIdMdCdNxhbHRHRHfJiZj`AyB`\t-3.73\nJoB@Y@QGTCqG\\drnlktqw@AP@P@A`hIaUJz[|c`\t-3.73\nJoBBPDHCaddabbRRrv[uP@@@@@XKS\\Lkiv\x7FDa@\t-3.73\nHknBPLaAd@b`cIIBhhd]MZ`T@@FCXwKi|b`\t-3.73\nJoB@P@ABTwLjnmf}T@@@@@FFaS\\Lkiv\x7FDa@\t-3.73\nHg|@`@|DjYmUyO[i@@@@@FBeS\\Lkiwq@p\t-3.73\nHgnD`Naj|LddUfbbeUUUT@LESBhYWSodL\t-3.73\nHcO@HBhPdDdEdMdLbfbRagCT@EP@OLci@\t-3.73\nHg|@`@BDfYeUyO[j@@@@@FBeS\\Lkiwq@`\t-3.73\nHglLPHNp\\JBDjefYjjjjT@XRfDwCJ{rJ@\t-3.73\nHk\\@`@SDifUWGUN`@@@@A`nES\\Lki|`@\t-3.73\nHmTLHHS@BJ\\FdNdLddJbdVjj`Aa`roHH\t-3.73\nHk\\@BLeJeWmZ{SBB@@@@XKBEWCJz_Hp\t-3.73\nHkNH`FboCIIEUEEJjjj`AaJXWCJz_Hh\t-3.73\nHo\\``HSBCpRjVYffjjjj@F@mprng_H\\\t-3.73\nHk^@@@RfYU\\]Tzjjjj@FEaBXUMprnf\t-3.73\nHef@XLBPRPZPzPFPfPR[fZjjh@^YAT\t-3.73\nHiDLPHQ`\\J\\LddUdjjh@XEa\\ODQ`\t-3.73\nHmTLHBk`dDdIdEdDf{[jffh@^I@`\t-3.73\nHkL@@LddTbdLjjjj@FDxS\\Lki|b`\t-3.73\nHeg@bHS@|@eJfYjjj`A`qTwCOH@\t-3.73\nKAxH`PpNENFRRJrjj@LBSB{bTp\t-3.73\nHeg@bHS@B@eJfYjjj`AapES\\L`\t-3.73\nsGPH@xIUMU`LLl^R`\t-3.73\nHcl@@DjYU_egX@@@@@XBaMprn|SJ@\t-3.75\nHmvD@LADf]eYUj`@@A`qMproHp\t-3.77\nHklL`HS@BLddJbRvWUjB@`@XMS]JgrA@\t-3.78\nsJPhH`xYICT`LEcsBH\t-3.78\nsJPXhlPD[ct^m@H\t-3.8\nHeVB@D@aeIfUzYjjV@FBXwHx\t-3.81\nHaFL@D@nRYgifjf@FBXwHH\t-3.81\nsGQLKIARFdLddmU@LI^P`\t-3.81\nsJPHHDQ}T@prqyH\t-3.81\nQMBcpIRZAaWDP\t-3.81\nsJQHHGBOj`FFVOI@\t-3.81\nHmvLbEaL@HslddlRVFUh@H@FATwCrE@\t-3.83\nHcLL`HS@BLddJfRtjmP@P@LJ[ag^QP\t-3.83\nHiDDpHhG@gAgCIHbeJjj@FC@fMp|``\t-3.83\nHidD`HPGCIHXdnFh@@@XTUMp|pHP\t-3.83\nHef@@@Ri^Zjjh@XCBES\\L|c@\t-3.83\nHiF@@@ReYjjj@F@pfES\\OH@\t-3.83\nqCaHKBH`PdthFDGI@\t-3.83\nQMBCDRZA`erP\t-3.85\nHeTD@@QIUeQej@@@FCYS\\L|b@\t-3.85\nqCbPPNBRu@XI[d@\t-3.86\nQMIDbHHRYAaGJ@\t-3.87\nHo|H@IrRQRiQFPUj`BJh@FDiaTtg[|aP\t-3.88\nHedHHJbPRPrPYprRRiRUUU@CCNF^PP\t-3.88\nHmVHPF`GCgCIIETiJjZh@XLfDLkrJ@\t-3.88\nHiDLhJ[hBDdLdBdA\\LddTgjeh@^PH\t-3.88\nHiDLHJ[hBDdLdBdLddTgjeh@^PH\t-3.88\nsNplJyHJPtaddeeTpCrL\t-3.88\nsNphHpxYIHkUR@prqyJ\t-3.88\nsOx`DFdrikUL@pVoH`\t-3.91\nqCbPPNBTu@XS\\PP\t-3.91\nHctDXAeICIBiAiAYCYCIIEHXYUUMP@pb^Qp\t-3.93\nqCpPP^BSU@XI[d@\t-3.93\nQMABHgAIhFBOJ@\t-3.94\nsNxaBDnR[YjhAaMqU`\t-3.96\nqC`PApRVhCAQ\\Pp\t-3.96\nsGXaBDnR[Vj@XS\\Qh\t-3.97\nsGQHHGAJijhAaecrT\t-3.97\nHaDH`HApRnU[j@@@FEXUMwDB@\t-3.98\nHkLHxMRPrPJPZPzPFPfPrRQRVQrjjjX@^PX\t-4.02\nHmTLhJ[hBDdLdBdA\\LddTgTjej`A`dkrA@\t-4.02\nKA|PtMpFdQBQFQAQEQ@MdddgjjPCA`aLJ`\t-4.02\nHmt@pHdDdLdLddjbReZj@@@FEMproHH\t-4.02\nHcl@@DjYU_egX@@@@@XBfES\\L|Q]@\t-4.02\nHmtL`HS@BLddlRVFUh@H@FETwBoHp\t-4.02\nHiDB`HSBBRRjUZjj@FATwCr@@\t-4.02\nsNxDHG@nFRQFUU@LKEj~HD\t-4.02\nsGP@DjZj`FAVMxa@\t-4.02\n`Jd`^P\t-4.02\nQMJH\\Df`XSr@\t-4.04\nHk|@@LdbbbRQKauS`@`@`@F@ySCJz_Hx\t-4.04\nsGPB@xRHTQhcIIKUPC@qX|e@\t-4.09\nJoB@P@NFRRJJEIKKYoU@@@@@A`mMprng[|SB@\t-4.11\nHcu@`HPOAJYYfjjjh@XSaTwCJ{q@P\t-4.11\nHiD@@DjfZjj`A`vES\\ODa@\t-4.11\nsGPdCQHJPR[jf@^JT\t-4.11\nqCbPPND^hCAK\\P`\t-4.12\nsGQ@HeTuT@prqyJ\t-4.12\nKAxH@PvRRJrjf@LLSByG@\t-4.14\nHet@@DjYUX^d@@@@A`rXULODzP\t-4.18\nHcLBHHQaApIpipUprRIZJJbmUUUP@pKNg^DATh\t-4.2\nsNpdHpxWprRQVjhAaecqU`\t-4.22\nsJPYhlQxKmqzOZ`D\t-4.22\nsGX`LDdsmT@pexlP\t-4.23\nRFPaMt\\H\t-4.25\nQMIH\\EpRZAxb\t-4.25\nHiFB@LANEImfZjX@XYaCqDX\t-4.26\nHmV@xNRPrPJPjPZPfPVPrRQR]Rjjj@Gb\\H\t-4.27\nHcu@XFVIAICICi@YBYCIIKEHkUSUH@|cP\t-4.27\nHgnD`Naj|LddUbRdUUUUT@LISBjUt{yG@\t-4.27\nHmU@XFVIAICICi@YBYCIIKEHjjZh@^Ph\t-4.27\nHedLpHi`\\B\\N\\LdbLVeUUP@pXDsagbDp\t-4.27\nHmU@pHTGBgA`cIIEKHjjjh@X\\fDwCOHT\t-4.27\nHef@XFbPRPrPzPFPfPrRRqRUTu@CrF@\t-4.27\nHcvD`Naj|LddUbteUUU@CCdpje]yG@\t-4.27\nHcw@`H[j|LddUbbeTuU@CCdpae]yE@\t-4.27\nHef@pHApipXHrRQRrUUU@CAdpnF^Pp\t-4.27\nHmTD`HZoCIIETiJjjh@XLfDLkrJ@\t-4.27\nHed@`@\\DjYfjjj@FDpfES\\L|`@\t-4.27\nKA|HP]SPDIHYHEHIUMURpAyG@\t-4.27\nsGPH@xIUMU@LCEcrT\t-4.27\nsJQ@IGuPCCKGd`\t-4.28\nHid@b@|@eJYWxZB@@A`rXS\\ODB`\t-4.31\nHiFB@LANEIevZjX@XI`|Pj@\t-4.32\nKA|D@XBMrSZsUL@XIg\\QB@\t-4.32\nqCbPHQBSS@XP\\f@\t-4.32\nHedL`HS@\\LddRRmUUP@phj[ayD`\t-4.33\nHk^@@@RfYU\\]Tzjjjj@FApfES\\Lki|`@\t-4.35\nqCaPQApcu@XS\\pb@\t-4.38\nsJPHHxQ}T@prqyH\t-4.38\nKAxI@P`NFRQIFjj@LBpj[bAp\t-4.4\nqCsCPKRUvyIf`NIO@\t-4.41\nqCsCPKRUvyIf`H\t-4.41\nHctDxAe@cI@iBiAiAYCYCIIEHhyUUKP@|QN@\t-4.42\nJoB@P@^BULrj~mf}PA@@@@FAaaTwRng[|`P\t-4.42\nsNpH@xISMUT@p\\VM_H@\t-4.42\nsNq`@jdssTpCqY`\t-4.42\nqC`XR@TAhBOTAqh`I@rAr@\t-4.43\nsJPB@xRHTQhbOj`FFbwHP\t-4.43\nsNqLKIARFdLddljf@^Q`\t-4.43\nQMJH\\HzAaOD`\t-4.44\nKAxPPUD`d`tataddaTjf`CqLH\t-4.45\nQMBCpchGfR\t-4.45\nQMJH\\Df`^H`\t-4.48\nHctLhJ[hBDdLdBdA\\LddTgReTmU@CCIW^PH\t-4.49\nHiDL`HS@\\DjeVjj`A`QTw\\`P\t-4.49\nqC`PApRfhCAQ\\Pp\t-4.5\nKAxH`P`NENFRRJrjj@LBpf{bIP\t-4.52\nHg|H`HApRkfUWd}nh@@@@@XJUMprng_DB@\t-4.55\nsNphH`xITkUT@pvMx`p\t-4.55\nsGQDBIARBS]TpCqR`\t-4.55\nRFDTAFCbdCd@\t-4.56\nsGQ`@jdsmR@|VH\t-4.57\nHedL`HS@\\DjUUjjj@FCES\\L|`@\t-4.58\nKAxY@Pf@xITnuUPA`QTw\\PL@\t-4.58\nKAxY@Pf@xIUJuUPAaeMwHH\t-4.58\nsGQhHlGCIHcUPCAF|pV@\t-4.58\nsNpHHxIUMUT@pjqkyH\t-4.58\nQMJDbDfPXQr`\t-4.63\nQMBApRZAaWDP\t-4.64\nsNphH`xIRkUT@pNM_H@\t-4.66\nsJPhH`xISuPCAX|PP\t-4.66\nHglLhJ[hBDdLdBdA\\LddTgTbeTmUT@LBWSodR\t-4.67\nHo\x7F@XBhPdDdMdCdKdGdDfyV^[aj@Bjh@GfQJ`\t-4.67\nh`~@@@YIHiEHYCJjjjj`@pu`cNRUhug^y@P\t-4.67\nHctDpHPGBgAgCIIDcHiUUUP@p{BxYW^Pp\t-4.67\nHmVBhNiiV@aICI@i@PcIIEIuJiZT@^Ip`\t-4.67\nHmW@`HS@|DjVYfjjh@XMS\\Lkq@H\t-4.67\nsOpH@xILkW@@@LJlZ~P@\t-4.67\nQMABHgAIhFD\\Y@\t-4.69\nsGPhH`xITmU@LD[qC@\t-4.7\nqC`PCpcu@XP\\tV@\t-4.72\nQMbH\\HzAaOD`\t-4.75\nsGPH@xITuU@LBl[qB@\t-4.75\nsGPBIHJPtaYCIIKUPCrD\t-4.76\nQMAJ@XBN`\\L`JAr@\t-4.77\nRFBDQNDXLHyP\t-4.77\nsNqhHlGAJeZj`FFM_H@\t-4.79\nsJQ`@bdjt`OEL\t-4.79\nj`aA@@NYIHiXmDiIZj``bj@@XRQ`cNZl{wHF@\t-4.83\nHed@DHADdLdBdFkNdAdIdLddTleUUP@panQ@\t-4.83\nHkLLpHS@\\J\\F\\LddRLbdjjjj@FGEprngrL@\t-4.83\nHkLDpHXGBg@WCIIEXdiJjjZ`A`JXWRngrJ@\t-4.83\nHctLpH[`\\J|A\\LddUbteUUU@CCdpje]yG@\t-4.83\nHctLpH[`\\J\\A\\LddUbteUUU@CCdpje]yG@\t-4.83\nHglLpHS@\\J\\F\\Djevfjjfjh@XBWCJz]|c@\t-4.83\nHctLpH[`\\J|A\\LddUfTeUMU@CAdpiW^QP\t-4.83\nHkLBpHSBCpipYpRjwiijjjh@XMprngrB@\t-4.83\nHctLpH[`\\JhA\\LddUbteUUU@CAdpiW^Qp\t-4.83\nHedHXFbPRPrPzPFPfPrRRqRUUU@CBFyA@\t-4.83\nHmTDpHXGBjCgCIIETiJjjh@XLfDLkrJ@\t-4.83\nHg\\@@LddTjTt`kU@DU@@peLJfWSodB\t-4.83\nHg^@@JrRQRiSRBmT@QT@C@TpfWSodB\t-4.83\nHctL`H[jlLddUbteUUU@CAdpiW^Qp\t-4.83\nHmTD`HZkCIIETiJjjh@XLfDLkrJ@\t-4.83\nKAxX`Pw@xTxYIHkJjh@pqLKfTw@\t-4.83\nqC`DBHc`hcQBSU@XXK\\d@\t-4.83\nsJPH@xITuPCCQ[bA@\t-4.85\nsJPhH`xIRuPCAX|`@\t-4.86\nHid@`@\\LdbaRxZ`@@AaQTwCs@S@\t-4.88\nHct@@LddTbaeUUU@C@\\InFUwbIP\t-4.88\nqCbPXRBRt`^JH\t-5.01\nsOpIAxBTfUk`@@FEVM_H@\t-5.03\nHaD@`@\\DimVz`@@AaVES]q@P\t-5.04\nRFEG`SFCqH\t-5.04\nsGX`LDdvmT@pfydZ\t-5.06\nHo]@`HPOAJYfYfjjjjh@XGaTwCJz]or@@\t-5.07\njhy@`@@HRUYfUWyHwgAZj@@@H@@XJpPRmFl{p^P`\t-5.08\nqC`PApcu@XZK\\`@\t-5.08\nJobD@@IKLrj}\\mf}T@@@P@A`lHprng[|`@\t-5.09\nQMCBHgAbDf`XH|h\t-5.09\nHctHxMRPrPJPZPzPFPfPrRQRVQuUUR@OHT\t-5.11\nHiFD@NalddUfjih@XDfEwHD\t-5.12\nJgB@@BULrjy\\Nk\\@D@Q@@FDyS\\Lkm|`p\t-5.16\nsJXHHGBOj`FFVOI@\t-5.21\nh`\x7F`D@PxJgaddbQbdTTjfjjj@CARLDdkQkN}rE@\t-5.24\nHkLLHHi`\\B\\N\\A\\LdbLRTTjjjj@FD`f\\Lki|``\t-5.24\nHcu@XJZIAICIBYAYCYCIIJdeIULuP@|Pn@\t-5.24\nHo^D`Naj|LddUbRdTjjjjh@XJfETkiv\x7FHx\t-5.24\nHk\\@bLhLyJeWmZ{SBB@@@@XKBEWCJz_Hp\t-5.24\nHmU@pHXGB`cgCIIETiJjjh@X\\fEProDa`\t-5.24\nHiD@P@\\J\\LddUdjjh@XLfDwCrH@\t-5.24\nKA~A@PfAxIUsMUPA`QTw\\PH@\t-5.27\nsNp`H|ddUji@XYX|e@\t-5.3\nHg|@`@\\DjYmUyO[j@@@@@FBeS\\Lkiwq@p\t-5.31\nQMBApchFCOH@\t-5.31\nsNpdHpxUprRQVjhAaecqU`\t-5.32\nRFDCaFCBnP\t-5.38\nRFTPxQ`|R@\t-5.39\n`IG@Cr@\t-5.39\nsJPYHlQDGh}V@P\t-5.4\nqCpPPND^hCAK\\P`\t-5.44\nKAxXPTwPDIHYHEHIUMURpAyG@\t-5.45\nKA|H@]CYIHkJjX@pqLKd\\\t-5.48\nsNqlHl@brCdLddlVj@^KD\t-5.49\nHctDpHXGBg@WCIIEXmIUUUP@pyLKiW^QP\t-5.55\nsKP@Di\\Zj@XTQX`\t-5.55\nHeT@pHdDdLdLddlRPsU@@@CCJZ^Ip`\t-5.6\nqCcPQXQD]TCr@\t-5.62\nQMBApchGfR\t-5.62\nHgl``HSBCpRjVYfZjjj`A`K\\LkiwrJ@\t-5.64\nHk\\@`@\\DifUWGUN`@@@@A`nES\\Lki|`@\t-5.7\nsNtHHaxISMUT@pNM_H@\t-5.73\nsJPLAHJPL`dwU@OEL\t-5.77\nHctLbH[jlJ{IIEXmIUUUP@pyLJiW^Qp\t-5.81\nHmTDbHZkBnrRQUJRjjj@FCIaCJ|b`\t-5.81\nHkNB@NamOIIEYeEJjZi`A`rXWB_HT\t-5.83\nHcvB@NaewIIEYdiUSTp@piLKmy@`\t-5.88\nsGQLKIARFdLddmT`OHP\t-5.94\nHo\\LhJ[hBDdLdBdA\\LddTgTTTjejjh@XMJz]orA@\t-5.96\nHmTDpHXGBoCgCIIETiJjjh@XLfDLkrJ@\t-6.03\nsOpHAxILkW@@@LJlZ~P@\t-6.07\nQMBApchFE\\Q@\t-6.07\nRFDCaFCqH\t-6.09\nsJQDBIARBS]R@|Tp\t-6.14\nsJPH@xQ}T@ptVyB\t-6.14\nJoB@Q@^@ReSLjokYoT@P@@@AanES]Jz]oq@D\t-6.22\nHmT``HSBCpRjyfZjj`A`uMproH`\t-6.22\nsJXA@IczhA`XlP\t-6.33\nHiD@p@\\H\\J\\LddUdjjh@XLfDwCrH@\t-6.38\nKAxXTTwPDIHYHEH]rUSUTl@P\t-6.38\nsNqmHl@brCdMvRRVKU@OHP\t-6.44\nqCcPQXND^hCpbK@\t-6.5\nHaD@b@|@eJ[Unh@@@XUaTw\\PD@\t-6.53\nqC`PApcu@XJKbF@\t-6.53\nsNpO@YRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-6.53\nsNpO@ZRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-6.53\nsNpOAYRHTQh`qEbGDBh\x7Fjj@X\\QXu`\t-6.53\nHiF@PHApiprRQVRjj`A`rXS\\OH`\t-6.53\nsNpO@\\RPTai@rEdGHAh\x7Fjj@XP@\t-6.53\nsNpO@JRPTai@rEdGHAh\x7Fjj@XP@\t-6.53\nHeg@`HS@|DjYfjjj@FCES\\L|`@\t-6.53\nsNpOAXRPTai@rEdGHBh\x7Fjj@P\t-6.53\nsNpOABRPTai@rEdGHCh\x7Fjj@P\t-6.53\nsNpyHlZqfCh\x7Fjj@X\\QXu`\t-6.53\nQMFIGBN`^YH\t-6.58\nsGPG@ZRHTQh`qEb@t_jhAaXl[r@\t-6.75\nsNpJIHJPtaYArFRRVUU@OHP\t-6.89\nHaD@`@|DimVz`@@AaVES]q@P\t-6.95\nHk\\@b@|@eJYeUquSh@@@@@XKaTwCJz_H@\t-7.06\nHg\\@XHdDdLdMdCdKdLddlRTt`kU@DU@@prfWdB\t-7.11\nsNpbJxDJPt`YAJijiPGd`\t-7.19\nsGPBAHJPLaYAInjhAxi`\t-7.19\nHefD@NalddUfUUMP@pILKnHL`\t-7.2\nsGPlH`DFPladdLVhAxa`\t-7.25\nsJPKAPRPTai@r@zOj`D\t-7.29\nqC`FBPe@iCRDyIj`OI@\t-7.34\nHctLpH[`\\J\\A\\LddUbteUUU@CAdpiW^IW@\t-7.38\nHg|@`@|DjYmUyO[j@@@@@FF`UMprng_Hp\t-7.38\nsNpOAfRHTQh`qEbGDCh\x7Fjj@X\\QXu`\t-7.53\nsNpOAYRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-7.53\nsNpOAZRHTQh`qEbGDBh\x7Fjj@X\\QXu`\t-7.53\nsNpO@zRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-7.53\nsNpO@tRPTai@rEdGHAh\x7Fjj@XP@\t-7.53\nHed@xDdLdBdJdFdAdIdLddTgeUUP@|c`\t-7.62\nHk\\@`@|DifUWGUN`@@@@A`nES\\Lki|`@\t-7.7\nHmTDpHXGBgCgCIIETiJjjh@XLfDLkrJ@\t-7.73\nHo]@HHTGBgA`cWCIIEKHjiJjjjj@FBiaMpr]orE@\t-7.79\nHgl@dDdLdBdFdNdIdEdMdCdLddTedLeUUUT@OHl\t-7.79\nHg|@b@|@eJf[U^Svz`@@@@A`iTwCJz]|PL@\t-7.99\nHkL@dDdLdBdFdNdAdIdMdCdLddTed\\jjjj@GdJ\t-8.08\nsNpOAfRPTai@rEdGHCh\x7Fjj@XP@\t-8.11\nh`~CDHPYreaSlddUbRdTeUUUUP@XJQ`eEZMYw`\t-8.37\nsNpBIHJPl`yCIICJj`Gbq@\t-8.5\nsNpO@yRHTQh`qEbGDAh\x7Fjj@X\\QXu`\t-8.52\nsNpO@xRPTai@rEdGHAh\x7Fjj@P\t-8.84\nHed@XDdLdJdFdAdIdLddTaeUUP@|Pn@\t-9.1\nHkL@H@\\H\\J\\F\\LddTlbdjjjj@FDia\\Lki|b@\t-9.37\nHkL@DLdBdJdFdAdIdMdCdLddTbd\\jjjj@Gb\\h\t-9.57\nHiD@XHdDdJdFdNdAdLddLTjjh@^Ia@\t-9.59\nHct@DDdLdJdFdAdIdEdMdLddTaaeUUU@CqBx\t-10.1\nsNpOAxRPTai@rEdGHCh\x7Fjj@P\t-10.77';
carcp.sInitialized = false;
cggl.Lcom_actelion_research_chem_prediction_DruglikenessPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'DruglikenessPredictor', 431, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_IncrementTable = function $clinit_IncrementTable(){
  carcp.$clinit_IncrementTable = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.IncrementTable = function IncrementTable(file){
  carcp.$clinit_IncrementTable();
  var idcode, increment, tabPosition, theLine, theReader;
  Object_0.call(this);
  this.$init_120();
  theReader = new ji.BufferedReader(new ji.StringReader(file));
  this.mRecords = new ju.ArrayList;
  while (true) {
    theLine = theReader.readLine();
    if (jsEquals(theLine, null))
      break;
    tabPosition = jl.indexOf_I_I__devirtual$(theLine, 9);
    if (tabPosition == -1)
      throw toJs(new jl.Exception_1('line without TAB'));
    idcode = jl.substring_II_Ljava_lang_String___devirtual$(theLine, 0, tabPosition);
    increment = jl.doubleValue__D__devirtual$_0(valueOf_24(jl.substring_I_Ljava_lang_String___devirtual$(theLine, tabPosition + 1)));
    this.mRecords.add(new carcp.IncrementTableRecord(idcode, increment));
  }
  theReader.close_0();
}
;
defineClass(434, 1, {1:1}, carcp.IncrementTable);
_.$init_120 = function $init_120(){
}
;
_.getFragment_1 = function getFragment_2(i){
  return castTo(this.mRecords.getAtIndex(i), 231).mIDCode;
}
;
_.getIncrement = function getIncrement(i){
  return castTo(this.mRecords.getAtIndex(i), 231).mIncrement;
}
;
_.getSize_0 = function getSize_2(){
  return this.mRecords.size();
}
;
cggl.Lcom_actelion_research_chem_prediction_IncrementTable_2_classLit = createForClass('com.actelion.research.chem.prediction', 'IncrementTable', 434, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_IncrementTableRecord = function $clinit_IncrementTableRecord(){
  carcp.$clinit_IncrementTableRecord = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.IncrementTableRecord = function IncrementTableRecord(idcode, increment){
  carcp.$clinit_IncrementTableRecord();
  Object_0.call(this);
  this.$init_121();
  this.mIDCode = idcode;
  this.mIncrement = increment;
}
;
defineClass(231, 1, {231:1, 1:1}, carcp.IncrementTableRecord);
_.$init_121 = function $init_121(){
}
;
_.mIncrement = 0;
cggl.Lcom_actelion_research_chem_prediction_IncrementTableRecord_2_classLit = createForClass('com.actelion.research.chem.prediction', 'IncrementTableRecord', 231, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_ParameterizedString = function $clinit_ParameterizedString(){
  carcp.$clinit_ParameterizedString = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.ParameterizedString = function ParameterizedString(s, t){
  carcp.$clinit_ParameterizedString();
  Object_0.call(this);
  this.$init_122();
  this.mString = s;
  this.mType = t;
}
;
defineClass(226, 1, {226:1, 1:1}, carcp.ParameterizedString);
_.$init_122 = function $init_122(){
}
;
_.mType = 0;
cggl.Lcom_actelion_research_chem_prediction_ParameterizedString_2_classLit = createForClass('com.actelion.research.chem.prediction', 'ParameterizedString', 226, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_ParameterizedStringList = function $clinit_ParameterizedStringList(){
  carcp.$clinit_ParameterizedStringList = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.ParameterizedStringList = function ParameterizedStringList(){
  carcp.$clinit_ParameterizedStringList();
  Object_0.call(this);
  this.$init_123();
}
;
defineClass(189, 1, {1:1}, carcp.ParameterizedStringList);
_.$init_123 = function $init_123(){
  this.mList = new ju.ArrayList;
}
;
_.add_7 = function add_14(s, t){
  this.mList.add(new carcp.ParameterizedString(s, t));
}
;
_.getSize_0 = function getSize_3(){
  return this.mList.size();
}
;
_.getStringAt = function getStringAt_1(i){
  return castTo(this.mList.getAtIndex(i), 226).mString;
}
;
_.getStringTypeAt = function getStringTypeAt(i){
  return castTo(this.mList.getAtIndex(i), 226).mType;
}
;
carcp.cStringTypeDouble = 3;
carcp.cStringTypeIDCode = 1;
carcp.cStringTypeText = 2;
cggl.Lcom_actelion_research_chem_prediction_ParameterizedStringList_2_classLit = createForClass('com.actelion.research.chem.prediction', 'ParameterizedStringList', 189, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_PolarSurfaceAreaPredictor = function $clinit_PolarSurfaceAreaPredictor(){
  carcp.$clinit_PolarSurfaceAreaPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.cPSAUnknown = -1;
  carcp.cPolarAtomTypeName = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['[N](-*)(-*)-*', '[N](-*)=*', '[N]#*', '[N](-*)(=*)=* as in nitro', '[N](=*)#* middle atom of azide', '[N]1(-*)-*-*-1 3-membered ring', '[NH](-*)-*', '[NH]1-*-*-1 3-membered ring', '[NH]=*', '[NH2]-*', '[N+](-*)(-*)(-*)-*', '[N+](-*)(-*)=*', '[N+](-*)#* N in isocyano', '[NH+](-*)(-*)-*', '[NH+](-*)=*', '[NH2+](-*)-*', '[NH2+]=*', '[NH3+]-*', '[n](:*):*', '[n](:*)(:*):*', '[n](-*)(:*):*', '[n](=*)(:*):* as in pyridine-N-oxid', '[nH](:*):*', '[n+](:*)(:*):*', '[n+](-*)(:*):*', '[nH+](:*):*', '[O](-*)-*', '[O]1-*-*-1 3-membered ring', '[O]=*', '[OH]-*', '[O-]-*', '[o](:*):*', '[S](-*)-*', '[S]=*', '[S](-*)(-*)=*', '[S](-*)(-*)(=*)=*', '[SH]-*', '[s](:*):*', '[s](=*)(:*):*', '[P](-*)(-*)-*', '[P](-*)=*', '[P](-*)(-*)(-*)=*', '[PH](-*)(-*)=*']);
  carcp.cTPSAIncrement = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {65:1, 4:1, 1:1}, 5, 15, [3.240000009536743, 12.359999656677246, 23.790000915527344, 11.680000305175781, 13.600000381469727, 3.009999990463257, 12.029999732971191, 21.940000534057617, 23.850000381469727, 26.020000457763672, 0, 3.009999990463257, 4.360000133514404, 4.440000057220459, 13.970000267028809, 16.610000610351562, 25.59000015258789, 27.639999389648438, 12.890000343322754, 4.409999847412109, 4.929999828338623, 8.390000343322754, 15.789999961853027, 4.099999904632568, 3.880000114440918, 14.140000343322754, 9.229999542236328, 12.529999732971191, 17.06999969482422, 20.229999542236328, 23.059999465942383, 13.140000343322754, 25.299999237060547, 32.09000015258789, 19.209999084472656, 8.380000114440918, 38.79999923706055, 28.239999771118164, 21.700000762939453, 13.59000015258789, 34.13999938964844, 9.8100004196167, 23.469999313354492]);
}
;
carcp.PolarSurfaceAreaPredictor = function PolarSurfaceAreaPredictor(){
  carcp.$clinit_PolarSurfaceAreaPredictor();
  Object_0.call(this);
  this.$init_124();
}
;
defineClass(314, 1, {1:1}, carcp.PolarSurfaceAreaPredictor);
_.$init_124 = function $init_124(){
}
;
_.addTPSAIncrements = function addTPSAIncrements(mol, detail){
  var count, i;
  count = this.getPolarAtomTypeCounts(mol);
  for (i = 0; i < carcp.cTPSAIncrement.length; i++)
    if (count[i] != 0)
      detail.add_7('' + count[i] + ' * ' + carcp.cTPSAIncrement[i] + '   AtomType: ' + carcp.cPolarAtomTypeName[i], 2);
}
;
_.assessPSA = function assessPSA(mol){
  var count, i, psa;
  count = this.getPolarAtomTypeCounts(mol);
  psa = 0;
  for (i = 0; i < carcp.cTPSAIncrement.length; i++)
    psa += count[i] * carcp.cTPSAIncrement[i];
  return psa;
}
;
_.getDetail_0 = function getDetail_1(mol){
  var detail;
  detail = new carcp.ParameterizedStringList;
  detail.add_7('The polar surface area prediction is based on an atom-type based', 2);
  detail.add_7('increment system, published by P. Ertl, B. Rohde, P. Selzer', 2);
  detail.add_7('in J. Med. Chem. 2000, 43, 3714-3717', 2);
  detail.add_7('Recognized atom types and their contributions are:', 2);
  this.addTPSAIncrements(mol, detail);
  return detail;
}
;
_.getPolarAtomType = function getPolarAtomType(mol, atom){
  var i;
  switch (mol.getAtomicNo_0(atom)) {
    case 7:
      if (mol.isAromaticAtom_1(atom)) {
        if (mol.getAtomCharge_0(atom) == 0) {
          if (mol.getAllHydrogens_0(atom) == 0) {
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 2)
              return 18;
            else {
              for (i = 0; i < mol.getNonHydrogenNeighbourCount_0(atom); i++)
                if (!mol.isAromaticBond_0(mol.getConnBond_0(atom, i)))
                  return 20;
              return 19;
            }
          }
           else 
            return 22;
        }
         else if (mol.getAtomCharge_0(atom) == 1) {
          if (mol.getAllHydrogens_0(atom) == 0) {
            for (i = 0; i < mol.getNonHydrogenNeighbourCount_0(atom); i++)
              if (!mol.isAromaticBond_0(mol.getConnBond_0(atom, i)))
                return mol.getAtomCharge_0(mol.getConnAtom_0(atom, i)) < 0?21:24;
            return 23;
          }
           else 
            return 25;
        }
      }
       else {
        if (mol.getAtomCharge_0(atom) == 0) {
          switch (mol.getAllHydrogens_0(atom)) {
            case 0:
              switch (mol.getAtomPi_0(atom)) {
                case 0:
                  if (mol.getAtomRingSize_0(atom) == 3)
                    return 5;
                  else 
                    return 0;
                case 1:
                  return 1;
                case 2:
                  return 2;
              }

              break;
            case 1:
              switch (mol.getAtomPi_0(atom)) {
                case 0:
                  if (mol.getAtomRingSize_0(atom) == 3)
                    return 7;
                  else 
                    return 6;
                case 1:
                  return 8;
              }

              break;
            case 2:
              return 9;
          }
        }
         else if (mol.getAtomCharge_0(atom) == 1) {
          switch (mol.getAllHydrogens_0(atom)) {
            case 0:
              switch (mol.getAtomPi_0(atom)) {
                case 0:
                  return 10;
                case 1:
                  return this.hasNegativeNeighbour_0(mol, atom)?3:11;
                case 2:
                  if (mol.getConnBondOrder_0(atom, 0) == 2)
                    return this.hasNegativeNeighbour_0(mol, atom)?4:carcp.cTPSAIncrement.length + 1;
                  else 
                    return 12;
              }

              break;
            case 1:
              switch (mol.getAtomPi_0(atom)) {
                case 0:
                  return 13;
                case 1:
                  return 14;
              }

              break;
            case 2:
              return mol.getAtomPi_0(atom) == 0?15:16;
            case 3:
              return 17;
          }
        }
      }

      return carcp.cTPSAIncrement.length + 1;
    case 8:
      if (mol.isAromaticAtom_1(atom)) {
        if (mol.getAtomCharge_0(atom) == 0)
          return 31;
      }
       else {
        if (mol.getAtomCharge_0(atom) == 0) {
          if (mol.getAtomPi_0(atom) > 0)
            return 28;
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 1)
            return 29;
          if (mol.getAtomRingSize_0(atom) == 3)
            return 27;
          return 26;
        }
         else if (mol.getAtomCharge_0(atom) == -1) {
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 1 && mol.getAtomCharge_0(mol.getConnAtom_0(atom, 0)) > 0)
            return 28;
          return 30;
        }
      }

      return carcp.cTPSAIncrement.length + 1;
    case 15:
      if (mol.getAtomCharge_0(atom) == 0) {
        if (mol.getAllHydrogens_0(atom) == 0) {
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 3 && mol.getAtomPi_0(atom) == 0)
            return 39;
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 2 && mol.getAtomPi_0(atom) == 1)
            return 40;
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 4 && mol.getAtomPi_0(atom) == 1)
            return 41;
        }
         else if (mol.getAllHydrogens_0(atom) == 1) {
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 3 && mol.getAtomPi_0(atom) == 1)
            return 42;
        }
      }

      return carcp.cTPSAIncrement.length + 1;
    case 16:
      if (mol.getAtomCharge_0(atom) == 0) {
        if (mol.isAromaticAtom_1(atom)) {
          if (mol.getNonHydrogenNeighbourCount_0(atom) == 2)
            return 37;
          else 
            return 38;
        }
         else {
          if (mol.getAllHydrogens_0(atom) == 0) {
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 2 && mol.getAtomPi_0(atom) == 0)
              return 32;
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 1 && mol.getAtomPi_0(atom) == 1)
              return 33;
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 3 && mol.getAtomPi_0(atom) == 1)
              return 34;
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 4 && mol.getAtomPi_0(atom) == 2)
              return 35;
          }
           else if (mol.getAllHydrogens_0(atom) == 1) {
            if (mol.getNonHydrogenNeighbourCount_0(atom) == 1)
              return 36;
          }
        }
      }

      return carcp.cTPSAIncrement.length + 1;
  }
  return carcp.cTPSAIncrement.length;
}
;
_.getPolarAtomTypeCounts = function getPolarAtomTypeCounts(mol){
  var atom, count;
  count = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, carcp.cTPSAIncrement.length + 2, 15, 1);
  mol.ensureHelperArrays_0(7);
  for (atom = 0; atom < mol.getAtoms_0(); atom++)
    count[this.getPolarAtomType(mol, atom)]++;
  return count;
}
;
_.hasNegativeNeighbour_0 = function hasNegativeNeighbour_0(mol, atom){
  var i;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++)
    if (mol.getAtomCharge_0(mol.getConnAtom_0(atom, i)) < 0)
      return true;
  return false;
}
;
carcp.cPSAUnknown = 0;
cggl.Lcom_actelion_research_chem_prediction_PolarSurfaceAreaPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'PolarSurfaceAreaPredictor', 314, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_PropertyCalculator = function $clinit_PropertyCalculator(){
  carcp.$clinit_PropertyCalculator = emptyMethod;
  jl.$clinit_Object();
}
;
carcp.PropertyCalculator = function PropertyCalculator(mol){
  carcp.$clinit_PropertyCalculator();
  Object_0.call(this);
  this.$init_125();
  this.mMolecule = mol;
  mol.normalizeAmbiguousBonds_0();
}
;
defineClass(90, 1, {1:1});
_.$init_125 = function $init_125(){
}
;
_.getAcceptorCount = function getAcceptorCount(){
  var atom, count;
  count = 0;
  for (atom = 0; atom < this.mMolecule.getAllAtoms_0(); atom++)
    if (this.mMolecule.getAtomicNo_0(atom) == 7 || this.mMolecule.getAtomicNo_0(atom) == 8)
      count++;
  return count;
}
;
_.getDonorCount = function getDonorCount(){
  var atom, count;
  count = 0;
  for (atom = 0; atom < this.mMolecule.getAllAtoms_0(); atom++)
    if ((this.mMolecule.getAtomicNo_0(atom) == 7 || this.mMolecule.getAtomicNo_0(atom) == 8) && this.mMolecule.getAllHydrogens_0(atom) > 0)
      count++;
  return count;
}
;
_.getLogP = function getLogP(){
  var e;
  try {
    return (new carcp.CLogPPredictor).assessCLogP(this.mMolecule);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      e.printStackTrace();
      return -999;
    }
     else 
      throw toJs($e0);
  }
}
;
_.getLogPDetail = function getLogPDetail(){
  return (new carcp.CLogPPredictor).getDetail_0(this.mMolecule);
}
;
_.getLogS = function getLogS(){
  return (new carcp.SolubilityPredictor).assessSolubility(this.mMolecule);
}
;
_.getLogSDetail = function getLogSDetail(){
  return (new carcp.SolubilityPredictor).getDetail_0(this.mMolecule);
}
;
_.getPolarSurfaceArea = function getPolarSurfaceArea(){
  return (new carcp.PolarSurfaceAreaPredictor).assessPSA(this.mMolecule);
}
;
_.getPolarSurfaceAreaDetail = function getPolarSurfaceAreaDetail(){
  return (new carcp.PolarSurfaceAreaPredictor).getDetail_0(this.mMolecule);
}
;
_.getRotatableBondCount_0 = function getRotatableBondCount_0(){
  return this.mMolecule.getRotatableBondCount_0();
}
;
_.getStereoCenterCount_0 = function getStereoCenterCount_0(){
  return this.mMolecule.getStereoCenterCount_0();
}
;
cggl.Lcom_actelion_research_chem_prediction_PropertyCalculator_2_classLit = createForClass('com.actelion.research.chem.prediction', 'PropertyCalculator', 90, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_SolubilityPredictor = function $clinit_SolubilityPredictor(){
  carcp.$clinit_SolubilityPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.cSolubilityUnknown = -999;
  carcp.cAtomType = stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 60:1}, 5, 14, [524290, 524292, 524297, 524301, 589826, 589827, 589828, 589829, 589832, 589833, 589837, 589838, 688130, 688131, 688132, 688137, 688141, 819202, 819203, 819204, 819205, 819208, 819209, 1114114, 1114115, 1114116, 1114120, 1212420, 1343492, 1343496, 1638402, 1638403, 17367042, 17367043, 17367044, 17367045, 17367048, 17367049, 17367053, 17367054, 17465346, 1074266116, 1208483842, 1208483844, 1208549378, 1208549379, 1208549380, 1208549384, 1208549388, 1409810434, 1409875970, 1409875971, 1409875972, 1409875976, 1409974274, 1409974280, 1409974284, 1678311426, 1678311427, 1678311428, 1678311432, 1678311436, 1678409730, 1678409731, 1678409732, 1678540802, 1678540803, 1678540804, 1678540808, 2282291202, 2282291203, 2282389506, 2282389507, 2282520578, 2282520579, 2483617794, 2483617795, 2483716098, 2483716099, 2752675842, 3356033026, 3557359618, 3557457922, 3557588994, 34510798850, 34510798851, 34510798852, 34510798856, 34712125442, 34712125443, 34712125444, 34712125448, 34712223746, 34712223747, 34712223748, 34980560898, 34980560899, 34980659202, 35568287746, 35568287747, 35568287748, 35568287752, 35568386050, 35568386051, 35568386052, 35568517122, 35568517123, 35568517124, 35568517128, 35568812034, 35568812035, 35568910338, 35568910339, 35568910350, 35569336322, 35585064962, 35585064963, 35585064964, 35585064968, 35769548802, 35769614338, 35769712642, 35769843714, 35786391554, 2475109711874, 2475109711875, 2887426572290, 2887426572291, 2887627898882, 2887627898883, 2887627997186, 3437182386178, 3437182386179, 3437383712770, 3437383811074, 3437652148226, 3437652377602, 3437652377603, 4674132967426, 4674334294018, 4674334294019, 4674334392322, 4674602729474, 4674602827778, 4674602958850, 5086449827842, 5086449827848, 5086651154434, 5086651154435, 5086651252738, 5086651252739, 5086651252743, 5086651252744, 5086919589890, 5086919589896, 5086919688194, 5086919819266, 5636406968322, 5636407066626, 5636675502082, 5636675633154, {l:589826, m:73760, h:4}, {l:589827, m:73760, h:4}, {l:688130, m:73760, h:4}, {l:819202, m:73760, h:4}, {l:65538, m:73764, h:4}, {l:65539, m:73764, h:4}, {l:589826, m:172064, h:4}, {l:589827, m:172064, h:4}, {l:688130, m:172064, h:4}, {l:819202, m:172064, h:4}, {l:819203, m:172064, h:4}, {l:65538, m:172068, h:4}, {l:65539, m:172068, h:4}, {l:589826, m:172112, h:4}, {l:589827, m:172112, h:4}, {l:688130, m:172112, h:4}, {l:819202, m:172112, h:4}, {l:65538, m:172116, h:4}, {l:163842, m:172116, h:4}, {l:589826, m:303136, h:4}, {l:688130, m:303136, h:4}, {l:819202, m:303136, h:4}, {l:65538, m:303140, h:4}, {l:589826, m:303184, h:4}, {l:688130, m:303184, h:4}, {l:819202, m:303184, h:4}, {l:65538, m:303188, h:4}, {l:589826, m:590112, h:4}, {l:589827, m:590112, h:4}, {l:589826, m:590160, h:4}, {l:589827, m:590160, h:4}, {l:688130, m:590160, h:4}, {l:589826, m:590224, h:4}, {l:589827, m:590224, h:4}, {l:688130, m:590224, h:4}, {l:819202, m:590224, h:4}, {l:819203, m:590224, h:4}, {l:589826, m:590368, h:4}, {l:688130, m:590368, h:4}, {l:819202, m:590368, h:4}, {l:819208, m:590368, h:4}, {l:589826, m:590416, h:4}, {l:589832, m:590416, h:4}, {l:688130, m:590416, h:4}, {l:688135, m:590416, h:4}, {l:819202, m:590416, h:4}, {l:1212430, m:590416, h:4}, {l:65538, m:598052, h:4}, {l:65538, m:598100, h:4}, {l:65539, m:598100, h:4}, {l:163842, m:598100, h:4}, {l:163843, m:598100, h:4}, {l:589826, m:598304, h:4}, {l:589827, m:598304, h:4}, {l:688130, m:598304, h:4}, {l:688131, m:598304, h:4}, {l:1114114, m:598304, h:4}, {l:1212418, m:598304, h:4}, {l:589826, m:598308, h:4}, {l:589826, m:688416, h:4}, {l:589826, m:688464, h:4}, {l:589826, m:688672, h:4}, {l:589826, m:688720, h:4}, {l:688130, m:688720, h:4}, {l:589826, m:590112, h:288}, {l:589826, m:590112, h:336}, {l:589827, m:590112, h:336}, {l:589826, m:688416, h:336}, {l:589826, m:688464, h:336}, {l:688130, m:688464, h:336}, {l:589826, m:590112, h:400}, {l:589826, m:688416, h:400}, {l:589826, m:688464, h:400}, {l:688130, m:688464, h:400}, {l:589826, m:819488, h:400}, {l:589826, m:819536, h:400}, {l:688130, m:819536, h:400}, {l:589826, m:819600, h:400}, {l:688130, m:819600, h:400}, {l:819202, m:819600, h:400}, {l:589831, m:590112, h:592}, {l:589831, m:688416, h:592}, {l:589831, m:688464, h:592}, {l:688135, m:688464, h:592}, {l:589831, m:819536, h:592}, {l:688135, m:819536, h:592}, {l:688135, m:819600, h:592}, {l:819207, m:819600, h:592}, {l:589832, m:1212704, h:592}, {l:589832, m:1212752, h:592}, {l:688136, m:1212752, h:592}, {l:589832, m:1212816, h:592}, {l:688136, m:1212816, h:592}, {l:589831, m:688464, h:656}, {l:589826, m:590112, h:8480}, {l:589826, m:688416, h:8480}, {l:589826, m:688464, h:8480}, {l:688130, m:688464, h:8480}, {l:589826, m:819488, h:8480}, {l:819202, m:819600, h:8480}, {l:688135, m:1212752, h:8480}, {l:589832, m:1213008, h:8480}, {l:688136, m:1213008, h:8480}, {l:819208, m:1213008, h:8480}, {l:589826, m:590112, h:8484}, {l:589826, m:590160, h:8484}, {l:688130, m:590160, h:8484}, {l:589826, m:598304, h:8484}, {l:688130, m:598304, h:8484}, {l:819202, m:598304, h:8484}]);
  carcp.cIncrement = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {65:1, 4:1, 1:1}, 5, 15, [-0.1899999976158142, 1.2699999809265137, -0.7009999752044678, 2.690999984741211, -0.22699999809265137, 0.029999999329447746, 0.10599999874830246, -0.47600001096725464, -0.44699999690055847, -0.19099999964237213, -0.3330000042915344, 0.0860000029206276, 0.24699999392032623, -0.06199999898672104, 0.01600000075995922, 0.3869999945163727, 0.23499999940395355, -0.4320000112056732, -0.902999997138977, 0.38999998569488525, 0.5809999704360962, 4.52400016784668, -0.6349999904632568, -0.2800000011920929, 0.7699999809265137, -0.05000000074505806, 1.0870000123977661, 0.19200000166893005, 0.19599999487400055, -0.5199999809265137, 0.5419999957084656, 0.3630000054836273, 0.7919999957084656, 0.5920000076293945, 0.9639999866485596, 0.3540000021457672, -0.6850000023841858, -0.3149999976158142, -0.4129999876022339, -0.5950000286102295, 0.2199999988079071, -1.4320000410079956, -2.253999948501587, 0.4399999976158142, -0.27000001072883606, -0.13300000131130219, -0.26899999380111694, 0.2669999897480011, 0.5720000267028809, -0.5680000185966492, 0.17399999499320984, -0.1850000023841858, -0.23499999940395355, -0.17000000178813934, -0.1809999942779541, -0.34200000762939453, -0.3479999899864197, -0.43700000643730164, -0.8040000200271606, -0.41200000047683716, -0.2150000035762787, -0.625, -0.8309999704360962, 0.4970000088214874, -0.4309999942779541, -1.3309999704360962, 0.5070000290870667, -0.6320000290870667, -0.5989999771118164, -0.15600000321865082, -0.3529999852180481, -0.164000004529953, -0.4410000145435333, -0.4970000088214874, -1.059999942779541, 0.11500000208616257, -0.22499999403953552, -0.15399999916553497, -0.03099999949336052, -1.5740000009536743, -1.093000054359436, -0.7379999756813049, -0.44999998807907104, -0.5559999942779541, -0.1809999942779541, 2.384000062942505, 1.75, -1.6660000085830688, -1.065999984741211, 1.3270000219345093, 0.8029999732971191, -1.5049999952316284, -2.5369999408721924, -0.17000000178813934, 0.14900000393390656, 0.5210000276565552, 2.9049999713897705, -0.25200000405311584, 0.8600000143051147, 0.3610000014305115, 0.40299999713897705, 0.004999999888241291, 1.1460000276565552, 0.9359999895095825, -0.30000001192092896, 0.20900000631809235, -0.5830000042915344, -0.024000000208616257, -0.009999999776482582, 0.6110000014305115, 0.4860000014305115, 0.8619999885559082, -0.03500000014901161, -0.5960000157356262, 1.1610000133514404, 1.6469999551773071, 0.843999981880188, 0.125, 0.1420000046491623, -0.17100000381469727, 0.44200000166893005, 0.08799999952316284, 3.065999984741211, 1.6519999504089355, -0.2029999941587448, -0.017999999225139618, 0.023000000044703484, 0.0729999989271164, 0.2540000081062317, 0.5540000200271606, 0.5950000286102295, -0.4059999883174896, -0.6370000243186951, -0.17399999499320984, -0.10100000351667404, -0.5429999828338623, -2.4059998989105225, -3.2920000553131104, -0.05299999937415123, -0.19300000369548798, 1.850000023841858, -1.2610000371932983, -0.656000018119812, -0.7300000190734863, -0.9380000233650208, 0.12800000607967377, 1.1540000438690186, 0.24199999868869781, -0.5289999842643738, -0.27799999713897705, -0.8019999861717224, 0.9120000004768372, -1.38100004196167, 0.46299999952316284, 1.0740000009536743, -0.628000020980835, -0.9620000123977661, -1.8320000171661377, -1.4989999532699585, -2.115999937057495, -2.2070000171661377, -1.3170000314712524, 2.500999927520752, -0.8489999771118164, -0.6019999980926514, -0.621999979019165, 2.121999979019165, -2.2260000705718994, 0.9129999876022339, -2.259000062942505, -1.25, 1.3940000534057617, -1.4019999504089355, 2.072999954223633, -2.9570000171661377, 0.29100000858306885, -3.4760000705718994, -2.7269999980926514, -3.131999969482422, -2.119999885559082, -0.7250000238418579, -0.296999990940094, 0.08299999684095383, 0.34700000286102295, -1.4249999523162842, -1.659999966621399, -1.281999945640564, -1.2649999856948853, 0.718999981880188, 0.1379999965429306, 1.3020000457763672, 0.859000027179718, 1.3589999675750732, 0.6589999794960022, -0.9399999976158142, 0.8999999761581421, 0.3190000057220459, -2.571000099182129, 1.1089999675750732, 0.972000002861023, 1.652999997138977, 2.6019999980926514, 0.7289999723434448, 1.065999984741211, 1.0670000314712524, -0.3109999895095825, 0.03099999949336052, -0.2029999941587448, -0.6809999942779541, -1.2580000162124634, 1.0700000524520874, -3.0959999561309814, -0.2280000001192093, 1.9329999685287476, 0.11900000274181366, 2.1080000400543213, 0.11299999803304672, 1.628000020980835, 1.3079999685287476, 3.3359999656677246, 0.7540000081062317, -0.4650000035762787, -0.3970000147819519, 0.07699999958276749, -0.4790000021457672, -0.15299999713897705, 0.14100000262260437, 2.134999990463257, 0.23399999737739563, 0.460999995470047, 0.6700000166893005, -0.3610000014305115, -1.0390000343322754, -0.4830000102519989, 0.13699999451637268, -0.7680000066757202, -0.5109999775886536, 3.4240000247955322, -0.8550000190734863, -0.5849999785423279, -1.5670000314712524, 3.3429999351501465, 1.840000033378601, 0.3889999985694885, 1.121999979019165, 1.6299999952316284, 1.3350000381469727, 0.3659999966621399, -0.5569999814033508, 0.4320000112056732, 0.20399999618530273, 0.8820000290870667, 0.4659999907016754, -0.4580000042915344, 0.40400001406669617, 0.6570000052452087, 1.1150000095367432, 1.9759999513626099, 1.7860000133514404, -0.035999998450279236, -1.0499999523162842, 1.0449999570846558, 0.04399999976158142, 1.0329999923706055, -1.0800000429153442, 2.5390000343322754, 2.234999895095825, 2.2899999618530273, 3.121000051498413, 3.931999921798706, 2.75]);
}
;
carcp.SolubilityPredictor = function SolubilityPredictor(){
  carcp.$clinit_SolubilityPredictor();
  Object_0.call(this);
  this.$init_126();
}
;
defineClass(313, 1, {1:1}, carcp.SolubilityPredictor);
_.$init_126 = function $init_126(){
}
;
_.assessSolubility = function assessSolubility(mol){
  var atom, e, i, logS, type_0;
  logS = -0.5299999713897705;
  mol.normalizeAmbiguousBonds_0();
  mol.ensureHelperArrays_0(7);
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    type_0 = fromInt_0(-1);
    try {
      type_0 = carc2.getAtomType(mol, atom, 2144);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 14)) {
        e = $e0;
      }
       else 
        throw toJs($e0);
    }
    for (i = 0; i < carcp.cIncrement.length; i++) {
      if (eq(carcp.cAtomType[i], type_0)) {
        logS += carcp.cIncrement[i];
        break;
      }
    }
  }
  return logS;
}
;
_.getDetail_0 = function getDetail_2(mol){
  var atom, count, detail, e, formatter, i, i0, type_0;
  detail = new carcp.ParameterizedStringList;
  detail.add_7('Solubility values are estimated applying an atom-type based increment system.', 2);
  detail.add_7('Atom-types are 64-bit numbers describing atoms and their near surrounding.', 2);
  detail.add_7('Recognized atom types and their contributions are:', 2);
  detail.add_7('Base value = -0.530', 2);
  count = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, carcp.cIncrement.length, 15, 1);
  if (isNotNull(mol)) {
    mol.normalizeAmbiguousBonds_0();
    mol.ensureHelperArrays_0(7);
    for (atom = 0; atom < mol.getAtoms_0(); atom++) {
      type_0 = fromInt_0(-1);
      try {
        type_0 = carc2.getAtomType(mol, atom, 2144);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 14)) {
          e = $e0;
        }
         else 
          throw toJs($e0);
      }
      for (i0 = 0; i0 < carcp.cIncrement.length; i0++) {
        if (eq(carcp.cAtomType[i0], type_0)) {
          count[i0]++;
          break;
        }
      }
    }
  }
  formatter = new jt.DecimalFormat('#0.000');
  for (i = 0; i < carcp.cIncrement.length; i++)
    if (count[i] != 0)
      detail.add_7('' + count[i] + ' * ' + formatter.format_1(carcp.cIncrement[i]) + '   AtomType: 0x' + toHexString_0(carcp.cAtomType[i]), 2);
  return detail;
}
;
carcp.cSolubilityUnknown = 0;
cggl.Lcom_actelion_research_chem_prediction_SolubilityPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'SolubilityPredictor', 313, cggl.Ljava_lang_Object_2_classLit);
carcp.$clinit_ToxicityPredictor = function $clinit_ToxicityPredictor(){
  carcp.$clinit_ToxicityPredictor = emptyMethod;
  jl.$clinit_Object();
  carcp.RISK_NAME = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['unknown', 'none', 'low', 'high']);
  carcp.cRiskNameA = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['mutagenic', 'tumorigenic', 'irritant', 'reproductive effective']);
  carcp.cRiskNameN = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Mutagenicity', 'Tumorigenicity', 'Irritating effects', 'Reproductive effects']);
}
;
carcp.ToxicityPredictor = function ToxicityPredictor(){
  carcp.$clinit_ToxicityPredictor();
  var e;
  Object_0.call(this);
  this.$init_127();
  {
    cggl.Lcom_actelion_research_chem_prediction_ToxicityPredictor_2_classLit;
    if (!carcp.sInitialized_0) {
      try {
        carcp.sRiskMolecules = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_SortedStringList_2_classLit, {4:1, 1:1, 7:1}, 111, 4, 0, 1);
        carcp.sHighRiskFragments = initUnidimensionalArray(cggl.Ljava_util_ArrayList_2_classLit, {4:1, 1:1, 7:1}, 18, 4, 0, 1);
        carcp.sLowRiskFragments = initUnidimensionalArray(cggl.Ljava_util_ArrayList_2_classLit, {4:1, 1:1, 7:1}, 18, 4, 0, 1);
        setCheck(carcp.sHighRiskFragments, 0, this.readIDCodeFile(carcp.m1_0));
        setCheck(carcp.sHighRiskFragments, 1, this.readIDCodeFile(carcp.t1_0));
        setCheck(carcp.sHighRiskFragments, 2, this.readIDCodeFile(carcp.i1_0));
        setCheck(carcp.sHighRiskFragments, 3, this.readIDCodeFile(carcp.r1_0));
        setCheck(carcp.sLowRiskFragments, 0, this.readIDCodeFile(carcp.m2_0));
        setCheck(carcp.sLowRiskFragments, 1, this.readIDCodeFile(carcp.t2_0));
        setCheck(carcp.sLowRiskFragments, 2, this.readIDCodeFile(carcp.i2_0));
        setCheck(carcp.sLowRiskFragments, 3, this.readIDCodeFile(carcp.r2_0));
        setCheck(carcp.sRiskMolecules, 0, this.readAndSortIDCodeFile(carcp.m3));
        setCheck(carcp.sRiskMolecules, 1, this.readAndSortIDCodeFile(carcp.t3_0));
        setCheck(carcp.sRiskMolecules, 2, this.readAndSortIDCodeFile(carcp.i3_0));
        setCheck(carcp.sRiskMolecules, 3, this.readAndSortIDCodeFile(carcp.r3_0));
        carcp.sInitialized_0 = true;
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 14)) {
          e = $e0;
          (jl.$clinit_System() , jl.out_0).println_0('Error ToxicityPredictor::initialize() ' + e);
        }
         else 
          throw toJs($e0);
      }
    }
  }
}
;
defineClass(441, 1, {1:1}, carcp.ToxicityPredictor);
_.$init_127 = function $init_127(){
}
;
_.assessRisk_0 = function assessRisk(testMolecule, riskType, threadMaster){
  var fragment, i, i0, sss;
  if (!carcp.sInitialized_0)
    return 0;
  if (carcp.sRiskMolecules[riskType].contains_1((new carc2.Canonizer(testMolecule)).getIDCode_0()))
    return 3;
  sss = new carc2.SSSearcher_0(1);
  fragment = new carc2.StereoMolecule;
  for (i0 = 0; i0 < carcp.sHighRiskFragments[riskType].size(); i0++) {
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return 0;
    jl.yield_0();
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, castToString(carcp.sHighRiskFragments[riskType].getAtIndex(i0)));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0())
      return 3;
  }
  for (i = 0; i < carcp.sLowRiskFragments[riskType].size(); i++) {
    if (isNotNull(threadMaster) && threadMaster.threadMustDie())
      return 0;
    jl.yield_0();
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, castToString(carcp.sLowRiskFragments[riskType].getAtIndex(i)));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0())
      return 2;
  }
  return 1;
}
;
_.getDetail_2 = function getDetail_3(testMolecule, riskType){
  var found, fragment, i, i0, idcode, sss, theDetail;
  theDetail = new carcp.ParameterizedStringList;
  if (!carcp.sInitialized_0) {
    theDetail.add_7('Toxicity predictor not properly initialized.', 2);
    return theDetail;
  }
  idcode = (new carc2.Canonizer(testMolecule)).getIDCode_0();
  if (carcp.sRiskMolecules[riskType].contains_1(idcode)) {
    theDetail.add_7('This molecule is known to be ' + carcp.cRiskNameA[riskType] + ':', 2);
    theDetail.add_7(idcode, 1);
    return theDetail;
  }
  sss = new carc2.SSSearcher_0(1);
  found = false;
  fragment = new carc2.StereoMolecule;
  for (i0 = 0; i0 < carcp.sHighRiskFragments[riskType].size(); i0++) {
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, castToString(carcp.sHighRiskFragments[riskType].getAtIndex(i0)));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0()) {
      if (!found)
        theDetail.add_7('High-risk fragments indicating ' + carcp.cRiskNameN[riskType] + ':', 2);
      found = true;
      theDetail.add_7(castToString(carcp.sHighRiskFragments[riskType].getAtIndex(i0)), 1);
    }
  }
  found = false;
  for (i = 0; i < carcp.sLowRiskFragments[riskType].size(); i++) {
    (new carc2.IDCodeParser_0(false)).parse_0(fragment, castToString(carcp.sLowRiskFragments[riskType].getAtIndex(i)));
    sss.setMol_0(fragment, testMolecule);
    if (sss.isFragmentInMolecule_0()) {
      if (!found)
        theDetail.add_7('Medium-risk fragments indicating ' + carcp.cRiskNameN[riskType] + ':', 2);
      found = true;
      theDetail.add_7(castToString(carcp.sLowRiskFragments[riskType].getAtIndex(i)), 1);
    }
  }
  if (theDetail.getSize_0() == 0)
    theDetail.add_7('No indication for ' + carcp.cRiskNameN[riskType] + ' found.', 2);
  return theDetail;
}
;
_.readAndSortIDCodeFile = function readAndSortIDCodeFile(file){
  var e, idcode, molecules, theReader;
  theReader = new ji.BufferedReader(new ji.StringReader(file));
  molecules = new carc2.SortedStringList;
  while (true) {
    try {
      idcode = theReader.readLine();
      if (jsNotEquals(idcode, null))
        molecules.addString(idcode);
      else 
        break;
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 66)) {
        e = $e0;
        break;
      }
       else 
        throw toJs($e0);
    }
  }
  theReader.close_0();
  return molecules;
}
;
_.readIDCodeFile = function readIDCodeFile(file){
  var e, fragments, idcode, theReader;
  theReader = new ji.BufferedReader(new ji.StringReader(file));
  fragments = new ju.ArrayList;
  while (true) {
    try {
      idcode = theReader.readLine();
      if (jsNotEquals(idcode, null))
        fragments.add(idcode);
      else 
        break;
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 66)) {
        e = $e0;
        break;
      }
       else 
        throw toJs($e0);
    }
  }
  theReader.close_0();
  return fragments;
}
;
carcp.cHighRisk = 3;
carcp.cLowRisk = 2;
carcp.cNoRisk = 1;
carcp.cRiskTypeIrritant = 2;
carcp.cRiskTypeMutagenic = 0;
carcp.cRiskTypeReproductiveEffective = 3;
carcp.cRiskTypeTumorigenic = 1;
carcp.cRiskTypes = 4;
carcp.cUnknownRisk = 0;
carcp.i1_0 = 'eOHBNZ`pge@\ngCa@@dmHFFbwH@\ngFp@DiTujhCBbKWdH\ngJPXHlQxQ{TAaeb\ngCi`HEdfZ@pRp\nfJ@FD\ngJPHAbIJuPFADVyB\ngC`@Die@ppfyD\ngJQ@@dkU@XFKGd@\ngJP@DizhC@qX|`@\ngJQ@@dru@XI[dH\ngGQ@@eMuTA`Xl^R`\ngJQ@@eKU@XYX|d@\ngGQ@@djuTAaQEcrT\neMABHXaIhH\ngCa@@dkPFBbyL\ngGQ@@drmTAaekrD\ngJQ@@eKS@XZK\\a@\ngCh@@dmPFFDwH`\neMACD\\QIhH\ngJU@DPdju`P\ngGX`HDdwMLA@\ngGY@JDivjpH\ngCi@LDek@`\ndeTH@@RYWVf`@j@CC`pjxYyB@\ndid@p@bBbFbDfYoa`b@@LJ@fx^QP\ndeTH@@RYe]aZZj`cJ\ngFq@@drfmU@X[F|b@\ndeTH@@rJJIHdsSUL@P\ndeTL@@QdfygFV``@@pjfxYyB@\ndaDH@@RVU[f@@@LBcB[bUp\ndifD@HADfyWaZjj@H\ngGQ@@dkLtAad[rP\ngGQ@@dlltHkCXwd`\ndifH@JAJ[gxZB@@CBdJf{dB\ndidHPBBHFHRYgVzB@`@phLKayE@\ndeVD`FFPbDfUnkh@a`@`\ndiD@@LdbJTZjh@pzDpjX^Qp\neFDBcA`d\ndidL@@KdiuVDjjj@H\ndaDH@@RYe[hB@@LJpj[nP@\ndiT@@DiYXfifjjh@`\ngF|@ABeKZsU@P\ngNq`@fdvkSHf\\EcqJ`\ndiDL@@PTfU]jZP`f\ngJP`@TeZhCCKGbD@\ngNp`@dfujj@plVMx`p\ngGQ`@jdjmTA`l^JT\ngNp`@dfUZi@pVOEV\ngNq@@djkUPFEVM_I@\ngNq@@djmUPFCbqky@\ndiDD@@QIeuZfhHJpkBiny@`\ndaxD@@QIgUjj@LLpfxe\\\ndaxD@@QImeijBLlBSJ[d\\\ngNp`@deVZj@pNM_I@\ngNp`@dfvZj@pNM_H`\ndaxD@@QIeejj@LBpj[d\\\ngNq@@djmSPf\\GEcWr@\ngJPdE`DRPcyXCrD\ngGQ@@dsmLIkCKGdh\ngNq@@dsmUPFEDVOEV\ndaxH@@RYuji`bgA`SBknIC@\ngGQLJIARAdDfzj`LInJT\ngGQLLIAREdDfvj`LINP`\ndiDHhLBPRPjPzPFPR[[jjj@H\ngNq`@jdjsUPFAqkyH\ngGP`ATiVj`LMEnHt\ndaxH@@RYWjj`CC`aLInyE@\nfHc`A@\ndiF@@@rRHiJjj`CChSBiny@`\nday@@@{IEHkUU@FC@fES\\c`\ngGXDL@aABS\\uPFFAoH`\ngNxLL@aAABDfVZj@`\ngGPB@DHHpQPaIUZdB\ngGPD@DXHRfZf@ppUxlP\ngGX@@dsuTAaQEcrT\ngJY@BDeZlCBSbB@\ngGY@LDeVj`LCD[qC@\ngNx@@eRmUPFEbu_HP\ngNx`HDdvkSPfX\neMhDRZCAKd`\ngGQ`@ZdruTA`qEcP\ndiDDpLH@bOA@aIkUZjh@`\ndaDH@@RVU[f@@@LJcBinQp\ngFp`@dfTujXCAZ|a@\ngOx`FDdrikTtA@\ngJP@DkfhC@bH|f@\ngC`D@DSpRnhB\ngNq`@bdvkUPFFV_IP\ngGPP@cTfyi`ODj\ngJP`@TeZhC@qX|`@\ngCaHL@aIZPLDIrH\ngNp`@dfUZj@pvMyF\ndaxH@@RUVZj`CAdpj[nQ@\ngJQHLHaIVj@`\ngNphMQDIK[UTA@\ngJQ@@dkSBJpHbwHP\ngNqBLIAREdGHIMmUTA@\ndaxL@@RdfuVjh@pILInQp\ngGQ`@jdvmTA`l^IT\ngNp`@|dTQjj@plVMyF\ngJQ@@eOU@XZH|f@\ngGT@ATiVj`LJHm^P`\ngGT@Ade[j`LHnHt\ngCe@H`dkPGbV@\ngGUHLZHaIUjdB\ndazH@LAIV^jj@LFBDInyE@\ngJP@DiVhPVFbwDB\neMDARVCAd\ngNphBqDILsTrA@\nfHghA@\ndeTD@@EIYe^efjZ@H\ndeTD@@QIgeQej@@@LJrfF^Qp\ndcLD@@UIUe]FVX@J@aKCdrfx]yD@\ndmtD@@QImYVUZX@@Hrp{B[ae^P`\ngGP`@deUjPLEcqR`\ndeTH@@RUYTYi`@@aK@XSJ[agd@\ndmtD@@QIee^UZ``@@pXjXYWd\\\ngOp@DjWkjj`LJEc^JL\ndmtHPBBHfHRYeUXXHHh@H\ngOp@DjWkZj`LCD[qY`\ngJQHBJqIVz@`\ngCa`@ldkPD\ndmtL@@RTeYW^Eh@J@CBbinWdP\ndid@@DjU^nBBD@LFaLiaxa\\\ndeTD@@qI[eQej@@@LNSJ[agdP\ndcLD@@QInUuxV`@j@CCdJfzUyF`\ndmwD@HePQInUwaZ@B`@`\ndaE@@@YIeZn`B@@pILinHG@\ndmvL@HAFR[f^FV``H@H\ndeVD`NFPbDfUvih@I`@`\ndmvD@DATfYUQUjjj`CAlJfx^QH\ndeVD`BxPbDfYYZXHF@@`\ndmt@H@bAdIdEdDfUvjZ@Bj@C@`pjyB@\ndcNH@DAIee^eVhHB@CCbine]yB@\ndmvH@JAJUuTjjjjh@pFDpfxYyB`\ndmvH`HX@cIEDdTljjVj`B\ngJQ@@dkU@XDSGdP\ndiDB@@SaRUYVjj@LJrfx^IA@\ngGQ@@dkUTA`Xm^HD\ngGP@H\x7FUPD\ngGP@DkYj`LJEc^R@\ndaxD@@QIgUjfBJlLpfxe\\\ngGQ@@eNuLIkCKWba@\ndctH@@RgYujfjZBLX\ndiDD@@QImiZjh@piLiny@`\ngJP`@dfvdCBGbV@\ngNq`@fdrkThD\ngJT@@defhCCSGd@\ndeTL`HS@BLddlRPrm@@@FEYSCOHx\ndmLD@@QIee\\jeVhHB@CBbXYWd\\\ndet@@Dje^ifzjjj`B\ngOp@DiUMZj`LFHlWrT\ngC`H@DIMTAa`mrP\ngNq`@fdr{UHFBqyJ\ngJPXHlPDQztAxlP\ngJQ@@dmS@XZX|`@\ngJQ@@eMU@XYX|d@\ngNphBpDISkURA`QEnR`\ngGPhLQDIKUU@P\ngJP@DkVhC@bK\\a@\ngJQ@@djsBJpTwDb\ngNq@@drmUPFCDVMyF\ngGP`@TfVj`LJHl^R`\ngNq`@fdrkUHD\ngGY@LDenj`LJHl^R`\ngGPhCQbILmU@P\ngOx@@drm]UTA`plZ~R@\ngGP@DjZj`LCEkq@`\ngNq@@dkMMPb\\CD[qA`\ngJQ@@dju@XJGbV@\ngNq@@ds]UPFCDVMyF\ngNx@@eLsUP`lLb~KT\nfHdXA@\ndidH@@RUe^Ejjh@pyLJfx^Q@\ndidH@@Rf~hRjjh@`\ndmv@`EBHrJJIHin`HFpHy`\ndeVD@HADfyeFV`H@@piJ[iy@`\ngOp@DjWkB@@LBmWqP`\ndeVD@HADfyUxV`@`@piJXYyA@\ndeVD@HADfyWxV`@`@piJ[iyA@\ndmv@@@rQQJEJUjh@@@pdHPfxYWdT\ngNqhHl@cIIJeiaCP\ngNpP@jtfvZf@pfxdp\ngGP`@dfUjpLH^R`\ngNp@DkUzj@pjqkyH\ngJQHHOAJuj@prqy@\ngJQHHOBOZ`H\ngJQ@@dlu@XJGbV@\ngNq@@eJuUPFEbu_HP\ndeU@@@aJyenF`HH@H\ngGY`HEdf]j`LEkrD\ngJX@@dksBIpROI`\ndedD@@QImUVjj`C@Tpj[ad\neO`BNZ`pYy@\ndaDH@@RYe[jfj@LFBLJnyC@\ngJQ@@dsT`XDQ[dH\ndid@@DjU^nBBD@LNaLJfGd\\\ndidL@@RdeVWaZjj@LJpfx^Q@\ndaF@@@Rfu[j@@@LFABinyF@\ndedD@@QImiVji`B\ngGP@DjZj`LCL[qA@\ndiDL@@RdeVyjf`B\ndmtH@@ReY}Jjjjj@H\ndcLL@@Sdf^YV]Z```@LJqae^Qh\ngGT@@dfuj`LBEcrT\ndif@PACDJHRYgvzB@`@`\ndcMH@DTLbbbRRHjuUUT@X]aTwCoHd\ndkmD`LND@HrRPjZIE]VhBB@B\ndidHPBBHFHRYgVzB@`@pHLx^HU@\ndmvH@DCHhhhTiUjjj`CAl[ae^HU@\ndknH@DAIfYuUMjjjj@H\ndcND@DCdf^YV]Z```@LFQae]yF@\ngF|@AbeJf`@@P\ndifD@HADfyWaZ@@@LBRnGbDp\nfHapA@\nf`i@`@@VRYfYU]`eNMyh@`AB@@H\ndk\x7F@@@cLdRfbTQragSfhJ@T@H\ndmLH@@rJJIQEneX@@@@C@`xYxVTr`\ndk]H@BDLbbbbRQZ]NB@P@@B\nfoA@R@HHqH@QddebRbrPeV\\m@D@@@A@\ndaFH`JHHaIf]n``@@`\ndmv@HBBHFPfPVPRYUzih@Jh@H\ndeTHPIBPzPRYeea`Ha@CCLX^QP\ndeVHPIHHchaIf^VFBBH@LBCNGbEH\nek`PJ@@@GNimlbbRfbbebrTRLrThXTlBbrjZVjjjjjfijh@CAICBc`RQSPrqspIHjhX{dFP\ndmvL`EaL@HrRRqIXYV`@`@`\nfewAP@@LtT^QQQRUJQYSQZXpgCNCeNVfjjijjjZj@B\nfoQ`@@@YIEDeDTdqWAF]UUAAE@@XB`cENRUkaFFlx\nfde``@C@heMrklk|dYpXtDDUUTT@D\ndk^H@EAJ[UVVySh@JjH@pyBhYT~If`\nfoA@@@LdbRdVeRiJs``j@@@@LEPPRgAJtZwDR\\\nf`qA@@@YEDeeHhTjL]z@Bj@@@@`\ndcnH@EAIfV^XYv@@B@@H\ndmtL`HS@BLddlRTFUh@H@H\ndeT@H@bBbAbIbDfYu[hHB`@`\ndcLHpJBPRPrPrJPsQIKmTp@@A`WBn|bP\ngGP@Di]ja@xTQF|f@\ndcLB@@Q]R[e[neh@a`@piBj]yG@\ndeU@@@eJYW~F``H@LFCBinxbR\ndeUD@HdDR[eWaZ@B@C@diaxaR\ndeVH@DAIgeQej@@@LJSJX^It`\ndcNL@HAFR[fUqUhHH`@`\ndg^L`EaC@HrRPsIYJCJt@EL@FCTwBm|``\ndaFHpBxHa@bhcHheBSTuL@P\ndg^L@D@mRY^UueVj@Bh@H\ngOp@DjWkB@@LMc^ZI`\ndidD@@yIfVXXBH@C@`[axfT\ndaDH@@RYWih@H@LJSBknP@\ndeTD@@YIfUqehD@@LJJnF^Q`\ngFtHHPDIRnMKPFBEyD\ndcnDPJa@BBBLdabRRS\\nkSP@@A@\ngNxhMD@cIHUEj`LCcWr@\ndclL@@pTign_JWZjB@`@`\ndcnD`HI`BDfYoVnWZfX@@@`\ndidH@@RVY^Ejjh@pyLJfx^Q@\ndedB@@PiRUi]jjT@`\ndmTD@@QIeUyjZZBBh\neMFINbMP|`\ndo}H`BMPbLbbbRfebXXHHfj@B\ndo}H@DhDfUfUWWZhJB`@H\ngGT`EaTf]j`LDkqX`\ndayL@DpFyIeUjj@H\ngKP@H~Jj`LEcqQ@\ndid@@LdbLTifjj`B\ndaDD@@QInXjZjh@`\neMJDBDfPpce@\ndaEH@FxDiebjiV`CCDJnHw@\ndk^H@FAJY}e\\kSie`@`HipyLhYW^HQ`\ndaFH@LAIVUnZjh@pHj[nIB@\ndieH@DHDfvWaZjj@H\ndg~H@LCHeEEDdcJg[UPTA@A@\ndifD@HADfyWaZ@@@LLPjyc\\H\ndg^L@HAER[e[[xV`@jh@H\ndeVH@LAIVYQejjj@LNPj[agdP\ndeVH@BAIV[Qejjj@H\ndmtHPEBHzHrJJISEa`HbP@`\ngGQHLHaI[ihCCBWdH\ndmuD@HXDR[fUEV```@LBRiWfMp`\ndg}@@@mJYeU|]Tz@@@H@B\nfhy`B@N@BLdTTTRRVqirUmNh@`BBh@@pt@cARUhugAyCp\ngKP@LdabjhC@bH|f@\ndmtH`ABHRYW[ih@Jh@LNALJaWb]H\ndg|@@DjWmijXYB@jjb@H\ndmtD@@gHhhhdVEjjj`C@TpfxYWdT\ndeT@@DjU_k``RPHjpFDpj[ayD`\ndeTJ@@qaeJYyzzjjj@LIaLJfxY@\ndev`@@rfeJY{ZxYBBJD@`\ndefH@LAIVYfjj`B\nf`aQB@BFTBHrJJIJZUJLEAADuT@A@\nfHdHA@\ndidHPFBHJHRYf~FBH@@`\ngCe@H`dkPFDwH`\ndcND@DCTfVutYZ`@d@LJJfx^Hb`\ngGT`IPdfuj`LDmqF`\nda{D@Hi`QImejj@H\ndkm@`DDHaIe]YZZ@Bjh@H\ndcL@@LdbRbjeBDEEP@XCBES\\n|SI@\ndmvHPBTH`XaIfUmi``hP@pXLIagd\\\ngGYHCaDIK]M@XHSbM@\ndcND@DCdefV]]Z`b@@H\ndmtD@@QIVYdUZ@b@@`\neFPBca@\ndiDJ`HSJDOCIIJdfjj@LJSBx^Pp\nf`aqR@AF}AFJZAxYIITdhhmkNZjjfV`@pxcANJm{dF@\ndid@p@bFbAbDfUfn`BH@LLAaybYp\ndeVL@HAFR[f\\YZB@@C@diixgB\ndif@`ABHRYevz@``@phLJny@`\ndcNH`BdHaIfUyXXHHZ@B\ndo}H`FMPbLbbRfRaRkh@bfj@B\ndayH@DhDfWVjh@pKB[nHe@\ngNx`BDdvkUPFFu_Db\ndigD@Dq`yIeUifff`B\ndk^D@D@\\bbbbRQImMj`XB@C@jWSxgR\nfgA@@@DjYU_VByHu`@@@@@@H\nfoA`@@@ILkjrmFV]@AL@@@ar`\ndcLD@@SHhmEDcJmPDD@FA\\L{qLX\ndeUD@BdDR[YTYZjj`B\nfoA@b@HHAxIRlrjzkF]U@@@@@A@\ndif@@@RifvFjjh@pzDJfx^Q`\ndaD@`@bDfUZZ@B@C@`qnxbD\ndcLD`BTHaIfUVXXHHf@B\ndidH@@rJJIEn`HH@LJ@jX^Q`\nfbu@`@@NrJJJIPjFKQLDFLADUA@T@@P\ndidH`ACDRYWZZ@B`@pXDpjGd\\\ndg}@@@mIe]e^ftx@H@H@B\ndmvH`FdHaIe[zn`BI`@pXDrf{dJ\ndcNH@EAJYYeGZBHh@B\ndeTL`HRPBLdabRwBl@D@FEES]OH@\ngOp`Adigujj`LCEWrD\ndmtH@@RYeUEV`P`BJlNpjxYWdL\ndeTL`HS@BLddlRPrm@@@FETwCOHp\ndeV@@@rQQQHcMAP@@XBBXUMp|bP\ndmvD@H@de[eYVZ`@@bJ\ndaE@@@yIe^f`@`@pKBknHB@\ndcLH@@RfUW~f``b`@pEBinE]xfR\ndo|H@@rJJIQPrEn`HJjh@H\ndg^D@MADfVU}iUjB@j@B\ngGY@LDenjPLBHcqZ`\nf`qh@@@XIQfRJJKZJEJgG^ejj`@`@H\ndcnH@LAIYe_x^fjjjj@H\ndg^B`LaAl@cIIBheEeikTBPH@XUgSi|Re@\ndg^B`LaEt@cIIKEDhcIkPPLP@P\ndo}B`LfDEpBLddJbbbJNujAbA@B\ndieH`LE`BDiU_Bjij@LBAJ{bPH\ndk~@@@RfYU_JGUN`@@B@@pDB[aeSyF`\ndmtB`HSE@HrRRqIXYV`@`@pKFy^IP`\ndmtL@@jTef_^E``J@C@biexd\\\ndcl@@DjYU_egX@@@@@pxjxYW^XfL\nf`q@`@@HRYyV{TRg^Z`B@@@@H\nf`qA@@@ILk\\joSagPA@PP`@D\ndmt@H@bAdIdEdDfU^jZ@Bj@C@`pfyB@\ndcLHHBBHfPVPvPRYg^fzB@j`@`\ndcn@@@Re]eRi]jj@B@CBXPjxYW^HF@\nfbuQB@BFTBHrJJIJZUIQILDgLDDSU@@@@P\ndcMH@DhDfufU]Zjjj@H\ndmtD@@[HhhhdYUhJ@@CAlJae^Hw@\ndmtD@@qIYyVUZh@@@pYFxYWbPP\ndeT@@LdbRTm\\DDT@FGIeMpsrH@\ndmtHpEBHJPFHRYgW[hHBd@H\ndid@@DiUWajjj@LAaLJfx^P@\nfde@P@@BLEIfYfY\x7FyiWgQZ@HJ@b@@H\ndieH@JxLbTTQkfej`CAFGbPP\ndaD@P@bNbDfUzZ@B@C@`pnxbT\ndmMH@DhDfUmZZU`@@@@H\ngNqdEb@b^FQRHmU@P\nfoAab@GPQ`@QddebbTVLmFlm@@@P@A@\nfH`pA@\ndg\\B@@SSrJISISPbkT@Pt@D\ndeV@@@RiU\\Yjjj`C@XSBkagdL\ndmLD@@IJ]YVDeZj@B@B\ndmLH@@RgYVaAfj@B`@`\ndid@@DjWxjZjZ@H\ndaxD@@QIUijj@LLqnxdT\ndmtD@@QIee^UZ``@@pZfxYWdD\ngC`dE`DSpRZXCsBX\ndeV@@@RfV\\YhH`@CCdJfxYy@@\ndcMH@FxLdTReRQUTkUT@P\ndcNL@HAErJZJIECKPDE@A@\ndefD`BpPbDemgijj@H\ndo~H@DCHeEEEEBmmjBbH`@`\ndo~D@D@|bTTTTRqvvhJHb@B\ndknH@ICHhhhdUFF@bJh@H\ndeT@@LdbRbmBDED@FGPfTwSrB@\nfoAab@NPQ`@QddebbrRTeV\\mA@@@@A@\ndeVD`Aa@BLdabRgRl@P@D\nfoAPB@NJ@DYHhhheEcJqgT@PP@@@P\neMAALhbN``\ndidH@@RYWZZ@B`@pXDpjGd\\\nfde`B@N@BLdTTTRRVqeNRmiu@D@PUP@A@\ndk^L@IANRY[f~]tvjjjj@LApjXUt~It`\nf`iPB@N^@DISLro\x7FSdcZmPA@@W@@D\ndcLD@@QIVYVFV`HJ@CAfxYW^IE@\ndklD@@QIgfUiUj@`h@H\ndk\\D@@QIVZVVfSZjjjh@`\ndk\\D@@sIEDdXdj[Sjj`@`@`\ndeL`@@JfRiUfnXVfjjjh@`\ndif@PBBPFPRYgvzB@`@psJ[dD\ndmvHPBdIAYAIfUua``a`@`\ndieHPJD`bFbDfYoaiZi@H\ngJX`LDdvu@XI[dH\ndcnH@BAJ]fuaEvjh@H@H\nfHcxA@\neFAADdRLD\nfHdxA@\neMJD|Df`pYy@\ngJPhHaxIRuPFBqy@\ngJ]@EbDfVhCAH|f@';
carcp.i2_0 = 'fHe`A@\ngFq`@ldrfmU@XR|a@\ngCl@@ldsPFFBp\ngC`HADIKTAaaMrH\ngNxHLHaIYjj`H\ngNxHLHaIVjj`H\neFDBcAaWH@\neMDARVCBnR\ngGP`@TfYi`LI^S@\ngJQ@@dkT`XDKGd`\ngGQ@@dkUTAaXl[r@\ngJQ@@djsBJprqyH\neMHAIdLF^P\ngJQ@@dls@XKGd`\ngGP`ATiVj`LCEkrD\ngJP`AdejhC@qX|`@\ngGP`ATiVj`LCEcrT\ngJQ@@dsU@XDKGd`\neMJDbDfP`\ngC`DADZHRVhB\ngC`DAb[DRVhB\ngCa@@dkHFBbyL\ngCa@@dkPFBfyD\neMABHYAIhH\ngJPH@DIRuPFABqyH\ngCa@@dkHFBVyH\ngGQ`@jdjmTAal[rP\ngGY@LDeVj`LJHm^P`\ngJXHLHaIVj@pHbOI`\ngOx@@drm\\@@A`plZp\ngGXHLHaIUjhCBbHwdp\ngCh@@doHFDwH`\ngJY@BDeZlCAQ\\`@\nfHgdA@\ngJQ@@dsT`XDKGd`\ngOp`@dfUMZj`LMc^Q`\ndaD@@DjUZxHD@CAhSBinQp\ngOp`@dfUkZj`LMj~P`\ndeTH@@RVYWahBA@CC``j[ayD`\ndid@p@bBbFbDfYoa`b@@H\ndaDH@@RYg[ffj@LBrf{dD\ngFq@@drfmM@X[F|b@\ngGQhHj@cIHTmPFFqoH@\ngJQhHl@cIHUhCBGd@\ndaE@@@yIe^f`@`@piLJny@@\neMhDRUB\ndie@@@aJvUxZ`@@CChPj[ay@@\ndifH@DAIf_Ifjj`CBlJf{dB\ndifD@BADfyWaZ@@@LBQnGdT\ndeVD@FADfygFV``@@pjfxYyB@\ndeVD@AADfyVzV`B@@piBkayD`\ngF|@AbeJfuU@P\ndetD@@QInYvDYZjjh@`\ndedH@@RUUUfjhHRpELJfxYyD@\ngJQ@@dkU@XZX|PP\ngNp@DiWjj@p\\VM_H@\ngNq@@djmUPFEfM_DD\ngJQ@@dkT`XZK\\PH\ngJQ@@dkU@XDQGdp\neFA@HoBJD\ngJP@DjvhCCKGd`\ngGQLLIAREdDfvj`H\ndiDHhABPRPjPZPzPRZyjjj@H\ndiDB@@SaRY]fifBBX\ngNxHF@aJUzZqDxXH|Tp\ndmv@@@Rf~UeZj@@@LEBDpfxYT\ndaxD@@QIUYjj@LBrf{bPP\ngNq@AdTbMUPFEBq_IP\ngGP@DiUjaAXFKGbE@\ndaE@@@YIeZn`B@@piLiny@@\ngCa@@dsPFBV@\ngOp@DjWkfZ`LKEc^Q`\ngOp@DjWkZjPLKEc^Q`\ndaD@`@bDeeVz`@@CA`cBinQp\neMABHPaIhLDnR\ndaDH@@RVU[f@@@LJ`j[nQ`\ngC``AdeZ@pTWI`\ngFp`AdiTvjhCCQWdH\neMbDBDfp`\ndaEH@JXDiWRjjj`CBhSB[d\\\ndaFH@NAIe^f`@`@piLJny@@\ndaF@@@RYe[hB@@LJCBknPp\ndaF@`NBHRYUih@H@LJCB[nP`\ngC`@Die@ptVy@\neFA@HoBLD\ngGQ`@jdvmTAaecrT\ndaxB@@RfRYYZf`B\ngJQ@@eKS@XJKbq@\ngCaHLLQIZ`LDEqS@\ndaxD@@QIeUjj@LBpj{dL\ndaxD@@QIUUjj@LJpj[nQ@\ngNp`@df]Zj@pvMyF\ngJP`@dfzhCCA[ba@\ngGQ@@eKuTA`Uc^R@\ngCaHLHaIZ`LLHnS@\ngGPhMQDIK]U@XTQX|e@\ngNp@DiUZjDC`qEc^Q`\ngNpH@DIRoUTA`qEj~P`\ngNp`AdiWjj@pJM_I@\ngGP`@TeZj`LKEc^P@\ngGQ@@eJuTA`Xm^P`\neFJBhHp^I@\ngCah@mJAIj`H\ngCahHlOBOTAaAsQX\ngJT`H`TeVdB\ngNx@@eJmThFCbqky@\ndif@@@RUe^Fh@@@pDHPj[a@\ngNy`LDtfuZj@pNM_H`\ngNx`LFdjmUPFCDQkyL\ngOx@@drm]UTAaqEcV\ngGT@ATivj`LKEc^P@\ndiDDHJXIAICi@YAIkfjfh@`\ndcLL@@STfVyVUZ`HD@H\ndaDH@@RVU[fZj@LBJf{bQ`\ndmtD@@QIUYVUZh@@@p{B[ae^Q@\ndeTD@@QIgeQejjj@LFpj[ayD`\ndmtD@@QIgeTYZjjh@p{B[ae^QP\ngOp@DjWkZj`LCL[qI`\ngNp`@df^Zj@pvkyB\ndeT@@DjWvifjjh@pFDpjXYyG@\ndidD@@qJY~rjjZ`B\ngGQ@@dmltA`h^KT\ndcL@@DjU_ZnZjij@H\ndcL@@LdbRbjUBDEEP@XSBXUMt{rE@\ndid@@DjWZfZjj@LFcB[ayB@\ndid@p@bBbAbDfYun``H@H\ndcMB@HDDWTfyV{iZ@HX@H\ngC`dEaDPHRZTB\ndmtD`NDHcHhheDVfBAb@CB`rfWdR\ngNxhGD@cIHTefqMP\ndaFH`HX@aJYWJjeh@pHDJnQp\ndax@@DkUfjh@pZDpf{bAP\ngNp`@df^Zj@pV_DZ\ndedD@@qJ[^ZjZ`bf\ndaxD@@QImUjj@LJSBknPp\ndiD@@LdRbJZjhHBpxHpj[nH``\ndaxD@@QInejj@LBRf{dD\nfH`TA@\ngJQ`@bdjt`P\ndaD@`@bDfUjZ@B@CB`SJ{dL\ndkm@`ATHaIe[ujZ@BfhBAh\ndif@`BBHRYgfzB@`@`\ndetD@@eIYe~DYZjjh@`\ndaFH@DAIYUnZjX@pkBinyD@\ngC`HAVIMTAaaMrH\ngNq@@djuUPFCDqkyD\ngJQ@@dju@XZX|b@\ngCa@@dmHFFDwH`\ngJQ@@dsMBRppVyB\ngCahHlOBNtA`anQ@\ngGQDJH`qBSKMHdX\neMIDbKpRYB\ngNx@@eJ}UPFCDVkyB\ngJXhEbLQIZf@`\ndnD@@DiYrbYjj`CA`aLinPP\ngF}@EbDfTuiXB\ngJP`@TfZhCCQ[bA@\ngJPhLQDIKUPD\ndiDB@@RnRYufjf@LDp^PP\ndmTD@@SHheHjfjjh@pXj[agdJ\ngNpTHjpDDHrREQZTB\ngGP@LdbMU@XTQZ|a@\ndiDH@@rJJQUjj`CBlJf{dB\ngJQDDH`qBS]LHj\ngNplJqHJPtadTaeTpGdX\ngJYHLPDIStpblDEqP`\ndiFDpJXPdDdLdLbdJRjfdHI`\ngGX@@eKMTHGCKWba@\neFHBJFE@\nfHfpAa@\nfH`XA@\ngOu@DPdrykURA`l~Q@\nfHgHA@\ngCa@@dmHFBVxa@\ndmtD@@QIgYVUZh@@@p[FxYWdD\ndmtH@@RgfueZj@@@LASJ[ae^Q@\ndid@p@bFbAbDfUfn`BH@H\ndidH@@RYUZZ@B`@phLKayB@\ndmuL@DpIUIfVTfZjjX@`\ndeVD@HADfyVxV`@`@piBkiy@`\ndeVL@HAIR[e_aZ@B@CBdJngdL\ndmvL`NaL@HrRRqQZUV``@@`\ndco@`LK`BLdTTRRITntpTA@Pe@\ngGP@Djuj`LLm^JD\ngKP@Di\\Vj@pHfOH`\ngNp`@dfVZf@pQ_IP\ndaxD`Fx@aJUzjf@LJBDsnPP\ngGQ@@djuTAaQL[rH\ndaxH@@RUUjj`CC`cBinyB@\ndiDH@@RYujjj@LAALJfx^Q@\ngJX@@dku@XIGdp\ngJX`DBdju@XI[ba@\ndazH@LAIUjjj@LFBDinyF@\ngNq`@fdjkUHFBqxiP\ndaDD@@aJyUnh@@@`\ndid@@LdbbQxXF@@CAdrfx^PP\ndid@@Dj{WaZjf@LNaLJf{dB\ndaDH@@RYUifjj@LJpj[nP`\ndaDD@@YIeZn`B@@piLiny@@\ndidD@@iJ[gxZB@@CBdJnGdL\ndaFD@FADfyVyjj`CBdpj[d\\\ndewH@HP`RY[TjFZd@H@H\ndiD@@DiuejjP`GChSB[ax`T\ndmtDPNDHaXaIfVUi``X`@`\ndmt@@DjU_jxHHj@CBXPj[ae^Q`\ndmt@@DjU_ZxHDj@bg@XSBkagbLh\ndkl@@LdbRdSRjP`jJ`@pfDJfxUOdZ\ngOp@DiWMZj`LKEb~HT\ndmtH@@RYfWXXBHh@LF@fFUxe\\\ndax@@LddUeUT@XMBXS]rJ@\ngOq@@eJqmUTA`Xl~Ht\ndaD@P@qBbDfYvzB@@CB`pj[d\\\ndmuL@HDDWHihdh^eh@b@B\ndcNL@HALRYymUujh@@@`\ngNyhMDpDYIBdmTA`\\Z~P@\ngNx@@dlmUPFEbq_DJ\ndknL@CAErJIQIIF]Z``b@B\ndeVD@DCdeeY[fjjh@`\ndid@@DjUfaBB`@LNaLinGdD\ndifL@DCaRY]bijih@`\ndifH@DAIf_Ifjj`C@lJnxcB\ndcMB@HXDeTfyed]ZBA`@H\nfHcdAa@\nfHchA@\neF`BNFE@\ndeTD`HP@cIHXdepk@A@A`ULL|PB@\ndeTL`HS@BLddlRPrm@@@FAXwSqJD\ndcnH@NCHhheEBtkl@D@@@P\nfoA@R@HHqX@QddebRfR`iF\\m@@A@@A@\ndieH@BxDfYUa``P@LBCJ[b\\H\ndeTB@@pYRf[^njjj`CBXSBinFP\ndaE@@@aJyUnX@@@pkBinyD@\nfduA@@@ILsLjm{AJ\\XOhm@@@@A@@A@\nfhy`@@@ISLjm{btjw`t@@@@@@@P\ndmvH@DAIf{VUZh@@@p[J[agdJ\nfnkA`@@N[dTRTtTTlVRbUFJlFNZmKUUUUUUT@F@TXipTeZMYw`iKWbLm@\nfig@P@@NZOHhdihhiXleDbjLUXL\\uZVjjjjjij`@`\ndeTL`HS@BLddlRPrm@@@FAXwCqJd\ndet@@DjYUX^dHbH`CAdJfx^Id`\nffsA`@@LudTTTeRdVTtLIps`ySeijjjZjjj@B\nf`ia@@E@RfuUe]gEF]z`@jjhh@LAHIPTmFmsFG^@\nf`ia@@M@RfuU[UgEZ]z`@jjhh@LAHIPTeFmsFG^@\ndmLH@@RYegXYV@@@@@pXJXYWbYp\ndmtD@@QIee^UZ``@@pXfxYWdT\ndmtL@@QTfyeQehBA@C@jXYxb\\\ndcLB@@RUR[fVQuhHF@@`\ndklH@@rJIJQQNfZjji`B\ndmt@@DjU_ZxHHj@CBXSBine^PH\ndaDH@@RYWih@H@LB@j{bI`\ngNq@@dsKSPFFu_HP\ndeTL@@QdfygFV``@@piJXYyG@\ndmv@@@RfYWEZB``@LIALJfxYyB`\ndmuL@HTDYInYtYZB@`@`\ndeVH@IAJYW~F``H@LJPj[nId`\ngFuHC\\@aJYMif@`\ndifH@HAIYexV@`@C@biny@`\ndmvD@D@dfWeYUj`@@CCdpfxYyB`\nfoA``@H@PdwJ{J|EYsP@P@@@D\ndif@pDBHjHFHrJIQEn`HH@H\ndclL@@{TivY~DeZhHB`@`\ngFp`ATiTvjhCAH|Tp\nfgA`B@N@BDifYWz\\d[Uj@H@B@@LI@Hs`eZM[dI@\ngC`HAxIKTAahmr@\ndg|@`@|DjYmUyO[j@@@@@LM@j[ae]N~Q`\ndeTD@@YIfUqehH@@LFJfxYyF@\ndeTL@@jTef_xVB@`@phj[iyD@\ndeTL@@RdfVUFVjZd@pHfF^Qp\ndeT`@@biRnY\x7FaXHB@B\ndif@PJ@H`HRnY~F``@@pXBinGdP\ndk^@@@RfYU\\]Tz@@@@@LECBinFUOdZ\ndieDPJZD@HHHrRFIYnVfi@H\ndmND@DCdfVUrjUZjZi@LFrfFUyB@\ngOp@DjWkjj`LFEcWrP\ngOx@@eJqmUTA`xlZ~P@\ngOx@@eLm]UTA`xlZ~P@\ndcnH@DAIYegzUujBHH@LNInFUwdP\nday@@@aJVYjjB@h\ndedB@@PYR[UYjjX@pILZ^HU@\ndkLF@@RUttfyenZjif@LFSBiSyG@\ndmTL@@QdfUivijdHJ`\ngGY@LDeej`LBl[rP\ngGY@BDeUj`LBl[rP\ngGY@LDeUj`LBl[rP\ndkmH`NMPbLbbbTNfXXBHf`@`\ngGY@LDeUj`LLc^JX\ndmv@@@rRJIIFUjB`@@pELJfzUy@`\ngOx@@drm]KTA`Pl^Jl\ndaF@@@RYUijVj@H\ndif@@@RYWZZejh@`\nfoAa@@D@RUfV]qZlyhH@@@@CBRJ\\DkQkNxbD`\nfoAa@@D@RYYeUuVLyj@@@@@CARJLEIVcV]rG@\nfj}a@@D@rJIQQIQKQEYSkQrUj@@`@@@@@`\ndie@@@iJYWxYB@@bK@lInybTH\ndifH@NAIe]ih@I@C@dpjx`B\ndcn@@@rRIHqIER{UT@D@FDpaUprn|c@\ndig@@@aDiyWaV@@@LJPj[nPH\ndg~DPFvpbEBLbbRfbRM\\JpAESI@D\ndeVD@JADeUeFVjjh@p[B[agdP\ndmuD@LXDRYueeVjjj@H\ndmtD`BTHaIfUma``bP@`\ndaE@@@{IHdbUUUT@XMBXUMrN@\ndifH@LAIVUxVjj`CAdJfx^Q@\ndeVH@IAJYW~F``H@LFSBinyD`\ndifD@HADfyWaZ@@@LLRayaMp\ndeTD@@QIgeQej@@@LLsayeMH\ndeT@@DjUghP`h`@pYL[agfPU@\ndeVH@LAIUeQejjj@LASBinF^Q@\ndmuH@DHDfvYYUjjj`B\ngOx@@eLvmUTA`xlZ~P@\ngOx@@eRimUTAaXcWrX\nfle``@C@Pdrrj\x7FLlmQRuAAEUTP@P\ndiFH`JpHaI[kijh@`\ndeVL@BAIR[YTYZjj`B\ndg|H`ABHRYW[ficn@BjjH@`\nfoAqB@EZ\\HDPdrnvrtYYt@EURd@FD`HpR`iFmrG@\ndk_H@FdprJJISPkatzjjiZ@H\nfoAab@GPQ`@QddebRfRpiFlm@@@P@A@\ngNy@LDeVZj@pJM_EL\nf`aQ@@DT@drllsNoMTDQT@@P\ngJX@@eKU@XYX|P`\ndid@@LddRL[jjj`CChSBkayC@\ndk]H@DdDefueFUujjjj`B\ndg|@@DjU_eZx{BAH@@BJlARne]N~EFDp\ndmvD@HADfyeQehBA@C@dXYye\\h\ngBX@@eLUTAahmr@\ndmLH@@RYiYKnVjjjh@pFLinFUy@@\ndg_@`DGPbDfUueZZ@Bjj@B\ndeVH`BdHaIfUvFBBD@H\ndaFH@LAIVUnZjh@piBinyD@\ndg^H@LAJUyfUSjhBH`@`\ngGPHAbIKUU@P\ndmtH@@rIQQQWiXBH`@pjfxUyD@\ndcOD@Ds`wHheELUPmMUT`FCTwBn|bP\ndeTH@@rJJIHmtAAP@XTALL|sJx\ngOu@E`drm[SRAalWrT\ndo}H`AMPbDfUo[Vf`@jZh@H\ndg]H`AMPbDfY_[Vz@`ij@B\ndkmH`NMPbLbbRrbaih@Jf`@pxDpjg^PX\nf`q@@@BbHRDRHQHaIXkf`bJbjb@CARB\\EKQkN}rB`\ndcLL@@G\\dTRRbOKPPTP@XRfES\\LkrM@\ndklL@@Ptfym]eVj@BP@pyLinF^Qh\ndg}B@HTDf|bfbbTThfnmA@tI@D\nfoAP@@@HR[ieUuVLyjhJBH@B\nfoAab@KPQ`@QddebRfR`iF\\m@@A@@A@\ndg~H@FCIEDhcLdLg]AP@@@A@\ndmvH@DCHhhhdYUjjj`CClJfxYyB`\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\ndk~@@@RfYU_JGUN`XJJH@pDB[aeSyF`\nf`i``@E@PdwJvvoAJt{sP@TuQP@P\ndcNL@FAMRUUeUujjjh@`\ndidH@@rJJIEn`HH@LBJfGbA`\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@F@aRTZsoAyCP\nflu@P@@BLgHhhhhhhml^ZUytV`BB`HX@@`\ndeTL`HS@|LddlRPru@@@FETwCODS@\ndk^LPLaC@HTHrRPqQYKiWUjfYj@LJXUt~QP\ndcNH@BAIUfYgVjjj`B\ndmt@@DjU^jxHHj@CChPjFUxf\\\ndg\\D@@QInUukaZ@Bj`@`\ndknJ@HAIT|bfbbTUGV``X`@`\ndidH@@Rge^Fh@@@pZDJf{dB\nf`qAA@A@bOQBSJ{\\ktYYt@EP@P@A@\ndmtD`ATHaIe]nf`@jP@pXDpjGb]H\ndcND@NADfUyU]Zj@@@H\ndcn@@@RigVRX]fBBb@CClkae]yB@\ngCa@@duPFADV@\ndidL@@cDkkWajjj@H\ndg|H@@RVYYwySn``@@@@pTHIne]N~PH\ndmtLPNePbABDfUujZ@Be@B\ndaDh@DqnAIeZfZZd@`\ndmM@PBx@c@aJYg\\jeZdHB@B\neFAAx`bLD\ndmv@@@rQQJEJUjh@@@pdHJfxYWdH\ndmLH@@rJJIQEneX@@@@CA`rnF^Hr`\nfoAa@@D@rJJJJHqYQkNZj`bB@@`\ndklH@@RUYffSYjZj`aJ\ndeTH@@rJIJFTt@EP@XLFTpsqDx\ndo|H@@rJJIQRFIn`HJjh@H\ndmvH@DAIgfVUZ`H@@pYFxYWdX\ndeTD`HP@cIHXhdLk@P@A`UMp|PI@\ndcLD@@QIeeUgVhHH@CAbinF^Hn`\ndknD@FADfye_EV``bP@pyJ[aW^II`\ndo~D@FADfye_TUZBBIhBMX\ndg^H@LAIYVUW[jiBB@Hi`\ndkmD@NLJrQSQQITUhHbI@B\ndiW@@@cDi[WBxYjeX@`\ndev@@@rRIIHus]UUUPA`JXUMpsrH@\ndifD@B@TfYun``H@LJCJx^PP\ndo~@@@RV^UviUj`@j`@`\ndaDH`BBHRYg[hH@@LJCJ[nPP\ndif@`ABHrJJIEn`HH@LJCBinPH\ngJXLBIARFdDfjhB\ndcLHPBBHzHrJJKQFLLDDU@A@\ndcLHPBCD{DrJJKQFLLDDU@A@\ndklJ`HSNL@cIIKEDdYuZBBH@H\nfhiAb@B^BBHRYe^unXHshHH@HX@@`\ndg\\L`AWPbDfUv{ZZ@Bij@B\ndcn@@@Re[mRY]jj@B@CBXSBxYW^HC@\nfde`@@@IRmrkNyFZ\\FMUPP@@P@A@\ndk_@`LI`BDigvUrmNfV@B@bj\nfoApA@EZ\\BHeDILrk|kNV]@PMTi@ar`\ndaE@@@yJeVnjjh@pZDpj{dL\ndmvH@LAIUYVUZh@@@pELInFUyD@\ndmL@@DjYUVGi@@@`@LNpjxYWdH\ngJX@@djsBIptQxa`\ndmV@@@RUgVYjf`aJ\ndeTD@@qI[eQfj@@@LNSJ[agbA@\ndazD@J@dfWjjh@pjLInx`H\ndg^D@EAdfYewiuhJBJ@B\ndidD@@QIVUxV`@@CCFx^YAT\ngJX@@eST`XZK\\a@\ndmvD@HALbfbbQFV`HH@H\ndk]H@BxLbbbRaRX]NBA@@@B\ndeu@@@gIHhikWLMUTu@D\ndid@P@bNbDfYYa`H`@LJBfx^Q`\ndmtHPIBHVHRYfUXXBHX@H\ndeUD@FxJRVYmnYjZ`B\nf`q@`@@LrQQJIQKHbL{uAPA@@@A`iANBdkUg^y@p\ndk\\@@DjWmkiadHBjh`B\ndk]H@DXDfYYwz]MjhHB@CClhYWSyC@\ndg~HpFlI@i@YCHhhihdUtz\\DQEJPA@\ndcLL@@S\\bbTrTHru@AH@XDUMODEP\ndg\\`@@SFRYueUNvjjjj@H\ndk\\@`LhDjU^ukmLHH@@@CAXPjxYWSyF@\ndk]H`AdpqDfUmUiev@Bfd`B\ngFp@DjTujhCCKWba@\ndkLD@@SHdiDbeFjff`B\ngGP`Ademj`LBl[rP\nfhyH@@@X\\EJYnUWoEEVMyj@@@b`@B\nfhyH@@@X|EJYnUWwEEVLyj@@@J`@B\ndk^H@FAJY}e\\kSie`@`Hj`\ndieH@FxLdTReJjeZ`B\ndeVD@HADfyeFV`H@@pqNgfTp`\ndeU@@@qJYejxBHh@LJJfF^Qp\ndmuH@DXDfUgjZ@Bj@B\ndmvH@ACHhhdcFz@`j@CA`Jfe^Ig@\ndmvH@AAIe]Zf`@j`@pXBkiWbI`\ndcn@@@RfumVy]d@@@@CClIae]yB@\nfoAP@@@TRfUVu~RlzP```@ABC@\ndknDpItpdDdLdLbdLRTtEZh@a`@`\nf`qa`@H@PqInYWmQJ]yhHH@@@@`\nfbuac@HjSdD`bPqHYEHXdleDeeAR|Fj@B`@f@@H\ndeTD`HP@cIHXhdLk@P@A`UMt|PA@\nfdy`b@LPP@HrRPjJJIIDf|xJu@A@A@@D\nf`qa@@M@rQSIYQIPlxZu@AUUQ@A@\ndig@@@`Tke]nX@H@LBpfGbQP\ndaF@`B@HRYg[hH@@LBpj[bAp\ndid@@Ldbbq[`bB@C@lJaxbL\ndidD`HPOAJvUxVjj`CAlJfx^P@\ndmtB`HSBCprRSFIJUZh@@@pinFUxfD\nfHbXA@\ndaFH@BAIf]n``@@pKBknHC@\nfjsQ@@DB@dsLsKjvldIUhaJgKU@p@@@D@@D\ndnD@@DiYrbYjj`CB`aLkbDp\ndmLD@@eIYfUayVjjZPB\ndaDH@@RVU[f@@@LJcB[nQP\ngFp`AdiTvjhCAF|TP\neMBBHRYCAKd`\ndieH@HPDeYWaZ@@@H\ngOu@E`dsu[UTA`TZ~S@\ngOx`DFdrikTlA`e^S@\ndaD@@DjWZXHB@CBdpf{dP\ndmL@@DjYeVdUBHhb@LNpjXYWd\\\ndiTH@@RVYV{ajjf`B\ndmN@@@RYVuiiV@@@@@pxLkae^P`\ndml@@LdfbTJifzUZjjj`B\nfHcDA@\nfHgPAa@\nfHe@Aa@\neMBBHRYCAGe@\ngC`DAbZHRVhB\nfHbxA@\ngCa@@dtpFBVy@\ngC`HADIMTAa`mrP\ngJQHDHaIjj@`\ngC`HADIKRAaaMrH\ngJP@DivhPNAbqy@\ngJQ@@dkSBJpHVOI@\neMJAhHzB\ngJPhLQxIRuPD';
carcp.i3_0 = 'daD@@DiUVyjjPPGd\ndaD@@DjUZxHD@@\ndaD@@DjUZxHH@@\ndaD@@DjWjXHB@@\ndaD@@DjWzXHB@@\ndaD@D@BHBDBLBBBJBFBNBDiUVzjj`@\ndaD@P@bBbDfYvzB@@@\ndaD@P@bNBDfUzZ@B@@\ndaD@P@bNbDfUzZ@B@@\ndaD@P@qBdDfYvzB@@@\ndaD@P@qFdDfUjz@H@@\ndaD@`@BDeeVz`@@@\ndaD@`@bDfYVz@`@@\ndaDD@@IJVVfijh@@\ndaDD@@QIe\\jZjh@@\ndaDD@@YIeZn`B@@@\ndaDD@@YJZUnjjh@@\ndaDD@@qIYUnZjX@@\ndaDD@@qJYoJjjX@@\ndaDD@@qJZ_Fjjh@@\ndaDD@@yIe^f`@`@@\ndaDD@@yJYVfjjh@@\ndaDD@@yJYfnjjh@@\ndaDH@@RVU[f@@@@\ndaDH@@RVU[j@@@@\ndaDH@@RYVih@H@@\ndaDH@@RYWih@H@@\ndaDH@@RYe[hB@@@\ndaDH@@Rfu[j@@@@\ndaDH`L@HRf][jZj@@\ndaDL@@SDfUrijj`@\ndaE@@@IIf]njjh@@\ndaE@@@YIeZn`B@@@\ndaE@@@yIe^f`@`@@\ndaE@@@yIe^fjjh@@\ndaEH@DpDfYbYjj`@\ndaF@@@RVU[n@@@@\ndaF@@@RYVih@H@@\ndaF@@@RYWih@H@@\ndaF@@@RYe[hB@@@\ndaF@`NBHRYWih@H@@\ndaF@`NBPRYWih@H@@\ndaFD@DCdeeVyjj`@\ndaFH@BAIf]n``@@@\ndaFH@DAIYUnZjh@@\ndaFH@DAIeUnZjh@@\ndaFH@DAIfVfZjX@@\ndaFH@DAIf\\fZjh@@\ndaFH@FAIeZn`B@@@\ndaFH@NAIe^f`@`@@\ndaFH@NAJYfnjjh@@\ndae@@@yJeVn[jjj`@\ndaf@@@RiUkfzjjh@@\ndax@@Djuvjh@@\ndaxB@@QnR[VZY`cD\ndaxB@@QnR[VZY`cH\ndaxB@@QnR[VZi`@\ndaxB@@RnRUUZjP@\ndaxD@@KHhhbtu@@\ndaxD@@KHhhcUT`@\ndaxD@@QIUUjj@@\ndaxD@@QIUYjj@@\ndaxD@@QIeUjVBB`\ndaxD@@QIeUjZBB`\ndaxD@@QIeUjf@@\ndaxD@@QIeUjj@@\ndaxD@@QIeejj@@\ndaxD@@QIgijj@@\ndaxD@@QImUifALj`\ndaxD@@[HiDYUU@@\ndaxD@@iIijjj@@\ndaxD@@iJUfjj@@\ndaxD@@iJUvjj@@\ndaxD@@yIi^jj@@\ndaxDPDxHahaImZYiBL`\ndaxDPFxH`haIf^jj@@\ndaxDPFxLPlQIf^jj@@\ndaxDpBhHa@chaIffeZBDP\ndaxH@@RUUYf`QHh\ndaxH@@RV[jj`@\ndaxH@@RYUZj`@\ndaxH@@ReWii`QJh\ndaxH@@rJJHmUP@@\ndaxH`HALRkUZj`@\ndaxH`HALRkfZj`@\ndaxJ`HSFx@cIIJhmS@@\ndaxL@@SdfUvih@@\ndaxL@@SdfvVjh@@\ndax`@@PjRUnzZ`@\nday@@@[HiDYUU@@\nday@@@kIHbiUU@@\ndayL`BzDp@cIICdmU@@\ndaz@@@RfVjj`@\ndaz@PLBHzHRUgjj`@\ndaz@`JBHRV^jj`@\ndazD@DAdfUvih@@\ndazD@LCdeYzjh@@\ndazD@NADf{Vfl@@\ndazH@DAIeYjZ@@\ndazH@LAIUjjj@@\ndazH`BpJqI[Vfj@@\ndazH`LPHaInVZj@@\ndcL@@DiUUU]ZjejC@^QP\ndcL@@DjYYYiBHhh@@\ndcL@H@qBqEqMqDfYn]a``bh@@\ndcLB@@Q]R[e[neh@a`@@\ndcLB@@Q]R[e]nEh@I`@@\ndcLD@@EJY[WWZjB@@@\ndcLD@@GIEDTiMBUUUS@@\ndcLD@@IIf]z[hHBj@@\ndcLD@@QIUVUWVj`@@@\ndcLD@@QIe]UJfjjj`@\ndcLD@@QIgVUWVj`@@@\ndcLD@@QIge]FVh@I@@\ndcLD@@SHhdhTeSMUUU@@\ndcLD@@YJYYwEZB`b@@\ndcLD@@iJ[g]xZB@f@bX\ndcLD@@uIUfUeVXBB@aH\ndcLDPDtHaXaInUnzY`BI@@\ndcLH@@RYWZZYjjjh@@\ndcLH@@RYeZvz@`j`@@\ndcLH@@RYguRYijjh@@\ndcLL@@G\\dTRRbOKPPTP@@\ndcLL@@QTfVUV]Zjjj@@\ndcLL@@QTfVutYZ`@h@@\ndcLL@@QTfvUtYZ`@h@@\ndcLL`HQPBLddLRRTzmAA@@@\ndcLL`HS@BLddJfRtjmP@P@@\ndcM@@@eIi_Z[jjjj`@\ndcM@@@wIHhdd]JuAPD@@\ndcM@pItIAICICHiCDeDJuPAD@@\ndcMB@hDDWXeNF]yInUnzV`BF@@\ndcMD@DdMRUe]^EX@IP@@\ndcMD@LDMRUe]^Fjjjh@@\ndcMD@LtARem[~fl@bp@@\ndcMDBLHDSdf{YU]Zj@@@@\ndcMH@DdDfY}XfZjjj@@\ndcMLAHtDVISdfyW[aZ@BX@@\ndcNB@BAEuInVVFV`HF@@\ndcNBAHAEvISdfyW[aZ@BX@@\ndcND@AALbbTRbJzuAP@@@\ndcND@MADfVU~UZ``H@@\ndcNDaFePBFe^RfV^Qv`hF@@@\ndcNH@DAIf_UIfjjj`@\ndcNLAHAEbTyInUnzV`BF@@\ndcNL`NaL@HrRRqQ[RjtDA@@@\ndcO@@@JldbRTQU]UUUT@@\ndcO@@@xTjU]Znjjjj@@\ndcOLpHkb[PbAbEbDfYn\x7FijYjf@@\ndcl@@DjUg^aWP`hjH@@\ndcl@@DjYU_egX@@@@@@\ndclD@@QIe[UiiUjP@h@@\ndclD@@QIe[WiiUjP@h@@\ndclD@@SHheDhbJkkUUUT@@\ndclD@@aJVfnKfFjjjf@@\ndclD@@iJYW]rnF``IhBI`\ndclD@@iJYW]rnF``Jh@@\ndcm@@@UJfUWyYvhJBH@@\ndcmH@DHDfUyTjWVi`@`@@\ndcn@@@rJJJJJlJ{@A@@@@\ndcnD`EGPqDfUn^neX@aiH@@\ndcnH@AAJYYwhUvj``H@@\ndcnH@DCHhheBeSKkUUUT@@\ndctB@@PYRYU{Vjij@@\ndctD@@QIeWUZjjh@@\ndctD@@QIgUUZjjh@@\ndctD@@QImUUZjjh@@\ndctD@@QImUVZjjh@@\ndctD@@wHiDThmUUUP@@\ndctH@@RUgVVZijADn`\ndctH@@RV]UVjjj@@\ndctH@@RgUUZjjj@@\ndctH`HALRkUUVjjj@@\ndctH`HALRkUYfjjj@@\ndctL@@Pdf{e]jjj`@\ndctL@@X\\dTQfReUUU@@\ndctL@@jTiV[Vjjj`@\ndcvD@MADfuUUjjjp@\ndcvH@LAIVUUjjjh@@\ndeL@@Di[ernDYZjij@@\ndeL@@DjUYkfEijjjj@@\ndeT@@DjUghP`h`@@\ndeT@@DjWvifjih@@\ndeT@@DjWviifjh@@\ndeT@@DjYUXPbH`@@\ndeT@@Dj[[[ifjd@@\ndeT@@DjeUZZjjh@@\ndeT@@LdbRTm\\DBR@@\ndeT@@LdbRTm\\DBT@@\ndeT@@LdbRbmBDED@@\ndeT@@LdbTRoBuUM@@\ndeT@@LdbTRoBuUT`@\ndeT@@LdbbQwBuSU@@\ndeT@@LdbbQwCUUU@@\ndeT@P@bIbDee][j@B`@@\ndeT@p@bNBIbDfUuih@J`@@\ndeTD@@EJYU^f```@@\ndeTD@@IJVWZZfjj@@\ndeTD@@QIe]Rijjj@@\ndeTD@@QIgeQej@@@@\ndeTD@@QIgeQejjj@@\ndeTD@@QImeQej@@@@\ndeTD@@SHhdhUSMUUP@@\ndeTD@@eJ[WVz`@h@@\ndeTD@@iIYe^e```@@\ndeTD@@qIUeQej@@@@\ndeTD`AdHaIe]jZ@BX@@\ndeTD`DpHaImeQfZ@@@@\ndeTD`NDHaIfVVfBA`@@\ndeTH@@RUYTYY`@@aH\ndeTH@@RUYTYj`@@@\ndeTH@@RYVZfZZj`@\ndeTH@@RYVZfZij`@\ndeTH@@RYVffjjj`@\ndeTH@@RYWZfjjj`@\ndeTH@@RYe\\YZB@@@\ndeTH@@RYm_aZ@B@@\ndeTH@@RYm_ajjj`@\ndeTH@@RgYTYj`@@@\ndeTH@@rJJIHmtAAH@@\ndeTH@@rJQPiCMT@@@@\ndeTHPABHxHRYWZf`@f@@\ndeTH`DBHRZ{TYf`@@@\ndeTH`IBHrJJJJlLADP@@\ndeTHpACDKD[DRYf{i`bH@@\ndeTL@@QdfygFV``@@@\ndeTL`HS@BLddlRPrm@@@@\ndeTL`HS@|LddlRPru@@@@\ndeU@@@eIYVvG`BL@@\ndeU@@@eIYWVz`@h@@\ndeU@@@eIYWVzjjj@@\ndeU@@@eIYWV{`@l@@\ndeU@@@gHeDeBwT@E@@@\ndeU@@@qJYVjXBBh@@\ndeU@`Ld@aJVu~Fl@H@@\ndeUB@DpFFTfUgkfjYX@@\ndeUH@JXDiWUJjjjh@@\ndeV@@@RUYTYy`@@aH\ndeV@@@RVUenh@J@@\ndeV@@@rQQIHtpDCP@@\ndeV@@@rQQQHcMAP@@@\ndeV@@@rQQRItMMUR@@\ndeV@@@rRHqICMT@@@@\ndeV@PABPRPR[e[ij@H@@\ndeV@pABPJPZPRYf{i`bH@@\ndeVD@DAdfygFV``@@@\ndeVH@AAIfuneh@`@@\ndeVH@IAJYW~F``H@@\ndeVH@JAJUuRjjjj@@\ndeVH@LAIUeQfj@@@@\ndeVH@LAIVUVzjjj@@\ndeVH@NCIELeBpt@Q@@@\ndeVHAH@NbTfY_[hBB`@@\ndeVH`IHHaIfUVFBBH@@\ndeVH`NdHaIe]ZZ@BT@@\ndeVL@D@YrJJHjDsUTt@@\ndeVLAHAAbTyInUneh@`@@\ndeWH@DJPRY[TYZ`@@@\nded@@Dj_VfZZ@@\nded@@LdbQRdsSPQD@\nded@P@SHBDjuUZjj@@\ndedB@@PYRYWYjZX@@\ndedB@@PYR[UYjjX@@\ndedBpJxYCDKD[pRY]jjih@@\ndedD@@QIUUVjj`@\ndedD@@QIkWZjj`@\ndedD@@QInUvjj`@\ndedD@@aJVfjjj`@\ndedD@@eIffZjj`@\ndedD@@qJY]zjj`@\ndedH@@RUUUfihDRY@\ndedH@@RUUUfjhHR@\ndedH@@RUgVZjhHb@\ndedH@@RV]Ujjh@@\ndedH@@RYVYjjh@@\ndedH@@RZW^jkh@@\ndedH@@RZWvjjh@@\ndedH@@rJQEJUUU@@\ndedH`HALRkUUjjh@@\ndedH`HALRkVYjjh@@\ndedL@@PTfUvZfj@@\ndedL@@pdie]jjj@@\ndedL`@JdhDi[Ujjj@@\ndedL`HS@|DjUUjjj@@\ndee@@@eIUUZjj`@\ndee@@@{IHh\\iUUT@@\ndee@PJdLQlSHiDdUU]V@@\ndef@@@RiUVjiT@@\ndef@@@Ri]Vjjh@@\ndef@pLBHFHfHRUeVjjh@@\ndefB@LAAeIeUVjj`@\ndefB`HKad@aIf^Zff`@\ndefD@AADfUfZfjBBP\ndefH@LAIVYjjj`@\ndefL@L@YRUeVjjh@@\ndeg@@@FTjWUjjj@@\ndeg@@@JTeV]zjk@@\ndet@@DjYUX^d@@@@@\ndet@@DjYUX^dHbH`@\ndet@@DjYUZ^D`dJ@@\ndet@@DjyZkfyjjj`@\ndetH@@RYVvfFX@Jb@@\ndeu@`Dp@aIeURhYfh@@@@\ndev@@@Re[TjFP@@@@@\ndev@@@rQQJHtpr@@@@@@\ndev@`JADrQQQHyPsPLA@@@\ndevH@JCIEEDceCM@pD@@\ndevH`HX@aJVU|HYjA@`@@\ndg\\B@@Q]rJISQJHr[TDCD@@\ndg\\B@@SSRY[W[FVh@Ih@@\ndg\\B@@pSRf^Y]vzjB``@@\ndg\\D@@QIeUyT{Zjh@@@@\ndg\\D@@QIe]UTjZjjjh@@\ndg\\D@@QIgUYT{Zjh@@@@\ndg\\D@@QIge]hYZjjjh@@\ndg\\D@@QIgfVVSZjjjh@@\ndg\\D@@QIgfWzUZjZih@@\ndg\\D@@SHhdhTdeSMUUUT@@\ndg\\D@@SHhmHcDd]mUT@@@@\ndg\\D@@SHhmHhTmimUUTt@@\ndg\\D@@SHhmHhTmimUUUT@@\ndg\\D@@eIfU_Un`HJj`@@\ndg\\H@@RV^UveVj@Bh@@\ndg\\H@@rQIIQQHg]UPT@@@\ndg\\LPLi`bBBLbRTabRvgUK@A@@@\ndg]D@DdMRYe_[FVjZif@@\ndg]D@DtKrIIQIPiCJt@EJ@@\ndg]D`NV]CDRYWVyih@JZh@@\ndg]H@LlDeYeUuNj``c@@\ndg^D@L@teYee]nj`bH@@\ndg^DPKFPbNBLbbRrdJUM@AKM`Pl@\ndg^D`Ca@BLddLRRVTzm@aG@Pt@\ndg^H@DAIfVU^]Zjjjh@@\ndg^H@DAIf_UTfZjjjh@@\ndg^H@DCHhhhdhb]mTED@@@\ndg^`@@SAgHhihhhb]mTCD@@@\ndgl@P@BH|DfeUUVjjjh@@\ndglB@@RUrJIIIPiMUTuP@@\ndglD@@QIeWUUjjjj@@\ndglD@@QIeuUUjjjfBM`\ndglD@@QImUUUjjjj@@\ndglD@@SHhmHbeDuUUR`@\ndglD@@SHhmHdThuUMM@@\ndglD@@qJ[]UVjjjj@@\ndglDB@QNrJZQEIIMUMUPPt@\ndglDPDlH`xaImUUZZjji@@\ndgm@@@mIUUUVjjjj@@\ndgnB@DBcoHheEiDbuUUU@@\ndg|@P@bFBDfUoeZx{`BH@@@@\ndg|B@@Q[RYvUmgSmj`BJH@@\ndg|D@@SHieEDhcJg[T@@@@@@\ndg|DB@QNrJYQQJHrivuUUUT@@\ndg|D`BTHaIfUm]aNxHHD@@@\ndg|H@@RVYYwySn``@@@@@\ndg|H@@RYe[W[cn@`jjH@@\ndg|H`BBHRYg^U[cnB@`@@@@\ndg}@pBl@c@aPaJYgU|jgZdHHn@@\ndg~D`NTpbDfUvYj[[`@jYa@@\ndg~H@NAIe]YVfNx@J@@@@\ndg\x7F@PBWPbAbLbbbRfaSR]pPTMQ@@\ndiD@@DiUVjj`@\ndiD@`@BDiUVjj`@\ndiD@`@bDee^jj`@\ndiD@`@kDf]Vjj`@\ndiDD@@QIgUZjh@@\ndiDDB@QNR[UfjZ@@\ndiDDPBhLQlQIf_jZh@@\ndiDH@@RVUvjj@@\ndiDH@@RVvjZj@@\ndiDH@@RYuYjjBH`\ndiDH@@rIRHrjj`@\ndiDJ@@PnEInvZjX@@\ndiDJ`HSNDOAJoVZjX@@\ndiDL@@IdfY~jjP@\ndiDL@@kdiVZjj`@\ndiDLPBhPbFbLbbbeiZdHQ@\ndiDLPDp`bH|DfmVZj`@\ndiE@`ND@aJUUjj|@@\ndiEH@BxDeUZjj`@\ndiF@@@RUUZjj@@\ndiF@@@RVUzjj@@\ndiF@@@ReUZjj@@\ndiFD@AADfuUjj`@\ndiFD@BCdf]Zjj`@\ndiFD@FBdiUzjj`@\ndiFD@LCldTatjjh@@\ndiFJAHALXXgNRYvvjj@@\ndiG@@@HTeUWjjp@\ndiG@@@xTiUVjj`@\ndiT@@LdRbQrbYjjZ@@\ndiTH@@RVYz{ajjj`@\ndiTH@@ReUxRfjjf`@\ndiV@@@RVYz{ajjj`@\ndiV@@@RfU|kahDB@@\ndiV@`J@HRfU|kahDB@@\ndiVH@AAJUWaJZjjz@@\ndid@@DjUfaBB`@@\ndid@@DjWffB@h@@\ndid@@DjYUaBHP@@\ndid@@LdbRQk``b@@\ndid@@LdbbQxXF@@@\ndid@P@bNBDfUvf`@h@@\ndid@`@bDf[Waj@@@@\ndid@p@bBbAbDfYun``H@@\ndid@p@bBbFbDfYoa`b@@@\ndidD@@EIe]ih@J@@\ndidD@@EIfU[hBB@@\ndidD@@GHhdhZZ@B`@@\ndidD@@KIDhdZZfjh@@\ndidD@@QIe]Jfjj`@\ndidD@@QInUxV`@@@\ndidD@@iIYgxVB@@@\ndidD@@iJ[gxZB@@@\ndidD`BDHaIf_[hHB@@\ndidDpNDH`ha`cHhhcJZjiX@@\ndidH@@RUe^Fh@@@@\ndidH@@RVUvz`@`@@\ndidH@@RYVZZ@B`@@\ndidH@@RYWZZ@BP@@\ndidH@@RYm^Eh@@@@\ndidH@@RYm^Fh@@@@\ndidH@@RYm^Fjjh@@\ndidH@@RZU~Fjzh@@\ndidHPBBHFHRYgVzB@`@@\ndidHPBBHzHRYgfFBB@@@\ndidH`ACDrJIJFf`@d@@\ndidL@@HTfYun``H@@\ndidL@@IdfYoa`b@@@\ndidL@@KdfYynZej@@\ndidL@@RdfVwaZii@@\ndidL@@rldTTUkjjj`@\ndidlAHJfAAbTyInW[fiY`@\ndie@@@EIYW[n@B@@\ndie@@@EIfW[hBB@@\ndie@@@GHhhdVz@``@@\ndie@PLx@a@cHheDZyjjh@@\ndie@`BDHaIf][hHB@@\ndieD`JXaBPRYgvzejX@@\ndieH@JDDiWTjjjj@@\ndieH@LDDeYWajjj@@\ndif@@@RUe^Gh@@@@\ndif@@@RVUf{`@`@@\ndif@@@RVUv{`@`@@\ndif@@@RfU~Fjjh@@\ndif@@@RfWzXBBP@@\ndif@@@RfWzXBB`@@\ndif@@@rRJEKaj@@@@\ndif@PABHJHRYgVzB@`@@\ndif@`ABHRYWZZ@Bp@@\ndif@`BBHRYgVzB@`@@\ndif@`NBHRYeVFBC@@@\ndifD@D@TfY|fZjj@@\ndifD@J@TiWTjjjj@@\ndifDAHAHeNR[e^Eh@@@@\ndifFAHALkab\\yIgnxVij`@\ndifH@AAJYYhZjj`@\ndifH@DAIfVifjj`@\ndifH@DAInUxVjj`@\ndig@@@xTjU^njjj@@\ndkLB@@SSR[UUYjjjX@@\ndkLB`HSBCprRSEQIYjjjh@@\ndkLD@@QIeUoVjjj`@\ndkLD@@QIeWUVjjj`@\ndkLD@@QIe]Ufijj`@\ndkLD@@QIe^Uvijj`@\ndkLD@@QImUUVjjj`@\ndkLD@@qJ[]UZjzj`@\ndkLFPHSaTpBJBLddJTbNVjVj@@\ndkLH@@RUUUUfjjhHR@\ndkLH@@RVUU^jjjh@@\ndkLH@@rJIJJJrjjjh@@\ndkLH@@rJJQUIIjjjh@@\ndkLLHBi`bL|MbCbDeZuUjZjj@@\ndkLLHLi`bB|MbCbDeVUUjjjj@@\ndkLLXJXPdDdLdEdMdCdLbdLrfdjffj@@\ndkLL`@JdhDiYWUjjjj@@\ndkLL`@idhLdTTJTTjjjj@@\ndkLN@@PiWSR[kVYjjfX@@\ndkM@@@UJeUUZjjj`@\ndkMDHLve@HZPzPFPrQSJQVZfjihHR@\ndkN@@@RUUUVjjjh@@\ndkN@@@ReUUVjjjh@@\ndkND@CALbbRbJRZjjj@@\ndkNH@JAIgeUzjjj`@\ndkNL@BB]RYyVZjjjh@@\ndkO@@@Y\\dbJRRTjjjj@@\ndk\\@`@BDifUWGUN`@@@@@\ndk\\D@@QIenf^WSZjjjh@@\ndk\\D@@SHihheDQgSZjjjh@@\ndk\\H@@RYeg]itvi``D@@\ndk\\H@@RYeg]itxH@@@@@\ndk\\H@@RYm[Watv`@@@@@\ndk\\H@@RfU{WatzB@@@@@\ndk\\H@@rJJZIQDYtv`@@@@@\ndk\\H`ABHRYVvvftx@Jjb@@\ndk]@pLh@a@c`aIegmRkSZj`@P@@\ndk]H@DHDfYyWImMjhHA@@\ndk]LbLjDd@birRPqSIYntuj`PH@@\ndk^@@@RfYU\\]Tzjjjj@@\ndk^D@DBTfYYwimMjdDB@@\ndk^D@DBTfY[W[mNfhHB@@\ndk^HPNHJrXaIf^UvGS``B@@@@\ndk^LpB[a@HpHkprQPjSIILPjjZjj@@\ndkl@`@SLddTlTUgZhBH`@@\ndklB@@Q]RY[WoaZjjZ`@\ndklD@@QIeUY]Mjjjj@@\ndklD@@QIe]URijjjj@@\ndklD@@QIgfU}MjhD@@@\ndklD@@QIgge]Mjj@@@@\ndklD@@QInUvnEh@Jh@@\ndklD@@SHhdhTdjYjjjj@@\ndklD@@eJ[Vvfz`@jh@@\ndklD@@qJ[[m]Njj@@@@\ndklDB@QNR[V[WSZj`@@@\ndklDpLHHbOA@aIkVuVzZjjj@@\ndklH@@RYeZUn`HJj@@\ndklH@@RZWyWSjj`@@@\ndklH@@ReYUfSj``h@@\ndklL@@STf^UvFVh@J`@@\ndklL`AtpbDfUoVih@Ji`@@\ndklLpDppbHBMbLbdLRTtEYX@bP@@\ndkmB@hTDtxeNVS{HihhdUAehBBX@@\ndkmD@DTCRUfWtYV@`e@@\ndkmD@DdCrIJJIPxUV@bE@@\ndknB`NaLt@cIIKEEeiUZB@h@@\ndknD@LCTeYeUTzjBB@@@\ndknD`Ca@BLddLRRVgUhDHpHZ@\ndknD`LIPBDiZuYdzzjfh@@\ndknLPASBBH`HrJPjJKI]ehHB@@\ndknL`LaA@HrRPjIKY]VdDB@@\ndmL@@DjYYVgeBHhb@@\ndmL@@DjYeVdUjjjj@@\ndmLD@@QIe[VfeVj@B@@\ndmLD@@yJY~WJeZYijP@\ndmLH@@RYVuiiV@@@@@@\ndmLH@@RYVuiiVjjjh@@\ndmLH@@RYegXYVhH``@@\ndmLH@@RYiYKnUjjjh@@\ndmLH@@RYiYKnVjjjh@@\ndmLH@@RfYUxYVjifh@@\ndmLH@@RfYUxYVjjjh@@\ndmLH@@rJJIQEneX@@@@@\ndmN@@@RYVuiiVj`@`@@\ndmN@@@ReZ}IiVjjZh@@\ndmN@@@rQQJKFnFP@@H@@\ndmN@@@rQQQQVneP@`@@@\ndmN@`J@HrQQQH{JFZA`J@@\ndmN@`JADrQQQH{JFZA`J@@\ndmNH@BAIfUmiEX@@@@@\ndmN``DkaT@aIefUneVjVjP@\ndmO@@@SdfVUrjUZ`PH@@\ndmT@D@dDdLdJdFdAdIdEdLbdLadjjj`@\ndmT@D@kDdLdJdFdAdIdEdLbdLadjjj`@\ndmT@p@bBBEbDeYyzjjh@@\ndmTB@@RiRYyVZje`@\ndmTB@@SiRYyvZji`@\ndmTB`HSBCpRjuUZjj`@\ndmTB`NFU@HReUfjjY`@\ndmTD@@QIUUUjjj@@\ndmTD@@QIeUyjjj@@\ndmTD@@QIgUUjjj@@\ndmTD@@QImUUjjj@@\ndmTD@@iJU]Vjjj@@\ndmTH@@RUUUYjj`aH\ndmTH@@RUgVYjf`aD\ndmTH@@RUgVijf`aD\ndmTH@@RUgVijf`aH\ndmTH@@RVUWjjj`@\ndmTH@@RZWvjjj`@\ndmTH@@rJQEJJjje@@\ndmUH@JXDiUYjjjh@@\ndmV@@@RUUUjjj`@\ndmV@@@ReUUjjj`@\ndmV@@@RfWYjjj`@\ndmVD@DAdfUufijh@@\ndmVD@LA\\bRbdUjjj`@\ndmVL@IAARYW[Zff`@\ndmWH`DphCpRjyfZjj`@\ndmt@@LdbRdSjP`jH@@\ndmt@H@qAdIdEdDfYVfz@`j@@\ndmt@H@qAdIdEdLbbRadih@Jh@@\ndmtB@@RUR[e^[fjjZ@@\ndmtD@@IIf]yn``J`@@\ndmtD@@QIe]TjZjjh@@\ndmtD@@QIem\\YZ`@`@@\ndmtD@@QIgYVUZh@@@@\ndmtD@@QImYVUZX@@Hr@\ndmtD@@UIfuwaZ@B`@@\ndmtD@@aJye[ahBB`@@\ndmtD@@qJ[[VUjh@@@@\ndmtD@@yJUe^Uj``@@@\ndmtDPAdHc`aIe]jf`@e`@@\ndmtD`JTHaIYe_ihHHP@@\ndmtD`LTHaI[e\\Yi`@`@@\ndmtD`LxLQI[f^Ui``@@@\ndmtD`NTHaIe]Vf`@j`@@\ndmtDpDpHb@aXcHiCDeafV@B@@\ndmtH@@RUfueVZ@@BD`\ndmtH@@RVUv[j@Bh@@\ndmtH@@RYYf[ffjj@@\ndmtH@@RYeZ[hBBh@@\ndmtH@@RYeeZVfjj@@\ndmtH@@RYeeZVjjj@@\ndmtH@@RYeeZZjjj@@\ndmtH@@RYe~[ffjZ@@\ndmtH@@Rfuu[j@BXBAP\ndmtH@@rJJIHhfZZjh@@\ndmtH@@rJJIJEn`HJ`@@\ndmtH@@rJQPiXYjjjh@@\ndmtH@@rJQQHxYjjih@@\ndmtHpEBHZHfHrJIJHrn`BJP@@\ndmtL@@PdfueYUj`@@@\ndmtL@@YTf[gqehHB@@\ndmtL@@hTef^~e``b@@\ndmu@`ATIAIe[^n`BNp@@\ndmuDPHhfBHFHRYf~kjfZj@@\ndmuDPHhfCDFHRYf~kjfZj@@\ndmuH@DTDf^Uqej@B@@\ndmuH@DdDf^UaUj@H@@\ndmuLAHTDZISdfygQehHB@@\ndmv@@@RVUv[n@Bh@@\ndmv@@@RfUWzZjjj@@\ndmv@@@rQQJEJUjh@@@@\ndmvD@BADfueYUjjj`@\ndmvD@DCdf^YyUjB@@@\ndmvD@NADfVyyUjB@@@\ndmvD`La@BLddlTReUhB@@@\ndmvH@BAIVUwaj@B`@@\ndmvH@EAIeYfnZZjx@@\ndmvH@HAIffgejjjh@@\ndmvH@JAJUuTjjjjh@@\ndmvH@LAIUfVUj`H@@@\ndmvL@EAFR[f_FV``H@@\ndmvL@FAIR[ev[fjjZ@@\ndmwLPHkbYPbAbLbbbfezZfZf@@\ndndD`LH@aJZ\\hjijjj`@\ndo\\B`HRUALrRQIIIHjjjej`@\ndo\\D@@QIe]UUZfjjh@@\ndo\\D@@QIe]UVZfjjh@@\ndo\\D@@SHhdddhbfjjjj@@\ndo\\F@@Savtf^UVYjjjY`@\ndo\\J@@PYWHheDhbdfjYjj@@\ndo\\J@@QiuIe[YoZfifT@@\ndo\\L@@ptimyujjjjj`@\ndo\\L@@rTie]mVjjjj`@\ndo^@`L@HReuUUZzjjj@@\ndo^J@JAIW\\bbTRTtqZjifh@@\ndo|B@@RgrJYIQQIGSZZ@`hBL`\ndo|BHDrwBH`HzHNHrJPqQYIRUe``JX@@\ndo|D@@QIeUyemvij@`@`h\ndo|D@@QIe[e~WVjijf`@\ndo|D@@QIgfUYuvj``h@@\ndo|D@@QImYeeVvjjjj`@\ndo|D@@SHhmHbhdk]jjh@@@@\ndo|D@@qJY]YWmzjjB@@@\ndo|DpElH`hbXcHhhidbeFFBBJj`@@\ndo|H@@RV^UviUj`@j`@@\ndo|H@@RYfV{vF@bJj`@@\ndo|H`EBHRYWUnjZ@Bij`@@\ndo}@DDhJs``YBYAY@yByAyCHheEiEYBjfjjjd@@\ndo~@@@RfUYw~V``hj`@@\ndo~@@@RfUYw~Vjjjjh@@\ndo~B@GAEoHheDdhbiMjBBb`@@\ndo~BpIx[\\H``cXcHhheHe]FVBAXi`@@\ndo~D@AADfUvUwSZf`@h@@\ndo~D@LALbbTTJTLWVj`@j@@\ndo~H@DAIVYenEU`Hbj@@\ndo~L@DA]rJJKIJHhfZjjZj@@\neFA@HoBJ@\neFABHiBL@\neFABPiBL@\neFACDlRL@\neFBBHc@@\neFBBlc@@\neFHBJ@\neFHBL@\neFJBhHh@\neFJHbHh@\neF`BL@\neF`BN@\neMB@HRZ@\neMB@Hch@\neMCAD`aBHu@\neMFI@bMP@\neMHAIX@\neMHAIh@\neMLRRWhv@\neM`AId@\neM`AIh@\neM`AIx@\neM`BN`@\neMhDRV@\neOB@Hcfh@\neOHBNZ`@\neO`BNZ`@\nfHbd@@\nfHcp@@\nfHdP@@\nfHd`@@\nfHdp@@\nf`a@`@@FrJIJQQNKTXuUUTu@@@\nf`a@`@@HrJIJQJqIN|uUU@@@@@\nf`a@`D@HQvQSRIIFIIwfjjh@@@@\nf`aA@@@ILjjjj{sUUUUT@@\nf`aA@@@ILsKWRpTADUUP@@\nf`aA@@@YEEDcEEHc^ZZjZj`Pq@\nf`aA@@@YEEDdTddf\\`HJjj@@@\nf`aA@@@YEEEETddfB`Hbjj@@@\nf`aA`@@HqdTRTTbUrMYj`j@d@@\nf`i@A@@AG@cIEEEDedkSdcZ]PA@AE@@@\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\nf`iA@@@ILrmtvQcAV|uUUUUT@@\nf`iA@@@YEEEEDhdYFTzwf`@``H@@@\nf`iA@@@YHhedhh]HHUhujjjZjj`@@\nf`iA@@@YHhhdXdhhHehujjjZjj`@@\nf`iPB@N^@DYHhhhdldZ\\d[Sj@H@Hx@@@\nf`iQA@B\\|@HpDISLzsnRdcN}TaAQUD@@\nf`q@B@@^BULrjkj\\[uPA@D@@@@\nf`q@`@@^RVYYywbkNXH@BA@@@\nf`qA`@@B|dsLrozkF\\t@P@D@@@\nf`qA`@@H\\drsJkrkF|u@@@P@@@\nf`qA`@@HidTRbRQbREIwfjZh@D@@\nf`qPA@AZ@DPBLdRbbbTVJgV}T@PP@@@@\nf`qPHAHV@cGIF]zDxzt~{HhmEDdThJRmMUUUST@@\nf`qPQ@INxJw`QA@cHhheHeUDqQgPPKELd@@\nf`qPaABLEh@Q@HIKIEvnrQJJJIQXj][uPAA@@@@@\nf`qPb@EZ]xDQdRTRTraTxIVj`@iib@@\nf`qa@@D@rJJJJIZHjl{sUTEDD@@@\nf`qa@@D@rJJJJJFHjl{sULEDD@@@\nf`qp@@@Hpds\\rj~gV|uP@@@@@@\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\nf`~@@@DiUUUUjjjjj@@\nf`~@H@@Hdhug^rJZJIQJFMUTts@@@\nf`~@P@@Ht[HhdhbeLhuUUMT@@\nf`~@P@@HuYIe]UVvijjfP@@\nf`~@`@@BrQQIIQSVUUUUU@@@\nf`~@`@@HRYuUUUjjjjh@@\nf`~@`@@HR[UUUUjjjjh@@\nf`~A@@@YEDeEDcEJjjjj`@@\nf`~Ab@@Dhb`rQJJIEJJUUUUU@@@\nf`~Ab@@TXb`RfYwf^jjjjh@@\nf`~aK@JPQaVcV]xG`KpexYIIUDeHiFjjff`@@\nf`~a`BH@QbDxyIgUUUVjjjj`@@\nf`~ab@IPQ`G`eUnoLsUUUUP@@\nfbe@B@@QBSLjojjheUAAEUUP@@\nfbeAP@@Hu[rSKJkK~lcMPPTUUP@@\nfbea`@D@XgHhhdddcDedFKUUUP@T@@@\nfbm@A@@IdIAJkfYUU|tWICfj@@@@@@@@\nfbmAB@H@SDjnYeUWsQ\\dNZh@@@@@@@@\nfbmAB@H@SDjnYeUWsQ\\dNZhJhJhhh@@\nfbmAB@H@SDjnYeUWsQ\\dNZjjjjjjh@@\nfbmA`@@HsdTRfbTbtjRejshiZjjj`@j@@@\nfbmPa@LN``@QhHrRPqPiSISIJL{r\\kU@DT@A@@@\nfbmp@@@XXeL\x7FLjsobe`iruUPP@@P@@@\nfbu@AP@QAHadPJHeDZbGQ@XaLQfHrJJJ[PrZJ[TyzMLuUULuP@@\nfbu`q@OPQbJ\\`B@aFRRVIJYJYZPTcVV`@@Je`@@\nfbua@@M@rJQEJKJJIKNBgMUUSTBA@HR`\nfby@`@@HRYuUUUUZjjjjj`@@\nfby@`@@HR[UUUUUZjjffj`HTv`\nfby@`@@HR[UUUUUZjjfjj`PT`\nfby@`@@HR[UUUUUZjjjjj`@@\nfbyAb@HHpCpRkUYeU}Zjjjjj`@@\nfbyP`@LR@aIemUUUujjjjjj@@\nfbya@@D@rJJIIIHiIIMUUUUUP@@\nfbya`@D@UkHhhdddbddduUUUUU@@@\nfb}@P@@H]gHheDheEeD\\jugQRgKUUUUUUU@@@\nfb}AA@K@qLxbSLl|}z{ARtYtTp@@QL@P@@@\nfde@@`@QAHa`QhHrJJJZIKPi\\EjpXpQAU@@P@@\nfde@`@@HrIJQQZQXiRljw`mUUUUUT@@\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\nfdeP`@DNA[HhhhlmMCDRbc^BuPPPuTP@@\nfdea@@H`rQQQIRIZHbmHq`tEAUETT@@\nfdi@`@@BrQQIJHyII\\UPPTUUP@@\nfdi@`@@HRYUUUUPqZjjjjj@@\nfdi@`D@HQrS\\jjrnFKUTuA@@H\\`\nfdiA@@@ILjjjjhXmUUUUT`aE@\nfdiA`@@BCdbbRTTbWTxjjjjjjh@@\nfdiA`@@HLdrjjjjabuUUUUT@@\nfdiA`@@H\\drjjjjabuUUUUT@@\nfdiP`@DVAGHdiEBeCHbkRuP@UR`@@\nfdiXpCHLDXLPHUiwhRcfRJ]]{lbfbbbbbblkMADMCT@@@\nfdi``DF@Pcdfye_UTRf``ajj@PU@\nfdia@@D@RYguUURLZjjjjj@@\nfdiaB@JDAbYEEEIkHhT`qjZjj@@@@\nfdiaPBH@QYwhRclbfbbRLTTpiM@PKLt@@@\nfdq@P@@H]yIeWUUmZjjjfh@@\nfdq@`@@HRYWUUUVijjjj@@\nfdq@`@@HR[UUUUVjjjjj@@\nfdqAa@HRTALhDYIHddiDeTjjjVjj@@\nfdq`@@@ITnjjjmUUUUU@@@\nfduA@@@ILsLjm{AJ\\XOhm@@@@A@@@@\nfdy@`@@XrQQSPzIKJXiYuUUP@UP@@\nfdyA@@@IKLjoSWAF|pDEUUQ@@@\nfdyA@`I@bBQGhbLQdTTVVfbRaYqpXHBh@b@@@\nfdyAB`M@qBXcLPVHkDRYf{}e^RCFBHbh@@@@\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\nfdyAP@@BtFNQQQQQJKGISk^Z@HH@h@@@\nfdyA`@@BudbbRTQrbRxhLZBBb`@@@@\nfdyAb@FAb@HrQQJVIKJJDihuRl@ESP@@\nfdyPPBHZ@aShRcdfyVyuwdmFZ@HZfh`@@\nfdyP`@KN@cHihdliEDcpPXm@AUMTP@@\nfdy`R@KPQcp@cIIKDeLeBdJQgKP@@QT@@@\nfdy``@A@Pdrrr\x7FZjLFKTEA@@@@@\nfdya@@D@rJJIIHiQIBTFKUUUP@P@@\nfdya@@D@rJJJIGIQIRTFKUUUP@P@@\nfgA@B@@XbSLrjyFRMjuP@@A@@@\nfgAP@B@BAHirRJIJHkLUpQkAPP@A@@@\nfha@B@@IbURjjjmUUUUT@@\nfha@P@@HiKHhmDeDTdfjjZjh@@\nfha@R@HHehBYddbRRbbSUUULuT@@\nfha@R@HHpPG`eUjjsLuUUUU@@@\nfha@`@@HrJYQZQHiQjjjZZ@@\nfha@p@@HhkQdfV^yuVijVjhDAP\nfhaAP@@HEirSJwkO[TuUTr@@\nfhaAp@@HYqV`iLkWl{mSUSSP@@\nfhaAr@HHpSQk@|DjmUUUVjjjjh@@\nfha`@@@IRlrj~uUUUUP@@\nfha`B@B@bDeUUUUYjjjjhDHP\nfhah@@@\\ExJTjjjjmUUUUT@@\nfhi@R@NJmx@QdbbbbTVadgFCPAAAD@@@\nfhi@a@AFADAbDfUmygZL]z@BhHB@@@\nfhi@a@OAADBBLbTTRbfQtyiUj@B@bX@@@\nfhi@b@HH@DYIHXhhddSiuoKP@P@P@@@\nfhi@c@BFADRb@qFQQQIIPq[LD{tDDPPD@@@\nfhiA@@@ISLwZkf|xMUP@@@@@@\nfhiA@@@YEEDhdcLeKW`m@dP@@@aR@\nfhiAP@@PIqRTmMJ{yoNCUUUUUT@@\nfhiA`@@HBdwLl|zKSoMA@@PP@@@\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\nfhiP@@@ArJJIEJIJYgKN`HJ@B`@@\nfhiPA@B\\@DXBDif]YybTdZiBBbj`@@\nfhiPC@IF@|PBDAFRIJJJIQXz|xMT@PP@@@@\nfhiQ`BHL@`LIQrS\\roZxeN|tDD@A@@@\nfhiQaBOAQbpHb@QzP}dTabbTVeTmF]K@QBrd@@\nfhi`@@@ISLwZkf|xMUP@@@@@@\nfhia@BH@AtIRYeV]WEjwjP`@BH@PP`\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\nfhqA@@@ILkKjj~BuUUUUP@@\nfhqA@@@YEEDhbdddsdAAUUT@@@\nfhqP`@DD@YIeYU_UQfjjjjj@@\nfhqh`@NFmxHJYHihhdkLhIUADQML@@@\nfhyA@@@YHiMEiEbdHtcN}UUUUUU@@@\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@@\nfhyq@@B\\DAIfV]UudeZ|FBBaZeJ@@\nfle@`@@LRfVVW]|QgAhJ@HBF@D@p\nfleA@@@ILwJkttJU`m@PUUUD@@\nfleA`@@HbdssLjoyoNBuT@@@T@@@\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\nfleP`@DA@eIVUue]^B]yZjjjjV`@@\nflea@@D@RYeUmU|RgAZjjBBJ`@@\nfleac@FV|DD`RPEHYEEEMDbeierVcPQDTluD@@\nfleiR@AZlFLDXhdGaddeRRbbRtQk^BuUURmSP@@\nfli@@@LdbVRRbbjTjjjjjj@@\nfli@RBKN|DBX{`|eTjjkLmUUUSMP@@\nfli@`@@HrJIJHiIIIIjjjjjh@@\nfli@`@@HrJKRIEJKIQjjZZihDEH\nfliAb@@Dhb`ReeUU]Vjjjjjh@@\nfli`@@@IJjjjjkUUUUUT@@\nfli`@@@IJjjjjkuUUUUT@@\nflmA@@@YEEEEDeDTbrRgF}EKPLQTKTR@@\nflmAB@K@qDfYYy{uXJVcNbf@@BI`@@@@\nflu@B@@^BULsJjozCZOdu@@@@@@@@@\nflu@B@LTBUJssZktDzHTaAP@@@@@@@\nflu@`@@HrJKRJKRKEISmNCEjjjjjjh@@\nfluP@@@ArQQQQII[ERdmNmxH@@@Bh@@@\nfluh`@DXUipAYEEEELTdedrVcN|uUMSURt@@\nfluqB@AJMDFHdrmrlzmNZ\\EL@PuA@a@@@\nfly@PB@HbeGI{HiiBddddeBTZjjjjf`@@\nfly@`@@XrQQISHqIYQwjjjh@J`@@\nflyAP@@DExNQQQPkIIJYTXtuMUSU@@@\nflyPa@L^bdDQjHrIJJIIHiSQQjjBBJi`@@\nfly`P`LHEIpH`LaFPSHYEMEEDlbeIjtu@pQUP@@\nflya@@D@rJJIIIHiIIVfjjjjjh@@\nflya@@H@RV[WUUTTih@Jjj`DHH\nflyaR@IBlzJPUfQQIYSJJHjTY@AMTuL@@@\nfoA@@@LdbbQbRbDkQfjijjh@@\nfoA@@@LdfbTrbUipufjjjfhDCH\nfoA@P@@Ht[HheMEEEQJeYjjjZi@@\nfoA@R@HHqp@QddebbfRtmV\\mA@@@@@@\nfoA@`@@NrQQQIISDVeVh@@BH@@@\nfoA@`@@VRfUYu^JLz``@B@@@\nfoA@`@@\\RVUoeVBly`BH@@@@\nfoA@b@KN@DISLjohmJMP@@AP@@@\nfoAA@@@IRlrjzkF]U@@@@@@@\nfoAI@BDDXhCIUNQQQSQIHdyYsURE@P@@\nfoAP@@@NRYWVUzLMZ@B`@`@@\nfoAP@@@NRYWVUzLMZjjjjj@@\nfoAPPBHZ@aShRcdfyVywdmFZ@HZd`@@\nfoAQC@DL\\BHiDVbLbbTTJRtYqVhB@@i@@@\nfoA`P@L@IrRRllrkhugLuSMThHHP\nfoA``@D@ydTRbTLRIFFluR`PT@@@\nfoA``@L@QdTVbbbblmV\\u@A@@@@@\nfoA`b@LTX@HRe{VYSVlznZjjZ@@\nfoAa@@A@RfuueV\\lz`@jjb@@\nfoAab@KPQ`@QddebRfR`iF\\m@@A@@@@\nfoAab@NPQ`@QddebbfRtmV\\mA@@@@@@\nfoAqB@JLDPDQdTTTtlRWAV]RuT@B@@@\nfoQ@@@LdbTrdrLYs`cVZjjjjh@@\nfoQ@`@@HRYVvvQRuXsfiZjjY@@\nfoQ@`@@HrJIQJKPjReFlyjjjij`@@\nfoQ`@@@YHhhheDbKTkF]P@PPD@@@\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\ngC`D@DPHRfh@\ngC`DADZHRVXRP\ngC`DADZHRVh@\ngC`H@DIKT@@\ngC`HADIKLIH\ngC`HADIKR@@\ngC``@dfZ@@\ngC``AdeY@@\ngC``Adej@@\ngCa@@dkH@\ngCa@@dkP@\ngCa@@dmH@\ngCa@@dmP@\ngCa@@dsP@\ngCa@@duP@\ngCaHH@bNt@@\ngCaHL@aIZ`@\ngCaHLHaIZ`@\ngCah@mJAIj`@\ngCd@Adej@@\ngCe@E`dsP@\ngCh@@dmH@\ngCh@@dmP@\ngCh@@doH@\ngCh@@doP@\ngCh@@duP@\ngChHD@aIU`@\ngChHLHaIZp@\ngCh`LDdsP@\ngCi@DDeV@@\ngCi@DDeZ@@\ngCi@LDej@@\ngFp@DiTt@@@\ngFp@DiTvjh@\ngFpHADILimSP@\ngFpL@DXHHPeJfuU@@\ngFp`@dfTujh@\ngFp`@df_Ejh@\ngFp`AdigVjh@\ngFq@@drfmU@@\ngFq@@drftm@@\ngFq@@drfuM@@\ngFq@@eLzts@@\ngFq@@eLzuU@@\ngFqHJ@aJUMjj@@\ngFt@ATiTvjh@\ngFtHE`DILikUP@\ngFx@@eJf`@@@\ngFx@@eJfuU@@\ngFy@JDiTvjh@\ngFy@LDiWFjh@\ngGP@DiVV`iJ@\ngGP@DiVj`@\ngGPBADJPtaXcHiCUP@\ngGPD@DPHReZj@@\ngGPDADFHRYjY@@\ngGPLADFHlPdrsTID\ngGPLADFHlPdruT@@\ngGPLAbGDlPdruT@@\ngGPP@cTfyi`@\ngGP`@TfYi`@\ngGP`@TfYj`@\ngGP`@dfUjP@\ngGP`@dfUj`@\ngGP`@df]jP@\ngGP`@dfuiaM@\ngGP`@dfuj`@\ngGP`@dfyj`@\ngGP`ADkjj`@\ngGP`ATeVj`@\ngGP`ATeej`@\ngGP`ATf^j`@\ngGP`ATiVj`@\ngGPhH`DYIHUi@@\ngGPhMQDIK]U@@\ngGPlEaDPHlQdTaeh@\ngGQ@@djuT@@\ngGQ@@dkUT@@\ngGQ@@dlmT@@\ngGQ@@drmT@@\ngGQ@@druT@@\ngGQ@@dsML@@\ngGQ@@dsMT@@\ngGQ@@dtuR@@\ngGQ@@eJttHh\ngGQDBHbqBSKTp@\ngGQDJH`qBSKUP@\ngGQDJLPxbSKUP@\ngGQDLHbqBRwSP@\ngGQDLHbqBRwUP@\ngGQHDHaInfh@\ngGQHJ@aJUjh@\ngGQHJHaIUjh@\ngGQLJIARFdLbdMU@@\ngGQ`@bdwMT@@\ngGQ`@jdsmR@@\ngGQdEb@bRFRRVV`@\ngGQh@ZjAJVjh@\ngGT@Ade[j`@\ngGT`EPTfyi`@\ngGX@@dj|tHd\ngGX@@dkUT@@\ngGX@@dk]L@@\ngGX@@dtuV@@\ngGX@@eNuT@@\ngGXHD@aIUVd@\ngGX`hEIWIMkU@@\ngGXhhZ@bS^Rmjf@@\ngGY@BDeVj`@\ngGY@DDeUZP@\ngGY@DDfYj`@\ngGY@HDefZaH`\ngJP@DknX@\ngJPDADFHRYj`@\ngJPDADFHR[f`@\ngJPH@DIJuP@\ngJPH@DIKUP@\ngJPH@DIRuP@\ngJPHADILth@\ngJPXHlPDQzt@@\ngJPXHlPiQzt@@\ngJP`@TeZh@\ngJP`@TfVd@\ngJP`@TfZh@\ngJP`@deVd@\ngJP`@deVh@\ngJP`@dfVh@\ngJP`@dfvd@\ngJP`@dfvh@\ngJP`Adizh@\ngJPdEaDPHRZe`@\ngJQ@@djsBJ@\ngJQ@@dkU@@\ngJQ@@dls@@\ngJQ@@dlu@@\ngJQ@@dmS@@\ngJQ@@drt`@\ngJQ@@dru@@\ngJQ@@dsT`@\ngJQ@@duU@@\ngJQ@@eKS@@\ngJQ@@eKU@@\ngJQHBHaIfj@@\ngJQHBHaInZ@@\ngJQ`@bdvu@@\ngJQhHlOAJmj@@\ngJT@@TeZh@\ngJT@@Te^l@\ngJT`E`TfVh@\ngJU@HPdkU@@\ngJX@@dkU@@\ngJX@@dkt`@\ngJX@@dku@@\ngJX@@dms@@\ngJX@@dmu@@\ngJX@@eKU@@\ngJX`LDdru@@\ngJY@BDeZh@\ngJY@BDeZl@\ngJY@BDizh@\ngJY@DDefh@\ngJY@DDfvd@\ngJY@LDeZh@\ngJYHCabIKTp@\ngJYhCE`DQzt@@\ngKP`Adi\\Zj@@\ngKX@@eKcUP@\ngK\\@ABeKcMH@\ngNpB@DSppPPaJ[Zj`@\ngNpJAbJHLaYArBS]UU@@\ngNpLADXH\\PdjmUP@\ngNpP@jtfvZf@@\ngNp`@TfYZZ@@\ngNp`@dfUZe@@\ngNp`@dfUZf@@\ngNp`@dfUZi@@\ngNp`@dfUZj@@\ngNp`@dfWZfDL@\ngNp`@dfWZj@@\ngNp`@df]Zj@@\ngNp`@df^Zf@@\ngNp`@df^Zj@@\ngNp`@dfvZj@@\ngNp`@tf]jj@@\ngNp`@|bdQjj@@\ngNp`ATf^jj@@\ngNp`ATiUjj@@\ngNp`ATiVjj@@\ngNphDqDYEHcUR@@\ngNphH`DYIHTmJ@@\ngNphJpDIRkUT@@\ngNphJqDIKMTl@@\ngNq@@dlkUP@\ngNq@@dl}MPb`\ngNq@@dr{Vpa`\ngNq@@dr}Vpa`\ngNq@@dsKSP@\ngNq@@eLuUP@\ngNq@AdTbMTpa`\ngNq`@fdskUP@\ngNq`@jdrkUP@\ngNq`@jdssTp@\ngNq`AVeJmUP@\ngNq`AbeMmUP@\ngNqhAbjAJyZj`@\ngNr`ijpiJyImfi`@\ngNt@@TeVzj@@\ngNt@@|dbJjj@@\ngNx@@djmUP@\ngNx@@dsuUP@\ngNx@@eJmTh@\ngNx@@eJmUP@\ngNx@@eRmUP@\ngNx@AddQUUP@\ngNxDHHaQBS]UU@@\ngNx`DFdskUP@\ngNx`LFdjmUP@\ngNy@BDf^jj@@\ngNy@DDfYZi@@\ngNy@FDeYjg@@\ngNyHJPDIJwTt@@\ngOp@DjWkB@@@\ngOp@DjWkjj`@\ngOpH@DILkW@@@@\ngOp`@dfUMZj`@\ngOp`@tiguif`@\ngOp`@tigujj`@\ngOp`ATeekZj`@\ngOq@@drm[ST@@\ngOq@@drm[UT@@\ngOq@@drm\\@@@@\ngOq@@drm]UT@@\ngOq@@eLnmLt@@\ngOq@@eMN]UT@@\ngOq`@ldrikUT@@\ngOqhHl@cIIBjujh@\ngOt@@tjWkjj`@\ngOt@ATiUkjj`@\ngOtLHPDXHhPeLq]UL@@\ngOx@@drm\\@@@@\ngOx@@drm]UT@@\ngOx@@eJqh@P@@\ngOx@@eJyh@P@@\ngOx@@eLmXD@@@\ngOy@DDfYKZj`@\ngOy@JDiWMjj`@\ngOyDEQDDHRYXnZZ@@\ngOyDLpDHHRY\\ujf@@\ngO|HDVHaIeZx@@@';
carcp.m1_0 = 'fHfXAa@\nfJ@FD\neOHBNZ`pge@\neFhHba@\ngFy@DDfXujhB\neFHBJFE@\ngFt@ATiTvjhCAbKF`\ngChHLHaIZ`H\neMhHchLJyH\neFB@JcAaGJ@\ngGPH@EIJmU@P\ngGPHAbIJmU@XTQX|e@\neMBBlRZCAKd`\neMABHXaIhH\ngJPDADXHRUj`LBHmrD\ngJQhHl@bOV`LH^S@\neMHAIdLF^P\ngCa@@dkHFBVyH\ngC`HABQz`H\ngCaDL@b^BTt`P\neMJDbDfP`\ngC`D@DXHRUdB\ngGQhHl@cIHTmPFBMy@\ngJXHD@aIUj@pHVOI@\ngGX@@eMUTA`Uc^P@\ngChDL@aABSM@XHKdp\ngOx@@drm\\@@A`plZp\ngJX`BDdru@P\neMC@thabHzB\ndaDD@@QInXjZjh@`\ndid@@LdbLTifjj`B\ndeTH@@RUYTYY`@@aKChSFxYyE@\ndaD@P@bNbDfUzZ@B@C@`pnxbT\ndeTHPBBHfHrJJIHlLDDP@P\ndaD@`@bDeeVz`@@B\ngFp`@TizJjhCCSGbU@\ndidD@@yIYVXV@H@CBhpf{dB\neFJHbHpP\ngO|@AFeVm]UTAaUcWrP\ngOy@FDiguie`LMj~ID\ndaD@`@bDfUjZ@B@CB`SJ{dL\ndifH@DAInUxV`@@CBdinGdD\ndaEH@HpDeeVz`@@B\ndeVD@AADfVuFVijh@phj[iy@`\ndifH@HAIYexZ@`@B\ndifH@JAJ[gxZB@@CBdJf{dB\ndifH@HAIYW[j@B@B\ngOx@@drm\\@@A`Qj~ID\ngOr@Ajti]qZY`H\ngF|@AbeJfuU@P\ndmN@@@rJJIQEneX@@@@B\ngJX`DBdru@XKGdP\ndid@`@qDeYWaf@@BH\\NABinGdP\ndifD@H@Tee]nh@H@H\ndeVD@LBTeegXV@HP@`\ndaF@@@RYWih@H@LJCBknP`\ndie@@@aJyV[f@B@B\ngGY@JDeUjpLDmrP\ngFt@AdigUjXCAF|Rp\neMBBHRZCAGe@\ngC`HADIKTAa`mrP\nfHcdA@\ngJX`HLdmU@P\ndaz`@@SFyIeYjf@LJAL[nQP\ngNtDLpDHHR[UjhB\ndiTH@@RgeXSaj@B@CAhJfx^P`\ndew@@@pldTTJVTLmP@P@XUaMt|`P\ndiUH@HPDiUWBxZVeh@`\ngNq`AVdlmUPFEfM_DD\ndaxL@@[deiZjh@pXHpf{dT\ngCaHLLQIZ`LLInQ@\ndedBPLinCDKpRUZvjZh@`\ngNplLPDSpPPdukUPFFE_H`\ngJPL@DSpPPdju@XXK\\TH\ndiDDpLH@bOA@aIiUZjh@`\neMIDBKpRYCqH\neMXIDf``\ngG]@DZDfuiPLEkrH\ngGY@JDf]j`LLl^R`\ngJX@@dlu@XZX|PP\ngNxHF@aJZzjPH\ndazD@LADeUffhHr`\ngGQHJLQIUjdCCBKbq@\ndaxD@@QIgUjj@LBrf{dD\ngNy@BDf]jj@phbuxbp\neMXIDfP`\ndiGL@DK`hTfV^ii`B\ndmvD@E@dfYwVzB@j@C@PpjxYT\ndmvL`BaL@HrRRjIJUVjjh@`\ndaFH@NAIeVf`@`@phLInyB@\ndiGD@JxPQIeUZfX@`\ngCi@DDej@ppfyD\ngCa@@dsPFBV@\ngCd@Adej@ppVyH\ndiFD`Li`BDenvjZ`CA`aLxP\neMC@HoABDe`pQyP\ndiDDpLH@bOA@aIkUZjh@`\nfHdpAa@\nfHa@A@\ngFy@JDigVjhCCSGbU@\ndaF@`L@HRe]pjjj@LFBDJfyG@\ngChHL@aJZ`LLHnS@\ndaFD@DCdfVRiji`CCDinQ`\ndaGH@DK`R[e[fii@LLPfyE@\ngOtHLPDYHhckSM@XXI|a@\ngNqhHl@cIICej`H\ngNphJqDIJmSLHf\ngJQ@@dju@XZK\\a@\neMABHYAIhH\ngJP`@TeVhCAQ\\VH\ngCahHlOBNtAaAqK@\ngGQDLHbqBRwUPFEDQoI`\ngJT@ADjzhCAQ\\VH\ndazL@BANR[UZj`CBdrf{dD\ngJX`LHe[U@P\ngNx`LDdssUPFFq_IP\ndaz@@@ReUjj`CC`aLJnyC@\ngNx`LFdjmUPFCDQkyL\ngChHHOAIj`H\ndeUH@JdDin]xZB@`@`\ndieH@BDDfY}n``H@LJpjX^P@\ndaE@@@yIe^f`@`@pHLKnHe@\ngOq@@dlvKUTAaeWqP`\ndid@p@bBbAbDfYun``H@H\ngOy@FDiguie`LMc^IL\ndaDh@DInAIf]nZiX@p`nIe@\ndigH`LH^@HRf_ljfYh@`\ndie@@@EJ[W[j@B@CBlJfGb@`\ndaFH@NAIe^f`@`@pILknHA@\ndieH@BDDfY}n``H@LBpj[b@H\ndeUD`JXiCDrJJJXlMKUL@P\ndaED`LJDCpRjw[fjj@LLinxfD\ndaDH@@RYUih@H@LBCB{bHp\ndaDH@@RVU[f@@@LB`j[bYp\ndmuD@FDDR[f[eV`b@@H\ndaDD@@yIe^fZVX@pSJxbD\ndcN@`LCDRUgeUvjh@@@`\ndk^@@@RYWYVftx@H@@@H\ngO|HEfHaIeZx@@B\ndeT`@@pjrQQIFTpDEP@P\ndif`@@pj[IEEEZxBH`@pPfy@`\ndid@p@bFbAbDfUfn`BH@H\ndaF@@@RYUih@H@LBCB{bHp\ndmuD@JDBRY^YEZjif@H\ndifH@AAJY}rjY[`bf\ndaE@@@yIe^f`@`@pKBknHB@\ndaxD@@QIeejZ@LLJfyG@\ngC`HAbIMLA``nS@\ngJQHH@aJmj@ppQyL\ndaxL`HS@|Dj}fjX@`\nded@@DiUWeiZCHTZ\\IBDpjXYyG@\ngGU@CPdsmJA`e^S@\ndeU@@@aJWeQfZ@@BHlNSJ[agdP\ndmu@pFTH`h`XaIf[oi`bH`@`\neMPBchLF^P\ngGU@DPdrmTAaecrT\ngN}@DZDfVZj@prqxjp\ngGUHEhOAJmZhCAF|pV@\ndmND@DBdfV]RZUZf@@@LBSagdJ\ndev@@@RfV^nFP@@@@LFPj[ayD`\ndcnH@HCHhheEbprl@@A@@P\ngFu@LPeLftu@XYF|f@\ndiT`@@rnRfUjEnBA``B\ndmLD@@IJ]YVDeZj@B@B\ndcnH@DAIYegzUujAHH@H\ndmL@@DjYUVGi@@@`@LNpjxYWdH\ndcn@`N@HRYeevz]`@@`@B\ndcn`@@rfeJY{]kadHHZR@H\ndevH`LX@aJWY\\HYiZZd@`\ngC`HADIKTAaaMrH\ngNpDADXHRV^jhB\ngJPXHlPDQztAxlP\ngNqHLHaIYzj`H\ngGQDJH`qBSKMPdX\ngNq`@jdvsTpFBsyD\ngGQHJHaIYfdRL\ndaFH@NAIe^f`@`@pXDpjx\neMaDBKpRVB\ngOx@@eJqmUTA`xlZ~P@\neFA@H`bLFE\\`\ngKP@Di\\YZ@phbq@\ngJPhIaxIVmPFDODD\ndcLL`NWPbDfUuZf`@jX@LNALJat\ngN|HEb@aIevj`H\ndaE@@@aJyUnx@@@`\ngJQ`@bdru@XS\\a@\ndayL@DhByIeuji@LBSBkdL\ngJY@DDfzhCCSGbB@\ndmVD@JADf^Uvjjh@`\ngJXdIbHaABRuJA@\ndiDDPNDHc@aIUVfjXHb`\ndefHPFDHc@aIUUiji`bJ\ndiEL@DpByIf^ZjX@`\ngNy`LETeUZZDs@\ngNx`BFdskUHFBVxcP\ndmLH@@Rge]aNFh@J`@`\ndeT@@DjU_k``b`@pFDpjXYyG@\ndmNH`Jd@aJYW_JxZA@j@CB`IaWdH\ndmM@@@[IEDhhZXU@@B@@H\nfHdxA@\neM`AIxLI@\ndeVD@DCDenUFVh@@@pZLinGdR\ndeVD@D@dfVuFVh@@@`\ndif@@@RfU~F``@@pYLJf{b@H\ngOx`FDdrikUTA@\ndeVH@IAJYW~F``H@LFSBinyD`\ndig@@@aDiyWaZ@@B@h\ndco@`LK`BLdTTRRITntpTA@Pe@\ngOx@@drm\\@@A`Pl~Ht\ndaE@`LH@aIYZfijd@`\ngOu@LPeLimMTHf\ngJP`@dfvhCCKD\ngKP@Di\\Vi@pLVOH@\ndiVH@BAIfUInFjjZ@H\ngOpH@EILkW@@@P\ngJPDADFHRYj`LBHcrX\ngJPHAbIKUPFBDyeb\ngNthLXaxYIHTuTA@\ngNxdMVLP~BRkUS@P\ngCd@AH}PFBVyH\ngCd@ADkV@pdxe`\ngGU@MPdllrA@\ngJPLADHHLPdwSBJ`\ndeVH@IAIe]ZZ@Bh@LAALJnFP\ndidD@@iJ[gxZB@@CBdJnGdL\ndaFD@FCdig|jfV`bf\ndaE@@@YIeZn`B@@piLiny@@\ndaEH`Dq`BDfUjyjfPC@`SNyE@\ndieH`Dq`BDfUfnZii@H\ndaFH@BAIf]n``@@phLJfyG@\ngFxhMD@cIHXZmTA`c^P@\ndaFH@BAIf]n``@@phLInyE@\ndifD@N@TfUvfZVZ@H\ndeTL`HS@BLddlRPrm@@@FEYS\\OHd\ndmtLPHS@BEBLddlRVFUh@H@H\neMPBchLD^T\ngJPDADFHRYfaIXXH|f@\ndkOL@Dhpg\\bbTTLVZjjj@H\ndcLL@@gTfYe]aZYjf@H\ngNp`@df]Zi@pvMyF\ndmtHPBBHfHRYeUXXHHh@LFCJxYyB`\ndaE@`LX@aIYZfjZd@`\ngGTHE`DILkU@XDKWdH\ndeWD@Li`QImenEjZi@H\ndcOH@DWPRYyWQej@BP@`\ndg}@@@mJYeU|]Tz@@@H@B\ndcND@LADf^YZUZ`HH@H\ndcnH`FDHaIe[gkev@@`@@H\neMbDBDfp|`\ndcMD@DpBRYgmUujh@@@`\ndmuh@DJaePRUeYxZ`@h@H\ndcNd@DJadMrIJIJE\\MP@U@A@\ngChHH@aJz`LDEqS@\ndeVH`BDHaIf]vzB@h@H\ndeU@@@eIYVvG`BL@H\ndcM@pEtIAICICHiCDedLuP@R@D\ndkmH@JTDeVVutvjh@@@`\ndmw@`Ds`BDf^YyUjB@@B\ngGYHMQHIJmT`XJKbq@\neFhHcA`d\nfoA@R@HHqH@QddebRbrPeV\\m@D@@@A@\nfoA@R@HHqp@QddebbrRTeV\\mA@@@@A@\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A`sEFBT{bMF@\ndaE@@@yIe^f`@`@pILJnHG@\ndmuD`LVD@HrREQIXYV`@`@`\nf`i@@@LdbbbTRVHeZ][uHAD@D@@P\nf`i@@@LdbbRRlRSI\\D{qAHT@D@@XJpRgIZMYwnHPH\neMCBthabHzB\ndk\\H@@RfU}WJxZA@fXBIh\nf`iQ@@AR@drnrjmFJt{t@Du@@@@XR@cAJRM[wHN@\ndmM@@@qJY{WJeVj@B@CCdrfzUy@`\nffc@H@@\\eYtRurJJIQPpjYQYLxkR\\m@qAUUUQ@A@\nfmo@H@@B}GKYkrJJJJJIY[EQJKIbmNlGhv`BH@Rjjj``@`\ndk|@@LdbbbRQKauS`@`@`@H\ndcND`La@BLddJTrRzmT@@@XMaMpkqIt\nfc\x7F@H@@\\ddoU{rJJIQQXsIYJIQYLxhpXcftCDP@EUUUA@A@\nfewAP@@Fbt^QQJJJIRI[RKYr`mA}eMVfjjjjjjjj@B\nfheP`@BJ@GHhhdhlhiVRxHuc^ZejjjYh@LNXIsQk^yAp\ndcmH@EtDie_[JxZA@f`@`\nfhy`a@APP@HtDYICDeLeLerVc^Bl@QP@D@A@\nfoQP@@@VRfYe]Z\\d[S`@@@H@@CCaFBUhsnHyX\ndco@@@PTfyVwiWV`BJD@`\ndig@@@aDkYWaZ@@@LJPj[nI@`\nfbmA``BLbCDubNqLxfQQQQJYRqZGdeVBfZfi``bX@B\ndg|L`HS@BLddlTRbLj]kP@@@@FGXpsiwrE@\nflm`@@@ITssJjnsdk^RFHP@@@@@@@D\nf`i@`@@DRYfyU]`mNmyi`@@B@@LN\\dhug^yCP\ndk\\B@@zSrJJIQPenWV`X`h@LLFUyfLX\nedZPK@@@FAEG@dnaec`X\\bbbbbbIbRbTrbJffW@fefUUssPSDQUUUUUUTT@A@\ndmvL`NaL@HrRRqQZUV``@@`\nfa{@a@K]@DNdLdTtbRLRbLfVuAJtFMVuUUUUURsU@AaxAJLxJRcVBgIZ|QA@\nfew@c@OS@DXB@rFRJQZQYFIQFSK[bcVSghzjjjjjjefj@B\nffsA`@@VkdTRTtRabrTRhqQoARUijjijjjj@CArLTxJRcN}GIZ|`d\nfa{@P@@VkwHhdiheCEdheKQbc^BdkSUUSUUTuP@P\ndmL@@DjYeVdU@@`@@LFpjFUxc\\\ndie@@@aJyexV@`@C@binxdB\ndk^D@IAdfYYwz]MjTHB@CBjE]ObYH\nf`ih`@LRt{pAISK[NzRbmV]UUPHEP@FCHDipWnHPX\nfnki`@DTxIPOMrJIQQKYQQIIEgIJSWIVjVZ`hJJb@B\nf`iQP@DX@IQoYEEDeEeBf\\uYwfjffjj`@`\ndetB@@kirQQIRyS]UUUPAaTXPsqDX\ndieH@BDDfYun``H@LLrny`DH\nfoAP@@@XRf^uu\\Tdij`@fXACU@\ndeUH@JDDinUzZBA@@pIBZ^Ip`\ndeUH@AdDimW[j@BP@pIBknId`\ndig@@@pldTRaifij`B\ndmN@@@rRJKQEneP`@@@CCdrfFUyG@\nfb}@B@@AFQQQJQIHqZIgEV\\FNZjjjjjjj@B\nflu`P@@`T[vQQQQQQQIR|EjKdm@DQ@pP@A@\nf`ip@@@V}dbbbbRrQirQmN@@@@a@@B\nfc\x7F``@D@wdTRrbfdRQfRdrvtxLRufmjjjjjjjjjj@CCjLTYpRmFl{pXiKUoQsWodB@\ndmtL@@x\\bbbTUZViVf@H\nfoA@`@@NRYWVUzLMYiY`@hAAcasAJRTYwLHyh\nffcA`@@EjdrnsLjomF^SGKRsP@@AT@@P\nfdy@P@@^CEIe]YVvhpufef@Bf`@H\ndmtL@@QTfyeQehBA@C@jXYxb\\\ndg\\B@@SSRYYYyVvhJA`@H\ndeUD@DpFRUVTYZZZPcJ\ndeVH@IAJYW~F``H@LJPj[nId`\ndk^@@@RfYU\\]Tzjjjj@LKBDpj[ae]L\ngJQHBLQIVi@`\ndieD`Dqa@HRYVZyjfX@`\ndaDH@@RYWih@H@LLrny`HP\ndg^D@LADf^YVyUj@`j@B\ndifH`FDHaIe[kh@b@B\ngGT@Adekj`LD[rX\ndaD`@@pjRfUi`HH@LH{fHS@\ndeTh@DiiAIYmQfj@@@H\ndeVD@NBTfUuifefX@`\ngGYHL`DIMlu@XHwbF@\ndaxD@@QIeYjZ@LBpf{dT\ndcNL@D@mRY^UyUj`@`@`\ndeVh@LKadDimY[j@B`@`\ndmuD@ITDR[e]xV`@d@LBJf{bHh\ndmuH@DpDf[mYUj`@@CAj[ae^Q`\ngOp@DjWkB@@LMc^ZI`\ndcNH@DCHheEDbnmPT@@F@hUMproHt\ndmuL@DHJUIeeTYZijT@`\ndeVH@IAIfu~Eh@H@LJpj[nQH\ndmuD@DpERYyWFVjjj@H\nfgAp@@@XEdbbTTrLiI`mFBBhea`@pYSdmFmrB@\ndiW@@@pdieZfxPHJH@`\ndiW@@@rdiefa[``hH@ppf{bHH\ndev`@@pjYJYejxY@bJH@pPYxc\\\nfgA@@@LdbbbTRoIBMjp@@@@@@FDlTYpTeZmrA`\ndk|H@@RfU{WJx]N`PJjH@`\ndew@@@rdifYj^DHJ``B\nfgAP@@@BrQQJESITXJQk@PT@A@@X\\IPRmFmrB@\ndg|L@@ildTRbrJQTJtEAEL@D\nfoQH@@@XhiJYmg^YpRcVBHJiXX@H\ngOy@LDeYMjj`H\ndet@@DjYUX^d@@@@CAbinF^Hf@\ndie@@@EIe[ih@J@CBdrnGd@\ndmNH@HCHhheDVzU`@@@@LFCJXYxgJ\ndeVD@LBTeegijfjd@`\ndk^HPNHHbXaIf^UvGS``B@@@`\ndclL@@GTf[VwiWV`BJH@pHjy^Q`\ndaEH@DHDfURijZ`CAF{bI`\ndg}H`LHPBDigUm\\h{ifd@H@LAABe]N~Pp\ndaED@LhDRY[Ifjf@H\ndev@PF@HdHrQQJEEPsTlmPA@\ngJPhLQDIKTpD\ngJPhHPDIUmHFDGDl\ngJXhCL@aJyf@`\ndo~L@M@iRYg^ufzB@jj`@pLLJnFUt{\\\neMACDXaIhH\nfjs`@@@ISLjmvj~JBtjp\\iKP@@@@@D@@A@\ndmtB`HSBCprRSFIJUZh@@@pinFUxfD\nfbm@P@@BBeIfYfUWybm^mEh@b@aF`@B\ndclL@@HTfYm]aWViB@`@ppiWfUv`\nf`qAP@@LDivQQQQQRk[`mFZBX`j`@H\nfoQPB@F\\@DYHheBeLdRdeV]Th@@D@@X\\@RfcV]qBI@\nfhypB@F\\T@HrQQJEJIIXeIZ|FiPBB@`@B\ndg\x7FH@LiPRUYYWESnj@@@@@`\nfdeIb@LLDhwh`BLdTrbRJbTOARTxM@PMUUE@AaHBJRu[pX|`x\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@XLyhu`qxaW`\ngOx`FJdlm[MLAyib\ndk^D@NBdef^ukmMfi@B@B\nfb}@P@@HM{HihheDeEdbIVk^BgKP@@PT@D@A@\ndidL@@RdfVwaZii@LHKfMp`\nf`i`@@@ISLrj\x7FSdkZ\\@@@DD@@D\nfhyP@@@VrQQQQIYHrgIFtx@@@BJ@@B\ndg}H@DxDfVyVyO[Z`@@@@H\ndcl@@DjYU_egX@@@@@p[J[agaHRz\ndcl@@DjYU_egX@@@@@pYLJngaLJz\nfdyH@@@P]yJVYU_Ud[Uf`@@Bj@D@T\ndeVH@DAIgeQej@@@LJSFx^IT`\nfnsPR@FJtZw`AFRJQQEJIVYQIXYrUVuUUSLt@E@@XN@cAJ\\TXJ\\ejt\ndg}@@@aJVYU^Svv`@@@@`KCj[ae]yaGX\ndazJ`JaLK`BLddNRuR@P\ndmvh@HJfTLbbbdSZZfji@H\ndaDH@@RVU[f@@@LL`fyfUp\nfhyA`@@HBdrrkN~RdcN|uA@@AP@A@\nfdu@@@DjYee]}faRlGtP@@@@@@@@puS`eZMYw`qyC@\nflm@@@LdbbbbbVNVxhUc^bd@@H@@@@@CCUNRUhsoAbgdF@\nfjcA@@@YDhhhhdeElcqVgVcdm@@@@D@@@@P\nflm@@@DjYeeo\x7FyHQm^bd@@@B@@@@CCUNRUjsoAbgdL@\nfduA`@@TCdbbTVbfbLIPQmN}F``@@BH@@H\ndeT`@@aIRge_aV@B@B\ndif@@@RfU~F``@@pxDpj[nPH\ndmND@BA\\bbbTUZ^EjVih@pSayfTp\ngCaHLHaIYaIXHSbV@\ndcLD@@uIfYoXVfZi`CANWbUH\ndmtD@@eIfUTUjBB@@pDHJfxYxfJ\ngNy@LDeVjj@phQkxi`\ndg^F@D@nt{RUefuFVjjjj@LMSJ[ae]N~Q@\ndae@`LH@aJYTj[jZjPCC@RnHw@\nf`ipB@L\\D@HrQQPsISIDXkSoUL`@@P@A@\ndk]D@BXDR[ee]ntvf``H@H\ndk^D@M@dfYmUXUMjP`R@B\nfgA@`@@VRfU{WqS`mFhD@@h@@`\nfoQA@@@ISJkZ~J\\eYu@aA@P@A@\nfhyh@@@XIQVRJJIIZEKLyISo@TEP@P`@P\nfdeI`@LZCDDeYHhhhlhblbTM[pZjjhDBh@B\nf`iH`@LR]x@diemg]IQVkNjjhDBh@CCdBTxHwnHQh\nfHahAa@\nf`q@`@@^RYWUe^cKN`@f@B@DNVB`HpRbmFm{bNB@\ngGP@DiVV`hipJqoDH\ndeTH@@RYWVf`@j@CC`SBhYyG@\ndmu@@@QInUwaZ@BP@pxDJfz^Ph\nda{@`Dp`BDfUvjXHj`\nfoApP@DXxBQgYEDhihUCPVkMMUUTp@X\\hpRcV]qGM@\ndmM@@@{IEEEEZzU@B@@@LBHYWbTp\ndcmH@LXDee[UnWZ@@@@@`\nfoAQ@@NB@drnkJtYYt@Dp@@BGJ\nf`qQ`@DXAKrSLj}klyYsUUH@T@A@\ndclL@@YTfYetngV`hD`@pJag^Ic@\ngNx`LDdvkUHFAqkyD\ndif@@@RYWZZ@BP@piLJnx`B\nfhi`C@I@dDRFICHiCDeMhdaJ|Fj@H`@@@H\nfhia@@I@RfuuYWYqwj@BX@H@PEP\nf`qh@@@XIQfRJJKZJEJgG^ejj`@`@LADYIVcV]rG`\ngC``AdeZ@pdxe`\ndg|d@BE[CDeenUyT{Zj`PH@H\ndk^h@DX]LDf[e]xUvj`PJ@CB`riOdP\nfoAh`@BBUYpLIKW\\kleFluU@`T@A@\ndmu@@@EIYWYnX@J`@pxLJfe^Q@\ndaE@@@aJyUnX@@@pHj[nIF@\ndaDH`NCDRYWih@H@LBALkbEp\nfdyqP@DXxBUoQrJIQSQYQPtDYsSUUUML@D\ndg~H`NX@aJU{YWBNzVZ@B@B\ndaE@@@aJyUnX@@@pPjxTXw@\ndeVD@J@TinUzZBB@@`\ndcMD@JDErQSQIE]MA@e@A@\nfhipb@LBCA@@cIIBhhddmmNmyZ`@@B@@H\ngOx@@eLmXD@AaUcV\nfoQ@@@LdbbbRQrYHRkN@@`@@@@LIXIPRmFl{dN@\nfoI`@@@IRlrj|DTxjqgUP@@AP@A`jBFBdkQkNy@@\nfdu@@@DjYee]}faRlGtP@@@@@@@@pubgEZMYw`qy@P\nfmoA`@@HWdTrTTtbRLrTfVrk^CdhymUUUUUUUUU@AauFBTYrRmFl{pXyKUoQsV\ndifH@AAIfU[hBA@CB`Jf{bXH\nfoAP@@@TRfyWm^RlzP``@@@CBQJLdkQkNxaG@\ndmuD`IVD@HrRFIKKaV@BP@`\ndeVH@DAIgeQej@@@LBSF{fTL`\nfde@`@@DRYg[VU~BLxLViZjB@X@CCfBTyiwnDeXLP\nffsA`@@HjdkJvmk\\oAZMxJRm@AUUUUEP@XNISdeZMYwhirWbHU@\nfa{A`@@HzdrmkZvmrrUYtTeZuP@UUUUQT@D\nfoAQ@@KN@eLrj\x7Fbthu@@@D`@D\nfhy@b@K^@DISLsJntyIq`t@PPID@@XR@rRmF]xOHB@\nf`ia@@A@RYV{UVgEZ]z@Hf`@@@H\nf`yp@@@PudbTRbRbQqRVeNmzZ`@`@`@B\ndknD`La@BLddJTRVtuj``@@`\ndmuL@DpFEIeY~nZifh@pILe^Qp\nf`i@`@@VRYfYU]`eNMyh@`AB@@LNTyKQg^yAP\ndcnD`La@BLddLTJULnkU@A@A@\nfoQ`@@@ISLrkiJRMiu@A@DP@A@\nfoQP@@@LRfV]uZ\\djsjjfh@`@CAPHHIQfcV]r@`\nfoQPB@HH@DYHddheBe``iV]RuJ@E@@P\ndknD@FBTieenGZB`h`@`\ndieD`JXaCDRYgvzejX@pHLi`\ndcND`La@BLddJbRrzmPP@@XMS\\LkqLt\nfoAQ`@EZ@JVQQQQQIWLTZsT`tAP@D\ndcN@@@Rfye~f`Hb`@pzfxYW^HB@\ndg^D@DCdefVUUMjBHb@B\ndg^H@LAJUyfUSjhBH`@`\ndif@pDBHjHFHrJIQEn`HH@H\ndid`@@pjrQQIFf@`h@LDx^XaL\ndcN`@@pjYJYe}k`Hbj@B\ndid@p@qBqAqDfYun``H@H\ndeTL@@jTef_xVB@`@phj[iyD@\nfoAp@@@P\\eKLjorMjsP@@A@B@KBQJLxJRmNyBp\ndeT`@@pjrQQQUMpEAP@XDUCOHX\ndmLh@DkeAIYe]neZhDB@CCBF^HD@\ndk\\d@Dki@|bbTRQR[aejeZf`B\ndeu@PLX@bPaJWY\\HYiZVh@`\ngJ]@EbDfVdCqX`\ndg}@@@aJnYU^Svz`@@@@CARinFUt{yD@\ndcML@DpFEIeY{kfjYj`B\nfoAQ@@KN@eLrj~bthu@@@E@@D\nfoA`@@@ILkjrmFV]@AL@@@ar`\ndaFD@JCdefZyiZ`B\ndclD@@EJY}erevfVfiBJlFpje]xbL\nfoA@`@@VRfum[V\\Uj`@@JP@B\nfoA@@@DjU][VgKNBAJ@@@PiXZ`cAJLdkQk\\`x\ndaFH@HAIYUnh@@@phHJfxf\\\ndeV@@@rRJFICMPD@@XLfTwCrI@\ndk]@`FD@aJY}e\\kSif`@`@`\nf`qQ@@DX@drlrj~gV|uUUUUP@P\ndg}@@@aJVYU^Svv`@@@@`K@Z[ae]obDX\ndmwD@LxPQIeVvUZjZd@`\ndg\x7FH`NW[@HRfum]XYV`BFiH@pXLIewbHX\ndk^H`Lt@aJWYW\\JUiX@J`@pxD[ad~Q@\ndieH@JxLbTTQkfej`CAFGbPP\ndifH@AAJY}rjYY`bj\nfhiA`@@Hddjrm|jIW`mPAD@@@A`kEFBTZsoAyB@\nfgA`@@@ISLrotyHvk@@@@@@@XLYIVcVy`gA@\nf`q@`@@HRUfYU_Sk^Zh@@@@@LELxJRmFl{wDPp\nfoQAB@E@BDiegUteARlz`RB@H@@`\ngGX`JDdjmVA@\ndmtL@@RTeVUaUj@H@C@jXUydYH\ngJX`LDdju@P\nfjs@@@LdbbbbbbfIQxhSiFmGIP@@@@H@@@@LM\\dkQk^bgI^PB\nffkA@@@YDhhhhdeEmE^JuztPiKV`@@@@@@@@@`\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@QE@D@D\nffsA`@@VkdTRTtRabrTRhqQoArUijjjjjfj@B\ndmM@@@iJYewJEYB`R@CBbinWbCH\nfb}H@@@TMYJYewyUWEAJ]yNYB`RZ`B@A@U@\ndiTH@@RfU|kahDB@C@biaxb\\\nf`iQ@@L\\@dmKZzhiJt{sUTu@D@@P\ndg\x7FH@DWPRUe[mzSmh@ajH@`\ndiW@@@rdiefa[``hH@pQnybDH\ndcm@@@sIEDeBeSKhD@@@@XYpkrdiit\ndieH`HHPBLdRbQrjYi`B\ndklF@@pUttiinwZZjjjh@`\nfbu`R@@zM[pHcHhheDeDeNdpTcPDQSTuQ@A`HFJRlxJ^Hcd\nfde@P@@BUYIfYfVwXKWgQZ@H``b@@H\nflu@P@@BBeIfYfWgvJtztV`BH@dh@@pypVcVbgdO@\ndk\\B@@HSRYfu}aWViB@h@LJKiT~QP\nf`iA@@@IKLl~krRmN|p@@@@@@D\ndmM@@@eJYYvfEP@@`@B\ndeUH@LXDeYgXZjYX@`\ndefJ`JaLFP|LddjRcUTpA`rXUMH\nfbc@@@LdbbbbbbejwMB]Hu`ir@@@@@@@@@FFnBehuoAbgOHJ@\nfdm@@@LdbbbbbfjSCBUIuoAb@@@@AP@`A@\ndo|D@@eIfUwU[hBAif@siXz\ndklD@@SHihdhYNEh@Jh@LFPjWSxgB\nfb}A@@@YDhhhhhdhb^ZMyrXyh@@@@@@@@H\nflmA@@@ILroJ}jQ`iV]EKPPA@@D@@D\ndk~H@NAJUmmRkatzVd@J@B\nfgAa@@N@Re[UUIPTcVijeif`@`\ndcNL@M@iRYg^vzB@j`@pdLJnFUt\ndmtL@@SdfVUyUjA@@B\ngFp@DiTvVhC@qX|Ph\ndif@@@rRJEKaj@@@LBSF{fEP`\nfoAp@@@P\\eKLjorMjsP@@A@B@K@QJLyIVg\\PJp\ndk]D@HDMrJJJJHiaTx@HB@@H\ndeTH`NBHRYWVf`@j@CB`SJgbDH\ngGY@DDfUj`LLc^S@\ndknJ@CCNgTieY_hZjjjx@`\nfhiAP@@XyKRTrlovmA^CUUUP@P@FAhDipTmFl{p^HPp\ndeVH@BAIemQfk@@@LFbfxYy@@\nfhyp@@@NBeSMrnjpRkF|D@@@Q@@A`kENBejsoA@\nfleq@@JBBAIYe_e]nR]z``R@Bh@PyP\ndclD@@{HhheEBtkl@D@@@XTGCJ|sFt\ngFx@@eRqUU@P\ngFx@@eSQUU@P\nfoAQ`@DX@pRSJs|kSegMTs@A@@X\\QaVcV]rG@\ndk^L@DBmRYVuvfeVj@Bh@H\ngNs@IcPdmmMHD\nfoAqb@BTYIS`RBSLnmnsakTmTuUP@P\ndaEH@DHDfYVyje`CAJ{bXp\ndieD@DHFRYf^EjiX@`\nf`q@R@HHpP@QddarbbTQtYwej`@@@@B\ndeTL@@J\\bbbRKBuKS@FBUwDq`\ndcLDPBtHbXcHhhddbppPQR@D\ndid@@DjUZnBBH@LBinGfPf@\ngOp`@tiguif`LEksHl\ndaD@P@qBbDfYvzB@@B\ndk\\H@@rIJJIQDYtz`@@@@H\nfgA@@@LdbbbTVKIBMjp@@@@@@FDlTYrRmFmr@`\ndmNH@BAJ]YVDeZj@B@B\ndk~H@LAJYWmRkatzA@@H@B\nfoQh@@@\\UYvRJJJJsITyKQk@A@PtD@D\ndcmD@DpFRYUmRi]Zijj`CAlxYW^P`\ndg}D@DpNrJJIIPiDqvuTuUT@P\nfgAP@@@\\RfYe_irQmV@@@@@@@pxQ`eZM[dI@\ndctDXJXIAICi@YAYCYCHiMEHyUMUPA@\nfjc@`@@VrJIJZIPqYIJcEF|ENVfjjjjjj`@p|cENBdkQkN}EN^HBT\ndieH@BxDfYUa``P@LBCJGbMp\ndg|H`BBHRYe^uXSnBB@@@@pxLhYT~Xvv\ndaE@@@yIeVf`@`@pHLKnHc@\nffk@`@@LrJJJJHsIIPi\\dkWhaRVmPTP@@@B@@A@\nffk@@@DjYee\x7F^uyHQmNCDmP@@@@@@@@@B\nf`q`@@@YIEBedhdnB]zh@J@@@@`\nfhy@`@@\\RYee~uYrVoAZA``@H@@pyPTmFm{fLNB\ndid@@DkYWaz@@@LF`j[ayB@\nfduP@@@^RiggmUvBdjwgAjjfABJh@B\ndcLDpITJsjsZqIfVYXXBHZ@C@`y]xfB\nfhiA@@@ILkkLktYxL@DtD@@H\\lM@Q`eEZMYwnHxD\nfleA@@@ILklrsoQdTp@SUA@@BGJ\ndaF@@@RYWih@H@LBALkbEp\nfdyQ@@@qAdTTRQTRVTYrshBA`@f@DNT\ndaF@@@RYWih@H@LBCBkbIp\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@X^qS`iJtZsoAbgH\nfhya@@K@rQQQQIYHrgIFtziAhEJh@B\ndmvD@DCDeUeYUj`@@B\ndmL@@DjUgZFUBBbb@LISBinFUyD@\ndmvH`Nd@aIe]Zf`@i`@piLJex`\\\ndeTDPDpHb@cHiCDdLrp@@A@\ndmvD@JBTin_^F``J@C@dIexe\\\ndaE@@@aJmUnjjh@pYLJf{dP\nfl}A@@@IRlrjkoAENJl[tTuP@@@@T@@D\ndknL@LACRYVuvUZh@J@B\nfhyA`@@B|dsLro~pRkF\\t@P@EP@A@\ndk\\B@@z]rJJIQPqnTv`XbH@H\nflu@P@@\\e{HhheEEcDef\\TZJV`Xb@`H@@pebRkN|FJ^PD\ndaGH@LJ`rQQRyULs@D\ndcnD@B@TfYm]aWViB@`@`\ndcn`@@rawIEDhiUTkhPUCD@XDc\\oHt\nfdei`@LJLzHIZrQQQQIJJkDiYpXuUUTBAP@D\nfhypB@M^B@HRfYU[wDYUg^h@@HF``@`\ndmtL`HS@BLddlRRFUh@H@LJqne^QP\nf`qAP@@\\dYvQQQJJDiQgEZZAbBf`@H\nfj}@P@@\\]eIfVWyU^YrV`iZA``HHZ@@H\nfc\x7F@P@@H]oHidhiiDhjdeIemjpXekM[UUUUUUUUUT@F@tXIQgIJtZsoAbdmV}GM^p\nfj}@p@@BMGI\\bbbbbbbtQqxkWgIZ@Hb@dj@@H\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@XLxhu`qxcW`\nf`i`@@@ITrlnzpRkN|DA@@@@@F@lTyKQk^yaBg@\ndmtDpFTH`h`XaIf[oi`bH`@phBXYyB`\nfhiP@@@ARYe_YWYqwhBBh@H@@`\ndifH@DAIVUxU`@@C@biny@`\ndifH`Lx@cIEDcBjiYh@phLJayB@\nfoAaB@LJ@DYHhhmMDbQegULpLA@@P\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@AaKAJRMYw`|ah\nfhiPP@DX@IWdfYVU_V\\MYjiijZhDKT\ndk\\D@@[HhhiDjbY]ZBhB`@`\ndeu@@@[IEDhcSCH@@@@FB]OBPjD\ndeVD@FADfygFV``@@pjfxYyB@\ndeT@@LdbRTm\\DDT@FCIc\\L|RJ@\ndidD@@iIYmxVfZPB\ndidD@@iIUexVZZPaF\nf`qA@@@ISZzljscoT@Dp@@B@kCRLDhpTmFl{dO@\ndk]H@NTDimYuX]N`B@@@B\nfhip@@@LCdbbTTrLvUIBt@DAEU@@FAdTYpTeFl{p^Pt\ndmuD@DTArJJJFHUZijX@`\ndaE@`LH@aJ[Unh@@@pHD[nQP\ndie@@@aJVuxZ`@@CAlJfx^HD@\ngG]@DZDfUj`LDkqX`\ndet`@@raRfVZi[``jB@H\nfhy@P@@BTGHhhhhhebfBtzwf`BH@J@@H\ndiU@@@aJVupnFZiV@H\nf`ia`@N@LyIfV]UV\\eiwf`XHjh`@`\nfhyaP@E@EIwlbbbbbRjRXhuoAZdF`Jh`@`\ndiDB`HSBCpRjuVji@H\ngGX`BJdsmLIgAZ|b@\nda{D@DJ`yIeUjZBBh\ngGT`EaTf]j`LD[qK@\ndknL`LaM@HrRRqQHjUV`HJ@B\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\ngChHLLQIZ`LDEqS@\ndmu`@@pjY\\dTTRak`Hbh@H\ndmt@@DjUiZdHJb@CAd[ae^IA@\nfdyhP@DTxIPCAcdTRbbURTRYrRfjVZjjh@LIHEKUg^CD\ndeUH@JXDeVVxVYjdHQ`\nffsA@@@YEDeMDhTihdZLUiwhyZjjjjjjj`@pbcAJ\\EIVcV\\FJ\\uy@h\nfoQP@@@\\rQQQQQKFdeVLx@B@@@@@`\nfj}P@@@LRfVVWV}qF]GIYB`B@@@@ABE@\ngGPP@cTfyj`LInYF`\ndk]D`LFD@HrRPjJIEatujB`H@LJrnE^YNf\ndg|D@@WIEEEDYcPsmAQDT`A@\ndif@@@Rfufz`@`@piLIax`\\\nflepr@M^SAFB\\\\CprRSEQIZJKZR`qZjjjfVh@LIDhpTeVBgdL@\nfjc@`@@LrJJJJHpiQKKdeZ]{IZ`h`@H@P@@`\nfhe@@@LdbbbbbbcxhQiNlD@@@@H@@@pepTeZMYp^P|\nfHbXAy@\nfoAA@@@ILkjrmFV]@AL@@@arpTAFBTUhug\\QpP\nfj}@p@@\\dYI\\bbbTTVaaRaYIUhyZAbJ@BJ@@H\ndcnH@EAIfV][iuhFAH@LJiag^Ib`\nffs`@@@YIDmeEEEDhlZL]DI\\ujjZ@HH@d@@p}AFBTuYw`qSdmP\nfhyH@@@\\EKIEEEEEMUfRU[pYBb`@B@@H\nfjsA`@@TdeJsZvoZpPsfk^CdmA@P@@@@@@D\nfbc@@@DjYU_eUfByKQ`icd@@B`@@@@@H\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@DT`D@D\nfdyp`@FRbABS\\rornIW`mA@d@D@HBh\ndmLd@Dqe@TfUeZzUZjUj@LLrUyB@\ndmM@PBx@c@aJYg\\jeZdHB@B\ndaDHPH@HHHRme[fii@H\ndk^@@@RYeg]ntxB@`@@H\ndcmD@DHERYYUZz]Z``R@CBdHYwdL\ndigH@DJ`RYYrYjfh@`\ndigH@LHPRfU~F``@@`\ngC`HAbIMTA@\ngC`DAbZHRVhCCB[dP\ngCahHlNbNlA`a`\ngChHL@aIZ`LBHl\neMFIDRM``';
carcp.m2_0 = 'fHbTA@\nfH`pA@\nfHfXA@\neO`BNZ``\ngKXHL@aJWFj`LBEcrP\ngBP`Adibj`H\ngCh`LDdsPFDWI`\neMBBHRZCAKd`\neFhHcAaWH@\ngC`DADZHRVhB\neMBCDRZCAKd`\ngGP`@dfuiaMX[F|b@\ngCa@@dkHFBbyL\neFABH`bLD\neMDARZCAgd@\ngJQhHl@cIHUhCBGd@\ngJXDB@bABUmTA`Pl^R@\ngJXHD@aIYj@ppqyH\ngGX`DJdsmRA`enP`\neMhDRZCAKd`\neFDBcAaWH@\ngCh`LHe]PD\ngOx@@drm]UTAaqEcV\ngJPH@DISUPFABqyH\ngJX`DBdru@XI[dH\nfHapA@\ngC`DAb[DRVhB\ndaDD@@yIe^fZVX@psBkdH\ndidH@@RUe^Fh@@@pxHPj[nPH\ndig@@@x\\dTRQi`HF@akBdpj[dB\ndaE@@@yIe^f`@`@piLJny@@\ndaEH@HxDeeVz`@@B\ndeUL@DpFGHhdhYWMTuPA@\ngOx@@drm\\@@A`Qb~IT\ngOx@@drm\\@@A`Qc^IL\ngOx@@drm\\@@A`Pm^Hl\ndaD`@@pjRfUi`HH@LDKnHc@\ndaGH@DK`R[e[fiZ@LLQnyE@\ndmN@@@RYVuiiV@@@@@`\ngOq@@eL~mLlAal[qI`\ndid@p@bBbFbDfYoa`b@@H\neMBCDRZCAGe@\ndifH@NAIYVXZ@H@CA`cBX^Qp\ngFt@AdiWEihCAJ|TH\ngCd@ADkj@ppbyL\ngCaHLLQIZ`LDEqS@\ndetH@@RgYVDFZh@H@H\ndiTH@@RgeXSaj@B@B\ngGQ@@eJuRA`Xm^P`\ndiDB@@[aRVeZjj@H\ngGPdMQbGpRUZi@`\neFA@HoBJD\ndaxBPHQn@HhHrRPzKThA@\ngNqhHl@cIHUEj`LLZ~P@\ngGT@ATiVj`LJHl^R`\neMPBcTH\ngJY@BDfVhCAK\\a@\ngGX`JDdsmTA`l^R`\ngGY@BDf^j`LBHmqF`\ngGT`EaTf]jPLDmrD\ngGQHJLQIUjdB\ndefD@FADf]ZZjj@LJJnF^Q`\ngCi@LDeZ@pTwH`\ndaF`@@pjYJYfn@b@@pPfyG@\ngNt`E`tf]Zi@pVODj\ndiFB@BAFEInuZjd@pILJnQp\ngCiHEAxIVtAaMqA@\ngGU@DPdjmTAaekqP`\ngNt`E`tf]Zj@pJM_I`\ngNxhMV@aI[ji`LBHmrL\ngChhMDOBNtA`enP@\ngC``AdeY@pbyH\ndaDH@@RVU[f@@@LJcB[nQP\ndaE@@@aJyUnh@@@pXHpj[d\\\ndaFH@NAIe^f`@`@piLJny@@\ngFxHL@aJYujj@pHboEb\ndaF@@@RYe[hB@@LJ@j[nQ`\ndaFH@HAIYUnh@@@pXHpj[d\\\neFPBca@\ndaE@@@aJyUnX@@@`\ngCe@E`dkPFBbyL\nfH`XA@\ngGPBADZPLaYAIZjhB\ngJPDADFHRUj`H\ngCd@ADiZDE@\ngJY@DDeZhCCSGbB@\ngGX`LDdsmTA`m^P`\neMBBHRYCAKd`\ndkNF@BAIWSR[YVYjjfX@`\neF`BJFE\\`\nda{@`Dq`BLbbbKUR@P\ndaDD@@yIe^fZVX@pSBxbT\ndaD@@DjWZXHB@C@dpnxdL\ndmNH@HCHhheDVzU`@@@@H\ngFy@LDidviXB\ndmv@`LCDRUVUeZj@@@H\ngNxDLLQxbRjuU@P\ndaDH@@RYVih@H@LBrf{b@`\ndaG@`LK`BDimVz`@@B\ndeUD@DhBRY[TYZ`@@B\ndeUD@DdBRY[TYZ`@@B\ndaEH@LXDeYVzje`C@`RnxdD\neMBCDRYCAGe@\ngGPXHlQxIU[U@XR|VH\nfH`TA@\neFJHqHpP\ndaxD@@QIeyjZBBlLpnyC@\ngGP@Di^VaHxTQF|f@\ndctH@@RgUUZYfY@dRVQX\neFBBDcA@\neMBBHRYCAGe@\ngJQHBHaInZ@`\ngGUHEhOAJmZhB\ndmLH@@RgVUaIVj`@`@`\ngOx@@eR}XP@AaXl[rL\ndcnH@JAIYe[yYu`@@@@H\ndev@@@RfV^nFP@@@@LFPj[iy@`\ndmM@@@WIEDhlZxY@@@`@H\ngOx`DBdwQkUTA@\ndclD@@UIfV][iuhFAH@LJiag^Q`\ngJPDADXHRVj`H\ngJPDAbGDRUj`H\ngJQHBLQIVj@`\ngNt`Bpdf{Zj@pJqoHp\neMdDhzB\nfHehA@\nfHfpAa@\nfHchA@\ngOq@@drm[RtA`Uc^Q`\ngFx`LDdrfmU@XHwdp\neMhDRUB\neFbHbHpP\neMJDBDf`pQyP\ndcLL`NWPbDfUuZf`@jX@H\ngNx`JDdskUPFDwLZp\ngJX`DBdru@XS\\RH\ndiDDPNDHc@aIUVjjX@`\ngChHL@aIVPH\ngJXhEBOAJuj@`\neMJDbDf`pQyP\ndaFD@DAdegfyjj`B\ndmNh@DkaTDfVYVzUZiZi@H\ndaDD@@IIf]nfih@`\ndaG@@@kdiVrX@a@C@hPfyG@\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\neOHBNZP`\ndiVH@BAIfUInFjZi@H\ngJPDADFHRUfaIP\ngNqDLHaqBRjuU@P\ngNpDAbODRUVjhB\ngGX`BDdjmTA`m^JD\ndidHPBBHFHRYgvzB@`@`\ngJXHD@aIUZ@`\ndifH`NDIAIe]ih@J@B\ndaE@@@IIf]n``@@pHLJnHw@\ngJPDADFHRYfaIP\ndiFL@JANRY]fjf@LLJayF@\ndie@@@YJYYhP`X@CBdJnGdL\ngGTHE`DIJkSBZppUxhP\neMbDBDfp`\ndeVH@DAIgeQej@@@LJrfx^Hd`\ndcN`@@pjYJYenk`Hbj@B\ndidh@DJaAIVUxZ`@@B\ndcNL@BA]RYe]VEjVih@`\ngNxhIV@aJUji`H\ndcNL@LANRYygiUjB@`@`\ndid`@@pjrQQIFf@`h@LLKaxbL\ndmvH@NAIfUTUZBB@@p[BiaWdR\ndmuH@DpDfWeYUj`@@CAlInF^Hb`\nfH`PAa@\nfHd`Aa@\neFJHaHhP\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A@\ndmLH@@rJJIQEneX@@@@CB`kaWfXt`\ndmLH@@RYVuiiV@@@@@phJxYybXh\nfgA`@@@ISLrotyHvk@@@@@@@P\ndaFH@HAIYUnh@@@pKBinXD\\\nfduH@@@X]GIEEMDdehUbbkF|FKT@@ACPP@P\nf`iH@@@TdyJYW^U|TxJsiB@jjh`@`\ndmM@@@qJY{WJeVj@B@CCdrfxYyB`\ndcmH@AdDfUvVfWX@IjH@`\ndiV@@@RfU|kahDB@CB`JfGbIp\nffsa@@G@RfYU_yUTVeFCDmZ@@@JZ@@@@H\neMJDBDe`pQyP\nflua@`IJAHFdKRCi@hRDQHQDaHaHFJLuzJX@Jfjja`@`\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@A`s`mFlGbIN@\nfbmAP@@BBgJSLsLoOkEZ]ZKPAD@RU@@D\ndaE@@@yJe~fB@`@`\nfoAa@@D@RYYeUuVLyj@@@@@CBRJLxJRmFxbs`\nfdyQ@@DA@drsJkzjlYsT@@@T`@D\nfhiq@@D^BAIefUWuUcNZ`@@B`@B\ndcNL`LaI@HrREQISBjt@Q@AaVTp{q@T\ndg^L`LaM@HrRPiSISJZuPAD@D\nfgA@@@LdbbbTVKIBMjp@@@@@@D\nf`iA`@@F\\eLsJmmARmku@A@QD@@P\nfnk@P@@FbuIefYZWz^`mA|gMVfjjjjjjj@B\ndmLH@@RfY]raV`XD`@phj[axdj\nfoAA@@@ISLjoxmJMP@@AH@AaKAJLxJRk\\PYp\nfnsAH@@LDjwdu[dTTTTTiRbTVWAZMdkPSDEUUUD@D\nfoIQ@@BJ@dsJsllepQkF\\uKUUTt@D\nfoAaB@G\\ADILkkJ}FFm@AP@P@A@\ndk\\H@@RfY]\x7FJEZA`RXBAh\nf`qQ@@G^@eLrj\x7FpmJMP@@AL@@XJpRcNBdiwnPL\nfdyQ@@OA@eLrj~lbthu@@@EL`@D\nfhyi@@DTxIPLbbTTRqbRYrRoAZiYh@J@@`\nf`i@`@@DRYfyU]`mNmyi`@@B@@H\ndaF@@@RYWifef@H\ndaF@@@RYe[hB@@LB@j[bYp\nfhe@@@LdbbbbbqQXXUiJ|DB@H@@B@@`\nfnk@a@CM@DVdLbbdRQbTQdrvIrRoAKVjjjjjiYj`@p]`eF\\EKQoQSdoD@`\nfa{@c@K]@DHBGRFQRZQIFIQFSKZ`eZCFkZjjjjjiYj`@`\ndet@@DjYUX^d@@@@CAlJnF^Hc@\ndeth@DkiAIeeVxYZiZd@pQAxaT\ndcNL`LaE@HrRPzIJSju@D@AaVDwSqEt\ndk]@@@qJY{W\\jUZh@I`@`\ndmN@@@rRJKQEneP`@@@B\nfew@`@@HrJYJJZQIFYJSKJmxNRcfuUUUUUUUUP@XUQ`eF\\dkQkN|FNRu[t_HS@\ndeVH@DAIgeQej@@@LJSJX^It`\ndaFH@NAJY\x7FJifx@`\neMdHTf`|rP\ngJY`DLTefhB\ndiFH`Bp@cIECDjZj@H\ndeTB@@RirJIPqTsUUT@P\ndmtL@@slbTtTLpfjjj@H\ndmNH@BAIfUmiEX@@@@CC`qnFU@\ndg\\D@@eIVUuWaZ@Bj`@peBinWSodP\nfgA@@@DjYU_VByHu`@@@@@@H\ndclH@@rIQQJH|J{P@@@@D\ndk\x7F@@@p\\dTRbfQjVGSBBheF@H\ndk}@@@iJUmUR[atzjZ@H@C@PPje]OdP\ndk}@@@yJUmmRkatp@h@B@B\nfgAp@@@XheLvnjs`iFlDPT@@@A@\nfgAP@@@LrQQJEIITxJQk@QE@@@@P\ndcm@@@EJYYwietB@P@@H\ndif@@@RYWZZ@BP@pXDpj{dB\ndg}B@DpAV|bbbRbrK]imUMMU@FGXU]IwrM@\ndg|H`FBHRYV~Ukcn@H`@@@pdDrne]OdV\ndg|@@DjU_eZx{BAH@@BJlMaLJfe]N~Qp\ngGQhHjOAJmZhCBGfFh\ngGT`EaTf]j`LDkqX`\nfgA`@@@YHheEhTj\\EHu`@@@@@@H\nf`i@`@@VRYfYU]`eNMyh@`AB@@LFRUhso\\QS`\nffc@p@@DEkM\\bbbfbTtRrLKAF|dkTaQ@DDT@@P\nfoQPB@F\\@DYHheBeLdRdeV]Th@@D@@P\ndcoH@NWPRVUmVFUX@ah`B\nf`i@`@@VRYfYU]`eNMyh@`AB@@LF\\Uhso\\QRP\nfhy``@A@|dsLsKnqVgVBt@Q@BP@A@\nfde@P@@J]{HhhhhhdeBpV`vbt@Q@LD@@XLUjw`qxca`\ndaFL@NAFR[e[fff@H\nf`i@`@@VRYfYU]`eNMyh@`AB@@LN\\dkQg^yB`\ndk\\D@@qIY[mZ{SZZ`@P@`\ndk]L@LxDMIe]eRkSZjjjh@`\ndclD@@IIf]U[evjj@@@H\nfgA`@@@ISKJntXKQk@@@@@@@P\nfduP@@@FRe[Y]mRTDhu`q@@BJ@@H@B\ngGPdMQDGpRUYiDe@\ndeT@@DjUghP`h`@pYL[agfPU@\ndg]D@LlMrIJJIIHj]UAAD@D\nf`iA`@@BUdTTTTTRqXKSk^Z@H`@`@B\nfgAP@@@\\RfYe_irQmV@@@@@@@`\ndmw@`Dq`BDeUeYUi`@@cJ\ndiV@`J@HRfU|kahDB@CB`PfGd\\\nfgAPB@LD@DISJ\x7FJdhsakTuT@D`@P\ngGThEXQxIVsS@P\ndk^@@@RfYU\\]Tz@@@@@LECBinFUOdZ\nfgA@`@@\\RfYe_irQmVh@`@H@@`\ndiT`@@rnRfUjEnejfPB\nf`ih@@@XIQVRJJIIZEIgIJ]xB`j@@P@H\ndcn`@@xYUIYeg[ewiBHH@H\ndmtH@@RYWUih@IhBN\\NALJiWb\\H\nf`qAA@A@bOQBSJ{\\ktYYt@EP@P@A@\nfdy@P@@BtGHhhhheEcliuoM@DD@T@@P\ndeu@@@[IEDhcSCH@@@@FAEpsqDh\ndcm@@@{IEEEDcWSh@PD@@P\nfoAP`@DXAIIfU^uYrsfjjP@`@H\ndet@@DjYUX^d@@@@CBlJngfHp`\ndclh@LX]AIVYWxUuj`PH@H\ngJP`@TeVhCCSGdP\ndaxL@@RdfVVjh@ppj[bYp\ndg~@@@RYfUWd}mh@@@@@pdBinFUwbGX\ndifH@HAIfuxZ`@@B\ndmtD`NTLQIe]Vf`@jP@`\ngOqHF@aJW\\ZVXCCA[be@\ndk^@@@RfYU\\]Tz@@@@@LICBinFUxff\ndk}@@@iJUmUR[atpBJ@@@CChPiWSyE@\ndk^@@@RfYU\\]Tz@@@@@LI@j[aeSxfZ\ndeUH@JdDin_xZB@`@pqB[fUt`\ndetH@@RfUWJzZABH@LBInGbIH\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\ngBQHDHaIejhB\ndaG@`D[`bDfUjZ@B@CA@sbUp\ndidHPACDZHrJIJFn`BH@H\ndknDPLa@BABLddJbTVtujAH@@`\ndayDPLZD@HhHrRESKSPAafTwDC`\ngNxHD@aIUVj`LFEcWrP\ndiEDPLZD@HhHrRESIZZ`B\ndayH@DpDf]Vjh@piBinyF@\ndeV@@@RfyWahBB@CBj[agf@a@\ndmtB`HSBCprRSFIJUZh@@@pInF^YaJ\ndif@`D@HRVU^Ejjh@`\ndmL`@@siRfUmhVxHFJH@`\ngO}@EfDfUkZZPH\ngCe@E`dmHD\ndeUL@DpFgHhdhUWMTuHA@\ndclD@@EJY}erevfVfiBJh\ndk\\H@@RYeg]ntxB@P@@H\ndk\\D@@MJ[Vuvy]h@@B@@`\nfoAaB@KN@DISLjoxmJMP@@AP@A@\ndaFH@HAIYUnh@@@phHpfxe\\\ngF|@AbeLzmS@XKWbQ@\ndcoH@DJ`RUeUVy]ZZ`@@CBdhYwbPh\ndmOH@FePRYVukaf@HZH@`\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\ndmL`@@[aRfV[hYVPb``@`\ndeVD@LADfvUFVjjh@p{BinF^P`\nfhi``@L@PdssLjn[s`mU@@@@@A@\ndk|@`@BDie^urnGShD@@`@H\ndeVH@BAIemQfk@@@H\nf`qa@@O@rQQQIISGBtju@@@QX@A@\nfbc@@@LdbbbbbRJvcEBMIpTqrAD@@@@@@@D\ndcl@`@BLbTTRbOBnt@@@@A`LDwCJ{r@@\nfdu@P@@JMGIEEDhhhhgPPkR\\kUUSUUUUP@P\ngFxHH@aJUqiZ@ppMyD\nflu@P@@B\\EIfYfWgvJuztV`BHBDh@@`\nfHbhA@\ndcl@@DjYeeiGP@HH@@`\nf`i@`@@VRYfYU]`eNMyh@`AB@@LF\\ehso\\QQP\nfhy@@@LdbbbRQaREiQoA`@`@@@@@`\nfhyQ@@CA@dsLjm{Jvg^Bt@@DCA@A@\nf`q@Q@HH]x@QXHrRFIJYIZ\\Ehrp@@Dh@A@\ndet@@DjYUX^d@@@@C@binxRXL`\ndg|@P@bCbDfUnuj{[`B@B@@H\ndidHPBBHFHRYgVzB@`@pHLh^HW@\nfoAaB@GDADILroZ{AFmAA@@P@A@\nfoAaB@GLADILk_J}NFm@DP@P@A@\ndc\\@@DjYVYayYt@@H`PB\ndiDB@@SaR[eVfjBLh\nfoAP@@@NRYWVUzLMZ@B`@`@B\ngOq@@drm]SRA@\ndidh@DqaAIe[kffjPB\ndeV@@@rIQIPmw@AH@XUaMp|bP\ndeVB@LAaeJYyzzjjj@LAaBinF^Q`\ndk\\H@@RYm[Watz`@@@@H\nfoAh@@@XIQRTsNj~sdm@P@QT@@P\ndklB@@F]RYe]ynZYif`B\ndaF@@@RYVih@H@LLBnybXp\ndknD@LADf^YWeVhBB`@`\ndcNH`IDLQIe[^ih@Jj@B\ndmO@@@bTieulhUfhB@@H\nfoQh@@@\\eYvRJJJJUKTxkQk@AA@tD@D\nflmAP@@LUyNQQQQEJQJI|Eish~BtuUUUUU@A@\ndkm@@@QInUu^Eh@IdBIh\ndifH@JAJ[gxZB@@C@dJfxgB\nfoA@@@DkfYU]UcNz`@@@@@`\ndk~@@@rRJIJJEi{UNhJHb`@`\ndeT@@DjY]zXFB@@pYLinGbEH\nfoAA@@@ILkjrmFV]@AL@@@arpdAFBTUhunXxIp\ndcMH@EtLbbbRQc]@PLp@P\ndiTH@@RfU|kahDB@CCBknXcB\ndifH@DAInUxZ`@@CAhJfx^HB@\ndeVD@HCDi^UFZh@@@`\ngNx`DJdssTpFBsyD\nf`a``@M@EdbbRTQrdxj``hjh@C@rBTYpTeZl{wHX@\ndeT@@DjUghP`h`@pFDpj[iy@`\ndcl@@DjYU_egX@@@@@pyLJag^XwJ\ndmtL`HS@BLdaRbReUj@@@H\ndaxD@@QIUUjj@LJpj[nQ@\ndcl@@DjYU_egX@@@@@p{J[ag^XaJ\ndaE@@@aJmUnjjh@`\ngOr@ABtiYufjPH\nfgApB@LLx@HRevUUpPTcViYj@H@@`\ndeth@DkiAIeeVxYZiZd@pqJGdD\nfoA@P@@\\e[HhheEBcF\\UihFHIh@B\nfj}@P@@\\ceIfVW{WVYrVoAZA``@JZ@@H\nfbm@p@@BLEN\\bbbbbbbrNwEZ|zKPADPBU@@D\ndg|D@@iJYYytYvzB@@`@B\ndmMH@HxLbbbTQ[iV@@@@@`\ngNt@@\\dbLjj@pJu_I@\ndk\\H@@Rf_YWJtzYX@HBJX\ndg|@@DjU_eZx{BAH@@BJ\\EaLine]ObEX\ndg|@@DjU_eZx{BAH@@BJ\\EaLJfe]Ob]X\nf`q`@@@IKJzljsco\\@Dp@@B@j\ndevH@IAJYW\\kahDB`@`\ndif@@@RYWZZ@B`@pYLJnGd@\ndk_@@@Y\\dTRbJtiad@@Bh@B\ndk\\D`HP@cIHXheDQgSV@@@@@pZnE]ObAH\ndg\x7FL@Ds`f|bbTTtJuCimMUUS@FCTwJ]|P]@\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@LATYpRmFmrC`\ndcnH@IAJ[Vu[ev`@@@@LFSBE]yC@\ndmM@@@[IEDhhZdU@B@@@LJRnF^Hr`\nf`iP`@B\\@aInVUuQRUiwfjij@H@@`\ndc\\@@DjYVYayYt@@H``B\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\ndeTD`HP@cIHXhdLk@P@A`UMp|PI@\ndie@@@GHhhdVz@``@pKBinH@`\ndmN@`E@HRfUwrnF`PI`@`\ndk\\L@@R\\bbTTTU[mMjBhB@B\nfbmAR@HHqhH@cIIKDeMEhdlIUgIrm@DM@`D@A@\nfoAP@@@NrJJIHqIYgCV`HH@H@@`\ndcLL@@ETfYUUnZYjZ@H\ndcn@@@rIQQJH|J{p@@@@D\ndaF@@@RZW[jii@H\ndiVL@DBnRYYbZfZjj`B\nfHgPAa@\ngC`DAbZHRVhB\ngCaHLHaIZPLDErP\neMPBcXLJyH\ngCahHlHROTA@';
carcp.m3 = 'daD@@DjUZxHD@@\ndaD@@DjUZxHH@@\ndaD@@DjWzXHB@@\ndaD@P@bBbDfYvzB@@@\ndaD@P@bFbDfUjz@H@@\ndaD@P@bNbDfUzZ@B@@\ndaD@P@qFbDfUjz@H@@\ndaD@P@qNbDfUzZ@B@@\ndaD@P@qNqDfUzZ@B@@\ndaD@`@bDfUzZ@B@@\ndaD@`@qDeeVz`@@@\ndaDB`HSJCprRRsTsUU@@\ndaDD@@IIf]nZYX@@\ndaDD@@IIf]nZZh@@\ndaDD@@IIf]n``@@@\ndaDD@@IIf^fZfh@@\ndaDD@@IIfunZfd@@\ndaDD@@QIeUnZjh@@\ndaDD@@YIeZn`B@@@\ndaDD@@qJYfnjjh@@\ndaDD@@yIe^fZVX@@\ndaDD@@yIe^f`@`@@\ndaDH@@RVU[f@@@@\ndaDH@@RVU[j@@@@\ndaDH@@RYVih@H@@\ndaDH@@RYWih@H@@\ndaDH@@RYe[hB@@@\ndaDH@@Rfu[j@@@@\ndaDH`BBHRYg[jfj@@\ndaDL@@PdfyVyjZP@\ndaD``DJnBHrJIPeUMV`@\ndaE@@@IIf]n``@@@\ndaE@@@YIeZn`B@@@\ndaE@@@YJYVf@``@@\ndaE@@@YJY^f@``@@\ndaE@@@aJyUnh@@@@\ndaE@@@yIe^f`@`@@\ndaE@@@yJYfn@b@@@\ndaED@DHNRYWifif@@\ndaED@DXNRYUifej@@\ndaED@DpFRYVkfjY@@\ndaEH@DpDfYbijj`@\ndaEH`Bk`bDfUzZZY`@\ndaF@@@RVU[n@@@@\ndaF@@@RYWih@H@@\ndaF@@@RYe[hB@@@\ndaF@@@RfYk`H`@@\ndaF@@@Rfu[j@@@@\ndaF@@@rQQHtpDD@@\ndaF@`BBHRYg[hH@@@\ndaF@`FBHRYVkh@`@@\ndaF@`JBHRVU[j@@@@\ndaF@`L@HRf^rjjj@@\ndaF@`L@HRf_rjjj@@\ndaF@`N@HRYWih@H@@\ndaF@`NBHRYWih@H@@\ndaF@`NBPRYWih@H@@\ndaF@`NBlRYWih@H@@\ndaF@`NCDRYWih@H@@\ndaFD@BADfyVyjj`@\ndaFD@F@dfYvzB@@@\ndaFD@LADfVZYjj`@\ndaFH@BAIf]n``@@@\ndaFH@BAIfunZfd@@\ndaFH@DAIeUnZjh@@\ndaFH@FAIeZn`B@@@\ndaFH@HAIYUnfjh@@\ndaFH@HAIYUnh@@@@\ndaFH@HAIYUnjjh@@\ndaFH@JAIYVfiih@@\ndaFH@JAJUtjjjh@@\ndaFH@LAIYfnjZd@@\ndaFH@NAJYfnjjh@@\ndaFHPBxHa@aIeTjijX@@\ndaG@@@kdig|jVj`@\ndaG@@@rdifvxH`@@\ndaG@`Bk`bDfUzZ@B@@\ndaG@`Dq`BDfUjyijP@\ndaGD@Dp`yIeVfZiX@@\ndaGH@Dq`RYVkffi@@\ndaTD@@iJUfDifzjjj@@\ndaTH@@ReYaBinjjj`@\ndadH`DBHRZuSFzjjh@@\ndag@@@adie\\infjf@@\ndax@@Dj~fjh@@\ndax@@DkU^jh@@\ndax@@LddUeUT@@\ndaxB@@QnR[VZY`cD\ndaxB@@QnR[VZY`cH\ndaxB@@QnR[VZi`@\ndaxBPLinBHKpRUZjf`@\ndaxB`HSBCpRjuZj`@\ndaxD@@QIeejZ@@\ndaxD@@QImUifALj`\ndaxD@@QImUjj@@\ndaxD@@YIgYjf@@\ndaxD@@iIUmfjBD`\ndaxD@@iJU^jj@@\ndaxD@@yIUUfYADb`\ndaxD@@yIUUfZADb`\ndaxDPFxLPlQIf^ZjBH`\ndaxDPLHHb@aI[Vfj@@\ndaxDPLh@c`aI[njj@@\ndaxD`LhLQIUnjZ@@\ndaxH@@RUUYj`aH\ndaxH@@RUUjj`@\ndaxH@@RV]Zj`@\ndaxJ`HSBxOCIILTuT`@\ndaxL@@cdiZZjh@@\ndaxLRJ[`bBBNyIUjjV@@\ndaxL`HS@BLddJruT@@\ndaxd@DpnAdf]ffXHr@\nday@@@aJnZjj@@\nday@@@yIYwjk@@\nday@PFx@b@aJUVjj@@\nday@`Dp@aIfYjj@@\ndayD@DpFRYVZi`@\ndayD@DxFR[VZy`@\ndayD@HhNRV[ff`RDh\ndayH@DpDfUVjh@@\ndayH@DpDfYfjh@@\ndayH@DpDf]Vjh@@\ndayL@DpFyIeUjj@@\ndazD@BADf{fjh@@\ndazD@LADf]Vjh@@\ndazD@LADf^VihHJ@\ndazD@LADf^fjh@@\ndazD@NADf{Vfl@@\ndazD`B[`BDe[jjX@@\ndazL@BAFR[nZj`@\ndazL@LANRYuZj`@\ndazL`BaL@HrRPzKUP@@\nda{DAJ[`Qi{dfuVjT@@\ndcL@D@dDdJdFdAdIdEdMdLbdtbaa]UUUT@@\ndcL@X@bBbFbAbEbMbDfYn\x7Fijjjj@@\ndcL@X@bBdFdAdEdMdDfYn\x7Fi`bHh@@\ndcLB@@ImrJJJIH}KTsTp@@\ndcLB@@P]R[e[^eh@b`@@\ndcLB@@Q]R[e]nEh@I`@@\ndcLB@@RUR[fVQuhHF@@@\ndcLB@@R]rJYQIPbkT@Q@@@\ndcLB@@RiRYyVQejjjh@@\ndcLB@@SmR[YgYUjB@`@@\ndcLB@@reRf[ujzjjjh@@\ndcLB@@riRfY~Qfjjjh@@\ndcLD@@IIf]z[hHBj@@\ndcLD@@QIgVUWVj`@@@\ndcLD@@QInUvxVfjf`@\ndcLD@@cIMHhTmJuUUU@@\ndcLD@@eJ[W[[j@Bk@@\ndcLD@@iJ[g]xZB@f@bX\ndcLD@@iJ[g]xZB@i@@\ndcLD@@kIEMDdcttDDT@@\ndcLD@@uIfUe[ffZi`@\ndcLD@@uIfUk[ffZi`@\ndcLD@@uIfUk[hBBj@@\ndcLD@@uIfYoXVfZi`@\ndcLD@@uJ[WU[j@BZ@`X\ndcLDHFDH`haXcXaIf[ozYjYjP@\ndcLF@@Rag\\bbTVTILuSUT@@\ndcLF@@RiWTfV[UnZjjj@@\ndcLH@@RYeZvz@`j`@@\ndcLH`ECDRUYWQff@B`HR@\ndcLJ@@PUuInUgzV`BJ@@\ndcLJB@PUuNR[eY~eijjh@@\ndcLL@@GTf[VwiZ@Hh@@\ndcLL@@STfyWWaZ@Bh@@\ndcLL@@yTee[UaX@bh@@\ndcLL`HS@BLddJfRtjmP@P@@\ndcLLpLK`bEbMbDeeYunjjjj@@\ndcL``Dpn@HRYueUujX@@HJ@\ndcMB@DpIWTfeyYaZjeZ@@\ndcMD@DhARYVUuujP`@HJ@\ndcMD`LE]@HRV[]nEjiih@@\ndcMH@DdLbbtRTHju@DP@@\ndcMH@DpLbbbLRRzuT@@@@\ndcMH`BuPBDf[U{aj@BX@@\ndcML@DpByIf]vifjfj`@\ndcM`@@pjY\\dTTRrM\\ADUP@@\ndcN@`IBHRYWVjZ@Bj`@@\ndcND@BADf{YU]Zj@@@@\ndcND@FCTfUiffZjjj@@\ndcND@HC\\bbdTb\x7FKUUUT@@\ndcND@N@dfY{UnZejj@@\ndcNDPBePbMbDfYmoa`bAh@@\ndcND`MIPbLbbbbQcSAAPp@@\ndcNH@FAIe[mkh@bj@@\ndcNH@IAIeYUifejZ`@\ndcNH`Bp@aJY{UWZZjj`@\ndcNH`BpLQI[VUWZZ`@@@\ndcNJ@NCIWTify^ajjjj@@\ndcNL@LAERYyeiuj@b@@@\ndcNL@LAJRY{eUujh@@@@\ndcNL@LAMrJYQIPcKT@E@@@\ndcNL@M@aRYgWVzB@j`@@\ndcNL@NB]RfyUZziZjh@@\ndcO@@@rTie_ZnBBJh@@\ndcOB@DrPY]RYV]jyjfid@@\ndcOD@Ds`wHheELUPmMTra@p\ndc\\D@@iJYeUqavUhJBbD@@\ndc^H@AAJU[VaJZUijZjT@@\ndcl@@DjYU_egX@@@@@@\ndcl@@LdbbbRkRJ`@PD@@@\ndclD@@QIe[WiiUjP@h@@\ndclD@@UIfVW[iv@@B@@@\ndclD@@UIfV][iv@@B@@@\ndclD@@UIfV^XYv@@B@@@\ndclD@@aJyegzUvjBHH@@\ndclD@@iJYW]rnF``IhBI`\ndclD@@iJYW]rnF``JX@@\ndclD@@iJYW]rnF``Jh@@\ndclD@@uIfV_XYV@@@`@@\ndclD@@wHhheEbprl@@A@@@\ndclD`AtLQIe]miaf@Bjb@@\ndclH@@rQSQJH|J{P@@@@@\ndclL@@STfUmVfeVi@B`@@\ndcl`@@`nReeWZY]@``@@@\ndcl`@@i]RfYyvxU@hJhP@\ndcl`@@jURfYwVxY@hFh`@\ndcl`@@j]RfYuVxY@hJhP@\ndcl`@@seRfUeZEnBAbh`@\ndcll@DpYAmRYV]zzUZije`@\ndcm@@@UJfUWyYvhJBH@@\ndcm@@@YJYYwhUtH@@@@@\ndcm@@@iJYeyravPhJH@@\ndcm@@@qJY~Ureujh@H@@\ndcm@@@uIe[UiiV@@@`@@\ndcm@@@uJYU_rnf`Pbh@@\ndcm@@@{IDeCDdUKh@UUB@@\ndcm@@@{IDeCEDUSh@UUD@@\ndcm@`LH@cIEDUDeeKmLp@P@@\ndcmB@DpNE\\bbbTRMBtmULmP@@\ndcmD@hxEChgiWdfYYungX@@H@@@\ndcmH`LJPBLdTTJTvTJtpAE@@@\ndcmh@HqagPRVVY^E]fjVjPbH\ndcn@@@RVUmVy]x@@@@@\ndcn@@@Re]eRi]@B@@@@\ndcn@@@RfV]zE]B@@@@@\ndcn@@@RfYW\\hUhFBJ@@\ndcn@@@rIQQJH|J{p@@@@@\ndcn@@@rQQQIXyPkPLDT@@\ndcn@PABPJPRYgUVy]``@@@@\ndcn@PBBPZPrJJJIP}J{@D@@@@\ndcn@PBBPvPRYe[VFU`@@H@@\ndcn@PIBPJPRYfuvE]``@@@@\ndcn@PNBHvHrJJIQGMtk@@@P@@\ndcn@PNBPVPRYeeVF]`@@`@@\ndcnD@D@TfUe^fWX@B@@@@\ndcnDABCbgnrJJIQPll{@A@@@@\ndcnH@AAIVYWXUvjP`H@@\ndcnH@BAIfUnZQV@@@`@@\ndcnH@HAIYVu[ev`@@@@@\ndcnH@NAIYeUkiviBBH@@\ndcnHAH@NbTfYYungX@@H@@@\ndcnH`DDHaIe[gkev@@`@@@\ndcnH`NtHaIfV]XYV@@@`@@\ndcnH`NtLQIfV]XYV@@@`@@\ndcnL@LAMRYUUrhYZh@h@@\ndcnL`LaA@HrRPjIKTrzmPHD@@\ndcnh@DkaTLbbTTRK\\nmHTA@@@\ndcnh@DkatDfVYengVjVjd@@\ndco@@@JdeYUUnW^fh@@@@\ndco@@@pdif]wJeVhHB`@@\ndco@`FePbDfUmVnFX@ajH@@\ndct@D@dBdFdNdAdIdEdMdDfYkjZjj`bH\ndctB@@I]rJJJIVMRuLDE@\ndctB@@PYRYU{ViijBBP\ndctB@@PYRYU{ViijBB`\ndctB@@PnR[kfVjjj@@\ndctD@@QIeUUZijhHj@\ndctD@@QImUUZjjh@@\ndctF@@IaWTfYn~jjj`@\ndctF@@rngTen{mjjj`@\ndctH@@RUUUZjjj@@\ndctHxJBPRPrPFPfPVPvPrJPqJQUUUT@@\ndctd@BE]ADf{UYjji`@\ndctl@BE]ANR[mUfjjf@@\ndcu@HLd@a@```PcHheDYhuUMP@@\ndcuD@LTIrQPiIQTuUL@@\ndcuDPBwaBPRPrJZSQEUUMT@@\ndcvDBAAAeIeUzZjjh@@\ndcvJ@BAIWTfuiUjjj`@\ndcvJ@LBngTen{mjjj`@\ndcwLaNWXS@|Eg^rRSIIHmUUJ@@\ndc~D@JCldRTTRLHp|J{PA@@P@@\ndeL@@Di[ernDYZjij@@\ndeL@@DjYeIjGijjjj@@\ndeLD@@eJUUXSaFZjjj`@\ndeT@@DjUYk``R`@@\ndeT@@DjWvifjih@@\ndeT@@DjYUXPbDP@@\ndeT@h@bBbFbAbIbDfYokjYjh@@\ndeTB@@IaRYf{aZfj`@\ndeTB@@KiRYg]nZej`@\ndeTD@@EIYWVy`@h@@\ndeTD@@EIfUVz@`h@@\ndeTD@@EIfUvz@`h@@\ndeTD@@EJYU^f```@@\ndeTD@@QIUeQej@@@@\ndeTD@@YIfUqehD@@@\ndeTD@@eIfWVyiff@@\ndeTD@@gHhhhjpmLtp@@\ndeTD@@iIYe^e```@@\ndeTD@@yIYVvE`BH@@\ndeTDPAdH`haIf]VzB@h@@\ndeTDPBDHbXaIf]VzeiZ@@\ndeTD`AdHaIe[jz@HX@@\ndeTD`AdHaIe]jZ@BX@@\ndeTD`NDHaIfVVfBA`@@\ndeTH@@RUYTYY`@@aH\ndeTH@@RUYTYi`@@aH\ndeTH@@RYVZfZZj`@\ndeTH@@rJJIHmtA@pD]@\ndeTH`IBHrJJJJlLADP@@\ndeTHpIBHJHZHrJJJX|LDPP@@\ndeTL@@FTfYW[ffZX@@\ndeTL@@FTf[eXVjjh@@\ndeTL@@KlbbbtK\\uKU@@\ndeTL@@Qdf]eFVjfd@@\ndeTL@@QdfygFV``@@@\ndeTL@@RTfyWxV`@`@@\ndeTLB@QdyInYqehH@@@\ndeTL`BjPkDf[W[jjjh@@\ndeU@@@[IHhXlLuA@@@@\ndeU@@@aJnUqfhH@@@\ndeU@@@aJueQfj@@@@\ndeU@@@gIHhTmpu@A@@@\ndeU@PBdHchaIf^VFBBH@@\ndeU@`Dp@aIgeQej@@@@\ndeUB@DpFFTfUgkfjYX@@\ndeUD@DdBRY[TYZ`@@@\ndeUD@DhBRY[TYZ`@@@\ndeUD@DxBRY[TYZ`@@@\ndeUD@FdDR[VTYZZV`cH\ndeUD@HDIRVUunfef`RKh\ndeUDAHDIFY{HeEDcptAA@@@\ndeUD`DpY@HRYf|fZjj`@\ndeUH@AdDee][j@B`@@\ndeUH@AdLbbRaUM@AT@@\ndeUH@DDDfyVzV`B@@@\ndeUH@HpDenUFYh@@Ha@\ndeUH@JdDie_xZB@`@@\ndeUHBDxNeIgeQej@@@@\ndeUL@DpFgHhdhUWMTuH@@\ndeV@@@RVUenh@J@@\ndeV@@@RYfUa`Hb@@\ndeV@@@RYyTYj`@@@\ndeV@@@rRJEK\\MP@P@@\ndeV@PNBHFHRYeYi``x@@\ndeV@`ABHRYVvf`@j@@\ndeV@`ABHRYWVf`@j@@\ndeV@`D@HRUYTYV`@@@\ndeV@`LADReyTYk`@@@\ndeVD@DCDenUFVh@@@@\ndeVD@FADfygFV``@@@\ndeVD@I@dfYw[hHB`@@\ndeVD@IADfyWxV`@`@@\ndeVD@LB\\bTTQU]TuT`@\ndeVD@N@dfY{[fiZh@@\ndeVD@NADfyUxVfjh@@\ndeVH@AAIfuneh@`@@\ndeVH@AAJYWnf```@@\ndeVH@BAIemQfk@@@@\ndeVH@DAIgeQej@@@@\ndeVH@FAIe[jz@Hh@@\ndeVH@FAIe[zz@Hh@@\ndeVH@HAIYVVz`@h@@\ndeVH@HAJUmQfj@@@@\ndeVH@IAIeYZYiZf@@\ndeVH@IAIe]ZZ@Bl@@\ndeVH@IAJYW~F``H@@\ndeVH@NAIe]jZ@Bh@@\ndeVH@NCIELeBpt@Q@@@\ndeVHPNHHbXaIf^VFBBH@@\ndeV``Dqad@aIeYzyiji@@\ndeVh@DkadDfV[[ffZh@@\ndeW@@@kdigvriZjh@@\ndeW@PH[`bDbDfueFZjZd@@\ndeWH@DJPRY[TYZ`@@@\ndeWH@DZPR[e_aZ@B@@\nded@@DiUUjjj@@\nded@H@RnbAbIbDjUUjjj@@\ndedB@@PYR[UYifXDrj@\ndedB@@PYR[UYjjX@@\ndedD@@QIeVVjjP@\ndedD@@QImUVjj`@\ndedD@@QInUvjj`@\ndedD@@iIUmVZj`aH\ndedH@@RUUUfihDRY@\ndedH@@RUUUfjhHR@\ndedHXDBHjPZPzPFPfPRYZZjjh@@\ndedJ@@IaeIf[zjj`@\ndedJ@@rneI[nvjj`@\nded`@@iiReUvjjh@@\nded`PDqi@HDHRYuYjjX@@\ndeddABxYAAf^R[kujjT@@\ndeddABxYAAf^R[mUjjT@@\ndee@HHxHaH`XbXaImUjjj`@\ndeeD@BdDR[mUjjh@@\ndeeD@BhIRUUUjZdHJ@\ndeeL@BdDEInufji`@\ndefB@BAAeInufji`@\ndefB@BANeInvvjf`@\ndefD`FFPBDiWnjjf@@\ndefD`FFPBDi]nijf@@\ndefJ@BAFFTfy^Zjf@@\ndefL@LAIRYuUjjh@@\ndeg@@@zTiUWjjj@@\ndet@@DjYUX^d@@@@@\ndet@@DjzYKaejjj`@\ndet`@@siRfUna[``ha@@\ndet`@@siRfUnnFP`bb@@\ndet``Dki@HRYYUnFVjVi@@\ndeu@@@[IEDhcSCH@@@@@\ndeu@@@kIEEDceCLaPD@@\ndeu@`Dp@aIeURhYfh@@@@\ndeu@`LH@cIEEBeeCML@D@@\ndeu`@@rfFTigmkadHHhP@\ndev@@@RYyULFZh@H@@\ndev@@@Re[TjFP@@@@@\ndev@@@RfUWJzZABH@@\ndev@@@rQQJHtpr@@@@@@\ndev@PL@HPHRYUTjFVj@@@@\ndev`@@raeJY{ZXYB@iH@@\ndevh@DJndDfVU[af@`hP@\ndevhADIadFf^R[fUnxVijY@@\ndew@@@pldTTJVTLmP@P@@\ndg\\B@@ESrJJIIIFMsSMSM@@\ndg\\B@@Q[R[VUmgVf@HhBL`\ndg\\B@@RSR[YVwEVh@bh@@\ndg\\B@@SSRY[W[FVh@Ih@@\ndg\\B@@i]RVYUuzVBBJh@@\ndg\\B@@kcrIQQQIGBkADQT@@\ndg\\B@@x{RYeewgV`hHh@@\ndg\\D@@cIMHhThYJuT@EP@@\ndg\\D@@eIfU_Un`HJj`@@\ndg\\D`ILIAIme[\\Uf`BJ`@@\ndg\\H@@RYvYiVvfijjBL`\ndg\\HpL@HcpPHRZUYwNvjhH@@@\ndg\\J@@PUMInUeWiZ@Hj`@@\ndg\\L@@H|bbbftbkBtsMUP@@\ndg\\L@@PdfVUZYmjBBh@@\ndg\\L@@k\\dTtRRLwSPPQT`@@\ndg\\L@@yTimYvfF`BJj@@\ndg\\L`HS@BLddJrTRQvmUP@@@@\ndg\\L`NNpbDfUuijZ@Bjf@@\ndg\\``Dpi@HrJJJIRiG[UT`@@@\ndg\\dPHP{YPlmlldabbrV`suKRwP@@\ndg\\d`LF[a@BLddJbbQvfmPLA@@@\ndg]B@HxEv|bTTRRTlgM@aQ@IBt@\ndg]B@NTBNtfY}[fyjVjf`@\ndg]BbInDp`BB{IICiEDUikUUMR@@\ndg]DPCmaBHJHRYf{uzYjYj}@@\ndg]HPAuPbBbDfYw[fzB@ij@@\ndg]H`AuPbDfY_[fz@`ij@@\ndg]L@DDBmIeye]SZjjjX@@\ndg]L`FM]l@cIEEideCeTsUKT@@\ndg]L`LVDL@cIIKDedhLkP@Tp@@\ndg]L`LnDD@cIIBhhd]ikTC@P@@\ndg^@pLCDDHWDRUeYWtzjjZi@@\ndg^B@BAMoHiieDeBimU@DP@@\ndg^D`EppbDenUuaff@Bf@@\ndg^D`NEPbDfUv{jZ@Bij@@\ndg^H@DCHhhhddYimTE@P@@\ndg^L@NAarJJZJUQ]KSUMU@@\ndg^h@BzSlDf^[WUvjiif`cT\ndg_B@DhpK[RY[U{FVh@Ih@@\ndglB@@Q]RYUumZjjZ`@\ndglD@@QImUUUjjjj@@\ndglD@@uIUUUmfYfj@dRVQP\ndglFPHkivpqLqDen{nzjjjh@@\ndglLpDp`BH|MBLbdRRRQSUUUT@@\ndgl`@@`fRefUWejjj`RIH\ndgl`@@z[ReU]Ujjjj`@\ndgm@hNdHR@a@a``PaJeynzjfZj@@\ndgmBPFE]NpQHQDiUf{jjjfX@@\ndgmL@DdAuInUg]jjZj@@\ndgmL`DVCl@cIICDmihmUUS@@\ndgm`PFy]NpBHBDiUUYjjjfX@@\ndgnD@KADfuUUVjjjh@@\ndgnD`H[`BLdTRbJRUUMUT@@\ndgnDpKXpbBBJBDfzUUijjjX@@\ndgnLPFe]CDpHRUVV[jjif`@\ndgnL`Fe]@HRevV[ijif`@\ndg|@@DjU_eZx{BAH@@BJ`\ndg|@@Dke]eVx{x@H@@@@\ndg|@P@bBbDfYweVx{``H@@@@\ndg|@P@bKbDfUvUz[S`@`@`@@\ndg|A@@cJz]mJ{n{nDpjjjjj`@\ndg|A@@rae]oIEEDieFpr]UUUUP@@\ndg|A@@rfE]oIEEhYiCBJ]UUUUP@@\ndg|B@@KSRYfuVXUmjP`X`@@\ndg|D@@MIfV]UivviP`R@@\ndg|D@@MIfV]UivxH@@`@@\ndg|D@@SHhmEDhcJg[T@@@@@@\ndg|D@@WHhheEhbtg\\D@D@@@@\ndg|D@@mIe]e^ftvefef`@\ndg|D@@mIe]e^ftx@H@H@@\ndg|F@@RaW\\bbTbfbi]WMUUMU@@\ndg|H@@RVUvU[cn`@`@@@@\ndg|H@@RVYYwySn``@@@@@\ndg|H@@RYfUWd}mh@@@@@@\ndg|H@@RfYU[GUn`@@H@@@\ndg|J@@RiWHheHmDTWUsUUMUP@@\ndg|L@@HtfYnUvG[ZdJAH@@\ndg|L@@Pdf{UeRh{Zjh@H@@\ndg|L@@t|bbbbbJcBmm@tCD@@\ndg|d@Dq]@\\bbbbfJSSimUSTs@@\ndg|h@DqnAIe[UTYNvjZ`@@@\ndg}@@@OIEEEDTmWSh@PDT@@@\ndg}@@@aJVYU^Svv`@@@@`H\ndg}@@@aJVYU^Svz`@@@@@\ndg}@@@aJnYU^Svz`@@@@@\ndg}@A@LINTjWvUz[SB@`@`@@\ndg}D@DTBrJISQJHrivu@@@@@@\ndg}D@DhBRY[VuFSmj@@@@@@\ndg}D@LHNRfueWXSn`BB@@@@\ndg}DPDp{@H`HRefUWd}njjjjh@@\ndg}DPFES@H`HRenUVrnFijifX@@\ndg}H@DdDfvUmQT{Z`@@@@@\ndg}H@DlDfyVu~GSZ@@@`@@\ndg}H@DxDf^YVyO[Z`@@@@@\ndg}H@IlLdTrTraS]Jt@EMQ@@\ndg}L`JXiTIAIf]VunNzVjZj`@\ndg}L`JXiTIAIf^vunNzVjZj`@\ndg~@`K@HRfYU_GUN`@@B@@@\ndg~D@DCDenUmQd{Z`@@@@@\ndg~D@EADfufUqT{ZZP`HBL`\ndg~H@DAIge[TYNvh@@@@@\ndg~J@DBaW\\bbTbfbi]WMUUMU@@\ndg~L@B@SRYfU]Z]mjPhD`@@\ndg\x7FD@L[`QIeyUTYNvjZ`@@@\ndg\x7FH@DpprJJJJKJmJfuUUUT@@\ndiD@`@RdjeVjj`@\ndiD@x@bLBBdJdFdNdAdDeZjjj`@\ndiDB@@PaR[UVjj@@\ndiDB@@QaR[VvjY@@\ndiDBB@QaSdfumjj`@\ndiDD@@IIUZYjhHR@\ndiDD@@qJYWjjX@@\ndiDH@@RUUVZjBD`\ndiDH@@RUUZjj@@\ndiDH@@RYWZjj@@\ndiDJHDpnDAbHbaahcIIJiIZe@@\ndiDL@@HTeUUffPQJh\ndiDL@@IdfWUij`@\ndiDL@@PTfuUifPSJh\ndiDL@@idiUVjj`@\ndiDL@@idiU^jj`@\ndiDNPHSB[a@XhXrRPzQZe`@\ndiDdAB[aANd^R[gVje@@\ndiDdAB[aANd^R[mVje@@\ndiED@BDDR[mVjj@@\ndiED@BXDR[mfjj@@\ndiED`Dka@HRU[fjf@@\ndiFB@BANEInvZjX@@\ndiFD@BADf{Ujj`@\ndiFD@BADf{Yjj`@\ndiFD@BADf{ejj`@\ndiFD@D@dfWUjj`@\ndiFD@LADf]Yjj`@\ndiFD`JxPBDivzji`@\ndiFD`JxPBLbdTljjX@@\ndiFD`JxPQDivzji`@\ndiFL@DBarJIQEjj`@\ndiFL@LAJRY{fjj@@\ndiF`@@SNGHhhcFjf@@\ndiFd@DpjDNrJJHqji`@\ndiGDAFxPSiGdf]UjiP@\ndiT@@DiUTjxVjih@@\ndiTH@@ReUxRfjef`@\ndiTH@@RfUXQajiV`@\ndiTH@@RfU|kahDB@@\ndiTL@@idfV^nxVfjh@@\ndiU@@@iJYWrnFP`H@@\ndiV@@@RfU|kadHB@@\ndiVH@BAIfUInFjZi@@\ndiVH@FAIfU[fFjjj@@\ndid@@DjUZnBAH@@\ndid@@DjU^nBAHBJ`\ndid@@DjUfaBB`@@\ndid@@DjWffB@h@@\ndid@@DjYUaBHP@@\ndid@@DjYmaBH`@@\ndid@@DjY}nBHH@@\ndid@@LdbRQk``R@@\ndid@@LdbRQk``b@@\ndid@@LdbbQxXF@@@\ndid@H@bBbFbAbDfYnnifj@@\ndid@p@bBbFbDfYoa`b@@@\ndidD@@EIYW[f@B@@\ndidD@@EIe]ih@J@@\ndidD@@EIfU[ffiP@\ndidD@@EIfU[hBB@@\ndidD@@GHhhdVyifX@@\ndidD@@IIf][hHB@@\ndidD@@QInUxV`@@@\ndidD@@iIYgxVB@@@\ndidD@@yIYVXV@H@@\ndidD`BDHaIf_[hHB@@\ndidD`BxHaIf^XZVfP@\ndidD`FDHcHhdhZzZVX@@\ndidH@@RUe^Fh@@@@\ndidH@@RYm^Eh@@@@\ndidH@@RYm^Fh@@@@\ndidH@@Rfu^FfiX@@\ndidHPBBHFHRYgVzB@`@@\ndidHPBBHFHRYgvzB@`@@\ndidH`ABHrJJIEn`HH@@\ndidH`NADRYWZZ@B`@@\ndidL@@HTfYun``H@@\ndidL@@IdfYnfZfj@@\ndidL@@IdfYoaZYf@@\ndidL@@IdfYoa`b@@@\ndidL@@KdfYynZej@@\ndidL@@QdfumnZZjBL`\ndidL@@XTfUfn`BH@@\ndidL@@`TiYeLjjj@@\ndidL@@rldTTqkjjj`@\ndidh@DKaAInV[fiZ`@\ndidh@DqaAIe[kffjP@\ndidh`DJaxHcHheCBjfid@@\ndie@@@EIYW[n@B@@\ndie@@@EIfW[hBB@@\ndie@@@GHhhdVz@``@@\ndie@@@aJvUxZ`@@@\ndie@@@aJyW[j@B@@\ndie@@@iJ[gxZB@@@\ndie@@@yIYVX^@H@@\ndie@`BDHaIf_[hHB@@\ndie@`FDHcHhdhZz@H`@@\ndieD@DpFrJIJFnZii@@\ndieD@JXDR[Y^EjZd@@\ndieDAHxAzQyIYW[j@B@@\ndieD`JXaBPRYgvzejX@@\ndieD`LIN@HRZufFZid@@\ndieH@DDDfyWaZ@@@@\ndieH@DXDfyWaZ@@@@\ndieH@HHDeYWaf@@BH`\ndie`@@pjX\\dTTUk`Hb@@\ndif@@@RUe^Fh@@@@\ndif@@@RUe^Gh@@@@\ndif@@@RYVzZ@B`@@\ndif@@@RYevz@``@@\ndif@@@RYfVF@b@@@\ndif@@@RfU~F``@@@\ndif@@@RfWzXBB`@@\ndif@@@rRJEKaj@@@@\ndif@PABHJHRYgVzB@`@@\ndif@PBBHFHRYgVzB@`@@\ndif@PBBPFPRYgVzB@`@@\ndif@`ABHRYevz@``@@\ndif@`ABPRYVzZ@B`@@\ndif@`ACDRYVzZ@B`@@\ndif@`BBHRYgfzB@`@@\ndif@`D@HRUe^EX@@@@\ndif@`FBHrJIJFn`BH@@\ndif@`L@HRf_\\jjjh@@\ndif@`L@HRf_ljjjh@@\ndifD@BADfyWaZ@@@@\ndifD@BADfyWaZjj@@\ndifD@BADfzwaZjj@@\ndifD@DCdfYTfZiZ@@\ndifD@FADfW[aZjj@@\ndifD@J@TiWTjjjj@@\ndifH@AAIfuxV`@@@\ndifH@AAJ[W[j@B@@\ndifH@BAIfuxV`@@@\ndifH@DAIVUxU`@@@\ndifH@DAIVUxUjj`@\ndifH@DAInUxV`@@@\ndifH@FAIfuxV`@@@\ndifH@HAIYV[j@B@@\ndifH@JAIYekjZf`@\ndifH@JAIYgxZB@@@\ndifH@JAJ[gxZB@@@\ndifH@NAIYVXZ@H@@\ndifH@NAIe]ih@J@@\ndifH@NAJ[VXZ@H@@\ndifL@BANR[efEjjh@@\ndig@@@HTfYun``H@@\ndig@@@h\\dTRQriZj`@\ndig@@@idiggJejj@@\ndig@@@kdigwJejj@@\ndig@@@xTjU^njjj@@\ndig@`D[`bDfUff`@h@@\ndig@`Hi`bDeVWajfi@@\ndigD@DpP[HhdhZyjfd@@\ndigH@DK`R[e^Eh@@@@\ndigH@LxPRVUfz`@`@@\ndigH`BiaBPrJJIEniZf@@\ndkL@`@BDeUUUjjjj@@\ndkLB`HSBCprRSEQIYjjjh@@\ndkLD@@iIUmUVZjj`aH\ndkLF`DkaTpBLbdtVafjjji@@\ndkLH@@ReUUVjjjh@@\ndkLJ@@imMJUUUZjjj`@\ndkLLHLi`bB|MbCbDeVUUjjjj@@\ndkLL`HS@|DjUYfjjjj@@\ndkLP@@anF]OIDhhjeIjYi`RKh\ndkLd@BgSADf{UVZjjf@@\ndkLdABWSAMd~rJZYRHijjjT@@\ndkML@DdAuInUgVjij`@\ndkND@D@dfWUUZjjj@@\ndkNF@BAIWSR[YVYjjfX@@\ndkNH@DAIeuUVjjj`@\ndkNJ`EaLdp|LddrQTrZjij@@\ndkN`@@imMJUUUZjjj`@\ndk\\@@LdbbbRuZQT@B@d@@\ndk\\@`@bDfUvUimN@B@@@@\ndk\\@`@bDfYYwZ]NB@@@@@\ndk\\@`@dDfUnukmN@H@@@@\ndk\\@`@dDfUvUimN@B@@@@\ndk\\@`@dDfYYwZ]NB@@@@@\ndk\\@`@qDfYYwZ]NB@@@@@\ndk\\B@@P]RYVyznTviBBH@@\ndk\\D@@wHhhhhbfESZAhD`@@\ndk\\D`ALHaIe[UzZU`@iiH@@\ndk\\H@@RYeg]itxH@@@@@\ndk\\H@@RZYZ\\SgZifjf@@\ndk\\L@@KTfYmUXUMjP`R@@\ndk\\L@@X|bbbbTa[nEijjf`@\ndk\\L@@htie]urnF``Ij@bX\ndk\\L@@htie]urnF``JZ@aX\ndk\\L@@iTie]{rnF``Jf@@\ndk\\LPDp`BH|LbdRRaRX]Mjj@B@@\ndk\\`@@iSRfYyUnEPJBja@@\ndk\\`@@j]RfYuUnFPJAjb@@\ndk\\`@@kSrQQQSQEngPJBja@@\ndk\\`@@p]rQQJJIFiXP`jJa@@\ndk\\`@@y]RVUmUae^@HZb@@\ndk\\`@@{SRVUnUag^@Hja@@\ndk\\d@Dq]@\\bbbbfJZ]MjjZe`@\ndk\\d@DrUCdfY[uXUujijY`@\ndk\\d@DsmB\\bbbTrQXUujjUj`@\ndk\\d@LHYCdimY^X]N`BJh`@\ndk\\h@DrfAIgeU^GSZfh@@@@\ndk]@@@iJYez\\hSdJBh`@@\ndk]@@@qJYweZ[SB@`@@@@\ndk]@pAt@a@``aIeoeRkSZf`@`@@\ndk]D@DhBRY[UWatvjZ@@@@\ndk]H@ALLbbRfTJiaf@Bfh`@\ndk]H@BtDfYmUXUMjP`R@@\ndk]H@DHDfYyWImMjhHA@@\ndk]H@DTLbTTRaR[mMjj@B@@\ndk]`PLJnTpBIBDiguermNfZijP@\ndk]h@HKiTpRYmfTYtz`HIb@@\ndk]h@HKiTpRgefTYtzZiZiBD`\ndk^@@@RYV{Vntx@`@@@@\ndk^@@@RYeg]itxH@@@@@\ndk^@@@ReUVZ]TziZ@@ABZP\ndk^@@@RfYU\\]Tz@@@@@@\ndk^@@@Ri_YVftzjX@H@@\ndk^@pFBPJPFPrJJJZIGitxHB@@@@\ndk^@pIBPJPvPRYfuUaTxH@B@@@\ndk^D@BADfyVux]Mh@@@@@\ndk^D@BCTfYmUXUMjP`R@@\ndk^D@E@dfYuY[eNB@jh`@\ndk^D@IADfvYWz]MjdHB@@\ndk^D@MBdie]vrnF``Jj@@\ndk^H@DAIVUm^GSV@@@@@@\ndk^HPJHJqjqIf[u^GS`b@@@@@\ndk^HPNHJrXaIf^UvGS``B@@@@\ndk^HPNHLR\\QIf^UvGS``B@@@@\ndk^H`BPHaInUm^GSj@@@@@@\ndk^d@DkaTCrJIQQHynWVjVZZ@@\ndk^d@LzULDRZUnTYtvjiZi@@\ndk^h@DkatLbbTTTU[iujejjP@\ndk_@@@Y\\daRRRTaMNjjjj`@\ndk_@@@pdif]uriUjB@j@@\ndk_@@@pldTTtRJrmMjfjU`@\ndk_@@@x|dTTTRJkit@HBH@@\ndk_H@NWPRfumUaeZ@HZb@@\ndklB@@F]RYe]ynZYif`@\ndklB@@P]R[e[_iZ@Hj@@\ndklB@@QSrJYJIJF]ZX@b@cH\ndklB@@QmR[fUxUZBBF@@\ndklB@@RURYYV|jZfij`@\ndklB@@SSR[VUVUZZfjPcH\ndklD@@QIe]URijjjj@@\ndklD@@QIe]e]Mjz@@@@\ndklD@@QIgfU}MjhD@@@\ndklD@@[Hhdhbdjz@Hjh@@\ndklD@@eJ[Vvfz`@jh@@\ndklD@@kIEMDdbnf``bd@@\ndklD`AtIAIVUm~fh@bh@@\ndklF@@PittfzugEVjjjh@@\ndklL@@PtfyWUxV`@j`@@\ndkl`@@kaRe[vTf@HZj@ah\ndkm@`MLHcHhhdcDfz@`Z|@@\ndkmD@DHCRYvUvUZh@J@@\ndkmD@DTCRUfWtYV@`e@@\ndkmD@DdCrIJJIPxUV@bE@@\ndkmH`FVPbDfUonkh@bZ`@@\ndkmH`NVPbDfUunih@JZ`@@\ndkmL@DpAuIfYeVejjZZ@@\ndkmL@DpIOHhhdddVyjiVfBN`\ndkn@@@RYfVya`Hbj@@\ndkn@pLCDDHWDRUeYWSjjijP@\ndknD@BADfyWUxV`@j`@@\ndknD@D@tf^UeFVh@J`@@\ndknD@D@|bbtTTUgVhBH`@@\ndknD@LALbbRbaRtvjh@@@@\ndknDPAWPbFbLbbRbJfkh@bf`@@\ndknD`ItpdDfUunih@Ji`@@\ndknD`ItpdLbbRaTtih@Ji`@@\ndknD`ItpdLbbbRLt[hBBi`@@\ndknH`It@aJYWunF``JX@@\ndknL@BACR[me]]Zj@B@@\ndknL@D@SRUVYu]ZXHB@cH\ndknL@D@]R[e[_iZ@Hj@@\ndknL@FASrJJIIJT]ZBBb@@\ndknL@M@iRYg^un``Jj@@\ndkoD@DJPwHheLeCAej@BX@@\ndkoH@DHpRYYUfSZ``h@@\ndk|@`@BLdTRbtQJagShD@@`@@\ndk|D@@QIeeUrYngVjijjP@\ndk|H@@RYegYngUN@@BHH@@\ndk|H@@RfYU_JGUN`@@B@@@\ndk}@@@iJUmUR[atpBJ@@@@\ndk~@@@RYkUdUgYNjjjjh@@\ndk~@@@RfYU_JGUN`@@B@@@\ndk\x7F@@@p\\dTRbfQjVGSBBheF@@\ndmL@@DjYUVGi@@@`@@\ndmL@@DjYeVdU@@`@@@\ndmL@`@bLbbbTQ[iV@@@@@@\ndmLB@@IerJJJZEnxVijf`@\ndmLB@@RURYUVJaejVjh@@\ndmLD@@QIe[VfeVi@B@@\ndmLD@@UJYWwJxZA@j@@\ndmLH@@RYVuiiV@@@@@@\ndmLH@@RYiYKnUjjjh@@\ndmLH@@RYiYKnVjjjh@@\ndmLH@@RffeZVVjjjh@@\ndmLH@@Rge[aNFh@JP@@\ndmLH@@rJJIQEneX@@@@@\ndmLL@@yTee[VFUX@bb@@\ndmL`@@pURfV[jVDHJbD@@\ndmL`@@siRfUmhVxHFJH@@\ndmL``Dke@HRYYeXYUjfVh@@\ndmLd@Dqe@TfUeZzUZZeZ@@\ndmLh@DkeAIefUaeVjYZ`@\ndmM@@@UJYY~nFP@@H@@\ndmM@@@eJYY^fEP@@`@@\ndmM@@@iJYewJEYB`b@@\ndmM@@@qJYm^neP`@@@@\ndmM@@@{IDeCDbjU@Bjb@@\ndmM@@@{IEEEEZzU@B@@@@\ndmMB@DpNETfYYZEiZjYZ@@\ndmMH@DHDfVUzzUZ`PH@@\ndmMHAHx@zIrJJIQEneX@@@@@\ndmMh@DkaePRYYe[iUifjd@@\ndmN@@@RYVuiiV@@@@@@\ndmN@@@RfVWiaT@@H@@@\ndmN@@@RfV]iaT@@H@@@\ndmN@@@RfV^kad@@B@@@\ndmN@@@RfV_kad@@B@@@\ndmN@@@RfWUiiTB@@@@@\ndmN@@@RfYWraV`XH`@@\ndmN@@@rQQJJFfEP@@`@@\ndmN@@@rQQQQVneP@`@@@\ndmN@`BBHRYe[ZQV@@@@@@\ndmN@`BBPRYUUiiV@@@@@@\ndmN@`BBPRYe[ZQV@@@@@@\ndmN@`DBHRYVuiiV@@@@@@\ndmN@`FBPRYVukiV@@@@@@\ndmN@`NBPRYegXYV@@@@@@\ndmN@`NBPrJJIQEneX@@@@@\ndmN@pN@H`HPHrRPqIZneUhDB@@\ndmND@BA\\bbbReInFjZjd@@\ndmNH@BAIfUmiEX@@@@@\ndmNH@DAIe[VfeX@@@@@\ndmNH@FAIe[VneX@@@@@\ndmNH@NAIYe^neZdHB@@\ndmNH@NAIfV]aeX@@@@@\ndmNH@NCHhheDVzU`@@@@@\ndmNHAH@Nb\\bbbTQ[iV@@@@@@\ndmN``DkaT@aIefUneVjVjP@\ndmNd@DqiTARYVUkiUijUh@@\ndmNh@DkaTDfVYVzUZiZi@@\ndmO@@@pdif]|jUZ``H@@\ndmT@p@AHbDbLddJRRjjj`@\ndmT@p@bBBEbDeYyzjjh@@\ndmTB`HSBCpRjuUZjj`@\ndmTD@@QIeU]jjZ@@\ndmTD@@iIUmUfjjBD`\ndmTDPDpOBICIHUHiIjjh@@\ndmTD`HdDiJiUZjjf@@\ndmTH@@RUgVYjf`aD\ndmTH@@rJQHiRjZZ@@\ndmU@HLT@a@c`bPaIggYjjf@@\ndmU@pLD@a@c`cHheEKFjfh@@\ndmUL`LZiT@aI[mZjZf@@\ndmVD@D@dfWUVjjh@@\ndmVDbNp`qNeI[Ujfjj@@\ndmVL@LAERYuUZjj`@\ndmWLaNeXS@|Ie^Rju_ZjiP@\ndmlH@@RfVvaFGajjjj`@\ndmn@@@RZUYX^gejjjj`@\ndmnH@JAJUe^D[iV`@@@@@\ndmt@H@bAdIdEdDfUvjZ@Bj@@\ndmt@h@bJbNbIbEbDfV[vFZjj`@\ndmtB@@PUrJZIJGiZ@H`@@\ndmtB@@QeR[f]FV``H@@\ndmtD@@QIe]TjZjjh@@\ndmtD@@QIgYVUZh@@@@\ndmtD@@UIfuwaZ@B`@@\ndmtD@@WHhidh^Eh@J@@\ndmtD@@aJye[ahBB`@@\ndmtD@@iJ[g_ahHBP@@\ndmtDPAdH`haIf]Un``J`@@\ndmtDPBTHbXaIf^un``JP@@\ndmtDPITICiAIfVYa`Ha`@@\ndmtDPNDHaXcHhheEVfBAb@@\ndmtH@@RVUv[fZjZ@@\ndmtH@@RVUv[jZjZ@@\ndmtH@@RYWZih@Jh@@\ndmtH@@RYeY[hBBh@@\ndmtH@@RYe[[hBBh@@\ndmtH@@RYeeZVjjj@@\ndmtH@@RYeeZZjjj@@\ndmtH@@RYe~[ffjZ@@\ndmtH@@RYvUeVf@@BL`\ndmtH@@RZWv[jjjZ@@\ndmtH@@Rfuu[j@BXBA`\ndmtH@@Rfuu[j@Bd@@\ndmtH@@Rfuu[j@Bh@@\ndmtH@@rIQQQWiXBH`@@\ndmtHPNBHHHRUUeeZjii@@\ndmtH`IBHRUe]xY`@hBH`\ndmtH`JBHRYVueYi@@BHP\ndmtL@@ETfYUVyifi`@\ndmtL@@F\\bbfbQXVjjj@@\ndmtL@@QTfyW^Eh@I@@\ndmtL@@QTfyW^Eh@J@@\ndmtL@@QdfygQehHB@@\ndmtL@@SdfVyyUjB@@@\ndmtL@@yTee[VE`BJ@@\ndmu@@@GHhhhhvf@bb@@\ndmu@@@aJyyVUjh@@@@\ndmuB@DpAeTfUejyjiV`@\ndmuB@DpFFTfUgjyjfj`@\ndmuB@DpFe\\bbRaRkfjZi@@\ndmuD@ITDR[e]xV`@h@@\ndmuDAHDEFU{HeEDh^F`HJ@@\ndmuDPHhfBHFHRYf~kjfZj@@\ndmuD`LVD@HrRRqIXYV`@`@@\ndmuD`NEeCDRUf_FYiZfBH`\ndmuH@DHDf]eYUj`@@@\ndmuH@DTDf^Uqej@B@@\ndmuH@DpDfUmYUj`@@@\ndmuH`BhPbDfUmzZZZ[`@\ndmuH`BhPdDfUmzZZZ[`@\ndmuH`BhPkDfUmzZZZ[`@\ndmuH`BhPqDfUmzZZZ[`@\ndmuH`NVPbDfUujZ@Bf@@\ndmuL@DpByIf]zfZjZh@@\ndmuL`DxiTHaIevxjfjih@@\ndmv@@@RYfVXXBHh@@\ndmv@@@RYfWXXBHh@@\ndmv@@@rJQFIJUjh@@@@\ndmv@@@rRJIIFUjB`@@@\ndmv@HDBHFPfPVPRYWZih@Jh@@\ndmv@`D@HRUVUeUj@@@@\ndmv@pEBPRPrPrJPqIXYj`@`@@\ndmvD@DATf^Uqej@B@@\ndmvD@DATfvUqej@B@@\ndmvD@DCdf^YyUjB@@@\ndmvD@EADfvUqej@B@@\ndmvDPBS@BHBLddjbReUjjj@@\ndmvD`La@BLddlRVFUh@H@@\ndmvD`La@BLddlTReUhB@@@\ndmvD`NePBDig{ljfZf`@\ndmvH@DAIgfVUZ`H@@@\ndmvH@FAIe[Vn`BJ`@@\ndmvH@FCHhhhdYUhJ@@@\ndmvH@IAIeYVfZVih@@\ndmvH`NdHaIe]Zf`@i`@@\ndmvL`IaL@HrRRqIPUV`B@@@\ndmw@`Dp`BDf]eYUj`@@@\ndmwD@ByPQInvVUZjeh@@\ndmwH@Dp`RYvUeVj@@@@\ndnDH@@ReVDijiZ@@\ndnDH@@ReVDijij@@\ndnDH@@ReVDijji@@\ndnDH@@ReVDijjj@@\ndndD@@iJUhPfijjj`@\ndo\\BPHP{@HtHrRPzIKJQZjje`@\ndo\\F@@Savtf^UVYjjjY`@\ndo\\NPHQevw@DHDrRYJKJHqjfii`@\ndo]B@L\\Dv|bbtTTUTZjjjX@@\ndo]LpN_JXH`o@xaIUkUWjfjjh@@\ndo^B@NAK]ImgV^ZjjjX@@\ndo^D@D@dfWUUUjjjj`@\ndo^J`CaLKP|LddqbbTlZijfhHi@\ndo^LpGZ[BHHHhHrJZQIIHrZjji`@\ndo^LpNWSCDpHJPRV]efyjjfZBH`\ndo|D@@QIgfUYuvj``h@@\ndo|D@@QIn[WVeVj@Bj@@\ndo|J@@S[_HheDdeDYMjBBb`@@\ndo|L@@RtfUVuwSZjp@h@@\ndo|L@@RtfvYWwSZjA@h@@\ndo|L@@iTinU]_ihHHjXBCP\ndo|L@@iTinU]_ihHHjXBC`\ndo|L@@kldTtTRQrEZBHbi@@\ndo|LPDp`BH|LbdRRbRQmvjhJ@@@\ndo}D@DTIrJZQQQIVwZjAh@@@\ndo}DPAuSBHJHRYg]nVzB@ij`@@\ndo}D`ILmBHrJJIIESQa``bfh@@\ndo}H@DHLbbTbjbRmvjj`@@@\ndo}H@DpLbbbLRVTWVj`@j@@\ndo}L`LvDl@cIIBidleIUZ`@i`@@\ndo~B@BAC_HiiMhdh]mjj@H`@@\ndo~B@BAK]InVuf[fjjif`@\ndo~B@I@moHhhdddcFEjVjYh@@\ndo~B@JAC_HheBhdh]mjj@H`@@\ndo~D@DAlbbbRQbRmvjj`@@@\ndo~D`MNpqLbbbRLRa[hBAkZ@cd\ndo~J`IaLNpaLddlRTrTEVh@bf@@\ndo~J`LXUMpBLdTVafffrjjjjj`@\ndo~L@LANRYye[iujBBJ`@@\ndo\x7FD@Lk`QIgff{yVjZjjP@\ndo\x7FH@DxPRYYe}ZyiZjjh@@\neFA@lhbL@\neFAAD`bJ@\neFAADhbL@\neFABDhbL@\neFABHhbL@\neFACDlRL@\neFB@Hc@@\neFB@Jc@@\neFBBHc@@\neFBBlc@@\neFBCDc@@\neFDBb`@\neFDBc@@\neFHBL@\neFJHaHh@\neFJHbHh@\neFJhUKhh@\neFPBc@@\neF`BL@\neFbHbHp@\neM@H~@\neM@ghz@\neMA@HPaIT@\neMABD`bM`@\neMABlZqIh@\neMACD\\QIh@\neMB@Jch@\neMBBHRZ@\neMBBPRY@\neMBBlRZ@\neMDARV@\neMFI@bMP@\neMHAIX@\neMHAIh@\neMJHaHv@\neMLRRWhv@\neMPBch@\neM`BN`@\neMhDRV@\neMhHRY@\neMhHRZ@\neMhHch@\neMpBXv@\neO@Hyj@\neOBBHcfh@\neOBCDcfh@\neOHBNZ`@\neOPBcfX@\neO`BNZ`@\nfH`T@@\nfH`X@@\nfH`p@@\nfHap@@\nfHbT@@\nfHbh@@\nfHc`@@\nfHcp@@\nfHdH@@\nfHdP@@\nfHdT@@\nfHd`@@\nfHe@@@\nfHf@@@\nfHfp@@\nfHg`@@\nfHgp@@\nfHpXT@\nfHppT@\nfHpp\\@\nfHppt@\nfHrpT@\nfHtHh@\nfHt`x@\nfI@@\nf`a@`@@FrJJIJQJrLxtsUSU@@@\nf`a@`@@ZrJJJQIPfJltEPTT@@@\nf`aA@@@YEEEEETdfB`Hbjj@@@\nf`aAb@NFlBHrJIKIRJUTY@AUST@@@\nf`aAc@DXH@HaxNBLbdRRaRfvcMUP@U@@@\nf`aIB@DXHYp@aIgVUueZZf@Bf@PI@\nf`aPP@B\\@bwlbfdRLRTIgMUT@Q@@@\nf`aQB@NJdBHRYWVyncH@JZjp@@\nf`aQC@IVLBPQHXdLbdLRTvf`eUPADu@@@\nf`a`R@NBT{pHaIe]nujL`@jZf@@@\nf`a`b@KRTCDRVUvuYgJ@BZj`@@\nf`a`b@KRTCDrIQISPiJLEPACUT@@@\nf`a`r@MPQ`ag@|LddqTTRbNkMU@QC@@@\nf`aaB@NRADYEDediiDZL`@ijj@@@\nf`aaP@I@QPQlbbTabaaeNMUSUUP@@\nf`aa`@D@IqInvuURTZjZff`HUV`\nf`axB@DXIhso@BDf]e]VdijZVZZ@`dj@\nf`i@@@DjYeW_YHRg^@@`B@@@@\nf`i@@@DjYeeoyHQm^@@@@h@@@\nf`i@@@LdbbbRVQSEBd{p@DA@@@@@\nf`i@@@LdbbbTRISIBt{p@DD@@@@@\nf`i@@@LdbbbbbRkEB\\[p@@PD@@@@\nf`i@@@LdbbbbbSwEBlYp@@P@P@@@\nf`i@@@LdbbbbbT_EBl[p@@PA@@@@\nf`i@@@LdbbbbbrKEBl[p@@PA@@@@\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\nf`i@`@@BrJJJJJIXlUiuoP@D@@@@@@\nf`i@`@@DRYfyU]`mNmyi`@@B@@@\nf`i@`@@DRYfyU]`mNmzB@@@@@@@\nf`i@`@@LRYfYuw`eV]zhJ`@@@@@\nf`i@`@@VRYfYU]`eNMyh@`AB@@@\nf`iA@@@YHhhheLUfBdYwjBb@@H@@@\nf`iH@@@RM[IEDhmBdeS`eZL@@DMTD@@\nf`iH@@@RM[IEDhmBdmS`eZL@@DMTD@@\nf`iH@@@RlyJYY{WZ\\Dhu`@@bZ``@@\nf`iH@@@Rl{IEDhmCDcS`eZl@@DUTB@@\nf`iH@@@TUkIEEEhdd\\s`eV\\APUTlL@@\nf`iH@@@XDiJYYe_jRXHs``jJYa`@@\nf`iH@@@XDkIEDhhdmcRSAF\\DEQSLL@@\nf`iH@@@\\myJYfUuZ\\d[S`@@@H`@@@\nf`iH@@@\\myJYfUuz\\d[S`@@@H`@@@\nf`iH@@@\\m{IEEEDedkSdcZ\\@@@AD@@@\nf`iI@@DJlxBSJvmjtYKQkMR@PuQ@@@\nf`iI@@HXIXBRsKkZtxkSoSUP@@@@aA@\nf`iI@@H\\EhFQJJIPiIKdeZ]z`HajTh@@\nf`iP@@@NRifyWU`eVMzjPZBbP@@\nf`iP@@@VRifyWm`eNMzjPZBbP@@\nf`iP@@@^RifyW}`eVLzjPZBJP@@\nf`iPB@LD@DYHhbhheD\\TtYwjY`@@H@@@\nf`iPBDK^@D@eJYfUuZ\\d[S`@@@H`@@@\nf`iP`@BJ@aInUUm^BUiwfjjh@F@@@\nf`iP`@BR@IIf]UUV\\UiwfiZZ@H@@@\nf`iP`@B\\@aInVUuQRUiwfjij@H@@@\nf`iP`@FB@QIf[eU~Rtzwff@@@H@@@\nf`iQ@DK^@BTifYWUirQmN@@@@b@@@\nf`i`@@@IKLlj{pRkN}p@@@@@@@\nf`i``@M@YdTTTTQaRyIQg^jBb@@P@@\nf`ih@@@LDYvRJIQPiIJcIJtX@@`ZhH@@\nf`ih@@@\\UYvRJJJJsIJgIZMX@HBJhH@@\nf`ih@@@\\eYvRJJJJUKJgEZMX@HHFhH@@\nf`ip@@@N}dbbbbRQrhJQmV@@@@J@@@\nf`ip@@@V|eLsJzmNRMip@@@DP@@@\nf`ip@@@XTeLwOvmNJt{pPQT@A@@@\nf`ip@@@XUdbbRRRaRiqVg^BBJ`@H@@\nf`ip@@@XdeLv{ZmNRUYpPQP@Q@@@\nf`ip@@@XdeLv{Z}NRUYpPQP@Q@@@\nf`ip@@@XheLwKkkNRT{pQAU@@@@@\nf`ip@@@XmdbbbTTqVXJQg^@H@@@@@@\nf`ipB@BBdBHRYeY_Y`nRlzBAJiXh@@\nf`iq@@BBdAIf]UUV\\UiwhH@@@@@@@\nf`iqB@HLEpBHeJkOrnBBd{uKSL@E@@@\nf`q@@`@QBhbtQzHRYegeudcN``@`b@@@\nf`q@A@@QGhaIe]fuzLlz@Bh@H@@@\nf`q@P@@HMyIgUe[]V]yjZ@Hh`PI@\nf`q@P@@HMyIgfU{]V]yjhDHh`@@\nf`q@P@@HTyIgUfUc^lyjZBB``PI@\nf`q@P@@HU{HhlhheEbhvkMULttr@@\nf`q@`@@LRYfWg^Qg^ZB`@@@@@\nf`q@`@@LrJIJHiQITx{t@QL@@@`J@\nf`q@`@@^rJIJEJIKTYYt@Dp@P@ar@\nf`q@`@@^rJJJJHpkTXkSPTPUT@@@\nf`q@a@JZADFbLbTTTtRROIN}TmPLA@@@\nf`qA@@@ILrj}jISoM@a@@@BEH\nf`qA@@@YDhhdmECJ\\UYfiVjZP@@\nf`qA@@@YDhhdmECJ\\UZfiVjZP@@\nf`qAB@C@bLbRbbbebpmV]TAECTP@@\nf`qAP@@De[vQQQSJJFTVcNZdJHbP@@\nf`qA`@@FmdbbdTUrRiIVjBh`jd@@\nf`qA`@@N|dsLjolcZlt@@@T@@@\nf`qAp@@HiIUgYEDhdeDUBLEIjfjjZ`@@\nf`qHB@DXIp@PdskKJzcN|uL@@@@HD`\nf`qHP@DXxHDg^rJIQSPiITyhsSUUUS@@@\nf`qH`@DLeXELbbTVRTQfcN|uMUUUP@@\nf`qH`@DXEXFdfYfWVYHufjjYZj@@\nf`qH`@DXUXAlbbbJRRfaJN|uUUSUP@@\nf`qH`@DXtX@lbbbbbQRSIF\\uUMULp@@\nf`qIB@DXIHP@aIgYfuyJ]yjZXHB@PI@\nf`qI`@DXEXBmYEEEEDldVRMYjjfVj`@@\nf`qP@@@PRkfUWvQmVj@@@J@@@\nf`qP@@@^RYWUe^cKN`@j@B@@@\nf`qP@@@^Rfuue]gKNh@J@B@@@\nf`qPA@NBAD^bDfUuYWhrsh@I`@`ACd@\nf`qPB@DX@DILwLjoiuoMUUUUT@@\nf`qP`@DBAKHheHdhbmPSoMUTa@P@@\nf`qP`@DXAqIfWnUrL]yjihHB@@@\nf`qQ@@FRAdTRTbdTLMYwfjjjjj@@\nf`qQB@G^`@HRkfUWvQmVZ@@@J@@@\nf`qQP@DX@ISoILrl{jsfcMUMMUT@@\nf`qQb@LD``P@cIICDhhlUrSoKUST@@@@\nf`q`P@L@PHrSJwJwJmhsUAAQQ@@@\nf`q`P@L@PZvQQISQIPiVg^ZhBBjH@@\nf`q``@D@EdTRdTTqVYIwfji``H@@\nf`q``@D@HdsOZvjmN|uT@@@@@@\nf`q`b@ILD@HrQQJJMQITX{uMTt@D@@@\nf`qa@@D@RYyeg^Qg^Z``@@@@@\nf`qa@@E@rQQIZYQF\\EjuA@TuQ@@@\nf`qaA@ODADRbLbbbRRaRsAV]AAD@D@@@\nf`qaP@D@hIVdfVfy{IrgFjjfjj@@\nf`qa`@L@PKHhdheEhchsoMTD@@@@@\nf`qa`@L@QqIgfUnyZTYjBBJh`@@\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\nf`qi`@FRt{pDDR[mfUuVkNZjhDB`@@\nf`qp@@@Hpds\\rj~gV|uP@@@@@@\nf`qpP@DXxBQoYEDhihUDZBuYijjji`@@\nf`qpP@DXxBSoYEDhihTdjBtYijjji`@@\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\nf`qq@@BBdAIf]ueV\\]zB@f@@@PE@\nf`qqa@FRUAE`AE@cIICDedeDJQgKTuMMR@@\nf`y@@@DjYeU\x7FYHRmF]x@B@D@H@@\nf`y@@@DjYegvYHQmNmx@@@BHA@@\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\nf`y@@@LdbbbbbfkEB]Jqo@@A@PA@@@\nf`y`@@@ISKJmmQ`cZ][p@@@@@@@@\nf`y`@@@ISKONwS`iZl{p@@@@@@@@\nf`y`@@@YHdhddhTbTeiQg^@@@@@@@@@\nf`~@`@@HR[UUUUjjjjh@@\nf`~@`@@TReWUUVjjjjh@@\nf`~@`@@XRfUv}ZjijihDFP\nf`~A@@@IJskNmSUMTtABGb@\nf`~A@@@ISjjjkSLsMTBbDbqDjP\nf`~AJ@HHpSdmV|CprRSESSSSMUUUT`@@\nf`~P@`LZ@DHBBAB`cHheDdiXduUTuT@@\nf`~PQ@FBUhu`AD@aJUYn{zjjfZ`@@\nf`~X@@@TYhwdiUUU]jjjjj@@\nf`~`J@NPQafcN|CprRRjYQQFMTuSS@@@\nf`~`b`KLLBHHDTBNA@`aIneUYYjjjZ`@@\nfbc@@@DjYeUU]VJEKQ`ybd@B@D@@B@@@\nfbc@@@DjYeUoUvRDkQoIcd@B@@@@B@@@\nfbc@@@DjYeU\x7FUVRDkQg^Sd@B@D@@B@@@\nfbc@@@DjYeeU_VZEJt_ICd@@@@`D@`@@\nfbc@@@DjYeeou~RD[W`qSd@@@B@P@`@@\nfbc@@@LdbbbTRrTroIBMks`ir@@@@Q@@H@@\nfbc@@@LdbbbTVraVSIBMkugIr@@@AP@@@@@\nfbc@@@LdbbbTVtRqSEBMjsoIr@@@@T@@H@@\nfbc@@@LdbbbbbVVrOEBlXKoIr@@D@B@@P@@\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@QC@D@@\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@DS@D@@\nfbc@@@LdbbbbbbcJwEB]Jq`ir@@DA@@A@@@\nfbcA@@@ILk\\l|{txhug^BgKRtBPBAQ@@@\nfbcA@@@ILsLjmwLDkqhnRGKP@@@@@@@@@\nfbcA@@@IRlrrk{pQSbgVBgM@@A@@@@@@@\nfbcP@@@JrQQJJZYIEITxKQkN|gH@@TUP@D@@@\nfbc`@@@IRlrrk{pQSbgVBgMT@A@@AP@@@\nfbc`@@@YHheDdihhTZLD[P[^Sd@@@@@@@@@@\nfbc`@@@YHheEMDXlijREhuoQSd@@@@@@@@@@\nfbeA`@@^rdrjljmkXKSUAAQT@ab@\nfbe`P@J@QjNQQJZZJJJYWrVjjAbJH@@\nfbe`a@KDtBlEVYEEDeDh]ddfR``hfzj`@@\nfbeaS@Lfl{rPPd@a@QddRTRRTTWTtFj`hFXf@@@\nfbepP@LZbAC`iLjmmnvjtuUMUTuP@@\nfbepb@BZ}IPHaIf]V_VUgHHBfjjh@@\nfbm@P@@BMGHhhhhhhm\\esRoNBt@PT@UP@@@\nfbm@P@@HD[HhdihdiddYSbk^BuHPTUMP`@@\nfbm@Q@NV\\DDPfHrJJIQPqIJFLUKT\\pPM@LQA@@@\nfbm@`@@HRYvYfUWTYrPyZh@@@H@@@@\nfbm@`@@YRYVvW[WhpThi`@ij`@b@@@\nfbm@a`FZADDbAQ@XaLQfHrJJJZIFYJK\\ehwhpQDT@QQ@@@\nfbm@a`FZADDbAQChbLQfHrJJJZIFZKP|ejpTpQDTDDQ@@@\nfbm@p@@JMxJ\\bbbbbbbRegAZb{KPADPLQ@@@\nfbm@p@@JmxJ\\bbbbbbTRacAZb{KPADDLQ@@@\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\nfbmAP@@BLGNQQQQQQQYGGbm^]Eh@bHAJ`@@\nfbmAP@@BUGNQQQQQQPeIG`mNBehIb@@b`@@\nfbmAP@@HCGNQQJIYJJKSDeEZBejjjjjjj@@\nfbmAP@@HeENQQJJJIKZIUgMNmyj@H@Bj`@@\nfbmAP@@JMxNQQQQQQQIRw`mQ\\eh@bHFB`@@\nfbmAP@@\\e{NQQQJJKFIKYgEFbehFH`HB`@@\nfbmAP@@\\e{NQQQJJKFIKYgEFbehJH`HB`@@\nfbmH@@@\\myJYfUu^zgIFtx@@@BJj@@@\nfbmH`@EVBdGlbbbbbbTRacAZb{KPADDLQ@@@\nfbmH`@JRUDBTin]UUU~Bt[pZB@@@Bh@@@\nfbmHp@J\\DhBC^SgHheEDjheEdsdeNBuRsUUUU@@@\nfbmIR@LLDiAoIr@HrJSJIHjIQY\\EIS`uUJuUUUP@@\nfbmPB@NA@DYHhhhddmcEJ\\e[Sj@H@`jj@@@\nfbmPB@NQ@DYHhhhddmbeJ\\e[Sj@H@`jj@@@\nfbmPBDK^@D@eJYfUu^zgIFtx@@@BJj@@@\nfbmPP@KA@kr\\bbbbbbTRacAZb{KPADDLQ@@@\nfbmPQ@ARMyNPQAHaIf]UyYugIJ\\FB@ijjjJ@@\nfbmPa@NVtx@PHHrQQQJIPjXiTD[r\\uK]S[@D@@@\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\nfbmQB@AJRBHRYVyV[WisShy`BFhJAB@@@\nfbmQB@EZBBHrJIJZIQQYHtxhr\\pACUAHA@@@\nfbmQ`@DX@sJSJmsJkyJNbEKUM@@@E@@@\nfbm`P@A@BgJSLsLoOsEZ}ZKPADABM@@@\nfbm``@A@BdsLsJk|qVoVbt@Q@PeP@@@\nfbmh@@@XIQRTsNj~rkNRtgHD@DU@@@@@\nfbmhR@DXyJroIrBPrJIQQJIYPyTDZs`sUMUUURp@@\nfbmi@@DTxIPLbbTTRqbRfSNRUxKUKM@AUP@@\nfbmiP@DTxIPC^SgHheEDjheEdsdeNBuRsUUUU@@@\nfbmiP@DTxIPMVSgHheEDbmDddsde^BuRsUUUU@@@\nfbmiP@DXXKPC^SgHhdheDYeEeSdmNBtuUUUUK@@@\nfbmiP@LF]EHIJugIEEEDdhjllRegAcUUUPHET@@@\nfbu@AP@QAHadPJHeDZbGQ@XaLQfHrJJJ[PrZJ[TyzMLuUULuP@@\nfbu@S@FZCDDPRH\\DILs\\}|r|dgLDQDuKTH@@\nfbu@`@@IRYV{eg^irNX@aj```@Py@\nfbu@`@@YRYWYeg_hrJVeffjef`@@\nfbu@b@AVADYEDeCMHiXdjLSf@Bji`@@@@\nfbu@b@AVADYEDeeMHiXdjLSf@Bji`@@@@\nfbu@b@AVADYEEDeKHiXdf\\Sf@`ji`@@@@\nfbuAP@@BtFNQQQQQJKGIISk^Z@HH@j`@@\nfbuAb`BJ\\BHxDRbHqFXcHhhmDiXhmDpPTpPQLDDP@@@\nfbuHP@DTtdCHyrJIJHqSSIQTxEKUMUUTsP@@\nfbuI`@DXtX@dyEEEEDbddUFRLyjjZjZfX@@\nfbuIp@DXyHBcV|gNQQJJIQYJGJ`gAZZjjjjj@@\nfbuPJ@CA`cANJ}dGaddfJbTQbbvejJVjjjjYf`@@\nfbuPb@GQxDDPdrnlkk]QakP@T@EMP@@@\nfbuPr@FVQSaoIAHIM\\w[KntDxMUUULuMP@@\nfbuPr@NBYhwdyAbIJsNk[NbdxLtmTuUUPHP`\nfbu`P@D`EGNQQQQQUJYJIb`iZjjjjfZ@@\nfbu`a@HLx@JpDYHheHiXddmgQBfje`@@B@@@\nfbuaP@L`pIUdifV^}}ZR|FjjjB@k`@@\nfbua`@D@uYIge]nyTTdyZ`@jh@@@@\nfbupb@IZCrpHaIe]YfWjcOA`@jjYZb@@\nfbupr@DDhJRgIrBHRYYymY_IRwiiijjjj`@@\nfby@`@@HR[UUUUUZjjfjj`PT`\nfby@`@@HR[UUUUUZjjjjj`@@\nfby@`@@YRUUUUUUjknknj`@@\nfbyA`@@LdeJl{jjkSUMLsU@haxjSKd\nfbyPH@BZ@bR`qSgHieDeDXdhhuUSUTs@@@\nfb}@@@DjYeeou~RD[Wdy@@@@`H@@@@\nfb}@@@DjYee\x7F]^RD[S`q@@@@@B`@@@\nfb}@@@LdbbbTRrJROEBMipT`@@@@DP@@@\nfb}@@@LdbbbbbRJvcCBTzHT`@A@@@P@@@\nfb}@@@LdbbbbbRVNSCBTzJ\\`@QDTB@P@@\nfb}@@@LdbbbbbRVNSCBTzJ\\`@QDTD@P@@\nfb}@@@LdbbbbbT^VgEBl[tT`@A@DTpD@@\nfb}@@@LdbbbbbT^VgEBl[tT`@A@DUPD@@\nfb}@@@LdbbbbbTqrOEBlXLT`@A@EEPB@@\nfb}@@@LdbbbbbqfvSMBlYr\\`@A@A@@@@@\nfb}@B@@RBSJwKON}NJMYr\\p@@@@P@@@@\nfb}@B@@RBSLl|{vkART{r\\p@@A@@@@@@\nfb}@B@@RBSLl}kvkART{r\\p@@A@@@@@@\nfb}@B@@RBSLsKoN{AJlxJ\\p@P@@@@@@@\nfb}@B@@RFQQISQJJZUJgEFmyNX@@@B@@@@@\nfb}@B@@RFQQQJIIQIKEgIF|ENX@@@H@@@@@\nfb}@B@@RFQQQJIIZJYEgIFmyNX@@@@H@@@@\nfb}@B@@RFQQQJJIJIIEgIVCfJX@@@B@@@@@\nfb}@B@@RFQQQJKPiIII`iJlzJX@@@@@H@@@\nfb}@B@@RFQQQJKPjJEI`iJmyNX@@@B@@@@@\nfb}@B@@XfQJJJJIIPy[bmNlENZ@@@@@@@@@\nfb}@B@@XfQJJJJJIJHgfc^\\fNZ@@@@@@@@@\nfb}@P@@HuYIeYUWUVcEF]yNViBBJ`B@@@\nfb}@P@@HuYIeYUWUVcEF]yNViBBJjjF@@\nfb}@`@@DRYfu{VuXIVg^Sei`P@@@`@@@\nfb}@`@@DrJJJZIQIIHlEksdqsA@@@@@@@@@\nfb}@`@@IRYe^um]HpTcVCEhH@@@J`@@@\nfb}@`@@LrJJJJHpiII\\dkSoIsTED@@@H@@@\nfb}@`@@LrJJJJHpiSI\\dkSoIsTED@@@H@@@\nfb}@`@@LrJJJJHpqJH|dhw`isTED@@@H@@@\nfb}@`@@LrJJJJHyISI\\dkSoIsTED@@@H@@@\nfb}@`@@LrJJJJHyJIK\\dkS`isTED@@@H@@@\nfb}@`@@LrJJJJJFHpi\\UjsoIrtCA@@@H@@@\nfb}@`@@LrJJJJJFHpi\\UjsoIs@D@@@@@@@@\nfb}@`@@LrJJJJKIIIH|Djw`isTEP@@@@@@@\nfb}@`@@QrJJJJIIQ[Rldiq`~Rt@@@@QP@@@\nfb}@`@@YRYVumUehrVkNBeijZfjjj`@@\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\nfb}@`@@YrJJQIFYIIKDyKUgQRuUTuPAT@@@\nfb}@`@@YrJJQIFYJYKDyIUgQRuUUU@AU@@@\nfb}A@@@IKLlrjk|Dip\\qSP@@PEAA@@@\nfb}A@@@ILrrkszlyHuoIs@@@@P@@@@@\nfb}A@@@ILrsvoZlEISoIrtDPD@@P@@@\nfb}A@@@ISZvmkZlxkSoQSP@@@AU@H@@\nfb}A@@@ISZvmkZlxkSoQSP@@@AU@P@@\nfb}A@@@IS\\lrr}|UjwlacP@@DAL@P@@\nfb}A@@@YDhhhhdeCenJtzpTyX@@@@@@@@@\nfb}A@@@YDhhhhdeCenJtzpTyh@@@@@@@@@\nfb}AP@@HeGNQQJJIQKIIVgIJlGrVi``@BJ`@@\nfb}A`@@^sdTTTTRRRTqXIScQBeh@`@HB@@@@\nfb}Ab@HHp@HrRRqQJKQYSRtZwhirm@@@@@@@@@\nfb}P`@FJ@yIfY^]oTcIFmyNV`hJI`B@@@\nfb}QB@I^DBHrJIKJSQQIHtYjw`is@AUTC@E@@@\nfb}Q`@EV@`rSJvlkjmFRt{r\\mR@A@@D@@@\nfb}`@@@ISLsJr{tdjqh~r@@@@AD@@@@\nfb}`@@@YHhhhhdddbj\\dxtPy@@@@`B@@@@\nfb}`@@@YHhhhhdhebZRUXt_I@@@@@``@@@\nfb}`@@@YHhhhhdhehZRUXt_Y@@@@@b@@@@\nfb}`@@@YHhhhheEDmZRTxrPy@@@@`H@@@@\nfb}`@@@YHhhhhecLej\\eXsdy@@@`@`@@@@\nfb}`B@I@qDefYe^}~RtzpTyh@@@@@@@@@\nfb}a@@A@RYVvWVuhrVg^Sf@@B@@@@@@@\nfb}a@@B@rJJIJZKQZHldKW`is@@@D@@@@@@\nfb}a@@I@RVYfU{wyKSkASe`@@@@@@@@@\nfb}a@@I@RVYfU{wyKSkASf`@@@@@@@@@\nfb}i@@DTxIPLbbTTRqbRfSNRUxJ\\mTlt@EUD@@\nfb}pB@ARlBHRYWYee}hpsk^Sf@Bjih@B@@@\nfde@@@DjYeew]daZCD@BBBH@@@@\nfde@P@@BLGHhhhhhhlcqVoNbt@QD@d@@@\nfde@P@@B\\EIfYfWgXkWkQZ@H`HR@@@\nfde@P@@B|EIfYfW^XkSkQZ@H`Ab@@@\nfde@P@@B}EIfYfW_XkSkAZ@H`AJ@@@\nfde@P@@HmEIeYVuuhqQkNZdHHfjH@@\nfde@P@@HuyIe[UWZhrRcVZd@JjjH@@\nfde@P@@J]{HhhhhhdeBpV`vbt@Q@LD@@@\nfde@P@@J]{HhhhhhdeBpV`vc@@A@T@@@@\nfde@P@@V}GHhhhhdddfpRgFBt@P@dT@@@\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\nfde@b@AZAHILkmmrmFBdFL@ETp@D@@@\nfdeAB`A@bBQCH`LQFHrJJJZEIII\\dkSoPQDT@T@@@\nfdeAB`E@bBQCH`LQFHrJJJZESII\\DkSoPQAP@TP@@\nfdeAC@A@bKQDXaIe]ke_hpRoA`@j``H`@@\nfdeA`@@BBdsLsJklUkuhm@DPDI@@@\nfdeA`@@DMdTTTtRRVLXKSk^ZXFBbjH@@\nfdeA`@@ZcdbbTRVTJVipRoAhHbH@J@@@\nfdeA`@@\\udTTRbVfaRYrQ`qZA`h@B@@@\nfdeH@@@\\mEJYfUuWirQmN@@@@bh@@@\nfdeH`@JZ|DBDfV]VUugEF]yjeifZj`@@\nfdeI@@DRUXFQQZJIPiIJVcVCEj@bFiR`@@\nfdeI@@DTYxBSOKKropQgAbuMT@@@@@@\nfdeI@@D\\tXBSOLkK{KRcAbuA@eTiP@@\nfdeI@@HXHHBRrr{lkQbmAcSU@D@@@@@\nfdeI@@HXIHBRsKj|kSbmAcMU@D@@@HPP\nfdeI@@JRUDBTwNjjkpVc^CPP@@@P@@@\nfdeI`@LZCDDeYHhhidhblbTM[pZjjhDBh@@\nfdeI`BLTEhDGZewIWNlkJ|DZLFMUMUUUU@aR@\nfdeP`@AN@EIfYfWgXkWkQZ@H`HR@@@\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@@\nfdeP`@E^@{HhhhhhdeBpV`vbuHSPME@@@\nfdeQ@@DXAdTTtTTRbqUXp_QZh@``A@@@\nfde``@A@BdsLsKslUiuhm@DPAI@@@\nfde`a@AZlBHYDYEDeDXhiij\\Lywh@bifjJ@@\nfde`b@H\\d@HRfYfWwQJMxLZjfZ``H@@\nfdea@@D@RYyVuUQRMXLVh@@@@@@@\nfdea`@D@DGHhhhieeLbrVkN|uPL@AP@@@\nfdea`@O@T{HhhhhhdeBpV`vbt@Q@LD@@@\nfdei@@JJMYpLbTTRbbQVwMBUxMAATDAB@@@\nfdei`@LZlFHIJrQQQQYQEYDhZw`uUUPHEP@@\nfdei`@LZlFHIJrQQQSIQEYDhZw`uUUPHEP@@\nfdep@@@NCdbbbbRVTqhJQm^@@@@hh@@@\nfdep@@@XMdbbTRRReRhHu`qBBbj@@`@@\nfdepA@BLBBlmVYEEEDhXXmNJd[tX@`@HH@@@\nfdepB@DXb@HrJIQIIHqIDhkPXsUAA@@@@@\nfdi@P@@Hl{HhehiheDT[sTuUSMPHD`\nfdi@S@HRMX@PkptDIUvnmZoAM@ASUT@@@\nfdiAP@@HtxJSOLkkMISTAATs@@@\nfdiPa@LR``@PHHrRPjJJKHyF\\mPLQEP@@\nfdiQ@@DT@drsMsJvbuTEDU@@@\nfdiQQ@LJ``ug@BM^FRRVIKIRIHTeh@Ijj@@@\nfdiQb@LR``P@cIIBhheedmjru@pQU@@@\nfdiQb@LR``P@cIIBhhhlcdYru@qDU@@@\nfdiY`@D\\Eiw`TbdloJskjuUT@EUP@@\nfdi`a@OJtCDMbIKJrwzsAT@QMUT@@@\nfdiqb@JLtRR`RFQQQYIPiIIgJVjVjj`@@\nfdiqc@DXipu`QBoCPQdTRbtQdrRIRZjjZjd@@\nfdm@@@LdbbRbaRRsA\\UKU`~b@@@@@@P@@@\nfdm@@@LdbbbbbfjSCBUIuoAb@@@@APA@@@\nfdq@P@@HMYIeUU{UZjjijh@@\nfdqPP@JV@bT\\bbTrTQRRSUUMUL``z@\nfdqPQ@FBUhu`AD@aJUYn{ujjjYjh@@\nfdu@@@DjYUUUU`nR\\GtP@@@@@@@@@\nfdu@@@DjYee]}daVuxLP`I@H@H@@@\nfdu@@@DjYee]}daZlGtP@@@@@@@@@\nfdu@@@DjYee]}faRlGtP@@@@@@@@@\nfdu@@@DjYee\x7F_daFtxLP@@@@@@@@@\nfdu@@@LdbbbTRerwIBMiw``@@@QT@`@@\nfdu@@@LdbbbTRerwIBMiw``@@@QTA@@@\nfdu@@@LdbbbTRrJwEBMipXp@PP@A@@@@\nfdu@@@LdbbbTVtjSEBMjpXa@RA@@P@@@\nfdu@@@LdbbbbbTUHeRlXOh`@@@@@@@@@\nfdu@@@LdbbbbbVVOEBlXOh`@A@EBA@@@\nfdu@A@@Q@XaIfV^]nXJRc^]F@@@@B@@@@\nfdu@A@@Q@XaIfV^^^XJVcN}F@@@@B@@@@\nfdu@A@@QBhcHhheDeDULpTmV|FL@@D@@@@@@\nfdu@B@@ABTsJk^wb`mJmzM@@@@DP@@@\nfdu@B@@ABTsJk^\x7Fb`mJmxM@@@@AP@@@\nfdu@B@@AFRJJJIIEYHeIFuXLZ@B@@@`@@@\nfdu@B@@AFRJJJIIQIDeIFtEtZ@@@@``@@@\nfdu@B@@AFRJJJIIQSDeIFtEtZ@@@@``@@@\nfdu@P@@HLGHheDdhidYJqk^bFKUUUUUUP@@\nfdu@`@@ARYegg[fBdhwgQZA@@hZA@@\nfdu@`@@ARYegggfBehsoQZA@@bZA@@\nfduA@@@IKJrkN{NJMipXt@A@@@P@@@\nfduA@@@IKLl{[oAJmhpXt@@E@@@@@@\nfduA@@@ILroZviFBdZpXmA@@@A@@@@\nfduA@@@YDhdhddhTf\\uXs`qh@@@@@@@@\nfduA@@@YEEDhmEhTjLehu`qZB@@@B@@@\nfduP@@@ARige[uVBeip_Qjjj`Pbh@@\nfduQ@@FRAdbbTJbRrRIQVcVCFiPHJ@H@@@\nfdu`@@@IRmjjviJBdZpX`@@@@@@@@@\nfdu`@@@IRmkZviJBdZpX`@@@@@@@@@\nfdu`@@@IRmrsziFRtZpX`@@@@@@@@@\nfdu`@@@YHheEMDXTjREhu`q@@@@@@@@@\nfdu`@@@YHheEMD\\djREhu`q@@@@@@@@@\nfdu`@@@YHheEhTddj\\EHu`q@@@@@@@@@\nfdu`@@@YHheEhTidj\\EHu`q@@@@@@@@@\nfdu`@@@YHhhhhdhbZRUXp_Q@@@@@@@@@\nfdu`@@@YHhhhhdhcjRTxp_QB@@`H@`@@\nfdu``@C@PdrmljmtYKUoAbuHAEUTT@@\nfdua@@E@RfVU]uZLEhu`qhJ@@@@@@@\nfdua`@E@QyIefUW]iqUcNCEj@@@JhD@@\nfduh@@@XUkrTs\\zsoSbcZ\\FHPQTa@E@@@\nfdy@P@@BtGHhhhheEcliuoM@DD@T@@@\nfdy@P@@HHkHheDdhcLeHpXmPPL@@@@@\nfdy@a@CVADQbLbbRrbbbQuF^C@ATC@P@@@\nfdy@c@OAAD\\BAABSJzlrsQchp@UA@p@@@\nfdyA`@@FcdTTTbbveVhsUf`jHbj`@@\nfdyAa@OAbBPUHYEEDhddYeFRMZB@B@i`@@\nfdyH@@@PL{IDhhddih]JvoM@@ADT@H@`\nfdyHQ@DDiIU`qADBBLbbTVbaTVQJF]MMMUUU@@@\nfdyIP@DXTx@cAbdsJslolyjsUSSUUTBDh\nfdyIP@DXxHDkAbdrs]k^txYsSUUUUL@@\nfdyIR@DDiHRkAbBHrJIQZJEQYDhYtttuUUT@@\nfdyP@@@HrJSQQUQIQ\\d{uTuT@EH@@\nfdyP@`ARADDbOQDXcHhhlleDeBsc`pPDpAD@HB`\nfdyPA@FN@DRBDiee\x7Ff\\R`qhJBHH@@@@\nfdyPP@LQ@bSdfUYiUmSkQZjBhJb@@@\nfdyPQ@LN``u`AF`cIICDmdiCEQg`kUUTmUP@@\nfdyP`@AR@EJ[WUe]Yqwj@Bh@J@@@\nfdyP`@NJ@aIeeU~UehLVhHD`@@DIP\nfdyPp@DX@IU`qrJJIJIIPyLxYsUSSUUT@@\nfdyPr@JLIIU`qAHILsjvskNF]RuSUUU@@@\nfdy``@F@PdwLk{JbTFKPPQP@@@@\nfdya@@D@RYyWUeQRCEj@Bh@@@@\nfdya@@D@rJJJFJIIKVCzKUT@@@@@@\nfdya`@I@UyIfUVyUEhLV``hjjH@@\nfdyaa@AZMXDPrHrJIJHqQRqTxYt@QTsTd@@\nfdyhP@AZlFHDDXdw]lrnfmxKUUTBAP@@\nfdyhR@AZlFLDXhCprRRiIQQIYFmxKUUTBAP@@\nfdypB@FR\\@HrQQHqQIIZXi[uLuAAEP@@\nfdypP@DT|@chyEDidhdeDQRlEj@@`X`@@\nfdypQ@FVcSao@dDRFQRZJZYQKF`gAjjjifZ`@@\nfdyp`@BRb@RSLzkrnsg`mRtt@E@HB`\nfdyp`@LLxABSKrjszJQgMTu@QT@@@\nfdypp@DXT@QgAbdsJslolyjsUSSUUTBDh\nfdypp@DXxBVkAbdrs]k^tDYsSUUUUL@@\nfdyppBDDDCbkAbR^]dTtRaTRbrXHsfiZjjjh@@\nfdyq`@LLxA@TfWe^UtTg^Zij`@i@@@\nfdyq`@LLxACdfWeUWTTcVZij@Jh@@@\nfdyqb@IFmcpPABT{JvnvIVcUPACTtP@@\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\nfd}@`@@AReYU[WhHirQmV}DLZ@`P@HBB@@\nfgA@@@DjYU_VByHu`@@@@@@@\nfgA@@@LdbbbTVKIBMjp@@@@@@@\nfgA@`@@\\RfYe_irQmVh@`@H@@@\nfgAAB@F@bDfUmUZ\\EHuh@b`@@@@\nfgAA`@@HLdrmlkQdmFluHADq@@@\nfgAA`@@HtdrmjkQdeFluH@UP`@@\nfgAH@@@RM[IEDhmBeS`eZL@@DMA@@@\nfgAH@@@XDYJYYmvdfBuXHJbYF@@\nfgAH@@@XDkIEDhhdkRSAFlDEQRc@@@\nfgAH@@@XhiJYmg]gAJMXH`jeF@@\nfgAP@@@LrQQJEIITxJQk@QE@@@@@\nfgAP@@@LrQQJJYPtdKQk@@@@@@@@\nfgAP@@@\\RfYe_irQmV@@@@@@@@\nfgAP@B@BAHirRJIJHkLUpQkAPP@A@@@\nfgAPB@LD@DISJ\x7FJdhsakTuT@E@@@\nfgAQ@@D\\@drjjkQ`iFm@AT@@@@@\nfgAQ@@F\\AdbbTJRRIPTcVjUj@H@@@\nfgA`@@@ISKJntXKQk@@@@@@@@\nfgA`@@@ISLrotyHvk@@@@@@@@\nfgA`@@@ITsZkdYHvkU@@@D@@@\nfgA`@@@YHheEMEZRDhu`@@@@@@@\nfgA`@@@YHheEhTj\\EHu`@@@@@@@\nfgA`B@N@BDifYWz\\d[Uj@H@B@@@\nfgAa@@K@RfYU_qPVeFh@@@h@@@\nfgAp@@@RMdbbTVaVipRmF@@BF``@@\nfgAp@@@XDeLzmkQ`iFlDAP@D@@@\nfgAp@@@XIdbbaRRRqPTcVZ`@@H@@@\nfgAp@@@XheLvnjs`iFlDPT@@@@@\nfgAp@@@XxeLzjkQ`iFlDAT@@@@@\nfgApB@LLx@HRevUUpPTcViYj@H@@@\nfha@P`BLxHDQSp}DAbDeUkUUZjZjjh@@\nfha@P`BLxHFISp}bAqDeUkUUZjZjjh@@\nfha@R@HHpPG`eUjjjjuUUUU@@@\nfha@s@DXHJR`ADOBgadTbRTbVQSUTuUT@@\nfhaA`@@HhdvvjjjuUUUU@@@\nfhaP`@DFAkHhdddeDTfjjijh@@\nfhaPq@BA`cAg^@DVBLddNRRRRdVjjje`@@\nfhaYA@DXHKPY@BOABSNrrzsTtuULAAKd@\nfhe@@@DjYfYuvJEXpW^@@B@I@H@@\nfhe@@@DjYfYuvJEXpW^@@B@J@H@@\nfhe@@@LdbbRbbvJYKfaJ|D@@bH@@@@@\nfhe@@@LdbbbTReryHQmN|D@@@BI@`@@\nfhe@@@LdbbbVTJrYHQeZ|D@`B`@@@@@\nfhe@@@LdbbbbbbcxhQiNlD@@@@H@@@@\nfhe@B@@ABTrnjjnJ\\Ehw`tB@@@D@@@\nfhe@B@@ABTrnkJ~J\\Ejw`tB@@@D@@@\nfhe@B@@ABTroZjnJ\\Ehw`tB@@@D@@@\nfhe@B@@ABTroZvnJ\\Ehw`tB@@@D@@@\nfhe@B@@ABTrssziJBUhw`tB@@@D@@@\nfhe@B@@AFRJIKSQJHxirQk^CPH@@@P@@@\nfhe@B@@AFRJIQZKPiDhIVc^CPH@@@P@@@\nfhe@B@@QBSLl|{[ARTYw`p@@@@@@@@\nfheA@@@IRlk\\~pQSdm^CUAAD@T@@@\nfheA`@@B|eJkjrmAEFNCxMUUUUUU@@@\nfheA`@@TdeJsZvoACNZmxMA@P@@@@@@\nfhe`@@@ILkJl{tYKRk^C@@P@@D@@@\nfhe`@@@ILrsZklxJQoNC@P@@@D@@@\nfhe`@@@YEDeDdeBeQbcZmxL@@@@@@@@@\nfhea@@D@RYYU[WirVcV|F@@@@@@@@@\nfhea@@D@rJIJIIJEJcEFu[pX@@@@@@@@\nfhea`@E@iIJUfv]nBFBL{pZB@`@@@@@\nfhep`@BLT@NQQQQQQRq\\tJQkN|uLuUTuP@@\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\nfhi@R@HHpPG`eUoLjn[s`mU@@@@@@@\nfhi@`@@ArJIKJQPiZcG^`@j`@`@@\nfhi@a@AFADAbDfUmygZL]z@BhHB@@@\nfhi@c@BFADRb@qFQQQIIPqYLD{tDDPPD@@@\nfhi@c@BFADRb@qFQQQIIPq[LD{tDDPPD@@@\nfhiAA@C@b@qBSJ{Lk}FN}@ATDA@@@\nfhiAP@@Lt[vQQQRJKYE\\d{sSUTruP@@\nfhiA`@@B|dsLro~jqgM@D@AP@@@\nfhiA`@@HBdrszroScoMSLp@T@`J@\nfhiA`@@H|dwMkZ{IUgMT@@AP@@@\nfhiA`@@LCdTRTQRbRuNN}@DS@A@B@h\nfhiE@BBTYIQoA@rY\\drkKN{hsoUTt``T@@@\nfhiHA@MFlDDPRHrJJKKQQQUgK^``HBH`@@\nfhiHP@DXyhDoARYYn]uhHuffjjji`@@\nfhiHR@DDhJQoAADILl{[NdijttuuUUP@@\nfhiH`@DXtX@lbbbbbQRRYHsfjijii`@@\nfhiH`@LTEhBDfWVUm]F|Ejf@@@@DJP\nfhiHa@LTdFB@A@`cIIBhhddmmNMYZ`hJJD@@\nfhiIB@DXHI`@aIg[ee_UoAZi`@@@@@\nfhiIP@DDhpDc^BdwJ|lzsfkMMMUUU@@@\nfhiIP@DXxHDc^CdTRbbeTVSNZltuUUUT@@\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\nfhiI`@DXYH@`yEDeDbhdmScoMUJp@T@`J@\nfhiP@@@^Rfuue]Yrsj@B`@h@@@\nfhiPA@FV@DTBDiee~yqJ|F`hHB@@@@\nfhiPP@DB@SblbfdtQfbRHspVjff@B@@@\nfhiPR@AFIsPPRBSL{sNiFV]UUULtt@@\nfhiPR@JLIIpPRBSLzmj{NFmRuSUUT@@\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\nfhiPb@OA``@QddabbRRvRkF\\m@@@E@@@\nfhiPp@DX@IQoARYeYv}YsUfjffjj`@@\nfhiQ@@DX@drlrloks`mTEATQ@@@\nfhiQ@@INAdTTTbRarrk^BtEP@@@@@\nfhiQP@DN@Qg@iLoJjnbdZsUUPAR@@@\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@@@\nfhiQR@IV`Sa``dLbRbTQbbvXIwjjjjYf`@@\nfhiQR@JLIIW``BDfYu[UV\\MZejfjjh@@\nfhiQR@JLIIW``kDfYu[UV\\MZejfjjh@@\nfhiQR@LVXhw``BLdTVbRbbqqRVjYjjZj`@@\nfhiQR@LVXhw``QLdTVbRbbqqRVjYjjZj`@@\nfhiX@@@PHJpTiZUWYz\\MyjjbAb@DCH\nfhi`P@L@yHrTrlm{}AN}UUTDAP@@\nfhi`P@O@YivQQQRIV[SDXhsPUADu@@@\nfhi``@A@|eMkkJzsegT@E@AP@@@\nfhi`p@D@Dhw`iLrl{^lyjsUKUUUP@@\nfhia@@E@rQQQHyJIHToAhJ@h@@@@\nfhia@@F@rJJIIJZIDRoAjBBB`@@@\nfhiaB@ARADILk[OZtYxL@EM@@@@@\nfhiaB@K^@DISLjo{Bthu@@@EL@@@\nfhih@@@XIQRTsNj\x7FKNRtA@AEU@@@\nfhii`@DTxIPGArJIQQJiJYgIJZiYjjj@@\nfhii`@DTxIPK^rJIQQHpsQgEZZPhBjh@@\nfhipP@DXx@w`yEDhihUEePVkMMUSUS@@@\nfhipP@DXxBW`iLlwZztDZsSUUUTp@@\nfhipR@BTYIW``qDfY][UV\\MZejfjjh@@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXiVH@@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\nfhipb@AZL{pLQIe]e]ncEZ`@iZfb@@\nfhipp@DXH@Rc^BdsJsmzsfkMUMMUU@@@\nfhiq@@DZBCHheEDeDceNmyj@@`B@@@\nfhiqB@IF]hDadTTTbfLVWE^CMUTmRt@@\nfhiqP@DXH@RoArJJIJIIEIgCVZjZZjj@@\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\nfhiqP@DXxBVoARYYnuuhHuffjjji`@@\nfhiq`@DXX@SdfUgyVj\\lyjiZjjh@@\nfhq@`@@AJDaHRDRHrHPVB`Hbjj`@@\nfhq@`@@JRVUeZZYq`@jjj@@@\nfhq@p@@HdkQlbbTLTTvRHqjZfZj`@@\nfhq@p@@LdkUlbbbbVRLrxIijjif`P]@\nfhqA``BZLBHyxRbEAFQQQIIRUILEAADuU@@@\nfhqH`@L\\MXBLbbTTJbbLTYjh@bj@@@\nfhqP@@@XRe]UUUpQijjjj`@@\nfhqQ@@DT@drlsLjXKUAQEP@@@\nfhqQa@EVEHpHc`QdTRVTaTrUFP@RtuP@@\nfhqXB@J\\dZpPAFRIJIJJqIBeUSMMUpHJ`\nfhuA@@@IRlrjwPQSbgFC[u@@@@@@@@@\nfhy@@@LdbbbTRrNYHVoA@@```@@@@\nfhy@B@@XbRsLrj\x7FIZ}XM@@@A@@@@\nfhy@`@@TrQQRJKSE[deV|F`jH@@`@@\nfhy@`@@\\RYee~uYrVoAZA``@H@@@\nfhyA@`A@bBQGh`LPdsNjjjsdeV]A@U@E@@@@\nfhyA@`F@bMQCh`LQdTTTTQbVSN\\U[tDPAAE@@@\nfhyA@`G@bEQEh`LPdsKOKrrQoN}A@qSUE@@@\nfhyA`@@BMdTTTTTTVoEZ|xL@A@P@@@@\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@@\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@@@\nfhyA`@@DtdsMksjpRc^CA@@P@@@@@\nfhyA`@@Hldrlk[oQbcN|uHPQUP`@@\nfhyH@@@RM[IEDhmBdeJ\\DkQ`@@ajhH@@\nfhyH@@@RlyJYY{W^gAJMX@@HfjB@@\nfhyH@@@Rl{IEDhmCDcJ\\DkU`@@bjhD@@\nfhyH@@@XEkIEDhheYdjRXKpP`jJ@@P@@\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\nfhyHB@FR|DDPdrmkZkSdeV]@@@@E@@@@\nfhyI@@DTeXBSOJwJxeZmxKT@QUJL@@\nfhyI@@H\\EhFQJJIPiIQ\\dkS`tADMSIP@@\nfhyI@@LDmxFRJIHqQJKTXYuoTuPDPtP@@\nfhyI`@LJMxD`yHhhhUEedRfcN}UUTBAT@@@\nfhyP@@@VRe]VYWISUoAjjjP`J@@@\nfhyP`@BZ@aInUe{W`mF|Ejjj`@X@@\nfhy`@@@ISLjm{btjw`t@@@@@@@@\nfhya@@O@RYVyY\x7FiqQkN`@@@B`@@@\nfhyh@@@\\eYvRJJJJUKKTxkQk@AA@uPP@@\nfhyh@@@\\e[vRJJJJUIITxkQk@AA@uPP@@\nfhyh`@LJMxHIYHhhhUEedRfcN}UUTBAT@@@\nfhyi@@HXIipDefWVuj\\TYwijh@@H@DHH\nfhyp@@@XheLwKjjsde^BDPUPP@@@@\nfhyp@@@^CdbbbbRRqUNRmip@@@PT@@@\nfhyq@@DTTAIgeUUTTmF|Ej@Bh@@@@\nfkAA`@@TTeJwsLDDXkVcUUUUUP@@\nfle@P@@HlgHhdeECDhl[^\\EjjifffP@@\nfle@`@@IrJJIERJEJYgOA`HJh@J@@@\nfleA@@@YEEMDleHiJJQoM@PUUUD@@\nfleA`@@HhdskLl{~cNBuT@@DR@@@\nfleA`@@QSdTTTRRTqfdcZ\\t@@AEL@@@\nfleHP@DTuDC@irJIJHqZIJJgOQZijjjYh@@\nfleH`@G^BdELdTtRRJbbQyHLZBBJ@``@@\nfleIP@DXxHDgQSdTRbffbTNUNV|tuUUUTp@@\nfleIb@LB\\fBK@BLddJbbRTVVuypUj@@HB`@@\nfleP@@@DrRJPqQPiIYtPijjh@@@@@@\nflePR@MA`cA@^FRRXqQJJMJJMjsU@QCUQ@@@\nflePq@JLIIShiAVVdLbbbrRfTbJYpwjVjZjjj@@\nflePr@FVQSaoIAHIM\\w[KoPS`uUUTsTt@@\nfleQP@EQ@RsoYEEEleDhiXRcNMUUULuT@@\nfleQa@AVQ``@bGadTbRTRRLrUgQRuUAP@@@@@\nfleQp@DXArVcQSdTTRbbtRjSAN|uUUMUUP@@\nfle`Q@LPQxH@bpQddebbTVVdleF\\m@@ABt@@@\nfle``@G@edbbTRbbNv`mV}PPE@QT@@@\nfle``@O@bdsJl{zpmV\\tD@@EL@@@\nflea@@E@RfVYUV\\tWIjh@`B`@@@\nflea`@I@U{HhhddihddQZbehHJJjh`@@\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\nflep@@@XleLl{rkMA^RDEEAAP@@@\nflepR@F\\EhtT`qDeYeumUEIwiiZijjjABD@\nflep`@IJR@bSLj~rnlExKTmS@AT@aJ@\nflepr@DDhJRgQRBHRYYym[teK^fffjjjh@@\nflepr@M^SAFB\\\\CprRSEQIZJKZR`qZjjjfVh@@\nfleqQ@BTYIShiAVVdLbbbVRfTbJYpwjVjZjjj@@\nfli@`@@HRYUoV]YjZfZjhFBPiT@\nfliAP`BJt{p@bG``HpDYEHdeCEeEluUTuMT@@\nflm@@@DjYee]{YhTkA|d@@@@@`@@@\nflm@@@DjYee]\x7FYhTkA}D@@@@@H@@@\nflm@@@DjYeeo\x7FyHQm^bd@@@B@@@@@\nflm@@@DjYee\x7F[yHQmNBd@@@@@`@@@\nflm@@@DjYee\x7F]yHQmNCD@@@@@H@@@\nflm@@@DjYee\x7F^yHQmNCD@@@@@H@@@\nflm@@@DjYee\x7F_yHQmNCD@@@@@H@@@\nflm@@@LdbbbTRRJrYHVkAbd@@B@@@@@@\nflm@@@LdbbbTRfvQyHQm^CD@@@BbhA@@\nflm@@@LdbbbTRrJRxhQmNBd@@@@@`@@@\nflm@@@LdbbbTRrVQyHQm^bd@@@@`@@@@\nflm@@@LdbbbTRraQxhQmNbd@@@@H@@@@\nflm@@@LdbbbTRvRQyHQmNbd@@@@H@@@@\nflm@@@LdbbbTVRcRXhQmNbd@@@B@@@@@\nflm@@@LdbbbbbT^VxhUc^CD@@H@bhA@@\nflm@@@LdbbbbbT^VxhUc^CD@@H@bhB@@\nflm@@@LdbbbbbVNVxhUc^bd@@H@@@@@@\nflm@@@LdbbbbbqeRYhUcNbd@@H@@@@@@\nflm@@@LdbbbbbqvRYhUcNbd@@H@@@@@@\nflm@B@@AFRJJJIISKHdiHvoQSP@P@PA@@@@\nflm@B@@QFQQQQQIJGKLdjqoQS@@@@@@@@@@\nflm@`@@QRYfYUgydeNLGrV`@@@BH@@@\nflmA@@@ILkZvmkQdeV]EL@@@@@@@@@\nflmA@@@ILroZrnQ`iFmEKPP@@PD@@@\nflmA@@@ILroZvjQ`iFlFKPP@@@T@@@\nflmA@@@ILroZvlQ`iFlFKPP@@@T@@@\nflmA@@@ILroZvnQ`iFlFKPP@@@T@@@\nflmA@@@ILrrknjsdcV]EL@@@@@@@@@\nflmA@@@ILrsssoQdmFmEKPP@@PD@@@\nflmA@@@ILrszmkQdeV]EKPQ@@@D@@@\nflmA@@@YEDeMDhmBeSbcV]EL@@@@@@@@@\nflmA@@@YEEDeieEBdQ`iF]EKPP@D@D@@@\nflmA@@@YEEDhihcBdqTcV]EL@@@@@@@@@\nflmA@@@YEEDhmBeLdpTeV]EKPQ@@@D@@@\nflmA@@@YEEDhmBeLdpTeV]EL@@@@@@@@@\nflmA@@@YEELeDdeBepQgV}EMP@@@@@@@@\nflmPB@JQAbIKJr|jlsfk^RFMUUTDCED@@\nflmQb@LA`bp@cIICMDeMDUARd[S`qVjZjZfi`@@\nflm`@@@ILkZvmkQdeV]EL@@@@@@@@@\nflm`@@@YHhhhhdddkSdgFbEH@@DDTHD@@\nflm`@@@YHhhhhdhb]RRkFCzH@@@@@P@@@\nflm`@@@YHhhhhdhbmRRkFCyH@@@@A@@@@\nflm`@@@YHhhhhdhecRRkFcyH@@@@D@@@@\nflm`@@@YHhhhhdhecRRkFcyH@A@ALPD@@\nflm`@@@YHhhhhdhecRRkFcyH@PAHE@P@@\nflm`@@@YHhhhhdhecRRkFcyH@PAPD`P@@\nflm`@@@YHhhhheED[RRgFbEH@@@D@@@@@\nflm``@J@SdbbbbLTtQqJRl[pXtC@@@AP@@@\nflm``@K@PdrlkZk]FJLxLTmRDDUUQP@@\nflma@@@`rJIJZIQPiZgEZmxLX@@@BI`H@@\nflma@@E@RfVU^_VcAZLzJZB`@H@@@@@\nflmaA@KQ@DPdLdtTRbtJfRyIVkNbfifZiZej@@\nflma`@E@PGHheEDdhlbj\\TxwhiZ`@@`j`P@@\nflmp@@@VbeJvsOviJBUYtT`@AEP@A@@@\nflmq@@DVbAIee^WmZ\\djshiZ`PJ`@b@@@\nflu@B@@YbULsJjozCZOdu@@@@@@@@@\nflu@P@@BBgHhhhhhehlVJtztV`BH@dh@@@\nflu@P@@BLGHhhhhhhlcnJuytV`BH`Dh@@@\nflu@P@@B|gHheIhcEDiRLu[pVfjjjjZ`@@\nflu@P@@HL{HheEhhdhh~BlGtVijjijj`@@\nflu@P@@\\\\eIfVWyWv\\ehLV`hHB@h@@@\nflu@P@@\\uyIfVWnuv\\dZJV`XJ@`H@@@\nflu@`@@IRYfUV}~QmNCEh@@@@H@@@\nfluAA@A@bDqFQQIYRZJIGTYYpXp@UPTAD@@@\nfluAA`A@bBQCHatQFHSDYEEEMBdeEerRm^CADQPPT@@@\nfluAP@@B\\ENQQQQQQKQXlUkuhm@DPDIP@@@\nfluAP@@B\\FJSLsLoJlUkudm@DPDLP@@@\nfluAP@@HdkrSKLvzjlxYtTmT`pQUP`@@\nfluA`@@FmdbfbTTRbawEZ|EM@@@TA@@@@\nfluA`@@LbdsLn}kkNRuxKPTD@AT@@@\nfluH@D@\\|DDiSLrno}SdcZ\\@@@AET@@@\nfluHP@CNbdDeZrQQQQIJJkHeKNCFjjj`PJ`@@\nfluHP@DLtdGGArJJIQRzJJY`iJbejijjYjh@@\nfluHP@DTuDC@irJIJHqZIJJgIJ}Ejfjjifh@@\nfluH`@DXYh@lbbRbTVaRRisQoAZZfd@Jh@@\nfluH`@DXlDGlbbbLTRvTtISQhiZj@`ijb@@\nfluHb@BJtFW`QFQQQIZKQFZLDZtTpPPuTuE@@@\nfluHb@LLxxLPABTnrjkmxHJQkTlu@EMP@@@\nfluI@@DRUXFQQZJIPiIIRtZpXmPDPuKE@@@\nfluI@@DTXDFQQZIQKQQH|DYtTmSU@A@@@@@\nfluI@@D\\tXBSOLkKzrthpXmPPIUKE@@@\nfluIP@DTxHFgQSdTRbRJbTVSNBe[sSMUUUTp@@\nfluIP@LF]DDeZSdbbbbRTUVQJV\\FMUUU@`U@@@\nfluI`@FNbdAMILs[[N}SagAcUUUPHEP@@\nfluPB@AJADYEDeMDeELcSfgQS@DMPT@P@@\nfluPP@B\\@bslbfbTTRTrJDkQhiZjfjX@`@@\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@@\nfluPR@JLHkU`RBSL|kMjlyxLTtmUMUUU@@@\nfluP`@DIAEIeUYU}jLehufiZYfij`@@\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\nfluQB@AJbBHRYVyV]VgMNBf@HZ``P`@@\nfluXP@L\\MZJPRUkIEEEDdeFdbTLxLZjjjP@j@@@\nflu``@C@PdwLl|{XmNbEKPP@@@@@@@\nflu`a@BJ|CDebYEEEheDXdlpQkQSAADtB@P@@\nflua`@A@\\EIfYfWgvJuztV`BHBDh@@@\nflua`@O@TyIfYfUYvBtFrV`BHAbH@@@\nfluab@FF|D@QdbbTVbtjfQJBUjuRsUMMTh@@\nfluhP@DTxIPCQSdTRbbUTRRSNRT{sUKMUUUP@@\nfluhP@LF]EHIJudbbbbRTUVQJV\\FMUUU@`U@@@\nfluhP@NFmEHIJudbbbbRRcRQJF\\FMUSUP@U@@@\nfluib@DTxIQhi@DYEDhheUDddsdeN|uRsUUUT@@\nfluqB@AJMDFHdrmrlzmNZ\\EL@PuA@a@@@\nfluq`@LLxAGdfWeUWnEHuhiZij@IjB@@\nflux@@@XIRRmYHhhldiUDdsdcQRA@AQ@@@@@\nflyAP@@HLxJSJkZrkzluT`DUT@@@\nflyP`@EN@cHheDdehbdiZZ``bjj@@@\nflyPa@LR``@PHHrRPjJJKHiXsejAbHj`@@\nflyQ`@D^@jrSOJzmkBdu@AUUT@@@\nflyQ`@D^@jrS[JzmkBdu@AUUT@@@\nflyQa@ANQ``@bGadTbRTRRLVegMUPTAU@@@\nflyQa@LR`cp@`PQddaTTRrrRVkKTCAEU@@@\nflyQb@LR``P@cIIBhhhlbecNVhFHbj@@@\nfly`R@IB]zH@aJYYY]gcAjhJ`fF@@@\nfly`R@JRU[p@cIDeDeEECEXijji`Z@@@@\nfly`R@LPQEH@cIICEDddeUC^VjB`hf@@@\nflyqa@AFlcA@ADOCHiDdhThmLmFZj`@jj@@@\nfl}@@@LdbbbTVtQVXhQmV]zJZPZHPPJH@@\nfl}@B@@AFRJJIIJISXxhKRoF]EM@@@@@@@@@@\nfl}A@@@ILrjvjvQ`mJLxLTmA@@@@@@@@\nfl}A@@@IRlkjmkAENRUYtTuPH@@@T@@@\nfl}A@@@IRlkvjkAENRUYtTuPP@@@T@@@\nfl}A@@@IRlkvmkAENRUYtTuPP@@@T@@@\nfl}A@@@IRlrjkoAENJl[tTt@@@@@@@@@\nfl}A@@@YHdhdmMDhcAENRt{tTt@@@@@@@@@\nfl}A@@@YHdhheDddcAENJ]ZHTt@@@@@@@@@\nfl}A@@@YHhhhddjdeAGERuYtTuUAL@@U@@@\nfl}`@@@IRlrjkoAENJl[tTuP@@@@T@@@\nfl}a@@A@rQIQJKJZEJBF\\UXshij``@@@h@@@\nfl}a@@E@ReYWm[VBJ\\ejshij``@@@h@@@\nfl}a@@M@ReYYy}VBF\\TZshij``@@@h@@@\nfl}aA@HF@DIdLdRbbRRtJR``cIFuXLZjjZjeif@@\nfoA@@@DjYeUlVeN`@`B`@@@\nfoA@C@@QAHadQdTTTqTRWAV]ADD@@@@@\nfoA@C@@QBhatQdTTRbRQsIFmA@A@P@@@\nfoA@P@@HTYIe[VWhrVfi@Hj`@@\nfoAA@@@ILkjrmFV]@AL@@@ar@\nfoAAB@A@bDfUmyVcKN`@j@@@@@\nfoAAP@@HiIRSKSrvSeNMUTuUP@@\nfoAA`@@HXdrl{ZlyYsUUP@P@@\nfoAAa@JJtBHxDYDhhmEDcpUgUKPJA@@@\nfoAHB@MFlx@QdbdRjbbcNZmUUTmU@@@\nfoAH`@D\\DXDdfVYe_ScVZ`ZBP`@@\nfoAH`BDRLx@cR{dfYeW\\cMVZhFAF@@@\nfoAHb@DXx[U`QFQQJIZJHdiHtuUTsL@@\nfoAI@@MFlxFRJQJjJJLyjuUURuT@@\nfoAP@@@NRYWVUzLMZ@B`@`@@\nfoAPB@KN@DISLjohmJMP@@AP@@@\nfoAPB`ARADDbCREiAt`dsNkmLyITDASUD@@\nfoAPR@JLIIU`RBSLzmlsagTmTuUP@@\nfoAP`@BZ@aInvYWejsfjiB@`@@\nfoAP`@CNAQJYW]YqS`jB@jj`@@\nfoAPa@LDlx@P`HRYYeUuVLyjjjjj@@\nfoAQA@BLD@HpDISOmrnJV]TuL@D@@@\nfoAX@`LTXKU`AB@aPPxHRYWUeRTMYjjjZV@@\nfoA`@@@ILkjrmFV]@AT@@@@@\nfoA`@@@IML|{wEFmUSA@R@@@\nfoA`R@EPQap@cIIKEDhliZMYZ@@@`@@\nfoA``@M@PdvkLkruYsUTa@P@@\nfoAaB@GDADILroZ{AFmAA@@P@@@\nfoAaB@GLADILk_J}NFm@DP@P@@@\nfoAaB@G\\ADILkkJ}FFm@AP@P@@@\nfoAaB@KN@DISLjoxmJMP@@AP@@@\nfoAaP@D@hIVlbbTbfbjIrgFjjfjh@@\nfoAa`@M@PQInvYWejsffiB@`@@\nfoAh`@JBUYpBILoLkleFmUU@`T@@@\nfoAp@@@P\\eKLjorMjsP@@A@B@H\nfoAp`@BZLABS]lroKUgMURDA@@@\nfoApb@HDihp@cIDhideDRLUZi``Xh@@\nfoAqB@JLtPFHdsM|klEYuKTa@P@@\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\nfoI@@@LdbbRbaQXKbiZlx@@@`@`@@\nfoIA@@@IRlkZ|DTyKUgUSUUJs@@@\nfoIA@@@IRlkjlDTyIUgUPP@AP@@@\nfoIA@@@IRlkvlDTyIUgT@@@@@@@@\nfoIA@@@IRlrj|DTxjqgUP@@AP@@@\nfoI`@@@IRlrj|DTxjqgUP@@AP@@@\nfoQ@@@DjYUU}`nRlx@@@`@@@@\nfoQ@@@LdbbbRQrYHRkN@@`@@@@@\nfoQ@@@LdbbbTRQYHUmN@@@B@@@@\nfoQ@@@LdbbbTReyHQmN@@@@`@@@\nfoQ@B@@QBSJvjkQdeV]@@@@@@@@\nfoQ@B@@QBSLljzsdcV]@@@@@@@@\nfoQ@B@@QBSLsJ~pRkF]@@@@@@@@\nfoQ@B@@RBSLljzsdcV]@@@@@@@@\nfoQ@B@@XbSLljzsdcV]@@@@@@@@\nfoQ@`@@VRfYeUzBd[Sj@B@H`@@\nfoQA@@@ILrrkkNRMYt@@@@@@@@\nfoQA@@@YEEEEDdbrRkF\\t@D@D@@@\nfoQA`@@HldrlkZtXhugMRDDSD@@\nfoQA`@@HldrmlrtYKUgMR@QSD@@\nfoQH@@@BMYJUme]IRRmF@@HFhH@@\nfoQH@@@BMYJYYo]irRmF@@HFhH@@\nfoQH@@@RMYJUm[UIPRmF@@BFhH@@\nfoQH@@@RM[IEDhmBdj\\DkQ`@@ajB@@\nfoQH@@@Rl{IEDhmCDj\\DkU`@@bjA@@\nfoQH@@@TUkIEEEhddV\\Djs`JBjeF@@\nfoQH@@@TuYJYfU}YrQeZ@H@XhH@@\nfoQH@@@XD[IEDhiedZRXKU``jIfF@@\nfoQH@@@XDiJYYe_iI`cNBBhidX@@\nfoQH@@@XhiJYmg]YpRcVBHJiXX@@\nfoQH@@@XhiJYmg_YpRcVBHJiXX@@\nfoQH@@@XhiJYmggYrRkNBHJfhT@@\nfoQH@@@XhkIEELhddV\\Djs`bBjeF@@\nfoQH@@@XikIEEMEDUf\\ejs`bBjeF@@\nfoQI@@HTEHBRrjjjsdeV]P@TtiP@@\nfoQP@@@FRfYeUz\\e[SjdF`hd@@\nfoQP@@@NrQQJIIYFcAZMX@@@@`@@@\nfoQP@@@NrQQQQIHz`iFuX@@@@`@@@\nfoQP@@@RrQQJIJUJgAJlx@@H@@@@@\nfoQP@@@TRfY^]|TEjsiB`hjb@@\nfoQP@@@TrQQQQPqUdeZlx@`@@@@@@\nfoQP@@@VRfYe]Z\\d[S`@@@H@@@\nfoQP@@@XRf[WmZ\\djs``@@@@@@\nfoQP@@@XRf[eUz\\UXs``@@@@@@\nfoQQ@BHB@ChRdsLrolDjqgP@@@@@@@\nfoQ`@@@ILkZjmFRUYt@@@@@@@@\nfoQ`@@@IRlrj|DJlYuT@@@P@@@\nfoQ`@@@ISKON}NBeYp@@A@@@@@\nfoQ`@@@ISLro}NRMjp@@@A@@@@\nfoQ`@@@ITsJkyFJlYuPA@@P@@@\nfoQ`@@@ITs\\k{AJlYuT`tDR@@@\nfoQ`@@@YHheEMDcPTeF\\@@@A@@@@\nfoQ`A@F@bIABSJvmkSdeV]@DT@A@@@\nfoQ``@B@mdTTTTRQSEBdYsTmUSU@@@\nfoQ``@M@HdsMjoLDhugMLBDUD@@\nfoQa@@A@RYfYWvBUXsf`B@@`@@\nfoQh@@@LDZvRJIQPiYTYIVc@@DCTD@@\nfoQh@@@TejrTsLkzsdcJt@P@qPP@@\nfoQh@@@TtZvRJJJIIELEHrm@D@LTD@@\nfoQh@@@TyjvRJJJIIELEHrm@D@LTD@@\nfoQh@@@XijvRJJIQIELEHrm@D@LTD@@\nfoQp@@@XDeLvzjtyIUgAAEP@@@@\nfoQp@@@XDeLzmjtXJQkA@T@DP@@\nfoQp@@@XDeLzmktXJQkA@T@DP@@\nfoQp@@@XHeLsnjxiIUgMPP@A@@@\nfoQp@@@XdeL|oZtYIUgA@U@@P@@\nfoQp@@@XidbbfbQRSNRUYpQAT@@@@@\ngBQ@@eJuT@@\ngBX@@eLUT@@\ngBXHHHaIejh@\ngC`@Die@@\ngC`@Dkz@@\ngC`DADHHRVh@\ngC`DADZHRVXRH\ngC`DADZHRVXRP\ngC`DADZHRVh@\ngC`DADZHRVx@\ngC`DAHJPRZd@\ngC`DAHJPRZh@\ngC`DAHZPRVh@\ngC`DAVRDRZh@\ngC`DAbKDRZh@\ngC`DAbZHRVh@\ngC`DAb[DRVx@\ngC`HADIKLIH\ngC`HADIKR@@\ngC`HAbIKJ@@\ngC`HAbIKLIH\ngC`HAbIML@@\ngC`LAHJPt`duP@\ngC`LAVJluXduP@\ngC`LAbKDvHduP@\ngC``@dfZ@@\ngC``AdeY@@\ngC``AdeZ@@\ngC``Adej@@\ngC``Adij@@\ngCa@@dkH@\ngCa@@dkP@\ngCa@@dkX@\ngCa@@dmH@\ngCa@@dmP@\ngCa@@dmX@\ngCa@@duP@\ngCaHDHaIZ`@\ngCaHH@bNt@@\ngCaHL@aIZ`@\ngCaHLHaIZP@\ngCaHLHaIZ`@\ngCaHLLQIZP@\ngCaHLLQIZ`@\ngCah@mJAIj`@\ngCahHl@bNt@@\ngCahHlGBNt@@\ngCahHlHRNj@@\ngCahhlAa]ncm@@\ngCd@Adej@@\ngCdDI`BHDRZh@\ngCe@E`dmH@\ngCe@E`dsP@\ngCe@I`dlpd`\ngCh@@dmH@\ngCh@@doH@\ngCh@@doP@\ngChHD@aIU`@\ngChHLHaIZp@\ngChHLLQIZ`@\ngChHLLQIZp@\ngCh`LDdsP@\ngChhMDHbNl@@\ngCi@DDeV@@\ngCi@DDeZ@@\ngCi@DDfZ@@\ngCi@HDefDd@\ngCi@LDej@@\ngCiHEAxIVt@@\ngFp@DiTt@@@\ngFp@DiTvjh@\ngFpD@DTHReSZj`@\ngFpD@DXHReSZj`@\ngFp`@dfTujX@\ngFp`@dfTujh@\ngFp`@df_Ejh@\ngFp`ATiTvjh@\ngFp`AdiTvjh@\ngFq@@drfmM@@\ngFq@@eLqUU@@\ngFq@@eLzts@@\ngFqDDHbqBSZmUT@@\ngFqDLLRqBRwcUT@@\ngFq`AbeJfuU@@\ngFr@ACTiTt@@@\ngFr@ACTi[FZd@\ngFt@ATiTt@@@\ngFt@AdiTt@@@\ngFtHCQbILimKP@\ngFtHE`DILikUP@\ngFtHLPDISNmLp@\ngFu@E`drfmT`@\ngFx@@eJf`@@@\ngFx@@eJfuU@@\ngFx@@eRfuK@@\ngFxHJ@aJ]bjn@@\ngFxHL@aJYujj@@\ngFx`HJeJxtm@@\ngFy@DDfTujh@\ngFy@JDiTvjh@\ngFy@LDeXvjh@\ngF|@AbeJf`@@@\ngF|HLZ@aJYuif@@\ngGP@DiVj`@\ngGP@Di]jQ@`\ngGPBABRHTQXcIHUTpf`\ngGPDADVHRUZZDT@\ngGPDAbWDRUZj@@\ngGPP@cTfyi`@\ngGPPACTiVj`@\ngGPXHlQxIU[U@@\ngGP`@TfYi`@\ngGP`@df]j`@\ngGP`@dfuiaM@\ngGP`@dfuj`@\ngGP`@dfyi`@\ngGP`ADkjj`@\ngGP`ATeUfQD`\ngGP`ATeUfaE@\ngGP`ATeVj`@\ngGP`ATfVi`@\ngGP`ATiVj`@\ngGPhCQDIJuS@@\ngGPhH`DYIHUi@@\ngGPhMPDIK]U@@\ngGPhMQDIK]U@@\ngGQ@@djltHh\ngGQ@@djuT@@\ngGQ@@dlmT@@\ngGQ@@drmT@@\ngGQ@@dsMT@@\ngGQ@@dsmT@@\ngGQ@@eMUT@@\ngGQDB@jQBUkUP@\ngGQDL@aAFQRFj`@\ngGQDLHbqBRwSP@\ngGQDLHbqBRwUP@\ngGQHBHaIeiXQH\ngGQHBLQIeiXQH\ngGQHJ@aJ]jd@\ngGQHJHaIUjh@\ngGQLJIARFdLbdMU@@\ngGQXHlZHROjj@@\ngGQ`@ZdrmJ@@\ngGQ`@ZdrmT@@\ngGQ`@ZdruT@@\ngGQ`@bdvmT@@\ngGQ`@bdwMT@@\ngGQ`AjdmmR@@\ngGQ`AjdmmT@@\ngGQdEb@bRFRRVV`@\ngGQhHlLSIHTmP@\ngGR@aEQJyJ]Vh@\ngGT@ADiVj`@\ngGT@ATeVj`@\ngGT@ATeWfqE@\ngGT`E`TfUj`@\ngGT`E`TfYj`@\ngGT`HQTeVY`iZ@\ngGU@E`drmT@@\ngGU@E`dsmT@@\ngGU`E`ZdrmT@@\ngGXHD@aIUVd@\ngGXXKEb@cIIBmP@\ngGX`BDdvmT@@\ngGX`BDdwMT@@\ngGX`LDdsmT@@\ngGXhKB@aJvZX@\ngGY@DDfYj`@\ngGY@HDeVZaI@\ngGY@HDefZaH`\ngGY@HDfVj`@\ngGYDIQDJHR[Zj@@\ngGYHEAxIVkU@@\ngGYHEAxIVsU@@\ngGY`BETfuj`@\ngG\\DEj@`aBSJuP@\ngG]HHjPDIJuS@@\ngGp`AldTLRuUT@@\ngGq@@eJqFuUP@\ngJP@DjYd@\ngJPBAVJPt`YAIjj@@\ngJPDADFHRUfaH`\ngJPDADFHRUfaI@\ngJPDADFHRUj`@\ngJPDADFHR[f`@\ngJPDADQpRZj`@\ngJPDAbGDRUj`@\ngJPD`DHHGKdfzd@\ngJPH@EIRuP@\ngJPHADIJsHd`\ngJPHADIJsPd`\ngJPHADIJtpb`\ngJPHADIJuP@\ngJPHADIKSP@\ngJPHADILth@\ngJPHAVILuP@\ngJPHAVIMUP@\ngJPHAbIJuP@\ngJPHAbIKUP@\ngJPLADZPL`dmM@@\ngJPLAHJPt`duU@@\ngJPXHlPDQzt@@\ngJPXHlQBQ{T@@\ngJPXHlQxQ{T@@\ngJP`@TeVd@\ngJP`@TeVh@\ngJP`@TeZh@\ngJP`@TfVd@\ngJP`@TfZh@\ngJP`@dfVh@\ngJPdEaDPHRZe`@\ngJQ@@djsBJ@\ngJQ@@dju@@\ngJQ@@dkSBJ@\ngJQ@@dkU@@\ngJQ@@dls@@\ngJQ@@dmU@@\ngJQ@@dru@@\ngJQ@@dsT`@\ngJQ@@duU@@\ngJQ@@eKU@@\ngJQDDH`qBRmT@@\ngJQDHG@nBUMT@@\ngJQHBHaIVYDd@\ngJQHBHaIVj@@\ngJQHBHaIfe@@\ngJQHBHaInZ@@\ngJQHBLQIVj@@\ngJQHBOAJfj@@\ngJQ`@bdvt`@\ngJQhHl@bOV`@\ngJQhHlHROZ`@\ngJT@@Te^h@\ngJT`E`TfVh@\ngJU@DPdru@@\ngJU@E`dru@@\ngJU@LPdkU@@\ngJUHLT@aIjZ@@\ngJX@@dkU@@\ngJX@@eKU@@\ngJXDBLQXbS]V@@\ngJXHD@aIUZ@@\ngJX`BDdvu@@\ngJX`DBdjt`@\ngJX`DBdru@@\ngJX`LDdru@@\ngJY@BDfZl@\ngJY@DDeUh@\ngJY@DDeVh@\ngJY@DDefh@\ngJY@DDfVh@\ngJY@LDijX@\ngJYHC`DIKTp@\ngJYHCaHIKTp@\ngJYHEAxIVmP@\ngJ\\@@ldru@@\ngJ]@EbDfVh@\ngJ]HEcAxQ{T@@\ngKP`@df\\Vj@@\ngKP`Adi\\Zj@@\ngKQ@@eKEUP@\ngKQ@@eKcRp@\ngKQ@@eKcUP@\ngKQHDHaImZj`@\ngKQHH@aJoEj`@\ngKT@Adi\\Vf@@\ngKX@@eKcRp@\ngKX@@eKcUP@\ngKX@@eMEUP@\ngKXHL@aJWFe`@\ngKXHL@aJWFj`@\ngNpH@DIRkUJ@@\ngNpJAHJPtaYArFQRFUU@@\ngNpN@iRHTQh`qEbGDQ\x7FUT@@\ngNpOAYRHTQh`qEbGDAh\x7Fjj@@\ngNpP@jtfvZf@@\ngNp`@TfWZZ@@\ngNp`@dfVZf@@\ngNp`ATeVYjDT@\ngNp`ATf^Zf@@\ngNphJqDIKMTl@@\ngNphMQLISMSL@@\ngNpiJqbOdeVjf@@\ngNplJqHJPtadTaeTp@\ngNplLQDSpPPduluP@\ngNq@@djkLpRb`\ngNq@@djkLpRc@\ngNq@@djkMPb`\ngNq@@dl{UP@\ngNq@@dskUP@\ngNq@@eJmTh@\ngNqDLHaqBRjuU@@\ngNqHFHaIfYjP@\ngNqhHl@cIIBej`@\ngNqhHlOAJkVj`@\ngNqhMV@aI[jY`@\ngNt@@teUjj@@\ngNtHAePIKMuT@@\ngNtHE`DILruT@@\ngNtHE`DILzuR@@\ngNt`E`TfWZj@@\ngNt`E`TfYZj@@\ngNu@E`dl{Tpa`\ngNu@E`dskUH@\ngNu@LpdjmUP@\ngNx@@eLuUP@\ngNx@@eRmUP@\ngNxHD@aIUUj`@\ngNxHD@aIUej`@\ngNx`LDdskUH@\ngNx`LDdskUP@\ngNx`LDdssUP@\ngNxhMV@aI[ji`@\ngNyHEAxIVjuT@@\ngNy`BDtf{Zj@@\ngNy`LDtf]Zj@@\ngNyhGE`DYIITmT@@\ngN|@ADeJkUP``\ngOp@DiUkZV`@\ngOp@DjWkB@@@\ngOpHADILkW@@@@\ngOpHADILkWTu@@\ngOpHAbILkW@@@@\ngOp`@dfUMZj`@\ngOp`@dfVqZj`@\ngOp`@tiguif`@\ngOp`ATiekjj`@\ngOp`A\\dTQbjj`@\ngOphH`DYIHUVmT`@\ngOq@@drm[ST@@\ngOq@@drm[UT@@\ngOq@@drm\\@@@@\ngOq@@drm]UT@@\ngOq@@eLvmLt@@\ngOq`@VdsNkTl@@\ngOq`@fdrikTl@@\ngOq`@fdrikUL@@\ngOt@@TeVkzj`@\ngOt@@tiek@`@@\ngOt@@|daRbjj`@\ngOtHE`DILl[MT`@\ngOt`EPTfVKZj`@\ngOu@Dpdrm[Rt@@\ngOx@@drm]UT@@\ngOx@@eSRuUT@@\ngOx@AddJTUUT@@\ngOxHBHaIeZx@@@\ngOxHDHaIeZx@@@\ngOxHDIAIeZx@@@\ngOxHHHaIeZzjh@\ngOxHL@aJY}Zjh@\ngOy@DDfYKZj`@\ngOy@LDiisjj`@\ngOy@hAteIeZx@@@\ngOz@ACVeKNLuR@@';
carcp.r1_0 = 'fHe`A@\neO`BNZ``\ngF|HLZ@aJYuif@pPWHP\nfHgdAy@\neMBBHRZCAKd`\ngNxDLHaqBRjuU@P\neMABHXaIhH\ngCaHLHaIZ`H\ngJQ@@dls@XKGd`\ngJP`AdejhC@qX|`@\ngGP`ATiVj`LCEcrT\ngGP`ATeVj`LJEc^R@\ngGQ`@jdjmTAal[rP\ngGQhHl@cIIJmPFBMyL\neFBCPcA@\ndid@p@bBbFbDfYoa`b@@LJ@fx^QP\ndaDD@@IIf]n``@@pkBiny@@\ngChDL@aABSM@XHKdp\ndazD`N``|DjwVjh@`\nfHbTAa@\ndaxB@@InRYgZj`CBdpf{dT\ngNxLL@aAABDfVZj@`\ngGPB@DHHpQPaIUZdB\neMC@HoABDe`pccH\ngC`L@DSpPPdkPD\ngJU@LPdjr`XIGd`\ndaG@@@kdig|jVj`CAdpj[`\ndaD@@DjUZxHH@CAdpj[nQ@\ngKP`@Tixjj@ptVyB\neMhDRZCAKd`\ngJQ@@dkU@XDQGdp\ngC`D@DXHRVhCAC\\TP\ngGQ@@djmTA`Xl^R`\ngGXXKEb@cIIBmPD\neF`BNFE@\ndidHPBBHFHRYgVzB@`@`\ngCe@E`dsPFBV@\ndaFL@HABR[e[fii@H\ndaE@@@yIe^f`@`@piLJny@@\ngO|HEfHaIeZx@@B\ndcN`@@pjYJYe}k`Hbj@B\ngN|HEb@cHhhVj`H\ngNp`@deUZj@pvkxhP\ndax`@@bnRn[ff`RHj\ngJT@@deVhCCKGbD@\ndigDPLXXP@b`cIIKDnEZfd@`\neFBBDcAaWH@\ndeVL@HAIR[e_aZ@B@B\ndaDH@@RVU[f@@@LJ`j[nQ`\ndcoH@DJ`RUeUVy]ZZ`@@B\ndmO@@@pldTTJRraej@B`@`\ngNp`@dfUZf@pvMyF\neMBCDRZCAKd`\ngJPDAbGDRUj`H\neMBBHRYCAKd`\ngCe@H`dtpD\ngCi@LDek@`\neMaDBKpRVB\nfHbXAa@\nfHfpAa@\neMIDBKpRYB\ngJ\\HEb@aIej@pPWEb\ndcNL@M@aRYgWVzB@j`@`\ngNpXHmQxYIIXuTA`Uj~P`\ndeT@P@bNBDfUuih@J`@pxDpjx^QH\ndidHPABHJHRYgVzB@`@`\ndcl`@@`nReeWZY]@``@@B\ngOr@Ajti]qZY`H\ndeV@@@ReWTj@Bj@CCdrfxYyD@\ndeV@`IBHRYWVf`@j@CC`SBkiy@`\ngChHLIAIZ`LEMrH\ngNxhMVIAI[ji`H\ndeWH@DJPRY[TYZ`@@B\ngGPhCPDILuS@XXR|f@\ngGP`ATivj`LMc^JH\ngNp`ATiUjj@pLQoEf\ngJQ@@djsBJptQyL\ngNu@H`dlkUPFBqxjp\ndeV@@@RYyTYj`@@CBPaLinFP\ngCah@mJAIj`LLE`\neMFIHRM`pgd@\ndaD@P@bNbDfUzZ@B@B\ndifL@LAARYYRijjX@`\ndaxD@@QIUYjj@LJpj[nQ@\ndcN@@@rQQHqIKmUP@@A`hPfEprn|b`\ndmtH@@RYWUih@Jh@LAALJnF^Ph\ndmv@@@rRJIIFUjB`@@pyLJnF^Hr`\ngF|@AbeJfuU@P\ndiFB@LANEIn^ZjX@`\ndeTL@@Z\\bbRbM]@DT@FC@fMt|`P\ndcNL@MAirJIJHsUt@QU@A@\ndeT`@@pjrQQIFTpDEP@P\nfHd`Aa@\neFJHbHpP\nfdu@@@LdbbTRrLtSI\\TZwhaDTUUTU@A`YFBTYpRmF\\GfI^b\ndiT@@DjYVnXPbD`@pIBinYgB\nf`iA@@@YHheDdYdj\\DiwjBH`@H@@`\nf`iA@@@YHheEdXdj\\EIwjBHH@H@@`\ndmLH`I@HRfUwrnF`PJ`@phBXUxbT\ndedF@@PfFTf{nZjf@LFSBii@\nfoQPP@DLAhulbbbTRTLYpTmNZjjjZh@H\nf`i@@@DjUg^uhIVg^BBb`@H@B\nflmA@@@ILkZvmsQdeV\\EL@EUUUQT@FEdXipTeZM[tT|P@H\ndet@@DjYUX^dHbH`CAdJfF^Ig@\ngGY@JDeejpH\nfb}`@@@YEDeMDhTihjLUiwhyZjjjjjjh@LOHpRgARUhugASgb@Q@\ndclH@@rQQRJItJ{PUPB@FEDwSoLhU@\ndg|D@@OIEEHhfmPkmAU@T`A@\ndcMB@HDDWTfyV{iZ@HX@H\nfak`A@H`dDrBSJ{LjnmkQc`m{@ATDDUUPP@P\neghP@@@LdbbdRdRQbLf|VRcEdbgfPRSUUUUUUUUMUP@D\ndidD@@iJ[gxZB@@C@dkaxaL\ndeTD@@QImYQejjj@LNpj[agdH\nfdu@@@LdbTRTjTtSA\\dZwhmUUUUUU@A@\nfoQ@B@@AFRJJJIQX|UJqgT@PP@`@D\nflmA@@@ILk[J}sQdmV\\EL@EUUUQT@D\nfgA`B@N@BDifYWz\\d[Uj@H@B@@H\ngGUHEj@aIUZdB\ngGX`LDdjmLIkBWba@\nfnk@`@@MrJJZQIFYJSKYdmF|DmVjjjjjjjf@B\nfoQA@@@YHhhheEcqTkF]PAA@B@@P\ndiFD@HCDemVZj`bJ\ndcMH@LDDeYWWajjjj@LIBDJfzUyF`\neFDBcAaWH@\nfewAP@@Vkv^QQISQJFKIQJVZcEF|EIVejjjjjijj@CBJLTxJRmFl{t\\ejOdI`\ndmTJ@@PYUIeUYjjV@LBpjWdL\ndmLH@@RYVuiiV@BiH@`\ndk\\D@@OIEEHhkje]hJbB`@`\nffsA`@@VkdTRTtRabrTRhqQoARUiZjijjjj@B\ndg|@@DjYV}~T{`d@@@@H\ndeTH@@Rfuunh@I@C@lJfybCH\nfoA@P@@HuYIe[UvhrRfi@Bf`@H\ndeTD@@QIgeQej@@@LJrfx^QH\ndif@`D@HRUe^Eh@@@pXDinGbPP\ndg~@pIBPRPrPrJPqISIBiwU@@@@@P\ndmL@@DjYe^TYHI`h@H\nfb}A@@@YEEHdcLeIeb\\djsdyZjjjjjjh@LOXIQgARUjsoAbgdL`\nfc\x7FAR@CQ[OXICHhhdiDimCEDYmBrPk^SfmSUUMUUUSTt@D\ndmLH@@Re^UpiVe`@`@`\ngNp`@deYZj@pNM_I@\ndmtH`NBHRYWVih@Jh@LNALJiWdB\ngJQHBLQIVi@`\ndmtD`NTHaIe]Vf`@jP@`\ndmtD`NTHaIe]Vf`@j`@`\ndklLPDp`BH|LbdRRaRtvjh@@@`\ndeU@@@aJWeQej@@B@h\ndg|`@@pjrQQQGQIMqvAPP@@@P\ndeT`@@pjrQQQUMpEAP@P\ndaED@DXNRYUifjf@H\ndmND@DCdfVUrjUZjZi@H\ndg}@@@aJVYU^Svv`@@@@`J\ndg\\@@LdbbbTicRDQIS@Qs@\ndk\\d@DsmB\\bbbTrQXUujjUj`C@liS@\ndazH@DAImeiiBL\\Lrfxb\\\ndkNH@DAImgVVffZPsEhV\ndefH@HAIUVYfZPrKJj\ndaF`@@pjYJYfn@b@@pPfyG@\nfhi@@@LdbbQfTbdxKShF@jjh`@`\ndmt@`@bDfUuZZ@Bj@CC`SBkaxdj\ngOt`DPtfWMZi`OLlP\ndaED@DHNRY[Jfjf@H\nfluP`@DD@iIfUeeurL]DJVjhD@@H@@`\ngNy@BDeUZj@pJu_EB\ndcNDpBWPbNBIdDfYUYa``bT@H\ndmvDPIxPbBBDfYZVVBAX@CB`rfgdJ\nfoA@@@DjYW{WdkN`XH@@@Ppp\nfluA`@@HddrsJoN}NF}EKTpT@@D@@XJEKQkN|FJ^PX\nfhi@P@@HeyIefU]zgCNZfB`ah@B\ndcML`EvDp@cIIKDedLkP@R@D\ndieD@DpARYevyjiX@pRnxfD\nfhyA`@@HBdrrkN~RdcN|uA@@AP@A@\nfbmQA@AJRBH}HILk\\kOKtyit\\pACTE@a@@P\ndg^B@HAEmInUvwaZ@Bj`@`\ndg^L@DAaRUf^uNvjj@@@H\ndcNH@DAIgfYgVhBH@CBnFUwbI`\nfle`a@BAbBHeDYEEEDhXXeDqWdpPU@PL@@D\ndefL`BpYBHRVvZfjX@`\nfoAa@@F@rJJJIJINUeFZBPjHP@pDRgARtYwHJ@\ngOtHDpDILrWST`XHwbF@\ndigD@HK`QInW[fiZ`CCDX^QP\ndeWD`D[ad@cHhhhXWTuSHA@\ndg}@@@mJYeU|]Tz@@@H@CAPpj[aeSyE`\ndiU@@@aJUUpnFZ@@@LBinGbP`\nfoQP@@@XRfYV}|LEjsfjYA@h@B\nfhe@@@LdbbTbTurXkfaF|DHbhh@B@@`\ndaFD@DAdfUjyjf`CCDsnQP\ndax@@DjWzjh@pxHPj[nQ`\ndmO@@@`diWe\\JUfh@D@LFanFUyB@\nfdep@@@PHeKOLjoxH[s`sU@@@D`@D\ngGP@DiVj`LBl[qB@\nfdy@`@@QRYWYVuzL|F@Bj`@`@B\ndeTH@@RYWZf`@f@CA`SBj^PH\ndmtH@@RYWYih@IhBNh\ndg\\HpMBPRPrPrJPqIPsCMT@ET@D\ndmv@`EBHRYWYih@Jl@H\nfoApB@EZ\\BHRYWYyZLlz@BjiR@B\ndaG@@@rdifzxHH@CAB[bYp\ndev@`NBHRYUVfFX@Ja@LJCBz^H``\ndcnH`IHHaIfU]XUvBBJa@H\nfoAQB@FF\\BHRYVwUZ\\EJ@HjjQ@B\ndg]L`LfDD@cIIBhhd]ikTC@P@XMc\\nwrI@\ndaGH@DJ`rJIPdsTt`D\ngNq@@dsUUPFEDM_I`\ndklHPABHvHrJJIJQEn`HJj@B\ndeTH@@RfUWihHH@CCdpfxYyE@\nfduA@@@ILroZviFBdZpXmUUU@AT@A@\nfhya@@O@rJIJYRIKFcIF]z@BjjjJ@CCPDXhJRmFl{d@`\ndk\x7F@@@bdie^urnGSfj`@X@H\ndg|@@DjU^yZx{BAJjbBJX\ndid@@DjU^nBAHBJ\\FaLJaxc\\\ndeUD`LjD@HrREQICJt@@@XUc\\L|`@\nf`qPb@LB``@QddaTTRRVtzwej@@@@@B\nfdu@@@DjUe_[e`nRM[tYfjjjjj`@`\nfb}@@@LdtTbRLrTrUAJt{r\\}UUUTuUT@D\nflmA@@@ILkZvmsQdeV\\EMUMUUUUT@D\nfnk@`@@MrJJQJJYERKH{`iJ|dmZjjjjjjjj@C@hHXIQgARUYw`qSdmV|ah\ngJPhLQbIKTpD\nf`i@@@DjYU[wxjQg^`@@@@@@CBRLDirVkNy`Qo@\ngGUHEj@aIgZdCAA\\VH\ndcn@@@RieU~V]jjjj`CATpj[ae]yD@\ndmO@@@`diYuZZU@`@@@LJsae^PP\ndieD`JXaCDRYgvzejX@`\ndeVH@ACHhhdbwPDE@AaPXUMsNFP\ndknH@FAIfUWaVhHHh@LMBLJfxYt~Ph\ndg]H@FlDfYU^QVhHHj@B\ndknH`Bp@aJYvU}NfhH@@H\ngNqdEb@b^FQRHmU@XXU|VH\ndg|@P@bEbLbbbTRRKR]pP@P@@D\ndmtL@@QTfyeQehBB@B\neMdHTf`pQyP\ngN|@@ldssUPFEBM_I`\ndef`@@SFyIeYfjZ`B\ndidHPBCDGDRYgVzB@`@`\ndigD@HHPQInYXVijPCCDknPp\ndmvD@EADfzUQUjjj`B\ndifH`JD@cIEDd\\jfZh@`\ngOq@@dlvKUTAaeWqP`\ndaDD@@QInXjZjh@`\ndmMH@LhDeemZZUYh@H@H\ndeVH@ICHhdhUSP@U`A`RYS\\PN@\ndclL@@STfUmVfeVi@B`@pKaW^Ie@\nfheA`@@JLeLrsLsPPkR\\kUUSUUUU@A@\nflui@@DXYYHDfYewvUHrVhiZjifjjZ@CCUNBdkQg^CGdD`\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@pxQ`iZM[bEN@\ndifH@BAIfuxZ`@@CB`inGbQ`\nfoAP@@@NrQQQUQIZgCVifh@J@@`\nfdy``@N@PdrwL}kjtFKTuUA@H@FDbLxHug^CqBh`\ndig@@@`Tke]nX@H@H\ngOq@AdbbLUUTA`Uc^Q`\ndk\\L@@jTie]urnF``Jf@B\nf`i`B@F@bDfUmYWiqQg^`BJB@H@B\ndeVD`NFPBDfUvih@I`@pKBj^HB@\nfde@@@LdbbTRtQRSIJuzHQEDDDD@A@\ndidHPABHZHRYVZz@H`@`\ndidH@@RfU~F``@@pYLJnGdL\ndmMH@NTDee[VFUX@ab@LBpfWbQH\ndcmH@DhDfUe]aWVjA@`@piLzUx`z\nfluQB@NNbBHRYeg[Y]dkNBfBAbB`P`@H\ndid@@Ldbbq[`bB@CBdJfGdX\ndefJ`JaLFP|LddjRcUTpA@\ndifD@DCdfVZaZjZ@LLRaxfL\ndeT@@DjU_k``b`@pzDJfz^I``\ndeWH@DJ`RYYTfZij`CCNF^He@\ndmwH@DJ`RYYYIfjZj@H\nfb}@`@@YRYUUm[ehrRkNBf@BjjjjJ`@p|CANBdkQk^CEN^PP\ndcnH@BAIf^u[evB@@@@H\ndcLB`HSFCpRj}mUujh@@@`\ndidH`HApRkm^Fh@@@`\ngJPhH`xQ}TA@\ndmL@@DjYUVgaHIBh@H\ndidD@@GIEEE\\jfZh@`\ngFp@DiTvVhC@qX|Ph\nfj}P@@@IrRJJIQJIHdqUmA]Fh@bBHJh@@p}bgARUhug^CGIP\ndknD@BADfyvUtvjh@@@pELXYWSxaT\ndeTH@@RYWVf`@j@CC`SBkiy@`\ndg|@@DjU_eZx{BAH@@BJlAaBjUt~Ec]X\nfj}a@@O@rJIJYRIKEIRcIF]z@Bjjjfb`@`\ngNy@LDegjj@plVKxaP\ndo~D@AA|dTRRbqbyZBBbj@B\ndidD@@yJ[VXZ@H@CBdpf{dB\ndmLD@@iJYW_JxZB@f@CBdIagdJ\ndaF@@@RYe[hB@@LJCBinQp\ndieH@FxDigwJiejBJlLpjyb\\H\ndg^L@LAER[eYWNvjhD@@LAPjF]N~Qp\ngNr@Ab|dTQeiDe@\ndaF@`H@HRVU[jjj@LNaLJf{d@\nfnk@`@@ErQSISISISQJUgEZ]zNZ@Bjjjjlj@B\nfb}A@@@YHiiDdYdidjBUiwdyjjjjh@J`@H\ndmLD@@eIfUTfEV``R@B\ngJQ@@dru@XS\\RH\ndeVD`NFPbDfU^ih@I`@phLIiyB@\ndmuD`BFUBHRYg^[hHBX@H\ndid@`@qDf[Wai@@@H\ndcmH@DhDfUe]aWVjA@`@pKNe^X`z\ndmvD@HADfueYUi`@@cF\ndeT@@LdbRQU\\DBT@FCPaTL|SF@\nf`q@@@DjU]YWiqw``R``@ABe@\nflmA@@@YEDeMDhTieQbmN}EKUUUUUUT@D\nfduA@@@ILkZvmmFRUYpXmMUUUUU@A@\nfoAA@@@ISZzrkNV]P@T@@@AaIFBTXkQk\\PIp\nfhi@`@@^Rfuue]Yrsj@B`@h@@`\nfdyA@@@ISZvnsKNJuP@@EUP@A@\ndo\x7FD@DgP]IefU\x7FTvhJBI@B\ndkm@@@kIHbdhdmNjj@@@LIaLIae]xeF\nf`qa`@D@EyIfYUwrLuYj`XHf@@pYrRmFmqEG@\ndk]H@FDLbbbbbey]N@H`@@B\ndeT@@DjU_k``b`@pFDpj[iy@`\ndg^L`LaC@HrRPzIKJRju@AL@FCXS\\L|bp\nfoAa@@I@RYeU{QJlyhHHjb@B\nfoA@B@@RFQQIPiQITYYt@Dp@@BGF\ndid@P@qAqDfY]n`HH@H\ndidHPFBHJHRYf~FBH@@`\nfdei`@LJLzHIZrQQQQIJJkDiYpXuUUTBAP@D\ndeTH@@RYWZf`@f@CB`SBkbCH\ndeTH@@RYWVf`@f@ckA`SBknHL`\ndmMH@HxLbbbTQ[iV@@@@@`\ndk\\@`@BDifUWGUN`@@@@CBPpj[ae^Ii`\ndeVD`LFPBDieWrjfiXHr`\ndg|L@@Z|dTRbfQuCNtEDQR@D\ndg]H@IlDfYU^QUhHHj@B\ndcLD`BtHaIfUuXXHHj@B\ndk_H@DhpRYVU}aWVjA@h@H\nf`a@@@DjU_gVipHDffXAbbItp\ndo}L@HdDuInUunxV`@ij@B\ndcvB@LANGHieEDXuTuPA@\ndkn@@@rQIJJIGSjhJ@@CATrfxYWSx`P\ndaxD@@QIeUjZBB\\Bpf{dT\ngCh`DLdlpd\\InHP\nfoAA@@@ILkjrmFV]@AL@@@ar`\ndk\\D@@WIEEEDYjF]hJHbP@`\ndmtH@@Rfuu[j@BXBAlJSBinXLj\ndklH@@Rfuuenh@Ij@`V\ndidB@@[aRfU\\jjjh@p[BinGbP`\nfhi@H@@XyIQgArQQIQJ[JV`k^jjjjjj@CCTBTxJVcN|GfDLl\nfhiA@@@ILrsZkf|xKUP@@@@@XFps`iJtZsoAyA@\nfdyA@@@YEEHeEBdekA}Ejj@@@@@B\ndmVH@NAIe^Yjjj@LNpjXYWdH\nfhqa@@C@RYegV^tyjhHJJ@@`\nfoAQ@@DJ@drrkNrMYsTDEED@FDdDYpVcV]sEIJ@\nfjc@`@@YRYVum[ezLdjs`i`@jjjjhj@B\ndeTH@@RfUWihHH@CCdpjxYyC@\nfbmA@@@YEEMHdcLeHVRt[pVjjjjjjh@H\nfbmA@@@YEEeHhmEhXmV]zNVjjjjjjh@H\ndk^L@IANRY[f~]tvjjjj@LApjXUt~It`\ndo|H@@rJJIPjHqaZZijZBAh\nfgAP@@@LrQQJJYPtdKQk@@@@@@@XBQPTeZMX\nfH`pA@\neMJH|Df`pgd@\neOB@HcfhH';
carcp.r2_0 = 'gFq`@ldrfmU@XR|a@\ngKXHL@aJWFj`LBHmrD\ngFyHL`DILikUPD\ngKTHLPDIRxtlA``nR@\nfHgdA@\ngNp`@dfzZj@pJMX\neFA@H`bLFE\\`\ngCh`LDdsPFDWI`\neMHAIdLF^P\ngCa@@dkHFBVyH\ngJXLL@aAABDfVhB\ngJXHD@aIUZ@`\ngJXHD@aIYj@ppqyH\neMXIDe``\ngOx@@drm\\@@A`plZp\ngOx@@drm]UTAaqEcV\nfHapA@\ndid@@DjUfaBB`@LNaLinGdD\ndidD@@IIf]xViZPCBlJfGd\\\ndidH`DBHR[e^FX@@@`\ndid@p@bBbFbDfYoa`b@@H\ndidH@@RUe^Fh@@@pxHPj[nPH\ngCd@ADkj@ppbyL\ndifD@BADfyWaZ@@@LBQnGdT\ndeV@@@RgYTYj`@@C@PaLinGdR\ndiDD@@QIn]Zjh@pYLInGdT\ngNp`@dfuZi@pJM_I`\ngC`hIaxIVtA`enP@\ngGYHKAxIVkU@XYZ|PH\ndiFL`JcaCpRm[fjf@H\nfHbTA@\ngNtDLpDHHR[UjhB\ngGYHEAxIVsU@XEXwd@\ngNq`@jdvkSPf\\Ll~P`\ndaxB`HSN@HrRPyKUPAaaTwHx\ngCaHDIAIZ`LINS@\ngJXDBIARBS]TA`h^S@\ndiE@PBDIAIAInujjh@`\ndiED@BDDR[mVjj@LFPj[ayF@\nday@`Lx@aIUVjj@LNaLJf{d@\ndmv@@@Rf~UeZj@@@LEBDpfxYT\ndmvD@E@dfYwVzB@j@C@PpjxYT\ndmvL`BaL@HrRRjIJUVjjh@`\ndmvL@EAFR[f_FV``H@LFRfxU@\neFA@HoBJD\ndiGD@JxPQIeUZfX@`\ndiFB@BAFEInuZjd@pILJnQp\ngCd@ADij@ppfyD\ndaFD@DCdfVRiji`CCDinQ`\ndaGH`LJn@HRf_rjYj@H\ngC`@Die@ptVy@\ngNq`AVeJmUPFEbq_IP\ngC`DAb[DRVhB\ngCaHLLQIZ`LDEqS@\ngJP`@dfzhCCA[ba@\ngNp`@dfuZZDu`TZ~S@\ndaxD@@QInuij@LBRf{dD\ngGPBADZPLaYAIZjhB\neMABHYAIhH\ngNqBLIAREdGHIMmUTAaCrP\ngNt`BpdfyZZDu@\ngJX@@dmu@XKGdP\ngGX`LDdsmTA`m^P`\ngNx@@eZoUHD\ngJY@HDeVhCAK\\a@\ngJXDB@bABUmTA`Pl^R@\nfHbxA@\ngGU@DPdrmRAaecrT\ndedd@DHYCdfW[ZfZBBX\ndcLL@@STfVyVUZ`HD@H\ngNp@DkVzZ@`\ndaD@`@bDfUjZ@B@CB`SJ{dL\ndcLL@@QTfVUV]Z```@LNJfFUwd\\\ndaxh@LInAIUYffBDh\ndaDh@DInAIf]nZiX@`\ndmu@`LTHaIUe\\Yj`@`@`\ndaFD@N@dfYvyjV`C@lJfyG@\ndeVDPL[`bB|DeYgFZjZh@`\ndk^@@@Ri_YVftzjX@H@LEaLJae]L\ngC`HADIMTAa`mrP\ndeT@`@bLbdTJPsU@@@D\ndcND`La@BLddJbRrzmPP@@X]S\\LkoHp\ngNphJpDIKMULA`QD^Q`\ndiDL`JXPBLbTTJjfd@`\ndaG@`LK`BDimVz`@@B\ndeU@PAdH`haIf]vzB@h@H\ndmuD@FdBRgmeeZjjV@LNaLJaWd\\\ngNp`ATeejj@pXfM_H`\ngNqhHjOAJmVj`LLZ~HX\nfH`TA@\ndaxL`HS@BLddNRuT@XXUMrN@\ngGR@ACTkVY`iZ`\ngN|@ABeJ|mPTdxJofVH\ndax`@@`fRegej`RIJ\ndayD@LXJRVUYk`aJ\ndigH`LJn@HRf_ljfYh@ppBGdH\ndaFH@BAIeZf`@`@piLiny@@\ngNuHDx@cIHTej`H\ndknH@EAJYYfQN`bJ`@LIRfxYWS@\ndifH`BDHaIe]ih@I@B\ndmOH`LJQ@HRf^yriVfZZh@`\ndmNH@HCHhheDVzU`@@@@LNCJXYWd\\\ndcnH@AAIVYWXUvjP`H@LABDkag^Ph\ndew@@@pldTTJVTLmP@P@XUaMt|`P\ndaEH@DhDfVVyje`C@dJfyG@\ngNp`@deVZf@pvkyH\ngGQ@@dluTAaQEkrD\ngNq@@djuUPFCDqkyD\ngNq`@fdskUPFFq_IP\ngJU@HPdkU`P\neMhHRVCBP\ngCi@HDfZ@`\ngCh@@dmHFFBwI@\ngGYHLQDIJuU@P\nfH`XA@\nfHbXA@\ngNpHAxITkUTAaqEcV\ngKP@Di\\YZ@phbq@\ngJQHH@aJmj@ppQyL\neMJDBDf`pQyP\ngJT@@TfVdCAK\\PH\ndiG@`Dp`BDfWejjPB\nfHcdAa@\ngCh`LDdkPFDwI@\ndcNL@M@iRYg^vzB@j`@pdLJnFUt\ndigD@Dq`EIeYkfje`CCDqnQp\ndiT`@@rnRfUjEnBA``B\ndmNH@DAIe[VfeVj@B@CAdkae^Q`\ndedHXJBPRPrPzPFPfPrJPsRUSU@D\nfHcDA@\nfHdXA@\nfHdxA@\nfHgHA@\ndeTH@@RYeYn`HJ@CC`JfxYyF@\ngGQHJ@aIUjhCBqXwd@\ndaG@@@kdiVrX@a@C@hPfyG@\ndcll@DpYAmRYV]zzUZije`B\ngNtPHPjtfvZf@`\ndeVD@HADfvUFVh@@@`\ngGT`EaTf]jPLDmrD\ndaGH@DK`R[e[fiZ@LLQnyE@\ndmvD@BADfyW^Eh@J@CBdingdJ\ngGY@LDeVj`LJEc^R@\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\ndaE@@@aJyUnX@@@pkBinyD@\ndie@`NDHaIe]ih@J@CA`SBknPH\ndeU@@@aJueQfj@@@LAaLinF^P@\ngN}@EbDf]Zj@pJqoHp\ndeU@@@aJueQfj@@@LAALinF^Q@\ngJT@@Te^hCCKD\ndcwD@BWPQInuVZjjX@`\ndiVH@BAIfUInFjZi@H\ndaz@pL@HPHxHRYyZj`B\ndaz@pL@HPHXHRYvZj`B\ngGYHE@DYIHUj@prqyJ\ndayH`Dr@|Djyfjh@`\ngNp`@dfuZi@pJq_IP\nfHdpAa@\ngNv@ALZtkefj@`\ndieH`Dq`BDfUfnZii@H\ndaF@PDBHzHRYWih@H@H\ndaF@`N@HRf_rjYj@LFALJnyC@\ndaFH@BAIf]n``@@phLInyE@\ngGQDB@baBSKTpD\ngJPhLPDIKTpFDGEB\ndeV@@@RiU\\Yjjj`C@XSBkagdL\ndg\\`@@SFRYueUNvjjjj@H\ndg]@@@IIUYyT{zjh@@@`\ndaxH@@RV^jj`CAhPj[nHF@\ngGX`JDdjmTA`c^JX\ndg^D@IADfvYW}MjhHB@B\ngNq@@dl{MPblLZ~JX\ndctJ`HSBtOCIILXhduSUHQS@\ndkl@@LdbRdSRjP`jJ`@pfDJfxUOdZ\ndidH@@RYeVz@``@pXLJf{dB\ndigH`LJa@HRf^|jfZX@`\ngJQhHb@cIHUhCB[bA@\ndaD@P@qBbDfYvzB@@B\ndkm@@@IIUfU}OjhH@@H\ndid`@@pjRfUjXBB`@pSaxbL\ndcND@E@dfYwYn``Jh@LACBkaW^QH\ndaF@@@RevpjjZ@LJAB[nIF@\ndmvD@BADfy]fyjjf`B\ndifD@NADfvWaZjj@LJSBx^IS@\ndcND@IADfvYXYZjjZ@H\ndcND@BADfuYU]Zj@@@LASJxYW^PP\ndeTH@@RYe\\YjB@@C@Ppj[agdP\ndmvH@FCHhhhdYVhJ@@C@PcJ[aWbEH\ndcNL@LANRYygiUjB@`@`\ndifH@HCIDhYLJejh@`\ndaED@DHFRUe[fff@LDRnIG@\nfH`PAa@\nfHdHA@\nfHchA@\neFHBJFE@\nffs@`@@HRYyVWm[W`cVCDmVjjjjh@J`@H\ndcLD@@UIUe]FVX@J@aKCdrfx]yD@\nfewI@@DXldBSLjj\x7FJzriFJMEHymUDDUUT@@P@D\ndeVD@HADfyeFV`H@@piJ[ayD`\ndet@@DjYUZ^D`dJ@CBlJngfHp`\ndaFH@LAIVUnjjh@pZDJf{d@\ndg~H@AAJYU^wiNzBBJh`B\ndet@@DjYUZ^D`dJ@CCdpjxYyC@\nf`qa@@D@RYeU{TRg^Zij`@`DJVBbTxIVcV]{bLL@\ndmLH@@Rfum[iV`@jD@`\ndclD@@WIEDhbmSCMAPEH@XTa]N|Rf@\ndclD@@UJYY\x7Fkaf`bBh@LJPfg^IW@\nfgAA@@@ISLrotyHvk@@@@@@@P\ndeUD@DhFrJIJHusUMT@XYgCqDd\ndaE@@@iJUdf@H`@pRnydHp\nflu@P@@\\u{HhheEEMGEfJdzJV`hJ``H@@pecdeZMzJ^PB\ndet@@DjYUX^dHbH`CAdJfx^Id`\nfbmAP@@BU{NQQQQQQFVKYbmNbehJbHHB`@B\ndeTB@@pYRf[^njjj`CBXSBinFP\nfc\x7FAR@AU[OXICHiEHhhhblXdicBkvkNbdmUUULuUMSUT@FD\\DYpTeZMYp\\eFo_HM@\ne`\\PM@@@AHdbjnikgolbbbbbbTtRQTNTtrSBfgefRvsPADADqUUUUA@@P\ngNpP@btf{Zi@prqyJ\nffsA@@@YEHeHlcDeidfRtXLRujnjjj`@j@@`\nfb}`@@@YEDeMDhTihjLUiwhyZjjjjjjh@H\nfjcP@@@FrQQQQII[FIJgIVt{IP@@@``@@@@`\ndknL`LaE@HrRPzIJZ]Vh@b@CAlInd~Qh\ndeUH@JdDin]xZB@`@pIBX^IT`\ndg]L`LnDT@cIIChdieNkT@QP@P\ndclH@@rQQRJJuJ{PUDD@FEDwCoLjU@\nfbmq@@DX|CHhhdhddlTdQfgV|uTTEEUA@Aa[ENBdkQkNCEOHY@\nffs@@@LdbbdRdRQbLcKRU{HTmUUUUUUUP@XNqQgARtZwhiKWb@y@\nfewAa@AMfBPSHYEHiEEEDUeheme^uYt\\ujjjifjjZZh@L@xHs`iJtZs`yKT_H]@\neghPJD@AFimk`IAJPrJQRJJJHkKQK[PiJ^ZVNQYUUUUTsUUMMSU@@P\ndedL@@PTfUUZjf@LJpjz^Pp\nfnkA`@@N[dTRTtTTlVRbUFJlFNZmKUUUUUUT@F@TXipTeZMYw`iKWbLm@\nfig@P@@NZOHhdihhiXleDbjLUXL\\uZVjjjjjij`@`\nechX@@@@LdbbbRRQbvfRdrqC@bfadRUSRvuUUUUUUUUUTp@D\ndg|L@@v|dTTbbluRitEQDR@FCTwSm|Pc@\ndeTL@@zTfY[XXBH`@pHJz^I``\nf`q@P@@Ty{HeEEDhYDIVcLDQEUB@D\nfi{@p@@Zldh|dTTbblvrbbfaiIQjmhJbHjBHJP@B\ndk]D@BXCrJJJIPkiWV`d`X@H\nfhiP`@CAAQJ[gnyodgAhHHBB@@B\ndidHPBBlFlRYgVzB@`@phLKayE@\ndmvH`NTHaIeU^f`@jP@phLKaxbR\ndeV@`ABHRYeun`HJ@C@`pixeB\ndmv@`EBHRYe][hBBl@H\nf`q@A@@QGhaIfUvuv\\lz@`h@H@@pdCAIJtZwnHhp\ndeV@`IBHRYWVf`@k@CB`SBkd\\\nfbu`c@MDTBleVYbLbbbtReTTRsAQSAADtAA@@D\nfhi`A@I@b@qFQQQIIJEKLx{tAAT@D@@P\nfns`P@H`EYvQQQQQVZEIQILDhuVm@tDMUUTP@XZiqQoASdmV|`p\nflmA@@@ILkZjmsSdeV\\ELuMUUUUT@D\ndmtD@@QImYVUZh@@@p{B[ae^P`\nf`i`B@A@bDfUmvUhpTg^`@i`@H@B\ngOx@@eJimUTA`plZ~R@\ndeVH@LAIVYqejfj@H\nfb}A@@@ISZvmk\\lxkSoQsP@UUUUEP@P\nfig@p@@HdFJ\\bbTTRRtVbarRipwlezMjXJBQj`B@@B\nfoA@P@@HeYIefU]ipsfi`hD`@H\ndcLL@@G\\dTRRbOKPPTP@XRfES\\L{rE@\nfdu@@@LdbbTRrLtSI\\TZwhaDTUUTU@A`[AJLxIVcNCGfDR|\nflmA@@@YEEDhhTmMDsdmV\\ELAAUUUQT@D\nfdu@@@LdbbTRrLtSI\\TZwhaDTUUTU@A`YFBTxIVcNCGfFR|\nfnkAb@AUZBPrJQRJJJHkFIIWmV]EIZjjjYjjZj@CCvBLxJRmFlxNRmyAH\ndid@`@qDeYWaf@@BHlJ@j[nYBB\ndid@`@qDeYWaf@@BH\\F@j[axdH\ndeTH`ICDRUe_af@B@bJ\ndmu@PNTHbPaIe]Zf`@i`@pxDpjz^Ph\ndmN@@@RfV_Jaf`RB`@phFzUxbT\ngOy@HDfUkjj`LJlZ~P@\nfhy@@@LdbbTRtjVYHRg^BHh`@b@@`\ngNy`LETeVZZDs@\ndazD@BADfUvjXHj`\nfb}A@@@ILk[Kk\\tyKSoQsUSUUUUUP@X^AAFJLEIVcV\\EODQr\ndmMH`LVPBDiiu\\XUjjij@H\nfc\x7F@R@AUFlDadTbdTTTQVLRVtJU{UgQRVjjjfZjffjj@CBNBLxJRmFlxNR}godD`\nfnk@`@@UrJIJYQKISQHrgIZ]zNZjZjjjjjj@B\ndmtD@@QImYVUZjjh@pGBinFUyB@\ndk\\L@@STfUmWiiUjP@j@C@nESxfT\nfhy@@@DjUg^UzBu[pP`hhH@`@H\nfb}a@@L`rJJQIFYJYKDyIUgQSUUUUUTuP@P\ngNqhHf@cIICejPLH^KT\nf`aab@APQp@QddafaRbR]yZij@@@B\ndid@`@dDfYUn`HD@LJpj[nPH\nfoA@B@@RFQQQIEQILyYtA@p@@BGJ\ndmvH`Dd@aIVUwaZ@B`@pxDJfy^Q@\nfj}P`@GEAKIEDheED]idaZm{IZB@hBJjB@CCrBTxJRmFmxLTyy@h\nfigp`@DZBAJSJvnrnwJtYIW`}FuP@UUS@AD@A@\nfoQ`@@@ISLk^~FBuYuAH@@P@AaHANBdkQk\\Pqp\nfc\x7F@Q@AMzlD`fPrJQRJJJHkKQK[ZJ}jshykUUUSMUTuMU@A`GAF\\EIVcV\\DmQ{yCH\nfc\x7F@Q@AMglD`fPrJQRJJJHkKQK[Pj}jshykUUUSMUTtuU@A`GAF\\EIVcV\\DmQkxcNp\ngF|LHjOC^A|DiTt@@B\nf`qPa@LV``@QzPrRPqQIIXjlYruPTDT@A@\nfluQ@@A^AdRbRrTTRbKNN}EK@AP@@@@@P\nfa{A`@@E[dTTbRLrTfVrTIrRkNSejjjjjjijh@H\nfhiP@@@\\RiU{WZisQjjh@Jj@@`\nfj}PB@AVADILkkJzrmFFmdl@EUUP@D@A@\nfbmP@@@\\RiUyU^uipsdyjj```@H@@p]AAJBdkQg^CEODXr\nfdyAp@@XyHwhiSJrwoMANCUUTDDT@AajAJ\\EKQoAcqBE@\nfbu@H@@TyjwdyrIQQQHqISYBTFKADQUUTP@P\ndg~HPItHciCHhheEJlpz\\ADMLPAaPXpwrE@\nf`q`a@IZ|BHyHYEEDhiULfBtZ@bFfd`@`\ndmLH@@Rfum[iV`@jH@piLIaxdj\nffsA@@@ILklsJwoQbk^RVl@EPT@@A@@D\nfnkA@@@ISZvjsJklyIRZe[P@UT@@@D@@P\nfdeA@@@ISJ~sJ\x7FAF\\FMA@UA@D@A@\ndetH@@rQQJHtpsPT@`AaQMpsqDh\nfdeIB@LZmzH@cIEEEEeEDnRfkF}TmULsMP@XLAQbcNxbPP\nflm@@@LddTTVbvebyjUcNBfjjjjjjj@C@LDXIQgARUhuoQSr@P\ngJU@H`dkSBI`\ndmtD@@QIee^UZ``@@phfFUxe\\\ndmtD@@QIee^UZ``@@pinFUxaT\ndmtL@@QTfyeQehBA@C@jXYxb\\\ndcLH@@RYeZvz@`j`@pxBXYW^Q`\neMhDRUB\ndmuD@HTDrJZIJGaZ@B`@piBkix`j\ndmv@`LBHRUVUeZj@@@H\ndmv@`LCDRUVUeZj@@@H\ndaDH@@RYU[fei@LJpj[nP`\ndiFB@LAFEIg[Zjh@pkBiny@`\ndknD@MADfym]eVj@B`@pELinF]yA`\ndmvD@D@dfWeYUj`@@CCdpfxYyB`\ndifD@LADfyWaZjj@LBinGbHP\ndifH@BAIVUxZjj`C@PaLinGdD\neMPBcXLIyP\ndcNH@DCHheEDbnmPT@@F@hUMproHt\ndcMH@ITDee]UnX@Jh@H\ndaG@`LK`BLdTRIUSUpPea`IWHH\ndaDh@DqnAIeZfZZd@`\ndaF@`BBHRYg[hH@@LJCBknPp\ndaEL@LhDYIe\\jZjd@pcnQ`\ndk^@@@RfYU\\]Tz@@@@@LECBinFUOdZ\ndidHPBBHzHRYgfFBB@@phL[ayA@\ngOt@AdiguZj`LBmWrD\ndk]H@HdDeVYWz]NjdHB@B\ndcnH`Jd@aJYW]rnF`PJh@H\ndcnD`HI`BDfYoVnWZfX@@@`\ndk^@PIBHDHRYWY^fWX@JZa@H\ndg~H@ACHhdieDYSSl@EMTPA@\ndg~D@DClbbbTlRUL]mUL@D@FGYSRngrK@\ndmM@PAdI@iAIf]UneXHBd`B\ndieDPLZD@HhHrREQKaVii@LBrnGd@\ngNq@@dsmUPFEbq_DJ\ndctB`HSE@HrRPzKJKUUT@P\ngCi@DDfj@pPwED\ndmvH`IDHaIfUin`HJ`@`\ndo~L@M@iRYg^ufzB@jj`@pLLJnFUt{\\\ndo~L@CB]RfyV~^F`HJj`@`\ndg\x7F@`LIPBLdTTJRrVUJtsUUM@FD`S\\Lz]`\ndaxD@@QIgUjfBJlBpj{dL\ndmt@@DjYefdHbR@CBlinWbCH\ndklH@@rQSQJYGahBBi@B\ndkNH@DAIeV}VijY`pdYZ\ngJY@HDeYdRVFBwHP\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@FALT]{bEZ@\ndaxL@@rdenjjh@pZDrf{d@\nf`qpB@MF|BHRYWUVVcG^`@jjeH@H\ndclD@@[HhheBeSKkTp@P@XEpkoLri@\ndclD@@kHheCDdUKkSP@P@P\ndaFH@FAIe^fZVh@ppj{bI`\nfdyaC@OVAHHdLRFQRFIJZZKHRoAj`BIZX`@`\nfbma@@E@rJJJJISIIH|TyL\\mSHPA@D@@P\ngFp@DiTujdCBqXwd@\ndeVH@LAI[eQejZi@H\ndk]H`FTpbDfUmYkiV@Hjd`B\nfj}qB@BVBxDadTTRbRRTVasIFCzLDEETuUD`A`kENBtZJ\\eyCp\ndid@@LdbbQxXF@@CBdrf{bDH\ndklD@@QIge]aej@BX@H\ndg\\D`EtICHhdhXhUSP@UMP@P\ndmtH@@rJJJJia`HbP@phBinxdj\ndeeL`LZDh@cIHULhmMT@XUc\\L|`@\nfbuqb@LRuA@`AFRREQJKKSISUhiVhFB@@`@B\ndmtHPBBHfPRYeUXXHHh@H\ndk^@@@rQQHjIKJtzjX@HBJX\ndg^L@FAMrJZJIKPbkPPPr@FGIS\\JgrK@\nff}`P@F@QkNQSQQIZEJIJXRdeZBBFX@b@DCT\nff}`P@F@QhnQSQQIZEJIKHRdyZBBFX@J@DCT\ngK\\@ABeKcMHFDgDl\ndmO@@@`diWe\\JUfh@D@H\ndmO@@@`ldRabRpiVZ`@P@`\ndg~DPFvpbEBLbbRfbRM\\JpAESI@D\ngC`@Dio@pfyD\neMBBHR[B\nfjc@`@@ERYYefUez\\UyvPiZZjjjjjj@CCrLTXJVcV]zJ\\ey@H\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\AFJ\\EIQk^bgODZB\ngGU@EPdvmVAaErX\nfb}A@@@YEDeMDhTihjLUiwhyZVjjjjjh@LGHqS`iJtZs`isrDP\ndk}@@@aJVyY|hUtyjBHJ@B\ngGY@DDfvZPLLC^IX\ngNx`HLdmluHdX\ndkl@@LdbbTbsyYfjihDaV`\ngNp@DjWZeDCaXl[rL\ndet@@DjYWkafefiPCBdKagfYS@\nfhiAb@HHp@HrRRqQIYPsdcVVfiVji@B\nfoA@@@LdbRbbJvDkQfijZjT@H\ndknDpNWPdDdLdLbdLTRbdzhHF@@`\nfhq`c@IF\\BPQHXdLbdLRTvfdDjj@Hfj@@`\ndif@@@Rfy^F`H@@pYBinGd@\ndmvL@HAER[e]xV`@h@LFPj[eyD`\ndkmL@HLDUInUv~Eh@Jh@H\ndknH@LAIYyfUMj`H`@H\ndiFL@JAARY[vji@LLpfxe\\\ndiFL@BAAR[fvji@LLSJxc\\\ndeVD@JADfvYzVjZd@piLXYyG@\nflea`@F@bgHhhhdhebmIVTYhIBhjXP@`\ndeU@`Dp@aIUeQej@@@H\ndg|@@DjU_eZx{BAH@@BJ\\MaBine]N~Q`\nfhy@`@@BrJJJJIQ[DQeNmyh@`HB`@B\nfdeIb@LLDhwh`BLdTrbRJbTOARTxM@PMUUE@AaHBJRu[pX|`x\ndg}@@@yJeWe^nNzjhHB@CAXPjFUt{yF@\ndk]@@@yJeWmZ{Sjj`@`@pVDJnFUt~Q`\ndcmH@DxLbbTTRM\\nmPLA@AaSCJ{rD@\nfhyPB@ARADILkkKZtYhw`p@UR@A@@P\nfhyPB@ARADYEEDdXeLdsfc^C@PUH@D@A@\ndk]H`AdpqDfUmUiev@Bfd`B\nf`y@@@LdbbTRfNSI\\TKSoADTT@A@@XZPRcARtZso\\a`\ndg|H@@RfuvU[cn`@`@@@peBiiWSodX\ndg|H`ABHRYW[ficn@BjjH@`\ndk_H@FdprJJISPkatzjjiZ@H\ndid@p@qBqFqDfYoa`b@@H\ngGP@DiUja@xEXwbD@\ngGP@DiVV`iJpJqoDH\ndeTH@@RYWVf`@j@CC`SBhYyG@\ndmtH@@RYWUih@Jh@LNALJiWb\\H\ndcLD@@SHihheJLmUTu@D\ndg\x7F@`IVpbDfUuYZX{`@jiR@LAALJat~Qp\ndigDPLXXP@b`cIHUDnEZfd@`\ndk]@`AdHaIe[VZYS`@ijH@pxDret~Qp\nfoAaB@G\\ADILkkJ}FFm@AP@P@A@\ngOxhMDOAJmZvjhCCXobE@\ndk^D`La@|Dju^UimMjj@B@B\nfdyQR@NBYhwh`qLbRbbrRfTHiNCMKUMUU@aB`\nfluQ@@DJAdTTTTTRTQsEVbEKU@C@PD@@P\nfoA`P@D@DZrSLrkrQfgMTC@q@@P\nf`q@`@@HR[fYU_Sk^Zh@@@@@LMHYpTeZMYwnPp\ndg]LPElYLHc`cHhdliBiSP@Rtp@XLBXUKrK@\ndcNL@JAMRYYYyUjijX@`\ndcnH`LD@aJY{grevj``H@LABDxYW^Ie@\ndg~D`LePBLdTRTrbNT]uU@pD@D\nfoAab@LRMX@PeL|lmxiiuUAPLP@D\ndeVHPLX@bPaJU{\\Jjfj@LJANF^IA@\ndaFH`Dx@aIYUnZjh@`\ndeTH`N@HRVUmaX@b@B\ndknH@CAIe]eZZ@Bjl@H\ndk^@@@RfYU\\]Tz@@@@@LI@j[aWSxfR\nfhi`C@I@dDRFICHiCDeMhdaJ|Fj@H`@@@H\ndif@@@RYevz@``@pkBkay@@\ndew@@@pldTTJVTLmP@P@XEc]ODHP\ndaGH@LK`RUe[fjV@H\ndaGH@LK`RUe[jjV@LLBfxdH\ndeWH@BZPRYVtYjje`CB`SNGbQP\ndmtH`EBHRYWUih@Jh@LNALJnWbCH\ndo|H`EBHRYWUnjZ@Bjj`@`\ndcMH@AtDieV_ehHJH@H\ndk}@@@qJYVu|kitvi`PJ@B\nfgAP@@@XRf^~UqQgCVZjh@J@@`\ndk^H@LAJYeUquSh@@@@@pzfxUt~HT`\nfjcY`@LJCENPBedbbTRTQRRTqJZLxLTuUU@aDuQ@AaJAJ\\EJvR|``\nfmoYr@CA[t\\xHpSbk@|LddqTRbrfbRRRfejJRmzMjjjjhDHfjH@H\ngGPhMQHIJmT`XR\\RH\nfewh`@DRMdXHyEDhhhddmiUDenRuzp^cZ`B@HFjjhH@H\nf`qPC@MNADBBEQFQQQIQGQIgG^`HJjeH@H\nfdy@@`@Q@`bTQFHRYeWvUv\\|F@`j`@`@B\nf`qPA@MNADBBDfUuUehqwh@JjiR@B\nfdu@@@LdbbbRRltSIBTZwhmUUUUUU@A@\nfigA`@@U{dTRTtTTjTtRJeFJMxJRmKUUUUUSUP@P\nffcP@@@\\RiUyU_YVgCNKVjjBBF@B@DGVDXHIPTeZMYwhirVoHX@\ndg}@@@yJeWmZntzjh@J@CAXSBhYt{yG@\nfdea@@D@RYZymUr\\lGtVjh@@@`@B\nfoAQ@@KN@eLrj\x7Fbthu@@@D`@D\ndg}@@@cIDmEDhcJg\\l@@@@QE@\ndcn`@@rnuJYVuhUtHJIb@LBSIWbMh\nf`ipB@DX|@HRYeYU\\cMNmyjhhJHH@H\ndmvH`DH@aIVyVUZX@@@pxD[ae^Q@\ndeTD@@QInUnEh@H@LBRnGbEH\ndeT@@DjU^k``b`@pyLinF^IA@\nfoQH@@@XHYJYg]UirRkN@bJjhh@H\nfgApB@LLx@HRevUUpPTcViYj@H@@`\ngOy@DDfUkZj`LBcWrX\nfoQa@@H@RVUmUV\\djsj@Bh@@@B\ndclH`ABHRYVyzy]`BFh`B\ndcLDPND@c@aJY~vrjefj`B\ndidHPACDZHrJIJFn`BH@H\ngO|@AfeJykSTA@\ngNt`MPdfUZj@pvKyJ\ngNt`IPdfuZj@pJu_HP\ndg_@`DGPbDfUueZZ@Bjj@B\ndmWD@Hi`QImfUjjj@H\nfhiP`@C^@aImYWVVRoAZX@JiRACEaiFBLxJVkNB\ndmUL`LZDh@cIHULdeijh@p[FxYWd@\ngOp@DiYKZj`LFHlWrT\ndcLh@DxYCHdeEDcJmPDD@FEIcCoH`\ndcLL@@QTfVUV]Z```@LFJfFUxgZ\ndg^H@LAJUyfUSjhBH`@`\ndeTH`L@HReyTYi`@@CC`RfxYyD@\ngGYHL`DIMlu@XR|pq@\ngGYHL`DIMlu@XHwbF@\ndiFH`Bp@cIECDjZj@H\ndcLH`BBHRYg^fzB@j`@`\ndeTDPBdHcoAIfUvFBBD@H\ndg\x7F@PBWPbAbLbbbRfaSR]pPTMQ@F@acCNg_HH\nfoApA@BZLBHeDYEEDhiiTqUgPPUCTP@P\ndcN@PBBHFHrJJIJXmLDED`A`HXwCJ{rB@\ndig@@@pdigwJZjf@LFSJ[ayA@\ngOu@E`drm[SRAalWrT\ndkmL`LNDD@cIIBhdmeuZ`PH@LFqneSyE@\ndg_L`LfxPPBLddJbbQvfmPLA@A@\ndaxB`HRnCpRk]Zj`B\ndeV@PIBHzHRYeea`Ha@CA`rfx^QH\ndmu@PITHchcHhheEVF@bF@`Z\ngChhMDOBNtA`enP@\ndid@p@qBqAqDfYun``H@H\ndidD@@qJYWkjjj`CAhPj[nPH\ndeTL@@rTie_kjjjh@pZDJnGbMH\ndcLD@@QIeVuWVj`@@CClInFUyF`\nfoA@@@DjYUgWfiF`XJbh`@`\ndidH@@RYWZZ@B`@pXDpjGd\\\ndaD@P@qNqDfUZZ@B@CB`pf{dH\ndklL@@Ptfym]eVj@BP@pyLinF^Qh\ngOpH@DISOkSM@XDZobQ@\ndk\\H`F@HrQQJVIHjtzeX@H@LA@jFUt~P`\ndcLL`NWPBDif~{JifZZ@H\ndid`@@pjrQQQUn@hH@LDJnHp`\ndaG@@@pdifZxBH@CCJ[nPP\ndg~H@IAJ[VvuneZ@Bfh`CCdpfgSyE`\nf`qQB@FF\\BPRYVwUZgAR`BJjfD@H\ngNu@Dpdr{UPFAVMyF\ndg~D@EBldTtVRTOBntDASQ@D\ndig@@@pldTTQk`Ha@C@biny@`\nfoAh@@@XHkVRJJHyQJTxZpDPsUBBGJ\ndaF@@@Re]Jjjj@LFBDpnxeL\nfoA`@@@YHhhhdeCHvgT@D@P@@XJ@Q`iJtZsnPh\ndeT@@DjUijP`j@@pzDinF^PP\nfhy``@E@xeLsO}kSdm^CPUAEUQ@A`YAJLEKQkN|D\ndiT@@DjYVnXPbD`@pYLinGdD\ndmLH@@RfyYxYV`HJD@`\nfoA`B@N@bLbbbTNbRXJshBH`@@@H\ndcLH`L@HrQJSPiKmMP@@A@\ndaFL@LANRYUJfjf@LH[bXP\ndie@`NDHaIe]ih@I@B\ndmO@@@pldTTLRqiUj@``@pKNe^HP`\ndmM@@@iJYYtjFYBHJ@B\ndaF@`J@HRfWrjYj@LLAFxa\\\ndmOH@FePRYVukaf@HZH@`\nfdyAb@HHpCpRkVYU_]Nmyj`@@B`@B\nfj}A`@@HTdssKMzsRuYp\\mPDQTuTT@D\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\nfhiQ@@JJ@djlklkIW`mUUT@D@AaiFBLxJUg^CqDC@\nfakQB@CQDBPRYW[Ue]eZLCEoX@Ijjj`@H@B\nfde@`@@JrJJJJJIIGLUXOhmR@T@A@@D\nfdya`@O@x[HhheDlTdhsdmM@pQUU@@P\ndmLD@@qJY{WJeZj@B@CAj[ae^IB@\ndg^L@HACR[e]VxV`@jX@H\nfdea`@D@dkHheEDheDUSfoVBuLDpTT`@P\ndmtL@@RTeVUaUj@H@C@jXUydYH\nf`qa@@O@rQQQIISGBtju@@@QX@A@\ndcNH@FAIfYWgZ`hH@CAPcBinF]yB`\nfnsqa@BLSFkPRBiCHhhhhhddTmeNZlGrXHbhjejXh@LABehsoE[rC@\nffsA@@@ILvuoZunsfc^BVkSUUUUUUL@D\ndcnD`I[PdDfUm^neX@biH@`\ndk^H`MdICHhheCEfGS`HaiH@prfOfXn`\nfbmqB@BNcxD`dsLrzlvqUhasAATUSUD`A@\ndid@@DjU^nBAHBJ\\FaBiaxf\\\ndmtDPNDHaYAIfVUi``X`@`\ndknH@JAIUYfUNjjjj@H\nfhipR@LBBhug@BLdTRbrRfeIrcJjjfYfP@pxBBBTE[bOA@\nfbmha@LBm{Lm@BDaBTrs\x7F]riFTyEMUULsRuL@FD`PPR``isqGK@\ndaE@@@aJyUnX@@@pKB[nIE@\ngGP@Djuj`LLm^JD\ndmtH@@rQQEJZDjjfh@`\nfhy@`@@\\RYeeo]xjQg^ZB`@@h@@`\nf`iA@@@ISZvmjsbmN}P@@ETD@D\ndclH@@RfumVy]h@Jh`CCdpfFUyF`\nflu@`@@IRfum]fUgEZ}F`@jjjhh@H\nfbm@`@@FrJJQIFIKSIDx{r\\uUUUT@E@@P\ndmtDPBTLSlSHhhmDVFBBI@CB`pnGdR\ndmvH@DAIe[VUZh@@@pyJ[ae^Q`\ndk^@PABHtHRYWYZfWX@JVb@LFALJmxbf\ndifD`JxPBDig{JifZ@H\ndmNH`NTHaIfVUazXBHX`B\neMJDBDe`pQyP\ndmOH@NFPRYegXYUhD``@`\ndaDD@@iJY\x7FJjjh@pjLInyB@\nf`q@a@ARADJbDfYV]}YsQhBBjjb@B\ndg\x7FD@NfpqJYoYWJNzjjjV`B\ndg}B@HTDf|bfbbTThfnmA@tI@D\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@CCbLLDFJ^P|\nfhyQ@@CA@dsLjm{Jvg^Bt@@DCA@A@\ndmMH`NV@BDke[VFUX@ab@LBpfWbAH\ndiU@@@aJmUJnFjjj@H\ndo}D@DTNrJIQSEQJaZjZjj@H\nfoAP`@DNAsHheEEJefBMYji`@h@B\ndiF@@@rQRJVjj`CC`SBiny@`\nf`qa@@O@rJJJIIKERMjsPTEEQ@A@\nfb}A@@@YEEHdcLeLeB\\djshijjjj`@j`@H\nfoQHA@FJuXFH`HRYUYYbTT[UjZjefZ@B\ndcND@E@TfUvvf`@jh@LEALJnFUt\ndeTD`AdHaIe]jZ@BX@LJALj^PP\nfhi`b@FN|BHRYV~YYirpX@bBA`@@`\ndmtD@@qIUe\\YZ`@`@piFxUxdT\nf`a@P@@HhyIeWfUsVZj`HF@@`\ndklH@@rJJJIEQa`Hbj@C@PIne]OdT\ndeTH@@rJJIEMtAAP@XTFES\\PY@\nfdy@`@@QrJJIEIQISLx{tAAT@E@@D\ndg\\H`BBPRYg^U[hHBjh@H\ndcLH`IBPRYeWvz@`j`@`\ndaD@`@\\DimVz`@@CAdpj[nP@\ngGQDHG@nFRQFj`H\ndet@@DjYUZ^D`dJ@CAdpjz^Hp`\ndaxD@@QInejj@LLRfxa\\\ngOq@@eLvmLtA`l~Ht\ndidH`ACDRYWZZ@B`@pXDpjGd\\\ndaFH@NAIe^fiZh@`\nfoAPB@AVADILkkJ}FFm@AUUQ@A`hBLDiIVcNyC`\ndmvD@LADfvUaej@B@CAliae^P`\ndmvD@LADfWeYUj`@@CAlIne^PH\ndknL`LaM@HrRRqIYPYV`@f@B\ndeVH@BAIf_VzB@h@LJCBinHL`\nf`q@a@AZAD^bDfUmn]hrsh@JB@`@B\ndaD@P@bNbDfUZZ@B@C@`pnxbL\ndcND@NADfUyU]Zj@@@H\ndeV@@@RV[TYzP@@C@j[axaR\ndeT@@DjU_k``R`HipZDJagfXw@\ngGX@@dj|tHkAF|Rp\ndeT@@DjY]zXFB@@pYLinGbEH\ndcN@@@RVYUYwiBB@Hr`\ndif@@@rRQHqajjZ@H\ndazH@LAIYzjj@LFALJnxdL\nfbmPb@B^dDDadTTRbbRRTQXjrXy``jJjZbP@pyc`kNSgfC^b\ndazL`BaL@HrRPyKUPA`a]qJX\ndmVL`BaL@HrRPzJIZjj@H\ndcvL`BaL@HrRPyQZKUUT@P\ngNs@EjpdssTpFFU_I`\ndmtD@@QIn[VUZh@@@pyLkae^Pp\nfoA@`@@BRYfYWuVLyh@`@@@CBUF\\EIVcNyBp\ndmt@@DjYnvDHbJ@CBlkiWdB\ndg}H@ATLbbbbbJpj]mMULm@D\ndg}H@JxDefY^Zy[YjZZZ@H\ndmvH@ACHhhhdYUhJ@@CAbine^Q`\ndaF@`B@HRYg[hH@@LJCJ[nPP\ndg}B@DpAV|bbbRbrK]imUMMU@FGXU]IwrM@\ndcnL`LZ]@HrQQZYPyPkSMUU@D\nfoAQ`@EZ@JVQQQQQIWLTZsT`tAP@D\ndk\\D`HP@cIICDhl^e]V`bB`@`\ndg~D@D@dfVumQd{Z`@@@@H\ndg~D@FCldTRQTRUL]uUT@D@FBpfESKiwrI@\nfoA`b@LRL@HRf[g^|TuZjhDHh@B\ndif@@@RfU~F``@@pxDpj[nPH\nfoAqb@BTYIS`RBSLnmnsakTmTuUP@P\nfoAqP@DXH@RcNrJJIJKJUgMVZjZZj`@pybgIFl{dM@\ndaEH@DHDfYVyje`CAJ{bXp\ndieD@DHFRYf^EjiX@`\ngG]@EbDf]jPLInIT\ndmuD@FxERf_UrjYZjBJh\nfoQP@@@JRi^yWZ\\DhujjhHBh@B\ndo}B@HtDUtfyW[WaZ@BZh@LAPj[mM~QX\nf`qQA@CVHBHEDYEEDeMCLfR]zBBbfh`@`\ndmtH@@rJJIJEn`HJ`@pxBiae^Ig@\ndmvH@EAJYYtYhH``@pYBinGbRh\ndg^L@LAER[eYWNvjhD@@H\ndcND@BADfuYU]Zj@@@LNrnFUwbHP\ndazB`LaFx@cIHThmS@FBXWDC`\ndcND@EADfvUtYZ`@h@LFSJ[axbz\ndcN@pBBlFlVlRYfyVfBBb`@`\ndiFH@BAIUgjjl@pZDrfGd@\ndiFL@JANRY[vjj@H\ndcLL@@G\\bbbRfK]@PUP@P\ndo~D@E@\\bbbReRd[hBBjj@B\ngJ\\@AbeMK@XKGdP\ngJ\\@ABe[LbQpfyhb\ndaz`@@bfyJUfZYBHX\ndmM@PBx@c@aJYg\\jeZdHB@B\nfoQh@@@XdhrTsMlkSdeFluMTsUP@P\ndk}@@@YJUUURkatp@j@@@CCdqiWSyD@\nfnkA`@@X[dRdtbRLrTfVsIZMxIZmUUUUUUUT@D\nflm@@@DiUem^yIRVkNBejjjjjjj@B\nfhyA@@@YEHhheDecKQoNCU@DP@P@A@\nffs@`@@VrQSRIQSJJpqBt[pXykUUUUUUUU@A@\nfhyI@@DDlDBSJkrmmFF]xKUM@DMD@D\ndk]H@LdDie[Wz]N``@@@B\nfbmAP@@\\}GNRJJJJIEJIN`cA\\dBB@@Hb@@CBSNBdkpXyxbs`\nfakAp@@\\}EIVyHhhhhdTheETjBLEvPHH@@bbj@@B\ndk]L@LxDMIe]eRkSZjjjh@`\ndcNDPBePbNBDfYWia``aX@LFCBimy@`\nfnsHJ@CASVBLDxjsP^FRRXjIQYSQIYRuEIZmUUUU@`U@@XFpRcARUjwlm@\ngGX`DJdvsTA`a^YX`\ngNy`HLtemfjDc@\nfdy`a@BRlBHcDYEEDehXhlfB|FBBFB@`@B\ndg}D@DXIrJJIQIH|ivuTB`P@P\ndk]@PAdH`paIe[UZY]`@iiH@`\ndaxB@@QnRUeZj`CBlJf{dP\ndk]H`LiPBDigm[rivfPBJ@B\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\ndmtH@@RVYWeVhH@@LNRfxYWbPP\ndknL@HALRYyyWSZj`@@B\nfoAPb@ARLxDPdrmjktXkT@EMLd@D\ndg|@@DjU_eZx{BAH@@BJlIaBjUt{yfMp\ndifL@NAJR[Y^Ejfd@`\ndk^D@JADfV[W[mMjdHB@B\ndmOH@FyPRf_eriVjjeh@pkBhYxdH\nflmA@@@ILkZvmsQdeV\\EL@EUUUQR@FC`HqS`iJtZwhiy@H\ndkn@`ECDRYWUZf`@fj@cj\ndmvH`BTHaIf]un``J`@`\nflea`@A@bgHhhhhdmL]EVMyh@`@bX@@puQgAJtZsoI@\ndcLHPBCD{DrJJKQFLLDDU@A@\ngJPdLQDHHRViPH\ndg|@@DjU_eZx{BAH@@BJ\\IaBiiWSyf]X\nfleA`@@HcdTtbLRTrVVc^BuU@@@T@@P\ndaEH@LHDimVz`@@CAD{bTp\ndeWD`LjXP@cIHUDdLkP@@A`fMs@xP\ndigH@LxPRfuVz`@`@pQBxeB\nfhiHb@LB|FB@AFRREQQII[Z][ru@@@D@@P\nfhiHb@LBdFB@AFRREQQII[Z][ru@@@D@@X\\psbm^CqAk@\ndigH@LhPRfuVz`@`@`\ndeUD@LhARfuunh@J@B\ndkoH@DgPRYYe]SZ`hH@C@TJfxUOdZ\ndkoH@DEPRYYUfSZ``h@C@TJfz]OdJ\nf`qq@@IZLAJ[WUeV\\]z`@j@@@@`\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@X^qS`iJtZsoAbgH\ngOt@ATiVKjj`LFHlWrT\ndid@P@bNbDfYYa`H`@LJBfx^Q`\nfhiAP@@XyKRTrlovmA^CUUUP@P@FAhDipTmFl{p^HPp\ndcM@pItIAICICHiCDeLJuPAB@D\ndg_H@FzpRYeUyEZ``bh@H\ndmtH`EBHRYWUih@Jh@LAALJnE^QH\ndcOH@NGPrJJQVIKmUURpAapXUMJ|b@\ndg_H@AVprJQRIVYG]UUUK@D\ndeWL@DpPzTfY[ifjfX@`\ndaF@@@RYe[hB@@LJCBknPp\nfhyq@@DZ|AIe[yVvcCV|EjVffej@B\ndmuH@DTDfYUQUjjj`CClJfxYyB`\nfbuQ@@DJAdTTRRQRRbRDiNVjjjf@B@PMP\ndknD@HALbfbRadxV`@j`@`\nfoAAB@A@bLbbbRebRYrshBB`@@@LM@pQgAJtZsnPh\ngJXHD@aIUj@pHVOI@\ngOq@@dsI[UTA`Ub~R`\nfoAA@@@ILs|kiFZLuU@AT@A@\ndeTD`FdICHhdhUWPAD`A`RYS\\`P\ngOp@DjukZj`LJlZ~R@\nf`iA@@@YEEHdcLeB\\djsjjjjjjP@`\nf`iAB@K@BDifYYWyjSc^h@`HP`@CBPBLEIVcNyCp\nfdeAB@K@BLdTTTRbRsWMR\\[u@DABEP@A@\ndcoH@DGPRUe[^e]Z@HX`CBdJnwbPh\nfb}P@@@NrRJJIQJKEKB\\hvoQsTEQ@PDT@@XNQbgARUjw`qSd\ndeU@@@{IEEEKP`QP`A@\ndevH`Bp@cIEEBdUCMR@D@D\ndmMH`Ad`bDfYuVzU``JR@H\ndcm@PNDHaPaIeU]iaf@Bfb@LFCBE]yB@\nfluQA@N^bBH\\DILrsmlnrUoNCA@qMTlT@D\ndcn`@@rawIEDhiUTkhPUCD@XDc\\oHt\ndeVH@JAJ[e^f``P@LJPfz^PH\nf`iQB@C^X@HrQQJVIJYDijsoUJpACQ@A@\ndeTL@@zTif[rjjjh@`\ndeTL@@SdfUUifiZh@`\ndcLD@@QIe[]ifiZY``Z\ndaE@`BhHaIfUn`H@@ppL{bTp\ndmv@HBBHFPfPVPRYUzih@Jh@H\ndmuD`FFUBHrJIJERn`BI`@`\ndknD@D@tfUe_WViB@`HJpEL[aeSyE@\ndo~D@DA|bbRbbRqvviB`R@`f\ndid@@LdfbQ[fji`B\nfakA@@@YEDeLlhheHmXjL}DNZjefjjjij@aeJprBBLTxJVcN|FJ\\ejwdN`\nf`qI`@DXUh@oYEEEELTlfRtYjjZfi`@piSakNyCp\nfdyHP@DXUh@oQrJJJJXiYILehsUTuMTl@D\ndiDL@@RdfVejj`CCB[nIP`\ndmtHPIBHVHRYfUXXBHX@H\ndieH@JxLbTTQkfej`CAFGbPP\ndeUD@FxJRVYmnYjZ`B\nf`qa@@M@RZYU_tVeFj`hHj`@LM@pRcNBTZsnHex\nflma@@@`rJIJYRIIIFcIF\\GtX@Jjjjbh@LG@Qb`iJtZsoQR\ndcl@@LdbbRRkCtaDQTPA`JXU\\LkrM@\ndid@p@bFbAbDfUfn`BH@H\ndeTL@@PdfzuFVjfd@`\nf`qA@@@ILroljJSoMA@P@@@FBlDipVcV]{dF@\nfhi@p@@XyHpTieY[wzB]zjjhHB`@LCPIS`iJtZs`|``\ndig@@@pldTTqkiZjPB\ndaE@@@qJYfn@b@@ppj[d\\\ndigH@LhPRfuvz`@`@`\nfhiHb@LBlFB@AFRREQQII[Z][ru@@@D@@P\ndeWD`LjXP@cIHUDdLkP@@AafMwD@P\ngJT@ADiZhCCBGbV@\ndaFH`Lx@aJY_JjZX@ppD[dD\nfhiPb@KN|D@PeLrj~lKRcT@@@Tp@A@\ndifD`Na@BLddJT[ejj`B\ndaEH@DpDeYVyjj`B\ndiD`@@iarQQHijVPPJj\ndk}@@@qJYWm\\katvid@J@B\ndknL`JaLCprRRiQIKSZjjj`B\ndet@`@bDfUUiaf@Bh`CB`pagbIp\ndclH@@RYfmj[iZZjj`B\nfoQA`@@\\ldsKKnlyKUgM@pQSD@FALJL{bJB@\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\ndmMD@DhNRYYWIiUjA@`@`\ndieD@HXDR[eVyiih@`\ndeU@@@qJYejxBHh@LJJfF^Qp\ndmuH@DXDfUgjZ@Bj@B\ndg}H@NTDefV]qT{Zi``H@H\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\nf`a``@L@PdwJrkIoMUPPT@@P\ndazD@DAdeYvjh@pKBknIB@\ndefD`BpPbDemgijj@H\ndo~D@D@|bTTTTRqvvhJHb@B\ndmvD`La@|Dj~Uaej@B@B\ndaE@@@yJeVnBB@@`\ndmwH@DHPRYe~[fjVj@H\ndazL@BANR[UZj`CBdrf{dD\nfHgPAa@\nfle@`@@^rJJJIRYqQY`hi`HbjB@@@H\ndaF@@@Ri][jjj@LNaLJfx\ndif@@@rRQHkajjj@H\ndet@P@bBBDfYVX^fBBHPCA`pfx^QH\ndmL@P@bBBLbbbRaZ^FBBbD@`\nfoQa@@A@RYfYWvBUXsf`B@@`@CCeNRUhsnHEX\nfhy``@A@|dsLro~pRkF\\t@P@EP@A@\ngJY@HDeYhRVFFOH`\nfoAAA@F@bGQBSJwroSakPAD@D@@P\nfle@P@@HBeIeUUYVsN}EjjZZjj`HxjX\ndeT@`@dDfYWFZP`@HR`\ndid@`@bDf[Wai@@@LJ@j[nI``\ndmtH`IBHRYm]xZP@h@H\nf`qPB@E^ADILkjlkQcoP@SUUDBGJ\nflua@@E@rQSISIQJEIgEFbf`@jj@@`@H\ndeu@`DhHaIeURhYiZeh@`\nfb}a@@E@RfuUe]UYqQg^Sf`@jjh@H@@pT`eARtZpT|qbNP\nfa{a`@C@hwIEMEDdbdeLeeqQkAbVmAAQUT@EE@@XFPpTeZlxJ\\}y@h\nffs``@C@heMrklkjoIF\\FIZtDDTD@@D@@P\ngFx@@eLzuU@XFHwbF@\nfdyqB@BZ|hDQdTTRRLrbbXKtXHHfjjH@H\nfnsQB@IVDBHrJIJZEQQHjIJgK^jv@HZjj`@H@B\ndcm@@@uJfUWyYvjjjj@LISBinFUxdZ\nfoAq@@DDlAInfUWUXsfjjjjh@H\ndg]D@DDKR[e]UxVjjjf@H\nfoAQB@ARlBHRYVueZLTZ@Bfib@B\ndg}H@DHLbbbQTRS\\]mTl@D@FERng_Lrf@\nf`qP`@DD@iIfUumV\\]yjei@B@@`\ndmuL@DHIWHhhdcFyjef`B\nfhi@P@@HD[Hhdihdibj\\UYjP`hf`DGL\ndiD@@Dj}Yjj`CCdpj[ayD@\nfdy@`@@FrQQRJKZDjTdjuATQQMH@D\nfhi@@@LdbbRRNbRxkpXFBb@@@Ppp\ndmt@@DjU_ZxHHZ@cgChSBjUyc\\H\nfle@@@LdbbRbVQfRyjJXFBhh@@ACE@\ndaE@@@qJYVnBB@@pHj[nHf@\ndidH`D@HRUe^Eh@@@phBkaxdL\ndmuH`LY@BDfymYUj`@@B\ndcMH`DjPBDefulUZ`BH@H\ngOt@AdiWqZY`LCDWrT\ndg}H@NLLbbbTVaSR]pPRTi@D\nfhiAB@A@bLbbRaRbbRhqwh@J`HD@@`\nfhy`@@@YIEEDdXllQbk^CTCP@@P@A`kENRUhsoAxae`\nflu`@@@ILksLjoQchaSUUP@@A@@D\nfbu`c@@drBlEVQkLbbbRbTJRTkI^SAAQAAQ@@FF`XEIVc^CGOHV@\ndcLL@@WTfZYWijjjj@H\nfle`b@LPP@HrRPjIIKQIYQhiVhHHB@@@LCXYpTeV]xLT|aP\ngNq`@fdwKUPFAQkyL\nfhiA`@@HBdrsJrziuoMP@A@H@A`JcARUjwnHLx\nfdya`@H`PEIefUewTzwfh@@`F@@H\nflep`@OQRABSKLjo{JlYsT@@@Tp@AajcARUhsoQSrG@\ndifH@DAIfU[fjV`CBlJf{dB\nfjc@`@@ERYeu[VyV\\Uiwhy`HJjjjhj@B\nfb}A@@@ILk[Kk\\tyKSoQruSUUUUUP@P\nfb}@`@@YRfum[VwYqVg^bf`@jjjjJ`@`\nfhyh@@@XisVRJIJYIPiTDkW`aAQL@A@@XRQabcV]xOHZ@\ngCi@DDfj@ppfyD\ndeT@P@qIdDeYWxY`@`Ha`\nfdeIB@BTuEpIAIfUeUeYrt_A`HJjfhd@LNXEHu`qxcW`\ndg}H`BFPdLbbRRTTmLnp@TuP`FAYiwqDT\nfbmIB@BTtepICHhhdhddhhfsed~C@PUUMUD`A@\ndk}@@@YJUUURkatp@j@@@C@dZUxTYi`\nfhyP`@LRAyIYUVuugIJly`@h@JH@B\nfhyQ@@M^@eMk\\lzpRmN}PA@QAD@A@\nfhyQ@@NVAdbfRfRRTKARUYu@DT@T@@D\nfhyP`@EAAQJ[eWUWdmF|F``bh@@@B\nf`yP@@@FRifUV|cAVTxwj`YBhjH@LITxJRmV]{bLF@\ndk\\H`D@HRUe[Watv`@jb@LA@jzUt~Q@\ndaDHPNBHPHrJIPeUMT`FE@aTwHx\ndeTHPNBHPHrJIPiEUMUR@P\ndclD`HP@cIHXdiepkjp@UD@XLU]J{r@@\ndk^D`La@BLddlRTrF]MZ@Bh`B\ndcl``Ae]BHRYWYZY]`@fhPB\ndg~@PNBHTHRYUueicn@BjZD@pdLKaWSobHp\nfdyPc@IZxHDPPH\\DYEEDiDfeDfJCFBAXjfa@B\ndaF@@@RiUkjjj@LFaBinyF@\ndg|H@@rJJIHqIMqw@PP@@@XKaTwRng_H@\ndidH@@RVe~Fjjh@pzLJfx^P@\ngJT`LPdfvhCAX|b@\ndcLH@@RVYVnffjZh@`\ndeTH@@rJJIFMsSUT@XUeLL|``\ngOt@ADiYqfjPLMB~R`\nfhia@@I@RYeU{UDkpV``bjh`@`\ndcnH@DAIfYwXUuj`PH@LFJne]y@`\ndk^D@DCTfYgUXUMj`Pb@B\ngCi@HDff@pPwH`\ndknDpItpdDdLdLbdLRTtEZh@a`@`\ndmuD@HXDR[fUEV```@LLRexS\\L`\ndk\\L@@STfUm]iiUjP@j@CBlkaOdR\ndieD@DpFRYUrijfh@pILx^QP\ndcnL@LAFRYV]Zy]Zi`@@B\ndmL@@DjYUVGi@@@`@LNpjxYWdH\ndet`@@iiRfYunFVifi@LLpayG@\ndidh@HJfAIfYxZie`B\neMbDBDfp`\ngJPXHlQLQzlA@\ngC`DADZHRVhB\ngC`DAbZHRVhB\ngCahHlNbNlA@\ngJQhHl@cIHUhCBGd@\ngKP`@Ti\\Zj@pRwI@';
carcp.r3_0 = 'daD@@DiYZYji`@\ndaD@@DjUZxHD@@\ndaD@@DjUZxHH@@\ndaD@@DjWjXHB@@\ndaD@@DjWzXHB@@\ndaD@@DjYvxH`@@\ndaD@@DkeVyjj`@\ndaD@P@bBbDfYvzB@@@\ndaDD@@IIf]nZZh@@\ndaDD@@IIf]n``@@@\ndaDD@@YJZUnjjh@@\ndaDD@@aJVdnjjh@@\ndaDD@@yIe^f`@`@@\ndaDH@@RVU[j@@@@\ndaDH@@RYVih@H@@\ndaDH@@RYe[hB@@@\ndaDH`BCDRYg[hH@@@\ndaDH`NBPRYWih@H@@\ndaDH`NCDRYWih@H@@\ndaE@@@YIeZn`B@@@\ndaE@@@aJyUnh@@@@\ndaED@DpFRYVkfjY@@\ndaF@@@RYe[hB@@@\ndaFD`L[`BDi]lJjf`@\ndaFH@BAIf]n``@@@\ndaFH@DAIYUnZjh@@\ndaFH@DAIeUnZjh@@\ndaFH@FAIeZn`B@@@\ndaFH@LAIVUnjjh@@\ndaFH@NAIe^fZVh@@\ndaFH@NAIe^f`@`@@\ndaFH`LP@aIe\\jZjX@@\ndax@H@SHbDbLbLddjUUT@@\ndax@P@SHqDjmZjh@@\ndaxB@@rnRV{Zj`@\ndaxD@@QIgUjj@@\ndaxD@@YIgYjf@@\ndaxD@@iJU^jj@@\ndaxD@@yIUVjj@@\ndaxHpJBPRPrPrJPiUUH@@\ndaxL@@SDfUVjh@@\ndaxL@@idiUZjh@@\ndaxL`HS@BLddNRuT@@\ndaxL`HS@BLddNbuT@@\ndax``HJn@JRgmjZp@\nday@@@yIUVjj@@\nday@@@yIUWjk@@\nday@PDh@c`aIUUZe@@\nday@`Dp@aIfYjj@@\ndayD@HPNRVUZj`@\ndayD@LHNRUUZZPcH\ndayH@DpDfYfjh@@\ndazB@BAJyImmji@@\ndazD@LADf]Vjh@@\ndazD@LADf^fjh@@\ndazD@LCdeYzjh@@\ndazD@NADf{Vfl@@\ndazH@DAIeYjZ@@\nda{D@HQ`iIYejZ@@\nda{H`Dpn@HRYeZjP@\ndcL@@LdbRbceBDEEP@@\ndcL@X@bBbFbAbEbMbDfYn\x7Fijjjj@@\ndcL@X@bBdFdAdEdMdDfYn\x7Fi`bHh@@\ndcLB@@imReUUUvjjjh@@\ndcLB@@riRfY~Qfjjjh@@\ndcLD@@IIf]^xViZjP@\ndcLD@@uIfUk[hBBj@@\ndcLDPDtHaXaInUvxY`@i@@\ndcLDPEt@b@cIDhTdiaUUUM@@\ndcLF@@Rag\\bbTVTILuSUT@@\ndcLH@@RYeUqVhHH`@@\ndcLJ@@PUuInUgzV`BJ@@\ndcLL@@STfue^UZX@HBL`\ndcLL@@STfyWWaZ@Bh@@\ndcL`@@qaRfU~ZxHDj`Hj@\ndcM@@@aJufYgZhBH@@\ndcM@PEtH`haIf]u[hHBj@@\ndcM@PEtHchcHhheETppDQT@@\ndcMD`LE]@HRV[]nEjiih@@\ndcMH`BuPBDf[U{aj@BX@@\ndcN@@@Ri]mUvjl@@@@\ndcNB@BAEuInVVFV`HF@@\ndcNBAHAEvISdfyV{iZ@HX@@\ndcNBAHAEvISdfyW[aZ@BX@@\ndcND@BADf{YU]Zj@@@@\ndcND@E@\\bbRafUM@AUP@@\ndcND@E@dfYwYn``Jh@@\ndcND@MBldTtRROSPPQP@@\ndcNH@EAJ[WU[j@Bj@@\ndcNH@FAIfYWgZ`hH@@\ndcNH`Bp@aJY{UWZZjj`@\ndcNL@FA]rJJJJJlLADU@@@\ndcNL@LB]RVV]vE`BFP@@\ndcNL@M@iRYg^vzB@j`@@\ndcNLaIQ]BHf]yInUvxY`@f@@\ndcOD@DgPGHheDhkrmUSU@@\ndcOH@NFPrQISQHrmTAA@@@\ndcOLAHHPSXeNrJZJIHlKTuUH@@\ndclD@@GIEEHhfUKmAU@P@@\ndclD@@UIfV][iuhFAH@@\ndclD@@iJYW]rnF``JX@@\ndcll@DpYAmRYV]zzUZije`@\ndcll@Dsm@iRYgeVE]ZjeZ`@\ndcm@@@YJYYwhUtH@@@@@\ndcm@@@{IDeCDdUKh@UUD@@\ndcm@@@{IDeCEDUSh@UUD@@\ndcmD@DHERYYUZz]Z``R@@\ndcmD@DpFRYV]Zy]Zi`@@@\ndcnD@D@TfYg\\fWVjYjh@@\ndcnDPN[PBABLdTRbauCtuTuSP@@\ndcnL@LAFRYV]Zy]Zi`@@@\ndcnL@LAMRYUUrhYZh@h@@\ndcnL`LaA@HrRPjIKTrzmPHD@@\ndcndADkaTMz]yIefU[iUjeji@@\ndco@@@bdigyWJWYj`@P@@\ndctB@@RURY]VvjjZ@@\ndctB@@ieReUWZjjj@@\ndctF@@rngTen{mjjj`@\ndctFPHSNePBABLddNRTbuUK@@\ndctH@@RYuUVjjj@@\ndctHxJBPRPrPFPfPVPvPrJPqJQUUUT@@\ndcu@`Dp@aIeUUZjjh@@\ndcuFPBvDsiT@`PcIICdeHmURp@@\ndcwD@HQ`iIYgmZfjh@@\ndeL@@Di[ernDYZjij@@\ndeL@@DjYeIjGijjjj@@\ndeLD@@EJUWhRfFZjjj`@\ndeT@@DjWvifjih@@\ndeT@@LdbTRoBuUM@@\ndeTD@@EIe]jZ@Bh@@\ndeTD@@QImeQej@@@@\ndeTD@@eIfu~Eh@H@@\ndeTD@@gHhhhjppDQ@@@\ndeTD`AdHaIe]jZ@BX@@\ndeTD`NDHaIfVVfBA`@@\ndeTH@@RUYTYY`@@aH\ndeTH@@RUYTYi`@@aH\ndeTH@@RV[TYjP@@@\ndeTH@@RYVZfZZj`@\ndeTH`IBHrJJJJlLADP@@\ndeTL@@PTfyVzV`B@@@\ndeTL@@QdfygFV``@@@\ndeTd@HRi@TefUzVjih@@\ndeU@@@aJWeQfj@@@@\ndeU@@@aJueQfj@@@@\ndeU@`Dp@aIgeQej@@@@\ndeUD@DdARYgxfZjf`@\ndeUH@HPDefuFVh@@@@\ndeUH@JdDin_xZB@`@@\ndeV@@@RgYTYj`@@@\ndeVD@BADf{YxVjjX@@\ndeVD@D@TfVgJfjih@@\ndeVD@DAdfygFV``@@@\ndeVD@FADfygFV``@@@\ndeVD@IADfyWxV`@`@@\ndeVDAHAHeNR[e[aZ@B@@\ndeVDAHAHeNR[e_aZ@B@@\ndeVDAHAHeNR[fTYZ@`@@\ndeVDPJJPqFqDfYokjVjX@@\ndeVDaBxPbBd^RYeei``X@@\ndeVDaNFPbNf^RYWZf`@f@@\ndeVH@IAIe]ZZ@Bh@@\ndeVH@LAIUeQfjjj@@\ndeVHpDxHbhbXcHheEJptuMH@@\ndeW@@@RTfyWxV`@`@@\ndeWH@DZPR[e_aZ@B@@\nded@@DiUUjjj@@\nded@@Dj_VfZZ@@\ndedB@@RiR[UUijhHr@\ndedB@@iiReUvjjh@@\ndedD@@QIkWZjj`@\ndedD@@QInUVfj`cH\ndedD@@QInUVjj`@\ndedD@@aJVfjjj`@\ndedH@@RUUVjjh@@\ndedHXDBHjPZPzPFPfPRYZZjjh@@\ndedHXJBPRPrPzPFPfPrJPsRUSU@@\ndedH`HALRkUUjjh@@\ndedJ@@rneI[nvjj`@\nded`@@iiReUvjjh@@\ndedd@BXYADfyvZZfBL`\ndee@@@gHeHiCuUV@@\ndeeD@BdDR[mUjjh@@\ndeeL@HdBEIVUfji`@\ndefD@LADf^]Zjj@@\ndefD`FFPBDiWnjjf@@\ndefH@DAIfWvjj`@\ndefH@DAIfuVjj`@\ndefL@IAAR[UYjjX@@\ndefL`F`Y@HRkvyjjX@@\ndefL`JHY@HrJJEJUMS@@\ndeflAHrfxDfISdfvyZfi@@\ndegD@HZPEIUUfji`@\ndet@@DjYUX^d@@@@@\ndet``Dki@HRYYUnFVjVi@@\ndet``DkiBHRYYUnFXBBa@@\ndeth@DkiAIeeVxYZiZd@@\ndeth@DxYAIeeZxYZfYh@@\ndeu@@@kIEEDceCLaPD@@\ndeu@`Dp@aIeURhYfh@@@@\ndev@@@RYyULFZh@H@@\ndev`@@rfeJY{ZxYBBJD@@\ndew@@@pldTTJVTLmP@P@@\ndg\\B@@Q[R[VUmgVf@HhBL`\ndg\\D@@eIfU_Un`HJj`@@\ndg\\H@@RYWY^ih@Jmh@@\ndg\\H@@RYvYiVvfZjjBL`\ndg\\d`LF[a@BLddJbbQvfmPLA@@@\ndg\\h@Fd{AIfUWxUZABI`Hj@\ndg\\h`LJfd@aJ[Ywkaijejh@@\ndg]B@NTBNtfY}[fyjVjf`@\ndg]D`NV]BHRYWVyih@JZh@@\ndg]HPAuPbBbDfYw[fzB@ij@@\ndg]H`AuPbDfY_[fz@`ij@@\ndg]L`LnDD@cIIBhhd]ikTC@P@@\ndg^@@@RigvuNzjk@@@@\ndg^B@BAEoHiihdhUNmT@QP@@\ndg^B@BAMoHiieDeBimU@DP@@\ndg^DPNI`BDBDfumeSmZf`@@@\ndg^D`INpbLbdTJTv`kU@DS@@@\ndg^D`La@BLddLTRRIvmTE@@@@\ndg^H@DCHhhhddYimTE@P@@\ndg^L@EACR[YWVFVh@JX@@\ndg^L`Iia@HrIQPjZIG]TtuU@@\ndg^LpDx{BHjHVHrJIQPiZLLADUL@@\ndg_@pNfpqDBCBDfUyWbjfijfPad\ndg_BAHJ`QSbT{HiheBidwMMUUR@@\ndg_L`LfxPPBLddJbbQvfmPLA@@@\ndgl@P@SHbDjmUUZjjjh@@\ndglB@@Q]RYUumZjjZ`@\ndglFPHSItpBEBLddNRRTbuUTl@@\ndglP@@anESoIDhhd\\iMSMS@dWP\ndgll@DrSAmRYV^uZiik``X\ndgmFPBnDr]L@aPcIICddeHmUUK@@\ndgmL`DVCl@cIICDmihmUUS@@\ndgnNPKaLXYTOBoCIIKHiMTuUMU@@\ndgoL`LD~gPBLdTtTjTuMSTt@@\ndg|@@DjU_eZx{BAH@@BJ`\ndg|@P@bEbLbbbTVbKR]pP@P@@@\ndg|D@@MIfV]UivviP`R@@\ndg|H@@RVUvU[cm`@`@@@@\ndg|H@@RVUvU[cn`@`@@@@\ndg|L@@t|bbbbbJcBmm@tCD@@\ndg|d@Dq]@\\bbbbfJSSimUSTs@@\ndg|laLJce]@HjUyJYn[gFNzZZYj`@\ndg}DPEtYBHXHrJIJZQGUvg@DKUB@@\ndg}H@IlLdTrTraS]Jt@EMQ@@\ndg}L@hdDNISid~R[fV]F]mh@@H@@@\ndg}L`JXiTIAIf]VunNzVjZj`@\ndg~D@D@\\bbTbTjQL]mUR@D@@\ndg~D@IB|dTrTraS]Jt@EMQ@@\ndg~D`LS`BDfUueRh{Zjh@H@@\ndg~L`EF[BHRYVyukev@HZiH@@\ndg\x7F@PBWPbAbLbbbRfaSR]pPTMQ@@\ndg\x7FH@DjprJIQEQIMqvuRp@P@@\ndiD@X@dDdLdJdNdAdLbdLtjjh@@\ndiD@`@RdjeVjj`@\ndiDB`HSB@HrRPiIZj`@\ndiDD@@QImVZjh@@\ndiDD@@QImZZjh@@\ndiDD@@QIn]Zjh@@\ndiDH@@RVUjjj@@\ndiDH@@RYWZjj@@\ndiDH@@RYuVjj@@\ndiDL@@Pdf]ijj`@\ndiDL@@RdfUUjj`@\ndiDL@@idiUVjj`@\ndiDL@@xTiUVjj`@\ndiDLB@PTyInuZZh@@\ndiE@@@aJuUjjh@@\ndiEL@HPJyIYvZjX@@\ndiEL@HhNEIgVZjX@@\ndiFD@AADfuUjj`@\ndiFD@BADf{Yjj`@\ndiFD@FADfumjjP@\ndiFD`JxPBDivzji`@\ndiFD`JxPBLbdTljjX@@\ndiFD`JxPQDivzji`@\ndiFHPF`@`PaJoUZjT@@\ndiFJAHALXXgNRYvvjj@@\ndiF`@@SNGHhhcFjf@@\ndiG@@@HTeUWjjp@\ndiGD@HQ`kHeECFij@@\ndiGD@HhPyIUVZjX@@\ndiGL@HQ`h\\bTTQZfh@@\ndiT@@DjV]nxVjihHB@\ndiTH@@ReUxRfjjf`@\ndiTH@@RgeXSaj@B@@\ndiV@@@RfU|kadHB@@\ndid@@DjYUaBHP@@\ndid@@LdbRQk``b@@\ndid@`@bDfUff`@h@@\ndidD@@EIfU[ffiP@\ndidD@@EIfU[hBB@@\ndidD@@GHhdhZZ@B`@@\ndidD`BD@aIf][hHB@@\ndidD`BDHaIf][hHB@@\ndidD`BDHaIf_[hHB@@\ndidD`BDLQIf][hHB@@\ndidH@@RUe^Fh@@@@\ndidH@@RYVZZ@B`@@\ndidH@@RYWZZ@BP@@\ndidH@@RYm^Eh@@@@\ndidHPNBHPHRYWbjfid@@\ndidL@@IdfYoa`b@@@\ndidL@@XTfUfn`BH@@\ndie@@@EIfW[hBB@@\ndie@`BDHaIf][hHB@@\ndie@`Dh@aIefkfif`@\ndieD@DpFRYVZyjfd@@\ndieD`JXaBPRYgvzejX@@\ndieD`LIN@HRZufFZid@@\ndieH`DpPBDfYeaZjj@@\ndif@@@rQQIFfZjj@@\ndif@@@rQQIFfjjj@@\ndif@`D@HRUe^EX@@@@\ndifDAHAHeNR[e^Eh@@@@\ndifDPJHPqFqLbbbekjVi`@\ndig@@@xTjU^njjj@@\ndigDaLHVx@cI{dieljjUj@@\ndigH@DK`R[e^Eh@@@@\ndkL@`@SDjUUUjjjj@@\ndkLD@@QIe[WVijj`@\ndkLFPHSAWPBIBLddNRRdVjjV@@\ndkLF`DkaTpBLbdtVafjjji@@\ndkLH@@RUUUVjnzl@@\ndkLJ@@imMJUUUZjjj`@\ndkLP@@anF]OIDhhjeIjYi`RKh\ndkLP@@bfF]OIDeDTeIiii`RKh\ndkMFPBNDpUt@bPcIICddiEjje`@\ndkNLPFi]@HLHrJQRjJJjZih@@\ndkNLpFjUBPRPrPrJPsISJjZfd@@\ndk\\@`@bDfYYwZ]NB@@@@@\ndk\\D@@wHhhhhbfESZAhD`@@\ndk\\D`ELLSHhdidhZZ]`@iYH@@\ndk\\H@@RYeg]itxH@@@@@\ndk\\``LyS@HRfUeTUtzBHba@@\ndk\\d@Dq]@\\bbbbfJZ]MjjZe`@\ndk\\d@DrUCdfY[uXUujijY`@\ndk]@@@uJYU_lkihDHj`@@\ndk]D@DxJRYY{Tjtvfh@H@@\ndk]DAHDMF]yIYeg^ESh@@H@@@\ndk]H@ALLbbRfTJiaf@Bfh`@\ndk]H@DHDfYyWImMjhHA@@\ndk^@@@RfYU\\]Tz@@@@@@\ndk^@@@Ri_YVftzjX@H@@\ndk^@PDCDNHRVf]}aWZjB@h@@\ndk^D@A@|bbRfTJiaf@Bfh`@\ndk^D@IADfvYWz]MjdHB@@\ndk^FAHALzSb\\{HhmEDdQe]Zjjjh@@\ndk^HPNHJrXaIf^UvGS``B@@@@\ndk^L@LANrJIQQEJatvjf@@@@\ndklB@@PcR[me]]Zj@B@@\ndklB@@QSrJYJIJF]ZX@b@cH\ndklB@@QmR[fUxUZBBF@@\ndklD@@QInUvnEh@Jh@@\ndklD@@eJ[Vvfz`@jh@@\ndklDpBhJqJs@cHiiCDeeviX@H@@\ndklH@@RYfVya`Hbj@@\ndklH@@rJJJQJy]ZBhB@@\ndkl`@@SFRYvUWSZjjj`@\ndkl`@@kaRe[vTf@HZj@ah\ndkm@`ATHaIe[ujZ@BfhBA`\ndkm@`MLHcHhhdcDfz@`Z|@@\ndkmB@hHD[heNJ^{HihhhTmMjf@@@@\ndkmD@DpJRY{YWSZf`@@@\ndkmDBLdDf\\bbTTJTWVj`@`@@\ndkmDpDgSBHjHVHRYYmYn`HJf@@\ndkmH`NVPbDfUunih@JZ`@@\ndknD@DATf^UuFVh@J`@@\ndknD@E@\\bbRafRih@Jj`@@\ndknD@LALbbRbaRtvjh@@@@\ndknD`J``BDjy{Utvfjjh@@\ndknL@BACR[me]]Zj@B@@\ndknL@BAMR[meYSZj@H@@\ndknL@M@iRYg^un``Jj@@\ndknLBLANSlbfbTaRtvjzjh@@\ndknh@HF]LDee]V[iiYihDbz@\ndko@@@aLdRbbRQtvjB`@HB@\ndkoH@Dp`RYuYWSZj`@@@\ndk}@@@iJUmUR[atpBJ@@@@\ndmLB@@RURYUVJaejVjh@@\ndmLD@@QIe[VfeVi@B@@\ndmLH@@RYiYKnUjjjh@@\ndmLH@@RffeZVVjjjh@@\ndmLH@@rJJIQEneX@@@@@\ndmLL@@SdfVUrjUZ`PH@@\ndmM@@@[IEDhhZFU@B@@@@\ndmM@@@aJUe^neYhDB@@\ndmMD@DdNRYYWJiUjA@`@@\ndmMD@DhNRYYWIiUjA@`@@\ndmMh@DkaePRYYe[iUifjd@@\ndmN@@@RYVuiiVj`@`@@\ndmN@pN@H`HPHrRPqIZneUhDB@@\ndmND@BA\\bbbReInFjZjd@@\ndmND@DBdfV]RZUZf@@@@\ndmND@DCdfVUrjUZ`PH@@\ndmND@DCdfVUrjUZfZj@@\ndmND@DCdfVUrjUZjZj@@\ndmNDPNYPBABLdTRbch^fjfih@@\ndmNH@NAIYe^neZdHB@@\ndmN`@@raeJY{VfFP`JX`@\ndmN``DkaT@aIefUneVjVjP@\ndmNh@HqaTDeee^FUhBBa@@\ndmOD@DiPyIee\\feVhDB@@\ndmOD@DjPyIee\\feVhDB@@\ndmOH@DK`RYYWkiUiB@`@@\ndmT@p@SHbDbLddJRRjjj`@\ndmTB@@ieReUWjjj`@\ndmTB`HSBCpRjuUZjj`@\ndmTBpHin@JspDJrQIRGJjZj@@\ndmTFPHSFFPBNBLddNRdVje`@\ndmTH@@RUUUjjj`@\ndmTJ@@IaUIf[~jjj@@\ndmTL@@xTiUUZjjh@@\ndmTLPDp`|HdLddJTTfjj`@\ndmTl@HQeBiRVY~Zfi`@\ndmU@HLT@a@c`bPaIggYjjf@@\ndmU@pLD@a@c`cHheEKFjfh@@\ndmUD@DXARYW[ZffP@\ndmUH@JXDiUYjjjh@@\ndmULAFDDIiGdf{evfYh@@\ndmUL`DzIT@cIICeMEjjX@@\ndmVB`NiiT@cIDeEKJijX@@\ndmVH@DAIYUUjjj@@\ndmVL`JFU@HReYyjjf`@\ndmWH`DphCpRjyfZjj`@\ndmtB@@QeR[f]FV``H@@\ndmtB@@QeR[f_FV``H@@\ndmtD@@UIfU|YZB@`@@\ndmtD@@WHhhhiVF@bJ@@\ndmtD@@iJ[g_ahHBP@@\ndmtD@@kIEEHeYV`j@@@\ndmtH@@RYeY[hBBh@@\ndmtH@@Rfuu[j@BXBA`\ndmtL@@SdfVyyUjB@@@\ndmtL@@YTf[gqehHB@@\ndmtL@@yTee[VE`BJ@@\ndmt`@@kaRe[vI`BFhBF`\ndmu@@@aJueXYj`@`@@\ndmu@@@aJue\\Yj`@`@@\ndmu@@@aJufVUj`H@@@\ndmu@`ITICHhhdbfz@`j@@\ndmu@`ITLSHhhdbfz@`j@@\ndmuD`LVD@HrRRqIXYV`@`@@\ndmuDaBWaBHJQ{HhheEVfBAb@@\ndmuH@HPDefUyUjB@@@\ndmuL@DTAeIf]XfZjih@@\ndmuL@DpFUIeY~nZijd@@\ndmv@@@Rf~UeZj@@@@\ndmvD@DATf^Uqej@B@@\ndmvD@E@dfYwVzB@j@@\ndmvD@EADfyW^Ejjj`@\ndmvD@NADfVyyUjB@@@\ndmvDPDePbAbDfUmjZ@Bf@@\ndmvD`EJPqDfY}VzB@j@@\ndmvD`La@BLddlTReUhB@@@\ndmvD`NePBDig{ljfZf`@\ndmvH@FCHhhhdYUhJ@@@\ndmvL@FAIR[f^EV```@@\ndmvLaFFUCDZYyIe[fn`BF`@@\ndmw@@@aDiUmYUj`@@`H\ndmw@@@aLdRbaReVj@@B@`\ndmwDAHEPRISlbfbRazV`BH@@\ndmwDAHYPRISdfygQehHB@@\ndo\\@T@dDdLdJdFdAdEdCdKdGdLbdLaffdjjjjh@@\ndo\\J@@imMJUUUUjjjjh@@\ndo\\L@@idiUUUVjjjj`@\ndo\\NPHQevw@DHDrRYJKJHqjfii`@\ndo]B@L\\Dv|bbtTTUTZjjjX@@\ndo^J`CaLKP|LddqbbTlZijfhHi@\ndo^bAHs[\\DxXeNrJYQQEIQjiji`@\ndo|D@@QIn[WVeVj@Bj@@\ndo|D@@uJYU]]zZBBJj@@\ndo|H@@RV^UviUj`@j`@@\ndo|H@@rJIKJQFRf`@jjh@@\ndo|H@@rJJIHiIIn`HJjh@@\ndo|J@@S[_HheDdeDYMjBBb`@@\ndo|L@@iTinU]_ihHHjXBC`\ndo|L`BmpbDfYU]Ya``biX@@\ndo|hHLJkL@bYAYCYCIEEMMHi|jfZjfh@@\ndo|h`LInT@aJYV}zFZZjVj`@\ndo}B`K^DxpBLddLRRVbgUhHHZ@@\ndo}DPAuSBHJHRYg]nVzB@ij`@@\ndo}DPAuSCDJHRYgunVzB@ij`@@\ndo}H@DpLbbbLRVTWVj`@j@@\ndo}`@@pjX|dTTRfb\\k`Hbjj@@\ndo~B@BAC_HiiMhdh]mjj@H`@@\ndo~B@BAK]InVuf[fjjif`@\ndo~D@DAdfuke^wZjhH@@@\ndo~J@BAFM|bfffbRavvjh@b@@\ndo~L@CB]RfyV~^F`HJj`@@\ndo~L@GBnrQSQQIGHUhHbJh@@\ndo~L@LANRYye[iujBBJ`@@\ndo~L@M@iRYg^ufzB@jj`@@\ndo\x7FBAHXpSAb\\yIgUnUmvji`@@@\ndo\x7FD@Ds`gHhhcDliIUjiijh@@\ndo\x7FD@HPpEIYunUmvji`@@@\neFA@lbrJ@\neFA@lhbL@\neFAADdRJ@\neFABHhbL@\neFABljrL@\neFACDlRL@\neFB@Jc@@\neFBBHc@@\neFBBPc@@\neFBCDc@@\neFDBb`@\neFHBJ@\neFHBL@\neFJHbHh@\neFPBc@@\neFhXNic@@\neMA@HPaIT@\neMA@JXaIh@\neMABPYAIh@\neMBBHRZ@\neMCALhabHz@\neMDARU@\neMDARZ@\neMFI@bMP@\neMFIBrMP@\neMHAIX@\neMHAIh@\neMHBN`@\neMIHdFPRZ@\neMPAR^@\neMPBch@\neM`AIx@\neMdXZWde`@\neMhDRV@\neOBBHcfh@\neOHBNZ`@\nfH@@\nfH`P@@\nfH`T@@\nfH`X@@\nfHap@@\nfHbd@@\nfHbh@@\nfHcP@@\nfHcd@@\nfHdH@@\nfHdP@@\nfHe@@@\nfHep@@\nfHf@@@\nfI@@\nf`aA@@@ILsKWRpTADUUP@@\nf`aA@@@YEEDdTddf\\`HJjj@@@\nf`aA`D@HdclbfdQTtRSoMUTp@@@@\nf`aI`@BJ]xBAIMrlvkYsUTuRt@@\nf`aPP@B\\@bwlbfdRLRTIgMUT@Q@@@\nf`aPP`M^djs`QAHa`PXHrJJJYRZr\\EADBtl@@@\nf`aPRDL^`cQ`AAnrRPjIIQUJlmPPLT@@@\nf`aP`@DJA{HdiEDXhkKRuSUTl@@\nf`aP`@LV@cHhmEDidYISTAAUP@@\nf`aQB@NJdBHRYWVyncH@JZjp@@\nf`a`C@C@dDRFICHiCDeBhlJUT@EUP@@\nf`a`P@B@TZvQQQIIRsHTfiZfZd@@\nf`a``@M@PdwMkjteMT@ES@@@\nf`aa`@D@IiIeyWUYJZh@Jj@@@\nf`aa`@M@D[IEDdhbeiqUAAQUP@@\nf`apRBNJMACo@BES{lddJVbbbfcKUURsP@@\nf`aq@@DV\\CHheEDcddkSTE@UP@@\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\nf`iP@@@TRfY]{WEAJ]zPhH@B@@@\nf`iQA@B\\|@HpDISLzsnRdcN}TaAQUD@@\nf`ia`@D@M{HhhhddYdJVkN|uPTDUD@@\nf`q@@@DjYU[oxjQh@@BJ`@@\nf`q@@`@QAHbtQzHrJJKKQIPlxYtDA@DP@@@\nf`q@A`@XaLQfHKDMb^qDfYn}gyJshHb@``@@\nf`q@`@@HR[YWYTTg^Z`@`@@@@\nf`qA`@@HddrsLk~gV|u@D@@@@@\nf`qHA@DBMxDQhHRYWVY~cMV`@jikHDMH\nf`qHP@DXxHDg^rJIQSPiITyhsSUUUS@@@\nf`qI`@DXUh@oYEEEELTlfRtYjjZfi`@@\nf`qI`BHDDhBOPeGIMsOljpSoMSUUUL@@\nf`qPA@B^ADVbLbbbrtRTKNF]A@PAD@@@\nf`qPHAHV@cGIF]zDxzt~{HhmEDdThJRmMUUUST@@\nf`qPP@LT@cfdfV^V]IRwfjhJBD@@\nf`qP`@DV@YIfYmYZLuyj`hFb@@@\nf`qP`@DXAqIfWnUrL]yjihHB@@@\nf`qPaABLEh@Q@HIKIEvnrQJJJIQXj][uPAA@@@@@\nf`qQA@CVHBHEDYEEDeMCLfR]zBBbfh`@@\nf`qQB@G^`@HRkfUWvQmVZ@@@J@@@\nf`qQ`@BF@abS\\oLkjL{sUUHPD@@@\nf`qQ`@BZ@crS]lrnruYsUTa@T@@@\nf`qQa@LL`bp@b`QddebRRRrxKQejZ@J`@@\nf`qQb@FBt{p@aJYUW]lTEJfZjZZ`@@\nf`qQb@LD``P@cIICDhhlUrSoKUST@@@@\nf`q`P@L@PZvQQISQIPiVg^ZhBBjH@@\nf`q`a@APX@H}HIUwOJ~JUgMRtDAP@@\nf`q`a@IN|BHDDILklnmQbmP@TuSB@@\nf`q`b@ILD@HrQQJJMQITX{uMTt@D@@@\nf`qa@@E@rQQIZYQF\\EjuA@TuQ@@@\nf`qaB@AFADYEEDeHUDV\\]z@`jfh`@@\nf`qaB@BXAHYDihiheD]F]zfh@@@@@@\nf`qa`@D@x{HhheKDeeQakMUL@EP@@\nf`qa`@L@QqIgfUnyZTYjBBJh`@@\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\nf`qp@@@Hpds\\rj~gV|uP@@@@@@\nf`qpP@DXxBSoYEDhihTdjBtYijjji`@@\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\nf`qqaBLDhJR`AA`bdr{IEELiiXeacoTtsMMR@@\nf`~@P@@HtYIeU]mVjjij`@@\nf`~@`@@^rIRHiIJQUUUUU@@@\nf`~@p@@HYHsdf]UUVZjjjf@@\nf`~@p@@TYhwdiUUU]jjjjj@@\nf`~@q@HHpjs`AA`cIIChlhmHmUUTl@@\nf`~A@@@ILjjjjuUUUT@@\nf`~PA@F\\@DPBDiUVYUjjjjj@@\nf`~`J@NPQafcN|CprRRjYQQFMTuSS@@@\nf`~a@@D@rJIIJHiIMSUMU@PRe@\nf`~hPBHXhsPDV]BT\\dvvjw[TuUSP@@\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\nfbca`@D@BeIfYeUuu`iJMytTyZh@P@bjB@@\nfbca`DK@iftiSJzljlxipVk^bEMA@@@DU@P@@\nfbe@@@LdbbTbsbrTWESMUSSML@dESY|`\nfbe@P@@LU[HhhhehcBdeHsPTEEUT@@@\nfbe`p@L@PkPTiLjlr{{V|uU@pQS@@@\nfbei`@LTDjpDIRYUyWYVtYjj@Bjj@@@\nfbepb@BZ}IPHaIf]V_VUgHHBfjjh@@\nfbepb@BZ}IPLQIf]V_VUgHHBfjjh@@\nfbexc@LDXXJ\\pP@HdD^BLddNfRRbRrcoKTuUKTt@@\nfbm@A@@IdHaJkfYUU|tWICfj@@@@@@@@\nfbm@P@@BSgHhhhheEl\\hHrgV|t@PDASP@@@\nfbmAB@H@SDjnYeUWsQ\\dNZh@@@@@@@@\nfbmAB@H@SDjnYeUWsQ\\dNZjjjjjjh@@\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\nfbmAP@@HeENQQJJJIKZIUgMNmyj@H@Bj`@@\nfbmA`@@ZMdRbbTVTJRRxIwdyXBBjZ@@@@@\nfbmHR@LLDhwdy@DYHieDdUDhlnBdipZ@`Zjjhh@@\nfbmIR@AZ|fBKNb@HrRPrJI[QQETEHr\\kUUUMRmP@@\nfbmIR@LLDiAoIr@HrJSJIHjIQY\\EIS`uUJuUUUP@@\nfbmP@@@FRieYgUWxYrPyjj`B@HH@@@\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@@\nfbmPB@AIADILklsJktYyL\\p@UTEAA@@@\nfbmP`@DJ@{HhhhhhdhbRqUhaRuP@pPAP@@@\nfbmP`@DJAgHhhhhhdhcjqUhaRuP@pDAP@@@\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\nfbmQ`@DX@sJSJmsJkyJNbEKUM@@@E@@@\nfbm`B@I@bDfYYu^yV\\uYNXB@P`B@@DAP\nfbma@@I@rQSQIYQQIH|ExJ\\tAAUAPA@@@\nfbmaB@KDADILsjlmklxZr\\pPEUPPA@@@\nfbmhR@DXXJQoIrBHrJIJKJFIQYTyIS`pAEUUUPp@@\nfbmiP@DTxIPC^SgHheEDjheEdsdeNBuRsUUUU@@@\nfbmiP@LF]EHIJugIEEEDdhjllRegAcUUUPHET@@@\nfbmpC@KQRBHDDZBLbbbRaRtTRSNJtgLAAUMUjTBFh\nfbmp`@DXHBRSL|lvj}F^SGKUUH@@A@@@\nfbmp`@LFbAFQQISISJQIFRcVbej`@jjjJ@@\nfbmq@@ARLAJ[eg_fWbmFSf``Xj@`D@@\nfbmq@@DBBAIeeU{e^VgASejBBIB@H@@\nfbmq@@IJLAJ[V{WeY`mFbf`BFj@BD@@\nfbmq@@IJLAJ[V{WfU`mFSf`BFj@`D@@\nfbu@P`HHdhCaapXxZ\\LdTbdQLblRRmIsUUUUP@P@@\nfbuA@@@ILsOsJk~SGKUUP@@@@@@\nfbuAb@KIrBHrJJIJKIQGJLx[tAAUSULP@@\nfbuHa@LRlFB@A@`cIIBhhddmeIiqkKTDaQUP`@@\nfbuI`@DXtX@dyEEEEDbddUFRLyjjZjZfX@@\nfbuPP@DD@xL\\bbTRTRVReUNRLu@aQTuP@@\nfbuPb@GQxDDPdrnlkk]QakP@T@EMP@@@\nfbuPc@IFSdD`bPqHYEHXdimDheAJCFj@H`HF@@@\nfbuPr@NBYhwdyAbIJsNk[NbdxLtmTuUUPHP`\nfbuQP@DA@JR\\yEEEDhdUmMBLLyj`VBJf`@@\nfbuQP@DTAqTTyEDhhkMEDhfBCejii``X`@@\nfbuQP@DV@JR\\yEEEDhdXceBLMyj`VBbf`@@\nfbuQ`@DX@ZvQQZQQQQIH{rXyZj`A`@@@@\nfbuQa@EVEHpHc`QdTRVTaTrbRhqNX@IZZjh`@@\nfbu`Q@LJMxH@cHQdbbRbTTRfuqQrZj`f`ZJ@@@\nfbu`R@DFmzH@aIfYU^]^QmNZhJBbjh@@\nfbu`c@IQRBPQHXdLbdLRTvbbTPeAsU@DPPL@@@\nfbuaP@D@M[tTfYeUyuyFtyj`hJJj`@@\nfbuaPBH@PrQhRclbfbbtQfbRpeQRtDDS@A@@@\nfby@A@@IdHaJkUUUUVjjjjjj@@\nfby@`@@HR[UUUUUZjjffj`HTvP\nfby@`@@YRUUUUUUjknknj`@@\nfbyPH@BZ@bR`qSgHieDeDXdhhuUSUTs@@@\nfbyPq@BY`cGhi@DABLddNRRRRRTbuUUUTl@@\nfbyQ@@DX@dsLjjjjuUUUUU@@@\nfb}@@@DjYee\x7F]^RD[S`q@@@@@B`@@@\nfb}@@@LdbbbbbTqvwEBlXJ\\`@A@D@@@@@\nfb}@`@@YRYVumUWhrRkNbf@@@@@B@@@@\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\nfb}@`D@HQvQSRJIJUJYHRiZ]yNVjjjjjjj@@\nfb}AB@L`BLbbdRQfRfRqNRUYtTuUUUP@UP@@\nfb}A`@@JsdbbTTRrLrVqPVkNbfjjjj@Bj@@@\nfb}A`@@\\sdTTbRLrTrVIrRkNbejjjj@Bj@@@\nfb}P@@@NrRJJIQJKEKB\\hvoQsTEQ@PDT@@@\nfb}P@@@PRfYVVwWppQoIcfZj``@@X@@@\nfb}P@@@XrQQQJJYIKXxXHshaRuS@D@AT@@@\nfb}PB@NZADILkljlktXkS`is@ATu@`E@@@\nfb}Q@@AJ@drmvjroSbmNBgL@PttD@T@@@\nfb}Q@@EI@drmrsvoSdeV\\gL@PDPD@P@@@\nfb}Q@@IZ@eMk]jmjpVcN|gM@DMM@@T@@@\nfb}QB@I^DBHrJIKJSQQIHtYjw`is@AUTC@E@@@\nfb}``@H`YdTTTTTLQbJxkUg^bfBH@bBjH`@@\nfb}a@@H`rQSISJQIIHlxjwhaSP@UUUUEP@@\nfb}pB@ARTBHRYWYUVuhqVg^Sf@BZZP@J@@@\nfb}pB@ARTBPRYWYUVuhqVg^Sf@BZZP@J@@@\nfb}q@@DDtAIf[eUo\\cMNlENVjdJ@@A`@@\nfb}q@@IJtAJ[V{UUU`mF]yNZ@HZZ`@`@@\nfde@``ARAbDq@xd\\QIf]UUUYqVg^``Jh@h@@@\nfdeH@@@XH[IEEEeddhUSdeV\\ADUUUQP@@\nfdeIB@LLxxH@aJWYUWVpPTcViYj@JZ@@@\nfdeP@@@PReenUe|TLGtYj`@B@P@@\nfdeP@@@RRi^VV}z\\txLZjB`@@`@@\nfdeQ@@DXAdTTtTTRbqUXp_QZh@``A@@@\nfdeQ`@DT@hvQQJIPqSYIgMVCEjjif@H@@@\nfdeQ`@DTAsVQQJJJVKII`cVCEjijZ@H@@@\nfde`a@AZlBHYDYEDeDXhiij\\Lywh@bifjJ@@\nfde`b@H\\d@HRfYfWwQJMxLZjfZ``H@@\nfdeaB@OBADILk\\}vmNJLFL@PuP@D@@@\nfdehB@L\\tYp@cIEDeEEDdfKUgAcPQ@EP@`@@\nfdei`@LZlFHIJrQQQQYQEYDhZw`uUUPHEP@@\nfdi@Q@ARUh@Q`HRf^yoYlTjVfZjj@@\nfdi@`@@FrJJIJQIFPly@PUUUP@@\nfdiA`@@HedTtbJRbbV|Ejjj@``@@\nfdiHbBDBuxLPQGicvQQIYJJIHrcH@Jjjf@@@\nfdi``@D@TdrrvokFluUA@UP@@\nfdiqb@JLtRR`RFQQQYIPiIIgJVjVjj`@@\nfdiqb@LR}A@`AFRREQQKKI[UejA`bj@@@\nfdq@P@@HMYIeUU{UZjjijh@@\nfdq@P@@HM[HhddhbidhuUUSUP@@\nfdqPP@LQ@`p\\bbRTTaVRcUUUUS@@@\nfduP@@@PRfYVuU\\LxIt_Afjh@@A@@@\nfduP@@@PRfYemurLyJp_QfjB@@A`@@\nfduP@@@XrQQQJJEIKXYpU`~buS@@@E@@@\nfduQ@@DVAdTTRbLRrRYrVcVCEjejjjjh@@\nfdup@@@PheLr|jjxipSh~CMUP@@B@@@\nfdy@A`@QAHadPzHCDQbLbbbfJbRbwAV}ADD@QP@@@\nfdy@`@@HRYUm]eUZCEjh@H@@@@\nfdy@`@@HrJZJIPiSIBdFKUUUP@H@@\nfdy@`@@QRYWYnuzL|F@Bj`@`@@\nfdy@a@CVADQbLbbRrbbbQuF^C@ATC@P@@@\nfdy@b@@qAHILrrkssIF}A@AAPp@@@\nfdyA@@@IMLrroioNcU@DPA@@@@\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\nfdyA`@@DMdTTTtRRQtXKSfiB`XZ`@@\nfdyA`@@HedTtbabRrRMXLVjjfh@@@@\nfdyAa@OAbBPUHYEEDhddYeFRMZB@B@i`@@\nfdyAb@FAb@HrQQJVIKJJDihuRl@ESP@@\nfdyAb@NV\\@HrQQQPsQSHdhFMRsTC@P@@\nfdyH`@DXxHDlbbTTRbTrmNAbtuSUUU@@@\nfdyHb@LBeFB@AFRREQQIIZ[Sk^Vh@@@h@@@\nfdyP`@DR@IIf_mfYHstVjihBH`@@\nfdyP`@DZ@GHhleEEDbmKSoMURE@U@@@\nfdyP`@MNAKIEDheEDZhHvkTDQTMTP@@\nfdyPb@INHDD`dsJnnkLDkTDDUUSB@@\nfdyPb@NJCDDQdTTRatRbTXIwhBH`HF@@@\nfdyQ@@DQAdTRbbRbbuUzpVh@@bB@@@\nfdyQ`@BN@`VQSQIQPqIXs`qZjfdHB@@@\nfdyQ`@DLAHrSKjrmjZpXmUUU@A@@@\nfdyQ`@DZAxJSNlrnkKUgMURDAU@@@\nfdy``@F@PdwLkwKBUxKPPPAA@@@\nfdy```LHx@H}HAdHrFQQIYJIJFPeCVZjh@Jj@@@\nfdy`b@LHx@HrJIKIQIPrDhZsUU@AUP@@\nfdy`b@N^BBHrJJIPzJIQLDzLADPPL@@@\nfdyppBDDDCbkAbR^]dTtRaTRbrXHsfiZjjjh@@\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\nfgAAB@A@bDfUmmZLEHuh@J@@`@@\nfgAQ@@BT@dsJ}kQ`iFmTuP@T@@@\nfgApB@LLx@HRevUUpPTcViYj@H@@@\nfha@B@@IbURjjjmUUUUT@@\nfha@R@HHehBYddbRRbbSUUULuT@@\nfha@R@HHpPG`eUjjjjuUUUU@@@\nfha@b@HR@fYIHddhdbeUUSUU@@@\nfhaPq@BA`cAg^@DVBLddNbbbjdVjjje`@@\nfha`@@@IJjjjjuUUUUP@@\nfheA@@@YEEDhmEhbpTmFmxKPI@TAB@@@\nfhe`@@@YHhhhdeEbRdcZ|xM@@@@A@@@@\nfhi@B@@QFQQQJGQSILyxLAAU@@@@@\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\nfhi@`@@ArJIKJQPiZcG^`@j`@`@@\nfhi@`@@HR[fyYwU[pVjB@@@@@@\nfhi@`@@^RYvUm]djsfj@@@h@@@\nfhiA`@@H|dwMkZ{IUgMT@@AP@@@\nfhiAc@HHDApHxT\\DjUgf{zBuZj`bHj`@@\nfhiIP@DDhpDc^BdwJ|lzsfkMMMUUU@@@\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\nfhiPb@OA``@QddabbRRvRkF\\m@@@E@@@\nfhiPp@DX@IQoARYeYv}YsUfjffjj`@@\nfhiQ@@AJAdTTTTTJtPeVBtuTttt@@\nfhiQ@@INAdTTTbRarrk^BtEP@@@@@\nfhiQB@BJd@HrJJIKPjII`oA``ah@@@@\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@@@\nfhiQR@IV`Sa``dLbRbTQbbvXIwjjjjYf`@@\nfhiQR@JLIIW``kDfYu[UV\\MZejfjjh@@\nfhiQR@LVXhw``BLdTVbRbbqqRVjYjjZj`@@\nfhiQ`@EZ@JVQQQQQIEYLTYsT`tDU@@@\nfhiQ`@HHAIvQJJQJIHqBdYsUUUUUP@@\nfhi`P@D@ExJSLrkoqFZluPLDSP@@\nfhi`Q@@pP{p@`pQddabTVrTgIJtmADEKP@@\nfhi``@B@PdwWLjn[s`mU@@@@@@@\nfhi``@N@PdrkLjn[s`mUTEAD@@@\nfhia`@D@HkHheDdhiTiF|EjBA`@@@@\nfhia`@F@ykIEDdUEDejLmzjj``b`@@\nfhiab@LRMx@PeLwN}obfkUU@aET@@@\nfhihB@NJtXHHcHhdlhhiDzLMz@BijjD@@\nfhihbBDBtYw``bGRGlbbRrTTRLhpuh@JijX`PT`\nfhipR@BTYIW``dDfY][UV\\MZejfjjh@@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXiVH@@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\nfhip`@DDh@VQQJIIFIJBd{sTuL@E@@@\nfhipp@DXH@Rc^BdsJsmzsfkMUMMUU@@@\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\nfhiq`@DDTA`TfYg]m^B|EjiZjjh@@\nfhq@R@HHehBYddbRRbbSRcUUTsUR@@\nfhqAb@AV\\BHRYV}Umhr@Bjij@@@\nfhqQ@@DT@drlsLjXKUAQEP@@@\nfhqQa@EVEHpHc`QdTRVTaTrUFP@RtuP@@\nfhqQa@EVEHpHc`QdTRVTaTreFP@RtuP@@\nfhqXB@J\\dZpPAFRIJIJJqIBeUSMMUpHJ`\nfhq`P@L@PkRSJkLn}oMUPLDH@@\nfhq`R@LPQhp@cIIBhdeDTeVVhHFJP@@\nfhq`c@BN|BlEVJkLbbbfbUbbYJBBbjZ@@@\nfhqa`@J@QqIenvyepVjj`H`@@\nfhqa`@M@DYIfUoWigHBBjjh@@\nfhyA@`A@qBXglPNHdsNjjjsdeV]A@U@E@@@@\nfhyA`@@H}dTRbTTTUQFJ]xKTuUMST@@\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\nfhyHB@L\\uX@QdbbRbbRRhmFmxMAD@T@H@@\nfhy``@D@TdsLrj\x7FQaoNBuP@`@P@@@\nfhyh@@@XdhvRJJJYQIWTyIQkMSULuUP@@\nfhyh@@@XhrRTsvzrmNBexHPPu@@P@@\nfhyq@@DTtAIemU[TTmF|Ej@B`@H@@\nfle@`@@HrJZQEJIJYJshiZjj@BjH@@\nfle@`@@VRfYU_uTVeFh@@@jk@@@\nfleA@@@ILr{LjnzHTmUT@@@@@@\nfleA@@@YEEMDleHiJJQoM@PUUUD@@\nfleAC@N@bERBYCHhheDlUDefRCFBAbX@H@PU@\nfleAP@@HMEJSKLjt\x7FJ|xKTCAUBq@@@\nfleA`@@HXdvmrnrncQRuS@A@@@@@\nfleA`@@QSdTTTRRTqfdcZ\\t@@AEL@@@\nfleAp@@XDkSdyHhheDeLUmRPXuUUTDAP@@\nfleH@@@XIsIEEDbeMMDjBbfVjfhBA@HPbP\nfleHP@DTuDC@irJIJHqZIJJgOQZijjjYh@@\nfleHb@LBdfB@AFRREQQIIZIZ][ru@@@EP@@@\nfleI`BHDihBEPeGYEMDhULeDdsdTmMUMP@H@@\nfleIb@LBLFBH`BLddJbbRRvVtzwej@@@J`@@\nfleIb@LB\\fBK@BLddJbbRTVVuypUj@@HB`@@\nfleIb@LB}FB@`BLddJbbRRrVtzwej@@@J`@@\nfleP@@@PReevYU]tPijjh@@@@@@\nflePB@K^AbILklrj}Qc`p@TaAE@B@h\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\nfleQ@@DLAdTTTTtRbTI`~RuUATQQ@@@\nfleQ@@DR@dsK[JsioARuUTEDQ@@@\nfleQA@CQDBHUDILrl{ljsdTpDEUUJd@@\nfle``@G@edbbTRbbNv`mV}PPE@QT@@@\nfle`a@BQRBHEDYEEDeMCDdXrSoPPT@PS@@@\nflea@@E@RfVYUV\\tWIjh@`B`@@@\nfleaR@LPQYw`AFRRFJJYIQW\\dXJuPLDqT@@@\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\nflepa@LRmA@@`PQddaTTRRVLfgFlmPREETH@@\nflepb@BZSIPHaIf]V_eV\\bfB@ijjh`@@\nfleqa@EV\\JQ`QG@cHhdliBieDjLbf@BVfjh`@@\nfli@q@HHpxLPAG`cIICdddddiEjjjje`@@\nfli`@@@IJjjjjkUUTuUTBDd\nflmA@@@ILkZvmsQdeV\\EL@EUUUQT@@\nflmP@@@PRfYV{U_CAZ]DJYji@@@F@@@\nflmP@@@PRfYV{U_CAZ]DJYjj@@@F@@@\nflmP@@@PRfYen]|cIF]DJYj```@E@@@\nflmP@@@PrQQQQJZKIDcIV]DJYj``H@F@@@\nflmP@@@TRfYmUo\\eEVMzJYf`h@@J@@@\nflmP@@@XRfYYmU\x7FCAF]DJVjX@`@J@@@\nflma@@@`rJIJYRIIIFcIF\\GtX@Jjjjbh@@\nflma@@I@rJJIQZEJYI`iJlzJV`b@@@H@@@\nflmp@@@PheLr|vj~JBtzHTsUR@@@L@@@\nflmpB@ARTBHRYWYUUVcEZlzJX@Iij@B@@@\nflu@b@HiADILrljm|sfoVC@PUUULT@@\nfluA@@@IRlkjtrRdeFmUA@UUUD@@\nfluAP@@HeEJSKLrorlyiuoMPA@@UP@@@\nfluAP@@\\dZJSLlsr{lxjtTm@qEETq@@@\nfluHR@DTyKShi@DILlk|lzs`iV}@PUUUTL@@\nfluHR@IV|fANJ@DIJrsmrnpSoQSUUUTBAP@@\nfluH`@DXTDAdfYfYu_Yit_AZj`eAbb@@\nfluHb@LLxxLPABTnrjkmxHJQkTlu@EMP@@@\nfluPB@AIADYEEDdUEDhlsc`qS@PL@@@@BGH\nfluPB@AJADYEDeMDeELcSfgQS@DMPT@P@@\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfZjf@@\nfluPP@DVApt\\bbTTtabbJhJs`iZfZiifi@@\nfluPQ@N^YirPA@`cIEDhh\\ihmjByHLZjZiijZ`@@\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\nfluP`@NQ@EIfVVWV~Je[rV`h@`FH@@@\nfluQ@@DJAdTTTTTRTQsEVbEKU@C@PD@@@\nfluQ@@LT@eLw\\jmvJF|zMLp@@DT@@@\nfluQ@@LT@eLw\\jonJF|xMLp@@AT@@@\nfluQ@@LTAdbbffbbTRNJVbEMLp@PPD@@@\nfluQP@BBAIWhyEEEDhdbddpQgQRtpSAEUD@@\nfluQ`@DQ@KrSLrkssDYiwhmTC@qSQ@@@\nfluQ`@DTAjvQQJQJVJ[ILDYtTmUUSL@P@@@\nflu``@O@HdsNkKN{NF}ELDAUPPA@@@\nflu`a@NZlBHHDILro\\wjpQgQSUUULpA@@@\nflu`b@AQRBHRYVvuvZcARMZ@B`@jX`@@\nflu`b@LQR@HRf[eU\x7F[EEVLzf@@@JZ@@@\nflu`p@E@EJwhyEEEEDdTddqQgQRuHMAEUD@@\nflua`@@`PYIn[VuUYJlzJVj@Bj@@@@@\nfluhP@LF]EHIJudbbbbRTUVQJV\\FMUUU@`U@@@\nfluib@DXXJQhiADYEDeEeCDdeSdeN}@DUUUTL@@\nflup@@@JLeLlj||}AZ]EHP@PTUPP@@\nflup@@@PIdbTVbbbRQNBVCzLuP@P@R@@@\nflup@@@PIdbTVbbbRQfBVCzLuP@P@R@@@\nflup@@@PIdbTVbbbTRNBVbELuP@PPB@@@\nflupB@ARtBHRYV{WfVgEZbf@HZhB@P@@\nflupB@ARtBHRYWYWfVcEZbf@BZhB@P@@\nflupB@ARtBPRYWYWfVcEZbf@BZhB@P@@\nflupB@NBtBHRYeg_fUdeZbfBAbhB@P@@\nfly@R@HHpPG`eUjrjkm`mUPTEE@@@\nflyIPAHDTXBMV]BT\\jW]dTtTVRbfaSAMSUSMUH@@\nflyQP@BI@`uhyEMDeEEDkhkSUUUMLt@@\nflyQ`@D^@jrSOJzmkBdu@AUUT@@@\nflyQ`@D^@jrS[JzmkBdu@AUUT@@@\nflyaP@B@QjJTfvUfW^\\Ejj`XHX@@\nflya`@M@EGIEDdhbdeD^JhHJJjj@@@\nflyaa@KRtX@PkprQSQHiRYIS`j@`ijj`@@\nflypqBE^CAFNBdCpixRyTyIIXiEXdhX{sUST@EP@@\nflyqP@DDTA`XiRYf]vug`fjejjfh@@\nflyqP@DDTAchiRYf]wU[`fjejjih@@\nflyyB@J\\dZwhi@DYHdhdhkDhdJUUMUMUjBFd\nfoA@C@@IdHaDQddabbRRrkF]U@@@@@@@\nfoA@P@@HtYIe[UUhrRfi@Bj`@@\nfoA@`@@HR[e]e^Blyh@H@@@@\nfoA@`@@HR[fV]qZlyhH@@@@@\nfoA@`@@\\RVUoeVBly`BH@@@@\nfoAHB@L\\TX@QdbbRbRRheZMPQDUP`@@\nfoAIB@HXHK`@aJV~vUqRsjYf`@`@@\nfoAPP@DTAsUlbbTTTlTXHsfjfifh@@\nfoAP`@BZ@aInvYWejsfjiB@`@@\nfoAP`@DX@qIeVyWIRsfjZB@`@@\nfoAP`@DXAsHhhddXdbLlyjih@H@@\nfoAPa@LDlx@P`HRYYeUuVLyjjjjj@@\nfoAQPBHF@aVgPeGIMrms\x7FIFlt@PuI@@@\nfoA`P@D@DZrSLrkrQfgMTC@q@@@\nfoA``@D@edTTTbtjQNV\\uUR@D@@@\nfoA``@L@QdTVbbbblmV\\u@A@@@@@\nfoA`a@NRTBH]DYEEDhid\\pQkPD@pD@@@\nfoAh@@@TYIVRJJKIFILxJSTsUUR@@\nfoAh`@JBUYpBILoLkleFmUU@`T@@@\nfoAi@@HDhrPLbbbbjbRxJsjiejjh@@\nfoAq@@DD\\AIeUyWhpufjZ@B`@@\nfoAq@DLTtCDiS\\kN\x7FAV]PD@P@@@@\nfoAqB@JLDPDQdTTTtlRWAV]RuT@B@@@\nfoAqB@JLtPFHdsM|klEYuKTa@P@@\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\nfoAqb@NZ]ab`ABTsoL\x7FbakUUULmP@@\nfoQ`@@@ILkZjmFRUYt@@@@@@@@\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\ngBQ@@eLUT@@\ngC`@Die@@\ngC`HAbIMT@@\ngC`LADJPt`duP@\ngC`LAbJPt`duP@\ngC`LAbKDvHduP@\ngC``@dfZ@@\ngC``Adej@@\ngCa@@dkH@\ngCa@@dmP@\ngCa@@dsP@\ngCa@@duP@\ngCa@@eMH@\ngCaHH@bNt@@\ngCahHlHRNj@@\ngCb@AEdij@@\ngCd@ADij@@\ngCd@ADkZ@@\ngCd@Adej@@\ngCd@Adez@@\ngCdDI`BHDRZh@\ngCe@h`NdiKLIH\ngCh@@doH@\ngCh@@doP@\ngCh@AGj@@\ngChHD@aIU`@\ngChHL@aIZ`@\ngCh`DLdkP@\ngCi@DDeV@@\ngCi@DDeZ@@\ngCi@DDfZ@@\ngCi@LDej@@\ngFp@DiTt@@@\ngFp`@dfTujX@\ngFp`@dfTujh@\ngFp`ATiTvjh@\ngFq`AbeJfuU@@\ngFr@ACTi[FZd@\ngFt@ADiTt@@@\ngFt@ADi[FZd@\ngFtHE`DILikUP@\ngFu@E`drfmU@@\ngFx@@eJfuU@@\ngFx`DBdwFmU@@\ngFy@DDfTujh@\ngF|HLZ@aJYuif@@\ngGP@DiVj`@\ngGPBAHJPLaYAInih@\ngGPBAHJPtaYCHiCUP@\ngGPHAbIL}U@@\ngGPP@cTfyi`@\ngGP`@TfYj`@\ngGP`@dfUjP@\ngGP`@df]jP@\ngGP`ATeVn`@\ngGP`ATefj`@\ngGP`ATiVj`@\ngGP`Adinj`@\ngGPhMPDIK]U@@\ngGQ@@eMUT@@\ngGQDB@jQBUkUP@\ngGQDL@aAFQRFj`@\ngGQHHGCIHcUP@\ngGQLJIARFdLbdMU@@\ngGQXHlZHROjj@@\ngGQ`@ZdruT@@\ngGQ`@bdvmT@@\ngGQ`@bdwMT@@\ngGQdLZ@j^BTuSP@\ngGQhHl@cIIBmP@\ngGT@ADiVj`@\ngGT@ATeVj`@\ngGT@ATeWjp@\ngGTHE`DILluBR@\ngGTHE`DIL{U@@\ngGU@CPdrm^@@\ngGU@E`drmT@@\ngGU@E`dsmT@@\ngGXHD@aIUVd@\ngGX`DBdsMT@@\ngGX`LDdsmT@@\ngGX`hEIWIMsU@@\ngGY@DDfUjP@\ngGY@DDfYj`@\ngGY@HDfVj`@\ngGYHI`xISkTbB@\ngGp`@TizHvjj@@\ngJPB@fRHTQhbOj`@\ngJPBAbJHt`YAIjj@@\ngJPD@eRHczh@\ngJPD@fRHczh@\ngJPH@DIJuP@\ngJPH@EIRuP@\ngJPH@eQ}T@@\ngJPHADILth@\ngJPLADJPt`duU@@\ngJPLAHJPt`duU@@\ngJPXHlPDQzt@@\ngJP`@TeVh@\ngJP`@TeZh@\ngJP`@TfZh@\ngJP`@dfvd@\ngJPhLQVIKTp@\ngJPlLPDRPTaGth@\ngJQ@@djsBJ@\ngJQ@@dkU@@\ngJQ@@dlu@@\ngJQ@@dru@@\ngJQ@@dsU@@\ngJQ@@duU@@\ngJQ`@bdvu@@\ngJT@@TeZh@\ngJT@@Te^h@\ngJTHE`DILmP@\ngJT`E`TfVh@\ngJU@H`dlu@@\ngJX@@dkU@@\ngJX@@dkt`@\ngJX@@dku@@\ngJX@@dms@@\ngJXDBLQQBS]V@@\ngJXDBLQXbS]V@@\ngJX`DBdru@@\ngJY@BDeZh@\ngJY@BDfZh@\ngJY@DDefh@\ngJY@DDfVh@\ngJY@DDfvd@\ngJYHC`DIKTp@\ngKP`@Tixjj@@\ngKP`Adi\\Zj@@\ngKQ@@eKcRp@\ngKQ@@eKcUP@\ngKQ@@eOEUP@\ngKT@ADi\\Yi@@\ngKT@Adi\\Vf@@\ngKX@@eKcUP@\ngKY@HDi\\ZV@@\ngNpJAbJHLaYArBS]UU@@\ngNpP`jusyImfi`@\ngNpXHlPDYIHTmT@@\ngNp`@dfUZf@@\ngNp`@dfuZj@@\ngNp`ATf^Zf@@\ngNp`ATiUjj@@\ngNplJqHJPtadTaeTp@\ngNq@@dskUP@\ngNq@@dssUP@\ngNq@@eLuUP@\ngNq@@eM]UP@\ngNqTHmVDPhbU_MS@@\ngNq`@bdvkUP@\ngNq`AVeJmUP@\ngNqhHl@cIICej`@\ngNt@@Te[zj@@\ngNtDLpDDHRevnl@\ngNu@HPdjkUH@\ngNu@H`dlkUP@\ngNu@H`dl{UP@\ngNxHD@aIUUfaM@\ngNx`LDdskUP@\ngNx`LDdssUP@\ngNx`LFdjmUP@\ngNxhMV@aI[ji`@\ngNy@FDfWj[@@\ngNy@LDeVjj@@\ngNyhGE`DYIITmT@@\ngN|@ADeJkUP``\ngN|`HfJdlsTp@\ngOp@DjWkB@@@\ngOpH@DILkW@@@@\ngOpHADILkW@@@@\ngOp`@tigujj`@\ngOp`AdeekZZP@\ngOq@@drm[UT@@\ngOq@@drm\\@@@@\ngOq@@drm]UT@@\ngOqHL@aIYZzfd@\ngOq`@fdrikTl@@\ngOq`@fdrikUL@@\ngOq`AVeL~mUT@@\ngOqhHl@cIIBjujh@\ngOrHEcPDILl[MT`@\ngOt@AdigkB@@@\ngOtHE`DILjZuU@@\ngOtHE`DILl[MT`@\ngOt`E`tfUMZi`@\ngOx@@drm\\@@@@\ngOx@@drm]UT@@\ngOxHHHaIeZzjh@\ngOx`BDdwM[UT@@\ngOx`DFdrikTl@@\ngOx`FDdwM[UT@@\ngOy@DDfYKZj`@\ngOy@JDiWMjj`@';
carcp.sInitialized_0 = false;
carcp.t1_0 = 'eOHBNZ`pge@\neFDBcA@\neFhHbayP\ngFy@DDfXujhCAF|f@\nfHcpAa@\neMPBchLDnR\neMBBHRZCAKd`\neFJHbHpXI@\ngCa@@dkHFBbyL\neMJDbDf``\neMHAIdLF^P\ngJXHD@aIUj@pHVOI@\ngGY@BDeVj`LJHm^P`\neMPBcTH\ngCd@ADkj@pTWDL\ndeTH`ABHRVUunh@J@B\ndidL@@SdfU{aZjj@H\ndiDD@@QIeuZjh@pkJ[ayA@\ngOy@HDfUk`@@H\ngJ\\@ADe\\u@XKGd`\ndeV@@@Rffeijjj`CClJfxYy@@\ndeVH`NdLQIe]ZZ@Bd@LFALJny@`\ngOx@@drm\\@@A`Qb~IT\ngF|@AbeJfuU@P\ndmN@@@rJJIQEneX@@@@B\ndifH@BAIfuxV`@@C@j[ayF@\ngOx@@drm\\@@A`PZ~IX\ndaF@@@Rfu[j@@@LJSBinHG@\ndeU@@@yJUuRh@Jh@LNaLIagd\\\ngNxLL@aAABDfVZj@`\ngGPB@DHHpQPaIUZdB\ngGY@BDf^j`LBHmqF`\ndazH@LAIUUjj@LJPj[nIF@\neMBCDRZCAKd`\ngGQHJLQIUjdB\ndefD@B@TfUvZjf@H\neFA@HoBJFD\\h\ndayD@DpNRYWZj`C@lInxbT\ngFt@AdiTvjhC@qF|Pp\ngOtHLPDYHhckSM@XXI|a@\ngNqBLIAREdGHIMmUTA@\neMXIDfP`\ngJT@ADiVhPT\ngGY@JDeVj`LJHl^R`\ngCi@DDeZ@pTwH`\ngNx@@eJmUPFCDVKyJ\ngNxDLHaqBRjuU@P\ngGP@DjVj`LKEc^P@\ngNx`LFdjmUPFCDQkyL\nfHbpAa@\ndidHPBBHFHRYgVzB@`@`\ndaD@P@bNbDfUzZ@B@B\ndaD@`@bDfUjZ@B@CB`SJ{dL\ngCe@E`dsPFBV@\ngOy@FDiguie`LMc^IL\ndaDh@DInAIf]nZiX@`\ndigH`LH^@HRf_ljfYh@ppBkbHH\ndaD@`@QDeeVz`@@B\ngCahHlHRNtA@\ngOxhMDOAJmZvjhC@xu|`@\ndaED`LJDCpRjw[fjj@LLinxfD\ndcMDPLzfBHKpRUZvYvjZjh@`\ndeT@`@bLbdTJPsU@@@D\ndcNH@DAIee^eVhHB@CCbine]yB@\ngJX`DBdru@XKGdP\ndif``DqnDHaIeYih@J@B\ngOx@@drm\\@@A`Pm^Hl\ngCa`@ldsPFBV@\ngNqhHl@cIICej`LD[rL\ngO|HLV@aJY}ZYhB\ngF}@LZDigVfXB\ndaE@@@aJyUnh@@@pXLJf{dP\ndmN@@@RYVuiiV@@@@@`\ngFx@@eJfuT`XEXwbD@\ngFt@ADiWFZdCCPwdP\ngGPhMQDIJmU@P\ngNqHLHaIYzj`H\ngNx`JBdr}UPFCDVKyJ\ndaF@`LBHRVU[j@@@H\ngGX`HJeZuTA`Uc^R@\nfHfpA@\ngOy@FDfUkZj`LBl[rL\ngGQ@@dluTA`Xm^HD\ndaz@@@Revjj`CAdpj[nHD@\ndiTD@@yJ]VaNFjjj@H\ndmLL@@iTie]|kahHBh@LJPfE^QH\ngOu@DPdrykURA`l~Q@\ndiT`@@rnRfUjEnBA``B\nfHgHA@\ndid@@DjU^nBBD@LFaLiaxa\\\neFACr`bLD\ndcl`@@`nReeWZY]@``@@B\ndid@`@bDfYUn`HD@LFCBiny@`\ndmv@`EBHrJJIHin`HFpHy`\ngOq@@eL~mLlAal[qI`\ndeUH@DpDf^UFVh@@@pYLinGdR\ndeVH@IAJYW~F``H@LFSBinyD`\ndeV`@@rfyJWUlIifjBJh\ndig@@@aDiyWaZ@@B@h\ndeWH@DJPRY[TYZ`@@B\neMBBHRZCAGe@\ngNy@FDfUZk@pRwIP\ndiFL@LANRYufjf@H\ngGU@E`dkMTAad[rP\ndayH`Dr@|Djyfjh@`\ngNtDLpDHHR[UjhB\ngJXDL@aABS[TA``nKD\nfHe`Aa@\ngJQ@@drt`XI[dH\ndid@@DjU^nBBD@LNaLJfGd\\\ndifH@FAIYU[fZj`CBlJnGdP\ngJ]@HbDfZdB\ndie@@@EJf[XZjj`CChSBiny@`\ndk^@@@RYWYVftx@H@@@H\neFA@H`bLFE\\`\ndeTH@@RYWZf`@j@CC`SBhYyG@\ngOu@JpeJymUTA@\ndcN`@@pjYJYenk`Hbj@B\ndmu@@@QIUYVUZh@@@pdDpfxYWdP\ndmvH@NAIfUTUZBB@@p[BiaWdR\ndkmH@NtDfYU_EZ``b`@`\ndkmH@JTDeVVutvjh@@@`\ndieH@DHLbbbaIjZjPB\nfHaXA@\nfHbHAa@\nfHdXA@\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A@\nf`i@@@LdbbRRlRSI\\D{qAHT@D@@P\ngNq`@VdsMUPFCDQkyL\nflmA@@@YEEHdcLdddSdmV]EKUUSU@E@@D\nffsA`@@YkdTTbRLrTrVRIrRkNbejjjj@Bfh@B\ndaE@@@yIe^f`@`@pILJnHG@\nfeg@`@@SrJIJYYQQJQZqYTYzH\\uUKMUUUUUPDLiVEPPQbgARtYw`qSdmV}gr@p\ndcMH@HdDf[W[ai@Bh@H\nfc\x7F@H@@JbdoU{RYfYU_uyYubc^\\D\\vi@H@BjjjhH@H\nfb}A@@@YEDeMDhTihjLUiwhyZZjjjjjh@LKHqPTeZMYpTyxcdP\nfnk@P@@FbuIefYZWz^`mA|gMVfjjjjjjj@B\ndmLH@@rJJIQEneX@@@@CA`iae^Ig@\nfleA@@@YDddhiiDdYipTtsUUUSTABHe@\ndk|@@LdbbbRQKauS`@`@`@H\nfjc@`@@ERYYefUez\\UyvPiZZjjjjjj@CCrLTXJVcV]zJ\\ey@H\nfjc@`@@JrJIJZJJUJZJcMF|EIVfjjjjjj`@`\nffsA`@@VkdTRTtRabrTRhqQoARUijjijjjj@B\ndie@@@aJyW[f@B@CBlJfGdP\ndeT`@@`YRnUunX@I@B\ndmL@@DjYeVdU@@`@@H\nfgA`@@@YIEDeDUfJxHujjhHB`@LNPQbgIZxQbcV@\nf`ia@@E@Rfume]gEF]z`@jjhh@H\nfoQ`@@@YIEDeDTdpWEF]UUAAE@@P\ndcnH@EAJ[UU[ev`@jb@LFPje]xfB\ndcnH@MAJ[UU[ev`@jb@LFPjE]xfR\nfjc@`@@ErJIJZIPiSQJcEZ]zNVfjjjjjj`@p\\cENBdkQkNBgODQJ\nfb}A@@@ILk[Kk\\tyKSoQsUSUMUUUP@XN`cEFBdhugASgb@Q@\nfb}@@@LdbbTbrNTtWEBt{t\\sMUUUUUT@D\ndg\\L@@{\\dTrTRtKCPAET`A@\ngOtHLPDISKWSU@XDJodH\ndknH@ECHhheLcFz@`jh@H\ngJP@DknhCCSGdP\ndcLh@LKaCIELeBhwT@ET@D\ndmv@@@RfUYyZBB`@LAALInF^IR`\nfgA@@@DjYU_VByHu`@@@@@@LIXISdeZM[dD@\ndidD@@yIfVXXBH@C@`[axfT\ngCa@@dmHFBVxa@\ndaxL`HS@\\DjeZjh@`\ngNphH`xITkUTA@\ndaGH@Dp`RYeifjf@H\ndg\x7FH`LKU@HrQQSIJHyTgSA@qP@P\ndev@@@RfU\x7FJxZA@h@LFAB[iyE@\ngOqHJ@aJUcZZhB\ndaF@@@Rfu[j@@@LFALJfyG@\ndieH@NDDfUvf`@d@H\ngFx`LDdrfmU@XHwdp\ngNuhJxl@cIIJej`H\ndifD@JAdiWTjjjj@H\ngGT`DQTfuiaMXIWdp\nffcAp@@DEiNZyEEEMDihbdiVBMzIViBb@@hh@@pTQVcV]ENZ`\ndo^H@DAIeV}YZfifdLIFU`\ndg\x7FH@LiPRUYYWESnj@@@@@`\nfoAQ`@DD@irSLwN~QakMUPHE@@XLpJVcNx`g@\ndg}D@DHERYfywIcmjjA@`@p[AgSobEp\ndieD@DHNRY[Rijih@pSFybDH\ndg}D`Ad{BHRYVuUiev@BffH@pXDrmob\\H\nfoAPb@ARlxDPdrmkKtXht@EMSD@D\ndclD@@[HhheBeSKkTp@P@P\ndcNH@MAJ[WY[j@Bg@B\nf`qA@@@ISZzljscoT@Dp@@B@kARLDhsQkN}q@i@\nfbmpB@NV|@HRfYe]WnirQmN@@@@bj`@@pt@cAJLxLTy@\ndg}L@LhDWHheDbhdSG[UTtuHQu@\ndmLH@@rJJIQEneX@@@@CC`rfFUyG@\nfbmPb@FRTX@QdbdTjRtrbRps`dyjjjYh@J@@pLAAJ\\e[pXisrF@\ngJ]@EbDeVdCBKba@\ndcl@@DjYU_egX@@@@@pELJae]xc\\\ngJP@Di[xCBGdp\nffsA`@@IkdbfbTTTTRtwxkW`ecfjjBjHjJb@B\ngJYhMDPDYIBm@P\ndmM@@@iJYWWJxYB@j@CBbiiWdH\ndaD@@DjYvxH`@CCLJnXc\\\ndg^@@@rQQQIIRcmAPTT@D\ndiV@`J@HRfU|kahDB@CB`PfGd\\\ndmL``LXU@HRfvUxYV`HFH@pHDj^Ph\ngC`DADJHRZhCCBKdp\ndmtH@@RYWYih@Jh@LAALJnE^QH\ndmtH@@RYWUih@Jh@LNALJiWb\\H\ndeUD@DhFrJIJHusUMT@XDf]OHD\ndg}@@@aJVYU^Svv`@@@@`K@Z[ae]ObEX\ndmwH@DePRUe]xV`@d@H\ndcO@@@b\\dtTRJgBpDEP@P\ndaD@@DjYvxH`@C@linxbD\ngJX`BDdru@XS\\a@\ndie@@@aJyW[f@B@C@lJfxdB\ndid@`@bDfYUn`HH@LFCBiayG@\nfoAPB@NBADILkjrmFV]@AL@@@ar`\ndeUH@BxLbbbRKCA@d@D\ndk}@@@iJUmUR[atpBJ@@@CChPiWSyE@\ndeUD`LjD@HrREQICJt@@@XUc\\L|`@\ndmuD`IVD@HrRFIKKaV@BP@`\ndmtD`ATIAIe]Vf`@jP@pILJnIt`\ngGP`@deUjpLI^JX\ndmvD@LADfvUYUjjj`B\ndcND`MEPdDfUuZf`@jX@H\nfjc@`@@HRUe[Vun^Bt[pTeZ@Bjjjhj@CBqJ\\dkQkN}GI^H`d\nfnk@`@@HRYVum[VydjshiJuj`@jjjjJ`@`\nfa{@P@@HkwHdhdididihdUpVc^BdkP@UUUUTeP@P\nfjcAB@C@bLbbbRdRbLJbXJUoQRVejjfjjjh@LG@pQ`iJuYpXyKrBP\nfb}A@@@ILk[Kk\\tyKSoQruSUUUUUP@P\nfjcP@@@FrQQQQII[FIJgIVt{IP@@@``@@@@`\ndaD@@DjUZxHH@CAL[ePaUp\ndcNH`BpHaI[fuWZZ`@@B\ndcND@DCdefV]]Z`b@@H\ngJQDD@b^BRkTA@\ndg|@P@bEbLbbbTRRKR]pP@P@@D\nfoA@A@@QChaIe]YWhpuh@J@B@@LE@Q`eIJtYwH\\@\nfoA@@@DjYUgWfiF`XJbh`@`\ndeTL`HS@BLddlRPrm@@@FETwCOHp\ngOx@@eLmXD@A`Uc^Q`\ndclD@@EJY}erevfVfiBJX\ndcNH@DAIge]FVh@I@B\nfoA`@@@ILkjrmFV]@AL@@@arptcAJ\\DkQkNy@@\nf`qqa@FF}Sf`RBICHiMEMCEmPUgUUUSKT@D\ndg}@@@aJVYU^Svv`@@@@`K@Rine]obBX\ndg}@@@aJyeg_eNvB@@@@B\ndmND@LAdige\\jUifZi@H\ngKP@H~Jj`LEcqQ@\ndidD@@QIenifjj`B\ndklD@@QIVVU}MjlH@@H\nf`q@`@@HRUfYU_Sk^Zh@@@@@H\ndeVD@BADfVuFVh@@@`\ndmwH@HePRYm]xZ`@d@H\nf`qP@@@^RYWUe^cKN`@f@B@DNT\nffsA`@@VkdTRTtRabrTRhqQoARUiZjijjjj@CArLTxJRcN}GIZ|`d\ngNy`DBtf]Zi@`\ndeV@pJBPRPrPrJPqICMT@@@^DwCH\nfaw@@@LdbbbbbbeeRRwMB]Jq`y[Wh@@@@@@@@@@A@\ndmN@@@rQQJJFfEP@@`@B\ndmN@@@RfV_kad@@B@@`\ndco@@@g\\dTRbtM\\J`@AB@A@\nfdep@@@PheL}sJkxiXOhsUP@@@`@D\nfhiP@@@ARVUue]Yrsn@B`@l@@`\ndcn@@@RfV]zXU@@BD@CCdJnFUyF`\nfbmP@@@IRfV]}e]hpR`q@@BF@B`@PUP\ndeWH@DJ`RYYTfZij`B\nfb}@`@@YRYVum[ehrRkNBejfjjjjj`@`\ndk~H@NAJUmmRkatzVd@J@B\ndklD@@IIf]vVzB@jh@LICBkagSyB`\nfbuA@@@ISZ{Ll{lxgM@AMTD@@HBh\ndaF@@@RYe[hB@@LBpj[bAp\ndco@@@bdigyWJWYj`@P@pYLKawbRh\ndaGD@Bi`QInUnZZX@`\ndkmD@DpJRY{e]]Zf@B@B\ndaDH@@RZW[jii@H\ndazL`FaL@HrRRiKUPA`VEW\\a`\ndaG@@@[diWRh@I@C@hSByG@\ndigH`LJn@HRf_ljfYh@ppBGdH\ndmL@`@bLbbbTQ[iV@@@@@`\ndeVD@DCdfV[hVjfh@piJXYyF@\ndaDH@@RYe[hB@@LJCBinQp\nfoAPR@JLIIS`UbSLzmnsakTmTuUP@X\\Ab`mV]rA`\ndcmH@NDLbbbTVKCJm@dE@A@\ndg~H@FAIfU{TYNz``@@@B\ndklF@@sittieY_hZjjjh@pfBinF]ObHh\ndcLH@@RfUWnf``R`@pyBinW^Id`\ndo|H@@rQQIIZHkihHDjd@H\ndo~L`MaL@HrRPjIIKISVhHHh@H\ndg]LPElYLHc`cHhdliBiSP@Rtp@XLBXUKrK@\ndcNH`LdHaIUe[EZh@b@B\ndk|H@@RfYU_JGUN`@@B@@pxfzUt~PH\ndklH`I@HRYeuin`HJj@B\nfdyQR@FJtZwh`BLdTbbJTRlvF\\eUUULsU@AaHBLDiqQ`|aD\ndmu@pNTIAICICHiCDeafj@B@CAJ[bBh\ndkmHpNTpdDdLdLbdLRRrFZh@JP@`\ndkoL`LhXPpBLdaTRbQeUhBBP@`\nfdy`a@BRlBHcDYEEDehXhlfB|FBBFB@`@B\nfb}A@@@YEDeMDhTihjLUiwhyZZjjjjjd@H\ndco@@@rldTRTJU\\naA@@@A`Prn|qLX\nf`qA@@@IMKMjoiuoUV@@@@@D\nflm`@@@YHhhhhdhb]RRkFCzH@@@@@P@@D\ndg\\L`AWPbDfUv{ZZ@Bij@B\ndg|H`KBHRYWYWimN@B@B@@`\ndaF@@@RYVih@H@LBSJ{b@p\ndeTD@@QIVYQehB@@LBinGbQH\ndeTD`NDHaIfVVfBA`@LJCJX^QH\neMhDRZCAKd`\ndeU@@@cIMDeBwL@E@A@\ndaG@`D[`bDfUZZ@B@CA@sbEp\ndcMDPDy]BHXHRYV}jz@Hi`@`\ndmt@@DjYZVTHbh@CBdxYWfES@\ndev@@@Re[TjFP@@@@LFaFxYyA@\ngOpHADILkW@@@XHWaVK@\ndmv@HBBHFPfPVPRYUzih@Jh@H\nfhy@`@@\\RYee~uYrVoAZA``@H@@pI`uo\\YPTmNB\ndk\\L@@{\\bbbTQr[iUhF@j@CALOaTpr\nfoA@P@@\\ekHhheECEf\\TYhFHbh@B\nfoA@P@@\\d[HhheELiVRUYhFHhh@CCFMNyabk@\nfoA@P@@\\T[HhheDXef\\eihFBJh@B\nfj}@P@@\\tEIfVWnU]YrQdeZA`hB`b@@H\nfj}@P@@\\ueIfVWn]}YrQhiZA`hB@j@@H\nfj}@P@@\\MeIfVWVu}YrVhiZA`bB@j@@H\ndmL@@DjYUVGi@@@`@LFrnFUxbD\ndclH@@RfumVy]h@@@@CCdpfE]yD`\ndmMH@HxLbbbTQ[iV@@@@@`\ndeVH@HCHiEBdLuP@@A@\nfoA@b@HH@DYIHXeEhbkUgKPP@@@@P\ngJU@LPdjt`XQ\\TH\ndeUH@JDDinUzZBA@@`\ndclD@@IJ]YWaIVj`@h@H\ngNpXHlQxIUZuTAaGqF`\ndiDB`HSBCpRjuVji@H\nf`a`R@LPP{p@cIIBhddbhhruAADp@F@jLxJRm^yC@\ndk]@`FD@aJY}e\\kSif`@`@`\nfoA@B@@QBRsLjnjqgSP@@@@@P\ndmtH`IBHRUe]xY`@hBH\\F@j[exdH\nfhiAB@O@bDfYUg_QZlzdH@@J@DDL\nfhi@`@@HRYyWVUEKpVh@J@@@@pebcNBMYwnHTD\nfjm@P@@HceIge]YWVEKpVh@J@Bf@@H\ndmt@@DkYV~Gh@J@B\nfjm@h@@XDkSoQRWIEEDhdicDXZRcfjjjjjjj@CBLDDhs`iJtYw`irWdK@\nfleab@OPQD@QddabbRRvrbkF\\m@@@EL@@XJhs`iJt[r^P\\\nfbuQb@OA`aH@cIICEDdelehjqgKP@@ATp@A@\ndkld`LWSa@BLddlRVRFUh@JP@`\ndg}H`AfpbDfUmYZYS`@ijR@LJALh~Iv`\neFJHSHp^I@\ngOpH@fILkW@@@P\ngJPhI`fIKTpD\ndaE@@@aJyUnX@@@ppj{fQc@\ndmvDPLa@BNdLddlTVeUhH@@LBqagdJ\ndcnH@LCIEDUDeeKmLuUT@P\ndaFD@LADfyVyjj`C@binyB@\ndcnD@BCTfYVuiEX@@B@@`\ngC`LADJPt`duPFDGI@\neMACDXaIhH\neMACD\\QIhH\neMBBlRZCAKd`\neFJHAHhP\neM`AIdLF^P\nfHbXAa@\neMBCDRZCAGe@\ngJQdEbOBRD_M@P\ngChHHDQIj`H';
carcp.t2_0 = 'fHbTA@\nfH`pA@\ngFp`@dfTujXCAZ|a@\ngFx@@eJftu@XVKF|`@\neO`BNZ``\nfH`XA@\nfHdpAa@\ngNxHLHaIVjj`H\neFJHbHpP\neMABHXaIhH\ngJXHD@aIYj@ppqyH\ngCi@HDej@pRwDH\ngCi@LDeZ@pTWI`\ngCd@ADiZDE@\ngOx@@drm\\@@A`plZp\ngGX`LDdsmTA`m^P`\ngCiHLaDIMLA@\nfHapA@\ndeTH@@RY[TYjp@@B\ngCa@@dkHFBVyH\ndeTD@@eIYWVy`@h@LFpjXYyD@\ndeT@`@qDeVUFZX@@HR`\ngJQhHl@cIHUhCBGd@\ndifH@DAInUxV`@@CBdinGdD\ndeV@@@Rge[aj@B@CChPjxYy@@\ndeV@@@RgfTYj@`@CChRfxYy@@\ndeVD@AADfVuFVijh@phj[iy@`\ndeVD@ICDiieZZjjh@`\ndaGH@DK`R[e[fiZ@LLQnyE@\ngOr@Ajti]qZY`H\ngGPhIPDIU{T`XXK\\a@\ndid@`@qDeYWaf@@BH\\NABinGdP\nfHa@A@\ngNq`@jdvkSPf\\Ll~P`\ndedB`LkiCDRV{njjh@`\ndiGH@Dr`RY{fjj@H\ngJY@BDfZhC@bK\\a@\ngJY@BDfVhCAK\\a@\ngGY@JDf]j`LLl^R`\ngGY@BDfUj`LLm^P`\ngJPH@DISUPFABqyH\ngJX@@dlu@XZX|PP\ngNxHF@aJZzjPH\ndazD@LADeUffhHr`\ngGT`EaTf]jPLDmrD\ngCh`LDdsPFDWI`\ngGX`JDdsmTA`l^R`\ndmv@@@Rf~UeZj@@@LEBDpfxYT\ngOx@@drm]UTAaqEcV\ngOx@@drm\\@@A`Qc^IL\ndmvL`BaL@HrRRjIJUVjjh@`\neFA@HoBJD\ndiFB@BAFEInuZjd@pILJnQp\ndayH@DpDf]Vjh@pKBinHg@\ngNuHLzHaIUji`H\ngNt`E`tf]Zj@pJM_I`\neMJD|Df`pYy@\ngJPhLQxIRuPD\ndaDL@@KdfYvyjV`CCLJnPp\neMBBlRZCAGe@\ngOq`AVeL~mUTA`Yb~Q@\neMPBchLD^T\ndaF@@@ReYJjjj@LNaLJf{d@\ndaE@@@aJyUnX@@@`\ngCe@E`dkPFBbyL\ngCahHlGBNtA@\ngC`@Die@ptVy@\ngC`DAb[DRVhB\ngCaHLLQIZ`LDEqS@\ngGPBADZPLaYAIZjhB\neMABHYAIhH\ngJX@@dkT`XFKGd@\ngJY@DDeZhCCSGbB@\ngGT`CPdfuj`LLl^R`\ngGX`DJdsmRA`enP`\ngFq@@eMqUW@P\ndkNF@BAIWSR[YVYjjfX@`\ndeVDPL[`bB|DeYgFZjZh@`\ndeVL`LxY@HRf][JjZV`cJ\ngO|HEfHaIeZx@@B\ndaxD@@QInuij@LBRf{dD\ndaxD@@QImUijBLlBRf{bXP\ndedB@@PYR[fyijXHqpQIxe\\\nfH`TA@\ndaxL`HS@BLddNRuR@P\neFJHqHpP\ndaxL`Lk`qDenzjh@pXDpj{bPp\neFPBca@\ngG]@EjDfUj`LEcqJ`\ndedd@DpaCdfU{ZjZ@H\ndmOH`LJQ@HRf^yriVfZZh@`\ndaE@@@yIe^f`@`@piLJny@@\ndevH`LX@aJWY\\HYiZZd@`\ndaEH@DHDfURijZ`CCL[nP`\ndaFH@HAIYUnh@@@pXHpj[d\\\ngFt`CQdidviXB\ngJPXHlPDQztAxlP\ngJPDAbGDRUj`H\ngNx@@eJmThFCbqky@\neMA@HPaIXLD^T\ngGYHLQDIJuU@P\ngGP`ATf]j`LLl^R`\ngFp`AdeoEjhCCHwd`\ngOp`AdeekZZPLMB~R`\ngF|@@ZeJxru@XYF|d@\ngOy@FDiekjj`LKEc^Q`\ngOx@@eJqmUTA`xlZ~P@\ngOx@@eLvmUTA`xlZ~P@\ngOxHBHaIeZzjhB\ngKP@Di\\YZ@phbq@\ndiDB`HSB@HrRPyIZj`CCBknHp`\ngNq@@djmUPFEfM_DD\ndcLL`HS@BLddjbRtjmP@P@P\ngJPJAHR`Tai@rBSUTA@\neMCArhabHzCCI@\ngNy@BDf[Zj@pruxbp\ngJY@DDfzhCCSGbB@\ngNx`JDdskUPFDwLZp\ndmVD@JADf^Uvjjh@`\ngChHL@aIVPH\ngNy`LETeUZZDs@\ngNt`LPdfUZi@pexlp\ndiEH@DpDfYUjj`C@bkaxfL\ndidD@@EJ[W[j@B@CBdJfGdX\ndmtH@@rJIJFRf`@j`@pxDrae^Pp\ndaG@@@kdiVrX@a@B\neMhDRUB\ngOx`FDdrikUTA@\ngJXHD@aIUZ@`\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\ngCi@LDeZ@pTwH`\ngFq@@eNqUU@XZX|Rh\ngKP@Di\\Vi@pLVOH@\ndiVH@BAIfUInFjZi@H\ngNqhHl@cIHUEj`LLZ~P@\ndaxD@@QIe]ji@LBpf{dT\ndiFL@J@aRY]Zjj@LABDpfx^QP\ngNx@@eLmUPFEfM_DD\ngNy@LDeUji@phQkxi`\ngGX`BDdjmTA`m^JD\ndazD@FCdfUVjx@`\ngCd@AH}PFBVyH\ngChHHGBOTA@\ngC`DADZHRVhB\ndeVB`BaLd@cIIBeDwKULpA@\ngJT@@deVhCCCGbb@\ngNu@E`drkUPFFM_Dl\ngGXHJGAJijhC@qX|e@\ndidH@@RYeVz@``@pXLJf{dB\ndaEH`Dq`BDfUjyjfPC@`SNyE@\ndieH`Dq`BDfUfnZii@H\ngJPDADFHRYfaHp\ndmuL@DpFEIeY~nZifh@pILe^Qp\ndklL@@STfue]eVj@B`@pyL[ad~PP\ndifH@HAIVUxY`@@bGA`Pjx^Pp\ndid@p@bBbFbDfYoa`b@@H\ndid`@@pjRfUjXBB`@pSaxbL\ndcNH@DCHheEDbnmPT@@F@hUMproHt\ndaz`@@SFyIeYjf@LJAL[nQP\ndaG@`LK`BDimVz`@@B\ndeT`@@pjrQQIFTpDEP@P\ndid`@@pjrQQIFf@`h@LLKaxbL\ngNy@JDeUjj@phVKxiP\ndigD@DpP[HhdhZyjfd@pqLkdB\ndmuH@DpDfWeYUj`@@CAlInF^Hb`\nfH`PAa@\nfHdHA@\nfHchA@\neFHBJFE@\ndmLH@@RYVuiiV@@@@@phJxYybXh\ndid@@DjY}nBHH@LJSBh^Qp\nf`i@@@LdbbbTRVHeZ][uHAD@D@@XRhs`iJtZwLX]x\nfhyA@@@ILklrstXYw`p@TaDA@@P\nfdeA@@@ISZvmvkNJLFM@AUH@D@A@\ngOu@HpeK^MKTAaKqY`\nffsA`@@LudTTTeRdVTtLIps`ySeijjjZjjj@B\ndklF@@XUttief_kjjjjh@`\nfi{@h@@LDipTmzOHhhhhhbXdiidnBu[IV`fHbjjjh`@pmIVc^CENRmzObNU@\ndayL@DpFyIgYjf@LLPnyF@\nfb}A@@@ISZvmk\\lxkSoQsP@UUUUEP@XNQ`cARUhugASgdH`\nffs``@L@QdTVbdRQfRfRxhu`qKUjjjjj@Bh@B\nfnkA`@@HkdRTTbRLrTrVSIZMxNRmUUUU@AUP@D\nfa{A@@@YEDeMDhTihdXjLUiwhyZZjjjjjjj@B\ndaxH@@RYWjZPcKA`SBinIG@\ndet@@DjYUX^d@@@@CAlJnF^Hc@\ngF|LHjOC^A|DiTt@@B\nfnk@`@@UrJIJZIPiSQHrcEZ]zNVfjjjjjZj@CCrLTxJRmFlxJ\\myBH\nfc\x7F@P@@E{OHhdiheBeMDhUEKQbmN}GKSUUUUUTsUT@D\nfnk@@@LdbTTRbTRQNfiKak^cejjfjjjjj`@`\ndmtL@@QTfyeQehBA@C@jXYxb\\\ndklL@@PtfVV]WVhH`P@`\ndeTD@@eJ[WVz`@h@LBRfgfXP`\ndcLL@@{TimY]ah@bh@LJPaW^Id`\ndcLH@@RYeZvz@`j`@pxBXYW^Q`\nfoAPB@LD@DYHhdcEEEQagTuPDQ@@P\ndeVH@DAIgeQej@@@LJSJX^It`\ndeVH@IAJYW~F``H@LJPj[nId`\ndk^@@@RfYU\\]Tzjjjj@LKBDpj[ae]L\ndid@@DjYmaBH`@LBrnGbDp\ngJX@@dmu@XKGdP\ndg^L@D@[rJIJJIGZ[UAPD@D\ndeVh@LKadDimY[j@B`@paNHL`\neMPBcXLIyP\ndcMH@ITDee]UnX@Jh@H\ndg]D@DpCRYVuveVj@BX@H\nfgA@@@DjYU_VByHu`@@@@@@H\ndclL@@{TivY~DeZhHB`@`\ndid@@LdbRQk``b@CAhPjX^Q`\neMJH\\Df`pgd@\ndeTD@@YIfUqehH@@LFJfxYyF@\ndclH@@rQQRJJuJ{PUDB@FCES\\L|Q]@\ndif@@@RYWZZ@BP@pXDpj{dB\ndaF`@@pjYJYfn@b@@pPfyG@\ndeV@@@RYV~f`@i@B\ndeV@`BBHRYg]n``I@B\ndmNH@NCHhheDVzU`@@@@LJCJe^Hp`\ndcnD`HI`BDfYoVnWZfX@@@`\ndmND@DCdfVUrjUZjZi@LFrfFUyB@\ndeVH@HAIYWVz`@d@H\ndaG@@@rdifvxH`@C@linyA@\ndieDPLZD@HhHrREQKaVii@LBrnGd@\ndk]L@LhDeIeoYR[SZjZZdHZ`\ndmTJ`HSNd@cIICeMEjjh@`\ndaxB@@rnRV{jj`CAhSBinHG@\ndeeD@DHFR[eyiihHr`\ndaxD@@QIgUjfBJlBpj{dL\nfoQPB@F\\@DYHheBeLdRdeV]Th@@D@@P\ndk^@@@RfYU\\]Tz@@@@@LECBinFUOdZ\ndclD@@kHheCDdUKkSP@P@P\ndeV@@@RV[TYzP@@C@j[axaR\ndklHPBBPzPrJJKQEIa``bZ@bV\ngGP@DiUjaAXEXwbD@\ndmtH@@RYWUih@IhBN\\NALJiWb\\H\ndk]L@LxDMIe]eRkSZjjjh@`\ngN}@DVDfUZi@`\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\AFJ\\EIQk^bgODZB\nffs@`@@URYVumfv^cIJmyIX@Jjjjjbh@H\nfjc@`@@ErJJQIFYJSKXgIJlyNVjjjjjjj`@pC`eF\\EIVkN|FJ\\|`T\ndg|@@DjU_eZx{BAH@@BJ\\MaBine]N~Q`\neFJHSHpP\ndiV@`J@HRfU|kahDB@CB`QnGdD\nfhy`B@J@BDifW_e\\TDkpZA`R@B@DAVF`DYpTeFl{wHA@\nfhy`B@N@BLdTTTRRVqirUmNh@`BBh@@pt@cARUhugAyCp\ngNx`DJdssTpFBsyD\nfgA`@@@ISLrotyHvk@@@@@@@P\nfdy@@@LdbbRbVbJwMAc@pU@P@@ab`\nf`q@`@@^RYWUe^cKN`@f@B@DNVB`HpRbmFm{bNB@\ngGP@DiVV`iJpJqoDH\ndeTH@@RYWVf`@j@CC`SBhYyG@\nf`qAA@A@bOQBSJ{\\ktYYt@EP@P@A@\ndif@@@RfU~F``@@pYLJf{b@H\ngJQ@@dsU`XKGbD@\ndeVD@LADfvUFVjjh@p{BinF^P`\ndmtD@@QIV[VUZh@@@pZfxYWbQ`\ndeT@`@bDfUuih@Jp@`\ndid@@DkYWaz@@@LF`j[ayB@\ngNx`LDdskUXD\nfoA@@@DkfYU]UcNz`@@@@@`\ngJX`DBdru@XS\\RH\ndeVH@DAIgeQej@@@LJrfx^Hd`\ndg~@@@RYfUWd}mh@@@@@pdBinFUwbGX\ndid@@DjYmaBH`@LJpj[nPH\ndmvD@EBdin]~F``I@CAdJfF^Ph\ndetD@@eIYe~DYZjjh@`\nfmoA`@@HWdTrTTtbRLrTfVrk^CdhymUUUUUUUUU@AauFBTYrRmFl{pXyKUoQsV\nf`qAA@A@dORBSJ{\\ktYYt@EP@P@A`IFBTUhunHxH\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\cENBdkQk^CEOD@r\nfb}A@@@YEDeMDhTihjLUiwhyjjjjjjih@L@``cAJ\\EIQkNBgOHQ@\ndknL`LaE@HrRPzIJZ]Vh@b@CAlInd~Qh\ndeUH@JdDin]xZB@`@pIBX^IT`\ndg]L`LnDT@cIIChdieNkT@QP@P\nfgAAB@H@BDjyeUrLd[Uf`@@B@@H\nfgA@@@LdbbbTVKIBMjp@@@@@@D\ndieD`JXaCDRYgvzejX@pHLi`\ndmUL`LZDh@cIHULdeijh@p[FxYWd@\ndeV@@@RfyWahBB@CBj[agf@a@\ndcNH@DAIVYeEZ`Hb@B\ndaF@@@Rfu[j@@@LJABinIg@\ndo}D@LlMrIJJIIHiSjhHHh@H\ndid@p@qBqAqDfYun``H@H\ndcn@@@RieU~V]jB`b@C@\\JfxYWbIh\nfoA``@I@PdwJ{J|EYsP@UUD@D\ndeUH@AdDim][j@B`@pYLJfGdR\ndid@@DjUZnBAH@LFaLkayC@\nfoA@@@DjU][VgKNBAJ@@@PiXZ`cAJLdkQk\\`x\ndid@@DjYUaBHP@LFSBiayG@\nfoA@B@@QBSJzlkQegP@S@@@H\\lM@Q`eNBUhunP\\\ndif@@@RYWZZ@BP@piLJnx`B\nfoA`@@@ILkjrmFV]@AL@@@ar`\ndeUD@DXIRYvTYZjV`B\nfdyAb@HHpCpRkVYU_]Nmyj`@@B`@B\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\nfhi``@L@PdrkLjn[s`mUTEAD@A@\ndeVD@LADeVUFVh@@@`\ngJX`LDdju@XP|Tp\ndifH@HAIfuxZ`@@B\ndif@PBBPRPR[e^Fh@@@pbNES\\H\ndcNHpJtIAICICHiCDedLuP@R@D\ndkn@hJBPRPrPvPNPrJPqIPpYj`@j@B\ndeV@@@Re]Xj@Bj@C@fxYxTIa@\ndmvHPBTIAIAInV_ij@HP@`\ndcNH@NCHeEDdYplAAT@D\ndkn@PBBPRPR[eW[aj@Bj@B\nfHbhA@\nf`q`@@@YIEBedhdnB]zh@J@@@@`\ndeVD@D@dfVuFVh@@@pXj[agdH\nfoAP@@@NRYWVUzLMZ@B`@`@B\nfde`@@@ISKN~rmFBTFH@@Pp@@@`j`\nfoQHA@FJuXFH`HRYUYYbTT[UjZjefZ@B\ndid@P@BJdDef_ahH@@LJ`fx^P@\ndeT@@DjY]zXFB@@pYLinGbEH\ndaF@@@RYWih@H@LBCB{bIP\ndcl@@DjYU_egX@@@@@pYLJngaLJz\ndknL`LaM@HrRRqIYPYV`@f@B\ndeTh@DiiAIgeQej@@@H\ndg^@@@rIRJEJFRoU@AT@D\nfoAp@@@PidbbvbRafJJuMT@ER@A@\ndk_@PBxpbEbDfYYUZ]NBBbT`B\ndcvB@FAEuIm[VZijX@`\ndknL@JABR[mfWSZZ@`@B\ngOq@@drm]SRA@\nfoA@`@@BRYfYWuVLyh@`@@@CBUF\\EIVcNyBp\ndaG@@@[diWRh@I@B\ndeT`@@pjrQQQUMpEAP@XDUCOHX\ndaDh@DqnAIeZfZZd@`\nfoAP`@DNAsHheEEJefBMYji`@h@B\nfoAQ`@DX@pRSJs|kSegMTs@A@@X\\QaVcV]rG@\ndg|@@DjU_eZx{BAH@@BJ\\MaLJfe]N~Qp\ndk\\H@@RYm[Watz`@@@@H\ndmvH@JAJ[g_ahHBP@`\ndmvH`BdIAIfUya``a`@pkBhUyC@\ngOy@HDfUkjj`LJlZ~P@\ndifD@LADeYWaZjj@H\ndif@@@RfU~F``@@pxDpj[nPH\ndmtH@@rJJIJEn`HJ`@pxBiae^Ig@\ndeVH@NAJ[VvF`BH@LBPfGfYt`\nfoQH`@LBUXCldTRabRrIRRcVjj`PJ`@LFPISfg\\``\ndmM@PBx@c@aJYg\\jeZdHB@B\ndaF@`H@HRVU[jjj@LNaLJf{d@\nfgA`B@K@BDifUW|TEiQj@@@J@@H\nflmAP@@LUyNQQQQEJQJI|Eish~BtuUUUUU@A@\nfnkA`@@U[dTRTrTrTtRJeFRUYpTmMUUUUTuT@D\ndaDH@@RYUih@H@LBCB{bHp\nfoAQ@@DZ@drsJkjlYsUPTDP@D\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\nf`ip@@@F}dbbTRRRQhpVkN@@@BB@@B\ndklD@@QIe]e]MjZ@@@LApfFUt~QP\ndg|H@@rIQQJQZ}NfuUUTt@P\ndmtD`ATHaIe]nf`@jP@pXDpjGb]H\nfbmPB@NA@DYHhhhddmcEJ\\e[Sj@H@`jj@@H\ndg~H@HAIYeg_eNzB@@@@B\ndmvD`La@BLdabRbxUjjj@H\ngGQ@@djutA`c^HP\ndaD@@DjUZxHH@CBdpj[bQp\nf`qpB@DLxBHRYUvYZcKN`@hBB@@H\ndigDPLXXP@b`cIHUDnEZfd@`\ndaE@@@aJmUnjjh@`\nf`iA@@@YHhhhheEZBdxwj@BHHH@@`\nfluA`@@HRdrvmkZxiFlFKUUUP@U@@P\ndev@@@Re[TjFP@@@@LFaB[iy@`\ndif`@@pjGIEEEVxB``@ppjGdL\ndaE@`BhHaIfUn`H@@ppL{bTp\ndg~L@BAER[e[gzSmh@B@@@`\nfj}@P@@\\teIfVWn]{YrQhyZA`hBBJ@@H\nfj}@P@@\\LeIfVWVu{YrVhyZA`bBBJ@@H\ndmvH@DAIVUVUZjjh@peLJfxYWdP\ngNp`@dfzZj@pJMX\ndk\\D`HP@cIHXheDQgSV@@@@@pZnE]ObAH\ndeVD@FADfygFV``@@pjfxYyB@\nf`qa@@H@RVUuYUgG^h@J`@@@H\ndaD@`@qDfYVz@`@CB`pj[d\\\ndif@@@rRJEKaj@@@LJSJ[nHP`\ndifD`Na@BLddJT[ejj`B\nfhiQ`@DX@pRSJswJ}N^BuSMA@P@D\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\neMBBHRYCAKd`\ngGPdMQDGpRUYiDe@\ngGPXHlQxIU[U@XR|VH\ndeU@@@qJYejxBHh@LJJfF^Qp\ndmuH@DXDfUgjZ@Bj@B\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\nfnk@`@@UrJIJZIPiSQHrcEZ]zNVfjjjjjZj@CCrLTxJRmFlxLTyyAh\neMJDBDe`pQyP\ndeTH`ICDRUe_af@B@bGB`Jf{fPd`\nf`qAB@O@qDfYUg_EjsjP`@@`AAC@\ndcLH`ICDRUe]^FX@J`Ha`\ndid@`@bDf[Wai@@@LJ@j[nI``\nfhi``@C@PdsrnljJW`mP@T@@@A@\nfiwpP@DVz@wliLsLj{[klrPeFCEKQmTtuAPHDQ@@FDj\\d{qV}GrF`\nfhiPb@OA``@QddabbRRvRkF\\m@@@E@@F@jLxJRmFxcpP\ndeVH`IDIAIe[ZZ@Bd@LBSJGb]H\ndmvH`IDIAIe[^f`@i`HF`\ndmv@`ABHRYWUih@IhBN\\FALJixgJ\ndaE@`FxLQIfVfifx@`\ndaFH`BxLQIe\\jffh@`\ndig@@@aDkYWaZ@@@LJPj[nI@`\neMBBHR[B\ndmtD@@QIn[VUZd@@@pYFxYWdT\nfhi@`@@HR[YfUWMypVf`@@@@@ptc`iJtZsoAyC@\ndk^H`MDIAIe[mZy]`BIjD@`\ndaF@@@RYWifef@H\ngOx@@drm[RtA`Uc^HL\ndidL@@QdfU\\jZff@LBpf{dB\ndcmH@HDLbTTRbOBnt@@@@A@\ndaF@@@RZW[jii@H\ndaFH@NAIe^f`@`@piLJny@@\nfHgPAa@\ngC`DAbZHRVhB\neMBBHRYCAGe@\neFJH\\HpXQr`\neMPBchLF^P\neMbDBDfp`';
carcp.t3_0 = 'daD@@DiYZYji`@\ndaD@@DjUZxHD@@\ndaD@@DjUZxHH@@\ndaD@@DjWjXHB@@\ndaD@@DjWzXHB@@\ndaD@@DjYvxH`@@\ndaD@P@bBbDfYvzB@@@\ndaD@P@bFbDfUjz@H@@\ndaD@P@bNBDfUzZ@B@@\ndaD@`@BDeeVz`@@@\ndaDB@@InRYgrfiZ@@\ndaDD@@IIf]n``@@@\ndaDD@@QIeZfZfh@@\ndaDD@@QIe\\jZehHj@\ndaDD@@QIe\\jZfh@@\ndaDD@@QIe\\jZihHj@\ndaDD@@YIeZn`B@@@\ndaDD@@iIeenjZd@@\ndaDD@@yIe^fZVX@@\ndaDD@@yIe^f`@`@@\ndaDH@@RVU[f@@@@\ndaDH@@RVU[j@@@@\ndaDH@@RYVih@H@@\ndaDH@@RYWih@H@@\ndaDH@@RYe[hB@@@\ndaDH`NBPRYWih@H@@\ndaDH`NBlRYWih@H@@\ndaDH`NCDRYWih@H@@\ndaDL@@SdfURijZ`@\ndaDL`HS@BLddJS\\mUP@@\ndaE@@@YIeZn`B@@@\ndaE@@@yIe^f`@`@@\ndaED@DHNRYWifif@@\ndaED@DpFRYVkfjY@@\ndaEH@DXDf[Vyje`@\ndaF@@@RYe[hB@@@\ndaF@`BBHRYg[hH@@@\ndaF@`FBHRYVkh@`@@\ndaF@`NBHRYWih@H@@\ndaFD`HI`bDfYjzif`@\ndaFD`JK`BLbbbMMTtp@@\ndaFH@DAIeUnZjh@@\ndaFH@HAIYUnfjh@@\ndaGD@Dp`yIeVfZiX@@\ndadL`HS`BLddJULwKUU@@\ndax@X@bDbLbJbFbNbLbdLeUT@@\ndax@X@bDbLbJdFdNdLbdLeUT@@\ndax@X@bDbLdJbFbNdLbdLeUT@@\ndaxB@@QnR[VZY`cH\ndaxB`HSBCpRjuZj`@\ndaxD@@IIeujj@@\ndaxD@@QImUifALj`\ndaxD@@iJU^jj@@\ndaxL@@SDfUVjh@@\ndaxL`HS@BLddNbuT@@\nday@`Dp@aIfYjj@@\ndazD@LADf]Vjh@@\ndazD@LADf^Vjh@@\ndazD@LADf^fjh@@\ndazH@DAIfujj@@\ndazH@DAImUjj@@\ndazH`LPHaInVZj@@\ndcL@@DjYn}aBHbh@@\ndcL@X@bBbFbAbEbMbDfYn\x7Fijjjj@@\ndcL@X@bDbJbAbEbMbDfn^_ijjjj@@\ndcLB@@RURYYejyjieh@@\ndcLB@@RiRYyVQejjjh@@\ndcLD@@IIf]z[hHBj@@\ndcLD@@eJ[W[[j@Bk@@\ndcLD@@iJ[g]xZB@f@bX\ndcLD@@uIfUk[hBBj@@\ndcLD@@uIfU}FV`PJ@@\ndcLDHFDH`haXcXaIf[ozYjYjP@\ndcLF@@IaWTfYn\x7Fijjjj@@\ndcLF@@Rag\\bbTVTILuSUT@@\ndcLH@@RYWUZZ@Bj`@@\ndcLH@@RYWYzZ@Bj`@@\ndcLH@@RYeZvz@`j`@@\ndcLH@@rJJIJGMtAAU@@@\ndcLJB@PUuNR[eY~eijjh@@\ndcLL@@QTfvUtYZ`@h@@\ndcLL`HS@BLddJfRtjmP@P@@\ndcM@@@WIDeBddU@AMTACP\ndcMD@DTIR[fVQuhHF@@@\ndcMH`BuPBDf[U{aj@BX@@\ndcMh@DKaePR[eoVEjVfhHF@\ndcNB`BaLtOCIILeBdnmUUU@@\ndcND@DATfyeXYZ@`h@@\ndcND@LADfU[U]Zj@@@@\ndcNH@ICHhdhdYSP@UT@@\ndcO@@@aDiUm^UZh@HB@`\ndcl@@DjYU_egX@@@@@@\ndcl@@DjYn}BXVjjjd@@\ndclD@@UIfV][iuhFAH@@\ndclD@@iJYW]rnF``IhBI`\ndclD@@iJYW]rnF``Jh@@\ndcll@Dsm@iRYgeVE]ZjeZ`@\ndcllADqe@]R]{HhdhdcWRkURmT@@\ndcm@@@YJYYwhUtH@@@@@\ndcmH@DpLbbbLRQTnmU@A@@@\ndcmH@DpLbbbLRQTnmUUUP@@\ndcnL`LaA@HrRPjIKTrzmPHD@@\ndcndADkatIjYyIefY[eujeji@@\ndcnl@DsetBeIf^UXUujjUj@@\ndct@@DiUUVjjj`@\ndctB@@I]rJJJIVMRuLDE@\ndctB@@PYRYU{ViijBBP\ndctB@@RURY]VvjjZ@@\ndctBHFxYBHRHrHkprJPqREUUMT@@\ndctF@@IaWTfYn~jjj`@\ndctF@@rngTen{mjjj`@\ndctd@DrmATf^VYjji`@\ndcuD`FWi@HrQRXiSUTttDU@\ndcvB`JFUt@aJUgfjjfX@@\ndcvD@LADf^eujjj`@\ndcvD@LADf^fYjjj`@\ndcvHPF`G@WCIIEXmIUSUPQR@\ndeL@@DjYeIjGijjjj@@\ndeT@@DjWvifjih@@\ndeT@@DjYUXPbDP@@\ndeT@p@bDbLbLbdLRPsU@@@@\ndeTB@@KiRYg]nZej`@\ndeTD@@SHheDYaMUMP@@\ndeTD@@eIff\\Ijjf@@\ndeTDB@YnRYe\\YZB@@@\ndeTD`AdHaIe[jz@HX@@\ndeTD`NDHaIfVVfBA`@@\ndeTH@@RYVZfZZj`@\ndeTH@@RYe\\YZA@@@\ndeTH@@rJJIHmtA@pD]@\ndeTH@@rJJIHmtAAH@@\ndeTL@@JTfYoXXHH`@@\ndeTL`BjPkDf[W[jjjh@@\ndeU@@@EIYe^g``p@@\ndeU@@@aJWeQfj@@@@\ndeU@PBdHchaIf^VFBBH@@\ndeU@`Dp@aIgeQej@@@@\ndeUD@HDIRVUunfef`RKh\ndeV@@@RVUenh@J@@\ndeV@@@RYeun`HJ@@\ndeV@PNBHFHRYeYi``x@@\ndeV@pBBHzHfHRYgea``b@@\ndeVD@FADfygFV``@@@\ndeVD@IADfyWxV`@`@@\ndeVH@BAIf]VzB@h@@\ndeVH@FAIfUqehH@@@\ndeVH@HAIYf^f`H`@@\ndeVH@IAJ[Vvz`@h@@\ndeVH`Ax@aIfVVfBA`@@\nded@@DiUUjjj@@\nded@@Dj_VfZZ@@\nded@X@bDbBbFbAbIbDf{nijZ@@\ndedD@@QIeVVjjP@\ndeeD@DdAR[UYjjX@@\ndefD@LADf^]Zjj@@\ndefD`FFPBDiWnjjf@@\ndefD`FFPBDi]nijf@@\ndefJ`JaLFP|LddjRcUTp@@\ndet@@DjYUX^d@@@@@\ndet@@DjYUX^dHbH`@\ndetL@@jTie]rnF``J@@\ndet``Dki@HRYYUnFVjVi@@\ndev@@@rQQJHtpr@@@@@@\ndev@PL@HPHRYUTjFVj@@@@\ndevh@DJndDfVU[af@`hP@\ndevhADIadFf^R[fUnxVijY@@\ndg\\B@@Q[R[VUmgVf@HhBL`\ndg\\B@@SSRY[W[FVh@Ih@@\ndg\\D@@eIfU_Un`HJj`@@\ndg\\H`ABHRYVwUih@Jjh@@\ndg]HPAuPbBbDfYw[fzB@ij@@\ndg^B@BAMoHiieDeBimU@DP@@\ndg^L`LxY@HrQQYJEIYUSRuUAFP\ndgl@@DiUUUZjjjh@@\ndglBA@RUSe{HihheDbtuSUAFH\ndglBPHRU@HhHrRPrIRIkUTmP@@\ndglD@@QIgV]YjfjZBJ`\ndglD@@QImUUUjjjj@@\ndglFPHkivpqLqDen{nzjjjh@@\ndgmB@LxDWTfU[{Vjjfh@@\ndgnD@KADfuUUVjjjh@@\ndgnD`H[`BLdTRbJRUUMUT@@\ndg|D@@OIEEHhfmPkmAU@T`@@\ndg|DPFDH`haIf[oWiNyjY`@@@\ndg|H@@RVUvU[cn`@`@@@@\ndg|H@@RYfUWd}mh@@@@@@\ndg|L@@ildTRbrJQTJtEAEL@@\ndg|d@Dq]@\\bbbbfJSSimUSTs@@\ndg|l@Dq]@[rJJJJXiMNfuUMSL@@\ndg}@@@aJVYU^Svv`@@@@`H\ndg}@@@mJYeU|]Tz@@@H@@\ndg}D@AlBRYgU][iVB@jjD@@\ndg}D@DpCrJJHqIYERzuT@EP@@\ndg}D`LHU@HrQQYJJEYQwSMMMR@@\ndg}H@DHDfYV]rX{Zi``H@@\ndg}HPAuPbBbDfYw[fx{``JZb@@\ndg}L`FWSl@cIEHhbeEc]MUUTsP@@\ndg}L`JXiTIAIf]VunNzVjZj`@\ndg~D@EADfufUqT{ZZP`HBL`\ndg~L@BAER[e[gzSmh@B@@@@\ndg~L@IAKR[Ye]z]MjdHB`@@\ndiD@`@RdjeVjj`@\ndiDB`HSB@HrRPiIZj`@\ndiDD@@GIEHjjjj@@\ndiDJHDpnDAbHbaahcIIJiIZe@@\ndiDL@@xTiUVjj`@\ndiDLPBhPbFbLbbbeiZdHQ@\ndiDNPHSB[a@XhXrRPzQZe`@\ndiE@@@sIDhcFZj@@\ndiF@PHApiprRQVRjj`@\ndiFD@AADfuUjj`@\ndiFD@LADf^Yjj`@\ndiFD@LADf^]jj`@\ndiFD`JxPBLbdTljjX@@\ndiFDpAk`bDbLbLbdJTjjX@@\ndiTH@@RfU|kahDB@@\ndiTL@@X\\dRRaaJzjZj@@\ndiV@@@RfU|kahDB@@\ndid@@DjUZnBAH@@\ndid@@DjUfaBB`@@\ndid@@DjYUaBHP@@\ndid@@LdbRQk``R@@\ndid@@LdbbQxXF@@@\ndidD@@IIf][hHB@@\ndidH@@RYVZZ@B`@@\ndidH@@RYVzZ@B`@@\ndidH@@RYeVz@``@@\ndidH@@RYevz@``@@\ndidH@@RYfVF@b@@@\ndidH@@RYm^Fh@@@@\ndidHHFBHJHzHFHRYgljZfh@@\ndidH`DBHR[e^FX@@@@\ndidL@@IdfYoa`b@@@\ndidL@@RdfV^fZjj@@\ndidL@@SdfVTjZfZ@@\ndidL@@pTee^fZZi@@\ndidh@DKaAInV[fiZ`@\ndie@`HxGCIIEJnFjiX@@\ndieD@DpFRYVZyjfd@@\ndieD`JXaBPRYgvzejX@@\ndieD`LIN@HRZufFZid@@\ndieH`Dq`BDfUfnZii@@\ndie`@@pjX\\dTTUk`Hb@@\ndif@@@rJJIEn`HH@@\ndif@@@rRJEKaj@@@@\ndifH@AAJ[W[j@B@@\ndifH@BAIfuxV`@@@\ndifH@JAJ[gxZB@@@\ndigH@DK`R[e^Eh@@@@\ndigL@Ds`XTfUfn`BH@@\ndkLB`HSB@HrRPiIIIZjjh@@\ndkLH@@RUUUVjjjh@@\ndkMB@LxDeTfU]mZjij@@\ndkNF@BAIWSR[YVYjjfX@@\ndk\\@`@bDfYYwZ]NB@@@@@\ndk\\B@@SSRYVuVfeVi@Bh@@\ndk\\D@@QIee}RkaZfjjh@@\ndk\\D@@wHhhhhbfESZAhD`@@\ndk\\D@@wHhhhhbfESZBhD`@@\ndk\\H@@RYWYVftx@H@@@@\ndk\\H@@RYeg]itxH@@@@@\ndk\\L@@x|bbbTTJZUuhFHF@@\ndk\\b@Dsm@iMIf^UvE]Zjeih@@\ndk\\d@Dq]@\\bbbbfJZ]MjjZe`@\ndk\\d@DsmB\\bbbTrQXUujjUj`@\ndk]D@JxCRe]YTjtzjjjj@@\ndk]D`LHY@HRf]VwJtzYifi@@\ndk]H@DpLbbbLRVJeujh@J@@\ndk]H`FVPbDfUonkmN@Hfh`@\ndk^@@@RfYU\\]Tzjjjj@@\ndk^@@@rQQRJJjaTzBjBD@@\ndk^D@IADfvYWz]MjdHB@@\ndk^d@DXYtCRYf[WaWVjfji@@\ndk^d@DkaTMRYYe]neVjZji@@\ndk^d@DkatCRYYfUngVjZji@@\ndk_D@DHPuIeeevySZ`hD`@@\ndklB@@PcR[me]]ZZ@B@@\ndklB@@PcR[me]]Zj@B@@\ndklB@@QSrJYJIJF]ZX@b@cH\ndklB@@QmR[fUxUZBBF@@\ndklD@@MJ[eZ~F`HJh@@\ndklD@@eJ[Vvfz`@jh@@\ndklH@@RYfWua`Hbe@@\ndklL`HS@BLddJbRvWUjB@`@@\ndkl`@@kaRe[vTf@HZj@ah\ndkm@@@GHhhhhdvf@bbh@@\ndkmD@DHCRYvUvUZh@J@@\ndkmD@DTCRUfWtYV@`e@@\ndkmD@DdCrIJJIPxUV@bE@@\ndkmDpDgSBHjHVHRYYmYn`HJf@@\ndkmH`NVPbDfUunih@JZ`@@\ndkn@`D@HRUUYWSVj`@@@\ndknD@LALbbRbaRtvjh@@@@\ndknH@DCHhmEEEYuj@bH@@\ndknL`IaMADRge][aj@Bf@@\ndk~@@@RfYU_JGUN`@@B@@@\ndmL@@DjYUVGi@@@`@@\ndmL@`@VDifU^FUifje@@\ndmL@`@ZDifU^FUifje@@\ndmLB@@RURYUVJaejVjh@@\ndmLD@@QIe[VfeVi@B@@\ndmLD@@QIe[VfeVj@B@@\ndmLH@@RYVuiiV@BjH@@\ndmLH@@RYe~Ifyjjjh@@\ndmLH@@RYiYKnUjjjh@@\ndmLL@@SdfVUrjUZ`PH@@\ndmLd@DpYBdfV]VzUZZjV@@\ndmLd@Dqe@TfUeZzUZZeZ@@\ndmM@@@yJUntfePBIhP@\ndmN@pN@H`HPHrRPqIZneUhDB@@\ndmND@BA\\bbbReInFjZjd@@\ndmNH@BAIfUmiEX@@@@@\ndmNH@NAIYe^neZdHB@@\ndmNh@DkaTDfVYVzUZiZi@@\ndmO@@@SdfVUrjUZ`PH@@\ndmTB`HSB@HrRPiQQZjj@@\ndmTH@@RUUUjjj`@\ndmU@pLD@a@c`cHheEKFjfh@@\ndmV@HLBHQpYpVHrIRHrJjjj@@\ndmt@H@bAdIdEdDfUvjZ@Bj@@\ndmt@X@bBbFbAbIbEbDfYojzfZj`@\ndmtD@@QIgYVUZh@@@@\ndmtH@@RYWUih@Jh@@\ndmtH@@RYe[[hBBh@@\ndmtH@@RYeeZVfjj@@\ndmtH@@RYeeZZjjj@@\ndmtH@@RYe~[ffjZ@@\ndmtH@@Rfuu[j@BXBA`\ndmtH@@rJJIHin`HJ`@@\ndmuD`LVD@HrRRqIXYV`@`@@\ndmuH`Dq`BLbbRbJkfjZi@@\ndmvD@DATf^Uqej@B@@\ndmvD`La@BLddlTReUhB@@@\ndmvHPEHJsjsHhhmDVFBBK@@\ndmvHPEHLSlSHhhmDVFBBK@@\ndmvH`ITICHhdhdZZ@Bj@@\ndmvL`BaL@HrRRjIJUVjjh@@\ndnDH@@ReVDijiZ@@\ndnDH@@ReVDijjj@@\ndo\\H@@RUUUUZjjjj@@\ndo^HpAxH`hb`aIevyffjZjhHa@\ndo|J@@S[_HheDdeDYMjBBb`@@\ndo|L@@RtfUVuwSZjp@h@@\ndo|L@@RtfvYWwSZjA@h@@\ndo|L@@iTinU]_ihHHjXBCP\ndo|L@@iTinU]_ihHHjXBC`\ndo~L@MAER[e]mnEh@Ij`@@\ndo~``LKad@aJ[V]Y[j@Bjj@@\neF@Hh@\neFAAD`bJ@\neFAADdRJ@\neFABD`bJ@\neFABHhbL@\neFACDlRL@\neFBBHc@@\neFBBlc@@\neFBCDc@@\neFHBJ@\neFPBc@@\neFbHbHp@\neFhXNic@@\neM@Hv@\neMA@JXaIh@\neMABHXaIh@\neMABHYAIh@\neMB@Jch@\neMBBHRZ@\neMBBPRY@\neMCALhabHz@\neMDARV@\neMFI@bMP@\neMFIGBMP@\neMFiDqzN`@\neMHAIX@\neMHAId@\neMHAIh@\neMIdEJHIcd@\neMJDBDeP@\neMPBch@\neM`AIx@\neMbDbDfp@\neMhDRV@\neO@Hyj@\neOB@Hcfh@\neOBBHcfh@\neOBCDcfh@\neOHBNZ`@\neOPBcfX@\neO`BNZ`@\nfH`D@@\nfH`T@@\nfH`X@@\nfH`p@@\nfHa@@@\nfHap@@\nfHbT@@\nfHcD@@\nfHcP@@\nfHcT@@\nfHcd@@\nfHdH@@\nfHdP@@\nfHdd@@\nfHdp@@\nfHep@@\nfHfX@@\nfHgP@@\nfHgd@@\nfHgh@@\nfHpXT@\nfHpp\\@\nfI@@\nfJ@@\nf`a@P@@Ht[HheDhmD\\jsTE@qP@@\nf`a@`@@FrJJIJQJrLy@PUUT@@@\nf`aA@@@ILsKWRpTADUUP@@\nf`aAb@NFlBHrJIKIRJUTY@AUST@@@\nf`aQC@IVLBPQHXdLbdLRTvf`eUPADu@@@\nf`ahB@LDxJP@aJ[V]Yf\\h@Jjj@@@\nf`ahB@LDxJP@aJ[V]ZV\\h@Jjj@@@\nf`aq@@DV\\CHheEDcddkSTE@UP@@\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\nf`i@`@@DRYfyU]`mNmyi`@@B@@@\nf`i@`@@HrJSQQQIH|UiuoMP@P@P@@@\nf`i@`@@VRYfYU]`eNMyh@`AB@@@\nf`i@a@ARADDbDfYuUUYqVg^``Jh@@@@\nf`i@a@BBADNbLbbbRfaRcIBU[tDE@AA@@@\nf`i@a@FRAD^bDfUm[UirRkN`BJ@BH@@\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\nf`iA@@@YHhhheLUfBdYwjBb@@H@@@\nf`iA`@@HldrlkZuFJMYsTaADtP@@\nf`iA`@@HmdTRTRTrQhqQkNZdHHfb@@\nf`iQA@B\\|@HpDISLzsnRdcN}TaAQUD@@\nf`ih@@@\\eYvRJJJJUKJgEZMX@HHFhH@@\nf`ip@@@XTeLwOvmNJt{pPQT@A@@@\nf`q@@@DjUgm_hJs``hB@`@@\nf`q@`@@LRYfWg^Qg^ZB`@@@@@\nf`qA`@@FmdbbdTUrRiIVjBh`jd@@\nf`qA`@@Hpdrlrj~gV|uP@@@@@@\nf`qHC@DXxHDPrHMDYEDeDUEEj\\]z@HhH@@@@\nf`qP@@@PrQJJJIIFJlYsP@P@P@`B@\nf`qPB@DX@DILwLjoiuoMUUUUT@@\nf`qP`@DBAKHheHdhbmPSoMUTa@P@@\nf`q`@@@YEEDbdhdf\\]z@`f@@@PE@\nf`q`B@B@bDfYwVUYqwhHBX@@A@T@\nf`q`B@O@dDfUuYWhrsh@I`@`ACd@\nf`q```JBTBHQDXbBAFQREQQSYJVg^jjfX@@@@\nf`q```JBTBHQDXbBAFQREQQSYJVg^jjfZjd@@\nf`q`b@LPP@HrRPjJIIKZ][ru@@@@@@@\nf`qa@@D@RYyV{TRg^Z`B@@@@@\nf`qa@@D@RYyeg^Qg^Z``@@@@@\nf`qh@@@XirVRJJZGJII`g^BHa`@@DAP\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\nf`qp@@@Hpds\\rj~gV|uP@@@@@@\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\nf`~`b`KLLBHHDTBNA@`aIneUYYjjjZ`@@\nfbc@@@LdbbbTRLRqWEBMjsoIs@AA@UUPT@@\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\nfbc`@@@ISLrj}{dirVgVBgLmUTrB@m@@@\nfbc`@@@YHheEMDXlijREhuoQSd@@@@@@@@@@\nfbe@P@@HM[HheDhdhmbdisTEALUT@@@\nfbe@`@@HRYWUUUUIQjjjjjj`@@\nfbe`P@N@P[vQQJJKQRzZIUfjijjZi@@\nfbm@@@DjYVWV}~ZlENXI@H@@@@@@\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\nfbmAP@@BUGNQQQQQQPeIG`mNBehIb@@b`@@\nfbmH`@EVBdGlbbbbbbTRacAZb{KPADDLQ@@@\nfbmI@@DTdhFQQIQIQHqIY`iJSejfYjB@h@@\nfbmPB@NA@DYHhhhddmcEJ\\e[Sj@H@`jj@@@\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\nfbmQB@AJRBHRYVyV[WisShy`BFhJAB@@@\nfbmp@@@V|eLsJzo]SdcZ\\@@@AEU@@@@\nfbu@@@LdbbRbVbrQwMQS@pU@TA@BFH\nfbu@@@LdbbRbbtRJOCIs@pUPE@@BFH\nfbu@`@@YRYWYeg_hrJX@Ij``H@Py@\nfbu@`@@YRYWYeg_hrJX@JY``H@HDj`\nfbua@@D@rJJJPjJYIK^SGKUUX@@@@@@\nfbupb@LVcA@@cIIBmDeLhThkUgKU@ASUQ@@@\nfby@`@@HR[UUUUUZjjfjj`PT`\nfby@`@@HR[UUUUUZjjjjj`@@\nfbya@@D@R[UUUUUZjjjjj`@@\nfb}@@@DjYee\x7F]^RD[S`q@@@@@B`@@@\nfb}@P@@H]gHheDheEeD\\jugQRgKUUUUUUU@@@\nfb}@`@@LrJJJJHyISI\\dkSoIsTED@@@H@@@\nfb}@`@@LrJJJJHyJIK\\dkS`isTED@@@H@@@\nfb}@`@@LrJJJJKIIIH|Djw`isTEP@@@@@@@\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\nfb}@`@@YrJJQIFYJYKDyIUgQRuUUU@AU@@@\nfb}@`D@HQvQSRJIJUJYHRiZ]yNVjjjjjjj@@\nfb}A@@@IS\\lj{j|DjsoIsP@@@@@@@@@\nfb}A@@@IS\\l~kZ|dkSoIsP@@@@@@@@@\nfb}A@@@YHihhhdeCenJtzpTyh@@@@@@@@@\nfb}P@@@RRVYfU{wyKSkASg`@@@@@@@@@\nfb}`@@@YHhhhhdhecjRUXt_I@@@@@``@@@\nfb}`B@A@dDfUmeumZLeiwdy`@@`@@@@@@\nfb}`B@A@dDfUmevUzLeipTy`@@`@@@@@@\nfb}`B@B@dLbbbRfbtVbKIBuxJ\\p@@A@@@@@@\nfb}a@@I@RVYfU{wyKSkASe`@@@@@@@@@\nfde@@P@QAHadQJHuDFb@qDXcHhhiMMEciS`eN}MUUUUUP@@\nfde@@P@QAHadQJHuDFbOQDXcHhhiMMEcCS`eNCMUUUUUP@@\nfde@P@@BLGHhhhhhhlcqVoNbt@QD@d@@@\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\nfde@``BRADLb@qDXcHhhheCBdeqTmN}ADT@AQ@@@\nfdeQ@@DFAdTRbRRTJbIQVg^ZiBBZhDDJP\nfde``@A@BdsLsKslUiuhm@DPAI@@@\nfde`b@H\\d@HRfYfWwQJMxLZjfZ``H@@\nfdi@P@@HM[HheDhdhkdisTE@lT`@@\nfdiA`@@HedTtbJRbbV|Ejjj@``@@\nfdiQb@LR``P@cIIBhheedmjru@pQU@@@\nfdq@`@@HR[UUUUVjjjjj@@\nfdqA`@@LdeJl{jjtuSSLtBbGbiLnP\nfdqPP@LQ@`p\\bbRTTaVRcUUUUS@@@\nfdqaQ@JDT{pPQEoCHhhihldYMRuUUMPHHP\nfdu@@@DjYee]}daZlGtP@@@@@@@@@\nfdu@@@DjYee]}faRlGtP@@@@@@@@@\nfdu@@@DjYee\x7F_daFtxLP@@@@@@@@@\nfdu@@@LdbbbbbTUHeRlXOh`@@@@@@@@@\nfdu@A`@QAHadQJHCDQbLbbbdtqTVeA\\TYuoSUUUUUT`@@\nfduAC`H`bBQCHbTQjHMD^bLbbbdttVLUNBTxHXsUUUUUU@@@\nfdu`@@@YHheEhTddj\\EHu`q@@@@@@@@@\nfdu`@@@YHhhhdeCejBd[S`q@@@@@@@@@\nfdu`@@@YHhhhhdhbZRUXp_Q@@@@@@@@@\nfdy@A`@XaLPVH[DCbQqDfYuygUgG^``JB@h@@@\nfdy@A`@XaLQfHKDUbNqDfYn\x7Ff_d`q`bHhH@@@@\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\nfdyAa@MAbBHQDIM_JztvBRUUP@UTt@@@\nfdyP`@AR@EJ[WUe]Yqwj@Bh@J@@@\nfdyhP@DTxIPCAcdTRbbURTRYrRfjVZjjh@@\nfdyi`@DTxIP@qrJIQQJiJILyISUKMUUT@@\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\nfgA@@@DjYU_VByHu`@@@@@@@\nfgA@@@LdbbbTVKIBMjp@@@@@@@\nfgA@P@@HEkHheHeEBRdmFluUMUU@@@\nfgA@`@@\\RfYe_irQmVh@`@H@@@\nfgAA`@@HLdrmlkQdmFluHADq@@@\nfgAH@@@XhiJYmg]gAJMXH`jeF@@\nfgAP@@@\\RfYe_irQmV@@@@@@@@\nfgAp@@@XheLvnjs`iFlDPT@@@@@\nfgApB@LLx@HRevUUpPTcViYj@H@@@\nfha@R@HHpPG`eUjjjjuUUUU@@@\nfhaH@@@\\DyJUUUWVjjjjj@@\nfhep`@BLT@NQQQQQQRq\\tJQkN|uLuUTuP@@\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\nfhi@`@@RrJJIIQFYHVoAZBA`@@@@\nfhi@c@ARAD\\B@qFQQIYRFIKTX{t@Dl@D@@@\nfhiA`@@B|dsLro~jqgM@D@AP@@@\nfhiHB@EZLDDQdTRVTTTQUFF]@A@QE@@@\nfhiHa@LTdFB@A@`cIIBhhddmmNMYZ`hJJD@@\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\nfhiP@@@ArJJIEJIJYgKN`HJ@B`@@\nfhiPA@BAADNbLbbbrrbRaYrwhHB`BH@@@\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\nfhiPb@OA``@QddabbRRvRkF\\m@@@E@@@\nfhiQA@BADBH]DYEEEeeDeBseoPPE@DP@@@\nfhiQ`@DX@pRSJswJ}N^BuSMA@P@@\nfhia@@E@rQQQHyJIHToAhJ@h@@@@\nfhia@@J@RfywVUxKpZB@f@@@Pe@\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\nfhiq@@DZBCHheEDeDceNmyj@@`B@@@\nfhiqB@IF]hDadTTTbfLVWE^CMUTmRt@@\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\nfhiqb@LJMAC`AFRRVIKIQKBd{rt@EMLP@@\nfhq@`@@NrQQJIJYHxRjBHbjh@@\nfhqXB@J\\dZpPAFRIJIJJqIBeUSMMUpHJ`\nfhy@C`@QAHadQJHuDFbOQFQQQRZZKFTxIS`sUUUUMP@@\nfhy@`@@HRY[fUWpPwgAZj@@@H@@@\nfhy@c@ARADDb@qBSLzjjkNJt{tDAU@D@@@\nfhyA@`A@bBQGh`LPdsNjjjsdeV]A@U@E@@@@\nfhyA`@@BMdTTTTTTVoEZ|xL@A@P@@@@\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@@@\nfhyA`@@Hldrlk[oQbcN|uHPQUP`@@\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\nfhyI`@LJMxD`yHhhhUEedRfcN}UUTBAT@@@\nfhyPA@B\\@DXBDif]WmRTekpZdHHjjH@@\nfhy``@A@|dsLsKnqVgVBt@Q@BP@@@\nfhyaB@K^@DISLjo{XhKRcT@@@Tt@@@\nfhyh@@@\\e[vRJJJJUIITxkQk@AA@uPP@@\nfkAA`@@TTeJwsLDDXkVcUUUUUP@@\nfle@B`@QAhbtPzHSDYEEDeCEHe\\s`XpDEATA@@@\nfle@Q`OAbdDPRHYDRbMQAhcHhhiMMEcEJ\\DjZjjjfZ`@@\nfleHb@LBdfB@AFRREQQIIZIZ][ru@@@EP@@@\nfleI@BHTDh@NaNQJJIIKQPi\\eEMA@eT@@@ar@\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\nfle`@@@YIEDeDThll[tTuSPP@@@BAH\nfle``@A@Pdrrr\x7FrjcQRuAPI@@@HJ`\nfle``@D`TeMrnkZ\x7FAAcPDET@D@@@\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\nfli@@@LdbVRRbbjTjjjjjj@@\nfliA@@@IJjjjjkUUUUUT@@\nfliAq@LDhkSo@BH^FRJQSIQUQ[TuUMSU@@@\nflm@@@DjYee]\x7FYhTkA}D@@@@@H@@@\nflm@@@DjYee\x7F]yHQmNCD@@@@@H@@@\nflm@@@DjYee\x7F_yHQmNCD@@@@@H@@@\nflm@@@LdbbbTRrJRxhQmNBd@@@@@`@@@\nflm@@@LdbbbTRvRQyHQmNbd@@@@H@@@@\nflm@@@LdbbbTVRcRXhQmNbd@@@B@@@@@\nflm@@@LdbbbbbTQnEjUcA}D@@@@@H@@@\nflm@@@LdbbbbbTUVDjUcA|d@@@@@`@@@\nflm@B@@AFQQQQQIJGKLdjqoQS@@@@@@@@@@\nflm@B@@RFQQQJKPiIILEIUgQS@@@@@@@@@@\nflm@B@@XfQQQQQIJGKLdjqoQS@@@@@@@@@@\nflmA@@@ILrrknjsdcV]EL@@@@@@@@@\nflm`@@@YHhhhdeElcPTcZ}EH@@@A@@@@@\nflm`@@@YHhhhhdhecRRkFcyH@@@@D@@@@\nflmaA@KQ@DPdLdtTRbtJfRyIVkNbfifZiZej@@\nfluAP@@B\\FJSLsLoJlUkudm@DPDLP@@@\nfluAP@@HdkrSKLvzjlxYtTmT`pQUP`@@\nfluAc`OARBHIDLbIQFh`tQDHrJJJSSQXiZgAJCFZjjjjfh@@\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@@\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\nfluQB@DXX@HRYUnYU\\eGQBejf`@@B@@@\nflu`a@BJ|CDebYEEEheDXdlpQkQSAADtB@P@@\nfluaP@E@EKt\\bbbbbRJRRXhshiZdF`bjb@@\nflua`@O@QGHheEDdebeJ\\UXsfh@@@ih@@@\nfluib@DTxIQhi@DYEDhheUDddsdeN|uRsUUUT@@\nflux@@@XIRRmYHhhldiUDdsdcQRA@AQ@@@@@\nflyAP@@HLxJSJkZrkzluT`DUT@@@\nfl}A@@@IRlrjkoAENJl[tTuP@@@@T@@@\nfl}A@@@YEEDhih]DdpTmZlxLTmSSTuJsT@@\nfl}A@@@YHdhheDddcAENJ]ZHTt@@@@@@@@@\nfl}AA`D`bBQCHbTPFHcDYEEEIibheEPWEFl{wdsUUUUUUT@@\nfl}aA@HF@DIdLdRbbRRtJR``cIFuXLZjjZjeif@@\nfoA@`@@VRfUYu^JLz``@B@@@\nfoAAB@A@bDfUmyVcKN`@j@@@@@\nfoAA`@@HXdrkkJdiYsTtp@PBGH\nfoAP@@@NRYWVUzLMZ@B`@`@@\nfoAP@@@XReeV]qZlyfjjjj@@\nfoAPB@KN@DISLjohmJMP@@AP@@@\nfoAPQ@LF`aV`AD`cIICDTiCJLlyZjiZj@@\nfoAP`@BZ@aInvYWejsfjiB@`@@\nfoA`@@@IKLrjzkF]u@@@@@@@\nfoA`@@@ILkjrmFV]@AL@@@ar@\nfoA`@@@IML|{wEFmUSA@R@@@\nfoA``@L@QdTVbbbblmV\\u@A@@@@@\nfoA`a@AZlBHYDYEDeDXhiSagPAESLP@@\nfoAaB@G\\ADILkkJ}FFm@AP@P@@@\nfoAa`@J@PIImeeWyJsfjZb@@@@\nfoAp@@@P\\eKLjorMjsP@@A@B@H\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\nfoIA@@@IRlkZ|DTyKUgUSUUJs@@@\nfoIA@@@IRlrj|DTxjqgUP@@AP@@@\nfoQ@b@BBADYEEDeMBdrPeV]AAP@A@@@\nfoQ@b@FRADILkZvmNRUYt@QP@D@@@\nfoQA`@@HldrmlrtYKUgMR@QSD@@\nfoQH@@@RM[IEDhmBdj\\DkQ`@@ajB@@\nfoQH@@@XhiJYmg^YpRcVBHJiXX@@\nfoQP@@@FRfYeUz\\e[S`@@@`@@@\nfoQP@@@FRfYeUz\\e[S`@`JbB@@\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\nfoQp@@@XdeLv{ZtyIUgAAE@@P@@\nfoQp@@@XidbbfbQRSNRUYpQAT@@@@@\ngBQ@@eJuT@@\ngBX@@eLUT@@\ngC`@Die@@\ngC`@H{P@\ngC`DADJHRZd@\ngC`DADZHRVXRP\ngC`DADZHRVx@\ngC`DAHJPRZd@\ngC`HADIKLIH\ngC`HAVIMT@@\ngC`HAbIKJ@@\ngC`LADJHtPduP@\ngC`LADJPt`duP@\ngC`LAVJluXduP@\ngC``Adej@@\ngCa@@dkH@\ngCa@@dmH@\ngCa@@dmP@\ngCa@@dmX@\ngCa@@dsP@\ngCa@@duP@\ngCaA@NRVd@\ngCaHH@bNt@@\ngCah@mJAIj`@\ngCahHl@bNj@@\ngCahHlGBNt@@\ngCahHlHRNj@@\ngCahhlAa]ncm@@\ngCaihlLr\\nwQz`@\ngCd@ADij@@\ngCd@ADkZ@@\ngCdDI`BHDRZh@\ngCh@@doH@\ngCh@@duP@\ngCi@DDfZ@@\ngFp@DiTt@@@\ngFp`@dfTujh@\ngFp`@df_Ejh@\ngFp`ATiTvjh@\ngFq@@eOKUU@@\ngFq`@ldrfmT`@\ngFr@ACTi[FZd@\ngFr@ACTi_FVh@\ngFt@ATigVVh@\ngFt@AdigUjX@\ngFtHE`DILikUP@\ngFu@E`drfmU@@\ngFx@@eJf`@@@\ngFx`LDdrfmU@@\ngFy@DDfXujh@\ngFy@JDiTvjh@\ngFy@LDeXvjh@\ngFy@LDi^Jnh@\ngGP@DiVj`@\ngGPBADJHLQXaInih@\ngGPBADJHtQXcHiCUp@\ngGPBAHJPLaYAInih@\ngGPBAHJPtaYCHiCUP@\ngGP`@TfYi`@\ngGP`ATeVj`@\ngGP`ATeVn`@\ngGP`ATiVj`@\ngGQ@@dkUT@@\ngGQ@@eMUT@@\ngGQLJHaQFbLbdMT`@\ngGQXHlZHROjj@@\ngGQ`@bdwMT@@\ngGQhHl@cIIBmP@\ngGQhHlLSIHTmP@\ngGQhHlOAJmZh@\ngGT@ADiVj`@\ngGU@E`dmmT@@\ngGXHD@aIUVd@\ngGXLJHaQFbLbdMU`@\ngGX`LDdsmT@@\ngGY@HDeVZaI@\ngGY@HDefZaH`\ngGYHLaDIMtu@@\ngG]HHjPDIJuS@@\ngJP@DjYd@\ngJPBADJHtPXaIjj@@\ngJPBADJHtPYAIjj@@\ngJPDADQpRZj`@\ngJPHADIKSP@\ngJPHADILth@\ngJPHAVILuP@\ngJPLADJHLPdwS@@\ngJPXHlPDQzt@@\ngJPXHlPLQzt@@\ngJP`@TeVd@\ngJP`@TeZh@\ngJP`@TfVd@\ngJP`@deVh@\ngJP`@dfvd@\ngJPlLQDPHTPduR`@\ngJQ@@dlu@@\ngJQ@@dmU@@\ngJQ@@duU@@\ngJQ@@eKU@@\ngJQDHG@nBUMT@@\ngJQHBHaIfe@@\ngJQHBLQIfe@@\ngJQ`@bdvu@@\ngJT@ADiYhRP\ngJT`E`TfVh@\ngJX@@dkU@@\ngJX@@dms@@\ngJX@@eKU@@\ngJX`LDdru@@\ngJY@DDfvd@\ngJYHC`DIKTp@\ngKP`@df\\Vj@@\ngKQ@@eKcRp@\ngKQ@@eKcUP@\ngKX@@eKcUP@\ngK\\@ADeKbuH@\ngNpXHlPDYIHTmT@@\ngNp`@dfVZf@@\ngNp`@df]Zi@@\ngNp`@dfzZj@@\ngNp`@teUZi@@\ngNplJqDJHtQdTaeUP@\ngNpmJqDJHtP~rJPrjX@\ngNq@@dssUP@\ngNq`AVeJmUP@\ngNqhHl@cIICej`@\ngNqhHlOAJkVj`@\ngNtDLpDDHRevnl@\ngNtHE`DILruT@@\ngNx@@eRmUP@\ngNx`LDdskUH@\ngNx`LDdskUP@\ngNx`LDdssUP@\ngNx`LFdjmUP@\ngNy`LDtf]Zj@@\ngN|@ADeJkUP``\ngN}HEbpDILzuR@@\ngOp@DjWkB@@@\ngOpHADILkW@@@@\ngOpXHlPDYIHUVmU@@\ngOp`@dfUMZf`@\ngOp`@dfVqZj`@\ngOp`@tiguif`@\ngOp`AdeekZZP@\ngOphH`DYIHUVmT`@\ngOq@@drm[UT@@\ngOq@@drm\\@@@@\ngOq`@fdrikTl@@\ngOq`@fdrikUL@@\ngOqhHl@cIIBjujh@\ngOtHE`DILl[MT`@\ngOx@@drm\\@@@@\ngOx@@drm]UT@@\ngOx@@eJqh@P@@\ngOxHDHaIeZx@@@\ngOy@DDfYKZj`@\ngOz@ACVeKNLuR@@\ngO|HDVHaIeZx@@@';
cggl.Lcom_actelion_research_chem_prediction_ToxicityPredictor_2_classLit = createForClass('com.actelion.research.chem.prediction', 'ToxicityPredictor', 441, cggl.Ljava_lang_Object_2_classLit);
carcr.$clinit_IReactionMapper = function $clinit_IReactionMapper(){
  carcr.$clinit_IReactionMapper = emptyMethod;
}
;
cggl.Lcom_actelion_research_chem_reaction_IReactionMapper_2_classLit = createForInterface('com.actelion.research.chem.reaction', 'IReactionMapper');
carcr.$clinit_Reaction = function $clinit_Reaction(){
  carcr.$clinit_Reaction = emptyMethod;
  jl.$clinit_Object();
}
;
carcr.Reaction = function Reaction(){
  carcr.$clinit_Reaction();
  Object_0.call(this);
  this.$init_128();
  this.mReactant = new ju.ArrayList;
  this.mProduct = new ju.ArrayList;
  this.mCatalyst = new ju.ArrayList;
  this.mMaxMapNo = -1;
  this.mIsFragment = false;
}
;
carcr.Reaction_0 = function Reaction_0(rxn){
  carcr.$clinit_Reaction();
  var c, i, i0, i1, p, r;
  carcr.Reaction.call(this);
  r = isNull(rxn)?0:isNull(rxn.mReactant)?0:rxn.mReactant.size();
  p = isNull(rxn)?0:isNull(rxn.mProduct)?0:rxn.mProduct.size();
  c = isNull(rxn)?0:isNull(rxn.mCatalyst)?0:rxn.mCatalyst.size();
  for (i0 = 0; i0 < r; i0++)
    this.mReactant.add(new carc2.StereoMolecule_1(rxn.getReactant_0(i0)));
  for (i1 = 0; i1 < p; i1++)
    this.mProduct.add(new carc2.StereoMolecule_1(rxn.getProduct_0(i1)));
  for (i = 0; i < c; i++)
    this.mCatalyst.add(new carc2.StereoMolecule_1(rxn.getCatalyst_0(i)));
  this.mDrawingObjectList = new carc2.DrawingObjectList(rxn.getDrawingObjects());
  if (jsNotEquals(rxn.mName, null))
    this.mName = rxn.mName;
  this.mIsFragment = rxn.isFragment_0();
}
;
carcr.Reaction_1 = function Reaction_1(mol, reactantCount){
  carcr.$clinit_Reaction();
  var i, i0;
  carcr.Reaction.call(this);
  if (jsNotEquals(mol, null)) {
    for (i0 = 0; i0 < reactantCount; i0++)
      this.mReactant.add(mol[i0]);
    for (i = reactantCount; i < mol.length; i++)
      this.mProduct.add(mol[i]);
  }
  this.mIsFragment = this.determineFragment();
}
;
defineClass(80, 1, {4:1, 1:1}, carcr.Reaction, carcr.Reaction_0, carcr.Reaction_1);
_.$init_128 = function $init_128(){
}
;
_.addCatalyst_0 = function addCatalyst(catalyst){
  this.mCatalyst.add(catalyst);
}
;
_.addCatalyst_1 = function addCatalyst_0(catalyst, position){
  this.mCatalyst.addAtIndex(position, catalyst);
}
;
_.addProduct_0 = function addProduct(product){
  this.mProduct.add(product);
  this.mMaxMapNo = -1;
}
;
_.addProduct_1 = function addProduct_0(product, position){
  this.mProduct.addAtIndex(position, product);
  this.mMaxMapNo = -1;
}
;
_.addReactant_0 = function addReactant(reactant){
  this.mReactant.add(reactant);
  this.mMaxMapNo = -1;
}
;
_.addReactant_1 = function addReactant_0(reactant, position){
  this.mReactant.addAtIndex(position, reactant);
  this.mMaxMapNo = -1;
}
;
_.clear_0 = function clear_6(){
  this.mReactant.clear();
  this.mProduct.clear();
  this.mCatalyst.clear();
  this.mDrawingObjectList = null;
  this.mMaxMapNo = -1;
}
;
_.determineFragment = function determineFragment(){
  var mol, mol$iterator, mol$iterator0;
  for (mol$iterator0 = this.mReactant.iterator(); mol$iterator0.hasNext_0();) {
    mol = castTo(mol$iterator0.next_3(), 19);
    if (mol.isFragment_0())
      return true;
  }
  for (mol$iterator = this.mProduct.iterator(); mol$iterator.hasNext_0();) {
    mol = castTo(mol$iterator.next_3(), 19);
    if (mol.isFragment_0())
      return true;
  }
  return false;
}
;
_.getAverageBondLength_0 = function getAverageBondLength_4(){
  var avbl, bondCount, i, mol;
  bondCount = 0;
  avbl = 0;
  for (i = 0; i < this.getMolecules_0(); i++) {
    mol = this.getMolecule_1(i);
    if (mol.getAllBonds_0() != 0) {
      bondCount += mol.getAllBonds_0();
      avbl += mol.getAverageBondLength_0() * mol.getAllBonds_0();
    }
  }
  return bondCount == 0?carc2.getDefaultAverageBondLength():avbl / bondCount;
}
;
_.getCatalyst_0 = function getCatalyst(no){
  return castTo(this.mCatalyst.getAtIndex(no), 19);
}
;
_.getCatalysts_0 = function getCatalysts(){
  return this.mCatalyst.size();
}
;
_.getDrawingObjects = function getDrawingObjects(){
  return this.mDrawingObjectList;
}
;
_.getHighestMapNo_0 = function getHighestMapNo(){
  var atom, i, mol;
  if (this.mMaxMapNo != -1)
    return this.mMaxMapNo;
  this.mMaxMapNo = 0;
  for (i = 0; i < this.getMolecules_0(); i++) {
    mol = this.getMolecule_1(i);
    for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
      if (this.mMaxMapNo < mol.getAtomMapNo_0(atom))
        this.mMaxMapNo = mol.getAtomMapNo_0(atom);
    }
  }
  return this.mMaxMapNo;
}
;
_.getMergedCopy_0 = function getMergedCopy(){
  var i, mergedReaction, product, reactant;
  mergedReaction = new carcr.Reaction;
  if (this.mReactant.size() != 0) {
    reactant = new carc2.StereoMolecule_1(castTo(this.mReactant.getAtIndex(0), 70));
    for (i = 1; i < this.mReactant.size(); i++)
      reactant.addMolecule_0(castTo(this.mReactant.getAtIndex(i), 70));
    mergedReaction.addReactant_0(reactant);
  }
  if (this.mProduct.size() != 0) {
    product = new carc2.StereoMolecule_1(castTo(this.mProduct.getAtIndex(0), 70));
    for (i = 1; i < this.mProduct.size(); i++)
      product.addMolecule_0(castTo(this.mProduct.getAtIndex(i), 70));
    mergedReaction.addProduct_0(product);
  }
  return mergedReaction;
}
;
_.getMolecule_1 = function getMolecule_4(no){
  return no < this.mReactant.size()?castTo(this.mReactant.getAtIndex(no), 19):castTo(this.mProduct.getAtIndex(no - this.mReactant.size()), 19);
}
;
_.getMolecules_0 = function getMolecules(){
  return this.mReactant.size() + this.mProduct.size();
}
;
_.getName_0 = function getName_1(){
  return jsEquals(this.mName, null)?'':this.mName;
}
;
_.getProduct_0 = function getProduct(no){
  return castTo(this.mProduct.getAtIndex(no), 19);
}
;
_.getProducts_0 = function getProducts(){
  return this.mProduct.size();
}
;
_.getReactant_0 = function getReactant(no){
  return castTo(this.mReactant.getAtIndex(no), 19);
}
;
_.getReactants_0 = function getReactants(){
  return this.mReactant.size();
}
;
_.getReactionCenterMapNos_0 = function getReactionCenterMapNos(){
  var atom, connMapNo, connMapNoFound, i, i0, isReactionCenter, j, k, l, mapNo, mapNo2Atom, maxMapNo, pAtom, pBond, product, productConnMapNo, rAtom, rBond, reactant;
  if (this.getReactants_0() == 0 || this.getProducts_0() == 0)
    return null;
  maxMapNo = this.getHighestMapNo_0();
  if (maxMapNo == 0)
    return null;
  mapNo2Atom = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.getProducts_0(), 0, 2);
  for (i0 = 0; i0 < this.getProducts_0(); i0++) {
    product = this.getProduct_0(i0);
    product.ensureHelperArrays_0(15);
    mapNo2Atom[i0] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, maxMapNo + 1, 15, 1);
    ju.fill_0(mapNo2Atom[i0], -1);
    for (atom = 0; atom < product.getAllAtoms_0(); atom++) {
      mapNo = product.getAtomMapNo_0(atom);
      if (mapNo != 0 && mapNo2Atom[i0][mapNo] != -1)
        return null;
      mapNo2Atom[i0][mapNo] = atom;
    }
  }
  isReactionCenter = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, maxMapNo + 1, 16, 1);
  for (i = 0; i < this.getReactants_0(); i++) {
    reactant = this.getReactant_0(i);
    reactant.ensureHelperArrays_0(15);
    for (rAtom = 0; rAtom < reactant.getAllAtoms_0(); rAtom++) {
      mapNo = reactant.getAtomMapNo_0(rAtom);
      if (mapNo != 0 && !isReactionCenter[mapNo]) {
        for (j = 0; j < this.getProducts_0(); j++) {
          pAtom = mapNo2Atom[j][mapNo];
          if (pAtom != -1) {
            product = this.getProduct_0(j);
            if (reactant.getConnAtoms_0(rAtom) != product.getConnAtoms_0(pAtom)) {
              isReactionCenter[mapNo] = true;
              break;
            }
            if (reactant.getAtomParity_0(rAtom) != product.getAtomParity_0(pAtom)) {
              isReactionCenter[mapNo] = true;
              break;
            }
            for (k = 0; k < reactant.getConnAtoms_0(rAtom); k++) {
              connMapNo = reactant.getAtomMapNo_0(reactant.getConnAtom_0(rAtom, k));
              if (connMapNo == 0) {
                isReactionCenter[mapNo] = true;
              }
               else {
                rBond = reactant.getConnBond_0(rAtom, k);
                connMapNoFound = false;
                for (l = 0; l < product.getConnAtoms_0(pAtom); l++) {
                  productConnMapNo = product.getAtomMapNo_0(product.getConnAtom_0(pAtom, l));
                  if (productConnMapNo == 0) {
                    isReactionCenter[mapNo] = true;
                    break;
                  }
                  if (productConnMapNo == connMapNo) {
                    connMapNoFound = true;
                    pBond = product.getConnBond_0(pAtom, l);
                    if (reactant.isDelocalizedBond_0(rBond) ^ product.isDelocalizedBond_0(pBond) || !reactant.isDelocalizedBond_0(rBond) && (reactant.getBondOrder_0(rBond) != product.getBondOrder_0(pBond) || reactant.getBondParity_0(rBond) != product.getBondParity_0(pBond))) {
                      isReactionCenter[mapNo] = true;
                      isReactionCenter[connMapNo] = true;
                      break;
                    }
                    break;
                  }
                }
                if (!connMapNoFound) {
                  isReactionCenter[mapNo] = true;
                }
              }
            }
          }
        }
      }
    }
  }
  return isReactionCenter;
}
;
_.isEmpty_0 = function isEmpty_1(){
  var mol, mol$iterator, mol$iterator0, mol$iterator1;
  for (mol$iterator0 = this.mReactant.iterator(); mol$iterator0.hasNext_0();) {
    mol = castTo(mol$iterator0.next_3(), 19);
    if (mol.getAllAtoms_0() != 0)
      return false;
  }
  for (mol$iterator1 = this.mProduct.iterator(); mol$iterator1.hasNext_0();) {
    mol = castTo(mol$iterator1.next_3(), 19);
    if (mol.getAllAtoms_0() != 0)
      return false;
  }
  for (mol$iterator = this.mCatalyst.iterator(); mol$iterator.hasNext_0();) {
    mol = castTo(mol$iterator.next_3(), 19);
    if (mol.getAllAtoms_0() != 0)
      return false;
  }
  return true;
}
;
_.isFragment_0 = function isFragment_1(){
  return this.mIsFragment || this.determineFragment();
}
;
_.isPerfectlyMapped_0 = function isPerfectlyMapped(){
  var atom, atoms, isUsed, mapNo, maxMapNo, product, product$iterator, product$iterator0, reactant, reactant$iterator, reactant$iterator0;
  atoms = 0;
  for (reactant$iterator0 = this.mReactant.iterator(); reactant$iterator0.hasNext_0();) {
    reactant = castTo(reactant$iterator0.next_3(), 19);
    reactant.ensureHelperArrays_0(1);
    if (reactant.isFragment_0()) {
      for (atom = 0; atom < reactant.getAtoms_0(); atom++) {
        if (eq(and_0(reactant.getAtomQueryFeatures(atom), 536870912), 0))
          atoms++;
        else if (reactant.getAtomMapNo_0(atom) != 0)
          return false;
      }
    }
     else {
      atoms += reactant.getAtoms_0();
    }
  }
  for (product$iterator0 = this.mProduct.iterator(); product$iterator0.hasNext_0();) {
    product = castTo(product$iterator0.next_3(), 19);
    product.ensureHelperArrays_0(1);
    if (product.isFragment_0()) {
      for (atom = 0; atom < product.getAtoms_0(); atom++) {
        if (eq(and_0(product.getAtomQueryFeatures(atom), 536870912), 0))
          atoms--;
        else if (product.getAtomMapNo_0(atom) != 0)
          return false;
      }
    }
     else {
      atoms -= product.getAtoms_0();
    }
  }
  if (atoms != 0)
    return false;
  maxMapNo = this.getHighestMapNo_0();
  isUsed = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, maxMapNo + 1, 16, 1);
  for (reactant$iterator = this.mReactant.iterator(); reactant$iterator.hasNext_0();) {
    reactant = castTo(reactant$iterator.next_3(), 19);
    for (atom = 0; atom < reactant.getAtoms_0(); atom++) {
      if (!reactant.isFragment_0() || eq(and_0(reactant.getAtomQueryFeatures(atom), 536870912), 0)) {
        mapNo = reactant.getAtomMapNo_0(atom);
        if (isUsed[mapNo])
          return false;
        isUsed[mapNo] = true;
      }
    }
  }
  for (product$iterator = this.mProduct.iterator(); product$iterator.hasNext_0();) {
    product = castTo(product$iterator.next_3(), 19);
    product.ensureHelperArrays_0(1);
    for (atom = 0; atom < product.getAtoms_0(); atom++) {
      if (!product.isFragment_0() || eq(and_0(product.getAtomQueryFeatures(atom), 536870912), 0)) {
        mapNo = product.getAtomMapNo_0(atom);
        if (mapNo >= maxMapNo || !isUsed[mapNo])
          return false;
        isUsed[mapNo] = false;
      }
    }
  }
  return true;
}
;
_.isReactionLayoutRequired_0 = function isReactionLayoutRequired(){
  var avbl, i, j, r;
  if (this.getMolecules_0() <= 1)
    return false;
  avbl = this.getAverageBondLength_0();
  r = initUnidimensionalArray(cggl.Lcom_actelion_research_gui_generic_GenericRectangle_2_classLit, {4:1, 1:1, 7:1}, 34, this.getMolecules_0(), 0, 1);
  for (i = 0; i < this.getMolecules_0(); i++) {
    setCheck(r, i, this.getMolecule_1(i).getBounds_0(castTo(null, 34)));
    if (isNotNull(r[i])) {
      for (j = 0; j < i; j++) {
        if (isNotNull(r[j])) {
          if (r[i].x_0 + r[i].width_0 >= r[j].x_0 && r[i].x_0 <= r[j].x_0 + r[j].width_0)
            return true;
          if (r[i].y_0 + r[i].height_0 >= r[j].y_0 && r[i].y_0 <= r[j].y_0 + r[j].height_0)
            return true;
        }
      }
      if (i != 0 && isNotNull(r[i - 1])) {
        if (r[i].x_0 - r[i - 1].x_0 - r[i].width_0 > 5 * avbl)
          return true;
        if (r[i].y_0 - r[i - 1].y_0 - r[i].height_0 > 5 * avbl)
          return true;
      }
    }
  }
  return false;
}
;
_.removeCatalysts_0 = function removeCatalysts(){
  this.mCatalyst.clear();
}
;
_.setDrawingObjects = function setDrawingObjects(l){
  this.mDrawingObjectList = l;
}
;
_.setFragment_0 = function setFragment_3(f){
  var mol, mol$iterator, mol$iterator0;
  this.mIsFragment = f;
  for (mol$iterator0 = this.mReactant.iterator(); mol$iterator0.hasNext_0();) {
    mol = castTo(mol$iterator0.next_3(), 19);
    mol.setFragment_0(f);
  }
  for (mol$iterator = this.mProduct.iterator(); mol$iterator.hasNext_0();) {
    mol = castTo(mol$iterator.next_3(), 19);
    mol.setFragment_0(f);
  }
}
;
_.setName_0 = function setName_1(name_0){
  this.mName = name_0;
}
;
_.validateMapping_0 = function validateMapping(){
  var i, i0, i1, i2, i3, j, mapNo, mapNo0, mapNoInProduct, mapNoInReactant, maxMapNo, newMapNo, product, reactant;
  maxMapNo = this.getHighestMapNo_0();
  mapNoInReactant = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, maxMapNo + 1, 16, 1);
  for (i0 = 0; i0 < this.mReactant.size(); i0++) {
    reactant = castTo(this.mReactant.getAtIndex(i0), 19);
    for (j = 0; j < reactant.getAllAtoms_0(); j++) {
      mapNo0 = reactant.getAtomMapNo_0(j);
      if (mapNo0 != 0) {
        if (mapNoInReactant[mapNo0])
          throw toJs(new jl.Exception_1('Duplicate mapping no in reactants'));
        mapNoInReactant[mapNo0] = true;
      }
    }
  }
  mapNoInProduct = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, maxMapNo + 1, 16, 1);
  for (i1 = 0; i1 < this.mProduct.size(); i1++) {
    product = castTo(this.mProduct.getAtIndex(i1), 19);
    for (j = 0; j < product.getAllAtoms_0(); j++) {
      mapNo0 = product.getAtomMapNo_0(j);
      if (mapNo0 != 0) {
        if (mapNoInProduct[mapNo0])
          throw toJs(new jl.Exception_1('Duplicate mapping no in products'));
        mapNoInProduct[mapNo0] = true;
      }
    }
  }
  newMapNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, maxMapNo + 1, 15, 1);
  mapNo = 0;
  for (i2 = 1; i2 <= maxMapNo; i2++)
    if (mapNoInReactant[i2] && mapNoInProduct[i2])
      newMapNo[i2] = ++mapNo;
  if (mapNo != maxMapNo) {
    for (i3 = 0; i3 < this.mReactant.size(); i3++) {
      reactant = castTo(this.mReactant.getAtIndex(i3), 19);
      for (j = 0; j < reactant.getAllAtoms_0(); j++)
        reactant.setAtomMapNo_0(j, newMapNo[reactant.getAtomMapNo_0(j)], reactant.isAutoMappedAtom_0(j));
    }
    for (i = 0; i < this.mProduct.size(); i++) {
      product = castTo(this.mProduct.getAtIndex(i), 19);
      for (j = 0; j < product.getAllAtoms_0(); j++)
        product.setAtomMapNo_0(j, newMapNo[product.getAtomMapNo_0(j)], product.isAutoMappedAtom_0(j));
    }
  }
}
;
_.mIsFragment = false;
_.mMaxMapNo = 0;
carcr.serialVersionUID_6 = 537316094;
cggl.Lcom_actelion_research_chem_reaction_Reaction_2_classLit = createForClass('com.actelion.research.chem.reaction', 'Reaction', 80, cggl.Ljava_lang_Object_2_classLit);
carcr.$clinit_ReactionArrow = function $clinit_ReactionArrow(){
  carcr.$clinit_ReactionArrow = emptyMethod;
  carc2.$clinit_AbstractDrawingObject();
}
;
carcr.ReactionArrow = function ReactionArrow(){
  carc2.AbstractDrawingObject.call(this);
  this.$init_129();
  this.mPoint = initUnidimensionalArray(cggl.Lcom_actelion_research_gui_generic_GenericPoint_2_classLit, {4:1, 1:1, 7:1}, 30, 2, 0, 1);
  setCheck(this.mPoint, 0, new cargg.GenericPoint);
  setCheck(this.mPoint, 1, new cargg.GenericPoint);
  this.mHiliteStatus = 0;
}
;
carcr.ReactionArrow_0 = function ReactionArrow_0(descriptorDetail){
  carcr.$clinit_ReactionArrow();
  var index1, index2, key, nfe, value_0;
  carcr.ReactionArrow.call(this);
  index1 = 0;
  while (index1 != -1) {
    index2 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(descriptorDetail, '="', index1);
    if (index2 == -1)
      break;
    key = jl.substring_II_Ljava_lang_String___devirtual$(descriptorDetail, index1 + 1, index2);
    index1 = jl.indexOf_Ljava_lang_String_I_I__devirtual$(descriptorDetail, '"', index2 + 2);
    value_0 = index1 == -1?jl.substring_I_Ljava_lang_String___devirtual$(descriptorDetail, index2 + 1):jl.substring_II_Ljava_lang_String___devirtual$(descriptorDetail, index2 + 1, index1);
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'x1'))
      try {
        this.mPoint[0].x_0 = parseFloat_0(value_0);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 61)) {
          nfe = $e0;
        }
         else 
          throw toJs($e0);
      }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'y1'))
      try {
        this.mPoint[0].y_0 = parseFloat_0(value_0);
      }
       catch ($e1) {
        $e1 = toJava($e1);
        if (instanceOf($e1, 61)) {
          nfe = $e1;
        }
         else 
          throw toJs($e1);
      }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'x2'))
      try {
        this.mPoint[1].x_0 = parseFloat_0(value_0);
      }
       catch ($e2) {
        $e2 = toJava($e2);
        if (instanceOf($e2, 61)) {
          nfe = $e2;
        }
         else 
          throw toJs($e2);
      }
     else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(key, 'y2'))
      try {
        this.mPoint[1].y_0 = parseFloat_0(value_0);
      }
       catch ($e3) {
        $e3 = toJava($e3);
        if (instanceOf($e3, 61)) {
          nfe = $e3;
        }
         else 
          throw toJs($e3);
      }
  }
}
;
defineClass(295, 107, {107:1, 1:1}, carcr.ReactionArrow, carcr.ReactionArrow_0);
_.$init_129 = function $init_129(){
}
;
_.clone_0 = function clone_0(){
  var arrow;
  arrow = new carcr.ReactionArrow;
  arrow.mPoint[0].x_0 = this.mPoint[0].x_0;
  arrow.mPoint[0].y_0 = this.mPoint[0].y_0;
  arrow.mPoint[1].x_0 = this.mPoint[1].x_0;
  arrow.mPoint[1].y_0 = this.mPoint[1].y_0;
  arrow.mIsSelected = this.mIsSelected;
  return arrow;
}
;
_.contains_0 = function contains_4(x_0, y_0){
  return this.findPart(x_0, y_0) != 0;
}
;
_.findPart = function findPart(x_0, y_0){
  var arrowLength, distanceToEnd, distanceToStart;
  distanceToStart = $wnd.Math.sqrt((this.mPoint[0].x_0 - x_0) * (this.mPoint[0].x_0 - x_0) + (this.mPoint[0].y_0 - y_0) * (this.mPoint[0].y_0 - y_0));
  if (distanceToStart < 8)
    return 1;
  distanceToEnd = $wnd.Math.sqrt((this.mPoint[1].x_0 - x_0) * (this.mPoint[1].x_0 - x_0) + (this.mPoint[1].y_0 - y_0) * (this.mPoint[1].y_0 - y_0));
  if (distanceToEnd < 8)
    return 2;
  arrowLength = $wnd.Math.sqrt((this.mPoint[1].x_0 - this.mPoint[0].x_0) * (this.mPoint[1].x_0 - this.mPoint[0].x_0) + (this.mPoint[1].y_0 - this.mPoint[0].y_0) * (this.mPoint[1].y_0 - this.mPoint[0].y_0));
  if (distanceToStart + distanceToEnd < arrowLength + 5)
    return 3;
  return 0;
}
;
_.getDescriptorDetail = function getDescriptorDetail_0(){
  var detail;
  detail = new jl.StringBuilder;
  detail.append_9(' x1="' + this.mPoint[0].x_0 + '"');
  detail.append_9(' y1="' + this.mPoint[0].y_0 + '"');
  detail.append_9(' x2="' + this.mPoint[1].x_0 + '"');
  detail.append_9(' y2="' + this.mPoint[1].y_0 + '"');
  return detail.toString_0();
}
;
_.getTypeString = function getTypeString_0(){
  return 'arrow';
}
;
_.isOnProductSide = function isOnProductSide(x_0, y_0){
  var dx, dy, m, mx, my, sx;
  dx = this.mPoint[1].x_0 - this.mPoint[0].x_0;
  dy = this.mPoint[1].y_0 - this.mPoint[0].y_0;
  mx = (this.mPoint[0].x_0 + this.mPoint[1].x_0) / 2;
  my = (this.mPoint[0].y_0 + this.mPoint[1].y_0) / 2;
  if (dx == 0)
    return dy < 0 ^ y_0 > my;
  if (dy == 0)
    return dx < 0 ^ x_0 > mx;
  m = -dx / dy;
  sx = (this.mPoint[0].x_0 + m * m * x_0 - m * y_0 + m * this.mPoint[0].y_0) / (1 + m * m);
  return dx < 0 ^ sx > mx;
}
;
_.translate_0 = function translate_1(x_0, y_0){
  switch (this.mHiliteStatus) {
    case 1:
      this.mPoint[0].x_0 = this.mTransformationValue1[0] + x_0 - this.mTransformationReferenceX;
      this.mPoint[0].y_0 = this.mTransformationValue2[0] + y_0 - this.mTransformationReferenceY;
      break;
    case 2:
      this.mPoint[1].x_0 = this.mTransformationValue1[1] + x_0 - this.mTransformationReferenceX;
      this.mPoint[1].y_0 = this.mTransformationValue2[1] + y_0 - this.mTransformationReferenceY;
      break;
    default:getClassPrototype(107).translate_0.call(this, x_0, y_0);
      break;
  }
}
;
_.mHiliteStatus = 0;
carcr.PART_ARROW = 3;
carcr.PART_ARROW_END = 2;
carcr.PART_ARROW_START = 1;
carcr.PART_NONE = 0;
carcr.TYPE_STRING_0 = 'arrow';
cggl.Lcom_actelion_research_chem_reaction_ReactionArrow_2_classLit = createForClass('com.actelion.research.chem.reaction', 'ReactionArrow', 295, cggl.Lcom_actelion_research_chem_AbstractDrawingObject_2_classLit);
carcr.$clinit_ReactionEncoder = function $clinit_ReactionEncoder(){
  carcr.$clinit_ReactionEncoder = emptyMethod;
  jl.$clinit_Object();
  carcr.INCLUDE_DEFAULT = 1 | 2;
}
;
carcr.decode_0 = function decode_0(rxnCode, rxnMapping, rxnCoords, rxnObjects, rxnCatalysts, ensureCoordinates, rxn){
  var coords, coordsIndex, delimiterIndex, idcode, idcodeIndex, index1, index2, isProduct, mapping, mappingIndex, mol, parser, productIndex;
  if (jsEquals(rxnCode, null) || jl.length__I__devirtual$_0(rxnCode) == 0) {
    return null;
  }
  isProduct = false;
  idcodeIndex = 0;
  mappingIndex = 0;
  coordsIndex = 0;
  productIndex = jl.indexOf_I_I__devirtual$(rxnCode, 33);
  if (productIndex == -1) {
    return null;
  }
  if (isNull(rxn))
    rxn = new carcr.Reaction;
  else 
    rxn.clear_0();
  while (idcodeIndex != -1) {
    if (idcodeIndex > productIndex) {
      isProduct = true;
    }
    delimiterIndex = jl.indexOf_II_I__devirtual$(rxnCode, 32, idcodeIndex);
    if (!isProduct && (delimiterIndex > productIndex || delimiterIndex == -1)) {
      delimiterIndex = productIndex;
    }
    idcode = null;
    if (delimiterIndex == -1) {
      idcode = jl.substring_I_Ljava_lang_String___devirtual$(rxnCode, idcodeIndex);
      idcodeIndex = -1;
    }
     else {
      idcode = jl.substring_II_Ljava_lang_String___devirtual$(rxnCode, idcodeIndex, delimiterIndex);
      idcodeIndex = delimiterIndex + 1;
    }
    mapping = null;
    if (jsNotEquals(rxnMapping, null) && jl.length__I__devirtual$_0(rxnMapping) != 0) {
      delimiterIndex = jl.indexOf_II_I__devirtual$(rxnMapping, 32, mappingIndex);
      if (delimiterIndex == -1) {
        mapping = jl.substring_I_Ljava_lang_String___devirtual$(rxnMapping, mappingIndex);
      }
       else {
        mapping = jl.substring_II_Ljava_lang_String___devirtual$(rxnMapping, mappingIndex, delimiterIndex);
        mappingIndex = delimiterIndex + 1;
      }
    }
    coords = null;
    if (jsNotEquals(rxnCoords, null) && jl.length__I__devirtual$_0(rxnCoords) != 0) {
      delimiterIndex = jl.indexOf_II_I__devirtual$(rxnCoords, 32, coordsIndex);
      if (delimiterIndex == -1) {
        coords = jl.substring_I_Ljava_lang_String___devirtual$(rxnCoords, coordsIndex);
      }
       else {
        coords = jl.substring_II_Ljava_lang_String___devirtual$(rxnCoords, coordsIndex, delimiterIndex);
        coordsIndex = delimiterIndex + 1;
      }
    }
    parser = new carc2.IDCodeParser_0(ensureCoordinates);
    mol = parser.getCompactMolecule_0(idcode, coords);
    if (jsNotEquals(mapping, null)) {
      parser.parseMapping(jl.getBytes_Ljava_nio_charset_Charset___B__devirtual$(mapping, (jnc.$clinit_StandardCharsets() , jnc.UTF_8)));
    }
    if (isProduct) {
      rxn.addProduct_0(mol);
    }
     else {
      rxn.addReactant_0(mol);
    }
  }
  if (jsNotEquals(rxnObjects, null) && jl.length__I__devirtual$_0(rxnObjects) != 0) {
    rxn.setDrawingObjects(new carc2.DrawingObjectList_0(rxnObjects));
  }
  if (jsNotEquals(rxnCatalysts, null) && jl.length__I__devirtual$_0(rxnCatalysts) != 0) {
    parser = new carc2.IDCodeParser_0(ensureCoordinates);
    index1 = 0;
    index2 = jl.indexOf_I_I__devirtual$(rxnCatalysts, 43);
    while (index2 != -1) {
      rxn.addCatalyst_0(parser.getCompactMolecule(jl.substring_II_Ljava_lang_String___devirtual$(rxnCatalysts, index1, index2)));
      index1 = index2 + 1;
      index2 = jl.indexOf_II_I__devirtual$(rxnCatalysts, 43, index1);
    }
    rxn.addCatalyst_0(parser.getCompactMolecule(jl.substring_I_Ljava_lang_String___devirtual$(rxnCatalysts, index1)));
  }
  return rxn;
}
;
carcr.decode_1 = function decode_1(s, ensureCoordinates, rxn){
  carcr.$clinit_ReactionEncoder();
  var index1, index2, index3, index4, rxnCatalysts, rxnCode, rxnCoords, rxnMapping, rxnObjects;
  if (jsEquals(s, null))
    return null;
  rxnCode = s;
  rxnMapping = null;
  rxnCoords = null;
  rxnObjects = null;
  rxnCatalysts = null;
  index1 = jl.indexOf_I_I__devirtual$(s, 35);
  if (index1 == -1) {
    rxnCode = s;
  }
   else {
    rxnCode = jl.substring_II_Ljava_lang_String___devirtual$(s, 0, index1);
    index2 = jl.indexOf_II_I__devirtual$(s, 35, index1 + 1);
    if (index2 == -1) {
      rxnMapping = jl.substring_I_Ljava_lang_String___devirtual$(s, index1 + 1);
    }
     else {
      rxnMapping = jl.substring_II_Ljava_lang_String___devirtual$(s, index1 + 1, index2);
      index3 = jl.indexOf_II_I__devirtual$(s, 35, index2 + 1);
      if (index3 == -1) {
        rxnCoords = jl.substring_I_Ljava_lang_String___devirtual$(s, index2 + 1);
      }
       else {
        rxnCoords = jl.substring_II_Ljava_lang_String___devirtual$(s, index2 + 1, index3);
        index4 = jl.indexOf_II_I__devirtual$(s, 35, index3 + 1);
        if (index4 == -1) {
          rxnObjects = jl.substring_I_Ljava_lang_String___devirtual$(s, index3 + 1);
        }
         else {
          rxnObjects = jl.substring_II_Ljava_lang_String___devirtual$(s, index3 + 1, index4);
          rxnCatalysts = jl.substring_I_Ljava_lang_String___devirtual$(s, index4 + 1);
        }
      }
    }
  }
  return carcr.decode_0(rxnCode, rxnMapping, rxnCoords, rxnObjects, rxnCatalysts, ensureCoordinates, rxn);
}
;
carcr.encode = function encode(reaction, keepAbsoluteCoordinates, mode){
  carcr.$clinit_ReactionEncoder();
  var buf, result;
  result = carcr.encode_0(reaction, keepAbsoluteCoordinates, (mode & 16) == 0);
  if (jsEquals(result, null)) {
    return null;
  }
  buf = new jl.StringBuffer_1(result[0]);
  if (mode != 0) {
    buf.append_0(35);
    if ((mode & 1) != 0 && result.length > 1 && jsNotEquals(result[1], null)) {
      buf.append_2(result[1]);
    }
  }
  mode &= ~1;
  if (mode != 0) {
    buf.append_0(35);
    if ((mode & 2) != 0 && result.length > 2 && jsNotEquals(result[2], null)) {
      buf.append_2(result[2]);
    }
  }
  mode &= ~2;
  if (mode != 0) {
    buf.append_0(35);
    if ((mode & 4) != 0 && result.length > 3 && jsNotEquals(result[3], null)) {
      buf.append_2(result[3]);
    }
  }
  mode &= ~4;
  if (mode != 0) {
    buf.append_0(35);
    if ((mode & 8) != 0 && result.length > 4 && jsNotEquals(result[4], null)) {
      buf.append_2(result[4]);
    }
  }
  return buf.toString_0();
}
;
carcr.encode_0 = function encode_0(reaction, keepAbsoluteCoordinates, sortByIDCode){
  var atom, canonizer, coords, coordsSequence, i, i0, i1, idcode, idcodeSequence, index_0, j, mapping, mappingSequence, maxString, mol, result;
  if (isNull(reaction) || reaction.getReactants_0() == 0 || reaction.getProducts_0() == 0) {
    return null;
  }
  idcode = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, reaction.getMolecules_0(), 6, 1);
  mapping = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, reaction.getMolecules_0(), 6, 1);
  coords = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, reaction.getMolecules_0(), 6, 1);
  for (i0 = 0; i0 < reaction.getMolecules_0(); i0++) {
    mol = reaction.getMolecule_1(i0);
    if (mol.isFragment_0() && i0 < reaction.getReactants_0())
      for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
        mol.setAtomQueryFeature(atom, 3221225472, false);
    canonizer = new carc2.Canonizer(mol);
    idcode[i0] = canonizer.getIDCode_0();
    if (jsEquals(idcode[i0], null)) {
      return null;
    }
    mapping[i0] = canonizer.getEncodedMapping();
    coords[i0] = canonizer.getEncodedCoordinates_0(keepAbsoluteCoordinates);
  }
  idcodeSequence = new jl.StringBuilder;
  coordsSequence = new jl.StringBuilder;
  mappingSequence = new jl.StringBuilder;
  for (i1 = 0; i1 < reaction.getReactants_0(); i1++) {
    index_0 = i1;
    if (sortByIDCode) {
      maxString = '';
      index_0 = -1;
      for (j = 0; j < reaction.getReactants_0(); j++) {
        if (jl.compareTo_Ljava_lang_String__I__devirtual$(maxString, idcode[j]) < 0) {
          maxString = idcode[j];
          index_0 = j;
        }
      }
    }
    if (i1 > 0) {
      idcodeSequence.append_4(32);
      mappingSequence.append_4(32);
      coordsSequence.append_4(32);
    }
    idcodeSequence.append_9(idcode[index_0]);
    mappingSequence.append_9(mapping[index_0]);
    coordsSequence.append_9(coords[index_0]);
    idcode[index_0] = '';
  }
  idcodeSequence.append_4(33);
  mappingSequence.append_4(32);
  coordsSequence.append_4(32);
  for (i = reaction.getReactants_0(); i < reaction.getMolecules_0(); i++) {
    index_0 = i;
    if (sortByIDCode) {
      maxString = '';
      index_0 = -1;
      for (j = reaction.getReactants_0(); j < reaction.getMolecules_0(); j++) {
        if (jl.compareTo_Ljava_lang_String__I__devirtual$(maxString, idcode[j]) < 0) {
          maxString = idcode[j];
          index_0 = j;
        }
      }
    }
    if (i > reaction.getReactants_0()) {
      idcodeSequence.append_4(32);
      mappingSequence.append_4(32);
      coordsSequence.append_4(32);
    }
    idcodeSequence.append_9(idcode[index_0]);
    mappingSequence.append_9(mapping[index_0]);
    coordsSequence.append_9(coords[index_0]);
    idcode[index_0] = '';
  }
  result = initUnidimensionalArray(cggl.Ljava_lang_String_2_classLit, {4:1, 1:1, 7:1, 15:1}, 2, 5, 6, 1);
  result[0] = idcodeSequence.toString_0();
  if (mappingSequence.length_0() > reaction.getMolecules_0() - 1) {
    result[1] = mappingSequence.toString_0();
  }
  if (coordsSequence.length_0() > reaction.getMolecules_0() - 1) {
    result[2] = coordsSequence.toString_0();
  }
  if (isNotNull(reaction.getDrawingObjects())) {
    result[3] = reaction.getDrawingObjects().toString_0();
  }
  if (reaction.getCatalysts_0() != 0) {
    result[4] = carcr.encodeCatalysts(reaction, keepAbsoluteCoordinates);
  }
  return result;
}
;
carcr.encodeCatalysts = function encodeCatalysts(reaction, keepAbsoluteCoordinates){
  var canonizer, i, sb;
  sb = new jl.StringBuilder;
  for (i = 0; i < reaction.getCatalysts_0(); i++) {
    if (sb.length_0() != 0)
      sb.append_4(43);
    canonizer = new carc2.Canonizer(reaction.getCatalyst_0(i));
    sb.append_9(canonizer.getIDCode_0());
    if (keepAbsoluteCoordinates) {
      sb.append_9(' ');
      sb.append_9(canonizer.getEncodedCoordinates_0(true));
    }
  }
  return sb.toString_0();
}
;
defineClass(975, 1, {1:1});
carcr.CATALYST_DELIMITER = 43;
carcr.INCLUDE_ALL = 15;
carcr.INCLUDE_CATALYSTS = 8;
carcr.INCLUDE_COORDS = 2;
carcr.INCLUDE_DEFAULT = 0;
carcr.INCLUDE_DRAWING_OBJECTS = 4;
carcr.INCLUDE_MAPPING = 1;
carcr.INCLUDE_RXN_CODE_ONLY = 0;
carcr.MOLECULE_DELIMITER = 32;
carcr.MOLECULE_DELIMITER_STRING = ' ';
carcr.OBJECT_DELIMITER = 35;
carcr.OBJECT_DELIMITER_STRING = '#';
carcr.PRODUCT_IDENTIFIER = 33;
carcr.RETAIN_REACTANT_AND_PRODUCT_ORDER = 16;
cggl.Lcom_actelion_research_chem_reaction_ReactionEncoder_2_classLit = createForClass('com.actelion.research.chem.reaction', 'ReactionEncoder', 975, cggl.Ljava_lang_Object_2_classLit);
carcr.$clinit_Reactor = function $clinit_Reactor(){
  carcr.$clinit_Reactor = emptyMethod;
  jl.$clinit_Object();
}
;
carcr.Reactor = function Reactor(reaction, mode, maxProducts){
  var dif, i, i0, i1, i2, j, k, l, mapNo, product, reactant;
  Object_0.call(this);
  this.$init_130();
  this.mRetainCoordinates = (mode & 1) != 0;
  this.mFullyMapReactions = (mode & 2) != 0;
  this.mUniqueProductsOnly = (mode & 4) != 0;
  this.mAllowChargeCorrections = (mode & 8) != 0;
  this.mMaxCount = maxProducts;
  this.mGenericReaction = reaction;
  this.mReactant = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {126:1, 4:1, 1:1, 7:1}, 19, reaction.getReactants_0(), 0, 1);
  for (i0 = 0; i0 < reaction.getReactants_0(); i0++) {
    reaction.getReactant_0(i0).setFragment_0(true);
    reaction.getReactant_0(i0).ensureHelperArrays_0(15);
  }
  for (i1 = 0; i1 < reaction.getProducts_0(); i1++)
    reaction.getProduct_0(i1).ensureHelperArrays_0(15);
  this.removeMappingErrors(reaction);
  this.mMinFreeValence = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, reaction.getReactants_0(), 0, 2);
  for (i2 = 0; i2 < reaction.getReactants_0(); i2++) {
    reactant = reaction.getReactant_0(i2);
    this.mMinFreeValence[i2] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, reactant.getAtoms_0(), 15, 1);
    for (j = 0; j < reactant.getAtoms_0(); j++) {
      mapNo = reactant.getAtomMapNo_0(j);
      if (mapNo != 0) {
        for (k = 0; k < reaction.getProducts_0(); k++) {
          product = reaction.getProduct_0(k);
          for (l = 0; l < product.getAtoms_0(); l++) {
            if (product.getAtomMapNo_0(l) == mapNo) {
              dif = reactant.getFreeValence_0(j) - product.getFreeValence_0(l);
              this.mMinFreeValence[i2][j] = $wnd.Math.max(dif, 0);
            }
          }
        }
      }
    }
  }
  this.mIsReactionCenter = initUnidimensionalArray(cggl.Z_classLit, {4:1, 1:1, 7:1}, 12, reaction.getProducts_0(), 0, 2);
  for (i = 0; i < reaction.getProducts_0(); i++) {
    product = reaction.getProduct_0(i);
    this.mIsReactionCenter[i] = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, product.getAtoms_0(), 16, 1);
    for (j = 0; j < product.getAtoms_0(); j++) {
      mapNo = product.getAtomMapNo_0(j);
      if (mapNo != 0) {
        for (k = 0; k < reaction.getReactants_0(); k++) {
          reactant = reaction.getReactant_0(k);
          for (l = 0; l < reactant.getAtoms_0(); l++) {
            if (reactant.getAtomMapNo_0(l) == mapNo) {
              if ((new caru.IntArrayComparator).compare_2(this.getSortedConnectedMapNos(product, j), this.getSortedConnectedMapNos(reactant, l)) != 0 || (new caru.IntArrayComparator).compare_2(this.getSortedConnectedAtomicNos(product, j), this.getSortedConnectedAtomicNos(reactant, l)) != 0)
                this.mIsReactionCenter[i][j] = true;
            }
          }
        }
      }
    }
  }
  this.mSSSearcher = new carc2.SSSearcher;
  this.mMatchList = initUnidimensionalArray(cggl.Ljava_util_ArrayList_2_classLit, {4:1, 1:1, 7:1}, 18, this.mReactant.length, 0, 1);
}
;
carcr.Reactor_0 = function Reactor_0(reaction, retainCoordinates){
  carcr.$clinit_Reactor();
  carcr.Reactor.call(this, reaction, (retainCoordinates?1:0) + 4, 2147483647);
}
;
defineClass(316, 1, {1:1}, carcr.Reactor_0);
_.$init_130 = function $init_130(){
}
;
_.copyConfigurationFromGenericProduct = function copyConfigurationFromGenericProduct(genericProduct, genericProductAtom, product, productAtom){
  var genericReactant, i, mapNo, reactantAtom;
  if (genericProduct.getAtomParity_0(genericProductAtom) != 0 && !genericProduct.isAtomParityPseudo_0(genericProductAtom) && eq(and_0(genericProduct.getAtomQueryFeatures(genericProductAtom), 3221225472), 0)) {
    mapNo = genericProduct.getAtomMapNo_0(genericProductAtom);
    if (mapNo != 0) {
      for (i = 0; i < this.mGenericReaction.getReactants_0(); i++) {
        genericReactant = this.mGenericReaction.getReactant_0(i);
        for (reactantAtom = 0; reactantAtom < genericReactant.getAtoms_0(); reactantAtom++) {
          if (genericReactant.getAtomMapNo_0(reactantAtom) == mapNo) {
            if (genericProduct.getConnAtoms_0(genericProductAtom) == product.getConnAtoms_0(productAtom))
              return true;
            if (neq(and_0(genericReactant.getAtomQueryFeatures(reactantAtom), 8192), 0))
              return true;
            if (genericReactant.getAtomESRType_0(reactantAtom) != genericProduct.getAtomESRType_0(genericProductAtom))
              return true;
            return false;
          }
        }
      }
    }
  }
  return false;
}
;
_.copyPseudoParitiesFromGenericProduct = function copyPseudoParitiesFromGenericProduct(genericProduct, firstPseudoParityAtom, product, newAtomNo, pseudoParityHandled){
  var i, invertedAbsParityFound, matchingAbsParityFound, parity, ps, pseudoParity, pseudoParity$iterator, pseudoParityList, relatedAtom, relatedAtomCount;
  relatedAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, genericProduct.getAtoms_0(), 15, 1);
  relatedAtomCount = this.findRelatedPseudoParityAtoms(genericProduct, firstPseudoParityAtom, relatedAtom);
  matchingAbsParityFound = false;
  invertedAbsParityFound = false;
  pseudoParityList = new ju.ArrayList;
  for (i = 0; i < relatedAtomCount; i++) {
    if (genericProduct.isAtomParityPseudo_0(relatedAtom[i])) {
      pseudoParity = genericProduct.translateTHParity(relatedAtom[i], newAtomNo);
      if (pseudoParity == 1 || pseudoParity == 2) {
        parity = product.getAtomParity_0(newAtomNo[relatedAtom[i]]);
        if (parity == 1 || parity == 2) {
          if (pseudoParity == parity)
            matchingAbsParityFound = true;
          else 
            invertedAbsParityFound = true;
        }
      }
      ps = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
      ps[0] = relatedAtom[i];
      ps[1] = pseudoParity;
      pseudoParityList.add(ps);
    }
  }
  if (!matchingAbsParityFound || !invertedAbsParityFound) {
    for (pseudoParity$iterator = pseudoParityList.iterator(); pseudoParity$iterator.hasNext_0();) {
      pseudoParity = castTo(pseudoParity$iterator.next_3(), 6);
      ps = pseudoParity[1];
      if ((ps == 1 || ps == 2) && invertedAbsParityFound)
        ps = ps == 1?2:1;
      product.setAtomParity_0(newAtomNo[pseudoParity[0]], ps, true);
    }
  }
}
;
_.ensureProducts = function ensureProducts(){
  var atom, count, firstFreeMapNo, gr, i, index_0, j, matchListIndex, uniqueBuilder, uniqueList;
  if (jsNotEquals(this.mProduct, null))
    return;
  if (this.mFullyMapReactions) {
    firstFreeMapNo = this.mMaxGenericMapNo + 1;
    this.mReactantMapNo = initUnidimensionalArray(cggl.I_classLit, {4:1, 1:1, 7:1}, 35, this.mReactant.length, 0, 3);
    for (i = 0; i < this.mReactant.length; i++) {
      this.mReactantMapNo[i] = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, this.mMatchList[i].size(), 0, 2);
      for (j = 0; j < this.mMatchList[i].size(); j++)
        this.mReactantMapNo[i][j] = this.getReactantMapNos(i, castTo(this.mMatchList[i].getAtIndex(j), 6), firstFreeMapNo);
      firstFreeMapNo += this.mReactant[i].getAtoms_0();
      gr = this.mGenericReaction.getReactant_0(i);
      for (atom = 0; atom < gr.getAtoms_0(); atom++)
        if (eq(and_0(gr.getAtomQueryFeatures(atom), 536870912), 0))
          firstFreeMapNo--;
    }
  }
  this.mProduct = initMultidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, [{4:1, 1:1, 7:1}, {126:1, 4:1, 1:1, 7:1}], [126, 19], 0, [this.mReactantMatchCombinationCount, this.mGenericReaction.getProducts_0()], 2);
  this.mIDCode = initMultidimensionalArray(cggl.Ljava_lang_String_2_classLit, [{4:1, 1:1, 7:1}, {4:1, 1:1, 7:1, 15:1}], [15, 2], 6, [this.mReactantMatchCombinationCount, this.mGenericReaction.getProducts_0()], 2);
  this.mIsDuplicate = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mReactantMatchCombinationCount, 16, 1);
  uniqueList = new carc2.SortedStringList;
  uniqueBuilder = new jl.StringBuilder;
  index_0 = 0;
  count = 0;
  if (this.mReactantMatchCombinationCount != 0) {
    matchListIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mReactant.length, 15, 1);
    do {
      uniqueBuilder.setLength(0);
      for (i = 0; i < this.mGenericReaction.getProducts_0(); i++) {
        setCheck(this.mProduct[index_0], i, this.generateProduct(this.mMatchList, matchListIndex, i));
        this.mIDCode[index_0][i] = (new carc2.Canonizer(this.mProduct[index_0][i])).getIDCode_0();
        uniqueBuilder.append_9(this.mIDCode[index_0][i]);
      }
      this.mIsDuplicate[index_0] = uniqueList.addString(uniqueBuilder.toString_0()) == -1;
      if (!this.mUniqueProductsOnly || !this.mIsDuplicate[index_0])
        count++;
      index_0++;
    }
     while (this.nextMatchListCombination(matchListIndex) && count < this.mMaxCount);
  }
}
;
_.findRelatedPseudoParityAtoms = function findRelatedPseudoParityAtoms(genericProduct, firstAtom, relatedAtom){
  var connAtom, connBond, current, i, isRelated, relatedAtoms;
  isRelated = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, genericProduct.getAtoms_0(), 16, 1);
  relatedAtom[0] = firstAtom;
  relatedAtoms = 1;
  isRelated[firstAtom] = true;
  for (current = 0; current < relatedAtoms; current++) {
    for (i = 0; i < genericProduct.getConnAtoms_0(relatedAtom[current]); i++) {
      connBond = genericProduct.getConnBond_0(relatedAtom[current], i);
      if (genericProduct.isRingBond_0(connBond) || genericProduct.getBondOrder_0(connBond) == 2 || genericProduct.isBINAPChiralityBond_0(connBond)) {
        connAtom = genericProduct.getConnAtom_0(relatedAtom[current], i);
        if (!isRelated[connAtom]) {
          relatedAtom[relatedAtoms++] = connAtom;
          isRelated[connAtom] = true;
        }
      }
    }
  }
  return relatedAtoms;
}
;
_.generateProduct = function generateProduct(matchList, matchListIndex, genericProductNo){
  var atom, atom$iterator, atom0, atom1, atom2, atom3, bond, bondAtom1, bondAtom2, connAtom, esrGroup, esrGroupCountAND, esrGroupCountOR, esrGroupsChanged, esrType, excludeAtom, excludeBond, excludedAtom, found, found0, genericProduct, genericReactant, gpBond, gpMapNo1, gpMapNo2, grAtom1, grAtom2, grBond, grMapNo1, grMapNo2, i, i0, includeAtom, inversion, j, j$array, j$index, j$max, j0, j1, j2, j3, j4, j5, j6, k, k0, l, m, mapNo, matchingAtom, mode, newAtomNo, newAtomNo0, otherConnAtom, parity, product, productBond, productParityHint, productQFBondType, pseudoParityHandled, rAtom1, rAtom2, rBond, rBondOrder, rBondType, racemicAtomList, reactantQFBondType;
  genericProduct = this.mGenericReaction.getProduct_0(genericProductNo);
  product = new carc2.StereoMolecule;
  esrGroupCountAND = 0;
  esrGroupCountOR = 0;
  racemicAtomList = null;
  for (i0 = 0; i0 < this.mReactant.length; i0++) {
    genericReactant = this.mGenericReaction.getReactant_0(i0);
    this.mReactant[i0].ensureHelperArrays_0(1);
    matchingAtom = castTo(matchList[i0].getAtIndex(matchListIndex[i0]), 6);
    mapNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mReactant[i0].getAtoms_0(), 15, 1);
    excludeAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mReactant[i0].getAtoms_0(), 16, 1);
    excludeBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mReactant[i0].getBonds_0(), 16, 1);
    for (j0 = 0; j0 < genericReactant.getAtoms_0(); j0++) {
      if (matchingAtom[j0] != -1) {
        if (genericReactant.getAtomMapNo_0(j0) == 0) {
          excludedAtom = matchingAtom[j0];
          excludeAtom[excludedAtom] = true;
          for (k0 = 0; k0 < this.mReactant[i0].getConnAtoms_0(excludedAtom); k0++)
            excludeBond[this.mReactant[i0].getConnBond_0(excludedAtom, k0)] = true;
          for (k = this.mReactant[i0].getAllConnAtoms_0(excludedAtom); k < this.mReactant[i0].getAllConnAtomsPlusMetalBonds_0(excludedAtom); k++)
            excludeBond[this.mReactant[i0].getConnBond_0(excludedAtom, k)] = true;
        }
         else {
          mapNo[matchingAtom[j0]] = genericReactant.getAtomMapNo_0(j0);
        }
      }
    }
    for (j1 = 0; j1 < genericReactant.getBonds_0(); j1++) {
      bondAtom1 = genericReactant.getBondAtom_0(0, j1);
      bondAtom2 = genericReactant.getBondAtom_0(1, j1);
      if (genericReactant.getAtomMapNo_0(bondAtom1) != 0 && genericReactant.getAtomMapNo_0(bondAtom2) != 0) {
        atom1 = matchingAtom[bondAtom1];
        atom2 = matchingAtom[bondAtom2];
        if (atom1 != -1 && atom2 != -1) {
          for (k = 0; k < this.mReactant[i0].getBonds_0(); k++) {
            if (this.mReactant[i0].getBondAtom_0(0, k) == atom1 && this.mReactant[i0].getBondAtom_0(1, k) == atom2 || this.mReactant[i0].getBondAtom_0(0, k) == atom2 && this.mReactant[i0].getBondAtom_0(1, k) == atom1) {
              excludeBond[k] = true;
              break;
            }
          }
        }
      }
    }
    newAtomNo0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mReactant[i0].getAtoms_0(), 15, 1);
    for (j2 = 0; j2 < this.mReactant[i0].getAtoms_0(); j2++) {
      if (!excludeAtom[j2]) {
        newAtomNo0[j2] = this.mReactant[i0].copyAtom_0(product, j2, esrGroupCountAND, esrGroupCountOR);
        if (this.mFullyMapReactions)
          product.setAtomMapNo_0(newAtomNo0[j2], this.mReactantMapNo[i0][matchListIndex[i0]][j2], false);
        if (mapNo[j2] != 0) {
          product.setAtomMapNo_0(newAtomNo0[j2], mapNo[j2], false);
          for (k = 0; k < genericProduct.getAtoms_0(); k++) {
            if (genericProduct.getAtomMapNo_0(k) == mapNo[j2]) {
              product.setAtomCharge_0(newAtomNo0[j2], genericProduct.getAtomCharge_0(k));
              product.setAtomRadical_0(newAtomNo0[j2], genericProduct.getAtomRadical_0(k));
              if (this.mIsReactionCenter[genericProductNo][k]) {
                parity = this.mReactant[i0].getAtomParity_0(j2);
                productParityHint = and_0(genericProduct.getAtomQueryFeatures(k), 3221225472);
                if (eq(productParityHint, 0)) {
                  product.setAtomParity_0(newAtomNo0[j2], 3, false);
                }
                 else if (eq(productParityHint, 3221225472)) {
                  if (isNull(racemicAtomList))
                    racemicAtomList = new ju.ArrayList;
                  racemicAtomList.add(jl.valueOf_26(newAtomNo0[j2]));
                }
                 else {
                  if (parity == 1 || parity == 2) {
                    inversion = eq(productParityHint, 2147483648);
                    for (l = 0; l < this.mReactant[i0].getConnAtoms_0(j2); l++) {
                      connAtom = this.mReactant[i0].getConnAtom_0(j2, l);
                      if (excludeAtom[connAtom]) {
                        for (m = 0; m < this.mReactant[i0].getConnAtoms_0(j2); m++) {
                          otherConnAtom = this.mReactant[i0].getConnAtom_0(j2, m);
                          if (!excludeAtom[otherConnAtom] && otherConnAtom > connAtom)
                            inversion = !inversion;
                        }
                      }
                    }
                    if (inversion)
                      parity = parity == 1?2:1;
                    product.setAtomParity_0(newAtomNo0[j2], parity, false);
                  }
                   else {
                    product.setAtomParity_0(newAtomNo0[j2], 0, false);
                  }
                }
              }
              break;
            }
          }
        }
      }
    }
    for (j3 = 0; j3 < this.mReactant[i0].getBonds_0(); j3++)
      if (!excludeBond[j3])
        this.mReactant[i0].copyBond_1(product, j3, esrGroupCountAND, esrGroupCountOR, newAtomNo0, true);
    esrGroupCountAND = product.renumberESRGroups_0(1);
    esrGroupCountOR = product.renumberESRGroups_0(2);
  }
  newAtomNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, genericProduct.getAtoms_0(), 15, 1);
  for (j4 = 0; j4 < genericProduct.getAtoms_0(); j4++) {
    mapNo = genericProduct.getAtomMapNo_0(j4);
    if (mapNo == 0) {
      newAtomNo[j4] = genericProduct.copyAtom_0(product, j4, esrGroupCountAND, esrGroupCountOR);
    }
     else {
      for (k = 0; k < product.getAllAtoms_0(); k++) {
        if (product.getAtomMapNo_0(k) == mapNo) {
          newAtomNo[j4] = k;
          break;
        }
      }
    }
  }
  if (this.mRetainCoordinates) {
    for (j0 = 0; j0 < genericProduct.getAtoms_0(); j0++) {
      product.setAtomMarker_0(newAtomNo[j0], true);
      product.setAtomX_0(newAtomNo[j0], genericProduct.getAtomX_0(j0));
      product.setAtomY_0(newAtomNo[j0], genericProduct.getAtomY_0(j0));
    }
  }
  for (gpBond = 0; gpBond < genericProduct.getBonds_0(); gpBond++) {
    if (genericProduct.isBondBridge_0(gpBond))
      continue;
    productBond = genericProduct.copyBond_1(product, gpBond, esrGroupCountAND, esrGroupCountOR, newAtomNo, false);
    productQFBondType = genericProduct.getBondQueryFeatures_0(gpBond) & 31;
    if (productQFBondType != 0) {
      found0 = false;
      product.setBondQueryFeature_0(productBond, 31, false);
      gpMapNo1 = genericProduct.getAtomMapNo_0(genericProduct.getBondAtom_0(0, gpBond));
      gpMapNo2 = genericProduct.getAtomMapNo_0(genericProduct.getBondAtom_0(1, gpBond));
      for (i = 0; !found0 && i < this.mGenericReaction.getReactants_0(); i++) {
        genericReactant = this.mGenericReaction.getReactant_0(i);
        for (grBond = 0; !found0 && grBond < genericReactant.getBonds_0(); grBond++) {
          grAtom1 = genericReactant.getBondAtom_0(0, grBond);
          grAtom2 = genericReactant.getBondAtom_0(1, grBond);
          grMapNo1 = genericReactant.getAtomMapNo_0(grAtom1);
          grMapNo2 = genericReactant.getAtomMapNo_0(grAtom2);
          if (grMapNo1 != 0 && grMapNo2 != 0 && (grMapNo1 == gpMapNo1 && grMapNo2 == gpMapNo2 || grMapNo1 == gpMapNo2 && grMapNo2 == gpMapNo1)) {
            found0 = true;
            reactantQFBondType = genericReactant.getBondQueryFeatures_0(grBond) & 31;
            if (reactantQFBondType != 0) {
              matchingAtom = castTo(matchList[i].getAtIndex(matchListIndex[i]), 6);
              rAtom1 = matchingAtom[grAtom1];
              rAtom2 = matchingAtom[grAtom2];
              rBond = this.mReactant[i].getBond_0(rAtom1, rAtom2);
              rBondType = this.mReactant[i].getBondType_0(rBond);
              rBondOrder = this.mReactant[i].getBondOrder_0(rBond);
              reactantQFBondType &= 1 | 2 | 4;
              productQFBondType &= 1 | 2 | 4;
              if (reactantQFBondType == (1 | 2) && productQFBondType == (2 | 4)) {
                product.setBondType_0(productBond, rBondOrder <= 1?2:4);
              }
               else if (reactantQFBondType == (2 | 4) && productQFBondType == (1 | 2)) {
                product.setBondType_0(productBond, rBondOrder == 3?2:1);
              }
               else {
                product.setBondType_0(productBond, rBondType);
              }
            }
          }
        }
      }
    }
  }
  product.ensureHelperArrays_0(1);
  esrGroupsChanged = false;
  for (j5 = 0; j5 < genericProduct.getAtoms_0(); j5++) {
    if (genericProduct.getAtomMapNo_0(j5) == 0) {
      parity = genericProduct.translateTHParity(j5, newAtomNo);
      product.setAtomParity_0(newAtomNo[j5], parity, false);
    }
     else if (this.mIsReactionCenter[genericProductNo][j5] && this.copyConfigurationFromGenericProduct(genericProduct, j5, product, newAtomNo[j5])) {
      parity = genericProduct.translateTHParity(j5, newAtomNo);
      product.setAtomParity_0(newAtomNo[j5], parity, false);
      if (parity == 1 || parity == 2) {
        esrType = genericProduct.getAtomESRType_0(j5);
        esrGroup = genericProduct.getAtomESRGroup_0(j5);
        if (esrType == 1)
          esrGroup += esrGroupCountAND;
        else if (esrType == 2)
          esrGroup += esrGroupCountOR;
        product.setAtomESR_0(newAtomNo[j5], esrType, esrGroup);
        esrGroupsChanged = true;
      }
    }
  }
  if (esrGroupsChanged) {
    esrGroupCountAND = product.renumberESRGroups_0(1);
    esrGroupCountOR = product.renumberESRGroups_0(2);
  }
  pseudoParityHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, genericProduct.getAllAtoms_0(), 16, 1);
  for (j6 = 0; j6 < genericProduct.getAtoms_0(); j6++)
    if (this.mIsReactionCenter[genericProductNo][j6] && !pseudoParityHandled[j6] && genericProduct.isAtomParityPseudo_0(j6) && eq(and_0(genericProduct.getAtomQueryFeatures(j6), 3221225472), 0) && genericProduct.getConnAtoms_0(j6) == product.getConnAtoms_0(newAtomNo[j6]))
      this.copyPseudoParitiesFromGenericProduct(genericProduct, j6, product, newAtomNo, pseudoParityHandled);
  includeAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, product.getAllAtoms_0(), 16, 1);
  for (j$array = newAtomNo , j$index = 0 , j$max = j$array.length; j$index < j$max; ++j$index) {
    j = j$array[j$index];
    includeAtom[j] = true;
  }
  found = true;
  while (found) {
    found = false;
    for (bond = 0; bond < product.getAllBonds_0(); bond++) {
      atom1 = product.getBondAtom_0(0, bond);
      atom2 = product.getBondAtom_0(1, bond);
      if (includeAtom[atom1] && !includeAtom[atom2]) {
        includeAtom[atom2] = true;
        found = true;
      }
       else if (includeAtom[atom2] && !includeAtom[atom1]) {
        includeAtom[atom1] = true;
        found = true;
      }
    }
  }
  for (atom0 = 0; atom0 < product.getAllAtoms_0(); atom0++)
    product.setAtomSelection_0(atom0, !includeAtom[atom0]);
  product.deleteSelectedAtoms_0();
  if (!this.mFullyMapReactions)
    for (atom3 = 0; atom3 < product.getAllAtoms_0(); atom3++)
      product.setAtomMapNo_0(atom3, 0, false);
  (new carc2.AromaticityResolver(product)).locateDelocalizedDoubleBonds(null);
  product.setParitiesValid_0(0);
  mode = 2 | (this.mRetainCoordinates?8:0);
  (new carcc3.CoordinateInventor_0(mode)).invent(product);
  if (isNotNull(racemicAtomList)) {
    product.ensureHelperArrays_0(15);
    for (atom$iterator = racemicAtomList.iterator(); atom$iterator.hasNext_0();) {
      atom = castTo(atom$iterator.next_3(), 32).intValue();
      if (product.isAtomStereoCenter_0(atom)) {
        product.setAtomParity_0(atom, 1, false);
        product.setAtomESR_0(atom, 1, esrGroupCountAND++);
      }
    }
  }
  return product;
}
;
_.getProductCount = function getProductCount(){
  var count, i;
  count = this.mReactantMatchCombinationCount;
  if (this.mUniqueProductsOnly)
    for (i = 0; i < this.mReactantMatchCombinationCount; i++)
      if (this.mIsDuplicate[i])
        count--;
  if (this.mMaxCount > 0 && count > this.mMaxCount)
    count = this.mMaxCount;
  return count;
}
;
_.getProducts_1 = function getProducts_0(){
  var count, i, uniqueProduct;
  this.ensureProducts();
  uniqueProduct = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {4:1, 1:1, 7:1}, 126, this.getProductCount(), 0, 2);
  count = 0;
  for (i = 0; i < this.mReactantMatchCombinationCount && count < this.mMaxCount; i++)
    if (!this.mUniqueProductsOnly || !this.mIsDuplicate[i])
      setCheck(uniqueProduct, count++, this.mProduct[i]);
  return uniqueProduct;
}
;
_.getReactantMapNos = function getReactantMapNos(reactant, matchList, firstMapNo){
  var atom, genericReactant, i, reactantMapNo;
  reactantMapNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mReactant[reactant].getAtoms_0(), 15, 1);
  ju.fill_0(reactantMapNo, -1);
  genericReactant = this.mGenericReaction.getReactant_0(reactant);
  for (atom = 0; atom < genericReactant.getAtoms_0(); atom++)
    if (matchList[atom] != -1)
      reactantMapNo[matchList[atom]] = genericReactant.getAtomMapNo_0(atom);
  for (i = 0; i < reactantMapNo.length; i++)
    if (reactantMapNo[i] == -1)
      reactantMapNo[i] = firstMapNo++;
  return reactantMapNo;
}
;
_.getSortedConnectedAtomicNos = function getSortedConnectedAtomicNos(mol, atom){
  var atomicNo, connAtom, i, index_0;
  atomicNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getConnAtoms_0(atom) - mol.getExcludedNeighbourCount_0(atom), 15, 1);
  index_0 = 0;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    if (eq(and_0(mol.getAtomQueryFeatures(connAtom), 536870912), 0))
      atomicNo[index_0++] = mol.getAtomicNo_0(connAtom);
  }
  ju.sort_3(atomicNo);
  return atomicNo;
}
;
_.getSortedConnectedMapNos = function getSortedConnectedMapNos(mol, atom){
  var connAtom, i, index_0, mapNo;
  mapNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getConnAtoms_0(atom) - mol.getExcludedNeighbourCount_0(atom), 15, 1);
  index_0 = 0;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    if (eq(and_0(mol.getAtomQueryFeatures(connAtom), 536870912), 0))
      mapNo[index_0++] = mol.getAtomMapNo_0(connAtom);
  }
  ju.sort_3(mapNo);
  return mapNo;
}
;
_.nextMatchListCombination = function nextMatchListCombination(matchListIndex){
  var i;
  for (i = 0; i < matchListIndex.length; i++) {
    if (matchListIndex[i] < this.mMatchList[i].size() - 1) {
      matchListIndex[i]++;
      return true;
    }
    matchListIndex[i] = 0;
  }
  return false;
}
;
_.removeMappingErrors = function removeMappingErrors(rxn){
  var atom, i, i0, i1, i2, mapNo, mol, product, reactant, used;
  this.mMaxGenericMapNo = 0;
  for (i0 = 0; i0 < rxn.getMolecules_0(); i0++) {
    mol = this.mGenericReaction.getMolecule_1(i0);
    for (atom = 0; atom < mol.getAtoms_0(); atom++) {
      if (neq(and_0(mol.getAtomQueryFeatures(atom), 536870912), 0))
        mol.setAtomMapNo_0(atom, 0, false);
      else if (this.mMaxGenericMapNo < mol.getAtomMapNo_0(atom))
        this.mMaxGenericMapNo = mol.getAtomMapNo_0(atom);
    }
  }
  used = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mMaxGenericMapNo + 1, 16, 1);
  for (i1 = 0; i1 < rxn.getReactants_0(); i1++) {
    reactant = rxn.getReactant_0(i1);
    for (atom = 0; atom < reactant.getAtoms_0(); atom++) {
      mapNo = reactant.getAtomMapNo_0(atom);
      if (mapNo != 0)
        used[mapNo] = true;
    }
  }
  for (i2 = 0; i2 < rxn.getProducts_0(); i2++) {
    product = rxn.getProduct_0(i2);
    for (atom = 0; atom < product.getAtoms_0(); atom++) {
      mapNo = product.getAtomMapNo_0(atom);
      if (mapNo != 0) {
        if (!used[mapNo])
          product.setAtomMapNo_0(atom, 0, false);
        else 
          used[mapNo] = false;
      }
    }
  }
  for (i = 0; i < rxn.getReactants_0(); i++) {
    reactant = rxn.getReactant_0(i);
    for (atom = 0; atom < reactant.getAtoms_0(); atom++) {
      mapNo = reactant.getAtomMapNo_0(atom);
      if (mapNo != 0 && used[mapNo])
        reactant.setAtomMapNo_0(atom, 0, false);
    }
  }
}
;
_.setReactant_0 = function setReactant(no, reactant){
  var correction, genericReactant, i, j, k, matchMode, matchingAtom, valence;
  setCheck(this.mReactant, no, reactant);
  this.mProduct = null;
  genericReactant = this.mGenericReaction.getReactant_0(no);
  this.mSSSearcher.setMol_0(genericReactant, this.mReactant[no]);
  matchMode = 8 + (this.mAllowChargeCorrections?0:1);
  if (this.mSSSearcher.findFragmentInMolecule(5, matchMode) == 0) {
    setCheck(this.mMatchList, no, new ju.ArrayList);
    this.mReactantMatchCombinationCount = 0;
    return false;
  }
  setCheck(this.mMatchList, no, this.mSSSearcher.getMatchList());
  for (j = this.mMatchList[no].size() - 1; j >= 0; j--) {
    matchingAtom = castTo(this.mMatchList[no].getAtIndex(j), 6);
    for (k = 0; k < matchingAtom.length; k++) {
      if (matchingAtom[k] != -1) {
        correction = 0;
        if (this.mAllowChargeCorrections && genericReactant.getAtomCharge_0(k) == 0 && this.mReactant[no].getAtomCharge_0(matchingAtom[k]) != 0) {
          valence = this.mReactant[no].getMaxValenceUncharged_0(matchingAtom[k]);
          correction = this.mReactant[no].getElectronValenceCorrection_0(matchingAtom[k], valence);
        }
        if (this.mMinFreeValence[no][k] > 0 && this.mMinFreeValence[no][k] > this.mReactant[no].getFreeValence_0(matchingAtom[k]) - correction) {
          this.mMatchList[no].removeAtIndex(j);
          break;
        }
      }
    }
  }
  this.mReactantMatchCombinationCount = 1;
  for (i = 0; i < this.mReactant.length; i++)
    this.mReactantMatchCombinationCount *= isNull(this.mMatchList[i])?0:this.mMatchList[i].size();
  return true;
}
;
_.mAllowChargeCorrections = false;
_.mFullyMapReactions = false;
_.mMaxCount = 0;
_.mMaxGenericMapNo = 0;
_.mReactantMatchCombinationCount = 0;
_.mRetainCoordinates = false;
_.mUniqueProductsOnly = false;
carcr.MODE_ALLOW_CHARGE_CORRECTIONS = 8;
carcr.MODE_FULLY_MAP_REACTIONS = 2;
carcr.MODE_REMOVE_DUPLICATE_PRODUCTS = 4;
carcr.MODE_RETAIN_COORDINATES = 1;
cggl.Lcom_actelion_research_chem_reaction_Reactor_2_classLit = createForClass('com.actelion.research.chem.reaction', 'Reactor', 316, cggl.Ljava_lang_Object_2_classLit);
carcr.$clinit_Transformer = function $clinit_Transformer(){
  carcr.$clinit_Transformer = emptyMethod;
  jl.$clinit_Object();
}
;
carcr.Transformer = function Transformer(reactant, product, name_0){
  carcr.$clinit_Transformer();
  var bond, bond0, dif, i, i0, index_0, j, rule;
  Object_0.call(this);
  this.$init_131();
  this.mName = name_0;
  reactant.ensureHelperArrays_0(7);
  product.ensureHelperArrays_0(7);
  this.mBondGain = product.getBonds_0() - reactant.getBonds_0();
  this.mReactant = reactant;
  this.mRuleList = new caru.SortedList;
  for (bond0 = 0; bond0 < reactant.getBonds_0(); bond0++)
    this.mRuleList.add_10(new carcr.TransformerRule(reactant, bond0));
  for (bond = 0; bond < product.getBonds_0(); bond++) {
    rule = new carcr.TransformerRule(product, bond);
    index_0 = this.mRuleList.getIndex_0(rule);
    if (index_0 == -1) {
      rule.finishProductOnly();
      this.mRuleList.add_10(rule);
    }
     else {
      castTo(this.mRuleList.get_3(index_0), 102).finishWithProduct(rule);
    }
  }
  for (i0 = this.mRuleList.size_1() - 1; i0 >= 0; i0--) {
    rule = castTo(this.mRuleList.get_3(i0), 102);
    if (!rule.isFinished())
      rule.finishNoProduct();
    else if (castTo(this.mRuleList.get_3(i0), 102).isNoChange())
      this.mRuleList.remove_2(i0);
  }
  this.mMinFreeValence = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, reactant.getAtoms_0(), 15, 1);
  for (i = 0; i < reactant.getAtoms_0(); i++) {
    for (j = 0; j < product.getAtoms_0(); j++) {
      if (product.getAtomMapNo_0(j) == reactant.getAtomMapNo_0(i)) {
        dif = reactant.getFreeValence_0(i) - product.getFreeValence_0(j);
        this.mMinFreeValence[i] = dif > 0?dif:0;
        break;
      }
    }
  }
  this.mSSSearcher = new carc2.SSSearcher;
}
;
defineClass(442, 1, {1:1}, carcr.Transformer);
_.$init_131 = function $init_131(){
}
;
_.applyTransformation_1 = function applyTransformation_0(mol, matchNo){
  var i, matchAtom, rule;
  mol.ensureHelperArrays_0(1);
  matchAtom = castTo(this.mMatchList.getAtIndex(matchNo), 6);
  for (i = 0; i < this.mRuleList.size_1(); i++) {
    rule = castTo(this.mRuleList.get_3(i), 102);
    rule.adaptBondOrder(mol, matchAtom);
  }
  mol.deleteMarkedAtomsAndBonds_0();
}
;
_.getName_0 = function getName_2(){
  return this.mName;
}
;
_.setMolecule_3 = function setMolecule_2(molecule, countMode){
  var j, k, matchMode, matchingAtom;
  this.mTargetMolecule = molecule;
  this.mSSSearcher.setMol_0(this.mReactant, this.mTargetMolecule);
  matchMode = 8;
  if (this.mSSSearcher.findFragmentInMolecule(countMode, matchMode) == 0) {
    this.mMatchList = null;
    return 0;
  }
  this.mMatchList = this.mSSSearcher.getMatchList();
  for (j = this.mMatchList.size() - 1; j >= 0; j--) {
    matchingAtom = castTo(this.mMatchList.getAtIndex(j), 6);
    for (k = 0; k < matchingAtom.length; k++) {
      if (matchingAtom[k] != -1) {
        if (this.mMinFreeValence[k] > 0 && this.mMinFreeValence[k] > this.mTargetMolecule.getFreeValence_0(matchingAtom[k])) {
          this.mMatchList.removeAtIndex(j);
          break;
        }
      }
    }
  }
  return this.mMatchList.size();
}
;
_.mBondGain = 0;
cggl.Lcom_actelion_research_chem_reaction_Transformer_2_classLit = createForClass('com.actelion.research.chem.reaction', 'Transformer', 442, cggl.Ljava_lang_Object_2_classLit);
carcr.$clinit_TransformerRule = function $clinit_TransformerRule(){
  carcr.$clinit_TransformerRule = emptyMethod;
  jl.$clinit_Object();
}
;
carcr.TransformerRule = function TransformerRule(mol, bond){
  carcr.$clinit_TransformerRule();
  var bondType, mapNo1, mapNo2;
  Object_0.call(this);
  this.$init_132();
  this.mAtom1 = mol.getBondAtom_0(0, bond);
  this.mAtom2 = mol.getBondAtom_0(1, bond);
  mapNo1 = mol.getAtomMapNo_0(this.mAtom1);
  mapNo2 = mol.getAtomMapNo_0(this.mAtom2);
  if (mapNo1 < mapNo2) {
    this.mMapNo1 = mapNo1;
    this.mMapNo2 = mapNo2;
  }
   else {
    this.mMapNo1 = mapNo2;
    this.mMapNo2 = mapNo1;
  }
  this.mBondQFTypes = mol.getBondQueryFeatures_0(bond) & 31;
  bondType = mol.getBondTypeSimple_0(bond);
  if (bondType == 32)
    this.mBondQFTypes |= 16;
  else if (bondType == 2)
    this.mBondQFTypes |= 2;
  else if (bondType == 4)
    this.mBondQFTypes |= 4;
  else 
    this.mBondQFTypes |= 1;
  this.mType = (carcr.$clinit_TransformerRule$TYPE() , carcr.UNKNOWN);
}
;
defineClass(102, 1, {102:1, 10:1, 1:1}, carcr.TransformerRule);
_.$init_132 = function $init_132(){
}
;
_.compareTo_1 = function compareTo_18(o){
  return this.compareTo_9(castTo(o, 102));
}
;
_.adaptBondOrder = function adaptBondOrder(mol, matchAtom){
  var atom1, atom2, bond, targetBondOrder;
  atom1 = matchAtom[this.mAtom1];
  atom2 = matchAtom[this.mAtom2];
  if (jsEquals(this.mType, (carcr.$clinit_TransformerRule$TYPE() , carcr.CREATE))) {
    mol.addBond_1(atom1, atom2, this.mTargetBondType);
    return true;
  }
   else {
    bond = mol.getBond_0(atom1, atom2);
    if (jsEquals(this.mType, (carcr.$clinit_TransformerRule$TYPE() , carcr.CHANGE_ABS))) {
      mol.setBondType_0(bond, this.mTargetBondType);
      return true;
    }
     else if (jsEquals(this.mType, (carcr.$clinit_TransformerRule$TYPE() , carcr.CHANGE_DIF))) {
      targetBondOrder = mol.getBondOrder_0(bond) + this.mTargetBondDif;
      if (targetBondOrder >= 0 && targetBondOrder <= 3) {
        mol.setBondType_0(bond, carc2.bondOrderToType(targetBondOrder, true));
        return true;
      }
    }
     else if (jsEquals(this.mType, (carcr.$clinit_TransformerRule$TYPE() , carcr.REMOVE))) {
      mol.markBondForDeletion_0(bond);
      return true;
    }
  }
  return false;
}
;
_.compareTo_9 = function compareTo_17(o){
  if (this.mMapNo1 != o.mMapNo1)
    return this.mMapNo1 < o.mMapNo1?-1:1;
  if (this.mMapNo2 != o.mMapNo2)
    return this.mMapNo2 < o.mMapNo2?-1:1;
  return 0;
}
;
_.equals_0 = function equals_15(o){
  return this.mMapNo1 == castTo(o, 102).mMapNo1 && this.mMapNo2 == castTo(o, 102).mMapNo2;
}
;
_.finishNoProduct = function finishNoProduct(){
  this.mType = (carcr.$clinit_TransformerRule$TYPE() , carcr.REMOVE);
}
;
_.finishProductOnly = function finishProductOnly(){
  this.mType = (carcr.$clinit_TransformerRule$TYPE() , carcr.CREATE);
}
;
_.finishWithProduct = function finishWithProduct(productRule){
  var sourceBondOrder, targetBondOrder;
  if (this.mBondQFTypes == productRule.mBondQFTypes) {
    this.mType = (carcr.$clinit_TransformerRule$TYPE() , carcr.NO_CHANGE);
  }
   else if (bitCount_1(productRule.mBondQFTypes) == 1) {
    this.mTargetBondType = productRule.mBondQFTypes == 1?1:productRule.mBondQFTypes == 2?386:productRule.mBondQFTypes == 4?4:productRule.mBondQFTypes == 16?32:64;
    this.mType = (carcr.$clinit_TransformerRule$TYPE() , carcr.CHANGE_ABS);
  }
   else {
    sourceBondOrder = (this.mBondQFTypes & 16) != 0?0:(this.mBondQFTypes & 1) != 0?1:(this.mBondQFTypes & 2) != 0?2:3;
    targetBondOrder = (productRule.mBondQFTypes & 16) != 0?0:(productRule.mBondQFTypes & 1) != 0?1:(productRule.mBondQFTypes & 2) != 0?2:3;
    if (targetBondOrder == sourceBondOrder)
      this.mType = (carcr.$clinit_TransformerRule$TYPE() , carcr.NO_CHANGE);
    else {
      this.mTargetBondDif = targetBondOrder - sourceBondOrder;
      this.mType = (carcr.$clinit_TransformerRule$TYPE() , carcr.CHANGE_DIF);
    }
  }
}
;
_.isFinished = function isFinished(){
  return jsNotEquals(this.mType, (carcr.$clinit_TransformerRule$TYPE() , carcr.UNKNOWN));
}
;
_.isNoChange = function isNoChange(){
  return jsEquals(this.mType, (carcr.$clinit_TransformerRule$TYPE() , carcr.NO_CHANGE));
}
;
_.mAtom1 = 0;
_.mAtom2 = 0;
_.mBondQFTypes = 0;
_.mMapNo1 = 0;
_.mMapNo2 = 0;
_.mTargetBondDif = 0;
_.mTargetBondType = 0;
cggl.Lcom_actelion_research_chem_reaction_TransformerRule_2_classLit = createForClass('com.actelion.research.chem.reaction', 'TransformerRule', 102, cggl.Ljava_lang_Object_2_classLit);
carcr.$clinit_TransformerRule$TYPE = function $clinit_TransformerRule$TYPE(){
  carcr.$clinit_TransformerRule$TYPE = emptyMethod;
  jl.$clinit_Enum();
  carcr.CREATE = new carcr.TransformerRule$TYPE('CREATE', 0);
  carcr.CHANGE_DIF = new carcr.TransformerRule$TYPE('CHANGE_DIF', 1);
  carcr.CHANGE_ABS = new carcr.TransformerRule$TYPE('CHANGE_ABS', 2);
  carcr.REMOVE = new carcr.TransformerRule$TYPE('REMOVE', 3);
  carcr.NO_CHANGE = new carcr.TransformerRule$TYPE('NO_CHANGE', 4);
  carcr.UNKNOWN = new carcr.TransformerRule$TYPE('UNKNOWN', 5);
}
;
carcr.TransformerRule$TYPE = function TransformerRule$TYPE(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_133();
}
;
carcr.valueOf_3 = function valueOf_3(name_0){
  carcr.$clinit_TransformerRule$TYPE();
  return valueOf((carcr.$clinit_TransformerRule$TYPE$Map() , carcr.$MAP_2), name_0);
}
;
carcr.values_3 = function values_3(){
  carcr.$clinit_TransformerRule$TYPE();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_reaction_TransformerRule$TYPE_2_classLit, 1), {4:1, 1:1, 7:1}, 137, 0, [carcr.CREATE, carcr.CHANGE_DIF, carcr.CHANGE_ABS, carcr.REMOVE, carcr.NO_CHANGE, carcr.UNKNOWN]);
}
;
defineClass(137, 11, {137:1, 4:1, 10:1, 11:1, 1:1}, carcr.TransformerRule$TYPE);
_.$init_133 = function $init_133(){
}
;
cggl.Lcom_actelion_research_chem_reaction_TransformerRule$TYPE_2_classLit = createForEnum('com.actelion.research.chem.reaction', 'TransformerRule/TYPE', 137, cggl.Ljava_lang_Enum_2_classLit, carcr.values_3, carcr.valueOf_3);
carcr.$clinit_TransformerRule$TYPE$Map = function $clinit_TransformerRule$TYPE$Map(){
  carcr.$clinit_TransformerRule$TYPE$Map = emptyMethod;
  carcr.$MAP_2 = createValueOfMap(carcr.values_3());
}
;
defineClass(1128, 1, {1:1});
cggl.Lcom_actelion_research_chem_reaction_TransformerRule$TYPE$Map_2_classLit = createForClass('com.actelion.research.chem.reaction', 'TransformerRule/TYPE/Map', 1128, cggl.Ljava_lang_Object_2_classLit);
cargg.$clinit_GenericEventListener = function $clinit_GenericEventListener(){
  cargg.$clinit_GenericEventListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_gui_generic_GenericEventListener_2_classLit = createForInterface('com.actelion.research.gui.generic', 'GenericEventListener');
carge.$clinit_AtomQueryFeatureDialogBuilder = function $clinit_AtomQueryFeatureDialogBuilder(){
  carge.$clinit_AtomQueryFeatureDialogBuilder = emptyMethod;
  jl.$clinit_Object();
  carge.RING_SIZE_SHORT_TEXT = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['', 'r0', 'r', 'r3', 'r3-4', 'r3-5', 'r3-6', 'r3-7', 'r4', 'r4-5', 'r4-6', 'r4-7', 'r>3', 'r5', 'r5-6', 'r5-7', 'r>4', 'r6', 'r6-7', 'r>5', 'r7', 'r>6', 'r>7']);
  carge.RING_SIZE_OPTIONS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['any', 'is not in a ring', 'is in any ring', '3 members', '3-4 members', '3-5 members', '3-6 members', '3-7 members', '4 members', '4-5 members', '4-6 members', '4-7 members', '> 3 members', '5 members', '5-6 members', '5-7 members', '> 4 members', '6 members', '6-7 members', '> 5 members', '7 members', '> 6 members', '> 7 members']);
  carge.RING_SIZE_VALUES = stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 60:1}, 5, 14, [0, 4294967296, xor_0(545460846592, 4294967296), 8589934592, or_0(8589934592, 17179869184), or_0(or_0(8589934592, 17179869184), 34359738368), or_0(or_0(or_0(8589934592, 17179869184), 34359738368), 68719476736), xor_0(545460846592, or_0(4294967296, 274877906944)), 17179869184, or_0(17179869184, 34359738368), or_0(or_0(17179869184, 34359738368), 68719476736), or_0(or_0(or_0(17179869184, 34359738368), 68719476736), 137438953472), xor_0(545460846592, or_0(4294967296, 8589934592)), 34359738368, or_0(34359738368, 68719476736), or_0(or_0(34359738368, 68719476736), 137438953472), or_0(or_0(or_0(34359738368, 68719476736), 137438953472), 274877906944), 68719476736, or_0(68719476736, 137438953472), or_0(or_0(68719476736, 137438953472), 274877906944), 137438953472, or_0(137438953472, 274877906944), 274877906944]);
}
;
defineClass(1163, 1, {1:1});
cggl.Lcom_actelion_research_gui_editor_AtomQueryFeatureDialogBuilder_2_classLit = createForClass('com.actelion.research.gui.editor', 'AtomQueryFeatureDialogBuilder', 1163, cggl.Ljava_lang_Object_2_classLit);
cargg.$clinit_GenericPoint = function $clinit_GenericPoint(){
  cargg.$clinit_GenericPoint = emptyMethod;
  jl.$clinit_Object();
}
;
cargg.GenericPoint = function GenericPoint(){
  cargg.$clinit_GenericPoint();
  Object_0.call(this);
  this.$init_134();
}
;
cargg.GenericPoint_0 = function GenericPoint_0(x_0, y_0){
  cargg.$clinit_GenericPoint();
  Object_0.call(this);
  this.$init_134();
  this.x_0 = x_0;
  this.y_0 = y_0;
}
;
defineClass(30, 1, {30:1, 1:1}, cargg.GenericPoint, cargg.GenericPoint_0);
_.$init_134 = function $init_134(){
}
;
_.distance_1 = function distance_2(p){
  var dx, dy;
  dx = this.x_0 - p.x_0;
  dy = this.y_0 - p.y_0;
  return $wnd.Math.sqrt(dx * dx + dy * dy);
}
;
_.getX_0 = function getX_0(){
  return this.x_0;
}
;
_.getY_0 = function getY_0(){
  return this.y_0;
}
;
_.toString_0 = function toString_16(){
  return 'x:' + this.x_0 + ' y:' + this.y_0;
}
;
_.x_0 = 0;
_.y_0 = 0;
cggl.Lcom_actelion_research_gui_generic_GenericPoint_2_classLit = createForClass('com.actelion.research.gui.generic', 'GenericPoint', 30, cggl.Ljava_lang_Object_2_classLit);
cargg.$clinit_GenericShape = function $clinit_GenericShape(){
  cargg.$clinit_GenericShape = emptyMethod;
}
;
cggl.Lcom_actelion_research_gui_generic_GenericShape_2_classLit = createForInterface('com.actelion.research.gui.generic', 'GenericShape');
cargg.$clinit_GenericPolygon = function $clinit_GenericPolygon(){
  cargg.$clinit_GenericPolygon = emptyMethod;
  jl.$clinit_Object();
}
;
cargg.GenericPolygon = function GenericPolygon(size_0){
  cargg.$clinit_GenericPolygon();
  Object_0.call(this);
  this.$init_135();
  this.mX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, size_0, 15, 1);
  this.mY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, size_0, 15, 1);
  this.mIndex = 0;
}
;
defineClass(377, 1, {1:1}, cargg.GenericPolygon);
_.$init_135 = function $init_135(){
}
;
_.addPoint = function addPoint(x_0, y_0){
  if (this.mIndex == this.mX.length) {
    this.mX = ju.copyOf_8(this.mX, 2 * this.mIndex);
    this.mY = ju.copyOf_8(this.mY, 2 * this.mIndex);
  }
  this.mX[this.mIndex] = x_0;
  this.mY[this.mIndex] = y_0;
  this.mIndex++;
}
;
_.clear_0 = function clear_7(){
  this.mIndex = 0;
}
;
_.contains_0 = function contains_5(x_0, y_0){
  var i, j, result;
  result = false;
  j = this.mIndex - 1;
  for (i = 0; i < this.mIndex; i++) {
    if (this.mY[i] > y_0 != this.mY[j] > y_0 && x_0 < (this.mX[j] - this.mX[i]) * (y_0 - this.mY[i]) / (this.mY[j] - this.mY[i]) + this.mX[i])
      result = !result;
    j = i;
  }
  return result;
}
;
_.getSize_0 = function getSize_4(){
  return this.mIndex;
}
;
_.getX = function getX_1(i){
  return this.mX[i];
}
;
_.getY = function getY_1(i){
  return this.mY[i];
}
;
_.mIndex = 0;
cggl.Lcom_actelion_research_gui_generic_GenericPolygon_2_classLit = createForClass('com.actelion.research.gui.generic', 'GenericPolygon', 377, cggl.Ljava_lang_Object_2_classLit);
cargg.$clinit_GenericRectangle = function $clinit_GenericRectangle(){
  cargg.$clinit_GenericRectangle = emptyMethod;
  jl.$clinit_Object();
}
;
cargg.GenericRectangle = function GenericRectangle(){
  cargg.$clinit_GenericRectangle();
  Object_0.call(this);
  this.$init_136();
}
;
cargg.GenericRectangle_0 = function GenericRectangle_0(x_0, y_0, w, h){
  cargg.$clinit_GenericRectangle();
  Object_0.call(this);
  this.$init_136();
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.width_0 = w;
  this.height_0 = h;
}
;
defineClass(34, 1, {34:1, 1:1}, cargg.GenericRectangle, cargg.GenericRectangle_0);
_.$init_136 = function $init_136(){
}
;
_.contains_0 = function contains_6(x_0, y_0){
  return x_0 >= this.x_0 && x_0 <= this.x_0 + this.width_0 && y_0 >= this.y_0 && y_0 <= this.y_0 + this.height_0;
}
;
_.contains_2 = function contains_7(r){
  return this.contains_0(r.x_0, r.y_0) && this.contains_0(r.x_0 + r.width_0, r.y_0 + r.height_0);
}
;
_.getHeight = function getHeight_0(){
  return this.height_0;
}
;
_.getWidth = function getWidth_0(){
  return this.width_0;
}
;
_.getX_0 = function getX_2(){
  return this.x_0;
}
;
_.getY_0 = function getY_2(){
  return this.y_0;
}
;
_.intersects = function intersects(r){
  return this.x_0 < r.x_0 + r.width_0 && this.y_0 < r.y_0 + r.height_0 && r.x_0 < this.x_0 + this.width_0 && r.y_0 < this.y_0 + this.height_0;
}
;
_.set_2 = function set_5(x_0, y_0, w, h){
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.width_0 = w;
  this.height_0 = h;
}
;
_.toString_0 = function toString_17(){
  return 'x:' + this.x_0 + ' y:' + this.y_0 + ' w:' + this.width_0 + ' h:' + this.height_0;
}
;
_.union = function union(r){
  var h, w, x_0, y_0;
  x_0 = $wnd.Math.min(this.x_0, r.x_0);
  y_0 = $wnd.Math.min(this.y_0, r.y_0);
  w = $wnd.Math.max(this.x_0 + this.width_0, r.x_0 + r.width_0) - x_0;
  h = $wnd.Math.max(this.y_0 + this.height_0, r.y_0 + r.height_0) - y_0;
  return new cargg.GenericRectangle_0(x_0, y_0, w, h);
}
;
_.height_0 = 0;
_.width_0 = 0;
_.x_0 = 0;
_.y_0 = 0;
cggl.Lcom_actelion_research_gui_generic_GenericRectangle_2_classLit = createForClass('com.actelion.research.gui.generic', 'GenericRectangle', 34, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_EntryPoint = function $clinit_EntryPoint(){
  cggcc.$clinit_EntryPoint = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_EntryPoint_2_classLit = createForInterface('com.google.gwt.core.client', 'EntryPoint');
cargc.$clinit_Core = function $clinit_Core(){
  cargc.$clinit_Core = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.Core = function Core(){
  cargc.$clinit_Core();
  Object_0.call(this);
  this.$init_137();
}
;
defineClass(395, 1, {99:1, 1:1}, cargc.Core);
_.$init_137 = function $init_137(){
}
;
_.onModuleLoad = function onModuleLoad(){
}
;
cggl.Lcom_actelion_research_gwt_core_Core_2_classLit = createForClass('com.actelion.research.gwt.core', 'Core', 395, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSCanonizerUtil = function $clinit_JSCanonizerUtil(){
  cargc.$clinit_JSCanonizerUtil = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSCanonizerUtil = function JSCanonizerUtil(){
  cargc.$clinit_JSCanonizerUtil();
  Object_0.call(this);
  this.$init_138();
}
;
cargc.getIDCode_4 = function getIDCode_4(mol, type_0){
  cargc.$clinit_JSCanonizerUtil();
  switch (type_0) {
    case 0:
      return carc2.getIDCode_0(mol.getStereoMolecule(), (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.NORMAL), false);
    case 1:
      return carc2.getIDCode_0(mol.getStereoMolecule(), (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.NOSTEREO), false);
    case 2:
      return carc2.getIDCode_0(mol.getStereoMolecule(), (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.BACKBONE), false);
    case 3:
      return carc2.getIDCode_0(mol.getStereoMolecule(), (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.TAUTOMER), false);
    case 4:
      return carc2.getIDCode_0(mol.getStereoMolecule(), (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.NOSTEREO_TAUTOMER), false);
    default:return carc2.getIDCode_0(mol.getStereoMolecule(), (carc2.$clinit_CanonizerUtil$IDCODE_TYPE() , carc2.NORMAL), false);
  }
}
;
defineClass(877, 1, {1:1}, cargc.JSCanonizerUtil);
_.$init_138 = function $init_138(){
}
;
cargc.BACKBONE_0 = 2;
cargc.NORMAL_0 = 0;
cargc.NOSTEREO_0 = 1;
cargc.NOSTEREO_TAUTOMER_0 = 4;
cargc.TAUTOMER_0 = 3;
cggl.Lcom_actelion_research_gwt_core_JSCanonizerUtil_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSCanonizerUtil', 877, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSConformerGenerator = function $clinit_JSConformerGenerator(){
  cargc.$clinit_JSConformerGenerator = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSConformerGenerator = function JSConformerGenerator(seed){
  cargc.$clinit_JSConformerGenerator();
  Object_0.call(this);
  this.$init_139();
  this.oclGenerator = new ooccg.ConformerGenerator_0(fromInt_0(seed), false);
}
;
defineClass(878, 1, {1:1}, cargc.JSConformerGenerator);
_.$init_139 = function $init_139(){
}
;
_.getConformerCount = function getConformerCount(){
  return this.oclGenerator.getConformerCount_0();
}
;
_.getNextConformerAsMolecule = function getNextConformerAsMolecule(mol){
  var arg, newMol;
  arg = isNull(mol)?null:mol.getStereoMolecule();
  newMol = this.oclGenerator.getNextConformerAsMolecule_0(arg);
  if (isNull(newMol))
    return null;
  if (jsEquals(newMol, arg))
    return mol;
  return new cargm.JSMolecule_1(newMol);
}
;
_.getOCL = function getOCL(){
  return $wnd.OCL;
}
;
_.getOneConformerAsMolecule = function getOneConformerAsMolecule(mol){
  var result;
  result = this.oclGenerator.getOneConformerAsMolecule_0(mol.getStereoMolecule());
  return isNull(result)?null:mol;
}
;
_.getPotentialConformerCount = function getPotentialConformerCount(){
  return this.oclGenerator.getPotentialConformerCount_0();
}
;
_.initializeConformers_0 = function initializeConformers(mol, strategy, maxTorsionSets, use60degreeSteps){
  return this.oclGenerator.initializeConformers_1(mol.getStereoMolecule(), strategy, maxTorsionSets, use60degreeSteps);
}
;
_.initializeConformers = function initializeConformers_0(mol, options){
  if (options === undefined)
    options = {};
  var strategy = options.strategy;
  if (strategy === undefined)
    strategy = 3;
  var maxTorsionSets = options.maxTorsionSets;
  if (maxTorsionSets === undefined)
    maxTorsionSets = 100000;
  var use60degreeSteps = options.use60degreeSteps;
  if (use60degreeSteps === undefined)
    use60degreeSteps = false;
  return this.initializeConformers_0(mol, strategy, maxTorsionSets, use60degreeSteps);
}
;
cargc.STRATEGY_ADAPTIVE_RANDOM = 4;
cargc.STRATEGY_LIKELY_RANDOM = 3;
cargc.STRATEGY_LIKELY_SYSTEMATIC = 1;
cargc.STRATEGY_PURE_RANDOM = 2;
cggl.Lcom_actelion_research_gwt_core_JSConformerGenerator_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSConformerGenerator', 878, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSDrugScoreCalculator = function $clinit_JSDrugScoreCalculator(){
  cargc.$clinit_JSDrugScoreCalculator = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSDrugScoreCalculator = function JSDrugScoreCalculator(){
  cargc.$clinit_JSDrugScoreCalculator();
  Object_0.call(this);
  this.$init_140();
}
;
cargc.calculate_0 = function calculate_0(mCLogP, mSolubility, mMolweight, mDruglikeness, toxRisks){
  cargc.$clinit_JSDrugScoreCalculator();
  return carcp.calculate(mCLogP, mSolubility, mMolweight, mDruglikeness, toxRisks);
}
;
defineClass(879, 1, {1:1}, cargc.JSDrugScoreCalculator);
_.$init_140 = function $init_140(){
}
;
cggl.Lcom_actelion_research_gwt_core_JSDrugScoreCalculator_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSDrugScoreCalculator', 879, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSDruglikenessPredictor = function $clinit_JSDruglikenessPredictor(){
  cargc.$clinit_JSDruglikenessPredictor = emptyMethod;
  jl.$clinit_Object();
  cargc.services = cargc.getInstance();
}
;
cargc.JSDruglikenessPredictor = function JSDruglikenessPredictor(){
  cargc.$clinit_JSDruglikenessPredictor();
  Object_0.call(this);
  this.$init_141();
  this.predictor = new carcp.DruglikenessPredictor;
}
;
defineClass(880, 1, {1:1}, cargc.JSDruglikenessPredictor);
_.$init_141 = function $init_141(){
}
;
_.assessDruglikeness = function assessDruglikeness_0(molecule){
  return this.predictor.assessDruglikeness_0(molecule.getStereoMolecule(), cargc.services.getThreadMaster());
}
;
_.getDetail = function getDetail_4(){
  return cargc.convertParameterizedStringList(this.predictor.getDetail_1());
}
;
_.getDruglikenessString = function getDruglikenessString_0(molecule){
  return this.predictor.getDruglikenessString_0(molecule.getStereoMolecule());
}
;
_.getOCL = function getOCL_0(){
  return $wnd.OCL;
}
;
cargc.DRUGLIKENESS_UNKNOWN = -999;
cggl.Lcom_actelion_research_gwt_core_JSDruglikenessPredictor_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSDruglikenessPredictor', 880, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSForceFieldMMFF94 = function $clinit_JSForceFieldMMFF94(){
  cargc.$clinit_JSForceFieldMMFF94 = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSForceFieldMMFF94 = function JSForceFieldMMFF94(molecule, tablename, options){
  cargc.$clinit_JSForceFieldMMFF94();
  Object_0.call(this);
  this.$init_142();
  cargc.initializeTables(tablename);
  this.oclMmff = new carcfm.ForceFieldMMFF94_0(molecule.getStereoMolecule(), tablename, new ju.HashMap);
}
;
cargc.initializeTables = function initializeTables(tablename){
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(tablename, 'MMFF94') && !cargc.isMMFF94Init) {
    carcfm.initialize_2('MMFF94');
    cargc.isMMFF94Init = true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(tablename, 'MMFF94s') && !cargc.isMMFF94SInit) {
    carcfm.initialize_2('MMFF94s');
    cargc.isMMFF94SInit = true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(tablename, 'MMFF94s+') && !cargc.isMMFF94SPLUSInit) {
    carcfm.initialize_2('MMFF94s+');
    cargc.isMMFF94SPLUSInit = true;
  }
}
;
defineClass(881, 1, {1:1}, cargc.JSForceFieldMMFF94);
_.$init_142 = function $init_142(){
}
;
_._minimise = function _minimise(maxIts, gradTol, funcTol){
  return this.oclMmff.minimise_0(maxIts, gradTol, funcTol);
}
;
_.getOCL = function getOCL_1(){
  return $wnd.OCL;
}
;
_.getTotalEnergy = function getTotalEnergy_1(){
  return this.oclMmff.getTotalEnergy_0();
}
;
_.size = function size_4(){
  return this.oclMmff.size_1();
}
;
cargc.MMFF94_0 = 'MMFF94';
cargc.MMFF94S_0 = 'MMFF94s';
cargc.MMFF94SPLUS_0 = 'MMFF94s+';
cargc.isMMFF94Init = false;
cargc.isMMFF94SInit = false;
cargc.isMMFF94SPLUSInit = false;
cggl.Lcom_actelion_research_gwt_core_JSForceFieldMMFF94_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSForceFieldMMFF94', 881, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSMoleculeProperties = function $clinit_JSMoleculeProperties(){
  cargc.$clinit_JSMoleculeProperties = emptyMethod;
  carcp.$clinit_PropertyCalculator();
}
;
cargc.JSMoleculeProperties = function JSMoleculeProperties(mol){
  cargc.$clinit_JSMoleculeProperties();
  carcp.PropertyCalculator.call(this, mol.getStereoMolecule());
  this.$init_143();
}
;
defineClass(883, 90, {1:1}, cargc.JSMoleculeProperties);
_.$init_143 = function $init_143(){
}
;
defineProperties(_, {acceptorCount:{'get':function getAcceptorCount_0(){
  return getClassPrototype(90).getAcceptorCount.call(this);
}
}});
_.getAcceptorCount = function(){
  return this.acceptorCount;
}
;
defineProperties(_, {donorCount:{'get':function getDonorCount_0(){
  return getClassPrototype(90).getDonorCount.call(this);
}
}});
_.getDonorCount = function(){
  return this.donorCount;
}
;
defineProperties(_, {logP:{'get':function getLogP_0(){
  return getClassPrototype(90).getLogP.call(this);
}
}});
_.getLogP = function(){
  return this.logP;
}
;
defineProperties(_, {logPString:{'get':function getLogPString(){
  return cargc.convertParameterizedStringList(getClassPrototype(90).getLogPDetail.call(this));
}
}});
defineProperties(_, {logS:{'get':function getLogS_0(){
  return getClassPrototype(90).getLogS.call(this);
}
}});
_.getLogS = function(){
  return this.logS;
}
;
defineProperties(_, {logSString:{'get':function getLogSString(){
  return cargc.convertParameterizedStringList(getClassPrototype(90).getLogSDetail.call(this));
}
}});
defineProperties(_, {polarSurfaceArea:{'get':function getPolarSurfaceArea_0(){
  return getClassPrototype(90).getPolarSurfaceArea.call(this);
}
}});
_.getPolarSurfaceArea = function(){
  return this.polarSurfaceArea;
}
;
defineProperties(_, {polarSurfaceAreaString:{'get':function getPolarSurfaceAreaString(){
  return cargc.convertParameterizedStringList(getClassPrototype(90).getPolarSurfaceAreaDetail.call(this));
}
}});
defineProperties(_, {rotatableBondCount:{'get':function getRotatableBondCount_1(){
  return getClassPrototype(90).getRotatableBondCount_0.call(this);
}
}});
_.getRotatableBondCount_0 = function(){
  return this.rotatableBondCount;
}
;
defineProperties(_, {stereoCenterCount:{'get':function getStereoCenterCount_1(){
  return getClassPrototype(90).getStereoCenterCount_0.call(this);
}
}});
_.getStereoCenterCount_0 = function(){
  return this.stereoCenterCount;
}
;
cggl.Lcom_actelion_research_gwt_core_JSMoleculeProperties_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSMoleculeProperties', 883, cggl.Lcom_actelion_research_chem_prediction_PropertyCalculator_2_classLit);
cargc.$clinit_JSReactionEncoder = function $clinit_JSReactionEncoder(){
  cargc.$clinit_JSReactionEncoder = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSReactionEncoder = function JSReactionEncoder(){
  cargc.$clinit_JSReactionEncoder();
  Object_0.call(this);
  this.$init_144();
}
;
cargc.decode_2 = function decode_2(s){
  cargc.$clinit_JSReactionEncoder();
  return new cargm.JSReaction(carcr.decode_1(s, true, null));
}
;
cargc.encode_1 = function encode_1(reaction){
  cargc.$clinit_JSReactionEncoder();
  return carcr.encode(reaction.getReaction_1(), false, 0);
}
;
defineClass(884, 1, {1:1}, cargc.JSReactionEncoder);
_.$init_144 = function $init_144(){
}
;
cggl.Lcom_actelion_research_gwt_core_JSReactionEncoder_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSReactionEncoder', 884, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSReactor = function $clinit_JSReactor(){
  cargc.$clinit_JSReactor = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSReactor = function JSReactor(reaction){
  cargc.$clinit_JSReactor();
  Object_0.call(this);
  this.$init_145();
  this.reactor = new carcr.Reactor_0(reaction.getReaction_1(), true);
}
;
defineClass(885, 1, {1:1}, cargc.JSReactor);
_.$init_145 = function $init_145(){
}
;
_.getProducts = function getProducts_1(){
  var i, j, jsProducts, products;
  products = this.reactor.getProducts_1();
  if (jsEquals(products, null) || products.length == 0) {
    return initMultidimensionalArray(cggl.Lcom_actelion_research_gwt_minimal_JSMolecule_2_classLit, [{4:1, 1:1, 7:1}, {257:1, 4:1, 1:1, 7:1}], [257, 59], 0, [0, 0], 2);
  }
  jsProducts = initMultidimensionalArray(cggl.Lcom_actelion_research_gwt_minimal_JSMolecule_2_classLit, [{4:1, 1:1, 7:1}, {257:1, 4:1, 1:1, 7:1}], [257, 59], 0, [products.length, products[0].length], 2);
  for (i = 0; i < products.length; i++) {
    for (j = 0; j < products[0].length; j++) {
      setCheck(jsProducts[i], j, new cargm.JSMolecule_1(products[i][j]));
    }
  }
  return jsProducts;
}
;
_.setReactant = function setReactant_0(no, reactant){
  return this.reactor.setReactant_0(no, reactant.getStereoMolecule());
}
;
cggl.Lcom_actelion_research_gwt_core_JSReactor_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSReactor', 885, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSToxicityPredictor = function $clinit_JSToxicityPredictor(){
  cargc.$clinit_JSToxicityPredictor = emptyMethod;
  jl.$clinit_Object();
  cargc.services_0 = cargc.getInstance();
  cargc.RISK_NAMES = (carcp.$clinit_ToxicityPredictor() , carcp.cRiskNameN);
}
;
cargc.JSToxicityPredictor = function JSToxicityPredictor(){
  cargc.$clinit_JSToxicityPredictor();
  Object_0.call(this);
  this.$init_146();
  this.predictor = new carcp.ToxicityPredictor;
}
;
defineClass(886, 1, {1:1}, cargc.JSToxicityPredictor);
_.$init_146 = function $init_146(){
}
;
_.assessRisk = function assessRisk_0(molecule, riskType){
  return this.predictor.assessRisk_0(molecule.getStereoMolecule(), riskType, cargc.services_0.getThreadMaster());
}
;
_.getDetail = function getDetail_5(molecule, riskType){
  return cargc.convertParameterizedStringList(this.predictor.getDetail_2(molecule.getStereoMolecule(), riskType));
}
;
_.getOCL = function getOCL_2(){
  return $wnd.OCL;
}
;
cargc.RISK_HIGH = 3;
cargc.RISK_LOW = 2;
cargc.RISK_NO = 1;
cargc.RISK_UNKNOWN = 0;
cargc.TYPE_IRRITANT = 2;
cargc.TYPE_MUTAGENIC = 0;
cargc.TYPE_REPRODUCTIVE_EFFECTIVE = 3;
cargc.TYPE_TUMORIGENIC = 1;
cggl.Lcom_actelion_research_gwt_core_JSToxicityPredictor_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSToxicityPredictor', 886, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_JSTransformer = function $clinit_JSTransformer(){
  cargc.$clinit_JSTransformer = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.JSTransformer = function JSTransformer(reactant, product, name_0){
  cargc.$clinit_JSTransformer();
  Object_0.call(this);
  this.$init_147();
  this.transformer = new carcr.Transformer(reactant.getStereoMolecule(), product.getStereoMolecule(), name_0);
}
;
defineClass(887, 1, {1:1}, cargc.JSTransformer);
_.$init_147 = function $init_147(){
}
;
_.applyTransformation = function applyTransformation_1(molecule, matchNo){
  this.transformer.applyTransformation_1(molecule.getStereoMolecule(), matchNo);
}
;
_.setMolecule = function setMolecule_3(molecule, countMode){
  return this.transformer.setMolecule_3(molecule.getStereoMolecule(), 4);
}
;
cggl.Lcom_actelion_research_gwt_core_JSTransformer_2_classLit = createForClass('com.actelion.research.gwt.core', 'JSTransformer', 887, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_Services = function $clinit_Services(){
  cargc.$clinit_Services = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.Services = function Services(){
  Object_0.call(this);
  this.$init_148();
}
;
cargc.getInstance = function getInstance(){
  cargc.$clinit_Services();
  if (isNull(cargc.instance_0)) {
    cargc.instance_0 = new cargc.Services;
  }
  return cargc.instance_0;
}
;
defineClass(432, 1, {1:1}, cargc.Services);
_.$init_148 = function $init_148(){
  this.druglikenessPredictor = null;
  this.toxicityPredictor = null;
  this.threadMaster = null;
}
;
_.getThreadMaster = function getThreadMaster(){
  if (isNull(this.threadMaster)) {
    this.threadMaster = new cargc.Services$CustomThreadMaster(this);
  }
  return this.threadMaster;
}
;
cargc.instance_0 = null;
cggl.Lcom_actelion_research_gwt_core_Services_2_classLit = createForClass('com.actelion.research.gwt.core', 'Services', 432, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_Services$CustomThreadMaster = function $clinit_Services$CustomThreadMaster(){
  cargc.$clinit_Services$CustomThreadMaster = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.Services$CustomThreadMaster = function Services$CustomThreadMaster(this$0){
  cargc.$clinit_Services$CustomThreadMaster();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_149();
}
;
defineClass(433, 1, {1:1}, cargc.Services$CustomThreadMaster);
_.$init_149 = function $init_149(){
}
;
_.threadMustDie = function threadMustDie(){
  return false;
}
;
cggl.Lcom_actelion_research_gwt_core_Services$CustomThreadMaster_2_classLit = createForClass('com.actelion.research.gwt.core', 'Services/CustomThreadMaster', 433, cggl.Ljava_lang_Object_2_classLit);
cargc.$clinit_Util = function $clinit_Util(){
  cargc.$clinit_Util = emptyMethod;
  jl.$clinit_Object();
}
;
cargc.convertParameterizedStringList = function convertParameterizedStringList(list){
  cargc.$clinit_Util();
  var array, i, size_0;
  size_0 = list.getSize_0();
  array = cargc.newJsArray(size_0);
  for (i = 0; i < size_0; i++) {
    cggcc.$set(array, i, cargc.getParameterizedString(list.getStringAt(i), list.getStringTypeAt(i)));
  }
  return array;
}
;
cargc.getParameterizedString = function getParameterizedString(string, stringType){
  return {type:stringType, value:string};
}
;
cargc.newJsArray = function newJsArray(length_0){
  return new Array(length_0);
}
;
defineClass(972, 1, {1:1});
cggl.Lcom_actelion_research_gwt_core_Util_2_classLit = createForClass('com.actelion.research.gwt.core', 'Util', 972, cggl.Ljava_lang_Object_2_classLit);
carsgei.$clinit_IKeyCode = function $clinit_IKeyCode(){
  carsgei.$clinit_IKeyCode = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_io_IKeyCode_2_classLit = createForInterface('com.actelion.research.share.gui.editor.io', 'IKeyCode');
cargge.$clinit_ACTKeyCode = function $clinit_ACTKeyCode(){
  cargge.$clinit_ACTKeyCode = emptyMethod;
  jl.$clinit_Object();
  cargge.DELETE = new cargge.ACTKeyCode(46, 'Delete', 0);
  cargge.ESCAPE = new cargge.ACTKeyCode(27, 'Escape', 0);
  cargge.BACK_SPACE = new cargge.ACTKeyCode(8, 'Escape', 0);
  cargge.ENTER = new cargge.ACTKeyCode(13, 'Escape', 0);
}
;
cargge.ACTKeyCode = function ACTKeyCode(code_0, name_0, mask){
  cargge.$clinit_ACTKeyCode();
  Object_0.call(this);
  this.$init_150();
  this.code_0 = code_0;
  this.name_0 = name_0;
  this.mask = mask;
  this.ch_0 = jl.valueOf_29(narrow_char(code_0));
}
;
defineClass(160, 1, {160:1, 1:1}, cargge.ACTKeyCode);
_.$init_150 = function $init_150(){
}
;
_.equals_0 = function equals_16(o){
  var keyCode;
  if (maskUndefined(this) === maskUndefined(o)) {
    return true;
  }
  if (jsEquals(o, null) || jsNotEquals(jl.getClass__Ljava_lang_Class___devirtual$(this), jl.getClass__Ljava_lang_Class___devirtual$(o))) {
    return false;
  }
  keyCode = castTo(o, 160);
  if (this.code_0 != keyCode.code_0) {
    return false;
  }
  return true;
}
;
_.getName_0 = function getName_3(){
  return this.name_0;
}
;
_.hashCode_1 = function hashCode_5(){
  return this.code_0;
}
;
_.code_0 = 0;
_.mask = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTKeyCode_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTKeyCode', 160, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ACTKeyCode$KeyCodeClass = function $clinit_ACTKeyCode$KeyCodeClass(){
  cargge.$clinit_ACTKeyCode$KeyCodeClass = emptyMethod;
}
;
defineClass(1321, 1, {1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_ACTKeyCode$KeyCodeClass_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTKeyCode/KeyCodeClass', 1321, cggl.Ljava_lang_Object_2_classLit);
carsgei.$clinit_IKeyEvent = function $clinit_IKeyEvent(){
  carsgei.$clinit_IKeyEvent = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_io_IKeyEvent_2_classLit = createForInterface('com.actelion.research.share.gui.editor.io', 'IKeyEvent');
cargge.$clinit_ACTKeyEvent = function $clinit_ACTKeyEvent(){
  cargge.$clinit_ACTKeyEvent = emptyMethod;
  jl.$clinit_Object();
  cargge.NAVIGATION = 1 << 1;
  cargge.ARROW = 1 << 2;
  cargge.MODIFIER = 1 << 3;
  cargge.LETTER = 1 << 4;
  cargge.DIGIT = 1 << 5;
  cargge.KEYPAD = 1 << 6;
  cargge.WHITESPACE = 1 << 7;
  cargge.MEDIA = 1 << 8;
}
;
cargge.ACTKeyEvent = function ACTKeyEvent(code_0, evt, mask){
  cargge.$clinit_ACTKeyEvent();
  Object_0.call(this);
  this.$init_151();
  this.evt = evt;
  this.code_0 = code_0 >= 65 && code_0 <= 90 && !this.shift_0?code_0 + 32:code_0;
  this.shift_0 = evt.isShiftKeyDown();
  this.mask = mask;
}
;
defineClass(479, 1, {1:1}, cargge.ACTKeyEvent);
_.$init_151 = function $init_151(){
  this.mask = 0;
}
;
_.getCode = function getCode(){
  var c;
  c = new cargge.ACTKeyCode(this.code_0, '', this.mask);
  return c;
}
;
_.getText = function getText_0(){
  var s;
  s = '' + charToString(narrow_char(this.code_0));
  return s;
}
;
_.isAltDown = function isAltDown(){
  return this.evt.isAltKeyDown();
}
;
_.isShiftDown = function isShiftDown(){
  return this.evt.isShiftKeyDown();
}
;
_.toString_0 = function toString_18(){
  return 'ACT Key Event ' + this.code_0 + ' ' + this.shift_0 + ' ' + this.mask;
}
;
_.code_0 = 0;
_.mask = 0;
_.shift_0 = false;
cargge.ARROW = 0;
cargge.DIGIT = 0;
cargge.FUNCTION = 1;
cargge.KEYPAD = 0;
cargge.LETTER = 0;
cargge.MEDIA = 0;
cargge.MODIFIER = 0;
cargge.NAVIGATION = 0;
cargge.WHITESPACE = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTKeyEvent_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTKeyEvent', 479, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ACTKeyEventHandler = function $clinit_ACTKeyEventHandler(){
  cargge.$clinit_ACTKeyEventHandler = emptyMethod;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTKeyEventHandler_2_classLit = createForInterface('com.actelion.research.gwt.gui.editor', 'ACTKeyEventHandler');
carsgei.$clinit_IMouseEvent = function $clinit_IMouseEvent(){
  carsgei.$clinit_IMouseEvent = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_io_IMouseEvent_2_classLit = createForInterface('com.actelion.research.share.gui.editor.io', 'IMouseEvent');
cargge.$clinit_ACTMouseEvent = function $clinit_ACTMouseEvent(){
  cargge.$clinit_ACTMouseEvent = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ACTMouseEvent = function ACTMouseEvent(evt){
  cargge.$clinit_ACTMouseEvent();
  Object_0.call(this);
  this.$init_152();
  this._evt = evt;
}
;
defineClass(165, 1, {1:1}, cargge.ACTMouseEvent);
_.$init_152 = function $init_152(){
}
;
_.getX_0 = function getX_3(){
  return this._evt.getX_1();
}
;
_.getY_0 = function getY_3(){
  return this._evt.getY_1();
}
;
_.isAltDown = function isAltDown_0(){
  return this._evt.isAltKeyDown();
}
;
_.isShiftDown = function isShiftDown_0(){
  return this._evt.isShiftKeyDown();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTMouseEvent_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTMouseEvent', 165, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ACTTouchEvent = function $clinit_ACTTouchEvent(){
  cargge.$clinit_ACTTouchEvent = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ACTTouchEvent = function ACTTouchEvent(evt, mousePoint){
  cargge.$clinit_ACTTouchEvent();
  Object_0.call(this);
  this.$init_153();
  this._evt = evt;
  this._mousePoint = mousePoint;
}
;
defineClass(262, 1, {1:1}, cargge.ACTTouchEvent);
_.$init_153 = function $init_153(){
}
;
_.getX_0 = function getX_4(){
  return this._mousePoint.getX_1();
}
;
_.getY_0 = function getY_4(){
  return this._mousePoint.getY_1();
}
;
_.isAltDown = function isAltDown_1(){
  return this._evt.isAltKeyDown();
}
;
_.isShiftDown = function isShiftDown_1(){
  return this._evt.isShiftKeyDown();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ACTTouchEvent_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ACTTouchEvent', 262, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ButtonPressListener = function $clinit_ButtonPressListener(){
  cargge.$clinit_ButtonPressListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ButtonPressListener_2_classLit = createForInterface('com.actelion.research.gwt.gui.editor', 'ButtonPressListener');
cgges.$clinit_EventHandler = function $clinit_EventHandler(){
  cgges.$clinit_EventHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_shared_EventHandler_2_classLit = createForInterface('com.google.gwt.event.shared', 'EventHandler');
cggedc.$clinit_ContextMenuHandler = function $clinit_ContextMenuHandler(){
  cggedc.$clinit_ContextMenuHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_ContextMenuHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'ContextMenuHandler');
cargge.$clinit_ContextHandler = function $clinit_ContextHandler(){
  cargge.$clinit_ContextHandler = emptyMethod;
}
;
defineClass(903, 1, {21:1, 1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_ContextHandler_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ContextHandler', 903, cggl.Ljava_lang_Object_2_classLit);
cggcc2.$clinit_Cell = function $clinit_Cell(){
  cggcc2.$clinit_Cell = emptyMethod;
}
;
cggl.Lcom_google_gwt_cell_client_Cell_2_classLit = createForInterface('com.google.gwt.cell.client', 'Cell');
cggcc2.$clinit_AbstractCell = function $clinit_AbstractCell(){
  cggcc2.$clinit_AbstractCell = emptyMethod;
}
;
defineClass(906, 1, {1:1});
cggl.Lcom_google_gwt_cell_client_AbstractCell_2_classLit = createForClass('com.google.gwt.cell.client', 'AbstractCell', 906, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ContextHandler$MenuCell = function $clinit_ContextHandler$MenuCell(){
  cargge.$clinit_ContextHandler$MenuCell = emptyMethod;
}
;
defineClass(905, 906, {1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_ContextHandler$MenuCell_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ContextHandler/MenuCell', 905, cggl.Lcom_google_gwt_cell_client_AbstractCell_2_classLit);
cargge.$clinit_ContextHandler$MenuItem = function $clinit_ContextHandler$MenuItem(){
  cargge.$clinit_ContextHandler$MenuItem = emptyMethod;
}
;
defineClass(904, 1, {1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_ContextHandler$MenuItem_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ContextHandler/MenuItem', 904, cggl.Ljava_lang_Object_2_classLit);
carsgel.$clinit_IChangeListener = function $clinit_IChangeListener(){
  carsgel.$clinit_IChangeListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_listeners_IChangeListener_2_classLit = createForInterface('com.actelion.research.share.gui.editor.listeners', 'IChangeListener');
cargge.$clinit_DrawArea = function $clinit_DrawArea(){
  cargge.$clinit_DrawArea = emptyMethod;
  jl.$clinit_Object();
  cargge.WHITE = cggcdc.make_0('WHITE');
}
;
cargge.DrawArea = function DrawArea(m){
  cargge.$clinit_DrawArea();
  Object_0.call(this);
  this.$init_154();
  this.model = m;
  this.builder = this.model.getGeomFactory();
  this.model.addChangeListener(this);
  cargge.instanceCount++;
}
;
cargge.copy_0 = function copy_0(text_0){
  var textArea = document.createElement('textarea');
  textArea.value = text_0;
  textArea.id = 'copyItem';
  document.body.appendChild(textArea);
  textArea.select();
  document.execCommand('Copy');
  textArea.remove();
}
;
defineClass(448, 1, {214:1, 1:1}, cargge.DrawArea);
_.$init_154 = function $init_154(){
  this.down = false;
  this.pressed = false;
  this.code_0 = 0;
  this.focus_0 = false;
  this.meta = false;
}
;
_.copyMolecule_1 = function copyMolecule_0(){
  cargge.$clinit_DrawArea();
  var c, molecule;
  molecule = this.model.getMolecule_0();
  c = new carc2.MolfileV3Creator_0(molecule);
  cargge.copy_0(c.getMolfile());
  return true;
}
;
_.createDepictor = function createDepictor(){
  var ctx, mDepictor;
  ctx = this.canvas.getContext2d_0();
  if (this.isReaction())
    mDepictor = new cargge.MoleculeDrawDepictor_0(ctx, new carcr.Reaction_1(this.model.getFragments_0(), this.model.getReactantCount()), this.model.getDrawingObjects_0(), false, this.builder.getDrawConfig());
  else if (this.isMarkush()) {
    mDepictor = new cargge.MoleculeDrawDepictor_1(ctx, this.model.getFragments_0(), this.model.getMarkushCount(), null, this.builder.getDrawConfig());
  }
   else {
    mDepictor = new cargge.MoleculeDrawDepictor(ctx, this.model.getMolecule_0(), this.model.getDrawingObjects_0(), this.builder.getDrawConfig());
  }
  return mDepictor;
}
;
_.createElement_0 = function createElement(parent_0, left, top_0, width_0, height){
  var drawAreaContainer, drawAreaID;
  drawAreaID = 'drawarea' + cargge.instanceCount;
  drawAreaContainer = cggdc.$createDivElement(cggdc.get_19());
  cggdc.$setId(drawAreaContainer, drawAreaID);
  cggdc.$setAttribute(drawAreaContainer, 'style', 'position:absolute;left:' + left + 'px; ' + 'width:' + width_0 + 'px;' + 'height:' + height + 'px;');
  cggdc.$appendChild(parent_0, drawAreaContainer);
  this.canvas = cargge.createScaledCanvas(width_0, height);
  cggdc.$setAttribute(this.canvas.getCanvasElement(), 'style', 'outline: none;');
  this.canvas.addFocusHandler(new cargge.DrawArea$4(this));
  this.canvas.addBlurHandler(new cargge.DrawArea$5(this));
  this.setDrawSize(width_0, height);
  this.panel = new cggucu.FocusPanel;
  this.panel.add_8(this.canvas);
  this.container = cggucu.get_26(drawAreaID);
  this.container.add_8(this.panel);
  this.setupDropHandler();
  return drawAreaContainer;
}
;
_.draw = function draw_0(){
  this.draw_1(this.canvas);
}
;
_.draw_0 = function draw_1(a){
  this.action = a;
  this.draw_1(this.canvas);
}
;
_.draw_1 = function draw_2(canvas){
  var context2d, ctx, depictor, displayMode, fg, h, w;
  fg = this.builder.getForegroundColor();
  context2d = canvas.getContext2d_0();
  w = round_int(this.model.getDisplaySize().getWidth());
  h = round_int(this.model.getDisplaySize().getHeight());
  displayMode = this.model.getDisplayMode();
  this.drawBackground(context2d, w, h);
  if (this.isReaction()) {
    this.model.analyzeFragmentMembership();
    if (this.model.needsLayout())
      this.model.cleanReaction(true);
  }
  depictor = this.createDepictor();
  depictor.setDisplayMode(displayMode);
  if (this.model.needsLayout()) {
    depictor.updateCoords(null, new cargg.GenericRectangle_0(0, 0, w, h), 65536);
  }
  this.model.needsLayout_0(false);
  depictor.paint(context2d);
  if (isNotNull(this.action)) {
    ctx = new carggv.GraphicsContext(context2d);
    ctx.save_0();
    ctx.setStroke(fg);
    ctx.setFill(fg);
    this.action.paint_0(ctx);
    ctx.restore_0();
  }
}
;
_.drawBackground = function drawBackground(context2d, w, h){
  cggcdc.$clearRect(context2d, 0, 0, w, h);
  cggcdc.$setFillStyle(context2d, cargge.WHITE);
  cggcdc.$fillRect(context2d, 0, 0, w, h);
}
;
_.hasFocus_0 = function hasFocus(){
  return this.focus_0;
}
;
_.isMarkush = function isMarkush(){
  var mode;
  mode = this.model.getMode();
  return (mode & 2) != 0;
}
;
_.isReaction = function isReaction(){
  var mode;
  mode = this.model.getMode();
  return (mode & 4) != 0;
}
;
_.isValidKey = function isValidKey(kc){
  cargge.$clinit_DrawArea();
  return kc >= 65 && kc <= 90 || kc >= 48 && kc <= 57 || kc == 46 || kc == 13 || kc == 8;
}
;
_.onChange_0 = function onChange(){
  this.draw_1(this.canvas);
}
;
_.requestFocus = function requestFocus(){
  this.canvas.setFocus(true);
}
;
_.requestLayout = function requestLayout(){
  this.draw_1(this.canvas);
}
;
_.setCursor = function setCursor(c){
  cggdc.$setCursor(cggdc.$getStyle(this.canvas.getCanvasElement()), c);
}
;
_.setDrawSize = function setDrawSize(width_0, height){
  cargge.scaleCanvas(this.canvas, width_0, height);
  this.model.setDisplaySize(new ja.Dimension(width_0, height));
}
;
_.setOnKeyPressed = function setOnKeyPressed(handler){
  this.canvas.addKeyDownHandler(new cargge.DrawArea$6(this));
  this.canvas.addKeyUpHandler(new cargge.DrawArea$7(this, handler));
  this.canvas.addKeyPressHandler(new cargge.DrawArea$8(this));
}
;
_.setOnMouseClicked = function setOnMouseClicked(handler, dbl){
  this.canvas.addClickHandler(handler);
  this.canvas.addDoubleClickHandler(dbl);
}
;
_.setOnMouseDown = function setOnMouseDown(h){
  this.canvas.addMouseDownHandler(h);
}
;
_.setOnMouseDragged = function setOnMouseDragged(handler){
  this.canvas.addMouseMoveHandler(handler);
}
;
_.setOnMouseMove = function setOnMouseMove(handler){
  this.canvas.addMouseMoveHandler(handler);
}
;
_.setOnMouseOut = function setOnMouseOut(h){
  this.canvas.addMouseOutHandler(h);
}
;
_.setOnMouseUp = function setOnMouseUp(handler){
  this.canvas.addMouseUpHandler(handler);
}
;
_.setOnTouchCancel = function setOnTouchCancel(handler){
  this.canvas.addTouchCancelHandler(handler);
}
;
_.setOnTouchEnd = function setOnTouchEnd(handler){
  this.canvas.addTouchEndHandler(handler);
}
;
_.setOnTouchMove = function setOnTouchMove(h){
  this.canvas.addTouchMoveHandler(h);
}
;
_.setOnTouchStart = function setOnTouchStart(h){
  this.canvas.addTouchStartHandler(h);
}
;
_.setSize_1 = function setSize_1(width_0, height){
  this.container.setWidth(width_0 + 'px');
  this.container.setHeight(height + 'px');
  this.panel.setWidth(width_0 + 'px');
  this.panel.setHeight(height + 'px');
  this.setDrawSize(width_0, height);
  this.model.needsLayout_0(true);
  this.draw();
}
;
_.setupDropHandler = function setupDropHandler(){
  this.canvas.addDomHandler(new cargge.DrawArea$1(this), cggedc.getType_18());
  this.canvas.addDomHandler(new cargge.DrawArea$2(this), cggedc.getType_17());
  this.canvas.addDomHandler(new cargge.DrawArea$3(this), cggedc.getType_20());
}
;
_.code_0 = 0;
_.down = false;
_.focus_0 = false;
_.meta = false;
_.pressed = false;
cargge.instanceCount = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea', 448, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DragOverHandler = function $clinit_DragOverHandler(){
  cggedc.$clinit_DragOverHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragOverHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DragOverHandler');
cargge.$clinit_DrawArea$1 = function $clinit_DrawArea$1(){
  cargge.$clinit_DrawArea$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$1 = function DrawArea$1(this$0){
  cargge.$clinit_DrawArea$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_155();
}
;
defineClass(470, 1, {908:1, 21:1, 1:1}, cargge.DrawArea$1);
_.$init_155 = function $init_155(){
}
;
_.onDragOver = function onDragOver(event_0){
  this.this$01.canvas.addStyleName('dropping');
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/1', 470, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DragLeaveHandler = function $clinit_DragLeaveHandler(){
  cggedc.$clinit_DragLeaveHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragLeaveHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DragLeaveHandler');
cargge.$clinit_DrawArea$2 = function $clinit_DrawArea$2(){
  cargge.$clinit_DrawArea$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$2 = function DrawArea$2(this$0){
  cargge.$clinit_DrawArea$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_156();
}
;
defineClass(471, 1, {909:1, 21:1, 1:1}, cargge.DrawArea$2);
_.$init_156 = function $init_156(){
}
;
_.onDragLeave = function onDragLeave(event_0){
  this.this$01.canvas.removeStyleName('dropping');
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/2', 471, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DropHandler = function $clinit_DropHandler(){
  cggedc.$clinit_DropHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DropHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DropHandler');
cargge.$clinit_DrawArea$3 = function $clinit_DrawArea$3(){
  cargge.$clinit_DrawArea$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$3 = function DrawArea$3(this$0){
  cargge.$clinit_DrawArea$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_157();
}
;
defineClass(472, 1, {910:1, 21:1, 1:1}, cargge.DrawArea$3);
_.$init_157 = function $init_157(){
}
;
_.onDrop = function onDrop(event_0){
  var e, idcode, mol, parser;
  try {
    idcode = event_0.getData_0('text');
    mol = new carc2.StereoMolecule;
    parser = new carc2.IDCodeParser;
    parser.parse_0(mol, idcode);
    this.this$01.model.setNewMolecule();
    this.this$01.model.addMolecule_2(mol, 0, 0);
    event_0.preventDefault_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      carggv.console_0('Cannot drop molecule: ' + e);
    }
     else 
      throw toJs($e0);
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/3', 472, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_FocusHandler = function $clinit_FocusHandler(){
  cggedc.$clinit_FocusHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_FocusHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'FocusHandler');
cargge.$clinit_DrawArea$4 = function $clinit_DrawArea$4(){
  cargge.$clinit_DrawArea$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$4 = function DrawArea$4(this$0){
  cargge.$clinit_DrawArea$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_158();
}
;
defineClass(473, 1, {321:1, 21:1, 1:1}, cargge.DrawArea$4);
_.$init_158 = function $init_158(){
}
;
_.onFocus = function onFocus(event_0){
  this.this$01.focus_0 = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/4', 473, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_BlurHandler = function $clinit_BlurHandler(){
  cggedc.$clinit_BlurHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_BlurHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'BlurHandler');
cargge.$clinit_DrawArea$5 = function $clinit_DrawArea$5(){
  cargge.$clinit_DrawArea$5 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$5 = function DrawArea$5(this$0){
  cargge.$clinit_DrawArea$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_159();
}
;
defineClass(474, 1, {322:1, 21:1, 1:1}, cargge.DrawArea$5);
_.$init_159 = function $init_159(){
}
;
_.onBlur = function onBlur(event_0){
  this.this$01.focus_0 = false;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/5', 474, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_KeyDownHandler = function $clinit_KeyDownHandler(){
  cggedc.$clinit_KeyDownHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyDownHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'KeyDownHandler');
cargge.$clinit_DrawArea$6 = function $clinit_DrawArea$6(){
  cargge.$clinit_DrawArea$6 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$6 = function DrawArea$6(this$0){
  cargge.$clinit_DrawArea$6();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_160();
}
;
defineClass(476, 1, {911:1, 21:1, 1:1}, cargge.DrawArea$6);
_.$init_160 = function $init_160(){
}
;
_.onKeyDown = function onKeyDown(event_0){
  this.this$01.down = true;
  this.this$01.meta = event_0.isMetaKeyDown() || event_0.isControlKeyDown();
  this.this$01.code_0 = event_0.getNativeKeyCode();
  if (!this.this$01.meta && this.this$01.isValidKey(this.this$01.code_0)) {
    event_0.stopPropagation_0();
    event_0.preventDefault_0();
  }
   else if (this.this$01.meta) {
    if (this.this$01.code_0 == 67) {
      this.this$01.copyMolecule_1();
      event_0.stopPropagation_0();
      event_0.preventDefault_0();
    }
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$6_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/6', 476, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_KeyUpHandler = function $clinit_KeyUpHandler(){
  cggedc.$clinit_KeyUpHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyUpHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'KeyUpHandler');
cargge.$clinit_DrawArea$7 = function $clinit_DrawArea$7(){
  cargge.$clinit_DrawArea$7 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$7 = function DrawArea$7(this$0, val$handler){
  cargge.$clinit_DrawArea$7();
  this.this$01 = this$0;
  this.val$handler2 = val$handler;
  Object_0.call(this);
  this.$init_161();
}
;
defineClass(477, 1, {480:1, 21:1, 1:1}, cargge.DrawArea$7);
_.$init_161 = function $init_161(){
}
;
_.onKeyUp = function onKeyUp(event_0){
  this.this$01.code_0 = event_0.getNativeKeyCode();
  if (!this.this$01.meta && this.this$01.isValidKey(this.this$01.code_0)) {
    event_0.stopPropagation_0();
    event_0.preventDefault_0();
    this.val$handler2.onKey(new cargge.ACTKeyEvent(this.this$01.code_0, event_0, this.this$01.pressed?16 | 32:0));
  }
  this.this$01.down = this.this$01.pressed = false;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$7_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/7', 477, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_KeyPressHandler = function $clinit_KeyPressHandler(){
  cggedc.$clinit_KeyPressHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyPressHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'KeyPressHandler');
cargge.$clinit_DrawArea$8 = function $clinit_DrawArea$8(){
  cargge.$clinit_DrawArea$8 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.DrawArea$8 = function DrawArea$8(this$0){
  cargge.$clinit_DrawArea$8();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_162();
}
;
defineClass(478, 1, {912:1, 21:1, 1:1}, cargge.DrawArea$8);
_.$init_162 = function $init_162(){
}
;
_.onKeyPress = function onKeyPress(event_0){
  this.this$01.pressed = true;
  this.this$01.code_0 = event_0.getCharCode();
  if (this.this$01.isValidKey(this.this$01.code_0)) {
    event_0.stopPropagation_0();
    event_0.preventDefault_0();
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_DrawArea$8_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'DrawArea/8', 478, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_FakeMouseEvent = function $clinit_FakeMouseEvent(){
  cargge.$clinit_FakeMouseEvent = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.FakeMouseEvent = function FakeMouseEvent(evt){
  cargge.$clinit_FakeMouseEvent();
  Object_0.call(this);
  this.$init_163();
  this.x_0 = evt.getX_1();
  this.y_0 = evt.getY_1();
  this.shift_0 = evt.isShiftKeyDown();
  this.ctrl = evt.isControlKeyDown();
  this.alt_0 = evt.isAltKeyDown();
}
;
cargge.FakeMouseEvent_0 = function FakeMouseEvent_0(evt){
  cargge.$clinit_FakeMouseEvent();
  var point;
  Object_0.call(this);
  this.$init_163();
  point = cargge.getPointFromTouchEvent(evt);
  if (isNotNull(point)) {
    this.x_0 = point.getX_1();
    this.y_0 = point.getY_1();
  }
  this.shift_0 = evt.isShiftKeyDown();
  this.ctrl = evt.isControlKeyDown();
  this.alt_0 = evt.isAltKeyDown();
}
;
cargge.FakeMouseEvent_1 = function FakeMouseEvent_1(evt, mousePoint){
  cargge.$clinit_FakeMouseEvent();
  Object_0.call(this);
  this.$init_163();
  this.x_0 = mousePoint.getX_1();
  this.y_0 = mousePoint.getY_1();
  this.shift_0 = evt.isShiftKeyDown();
  this.ctrl = evt.isControlKeyDown();
  this.alt_0 = evt.isAltKeyDown();
}
;
cargge.getPointFromTouchEvent = function getPointFromTouchEvent(evt){
  cargge.$clinit_FakeMouseEvent();
  var target, touch, touches, x_0, y_0;
  touches = evt.getTouches_0();
  touch = cggcc.$get(touches, 0);
  if (isNull(touch)) {
    return null;
  }
  target = evt.getRelativeElement();
  x_0 = cggdc.$getRelativeX(touch, target);
  y_0 = cggdc.$getRelativeY(touch, target);
  return new cargge.MousePoint(x_0, y_0);
}
;
defineClass(166, 1, {1:1}, cargge.FakeMouseEvent, cargge.FakeMouseEvent_0, cargge.FakeMouseEvent_1);
_.$init_163 = function $init_163(){
  this.x_0 = 0;
  this.y_0 = 0;
  this.shift_0 = false;
  this.ctrl = false;
  this.alt_0 = false;
}
;
_.getX_0 = function getX_5(){
  return this.x_0;
}
;
_.getY_0 = function getY_5(){
  return this.y_0;
}
;
_.isAltDown = function isAltDown_2(){
  return this.alt_0;
}
;
_.isShiftDown = function isShiftDown_2(){
  return this.shift_0;
}
;
_.alt_0 = false;
_.ctrl = false;
_.shift_0 = false;
_.x_0 = 0;
_.y_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_FakeMouseEvent_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'FakeMouseEvent', 166, cggl.Ljava_lang_Object_2_classLit);
carsg.$clinit_DrawConfig = function $clinit_DrawConfig(){
  carsg.$clinit_DrawConfig = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.DrawConfig = function DrawConfig(){
  carsg.$clinit_DrawConfig();
  Object_0.call(this);
  this.$init_164();
}
;
defineClass(526, 1, {1:1});
_.$init_164 = function $init_164(){
}
;
_.createColor = function createColor(r, g, b, alpha_0){
  var col;
  col = or_0(or_0(or_0(shl_0(fromDouble_0(r * 255), 24), shl_0(fromDouble_0(g * 255), 16)), shl_0(fromDouble_0(b * 255), 8)), fromDouble_0(alpha_0 * 255));
  return col;
}
;
cggl.Lcom_actelion_research_share_gui_DrawConfig_2_classLit = createForClass('com.actelion.research.share.gui', 'DrawConfig', 526, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_GWTDrawConfig = function $clinit_GWTDrawConfig(){
  cargge.$clinit_GWTDrawConfig = emptyMethod;
  carsg.$clinit_DrawConfig();
}
;
cargge.GWTDrawConfig = function GWTDrawConfig(){
  cargge.$clinit_GWTDrawConfig();
  carsg.DrawConfig.call(this);
  this.$init_165();
}
;
defineClass(443, 526, {1:1}, cargge.GWTDrawConfig);
_.$init_165 = function $init_165(){
}
;
_.getForegroundColor = function getForegroundColor(){
  return this.createColor(0, 0, 0, 1);
}
;
_.getHighLightColor = function getHighLightColor(){
  return this.createColor(0.3, 0.4, 1, 0.4);
}
;
_.getMapToolColor = function getMapToolColor(){
  return this.createColor(1, 0, 0, 1);
}
;
_.getSelectionColor = function getSelectionColor(){
  return this.createColor(1, 0, 0, 1);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_GWTDrawConfig_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'GWTDrawConfig', 443, cggl.Lcom_actelion_research_share_gui_DrawConfig_2_classLit);
carsge.$clinit_Model = function $clinit_Model(){
  carsge.$clinit_Model = emptyMethod;
  jl.$clinit_Object();
}
;
carsge.Model = function Model(factory, mode){
  carsge.$clinit_Model();
  var arrow;
  Object_0.call(this);
  this.$init_166();
  this.geomFactory = factory;
  this.mDrawingObjectList = new ju.ArrayList;
  this.mMode = mode;
  if ((this.mMode & (4 | 2)) != 0) {
    this.mMode |= 1;
  }
  if ((this.mMode & (8 | 4)) != 0) {
  }
  if (this.isReactionMode()) {
    this.arrowPos = new cargg.GenericPoint_0(0, 0);
    arrow = new carsg.Arrow(factory.getDrawConfig(), 0, 0, 0, 0);
    this.mDrawingObjectList.add(arrow);
  }
}
;
carsge.esrTypeFromRow = function esrTypeFromRow(row){
  carsge.$clinit_Model();
  switch (row) {
    case 0:
      return 0;
    case 1:
      return 2;
    case 2:
      return 1;
  }
  return 0;
}
;
carsge.rowFromESRType = function rowFromESRType(type_0){
  carsge.$clinit_Model();
  switch (type_0) {
    case 0:
      return 0;
    case 2:
      return 1;
    case 1:
      return 2;
  }
  return 0;
}
;
defineClass(467, 1, {1:1});
_.$init_166 = function $init_166(){
  this._undoList = new ju.ArrayList;
  this.selectedESRType = 0;
  this.selectedAtom = -1;
  this.selectedBond = -1;
  this.displayMode = 0;
  this.arrowPos = new cargg.GenericPoint_0(0, 0);
  this.validationListeners = new ju.ArrayList;
  this.changeListeners = new ju.ArrayList;
  this.needslayout = false;
  this.mMode = 0;
  this.displaySize = new ja.Dimension(0, 0);
  this.mMol = new carc2.StereoMolecule;
  this.mAtomKeyStrokeBuffer = new jl.StringBuilder;
  this.atomHighlightCallback = null;
  this.bondHighlightCallback = null;
}
;
_.addChangeListener = function addChangeListener(l){
  if (!this.changeListeners.contains(l)) {
    this.changeListeners.add(l);
  }
}
;
_.addMolecule_2 = function addMolecule_1(mol, x_0, y_0){
  var atom, avbl, isFragment, originalAtoms;
  if (isNotNull(mol) && mol.getAllAtoms_0() != 0) {
    if (this.mMol.getAllAtoms_0() == 0) {
      avbl = 0;
      isFragment = this.mMol.isFragment_0();
      this.scaleIntoView(mol, avbl, 0, 0);
      mol.copyMolecule_0(this.mMol);
      this.mMol.setFragment_0(isFragment);
      this.notifyChange();
    }
     else {
      avbl = round_int(this.mMol.getAverageBondLength_0());
      this.scaleIntoView(mol, avbl, x_0, y_0);
      originalAtoms = this.mMol.getAllAtoms_0();
      isFragment = this.mMol.isFragment_0();
      this.mMol.addMolecule_0(mol);
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        this.mMol.setAtomSelection_0(atom, atom >= originalAtoms);
      }
      this.mMol.setFragment_0(isFragment);
      this.notifyChange();
    }
  }
}
;
_.analyzeFragmentMembership = function analyzeFragmentMembership(){
  var fragmentNo, fragments;
  this.mMol.ensureHelperArrays_0(15);
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  fragments = this.mMol.getFragmentNumbers_0(fragmentNo, false, true);
  fragments = this.joinCloseFragments(fragmentNo, fragments);
  this.sortFragmentsByPosition(fragmentNo, fragments);
  this.mFragmentNo = fragmentNo;
  this.mFragment = this.mMol.getFragments_1(fragmentNo, fragments);
}
;
_.calculateCenterOfGravity = function calculateCenterOfGravity(){
  var atom, atoms, sumx, sumy;
  atoms = this.mMol.getAllAtoms_0();
  sumx = 0;
  sumy = 0;
  for (atom = 0; atom < atoms; atom++) {
    sumx += this.mMol.getAtomX_0(atom);
    sumy += this.mMol.getAtomY_0(atom);
  }
  return atoms > 0?new cargg.GenericPoint_0(sumx / atoms, sumy / atoms):null;
}
;
_.calculateFragmentCenterOfGravity = function calculateFragmentCenterOfGravity(fragmentNo, fragments){
  var atom, fragment, fragment0, fragmentAtoms, fragmentCOG;
  fragmentCOG = initUnidimensionalArray(cggl.Ljava_awt_Point_2_classLit, {4:1, 1:1, 7:1}, 113, fragments, 0, 1);
  fragmentAtoms = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragments, 15, 1);
  for (fragment0 = 0; fragment0 < fragments; fragment0++) {
    setCheck(fragmentCOG, fragment0, new ja.Point_0(0, 0));
  }
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    fragmentCOG[fragmentNo[atom]].x_0 = round_int(fragmentCOG[fragmentNo[atom]].x_0 + this.mMol.getAtomX_0(atom));
    fragmentCOG[fragmentNo[atom]].y_0 = round_int(fragmentCOG[fragmentNo[atom]].y_0 + this.mMol.getAtomY_0(atom));
    fragmentAtoms[fragmentNo[atom]]++;
  }
  for (fragment = 0; fragment < fragments; fragment++) {
    fragmentCOG[fragment].x_0 = narrow_int(fragmentCOG[fragment].x_0 / fragmentAtoms[fragment]);
    fragmentCOG[fragment].y_0 = narrow_int(fragmentCOG[fragment].y_0 / fragmentAtoms[fragment]);
  }
  return fragmentCOG;
}
;
_.changed_0 = function changed_0(){
  this.notifyChange();
}
;
_.cleanMolecule = function cleanMolecule(invent, selectedOnly){
  this.cleanupCoordinates(false, invent);
  this.valueInvalidated();
}
;
_.cleanReaction = function cleanReaction(cleanAll){
  var arrow, dim, h, reaction, w, width_0;
  reaction = this.getReaction_1();
  dim = this.getDisplaySize();
  w = dim.getWidth();
  h = dim.getHeight();
  width_0 = w / 5;
  if (w > 0 && h > 0) {
    arrow = castTo(this.getDrawingObjects_0().getAtIndex(0), 112);
    arrow.setRect(0.5 * w, 0.5 * h, 0.5 * 0.16 * w, 20);
    this.arrowPos = new cargg.GenericPoint_0(0.5 * w, 0.5 * h);
    this.mMode = 1;
    if (cleanAll)
      this.cleanupCoordinates(true, true);
    carsg.scaleInto(reaction, 0, 0, dim.getWidth(), dim.getHeight(), width_0);
    this.setValue_0(reaction);
  }
}
;
_.cleanupCoordinates = function cleanupCoordinates(multifragment, invent){
  var atom, depictor, selectedAtomCount, selectedOnly;
  selectedAtomCount = 0;
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (this.mMol.isSelectedAtom_0(atom)) {
      selectedAtomCount++;
    }
  }
  selectedOnly = selectedAtomCount != 0 && selectedAtomCount != this.mMol.getAllAtoms_0();
  if (!multifragment) {
    depictor = this.createDepictor_0(this.getMolecule_0());
    this.cleanupMoleculeCoordinates(depictor, invent, selectedOnly);
  }
   else {
    depictor = this.createExtendedDepictor();
    this.cleanupMultiFragmentCoordinates(depictor, selectedOnly, invent);
  }
  if (selectedOnly)
    this.mMol.removeAtomMarkers_0();
}
;
_.cleanupMoleculeCoordinates = function cleanupMoleculeCoordinates(depictor, invent, selectedOnly){
  var atom, dt;
  if (invent) {
    if (selectedOnly) {
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        this.mMol.setAtomMarker_0(atom, !this.mMol.isSelectedAtom_0(atom));
      }
    }
    (new carcc3.CoordinateInventor_0(selectedOnly?4:0)).invent(this.mMol);
  }
  dt = depictor.simpleValidateView(new cargg.GenericRectangle_0(0, 0, this.getWidth_0(), this.getHeight_0()), 65536);
  if (isNotNull(dt))
    dt.applyTo_0(this.mMol);
}
;
_.cleanupMultiFragmentCoordinates = function cleanupMultiFragmentCoordinates(depictor, selectedOnly, invent){
  var arrowWidth, atom, atom0, avbl, boundingRect, d, dx, dy, fragment, fragment0, fragment1, fragment2, fragmentAtom, fragmentAtom0, rawX, spacing;
  if (selectedOnly && invent) {
    fragmentAtom0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragment.length, 15, 1);
    for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++) {
      fragment0 = this.mFragmentNo[atom0];
      this.mFragment[fragment0].setAtomMarker_0(fragmentAtom0[fragment0], !this.mMol.isSelectedAtom_0(atom0));
      fragmentAtom0[fragment0]++;
    }
  }
  boundingRect = initUnidimensionalArray(cggl.Lcom_actelion_research_gui_generic_GenericRectangle_2_classLit, {4:1, 1:1, 7:1}, 34, this.mFragment.length, 0, 1);
  for (fragment1 = 0; fragment1 < this.mFragment.length; fragment1++) {
    if (invent) {
      (new carcc3.CoordinateInventor_0(selectedOnly?4:0)).invent(this.mFragment[fragment1]);
    }
    d = this.createDepictor_0(this.mFragment[fragment1]);
    d.updateCoords(null, null, 65536);
    setCheck(boundingRect, fragment1, d.getBoundingRect());
  }
  spacing = 1.5 * 24;
  avbl = this.mMol.getAverageBondLength_0();
  arrowWidth = this.isReaction_0()?0.07999999821186066 * this.getWidth_0():0;
  rawX = 0.5 * spacing;
  for (fragment2 = 0; fragment2 <= this.mFragment.length; fragment2++) {
    if (this.isReaction_0() && fragment2 == this.mReactantCount) {
      castTo(this.mDrawingObjectList.getAtIndex(0), 112).setRect(rawX - spacing / 20, this.getHeight_0() / 2, arrowWidth, this.getHeight_0() / 2);
      rawX += arrowWidth;
    }
    if (fragment2 == this.mFragment.length) {
      break;
    }
    dx = rawX - boundingRect[fragment2].x_0;
    dy = 0.5 * (this.getHeight_0() - boundingRect[fragment2].height_0) - boundingRect[fragment2].y_0;
    this.mFragment[fragment2].translateCoords_0(dx, dy);
    rawX += spacing + boundingRect[fragment2].width_0;
  }
  depictor.updateCoords(null, new cargg.GenericRectangle_0(0, 0, this.getWidth_0(), this.getHeight_0()), this.maxUpdateMode());
  fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragment.length, 15, 1);
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    fragment = this.mFragmentNo[atom];
    this.mMol.setAtomX_0(atom, this.mFragment[fragment].getAtomX_0(fragmentAtom[fragment]));
    this.mMol.setAtomY_0(atom, this.mFragment[fragment].getAtomY_0(fragmentAtom[fragment]));
    fragmentAtom[fragment]++;
  }
  this.mMol.setStereoBondsFromParity_0();
}
;
_.deleteMolecule_1 = function deleteMolecule_0(tm){
  (jl.$clinit_System() , jl.err).println_0('DeleteMolecule needs to be implemented????');
}
;
_.flip_0 = function flip_1(horiz){
  var bond, pt;
  pt = this.calculateCenterOfGravity();
  if (isNotNull(pt)) {
    this.moveCoords(-pt.getX_0(), -pt.getY_0());
    if (horiz) {
      this.scaleCoords_1(-1, 1);
    }
     else {
      this.scaleCoords_1(1, -1);
    }
    this.moveCoords(pt.getX_0(), pt.getY_0());
    for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++) {
      if (this.mMol.getBondType_0(bond) == 257)
        this.mMol.setBondType_0(bond, 129);
      else if (this.mMol.getBondType_0(bond) == 129)
        this.mMol.setBondType_0(bond, 257);
    }
  }
}
;
_.getAtomKeyStrokeValidity = function getAtomKeyStrokeValidity(s){
  if (carc2.getAtomicNoFromLabel(s) != 0)
    return 1;
  if (jsNotEquals(carc2.getSubstituentIDCode(s), null))
    return 2;
  if (this.isValidAtomKeyStrokeStart(s))
    return 3;
  return 4;
}
;
_.getDisplayMode = function getDisplayMode(){
  return this.displayMode;
}
;
_.getDisplaySize = function getDisplaySize(){
  return this.displaySize;
}
;
_.getDrawingObjects_0 = function getDrawingObjects_0(){
  return this.mDrawingObjectList;
}
;
_.getESRType_0 = function getESRType_0(){
  return this.selectedESRType;
}
;
_.getFragmentAt = function getFragmentAt(pt, includeBond){
  var mol, mol$array, mol$index, mol$max;
  for (mol$array = this.getFragments_0() , mol$index = 0 , mol$max = mol$array.length; mol$index < mol$max; ++mol$index) {
    mol = mol$array[mol$index];
    if (this.isPointOnAtomOrBond(mol, pt, includeBond))
      return mol;
  }
  return null;
}
;
_.getFragmentByAtom = function getFragmentByAtom(atom){
  var idx;
  if (atom >= 0 && atom < this.getMolecule_0().getAllAtoms_0()) {
    idx = this.mFragmentNo[atom];
    if (idx >= 0 && idx < this.mFragmentNo.length)
      return idx;
  }
  return -1;
}
;
_.getFragments_0 = function getFragments_1(){
  return this.mFragment;
}
;
_.getGeomFactory = function getGeomFactory(){
  return this.geomFactory;
}
;
_.getHeight_0 = function getHeight_1(){
  return this.displaySize.getHeight();
}
;
_.getIDCode_0 = function getIDCode_5(){
  var can, idc, mol, rxn;
  if (!this.isReaction_0()) {
    mol = this.getMolecule_0();
    if (isNotNull(mol) && this.mMol.getAllAtoms_0() > 0) {
      can = new carc2.Canonizer(mol);
      return can.getIDCode_0() + ' ' + can.getEncodedCoordinates();
    }
  }
   else {
    rxn = this.getReaction_1();
    idc = carcr.encode(rxn, true, 3);
    return idc;
  }
  return null;
}
;
_.getKeyStrokeBuffer = function getKeyStrokeBuffer(){
  return this.mAtomKeyStrokeBuffer;
}
;
_.getMarkushCount = function getMarkushCount(){
  return 0;
}
;
_.getMode = function getMode(){
  return this.mMode;
}
;
_.getMolFile_0 = function getMolFile(v3){
  if (v3)
    return (new carc2.MolfileV3Creator_0(this.mMol)).getMolfile();
  else 
    return (new carc2.MolfileCreator(this.mMol)).getMolfile();
}
;
_.getMolecule_0 = function getMolecule_5(){
  return this.mMol;
}
;
_.getMoleculeAt = function getMoleculeAt(pt, includeBond){
  var dist, i, line, mol, source, target;
  mol = this.mMol;
  {
    if (mol.findAtom_0(pt.getX_0(), pt.getY_0()) != -1) {
      return mol;
    }
    if (includeBond) {
      for (i = 0; i < mol.getAllBonds_0(); i++) {
        source = mol.getBondAtom_0(0, i);
        target = mol.getBondAtom_0(1, i);
        line = new jag.Line2D$Double(mol.getAtomX_0(source), mol.getAtomY_0(source), mol.getAtomX_0(target), mol.getAtomY_0(target));
        dist = line.ptSegDist(pt.getX_0(), pt.getY_0());
        if (dist < 5) {
          return mol;
        }
      }
    }
  }
  return null;
}
;
_.getNextMapNo = function getNextMapNo(){
  var freeMapNo, i, mol;
  freeMapNo = 1;
  {
    mol = this.mMol;
    for (i = 0; i < mol.getAtoms_0(); i++) {
      freeMapNo = $wnd.Math.max(mol.getAtomMapNo_0(i) + 1, freeMapNo);
    }
  }
  return freeMapNo;
}
;
_.getReactantCount = function getReactantCount(){
  return this.mReactantCount;
}
;
_.getReaction_1 = function getReaction_1(){
  var i, rxn;
  if ((this.mMode & 4) == 0) {
    return null;
  }
  rxn = new carcr.Reaction;
  this.syncFragments();
  for (i = 0; i < this.mFragment.length; i++) {
    if (i < this.mReactantCount) {
      rxn.addReactant_0(this.mFragment[i]);
    }
     else {
      rxn.addProduct_0(this.mFragment[i]);
    }
  }
  return rxn;
}
;
_.getSelectedAtom = function getSelectedAtom(){
  return this.selectedAtom;
}
;
_.getSelectedBond = function getSelectedBond(){
  return this.selectedBond;
}
;
_.getSelectedDrawingObject = function getSelectedDrawingObject(){
  return this.selectedDrawingObject;
}
;
_.getSmiles_0 = function getSmiles_0(){
  return (new carc2.IsomericSmilesCreator(this.mMol)).getSmiles_0();
}
;
_.getWidth_0 = function getWidth_1(){
  return this.displaySize.getWidth();
}
;
_.isFragment_0 = function isFragment_2(){
  var fragement;
  fragement = false;
  fragement = this.mMol.isFragment_0();
  return fragement;
}
;
_.isOnProductSide = function isOnProductSide_0(x_0, y_0){
  if (this.isReactionMode()) {
    return x_0 > this.arrowPos.getX_0();
  }
  return x_0 > this.getDisplaySize().getWidth() / 2;
}
;
_.isPointOnAtomOrBond = function isPointOnAtomOrBond(mol, pt, includeBond){
  var ap, atom, dist, i, line, source, target;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
    ap = new cargg.GenericPoint_0(mol.getAtomX_0(atom), mol.getAtomY_0(atom));
    if ($wnd.Math.abs(ap.distance_1(pt)) < 5) {
      return true;
    }
  }
  if (includeBond) {
    for (i = 0; i < mol.getAllBonds_0(); i++) {
      source = mol.getBondAtom_0(0, i);
      target = mol.getBondAtom_0(1, i);
      line = new jag.Line2D$Double(mol.getAtomX_0(source), mol.getAtomY_0(source), mol.getAtomX_0(target), mol.getAtomY_0(target));
      dist = line.ptSegDist(pt.getX_0(), pt.getY_0());
      if (dist < 5) {
        return true;
      }
    }
  }
  return false;
}
;
_.isReaction_0 = function isReaction_0(){
  return this.isReactionMode();
}
;
_.isReactionMode = function isReactionMode(){
  return (this.mMode & 4) != 0;
}
;
_.isValidAtomKeyStrokeStart = function isValidAtomKeyStrokeStart(s){
  var i;
  if (jl.length__I__devirtual$_0(s) < 3)
    for (i = 1; i < (carc2.$clinit_Molecule() , carc2.cAtomLabel).length; i++) {
      if (jl.startsWith_Ljava_lang_String__Z__devirtual$((carc2.$clinit_Molecule() , carc2.cAtomLabel)[i], s))
        return true;
    }
  return carc2.isValidSubstituentNameStart(s);
}
;
_.joinCloseFragments = function joinCloseFragments(fragmentNo, fragments){
  var atom, atom1, atom2, avbl, distance, dx, dy, fragment, fragment1, fragment2, i, i0, index1, index2, j, k, maxIndex, mergeCount, mergeFragments, minIndex, newFragmentIndex;
  if (fragments < 2) {
    return fragments;
  }
  mergeFragments = initUnidimensionalArray(cggl.Z_classLit, {4:1, 1:1, 7:1}, 12, fragments, 0, 2);
  for (i0 = 1; i0 < fragments; i0++) {
    mergeFragments[i0] = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, i0, 16, 1);
  }
  avbl = this.mMol.getAverageBondLength_0();
  for (atom1 = 1; atom1 < this.mMol.getAllAtoms_0(); atom1++) {
    for (atom2 = 0; atom2 < atom1; atom2++) {
      dx = this.mMol.getAtomX_0(atom2) - this.mMol.getAtomX_0(atom1);
      dy = this.mMol.getAtomY_0(atom2) - this.mMol.getAtomY_0(atom1);
      distance = $wnd.Math.sqrt(dx * dx + dy * dy);
      if (distance < 1.2000000476837158 * avbl) {
        fragment1 = fragmentNo[atom1];
        fragment2 = fragmentNo[atom2];
        if (fragment1 != fragment2) {
          if (fragment1 > fragment2) {
            mergeFragments[fragment1][fragment2] = true;
          }
           else {
            mergeFragments[fragment2][fragment1] = true;
          }
        }
      }
    }
  }
  newFragmentIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragments, 15, 1);
  for (fragment = 0; fragment < fragments; fragment++) {
    newFragmentIndex[fragment] = fragment;
  }
  mergeCount = 0;
  for (i = 1; i < fragments; i++) {
    for (j = 0; j < i; j++) {
      if (mergeFragments[i][j]) {
        index1 = newFragmentIndex[i];
        index2 = newFragmentIndex[j];
        if (index1 != index2) {
          mergeCount++;
          minIndex = $wnd.Math.min(index1, index2);
          maxIndex = $wnd.Math.max(index1, index2);
          for (k = 0; k < fragments; k++) {
            if (newFragmentIndex[k] == maxIndex) {
              newFragmentIndex[k] = minIndex;
            }
             else if (newFragmentIndex[k] > maxIndex) {
              newFragmentIndex[k]--;
            }
          }
        }
      }
    }
  }
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    fragmentNo[atom] = newFragmentIndex[fragmentNo[atom]];
  }
  return fragments - mergeCount;
}
;
_.mapReaction_0 = function mapReaction(atom, left, right){
  var b1, b2, dest, freeMapNo, mol, source, target;
  mol = this.getMolecule_0();
  if (isNotNull(mol) && isNotNull(left) && isNotNull(right)) {
    freeMapNo = this.getNextMapNo();
    source = this.getFragmentAt(left, false);
    target = this.getFragmentAt(right, false);
    b1 = this.isOnProductSide(left.getX_0(), left.getY_0());
    b2 = this.isOnProductSide(right.getX_0(), right.getY_0());
    if (isNotNull(target) && jsNotEquals(target, source) && b1 ^ b2) {
      dest = mol.findAtom_0(round_int(right.getX_0()), round_int(right.getY_0()));
      if (dest != -1) {
        mol.setAtomMapNo_0(atom, freeMapNo, false);
        mol.setAtomMapNo_0(dest, freeMapNo, false);
      }
      if (isNotNull(this.mMapper))
        this.tryAutoMapReaction();
    }
  }
}
;
_.maxUpdateMode = function maxUpdateMode(){
  return 65536;
}
;
_.moveCoords = function moveCoords(cx, cy){
  var atom, atoms;
  atoms = this.mMol.getAllAtoms_0();
  for (atom = 0; atom < atoms; atom++) {
    this.mMol.setAtomX_0(atom, this.mMol.getAtomX_0(atom) + cx);
    this.mMol.setAtomY_0(atom, this.mMol.getAtomY_0(atom) + cy);
  }
}
;
_.needsLayout = function needsLayout(){
  return this.needslayout;
}
;
_.needsLayout_0 = function needsLayout_0(set_0){
  this.needslayout = set_0;
}
;
_.notifyChange = function notifyChange(){
  var l, l$iterator;
  for (l$iterator = this.changeListeners.iterator(); l$iterator.hasNext_0();) {
    l = castTo(l$iterator.next_3(), 214);
    l.onChange_0();
  }
}
;
_.popUndo = function popUndo(){
  if (this._undoList.size() > 0) {
    this.setValue(castTo(this._undoList.getAtIndex(this._undoList.size() - 1), 19), false);
    this._undoList.removeAtIndex(this._undoList.size() - 1);
  }
}
;
_.pushUndo = function pushUndo(){
  this._undoList.add(new carc2.StereoMolecule_1(this.mMol));
  if (this._undoList.size() > 5) {
    this._undoList.removeAtIndex(0);
  }
}
;
_.registerAtomHighlightCallback = function registerAtomHighlightCallback(cb){
  this.atomHighlightCallback = cb;
}
;
_.registerBondHighlightCallback = function registerBondHighlightCallback(cb){
  this.bondHighlightCallback = cb;
}
;
_.scale_3 = function scale_1(scale){
  var d, dt;
  if (!jl.isInfinite(scale)) {
    if (scale != 1 && scale > 0) {
      d = this.createDepictor_0(this.mMol);
      dt = d.simpleValidateView(new cargg.GenericRectangle_0(0, 0, this.getWidth_0(), this.getHeight_0()), 65536 + round_int(this.mMol.getAverageBondLength_0()));
      if (isNotNull(dt))
        dt.applyTo_0(this.mMol);
    }
  }
}
;
_.scaleCoords_1 = function scaleCoords_0(scalex, scaley){
  var atom, atoms;
  atoms = this.mMol.getAllAtoms_0();
  for (atom = 0; atom < atoms; atom++) {
    this.mMol.setAtomX_0(atom, this.mMol.getAtomX_0(atom) * scalex);
    this.mMol.setAtomY_0(atom, this.mMol.getAtomY_0(atom) * scaley);
  }
}
;
_.scaleIntoView = function scaleIntoView(mol, avbl, cx, cy){
  var d, dt;
  d = this.createDepictor_0(mol);
  dt = d.simpleValidateView(new cargg.GenericRectangle_0(0, 0, this.getWidth_0(), this.getHeight_0()), 65536 + avbl);
  if (isNotNull(dt)) {
    dt.move(cx, cy);
    dt.applyTo_0(mol);
  }
}
;
_.selectFragmentByAtom = function selectFragmentByAtom(rootAtom){
  var fragment, i;
  fragment = this.getFragmentByAtom(rootAtom);
  for (i = 0; fragment != -1 && i < this.mMol.getAllAtoms_0(); i++) {
    if (this.mFragmentNo[i] == fragment) {
      this.mMol.setAtomSelection_0(i, true);
    }
  }
}
;
_.setDisplayMode = function setDisplayMode_0(dMode){
  this.displayMode = dMode;
  this.notifyChange();
}
;
_.setDisplaySize = function setDisplaySize(displaySize){
  var dx, dy, scale;
  if (this.isReactionMode()) {
    if (displaySize.getWidth() != 0 && displaySize.getHeight() != 0) {
      if (displaySize.getWidth() != this.displaySize.getWidth() || displaySize.getHeight() != this.displaySize.getHeight()) {
        dx = displaySize.getWidth() / this.displaySize.getWidth();
        dy = displaySize.getHeight() / this.displaySize.getHeight();
        scale = $wnd.Math.min(dx, dy);
        this.scale_3(scale);
      }
    }
  }
  this.displaySize = displaySize;
}
;
_.setESRType = function setESRType(type_0){
  this.selectedESRType = type_0;
  this.notifyChange();
}
;
_.setFragment_0 = function setFragment_4(fragment){
  this.mMol.setFragment_0(fragment);
  this.notifyChange();
}
;
_.setMolFile_0 = function setMolFile(molFile){
  var e, mol, p;
  this.pushUndo();
  try {
    p = new carc2.MolfileParser;
    mol = new carc2.StereoMolecule;
    p.parse_5(mol, molFile);
    this.setValue(mol, true);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      e.printStackTrace();
    }
     else 
      throw toJs($e0);
  }
}
;
_.setNewMolecule = function setNewMolecule(){
  var mol;
  mol = new carc2.StereoMolecule;
  mol.setFragment_0(this.isFragment_0());
  this.setValue(mol, true);
}
;
_.setReaction = function setReaction(rxn){
  var atom, boundingRect, displaySize, e, f, i, isFragment, j, molecule;
  displaySize = this.getDisplaySize();
  this.mMol = new carc2.StereoMolecule;
  this.mFragment = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {126:1, 4:1, 1:1, 7:1}, 19, rxn.getMolecules_0(), 0, 1);
  this.mReactantCount = rxn.getReactants_0();
  isFragment = false;
  for (i = 0; i < rxn.getMolecules_0(); i++) {
    isFragment = isFragment | rxn.getMolecule_1(i).isFragment_0();
    molecule = rxn.getMolecule_1(i);
    boundingRect = carsg.getBoundingRect_2(molecule);
    setCheck(this.mFragment, i, molecule);
    this.mMol.addMolecule_0(this.mFragment[i]);
  }
  this.mMol.setFragment_0(isFragment);
  this.mFragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  for (atom = 0 , f = 0; f < this.mFragment.length; f++) {
    for (j = 0; j < this.mFragment[f].getAllAtoms_0(); j++) {
      this.mFragmentNo[atom++] = f;
    }
  }
  try {
    this.mMol.validate_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      (jl.$clinit_System() , jl.out_0).println_0('WARNING:' + e);
    }
     else 
      throw toJs($e0);
  }
  this.mMode = 1 | 4;
  this.notifyChange();
}
;
_.setSelectedAtom = function setSelectedAtom(theAtom){
  if (this.selectedAtom != theAtom) {
    if (isNotNull(this.atomHighlightCallback)) {
      this.atomHighlightCallback.onHighlight(theAtom != -1?theAtom:this.selectedAtom, theAtom != -1);
    }
  }
  this.selectedAtom = theAtom;
}
;
_.setSelectedBond = function setSelectedBond(theBond){
  if (this.selectedBond != theBond) {
    if (isNotNull(this.bondHighlightCallback)) {
      this.bondHighlightCallback.onHighlight(theBond != -1?theBond:this.selectedBond, theBond != -1);
    }
  }
  this.selectedBond = theBond;
}
;
_.setSelectedDrawingObject = function setSelectedDrawingObject(sel){
  if (jsNotEquals(this.selectedDrawingObject, sel)) {
    this.setSelectedAtom(-1);
    this.setSelectedBond(-1);
  }
  this.selectedDrawingObject = sel;
  if (isNotNull(sel))
    this.selectedDrawingObject.setSelected(true);
}
;
_.setSmiles_0 = function setSmiles(smiles){
  var e, mol, p;
  try {
    p = new carc2.SmilesParser;
    mol = new carc2.StereoMolecule;
    p.parse_0(mol, smiles);
    this.setValue(mol, true);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      e.printStackTrace();
    }
     else 
      throw toJs($e0);
  }
}
;
_.setValue = function setValue(value_0, b){
  this.needsLayout_0(b);
  this.mMol = value_0;
  this.notifyChange();
}
;
_.setValue_0 = function setValue_0(rxn){
  this.setReaction(rxn);
}
;
_.sortFragmentsByPosition = function sortFragmentsByPosition(fragmentNo, fragments){
  var atom, atom1, centerOfGravity, cog, fragment, fragment0, fragment1, fragmentCOG, fragmentDescriptor, newFragmentIndex, oldIndex;
  fragmentDescriptor = initMultidimensionalArray(cggl.I_classLit, [{35:1, 4:1, 1:1, 7:1}, {6:1, 4:1, 1:1}], [6, 5], 15, [fragments, (this.mMode & (4 | 2)) != 0?2:1], 2);
  for (fragment0 = 0; fragment0 < fragments; fragment0++) {
    fragmentDescriptor[fragment0][0] = fragment0;
  }
  fragmentCOG = this.calculateFragmentCenterOfGravity(fragmentNo, fragments);
  if (this.isReactionMode()) {
    this.mReactantCount = 0;
    for (fragment1 = 0; fragment1 < fragments; fragment1++) {
      fragmentDescriptor[fragment1][1] = this.isOnProductSide(fragmentCOG[fragment1].x_0, fragmentCOG[fragment1].y_0)?1:0;
      if (fragmentDescriptor[fragment1][1] == 0) {
        this.mReactantCount++;
      }
    }
  }
   else if ((this.mMode & 2) != 0) {
    this.mReactantCount = fragments;
    for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
      if (this.mMol.getAtomicNo_0(atom) == 0 && fragmentDescriptor[fragmentNo[atom]][1] == 0) {
        fragmentDescriptor[fragmentNo[atom]][1] = 1;
        this.mReactantCount--;
      }
    }
  }
  cog = fragmentCOG;
  ju.sort_7(fragmentDescriptor, new carsge.Model$1(this, cog));
  newFragmentIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragments, 15, 1);
  centerOfGravity = initUnidimensionalArray(cggl.Ljava_awt_Point_2_classLit, {4:1, 1:1, 7:1}, 113, fragments, 0, 1);
  for (fragment = 0; fragment < fragments; fragment++) {
    oldIndex = fragmentDescriptor[fragment][0];
    newFragmentIndex[oldIndex] = fragment;
    setCheck(centerOfGravity, fragment, fragmentCOG[oldIndex]);
  }
  fragmentCOG = centerOfGravity;
  for (atom1 = 0; atom1 < this.mMol.getAllAtoms_0(); atom1++) {
    fragmentNo[atom1] = newFragmentIndex[fragmentNo[atom1]];
  }
}
;
_.syncFragments = function syncFragments(){
  var fragmentNo, fragments, m, m$array, m$index, m$max;
  this.mMol.ensureHelperArrays_0(15);
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMol.getAllAtoms_0(), 15, 1);
  fragments = this.mMol.getFragmentNumbers_0(fragmentNo, false, true);
  this.mFragment = this.mMol.getFragments_1(fragmentNo, fragments);
  fragments = this.joinCloseFragments(fragmentNo, fragments);
  this.sortFragmentsByPosition(fragmentNo, fragments);
  this.mFragmentNo = fragmentNo;
  this.mFragment = this.mMol.getFragments_1(fragmentNo, fragments);
  for (m$array = this.mFragment , m$index = 0 , m$max = m$array.length; m$index < m$max; ++m$index) {
    m = m$array[m$index];
    m.ensureHelperArrays_0(15);
  }
}
;
_.tryAutoMapReaction = function tryAutoMapReaction(){
  var a, atom, fragment, fragmentAtom, i, mol, offset, rxn, sss;
  sss = new carsge.Model$MySSSearcher;
  rxn = this.getReaction_1();
  for (i = 0; i < rxn.getMolecules_0(); i++) {
    mol = rxn.getMolecule_1(i);
    for (a = 0; a < mol.getAtoms_0(); a++) {
      if (mol.getAtomMapNo_0(a) > 0) {
        mol.setAtomicNo_0(a, 100 + mol.getAtomMapNo_0(a));
      }
    }
  }
  rxn = this.mMapper.mapReaction(rxn, sss);
  if (isNotNull(rxn)) {
    offset = 0;
    {
      fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragment.length, 15, 1);
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        fragment = this.mFragmentNo[atom];
        if (this.mFragment[fragment].getAtomicNo_0(fragmentAtom[fragment]) > 100) {
          this.mMol.setAtomMapNo_0(atom, this.mFragment[fragment].getAtomicNo_0(fragmentAtom[fragment]) - 100, false);
          offset = $wnd.Math.max(this.mMol.getAtomMapNo_0(atom), offset);
        }
        fragmentAtom[fragment]++;
      }
    }
    {
      fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragment.length, 15, 1);
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        fragment = this.mFragmentNo[atom];
        if (this.mFragment[fragment].getAtomMapNo_0(fragmentAtom[fragment]) > 0 && this.mFragment[fragment].getAtomicNo_0(fragmentAtom[fragment]) <= 100) {
          this.mMol.setAtomMapNo_0(atom, this.mFragment[fragment].getAtomMapNo_0(fragmentAtom[fragment]) + offset, true);
        }
        fragmentAtom[fragment]++;
      }
    }
  }
  this.syncFragments();
}
;
_.valueInvalidated = function valueInvalidated(){
  var l, l$iterator;
  for (l$iterator = this.validationListeners.iterator(); l$iterator.hasNext_0();) {
    l = castTo(l$iterator.next_3(), 1356);
    l.valueInvalidated();
  }
}
;
_.displayMode = 0;
_.mMode = 0;
_.mReactantCount = 0;
_.needslayout = false;
_.selectedAtom = 0;
_.selectedBond = 0;
_.selectedESRType = 0;
carsge.DEFAULT_ARROW_LENGTH = 0.07999999821186066;
carsge.FAKE_ATOM_NO = 100;
carsge.FRAGMENT_CLEANUP_DISTANCE = 1.5;
carsge.FRAGMENT_GROUPING_DISTANCE = 1.2000000476837158;
carsge.FRAGMENT_MAX_CLICK_DISTANCE = 24;
carsge.KEY_IS_ATOM_LABEL = 1;
carsge.KEY_IS_INVALID = 4;
carsge.KEY_IS_SUBSTITUENT = 2;
carsge.KEY_IS_VALID_START = 3;
carsge.MAX_CONNATOMS = 8;
carsge.MAX_UNDO_SIZE = 5;
carsge.MIN_BOND_LENGTH_SQUARE = 100;
carsge.MODE_DRAWING_OBJECTS = 8;
carsge.MODE_MARKUSH_STRUCTURE = 2;
carsge.MODE_MULTIPLE_FRAGMENTS = 1;
carsge.MODE_REACTION = 4;
cggl.Lcom_actelion_research_share_gui_editor_Model_2_classLit = createForClass('com.actelion.research.share.gui.editor', 'Model', 467, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_GWTEditorModel = function $clinit_GWTEditorModel(){
  cargge.$clinit_GWTEditorModel = emptyMethod;
  carsge.$clinit_Model();
}
;
cargge.GWTEditorModel = function GWTEditorModel(factory, mode){
  cargge.$clinit_GWTEditorModel();
  carsge.Model.call(this, factory, mode);
  this.$init_167();
}
;
defineClass(445, 467, {1:1}, cargge.GWTEditorModel);
_.$init_167 = function $init_167(){
}
;
_.cleanMolecule = function cleanMolecule_0(invent, selectedOnly){
  this.cleanupMultiFragmentCoordinates_0(selectedOnly);
}
;
_.cleanupMultiFragmentCoordinates_0 = function cleanupMultiFragmentCoordinates_0(selectedOnly){
  var depictor, dim, mol;
  mol = this.getMolecule_0();
  {
    if (isNotNull(mol)) {
      (new carcc3.CoordinateInventor_0(selectedOnly?4:0)).invent(mol);
      mol.setStereoBondsFromParity_0();
    }
  }
  dim = this.getDisplaySize();
  depictor = new carggv.GWTDepictor(mol);
  depictor.updateCoords(castTo(null, 764), new cargg.GenericRectangle_0(0, 0, dim.getWidth(), dim.getHeight()), 65536);
  this.setValue(mol, true);
}
;
_.createDepictor_0 = function createDepictor_0(mol){
  return new carggv.GWTDepictor(mol);
}
;
_.createExtendedDepictor = function createExtendedDepictor(){
  return null;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_GWTEditorModel_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'GWTEditorModel', 445, cggl.Lcom_actelion_research_share_gui_editor_Model_2_classLit);
carsgeg.$clinit_GeomFactory = function $clinit_GeomFactory(){
  carsgeg.$clinit_GeomFactory = emptyMethod;
  jl.$clinit_Object();
}
;
carsgeg.GeomFactory = function GeomFactory(cfg){
  carsgeg.$clinit_GeomFactory();
  Object_0.call(this);
  this.$init_168();
  this.drawConfig = cfg;
}
;
defineClass(525, 1, {1:1});
_.$init_168 = function $init_168(){
}
;
_.createPolygon = function createPolygon(){
  return new carsg.Polygon;
}
;
_.getDrawConfig = function getDrawConfig(){
  return this.drawConfig;
}
;
_.getForegroundColor = function getForegroundColor_0(){
  return this.drawConfig.getForegroundColor();
}
;
_.getHighLightColor = function getHighLightColor_0(){
  return this.drawConfig.getHighLightColor();
}
;
_.getMapToolColor = function getMapToolColor_0(){
  return this.drawConfig.getMapToolColor();
}
;
_.getSelectionColor = function getSelectionColor_0(){
  return this.drawConfig.getSelectionColor();
}
;
cggl.Lcom_actelion_research_share_gui_editor_geom_GeomFactory_2_classLit = createForClass('com.actelion.research.share.gui.editor.geom', 'GeomFactory', 525, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_GWTGeomFactory = function $clinit_GWTGeomFactory(){
  cargge.$clinit_GWTGeomFactory = emptyMethod;
  carsgeg.$clinit_GeomFactory();
}
;
cargge.GWTGeomFactory = function GWTGeomFactory(cfg){
  cargge.$clinit_GWTGeomFactory();
  carsgeg.GeomFactory.call(this, cfg);
  this.$init_169();
}
;
defineClass(444, 525, {1:1}, cargge.GWTGeomFactory);
_.$init_169 = function $init_169(){
}
;
_.createAtomPropertiesDialog = function createAtomPropertiesDialog(m, atom){
  return new carggead.AtomPropertiesDialog(null, m, atom);
}
;
_.createAtomQueryFeatureDialog = function createAtomQueryFeatureDialog(mol, atom, includeReactionHints){
  return new carggead.AtomQueryFeaturesDialog(mol, atom, includeReactionHints);
}
;
_.createBondFeaturesDialog = function createBondFeaturesDialog(mol, bond){
  return new carggead.BondQueryFeaturesDialog(mol, bond);
}
;
_.getBackSpaceKey = function getBackSpaceKey(){
  return cargge.$clinit_ACTKeyCode() , cargge.BACK_SPACE;
}
;
_.getBoundingRect_0 = function getBoundingRect_0(m){
  return carsg.getBoundingRect_2(m);
}
;
_.getDeleteKey = function getDeleteKey(){
  return cargge.$clinit_ACTKeyCode() , cargge.DELETE;
}
;
_.getEnterKey = function getEnterKey(){
  return cargge.$clinit_ACTKeyCode() , cargge.ENTER;
}
;
_.getEscapeKey = function getEscapeKey(){
  return cargge.$clinit_ACTKeyCode() , cargge.ESCAPE;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_GWTGeomFactory_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'GWTGeomFactory', 444, cggl.Lcom_actelion_research_share_gui_editor_geom_GeomFactory_2_classLit);
cargge.$clinit_GWTStructureEditor = function $clinit_GWTStructureEditor(){
  cargge.$clinit_GWTStructureEditor = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.GWTStructureEditor = function GWTStructureEditor(){
  cargge.$clinit_GWTStructureEditor();
  Object_0.call(this);
  this.$init_170();
}
;
defineClass(400, 1, {99:1, 1:1}, cargge.GWTStructureEditor);
_.$init_170 = function $init_170(){
}
;
_.onLoadImpl = function onLoadImpl(){
  if (typeof $wnd.editorLoaded === 'function')
    $wnd.editorLoaded();
}
;
_.onModuleLoad = function onModuleLoad_0(){
  this.onLoadImpl();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_GWTStructureEditor_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'GWTStructureEditor', 400, cggl.Ljava_lang_Object_2_classLit);
carsgec.$clinit_AbstractExtendedDepictor = function $clinit_AbstractExtendedDepictor(){
  carsgec.$clinit_AbstractExtendedDepictor = emptyMethod;
  jl.$clinit_Object();
}
;
carsgec.AbstractExtendedDepictor = function AbstractExtendedDepictor(mol, drawingObjectList, useGraphics2D, cfg){
  carsgec.$clinit_AbstractExtendedDepictor();
  carsgec.AbstractExtendedDepictor_2.call(this, stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, 1), {126:1, 4:1, 1:1, 7:1}, 19, 0, [mol]), drawingObjectList, useGraphics2D, cfg);
}
;
carsgec.AbstractExtendedDepictor_0 = function AbstractExtendedDepictor_0(reaction, drawingObjectList, layoutReaction, useGraphics2D, cfg){
  carsgec.$clinit_AbstractExtendedDepictor();
  var i, mol;
  Object_0.call(this);
  this.$init_171();
  mol = null;
  if (isNotNull(reaction)) {
    mol = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {126:1, 4:1, 1:1, 7:1}, 19, reaction.getMolecules_0(), 0, 1);
    for (i = 0; i < reaction.getMolecules_0(); i++)
      setCheck(mol, i, reaction.getMolecule_1(i));
    this.mReactantOrCoreCount = reaction.getReactants_0();
    this.mDoLayoutMolecules = layoutReaction;
  }
  this.initialize(mol, drawingObjectList, useGraphics2D, cfg);
}
;
carsgec.AbstractExtendedDepictor_1 = function AbstractExtendedDepictor_1(mol, markushCoreCount, drawingObjectList, useGraphics2D, cfg){
  carsgec.$clinit_AbstractExtendedDepictor();
  carsgec.AbstractExtendedDepictor_2.call(this, mol, drawingObjectList, useGraphics2D, cfg);
  this.mReactantOrCoreCount = markushCoreCount;
}
;
carsgec.AbstractExtendedDepictor_2 = function AbstractExtendedDepictor_2(mol, drawingObjectList, useGraphics2D, cfg){
  Object_0.call(this);
  this.$init_171();
  this.initialize(mol, drawingObjectList, useGraphics2D, cfg);
  this.mReactantOrCoreCount = -1;
}
;
defineClass(178, 1, {1:1});
_.$init_171 = function $init_171(){
}
;
_.calculateAverageBondLength = function calculateAverageBondLength(){
  var averageBondLength, bondCount, i;
  averageBondLength = 0;
  bondCount = 0;
  if (jsNotEquals(this.mMolecule, null)) {
    for (i = 0; i < this.mMolecule.length; i++) {
      if (this.mMolecule[i].getAllAtoms_0() != 0) {
        averageBondLength += this.mDepictor[i].getTransformation().getScaling() * this.mMolecule[i].getAllBonds_0() * this.mMolecule[i].getAverageBondLength_0();
        bondCount += this.mMolecule[i].getAllBonds_0();
      }
    }
  }
  return bondCount == 0?24:this.mTransformation.getScaling() * averageBondLength / bondCount;
}
;
_.doLayoutMolecules = function doLayoutMolecules(g){
  var arrow, arrowWidth, boundingRect, dx, dy, i, i0, rawX, spacing, totalHeight, totalWidth;
  boundingRect = initUnidimensionalArray(cggl.Lcom_actelion_research_gui_generic_GenericRectangle_2_classLit, {4:1, 1:1, 7:1}, 34, this.mMolecule.length, 0, 1);
  totalWidth = 0;
  totalHeight = 0;
  for (i0 = 0; i0 < this.mMolecule.length; i0++) {
    this.mDepictor[i0].validateView(g, null, 65536);
    setCheck(boundingRect, i0, this.mDepictor[i0].getBoundingRect());
    totalWidth += boundingRect[i0].width_0;
    totalHeight = $wnd.Math.max(totalHeight, boundingRect[i0].height_0);
  }
  spacing = 1.5 * 24;
  arrowWidth = 2 * 24;
  arrow = -1;
  if (isNull(this.mDrawingObjectList)) {
    this.mDrawingObjectList = new ju.ArrayList;
    this.mDrawingObjectList.add(new carsg.Arrow(this.drawConfig, 0, 0, 0, 0));
    arrow = 0;
  }
   else {
    if (this.mDrawingObjectList.size() == 0) {
      arrow = this.mDrawingObjectList.size();
      this.mDrawingObjectList.add(new carsg.Arrow(this.drawConfig, 0, 0, 0, 0));
    }
  }
  rawX = 0.5 * spacing;
  for (i = 0; i < this.mMolecule.length; i++) {
    if (i == this.mReactantOrCoreCount) {
      rawX += arrowWidth;
    }
    dx = rawX - boundingRect[i].x_0;
    dy = 0.5 * (totalHeight - boundingRect[i].height_0) - boundingRect[i].y_0;
    this.mDepictor[i].applyTransformation_0(new carc2.DepictorTransformation_0(1, dx, dy));
    rawX += spacing + boundingRect[i].width_0;
  }
  this.mDoLayoutMolecules = false;
}
;
_.initialize = function initialize_3(mol, drawingObjectList, useGraphics2D, cfg){
  var i;
  this.mMolecule = mol;
  this.mIsMarkushStructure = false;
  this.mDrawingObjectList = drawingObjectList;
  this.mUseGraphics2D = useGraphics2D;
  this.drawConfig = cfg;
  this.mTransformation = new carc2.DepictorTransformation;
  if (jsNotEquals(this.mMolecule, null)) {
    this.mDepictor = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_AbstractDepictor_2_classLit, {4:1, 1:1, 7:1}, 134, this.mMolecule.length, 0, 1);
    for (i = 0; i < this.mMolecule.length; i++) {
      setCheck(this.mDepictor, i, this.createDepictor_1(this.mMolecule[i], this.mUseGraphics2D, this.drawConfig));
    }
  }
}
;
_.paint = function paint_0(g){
  this.paintFragmentNumbers(g);
  this.paintStructures(g);
  this.paintDrawingObjects(g);
}
;
_.setDisplayMode = function setDisplayMode_1(displayMode){
  this.mDisplayMode = displayMode;
}
;
_.updateCoords = function updateCoords_0(g, viewRect, mode){
  var b, d, i, i0, i1, t, t0;
  this.validateView(g, viewRect, mode);
  if (this.mTransformation.isVoidTransformation()) {
    return null;
  }
   else {
    if (jsNotEquals(this.mMolecule, null))
      for (i0 = 0; i0 < this.mMolecule.length; i0++)
        this.mTransformation.applyTo_0(this.mMolecule[i0]);
    if (isNotNull(this.mDrawingObjectList))
      for (i1 = 0; i1 < this.mDrawingObjectList.size(); i1++) {
        d = castTo(this.mDrawingObjectList.getAtIndex(i1), 112);
        b = d.getBoundingRect();
        t0 = new cargg.GenericRectangle_0(b.getX_0(), b.getY_0(), b.getWidth(), b.getHeight());
        this.mTransformation.applyTo_2(t0);
      }
    if (jsNotEquals(this.mDepictor, null))
      for (i = 0; i < this.mDepictor.length; i++)
        this.mDepictor[i].getTransformation().clear_0();
    t = this.mTransformation;
    this.mTransformation = new carc2.DepictorTransformation;
    return t;
  }
}
;
_.validateView = function validateView_0(g, viewRect, mode){
  var avbl, b, boundingRect, i, objectBounds, t;
  if (this.mDoLayoutMolecules)
    this.doLayoutMolecules(g);
  boundingRect = null;
  if (jsNotEquals(this.mDepictor, null)) {
    for (i = 0; i < this.mDepictor.length; i++) {
      this.mDepictor[i].validateView(g, null, 0);
      boundingRect = isNull(boundingRect)?this.mDepictor[i].getBoundingRect():boundingRect.union(this.mDepictor[i].getBoundingRect());
    }
  }
  if (isNotNull(this.mDrawingObjectList)) {
    for (i = 0; i < this.mDrawingObjectList.size(); i++) {
      b = castTo(this.mDrawingObjectList.getAtIndex(i), 112).getBoundingRect();
      objectBounds = new cargg.GenericRectangle_0(b.getX_0(), b.getY_0(), b.getWidth(), b.getHeight());
      this.mTransformation.applyTo_2(objectBounds);
      boundingRect = isNull(boundingRect)?objectBounds:boundingRect.union(objectBounds);
    }
  }
  if (isNull(boundingRect))
    return null;
  avbl = this.calculateAverageBondLength();
  t = new carc2.DepictorTransformation_1(boundingRect, viewRect, avbl, mode);
  if (!t.isVoidTransformation()) {
    t.applyTo(this.mTransformation);
    if (jsNotEquals(this.mDepictor, null))
      for (i = 0; i < this.mDepictor.length; i++)
        this.mDepictor[i].applyTransformation_0(t);
    return t;
  }
  return null;
}
;
_.mDisplayMode = 0;
_.mDoLayoutMolecules = false;
_.mIsMarkushStructure = false;
_.mReactantOrCoreCount = 0;
_.mUseGraphics2D = false;
cggl.Lcom_actelion_research_share_gui_editor_chem_AbstractExtendedDepictor_2_classLit = createForClass('com.actelion.research.share.gui.editor.chem', 'AbstractExtendedDepictor', 178, cggl.Ljava_lang_Object_2_classLit);
carsgec.$clinit_IDepictor = function $clinit_IDepictor(){
  carsgec.$clinit_IDepictor = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_chem_IDepictor_2_classLit = createForInterface('com.actelion.research.share.gui.editor.chem', 'IDepictor');
cargge.$clinit_MoleculeDrawDepictor = function $clinit_MoleculeDrawDepictor(){
  cargge.$clinit_MoleculeDrawDepictor = emptyMethod;
  carsgec.$clinit_AbstractExtendedDepictor();
}
;
cargge.MoleculeDrawDepictor = function MoleculeDrawDepictor(ctx, mol, drawingObjectList, cfg){
  cargge.$clinit_MoleculeDrawDepictor();
  carsgec.AbstractExtendedDepictor.call(this, mol, drawingObjectList, true, cfg);
  this.$init_172();
  this.ctx = ctx;
}
;
cargge.MoleculeDrawDepictor_0 = function MoleculeDrawDepictor_0(ctx, reaction, drawingObjectList, layoutReaction, cfg){
  cargge.$clinit_MoleculeDrawDepictor();
  carsgec.AbstractExtendedDepictor_0.call(this, reaction, drawingObjectList, layoutReaction, true, cfg);
  this.$init_172();
  this.ctx = ctx;
}
;
cargge.MoleculeDrawDepictor_1 = function MoleculeDrawDepictor_1(ctx, mol, markushCoreCount, drawingObjectList, cfg){
  cargge.$clinit_MoleculeDrawDepictor();
  carsgec.AbstractExtendedDepictor_1.call(this, mol, markushCoreCount, drawingObjectList, true, cfg);
  this.$init_172();
  this.ctx = ctx;
}
;
defineClass(267, 178, {1:1}, cargge.MoleculeDrawDepictor, cargge.MoleculeDrawDepictor_0, cargge.MoleculeDrawDepictor_1);
_.$init_172 = function $init_172(){
}
;
_.paintDrawingObjects = function paintDrawingObjects_0(g){
  this.paintDrawingObjects_0(castToJso(g));
}
;
_.paintFragmentNumbers = function paintFragmentNumbers_0(g){
  this.paintFragmentNumbers_0(castToJso(g));
}
;
_.paintStructures = function paintStructures_0(g){
  this.paintStructures_0(castToJso(g));
}
;
_.setDisplayMode = function setDisplayMode_2(displayMode){
  getClassPrototype(178).setDisplayMode.call(this, displayMode);
}
;
_.createDepictor_1 = function createDepictor_1(stereoMolecule, mUseGraphics2D, cfg){
  if (mUseGraphics2D)
    return new carggv.GWTDepictor(stereoMolecule);
  else 
    return new carggv.GWTDepictor(stereoMolecule);
}
;
_.drawString_0 = function drawString_0(ctx, theString, x_0, y_0){
  cggcdc.$setTextAlign(ctx, (cggcdc.$clinit_Context2d$TextAlign() , cggcdc.CENTER));
  cggcdc.$setTextBaseline(ctx, (cggcdc.$clinit_Context2d$TextBaseline() , cggcdc.MIDDLE));
  cggcdc.$fillText(ctx, theString, x_0, y_0);
}
;
_.paintDrawingObjects_0 = function paintDrawingObjects(g){
  var i, object;
  if (isNotNull(this.mDrawingObjectList)) {
    for (i = 0; i < this.mDrawingObjectList.size(); i++) {
      object = castTo(this.mDrawingObjectList.getAtIndex(i), 112);
      object.draw_5(new carggv.GraphicsContext(this.ctx), this.mTransformation);
    }
  }
}
;
_.paintFragmentNumbers_0 = function paintFragmentNumbers(g){
  var atom, averageBondLength, cog, font, i, size_0, str;
  if (jsNotEquals(this.mFragmentNoColor, null) && jsNotEquals(this.mMolecule, null)) {
    averageBondLength = this.calculateAverageBondLength();
    cggcdc.$save(g);
    cggcdc.$setStrokeStyle(g, castToJso(this.mFragmentNoColor));
    cggcdc.$setFillStyle(g, castToJso(this.mFragmentNoColor));
    size_0 = round_int(1.6 * averageBondLength);
    font = 'bold ' + size_0 + 'px Helvetica';
    cggcdc.$setFont(g, font);
    for (i = 0; i < this.mMolecule.length; i++) {
      if (this.mMolecule[i].getAllAtoms_0() != 0) {
        cog = new ja.Point;
        for (atom = 0; atom < this.mMolecule[i].getAllAtoms_0(); atom++) {
          cog.x_0 = round_int(cog.x_0 + this.mMolecule[i].getAtomX_0(atom));
          cog.y_0 = round_int(cog.y_0 + this.mMolecule[i].getAtomY_0(atom));
        }
        cog.x_0 = narrow_int(cog.x_0 / this.mMolecule[i].getAllAtoms_0());
        cog.y_0 = narrow_int(cog.y_0 / this.mMolecule[i].getAllAtoms_0());
        cog.x_0 = round_int(this.mDepictor[i].getTransformation().transformX(cog.x_0));
        cog.y_0 = round_int(this.mDepictor[i].getTransformation().transformY(cog.y_0));
        str = this.mReactantOrCoreCount == -1?'F' + (i + 1):i < this.mReactantOrCoreCount?'' + charToString(narrow_char(65 + i)):this.mIsMarkushStructure?'R' + (i + 1 - this.mReactantOrCoreCount):'P' + (i + 1 - this.mReactantOrCoreCount);
        this.drawString_0(g, str, cog.x_0, cog.y_0);
      }
    }
    cggcdc.$restore(g);
  }
}
;
_.paintStructures_0 = function paintStructures(g){
  var i;
  if (jsNotEquals(this.mDepictor, null)) {
    for (i = 0; i < this.mDepictor.length; i++) {
      this.mDepictor[i].setDisplayMode(this.mDisplayMode);
      this.mDepictor[i].paint(g);
    }
  }
}
;
_.simpleValidateView = function simpleValidateView_1(viewRect, mode){
  return this.validateView(null, viewRect, mode);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_MoleculeDrawDepictor_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'MoleculeDrawDepictor', 267, cggl.Lcom_actelion_research_share_gui_editor_chem_AbstractExtendedDepictor_2_classLit);
cargge.$clinit_MousePoint = function $clinit_MousePoint(){
  cargge.$clinit_MousePoint = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.MousePoint = function MousePoint(x_0, y_0){
  cargge.$clinit_MousePoint();
  Object_0.call(this);
  this.$init_173();
  this.x_0 = x_0;
  this.y_0 = y_0;
}
;
defineClass(317, 1, {1:1}, cargge.MousePoint);
_.$init_173 = function $init_173(){
  this.x_0 = 0;
  this.y_0 = 0;
}
;
_.getX_1 = function getX_6(){
  return this.x_0;
}
;
_.getY_1 = function getY_6(){
  return this.y_0;
}
;
_.x_0 = 0;
_.y_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_MousePoint_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'MousePoint', 317, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBar = function $clinit_ToolBar(){
  cargge.$clinit_ToolBar = emptyMethod;
}
;
cargge.COLS = 2;
cargge.ESR_IMAGE_HEIGHT = 70;
cargge.ESR_IMAGE_ROWS = 3;
cargge.ESR_IMAGE_WIDTH = 28;
cargge.IMAGE_HEIGHT = 360;
cargge.IMAGE_WIDTH = 45;
cargge.ROWS = 17;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBar_2_classLit = createForInterface('com.actelion.research.gwt.gui.editor', 'ToolBar');
cargge.$clinit_SVGToolBarImpl = function $clinit_SVGToolBarImpl(){
  cargge.$clinit_SVGToolBarImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl = function SVGToolBarImpl(model, scale){
  cargge.$clinit_SVGToolBarImpl();
  Object_0.call(this);
  this.$init_174();
  this.model = model;
  this.scale_0 = scale;
  cargge.instanceCount_0++;
}
;
defineClass(446, 1, {214:1, 1:1}, cargge.SVGToolBarImpl);
_.$init_174 = function $init_174(){
  this.BUTTON_SVG_IMAGE = new cggucu.Image_1('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz\ndmcgd2lkdGg9IjQ1cHgiIGhlaWdodD0iMzYwcHgiIHZpZXdCb3g9IjAgMCA0NSAzNjAiIHZlcnNp\nb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i\naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNo\nIDM5LjEgKDMxNzIwKSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4K\nICAgIDx0aXRsZT5EcmF3QnV0dG9uczwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tl\ndGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0i\nbm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgog\nICAgICAgIDxnIGlkPSJEcmF3QnV0dG9ucyI+CiAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFs\nIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC41IiBmaWxsPSIjMDAwMDAwIiBjeD0i\nMzguMjc4ODQ2MiIgY3k9IjQ2Ljk3NDU3NjMiIHJ4PSIxLjQ3MTE1Mzg1IiByeT0iMS40NzQ1NzYy\nNyI+PC9lbGxpcHNlPgogICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbCIgc3Ryb2tlPSIjMDAw\nMDAwIiBzdHJva2Utd2lkdGg9IjAuNSIgZmlsbD0iIzAwMDAwMCIgY3g9IjI4LjQ3MTE1MzgiIGN5\nPSI1OC41MjU0MjM3IiByeD0iMS40NzExNTM4NSIgcnk9IjEuNDc0NTc2MjciPjwvZWxsaXBzZT4K\nICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlRyaWFuZ2xlIiBmaWxsPSIjRDAwMTFCIiB0cmFuc2Zv\ncm09InRyYW5zbGF0ZSgzMy4zOTIwNDIsIDcyLjY2NDQ1NCkgcm90YXRlKDIxNy4wMDAwMDApIHRy\nYW5zbGF0ZSgtMzMuMzkyMDQyLCAtNzIuNjY0NDU0KSAiIHBvaW50cz0iMzMuMzkyMDQxOCA2NS42\nNTAyMDk4IDM3LjE4OTczMzkgNzkuNjc4Njk3MiAyOS41OTQzNDk4IDc5LjY3ODY5NzIiPjwvcG9s\neWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTI3LjM2MDMxNjEsODAuNTY0NzI0NiBDMjcuNTA5\nOTE2NSw4MC42NDY1MDkxIDI3LjY4NzA3MjIsODAuNjg3NDAwNyAyNy44OTE3ODg2LDgwLjY4NzQw\nMDcgQzI4LjE0MTEyMjYsODAuNjg3NDAwNyAyOC4zODI1Nzk0LDgwLjY0NzQxNzggMjguNjE2MTY2\nLDgwLjU2NzQ1MDggQzI5LjAwOTg1MTMsODAuNDM0Nzc4MyAyOS4yMDY2OTEsODAuMjE3NTk4NCAy\nOS4yMDY2OTEsNzkuOTE1OTA0OCBMMjkuMjA2NjkxLDc5LjUyMDYxNTQgQzI5LjEyMDA4MDMsNzku\nNTU4NzgxNSAyOS4wMDg1Mzc4LDc5LjU5MDU4NiAyOC44NzIwNjAyLDc5LjYxNjAzMDEgQzI4Ljcz\nNTU4MjYsNzkuNjQxNDc0MSAyOC42MDE3MzE2LDc5LjY1OTY0ODIgMjguNDcwNTAzMSw3OS42NzA1\nNTI4IEwyOC4wNDEzODgzLDc5LjcwODcxODYgQzI3Ljc4NDE4MDUsNzkuNzMyMzQ1MiAyNy41OTEy\nNzc2LDc5Ljc2OTYwMiAyNy40NjI2NzM3LDc5LjgyMDQ5MDEgQzI3LjI0NDgzNDUsNzkuOTA1OTA5\nNCAyNy4xMzU5MTY1LDgwLjA0MjIxNDcgMjcuMTM1OTE2NSw4MC4yMjk0MTAyIEMyNy4xMzU5MTY1\nLDgwLjM3MTE2OTggMjcuMjEwNzE1Niw4MC40ODI5NDAyIDI3LjM2MDMxNjEsODAuNTY0NzI0NiBM\nMjcuMzYwMzE2MSw4MC41NjQ3MjQ2IFogTTI4Ljg1MjM3Niw3OS4yMzcwOTc1IEMyOS4wMTUwOTkz\nLDc5LjIyMjU1OCAyOS4xMjQwMTcyLDc5LjE3NTMwNTUgMjkuMTc5MTMzMiw3OS4wOTUzMzg1IEMy\nOS4yMTA2MjgsNzkuMDUxNzIwMiAyOS4yMjYzNzUyLDc4Ljk4OTAxOTcgMjkuMjI2Mzc1Miw3OC45\nMDcyMzUzIEMyOS4yMjYzNzUyLDc4Ljc0MDAzMTYgMjkuMTQwNDIxOSw3OC42MTg3MTk4IDI4Ljk2\nODUxMjYsNzguNTQzMjk2NCBDMjguNzk2NjAzMyw3OC40Njc4NzMgMjguNTUwNTUzNyw3OC40MzAx\nNjE5IDI4LjIzMDM1NjMsNzguNDMwMTYxOSBDMjcuODYwMjkyMSw3OC40MzAxNjE5IDI3LjU5Nzgz\nOTEsNzguNDk5MjIzMiAyNy40NDI5ODk2LDc4LjYzNzM0OCBDMjcuMzU2Mzc4OCw3OC43MTM2ODAy\nIDI3LjI5OTk1MTQsNzguODI3MjY3OSAyNy4yNzM3MDU3LDc4Ljk3ODExNDggTDI2LjYxMjMxNzcs\nNzguOTc4MTE0OCBDMjYuNjI1NDQwNSw3OC42MTgyNjMzIDI2Ljc5NDA2NjUsNzguMzY3OTE1OSAy\nNy4xMTgyMDA4LDc4LjIyNzA2NDkgQzI3LjQ0MjMzNSw3OC4wODYyMTQgMjcuODE4Mjk4OSw3OC4w\nMTU3ODk1IDI4LjI0NjEwMzYsNzguMDE1Nzg5NSBDMjguNzQyMTQ3MSw3OC4wMTU3ODk1IDI5LjE0\nNTAxMjQsNzguMDgxMjE2MSAyOS40NTQ3MTE1LDc4LjIxMjA3MTIgQzI5Ljc2MTc4NjEsNzguMzQy\nOTI2MyAyOS45MTUzMjExLDc4LjU0NjQ3NTUgMjkuOTE1MzIxMSw3OC44MjI3MjUxIEwyOS45MTUz\nMjExLDgwLjUwNDc0OTcgQzI5LjkxNTMyMTEsODAuNTU1NjM3OCAyOS45MzA0MTIxLDgwLjU5NjUy\nOTQgMjkuOTYwNTk0Nyw4MC42Mjc0MjU3IEMyOS45OTA3NzcyLDgwLjY1ODMyMiAzMC4wNTQ0MjIx\nLDgwLjY3Mzc3IDMwLjE1MTUzMTEsODAuNjczNzcgQzMwLjE4MzAyNTksODAuNjczNzcgMzAuMjE4\nNDU3MSw4MC42NzI0MDY5IDMwLjI1NzgyNTYsODAuNjY5NjgwOCBDMzAuMjk3MTk0MSw4MC42NjY5\nNTQ2IDMwLjMzOTE4NjYsODAuNjYyODY1NSAzMC4zODM4MDQzLDgwLjY1NzQxMzIgTDMwLjM4Mzgw\nNDMsODEuMDE5OTg5IEMzMC4yNzM1NzI0LDgxLjA0MTc5ODIgMzAuMTg5NTg3NCw4MS4wNTU0Mjg3\nIDMwLjEzMTg0NjksODEuMDYwODgxIEMzMC4wNzQxMDY0LDgxLjA2NjMzMzMgMjkuOTk1MzcwNSw4\nMS4wNjkwNTk0IDI5Ljg5NTYzNjksODEuMDY5MDU5NCBDMjkuNjUxNTUyLDgxLjA2OTA1OTQgMjku\nNDc0Mzk2Myw4MS4wMDkwODUgMjkuMzY0MTY0NCw4MC44ODkxMzQ2IEMyOS4zMDY0MjM5LDgwLjgy\nNTUyNDQgMjkuMjY1NzQzNyw4MC43MzU1NjI5IDI5LjI0MjEyMjUsODAuNjE5MjQ3MyBDMjkuMDk3\nNzcxMiw4MC43NTAxMDI0IDI4Ljg5MDQzMzQsODAuODYzNjkwMiAyOC42MjAxMDI4LDgwLjk2MDAx\nNCBDMjguMzQ5NzcyMiw4MS4wNTYzMzc5IDI4LjA1MTg4ODEsODEuMTA0NDk5MSAyNy43MjY0NDE2\nLDgxLjEwNDQ5OTEgQzI3LjMzNTM4MDgsODEuMTA0NDk5MSAyNy4wMTU4NDQ0LDgxLjAyMjI2MTYg\nMjYuNzY3ODIyNiw4MC44NTc3ODQgQzI2LjUxOTgwMDgsODAuNjkzMzA2NSAyNi4zOTU3OTE4LDgw\nLjQ4NzQ4NTQgMjYuMzk1NzkxOCw4MC4yNDAzMTQ3IEMyNi4zOTU3OTE4LDc5Ljk2OTUxNzQgMjYu\nNTE3ODMyNCw3OS43NTk2MDcyIDI2Ljc2MTkxNzMsNzkuNjEwNTc3OCBDMjcuMDA2MDAyMyw3OS40\nNjE1NDg0IDI3LjMyNjE5NDksNzkuMzY5NzY5NSAyNy43MjI1MDQ4LDc5LjMzNTIzODMgTDI4Ljg1\nMjM3Niw3OS4yMzcwOTc1IFogTTMxLjAyMTU3MTMsNzYuOTg4MDM3MSBMMzEuNzEwNTE3Miw3Ni45\nODgwMzcxIEwzMS43MTA1MTcyLDc4LjQ0MTA2NjQgQzMxLjg2NTM2NjgsNzguMzAxMTI0MiAzMi4w\nNTAzOTYxLDc4LjE5NDM1MTcgMzIuMjY1NjEwOCw3OC4xMjA3NDU3IEMzMi40ODA4MjU0LDc4LjA0\nNzEzOTcgMzIuNzE0NDA4NSw3OC4wMTAzMzczIDMyLjk2NjM2NzEsNzguMDEwMzM3MyBDMzMuNDkx\nMjgwOSw3OC4wMTAzMzczIDMzLjkxNzExMDgsNzguMTM1MjgzOCAzNC4yNDM4Njk3LDc4LjM4NTE4\nMDcgQzM0LjU3MDYyODUsNzguNjM1MDc3NSAzNC43MzQwMDU0LDc5LjAwMzU1NjMgMzQuNzM0MDA1\nNCw3OS40OTA2Mjc5IEMzNC43MzQwMDU0LDc5Ljk1MjI1NTYgMzQuNTcyNTk2OSw4MC4zMzU3Mjc5\nIDM0LjI0OTc3NDksODAuNjQxMDU2NCBDMzMuOTI2OTUyOSw4MC45NDYzODQ5IDMzLjQ3OTQ3MDcs\nODEuMDk5MDQ2OSAzMi45MDczMTQ2LDgxLjA5OTA0NjkgQzMyLjU4NzExNzIsODEuMDk5MDQ2OSAz\nMi4zMTY3OTA3LDgxLjA0NTQzMzQgMzIuMDk2MzI2OSw4MC45MzgyMDUgQzMxLjk2NTA5ODUsODAu\nODc0NTk0OSAzMS44MjQ2ODYxLDgwLjc3MjgyMDIgMzEuNjc1MDg1Nyw4MC42MzI4NzggTDMxLjY3\nNTA4NTcsODEuMDA2MzU4MyBMMzEuMDIxNTcxMyw4MS4wMDYzNTgzIEwzMS4wMjE1NzEzLDc2Ljk4\nODAzNzEgWiBNMzMuNzI0MjA3Niw4MC4zNDkzNjAxIEMzMy45MTQ0ODg5LDgwLjEzODUzOCAzNC4w\nMDk2MjgxLDc5Ljg2MDQ3NTEgMzQuMDA5NjI4MSw3OS41MTUxNjMxIEMzNC4wMDk2MjgxLDc5LjIw\nODAxNzIgMzMuOTE0NDg4OSw3OC45NTM1ODA2IDMzLjcyNDIwNzYsNzguNzUxODQ1NyBDMzMuNTMz\nOTI2NCw3OC41NTAxMTA4IDMzLjI1Mzc1NzksNzguNDQ5MjQ0OCAzMi44ODM2OTM2LDc4LjQ0OTI0\nNDggQzMyLjU2MDg3MTcsNzguNDQ5MjQ0OCAzMi4yNzgwNzg2LDc4LjUzMTkzNjcgMzIuMDM1MzA2\nLDc4LjY5NzMyMyBDMzEuNzkyNTMzNCw3OC44NjI3MDkzIDMxLjY3MTE0ODksNzkuMTM1MzE5OSAz\nMS42NzExNDg5LDc5LjUxNTE2MzEgQzMxLjY3MTE0ODksNzkuNzg5NTk1MyAzMS43MjEwMTQ5LDgw\nLjAxMjIyNzMgMzEuODIwNzQ4Niw4MC4xODMwNjU5IEMzMi4wMDcwOTMsODAuNTA0NzUxMyAzMi4z\nNTQ4NDMxLDgwLjY2NTU5MTYgMzIuODY0MDA5NSw4MC42NjU1OTE2IEMzMy4yNDcxOTY1LDgwLjY2\nNTU5MTYgMzMuNTMzOTI2NCw4MC41NjAxODIxIDMzLjcyNDIwNzYsODAuMzQ5MzYwMSBMMzMuNzI0\nMjA3Niw4MC4zNDkzNjAxIFogTTM1Ljk4MTk4MTcsODAuMDkwMzc3NCBDMzYuMDAyOTc4Myw4MC4y\nNTM5NDYyIDM2LjA2MjAzMDIsODAuMzc5MzQ3MSAzNi4xNTkxMzkyLDgwLjQ2NjU4MzggQzM2LjMz\nNzYwOTksODAuNjI0NzAwNCAzNi42NDczMDQ0LDgwLjcwMzc1NzUgMzcuMDg4MjMyLDgwLjcwMzc1\nNzUgQzM3LjM1MDY4ODgsODAuNzAzNzU3NSAzNy41ODE2NDc0LDgwLjY2NDIyODkgMzcuNzgxMTE0\nNyw4MC41ODUxNzA2IEMzNy45ODA1ODE5LDgwLjUwNjExMjQgMzguMDgwMzE0LDgwLjM4Mzg5MTkg\nMzguMDgwMzE0LDgwLjIxODUwNTYgQzM4LjA4MDMxNCw4MC4wOTMxMDI5IDM4LjAwMDI2NTksNzku\nOTk3Njg5MSAzNy44NDAxNjcyLDc5LjkzMjI2MTYgQzM3LjczNzgwOSw3OS44OTIyNzgxIDM3LjUz\nNTcyMDIsNzkuODQ1OTM0MyAzNy4yMzM4OTQ4LDc5Ljc5MzIyODggTDM2LjY3MDkyNzYsNzkuNjk1\nMDg4IEMzNi4zMTEzNjE3LDc5LjYzMzI5NTMgMzYuMDQ2Mjg0Miw3OS41NjQyMzM5IDM1Ljg3NTY4\nNzIsNzkuNDg3OTAxOCBDMzUuNTcxMjM3Miw3OS4zNTUyMjkzIDM1LjQxOTAxNDUsNzkuMTcxNjcx\nNCAzNS40MTkwMTQ1LDc4LjkzNzIyMjggQzM1LjQxOTAxNDUsNzguNjYwOTczMiAzNS41NjI3MDc1\nLDc4LjQzNzQzMjQgMzUuODUwMDk3OCw3OC4yNjY1OTM5IEMzNi4xMzc0ODgxLDc4LjA5NTc1NTMg\nMzYuNTIzOTUsNzguMDEwMzM3MyAzNy4wMDk0OTUzLDc4LjAxMDMzNzMgQzM3LjY0NDY0MSw3OC4w\nMTAzMzczIDM4LjEwMjYyMTQsNzguMTM5MzczIDM4LjM4MzQ1MDIsNzguMzk3NDQ4MyBDMzguNTU5\nMjk2Myw3OC41NjEwMTcxIDM4LjY0NDU5MzUsNzguNzM3MzA1MyAzOC42MzkzNDQ0LDc4LjkyNjMx\nODIgTDM3Ljk3MDA4MjcsNzguOTI2MzE4MiBDMzcuOTU2OTU5OCw3OC44MTU0NTQ5IDM3LjkwMDUz\nMjUsNzguNzE0NTg5IDM3LjgwMDc5ODgsNzguNjIzNzE3NCBDMzcuNjM4MDc1Niw3OC40OTQ2Nzk3\nIDM3LjM1NTkzODcsNzguNDMwMTYxOSAzNi45NTQzNzk2LDc4LjQzMDE2MTkgQzM2LjY4NjY3MzYs\nNzguNDMwMTYxOSAzNi40ODM5Mjg3LDc4LjQ2NTYwMTMgMzYuMzQ2MTM4OCw3OC41MzY0ODExIEMz\nNi4yMDgzNDksNzguNjA3MzYwOSAzNi4xMzk0NTUxLDc4LjcwMDk1NzMgMzYuMTM5NDU1MSw3OC44\nMTcyNzI5IEMzNi4xMzk0NTUxLDc4Ljk0NDQ5MzEgMzYuMjMwMDAxMyw3OS4wNDYyNjc3IDM2LjQx\nMTA5NjYsNzkuMTIyNTk5OSBDMzYuNTE2MDc5Myw3OS4xNjgwMzU3IDM2LjY3MDkyNjYsNzkuMjA4\nMDE4NSAzNi44NzU2NDI5LDc5LjI0MjU0OTcgTDM3LjM0NDEyNjEsNzkuMzIxNjA3NiBDMzcuODUz\nMjkyNSw3OS40MDcwMjY5IDM4LjE5NDQ4MTMsNzkuNDg5NzE4OCAzOC4zNjc3MDI5LDc5LjU2OTY4\nNTggQzM4LjY0MzI4MjYsNzkuNjk1MDg4NiAzOC43ODEwNzA0LDc5Ljg5MjI3NyAzOC43ODEwNzA0\nLDgwLjE2MTI1NjggQzM4Ljc4MTA3MDQsODAuNDIxMTQ5NiAzOC42Mzg2ODk3LDgwLjY0NTU5OSAz\nOC4zNTM5MjQsODAuODM0NjExOSBDMzguMDY5MTU4Miw4MS4wMjM2MjQ4IDM3LjYzNTQ1NDcsODEu\nMTE4MTI5OCAzNy4wNTI4MDA1LDgxLjExODEyOTggQzM2LjQyNTUyODUsODEuMTE4MTI5OCAzNS45\nODEzMjY5LDgxLjAxOTUzNTYgMzUuNzIwMTgyMyw4MC44MjIzNDQzIEMzNS40NTkwMzc3LDgwLjYy\nNTE1MjkgMzUuMzE5MjgxNSw4MC4zODExNjY0IDM1LjMwMDkwOTUsODAuMDkwMzc3NCBMMzUuOTgx\nOTgxNyw4MC4wOTAzNzc0IFoiIGlkPSJhYnMiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAg\nICAgICAgPHBhdGggZD0iTTMwLjAyMDc0ODMsODkuMjUgTDMwLjAyMDc0ODMsOTAuMDA0ODEwOSBM\nMjcuODMxOTcyOCw5MC4wMDQ4MTA5IEwyNy44MzE5NzI4LDk1LjU4NjA5ODIgTDI2LjkzODc3NTUs\nOTUuNTg2MDk4MiBMMjYuOTM4Nzc1NSw5MC4wMDQ4MTA5IEwyNC43NSw5MC4wMDQ4MTA5IEwyNC43\nNSw4OS4yNSBMMzAuMDIwNzQ4Myw4OS4yNSBaIE0zMi42NjQ5NjYsOTEuMDkzODk1MiBDMzIuOTgw\nMzg3MSw5MS4yNDc3MzM2IDMzLjIyMDYzNDEsOTEuNDQ2ODU3OSAzMy4zODU3MTQzLDkxLjY5MTI3\nNDEgQzMzLjU0NDg5ODgsOTEuOTI0MTg4MyAzMy42NTEwMjAxLDkyLjE5NTkxNzUgMzMuNzA0MDgx\nNiw5Mi41MDY0Njk4IEMzMy43NTEyNDc0LDkyLjcxOTI1NTcgMzMuNzc0ODI5OSw5My4wNTg1NTc3\nIDMzLjc3NDgyOTksOTMuNTI0Mzg2MiBMMzAuMzAzNzQxNSw5My41MjQzODYyIEMzMC4zMTg0ODA4\nLDkzLjk5MzA5MDIgMzAuNDMxOTcxNyw5NC4zNjkwNTQxIDMwLjY0NDIxNzcsOTQuNjUyMjg5MyBD\nMzAuODU2NDYzNiw5NC45MzU1MjQ1IDMxLjE4NTE0NTIsOTUuMDc3MTQgMzEuNjMwMjcyMSw5NS4w\nNzcxNCBDMzIuMDQ1OTIwNCw5NS4wNzcxNCAzMi4zNzc1NDk4LDk0Ljk0MzQzMiAzMi42MjUxNzAx\nLDk0LjY3NjAxMTkgQzMyLjc2NjY2NzQsOTQuNTIwNzM1OCAzMi44NjY4OTMxLDk0LjM0MTAyMDcg\nMzIuOTI1ODUwMyw5NC4xMzY4NjEzIEwzMy43MDg1MDM0LDk0LjEzNjg2MTMgQzMzLjY4Nzg2ODQs\nOTQuMzA2NTE0OSAzMy42MTkzMzE2LDk0LjQ5NTU3NTIgMzMuNTAyODkxMiw5NC43MDQwNDc4IEMz\nMy4zODY0NTA3LDk0LjkxMjUyMDQgMzMuMjU2MDA5OCw5NS4wODI4OTAzIDMzLjExMTU2NDYsOTUu\nMjE1MTYyNiBDMzIuODY5ODQwMSw5NS40NDUyMDEzIDMyLjU3MDYzNjcsOTUuNjAwNDc1MiAzMi4y\nMTM5NDU2LDk1LjY4MDk4ODcgQzMyLjAyMjMzNDYsOTUuNzI2OTk2NSAzMS44MDU2NzAxLDk1Ljc1\nIDMxLjU2Mzk0NTYsOTUuNzUgQzMwLjk3NDM3MzUsOTUuNzUgMzAuNDc0NzE4Niw5NS41NDA4MTE2\nIDMwLjA2NDk2Niw5NS4xMjI0Mjg3IEMyOS42NTUyMTM0LDk0LjcwNDA0NTcgMjkuNDUwMzQwMSw5\nNC4xMTgxNzQ1IDI5LjQ1MDM0MDEsOTMuMzY0Nzk3NiBDMjkuNDUwMzQwMSw5Mi42MjI5MjI2IDI5\nLjY1NjY4NzMsOTIuMDIwNTE3NyAzMC4wNjkzODc4LDkxLjU1NzU2NDcgQzMwLjQ4MjA4ODIsOTEu\nMDk0NjExNyAzMS4wMjE1Mzg2LDkwLjg2MzEzODcgMzEuNjg3NzU1MSw5MC44NjMxMzg3IEMzMi4w\nMjM4MTEyLDkwLjg2MzEzODcgMzIuMzQ5NTQ0OSw5MC45NDAwNTY3IDMyLjY2NDk2Niw5MS4wOTM4\nOTUyIEwzMi42NjQ5NjYsOTEuMDkzODk1MiBaIE0zMi45NTY4MDI3LDkyLjkwNzU5NzkgQzMyLjky\nNDM3NjMsOTIuNTcxMTY2MiAzMi44NDkyMDY5LDkyLjMwMjMxMjQgMzIuNzMxMjkyNSw5Mi4xMDEw\nMjg1IEMzMi41MTMxNTA4LDkxLjcyNzIxNTYgMzIuMTQ5MDk1NSw5MS41NDAzMTE5IDMxLjYzOTEx\nNTYsOTEuNTQwMzExOSBDMzEuMjczNTgwOSw5MS41NDAzMTE5IDMwLjk2NzAwOCw5MS42Njg5ODc5\nIDMwLjcxOTM4NzgsOTEuOTI2MzQzNyBDMzAuNDcxNzY3NSw5Mi4xODM2OTk2IDMwLjM0MDU4OTYs\nOTIuNTEwNzgxIDMwLjMyNTg1MDMsOTIuOTA3NTk3OSBMMzIuOTU2ODAyNyw5Mi45MDc1OTc5IFog\nTTM0LjMwMTAyMDQsOTAuOTY2NjU1NiBMMzUuMzMxMjkyNSw5MC45NjY2NTU2IEwzNi40MTkwNDc2\nLDkyLjU5MjczMzkgTDM3LjUyMDA2OCw5MC45NjY2NTU2IEwzOC40ODg0MzU0LDkwLjk4ODIyMTYg\nTDM2Ljg5MjE3NjksOTMuMjE4MTQ4NiBMMzguNTU5MTgzNyw5NS41ODYwOTgyIEwzNy41NDIxNzY5\nLDk1LjU4NjA5ODIgTDM2LjM2NTk4NjQsOTMuODUyMTg5OCBMMzUuMjI1MTcwMSw5NS41ODYwOTgy\nIEwzNC4yMTcwMDY4LDk1LjU4NjA5ODIgTDM1Ljg4NDAxMzYsOTMuMjE4MTQ4NiBMMzQuMzAxMDIw\nNCw5MC45NjY2NTU2IFogTTM5LjQzOTExNTYsODkuNjc3MDA3MyBMNDAuMjQzODc3Niw4OS42Nzcw\nMDczIEw0MC4yNDM4Nzc2LDkwLjk2NjY1NTYgTDQxLDkwLjk2NjY1NTYgTDQxLDkxLjYwMDY5Njcg\nTDQwLjI0Mzg3NzYsOTEuNjAwNjk2NyBMNDAuMjQzODc3Niw5NC42MTU2MjcxIEM0MC4yNDM4Nzc2\nLDk0Ljc3NjY1NDIgNDAuMjk5ODg2MSw5NC44ODQ0ODMyIDQwLjQxMTkwNDgsOTQuOTM5MTE3NSBD\nNDAuNDczODA5OCw5NC45NzA3NDc4IDQwLjU3Njk4MzQsOTQuOTg2NTYyNyA0MC43MjE0Mjg2LDk0\nLjk4NjU2MjcgQzQwLjc1OTc1MDgsOTQuOTg2NTYyNyA0MC44MDEwMjAyLDk0Ljk4NTg0MzggNDAu\nODQ1MjM4MSw5NC45ODQ0MDYxIEM0MC44ODk0NTYsOTQuOTgyOTY4NCA0MC45NDEwNDI4LDk0Ljk3\nOTM3NDEgNDEsOTQuOTczNjIzMSBMNDEsOTUuNTg2MDk4MiBDNDAuOTA4NjE2Myw5NS42MTE5Nzc2\nIDQwLjgxMzU0OTIsOTUuNjMwNjY3OSA0MC43MTQ3OTU5LDk1LjY0MjE2OTkgQzQwLjYxNjA0MjYs\nOTUuNjUzNjcxOCA0MC41MDkxODQyLDk1LjY1OTQyMjcgNDAuMzk0MjE3Nyw5NS42NTk0MjI3IEM0\nMC4wMjI3ODczLDk1LjY1OTQyMjcgMzkuNzcwNzQ5LDk1LjU2NjY4OTcgMzkuNjM4MDk1Miw5NS4z\nODEyMjEgQzM5LjUwNTQ0MTUsOTUuMTk1NzUyMiAzOS40MzkxMTU2LDk0Ljk1NDkzNCAzOS40Mzkx\nMTU2LDk0LjY1ODc1OTEgTDM5LjQzOTExNTYsOTEuNjAwNjk2NyBMMzguNzk3OTU5Miw5MS42MDA2\nOTY3IEwzOC43OTc5NTkyLDkwLjk2NjY1NTYgTDM5LjQzOTExNTYsOTAuOTY2NjU1NiBMMzkuNDM5\nMTE1Niw4OS42NzcwMDczIFoiIGlkPSJUZXh0IiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAg\nICAgICAgIDxwb2x5Z29uIGlkPSJVcCIgZmlsbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xh\ndGUoMTEuMjQwOTM5LCAxMzQuNTExODE2KSBzY2FsZSgxLCAtMSkgcm90YXRlKDIxOC4wMDAwMDAp\nIHRyYW5zbGF0ZSgtMTEuMjQwOTM5LCAtMTM0LjUxMTgxNikgIiBwb2ludHM9IjExLjI0MDkzOTIg\nMTI3LjQ2MjUwMSAxNS4wNjQzNzg0IDE0MS41NjExMzEgNy40MTc1MDAwOCAxNDEuNTYxMTMxIj48\nL3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJUcmlhbmdsZS0yIiBmaWxsPSIjMDAw\nMDAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyOS40OTgwMjAsIDEzMC44NzEyNzMpIHJvdGF0ZSgz\nMTkuMDAwMDAwKSB0cmFuc2xhdGUoLTI5LjQ5ODAyMCwgLTEzMC44NzEyNzMpICIgcG9pbnRzPSIy\nOS40OTgwMiAxMjguOTYyNzM3IDMwLjg0OTE1NDcgMTMyLjc3OTgwOCAyOC4xNDY4ODUzIDEzMi43\nNzk4MDgiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZSIgZmls\nbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzIuMDY4OTQ5LCAxMzMuODI4Nzg4KSBy\nb3RhdGUoMzE5LjAwMDAwMCkgdHJhbnNsYXRlKC0zMi4wNjg5NDksIC0xMzMuODI4Nzg4KSAiIHBv\naW50cz0iMjkuODE3MDU4MSAxMzUuMDkwODg0IDMwLjcwNTc4MzMgMTMyLjU2NjY5MyAzMy40MzIx\nMTUyIDEzMi41NjY2OTMgMzQuMzIwODQwNCAxMzUuMDkwODg0Ij48L3BvbHlnb24+CiAgICAgICAg\nICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJh\nbnNsYXRlKDM0LjIxMjcxNywgMTM2LjMwMTA4OSkgcm90YXRlKDMxOS4wMDAwMDApIHRyYW5zbGF0\nZSgtMzQuMjEyNzE3LCAtMTM2LjMwMTA4OSkgIiBwb2ludHM9IjM2LjQ1NDgyMSAxMzUuMDM4OTk0\nIDM3LjMxNjI3NDEgMTM3LjU2MzE4NSAzMS4xMDkxNjAyIDEzNy41NjMxODUgMzEuOTcwNzMzNiAx\nMzUuMDM4OTk0Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUi\nIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM2LjM0NTYwOCwgMTM4Ljc4Mjg0\nNikgcm90YXRlKDMxOS4wMDAwMDApIHRyYW5zbGF0ZSgtMzYuMzQ1NjA4LCAtMTM4Ljc4Mjg0Nikg\nIiBwb2ludHM9IjMyLjM1OTc2MDUgMTQwLjA0NDk0MiAzMy4yNTc2MzcgMTM3LjUyMDc1IDM5LjQz\nMzU3ODcgMTM3LjUyMDc1IDQwLjMzMTQ1NTIgMTQwLjA0NDk0MiI+PC9wb2x5Z29uPgogICAgICAg\nICAgICA8cG9seWdvbiBpZD0iQ3ljbG9wcm9wYW5lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13\naWR0aD0iMC43NSIgcG9pbnRzPSIxMS42MTc1MDAxIDE1Mi4yMTI1MDEgMTYuNTY3NTAwMiAxNjIu\nMTEyNTAyIDYuNjY3NTAwMDggMTYyLjExMjUwMiI+PC9wb2x5Z29uPgogICAgICAgICAgICA8cG9s\neWdvbiBpZD0iQ3lsb3BlbnRhbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwLjc1\nIiBwb2ludHM9IjExLjk5Mzc1MDEgMTcyLjI4NzUwMiAxOC41NTI1MDAyIDE3Ny4xMDg4NjggMTYu\nMDQ3MjgwNiAxODQuOTEwMDAyIDcuOTQwMjE5NjYgMTg0LjkxMDAwMiA1LjQzNTAwMDA2IDE3Ny4x\nMDg4NjgiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IkN5Y2xvYnV0YW5lIiBz\ndHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo\nMzMuMzA4NzUwLCAxNTYuNTUxMjUyKSByb3RhdGUoLTQ1LjAwMDAwMCkgdHJhbnNsYXRlKC0zMy4z\nMDg3NTAsIC0xNTYuNTUxMjUyKSAiIHBvaW50cz0iMzMuMzA4NzUwMSAxNTAuMjQwMDAxIDQwLjIw\nNTAyOCAxNTcuMjE3NTQ4IDMzLjMwODc1MDEgMTY0LjE5NTA5NCAyNi40MTI0NzIxIDE1Ny4yMTc1\nNDgiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IkN5Y2xvaGV4YW5lIiBzdHJv\na2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43NSIgcG9pbnRzPSIzMy43NSAxNzIgMzkuNzUg\nMTc1LjQzNzUgMzkuNzUgMTgyLjMxMjUgMzMuNzUgMTg1Ljc1IDI3Ljc1IDE4Mi4zMTI1IDI3Ljc1\nIDE3NS40Mzc1Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC42NzAxMjU1LDIz\nOC40NzU2MzQgQzE1LjM1MTUyMzgsMjM5LjEyNjA1OSAxNS43Mjk4MjcsMjM5Ljg2NDk2NyAxNS44\nMDUwNDYzLDI0MC42OTIzOCBMMTQuNTE3NDc1MywyNDAuNjkyMzggQzE0LjM3MTQ2MTQsMjQwLjA2\nNDA3NyAxNC4wODA1NDQsMjM5LjU2NjMxIDEzLjY0NDcxNDYsMjM5LjE5OTA2MyBDMTMuMjA4ODg1\nMSwyMzguODMxODE2IDEyLjU5NzE4NDQsMjM4LjY0ODE5NSAxMS44MDk1OTQxLDIzOC42NDgxOTUg\nQzEwLjg0OTQ0MTksMjM4LjY0ODE5NSAxMC4wNzQwMzEsMjM4Ljk4NTU3IDkuNDgzMzM4MywyMzku\nNjYwMzMyIEM4Ljg5MjY0NTU3LDI0MC4zMzUwOTMgOC41OTczMDM2NCwyNDEuMzY5MzQzIDguNTk3\nMzAzNjQsMjQyLjc2MzExMiBDOC41OTczMDM2NCwyNDMuOTA0Njc2IDguODYzODg1NjgsMjQ0Ljgz\nMDUyMyA5LjM5NzA1Nzc3LDI0NS41NDA2ODIgQzkuOTMwMjI5ODYsMjQ2LjI1MDg0IDEwLjcyNTU1\nMTQsMjQ2LjYwNTkxNCAxMS43ODMwNDYyLDI0Ni42MDU5MTQgQzEyLjc1NjQ3MjUsMjQ2LjYwNTkx\nNCAxMy40OTc1OTI3LDI0Ni4yMzIwMzYgMTQuMDA2NDI5MSwyNDUuNDg0MjY3IEMxNC4yNzYzMzM2\nLDI0NS4wOTA0NzIgMTQuNDc3NjUyOSwyNDQuNTcyNzk0IDE0LjYxMDM5MjgsMjQzLjkzMTIxOCBM\nMTUuODk3OTYzOCwyNDMuOTMxMjE4IEMxNS43ODI5MjI1LDI0NC45NTc3NCAxNS40MDI0MDcsMjQ1\nLjgxODMyNCAxNC43NTY0MDYsMjQ2LjUxMjk5NyBDMTMuOTgyMDg5NywyNDcuMzQ5MjU4IDEyLjkz\nNzg4NDUsMjQ3Ljc2NzM4MyAxMS42MjM3NTkxLDI0Ny43NjczODMgQzEwLjQ5MTA0NSwyNDcuNzY3\nMzgzIDkuNTM5NzU2MzQsMjQ3LjQyNDQ3NyA4Ljc2OTg2NDcsMjQ2LjczODY1NCBDNy43NTY2MTY1\nLDI0NS44MzE1OTcgNy4yNSwyNDQuNDMxMjEyIDcuMjUsMjQyLjUzNzQ1NSBDNy4yNSwyNDEuMDk5\nNDM5IDcuNjMwNTE1NDUsMjM5LjkyMDI4NCA4LjM5MTU1Nzc2LDIzOC45OTk5NTQgQzkuMjE0NTQ1\nMzgsMjM3Ljk5OTk4IDEwLjM0OTQ1NDgsMjM3LjUgMTEuNzk2MzIwMiwyMzcuNSBDMTMuMDMwODAx\nNiwyMzcuNSAxMy45ODg3MjcxLDIzNy44MjUyMDggMTQuNjcwMTI1NSwyMzguNDc1NjM0IEwxNC42\nNzAxMjU1LDIzOC40NzU2MzQgWiIgaWQ9IkMiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJh\nbnNsYXRlKDExLjU3Mzk4MiwgMjQyLjYzMzY5MSkgc2NhbGUoMSwgLTEpIHRyYW5zbGF0ZSgtMTEu\nNTczOTgyLCAtMjQyLjYzMzY5MSkgIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMy4w\nNTMzNTkxLDQ4LjMxODExNzUgQzE2LjE2MDczOTgsNDguMzE4MTE3NSAxOC43ODYyMTAyLDQ5Ljg1\nMjI1MTggMTguNzg2MjEwMiw1MS42Njc5MjA4IEMxOC43ODYyMTAyLDUyLjEwNzY3MyAxOC42Mjg4\nNDc4LDUyLjUzMTU2NDYgMTguMzUxMDIzOCw1Mi45MjA2OTcxIEwxOS40ODAxMTY0LDUzLjI4ODIx\nMTEgQzE5Ljc1NDgxNDksNTIuNzg1NjUyMyAxOS45MTE3MzA3LDUyLjI0MTU4NzQgMTkuOTExNzMw\nNyw1MS42Njc5MjA4IEMxOS45MTE3MzA3LDQ5LjA5MDQ4MzMgMTYuODk5MDczNiw0Ny4wNzE1MjMg\nMTMuMDUzMzU5MSw0Ny4wNzE1MjMgQzkuMjA3OTYzNTcsNDcuMDcxNTIzIDYuMTk0OTg3NTUsNDku\nMDkwNjYgNi4xOTQ5ODc1NSw1MS42Njc5MjA4IEM2LjE5NDk4NzU1LDUyLjYxODc4MDMgNi42MDc1\nNjE0Nyw1My40OTIxNzM2IDcuMzE3MzE4NzMsNTQuMjE3Mjc1NSBDNy4wOTU2MjcyMyw1NC4zNzYz\nMDU1IDYuODc4NTkyMTcsNTQuNTg4MjUxMiA2LjcxNjU3MzM1LDU0Ljg4Nzg3MiBDNi4zODMxOTA5\nMSw1NS41MDQyNDU2IDYuMzc2NTg4OTcsNTYuMjY4Njk4OCA2LjY5NjAwMjA2LDU3LjE2MDk5MDYg\nQzYuOTk2ODUzMTUsNTguMDAxMzkxIDYuOTIzMjQzMDMsNTguMzExOTI2OSA2Ljg3NzU3MTU4LDU4\nLjQwNTgxODkgQzYuNzcwNjAwODgsNTguNjI5MTM5MSA2LjI5OTM0Mjk4LDU4Ljc0MTg5NDMgNS44\nNDQ3MDE1OCw1OC44NTA3NjM4IEM1LjczMzUyMDk1LDU4Ljg3NzUzOTYgNS42MjAxNzE1Niw1OC45\nMDQ4NDUzIDUuNTA3MjA0ODksNTguOTM0NTE3NyBDNS4yMDQ3MjcyMyw1OS4wMTM2NDQxIDUuMDE3\nNTQ0NDYsNTkuMzQ4Njk1MSA1LjA4ODQ0MzY0LDU5LjY4NDQ1MjUgQzUuMTQ5MTA1MDIsNTkuOTcw\nOTY3OSA1LjM4MDcxNTM5LDYwLjE2NDcyMTcgNS42MzU3MzU1Nyw2MC4xNjQ3MjE3IEM1LjY3ODQ3\nMjgyLDYwLjE2NDcyMTcgNS43MjIxMzQ5OCw2MC4xNTkwNjk4IDUuNzY1NDc4MjEsNjAuMTQ4MjI1\nMyBDNS44NzEzNjQ1Miw2MC4xMjAyODM3IDUuOTc3NzYxMTQsNjAuMDk0NjAzIDYuMDgyMjQ0MTQs\nNjAuMDY5NTU4IEM2Ljc1NTUxNTI3LDU5LjkwODMzNzkgNy41MTgwODgxMiw1OS43MjU0Mjg3IDcu\nODcwODI5ODgsNTguOTkyODAyOCBDOC4xNDE0Nzc4Niw1OC40MzEwNzU4IDguMTAwMzAzMzksNTcu\nNzAyOTAwNyA3Ljc0MjI5OTIsNTYuNzAyMDIyIEM3LjU1OTcwOTA5LDU2LjE5MjExNTcgNy41Mzg2\nNTk0LDU1Ljc5ODk5MTYgNy42ODAyMDI2Miw1NS41MzI3ODc3IEM3LjgzODU1MzY5LDU1LjIzNDI2\nMiA4LjE5NDk2MzIxLDU1LjEwMTU4NCA4LjM4NzkxODcsNTUuMDU3MDc1MyBDOS41MjY2NzUwMSw1\nNS43NjAwOTk1IDExLjAzMDI5MjYsNTYuMTk5OTU3NyAxMi43MTIzNTQyLDU2LjI1MzQ3NCBMMTIu\nMzc3MzQ1Miw1NC45OTA5ODM2IEM5LjU3NDg2NjA0LDU0Ljc4NzU4NjMgNy4zMjAzMTY3Miw1My4z\nNTAxNjk5IDcuMzIwMzE2NzIsNTEuNjY4MDI2OCBDNy4zMjAzMTk5LDQ5Ljg1MjM1NzggOS45NDU3\nODcwOSw0OC4zMTgyMjM1IDEzLjA1MzE2NzgsNDguMzE4MjIzNSIgaWQ9IlNoYXBlIiBmaWxsPSIj\nMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMC42MjM5MTE5LDU0Ljk1OTc5\nMjIgTDEzLjU0MTk2NzEsNTIuNjU0MTc1MiBDMTMuNTA2NDA1OSw1Mi42NDIyMzU2IDEzLjQ3MDM5\nODEsNTIuNjM3MTQ4OSAxMy40MzQzOTA0LDUyLjYzNzE0ODkgQzEzLjMzNTEwNiw1Mi42MzcxNDg5\nIDEzLjIzNzk5MDQsNTIuNjgwNDkxOCAxMy4xNjU0MDA5LDUyLjc2MDc4NCBDMTMuMDY2NjU4Nyw1\nMi44Njk1ODI4IDEzLjAyOTU5ODUsNTMuMDI5NzA3OSAxMy4wNjkwODI2LDUzLjE3NzIyMjEgTDE1\nLjE1MDc2OTMsNjEuMDIyNzQ4OSBDMTUuMTkzNTA2Niw2MS4xODU2OTk5IDE1LjMyMTQ2MzIsNjEu\nMzA0NzA3NSAxNS40NzQyNjQ4LDYxLjMyMzAwNTUgQzE1LjQ4ODcxMjUsNjEuMzI0NjY1NyAxNS41\nMDI2ODE5LDYxLjMyNTI2NjIgMTUuNTE2NDI4LDYxLjMyNTI2NjIgQzE1LjY1Mzg1NjksNjEuMzI1\nMjY2MiAxNS43ODEzNjcsNjEuMjQyNjc4IDE1Ljg0OTM2MzksNjEuMTA3NTk3OSBMMTcuNTc0MTYy\nNyw1Ny42NDQ0MDM2IEwyMC43MDA2Nzk1LDU1LjczMzcxMjMgQzIwLjgzNTQyOTQsNTUuNjUxNjg5\nMyAyMC45MTIxMDEzLDU1LjQ4ODE3MzEgMjAuODk1MjI5Niw1NS4zMTk0NjQyIEMyMC44Nzg4MzY0\nLDU1LjE1MDM2NjggMjAuNzcxNjc0Myw1NS4wMDg0MzM4IDIwLjYyNDA3MTQsNTQuOTYwMDA0MiIg\naWQ9IlNoYXBlIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0x\nMS4wMzcwOTU3LDE3LjI4MzExNjYgQzEwLjg1NTM4NzUsMTcuMjE2NTI2MiAxMC43MTY2MDQ1LDE3\nLjExMzk2NjMgMTAuNjI1NzUwNCwxNi45NzU1NzA3IEMxMC41NTAwMzg2LDE2Ljg2MDMwNzggMTAu\nNDc0MzI2OCwxNi42NDc1NjYzIDEwLjQ3NDMyNjgsMTYuNTU1MzAyNiBDMTAuNDc0MzI2OCwxNi41\nMTE3MTEzIDEwLjM4ODQ3NjMsMTYuNTA5MTcwNyA4Ljc2NTc0MjczLDE2LjUwNDA4OTUgTDcuMDU0\nNjU2ODMsMTYuNDk2NDY3NyBMNi45MTU4NzM4NywxNi40Mjk4NzczIEM2LjcxNDAxOTcyLDE2LjMz\nNTA3MyA2LjYyNTY2NzM5LDE2LjI0NTM0OTggNi41MzIzMTE0OSwxNi4wNTMyMDA1IEw2LjQ0OTA5\nNDM4LDE1Ljg4MTUwOTcgTDYuNDQxNTg5MDQsMTQuOTI4MTE3NSBDNi40MzM5NTIwMywxMy44NTk0\nNjI0IDYuNDMzOTUyMDMsMTMuODU2OTIxOCA2LjYwODE1NDkzLDEzLjcyMTA2NjggQzYuNjkxNTAz\nNywxMy42NTcwMTcgNi43MTkxNTQ5NiwxMy42NTE4MDIxIDYuOTcxNTcxNCwxMy42NDQxODAzIEw3\nLjI0NDEzMzc1LDEzLjYzMzg4NDIgTDcuMjQ5MTM3MzEsOS4yMzYxMTE5IEw3LjI1NjY0MjY1LDQu\nODM1Nzk5MDEgTDcuMzIyMjE1NjMsNC42OTQ4NjI3NyBDNy40MTU1NzE1Myw0LjQ4OTg3Njc2IDcu\nNTAzOTIzODYsNC40MDAxNTM1OSA3LjY5MzEzNzQ0LDQuMzA1MzQ5MjQgTDcuODYyMjA1MTEsNC4y\nMjA4NDA5OCBMMTIuMDg5NDIzNCw0LjIyMDg0MDk4IEwxNi4zMTY1MSw0LjIyMDg0MDk4IEwxNi40\nODU1Nzc3LDQuMzA1MzQ5MjQgQzE2LjY3NDc5MTMsNC40MDAxNTM1OSAxNi43NjMxNDM2LDQuNDg5\nODc2NzYgMTYuODU2NDk5NSw0LjY5NDg2Mjc3IEwxNi45MjIwNzI1LDQuODM1Nzk5MDEgTDE2Ljky\nOTU3NzgsOS4yMzYxMTE5IEwxNi45MzQ1ODE0LDEzLjYzMzg4NDIgTDE3LjIwNzE0MzcsMTMuNjQ0\nMTgwMyBDMTcuNDU5NTYwMiwxMy42NTE4MDIxIDE3LjQ4NzM0MzEsMTMuNjU3MDE3IDE3LjU3MDU2\nMDIsMTMuNzIxMDY2OCBDMTcuNzQ0NjMxNCwxMy44NTY5MjE4IDE3Ljc0NDYzMTQsMTMuODU5NDYy\nNCAxNy43MzcxMjYxLDE0LjkyODExNzUgTDE3LjcyOTYyMDcsMTUuODgxNTA5NyBMMTcuNjQ2NDAz\nNiwxNi4wNTMyMDA1IEMxNy41NTMwNDc3LDE2LjI0NTM0OTggMTcuNDY0Njk1NCwxNi4zMzUwNzMg\nMTcuMjYyODQxMiwxNi40Mjk4NzczIEwxNy4xMjQwNTgzLDE2LjQ5NjQ2NzcgTDE1LjQxODEwNzYs\nMTYuNTA0MDg5NSBMMTMuNzA5NjU1MiwxNi41MTE4NDUgTDEzLjY5NDUxMjgsMTYuNjE5NDg2MSBD\nMTMuNjU0MDg5MywxNi44ODg1MjE4IDEzLjQ3NTAxNDUsMTcuMTMyMDE3OSAxMy4yMjc2MDE3LDE3\nLjI0OTk1NTEgTDEzLjA4NjMxNjksMTcuMzE2NTQ1NSBMMTIuMTI3MzQ1MSwxNy4zMjE2MjY3IEMx\nMS4yNTQwOTIyLDE3LjMyOTI0ODQgMTEuMTU1NjAxMSwxNy4zMjQxNjczIDExLjAzNzA5NTcsMTcu\nMjgzMTE2NiBMMTEuMDM3MDk1NywxNy4yODMxMTY2IFogTTEyLjcxMDI1OTksMTYuNDQyNTgwMyBD\nMTIuODYxNjgzNCwxNi4zMjk4NTgxIDEyLjg4NDMzMTEsMTYuMjcwODg5NSAxMi44OTE5NjgxLDE1\nLjk2ODQyNDggTDEyLjkwMjEwNjksMTUuNjg5MDkyOSBMMTQuNzg5NzY1OCwxNS42ODQwMTE3IEMx\nNi42NTIyNzUyLDE1LjY3NjM4OTkgMTYuNjgwMDU4MiwxNS42NzYzODk5IDE2Ljc0ODEzMjksMTUu\nNjIyNTAyNiBDMTYuOTE0Njk4OCwxNS40OTY5NDM2IDE2LjkyMjMzNTgsMTUuNDczODEwOCAxNi45\nMjk4NDExLDE0Ljk0MzM2MSBMMTYuOTM3NDc4MiwxNC40NTkwNDMxIEwxMi4wODk0MjM0LDE0LjQ1\nOTA0MzEgTDcuMjQxNTAwMywxNC40NTkwNDMxIEw3LjI0OTEzNzMxLDE0Ljk0MzM2MSBDNy4yNTY2\nNDI2NSwxNS40NzM4MTA4IDcuMjY0Mjc5NjcsMTUuNDk2OTQzNiA3LjQzMDg0NTU1LDE1LjYyMjUw\nMjYgQzcuNDk4OTIwMywxNS42NzYyNTYyIDcuNTI2NzAzMjMsMTUuNjc2MjU2MiA5LjM5MTcxNDQ0\nLDE1LjY4NDAxMTcgTDExLjI4MTg3NTEsMTUuNjg5MDkyOSBMMTEuMjgxODc1MSwxNS45MzI1ODkg\nQzExLjI4MTg3NTEsMTYuMTkxNDYyNCAxMS4zMDQ1MjI4LDE2LjI4MTE4NTYgMTEuMzkwMzczNCwx\nNi4zNzg1MzA1IEMxMS41MDEzNzM0LDE2LjQ5OTAwODMgMTEuNTU5NDQxLDE2LjUwOTE3MDcgMTIu\nMTE5NzA4MSwxNi41MDE1NDg5IEMxMi42MDE3NjE2LDE2LjQ5NjMzNCAxMi42NDcxODg3LDE2LjQ5\nMTI1MjggMTIuNzEwMjU5OSwxNi40NDI1ODAzIEwxMi43MTAyNTk5LDE2LjQ0MjU4MDMgWiBNMTYu\nMTIyMjkyOSw5LjQ2Mzk2MzI4IEMxNi4xMTQ3ODc1LDUuMjkxNjM1NDggMTYuMTE0Nzg3NSw1LjI4\nNjU1NDI5IDE2LjA2MTcyMzUsNS4yMTc0MjMzMyBDMTYuMDMzOTQwNSw1LjE3ODkxMzI0IDE1Ljk3\nODM3NDcsNS4xMjI2MTg5NyAxNS45NDA1ODQ2LDUuMDk0NDA0OTggQzE1Ljg3MjUwOTksNS4wNDA2\nNTEzMSAxNS44Njk4NzY0LDUuMDQwNjUxMzEgMTIuMDg5NTU1MSw1LjA0MDY1MTMxIEM4LjMwOTEw\nMjAzLDUuMDQwNjUxMzEgOC4zMDY2MDAyNSw1LjA0MDY1MTMxIDguMjM4MzkzODMsNS4wOTQ0MDQ5\nOCBDOC4yMDA0NzIxMSw1LjEyMjYxODk3IDguMTQ1MDM3OTMsNS4xNzkwNDY5NSA4LjExNzI1NSw1\nLjIxNzQyMzMzIEM4LjA2NDE5MDkzLDUuMjg2NTU0MjkgOC4wNjQxOTA5Myw1LjI5MTc2OTIgOC4w\nNTY2ODU1OSw5LjQ2Mzk2MzI4IEw4LjA1MTY4MjAzLDEzLjYzODgzMTcgTDEyLjA4OTQyMzQsMTMu\nNjM4ODMxNyBMMTYuMTI3Mjk2NCwxMy42Mzg4MzE3IEwxNi4xMjIyOTI5LDkuNDYzOTYzMjggTDE2\nLjEyMjI5MjksOS40NjM5NjMyOCBaIiBpZD0iU2hhcGUiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9y\nbT0idHJhbnNsYXRlKDEyLjA4OTMyOSwgMTAuNzcyNzIwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRl\nKC0xMi4wODkzMjksIC0xMC43NzI3MjApICI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJN\nMTAuNzA2NDY1NywxNC40MjQ5MjUgQzEwLjY2MTAzODYsMTQuMzk5MjUxNiAxMC41OTI5NjM5LDE0\nLjM0MDI4MzEgMTAuNTU1MDQyMiwxNC4yOTE2MTA2IEwxMC40ODY4MzU3LDE0LjIwMTg4NzQgTDEw\nLjQ3OTMzMDQsMTIuMjQzODg5OSBDMTAuNDcxNjkzNCwxMC4wNjA0NDc5IDEwLjQ2NDE4ODEsMTAu\nMTc4MjUxNCAxMC42NDU4OTYzLDEwLjAzNzMxNTEgQzEwLjc3NDY3MjEsOS45MzcyOTU4NSAxMC45\nODE1Mjk4LDkuOTM3Mjk1ODUgMTEuMTEwMzA1NywxMC4wMzczMTUxIEMxMS4yODk1MTIxLDEwLjE3\nODI1MTQgMTEuMjgxODc1MSwxMC4wNjU1MjkxIDExLjI4MTg3NTEsMTIuMjEwNTk0NyBDMTEuMjgx\nODc1MSwxNC4zNTA1NzkyIDExLjI4OTM4MDUsMTQuMjQ1NDc4NyAxMS4xMTI4MDc1LDE0LjM4MTMz\nMzcgQzExLjAwNDMwOTIsMTQuNDY1OTc1NyAxMC44MjUxMDI3LDE0LjQ4NjQzNDIgMTAuNzA2NDY1\nNywxNC40MjQ5MjUgTDEwLjcwNjQ2NTcsMTQuNDI0OTI1IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzAw\nMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuODc5MDk5LCAxMi4yMTE0MjMpIHNjYWxlKDEs\nIC0xKSB0cmFuc2xhdGUoLTEwLjg3OTA5OSwgLTEyLjIxMTQyMykgIj48L3BhdGg+CiAgICAgICAg\nICAgIDxwYXRoIGQ9Ik0xMy4xMzY3NDc1LDE0LjQzMTQxMTEgQzEzLjA0MzM5MTYsMTQuMzg3ODE5\nOSAxMi45NjAwNDI5LDE0LjI5ODA5NjcgMTIuOTI0NzU0NiwxNC4yMDMyOTIzIEMxMi45MDQ0Nzcs\nMTQuMTU0NjE5OSAxMi44OTY5NzE3LDEzLjUwODc3MzUgMTIuODk2OTcxNywxMi4yMDY3ODQ3IEMx\nMi44OTY5NzE3LDEwLjA2NjgwMDMgMTIuODg5MzM0NywxMC4xNzk2NTYzIDEzLjA2ODU0MTEsMTAu\nMDM4NTg2MyBDMTMuMTk3MzE3LDkuOTM4NTY3MDcgMTMuNDA0MTc0Nyw5LjkzODU2NzA3IDEzLjUz\nMjk1MDUsMTAuMDM4NTg2MyBDMTMuNzEyMTU3LDEwLjE3OTUyMjYgMTMuNzA0NTE5OSwxMC4wNjY4\nMDAzIDEzLjcwNDUxOTksMTIuMjExODY1OSBDMTMuNzA0NTE5OSwxNC4zNTE4NTA0IDEzLjcxMjAy\nNTMsMTQuMjQ2NzQ5OSAxMy41MzU0NTIzLDE0LjM4MjYwNSBDMTMuNDMxOTU3NiwxNC40NjIwMzIg\nMTMuMjUwMjQ5NCwxNC40ODUxNjQ4IDEzLjEzNjc0NzUsMTQuNDMxNDExMSBMMTMuMTM2NzQ3NSwx\nNC40MzE0MTExIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xh\ndGUoMTMuMzAwNzQ2LCAxMi4yMTIwNTgpIHNjYWxlKDEsIC0xKSB0cmFuc2xhdGUoLTEzLjMwMDc0\nNiwgLTEyLjIxMjA1OCkgIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zMy4zMTMwNzAy\nLDUuNTI3MDAxODMgQzMxLjIwODE5NDQsNS41MjcwMDE4MyAyOS4zNDUzNzc3LDcuMTIyNDY4ODYg\nMjguMTcxODgzNSw5LjU3ODg3NzI5IEwyNi4wMjMwMjM5LDYuMjAwOTk0NTEgTDI2LjAyMzAyMzks\nMTYuOTg0ODc3MyBMMzIuODg0NjIyMywxNi45ODQ4NzczIEwzMC41NTAyMzE1LDEzLjMxNjA4MjQg\nQzMxLjE3MDQ4MjUsMTAuMzU5NDQ1MSAzMi45Mzk0ODgzLDguMjIyOTcyNTMgMzUuMDI4MDQwOSw4\nLjIyMjk3MjUzIEMzNy42MzQ2NDQyLDguMjIyOTcyNTMgMzkuNzQ1Mzg5OSwxMS41NDI5MzQxIDM5\nLjc0NTM4OTksMTUuNjM2ODkxOSBDMzkuNzQ1Mzg5OSwxMC4wNTI3MzYzIDM2Ljg2NTc0MzIsNS41\nMjcwMDE4MyAzMy4zMTMwNzAyLDUuNTI3MDAxODMgTDMzLjMxMzA3MDIsNS41MjcwMDE4MyBaIiBp\nZD0iU2hhcGUiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTM3\nLjQxMjIxMDQsMzQuNjE1MTYxMSBDMzcuNDk1NjkwNCwzNC41ODQxMTg1IDM3LjYwOTE0OTksMzQu\nNjA5NjY0NyAzNy42OTEwNDcsMzQuNjc3Njk1NiBDMzcuNzMxNjI2NywzNC43MTIwMjIyIDM3Ljc1\nOTY0ODcsMzQuNzUyNTAyIDM3Ljc3MjQ1MTIsMzQuNzkyNTMyNCBDMzcuNzg1NDA0NSwzNC44MzI5\nNzc2IDM3Ljc4MjgzOCwzNC44NzQyNTI1IDM3Ljc2MjcxMjgsMzQuOTA4NTc5IEwzMy41NTM4NTc1\nLDM5LjU3ODAzMDggQzMzLjQ5NTY1OTksMzkuNjI0ODM2NyAzMy40MDUyMDE1LDM5LjY1MjIxNSAz\nMy4zMDkxNDU5LDM5LjY1MjIxNSBDMzMuMjEzMDkwMywzOS42NTIyMTUgMzMuMTIyMjk4NywzOS42\nMjQ1OTQ3IDMzLjA2NDEwMDksMzkuNTc4MDMwOCBMMjguODU2MTY2MiwzNC45MDgzNzE2IEMyOC44\nMTUzMzQ2LDM0Ljg0MDMwNjEgMjguODQ1Mjc4NywzNC43NDYzMTQyIDI4LjkyNzkwODUsMzQuNjc3\nMjQ2MiBDMjkuMDA5MTc1MiwzNC42MDk0MjI3IDI5LjEyMjcxNDQsMzQuNTgzODc2NiAyOS4yMDYx\nMzAyLDM0LjYxNTEyNjUgTDMxLjg4NTE0MDIsMzUuNTU0MDA4NiBMMzIuNTA2NzIyOCwyOC40MzY2\nODggTDMwLjYxNTM3MDgsMjkuMzc1NjczOCBDMzAuNTQ2NjU5NCwyOS40MDY4MiAzMC40ODM0NDIy\nLDI5LjM4MTI3MzkgMzAuNDYxMTQzNywyOS4zMTMzNDY2IEMzMC40NTA2MzAzLDI5LjI3OTAyMDEg\nMzAuNDUxNDMzNiwyOS4yMzg0MzY2IDMwLjQ2MTc1NDEsMjkuMTk4NDA2MiBDMzAuNDcyMTg5OSwy\nOS4xNTc4NTczIDMwLjQ5MjYxNDIsMjkuMTE2Njg2MSAzMC41MjEwNDYzLDI5LjA4MjM1OTUgTDMz\nLjIzOTY5MjcsMjQuNDEyOTQyMyBDMzMuMjU2Njk5NSwyNC4zNjYxMzY1IDMzLjI4MjM2NjEsMjQu\nMzM4NzU4MiAzMy4zMDkzNDgxLDI0LjMzODc1ODIgQzMzLjMzNjMzMDIsMjQuMzM4NzU4MiAzMy4z\nNjIwOTI2LDI0LjM2NjM0MzkgMzMuMzc5MDk3NywyNC40MTI5NDIzIEwzNi4wOTc0MDU1LDI5LjA4\nMjYwMTUgQzM2LjE1NDE3MzcsMjkuMTUwNTYzMyAzNi4xNzg4MjMsMjkuMjQ0NzI4MSAzNi4xNTcy\nMDI1LDI5LjMxMzYyMzIgQzM2LjEzNTM3NjIsMjkuMzgxNTUwNCAzNi4wNzIwNTEsMjkuNDA3MDk2\nNiAzNi4wMDMzNjUsMjkuMzc1OTUwMyBMMzQuMTExODE4NCwyOC40MzY3MjI2IEwzNC43MzMxNzgx\nLDM1LjU1NDI1MDYgTDM3LjQxMjIxMDQsMzQuNjE1MTYxMSBaIiBpZD0iU2hhcGUiIGZpbGw9IiMw\nMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMzLjMwOTIyOCwgMzEuOTk1NDg3KSByb3RhdGUo\nMzcuMDAwMDAwKSB0cmFuc2xhdGUoLTMzLjMwOTIyOCwgLTMxLjk5NTQ4NykgIj48L3BhdGg+CiAg\nICAgICAgICAgIDxwYXRoIGQ9Ik0xMS45MzQ5MTQ1LDEwMC4wMDEwNDYgTDE0LjE4NTgxOTgsOTUu\nNjMxMDY0MSBMOS4wNDA4OTMyMyw5NS42MzEwNjQxIEw2Ljc4OTk4NzgzLDEwMC4wMDEwNDYgTDEx\nLjkzNDkxNDUsMTAwLjAwMTA0NiBMMTEuOTM0OTE0NSwxMDAuMDAxMDQ2IFogTTE4LjcyMTEyNjMs\nODcuNzQ0NjEyNyBDMTguNzg4MTE3NSw4OC4wMDI1NjMgMTguODA5MzMxNCw4OC4yNzM3OTAyIDE4\nLjc4NDc2NzksODguNTU4Mjk0MiBDMTguNzYwMjA0NSw4OC44NDI3OTgyIDE4LjY5MjA5NjcsODku\nMDkxMjY1MSAxOC41ODA0NDQ3LDg5LjMwMzY5NDcgTDEyLjU3ODAzMDMsMTAwLjk1Njk3OSBDMTIu\nNDA4MzE5MiwxMDEuMjkwNzk3IDEyLjE5Mzk0NzIsMTAxLjQ1NzcwNiAxMS45MzQ5MTQ1LDEwMS40\nNTc3MDYgTDYuNzg5OTg3ODMsMTAxLjQ1NzcwNiBDNi42MjAyNzY3MSwxMDEuNDU3NzA2IDYuNDY1\nMDgwMzYsMTAxLjM3OTk0MiA2LjMyNDM5ODc3LDEwMS4yMjQ0MTMgQzYuMTgzNzE3MTgsMTAxLjA2\nODg4NCA2LjA3NzY0NzczLDEwMC44NjIxNDUgNi4wMDYxOTA0MiwxMDAuNjA0MTk0IEM1LjkzOTE5\nOTE5LDEwMC4zNDYyNDQgNS45MTc5ODUzLDEwMC4wNzUwMTcgNS45NDI1NDg3NSw5OS43OTA1MTI5\nIEM1Ljk2NzExMjIsOTkuNTA2MDA4OCA2LjAzNTIxOTk1LDk5LjI1NzU0MiA2LjE0Njg3MjAxLDk5\nLjA0NTExMjMgTDEyLjE0OTI4NjQsODcuMzkxODI3NyBDMTIuMzE4OTk3NSw4Ny4wNTgwMDk3IDEy\nLjUzMzM2OTUsODYuODkxMTAwNyAxMi43OTI0MDIyLDg2Ljg5MTEwMDcgTDE3LjkzNzMyODgsODYu\nODkxMTAwNyBDMTguMTA3MDQsODYuODkxMTAwNyAxOC4yNjIyMzYzLDg2Ljk2ODg2NTEgMTguNDAy\nOTE3OSw4Ny4xMjQzOTQgQzE4LjU0MzU5OTUsODcuMjc5OTIyOCAxOC42NDk2Njg5LDg3LjQ4NjY2\nMjQgMTguNzIxMTI2Myw4Ny43NDQ2MTI3IEwxOC43MjExMjYzLDg3Ljc0NDYxMjcgWiIgaWQ9IlNo\nYXBlIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4zODgw\nNzc5LDgxLjU5ODI3NTggTDEyLjM4ODA3NzksNzEuNDcwNTc1NyIgaWQ9IkxpbmUiIHN0cm9rZT0i\nIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIxLjIzNzUwMDAxIiBzdHJva2UtbGluZWNhcD0ic3F1YXJl\nIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMS4xNDIxMTIyLDY2LjMzMDAwMDYgTDEy\nLjQ2Mzk5MTcsNzEuMzkzODUwNyIgaWQ9IkxpbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdp\nZHRoPSIxLjIzNzUwMDAxIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAgICAgICAg\nICAgIDxwYXRoIGQ9Ik0zLjIwMjUwMDA1LDY2Ljc5MDM1MDYgTDEyLjEzMDk0NzEsNzEuMzg4MjMw\nMyIgaWQ9IkxpbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIxLjIzNzUwMDAxIiBz\ndHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjM4\nMjk1NjMsNzcuNzA0NDgyIEwxMC4wOTEwOTAzLDc3LjcwNDQ4MiBMMTAuMDkxMDkwMyw3OC40NTI1\nNTA4IEw5LjM4Mjk1NjMsNzguNDUyNTUwOCBMOS4zODI5NTYzLDc3LjcwNDQ4MiBaIE04LjYxNzg4\nNjg3LDczLjU3MzkxOTcgQzguOTA3MzA5OTMsNzMuMjU4NjI2MyA5LjMwNDY2NzYsNzMuMTAwOTgy\nIDkuODA5OTcxOCw3My4xMDA5ODIgQzEwLjI3NzMxODksNzMuMTAwOTgyIDEwLjY1MTU0NjgsNzMu\nMjM1ODQ4OCAxMC45MzI2NjY3LDczLjUwNTU4NjUgQzExLjIxMzc4NjcsNzMuNzc1MzI0MSAxMS4z\nNTQzNDQ1LDc0LjExOTk4MzggMTEuMzU0MzQ0NSw3NC41Mzk1NzU3IEMxMS4zNTQzNDQ1LDc0Ljc5\nMzcyODYgMTEuMzAyNzQ3Myw3NC45OTk5MjQ5IDExLjE5OTU1MTQsNzUuMTU4MTcxIEMxMS4wOTYz\nNTU1LDc1LjMxNjQxNzEgMTAuODg4MTg3NSw3NS41NDg5ODc1IDEwLjU3NTA0MTIsNzUuODU1ODg5\nIEMxMC4zNDcyOTg1LDc2LjA3ODg3MjIgMTAuMTk5NjIzOCw3Ni4yNjc2ODU3IDEwLjEzMjAxMjcs\nNzYuNDIyMzM1MyBDMTAuMDY0NDAxNSw3Ni41NzY5ODQ5IDEwLjAzMDU5NjUsNzYuODA1MzU5NCAx\nMC4wMzA1OTY1LDc3LjEwNzQ2NTYgTDkuMzk3MTkwMTUsNzcuMTA3NDY1NiBDOS4zOTcxOTAxNSw3\nNi43NjQ1OTkgOS40Mzc1MTg5OSw3Ni40ODgyNzE5IDkuNTE4MTc3ODcsNzYuMjc4NDc1OSBDOS41\nOTg4MzY3Niw3Ni4wNjg2OCA5Ljc3NTU3MTk2LDc1LjgyODMxNzMgMTAuMDQ4Mzg4OCw3NS41NTcz\nODA4IEwxMC4zMzMwNjU4LDc1LjI3MzI1ODUgQzEwLjQxODQ2OTMsNzUuMTkxNzM3OCAxMC40ODcy\nNjU2LDc1LjEwNjYyMTkgMTAuNTM5NDU2Niw3NS4wMTc5MDgxIEMxMC42MzQzNDk0LDc0Ljg2MjA1\nOTcgMTAuNjgxNzk1MSw3NC43MDAyMTk1IDEwLjY4MTc5NTEsNzQuNTMyMzgyNyBDMTAuNjgxNzk1\nMSw3NC4yOTc0MTEzIDEwLjYxMjQwNTgsNzQuMDkzNjEyNSAxMC40NzM2MjUsNzMuOTIwOTgwNCBD\nMTAuMzM0ODQ0Myw3My43NDgzNDgzIDEwLjEwNTMyNTgsNzMuNjYyMDMzNSA5Ljc4NTA2MjU2LDcz\nLjY2MjAzMzUgQzkuMzg4ODg1MDksNzMuNjYyMDMzNSA5LjExNDg4NjIyLDczLjgxMDY4NjcgOC45\nNjMwNTc3Myw3NC4xMDc5OTc2IEM4Ljg3NzY1NDIsNzQuMjczNDM2NyA4LjgyOTAyMjM3LDc0LjUx\nMjAwMTEgOC44MTcxNjA3Niw3NC44MjM2OTggTDguMTgzNzU0NDQsNzQuODIzNjk4IEM4LjE4Mzc1\nNDQ0LDc0LjMwNTgwMTYgOC4zMjg0NjM4LDczLjg4OTIxMyA4LjYxNzg4Njg3LDczLjU3MzkxOTcg\nTDguNjE3ODg2ODcsNzMuNTczOTE5NyBaIiBpZD0iPyIgZmlsbD0iI0QwMDExQiI+PC9wYXRoPgog\nICAgICAgICAgICA8cG9seWdvbiBpZD0iKiIgZmlsbD0iI0QwMDExQiIgcG9pbnRzPSIxNS42MDc4\nOTMzIDcxLjAyMTAxNTEgMTUuNjA3ODkzMyA3MS44MjMwMzEyIDE2LjM4MzYzODIgNzEuNTQ5Njk4\nMyAxNi41MjU5NzY3IDcxLjk0ODkwODEgMTUuNzUwMjMxOCA3Mi4yMDQyNTg1IDE2LjIzMDYyNDMg\nNzIuODgwMzk3NiAxNS44NzgzMzY1IDczLjEzNTc0OCAxNS40MTIxNzc5IDcyLjQzNDQzMzUgMTQu\nOTQyNDYwOCA3My4xMzU3NDggMTQuNTc5NDk3NyA3Mi44ODAzOTc2IDE1LjA2NzAwNyA3Mi4yMDQy\nNTg1IDE0LjI4NDE0NTMgNzEuOTQ4OTA4MSAxNC40MjY0ODM4IDcxLjU0OTY5ODMgMTUuMTk1MTEx\nNyA3MS44MzAyMjQxIDE1LjE5NTExMTcgNzEuMDIxMDE1MSI+PC9wb2x5Z29uPgogICAgICAgICAg\nICA8ZWxsaXBzZSBpZD0iT3ZhbC0yIiBzdHJva2U9IiM5Nzk3OTciIHN0cm9rZS13aWR0aD0iMC41\nIiBmaWxsPSIjMDAwMDAwIiBjeD0iMTIuMzc4MTkxOCIgY3k9IjMyLjAzNTczMTIiIHJ4PSIzLjA0\nNDUzNTIyIiByeT0iMi45ODkyNzU2NiI+PC9lbGxpcHNlPgogICAgICAgICAgICA8cGF0aCBkPSJN\nMTIuMTU4MzQ1MiwzOS4zMjE5Njc4IEwxMi4xNTgzNDUyLDM1Ljk1OTI3ODMiIGlkPSJMaW5lIiBz\ndHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43NDI1MDAwMDciIHN0cm9rZS1saW5lY2Fw\nPSJzcXVhcmUiIGZpbGw9IiNEOEQ4RDgiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTE2\nLjMwMDk1ODQsMzEuODMzNDM3OCBMMTkuNjk2Nzg2MSwzMS44MzM0Mzc4IiBpZD0iTGluZSIgc3Ry\nb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0i\nc3F1YXJlIiBmaWxsPSIjRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjMz\nODMyNzgsMzEuODMzNDM3OCBMNC45NDI1MDAwNSwzMS44MzM0Mzc4IiBpZD0iTGluZSIgc3Ryb2tl\nPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0ic3F1\nYXJlIiBmaWxsPSIjRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMi4xNTgz\nNDUyLDI4LjExMjE4NDEgTDEyLjE1ODM0NTIsMjQuNzQ5NDk0NiIgaWQ9IkxpbmUiIHN0cm9rZT0i\nIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwLjc0MjUwMDAwNyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFy\nZSIgZmlsbD0iI0Q4RDhEOCI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNy4xNDYyOTU2\nNSwzNy4yMTgyNDY2IEw5LjU0NzUwODQ4LDM0Ljg2MDYxNjgiIGlkPSJMaW5lIiBzdHJva2U9IiMw\nMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43NDI1MDAwMDciIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUi\nIGZpbGw9IiNEOEQ4RDgiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTE1LjE3OTYwMDgs\nMzQuNzc0Mzg3NyBMMTcuNTgwODEzNywzNy4xMzIwMTc1IiBpZD0iTGluZSIgc3Ryb2tlPSIjMDAw\nMDAwIiBzdHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBm\naWxsPSIjRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik05LjU1OTYzNDMyLDI5\nLjI1NjQyNTkgTDcuMTU4NDIxNSwyNi44OTg3OTYxIiBpZD0iTGluZSIgc3Ryb2tlPSIjMDAwMDAw\nIiBzdHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBmaWxs\nPSIjRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS4xNjc0NzUsMjkuMjg1\nMTY4OSBMMTcuNTY4Njg3OCwyNi45Mjc1MzkxIiBpZD0iTGluZSIgc3Ryb2tlPSIjMDAwMDAwIiBz\ndHJva2Utd2lkdGg9IjAuNzQyNTAwMDA3IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBmaWxsPSIj\nRDhEOEQ4Ij48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03LjA0NjI1MDA4LDExMC4wMTM3\nNTEgTDE2LjgyMjUwMDIsMTIwLjI4NTAwMSIgaWQ9IkJvbmQiIHN0cm9rZT0iIzAwMDAwMCIgc3Ry\nb2tlLXdpZHRoPSIwLjk5MDAwMDAxIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAg\nICAgICAgICAgIDxwYXRoIGQ9Ik0yNS4yNTcyNTExLDEyMC40NTc3MjMgTDMwLjkwOTQxNTYsMTEw\nLjY4Njg3NCIgaWQ9IkxpbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIwLjk5MDAw\nMDAxIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9\nIk0zNi44MTg4MzEyLDEyMC40NzQ5MyBMNDIuNDcwOTk1NywxMTAuNzA0MDgyIiBpZD0iTGluZSIg\nc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuOTkwMDAwMDEiIHN0cm9rZS1saW5lY2Fw\nPSJzcXVhcmUiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTM2LjU2ODgzMTIsMTIwLjIy\nNDkzIEwzMS4xNjcyMjU1LDExMC44ODcyMjEiIGlkPSJMaW5lIiBzdHJva2U9IiMwMDAwMDAiIHN0\ncm9rZS13aWR0aD0iMC45OTAwMDAwMSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PC9wYXRoPgog\nICAgICAgICAgICA8cGF0aCBkPSJNMjguMzM2MjQxNCwyNDQuMjQ2MTI3IEMyOC4zNjMzNDA5LDI0\nNC43MzAzMTIgMjguNDc3NTQ0MywyNDUuMTIzNDY1IDI4LjY3ODg1NSwyNDUuNDI1NTk3IEMyOS4w\nNjIxMTk1LDI0NS45OTExMjYgMjkuNzM3NjYxNCwyNDYuMjczODg2IDMwLjcwNTUwMSwyNDYuMjcz\nODg2IEMzMS4xMzkwOTMyLDI0Ni4yNzM4ODYgMzEuNTMzOTY1OSwyNDYuMjExOTEyIDMxLjg5MDEz\nMDgsMjQ2LjA4Nzk2IEMzMi41NzkyMzI3LDI0NS44NDc4MDQgMzIuOTIzNzc4NCwyNDUuNDE3ODUz\nIDMyLjkyMzc3ODQsMjQ0Ljc5ODA5NiBDMzIuOTIzNzc4NCwyNDQuMzMzMjc3IDMyLjc3ODYwNDYs\nMjQ0LjAwMjA5OSAzMi40ODgyNTI4LDI0My44MDQ1NTEgQzMyLjE5NDAyOTUsMjQzLjYxMDg3NyAz\nMS43MzMzNDQ3LDI0My40NDIzODMgMzEuMTA2MTg0NywyNDMuMjk5MDY0IEwyOS45NTA1ODk5LDI0\nMy4wMzc2MDUgQzI5LjE5NTY3NSwyNDIuODY3MTcyIDI4LjY2MTQzNTUsMjQyLjY3OTMxIDI4LjM0\nNzg1NTUsMjQyLjQ3NDAxNSBDMjcuODA1ODY1MywyNDIuMTE3NjU1IDI3LjUzNDg3NDIsMjQxLjU4\nNTA1OCAyNy41MzQ4NzQyLDI0MC44NzYyMSBDMjcuNTM0ODc0MiwyNDAuMTA5MjYgMjcuODAwMDU4\nMywyMzkuNDc5ODI4IDI4LjMzMDQzNDQsMjM4Ljk4Nzg5NSBDMjguODYwODEwNiwyMzguNDk1OTYz\nIDI5LjYxMTg0MjksMjM4LjI1IDMwLjU4MzU1MzksMjM4LjI1IEMzMS40Nzc4Mzc3LDIzOC4yNSAz\nMi4yMzc1ODA0LDIzOC40NjU5NDQgMzIuODYyODA0OCwyMzguODk3ODM3IEMzMy40ODgwMjkyLDIz\nOS4zMjk3MzEgMzMuODAwNjM2OCwyNDAuMDIwMTcgMzMuODAwNjM2OCwyNDAuOTY5MTc0IEwzMi43\nMTQ3MjYxLDI0MC45NjkxNzQgQzMyLjY1NjY1NTcsMjQwLjUxMjEwMiAzMi41MzI3NzQxLDI0MC4x\nNjE1NTcgMzIuMzQzMDc3NSwyMzkuOTE3NTI3IEMzMS45OTA3ODM5LDIzOS40NzIwNzcgMzEuMzky\nNjY4LDIzOS4yNDkzNTQgMzAuNTQ4NzExOCwyMzkuMjQ5MzU0IEMyOS44NjczNTI3LDIzOS4yNDkz\nNTQgMjkuMzc3NjMzMiwyMzkuMzkyNjcxIDI5LjA3OTUzODYsMjM5LjY3OTMwOSBDMjguNzgxNDQ0\nLDIzOS45NjU5NDcgMjguNjMyMzk4OSwyNDAuMjk5MDYyIDI4LjYzMjM5ODksMjQwLjY3ODY2NCBD\nMjguNjMyMzk4OSwyNDEuMDk3IDI4LjgwNjYwNzQsMjQxLjQwMzAwMSAyOS4xNTUwMjk3LDI0MS41\nOTY2NzUgQzI5LjM4MzQzOTgsMjQxLjcyMDYyNyAyOS45MDAyNTg1LDI0MS44NzU1NjQgMzAuNzA1\nNTAxLDI0Mi4wNjE0OTEgTDMxLjkwMTc0NDksMjQyLjMzNDU3MSBDMzIuNDc4NTc3MywyNDIuNDY2\nMjY5IDMyLjkyMzc3NjgsMjQyLjY0NjM4NCAzMy4yMzczNTY5LDI0Mi44NzQ5MTkgQzMzLjc3OTM0\nNzEsMjQzLjI3Mzg4OCAzNC4wNTAzMzgxLDI0My44NTI5NjYgMzQuMDUwMzM4MSwyNDQuNjEyMTY5\nIEMzNC4wNTAzMzgxLDI0NS41NTczIDMzLjcwNjc2MDIsMjQ2LjIzMzIxMyAzMy4wMTk1OTQxLDI0\nNi42Mzk5MjkgQzMyLjMzMjQyNzksMjQ3LjA0NjY0NSAzMS41MzM5NzIyLDI0Ny4yNSAzMC42MjQy\nMDI5LDI0Ny4yNSBDMjkuNTYzNDUwNywyNDcuMjUgMjguNzMzMDU2NywyNDYuOTc4ODYgMjguMTMy\nOTk2MSwyNDYuNDM2NTcyIEMyNy41MzI5MzU1LDI0NS44OTgxNTcgMjcuMjM4NzE2NywyNDUuMTY4\nMDE2IDI3LjI1MDMzMDgsMjQ0LjI0NjEyNyBMMjguMzM2MjQxNCwyNDQuMjQ2MTI3IFogTTM1LjM3\nNDMzNjEsMjQwLjgwNjQ4OCBMMzYuNDM3MDE4OCwyNDAuODA2NDg4IEwzNi40MzcwMTg4LDI0Ny4w\nMDAxNjEgTDM1LjM3NDMzNjEsMjQ3LjAwMDE2MSBMMzUuMzc0MzM2MSwyNDAuODA2NDg4IFogTTM1\nLjM3NDMzNjEsMjM4LjQ2NDk3NyBMMzYuNDM3MDE4OCwyMzguNDY0OTc3IEwzNi40MzcwMTg4LDIz\nOS42NTAyNTggTDM1LjM3NDMzNjEsMjM5LjY1MDI1OCBMMzUuMzc0MzM2MSwyMzguNDY0OTc3IFoi\nIGlkPSJTaSIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgICAgICA8cG9seWdvbiBpZD0i\nTiIgZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI4LjQwNTAwMDA5IDI1OS44Nzc1MDMgOS43NjgxODM3\nIDI1OS44Nzc1MDMgMTQuMDcyMzYzNCAyNjYuNzgwNDMyIDE0LjA3MjM2MzQgMjU5Ljg3NzUwMyAx\nNS4xNjg3MTExIDI1OS44Nzc1MDMgMTUuMTY4NzExMSAyNjguMzk4ODUgMTMuODc1MTM2OSAyNjgu\nMzk4ODUgOS41MDcxNDg1NCAyNjEuNTAxNzIxIDkuNTA3MTQ4NTQgMjY4LjM5ODg1IDguNDA1MDAw\nMDkgMjY4LjM5ODg1Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNy4yNSwyNTku\nMjUgTDMxLjEzNDk3MDYsMjU5LjI1IEMzMS45MDI5NTY1LDI1OS4yNSAzMi41MjIwMzgsMjU5LjQ2\nMzEyNSAzMi45OTIyMzM0LDI1OS44ODkzODEgQzMzLjQ2MjQyODksMjYwLjMxNTYzNiAzMy42OTc1\nMjMxLDI2MC45MTQ1MDcgMzMuNjk3NTIzMSwyNjEuNjg2MDExIEMzMy42OTc1MjMxLDI2Mi4zNDk1\nMDQgMzMuNDg3ODk3NCwyNjIuOTI3MTU5IDMzLjA2ODYzOTgsMjYzLjQxODk5MyBDMzIuNjQ5Mzgy\nMiwyNjMuOTEwODI2IDMyLjAwNDgzMjIsMjY0LjE1NjczOSAzMS4xMzQ5NzA2LDI2NC4xNTY3Mzkg\nTDI4LjQxOTYwNTQsMjY0LjE1NjczOSBMMjguNDE5NjA1NCwyNjcuNzUgTDI3LjI1LDI2Ny43NSBM\nMjcuMjUsMjU5LjI1IFogTTMxLjgxMDg3MzIsMjYwLjQxODgyMiBDMzEuNTUyMjY1NywyNjAuMjk5\nMjM5IDMxLjE5NzY2NTMsMjYwLjIzOTQ0OSAzMC43NDcwNjEzLDI2MC4yMzk0NDkgTDI4LjQxOTYw\nNTQsMjYwLjIzOTQ0OSBMMjguNDE5NjA1NCwyNjMuMTg0NjQ5IEwzMC43NDcwNjEzLDI2My4xODQ2\nNDkgQzMxLjI3MjExMjksMjYzLjE4NDY0OSAzMS42OTgyMjExLDI2My4wNzQ3MTIgMzIuMDI1Mzk4\nOCwyNjIuODU0ODMzIEMzMi4zNTI1NzY1LDI2Mi42MzQ5NTUgMzIuNTE2MTYyOSwyNjIuMjQ3Mjgg\nMzIuNTE2MTYyOSwyNjEuNjkxNzk3IEMzMi41MTYxNjI5LDI2MS4wNjY4NzkgMzIuMjgxMDY4Nywy\nNjAuNjQyNTU4IDMxLjgxMDg3MzIsMjYwLjQxODgyMiBMMzEuODEwODczMiwyNjAuNDE4ODIyIFoi\nIGlkPSJQIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS4x\nMTQ4MDQ4LDI4MS4xMjc2OTggQzE1LjY3OTQxNzEsMjgxLjg4MTgwMyAxNS45NjE3MTg5LDI4Mi44\nNDY2NTcgMTUuOTYxNzE4OSwyODQuMDIyMjg4IEMxNS45NjE3MTg5LDI4NS4yOTQ1OTkgMTUuNjM4\nODEyLDI4Ni4zNTIyNjQgMTQuOTkyOTg4NCwyODcuMTk1MzE1IEMxNC4yMzUwMTU5LDI4OC4xODUz\nMiAxMy4xNTQxNDc4LDI4OC42ODAzMTUgMTEuNzUwMzUxNywyODguNjgwMzE1IEMxMC40MzkzNjg2\nLDI4OC42ODAzMTUgOS40MDg3NzMzOSwyODguMjQ3MTk1IDguNjU4NTM1MjYsMjg3LjM4MDk0IEM3\nLjk4OTUwODQ3LDI4Ni41NDU2MjQgNy42NTUwMDAwOSwyODUuNDg5ODkyIDcuNjU1MDAwMDksMjg0\nLjIxMzcxNCBDNy42NTUwMDAwOSwyODMuMDYxMjg2IDcuOTQxMTY5MTEsMjgyLjA3NTE2MyA4LjUx\nMzUxNTcyLDI4MS4yNTUzMTUgQzkuMjQ4Mjg1MDMsMjgwLjIwMzQzNSAxMC4zMzQ5NTM5LDI3OS42\nNzc1MDMgMTEuNzczNTU0OCwyNzkuNjc3NTAzIEMxMy4yNzc4OTgzLDI3OS42Nzc1MDMgMTQuMzkx\nNjM3MiwyODAuMTYwODk2IDE1LjExNDgwNDgsMjgxLjEyNzY5OCBMMTUuMTE0ODA0OCwyODEuMTI3\nNjk4IFogTTE0LjA5Njc2NzcsMjg2LjU1NDMyOSBDMTQuNTUxMTY0NSwyODUuODI1MzYgMTQuNzc4\nMzU5NSwyODQuOTg3MTU2IDE0Ljc3ODM1OTUsMjg0LjAzOTY5IEMxNC43NzgzNTk1LDI4My4wMzgw\nODQgMTQuNTE2MzYwMiwyODIuMjMxNzgzIDEzLjk5MjM1MzcsMjgxLjYyMDc2NCBDMTMuNDY4MzQ3\nMSwyODEuMDA5NzQ2IDEyLjc1MTk1NzgsMjgwLjcwNDI0MSAxMS44NDMxNjQyLDI4MC43MDQyNDEg\nQzEwLjk2MTQ0MSwyODAuNzA0MjQxIDEwLjI0MjE1MTMsMjgxLjAwNjg0NSA5LjY4NTI3MzU1LDI4\nMS42MTIwNjMgQzkuMTI4Mzk1NzYsMjgyLjIxNzI4MSA4Ljg0OTk2MTA0LDI4My4xMDk2MjYgOC44\nNDk5NjEwNCwyODQuMjg5MTI0IEM4Ljg0OTk2MTA0LDI4NS4yMzI3MjIgOS4wODg3NTc0OCwyODYu\nMDI4Mzg4IDkuNTY2MzU3NTMsMjg2LjY3NjE0NSBDMTAuMDQzOTU3NiwyODcuMzIzOTAyIDEwLjgx\nODM1NDEsMjg3LjY0Nzc3NiAxMS44ODk1NzA0LDI4Ny42NDc3NzYgQzEyLjkwNjY0NTksMjg3LjY0\nNzc3NiAxMy42NDIzNzA5LDI4Ny4yODMyOTcgMTQuMDk2NzY3NywyODYuNTU0MzI5IEwxNC4wOTY3\nNjc3LDI4Ni41NTQzMjkgWiIgaWQ9Ik8iIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAg\nICAgPHBhdGggZD0iTTI4LjMyMDMyNTIsMjg1Ljc0NjEyNyBDMjguMzQ3MDI3NiwyODYuMjMwMzEy\nIDI4LjQ1OTU1NzYsMjg2LjYyMzQ2NSAyOC42NTc5MTg1LDI4Ni45MjU1OTcgQzI5LjAzNTU2NzIs\nMjg3LjQ5MTEyNiAyOS43MDEyMTA3LDI4Ny43NzM4ODYgMzAuNjU0ODY5LDI4Ny43NzM4ODYgQzMx\nLjA4MjEwNzksMjg3Ljc3Mzg4NiAzMS40NzExOTQ3LDI4Ny43MTE5MTIgMzEuODIyMTQwOSwyODcu\nNTg3OTYgQzMyLjUwMTE0NTYsMjg3LjM0NzgwNCAzMi44NDA2NDI5LDI4Ni45MTc4NTMgMzIuODQw\nNjQyOSwyODYuMjk4MDk2IEMzMi44NDA2NDI5LDI4NS44MzMyNzcgMzIuNjk3NTk2MywyODUuNTAy\nMDk5IDMyLjQxMTQ5ODgsMjg1LjMwNDU1MSBDMzIuMTIxNTg2NywyODUuMTEwODc3IDMxLjY2NzY1\nMjEsMjg0Ljk0MjM4MyAzMS4wNDk2ODE2LDI4NC43OTkwNjQgTDI5LjkxMTAxOTMsMjg0LjUzNzYw\nNSBDMjkuMTY3MTY1OCwyODQuMzY3MTcyIDI4LjY0MDc1NDMsMjg0LjE3OTMxIDI4LjMzMTc2OSwy\nODMuOTc0MDE1IEMyNy43OTc3MjA0LDI4My42MTc2NTUgMjcuNTMwNzAwMSwyODMuMDg1MDU4IDI3\nLjUzMDcwMDEsMjgyLjM3NjIxIEMyNy41MzA3MDAxLDI4MS42MDkyNiAyNy43OTE5OTg1LDI4MC45\nNzk4MjggMjguMzE0NjAzMywyODAuNDg3ODk1IEMyOC44MzcyMDgsMjc5Ljk5NTk2MyAyOS41Nzcy\nMzU3LDI3OS43NSAzMC41MzQ3MDg3LDI3OS43NSBDMzEuNDE1ODg4OSwyNzkuNzUgMzIuMTY0NDk5\nNCwyNzkuOTY1OTQ0IDMyLjc4MDU2MjcsMjgwLjM5NzgzNyBDMzMuMzk2NjI2LDI4MC44Mjk3MzEg\nMzMuNzA0NjUzLDI4MS41MjAxNyAzMy43MDQ2NTMsMjgyLjQ2OTE3NCBMMzIuNjM0NjUzNywyODIu\nNDY5MTc0IEMzMi41Nzc0MzQyLDI4Mi4wMTIxMDIgMzIuNDU1MzY3OCwyODEuNjYxNTU3IDMyLjI2\nODQ1MDgsMjgxLjQxNzUyNyBDMzEuOTIxMzE5MSwyODAuOTcyMDc3IDMxLjMzMTk2NzIsMjgwLjc0\nOTM1NCAzMC41MDAzNzcxLDI4MC43NDkzNTQgQzI5LjgyOTAwMTcsMjgwLjc0OTM1NCAyOS4zNDY0\nNTc4LDI4MC44OTI2NzEgMjkuMDUyNzMxMSwyODEuMTc5MzA5IEMyOC43NTkwMDQzLDI4MS40NjU5\nNDcgMjguNjEyMTQzMiwyODEuNzk5MDYyIDI4LjYxMjE0MzIsMjgyLjE3ODY2NCBDMjguNjEyMTQz\nMiwyODIuNTk3IDI4Ljc4Mzc5OTEsMjgyLjkwMzAwMSAyOS4xMjcxMTYxLDI4My4wOTY2NzUgQzI5\nLjM1MjE3OTQsMjgzLjIyMDYyNyAyOS44NjE0MjUzLDI4My4zNzU1NjQgMzAuNjU0ODY5LDI4My41\nNjE0OTEgTDMxLjgzMzU4NDgsMjgzLjgzNDU3MSBDMzIuNDAxOTY1MSwyODMuOTY2MjY5IDMyLjg0\nMDY0MTMsMjg0LjE0NjM4NCAzMy4xNDk2MjY2LDI4NC4zNzQ5MTkgQzMzLjY4MzY3NTMsMjg0Ljc3\nMzg4OCAzMy45NTA2OTU2LDI4NS4zNTI5NjYgMzMuOTUwNjk1NiwyODYuMTEyMTY5IEMzMy45NTA2\nOTU2LDI4Ny4wNTczIDMzLjYxMjE1MiwyODcuNzMzMjEzIDMyLjkzNTA1NDYsMjg4LjEzOTkyOSBD\nMzIuMjU3OTU3MiwyODguNTQ2NjQ1IDMxLjQ3MTIwMDksMjg4Ljc1IDMwLjU3NDc2MjEsMjg4Ljc1\nIEMyOS41Mjk1NTI2LDI4OC43NSAyOC43MTEzMjYxLDI4OC40Nzg4NiAyOC4xMjAwNTc5LDI4Ny45\nMzY1NzIgQzI3LjUyODc4OTgsMjg3LjM5ODE1NyAyNy4yMzg4ODIsMjg2LjY2ODAxNiAyNy4yNTAz\nMjU5LDI4NS43NDYxMjcgTDI4LjMyMDMyNTIsMjg1Ljc0NjEyNyBaIiBpZD0iUyIgZmlsbD0iIzAw\nMDAwMCI+PC9wYXRoPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iRiIgZmlsbD0iIzAwMDAwMCIg\ncG9pbnRzPSI4LjY1NTAwMDA5IDMwMS45NTI1MDMgMTQuNTY1OTk2MiAzMDEuOTUyNTAzIDE0LjU2\nNTk5NjIgMzAyLjk5NjY0NCA5LjgwOTM1NTU3IDMwMi45OTY2NDQgOS44MDkzNTU1NyAzMDUuNTgz\nNzkyIDEzLjk5MTcxODkgMzA1LjU4Mzc5MiAxMy45OTE3MTg5IDMwNi41OTg5MjkgOS44MDkzNTU1\nNyAzMDYuNTk4OTI5IDkuODA5MzU1NTcgMzEwLjQ3Mzg1MSA4LjY1NTAwMDA5IDMxMC40NzM4NTEi\nPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTEwLjYzNjAzNTMsMzI1LjM1NDc4OCBD\nMTEuMTIzMzAzMywzMjUuMzU0Nzg4IDExLjUwMjI4MzksMzI1LjI4NzExMyAxMS43NzI5ODg0LDMy\nNS4xNTE3NjEgQzEyLjE5ODM4MTIsMzI0LjkzOTA2NSAxMi40MTEwNzQ0LDMyNC41NTYyMTcgMTIu\nNDExMDc0NCwzMjQuMDAzMjA2IEMxMi40MTEwNzQ0LDMyMy40NDYzMjggMTIuMTg0ODQ2MSwzMjMu\nMDcxMjE1IDExLjczMjM4MjksMzIyLjg3Nzg1NSBDMTEuNDc3MTQ3MywzMjIuNzY5NTczIDExLjA5\nODE2NjcsMzIyLjcxNTQzMyAxMC41OTU0Mjk4LDMyMi43MTU0MzMgTDguNTM2MTUyNDUsMzIyLjcx\nNTQzMyBMOC41MzYxNTI0NSwzMjUuMzU0Nzg4IEwxMC42MzYwMzUzLDMyNS4zNTQ3ODggWiBNMTEu\nMDI0Njg3NiwzMjkuMjg3NzE4IEMxMS43MzIzODY1LDMyOS4yODc3MTggMTIuMjM3MDQ5NCwzMjku\nMDgyNzU5IDEyLjUzODY5MTUsMzI4LjY3MjgzNSBDMTIuNzI4MTg0NywzMjguNDEzNzMyIDEyLjgy\nMjkyOTgsMzI4LjEwMDQ5MyAxMi44MjI5Mjk4LDMyNy43MzMxMDkgQzEyLjgyMjkyOTgsMzI3LjEx\nNDM1NiAxMi41NDY0Mjg3LDMyNi42OTI4MzYgMTEuOTkzNDE4MSwzMjYuNDY4NTM4IEMxMS42OTk1\nMTA0LDMyNi4zNDg2NTUgMTEuMzEwODYxOSwzMjYuMjg4NzE0IDEwLjgyNzQ2MTEsMzI2LjI4ODcx\nNCBMOC41MzYxNTI0NSwzMjYuMjg4NzE0IEw4LjUzNjE1MjQ1LDMyOS4yODc3MTggTDExLjAyNDY4\nNzYsMzI5LjI4NzcxOCBaIE03LjQwNTAwMDA5LDMyMS43NTI1MDMgTDExLjA2NTI5MzEsMzIxLjc1\nMjUwMyBDMTIuMDYzMDMyNSwzMjEuNzUyNTAzIDEyLjc3MjY1NDMsMzIyLjA1MDI3NCAxMy4xOTQx\nNzk4LDMyMi42NDU4MjMgQzEzLjQ0MTY4MTEsMzIyLjk5NzczOSAxMy41NjU0Mjk4LDMyMy40MDM3\nOSAxMy41NjU0Mjk4LDMyMy44NjM5ODcgQzEzLjU2NTQyOTgsMzI0LjQwMTUyOSAxMy40MTI2Nzc1\nLDMyNC44NDIzODQgMTMuMTA3MTY4MSwzMjUuMTg2NTY2IEMxMi45NDg2MTI2LDMyNS4zNjgzMjQg\nMTIuNzIwNDUwOCwzMjUuNTM0NjEyIDEyLjQyMjY3NTksMzI1LjY4NTQzMyBDMTIuODU5NjcwMywz\nMjUuODUxNzIzIDEzLjE4NjQ0NDQsMzI2LjAzOTI3OSAxMy40MDMwMDgsMzI2LjI0ODEwOSBDMTMu\nNzg1ODYxNCwzMjYuNjE5MzYgMTMuOTc3Mjg1MywzMjcuMTMxNzU4IDEzLjk3NzI4NTMsMzI3Ljc4\nNTMxNiBDMTMuOTc3Mjg1MywzMjguMzM0NDU5IDEzLjgwNTE5NzIsMzI4LjgzMTM4OCAxMy40NjEw\nMTU4LDMyOS4yNzYxMTYgQzEyLjk0NjY3NzMsMzI5Ljk0MTI3NiAxMi4xMjg3NzUzLDMzMC4yNzM4\nNTEgMTEuMDA3Mjg1MywzMzAuMjczODUxIEw3LjQwNTAwMDA5LDMzMC4yNzM4NTEgTDcuNDA1MDAw\nMDksMzIxLjc1MjUwMyBaIE0xNS4yNDc2NTY0LDMyNC4wNjEyMTQgTDE2LjIzOTU5LDMyNC4wNjEy\nMTQgTDE2LjIzOTU5LDMyNS4xMzQzNTkgQzE2LjMyMDgwMTQsMzI0LjkyNTUyOSAxNi41MTk5NTk1\nLDMyNC42NzEyNjQgMTYuODM3MDcwNSwzMjQuMzcxNTU2IEMxNy4xNTQxODE1LDMyNC4wNzE4NDcg\nMTcuNTE5NjI3LDMyMy45MjE5OTUgMTcuOTMzNDE4MiwzMjMuOTIxOTk1IEMxNy45NTI3NTQyLDMy\nMy45MjE5OTUgMTcuOTg1NjI1LDMyMy45MjM5MjkgMTguMDMyMDMxNCwzMjMuOTI3Nzk2IEMxOC4w\nNzg0Mzc5LDMyMy45MzE2NjMgMTguMTU3NzE0NSwzMjMuOTM5Mzk4IDE4LjI2OTg2MzUsMzIzLjk1\nMDk5OSBMMTguMjY5ODYzNSwzMjUuMDUzMTQ4IEMxOC4yMDc5ODgyLDMyNS4wNDE1NDYgMTguMTUw\nOTQ3NywzMjUuMDMzODEyIDE4LjA5ODc0MDQsMzI1LjAyOTk0NSBDMTguMDQ2NTMzMSwzMjUuMDI2\nMDc3IDE3Ljk4OTQ5MjcsMzI1LjAyNDE0NCAxNy45Mjc2MTc0LDMyNS4wMjQxNDQgQzE3LjQwMTY3\nNzIsMzI1LjAyNDE0NCAxNi45OTc1NjAyLDMyNS4xOTMzMzIgMTYuNzE1MjU0MSwzMjUuNTMxNzEy\nIEMxNi40MzI5NDgsMzI1Ljg3MDA5MyAxNi4yOTE3OTcxLDMyNi4yNTk3MDggMTYuMjkxNzk3MSwz\nMjYuNzAwNTcgTDE2LjI5MTc5NzEsMzMwLjI3Mzg1MSBMMTUuMjQ3NjU2NCwzMzAuMjczODUxIEwx\nNS4yNDc2NTY0LDMyNC4wNjEyMTQgWiIgaWQ9IkJyIiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAg\nICAgICAgICAgIDxwb2x5Z29uIGlkPSJIIiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjguMTU1MDAw\nMDkgMzQyLjU1MjUwMyA5LjMyMDk1NzEzIDM0Mi41NTI1MDMgOS4zMjA5NTcxMyAzNDYuMDczNTc4\nIDEzLjc1Mjc1NDEgMzQ2LjA3MzU3OCAxMy43NTI3NTQxIDM0Mi41NTI1MDMgMTQuOTE4NzExMSAz\nNDIuNTUyNTAzIDE0LjkxODcxMTEgMzUxLjA3Mzg1MSAxMy43NTI3NTQxIDM1MS4wNzM4NTEgMTMu\nNzUyNzU0MSAzNDcuMDg4NzE0IDkuMzIwOTU3MTMgMzQ3LjA4ODcxNCA5LjMyMDk1NzEzIDM1MS4w\nNzM4NTEgOC4xNTUwMDAwOSAzNTEuMDczODUxIj48L3BvbHlnb24+CiAgICAgICAgICAgIDxwb2x5\nZ29uIGlkPSJJIiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjMyIDMyMS43NSAzMy4yNSAzMjEuNzUg\nMzMuMjUgMzMwLjI1IDMyIDMzMC4yNSI+PC9wb2x5Z29uPgogICAgICAgICAgICA8cGF0aCBkPSJN\nMzMuNzY3NjI0NywzMDIuNjA1MjA0IEMzNC4zNjYxNDU0LDMwMy4xNzUzNDIgMzQuNjk4NDM2LDMw\nMy44MjMwNDEgMzQuNzY0NTA2NSwzMDQuNTQ4MzE5IEwzMy42MzM1NDEyLDMwNC41NDgzMTkgQzMz\nLjUwNTI4NjgsMzAzLjk5NzU3MyAzMy4yNDk3NTM0LDMwMy41NjEyNDkgMzIuODY2OTMzMywzMDMu\nMjM5MzM0IEMzMi40ODQxMTMyLDMwMi45MTc0MTkgMzEuOTQ2ODEyOSwzMDIuNzU2NDY0IDMxLjI1\nNTAxNjMsMzAyLjc1NjQ2NCBDMzAuNDExNjQ2MiwzMDIuNzU2NDY0IDI5LjczMDU0NzYsMzAzLjA1\nMjE5NSAyOS4yMTE3MDAxLDMwMy42NDM2NjUgQzI4LjY5Mjg1MjYsMzA0LjIzNTEzNSAyOC40MzM0\nMzI4LDMwNS4xNDE3MiAyOC40MzM0MzI4LDMwNi4zNjM0NDUgQzI4LjQzMzQzMjgsMzA3LjM2NDA5\nNyAyOC42Njc1OTA4LDMwOC4xNzU2NTkgMjkuMTM1OTEzOCwzMDguNzk4MTU4IEMyOS42MDQyMzY4\nLDMwOS40MjA2NTYgMzAuMzAyODI0NCwzMDkuNzMxOSAzMS4yMzE2OTc0LDMwOS43MzE5IEMzMi4w\nODY3MjcsMzA5LjczMTkgMzIuNzM3NzA1NiwzMDkuNDA0MTczIDMzLjE4NDY1MjksMzA4Ljc0ODcw\nNyBDMzMuNDIxNzI5MywzMDguNDAzNTIxIDMzLjU5ODU2MjMsMzA3Ljk0OTc0NCAzMy43MTUxNTcz\nLDMwNy4zODczNjMgTDM0Ljg0NjEyMjYsMzA3LjM4NzM2MyBDMzQuNzQ1MDczNiwzMDguMjg3MTcz\nIDM0LjQxMDgzOTgsMzA5LjA0MTUyOSAzMy44NDM0MTExLDMwOS42NTA0NTIgQzMzLjE2MzI3Mzks\nMzEwLjM4MzQ4OCAzMi4yNDYwNzQxLDMxMC43NSAzMS4wOTE3ODQyLDMxMC43NSBDMzAuMDk2ODQw\nNywzMTAuNzUgMjkuMjYxMjU2MSwzMTAuNDQ5NDIxIDI4LjU4NTAwNTQsMzA5Ljg0ODI1NSBDMjcu\nNjk0OTk3NCwzMDkuMDUzMTYzIDI3LjI1LDMwNy44MjU2MzkgMjcuMjUsMzA2LjE2NTY0MyBDMjcu\nMjUsMzA0LjkwNTEzMyAyNy41ODQyMzM4LDMwMy44NzE1MyAyOC4yNTI3MTE1LDMwMy4wNjQ4MDMg\nQzI4Ljk3NTYwMDEsMzAyLjE4ODI2MyAyOS45NzI0NzIsMzAxLjc1IDMxLjI0MzM1NjgsMzAxLjc1\nIEMzMi4zMjc2ODk4LDMwMS43NSAzMy4xNjkxMDQsMzAyLjAzNTA2NSAzMy43Njc2MjQ3LDMwMi42\nMDUyMDQgTDMzLjc2NzYyNDcsMzAyLjYwNTIwNCBaIE0zNi4xNDYxNDk3LDMwMS45ODI3MDggTDM3\nLjE5NTQ5ODksMzAxLjk4MjcwOCBMMzcuMTk1NDk4OSwzMTAuNTI4OTI3IEwzNi4xNDYxNDk3LDMx\nMC41Mjg5MjcgTDM2LjE0NjE0OTcsMzAxLjk4MjcwOCBaIiBpZD0iQ2wiIGZpbGw9IiMwMDAwMDAi\nPjwvcGF0aD4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBvc2l0aXZlIiBmaWxsPSIjMDAwMDAw\nIiBwb2ludHM9IjYuNTk3NjU2MzIgMjIxLjU4MjIyIDYuNTk3NjU2MzIgMjE5Ljg5NTQgMTAuOTc1\nMzU3MSAyMTkuODk1NCAxMC45NzUzNTcxIDIxNS40ODc1NzcgMTIuNjkyMjk5NCAyMTUuNDg3NTc3\nIDEyLjY5MjI5OTQgMjE5Ljg5NTQgMTcuMDcwMDAwMiAyMTkuODk1NCAxNy4wNzAwMDAyIDIyMS41\nODIyMiAxMi42OTIyOTk0IDIyMS41ODIyMiAxMi42OTIyOTk0IDIyNS45ODAwMDIgMTAuOTc1MzU3\nMSAyMjUuOTgwMDAyIDEwLjk3NTM1NzEgMjIxLjU4MjIyIj48L3BvbHlnb24+CiAgICAgICAgICAg\nIDxwb2x5Z29uIGlkPSJOZWdhdGl2ZSIgZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyOC43NSAyMTku\nNzUgMzkuMjUgMjE5Ljc1IDM5LjI1IDIyMS41IDI4Ljc1IDIyMS41Ij48L3BvbHlnb24+CiAgICAg\nICAgICAgIDxwb2x5Z29uIGlkPSJQb2x5Z29uLTIiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdp\nZHRoPSIwLjc1IiBwb2ludHM9IjMzLjM3NSAxOTMuNTMwMDY3IDM5Ljc1IDE5Ny4xNDAwMzMgMzku\nNzUgMjA0LjM1OTk2NyAzMy4zNzUgMjA3Ljk2OTkzMyAyNyAyMDQuMzU5OTY3IDI3IDE5Ny4xNDAw\nMzMiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTM4LjEyNSwxOTcuNDUxMDU4IEwz\nOC4xMjUsMjAzLjQ1MTA1OCIgaWQ9IkxpbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRo\nPSIwLjc1IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRo\nIGQ9Ik0zMy41ODU4ODk2LDE5NS4yOTMzMiBMMjguMzA2Nzk4NiwxOTguMTQ0ODQ2IiBpZD0iTGlu\nZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjAuNzUiIHN0cm9rZS1saW5lY2FwPSJz\ncXVhcmUiPjwvcGF0aD4KICAgICAgICAgICAgPHBhdGggZD0iTTI4LjUxNjg3MTIsMjAzLjQxOTg0\nMSBMMzMuNzA2NjE3MywyMDYuNDMwOTEiIGlkPSJMaW5lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9r\nZS13aWR0aD0iMC43NSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PC9wYXRoPgogICAgICAgICAg\nICA8cGF0aCBkPSJNMjcuNDAyNDk1LDM1MC4xNzIwNDMgTDI4LjY3MzU1MjksMzUwLjE3MjA0MyBM\nMjguNjczNTUyOSwzNTEuNSBMMjcuNDAyNDk1LDM1MS41IEwyNy40MDI0OTUsMzUwLjE3MjA0MyBa\nIE0yNi4wMjkyNDE1LDM0Mi44Mzk1NSBDMjYuNTQ4NzM4NSwzNDIuMjc5ODQ3IDI3LjI2MTk3MTUs\nMzQyIDI4LjE2ODk2MjEsMzQyIEMyOS4wMDc4MjE5LDM0MiAyOS42Nzk1Mzg0LDM0Mi4yMzk0MTMg\nMzAuMTg0MTMxNywzNDIuNzE4MjQ2IEMzMC42ODg3MjUxLDM0My4xOTcwNzkgMzAuOTQxMDE4LDM0\nMy44MDg5MTIgMzAuOTQxMDE4LDM0NC41NTM3NjMgQzMwLjk0MTAxOCwzNDUuMDA0OTMxIDMwLjg0\nODQwNDEsMzQ1LjM3MDk2NiAzMC42NjMxNzM3LDM0NS42NTE4ODIgQzMwLjQ3Nzk0MzIsMzQ1Ljkz\nMjc5NyAzMC4xMDQyOTQyLDM0Ni4zNDU2NTEgMjkuNTQyMjE1NiwzNDYuODkwNDU3IEMyOS4xMzM0\nMzExLDM0Ny4yODYyOTIgMjguODY4MzYzOSwzNDcuNjIxNDcgMjguNzQ3MDA2LDM0Ny44OTYwMDEg\nQzI4LjYyNTY0ODEsMzQ4LjE3MDUzMiAyOC41NjQ5NzAxLDM0OC41NzU5MzggMjguNTY0OTcwMSwz\nNDkuMTEyMjMxIEwyNy40MjgwNDM5LDM0OS4xMTIyMzEgQzI3LjQyODA0MzksMzQ4LjUwMzU4MSAy\nNy41MDA0MzE3LDM0OC4wMTMwNTEgMjcuNjQ1MjA5NiwzNDcuNjQwNjI1IEMyNy43ODk5ODc0LDM0\nNy4yNjgxOTkgMjguMTA3MjE2NCwzNDYuODQxNTEyIDI4LjU5NjkwNjIsMzQ2LjM2MDU1MSBMMjku\nMTA3ODg0MiwzNDUuODU2MTgzIEMyOS4yNjExNzg0LDM0NS43MTE0NjkgMjkuMzg0NjYzNSwzNDUu\nNTYwMzczIDI5LjQ3ODM0MzMsMzQ1LjQwMjg5IEMyOS42NDg2NzAyLDM0NS4xMjYyMzEgMjkuNzMz\nODMyMywzNDQuODM4OTM1IDI5LjczMzgzMjMsMzQ0LjU0MDk5NSBDMjkuNzMzODMyMywzNDQuMTIz\nODc4IDI5LjYwOTI4MjcsMzQzLjc2MjA5OCAyOS4zNjAxNzk2LDM0My40NTU2NDUgQzI5LjExMTA3\nNjYsMzQzLjE0OTE5MiAyOC42OTkxMDQ3LDM0Mi45OTU5NjggMjguMTI0MjUxNSwzNDIuOTk1OTY4\nIEMyNy40MTMxMzY4LDM0Mi45OTU5NjggMjYuOTIxMzI1NCwzNDMuMjU5ODU0IDI2LjY0ODgwMjQs\nMzQzLjc4NzYzNCBDMjYuNDk1NTA4MiwzNDQuMDgxMzE5IDI2LjQwODIxNywzNDQuNTA0ODE0IDI2\nLjM4NjkyNjEsMzQ1LjA1ODEzMiBMMjUuMjUsMzQ1LjA1ODEzMiBDMjUuMjUsMzQ0LjEzODc3MiAy\nNS41MDk3NDQ2LDM0My4zOTkyNTIgMjYuMDI5MjQxNSwzNDIuODM5NTUgTDI2LjAyOTI0MTUsMzQy\nLjgzOTU1IFogTTMyLjY0NjQwNzIsMzUwLjEwODE5OSBMMzMuOTgxMzM3MywzNTAuMTA4MTk5IEwz\nMy45ODEzMzczLDM1MS41IEwzMi42NDY0MDcyLDM1MS41IEwzMi42NDY0MDcyLDM1MC4xMDgxOTkg\nWiBNMzYuMjgwNzM4NSwzNTAuMTA4MTk5IEwzNy42MTU2Njg3LDM1MC4xMDgxOTkgTDM3LjYxNTY2\nODcsMzUxLjUgTDM2LjI4MDczODUsMzUxLjUgTDM2LjI4MDczODUsMzUwLjEwODE5OSBaIE0zOS45\nMTUwNjk5LDM1MC4xMDgxOTkgTDQxLjI1LDM1MC4xMDgxOTkgTDQxLjI1LDM1MS41IEwzOS45MTUw\nNjk5LDM1MS41IEwzOS45MTUwNjk5LDM1MC4xMDgxOTkgWiIgaWQ9Ij8uLi4iIGZpbGw9IiMwMDAw\nMDAiPjwvcGF0aD4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBvbHlnb24iIHN0cm9rZT0iIzAw\nMDAwMCIgc3Ryb2tlLXdpZHRoPSIwLjc1IiBwb2ludHM9IjEyLjg3NSAxOTMuNSAxNy44NTkxNzU3\nIDE5Ni4yMjk2OTkgMTkuMDkwMTY1NCAyMDIuMzYzMjc3IDE1LjY0MTAwODggMjA3LjI4MjAyNCAx\nMC4xMDg5OTEyIDIwNy4yODIwMjQgNi42NTk4MzQ1NiAyMDIuMzYzMjc3IDcuODkwODI0MyAxOTYu\nMjI5Njk5Ij48L3BvbHlnb24+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC43NSw0Ni4zNzUgTDI4\nLjM3NSw1OC42MjUiIGlkPSJMaW5lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMC43\nNSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4K\nPC9zdmc+');
  this.BUTTON_ESRAND = new cggucu.Image_1('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz\ndmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMjNweCIgdmlld0JveD0iMCAwIDI4IDIzIiB2ZXJzaW9u\nPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0\ndHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAz\nOS4xICgzMTcyMCkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAg\nICA8dGl0bGU+RVNSQW5kPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9k\nZXNjPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBz\ndHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAg\nPGcgaWQ9IkVTUkFuZCI+CiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJUcmlhbmdsZSIgZmlsbD0i\nIzQxNzUwNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuNzk0MjQ5LCAxMC4wMTczMzIpIHJvdGF0\nZSgyMTcuMDAwMDAwKSB0cmFuc2xhdGUoLTEwLjc5NDI0OSwgLTEwLjAxNzMzMikgIiBwb2ludHM9\nIjEwLjc5NDI0ODkgMy4wMDMwODg2NCAxNC41OTE5NDEgMTcuMDMxNTc2MSA2Ljk5NjU1Njg4IDE3\nLjAzMTU3NjEiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE1LjQ5MTExMzQsMTUu\nMDM5Mjg1IEMxNS42NDQ3NiwxNC44NjIyMDA4IDE1LjcyMTU4MjIsMTQuNjY1NTg4MSAxNS43MjE1\nODIyLDE0LjQ0OTQ0MTIgQzE1LjcyMTU4MjIsMTQuMjgwMTY5NSAxNS42NjU1OTMxLDE0LjEzNDMz\nNzcgMTUuNTUzNjEzNCwxNC4wMTE5NDEyIEMxNS40NDE2MzM3LDEzLjg4OTU0NDggMTUuMjkwNTkz\nNSwxMy44MjgzNDc1IDE1LjEwMDQ4ODQsMTMuODI4MzQ3NSBDMTQuODExNDI0NSwxMy44MjgzNDc1\nIDE0LjYxMDkwNTYsMTMuOTI0NzAwNyAxNC40OTg5MjU5LDE0LjExNzQxIEMxNC40NDE2MzQsMTQu\nMjE2MzY4OCAxNC40MTI5ODg0LDE0LjMyNDQ0MDYgMTQuNDEyOTg4NCwxNC40NDE2Mjg3IEMxNC40\nMTI5ODg0LDE0LjYwMDQ4MzcgMTQuNDU2NjA3OCwxNC43NTI4MjU5IDE0LjU0Mzg0NzgsMTQuODk4\nNjYgQzE0LjYzMTA4NzgsMTUuMDQ0NDk0IDE0Ljc3NjI2ODYsMTUuMjMzMjk0MiAxNC45NzkzOTQ3\nLDE1LjQ2NTA2NjIgQzE1LjIyNjc5MTcsMTUuMjkwNTg2MiAxNS4zOTczNjI5LDE1LjE0ODY2MDUg\nMTUuNDkxMTEzNCwxNS4wMzkyODUgTDE1LjQ5MTExMzQsMTUuMDM5Mjg1IFogTTE1LjU0NTgwMDks\nMTguMjg5Mjg1IEMxNS43NTQxMzUzLDE4LjE1NjQ3MTggMTUuOTE0Mjg5OSwxOC4wMDgwMzU4IDE2\nLjAyNjI2OTcsMTcuODQzOTcyNSBMMTQuNzI5Mzk0NywxNi4yNjE5NDEyIEMxNC4zNjIyMDUzLDE2\nLjUwNjczNDEgMTQuMTIyNjI0NCwxNi42OTQyMzIyIDE0LjAxMDY0NDcsMTYuODI0NDQxMiBDMTMu\nODM4NzY4OCwxNy4wMTk3NTQ3IDEzLjc1MjgzMjIsMTcuMjU4MDMzNiAxMy43NTI4MzIyLDE3LjUz\nOTI4NSBDMTMuNzUyODMyMiwxNy44NDM5NzQgMTMuODY0MTU5MiwxOC4wNzgzNDY3IDE0LjA4Njgx\nNjUsMTguMjQyNDEgQzE0LjMwOTQ3MzksMTguNDA2NDczMyAxNC41NDcxMDE3LDE4LjQ4ODUwMzcg\nMTQuNzk5NzA3MiwxOC40ODg1MDM3IEMxNS4wODg3NzExLDE4LjQ4ODUwMzcgMTUuMzM3NDY2NSwx\nOC40MjIwOTgxIDE1LjU0NTgwMDksMTguMjg5Mjg1IEwxNS41NDU4MDA5LDE4LjI4OTI4NSBaIE0x\nMy44NTI0NDE1LDE1LjA3ODM0NzUgQzEzLjc3MDQwOTksMTQuODg4MjQyNCAxMy43MjkzOTQ3LDE0\nLjcwNDY1MDQgMTMuNzI5Mzk0NywxNC41Mjc1NjYyIEMxMy43MjkzOTQ3LDE0LjE1Nzc3MjcgMTMu\nODU0MzkzNCwxMy44NTExMzUyIDE0LjEwNDM5NDcsMTMuNjA3NjQ0NCBDMTQuMzU0Mzk1OSwxMy4z\nNjQxNTM2IDE0LjY4OTAyOCwxMy4yNDI0MSAxNS4xMDgzMDA5LDEzLjI0MjQxIEMxNS41MDY3NDA0\nLDEzLjI0MjQxIDE1LjgxNzkzNTIsMTMuMzU1NjkwMSAxNi4wNDE4OTQ3LDEzLjU4MjI1MzcgQzE2\nLjI2NTg1NDEsMTMuODA4ODE3NCAxNi4zNzc4MzIyLDE0LjA3OTY0OCAxNi4zNzc4MzIyLDE0LjM5\nNDc1MzcgQzE2LjM3NzgzMjIsMTQuNzYxOTQzMSAxNi4yNjE5NDc5LDE1LjA4MzU1NDQgMTYuMDMw\nMTc1OSwxNS4zNTk1OTc1IEMxNS44OTQ3NTg2LDE1LjUyMTA1NjYgMTUuNjY4MTk4MywxNS43MDcy\nNTI3IDE1LjM1MDQ4ODQsMTUuOTE4MTkxMiBMMTYuMzk3MzYzNCwxNy4xNjgxOTEyIEMxNi40Njc2\nNzYzLDE2Ljk1OTg1NjkgMTYuNTE2NTAzOSwxNi44MDQyNTk1IDE2LjU0Mzg0NzgsMTYuNzAxMzk0\nNCBDMTYuNTcxMTkxNywxNi41OTg1MjkzIDE2LjU5OTE4NjIsMTYuNDU0NjUwNSAxNi42Mjc4MzIy\nLDE2LjI2OTc1MzcgTDE3LjI5NTgwMDksMTYuMjY5NzUzNyBDMTcuMjUxNTI5OSwxNi42MzY5NDMx\nIDE3LjE2Mjk4OTEsMTYuOTg5MTUzMSAxNy4wMzAxNzU5LDE3LjMyNjM5NDQgQzE2Ljg5NzM2Mjcs\nMTcuNjYzNjM1NiAxNi44MzA5NTcyLDE3Ljc5OTcwMiAxNi44MzA5NTcyLDE3LjczNDU5NzUgTDE3\nLjg1MDQ4ODQsMTguOTcyODc4NyBMMTYuOTQ0MjM4NCwxOC45NzI4Nzg3IEwxNi40MDUxNzU5LDE4\nLjMxNjYyODcgQzE2LjE5MTYzMzIsMTguNTQ4NDAwNyAxNS45OTYzMjI2LDE4LjcxNzY2OTkgMTUu\nODE5MjM4NCwxOC44MjQ0NDEyIEMxNS41MDkzNDEsMTkuMDExOTQyMiAxNS4xNTI1NzM4LDE5LjEw\nNTY5MTIgMTQuNzQ4OTI1OSwxOS4xMDU2OTEyIEMxNC4xNTI1Njg4LDE5LjEwNTY5MTIgMTMuNzE4\nOTc5MywxOC45NDQ4ODU1IDEzLjQ0ODE0NDcsMTguNjIzMjY5NCBDMTMuMTc3MzEsMTguMzAxNjUz\nMiAxMy4wNDE4OTQ3LDE3LjkzOTAyNjYgMTMuMDQxODk0NywxNy41MzUzNzg3IEMxMy4wNDE4OTQ3\nLDE3LjEwMDQ4MDcgMTMuMTczNDAzOCwxNi43MzcyMDMxIDEzLjQzNjQyNTksMTYuNDQ1NTM1IEMx\nMy41OTc4ODUxLDE2LjI2ODQ1MDggMTMuODk4NjYzMywxNi4wNDcwOTg4IDE0LjMzODc2OTcsMTUu\nNzgxNDcyNSBDMTQuMDk2NTgwOSwxNS41MDI4MjUzIDEzLjkzNDQ3MzIsMTUuMjY4NDUyNiAxMy44\nNTI0NDE1LDE1LjA3ODM0NzUgTDEzLjg1MjQ0MTUsMTUuMDc4MzQ3NSBaIiBpZD0iYW5kIiBmaWxs\nPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=');
  this.BUTTON_ESROR = new cggucu.Image_1('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz\ndmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iMjNweCIgdmlld0JveD0iMCAwIDI4IDIzIiB2ZXJzaW9u\nPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0\ndHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAz\nOS4xICgzMTcyMCkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAg\nICA8dGl0bGU+RVNST3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rl\nc2M+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0\ncm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8\nZyBpZD0iRVNST3IiPgogICAgICAgICAgICA8cG9seWdvbiBpZD0iVHJpYW5nbGUiIGZpbGw9IiM0\nQTkwRTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLjc5NDI0OSwgMTAuMDE3MzMyKSByb3RhdGUo\nMjE3LjAwMDAwMCkgdHJhbnNsYXRlKC0xMC43OTQyNDksIC0xMC4wMTczMzIpICIgcG9pbnRzPSIx\nMC43OTQyNDg5IDMuMDAzMDg4NjQgMTQuNTkxOTQxIDE3LjAzMTU3NjEgNi45OTY1NTY4OCAxNy4w\nMzE1NzYxIj48L3BvbHlnb24+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNC40NDAzMzIyLDE3Ljk5\nMDQ1NjkgQzE0LjYxMzUxMDEsMTcuNjM3NTkwNSAxNC43MDAwOTc4LDE3LjI0NTAxNjMgMTQuNzAw\nMDk3OCwxNi44MTI3MjI1IEMxNC43MDAwOTc4LDE2LjQyMjA5NTUgMTQuNjM3NTk4NCwxNi4xMDQz\nOTA0IDE0LjUxMjU5NzgsMTUuODU5NTk3NSBDMTQuMzE0NjgwMSwxNS40NzQxNzg5IDEzLjk3MzUz\nNzcsMTUuMjgxNDcyNSAxMy40ODkxNjAzLDE1LjI4MTQ3MjUgQzEzLjA1OTQ3MDYsMTUuMjgxNDcy\nNSAxMi43NDY5NzM4LDE1LjQ0NTUzMzMgMTIuNTUxNjYwMywxNS43NzM2NiBDMTIuMzU2MzQ2OCwx\nNi4xMDE3ODY2IDEyLjI1ODY5MTUsMTYuNDk3NjE2IDEyLjI1ODY5MTUsMTYuOTYxMTYgQzEyLjI1\nODY5MTUsMTcuNDA2NDc0NyAxMi4zNTYzNDY4LDE3Ljc3NzU2NDcgMTIuNTUxNjYwMywxOC4wNzQ0\nNDEyIEMxMi43NDY5NzM4LDE4LjM3MTMxNzcgMTMuMDU2ODY2NSwxOC41MTk3NTM3IDEzLjQ4MTM0\nNzgsMTguNTE5NzUzNyBDMTMuOTQ3NDk1OSwxOC41MTk3NTM3IDE0LjI2NzE1NDIsMTguMzQzMzIz\nMiAxNC40NDAzMzIyLDE3Ljk5MDQ1NjkgTDE0LjQ0MDMzMjIsMTcuOTkwNDU2OSBaIE0xNC44NzU4\nNzksMTUuMjA3MjUzNyBDMTUuMjQ4Mjc2NywxNS41NjY2MzA1IDE1LjQzNDQ3MjgsMTYuMDk1Mjcx\nMSAxNS40MzQ0NzI4LDE2Ljc5MzE5MTIgQzE1LjQzNDQ3MjgsMTcuNDY3NjczOCAxNS4yNzA0MTE5\nLDE4LjAyNDk1OTkgMTQuOTQyMjg1MywxOC40NjUwNjYyIEMxNC42MTQxNTg2LDE4LjkwNTE3MjYg\nMTQuMTA1MDQ5MiwxOS4xMjUyMjI1IDEzLjQxNDk0MTUsMTkuMTI1MjIyNSBDMTIuODM5NDE3OCwx\nOS4xMjUyMjI1IDEyLjM4MjM5MTEsMTguOTMwNTYzIDEyLjA0Mzg0NzgsMTguNTQxMjM4MSBDMTEu\nNzA1MzA0NCwxOC4xNTE5MTMyIDExLjUzNjAzNTMsMTcuNjI5MTMyIDExLjUzNjAzNTMsMTYuOTcy\nODc4NyBDMTEuNTM2MDM1MywxNi4yNjk3NTAyIDExLjcxNDQxODksMTUuNzA5ODYgMTIuMDcxMTkx\nNSwxNS4yOTMxOTEyIEMxMi40Mjc5NjQyLDE0Ljg3NjUyMjUgMTIuOTA3MTI2LDE0LjY2ODE5MTIg\nMTMuNTA4NjkxNSwxNC42NjgxOTEyIEMxNC4wNDc3NTY3LDE0LjY2ODE5MTIgMTQuNTAzNDgxMywx\nNC44NDc4NzY5IDE0Ljg3NTg3OSwxNS4yMDcyNTM3IEwxNC44NzU4NzksMTUuMjA3MjUzNyBaIE0x\nNi4yODk5NDE1LDE0Ljc4OTI4NSBMMTYuOTU3OTEwMywxNC43ODkyODUgTDE2Ljk1NzkxMDMsMTUu\nNTExOTQxMiBDMTcuMDEyNTk4MSwxNS4zNzEzMTU1IDE3LjE0NjcxMTMsMTUuMjAwMDkzMyAxNy4z\nNjAyNTQsMTQuOTk4MjY5NCBDMTcuNTczNzk2OCwxNC43OTY0NDU0IDE3LjgxOTg4ODEsMTQuNjk1\nNTM1IDE4LjA5ODUzNTMsMTQuNjk1NTM1IEMxOC4xMTE1NTYyLDE0LjY5NTUzNSAxOC4xMzM2OTE0\nLDE0LjY5NjgzNyAxOC4xNjQ5NDE1LDE0LjY5OTQ0MTIgQzE4LjE5NjE5MTcsMTQuNzAyMDQ1NCAx\nOC4yNDk1NzY2LDE0LjcwNzI1MzcgMTguMzI1MDk3OCwxNC43MTUwNjYyIEwxOC4zMjUwOTc4LDE1\nLjQ1NzI1MzcgQzE4LjI4MzQzMDksMTUuNDQ5NDQxMiAxOC4yNDUwMTk4LDE1LjQ0NDIzMjkgMTgu\nMjA5ODYzNCwxNS40NDE2Mjg3IEMxOC4xNzQ3MDcsMTUuNDM5MDI0NSAxOC4xMzYyOTU5LDE1LjQz\nNzcyMjUgMTguMDk0NjI5LDE1LjQzNzcyMjUgQzE3Ljc0MDQ2MDYsMTUuNDM3NzIyNSAxNy40Njgz\nMjc5LDE1LjU1MTY1MzYgMTcuMjc4MjIyOCwxNS43Nzk1MTk0IEMxNy4wODgxMTc3LDE2LjAwNzM4\nNTEgMTYuOTkzMDY2NSwxNi4yNjk3NTIyIDE2Ljk5MzA2NjUsMTYuNTY2NjI4NyBMMTYuOTkzMDY2\nNSwxOC45NzI4Nzg3IEwxNi4yODk5NDE1LDE4Ljk3Mjg3ODcgTDE2LjI4OTk0MTUsMTQuNzg5Mjg1\nIFoiIGlkPSJvciIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4K\nPC9zdmc+');
  this.ACTIONS = null;
  this.model = null;
  this.canvas = null;
  this.currentAction = null;
  this.lastAction = null;
  this.scale_0 = 1;
}
;
_.createElement_2 = function createElement_1(parent_0, width_0, height){
  return this.createElement_1(castToJso(parent_0), width_0, height);
}
;
_.createElement_1 = function createElement_0(parent_0, width_0, height){
  var t, toolBarId, toolbarHolder;
  toolBarId = 'toolbar' + cargge.instanceCount_0;
  toolbarHolder = cggdc.$createDivElement(cggdc.get_19());
  cggdc.$setId(toolbarHolder, toolBarId);
  cggdc.$setAttribute(toolbarHolder, 'style', 'position:absolute;width:' + width_0 * this.scale_0 + 'px;height:' + height * this.scale_0 + 'px;');
  cggdc.$appendChild(parent_0, toolbarHolder);
  this.canvas = cargge.createScaledCanvas(width_0 * this.scale_0, height * this.scale_0);
  this.canvas.addFocusHandler(new cargge.SVGToolBarImpl$1(this));
  this.canvas.addBlurHandler(new cargge.SVGToolBarImpl$2(this));
  cggucu.get_26(toolBarId).add_8(this.canvas);
  this.setupActions();
  this.setupMouseHandlers();
  this.model.addChangeListener(this);
  t = new cargge.SVGToolBarImpl$3(this);
  t.schedule(100);
  return toolbarHolder;
}
;
_.doAction = function doAction(a){
  if (a.isCommand()) {
    a.onCommand();
  }
   else {
    this.setAction_0(a);
  }
  this.repaint();
}
;
_.draw_2 = function draw_3(canvas){
  var context2d, ctx;
  context2d = canvas.getContext2d_0();
  ctx = new carggv.GraphicsContext(context2d);
  this.drawButtons(ctx);
  this.drawESRButtons(ctx);
  this.drawHover(ctx);
}
;
_.drawButtons = function drawButtons(ctx){
  var action, col, dx, dx0, dy, dy0, pt, row, x_0, y_0;
  ctx.clearRect_0(0, 0, 45 * this.scale_0, 360 * this.scale_0);
  ctx.drawImage_0(this.BUTTON_SVG_IMAGE, 0, 0, 45, 360, 0, 0, 45 * this.scale_0, 360 * this.scale_0);
  if (this.selectedRow != -1 && this.selectetCol != -1) {
    dx0 = 45 / 2 * this.scale_0;
    dy0 = 360 / 17 * this.scale_0;
    y_0 = round_int(360 / 17 * this.selectedRow * this.scale_0);
    x_0 = round_int(45 / 2 * this.selectetCol * this.scale_0);
    action = this.getCurrentAction();
    pt = this.getActionPosition(action);
    ctx.setFill(this.model.getGeomFactory().getDrawConfig().createColor(0.5, 0.5, 0.5, 0.5));
    ctx.fillRect_0(x_0, y_0, dx0, dy0);
  }
  dy = 360 * this.scale_0 / 17;
  dx = 45 * this.scale_0 / 2;
  for (row = 0; row < 17 + 1; row++) {
    ctx.setStroke(this.model.getGeomFactory().getDrawConfig().createColor(0.8, 0.8, 0.8, 0.5));
    ctx.drawLine_0(0, dy * row, 45 * this.scale_0, dy * row);
  }
  for (col = 0; col <= 2; col++) {
    ctx.drawLine_0(col * dx, 0, col * dx, 360 * this.scale_0);
  }
}
;
_.drawESRButtons = function drawESRButtons(ctx){
  var dx, dy, node, row, x_0, y_0;
  row = carsge.rowFromESRType(this.model.getESRType_0());
  y_0 = round_int(360 * this.scale_0 / 17 * 3);
  x_0 = round_int(45 * this.scale_0 / 2 * 1);
  dx = 45 * this.scale_0 / 2;
  dy = 360 * this.scale_0 / 17;
  node = null;
  switch (row) {
    case 0:
      break;
    case 1:
      node = this.BUTTON_ESROR;
      break;
    case 2:
      node = this.BUTTON_ESRAND;
      break;
  }
  if (isNotNull(node)) {
    ctx.clearRect_0(x_0, y_0, node.getWidth_1() * this.scale_0, node.getHeight_1() * this.scale_0);
    ctx.drawImage_0(node, 0, 0, node.getWidth_1(), node.getHeight_1(), x_0, y_0, node.getWidth_1() * this.scale_0, node.getHeight_1() * this.scale_0);
  }
}
;
_.drawHover = function drawHover(ctx){
  var dx, dy, pt, x_0, y_0;
  if (isNotNull(this.hoverAction) && jsNotEquals(this.hoverAction, this.getCurrentAction())) {
    dx = 45 / 2 * this.scale_0;
    dy = 360 / 17 * this.scale_0;
    pt = this.getActionPosition(this.hoverAction);
    y_0 = round_int(360 * this.scale_0 / 17 * pt.y_0);
    x_0 = round_int(45 * this.scale_0 / 2 * pt.x_0);
    ctx.setFill(this.model.getGeomFactory().getDrawConfig().createColor(0.3, 0.3, 0.3, 0.5));
    ctx.fillRect_0(x_0, y_0, dx, dy);
  }
}
;
_.getAction = function getAction(row, col){
  if (row >= 0 && row < 17 && col >= 0 && col < 2)
    return this.ACTIONS[row][col];
  return null;
}
;
_.getActionPosition = function getActionPosition(a){
  var col, row;
  for (row = 0; row < 17; row++) {
    for (col = 0; col < 2; col++) {
      if (jsEquals(this.ACTIONS[row][col], a)) {
        return new ja.Point_0(col, row);
      }
    }
  }
  return null;
}
;
_.getCurrentAction = function getCurrentAction(){
  return this.currentAction;
}
;
_.hasFocus_0 = function hasFocus_0(){
  return this.focus_0;
}
;
_.onChange_0 = function onChange_0(){
  this.repaint();
}
;
_.onMouseLeft = function onMouseLeft(event_0){
  cargge.$clinit_SVGToolBarImpl();
  if (isNotNull(this.hoverAction)) {
    this.hoverAction = null;
    this.repaint();
  }
}
;
_.onMouseMoved = function onMouseMoved(evt){
  cargge.$clinit_SVGToolBarImpl();
  var a, col, dx, dy, row, x_0, y_0;
  x_0 = evt.getX_1();
  y_0 = evt.getY_1();
  if (x_0 >= 0 && x_0 <= 45 * this.scale_0 && y_0 >= 0 && y_0 < 360 * this.scale_0) {
    dy = 360 / 17 * this.scale_0;
    dx = 45 / 2 * this.scale_0;
    col = round_int(x_0 / dx);
    row = round_int(y_0 / dy);
    a = this.getAction(row, col);
    if (jsNotEquals(a, this.hoverAction)) {
      this.hoverAction = a;
      this.repaint();
    }
  }
   else {
    if (isNotNull(this.hoverAction)) {
      this.hoverAction = null;
      this.repaint();
    }
  }
}
;
_.onMousePressed = function onMousePressed(evt){
  cargge.$clinit_SVGToolBarImpl();
  var action, bpl, col, dx, dy, row, x_0, y_0;
  x_0 = evt.getX_1();
  y_0 = evt.getY_1();
  if (x_0 >= 0 && x_0 <= 45 * this.scale_0 && y_0 >= 0 && y_0 < 360 * this.scale_0) {
    dy = 360 / 17 * this.scale_0;
    dx = 45 / 2 * this.scale_0;
    col = round_int(x_0 / dx);
    row = round_int(y_0 / dy);
    action = this.setAction(row, col);
    if (instanceOf(action, 122)) {
      bpl = castTo(action, 122);
      bpl.onButtonPressed(new cargge.Window_0(this.canvas), new jag.Point2D$Double(x_0, y_0));
    }
    this.repaint();
  }
}
;
_.onMouseReleased = function onMouseReleased(evt){
  cargge.$clinit_SVGToolBarImpl();
  var bpl, repaint;
  repaint = false;
  if (isNotNull(this.currentAction)) {
    if (instanceOf(this.currentAction, 122)) {
      bpl = castTo(this.currentAction, 122);
      bpl.onButtonReleased(null, new jag.Point2D$Double(evt.getX_1(), evt.getY_1()));
      repaint = true;
    }
    if (this.currentAction.isCommand()) {
      this.currentAction.onMouseUp_0(new cargge.ACTMouseEvent(evt));
      this.setAction_0(this.lastAction);
      repaint = true;
    }
  }
  if (repaint) {
    this.repaint();
  }
}
;
_.repaint = function repaint_0(){
  cargge.$clinit_SVGToolBarImpl();
  this.draw_2(this.canvas);
}
;
_.setAction = function setAction(row, col){
  var last;
  if (isNotNull(this.ACTIONS[row][col])) {
    this.selectedRow = row;
    this.selectetCol = col;
    last = this.currentAction;
    this.currentAction = this.ACTIONS[this.selectedRow][this.selectetCol];
    if (isNotNull(last) && jsNotEquals(last, this.currentAction)) {
      last.onActionLeave();
    }
    this.currentAction.onActionEnter();
    this.lastAction = last;
  }
   else {
    (jl.$clinit_System() , jl.err).println_0('Error setting null action:');
  }
  return this.currentAction;
}
;
_.setAction_0 = function setAction_0(a){
  var c, r;
  this.selectedRow = -1;
  this.selectetCol = -1;
  this.currentAction = a;
  for (r = 0; r < this.ACTIONS.length; r++) {
    for (c = 0; c < 2; c++) {
      if (jsEquals(this.ACTIONS[r][c], a)) {
        this.selectedRow = r;
        this.selectetCol = c;
        this.currentAction = a;
      }
    }
  }
  return this.currentAction;
}
;
_.setupActions = function setupActions(){
  this.ACTIONS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 2), {4:1, 1:1, 7:1}, 39, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ClearAction(this.model), new carsgea.UndoAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.CleanAction(this.model), new carsgea.ZoomRotateAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.SelectionAction(this.model), this.model.isReaction_0()?new carsgea.AtomMapAction(this.model):null]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.UnknownParityAction(this.model), new carggea.ESRSVGTypeAction(this.model, this.scale_0)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.DeleteAction(this.model), null]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.NewBondAction(this.model), new carsgea.NewChainAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.UpBondAction(this.model), new carsgea.DownBondAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.AddRingAction(this.model, 3, false), new carsgea.AddRingAction(this.model, 4, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.AddRingAction(this.model, 5, false), new carsgea.AddRingAction(this.model, 6, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.AddRingAction(this.model, 7, false), new carsgea.AddRingAction(this.model, 6, true)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeChargeAction(this.model, true), new carsgea.ChangeChargeAction(this.model, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 6), new carsgea.ChangeAtomAction(this.model, 14)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 7), new carsgea.ChangeAtomAction(this.model, 15)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 8), new carsgea.ChangeAtomAction(this.model, 16)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 9), new carsgea.ChangeAtomAction(this.model, 17)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 35), new carsgea.ChangeAtomAction(this.model, 53)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 1), new carsgea.ChangeAtomPropertiesAction(this.model)])]);
  this.lastAction = this.setAction(2, 0);
}
;
_.setupMouseHandlers = function setupMouseHandlers(){
  this.canvas.addMouseDownHandler(new cargge.SVGToolBarImpl$4(this));
  this.canvas.addMouseUpHandler(new cargge.SVGToolBarImpl$5(this));
  this.canvas.addMouseMoveHandler(new cargge.SVGToolBarImpl$6(this));
  this.canvas.addMouseOutHandler(new cargge.SVGToolBarImpl$7(this));
}
;
_.focus_0 = false;
_.scale_0 = 0;
_.selectedRow = 0;
_.selectetCol = 0;
cargge.instanceCount_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl', 446, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_SVGToolBarImpl$1 = function $clinit_SVGToolBarImpl$1(){
  cargge.$clinit_SVGToolBarImpl$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$1 = function SVGToolBarImpl$1(this$0){
  cargge.$clinit_SVGToolBarImpl$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_175();
}
;
defineClass(527, 1, {321:1, 21:1, 1:1}, cargge.SVGToolBarImpl$1);
_.$init_175 = function $init_175(){
}
;
_.onFocus = function onFocus_0(event_0){
  this.this$01.focus_0 = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/1', 527, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_SVGToolBarImpl$2 = function $clinit_SVGToolBarImpl$2(){
  cargge.$clinit_SVGToolBarImpl$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$2 = function SVGToolBarImpl$2(this$0){
  cargge.$clinit_SVGToolBarImpl$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_176();
}
;
defineClass(528, 1, {322:1, 21:1, 1:1}, cargge.SVGToolBarImpl$2);
_.$init_176 = function $init_176(){
}
;
_.onBlur = function onBlur_0(event_0){
  this.this$01.focus_0 = false;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/2', 528, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Timer = function $clinit_Timer(){
  cgguc.$clinit_Timer = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.Timer = function Timer(){
  cgguc.$clinit_Timer();
  Object_0.call(this);
  this.$init_177();
}
;
cgguc.clearInterval_0 = function clearInterval_0(timerId){
  $wnd.clearInterval(timerId);
}
;
cgguc.clearTimeout_0 = function clearTimeout_0(timerId){
  $wnd.clearTimeout(timerId);
}
;
cgguc.createCallback = function createCallback(timer, cancelCounter){
  return $entry(function(){
    timer.fire(cancelCounter);
  }
  );
}
;
cgguc.setTimeout_0 = function setTimeout_0(func, time){
  return $wnd.setTimeout(func, time);
}
;
defineClass(273, 1, {1:1});
_.$init_177 = function $init_177(){
  this.timerId = null;
  this.cancelCounter = 0;
}
;
_.cancel_0 = function cancel_0(){
  if (!this.isRunning_0()) {
    return;
  }
  this.cancelCounter++;
  if (this.isRepeating) {
    cgguc.clearInterval_0(this.timerId.intValue());
  }
   else {
    cgguc.clearTimeout_0(this.timerId.intValue());
  }
  this.timerId = null;
}
;
_.fire = function fire(scheduleCancelCounter){
  if (scheduleCancelCounter != this.cancelCounter) {
    return;
  }
  if (!this.isRepeating) {
    this.timerId = null;
  }
  this.run();
}
;
_.isRunning_0 = function isRunning(){
  return isNotNull(this.timerId);
}
;
_.schedule = function schedule(delayMillis){
  if (delayMillis < 0) {
    throw toJs(new jl.IllegalArgumentException_0('must be non-negative'));
  }
  if (this.isRunning_0()) {
    this.cancel_0();
  }
  this.isRepeating = false;
  this.timerId = jl.valueOf_26(cgguc.setTimeout_0(cgguc.createCallback(this, this.cancelCounter), delayMillis));
}
;
_.cancelCounter = 0;
_.isRepeating = false;
cggl.Lcom_google_gwt_user_client_Timer_2_classLit = createForClass('com.google.gwt.user.client', 'Timer', 273, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_SVGToolBarImpl$3 = function $clinit_SVGToolBarImpl$3(){
  cargge.$clinit_SVGToolBarImpl$3 = emptyMethod;
  cgguc.$clinit_Timer();
}
;
cargge.SVGToolBarImpl$3 = function SVGToolBarImpl$3(this$0){
  cargge.$clinit_SVGToolBarImpl$3();
  this.this$01 = this$0;
  cgguc.Timer.call(this);
  this.$init_178();
}
;
defineClass(529, 273, {1:1}, cargge.SVGToolBarImpl$3);
_.$init_178 = function $init_178(){
}
;
_.run = function run(){
  this.this$01.repaint();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/3', 529, cggl.Lcom_google_gwt_user_client_Timer_2_classLit);
cggedc.$clinit_MouseDownHandler = function $clinit_MouseDownHandler(){
  cggedc.$clinit_MouseDownHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseDownHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseDownHandler');
cargge.$clinit_SVGToolBarImpl$4 = function $clinit_SVGToolBarImpl$4(){
  cargge.$clinit_SVGToolBarImpl$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$4 = function SVGToolBarImpl$4(this$0){
  cargge.$clinit_SVGToolBarImpl$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_179();
}
;
defineClass(530, 1, {217:1, 21:1, 1:1}, cargge.SVGToolBarImpl$4);
_.$init_179 = function $init_179(){
}
;
_.onMouseDown = function onMouseDown(event_0){
  this.this$01.onMousePressed(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/4', 530, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_MouseUpHandler = function $clinit_MouseUpHandler(){
  cggedc.$clinit_MouseUpHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseUpHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseUpHandler');
cargge.$clinit_SVGToolBarImpl$5 = function $clinit_SVGToolBarImpl$5(){
  cargge.$clinit_SVGToolBarImpl$5 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$5 = function SVGToolBarImpl$5(this$0){
  cargge.$clinit_SVGToolBarImpl$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_180();
}
;
defineClass(531, 1, {218:1, 21:1, 1:1}, cargge.SVGToolBarImpl$5);
_.$init_180 = function $init_180(){
}
;
_.onMouseUp = function onMouseUp(event_0){
  this.this$01.onMouseReleased(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/5', 531, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_MouseMoveHandler = function $clinit_MouseMoveHandler(){
  cggedc.$clinit_MouseMoveHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseMoveHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseMoveHandler');
cargge.$clinit_SVGToolBarImpl$6 = function $clinit_SVGToolBarImpl$6(){
  cargge.$clinit_SVGToolBarImpl$6 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$6 = function SVGToolBarImpl$6(this$0){
  cargge.$clinit_SVGToolBarImpl$6();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_181();
}
;
defineClass(532, 1, {265:1, 21:1, 1:1}, cargge.SVGToolBarImpl$6);
_.$init_181 = function $init_181(){
}
;
_.onMouseMove = function onMouseMove(event_0){
  this.this$01.onMouseMoved(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$6_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/6', 532, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_MouseOutHandler = function $clinit_MouseOutHandler(){
  cggedc.$clinit_MouseOutHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseOutHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseOutHandler');
cargge.$clinit_SVGToolBarImpl$7 = function $clinit_SVGToolBarImpl$7(){
  cargge.$clinit_SVGToolBarImpl$7 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.SVGToolBarImpl$7 = function SVGToolBarImpl$7(this$0){
  cargge.$clinit_SVGToolBarImpl$7();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_182();
}
;
defineClass(533, 1, {319:1, 21:1, 1:1}, cargge.SVGToolBarImpl$7);
_.$init_182 = function $init_182(){
}
;
_.onMouseOut = function onMouseOut(event_0){
  this.this$01.onMouseLeft(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_SVGToolBarImpl$7_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'SVGToolBarImpl/7', 533, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor = function $clinit_StructureEditor(){
  cargge.$clinit_StructureEditor = emptyMethod;
  jl.$clinit_Object();
  cargge.map_1 = new ju.ArrayList;
  {
    cargge.initObserver();
  }
}
;
cargge.StructureEditor = function StructureEditor(){
  cargge.StructureEditor_2.call(this, 'editor', false, 1);
}
;
cargge.StructureEditor_0 = function StructureEditor_0(container, useSVG, scale){
  cargge.$clinit_StructureEditor();
  var displayMode, drawAreaElement, height, idcode, idcodewidth, ignoreStereoErrors, isFragment, isfragment, mol, noStereoText, se, sf, showFragmentIndicator, showIDCode, si, st, style, t, toolBarElement, toolBarWidth, vo, width_0;
  Object_0.call(this);
  this.$init_183();
  this.scale_0 = scale;
  this.container = container;
  if (isNotNull(container)) {
    this.model = new cargge.GWTEditorModel(new cargge.GWTGeomFactory(new cargge.GWTDrawConfig), 0);
    vo = cggdc.$getAttribute(container, 'view-only');
    this.viewOnly = jl.valueOf_20(parseBoolean(vo));
    se = cggdc.$getAttribute(container, 'ignore-stereo-errors');
    ignoreStereoErrors = parseBoolean(se);
    st = cggdc.$getAttribute(container, 'no-stereo-text');
    noStereoText = parseBoolean(st);
    sf = cggdc.$getAttribute(container, 'show-fragment-indicator');
    showFragmentIndicator = parseBoolean(sf);
    si = cggdc.$getAttribute(container, 'show-idcode');
    showIDCode = parseBoolean(si);
    isfragment = cggdc.$getAttribute(container, 'is-fragment');
    isFragment = parseBoolean(isfragment);
    style = cggdc.$getAttribute(container, 'style');
    style += ';overflow:hidden;position:relative;';
    cggdc.$setAttribute(container, 'style', style);
    width_0 = cggdc.$getClientWidth(container);
    height = cggdc.$getClientHeight(container);
    idcode = cggdc.$getAttribute(container, 'data-idcode');
    toolBarWidth = this.getToolbarWidth();
    if (useSVG)
      this.toolBar = new cargge.SVGToolBarImpl(this.model, scale);
    else 
      this.toolBar = new cargge.ToolBarImpl(this.model);
    toolBarElement = castToJso(this.toolBar.createElement_2(container, toolBarWidth, height - cargge.TEXTHEIGHT - 5));
    if (!jl.booleanValue__Z__devirtual$(this.viewOnly))
      cggdc.$appendChild(container, toolBarElement);
    this.drawPane = new cargge.DrawArea(this.model);
    drawAreaElement = this.drawPane.createElement_0(container, toolBarWidth, 0, width_0 - toolBarWidth, height - cargge.TEXTHEIGHT - 5);
    cggdc.$appendChild(container, drawAreaElement);
    idcodewidth = showFragmentIndicator?width_0 - 50:width_0;
    if (showFragmentIndicator) {
      this.fragmentStatus = cggdc.$createLabelElement(cggdc.get_19());
      this.setElementSizePos(this.fragmentStatus, width_0 - 50, height - cargge.TEXTHEIGHT - 5, cargge.TEXTHEIGHT, 50);
      t = cggdc.$getAttribute(this.fragmentStatus, 'style');
      cggdc.$setAttribute(this.fragmentStatus, 'style', t + 'text-align:center;');
      cggdc.$setInnerText(this.fragmentStatus, this.model.isFragment_0()?'Q':'');
      cggdc.$appendChild(container, this.fragmentStatus);
    }
    if (showIDCode) {
      this.idcodeTextElement = cggdc.$createTextInputElement(cggdc.get_19());
      this.setElementSizePos(this.idcodeTextElement, 0, height - cargge.TEXTHEIGHT - 5, cargge.TEXTHEIGHT, idcodewidth);
      cggdc.$appendChild(container, this.idcodeTextElement);
    }
    displayMode = this.model.getDisplayMode();
    if (ignoreStereoErrors)
      displayMode |= 2048;
    if (noStereoText)
      displayMode |= 32;
    this.model.setDisplayMode(displayMode);
    this.model.addChangeListener(this);
    mol = this.createMolecule_0(idcode, isFragment);
    this.model.setValue(mol, true);
    this.setUpHandlers();
    this.setupMouseHandlers_0();
    cgguc.addResizeHandler(new cargge.StructureEditor$1(this, container, showFragmentIndicator, width_0, height, toolBarWidth));
  }
  cargge.addPasteHandler(this, 'onMouseClicked ');
}
;
cargge.StructureEditor_1 = function StructureEditor_1(id_0){
  cargge.StructureEditor_2.call(this, id_0, false, 1);
}
;
cargge.StructureEditor_2 = function StructureEditor_2(id_0, useSVG, scale){
  cargge.StructureEditor_0.call(this, cggdc.$getElementById(cggdc.get_19(), id_0), useSVG, scale);
}
;
cargge.addPasteHandler = function addPasteHandler(self_0, text_0){
  cargge.$clinit_StructureEditor();
  $doc.addEventListener('paste', function(e){
    var foxus = self_0.hasFocus();
    if (foxus && e.clipboardData) {
      var items = e.clipboardData.items;
      var done = false;
      if (items) {
        for (var i = 0; !done && i < items.length; i++) {
          console.log('Item is ' + items[i].type);
          if (items[i].type.indexOf('image') !== -1) {
            var blob = items[i].getAsFile();
            var URLObj = window.URL || window.webkitURL;
            var source = URLObj.createObjectURL(blob);
            var pastedImage = new Image;
            pastedImage.onload = function(){
              if (self_0.onPasteImage(pastedImage)) {
                done = true;
              }
            }
            ;
            pastedImage.src = source;
          }
           else if (items[i].type.indexOf('text/plain') !== -1) {
            items[i].getAsString(function(s){
              if (self_0.onPasteString(s)) {
                done = true;
              }
            }
            );
          }
        }
        e.preventDefault();
      }
    }
  }
  , false);
}
;
cargge.createEditor = function createEditor(id_0){
  cargge.$clinit_StructureEditor();
  return new cargge.StructureEditor_1(id_0);
}
;
cargge.createSVGEditor = function createSVGEditor(id_0, scale){
  cargge.$clinit_StructureEditor();
  return new cargge.StructureEditor_2(id_0, true, scale);
}
;
cargge.initObserver = function initObserver(){
  if ('MutationObserver' in $wnd) {
    $wnd.edit$observer = new $wnd.MutationObserver(function(mutations){
      mutations.forEach(function(mutation){
        cargge.notify(mutation.target);
      }
      );
    }
    );
  }
}
;
cargge.notify = function notify(o){
  cargge.$clinit_StructureEditor();
  var e, e$iterator, h, toolBarWidth, w;
  for (e$iterator = cargge.map_1.iterator(); e$iterator.hasNext_0();) {
    e = castTo(e$iterator.next_3(), 151);
    e.drawPane.draw();
    w = cggdc.$getClientWidth(e.container);
    h = cggdc.$getClientHeight(e.container);
    toolBarWidth = e.getToolbarWidth();
    e.drawPane.setSize_1(w - toolBarWidth, h - cargge.TEXTHEIGHT - 5);
  }
}
;
defineClass(151, 1, {151:1, 214:1, 1:1}, cargge.StructureEditor_0, cargge.StructureEditor_1, cargge.StructureEditor_2);
_.$init_183 = function $init_183(){
  this.drag = false;
  this.mousePoint = null;
  this.container = null;
  this.viewOnly = jl.valueOf_20(false);
  this.rightClick = false;
  this.mousePressEvt = null;
  this.scale_0 = 1;
}
;
_.callFuncIZ = function callFuncIZ(func, param, b){
  cargge.$clinit_StructureEditor();
  func(param, b);
}
;
_.callFuncS = function callFuncS(func, f, jsMolecule){
  cargge.$clinit_StructureEditor();
  func(f, jsMolecule);
}
;
_.createMolecule_0 = function createMolecule_0(idcode, fragment){
  var elements, mol, p;
  mol = new carc2.StereoMolecule;
  mol.setFragment_0(fragment);
  if (jsNotEquals(idcode, null) && jl.length__I__devirtual$_0(jl.trim__Ljava_lang_String___devirtual$(idcode)) > 0) {
    p = new carc2.IDCodeParser;
    elements = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(idcode, ' ');
    if (jsEquals(elements, null) || elements.length == 1)
      p.parse_0(mol, idcode);
    else 
      p.parse_1(mol, elements[0], elements[1]);
    mol.setStereoBondsFromParity_0();
  }
  return mol;
}
;
_.doAction_0 = function doAction_0(a){
  this.toolBar.doAction(a);
  this.drawPane.requestLayout();
}
;
_.getContext2d = function getContext2d(){
  return this.drawPane.canvas.getContext2d_0();
}
;
_.getIDCode = function getIDCode_6(){
  return this.model.getIDCode_0();
}
;
_.getMolFile = function getMolFile_0(){
  return this.model.getMolFile_0(false);
}
;
_.getMolFileV3 = function getMolFileV3(){
  return this.model.getMolFile_0(true);
}
;
_.getMolecule = function getMolecule_6(){
  return new cargm.JSMolecule_1(this.model.getMolecule_0());
}
;
_.getOCL = function getOCL_3(){
  return $wnd.OCL;
}
;
_.getSmiles = function getSmiles_1(){
  return this.model.getSmiles_0();
}
;
_.getToolbarWidth = function getToolbarWidth(){
  return jl.booleanValue__Z__devirtual$(this.viewOnly)?0:cargge.TOOLBARWIDTH * this.scale_0;
}
;
_.handleKeyEvent = function handleKeyEvent(keyEvent){
}
;
_.hasFocus = function hasFocus_1(){
  return this.drawPane.hasFocus_0() || this.toolBar.hasFocus_0();
}
;
_.isFragment = function isFragment_3(){
  return this.model.isFragment_0();
}
;
_.isSmallMovement = function isSmallMovement(evt1, evt2){
  var distance;
  distance = $wnd.Math.pow(evt1.getX_0() - evt2.getX_0(), 2) + $wnd.Math.pow(evt1.getY_0() - evt2.getY_0(), 2);
  return distance <= 36;
}
;
_.onChange = function onChange_1(){
  var idcode;
  if (isNotNull(this.idcodeTextElement)) {
    idcode = this.model.getIDCode_0();
    cggdc.$setValue_0(this.idcodeTextElement, idcode);
  }
  if (isNotNull(this.fragmentStatus)) {
    cggdc.$setInnerText(this.fragmentStatus, this.model.isFragment_0()?'Q':'');
  }
}
;
_.onChange_0 = function(){
  this.onChange();
}
;
_.onKeyPressed = function onKeyPressed(keyEvent){
  cargge.$clinit_StructureEditor();
  var a;
  a = this.toolBar.getCurrentAction();
  if (isNotNull(a)) {
    if (a.onKeyPressed_0(keyEvent)) {
      this.model.changed_0();
    }
     else {
      this.handleKeyEvent(keyEvent);
    }
  }
}
;
_.onMouseClicked = function onMouseClicked(evt, dbl){
  cargge.$clinit_StructureEditor();
  var a;
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      if (dbl && a.onDoubleClick_0(new cargge.ACTMouseEvent(evt))) {
        this.drawPane.draw_0(a);
      }
    }
  }
}
;
_.onMouseDragged = function onMouseDragged(evt){
  cargge.$clinit_StructureEditor();
  var a, thisEvt;
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      thisEvt = new cargge.FakeMouseEvent(evt);
      if (isNull(this.mousePressEvt) || !this.isSmallMovement(thisEvt, this.mousePressEvt)) {
        if (a.onMouseMove_0(new cargge.ACTMouseEvent(evt), true)) {
          this.drawPane.draw_0(a);
        }
      }
    }
  }
}
;
_.onMouseMoved_0 = function onMouseMoved_0(evt){
  cargge.$clinit_StructureEditor();
  var a;
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      if (a.onMouseMove_0(new cargge.ACTMouseEvent(evt), false)) {
        this.drawPane.draw_0(a);
        this.drawPane.requestFocus();
      }
    }
  }
}
;
_.onMouseMovedFake = function onMouseMovedFake(evt){
  cargge.$clinit_StructureEditor();
  var a;
  a = this.toolBar.getCurrentAction();
  if (isNotNull(this.mousePoint) && isNotNull(a) && !a.isCommand()) {
    if (a.onMouseMove_0(new cargge.ACTTouchEvent(evt, this.mousePoint), false)) {
      this.drawPane.draw_0(a);
    }
  }
}
;
_.onMousePressed_0 = function onMousePressed_0(evt){
  cargge.$clinit_StructureEditor();
  var a;
  this.drag = true;
  this.mousePressEvt = new cargge.FakeMouseEvent(evt);
  if (evt.getNativeButton() == 2) {
    this.rightClick = true;
  }
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      a.onMouseDown_0(new cargge.ACTMouseEvent(evt));
      this.setCursor_0(a.getCursor());
    }
  }
}
;
_.onMouseReleased_0 = function onMouseReleased_0(evt){
  cargge.$clinit_StructureEditor();
  var a, syntheticEvt, thisEvt;
  this.drag = false;
  if (!this.rightClick) {
    a = this.toolBar.getCurrentAction();
    if (isNotNull(a) && !a.isCommand()) {
      thisEvt = new cargge.FakeMouseEvent(evt);
      syntheticEvt = null;
      if (isNotNull(this.mousePressEvt) && this.isSmallMovement(thisEvt, this.mousePressEvt)) {
        syntheticEvt = this.mousePressEvt;
      }
       else {
        syntheticEvt = thisEvt;
      }
      if (a.onMouseUp_0(syntheticEvt)) {
        this.drawPane.draw();
        this.model.changed_0();
      }
    }
  }
  this.setCursor_0(0);
  this.rightClick = false;
  this.mousePressEvt = null;
  this.mousePoint = null;
}
;
_.onPasteImage = function onPasteImage(s){
  return false;
}
;
_.onPasteString = function onPasteString(s){
  var e, mol, p, parser;
  try {
    mol = new carc2.StereoMolecule;
    parser = new carc2.MolfileParser;
    parser.parse_5(mol, s);
    this.model.addMolecule_2(mol, 0, 0);
    return true;
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      carggv.console_0('Parse exception ' + e);
    }
     else 
      throw toJs($e0);
  }
  try {
    mol = new carc2.StereoMolecule;
    p = new carc2.IDCodeParser_0(true);
    p.parse_0(mol, s);
    this.model.addMolecule_2(mol, 0, 0);
    return true;
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 14)) {
      e = $e1;
      carggv.console_0('Parse exception ' + e);
    }
     else 
      throw toJs($e1);
  }
  return false;
}
;
_.onTouchCancelled = function onTouchCancelled(evt){
  cargge.$clinit_StructureEditor();
  this.drag = false;
  this.mousePressEvt = null;
}
;
_.onTouchEnded = function onTouchEnded(evt){
  cargge.$clinit_StructureEditor();
  var a, syntheticEvt, thisEvt;
  evt.preventDefault_0();
  this.drag = false;
  a = this.toolBar.getCurrentAction();
  if (isNotNull(a) && !a.isCommand()) {
    thisEvt = new cargge.FakeMouseEvent_1(evt, this.mousePoint);
    syntheticEvt = null;
    if (isNotNull(this.mousePressEvt) && this.isSmallMovement(thisEvt, this.mousePressEvt)) {
      syntheticEvt = this.mousePressEvt;
    }
     else {
      syntheticEvt = thisEvt;
    }
    if (a.onMouseUp_0(syntheticEvt)) {
      this.drawPane.draw();
      this.model.changed_0();
    }
  }
  this.setCursor_0(0);
  this.rightClick = false;
  this.mousePressEvt = null;
  this.mousePoint = null;
}
;
_.onTouchMoved = function onTouchMoved(evt){
  cargge.$clinit_StructureEditor();
  var a, thisEvt;
  evt.preventDefault_0();
  this.mousePoint = cargge.getPointFromTouchEvent(evt);
  a = this.toolBar.getCurrentAction();
  if (isNotNull(a) && !a.isCommand()) {
    thisEvt = new cargge.FakeMouseEvent_0(evt);
    if (isNull(this.mousePressEvt) || !this.isSmallMovement(thisEvt, this.mousePressEvt)) {
      if (a.onMouseMove_0(new cargge.ACTTouchEvent(evt, this.mousePoint), true)) {
        this.drawPane.draw_0(a);
      }
    }
  }
}
;
_.onTouchStarted = function onTouchStarted(evt){
  cargge.$clinit_StructureEditor();
  var a;
  evt.preventDefault_0();
  this.mousePoint = cargge.getPointFromTouchEvent(evt);
  this.drag = true;
  this.mousePressEvt = new cargge.FakeMouseEvent_0(evt);
  a = this.toolBar.getCurrentAction();
  if (isNotNull(a) && !a.isCommand()) {
    a.onMouseDown_0(new cargge.ACTTouchEvent(evt, this.mousePoint));
    this.setCursor_0(a.getCursor());
  }
}
;
_.setAtomHightlightCallback = function setAtomHightlightCallback(atomHightlightCallback){
  if (isNotNull(atomHightlightCallback)) {
    this.model.registerAtomHighlightCallback(new cargge.StructureEditor$2(this, atomHightlightCallback));
  }
   else 
    this.model.registerAtomHighlightCallback(null);
}
;
_.setBondHightlightCallback = function setBondHightlightCallback(bondHightlightCallback){
  if (isNotNull(bondHightlightCallback)) {
    this.model.registerBondHighlightCallback(new cargge.StructureEditor$3(this, bondHightlightCallback));
  }
   else 
    this.model.registerBondHighlightCallback(null);
}
;
_.setChangeListenerCallback = function setChangeListenerCallback(cb){
  if (isNotNull(cb)) {
    this.model.addChangeListener(new cargge.StructureEditor$4(this, cb));
  }
}
;
_.setCursor_0 = function setCursor_0(c){
  switch (c) {
    case 4:
      this.drawPane.setCursor((cggdc.$clinit_Style$Cursor() , cggdc.SE_RESIZE));
      break;
    case 1:
      this.drawPane.setCursor((cggdc.$clinit_Style$Cursor() , cggdc.CROSSHAIR));
      break;
    case 0:
    default:this.drawPane.setCursor((cggdc.$clinit_Style$Cursor() , cggdc.DEFAULT));
      break;
  }
}
;
_.setElementSizePos = function setElementSizePos(el, x_0, y_0, h, w){
  cargge.$clinit_StructureEditor();
  cggdc.$setAttribute(el, 'style', 'position:absolute;left:' + x_0 + 'px; ' + 'top:' + y_0 + 'px;' + 'width:' + w + 'px;' + 'height:' + h + 'px;');
}
;
_.setFragment = function setFragment_5(set_0){
  this.model.setFragment_0(set_0);
}
;
_.setIDCode = function setIDCode(idCode){
  var e, mol, p, parts;
  try {
    mol = new carc2.StereoMolecule;
    p = new carc2.IDCodeParser;
    if (jsNotEquals(idCode, null)) {
      parts = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(idCode, ' ');
      if (parts.length > 1) {
        p.parse_1(mol, parts[0], parts[1]);
      }
       else 
        p.parse_0(mol, idCode);
      this.model.setValue(mol, true);
    }
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      carggv.println('error setting idcode data ' + e);
    }
     else 
      throw toJs($e0);
  }
}
;
_.setMolFile = function setMolFile_0(molFile){
  this.model.setMolFile_0(molFile);
}
;
_.setSmiles = function setSmiles_0(smiles){
  this.model.setSmiles_0(smiles);
}
;
_.setUpHandlers = function setUpHandlers(){
}
;
_.setupMouseHandlers_0 = function setupMouseHandlers_0(){
  this.drawPane.setOnMouseClicked(new cargge.StructureEditor$5(this), new cargge.StructureEditor$6(this));
  this.drawPane.setOnMouseDragged(new cargge.StructureEditor$7(this));
  this.drawPane.setOnMouseOut(new cargge.StructureEditor$8(this));
  this.drawPane.setOnMouseDown(new cargge.StructureEditor$9(this));
  this.drawPane.setOnTouchStart(new cargge.StructureEditor$10(this));
  this.drawPane.setOnMouseMove(new cargge.StructureEditor$11(this));
  this.drawPane.setOnTouchMove(new cargge.StructureEditor$12(this));
  this.drawPane.setOnTouchCancel(new cargge.StructureEditor$13(this));
  this.drawPane.setOnMouseUp(new cargge.StructureEditor$14(this));
  this.drawPane.setOnTouchEnd(new cargge.StructureEditor$15(this));
  this.drawPane.setOnKeyPressed(new cargge.StructureEditor$16(this));
}
;
_.drag = false;
_.rightClick = false;
_.scale_0 = 0;
cargge.TEXTHEIGHT = 20;
cargge.TOOLBARWIDTH = 45;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor', 151, cggl.Ljava_lang_Object_2_classLit);
cggels.$clinit_ResizeHandler = function $clinit_ResizeHandler(){
  cggels.$clinit_ResizeHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_ResizeHandler_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'ResizeHandler');
cargge.$clinit_StructureEditor$1 = function $clinit_StructureEditor$1(){
  cargge.$clinit_StructureEditor$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$1 = function StructureEditor$1(this$0, val$container, val$showFragmentIndicator, val$width, val$height, val$toolBarWidth){
  cargge.$clinit_StructureEditor$1();
  this.this$01 = this$0;
  this.val$container2 = val$container;
  this.val$showFragmentIndicator3 = val$showFragmentIndicator;
  this.val$width4 = val$width;
  this.val$height5 = val$height;
  this.val$toolBarWidth6 = val$toolBarWidth;
  Object_0.call(this);
  this.$init_184();
}
;
defineClass(449, 1, {215:1, 21:1, 1:1}, cargge.StructureEditor$1);
_.$init_184 = function $init_184(){
}
;
_.onResize = function onResize(ev){
  var h, idcodewidth, w;
  w = cggdc.$getClientWidth(this.val$container2);
  h = cggdc.$getClientHeight(this.val$container2);
  idcodewidth = this.val$showFragmentIndicator3?w - 30:h;
  if (this.val$width4 != w || this.val$height5 != h) {
    this.this$01.drawPane.setSize_1(w - this.val$toolBarWidth6, h - (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT) - 5);
    if (isNotNull(this.this$01.idcodeTextElement))
      this.this$01.setElementSizePos(this.this$01.idcodeTextElement, 0, h - (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT) - 5, (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT), idcodewidth);
    if (isNotNull(this.this$01.fragmentStatus))
      this.this$01.setElementSizePos(this.this$01.fragmentStatus, w - 30, h - (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT) - 5, (cargge.$clinit_StructureEditor() , cargge.TEXTHEIGHT), 30);
  }
}
;
_.val$height5 = 0;
_.val$showFragmentIndicator3 = false;
_.val$toolBarWidth6 = 0;
_.val$width4 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/1', 449, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_TouchStartHandler = function $clinit_TouchStartHandler(){
  cggedc.$clinit_TouchStartHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchStartHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'TouchStartHandler');
cargge.$clinit_StructureEditor$10 = function $clinit_StructureEditor$10(){
  cargge.$clinit_StructureEditor$10 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$10 = function StructureEditor$10(this$0){
  cargge.$clinit_StructureEditor$10();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_185();
}
;
defineClass(458, 1, {889:1, 21:1, 1:1}, cargge.StructureEditor$10);
_.$init_185 = function $init_185(){
}
;
_.onTouchStart = function onTouchStart(event_0){
  this.this$01.onTouchStarted(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$10_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/10', 458, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$11 = function $clinit_StructureEditor$11(){
  cargge.$clinit_StructureEditor$11 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$11 = function StructureEditor$11(this$0){
  cargge.$clinit_StructureEditor$11();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_186();
}
;
defineClass(459, 1, {265:1, 21:1, 1:1}, cargge.StructureEditor$11);
_.$init_186 = function $init_186(){
}
;
_.onMouseMove = function onMouseMove_0(event_0){
  var moved;
  moved = isNull(this.this$01.mousePoint)?false:true;
  if (!this.this$01.drag && moved) {
    this.this$01.onMouseMoved_0(event_0);
  }
  this.this$01.mousePoint = new cargge.MousePoint(event_0.getX_1(), event_0.getY_1());
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$11_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/11', 459, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_TouchMoveHandler = function $clinit_TouchMoveHandler(){
  cggedc.$clinit_TouchMoveHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchMoveHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'TouchMoveHandler');
cargge.$clinit_StructureEditor$12 = function $clinit_StructureEditor$12(){
  cargge.$clinit_StructureEditor$12 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$12 = function StructureEditor$12(this$0){
  cargge.$clinit_StructureEditor$12();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_187();
}
;
defineClass(460, 1, {890:1, 21:1, 1:1}, cargge.StructureEditor$12);
_.$init_187 = function $init_187(){
}
;
_.onTouchMove = function onTouchMove(event_0){
  if (this.this$01.drag) {
    this.this$01.onTouchMoved(event_0);
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$12_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/12', 460, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_TouchCancelHandler = function $clinit_TouchCancelHandler(){
  cggedc.$clinit_TouchCancelHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchCancelHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'TouchCancelHandler');
cargge.$clinit_StructureEditor$13 = function $clinit_StructureEditor$13(){
  cargge.$clinit_StructureEditor$13 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$13 = function StructureEditor$13(this$0){
  cargge.$clinit_StructureEditor$13();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_188();
}
;
defineClass(461, 1, {891:1, 21:1, 1:1}, cargge.StructureEditor$13);
_.$init_188 = function $init_188(){
}
;
_.onTouchCancel = function onTouchCancel(event_0){
  this.this$01.onTouchCancelled(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$13_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/13', 461, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$14 = function $clinit_StructureEditor$14(){
  cargge.$clinit_StructureEditor$14 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$14 = function StructureEditor$14(this$0){
  cargge.$clinit_StructureEditor$14();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_189();
}
;
defineClass(462, 1, {218:1, 21:1, 1:1}, cargge.StructureEditor$14);
_.$init_189 = function $init_189(){
}
;
_.onMouseUp = function onMouseUp_0(event_0){
  this.this$01.onMouseReleased_0(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$14_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/14', 462, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_TouchEndHandler = function $clinit_TouchEndHandler(){
  cggedc.$clinit_TouchEndHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchEndHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'TouchEndHandler');
cargge.$clinit_StructureEditor$15 = function $clinit_StructureEditor$15(){
  cargge.$clinit_StructureEditor$15 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$15 = function StructureEditor$15(this$0){
  cargge.$clinit_StructureEditor$15();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_190();
}
;
defineClass(463, 1, {892:1, 21:1, 1:1}, cargge.StructureEditor$15);
_.$init_190 = function $init_190(){
}
;
_.onTouchEnd = function onTouchEnd(event_0){
  this.this$01.onMouseMovedFake(event_0);
  this.this$01.onTouchEnded(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$15_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/15', 463, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$16 = function $clinit_StructureEditor$16(){
  cargge.$clinit_StructureEditor$16 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$16 = function StructureEditor$16(this$0){
  cargge.$clinit_StructureEditor$16();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_191();
}
;
defineClass(464, 1, {1:1}, cargge.StructureEditor$16);
_.$init_191 = function $init_191(){
}
;
_.onKey = function onKey(event_0){
  this.this$01.onKeyPressed(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$16_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/16', 464, cggl.Ljava_lang_Object_2_classLit);
carsge.$clinit_Model$AtomHighlightCallback = function $clinit_Model$AtomHighlightCallback(){
  carsge.$clinit_Model$AtomHighlightCallback = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_Model$AtomHighlightCallback_2_classLit = createForInterface('com.actelion.research.share.gui.editor', 'Model/AtomHighlightCallback');
cargge.$clinit_StructureEditor$2 = function $clinit_StructureEditor$2(){
  cargge.$clinit_StructureEditor$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$2 = function StructureEditor$2(this$0, val$atomHightlightCallback){
  cargge.$clinit_StructureEditor$2();
  this.this$01 = this$0;
  this.val$atomHightlightCallback2 = val$atomHightlightCallback;
  Object_0.call(this);
  this.$init_192();
}
;
defineClass(450, 1, {1:1}, cargge.StructureEditor$2);
_.$init_192 = function $init_192(){
}
;
_.onHighlight = function onHighlight(atom, selected){
  this.this$01.callFuncIZ(this.val$atomHightlightCallback2, atom, selected);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/2', 450, cggl.Ljava_lang_Object_2_classLit);
carsge.$clinit_Model$BondHighlightCallback = function $clinit_Model$BondHighlightCallback(){
  carsge.$clinit_Model$BondHighlightCallback = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_Model$BondHighlightCallback_2_classLit = createForInterface('com.actelion.research.share.gui.editor', 'Model/BondHighlightCallback');
cargge.$clinit_StructureEditor$3 = function $clinit_StructureEditor$3(){
  cargge.$clinit_StructureEditor$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$3 = function StructureEditor$3(this$0, val$bondHightlightCallback){
  cargge.$clinit_StructureEditor$3();
  this.this$01 = this$0;
  this.val$bondHightlightCallback2 = val$bondHightlightCallback;
  Object_0.call(this);
  this.$init_193();
}
;
defineClass(451, 1, {1:1}, cargge.StructureEditor$3);
_.$init_193 = function $init_193(){
}
;
_.onHighlight = function onHighlight_0(bond, selected){
  this.this$01.callFuncIZ(this.val$bondHightlightCallback2, bond, selected);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/3', 451, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$4 = function $clinit_StructureEditor$4(){
  cargge.$clinit_StructureEditor$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$4 = function StructureEditor$4(this$0, val$cb){
  cargge.$clinit_StructureEditor$4();
  this.this$01 = this$0;
  this.val$cb2 = val$cb;
  Object_0.call(this);
  this.$init_194();
}
;
defineClass(452, 1, {214:1, 1:1}, cargge.StructureEditor$4);
_.$init_194 = function $init_194(){
}
;
_.onChange_0 = function onChange_2(){
  var idcode;
  idcode = this.this$01.model.getIDCode_0();
  this.this$01.callFuncS(this.val$cb2, idcode, this.this$01.getMolecule());
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/4', 452, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_ClickHandler = function $clinit_ClickHandler(){
  cggedc.$clinit_ClickHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_ClickHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'ClickHandler');
cargge.$clinit_StructureEditor$5 = function $clinit_StructureEditor$5(){
  cargge.$clinit_StructureEditor$5 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$5 = function StructureEditor$5(this$0){
  cargge.$clinit_StructureEditor$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_195();
}
;
defineClass(453, 1, {114:1, 21:1, 1:1}, cargge.StructureEditor$5);
_.$init_195 = function $init_195(){
}
;
_.onClick = function onClick(event_0){
  this.this$01.onMouseClicked(event_0, false);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/5', 453, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DoubleClickHandler = function $clinit_DoubleClickHandler(){
  cggedc.$clinit_DoubleClickHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DoubleClickHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DoubleClickHandler');
cargge.$clinit_StructureEditor$6 = function $clinit_StructureEditor$6(){
  cargge.$clinit_StructureEditor$6 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$6 = function StructureEditor$6(this$0){
  cargge.$clinit_StructureEditor$6();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_196();
}
;
defineClass(454, 1, {888:1, 21:1, 1:1}, cargge.StructureEditor$6);
_.$init_196 = function $init_196(){
}
;
_.onDoubleClick = function onDoubleClick(event_0){
  this.this$01.onMouseClicked(event_0, true);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$6_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/6', 454, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$7 = function $clinit_StructureEditor$7(){
  cargge.$clinit_StructureEditor$7 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$7 = function StructureEditor$7(this$0){
  cargge.$clinit_StructureEditor$7();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_197();
}
;
defineClass(455, 1, {265:1, 21:1, 1:1}, cargge.StructureEditor$7);
_.$init_197 = function $init_197(){
}
;
_.onMouseMove = function onMouseMove_1(event_0){
  if (this.this$01.drag)
    this.this$01.onMouseDragged(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$7_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/7', 455, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$8 = function $clinit_StructureEditor$8(){
  cargge.$clinit_StructureEditor$8 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$8 = function StructureEditor$8(this$0){
  cargge.$clinit_StructureEditor$8();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_198();
}
;
defineClass(456, 1, {319:1, 21:1, 1:1}, cargge.StructureEditor$8);
_.$init_198 = function $init_198(){
}
;
_.onMouseOut = function onMouseOut_0(event_0){
  this.this$01.mousePoint = null;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$8_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/8', 456, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_StructureEditor$9 = function $clinit_StructureEditor$9(){
  cargge.$clinit_StructureEditor$9 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.StructureEditor$9 = function StructureEditor$9(this$0){
  cargge.$clinit_StructureEditor$9();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_199();
}
;
defineClass(457, 1, {217:1, 21:1, 1:1}, cargge.StructureEditor$9);
_.$init_199 = function $init_199(){
}
;
_.onMouseDown = function onMouseDown_0(event_0){
  this.this$01.onMousePressed_0(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_StructureEditor$9_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'StructureEditor/9', 457, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl = function $clinit_ToolBarImpl(){
  cargge.$clinit_ToolBarImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl = function ToolBarImpl(model){
  cargge.$clinit_ToolBarImpl();
  Object_0.call(this);
  this.$init_200();
  this.model = model;
  cargge.instanceCount_1++;
}
;
defineClass(447, 1, {214:1, 1:1}, cargge.ToolBarImpl);
_.$init_200 = function $init_200(){
  this.BUTTON_UP = new cggucu.Image_1('data:image/gif;base64, ');
  this.BUTTON_DOWN = new cggucu.Image_1('data:image/gif;base64, ');
  this.ESR_BUTTON_UP = new cggucu.Image_1('data:image/gif;base64,R0lGODlhHABGANUAAISChPLx8ubl5uDf4NLR0s/OzwAA//Hx8tHR0svLzMXFxuvs7OXm5t/g4MvMzAD/APf49+vs6+Xm5dfY18vMy/j49/Ly8enp6ODg38bGxdbTzv8AAPj39+zr68bFxcC/v/////39/fr6+vf39/T09PHx8e7u7uzs7Obm5uPj4+Dg4N3d3dra2tfX19TU1NHR0czMzMvLy8nJycbGxsPDw8DAwL29vbq6uqqqqiEhIQAAAAAAAAAAAAAAAAAAAAAAACwAAAAAHABGAAAG/0CQcEgsGo0AkGbJbDqfzqQGQK1ar1iqUgrIeb/gsFi33eZAp7R6zV6Tp+bTzfahzWSUAsLVYq02KQIXEThvXDknNjU0GTIxBS98fhuUFwsmhWVTiIsKjpCSf5SUJhaZcJsnNJ4OeqEqo6Mkp4cnHp+RE36wsaO0cTIwrn0rDb2jIr+pCQUEoQPHlCIhyl0nw34DKccc0yDViLl+GNu9I97fhnGv5bHdIUPgJ8Qq5To6GyTn8PHqqbspJFC6pw9dP03Wit27t2GhDngO0yFEVI9BQx0H7omIeBCVtRQoHJK4F+IeiIVC5Am4Z+IeBJMmhZiUd8Ghjo0oOco7YeIACf8IBo9I9IgIh9GjSJMi9ddFjFOnTM+0mdomqhw6dvBgW2Eg0CB5ihjhCmWgrCVMVjuNJVa2bSl5q2S02kOvbdtZVm89ErdChV278oJtbfC3bTKrzJwRG1C47DR5W7UVfje0Fl9yhfeltMpuskF59FL8Lchv88QTACXYJV1EXrFAq1GenGm1YlufJGGSqRwH5IWyAfTpnm2a6AlBHUyU+ImTeEyaPJdX8Cb7uVWePoGWFipPqXelUZ+K/xIVDdXzJ6zOqXMnD10/D7wSshq20d5QD/Kflaf2PrH8AL5lVVxzvQIggHidphcouvR14IGBCfNeMQ8CeNhpiT1TYX6PWRVvWQoVUibPZSA+qBlvqbAT4mdWhfbgSLKhaE1qB8JY0m4yIvKaADUCFWOOJ1QEoE/n/Aikb/kFVyQZNgGJnHLM3SiTdaddEB0J0/FjE22nYRelUB3V8t2YRjG15Zlo+gPmmkWgAsWbcMKRxZx0VhEEADs=');
  this.ESR_BUTTON_DOWN = new cggucu.Image_1('data:image/gif;base64,R0lGODlhHABGANUAAISChH59fnt6e3h3eHRzdMTDxLi3uJiXmAAAw3d3eLe3uKamp5eXmI+PkIaGh4ODhH1+fsPExLe4uJGSkgDDAM/Qz8DBwHh4d76+vZ6enZiYl4qKidbTzsMAANDPz8fGxqSjo5KRkYqJiYSDg////9LS0svLy76+vru7u7i4uLW1tbKysq+vr6ysrKmpqaOjo6GhoZubm5iYmJWVlZKSko+Pj4yMjImJiYSEhIODg4CAgHh4eG9vb19fXyEhIQAAACwAAAAAHABGAAAG/0CScEgsGo0AEmfJbDqfziQHQK1ar1iqUgrweb/gsPi33YrPaF956qXx3vC4PL7u+t4EQkIQ0AEcNzY1NB0HMRkwPXVePHk7fDojgIKEHR2IL4pTZncEAwIQOjkOIpSWpyALmlyMF5A4k4Mzp6cuq5w8kA+xNLO0p7dsd6GjgbK/pyzBdjyRvL7ILCvLjLvGEzMayC3SKtR3DhuCITMy290p3zzGvQznKyoKKOqU2ZY/Px0u3PAGKCfqGvSSEePej33d/J2woK4XPnwdHv6AJ7GAunIF8S3Ax0IiBgsFPqjTEEOiC3wr8KF4+MGEupI/XuBrgU8FvoUR8LlcdCeDxP8fHR9ikGjCgzoYLxYghCcBxceQJkxUKKGuh9WrWLNi5Zmmq5pNwtzMGSuHJx49kP6wQ2AIkTpHkCStRYAA09tHxEhRoss3lTpXfWCxm8GXry2zup4VLqwu7+DFfJWZdfYYMgJp6qwJwqYBMj9vZsONK+cZnbrBDErDk0dPVufCS1UoDDgwBuzPChmarQ37oYoUDy2axchXKUqV+EKOPERXKc0fNn+cwNfyJSbnQQ3gs6BzJ1hmiFLFfghSp1GzSLEzdQqypVSqZrXK18rVKxqeYsnqN9sIbR+1lFDQViJmwdWHXAFSQIFdBX6SVymDKCihX2YBpoNg9Ugo4WHfMZKO2GAaatiYKM+EKKFkHd5BWYYmUoCZWZrVwJmJn6kjWg3kyECjaWahtuNq85hVjwYhnvTQbGYJhJGGRqb0wz+6pchDbUxy8xB7wkm5pILYXfmUSGaRlAGXCOEDHFHWpbeUStN1p0546v32Ez7nSanmZ019GdVUy/xwx3yAWrXGEYQWChYUiCa6SRaMNlpFEAA7');
  this.ACTIONS = null;
  this.model = null;
  this.canvas = null;
  this.currentAction = null;
  this.lastAction = null;
  this.loaded = false;
}
;
_.createElement_2 = function createElement_3(parent_0, width_0, height){
  return this.createElement_1(castToJso(parent_0), width_0, height);
}
;
_.createElement_1 = function createElement_2(parent_0, width_0, height){
  var toolBarId, toolbarHolder;
  toolBarId = 'toolbar' + cargge.instanceCount_1;
  this.BUTTON_UP.addLoadHandler(new cargge.ToolBarImpl$1(this));
  this.BUTTON_DOWN.addLoadHandler(new cargge.ToolBarImpl$2(this));
  toolbarHolder = cggdc.$createDivElement(cggdc.get_19());
  cggdc.$setId(toolbarHolder, toolBarId);
  cggdc.$setAttribute(toolbarHolder, 'style', 'position:absolute;width:' + width_0 + 'px;height:' + height + 'px;');
  cggdc.$appendChild(parent_0, toolbarHolder);
  this.canvas = cargge.createScaledCanvas(width_0, height);
  cggdc.$setAttribute(this.canvas.getElement(), 'style', 'outline: none');
  this.canvas.addFocusHandler(new cargge.ToolBarImpl$3(this));
  this.canvas.addBlurHandler(new cargge.ToolBarImpl$4(this));
  cggucu.get_26(toolBarId).add_8(this.canvas);
  this.BUTTON_UP.setVisible(false);
  cggucu.get_26(toolBarId).add_8(this.BUTTON_UP);
  this.BUTTON_DOWN.setVisible(false);
  cggucu.get_26(toolBarId).add_8(this.BUTTON_DOWN);
  this.setupHandlers();
  this.setupMouseHandlers_1();
  this.model.addChangeListener(this);
  return toolbarHolder;
}
;
_.doAction = function doAction_1(a){
  if (a.isCommand()) {
    a.onCommand();
  }
   else {
    this.setAction_0(a);
  }
  this.repaint_0();
}
;
_.draw_3 = function draw_4(toolBar){
  var context2d, ctx;
  context2d = toolBar.getContext2d_0();
  ctx = new carggv.GraphicsContext(context2d);
  this.drawButtons_0(ctx);
  this.drawESRButtons_0(ctx);
}
;
_.drawButtons_0 = function drawButtons_0(ctx){
  var col, dx, dy, row, x_0, y_0;
  ctx.drawImage_1(this.BUTTON_UP, 0, 0);
  if (this.selectedRow != -1 && this.selectetCol != -1) {
    dx = 45 / 2;
    dy = 360 / 17;
    y_0 = round_int(360 / 17 * this.selectedRow);
    x_0 = round_int(45 / 2 * this.selectetCol);
    ctx.drawImage_0(this.BUTTON_DOWN, x_0, y_0, dx, dy, x_0, y_0, dx, dy);
  }
  for (row = 0; row < this.ACTIONS.length; row++) {
    dx = 45 / 2;
    dy = 360 / 17;
    for (col = 0; col < this.ACTIONS[row].length; col++) {
      if (isNull(this.ACTIONS[row][col])) {
        y_0 = round_int(360 / 17 * row);
        x_0 = round_int(45 / 2 * col);
        ctx.save_0();
        ctx.setFill(-86);
        ctx.fillRect_0(x_0 + 2, y_0 + 2, dx - 4, dy - 2);
        ctx.restore_0();
      }
    }
  }
}
;
_.drawESRButtons_0 = function drawESRButtons_0(ctx){
  var ESRdx, ESRdy, ESRx, ESRy, row;
  ESRdx = 28 - 2 * 3;
  ESRdy = (70 - 2 * 3) / 3;
  row = carsge.rowFromESRType(this.model.getESRType_0());
  ESRy = round_int((70 - 2 * 3) / 3 * row + 3);
  ESRx = 3;
  if (instanceOf(this.currentAction, 289)) {
    ctx.drawImage_0(this.ESR_BUTTON_DOWN, ESRx, ESRy, ESRdx, ESRdy, ESRdx, ESRdy * 3, ESRdx, ESRdy);
  }
   else {
    ctx.drawImage_0(this.ESR_BUTTON_UP, ESRx, ESRy, ESRdx, ESRdy, ESRdx, ESRdy * 3, ESRdx, ESRdy);
  }
}
;
_.getCurrentAction = function getCurrentAction_0(){
  return this.currentAction;
}
;
_.hasFocus_0 = function hasFocus_2(){
  return this.focus_0;
}
;
_.onChange_0 = function onChange_3(){
  this.repaint_0();
}
;
_.onMousePressed_1 = function onMousePressed_1(evt){
  cargge.$clinit_ToolBarImpl();
  var action, bpl, col, dx, dy, row, x_0, y_0;
  x_0 = evt.getX_1();
  y_0 = evt.getY_1();
  if (x_0 >= 0 && x_0 <= 45 && y_0 >= 0 && y_0 < 360) {
    dy = 360 / 17;
    dx = 45 / 2;
    col = round_int(x_0 / dx);
    row = round_int(y_0 / dy);
    action = this.setAction(row, col);
    if (instanceOf(action, 122)) {
      bpl = castTo(action, 122);
      bpl.onButtonPressed(new cargge.Window_0(this.canvas), new jag.Point2D$Double(x_0, y_0));
    }
    this.repaint_0();
  }
}
;
_.onMouseReleased_1 = function onMouseReleased_1(evt){
  cargge.$clinit_ToolBarImpl();
  var bpl, repaint;
  repaint = false;
  if (isNotNull(this.currentAction)) {
    if (instanceOf(this.currentAction, 122)) {
      bpl = castTo(this.currentAction, 122);
      bpl.onButtonReleased(null, new jag.Point2D$Double(evt.getX_1(), evt.getY_1()));
      repaint = true;
    }
    if (this.currentAction.isCommand()) {
      this.currentAction.onMouseUp_0(new cargge.ACTMouseEvent(evt));
      this.setAction_0(this.lastAction);
      repaint = true;
    }
  }
  if (repaint) {
    this.repaint_0();
  }
}
;
_.repaint_0 = function repaint_1(){
  this.draw_3(this.canvas);
}
;
_.requestLayout_0 = function requestLayout_0(){
  cargge.$clinit_ToolBarImpl();
  this.draw_3(this.canvas);
}
;
_.setAction = function setAction_1(row, col){
  var last;
  if (isNotNull(this.ACTIONS[row][col])) {
    this.selectedRow = row;
    this.selectetCol = col;
    last = this.currentAction;
    this.currentAction = this.ACTIONS[this.selectedRow][this.selectetCol];
    if (isNotNull(last) && jsNotEquals(last, this.currentAction)) {
      last.onActionLeave();
    }
    this.currentAction.onActionEnter();
    this.lastAction = last;
  }
   else {
    (jl.$clinit_System() , jl.err).println_0('Error setting null action:');
  }
  return this.currentAction;
}
;
_.setAction_0 = function setAction_2(a){
  var c, r;
  this.selectedRow = -1;
  this.selectetCol = -1;
  this.currentAction = a;
  for (r = 0; r < this.ACTIONS.length; r++) {
    for (c = 0; c < 2; c++) {
      if (jsEquals(this.ACTIONS[r][c], a)) {
        this.selectedRow = r;
        this.selectetCol = c;
        this.currentAction = a;
      }
    }
  }
  return this.currentAction;
}
;
_.setupHandlers = function setupHandlers(){
  this.ACTIONS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 2), {4:1, 1:1, 7:1}, 39, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ClearAction(this.model), new carsgea.UndoAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.CleanAction(this.model), new carsgea.ZoomRotateAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.SelectionAction(this.model), this.model.isReaction_0()?new carsgea.AtomMapAction(this.model):null]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.UnknownParityAction(this.model), new carggea.ESRTypeAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.DeleteAction(this.model), null]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.NewBondAction(this.model), new carsgea.NewChainAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.UpBondAction(this.model), new carsgea.DownBondAction(this.model)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.AddRingAction(this.model, 3, false), new carsgea.AddRingAction(this.model, 4, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.AddRingAction(this.model, 5, false), new carsgea.AddRingAction(this.model, 6, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.AddRingAction(this.model, 7, false), new carsgea.AddRingAction(this.model, 6, true)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeChargeAction(this.model, true), new carsgea.ChangeChargeAction(this.model, false)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 6), new carsgea.ChangeAtomAction(this.model, 14)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 7), new carsgea.ChangeAtomAction(this.model, 15)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 8), new carsgea.ChangeAtomAction(this.model, 16)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 9), new carsgea.ChangeAtomAction(this.model, 17)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 35), new carsgea.ChangeAtomAction(this.model, 53)]), stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit, 1), {39:1, 4:1, 1:1, 7:1}, 25, 0, [new carsgea.ChangeAtomAction(this.model, 1), new carsgea.ChangeAtomPropertiesAction(this.model)])]);
  this.lastAction = this.setAction(2, 0);
}
;
_.setupMouseHandlers_1 = function setupMouseHandlers_1(){
  this.canvas.addMouseDownHandler(new cargge.ToolBarImpl$5(this));
  this.canvas.addMouseUpHandler(new cargge.ToolBarImpl$6(this));
}
;
_.focus_0 = false;
_.loaded = false;
_.selectedRow = 0;
_.selectetCol = 0;
cargge.ESR_BORDER = 3;
cargge.ESR_BUTTON_ROW = 3;
cargge.instanceCount_1 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl', 447, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_LoadHandler = function $clinit_LoadHandler(){
  cggedc.$clinit_LoadHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_LoadHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'LoadHandler');
cargge.$clinit_ToolBarImpl$1 = function $clinit_ToolBarImpl$1(){
  cargge.$clinit_ToolBarImpl$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$1 = function ToolBarImpl$1(this$0){
  cargge.$clinit_ToolBarImpl$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_201();
}
;
defineClass(534, 1, {251:1, 21:1, 1:1}, cargge.ToolBarImpl$1);
_.$init_201 = function $init_201(){
}
;
_.onLoad = function onLoad(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_0();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/1', 534, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$2 = function $clinit_ToolBarImpl$2(){
  cargge.$clinit_ToolBarImpl$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$2 = function ToolBarImpl$2(this$0){
  cargge.$clinit_ToolBarImpl$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_202();
}
;
defineClass(535, 1, {251:1, 21:1, 1:1}, cargge.ToolBarImpl$2);
_.$init_202 = function $init_202(){
}
;
_.onLoad = function onLoad_0(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_0();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/2', 535, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$3 = function $clinit_ToolBarImpl$3(){
  cargge.$clinit_ToolBarImpl$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$3 = function ToolBarImpl$3(this$0){
  cargge.$clinit_ToolBarImpl$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_203();
}
;
defineClass(536, 1, {321:1, 21:1, 1:1}, cargge.ToolBarImpl$3);
_.$init_203 = function $init_203(){
}
;
_.onFocus = function onFocus_1(event_0){
  this.this$01.focus_0 = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/3', 536, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$4 = function $clinit_ToolBarImpl$4(){
  cargge.$clinit_ToolBarImpl$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$4 = function ToolBarImpl$4(this$0){
  cargge.$clinit_ToolBarImpl$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_204();
}
;
defineClass(537, 1, {322:1, 21:1, 1:1}, cargge.ToolBarImpl$4);
_.$init_204 = function $init_204(){
}
;
_.onBlur = function onBlur_1(event_0){
  this.this$01.focus_0 = false;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/4', 537, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$5 = function $clinit_ToolBarImpl$5(){
  cargge.$clinit_ToolBarImpl$5 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$5 = function ToolBarImpl$5(this$0){
  cargge.$clinit_ToolBarImpl$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_205();
}
;
defineClass(538, 1, {217:1, 21:1, 1:1}, cargge.ToolBarImpl$5);
_.$init_205 = function $init_205(){
}
;
_.onMouseDown = function onMouseDown_1(event_0){
  this.this$01.onMousePressed_1(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/5', 538, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_ToolBarImpl$6 = function $clinit_ToolBarImpl$6(){
  cargge.$clinit_ToolBarImpl$6 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.ToolBarImpl$6 = function ToolBarImpl$6(this$0){
  cargge.$clinit_ToolBarImpl$6();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_206();
}
;
defineClass(539, 1, {218:1, 21:1, 1:1}, cargge.ToolBarImpl$6);
_.$init_206 = function $init_206(){
}
;
_.onMouseUp = function onMouseUp_1(event_0){
  this.this$01.onMouseReleased_1(event_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_ToolBarImpl$6_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'ToolBarImpl/6', 539, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_Util_0 = function $clinit_Util_0(){
  cargge.$clinit_Util_0 = emptyMethod;
  jl.$clinit_Object();
}
;
cargge.createScaledCanvas = function createScaledCanvas(width_0, height){
  cargge.$clinit_Util_0();
  var canvas;
  canvas = cggcc3.createIfSupported();
  cargge.scaleCanvas(canvas, width_0, height);
  return canvas;
}
;
cargge.getDevicePixelRatio = function getDevicePixelRatio(){
  return window.devicePixelRatio || 1;
}
;
cargge.scaleCanvas = function scaleCanvas(canvas, width_0, height){
  cargge.$clinit_Util_0();
  var ctx, ratio;
  canvas.setWidth(width_0 + 'px');
  canvas.setHeight(height + 'px');
  ctx = canvas.getContext2d_0();
  ratio = cargge.getDevicePixelRatio();
  canvas.setCoordinateSpaceWidth(round_int(width_0 * ratio));
  canvas.setCoordinateSpaceHeight(round_int(height * ratio));
  cggcdc.$scale(ctx, ratio, ratio);
}
;
defineClass(1129, 1, {1:1});
cggl.Lcom_actelion_research_gwt_gui_editor_Util_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'Util', 1129, cggl.Ljava_lang_Object_2_classLit);
carsg.$clinit_Delegator = function $clinit_Delegator(){
  carsg.$clinit_Delegator = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.Delegator = function Delegator(t){
  carsg.$clinit_Delegator();
  Object_0.call(this);
  this.$init_207();
  this.delegate = t;
}
;
defineClass(762, 1, {1:1});
_.$init_207 = function $init_207(){
}
;
_.getNative = function getNative(){
  return this.delegate;
}
;
cggl.Lcom_actelion_research_share_gui_Delegator_2_classLit = createForClass('com.actelion.research.share.gui', 'Delegator', 762, cggl.Ljava_lang_Object_2_classLit);
cargge.$clinit_Window = function $clinit_Window(){
  cargge.$clinit_Window = emptyMethod;
  carsg.$clinit_Delegator();
}
;
cargge.Window_0 = function Window_0(window_0){
  cargge.$clinit_Window();
  carsg.Delegator.call(this, window_0);
  this.$init_208();
}
;
defineClass(381, 762, {1:1}, cargge.Window_0);
_.$init_208 = function $init_208(){
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_Window_2_classLit = createForClass('com.actelion.research.gwt.gui.editor', 'Window', 381, cggl.Lcom_actelion_research_share_gui_Delegator_2_classLit);
cggucu.$clinit_HasVisibility = function $clinit_HasVisibility(){
  cggucu.$clinit_HasVisibility = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasVisibility_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasVisibility');
cggucu.$clinit_UIObject = function $clinit_UIObject(){
  cggucu.$clinit_UIObject = emptyMethod;
  jl.$clinit_Object();
  cggucu.debugIdImpl = castTo(new cggucu.UIObject$DebugIdImpl, 229);
}
;
cggucu.UIObject = function UIObject(){
  cggucu.$clinit_UIObject();
  Object_0.call(this);
  this.$init_209();
}
;
cggucu.getStyleName = function getStyleName(elem){
  return cggdc.$getClassName(elem);
}
;
cggucu.getStylePrimaryName_0 = function getStylePrimaryName_0(elem){
  var fullClassName, spaceIdx;
  fullClassName = cggucu.getStyleName(elem);
  spaceIdx = jl.indexOf_I_I__devirtual$(fullClassName, 32);
  if (spaceIdx >= 0) {
    return jl.substring_II_Ljava_lang_String___devirtual$(fullClassName, 0, spaceIdx);
  }
  return fullClassName;
}
;
cggucu.setStyleName = function setStyleName(elem, styleName){
  cggucu.$clinit_UIObject();
  cggdc.$setClassName(elem, styleName);
}
;
cggucu.setStyleName_0 = function setStyleName_0(elem, style, add_0){
  cggucu.$clinit_UIObject();
  if (isNull(elem)) {
    throw toJs(new jl.RuntimeException_1('Null widget handle. If you are creating a composite, ensure that initWidget() has been called.'));
  }
  style = jl.trim__Ljava_lang_String___devirtual$(style);
  if (jl.length__I__devirtual$_0(style) == 0) {
    throw toJs(new jl.IllegalArgumentException_0('Style names cannot be empty'));
  }
  if (add_0) {
    cggdc.$addClassName(elem, style);
  }
   else {
    cggdc.$removeClassName(elem, style);
  }
}
;
cggucu.setStylePrimaryName = function setStylePrimaryName(elem, style){
  if (isNull(elem)) {
    throw toJs(new jl.RuntimeException_1('Null widget handle. If you are creating a composite, ensure that initWidget() has been called.'));
  }
  style = jl.trim__Ljava_lang_String___devirtual$(style);
  if (jl.length__I__devirtual$_0(style) == 0) {
    throw toJs(new jl.IllegalArgumentException_0('Style names cannot be empty'));
  }
  cggucu.updatePrimaryAndDependentStyleNames(elem, style);
}
;
cggucu.setVisible = function setVisible(elem, visible){
  elem.style.display = visible?'':'none';
  if (visible) {
    elem.removeAttribute('aria-hidden');
  }
   else {
    elem.setAttribute('aria-hidden', 'true');
  }
}
;
cggucu.updatePrimaryAndDependentStyleNames = function updatePrimaryAndDependentStyleNames(elem, newPrimaryStyle){
  var classes = (elem.className || '').split(/\s+/);
  if (!classes) {
    return;
  }
  var oldPrimaryStyle = classes[0];
  var oldPrimaryStyleLen = oldPrimaryStyle.length;
  classes[0] = newPrimaryStyle;
  for (var i = 1, n = classes.length; i < n; i++) {
    var name_0 = classes[i];
    if (name_0.length > oldPrimaryStyleLen && (name_0.charAt(oldPrimaryStyleLen) == '-' && name_0.indexOf(oldPrimaryStyle) == 0)) {
      classes[i] = newPrimaryStyle + name_0.substring(oldPrimaryStyleLen);
    }
  }
  elem.className = classes.join(' ');
}
;
defineClass(31, 1, {31:1, 1:1});
_.$init_209 = function $init_209(){
}
;
_.addStyleDependentName = function addStyleDependentName(styleSuffix){
  this.setStyleDependentName(styleSuffix, true);
}
;
_.addStyleName = function addStyleName(style){
  this.setStyleName_0(style, true);
}
;
_.extractLengthValue = function extractLengthValue(s){
  if (s == 'auto' || (s == 'inherit' || s == '')) {
    return 0;
  }
   else {
    var numberRegex = cggucu.numberRegex_0;
    if (!numberRegex) {
      numberRegex = cggucu.numberRegex_0 = /^(\s*[+-]?((\d+\.?\d*)|(\.\d+))([eE][+-]?\d+)?)(.*)$/;
    }
    s = s.replace(numberRegex, '$1');
    return parseFloat(s);
  }
}
;
_.getAbsoluteLeft = function getAbsoluteLeft(){
  return cggdc.$getAbsoluteLeft(this.getElement());
}
;
_.getAbsoluteTop = function getAbsoluteTop(){
  return cggdc.$getAbsoluteTop(this.getElement());
}
;
_.getElement = function getElement(){
  return cgguc.asOld(this.element);
}
;
_.getOffsetHeight = function getOffsetHeight(){
  return cggdc.$getPropertyInt(this.getElement(), 'offsetHeight');
}
;
_.getOffsetWidth = function getOffsetWidth(){
  return cggdc.$getPropertyInt(this.getElement(), 'offsetWidth');
}
;
_.getStyleElement = function getStyleElement(){
  return this.getElement();
}
;
_.getStylePrimaryName = function getStylePrimaryName(){
  return cggucu.getStylePrimaryName_0(this.getStyleElement());
}
;
_.removeStyleDependentName = function removeStyleDependentName(styleSuffix){
  this.setStyleDependentName(styleSuffix, false);
}
;
_.removeStyleName = function removeStyleName(style){
  this.setStyleName_0(style, false);
}
;
_.replaceElement = function replaceElement(elem){
  if (isNotNull(this.element)) {
    this.replaceNode(this.element, elem);
  }
  this.element = elem;
}
;
_.replaceNode = function replaceNode(node, newNode){
  var p = node.parentNode;
  if (!p) {
    return;
  }
  p.insertBefore(newNode, node);
  p.removeChild(node);
}
;
_.setElement = function setElement(elem){
  this.setElement_0(cgguc.asOld(elem));
}
;
_.setElement_0 = function setElement_0(elem){
  this.element = elem;
}
;
_.setHeight = function setHeight(height){
  cggdc.$setProperty_0(cggdc.$getStyle(this.getElement()), 'height', height);
}
;
_.setStyleDependentName = function setStyleDependentName(styleSuffix, add_0){
  this.setStyleName_0(this.getStylePrimaryName() + '-' + styleSuffix, add_0);
}
;
_.setStyleName = function setStyleName_1(style){
  cggucu.setStyleName(this.getStyleElement(), style);
}
;
_.setStyleName_0 = function setStyleName_2(style, add_0){
  cggucu.setStyleName_0(this.getStyleElement(), style, add_0);
}
;
_.setStylePrimaryName = function setStylePrimaryName_0(style){
  cggucu.setStylePrimaryName(this.getStyleElement(), style);
}
;
_.setVisible = function setVisible_0(visible){
  cggucu.setVisible(this.getElement(), visible);
}
;
_.setWidth = function setWidth(width_0){
  cggdc.$setProperty_0(cggdc.$getStyle(this.getElement()), 'width', width_0);
}
;
_.sinkBitlessEvent = function sinkBitlessEvent(eventTypeName){
  cgguc.sinkBitlessEvent_0(this.getElement(), eventTypeName);
}
;
_.sinkEvents = function sinkEvents(eventBitsToAdd){
  cgguc.sinkEvents_1(this.getElement(), eventBitsToAdd | cgguc.getEventsSunk(this.getElement()));
}
;
_.toString_0 = function toString_19(){
  if (isNull(this.element)) {
    return '(null handle)';
  }
  return cggdc.$getString(this.getElement());
}
;
cggucu.DEBUG_ID_PREFIX = 'gwt-debug-';
cggucu.EMPTY_STYLENAME_MSG = 'Style names cannot be empty';
cggucu.MISSING_ELEMENT_ERROR = "This UIObject's element is not set; you may be missing a call to either Composite.initWidget() or UIObject.setElement()";
cggucu.NULL_HANDLE_MSG = 'Null widget handle. If you are creating a composite, ensure that initWidget() has been called.';
cggucu.SETELEMENT_TWICE_ERROR = 'Element may only be set once';
cggl.Lcom_google_gwt_user_client_ui_UIObject_2_classLit = createForClass('com.google.gwt.user.client.ui', 'UIObject', 31, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_EventListener = function $clinit_EventListener(){
  cgguc.$clinit_EventListener = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_EventListener_2_classLit = createForInterface('com.google.gwt.user.client', 'EventListener');
cgges.$clinit_HasHandlers = function $clinit_HasHandlers(){
  cgges.$clinit_HasHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_shared_HasHandlers_2_classLit = createForInterface('com.google.gwt.event.shared', 'HasHandlers');
cggels.$clinit_HasAttachHandlers = function $clinit_HasAttachHandlers(){
  cggels.$clinit_HasAttachHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_HasAttachHandlers_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'HasAttachHandlers');
cggucu.$clinit_IsWidget = function $clinit_IsWidget(){
  cggucu.$clinit_IsWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_IsWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'IsWidget');
cggucu.$clinit_Widget = function $clinit_Widget(){
  cggucu.$clinit_Widget = emptyMethod;
  cggucu.$clinit_UIObject();
}
;
cggucu.Widget = function Widget(){
  cggucu.$clinit_Widget();
  cggucu.UIObject.call(this);
  this.$init_210();
}
;
defineClass(22, 31, {37:1, 31:1, 22:1, 1:1});
_.$init_210 = function $init_210(){
}
;
_.addBitlessDomHandler = function addBitlessDomHandler(handler, type_0){
  this.sinkBitlessEvent(type_0.getName_0());
  return this.ensureHandlers().addHandler_0(type_0, handler);
}
;
_.addDomHandler = function addDomHandler(handler, type_0){
  var typeInt;
  typeInt = cgguc.getTypeInt(type_0.getName_0());
  if (typeInt == -1) {
    this.sinkBitlessEvent(type_0.getName_0());
  }
   else {
    this.sinkEvents(typeInt);
  }
  return this.ensureHandlers().addHandler_0(type_0, handler);
}
;
_.addHandler = function addHandler(handler, type_0){
  return this.ensureHandlers().addHandler_0(type_0, handler);
}
;
_.asWidget = function asWidget(){
  return this;
}
;
_.createHandlerManager = function createHandlerManager(){
  return new cgges.HandlerManager(this);
}
;
_.doAttachChildren = function doAttachChildren(){
}
;
_.doDetachChildren = function doDetachChildren(){
}
;
_.ensureHandlers = function ensureHandlers(){
  return isNull(this.handlerManager)?(this.handlerManager = this.createHandlerManager()):this.handlerManager;
}
;
_.fireEvent = function fireEvent(event_0){
  if (isNotNull(this.handlerManager)) {
    this.handlerManager.fireEvent(event_0);
  }
}
;
_.getParent = function getParent(){
  return this.parent_1;
}
;
_.isAttached = function isAttached_0(){
  return this.attached;
}
;
_.isOrWasAttached = function isOrWasAttached(){
  return this.eventsToSink == -1;
}
;
_.onAttach = function onAttach(){
  var bitsToAdd;
  if (this.isAttached()) {
    throw toJs(new jl.IllegalStateException_0("Should only call onAttach when the widget is detached from the browser's document"));
  }
  this.attached = true;
  cgguc.setEventListener(this.getElement(), this);
  bitsToAdd = this.eventsToSink;
  this.eventsToSink = -1;
  if (bitsToAdd > 0) {
    this.sinkEvents(bitsToAdd);
  }
  this.doAttachChildren();
  this.onLoad_0();
  cggels.fire_0(this, true);
}
;
_.onBrowserEvent = function onBrowserEvent(event_0){
  var related;
  switch (cgguc.eventGetType_0(event_0)) {
    case 16:
    case 32:
      related = cggcc.$cast(cggdc.$getRelatedEventTarget(event_0));
      if (isNotNull(related) && cggdc.$isOrHasChild(this.getElement(), related)) {
        return;
      }

      break;
  }
  cggedc.fireNativeEvent(event_0, this, this.getElement());
}
;
_.onDetach = function onDetach(){
  if (!this.isAttached()) {
    throw toJs(new jl.IllegalStateException_0("Should only call onDetach when the widget is attached to the browser's document"));
  }
  try {
    this.onUnload();
    cggels.fire_0(this, false);
  }
   finally {
    try {
      this.doDetachChildren();
    }
     finally {
      cgguc.setEventListener(this.getElement(), null);
      this.attached = false;
    }
  }
}
;
_.onLoad_0 = function onLoad_1(){
}
;
_.onUnload = function onUnload(){
}
;
_.removeFromParent = function removeFromParent(){
  if (isNull(this.parent_1)) {
    if (cggucu.isInDetachList(this)) {
      cggucu.detachNow(this);
    }
  }
   else if (instanceOf(this.parent_1, 55)) {
    castTo(this.parent_1, 55).remove_0(this);
  }
   else if (isNotNull(this.parent_1)) {
    throw toJs(new jl.IllegalStateException_0("This widget's parent does not implement HasWidgets"));
  }
}
;
_.replaceElement = function replaceElement_0(elem){
  if (this.isAttached()) {
    cgguc.setEventListener(this.getElement(), null);
  }
  getClassPrototype(31).replaceElement.call(this, elem);
  if (this.isAttached()) {
    cgguc.setEventListener(this.getElement(), this);
  }
}
;
_.setParent = function setParent(parent_0){
  var oldParent;
  oldParent = this.parent_1;
  if (isNull(parent_0)) {
    try {
      if (isNotNull(oldParent) && oldParent.isAttached()) {
        this.onDetach();
      }
    }
     finally {
      this.parent_1 = null;
    }
  }
   else {
    if (isNotNull(oldParent)) {
      throw toJs(new jl.IllegalStateException_0('Cannot set a new parent without first clearing the old parent'));
    }
    this.parent_1 = parent_0;
    if (parent_0.isAttached()) {
      this.onAttach();
    }
  }
}
;
_.sinkEvents = function sinkEvents_0(eventBitsToAdd){
  if (this.isOrWasAttached()) {
    getClassPrototype(31).sinkEvents.call(this, eventBitsToAdd);
  }
   else {
    this.eventsToSink |= eventBitsToAdd;
  }
}
;
_.attached = false;
_.eventsToSink = 0;
cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Widget', 22, cggl.Lcom_google_gwt_user_client_ui_UIObject_2_classLit);
cggucu.$clinit_HasWidgets = function $clinit_HasWidgets(){
  cggucu.$clinit_HasWidgets = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasWidgets_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasWidgets');
cggucu.$clinit_HasWidgets$ForIsWidget = function $clinit_HasWidgets$ForIsWidget(){
  cggucu.$clinit_HasWidgets$ForIsWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasWidgets$ForIsWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasWidgets/ForIsWidget');
cggucu.$clinit_Panel = function $clinit_Panel(){
  cggucu.$clinit_Panel = emptyMethod;
  cggucu.$clinit_Widget();
  jl.$clinit_Iterable();
}
;
cggucu.Panel = function Panel(){
  cggucu.$clinit_Panel();
  cggucu.Widget.call(this);
  this.$init_211();
}
;
defineClass(278, 22, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_211 = function $init_211(){
}
;
_.forEach_0 = function forEach_1(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_2(){
  return jl.$spliterator(this);
}
;
_.add_8 = function add_15(child){
  throw toJs(new jl.UnsupportedOperationException_0('This panel does not support no-arg add()'));
}
;
_.adopt = function adopt(child){
  child.setParent(this);
}
;
_.clear_0 = function clear_8(){
  var it;
  it = this.iterator();
  while (it.hasNext_0()) {
    it.next_3();
    it.remove_4();
  }
}
;
_.doAttachChildren = function doAttachChildren_0(){
  cggucu.tryCommand(this, (cggucu.$clinit_AttachDetachException() , cggucu.attachCommand));
}
;
_.doDetachChildren = function doDetachChildren_0(){
  cggucu.tryCommand(this, (cggucu.$clinit_AttachDetachException() , cggucu.detachCommand));
}
;
_.orphan = function orphan(child){
  child.setParent(null);
}
;
cggl.Lcom_google_gwt_user_client_ui_Panel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Panel', 278, cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit);
cggucu.$clinit_AcceptsOneWidget = function $clinit_AcceptsOneWidget(){
  cggucu.$clinit_AcceptsOneWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_AcceptsOneWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'AcceptsOneWidget');
cggucu.$clinit_HasOneWidget = function $clinit_HasOneWidget(){
  cggucu.$clinit_HasOneWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasOneWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasOneWidget');
cggucu.$clinit_SimplePanel = function $clinit_SimplePanel(){
  cggucu.$clinit_SimplePanel = emptyMethod;
  cggucu.$clinit_Panel();
}
;
cggucu.SimplePanel = function SimplePanel(){
  cggucu.$clinit_SimplePanel();
  cggucu.SimplePanel_0.call(this, cgguc.createDiv());
}
;
cggucu.SimplePanel_0 = function SimplePanel_0(elem){
  cggucu.$clinit_SimplePanel();
  cggucu.Panel.call(this);
  this.$init_212();
  this.setElement(elem);
}
;
defineClass(138, 278, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_212 = function $init_212(){
}
;
_.add_8 = function add_16(w){
  if (isNotNull(this.getWidget())) {
    throw toJs(new jl.IllegalStateException_0('SimplePanel can only contain one child widget'));
  }
  this.setWidget(w);
}
;
_.getContainerElement = function getContainerElement(){
  return this.getElement();
}
;
_.getWidget = function getWidget(){
  return this.widget;
}
;
_.iterator = function iterator_1(){
  return new cggucu.SimplePanel$1(this);
}
;
_.remove_0 = function remove_4(w){
  if (jsNotEquals(this.widget, w)) {
    return false;
  }
  try {
    this.orphan(w);
  }
   finally {
    cggdc.$removeChild(this.getContainerElement(), w.getElement());
    this.widget = null;
  }
  return true;
}
;
_.setWidget = function setWidget(w){
  if (jsEquals(w, this.widget)) {
    return;
  }
  if (isNotNull(w)) {
    w.removeFromParent();
  }
  if (isNotNull(this.widget)) {
    this.remove_0(this.widget);
  }
  this.widget = w;
  if (isNotNull(w)) {
    cgguc.appendChild(this.getContainerElement(), this.widget.getElement());
    this.adopt(w);
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_SimplePanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'SimplePanel', 138, cggl.Lcom_google_gwt_user_client_ui_Panel_2_classLit);
cggucu.$clinit_SourcesPopupEvents = function $clinit_SourcesPopupEvents(){
  cggucu.$clinit_SourcesPopupEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesPopupEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesPopupEvents');
cgguc.$clinit_EventPreview = function $clinit_EventPreview(){
  cgguc.$clinit_EventPreview = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_EventPreview_2_classLit = createForInterface('com.google.gwt.user.client', 'EventPreview');
cggucu.$clinit_HasAnimation = function $clinit_HasAnimation(){
  cggucu.$clinit_HasAnimation = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasAnimation_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasAnimation');
cggels.$clinit_HasCloseHandlers = function $clinit_HasCloseHandlers(){
  cggels.$clinit_HasCloseHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_HasCloseHandlers_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'HasCloseHandlers');
cggucu.$clinit_PopupPanel = function $clinit_PopupPanel(){
  cggucu.$clinit_PopupPanel = emptyMethod;
  cggucu.$clinit_SimplePanel();
  cggucu.impl_0 = castTo(new cggucui.PopupImpl, 299);
}
;
cggucu.PopupPanel = function PopupPanel(){
  cggucu.SimplePanel.call(this);
  this.$init_213();
  cggdc.$appendChild(getClassPrototype(138).getContainerElement.call(this), cggucu.impl_0.createElement_4());
  this.setPopupPosition(0, 0);
  this.setStyleName('gwt-PopupPanel');
  cggucu.setStyleName(this.getContainerElement(), 'popupContent');
}
;
cggucu.PopupPanel_0 = function PopupPanel_0(autoHide){
  cggucu.$clinit_PopupPanel();
  cggucu.PopupPanel.call(this);
  this.autoHide = autoHide;
  this.autoHideOnHistoryEvents = autoHide;
}
;
cggucu.PopupPanel_1 = function PopupPanel_1(autoHide, modal){
  cggucu.$clinit_PopupPanel();
  cggucu.PopupPanel_0.call(this, autoHide);
  this.modal = modal;
}
;
defineClass(142, 138, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_213 = function $init_213(){
  this.glassResizer = new cggucu.PopupPanel$1(this);
  this.animType = (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.CENTER_1);
  this.glassStyleName = 'gwt-PopupPanelGlass';
  this.isAnimationEnabled = false;
  this.leftPosition = -1;
  this.resizeAnimation = new cggucu.PopupPanel$ResizeAnimation(this);
  this.topPosition = -1;
}
;
_.blur_0 = function blur_0(elt){
  if (elt.blur && elt != $doc.body) {
    elt.blur();
  }
}
;
_.eventTargetsPartner = function eventTargetsPartner(event_0){
  var elem, elem$iterator, target;
  if (isNull(this.autoHidePartners)) {
    return false;
  }
  target = cggdc.$getEventTarget(event_0);
  if (cggdc.is_1(target)) {
    for (elem$iterator = this.autoHidePartners.iterator(); elem$iterator.hasNext_0();) {
      elem = castToJso(elem$iterator.next_3());
      if (cggdc.$isOrHasChild(elem, cggdc.as(target))) {
        return true;
      }
    }
  }
  return false;
}
;
_.eventTargetsPopup = function eventTargetsPopup(event_0){
  var target;
  target = cggdc.$getEventTarget(event_0);
  if (cggdc.is_1(target)) {
    return cggdc.$isOrHasChild(this.getElement(), cggdc.as(target));
  }
  return false;
}
;
_.getContainerElement = function getContainerElement_0(){
  return cggcc.$cast(cggucu.impl_0.getContainerElement_0(this.getPopupImplElement()));
}
;
_.getOffsetHeight = function getOffsetHeight_0(){
  return getClassPrototype(31).getOffsetHeight.call(this);
}
;
_.getOffsetWidth = function getOffsetWidth_0(){
  return getClassPrototype(31).getOffsetWidth.call(this);
}
;
_.getPopupImplElement = function getPopupImplElement(){
  return cgguc.getFirstChild(getClassPrototype(138).getContainerElement.call(this));
}
;
_.getStyleElement = function getStyleElement_0(){
  return cggcc.$cast(cggucu.impl_0.getStyleElement_0(this.getPopupImplElement()));
}
;
_.hide = function hide(){
  this.hide_0(false);
}
;
_.hide_0 = function hide_0(autoClosed){
  if (!this.isShowing()) {
    return;
  }
  this.resizeAnimation.setState_0(false, false);
  cggels.fire_2(this, this, autoClosed);
}
;
_.isShowing = function isShowing(){
  return this.showing;
}
;
_.maybeUpdateSize = function maybeUpdateSize(){
  var w;
  w = getClassPrototype(138).getWidget.call(this);
  if (isNotNull(w)) {
    if (jsNotEquals(this.desiredHeight, null)) {
      w.setHeight(this.desiredHeight);
    }
    if (jsNotEquals(this.desiredWidth, null)) {
      w.setWidth(this.desiredWidth);
    }
  }
}
;
_.onEventPreview = function onEventPreview(event_0){
  return true;
}
;
_.onKeyDownPreview = function onKeyDownPreview(key, modifiers){
  return true;
}
;
_.onKeyPressPreview = function onKeyPressPreview(key, modifiers){
  return true;
}
;
_.onKeyUpPreview = function onKeyUpPreview(key, modifiers){
  return true;
}
;
_.onPreviewNativeEvent = function onPreviewNativeEvent(event_0){
  if (event_0.isFirstHandler_0() && !this.onEventPreview(cgguc.as_2(event_0.getNativeEvent()))) {
    event_0.cancel_0();
  }
}
;
_.onUnload = function onUnload_0(){
  getClassPrototype(22).onUnload.call(this);
  if (this.isShowing()) {
    this.resizeAnimation.setState_0(false, true);
  }
}
;
_.previewNativeEvent = function previewNativeEvent(event_0){
  cggucu.$clinit_PopupPanel();
  var eventTargetsPopupOrPartner, nativeEvent, target, type_0;
  if (event_0.isCanceled_0() || !this.previewAllNativeEvents && event_0.isConsumed_0()) {
    if (this.modal) {
      event_0.cancel_0();
    }
    return;
  }
  this.onPreviewNativeEvent(event_0);
  if (event_0.isCanceled_0()) {
    return;
  }
  nativeEvent = cgguc.as_2(event_0.getNativeEvent());
  eventTargetsPopupOrPartner = this.eventTargetsPopup(nativeEvent) || this.eventTargetsPartner(nativeEvent);
  if (eventTargetsPopupOrPartner) {
    event_0.consume();
  }
  if (this.modal) {
    event_0.cancel_0();
  }
  type_0 = cgguc.$getTypeInt(nativeEvent);
  switch (type_0) {
    case 128:
      {
        if (!this.onKeyDownPreview(narrow_char(cggdc.$getKeyCode(nativeEvent)), cggucu.getKeyboardModifiers(nativeEvent))) {
          event_0.cancel_0();
        }
        return;
      }

    case 512:
      {
        if (!this.onKeyUpPreview(narrow_char(cggdc.$getKeyCode(nativeEvent)), cggucu.getKeyboardModifiers(nativeEvent))) {
          event_0.cancel_0();
        }
        return;
      }

    case 256:
      {
        if (!this.onKeyPressPreview(narrow_char(cggdc.$getKeyCode(nativeEvent)), cggucu.getKeyboardModifiers(nativeEvent))) {
          event_0.cancel_0();
        }
        return;
      }

    case 4:
    case 1048576:
      if (isNotNull(cgguc.getCaptureElement())) {
        event_0.consume();
        return;
      }

      if (!eventTargetsPopupOrPartner && this.autoHide) {
        this.hide_0(true);
        return;
      }

      break;
    case 8:
    case 64:
    case 1:
    case 2:
    case 4194304:
      {
        if (isNotNull(cgguc.getCaptureElement())) {
          event_0.consume();
          return;
        }
        break;
      }

    case 2048:
      {
        target = cgguc.$getTarget(nativeEvent);
        if (this.modal && !eventTargetsPopupOrPartner && isNotNull(target)) {
          this.blur_0(target);
          event_0.cancel_0();
          return;
        }
        break;
      }

  }
}
;
_.setAnimationEnabled = function setAnimationEnabled(enable){
  this.isAnimationEnabled = enable;
}
;
_.setGlassEnabled = function setGlassEnabled(enabled){
  this.isGlassEnabled = enabled;
  if (enabled && isNull(this.glass)) {
    this.glass = cggdc.$createDivElement(cggdc.get_19());
    cggdc.$setClassName(this.glass, this.glassStyleName);
    cggdc.$setPosition(cggdc.$getStyle(this.glass), (cggdc.$clinit_Style$Position() , cggdc.ABSOLUTE));
    cggdc.$setLeft(cggdc.$getStyle(this.glass), 0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
    cggdc.$setTop(cggdc.$getStyle(this.glass), 0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
  }
}
;
_.setHeight = function setHeight_0(height){
  this.desiredHeight = height;
  this.maybeUpdateSize();
  if (jl.length__I__devirtual$_0(height) == 0) {
    this.desiredHeight = null;
  }
}
;
_.setModal = function setModal(modal){
  this.modal = modal;
}
;
_.setPopupPosition = function setPopupPosition(left, top_0){
  var elem;
  this.leftPosition = left;
  this.topPosition = top_0;
  left -= cggdc.$getBodyOffsetLeft(cggdc.get_19());
  top_0 -= cggdc.$getBodyOffsetTop(cggdc.get_19());
  elem = this.getElement();
  cggdc.$setPropertyPx(cggdc.$getStyle(elem), 'left', left);
  cggdc.$setPropertyPx(cggdc.$getStyle(elem), 'top', top_0);
}
;
_.setPopupPositionAndShow = function setPopupPositionAndShow(callback){
  this.setVisible(false);
  this.show();
  callback.setPosition(this.getOffsetWidth(), this.getOffsetHeight());
  this.setVisible(true);
}
;
_.setVisible = function setVisible_1(visible){
  cggdc.$setProperty_0(cggdc.$getStyle(this.getElement()), 'visibility', visible?'visible':'hidden');
  if (isNotNull(this.glass)) {
    cggdc.$setProperty_0(cggdc.$getStyle(this.glass), 'visibility', visible?'visible':'hidden');
  }
}
;
_.setWidget = function setWidget_0(w){
  getClassPrototype(138).setWidget.call(this, w);
  this.maybeUpdateSize();
}
;
_.setWidth = function setWidth_0(width_0){
  this.desiredWidth = width_0;
  this.maybeUpdateSize();
  if (jl.length__I__devirtual$_0(width_0) == 0) {
    this.desiredWidth = null;
  }
}
;
_.show = function show(){
  if (this.showing) {
    return;
  }
   else if (this.isAttached()) {
    this.removeFromParent();
  }
  this.resizeAnimation.setState_0(true, false);
}
;
_.updateHandlers = function updateHandlers(){
  cggucu.$clinit_PopupPanel();
  if (isNotNull(this.nativePreviewHandlerRegistration)) {
    this.nativePreviewHandlerRegistration.removeHandler();
    this.nativePreviewHandlerRegistration = null;
  }
  if (isNotNull(this.historyHandlerRegistration)) {
    this.historyHandlerRegistration.removeHandler();
    this.historyHandlerRegistration = null;
  }
  if (this.showing) {
    this.nativePreviewHandlerRegistration = cgguc.addNativePreviewHandler(new cggucu.PopupPanel$3(this));
    this.historyHandlerRegistration = cgguc.addValueChangeHandler(new cggucu.PopupPanel$4(this));
  }
}
;
_.autoHide = false;
_.autoHideOnHistoryEvents = false;
_.isAnimationEnabled = false;
_.isGlassEnabled = false;
_.leftPosition = 0;
_.modal = false;
_.previewAllNativeEvents = false;
_.showing = false;
_.topPosition = 0;
cggucu.ANIMATION_DURATION = 200;
cggucu.DEFAULT_STYLENAME = 'gwt-PopupPanel';
cggl.Lcom_google_gwt_user_client_ui_PopupPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel', 142, cggl.Lcom_google_gwt_user_client_ui_SimplePanel_2_classLit);
carggea.$clinit_AbstractESRPane = function $clinit_AbstractESRPane(){
  carggea.$clinit_AbstractESRPane = emptyMethod;
  cggucu.$clinit_PopupPanel();
}
;
carggea.AbstractESRPane = function AbstractESRPane(m, width_0, height){
  carggea.$clinit_AbstractESRPane();
  cggucu.PopupPanel_0.call(this, true);
  this.$init_214();
  this.model = m;
  this.canvas = cargge.createScaledCanvas(width_0, height);
  this.setWidget(this.canvas);
  this.canvas.addMouseDownHandler(new carggea.AbstractESRPane$1(this, height));
  this.canvas.addMouseUpHandler(new carggea.AbstractESRPane$2(this));
  cggdc.$setClassName(this.getElement(), 'ESRPane');
}
;
defineClass(380, 142, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_214 = function $init_214(){
}
;
_.draw_4 = function draw_5(toolBar){
  var context2d;
  context2d = toolBar.getContext2d_0();
  this.drawButtons_1(new carggv.GraphicsContext(context2d));
}
;
_.requestLayout_1 = function requestLayout_1(){
  this.draw_4(this.canvas);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractESRPane', 380, cggl.Lcom_google_gwt_user_client_ui_PopupPanel_2_classLit);
carggea.$clinit_AbstractESRPane$1 = function $clinit_AbstractESRPane$1(){
  carggea.$clinit_AbstractESRPane$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.AbstractESRPane$1 = function AbstractESRPane$1(this$0, val$height){
  carggea.$clinit_AbstractESRPane$1();
  this.this$01 = this$0;
  this.val$height2 = val$height;
  Object_0.call(this);
  this.$init_215();
}
;
defineClass(752, 1, {217:1, 21:1, 1:1}, carggea.AbstractESRPane$1);
_.$init_215 = function $init_215(){
}
;
_.onMouseDown = function onMouseDown_2(event_0){
  var row;
  row = round_int(event_0.getY_1() / (this.val$height2 / 3));
  if (row >= 0 && row < 3) {
    this.this$01.model.setESRType((this.this$01.model , carsge.esrTypeFromRow(row)));
  }
  this.this$01.onMouseButtonPressed();
  this.this$01.requestLayout_1();
}
;
_.val$height2 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractESRPane/1', 752, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_AbstractESRPane$2 = function $clinit_AbstractESRPane$2(){
  carggea.$clinit_AbstractESRPane$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.AbstractESRPane$2 = function AbstractESRPane$2(this$0){
  carggea.$clinit_AbstractESRPane$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_216();
}
;
defineClass(753, 1, {218:1, 21:1, 1:1}, carggea.AbstractESRPane$2);
_.$init_216 = function $init_216(){
}
;
_.onMouseUp = function onMouseUp_2(event_0){
  this.this$01.onMouseButtonReleased();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractESRPane/2', 753, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_Action = function $clinit_Action(){
  carsgea.$clinit_Action = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_Action_2_classLit = createForInterface('com.actelion.research.share.gui.editor.actions', 'Action');
carsgea.$clinit_DrawAction = function $clinit_DrawAction(){
  carsgea.$clinit_DrawAction = emptyMethod;
  jl.$clinit_Object();
}
;
carsgea.DrawAction = function DrawAction(m){
  carsgea.$clinit_DrawAction();
  Object_0.call(this);
  this.$init_217();
  this.model_0 = m;
}
;
defineClass(363, 1, {25:1, 1:1});
_.$init_217 = function $init_217(){
}
;
_.drawAtomHighlight = function drawAtomHighlight(ctx, mol, theAtom){
  this.drawAtomHighlightElement(ctx, mol, theAtom);
  if (this.model_0.getKeyStrokeBuffer().length_0() > 0) {
    this.drawAtomKeyStrokes(ctx, mol, theAtom);
  }
}
;
_.drawAtomHighlightElement = function drawAtomHighlightElement(ctx, mol, theAtom){
  var cfg, highlightPoint, radius;
  radius = round_int(0.3199999928474426 * mol.getAverageBondLength_0());
  if (radius < 5)
    radius = round_int(5);
  cfg = this.model_0.getGeomFactory().getDrawConfig();
  highlightPoint = new cargg.GenericPoint_0(mol.getAtomX_0(theAtom), mol.getAtomY_0(theAtom));
  ctx.save_0();
  ctx.setFill(cfg.getHighLightColor());
  ctx.fillElipse(highlightPoint.getX_0() - radius, highlightPoint.getY_0() - radius, 2 * radius, 2 * radius);
  ctx.restore_0();
}
;
_.drawAtomKeyStrokes = function drawAtomKeyStrokes(ctx, mol, theAtom){
  var cfg, highlightPoint, s, validity;
  s = this.model_0.getKeyStrokeBuffer().toString_0();
  validity = this.model_0.getAtomKeyStrokeValidity(s);
  highlightPoint = new cargg.GenericPoint_0(mol.getAtomX_0(theAtom), mol.getAtomY_0(theAtom));
  cfg = this.model_0.getGeomFactory().getDrawConfig();
  ctx.save_0();
  ctx.setFill(validity == 1?cfg.getForegroundColor():validity == 2?65535:validity == 3?2863311615:68451041535);
  if (validity == 4) {
    s = s + '<unknown>';
  }
  ctx.setFont(ctx.getFont(), 24, false);
  ctx.fillText_0(s, highlightPoint.getX_0(), highlightPoint.getY_0());
  ctx.restore_0();
}
;
_.drawBondHighlight = function drawBondHighlight(ctx, mol, theBond){
  var cfg, width_0, x1, x2, y1, y2;
  width_0 = round_int(0.3199999928474426 * mol.getAverageBondLength_0());
  if (width_0 < 5)
    width_0 = round_int(5);
  x1 = mol.getAtomX_0(mol.getBondAtom_0(0, theBond));
  y1 = mol.getAtomY_0(mol.getBondAtom_0(0, theBond));
  x2 = mol.getAtomX_0(mol.getBondAtom_0(1, theBond));
  y2 = mol.getAtomY_0(mol.getBondAtom_0(1, theBond));
  cfg = this.model_0.getGeomFactory().getDrawConfig();
  ctx.save_0();
  ctx.setLineWidth(width_0);
  ctx.setStroke(cfg.getHighLightColor());
  ctx.drawLine_0(x1, y1, x2, y2);
  ctx.restore_0();
}
;
_.getAtomAt = function getAtomAt(mol, pt){
  if (isNotNull(mol)) {
    return mol.findAtom_0(pt.getX_0(), pt.getY_0());
  }
  return -1;
}
;
_.getAtomAt_0 = function getAtomAt_0(pt){
  var mol;
  mol = this.model_0.getMoleculeAt(pt, false);
  return this.getAtomAt(mol, pt);
}
;
_.getBondAt = function getBondAt(mol, pt){
  if (isNotNull(mol)) {
    return mol.findBond_0(pt.getX_0(), pt.getY_0());
  }
  return -1;
}
;
_.getCursor = function getCursor(){
  return 0;
}
;
_.highlightAtom = function highlightAtom(mol, atom){
  this.model_0.setSelectedAtom(atom);
}
;
_.isCommand = function isCommand(){
  return false;
}
;
_.onActionEnter = function onActionEnter(){
}
;
_.onActionLeave = function onActionLeave(){
}
;
_.onCommand = function onCommand(){
}
;
_.onDoubleClick_0 = function onDoubleClick_0(ev){
  return false;
}
;
_.onKeyPressed_0 = function onKeyPressed_0(evt){
  return false;
}
;
_.suggestNewX2AndY2 = function suggestNewX2AndY2(atom){
  var angle, angleDiff, avbl, i, i0, i1, j, largestDiff, largestNo, mol, newAngle, temp;
  mol = this.model_0.getMolecule_0();
  mol.ensureHelperArrays_0(1);
  newAngle = 3.141592653589793 * 2 / 3;
  if (atom != -1) {
    angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 8 + 1, 15, 1);
    for (i0 = 0; i0 < mol.getAllConnAtoms_0(atom); i0++) {
      angle[i0] = mol.getBondAngle_0(atom, mol.getConnAtom_0(atom, i0));
    }
    if (mol.getAllConnAtoms_0(atom) == 0) {
      newAngle = 3.141592653589793 * 2 / 3;
    }
     else if (mol.getAllConnAtoms_0(atom) == 1) {
      if (angle[0] < -3.141592653589793 * 5 / 6) {
        newAngle = 3.141592653589793 / 3;
      }
       else if (angle[0] < -3.141592653589793 / 2) {
        newAngle = 3.141592653589793 * 2 / 3;
      }
       else if (angle[0] < -3.141592653589793 / 6) {
        newAngle = 3.141592653589793 / 3;
      }
       else if (angle[0] < 0) {
        newAngle = 3.141592653589793 * 2 / 3;
      }
       else if (angle[0] < 3.141592653589793 / 6) {
        newAngle = -3.141592653589793 * 2 / 3;
      }
       else if (angle[0] < 3.141592653589793 / 2) {
        newAngle = -3.141592653589793 / 3;
      }
       else if (angle[0] < 3.141592653589793 * 5 / 6) {
        newAngle = -3.141592653589793 * 2 / 3;
      }
       else {
        newAngle = -3.141592653589793 / 3;
      }
    }
     else {
      for (i1 = mol.getAllConnAtoms_0(atom) - 1; i1 > 0; i1--) {
        for (j = 0; j < i1; j++) {
          if (angle[j] > angle[j + 1]) {
            temp = angle[j];
            angle[j] = angle[j + 1];
            angle[j + 1] = temp;
          }
        }
      }
      angle[mol.getAllConnAtoms_0(atom)] = angle[0] + 3.141592653589793 * 2;
      largestNo = 0;
      largestDiff = 0;
      for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
        angleDiff = angle[i + 1] - angle[i];
        if (largestDiff < angleDiff) {
          largestDiff = angleDiff;
          largestNo = i;
        }
      }
      newAngle = (angle[largestNo] + angle[largestNo + 1]) / 2;
    }
  }
  avbl = mol.getAverageBondLength_0();
  return new cargg.GenericPoint_0(mol.getAtomX_0(atom) + avbl * $wnd.Math.sin(newAngle), mol.getAtomY_0(atom) + avbl * $wnd.Math.cos(newAngle));
}
;
carsgea.HIGHLIGHT_ATOM_RADIUS = 5;
carsgea.KEYSTROKEFONTSIZE = 24;
carsgea.MAX_CONNATOMS_0 = 8;
carsgea.UNKNOWN_0 = '<unknown>';
cggl.Lcom_actelion_research_share_gui_editor_actions_DrawAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'DrawAction', 363, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_AtomHighlightAction = function $clinit_AtomHighlightAction(){
  carsgea.$clinit_AtomHighlightAction = emptyMethod;
  carsgea.$clinit_DrawAction();
}
;
carsgea.AtomHighlightAction = function AtomHighlightAction(model){
  carsgea.$clinit_AtomHighlightAction();
  carsgea.DrawAction.call(this, model);
  this.$init_218();
}
;
defineClass(77, 363, {25:1, 1:1});
_.$init_218 = function $init_218(){
  this.lastHightlightPoint = null;
}
;
_.addChain = function addChain(mol, theAtom, chainAtoms){
  var atom1, atom2, hydrogenCount, i, pt;
  if (mol.getFreeValence_0(theAtom) > 0) {
    atom1 = theAtom;
    hydrogenCount = mol.getAllAtoms_0() - mol.getAtoms_0();
    for (i = 1; i < chainAtoms; i++) {
      pt = this.suggestNewX2AndY2(atom1);
      atom2 = mol.addAtom_0(pt.getX_0(), pt.getY_0());
      if (atom2 == -1) {
        break;
      }
      mol.addBond_0(atom1, atom2);
      atom1 = atom2 - hydrogenCount;
      mol.ensureHelperArrays_0(1);
    }
  }
}
;
_.expandAtomKeyStrokes = function expandAtomKeyStrokes(mol, highliteAtom, keyStrokes){
  var atom, atomicNo, dx, dy, firstAtomInFragment, firstAtomInMol, fragment, i, sourceAVBL, substituent, substituentAtoms;
  atomicNo = carc2.getAtomicNoFromLabel(keyStrokes);
  if (atomicNo != 0) {
    if (mol.changeAtom_0(highliteAtom, atomicNo, 0, -1, 0)) {
      this.model_0.changed_0();
      return;
    }
  }
  substituent = carc2.getSubstituent_0(keyStrokes);
  if (isNotNull(substituent)) {
    fragment = new carc2.StereoMolecule;
    fragment.addFragment_0(mol, highliteAtom, null);
    sourceAVBL = fragment.getAverageBondLength_0();
    firstAtomInFragment = fragment.getAllAtoms_0();
    for (atom = 0; atom < fragment.getAllAtoms_0(); atom++) {
      fragment.setAtomMarker_0(atom, true);
    }
    fragment.addSubstituent_0(substituent, 0);
    (new carcc3.CoordinateInventor_0(4)).invent(fragment);
    dx = mol.getAtomX_0(highliteAtom) - sourceAVBL * fragment.getAtomX_0(0);
    dy = mol.getAtomY_0(highliteAtom) - sourceAVBL * fragment.getAtomY_0(0);
    firstAtomInMol = mol.getAllAtoms_0();
    mol.addSubstituent_0(substituent, highliteAtom);
    substituentAtoms = mol.getAllAtoms_0() - firstAtomInMol;
    for (i = 0; i < substituentAtoms; i++) {
      mol.setAtomX_0(firstAtomInMol + i, sourceAVBL * fragment.getAtomX_0(firstAtomInFragment + i) + dx);
      mol.setAtomY_0(firstAtomInMol + i, sourceAVBL * fragment.getAtomY_0(firstAtomInFragment + i) + dy);
    }
    mol.setStereoBondsFromParity_0();
    this.model_0.changed_0();
  }
}
;
_.findAtom_1 = function findAtom_0(mol, pt){
  var atom, avbl, distanceSquare, foundAtom, foundDistanceSquare, mAllAtoms, maxDistanceSquare, pickx, picky, x_0, y_0;
  foundAtom = -1;
  pickx = pt.getX_0();
  picky = pt.getY_0();
  avbl = mol.getAverageBondLength_0();
  foundDistanceSquare = 3.4028234663852886E38;
  maxDistanceSquare = avbl * avbl / (avbl / 3);
  mAllAtoms = mol.getAllAtoms_0();
  for (atom = 0; atom < mAllAtoms; atom++) {
    x_0 = mol.getAtomX_0(atom);
    y_0 = mol.getAtomY_0(atom);
    distanceSquare = (pickx - x_0) * (pickx - x_0) + (picky - y_0) * (picky - y_0);
    if (distanceSquare < maxDistanceSquare && distanceSquare < foundDistanceSquare) {
      foundDistanceSquare = distanceSquare;
      foundAtom = atom;
    }
  }
  return foundAtom;
}
;
_.handleCharacter = function handleCharacter(mol, theAtom, evt){
  var c, code_0, factory, isFirst, keyStrokeBuffer;
  factory = this.model_0.getGeomFactory();
  keyStrokeBuffer = this.model_0.getKeyStrokeBuffer();
  isFirst = keyStrokeBuffer.length_0() == 0;
  code_0 = evt.getText();
  c = jsNotEquals(code_0, null) && jl.length__I__devirtual$_0(code_0) > 0?jl.charAt_I_C__devirtual$_0(code_0, 0):0;
  if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getDeleteKey())) {
    return this.removeAtoms(mol, theAtom);
  }
   else if (!isFirst && jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getEscapeKey())) {
    keyStrokeBuffer.setLength(0);
    return true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getBackSpaceKey())) {
    if (isFirst)
      return this.removeAtoms(mol, theAtom);
    else 
      keyStrokeBuffer.setLength(keyStrokeBuffer.length_0() - 1);
    return true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getEnterKey())) {
    this.expandAtomKeyStrokes(mol, theAtom, keyStrokeBuffer.toString_0());
    keyStrokeBuffer.setLength(0);
    return true;
  }
   else if (isFirst && c > 48 && c <= 57) {
    this.addChain(mol, theAtom, c - 47);
    return true;
  }
   else if (c > 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 48 && c <= 57 || c == 45) {
    keyStrokeBuffer.append_4(c);
    return true;
  }
  return false;
}
;
_.handleCharacter_0 = function handleCharacter_0(evt){
  var c, code_0, isFirst, keyStrokeBuffer, mol, newRadical, theAtom;
  theAtom = this.model_0.getSelectedAtom();
  mol = this.model_0.getMolecule_0();
  keyStrokeBuffer = this.model_0.getKeyStrokeBuffer();
  if (isNull(mol)) {
    return false;
  }
  code_0 = evt.getText();
  if (theAtom != -1) {
    c = jsNotEquals(code_0, null) && jl.length__I__devirtual$_0(code_0) > 0?jl.charAt_I_C__devirtual$_0(code_0, 0):0;
    isFirst = keyStrokeBuffer.length_0() == 0;
    if (isFirst) {
      switch (c) {
        case 43:
        case 45:
          return mol.changeAtomCharge_0(theAtom, c == 43);
        case 46:
          newRadical = mol.getAtomRadical_0(theAtom) == 32?0:32;
          mol.setAtomRadical_0(theAtom, newRadical);
          return true;
        case 58:
          newRadical = mol.getAtomRadical_0(theAtom) == 48?16:mol.getAtomRadical_0(theAtom) == 16?0:48;
          mol.setAtomRadical_0(theAtom, newRadical);
          return true;
        case 113:
          return mol.isFragment_0()?this.showAtomQFDialog(theAtom):false;
        case 63:
          return mol.changeAtom_0(theAtom, 0, 0, -1, 0);
        default:break;
      }
    }
    return this.handleCharacter(mol, theAtom, evt);
  }
   else {
    return this.handleCharsNonSelected(code_0);
  }
}
;
_.handleCharsNonSelected = function handleCharsNonSelected(code_0){
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('h', code_0)) {
    this.model_0.flip_0(true);
    return true;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('v', code_0)) {
    this.model_0.flip_0(false);
    return true;
  }
  return false;
}
;
_.onKeyPressed_0 = function onKeyPressed_1(evt){
  var factory, m, mol, theAtom, update;
  factory = this.model_0.getGeomFactory();
  if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getDeleteKey())) {
    theAtom = this.model_0.getSelectedAtom();
    mol = this.model_0.getMolecule_0();
    if (theAtom != -1) {
      mol.deleteAtom_0(theAtom);
      this.setHighlightAtom(mol, -1);
      return true;
    }
     else {
      update = false;
      m = this.model_0.getMolecule_0();
      if (m.deleteSelectedAtoms_0()) {
        update = true;
      }
      return update;
    }
  }
   else if (this.handleCharacter_0(evt)) {
    return true;
  }
  return false;
}
;
_.onMouseDown_0 = function onMouseDown_3(evt){
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_2(evt, drag){
  var ok, pt;
  if (!drag) {
    pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
    ok = this.trackHighLight(pt);
    return ok;
  }
   else {
    return false;
  }
}
;
_.paint_0 = function paint_1(_ctx){
  var mol, ok, theAtom;
  ok = false;
  theAtom = this.model_0.getSelectedAtom();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    if (theAtom != -1) {
      this.drawAtomHighlight(_ctx, mol, theAtom);
      ok = true;
    }
  }
  return ok;
}
;
_.removeAtoms = function removeAtoms(mol, theAtom){
  if (theAtom != -1) {
    mol.deleteAtom_0(theAtom);
    this.setHighlightAtom(mol, -1);
    return true;
  }
   else {
    if (mol.deleteSelectedAtoms_0()) {
      return true;
    }
  }
  return false;
}
;
_.setHighlightAtom = function setHighlightAtom(mol, atom){
  this.model_0.setSelectedAtom(atom);
}
;
_.showAtomQFDialog = function showAtomQFDialog(atom){
  var dlg, factory, mol, showReactionHints;
  factory = this.model_0.getGeomFactory();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    showReactionHints = (this.model_0.getMode() & 4) != 0;
    dlg = factory.createAtomQueryFeatureDialog(mol, atom, showReactionHints);
    dlg.setResultHandler(new carsgea.AtomHighlightAction$1(this));
    return jsEquals(dlg.doModalAt(this.lastHightlightPoint.getX_0(), this.lastHightlightPoint.getY_0()), (carsg.$clinit_DialogResult() , carsg.IDOK));
  }
  return false;
}
;
_.trackHighLight = function trackHighLight(pt){
  var atom, currentAtom, currentMol, keyStrokes, mol, ok;
  mol = this.model_0.getMolecule_0();
  currentAtom = this.model_0.getSelectedAtom();
  atom = this.findAtom_1(mol, pt);
  ok = atom != -1;
  this.lastHightlightPoint = pt;
  keyStrokes = this.model_0.getKeyStrokeBuffer().toString_0();
  if (currentAtom != -1 && atom != currentAtom) {
    if (jl.length__I__devirtual$_0(keyStrokes) > 0) {
      currentMol = this.model_0.getMolecule_0();
      this.expandAtomKeyStrokes(currentMol, currentAtom, keyStrokes);
      this.model_0.getKeyStrokeBuffer().setLength(0);
    }
  }
  if (isNotNull(mol)) {
    this.setHighlightAtom(mol, atom);
  }
   else {
    if (this.model_0.getSelectedAtom() != -1) {
      this.model_0.getKeyStrokeBuffer().setLength(0);
      ok = true;
    }
  }
  atom = this.model_0.getSelectedAtom();
  ok = ok | atom != -1;
  return ok;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'AtomHighlightAction', 77, cggl.Lcom_actelion_research_share_gui_editor_actions_DrawAction_2_classLit);
carsgea.$clinit_BondHighlightAction = function $clinit_BondHighlightAction(){
  carsgea.$clinit_BondHighlightAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.BondHighlightAction = function BondHighlightAction(model){
  carsgea.$clinit_BondHighlightAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_219();
}
;
defineClass(96, 77, {25:1, 1:1});
_.$init_219 = function $init_219(){
  this.origin_0 = null;
  this.last = null;
  this.dragging = false;
}
;
_.handleCharacter_1 = function handleCharacter_1(code_0){
  var c, mol, theBond;
  mol = this.model_0.getMolecule_0();
  theBond = this.model_0.getSelectedBond();
  if (isNotNull(mol) && theBond != -1) {
    if (jsNotEquals(code_0, null) && jl.length__I__devirtual$_0(code_0) > 0) {
      c = jl.charAt_I_C__devirtual$_0(code_0, 0);
      switch (c) {
        case 113:
          return mol.isFragment_0()?this.showBondQFDialog(theBond):false;
        case 52:
        case 53:
        case 54:
        case 55:
          return mol.addRingToBond_0(theBond, c - 48, false, carc2.getDefaultAverageBondLength());
        case 98:
          return mol.addRingToBond_0(theBond, 6, true, carc2.getDefaultAverageBondLength());
        case 49:
          return mol.changeBond_0(theBond, 1);
        case 50:
          return mol.changeBond_0(theBond, 2);
        case 51:
          return mol.changeBond_0(theBond, 4);
        case 117:
          return mol.changeBond_0(theBond, 257);
        case 100:
          return mol.changeBond_0(theBond, 129);
        case 99:
          return mol.changeBond_0(theBond, 386);
        case 109:
          return mol.changeBond_0(theBond, 32);
      }
    }
  }
  return false;
}
;
_.onDrag = function onDrag(pt){
  var dx, dy;
  dx = $wnd.Math.abs(pt.getX_0() - this.origin_0.getX_0());
  dy = $wnd.Math.abs(pt.getY_0() - this.origin_0.getY_0());
  if (dx > 5 || dy > 5) {
    this.trackHighLight(pt);
    this.last = pt;
  }
   else {
    this.last = null;
  }
  return true;
}
;
_.onKeyPressed_0 = function onKeyPressed_2(evt){
  var factory, mol, theBond;
  theBond = this.model_0.getSelectedBond();
  factory = this.model_0.getGeomFactory();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getDeleteKey()) || jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), factory.getBackSpaceKey())) {
      if (theBond != -1) {
        mol.deleteBondAndSurrounding_0(theBond);
        this.setHighlightBond(mol, -1);
        return true;
      }
    }
     else {
      if (this.handleCharacter_1(evt.getText())) {
        return true;
      }
    }
  }
  return getClassPrototype(77).onKeyPressed_0.call(this, evt);
}
;
_.onMouseDown_0 = function onMouseDown_4(evt){
  var pt;
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  this.origin_0 = pt;
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_3(evt, drag){
  var pt;
  this.dragging = drag;
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  if (!drag) {
    return this.trackHighLight(pt);
  }
   else {
    return this.onDrag(pt);
  }
}
;
_.paint_0 = function paint_2(_ctx){
  var mol, ok, theAtom, theBond;
  mol = this.model_0.getMolecule_0();
  ok = false;
  if (isNotNull(mol)) {
    theAtom = this.model_0.getSelectedAtom();
    theBond = this.model_0.getSelectedBond();
    if (theBond != -1) {
      this.drawBondHighlight(_ctx, mol, theBond);
      ok = true;
    }
     else if (theAtom != -1) {
      return getClassPrototype(77).paint_0.call(this, _ctx);
    }
  }
  return ok;
}
;
_.setHighlightBond = function setHighlightBond(mol, bond){
  this.model_0.setSelectedBond(bond);
}
;
_.showBondQFDialog = function showBondQFDialog(bond){
  var dlg, factory, mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    factory = this.model_0.getGeomFactory();
    dlg = factory.createBondFeaturesDialog(mol, bond);
    dlg.setResultHandler(new carsgea.BondHighlightAction$1(this));
    return jsEquals(dlg.doModalAt(this.lastHightlightPoint.getX_0(), this.lastHightlightPoint.getY_0()), (carsg.$clinit_DialogResult() , carsg.IDOK));
  }
  return false;
}
;
_.trackHighLight = function trackHighLight_0(pt){
  var bond, lastAtom, lastBond, mol, update;
  lastAtom = this.model_0.getSelectedAtom();
  lastBond = this.model_0.getSelectedBond();
  this.lastHightlightPoint = pt;
  mol = this.model_0.getMoleculeAt(pt, true);
  if (getClassPrototype(77).trackHighLight.call(this, pt)) {
    this.setHighlightBond(null, -1);
    return true;
  }
  bond = this.getBondAt(mol, pt);
  if (bond >= 0) {
    this.setHighlightBond(mol, bond);
    this.setHighlightAtom(mol, -1);
    return true;
  }
  update = lastAtom != -1 || lastBond != bond;
  this.setHighlightBond(null, -1);
  this.setHighlightAtom(null, -1);
  return update;
}
;
_.dragging = false;
cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'BondHighlightAction', 96, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carggea.$clinit_AbstractTypeAction = function $clinit_AbstractTypeAction(){
  carggea.$clinit_AbstractTypeAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carggea.AbstractTypeAction = function AbstractTypeAction(model, scale){
  carggea.$clinit_AbstractTypeAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_220();
  this.scale_1 = scale;
}
;
defineClass(368, 96, {122:1, 25:1, 1:1});
_.$init_220 = function $init_220(){
  this.popup = null;
  this.scale_1 = 1;
}
;
_.createPopup_0 = function createPopup_0(parent_0, pt, row){
  if (isNull(this.popup) || !this.popup.isShowing()) {
    this.popup = this.createPane();
    this.popup.setModal(true);
    this.popup.setPopupPositionAndShow(new carggea.AbstractTypeAction$1(this, parent_0));
  }
}
;
_.getESRAtom = function getESRAtom(stereoBond){
  var atom, connAtom, i, mMol;
  mMol = this.model_0.getMolecule_0();
  if (isNotNull(mMol)) {
    atom = mMol.getBondAtom_0(0, stereoBond);
    if (mMol.getAtomParity_0(atom) != 0) {
      return mMol.isAtomParityPseudo_0(atom) || mMol.getAtomParity_0(atom) != 1 && mMol.getAtomParity_0(atom) != 2?-1:atom;
    }
    if (mMol.getAtomPi_0(atom) == 1) {
      for (i = 0; i < mMol.getConnAtoms_0(atom); i++) {
        if (mMol.getConnBondOrder_0(atom, i) == 2) {
          connAtom = mMol.getConnAtom_0(atom, i);
          if (mMol.getAtomPi_0(connAtom) == 2 && (mMol.getAtomParity_0(connAtom) == 1 || mMol.getAtomParity_0(connAtom) == 2))
            return connAtom;
        }
      }
    }
  }
  return -1;
}
;
_.getESRBond = function getESRBond(stereoBond){
  var bond, mMol;
  bond = -1;
  mMol = this.model_0.getMolecule_0();
  if (isNotNull(mMol)) {
    bond = mMol.findBINAPChiralityBond_0(mMol.getBondAtom_0(0, stereoBond));
    if (bond != -1 && mMol.getBondParity_0(bond) != 1 && mMol.getBondParity_0(bond) != 2)
      bond = -1;
  }
  return bond;
}
;
_.onButtonPressed = function onButtonPressed(parent_0, pt){
  this.createPopup_0(parent_0, pt, 0);
}
;
_.onButtonReleased = function onButtonReleased(parent_0, pt){
}
;
_.onMouseUp_0 = function onMouseUp_3(evt){
  var theBond;
  this.model_0.pushUndo();
  theBond = this.model_0.getSelectedBond();
  if (theBond != -1) {
    this.setESRInfo(theBond, this.model_0.getESRType_0());
    return true;
  }
  return false;
}
;
_.setESRInfo = function setESRInfo(stereoBond, type_0){
  var a, atom, b, bond, group, grp, i, i0, i1, i2, mMol, maxGroup, selectedShareOneGroup;
  group = -1;
  mMol = this.model_0.getMolecule_0();
  if (isNotNull(mMol)) {
    atom = this.getESRAtom(stereoBond);
    bond = atom == -1?this.getESRBond(stereoBond):-1;
    if (type_0 != 0) {
      maxGroup = -1;
      for (i0 = 0; i0 < mMol.getAtoms_0(); i0++) {
        if (i0 != atom && mMol.getAtomESRType_0(i0) == type_0 && (!mMol.isSelectedBond_0(stereoBond) || !mMol.isSelectedAtom_0(i0))) {
          grp = mMol.getAtomESRGroup_0(i0);
          if (maxGroup < grp)
            maxGroup = grp;
        }
      }
      for (i1 = 0; i1 < mMol.getBonds_0(); i1++) {
        if (i1 != bond && mMol.getBondESRType_0(i1) == type_0 && (!mMol.isSelectedBond_0(stereoBond) || !mMol.isSelectedBond_0(i1))) {
          grp = mMol.getBondESRGroup_0(i1);
          if (maxGroup < grp)
            maxGroup = grp;
        }
      }
      if ((atom == -1?bond != -1?mMol.getBondESRType_0(bond):0:mMol.getAtomESRType_0(atom)) != type_0) {
        group = $wnd.Math.min(maxGroup + 1, 32 - 1);
      }
       else {
        group = atom == -1?mMol.getBondESRGroup_0(bond):mMol.getAtomESRGroup_0(atom);
        if (mMol.isSelectedBond_0(stereoBond)) {
          selectedShareOneGroup = true;
          for (i2 = 0; i2 < mMol.getAtoms_0(); i2++) {
            if (i2 != atom && mMol.isSelectedAtom_0(i2) && mMol.getAtomESRType_0(i2) == type_0 && mMol.getAtomESRGroup_0(i2) != group) {
              selectedShareOneGroup = false;
              break;
            }
          }
          for (i = 0; i < mMol.getBonds_0(); i++) {
            if (i != bond && mMol.isSelectedBond_0(i) && mMol.getBondESRType_0(i) == type_0 && mMol.getBondESRGroup_0(i) != group) {
              selectedShareOneGroup = false;
              break;
            }
          }
          if (selectedShareOneGroup) {
            if (group <= maxGroup) {
              group++;
              if (group == 32)
                group = 0;
            }
             else {
              group = 0;
            }
          }
        }
         else {
          if (group <= maxGroup) {
            group++;
            if (group == 32)
              group = 0;
          }
           else {
            group = 0;
          }
        }
      }
    }
    if (mMol.isSelectedBond_0(stereoBond)) {
      for (i = 0; i < mMol.getBonds_0(); i++) {
        if (mMol.isSelectedBond_0(i) && mMol.isStereoBond_0(i)) {
          a = this.getESRAtom(i);
          b = this.getESRBond(i);
          if (a != -1)
            mMol.setAtomESR_0(a, type_0, group);
          else if (b != -1)
            mMol.setBondESR_0(b, type_0, group);
        }
      }
    }
     else {
      if (atom != -1)
        mMol.setAtomESR_0(atom, type_0, group);
      else if (bond != -1)
        mMol.setBondESR_0(bond, type_0, group);
    }
  }
}
;
_.scale_1 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractTypeAction_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractTypeAction', 368, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
cggucu.$clinit_PopupPanel$PositionCallback = function $clinit_PopupPanel$PositionCallback(){
  cggucu.$clinit_PopupPanel$PositionCallback = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$PositionCallback_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'PopupPanel/PositionCallback');
carggea.$clinit_AbstractTypeAction$1 = function $clinit_AbstractTypeAction$1(){
  carggea.$clinit_AbstractTypeAction$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.AbstractTypeAction$1 = function AbstractTypeAction$1(this$0, val$parent){
  carggea.$clinit_AbstractTypeAction$1();
  this.this$01 = this$0;
  this.val$parent2 = val$parent;
  Object_0.call(this);
  this.$init_221();
}
;
defineClass(731, 1, {1:1}, carggea.AbstractTypeAction$1);
_.$init_221 = function $init_221(){
}
;
_.setPosition = function setPosition(offsetWidth, offsetHeight){
  var left, top_0;
  left = castTo(this.val$parent2.getNative(), 22).getAbsoluteLeft() + round_int(45);
  top_0 = castTo(this.val$parent2.getNative(), 22).getAbsoluteTop() + round_int(360 * this.this$01.scale_1 / 17 * 3);
  this.this$01.popup.setPopupPosition(left, top_0);
  this.this$01.popup.requestLayout_1();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractTypeAction$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'AbstractTypeAction/1', 731, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_ESRPane = function $clinit_ESRPane(){
  carggea.$clinit_ESRPane = emptyMethod;
  carggea.$clinit_AbstractESRPane();
  carggea.ESR_BUTTON_UP = new cggucu.Image_1('data:image/gif;base64,R0lGODlhHABGANUAAISChPLx8ubl5uDf4NLR0s/OzwAA//Hx8tHR0svLzMXFxuvs7OXm5t/g4MvMzAD/APf49+vs6+Xm5dfY18vMy/j49/Ly8enp6ODg38bGxdbTzv8AAPj39+zr68bFxcC/v/////39/fr6+vf39/T09PHx8e7u7uzs7Obm5uPj4+Dg4N3d3dra2tfX19TU1NHR0czMzMvLy8nJycbGxsPDw8DAwL29vbq6uqqqqiEhIQAAAAAAAAAAAAAAAAAAAAAAACwAAAAAHABGAAAG/0CQcEgsGo0AkGbJbDqfzqQGQK1ar1iqUgrIeb/gsFi33eZAp7R6zV6Tp+bTzfahzWSUAsLVYq02KQIXEThvXDknNjU0GTIxBS98fhuUFwsmhWVTiIsKjpCSf5SUJhaZcJsnNJ4OeqEqo6Mkp4cnHp+RE36wsaO0cTIwrn0rDb2jIr+pCQUEoQPHlCIhyl0nw34DKccc0yDViLl+GNu9I97fhnGv5bHdIUPgJ8Qq5To6GyTn8PHqqbspJFC6pw9dP03Wit27t2GhDngO0yFEVI9BQx0H7omIeBCVtRQoHJK4F+IeiIVC5Am4Z+IeBJMmhZiUd8Ghjo0oOco7YeIACf8IBo9I9IgIh9GjSJMi9ddFjFOnTM+0mdomqhw6dvBgW2Eg0CB5ihjhCmWgrCVMVjuNJVa2bSl5q2S02kOvbdtZVm89ErdChV278oJtbfC3bTKrzJwRG1C47DR5W7UVfje0Fl9yhfeltMpuskF59FL8Lchv88QTACXYJV1EXrFAq1GenGm1YlufJGGSqRwH5IWyAfTpnm2a6AlBHUyU+ImTeEyaPJdX8Cb7uVWePoGWFipPqXelUZ+K/xIVDdXzJ6zOqXMnD10/D7wSshq20d5QD/Kflaf2PrH8AL5lVVxzvQIggHidphcouvR14IGBCfNeMQ8CeNhpiT1TYX6PWRVvWQoVUibPZSA+qBlvqbAT4mdWhfbgSLKhaE1qB8JY0m4yIvKaADUCFWOOJ1QEoE/n/Aikb/kFVyQZNgGJnHLM3SiTdaddEB0J0/FjE22nYRelUB3V8t2YRjG15Zlo+gPmmkWgAsWbcMKRxZx0VhEEADs=');
  carggea.ESR_BUTTON_DOWN = new cggucu.Image_1('data:image/gif;base64,R0lGODlhHABGANUAAISChH59fnt6e3h3eHRzdMTDxLi3uJiXmAAAw3d3eLe3uKamp5eXmI+PkIaGh4ODhH1+fsPExLe4uJGSkgDDAM/Qz8DBwHh4d76+vZ6enZiYl4qKidbTzsMAANDPz8fGxqSjo5KRkYqJiYSDg////9LS0svLy76+vru7u7i4uLW1tbKysq+vr6ysrKmpqaOjo6GhoZubm5iYmJWVlZKSko+Pj4yMjImJiYSEhIODg4CAgHh4eG9vb19fXyEhIQAAACwAAAAAHABGAAAG/0CScEgsGo0AEmfJbDqfziQHQK1ar1iqUgrweb/gsPi33YrPaF956qXx3vC4PL7u+t4EQkIQ0AEcNzY1NB0HMRkwPXVePHk7fDojgIKEHR2IL4pTZncEAwIQOjkOIpSWpyALmlyMF5A4k4Mzp6cuq5w8kA+xNLO0p7dsd6GjgbK/pyzBdjyRvL7ILCvLjLvGEzMayC3SKtR3DhuCITMy290p3zzGvQznKyoKKOqU2ZY/Px0u3PAGKCfqGvSSEePej33d/J2woK4XPnwdHv6AJ7GAunIF8S3Ax0IiBgsFPqjTEEOiC3wr8KF4+MGEupI/XuBrgU8FvoUR8LlcdCeDxP8fHR9ikGjCgzoYLxYghCcBxceQJkxUKKGuh9WrWLNi5Zmmq5pNwtzMGSuHJx49kP6wQ2AIkTpHkCStRYAA09tHxEhRoss3lTpXfWCxm8GXry2zup4VLqwu7+DFfJWZdfYYMgJp6qwJwqYBMj9vZsONK+cZnbrBDErDk0dPVufCS1UoDDgwBuzPChmarQ37oYoUDy2axchXKUqV+EKOPERXKc0fNn+cwNfyJSbnQQ3gs6BzJ1hmiFLFfghSp1GzSLEzdQqypVSqZrXK18rVKxqeYsnqN9sIbR+1lFDQViJmwdWHXAFSQIFdBX6SVymDKCihX2YBpoNg9Ugo4WHfMZKO2GAaatiYKM+EKKFkHd5BWYYmUoCZWZrVwJmJn6kjWg3kyECjaWahtuNq85hVjwYhnvTQbGYJhJGGRqb0wz+6pchDbUxy8xB7wkm5pILYXfmUSGaRlAGXCOEDHFHWpbeUStN1p0546v32Ez7nSanmZ019GdVUy/xwx3yAWrXGEYQWChYUiCa6SRaMNlpFEAA7');
}
;
carggea.ESRPane = function ESRPane(m){
  carggea.$clinit_ESRPane();
  carggea.AbstractESRPane.call(this, m, carggea.ESR_BUTTON_DOWN.getWidth_1(), carggea.ESR_BUTTON_UP.getHeight_1());
  this.$init_222();
  this.model = m;
  carggea.ESR_BUTTON_UP.addLoadHandler(new carggea.ESRPane$1(this));
  carggea.ESR_BUTTON_DOWN.addLoadHandler(new carggea.ESRPane$2(this));
  cggdc.$setClassName(this.getElement(), 'ESRPane');
}
;
defineClass(806, 380, {37:1, 55:1, 31:1, 22:1, 1:1}, carggea.ESRPane);
_.$init_222 = function $init_222(){
  this.loaded = false;
}
;
_.drawButtons_1 = function drawButtons_1(ctx){
  var dx, dy, selectedRow, x_0, y_0;
  ctx.drawImage_1(carggea.ESR_BUTTON_UP, 0, 0);
  selectedRow = (this.model , carsge.rowFromESRType(this.model.getESRType_0()));
  dx = 28;
  dy = 70 / 3;
  y_0 = round_int(70 / 3 * selectedRow);
  x_0 = 0;
  ctx.drawImage_0(carggea.ESR_BUTTON_DOWN, x_0, y_0, dx, dy, x_0, y_0, dx, dy);
}
;
_.onMouseButtonPressed = function onMouseButtonPressed(){
}
;
_.onMouseButtonReleased = function onMouseButtonReleased(){
}
;
_.loaded = false;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRPane_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRPane', 806, cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane_2_classLit);
carggea.$clinit_ESRPane$1 = function $clinit_ESRPane$1(){
  carggea.$clinit_ESRPane$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.ESRPane$1 = function ESRPane$1(this$0){
  carggea.$clinit_ESRPane$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_223();
}
;
defineClass(807, 1, {251:1, 21:1, 1:1}, carggea.ESRPane$1);
_.$init_223 = function $init_223(){
}
;
_.onLoad = function onLoad_2(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_1();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRPane$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRPane/1', 807, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_ESRPane$2 = function $clinit_ESRPane$2(){
  carggea.$clinit_ESRPane$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.ESRPane$2 = function ESRPane$2(this$0){
  carggea.$clinit_ESRPane$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_224();
}
;
defineClass(808, 1, {251:1, 21:1, 1:1}, carggea.ESRPane$2);
_.$init_224 = function $init_224(){
}
;
_.onLoad = function onLoad_3(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_1();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRPane$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRPane/2', 808, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_ESRSVGPane = function $clinit_ESRSVGPane(){
  carggea.$clinit_ESRSVGPane = emptyMethod;
  carggea.$clinit_AbstractESRPane();
  carggea.ESR_BUTTON_UP_0 = new cggucu.Image_1('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz\ndmcgd2lkdGg9IjI4cHgiIGhlaWdodD0iNzBweCIgdmlld0JveD0iMCAwIDI4IDcwIiB2ZXJzaW9u\nPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0\ndHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCAz\nOS4xICgzMTcyMCkgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAg\nICA8dGl0bGU+RVNSQnV0dG9uczwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNo\nLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9u\nZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAg\nICAgIDxnIGlkPSJFU1JCdXR0b25zIj4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlRyaWFuZ2xl\nIiBmaWxsPSIjRDAwMTFCIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC43OTc2OTIsIDEwLjAxNDI0\nNCkgcm90YXRlKDIxNy4wMDAwMDApIHRyYW5zbGF0ZSgtMTAuNzk3NjkyLCAtMTAuMDE0MjQ0KSAi\nIHBvaW50cz0iMTAuNzk3NjkyIDMgMTQuNTk1Mzg0MSAxNy4wMjg0ODc0IDcgMTcuMDI4NDg3NCI+\nPC9wb2x5Z29uPgogICAgICAgICAgICA8cGF0aCBkPSJNNS4zNjAzMTYwNiwxNy44MTQ3MjQ2IEM1\nLjUwOTkxNjQ4LDE3Ljg5NjUwOTEgNS42ODcwNzIyMiwxNy45Mzc0MDA3IDUuODkxNzg4NiwxNy45\nMzc0MDA3IEM2LjE0MTEyMjY0LDE3LjkzNzQwMDcgNi4zODI1NzkzNSwxNy44OTc0MTc4IDYuNjE2\nMTY1OTgsMTcuODE3NDUwOCBDNy4wMDk4NTEzMiwxNy42ODQ3NzgzIDcuMjA2NjkxMDMsMTcuNDY3\nNTk4NCA3LjIwNjY5MTAzLDE3LjE2NTkwNDggTDcuMjA2NjkxMDMsMTYuNzcwNjE1NCBDNy4xMjAw\nODAyNiwxNi44MDg3ODE1IDcuMDA4NTM3NzUsMTYuODQwNTg2IDYuODcyMDYwMTcsMTYuODY2MDMw\nMSBDNi43MzU1ODI1OSwxNi44OTE0NzQxIDYuNjAxNzMxNTgsMTYuOTA5NjQ4MiA2LjQ3MDUwMzE0\nLDE2LjkyMDU1MjggTDYuMDQxMzg4MjcsMTYuOTU4NzE4NiBDNS43ODQxODA1MiwxNi45ODIzNDUy\nIDUuNTkxMjc3NjEsMTcuMDE5NjAyIDUuNDYyNjczNzMsMTcuMDcwNDkwMSBDNS4yNDQ4MzQ1MSwx\nNy4xNTU5MDk0IDUuMTM1OTE2NTQsMTcuMjkyMjE0NyA1LjEzNTkxNjU0LDE3LjQ3OTQxMDIgQzUu\nMTM1OTE2NTQsMTcuNjIxMTY5OCA1LjIxMDcxNTYzLDE3LjczMjk0MDIgNS4zNjAzMTYwNiwxNy44\nMTQ3MjQ2IEw1LjM2MDMxNjA2LDE3LjgxNDcyNDYgWiBNNi44NTIzNzYsMTYuNDg3MDk3NSBDNy4w\nMTUwOTkyNywxNi40NzI1NTggNy4xMjQwMTcyNSwxNi40MjUzMDU1IDcuMTc5MTMzMTksMTYuMzQ1\nMzM4NSBDNy4yMTA2MjgwMiwxNi4zMDE3MjAyIDcuMjI2Mzc1MiwxNi4yMzkwMTk3IDcuMjI2Mzc1\nMiwxNi4xNTcyMzUzIEM3LjIyNjM3NTIsMTUuOTkwMDMxNiA3LjE0MDQyMTg2LDE1Ljg2ODcxOTgg\nNi45Njg1MTI2LDE1Ljc5MzI5NjQgQzYuNzk2NjAzMzMsMTUuNzE3ODczIDYuNTUwNTUzNjksMTUu\nNjgwMTYxOSA2LjIzMDM1NjI5LDE1LjY4MDE2MTkgQzUuODYwMjkyMDgsMTUuNjgwMTYxOSA1LjU5\nNzgzOTEzLDE1Ljc0OTIyMzIgNS40NDI5ODk1NiwxNS44ODczNDggQzUuMzU2Mzc4NzksMTUuOTYz\nNjgwMiA1LjI5OTk1MTQxLDE2LjA3NzI2NzkgNS4yNzM3MDU3MiwxNi4yMjgxMTQ4IEw0LjYxMjMx\nNzY3LDE2LjIyODExNDggQzQuNjI1NDQwNTEsMTUuODY4MjYzMyA0Ljc5NDA2NjUzLDE1LjYxNzkx\nNTkgNS4xMTgyMDA3OSwxNS40NzcwNjQ5IEM1LjQ0MjMzNTA0LDE1LjMzNjIxNCA1LjgxODI5ODks\nMTUuMjY1Nzg5NSA2LjI0NjEwMzYyLDE1LjI2NTc4OTUgQzYuNzQyMTQ3MTQsMTUuMjY1Nzg5NSA3\nLjE0NTAxMjQyLDE1LjMzMTIxNjEgNy40NTQ3MTE1NSwxNS40NjIwNzEyIEM3Ljc2MTc4NjExLDE1\nLjU5MjkyNjMgNy45MTUzMjEwOCwxNS43OTY0NzU1IDcuOTE1MzIxMDgsMTYuMDcyNzI1MSBMNy45\nMTUzMjEwOCwxNy43NTQ3NDk3IEM3LjkxNTMyMTA4LDE3LjgwNTYzNzggNy45MzA0MTIxMywxNy44\nNDY1Mjk0IDcuOTYwNTk0NjcsMTcuODc3NDI1NyBDNy45OTA3NzcyMSwxNy45MDgzMjIgOC4wNTQ0\nMjIwNSwxNy45MjM3NyA4LjE1MTUzMTEsMTcuOTIzNzcgQzguMTgzMDI1OTMsMTcuOTIzNzcgOC4y\nMTg0NTcwOCwxNy45MjI0MDY5IDguMjU3ODI1NjEsMTcuOTE5NjgwOCBDOC4yOTcxOTQxNCwxNy45\nMTY5NTQ2IDguMzM5MTg2NjEsMTcuOTEyODY1NSA4LjM4MzgwNDI5LDE3LjkwNzQxMzIgTDguMzgz\nODA0MjksMTguMjY5OTg5IEM4LjI3MzU3MjM5LDE4LjI5MTc5ODIgOC4xODk1ODc0NSwxOC4zMDU0\nMjg3IDguMTMxODQ2OTMsMTguMzEwODgxIEM4LjA3NDEwNjQyLDE4LjMxNjMzMzMgNy45OTUzNzA1\nMywxOC4zMTkwNTk0IDcuODk1NjM2OTIsMTguMzE5MDU5NCBDNy42NTE1NTIwMSwxOC4zMTkwNTk0\nIDcuNDc0Mzk2MjcsMTguMjU5MDg1IDcuMzY0MTY0MzcsMTguMTM5MTM0NiBDNy4zMDY0MjM4Niwx\nOC4wNzU1MjQ0IDcuMjY1NzQzNjUsMTcuOTg1NTYyOSA3LjI0MjEyMjUzLDE3Ljg2OTI0NzMgQzcu\nMDk3NzcxMjQsMTguMDAwMTAyNCA2Ljg5MDQzMzQxLDE4LjExMzY5MDIgNi42MjAxMDI4MiwxOC4y\nMTAwMTQgQzYuMzQ5NzcyMjIsMTguMzA2MzM3OSA2LjA1MTg4ODEyLDE4LjM1NDQ5OTEgNS43MjY0\nNDE1OCwxOC4zNTQ0OTkxIEM1LjMzNTM4MDgyLDE4LjM1NDQ5OTEgNS4wMTU4NDQzNSwxOC4yNzIy\nNjE2IDQuNzY3ODIyNTksMTguMTA3Nzg0IEM0LjUxOTgwMDg0LDE3Ljk0MzMwNjUgNC4zOTU3OTE4\nMiwxNy43Mzc0ODU0IDQuMzk1NzkxODIsMTcuNDkwMzE0NyBDNC4zOTU3OTE4MiwxNy4yMTk1MTc0\nIDQuNTE3ODMyNDQsMTcuMDA5NjA3MiA0Ljc2MTkxNzM0LDE2Ljg2MDU3NzggQzUuMDA2MDAyMjUs\nMTYuNzExNTQ4NCA1LjMyNjE5NDg1LDE2LjYxOTc2OTUgNS43MjI1MDQ3NSwxNi41ODUyMzgzIEw2\nLjg1MjM3NiwxNi40ODcwOTc1IFogTTkuMDIxNTcxMzMsMTQuMjM4MDM3MSBMOS43MTA1MTcyMiwx\nNC4yMzgwMzcxIEw5LjcxMDUxNzIyLDE1LjY5MTA2NjQgQzkuODY1MzY2NzgsMTUuNTUxMTI0MiAx\nMC4wNTAzOTYxLDE1LjQ0NDM1MTcgMTAuMjY1NjEwOCwxNS4zNzA3NDU3IEMxMC40ODA4MjU0LDE1\nLjI5NzEzOTcgMTAuNzE0NDA4NSwxNS4yNjAzMzczIDEwLjk2NjM2NzEsMTUuMjYwMzM3MyBDMTEu\nNDkxMjgwOSwxNS4yNjAzMzczIDExLjkxNzExMDgsMTUuMzg1MjgzOCAxMi4yNDM4Njk3LDE1LjYz\nNTE4MDcgQzEyLjU3MDYyODUsMTUuODg1MDc3NSAxMi43MzQwMDU0LDE2LjI1MzU1NjMgMTIuNzM0\nMDA1NCwxNi43NDA2Mjc5IEMxMi43MzQwMDU0LDE3LjIwMjI1NTYgMTIuNTcyNTk2OSwxNy41ODU3\nMjc5IDEyLjI0OTc3NDksMTcuODkxMDU2NCBDMTEuOTI2OTUyOSwxOC4xOTYzODQ5IDExLjQ3OTQ3\nMDcsMTguMzQ5MDQ2OSAxMC45MDczMTQ2LDE4LjM0OTA0NjkgQzEwLjU4NzExNzIsMTguMzQ5MDQ2\nOSAxMC4zMTY3OTA3LDE4LjI5NTQzMzQgMTAuMDk2MzI2OSwxOC4xODgyMDUgQzkuOTY1MDk4NDcs\nMTguMTI0NTk0OSA5LjgyNDY4NjE0LDE4LjAyMjgyMDIgOS42NzUwODU3MiwxNy44ODI4NzggTDku\nNjc1MDg1NzIsMTguMjU2MzU4MyBMOS4wMjE1NzEzMywxOC4yNTYzNTgzIEw5LjAyMTU3MTMzLDE0\nLjIzODAzNzEgWiBNMTEuNzI0MjA3NiwxNy41OTkzNjAxIEMxMS45MTQ0ODg5LDE3LjM4ODUzOCAx\nMi4wMDk2MjgxLDE3LjExMDQ3NTEgMTIuMDA5NjI4MSwxNi43NjUxNjMxIEMxMi4wMDk2MjgxLDE2\nLjQ1ODAxNzIgMTEuOTE0NDg4OSwxNi4yMDM1ODA2IDExLjcyNDIwNzYsMTYuMDAxODQ1NyBDMTEu\nNTMzOTI2NCwxNS44MDAxMTA4IDExLjI1Mzc1NzksMTUuNjk5MjQ0OCAxMC44ODM2OTM2LDE1LjY5\nOTI0NDggQzEwLjU2MDg3MTcsMTUuNjk5MjQ0OCAxMC4yNzgwNzg2LDE1Ljc4MTkzNjcgMTAuMDM1\nMzA2LDE1Ljk0NzMyMyBDOS43OTI1MzMzNywxNi4xMTI3MDkzIDkuNjcxMTQ4ODgsMTYuMzg1MzE5\nOSA5LjY3MTE0ODg4LDE2Ljc2NTE2MzEgQzkuNjcxMTQ4ODgsMTcuMDM5NTk1MyA5LjcyMTAxNDk0\nLDE3LjI2MjIyNzMgOS44MjA3NDg1NiwxNy40MzMwNjU5IEMxMC4wMDcwOTMsMTcuNzU0NzUxMyAx\nMC4zNTQ4NDMxLDE3LjkxNTU5MTYgMTAuODY0MDA5NSwxNy45MTU1OTE2IEMxMS4yNDcxOTY1LDE3\nLjkxNTU5MTYgMTEuNTMzOTI2NCwxNy44MTAxODIxIDExLjcyNDIwNzYsMTcuNTk5MzYwMSBMMTEu\nNzI0MjA3NiwxNy41OTkzNjAxIFogTTEzLjk4MTk4MTcsMTcuMzQwMzc3NCBDMTQuMDAyOTc4Mywx\nNy41MDM5NDYyIDE0LjA2MjAzMDIsMTcuNjI5MzQ3MSAxNC4xNTkxMzkyLDE3LjcxNjU4MzggQzE0\nLjMzNzYwOTksMTcuODc0NzAwNCAxNC42NDczMDQ0LDE3Ljk1Mzc1NzUgMTUuMDg4MjMyLDE3Ljk1\nMzc1NzUgQzE1LjM1MDY4ODgsMTcuOTUzNzU3NSAxNS41ODE2NDc0LDE3LjkxNDIyODkgMTUuNzgx\nMTE0NywxNy44MzUxNzA2IEMxNS45ODA1ODE5LDE3Ljc1NjExMjQgMTYuMDgwMzE0LDE3LjYzMzg5\nMTkgMTYuMDgwMzE0LDE3LjQ2ODUwNTYgQzE2LjA4MDMxNCwxNy4zNDMxMDI5IDE2LjAwMDI2NTks\nMTcuMjQ3Njg5MSAxNS44NDAxNjcyLDE3LjE4MjI2MTYgQzE1LjczNzgwOSwxNy4xNDIyNzgxIDE1\nLjUzNTcyMDIsMTcuMDk1OTM0MyAxNS4yMzM4OTQ4LDE3LjA0MzIyODggTDE0LjY3MDkyNzYsMTYu\nOTQ1MDg4IEMxNC4zMTEzNjE3LDE2Ljg4MzI5NTMgMTQuMDQ2Mjg0MiwxNi44MTQyMzM5IDEzLjg3\nNTY4NzIsMTYuNzM3OTAxOCBDMTMuNTcxMjM3MiwxNi42MDUyMjkzIDEzLjQxOTAxNDUsMTYuNDIx\nNjcxNCAxMy40MTkwMTQ1LDE2LjE4NzIyMjggQzEzLjQxOTAxNDUsMTUuOTEwOTczMiAxMy41NjI3\nMDc1LDE1LjY4NzQzMjQgMTMuODUwMDk3OCwxNS41MTY1OTM5IEMxNC4xMzc0ODgxLDE1LjM0NTc1\nNTMgMTQuNTIzOTUsMTUuMjYwMzM3MyAxNS4wMDk0OTUzLDE1LjI2MDMzNzMgQzE1LjY0NDY0MSwx\nNS4yNjAzMzczIDE2LjEwMjYyMTQsMTUuMzg5MzczIDE2LjM4MzQ1MDIsMTUuNjQ3NDQ4MyBDMTYu\nNTU5Mjk2MywxNS44MTEwMTcxIDE2LjY0NDU5MzUsMTUuOTg3MzA1MyAxNi42MzkzNDQ0LDE2LjE3\nNjMxODIgTDE1Ljk3MDA4MjcsMTYuMTc2MzE4MiBDMTUuOTU2OTU5OCwxNi4wNjU0NTQ5IDE1Ljkw\nMDUzMjUsMTUuOTY0NTg5IDE1LjgwMDc5ODgsMTUuODczNzE3NCBDMTUuNjM4MDc1NiwxNS43NDQ2\nNzk3IDE1LjM1NTkzODcsMTUuNjgwMTYxOSAxNC45NTQzNzk2LDE1LjY4MDE2MTkgQzE0LjY4NjY3\nMzYsMTUuNjgwMTYxOSAxNC40ODM5Mjg3LDE1LjcxNTYwMTMgMTQuMzQ2MTM4OCwxNS43ODY0ODEx\nIEMxNC4yMDgzNDksMTUuODU3MzYwOSAxNC4xMzk0NTUxLDE1Ljk1MDk1NzMgMTQuMTM5NDU1MSwx\nNi4wNjcyNzI5IEMxNC4xMzk0NTUxLDE2LjE5NDQ5MzEgMTQuMjMwMDAxMywxNi4yOTYyNjc3IDE0\nLjQxMTA5NjYsMTYuMzcyNTk5OSBDMTQuNTE2MDc5MywxNi40MTgwMzU3IDE0LjY3MDkyNjYsMTYu\nNDU4MDE4NSAxNC44NzU2NDI5LDE2LjQ5MjU0OTcgTDE1LjM0NDEyNjEsMTYuNTcxNjA3NiBDMTUu\nODUzMjkyNSwxNi42NTcwMjY5IDE2LjE5NDQ4MTMsMTYuNzM5NzE4OCAxNi4zNjc3MDI5LDE2Ljgx\nOTY4NTggQzE2LjY0MzI4MjYsMTYuOTQ1MDg4NiAxNi43ODEwNzA0LDE3LjE0MjI3NyAxNi43ODEw\nNzA0LDE3LjQxMTI1NjggQzE2Ljc4MTA3MDQsMTcuNjcxMTQ5NiAxNi42Mzg2ODk3LDE3Ljg5NTU5\nOSAxNi4zNTM5MjQsMTguMDg0NjExOSBDMTYuMDY5MTU4MiwxOC4yNzM2MjQ4IDE1LjYzNTQ1NDcs\nMTguMzY4MTI5OCAxNS4wNTI4MDA1LDE4LjM2ODEyOTggQzE0LjQyNTUyODUsMTguMzY4MTI5OCAx\nMy45ODEzMjY5LDE4LjI2OTUzNTYgMTMuNzIwMTgyMywxOC4wNzIzNDQzIEMxMy40NTkwMzc3LDE3\nLjg3NTE1MjkgMTMuMzE5MjgxNSwxNy42MzExNjY0IDEzLjMwMDkwOTUsMTcuMzQwMzc3NCBMMTMu\nOTgxOTgxNywxNy4zNDAzNzc0IFoiIGlkPSJhYnMiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAg\nICAgICAgICAgPHBvbHlnb24gaWQ9IlRyaWFuZ2xlIiBmaWxsPSIjNEE5MEUyIiB0cmFuc2Zvcm09\nInRyYW5zbGF0ZSgxMC43OTc2OTIsIDMzLjAxNDI0NCkgcm90YXRlKDIxNy4wMDAwMDApIHRyYW5z\nbGF0ZSgtMTAuNzk3NjkyLCAtMzMuMDE0MjQ0KSAiIHBvaW50cz0iMTAuNzk3NjkyIDI2IDE0LjU5\nNTM4NDEgNDAuMDI4NDg3NCA3IDQwLjAyODQ4NzQiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBh\ndGggZD0iTTEzLjU3ODEyNSw0MS4wMTc1NzgxIEMxMy43NTEzMDI5LDQwLjY2NDcxMTggMTMuODM3\nODkwNiw0MC4yNzIxMzc2IDEzLjgzNzg5MDYsMzkuODM5ODQzOCBDMTMuODM3ODkwNiwzOS40NDky\nMTY4IDEzLjc3NTM5MTIsMzkuMTMxNTExNiAxMy42NTAzOTA2LDM4Ljg4NjcxODggQzEzLjQ1MjQ3\nMywzOC41MDEzMDAyIDEzLjExMTMzMDUsMzguMzA4NTkzOCAxMi42MjY5NTMxLDM4LjMwODU5Mzgg\nQzEyLjE5NzI2MzUsMzguMzA4NTkzOCAxMS44ODQ3NjY2LDM4LjQ3MjY1NDYgMTEuNjg5NDUzMSwz\nOC44MDA3ODEyIEMxMS40OTQxMzk2LDM5LjEyODkwNzkgMTEuMzk2NDg0NCwzOS41MjQ3MzczIDEx\nLjM5NjQ4NDQsMzkuOTg4MjgxMiBDMTEuMzk2NDg0NCw0MC40MzM1OTYgMTEuNDk0MTM5Niw0MC44\nMDQ2ODYgMTEuNjg5NDUzMSw0MS4xMDE1NjI1IEMxMS44ODQ3NjY2LDQxLjM5ODQzOSAxMi4xOTQ2\nNTkzLDQxLjU0Njg3NSAxMi42MTkxNDA2LDQxLjU0Njg3NSBDMTMuMDg1Mjg4OCw0MS41NDY4NzUg\nMTMuNDA0OTQ3MSw0MS4zNzA0NDQ1IDEzLjU3ODEyNSw0MS4wMTc1NzgxIEwxMy41NzgxMjUsNDEu\nMDE3NTc4MSBaIE0xNC4wMTM2NzE5LDM4LjIzNDM3NSBDMTQuMzg2MDY5NiwzOC41OTM3NTE4IDE0\nLjU3MjI2NTYsMzkuMTIyMzkyMyAxNC41NzIyNjU2LDM5LjgyMDMxMjUgQzE0LjU3MjI2NTYsNDAu\nNDk0Nzk1IDE0LjQwODIwNDgsNDEuMDUyMDgxMSAxNC4wODAwNzgxLDQxLjQ5MjE4NzUgQzEzLjc1\nMTk1MTUsNDEuOTMyMjkzOSAxMy4yNDI4NDIsNDIuMTUyMzQzOCAxMi41NTI3MzQ0LDQyLjE1MjM0\nMzggQzExLjk3NzIxMDcsNDIuMTUyMzQzOCAxMS41MjAxODQsNDEuOTU3Njg0MiAxMS4xODE2NDA2\nLDQxLjU2ODM1OTQgQzEwLjg0MzA5NzMsNDEuMTc5MDM0NSAxMC42NzM4MjgxLDQwLjY1NjI1MzMg\nMTAuNjczODI4MSw0MCBDMTAuNjczODI4MSwzOS4yOTY4NzE1IDEwLjg1MjIxMTgsMzguNzM2OTgx\nMiAxMS4yMDg5ODQ0LDM4LjMyMDMxMjUgQzExLjU2NTc1NywzNy45MDM2NDM4IDEyLjA0NDkxODks\nMzcuNjk1MzEyNSAxMi42NDY0ODQ0LDM3LjY5NTMxMjUgQzEzLjE4NTU0OTYsMzcuNjk1MzEyNSAx\nMy42NDEyNzQyLDM3Ljg3NDk5ODIgMTQuMDEzNjcxOSwzOC4yMzQzNzUgTDE0LjAxMzY3MTksMzgu\nMjM0Mzc1IFogTTE1LjQyNzczNDQsMzcuODE2NDA2MiBMMTYuMDk1NzAzMSwzNy44MTY0MDYyIEwx\nNi4wOTU3MDMxLDM4LjUzOTA2MjUgQzE2LjE1MDM5MDksMzguMzk4NDM2OCAxNi4yODQ1MDQxLDM4\nLjIyNzIxNDYgMTYuNDk4MDQ2OSwzOC4wMjUzOTA2IEMxNi43MTE1ODk2LDM3LjgyMzU2NjcgMTYu\nOTU3NjgwOSwzNy43MjI2NTYyIDE3LjIzNjMyODEsMzcuNzIyNjU2MiBDMTcuMjQ5MzQ5LDM3Ljcy\nMjY1NjIgMTcuMjcxNDg0MiwzNy43MjM5NTgzIDE3LjMwMjczNDQsMzcuNzI2NTYyNSBDMTcuMzMz\nOTg0NSwzNy43MjkxNjY3IDE3LjM4NzM2OTQsMzcuNzM0Mzc1IDE3LjQ2Mjg5MDYsMzcuNzQyMTg3\nNSBMMTcuNDYyODkwNiwzOC40ODQzNzUgQzE3LjQyMTIyMzcsMzguNDc2NTYyNSAxNy4zODI4MTI3\nLDM4LjQ3MTM1NDIgMTcuMzQ3NjU2MiwzOC40Njg3NSBDMTcuMzEyNDk5OCwzOC40NjYxNDU4IDE3\nLjI3NDA4ODgsMzguNDY0ODQzOCAxNy4yMzI0MjE5LDM4LjQ2NDg0MzggQzE2Ljg3ODI1MzQsMzgu\nNDY0ODQzOCAxNi42MDYxMjA3LDM4LjU3ODc3NDkgMTYuNDE2MDE1NiwzOC44MDY2NDA2IEMxNi4y\nMjU5MTA1LDM5LjAzNDUwNjMgMTYuMTMwODU5NCwzOS4yOTY4NzM1IDE2LjEzMDg1OTQsMzkuNTkz\nNzUgTDE2LjEzMDg1OTQsNDIgTDE1LjQyNzczNDQsNDIgTDE1LjQyNzczNDQsMzcuODE2NDA2MiBa\nIiBpZD0ib3IiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAgICAgPHBvbHlnb24gaWQ9\nIlRyaWFuZ2xlIiBmaWxsPSIjNDE3NTA1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC43OTc2OTIs\nIDU3LjAxNDI0NCkgcm90YXRlKDIxNy4wMDAwMDApIHRyYW5zbGF0ZSgtMTAuNzk3NjkyLCAtNTcu\nMDE0MjQ0KSAiIHBvaW50cz0iMTAuNzk3NjkyIDUwIDE0LjU5NTM4NDEgNjQuMDI4NDg3NCA3IDY0\nLjAyODQ4NzQiPjwvcG9seWdvbj4KICAgICAgICAgICAgPHBhdGggZD0iTTE1LjYyODkwNjIsNjIu\nMDY2NDA2MiBDMTUuNzgyNTUyOSw2MS44ODkzMjIgMTUuODU5Mzc1LDYxLjY5MjcwOTQgMTUuODU5\nMzc1LDYxLjQ3NjU2MjUgQzE1Ljg1OTM3NSw2MS4zMDcyOTA4IDE1LjgwMzM4Niw2MS4xNjE0NTg5\nIDE1LjY5MTQwNjIsNjEuMDM5MDYyNSBDMTUuNTc5NDI2NSw2MC45MTY2NjYxIDE1LjQyODM4NjQs\nNjAuODU1NDY4OCAxNS4yMzgyODEyLDYwLjg1NTQ2ODggQzE0Ljk0OTIxNzMsNjAuODU1NDY4OCAx\nNC43NDg2OTg1LDYwLjk1MTgyMiAxNC42MzY3MTg4LDYxLjE0NDUzMTIgQzE0LjU3OTQyNjgsNjEu\nMjQzNDkwMSAxNC41NTA3ODEyLDYxLjM1MTU2MTkgMTQuNTUwNzgxMiw2MS40Njg3NSBDMTQuNTUw\nNzgxMiw2MS42Mjc2MDUgMTQuNTk0NDAwNiw2MS43Nzk5NDcyIDE0LjY4MTY0MDYsNjEuOTI1Nzgx\nMiBDMTQuNzY4ODgwNiw2Mi4wNzE2MTUzIDE0LjkxNDA2MTUsNjIuMjYwNDE1NSAxNS4xMTcxODc1\nLDYyLjQ5MjE4NzUgQzE1LjM2NDU4NDYsNjIuMzE3NzA3NSAxNS41MzUxNTU4LDYyLjE3NTc4MTgg\nMTUuNjI4OTA2Miw2Mi4wNjY0MDYyIEwxNS42Mjg5MDYyLDYyLjA2NjQwNjIgWiBNMTUuNjgzNTkz\nOCw2NS4zMTY0MDYyIEMxNS44OTE5MjgxLDY1LjE4MzU5MzEgMTYuMDUyMDgyOCw2NS4wMzUxNTcx\nIDE2LjE2NDA2MjUsNjQuODcxMDkzOCBMMTQuODY3MTg3NSw2My4yODkwNjI1IEMxNC40OTk5OTgy\nLDYzLjUzMzg1NTQgMTQuMjYwNDE3Miw2My43MjEzNTM1IDE0LjE0ODQzNzUsNjMuODUxNTYyNSBD\nMTMuOTc2NTYxNiw2NC4wNDY4NzYgMTMuODkwNjI1LDY0LjI4NTE1NDggMTMuODkwNjI1LDY0LjU2\nNjQwNjIgQzEzLjg5MDYyNSw2NC44NzEwOTUzIDE0LjAwMTk1Miw2NS4xMDU0Njc5IDE0LjIyNDYw\nOTQsNjUuMjY5NTMxMiBDMTQuNDQ3MjY2Nyw2NS40MzM1OTQ2IDE0LjY4NDg5NDYsNjUuNTE1NjI1\nIDE0LjkzNzUsNjUuNTE1NjI1IEMxNS4yMjY1NjM5LDY1LjUxNTYyNSAxNS40NzUyNTk0LDY1LjQ0\nOTIxOTQgMTUuNjgzNTkzOCw2NS4zMTY0MDYyIEwxNS42ODM1OTM4LDY1LjMxNjQwNjIgWiBNMTMu\nOTkwMjM0NCw2Mi4xMDU0Njg4IEMxMy45MDgyMDI3LDYxLjkxNTM2MzYgMTMuODY3MTg3NSw2MS43\nMzE3NzE3IDEzLjg2NzE4NzUsNjEuNTU0Njg3NSBDMTMuODY3MTg3NSw2MS4xODQ4OTQgMTMuOTky\nMTg2Miw2MC44NzgyNTY0IDE0LjI0MjE4NzUsNjAuNjM0NzY1NiBDMTQuNDkyMTg4OCw2MC4zOTEy\nNzQ4IDE0LjgyNjgyMDgsNjAuMjY5NTMxMiAxNS4yNDYwOTM4LDYwLjI2OTUzMTIgQzE1LjY0NDUz\nMzIsNjAuMjY5NTMxMiAxNS45NTU3MjgsNjAuMzgyODExNCAxNi4xNzk2ODc1LDYwLjYwOTM3NSBD\nMTYuNDAzNjQ3LDYwLjgzNTkzODYgMTYuNTE1NjI1LDYxLjEwNjc2OTMgMTYuNTE1NjI1LDYxLjQy\nMTg3NSBDMTYuNTE1NjI1LDYxLjc4OTA2NDMgMTYuMzk5NzQwNyw2Mi4xMTA2NzU3IDE2LjE2Nzk2\nODgsNjIuMzg2NzE4OCBDMTYuMDMyNTUxNCw2Mi41NDgxNzc5IDE1LjgwNTk5MTIsNjIuNzM0Mzcz\nOSAxNS40ODgyODEyLDYyLjk0NTMxMjUgTDE2LjUzNTE1NjIsNjQuMTk1MzEyNSBDMTYuNjA1NDY5\nMSw2My45ODY5NzgxIDE2LjY1NDI5NjcsNjMuODMxMzgwNyAxNi42ODE2NDA2LDYzLjcyODUxNTYg\nQzE2LjcwODk4NDUsNjMuNjI1NjUwNSAxNi43MzY5NzksNjMuNDgxNzcxOCAxNi43NjU2MjUsNjMu\nMjk2ODc1IEwxNy40MzM1OTM4LDYzLjI5Njg3NSBDMTcuMzg5MzIyNyw2My42NjQwNjQzIDE3LjMw\nMDc4MTksNjQuMDE2Mjc0NCAxNy4xNjc5Njg4LDY0LjM1MzUxNTYgQzE3LjAzNTE1NTYsNjQuNjkw\nNzU2OSAxNi45Njg3NSw2NC44MjY4MjMyIDE2Ljk2ODc1LDY0Ljc2MTcxODggTDE3Ljk4ODI4MTIs\nNjYgTDE3LjA4MjAzMTIsNjYgTDE2LjU0Mjk2ODgsNjUuMzQzNzUgQzE2LjMyOTQyNiw2NS41NzU1\nMjIgMTYuMTM0MTE1NSw2NS43NDQ3OTExIDE1Ljk1NzAzMTIsNjUuODUxNTYyNSBDMTUuNjQ3MTMz\nOSw2Ni4wMzkwNjM0IDE1LjI5MDM2NjYsNjYuMTMyODEyNSAxNC44ODY3MTg4LDY2LjEzMjgxMjUg\nQzE0LjI5MDM2MTYsNjYuMTMyODEyNSAxMy44NTY3NzIyLDY1Ljk3MjAwNjggMTMuNTg1OTM3NSw2\nNS42NTAzOTA2IEMxMy4zMTUxMDI4LDY1LjMyODc3NDQgMTMuMTc5Njg3NSw2NC45NjYxNDc5IDEz\nLjE3OTY4NzUsNjQuNTYyNSBDMTMuMTc5Njg3NSw2NC4xMjc2MDIgMTMuMzExMTk2Niw2My43NjQz\nMjQ0IDEzLjU3NDIxODgsNjMuNDcyNjU2MiBDMTMuNzM1Njc3OSw2My4yOTU1NzIgMTQuMDM2NDU2\nMSw2My4wNzQyMjAxIDE0LjQ3NjU2MjUsNjIuODA4NTkzOCBDMTQuMjM0MzczOCw2Mi41Mjk5NDY1\nIDE0LjA3MjI2Niw2Mi4yOTU1NzM5IDEzLjk5MDIzNDQsNjIuMTA1NDY4OCBMMTMuOTkwMjM0NCw2\nMi4xMDU0Njg4IFoiIGlkPSJhbmQiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICA8L2c+\nCiAgICA8L2c+Cjwvc3ZnPg==');
}
;
carggea.ESRSVGPane = function ESRSVGPane(m, scale){
  carggea.$clinit_ESRSVGPane();
  carggea.AbstractESRPane.call(this, m, carggea.ESR_BUTTON_UP_0.getWidth_1() * scale, carggea.ESR_BUTTON_UP_0.getHeight_1() * scale);
  this.$init_225();
  this.scale_0 = scale;
  carggea.ESR_BUTTON_UP_0.addLoadHandler(new carggea.ESRSVGPane$1(this));
}
;
defineClass(809, 380, {37:1, 55:1, 31:1, 22:1, 1:1}, carggea.ESRSVGPane);
_.$init_225 = function $init_225(){
  this.pressed = false;
  this.loaded = false;
  this.scale_0 = 1;
}
;
_.drawAllButtons = function drawAllButtons(ctx){
  ctx.clearRect_0(0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0, carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0);
  ctx.save_0();
  ctx.setFill(this.model.getGeomFactory().getDrawConfig().createColor(1, 1, 1, 1));
  ctx.fillRect_0(0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0, carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0);
  ctx.setStroke(this.model.getGeomFactory().getDrawConfig().createColor(0.5, 0.5, 0.5, 1));
  ctx.drawRect(0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0, carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0);
  ctx.restore_0();
  ctx.drawImage_0(carggea.ESR_BUTTON_UP_0, 0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1(), carggea.ESR_BUTTON_UP_0.getHeight_1(), 0, 0, carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0, carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0);
}
;
_.drawButtons_1 = function drawButtons_2(ctx){
  this.drawAllButtons(ctx);
  this.drawSelectedButton(ctx);
}
;
_.drawSelectedButton = function drawSelectedButton(ctx){
  var dx, dy, selectedRow, x_0, y_0;
  selectedRow = (this.model , carsge.rowFromESRType(this.model.getESRType_0()));
  dx = carggea.ESR_BUTTON_UP_0.getWidth_1() * this.scale_0;
  dy = carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0 / 3;
  y_0 = round_int(carggea.ESR_BUTTON_UP_0.getHeight_1() * this.scale_0 / 3 * selectedRow);
  x_0 = 0;
  ctx.setFill(this.model.getGeomFactory().getDrawConfig().createColor(0.5, 0.5, 0.5, 0.5));
  ctx.fillRect_0(x_0, y_0, dx, dy);
}
;
_.onMouseButtonPressed = function onMouseButtonPressed_0(){
  this.pressed = true;
}
;
_.onMouseButtonReleased = function onMouseButtonReleased_0(){
  if (this.pressed) {
    this.hide();
    this.requestLayout_1();
  }
}
;
_.loaded = false;
_.pressed = false;
_.scale_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRSVGPane_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRSVGPane', 809, cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractESRPane_2_classLit);
carggea.$clinit_ESRSVGPane$1 = function $clinit_ESRSVGPane$1(){
  carggea.$clinit_ESRSVGPane$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggea.ESRSVGPane$1 = function ESRSVGPane$1(this$0){
  carggea.$clinit_ESRSVGPane$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_226();
}
;
defineClass(810, 1, {251:1, 21:1, 1:1}, carggea.ESRSVGPane$1);
_.$init_226 = function $init_226(){
}
;
_.onLoad = function onLoad_4(event_0){
  if (this.this$01.loaded)
    this.this$01.requestLayout_1();
  this.this$01.loaded = true;
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRSVGPane$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRSVGPane/1', 810, cggl.Ljava_lang_Object_2_classLit);
carggea.$clinit_ESRSVGTypeAction = function $clinit_ESRSVGTypeAction(){
  carggea.$clinit_ESRSVGTypeAction = emptyMethod;
  carggea.$clinit_AbstractTypeAction();
}
;
carggea.ESRSVGTypeAction = function ESRSVGTypeAction(model, scale){
  carggea.$clinit_ESRSVGTypeAction();
  carggea.AbstractTypeAction.call(this, model, scale);
  this.$init_227();
  this.scale_0 = scale;
}
;
defineClass(740, 368, {122:1, 25:1, 1:1}, carggea.ESRSVGTypeAction);
_.$init_227 = function $init_227(){
  this.scale_0 = 1;
}
;
_.createPane = function createPane(){
  return this.createPane_0();
}
;
_.createPane_0 = function createPane_0(){
  return new carggea.ESRSVGPane(this.model_0, this.scale_0);
}
;
_.scale_0 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRSVGTypeAction_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRSVGTypeAction', 740, cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractTypeAction_2_classLit);
carggea.$clinit_ESRTypeAction = function $clinit_ESRTypeAction(){
  carggea.$clinit_ESRTypeAction = emptyMethod;
  carggea.$clinit_AbstractTypeAction();
}
;
carggea.ESRTypeAction = function ESRTypeAction(model){
  carggea.$clinit_ESRTypeAction();
  carggea.AbstractTypeAction.call(this, model, 1);
  this.$init_228();
}
;
defineClass(289, 368, {122:1, 289:1, 25:1, 1:1}, carggea.ESRTypeAction);
_.$init_228 = function $init_228(){
}
;
_.createPane = function createPane_1(){
  return this.createPane_1();
}
;
_.createPane_1 = function createPane_2(){
  return new carggea.ESRPane(this.model_0);
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_ESRTypeAction_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions', 'ESRTypeAction', 289, cggl.Lcom_actelion_research_gwt_gui_editor_actions_AbstractTypeAction_2_classLit);
cggucu.$clinit_DecoratedPopupPanel = function $clinit_DecoratedPopupPanel(){
  cggucu.$clinit_DecoratedPopupPanel = emptyMethod;
  cggucu.$clinit_PopupPanel();
}
;
cggucu.DecoratedPopupPanel = function DecoratedPopupPanel(autoHide, modal, prefix){
  cggucu.$clinit_DecoratedPopupPanel();
  var rowStyles;
  cggucu.PopupPanel_1.call(this, autoHide, modal);
  this.$init_229();
  rowStyles = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, [prefix + 'Top', prefix + 'Middle', prefix + 'Bottom']);
  this.decPanel = new cggucu.DecoratorPanel(rowStyles, 1);
  this.decPanel.setStyleName('');
  this.setStylePrimaryName('gwt-DecoratedPopupPanel');
  getClassPrototype(142).setWidget.call(this, this.decPanel);
  cggucu.setStyleName_0(this.getContainerElement(), 'popupContent', false);
  cggucu.setStyleName_0(this.decPanel.getContainerElement(), prefix + 'Content', true);
}
;
defineClass(297, 142, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_229 = function $init_229(){
}
;
_.clear_0 = function clear_9(){
  this.decPanel.clear_0();
}
;
_.doAttachChildren = function doAttachChildren_1(){
  this.decPanel.onAttach();
}
;
_.doDetachChildren = function doDetachChildren_1(){
  this.decPanel.onDetach();
}
;
_.getCellElement = function getCellElement(row, cell){
  return cgguc.asOld(this.decPanel.getCellElement(row, cell));
}
;
_.getWidget = function getWidget_0(){
  return this.decPanel.getWidget();
}
;
_.iterator = function iterator_2(){
  return this.decPanel.iterator();
}
;
_.remove_0 = function remove_5(w){
  return this.decPanel.remove_0(w);
}
;
_.setWidget = function setWidget_1(w){
  this.decPanel.setWidget(w);
  this.maybeUpdateSize();
}
;
cggucu.DEFAULT_STYLENAME_0 = 'gwt-DecoratedPopupPanel';
cggl.Lcom_google_gwt_user_client_ui_DecoratedPopupPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DecoratedPopupPanel', 297, cggl.Lcom_google_gwt_user_client_ui_PopupPanel_2_classLit);
cggucu.$clinit_HasText = function $clinit_HasText(){
  cggucu.$clinit_HasText = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasText_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasText');
cggucu.$clinit_HasHTML = function $clinit_HasHTML(){
  cggucu.$clinit_HasHTML = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasHTML_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasHTML');
cggsc.$clinit_HasSafeHtml = function $clinit_HasSafeHtml(){
  cggsc.$clinit_HasSafeHtml = emptyMethod;
}
;
cggl.Lcom_google_gwt_safehtml_client_HasSafeHtml_2_classLit = createForInterface('com.google.gwt.safehtml.client', 'HasSafeHtml');
ju.$clinit_EventListener_0 = function $clinit_EventListener_0(){
  ju.$clinit_EventListener_0 = emptyMethod;
}
;
cggl.Ljava_util_EventListener_2_classLit = createForInterface('java.util', 'EventListener');
cggucu.$clinit_MouseListener = function $clinit_MouseListener(){
  cggucu.$clinit_MouseListener = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_MouseListener_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'MouseListener');
cggucu.$clinit_DialogBox = function $clinit_DialogBox(){
  cggucu.$clinit_DialogBox = emptyMethod;
  cggucu.$clinit_DecoratedPopupPanel();
}
;
cggucu.DialogBox = function DialogBox(){
  cggucu.$clinit_DialogBox();
  cggucu.DialogBox_0.call(this, false);
}
;
cggucu.DialogBox_0 = function DialogBox_0(autoHide){
  cggucu.DialogBox_1.call(this, autoHide, true);
}
;
cggucu.DialogBox_1 = function DialogBox_1(autoHide, modal){
  cggucu.DialogBox_2.call(this, autoHide, modal, new cggucu.DialogBox$CaptionImpl);
}
;
cggucu.DialogBox_2 = function DialogBox_2(autoHide, modal, captionWidget){
  var mouseHandler, td;
  cggucu.DecoratedPopupPanel.call(this, autoHide, modal, 'dialog');
  this.$init_230();
  captionWidget.asWidget().removeFromParent();
  this.caption = captionWidget;
  td = this.getCellElement(0, 1);
  cgguc.appendChild(td, this.caption.asWidget().getElement());
  this.adopt(this.caption.asWidget());
  this.setStyleName('gwt-DialogBox');
  this.windowWidth = cgguc.getClientWidth();
  this.clientLeft = cggdc.$getBodyOffsetLeft(cggdc.get_19());
  this.clientTop = cggdc.$getBodyOffsetTop(cggdc.get_19());
  mouseHandler = new cggucu.DialogBox$MouseHandler(this);
  this.addDomHandler(mouseHandler, cggedc.getType_26());
  this.addDomHandler(mouseHandler, cggedc.getType_30());
  this.addDomHandler(mouseHandler, cggedc.getType_27());
  this.addDomHandler(mouseHandler, cggedc.getType_29());
  this.addDomHandler(mouseHandler, cggedc.getType_28());
}
;
defineClass(244, 297, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_230 = function $init_230(){
}
;
_.beginDragging = function beginDragging(event_0){
  this.onMouseDown_1(this.caption.asWidget(), event_0.getX_1(), event_0.getY_1());
}
;
_.continueDragging = function continueDragging(event_0){
  this.onMouseMove_1(this.caption.asWidget(), event_0.getX_1(), event_0.getY_1());
}
;
_.doAttachChildren = function doAttachChildren_2(){
  try {
    getClassPrototype(297).doAttachChildren.call(this);
  }
   finally {
    this.caption.asWidget().onAttach();
  }
}
;
_.doDetachChildren = function doDetachChildren_2(){
  try {
    getClassPrototype(297).doDetachChildren.call(this);
  }
   finally {
    this.caption.asWidget().onDetach();
  }
}
;
_.endDragging = function endDragging(event_0){
  this.onMouseUp_1(this.caption.asWidget(), event_0.getX_1(), event_0.getY_1());
}
;
_.getText = function getText_1(){
  return this.caption.getText();
}
;
_.hide_0 = function hide_1(autoClosed){
  if (isNotNull(this.resizeHandlerRegistration)) {
    this.resizeHandlerRegistration.removeHandler();
    this.resizeHandlerRegistration = null;
  }
  getClassPrototype(142).hide_0.call(this, autoClosed);
}
;
_.isCaptionEvent = function isCaptionEvent(event_0){
  var target;
  target = cggdc.$getEventTarget(event_0);
  if (cggdc.is_1(target)) {
    return cggdc.$isOrHasChild(cggdc.$getParentElement(this.getCellElement(0, 1)), cggdc.as(target));
  }
  return false;
}
;
_.onBrowserEvent = function onBrowserEvent_0(event_0){
  switch (cgguc.$getTypeInt(event_0)) {
    case 4:
    case 8:
    case 64:
    case 16:
    case 32:
      if (!this.dragging && !this.isCaptionEvent(event_0)) {
        return;
      }

  }
  getClassPrototype(22).onBrowserEvent.call(this, event_0);
}
;
_.onMouseDown_1 = function onMouseDown_5(sender, x_0, y_0){
  if (isNull(cgguc.getCaptureElement())) {
    this.dragging = true;
    cgguc.setCapture(this.getElement());
    this.dragStartX = x_0;
    this.dragStartY = y_0;
  }
}
;
_.onMouseEnter = function onMouseEnter(sender){
}
;
_.onMouseLeave = function onMouseLeave(sender){
}
;
_.onMouseMove_1 = function onMouseMove_4(sender, x_0, y_0){
  var absX, absY;
  if (this.dragging) {
    absX = x_0 + this.getAbsoluteLeft();
    absY = y_0 + this.getAbsoluteTop();
    if (absX < this.clientLeft || absX >= this.windowWidth || absY < this.clientTop) {
      return;
    }
    this.setPopupPosition(absX - this.dragStartX, absY - this.dragStartY);
  }
}
;
_.onMouseUp_1 = function onMouseUp_4(sender, x_0, y_0){
  this.dragging = false;
  cgguc.releaseCapture(this.getElement());
}
;
_.onPreviewNativeEvent = function onPreviewNativeEvent_0(event_0){
  var nativeEvent;
  nativeEvent = event_0.getNativeEvent();
  if (!event_0.isCanceled_0() && event_0.getTypeInt() == 4 && this.isCaptionEvent(nativeEvent)) {
    cggdc.$preventDefault(nativeEvent);
  }
  getClassPrototype(142).onPreviewNativeEvent.call(this, event_0);
}
;
_.setHTML = function setHTML(html){
  this.caption.setHTML(html);
}
;
_.setHTML_0 = function setHTML_0(html){
  this.caption.setHTML(cggss.fromTrustedString(html));
}
;
_.setText = function setText_0(text_0){
  this.caption.setText(text_0);
}
;
_.show = function show_0(){
  if (isNull(this.resizeHandlerRegistration)) {
    this.resizeHandlerRegistration = cgguc.addResizeHandler(new cggucu.DialogBox$1(this));
  }
  getClassPrototype(142).show.call(this);
}
;
_.clientLeft = 0;
_.clientTop = 0;
_.dragStartX = 0;
_.dragStartY = 0;
_.dragging = false;
_.windowWidth = 0;
cggucu.DEFAULT_STYLENAME_1 = 'gwt-DialogBox';
cggl.Lcom_google_gwt_user_client_ui_DialogBox_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DialogBox', 244, cggl.Lcom_google_gwt_user_client_ui_DecoratedPopupPanel_2_classLit);
carggead.$clinit_TDialog = function $clinit_TDialog(){
  carggead.$clinit_TDialog = emptyMethod;
  cggucu.$clinit_DialogBox();
}
;
carggead.TDialog = function TDialog(parent_0, title_0){
  carggead.$clinit_TDialog();
  cggucu.DialogBox.call(this);
  this.$init_231();
  this.parent_0 = parent_0;
  this.title_0 = title_0;
  this.setText(title_0);
  this.setAnimationEnabled(true);
  this.setGlassEnabled(false);
  this.buildGUI(cggucu.get_25());
}
;
defineClass(119, 244, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_231 = function $init_231(){
  this.status_0 = (carsg.$clinit_DialogResult() , carsg.IDCANCEL);
}
;
_.doModalAt = function doModalAt(x_0, y_0){
  var element, left, top_0;
  element = this.getElementFromPoint(round_int(x_0), round_int(y_0));
  if (isNotNull(element)) {
    left = cggdc.$getAbsoluteLeft(element);
    top_0 = cggdc.$getAbsoluteTop(element);
    this.onInitialUpdate();
    this.setPopupPositionAndShow(new carggead.TDialog$1(this, left, element, top_0));
    this.setStyles();
    return carsg.$clinit_DialogResult() , carsg.IDOK;
  }
  return carsg.$clinit_DialogResult() , carsg.IDABORT;
}
;
_.getElementFromPoint = function getElementFromPoint(x_0, y_0){
  var curElement = $doc.activeElement;
  return curElement;
}
;
_.onCancel = function onCancel(){
  this.status_0 = (carsg.$clinit_DialogResult() , carsg.IDCANCEL);
  this.onClose_0(this.status_0);
  this.hide();
}
;
_.onClose_0 = function onClose(res){
  if (isNotNull(this.resultHandler)) {
    this.resultHandler.accept_0(res);
  }
}
;
_.onInitialUpdate = function onInitialUpdate(){
}
;
_.onOK = function onOK(){
  this.status_0 = (carsg.$clinit_DialogResult() , carsg.IDOK);
  this.onClose_0(this.status_0);
  this.hide();
}
;
_.querySelector_0 = function querySelector(selectors){
  return $doc.querySelectorAll(selectors);
}
;
_.setResultHandler = function setResultHandler(resultHandler){
  this.resultHandler = resultHandler;
}
;
_.setStyle_0 = function setStyle_0(clz, value_0){
  var i, list, n;
  list = this.querySelector_0(clz);
  for (i = 0; i < cggdc.$getLength(list); i++) {
    n = cggdc.$getItem(list, i);
    cggdc.$setAttribute(n, 'style', value_0);
  }
}
;
_.setStyles = function setStyles(){
  this.setStyle_0('.gwt-Button ', 'padding: 4px');
  this.setStyle_0('.gwt-ComboBox > option ', 'padding: 2px');
  this.setStyle_0('.gwt-ComboBox, .gwt-TextBox, .gwt-Button ', 'font: 12px sans-serif');
  this.setStyle_0('.gwt-Label ', 'font: 12px sans-serif');
  this.setStyle_0('.gwt-DialogBox .dialogTopLeft ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC' + ') no-repeat -13px 0px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==' + ') no-repeat -13px 0px');
  this.setStyle_0('.gwt-DialogBox .dialogTopRight ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC' + ') no-repeat -18px 0px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==' + ') no-repeat -18px 0px');
  this.setStyle_0('.gwt-DialogBox .dialogBottomLeft ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC' + ') no-repeat 0px -15px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==' + ') no-repeat 0px -15px;');
  this.setStyle_0('.gwt-DialogBox .dialogBottomRight ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC' + ') no-repeat -5px -15px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==' + ') no-repeat -5px -15px');
  this.setStyle_0('.gwt-DialogBox .dialogBottomLeftInner ', 'width: 5px;height: 8px;overflow: hidden');
  this.setStyle_0('.gwt-DialogBox .dialogBottomRightInner ', 'width: 5px;height: 8px;zoom: 1;overflow: hidden');
  this.setStyle_0('.gwt-DialogBox .dialogContent ', 'font: 12px sans-serif');
  this.setStyle_0('.gwt-DialogBox .dialogTopLeftInner ', 'width: 5px;overflow: hidden;zoom: 1');
  this.setStyle_0('.gwt-DialogBox .dialogTopRightInner ', 'width: 8px;zoom: 1;overflow: hidden');
  this.setStyle_0('.gwt-DialogBox .dialogTopCenter ', 'font: 16px sans-serif;padding: 2px;background: #D0E4F6');
  this.setStyle_0('.gwt-DialogBox .dialogMiddleCenter ', 'background: #cdcdcd');
  this.setStyle_0('.gwt-DialogBox .dialogBottomCenter ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAACAAAAuOCAYAAABSa16QAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sDCQ8rHZCvpZsAAAddSURBVHja7drxaRRBFAfg2dtJNBsRG7AEwTosyGJsxWtBsQAJHAj5+46wXEJmxjJ+gfmugf34vTfvzS63/Pm3jxL8HUr4BwAAEAfU06+fxyiglPI7DfgbBWzb9iMJWMYYltHkc+B4PGYB+74bRJMPoqf9xSDKHsPsJiilhp+f34Z19GwGtY84oIcBLQ0YbfYE0oDW0yXo6QTa7An0dAItPgnTJRht9mUUvo+4FQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlPrw8DB5AoflEAasacAhDFjXNQuoacAhnkCtk/cAwJqeA8th8knoQgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQByznp5eRBNQxsgnU8PNLLdMnMMJNoAk14RvoASUIRxBfx5rQHNCEb+A+oAQuJCahJvRioglNwtlL4DshAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQH2uWUNtI5zAaw8DWh+TJ/CaTqC12RPQA47ha4uXwDGcfBm5kgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxAHLGGMkATX8/FLDz38DCfTpE9AD8QS6HtADeiCfgCbUhHpg8gS8GQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOT/SXW5XPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAED0V1trkycwxgAAmBzQe1cCAIC5Afl1fL1eo4Dly7fv0RrUdb3JlqC+/xAGvLsPA27DCdzcfUyX4C4LKOlTsNbbLGBJJ1DGEgaU+Dqe/lacLkHp7oTpEhTvhgaREjiG6QTyX8lauAR98s/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxwPL4+DiSgLptmx6YG1D3fc+eglLK1zTgUxRwPp+HUwAAABDdBafTKb4LPkcTKKU8pxO4TwL+A3SZiJzgbXvZAAAAAElFTkSuQmCC' + ') repeat-x 0px -4px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAACAAAAhtCAMAAADEjd0TAAAAAXNSR0IArs4c6QAAAH5QTFRFLUp2ME17NFWHOFySPGKeO2uuQWusPW6yRXK1Q3S7SHnASXvFksHwvby9lcPxmcXxxMTEpMzzq9D0zMzMt9b2utn2vtv319fXxd/43t7e1d/2zOL40OT22eP33ub35ubm5Or45+357+/v7fD38fHx8vT59vf2+Pn8+vv9/////Tw4xQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sCGQ4zNUu6gSAAAAHKSURBVHja7d1HbtwwAEBRpvfiOInjNLe43f+CWeQAH4gGBGf8/votKIqgtBE1fkYD+Ac+RuMkGqfReBeN+2gGyEGuMFHX0RJg+724ixrcRuMmanAZ7QCcRTNALloAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICNIL+1nwDySIHt4DjaAchzD7YDixYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/hus8Bfyq2gJcBHtBziP9gP8jvYD/IqWAN8jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAeeBH1OBb1OBrNL5E43PU4FO0A3AUNfgQNXgfjbcRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUcB/tANxFDW6jGeA6mgGuoiXARdTgPAIAAACAwwH5HnUZAQ8LnEUHAk6jJcBJNLJH0XgcjSfReBqN59F4GY1X0XgdjTfRDJCDnAByJlcAuR5eREuAZ1GD3MT+RDNADvI4WuIqDgPk82Iz+AvBNphaM1gwGgAAAABJRU5ErkJggg==' + ') repeat-x 0px -4px');
  this.setStyle_0('.gwt-DialogBox .dialogMiddleLeft ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgCAYAAACGhPFEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAACkSURBVFiF7dI7CgIxFIXhM5bpLNOYHWQV02d/bsElmC0oktomIKScygtW2gmCGGTwDML52rx+LhlOF7ujox72GcARwNk5tx3H8WU95wwze+5JKe1aa5Nz7u19Zgbv/bqUMoUQes+j1ooY4wbADcB11T3xG91BfbJU9CyK/oK+x19YKnqYc1iTZlE0i6JZFM2iaBZFsyiaRdEsimZRNIuiWRTN8gCbWiVKRnlovQAAAABJRU5ErkJggg==' + ') repeat-y');
  this.setStyle_0('.gwt-DialogBox .dialogMiddleRight ', 'background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgCAYAAACGhPFEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAACkSURBVFiF7dI7CgIxFIXhM5bpLNOYHWQV02d/bsElmC0oktomIKScygtW2gmCGGTwDML52rx+LhlOF7ujox72GcARwNk5tx3H8WU95wwze+5JKe1aa5Nz7u19Zgbv/bqUMoUQes+j1ooY4wbADcB11T3xG91BfbJU9CyK/oK+x19YKnqYc1iTZlE0i6JZFM2iaBZFsyiaRdEsimZRNIuiWRTN8gCbWiVKRnlovQAAAABJRU5ErkJggg==' + ') repeat-y -4px 0px;' + '-background: url(data:image/png;base64,' + 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgBAMAAAB0qux3AAAAAXNSR0IArs4c6QAAAB5QTFRFu7u7xsbG1dXV4ODg0OT25+fn7+/v8fHx9PT0////5hugPAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sCGQ4tO3hDk/gAAAAlSURBVCjPY3ABAkdlzpkThMzCy8tLk8qBoEipgWFUfFR8BIgDALvT/0EuDVlsAAAAAElFTkSuQmCC' + ') repeat-y -4px 0px;');
}
;
carggead.corner = 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAYAAACCyxXxAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AQPDhkFfq7y6QAABAFJREFUWMPtmF9IW1ccxz83CcGmxbnoYrJZMknWEJ1MGlrbSpUWM1YfzMtenOwxzKe97rG4N1/3VObjsHsYDO5gLXIdxQxdpyhiiNLNKNJBrW3Rxj91lyR3D57Yu9D8uzeRMfzC4ebe+z33k985v/O7lyMt/nUAIAFDQATo5kjTgAyMA1o6ayEnmyWb+3kH6AKaxflT4HdgGKCzxfG6j4DcFk2vT0XzAyMZDU3fCVCAdsCj6+MRUB8Q1j/MIiLJh+h1GxjaXJwgnYX0UTCjb4DoYe3AD7IsR/WgCKUVAXi+NMHzpQmAjwtA9LCLgF+W5aHcKHSXAcr3NJfR54yAIcvytgVj8lToec8isquUpjEpi0jhUpKrARoHRop4RoTHlGyAJh62WmzBViMiAF7sZ9vUjOYU1yxqRnO+2M+25Xd4df6m4Yik1KE23njWMqi/YbdKzY1npZupQ+39+jppKBdVOmswomd72dH6OmmwkKG+Thp8tpcdBS5vu2+QzhgbRctbZ6RQKZPwfPT25oPLGYMR2exWqb2USXj8AE1bD1o4HzY0R+XqoqmsUzNaopSpHE9J0MtX2nwpU+plas006J1zlq9Sh9r3hQy7+4c/7q/PeqtSGbaXfxlPt3wonWtsduWSQ81oib1U6o/dtVmfeAsvAE8AQ9HZYkmV/quf/JyYuf/u7uO4H9AnsF8cF4BdYF8cjWXdveUD+q/dGkvM3I8W8K2KYxyYNVXr7i0f0H7t1ph4qL4tieH6FXhoeI56fPbjmrL3dxpv6M2LcWNekapSvcvVRkOv4awrVwqw4N2ZWs37ZKtNRCc2dKegU5Bp2TbmFamjo4N4PK7UFtTQy8Zj8B5V6NqBAPrbHCRmjit0bUBBdU5bXwSHw1HUuGK/dFxUvfCtoYj6+vqKmiYnJ6szdOXIuzOlO/sPF9WKXxO61/ppCfq/1bpqrZOSoHA4LIndjVxmnUh6L5wUaLXmoEgkgqIoN4ArQKu4vA48DIfDn30ztYPpoqooyhgQAEK+DwIOl8sNwNbWZmvyz0fNiqLEUOcerdgvRc1GFACuX+3+9+euy+XG5XI7fpueum56HSmKchcI5UP0EvdCQXXurpkFe8XnDzg0DYo1nz/gEPNnDGS12pxNLjea2IMp1JpcbqxWm9PwHDkvdDWsbacBokAIGOD17uET4CdgHhhzXuiCpGoqGXL715159z3AF8Ci+BPDZuYoWgCiV6fwRM2AQiUgeljIDGigAv+AGZCnAr/HTGWQAGJJdZij/dSgbojmgRVgusdnv2O6qMaS6nd5gJxCogVjSbW7x2f/3PDQxZLq1wUg+cCg8Bqeo9YysykEtH7Z22AYFKzAHzS7jsqV4XX0DwYjSXoAIPcbAAAAAElFTkSuQmCC';
carggead.cornerIE6 = 'iVBORw0KGgoAAAANSUhEUgAAABoAAABDCAMAAAC1FeXDAAAAAXNSR0IArs4c6QAAADxQTFRFAAAAvb29vr6/psvwzMzMvNLnvtPnsbGxksHww9nuwtz1yuH13t/i3uDi0OT28vX68/X69Pb6////u7u7tq5AQwAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2QEQDiMAIKvDAwAAAMxJREFUOMvV1GETgiAMBuChK0jUIv7/fw0XUjK2us4++H7bPTdvTgQAZgo80yhy2Syo3BQSWYWMQgheJqUL2jMRQfNNPpH8wPmbCa1CRiEUyMt0YrTaxXIi8+cknMBSknACQ0EEToCUnxal7VB85SPSul3b+iimhBG+sqVYwnYY7zkasTEOQCX/X29K2W595tHEKYQpRnbmU0+gLH318CEUq2i85Yw1ddeSjv964qU3rNUg3mxLn3R6k+1BKY7SmLB3OT0jV1KTe8se9AD3aUjt61de2QAAAABJRU5ErkJggg==';
carggead.hborder = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAuOCAYAAABSa16QAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sDCQ8rHZCvpZsAAAddSURBVHja7drxaRRBFAfg2dtJNBsRG7AEwTosyGJsxWtBsQAJHAj5+46wXEJmxjJ+gfmugf34vTfvzS63/Pm3jxL8HUr4BwAAEAfU06+fxyiglPI7DfgbBWzb9iMJWMYYltHkc+B4PGYB+74bRJMPoqf9xSDKHsPsJiilhp+f34Z19GwGtY84oIcBLQ0YbfYE0oDW0yXo6QTa7An0dAItPgnTJRht9mUUvo+4FQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlPrw8DB5AoflEAasacAhDFjXNQuoacAhnkCtk/cAwJqeA8th8knoQgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQByznp5eRBNQxsgnU8PNLLdMnMMJNoAk14RvoASUIRxBfx5rQHNCEb+A+oAQuJCahJvRioglNwtlL4DshAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQH2uWUNtI5zAaw8DWh+TJ/CaTqC12RPQA47ha4uXwDGcfBm5kgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxAHLGGMkATX8/FLDz38DCfTpE9AD8QS6HtADeiCfgCbUhHpg8gS8GQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOT/SXW5XPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAED0V1trkycwxgAAmBzQe1cCAIC5Afl1fL1eo4Dly7fv0RrUdb3JlqC+/xAGvLsPA27DCdzcfUyX4C4LKOlTsNbbLGBJJ1DGEgaU+Dqe/lacLkHp7oTpEhTvhgaREjiG6QTyX8lauAR98s/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxwPL4+DiSgLptmx6YG1D3fc+eglLK1zTgUxRwPp+HUwAAABDdBafTKb4LPkcTKKU8pxO4TwL+A3SZiJzgbXvZAAAAAElFTkSuQmCC';
carggead.hborderIE6 = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAhtCAMAAADEjd0TAAAAAXNSR0IArs4c6QAAAH5QTFRFLUp2ME17NFWHOFySPGKeO2uuQWusPW6yRXK1Q3S7SHnASXvFksHwvby9lcPxmcXxxMTEpMzzq9D0zMzMt9b2utn2vtv319fXxd/43t7e1d/2zOL40OT22eP33ub35ubm5Or45+357+/v7fD38fHx8vT59vf2+Pn8+vv9/////Tw4xQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sCGQ4zNUu6gSAAAAHKSURBVHja7d1HbtwwAEBRpvfiOInjNLe43f+CWeQAH4gGBGf8/votKIqgtBE1fkYD+Ac+RuMkGqfReBeN+2gGyEGuMFHX0RJg+724ixrcRuMmanAZ7QCcRTNALloAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICNIL+1nwDySIHt4DjaAchzD7YDixYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/hus8Bfyq2gJcBHtBziP9gP8jvYD/IqWAN8jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAeeBH1OBb1OBrNL5E43PU4FO0A3AUNfgQNXgfjbcRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUcB/tANxFDW6jGeA6mgGuoiXARdTgPAIAAACAwwH5HnUZAQ8LnEUHAk6jJcBJNLJH0XgcjSfReBqN59F4GY1X0XgdjTfRDJCDnAByJlcAuR5eREuAZ1GD3MT+RDNADvI4WuIqDgPk82Iz+AvBNphaM1gwGgAAAABJRU5ErkJggg==';
carggead.vborder = 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgCAYAAACGhPFEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNXG14zYAAACkSURBVFiF7dI7CgIxFIXhM5bpLNOYHWQV02d/bsElmC0oktomIKScygtW2gmCGGTwDML52rx+LhlOF7ujox72GcARwNk5tx3H8WU95wwze+5JKe1aa5Nz7u19Zgbv/bqUMoUQes+j1ooY4wbADcB11T3xG91BfbJU9CyK/oK+x19YKnqYc1iTZlE0i6JZFM2iaBZFsyiaRdEsimZRNIuiWRTN8gCbWiVKRnlovQAAAABJRU5ErkJggg==';
carggead.vborderIE6 = 'iVBORw0KGgoAAAANSUhEUgAAAC0AAAAgBAMAAAB0qux3AAAAAXNSR0IArs4c6QAAAB5QTFRFu7u7xsbG1dXV4ODg0OT25+fn7+/v8fHx9PT0////5hugPAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sCGQ4tO3hDk/gAAAAlSURBVCjPY3ABAkdlzpkThMzCy8tLk8qBoEipgWFUfFR8BIgDALvT/0EuDVlsAAAAAElFTkSuQmCC';
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'TDialog', 119, cggl.Lcom_google_gwt_user_client_ui_DialogBox_2_classLit);
carsged.$clinit_IDialog = function $clinit_IDialog(){
  carsged.$clinit_IDialog = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_dialogs_IDialog_2_classLit = createForInterface('com.actelion.research.share.gui.editor.dialogs', 'IDialog');
carsged.$clinit_IAtomPropertiesDialog = function $clinit_IAtomPropertiesDialog(){
  carsged.$clinit_IAtomPropertiesDialog = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_dialogs_IAtomPropertiesDialog_2_classLit = createForInterface('com.actelion.research.share.gui.editor.dialogs', 'IAtomPropertiesDialog');
carggead.$clinit_AtomPropertiesDialog = function $clinit_AtomPropertiesDialog(){
  carggead.$clinit_AtomPropertiesDialog = emptyMethod;
  carggead.$clinit_TDialog();
}
;
carggead.AtomPropertiesDialog = function AtomPropertiesDialog(stage, mol, atom){
  carggead.$clinit_AtomPropertiesDialog();
  carggead.TDialog.call(this, stage, 'Atom Properties');
  this.$init_232();
  this.molecule_0 = mol;
  this.theAtom = atom;
}
;
defineClass(754, 119, {37:1, 55:1, 31:1, 22:1, 1:1}, carggead.AtomPropertiesDialog);
_.$init_232 = function $init_232(){
  this.atomicNo = 0;
  this.mass = 0;
  this.valence = -1;
  this.state = 0;
}
;
_.doModalAt = function doModalAt_0(x_0, y_0){
  return getClassPrototype(119).doModalAt.call(this, x_0, y_0);
}
;
_.setResultHandler = function setResultHandler_0(resultHandler){
  getClassPrototype(119).setResultHandler.call(this, resultHandler);
}
;
_.buildGUI = function buildGUI(root){
  var buttons, cancel, grid, ok;
  grid = new cggucu.Grid_0(5, 4);
  grid.setCellPadding(0);
  grid.setWidget_0(0, 0, new cggucu.Label_1('Atom Label'));
  this.atomLabel = new cggucu.TextBox;
  grid.setWidget_0(0, 2, this.atomLabel);
  grid.setWidget_0(1, 0, new cggucu.Label_1('Atom Mass'));
  this.atomMass = new cggucu.TextBox;
  grid.setWidget_0(1, 2, this.atomMass);
  grid.setWidget_0(2, 0, new cggucu.Label_1('Atom Valence'));
  this.atomValence = new cggucu.TextBox;
  grid.setWidget_0(2, 2, this.atomValence);
  grid.setWidget_0(3, 0, new cggucu.Label_1('Radical State'));
  this.atomRadicalState = new carggead.ComboBox;
  this.atomRadicalState.addItem('None');
  this.atomRadicalState.addItem('One electron (duplet)');
  this.atomRadicalState.addItem('Two electrons (triplet)');
  this.atomRadicalState.addItem('Two electrons (singulet)');
  grid.setWidget_0(3, 2, this.atomRadicalState);
  buttons = new cggucu.Grid_0(1, 2);
  buttons.setCellPadding(0);
  cancel = new cggucu.Button_0('Cancel');
  buttons.setWidget_0(0, 0, cancel);
  ok = new cggucu.Button_0('OK');
  buttons.setWidget_0(0, 1, ok);
  grid.setWidget_0(4, 2, buttons);
  this.setWidget(grid);
  ok.addClickHandler(new carggead.AtomPropertiesDialog$1(this));
  cancel.addClickHandler(new carggead.AtomPropertiesDialog$2(this));
}
;
_.getAtomicNo_1 = function getAtomicNo_0(){
  return this.atomicNo;
}
;
_.getMass = function getMass(){
  return this.mass;
}
;
_.getRadicalState = function getRadicalState(){
  var index_0, radical;
  index_0 = this.atomRadicalState.getSelectedIndex();
  radical = index_0 == 1?32:index_0 == 2?48:index_0 == 3?16:0;
  return radical;
}
;
_.getState = function getState(){
  return this.state;
}
;
_.getValence = function getValence(){
  return this.valence;
}
;
_.handleOK = function handleOK(){
  carggead.$clinit_AtomPropertiesDialog();
  var atomNo, ignored, mass, ok, radical, symbol, valence;
  ok = true;
  symbol = this.atomLabel.getText();
  this.setAtomicNo_1(carc2.getAtomicNoFromLabel(symbol));
  if (this.getAtomicNo_1() != 0 || jl.equals_Ljava_lang_Object__Z__devirtual$_2(symbol, '?')) {
    this.setState(this.getRadicalState());
    if (!carsgea.isEmptyString(this.atomValence.getText())) {
      try {
        this.setValence(jl.parseInt_2(this.atomValence.getText()));
        if (this.getValence() < 0 || this.getValence() > 15) {
          ok = false;
        }
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 61)) {
          ignored = $e0;
          ok = false;
        }
         else 
          throw toJs($e0);
      }
    }
    if (!carsgea.isEmptyString(this.atomMass.getText())) {
      try {
        this.setMass(jl.parseInt_2(this.atomMass.getText()));
        if (this.getMass() < (carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.getAtomicNo_1()] - 18 || this.getMass() > (carc2.$clinit_Molecule() , carc2.cRoundedMass)[this.getAtomicNo_1()] + 12) {
          ok = false;
        }
      }
       catch ($e1) {
        $e1 = toJava($e1);
        if (instanceOf($e1, 61)) {
          ignored = $e1;
          ok = false;
        }
         else 
          throw toJs($e1);
      }
    }
    if (ok) {
      atomNo = this.getAtomicNo_1();
      mass = this.getMass();
      valence = this.getValence();
      radical = this.getState();
      this.molecule_0.changeAtom_0(this.theAtom, atomNo, mass, valence, radical);
    }
  }
}
;
_.onInitialUpdate = function onInitialUpdate_0(){
  var mass, rad, symbol, val;
  symbol = this.molecule_0.getAtomLabel_0(this.theAtom);
  this.atomLabel.setText(symbol);
  val = this.molecule_0.getAtomAbnormalValence_0(this.theAtom);
  if (val >= 0) {
    this.atomValence.setText(jl.toString_45(val));
  }
  mass = this.molecule_0.getAtomMass_0(this.theAtom);
  if (mass > 0) {
    this.atomMass.setText(jl.toString_45(mass));
  }
  rad = this.molecule_0.getAtomRadical_0(this.theAtom);
  switch (rad) {
    case 0:
      this.atomRadicalState.setSelectedIndex(0);
      break;
    case 16:
      this.atomRadicalState.setSelectedIndex(3);
      break;
    case 32:
      this.atomRadicalState.setSelectedIndex(1);
      break;
    case 48:
      this.atomRadicalState.setSelectedIndex(2);
      break;
    default:this.atomRadicalState.setSelectedIndex(0);
      break;
  }
}
;
_.setAtomicNo_1 = function setAtomicNo_0(atomicNo){
  this.atomicNo = atomicNo;
}
;
_.setMass = function setMass(mass){
  this.mass = mass;
}
;
_.setState = function setState(state){
  this.state = state;
}
;
_.setValence = function setValence(valence){
  this.valence = valence;
}
;
_.atomicNo = 0;
_.mass = 0;
_.state = 0;
_.theAtom = 0;
_.valence = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomPropertiesDialog_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomPropertiesDialog', 754, cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog_2_classLit);
carggead.$clinit_AtomPropertiesDialog$1 = function $clinit_AtomPropertiesDialog$1(){
  carggead.$clinit_AtomPropertiesDialog$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomPropertiesDialog$1 = function AtomPropertiesDialog$1(this$0){
  carggead.$clinit_AtomPropertiesDialog$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_233();
}
;
defineClass(755, 1, {114:1, 21:1, 1:1}, carggead.AtomPropertiesDialog$1);
_.$init_233 = function $init_233(){
}
;
_.onClick = function onClick_0(event_0){
  this.this$01.handleOK();
  this.this$01.onOK();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomPropertiesDialog$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomPropertiesDialog/1', 755, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_AtomPropertiesDialog$2 = function $clinit_AtomPropertiesDialog$2(){
  carggead.$clinit_AtomPropertiesDialog$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomPropertiesDialog$2 = function AtomPropertiesDialog$2(this$0){
  carggead.$clinit_AtomPropertiesDialog$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_234();
}
;
defineClass(756, 1, {114:1, 21:1, 1:1}, carggead.AtomPropertiesDialog$2);
_.$init_234 = function $init_234(){
}
;
_.onClick = function onClick_1(event_0){
  this.this$01.onCancel();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomPropertiesDialog$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomPropertiesDialog/2', 756, cggl.Ljava_lang_Object_2_classLit);
carsged.$clinit_IAtomQueryFeaturesDialog = function $clinit_IAtomQueryFeaturesDialog(){
  carsged.$clinit_IAtomQueryFeaturesDialog = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_dialogs_IAtomQueryFeaturesDialog_2_classLit = createForInterface('com.actelion.research.share.gui.editor.dialogs', 'IAtomQueryFeaturesDialog');
carggead.$clinit_AtomQueryFeaturesDialog = function $clinit_AtomQueryFeaturesDialog(){
  carggead.$clinit_AtomQueryFeaturesDialog = emptyMethod;
  carggead.$clinit_TDialog();
}
;
carggead.AtomQueryFeaturesDialog = function AtomQueryFeaturesDialog(mol, atom, includeReactionHints){
  carggead.$clinit_AtomQueryFeaturesDialog();
  carggead.TDialog.call(this, null, mol.isSelectedAtom_0(atom)?'Multiple Atom Properties':'Atom Properties');
  this.$init_235();
  this.mMol = mol;
  this.mAtom = atom;
  this.includeReactionHints = includeReactionHints;
}
;
defineClass(765, 119, {37:1, 55:1, 31:1, 22:1, 1:1}, carggead.AtomQueryFeaturesDialog);
_.$init_235 = function $init_235(){
}
;
_.doModalAt = function doModalAt_1(x_0, y_0){
  return getClassPrototype(119).doModalAt.call(this, x_0, y_0);
}
;
_.setResultHandler = function setResultHandler_1(resultHandler){
  getClassPrototype(119).setResultHandler.call(this, resultHandler);
}
;
_.buildGUI = function buildGUI_0(root){
  var buttonPanel, grid, panel;
  grid = new cggucu.Grid_0(15, 2);
  grid.setCellPadding(0);
  panel = new cggucu.HorizontalPanel;
  this.mCBAny = new cggucu.CheckBox_1('any atomic number');
  grid.setWidget_0(0, 0, this.mCBAny);
  this.mLabelAtomList = new cggucu.Label_1('allowed atoms:');
  this.mLabelAtomList.setWidth('100px');
  this.mTFAtomList = new cggucu.TextBox;
  this.mTFAtomList.setWidth('80px');
  panel.setWidth('200px');
  panel.add_8(this.mLabelAtomList);
  panel.add_8(this.mTFAtomList);
  grid.setWidget_0(2, 0, panel);
  this.mChoiceArom = new carggead.ComboBox;
  this.mChoiceArom.setWidth('200px');
  this.mChoiceArom.addItem('any aromatic state');
  this.mChoiceArom.addItem('is aromatic');
  this.mChoiceArom.addItem('is not aromatic');
  grid.setWidget_0(3, 0, this.mChoiceArom);
  this.mChoiceRingState = new carggead.ComboBox;
  this.mChoiceRingState.setWidth('200px');
  this.mChoiceRingState.addItem('any ring state');
  this.mChoiceRingState.addItem('is chain atom');
  this.mChoiceRingState.addItem('is any ring atom');
  this.mChoiceRingState.addItem('has 2 ring bonds');
  this.mChoiceRingState.addItem('has 3 ring bonds');
  this.mChoiceRingState.addItem('has >3 ring bonds');
  grid.setWidget_0(4, 0, this.mChoiceRingState);
  this.mChoiceCharge = new carggead.ComboBox;
  this.mChoiceCharge.setWidth('200px');
  this.mChoiceCharge.addItem('any atom charge');
  this.mChoiceCharge.addItem('has no charge');
  this.mChoiceCharge.addItem('has negative charge');
  this.mChoiceCharge.addItem('has positive charge');
  grid.setWidget_0(6, 0, this.mChoiceCharge);
  this.mChoiceNeighbours = new carggead.ComboBox;
  this.mChoiceNeighbours.setWidth('200px');
  this.mChoiceNeighbours.addItem('any non-H neighbour count');
  this.mChoiceNeighbours.addItem('has exactly 1 neighbour');
  this.mChoiceNeighbours.addItem('has exactly 2 neighbours');
  this.mChoiceNeighbours.addItem('has exactly 3 neighbours');
  this.mChoiceNeighbours.addItem('has less than 3 neighbours');
  this.mChoiceNeighbours.addItem('has less than 4 neighbours');
  this.mChoiceNeighbours.addItem('has more than 1 neighbour');
  this.mChoiceNeighbours.addItem('has more than 2 neighbours');
  this.mChoiceNeighbours.addItem('has more than 3 neighbours');
  grid.setWidget_0(7, 0, this.mChoiceNeighbours);
  this.mChoiceHydrogen = new carggead.ComboBox;
  this.mChoiceHydrogen.setWidth('200px');
  this.mChoiceHydrogen.addItem('any hydrogen count');
  this.mChoiceHydrogen.addItem('no hydrogen');
  this.mChoiceHydrogen.addItem('exactly 1 hydrogen');
  this.mChoiceHydrogen.addItem('exactly 2 hydrogens');
  this.mChoiceHydrogen.addItem('at least 1 hydrogen');
  this.mChoiceHydrogen.addItem('at least 2 hydrogens');
  this.mChoiceHydrogen.addItem('at least 3 hydrogens');
  this.mChoiceHydrogen.addItem('less than 2 hydrogens');
  this.mChoiceHydrogen.addItem('less than 3 hydrogens');
  grid.setWidget_0(8, 0, this.mChoiceHydrogen);
  this.mChoicePi = new carggead.ComboBox;
  this.mChoicePi.setWidth('200px');
  this.mChoicePi.addItem('any pi electron count');
  this.mChoicePi.addItem('no pi electrons');
  this.mChoicePi.addItem('exactly 1 pi electron');
  this.mChoicePi.addItem('exactly 2 pi electrons');
  this.mChoicePi.addItem('at least 1 pi electron');
  grid.setWidget_0(9, 0, this.mChoicePi);
  this.mCBBlocked = new cggucu.CheckBox_1('prohibit further substitution');
  grid.setWidget_0(10, 0, this.mCBBlocked);
  this.mCBSubstituted = new cggucu.CheckBox_1('require further substitution');
  grid.setWidget_0(11, 0, this.mCBSubstituted);
  this.mCBMatchStereo = new cggucu.CheckBox_1('match stereo center');
  grid.setWidget_0(12, 0, this.mCBMatchStereo);
  this.mCBExcludeGroup = new cggucu.CheckBox_1('is part of exclude group');
  grid.setWidget_0(13, 0, this.mCBExcludeGroup);
  buttonPanel = new cggucu.HorizontalPanel;
  buttonPanel.setHorizontalAlignment((cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_RIGHT));
  this.cancel = new cggucu.Button_0('Cancel');
  this.ok = new cggucu.Button_0('OK');
  buttonPanel.add_8(this.cancel);
  buttonPanel.add_8(this.ok);
  grid.setWidget_0(14, 1, buttonPanel);
  grid.setWidth('300px');
  grid.setHeight('200px');
  this.setWidget(grid);
  this.setWidth('300px');
  this.setHeight('200px');
  this.setupHandlers_0();
}
;
_.createAtomList = function createAtomList(){
  var atomicNo, delimiterIndex, found, i, i0, label_0, list, listString, newList;
  listString = this.mTFAtomList.getText();
  if (jl.length__I__devirtual$_0(listString) == 0)
    return null;
  list = null;
  do {
    delimiterIndex = jl.indexOf_I_I__devirtual$(listString, 44);
    if (delimiterIndex == -1)
      label_0 = listString;
    else {
      label_0 = jl.substring_II_Ljava_lang_String___devirtual$(listString, 0, delimiterIndex);
      if (delimiterIndex == jl.length__I__devirtual$_0(listString) - 1)
        listString = '';
      else 
        listString = jl.substring_I_Ljava_lang_String___devirtual$(listString, delimiterIndex + 1);
    }
    atomicNo = carc2.getAtomicNoFromLabel(label_0);
    if (atomicNo != 0) {
      if (atomicNo == 1) {
      }
       else if (jsEquals(list, null)) {
        list = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1, 15, 1);
        list[0] = atomicNo;
      }
       else {
        found = false;
        for (i0 = 0; i0 < list.length; i0++) {
          if (atomicNo == list[i0]) {
            found = true;
            break;
          }
        }
        if (!found) {
          newList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, list.length + 1, 15, 1);
          for (i = 0; i < list.length; i++)
            newList[i] = list[i];
          newList[list.length] = atomicNo;
          list = newList;
        }
      }
    }
  }
   while (delimiterIndex != -1);
  if (jsNotEquals(list, null))
    ju.sort_3(list);
  return list;
}
;
_.onInitialUpdate = function onInitialUpdate_1(){
  this.setInitialStates();
}
;
_.setInitialStates = function setInitialStates(){
  var chargeFeatures, hydrogenFeatures, neighbourFeatures, piFeatures, queryFeatures, ringState;
  queryFeatures = this.mMol.getAtomQueryFeatures(this.mAtom);
  if (neq(and_0(queryFeatures, 1), 0)) {
    this.mCBAny.setValue_1(jl.valueOf_20(true));
    this.mLabelAtomList.setText('excluded atoms:');
  }
   else 
    this.mLabelAtomList.setText('allowed atoms:');
  this.mTFAtomList.setText(jsEquals(this.mMol.getAtomList_0(this.mAtom), null)?'':this.mMol.getAtomListString_0(this.mAtom));
  if (neq(and_0(queryFeatures, 2), 0))
    this.mChoiceArom.setSelectedIndex(1);
  else if (neq(and_0(queryFeatures, 4), 0))
    this.mChoiceArom.setSelectedIndex(2);
  ringState = and_0(queryFeatures, 120);
  if (eq(ringState, or_0(or_0(16, 32), 64))) {
    this.mChoiceRingState.setSelectedIndex(1);
  }
   else if (eq(ringState, 8)) {
    this.mChoiceRingState.setSelectedIndex(2);
  }
   else if (eq(ringState, or_0(or_0(8, 32), 64))) {
    this.mChoiceRingState.setSelectedIndex(3);
  }
   else if (eq(ringState, or_0(or_0(8, 16), 64))) {
    this.mChoiceRingState.setSelectedIndex(4);
  }
   else if (eq(ringState, or_0(or_0(8, 16), 32))) {
    this.mChoiceRingState.setSelectedIndex(5);
  }
  neighbourFeatures = and_0(queryFeatures, 4063232);
  if (eq(neighbourFeatures, and_0(4063232, not_0(262144)))) {
    this.mChoiceNeighbours.setSelectedIndex(1);
  }
   else if (eq(neighbourFeatures, and_0(4063232, not_0(524288)))) {
    this.mChoiceNeighbours.setSelectedIndex(2);
  }
   else if (eq(neighbourFeatures, and_0(4063232, not_0(1048576)))) {
    this.mChoiceNeighbours.setSelectedIndex(3);
  }
   else if (eq(neighbourFeatures, or_0(1048576, 2097152))) {
    this.mChoiceNeighbours.setSelectedIndex(4);
  }
   else if (eq(neighbourFeatures, 2097152)) {
    this.mChoiceNeighbours.setSelectedIndex(5);
  }
   else if (eq(neighbourFeatures, or_0(131072, 262144))) {
    this.mChoiceNeighbours.setSelectedIndex(6);
  }
   else if (eq(neighbourFeatures, or_0(or_0(131072, 262144), 524288))) {
    this.mChoiceNeighbours.setSelectedIndex(7);
  }
   else if (eq(neighbourFeatures, and_0(4063232, not_0(2097152)))) {
    this.mChoiceNeighbours.setSelectedIndex(8);
  }
  chargeFeatures = and_0(queryFeatures, 234881024);
  if (eq(chargeFeatures, or_0(33554432, 134217728))) {
    this.mChoiceCharge.setSelectedIndex(1);
  }
   else if (eq(chargeFeatures, or_0(67108864, 134217728))) {
    this.mChoiceCharge.setSelectedIndex(2);
  }
   else if (eq(chargeFeatures, or_0(67108864, 33554432))) {
    this.mChoiceCharge.setSelectedIndex(3);
  }
  hydrogenFeatures = and_0(queryFeatures, 1920);
  if (eq(hydrogenFeatures, or_0(or_0(256, 512), 1024))) {
    this.mChoiceHydrogen.setSelectedIndex(1);
  }
   else if (eq(hydrogenFeatures, or_0(or_0(128, 512), 1024))) {
    this.mChoiceHydrogen.setSelectedIndex(2);
  }
   else if (eq(hydrogenFeatures, or_0(or_0(128, 256), 1024))) {
    this.mChoiceHydrogen.setSelectedIndex(3);
  }
   else if (eq(hydrogenFeatures, 128)) {
    this.mChoiceHydrogen.setSelectedIndex(4);
  }
   else if (eq(hydrogenFeatures, or_0(128, 256))) {
    this.mChoiceHydrogen.setSelectedIndex(5);
  }
   else if (eq(hydrogenFeatures, or_0(or_0(128, 256), 512))) {
    this.mChoiceHydrogen.setSelectedIndex(6);
  }
   else if (eq(hydrogenFeatures, or_0(512, 1024))) {
    this.mChoiceHydrogen.setSelectedIndex(7);
  }
   else if (eq(hydrogenFeatures, 1024)) {
    this.mChoiceHydrogen.setSelectedIndex(8);
  }
  piFeatures = and_0(queryFeatures, 114688);
  if (eq(piFeatures, or_0(32768, 65536))) {
    this.mChoicePi.setSelectedIndex(1);
  }
   else if (eq(piFeatures, or_0(16384, 65536))) {
    this.mChoicePi.setSelectedIndex(2);
  }
   else if (eq(piFeatures, or_0(16384, 32768))) {
    this.mChoicePi.setSelectedIndex(3);
  }
   else if (eq(piFeatures, 16384)) {
    this.mChoicePi.setSelectedIndex(4);
  }
  if (neq(and_0(queryFeatures, 2048), 0))
    this.mCBBlocked.setValue_1(jl.valueOf_20(true));
  if (neq(and_0(queryFeatures, 4096), 0))
    this.mCBSubstituted.setValue_1(jl.valueOf_20(true));
  if (neq(and_0(queryFeatures, 8192), 0))
    this.mCBMatchStereo.setValue_1(jl.valueOf_20(true));
  if (neq(and_0(queryFeatures, 536870912), 0))
    this.mCBExcludeGroup.setValue_1(jl.valueOf_20(true));
}
;
_.setQueryFeatures = function setQueryFeatures(){
  carggead.$clinit_AtomQueryFeaturesDialog();
  var atom, atomList;
  atomList = this.createAtomList();
  if (this.mMol.isSelectedAtom_0(this.mAtom)) {
    for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++)
      if (this.mMol.isSelectedAtom_0(atom))
        this.setQueryFeatures_0(atom, atomList);
  }
   else {
    this.setQueryFeatures_0(this.mAtom, atomList);
  }
}
;
_.setQueryFeatures_0 = function setQueryFeatures_0(atom, atomList){
  var i, queryFeatures, ringBonds;
  queryFeatures = 0;
  if (jl.booleanValue__Z__devirtual$(this.mCBAny.getValue_2())) {
    queryFeatures = or_0(queryFeatures, 1);
    this.mMol.setAtomList_1(atom, atomList, true);
  }
   else 
    this.mMol.setAtomList_1(atom, atomList, false);
  if (!this.mMol.isAromaticAtom_1(atom)) {
    if (this.mChoiceArom.getSelectedIndex() == 1)
      queryFeatures = or_0(queryFeatures, 2);
    else if (this.mChoiceArom.getSelectedIndex() == 2)
      queryFeatures = or_0(queryFeatures, 4);
  }
  ringBonds = 0;
  for (i = 0; i < this.mMol.getConnAtoms_0(atom); i++)
    if (this.mMol.isRingBond_0(this.mMol.getConnBond_0(atom, i)))
      ringBonds++;
  switch (this.mChoiceRingState.getSelectedIndex()) {
    case 1:
      if (ringBonds == 0)
        queryFeatures = or_0(queryFeatures, or_0(or_0(16, 32), 64));
      break;
    case 2:
      queryFeatures = or_0(queryFeatures, 8);
      break;
    case 3:
      if (ringBonds < 3)
        queryFeatures = or_0(queryFeatures, or_0(or_0(8, 32), 64));
      break;
    case 4:
      if (ringBonds < 4)
        queryFeatures = or_0(queryFeatures, or_0(or_0(8, 16), 64));
      break;
    case 5:
      queryFeatures = or_0(queryFeatures, or_0(or_0(8, 16), 32));
      break;
  }
  switch (this.mChoiceCharge.getSelectedIndex()) {
    case 1:
      queryFeatures = or_0(queryFeatures, and_0(234881024, not_0(67108864)));
      break;
    case 2:
      queryFeatures = or_0(queryFeatures, and_0(234881024, not_0(33554432)));
      break;
    case 3:
      queryFeatures = or_0(queryFeatures, and_0(234881024, not_0(134217728)));
      break;
  }
  switch (this.mChoiceNeighbours.getSelectedIndex()) {
    case 1:
      if (this.mMol.getConnAtoms_0(atom) == 1)
        queryFeatures = or_0(queryFeatures, 2048);
      else if (this.mMol.getConnAtoms_0(atom) < 1)
        queryFeatures = or_0(queryFeatures, and_0(4063232, not_0(262144)));
      break;
    case 2:
      if (this.mMol.getConnAtoms_0(atom) == 2)
        queryFeatures = or_0(queryFeatures, 2048);
      else if (this.mMol.getConnAtoms_0(atom) < 2)
        queryFeatures = or_0(queryFeatures, and_0(4063232, not_0(524288)));
      break;
    case 3:
      if (this.mMol.getConnAtoms_0(atom) == 3)
        queryFeatures = or_0(queryFeatures, 2048);
      else if (this.mMol.getConnAtoms_0(atom) < 3)
        queryFeatures = or_0(queryFeatures, and_0(4063232, not_0(1048576)));
      break;
    case 4:
      if (this.mMol.getConnAtoms_0(atom) == 2)
        queryFeatures = or_0(queryFeatures, 2048);
      else if (this.mMol.getConnAtoms_0(atom) < 2)
        queryFeatures = or_0(queryFeatures, or_0(1048576, 2097152));
      break;
    case 5:
      if (this.mMol.getConnAtoms_0(atom) == 3)
        queryFeatures = or_0(queryFeatures, 2048);
      else if (this.mMol.getConnAtoms_0(atom) < 3)
        queryFeatures = or_0(queryFeatures, 2097152);
      break;
    case 6:
      if (this.mMol.getConnAtoms_0(atom) == 1)
        queryFeatures = or_0(queryFeatures, 4096);
      else if (this.mMol.getConnAtoms_0(atom) < 1)
        queryFeatures = or_0(queryFeatures, or_0(131072, 262144));
      break;
    case 7:
      if (this.mMol.getConnAtoms_0(atom) == 2)
        queryFeatures = or_0(queryFeatures, 4096);
      else if (this.mMol.getConnAtoms_0(atom) < 2)
        queryFeatures = or_0(queryFeatures, or_0(or_0(131072, 262144), 524288));
      break;
    case 8:
      if (this.mMol.getConnAtoms_0(atom) == 3)
        queryFeatures = or_0(queryFeatures, 4096);
      else if (this.mMol.getConnAtoms_0(atom) < 3)
        queryFeatures = or_0(queryFeatures, and_0(4063232, not_0(2097152)));
      break;
  }
  switch (this.mChoiceHydrogen.getSelectedIndex()) {
    case 1:
      queryFeatures = or_0(queryFeatures, or_0(or_0(256, 512), 1024));
      break;
    case 2:
      queryFeatures = or_0(queryFeatures, or_0(or_0(128, 512), 1024));
      break;
    case 3:
      queryFeatures = or_0(queryFeatures, or_0(or_0(128, 256), 1024));
      break;
    case 4:
      queryFeatures = or_0(queryFeatures, 128);
      break;
    case 5:
      queryFeatures = or_0(queryFeatures, or_0(128, 256));
      break;
    case 6:
      queryFeatures = or_0(queryFeatures, or_0(or_0(128, 256), 512));
      break;
    case 7:
      queryFeatures = or_0(queryFeatures, or_0(512, 1024));
      break;
    case 8:
      queryFeatures = or_0(queryFeatures, 1024);
      break;
  }
  switch (this.mChoicePi.getSelectedIndex()) {
    case 1:
      queryFeatures = or_0(queryFeatures, or_0(32768, 65536));
      break;
    case 2:
      queryFeatures = or_0(queryFeatures, or_0(16384, 65536));
      break;
    case 3:
      queryFeatures = or_0(queryFeatures, or_0(16384, 32768));
      break;
    case 4:
      queryFeatures = or_0(queryFeatures, 16384);
      break;
  }
  if (jl.booleanValue__Z__devirtual$(this.mCBBlocked.getValue_2()) && (this.mMol.getFreeValence_0(atom) > 0 || this.mMol.getAtomCharge_0(atom) == 0 && (this.mMol.getAtomicNo_0(atom) == 5 || this.mMol.isNitrogenFamily_0(atom) || this.mMol.isChalcogene_0(atom))))
    queryFeatures = or_0(queryFeatures, 2048);
  if (jl.booleanValue__Z__devirtual$(this.mCBSubstituted.getValue_2()) && (this.mMol.getFreeValence_0(atom) > 0 || this.mMol.getAtomCharge_0(atom) == 0 && (this.mMol.getAtomicNo_0(atom) == 5 || this.mMol.isNitrogenFamily_0(atom) || this.mMol.isChalcogene_0(atom))))
    queryFeatures = or_0(queryFeatures, 4096);
  if (jl.booleanValue__Z__devirtual$(this.mCBMatchStereo.getValue_2()))
    queryFeatures = or_0(queryFeatures, 8192);
  if (jl.booleanValue__Z__devirtual$(this.mCBExcludeGroup.getValue_2()))
    queryFeatures = or_0(queryFeatures, 536870912);
  this.mMol.setAtomQueryFeature(atom, -1, false);
  this.mMol.setAtomQueryFeature(atom, queryFeatures, true);
}
;
_.setupHandlers_0 = function setupHandlers_0(){
  this.ok.addClickHandler(new carggead.AtomQueryFeaturesDialog$1(this));
  this.cancel.addClickHandler(new carggead.AtomQueryFeaturesDialog$2(this));
  this.mCBAny.addValueChangeHandler(new carggead.AtomQueryFeaturesDialog$3(this));
  this.mCBBlocked.addValueChangeHandler(new carggead.AtomQueryFeaturesDialog$4(this));
  this.mCBSubstituted.addValueChangeHandler(new carggead.AtomQueryFeaturesDialog$5(this));
}
;
_.includeReactionHints = false;
_.mAtom = 0;
carggead.CB_WIDTH = '200px';
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog', 765, cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog_2_classLit);
carggead.$clinit_AtomQueryFeaturesDialog$1 = function $clinit_AtomQueryFeaturesDialog$1(){
  carggead.$clinit_AtomQueryFeaturesDialog$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$1 = function AtomQueryFeaturesDialog$1(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_236();
}
;
defineClass(766, 1, {114:1, 21:1, 1:1}, carggead.AtomQueryFeaturesDialog$1);
_.$init_236 = function $init_236(){
}
;
_.onClick = function onClick_2(event_0){
  this.this$01.setQueryFeatures();
  this.this$01.onOK();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/1', 766, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_AtomQueryFeaturesDialog$2 = function $clinit_AtomQueryFeaturesDialog$2(){
  carggead.$clinit_AtomQueryFeaturesDialog$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$2 = function AtomQueryFeaturesDialog$2(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_237();
}
;
defineClass(767, 1, {114:1, 21:1, 1:1}, carggead.AtomQueryFeaturesDialog$2);
_.$init_237 = function $init_237(){
}
;
_.onClick = function onClick_3(event_0){
  this.this$01.onCancel();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/2', 767, cggl.Ljava_lang_Object_2_classLit);
cggels.$clinit_ValueChangeHandler = function $clinit_ValueChangeHandler(){
  cggels.$clinit_ValueChangeHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_ValueChangeHandler_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'ValueChangeHandler');
carggead.$clinit_AtomQueryFeaturesDialog$3 = function $clinit_AtomQueryFeaturesDialog$3(){
  carggead.$clinit_AtomQueryFeaturesDialog$3 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$3 = function AtomQueryFeaturesDialog$3(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_238();
}
;
defineClass(768, 1, {252:1, 21:1, 1:1}, carggead.AtomQueryFeaturesDialog$3);
_.$init_238 = function $init_238(){
}
;
_.onValueChange = function onValueChange(event_0){
  if (jl.booleanValue__Z__devirtual$(castToBoolean(event_0.getValue_1())))
    this.this$01.mLabelAtomList.setText('excluded atoms:');
  else 
    this.this$01.mLabelAtomList.setText('allowed atoms:');
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/3', 768, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_AtomQueryFeaturesDialog$4 = function $clinit_AtomQueryFeaturesDialog$4(){
  carggead.$clinit_AtomQueryFeaturesDialog$4 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$4 = function AtomQueryFeaturesDialog$4(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_239();
}
;
defineClass(769, 1, {252:1, 21:1, 1:1}, carggead.AtomQueryFeaturesDialog$4);
_.$init_239 = function $init_239(){
}
;
_.onValueChange = function onValueChange_0(event_0){
  if (jl.booleanValue__Z__devirtual$(castToBoolean(event_0.getValue_1()))) {
    this.this$01.mCBSubstituted.setValue_1(jl.valueOf_20(false));
    this.this$01.mChoiceNeighbours.setSelectedIndex(0);
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/4', 769, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_AtomQueryFeaturesDialog$5 = function $clinit_AtomQueryFeaturesDialog$5(){
  carggead.$clinit_AtomQueryFeaturesDialog$5 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.AtomQueryFeaturesDialog$5 = function AtomQueryFeaturesDialog$5(this$0){
  carggead.$clinit_AtomQueryFeaturesDialog$5();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_240();
}
;
defineClass(770, 1, {252:1, 21:1, 1:1}, carggead.AtomQueryFeaturesDialog$5);
_.$init_240 = function $init_240(){
}
;
_.onValueChange = function onValueChange_1(event_0){
  this.this$01.mCBBlocked.setValue_1(jl.valueOf_20(false));
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_AtomQueryFeaturesDialog$5_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'AtomQueryFeaturesDialog/5', 770, cggl.Ljava_lang_Object_2_classLit);
carsged.$clinit_IBondQueryFeaturesDialog = function $clinit_IBondQueryFeaturesDialog(){
  carsged.$clinit_IBondQueryFeaturesDialog = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_dialogs_IBondQueryFeaturesDialog_2_classLit = createForInterface('com.actelion.research.share.gui.editor.dialogs', 'IBondQueryFeaturesDialog');
carggead.$clinit_BondQueryFeaturesDialog = function $clinit_BondQueryFeaturesDialog(){
  carggead.$clinit_BondQueryFeaturesDialog = emptyMethod;
  carggead.$clinit_TDialog();
}
;
carggead.BondQueryFeaturesDialog = function BondQueryFeaturesDialog(mol, bond){
  carggead.$clinit_BondQueryFeaturesDialog();
  carggead.TDialog.call(this, null, mol.isSelectedAtom_0(mol.getBondAtom_0(0, bond)) && mol.isSelectedAtom_0(mol.getBondAtom_0(1, bond))?'Multiple Bond Properties':'Bond Properties');
  this.$init_241();
  this.mMol = mol;
  this.mBond = bond;
}
;
defineClass(771, 119, {37:1, 55:1, 31:1, 22:1, 1:1}, carggead.BondQueryFeaturesDialog);
_.$init_241 = function $init_241(){
}
;
_.doModalAt = function doModalAt_2(x_0, y_0){
  return getClassPrototype(119).doModalAt.call(this, x_0, y_0);
}
;
_.setResultHandler = function setResultHandler_2(resultHandler){
  getClassPrototype(119).setResultHandler.call(this, resultHandler);
}
;
_.buildGUI = function buildGUI_1(root){
  var cancel, grid, i, itemCount, land, latoms, ok;
  grid = new cggucu.FlexTable;
  land = new cggucu.Label_1('and');
  latoms = new cggucu.Label_1('atoms');
  cancel = new cggucu.Button_0('Cancel');
  ok = new cggucu.Button_0('OK');
  this.mCBSingle = new cggucu.CheckBox_1('Single');
  this.mCBDouble = new cggucu.CheckBox_1('Double');
  this.mCBTriple = new cggucu.CheckBox_1('Triple');
  this.mCBDelocalized = new cggucu.CheckBox_1('Delocalized');
  this.mCBMetalLigand = new cggucu.CheckBox_1('Coordinate (0-order)');
  this.mComboBoxRing = new carggead.ComboBox;
  this.mComboBoxRing.addItem('any ring state');
  this.mComboBoxRing.addItem('is not in a ring');
  this.mComboBoxRing.addItem('is any ring bond');
  this.mComboBoxRing.addItem('is non-aromatic ring bond');
  this.mComboBoxRing.addItem('is aromatic bond');
  this.mComboBoxRingSize = new carggead.ComboBox;
  this.mComboBoxRingSize.addItem('any ring size');
  this.mComboBoxRingSize.addItem('is in 3-membered ring');
  this.mComboBoxRingSize.addItem('is in 4-membered ring');
  this.mComboBoxRingSize.addItem('is in 5-membered ring');
  this.mComboBoxRingSize.addItem('is in 6-membered ring');
  this.mComboBoxRingSize.addItem('is in 7-membered ring');
  this.mCBMatchStereo = new cggucu.CheckBox_1('Match Stereo Configuration');
  this.mCBIsBridge = new cggucu.CheckBox_1('Is atom bridge between');
  this.mComboBoxMinAtoms = new carggead.ComboBox;
  itemCount = 1 << 4;
  for (i = 0; i < itemCount; i++) {
    this.mComboBoxMinAtoms.addItem(jl.toString_45(i));
  }
  this.mComboBoxMaxAtoms = new carggead.ComboBox;
  this.populateComboBoxMaxAtoms(0);
  grid.setCellPadding(0);
  cancel.setWidth('75px');
  ok.setWidth('75px');
  grid.setWidget_0(0, 0, this.mCBSingle);
  grid.setWidget_0(1, 0, this.mCBDouble);
  grid.setWidget_0(2, 0, this.mCBTriple);
  grid.setWidget_0(3, 0, this.mCBDelocalized);
  grid.setWidget_0(4, 0, this.mCBMetalLigand);
  grid.setWidget_0(5, 0, this.mComboBoxRing);
  grid.getFlexCellFormatter().setColSpan(1, 2, 4);
  grid.setWidget_0(1, 2, this.mCBIsBridge);
  grid.setWidget_0(2, 2, this.mComboBoxMinAtoms);
  grid.setWidget_0(2, 3, land);
  grid.setWidget_0(2, 4, this.mComboBoxMaxAtoms);
  grid.setWidget_0(2, 5, latoms);
  grid.getFlexCellFormatter().setColSpan(5, 2, 4);
  grid.setWidget_0(5, 2, this.mComboBoxRingSize);
  grid.getFlexCellFormatter().setColSpan(6, 0, 4);
  grid.setWidget_0(6, 0, this.mCBMatchStereo);
  grid.setWidget_0(7, 4, cancel);
  grid.setWidget_0(7, 5, ok);
  grid.setWidth('350px');
  grid.setHeight('100px');
  this.setWidget(grid);
  this.setWidth('350px');
  this.setHeight('100px');
  this.setupButtonHandlers(cancel, ok);
  this.setupControlHandlers();
}
;
_.enableItems = function enableItems(){
  carggead.$clinit_BondQueryFeaturesDialog();
  var bridgeIsSelected;
  bridgeIsSelected = jl.booleanValue__Z__devirtual$(this.mCBIsBridge.getValue_2());
  this.mCBSingle.setEnabled(!bridgeIsSelected);
  this.mCBDouble.setEnabled(!bridgeIsSelected);
  this.mCBTriple.setEnabled(!bridgeIsSelected);
  this.mCBDelocalized.setEnabled(!bridgeIsSelected);
  this.mCBMetalLigand.setEnabled(!bridgeIsSelected);
  this.mCBMatchStereo.setEnabled(!bridgeIsSelected && this.mMol.getBondOrder_0(this.mBond) == 2 && this.mMol.getBondParity_0(this.mBond) != 0 && this.mMol.getBondParity_0(this.mBond) != 3);
  this.mComboBoxRing.setEnabled(!bridgeIsSelected);
  this.mComboBoxRingSize.setEnabled(!bridgeIsSelected && this.mComboBoxRing.getSelectedIndex() != 1);
  this.mComboBoxMinAtoms.setEnabled(bridgeIsSelected);
  this.mComboBoxMaxAtoms.setEnabled(bridgeIsSelected);
}
;
_.isSelectedBond_1 = function isSelectedBond_0(bond){
  return this.mMol.isSelectedAtom_0(this.mMol.getBondAtom_0(0, bond)) && this.mMol.isSelectedAtom_0(this.mMol.getBondAtom_0(1, bond));
}
;
_.onInitialUpdate = function onInitialUpdate_2(){
  this.mCBMatchStereo.setEnabled((this.mMol.getBondQueryFeatures_0(this.mBond) & 1048576) != 0);
  this.mMol.ensureHelperArrays_0(7);
  this.setInitialStates_0();
}
;
_.populateComboBoxMaxAtoms = function populateComboBoxMaxAtoms(minAtoms){
  carggead.$clinit_BondQueryFeaturesDialog();
  var i, itemCount;
  this.mComboBoxMaxAtoms.clear_0();
  itemCount = 1 << 4;
  for (i = 0; i < itemCount; i++)
    this.mComboBoxMaxAtoms.addItem('' + (minAtoms + i));
  return itemCount;
}
;
_.setInitialStates_0 = function setInitialStates_0(){
  var aromState, atomSpan, bondOrder, minAtoms, queryFeatures, ringSize, ringState;
  queryFeatures = this.mMol.getBondQueryFeatures_0(this.mBond);
  bondOrder = this.mMol.getBondType_0(this.mBond) == 64 || this.mMol.isDelocalizedBond_0(this.mBond)?4:this.mMol.getBondOrder_0(this.mBond);
  if ((queryFeatures & 1) != 0 || bondOrder == 1)
    this.mCBSingle.setValue_1(jl.valueOf_20(true));
  if ((queryFeatures & 2) != 0 || bondOrder == 2)
    this.mCBDouble.setValue_1(jl.valueOf_20(true));
  if ((queryFeatures & 4) != 0 || bondOrder == 3)
    this.mCBTriple.setValue_1(jl.valueOf_20(true));
  if ((queryFeatures & 8) != 0 || bondOrder == 4)
    this.mCBDelocalized.setValue_1(jl.valueOf_20(true));
  if ((queryFeatures & 16) != 0 || bondOrder == 0)
    this.mCBMetalLigand.setValue_1(jl.valueOf_20(true));
  if ((queryFeatures & 1048576) != 0)
    this.mCBMatchStereo.setValue_1(jl.valueOf_20(true));
  this.mComboBoxRing.setSelectedIndex(0);
  ringState = queryFeatures & 384;
  aromState = queryFeatures & 6291456;
  if (ringState == 128)
    this.mComboBoxRing.setSelectedIndex(1);
  else if (aromState == 2097152)
    this.mComboBoxRing.setSelectedIndex(4);
  else if (ringState == 256) {
    if (aromState == 0)
      this.mComboBoxRing.setSelectedIndex(2);
    else if (aromState == 4194304)
      this.mComboBoxRing.setSelectedIndex(3);
  }
  ringSize = (queryFeatures & 917504) >> 17;
  this.mComboBoxRingSize.setSelectedIndex(ringSize == 0?0:ringSize - 2);
  this.mComboBoxMinAtoms.setSelectedIndex(0);
  this.mComboBoxMaxAtoms.setSelectedIndex(0);
  if ((queryFeatures & 130560) != 0) {
    this.mCBIsBridge.setValue_1(jl.valueOf_20(true));
    minAtoms = (queryFeatures & 7680) >> 9;
    atomSpan = (queryFeatures & 122880) >> 13;
    this.mComboBoxMinAtoms.setSelectedIndex(minAtoms);
    this.populateComboBoxMaxAtoms(minAtoms);
    this.mComboBoxMaxAtoms.setSelectedIndex(atomSpan);
  }
  this.enableItems();
}
;
_.setQueryFeatures_1 = function setQueryFeatures_1(){
  carggead.$clinit_BondQueryFeaturesDialog();
  var bond;
  if (this.isSelectedBond_1(this.mBond)) {
    for (bond = 0; bond < this.mMol.getAllBonds_0(); bond++)
      if (this.isSelectedBond_1(bond))
        this.setQueryFeatures_2(bond);
  }
   else {
    this.setQueryFeatures_2(this.mBond);
  }
}
;
_.setQueryFeatures_2 = function setQueryFeatures_2(bond){
  var atomSpan, bondOrder, implicitSize, minAtoms, queryFeatures, ringSize;
  queryFeatures = 0;
  if (jl.booleanValue__Z__devirtual$(this.mCBIsBridge.getValue_2())) {
    minAtoms = this.mComboBoxMinAtoms.getSelectedIndex();
    atomSpan = this.mComboBoxMaxAtoms.getSelectedIndex();
    queryFeatures |= minAtoms << 9;
    queryFeatures |= atomSpan << 13;
    queryFeatures &= ~31;
  }
   else {
    bondOrder = -1;
    if (jl.booleanValue__Z__devirtual$(this.mCBSingle.getValue_2())) {
      this.mMol.setBondType_0(bond, 1);
      bondOrder = 1;
    }
     else if (jl.booleanValue__Z__devirtual$(this.mCBDouble.getValue_2())) {
      this.mMol.setBondType_0(bond, 2);
      bondOrder = 2;
    }
     else if (jl.booleanValue__Z__devirtual$(this.mCBTriple.getValue_2())) {
      this.mMol.setBondType_0(bond, 4);
      bondOrder = 3;
    }
     else if (jl.booleanValue__Z__devirtual$(this.mCBDelocalized.getValue_2())) {
      if (!this.mMol.isDelocalizedBond_0(bond))
        this.mMol.setBondType_0(bond, 64);
      bondOrder = 4;
    }
     else if (jl.booleanValue__Z__devirtual$(this.mCBMetalLigand.getValue_2())) {
      this.mMol.setBondType_0(bond, 32);
      bondOrder = 0;
    }
    if (jl.booleanValue__Z__devirtual$(this.mCBSingle.getValue_2()) && bondOrder != 1)
      queryFeatures |= 1;
    if (jl.booleanValue__Z__devirtual$(this.mCBDouble.getValue_2()) && bondOrder != 2)
      queryFeatures |= 2;
    if (jl.booleanValue__Z__devirtual$(this.mCBTriple.getValue_2()) && bondOrder != 3)
      queryFeatures |= 4;
    if (jl.booleanValue__Z__devirtual$(this.mCBDelocalized.getValue_2()) && bondOrder != 4)
      queryFeatures |= 8;
    if (jl.booleanValue__Z__devirtual$(this.mCBMetalLigand.getValue_2()) && bondOrder != 0)
      queryFeatures |= 16;
    if (jl.booleanValue__Z__devirtual$(this.mCBMatchStereo.getValue_2()))
      queryFeatures |= 1048576;
    if (this.mComboBoxRing.getSelectedIndex() != 0) {
      if (this.mComboBoxRing.getSelectedIndex() == 1) {
        if (!this.mMol.isRingBond_0(bond))
          queryFeatures |= 128;
      }
       else if (this.mComboBoxRing.getSelectedIndex() == 2) {
        if (!this.mMol.isRingBond_0(bond))
          queryFeatures |= 256;
      }
       else if (this.mComboBoxRing.getSelectedIndex() == 3) {
        if (!this.mMol.isAromaticBond_0(bond))
          queryFeatures |= 4194304 | 256;
      }
       else if (this.mComboBoxRing.getSelectedIndex() == 4) {
        if (!this.mMol.isAromaticBond_0(bond))
          queryFeatures |= 2097152;
      }
    }
  }
  if (this.mComboBoxRingSize.getSelectedIndex() != 0) {
    ringSize = this.mComboBoxRingSize.getSelectedIndex() + 2;
    implicitSize = this.mMol.getBondRingSize_0(bond);
    if (ringSize != implicitSize)
      queryFeatures |= ringSize << 17;
  }
  this.mMol.setBondQueryFeature_0(bond, 16777215, false);
  this.mMol.setBondQueryFeature_0(bond, queryFeatures, true);
}
;
_.setupButtonHandlers = function setupButtonHandlers(cancel, ok){
  ok.addClickHandler(new carggead.BondQueryFeaturesDialog$3(this));
  cancel.addClickHandler(new carggead.BondQueryFeaturesDialog$4(this));
}
;
_.setupControlHandlers = function setupControlHandlers(){
  this.mComboBoxMinAtoms.addClickHandler(new carggead.BondQueryFeaturesDialog$1(this));
  this.mCBIsBridge.addClickHandler(new carggead.BondQueryFeaturesDialog$2(this));
}
;
_.mBond = 0;
_.mFirstSpanItem = 0;
carggead.BUTTON_WIDTH = '75px';
carggead.CLIENT_HEIGHT = '100px';
carggead.CLIENT_WIDTH = '350px';
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog', 771, cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog_2_classLit);
carggead.$clinit_BondQueryFeaturesDialog$1 = function $clinit_BondQueryFeaturesDialog$1(){
  carggead.$clinit_BondQueryFeaturesDialog$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.BondQueryFeaturesDialog$1 = function BondQueryFeaturesDialog$1(this$0){
  carggead.$clinit_BondQueryFeaturesDialog$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_242();
}
;
defineClass(772, 1, {114:1, 21:1, 1:1}, carggead.BondQueryFeaturesDialog$1);
_.$init_242 = function $init_242(){
}
;
_.onClick = function onClick_4(event_0){
  var itemCount, maxAtoms, minAtoms;
  minAtoms = this.this$01.mComboBoxMinAtoms.getSelectedIndex();
  if (this.this$01.mFirstSpanItem != minAtoms) {
    maxAtoms = this.this$01.mFirstSpanItem + this.this$01.mComboBoxMaxAtoms.getSelectedIndex();
    itemCount = this.this$01.populateComboBoxMaxAtoms(minAtoms);
    if (maxAtoms < minAtoms)
      this.this$01.mComboBoxMaxAtoms.setSelectedIndex(0);
    else if (maxAtoms < minAtoms + itemCount)
      this.this$01.mComboBoxMaxAtoms.setSelectedIndex(maxAtoms - minAtoms);
    else 
      this.this$01.mComboBoxMaxAtoms.setSelectedIndex(itemCount - 1);
    this.this$01.mFirstSpanItem = minAtoms;
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog/1', 772, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_BondQueryFeaturesDialog$2 = function $clinit_BondQueryFeaturesDialog$2(){
  carggead.$clinit_BondQueryFeaturesDialog$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.BondQueryFeaturesDialog$2 = function BondQueryFeaturesDialog$2(this$0){
  carggead.$clinit_BondQueryFeaturesDialog$2();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_243();
}
;
defineClass(773, 1, {114:1, 21:1, 1:1}, carggead.BondQueryFeaturesDialog$2);
_.$init_243 = function $init_243(){
}
;
_.onClick = function onClick_5(event_0){
  this.this$01.enableItems();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog$2_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog/2', 773, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_BondQueryFeaturesDialog$3 = function $clinit_BondQueryFeaturesDialog$3(){
  carggead.$clinit_BondQueryFeaturesDialog$3 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.BondQueryFeaturesDialog$3 = function BondQueryFeaturesDialog$3(this$0){
  carggead.$clinit_BondQueryFeaturesDialog$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_244();
}
;
defineClass(774, 1, {114:1, 21:1, 1:1}, carggead.BondQueryFeaturesDialog$3);
_.$init_244 = function $init_244(){
}
;
_.onClick = function onClick_6(event_0){
  this.this$01.setQueryFeatures_1();
  this.this$01.onOK();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog$3_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog/3', 774, cggl.Ljava_lang_Object_2_classLit);
carggead.$clinit_BondQueryFeaturesDialog$4 = function $clinit_BondQueryFeaturesDialog$4(){
  carggead.$clinit_BondQueryFeaturesDialog$4 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.BondQueryFeaturesDialog$4 = function BondQueryFeaturesDialog$4(this$0){
  carggead.$clinit_BondQueryFeaturesDialog$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_245();
}
;
defineClass(775, 1, {114:1, 21:1, 1:1}, carggead.BondQueryFeaturesDialog$4);
_.$init_245 = function $init_245(){
}
;
_.onClick = function onClick_7(event_0){
  this.this$01.onCancel();
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_BondQueryFeaturesDialog$4_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'BondQueryFeaturesDialog/4', 775, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_SourcesClickEvents = function $clinit_SourcesClickEvents(){
  cggucu.$clinit_SourcesClickEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesClickEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesClickEvents');
cggedc.$clinit_HasClickHandlers = function $clinit_HasClickHandlers(){
  cggedc.$clinit_HasClickHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasClickHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasClickHandlers');
cggedc.$clinit_HasDoubleClickHandlers = function $clinit_HasDoubleClickHandlers(){
  cggedc.$clinit_HasDoubleClickHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDoubleClickHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDoubleClickHandlers');
cggucu.$clinit_Focusable = function $clinit_Focusable(){
  cggucu.$clinit_Focusable = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_Focusable_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'Focusable');
cggucu.$clinit_SourcesFocusEvents = function $clinit_SourcesFocusEvents(){
  cggucu.$clinit_SourcesFocusEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesFocusEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesFocusEvents');
cggucu.$clinit_SourcesKeyboardEvents = function $clinit_SourcesKeyboardEvents(){
  cggucu.$clinit_SourcesKeyboardEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesKeyboardEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesKeyboardEvents');
cggucu.$clinit_HasFocus = function $clinit_HasFocus(){
  cggucu.$clinit_HasFocus = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasFocus_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasFocus');
cggucu.$clinit_HasEnabled = function $clinit_HasEnabled(){
  cggucu.$clinit_HasEnabled = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasEnabled_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasEnabled');
cggedc.$clinit_HasDragEndHandlers = function $clinit_HasDragEndHandlers(){
  cggedc.$clinit_HasDragEndHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragEndHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragEndHandlers');
cggedc.$clinit_HasDragEnterHandlers = function $clinit_HasDragEnterHandlers(){
  cggedc.$clinit_HasDragEnterHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragEnterHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragEnterHandlers');
cggedc.$clinit_HasDragLeaveHandlers = function $clinit_HasDragLeaveHandlers(){
  cggedc.$clinit_HasDragLeaveHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragLeaveHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragLeaveHandlers');
cggedc.$clinit_HasDragHandlers = function $clinit_HasDragHandlers(){
  cggedc.$clinit_HasDragHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragHandlers');
cggedc.$clinit_HasDragOverHandlers = function $clinit_HasDragOverHandlers(){
  cggedc.$clinit_HasDragOverHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragOverHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragOverHandlers');
cggedc.$clinit_HasDragStartHandlers = function $clinit_HasDragStartHandlers(){
  cggedc.$clinit_HasDragStartHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDragStartHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDragStartHandlers');
cggedc.$clinit_HasDropHandlers = function $clinit_HasDropHandlers(){
  cggedc.$clinit_HasDropHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasDropHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasDropHandlers');
cggedc.$clinit_HasAllDragAndDropHandlers = function $clinit_HasAllDragAndDropHandlers(){
  cggedc.$clinit_HasAllDragAndDropHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllDragAndDropHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllDragAndDropHandlers');
cggedc.$clinit_HasFocusHandlers = function $clinit_HasFocusHandlers(){
  cggedc.$clinit_HasFocusHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasFocusHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasFocusHandlers');
cggedc.$clinit_HasBlurHandlers = function $clinit_HasBlurHandlers(){
  cggedc.$clinit_HasBlurHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasBlurHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasBlurHandlers');
cggedc.$clinit_HasAllFocusHandlers = function $clinit_HasAllFocusHandlers(){
  cggedc.$clinit_HasAllFocusHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllFocusHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllFocusHandlers');
cggedc.$clinit_HasGestureStartHandlers = function $clinit_HasGestureStartHandlers(){
  cggedc.$clinit_HasGestureStartHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasGestureStartHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasGestureStartHandlers');
cggedc.$clinit_HasGestureChangeHandlers = function $clinit_HasGestureChangeHandlers(){
  cggedc.$clinit_HasGestureChangeHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasGestureChangeHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasGestureChangeHandlers');
cggedc.$clinit_HasGestureEndHandlers = function $clinit_HasGestureEndHandlers(){
  cggedc.$clinit_HasGestureEndHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasGestureEndHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasGestureEndHandlers');
cggedc.$clinit_HasAllGestureHandlers = function $clinit_HasAllGestureHandlers(){
  cggedc.$clinit_HasAllGestureHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllGestureHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllGestureHandlers');
cggedc.$clinit_HasKeyUpHandlers = function $clinit_HasKeyUpHandlers(){
  cggedc.$clinit_HasKeyUpHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasKeyUpHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasKeyUpHandlers');
cggedc.$clinit_HasKeyDownHandlers = function $clinit_HasKeyDownHandlers(){
  cggedc.$clinit_HasKeyDownHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasKeyDownHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasKeyDownHandlers');
cggedc.$clinit_HasKeyPressHandlers = function $clinit_HasKeyPressHandlers(){
  cggedc.$clinit_HasKeyPressHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasKeyPressHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasKeyPressHandlers');
cggedc.$clinit_HasAllKeyHandlers = function $clinit_HasAllKeyHandlers(){
  cggedc.$clinit_HasAllKeyHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllKeyHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllKeyHandlers');
cggedc.$clinit_HasMouseDownHandlers = function $clinit_HasMouseDownHandlers(){
  cggedc.$clinit_HasMouseDownHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseDownHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseDownHandlers');
cggedc.$clinit_HasMouseUpHandlers = function $clinit_HasMouseUpHandlers(){
  cggedc.$clinit_HasMouseUpHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseUpHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseUpHandlers');
cggedc.$clinit_HasMouseOutHandlers = function $clinit_HasMouseOutHandlers(){
  cggedc.$clinit_HasMouseOutHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseOutHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseOutHandlers');
cggedc.$clinit_HasMouseOverHandlers = function $clinit_HasMouseOverHandlers(){
  cggedc.$clinit_HasMouseOverHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseOverHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseOverHandlers');
cggedc.$clinit_HasMouseMoveHandlers = function $clinit_HasMouseMoveHandlers(){
  cggedc.$clinit_HasMouseMoveHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseMoveHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseMoveHandlers');
cggedc.$clinit_HasMouseWheelHandlers = function $clinit_HasMouseWheelHandlers(){
  cggedc.$clinit_HasMouseWheelHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasMouseWheelHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasMouseWheelHandlers');
cggedc.$clinit_HasAllMouseHandlers = function $clinit_HasAllMouseHandlers(){
  cggedc.$clinit_HasAllMouseHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllMouseHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllMouseHandlers');
cggedc.$clinit_HasTouchStartHandlers = function $clinit_HasTouchStartHandlers(){
  cggedc.$clinit_HasTouchStartHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasTouchStartHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasTouchStartHandlers');
cggedc.$clinit_HasTouchMoveHandlers = function $clinit_HasTouchMoveHandlers(){
  cggedc.$clinit_HasTouchMoveHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasTouchMoveHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasTouchMoveHandlers');
cggedc.$clinit_HasTouchEndHandlers = function $clinit_HasTouchEndHandlers(){
  cggedc.$clinit_HasTouchEndHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasTouchEndHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasTouchEndHandlers');
cggedc.$clinit_HasTouchCancelHandlers = function $clinit_HasTouchCancelHandlers(){
  cggedc.$clinit_HasTouchCancelHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasTouchCancelHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasTouchCancelHandlers');
cggedc.$clinit_HasAllTouchHandlers = function $clinit_HasAllTouchHandlers(){
  cggedc.$clinit_HasAllTouchHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasAllTouchHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasAllTouchHandlers');
cggucu.$clinit_SourcesMouseEvents = function $clinit_SourcesMouseEvents(){
  cggucu.$clinit_SourcesMouseEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesMouseEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesMouseEvents');
cggucu.$clinit_FocusWidget = function $clinit_FocusWidget(){
  cggucu.$clinit_FocusWidget = emptyMethod;
  cggucu.$clinit_Widget();
  cggucu.impl_1 = cggucui.getFocusImplForWidget();
}
;
cggucu.FocusWidget = function FocusWidget(){
  cggucu.$clinit_FocusWidget();
  cggucu.Widget.call(this);
  this.$init_246();
}
;
cggucu.FocusWidget_0 = function FocusWidget_0(elem){
  cggucu.$clinit_FocusWidget();
  cggucu.Widget.call(this);
  this.$init_246();
  this.setElement(elem);
}
;
defineClass(227, 22, {37:1, 31:1, 22:1, 1:1});
_.$init_246 = function $init_246(){
}
;
_.addBlurHandler = function addBlurHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_13());
}
;
_.addClickHandler = function addClickHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.addFocusHandler = function addFocusHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_21());
}
;
_.addKeyDownHandler = function addKeyDownHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_22());
}
;
_.addKeyPressHandler = function addKeyPressHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_23());
}
;
_.addKeyUpHandler = function addKeyUpHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_24());
}
;
_.addMouseDownHandler = function addMouseDownHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_26());
}
;
_.addMouseMoveHandler = function addMouseMoveHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_27());
}
;
_.addMouseOutHandler = function addMouseOutHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_28());
}
;
_.addMouseUpHandler = function addMouseUpHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_30());
}
;
_.addTouchCancelHandler = function addTouchCancelHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_31());
}
;
_.addTouchEndHandler = function addTouchEndHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_32());
}
;
_.addTouchMoveHandler = function addTouchMoveHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_33());
}
;
_.addTouchStartHandler = function addTouchStartHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_34());
}
;
_.getTabIndex = function getTabIndex(){
  return cggucu.impl_1.getTabIndex_0(this.getElement());
}
;
_.isEnabled = function isEnabled(){
  return !cggdc.$getPropertyBoolean(this.getElement(), 'disabled');
}
;
_.onAttach = function onAttach_0(){
  var tabIndex;
  getClassPrototype(22).onAttach.call(this);
  tabIndex = this.getTabIndex();
  if (-1 == tabIndex) {
    this.setTabIndex(0);
  }
}
;
_.setEnabled = function setEnabled(enabled){
  cggdc.$setPropertyBoolean_0(this.getElement(), 'disabled', !enabled);
}
;
_.setFocus = function setFocus(focused){
  if (focused) {
    cggucu.impl_1.focus_1(this.getElement());
  }
   else {
    cggucu.impl_1.blur_1(this.getElement());
  }
}
;
_.setTabIndex = function setTabIndex(index_0){
  cggucu.impl_1.setTabIndex_0(this.getElement(), index_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit = createForClass('com.google.gwt.user.client.ui', 'FocusWidget', 227, cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit);
cggucu.$clinit_SourcesChangeEvents = function $clinit_SourcesChangeEvents(){
  cggucu.$clinit_SourcesChangeEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesChangeEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesChangeEvents');
cggedc.$clinit_HasChangeHandlers = function $clinit_HasChangeHandlers(){
  cggedc.$clinit_HasChangeHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasChangeHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasChangeHandlers');
cggucu.$clinit_HasName = function $clinit_HasName(){
  cggucu.$clinit_HasName = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasName_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasName');
cggis.$clinit_HasDirectionEstimator = function $clinit_HasDirectionEstimator(){
  cggis.$clinit_HasDirectionEstimator = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_shared_HasDirectionEstimator_2_classLit = createForInterface('com.google.gwt.i18n.shared', 'HasDirectionEstimator');
cggucu.$clinit_ListBox = function $clinit_ListBox(){
  cggucu.$clinit_ListBox = emptyMethod;
  cggucu.$clinit_FocusWidget();
  cggucu.DEFAULT_DIRECTION_ESTIMATOR = cggis.get_23();
  cggucu.INSERT_AT_END = -1;
}
;
cggucu.ListBox = function ListBox(){
  cggucu.$clinit_ListBox();
  cggucu.FocusWidget_0.call(this, cggdc.$createSelectElement(cggdc.get_19()));
  this.$init_247();
  this.setStyleName('gwt-ListBox');
}
;
defineClass(787, 227, {37:1, 31:1, 22:1, 1:1});
_.$init_247 = function $init_247(){
}
;
_.addChangeHandler = function addChangeHandler(handler){
  return this.addDomHandler(handler, cggedc.getType_14());
}
;
_.addItem = function addItem(item_0){
  this.insertItem(item_0, -1);
}
;
_.clear_0 = function clear_10(){
  cggdc.$clear(this.getSelectElement());
}
;
_.getName_0 = function getName_4(){
  return cggdc.$getName_1(this.getSelectElement());
}
;
_.getSelectElement = function getSelectElement(){
  return cggcc.$cast(this.getElement());
}
;
_.getSelectedIndex = function getSelectedIndex(){
  return cggdc.$getSelectedIndex(this.getSelectElement());
}
;
_.insertItem = function insertItem(item_0, index_0){
  this.insertItem_1(item_0, item_0, index_0);
}
;
_.insertItem_0 = function insertItem_0(item_0, dir_0, value_0, index_0){
  var before, itemCount, option, select;
  select = this.getSelectElement();
  option = cggdc.$createOptionElement(cggdc.get_19());
  this.setOptionText(option, item_0, dir_0);
  cggdc.$setValue_1(option, value_0);
  itemCount = cggdc.$getLength_0(select);
  if (index_0 < 0 || index_0 > itemCount) {
    index_0 = itemCount;
  }
  if (index_0 == itemCount) {
    cggdc.$add(select, option, null);
  }
   else {
    before = cggdc.$getItem(cggdc.$getOptions(select), index_0);
    cggdc.$add(select, option, before);
  }
}
;
_.insertItem_1 = function insertItem_1(item_0, value_0, index_0){
  this.insertItem_0(item_0, null, value_0, index_0);
}
;
_.setDirectionEstimator = function setDirectionEstimator(directionEstimator){
  this.estimator = directionEstimator;
}
;
_.setName_0 = function setName_2(name_0){
  cggdc.$setName_1(this.getSelectElement(), name_0);
}
;
_.setOptionText = function setOptionText(option, text_0, dir_0){
  var formattedText;
  if (isNull(dir_0) && isNotNull(this.estimator)) {
    dir_0 = this.estimator.estimateDirection(text_0);
  }
  if (isNull(dir_0)) {
    cggdc.$setText(option, text_0);
    cggdc.$removeAttribute(option, 'bidiwrapped');
  }
   else {
    formattedText = cggis.getInstanceForCurrentLocale().unicodeWrapWithKnownDir(dir_0, text_0, false, false);
    cggdc.$setText(option, formattedText);
    if (jl.length__I__devirtual$_0(formattedText) > jl.length__I__devirtual$_0(text_0)) {
      cggdc.$setAttribute(option, 'bidiwrapped', '');
    }
     else {
      cggdc.$removeAttribute(option, 'bidiwrapped');
    }
  }
}
;
_.setSelectedIndex = function setSelectedIndex(index_0){
  cggdc.$setSelectedIndex(this.getSelectElement(), index_0);
}
;
_.setVisibleItemCount = function setVisibleItemCount(visibleItems){
  cggdc.$setSize_0(this.getSelectElement(), visibleItems);
}
;
cggucu.BIDI_ATTR_NAME = 'bidiwrapped';
cggucu.INSERT_AT_END = 0;
cggl.Lcom_google_gwt_user_client_ui_ListBox_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ListBox', 787, cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit);
carggead.$clinit_ComboBox = function $clinit_ComboBox(){
  carggead.$clinit_ComboBox = emptyMethod;
  cggucu.$clinit_ListBox();
}
;
carggead.ComboBox = function ComboBox(){
  carggead.$clinit_ComboBox();
  cggucu.ListBox.call(this);
  this.$init_248();
  this.setVisibleItemCount(1);
  this.setStyleName('gwt-ComboBox');
}
;
defineClass(98, 787, {37:1, 31:1, 22:1, 1:1}, carggead.ComboBox);
_.$init_248 = function $init_248(){
}
;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_ComboBox_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'ComboBox', 98, cggl.Lcom_google_gwt_user_client_ui_ListBox_2_classLit);
carggead.$clinit_TDialog$1 = function $clinit_TDialog$1(){
  carggead.$clinit_TDialog$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggead.TDialog$1 = function TDialog$1(this$0, val$left, val$element, val$top){
  carggead.$clinit_TDialog$1();
  this.this$01 = this$0;
  this.val$left2 = val$left;
  this.val$element3 = val$element;
  this.val$top4 = val$top;
  Object_0.call(this);
  this.$init_249();
}
;
defineClass(757, 1, {1:1}, carggead.TDialog$1);
_.$init_249 = function $init_249(){
}
;
_.setPosition = function setPosition_0(offsetWidth, offsetHeight){
  this.this$01.setPopupPosition(this.val$left2 + narrow_int((cggdc.$getOffsetWidth(this.val$element3) - offsetWidth) / 2), $wnd.Math.max(this.val$top4, this.val$top4 + narrow_int((cggdc.$getOffsetHeight(this.val$element3) - offsetHeight) / 2)));
}
;
_.val$left2 = 0;
_.val$top4 = 0;
cggl.Lcom_actelion_research_gwt_gui_editor_actions_dialogs_TDialog$1_2_classLit = createForClass('com.actelion.research.gwt.gui.editor.actions.dialogs', 'TDialog/1', 757, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_GWTDepictor = function $clinit_GWTDepictor(){
  carggv.$clinit_GWTDepictor = emptyMethod;
  carc2.$clinit_AbstractDepictor();
  carggv.MOLECULECOLORS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_gwt_gui_viewer_GWTDepictor$ColorMap_2_classLit, 1), {4:1, 1:1, 7:1}, 108, 0, [new carggv.GWTDepictor$ColorMap(0, cggcdc.make_0('BLACK')), new carggv.GWTDepictor$ColorMap(64, cggcdc.make_0('BLUE')), new carggv.GWTDepictor$ColorMap(128, cggcdc.make_0('RED')), new carggv.GWTDepictor$ColorMap(192, cggcdc.make_0('GREEN')), new carggv.GWTDepictor$ColorMap(256, cggcdc.make_0('MAGENTA')), new carggv.GWTDepictor$ColorMap(320, cggcdc.make_0('ORANGE')), new carggv.GWTDepictor$ColorMap(384, cggcdc.make(0, 160, 0)), new carggv.GWTDepictor$ColorMap(448, cggcdc.make(160, 0, 0))]);
}
;
carggv.GWTDepictor = function GWTDepictor(mol){
  carggv.$clinit_GWTDepictor();
  carggv.GWTDepictor_0.call(this, mol, 0);
}
;
carggv.GWTDepictor_0 = function GWTDepictor_0(mol, displayMode){
  carggv.$clinit_GWTDepictor();
  carc2.AbstractDepictor.call(this, mol, displayMode);
  this.$init_250();
}
;
defineClass(167, 134, {134:1, 1:1}, carggv.GWTDepictor, carggv.GWTDepictor_0);
_.$init_250 = function $init_250(){
  this.ctx = null;
  this.currentColor = cggcdc.make_0('BLACK');
  this.textSize = 8;
  this.currentFont = this.textSize + 'px Helvetica';
}
;
_.drawBlackLine = function drawBlackLine_0(theLine){
  cggcdc.$beginPath(this.ctx);
  cggcdc.$setStrokeStyle(this.ctx, this.currentColor);
  cggcdc.$moveTo(this.ctx, theLine.x1, theLine.y1);
  cggcdc.$lineTo(this.ctx, theLine.x2, theLine.y2);
  cggcdc.$stroke(this.ctx);
}
;
_.drawDottedLine = function drawDottedLine_0(theLine){
  cggcdc.$beginPath(this.ctx);
  cggcdc.$setStrokeStyle(this.ctx, this.currentColor);
  cggcdc.$setLineCap(this.ctx, (cggcdc.$clinit_Context2d$LineCap() , cggcdc.ROUND));
  cggcdc.$moveTo(this.ctx, theLine.x1, theLine.y1);
  cggcdc.$lineTo(this.ctx, theLine.x2, theLine.y2);
  cggcdc.$stroke(this.ctx);
}
;
_.drawPolygon = function drawPolygon_0(p){
  var i;
  cggcdc.$setStrokeStyle(this.ctx, this.currentColor);
  cggcdc.$setFillStyle(this.ctx, this.currentColor);
  cggcdc.$beginPath(this.ctx);
  cggcdc.$moveTo(this.ctx, p.getX(0), p.getY(0));
  for (i = 1; i < p.getSize_0(); i++) {
    cggcdc.$lineTo(this.ctx, p.getX(i), p.getY(i));
  }
  cggcdc.$closePath(this.ctx);
  cggcdc.$fill(this.ctx);
}
;
_.drawString = function drawString_1(theString, x_0, y_0){
  cggcdc.$setFont(this.ctx, this.currentFont);
  cggcdc.$setTextAlign(this.ctx, (cggcdc.$clinit_Context2d$TextAlign() , cggcdc.CENTER));
  cggcdc.$setTextBaseline(this.ctx, (cggcdc.$clinit_Context2d$TextBaseline() , cggcdc.MIDDLE));
  cggcdc.$setFillStyle(this.ctx, this.currentColor);
  cggcdc.$fillText(this.ctx, theString, x_0, y_0);
}
;
_.fillCircle = function fillCircle_0(x_0, y_0, d){
  cggcdc.$setFillStyle(this.ctx, this.currentColor);
  cggcdc.$beginPath(this.ctx);
  cggcdc.$arc(this.ctx, x_0 + d / 2, y_0 + d / 2, d / 2, 0, 3.141592653589793 * 2);
  cggcdc.$fill(this.ctx);
}
;
_.getStringWidth = function getStringWidth_0(theString){
  var tm;
  if (isNotNull(this.ctx)) {
    tm = cggcdc.$measureText(this.ctx, theString);
    return cggcdc.$getWidth(tm);
  }
  return 8;
}
;
_.getTextSize = function getTextSize_0(){
  return this.textSize;
}
;
_.paint = function paint_3(g){
  if (instanceOfJso(g)) {
    this.ctx = castToJso(g);
  }
  getClassPrototype(134).paint.call(this, g);
}
;
_.setLineWidth = function setLineWidth_0(lineWidth){
  this.lineWidth_0 = lineWidth;
}
;
_.setRGB = function setRGB_0(rgb){
  this.currentColor = cggcdc.make((rgb & 16711680) >> 16, (rgb & 65280) >> 8, rgb & 255);
}
;
_.setTextSize = function setTextSize_0(theSize){
  this.textSize = theSize;
  this.currentFont = theSize + 'px Helvetica';
}
;
_.lineWidth_0 = 0;
_.textSize = 0;
cggl.Lcom_actelion_research_gwt_gui_viewer_GWTDepictor_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'GWTDepictor', 167, cggl.Lcom_actelion_research_chem_AbstractDepictor_2_classLit);
carggv.$clinit_GWTDepictor$ColorMap = function $clinit_GWTDepictor$ColorMap(){
  carggv.$clinit_GWTDepictor$ColorMap = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.GWTDepictor$ColorMap = function GWTDepictor$ColorMap(m, c){
  carggv.$clinit_GWTDepictor$ColorMap();
  Object_0.call(this);
  this.$init_251();
  this.molcol = m;
  this.color_0 = c;
}
;
defineClass(108, 1, {108:1, 1:1}, carggv.GWTDepictor$ColorMap);
_.$init_251 = function $init_251(){
}
;
_.molcol = 0;
cggl.Lcom_actelion_research_gwt_gui_viewer_GWTDepictor$ColorMap_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'GWTDepictor/ColorMap', 108, cggl.Ljava_lang_Object_2_classLit);
carsgeg.$clinit_IDrawContext = function $clinit_IDrawContext(){
  carsgeg.$clinit_IDrawContext = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_geom_IDrawContext_2_classLit = createForInterface('com.actelion.research.share.gui.editor.geom', 'IDrawContext');
carggv.$clinit_GraphicsContext = function $clinit_GraphicsContext(){
  carggv.$clinit_GraphicsContext = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.GraphicsContext = function GraphicsContext(ctx){
  carggv.$clinit_GraphicsContext();
  Object_0.call(this);
  this.$init_252();
  this.ctx = ctx;
}
;
defineClass(193, 1, {1:1}, carggv.GraphicsContext);
_.$init_252 = function $init_252(){
  this.textSize = 10;
  this.fontName = 'Helvetica';
}
;
_.getNative = function getNative_1(){
  return this.getNative_0();
}
;
_.clearRect_0 = function clearRect(x_0, y_0, w, h){
  cggcdc.$clearRect(this.ctx, x_0, y_0, w, h);
}
;
_.drawDashedLine_0 = function drawDashedLine_0(srcx, srcy, targetx, targety, dashPattern){
  var angle, dashLength, draw, dx, dy, idx, nx, ny, x_0, y_0;
  dx = targetx - srcx;
  dy = targety - srcy;
  angle = $wnd.Math.atan2(dy, dx);
  x_0 = srcx;
  y_0 = srcy;
  idx = 0;
  draw = true;
  cggcdc.$beginPath(this.ctx);
  cggcdc.$moveTo(this.ctx, srcx, srcy);
  while (!((dx < 0?x_0 <= targetx:x_0 >= targetx) && (dy < 0?y_0 <= targety:y_0 >= targety))) {
    dashLength = dashPattern[idx++ % dashPattern.length];
    nx = x_0 + $wnd.Math.cos(angle) * dashLength;
    x_0 = dx < 0?$wnd.Math.max(targetx, nx):$wnd.Math.min(targetx, nx);
    ny = y_0 + $wnd.Math.sin(angle) * dashLength;
    y_0 = dy < 0?$wnd.Math.max(targety, ny):$wnd.Math.min(targety, ny);
    if (draw) {
      cggcdc.$lineTo(this.ctx, x_0, y_0);
    }
     else {
      cggcdc.$moveTo(this.ctx, x_0, y_0);
    }
    draw = !draw;
  }
  cggcdc.$closePath(this.ctx);
  cggcdc.$stroke(this.ctx);
}
;
_.drawImage_0 = function drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh){
  cggcdc.$drawImage_0(this.ctx, cggdc.as_0(image.getElement()), sx, sy, sw, sh, dx, dy, dw, dh);
}
;
_.drawImage_1 = function drawImage_0(image, x_0, y_0){
  cggcdc.$drawImage(this.ctx, cggdc.as_0(image.getElement()), x_0, y_0);
}
;
_.drawLine_0 = function drawLine_0(x_0, y_0, x1, y1){
  cggcdc.$setLineCap(this.ctx, (cggcdc.$clinit_Context2d$LineCap() , cggcdc.ROUND));
  cggcdc.$setLineJoin(this.ctx, (cggcdc.$clinit_Context2d$LineJoin() , cggcdc.MITER));
  cggcdc.$beginPath(this.ctx);
  cggcdc.$moveTo(this.ctx, x_0, y_0);
  cggcdc.$lineTo(this.ctx, x1, y1);
  cggcdc.$stroke(this.ctx);
}
;
_.drawPolygon_0 = function drawPolygon_1(polygon){
  var i, pt;
  cggcdc.$beginPath(this.ctx);
  pt = polygon.get_2(0);
  cggcdc.$moveTo(this.ctx, pt.getX_0(), pt.getY_0());
  for (i = 1; i < polygon.size_1(); i++) {
    pt = polygon.get_2(i);
    cggcdc.$lineTo(this.ctx, pt.getX_0(), pt.getY_0());
  }
  cggcdc.$closePath(this.ctx);
  cggcdc.$stroke(this.ctx);
}
;
_.drawRect = function drawRect(x_0, y_0, width_0, height){
  cggcdc.$strokeRect(this.ctx, x_0, y_0, width_0, height);
}
;
_.fillElipse = function fillElipse(x_0, y_0, rx, ry){
  cggcdc.$beginPath(this.ctx);
  cggcdc.$arc_0(this.ctx, x_0 + rx / 2, y_0 + ry / 2, rx / 2, 0, 3.141592653589793 * 2, true);
  cggcdc.$closePath(this.ctx);
  cggcdc.$fill(this.ctx);
}
;
_.fillPolygon = function fillPolygon(px, py, num){
  var i;
  if (num > 2) {
    cggcdc.$beginPath(this.ctx);
    cggcdc.$moveTo(this.ctx, px[0], py[0]);
    for (i = 1; i < num; i++) {
      cggcdc.$lineTo(this.ctx, px[i], py[i]);
    }
    cggcdc.$lineTo(this.ctx, px[0], py[0]);
    cggcdc.$closePath(this.ctx);
    cggcdc.$fill(this.ctx);
  }
}
;
_.fillRect_0 = function fillRect(x_0, y_0, w, h){
  cggcdc.$fillRect(this.ctx, x_0, y_0, w, h);
}
;
_.fillText_0 = function fillText(str, x_0, y_0){
  cggcdc.$fillText(this.ctx, str, x_0, y_0);
}
;
_.getFont = function getFont(){
  return this.fontName;
}
;
_.getNative_0 = function getNative_0(){
  return this.ctx;
}
;
_.makeRGBA = function makeRGBA(color_0){
  var s;
  s = 'rgba(' + toInt_0(shr_0(and_0(color_0, 4278190080), 24)) + ',' + toInt_0(shr_0(and_0(color_0, 16711680), 16)) + ',' + toInt_0(shr_0(and_0(color_0, 65280), 8)) + ',' + toDouble_0(and_0(color_0, 255)) / 255 + ')';
  return s;
}
;
_.restore_0 = function restore_0(){
  cggcdc.$restore(this.ctx);
}
;
_.save_0 = function save_0(){
  cggcdc.$save(this.ctx);
}
;
_.setFill = function setFill(color_0){
  cggcdc.$setFillStyle_0(this.ctx, this.makeRGBA(color_0));
}
;
_.setFont = function setFont(name_0, size_0, bold_0){
  var fna;
  this.textSize = round_int(size_0);
  fna = (bold_0?'bold ':'') + this.textSize + 'px ' + name_0;
  this.fontName = name_0;
  cggcdc.$setFont(this.ctx, fna);
}
;
_.setLineWidth = function setLineWidth_1(i){
  cggcdc.$setLineWidth(this.ctx, i);
}
;
_.setStroke = function setStroke(color_0){
  cggcdc.$setStrokeStyle_0(this.ctx, this.makeRGBA(color_0));
}
;
_.textSize = 0;
cggl.Lcom_actelion_research_gwt_gui_viewer_GraphicsContext_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'GraphicsContext', 193, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_Log = function $clinit_Log(){
  carggv.$clinit_Log = emptyMethod;
  jl.$clinit_Object();
}
;
carggv._console = function _console(text_0){
  console.log(text_0);
}
;
carggv.console_0 = function console_0(s){
  carggv.$clinit_Log();
  if (true)
    carggv._console(s);
}
;
carggv.println = function println(s){
  carggv.$clinit_Log();
  cggcs.log_2(s);
  carggv.console_0(s);
}
;
defineClass(980, 1, {1:1});
carggv.DEBUG_0 = true;
cggl.Lcom_actelion_research_gwt_gui_viewer_Log_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'Log', 980, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_SVGRenderer = function $clinit_SVGRenderer(){
  carggv.$clinit_SVGRenderer = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.SVGRenderer = function SVGRenderer(){
  carggv.$clinit_SVGRenderer();
  Object_0.call(this);
  this.$init_253();
}
;
carggv.renderMolecule = function renderMolecule(idCode, width_0, height){
  carggv.$clinit_SVGRenderer();
  var c, can, depictor, e, mol, n, p, parts;
  try {
    mol = new carc2.StereoMolecule;
    p = new carc2.IDCodeParser_0(true);
    if (jsNotEquals(idCode, null)) {
      parts = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(idCode, ' ');
      if (parts.length > 1) {
        p.parse_1(mol, parts[0], parts[1]);
      }
       else 
        p.parse_0(mol, idCode);
      can = new carc2.Canonizer(mol);
      n = can.getIDCode_0();
      c = can.getEncodedCoordinates();
      p.parse_1(mol, n, c);
      depictor = new carc2.SVGDepictor_0(mol, null);
      depictor.validateView(null, new cargg.GenericRectangle_0(0, 0, width_0, height), 65536);
      depictor.paint(null);
      return depictor.toString_0();
    }
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 14)) {
      e = $e0;
      carggv.println('error setting idcode data ' + e);
    }
     else 
      throw toJs($e0);
  }
  return null;
}
;
defineClass(913, 1, {1:1}, carggv.SVGRenderer);
_.$init_253 = function $init_253(){
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_SVGRenderer_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'SVGRenderer', 913, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_StructureElement = function $clinit_StructureElement(){
  carggv.$clinit_StructureElement = emptyMethod;
  jl.$clinit_Object();
  carggv.map_2 = new ju.HashMap;
  {
    carggv.initObserver_0();
  }
}
;
carggv.StructureElement = function StructureElement(el){
  carggv.$clinit_StructureElement();
  var height, parent_0, width_0;
  Object_0.call(this);
  this.$init_254();
  this.canvas = cggcc3.wrap(el);
  this.canvas.addDragStartHandler(new carggv.StructureElement$1(this));
  carggv.map_2.put(el, this);
  this.observeDataChange(el);
  parent_0 = cggdc.$getParentElement(el);
  if (isNotNull(parent_0)) {
    cgguc.addResizeHandler(new carggv.StructureElement$2(this, parent_0));
    width_0 = cggdc.$getOffsetWidth(parent_0);
    height = cggdc.$getOffsetHeight(parent_0);
    this.setCanvasSize(width_0, height);
  }
}
;
carggv.drawIDCode = function drawIDCode(el, idcode, coordinates, displayMode, atomText){
  carggv.$clinit_StructureElement();
  var canvas, combined, ctx;
  canvas = cggcc3.wrap(el);
  if (jsNotEquals(idcode, null) && jl.length__I__devirtual$_0(idcode) > 0) {
    combined = idcode + ('' + (jsNotEquals(coordinates, null)?' ' + coordinates:''));
    ctx = canvas.getContext2d_0();
    carggv.drawMolecule_0(ctx, combined, canvas.getCoordinateSpaceWidth(), canvas.getCoordinateSpaceHeight(), displayMode, atomText);
  }
}
;
carggv.drawMolecule = function drawMolecule(ctx, mol, width_0, height, displayMode, atomText){
  var depictor;
  depictor = new carggv.GWTDepictor_0(mol, displayMode);
  if (jsNotEquals(atomText, null))
    depictor.setAtomText(atomText);
  depictor.validateView(null, new cargg.GenericRectangle_0(0, 0, width_0, height), 65536);
  cggcdc.$clearRect(ctx, 0, 0, width_0, height);
  depictor.paint(ctx);
}
;
carggv.drawMolecule_0 = function drawMolecule_0(ctx, idcode, width_0, height, displayMode, atomText){
  var elements, mol, parser;
  if (jsNotEquals(idcode, null) && jl.length__I__devirtual$_0(jl.trim__Ljava_lang_String___devirtual$(idcode)) > 0) {
    mol = new carc2.StereoMolecule;
    parser = new carc2.IDCodeParser;
    elements = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(idcode, ' ');
    if (jsEquals(elements, null) || elements.length == 1)
      parser.parse_0(mol, idcode);
    else 
      parser.parse_1(mol, elements[0], elements[1]);
    carggv.drawMolecule(ctx, mol, width_0, height, displayMode, atomText);
  }
   else {
    cggcdc.$clearRect(ctx, 0, 0, width_0, height);
  }
}
;
carggv.drawMolecule_1 = function drawMolecule_1(el, mol, displayMode, atomText){
  carggv.$clinit_StructureElement();
  var canvas, ctx;
  canvas = cggcc3.wrap(el);
  ctx = canvas.getContext2d_0();
  carggv.drawMolecule(ctx, mol.getStereoMolecule(), canvas.getCoordinateSpaceWidth(), canvas.getCoordinateSpaceHeight(), displayMode, atomText);
}
;
carggv.initObserver_0 = function initObserver_0(){
  if ('MutationObserver' in $wnd) {
    $wnd.struct$observer = new $wnd.MutationObserver(function(mutations){
      mutations.forEach(function(mutation){
        carggv.notify_0(mutation.target);
      }
      );
    }
    );
  }
}
;
carggv.notify_0 = function notify_0(o){
  var p, se;
  p = carggv.map_2.get(o);
  if (instanceOf(p, 194)) {
    se = castTo(p, 194);
    se.draw();
  }
}
;
defineClass(194, 1, {194:1, 1:1}, carggv.StructureElement);
_.$init_254 = function $init_254(){
}
;
_.draw = function draw_6(){
  var at, ctx, el, idcode, text_0;
  el = this.canvas.getCanvasElement();
  idcode = cggdc.$getAttribute(el, 'data-idcode');
  text_0 = cggdc.$getAttribute(el, 'data-text');
  at = jsNotEquals(text_0, null)?jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(text_0, ','):null;
  ctx = this.canvas.getContext2d_0();
  carggv.drawMolecule_0(ctx, idcode, this.canvas.getCoordinateSpaceWidth(), this.canvas.getCoordinateSpaceHeight(), 0, at);
}
;
_.observeDataChange = function observeDataChange(el){
  var config = {attributes:true, attributeOldValue:true, attributeFilter:['data-idcode', 'data-text']};
  $wnd.struct$observer.observe(el, config);
}
;
_.setCanvasSize = function setCanvasSize(width_0, height){
  carggv.$clinit_StructureElement();
  this.canvas.setCoordinateSpaceWidth(width_0);
  this.canvas.setCoordinateSpaceHeight(height);
  this.canvas.setWidth(width_0 + 'px');
  this.canvas.setHeight(height + 'px');
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureElement_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureElement', 194, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DragStartHandler = function $clinit_DragStartHandler(){
  cggedc.$clinit_DragStartHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragStartHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'DragStartHandler');
carggv.$clinit_StructureElement$1 = function $clinit_StructureElement$1(){
  carggv.$clinit_StructureElement$1 = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.StructureElement$1 = function StructureElement$1(this$0){
  carggv.$clinit_StructureElement$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_255();
}
;
defineClass(482, 1, {915:1, 21:1, 1:1}, carggv.StructureElement$1);
_.$init_255 = function $init_255(){
}
;
_.onDragStart = function onDragStart(event_0){
  var el, idcode;
  el = this.this$01.canvas.getCanvasElement();
  idcode = cggdc.$getAttribute(el, 'data-idcode');
  cggdc.$setData(event_0.getDataTransfer(), 'text', idcode);
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureElement$1_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureElement/1', 482, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_StructureElement$2 = function $clinit_StructureElement$2(){
  carggv.$clinit_StructureElement$2 = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.StructureElement$2 = function StructureElement$2(this$0, val$parent){
  carggv.$clinit_StructureElement$2();
  this.this$01 = this$0;
  this.val$parent2 = val$parent;
  Object_0.call(this);
  this.$init_256();
}
;
defineClass(483, 1, {215:1, 21:1, 1:1}, carggv.StructureElement$2);
_.$init_256 = function $init_256(){
}
;
_.onResize = function onResize_0(ev){
  var h, height, w, width_0;
  width_0 = cggdc.$getOffsetWidth(this.val$parent2);
  height = cggdc.$getOffsetHeight(this.val$parent2);
  w = this.this$01.canvas.getOffsetWidth();
  h = this.this$01.canvas.getOffsetHeight();
  if (width_0 != w || height != h) {
    this.this$01.setCanvasSize(width_0, height);
    this.this$01.draw();
  }
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureElement$2_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureElement/2', 483, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_StructureView = function $clinit_StructureView(){
  carggv.$clinit_StructureView = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.StructureView = function StructureView(){
  carggv.$clinit_StructureView();
  Object_0.call(this);
  this.$init_257();
}
;
carggv.drawMolecule_2 = function drawMolecule_2(el, mol, displayMode, atomText){
  carggv.drawMolecule_1(el, mol, displayMode, atomText);
}
;
carggv.drawMolecule_3 = function drawMolecule_3(el, mol, options){
  carggv.$clinit_StructureView();
  carggv.drawMolecule_2(el, mol, cargm.getDisplayMode_0(options), null);
}
;
carggv.drawStructure = function drawStructure(id_0, idcode, coordinates, displayMode, atomText){
  var ce, el;
  el = cggdc.$getElementById(cggdc.get_19(), id_0);
  if (instanceOfJso(el)) {
    ce = el;
    carggv.drawIDCode(ce, idcode, coordinates, displayMode, atomText);
  }
}
;
carggv.drawStructure_0 = function drawStructure_0(id_0, idcode, coordinates, options){
  carggv.$clinit_StructureView();
  carggv.drawStructure(id_0, idcode, coordinates, cargm.getDisplayMode_0(options), null);
}
;
carggv.drawStructureWithText = function drawStructureWithText(id_0, idcode, coordinates, options, atomText){
  carggv.$clinit_StructureView();
  carggv.drawStructure(id_0, idcode, coordinates, cargm.getDisplayMode_0(options), atomText);
}
;
carggv.getIDCode_7 = function getIDCode_7(id_0){
  carggv.$clinit_StructureView();
  var el;
  el = cggdc.$getElementById(cggdc.get_19(), id_0);
  if (instanceOfJso(el)) {
    return cggdc.$getAttribute(el, 'data-idcode');
  }
  return null;
}
;
carggv.renderStructure = function renderStructure(id_0){
  carggv.$clinit_StructureView();
  var ce, el, structureElement;
  ce = null;
  el = cggdc.$getElementById(cggdc.get_19(), id_0);
  if (instanceOfJso(el)) {
    ce = el;
    structureElement = new carggv.StructureElement(ce);
    structureElement.draw();
  }
}
;
carggv.showStructures = function showStructures(cssClass){
  carggv.$clinit_StructureView();
  var ce, className, className$array, className$index, className$max, clss, el, i, list, names, structureElement;
  list = cggdc.$getElementsByTagName_0(cggdc.get_19(), 'canvas');
  for (i = 0; i < cggdc.$getLength(list); i++) {
    ce = null;
    el = cggdc.$getItem(list, i);
    if (instanceOfJso(el)) {
      ce = el;
      names = cggdc.$getClassName(el);
      if (jsNotEquals(names, null)) {
        clss = jl.split_Ljava_lang_String___Ljava_lang_String___devirtual$(names, ' ');
        for (className$array = clss , className$index = 0 , className$max = className$array.length; className$index < className$max; ++className$index) {
          className = className$array[className$index];
          if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(cssClass, className)) {
            structureElement = new carggv.StructureElement(ce);
            structureElement.draw();
          }
        }
      }
    }
  }
}
;
defineClass(914, 1, {1:1}, carggv.StructureView);
_.$init_257 = function $init_257(){
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureView_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureView', 914, cggl.Ljava_lang_Object_2_classLit);
carggv.$clinit_StructureViewer = function $clinit_StructureViewer(){
  carggv.$clinit_StructureViewer = emptyMethod;
  jl.$clinit_Object();
}
;
carggv.StructureViewer = function StructureViewer(){
  carggv.$clinit_StructureViewer();
  Object_0.call(this);
  this.$init_258();
}
;
defineClass(399, 1, {99:1, 1:1}, carggv.StructureViewer);
_.$init_258 = function $init_258(){
}
;
_.onLoadImpl_0 = function onLoadImpl_0(){
  if ($wnd.structureViewLoaded && typeof $wnd.structureViewLoaded == 'function')
    $wnd.structureViewLoaded();
}
;
_.onModuleLoad = function onModuleLoad_1(){
  this.onLoadImpl_0();
}
;
cggl.Lcom_actelion_research_gwt_gui_viewer_StructureViewer_2_classLit = createForClass('com.actelion.research.gwt.gui.viewer', 'StructureViewer', 399, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSMolecule = function $clinit_JSMolecule(){
  cargm.$clinit_JSMolecule = emptyMethod;
  jl.$clinit_Object();
  cargm.services_1 = cargm.getInstance_0();
  cargm.rectangle = new cargg.GenericRectangle;
  cargm.CANONIZER_CONSIDER_STEREOHETEROTOPICITY = 2 | 4;
  cargm.cHelperRingsSimple_0 = 1 | 2;
  cargm.cHelperRings_0 = 3 | 4;
  cargm.cHelperParities_0 = 7 | 8;
  cargm.cHelperCIP_0 = 15 | 16;
  cargm.cHelperSymmetrySimple_0 = 31 | 32;
  cargm.cHelperSymmetryStereoHeterotopicity_0 = 31 | 64;
  cargm.cDefaultAllowedPseudoAtoms_0 = 1 | 64 | 256;
  cargm.cAtomLabel_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['?', 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12', 'R13', 'R14', 'R15', 'R16', 'R1', 'R2', 'R3', 'A', 'A1', 'A2', 'A3', '??', '??', 'D', 'T', 'X', 'R', 'H2', 'H+', 'Nnn', 'HYD', 'Pol', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '??', 'Ala', 'Arg', 'Asn', 'Asp', 'Cys', 'Gln', 'Glu', 'Gly', 'His', 'Ile', 'Leu', 'Lys', 'Met', 'Phe', 'Pro', 'Ser', 'Thr', 'Trp', 'Tyr', 'Val']);
  cargm.cRoundedMass_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [0, 1, 4, 7, 9, 11, 12, 14, 16, 19, 20, 23, 24, 27, 28, 31, 32, 35, 40, 39, 40, 45, 48, 51, 52, 55, 56, 59, 58, 63, 64, 69, 74, 75, 80, 79, 84, 85, 88, 89, 90, 93, 98, 0, 102, 103, 106, 107, 114, 115, 120, 121, 130, 127, 132, 133, 138, 139, 140, 141, 142, 0, 152, 153, 158, 159, 164, 165, 166, 169, 174, 175, 180, 181, 184, 187, 192, 193, 195, 197, 202, 205, 208, 209, 209, 210, 222, 223, 226, 227, 232, 231, 238, 237, 244, 243, 247, 247, 251, 252, 257, 258, 259, 262, 267, 268, 271, 270, 277, 276, 281, 281, 283, 285, 289, 289, 293, 294, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 156, 114, 115, 103, 128, 129, 57, 137, 113, 113, 128, 131, 147, 97, 87, 101, 186, 163, 99]);
  cargm.cAtomValence_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 2), {4:1, 1:1, 7:1}, 8, 0, [null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3, 5, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [0, 2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2])]);
  cargm.cCommonOxidationState_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 2), {4:1, 1:1, 7:1}, 8, 0, [null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), null, null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3, 4, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3, 4, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-3, 3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4, 6, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-3, 3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2, 4, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4, 6, 7]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-2, 2, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [-1, 1]), null, stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [1]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [4, 5]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4, 5, 6]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3, 4]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.B_classLit, 1), {8:1, 4:1, 1:1}, 5, 15, [3])]);
  cargm.FISCHER_PROJECTION_LIMIT_0 = 3.141592653589793 / 36;
  cargm.STEREO_ANGLE_LIMIT_0 = 3.141592653589793 / 36;
  cargm.VALIDATION_ERRORS_STEREO_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['Members of ESR groups must only be stereo centers with known configuration.', 'Over- or under-specified stereo feature or more than one racemic type bond', 'Ambiguous configuration at stereo center because of 2 parallel bonds']);
}
;
cargm.JSMolecule = function JSMolecule(){
  cargm.$clinit_JSMolecule();
  cargm.JSMolecule_0.call(this, 32, 32, null);
}
;
cargm.JSMolecule_0 = function JSMolecule_0(maxAtoms, maxBonds, mol){
  cargm.$clinit_JSMolecule();
  Object_0.call(this);
  this.$init_259();
  if (isNotNull(mol)) {
    this.oclMolecule = mol;
  }
   else {
    this.oclMolecule = new carc2.StereoMolecule_0(maxAtoms, maxBonds);
  }
}
;
cargm.JSMolecule_1 = function JSMolecule_1(mol){
  cargm.$clinit_JSMolecule();
  cargm.JSMolecule_0.call(this, 0, 0, mol);
}
;
cargm.createMolfileWithAtomMap = function createMolfileWithAtomMap(mol, map_0){
  return {molecule:mol, map:map_0};
}
;
cargm.fromIDCode = function fromIDCode(idcode, coordinates){
  cargm.$clinit_JSMolecule();
  var mol;
  if (typeof coordinates === 'undefined') {
    coordinates = true;
  }
  if (typeof coordinates === 'boolean') {
    mol = cargm.fromIDCode_1(idcode, coordinates);
  }
   else if (typeof coordinates === 'string') {
    mol = cargm.fromIDCode_0(idcode, coordinates);
  }
  return mol;
}
;
cargm.fromIDCode_0 = function fromIDCode_0(idcode, coordinates){
  return new cargm.JSMolecule_1((new carc2.IDCodeParser_0(false)).getCompactMolecule_0(idcode, coordinates));
}
;
cargm.fromIDCode_1 = function fromIDCode_1(idcode, ensure2DCoordinates){
  return new cargm.JSMolecule_1((new carc2.IDCodeParser_0(ensure2DCoordinates)).getCompactMolecule(idcode));
}
;
cargm.fromMolfile = function fromMolfile(molfile){
  cargm.$clinit_JSMolecule();
  return new cargm.JSMolecule_1((new carc2.MolfileParser).getCompactMolecule(molfile));
}
;
cargm.fromMolfileWithAtomMap = function fromMolfileWithAtomMap(molfile){
  cargm.$clinit_JSMolecule();
  var map_0, mol, parser;
  parser = new carc2.MolfileParser_0(1);
  mol = parser.getCompactMolecule(molfile);
  map_0 = parser.getHandleHydrogenMap_0();
  return cargm.createMolfileWithAtomMap(new cargm.JSMolecule_1(mol), map_0);
}
;
cargm.fromSmiles = function fromSmiles(smiles, options){
  cargm.$clinit_JSMolecule();
  options = options || {};
  var createCoordinates = !options.noCoordinates;
  var readStereoFeatures = !options.noStereo;
  return cargm.fromSmiles_0(smiles, createCoordinates, readStereoFeatures);
}
;
cargm.fromSmiles_0 = function fromSmiles_0(smiles, createCoordinates, readStereoFeatures){
  var mol, parser;
  parser = new carc2.SmilesParser;
  mol = new cargm.JSMolecule;
  parser.parse_9(mol.oclMolecule, jl.getBytes___B__devirtual$(smiles), createCoordinates, readStereoFeatures);
  return mol;
}
;
cargm.getAngle_3 = function getAngle_3(x1, y1, x2, y2){
  cargm.$clinit_JSMolecule();
  return carc2.getAngle_0(x1, y1, x2, y2);
}
;
cargm.getAngleDif_1 = function getAngleDif_1(angle1, angle2){
  cargm.$clinit_JSMolecule();
  return carc2.getAngleDif(angle1, angle2);
}
;
cargm.getAtomicNoFromLabel_1 = function getAtomicNoFromLabel_1(atomLabel, allowedPseudoAtomGroups){
  cargm.$clinit_JSMolecule();
  return carc2.getAtomicNoFromLabel_0(atomLabel, allowedPseudoAtomGroups);
}
;
cargm.getDefaultAverageBondLength_0 = function getDefaultAverageBondLength_0(){
  cargm.$clinit_JSMolecule();
  return carc2.getDefaultAverageBondLength();
}
;
cargm.isAtomicNoElectronegative_0 = function isAtomicNoElectronegative_0(atomicNo){
  cargm.$clinit_JSMolecule();
  return carc2.isAtomicNoElectronegative(atomicNo);
}
;
cargm.isAtomicNoElectropositive_0 = function isAtomicNoElectropositive_0(atomicNo){
  cargm.$clinit_JSMolecule();
  return carc2.isAtomicNoElectropositive(atomicNo);
}
;
cargm.setDefaultAverageBondLength_0 = function setDefaultAverageBondLength_0(defaultAVBL){
  cargm.$clinit_JSMolecule();
  carc2.setDefaultAverageBondLength(defaultAVBL);
}
;
defineClass(59, 1, {59:1, 1:1}, cargm.JSMolecule, cargm.JSMolecule_0, cargm.JSMolecule_1);
_.$init_259 = function $init_259(){
}
;
_.addAtom = function addAtom_2(atomicNo){
  return this.oclMolecule.addAtom_2(atomicNo);
}
;
_.addBond = function addBond_1(atom1, atom2){
  return this.oclMolecule.addBond_0(atom1, atom2);
}
;
_.addFragment = function addFragment_0(sourceMol, rootAtom, atomMap){
  this.oclMolecule.addFragment_0(sourceMol.getStereoMolecule(), rootAtom, atomMap);
}
;
_.addImplicitHydrogens_0 = function addImplicitHydrogens_1(){
  carcc2.addImplicitHydrogens(this.oclMolecule);
}
;
_.addImplicitHydrogens_1 = function addImplicitHydrogens_2(atomNumber){
  carcc2.addImplicitHydrogens_0(this.oclMolecule, atomNumber);
}
;
_.addImplicitHydrogens = function addImplicitHydrogens_3(atomNumber){
  if (atomNumber === undefined) {
    this.addImplicitHydrogens_0();
  }
   else {
    this.addImplicitHydrogens_1(atomNumber);
  }
}
;
_.addMissingChirality_0 = function addMissingChirality_1(){
  carcc2.addMissingChirality(this.oclMolecule);
}
;
_.addMissingChirality_1 = function addMissingChirality_2(esrType){
  carcc2.addMissingChirality_0(this.oclMolecule, esrType);
}
;
_.addMissingChirality = function addMissingChirality_3(esrType){
  if (esrType === undefined) {
    this.addMissingChirality_0();
  }
   else {
    this.addMissingChirality_1(esrType);
  }
}
;
_.addMolecule = function addMolecule_2(mol){
  return this.oclMolecule.addMolecule_0(mol.getStereoMolecule());
}
;
_.addOrChangeAtom = function addOrChangeAtom_0(x_0, y_0, atomicNo, mass, abnormalValence, radical, customLabel){
  return this.oclMolecule.addOrChangeAtom_0(x_0, y_0, atomicNo, mass, abnormalValence, radical, customLabel);
}
;
_.addOrChangeBond = function addOrChangeBond_0(atm1, atm2, type_0){
  return this.oclMolecule.addOrChangeBond_0(atm1, atm2, type_0);
}
;
_.addRing = function addRing_0(x_0, y_0, ringSize, aromatic, bondLength){
  return this.oclMolecule.addRing_0(x_0, y_0, ringSize, aromatic, bondLength);
}
;
_.addRingToAtom = function addRingToAtom_0(atom, ringSize, aromatic, bondLength){
  return this.oclMolecule.addRingToAtom_0(atom, ringSize, aromatic, bondLength);
}
;
_.addRingToBond = function addRingToBond_0(bond, ringSize, aromatic, bondLength){
  return this.oclMolecule.addRingToBond_0(bond, ringSize, aromatic, bondLength);
}
;
_.addSubstituent = function addSubstituent_0(substituent, connectionAtom){
  return this.oclMolecule.addSubstituent_0(substituent.getStereoMolecule(), connectionAtom);
}
;
_.calculateTorsion = function calculateTorsion_1(atom){
  return this.oclMolecule.calculateTorsion_0(atom);
}
;
_.canonizeCharge = function canonizeCharge_1(allowUnbalancedCharge){
  return this.oclMolecule.canonizeCharge_0(allowUnbalancedCharge);
}
;
_.changeAtom = function changeAtom_1(atom, atomicNo, mass, abnormalValence, radical){
  return this.oclMolecule.changeAtom_0(atom, atomicNo, mass, abnormalValence, radical);
}
;
_.changeAtomCharge = function changeAtomCharge_0(atom, positive){
  return this.oclMolecule.changeAtomCharge_0(atom, positive);
}
;
_.changeBond = function changeBond_0(bnd, type_0){
  return this.oclMolecule.changeBond_0(bnd, type_0);
}
;
_.clear = function clear_11(){
  this.oclMolecule.clear_0();
}
;
_.convertStereoBondsToSingleBonds = function convertStereoBondsToSingleBonds_0(atom){
  this.oclMolecule.convertStereoBondsToSingleBonds_0(atom);
}
;
_.copyAtom = function copyAtom_0(destMol, sourceAtom, esrGroupOffsetAND, esrGroupOffsetOR){
  return this.oclMolecule.copyAtom_0(destMol.getStereoMolecule(), sourceAtom, esrGroupOffsetAND, esrGroupOffsetOR);
}
;
_.copyBond = function copyBond_1(destMol, sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, atomMap, useBondTypeDelocalized){
  return this.oclMolecule.copyBond_1(destMol.getStereoMolecule(), sourceBond, esrGroupOffsetAND, esrGroupOffsetOR, atomMap, useBondTypeDelocalized);
}
;
_.copyMolecule = function copyMolecule_1(destMol){
  this.oclMolecule.copyMolecule_0(destMol.getStereoMolecule());
}
;
_.copyMoleculeByAtoms = function copyMoleculeByAtoms_0(destMol, includeAtom, recognizeDelocalizedBonds, atomMap){
  this.oclMolecule.copyMoleculeByAtoms_0(destMol.getStereoMolecule(), includeAtom, recognizeDelocalizedBonds, atomMap);
}
;
_.copyMoleculeByBonds = function copyMoleculeByBonds_0(destMol, includeBond, recognizeDelocalizedBonds, atomMap){
  return this.oclMolecule.copyMoleculeByBonds_0(destMol.getStereoMolecule(), includeBond, recognizeDelocalizedBonds, atomMap);
}
;
_.copyMoleculeProperties = function copyMoleculeProperties_1(destMol){
  this.oclMolecule.copyMoleculeProperties_0(destMol.getStereoMolecule());
}
;
_.deleteAtom = function deleteAtom_1(atom){
  this.oclMolecule.deleteAtom_0(atom);
}
;
_.deleteAtomOrBond = function deleteAtomOrBond_0(x_0, y_0){
  return this.oclMolecule.deleteAtomOrBond_0(x_0, y_0);
}
;
_.deleteAtoms = function deleteAtoms_1(atomList){
  return this.oclMolecule.deleteAtoms_0(atomList);
}
;
_.deleteBond = function deleteBond_0(bond){
  this.oclMolecule.deleteBond_0(bond);
}
;
_.deleteBondAndSurrounding = function deleteBondAndSurrounding_0(bond){
  this.oclMolecule.deleteBondAndSurrounding_0(bond);
}
;
_.deleteMarkedAtomsAndBonds = function deleteMarkedAtomsAndBonds_0(){
  return this.oclMolecule.deleteMarkedAtomsAndBonds_0();
}
;
_.deleteMolecule = function deleteMolecule_1(){
  this.oclMolecule.clear_0();
}
;
_.deleteSelectedAtoms = function deleteSelectedAtoms_0(){
  return this.oclMolecule.deleteSelectedAtoms_0();
}
;
_.ensureHelperArrays = function ensureHelperArrays_1(required){
  this.oclMolecule.ensureHelperArrays_0(required);
}
;
_.findAlleneCenterAtom = function findAlleneCenterAtom_0(atom){
  return this.oclMolecule.findAlleneCenterAtom_0(atom);
}
;
_.findAlleneEndAtom = function findAlleneEndAtom_0(atom1, atom2){
  return this.oclMolecule.findAlleneEndAtom_0(atom1, atom2);
}
;
_.findAtom = function findAtom_1(pickx, picky){
  return this.oclMolecule.findAtom_0(pickx, picky);
}
;
_.findBINAPChiralityBond = function findBINAPChiralityBond_0(atom){
  return this.oclMolecule.findBINAPChiralityBond_0(atom);
}
;
_.findBond = function findBond_0(pickx, picky){
  return this.oclMolecule.findBond_0(pickx, picky);
}
;
_.findRingSystem = function findRingSystem_0(startAtom, aromaticOnly, isMemberAtom, isMemberBond){
  this.oclMolecule.findRingSystem_0(startAtom, aromaticOnly, isMemberAtom, isMemberBond);
}
;
_.getAbsoluteAtomParity = function getAbsoluteAtomParity_0(atom){
  return this.oclMolecule.getAbsoluteAtomParity_0(atom);
}
;
_.getAbsoluteBondParity = function getAbsoluteBondParity_0(bond){
  return this.oclMolecule.getAbsoluteBondParity_0(bond);
}
;
_.getAllAtoms = function getAllAtoms_0(){
  return this.oclMolecule.getAllAtoms_0();
}
;
_.getAllBonds = function getAllBonds_0(){
  return this.oclMolecule.getAllBonds_0();
}
;
_.getAllConnAtoms = function getAllConnAtoms_0(atom){
  return this.oclMolecule.getAllConnAtoms_0(atom);
}
;
_.getAllConnAtomsPlusMetalBonds = function getAllConnAtomsPlusMetalBonds_0(atom){
  return this.oclMolecule.getAllConnAtomsPlusMetalBonds_0(atom);
}
;
_.getAllHydrogens = function getAllHydrogens_0(atom){
  return this.oclMolecule.getAllHydrogens_0(atom);
}
;
_.getAromaticRingCount = function getAromaticRingCount_0(){
  return this.oclMolecule.getAromaticRingCount_0();
}
;
_.getAtomAbnormalValence = function getAtomAbnormalValence_0(atom){
  return this.oclMolecule.getAtomAbnormalValence_0(atom);
}
;
_.getAtomCIPParity = function getAtomCIPParity_0(atom){
  return this.oclMolecule.getAtomCIPParity_0(atom);
}
;
_.getAtomCharge = function getAtomCharge_0(atom){
  return this.oclMolecule.getAtomCharge_0(atom);
}
;
_.getAtomColor = function getAtomColor_0(atom){
  return this.oclMolecule.getAtomColor_0(atom);
}
;
_.getAtomCustomLabel = function getAtomCustomLabel_0(atom){
  return this.oclMolecule.getAtomCustomLabel_0(atom);
}
;
_.getAtomESRGroup = function getAtomESRGroup_0(atom){
  return this.oclMolecule.getAtomESRGroup_0(atom);
}
;
_.getAtomESRType = function getAtomESRType_0(atom){
  return this.oclMolecule.getAtomESRType_0(atom);
}
;
_.getAtomLabel = function getAtomLabel_0(atom){
  return this.oclMolecule.getAtomLabel_0(atom);
}
;
_.getAtomList = function getAtomList_0(atom){
  return this.oclMolecule.getAtomList_0(atom);
}
;
_.getAtomListString = function getAtomListString_0(atom){
  return this.oclMolecule.getAtomListString_0(atom);
}
;
_.getAtomMapNo = function getAtomMapNo_0(atom){
  return this.oclMolecule.getAtomMapNo_0(atom);
}
;
_.getAtomMass = function getAtomMass_0(atom){
  return this.oclMolecule.getAtomMass_0(atom);
}
;
_.getAtomParity = function getAtomParity_0(atom){
  return this.oclMolecule.getAtomParity_0(atom);
}
;
_.getAtomPi = function getAtomPi_1(atom){
  return this.oclMolecule.getAtomPi_0(atom);
}
;
_.getAtomPreferredStereoBond = function getAtomPreferredStereoBond_0(atom){
  return this.oclMolecule.getAtomPreferredStereoBond_0(atom);
}
;
_.getAtomQueryFeaturesObject = function getAtomQueryFeaturesObject(atom){
  return cargm.getAtomQueryFeatures_0(this.oclMolecule, atom);
}
;
_.getAtomRadical = function getAtomRadical_0(atom){
  return this.oclMolecule.getAtomRadical_0(atom);
}
;
_.getAtomRingBondCount = function getAtomRingBondCount_0(atom){
  return this.oclMolecule.getAtomRingBondCount_0(atom);
}
;
_.getAtomRingCount = function getAtomRingCount_0(atom, maxRingSize){
  return this.oclMolecule.getAtomRingCount_0(atom, maxRingSize);
}
;
_.getAtomRingSize = function getAtomRingSize_1(atom){
  return this.oclMolecule.getAtomRingSize_0(atom);
}
;
_.getAtomX = function getAtomX_2(atom){
  return this.oclMolecule.getAtomX_0(atom);
}
;
_.getAtomY = function getAtomY_2(atom){
  return this.oclMolecule.getAtomY_0(atom);
}
;
_.getAtomZ = function getAtomZ_0(atom){
  return this.oclMolecule.getAtomZ_0(atom);
}
;
_.getAtomicNo = function getAtomicNo_1(atom){
  return this.oclMolecule.getAtomicNo_0(atom);
}
;
_.getAtoms = function getAtoms_0(){
  return this.oclMolecule.getAtoms_0();
}
;
_.getAverageBondLength = function getAverageBondLength_5(nonHydrogenBondsOnly){
  return this.oclMolecule.getAverageBondLength_4(nonHydrogenBondsOnly);
}
;
_.getAverageTopologicalAtomDistance = function getAverageTopologicalAtomDistance_0(){
  return this.oclMolecule.getAverageTopologicalAtomDistance_0();
}
;
_.getBond = function getBond_0(atom1, atom2){
  return this.oclMolecule.getBond_0(atom1, atom2);
}
;
_.getBondAngle = function getBondAngle_0(atom1, atom2){
  return this.oclMolecule.getBondAngle_0(atom1, atom2);
}
;
_.getBondAtom = function getBondAtom_0(no, bond){
  return this.oclMolecule.getBondAtom_0(no, bond);
}
;
_.getBondBridgeMaxSize = function getBondBridgeMaxSize_0(bond){
  return this.oclMolecule.getBondBridgeMaxSize_0(bond);
}
;
_.getBondBridgeMinSize = function getBondBridgeMinSize_0(bond){
  return this.oclMolecule.getBondBridgeMinSize_0(bond);
}
;
_.getBondCIPParity = function getBondCIPParity_0(bond){
  return this.oclMolecule.getBondCIPParity_0(bond);
}
;
_.getBondESRGroup = function getBondESRGroup_0(bond){
  return this.oclMolecule.getBondESRGroup_0(bond);
}
;
_.getBondESRType = function getBondESRType_0(bond){
  return this.oclMolecule.getBondESRType_0(bond);
}
;
_.getBondLength = function getBondLength_1(bond){
  return this.oclMolecule.getBondLength_0(bond);
}
;
_.getBondOrder = function getBondOrder_0(bond){
  return this.oclMolecule.getBondOrder_0(bond);
}
;
_.getBondParity = function getBondParity_0(bnd){
  return this.oclMolecule.getBondParity_0(bnd);
}
;
_.getBondPreferredStereoBond = function getBondPreferredStereoBond_0(bond){
  return this.oclMolecule.getBondPreferredStereoBond_0(bond);
}
;
_.getBondQueryFeatures = function getBondQueryFeatures_0(bnd){
  return this.oclMolecule.getBondQueryFeatures_0(bnd);
}
;
_.getBondQueryFeaturesObject = function getBondQueryFeaturesObject(atom){
  return cargm.getBondQueryFeatures_1(this.oclMolecule, atom);
}
;
_.getBondRingSize = function getBondRingSize_1(bond){
  return this.oclMolecule.getBondRingSize_0(bond);
}
;
_.getBondType = function getBondType_0(bond){
  return this.oclMolecule.getBondType_0(bond);
}
;
_.getBondTypeSimple = function getBondTypeSimple_0(bond){
  return this.oclMolecule.getBondTypeSimple_0(bond);
}
;
_.getBonds = function getBonds_0(){
  return this.oclMolecule.getBonds_0();
}
;
_.getBounds = function getBounds_0(){
  var r;
  r = this.oclMolecule.getBounds_0(cargm.rectangle);
  if (isNull(r))
    return null;
  return this.getBounds_1(r.x_0, r.y_0, r.width_0, r.height_0);
}
;
_.getBounds_1 = function getBounds_1(x_0, y_0, width_0, height){
  return {x:x_0, y:y_0, width:width_0, height:height};
}
;
_.getCanonizedIDCode = function getCanonizedIDCode(flag){
  var canonizer;
  canonizer = new carc2.Canonizer_0(this.oclMolecule, flag);
  return canonizer.getIDCode_0();
}
;
_.getChiralText = function getChiralText_1(){
  return this.oclMolecule.getChiralText_0();
}
;
_.getChirality = function getChirality_0(){
  return this.oclMolecule.getChirality_0();
}
;
_.getCompactCopy = function getCompactCopy_0(){
  return new cargm.JSMolecule_1(this.oclMolecule.getCompactCopy_0());
}
;
_.getConnAtom = function getConnAtom_0(atom, i){
  return this.oclMolecule.getConnAtom_0(atom, i);
}
;
_.getConnAtoms = function getConnAtoms_1(atom){
  return this.oclMolecule.getConnAtoms_0(atom);
}
;
_.getConnBond = function getConnBond_0(atom, i){
  return this.oclMolecule.getConnBond_0(atom, i);
}
;
_.getConnBondOrder = function getConnBondOrder_0(atom, i){
  return this.oclMolecule.getConnBondOrder_0(atom, i);
}
;
_.getDefaultMaxValenceUncharged = function getDefaultMaxValenceUncharged_0(atom){
  return this.oclMolecule.getDefaultMaxValenceUncharged_0(atom);
}
;
_.getDiastereotopicAtomIDs = function getDiastereotopicAtomIDs(){
  return carcc2.getAtomIds(this.oclMolecule);
}
;
_.getElectronValenceCorrection = function getElectronValenceCorrection_1(atom, occupiedValence){
  return this.oclMolecule.getElectronValenceCorrection_0(atom, occupiedValence);
}
;
_.getExcludedNeighbourCount = function getExcludedNeighbourCount_0(atom){
  return this.oclMolecule.getExcludedNeighbourCount_0(atom);
}
;
_.getExplicitHydrogens = function getExplicitHydrogens_0(atom){
  return this.oclMolecule.getExplicitHydrogens_0(atom);
}
;
_.getFinalRanks = function getFinalRanks(flag){
  var canonizer;
  canonizer = new carc2.Canonizer_0(this.oclMolecule, flag);
  return canonizer.getFinalRank();
}
;
_.getFisherProjectionParity = function getFisherProjectionParity_0(atom, sortedConnMap, angle, direction){
  return this.oclMolecule.getFisherProjectionParity_0(atom, sortedConnMap, angle, direction);
}
;
_.getFragmentAtoms = function getFragmentAtoms_1(rootAtom, considerMetalBonds){
  return this.oclMolecule.getFragmentAtoms_0(rootAtom, considerMetalBonds);
}
;
_.getFragmentNumbers = function getFragmentNumbers_1(fragmentNo, markedAtomsOnly, considerMetalBonds){
  return this.oclMolecule.getFragmentNumbers_0(fragmentNo, markedAtomsOnly, considerMetalBonds);
}
;
_.getFragments = function getFragments_2(){
  var fragments, i, newFragments;
  fragments = this.oclMolecule.getFragments_0();
  newFragments = initUnidimensionalArray(cggl.Lcom_actelion_research_gwt_minimal_JSMolecule_2_classLit, {257:1, 4:1, 1:1, 7:1}, 59, fragments.length, 0, 1);
  for (i = 0; i < fragments.length; i++) {
    setCheck(newFragments, i, new cargm.JSMolecule_1(fragments[i]));
  }
  return newFragments;
}
;
_.getFreeValence = function getFreeValence_0(atom){
  return this.oclMolecule.getFreeValence_0(atom);
}
;
_.getHandleHydrogenMap = function getHandleHydrogenMap_1(){
  return this.oclMolecule.getHandleHydrogenMap_0();
}
;
_.getHelperArrayStatus = function getHelperArrayStatus_0(){
  return this.oclMolecule.getHelperArrayStatus_0();
}
;
_.getHoseCodes = function getHoseCodes_0(options){
  options = options || {};
  var maxSphereSize = (typeof options.maxSphereSize === 'undefined'?5:options.maxSphereSize) | 0;
  var type_0 = (typeof options.type === 'undefined'?0:options.type) | 0;
  return carcc2.getHoseCodes(this.oclMolecule, maxSphereSize, type_0);
}
;
_.getIDCode = function getIDCode_8(){
  var idCode;
  idCode = this.oclMolecule.getIDCode_0();
  if (jsEquals(idCode, null)) {
    idCode = (new carc2.Canonizer(this.oclMolecule)).getIDCode_0();
  }
  return idCode;
}
;
_.getIDCodeAndCoordinates = function getIDCodeAndCoordinates(){
  return {idCode:this.getIDCode(), coordinates:this.getIDCoordinates()};
}
;
_.getIDCoordinates = function getIDCoordinates_0(){
  var idCoordinates;
  idCoordinates = this.oclMolecule.getIDCoordinates_0();
  if (jsEquals(idCoordinates, null)) {
    idCoordinates = (new carc2.Canonizer(this.oclMolecule)).getEncodedCoordinates();
  }
  return idCoordinates;
}
;
_.getImplicitHigherValence = function getImplicitHigherValence_0(atom, neglectExplicitHydrogen){
  return this.oclMolecule.getImplicitHigherValence_0(atom, neglectExplicitHydrogen);
}
;
_.getImplicitHydrogens = function getImplicitHydrogens_0(atom){
  return this.oclMolecule.getImplicitHydrogens_0(atom);
}
;
_.getIndex = function getIndex(){
  return cargm.services_1.getSSSearcherWithIndex().createIndex_0(this.oclMolecule);
}
;
_.getLowestFreeValence = function getLowestFreeValence_1(atom){
  return this.oclMolecule.getLowestFreeValence_0(atom);
}
;
_.getMaxAtoms = function getMaxAtoms_0(){
  return this.oclMolecule.getMaxAtoms_0();
}
;
_.getMaxBonds = function getMaxBonds_0(){
  return this.oclMolecule.getMaxBonds_0();
}
;
_.getMaxValence = function getMaxValence_0(atom){
  return this.oclMolecule.getMaxValence_0(atom);
}
;
_.getMaxValenceUncharged = function getMaxValenceUncharged_0(atom){
  return this.oclMolecule.getMaxValenceUncharged_0(atom);
}
;
_.getMetalBondedConnAtoms = function getMetalBondedConnAtoms_0(atom){
  return this.oclMolecule.getMetalBondedConnAtoms_0(atom);
}
;
_.getMolecularFormula = function getMolecularFormula(){
  return new cargm.MolecularFormula_0(this.oclMolecule);
}
;
_.getMoleculeColor = function getMoleculeColor_0(){
  return this.oclMolecule.getMoleculeColor_0();
}
;
_.getMolweight = function getMolweight_0(){
  return this.oclMolecule.getMolweight_0();
}
;
_.getName = function getName_5(){
  return this.oclMolecule.getName_0();
}
;
_.getNonHydrogenNeighbourCount = function getNonHydrogenNeighbourCount_0(atom){
  return this.oclMolecule.getNonHydrogenNeighbourCount_0(atom);
}
;
_.getNumberOfHydrogens = function getNumberOfHydrogens_0(){
  return carcc2.getNumberOfHydrogens(this.oclMolecule);
}
;
_.getOCL = function getOCL_4(){
  return $wnd.OCL;
}
;
_.getOccupiedValence = function getOccupiedValence_1(atom){
  return this.oclMolecule.getOccupiedValence_0(atom);
}
;
_.getPath = function getPath_1(pathAtom, atom1, atom2, maxLength, neglectBond){
  return this.oclMolecule.getPath_0(pathAtom, atom1, atom2, maxLength, neglectBond);
}
;
_.getPathBonds = function getPathBonds_0(pathAtom, pathBond, pathLength){
  this.oclMolecule.getPathBonds_0(pathAtom, pathBond, pathLength);
}
;
_.getPathLength = function getPathLength_1(atom1, atom2){
  return this.oclMolecule.getPathLength_0(atom1, atom2);
}
;
_.getRingSet = function getRingSet_0(){
  return new cargm.JSRingCollection(this.oclMolecule.getRingSet_0());
}
;
_.getRotatableBondCount = function getRotatableBondCount_2(){
  return this.oclMolecule.getRotatableBondCount_0();
}
;
_.getSVG = function getSVG(width_0, height, factorTextSize, autoCrop, autoCropMargin, id_0, options){
  var b, d, degenerated, i, mode, mol, newHeight, newWidth, newX, newY, result;
  degenerated = true;
  for (i = 0; i < this.oclMolecule.getAllAtoms_0() - 1; i++) {
    if (this.oclMolecule.getAtomX_0(i) != this.oclMolecule.getAtomX_0(i + 1) || this.oclMolecule.getAtomY_0(i) != this.oclMolecule.getAtomY_0(i + 1)) {
      degenerated = false;
      break;
    }
  }
  mol = degenerated?this.oclMolecule.getCompactCopy_0():this.oclMolecule;
  if (degenerated) {
    (new carcc3.CoordinateInventor_0(0)).invent(mol);
  }
  mode = cargm.getDisplayMode_0(options);
  d = new carc2.SVGDepictor(mol, mode, id_0);
  d.setFactorTextSize(factorTextSize);
  d.validateView(null, new cargg.GenericRectangle_0(0, 0, width_0, height), 65536);
  b = d.getBoundingRect();
  d.paint(null);
  result = d.toString_0();
  if (!autoCrop) {
    return result;
  }
   else {
    newWidth = toInt_0(jl.round_1(b.width_0 + autoCropMargin * 2));
    newHeight = toInt_0(jl.round_1(b.height_0 + autoCropMargin * 2));
    newX = toInt_0(jl.round_1(b.x_0 - autoCropMargin));
    newY = toInt_0(jl.round_1(b.y_0 - autoCropMargin));
    return jl.replaceAll_Ljava_lang_String_Ljava_lang_String__Ljava_lang_String___devirtual$(result, 'width="\\d+px" height="\\d+px" viewBox="0 0 \\d+ \\d+"', 'width="' + newWidth + 'px" height="' + newHeight + 'px" viewBox="' + newX + ' ' + newY + ' ' + newWidth + ' ' + newHeight + '"');
  }
}
;
_.getStereoBond = function getStereoBond_0(atom){
  return this.oclMolecule.getStereoBond_0(atom);
}
;
_.getStereoCenterCount = function getStereoCenterCount_2(){
  return this.oclMolecule.getStereoCenterCount_0();
}
;
_.getStereoMolecule = function getStereoMolecule(){
  return this.oclMolecule;
}
;
_.getStereoProblem = function getStereoProblem_0(atom){
  return this.oclMolecule.getStereoProblem_0(atom);
}
;
_.getSubstituent = function getSubstituent_1(coreAtom, firstAtom, isMemberAtom, substituent, atomMap){
  return this.oclMolecule.getSubstituent_0(coreAtom, firstAtom, isMemberAtom, substituent.getStereoMolecule(), atomMap);
}
;
_.getSubstituentSize = function getSubstituentSize_0(coreAtom, firstAtom){
  return this.oclMolecule.getSubstituentSize_0(coreAtom, firstAtom);
}
;
_.getSymmetryRank = function getSymmetryRank_1(atom){
  return this.oclMolecule.getSymmetryRank_0(atom);
}
;
_.getZNeighbour = function getZNeighbour_0(connAtom, bond){
  return this.oclMolecule.getZNeighbour_0(connAtom, bond);
}
;
_.invalidateHelperArrays = function invalidateHelperArrays_0(helperBits){
  this.oclMolecule.invalidateHelperArrays_0(helperBits);
}
;
_.inventCoordinates = function inventCoordinates_1(){
  var inventor;
  inventor = new carcc3.CoordinateInventor;
  inventor.setRandomSeed_0(0);
  inventor.invent(this.oclMolecule);
  this.oclMolecule.setStereoBondsFromParity_0();
}
;
_.is3D = function is3D_1(){
  return this.oclMolecule.is3D_0();
}
;
_.isAlkaliMetal = function isAlkaliMetal_0(atom){
  return this.oclMolecule.isAlkaliMetal_0(atom);
}
;
_.isAllylicAtom = function isAllylicAtom_0(atom){
  return this.oclMolecule.isAllylicAtom_0(atom);
}
;
_.isAmideTypeBond = function isAmideTypeBond_0(bond){
  return this.oclMolecule.isAmideTypeBond_0(bond);
}
;
_.isAromaticAtom = function isAromaticAtom_3(atom){
  return this.oclMolecule.isAromaticAtom_1(atom);
}
;
_.isAromaticBond = function isAromaticBond_2(bnd){
  return this.oclMolecule.isAromaticBond_0(bnd);
}
;
_.isAtomConfigurationUnknown = function isAtomConfigurationUnknown_0(atom){
  return this.oclMolecule.isAtomConfigurationUnknown_0(atom);
}
;
_.isAtomMarkedForDeletion = function isAtomMarkedForDeletion_0(atom){
  return this.oclMolecule.isAtomMarkedForDeletion_0(atom);
}
;
_.isAtomParityPseudo = function isAtomParityPseudo_0(atom){
  return this.oclMolecule.isAtomParityPseudo_0(atom);
}
;
_.isAtomStereoCenter = function isAtomStereoCenter_0(atom){
  return this.oclMolecule.isAtomStereoCenter_0(atom);
}
;
_.isAutoMappedAtom = function isAutoMappedAtom_0(atom){
  return this.oclMolecule.isAutoMappedAtom_0(atom);
}
;
_.isBINAPChiralityBond = function isBINAPChiralityBond_0(bond){
  return this.oclMolecule.isBINAPChiralityBond_0(bond);
}
;
_.isBondBackgroundHilited = function isBondBackgroundHilited_0(bond){
  return this.oclMolecule.isBondBackgroundHilited_0(bond);
}
;
_.isBondBridge = function isBondBridge_0(bond){
  return this.oclMolecule.isBondBridge_0(bond);
}
;
_.isBondForegroundHilited = function isBondForegroundHilited_0(bond){
  return this.oclMolecule.isBondForegroundHilited_0(bond);
}
;
_.isBondMarkedForDeletion = function isBondMarkedForDeletion_0(bond){
  return this.oclMolecule.isBondMarkedForDeletion_0(bond);
}
;
_.isBondParityPseudo = function isBondParityPseudo_0(bond){
  return this.oclMolecule.isBondParityPseudo_0(bond);
}
;
_.isBondParityUnknownOrNone = function isBondParityUnknownOrNone_0(bond){
  return this.oclMolecule.isBondParityUnknownOrNone_0(bond);
}
;
_.isChalcogene = function isChalcogene_0(atom){
  return this.oclMolecule.isChalcogene_0(atom);
}
;
_.isDelocalizedBond = function isDelocalizedBond_3(bond){
  return this.oclMolecule.isDelocalizedBond_0(bond);
}
;
_.isEarthAlkaliMetal = function isEarthAlkaliMetal_0(atom){
  return this.oclMolecule.isEarthAlkaliMetal_0(atom);
}
;
_.isElectronegative = function isElectronegative_0(atom){
  return this.oclMolecule.isElectronegative_0(atom);
}
;
_.isElectropositive = function isElectropositive_0(atom){
  return this.oclMolecule.isElectropositive_0(atom);
}
;
_.isFlatNitrogen = function isFlatNitrogen_1(atom){
  return this.oclMolecule.isFlatNitrogen_0(atom);
}
;
_.isFragment = function isFragment_4(){
  return this.oclMolecule.isFragment_0();
}
;
_.isHalogene = function isHalogene_0(atom){
  return this.oclMolecule.isHalogene_0(atom);
}
;
_.isMarkedAtom = function isMarkedAtom_0(atom){
  return this.oclMolecule.isMarkedAtom_0(atom);
}
;
_.isMetalAtom = function isMetalAtom_0(atom){
  return this.oclMolecule.isMetalAtom_0(atom);
}
;
_.isNaturalAbundance = function isNaturalAbundance_0(atom){
  return this.oclMolecule.isNaturalAbundance_0(atom);
}
;
_.isNitrogenFamily = function isNitrogenFamily_0(atom){
  return this.oclMolecule.isNitrogenFamily_0(atom);
}
;
_.isOrganicAtom = function isOrganicAtom_0(atom){
  return this.oclMolecule.isOrganicAtom_0(atom);
}
;
_.isPseudoRotatableBond = function isPseudoRotatableBond_0(bond){
  return this.oclMolecule.isPseudoRotatableBond_0(bond);
}
;
_.isPurelyOrganic = function isPurelyOrganic_0(){
  return this.oclMolecule.isPurelyOrganic_0();
}
;
_.isRingAtom = function isRingAtom_0(atom){
  return this.oclMolecule.isRingAtom_0(atom);
}
;
_.isRingBond = function isRingBond_0(bnd){
  return this.oclMolecule.isRingBond_0(bnd);
}
;
_.isSelectedAtom = function isSelectedAtom_0(atom){
  return this.oclMolecule.isSelectedAtom_0(atom);
}
;
_.isSelectedBond = function isSelectedBond_1(bond){
  return this.oclMolecule.isSelectedBond_0(bond);
}
;
_.isSimpleHydrogen = function isSimpleHydrogen_1(atom){
  return this.oclMolecule.isSimpleHydrogen_0(atom);
}
;
_.isSmallRingAtom = function isSmallRingAtom_0(atom){
  return this.oclMolecule.isSmallRingAtom_0(atom);
}
;
_.isSmallRingBond = function isSmallRingBond_1(bond){
  return this.oclMolecule.isSmallRingBond_0(bond);
}
;
_.isStabilizedAtom = function isStabilizedAtom_0(atom){
  return this.oclMolecule.isStabilizedAtom_0(atom);
}
;
_.isStereoBond = function isStereoBond_1(bond){
  return this.oclMolecule.isStereoBond_0(bond);
}
;
_.markAtomForDeletion = function markAtomForDeletion_0(atom){
  this.oclMolecule.markAtomForDeletion_0(atom);
}
;
_.markBondForDeletion = function markBondForDeletion_0(bond){
  this.oclMolecule.markBondForDeletion_0(bond);
}
;
_.normalizeAmbiguousBonds = function normalizeAmbiguousBonds_0(){
  return this.oclMolecule.normalizeAmbiguousBonds_0();
}
;
_.removeAtomColors = function removeAtomColors_0(){
  this.oclMolecule.removeAtomColors_0();
}
;
_.removeAtomCustomLabels = function removeAtomCustomLabels_0(){
  this.oclMolecule.removeAtomCustomLabels_0();
}
;
_.removeAtomMarkers = function removeAtomMarkers_0(){
  this.oclMolecule.removeAtomMarkers_0();
}
;
_.removeAtomSelection = function removeAtomSelection_0(){
  this.oclMolecule.removeAtomSelection_0();
}
;
_.removeBondHiliting = function removeBondHiliting_0(){
  this.oclMolecule.removeBondHiliting_0();
}
;
_.removeExplicitHydrogens = function removeExplicitHydrogens_1(is3D){
  this.oclMolecule.removeExplicitHydrogens_1(true, is3D);
}
;
_.removeQueryFeatures = function removeQueryFeatures_0(){
  return this.oclMolecule.removeQueryFeatures_0();
}
;
_.renumberESRGroups = function renumberESRGroups_0(type_0){
  return this.oclMolecule.renumberESRGroups_0(type_0);
}
;
_.scaleCoords = function scaleCoords_1(f){
  this.oclMolecule.scaleCoords_0(f);
}
;
_.setAllAtoms = function setAllAtoms_0(no){
  this.oclMolecule.setAllAtoms_0(no);
}
;
_.setAllBonds = function setAllBonds_0(no){
  this.oclMolecule.setAllBonds_0(no);
}
;
_.setAssignParitiesToNitrogen = function setAssignParitiesToNitrogen_0(b){
  this.oclMolecule.setAssignParitiesToNitrogen_0(b);
}
;
_.setAtomAbnormalValence = function setAtomAbnormalValence_0(atom, valence){
  this.oclMolecule.setAtomAbnormalValence_0(atom, valence);
}
;
_.setAtomCIPParity = function setAtomCIPParity_0(atom, parity){
  this.oclMolecule.setAtomCIPParity_0(atom, parity);
}
;
_.setAtomCharge = function setAtomCharge_0(atom, charge){
  this.oclMolecule.setAtomCharge_0(atom, charge);
}
;
_.setAtomColor = function setAtomColor_0(atom, color_0){
  this.oclMolecule.setAtomColor_0(atom, color_0);
}
;
_.setAtomConfigurationUnknown = function setAtomConfigurationUnknown_0(atom, u){
  this.oclMolecule.setAtomConfigurationUnknown_0(atom, u);
}
;
_.setAtomCustomLabel = function setAtomCustomLabel_1(atom, label_0){
  this.oclMolecule.setAtomCustomLabel_0(atom, label_0);
}
;
_.setAtomESR = function setAtomESR_0(atom, type_0, group){
  this.oclMolecule.setAtomESR_0(atom, type_0, group);
}
;
_.setAtomList = function setAtomList_1(atom, list, isExcludeList){
  this.oclMolecule.setAtomList_1(atom, list, isExcludeList);
}
;
_.setAtomMapNo = function setAtomMapNo_0(atom, mapNo, autoMapped){
  this.oclMolecule.setAtomMapNo_0(atom, mapNo, autoMapped);
}
;
_.setAtomMarker = function setAtomMarker_0(atom, s){
  this.oclMolecule.setAtomMarker_0(atom, s);
}
;
_.setAtomMass = function setAtomMass_0(atom, mass){
  this.oclMolecule.setAtomMass_0(atom, mass);
}
;
_.setAtomParity = function setAtomParity_0(atom, parity, isPseudo){
  this.oclMolecule.setAtomParity_0(atom, parity, isPseudo);
}
;
_.setAtomRadical = function setAtomRadical_0(atom, radical){
  this.oclMolecule.setAtomRadical_0(atom, radical);
}
;
_.setAtomSelection = function setAtomSelection_0(atom, s){
  this.oclMolecule.setAtomSelection_0(atom, s);
}
;
_.setAtomX = function setAtomX_0(atom, x_0){
  this.oclMolecule.setAtomX_0(atom, x_0);
}
;
_.setAtomY = function setAtomY_0(atom, y_0){
  this.oclMolecule.setAtomY_0(atom, y_0);
}
;
_.setAtomZ = function setAtomZ_0(atom, z_0){
  this.oclMolecule.setAtomZ_0(atom, z_0);
}
;
_.setAtomicNo = function setAtomicNo_1(atom, no){
  this.oclMolecule.setAtomicNo_0(atom, no);
}
;
_.setBondAtom = function setBondAtom_0(no, bond, atom){
  this.oclMolecule.setBondAtom_0(no, bond, atom);
}
;
_.setBondBackgroundHiliting = function setBondBackgroundHiliting_0(bond, s){
  this.oclMolecule.setBondBackgroundHiliting_0(bond, s);
}
;
_.setBondCIPParity = function setBondCIPParity_0(bond, parity){
  this.oclMolecule.setBondCIPParity_0(bond, parity);
}
;
_.setBondESR = function setBondESR_0(bond, type_0, group){
  this.oclMolecule.setBondESR_0(bond, type_0, group);
}
;
_.setBondForegroundHiliting = function setBondForegroundHiliting_0(bond, s){
  this.oclMolecule.setBondForegroundHiliting_0(bond, s);
}
;
_.setBondOrder = function setBondOrder_0(bond, order){
  this.oclMolecule.setBondOrder_0(bond, order);
}
;
_.setBondParity = function setBondParity_0(bond, parity, isPseudo){
  this.oclMolecule.setBondParity_0(bond, parity, isPseudo);
}
;
_.setBondParityUnknownOrNone = function setBondParityUnknownOrNone_0(bond){
  this.oclMolecule.setBondParityUnknownOrNone_0(bond);
}
;
_.setBondQueryFeature = function setBondQueryFeature_0(bond, feature, value_0){
  this.oclMolecule.setBondQueryFeature_0(bond, feature, value_0);
}
;
_.setBondType = function setBondType_0(bond, type_0){
  this.oclMolecule.setBondType_0(bond, type_0);
}
;
_.setChirality = function setChirality_0(c){
  this.oclMolecule.setChirality_0(c);
}
;
_.setFragment = function setFragment_6(isFragment){
  this.oclMolecule.setFragment_0(isFragment);
}
;
_.setHelperValidity = function setHelperValidity_0(helperValidity){
  this.oclMolecule.setHelperValidity_0(helperValidity);
}
;
_.setHydrogenProtection = function setHydrogenProtection_0(protectHydrogen){
  this.oclMolecule.setHydrogenProtection_0(protectHydrogen);
}
;
_.setMaxAtoms = function setMaxAtoms_0(v){
  this.oclMolecule.setMaxAtoms_0(v);
}
;
_.setMaxBonds = function setMaxBonds_0(v){
  this.oclMolecule.setMaxBonds_0(v);
}
;
_.setMoleculeColor = function setMoleculeColor_0(color_0){
  this.oclMolecule.setMoleculeColor_0(color_0);
}
;
_.setName = function setName_3(name_0){
  this.oclMolecule.setName_0(name_0);
}
;
_.setParitiesValid = function setParitiesValid_0(helperStereoBits){
  this.oclMolecule.setParitiesValid_0(helperStereoBits);
}
;
_.setStereoBondFromAtomParity = function setStereoBondFromAtomParity_0(atom){
  this.oclMolecule.setStereoBondFromAtomParity_0(atom);
}
;
_.setStereoBondFromBondParity = function setStereoBondFromBondParity_0(bond){
  this.oclMolecule.setStereoBondFromBondParity_0(bond);
}
;
_.setStereoBondsFromParity = function setStereoBondsFromParity_0(){
  this.oclMolecule.setStereoBondsFromParity_0();
}
;
_.setToRacemate = function setToRacemate_0(){
  this.oclMolecule.setToRacemate_0();
}
;
_.setUnknownParitiesToExplicitlyUnknown = function setUnknownParitiesToExplicitlyUnknown_1(){
  this.oclMolecule.setUnknownParitiesToExplicitlyUnknown_0();
}
;
_.shareSameFragment = function shareSameFragment_0(atom1, atom2){
  return this.oclMolecule.shareSameFragment_0(atom1, atom2);
}
;
_.stripIsotopInfo = function stripIsotopInfo_0(){
  return this.oclMolecule.stripIsotopInfo_0();
}
;
_.stripSmallFragments = function stripSmallFragments_0(considerMetalBonds){
  return this.oclMolecule.stripSmallFragments_0(considerMetalBonds);
}
;
_.stripStereoInformation = function stripStereoInformation_0(){
  this.oclMolecule.stripStereoInformation_0();
}
;
_.suggestBondType = function suggestBondType_0(atom1, atom2){
  return this.oclMolecule.suggestBondType_0(atom1, atom2);
}
;
_.supportsImplicitHydrogen = function supportsImplicitHydrogen_0(atom){
  return this.oclMolecule.supportsImplicitHydrogen_0(atom);
}
;
_.swapAtoms = function swapAtoms_0(atom1, atom2){
  this.oclMolecule.swapAtoms_0(atom1, atom2);
}
;
_.swapBonds = function swapBonds_0(bond1, bond2){
  this.oclMolecule.swapBonds_0(bond1, bond2);
}
;
_.toIsomericSmiles = function toIsomericSmiles(options){
  options = options || {};
  var createSmarts = options.createSmarts === true;
  var includeMapping = options.includeMapping === true;
  var kekulizedOutput = options.kekulizedOutput === true;
  return this.toIsomericSmilesInternal(createSmarts, includeMapping, kekulizedOutput);
}
;
_.toIsomericSmilesInternal = function toIsomericSmilesInternal(createSmarts, includeMapping, kekulizedOutput){
  var mode;
  mode = 0;
  if (createSmarts) {
    mode |= 1;
  }
  if (includeMapping) {
    mode |= 2;
  }
  if (kekulizedOutput) {
    mode |= 4;
  }
  return (new carc2.IsomericSmilesCreator_0(this.oclMolecule, mode)).getSmiles_0();
}
;
_.toMolfile = function toMolfile(){
  var creator;
  creator = new carc2.MolfileCreator(this.oclMolecule);
  return creator.getMolfile();
}
;
_.toMolfileV3 = function toMolfileV3(){
  var creator;
  creator = new carc2.MolfileV3Creator_0(this.oclMolecule);
  return creator.getMolfile();
}
;
_.toSVG = function toSVG(width_0, height, id_0, options){
  if (!width_0 || !height) {
    throw new Error('Molecule#toSVG requires width and height to be specified');
  }
  options = options || {};
  var factorTextSize = options.factorTextSize || 1;
  var autoCrop = options.autoCrop === true;
  var autoCropMargin = typeof options.autoCropMargin === 'undefined'?5:options.autoCropMargin;
  var svg = this.getSVG(width_0, height, factorTextSize, autoCrop, autoCropMargin, id_0, options);
  svg = svg.replace('<style>', '<style> text {font-family: sans-serif;}');
  if (options.fontWeight) {
    svg = svg.replace(/font-size=/g, 'font-weight="' + options.fontWeight + '" font-size=');
  }
  if (options.strokeWidth) {
    svg = svg.replace(/stroke-width="[^"]+"/g, 'stroke-width="' + options.strokeWidth + '"');
  }
  return svg;
}
;
_.toSmarts = function toSmarts(){
  return (new carc2.IsomericSmilesCreator_0(this.oclMolecule, 1)).getSmiles_0();
}
;
_.toSmiles = function toSmiles(){
  return (new carc2.SmilesCreator).generateSmiles(this.oclMolecule);
}
;
_.translateCoords = function translateCoords_0(dx, dy){
  this.oclMolecule.translateCoords_0(dx, dy);
}
;
_.validate = function validate_1(){
  this.oclMolecule.validate_0();
}
;
_.zoomAndRotate = function zoomAndRotate_0(zoom, angle, selected){
  this.oclMolecule.zoomAndRotate_0(zoom, angle, selected);
}
;
_.zoomAndRotateInit = function zoomAndRotateInit_2(x_0, y_0){
  this.oclMolecule.zoomAndRotateInit_0(x_0, y_0);
}
;
cargm.CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N = 32;
cargm.CANONIZER_CONSIDER_DIASTEREOTOPICITY = 2;
cargm.CANONIZER_CONSIDER_ENANTIOTOPICITY = 4;
cargm.CANONIZER_CONSIDER_STEREOHETEROTOPICITY = 0;
cargm.CANONIZER_COORDS_ARE_3D = 64;
cargm.CANONIZER_CREATE_PSEUDO_STEREO_GROUPS = 128;
cargm.CANONIZER_CREATE_SYMMETRY_RANK = 1;
cargm.CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS = 256;
cargm.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS = 8;
cargm.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS_WITHOUT_RANKING = 1024;
cargm.CANONIZER_ENCODE_ATOM_SELECTION = 16;
cargm.CANONIZER_NEGLECT_ANY_STEREO_INFORMATION = 2048;
cargm.CANONIZER_TIE_BREAK_FREE_VALENCE_ATOMS = 512;
cargm.FISCHER_PROJECTION_LIMIT_0 = 0;
cargm.FISCHER_PROJECTION_RING_LIMIT_0 = 24;
cargm.STEREO_ANGLE_LIMIT_0 = 0;
cargm.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION_0 = 'Ambiguous configuration at stereo center because of 2 parallel bonds';
cargm.VALIDATION_ERROR_ESR_CENTER_UNKNOWN_0 = 'Members of ESR groups must only be stereo centers with known configuration.';
cargm.VALIDATION_ERROR_OVER_UNDER_SPECIFIED_0 = 'Over- or under-specified stereo feature or more than one racemic type bond';
cargm.cAtomCIPParityNone_0 = 0;
cargm.cAtomCIPParityProblem_0 = 3;
cargm.cAtomCIPParityRorM_0 = 1;
cargm.cAtomCIPParitySorP_0 = 2;
cargm.cAtomColorBlue_0 = 64;
cargm.cAtomColorDarkGreen_0 = 384;
cargm.cAtomColorDarkRed_0 = 448;
cargm.cAtomColorGreen_0 = 192;
cargm.cAtomColorMagenta_0 = 256;
cargm.cAtomColorNone_0 = 0;
cargm.cAtomColorOrange_0 = 320;
cargm.cAtomColorRed_0 = 128;
cargm.cAtomParity1_0 = 1;
cargm.cAtomParity2_0 = 2;
cargm.cAtomParityIsPseudo_0 = 4;
cargm.cAtomParityNone_0 = 0;
cargm.cAtomParityUnknown_0 = 3;
cargm.cAtomQFAny_0 = 1;
cargm.cAtomQFAromState_0 = {l:6, m:0, h:4};
cargm.cAtomQFAromStateBits_0 = 2;
cargm.cAtomQFAromStateShift_0 = 1;
cargm.cAtomQFAromatic_0 = 2;
cargm.cAtomQFCharge_0 = 234881024;
cargm.cAtomQFChargeBits_0 = 3;
cargm.cAtomQFChargeShift_0 = 25;
cargm.cAtomQFENeighbourBits_0 = 5;
cargm.cAtomQFENeighbourShift_0 = 39;
cargm.cAtomQFENeighbours_0 = 17042430230528;
cargm.cAtomQFExcludeGroup_0 = 536870912;
cargm.cAtomQFFlatNitrogen_0 = 268435456;
cargm.cAtomQFHeteroAromatic_0 = {l:0, m:0, h:4};
cargm.cAtomQFHydrogen_0 = 1920;
cargm.cAtomQFHydrogenBits_0 = 4;
cargm.cAtomQFHydrogenShift_0 = 7;
cargm.cAtomQFIsNotStereo_0 = {l:0, m:0, h:2};
cargm.cAtomQFIsStereo_0 = {l:0, m:0, h:1};
cargm.cAtomQFMatchStereo_0 = 8192;
cargm.cAtomQFMoreNeighbours_0 = 4096;
cargm.cAtomQFNarrowing_0 = {l:4194302, m:4193343, h:7};
cargm.cAtomQFNeighbourBits_0 = 5;
cargm.cAtomQFNeighbourShift_0 = 17;
cargm.cAtomQFNeighbours_0 = 4063232;
cargm.cAtomQFNewRingSize_0 = 545460846592;
cargm.cAtomQFNewRingSizeBits_0 = 7;
cargm.cAtomQFNewRingSizeShift_0 = 32;
cargm.cAtomQFNoMoreNeighbours_0 = 2048;
cargm.cAtomQFNoOfBits_0 = 46;
cargm.cAtomQFNot0ENeighbours_0 = 549755813888;
cargm.cAtomQFNot0Hydrogen_0 = 128;
cargm.cAtomQFNot0Neighbours_0 = 131072;
cargm.cAtomQFNot0PiElectrons_0 = 16384;
cargm.cAtomQFNot1ENeighbour_0 = 1099511627776;
cargm.cAtomQFNot1Hydrogen_0 = 256;
cargm.cAtomQFNot1Neighbour_0 = 262144;
cargm.cAtomQFNot1PiElectron_0 = 32768;
cargm.cAtomQFNot2ENeighbours_0 = 2199023255552;
cargm.cAtomQFNot2Hydrogen_0 = 512;
cargm.cAtomQFNot2Neighbours_0 = 524288;
cargm.cAtomQFNot2PiElectrons_0 = 65536;
cargm.cAtomQFNot2RingBonds_0 = 16;
cargm.cAtomQFNot3ENeighbours_0 = 4398046511104;
cargm.cAtomQFNot3Hydrogen_0 = 1024;
cargm.cAtomQFNot3Neighbours_0 = 1048576;
cargm.cAtomQFNot3RingBonds_0 = 32;
cargm.cAtomQFNot4ENeighbours_0 = 8796093022208;
cargm.cAtomQFNot4Neighbours_0 = 2097152;
cargm.cAtomQFNot4RingBonds_0 = 64;
cargm.cAtomQFNotAromatic_0 = 4;
cargm.cAtomQFNotChain_0 = 8;
cargm.cAtomQFNotCharge0_0 = 67108864;
cargm.cAtomQFNotChargeNeg_0 = 33554432;
cargm.cAtomQFNotChargePos_0 = 134217728;
cargm.cAtomQFPiElectronBits_0 = 3;
cargm.cAtomQFPiElectronShift_0 = 14;
cargm.cAtomQFPiElectrons_0 = 114688;
cargm.cAtomQFRingSize0_0 = 4294967296;
cargm.cAtomQFRingSize3_0 = 8589934592;
cargm.cAtomQFRingSize4_0 = 17179869184;
cargm.cAtomQFRingSize5_0 = 34359738368;
cargm.cAtomQFRingSize6_0 = 68719476736;
cargm.cAtomQFRingSize7_0 = 137438953472;
cargm.cAtomQFRingSizeLarge_0 = 274877906944;
cargm.cAtomQFRingState_0 = 120;
cargm.cAtomQFRingStateBits_0 = 4;
cargm.cAtomQFRingStateShift_0 = 3;
cargm.cAtomQFRxnParityBits_0 = 2;
cargm.cAtomQFRxnParityHint_0 = 3221225472;
cargm.cAtomQFRxnParityInvert_0 = 2147483648;
cargm.cAtomQFRxnParityRacemize_0 = 3221225472;
cargm.cAtomQFRxnParityRetain_0 = 1073741824;
cargm.cAtomQFRxnParityShift_0 = 30;
cargm.cAtomQFSimpleFeatures_0 = {l:4179966, m:4063288, h:7};
cargm.cAtomQFSmallRingSize_0 = 29360128;
cargm.cAtomQFSmallRingSizeBits_0 = 3;
cargm.cAtomQFSmallRingSizeShift_0 = 22;
cargm.cAtomQFStereoState_0 = {l:0, m:0, h:3};
cargm.cAtomQFStereoStateBits_0 = 2;
cargm.cAtomQFStereoStateShift_0 = 44;
cargm.cAtomRadicalState_0 = 48;
cargm.cAtomRadicalStateD_0 = 32;
cargm.cAtomRadicalStateNone_0 = 0;
cargm.cAtomRadicalStateS_0 = 16;
cargm.cAtomRadicalStateShift_0 = 4;
cargm.cAtomRadicalStateT_0 = 48;
cargm.cBondCIPParityEorP_0 = 1;
cargm.cBondCIPParityNone_0 = 0;
cargm.cBondCIPParityProblem_0 = 3;
cargm.cBondCIPParityZorM_0 = 2;
cargm.cBondFlagsHelper2_0 = 704;
cargm.cBondFlagsHelper3_0 = 63;
cargm.cBondParityEor1_0 = 1;
cargm.cBondParityNone_0 = 0;
cargm.cBondParityUnknown_0 = 3;
cargm.cBondParityZor2_0 = 2;
cargm.cBondQFAllFeatures_0 = 16777215;
cargm.cBondQFAromState_0 = 6291456;
cargm.cBondQFAromStateBits_0 = 2;
cargm.cBondQFAromStateShift_0 = 21;
cargm.cBondQFAromatic_0 = 2097152;
cargm.cBondQFBondTypes_0 = 31;
cargm.cBondQFBondTypesBits_0 = 5;
cargm.cBondQFBondTypesShift_0 = 0;
cargm.cBondQFBridge_0 = 130560;
cargm.cBondQFBridgeBits_0 = 8;
cargm.cBondQFBridgeMin_0 = 7680;
cargm.cBondQFBridgeMinBits_0 = 4;
cargm.cBondQFBridgeMinShift_0 = 9;
cargm.cBondQFBridgeShift_0 = 9;
cargm.cBondQFBridgeSpan_0 = 122880;
cargm.cBondQFBridgeSpanBits_0 = 4;
cargm.cBondQFBridgeSpanShift_0 = 13;
cargm.cBondQFDelocalized_0 = 8;
cargm.cBondQFDouble_0 = 2;
cargm.cBondQFMatchFormalOrder_0 = 8388608;
cargm.cBondQFMatchStereo_0 = 1048576;
cargm.cBondQFMetalLigand_0 = 16;
cargm.cBondQFNarrowing_0 = 6291840;
cargm.cBondQFNoOfBits_0 = 23;
cargm.cBondQFNotAromatic_0 = 4194304;
cargm.cBondQFNotRing_0 = 128;
cargm.cBondQFQuadruple_0 = 32;
cargm.cBondQFQuintuple_0 = 64;
cargm.cBondQFRareBondTypes_0 = 96;
cargm.cBondQFRareBondTypesBits_0 = 2;
cargm.cBondQFRareBondTypesShift_0 = 5;
cargm.cBondQFRing_0 = 256;
cargm.cBondQFRingSize_0 = 917504;
cargm.cBondQFRingSizeBits_0 = 3;
cargm.cBondQFRingSizeShift_0 = 17;
cargm.cBondQFRingState_0 = 384;
cargm.cBondQFRingStateBits_0 = 2;
cargm.cBondQFRingStateShift_0 = 7;
cargm.cBondQFSimpleFeatures_0 = 6291967;
cargm.cBondQFSingle_0 = 1;
cargm.cBondQFTriple_0 = 4;
cargm.cBondTypeCross_0 = 386;
cargm.cBondTypeDeleted_0 = 512;
cargm.cBondTypeDelocalized_0 = 64;
cargm.cBondTypeDouble_0 = 2;
cargm.cBondTypeDown_0 = 129;
cargm.cBondTypeIncreaseOrder_0 = 511;
cargm.cBondTypeMaskSimple_0 = 127;
cargm.cBondTypeMaskStereo_0 = 384;
cargm.cBondTypeMetalLigand_0 = 32;
cargm.cBondTypeQuadruple_0 = 8;
cargm.cBondTypeQuintuple_0 = 16;
cargm.cBondTypeSingle_0 = 1;
cargm.cBondTypeTriple_0 = 4;
cargm.cBondTypeUp_0 = 257;
cargm.cChiralityDiastereomers_0 = 458752;
cargm.cChiralityEpimers_0 = 393216;
cargm.cChiralityIsomerCountMask_0 = 65535;
cargm.cChiralityKnownEnantiomer_0 = 262144;
cargm.cChiralityMeso_0 = 131072;
cargm.cChiralityNotChiral_0 = 65536;
cargm.cChiralityRacemic_0 = 196608;
cargm.cChiralityUnknown_0 = 0;
cargm.cChiralityUnknownEnantiomer_0 = 327680;
cargm.cDefaultAVBL_0 = 24;
cargm.cDefaultAllowedPseudoAtoms_0 = 0;
cargm.cDefaultAtomValence_0 = 6;
cargm.cESRGroupBits_0 = 5;
cargm.cESRMaxGroups_0 = 32;
cargm.cESRTypeAbs_0 = 0;
cargm.cESRTypeAnd_0 = 1;
cargm.cESRTypeOr_0 = 2;
cargm.cHelperAll_0 = 255;
cargm.cHelperBitCIP_0 = 16;
cargm.cHelperBitIncludeNitrogenParities_0 = 128;
cargm.cHelperBitNeighbours_0 = 1;
cargm.cHelperBitParities_0 = 8;
cargm.cHelperBitRings_0 = 4;
cargm.cHelperBitRingsSimple_0 = 2;
cargm.cHelperBitSymmetrySimple_0 = 32;
cargm.cHelperBitSymmetryStereoHeterotopicity_0 = 64;
cargm.cHelperBitsStereo_0 = 248;
cargm.cHelperCIP_0 = 0;
cargm.cHelperNeighbours_0 = 1;
cargm.cHelperNone_0 = 0;
cargm.cHelperParities_0 = 0;
cargm.cHelperRings_0 = 0;
cargm.cHelperRingsSimple_0 = 0;
cargm.cHelperSymmetrySimple_0 = 0;
cargm.cHelperSymmetryStereoHeterotopicity_0 = 0;
cargm.cMaxAtomicNo_0 = 190;
cargm.cMaxConnAtoms_0 = 16;
cargm.cMoleculeColorDefault_0 = 0;
cargm.cMoleculeColorNeutral_0 = 1;
cargm.cPseudoAtomA_0 = 16;
cargm.cPseudoAtomAttachmentPoint_0 = 256;
cargm.cPseudoAtomPolymer_0 = 128;
cargm.cPseudoAtomR_0 = 8;
cargm.cPseudoAtomX_0 = 32;
cargm.cPseudoAtomsAGroups_0 = 4;
cargm.cPseudoAtomsAll_0 = 511;
cargm.cPseudoAtomsAminoAcids_0 = 64;
cargm.cPseudoAtomsHydrogenIsotops_0 = 1;
cargm.cPseudoAtomsRGroups_0 = 2;
cggl.Lcom_actelion_research_gwt_minimal_JSMolecule_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSMolecule', 59, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSReaction = function $clinit_JSReaction(){
  cargm.$clinit_JSReaction = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSReaction = function JSReaction(reaction){
  cargm.$clinit_JSReaction();
  Object_0.call(this);
  this.$init_260();
  this.oclReaction = reaction;
}
;
cargm.create = function create(){
  cargm.$clinit_JSReaction();
  return new cargm.JSReaction(new carcr.Reaction);
}
;
cargm.fromMolecules = function fromMolecules(mol, reactantCount){
  cargm.$clinit_JSReaction();
  var i, oclMol;
  oclMol = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_StereoMolecule_2_classLit, {126:1, 4:1, 1:1, 7:1}, 19, mol.length, 0, 1);
  for (i = 0; i < mol.length; i++) {
    setCheck(oclMol, i, mol[i].getStereoMolecule());
  }
  return new cargm.JSReaction(new carcr.Reaction_1(oclMol, reactantCount));
}
;
cargm.fromRxn = function fromRxn(rxn){
  cargm.$clinit_JSReaction();
  var parser;
  parser = new carci.RXNFileParser;
  return new cargm.JSReaction(parser.getReaction(rxn));
}
;
cargm.fromSmiles_1 = function fromSmiles_1(smiles){
  cargm.$clinit_JSReaction();
  var reaction;
  reaction = (new carc2.SmilesParser).parseReaction_1(jl.getBytes___B__devirtual$(smiles));
  return new cargm.JSReaction(reaction);
}
;
defineClass(128, 1, {1:1}, cargm.JSReaction);
_.$init_260 = function $init_260(){
}
;
_.addCatalyst = function addCatalyst_1(catalyst){
  this.oclReaction.addCatalyst_0(catalyst.getStereoMolecule());
}
;
_.addCatalystAt = function addCatalystAt(catalyst, position){
  this.oclReaction.addCatalyst_1(catalyst.getStereoMolecule(), position);
}
;
_.addProduct = function addProduct_1(product){
  this.oclReaction.addProduct_0(product.getStereoMolecule());
}
;
_.addProductAt = function addProductAt(product, position){
  this.oclReaction.addProduct_1(product.getStereoMolecule(), position);
}
;
_.addReactant = function addReactant_1(reactant){
  this.oclReaction.addReactant_0(reactant.getStereoMolecule());
}
;
_.addReactantAt = function addReactantAt(reactant, position){
  this.oclReaction.addReactant_1(reactant.getStereoMolecule(), position);
}
;
_.clear = function clear_12(){
  this.oclReaction.clear_0();
}
;
_.clone = function clone_1(){
  return new cargm.JSReaction(new carcr.Reaction_0(this.oclReaction));
}
;
_.getAverageBondLength = function getAverageBondLength_6(){
  return this.oclReaction.getAverageBondLength_0();
}
;
_.getCatalyst = function getCatalyst_0(no){
  return new cargm.JSMolecule_1(this.oclReaction.getCatalyst_0(no));
}
;
_.getCatalysts = function getCatalysts_0(){
  return this.oclReaction.getCatalysts_0();
}
;
_.getHighestMapNo = function getHighestMapNo_0(){
  return this.oclReaction.getHighestMapNo_0();
}
;
_.getMergedCopy = function getMergedCopy_0(){
  return new cargm.JSReaction(this.oclReaction.getMergedCopy_0());
}
;
_.getMolecule = function getMolecule_7(no){
  return new cargm.JSMolecule_1(this.oclReaction.getMolecule_1(no));
}
;
_.getMolecules = function getMolecules_0(){
  return this.oclReaction.getMolecules_0();
}
;
_.getName = function getName_6(){
  return this.oclReaction.getName_0();
}
;
_.getOCL = function getOCL_5(){
  return $wnd.OCL;
}
;
_.getProduct = function getProduct_0(no){
  return new cargm.JSMolecule_1(this.oclReaction.getProduct_0(no));
}
;
_.getProducts = function getProducts_2(){
  return this.oclReaction.getProducts_0();
}
;
_.getReactant = function getReactant_0(no){
  return new cargm.JSMolecule_1(this.oclReaction.getReactant_0(no));
}
;
_.getReactants = function getReactants_0(){
  return this.oclReaction.getReactants_0();
}
;
_.getReaction_1 = function getReaction_2(){
  return this.oclReaction;
}
;
_.getReactionCenterMapNos = function getReactionCenterMapNos_0(){
  return this.oclReaction.getReactionCenterMapNos_0();
}
;
_.isEmpty = function isEmpty_2(){
  return this.oclReaction.isEmpty_0();
}
;
_.isFragment = function isFragment_5(){
  return this.oclReaction.isFragment_0();
}
;
_.isPerfectlyMapped = function isPerfectlyMapped_0(){
  return this.oclReaction.isPerfectlyMapped_0();
}
;
_.isReactionLayoutRequired = function isReactionLayoutRequired_0(){
  return this.oclReaction.isReactionLayoutRequired_0();
}
;
_.removeCatalysts = function removeCatalysts_0(){
  this.oclReaction.removeCatalysts_0();
}
;
_.setFragment = function setFragment_7(f){
  this.oclReaction.setFragment_0(f);
}
;
_.setName = function setName_4(name_0){
  this.oclReaction.setName_0(name_0);
}
;
_.toRxn = function toRxn(programName){
  var creator;
  creator = new carci.RXNFileCreator(this.oclReaction, programName);
  return creator.getRXNfile();
}
;
_.toRxnV3 = function toRxnV3(programName){
  var creator;
  creator = new carci.RXNFileV3Creator(this.oclReaction, programName);
  return creator.getRXNfile();
}
;
_.toSmiles = function toSmiles_0(){
  return carc2.createReactionSmiles(this.oclReaction);
}
;
_.validateMapping = function validateMapping_0(){
  this.oclReaction.validateMapping_0();
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSReaction_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSReaction', 128, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSRingCollection = function $clinit_JSRingCollection(){
  cargm.$clinit_JSRingCollection = emptyMethod;
  jl.$clinit_Object();
  cargm.MODE_SMALL_AND_LARGE_RINGS_0 = 1 | 2;
  cargm.MODE_SMALL_RINGS_AND_AROMATICITY_0 = 1 | 4;
  cargm.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY_0 = 1 | 2 | 4;
}
;
cargm.JSRingCollection = function JSRingCollection(input_0){
  cargm.$clinit_JSRingCollection();
  Object_0.call(this);
  this.$init_261();
  this.coll = input_0;
}
;
defineClass(425, 1, {1:1}, cargm.JSRingCollection);
_.$init_261 = function $init_261(){
}
;
_.determineAromaticity = function determineAromaticity_1(isAromatic, isDelocalized, heteroPosition, includeTautomericBonds){
  this.coll.determineAromaticity_1(isAromatic, isDelocalized, heteroPosition, includeTautomericBonds);
}
;
_.getAtomIndex = function getAtomIndex_0(ringNo, atom){
  return this.coll.getAtomIndex_0(ringNo, atom);
}
;
_.getAtomRingSize = function getAtomRingSize_2(atom){
  return this.coll.getAtomRingSize_0(atom);
}
;
_.getBondIndex = function getBondIndex_2(ringNo, bond){
  return this.coll.getBondIndex_0(ringNo, bond);
}
;
_.getBondRingSize = function getBondRingSize_2(bond){
  return this.coll.getBondRingSize_0(bond);
}
;
_.getHeteroPosition = function getHeteroPosition_0(ringNo){
  return this.coll.getHeteroPosition_0(ringNo);
}
;
_.getOCL = function getOCL_6(){
  return $wnd.OCL;
}
;
_.getRingAtoms = function getRingAtoms_1(ringNo){
  return this.coll.getRingAtoms_0(ringNo);
}
;
_.getRingBonds = function getRingBonds_2(ringNo){
  return this.coll.getRingBonds_0(ringNo);
}
;
_.getRingSize = function getRingSize_0(ringNo){
  return this.coll.getRingSize_0(ringNo);
}
;
_.getSharedRing = function getSharedRing_0(bond1, bond2){
  return this.coll.getSharedRing_0(bond1, bond2);
}
;
_.getSize = function getSize_5(){
  return this.coll.getSize_0();
}
;
_.isAromatic = function isAromatic_1(ringNo){
  return this.coll.isAromatic_0(ringNo);
}
;
_.isAtomMember = function isAtomMember_0(ringNo, atom){
  return this.coll.isAtomMember_0(ringNo, atom);
}
;
_.isBondMember = function isBondMember_0(ringNo, bond){
  return this.coll.isBondMember_0(ringNo, bond);
}
;
_.isDelocalized = function isDelocalized_1(ringNo){
  return this.coll.isDelocalized_0(ringNo);
}
;
_.qualifiesAsAmideTypeBond = function qualifiesAsAmideTypeBond_0(bond){
  return this.coll.qualifiesAsAmideTypeBond_0(bond);
}
;
_.validateMemberIndex = function validateMemberIndex_0(ringNo, index_0){
  return this.coll.validateMemberIndex_0(ringNo, index_0);
}
;
cargm.MAX_SMALL_RING_SIZE_0 = 7;
cargm.MODE_AROMATICITY_0 = 4;
cargm.MODE_LARGE_RINGS_0 = 2;
cargm.MODE_SMALL_AND_LARGE_RINGS_0 = 0;
cargm.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY_0 = 0;
cargm.MODE_SMALL_RINGS_0 = 1;
cargm.MODE_SMALL_RINGS_AND_AROMATICITY_0 = 0;
cargm.MODE_SMALL_RINGS_ONLY_0 = 1;
cggl.Lcom_actelion_research_gwt_minimal_JSRingCollection_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSRingCollection', 425, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSSDFileParser = function $clinit_JSSDFileParser(){
  cargm.$clinit_JSSDFileParser = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSSDFileParser = function JSSDFileParser(sdf, fields){
  cargm.$clinit_JSSDFileParser();
  Object_0.call(this);
  this.$init_262();
  this.parser = new carci.SDFileParser(new ji.StringReader(sdf), fields);
}
;
defineClass(916, 1, {1:1}, cargm.JSSDFileParser);
_.$init_262 = function $init_262(){
}
;
_.getField = function getField(name_0){
  var i, names;
  names = this.parser.getFieldNames_0();
  for (i = 0; i < names.length; i++) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(names[i], name_0)) {
      return this.parser.getFieldData_0(i);
    }
  }
  return null;
}
;
_.getFieldData = function getFieldData_0(idx){
  return this.parser.getFieldData_0(idx);
}
;
_.getFieldNames = function getFieldNames_1(recordsToInspect){
  return this.parser.getFieldNames_1(recordsToInspect);
}
;
_.getMolecule = function getMolecule_8(){
  return new cargm.JSMolecule_1(this.parser.getMolecule_0());
}
;
_.getNextFieldData = function getNextFieldData_0(){
  return this.parser.getNextFieldData_0();
}
;
_.getNextMolFile = function getNextMolFile_0(){
  return this.parser.getNextMolFile_0();
}
;
_.getOCL = function getOCL_7(){
  return $wnd.OCL;
}
;
_.next = function next_1(){
  return this.parser.next_1();
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSSDFileParser_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSSDFileParser', 916, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSSSSearcher = function $clinit_JSSSSearcher(){
  cargm.$clinit_JSSSSearcher = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSSSSearcher = function JSSSSearcher(){
  cargm.$clinit_JSSSSearcher();
  Object_0.call(this);
  this.$init_263();
}
;
defineClass(917, 1, {1:1}, cargm.JSSSSearcher);
_.$init_263 = function $init_263(){
  this.searcher = new carc2.SSSearcher;
}
;
_.getOCL = function getOCL_8(){
  return $wnd.OCL;
}
;
_.isFragmentInMolecule = function isFragmentInMolecule_2(){
  return this.searcher.isFragmentInMolecule_0();
}
;
_.setFragment = function setFragment_8(fragment){
  this.searcher.setFragment_1(fragment.getStereoMolecule());
}
;
_.setMol = function setMol_0(fragment, molecule){
  this.setMolecule(molecule);
  this.setFragment(fragment);
}
;
_.setMolecule = function setMolecule_4(molecule){
  this.searcher.setMolecule_0(molecule.getStereoMolecule());
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSSSSearcher_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSSSSearcher', 917, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSSSSearcherWithIndex = function $clinit_JSSSSearcherWithIndex(){
  cargm.$clinit_JSSSSearcherWithIndex = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSSSSearcherWithIndex = function JSSSSearcherWithIndex(){
  cargm.$clinit_JSSSSearcherWithIndex();
  Object_0.call(this);
  this.$init_264();
}
;
cargm.bitCount_0 = function bitCount_0(x_0){
  cargm.$clinit_JSSSSearcherWithIndex();
  return bitCount_1(x_0);
}
;
cargm.getHexStringFromIndex_0 = function getHexStringFromIndex_0(index_0){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.getHexStringFromIndex(index_0);
}
;
cargm.getIndexFromHexString_0 = function getIndexFromHexString_0(hex){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.getIndexFromHexString(hex);
}
;
cargm.getKeyIDCode = function getKeyIDCode(){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.$clinit_SSSearcherWithIndex() , carc2.cKeyIDCode;
}
;
cargm.getSimilarityAngleCosine_0 = function getSimilarityAngleCosine_0(index1, index2){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.getSimilarityAngleCosine(index1, index2);
}
;
cargm.getSimilarityTanimoto_0 = function getSimilarityTanimoto_0(index1, index2){
  cargm.$clinit_JSSSSearcherWithIndex();
  return carc2.getSimilarityTanimoto(index1, index2);
}
;
defineClass(918, 1, {1:1}, cargm.JSSSSearcherWithIndex);
_.$init_264 = function $init_264(){
  this.searcher = new carc2.SSSearcherWithIndex;
}
;
_.createIndex = function createIndex_0(molecule){
  return this.searcher.createIndex_0(molecule.getStereoMolecule());
}
;
_.getOCL = function getOCL_9(){
  return $wnd.OCL;
}
;
_.isFragmentInMolecule = function isFragmentInMolecule_3(){
  return this.searcher.isFragmentInMolecule_0();
}
;
_.setFragment = function setFragment_9(fragment, index_0){
  this.searcher.setFragment_2(fragment.getStereoMolecule(), index_0);
}
;
_.setMolecule = function setMolecule_5(molecule, index_0){
  this.searcher.setMolecule_1(molecule.getStereoMolecule(), index_0);
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSSSSearcherWithIndex_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSSSSearcherWithIndex', 918, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSSmilesParser = function $clinit_JSSmilesParser(){
  cargm.$clinit_JSSmilesParser = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSSmilesParser = function JSSmilesParser(options){
  cargm.$clinit_JSSmilesParser();
  Object_0.call(this);
  this.$init_265();
  this.init_5(options);
}
;
defineClass(919, 1, {1:1}, cargm.JSSmilesParser);
_.$init_265 = function $init_265(){
}
;
_.getSmartsWarning = function getSmartsWarning_0(){
  return this.oclParser.getSmartsWarning_0();
}
;
_.init_5 = function init_5(options){
  options = options || {};
  var smartsMode = options.smartsMode || 'smiles';
  var skipCoordinateTemplates = options.skipCoordinateTemplates || false;
  var makeHydrogenExplicit = options.makeHydrogenExplicit || false;
  var noCactvs = options.noCactvs || false;
  var singleDotSeparator = options.singleDotSeparator || false;
  var createSmartsWarnings = options.createSmartsWarnings || false;
  this.init_6(smartsMode, skipCoordinateTemplates, makeHydrogenExplicit, noCactvs, singleDotSeparator, createSmartsWarnings);
}
;
_.init_6 = function init_6(smartsMode, skipCoordinateTemplates, makeHydrogenExplicit, noCactvs, singleDotSeparator, createSmartsWarnings){
  var mode;
  mode = 0;
  switch (smartsMode) {
    case 'smarts':
      mode = 2;
      break;
    case 'guess':
      mode = 1;
      break;
  }
  if (makeHydrogenExplicit) {
    mode |= 8;
  }
  if (skipCoordinateTemplates) {
    mode |= 4;
  }
  if (noCactvs) {
    mode |= 16;
  }
  if (singleDotSeparator) {
    mode |= 32;
  }
  if (createSmartsWarnings) {
    mode |= 64;
  }
  this.oclParser = new carc2.SmilesParser_0(mode);
}
;
_.parseMolecule_0 = function parseMolecule(molecule, smiles, createCoordinates, readStereoFeatures){
  this.oclParser.parse_9(molecule.getStereoMolecule(), jl.getBytes___B__devirtual$(smiles), createCoordinates, readStereoFeatures);
  return molecule;
}
;
_.parseMolecule = function parseMolecule_0(smiles, options){
  options = options || {};
  var molecule = options.molecule || new cargm.JSMolecule;
  var createCoordinates = !options.noCoordinates;
  var readStereoFeatures = !options.noStereo;
  return this.parseMolecule_0(molecule, smiles, createCoordinates, readStereoFeatures);
}
;
_.parseReaction = function parseReaction_1(smiles){
  return new cargm.JSReaction(this.oclParser.parseReaction_0(smiles));
}
;
_.setRandomSeed = function setRandomSeed_1(seed){
  this.oclParser.setRandomSeed_0(fromInt_0(seed));
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSSmilesParser_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSSmilesParser', 919, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_JSUtil = function $clinit_JSUtil(){
  cargm.$clinit_JSUtil = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.JSUtil = function JSUtil(){
  cargm.$clinit_JSUtil();
  Object_0.call(this);
  this.$init_266();
}
;
cargm.getHoseCodesFromDiastereotopicID = function getHoseCodesFromDiastereotopicID(diastereotopicID, options){
  cargm.$clinit_JSUtil();
  options = options || {};
  var maxSphereSize = (typeof options.maxSphereSize === 'undefined'?5:options.maxSphereSize) | 0;
  var type_0 = (typeof options.type === 'undefined'?0:options.type) | 0;
  return carcc2.getHoseCodesFromDiaID(diastereotopicID, maxSphereSize, type_0);
}
;
defineClass(920, 1, {1:1}, cargm.JSUtil);
_.$init_266 = function $init_266(){
}
;
cggl.Lcom_actelion_research_gwt_minimal_JSUtil_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'JSUtil', 920, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_Minimal = function $clinit_Minimal(){
  cargm.$clinit_Minimal = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.Minimal = function Minimal(){
  cargm.$clinit_Minimal();
  Object_0.call(this);
  this.$init_267();
}
;
defineClass(398, 1, {99:1, 1:1}, cargm.Minimal);
_.$init_267 = function $init_267(){
}
;
_.onModuleLoad = function onModuleLoad_2(){
}
;
cggl.Lcom_actelion_research_gwt_minimal_Minimal_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'Minimal', 398, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_MolecularFormula_0 = function $clinit_MolecularFormula_0(){
  cargm.$clinit_MolecularFormula_0 = emptyMethod;
  carc2.$clinit_MolecularFormula();
}
;
cargm.MolecularFormula_0 = function MolecularFormula_0(mol){
  cargm.$clinit_MolecularFormula_0();
  carc2.MolecularFormula.call(this, mol);
  this.$init_268();
}
;
defineClass(424, 127, {127:1, 1:1}, cargm.MolecularFormula_0);
_.$init_268 = function $init_268(){
}
;
defineProperties(_, {absoluteWeight:{'get':function getAbsoluteWeight_0(){
  return getClassPrototype(127).getAbsoluteWeight.call(this);
}
}});
_.getAbsoluteWeight = function(){
  return this.absoluteWeight;
}
;
defineProperties(_, {formula:{'get':function getFormula_0(){
  return getClassPrototype(127).getFormula.call(this);
}
}});
_.getFormula = function(){
  return this.formula;
}
;
defineProperties(_, {relativeWeight:{'get':function getRelativeWeight_0(){
  return getClassPrototype(127).getRelativeWeight.call(this);
}
}});
_.getRelativeWeight = function(){
  return this.relativeWeight;
}
;
cggl.Lcom_actelion_research_gwt_minimal_MolecularFormula_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'MolecularFormula', 424, cggl.Lcom_actelion_research_chem_MolecularFormula_2_classLit);
cargm.$clinit_MoleculeQueryFeatures = function $clinit_MoleculeQueryFeatures(){
  cargm.$clinit_MoleculeQueryFeatures = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.getAtomQueryFeatures_0 = function getAtomQueryFeatures_0(oclMolecule, atom){
  cargm.$clinit_MoleculeQueryFeatures();
  var atomQueryFeatures, toReturn;
  toReturn = cargm.create_0();
  atomQueryFeatures = oclMolecule.getAtomQueryFeatures(atom);
  cargm.$setPropertyBoolean(toReturn, 'aromatic', gt(and_0(atomQueryFeatures, 2), 0));
  cargm.$setPropertyBoolean(toReturn, 'notAromatic', gt(and_0(atomQueryFeatures, 4), 0));
  cargm.$setPropertyBoolean(toReturn, 'notChain', gt(and_0(atomQueryFeatures, 8), 0));
  cargm.$setPropertyBoolean(toReturn, 'not2RingBonds', gt(and_0(atomQueryFeatures, 16), 0));
  cargm.$setPropertyBoolean(toReturn, 'not3RingBonds', gt(and_0(atomQueryFeatures, 32), 0));
  cargm.$setPropertyBoolean(toReturn, 'not4RingBonds', gt(and_0(atomQueryFeatures, 64), 0));
  cargm.$setPropertyBoolean(toReturn, 'noMoreNeighbours', gt(and_0(atomQueryFeatures, 2048), 0));
  cargm.$setPropertyBoolean(toReturn, 'moreNeighbours', gt(and_0(atomQueryFeatures, 4096), 0));
  cargm.$setPropertyBoolean(toReturn, 'matchStereo', gt(and_0(atomQueryFeatures, 8192), 0));
  cargm.$setPropertyBoolean(toReturn, 'not0PiElectrons', gt(and_0(atomQueryFeatures, 16384), 0));
  cargm.$setPropertyBoolean(toReturn, 'not1PiElectrons', gt(and_0(atomQueryFeatures, 32768), 0));
  cargm.$setPropertyBoolean(toReturn, 'not2PiElectrons', gt(and_0(atomQueryFeatures, 65536), 0));
  cargm.$setPropertyBoolean(toReturn, 'not0Hydrogen', gt(and_0(atomQueryFeatures, 128), 0));
  cargm.$setPropertyBoolean(toReturn, 'not1Hydrogen', gt(and_0(atomQueryFeatures, 256), 0));
  cargm.$setPropertyBoolean(toReturn, 'not2Hydrogen', gt(and_0(atomQueryFeatures, 512), 0));
  cargm.$setPropertyBoolean(toReturn, 'not3Hydrogen', gt(and_0(atomQueryFeatures, 1024), 0));
  cargm.$setPropertyBoolean(toReturn, 'not0Neighbours', gt(and_0(atomQueryFeatures, 131072), 0));
  cargm.$setPropertyBoolean(toReturn, 'not1Neighbours', gt(and_0(atomQueryFeatures, 131072), 0));
  cargm.$setPropertyBoolean(toReturn, 'not2Neighbours', gt(and_0(atomQueryFeatures, 524288), 0));
  cargm.$setPropertyBoolean(toReturn, 'not3Neighbours', gt(and_0(atomQueryFeatures, 1048576), 0));
  cargm.$setPropertyBoolean(toReturn, 'not4Neighbours', gt(and_0(atomQueryFeatures, 2097152), 0));
  cargm.$setPropertyBoolean(toReturn, 'notChargeNeg', gt(and_0(atomQueryFeatures, 33554432), 0));
  cargm.$setPropertyBoolean(toReturn, 'notCharge0', gt(and_0(atomQueryFeatures, 67108864), 0));
  cargm.$setPropertyBoolean(toReturn, 'noChargePos', gt(and_0(atomQueryFeatures, 134217728), 0));
  cargm.$setPropertyBoolean(toReturn, 'ringSize0', gt(and_0(atomQueryFeatures, 4294967296), 0));
  cargm.$setPropertyBoolean(toReturn, 'ringSize3', gt(and_0(atomQueryFeatures, 8589934592), 0));
  cargm.$setPropertyBoolean(toReturn, 'ringSize4', gt(and_0(atomQueryFeatures, 17179869184), 0));
  cargm.$setPropertyBoolean(toReturn, 'ringSize5', gt(and_0(atomQueryFeatures, 34359738368), 0));
  cargm.$setPropertyBoolean(toReturn, 'ringSize6', gt(and_0(atomQueryFeatures, 68719476736), 0));
  cargm.$setPropertyBoolean(toReturn, 'ringSize7', gt(and_0(atomQueryFeatures, 137438953472), 0));
  cargm.$setPropertyBoolean(toReturn, 'ringSizeLarge', gt(and_0(atomQueryFeatures, 274877906944), 0));
  return toReturn;
}
;
cargm.getBondQueryFeatures_1 = function getBondQueryFeatures_1(oclMolecule, bond){
  cargm.$clinit_MoleculeQueryFeatures();
  var bondQueryFeatures, toReturn;
  toReturn = cargm.create_0();
  bondQueryFeatures = fromInt_0(oclMolecule.getBondQueryFeatures_0(bond));
  cargm.$setPropertyBoolean(toReturn, 'single', gt(and_0(bondQueryFeatures, 1), 0));
  cargm.$setPropertyBoolean(toReturn, 'double', gt(and_0(bondQueryFeatures, 2), 0));
  cargm.$setPropertyBoolean(toReturn, 'triple', gt(and_0(bondQueryFeatures, 4), 0));
  cargm.$setPropertyBoolean(toReturn, 'delocalized', gt(and_0(bondQueryFeatures, 8), 0));
  cargm.$setPropertyBoolean(toReturn, 'metalLigand', gt(and_0(bondQueryFeatures, 16), 0));
  cargm.$setPropertyBoolean(toReturn, 'quadruple', gt(and_0(bondQueryFeatures, 32), 0));
  cargm.$setPropertyBoolean(toReturn, 'quintuple', gt(and_0(bondQueryFeatures, 64), 0));
  cargm.$setPropertyBoolean(toReturn, 'notRing', gt(and_0(bondQueryFeatures, 128), 0));
  cargm.$setPropertyBoolean(toReturn, 'ring', gt(and_0(bondQueryFeatures, 256), 0));
  cargm.$setPropertyBoolean(toReturn, 'aromatic', gt(and_0(bondQueryFeatures, 2097152), 0));
  cargm.$setPropertyBoolean(toReturn, 'nonAromatic', gt(and_0(bondQueryFeatures, 4194304), 0));
  cargm.$setPropertyInt(toReturn, 'ringSize', toInt_0(and_0(bondQueryFeatures, 917504)) >> 17);
  cargm.$setPropertyInt(toReturn, 'brigdeMin', toInt_0(and_0(bondQueryFeatures, 7680)) >> 9);
  cargm.$setPropertyInt(toReturn, 'brigdeSpan', toInt_0(and_0(bondQueryFeatures, 122880)) >> 13);
  return toReturn;
}
;
defineClass(966, 1, {1:1});
cggl.Lcom_actelion_research_gwt_minimal_MoleculeQueryFeatures_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'MoleculeQueryFeatures', 966, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_PlainJSObject = function $clinit_PlainJSObject(){
  cargm.$clinit_PlainJSObject = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cargm.$setPropertyBoolean = function $setPropertyBoolean(this$static, key, value_0){
  cargm.$clinit_PlainJSObject();
  this$static[key] = value_0;
}
;
cargm.$setPropertyInt = function $setPropertyInt(this$static, key, value_0){
  cargm.$clinit_PlainJSObject();
  this$static[key] = value_0;
}
;
cargm.$setPropertyString = function $setPropertyString(this$static, key, value_0){
  this$static[key] = value_0;
}
;
cargm.create_0 = function create_0(){
  cargm.$clinit_PlainJSObject();
  return cggcc.$cast(createObject_0());
}
;
cargm.$clinit_Services_0 = function $clinit_Services_0(){
  cargm.$clinit_Services_0 = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.Services_0 = function Services_0(){
  Object_0.call(this);
  this.$init_269();
}
;
cargm.getInstance_0 = function getInstance_0(){
  cargm.$clinit_Services_0();
  if (isNull(cargm.instance_1)) {
    cargm.instance_1 = new cargm.Services_0;
  }
  return cargm.instance_1;
}
;
defineClass(426, 1, {1:1}, cargm.Services_0);
_.$init_269 = function $init_269(){
  this.sSSearcherWithIndex = null;
}
;
_.getSSSearcherWithIndex = function getSSSearcherWithIndex(){
  if (isNull(this.sSSearcherWithIndex)) {
    this.sSSearcherWithIndex = new carc2.SSSearcherWithIndex;
  }
  return this.sSSearcherWithIndex;
}
;
cargm.instance_1 = null;
cggl.Lcom_actelion_research_gwt_minimal_Services_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'Services', 426, cggl.Ljava_lang_Object_2_classLit);
cargm.$clinit_Util_1 = function $clinit_Util_1(){
  cargm.$clinit_Util_1 = emptyMethod;
  jl.$clinit_Object();
}
;
cargm.getDisplayMode_0 = function getDisplayMode_0(options){
  cargm.$clinit_Util_1();
  if (!options)
    return 0;
  var displayMode = 0;
  if (options.inflateToMaxAVBL)
    displayMode |= 65536;
  if (options.inflateToHighResAVBL)
    displayMode |= 131072;
  if (options.chiralTextBelowMolecule)
    displayMode |= 0;
  if (options.chiralTextAboveMolecule)
    displayMode |= 262144;
  if (options.chiralTextOnFrameTop)
    displayMode |= 524288;
  if (options.chiralTextOnFrameBottom)
    displayMode |= 786432;
  if (options.noTabus)
    displayMode |= 1;
  if (options.showAtomNumber)
    displayMode |= 2;
  if (options.showBondNumber)
    displayMode |= 4;
  if (options.highlightQueryFeatures)
    displayMode |= 8;
  if (options.showMapping)
    displayMode |= 16;
  if (options.suppressChiralText)
    displayMode |= 32;
  if (options.suppressCIPParity)
    displayMode |= 64;
  if (options.suppressESR)
    displayMode |= 128;
  if (options.showSymmetryAny)
    displayMode |= 768;
  if (options.showSymmetrySimple)
    displayMode |= 256;
  if (options.showSymmetryStereoHeterotopicity)
    displayMode |= 512;
  if (options.noImplicitAtomLabelColors)
    displayMode |= 1024;
  if (options.noStereoProblem)
    displayMode |= 2048;
  if (options.noColorOnESRAndCIP)
    displayMode |= 4096;
  if (options.noImplicitHydrogen)
    displayMode |= 8192;
  if (options.drawBondsInGray)
    displayMode |= 16384;
  return displayMode;
}
;
defineClass(967, 1, {1:1});
cggl.Lcom_actelion_research_gwt_minimal_Util_2_classLit = createForClass('com.actelion.research.gwt.minimal', 'Util', 967, cggl.Ljava_lang_Object_2_classLit);
carsgec.$clinit_IDrawingObject = function $clinit_IDrawingObject(){
  carsgec.$clinit_IDrawingObject = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_chem_IDrawingObject_2_classLit = createForInterface('com.actelion.research.share.gui.editor.chem', 'IDrawingObject');
carsg.$clinit_Arrow = function $clinit_Arrow(){
  carsg.$clinit_Arrow = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.Arrow = function Arrow(cfg, x_0, y_0, w, h){
  carsg.$clinit_Arrow();
  Object_0.call(this);
  this.$init_270();
  this.gfxConfig = cfg;
  this.rect = new cargg.GenericRectangle_0(x_0, y_0, w, h);
}
;
defineClass(263, 1, {112:1, 1:1}, carsg.Arrow);
_.$init_270 = function $init_270(){
  this.rect = null;
  this.selected_0 = false;
}
;
_.draw_5 = function draw_7(ctx, t){
  var arrowEndX, arrowEndY, dheight, dwidth, dx, dy, px, py, xOffset;
  dx = isNull(t)?this.rect.getX_0():t.transformX(this.rect.getX_0());
  dy = isNull(t)?this.rect.getY_0():t.transformY(this.rect.getY_0());
  dwidth = isNull(t)?this.rect.getWidth():t.transformX(this.rect.getWidth());
  dheight = isNull(t)?this.rect.getHeight():t.transformY(this.rect.getHeight());
  arrowEndX = dx + dwidth;
  arrowEndY = dy + dheight / 2;
  xOffset = dwidth / 15;
  px = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [arrowEndX - xOffset, arrowEndX, arrowEndX - dwidth / 5]);
  py = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [arrowEndY, arrowEndY, arrowEndY - dwidth / 10]);
  if (this.selected_0) {
    ctx.setStroke(this.gfxConfig.getSelectionColor());
    ctx.setFill(this.gfxConfig.getSelectionColor());
  }
  if (arrowEndX - dx >= 5) {
    ctx.drawLine_0(round_int(dx), round_int(arrowEndY), round_int(arrowEndX) - xOffset, round_int(arrowEndY));
  }
  ctx.fillPolygon(px, py, 3);
  py[2] = round_int(arrowEndY + dwidth / 10);
  ctx.fillPolygon(px, py, 3);
}
;
_.getBoundingRect = function getBoundingRect_1(){
  return this.rect;
}
;
_.isMovable = function isMovable(){
  return false;
}
;
_.isSelected = function isSelected_1(){
  return this.selected_0;
}
;
_.move_0 = function move_1(dx, dy){
  this.rect.set_2(this.rect.getX_0() + dx, this.rect.getY_0() + dy, this.rect.getWidth(), this.rect.getHeight());
}
;
_.setRect = function setRect(x_0, y_0, w, h){
  this.rect = new cargg.GenericRectangle_0(x_0, y_0, w, h);
}
;
_.setSelected = function setSelected_0(b){
  this.selected_0 = b;
}
;
_.selected_0 = false;
cggl.Lcom_actelion_research_share_gui_Arrow_2_classLit = createForClass('com.actelion.research.share.gui', 'Arrow', 263, cggl.Ljava_lang_Object_2_classLit);
carsg.$clinit_ChemistryGeometryHelper = function $clinit_ChemistryGeometryHelper(){
  carsg.$clinit_ChemistryGeometryHelper = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.getAverageBondLength_7 = function getAverageBondLength_7(r){
  var avg, i, molecule, rn, t;
  rn = r.getMolecules_0();
  avg = 0;
  t = 0;
  for (i = 0; i < rn; i++) {
    molecule = r.getMolecule_1(i);
    if (molecule.getAllAtoms_0() > 1)
      t += molecule.getAverageBondLength_0();
  }
  if (rn > 0)
    return t / rn;
  else 
    return 0;
}
;
carsg.getBoundingRect_2 = function getBoundingRect_2(m){
  carsg.$clinit_ChemistryGeometryHelper();
  var bl, i, na, xmax, xmin, ymax, ymin;
  xmax = 4.9E-324;
  ymax = 4.9E-324;
  xmin = 1.7976931348623157E308;
  ymin = 1.7976931348623157E308;
  if (isNull(m))
    return null;
  na = m.getAllAtoms_0();
  bl = 0;
  bl = m.getAverageBondLength_0();
  for (i = 0; i < na; i++) {
    xmax = $wnd.Math.max(xmax, m.getAtomX_0(i));
    xmin = $wnd.Math.min(xmin, m.getAtomX_0(i));
    ymax = $wnd.Math.max(ymax, m.getAtomY_0(i));
    ymin = $wnd.Math.min(ymin, m.getAtomY_0(i));
  }
  return na > 0?new cargg.GenericRectangle_0(xmin, ymin, $wnd.Math.max(xmax - xmin, bl), $wnd.Math.max(ymax - ymin, bl)):null;
}
;
carsg.getBoundingRect_3 = function getBoundingRect_3(mols){
  var i, r, t;
  if (jsEquals(mols, null) || mols.length == 0) {
    return new cargg.GenericRectangle_0(0, 0, 0, 0);
  }
  r = carsg.getBoundingRect_2(mols[0]);
  for (i = 1; i < mols.length; i++) {
    t = carsg.getBoundingRect_2(mols[i]);
    if (isNotNull(t)) {
      if (isNull(r))
        r = t;
      else 
        r = r.union(carsg.getBoundingRect_2(mols[i]));
    }
  }
  if (isNull(r))
    r = new cargg.GenericRectangle_0(0, 0, 0, 0);
  return r;
}
;
carsg.getProducts_3 = function getProducts_3(r){
  var i, ret;
  ret = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_ExtendedMolecule_2_classLit, {4:1, 1:1, 7:1}, 100, r.getProducts_0(), 0, 1);
  for (i = 0; i < ret.length; i++) {
    setCheck(ret, i, r.getProduct_0(i));
  }
  return ret;
}
;
carsg.getReactants_1 = function getReactants_1(r){
  var i, ret;
  ret = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_ExtendedMolecule_2_classLit, {4:1, 1:1, 7:1}, 100, r.getReactants_0(), 0, 1);
  for (i = 0; i < ret.length; i++) {
    setCheck(ret, i, r.getReactant_0(i));
  }
  return ret;
}
;
carsg.scaleInto = function scaleInto(reaction, x_0, y_0, width_0, height, arrowSize){
  carsg.$clinit_ChemistryGeometryHelper();
  var avbl, dx, dy, h, i, m, numMols, pb, products, r, rb, reactants, scH, scV, scale, sumHeight, sumWidth, w;
  if (width_0 > arrowSize * 2) {
    reactants = carsg.getReactants_1(reaction);
    products = carsg.getProducts_3(reaction);
    sumWidth = 0;
    sumHeight = 0;
    numMols = reaction.getMolecules_0();
    for (i = 0; i < numMols; i++) {
      m = reaction.getMolecule_1(i);
      if (m.getAllAtoms_0() > 1) {
        r = carsg.getBoundingRect_2(m);
        if (isNotNull(r)) {
          sumHeight += r.getHeight();
          sumWidth += r.getWidth();
        }
      }
    }
    if (sumHeight == 0 || sumWidth == 0)
      return;
    scH = width_0 / sumWidth;
    scV = height / sumHeight;
    scale = scH;
    if (scH > scV)
      scale = scV;
    avbl = carsg.getAverageBondLength_7(reaction);
    w = (width_0 - arrowSize) / 2;
    h = height;
    scale = $wnd.Math.min(24 / avbl, scale);
    {
      rb = carsg.getBoundingRect_3(reactants);
      carsg.transformMolecules(reactants, 0, 0, scale);
      rb = carsg.getBoundingRect_3(reactants);
      dx = x_0 - rb.x_0 + (w - rb.getWidth()) / 2;
      dy = y_0 - rb.y_0 + (h - rb.getHeight()) / 2;
      carsg.transformMolecules(reactants, dx, dy, 1);
    }
    {
      pb = carsg.getBoundingRect_3(products);
      carsg.transformMolecules(products, 0, 0, scale);
      pb = carsg.getBoundingRect_3(products);
      dx = x_0 + w + arrowSize - pb.x_0 + (w - pb.getWidth()) / 2;
      dy = y_0 - pb.y_0 + (h - pb.getHeight()) / 2;
      carsg.transformMolecules(products, dx, dy, 1);
    }
  }
}
;
carsg.transformMolecule = function transformMolecule(m, offsetx, offsety, scale){
  var atoms, i;
  atoms = m.getAllAtoms_0();
  for (i = 0; i < atoms; i++) {
    m.setAtomX_0(i, (m.getAtomX_0(i) + offsetx) * scale);
    m.setAtomY_0(i, (m.getAtomY_0(i) + offsety) * scale);
  }
}
;
carsg.transformMolecules = function transformMolecules(mols, offsetx, offsety, scale){
  var m, m$array, m$index, m$max;
  if (jsNotEquals(mols, null)) {
    for (m$array = mols , m$index = 0 , m$max = m$array.length; m$index < m$max; ++m$index) {
      m = m$array[m$index];
      carsg.transformMolecule(m, offsetx, offsety, scale);
    }
  }
}
;
defineClass(1175, 1, {1:1});
carsg.REACTION_TYPE_NOMOLS = 0;
carsg.REACTION_TYPE_NOPRODUCTS = 1;
carsg.REACTION_TYPE_NORMAL = 3;
carsg.REACTION_TYPE_REACTANTS = 2;
cggl.Lcom_actelion_research_share_gui_ChemistryGeometryHelper_2_classLit = createForClass('com.actelion.research.share.gui', 'ChemistryGeometryHelper', 1175, cggl.Ljava_lang_Object_2_classLit);
carsg.$clinit_DialogResult = function $clinit_DialogResult(){
  carsg.$clinit_DialogResult = emptyMethod;
  jl.$clinit_Enum();
  carsg.IDOK = new carsg.DialogResult('IDOK', 0);
  carsg.IDCANCEL = new carsg.DialogResult('IDCANCEL', 1);
  carsg.IDYES = new carsg.DialogResult('IDYES', 2);
  carsg.IDNO = new carsg.DialogResult('IDNO', 3);
  carsg.IDABORT = new carsg.DialogResult('IDABORT', 4);
  carsg.IDRETRY = new carsg.DialogResult('IDRETRY', 5);
}
;
carsg.DialogResult = function DialogResult(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_271();
}
;
carsg.valueOf_4 = function valueOf_4(name_0){
  carsg.$clinit_DialogResult();
  return valueOf((carsg.$clinit_DialogResult$Map() , carsg.$MAP_3), name_0);
}
;
carsg.values_4 = function values_4(){
  carsg.$clinit_DialogResult();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_actelion_research_share_gui_DialogResult_2_classLit, 1), {4:1, 1:1, 7:1}, 97, 0, [carsg.IDOK, carsg.IDCANCEL, carsg.IDYES, carsg.IDNO, carsg.IDABORT, carsg.IDRETRY]);
}
;
defineClass(97, 11, {97:1, 4:1, 10:1, 11:1, 1:1}, carsg.DialogResult);
_.$init_271 = function $init_271(){
}
;
cggl.Lcom_actelion_research_share_gui_DialogResult_2_classLit = createForEnum('com.actelion.research.share.gui', 'DialogResult', 97, cggl.Ljava_lang_Enum_2_classLit, carsg.values_4, carsg.valueOf_4);
carsg.$clinit_DialogResult$Map = function $clinit_DialogResult$Map(){
  carsg.$clinit_DialogResult$Map = emptyMethod;
  carsg.$MAP_3 = createValueOfMap(carsg.values_4());
}
;
defineClass(1256, 1, {1:1});
cggl.Lcom_actelion_research_share_gui_DialogResult$Map_2_classLit = createForClass('com.actelion.research.share.gui', 'DialogResult/Map', 1256, cggl.Ljava_lang_Object_2_classLit);
carsgeg.$clinit_IPolygon = function $clinit_IPolygon(){
  carsgeg.$clinit_IPolygon = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_geom_IPolygon_2_classLit = createForInterface('com.actelion.research.share.gui.editor.geom', 'IPolygon');
carsg.$clinit_Polygon = function $clinit_Polygon(){
  carsg.$clinit_Polygon = emptyMethod;
  jl.$clinit_Object();
}
;
carsg.Polygon = function Polygon(){
  carsg.$clinit_Polygon();
  Object_0.call(this);
  this.$init_272();
}
;
defineClass(747, 1, {1:1}, carsg.Polygon);
_.$init_272 = function $init_272(){
  this.list = new ju.ArrayList;
}
;
_.add_9 = function add_17(o){
  this.list.add(o);
}
;
_.calculateBounds = function calculateBounds(){
  var boundsMaxX, boundsMaxY, boundsMinX, boundsMinY, i, r, x_0, y_0;
  boundsMinX = 1.7976931348623157E308;
  boundsMinY = 4.9E-324;
  boundsMaxX = 0;
  boundsMaxY = 0;
  for (i = 0; i < this.list.size(); i++) {
    x_0 = castTo(this.list.getAtIndex(i), 30).getX_0();
    boundsMinX = $wnd.Math.min(boundsMinX, x_0);
    boundsMaxX = $wnd.Math.max(boundsMaxX, x_0);
    y_0 = castTo(this.list.getAtIndex(i), 30).getY_0();
    boundsMinY = $wnd.Math.min(boundsMinY, y_0);
    boundsMaxY = $wnd.Math.max(boundsMaxY, y_0);
  }
  r = new cargg.GenericRectangle_0(boundsMinX, boundsMinY, boundsMaxX - boundsMinX, boundsMaxY - boundsMinY);
  return r;
}
;
_.contains_0 = function contains_8(x_0, y_0){
  var contains, curx, cury, hits, i, lastx, lasty, leftx, r, test1, test2;
  r = this.getBoundingBox();
  contains = r.contains_0(x_0, y_0);
  if (this.list.size() <= 2 || !contains) {
    return false;
  }
  hits = 0;
  lastx = castTo(this.list.getAtIndex(this.list.size() - 1), 30).getX_0();
  lasty = castTo(this.list.getAtIndex(this.list.size() - 1), 30).getY_0();
  for (i = 0; i < this.list.size(); lastx = curx , lasty = cury , i++) {
    curx = castTo(this.list.getAtIndex(i), 30).getX_0();
    cury = castTo(this.list.getAtIndex(i), 30).getY_0();
    if (cury == lasty) {
      continue;
    }
    if (curx < lastx) {
      if (x_0 >= lastx) {
        continue;
      }
      leftx = curx;
    }
     else {
      if (x_0 >= curx) {
        continue;
      }
      leftx = lastx;
    }
    test1 = 0;
    test2 = 0;
    if (cury < lasty) {
      if (y_0 < cury || y_0 >= lasty) {
        continue;
      }
      if (x_0 < leftx) {
        hits++;
        continue;
      }
      test1 = x_0 - curx;
      test2 = y_0 - cury;
    }
     else {
      if (y_0 < lasty || y_0 >= cury) {
        continue;
      }
      if (x_0 < leftx) {
        hits++;
        continue;
      }
      test1 = x_0 - lastx;
      test2 = y_0 - lasty;
    }
    if (test1 < test2 / (lasty - cury) * (lastx - curx)) {
      hits++;
    }
  }
  return (hits & 1) != 0;
}
;
_.get_2 = function get_14(i){
  return castTo(this.list.getAtIndex(i), 30);
}
;
_.getBoundingBox = function getBoundingBox(){
  if (this.list.size() == 0) {
    return new cargg.GenericRectangle_0(0, 0, 0, 0);
  }
  return this.calculateBounds();
}
;
_.remove_1 = function remove_6(o){
  var idx;
  idx = this.list.lastIndexOf(o);
  if (idx >= 0)
    this.list.removeAtIndex(idx);
}
;
_.size_1 = function size_5(){
  return this.list.size();
}
;
cggl.Lcom_actelion_research_share_gui_Polygon_2_classLit = createForClass('com.actelion.research.share.gui', 'Polygon', 747, cggl.Ljava_lang_Object_2_classLit);
carsge.$clinit_Model$1 = function $clinit_Model$1(){
  carsge.$clinit_Model$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
carsge.Model$1 = function Model$1(this$0, val$cog){
  carsge.$clinit_Model$1();
  this.this$01 = this$0;
  this.val$cog2 = val$cog;
  Object_0.call(this);
  this.$init_273();
}
;
defineClass(465, 1, {1:1, 50:1}, carsge.Model$1);
_.$init_273 = function $init_273(){
}
;
_.compare_0 = function compare_12(fragmentDescriptor1, fragmentDescriptor2){
  return this.compare_2(castTo(fragmentDescriptor1, 6), castTo(fragmentDescriptor2, 6));
}
;
_.equals_0 = function equals_17(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_2 = function compare_13(fragmentDescriptor1, fragmentDescriptor2){
  if ((this.this$01.mMode & (4 | 2)) != 0) {
    if (fragmentDescriptor1[1] != fragmentDescriptor2[1]) {
      return fragmentDescriptor1[1] == 0?-1:1;
    }
  }
  return this.val$cog2[fragmentDescriptor1[0]].x_0 < this.val$cog2[fragmentDescriptor2[0]].x_0?-1:1;
}
;
cggl.Lcom_actelion_research_share_gui_editor_Model$1_2_classLit = createForClass('com.actelion.research.share.gui.editor', 'Model/1', 465, cggl.Ljava_lang_Object_2_classLit);
carsge.$clinit_Model$MySSSearcher = function $clinit_Model$MySSSearcher(){
  carsge.$clinit_Model$MySSSearcher = emptyMethod;
  carc2.$clinit_SSSearcher();
}
;
carsge.Model$MySSSearcher = function Model$MySSSearcher(){
  carsge.$clinit_Model$MySSSearcher();
  carc2.SSSearcher.call(this);
  this.$init_274();
}
;
defineClass(466, 83, {1:1}, carsge.Model$MySSSearcher);
_.$init_274 = function $init_274(){
}
;
_.areAtomsSimilar = function areAtomsSimilar_0(moleculeAtom, fragmentAtom){
  if (this.mMolecule.getAtomicNo_0(moleculeAtom) == this.mFragment.getAtomicNo_0(fragmentAtom))
    if (this.mMolecule.isAromaticAtom_1(moleculeAtom) || this.mFragment.isAromaticAtom_1(fragmentAtom))
      return true;
  return getClassPrototype(83).areAtomsSimilar.call(this, moleculeAtom, fragmentAtom);
}
;
_.areBondsSimilar = function areBondsSimilar_0(moleculeBond, fragmentBond){
  if (this.mMolecule.isAromaticBond_0(moleculeBond) || this.mMolecule.isDelocalizedBond_0(moleculeBond) || this.mFragment.isAromaticBond_0(fragmentBond) || this.mFragment.isDelocalizedBond_0(fragmentBond))
    return true;
  return getClassPrototype(83).areBondsSimilar.call(this, moleculeBond, fragmentBond);
}
;
cggl.Lcom_actelion_research_share_gui_editor_Model$MySSSearcher_2_classLit = createForClass('com.actelion.research.share.gui.editor', 'Model/MySSSearcher', 466, cggl.Lcom_actelion_research_chem_SSSearcher_2_classLit);
carsgea.$clinit_AddRingAction = function $clinit_AddRingAction(){
  carsgea.$clinit_AddRingAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.AddRingAction = function AddRingAction(m, ringSize, aromatic){
  carsgea.$clinit_AddRingAction();
  carsgea.BondHighlightAction.call(this, m);
  this.$init_275();
  this.model = m;
  this.ringSize = ringSize;
  this.aromatic = aromatic;
}
;
defineClass(85, 96, {25:1, 1:1}, carsgea.AddRingAction);
_.$init_275 = function $init_275(){
  this.ringSize = 0;
  this.aromatic = false;
}
;
_.onDrag = function onDrag_0(pt){
  return true;
}
;
_.onMouseDown_0 = function onMouseDown_6(evt){
  return false;
}
;
_.onMouseUp_0 = function onMouseUp_5(evt){
  var atom, bond, mol, ok, pt;
  this.model.pushUndo();
  mol = this.model.getMolecule_0();
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  ok = false;
  if (isNotNull(mol)) {
    atom = this.getAtomAt(mol, pt);
    bond = this.getBondAt(mol, pt);
    if (atom != -1) {
      ok = mol.addRing_0(pt.getX_0(), pt.getY_0(), this.ringSize, this.aromatic, carc2.getDefaultAverageBondLength());
      this.model.setSelectedBond(-1);
    }
     else if (bond != -1) {
      ok = mol.addRing_0(pt.getX_0(), pt.getY_0(), this.ringSize, this.aromatic, carc2.getDefaultAverageBondLength());
      this.model.setSelectedAtom(-1);
    }
     else {
      ok = mol.addRing_0(pt.getX_0(), pt.getY_0(), this.ringSize, this.aromatic, carc2.getDefaultAverageBondLength());
      if (this.model.isReaction_0())
        this.model.needsLayout_0(true);
    }
  }
   else {
    mol = new carc2.StereoMolecule;
    ok = mol.addRing_0(pt.getX_0(), pt.getY_0(), this.ringSize, this.aromatic, carc2.getDefaultAverageBondLength());
    this.model.setValue(mol, true);
  }
  if (ok)
    mol.ensureHelperArrays_0(1);
  return ok;
}
;
_.aromatic = false;
_.ringSize = 0;
cggl.Lcom_actelion_research_share_gui_editor_actions_AddRingAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'AddRingAction', 85, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
juf.$clinit_Consumer = function $clinit_Consumer(){
  juf.$clinit_Consumer = emptyMethod;
}
;
cggl.Ljava_util_function_Consumer_2_classLit = createForInterface('java.util.function', 'Consumer');
carsgea.$clinit_AtomHighlightAction$1 = function $clinit_AtomHighlightAction$1(){
  carsgea.$clinit_AtomHighlightAction$1 = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
}
;
carsgea.AtomHighlightAction$1 = function AtomHighlightAction$1(this$0){
  carsgea.$clinit_AtomHighlightAction$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_276();
}
;
defineClass(730, 1, {1:1}, carsgea.AtomHighlightAction$1);
_.$init_276 = function $init_276(){
}
;
_.accept_0 = function accept_0(res){
  this.accept(castTo(res, 97));
}
;
_.accept = function accept(res){
  if (jsEquals(res, (carsg.$clinit_DialogResult() , carsg.IDOK))) {
    this.this$01.model_0.setSelectedAtom(-1);
    this.this$01.model_0.changed_0();
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction$1_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'AtomHighlightAction/1', 730, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_AtomMapAction = function $clinit_AtomMapAction(){
  carsgea.$clinit_AtomMapAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.AtomMapAction = function AtomMapAction(model){
  carsgea.$clinit_AtomMapAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_277();
}
;
defineClass(366, 77, {25:1, 1:1}, carsgea.AtomMapAction);
_.$init_277 = function $init_277(){
  this.firstPoint = null;
  this.lastPoint = null;
  this.secondAtom = -1;
}
;
_.onActionEnter = function onActionEnter_0(){
  var mode;
  mode = this.model_0.getDisplayMode();
  this.model_0.setDisplayMode(mode | 16 | 64);
}
;
_.onActionLeave = function onActionLeave_0(){
  var mode;
  mode = this.model_0.getDisplayMode();
  if ((mode & 16) != 0) {
    mode &= ~(16 | 64);
    this.model_0.setDisplayMode(mode);
  }
}
;
_.onKeyPressed_0 = function onKeyPressed_3(evt){
  var atom, builder, found, mMol;
  builder = this.model_0.getGeomFactory();
  if (jl.equals_Ljava_lang_Object__Z__devirtual$(evt.getCode(), builder.getDeleteKey())) {
    mMol = this.model_0.getMolecule_0();
    found = false;
    for (atom = 0; atom < mMol.getAllAtoms_0(); atom++) {
      if (mMol.getAtomMapNo_0(atom) != 0) {
        mMol.setAtomMapNo_0(atom, 0, false);
        found = true;
      }
    }
    return found;
  }
  return getClassPrototype(77).onKeyPressed_0.call(this, evt);
}
;
_.onMouseMove_0 = function onMouseMove_5(evt, drag){
  var atom, mCurrentHiliteAtom, mapNo, mol, pt;
  this.firstPoint = this.lastPoint = null;
  if (this.model_0.isReaction_0()) {
    mol = this.model_0.getMolecule_0();
    if (!drag) {
      pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
      this.secondAtom = -1;
      if (this.trackHighLight(pt)) {
        mCurrentHiliteAtom = this.model_0.getSelectedAtom();
        if (mCurrentHiliteAtom != -1) {
          mapNo = mol.getAtomMapNo_0(mCurrentHiliteAtom);
          if (mapNo != 0) {
            for (atom = 0; atom < mol.getAtoms_0(); atom++) {
              if (atom != mCurrentHiliteAtom && mol.getAtomMapNo_0(atom) == mapNo) {
                this.secondAtom = atom;
                break;
              }
            }
          }
        }
        return true;
      }
    }
     else {
      atom = this.model_0.getSelectedAtom();
      if (isNotNull(mol) && atom != -1) {
        pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
        this.firstPoint = new cargg.GenericPoint_0(mol.getAtomX_0(atom), mol.getAtomY_0(atom));
        this.lastPoint = pt;
        return true;
      }
    }
  }
  return false;
}
;
_.onMouseUp_0 = function onMouseUp_6(ev){
  var atom, mode;
  mode = this.model_0.getDisplayMode();
  if ((mode & 16) == 0) {
    mode |= 16;
    this.model_0.setDisplayMode(mode);
  }
  atom = this.model_0.getSelectedAtom();
  if (atom != -1) {
    this.model_0.mapReaction_0(atom, this.firstPoint, this.lastPoint);
  }
  this.model_0.setSelectedAtom(-1);
  this.firstPoint = this.lastPoint = null;
  return true;
}
;
_.paint_0 = function paint_4(ctx){
  var builder, mol, ok, source, target, theAtom;
  ok = false;
  ctx.save_0();
  if (this.model_0.isReaction_0()) {
    mol = this.model_0.getMolecule_0();
    if (isNotNull(this.firstPoint) && isNotNull(this.lastPoint)) {
      source = this.model_0.getFragmentAt(this.firstPoint, false);
      target = this.model_0.getFragmentAt(this.lastPoint, false);
      if (isNotNull(target) && jsNotEquals(target, source)) {
        theAtom = mol.findAtom_0(this.lastPoint.getX_0(), this.lastPoint.getY_0());
        if (theAtom != -1)
          this.drawAtomHighlight(ctx, mol, theAtom);
      }
      builder = this.model_0.getGeomFactory();
      ctx.setStroke(builder.getMapToolColor());
      ctx.drawLine_0(this.firstPoint.getX_0(), this.firstPoint.getY_0(), this.lastPoint.getX_0(), this.lastPoint.getY_0());
    }
     else if (this.secondAtom != -1) {
      this.drawAtomHighlight(ctx, mol, this.secondAtom);
    }
  }
  ok = getClassPrototype(77).paint_0.call(this, ctx);
  ctx.restore_0();
  return ok;
}
;
_.trackHighLight = function trackHighLight_1(pt){
  var lastAtom, ok, theAtom;
  lastAtom = this.model_0.getSelectedAtom();
  ok = getClassPrototype(77).trackHighLight.call(this, pt);
  theAtom = this.model_0.getSelectedAtom();
  return ok || lastAtom != theAtom;
}
;
_.secondAtom = 0;
cggl.Lcom_actelion_research_share_gui_editor_actions_AtomMapAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'AtomMapAction', 366, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_BondBaseAction = function $clinit_BondBaseAction(){
  carsgea.$clinit_BondBaseAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.BondBaseAction = function BondBaseAction(model){
  carsgea.$clinit_BondBaseAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_278();
}
;
defineClass(738, 96, {25:1, 1:1});
_.$init_278 = function $init_278(){
}
;
_.drawBondLine = function drawBondLine(ctx){
  var atom, mol, point;
  point = this.origin_0;
  if (isNotNull(point) && isNotNull(this.last)) {
    atom = this.getAtomAt_0(point);
    mol = this.model_0.getMoleculeAt(point, true);
    if (isNotNull(mol) && atom != -1) {
      point = new cargg.GenericPoint_0(mol.getAtomX_0(atom), mol.getAtomY_0(atom));
    }
    ctx.save_0();
    ctx.drawLine_0(point.getX_0(), point.getY_0(), this.last.getX_0(), this.last.getY_0());
    ctx.restore_0();
  }
}
;
_.onAddBond = function onAddBond(srcAtom, targetAtom){
  var bondType, mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    bondType = this.getBondType_1();
    if (bondType == 1)
      bondType = mol.suggestBondType_0(srcAtom, targetAtom);
    mol.addBond_1(srcAtom, targetAtom, bondType);
    mol.ensureHelperArrays_0(1);
  }
   else {
  }
}
;
_.onChangeBond = function onChangeBond(bond){
  var mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    mol.changeBond_0(bond, 511);
    mol.ensureHelperArrays_0(1);
  }
}
;
_.onMouseUp_0 = function onMouseUp_7(evt){
  var bond, bondType, dx, dy, endAtom, mol, ok, p, pt, selectedAtom, sourceAtom, startAtom, stopAtom, t, targetAtom, targetPoint, tm;
  if (isNull(this.origin_0)) {
    return false;
  }
  ok = true;
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  this.model_0.pushUndo();
  sourceAtom = this.getAtomAt_0(this.origin_0);
  selectedAtom = this.model_0.getSelectedAtom();
  this.model_0.setSelectedBond(-1);
  mol = this.model_0.getMoleculeAt(this.origin_0, true);
  this.model_0.setSelectedAtom(sourceAtom);
  if (!this.dragging) {
    if (isNotNull(mol) && sourceAtom != -1) {
      if (mol.getAllConnAtoms_0(sourceAtom) != 8) {
        targetPoint = this.suggestNewX2AndY2(sourceAtom);
        stopAtom = mol.findAtom_0(targetPoint.getX_0(), targetPoint.getY_0());
        if (stopAtom != -1) {
          bondType = this.getBondType_1();
          if (bondType == 1)
            bondType = mol.suggestBondType_0(sourceAtom, stopAtom);
          mol.addOrChangeBond_0(sourceAtom, stopAtom, bondType);
        }
         else {
          targetAtom = mol.addAtom_1(targetPoint.getX_0(), targetPoint.getY_0(), 0);
          this.onAddBond(sourceAtom, targetAtom);
        }
        ok = true;
      }
    }
     else if (isNotNull(mol)) {
      bond = this.getBondAt(mol, pt);
      if (bond != -1) {
        this.onChangeBond(bond);
      }
       else {
        sourceAtom = mol.addAtom_0(pt.getX_0(), pt.getY_0());
        targetPoint = this.suggestNewX2AndY2(sourceAtom);
        targetAtom = mol.addAtom_1(targetPoint.getX_0(), targetPoint.getY_0(), 0);
        this.onAddBond(sourceAtom, targetAtom);
      }
      ok = true;
    }
     else {
      mol = this.model_0.getMolecule_0();
      sourceAtom = mol.addAtom_0(evt.getX_0(), evt.getY_0());
      p = this.suggestNewX2AndY2(sourceAtom);
      t = mol.addAtom_0(p.getX_0(), p.getY_0());
      this.onAddBond(sourceAtom, t);
      if (this.model_0.isReaction_0())
        this.model_0.needsLayout_0(true);
      ok = true;
    }
  }
   else {
    if (isNotNull(mol)) {
      if (sourceAtom != -1) {
        targetAtom = selectedAtom;
        if (targetAtom == -1) {
          dx = this.origin_0.getX_0() - pt.getX_0();
          dy = this.origin_0.getY_0() - pt.getY_0();
          targetPoint = pt;
          if (dx * dx + dy * dy < 100) {
            targetPoint = this.suggestNewX2AndY2(sourceAtom);
          }
          targetAtom = mol.addAtom_1(targetPoint.getX_0(), targetPoint.getY_0(), 0);
        }
        tm = this.model_0.getMoleculeAt(pt, true);
        if (jsEquals(mol, tm)) {
          this.onAddBond(sourceAtom, targetAtom);
        }
         else if (isNotNull(tm)) {
          mol.addMolecule_0(tm);
          targetAtom = mol.findAtom_0(pt.getX_0(), pt.getY_0());
          this.model_0.deleteMolecule_1(tm);
          this.onAddBond(sourceAtom, targetAtom);
        }
        ok = true;
      }
       else {
        startAtom = mol.addAtom_0(this.origin_0.getX_0(), this.origin_0.getY_0());
        endAtom = mol.addAtom_0(pt.getX_0(), pt.getY_0());
        this.onAddBond(startAtom, endAtom);
        if (this.model_0.isReaction_0())
          this.model_0.needsLayout_0(true);
        ok = true;
      }
    }
     else {
      mol = this.model_0.getMolecule_0();
      startAtom = mol.addAtom_0(this.origin_0.getX_0(), this.origin_0.getY_0());
      endAtom = mol.addAtom_0(pt.getX_0(), pt.getY_0());
      this.onAddBond(startAtom, endAtom);
      ok = true;
    }
  }
  this.dragging = false;
  return ok;
}
;
_.paint_0 = function paint_5(_ctx){
  var ok;
  ok = getClassPrototype(96).paint_0.call(this, _ctx);
  if (this.dragging) {
    this.drawBondLine(_ctx);
    ok = true;
  }
  return ok;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_BondBaseAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'BondBaseAction', 738, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_BondHighlightAction$1 = function $clinit_BondHighlightAction$1(){
  carsgea.$clinit_BondHighlightAction$1 = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
}
;
carsgea.BondHighlightAction$1 = function BondHighlightAction$1(this$0){
  carsgea.$clinit_BondHighlightAction$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_279();
}
;
defineClass(729, 1, {1:1}, carsgea.BondHighlightAction$1);
_.$init_279 = function $init_279(){
}
;
_.accept_0 = function accept_2(res){
  this.accept(castTo(res, 97));
}
;
_.accept = function accept_1(res){
  if (jsEquals(res, (carsg.$clinit_DialogResult() , carsg.IDOK))) {
    this.this$01.model_0.setSelectedBond(-1);
    this.this$01.model_0.changed_0();
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction$1_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'BondHighlightAction/1', 729, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_ChangeAtomAction = function $clinit_ChangeAtomAction(){
  carsgea.$clinit_ChangeAtomAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.ChangeAtomAction = function ChangeAtomAction(model, atomNo){
  carsgea.$clinit_ChangeAtomAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_280();
  this.theAtomNo = atomNo;
}
;
defineClass(58, 77, {25:1, 1:1}, carsgea.ChangeAtomAction);
_.$init_280 = function $init_280(){
  this.theAtomNo = 6;
}
;
_.onMouseUp_0 = function onMouseUp_8(evt){
  var atom, mol, pt, theAtom;
  this.model_0.pushUndo();
  theAtom = this.model_0.getSelectedAtom();
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMolecule_0();
  if (theAtom != -1) {
    mol.setAtomicNo_0(theAtom, this.theAtomNo);
  }
   else {
    atom = mol.addAtom_0(pt.getX_0(), pt.getY_0());
    mol.setAtomicNo_0(atom, this.theAtomNo);
  }
  this.setHighlightAtom(mol, -1);
  return true;
}
;
_.trackHighLight = function trackHighLight_2(pt){
  var lastAtom, ok, theAtom;
  lastAtom = this.model_0.getSelectedAtom();
  ok = getClassPrototype(77).trackHighLight.call(this, pt);
  theAtom = this.model_0.getSelectedAtom();
  return ok || lastAtom != theAtom;
}
;
_.theAtomNo = 0;
cggl.Lcom_actelion_research_share_gui_editor_actions_ChangeAtomAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ChangeAtomAction', 58, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_ChangeAtomPropertiesAction = function $clinit_ChangeAtomPropertiesAction(){
  carsgea.$clinit_ChangeAtomPropertiesAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.ChangeAtomPropertiesAction = function ChangeAtomPropertiesAction(model){
  carsgea.$clinit_ChangeAtomPropertiesAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_281();
}
;
carsgea.isEmptyString = function isEmptyString(s){
  carsgea.$clinit_ChangeAtomPropertiesAction();
  return jsEquals(s, null) || jl.length__I__devirtual$_0(jl.trim__Ljava_lang_String___devirtual$(s)) == 0;
}
;
defineClass(375, 77, {25:1, 1:1}, carsgea.ChangeAtomPropertiesAction);
_.$init_281 = function $init_281(){
}
;
_.onMouseUp_0 = function onMouseUp_9(evt){
  var builder, dlg, mol, theAtom;
  this.model_0.pushUndo();
  theAtom = this.model_0.getSelectedAtom();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol) && theAtom != -1) {
    builder = this.model_0.getGeomFactory();
    dlg = builder.createAtomPropertiesDialog(mol, theAtom);
    dlg.setResultHandler(new carsgea.ChangeAtomPropertiesAction$1(this));
    dlg.doModalAt(evt.getX_0(), evt.getY_0());
  }
  return true;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_ChangeAtomPropertiesAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ChangeAtomPropertiesAction', 375, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_ChangeAtomPropertiesAction$1 = function $clinit_ChangeAtomPropertiesAction$1(){
  carsgea.$clinit_ChangeAtomPropertiesAction$1 = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
}
;
carsgea.ChangeAtomPropertiesAction$1 = function ChangeAtomPropertiesAction$1(this$0){
  carsgea.$clinit_ChangeAtomPropertiesAction$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_282();
}
;
defineClass(739, 1, {1:1}, carsgea.ChangeAtomPropertiesAction$1);
_.$init_282 = function $init_282(){
}
;
_.accept_0 = function accept_4(res){
  this.accept(castTo(res, 97));
}
;
_.accept = function accept_3(res){
  if (jsEquals(res, (carsg.$clinit_DialogResult() , carsg.IDOK))) {
    this.this$01.model_0.setSelectedAtom(-1);
    this.this$01.model_0.changed_0();
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_ChangeAtomPropertiesAction$1_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ChangeAtomPropertiesAction/1', 739, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_ChangeChargeAction = function $clinit_ChangeChargeAction(){
  carsgea.$clinit_ChangeChargeAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.ChangeChargeAction = function ChangeChargeAction(model, positive){
  carsgea.$clinit_ChangeChargeAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_283();
  this.plus = positive;
}
;
defineClass(242, 77, {25:1, 1:1}, carsgea.ChangeChargeAction);
_.$init_283 = function $init_283(){
}
;
_.onMouseUp_0 = function onMouseUp_10(evt){
  var charge, mol, theAtom;
  this.model_0.pushUndo();
  theAtom = this.model_0.getSelectedAtom();
  if (theAtom != -1) {
    mol = this.model_0.getMolecule_0();
    charge = mol.getAtomCharge_0(theAtom);
    if (this.plus)
      charge++;
    else 
      charge--;
    mol.setAtomCharge_0(theAtom, charge);
    return true;
  }
  return false;
}
;
_.trackHighLight = function trackHighLight_3(pt){
  var lastAtom, ok, theAtom;
  lastAtom = this.model_0.getSelectedAtom();
  ok = getClassPrototype(77).trackHighLight.call(this, pt);
  theAtom = this.model_0.getSelectedAtom();
  return ok || lastAtom != theAtom;
}
;
_.plus = false;
cggl.Lcom_actelion_research_share_gui_editor_actions_ChangeChargeAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ChangeChargeAction', 242, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_CommandAction = function $clinit_CommandAction(){
  carsgea.$clinit_CommandAction = emptyMethod;
  jl.$clinit_Object();
}
;
carsgea.CommandAction = function CommandAction(m){
  carsgea.$clinit_CommandAction();
  Object_0.call(this);
  this.$init_284();
  this.model = m;
}
;
defineClass(288, 1, {25:1, 1:1});
_.$init_284 = function $init_284(){
}
;
_.getCursor = function getCursor_0(){
  return 0;
}
;
_.isCommand = function isCommand_0(){
  return true;
}
;
_.onActionEnter = function onActionEnter_1(){
}
;
_.onActionLeave = function onActionLeave_1(){
}
;
_.onDoubleClick_0 = function onDoubleClick_1(ev){
  return false;
}
;
_.onKeyPressed_0 = function onKeyPressed_4(evt){
  return false;
}
;
_.onMouseDown_0 = function onMouseDown_7(evt){
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_6(evt, drag){
  return false;
}
;
_.onMouseUp_0 = function onMouseUp_11(evt){
  this.onCommand();
  return true;
}
;
_.paint_0 = function paint_6(ctx){
  return false;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_CommandAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'CommandAction', 288, cggl.Ljava_lang_Object_2_classLit);
carsgea.$clinit_CleanAction = function $clinit_CleanAction(){
  carsgea.$clinit_CleanAction = emptyMethod;
  carsgea.$clinit_CommandAction();
}
;
carsgea.CleanAction = function CleanAction(model){
  carsgea.$clinit_CleanAction();
  carsgea.CommandAction.call(this, model);
  this.$init_285();
}
;
defineClass(362, 288, {25:1, 1:1}, carsgea.CleanAction);
_.$init_285 = function $init_285(){
}
;
_.onCommand = function onCommand_0(){
  this.model.pushUndo();
  if (this.model.isReaction_0()) {
    this.model.cleanReaction(true);
  }
   else {
    this.model.cleanMolecule(true, true);
  }
  this.model.needsLayout_0(true);
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_CleanAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'CleanAction', 362, cggl.Lcom_actelion_research_share_gui_editor_actions_CommandAction_2_classLit);
carsgea.$clinit_ClearAction = function $clinit_ClearAction(){
  carsgea.$clinit_ClearAction = emptyMethod;
  carsgea.$clinit_CommandAction();
}
;
carsgea.ClearAction = function ClearAction(model){
  carsgea.$clinit_ClearAction();
  carsgea.CommandAction.call(this, model);
  this.$init_286();
}
;
defineClass(360, 288, {25:1, 1:1}, carsgea.ClearAction);
_.$init_286 = function $init_286(){
}
;
_.onCommand = function onCommand_1(){
  this.model.pushUndo();
  this.model.setNewMolecule();
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_ClearAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ClearAction', 360, cggl.Lcom_actelion_research_share_gui_editor_actions_CommandAction_2_classLit);
carsgea.$clinit_DeleteAction = function $clinit_DeleteAction(){
  carsgea.$clinit_DeleteAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.DeleteAction = function DeleteAction(model){
  carsgea.$clinit_DeleteAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_287();
}
;
defineClass(371, 96, {25:1, 1:1}, carsgea.DeleteAction);
_.$init_287 = function $init_287(){
}
;
_.getCursor = function getCursor_1(){
  return 46;
}
;
_.onMouseUp_0 = function onMouseUp_12(evt){
  var mol, ok, theAtom, theBond;
  ok = false;
  this.model_0.pushUndo();
  mol = this.model_0.getMolecule_0();
  theAtom = this.model_0.getSelectedAtom();
  theBond = this.model_0.getSelectedBond();
  if (isNotNull(mol) && theAtom != -1) {
    if (mol.isSelectedAtom_0(theAtom)) {
      mol.deleteSelectedAtoms_0();
    }
     else {
      mol.deleteAtom_0(theAtom);
    }
    ok = true;
  }
   else if (isNotNull(mol) && theBond != -1) {
    if (mol.isSelectedBond_0(theBond)) {
      mol.deleteSelectedAtoms_0();
    }
     else {
      mol.deleteBondAndSurrounding_0(theBond);
    }
    ok = true;
  }
  this.setHighlightAtom(null, -1);
  this.setHighlightBond(null, -1);
  return ok;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_DeleteAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'DeleteAction', 371, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_NewBondAction = function $clinit_NewBondAction(){
  carsgea.$clinit_NewBondAction = emptyMethod;
  carsgea.$clinit_BondBaseAction();
}
;
carsgea.NewBondAction = function NewBondAction(model){
  carsgea.$clinit_NewBondAction();
  carsgea.BondBaseAction.call(this, model);
  this.$init_288();
}
;
defineClass(241, 738, {25:1, 1:1}, carsgea.NewBondAction);
_.$init_288 = function $init_288(){
}
;
_.getBondType_1 = function getBondType_1(){
  return 1;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_NewBondAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'NewBondAction', 241, cggl.Lcom_actelion_research_share_gui_editor_actions_BondBaseAction_2_classLit);
carsgea.$clinit_DownBondAction = function $clinit_DownBondAction(){
  carsgea.$clinit_DownBondAction = emptyMethod;
  carsgea.$clinit_NewBondAction();
}
;
carsgea.DownBondAction = function DownBondAction(model){
  carsgea.$clinit_DownBondAction();
  carsgea.NewBondAction.call(this, model);
  this.$init_289();
}
;
defineClass(374, 241, {25:1, 1:1}, carsgea.DownBondAction);
_.$init_289 = function $init_289(){
}
;
_.getBondType_1 = function getBondType_2(){
  return 129;
}
;
_.onChangeBond = function onChangeBond_0(bond){
  var mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    mol.changeBond_0(bond, 129);
    mol.ensureHelperArrays_0(1);
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_DownBondAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'DownBondAction', 374, cggl.Lcom_actelion_research_share_gui_editor_actions_NewBondAction_2_classLit);
carsgea.$clinit_NewChainAction = function $clinit_NewChainAction(){
  carsgea.$clinit_NewChainAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.NewChainAction = function NewChainAction(model){
  carsgea.$clinit_NewChainAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_290();
}
;
defineClass(372, 96, {25:1, 1:1}, carsgea.NewChainAction);
_.$init_290 = function $init_290(){
  this.sourceAtom = -1;
  this.numChainAtoms = 0;
  this.mChainAtomX = null;
  this.mChainAtomY = null;
  this.mChainAtom = null;
}
;
_.addSingleBondAtAtom = function addSingleBondAtAtom(mol, atom){
  var p, targetAtom;
  p = this.suggestNewX2AndY2(atom);
  targetAtom = mol.findAtom_0(p.getX_0(), p.getY_0());
  if (targetAtom != -1) {
    mol.addOrChangeBond_0(atom, targetAtom, mol.suggestBondType_0(atom, targetAtom));
  }
   else {
    targetAtom = mol.addAtom_1(p.getX_0(), p.getY_0(), 0);
    mol.addBond_1(atom, targetAtom, mol.suggestBondType_0(atom, targetAtom));
    mol.ensureHelperArrays_0(1);
  }
}
;
_.drawChain = function drawChain(ctx, pt){
  var i;
  if (this.numChainAtoms > 0) {
    this.drawLine_1(ctx, pt.getX_0(), pt.getY_0(), this.mChainAtomX[0], this.mChainAtomY[0]);
  }
  if (this.numChainAtoms > 1) {
    for (i = 1; i < this.numChainAtoms; i++) {
      this.drawLine_1(ctx, this.mChainAtomX[i - 1], this.mChainAtomY[i - 1], this.mChainAtomX[i], this.mChainAtomY[i]);
    }
  }
}
;
_.drawLine_1 = function drawLine_1(_ctx, x1, y1, x2, y2){
  _ctx.drawLine_0(x1, y1, x2, y2);
}
;
_.getCursor = function getCursor_2(){
  return 45;
}
;
_.onDrag = function onDrag_1(pt){
  var a, avbl, b, dx, dy, i, lastX, lastY, mol, repaintNeeded, s0, s1, s2;
  mol = this.model_0.getMolecule_0();
  repaintNeeded = false;
  if (isNotNull(mol)) {
    if (this.numChainAtoms > 0) {
      lastX = this.mChainAtomX[this.numChainAtoms - 1];
      lastY = this.mChainAtomY[this.numChainAtoms - 1];
    }
     else {
      lastX = 0;
      lastY = 0;
    }
    avbl = mol.getAverageBondLength_0();
    s0 = avbl;
    s1 = 0.866 * avbl;
    s2 = 0.5 * avbl;
    dx = pt.getX_0() - this.origin_0.getX_0();
    dy = pt.getY_0() - this.origin_0.getY_0();
    a = 1;
    b = 1;
    if ($wnd.Math.abs(dy) > $wnd.Math.abs(dx)) {
      this.numChainAtoms = round_int(2 * $wnd.Math.abs(dy) / (s0 + s2));
      if (round_int($wnd.Math.abs(dy)) % round_int(s0 + s2) > s0) {
        this.numChainAtoms++;
      }
      this.mChainAtomX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      this.mChainAtomY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      if (pt.getX_0() < this.origin_0.getX_0()) {
        b = -b;
      }
      if (pt.getY_0() < this.origin_0.getY_0()) {
        a = -a;
      }
      if (this.numChainAtoms > 0) {
        this.mChainAtomX[0] = this.origin_0.getX_0() + s1 * b;
        this.mChainAtomY[0] = this.origin_0.getY_0() + s2 * a;
        for (i = 1; i < this.numChainAtoms; i++) {
          if ((i & 1) == 0) {
            this.mChainAtomX[i] = this.mChainAtomX[i - 1] + s0 * b;
            this.mChainAtomY[i] = this.mChainAtomY[i - 1] + s2 * a;
          }
           else {
            this.mChainAtomX[i] = this.mChainAtomX[i - 1];
            this.mChainAtomY[i] = this.mChainAtomY[i - 1] + s0 * a;
          }
        }
      }
    }
     else {
      this.numChainAtoms = round_int($wnd.Math.abs(dx) / s1);
      this.mChainAtomX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      this.mChainAtomY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      if (pt.getX_0() < this.origin_0.getX_0()) {
        s1 = -s1;
      }
      if (pt.getY_0() < this.origin_0.getY_0()) {
        s2 = -s2;
      }
      for (i = 0; i < this.numChainAtoms; i++) {
        this.mChainAtomX[i] = this.origin_0.getX_0() + (i + 1) * s1;
        this.mChainAtomY[i] = this.origin_0.getY_0();
        if ((i & 1) == 0) {
          this.mChainAtomY[i] += s2;
        }
      }
    }
    if (this.numChainAtoms > 0) {
      this.mChainAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.numChainAtoms, 15, 1);
      for (i = 0; i < this.numChainAtoms; i++) {
        this.mChainAtom[i] = mol.findAtom_0(this.mChainAtomX[i], this.mChainAtomY[i]);
        if (this.mChainAtom[i] != -1) {
          this.mChainAtomX[i] = mol.getAtomX_0(this.mChainAtom[i]);
          this.mChainAtomY[i] = mol.getAtomY_0(this.mChainAtom[i]);
        }
      }
      if (this.mChainAtomX[this.numChainAtoms - 1] != lastX || this.mChainAtomY[this.numChainAtoms - 1] != lastY) {
        repaintNeeded = true;
      }
    }
     else if (lastX != 0 || lastY != 0) {
      repaintNeeded = true;
    }
  }
  return repaintNeeded;
}
;
_.onMouseDown_0 = function onMouseDown_8(evt){
  var mol, pt, update;
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMolecule_0();
  update = false;
  this.origin_0 = pt;
  this.sourceAtom = this.findAtom_1(mol, pt);
  if (this.sourceAtom != -1) {
    {
      if (mol.getAllConnAtoms_0(this.sourceAtom) == 8) {
        return false;
      }
      this.origin_0 = new cargg.GenericPoint_0(mol.getAtomX_0(this.sourceAtom), mol.getAtomY_0(this.sourceAtom));
      update = true;
      this.numChainAtoms = 0;
      this.mChainAtomX = null;
      this.mChainAtomY = null;
      this.mChainAtom = null;
    }
  }
   else {
    this.origin_0 = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
    update = true;
    this.numChainAtoms = 0;
    this.mChainAtomX = null;
    this.mChainAtomY = null;
    this.mChainAtom = null;
  }
  return update;
}
;
_.onMouseUp_0 = function onMouseUp_13(evt){
  var atom, i, mol, ok, pt;
  ok = false;
  this.model_0.pushUndo();
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMolecule_0();
  if (this.numChainAtoms == 0) {
    mol = this.model_0.getMoleculeAt(pt, false);
    if (isNotNull(mol)) {
      atom = this.model_0.getSelectedAtom();
      if (atom != -1) {
        this.addSingleBondAtAtom(mol, atom);
      }
    }
  }
   else if (this.numChainAtoms > 0) {
    if (this.sourceAtom == -1) {
      this.sourceAtom = mol.addAtom_0(this.origin_0.getX_0(), this.origin_0.getY_0());
    }
    if (this.mChainAtom[0] == -1) {
      this.mChainAtom[0] = mol.addAtom_0(this.mChainAtomX[0], this.mChainAtomY[0]);
    }
    if (this.mChainAtom[0] != -1) {
      mol.addBond_0(this.sourceAtom, this.mChainAtom[0]);
    }
    if (this.model_0.isReaction_0())
      this.model_0.needsLayout_0(true);
  }
  if (this.numChainAtoms > 1) {
    for (i = 1; i < this.numChainAtoms; i++) {
      if (this.mChainAtom[i] == -1) {
        this.mChainAtom[i] = mol.addAtom_0(this.mChainAtomX[i], this.mChainAtomY[i]);
      }
      if (this.mChainAtom[i] != -1) {
        mol.addBond_0(this.mChainAtom[i - 1], this.mChainAtom[i]);
      }
    }
    if (this.model_0.isReaction_0())
      this.model_0.needsLayout_0(true);
  }
  this.highlightAtom(mol, -1);
  ok = true;
  this.dragging = false;
  return ok;
}
;
_.paint_0 = function paint_7(ctx){
  var mol, theAtom;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    if (!this.dragging) {
      getClassPrototype(96).paint_0.call(this, ctx);
    }
     else {
      theAtom = this.model_0.getSelectedAtom();
      this.drawChain(ctx, theAtom != -1?new cargg.GenericPoint_0(mol.getAtomX_0(theAtom), mol.getAtomY_0(theAtom)):this.origin_0);
    }
  }
  return false;
}
;
_.numChainAtoms = 0;
_.sourceAtom = 0;
cggl.Lcom_actelion_research_share_gui_editor_actions_NewChainAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'NewChainAction', 372, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_SelectionAction = function $clinit_SelectionAction(){
  carsgea.$clinit_SelectionAction = emptyMethod;
  carsgea.$clinit_BondHighlightAction();
}
;
carsgea.SelectionAction = function SelectionAction(model){
  carsgea.$clinit_SelectionAction();
  carsgea.BondHighlightAction.call(this, model);
  this.$init_291();
  this.factory = model.getGeomFactory();
  this.polygon = this.factory.createPolygon();
}
;
defineClass(365, 96, {25:1, 1:1}, carsgea.SelectionAction);
_.$init_291 = function $init_291(){
  this.atom = -1;
  this.bond = -1;
  this.shift_0 = false;
  this.duplicate_0 = false;
  this.rectangular = false;
  this.changed = false;
}
;
_.deselectAllAtoms = function deselectAllAtoms(){
  var mol;
  mol = this.model_0.getMolecule_0();
  this.deselectAtoms(mol);
}
;
_.deselectAllDrawingObjects = function deselectAllDrawingObjects(){
  var d, d$iterator;
  for (d$iterator = this.model_0.getDrawingObjects_0().iterator(); d$iterator.hasNext_0();) {
    d = castTo(d$iterator.next_3(), 112);
    d.setSelected(false);
  }
}
;
_.deselectAtoms = function deselectAtoms(mol){
  var i;
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    mol.setAtomSelection_0(i, false);
  }
}
;
_.drawDashedLine_1 = function drawDashedLine_1(context, srcx, srcy, targetx, targety, dashPattern){
  context.drawDashedLine_0(srcx, srcy, targetx, targety, dashPattern);
}
;
_.drawDashedRect = function drawDashedRect(ctx){
  var rc;
  rc = this.makeRect(this.origin_0, this.last);
  if (rc.getWidth() > 5 && rc.getHeight() > 5) {
    this.drawDashedRect_0(ctx, rc.getX_0(), rc.getY_0(), rc.getWidth(), rc.getHeight(), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [5, 2]));
  }
}
;
_.drawDashedRect_0 = function drawDashedRect_0(ctx, x_0, y_0, w, h, pattern){
  this.drawDashedLine_1(ctx, x_0, y_0, x_0 + w, y_0, pattern);
  this.drawDashedLine_1(ctx, x_0, y_0, x_0, y_0 + h, pattern);
  this.drawDashedLine_1(ctx, x_0, y_0 + h, x_0 + w, y_0 + h, pattern);
  this.drawDashedLine_1(ctx, x_0 + w, y_0 + h, x_0 + w, y_0, pattern);
}
;
_.drawPolygon_1 = function drawPolygon_2(ctx){
  ctx.drawPolygon_0(this.polygon);
}
;
_.duplicateSelected = function duplicateSelected(){
  var atom, atom0, atom1, atomMap, bond, esrGroupCountAND, esrGroupCountOR, mol, newAtom, originalAtoms, originalBonds;
  mol = this.model_0.getMolecule_0();
  originalAtoms = mol.getAllAtoms_0();
  originalBonds = mol.getAllBonds_0();
  atomMap = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  esrGroupCountAND = mol.renumberESRGroups_0(1);
  esrGroupCountOR = mol.renumberESRGroups_0(2);
  for (atom0 = 0; atom0 < originalAtoms; atom0++) {
    if (mol.isSelectedAtom_0(atom0)) {
      newAtom = mol.getAllAtoms_0();
      atomMap[atom0] = newAtom;
      mol.copyAtom_0(mol, atom0, esrGroupCountAND, esrGroupCountOR);
    }
  }
  for (bond = 0; bond < originalBonds; bond++) {
    if (mol.isSelectedBond_0(bond)) {
      mol.copyBond_1(mol, bond, esrGroupCountAND, esrGroupCountOR, atomMap, false);
    }
  }
  for (atom1 = 0; atom1 < originalAtoms; atom1++) {
    mol.setAtomSelection_0(atom1, false);
  }
  for (atom = originalAtoms; atom < mol.getAllAtoms_0(); atom++) {
    mol.setAtomMapNo_0(atom, 0, false);
  }
}
;
_.getCursor = function getCursor_3(){
  var ha, hb, mol;
  ha = this.model_0.getSelectedAtom();
  hb = this.model_0.getSelectedBond();
  mol = this.model_0.getMolecule_0();
  if (this.shift_0 && this.rectangular)
    return 53;
  if (this.shift_0)
    return 51;
  if (this.rectangular)
    return 52;
  if (ha != -1 && mol.isSelectedAtom_0(ha))
    return this.shift_0?48:47;
  if (hb != -1 && mol.isSelectedBond_0(hb))
    return this.shift_0?48:47;
  if (ha != -1 || hb != -1)
    return 0;
  return 50;
}
;
_.makeRect = function makeRect(origin_0, pt){
  var h, w, x_0, y_0;
  x_0 = $wnd.Math.min(origin_0.getX_0(), pt.getX_0());
  y_0 = $wnd.Math.min(origin_0.getY_0(), pt.getY_0());
  w = $wnd.Math.abs(origin_0.getX_0() - pt.getX_0());
  h = $wnd.Math.abs(origin_0.getY_0() - pt.getY_0());
  return new cargg.GenericRectangle_0(x_0, y_0, w, h);
}
;
_.moveAtomsAndBonds = function moveAtomsAndBonds(dx, dy, force){
  var mol, ok;
  ok = false;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    if (isNotNull(mol) && this.atom != -1 || force) {
      this.translateAtoms(mol, dx, dy, true);
      ok = true;
    }
     else if (isNotNull(mol) && this.bond != -1 || force) {
      this.translateBonds(mol, dx, dy, true);
      ok = true;
    }
  }
  return ok;
}
;
_.moveSelectedDrawItem = function moveSelectedDrawItem(dx, dy){
  var sel;
  sel = this.model_0.getSelectedDrawingObject();
  if (isNotNull(sel) && sel.isMovable())
    sel.move_0(-dx, -dy);
}
;
_.moveSelectedDrawItems = function moveSelectedDrawItems(dx, dy){
  var ok, selectedOne, selectedOne$iterator;
  ok = false;
  for (selectedOne$iterator = this.model_0.getDrawingObjects_0().iterator(); selectedOne$iterator.hasNext_0();) {
    selectedOne = castTo(selectedOne$iterator.next_3(), 112);
    if (selectedOne.isSelected() && selectedOne.isMovable()) {
      selectedOne.move_0(-dx, -dy);
      ok = true;
    }
  }
  return ok;
}
;
_.onDoubleClick_0 = function onDoubleClick_2(evt){
  var atom, bond, drawingObject, i, mShiftIsDown, mol, pt, rootAtom;
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMoleculeAt(pt, true);
  if (isNotNull(mol)) {
    atom = mol.findAtom_0(pt.getX_0(), pt.getY_0());
    bond = mol.findBond_0(pt.getX_0(), pt.getY_0());
    mShiftIsDown = evt.isShiftDown();
    if (mol.isFragment_0()) {
      if (atom != -1) {
        return this.showAtomQFDialog_0(atom);
      }
       else if (bond != -1) {
        return this.showBondQFDialog_0(bond);
      }
    }
     else {
      rootAtom = -1;
      if (atom != -1) {
        rootAtom = atom;
      }
       else if (bond != -1) {
        rootAtom = mol.getBondAtom_0(0, bond);
      }
      if (rootAtom != -1) {
        if (!mShiftIsDown) {
          this.deselectAllAtoms();
          if (this.model_0.isReaction_0()) {
            this.model_0.selectFragmentByAtom(rootAtom);
          }
           else {
            for (i = 0; i < mol.getAllAtoms_0(); i++) {
              mol.setAtomSelection_0(i, true);
            }
          }
        }
        return true;
      }
    }
  }
   else {
    drawingObject = this.model_0.getSelectedDrawingObject();
    if (isNotNull(drawingObject)) {
      if (evt.isShiftDown()) {
        this.deselectAllAtoms();
        this.deselectAllDrawingObjects();
      }
      drawingObject.setSelected(true);
      this.model_0.setSelectedDrawingObject(drawingObject);
    }
  }
  return false;
}
;
_.onKeyPressed_0 = function onKeyPressed_5(evt){
  this.shift_0 = evt.isShiftDown();
  this.rectangular = evt.isAltDown();
  return getClassPrototype(96).onKeyPressed_0.call(this, evt);
}
;
_.onMouseDown_0 = function onMouseDown_9(evt){
  var a1, a2, mol, pt;
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  mol = this.model_0.getMoleculeAt(pt, true);
  this.polygon = this.factory.createPolygon();
  this.polygon.add_9(pt);
  this.duplicate_0 = false;
  this.changed = false;
  this.model_0.pushUndo();
  this.last = this.origin_0 = new cargg.GenericPoint_0(pt.getX_0(), pt.getY_0());
  this.atom = this.getAtomAt(mol, this.origin_0);
  this.bond = this.getBondAt(mol, this.origin_0);
  if (this.atom != -1) {
    if (!mol.isSelectedAtom_0(this.atom)) {
      if (!this.shift_0)
        this.deselectAllAtoms();
      mol.setAtomSelection_0(this.atom, true);
    }
  }
   else if (this.bond != -1) {
    if (!mol.isSelectedBond_0(this.bond)) {
      if (!this.shift_0)
        this.deselectAllAtoms();
      a1 = mol.getBondAtom_0(0, this.bond);
      a2 = mol.getBondAtom_0(1, this.bond);
      mol.setAtomSelection_0(a1, true);
      mol.setAtomSelection_0(a2, true);
    }
  }
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_7(evt, drag){
  var dx, dy, ok, pt;
  ok = false;
  pt = new cargg.GenericPoint_0(evt.getX_0(), evt.getY_0());
  if (drag) {
    dx = this.last.getX_0() - pt.getX_0();
    dy = this.last.getY_0() - pt.getY_0();
    if (!this.shift_0 || this.duplicate_0) {
      ok = this.moveAtomsAndBonds(dx, dy, isNotNull(this.model_0.getSelectedDrawingObject()));
      if (ok) {
        this.moveSelectedDrawItems(dx, dy);
      }
       else if (isNotNull(this.model_0.getSelectedDrawingObject())) {
        this.moveSelectedDrawItem(dx, dy);
        ok = true;
      }
      if (!ok) {
        ok = this.selectItems(pt);
      }
      this.changed = ok;
    }
     else if (this.shift_0) {
      this.duplicate_0 = true;
      this.duplicateSelected();
      this.changed = true;
    }
  }
   else {
    ok = this.trackHighLight(pt);
  }
  this.last = pt;
  return ok;
}
;
_.onMouseUp_0 = function onMouseUp_14(ev){
  this.polygon = this.factory.createPolygon();
  this.atom = this.bond = -1;
  this.origin_0 = this.last = null;
  this.duplicate_0 = false;
  if (!this.changed) {
    this.model_0.popUndo();
    this.deselectAllAtoms();
  }
  this.changed = false;
  return true;
}
;
_.paint_0 = function paint_8(ctx){
  var obj;
  ctx.save_0();
  getClassPrototype(96).paint_0.call(this, ctx);
  ctx.setStroke(this.factory.getSelectionColor());
  if (this.rectangular && isNotNull(this.origin_0) && isNotNull(this.last)) {
    this.drawDashedRect(ctx);
    return true;
  }
   else if (isNotNull(this.polygon) && this.polygon.size_1() > 1) {
    this.drawPolygon_1(ctx);
    return true;
  }
   else {
    ctx.setStroke(this.factory.getHighLightColor());
    ctx.setFill(this.factory.getHighLightColor());
    obj = this.model_0.getSelectedDrawingObject();
    if (isNotNull(obj)) {
      obj.draw_5(ctx, null);
    }
  }
  ctx.restore_0();
  return false;
}
;
_.selectAtomsInRectangle = function selectAtomsInRectangle(mol, rc){
  var i, isSelected;
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    isSelected = rc.contains_0(mol.getAtomX_0(i), mol.getAtomY_0(i));
    mol.setAtomSelection_0(i, isSelected);
  }
}
;
_.selectDrawingObjectsInRectangle = function selectDrawingObjectsInRectangle(rc){
  var dw, dw$iterator, r;
  for (dw$iterator = this.model_0.getDrawingObjects_0().iterator(); dw$iterator.hasNext_0();) {
    dw = castTo(dw$iterator.next_3(), 112);
    dw.setSelected(false);
    r = dw.getBoundingRect();
    if (rc.contains_0(r.x_0 + r.width_0 / 2, r.y_0 + r.height_0 / 2))
      dw.setSelected(true);
  }
}
;
_.selectFromPolygonRegion = function selectFromPolygonRegion(){
  var d, d$iterator, drawables, i, isSelected, mol, r;
  mol = this.model_0.getMolecule_0();
  for (i = 0; i < mol.getAllAtoms_0(); i++) {
    isSelected = this.polygon.contains_0(mol.getAtomX_0(i), mol.getAtomY_0(i));
    mol.setAtomSelection_0(i, isSelected);
  }
  drawables = this.model_0.getDrawingObjects_0();
  for (d$iterator = drawables.iterator(); d$iterator.hasNext_0();) {
    d = castTo(d$iterator.next_3(), 112);
    r = d.getBoundingRect();
    if (this.polygon.contains_0(r.x_0 + r.width_0 / 2, r.y_0 + r.height_0 / 2))
      d.setSelected(true);
  }
}
;
_.selectItems = function selectItems(pt){
  var ok;
  ok = false;
  if (this.rectangular) {
    this.selectRectanglarRegion(null);
    ok = true;
  }
   else {
    if (this.selectPolygonRegion(null, pt)) {
      ok = true;
    }
  }
  return ok;
}
;
_.selectPolygonRegion = function selectPolygonRegion(m, pt){
  if (this.polygon.size_1() > 1 && $wnd.Math.abs(pt.getX_0() - this.polygon.get_2(this.polygon.size_1() - 1).getX_0()) < 10 && $wnd.Math.abs(pt.getY_0() - this.polygon.get_2(this.polygon.size_1() - 1).getY_0()) < 10) {
    return false;
  }
  if (isNull(this.origin_0)) {
    throw toJs(new jl.RuntimeException_1('NUll DOWN Point!'));
  }
  this.polygon.remove_1(this.origin_0);
  this.polygon.add_9(pt);
  this.polygon.add_9(this.origin_0);
  this.deselectAllAtoms();
  this.deselectAllDrawingObjects();
  this.selectFromPolygonRegion();
  return true;
}
;
_.selectRectanglarRegion = function selectRectanglarRegion(mol){
  var bounds, m, rc, selected;
  rc = this.makeRect(this.origin_0, this.last);
  selected = false;
  if (isNotNull(mol)) {
    this.selectAtomsInRectangle(mol, rc);
    selected = true;
  }
   else {
    m = this.model_0.getMolecule_0();
    this.deselectAtoms(m);
    bounds = this.factory.getBoundingRect_0(m);
    if (isNotNull(bounds) && bounds.intersects(rc)) {
      this.selectRectanglarRegion(m);
    }
  }
  if (!selected) {
    this.selectDrawingObjectsInRectangle(rc);
  }
}
;
_.showAtomQFDialog_0 = function showAtomQFDialog_0(atom){
  var dlg, mol, showReactionHints;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    showReactionHints = (this.model_0.getMode() & 4) != 0;
    dlg = this.factory.createAtomQueryFeatureDialog(mol, atom, showReactionHints);
    return jsEquals(dlg.doModalAt(this.lastHightlightPoint.getX_0(), this.lastHightlightPoint.getY_0()), (carsg.$clinit_DialogResult() , carsg.IDOK));
  }
  return false;
}
;
_.showBondQFDialog_0 = function showBondQFDialog_0(bond){
  var dlg, mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    dlg = this.factory.createBondFeaturesDialog(mol, bond);
    return jsEquals(dlg.doModalAt(this.lastHightlightPoint.getX_0(), this.lastHightlightPoint.getY_0()), (carsg.$clinit_DialogResult() , carsg.IDOK));
  }
  return false;
}
;
_.trackHighLight = function trackHighLight_4(pt){
  var d, d$iterator, drawables, lastSelected, ok, selected;
  selected = false;
  lastSelected = this.model_0.getSelectedDrawingObject();
  drawables = this.model_0.getDrawingObjects_0();
  this.model_0.setSelectedDrawingObject(null);
  for (d$iterator = drawables.iterator(); d$iterator.hasNext_0();) {
    d = castTo(d$iterator.next_3(), 112);
    if (d.getBoundingRect().contains_0(pt.getX_0(), pt.getY_0())) {
      this.model_0.setSelectedDrawingObject(d);
      selected = true;
      break;
    }
  }
  ok = selected || isNotNull(lastSelected) || getClassPrototype(96).trackHighLight.call(this, pt);
  return ok;
}
;
_.translateAtom = function translateAtom(mol, a, dx, dy){
  mol.setAtomX_0(a, mol.getAtomX_0(a) - dx);
  mol.setAtomY_0(a, mol.getAtomY_0(a) - dy);
}
;
_.translateAtoms = function translateAtoms(mol, dx, dy, allSelected){
  var i;
  if (allSelected) {
    for (i = 0; i < mol.getAllAtoms_0(); i++) {
      if (mol.isSelectedAtom_0(i)) {
        this.translateAtom(mol, i, dx, dy);
      }
    }
  }
   else {
    this.translateAtom(mol, this.atom, dx, dy);
  }
}
;
_.translateBonds = function translateBonds(mol, dx, dy, selected){
  var a1, a2;
  a1 = mol.getBondAtom_0(0, this.bond);
  a2 = mol.getBondAtom_0(1, this.bond);
  if (selected) {
    this.translateAtoms(mol, dx, dy, true);
  }
   else {
    this.translateAtom(mol, a1, dx, dy);
    this.translateAtom(mol, a2, dx, dy);
  }
}
;
_.atom = 0;
_.bond = 0;
_.changed = false;
_.duplicate_0 = false;
_.rectangular = false;
_.shift_0 = false;
cggl.Lcom_actelion_research_share_gui_editor_actions_SelectionAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'SelectionAction', 365, cggl.Lcom_actelion_research_share_gui_editor_actions_BondHighlightAction_2_classLit);
carsgea.$clinit_UndoAction = function $clinit_UndoAction(){
  carsgea.$clinit_UndoAction = emptyMethod;
  carsgea.$clinit_CommandAction();
}
;
carsgea.UndoAction = function UndoAction(m){
  carsgea.$clinit_UndoAction();
  carsgea.CommandAction.call(this, m);
  this.$init_292();
}
;
defineClass(361, 288, {25:1, 1:1}, carsgea.UndoAction);
_.$init_292 = function $init_292(){
}
;
_.onCommand = function onCommand_2(){
  this.model.popUndo();
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_UndoAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'UndoAction', 361, cggl.Lcom_actelion_research_share_gui_editor_actions_CommandAction_2_classLit);
carsgea.$clinit_UnknownParityAction = function $clinit_UnknownParityAction(){
  carsgea.$clinit_UnknownParityAction = emptyMethod;
  carsgea.$clinit_AtomHighlightAction();
}
;
carsgea.UnknownParityAction = function UnknownParityAction(model){
  carsgea.$clinit_UnknownParityAction();
  carsgea.AtomHighlightAction.call(this, model);
  this.$init_293();
}
;
defineClass(367, 77, {25:1, 1:1}, carsgea.UnknownParityAction);
_.$init_293 = function $init_293(){
}
;
_.onMouseUp_0 = function onMouseUp_15(evt){
  var mol, ok, theAtom;
  this.model_0.pushUndo();
  ok = false;
  theAtom = this.model_0.getSelectedAtom();
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol) && theAtom != -1) {
    mol.setAtomConfigurationUnknown_0(theAtom, !mol.isAtomConfigurationUnknown_0(theAtom));
    ok = true;
  }
  return ok;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_UnknownParityAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'UnknownParityAction', 367, cggl.Lcom_actelion_research_share_gui_editor_actions_AtomHighlightAction_2_classLit);
carsgea.$clinit_UpBondAction = function $clinit_UpBondAction(){
  carsgea.$clinit_UpBondAction = emptyMethod;
  carsgea.$clinit_NewBondAction();
}
;
carsgea.UpBondAction = function UpBondAction(model){
  carsgea.$clinit_UpBondAction();
  carsgea.NewBondAction.call(this, model);
  this.$init_294();
}
;
defineClass(373, 241, {25:1, 1:1}, carsgea.UpBondAction);
_.$init_294 = function $init_294(){
}
;
_.getBondType_1 = function getBondType_3(){
  return 257;
}
;
_.onChangeBond = function onChangeBond_1(bond){
  var mol;
  mol = this.model_0.getMolecule_0();
  if (isNotNull(mol)) {
    mol.changeBond_0(bond, 257);
    mol.ensureHelperArrays_0(1);
  }
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_UpBondAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'UpBondAction', 373, cggl.Lcom_actelion_research_share_gui_editor_actions_NewBondAction_2_classLit);
carsgea.$clinit_ZoomRotateAction = function $clinit_ZoomRotateAction(){
  carsgea.$clinit_ZoomRotateAction = emptyMethod;
  carsgea.$clinit_DrawAction();
}
;
carsgea.ZoomRotateAction = function ZoomRotateAction(m){
  carsgea.$clinit_ZoomRotateAction();
  carsgea.DrawAction.call(this, m);
  this.$init_295();
}
;
defineClass(364, 363, {25:1, 1:1}, carsgea.ZoomRotateAction);
_.$init_295 = function $init_295(){
  this.origin_0 = null;
}
;
_.getCursor = function getCursor_4(){
  return 54;
}
;
_.onActionEnter = function onActionEnter_2(){
  this.model_0.pushUndo();
}
;
_.onMouseDown_0 = function onMouseDown_10(ev){
  var mol;
  this.origin_0 = new jag.Point2D$Double(ev.getX_0(), ev.getY_0());
  mol = this.model_0.getMolecule_0();
  mol.zoomAndRotateInit_0(this.origin_0.getX_0(), this.origin_0.getY_0());
  return false;
}
;
_.onMouseMove_0 = function onMouseMove_8(ev, drag){
  var angleChange, i, magnification, mol, pt, selectedOnly;
  if (drag) {
    selectedOnly = false;
    mol = this.model_0.getMolecule_0();
    for (i = 0; i < mol.getAllAtoms_0(); i++) {
      if (mol.isSelectedAtom_0(i))
        selectedOnly = true;
    }
    pt = new jag.Point2D$Double(ev.getX_0(), ev.getY_0());
    magnification = $wnd.Math.abs(pt.getY_0() - this.origin_0.getY_0()) < 20?1:$wnd.Math.exp((pt.getY_0() - this.origin_0.getY_0()) / 100);
    angleChange = $wnd.Math.abs(pt.getX_0() - this.origin_0.getX_0()) < 20?0:(pt.getX_0() - this.origin_0.getX_0()) / 50;
    mol.zoomAndRotate_0(magnification, angleChange, selectedOnly);
    return true;
  }
  return false;
}
;
_.onMouseUp_0 = function onMouseUp_16(ev){
  return true;
}
;
_.paint_0 = function paint_9(ctx){
  return false;
}
;
cggl.Lcom_actelion_research_share_gui_editor_actions_ZoomRotateAction_2_classLit = createForClass('com.actelion.research.share.gui.editor.actions', 'ZoomRotateAction', 364, cggl.Lcom_actelion_research_share_gui_editor_actions_DrawAction_2_classLit);
carsgel.$clinit_IValidationListener = function $clinit_IValidationListener(){
  carsgel.$clinit_IValidationListener = emptyMethod;
}
;
cggl.Lcom_actelion_research_share_gui_editor_listeners_IValidationListener_2_classLit = createForInterface('com.actelion.research.share.gui.editor.listeners', 'IValidationListener');
caru.$clinit_Angle_1 = function $clinit_Angle_1(){
  caru.$clinit_Angle_1 = emptyMethod;
  jl.$clinit_Object();
}
;
caru.difference = function difference(a2, a1){
  caru.$clinit_Angle_1();
  var a;
  a = a2 - a1;
  if (a >= 3.141592653589793)
    a -= 2 * 3.141592653589793;
  else if (a < -3.141592653589793)
    a += 2 * 3.141592653589793;
  return a;
}
;
defineClass(1147, 1, {1:1});
cggl.Lcom_actelion_research_util_Angle_2_classLit = createForClass('com.actelion.research.util', 'Angle', 1147, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_ArrayUtils = function $clinit_ArrayUtils(){
  caru.$clinit_ArrayUtils = emptyMethod;
  jl.$clinit_Object();
}
;
caru.indexOf_2 = function indexOf_2(array, obj){
  caru.$clinit_ArrayUtils();
  return caru.indexOf_3(array, obj, 0);
}
;
caru.indexOf_3 = function indexOf_3(array, obj, startIndex){
  caru.$clinit_ArrayUtils();
  var i;
  for (i = startIndex; i < array.length; i++) {
    if (array[i] == obj)
      return i;
  }
  return -1;
}
;
defineClass(1127, 1, {1:1});
cggl.Lcom_actelion_research_util_ArrayUtils_2_classLit = createForClass('com.actelion.research.util', 'ArrayUtils', 1127, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_ColorHelper = function $clinit_ColorHelper(){
  caru.$clinit_ColorHelper = emptyMethod;
  jl.$clinit_Object();
  caru.PERCEIVED_BRIGHTNESS = stampJavaTypeInfo(getClassLiteralForArray(cggl.F_classLit, 1), {65:1, 4:1, 1:1}, 5, 15, [0.29899999499320984, 0.5870000123977661, 0.11400000005960464]);
}
;
caru.createColor_0 = function createColor_0(argb, perceivedBrightness){
  var cc, f;
  cc = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, 4, 15, 1);
  f = 1 / 255;
  cc[0] = f * ((argb & 16711680) >> 16);
  cc[1] = f * ((argb & 65280) >> 8);
  cc[2] = f * (argb & 255);
  caru.createColor_1(cc, perceivedBrightness);
  return argb & -16777216 | jl.round_2(cc[0] * 255) << 16 | jl.round_2(cc[1] * 255) << 8 | jl.round_2(cc[2] * 255);
}
;
caru.createColor_1 = function createColor_1(cc, perceivedBrightness){
  var f, i, i0, i1, pb, remainingBrightness, sum, surplusBrightness;
  pb = caru.perceivedBrightness_1(cc);
  if (pb == 0) {
    cc[0] = 0;
    cc[1] = 0;
    cc[2] = 0;
    return;
  }
  f = perceivedBrightness / pb;
  surplusBrightness = 0;
  sum = 0;
  for (i0 = 0; i0 < 3; i0++) {
    cc[i0] *= f;
    if (cc[i0] < 1) {
      sum += caru.PERCEIVED_BRIGHTNESS[i0];
    }
     else {
      surplusBrightness += (cc[i0] - 1) * caru.PERCEIVED_BRIGHTNESS[i0];
      cc[i0] = 1;
    }
  }
  if (surplusBrightness != 0) {
    remainingBrightness = 0;
    for (i1 = 0; i1 < 3; i1++) {
      if (cc[i1] < 1) {
        cc[i1] += surplusBrightness / sum;
        if (cc[i1] > 1) {
          remainingBrightness += (cc[i1] - 1) * caru.PERCEIVED_BRIGHTNESS[i1];
          cc[i1] = 1;
        }
      }
    }
    if (remainingBrightness != 0) {
      for (i = 0; i < 3; i++) {
        if (cc[i] < 1) {
          cc[i] += remainingBrightness / caru.PERCEIVED_BRIGHTNESS[i];
          if (cc[i] > 1) {
            cc[i] = 1;
          }
        }
      }
    }
  }
}
;
caru.getContrastColor_0 = function getContrastColor_0(fgRGB, bgRGB){
  caru.$clinit_ColorHelper();
  var bgb, brightnessFactor, contrast, darken, fgb, hsbBG, hsbFG, hueDif, hueDifferenceFactor, neededContrast, saturationFactor;
  bgb = caru.perceivedBrightness_0(bgRGB);
  fgb = caru.perceivedBrightness_0(fgRGB);
  contrast = $wnd.Math.abs(bgb - fgb);
  if (contrast > 0.30000001192092896)
    return fgRGB;
  hsbBG = ja.RGBtoHSB((bgRGB & 16711680) >> 16, (bgRGB & 65280) >> 8, bgRGB & 255, null);
  hsbFG = ja.RGBtoHSB((fgRGB & 16711680) >> 16, (fgRGB & 65280) >> 8, fgRGB & 255, null);
  hueDif = $wnd.Math.abs(hsbFG[0] - hsbBG[0]);
  if (hueDif > 0.5)
    hueDif = 1 - hueDif;
  saturationFactor = 1 - $wnd.Math.max(hsbFG[1], hsbBG[1]);
  brightnessFactor = $wnd.Math.abs(fgb + bgb - 1);
  hueDifferenceFactor = $wnd.Math.cos(3.141592653589793 * hueDif * 3);
  neededContrast = 0.30000001192092896 * $wnd.Math.max(saturationFactor, $wnd.Math.max(brightnessFactor, hueDifferenceFactor));
  if (contrast > neededContrast)
    return fgRGB;
  darken = fgb > bgb?fgb + neededContrast > 1:fgb - neededContrast > 0;
  return caru.createColor_0(fgRGB, darken?bgb - neededContrast:bgb + neededContrast);
}
;
caru.intermediateColor = function intermediateColor(rgb1, rgb2, ratio){
  caru.$clinit_ColorHelper();
  var b1, b2, g1, g2, r1, r2;
  r1 = (rgb1 & 16711680) >> 16;
  g1 = (rgb1 & 65280) >> 8;
  b1 = rgb1 & 255;
  r2 = (rgb2 & 16711680) >> 16;
  g2 = (rgb2 & 65280) >> 8;
  b2 = rgb2 & 255;
  return (r1 + jl.round_2(ratio * (r2 - r1)) << 16) + (g1 + jl.round_2(ratio * (g2 - g1)) << 8) + b1 + jl.round_2(ratio * (b2 - b1));
}
;
caru.perceivedBrightness_0 = function perceivedBrightness_0(argb){
  return (caru.PERCEIVED_BRIGHTNESS[0] * ((argb & 16711680) >> 16) + caru.PERCEIVED_BRIGHTNESS[1] * ((argb & 65280) >> 8) + caru.PERCEIVED_BRIGHTNESS[2] * (argb & 255)) / 255;
}
;
caru.perceivedBrightness_1 = function perceivedBrightness_1(cc){
  return caru.PERCEIVED_BRIGHTNESS[0] * cc[0] + caru.PERCEIVED_BRIGHTNESS[1] * cc[1] + caru.PERCEIVED_BRIGHTNESS[2] * cc[2];
}
;
defineClass(1148, 1, {1:1});
caru.MIN_CONTRAST_TO_BACKGROUND = 0.30000001192092896;
cggl.Lcom_actelion_research_util_ColorHelper_2_classLit = createForClass('com.actelion.research.util', 'ColorHelper', 1148, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_DoubleFormat = function $clinit_DoubleFormat(){
  caru.$clinit_DoubleFormat = emptyMethod;
  jl.$clinit_Object();
  caru.ZEROS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000']);
}
;
caru.toString_20 = function toString_20(theDouble){
  caru.$clinit_DoubleFormat();
  return caru.toString_22(theDouble, 5, true);
}
;
caru.toString_21 = function toString_21(value_0, significantDigits){
  caru.$clinit_DoubleFormat();
  return caru.toString_22(value_0, significantDigits, true);
}
;
caru.toString_22 = function toString_22(value_0, significantDigits, skipTrailingZeros){
  var exponent, i, limit1, limit2;
  if (isNaN(value_0))
    return 'NaN';
  if (jl.isInfinite(value_0))
    return 'Infinity';
  if (value_0 == 0)
    return skipTrailingZeros || significantDigits == 1?'0':'0.' + caru.zeros(significantDigits - 1);
  limit1 = 1;
  for (i = 1; i < significantDigits; i++)
    limit1 *= 10;
  limit2 = limit1 * 10;
  exponent = 0;
  while ($wnd.Math.abs(value_0) + 0.5 < limit1) {
    value_0 *= 10;
    exponent--;
  }
  while ($wnd.Math.abs(value_0) + 0.5 >= limit2) {
    value_0 /= 10;
    exponent++;
  }
  return caru.toString_23(fromDouble_0(value_0 + (value_0 < 0?-0.5:0.5)), exponent, significantDigits, skipTrailingZeros);
}
;
caru.toString_23 = function toString_23(value_0, exponent, significantDigits, skipTrailingZeros){
  var cipherString, label_0, noOfCiphers, temp, trailingZeros, useScientificNotation;
  noOfCiphers = 1;
  if (eq(value_0, 0))
    return skipTrailingZeros || significantDigits == 1?'0':'0.' + caru.zeros(significantDigits - 1);
  if (neq(value_0, 0)) {
    while (eq(mod_0(value_0, 10), 0)) {
      value_0 = div_1(value_0, 10);
      exponent++;
    }
    noOfCiphers = 0;
    for (temp = value_0; neq(temp, 0); temp = div_1(temp, 10))
      noOfCiphers++;
  }
  label_0 = new jl.StringBuilder;
  if (lt(value_0, 0))
    label_0.append_4(45);
  trailingZeros = $wnd.Math.max(0, significantDigits - noOfCiphers);
  cipherString = jl.toString_48(jl.abs_0(value_0));
  if (exponent == 0) {
    label_0.append_9(cipherString);
    if (!skipTrailingZeros && trailingZeros != 0) {
      label_0.append_9('.');
      label_0.append_9(caru.zeros(trailingZeros));
    }
  }
   else if (exponent > 0) {
    useScientificNotation = skipTrailingZeros?exponent > 4:exponent - trailingZeros > 4;
    if (useScientificNotation) {
      if (noOfCiphers == 1) {
        label_0.append_9(cipherString);
        if (significantDigits > 1) {
          label_0.append_9('.');
          if (skipTrailingZeros)
            label_0.append_9('0');
          else 
            label_0.append_9(caru.zeros(trailingZeros));
        }
      }
       else {
        label_0.append_9(jl.substring_II_Ljava_lang_String___devirtual$(cipherString, 0, 1));
        label_0.append_9('.');
        label_0.append_9(jl.substring_I_Ljava_lang_String___devirtual$(cipherString, 1));
        if (!skipTrailingZeros && trailingZeros != 0)
          label_0.append_9(caru.zeros(trailingZeros));
      }
      label_0.append_9('e');
      label_0.append_9(jl.toString_45(exponent + noOfCiphers - 1));
    }
     else {
      label_0.append_9(cipherString);
      label_0.append_9(caru.zeros(exponent));
      if (!skipTrailingZeros && trailingZeros > exponent) {
        label_0.append_9('.');
        label_0.append_9(caru.zeros(trailingZeros - exponent));
      }
    }
  }
   else {
    if (-exponent < noOfCiphers) {
      label_0.append_9(jl.substring_II_Ljava_lang_String___devirtual$(cipherString, 0, noOfCiphers + exponent));
      label_0.append_9('.');
      label_0.append_9(jl.substring_I_Ljava_lang_String___devirtual$(cipherString, noOfCiphers + exponent));
      if (!skipTrailingZeros && trailingZeros != 0)
        label_0.append_9(caru.zeros(trailingZeros));
    }
     else if (-exponent == noOfCiphers) {
      label_0.append_9('0.');
      label_0.append_9(cipherString);
      if (!skipTrailingZeros && trailingZeros != 0)
        label_0.append_9(caru.zeros(trailingZeros));
    }
     else {
      if (exponent + noOfCiphers < -2) {
        if (noOfCiphers == 1) {
          label_0.append_9(cipherString);
          if (significantDigits > 1) {
            label_0.append_9('.');
            if (skipTrailingZeros)
              label_0.append_9('0');
            else 
              label_0.append_9(caru.zeros(trailingZeros));
          }
        }
         else {
          label_0.append_4(jl.charAt_I_C__devirtual$_0(cipherString, 0));
          label_0.append_9('.');
          label_0.append_9(jl.substring_I_Ljava_lang_String___devirtual$(cipherString, 1));
          if (!skipTrailingZeros && trailingZeros != 0)
            label_0.append_9(caru.zeros(trailingZeros));
        }
        label_0.append_9('e-');
        label_0.append_9(jl.toString_45(1 - exponent - noOfCiphers));
      }
       else {
        label_0.append_9('0.');
        label_0.append_9(caru.zeros(-exponent - noOfCiphers));
        label_0.append_9(cipherString);
        if (!skipTrailingZeros && trailingZeros != 0)
          label_0.append_9(caru.zeros(trailingZeros));
      }
    }
  }
  return label_0.toString_0();
}
;
caru.zeros = function zeros(i){
  var b;
  if (i < caru.ZEROS.length)
    return caru.ZEROS[i];
  b = new jl.StringBuilder;
  while (i >= caru.ZEROS.length) {
    b.append_9(caru.ZEROS[caru.ZEROS.length - 1]);
    i -= caru.ZEROS.length - 1;
  }
  b.append_9(caru.ZEROS[i]);
  return b.toString_0();
}
;
defineClass(1208, 1, {1:1});
cggl.Lcom_actelion_research_util_DoubleFormat_2_classLit = createForClass('com.actelion.research.util', 'DoubleFormat', 1208, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_IntArrayComparator = function $clinit_IntArrayComparator(){
  caru.$clinit_IntArrayComparator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
caru.IntArrayComparator = function IntArrayComparator(){
  caru.$clinit_IntArrayComparator();
  Object_0.call(this);
  this.$init_296();
}
;
defineClass(149, 1, {4:1, 1:1, 50:1}, caru.IntArrayComparator);
_.$init_296 = function $init_296(){
}
;
_.compare_0 = function compare_14(ia1, ia2){
  return this.compare_2(castTo(ia1, 6), castTo(ia2, 6));
}
;
_.equals_0 = function equals_18(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_2 = function compare_15(ia1, ia2){
  var i;
  if (jsEquals(ia1, null))
    return jsEquals(ia2, null)?0:1;
  if (jsEquals(ia2, null))
    return -1;
  for (i = 0; i < ia1.length; i++) {
    if (ia2.length == i)
      return 1;
    if (ia1[i] != ia2[i])
      return ia1[i] < ia2[i]?-1:1;
  }
  return ia2.length > ia1.length?-1:0;
}
;
caru.serialVersionUID_7 = 538185762;
cggl.Lcom_actelion_research_util_IntArrayComparator_2_classLit = createForClass('com.actelion.research.util', 'IntArrayComparator', 149, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_SortedList = function $clinit_SortedList(){
  caru.$clinit_SortedList = emptyMethod;
  jl.$clinit_Object();
}
;
caru.SortedList = function SortedList(){
  caru.$clinit_SortedList();
  caru.SortedList_0.call(this, null);
}
;
caru.SortedList_0 = function SortedList_0(comparator){
  caru.$clinit_SortedList();
  Object_0.call(this);
  this.$init_297();
  this.mComparator = comparator;
}
;
defineClass(92, 1, {1:1}, caru.SortedList, caru.SortedList_0);
_.$init_297 = function $init_297(){
  this.mList = new ju.ArrayList;
}
;
_.add_10 = function add_18(object){
  var index_0;
  index_0 = this.getIndexOrInsertIndex(object);
  if (index_0 < 0) {
    index_0 = -(index_0 + 1);
    this.mList.addAtIndex(index_0, object);
  }
  return index_0;
}
;
_.compare_4 = function compare_16(o1, o2){
  return isNotNull(this.mComparator)?this.mComparator.compare_0(o1, o2):jl.compareTo_Ljava_lang_Object__I__devirtual$_0(castTo(castTo(o1, 10), 10), o2);
}
;
_.contains_3 = function contains_9(object){
  return this.getIndex_0(object) != -1;
}
;
_.get_3 = function get_15(index_0){
  return index_0 < 0?null:this.mList.getAtIndex(index_0);
}
;
_.getIndex_0 = function getIndex_0(object){
  var index_0;
  index_0 = this.getIndexOrInsertIndex(object);
  return index_0 < 0?-1:index_0;
}
;
_.getIndexOrInsertIndex = function getIndexOrInsertIndex(object){
  var comparison, increment, index_0, vectorSize;
  vectorSize = this.mList.size();
  if (vectorSize == 0) {
    return -1;
  }
  index_0 = 1;
  while (2 * index_0 <= vectorSize)
    index_0 <<= 1;
  increment = index_0;
  index_0--;
  while (increment != 0) {
    increment >>= 1;
    if (index_0 >= vectorSize) {
      index_0 -= increment;
      continue;
    }
    comparison = this.compare_4(object, this.mList.getAtIndex(index_0));
    if (comparison == 0)
      return index_0;
    if (increment == 0)
      break;
    if (comparison < 0) {
      index_0 -= increment;
    }
     else {
      index_0 += increment;
    }
  }
  if (index_0 < vectorSize && this.compare_4(object, this.mList.getAtIndex(index_0)) > 0)
    index_0++;
  return -(index_0 + 1);
}
;
_.remove_2 = function remove_7(index_0){
  this.mList.removeAtIndex(index_0);
}
;
_.removeAll_0 = function removeAll_0(){
  this.mList.clear();
}
;
_.size_1 = function size_6(){
  return this.mList.size();
}
;
_.toArray_0 = function toArray_5(e){
  return this.mList.toArray_0(e);
}
;
caru.serialVersionUID_8 = 538314278;
cggl.Lcom_actelion_research_util_SortedList_2_classLit = createForClass('com.actelion.research.util', 'SortedList', 92, cggl.Ljava_lang_Object_2_classLit);
caru.$clinit_UniqueList = function $clinit_UniqueList(){
  caru.$clinit_UniqueList = emptyMethod;
  caru.$clinit_SortedList();
}
;
caru.UniqueList = function UniqueList(){
  caru.$clinit_UniqueList();
  caru.SortedList.call(this);
  this.$init_298();
}
;
defineClass(691, 92, {4:1, 1:1}, caru.UniqueList);
_.$init_298 = function $init_298(){
  this.mOriginalOrder = new ju.ArrayList;
}
;
_.add_10 = function add_19(s){
  var index_0, oldSize;
  oldSize = this.size_1();
  index_0 = getClassPrototype(92).add_10.call(this, s);
  if (this.size_1() != oldSize) {
    this.mOriginalOrder.add(s);
    this.mOriginalIndex = null;
    return oldSize;
  }
  if (jsEquals(this.mOriginalIndex, null))
    this.createOriginalIndex();
  return this.mOriginalIndex[index_0];
}
;
_.contains_3 = function contains_10(object){
  return getClassPrototype(92).getIndex_0.call(this, object) != -1;
}
;
_.createOriginalIndex = function createOriginalIndex(){
  var i, t, t$iterator;
  this.mOriginalIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.size_1(), 15, 1);
  i = 0;
  for (t$iterator = this.mOriginalOrder.iterator(); t$iterator.hasNext_0();) {
    t = t$iterator.next_3();
    this.mOriginalIndex[getClassPrototype(92).getIndex_0.call(this, t)] = i++;
  }
}
;
_.get_3 = function get_16(i){
  return this.mOriginalOrder.getAtIndex(i);
}
;
_.getIndex_0 = function getIndex_1(s){
  var index_0;
  index_0 = getClassPrototype(92).getIndex_0.call(this, s);
  if (index_0 == -1)
    return -1;
  if (jsEquals(this.mOriginalIndex, null))
    this.createOriginalIndex();
  return this.mOriginalIndex[index_0];
}
;
_.toArray_0 = function toArray_6(e){
  return this.mOriginalOrder.toArray_0(e);
}
;
caru.serialVersionUID_9 = 538054678;
cggl.Lcom_actelion_research_util_UniqueList_2_classLit = createForClass('com.actelion.research.util', 'UniqueList', 691, cggl.Lcom_actelion_research_util_SortedList_2_classLit);
cggac.$clinit_Animation = function $clinit_Animation(){
  cggac.$clinit_Animation = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.Animation_0 = function Animation_0(){
  cggac.$clinit_Animation();
  cggac.Animation_1.call(this, cggac.get_17());
}
;
cggac.Animation_1 = function Animation_1(scheduler_0){
  Object_0.call(this);
  this.$init_299();
  this.scheduler_0 = scheduler_0;
}
;
defineClass(290, 1, {1:1});
_.$init_299 = function $init_299(){
  this.callback = new cggac.Animation$1(this);
  this.duration = -1;
  this.isRunning = false;
  this.isStarted = false;
  this.runId = -1;
  this.startTime = -1;
  this.wasStarted = false;
}
;
_.cancel_0 = function cancel_1(){
  if (!this.isRunning) {
    return;
  }
  this.wasStarted = this.isStarted;
  this.element = null;
  this.isRunning = false;
  this.isStarted = false;
  if (isNotNull(this.requestHandle)) {
    this.requestHandle.cancel_0();
    this.requestHandle = null;
  }
  this.onCancel();
}
;
_.interpolate = function interpolate(progress){
  return (1 + $wnd.Math.cos(3.141592653589793 + progress * 3.141592653589793)) / 2;
}
;
_.isRunning_0 = function isRunning_0(){
  return this.isRunning;
}
;
_.isRunning_1 = function isRunning_1(curRunId){
  return this.isRunning && this.runId == curRunId;
}
;
_.onCancel = function onCancel_0(){
  if (this.wasStarted) {
    this.onComplete();
  }
}
;
_.onComplete = function onComplete(){
  this.onUpdate(this.interpolate(1));
}
;
_.onStart = function onStart(){
  this.onUpdate(this.interpolate(0));
}
;
_.run_0 = function run_0(duration){
  this.run_2(duration, null);
}
;
_.run_1 = function run_1(duration, startTime, element){
  this.cancel_0();
  this.isRunning = true;
  this.isStarted = false;
  this.duration = duration;
  this.startTime = startTime;
  this.element = element;
  ++this.runId;
  this.callback.execute(cggcc.currentTimeMillis());
}
;
_.run_2 = function run_2(duration, element){
  this.run_1(duration, cggcc.currentTimeMillis(), element);
}
;
_.update = function update_0(curTime){
  cggac.$clinit_Animation();
  var curRunId, finished, progress;
  curRunId = this.runId;
  finished = curTime >= this.startTime + this.duration;
  if (this.isStarted && !finished) {
    progress = (curTime - this.startTime) / this.duration;
    this.onUpdate(this.interpolate(progress));
    return this.isRunning_1(curRunId);
  }
  if (!this.isStarted && curTime >= this.startTime) {
    this.isStarted = true;
    this.onStart();
    if (!this.isRunning_1(curRunId)) {
      return false;
    }
  }
  if (finished) {
    this.isRunning = false;
    this.isStarted = false;
    this.onComplete();
    return false;
  }
  return true;
}
;
_.duration = 0;
_.isRunning = false;
_.isStarted = false;
_.runId = 0;
_.startTime = 0;
_.wasStarted = false;
cggl.Lcom_google_gwt_animation_client_Animation_2_classLit = createForClass('com.google.gwt.animation.client', 'Animation', 290, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationScheduler$AnimationCallback = function $clinit_AnimationScheduler$AnimationCallback(){
  cggac.$clinit_AnimationScheduler$AnimationCallback = emptyMethod;
}
;
cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationCallback_2_classLit = createForInterface('com.google.gwt.animation.client', 'AnimationScheduler/AnimationCallback');
cggac.$clinit_Animation$1 = function $clinit_Animation$1(){
  cggac.$clinit_Animation$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.Animation$1 = function Animation$1(this$0){
  cggac.$clinit_Animation$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_300();
}
;
defineClass(737, 1, {1:1}, cggac.Animation$1);
_.$init_300 = function $init_300(){
}
;
_.execute = function execute(timestamp){
  if (this.this$01.update(timestamp)) {
    this.this$01.requestHandle = this.this$01.scheduler_0.requestAnimationFrame_0(this.this$01.callback, this.this$01.element);
  }
   else {
    this.this$01.requestHandle = null;
  }
}
;
cggl.Lcom_google_gwt_animation_client_Animation$1_2_classLit = createForClass('com.google.gwt.animation.client', 'Animation/1', 737, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationScheduler = function $clinit_AnimationScheduler(){
  cggac.$clinit_AnimationScheduler = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.AnimationScheduler = function AnimationScheduler(){
  cggac.$clinit_AnimationScheduler();
  Object_0.call(this);
  this.$init_301();
}
;
cggac.get_17 = function get_17(){
  cggac.$clinit_AnimationScheduler();
  var supportDetector;
  if (isNull(cggac.instance_2)) {
    supportDetector = castTo(new cggac.AnimationScheduler$AnimationSupportDetector, 291);
    cggac.instance_2 = isNotNull(supportDetector) && supportDetector.isNativelySupported()?new cggac.AnimationSchedulerImplStandard:new cggac.AnimationSchedulerImplTimer;
  }
  return cggac.instance_2;
}
;
defineClass(369, 1, {1:1});
_.$init_301 = function $init_301(){
}
;
cggl.Lcom_google_gwt_animation_client_AnimationScheduler_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationScheduler', 369, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationScheduler$AnimationHandle = function $clinit_AnimationScheduler$AnimationHandle(){
  cggac.$clinit_AnimationScheduler$AnimationHandle = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.AnimationScheduler$AnimationHandle = function AnimationScheduler$AnimationHandle(){
  cggac.$clinit_AnimationScheduler$AnimationHandle();
  Object_0.call(this);
  this.$init_302();
}
;
defineClass(370, 1, {1:1});
_.$init_302 = function $init_302(){
}
;
cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationHandle_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationScheduler/AnimationHandle', 370, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationScheduler$AnimationSupportDetector = function $clinit_AnimationScheduler$AnimationSupportDetector(){
  cggac.$clinit_AnimationScheduler$AnimationSupportDetector = emptyMethod;
  jl.$clinit_Object();
}
;
cggac.AnimationScheduler$AnimationSupportDetector = function AnimationScheduler$AnimationSupportDetector(){
  cggac.$clinit_AnimationScheduler$AnimationSupportDetector();
  Object_0.call(this);
  this.$init_303();
}
;
defineClass(291, 1, {291:1, 1:1}, cggac.AnimationScheduler$AnimationSupportDetector);
_.$init_303 = function $init_303(){
}
;
_.isNativelySupported = function isNativelySupported(){
  return !!$wnd.requestAnimationFrame && !!$wnd.cancelAnimationFrame;
}
;
cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationSupportDetector_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationScheduler/AnimationSupportDetector', 291, cggl.Ljava_lang_Object_2_classLit);
cggac.$clinit_AnimationSchedulerImplStandard = function $clinit_AnimationSchedulerImplStandard(){
  cggac.$clinit_AnimationSchedulerImplStandard = emptyMethod;
  cggac.$clinit_AnimationScheduler();
}
;
cggac.AnimationSchedulerImplStandard = function AnimationSchedulerImplStandard(){
  cggac.$clinit_AnimationSchedulerImplStandard();
  cggac.AnimationScheduler.call(this);
  this.$init_304();
}
;
cggac.cancelImpl = function cancelImpl(holder){
  cggac.$clinit_AnimationSchedulerImplStandard();
  $wnd.cancelAnimationFrame(holder.id);
}
;
cggac.requestImpl = function requestImpl(cb, element){
  var callback = $entry(function(){
    var time = cggcc.currentTimeMillis();
    cb.execute(time);
  }
  );
  var handle = $wnd.requestAnimationFrame(callback, element);
  return {id:handle};
}
;
defineClass(811, 369, {1:1}, cggac.AnimationSchedulerImplStandard);
_.$init_304 = function $init_304(){
}
;
_.requestAnimationFrame_0 = function requestAnimationFrame_0(callback, element){
  var handle;
  handle = cggac.requestImpl(callback, element);
  return new cggac.AnimationSchedulerImplStandard$1(this, handle);
}
;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplStandard_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplStandard', 811, cggl.Lcom_google_gwt_animation_client_AnimationScheduler_2_classLit);
cggac.$clinit_AnimationSchedulerImplStandard$1 = function $clinit_AnimationSchedulerImplStandard$1(){
  cggac.$clinit_AnimationSchedulerImplStandard$1 = emptyMethod;
  cggac.$clinit_AnimationScheduler$AnimationHandle();
}
;
cggac.AnimationSchedulerImplStandard$1 = function AnimationSchedulerImplStandard$1(this$0, val$handle){
  cggac.$clinit_AnimationSchedulerImplStandard$1();
  this.this$01 = this$0;
  this.val$handle2 = val$handle;
  cggac.AnimationScheduler$AnimationHandle.call(this);
  this.$init_305();
}
;
defineClass(812, 370, {1:1}, cggac.AnimationSchedulerImplStandard$1);
_.$init_305 = function $init_305(){
}
;
_.cancel_0 = function cancel_2(){
  cggac.cancelImpl(this.val$handle2);
}
;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplStandard$1_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplStandard/1', 812, cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationHandle_2_classLit);
cggac.$clinit_AnimationSchedulerImplTimer = function $clinit_AnimationSchedulerImplTimer(){
  cggac.$clinit_AnimationSchedulerImplTimer = emptyMethod;
  cggac.$clinit_AnimationScheduler();
}
;
cggac.AnimationSchedulerImplTimer = function AnimationSchedulerImplTimer(){
  cggac.$clinit_AnimationSchedulerImplTimer();
  cggac.AnimationScheduler.call(this);
  this.$init_306();
}
;
defineClass(813, 369, {1:1}, cggac.AnimationSchedulerImplTimer);
_.$init_306 = function $init_306(){
  this.animationRequests = new ju.ArrayList;
  this.timer = new cggac.AnimationSchedulerImplTimer$1(this);
}
;
_.cancelAnimationFrame_0 = function cancelAnimationFrame_0(requestId){
  cggac.$clinit_AnimationSchedulerImplTimer();
  this.animationRequests.remove(requestId);
  if (this.animationRequests.size() == 0) {
    this.timer.cancel_0();
  }
}
;
_.requestAnimationFrame_0 = function requestAnimationFrame_1(callback, element){
  var requestId;
  requestId = new cggac.AnimationSchedulerImplTimer$AnimationHandleImpl(this, callback);
  this.animationRequests.add(requestId);
  if (this.animationRequests.size() == 1) {
    this.timer.schedule(16);
  }
  return requestId;
}
;
_.updateAnimations = function updateAnimations(){
  cggac.$clinit_AnimationSchedulerImplTimer();
  var curAnimations, duration, requestId, requestId$array, requestId$index, requestId$max;
  curAnimations = initUnidimensionalArray(cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplTimer$AnimationHandleImpl_2_classLit, {1354:1, 4:1, 1:1, 7:1}, 305, this.animationRequests.size(), 0, 1);
  curAnimations = castTo(this.animationRequests.toArray_0(curAnimations), 1354);
  duration = new cggcc.Duration;
  for (requestId$array = curAnimations , requestId$index = 0 , requestId$max = requestId$array.length; requestId$index < requestId$max; ++requestId$index) {
    requestId = requestId$array[requestId$index];
    this.animationRequests.remove(requestId);
    requestId.getCallback().execute(duration.getStartMillis());
  }
  if (this.animationRequests.size() > 0) {
    this.timer.schedule($wnd.Math.max(5, 16 - duration.elapsedMillis()));
  }
}
;
cggac.DEFAULT_FRAME_DELAY = 16;
cggac.MIN_FRAME_DELAY = 5;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplTimer_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplTimer', 813, cggl.Lcom_google_gwt_animation_client_AnimationScheduler_2_classLit);
cggac.$clinit_AnimationSchedulerImplTimer$1 = function $clinit_AnimationSchedulerImplTimer$1(){
  cggac.$clinit_AnimationSchedulerImplTimer$1 = emptyMethod;
  cgguc.$clinit_Timer();
}
;
cggac.AnimationSchedulerImplTimer$1 = function AnimationSchedulerImplTimer$1(this$0){
  cggac.$clinit_AnimationSchedulerImplTimer$1();
  this.this$01 = this$0;
  cgguc.Timer.call(this);
  this.$init_307();
}
;
defineClass(814, 273, {1:1}, cggac.AnimationSchedulerImplTimer$1);
_.$init_307 = function $init_307(){
}
;
_.run = function run_3(){
  this.this$01.updateAnimations();
}
;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplTimer$1_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplTimer/1', 814, cggl.Lcom_google_gwt_user_client_Timer_2_classLit);
cggac.$clinit_AnimationSchedulerImplTimer$AnimationHandleImpl = function $clinit_AnimationSchedulerImplTimer$AnimationHandleImpl(){
  cggac.$clinit_AnimationSchedulerImplTimer$AnimationHandleImpl = emptyMethod;
  cggac.$clinit_AnimationScheduler$AnimationHandle();
}
;
cggac.AnimationSchedulerImplTimer$AnimationHandleImpl = function AnimationSchedulerImplTimer$AnimationHandleImpl(this$0, callback){
  cggac.$clinit_AnimationSchedulerImplTimer$AnimationHandleImpl();
  this.this$01 = this$0;
  cggac.AnimationScheduler$AnimationHandle.call(this);
  this.$init_308();
  this.callback = callback;
}
;
defineClass(305, 370, {305:1, 1:1}, cggac.AnimationSchedulerImplTimer$AnimationHandleImpl);
_.$init_308 = function $init_308(){
}
;
_.cancel_0 = function cancel_3(){
  this.this$01.cancelAnimationFrame_0(this);
}
;
_.getCallback = function getCallback(){
  return this.callback;
}
;
cggl.Lcom_google_gwt_animation_client_AnimationSchedulerImplTimer$AnimationHandleImpl_2_classLit = createForClass('com.google.gwt.animation.client', 'AnimationSchedulerImplTimer/AnimationHandleImpl', 305, cggl.Lcom_google_gwt_animation_client_AnimationScheduler$AnimationHandle_2_classLit);
cggcc3.$clinit_Canvas = function $clinit_Canvas(){
  cggcc3.$clinit_Canvas = emptyMethod;
  cggucu.$clinit_FocusWidget();
}
;
cggcc3.Canvas_0 = function Canvas_0(element){
  cggucu.FocusWidget.call(this);
  this.$init_309();
  this.setElement(element);
}
;
cggcc3.createIfSupported = function createIfSupported(){
  cggcc3.$clinit_Canvas();
  var element;
  if (isNull(cggcc3.detector)) {
    cggcc3.detector = castTo(new cggcc3.Canvas$CanvasElementSupportDetectedMaybe, 228);
  }
  if (!cggcc3.detector.isSupportedCompileTime()) {
    return null;
  }
  element = cggdc.$createCanvasElement(cggdc.get_19());
  if (!(cggcc3.detector , cggcc3.isSupportedRunTime(element))) {
    return null;
  }
  return new cggcc3.Canvas_0(element);
}
;
cggcc3.isSupported = function isSupported(element){
  if (isNull(cggcc3.detector)) {
    cggcc3.detector = castTo(new cggcc3.Canvas$CanvasElementSupportDetectedMaybe, 228);
  }
  if (!cggcc3.detector.isSupportedCompileTime()) {
    return false;
  }
  if (!(cggcc3.detector , cggcc3.isSupportedRunTime(element))) {
    return false;
  }
  return true;
}
;
cggcc3.wrap = function wrap(element){
  cggcc3.$clinit_Canvas();
  var canvas;
  if (!cggcc3.isSupported(element)) {
    return null;
  }
  canvas = new cggcc3.Canvas_0(element);
  canvas.onAttach();
  cggucu.detachOnWindowClose(canvas);
  return canvas;
}
;
defineClass(331, 227, {37:1, 31:1, 22:1, 1:1}, cggcc3.Canvas_0);
_.$init_309 = function $init_309(){
}
;
_.getCanvasElement = function getCanvasElement(){
  return cggcc.$cast(this.getElement());
}
;
_.getContext2d_0 = function getContext2d_0(){
  return cggdc.$getContext2d(this.getCanvasElement());
}
;
_.getCoordinateSpaceHeight = function getCoordinateSpaceHeight(){
  return cggdc.$getHeight(this.getCanvasElement());
}
;
_.getCoordinateSpaceWidth = function getCoordinateSpaceWidth(){
  return cggdc.$getWidth_0(this.getCanvasElement());
}
;
_.setCoordinateSpaceHeight = function setCoordinateSpaceHeight(height){
  cggdc.$setHeight(this.getCanvasElement(), height);
}
;
_.setCoordinateSpaceWidth = function setCoordinateSpaceWidth(width_0){
  cggdc.$setWidth(this.getCanvasElement(), width_0);
}
;
cggl.Lcom_google_gwt_canvas_client_Canvas_2_classLit = createForClass('com.google.gwt.canvas.client', 'Canvas', 331, cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit);
cggcc3.$clinit_Canvas$CanvasElementSupportDetector = function $clinit_Canvas$CanvasElementSupportDetector(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetector = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc3.Canvas$CanvasElementSupportDetector = function Canvas$CanvasElementSupportDetector(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetector();
  Object_0.call(this);
  this.$init_310();
}
;
cggcc3.isSupportedRunTime = function isSupportedRunTime(element){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetector();
  return !!element.getContext;
}
;
defineClass(228, 1, {1:1});
_.$init_310 = function $init_310(){
}
;
_.isSupportedCompileTime = function isSupportedCompileTime(){
  return false;
}
;
cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetector_2_classLit = createForClass('com.google.gwt.canvas.client', 'Canvas/CanvasElementSupportDetector', 228, cggl.Ljava_lang_Object_2_classLit);
cggcc3.$clinit_Canvas$CanvasElementSupportDetectedMaybe = function $clinit_Canvas$CanvasElementSupportDetectedMaybe(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetectedMaybe = emptyMethod;
  cggcc3.$clinit_Canvas$CanvasElementSupportDetector();
}
;
cggcc3.Canvas$CanvasElementSupportDetectedMaybe = function Canvas$CanvasElementSupportDetectedMaybe(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetectedMaybe();
  cggcc3.Canvas$CanvasElementSupportDetector.call(this);
  this.$init_311();
}
;
defineClass(332, 228, {228:1, 1:1}, cggcc3.Canvas$CanvasElementSupportDetectedMaybe);
_.$init_311 = function $init_311(){
}
;
_.isSupportedCompileTime = function isSupportedCompileTime_0(){
  return true;
}
;
cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetectedMaybe_2_classLit = createForClass('com.google.gwt.canvas.client', 'Canvas/CanvasElementSupportDetectedMaybe', 332, cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetector_2_classLit);
cggcc3.$clinit_Canvas$CanvasElementSupportDetectedNo = function $clinit_Canvas$CanvasElementSupportDetectedNo(){
  cggcc3.$clinit_Canvas$CanvasElementSupportDetectedNo = emptyMethod;
}
;
defineClass(981, 228, {1:1});
cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetectedNo_2_classLit = createForClass('com.google.gwt.canvas.client', 'Canvas/CanvasElementSupportDetectedNo', 981, cggl.Lcom_google_gwt_canvas_client_Canvas$CanvasElementSupportDetector_2_classLit);
cggcdc.$clinit_Context = function $clinit_Context(){
  cggcdc.$clinit_Context = emptyMethod;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context_2_classLit = createForInterface('com.google.gwt.canvas.dom.client', 'Context');
cggcdc.$clinit_Context2d = function $clinit_Context2d(){
  cggcdc.$clinit_Context2d = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcdc.$arc = function $arc(this$static, x_0, y_0, radius, startAngle, endAngle){
  cggcdc.$clinit_Context2d();
  this$static.arc(x_0, y_0, radius, startAngle, endAngle, false);
}
;
cggcdc.$arc_0 = function $arc_0(this$static, x_0, y_0, radius, startAngle, endAngle, anticlockwise){
  cggcdc.$clinit_Context2d();
  this$static.arc(x_0, y_0, radius, startAngle, endAngle, anticlockwise);
}
;
cggcdc.$beginPath = function $beginPath(this$static){
  cggcdc.$clinit_Context2d();
  this$static.beginPath();
}
;
cggcdc.$clearRect = function $clearRect(this$static, x_0, y_0, w, h){
  cggcdc.$clinit_Context2d();
  this$static.clearRect(x_0, y_0, w, h);
}
;
cggcdc.$closePath = function $closePath(this$static){
  cggcdc.$clinit_Context2d();
  this$static.closePath();
}
;
cggcdc.$drawImage = function $drawImage(this$static, image, dx, dy){
  cggcdc.$clinit_Context2d();
  this$static.drawImage(image, dx, dy);
}
;
cggcdc.$drawImage_0 = function $drawImage_0(this$static, image, sx, sy, sw, sh, dx, dy, dw, dh){
  cggcdc.$clinit_Context2d();
  this$static.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);
}
;
cggcdc.$fill = function $fill(this$static){
  cggcdc.$clinit_Context2d();
  this$static.fill();
}
;
cggcdc.$fillRect = function $fillRect(this$static, x_0, y_0, w, h){
  cggcdc.$clinit_Context2d();
  this$static.fillRect(x_0, y_0, w, h);
}
;
cggcdc.$fillText = function $fillText(this$static, text_0, x_0, y_0){
  cggcdc.$clinit_Context2d();
  if (this$static.fillText) {
    this$static.fillText(text_0, x_0, y_0);
  }
}
;
cggcdc.$getFont = function $getFont(this$static){
  return this$static.font;
}
;
cggcdc.$lineTo = function $lineTo(this$static, x_0, y_0){
  cggcdc.$clinit_Context2d();
  this$static.lineTo(x_0, y_0);
}
;
cggcdc.$measureText = function $measureText(this$static, text_0){
  cggcdc.$clinit_Context2d();
  return this$static.measureText(text_0);
}
;
cggcdc.$moveTo = function $moveTo(this$static, x_0, y_0){
  cggcdc.$clinit_Context2d();
  this$static.moveTo(x_0, y_0);
}
;
cggcdc.$restore = function $restore(this$static){
  cggcdc.$clinit_Context2d();
  this$static.restore();
}
;
cggcdc.$save = function $save(this$static){
  cggcdc.$clinit_Context2d();
  this$static.save();
}
;
cggcdc.$scale = function $scale(this$static, x_0, y_0){
  cggcdc.$clinit_Context2d();
  this$static.scale(x_0, y_0);
}
;
cggcdc.$setFillStyle = function $setFillStyle(this$static, fillStyle){
  cggcdc.$clinit_Context2d();
  if (isScript()) {
    cggcdc.$setFillStyleWeb(this$static, fillStyle);
  }
   else {
    cggcdc.$setFillStyleDev(this$static, fillStyle);
  }
}
;
cggcdc.$setFillStyle_0 = function $setFillStyle_0(this$static, fillStyleColor){
  cggcdc.$clinit_Context2d();
  cggcdc.$setFillStyle(this$static, cggcdc.make_0(fillStyleColor));
}
;
cggcdc.$setFillStyleDev = function $setFillStyleDev(this$static, fillStyle){
  if (fillStyle[0] && typeof fillStyle[0] == 'string') {
    this$static.fillStyle = fillStyle[0];
  }
   else {
    this$static.fillStyle = fillStyle;
  }
}
;
cggcdc.$setFillStyleWeb = function $setFillStyleWeb(this$static, fillStyle){
  this$static.fillStyle = fillStyle;
}
;
cggcdc.$setFont = function $setFont(this$static, f){
  cggcdc.$clinit_Context2d();
  this$static.font = f;
}
;
cggcdc.$setLineCap = function $setLineCap(this$static, lineCap){
  cggcdc.$clinit_Context2d();
  cggcdc.$setLineCap_0(this$static, lineCap.getValue_0());
}
;
cggcdc.$setLineCap_0 = function $setLineCap_0(this$static, lineCap){
  this$static.lineCap = lineCap;
}
;
cggcdc.$setLineJoin = function $setLineJoin(this$static, lineJoin){
  cggcdc.$clinit_Context2d();
  cggcdc.$setLineJoin_0(this$static, lineJoin.getValue_0());
}
;
cggcdc.$setLineJoin_0 = function $setLineJoin_0(this$static, lineJoin){
  this$static.lineJoin = lineJoin;
}
;
cggcdc.$setLineWidth = function $setLineWidth(this$static, lineWidth){
  cggcdc.$clinit_Context2d();
  this$static.lineWidth = lineWidth;
}
;
cggcdc.$setStrokeStyle = function $setStrokeStyle(this$static, strokeStyle){
  cggcdc.$clinit_Context2d();
  if (isScript()) {
    cggcdc.$setStrokeStyleWeb(this$static, strokeStyle);
  }
   else {
    cggcdc.$setStrokeStyleDev(this$static, strokeStyle);
  }
}
;
cggcdc.$setStrokeStyle_0 = function $setStrokeStyle_0(this$static, strokeStyleColor){
  cggcdc.$clinit_Context2d();
  cggcdc.$setStrokeStyle(this$static, cggcdc.make_0(strokeStyleColor));
}
;
cggcdc.$setStrokeStyleDev = function $setStrokeStyleDev(this$static, strokeStyle){
  if (strokeStyle[0] && typeof strokeStyle[0] == 'string') {
    this$static.strokeStyle = strokeStyle[0];
  }
   else {
    this$static.strokeStyle = strokeStyle;
  }
}
;
cggcdc.$setStrokeStyleWeb = function $setStrokeStyleWeb(this$static, strokeStyle){
  this$static.strokeStyle = strokeStyle;
}
;
cggcdc.$setTextAlign = function $setTextAlign(this$static, align_0){
  cggcdc.$clinit_Context2d();
  cggcdc.$setTextAlign_0(this$static, align_0.getValue_0());
}
;
cggcdc.$setTextAlign_0 = function $setTextAlign_0(this$static, align_0){
  this$static.textAlign = align_0;
}
;
cggcdc.$setTextBaseline = function $setTextBaseline(this$static, baseline){
  cggcdc.$clinit_Context2d();
  cggcdc.$setTextBaseline_0(this$static, baseline.getValue_0());
}
;
cggcdc.$setTextBaseline_0 = function $setTextBaseline_0(this$static, baseline){
  this$static.textBaseline = baseline;
}
;
cggcdc.$stroke = function $stroke(this$static){
  cggcdc.$clinit_Context2d();
  this$static.stroke();
}
;
cggcdc.$strokeRect = function $strokeRect(this$static, x_0, y_0, w, h){
  cggcdc.$clinit_Context2d();
  this$static.strokeRect(x_0, y_0, w, h);
}
;
cggcdc.$translate = function $translate(this$static, x_0, y_0){
  this$static.translate(x_0, y_0);
}
;
cggcdc.CONTEXT_ID = '2d';
cggcdc.$clinit_Context2d$Composite = function $clinit_Context2d$Composite(){
  cggcdc.$clinit_Context2d$Composite = emptyMethod;
}
;
defineClass(893, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$Composite_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/Composite', 893, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggcdc.$clinit_Context2d$Composite$Map = function $clinit_Context2d$Composite$Map(){
  cggcdc.$clinit_Context2d$Composite$Map = emptyMethod;
}
;
defineClass(895, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$Composite$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/Composite/Map', 895, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$LineCap = function $clinit_Context2d$LineCap(){
  cggcdc.$clinit_Context2d$LineCap = emptyMethod;
  jl.$clinit_Enum();
  cggcdc.BUTT = new cggcdc.Context2d$LineCap('BUTT', 0, 'butt');
  cggcdc.ROUND = new cggcdc.Context2d$LineCap('ROUND', 1, 'round');
  cggcdc.SQUARE = new cggcdc.Context2d$LineCap('SQUARE', 2, 'square');
}
;
cggcdc.Context2d$LineCap = function Context2d$LineCap(enum$name, enum$ordinal, value_0){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_312();
  this.value_0 = value_0;
}
;
cggcdc.valueOf_5 = function valueOf_5(name_0){
  cggcdc.$clinit_Context2d$LineCap();
  return valueOf((cggcdc.$clinit_Context2d$LineCap$Map() , cggcdc.$MAP_4), name_0);
}
;
cggcdc.values_5 = function values_5(){
  cggcdc.$clinit_Context2d$LineCap();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineCap_2_classLit, 1), {4:1, 1:1, 7:1}, 191, 0, [cggcdc.BUTT, cggcdc.ROUND, cggcdc.SQUARE]);
}
;
defineClass(191, 11, {191:1, 4:1, 10:1, 11:1, 1:1}, cggcdc.Context2d$LineCap);
_.$init_312 = function $init_312(){
}
;
_.getValue_0 = function getValue_0(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineCap_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/LineCap', 191, cggl.Ljava_lang_Enum_2_classLit, cggcdc.values_5, cggcdc.valueOf_5);
cggcdc.$clinit_Context2d$LineCap$Map = function $clinit_Context2d$LineCap$Map(){
  cggcdc.$clinit_Context2d$LineCap$Map = emptyMethod;
  cggcdc.$MAP_4 = createValueOfMap(cggcdc.values_5());
}
;
defineClass(896, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineCap$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/LineCap/Map', 896, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$LineJoin = function $clinit_Context2d$LineJoin(){
  cggcdc.$clinit_Context2d$LineJoin = emptyMethod;
  jl.$clinit_Enum();
  cggcdc.BEVEL = new cggcdc.Context2d$LineJoin('BEVEL', 0, 'bevel');
  cggcdc.MITER = new cggcdc.Context2d$LineJoin('MITER', 1, 'miter');
  cggcdc.ROUND_0 = new cggcdc.Context2d$LineJoin('ROUND', 2, 'round');
}
;
cggcdc.Context2d$LineJoin = function Context2d$LineJoin(enum$name, enum$ordinal, value_0){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_313();
  this.value_0 = value_0;
}
;
cggcdc.valueOf_6 = function valueOf_6(name_0){
  cggcdc.$clinit_Context2d$LineJoin();
  return valueOf((cggcdc.$clinit_Context2d$LineJoin$Map() , cggcdc.$MAP_5), name_0);
}
;
cggcdc.values_6 = function values_6(){
  cggcdc.$clinit_Context2d$LineJoin();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineJoin_2_classLit, 1), {4:1, 1:1, 7:1}, 192, 0, [cggcdc.BEVEL, cggcdc.MITER, cggcdc.ROUND_0]);
}
;
defineClass(192, 11, {192:1, 4:1, 10:1, 11:1, 1:1}, cggcdc.Context2d$LineJoin);
_.$init_313 = function $init_313(){
}
;
_.getValue_0 = function getValue_1(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineJoin_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/LineJoin', 192, cggl.Ljava_lang_Enum_2_classLit, cggcdc.values_6, cggcdc.valueOf_6);
cggcdc.$clinit_Context2d$LineJoin$Map = function $clinit_Context2d$LineJoin$Map(){
  cggcdc.$clinit_Context2d$LineJoin$Map = emptyMethod;
  cggcdc.$MAP_5 = createValueOfMap(cggcdc.values_6());
}
;
defineClass(897, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$LineJoin$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/LineJoin/Map', 897, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$Repetition = function $clinit_Context2d$Repetition(){
  cggcdc.$clinit_Context2d$Repetition = emptyMethod;
}
;
defineClass(894, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$Repetition_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/Repetition', 894, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggcdc.$clinit_Context2d$Repetition$Map = function $clinit_Context2d$Repetition$Map(){
  cggcdc.$clinit_Context2d$Repetition$Map = emptyMethod;
}
;
defineClass(898, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$Repetition$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/Repetition/Map', 898, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$TextAlign = function $clinit_Context2d$TextAlign(){
  cggcdc.$clinit_Context2d$TextAlign = emptyMethod;
  jl.$clinit_Enum();
  cggcdc.CENTER = new cggcdc.Context2d$TextAlign('CENTER', 0, 'center');
  cggcdc.END = new cggcdc.Context2d$TextAlign('END', 1, 'end');
  cggcdc.LEFT = new cggcdc.Context2d$TextAlign('LEFT', 2, 'left');
  cggcdc.RIGHT = new cggcdc.Context2d$TextAlign('RIGHT', 3, 'right');
  cggcdc.START_0 = new cggcdc.Context2d$TextAlign('START', 4, 'start');
}
;
cggcdc.Context2d$TextAlign = function Context2d$TextAlign(enum$name, enum$ordinal, value_0){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_314();
  this.value_0 = value_0;
}
;
cggcdc.valueOf_7 = function valueOf_7(name_0){
  cggcdc.$clinit_Context2d$TextAlign();
  return valueOf((cggcdc.$clinit_Context2d$TextAlign$Map() , cggcdc.$MAP_6), name_0);
}
;
cggcdc.values_7 = function values_7(){
  cggcdc.$clinit_Context2d$TextAlign();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextAlign_2_classLit, 1), {4:1, 1:1, 7:1}, 152, 0, [cggcdc.CENTER, cggcdc.END, cggcdc.LEFT, cggcdc.RIGHT, cggcdc.START_0]);
}
;
defineClass(152, 11, {152:1, 4:1, 10:1, 11:1, 1:1}, cggcdc.Context2d$TextAlign);
_.$init_314 = function $init_314(){
}
;
_.getValue_0 = function getValue_2(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextAlign_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/TextAlign', 152, cggl.Ljava_lang_Enum_2_classLit, cggcdc.values_7, cggcdc.valueOf_7);
cggcdc.$clinit_Context2d$TextAlign$Map = function $clinit_Context2d$TextAlign$Map(){
  cggcdc.$clinit_Context2d$TextAlign$Map = emptyMethod;
  cggcdc.$MAP_6 = createValueOfMap(cggcdc.values_7());
}
;
defineClass(899, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextAlign$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/TextAlign/Map', 899, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_Context2d$TextBaseline = function $clinit_Context2d$TextBaseline(){
  cggcdc.$clinit_Context2d$TextBaseline = emptyMethod;
  jl.$clinit_Enum();
  cggcdc.ALPHABETIC = new cggcdc.Context2d$TextBaseline('ALPHABETIC', 0, 'alphabetic');
  cggcdc.BOTTOM = new cggcdc.Context2d$TextBaseline('BOTTOM', 1, 'bottom');
  cggcdc.HANGING = new cggcdc.Context2d$TextBaseline('HANGING', 2, 'hanging');
  cggcdc.IDEOGRAPHIC = new cggcdc.Context2d$TextBaseline('IDEOGRAPHIC', 3, 'ideographic');
  cggcdc.MIDDLE = new cggcdc.Context2d$TextBaseline('MIDDLE', 4, 'middle');
  cggcdc.TOP = new cggcdc.Context2d$TextBaseline('TOP', 5, 'top');
}
;
cggcdc.Context2d$TextBaseline = function Context2d$TextBaseline(enum$name, enum$ordinal, value_0){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_315();
  this.value_0 = value_0;
}
;
cggcdc.valueOf_8 = function valueOf_8(name_0){
  cggcdc.$clinit_Context2d$TextBaseline();
  return valueOf((cggcdc.$clinit_Context2d$TextBaseline$Map() , cggcdc.$MAP_7), name_0);
}
;
cggcdc.values_8 = function values_8(){
  cggcdc.$clinit_Context2d$TextBaseline();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextBaseline_2_classLit, 1), {4:1, 1:1, 7:1}, 130, 0, [cggcdc.ALPHABETIC, cggcdc.BOTTOM, cggcdc.HANGING, cggcdc.IDEOGRAPHIC, cggcdc.MIDDLE, cggcdc.TOP]);
}
;
defineClass(130, 11, {130:1, 4:1, 10:1, 11:1, 1:1}, cggcdc.Context2d$TextBaseline);
_.$init_315 = function $init_315(){
}
;
_.getValue_0 = function getValue_3(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextBaseline_2_classLit = createForEnum('com.google.gwt.canvas.dom.client', 'Context2d/TextBaseline', 130, cggl.Ljava_lang_Enum_2_classLit, cggcdc.values_8, cggcdc.valueOf_8);
cggcdc.$clinit_Context2d$TextBaseline$Map = function $clinit_Context2d$TextBaseline$Map(){
  cggcdc.$clinit_Context2d$TextBaseline$Map = emptyMethod;
  cggcdc.$MAP_7 = createValueOfMap(cggcdc.values_8());
}
;
defineClass(900, 1, {1:1});
cggl.Lcom_google_gwt_canvas_dom_client_Context2d$TextBaseline$Map_2_classLit = createForClass('com.google.gwt.canvas.dom.client', 'Context2d/TextBaseline/Map', 900, cggl.Ljava_lang_Object_2_classLit);
cggcdc.$clinit_FillStrokeStyle = function $clinit_FillStrokeStyle(){
  cggcdc.$clinit_FillStrokeStyle = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcdc.TYPE_CSSCOLOR = 0;
cggcdc.TYPE_GRADIENT = 1;
cggcdc.TYPE_PATTERN = 2;
cggcdc.$clinit_CssColor = function $clinit_CssColor(){
  cggcdc.$clinit_CssColor = emptyMethod;
  cggcdc.$clinit_FillStrokeStyle();
}
;
cggcdc.make = function make(r, g, b){
  cggcdc.$clinit_CssColor();
  return cggcdc.make_0('rgb(' + r + ',' + g + ',' + b + ')');
}
;
cggcdc.make_0 = function make_0(cssColor){
  cggcdc.$clinit_CssColor();
  return isScript()?cssColor:[cssColor];
}
;
cggcdc.$clinit_TextMetrics = function $clinit_TextMetrics(){
  cggcdc.$clinit_TextMetrics = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcdc.$getWidth = function $getWidth(this$static){
  cggcdc.$clinit_TextMetrics();
  return this$static.width;
}
;
cggcc2.$clinit_Cell$Context = function $clinit_Cell$Context(){
  cggcc2.$clinit_Cell$Context = emptyMethod;
}
;
defineClass(907, 1, {1:1});
cggl.Lcom_google_gwt_cell_client_Cell$Context_2_classLit = createForClass('com.google.gwt.cell.client', 'Cell/Context', 907, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_Callback = function $clinit_Callback(){
  cggcc.$clinit_Callback = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_Callback_2_classLit = createForInterface('com.google.gwt.core.client', 'Callback');
cggcc.$clinit_CodeDownloadException = function $clinit_CodeDownloadException(){
  cggcc.$clinit_CodeDownloadException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
cggcc.CodeDownloadException = function CodeDownloadException(message){
  cggcc.$clinit_CodeDownloadException();
  jl.RuntimeException_1.call(this, message);
  this.$init_316();
  this.reason = (cggcc.$clinit_CodeDownloadException$Reason() , cggcc.TERMINATED);
}
;
defineClass(1326, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, cggcc.CodeDownloadException);
_.$init_316 = function $init_316(){
}
;
cggl.Lcom_google_gwt_core_client_CodeDownloadException_2_classLit = createForClass('com.google.gwt.core.client', 'CodeDownloadException', 1326, cggl.Ljava_lang_RuntimeException_2_classLit);
cggcc.$clinit_CodeDownloadException$Reason = function $clinit_CodeDownloadException$Reason(){
  cggcc.$clinit_CodeDownloadException$Reason = emptyMethod;
  jl.$clinit_Enum();
  cggcc.TERMINATED = new cggcc.CodeDownloadException$Reason('TERMINATED', 0);
}
;
cggcc.CodeDownloadException$Reason = function CodeDownloadException$Reason(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_317();
}
;
cggcc.valueOf_9 = function valueOf_9(name_0){
  cggcc.$clinit_CodeDownloadException$Reason();
  return valueOf((cggcc.$clinit_CodeDownloadException$Reason$Map() , cggcc.$MAP_8), name_0);
}
;
cggcc.values_9 = function values_9(){
  cggcc.$clinit_CodeDownloadException$Reason();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_core_client_CodeDownloadException$Reason_2_classLit, 1), {4:1, 1:1, 7:1}, 300, 0, [cggcc.TERMINATED]);
}
;
defineClass(300, 11, {300:1, 4:1, 10:1, 11:1, 1:1}, cggcc.CodeDownloadException$Reason);
_.$init_317 = function $init_317(){
}
;
cggl.Lcom_google_gwt_core_client_CodeDownloadException$Reason_2_classLit = createForEnum('com.google.gwt.core.client', 'CodeDownloadException/Reason', 300, cggl.Ljava_lang_Enum_2_classLit, cggcc.values_9, cggcc.valueOf_9);
cggcc.$clinit_CodeDownloadException$Reason$Map = function $clinit_CodeDownloadException$Reason$Map(){
  cggcc.$clinit_CodeDownloadException$Reason$Map = emptyMethod;
  cggcc.$MAP_8 = createValueOfMap(cggcc.values_9());
}
;
defineClass(1327, 1, {1:1});
cggl.Lcom_google_gwt_core_client_CodeDownloadException$Reason$Map_2_classLit = createForClass('com.google.gwt.core.client', 'CodeDownloadException/Reason/Map', 1327, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_Duration = function $clinit_Duration(){
  cggcc.$clinit_Duration = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc.Duration = function Duration(){
  cggcc.$clinit_Duration();
  Object_0.call(this);
  this.$init_318();
}
;
cggcc.currentTimeMillis = function currentTimeMillis(){
  cggcc.$clinit_Duration();
  return cggcc.now_1();
}
;
cggcc.uncheckedConversion = function uncheckedConversion(elapsed){
  return elapsed;
}
;
defineClass(376, 1, {1:1}, cggcc.Duration);
_.$init_318 = function $init_318(){
  this.start_0 = cggcc.currentTimeMillis();
}
;
_.elapsedMillis = function elapsedMillis(){
  return cggcc.uncheckedConversion(cggcc.currentTimeMillis() - this.start_0);
}
;
_.getStartMillis = function getStartMillis(){
  return this.start_0;
}
;
_.start_0 = 0;
cggl.Lcom_google_gwt_core_client_Duration_2_classLit = createForClass('com.google.gwt.core.client', 'Duration', 376, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_Scheduler$ScheduledCommand = function $clinit_Scheduler$ScheduledCommand(){
  cggcc.$clinit_Scheduler$ScheduledCommand = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_Scheduler$ScheduledCommand_2_classLit = createForInterface('com.google.gwt.core.client', 'Scheduler/ScheduledCommand');
cggcc.$clinit_GWT$1 = function $clinit_GWT$1(){
  cggcc.$clinit_GWT$1 = emptyMethod;
}
;
defineClass(824, 1, {1:1});
cggl.Lcom_google_gwt_core_client_GWT$1_2_classLit = createForClass('com.google.gwt.core.client', 'GWT/1', 824, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_GWT$UncaughtExceptionHandler = function $clinit_GWT$UncaughtExceptionHandler(){
  cggcc.$clinit_GWT$UncaughtExceptionHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_GWT$UncaughtExceptionHandler_2_classLit = createForInterface('com.google.gwt.core.client', 'GWT/UncaughtExceptionHandler');
cggcc.$clinit_GWT$DefaultUncaughtExceptionHandler = function $clinit_GWT$DefaultUncaughtExceptionHandler(){
  cggcc.$clinit_GWT$DefaultUncaughtExceptionHandler = emptyMethod;
}
;
defineClass(823, 1, {1:1});
cggl.Lcom_google_gwt_core_client_GWT$DefaultUncaughtExceptionHandler_2_classLit = createForClass('com.google.gwt.core.client', 'GWT/DefaultUncaughtExceptionHandler', 823, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_JsArray = function $clinit_JsArray(){
  cggcc.$clinit_JsArray = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcc.$get = function $get(this$static, index_0){
  cggcc.$clinit_JsArray();
  return this$static[index_0];
}
;
cggcc.$length = function $length(this$static){
  cggcc.$clinit_JsArray();
  return this$static.length;
}
;
cggcc.$push = function $push(this$static, value_0){
  cggcc.$clinit_JsArray();
  this$static[this$static.length] = value_0;
}
;
cggcc.$set = function $set(this$static, index_0, value_0){
  cggcc.$clinit_JsArray();
  this$static[index_0] = value_0;
}
;
cggcc.$setLength = function $setLength(this$static, newLength){
  this$static.length = newLength;
}
;
cggcc.$clinit_JsArrayString = function $clinit_JsArrayString(){
  cggcc.$clinit_JsArrayString = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcc.$get_0 = function $get_0(this$static, index_0){
  cggcc.$clinit_JsArrayString();
  return this$static[index_0];
}
;
cggcc.$length_0 = function $length_0(this$static){
  cggcc.$clinit_JsArrayString();
  return this$static.length;
}
;
cggcc.$setLength_0 = function $setLength_0(this$static, newLength){
  this$static.length = newLength;
}
;
cggcc.$clinit_JsDate = function $clinit_JsDate(){
  cggcc.$clinit_JsDate = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcc.now_1 = function now_1(){
  cggcc.$clinit_JsDate();
  return Date.now();
}
;
cggcc.$clinit_RunAsyncCallback = function $clinit_RunAsyncCallback(){
  cggcc.$clinit_RunAsyncCallback = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_RunAsyncCallback_2_classLit = createForInterface('com.google.gwt.core.client', 'RunAsyncCallback');
cggcc.$clinit_Scheduler = function $clinit_Scheduler(){
  cggcc.$clinit_Scheduler = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc.Scheduler_0 = function Scheduler_0(){
  cggcc.$clinit_Scheduler();
  Object_0.call(this);
  this.$init_322();
}
;
cggcc.get_18 = function get_18(){
  cggcc.$clinit_Scheduler();
  return cggcci.$clinit_SchedulerImpl() , cggcci.INSTANCE;
}
;
defineClass(401, 1, {1:1});
_.$init_322 = function $init_322(){
}
;
cggl.Lcom_google_gwt_core_client_Scheduler_2_classLit = createForClass('com.google.gwt.core.client', 'Scheduler', 401, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_Scheduler$RepeatingCommand = function $clinit_Scheduler$RepeatingCommand(){
  cggcc.$clinit_Scheduler$RepeatingCommand = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_Scheduler$RepeatingCommand_2_classLit = createForInterface('com.google.gwt.core.client', 'Scheduler/RepeatingCommand');
cggcc.$clinit_ScriptInjector = function $clinit_ScriptInjector(){
  cggcc.$clinit_ScriptInjector = emptyMethod;
  jl.$clinit_Object();
  cggcc.TOP_WINDOW = cggcc.nativeTopWindow();
}
;
cggcc.attachListeners = function attachListeners(scriptElement, callback, removeTag){
  cggcc.$clinit_ScriptInjector();
  function clearCallbacks(){
    scriptElement.onerror = scriptElement.onreadystatechange = scriptElement.onload = null;
    if (removeTag) {
      cggcc.nativeRemove(scriptElement);
    }
  }

  scriptElement.onload = $entry(function(){
    clearCallbacks();
    if (callback) {
      callback.onSuccess(null);
    }
  }
  );
  scriptElement.onerror = $entry(function(){
    clearCallbacks();
    if (callback) {
      var ex = new cggcc.CodeDownloadException('onerror() called.');
      callback.onFailure(ex);
    }
  }
  );
  scriptElement.onreadystatechange = $entry(function(){
    if (/loaded|complete/.test(scriptElement.readyState)) {
      scriptElement.onload();
    }
  }
  );
}
;
cggcc.fromUrl = function fromUrl(scriptUrl){
  cggcc.$clinit_ScriptInjector();
  return new cggcc.ScriptInjector$FromUrl(scriptUrl);
}
;
cggcc.nativeAttachToHead = function nativeAttachToHead(doc, scriptElement){
  cggcc.$clinit_ScriptInjector();
  doc.head.appendChild(scriptElement);
}
;
cggcc.nativeDefaultWindow = function nativeDefaultWindow(){
  cggcc.$clinit_ScriptInjector();
  return window;
}
;
cggcc.nativeGetDocument = function nativeGetDocument(wnd){
  cggcc.$clinit_ScriptInjector();
  return wnd.document;
}
;
cggcc.nativeMakeScriptElement = function nativeMakeScriptElement(doc){
  cggcc.$clinit_ScriptInjector();
  return doc.createElement('script');
}
;
cggcc.nativePropagateScriptNonceIfPossible = function nativePropagateScriptNonceIfPossible(doc, element){
  cggcc.$clinit_ScriptInjector();
  if (doc.querySelector && doc.querySelector('script[nonce]')) {
    var firstNoncedScript = doc.querySelector('script[nonce]');
    var nonce = firstNoncedScript['nonce'] || firstNoncedScript.getAttribute('nonce');
    element.setAttribute('nonce', nonce);
  }
}
;
cggcc.nativeRemove = function nativeRemove(scriptElement){
  scriptElement.parentNode.removeChild(scriptElement);
}
;
cggcc.nativeSetSrc = function nativeSetSrc(element, url_0){
  cggcc.$clinit_ScriptInjector();
  element.src = url_0;
}
;
cggcc.nativeTopWindow = function nativeTopWindow(){
  return $wnd;
}
;
defineClass(1323, 1, {1:1});
cggl.Lcom_google_gwt_core_client_ScriptInjector_2_classLit = createForClass('com.google.gwt.core.client', 'ScriptInjector', 1323, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_ScriptInjector$FromString = function $clinit_ScriptInjector$FromString(){
  cggcc.$clinit_ScriptInjector$FromString = emptyMethod;
}
;
defineClass(1324, 1, {1:1});
cggl.Lcom_google_gwt_core_client_ScriptInjector$FromString_2_classLit = createForClass('com.google.gwt.core.client', 'ScriptInjector/FromString', 1324, cggl.Ljava_lang_Object_2_classLit);
cggcc.$clinit_ScriptInjector$FromUrl = function $clinit_ScriptInjector$FromUrl(){
  cggcc.$clinit_ScriptInjector$FromUrl = emptyMethod;
  jl.$clinit_Object();
}
;
cggcc.ScriptInjector$FromUrl = function ScriptInjector$FromUrl(scriptUrl){
  cggcc.$clinit_ScriptInjector$FromUrl();
  Object_0.call(this);
  this.$init_323();
  this.scriptUrl = scriptUrl;
}
;
defineClass(763, 1, {1:1}, cggcc.ScriptInjector$FromUrl);
_.$init_323 = function $init_323(){
  this.removeTag = false;
}
;
_.inject = function inject(){
  var doc, scriptElement, wnd;
  wnd = isNull(this.window_0)?cggcc.nativeDefaultWindow():this.window_0;
  doc = cggcc.nativeGetDocument(wnd);
  scriptElement = cggcc.nativeMakeScriptElement(doc);
  if (isNotNull(this.callback) || this.removeTag) {
    cggcc.attachListeners(scriptElement, this.callback, this.removeTag);
  }
  cggcc.nativeSetSrc(scriptElement, this.scriptUrl);
  cggcc.nativePropagateScriptNonceIfPossible(doc, scriptElement);
  cggcc.nativeAttachToHead(doc, scriptElement);
  return scriptElement;
}
;
_.setCallback = function setCallback(callback){
  this.callback = callback;
  return this;
}
;
_.setRemoveTag = function setRemoveTag(removeTag){
  this.removeTag = removeTag;
  return this;
}
;
_.removeTag = false;
cggl.Lcom_google_gwt_core_client_ScriptInjector$FromUrl_2_classLit = createForClass('com.google.gwt.core.client', 'ScriptInjector/FromUrl', 763, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader = function $clinit_AsyncFragmentLoader(){
  cggcci.$clinit_AsyncFragmentLoader = emptyMethod;
  jl.$clinit_Object();
  BROWSER_LOADER = cggcci.makeBrowserLoader(1, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, []));
}
;
function AsyncFragmentLoader(numEntries, initialLoadSequence, loadingStrategy, logger, executor){
  var numEntriesPlusOne;
  Object_0.call(this);
  this.$init_324();
  this.numEntries = numEntries;
  this.initialLoadSequence = initialLoadSequence;
  this.loadingStrategy = loadingStrategy;
  this.logger = logger;
  this.onSuccessExecutor = executor;
  numEntriesPlusOne = numEntries + 1;
  this.allCallbacks = initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 7:1}, 7, numEntriesPlusOne, 3, 2);
  this.requestedExclusives = new cggcci.AsyncFragmentLoader$BoundedIntQueue(numEntriesPlusOne);
  this.isLoaded = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, numEntriesPlusOne, 16, 1);
  this.pendingDownloadErrorHandlers = initUnidimensionalArray(cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LoadTerminatedHandler_2_classLit, {4:1, 1:1, 7:1}, 325, numEntriesPlusOne, 0, 1);
}

cggcci.makeBrowserLoader = function makeBrowserLoader(numFragments, initialLoad){
  if (isClient()) {
    return new AsyncFragmentLoader(numFragments, initialLoad, castTo(castTo(new cggcci.ScriptTagLoadingStrategy, 323), 323), castTo(castTo(new cggcci.AsyncFragmentLoader$StandardLogger, 492), 492), castTo(castTo(new cggcci.OnSuccessExecutor, 220), 220));
  }
   else {
    return null;
  }
}
;
function onLoad_5(fragment){
  cggcci.$clinit_AsyncFragmentLoader();
  BROWSER_LOADER.onLoadImpl_1(fragment);
}

function runAsync(fragment, callback){
  cggcci.$clinit_AsyncFragmentLoader();
  BROWSER_LOADER.runAsyncImpl(fragment, callback);
}

defineClass(493, 1, {1:1}, AsyncFragmentLoader);
_.$init_324 = function $init_324(){
  this.fragmentLoading = -1;
  this.prefetching = false;
  this.prefetchQueue = null;
  this.remainingInitialFragments = null;
}
;
_.anyPrefetchesRequested = function anyPrefetchesRequested(){
  return this.prefetching && isNotNull(this.prefetchQueue) && this.prefetchQueue.size_1() > 0;
}
;
_.clearRequestsAlreadyLoaded = function clearRequestsAlreadyLoaded(){
  var offset;
  while (this.requestedExclusives.size_1() > 0 && this.isLoaded[this.requestedExclusives.peek()]) {
    offset = this.requestedExclusives.remove_3();
    if (offset < this.pendingDownloadErrorHandlers.length) {
      setCheck(this.pendingDownloadErrorHandlers, offset, null);
    }
  }
  if (isNotNull(this.prefetchQueue)) {
    while (this.prefetchQueue.size_1() > 0 && this.isLoaded[this.prefetchQueue.peek()]) {
      this.prefetchQueue.remove_3();
    }
  }
}
;
_.downloadGroup = function downloadGroup(fragment){
  return fragment == this.leftoversFragment()?'leftoversDownload':cggcci.downloadGroupForExclusive(fragment);
}
;
_.executeOnSuccess0 = function executeOnSuccess0(callback){
  callback.onSuccess_0();
}
;
_.fragmentHasLoaded = function fragmentHasLoaded(fragment){
  this.logFragmentLoaded(fragment);
  if (fragment < this.pendingDownloadErrorHandlers.length) {
    setCheck(this.pendingDownloadErrorHandlers, fragment, null);
  }
  if (this.isInitial(fragment) && isNotNull(this.remainingInitialFragments)) {
    this.remainingInitialFragments.remove_3();
  }
  this.fragmentLoading = -1;
  this.isLoaded[fragment] = true;
  this.startLoadingNextFragment();
}
;
_.haveInitialFragmentsLoaded = function haveInitialFragmentsLoaded(){
  return isNotNull(this.remainingInitialFragments) && this.remainingInitialFragments.size_1() == 0;
}
;
_.initializeRemainingInitialFragments = function initializeRemainingInitialFragments(){
  var sp, sp$array, sp$index, sp$max;
  if (isNull(this.remainingInitialFragments)) {
    this.remainingInitialFragments = new cggcci.AsyncFragmentLoader$BoundedIntQueue(this.initialLoadSequence.length + 1);
    for (sp$array = this.initialLoadSequence , sp$index = 0 , sp$max = sp$array.length; sp$index < sp$max; ++sp$index) {
      sp = sp$array[sp$index];
      this.remainingInitialFragments.add_4(sp);
    }
    this.remainingInitialFragments.add_4(this.leftoversFragment());
  }
}
;
_.inject_0 = function inject_0(splitPoint, loadErrorHandler){
  setCheck(this.pendingDownloadErrorHandlers, splitPoint, loadErrorHandler);
  if (!this.isInitial(splitPoint)) {
    this.requestedExclusives.add_4(splitPoint);
  }
  this.startLoadingNextFragment();
}
;
_.isEmpty_1 = function isEmpty_3(array){
  var i;
  for (i = 0; i < array.length; i++) {
    if (jsNotEquals(array[i], null)) {
      return false;
    }
  }
  return true;
}
;
_.isInitial = function isInitial(splitPoint){
  var sp, sp$array, sp$index, sp$max;
  if (splitPoint == this.leftoversFragment()) {
    return true;
  }
  for (sp$array = this.initialLoadSequence , sp$index = 0 , sp$max = sp$array.length; sp$index < sp$max; ++sp$index) {
    sp = sp$array[sp$index];
    if (sp == splitPoint) {
      return true;
    }
  }
  return false;
}
;
_.isLoading = function isLoading(splitPoint){
  return isNotNull(this.pendingDownloadErrorHandlers[splitPoint]);
}
;
_.leftoversFragment = function leftoversFragment(){
  return this.numEntries;
}
;
_.logDownloadStart = function logDownloadStart(fragment){
  this.logEventProgress_0(this.downloadGroup(fragment), 'begin', fragment, -1);
}
;
_.logEventProgress = function logEventProgress(eventGroup, type_0){
  this.logEventProgress_0(eventGroup, type_0, -1, -1);
}
;
_.logEventProgress_0 = function logEventProgress_0(eventGroup, type_0, fragment, size_0){
  this.logger.logEventProgress_1(eventGroup, type_0, fragment, size_0);
}
;
_.logFragmentLoaded = function logFragmentLoaded(fragment){
  var logGroup;
  logGroup = this.downloadGroup(fragment);
  this.logEventProgress_0(logGroup, 'end', fragment, -1);
}
;
_.onLoadImpl_1 = function onLoadImpl_1(fragment){
  var callback, callback$array, callback$index, callback$max, callbacks, t;
  this.fragmentHasLoaded(fragment);
  callbacks = this.allCallbacks[fragment];
  if (jsNotEquals(callbacks, null)) {
    this.logEventProgress('runCallbacks' + fragment, 'begin');
    setCheck(this.allCallbacks, fragment, null);
    for (callback$array = callbacks , callback$index = 0 , callback$max = callback$array.length; callback$index < callback$max; ++callback$index) {
      callback = callback$array[callback$index];
      try {
        castTo(callback, 489).onSuccess_0();
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 20)) {
          t = $e0;
          reportUncaughtException(t);
        }
         else 
          throw toJs($e0);
      }
    }
    this.logEventProgress('runCallbacks' + fragment, 'end');
  }
}
;
_.runAsyncImpl = function runAsyncImpl(fragment, callback){
  var callbacks;
  if (this.isLoaded[fragment]) {
    this.onSuccessExecutor.execute_2(this, callback);
    return;
  }
  callbacks = this.allCallbacks[fragment];
  if (jsEquals(callbacks, null)) {
    callbacks = setCheck(this.allCallbacks, fragment, initUnidimensionalArray(cggl.Lcom_google_gwt_core_client_RunAsyncCallback_2_classLit, {4:1, 1:1, 7:1}, 489, 0, 0, 1));
  }
  setCheck(callbacks, callbacks.length, callback);
  if (!this.isLoading(fragment)) {
    this.inject_0(fragment, new cggcci.AsyncFragmentLoader$1(this, fragment));
  }
}
;
_.startLoadingFragment = function startLoadingFragment(fragment){
  this.fragmentLoading = fragment;
  this.logDownloadStart(fragment);
  this.loadingStrategy.startLoadingFragment_0(fragment, new cggcci.AsyncFragmentLoader$ResetAfterDownloadFailure(this, fragment));
}
;
_.startLoadingNextFragment = function startLoadingNextFragment(){
  if (this.fragmentLoading >= 0) {
    return;
  }
  this.initializeRemainingInitialFragments();
  this.clearRequestsAlreadyLoaded();
  if (this.isEmpty_1(this.pendingDownloadErrorHandlers) && !this.anyPrefetchesRequested()) {
    return;
  }
  if (this.remainingInitialFragments.size_1() > 0) {
    this.startLoadingFragment(this.remainingInitialFragments.peek());
    return;
  }
  if (this.requestedExclusives.size_1() > 0) {
    this.startLoadingFragment(this.requestedExclusives.remove_3());
    return;
  }
  if (this.anyPrefetchesRequested()) {
    this.startLoadingFragment(this.prefetchQueue.remove_3());
    return;
  }
}
;
_.fragmentLoading = 0;
_.numEntries = 0;
_.prefetching = false;
var BROWSER_LOADER;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader', 493, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$LoadTerminatedHandler = function $clinit_AsyncFragmentLoader$LoadTerminatedHandler(){
  cggcci.$clinit_AsyncFragmentLoader$LoadTerminatedHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LoadTerminatedHandler_2_classLit = createForInterface('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/LoadTerminatedHandler');
cggcci.$clinit_AsyncFragmentLoader$1 = function $clinit_AsyncFragmentLoader$1(){
  cggcci.$clinit_AsyncFragmentLoader$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.AsyncFragmentLoader$1 = function AsyncFragmentLoader$1(this$0, val$fragment){
  cggcci.$clinit_AsyncFragmentLoader$1();
  this.this$01 = this$0;
  this.val$fragment2 = val$fragment;
  Object_0.call(this);
  this.$init_325();
}
;
defineClass(494, 1, {325:1, 1:1}, cggcci.AsyncFragmentLoader$1);
_.$init_325 = function $init_325(){
}
;
_.loadTerminated = function loadTerminated(reason){
  var callback, callback$array, callback$index, callback$max, callbacks;
  callbacks = this.this$01.allCallbacks[this.val$fragment2];
  if (jsNotEquals(callbacks, null)) {
    setCheck(this.this$01.allCallbacks, this.val$fragment2, null);
    for (callback$array = callbacks , callback$index = 0 , callback$max = callback$array.length; callback$index < callback$max; ++callback$index) {
      callback = callback$array[callback$index];
      castTo(callback, 489).onFailure_0(reason);
    }
  }
}
;
_.val$fragment2 = 0;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$1_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/1', 494, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$BoundedIntQueue = function $clinit_AsyncFragmentLoader$BoundedIntQueue(){
  cggcci.$clinit_AsyncFragmentLoader$BoundedIntQueue = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.AsyncFragmentLoader$BoundedIntQueue = function AsyncFragmentLoader$BoundedIntQueue(maxPuts){
  cggcci.$clinit_AsyncFragmentLoader$BoundedIntQueue();
  Object_0.call(this);
  this.$init_326();
  this.array = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, maxPuts, 15, 1);
}
;
defineClass(324, 1, {1:1}, cggcci.AsyncFragmentLoader$BoundedIntQueue);
_.$init_326 = function $init_326(){
  this.read = 0;
  this.write_0 = 0;
}
;
_.add_4 = function add_20(x_0){
  this.array[this.write_0++] = x_0;
}
;
_.clear_0 = function clear_13(){
  this.read = 0;
  this.write_0 = 0;
}
;
_.peek = function peek(){
  return this.array[this.read];
}
;
_.remove_3 = function remove_8(){
  return this.array[this.read++];
}
;
_.size_1 = function size_7(){
  return this.write_0 - this.read;
}
;
_.read = 0;
_.write_0 = 0;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$BoundedIntQueue_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/BoundedIntQueue', 324, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$HttpDownloadFailure = function $clinit_AsyncFragmentLoader$HttpDownloadFailure(){
  cggcci.$clinit_AsyncFragmentLoader$HttpDownloadFailure = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
cggcci.AsyncFragmentLoader$HttpDownloadFailure = function AsyncFragmentLoader$HttpDownloadFailure(url_0, statusCode, statusText){
  cggcci.$clinit_AsyncFragmentLoader$HttpDownloadFailure();
  jl.RuntimeException_1.call(this, 'Download of ' + url_0 + ' failed with status ' + statusCode + '(' + statusText + ')');
  this.$init_327();
  this.statusCode = statusCode;
}
;
defineClass(496, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, cggcci.AsyncFragmentLoader$HttpDownloadFailure);
_.$init_327 = function $init_327(){
}
;
_.statusCode = 0;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$HttpDownloadFailure_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/HttpDownloadFailure', 496, cggl.Ljava_lang_RuntimeException_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$HttpInstallFailure = function $clinit_AsyncFragmentLoader$HttpInstallFailure(){
  cggcci.$clinit_AsyncFragmentLoader$HttpInstallFailure = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
cggcci.AsyncFragmentLoader$HttpInstallFailure = function AsyncFragmentLoader$HttpInstallFailure(url_0, text_0, rootCause){
  cggcci.$clinit_AsyncFragmentLoader$HttpInstallFailure();
  jl.RuntimeException_2.call(this, 'Install of ' + url_0 + ' failed with text ' + text_0, rootCause);
  this.$init_328();
}
;
defineClass(497, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, cggcci.AsyncFragmentLoader$HttpInstallFailure);
_.$init_328 = function $init_328(){
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$HttpInstallFailure_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/HttpInstallFailure', 497, cggl.Ljava_lang_RuntimeException_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$LoadingStrategy = function $clinit_AsyncFragmentLoader$LoadingStrategy(){
  cggcci.$clinit_AsyncFragmentLoader$LoadingStrategy = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LoadingStrategy_2_classLit = createForInterface('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/LoadingStrategy');
cggcci.$clinit_AsyncFragmentLoader$Logger = function $clinit_AsyncFragmentLoader$Logger(){
  cggcci.$clinit_AsyncFragmentLoader$Logger = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$Logger_2_classLit = createForInterface('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/Logger');
cggcci.$clinit_AsyncFragmentLoader$LwmLabels = function $clinit_AsyncFragmentLoader$LwmLabels(){
  cggcci.$clinit_AsyncFragmentLoader$LwmLabels = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.downloadGroupForExclusive = function downloadGroupForExclusive(splitPoint){
  cggcci.$clinit_AsyncFragmentLoader$LwmLabels();
  return 'download' + splitPoint;
}
;
defineClass(921, 1, {1:1});
cggcci.BEGIN = 'begin';
cggcci.END_0 = 'end';
cggcci.LEFTOVERS_DOWNLOAD = 'leftoversDownload';
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LwmLabels_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/LwmLabels', 921, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$ResetAfterDownloadFailure = function $clinit_AsyncFragmentLoader$ResetAfterDownloadFailure(){
  cggcci.$clinit_AsyncFragmentLoader$ResetAfterDownloadFailure = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.AsyncFragmentLoader$ResetAfterDownloadFailure = function AsyncFragmentLoader$ResetAfterDownloadFailure(this$0, myFragment){
  cggcci.$clinit_AsyncFragmentLoader$ResetAfterDownloadFailure();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_329();
  this.fragment_0 = myFragment;
}
;
defineClass(495, 1, {325:1, 1:1}, cggcci.AsyncFragmentLoader$ResetAfterDownloadFailure);
_.$init_329 = function $init_329(){
}
;
_.loadTerminated = function loadTerminated_0(reason){
  var e, handler, handler$array, handler$index, handler$max, handlersToRun, lastException;
  if (this.this$01.fragmentLoading != this.fragment_0) {
    return;
  }
  handlersToRun = this.this$01.pendingDownloadErrorHandlers;
  this.this$01.pendingDownloadErrorHandlers = initUnidimensionalArray(cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$LoadTerminatedHandler_2_classLit, {4:1, 1:1, 7:1}, 325, this.this$01.numEntries + 1, 0, 1);
  this.this$01.requestedExclusives.clear_0();
  this.this$01.fragmentLoading = -1;
  lastException = null;
  for (handler$array = handlersToRun , handler$index = 0 , handler$max = handler$array.length; handler$index < handler$max; ++handler$index) {
    handler = handler$array[handler$index];
    if (isNotNull(handler)) {
      try {
        handler.loadTerminated(reason);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 23)) {
          e = $e0;
          lastException = e;
        }
         else 
          throw toJs($e0);
      }
    }
  }
  if (isNotNull(lastException)) {
    throw toJs(lastException);
  }
}
;
_.fragment_0 = 0;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$ResetAfterDownloadFailure_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/ResetAfterDownloadFailure', 495, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_AsyncFragmentLoader$StandardLogger = function $clinit_AsyncFragmentLoader$StandardLogger(){
  cggcci.$clinit_AsyncFragmentLoader$StandardLogger = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.AsyncFragmentLoader$StandardLogger = function AsyncFragmentLoader$StandardLogger(){
  cggcci.$clinit_AsyncFragmentLoader$StandardLogger();
  Object_0.call(this);
  this.$init_330();
}
;
cggcci.stats = function stats(data_0){
  return $stats(data_0);
}
;
defineClass(491, 1, {492:1, 1:1}, cggcci.AsyncFragmentLoader$StandardLogger);
_.$init_330 = function $init_330(){
}
;
_.createStatsEvent = function createStatsEvent(eventGroup, type_0, fragment, size_0){
  var evt = {moduleName:getModuleName(), sessionId:$sessionId, subSystem:'runAsync', evtGroup:eventGroup, millis:(new Date).getTime(), type:type_0};
  if (fragment >= 0) {
    evt.fragment = fragment;
  }
  if (size_0 >= 0) {
    evt.size = size_0;
  }
  return evt;
}
;
_.isStatsAvailable = function isStatsAvailable(){
  return !!$stats;
}
;
_.logEventProgress_1 = function logEventProgress_1(eventGroup, type_0, fragment, size_0){
  var toss;
  toss = this.isStatsAvailable() && cggcci.stats(this.createStatsEvent(eventGroup, type_0, fragment, size_0));
}
;
cggl.Lcom_google_gwt_core_client_impl_AsyncFragmentLoader$StandardLogger_2_classLit = createForClass('com.google.gwt.core.client.impl', 'AsyncFragmentLoader/StandardLogger', 491, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_Impl = function $clinit_Impl(){
  cggcci.$clinit_Impl = emptyMethod;
  jl.$clinit_Object();
  {
    if (isScript() && isNotNull((cggcci.$clinit_StackTraceCreator() , cggcci.collector_1))) {
    }
  }
  watchdogEntryDepthTimerId = -1;
}
;
cggcci.apply_0 = function apply_0(jsFunction, thisObj, args){
  if (isScript()) {
    return jsFunction.apply(thisObj, args);
  }
   else {
    var __0 = jsFunction.apply(thisObj, args);
    if (__0 != null) {
      __0 = {val:__0};
    }
    return __0;
  }
}
;
cggcci.enter = function enter(){
  var now_0;
  if (isScript() && entryDepth != 0) {
    now_0 = cggcc.currentTimeMillis();
    if (now_0 - watchdogEntryDepthLastScheduled > 2000) {
      watchdogEntryDepthLastScheduled = now_0;
      watchdogEntryDepthTimerId = cggcci.watchdogEntryDepthSchedule();
    }
  }
  if (entryDepth++ == 0) {
    (cggcci.$clinit_SchedulerImpl() , cggcci.INSTANCE).flushEntryCommands();
    return true;
  }
  return false;
}
;
function entry_0(jsFunction){
  cggcci.$clinit_Impl();
  return function(){
    if (isScript()) {
      return cggcci.entry0(jsFunction, this, arguments);
    }
     else {
      var __0 = cggcci.entry0(jsFunction, this, arguments);
      if (__0 != null) {
        __0 = __0.val;
      }
      return __0;
    }
  }
  ;
}

cggcci.entry0 = function entry0(jsFunction, thisObj, args){
  var initialEntry, t;
  initialEntry = cggcci.enter();
  try {
    if (isNotNull(getUncaughtExceptionHandler())) {
      try {
        return cggcci.apply_0(jsFunction, thisObj, args);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 20)) {
          t = $e0;
          reportUncaughtException_0(t);
          return cggcci.undefined_0();
        }
         else 
          throw toJs($e0);
      }
    }
     else {
      return cggcci.apply_0(jsFunction, thisObj, args);
    }
  }
   finally {
    cggcci.exit(initialEntry);
  }
}
;
cggcci.exit = function exit(initialEntry){
  if (initialEntry) {
    (cggcci.$clinit_SchedulerImpl() , cggcci.INSTANCE).flushFinallyCommands();
  }
  entryDepth--;
  if (initialEntry) {
    if (isScript() && watchdogEntryDepthTimerId != -1) {
      cggcci.watchdogEntryDepthCancel(watchdogEntryDepthTimerId);
      watchdogEntryDepthTimerId = -1;
    }
  }
}
;
function getModuleName_0(){
  cggcci.$clinit_Impl();
  return $moduleName;
}

function getNameOf(jsniIdent){
  cggcci.$clinit_Impl();
  throw toJs(new jl.UnsupportedOperationException_0('Impl.getNameOf() is unimplemented in Development Mode'));
}

function registerEntry(){
  cggcci.$clinit_Impl();
  if (isScript()) {
    return entry_0;
  }
   else {
    return $entry = entry_0;
  }
}

cggcci.reportToBrowser = function reportToBrowser(e){
  $wnd.setTimeout(function(){
    throw e;
  }
  , 0);
}
;
cggcci.reportToBrowser_0 = function reportToBrowser_0(e){
  cggcci.reportToBrowser(instanceOf(e, 195)?castTo(e, 195).getThrown():e);
}
;
function reportUncaughtException_0(e){
  cggcci.$clinit_Impl();
  cggcci.reportUncaughtException_1(e, true);
}

cggcci.reportUncaughtException_1 = function reportUncaughtException_1(e, reportSwallowedExceptionToBrowser){
  var handler;
  if (isNotNull(uncaughtExceptionHandlerForTest)) {
    uncaughtExceptionHandlerForTest.onUncaughtException(e);
  }
  handler = getUncaughtExceptionHandler();
  if (isNotNull(handler)) {
    if (jsEquals(handler, uncaughtExceptionHandlerForTest)) {
      return;
    }
    handler.onUncaughtException(e);
    return;
  }
  if (isClient() && reportSwallowedExceptionToBrowser) {
    cggcci.reportToBrowser_0(e);
  }
   else {
    (jl.$clinit_System() , jl.err).print_1('Uncaught exception ');
    e.printStackTrace_0((jl.$clinit_System() , jl.err));
  }
}
;
cggcci.undefined_0 = function undefined_0(){
  return;
}
;
cggcci.watchdogEntryDepthCancel = function watchdogEntryDepthCancel(timerId){
  $wnd.clearTimeout(timerId);
}
;
cggcci.watchdogEntryDepthRun = function watchdogEntryDepthRun(){
  if (isScript() && entryDepth != 0) {
    entryDepth = 0;
  }
  watchdogEntryDepthTimerId = -1;
}
;
cggcci.watchdogEntryDepthSchedule = function watchdogEntryDepthSchedule(){
  return $wnd.setTimeout(cggcci.watchdogEntryDepthRun, 10);
}
;
defineClass(922, 1, {1:1});
var WATCHDOG_ENTRY_DEPTH_CHECK_INTERVAL_MS = 2000;
var entryDepth = 0;
var uncaughtExceptionHandlerForTest;
var watchdogEntryDepthLastScheduled = 0;
var watchdogEntryDepthTimerId = 0;
cggl.Lcom_google_gwt_core_client_impl_Impl_2_classLit = createForClass('com.google.gwt.core.client.impl', 'Impl', 922, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_LoadingStrategyBase = function $clinit_LoadingStrategyBase(){
  cggcci.$clinit_LoadingStrategyBase = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.LoadingStrategyBase = function LoadingStrategyBase(downloadStrategy){
  cggcci.$clinit_LoadingStrategyBase();
  Object_0.call(this);
  this.$init_331();
  this.downloadStrategy = downloadStrategy;
}
;
cggcci.gwtInstallCode = function gwtInstallCode(text_0){
  cggcci.$clinit_LoadingStrategyBase();
  __gwtInstallCode(text_0);
}
;
cggcci.gwtStartLoadingFragment = function gwtStartLoadingFragment(fragment, loadErrorHandler){
  function loadFailed(e){
    loadErrorHandler.loadTerminated(e);
  }

  return __gwtStartLoadingFragment(fragment, $entry(loadFailed));
}
;
defineClass(629, 1, {323:1, 1:1});
_.$init_331 = function $init_331(){
  this.manualRetryNumbers = cggcci.create_2();
}
;
_.getManualRetryNum = function getManualRetryNum(fragment){
  var ser;
  ser = cggcci.$get_1(this.manualRetryNumbers, fragment);
  cggcci.$put(this.manualRetryNumbers, fragment, ser + 1);
  return ser;
}
;
_.getMaxAutoRetryCount = function getMaxAutoRetryCount(){
  return cggcci.MAX_AUTO_RETRY_COUNT;
}
;
_.startLoadingFragment_0 = function startLoadingFragment_0(fragment, loadErrorHandler){
  var connector, manualRetry, request, url_0;
  url_0 = cggcci.gwtStartLoadingFragment(fragment, loadErrorHandler);
  if (jsEquals(url_0, null)) {
    return;
  }
  manualRetry = this.getManualRetryNum(fragment);
  if (manualRetry > 0) {
    connector = jl.contains_Ljava_lang_CharSequence__Z__devirtual$(url_0, '?')?38:63;
    url_0 += charToString(connector) + 'manualRetry=' + manualRetry;
  }
  request = new cggcci.LoadingStrategyBase$RequestData(url_0, loadErrorHandler, fragment, this.downloadStrategy, this.getMaxAutoRetryCount());
  request.tryDownload_0();
}
;
cggcci.MAX_AUTO_RETRY_COUNT = 3;
cggl.Lcom_google_gwt_core_client_impl_LoadingStrategyBase_2_classLit = createForClass('com.google.gwt.core.client.impl', 'LoadingStrategyBase', 629, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_LoadingStrategyBase$DownloadStrategy = function $clinit_LoadingStrategyBase$DownloadStrategy(){
  cggcci.$clinit_LoadingStrategyBase$DownloadStrategy = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_impl_LoadingStrategyBase$DownloadStrategy_2_classLit = createForInterface('com.google.gwt.core.client.impl', 'LoadingStrategyBase/DownloadStrategy');
cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker = function $clinit_LoadingStrategyBase$FragmentReloadTracker(){
  cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcci.$get_1 = function $get_1(this$static, x_0){
  cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker();
  return this$static[x_0]?this$static[x_0]:0;
}
;
cggcci.$put = function $put(this$static, x_0, y_0){
  cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker();
  this$static[x_0] = y_0;
}
;
cggcci.create_2 = function create_2(){
  cggcci.$clinit_LoadingStrategyBase$FragmentReloadTracker();
  return cggcc.createArray();
}
;
cggcci.$clinit_LoadingStrategyBase$RequestData = function $clinit_LoadingStrategyBase$RequestData(){
  cggcci.$clinit_LoadingStrategyBase$RequestData = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.LoadingStrategyBase$RequestData = function LoadingStrategyBase$RequestData(url_0, errorHandler, fragment, downloadStrategy, maxRetryCount){
  cggcci.$clinit_LoadingStrategyBase$RequestData();
  Object_0.call(this);
  this.$init_332();
  this.url_0 = url_0;
  this.originalUrl = url_0;
  this.errorHandler = errorHandler;
  this.maxRetryCount = maxRetryCount;
  this.retryCount = 0;
  this.fragment_0 = fragment;
  this.downloadStrategy = downloadStrategy;
}
;
defineClass(632, 1, {1:1}, cggcci.LoadingStrategyBase$RequestData);
_.$init_332 = function $init_332(){
  this.errorHandler = null;
}
;
_.getFragment_2 = function getFragment_3(){
  return this.fragment_0;
}
;
_.getUrl = function getUrl(){
  return this.url_0;
}
;
_.onLoadError = function onLoadError(e, mayRetry){
  var connector;
  if (mayRetry) {
    this.retryCount++;
    if (this.retryCount <= this.maxRetryCount) {
      connector = jl.contains_Ljava_lang_CharSequence__Z__devirtual$(this.originalUrl, '?')?38:63;
      this.url_0 = this.originalUrl + charToString(connector) + 'autoRetry=' + this.retryCount;
      this.downloadStrategy.tryDownload(this);
      return;
    }
  }
  this.errorHandler.loadTerminated(e);
}
;
_.tryDownload_0 = function tryDownload(){
  this.downloadStrategy.tryDownload(this);
}
;
_.tryInstall = function tryInstall(code_0){
  var e, textIntro;
  try {
    cggcci.gwtInstallCode(code_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 23)) {
      e = $e0;
      textIntro = code_0;
      if (jsNotEquals(textIntro, null) && jl.length__I__devirtual$_0(textIntro) > 200) {
        textIntro = jl.substring_II_Ljava_lang_String___devirtual$(textIntro, 0, 200) + '...';
      }
      this.onLoadError(new cggcci.AsyncFragmentLoader$HttpInstallFailure(this.url_0, textIntro, e), false);
    }
     else 
      throw toJs($e0);
  }
}
;
_.fragment_0 = 0;
_.maxRetryCount = 0;
_.retryCount = 0;
cggcci.MAX_LOG_LENGTH = 200;
cggl.Lcom_google_gwt_core_client_impl_LoadingStrategyBase$RequestData_2_classLit = createForClass('com.google.gwt.core.client.impl', 'LoadingStrategyBase/RequestData', 632, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_OnSuccessExecutor = function $clinit_OnSuccessExecutor(){
  cggcci.$clinit_OnSuccessExecutor = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.OnSuccessExecutor = function OnSuccessExecutor(){
  cggcci.$clinit_OnSuccessExecutor();
  Object_0.call(this);
  this.$init_333();
}
;
defineClass(220, 1, {220:1, 1:1}, cggcci.OnSuccessExecutor);
_.$init_333 = function $init_333(){
}
;
_.execute_2 = function execute_0(fragmentLoader, callback){
  cggcc.get_18().scheduleDeferred(new cggcci.OnSuccessExecutor$1(this, fragmentLoader, callback));
}
;
cggl.Lcom_google_gwt_core_client_impl_OnSuccessExecutor_2_classLit = createForClass('com.google.gwt.core.client.impl', 'OnSuccessExecutor', 220, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_OnSuccessExecutor$1 = function $clinit_OnSuccessExecutor$1(){
  cggcci.$clinit_OnSuccessExecutor$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.OnSuccessExecutor$1 = function OnSuccessExecutor$1(this$0, val$fragmentLoader, val$callback){
  cggcci.$clinit_OnSuccessExecutor$1();
  this.this$01 = this$0;
  this.val$fragmentLoader2 = val$fragmentLoader;
  this.val$callback3 = val$callback;
  Object_0.call(this);
  this.$init_334();
}
;
defineClass(633, 1, {1:1}, cggcci.OnSuccessExecutor$1);
_.$init_334 = function $init_334(){
}
;
_.execute_1 = function execute_1(){
  this.val$fragmentLoader2.executeOnSuccess0(this.val$callback3);
}
;
cggl.Lcom_google_gwt_core_client_impl_OnSuccessExecutor$1_2_classLit = createForClass('com.google.gwt.core.client.impl', 'OnSuccessExecutor/1', 633, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_SchedulerImpl = function $clinit_SchedulerImpl(){
  cggcci.$clinit_SchedulerImpl = emptyMethod;
  cggcc.$clinit_Scheduler();
  cggcci.INSTANCE = castTo(new cggcci.SchedulerImpl, 287);
}
;
cggcci.SchedulerImpl = function SchedulerImpl(){
  cggcc.Scheduler_0.call(this);
  this.$init_335();
}
;
cggcci.createQueue = function createQueue(){
  return cggcc.$cast(cggcc.createArray());
}
;
cggcci.execute_2 = function execute_2(cmd){
  return cmd.execute_0();
}
;
cggcci.push_0 = function push_0(queue, task){
  if (isNull(queue)) {
    queue = cggcci.createQueue();
  }
  cggcc.$push(queue, task);
  return queue;
}
;
cggcci.runScheduledTasks = function runScheduledTasks(tasks, rescheduled){
  var e, i, j, t;
  for (i = 0 , j = cggcc.$length(tasks); i < j; i++) {
    t = cggcc.$get(tasks, i);
    try {
      if (cggcci.$isRepeating(t)) {
        if (cggcci.$executeRepeating(t)) {
          rescheduled = cggcci.push_0(rescheduled, t);
        }
      }
       else {
        cggcci.$executeScheduled(t);
      }
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 20)) {
        e = $e0;
        reportUncaughtException(e);
      }
       else 
        throw toJs($e0);
    }
  }
  return rescheduled;
}
;
cggcci.scheduleFixedDelayImpl = function scheduleFixedDelayImpl(cmd, delayMs){
  function callback(){
    var ret = $entry(cggcci.execute_2)(cmd);
    if (!isScript()) {
      ret = ret == true;
    }
    if (ret) {
      $wnd.setTimeout(callback, delayMs);
    }
  }

  $wnd.setTimeout(callback, delayMs);
}
;
defineClass(287, 401, {287:1, 1:1}, cggcci.SchedulerImpl);
_.$init_335 = function $init_335(){
  this.flushRunning = false;
  this.shouldBeRunning = false;
}
;
_.createDuration = function createDuration(){
  return new cggcc.Duration;
}
;
_.flushEntryCommands = function flushEntryCommands(){
  var oldQueue, rescheduled;
  if (isNotNull(this.entryCommands)) {
    rescheduled = null;
    do {
      oldQueue = this.entryCommands;
      this.entryCommands = null;
      rescheduled = cggcci.runScheduledTasks(oldQueue, rescheduled);
    }
     while (isNotNull(this.entryCommands));
    this.entryCommands = rescheduled;
  }
}
;
_.flushFinallyCommands = function flushFinallyCommands(){
  var oldQueue, rescheduled;
  if (isNotNull(this.finallyCommands)) {
    rescheduled = null;
    do {
      oldQueue = this.finallyCommands;
      this.finallyCommands = null;
      rescheduled = cggcci.runScheduledTasks(oldQueue, rescheduled);
    }
     while (isNotNull(this.finallyCommands));
    this.finallyCommands = rescheduled;
  }
}
;
_.flushPostEventPumpCommands = function flushPostEventPumpCommands(){
  var oldDeferred;
  if (isNotNull(this.deferredCommands)) {
    oldDeferred = this.deferredCommands;
    this.deferredCommands = null;
    if (isNull(this.incrementalCommands)) {
      this.incrementalCommands = cggcci.createQueue();
    }
    cggcci.runScheduledTasks(oldDeferred, this.incrementalCommands);
  }
  if (isNotNull(this.incrementalCommands)) {
    this.incrementalCommands = this.runRepeatingTasks(this.incrementalCommands);
  }
}
;
_.isWorkQueued = function isWorkQueued(){
  return isNotNull(this.deferredCommands) || isNotNull(this.incrementalCommands);
}
;
_.maybeSchedulePostEventPumpCommands = function maybeSchedulePostEventPumpCommands(){
  if (!this.shouldBeRunning) {
    this.shouldBeRunning = true;
    if (isNull(this.flusher)) {
      this.flusher = new cggcci.SchedulerImpl$Flusher(this);
    }
    cggcci.scheduleFixedDelayImpl(this.flusher, 1);
    if (isNull(this.rescue)) {
      this.rescue = new cggcci.SchedulerImpl$Rescuer(this);
    }
    cggcci.scheduleFixedDelayImpl(this.rescue, 50);
  }
}
;
_.runRepeatingTasks = function runRepeatingTasks(tasks){
  var canceledSomeTasks, duration, executedSomeTask, i, length_0, newTasks, t;
  length_0 = cggcc.$length(tasks);
  if (length_0 == 0) {
    return null;
  }
  canceledSomeTasks = false;
  duration = this.createDuration();
  while (duration.elapsedMillis() < 16) {
    executedSomeTask = false;
    for (i = 0; i < length_0; i++) {
      t = cggcc.$get(tasks, i);
      if (isNull(t)) {
        continue;
      }
      executedSomeTask = true;
      if (!cggcci.$executeRepeating(t)) {
        cggcc.$set(tasks, i, null);
        canceledSomeTasks = true;
      }
    }
    if (!executedSomeTask) {
      break;
    }
  }
  if (canceledSomeTasks) {
    newTasks = cggcci.createQueue();
    for (i = 0; i < length_0; i++) {
      if (isNotNull(cggcc.$get(tasks, i))) {
        cggcc.$push(newTasks, cggcc.$get(tasks, i));
      }
    }
    return cggcc.$length(newTasks) == 0?null:newTasks;
  }
   else {
    return tasks;
  }
}
;
_.scheduleDeferred = function scheduleDeferred(cmd){
  this.deferredCommands = cggcci.push_0(this.deferredCommands, cggcci.create_3(cmd));
  this.maybeSchedulePostEventPumpCommands();
}
;
_.scheduleFixedDelay = function scheduleFixedDelay(cmd, delayMs){
  cggcci.scheduleFixedDelayImpl(cmd, delayMs);
}
;
_.flushRunning = false;
_.shouldBeRunning = false;
cggcci.FLUSHER_DELAY = 1;
cggcci.RESCUE_DELAY = 50;
cggcci.TIME_SLICE = 16;
cggl.Lcom_google_gwt_core_client_impl_SchedulerImpl_2_classLit = createForClass('com.google.gwt.core.client.impl', 'SchedulerImpl', 287, cggl.Lcom_google_gwt_core_client_Scheduler_2_classLit);
cggcci.$clinit_SchedulerImpl$Flusher = function $clinit_SchedulerImpl$Flusher(){
  cggcci.$clinit_SchedulerImpl$Flusher = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.SchedulerImpl$Flusher = function SchedulerImpl$Flusher(this$0){
  cggcci.$clinit_SchedulerImpl$Flusher();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_336();
}
;
defineClass(713, 1, {1:1}, cggcci.SchedulerImpl$Flusher);
_.$init_336 = function $init_336(){
}
;
_.execute_0 = function execute_3(){
  this.this$01.flushRunning = true;
  this.this$01.flushPostEventPumpCommands();
  this.this$01.flushRunning = false;
  return this.this$01.shouldBeRunning = this.this$01.isWorkQueued();
}
;
cggl.Lcom_google_gwt_core_client_impl_SchedulerImpl$Flusher_2_classLit = createForClass('com.google.gwt.core.client.impl', 'SchedulerImpl/Flusher', 713, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_SchedulerImpl$Rescuer = function $clinit_SchedulerImpl$Rescuer(){
  cggcci.$clinit_SchedulerImpl$Rescuer = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.SchedulerImpl$Rescuer = function SchedulerImpl$Rescuer(this$0){
  cggcci.$clinit_SchedulerImpl$Rescuer();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_337();
}
;
defineClass(714, 1, {1:1}, cggcci.SchedulerImpl$Rescuer);
_.$init_337 = function $init_337(){
}
;
_.execute_0 = function execute_4(){
  if (this.this$01.flushRunning) {
    this.this$01.scheduleFixedDelay(this.this$01.flusher, 1);
  }
  return this.this$01.shouldBeRunning;
}
;
cggl.Lcom_google_gwt_core_client_impl_SchedulerImpl$Rescuer_2_classLit = createForClass('com.google.gwt.core.client.impl', 'SchedulerImpl/Rescuer', 714, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_SchedulerImpl$Task = function $clinit_SchedulerImpl$Task(){
  cggcci.$clinit_SchedulerImpl$Task = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggcci.$executeRepeating = function $executeRepeating(this$static){
  cggcci.$clinit_SchedulerImpl$Task();
  return cggcci.$getRepeating(this$static).execute_0();
}
;
cggcci.$executeScheduled = function $executeScheduled(this$static){
  cggcci.$clinit_SchedulerImpl$Task();
  cggcci.$getScheduled(this$static).execute_1();
}
;
cggcci.$getRepeating = function $getRepeating(this$static){
  return this$static[0];
}
;
cggcci.$getScheduled = function $getScheduled(this$static){
  return this$static[0];
}
;
cggcci.$isRepeating = function $isRepeating(this$static){
  cggcci.$clinit_SchedulerImpl$Task();
  return this$static[1];
}
;
cggcci.create_3 = function create_3(cmd){
  cggcci.$clinit_SchedulerImpl$Task();
  return [cmd, false];
}
;
cggcci.$clinit_ScriptTagLoadingStrategy = function $clinit_ScriptTagLoadingStrategy(){
  cggcci.$clinit_ScriptTagLoadingStrategy = emptyMethod;
  cggcci.$clinit_LoadingStrategyBase();
}
;
cggcci.ScriptTagLoadingStrategy = function ScriptTagLoadingStrategy(){
  cggcci.$clinit_ScriptTagLoadingStrategy();
  cggcci.LoadingStrategyBase.call(this, new cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy);
  this.$init_338();
}
;
cggcci.asyncCallback = function asyncCallback(request, code_0){
  var firstTimeCalled;
  firstTimeCalled = cggcci.clearAsyncCallback(request.getFragment_2());
  if (firstTimeCalled) {
    request.tryInstall(code_0);
  }
}
;
cggcci.cleanup = function cleanup(request){
  cggcci.$clinit_ScriptTagLoadingStrategy();
  var neverCalled;
  neverCalled = cggcci.clearAsyncCallback(request.getFragment_2());
  if (neverCalled) {
    request.onLoadError(new cggcci.AsyncFragmentLoader$HttpDownloadFailure(request.getUrl(), 404, 'Script Tag Failure - no status available'), true);
  }
}
;
cggcci.clearAsyncCallback = function clearAsyncCallback(fragment){
  if (!__gwtModuleFunction['runAsyncCallback' + fragment]) {
    return false;
  }
  delete __gwtModuleFunction['runAsyncCallback' + fragment];
  return true;
}
;
cggcci.setAsyncCallback = function setAsyncCallback(fragment, request){
  cggcci.$clinit_ScriptTagLoadingStrategy();
  __gwtModuleFunction['runAsyncCallback' + fragment] = $entry(function(code_0, instance){
    cggcci.asyncCallback(request, code_0);
  }
  );
}
;
defineClass(490, 629, {323:1, 1:1}, cggcci.ScriptTagLoadingStrategy);
_.$init_338 = function $init_338(){
}
;
cggl.Lcom_google_gwt_core_client_impl_ScriptTagLoadingStrategy_2_classLit = createForClass('com.google.gwt.core.client.impl', 'ScriptTagLoadingStrategy', 490, cggl.Lcom_google_gwt_core_client_impl_LoadingStrategyBase_2_classLit);
cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy = function $clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy(){
  cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy = function ScriptTagLoadingStrategy$ScriptTagDownloadStrategy(){
  cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy();
  Object_0.call(this);
  this.$init_339();
}
;
defineClass(630, 1, {1:1}, cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy);
_.$init_339 = function $init_339(){
}
;
_.tryDownload = function tryDownload_0(request){
  cggcci.setAsyncCallback(request.getFragment_2(), request);
  cggcc.fromUrl(request.getUrl()).setRemoveTag(true).setCallback(new cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1(this, request)).inject();
}
;
cggl.Lcom_google_gwt_core_client_impl_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy_2_classLit = createForClass('com.google.gwt.core.client.impl', 'ScriptTagLoadingStrategy/ScriptTagDownloadStrategy', 630, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1 = function $clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1(){
  cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1 = function ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1(this$1, val$request){
  cggcci.$clinit_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1();
  this.this$11 = this$1;
  this.val$request2 = val$request;
  Object_0.call(this);
  this.$init_340();
}
;
defineClass(631, 1, {1:1}, cggcci.ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1);
_.$init_340 = function $init_340(){
}
;
_.onFailure = function onFailure_0(reason){
  this.onFailure_1(castTo(reason, 14));
}
;
_.onSuccess = function onSuccess(result){
  this.onSuccess_1(castTo(result, 389));
}
;
_.onFailure_1 = function onFailure(reason){
  cggcci.cleanup(this.val$request2);
}
;
_.onSuccess_1 = function onSuccess_0(result){
  cggcci.cleanup(this.val$request2);
}
;
cggl.Lcom_google_gwt_core_client_impl_ScriptTagLoadingStrategy$ScriptTagDownloadStrategy$1_2_classLit = createForClass('com.google.gwt.core.client.impl', 'ScriptTagLoadingStrategy/ScriptTagDownloadStrategy/1', 631, cggl.Ljava_lang_Object_2_classLit);
cggcci.$clinit_StackTraceCreator$CollectorEmulated = function $clinit_StackTraceCreator$CollectorEmulated(){
  cggcci.$clinit_StackTraceCreator$CollectorEmulated = emptyMethod;
}
;
defineClass(958, 222, {1:1});
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorEmulated_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorEmulated', 958, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit);
cggcci.$clinit_StackTraceCreator$CollectorNull = function $clinit_StackTraceCreator$CollectorNull(){
  cggcci.$clinit_StackTraceCreator$CollectorNull = emptyMethod;
}
;
defineClass(959, 222, {1:1});
cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$CollectorNull_2_classLit = createForClass('com.google.gwt.core.client.impl', 'StackTraceCreator/CollectorNull', 959, cggl.Lcom_google_gwt_core_client_impl_StackTraceCreator$Collector_2_classLit);
cggccp.$clinit_PrefetchableResource = function $clinit_PrefetchableResource(){
  cggccp.$clinit_PrefetchableResource = emptyMethod;
}
;
cggl.Lcom_google_gwt_core_client_prefetch_PrefetchableResource_2_classLit = createForInterface('com.google.gwt.core.client.prefetch', 'PrefetchableResource');
cggccp.$clinit_RunAsyncCode = function $clinit_RunAsyncCode(){
  cggccp.$clinit_RunAsyncCode = emptyMethod;
}
;
defineClass(923, 1, {1:1});
cggl.Lcom_google_gwt_core_client_prefetch_RunAsyncCode_2_classLit = createForClass('com.google.gwt.core.client.prefetch', 'RunAsyncCode', 923, cggl.Ljava_lang_Object_2_classLit);
cggcs.$clinit_GWT_0 = function $clinit_GWT_0(){
  cggcs.$clinit_GWT_0 = emptyMethod;
  jl.$clinit_Object();
  {
    if (cggcs.isScript_0()) {
      cggcs.logger_0 = castTo(new cggcsi.JsLogger, 282);
    }
     else {
      cggcs.logger_0 = null;
    }
  }
}
;
cggcs.create_4 = function create_4(classLiteral){
  return cggcs.createImpl(classLiteral);
}
;
cggcs.createImpl = function createImpl(classLiteral){
  cggcs.$clinit_GWT_0();
  if (isNull(cggcs.sGWTBridge)) {
    throw toJs(new jl.UnsupportedOperationException_0('ERROR: GWT.create() is only usable in client code!  It cannot be called, for example, from server code.  If you are running a unit test, check that your test case extends GWTTestCase and that GWT.create() is not called from within an initializer or constructor.'));
  }
   else {
    return cggcs.sGWTBridge.create_0(classLiteral);
  }
}
;
cggcs.isScript_0 = function isScript_0(){
  cggcs.$clinit_GWT_0();
  return true;
}
;
cggcs.log_2 = function log_2(message){
  cggcs.$clinit_GWT_0();
  cggcs.log_3(message, null);
}
;
cggcs.log_3 = function log_3(message, e){
  if (isNotNull(cggcs.sGWTBridge)) {
    cggcs.sGWTBridge.log_0(message, e);
  }
   else if (isNotNull(cggcs.logger_0)) {
    cggcs.logger_0.log_0(message, e);
  }
}
;
defineClass(1116, 1, {1:1});
cggcs.sGWTBridge = null;
cggl.Lcom_google_gwt_core_shared_GWT_2_classLit = createForClass('com.google.gwt.core.shared', 'GWT', 1116, cggl.Ljava_lang_Object_2_classLit);
cggcs.$clinit_GWTBridge = function $clinit_GWTBridge(){
  cggcs.$clinit_GWTBridge = emptyMethod;
}
;
defineClass(1145, 1, {1:1});
cggl.Lcom_google_gwt_core_shared_GWTBridge_2_classLit = createForClass('com.google.gwt.core.shared', 'GWTBridge', 1145, cggl.Ljava_lang_Object_2_classLit);
cggcsi.$clinit_JsLogger = function $clinit_JsLogger(){
  cggcsi.$clinit_JsLogger = emptyMethod;
  jl.$clinit_Object();
}
;
cggcsi.JsLogger = function JsLogger(){
  cggcsi.$clinit_JsLogger();
  Object_0.call(this);
  this.$init_345();
}
;
defineClass(282, 1, {282:1, 1:1}, cggcsi.JsLogger);
_.$init_345 = function $init_345(){
}
;
_.log_0 = function log_4(message, e){
}
;
cggl.Lcom_google_gwt_core_shared_impl_JsLogger_2_classLit = createForClass('com.google.gwt.core.shared.impl', 'JsLogger', 282, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Node = function $clinit_Node(){
  cggdc.$clinit_Node = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$appendChild = function $appendChild(this$static, newChild){
  cggdc.$clinit_Node();
  return this$static.appendChild(newChild);
}
;
cggdc.$getChildCount = function $getChildCount(this$static){
  cggdc.$clinit_Node();
  return cggdc.$getLength(cggdc.$getChildNodes(this$static));
}
;
cggdc.$getChildNodes = function $getChildNodes(this$static){
  return this$static.childNodes;
}
;
cggdc.$getLastChild = function $getLastChild(this$static){
  cggdc.$clinit_Node();
  return this$static.lastChild;
}
;
cggdc.$getNodeType = function $getNodeType(this$static){
  cggdc.$clinit_Node();
  return this$static.nodeType;
}
;
cggdc.$getOwnerDocument = function $getOwnerDocument(this$static){
  cggdc.$clinit_Node();
  return this$static.ownerDocument;
}
;
cggdc.$getParentElement = function $getParentElement(this$static){
  cggdc.$clinit_Node();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getParentElement(this$static);
}
;
cggdc.$getParentNode = function $getParentNode(this$static){
  cggdc.$clinit_Node();
  return this$static.parentNode;
}
;
cggdc.$isOrHasChild = function $isOrHasChild(this$static, child){
  cggdc.$clinit_Node();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).isOrHasChild(this$static, child);
}
;
cggdc.$removeAllChildren = function $removeAllChildren(this$static){
  cggdc.$clinit_Node();
  while (this$static.lastChild) {
    this$static.removeChild(this$static.lastChild);
  }
}
;
cggdc.$removeChild = function $removeChild(this$static, oldChild){
  cggdc.$clinit_Node();
  return this$static.removeChild(oldChild);
}
;
cggdc.$removeFromParent = function $removeFromParent(this$static){
  var parent_0;
  parent_0 = cggdc.$getParentElement(this$static);
  if (isNotNull(parent_0)) {
    cggdc.$removeChild(parent_0, this$static);
  }
}
;
cggdc.is_0 = function is_0(o){
  cggdc.$clinit_Node();
  try {
    return !!o && !!o.nodeType;
  }
   catch (e) {
    return false;
  }
}
;
cggdc.DOCUMENT_NODE = 9;
cggdc.ELEMENT_NODE = 1;
cggdc.TEXT_NODE = 3;
cggdc.$clinit_Element = function $clinit_Element(){
  cggdc.$clinit_Element = emptyMethod;
  cggdc.$clinit_Node();
}
;
cggdc.$addClassName = function $addClassName(this$static, className){
  cggdc.$clinit_Element();
  var idx, oldClassName;
  className = cggdc.trimClassName(className);
  oldClassName = cggdc.$getClassName(this$static);
  idx = cggdc.indexOfName(oldClassName, className);
  if (idx == -1) {
    if (jl.length__I__devirtual$_0(oldClassName) > 0) {
      cggdc.$setClassName(this$static, oldClassName + ' ' + className);
    }
     else {
      cggdc.$setClassName(this$static, className);
    }
    return true;
  }
  return false;
}
;
cggdc.$blur = function $blur(this$static){
  cggdc.$clinit_Element();
  this$static.blur();
}
;
cggdc.$dispatchEvent = function $dispatchEvent(this$static, evt){
  cggdc.$clinit_Element();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).dispatchEvent_0(this$static, evt);
}
;
cggdc.$focus = function $focus(this$static){
  cggdc.$clinit_Element();
  this$static.focus();
}
;
cggdc.$getAbsoluteLeft = function $getAbsoluteLeft(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getAbsoluteLeft_0(this$static);
}
;
cggdc.$getAbsoluteTop = function $getAbsoluteTop(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getAbsoluteTop_0(this$static);
}
;
cggdc.$getAttribute = function $getAttribute(this$static, name_0){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getAttribute_0(this$static, name_0);
}
;
cggdc.$getClassName = function $getClassName(this$static){
  cggdc.$clinit_Element();
  return this$static.className || '';
}
;
cggdc.$getClientHeight = function $getClientHeight(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelClientHeight(this$static));
}
;
cggdc.$getClientWidth = function $getClientWidth(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelClientWidth(this$static));
}
;
cggdc.$getElementsByTagName = function $getElementsByTagName(this$static, name_0){
  return this$static.getElementsByTagName(name_0);
}
;
cggdc.$getFirstChildElement = function $getFirstChildElement(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getFirstChildElement(this$static);
}
;
cggdc.$getId = function $getId(this$static){
  return this$static.id;
}
;
cggdc.$getInnerHTML = function $getInnerHTML(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getInnerHTML(this$static);
}
;
cggdc.$getInnerText = function $getInnerText(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getInnerText(this$static);
}
;
cggdc.$getOffsetHeight = function $getOffsetHeight(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelOffsetHeight(this$static));
}
;
cggdc.$getOffsetWidth = function $getOffsetWidth(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelOffsetWidth(this$static));
}
;
cggdc.$getPropertyBoolean = function $getPropertyBoolean(this$static, name_0){
  cggdc.$clinit_Element();
  return !!this$static[name_0];
}
;
cggdc.$getPropertyInt = function $getPropertyInt(this$static, name_0){
  cggdc.$clinit_Element();
  return parseInt(this$static[name_0]) | 0;
}
;
cggdc.$getPropertyString = function $getPropertyString(this$static, name_0){
  cggdc.$clinit_Element();
  return this$static[name_0] == null?null:String(this$static[name_0]);
}
;
cggdc.$getScrollHeight = function $getScrollHeight(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelScrollHeight(this$static));
}
;
cggdc.$getScrollLeft = function $getScrollLeft(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getScrollLeft_0(this$static);
}
;
cggdc.$getScrollTop = function $getScrollTop(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelScrollTop(this$static));
}
;
cggdc.$getScrollWidth = function $getScrollWidth(this$static){
  cggdc.$clinit_Element();
  return cggdc.toInt32(cggdc.$getSubPixelScrollWidth(this$static));
}
;
cggdc.$getString = function $getString(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).toString_2(this$static);
}
;
cggdc.$getStyle = function $getStyle(this$static){
  cggdc.$clinit_Element();
  return this$static.style;
}
;
cggdc.$getSubPixelClientHeight = function $getSubPixelClientHeight(this$static){
  return this$static.clientHeight;
}
;
cggdc.$getSubPixelClientWidth = function $getSubPixelClientWidth(this$static){
  return this$static.clientWidth;
}
;
cggdc.$getSubPixelOffsetHeight = function $getSubPixelOffsetHeight(this$static){
  return this$static.offsetHeight || 0;
}
;
cggdc.$getSubPixelOffsetWidth = function $getSubPixelOffsetWidth(this$static){
  return this$static.offsetWidth || 0;
}
;
cggdc.$getSubPixelScrollHeight = function $getSubPixelScrollHeight(this$static){
  return this$static.scrollHeight || 0;
}
;
cggdc.$getSubPixelScrollTop = function $getSubPixelScrollTop(this$static){
  return this$static.scrollTop || 0;
}
;
cggdc.$getSubPixelScrollWidth = function $getSubPixelScrollWidth(this$static){
  return this$static.scrollWidth || 0;
}
;
cggdc.$getTabIndex = function $getTabIndex(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getTabIndex_0(this$static);
}
;
cggdc.$getTagName = function $getTagName(this$static){
  cggdc.$clinit_Element();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getTagName(this$static);
}
;
cggdc.$hasTagName = function $hasTagName(this$static, tagName){
  cggdc.$clinit_Element();
  return jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$(tagName, cggdc.$getTagName(this$static));
}
;
cggdc.$removeAttribute = function $removeAttribute(this$static, name_0){
  cggdc.$clinit_Element();
  this$static.removeAttribute(name_0);
}
;
cggdc.$removeClassName = function $removeClassName(this$static, className){
  cggdc.$clinit_Element();
  var begin, end, idx, newClassName, oldStyle;
  className = cggdc.trimClassName(className);
  oldStyle = cggdc.$getClassName(this$static);
  idx = cggdc.indexOfName(oldStyle, className);
  if (idx != -1) {
    begin = jl.trim__Ljava_lang_String___devirtual$(jl.substring_II_Ljava_lang_String___devirtual$(oldStyle, 0, idx));
    end = jl.trim__Ljava_lang_String___devirtual$(jl.substring_I_Ljava_lang_String___devirtual$(oldStyle, idx + jl.length__I__devirtual$_0(className)));
    if (jl.length__I__devirtual$_0(begin) == 0) {
      newClassName = end;
    }
     else if (jl.length__I__devirtual$_0(end) == 0) {
      newClassName = begin;
    }
     else {
      newClassName = begin + ' ' + end;
    }
    cggdc.$setClassName(this$static, newClassName);
    return true;
  }
  return false;
}
;
cggdc.$setAttribute = function $setAttribute(this$static, name_0, value_0){
  cggdc.$clinit_Element();
  this$static.setAttribute(name_0, value_0);
}
;
cggdc.$setClassName = function $setClassName(this$static, className){
  cggdc.$clinit_Element();
  this$static.className = className || '';
}
;
cggdc.$setId = function $setId(this$static, id_0){
  cggdc.$clinit_Element();
  this$static.id = id_0;
}
;
cggdc.$setInnerHTML = function $setInnerHTML(this$static, html){
  cggdc.$clinit_Element();
  this$static.innerHTML = html || '';
}
;
cggdc.$setInnerText = function $setInnerText(this$static, text_0){
  cggdc.$clinit_Element();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).setInnerText(this$static, text_0);
}
;
cggdc.$setPropertyBoolean_0 = function $setPropertyBoolean_0(this$static, name_0, value_0){
  cggdc.$clinit_Element();
  this$static[name_0] = value_0;
}
;
cggdc.$setPropertyInt_0 = function $setPropertyInt_0(this$static, name_0, value_0){
  cggdc.$clinit_Element();
  this$static[name_0] = value_0;
}
;
cggdc.$setPropertyString_0 = function $setPropertyString_0(this$static, name_0, value_0){
  cggdc.$clinit_Element();
  this$static[name_0] = value_0;
}
;
cggdc.$setTabIndex = function $setTabIndex(this$static, tabIndex){
  cggdc.$clinit_Element();
  this$static.tabIndex = tabIndex;
}
;
cggdc.as = function as(o){
  cggdc.$clinit_Element();
  return o;
}
;
cggdc.indexOfName = function indexOfName(nameList, name_0){
  var idx, last, lastPos;
  idx = jl.indexOf_Ljava_lang_String__I__devirtual$(nameList, name_0);
  while (idx != -1) {
    if (idx == 0 || jl.charAt_I_C__devirtual$_0(nameList, idx - 1) == 32) {
      last = idx + jl.length__I__devirtual$_0(name_0);
      lastPos = jl.length__I__devirtual$_0(nameList);
      if (last == lastPos || last < lastPos && jl.charAt_I_C__devirtual$_0(nameList, last) == 32) {
        break;
      }
    }
    idx = jl.indexOf_Ljava_lang_String_I_I__devirtual$(nameList, name_0, idx + 1);
  }
  return idx;
}
;
cggdc.is_1 = function is_1(o){
  cggdc.$clinit_Element();
  if (cggdc.is_0(o)) {
    return cggdc.is_2(o);
  }
  return false;
}
;
cggdc.is_2 = function is_2(node){
  return isNotNull(node) && cggdc.$getNodeType(node) == 1;
}
;
cggdc.toInt32 = function toInt32(val){
  return val | 0;
}
;
cggdc.trimClassName = function trimClassName(className){
  className = jl.trim__Ljava_lang_String___devirtual$(className);
  return className;
}
;
cggdc.DRAGGABLE_AUTO = 'auto';
cggdc.DRAGGABLE_FALSE = 'false';
cggdc.DRAGGABLE_TRUE = 'true';
cggdc.$clinit_BodyElement = function $clinit_BodyElement(){
  cggdc.$clinit_BodyElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG = 'body';
cggdc.$clinit_ButtonElement = function $clinit_ButtonElement(){
  cggdc.$clinit_ButtonElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getName = function $getName(this$static){
  return this$static.name;
}
;
cggdc.$getType = function $getType(this$static){
  return this$static.type;
}
;
cggdc.$getValue = function $getValue(this$static){
  return this$static.value;
}
;
cggdc.$isDisabled = function $isDisabled(this$static){
  return !!this$static.disabled;
}
;
cggdc.$setDisabled = function $setDisabled(this$static, disabled){
  this$static.disabled = disabled;
}
;
cggdc.$setName = function $setName(this$static, name_0){
  this$static.name = name_0;
}
;
cggdc.$setValue = function $setValue(this$static, value_0){
  this$static.value = value_0;
}
;
cggdc.TAG_0 = 'button';
cggdc.$clinit_CanvasElement = function $clinit_CanvasElement(){
  cggdc.$clinit_CanvasElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getContext2d = function $getContext2d(this$static){
  cggdc.$clinit_CanvasElement();
  return this$static.getContext('2d');
}
;
cggdc.$getHeight = function $getHeight(this$static){
  cggdc.$clinit_CanvasElement();
  return this$static.height;
}
;
cggdc.$getWidth_0 = function $getWidth_0(this$static){
  cggdc.$clinit_CanvasElement();
  return this$static.width;
}
;
cggdc.$setHeight = function $setHeight(this$static, height){
  cggdc.$clinit_CanvasElement();
  this$static.height = height;
}
;
cggdc.$setWidth = function $setWidth(this$static, width_0){
  cggdc.$clinit_CanvasElement();
  this$static.width = width_0;
}
;
cggdc.TAG_1 = 'canvas';
cggdc.$clinit_DOMImpl = function $clinit_DOMImpl(){
  cggdc.$clinit_DOMImpl = emptyMethod;
  jl.$clinit_Object();
  cggdc.impl_2 = castTo(new cggdc.DOMImplWebkit, 200);
}
;
cggdc.DOMImpl = function DOMImpl(){
  cggdc.$clinit_DOMImpl();
  Object_0.call(this);
  this.$init_346();
}
;
cggdc.toInt32_0 = function toInt32_0(val){
  cggdc.$clinit_DOMImpl();
  return val | 0;
}
;
defineClass(200, 1, {1:1});
_.$init_346 = function $init_346(){
}
;
_.createButtonElement = function createButtonElement(doc, type_0){
  var e = doc.createElement('BUTTON');
  e.type = type_0;
  return e;
}
;
_.createCheckInputElement = function createCheckInputElement(doc){
  var e = doc.createElement('INPUT');
  e.type = 'checkbox';
  e.value = 'on';
  return e;
}
;
_.createElement_3 = function createElement_4(doc, tag){
  return doc.createElement(tag);
}
;
_.createInputElement = function createInputElement(doc, type_0){
  var e = doc.createElement('INPUT');
  e.type = type_0;
  return e;
}
;
_.ensureDocumentScrollingElement = function ensureDocumentScrollingElement(document_0){
  var scrollingElement;
  scrollingElement = this.getDocumentScrollingElement(document_0);
  return isNotNull(scrollingElement)?scrollingElement:cggdc.$getDocumentElement(document_0);
}
;
_.eventGetAltKey = function eventGetAltKey(evt){
  return !!evt.altKey;
}
;
_.eventGetButton = function eventGetButton(evt){
  return evt.button | 0;
}
;
_.eventGetClientX = function eventGetClientX(evt){
  return cggdc.toInt32_0(this.eventGetSubPixelClientX(evt));
}
;
_.eventGetClientY = function eventGetClientY(evt){
  return cggdc.toInt32_0(this.eventGetSubPixelClientY(evt));
}
;
_.eventGetCtrlKey = function eventGetCtrlKey(evt){
  return !!evt.ctrlKey;
}
;
_.eventGetCurrentTarget = function eventGetCurrentTarget(event_0){
  return event_0.currentTarget;
}
;
_.eventGetKeyCode = function eventGetKeyCode(evt){
  return evt.keyCode | 0;
}
;
_.eventGetMetaKey = function eventGetMetaKey(evt){
  return !!evt.metaKey;
}
;
_.eventGetShiftKey = function eventGetShiftKey(evt){
  return !!evt.shiftKey;
}
;
_.eventGetSubPixelClientX = function eventGetSubPixelClientX(evt){
  return evt.clientX || 0;
}
;
_.eventGetSubPixelClientY = function eventGetSubPixelClientY(evt){
  return evt.clientY || 0;
}
;
_.eventGetType = function eventGetType(evt){
  return evt.type;
}
;
_.eventStopPropagation = function eventStopPropagation(evt){
  evt.stopPropagation();
}
;
_.getAbsoluteLeft_0 = function getAbsoluteLeft_0(elem){
  return cggdc.toInt32_0(this.getSubPixelAbsoluteLeft(elem));
}
;
_.getAbsoluteTop_0 = function getAbsoluteTop_0(elem){
  return cggdc.toInt32_0(this.getSubPixelAbsoluteTop(elem));
}
;
_.getAttribute_0 = function getAttribute(elem, name_0){
  return elem.getAttribute(name_0) || '';
}
;
_.getBodyOffsetLeft = function getBodyOffsetLeft(doc){
  return 0;
}
;
_.getBodyOffsetTop = function getBodyOffsetTop(doc){
  return 0;
}
;
_.getDocumentScrollingElement = function getDocumentScrollingElement(doc){
  return cggdc.$getViewportElement(doc);
}
;
_.getFirstChildElement = function getFirstChildElement(elem){
  var child = elem.firstChild;
  while (child && child.nodeType != 1)
    child = child.nextSibling;
  return child;
}
;
_.getInnerHTML = function getInnerHTML(elem){
  return elem.innerHTML;
}
;
_.getInnerText = function getInnerText(node){
  var text_0 = '', child = node.firstChild;
  while (child) {
    if (child.nodeType == 1) {
      text_0 += this.getInnerText(child);
    }
     else if (child.nodeValue) {
      text_0 += child.nodeValue;
    }
    child = child.nextSibling;
  }
  return text_0;
}
;
_.getParentElement = function getParentElement(node){
  var parent_0 = node.parentNode;
  if (!parent_0 || parent_0.nodeType != 1) {
    parent_0 = null;
  }
  return parent_0;
}
;
_.getScrollLeft = function getScrollLeft(doc){
  return cggdc.$getScrollLeft(this.ensureDocumentScrollingElement(doc));
}
;
_.getScrollLeft_0 = function getScrollLeft_0(elem){
  return cggdc.toInt32_0(this.getSubPixelScrollLeft(elem));
}
;
_.getScrollTop = function getScrollTop(doc){
  return cggdc.$getScrollTop(this.ensureDocumentScrollingElement(doc));
}
;
_.getSubPixelAbsoluteLeft = function getSubPixelAbsoluteLeft(elem){
  var left = 0;
  var curr = elem;
  while (curr.offsetParent) {
    left -= curr.scrollLeft;
    curr = curr.parentNode;
  }
  while (elem) {
    left += elem.offsetLeft;
    elem = elem.offsetParent;
  }
  return left;
}
;
_.getSubPixelAbsoluteTop = function getSubPixelAbsoluteTop(elem){
  var top_0 = 0;
  var curr = elem;
  while (curr.offsetParent) {
    top_0 -= curr.scrollTop;
    curr = curr.parentNode;
  }
  while (elem) {
    top_0 += elem.offsetTop;
    elem = elem.offsetParent;
  }
  return top_0;
}
;
_.getSubPixelScrollLeft = function getSubPixelScrollLeft(elem){
  return elem.scrollLeft || 0;
}
;
_.getTabIndex_0 = function getTabIndex_0(elem){
  return elem.tabIndex;
}
;
_.getTagName = function getTagName(elem){
  return elem.tagName;
}
;
_.getTouches = function getTouches(evt){
  return evt.touches;
}
;
_.selectAdd = function selectAdd(select, option, before){
  select.add(option, before);
}
;
_.selectClear = function selectClear(select){
  select.options.length = 0;
}
;
_.selectGetLength = function selectGetLength(select){
  return select.options.length;
}
;
_.selectGetOptions = function selectGetOptions(select){
  return select.options;
}
;
_.selectRemoveOption = function selectRemoveOption(select, index_0){
  select.remove(index_0);
}
;
_.setInnerText = function setInnerText(elem, text_0){
  while (elem.firstChild) {
    elem.removeChild(elem.firstChild);
  }
  if (text_0 != null) {
    elem.appendChild(elem.ownerDocument.createTextNode(text_0));
  }
}
;
_.toString_2 = function toString_24(elem){
  return elem.outerHTML;
}
;
_.touchGetClientX = function touchGetClientX(touch){
  return cggdc.toInt32_0(this.touchGetSubPixelClientX(touch));
}
;
_.touchGetClientY = function touchGetClientY(touch){
  return cggdc.toInt32_0(this.touchGetSubPixelClientY(touch));
}
;
_.touchGetSubPixelClientX = function touchGetSubPixelClientX(touch){
  return touch.clientX || 0;
}
;
_.touchGetSubPixelClientY = function touchGetSubPixelClientY(touch){
  return touch.clientY || 0;
}
;
cggl.Lcom_google_gwt_dom_client_DOMImpl_2_classLit = createForClass('com.google.gwt.dom.client', 'DOMImpl', 200, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_DOMImplStandard = function $clinit_DOMImplStandard(){
  cggdc.$clinit_DOMImplStandard = emptyMethod;
  cggdc.$clinit_DOMImpl();
}
;
cggdc.DOMImplStandard = function DOMImplStandard(){
  cggdc.$clinit_DOMImplStandard();
  cggdc.DOMImpl.call(this);
  this.$init_347();
}
;
defineClass(660, 200, {1:1});
_.$init_347 = function $init_347(){
}
;
_.createHtmlEvent = function createHtmlEvent(doc, type_0, canBubble, cancelable){
  var evt = doc.createEvent('HTMLEvents');
  evt.initEvent(type_0, canBubble, cancelable);
  return evt;
}
;
_.dispatchEvent_0 = function dispatchEvent_0(target, evt){
  target.dispatchEvent(evt);
}
;
_.eventGetButton = function eventGetButton_0(evt){
  var button = evt.button;
  if (button == 1) {
    return 4;
  }
   else if (button == 2) {
    return 2;
  }
  return 1;
}
;
_.eventGetCharCode = function eventGetCharCode(evt){
  return evt.charCode || 0;
}
;
_.eventGetRelatedTarget = function eventGetRelatedTarget(evt){
  return evt.relatedTarget;
}
;
_.eventGetTarget = function eventGetTarget(evt){
  return evt.target;
}
;
_.eventPreventDefault = function eventPreventDefault(evt){
  evt.preventDefault();
}
;
_.eventToString = function eventToString(evt){
  return evt.toString();
}
;
_.getDocumentScrollingElement = function getDocumentScrollingElement_0(doc){
  if (isNotNull(this.getNativeDocumentScrollingElement(doc))) {
    return this.getNativeDocumentScrollingElement(doc);
  }
  return this.getLegacyDocumentScrollingElement(doc);
}
;
_.getInnerText = function getInnerText_0(elem){
  return elem.textContent;
}
;
_.getLegacyDocumentScrollingElement = function getLegacyDocumentScrollingElement(doc){
  return cggdc.$getViewportElement(doc);
}
;
_.getNativeDocumentScrollingElement = function getNativeDocumentScrollingElement(doc){
  return doc.scrollingElement;
}
;
_.isOrHasChild = function isOrHasChild(parent_0, child){
  return parent_0.contains(child);
}
;
_.setInnerText = function setInnerText_0(elem, text_0){
  elem.textContent = text_0 || '';
}
;
cggl.Lcom_google_gwt_dom_client_DOMImplStandard_2_classLit = createForClass('com.google.gwt.dom.client', 'DOMImplStandard', 660, cggl.Lcom_google_gwt_dom_client_DOMImpl_2_classLit);
cggdc.$clinit_DOMImplStandardBase = function $clinit_DOMImplStandardBase(){
  cggdc.$clinit_DOMImplStandardBase = emptyMethod;
  cggdc.$clinit_DOMImplStandard();
}
;
cggdc.DOMImplStandardBase = function DOMImplStandardBase(){
  cggdc.$clinit_DOMImplStandardBase();
  cggdc.DOMImplStandard.call(this);
  this.$init_348();
}
;
cggdc.getAbsoluteLeftUsingOffsets = function getAbsoluteLeftUsingOffsets(elem){
  if (elem.offsetLeft == null) {
    return 0;
  }
  var left = 0;
  var doc = elem.ownerDocument;
  var curr = elem.parentNode;
  if (curr) {
    while (curr.offsetParent) {
      left -= curr.scrollLeft;
      if (doc.defaultView.getComputedStyle(curr, '').getPropertyValue('direction') == 'rtl') {
        left += curr.scrollWidth - curr.clientWidth;
      }
      curr = curr.parentNode;
    }
  }
  while (elem) {
    left += elem.offsetLeft;
    if (doc.defaultView.getComputedStyle(elem, '')['position'] == 'fixed') {
      left += doc.body.scrollLeft;
      return left;
    }
    var parent_0 = elem.offsetParent;
    if (parent_0 && $wnd.devicePixelRatio) {
      left += parseInt(doc.defaultView.getComputedStyle(parent_0, '').getPropertyValue('border-left-width'));
    }
    if (parent_0 && (parent_0.tagName == 'BODY' && elem.style.position == 'absolute')) {
      break;
    }
    elem = parent_0;
  }
  return left;
}
;
cggdc.getAbsoluteTopUsingOffsets = function getAbsoluteTopUsingOffsets(elem){
  if (elem.offsetTop == null) {
    return 0;
  }
  var top_0 = 0;
  var doc = elem.ownerDocument;
  var curr = elem.parentNode;
  if (curr) {
    while (curr.offsetParent) {
      top_0 -= curr.scrollTop;
      curr = curr.parentNode;
    }
  }
  while (elem) {
    top_0 += elem.offsetTop;
    if (doc.defaultView.getComputedStyle(elem, '')['position'] == 'fixed') {
      top_0 += doc.body.scrollTop;
      return top_0;
    }
    var parent_0 = elem.offsetParent;
    if (parent_0 && $wnd.devicePixelRatio) {
      top_0 += parseInt(doc.defaultView.getComputedStyle(parent_0, '').getPropertyValue('border-top-width'));
    }
    if (parent_0 && (parent_0.tagName == 'BODY' && elem.style.position == 'absolute')) {
      break;
    }
    elem = parent_0;
  }
  return top_0;
}
;
cggdc.getBoundingClientRect = function getBoundingClientRect(element){
  return element.getBoundingClientRect && element.getBoundingClientRect();
}
;
defineClass(661, 660, {1:1});
_.$init_348 = function $init_348(){
}
;
_.createButtonElement = function createButtonElement_0(doc, type_0){
  var e = doc.createElement('BUTTON');
  e.setAttribute('type', type_0);
  return e;
}
;
_.eventGetCurrentTarget = function eventGetCurrentTarget_0(event_0){
  return event_0.currentTarget || $wnd;
}
;
_.getAbsoluteLeft_0 = function getAbsoluteLeft_1(elem){
  var left, rect;
  rect = cggdc.getBoundingClientRect(elem);
  left = isNotNull(rect)?cggdc.$getSubPixelLeft(rect) + this.getScrollLeft(cggdc.$getOwnerDocument(elem)):cggdc.getAbsoluteLeftUsingOffsets(elem);
  return cggdc.toInt32_0(left);
}
;
_.getAbsoluteTop_0 = function getAbsoluteTop_1(elem){
  var rect, top_0;
  rect = cggdc.getBoundingClientRect(elem);
  top_0 = isNotNull(rect)?cggdc.$getSubPixelTop(rect) + this.getScrollTop(cggdc.$getOwnerDocument(elem)):cggdc.getAbsoluteTopUsingOffsets(elem);
  return cggdc.toInt32_0(top_0);
}
;
_.getScrollLeft_0 = function getScrollLeft_1(elem){
  if (!cggdc.$hasTagName(elem, 'body') && this.isRTL(elem)) {
    return getClassPrototype(200).getScrollLeft_0.call(this, elem) - (cggdc.$getScrollWidth(elem) - cggdc.$getClientWidth(elem));
  }
  return getClassPrototype(200).getScrollLeft_0.call(this, elem);
}
;
_.getTabIndex_0 = function getTabIndex_1(elem){
  return typeof elem.tabIndex != 'undefined'?elem.tabIndex:-1;
}
;
_.isRTL = function isRTL(elem){
  return elem.ownerDocument.defaultView.getComputedStyle(elem, '').direction == 'rtl';
}
;
cggl.Lcom_google_gwt_dom_client_DOMImplStandardBase_2_classLit = createForClass('com.google.gwt.dom.client', 'DOMImplStandardBase', 661, cggl.Lcom_google_gwt_dom_client_DOMImplStandard_2_classLit);
cggdc.$clinit_DOMImplStandardBase$ClientRect = function $clinit_DOMImplStandardBase$ClientRect(){
  cggdc.$clinit_DOMImplStandardBase$ClientRect = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getSubPixelLeft = function $getSubPixelLeft(this$static){
  cggdc.$clinit_DOMImplStandardBase$ClientRect();
  return this$static.left;
}
;
cggdc.$getSubPixelTop = function $getSubPixelTop(this$static){
  cggdc.$clinit_DOMImplStandardBase$ClientRect();
  return this$static.top;
}
;
cggdc.$clinit_DOMImplWebkit = function $clinit_DOMImplWebkit(){
  cggdc.$clinit_DOMImplWebkit = emptyMethod;
  cggdc.$clinit_DOMImplStandardBase();
}
;
cggdc.DOMImplWebkit = function DOMImplWebkit(){
  cggdc.$clinit_DOMImplWebkit();
  cggdc.DOMImplStandardBase.call(this);
  this.$init_349();
}
;
defineClass(662, 661, {200:1, 1:1}, cggdc.DOMImplWebkit);
_.$init_349 = function $init_349(){
}
;
_.eventGetTarget = function eventGetTarget_0(evt){
  var target = evt.target;
  if (target && target.nodeType == 3) {
    target = target.parentNode;
  }
  return target;
}
;
_.getLegacyDocumentScrollingElement = function getLegacyDocumentScrollingElement_0(doc){
  return cggdc.$getBody(doc);
}
;
cggl.Lcom_google_gwt_dom_client_DOMImplWebkit_2_classLit = createForClass('com.google.gwt.dom.client', 'DOMImplWebkit', 662, cggl.Lcom_google_gwt_dom_client_DOMImplStandardBase_2_classLit);
cggdc.$clinit_DataTransfer = function $clinit_DataTransfer(){
  cggdc.$clinit_DataTransfer = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getData = function $getData(this$static, format){
  cggdc.$clinit_DataTransfer();
  return this$static.getData(format);
}
;
cggdc.$setData = function $setData(this$static, format, data_0){
  cggdc.$clinit_DataTransfer();
  this$static.setData(format, data_0);
}
;
cggdc.$clinit_DataTransfer$DropEffect = function $clinit_DataTransfer$DropEffect(){
  cggdc.$clinit_DataTransfer$DropEffect = emptyMethod;
}
;
defineClass(1335, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_DataTransfer$DropEffect_2_classLit = createForEnum('com.google.gwt.dom.client', 'DataTransfer/DropEffect', 1335, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_DataTransfer$DropEffect$Map = function $clinit_DataTransfer$DropEffect$Map(){
  cggdc.$clinit_DataTransfer$DropEffect$Map = emptyMethod;
}
;
defineClass(1336, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_DataTransfer$DropEffect$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'DataTransfer/DropEffect/Map', 1336, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_DivElement = function $clinit_DivElement(){
  cggdc.$clinit_DivElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG_2 = 'div';
cggdc.$clinit_Document = function $clinit_Document(){
  cggdc.$clinit_Document = emptyMethod;
  cggdc.$clinit_Node();
}
;
cggdc.$createCanvasElement = function $createCanvasElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'canvas');
}
;
cggdc.$createCheckInputElement = function $createCheckInputElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createCheckInputElement(this$static);
}
;
cggdc.$createColElement = function $createColElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'col');
}
;
cggdc.$createDivElement = function $createDivElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'div');
}
;
cggdc.$createElement = function $createElement(this$static, tagName){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, tagName);
}
;
cggdc.$createHtmlEvent = function $createHtmlEvent(this$static, type_0, canBubble, cancelable){
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createHtmlEvent(this$static, type_0, canBubble, cancelable);
}
;
cggdc.$createImageElement = function $createImageElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'img');
}
;
cggdc.$createLabelElement = function $createLabelElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'label');
}
;
cggdc.$createLoadEvent = function $createLoadEvent(this$static){
  cggdc.$clinit_Document();
  return cggdc.$createHtmlEvent(this$static, 'load', false, false);
}
;
cggdc.$createOptionElement = function $createOptionElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'option');
}
;
cggdc.$createPushButtonElement = function $createPushButtonElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createButtonElement(this$static, 'button');
}
;
cggdc.$createSelectElement = function $createSelectElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'select');
}
;
cggdc.$createSpanElement = function $createSpanElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'span');
}
;
cggdc.$createTBodyElement = function $createTBodyElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'tbody');
}
;
cggdc.$createTDElement = function $createTDElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'td');
}
;
cggdc.$createTRElement = function $createTRElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'tr');
}
;
cggdc.$createTableElement = function $createTableElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createElement_3(this$static, 'table');
}
;
cggdc.$createTextInputElement = function $createTextInputElement(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).createInputElement(this$static, 'text');
}
;
cggdc.$createUniqueId = function $createUniqueId(this$static){
  cggdc.$clinit_Document();
  if (!this$static.gwt_uid) {
    this$static.gwt_uid = 1;
  }
  return 'gwt-uid-' + this$static.gwt_uid++;
}
;
cggdc.$getBody = function $getBody(this$static){
  cggdc.$clinit_Document();
  return this$static.body;
}
;
cggdc.$getBodyOffsetLeft = function $getBodyOffsetLeft(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getBodyOffsetLeft(this$static);
}
;
cggdc.$getBodyOffsetTop = function $getBodyOffsetTop(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getBodyOffsetTop(this$static);
}
;
cggdc.$getClientHeight_0 = function $getClientHeight_0(this$static){
  cggdc.$clinit_Document();
  return cggdc.$getClientHeight(cggdc.$getViewportElement(this$static));
}
;
cggdc.$getClientWidth_0 = function $getClientWidth_0(this$static){
  cggdc.$clinit_Document();
  return cggdc.$getClientWidth(cggdc.$getViewportElement(this$static));
}
;
cggdc.$getCompatMode = function $getCompatMode(this$static){
  cggdc.$clinit_Document();
  return this$static.compatMode;
}
;
cggdc.$getDocumentElement = function $getDocumentElement(this$static){
  cggdc.$clinit_Document();
  return this$static.documentElement;
}
;
cggdc.$getElementById = function $getElementById(this$static, elementId){
  cggdc.$clinit_Document();
  return this$static.getElementById(elementId);
}
;
cggdc.$getElementsByTagName_0 = function $getElementsByTagName_0(this$static, tagName){
  cggdc.$clinit_Document();
  return this$static.getElementsByTagName(tagName);
}
;
cggdc.$getScrollHeight_0 = function $getScrollHeight_0(this$static){
  cggdc.$clinit_Document();
  return cggdc.$getScrollHeight(cggdc.$getViewportElement(this$static));
}
;
cggdc.$getScrollLeft_0 = function $getScrollLeft_0(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getScrollLeft(this$static);
}
;
cggdc.$getScrollTop_0 = function $getScrollTop_0(this$static){
  cggdc.$clinit_Document();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getScrollTop(this$static);
}
;
cggdc.$getScrollWidth_0 = function $getScrollWidth_0(this$static){
  cggdc.$clinit_Document();
  return cggdc.$getScrollWidth(cggdc.$getViewportElement(this$static));
}
;
cggdc.$getViewportElement = function $getViewportElement(this$static){
  cggdc.$clinit_Document();
  return cggdc.$isCSS1Compat(this$static)?cggdc.$getDocumentElement(this$static):cggdc.$getBody(this$static);
}
;
cggdc.$isCSS1Compat = function $isCSS1Compat(this$static){
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(cggdc.$getCompatMode(this$static), 'CSS1Compat');
}
;
cggdc.get_19 = function get_19(){
  cggdc.$clinit_Document();
  if (isScript()) {
    return cggdc.nativeGet();
  }
  if (isNull(cggdc.doc_0)) {
    cggdc.doc_0 = cggdc.nativeGet();
  }
  return cggdc.doc_0;
}
;
cggdc.nativeGet = function nativeGet(){
  return $doc;
}
;
cggdc.$clinit_EventTarget = function $clinit_EventTarget(){
  cggdc.$clinit_EventTarget = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$clinit_ImageElement = function $clinit_ImageElement(){
  cggdc.$clinit_ImageElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getHeight_0 = function $getHeight_0(this$static){
  cggdc.$clinit_ImageElement();
  return this$static.height;
}
;
cggdc.$getSrc = function $getSrc(this$static){
  cggdc.$clinit_ImageElement();
  return this$static.src;
}
;
cggdc.$getWidth_1 = function $getWidth_1(this$static){
  cggdc.$clinit_ImageElement();
  return this$static.width;
}
;
cggdc.$setHeight_0 = function $setHeight_0(this$static, height){
  this$static.height = height;
}
;
cggdc.$setSrc = function $setSrc(this$static, src_0){
  cggdc.$clinit_ImageElement();
  this$static.src = src_0;
}
;
cggdc.$setWidth_0 = function $setWidth_0(this$static, width_0){
  this$static.width = width_0;
}
;
cggdc.as_0 = function as_0(elem){
  cggdc.$clinit_ImageElement();
  return elem;
}
;
cggdc.is_3 = function is_3(elem){
  return isNotNull(elem) && cggdc.$hasTagName(elem, 'img');
}
;
cggdc.TAG_3 = 'img';
cggdc.$clinit_InputElement = function $clinit_InputElement(){
  cggdc.$clinit_InputElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getName_0 = function $getName_0(this$static){
  cggdc.$clinit_InputElement();
  return this$static.name;
}
;
cggdc.$getSize = function $getSize(this$static){
  return this$static.size;
}
;
cggdc.$getSrc_0 = function $getSrc_0(this$static){
  return this$static.src;
}
;
cggdc.$getType_0 = function $getType_0(this$static){
  return this$static.type;
}
;
cggdc.$getValue_0 = function $getValue_0(this$static){
  return this$static.value;
}
;
cggdc.$isChecked = function $isChecked(this$static){
  cggdc.$clinit_InputElement();
  return !!this$static.checked;
}
;
cggdc.$isDefaultChecked = function $isDefaultChecked(this$static){
  cggdc.$clinit_InputElement();
  return !!this$static.defaultChecked;
}
;
cggdc.$isDisabled_0 = function $isDisabled_0(this$static){
  cggdc.$clinit_InputElement();
  return !!this$static.disabled;
}
;
cggdc.$setChecked = function $setChecked(this$static, checked){
  cggdc.$clinit_InputElement();
  this$static.checked = checked;
}
;
cggdc.$setDefaultChecked = function $setDefaultChecked(this$static, defaultChecked){
  cggdc.$clinit_InputElement();
  this$static.defaultChecked = defaultChecked;
}
;
cggdc.$setDisabled_0 = function $setDisabled_0(this$static, disabled){
  cggdc.$clinit_InputElement();
  this$static.disabled = disabled;
}
;
cggdc.$setName_0 = function $setName_0(this$static, name_0){
  cggdc.$clinit_InputElement();
  this$static.name = name_0;
}
;
cggdc.$setSize = function $setSize(this$static, size_0){
  this$static.size = size_0;
}
;
cggdc.$setSrc_0 = function $setSrc_0(this$static, src_0){
  this$static.src = src_0;
}
;
cggdc.$setValue_0 = function $setValue_0(this$static, value_0){
  cggdc.$clinit_InputElement();
  this$static.value = value_0;
}
;
cggdc.as_1 = function as_1(elem){
  cggdc.$clinit_InputElement();
  return elem;
}
;
cggdc.is_4 = function is_4(elem){
  return isNotNull(elem) && cggdc.$hasTagName(elem, 'input');
}
;
cggdc.TAG_4 = 'input';
cggdc.$clinit_LabelElement = function $clinit_LabelElement(){
  cggdc.$clinit_LabelElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$setHtmlFor = function $setHtmlFor(this$static, htmlFor){
  cggdc.$clinit_LabelElement();
  this$static.htmlFor = htmlFor;
}
;
cggdc.TAG_5 = 'label';
cggdc.$clinit_NativeEvent = function $clinit_NativeEvent(){
  cggdc.$clinit_NativeEvent = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getAltKey = function $getAltKey(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetAltKey(this$static);
}
;
cggdc.$getButton = function $getButton(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetButton(this$static);
}
;
cggdc.$getCharCode = function $getCharCode(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetCharCode(this$static);
}
;
cggdc.$getClientX = function $getClientX(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetClientX(this$static);
}
;
cggdc.$getClientY = function $getClientY(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetClientY(this$static);
}
;
cggdc.$getCtrlKey = function $getCtrlKey(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetCtrlKey(this$static);
}
;
cggdc.$getCurrentEventTarget = function $getCurrentEventTarget(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetCurrentTarget(this$static);
}
;
cggdc.$getDataTransfer = function $getDataTransfer(this$static){
  cggdc.$clinit_NativeEvent();
  return this$static.dataTransfer || null;
}
;
cggdc.$getEventTarget = function $getEventTarget(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetTarget(this$static);
}
;
cggdc.$getKeyCode = function $getKeyCode(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetKeyCode(this$static);
}
;
cggdc.$getMetaKey = function $getMetaKey(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetMetaKey(this$static);
}
;
cggdc.$getRelatedEventTarget = function $getRelatedEventTarget(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetRelatedTarget(this$static);
}
;
cggdc.$getShiftKey = function $getShiftKey(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetShiftKey(this$static);
}
;
cggdc.$getString_0 = function $getString_0(this$static){
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventToString(this$static);
}
;
cggdc.$getTouches = function $getTouches(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).getTouches(this$static);
}
;
cggdc.$getType_1 = function $getType_1(this$static){
  cggdc.$clinit_NativeEvent();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventGetType(this$static);
}
;
cggdc.$preventDefault = function $preventDefault(this$static){
  cggdc.$clinit_NativeEvent();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventPreventDefault(this$static);
}
;
cggdc.$stopPropagation = function $stopPropagation(this$static){
  cggdc.$clinit_NativeEvent();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).eventStopPropagation(this$static);
}
;
cggdc.BUTTON_LEFT = 1;
cggdc.BUTTON_MIDDLE = 4;
cggdc.BUTTON_RIGHT = 2;
cggdc.$clinit_NodeList = function $clinit_NodeList(){
  cggdc.$clinit_NodeList = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getItem = function $getItem(this$static, index_0){
  cggdc.$clinit_NodeList();
  return this$static[index_0];
}
;
cggdc.$getLength = function $getLength(this$static){
  cggdc.$clinit_NodeList();
  return this$static.length;
}
;
cggdc.$clinit_OptionElement = function $clinit_OptionElement(){
  cggdc.$clinit_OptionElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$getIndex = function $getIndex(this$static){
  return this$static.index;
}
;
cggdc.$getText = function $getText(this$static){
  return this$static.text;
}
;
cggdc.$getValue_1 = function $getValue_1(this$static){
  return this$static.value;
}
;
cggdc.$isDisabled_1 = function $isDisabled_1(this$static){
  return !!this$static.disabled;
}
;
cggdc.$isSelected = function $isSelected(this$static){
  return !!this$static.selected;
}
;
cggdc.$setDisabled_1 = function $setDisabled_1(this$static, disabled){
  this$static.disabled = disabled;
}
;
cggdc.$setSelected = function $setSelected(this$static, selected){
  this$static.selected = selected;
}
;
cggdc.$setText = function $setText(this$static, text_0){
  cggdc.$clinit_OptionElement();
  this$static.text = text_0;
}
;
cggdc.$setValue_1 = function $setValue_1(this$static, value_0){
  cggdc.$clinit_OptionElement();
  this$static.value = value_0;
}
;
cggdc.TAG_6 = 'option';
cggdc.$clinit_SelectElement = function $clinit_SelectElement(){
  cggdc.$clinit_SelectElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$add = function $add(this$static, option, before){
  cggdc.$clinit_SelectElement();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectAdd(this$static, option, before);
}
;
cggdc.$clear = function $clear(this$static){
  cggdc.$clinit_SelectElement();
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectClear(this$static);
}
;
cggdc.$getLength_0 = function $getLength_0(this$static){
  cggdc.$clinit_SelectElement();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectGetLength(this$static);
}
;
cggdc.$getName_1 = function $getName_1(this$static){
  cggdc.$clinit_SelectElement();
  return this$static.name;
}
;
cggdc.$getOptions = function $getOptions(this$static){
  cggdc.$clinit_SelectElement();
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectGetOptions(this$static);
}
;
cggdc.$getSelectedIndex = function $getSelectedIndex(this$static){
  cggdc.$clinit_SelectElement();
  return this$static.selectedIndex;
}
;
cggdc.$getSize_0 = function $getSize_0(this$static){
  return this$static.size;
}
;
cggdc.$getType_2 = function $getType_2(this$static){
  return this$static.type;
}
;
cggdc.$getValue_2 = function $getValue_2(this$static){
  return this$static.value;
}
;
cggdc.$isDisabled_2 = function $isDisabled_2(this$static){
  return !!this$static.disabled;
}
;
cggdc.$remove = function $remove(this$static, index_0){
  (cggdc.$clinit_DOMImpl() , cggdc.impl_2).selectRemoveOption(this$static, index_0);
}
;
cggdc.$setDisabled_2 = function $setDisabled_2(this$static, disabled){
  this$static.disabled = disabled;
}
;
cggdc.$setName_1 = function $setName_1(this$static, name_0){
  cggdc.$clinit_SelectElement();
  this$static.name = name_0;
}
;
cggdc.$setSelectedIndex = function $setSelectedIndex(this$static, index_0){
  cggdc.$clinit_SelectElement();
  this$static.selectedIndex = index_0;
}
;
cggdc.$setSize_0 = function $setSize_0(this$static, size_0){
  cggdc.$clinit_SelectElement();
  this$static.size = size_0;
}
;
cggdc.$setValue_2 = function $setValue_2(this$static, value_0){
  this$static.value = value_0;
}
;
cggdc.TAG_7 = 'select';
cggdc.$clinit_SpanElement = function $clinit_SpanElement(){
  cggdc.$clinit_SpanElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG_8 = 'span';
cggdc.$clinit_Style = function $clinit_Style(){
  cggdc.$clinit_Style = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$assertCamelCase = function $assertCamelCase(this$static, name_0){
}
;
cggdc.$setCursor = function $setCursor(this$static, value_0){
  cggdc.$clinit_Style();
  cggdc.$setProperty_0(this$static, 'cursor', value_0.getCssName());
}
;
cggdc.$setDisplay = function $setDisplay(this$static, value_0){
  cggdc.$clinit_Style();
  cggdc.$setProperty_0(this$static, 'display', value_0.getCssName());
}
;
cggdc.$setHeight_1 = function $setHeight_1(this$static, value_0, unit){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, 'height', value_0, unit);
}
;
cggdc.$setLeft = function $setLeft(this$static, value_0, unit){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, 'left', value_0, unit);
}
;
cggdc.$setPosition = function $setPosition(this$static, value_0){
  cggdc.$clinit_Style();
  cggdc.$setProperty_0(this$static, 'position', value_0.getCssName());
}
;
cggdc.$setProperty = function $setProperty(this$static, name_0, value_0, unit){
  cggdc.$assertCamelCase(this$static, name_0);
  cggdc.$setPropertyImpl(this$static, name_0, value_0 + unit.getType());
}
;
cggdc.$setProperty_0 = function $setProperty_0(this$static, name_0, value_0){
  cggdc.$clinit_Style();
  cggdc.$assertCamelCase(this$static, name_0);
  cggdc.$setPropertyImpl(this$static, name_0, value_0);
}
;
cggdc.$setPropertyImpl = function $setPropertyImpl(this$static, name_0, value_0){
  this$static[name_0] = value_0;
}
;
cggdc.$setPropertyPx = function $setPropertyPx(this$static, name_0, value_0){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, name_0, value_0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
}
;
cggdc.$setTop = function $setTop(this$static, value_0, unit){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, 'top', value_0, unit);
}
;
cggdc.$setWidth_1 = function $setWidth_1(this$static, value_0, unit){
  cggdc.$clinit_Style();
  cggdc.$setProperty(this$static, 'width', value_0, unit);
}
;
cggdc.BORDER_STYLE_DASHED = 'dashed';
cggdc.BORDER_STYLE_DOTTED = 'dotted';
cggdc.BORDER_STYLE_HIDDEN = 'hidden';
cggdc.BORDER_STYLE_NONE = 'none';
cggdc.BORDER_STYLE_SOLID = 'solid';
cggdc.CLEAR_BOTH = 'both';
cggdc.CLEAR_LEFT = 'left';
cggdc.CLEAR_NONE = 'none';
cggdc.CLEAR_RIGHT = 'right';
cggdc.CURSOR_AUTO = 'auto';
cggdc.CURSOR_COL_RESIZE = 'col-resize';
cggdc.CURSOR_CROSSHAIR = 'crosshair';
cggdc.CURSOR_DEFAULT = 'default';
cggdc.CURSOR_E_RESIZE = 'e-resize';
cggdc.CURSOR_HELP = 'help';
cggdc.CURSOR_MOVE = 'move';
cggdc.CURSOR_NE_RESIZE = 'ne-resize';
cggdc.CURSOR_NW_RESIZE = 'nw-resize';
cggdc.CURSOR_N_RESIZE = 'n-resize';
cggdc.CURSOR_POINTER = 'pointer';
cggdc.CURSOR_ROW_RESIZE = 'row-resize';
cggdc.CURSOR_SE_RESIZE = 'se-resize';
cggdc.CURSOR_SW_RESIZE = 'sw-resize';
cggdc.CURSOR_S_RESIZE = 's-resize';
cggdc.CURSOR_TEXT = 'text';
cggdc.CURSOR_WAIT = 'wait';
cggdc.CURSOR_W_RESIZE = 'w-resize';
cggdc.DISPLAY_BLOCK = 'block';
cggdc.DISPLAY_FLEX = 'flex';
cggdc.DISPLAY_INITIAL = 'initial';
cggdc.DISPLAY_INLINE = 'inline';
cggdc.DISPLAY_INLINE_BLOCK = 'inline-block';
cggdc.DISPLAY_INLINE_FLEX = 'inline-flex';
cggdc.DISPLAY_INLINE_TABLE = 'inline-table';
cggdc.DISPLAY_LIST_ITEM = 'list-item';
cggdc.DISPLAY_NONE = 'none';
cggdc.DISPLAY_RUN_IN = 'run-in';
cggdc.DISPLAY_TABLE = 'table';
cggdc.DISPLAY_TABLE_CAPTION = 'table-caption';
cggdc.DISPLAY_TABLE_CELL = 'table-cell';
cggdc.DISPLAY_TABLE_COLUMN = 'table-column';
cggdc.DISPLAY_TABLE_COLUMN_GROUP = 'table-column-group';
cggdc.DISPLAY_TABLE_FOOTER_GROUP = 'table-footer-group';
cggdc.DISPLAY_TABLE_HEADER_GROUP = 'table-header-group';
cggdc.DISPLAY_TABLE_ROW = 'table-row';
cggdc.DISPLAY_TABLE_ROW_GROUP = 'table-row-group';
cggdc.FLOAT_LEFT = 'left';
cggdc.FLOAT_NONE = 'none';
cggdc.FLOAT_RIGHT = 'right';
cggdc.FONT_STYLE_ITALIC = 'italic';
cggdc.FONT_STYLE_NORMAL = 'normal';
cggdc.FONT_STYLE_OBLIQUE = 'oblique';
cggdc.FONT_WEIGHT_BOLD = 'bold';
cggdc.FONT_WEIGHT_BOLDER = 'bolder';
cggdc.FONT_WEIGHT_LIGHTER = 'lighter';
cggdc.FONT_WEIGHT_NORMAL = 'normal';
cggdc.LIST_STYLE_TYPE_CIRCLE = 'circle';
cggdc.LIST_STYLE_TYPE_DECIMAL = 'decimal';
cggdc.LIST_STYLE_TYPE_DISC = 'disc';
cggdc.LIST_STYLE_TYPE_LOWER_ALPHA = 'lower-alpha';
cggdc.LIST_STYLE_TYPE_LOWER_ROMAN = 'lower-roman';
cggdc.LIST_STYLE_TYPE_NONE = 'none';
cggdc.LIST_STYLE_TYPE_SQUARE = 'square';
cggdc.LIST_STYLE_TYPE_UPPER_ALPHA = 'upper-alpha';
cggdc.LIST_STYLE_TYPE_UPPER_ROMAN = 'upper-roman';
cggdc.OUTLINE_STYLE_DASHED = 'dashed';
cggdc.OUTLINE_STYLE_DOTTED = 'dotted';
cggdc.OUTLINE_STYLE_DOUBLE = 'double';
cggdc.OUTLINE_STYLE_GROOVE = 'groove';
cggdc.OUTLINE_STYLE_INSET = 'inset';
cggdc.OUTLINE_STYLE_NONE = 'none';
cggdc.OUTLINE_STYLE_OUTSET = 'outset';
cggdc.OUTLINE_STYLE_RIDGE = 'ridge';
cggdc.OUTLINE_STYLE_SOLID = 'solid';
cggdc.OVERFLOW_AUTO = 'auto';
cggdc.OVERFLOW_HIDDEN = 'hidden';
cggdc.OVERFLOW_SCROLL = 'scroll';
cggdc.OVERFLOW_VISIBLE = 'visible';
cggdc.POSITION_ABSOLUTE = 'absolute';
cggdc.POSITION_FIXED = 'fixed';
cggdc.POSITION_RELATIVE = 'relative';
cggdc.POSITION_STATIC = 'static';
cggdc.STYLE_BACKGROUND_COLOR = 'backgroundColor';
cggdc.STYLE_BACKGROUND_IMAGE = 'backgroundImage';
cggdc.STYLE_BORDER_COLOR = 'borderColor';
cggdc.STYLE_BORDER_STYLE = 'borderStyle';
cggdc.STYLE_BORDER_WIDTH = 'borderWidth';
cggdc.STYLE_BOTTOM = 'bottom';
cggdc.STYLE_CLEAR = 'clear';
cggdc.STYLE_COLOR = 'color';
cggdc.STYLE_CURSOR = 'cursor';
cggdc.STYLE_DISPLAY = 'display';
cggdc.STYLE_FONT_SIZE = 'fontSize';
cggdc.STYLE_FONT_STYLE = 'fontStyle';
cggdc.STYLE_FONT_WEIGHT = 'fontWeight';
cggdc.STYLE_HEIGHT = 'height';
cggdc.STYLE_LEFT = 'left';
cggdc.STYLE_LINE_HEIGHT = 'lineHeight';
cggdc.STYLE_LIST_STYLE_TYPE = 'listStyleType';
cggdc.STYLE_MARGIN = 'margin';
cggdc.STYLE_MARGIN_BOTTOM = 'marginBottom';
cggdc.STYLE_MARGIN_LEFT = 'marginLeft';
cggdc.STYLE_MARGIN_RIGHT = 'marginRight';
cggdc.STYLE_MARGIN_TOP = 'marginTop';
cggdc.STYLE_OPACITY = 'opacity';
cggdc.STYLE_OUTLINE_COLOR = 'outlineColor';
cggdc.STYLE_OUTLINE_STYLE = 'outlineStyle';
cggdc.STYLE_OUTLINE_WIDTH = 'outlineWidth';
cggdc.STYLE_OVERFLOW = 'overflow';
cggdc.STYLE_OVERFLOW_X = 'overflowX';
cggdc.STYLE_OVERFLOW_Y = 'overflowY';
cggdc.STYLE_PADDING = 'padding';
cggdc.STYLE_PADDING_BOTTOM = 'paddingBottom';
cggdc.STYLE_PADDING_LEFT = 'paddingLeft';
cggdc.STYLE_PADDING_RIGHT = 'paddingRight';
cggdc.STYLE_PADDING_TOP = 'paddingTop';
cggdc.STYLE_POSITION = 'position';
cggdc.STYLE_RIGHT = 'right';
cggdc.STYLE_TABLE_LAYOUT = 'tableLayout';
cggdc.STYLE_TEXT_ALIGN = 'textAlign';
cggdc.STYLE_TEXT_DECORATION = 'textDecoration';
cggdc.STYLE_TEXT_INDENT = 'textIndent';
cggdc.STYLE_TEXT_JUSTIFY = 'textJustify';
cggdc.STYLE_TEXT_OVERFLOW = 'textOverflow';
cggdc.STYLE_TEXT_TRANSFORM = 'textTransform';
cggdc.STYLE_TOP = 'top';
cggdc.STYLE_VERTICAL_ALIGN = 'verticalAlign';
cggdc.STYLE_VISIBILITY = 'visibility';
cggdc.STYLE_WHITE_SPACE = 'whiteSpace';
cggdc.STYLE_WIDTH = 'width';
cggdc.STYLE_Z_INDEX = 'zIndex';
cggdc.TABLE_LAYOUT_AUTO = 'auto';
cggdc.TABLE_LAYOUT_FIXED = 'fixed';
cggdc.TEXT_ALIGN_CENTER = 'center';
cggdc.TEXT_ALIGN_JUSTIFY = 'justify';
cggdc.TEXT_ALIGN_LEFT = 'left';
cggdc.TEXT_ALIGN_RIGHT = 'right';
cggdc.TEXT_DECORATION_BLINK = 'blink';
cggdc.TEXT_DECORATION_LINE_THROUGH = 'line-through';
cggdc.TEXT_DECORATION_NONE = 'none';
cggdc.TEXT_DECORATION_OVERLINE = 'overline';
cggdc.TEXT_DECORATION_UNDERLINE = 'underline';
cggdc.TEXT_JUSTIFY_AUTO = 'auto';
cggdc.TEXT_JUSTIFY_DISTRIBUTE = 'distribute';
cggdc.TEXT_JUSTIFY_INTER_CLUSTER = 'inter-cluster';
cggdc.TEXT_JUSTIFY_INTER_IDEOGRAPH = 'inter-ideograph';
cggdc.TEXT_JUSTIFY_INTER_WORD = 'inter-word';
cggdc.TEXT_JUSTIFY_KASHIDA = 'kashida';
cggdc.TEXT_JUSTIFY_NONE = 'none';
cggdc.TEXT_OVERFLOW_CLIP = 'clip';
cggdc.TEXT_OVERFLOW_ELLIPSIS = 'ellipsis';
cggdc.TEXT_TRANSFORM_CAPITALIZE = 'capitalize';
cggdc.TEXT_TRANSFORM_LOWERCASE = 'lowercase';
cggdc.TEXT_TRANSFORM_NONE = 'none';
cggdc.TEXT_TRANSFORM_UPPERCASE = 'uppercase';
cggdc.UNIT_CM = 'cm';
cggdc.UNIT_EM = 'em';
cggdc.UNIT_EX = 'ex';
cggdc.UNIT_IN = 'in';
cggdc.UNIT_MM = 'mm';
cggdc.UNIT_PC = 'pc';
cggdc.UNIT_PCT = '%';
cggdc.UNIT_PT = 'pt';
cggdc.UNIT_PX = 'px';
cggdc.VERTICAL_ALIGN_BASELINE = 'baseline';
cggdc.VERTICAL_ALIGN_BOTTOM = 'bottom';
cggdc.VERTICAL_ALIGN_MIDDLE = 'middle';
cggdc.VERTICAL_ALIGN_SUB = 'sub';
cggdc.VERTICAL_ALIGN_SUPER = 'super';
cggdc.VERTICAL_ALIGN_TEXT_BOTTOM = 'text-bottom';
cggdc.VERTICAL_ALIGN_TEXT_TOP = 'text-top';
cggdc.VERTICAL_ALIGN_TOP = 'top';
cggdc.VISIBILITY_HIDDEN = 'hidden';
cggdc.VISIBILITY_VISIBLE = 'visible';
cggdc.WHITE_SPACE_NORMAL = 'normal';
cggdc.WHITE_SPACE_NOWRAP = 'nowrap';
cggdc.WHITE_SPACE_PRE = 'pre';
cggdc.WHITE_SPACE_PRE_LINE = 'pre-line';
cggdc.WHITE_SPACE_PRE_WRAP = 'pre-wrap';
cggdc.$clinit_Style$HasCssName = function $clinit_Style$HasCssName(){
  cggdc.$clinit_Style$HasCssName = emptyMethod;
}
;
cggl.Lcom_google_gwt_dom_client_Style$HasCssName_2_classLit = createForInterface('com.google.gwt.dom.client', 'Style/HasCssName');
cggdc.$clinit_Style$BorderStyle = function $clinit_Style$BorderStyle(){
  cggdc.$clinit_Style$BorderStyle = emptyMethod;
}
;
defineClass(983, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle', 983, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$1 = function $clinit_Style$BorderStyle$1(){
  cggdc.$clinit_Style$BorderStyle$1 = emptyMethod;
}
;
defineClass(1000, 983, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/1', 1000, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$2 = function $clinit_Style$BorderStyle$2(){
  cggdc.$clinit_Style$BorderStyle$2 = emptyMethod;
}
;
defineClass(1001, 983, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/2', 1001, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$3 = function $clinit_Style$BorderStyle$3(){
  cggdc.$clinit_Style$BorderStyle$3 = emptyMethod;
}
;
defineClass(1002, 983, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/3', 1002, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$4 = function $clinit_Style$BorderStyle$4(){
  cggdc.$clinit_Style$BorderStyle$4 = emptyMethod;
}
;
defineClass(1003, 983, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/4', 1003, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$5 = function $clinit_Style$BorderStyle$5(){
  cggdc.$clinit_Style$BorderStyle$5 = emptyMethod;
}
;
defineClass(1004, 983, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/BorderStyle/5', 1004, cggl.Lcom_google_gwt_dom_client_Style$BorderStyle_2_classLit, null, null);
cggdc.$clinit_Style$BorderStyle$Map = function $clinit_Style$BorderStyle$Map(){
  cggdc.$clinit_Style$BorderStyle$Map = emptyMethod;
}
;
defineClass(1005, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$BorderStyle$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/BorderStyle/Map', 1005, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Clear = function $clinit_Style$Clear(){
  cggdc.$clinit_Style$Clear = emptyMethod;
}
;
defineClass(984, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear', 984, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$Clear$1 = function $clinit_Style$Clear$1(){
  cggdc.$clinit_Style$Clear$1 = emptyMethod;
}
;
defineClass(1006, 984, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear/1', 1006, cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit, null, null);
cggdc.$clinit_Style$Clear$2 = function $clinit_Style$Clear$2(){
  cggdc.$clinit_Style$Clear$2 = emptyMethod;
}
;
defineClass(1007, 984, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear/2', 1007, cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit, null, null);
cggdc.$clinit_Style$Clear$3 = function $clinit_Style$Clear$3(){
  cggdc.$clinit_Style$Clear$3 = emptyMethod;
}
;
defineClass(1008, 984, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear/3', 1008, cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit, null, null);
cggdc.$clinit_Style$Clear$4 = function $clinit_Style$Clear$4(){
  cggdc.$clinit_Style$Clear$4 = emptyMethod;
}
;
defineClass(1009, 984, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Clear/4', 1009, cggl.Lcom_google_gwt_dom_client_Style$Clear_2_classLit, null, null);
cggdc.$clinit_Style$Clear$Map = function $clinit_Style$Clear$Map(){
  cggdc.$clinit_Style$Clear$Map = emptyMethod;
}
;
defineClass(1010, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Clear$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Clear/Map', 1010, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Cursor = function $clinit_Style$Cursor(){
  cggdc.$clinit_Style$Cursor = emptyMethod;
  jl.$clinit_Enum();
  cggdc.DEFAULT = new cggdc.Style$Cursor$1('DEFAULT', 0);
  cggdc.AUTO = new cggdc.Style$Cursor$2('AUTO', 1);
  cggdc.CROSSHAIR = new cggdc.Style$Cursor$3('CROSSHAIR', 2);
  cggdc.POINTER = new cggdc.Style$Cursor$4('POINTER', 3);
  cggdc.MOVE = new cggdc.Style$Cursor$5('MOVE', 4);
  cggdc.E_RESIZE = new cggdc.Style$Cursor$6('E_RESIZE', 5);
  cggdc.NE_RESIZE = new cggdc.Style$Cursor$7('NE_RESIZE', 6);
  cggdc.NW_RESIZE = new cggdc.Style$Cursor$8('NW_RESIZE', 7);
  cggdc.N_RESIZE = new cggdc.Style$Cursor$9('N_RESIZE', 8);
  cggdc.SE_RESIZE = new cggdc.Style$Cursor$10('SE_RESIZE', 9);
  cggdc.SW_RESIZE = new cggdc.Style$Cursor$11('SW_RESIZE', 10);
  cggdc.S_RESIZE = new cggdc.Style$Cursor$12('S_RESIZE', 11);
  cggdc.W_RESIZE = new cggdc.Style$Cursor$13('W_RESIZE', 12);
  cggdc.TEXT = new cggdc.Style$Cursor$14('TEXT', 13);
  cggdc.WAIT = new cggdc.Style$Cursor$15('WAIT', 14);
  cggdc.HELP = new cggdc.Style$Cursor$16('HELP', 15);
  cggdc.COL_RESIZE = new cggdc.Style$Cursor$17('COL_RESIZE', 16);
  cggdc.ROW_RESIZE = new cggdc.Style$Cursor$18('ROW_RESIZE', 17);
}
;
cggdc.Style$Cursor = function Style$Cursor(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_350();
}
;
cggdc.valueOf_10 = function valueOf_10(name_0){
  cggdc.$clinit_Style$Cursor();
  return valueOf((cggdc.$clinit_Style$Cursor$Map() , cggdc.$MAP_9), name_0);
}
;
cggdc.values_10 = function values_10(){
  cggdc.$clinit_Style$Cursor();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, 1), {4:1, 1:1, 7:1}, 36, 0, [cggdc.DEFAULT, cggdc.AUTO, cggdc.CROSSHAIR, cggdc.POINTER, cggdc.MOVE, cggdc.E_RESIZE, cggdc.NE_RESIZE, cggdc.NW_RESIZE, cggdc.N_RESIZE, cggdc.SE_RESIZE, cggdc.SW_RESIZE, cggdc.S_RESIZE, cggdc.W_RESIZE, cggdc.TEXT, cggdc.WAIT, cggdc.HELP, cggdc.COL_RESIZE, cggdc.ROW_RESIZE]);
}
;
defineClass(36, 11, {36:1, 4:1, 10:1, 11:1, 1:1});
_.$init_350 = function $init_350(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor', 36, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_10, cggdc.valueOf_10);
cggdc.$clinit_Style$Cursor$1 = function $clinit_Style$Cursor$1(){
  cggdc.$clinit_Style$Cursor$1 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$1 = function Style$Cursor$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$1();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_351();
}
;
defineClass(556, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$1);
_.$init_351 = function $init_351(){
}
;
_.getCssName = function getCssName(){
  return 'default';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/1', 556, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$10 = function $clinit_Style$Cursor$10(){
  cggdc.$clinit_Style$Cursor$10 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$10 = function Style$Cursor$10(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$10();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_352();
}
;
defineClass(565, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$10);
_.$init_352 = function $init_352(){
}
;
_.getCssName = function getCssName_0(){
  return 'se-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$10_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/10', 565, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$11 = function $clinit_Style$Cursor$11(){
  cggdc.$clinit_Style$Cursor$11 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$11 = function Style$Cursor$11(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$11();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_353();
}
;
defineClass(566, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$11);
_.$init_353 = function $init_353(){
}
;
_.getCssName = function getCssName_1(){
  return 'sw-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$11_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/11', 566, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$12 = function $clinit_Style$Cursor$12(){
  cggdc.$clinit_Style$Cursor$12 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$12 = function Style$Cursor$12(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$12();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_354();
}
;
defineClass(567, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$12);
_.$init_354 = function $init_354(){
}
;
_.getCssName = function getCssName_2(){
  return 's-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$12_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/12', 567, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$13 = function $clinit_Style$Cursor$13(){
  cggdc.$clinit_Style$Cursor$13 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$13 = function Style$Cursor$13(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$13();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_355();
}
;
defineClass(568, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$13);
_.$init_355 = function $init_355(){
}
;
_.getCssName = function getCssName_3(){
  return 'w-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$13_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/13', 568, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$14 = function $clinit_Style$Cursor$14(){
  cggdc.$clinit_Style$Cursor$14 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$14 = function Style$Cursor$14(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$14();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_356();
}
;
defineClass(569, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$14);
_.$init_356 = function $init_356(){
}
;
_.getCssName = function getCssName_4(){
  return 'text';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$14_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/14', 569, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$15 = function $clinit_Style$Cursor$15(){
  cggdc.$clinit_Style$Cursor$15 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$15 = function Style$Cursor$15(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$15();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_357();
}
;
defineClass(570, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$15);
_.$init_357 = function $init_357(){
}
;
_.getCssName = function getCssName_5(){
  return 'wait';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$15_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/15', 570, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$16 = function $clinit_Style$Cursor$16(){
  cggdc.$clinit_Style$Cursor$16 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$16 = function Style$Cursor$16(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$16();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_358();
}
;
defineClass(571, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$16);
_.$init_358 = function $init_358(){
}
;
_.getCssName = function getCssName_6(){
  return 'help';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$16_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/16', 571, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$17 = function $clinit_Style$Cursor$17(){
  cggdc.$clinit_Style$Cursor$17 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$17 = function Style$Cursor$17(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$17();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_359();
}
;
defineClass(572, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$17);
_.$init_359 = function $init_359(){
}
;
_.getCssName = function getCssName_7(){
  return 'col-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$17_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/17', 572, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$18 = function $clinit_Style$Cursor$18(){
  cggdc.$clinit_Style$Cursor$18 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$18 = function Style$Cursor$18(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$18();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_360();
}
;
defineClass(573, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$18);
_.$init_360 = function $init_360(){
}
;
_.getCssName = function getCssName_8(){
  return 'row-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$18_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/18', 573, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$2 = function $clinit_Style$Cursor$2(){
  cggdc.$clinit_Style$Cursor$2 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$2 = function Style$Cursor$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$2();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_361();
}
;
defineClass(557, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$2);
_.$init_361 = function $init_361(){
}
;
_.getCssName = function getCssName_9(){
  return 'auto';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/2', 557, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$3 = function $clinit_Style$Cursor$3(){
  cggdc.$clinit_Style$Cursor$3 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$3 = function Style$Cursor$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$3();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_362();
}
;
defineClass(558, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$3);
_.$init_362 = function $init_362(){
}
;
_.getCssName = function getCssName_10(){
  return 'crosshair';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/3', 558, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$4 = function $clinit_Style$Cursor$4(){
  cggdc.$clinit_Style$Cursor$4 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$4 = function Style$Cursor$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$4();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_363();
}
;
defineClass(559, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$4);
_.$init_363 = function $init_363(){
}
;
_.getCssName = function getCssName_11(){
  return 'pointer';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/4', 559, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$5 = function $clinit_Style$Cursor$5(){
  cggdc.$clinit_Style$Cursor$5 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$5 = function Style$Cursor$5(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$5();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_364();
}
;
defineClass(560, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$5);
_.$init_364 = function $init_364(){
}
;
_.getCssName = function getCssName_12(){
  return 'move';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/5', 560, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$6 = function $clinit_Style$Cursor$6(){
  cggdc.$clinit_Style$Cursor$6 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$6 = function Style$Cursor$6(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$6();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_365();
}
;
defineClass(561, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$6);
_.$init_365 = function $init_365(){
}
;
_.getCssName = function getCssName_13(){
  return 'e-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/6', 561, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$7 = function $clinit_Style$Cursor$7(){
  cggdc.$clinit_Style$Cursor$7 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$7 = function Style$Cursor$7(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$7();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_366();
}
;
defineClass(562, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$7);
_.$init_366 = function $init_366(){
}
;
_.getCssName = function getCssName_14(){
  return 'ne-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/7', 562, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$8 = function $clinit_Style$Cursor$8(){
  cggdc.$clinit_Style$Cursor$8 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$8 = function Style$Cursor$8(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$8();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_367();
}
;
defineClass(563, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$8);
_.$init_367 = function $init_367(){
}
;
_.getCssName = function getCssName_15(){
  return 'nw-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/8', 563, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$9 = function $clinit_Style$Cursor$9(){
  cggdc.$clinit_Style$Cursor$9 = emptyMethod;
  cggdc.$clinit_Style$Cursor();
}
;
cggdc.Style$Cursor$9 = function Style$Cursor$9(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Cursor$9();
  cggdc.Style$Cursor.call(this, enum$name, enum$ordinal);
  this.$init_368();
}
;
defineClass(564, 36, {36:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Cursor$9);
_.$init_368 = function $init_368(){
}
;
_.getCssName = function getCssName_16(){
  return 'n-resize';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Cursor$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Cursor/9', 564, cggl.Lcom_google_gwt_dom_client_Style$Cursor_2_classLit, null, null);
cggdc.$clinit_Style$Cursor$Map = function $clinit_Style$Cursor$Map(){
  cggdc.$clinit_Style$Cursor$Map = emptyMethod;
  cggdc.$MAP_9 = createValueOfMap(cggdc.values_10());
}
;
defineClass(1011, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Cursor$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Cursor/Map', 1011, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Display = function $clinit_Style$Display(){
  cggdc.$clinit_Style$Display = emptyMethod;
  jl.$clinit_Enum();
  cggdc.NONE = new cggdc.Style$Display$1('NONE', 0);
  cggdc.BLOCK = new cggdc.Style$Display$2('BLOCK', 1);
  cggdc.INLINE = new cggdc.Style$Display$3('INLINE', 2);
  cggdc.INLINE_BLOCK = new cggdc.Style$Display$4('INLINE_BLOCK', 3);
  cggdc.INLINE_TABLE = new cggdc.Style$Display$5('INLINE_TABLE', 4);
  cggdc.LIST_ITEM = new cggdc.Style$Display$6('LIST_ITEM', 5);
  cggdc.RUN_IN = new cggdc.Style$Display$7('RUN_IN', 6);
  cggdc.TABLE = new cggdc.Style$Display$8('TABLE', 7);
  cggdc.TABLE_CAPTION = new cggdc.Style$Display$9('TABLE_CAPTION', 8);
  cggdc.TABLE_COLUMN_GROUP = new cggdc.Style$Display$10('TABLE_COLUMN_GROUP', 9);
  cggdc.TABLE_HEADER_GROUP = new cggdc.Style$Display$11('TABLE_HEADER_GROUP', 10);
  cggdc.TABLE_FOOTER_GROUP = new cggdc.Style$Display$12('TABLE_FOOTER_GROUP', 11);
  cggdc.TABLE_ROW_GROUP = new cggdc.Style$Display$13('TABLE_ROW_GROUP', 12);
  cggdc.TABLE_CELL = new cggdc.Style$Display$14('TABLE_CELL', 13);
  cggdc.TABLE_COLUMN = new cggdc.Style$Display$15('TABLE_COLUMN', 14);
  cggdc.TABLE_ROW = new cggdc.Style$Display$16('TABLE_ROW', 15);
  cggdc.INITIAL = new cggdc.Style$Display$17('INITIAL', 16);
  cggdc.FLEX = new cggdc.Style$Display$18('FLEX', 17);
  cggdc.INLINE_FLEX = new cggdc.Style$Display$19('INLINE_FLEX', 18);
}
;
cggdc.Style$Display = function Style$Display(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_369();
}
;
cggdc.valueOf_11 = function valueOf_11(name_0){
  cggdc.$clinit_Style$Display();
  return valueOf((cggdc.$clinit_Style$Display$Map() , cggdc.$MAP_10), name_0);
}
;
cggdc.values_11 = function values_11(){
  cggdc.$clinit_Style$Display();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, 1), {4:1, 1:1, 7:1}, 33, 0, [cggdc.NONE, cggdc.BLOCK, cggdc.INLINE, cggdc.INLINE_BLOCK, cggdc.INLINE_TABLE, cggdc.LIST_ITEM, cggdc.RUN_IN, cggdc.TABLE, cggdc.TABLE_CAPTION, cggdc.TABLE_COLUMN_GROUP, cggdc.TABLE_HEADER_GROUP, cggdc.TABLE_FOOTER_GROUP, cggdc.TABLE_ROW_GROUP, cggdc.TABLE_CELL, cggdc.TABLE_COLUMN, cggdc.TABLE_ROW, cggdc.INITIAL, cggdc.FLEX, cggdc.INLINE_FLEX]);
}
;
defineClass(33, 11, {33:1, 4:1, 10:1, 11:1, 1:1});
_.$init_369 = function $init_369(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display', 33, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_11, cggdc.valueOf_11);
cggdc.$clinit_Style$Display$1 = function $clinit_Style$Display$1(){
  cggdc.$clinit_Style$Display$1 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$1 = function Style$Display$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$1();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_370();
}
;
defineClass(574, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$1);
_.$init_370 = function $init_370(){
}
;
_.getCssName = function getCssName_17(){
  return 'none';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/1', 574, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$10 = function $clinit_Style$Display$10(){
  cggdc.$clinit_Style$Display$10 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$10 = function Style$Display$10(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$10();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_371();
}
;
defineClass(583, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$10);
_.$init_371 = function $init_371(){
}
;
_.getCssName = function getCssName_18(){
  return 'table-column-group';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$10_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/10', 583, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$11 = function $clinit_Style$Display$11(){
  cggdc.$clinit_Style$Display$11 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$11 = function Style$Display$11(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$11();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_372();
}
;
defineClass(584, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$11);
_.$init_372 = function $init_372(){
}
;
_.getCssName = function getCssName_19(){
  return 'table-header-group';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$11_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/11', 584, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$12 = function $clinit_Style$Display$12(){
  cggdc.$clinit_Style$Display$12 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$12 = function Style$Display$12(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$12();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_373();
}
;
defineClass(585, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$12);
_.$init_373 = function $init_373(){
}
;
_.getCssName = function getCssName_20(){
  return 'table-footer-group';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$12_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/12', 585, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$13 = function $clinit_Style$Display$13(){
  cggdc.$clinit_Style$Display$13 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$13 = function Style$Display$13(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$13();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_374();
}
;
defineClass(586, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$13);
_.$init_374 = function $init_374(){
}
;
_.getCssName = function getCssName_21(){
  return 'table-row-group';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$13_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/13', 586, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$14 = function $clinit_Style$Display$14(){
  cggdc.$clinit_Style$Display$14 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$14 = function Style$Display$14(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$14();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_375();
}
;
defineClass(587, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$14);
_.$init_375 = function $init_375(){
}
;
_.getCssName = function getCssName_22(){
  return 'table-cell';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$14_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/14', 587, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$15 = function $clinit_Style$Display$15(){
  cggdc.$clinit_Style$Display$15 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$15 = function Style$Display$15(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$15();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_376();
}
;
defineClass(588, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$15);
_.$init_376 = function $init_376(){
}
;
_.getCssName = function getCssName_23(){
  return 'table-column';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$15_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/15', 588, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$16 = function $clinit_Style$Display$16(){
  cggdc.$clinit_Style$Display$16 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$16 = function Style$Display$16(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$16();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_377();
}
;
defineClass(589, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$16);
_.$init_377 = function $init_377(){
}
;
_.getCssName = function getCssName_24(){
  return 'table-row';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$16_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/16', 589, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$17 = function $clinit_Style$Display$17(){
  cggdc.$clinit_Style$Display$17 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$17 = function Style$Display$17(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$17();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_378();
}
;
defineClass(590, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$17);
_.$init_378 = function $init_378(){
}
;
_.getCssName = function getCssName_25(){
  return 'initial';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$17_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/17', 590, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$18 = function $clinit_Style$Display$18(){
  cggdc.$clinit_Style$Display$18 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$18 = function Style$Display$18(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$18();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_379();
}
;
defineClass(591, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$18);
_.$init_379 = function $init_379(){
}
;
_.getCssName = function getCssName_26(){
  return 'flex';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$18_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/18', 591, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$19 = function $clinit_Style$Display$19(){
  cggdc.$clinit_Style$Display$19 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$19 = function Style$Display$19(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$19();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_380();
}
;
defineClass(592, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$19);
_.$init_380 = function $init_380(){
}
;
_.getCssName = function getCssName_27(){
  return 'inline-flex';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$19_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/19', 592, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$2 = function $clinit_Style$Display$2(){
  cggdc.$clinit_Style$Display$2 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$2 = function Style$Display$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$2();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_381();
}
;
defineClass(575, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$2);
_.$init_381 = function $init_381(){
}
;
_.getCssName = function getCssName_28(){
  return 'block';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/2', 575, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$3 = function $clinit_Style$Display$3(){
  cggdc.$clinit_Style$Display$3 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$3 = function Style$Display$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$3();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_382();
}
;
defineClass(576, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$3);
_.$init_382 = function $init_382(){
}
;
_.getCssName = function getCssName_29(){
  return 'inline';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/3', 576, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$4 = function $clinit_Style$Display$4(){
  cggdc.$clinit_Style$Display$4 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$4 = function Style$Display$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$4();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_383();
}
;
defineClass(577, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$4);
_.$init_383 = function $init_383(){
}
;
_.getCssName = function getCssName_30(){
  return 'inline-block';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/4', 577, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$5 = function $clinit_Style$Display$5(){
  cggdc.$clinit_Style$Display$5 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$5 = function Style$Display$5(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$5();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_384();
}
;
defineClass(578, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$5);
_.$init_384 = function $init_384(){
}
;
_.getCssName = function getCssName_31(){
  return 'inline-table';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/5', 578, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$6 = function $clinit_Style$Display$6(){
  cggdc.$clinit_Style$Display$6 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$6 = function Style$Display$6(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$6();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_385();
}
;
defineClass(579, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$6);
_.$init_385 = function $init_385(){
}
;
_.getCssName = function getCssName_32(){
  return 'list-item';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/6', 579, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$7 = function $clinit_Style$Display$7(){
  cggdc.$clinit_Style$Display$7 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$7 = function Style$Display$7(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$7();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_386();
}
;
defineClass(580, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$7);
_.$init_386 = function $init_386(){
}
;
_.getCssName = function getCssName_33(){
  return 'run-in';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/7', 580, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$8 = function $clinit_Style$Display$8(){
  cggdc.$clinit_Style$Display$8 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$8 = function Style$Display$8(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$8();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_387();
}
;
defineClass(581, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$8);
_.$init_387 = function $init_387(){
}
;
_.getCssName = function getCssName_34(){
  return 'table';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/8', 581, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$9 = function $clinit_Style$Display$9(){
  cggdc.$clinit_Style$Display$9 = emptyMethod;
  cggdc.$clinit_Style$Display();
}
;
cggdc.Style$Display$9 = function Style$Display$9(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Display$9();
  cggdc.Style$Display.call(this, enum$name, enum$ordinal);
  this.$init_388();
}
;
defineClass(582, 33, {33:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Display$9);
_.$init_388 = function $init_388(){
}
;
_.getCssName = function getCssName_35(){
  return 'table-caption';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Display$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Display/9', 582, cggl.Lcom_google_gwt_dom_client_Style$Display_2_classLit, null, null);
cggdc.$clinit_Style$Display$Map = function $clinit_Style$Display$Map(){
  cggdc.$clinit_Style$Display$Map = emptyMethod;
  cggdc.$MAP_10 = createValueOfMap(cggdc.values_11());
}
;
defineClass(1012, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Display$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Display/Map', 1012, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Float = function $clinit_Style$Float(){
  cggdc.$clinit_Style$Float = emptyMethod;
}
;
defineClass(985, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Float', 985, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$Float$1 = function $clinit_Style$Float$1(){
  cggdc.$clinit_Style$Float$1 = emptyMethod;
}
;
defineClass(1013, 985, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Float/1', 1013, cggl.Lcom_google_gwt_dom_client_Style$Float_2_classLit, null, null);
cggdc.$clinit_Style$Float$2 = function $clinit_Style$Float$2(){
  cggdc.$clinit_Style$Float$2 = emptyMethod;
}
;
defineClass(1014, 985, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Float/2', 1014, cggl.Lcom_google_gwt_dom_client_Style$Float_2_classLit, null, null);
cggdc.$clinit_Style$Float$3 = function $clinit_Style$Float$3(){
  cggdc.$clinit_Style$Float$3 = emptyMethod;
}
;
defineClass(1015, 985, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Float/3', 1015, cggl.Lcom_google_gwt_dom_client_Style$Float_2_classLit, null, null);
cggdc.$clinit_Style$Float$Map = function $clinit_Style$Float$Map(){
  cggdc.$clinit_Style$Float$Map = emptyMethod;
}
;
defineClass(1016, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Float$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Float/Map', 1016, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$FontStyle = function $clinit_Style$FontStyle(){
  cggdc.$clinit_Style$FontStyle = emptyMethod;
}
;
defineClass(986, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontStyle', 986, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$FontStyle$1 = function $clinit_Style$FontStyle$1(){
  cggdc.$clinit_Style$FontStyle$1 = emptyMethod;
}
;
defineClass(1017, 986, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontStyle/1', 1017, cggl.Lcom_google_gwt_dom_client_Style$FontStyle_2_classLit, null, null);
cggdc.$clinit_Style$FontStyle$2 = function $clinit_Style$FontStyle$2(){
  cggdc.$clinit_Style$FontStyle$2 = emptyMethod;
}
;
defineClass(1018, 986, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontStyle/2', 1018, cggl.Lcom_google_gwt_dom_client_Style$FontStyle_2_classLit, null, null);
cggdc.$clinit_Style$FontStyle$3 = function $clinit_Style$FontStyle$3(){
  cggdc.$clinit_Style$FontStyle$3 = emptyMethod;
}
;
defineClass(1019, 986, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontStyle/3', 1019, cggl.Lcom_google_gwt_dom_client_Style$FontStyle_2_classLit, null, null);
cggdc.$clinit_Style$FontStyle$Map = function $clinit_Style$FontStyle$Map(){
  cggdc.$clinit_Style$FontStyle$Map = emptyMethod;
}
;
defineClass(1020, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontStyle$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/FontStyle/Map', 1020, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$FontWeight = function $clinit_Style$FontWeight(){
  cggdc.$clinit_Style$FontWeight = emptyMethod;
}
;
defineClass(987, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight', 987, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$1 = function $clinit_Style$FontWeight$1(){
  cggdc.$clinit_Style$FontWeight$1 = emptyMethod;
}
;
defineClass(1021, 987, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight/1', 1021, cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$2 = function $clinit_Style$FontWeight$2(){
  cggdc.$clinit_Style$FontWeight$2 = emptyMethod;
}
;
defineClass(1022, 987, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight/2', 1022, cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$3 = function $clinit_Style$FontWeight$3(){
  cggdc.$clinit_Style$FontWeight$3 = emptyMethod;
}
;
defineClass(1023, 987, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight/3', 1023, cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$4 = function $clinit_Style$FontWeight$4(){
  cggdc.$clinit_Style$FontWeight$4 = emptyMethod;
}
;
defineClass(1024, 987, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/FontWeight/4', 1024, cggl.Lcom_google_gwt_dom_client_Style$FontWeight_2_classLit, null, null);
cggdc.$clinit_Style$FontWeight$Map = function $clinit_Style$FontWeight$Map(){
  cggdc.$clinit_Style$FontWeight$Map = emptyMethod;
}
;
defineClass(1025, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$FontWeight$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/FontWeight/Map', 1025, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$ListStyleType = function $clinit_Style$ListStyleType(){
  cggdc.$clinit_Style$ListStyleType = emptyMethod;
}
;
defineClass(988, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType', 988, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$1 = function $clinit_Style$ListStyleType$1(){
  cggdc.$clinit_Style$ListStyleType$1 = emptyMethod;
}
;
defineClass(1026, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/1', 1026, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$2 = function $clinit_Style$ListStyleType$2(){
  cggdc.$clinit_Style$ListStyleType$2 = emptyMethod;
}
;
defineClass(1027, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/2', 1027, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$3 = function $clinit_Style$ListStyleType$3(){
  cggdc.$clinit_Style$ListStyleType$3 = emptyMethod;
}
;
defineClass(1028, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/3', 1028, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$4 = function $clinit_Style$ListStyleType$4(){
  cggdc.$clinit_Style$ListStyleType$4 = emptyMethod;
}
;
defineClass(1029, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/4', 1029, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$5 = function $clinit_Style$ListStyleType$5(){
  cggdc.$clinit_Style$ListStyleType$5 = emptyMethod;
}
;
defineClass(1030, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/5', 1030, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$6 = function $clinit_Style$ListStyleType$6(){
  cggdc.$clinit_Style$ListStyleType$6 = emptyMethod;
}
;
defineClass(1031, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/6', 1031, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$7 = function $clinit_Style$ListStyleType$7(){
  cggdc.$clinit_Style$ListStyleType$7 = emptyMethod;
}
;
defineClass(1032, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/7', 1032, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$8 = function $clinit_Style$ListStyleType$8(){
  cggdc.$clinit_Style$ListStyleType$8 = emptyMethod;
}
;
defineClass(1033, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/8', 1033, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$9 = function $clinit_Style$ListStyleType$9(){
  cggdc.$clinit_Style$ListStyleType$9 = emptyMethod;
}
;
defineClass(1034, 988, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/ListStyleType/9', 1034, cggl.Lcom_google_gwt_dom_client_Style$ListStyleType_2_classLit, null, null);
cggdc.$clinit_Style$ListStyleType$Map = function $clinit_Style$ListStyleType$Map(){
  cggdc.$clinit_Style$ListStyleType$Map = emptyMethod;
}
;
defineClass(1035, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$ListStyleType$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/ListStyleType/Map', 1035, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$OutlineStyle = function $clinit_Style$OutlineStyle(){
  cggdc.$clinit_Style$OutlineStyle = emptyMethod;
}
;
defineClass(989, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle', 989, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$1 = function $clinit_Style$OutlineStyle$1(){
  cggdc.$clinit_Style$OutlineStyle$1 = emptyMethod;
}
;
defineClass(1036, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/1', 1036, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$2 = function $clinit_Style$OutlineStyle$2(){
  cggdc.$clinit_Style$OutlineStyle$2 = emptyMethod;
}
;
defineClass(1037, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/2', 1037, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$3 = function $clinit_Style$OutlineStyle$3(){
  cggdc.$clinit_Style$OutlineStyle$3 = emptyMethod;
}
;
defineClass(1038, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/3', 1038, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$4 = function $clinit_Style$OutlineStyle$4(){
  cggdc.$clinit_Style$OutlineStyle$4 = emptyMethod;
}
;
defineClass(1039, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/4', 1039, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$5 = function $clinit_Style$OutlineStyle$5(){
  cggdc.$clinit_Style$OutlineStyle$5 = emptyMethod;
}
;
defineClass(1040, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/5', 1040, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$6 = function $clinit_Style$OutlineStyle$6(){
  cggdc.$clinit_Style$OutlineStyle$6 = emptyMethod;
}
;
defineClass(1041, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/6', 1041, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$7 = function $clinit_Style$OutlineStyle$7(){
  cggdc.$clinit_Style$OutlineStyle$7 = emptyMethod;
}
;
defineClass(1042, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/7', 1042, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$8 = function $clinit_Style$OutlineStyle$8(){
  cggdc.$clinit_Style$OutlineStyle$8 = emptyMethod;
}
;
defineClass(1043, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/8', 1043, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$9 = function $clinit_Style$OutlineStyle$9(){
  cggdc.$clinit_Style$OutlineStyle$9 = emptyMethod;
}
;
defineClass(1044, 989, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/OutlineStyle/9', 1044, cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle_2_classLit, null, null);
cggdc.$clinit_Style$OutlineStyle$Map = function $clinit_Style$OutlineStyle$Map(){
  cggdc.$clinit_Style$OutlineStyle$Map = emptyMethod;
}
;
defineClass(1045, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$OutlineStyle$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/OutlineStyle/Map', 1045, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Overflow = function $clinit_Style$Overflow(){
  cggdc.$clinit_Style$Overflow = emptyMethod;
}
;
defineClass(990, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow', 990, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$1 = function $clinit_Style$Overflow$1(){
  cggdc.$clinit_Style$Overflow$1 = emptyMethod;
}
;
defineClass(1046, 990, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow/1', 1046, cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$2 = function $clinit_Style$Overflow$2(){
  cggdc.$clinit_Style$Overflow$2 = emptyMethod;
}
;
defineClass(1047, 990, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow/2', 1047, cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$3 = function $clinit_Style$Overflow$3(){
  cggdc.$clinit_Style$Overflow$3 = emptyMethod;
}
;
defineClass(1048, 990, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow/3', 1048, cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$4 = function $clinit_Style$Overflow$4(){
  cggdc.$clinit_Style$Overflow$4 = emptyMethod;
}
;
defineClass(1049, 990, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Overflow/4', 1049, cggl.Lcom_google_gwt_dom_client_Style$Overflow_2_classLit, null, null);
cggdc.$clinit_Style$Overflow$Map = function $clinit_Style$Overflow$Map(){
  cggdc.$clinit_Style$Overflow$Map = emptyMethod;
}
;
defineClass(1050, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Overflow$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Overflow/Map', 1050, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Position = function $clinit_Style$Position(){
  cggdc.$clinit_Style$Position = emptyMethod;
  jl.$clinit_Enum();
  cggdc.STATIC = new cggdc.Style$Position$1('STATIC', 0);
  cggdc.RELATIVE = new cggdc.Style$Position$2('RELATIVE', 1);
  cggdc.ABSOLUTE = new cggdc.Style$Position$3('ABSOLUTE', 2);
  cggdc.FIXED = new cggdc.Style$Position$4('FIXED', 3);
}
;
cggdc.Style$Position = function Style$Position(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_389();
}
;
cggdc.valueOf_12 = function valueOf_12(name_0){
  cggdc.$clinit_Style$Position();
  return valueOf((cggdc.$clinit_Style$Position$Map() , cggdc.$MAP_11), name_0);
}
;
cggdc.values_12 = function values_12(){
  cggdc.$clinit_Style$Position();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, 1), {4:1, 1:1, 7:1}, 104, 0, [cggdc.STATIC, cggdc.RELATIVE, cggdc.ABSOLUTE, cggdc.FIXED]);
}
;
defineClass(104, 11, {104:1, 4:1, 10:1, 11:1, 1:1});
_.$init_389 = function $init_389(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position', 104, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_12, cggdc.valueOf_12);
cggdc.$clinit_Style$Position$1 = function $clinit_Style$Position$1(){
  cggdc.$clinit_Style$Position$1 = emptyMethod;
  cggdc.$clinit_Style$Position();
}
;
cggdc.Style$Position$1 = function Style$Position$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position$1();
  cggdc.Style$Position.call(this, enum$name, enum$ordinal);
  this.$init_390();
}
;
defineClass(593, 104, {104:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Position$1);
_.$init_390 = function $init_390(){
}
;
_.getCssName = function getCssName_36(){
  return 'static';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position/1', 593, cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, null, null);
cggdc.$clinit_Style$Position$2 = function $clinit_Style$Position$2(){
  cggdc.$clinit_Style$Position$2 = emptyMethod;
  cggdc.$clinit_Style$Position();
}
;
cggdc.Style$Position$2 = function Style$Position$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position$2();
  cggdc.Style$Position.call(this, enum$name, enum$ordinal);
  this.$init_391();
}
;
defineClass(594, 104, {104:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Position$2);
_.$init_391 = function $init_391(){
}
;
_.getCssName = function getCssName_37(){
  return 'relative';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position/2', 594, cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, null, null);
cggdc.$clinit_Style$Position$3 = function $clinit_Style$Position$3(){
  cggdc.$clinit_Style$Position$3 = emptyMethod;
  cggdc.$clinit_Style$Position();
}
;
cggdc.Style$Position$3 = function Style$Position$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position$3();
  cggdc.Style$Position.call(this, enum$name, enum$ordinal);
  this.$init_392();
}
;
defineClass(595, 104, {104:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Position$3);
_.$init_392 = function $init_392(){
}
;
_.getCssName = function getCssName_38(){
  return 'absolute';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position/3', 595, cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, null, null);
cggdc.$clinit_Style$Position$4 = function $clinit_Style$Position$4(){
  cggdc.$clinit_Style$Position$4 = emptyMethod;
  cggdc.$clinit_Style$Position();
}
;
cggdc.Style$Position$4 = function Style$Position$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Position$4();
  cggdc.Style$Position.call(this, enum$name, enum$ordinal);
  this.$init_393();
}
;
defineClass(596, 104, {104:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Position$4);
_.$init_393 = function $init_393(){
}
;
_.getCssName = function getCssName_39(){
  return 'fixed';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Position$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Position/4', 596, cggl.Lcom_google_gwt_dom_client_Style$Position_2_classLit, null, null);
cggdc.$clinit_Style$Position$Map = function $clinit_Style$Position$Map(){
  cggdc.$clinit_Style$Position$Map = emptyMethod;
  cggdc.$MAP_11 = createValueOfMap(cggdc.values_12());
}
;
defineClass(1051, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Position$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Position/Map', 1051, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TableLayout = function $clinit_Style$TableLayout(){
  cggdc.$clinit_Style$TableLayout = emptyMethod;
}
;
defineClass(991, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TableLayout_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TableLayout', 991, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TableLayout$1 = function $clinit_Style$TableLayout$1(){
  cggdc.$clinit_Style$TableLayout$1 = emptyMethod;
}
;
defineClass(1052, 991, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TableLayout$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TableLayout/1', 1052, cggl.Lcom_google_gwt_dom_client_Style$TableLayout_2_classLit, null, null);
cggdc.$clinit_Style$TableLayout$2 = function $clinit_Style$TableLayout$2(){
  cggdc.$clinit_Style$TableLayout$2 = emptyMethod;
}
;
defineClass(1053, 991, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TableLayout$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TableLayout/2', 1053, cggl.Lcom_google_gwt_dom_client_Style$TableLayout_2_classLit, null, null);
cggdc.$clinit_Style$TableLayout$Map = function $clinit_Style$TableLayout$Map(){
  cggdc.$clinit_Style$TableLayout$Map = emptyMethod;
}
;
defineClass(1054, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TableLayout$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TableLayout/Map', 1054, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextAlign = function $clinit_Style$TextAlign(){
  cggdc.$clinit_Style$TextAlign = emptyMethod;
  jl.$clinit_Enum();
  cggdc.CENTER_0 = new cggdc.Style$TextAlign$1('CENTER', 0);
  cggdc.JUSTIFY = new cggdc.Style$TextAlign$2('JUSTIFY', 1);
  cggdc.LEFT_0 = new cggdc.Style$TextAlign$3('LEFT', 2);
  cggdc.RIGHT_0 = new cggdc.Style$TextAlign$4('RIGHT', 3);
}
;
cggdc.Style$TextAlign = function Style$TextAlign(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_394();
}
;
cggdc.valueOf_13 = function valueOf_13(name_0){
  cggdc.$clinit_Style$TextAlign();
  return valueOf((cggdc.$clinit_Style$TextAlign$Map() , cggdc.$MAP_12), name_0);
}
;
cggdc.values_13 = function values_13(){
  cggdc.$clinit_Style$TextAlign();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, 1), {4:1, 1:1, 7:1}, 105, 0, [cggdc.CENTER_0, cggdc.JUSTIFY, cggdc.LEFT_0, cggdc.RIGHT_0]);
}
;
defineClass(105, 11, {105:1, 4:1, 10:1, 11:1, 1:1});
_.$init_394 = function $init_394(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign', 105, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_13, cggdc.valueOf_13);
cggdc.$clinit_Style$TextAlign$1 = function $clinit_Style$TextAlign$1(){
  cggdc.$clinit_Style$TextAlign$1 = emptyMethod;
  cggdc.$clinit_Style$TextAlign();
}
;
cggdc.Style$TextAlign$1 = function Style$TextAlign$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign$1();
  cggdc.Style$TextAlign.call(this, enum$name, enum$ordinal);
  this.$init_395();
}
;
defineClass(597, 105, {105:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$TextAlign$1);
_.$init_395 = function $init_395(){
}
;
_.getCssName = function getCssName_40(){
  return 'center';
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign/1', 597, cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, null, null);
cggdc.$clinit_Style$TextAlign$2 = function $clinit_Style$TextAlign$2(){
  cggdc.$clinit_Style$TextAlign$2 = emptyMethod;
  cggdc.$clinit_Style$TextAlign();
}
;
cggdc.Style$TextAlign$2 = function Style$TextAlign$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign$2();
  cggdc.Style$TextAlign.call(this, enum$name, enum$ordinal);
  this.$init_396();
}
;
defineClass(598, 105, {105:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$TextAlign$2);
_.$init_396 = function $init_396(){
}
;
_.getCssName = function getCssName_41(){
  return 'justify';
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign/2', 598, cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, null, null);
cggdc.$clinit_Style$TextAlign$3 = function $clinit_Style$TextAlign$3(){
  cggdc.$clinit_Style$TextAlign$3 = emptyMethod;
  cggdc.$clinit_Style$TextAlign();
}
;
cggdc.Style$TextAlign$3 = function Style$TextAlign$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign$3();
  cggdc.Style$TextAlign.call(this, enum$name, enum$ordinal);
  this.$init_397();
}
;
defineClass(599, 105, {105:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$TextAlign$3);
_.$init_397 = function $init_397(){
}
;
_.getCssName = function getCssName_42(){
  return 'left';
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign/3', 599, cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, null, null);
cggdc.$clinit_Style$TextAlign$4 = function $clinit_Style$TextAlign$4(){
  cggdc.$clinit_Style$TextAlign$4 = emptyMethod;
  cggdc.$clinit_Style$TextAlign();
}
;
cggdc.Style$TextAlign$4 = function Style$TextAlign$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$TextAlign$4();
  cggdc.Style$TextAlign.call(this, enum$name, enum$ordinal);
  this.$init_398();
}
;
defineClass(600, 105, {105:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$TextAlign$4);
_.$init_398 = function $init_398(){
}
;
_.getCssName = function getCssName_43(){
  return 'right';
}
;
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextAlign/4', 600, cggl.Lcom_google_gwt_dom_client_Style$TextAlign_2_classLit, null, null);
cggdc.$clinit_Style$TextAlign$Map = function $clinit_Style$TextAlign$Map(){
  cggdc.$clinit_Style$TextAlign$Map = emptyMethod;
  cggdc.$MAP_12 = createValueOfMap(cggdc.values_13());
}
;
defineClass(1055, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextAlign$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextAlign/Map', 1055, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextDecoration = function $clinit_Style$TextDecoration(){
  cggdc.$clinit_Style$TextDecoration = emptyMethod;
}
;
defineClass(992, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration', 992, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$1 = function $clinit_Style$TextDecoration$1(){
  cggdc.$clinit_Style$TextDecoration$1 = emptyMethod;
}
;
defineClass(1056, 992, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/1', 1056, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$2 = function $clinit_Style$TextDecoration$2(){
  cggdc.$clinit_Style$TextDecoration$2 = emptyMethod;
}
;
defineClass(1057, 992, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/2', 1057, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$3 = function $clinit_Style$TextDecoration$3(){
  cggdc.$clinit_Style$TextDecoration$3 = emptyMethod;
}
;
defineClass(1058, 992, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/3', 1058, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$4 = function $clinit_Style$TextDecoration$4(){
  cggdc.$clinit_Style$TextDecoration$4 = emptyMethod;
}
;
defineClass(1059, 992, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/4', 1059, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$5 = function $clinit_Style$TextDecoration$5(){
  cggdc.$clinit_Style$TextDecoration$5 = emptyMethod;
}
;
defineClass(1060, 992, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextDecoration/5', 1060, cggl.Lcom_google_gwt_dom_client_Style$TextDecoration_2_classLit, null, null);
cggdc.$clinit_Style$TextDecoration$Map = function $clinit_Style$TextDecoration$Map(){
  cggdc.$clinit_Style$TextDecoration$Map = emptyMethod;
}
;
defineClass(1061, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextDecoration$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextDecoration/Map', 1061, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextJustify = function $clinit_Style$TextJustify(){
  cggdc.$clinit_Style$TextJustify = emptyMethod;
}
;
defineClass(993, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify', 993, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$1 = function $clinit_Style$TextJustify$1(){
  cggdc.$clinit_Style$TextJustify$1 = emptyMethod;
}
;
defineClass(1062, 993, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/1', 1062, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$2 = function $clinit_Style$TextJustify$2(){
  cggdc.$clinit_Style$TextJustify$2 = emptyMethod;
}
;
defineClass(1063, 993, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/2', 1063, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$3 = function $clinit_Style$TextJustify$3(){
  cggdc.$clinit_Style$TextJustify$3 = emptyMethod;
}
;
defineClass(1064, 993, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/3', 1064, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$4 = function $clinit_Style$TextJustify$4(){
  cggdc.$clinit_Style$TextJustify$4 = emptyMethod;
}
;
defineClass(1065, 993, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/4', 1065, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$5 = function $clinit_Style$TextJustify$5(){
  cggdc.$clinit_Style$TextJustify$5 = emptyMethod;
}
;
defineClass(1066, 993, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/5', 1066, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$6 = function $clinit_Style$TextJustify$6(){
  cggdc.$clinit_Style$TextJustify$6 = emptyMethod;
}
;
defineClass(1067, 993, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/6', 1067, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$7 = function $clinit_Style$TextJustify$7(){
  cggdc.$clinit_Style$TextJustify$7 = emptyMethod;
}
;
defineClass(1068, 993, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextJustify/7', 1068, cggl.Lcom_google_gwt_dom_client_Style$TextJustify_2_classLit, null, null);
cggdc.$clinit_Style$TextJustify$Map = function $clinit_Style$TextJustify$Map(){
  cggdc.$clinit_Style$TextJustify$Map = emptyMethod;
}
;
defineClass(1069, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextJustify$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextJustify/Map', 1069, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextOverflow = function $clinit_Style$TextOverflow(){
  cggdc.$clinit_Style$TextOverflow = emptyMethod;
}
;
defineClass(994, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextOverflow_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextOverflow', 994, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TextOverflow$1 = function $clinit_Style$TextOverflow$1(){
  cggdc.$clinit_Style$TextOverflow$1 = emptyMethod;
}
;
defineClass(1070, 994, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextOverflow$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextOverflow/1', 1070, cggl.Lcom_google_gwt_dom_client_Style$TextOverflow_2_classLit, null, null);
cggdc.$clinit_Style$TextOverflow$2 = function $clinit_Style$TextOverflow$2(){
  cggdc.$clinit_Style$TextOverflow$2 = emptyMethod;
}
;
defineClass(1071, 994, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextOverflow$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextOverflow/2', 1071, cggl.Lcom_google_gwt_dom_client_Style$TextOverflow_2_classLit, null, null);
cggdc.$clinit_Style$TextOverflow$Map = function $clinit_Style$TextOverflow$Map(){
  cggdc.$clinit_Style$TextOverflow$Map = emptyMethod;
}
;
defineClass(1072, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextOverflow$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextOverflow/Map', 1072, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$TextTransform = function $clinit_Style$TextTransform(){
  cggdc.$clinit_Style$TextTransform = emptyMethod;
}
;
defineClass(995, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform', 995, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$1 = function $clinit_Style$TextTransform$1(){
  cggdc.$clinit_Style$TextTransform$1 = emptyMethod;
}
;
defineClass(1073, 995, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform/1', 1073, cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$2 = function $clinit_Style$TextTransform$2(){
  cggdc.$clinit_Style$TextTransform$2 = emptyMethod;
}
;
defineClass(1074, 995, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform/2', 1074, cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$3 = function $clinit_Style$TextTransform$3(){
  cggdc.$clinit_Style$TextTransform$3 = emptyMethod;
}
;
defineClass(1075, 995, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform/3', 1075, cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$4 = function $clinit_Style$TextTransform$4(){
  cggdc.$clinit_Style$TextTransform$4 = emptyMethod;
}
;
defineClass(1076, 995, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/TextTransform/4', 1076, cggl.Lcom_google_gwt_dom_client_Style$TextTransform_2_classLit, null, null);
cggdc.$clinit_Style$TextTransform$Map = function $clinit_Style$TextTransform$Map(){
  cggdc.$clinit_Style$TextTransform$Map = emptyMethod;
}
;
defineClass(1077, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$TextTransform$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/TextTransform/Map', 1077, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Unit = function $clinit_Style$Unit(){
  cggdc.$clinit_Style$Unit = emptyMethod;
  jl.$clinit_Enum();
  cggdc.PX = new cggdc.Style$Unit$1('PX', 0);
  cggdc.PCT = new cggdc.Style$Unit$2('PCT', 1);
  cggdc.EM = new cggdc.Style$Unit$3('EM', 2);
  cggdc.EX = new cggdc.Style$Unit$4('EX', 3);
  cggdc.PT = new cggdc.Style$Unit$5('PT', 4);
  cggdc.PC = new cggdc.Style$Unit$6('PC', 5);
  cggdc.IN = new cggdc.Style$Unit$7('IN', 6);
  cggdc.CM = new cggdc.Style$Unit$8('CM', 7);
  cggdc.MM = new cggdc.Style$Unit$9('MM', 8);
}
;
cggdc.Style$Unit = function Style$Unit(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_399();
}
;
cggdc.valueOf_14 = function valueOf_14(name_0){
  cggdc.$clinit_Style$Unit();
  return valueOf((cggdc.$clinit_Style$Unit$Map() , cggdc.$MAP_13), name_0);
}
;
cggdc.values_14 = function values_14(){
  cggdc.$clinit_Style$Unit();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, 1), {4:1, 1:1, 7:1}, 62, 0, [cggdc.PX, cggdc.PCT, cggdc.EM, cggdc.EX, cggdc.PT, cggdc.PC, cggdc.IN, cggdc.CM, cggdc.MM]);
}
;
defineClass(62, 11, {62:1, 4:1, 10:1, 11:1, 1:1});
_.$init_399 = function $init_399(){
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit', 62, cggl.Ljava_lang_Enum_2_classLit, cggdc.values_14, cggdc.valueOf_14);
cggdc.$clinit_Style$Unit$1 = function $clinit_Style$Unit$1(){
  cggdc.$clinit_Style$Unit$1 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$1 = function Style$Unit$1(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$1();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_400();
}
;
defineClass(547, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$1);
_.$init_400 = function $init_400(){
}
;
_.getType = function getType_4(){
  return 'px';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/1', 547, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$2 = function $clinit_Style$Unit$2(){
  cggdc.$clinit_Style$Unit$2 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$2 = function Style$Unit$2(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$2();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_401();
}
;
defineClass(548, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$2);
_.$init_401 = function $init_401(){
}
;
_.getType = function getType_5(){
  return '%';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/2', 548, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$3 = function $clinit_Style$Unit$3(){
  cggdc.$clinit_Style$Unit$3 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$3 = function Style$Unit$3(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$3();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_402();
}
;
defineClass(549, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$3);
_.$init_402 = function $init_402(){
}
;
_.getType = function getType_6(){
  return 'em';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/3', 549, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$4 = function $clinit_Style$Unit$4(){
  cggdc.$clinit_Style$Unit$4 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$4 = function Style$Unit$4(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$4();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_403();
}
;
defineClass(550, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$4);
_.$init_403 = function $init_403(){
}
;
_.getType = function getType_7(){
  return 'ex';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/4', 550, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$5 = function $clinit_Style$Unit$5(){
  cggdc.$clinit_Style$Unit$5 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$5 = function Style$Unit$5(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$5();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_404();
}
;
defineClass(551, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$5);
_.$init_404 = function $init_404(){
}
;
_.getType = function getType_8(){
  return 'pt';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/5', 551, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$6 = function $clinit_Style$Unit$6(){
  cggdc.$clinit_Style$Unit$6 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$6 = function Style$Unit$6(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$6();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_405();
}
;
defineClass(552, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$6);
_.$init_405 = function $init_405(){
}
;
_.getType = function getType_9(){
  return 'pc';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/6', 552, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$7 = function $clinit_Style$Unit$7(){
  cggdc.$clinit_Style$Unit$7 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$7 = function Style$Unit$7(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$7();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_406();
}
;
defineClass(553, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$7);
_.$init_406 = function $init_406(){
}
;
_.getType = function getType_10(){
  return 'in';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/7', 553, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$8 = function $clinit_Style$Unit$8(){
  cggdc.$clinit_Style$Unit$8 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$8 = function Style$Unit$8(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$8();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_407();
}
;
defineClass(554, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$8);
_.$init_407 = function $init_407(){
}
;
_.getType = function getType_11(){
  return 'cm';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/8', 554, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$9 = function $clinit_Style$Unit$9(){
  cggdc.$clinit_Style$Unit$9 = emptyMethod;
  cggdc.$clinit_Style$Unit();
}
;
cggdc.Style$Unit$9 = function Style$Unit$9(enum$name, enum$ordinal){
  cggdc.$clinit_Style$Unit$9();
  cggdc.Style$Unit.call(this, enum$name, enum$ordinal);
  this.$init_408();
}
;
defineClass(555, 62, {62:1, 4:1, 10:1, 11:1, 1:1}, cggdc.Style$Unit$9);
_.$init_408 = function $init_408(){
}
;
_.getType = function getType_12(){
  return 'mm';
}
;
cggl.Lcom_google_gwt_dom_client_Style$Unit$9_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Unit/9', 555, cggl.Lcom_google_gwt_dom_client_Style$Unit_2_classLit, null, null);
cggdc.$clinit_Style$Unit$Map = function $clinit_Style$Unit$Map(){
  cggdc.$clinit_Style$Unit$Map = emptyMethod;
  cggdc.$MAP_13 = createValueOfMap(cggdc.values_14());
}
;
defineClass(999, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Unit$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Unit/Map', 999, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$VerticalAlign = function $clinit_Style$VerticalAlign(){
  cggdc.$clinit_Style$VerticalAlign = emptyMethod;
}
;
defineClass(996, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign', 996, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$1 = function $clinit_Style$VerticalAlign$1(){
  cggdc.$clinit_Style$VerticalAlign$1 = emptyMethod;
}
;
defineClass(1078, 996, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/1', 1078, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$2 = function $clinit_Style$VerticalAlign$2(){
  cggdc.$clinit_Style$VerticalAlign$2 = emptyMethod;
}
;
defineClass(1079, 996, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/2', 1079, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$3 = function $clinit_Style$VerticalAlign$3(){
  cggdc.$clinit_Style$VerticalAlign$3 = emptyMethod;
}
;
defineClass(1080, 996, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/3', 1080, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$4 = function $clinit_Style$VerticalAlign$4(){
  cggdc.$clinit_Style$VerticalAlign$4 = emptyMethod;
}
;
defineClass(1081, 996, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/4', 1081, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$5 = function $clinit_Style$VerticalAlign$5(){
  cggdc.$clinit_Style$VerticalAlign$5 = emptyMethod;
}
;
defineClass(1082, 996, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/5', 1082, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$6 = function $clinit_Style$VerticalAlign$6(){
  cggdc.$clinit_Style$VerticalAlign$6 = emptyMethod;
}
;
defineClass(1083, 996, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$6_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/6', 1083, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$7 = function $clinit_Style$VerticalAlign$7(){
  cggdc.$clinit_Style$VerticalAlign$7 = emptyMethod;
}
;
defineClass(1084, 996, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$7_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/7', 1084, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$8 = function $clinit_Style$VerticalAlign$8(){
  cggdc.$clinit_Style$VerticalAlign$8 = emptyMethod;
}
;
defineClass(1085, 996, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$8_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/VerticalAlign/8', 1085, cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign_2_classLit, null, null);
cggdc.$clinit_Style$VerticalAlign$Map = function $clinit_Style$VerticalAlign$Map(){
  cggdc.$clinit_Style$VerticalAlign$Map = emptyMethod;
}
;
defineClass(1086, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$VerticalAlign$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/VerticalAlign/Map', 1086, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$Visibility = function $clinit_Style$Visibility(){
  cggdc.$clinit_Style$Visibility = emptyMethod;
}
;
defineClass(997, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Visibility_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Visibility', 997, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$Visibility$1 = function $clinit_Style$Visibility$1(){
  cggdc.$clinit_Style$Visibility$1 = emptyMethod;
}
;
defineClass(1087, 997, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Visibility$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Visibility/1', 1087, cggl.Lcom_google_gwt_dom_client_Style$Visibility_2_classLit, null, null);
cggdc.$clinit_Style$Visibility$2 = function $clinit_Style$Visibility$2(){
  cggdc.$clinit_Style$Visibility$2 = emptyMethod;
}
;
defineClass(1088, 997, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$Visibility$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/Visibility/2', 1088, cggl.Lcom_google_gwt_dom_client_Style$Visibility_2_classLit, null, null);
cggdc.$clinit_Style$Visibility$Map = function $clinit_Style$Visibility$Map(){
  cggdc.$clinit_Style$Visibility$Map = emptyMethod;
}
;
defineClass(1089, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$Visibility$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/Visibility/Map', 1089, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_Style$WhiteSpace = function $clinit_Style$WhiteSpace(){
  cggdc.$clinit_Style$WhiteSpace = emptyMethod;
}
;
defineClass(998, 11, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace', 998, cggl.Ljava_lang_Enum_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$1 = function $clinit_Style$WhiteSpace$1(){
  cggdc.$clinit_Style$WhiteSpace$1 = emptyMethod;
}
;
defineClass(1090, 998, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$1_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/1', 1090, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$2 = function $clinit_Style$WhiteSpace$2(){
  cggdc.$clinit_Style$WhiteSpace$2 = emptyMethod;
}
;
defineClass(1091, 998, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$2_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/2', 1091, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$3 = function $clinit_Style$WhiteSpace$3(){
  cggdc.$clinit_Style$WhiteSpace$3 = emptyMethod;
}
;
defineClass(1092, 998, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$3_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/3', 1092, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$4 = function $clinit_Style$WhiteSpace$4(){
  cggdc.$clinit_Style$WhiteSpace$4 = emptyMethod;
}
;
defineClass(1093, 998, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$4_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/4', 1093, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$5 = function $clinit_Style$WhiteSpace$5(){
  cggdc.$clinit_Style$WhiteSpace$5 = emptyMethod;
}
;
defineClass(1094, 998, {4:1, 10:1, 11:1, 1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$5_2_classLit = createForEnum('com.google.gwt.dom.client', 'Style/WhiteSpace/5', 1094, cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace_2_classLit, null, null);
cggdc.$clinit_Style$WhiteSpace$Map = function $clinit_Style$WhiteSpace$Map(){
  cggdc.$clinit_Style$WhiteSpace$Map = emptyMethod;
}
;
defineClass(1095, 1, {1:1});
cggl.Lcom_google_gwt_dom_client_Style$WhiteSpace$Map_2_classLit = createForClass('com.google.gwt.dom.client', 'Style/WhiteSpace/Map', 1095, cggl.Ljava_lang_Object_2_classLit);
cggdc.$clinit_TableCellElement = function $clinit_TableCellElement(){
  cggdc.$clinit_TableCellElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG_TD = 'td';
cggdc.TAG_TH = 'th';
cggdc.$clinit_TableColElement = function $clinit_TableColElement(){
  cggdc.$clinit_TableColElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$setWidth_2 = function $setWidth_2(this$static, width_0){
  this$static.width = width_0;
}
;
cggdc.TAG_COL = 'col';
cggdc.TAG_COLGROUP = 'colgroup';
cggdc.$clinit_TableElement = function $clinit_TableElement(){
  cggdc.$clinit_TableElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.$setCellPadding = function $setCellPadding(this$static, cellPadding){
  this$static.cellPadding = cellPadding;
}
;
cggdc.$setWidth_3 = function $setWidth_3(this$static, width_0){
  this$static.width = width_0;
}
;
cggdc.TAG_9 = 'table';
cggdc.$clinit_TableRowElement = function $clinit_TableRowElement(){
  cggdc.$clinit_TableRowElement = emptyMethod;
  cggdc.$clinit_Element();
}
;
cggdc.TAG_10 = 'tr';
cggdc.$clinit_TableSectionElement = function $clinit_TableSectionElement(){
  cggdc.$clinit_TableSectionElement = emptyMethod;
  cggdc.$clinit_Element();
  cggdc.TAGS = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['tbody', 'tfoot', 'thead']);
}
;
cggdc.TAG_TBODY = 'tbody';
cggdc.TAG_TFOOT = 'tfoot';
cggdc.TAG_THEAD = 'thead';
cggdc.$clinit_Touch = function $clinit_Touch(){
  cggdc.$clinit_Touch = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggdc.$getClientX_0 = function $getClientX_0(this$static){
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).touchGetClientX(this$static);
}
;
cggdc.$getClientY_0 = function $getClientY_0(this$static){
  return (cggdc.$clinit_DOMImpl() , cggdc.impl_2).touchGetClientY(this$static);
}
;
cggdc.$getRelativeX = function $getRelativeX(this$static, target){
  cggdc.$clinit_Touch();
  return cggdc.$getClientX_0(this$static) - cggdc.$getAbsoluteLeft(target) + cggdc.$getScrollLeft(target) + cggdc.$getScrollLeft_0(cggdc.$getOwnerDocument(target));
}
;
cggdc.$getRelativeY = function $getRelativeY(this$static, target){
  cggdc.$clinit_Touch();
  return cggdc.$getClientY_0(this$static) - cggdc.$getAbsoluteTop(target) + cggdc.$getScrollTop(target) + cggdc.$getScrollTop_0(cggdc.$getOwnerDocument(target));
}
;
cggec.$clinit_IsEditor = function $clinit_IsEditor(){
  cggec.$clinit_IsEditor = emptyMethod;
}
;
cggl.Lcom_google_gwt_editor_client_IsEditor_2_classLit = createForInterface('com.google.gwt.editor.client', 'IsEditor');
cgwbes.$clinit_Event = function $clinit_Event(){
  cgwbes.$clinit_Event = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.Event_0 = function Event_0(){
  cgwbes.$clinit_Event();
  Object_0.call(this);
  this.$init_409();
}
;
defineClass(266, 1, {1:1});
_.$init_409 = function $init_409(){
}
;
_.getSource = function getSource(){
  return this.source;
}
;
_.setSource = function setSource(source){
  this.source = source;
}
;
_.toString_0 = function toString_25(){
  return 'An event type';
}
;
cggl.Lcom_google_web_bindery_event_shared_Event_2_classLit = createForClass('com.google.web.bindery.event.shared', 'Event', 266, cggl.Ljava_lang_Object_2_classLit);
cgges.$clinit_GwtEvent = function $clinit_GwtEvent(){
  cgges.$clinit_GwtEvent = emptyMethod;
  cgwbes.$clinit_Event();
}
;
cgges.GwtEvent = function GwtEvent(){
  cgges.$clinit_GwtEvent();
  cgwbes.Event_0.call(this);
  this.$init_410();
}
;
defineClass(131, 266, {1:1});
_.$init_410 = function $init_410(){
}
;
_.dispatch = function dispatch(handler){
  this.dispatch_0(castTo(handler, 21));
}
;
_.getAssociatedType = function getAssociatedType(){
  return this.getAssociatedType_0();
}
;
_.assertLive = function assertLive(){
}
;
_.getSource = function getSource_0(){
  this.assertLive();
  return getClassPrototype(266).getSource.call(this);
}
;
_.isLive = function isLive(){
  return !this.dead;
}
;
_.kill = function kill(){
  this.dead = true;
  this.setSource(null);
}
;
_.overrideSource = function overrideSource(source){
  getClassPrototype(266).setSource.call(this, source);
}
;
_.revive = function revive(){
  this.dead = false;
  this.setSource(null);
}
;
_.dead = false;
cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit = createForClass('com.google.gwt.event.shared', 'GwtEvent', 131, cggl.Lcom_google_web_bindery_event_shared_Event_2_classLit);
cggedc.$clinit_HasNativeEvent = function $clinit_HasNativeEvent(){
  cggedc.$clinit_HasNativeEvent = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasNativeEvent_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasNativeEvent');
cggedc.$clinit_DomEvent = function $clinit_DomEvent(){
  cggedc.$clinit_DomEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggedc.DomEvent = function DomEvent(){
  cggedc.$clinit_DomEvent();
  cgges.GwtEvent.call(this);
  this.$init_411();
}
;
cggedc.fireNativeEvent = function fireNativeEvent(nativeEvent, handlerSource, relativeElem){
  cggedc.$clinit_DomEvent();
  var currentNative, currentRelativeElem, type_0, type$iterator, types;
  if (isNotNull(cggedc.registered)) {
    types = castTo(cggedc.registered.unsafeGet(cggdc.$getType_1(nativeEvent)), 57);
    if (isNotNull(types)) {
      for (type$iterator = types.iterator(); type$iterator.hasNext_0();) {
        type_0 = castTo(type$iterator.next_3(), 51);
        currentNative = type_0.flyweight.nativeEvent;
        currentRelativeElem = type_0.flyweight.relativeElem;
        type_0.flyweight.setNativeEvent(nativeEvent);
        type_0.flyweight.setRelativeElement(relativeElem);
        handlerSource.fireEvent(type_0.flyweight);
        type_0.flyweight.setNativeEvent(currentNative);
        type_0.flyweight.setRelativeElement(currentRelativeElem);
      }
    }
  }
}
;
cggedc.init_7 = function init_7(){
  cggedc.$clinit_DomEvent();
  cggedc.registered = new cggedc.PrivateMap;
}
;
defineClass(154, 131, {1:1});
_.$init_411 = function $init_411(){
}
;
_.getAssociatedType_0 = function getAssociatedType_0(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_1(){
  return this.getAssociatedType_1();
}
;
_.getNativeEvent = function getNativeEvent(){
  this.assertLive();
  return this.nativeEvent;
}
;
_.getRelativeElement = function getRelativeElement(){
  this.assertLive();
  return this.relativeElem;
}
;
_.preventDefault_0 = function preventDefault(){
  this.assertLive();
  if (isNotNull(this.nativeEvent)) {
    cggdc.$preventDefault(this.nativeEvent);
  }
}
;
_.setNativeEvent = function setNativeEvent(nativeEvent){
  this.nativeEvent = nativeEvent;
}
;
_.setRelativeElement = function setRelativeElement(relativeElem){
  this.relativeElem = relativeElem;
}
;
_.stopPropagation_0 = function stopPropagation(){
  this.assertLive();
  cggdc.$stopPropagation(this.nativeEvent);
}
;
cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DomEvent', 154, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cggedc.$clinit_BlurEvent = function $clinit_BlurEvent(){
  cggedc.$clinit_BlurEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
  cggedc.TYPE = new cggedc.DomEvent$Type('blur', new cggedc.BlurEvent);
}
;
cggedc.BlurEvent = function BlurEvent(){
  cggedc.DomEvent.call(this);
  this.$init_412();
}
;
cggedc.getType_13 = function getType_13(){
  cggedc.$clinit_BlurEvent();
  return cggedc.TYPE;
}
;
defineClass(666, 154, {1:1}, cggedc.BlurEvent);
_.$init_412 = function $init_412(){
}
;
_.dispatch_0 = function dispatch_1(handler){
  this.dispatch_1(castTo(handler, 322));
}
;
_.getAssociatedType_0 = function getAssociatedType_3(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_4(){
  return this.getAssociatedType_1();
}
;
_.dispatch_1 = function dispatch_0(handler){
  handler.onBlur(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_2(){
  return cggedc.TYPE;
}
;
cggl.Lcom_google_gwt_event_dom_client_BlurEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'BlurEvent', 666, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_ChangeEvent = function $clinit_ChangeEvent(){
  cggedc.$clinit_ChangeEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
  cggedc.TYPE_0 = new cggedc.DomEvent$Type('change', new cggedc.ChangeEvent);
}
;
cggedc.ChangeEvent = function ChangeEvent(){
  cggedc.DomEvent.call(this);
  this.$init_413();
}
;
cggedc.getType_14 = function getType_14(){
  cggedc.$clinit_ChangeEvent();
  return cggedc.TYPE_0;
}
;
defineClass(801, 154, {1:1}, cggedc.ChangeEvent);
_.$init_413 = function $init_413(){
}
;
_.dispatch_0 = function dispatch_3(handler){
  this.dispatch_2(castTo(handler, 1352));
}
;
_.getAssociatedType_0 = function getAssociatedType_6(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_7(){
  return this.getAssociatedType_1();
}
;
_.dispatch_2 = function dispatch_2(handler){
  handler.onChange_1(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_5(){
  return cggedc.TYPE_0;
}
;
cggl.Lcom_google_gwt_event_dom_client_ChangeEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'ChangeEvent', 801, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_ChangeHandler = function $clinit_ChangeHandler(){
  cggedc.$clinit_ChangeHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_ChangeHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'ChangeHandler');
cggedc.$clinit_HumanInputEvent = function $clinit_HumanInputEvent(){
  cggedc.$clinit_HumanInputEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
}
;
cggedc.HumanInputEvent = function HumanInputEvent(){
  cggedc.$clinit_HumanInputEvent();
  cggedc.DomEvent.call(this);
  this.$init_414();
}
;
defineClass(320, 154, {1:1});
_.$init_414 = function $init_414(){
}
;
_.isAltKeyDown = function isAltKeyDown(){
  return cggdc.$getAltKey(this.getNativeEvent());
}
;
_.isControlKeyDown = function isControlKeyDown(){
  return cggdc.$getCtrlKey(this.getNativeEvent());
}
;
_.isMetaKeyDown = function isMetaKeyDown(){
  return cggdc.$getMetaKey(this.getNativeEvent());
}
;
_.isShiftKeyDown = function isShiftKeyDown(){
  return cggdc.$getShiftKey(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_HumanInputEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'HumanInputEvent', 320, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_MouseEvent = function $clinit_MouseEvent(){
  cggedc.$clinit_MouseEvent = emptyMethod;
  cggedc.$clinit_HumanInputEvent();
}
;
cggedc.MouseEvent_0 = function MouseEvent_0(){
  cggedc.$clinit_MouseEvent();
  cggedc.HumanInputEvent.call(this);
  this.$init_415();
}
;
defineClass(153, 320, {1:1});
_.$init_415 = function $init_415(){
}
;
_.getClientX = function getClientX(){
  return cggdc.$getClientX(this.getNativeEvent());
}
;
_.getClientY = function getClientY(){
  return cggdc.$getClientY(this.getNativeEvent());
}
;
_.getNativeButton = function getNativeButton(){
  return cggdc.$getButton(this.getNativeEvent());
}
;
_.getRelativeX = function getRelativeX(target){
  var e;
  e = this.getNativeEvent();
  return cggdc.$getClientX(e) - cggdc.$getAbsoluteLeft(target) + cggdc.$getScrollLeft(target) + cggdc.$getScrollLeft_0(cggdc.$getOwnerDocument(target));
}
;
_.getRelativeY = function getRelativeY(target){
  var e;
  e = this.getNativeEvent();
  return cggdc.$getClientY(e) - cggdc.$getAbsoluteTop(target) + cggdc.$getScrollTop(target) + cggdc.$getScrollTop_0(cggdc.$getOwnerDocument(target));
}
;
_.getX_1 = function getX_7(){
  var relativeElem;
  relativeElem = this.getRelativeElement();
  if (isNotNull(relativeElem)) {
    return this.getRelativeX(relativeElem);
  }
  return this.getClientX();
}
;
_.getY_1 = function getY_7(){
  var relativeElem;
  relativeElem = this.getRelativeElement();
  if (isNotNull(relativeElem)) {
    return this.getRelativeY(relativeElem);
  }
  return this.getClientY();
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseEvent', 153, cggl.Lcom_google_gwt_event_dom_client_HumanInputEvent_2_classLit);
cggedc.$clinit_ClickEvent = function $clinit_ClickEvent(){
  cggedc.$clinit_ClickEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_1 = new cggedc.DomEvent$Type('click', new cggedc.ClickEvent);
}
;
cggedc.ClickEvent = function ClickEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_416();
}
;
cggedc.getType_15 = function getType_15(){
  cggedc.$clinit_ClickEvent();
  return cggedc.TYPE_1;
}
;
defineClass(672, 153, {1:1}, cggedc.ClickEvent);
_.$init_416 = function $init_416(){
}
;
_.dispatch_0 = function dispatch_5(handler){
  this.dispatch_3(castTo(handler, 114));
}
;
_.getAssociatedType_0 = function getAssociatedType_9(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_10(){
  return this.getAssociatedType_1();
}
;
_.dispatch_3 = function dispatch_4(handler){
  handler.onClick(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_8(){
  return cggedc.TYPE_1;
}
;
cggl.Lcom_google_gwt_event_dom_client_ClickEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'ClickEvent', 672, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cgwbes.$clinit_Event$Type = function $clinit_Event$Type(){
  cgwbes.$clinit_Event$Type = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.Event$Type = function Event$Type(){
  cgwbes.$clinit_Event$Type();
  Object_0.call(this);
  this.$init_417();
  this.index_0 = ++cgwbes.nextHashCode;
}
;
defineClass(469, 1, {1:1});
_.$init_417 = function $init_417(){
}
;
_.hashCode_1 = function hashCode_6(){
  return this.index_0;
}
;
_.toString_0 = function toString_26(){
  return 'Event type';
}
;
_.index_0 = 0;
cgwbes.nextHashCode = 0;
cggl.Lcom_google_web_bindery_event_shared_Event$Type_2_classLit = createForClass('com.google.web.bindery.event.shared', 'Event/Type', 469, cggl.Ljava_lang_Object_2_classLit);
cgges.$clinit_GwtEvent$Type = function $clinit_GwtEvent$Type(){
  cgges.$clinit_GwtEvent$Type = emptyMethod;
  cgwbes.$clinit_Event$Type();
}
;
cgges.GwtEvent$Type = function GwtEvent$Type(){
  cgges.$clinit_GwtEvent$Type();
  cgwbes.Event$Type.call(this);
  this.$init_418();
}
;
defineClass(103, 469, {103:1, 1:1}, cgges.GwtEvent$Type);
_.$init_418 = function $init_418(){
}
;
cggl.Lcom_google_gwt_event_shared_GwtEvent$Type_2_classLit = createForClass('com.google.gwt.event.shared', 'GwtEvent/Type', 103, cggl.Lcom_google_web_bindery_event_shared_Event$Type_2_classLit);
cggedc.$clinit_DomEvent$Type = function $clinit_DomEvent$Type(){
  cggedc.$clinit_DomEvent$Type = emptyMethod;
  cgges.$clinit_GwtEvent$Type();
}
;
cggedc.DomEvent$Type = function DomEvent$Type(eventName, flyweight){
  cggedc.$clinit_DomEvent$Type();
  var types;
  cgges.GwtEvent$Type.call(this);
  this.$init_419();
  this.flyweight = flyweight;
  if (isNull((cggedc.$clinit_DomEvent() , cggedc.registered))) {
    cggedc.init_7();
  }
  types = castTo((cggedc.$clinit_DomEvent() , cggedc.registered).unsafeGet(eventName), 57);
  if (isNull(types)) {
    types = new ju.ArrayList;
    (cggedc.$clinit_DomEvent() , cggedc.registered).unsafePut(eventName, types);
  }
  types.add(this);
  this.name_0 = eventName;
}
;
defineClass(51, 103, {51:1, 103:1, 1:1}, cggedc.DomEvent$Type);
_.$init_419 = function $init_419(){
}
;
_.getName_0 = function getName_8(){
  return this.name_0;
}
;
cggl.Lcom_google_gwt_event_dom_client_DomEvent$Type_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DomEvent/Type', 51, cggl.Lcom_google_gwt_event_shared_GwtEvent$Type_2_classLit);
cggedc.$clinit_DoubleClickEvent = function $clinit_DoubleClickEvent(){
  cggedc.$clinit_DoubleClickEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_2 = new cggedc.DomEvent$Type('dblclick', new cggedc.DoubleClickEvent);
}
;
cggedc.DoubleClickEvent = function DoubleClickEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_420();
}
;
cggedc.getType_16 = function getType_16(){
  cggedc.$clinit_DoubleClickEvent();
  return cggedc.TYPE_2;
}
;
defineClass(673, 153, {1:1}, cggedc.DoubleClickEvent);
_.$init_420 = function $init_420(){
}
;
_.dispatch_0 = function dispatch_7(handler){
  this.dispatch_4(castTo(handler, 888));
}
;
_.getAssociatedType_0 = function getAssociatedType_12(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_13(){
  return this.getAssociatedType_1();
}
;
_.dispatch_4 = function dispatch_6(handler){
  handler.onDoubleClick(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_11(){
  return cggedc.TYPE_2;
}
;
cggl.Lcom_google_gwt_event_dom_client_DoubleClickEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DoubleClickEvent', 673, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_DragDropEventBase = function $clinit_DragDropEventBase(){
  cggedc.$clinit_DragDropEventBase = emptyMethod;
  cggedc.$clinit_DomEvent();
}
;
cggedc.DragDropEventBase = function DragDropEventBase(){
  cggedc.$clinit_DragDropEventBase();
  cggedc.DomEvent.call(this);
  this.$init_421();
}
;
defineClass(234, 154, {1:1});
_.$init_421 = function $init_421(){
}
;
_.getData_0 = function getData(format){
  var dt;
  dt = this.getDataTransfer();
  return cggdc.$getData(this.getDataTransfer(), format);
}
;
_.getDataTransfer = function getDataTransfer(){
  return cggdc.$getDataTransfer(this.getNativeEvent());
}
;
_.setData_0 = function setData(format, data_0){
  cggdc.$setData(this.getDataTransfer(), format, data_0);
}
;
cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragDropEventBase', 234, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_DragDropEventBase$DragSupportDetector = function $clinit_DragDropEventBase$DragSupportDetector(){
  cggedc.$clinit_DragDropEventBase$DragSupportDetector = emptyMethod;
}
;
defineClass(1161, 1, {1:1});
cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase$DragSupportDetector_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragDropEventBase/DragSupportDetector', 1161, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_DragDropEventBase$DragSupportDetectorNo = function $clinit_DragDropEventBase$DragSupportDetectorNo(){
  cggedc.$clinit_DragDropEventBase$DragSupportDetectorNo = emptyMethod;
}
;
defineClass(1162, 1161, {1:1});
cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase$DragSupportDetectorNo_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragDropEventBase/DragSupportDetectorNo', 1162, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase$DragSupportDetector_2_classLit);
cggedc.$clinit_DragLeaveEvent = function $clinit_DragLeaveEvent(){
  cggedc.$clinit_DragLeaveEvent = emptyMethod;
  cggedc.$clinit_DragDropEventBase();
  cggedc.TYPE_3 = new cggedc.DomEvent$Type('dragleave', new cggedc.DragLeaveEvent);
}
;
cggedc.DragLeaveEvent = function DragLeaveEvent(){
  cggedc.DragDropEventBase.call(this);
  this.$init_422();
}
;
cggedc.getType_17 = function getType_17(){
  cggedc.$clinit_DragLeaveEvent();
  return cggedc.TYPE_3;
}
;
defineClass(670, 234, {1:1}, cggedc.DragLeaveEvent);
_.$init_422 = function $init_422(){
}
;
_.dispatch_0 = function dispatch_9(handler){
  this.dispatch_5(castTo(handler, 909));
}
;
_.getAssociatedType_0 = function getAssociatedType_15(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_16(){
  return this.getAssociatedType_1();
}
;
_.dispatch_5 = function dispatch_8(handler){
  handler.onDragLeave(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_14(){
  return cggedc.TYPE_3;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragLeaveEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragLeaveEvent', 670, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit);
cggedc.$clinit_DragOverEvent = function $clinit_DragOverEvent(){
  cggedc.$clinit_DragOverEvent = emptyMethod;
  cggedc.$clinit_DragDropEventBase();
  cggedc.TYPE_4 = new cggedc.DomEvent$Type('dragover', new cggedc.DragOverEvent);
}
;
cggedc.DragOverEvent = function DragOverEvent(){
  cggedc.DragDropEventBase.call(this);
  this.$init_423();
}
;
cggedc.getType_18 = function getType_18(){
  cggedc.$clinit_DragOverEvent();
  return cggedc.TYPE_4;
}
;
defineClass(669, 234, {1:1}, cggedc.DragOverEvent);
_.$init_423 = function $init_423(){
}
;
_.dispatch_0 = function dispatch_11(handler){
  this.dispatch_6(castTo(handler, 908));
}
;
_.getAssociatedType_0 = function getAssociatedType_18(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_19(){
  return this.getAssociatedType_1();
}
;
_.dispatch_6 = function dispatch_10(handler){
  handler.onDragOver(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_17(){
  return cggedc.TYPE_4;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragOverEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragOverEvent', 669, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit);
cggedc.$clinit_DragStartEvent = function $clinit_DragStartEvent(){
  cggedc.$clinit_DragStartEvent = emptyMethod;
  cggedc.$clinit_DragDropEventBase();
  cggedc.TYPE_5 = new cggedc.DomEvent$Type('dragstart', new cggedc.DragStartEvent);
}
;
cggedc.DragStartEvent = function DragStartEvent(){
  cggedc.DragDropEventBase.call(this);
  this.$init_424();
}
;
cggedc.getType_19 = function getType_19(){
  cggedc.$clinit_DragStartEvent();
  return cggedc.TYPE_5;
}
;
defineClass(685, 234, {1:1}, cggedc.DragStartEvent);
_.$init_424 = function $init_424(){
}
;
_.dispatch_0 = function dispatch_13(handler){
  this.dispatch_7(castTo(handler, 915));
}
;
_.getAssociatedType_0 = function getAssociatedType_21(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_22(){
  return this.getAssociatedType_1();
}
;
_.dispatch_7 = function dispatch_12(handler){
  handler.onDragStart(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_20(){
  return cggedc.TYPE_5;
}
;
cggl.Lcom_google_gwt_event_dom_client_DragStartEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DragStartEvent', 685, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit);
cggedc.$clinit_DropEvent = function $clinit_DropEvent(){
  cggedc.$clinit_DropEvent = emptyMethod;
  cggedc.$clinit_DragDropEventBase();
  cggedc.TYPE_6 = new cggedc.DomEvent$Type('drop', new cggedc.DropEvent);
}
;
cggedc.DropEvent = function DropEvent(){
  cggedc.DragDropEventBase.call(this);
  this.$init_425();
}
;
cggedc.getType_20 = function getType_20(){
  cggedc.$clinit_DropEvent();
  return cggedc.TYPE_6;
}
;
defineClass(671, 234, {1:1}, cggedc.DropEvent);
_.$init_425 = function $init_425(){
}
;
_.dispatch_0 = function dispatch_15(handler){
  this.dispatch_8(castTo(handler, 910));
}
;
_.getAssociatedType_0 = function getAssociatedType_24(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_25(){
  return this.getAssociatedType_1();
}
;
_.dispatch_8 = function dispatch_14(handler){
  handler.onDrop(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_23(){
  return cggedc.TYPE_6;
}
;
cggl.Lcom_google_gwt_event_dom_client_DropEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'DropEvent', 671, cggl.Lcom_google_gwt_event_dom_client_DragDropEventBase_2_classLit);
cggedc.$clinit_FocusEvent = function $clinit_FocusEvent(){
  cggedc.$clinit_FocusEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
  cggedc.TYPE_7 = new cggedc.DomEvent$Type('focus', new cggedc.FocusEvent_0);
}
;
cggedc.FocusEvent_0 = function FocusEvent_0(){
  cggedc.DomEvent.call(this);
  this.$init_426();
}
;
cggedc.getType_21 = function getType_21(){
  cggedc.$clinit_FocusEvent();
  return cggedc.TYPE_7;
}
;
defineClass(665, 154, {1:1}, cggedc.FocusEvent_0);
_.$init_426 = function $init_426(){
}
;
_.dispatch_0 = function dispatch_17(handler){
  this.dispatch_9(castTo(handler, 321));
}
;
_.getAssociatedType_0 = function getAssociatedType_27(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_28(){
  return this.getAssociatedType_1();
}
;
_.dispatch_9 = function dispatch_16(handler){
  handler.onFocus(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_26(){
  return cggedc.TYPE_7;
}
;
cggl.Lcom_google_gwt_event_dom_client_FocusEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'FocusEvent', 665, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_HasErrorHandlers = function $clinit_HasErrorHandlers(){
  cggedc.$clinit_HasErrorHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasErrorHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasErrorHandlers');
cggedc.$clinit_HasLoadHandlers = function $clinit_HasLoadHandlers(){
  cggedc.$clinit_HasLoadHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_HasLoadHandlers_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'HasLoadHandlers');
cggedc.$clinit_KeyEvent = function $clinit_KeyEvent(){
  cggedc.$clinit_KeyEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
}
;
cggedc.KeyEvent_0 = function KeyEvent_0(){
  cggedc.$clinit_KeyEvent();
  cggedc.DomEvent.call(this);
  this.$init_427();
}
;
defineClass(350, 154, {1:1});
_.$init_427 = function $init_427(){
}
;
_.isAltKeyDown = function isAltKeyDown_0(){
  return cggdc.$getAltKey(this.getNativeEvent());
}
;
_.isControlKeyDown = function isControlKeyDown_0(){
  return cggdc.$getCtrlKey(this.getNativeEvent());
}
;
_.isMetaKeyDown = function isMetaKeyDown_0(){
  return cggdc.$getMetaKey(this.getNativeEvent());
}
;
_.isShiftKeyDown = function isShiftKeyDown_0(){
  return cggdc.$getShiftKey(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyEvent', 350, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_KeyCodeEvent = function $clinit_KeyCodeEvent(){
  cggedc.$clinit_KeyCodeEvent = emptyMethod;
  cggedc.$clinit_KeyEvent();
}
;
cggedc.KeyCodeEvent = function KeyCodeEvent(){
  cggedc.$clinit_KeyCodeEvent();
  cggedc.KeyEvent_0.call(this);
  this.$init_428();
}
;
defineClass(351, 350, {1:1});
_.$init_428 = function $init_428(){
}
;
_.getNativeKeyCode = function getNativeKeyCode(){
  return cggdc.$getKeyCode(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyCodeEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyCodeEvent', 351, cggl.Lcom_google_gwt_event_dom_client_KeyEvent_2_classLit);
cggedc.$clinit_KeyDownEvent = function $clinit_KeyDownEvent(){
  cggedc.$clinit_KeyDownEvent = emptyMethod;
  cggedc.$clinit_KeyCodeEvent();
  cggedc.TYPE_8 = new cggedc.DomEvent$Type('keydown', new cggedc.KeyDownEvent);
}
;
cggedc.KeyDownEvent = function KeyDownEvent(){
  cggedc.KeyCodeEvent.call(this);
  this.$init_429();
}
;
cggedc.getType_22 = function getType_22(){
  cggedc.$clinit_KeyDownEvent();
  return cggedc.TYPE_8;
}
;
defineClass(682, 351, {1:1}, cggedc.KeyDownEvent);
_.$init_429 = function $init_429(){
}
;
_.dispatch_0 = function dispatch_19(handler){
  this.dispatch_10(castTo(handler, 911));
}
;
_.getAssociatedType_0 = function getAssociatedType_30(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_31(){
  return this.getAssociatedType_1();
}
;
_.dispatch_10 = function dispatch_18(handler){
  handler.onKeyDown(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_29(){
  return cggedc.TYPE_8;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyDownEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyDownEvent', 682, cggl.Lcom_google_gwt_event_dom_client_KeyCodeEvent_2_classLit);
cggedc.$clinit_KeyPressEvent = function $clinit_KeyPressEvent(){
  cggedc.$clinit_KeyPressEvent = emptyMethod;
  cggedc.$clinit_KeyEvent();
  cggedc.TYPE_9 = new cggedc.DomEvent$Type('keypress', new cggedc.KeyPressEvent);
}
;
cggedc.KeyPressEvent = function KeyPressEvent(){
  cggedc.KeyEvent_0.call(this);
  this.$init_430();
}
;
cggedc.getType_23 = function getType_23(){
  cggedc.$clinit_KeyPressEvent();
  return cggedc.TYPE_9;
}
;
defineClass(684, 350, {1:1}, cggedc.KeyPressEvent);
_.$init_430 = function $init_430(){
}
;
_.dispatch_0 = function dispatch_21(handler){
  this.dispatch_11(castTo(handler, 912));
}
;
_.getAssociatedType_0 = function getAssociatedType_33(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_34(){
  return this.getAssociatedType_1();
}
;
_.dispatch_11 = function dispatch_20(handler){
  handler.onKeyPress(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_32(){
  return cggedc.TYPE_9;
}
;
_.getCharCode = function getCharCode(){
  return narrow_char(this.getUnicodeCharCode());
}
;
_.getUnicodeCharCode = function getUnicodeCharCode(){
  return cggdc.$getCharCode(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyPressEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyPressEvent', 684, cggl.Lcom_google_gwt_event_dom_client_KeyEvent_2_classLit);
cggedc.$clinit_KeyUpEvent = function $clinit_KeyUpEvent(){
  cggedc.$clinit_KeyUpEvent = emptyMethod;
  cggedc.$clinit_KeyCodeEvent();
  cggedc.TYPE_10 = new cggedc.DomEvent$Type('keyup', new cggedc.KeyUpEvent);
}
;
cggedc.KeyUpEvent = function KeyUpEvent(){
  cggedc.KeyCodeEvent.call(this);
  this.$init_431();
}
;
cggedc.getType_24 = function getType_24(){
  cggedc.$clinit_KeyUpEvent();
  return cggedc.TYPE_10;
}
;
defineClass(683, 351, {1:1}, cggedc.KeyUpEvent);
_.$init_431 = function $init_431(){
}
;
_.dispatch_0 = function dispatch_23(handler){
  this.dispatch_12(castTo(handler, 480));
}
;
_.getAssociatedType_0 = function getAssociatedType_36(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_37(){
  return this.getAssociatedType_1();
}
;
_.dispatch_12 = function dispatch_22(handler){
  handler.onKeyUp(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_35(){
  return cggedc.TYPE_10;
}
;
cggl.Lcom_google_gwt_event_dom_client_KeyUpEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'KeyUpEvent', 683, cggl.Lcom_google_gwt_event_dom_client_KeyCodeEvent_2_classLit);
cggedc.$clinit_LoadEvent = function $clinit_LoadEvent(){
  cggedc.$clinit_LoadEvent = emptyMethod;
  cggedc.$clinit_DomEvent();
  cggedc.TYPE_11 = new cggedc.DomEvent$Type('load', new cggedc.LoadEvent);
}
;
cggedc.LoadEvent = function LoadEvent(){
  cggedc.DomEvent.call(this);
  this.$init_432();
}
;
cggedc.getType_25 = function getType_25(){
  cggedc.$clinit_LoadEvent();
  return cggedc.TYPE_11;
}
;
defineClass(728, 154, {1:1}, cggedc.LoadEvent);
_.$init_432 = function $init_432(){
}
;
_.dispatch_0 = function dispatch_25(handler){
  this.dispatch_13(castTo(handler, 251));
}
;
_.getAssociatedType_0 = function getAssociatedType_39(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_40(){
  return this.getAssociatedType_1();
}
;
_.dispatch_13 = function dispatch_24(handler){
  handler.onLoad(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_38(){
  return cggedc.TYPE_11;
}
;
cggl.Lcom_google_gwt_event_dom_client_LoadEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'LoadEvent', 728, cggl.Lcom_google_gwt_event_dom_client_DomEvent_2_classLit);
cggedc.$clinit_MouseDownEvent = function $clinit_MouseDownEvent(){
  cggedc.$clinit_MouseDownEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_12 = new cggedc.DomEvent$Type('mousedown', new cggedc.MouseDownEvent);
}
;
cggedc.MouseDownEvent = function MouseDownEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_433();
}
;
cggedc.getType_26 = function getType_26(){
  cggedc.$clinit_MouseDownEvent();
  return cggedc.TYPE_12;
}
;
defineClass(676, 153, {1:1}, cggedc.MouseDownEvent);
_.$init_433 = function $init_433(){
}
;
_.dispatch_0 = function dispatch_27(handler){
  this.dispatch_14(castTo(handler, 217));
}
;
_.getAssociatedType_0 = function getAssociatedType_42(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_43(){
  return this.getAssociatedType_1();
}
;
_.dispatch_14 = function dispatch_26(handler){
  handler.onMouseDown(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_41(){
  return cggedc.TYPE_12;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseDownEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseDownEvent', 676, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_MouseMoveEvent = function $clinit_MouseMoveEvent(){
  cggedc.$clinit_MouseMoveEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_13 = new cggedc.DomEvent$Type('mousemove', new cggedc.MouseMoveEvent);
}
;
cggedc.MouseMoveEvent = function MouseMoveEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_434();
}
;
cggedc.getType_27 = function getType_27(){
  cggedc.$clinit_MouseMoveEvent();
  return cggedc.TYPE_13;
}
;
defineClass(674, 153, {1:1}, cggedc.MouseMoveEvent);
_.$init_434 = function $init_434(){
}
;
_.dispatch_0 = function dispatch_29(handler){
  this.dispatch_15(castTo(handler, 265));
}
;
_.getAssociatedType_0 = function getAssociatedType_45(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_46(){
  return this.getAssociatedType_1();
}
;
_.dispatch_15 = function dispatch_28(handler){
  handler.onMouseMove(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_44(){
  return cggedc.TYPE_13;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseMoveEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseMoveEvent', 674, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_MouseOutEvent = function $clinit_MouseOutEvent(){
  cggedc.$clinit_MouseOutEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_14 = new cggedc.DomEvent$Type('mouseout', new cggedc.MouseOutEvent);
}
;
cggedc.MouseOutEvent = function MouseOutEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_435();
}
;
cggedc.getType_28 = function getType_28(){
  cggedc.$clinit_MouseOutEvent();
  return cggedc.TYPE_14;
}
;
defineClass(675, 153, {1:1}, cggedc.MouseOutEvent);
_.$init_435 = function $init_435(){
}
;
_.dispatch_0 = function dispatch_31(handler){
  this.dispatch_16(castTo(handler, 319));
}
;
_.getAssociatedType_0 = function getAssociatedType_48(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_49(){
  return this.getAssociatedType_1();
}
;
_.dispatch_16 = function dispatch_30(handler){
  handler.onMouseOut(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_47(){
  return cggedc.TYPE_14;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseOutEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseOutEvent', 675, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_MouseOverEvent = function $clinit_MouseOverEvent(){
  cggedc.$clinit_MouseOverEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_15 = new cggedc.DomEvent$Type('mouseover', new cggedc.MouseOverEvent);
}
;
cggedc.MouseOverEvent = function MouseOverEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_436();
}
;
cggedc.getType_29 = function getType_29(){
  cggedc.$clinit_MouseOverEvent();
  return cggedc.TYPE_15;
}
;
defineClass(797, 153, {1:1}, cggedc.MouseOverEvent);
_.$init_436 = function $init_436(){
}
;
_.dispatch_0 = function dispatch_33(handler){
  this.dispatch_17(castTo(handler, 1350));
}
;
_.getAssociatedType_0 = function getAssociatedType_51(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_52(){
  return this.getAssociatedType_1();
}
;
_.dispatch_17 = function dispatch_32(handler){
  handler.onMouseOver(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_50(){
  return cggedc.TYPE_15;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseOverEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseOverEvent', 797, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_MouseOverHandler = function $clinit_MouseOverHandler(){
  cggedc.$clinit_MouseOverHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseOverHandler_2_classLit = createForInterface('com.google.gwt.event.dom.client', 'MouseOverHandler');
cggedc.$clinit_MouseUpEvent = function $clinit_MouseUpEvent(){
  cggedc.$clinit_MouseUpEvent = emptyMethod;
  cggedc.$clinit_MouseEvent();
  cggedc.TYPE_16 = new cggedc.DomEvent$Type('mouseup', new cggedc.MouseUpEvent);
}
;
cggedc.MouseUpEvent = function MouseUpEvent(){
  cggedc.MouseEvent_0.call(this);
  this.$init_437();
}
;
cggedc.getType_30 = function getType_30(){
  cggedc.$clinit_MouseUpEvent();
  return cggedc.TYPE_16;
}
;
defineClass(680, 153, {1:1}, cggedc.MouseUpEvent);
_.$init_437 = function $init_437(){
}
;
_.dispatch_0 = function dispatch_35(handler){
  this.dispatch_18(castTo(handler, 218));
}
;
_.getAssociatedType_0 = function getAssociatedType_54(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_55(){
  return this.getAssociatedType_1();
}
;
_.dispatch_18 = function dispatch_34(handler){
  handler.onMouseUp(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_53(){
  return cggedc.TYPE_16;
}
;
cggl.Lcom_google_gwt_event_dom_client_MouseUpEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'MouseUpEvent', 680, cggl.Lcom_google_gwt_event_dom_client_MouseEvent_2_classLit);
cggedc.$clinit_PrivateMap = function $clinit_PrivateMap(){
  cggedc.$clinit_PrivateMap = emptyMethod;
  jl.$clinit_Object();
}
;
cggedc.PrivateMap = function PrivateMap(){
  cggedc.$clinit_PrivateMap();
  Object_0.call(this);
  this.$init_438();
  if (isScript()) {
    this.map_0 = cggcc.$cast(cggedc.create_5());
  }
   else {
    this.javaMap = new ju.HashMap;
  }
}
;
defineClass(468, 1, {1:1}, cggedc.PrivateMap);
_.$init_438 = function $init_438(){
}
;
_.get_3 = function get_20(key){
  if (isScript()) {
    return cggedc.$unsafeGet(this.map_0, key);
  }
   else {
    return this.javaMap.get(key + '');
  }
}
;
_.unsafeGet = function unsafeGet(key){
  if (isScript()) {
    return cggedc.$unsafeGet_0(this.map_0, key);
  }
   else {
    return this.javaMap.get(key);
  }
}
;
_.unsafePut = function unsafePut(key, value_0){
  if (isScript()) {
    cggedc.$unsafePut(this.map_0, key, value_0);
  }
   else {
    this.javaMap.put(key, value_0);
  }
}
;
cggl.Lcom_google_gwt_event_dom_client_PrivateMap_2_classLit = createForClass('com.google.gwt.event.dom.client', 'PrivateMap', 468, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_PrivateMap$JsMap = function $clinit_PrivateMap$JsMap(){
  cggedc.$clinit_PrivateMap$JsMap = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggedc.$unsafeGet = function $unsafeGet(this$static, key){
  cggedc.$clinit_PrivateMap$JsMap();
  return this$static[key];
}
;
cggedc.$unsafeGet_0 = function $unsafeGet_0(this$static, key){
  cggedc.$clinit_PrivateMap$JsMap();
  return this$static[key];
}
;
cggedc.$unsafePut = function $unsafePut(this$static, key, value_0){
  cggedc.$clinit_PrivateMap$JsMap();
  this$static[key] = value_0;
}
;
cggedc.create_5 = function create_5(){
  cggedc.$clinit_PrivateMap$JsMap();
  return cggcc.$cast(createObject_0());
}
;
cggedc.$clinit_TouchEvent = function $clinit_TouchEvent(){
  cggedc.$clinit_TouchEvent = emptyMethod;
  cggedc.$clinit_HumanInputEvent();
}
;
cggedc.TouchEvent_0 = function TouchEvent_0(){
  cggedc.$clinit_TouchEvent();
  cggedc.HumanInputEvent.call(this);
  this.$init_439();
}
;
defineClass(219, 320, {1:1});
_.$init_439 = function $init_439(){
}
;
_.getTouches_0 = function getTouches_0(){
  return cggdc.$getTouches(this.getNativeEvent());
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'TouchEvent', 219, cggl.Lcom_google_gwt_event_dom_client_HumanInputEvent_2_classLit);
cggedc.$clinit_TouchCancelEvent = function $clinit_TouchCancelEvent(){
  cggedc.$clinit_TouchCancelEvent = emptyMethod;
  cggedc.$clinit_TouchEvent();
  cggedc.TYPE_17 = new cggedc.DomEvent$Type('touchcancel', new cggedc.TouchCancelEvent);
}
;
cggedc.TouchCancelEvent = function TouchCancelEvent(){
  cggedc.TouchEvent_0.call(this);
  this.$init_440();
}
;
cggedc.getType_31 = function getType_31(){
  cggedc.$clinit_TouchCancelEvent();
  return cggedc.TYPE_17;
}
;
defineClass(679, 219, {1:1}, cggedc.TouchCancelEvent);
_.$init_440 = function $init_440(){
}
;
_.dispatch_0 = function dispatch_37(handler){
  this.dispatch_19(castTo(handler, 891));
}
;
_.getAssociatedType_0 = function getAssociatedType_57(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_58(){
  return this.getAssociatedType_1();
}
;
_.dispatch_19 = function dispatch_36(handler){
  handler.onTouchCancel(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_56(){
  return cggedc.TYPE_17;
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchCancelEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'TouchCancelEvent', 679, cggl.Lcom_google_gwt_event_dom_client_TouchEvent_2_classLit);
cggedc.$clinit_TouchEndEvent = function $clinit_TouchEndEvent(){
  cggedc.$clinit_TouchEndEvent = emptyMethod;
  cggedc.$clinit_TouchEvent();
  cggedc.TYPE_18 = new cggedc.DomEvent$Type('touchend', new cggedc.TouchEndEvent);
}
;
cggedc.TouchEndEvent = function TouchEndEvent(){
  cggedc.TouchEvent_0.call(this);
  this.$init_441();
}
;
cggedc.getType_32 = function getType_32(){
  cggedc.$clinit_TouchEndEvent();
  return cggedc.TYPE_18;
}
;
defineClass(681, 219, {1:1}, cggedc.TouchEndEvent);
_.$init_441 = function $init_441(){
}
;
_.dispatch_0 = function dispatch_39(handler){
  this.dispatch_20(castTo(handler, 892));
}
;
_.getAssociatedType_0 = function getAssociatedType_60(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_61(){
  return this.getAssociatedType_1();
}
;
_.dispatch_20 = function dispatch_38(handler){
  handler.onTouchEnd(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_59(){
  return cggedc.TYPE_18;
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchEndEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'TouchEndEvent', 681, cggl.Lcom_google_gwt_event_dom_client_TouchEvent_2_classLit);
cggedc.$clinit_TouchEvent$TouchSupportDetector = function $clinit_TouchEvent$TouchSupportDetector(){
  cggedc.$clinit_TouchEvent$TouchSupportDetector = emptyMethod;
}
;
defineClass(901, 1, {1:1});
cggl.Lcom_google_gwt_event_dom_client_TouchEvent$TouchSupportDetector_2_classLit = createForClass('com.google.gwt.event.dom.client', 'TouchEvent/TouchSupportDetector', 901, cggl.Ljava_lang_Object_2_classLit);
cggedc.$clinit_TouchEvent$TouchSupportDetectorNo = function $clinit_TouchEvent$TouchSupportDetectorNo(){
  cggedc.$clinit_TouchEvent$TouchSupportDetectorNo = emptyMethod;
}
;
defineClass(902, 901, {1:1});
cggl.Lcom_google_gwt_event_dom_client_TouchEvent$TouchSupportDetectorNo_2_classLit = createForClass('com.google.gwt.event.dom.client', 'TouchEvent/TouchSupportDetectorNo', 902, cggl.Lcom_google_gwt_event_dom_client_TouchEvent$TouchSupportDetector_2_classLit);
cggedc.$clinit_TouchMoveEvent = function $clinit_TouchMoveEvent(){
  cggedc.$clinit_TouchMoveEvent = emptyMethod;
  cggedc.$clinit_TouchEvent();
  cggedc.TYPE_19 = new cggedc.DomEvent$Type('touchmove', new cggedc.TouchMoveEvent);
}
;
cggedc.TouchMoveEvent = function TouchMoveEvent(){
  cggedc.TouchEvent_0.call(this);
  this.$init_442();
}
;
cggedc.getType_33 = function getType_33(){
  cggedc.$clinit_TouchMoveEvent();
  return cggedc.TYPE_19;
}
;
defineClass(678, 219, {1:1}, cggedc.TouchMoveEvent);
_.$init_442 = function $init_442(){
}
;
_.dispatch_0 = function dispatch_41(handler){
  this.dispatch_21(castTo(handler, 890));
}
;
_.getAssociatedType_0 = function getAssociatedType_63(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_64(){
  return this.getAssociatedType_1();
}
;
_.dispatch_21 = function dispatch_40(handler){
  handler.onTouchMove(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_62(){
  return cggedc.TYPE_19;
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchMoveEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'TouchMoveEvent', 678, cggl.Lcom_google_gwt_event_dom_client_TouchEvent_2_classLit);
cggedc.$clinit_TouchStartEvent = function $clinit_TouchStartEvent(){
  cggedc.$clinit_TouchStartEvent = emptyMethod;
  cggedc.$clinit_TouchEvent();
  cggedc.TYPE_20 = new cggedc.DomEvent$Type('touchstart', new cggedc.TouchStartEvent);
}
;
cggedc.TouchStartEvent = function TouchStartEvent(){
  cggedc.TouchEvent_0.call(this);
  this.$init_443();
}
;
cggedc.getType_34 = function getType_34(){
  cggedc.$clinit_TouchStartEvent();
  return cggedc.TYPE_20;
}
;
defineClass(677, 219, {1:1}, cggedc.TouchStartEvent);
_.$init_443 = function $init_443(){
}
;
_.dispatch_0 = function dispatch_43(handler){
  this.dispatch_22(castTo(handler, 889));
}
;
_.getAssociatedType_0 = function getAssociatedType_66(){
  return this.getAssociatedType_1();
}
;
_.getAssociatedType = function getAssociatedType_67(){
  return this.getAssociatedType_1();
}
;
_.dispatch_22 = function dispatch_42(handler){
  handler.onTouchStart(this);
}
;
_.getAssociatedType_1 = function getAssociatedType_65(){
  return cggedc.TYPE_20;
}
;
cggl.Lcom_google_gwt_event_dom_client_TouchStartEvent_2_classLit = createForClass('com.google.gwt.event.dom.client', 'TouchStartEvent', 677, cggl.Lcom_google_gwt_event_dom_client_TouchEvent_2_classLit);
cggels.$clinit_AttachEvent = function $clinit_AttachEvent(){
  cggels.$clinit_AttachEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggels.AttachEvent = function AttachEvent(attached){
  cgges.GwtEvent.call(this);
  this.$init_444();
  this.attached = attached;
}
;
cggels.fire_0 = function fire_0(source, attached){
  cggels.$clinit_AttachEvent();
  var event_0;
  if (isNotNull(cggels.TYPE_21)) {
    event_0 = new cggels.AttachEvent(attached);
    source.fireEvent(event_0);
  }
}
;
defineClass(712, 131, {1:1}, cggels.AttachEvent);
_.$init_444 = function $init_444(){
}
;
_.dispatch_0 = function dispatch_45(handler){
  this.dispatch_23(castTo(handler, 1363));
}
;
_.getAssociatedType = function getAssociatedType_69(){
  return this.getAssociatedType_0();
}
;
_.dispatch_23 = function dispatch_44(handler){
  handler.onAttachOrDetach(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_68(){
  return cggels.TYPE_21;
}
;
_.isAttached = function isAttached_1(){
  return this.attached;
}
;
_.attached = false;
cggl.Lcom_google_gwt_event_logical_shared_AttachEvent_2_classLit = createForClass('com.google.gwt.event.logical.shared', 'AttachEvent', 712, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cggels.$clinit_AttachEvent$Handler = function $clinit_AttachEvent$Handler(){
  cggels.$clinit_AttachEvent$Handler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_AttachEvent$Handler_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'AttachEvent/Handler');
cggels.$clinit_CloseEvent = function $clinit_CloseEvent(){
  cggels.$clinit_CloseEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggels.CloseEvent_0 = function CloseEvent_0(target, autoClosed){
  cgges.GwtEvent.call(this);
  this.$init_445();
  this.autoClosed = autoClosed;
  this.target_0 = target;
}
;
cggels.fire_1 = function fire_1(source, target){
  cggels.$clinit_CloseEvent();
  cggels.fire_2(source, target, false);
}
;
cggels.fire_2 = function fire_2(source, target, autoClosed){
  cggels.$clinit_CloseEvent();
  var event_0;
  if (isNotNull(cggels.TYPE_22)) {
    event_0 = new cggels.CloseEvent_0(target, autoClosed);
    source.fireEvent(event_0);
  }
}
;
cggels.getType_35 = function getType_35(){
  cggels.$clinit_CloseEvent();
  return isNotNull(cggels.TYPE_22)?cggels.TYPE_22:(cggels.TYPE_22 = new cgges.GwtEvent$Type);
}
;
defineClass(744, 131, {1:1}, cggels.CloseEvent_0);
_.$init_445 = function $init_445(){
}
;
_.dispatch_0 = function dispatch_47(handler){
  this.dispatch_24(castTo(handler, 816));
}
;
_.getAssociatedType = function getAssociatedType_71(){
  return this.getAssociatedType_0();
}
;
_.dispatch_24 = function dispatch_46(handler){
  handler.onClose_1(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_70(){
  return castTo(cggels.TYPE_22, 103);
}
;
_.autoClosed = false;
cggl.Lcom_google_gwt_event_logical_shared_CloseEvent_2_classLit = createForClass('com.google.gwt.event.logical.shared', 'CloseEvent', 744, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cggels.$clinit_CloseHandler = function $clinit_CloseHandler(){
  cggels.$clinit_CloseHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_CloseHandler_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'CloseHandler');
cggels.$clinit_HasResizeHandlers = function $clinit_HasResizeHandlers(){
  cggels.$clinit_HasResizeHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_HasResizeHandlers_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'HasResizeHandlers');
cggels.$clinit_HasValueChangeHandlers = function $clinit_HasValueChangeHandlers(){
  cggels.$clinit_HasValueChangeHandlers = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_logical_shared_HasValueChangeHandlers_2_classLit = createForInterface('com.google.gwt.event.logical.shared', 'HasValueChangeHandlers');
cggels.$clinit_ResizeEvent = function $clinit_ResizeEvent(){
  cggels.$clinit_ResizeEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggels.ResizeEvent = function ResizeEvent(width_0, height){
  cgges.GwtEvent.call(this);
  this.$init_446();
  this.width_0 = width_0;
  this.height_0 = height;
}
;
cggels.fire_3 = function fire_3(source, width_0, height){
  cggels.$clinit_ResizeEvent();
  var event_0;
  if (isNotNull(cggels.TYPE_23)) {
    event_0 = new cggels.ResizeEvent(width_0, height);
    source.fireEvent(event_0);
  }
}
;
cggels.getType_36 = function getType_36(){
  cggels.$clinit_ResizeEvent();
  if (isNull(cggels.TYPE_23)) {
    cggels.TYPE_23 = new cgges.GwtEvent$Type;
  }
  return cggels.TYPE_23;
}
;
defineClass(628, 131, {1:1}, cggels.ResizeEvent);
_.$init_446 = function $init_446(){
}
;
_.dispatch_0 = function dispatch_49(handler){
  this.dispatch_25(castTo(handler, 215));
}
;
_.getAssociatedType = function getAssociatedType_73(){
  return this.getAssociatedType_0();
}
;
_.dispatch_25 = function dispatch_48(handler){
  handler.onResize(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_72(){
  return cggels.TYPE_23;
}
;
_.getHeight_1 = function getHeight_2(){
  return this.height_0;
}
;
_.getWidth_1 = function getWidth_2(){
  return this.width_0;
}
;
_.height_0 = 0;
_.width_0 = 0;
cggl.Lcom_google_gwt_event_logical_shared_ResizeEvent_2_classLit = createForClass('com.google.gwt.event.logical.shared', 'ResizeEvent', 628, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cggels.$clinit_ValueChangeEvent = function $clinit_ValueChangeEvent(){
  cggels.$clinit_ValueChangeEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cggels.ValueChangeEvent = function ValueChangeEvent(value_0){
  cgges.GwtEvent.call(this);
  this.$init_447();
  this.value_0 = value_0;
}
;
cggels.fire_4 = function fire_4(source, value_0){
  cggels.$clinit_ValueChangeEvent();
  var event_0;
  if (isNotNull(cggels.TYPE_24)) {
    event_0 = new cggels.ValueChangeEvent(value_0);
    source.fireEvent(event_0);
  }
}
;
cggels.getType_37 = function getType_37(){
  cggels.$clinit_ValueChangeEvent();
  if (isNull(cggels.TYPE_24)) {
    cggels.TYPE_24 = new cgges.GwtEvent$Type;
  }
  return cggels.TYPE_24;
}
;
defineClass(796, 131, {1:1}, cggels.ValueChangeEvent);
_.$init_447 = function $init_447(){
}
;
_.dispatch_0 = function dispatch_51(handler){
  this.dispatch_26(castTo(handler, 252));
}
;
_.getAssociatedType = function getAssociatedType_75(){
  return this.getAssociatedType_0();
}
;
_.dispatch_26 = function dispatch_50(handler){
  handler.onValueChange(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_74(){
  return castTo(cggels.TYPE_24, 103);
}
;
_.getValue_1 = function getValue_4(){
  return this.value_0;
}
;
cggl.Lcom_google_gwt_event_logical_shared_ValueChangeEvent_2_classLit = createForClass('com.google.gwt.event.logical.shared', 'ValueChangeEvent', 796, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cgges.$clinit_HandlerManager = function $clinit_HandlerManager(){
  cgges.$clinit_HandlerManager = emptyMethod;
  jl.$clinit_Object();
}
;
cgges.HandlerManager = function HandlerManager(source){
  cgges.$clinit_HandlerManager();
  cgges.HandlerManager_0.call(this, source, false);
}
;
cgges.HandlerManager_0 = function HandlerManager_0(source, fireInReverseOrder){
  cgges.$clinit_HandlerManager();
  Object_0.call(this);
  this.$init_448();
  this.eventBus = new cgges.HandlerManager$Bus(fireInReverseOrder);
  this.source = source;
}
;
defineClass(199, 1, {1:1}, cgges.HandlerManager, cgges.HandlerManager_0);
_.$init_448 = function $init_448(){
}
;
_.addHandler_0 = function addHandler_0(type_0, handler){
  return new cgges.LegacyHandlerWrapper(this.eventBus.addHandler_1(type_0, handler));
}
;
_.fireEvent = function fireEvent_0(event_0){
  var e, oldSource;
  if (!event_0.isLive()) {
    event_0.revive();
  }
  oldSource = event_0.getSource();
  event_0.overrideSource(this.source);
  try {
    this.eventBus.fireEvent_0(event_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 174)) {
      e = $e0;
      throw toJs(new cgges.UmbrellaException_0(e.getCauses()));
    }
     else 
      throw toJs($e0);
  }
   finally {
    if (jsEquals(oldSource, null)) {
      event_0.kill();
    }
     else {
      event_0.overrideSource(oldSource);
    }
  }
}
;
_.isEventHandled = function isEventHandled(e){
  return this.eventBus.isEventHandled_0(e);
}
;
cggl.Lcom_google_gwt_event_shared_HandlerManager_2_classLit = createForClass('com.google.gwt.event.shared', 'HandlerManager', 199, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_EventBus = function $clinit_EventBus(){
  cgwbes.$clinit_EventBus = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.EventBus = function EventBus(){
  cgwbes.$clinit_EventBus();
  Object_0.call(this);
  this.$init_449();
}
;
cgwbes.dispatchEvent_1 = function dispatchEvent_1(event_0, handler){
  cgwbes.$clinit_EventBus();
  event_0.dispatch(handler);
}
;
cgwbes.setSourceOfEvent = function setSourceOfEvent(event_0, source){
  cgwbes.$clinit_EventBus();
  event_0.setSource(source);
}
;
defineClass(542, 1, {1:1});
_.$init_449 = function $init_449(){
}
;
cggl.Lcom_google_web_bindery_event_shared_EventBus_2_classLit = createForClass('com.google.web.bindery.event.shared', 'EventBus', 542, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_SimpleEventBus = function $clinit_SimpleEventBus(){
  cgwbes.$clinit_SimpleEventBus = emptyMethod;
  cgwbes.$clinit_EventBus();
}
;
cgwbes.SimpleEventBus = function SimpleEventBus(fireInReverseOrder){
  cgwbes.$clinit_SimpleEventBus();
  cgwbes.EventBus.call(this);
  this.$init_450();
  this.isReverseOrder = fireInReverseOrder;
}
;
defineClass(274, 542, {1:1});
_.$init_450 = function $init_450(){
  this.firingDepth = 0;
  this.map_0 = new ju.HashMap;
}
;
_.addHandler_1 = function addHandler_1(type_0, handler){
  return this.doAdd(type_0, null, handler);
}
;
_.defer_0 = function defer_0(command){
  if (isNull(this.deferredDeltas)) {
    this.deferredDeltas = new ju.ArrayList;
  }
  this.deferredDeltas.add(command);
}
;
_.doAdd = function doAdd(type_0, source, handler){
  if (isNull(type_0)) {
    throw toJs(new jl.NullPointerException_1('Cannot add a handler with a null type'));
  }
  if (jsEquals(handler, null)) {
    throw toJs(new jl.NullPointerException_1('Cannot add a null handler'));
  }
  if (this.firingDepth > 0) {
    this.enqueueAdd(type_0, source, handler);
  }
   else {
    this.doAddNow(type_0, source, handler);
  }
  return new cgwbes.SimpleEventBus$1(this, type_0, source, handler);
}
;
_.doAddNow = function doAddNow(type_0, source, handler){
  cgwbes.$clinit_SimpleEventBus();
  var l;
  l = this.ensureHandlerList(type_0, source);
  l.add(handler);
}
;
_.doFire = function doFire(event_0, source){
  var causes, e, handler, handlers, it;
  if (isNull(event_0)) {
    throw toJs(new jl.NullPointerException_1('Cannot fire null event'));
  }
  try {
    this.firingDepth++;
    if (jsNotEquals(source, null)) {
      cgwbes.setSourceOfEvent(event_0, source);
    }
    handlers = this.getDispatchList(event_0.getAssociatedType(), source);
    causes = null;
    it = this.isReverseOrder?handlers.listIterator_0(handlers.size()):handlers.listIterator();
    while (this.isReverseOrder?it.hasPrevious():it.hasNext_0()) {
      handler = this.isReverseOrder?it.previous():it.next_3();
      try {
        cgwbes.dispatchEvent_1(event_0, handler);
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 20)) {
          e = $e0;
          if (isNull(causes)) {
            causes = new ju.HashSet;
          }
          causes.add(e);
        }
         else 
          throw toJs($e0);
      }
    }
    if (isNotNull(causes)) {
      throw toJs(new cgwbes.UmbrellaException(causes));
    }
  }
   finally {
    this.firingDepth--;
    if (this.firingDepth == 0) {
      this.handleQueuedAddsAndRemoves();
    }
  }
}
;
_.doRemove = function doRemove(type_0, source, handler){
  if (this.firingDepth > 0) {
    this.enqueueRemove(type_0, source, handler);
  }
   else {
    this.doRemoveNow(type_0, source, handler);
  }
}
;
_.doRemoveNow = function doRemoveNow(type_0, source, handler){
  cgwbes.$clinit_SimpleEventBus();
  var l, removed;
  l = this.getHandlerList(type_0, source);
  removed = l.remove(handler);
  if (removed && l.isEmpty()) {
    this.prune(type_0, source);
  }
}
;
_.enqueueAdd = function enqueueAdd(type_0, source, handler){
  this.defer_0(new cgwbes.SimpleEventBus$2(this, type_0, source, handler));
}
;
_.enqueueRemove = function enqueueRemove(type_0, source, handler){
  this.defer_0(new cgwbes.SimpleEventBus$3(this, type_0, source, handler));
}
;
_.ensureHandlerList = function ensureHandlerList(type_0, source){
  var handlers, sourceMap;
  sourceMap = castTo(this.map_0.get(type_0), 72);
  if (isNull(sourceMap)) {
    sourceMap = new ju.HashMap;
    this.map_0.put(type_0, sourceMap);
  }
  handlers = castTo(castTo(sourceMap.get(source), 57), 57);
  if (isNull(handlers)) {
    handlers = new ju.ArrayList;
    sourceMap.put(source, handlers);
  }
  return handlers;
}
;
_.fireEvent_0 = function fireEvent_1(event_0){
  this.doFire(event_0, null);
}
;
_.getDispatchList = function getDispatchList(type_0, source){
  var directHandlers, globalHandlers, rtn;
  directHandlers = this.getHandlerList(type_0, source);
  if (jsEquals(source, null)) {
    return directHandlers;
  }
  globalHandlers = this.getHandlerList(type_0, null);
  rtn = new ju.ArrayList_1(directHandlers);
  rtn.addAll(globalHandlers);
  return rtn;
}
;
_.getHandlerList = function getHandlerList(type_0, source){
  var handlers, sourceMap;
  sourceMap = castTo(this.map_0.get(type_0), 72);
  if (isNull(sourceMap)) {
    return ju.emptyList();
  }
  handlers = castTo(castTo(sourceMap.get(source), 57), 57);
  if (isNull(handlers)) {
    return ju.emptyList();
  }
  return handlers;
}
;
_.handleQueuedAddsAndRemoves = function handleQueuedAddsAndRemoves(){
  var c, c$iterator;
  if (isNotNull(this.deferredDeltas)) {
    try {
      for (c$iterator = this.deferredDeltas.iterator(); c$iterator.hasNext_0();) {
        c = castTo(c$iterator.next_3(), 815);
        c.execute_1();
      }
    }
     finally {
      this.deferredDeltas = null;
    }
  }
}
;
_.isEventHandled_0 = function isEventHandled_0(eventKey){
  return this.map_0.containsKey(eventKey);
}
;
_.prune = function prune(type_0, source){
  var pruned, sourceMap;
  sourceMap = castTo(this.map_0.get(type_0), 72);
  pruned = castTo(sourceMap.remove(source), 57);
  if (sourceMap.isEmpty()) {
    this.map_0.remove(type_0);
  }
}
;
_.firingDepth = 0;
_.isReverseOrder = false;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus_2_classLit = createForClass('com.google.web.bindery.event.shared', 'SimpleEventBus', 274, cggl.Lcom_google_web_bindery_event_shared_EventBus_2_classLit);
cgges.$clinit_HandlerManager$Bus = function $clinit_HandlerManager$Bus(){
  cgges.$clinit_HandlerManager$Bus = emptyMethod;
  cgwbes.$clinit_SimpleEventBus();
}
;
cgges.HandlerManager$Bus = function HandlerManager$Bus(fireInReverseOrder){
  cgges.$clinit_HandlerManager$Bus();
  cgwbes.SimpleEventBus.call(this, fireInReverseOrder);
  this.$init_451();
}
;
defineClass(543, 274, {1:1}, cgges.HandlerManager$Bus);
_.$init_451 = function $init_451(){
}
;
_.doRemove = function doRemove_0(type_0, source, handler){
  getClassPrototype(274).doRemove.call(this, type_0, source, handler);
}
;
_.isEventHandled_0 = function isEventHandled_1(eventKey){
  return getClassPrototype(274).isEventHandled_0.call(this, eventKey);
}
;
cggl.Lcom_google_gwt_event_shared_HandlerManager$Bus_2_classLit = createForClass('com.google.gwt.event.shared', 'HandlerManager/Bus', 543, cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus_2_classLit);
cgwbes.$clinit_HandlerRegistration_0 = function $clinit_HandlerRegistration_0(){
  cgwbes.$clinit_HandlerRegistration_0 = emptyMethod;
}
;
cggl.Lcom_google_web_bindery_event_shared_HandlerRegistration_2_classLit = createForInterface('com.google.web.bindery.event.shared', 'HandlerRegistration');
cgges.$clinit_HandlerRegistration = function $clinit_HandlerRegistration(){
  cgges.$clinit_HandlerRegistration = emptyMethod;
}
;
cggl.Lcom_google_gwt_event_shared_HandlerRegistration_2_classLit = createForInterface('com.google.gwt.event.shared', 'HandlerRegistration');
cgges.$clinit_LegacyHandlerWrapper = function $clinit_LegacyHandlerWrapper(){
  cgges.$clinit_LegacyHandlerWrapper = emptyMethod;
  jl.$clinit_Object();
}
;
cgges.LegacyHandlerWrapper = function LegacyHandlerWrapper(real){
  cgges.$clinit_LegacyHandlerWrapper();
  Object_0.call(this);
  this.$init_452();
  this.real = real;
}
;
defineClass(710, 1, {1:1}, cgges.LegacyHandlerWrapper);
_.$init_452 = function $init_452(){
}
;
_.removeHandler = function removeHandler(){
  this.real.removeHandler();
}
;
cggl.Lcom_google_gwt_event_shared_LegacyHandlerWrapper_2_classLit = createForClass('com.google.gwt.event.shared', 'LegacyHandlerWrapper', 710, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_UmbrellaException = function $clinit_UmbrellaException(){
  cgwbes.$clinit_UmbrellaException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
cgwbes.UmbrellaException = function UmbrellaException(causes){
  cgwbes.$clinit_UmbrellaException();
  var cause, cause$iterator, i;
  jl.RuntimeException_2.call(this, cgwbes.makeMessage(causes), cgwbes.makeCause(causes));
  this.$init_453();
  this.causes = causes;
  i = 0;
  for (cause$iterator = causes.iterator(); cause$iterator.hasNext_0();) {
    cause = castTo(cause$iterator.next_3(), 20);
    if (i++ == 0) {
      continue;
    }
    this.addSuppressed(cause);
  }
}
;
cgwbes.makeCause = function makeCause(causes){
  return causes.isEmpty()?null:castTo(causes.iterator().next_3(), 20);
}
;
cgwbes.makeMessage = function makeMessage(causes){
  var b, count, first, t, t$iterator;
  count = causes.size();
  if (count == 0) {
    return null;
  }
  b = new jl.StringBuilder_1(count == 1?'Exception caught: ':count + ' exceptions caught: ');
  first = true;
  for (t$iterator = causes.iterator(); t$iterator.hasNext_0();) {
    t = castTo(t$iterator.next_3(), 20);
    if (first) {
      first = false;
    }
     else {
      b.append_9('; ');
    }
    b.append_9(t.getMessage());
  }
  return b.toString_0();
}
;
defineClass(174, 23, {174:1, 4:1, 14:1, 1:1, 23:1, 20:1}, cgwbes.UmbrellaException);
_.$init_453 = function $init_453(){
}
;
_.getCauses = function getCauses(){
  return this.causes;
}
;
cgwbes.MULTIPLE = ' exceptions caught: ';
cgwbes.ONE = 'Exception caught: ';
cggl.Lcom_google_web_bindery_event_shared_UmbrellaException_2_classLit = createForClass('com.google.web.bindery.event.shared', 'UmbrellaException', 174, cggl.Ljava_lang_RuntimeException_2_classLit);
cgges.$clinit_UmbrellaException_0 = function $clinit_UmbrellaException_0(){
  cgges.$clinit_UmbrellaException_0 = emptyMethod;
  cgwbes.$clinit_UmbrellaException();
}
;
cgges.UmbrellaException_0 = function UmbrellaException_0(causes){
  cgges.$clinit_UmbrellaException_0();
  cgwbes.UmbrellaException.call(this, causes);
  this.$init_454();
}
;
defineClass(341, 174, {174:1, 4:1, 14:1, 1:1, 23:1, 20:1}, cgges.UmbrellaException_0);
_.$init_454 = function $init_454(){
}
;
cggl.Lcom_google_gwt_event_shared_UmbrellaException_2_classLit = createForClass('com.google.gwt.event.shared', 'UmbrellaException', 341, cggl.Lcom_google_web_bindery_event_shared_UmbrellaException_2_classLit);
cgggc.$clinit_Position = function $clinit_Position(){
  cgggc.$clinit_Position = emptyMethod;
}
;
cggl.Lcom_google_gwt_geolocation_client_Position_2_classLit = createForInterface('com.google.gwt.geolocation.client', 'Position');
cgggc.$clinit_Position$Coordinates = function $clinit_Position$Coordinates(){
  cgggc.$clinit_Position$Coordinates = emptyMethod;
}
;
cggl.Lcom_google_gwt_geolocation_client_Position$Coordinates_2_classLit = createForInterface('com.google.gwt.geolocation.client', 'Position/Coordinates');
cgggc.$clinit_PositionImpl = function $clinit_PositionImpl(){
  cgggc.$clinit_PositionImpl = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cgggc.$clinit_PositionImpl$CoordinatesImpl = function $clinit_PositionImpl$CoordinatesImpl(){
  cgggc.$clinit_PositionImpl$CoordinatesImpl = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggic.$clinit_AutoDirectionHandler = function $clinit_AutoDirectionHandler(){
  cggic.$clinit_AutoDirectionHandler = emptyMethod;
  jl.$clinit_Object();
}
;
cggic.AutoDirectionHandler = function AutoDirectionHandler(target, directionEstimator){
  Object_0.call(this);
  this.$init_455();
  this.target_0 = target;
  this.handlerRegistration = null;
  this.setDirectionEstimator(directionEstimator);
}
;
cggic.addTo = function addTo(target, directionEstimator){
  return new cggic.AutoDirectionHandler(target, directionEstimator);
}
;
cggic.addTo_0 = function addTo_0(target, enabled){
  cggic.$clinit_AutoDirectionHandler();
  return cggic.addTo(target, enabled?cggis.get_23():null);
}
;
defineClass(786, 1, {480:1, 21:1, 1:1}, cggic.AutoDirectionHandler);
_.$init_455 = function $init_455(){
}
;
_.onKeyUp = function onKeyUp_0(event_0){
  this.refreshDirection();
}
;
_.refreshDirection = function refreshDirection(){
  var dir_0;
  if (isNotNull(this.directionEstimator)) {
    dir_0 = this.directionEstimator.estimateDirection(this.target_0.getText());
    if (jsNotEquals(dir_0, this.target_0.getDirection())) {
      this.target_0.setDirection(dir_0);
    }
  }
}
;
_.setDirectionEstimator = function setDirectionEstimator_0(directionEstimator){
  this.directionEstimator = directionEstimator;
  if (isNull(directionEstimator) != isNull(this.handlerRegistration)) {
    if (isNull(directionEstimator)) {
      this.handlerRegistration.removeHandler();
      this.handlerRegistration = null;
    }
     else {
      this.handlerRegistration = this.target_0.addKeyUpHandler(this);
    }
  }
  this.refreshDirection();
}
;
cggl.Lcom_google_gwt_i18n_client_AutoDirectionHandler_2_classLit = createForClass('com.google.gwt.i18n.client', 'AutoDirectionHandler', 786, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_HasDirection = function $clinit_HasDirection(){
  cggic.$clinit_HasDirection = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_HasDirection_2_classLit = createForInterface('com.google.gwt.i18n.client', 'HasDirection');
cggic.$clinit_AutoDirectionHandler$Target = function $clinit_AutoDirectionHandler$Target(){
  cggic.$clinit_AutoDirectionHandler$Target = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_AutoDirectionHandler$Target_2_classLit = createForInterface('com.google.gwt.i18n.client', 'AutoDirectionHandler/Target');
cggic.$clinit_BidiPolicy = function $clinit_BidiPolicy(){
  cggic.$clinit_BidiPolicy = emptyMethod;
  jl.$clinit_Object();
  cggic.impl_3 = castTo(new cggic.BidiPolicy$BidiPolicyImpl, 249);
}
;
cggic.isBidiEnabled = function isBidiEnabled(){
  cggic.$clinit_BidiPolicy();
  return cggic.impl_3.isBidiEnabled();
}
;
defineClass(1337, 1, {1:1});
cggl.Lcom_google_gwt_i18n_client_BidiPolicy_2_classLit = createForClass('com.google.gwt.i18n.client', 'BidiPolicy', 1337, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_BidiPolicy$BidiPolicyImpl = function $clinit_BidiPolicy$BidiPolicyImpl(){
  cggic.$clinit_BidiPolicy$BidiPolicyImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggic.BidiPolicy$BidiPolicyImpl = function BidiPolicy$BidiPolicyImpl(){
  cggic.$clinit_BidiPolicy$BidiPolicyImpl();
  Object_0.call(this);
  this.$init_456();
}
;
defineClass(249, 1, {249:1, 1:1}, cggic.BidiPolicy$BidiPolicyImpl);
_.$init_456 = function $init_456(){
}
;
_.isBidiEnabled = function isBidiEnabled_0(){
  return cggic.hasAnyRTL();
}
;
cggl.Lcom_google_gwt_i18n_client_BidiPolicy$BidiPolicyImpl_2_classLit = createForClass('com.google.gwt.i18n.client', 'BidiPolicy/BidiPolicyImpl', 249, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_BidiPolicy$BidiPolicyImplOn = function $clinit_BidiPolicy$BidiPolicyImplOn(){
  cggic.$clinit_BidiPolicy$BidiPolicyImplOn = emptyMethod;
}
;
defineClass(1338, 249, {249:1, 1:1});
cggl.Lcom_google_gwt_i18n_client_BidiPolicy$BidiPolicyImplOn_2_classLit = createForClass('com.google.gwt.i18n.client', 'BidiPolicy/BidiPolicyImplOn', 1338, cggl.Lcom_google_gwt_i18n_client_BidiPolicy$BidiPolicyImpl_2_classLit);
cggic.$clinit_BidiUtils = function $clinit_BidiUtils(){
  cggic.$clinit_BidiUtils = emptyMethod;
  jl.$clinit_Object();
}
;
cggic.getDirectionOnElement = function getDirectionOnElement(elem){
  cggic.$clinit_BidiUtils();
  var dirPropertyValue;
  dirPropertyValue = cggdc.$getPropertyString(elem, 'dir');
  if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$('rtl', dirPropertyValue)) {
    return cggic.$clinit_HasDirection$Direction() , cggic.RTL;
  }
   else if (jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$('ltr', dirPropertyValue)) {
    return cggic.$clinit_HasDirection$Direction() , cggic.LTR;
  }
  return cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0;
}
;
cggic.setDirectionOnElement = function setDirectionOnElement(elem, direction){
  cggic.$clinit_BidiUtils();
  switch (direction.ordinal()) {
    case (cggic.$clinit_HasDirection$Direction() , cggic.RTL).ordinal():
      {
        cggdc.$setPropertyString_0(elem, 'dir', 'rtl');
        break;
      }

    case (cggic.$clinit_HasDirection$Direction() , cggic.LTR).ordinal():
      {
        cggdc.$setPropertyString_0(elem, 'dir', 'ltr');
        break;
      }

    case (cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0).ordinal():
      {
        if (jsNotEquals(cggic.getDirectionOnElement(elem), (cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0))) {
          cggdc.$setPropertyString_0(elem, 'dir', '');
        }
        break;
      }

  }
}
;
defineClass(1159, 1, {1:1});
cggic.DIR_PROPERTY_NAME = 'dir';
cggic.DIR_PROPERTY_VALUE_LTR = 'ltr';
cggic.DIR_PROPERTY_VALUE_RTL = 'rtl';
cggl.Lcom_google_gwt_i18n_client_BidiUtils_2_classLit = createForClass('com.google.gwt.i18n.client', 'BidiUtils', 1159, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_Localizable_0 = function $clinit_Localizable_0(){
  cggis.$clinit_Localizable_0 = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_shared_Localizable_2_classLit = createForInterface('com.google.gwt.i18n.shared', 'Localizable');
cggic.$clinit_Localizable = function $clinit_Localizable(){
  cggic.$clinit_Localizable = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Localizable_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Localizable');
cggic.$clinit_LocalizableResource = function $clinit_LocalizableResource(){
  cggic.$clinit_LocalizableResource = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource');
cggic.$clinit_Constants = function $clinit_Constants(){
  cggic.$clinit_Constants = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants');
jla.$clinit_Annotation = function $clinit_Annotation(){
  jla.$clinit_Annotation = emptyMethod;
}
;
cggl.Ljava_lang_annotation_Annotation_2_classLit = createForInterface('java.lang.annotation', 'Annotation');
cggic.$clinit_Constants$DefaultBooleanValue = function $clinit_Constants$DefaultBooleanValue(){
  cggic.$clinit_Constants$DefaultBooleanValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultBooleanValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultBooleanValue');
cggic.$clinit_Constants$DefaultDoubleValue = function $clinit_Constants$DefaultDoubleValue(){
  cggic.$clinit_Constants$DefaultDoubleValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultDoubleValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultDoubleValue');
cggic.$clinit_Constants$DefaultFloatValue = function $clinit_Constants$DefaultFloatValue(){
  cggic.$clinit_Constants$DefaultFloatValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultFloatValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultFloatValue');
cggic.$clinit_Constants$DefaultIntValue = function $clinit_Constants$DefaultIntValue(){
  cggic.$clinit_Constants$DefaultIntValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultIntValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultIntValue');
cggic.$clinit_Constants$DefaultStringArrayValue = function $clinit_Constants$DefaultStringArrayValue(){
  cggic.$clinit_Constants$DefaultStringArrayValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultStringArrayValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultStringArrayValue');
cggic.$clinit_Constants$DefaultStringMapValue = function $clinit_Constants$DefaultStringMapValue(){
  cggic.$clinit_Constants$DefaultStringMapValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultStringMapValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultStringMapValue');
cggic.$clinit_Constants$DefaultStringValue = function $clinit_Constants$DefaultStringValue(){
  cggic.$clinit_Constants$DefaultStringValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_Constants$DefaultStringValue_2_classLit = createForInterface('com.google.gwt.i18n.client', 'Constants/DefaultStringValue');
cggic.$clinit_CurrencyData = function $clinit_CurrencyData(){
  cggic.$clinit_CurrencyData = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_CurrencyData_2_classLit = createForInterface('com.google.gwt.i18n.client', 'CurrencyData');
cggic.$clinit_CurrencyList = function $clinit_CurrencyList(){
  cggic.$clinit_CurrencyList = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
}
;
cggic.CurrencyList = function CurrencyList(){
  cggic.$clinit_CurrencyList();
  Object_0.call(this);
  this.$init_457();
}
;
cggic.get_21 = function get_21(){
  cggic.$clinit_CurrencyList();
  return cggic.$clinit_CurrencyList$CurrencyListInstance() , cggic.instance_3;
}
;
cggic.loadCurrencyValuesNative = function loadCurrencyValuesNative(map_0, collection){
  for (var key in map_0) {
    if (map_0.hasOwnProperty(key)) {
      collection.add(map_0[key]);
    }
  }
}
;
cggic.overrideMap = function overrideMap(original, override){
  cggic.$clinit_CurrencyList();
  for (var key in override) {
    if (override.hasOwnProperty(key)) {
      original[key] = override[key];
    }
  }
  return original;
}
;
defineClass(205, 1, {1:1});
_.$init_457 = function $init_457(){
}
;
_.forEach_0 = function forEach_2(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_3(){
  return jl.$spliterator(this);
}
;
_.ensureCurrencyMap = function ensureCurrencyMap(){
  if (isScript()) {
    if (isNull(this.dataMapNative)) {
      this.dataMapNative = this.loadCurrencyMapNative();
    }
  }
   else {
    if (isNull(this.dataMapJava)) {
      this.dataMapJava = this.loadCurrencyMapJava();
    }
  }
}
;
_.getDefault = function getDefault(){
  if (isScript()) {
    return this.getDefaultNative();
  }
   else {
    return this.getDefaultJava();
  }
}
;
_.getDefaultJava = function getDefaultJava(){
  return new cggici.CurrencyDataImpl('USD', '$', 2, 'US$', '$');
}
;
_.getDefaultNative = function getDefaultNative(){
  return ['USD', '$', 2, 'US$'];
}
;
_.iterator = function iterator_3(){
  return this.iterator_0(false);
}
;
_.iterator_0 = function iterator_4(includeDeprecated){
  var collection, item_0, item$iterator, newCollection, value_0, value$iterator;
  this.ensureCurrencyMap();
  collection = new ju.ArrayList;
  if (isScript()) {
    cggic.loadCurrencyValuesNative(this.dataMapNative, collection);
  }
   else {
    for (item$iterator = this.dataMapJava.values().iterator(); item$iterator.hasNext_0();) {
      item_0 = castToAllowJso(item$iterator.next_3(), 326);
      collection.add(item_0);
    }
  }
  if (!includeDeprecated) {
    newCollection = new ju.ArrayList;
    for (value$iterator = collection.iterator(); value$iterator.hasNext_0();) {
      value_0 = castToAllowJso(value$iterator.next_3(), 326);
      if (!cggici.isDeprecated__Z__devirtual$(value_0)) {
        newCollection.add(value_0);
      }
    }
    collection = newCollection;
  }
  return ju.unmodifiableList(collection).iterator();
}
;
_.loadCurrencyMapJava = function loadCurrencyMapJava(){
  var result;
  result = new ju.HashMap;
  result.put('USD', new cggici.CurrencyDataImpl('USD', '$', 2, 'US$', '$'));
  result.put('EUR', new cggici.CurrencyDataImpl('EUR', '\u20AC', 2, '\u20AC', '\u20AC'));
  result.put('GBP', new cggici.CurrencyDataImpl('GBP', 'UK\xA3', 2, 'UK\xA3', '\xA3'));
  result.put('JPY', new cggici.CurrencyDataImpl('JPY', '\xA5', 0, 'JP\xA5', '\xA5'));
  return result;
}
;
_.loadCurrencyMapNative = function loadCurrencyMapNative(){
  return {'USD':['USD', '$', 2], 'EUR':['EUR', '\u20AC', 2], 'GBP':['GBP', 'UK\xA3', 2], 'JPY':['JPY', '\xA5', 0]};
}
;
cggl.Lcom_google_gwt_i18n_client_CurrencyList_2_classLit = createForClass('com.google.gwt.i18n.client', 'CurrencyList', 205, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_CurrencyList$CurrencyListInstance = function $clinit_CurrencyList$CurrencyListInstance(){
  cggic.$clinit_CurrencyList$CurrencyListInstance = emptyMethod;
  jl.$clinit_Object();
  cggic.instance_3 = castTo(new cggic.CurrencyList_, 205);
}
;
defineClass(1213, 1, {1:1});
cggl.Lcom_google_gwt_i18n_client_CurrencyList$CurrencyListInstance_2_classLit = createForClass('com.google.gwt.i18n.client', 'CurrencyList/CurrencyListInstance', 1213, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_CurrencyList_ = function $clinit_CurrencyList_(){
  cggic.$clinit_CurrencyList_ = emptyMethod;
  cggic.$clinit_CurrencyList();
}
;
cggic.CurrencyList_ = function CurrencyList_(){
  cggic.$clinit_CurrencyList_();
  cggic.CurrencyList.call(this);
  this.$init_458();
}
;
defineClass(745, 205, {205:1, 1:1}, cggic.CurrencyList_);
_.$init_458 = function $init_458(){
}
;
_.getDefaultJava = function getDefaultJava_0(){
  return new cggici.CurrencyDataImpl('USD', 'US$', 2, 'US$', '$');
}
;
_.getDefaultNative = function getDefaultNative_0(){
  return ['USD', 'US$', 2, 'US$', '$'];
}
;
_.loadCurrencyMapJava = function loadCurrencyMapJava_0(){
  var result;
  result = getClassPrototype(205).loadCurrencyMapJava.call(this);
  result.put('ADP', new cggici.CurrencyDataImpl('ADP', 'ADP', 128, 'ADP', 'ADP'));
  result.put('AED', new cggici.CurrencyDataImpl('AED', 'DH', 2, 'DH', 'dh'));
  result.put('AFA', new cggici.CurrencyDataImpl('AFA', 'AFA', 130, 'AFA', 'AFA'));
  result.put('AFN', new cggici.CurrencyDataImpl('AFN', 'AFN', 0, 'AFN', 'Af.'));
  result.put('ALK', new cggici.CurrencyDataImpl('ALK', 'ALK', 130, 'ALK', 'ALK'));
  result.put('ALL', new cggici.CurrencyDataImpl('ALL', 'ALL', 0, 'ALL', 'Lek'));
  result.put('AMD', new cggici.CurrencyDataImpl('AMD', 'AMD', 2, 'AMD', 'Dram'));
  result.put('ANG', new cggici.CurrencyDataImpl('ANG', 'ANG', 2, 'ANG', 'ANG'));
  result.put('AOA', new cggici.CurrencyDataImpl('AOA', 'AOA', 2, 'AOA', 'Kz'));
  result.put('AOK', new cggici.CurrencyDataImpl('AOK', 'AOK', 130, 'AOK', 'AOK'));
  result.put('AON', new cggici.CurrencyDataImpl('AON', 'AON', 130, 'AON', 'AON'));
  result.put('AOR', new cggici.CurrencyDataImpl('AOR', 'AOR', 130, 'AOR', 'AOR'));
  result.put('ARA', new cggici.CurrencyDataImpl('ARA', 'ARA', 130, 'ARA', 'ARA'));
  result.put('ARL', new cggici.CurrencyDataImpl('ARL', 'ARL', 130, 'ARL', 'ARL'));
  result.put('ARM', new cggici.CurrencyDataImpl('ARM', 'ARM', 130, 'ARM', 'ARM'));
  result.put('ARP', new cggici.CurrencyDataImpl('ARP', 'ARP', 130, 'ARP', 'ARP'));
  result.put('ARS', new cggici.CurrencyDataImpl('ARS', 'AR$', 2, 'AR$', '$'));
  result.put('ATS', new cggici.CurrencyDataImpl('ATS', 'ATS', 130, 'ATS', 'ATS'));
  result.put('AUD', new cggici.CurrencyDataImpl('AUD', 'A$', 2, 'AU$', '$'));
  result.put('AWG', new cggici.CurrencyDataImpl('AWG', 'AWG', 2, 'AWG', 'Afl.'));
  result.put('AZM', new cggici.CurrencyDataImpl('AZM', 'AZM', 130, 'AZM', 'AZM'));
  result.put('AZN', new cggici.CurrencyDataImpl('AZN', 'AZN', 2, 'AZN', 'man.'));
  result.put('BAD', new cggici.CurrencyDataImpl('BAD', 'BAD', 130, 'BAD', 'BAD'));
  result.put('BAM', new cggici.CurrencyDataImpl('BAM', 'BAM', 2, 'BAM', 'KM'));
  result.put('BAN', new cggici.CurrencyDataImpl('BAN', 'BAN', 130, 'BAN', 'BAN'));
  result.put('BBD', new cggici.CurrencyDataImpl('BBD', 'BBD', 2, 'BBD', '$'));
  result.put('BDT', new cggici.CurrencyDataImpl('BDT', 'Tk', 2, 'Tk', '\u09F3'));
  result.put('BEC', new cggici.CurrencyDataImpl('BEC', 'BEC', 130, 'BEC', 'BEC'));
  result.put('BEF', new cggici.CurrencyDataImpl('BEF', 'BEF', 130, 'BEF', 'BEF'));
  result.put('BEL', new cggici.CurrencyDataImpl('BEL', 'BEL', 130, 'BEL', 'BEL'));
  result.put('BGL', new cggici.CurrencyDataImpl('BGL', 'BGL', 130, 'BGL', 'BGL'));
  result.put('BGM', new cggici.CurrencyDataImpl('BGM', 'BGM', 130, 'BGM', 'BGM'));
  result.put('BGN', new cggici.CurrencyDataImpl('BGN', 'BGN', 2, 'BGN', 'lev'));
  result.put('BGO', new cggici.CurrencyDataImpl('BGO', 'BGO', 130, 'BGO', 'BGO'));
  result.put('BHD', new cggici.CurrencyDataImpl('BHD', 'BHD', 3, 'BHD', 'din'));
  result.put('BIF', new cggici.CurrencyDataImpl('BIF', 'BIF', 0, 'BIF', 'FBu'));
  result.put('BMD', new cggici.CurrencyDataImpl('BMD', 'BMD', 2, 'BMD', '$'));
  result.put('BND', new cggici.CurrencyDataImpl('BND', 'BND', 2, 'BND', '$'));
  result.put('BOB', new cggici.CurrencyDataImpl('BOB', 'BOB', 2, 'BOB', 'Bs'));
  result.put('BOL', new cggici.CurrencyDataImpl('BOL', 'BOL', 130, 'BOL', 'BOL'));
  result.put('BOP', new cggici.CurrencyDataImpl('BOP', 'BOP', 130, 'BOP', 'BOP'));
  result.put('BOV', new cggici.CurrencyDataImpl('BOV', 'BOV', 130, 'BOV', 'BOV'));
  result.put('BRB', new cggici.CurrencyDataImpl('BRB', 'BRB', 130, 'BRB', 'BRB'));
  result.put('BRC', new cggici.CurrencyDataImpl('BRC', 'BRC', 130, 'BRC', 'BRC'));
  result.put('BRE', new cggici.CurrencyDataImpl('BRE', 'BRE', 130, 'BRE', 'BRE'));
  result.put('BRL', new cggici.CurrencyDataImpl('BRL', 'R$', 2, 'R$', 'R$'));
  result.put('BRN', new cggici.CurrencyDataImpl('BRN', 'BRN', 130, 'BRN', 'BRN'));
  result.put('BRR', new cggici.CurrencyDataImpl('BRR', 'BRR', 130, 'BRR', 'BRR'));
  result.put('BRZ', new cggici.CurrencyDataImpl('BRZ', 'BRZ', 130, 'BRZ', 'BRZ'));
  result.put('BSD', new cggici.CurrencyDataImpl('BSD', 'BSD', 2, 'BSD', '$'));
  result.put('BTN', new cggici.CurrencyDataImpl('BTN', 'BTN', 2, 'BTN', 'Nu.'));
  result.put('BUK', new cggici.CurrencyDataImpl('BUK', 'BUK', 130, 'BUK', 'BUK'));
  result.put('BWP', new cggici.CurrencyDataImpl('BWP', 'BWP', 2, 'BWP', 'P'));
  result.put('BYB', new cggici.CurrencyDataImpl('BYB', 'BYB', 130, 'BYB', 'BYB'));
  result.put('BYN', new cggici.CurrencyDataImpl('BYN', 'BYN', 2, 'BYN', 'BYN'));
  result.put('BYR', new cggici.CurrencyDataImpl('BYR', 'BYR', 128, 'BYR', 'BYR'));
  result.put('BZD', new cggici.CurrencyDataImpl('BZD', 'BZD', 2, 'BZD', '$'));
  result.put('CAD', new cggici.CurrencyDataImpl('CAD', 'CA$', 2, 'C$', '$'));
  result.put('CDF', new cggici.CurrencyDataImpl('CDF', 'CDF', 2, 'CDF', 'FrCD'));
  result.put('CHE', new cggici.CurrencyDataImpl('CHE', 'CHE', 130, 'CHE', 'CHE'));
  result.put('CHF', new cggici.CurrencyDataImpl('CHF', 'CHF', 2, 'CHF', 'CHF'));
  result.put('CHW', new cggici.CurrencyDataImpl('CHW', 'CHW', 130, 'CHW', 'CHW'));
  result.put('CLE', new cggici.CurrencyDataImpl('CLE', 'CLE', 130, 'CLE', 'CLE'));
  result.put('CLF', new cggici.CurrencyDataImpl('CLF', 'CLF', 132, 'CLF', 'CLF'));
  result.put('CLP', new cggici.CurrencyDataImpl('CLP', 'CL$', 0, 'CL$', '$'));
  result.put('CNH', new cggici.CurrencyDataImpl('CNH', 'CNH', 130, 'CNH', 'CNH'));
  result.put('CNX', new cggici.CurrencyDataImpl('CNX', 'CNX', 130, 'CNX', 'CNX'));
  result.put('CNY', new cggici.CurrencyDataImpl('CNY', 'CN\xA5', 2, 'RMB\xA5', '\xA5'));
  result.put('COP', new cggici.CurrencyDataImpl('COP', 'COL$', 2, 'COL$', '$'));
  result.put('COU', new cggici.CurrencyDataImpl('COU', 'COU', 130, 'COU', 'COU'));
  result.put('CRC', new cggici.CurrencyDataImpl('CRC', 'CR\u20A1', 2, 'CR\u20A1', '\u20A1'));
  result.put('CSD', new cggici.CurrencyDataImpl('CSD', 'CSD', 130, 'CSD', 'CSD'));
  result.put('CSK', new cggici.CurrencyDataImpl('CSK', 'CSK', 130, 'CSK', 'CSK'));
  result.put('CUC', new cggici.CurrencyDataImpl('CUC', 'CUC', 2, 'CUC', '$'));
  result.put('CUP', new cggici.CurrencyDataImpl('CUP', '$MN', 2, '$MN', '$'));
  result.put('CVE', new cggici.CurrencyDataImpl('CVE', 'CVE', 2, 'CVE', 'CVE'));
  result.put('CYP', new cggici.CurrencyDataImpl('CYP', 'CYP', 130, 'CYP', 'CYP'));
  result.put('CZK', new cggici.CurrencyDataImpl('CZK', 'K\u010D', 2, 'K\u010D', 'K\u010D'));
  result.put('DDM', new cggici.CurrencyDataImpl('DDM', 'DDM', 130, 'DDM', 'DDM'));
  result.put('DEM', new cggici.CurrencyDataImpl('DEM', 'DEM', 130, 'DEM', 'DEM'));
  result.put('DJF', new cggici.CurrencyDataImpl('DJF', 'Fdj', 0, 'Fdj', 'Fdj'));
  result.put('DKK', new cggici.CurrencyDataImpl('DKK', 'kr', 2, 'kr', 'kr'));
  result.put('DOP', new cggici.CurrencyDataImpl('DOP', 'RD$', 2, 'RD$', '$'));
  result.put('DZD', new cggici.CurrencyDataImpl('DZD', 'DZD', 2, 'DZD', 'din'));
  result.put('ECS', new cggici.CurrencyDataImpl('ECS', 'ECS', 130, 'ECS', 'ECS'));
  result.put('ECV', new cggici.CurrencyDataImpl('ECV', 'ECV', 130, 'ECV', 'ECV'));
  result.put('EEK', new cggici.CurrencyDataImpl('EEK', 'EEK', 130, 'EEK', 'EEK'));
  result.put('EGP', new cggici.CurrencyDataImpl('EGP', 'LE', 2, 'LE', 'E\xA3'));
  result.put('ERN', new cggici.CurrencyDataImpl('ERN', 'ERN', 2, 'ERN', 'Nfk'));
  result.put('ESA', new cggici.CurrencyDataImpl('ESA', 'ESA', 130, 'ESA', 'ESA'));
  result.put('ESB', new cggici.CurrencyDataImpl('ESB', 'ESB', 130, 'ESB', 'ESB'));
  result.put('ESP', new cggici.CurrencyDataImpl('ESP', 'ESP', 128, 'ESP', 'ESP'));
  result.put('ETB', new cggici.CurrencyDataImpl('ETB', 'ETB', 2, 'ETB', 'Birr'));
  result.put('EUR', new cggici.CurrencyDataImpl('EUR', '\u20AC', 2, '\u20AC', '\u20AC'));
  result.put('FIM', new cggici.CurrencyDataImpl('FIM', 'FIM', 130, 'FIM', 'FIM'));
  result.put('FJD', new cggici.CurrencyDataImpl('FJD', 'FJD', 2, 'FJD', '$'));
  result.put('FKP', new cggici.CurrencyDataImpl('FKP', 'FKP', 2, 'FKP', '\xA3'));
  result.put('FRF', new cggici.CurrencyDataImpl('FRF', 'FRF', 130, 'FRF', 'FRF'));
  result.put('GBP', new cggici.CurrencyDataImpl('GBP', '\xA3', 2, 'GB\xA3', '\xA3'));
  result.put('GEK', new cggici.CurrencyDataImpl('GEK', 'GEK', 130, 'GEK', 'GEK'));
  result.put('GEL', new cggici.CurrencyDataImpl('GEL', 'GEL', 2, 'GEL', 'GEL'));
  result.put('GHC', new cggici.CurrencyDataImpl('GHC', 'GHC', 130, 'GHC', 'GHC'));
  result.put('GHS', new cggici.CurrencyDataImpl('GHS', 'GHS', 2, 'GHS', 'GHS'));
  result.put('GIP', new cggici.CurrencyDataImpl('GIP', 'GIP', 2, 'GIP', '\xA3'));
  result.put('GMD', new cggici.CurrencyDataImpl('GMD', 'GMD', 2, 'GMD', 'GMD'));
  result.put('GNF', new cggici.CurrencyDataImpl('GNF', 'GNF', 0, 'GNF', 'FG'));
  result.put('GNS', new cggici.CurrencyDataImpl('GNS', 'GNS', 130, 'GNS', 'GNS'));
  result.put('GQE', new cggici.CurrencyDataImpl('GQE', 'GQE', 130, 'GQE', 'GQE'));
  result.put('GRD', new cggici.CurrencyDataImpl('GRD', 'GRD', 130, 'GRD', 'GRD'));
  result.put('GTQ', new cggici.CurrencyDataImpl('GTQ', 'GTQ', 2, 'GTQ', 'Q'));
  result.put('GWE', new cggici.CurrencyDataImpl('GWE', 'GWE', 130, 'GWE', 'GWE'));
  result.put('GWP', new cggici.CurrencyDataImpl('GWP', 'GWP', 130, 'GWP', 'GWP'));
  result.put('GYD', new cggici.CurrencyDataImpl('GYD', 'GYD', 2, 'GYD', '$'));
  result.put('HKD', new cggici.CurrencyDataImpl('HKD', 'HK$', 2, 'HK$', '$'));
  result.put('HNL', new cggici.CurrencyDataImpl('HNL', 'L', 2, 'L', 'L'));
  result.put('HRD', new cggici.CurrencyDataImpl('HRD', 'HRD', 130, 'HRD', 'HRD'));
  result.put('HRK', new cggici.CurrencyDataImpl('HRK', 'HRK', 2, 'HRK', 'kn'));
  result.put('HTG', new cggici.CurrencyDataImpl('HTG', 'HTG', 2, 'HTG', 'HTG'));
  result.put('HUF', new cggici.CurrencyDataImpl('HUF', 'HUF', 2, 'HUF', 'Ft'));
  result.put('IDR', new cggici.CurrencyDataImpl('IDR', 'IDR', 2, 'IDR', 'Rp'));
  result.put('IEP', new cggici.CurrencyDataImpl('IEP', 'IEP', 130, 'IEP', 'IEP'));
  result.put('ILP', new cggici.CurrencyDataImpl('ILP', 'ILP', 130, 'ILP', 'ILP'));
  result.put('ILR', new cggici.CurrencyDataImpl('ILR', 'ILR', 130, 'ILR', 'ILR'));
  result.put('ILS', new cggici.CurrencyDataImpl('ILS', '\u20AA', 2, 'IL\u20AA', '\u20AA'));
  result.put('INR', new cggici.CurrencyDataImpl('INR', '\u20B9', 2, 'Rs', '\u20B9'));
  result.put('IQD', new cggici.CurrencyDataImpl('IQD', 'IQD', 0, 'IQD', 'din'));
  result.put('IRR', new cggici.CurrencyDataImpl('IRR', 'IRR', 0, 'IRR', 'Rial'));
  result.put('ISJ', new cggici.CurrencyDataImpl('ISJ', 'ISJ', 130, 'ISJ', 'ISJ'));
  result.put('ISK', new cggici.CurrencyDataImpl('ISK', 'kr', 0, 'kr', 'kr'));
  result.put('ITL', new cggici.CurrencyDataImpl('ITL', 'ITL', 128, 'ITL', 'ITL'));
  result.put('JMD', new cggici.CurrencyDataImpl('JMD', 'JA$', 2, 'JA$', '$'));
  result.put('JOD', new cggici.CurrencyDataImpl('JOD', 'JOD', 3, 'JOD', 'din'));
  result.put('JPY', new cggici.CurrencyDataImpl('JPY', 'JP\xA5', 0, 'JP\xA5', '\xA5'));
  result.put('KES', new cggici.CurrencyDataImpl('KES', 'Ksh', 2, 'Ksh', 'Ksh'));
  result.put('KGS', new cggici.CurrencyDataImpl('KGS', 'KGS', 2, 'KGS', 'KGS'));
  result.put('KHR', new cggici.CurrencyDataImpl('KHR', 'KHR', 2, 'KHR', 'Riel'));
  result.put('KMF', new cggici.CurrencyDataImpl('KMF', 'KMF', 0, 'KMF', 'CF'));
  result.put('KPW', new cggici.CurrencyDataImpl('KPW', 'KPW', 0, 'KPW', '\u20A9'));
  result.put('KRH', new cggici.CurrencyDataImpl('KRH', 'KRH', 130, 'KRH', 'KRH'));
  result.put('KRO', new cggici.CurrencyDataImpl('KRO', 'KRO', 130, 'KRO', 'KRO'));
  result.put('KRW', new cggici.CurrencyDataImpl('KRW', '\u20A9', 0, 'KR\u20A9', '\u20A9'));
  result.put('KWD', new cggici.CurrencyDataImpl('KWD', 'KWD', 3, 'KWD', 'din'));
  result.put('KYD', new cggici.CurrencyDataImpl('KYD', 'KYD', 2, 'KYD', '$'));
  result.put('KZT', new cggici.CurrencyDataImpl('KZT', 'KZT', 2, 'KZT', '\u20B8'));
  result.put('LAK', new cggici.CurrencyDataImpl('LAK', 'LAK', 0, 'LAK', '\u20AD'));
  result.put('LBP', new cggici.CurrencyDataImpl('LBP', 'LBP', 0, 'LBP', 'L\xA3'));
  result.put('LKR', new cggici.CurrencyDataImpl('LKR', 'SLRs', 2, 'SLRs', 'Rs'));
  result.put('LRD', new cggici.CurrencyDataImpl('LRD', 'LRD', 2, 'LRD', '$'));
  result.put('LSL', new cggici.CurrencyDataImpl('LSL', 'LSL', 2, 'LSL', 'LSL'));
  result.put('LTL', new cggici.CurrencyDataImpl('LTL', 'LTL', 130, 'LTL', 'Lt'));
  result.put('LTT', new cggici.CurrencyDataImpl('LTT', 'LTT', 130, 'LTT', 'LTT'));
  result.put('LUC', new cggici.CurrencyDataImpl('LUC', 'LUC', 130, 'LUC', 'LUC'));
  result.put('LUF', new cggici.CurrencyDataImpl('LUF', 'LUF', 128, 'LUF', 'LUF'));
  result.put('LUL', new cggici.CurrencyDataImpl('LUL', 'LUL', 130, 'LUL', 'LUL'));
  result.put('LVL', new cggici.CurrencyDataImpl('LVL', 'LVL', 130, 'LVL', 'Ls'));
  result.put('LVR', new cggici.CurrencyDataImpl('LVR', 'LVR', 130, 'LVR', 'LVR'));
  result.put('LYD', new cggici.CurrencyDataImpl('LYD', 'LYD', 3, 'LYD', 'din'));
  result.put('MAD', new cggici.CurrencyDataImpl('MAD', 'MAD', 2, 'MAD', 'MAD'));
  result.put('MAF', new cggici.CurrencyDataImpl('MAF', 'MAF', 130, 'MAF', 'MAF'));
  result.put('MCF', new cggici.CurrencyDataImpl('MCF', 'MCF', 130, 'MCF', 'MCF'));
  result.put('MDC', new cggici.CurrencyDataImpl('MDC', 'MDC', 130, 'MDC', 'MDC'));
  result.put('MDL', new cggici.CurrencyDataImpl('MDL', 'MDL', 2, 'MDL', 'MDL'));
  result.put('MGA', new cggici.CurrencyDataImpl('MGA', 'MGA', 0, 'MGA', 'Ar'));
  result.put('MGF', new cggici.CurrencyDataImpl('MGF', 'MGF', 128, 'MGF', 'MGF'));
  result.put('MKD', new cggici.CurrencyDataImpl('MKD', 'MKD', 2, 'MKD', 'din'));
  result.put('MKN', new cggici.CurrencyDataImpl('MKN', 'MKN', 130, 'MKN', 'MKN'));
  result.put('MLF', new cggici.CurrencyDataImpl('MLF', 'MLF', 130, 'MLF', 'MLF'));
  result.put('MMK', new cggici.CurrencyDataImpl('MMK', 'MMK', 0, 'MMK', 'K'));
  result.put('MNT', new cggici.CurrencyDataImpl('MNT', 'MN\u20AE', 2, 'MN\u20AE', '\u20AE'));
  result.put('MOP', new cggici.CurrencyDataImpl('MOP', 'MOP', 2, 'MOP', 'MOP'));
  result.put('MRO', new cggici.CurrencyDataImpl('MRO', 'MRO', 128, 'MRO', 'MRO'));
  result.put('MRU', new cggici.CurrencyDataImpl('MRU', 'MRU', 2, 'MRU', 'MRU'));
  result.put('MTL', new cggici.CurrencyDataImpl('MTL', 'MTL', 130, 'MTL', 'MTL'));
  result.put('MTP', new cggici.CurrencyDataImpl('MTP', 'MTP', 130, 'MTP', 'MTP'));
  result.put('MUR', new cggici.CurrencyDataImpl('MUR', 'MUR', 2, 'MUR', 'Rs'));
  result.put('MVP', new cggici.CurrencyDataImpl('MVP', 'MVP', 130, 'MVP', 'MVP'));
  result.put('MVR', new cggici.CurrencyDataImpl('MVR', 'MVR', 2, 'MVR', 'MVR'));
  result.put('MWK', new cggici.CurrencyDataImpl('MWK', 'MWK', 2, 'MWK', 'MWK'));
  result.put('MXN', new cggici.CurrencyDataImpl('MXN', 'MX$', 2, 'Mex$', '$'));
  result.put('MXP', new cggici.CurrencyDataImpl('MXP', 'MXP', 130, 'MXP', 'MXP'));
  result.put('MXV', new cggici.CurrencyDataImpl('MXV', 'MXV', 130, 'MXV', 'MXV'));
  result.put('MYR', new cggici.CurrencyDataImpl('MYR', 'RM', 2, 'RM', 'RM'));
  result.put('MZE', new cggici.CurrencyDataImpl('MZE', 'MZE', 130, 'MZE', 'MZE'));
  result.put('MZM', new cggici.CurrencyDataImpl('MZM', 'MZM', 130, 'MZM', 'MZM'));
  result.put('MZN', new cggici.CurrencyDataImpl('MZN', 'MZN', 2, 'MZN', 'MTn'));
  result.put('NAD', new cggici.CurrencyDataImpl('NAD', 'NAD', 2, 'NAD', '$'));
  result.put('NGN', new cggici.CurrencyDataImpl('NGN', 'NGN', 2, 'NGN', '\u20A6'));
  result.put('NIC', new cggici.CurrencyDataImpl('NIC', 'NIC', 130, 'NIC', 'NIC'));
  result.put('NIO', new cggici.CurrencyDataImpl('NIO', 'NIO', 2, 'NIO', 'C$'));
  result.put('NLG', new cggici.CurrencyDataImpl('NLG', 'NLG', 130, 'NLG', 'NLG'));
  result.put('NOK', new cggici.CurrencyDataImpl('NOK', 'NOkr', 2, 'NOkr', 'kr'));
  result.put('NPR', new cggici.CurrencyDataImpl('NPR', 'NPR', 2, 'NPR', 'Rs'));
  result.put('NZD', new cggici.CurrencyDataImpl('NZD', 'NZ$', 2, 'NZ$', '$'));
  result.put('OMR', new cggici.CurrencyDataImpl('OMR', 'OMR', 3, 'OMR', 'Rial'));
  result.put('PAB', new cggici.CurrencyDataImpl('PAB', 'B/.', 2, 'B/.', 'B/.'));
  result.put('PEI', new cggici.CurrencyDataImpl('PEI', 'PEI', 130, 'PEI', 'PEI'));
  result.put('PEN', new cggici.CurrencyDataImpl('PEN', 'S/.', 2, 'S/.', 'S/.'));
  result.put('PES', new cggici.CurrencyDataImpl('PES', 'PES', 130, 'PES', 'PES'));
  result.put('PGK', new cggici.CurrencyDataImpl('PGK', 'PGK', 2, 'PGK', 'PGK'));
  result.put('PHP', new cggici.CurrencyDataImpl('PHP', 'PHP', 2, 'PHP', '\u20B1'));
  result.put('PKR', new cggici.CurrencyDataImpl('PKR', 'PKRs.', 2, 'PKRs.', 'Rs'));
  result.put('PLN', new cggici.CurrencyDataImpl('PLN', 'PLN', 2, 'PLN', 'z\u0142'));
  result.put('PLZ', new cggici.CurrencyDataImpl('PLZ', 'PLZ', 130, 'PLZ', 'PLZ'));
  result.put('PTE', new cggici.CurrencyDataImpl('PTE', 'PTE', 130, 'PTE', 'PTE'));
  result.put('PYG', new cggici.CurrencyDataImpl('PYG', 'PYG', 0, 'PYG', 'Gs'));
  result.put('QAR', new cggici.CurrencyDataImpl('QAR', 'QAR', 2, 'QAR', 'Rial'));
  result.put('RHD', new cggici.CurrencyDataImpl('RHD', 'RHD', 130, 'RHD', 'RHD'));
  result.put('ROL', new cggici.CurrencyDataImpl('ROL', 'ROL', 130, 'ROL', 'ROL'));
  result.put('RON', new cggici.CurrencyDataImpl('RON', 'RON', 2, 'RON', 'RON'));
  result.put('RSD', new cggici.CurrencyDataImpl('RSD', 'RSD', 0, 'RSD', 'din'));
  result.put('RUB', new cggici.CurrencyDataImpl('RUB', '\u0440\u0443\u0431.', 2, '\u0440\u0443\u0431.', '\u0440\u0443\u0431.'));
  result.put('RUR', new cggici.CurrencyDataImpl('RUR', 'RUR', 130, 'RUR', 'RUR'));
  result.put('RWF', new cggici.CurrencyDataImpl('RWF', 'RWF', 0, 'RWF', 'RF'));
  result.put('SAR', new cggici.CurrencyDataImpl('SAR', 'SR', 2, 'SR', 'Rial'));
  result.put('SBD', new cggici.CurrencyDataImpl('SBD', 'SBD', 2, 'SBD', '$'));
  result.put('SCR', new cggici.CurrencyDataImpl('SCR', 'SCR', 2, 'SCR', 'SCR'));
  result.put('SDD', new cggici.CurrencyDataImpl('SDD', 'SDD', 130, 'SDD', 'SDD'));
  result.put('SDG', new cggici.CurrencyDataImpl('SDG', 'SDG', 2, 'SDG', 'SDG'));
  result.put('SDP', new cggici.CurrencyDataImpl('SDP', 'SDP', 130, 'SDP', 'SDP'));
  result.put('SEK', new cggici.CurrencyDataImpl('SEK', 'kr', 2, 'kr', 'kr'));
  result.put('SGD', new cggici.CurrencyDataImpl('SGD', 'S$', 2, 'S$', '$'));
  result.put('SHP', new cggici.CurrencyDataImpl('SHP', 'SHP', 2, 'SHP', '\xA3'));
  result.put('SIT', new cggici.CurrencyDataImpl('SIT', 'SIT', 130, 'SIT', 'SIT'));
  result.put('SKK', new cggici.CurrencyDataImpl('SKK', 'SKK', 130, 'SKK', 'SKK'));
  result.put('SLL', new cggici.CurrencyDataImpl('SLL', 'SLL', 0, 'SLL', 'SLL'));
  result.put('SOS', new cggici.CurrencyDataImpl('SOS', 'SOS', 0, 'SOS', 'SOS'));
  result.put('SRD', new cggici.CurrencyDataImpl('SRD', 'SRD', 2, 'SRD', '$'));
  result.put('SRG', new cggici.CurrencyDataImpl('SRG', 'SRG', 130, 'SRG', 'SRG'));
  result.put('SSP', new cggici.CurrencyDataImpl('SSP', 'SSP', 2, 'SSP', 'SSP'));
  result.put('STD', new cggici.CurrencyDataImpl('STD', 'STD', 128, 'STD', 'Db'));
  result.put('STN', new cggici.CurrencyDataImpl('STN', 'STN', 2, 'STN', 'STN'));
  result.put('SUR', new cggici.CurrencyDataImpl('SUR', 'SUR', 130, 'SUR', 'SUR'));
  result.put('SVC', new cggici.CurrencyDataImpl('SVC', 'SVC', 130, 'SVC', 'SVC'));
  result.put('SYP', new cggici.CurrencyDataImpl('SYP', 'SYP', 0, 'SYP', '\xA3'));
  result.put('SZL', new cggici.CurrencyDataImpl('SZL', 'SZL', 2, 'SZL', 'SZL'));
  result.put('THB', new cggici.CurrencyDataImpl('THB', 'THB', 2, 'THB', '\u0E3F'));
  result.put('TJR', new cggici.CurrencyDataImpl('TJR', 'TJR', 130, 'TJR', 'TJR'));
  result.put('TJS', new cggici.CurrencyDataImpl('TJS', 'TJS', 2, 'TJS', 'Som'));
  result.put('TMM', new cggici.CurrencyDataImpl('TMM', 'TMM', 128, 'TMM', 'TMM'));
  result.put('TMT', new cggici.CurrencyDataImpl('TMT', 'TMT', 2, 'TMT', 'TMT'));
  result.put('TND', new cggici.CurrencyDataImpl('TND', 'TND', 3, 'TND', 'din'));
  result.put('TOP', new cggici.CurrencyDataImpl('TOP', 'TOP', 2, 'TOP', 'T$'));
  result.put('TPE', new cggici.CurrencyDataImpl('TPE', 'TPE', 130, 'TPE', 'TPE'));
  result.put('TRL', new cggici.CurrencyDataImpl('TRL', 'TRL', 128, 'TRL', 'TRL'));
  result.put('TRY', new cggici.CurrencyDataImpl('TRY', 'TL', 2, 'YTL', 'TL'));
  result.put('TTD', new cggici.CurrencyDataImpl('TTD', 'TTD', 2, 'TTD', '$'));
  result.put('TWD', new cggici.CurrencyDataImpl('TWD', 'NT$', 2, 'NT$', 'NT$'));
  result.put('TZS', new cggici.CurrencyDataImpl('TZS', 'TZS', 2, 'TZS', 'TSh'));
  result.put('UAH', new cggici.CurrencyDataImpl('UAH', 'UAH', 2, 'UAH', '\u20B4'));
  result.put('UAK', new cggici.CurrencyDataImpl('UAK', 'UAK', 130, 'UAK', 'UAK'));
  result.put('UGS', new cggici.CurrencyDataImpl('UGS', 'UGS', 130, 'UGS', 'UGS'));
  result.put('UGX', new cggici.CurrencyDataImpl('UGX', 'UGX', 0, 'UGX', 'UGX'));
  result.put('USD', new cggici.CurrencyDataImpl('USD', 'US$', 2, 'US$', '$'));
  result.put('USN', new cggici.CurrencyDataImpl('USN', 'USN', 130, 'USN', 'USN'));
  result.put('USS', new cggici.CurrencyDataImpl('USS', 'USS', 130, 'USS', 'USS'));
  result.put('UYI', new cggici.CurrencyDataImpl('UYI', 'UYI', 128, 'UYI', 'UYI'));
  result.put('UYP', new cggici.CurrencyDataImpl('UYP', 'UYP', 130, 'UYP', 'UYP'));
  result.put('UYU', new cggici.CurrencyDataImpl('UYU', 'UY$', 2, 'UY$', '$'));
  result.put('UYW', new cggici.CurrencyDataImpl('UYW', 'UYW', 132, 'UYW', 'UYW'));
  result.put('UZS', new cggici.CurrencyDataImpl('UZS', 'UZS', 2, 'UZS', 'so\u02BCm'));
  result.put('VEB', new cggici.CurrencyDataImpl('VEB', 'VEB', 130, 'VEB', 'VEB'));
  result.put('VEF', new cggici.CurrencyDataImpl('VEF', 'VEF', 130, 'VEF', 'Bs'));
  result.put('VES', new cggici.CurrencyDataImpl('VES', 'VES', 2, 'VES', 'VES'));
  result.put('VND', new cggici.CurrencyDataImpl('VND', '\u20AB', 24, '\u20AB', '\u20AB'));
  result.put('VNN', new cggici.CurrencyDataImpl('VNN', 'VNN', 130, 'VNN', 'VNN'));
  result.put('VUV', new cggici.CurrencyDataImpl('VUV', 'VUV', 0, 'VUV', 'VUV'));
  result.put('WST', new cggici.CurrencyDataImpl('WST', 'WST', 2, 'WST', 'WST'));
  result.put('XAF', new cggici.CurrencyDataImpl('XAF', 'FCFA', 0, 'FCFA', 'FCFA'));
  result.put('XAG', new cggici.CurrencyDataImpl('XAG', 'XAG', 130, 'XAG', 'XAG'));
  result.put('XAU', new cggici.CurrencyDataImpl('XAU', 'XAU', 130, 'XAU', 'XAU'));
  result.put('XBA', new cggici.CurrencyDataImpl('XBA', 'XBA', 130, 'XBA', 'XBA'));
  result.put('XBB', new cggici.CurrencyDataImpl('XBB', 'XBB', 130, 'XBB', 'XBB'));
  result.put('XBC', new cggici.CurrencyDataImpl('XBC', 'XBC', 130, 'XBC', 'XBC'));
  result.put('XBD', new cggici.CurrencyDataImpl('XBD', 'XBD', 130, 'XBD', 'XBD'));
  result.put('XCD', new cggici.CurrencyDataImpl('XCD', 'EC$', 2, 'EC$', '$'));
  result.put('XDR', new cggici.CurrencyDataImpl('XDR', 'XDR', 130, 'XDR', 'XDR'));
  result.put('XEU', new cggici.CurrencyDataImpl('XEU', 'XEU', 130, 'XEU', 'XEU'));
  result.put('XFO', new cggici.CurrencyDataImpl('XFO', 'XFO', 130, 'XFO', 'XFO'));
  result.put('XFU', new cggici.CurrencyDataImpl('XFU', 'XFU', 130, 'XFU', 'XFU'));
  result.put('XOF', new cggici.CurrencyDataImpl('XOF', 'CFA', 0, 'CFA', 'CFA'));
  result.put('XPD', new cggici.CurrencyDataImpl('XPD', 'XPD', 130, 'XPD', 'XPD'));
  result.put('XPF', new cggici.CurrencyDataImpl('XPF', 'CFPF', 0, 'CFPF', 'FCFP'));
  result.put('XPT', new cggici.CurrencyDataImpl('XPT', 'XPT', 130, 'XPT', 'XPT'));
  result.put('XRE', new cggici.CurrencyDataImpl('XRE', 'XRE', 130, 'XRE', 'XRE'));
  result.put('XSU', new cggici.CurrencyDataImpl('XSU', 'XSU', 130, 'XSU', 'XSU'));
  result.put('XTS', new cggici.CurrencyDataImpl('XTS', 'XTS', 130, 'XTS', 'XTS'));
  result.put('XUA', new cggici.CurrencyDataImpl('XUA', 'XUA', 130, 'XUA', 'XUA'));
  result.put('XXX', new cggici.CurrencyDataImpl('XXX', '\xA4', 130, '\xA4', '\xA4'));
  result.put('YDD', new cggici.CurrencyDataImpl('YDD', 'YDD', 130, 'YDD', 'YDD'));
  result.put('YER', new cggici.CurrencyDataImpl('YER', 'YER', 0, 'YER', 'Rial'));
  result.put('YUD', new cggici.CurrencyDataImpl('YUD', 'YUD', 130, 'YUD', 'YUD'));
  result.put('YUM', new cggici.CurrencyDataImpl('YUM', 'YUM', 130, 'YUM', 'YUM'));
  result.put('YUN', new cggici.CurrencyDataImpl('YUN', 'YUN', 130, 'YUN', 'YUN'));
  result.put('YUR', new cggici.CurrencyDataImpl('YUR', 'YUR', 130, 'YUR', 'YUR'));
  result.put('ZAL', new cggici.CurrencyDataImpl('ZAL', 'ZAL', 130, 'ZAL', 'ZAL'));
  result.put('ZAR', new cggici.CurrencyDataImpl('ZAR', 'ZAR', 2, 'ZAR', 'R'));
  result.put('ZMK', new cggici.CurrencyDataImpl('ZMK', 'ZMK', 128, 'ZMK', 'ZWK'));
  result.put('ZMW', new cggici.CurrencyDataImpl('ZMW', 'ZMW', 2, 'ZMW', 'ZMW'));
  result.put('ZRN', new cggici.CurrencyDataImpl('ZRN', 'ZRN', 130, 'ZRN', 'ZRN'));
  result.put('ZRZ', new cggici.CurrencyDataImpl('ZRZ', 'ZRZ', 130, 'ZRZ', 'ZRZ'));
  result.put('ZWD', new cggici.CurrencyDataImpl('ZWD', 'ZWD', 128, 'ZWD', 'ZWD'));
  result.put('ZWL', new cggici.CurrencyDataImpl('ZWL', 'ZWL', 130, 'ZWL', 'ZWL'));
  result.put('ZWR', new cggici.CurrencyDataImpl('ZWR', 'ZWR', 130, 'ZWR', 'ZWR'));
  return result;
}
;
_.loadCurrencyMapNative = function loadCurrencyMapNative_0(){
  return cggic.overrideMap(getClassPrototype(205).loadCurrencyMapNative.call(this), this.loadMyCurrencyMapOverridesNative());
}
;
_.loadMyCurrencyMapOverridesNative = function loadMyCurrencyMapOverridesNative(){
  return {'ADP':['ADP', 'ADP', 128, 'ADP', 'ADP'], 'AED':['AED', 'DH', 2, 'DH', 'dh'], 'AFA':['AFA', 'AFA', 130, 'AFA', 'AFA'], 'AFN':['AFN', 'AFN', 0, 'AFN', 'Af.'], 'ALK':['ALK', 'ALK', 130, 'ALK', 'ALK'], 'ALL':['ALL', 'ALL', 0, 'ALL', 'Lek'], 'AMD':['AMD', 'AMD', 2, 'AMD', 'Dram'], 'ANG':['ANG', 'ANG', 2, 'ANG', 'ANG'], 'AOA':['AOA', 'AOA', 2, 'AOA', 'Kz'], 'AOK':['AOK', 'AOK', 130, 'AOK', 'AOK'], 'AON':['AON', 'AON', 130, 'AON', 'AON'], 'AOR':['AOR', 'AOR', 130, 'AOR', 'AOR'], 'ARA':['ARA', 'ARA', 130, 'ARA', 'ARA'], 'ARL':['ARL', 'ARL', 130, 'ARL', 'ARL'], 'ARM':['ARM', 'ARM', 130, 'ARM', 'ARM'], 'ARP':['ARP', 'ARP', 130, 'ARP', 'ARP'], 'ARS':['ARS', 'AR$', 2, 'AR$', '$'], 'ATS':['ATS', 'ATS', 130, 'ATS', 'ATS'], 'AUD':['AUD', 'A$', 2, 'AU$', '$'], 'AWG':['AWG', 'AWG', 2, 'AWG', 'Afl.'], 'AZM':['AZM', 'AZM', 130, 'AZM', 'AZM'], 'AZN':['AZN', 'AZN', 2, 'AZN', 'man.'], 'BAD':['BAD', 'BAD', 130, 'BAD', 'BAD'], 'BAM':['BAM', 'BAM', 2, 'BAM', 'KM'], 'BAN':['BAN', 'BAN', 130, 'BAN', 'BAN'], 'BBD':['BBD', 'BBD', 2, 'BBD', '$'], 'BDT':['BDT', 'Tk', 2, 'Tk', '\u09F3'], 'BEC':['BEC', 'BEC', 130, 'BEC', 'BEC'], 'BEF':['BEF', 'BEF', 130, 'BEF', 'BEF'], 'BEL':['BEL', 'BEL', 130, 'BEL', 'BEL'], 'BGL':['BGL', 'BGL', 130, 'BGL', 'BGL'], 'BGM':['BGM', 'BGM', 130, 'BGM', 'BGM'], 'BGN':['BGN', 'BGN', 2, 'BGN', 'lev'], 'BGO':['BGO', 'BGO', 130, 'BGO', 'BGO'], 'BHD':['BHD', 'BHD', 3, 'BHD', 'din'], 'BIF':['BIF', 'BIF', 0, 'BIF', 'FBu'], 'BMD':['BMD', 'BMD', 2, 'BMD', '$'], 'BND':['BND', 'BND', 2, 'BND', '$'], 'BOB':['BOB', 'BOB', 2, 'BOB', 'Bs'], 'BOL':['BOL', 'BOL', 130, 'BOL', 'BOL'], 'BOP':['BOP', 'BOP', 130, 'BOP', 'BOP'], 'BOV':['BOV', 'BOV', 130, 'BOV', 'BOV'], 'BRB':['BRB', 'BRB', 130, 'BRB', 'BRB'], 'BRC':['BRC', 'BRC', 130, 'BRC', 'BRC'], 'BRE':['BRE', 'BRE', 130, 'BRE', 'BRE'], 'BRL':['BRL', 'R$', 2, 'R$', 'R$'], 'BRN':['BRN', 'BRN', 130, 'BRN', 'BRN'], 'BRR':['BRR', 'BRR', 130, 'BRR', 'BRR'], 'BRZ':['BRZ', 'BRZ', 130, 'BRZ', 'BRZ'], 'BSD':['BSD', 'BSD', 2, 'BSD', '$'], 'BTN':['BTN', 'BTN', 2, 'BTN', 'Nu.'], 'BUK':['BUK', 'BUK', 130, 'BUK', 'BUK'], 'BWP':['BWP', 'BWP', 2, 'BWP', 'P'], 'BYB':['BYB', 'BYB', 130, 'BYB', 'BYB'], 'BYN':['BYN', 'BYN', 2, 'BYN', 'BYN'], 'BYR':['BYR', 'BYR', 128, 'BYR', 'BYR'], 'BZD':['BZD', 'BZD', 2, 'BZD', '$'], 'CAD':['CAD', 'CA$', 2, 'C$', '$'], 'CDF':['CDF', 'CDF', 2, 'CDF', 'FrCD'], 'CHE':['CHE', 'CHE', 130, 'CHE', 'CHE'], 'CHF':['CHF', 'CHF', 2, 'CHF', 'CHF'], 'CHW':['CHW', 'CHW', 130, 'CHW', 'CHW'], 'CLE':['CLE', 'CLE', 130, 'CLE', 'CLE'], 'CLF':['CLF', 'CLF', 132, 'CLF', 'CLF'], 'CLP':['CLP', 'CL$', 0, 'CL$', '$'], 'CNH':['CNH', 'CNH', 130, 'CNH', 'CNH'], 'CNX':['CNX', 'CNX', 130, 'CNX', 'CNX'], 'CNY':['CNY', 'CN\xA5', 2, 'RMB\xA5', '\xA5'], 'COP':['COP', 'COL$', 2, 'COL$', '$'], 'COU':['COU', 'COU', 130, 'COU', 'COU'], 'CRC':['CRC', 'CR\u20A1', 2, 'CR\u20A1', '\u20A1'], 'CSD':['CSD', 'CSD', 130, 'CSD', 'CSD'], 'CSK':['CSK', 'CSK', 130, 'CSK', 'CSK'], 'CUC':['CUC', 'CUC', 2, 'CUC', '$'], 'CUP':['CUP', '$MN', 2, '$MN', '$'], 'CVE':['CVE', 'CVE', 2, 'CVE', 'CVE'], 'CYP':['CYP', 'CYP', 130, 'CYP', 'CYP'], 'CZK':['CZK', 'K\u010D', 2, 'K\u010D', 'K\u010D'], 'DDM':['DDM', 'DDM', 130, 'DDM', 'DDM'], 'DEM':['DEM', 'DEM', 130, 'DEM', 'DEM'], 'DJF':['DJF', 'Fdj', 0, 'Fdj', 'Fdj'], 'DKK':['DKK', 'kr', 2, 'kr', 'kr'], 'DOP':['DOP', 'RD$', 2, 'RD$', '$'], 'DZD':['DZD', 'DZD', 2, 'DZD', 'din'], 'ECS':['ECS', 'ECS', 130, 'ECS', 'ECS'], 'ECV':['ECV', 'ECV', 130, 'ECV', 'ECV'], 'EEK':['EEK', 'EEK', 130, 'EEK', 'EEK'], 'EGP':['EGP', 'LE', 2, 'LE', 'E\xA3'], 'ERN':['ERN', 'ERN', 2, 'ERN', 'Nfk'], 'ESA':['ESA', 'ESA', 130, 'ESA', 'ESA'], 'ESB':['ESB', 'ESB', 130, 'ESB', 'ESB'], 'ESP':['ESP', 'ESP', 128, 'ESP', 'ESP'], 'ETB':['ETB', 'ETB', 2, 'ETB', 'Birr'], 'EUR':['EUR', '\u20AC', 2, '\u20AC', '\u20AC'], 'FIM':['FIM', 'FIM', 130, 'FIM', 'FIM'], 'FJD':['FJD', 'FJD', 2, 'FJD', '$'], 'FKP':['FKP', 'FKP', 2, 'FKP', '\xA3'], 'FRF':['FRF', 'FRF', 130, 'FRF', 'FRF'], 'GBP':['GBP', '\xA3', 2, 'GB\xA3', '\xA3'], 'GEK':['GEK', 'GEK', 130, 'GEK', 'GEK'], 'GEL':['GEL', 'GEL', 2, 'GEL', 'GEL'], 'GHC':['GHC', 'GHC', 130, 'GHC', 'GHC'], 'GHS':['GHS', 'GHS', 2, 'GHS', 'GHS'], 'GIP':['GIP', 'GIP', 2, 'GIP', '\xA3'], 'GMD':['GMD', 'GMD', 2, 'GMD', 'GMD'], 'GNF':['GNF', 'GNF', 0, 'GNF', 'FG'], 'GNS':['GNS', 'GNS', 130, 'GNS', 'GNS'], 'GQE':['GQE', 'GQE', 130, 'GQE', 'GQE'], 'GRD':['GRD', 'GRD', 130, 'GRD', 'GRD'], 'GTQ':['GTQ', 'GTQ', 2, 'GTQ', 'Q'], 'GWE':['GWE', 'GWE', 130, 'GWE', 'GWE'], 'GWP':['GWP', 'GWP', 130, 'GWP', 'GWP'], 'GYD':['GYD', 'GYD', 2, 'GYD', '$'], 'HKD':['HKD', 'HK$', 2, 'HK$', '$'], 'HNL':['HNL', 'L', 2, 'L', 'L'], 'HRD':['HRD', 'HRD', 130, 'HRD', 'HRD'], 'HRK':['HRK', 'HRK', 2, 'HRK', 'kn'], 'HTG':['HTG', 'HTG', 2, 'HTG', 'HTG'], 'HUF':['HUF', 'HUF', 2, 'HUF', 'Ft'], 'IDR':['IDR', 'IDR', 2, 'IDR', 'Rp'], 'IEP':['IEP', 'IEP', 130, 'IEP', 'IEP'], 'ILP':['ILP', 'ILP', 130, 'ILP', 'ILP'], 'ILR':['ILR', 'ILR', 130, 'ILR', 'ILR'], 'ILS':['ILS', '\u20AA', 2, 'IL\u20AA', '\u20AA'], 'INR':['INR', '\u20B9', 2, 'Rs', '\u20B9'], 'IQD':['IQD', 'IQD', 0, 'IQD', 'din'], 'IRR':['IRR', 'IRR', 0, 'IRR', 'Rial'], 'ISJ':['ISJ', 'ISJ', 130, 'ISJ', 'ISJ'], 'ISK':['ISK', 'kr', 0, 'kr', 'kr'], 'ITL':['ITL', 'ITL', 128, 'ITL', 'ITL'], 'JMD':['JMD', 'JA$', 2, 'JA$', '$'], 'JOD':['JOD', 'JOD', 3, 'JOD', 'din'], 'JPY':['JPY', 'JP\xA5', 0, 'JP\xA5', '\xA5'], 'KES':['KES', 'Ksh', 2, 'Ksh', 'Ksh'], 'KGS':['KGS', 'KGS', 2, 'KGS', 'KGS'], 'KHR':['KHR', 'KHR', 2, 'KHR', 'Riel'], 'KMF':['KMF', 'KMF', 0, 'KMF', 'CF'], 'KPW':['KPW', 'KPW', 0, 'KPW', '\u20A9'], 'KRH':['KRH', 'KRH', 130, 'KRH', 'KRH'], 'KRO':['KRO', 'KRO', 130, 'KRO', 'KRO'], 'KRW':['KRW', '\u20A9', 0, 'KR\u20A9', '\u20A9'], 'KWD':['KWD', 'KWD', 3, 'KWD', 'din'], 'KYD':['KYD', 'KYD', 2, 'KYD', '$'], 'KZT':['KZT', 'KZT', 2, 'KZT', '\u20B8'], 'LAK':['LAK', 'LAK', 0, 'LAK', '\u20AD'], 'LBP':['LBP', 'LBP', 0, 'LBP', 'L\xA3'], 'LKR':['LKR', 'SLRs', 2, 'SLRs', 'Rs'], 'LRD':['LRD', 'LRD', 2, 'LRD', '$'], 'LSL':['LSL', 'LSL', 2, 'LSL', 'LSL'], 'LTL':['LTL', 'LTL', 130, 'LTL', 'Lt'], 'LTT':['LTT', 'LTT', 130, 'LTT', 'LTT'], 'LUC':['LUC', 'LUC', 130, 'LUC', 'LUC'], 'LUF':['LUF', 'LUF', 128, 'LUF', 'LUF'], 'LUL':['LUL', 'LUL', 130, 'LUL', 'LUL'], 'LVL':['LVL', 'LVL', 130, 'LVL', 'Ls'], 'LVR':['LVR', 'LVR', 130, 'LVR', 'LVR'], 'LYD':['LYD', 'LYD', 3, 'LYD', 'din'], 'MAD':['MAD', 'MAD', 2, 'MAD', 'MAD'], 'MAF':['MAF', 'MAF', 130, 'MAF', 'MAF'], 'MCF':['MCF', 'MCF', 130, 'MCF', 'MCF'], 'MDC':['MDC', 'MDC', 130, 'MDC', 'MDC'], 'MDL':['MDL', 'MDL', 2, 'MDL', 'MDL'], 'MGA':['MGA', 'MGA', 0, 'MGA', 'Ar'], 'MGF':['MGF', 'MGF', 128, 'MGF', 'MGF'], 'MKD':['MKD', 'MKD', 2, 'MKD', 'din'], 'MKN':['MKN', 'MKN', 130, 'MKN', 'MKN'], 'MLF':['MLF', 'MLF', 130, 'MLF', 'MLF'], 'MMK':['MMK', 'MMK', 0, 'MMK', 'K'], 'MNT':['MNT', 'MN\u20AE', 2, 'MN\u20AE', '\u20AE'], 'MOP':['MOP', 'MOP', 2, 'MOP', 'MOP'], 'MRO':['MRO', 'MRO', 128, 'MRO', 'MRO'], 'MRU':['MRU', 'MRU', 2, 'MRU', 'MRU'], 'MTL':['MTL', 'MTL', 130, 'MTL', 'MTL'], 'MTP':['MTP', 'MTP', 130, 'MTP', 'MTP'], 'MUR':['MUR', 'MUR', 2, 'MUR', 'Rs'], 'MVP':['MVP', 'MVP', 130, 'MVP', 'MVP'], 'MVR':['MVR', 'MVR', 2, 'MVR', 'MVR'], 'MWK':['MWK', 'MWK', 2, 'MWK', 'MWK'], 'MXN':['MXN', 'MX$', 2, 'Mex$', '$'], 'MXP':['MXP', 'MXP', 130, 'MXP', 'MXP'], 'MXV':['MXV', 'MXV', 130, 'MXV', 'MXV'], 'MYR':['MYR', 'RM', 2, 'RM', 'RM'], 'MZE':['MZE', 'MZE', 130, 'MZE', 'MZE'], 'MZM':['MZM', 'MZM', 130, 'MZM', 'MZM'], 'MZN':['MZN', 'MZN', 2, 'MZN', 'MTn'], 'NAD':['NAD', 'NAD', 2, 'NAD', '$'], 'NGN':['NGN', 'NGN', 2, 'NGN', '\u20A6'], 'NIC':['NIC', 'NIC', 130, 'NIC', 'NIC'], 'NIO':['NIO', 'NIO', 2, 'NIO', 'C$'], 'NLG':['NLG', 'NLG', 130, 'NLG', 'NLG'], 'NOK':['NOK', 'NOkr', 2, 'NOkr', 'kr'], 'NPR':['NPR', 'NPR', 2, 'NPR', 'Rs'], 'NZD':['NZD', 'NZ$', 2, 'NZ$', '$'], 'OMR':['OMR', 'OMR', 3, 'OMR', 'Rial'], 'PAB':['PAB', 'B/.', 2, 'B/.', 'B/.'], 'PEI':['PEI', 'PEI', 130, 'PEI', 'PEI'], 'PEN':['PEN', 'S/.', 2, 'S/.', 'S/.'], 'PES':['PES', 'PES', 130, 'PES', 'PES'], 'PGK':['PGK', 'PGK', 2, 'PGK', 'PGK'], 'PHP':['PHP', 'PHP', 2, 'PHP', '\u20B1'], 'PKR':['PKR', 'PKRs.', 2, 'PKRs.', 'Rs'], 'PLN':['PLN', 'PLN', 2, 'PLN', 'z\u0142'], 'PLZ':['PLZ', 'PLZ', 130, 'PLZ', 'PLZ'], 'PTE':['PTE', 'PTE', 130, 'PTE', 'PTE'], 'PYG':['PYG', 'PYG', 0, 'PYG', 'Gs'], 'QAR':['QAR', 'QAR', 2, 'QAR', 'Rial'], 'RHD':['RHD', 'RHD', 130, 'RHD', 'RHD'], 'ROL':['ROL', 'ROL', 130, 'ROL', 'ROL'], 'RON':['RON', 'RON', 2, 'RON', 'RON'], 'RSD':['RSD', 'RSD', 0, 'RSD', 'din'], 'RUB':['RUB', '\u0440\u0443\u0431.', 2, '\u0440\u0443\u0431.', '\u0440\u0443\u0431.'], 'RUR':['RUR', 'RUR', 130, 'RUR', 'RUR'], 'RWF':['RWF', 'RWF', 0, 'RWF', 'RF'], 'SAR':['SAR', 'SR', 2, 'SR', 'Rial'], 'SBD':['SBD', 'SBD', 2, 'SBD', '$'], 'SCR':['SCR', 'SCR', 2, 'SCR', 'SCR'], 'SDD':['SDD', 'SDD', 130, 'SDD', 'SDD'], 'SDG':['SDG', 'SDG', 2, 'SDG', 'SDG'], 'SDP':['SDP', 'SDP', 130, 'SDP', 'SDP'], 'SEK':['SEK', 'kr', 2, 'kr', 'kr'], 'SGD':['SGD', 'S$', 2, 'S$', '$'], 'SHP':['SHP', 'SHP', 2, 'SHP', '\xA3'], 'SIT':['SIT', 'SIT', 130, 'SIT', 'SIT'], 'SKK':['SKK', 'SKK', 130, 'SKK', 'SKK'], 'SLL':['SLL', 'SLL', 0, 'SLL', 'SLL'], 'SOS':['SOS', 'SOS', 0, 'SOS', 'SOS'], 'SRD':['SRD', 'SRD', 2, 'SRD', '$'], 'SRG':['SRG', 'SRG', 130, 'SRG', 'SRG'], 'SSP':['SSP', 'SSP', 2, 'SSP', 'SSP'], 'STD':['STD', 'STD', 128, 'STD', 'Db'], 'STN':['STN', 'STN', 2, 'STN', 'STN'], 'SUR':['SUR', 'SUR', 130, 'SUR', 'SUR'], 'SVC':['SVC', 'SVC', 130, 'SVC', 'SVC'], 'SYP':['SYP', 'SYP', 0, 'SYP', '\xA3'], 'SZL':['SZL', 'SZL', 2, 'SZL', 'SZL'], 'THB':['THB', 'THB', 2, 'THB', '\u0E3F'], 'TJR':['TJR', 'TJR', 130, 'TJR', 'TJR'], 'TJS':['TJS', 'TJS', 2, 'TJS', 'Som'], 'TMM':['TMM', 'TMM', 128, 'TMM', 'TMM'], 'TMT':['TMT', 'TMT', 2, 'TMT', 'TMT'], 'TND':['TND', 'TND', 3, 'TND', 'din'], 'TOP':['TOP', 'TOP', 2, 'TOP', 'T$'], 'TPE':['TPE', 'TPE', 130, 'TPE', 'TPE'], 'TRL':['TRL', 'TRL', 128, 'TRL', 'TRL'], 'TRY':['TRY', 'TL', 2, 'YTL', 'TL'], 'TTD':['TTD', 'TTD', 2, 'TTD', '$'], 'TWD':['TWD', 'NT$', 2, 'NT$', 'NT$'], 'TZS':['TZS', 'TZS', 2, 'TZS', 'TSh'], 'UAH':['UAH', 'UAH', 2, 'UAH', '\u20B4'], 'UAK':['UAK', 'UAK', 130, 'UAK', 'UAK'], 'UGS':['UGS', 'UGS', 130, 'UGS', 'UGS'], 'UGX':['UGX', 'UGX', 0, 'UGX', 'UGX'], 'USD':['USD', 'US$', 2, 'US$', '$'], 'USN':['USN', 'USN', 130, 'USN', 'USN'], 'USS':['USS', 'USS', 130, 'USS', 'USS'], 'UYI':['UYI', 'UYI', 128, 'UYI', 'UYI'], 'UYP':['UYP', 'UYP', 130, 'UYP', 'UYP'], 'UYU':['UYU', 'UY$', 2, 'UY$', '$'], 'UYW':['UYW', 'UYW', 132, 'UYW', 'UYW'], 'UZS':['UZS', 'UZS', 2, 'UZS', 'so\u02BCm'], 'VEB':['VEB', 'VEB', 130, 'VEB', 'VEB'], 'VEF':['VEF', 'VEF', 130, 'VEF', 'Bs'], 'VES':['VES', 'VES', 2, 'VES', 'VES'], 'VND':['VND', '\u20AB', 24, '\u20AB', '\u20AB'], 'VNN':['VNN', 'VNN', 130, 'VNN', 'VNN'], 'VUV':['VUV', 'VUV', 0, 'VUV', 'VUV'], 'WST':['WST', 'WST', 2, 'WST', 'WST'], 'XAF':['XAF', 'FCFA', 0, 'FCFA', 'FCFA'], 'XAG':['XAG', 'XAG', 130, 'XAG', 'XAG'], 'XAU':['XAU', 'XAU', 130, 'XAU', 'XAU'], 'XBA':['XBA', 'XBA', 130, 'XBA', 'XBA'], 'XBB':['XBB', 'XBB', 130, 'XBB', 'XBB'], 'XBC':['XBC', 'XBC', 130, 'XBC', 'XBC'], 'XBD':['XBD', 'XBD', 130, 'XBD', 'XBD'], 'XCD':['XCD', 'EC$', 2, 'EC$', '$'], 'XDR':['XDR', 'XDR', 130, 'XDR', 'XDR'], 'XEU':['XEU', 'XEU', 130, 'XEU', 'XEU'], 'XFO':['XFO', 'XFO', 130, 'XFO', 'XFO'], 'XFU':['XFU', 'XFU', 130, 'XFU', 'XFU'], 'XOF':['XOF', 'CFA', 0, 'CFA', 'CFA'], 'XPD':['XPD', 'XPD', 130, 'XPD', 'XPD'], 'XPF':['XPF', 'CFPF', 0, 'CFPF', 'FCFP'], 'XPT':['XPT', 'XPT', 130, 'XPT', 'XPT'], 'XRE':['XRE', 'XRE', 130, 'XRE', 'XRE'], 'XSU':['XSU', 'XSU', 130, 'XSU', 'XSU'], 'XTS':['XTS', 'XTS', 130, 'XTS', 'XTS'], 'XUA':['XUA', 'XUA', 130, 'XUA', 'XUA'], 'XXX':['XXX', '\xA4', 130, '\xA4', '\xA4'], 'YDD':['YDD', 'YDD', 130, 'YDD', 'YDD'], 'YER':['YER', 'YER', 0, 'YER', 'Rial'], 'YUD':['YUD', 'YUD', 130, 'YUD', 'YUD'], 'YUM':['YUM', 'YUM', 130, 'YUM', 'YUM'], 'YUN':['YUN', 'YUN', 130, 'YUN', 'YUN'], 'YUR':['YUR', 'YUR', 130, 'YUR', 'YUR'], 'ZAL':['ZAL', 'ZAL', 130, 'ZAL', 'ZAL'], 'ZAR':['ZAR', 'ZAR', 2, 'ZAR', 'R'], 'ZMK':['ZMK', 'ZMK', 128, 'ZMK', 'ZWK'], 'ZMW':['ZMW', 'ZMW', 2, 'ZMW', 'ZMW'], 'ZRN':['ZRN', 'ZRN', 130, 'ZRN', 'ZRN'], 'ZRZ':['ZRZ', 'ZRZ', 130, 'ZRZ', 'ZRZ'], 'ZWD':['ZWD', 'ZWD', 128, 'ZWD', 'ZWD'], 'ZWL':['ZWL', 'ZWL', 130, 'ZWL', 'ZWL'], 'ZWR':['ZWR', 'ZWR', 130, 'ZWR', 'ZWR']};
}
;
cggl.Lcom_google_gwt_i18n_client_CurrencyList_1_2_classLit = createForClass('com.google.gwt.i18n.client', 'CurrencyList_', 745, cggl.Lcom_google_gwt_i18n_client_CurrencyList_2_classLit);
cggic.$clinit_DefaultCurrencyData = function $clinit_DefaultCurrencyData(){
  cggic.$clinit_DefaultCurrencyData = emptyMethod;
  jl.$clinit_Object();
}
;
cggic.DefaultCurrencyData = function DefaultCurrencyData(currencyCode, currencySymbol, fractionDigits){
  cggic.$clinit_DefaultCurrencyData();
  Object_0.call(this);
  this.$init_459();
  this.currencyCode = currencyCode;
  this.currencySymbol = currencySymbol;
  this.fractionDigits = fractionDigits;
}
;
defineClass(746, 1, {326:1, 1:1});
_.$init_459 = function $init_459(){
}
;
_.getCurrencyCode = function getCurrencyCode(){
  return this.currencyCode;
}
;
_.getCurrencySymbol = function getCurrencySymbol(){
  return this.currencySymbol;
}
;
_.getDefaultFractionDigits = function getDefaultFractionDigits(){
  return this.fractionDigits;
}
;
_.getSimpleCurrencySymbol = function getSimpleCurrencySymbol(){
  return this.getCurrencySymbol();
}
;
_.isDeprecated = function isDeprecated(){
  return false;
}
;
_.fractionDigits = 0;
cggl.Lcom_google_gwt_i18n_client_DefaultCurrencyData_2_classLit = createForClass('com.google.gwt.i18n.client', 'DefaultCurrencyData', 746, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_HasDirection$Direction = function $clinit_HasDirection$Direction(){
  cggic.$clinit_HasDirection$Direction = emptyMethod;
  jl.$clinit_Enum();
  cggic.RTL = new cggic.HasDirection$Direction('RTL', 0);
  cggic.LTR = new cggic.HasDirection$Direction('LTR', 1);
  cggic.DEFAULT_0 = new cggic.HasDirection$Direction('DEFAULT', 2);
}
;
cggic.HasDirection$Direction = function HasDirection$Direction(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_460();
}
;
cggic.valueOf_15 = function valueOf_15(name_0){
  cggic.$clinit_HasDirection$Direction();
  return valueOf((cggic.$clinit_HasDirection$Direction$Map() , cggic.$MAP_14), name_0);
}
;
cggic.values_15 = function values_15(){
  cggic.$clinit_HasDirection$Direction();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_i18n_client_HasDirection$Direction_2_classLit, 1), {4:1, 1:1, 7:1}, 204, 0, [cggic.RTL, cggic.LTR, cggic.DEFAULT_0]);
}
;
defineClass(204, 11, {204:1, 4:1, 10:1, 11:1, 1:1}, cggic.HasDirection$Direction);
_.$init_460 = function $init_460(){
}
;
cggl.Lcom_google_gwt_i18n_client_HasDirection$Direction_2_classLit = createForEnum('com.google.gwt.i18n.client', 'HasDirection/Direction', 204, cggl.Ljava_lang_Enum_2_classLit, cggic.values_15, cggic.valueOf_15);
cggic.$clinit_HasDirection$Direction$Map = function $clinit_HasDirection$Direction$Map(){
  cggic.$clinit_HasDirection$Direction$Map = emptyMethod;
  cggic.$MAP_14 = createValueOfMap(cggic.values_15());
}
;
defineClass(1160, 1, {1:1});
cggl.Lcom_google_gwt_i18n_client_HasDirection$Direction$Map_2_classLit = createForClass('com.google.gwt.i18n.client', 'HasDirection/Direction/Map', 1160, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_LocaleInfo = function $clinit_LocaleInfo(){
  cggic.$clinit_LocaleInfo = emptyMethod;
  jl.$clinit_Object();
  cggic.instance_4 = new cggic.LocaleInfo(castTo(castTo(new cggici.LocaleInfoImpl_, 180), 180), castTo(castTo(new cggici.CldrImpl, 237), 237));
}
;
cggic.LocaleInfo = function LocaleInfo(impl, cldr){
  Object_0.call(this);
  this.$init_461();
  this.infoImpl = impl;
  this.cldrImpl = cldr;
}
;
cggic.getCurrentLocale = function getCurrentLocale(){
  cggic.$clinit_LocaleInfo();
  return cggic.instance_4;
}
;
cggic.hasAnyRTL = function hasAnyRTL(){
  cggic.$clinit_LocaleInfo();
  return cggic.instance_4.infoImpl.hasAnyRTL();
}
;
defineClass(668, 1, {1:1}, cggic.LocaleInfo);
_.$init_461 = function $init_461(){
}
;
_.ensureNumberConstants = function ensureNumberConstants(){
  if (isNull(this.numberConstants)) {
    this.numberConstants = this.infoImpl.getNumberConstants();
  }
}
;
_.getNumberConstants = function getNumberConstants(){
  this.ensureNumberConstants();
  return this.numberConstants;
}
;
_.isRTL_0 = function isRTL_0(){
  return this.cldrImpl.isRTL_0();
}
;
cggl.Lcom_google_gwt_i18n_client_LocaleInfo_2_classLit = createForClass('com.google.gwt.i18n.client', 'LocaleInfo', 668, cggl.Ljava_lang_Object_2_classLit);
cggic.$clinit_LocalizableResource$DefaultLocale = function $clinit_LocalizableResource$DefaultLocale(){
  cggic.$clinit_LocalizableResource$DefaultLocale = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$DefaultLocale_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/DefaultLocale');
cggic.$clinit_LocalizableResource$Description = function $clinit_LocalizableResource$Description(){
  cggic.$clinit_LocalizableResource$Description = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$Description_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/Description');
cggic.$clinit_LocalizableResource$Generate = function $clinit_LocalizableResource$Generate(){
  cggic.$clinit_LocalizableResource$Generate = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$Generate_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/Generate');
cggic.$clinit_LocalizableResource$GenerateKeys = function $clinit_LocalizableResource$GenerateKeys(){
  cggic.$clinit_LocalizableResource$GenerateKeys = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$GenerateKeys_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/GenerateKeys');
cggic.$clinit_LocalizableResource$GeneratedFrom = function $clinit_LocalizableResource$GeneratedFrom(){
  cggic.$clinit_LocalizableResource$GeneratedFrom = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$GeneratedFrom_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/GeneratedFrom');
cggic.$clinit_LocalizableResource$Key = function $clinit_LocalizableResource$Key(){
  cggic.$clinit_LocalizableResource$Key = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$Key_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/Key');
cggic.$clinit_LocalizableResource$Meaning = function $clinit_LocalizableResource$Meaning(){
  cggic.$clinit_LocalizableResource$Meaning = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_LocalizableResource$Meaning_2_classLit = createForInterface('com.google.gwt.i18n.client', 'LocalizableResource/Meaning');
cggic.$clinit_NumberFormat = function $clinit_NumberFormat(){
  cggic.$clinit_NumberFormat = emptyMethod;
  jl.$clinit_Object();
  cggic.localizedNumberConstants = cggic.getCurrentLocale().getNumberConstants();
  cggic.defaultNumberConstants = cggic.localizedNumberConstants;
}
;
cggic.NumberFormat = function NumberFormat(numberConstants, pattern, cdata, userSuppliedPattern){
  Object_0.call(this);
  this.$init_462();
  if (isNull(cdata)) {
    throw toJs(new jl.IllegalArgumentException_0('Unknown currency code'));
  }
  this.numberConstants = numberConstants;
  this.pattern = pattern;
  this.currencyData = cdata;
  this.parsePattern(this.pattern);
  if (!userSuppliedPattern && this.isCurrencyFormat) {
    this.minimumFractionDigits = cggici.getDefaultFractionDigits__I__devirtual$(this.currencyData);
    this.maximumFractionDigits = this.minimumFractionDigits;
  }
}
;
cggic.NumberFormat_0 = function NumberFormat_0(pattern, cdata, userSuppliedPattern){
  cggic.NumberFormat.call(this, cggic.defaultNumberConstants, pattern, cdata, userSuppliedPattern);
}
;
cggic.getFormat = function getFormat(pattern){
  cggic.$clinit_NumberFormat();
  return new cggic.NumberFormat_0(pattern, cggic.get_21().getDefault(), true);
}
;
cggic.toPrecision = function toPrecision(d, digits){
  return d.toPrecision(digits);
}
;
cggic.toScaledString = function toScaledString(buf, val){
  var dot, expDigits, expIdx, scale, startLen;
  startLen = buf.length_0();
  buf.append_9(cggic.toPrecision(val, 20));
  scale = 0;
  expIdx = buf.indexOf_3('e', startLen);
  if (expIdx < 0) {
    expIdx = buf.indexOf_3('E', startLen);
  }
  if (expIdx >= 0) {
    expDigits = expIdx + 1;
    if (expDigits < buf.length_0() && buf.charAt_0(expDigits) == 43) {
      ++expDigits;
    }
    if (expDigits < buf.length_0()) {
      scale = jl.parseInt_2(buf.substring_0(expDigits));
    }
    buf.delete_0(expIdx, buf.length_0());
  }
  dot = buf.indexOf_3('.', startLen);
  if (dot >= 0) {
    buf.deleteCharAt(dot);
    scale -= buf.length_0() - dot;
  }
  return scale;
}
;
defineClass(356, 1, {1:1}, cggic.NumberFormat_0);
_.$init_462 = function $init_462(){
  this.decimalSeparatorAlwaysShown = false;
  this.groupingSize = 3;
  this.isCurrencyFormat = false;
  this.maximumFractionDigits = 3;
  this.maximumIntegerDigits = 40;
  this.minimumFractionDigits = 0;
  this.minimumIntegerDigits = 1;
  this.multiplier = 1;
  this.negativePrefix = '-';
  this.negativeSuffix = '';
  this.positivePrefix = '';
  this.positiveSuffix = '';
  this.useExponentialNotation = false;
}
;
_.addExponent = function addExponent(digits){
  var exponentDigits, i;
  digits.append_9(this.numberConstants.exponentialSymbol());
  if (this.exponent < 0) {
    this.exponent = -this.exponent;
    digits.append_9(this.numberConstants.minusSign());
  }
  exponentDigits = jl.valueOf_32(this.exponent);
  for (i = jl.length__I__devirtual$_0(exponentDigits); i < this.minExponentDigits; ++i) {
    digits.append_4(48);
  }
  digits.append_9(exponentDigits);
}
;
_.addZeroAndDecimal = function addZeroAndDecimal(digits, decimalSeparator){
  if (this.digitsLength == 0) {
    digits.insert_2(0, 48);
    ++this.decimalPosition;
    ++this.digitsLength;
  }
  if (this.decimalPosition < this.digitsLength || this.decimalSeparatorAlwaysShown) {
    digits.insert_2(this.decimalPosition, decimalSeparator);
    ++this.digitsLength;
  }
}
;
_.adjustFractionDigits = function adjustFractionDigits(digits){
  var requiredDigits, toRemove;
  requiredDigits = this.decimalPosition + this.minimumFractionDigits;
  if (this.digitsLength < requiredDigits) {
    while (this.digitsLength < requiredDigits) {
      digits.append_4(48);
      ++this.digitsLength;
    }
  }
   else {
    toRemove = this.decimalPosition + this.maximumFractionDigits;
    if (toRemove > this.digitsLength) {
      toRemove = this.digitsLength;
    }
    while (toRemove > requiredDigits && digits.charAt_0(toRemove - 1) == 48) {
      --toRemove;
    }
    if (toRemove < this.digitsLength) {
      digits.delete_0(toRemove, this.digitsLength);
      this.digitsLength = toRemove;
    }
  }
}
;
_.computeExponent = function computeExponent(digits){
  var remainder, strip;
  strip = 0;
  while (strip < this.digitsLength - 1 && digits.charAt_0(strip) == 48) {
    ++strip;
  }
  if (strip > 0) {
    digits.delete_0(0, strip);
    this.digitsLength -= strip;
    this.exponent -= strip;
  }
  if (this.maximumIntegerDigits > this.minimumIntegerDigits && this.maximumIntegerDigits > 0) {
    this.exponent += this.decimalPosition - 1;
    remainder = this.exponent % this.maximumIntegerDigits;
    if (remainder < 0) {
      remainder += this.maximumIntegerDigits;
    }
    this.decimalPosition = remainder + 1;
    this.exponent -= remainder;
  }
   else {
    this.exponent += this.decimalPosition - this.minimumIntegerDigits;
    this.decimalPosition = this.minimumIntegerDigits;
  }
  if (this.digitsLength == 1 && digits.charAt_0(0) == 48) {
    this.exponent = 0;
    this.decimalPosition = this.minimumIntegerDigits;
  }
}
;
_.format = function format_0(number){
  var buf, isNegative, preRound, scale;
  if (isNaN(number)) {
    return this.numberConstants.notANumber();
  }
  isNegative = number < 0 || number == 0 && 1 / number < 0;
  if (isNegative) {
    number = -number;
  }
  buf = new jl.StringBuilder;
  if (jl.isInfinite(number)) {
    buf.append_9(isNegative?this.negativePrefix:this.positivePrefix);
    buf.append_9(this.numberConstants.infinity());
    buf.append_9(isNegative?this.negativeSuffix:this.positiveSuffix);
    return buf.toString_0();
  }
  number *= this.multiplier;
  scale = cggic.toScaledString(buf, number);
  preRound = buf.length_0() + scale + this.maximumFractionDigits + 3;
  if (preRound > 0 && preRound < buf.length_0() && buf.charAt_0(preRound) == 57) {
    this.propagateCarry(buf, preRound - 1);
    scale += buf.length_0() - preRound;
    buf.delete_0(preRound, buf.length_0());
  }
  this.format_0(isNegative, buf, scale);
  return buf.toString_0();
}
;
_.format_0 = function format_1(isNegative, digits, scale){
  var currentGroupingSize, decimalSeparator, groupingSeparator, useExponent, zeroChar;
  if (this.isCurrencyFormat) {
    decimalSeparator = jl.charAt_I_C__devirtual$_0(this.numberConstants.monetarySeparator(), 0);
    groupingSeparator = jl.charAt_I_C__devirtual$_0(this.numberConstants.monetaryGroupingSeparator(), 0);
  }
   else {
    decimalSeparator = jl.charAt_I_C__devirtual$_0(this.numberConstants.decimalSeparator(), 0);
    groupingSeparator = jl.charAt_I_C__devirtual$_0(this.numberConstants.groupingSeparator(), 0);
  }
  this.exponent = 0;
  this.digitsLength = digits.length_0();
  this.decimalPosition = this.digitsLength + scale;
  useExponent = this.useExponentialNotation;
  currentGroupingSize = this.groupingSize;
  if (this.decimalPosition > 1024) {
    useExponent = true;
  }
  if (useExponent) {
    this.computeExponent(digits);
  }
  this.processLeadingZeros(digits);
  this.roundValue(digits);
  this.insertGroupingSeparators(digits, groupingSeparator, currentGroupingSize);
  this.adjustFractionDigits(digits);
  this.addZeroAndDecimal(digits, decimalSeparator);
  if (useExponent) {
    this.addExponent(digits);
  }
  zeroChar = jl.charAt_I_C__devirtual$_0(this.numberConstants.zeroDigit(), 0);
  if (zeroChar != 48) {
    this.localizeDigits(digits, zeroChar);
  }
  digits.insert_4(0, isNegative?this.negativePrefix:this.positivePrefix);
  digits.append_9(isNegative?this.negativeSuffix:this.positiveSuffix);
}
;
_.getNumberConstants = function getNumberConstants_0(){
  return this.numberConstants;
}
;
_.insertGroupingSeparators = function insertGroupingSeparators(digits, groupingSeparator, g){
  var i;
  if (g > 0) {
    for (i = g; i < this.decimalPosition; i += g + 1) {
      digits.insert_2(this.decimalPosition - i, groupingSeparator);
      ++this.decimalPosition;
      ++this.digitsLength;
    }
  }
}
;
_.localizeDigits = function localizeDigits(digits, zero){
  var ch_0, i, n;
  n = digits.length_0();
  for (i = 0; i < n; ++i) {
    ch_0 = digits.charAt_0(i);
    if (ch_0 >= 48 && ch_0 <= 57) {
      digits.setCharAt(i, narrow_char(ch_0 - 48 + zero));
    }
  }
}
;
_.parseAffix = function parseAffix(pattern, start_0, affix, inNegativePattern){
  var ch_0, inQuote, len, pos;
  affix.delete_0(0, affix.length_0());
  inQuote = false;
  len = jl.length__I__devirtual$_0(pattern);
  for (pos = start_0; pos < len; ++pos) {
    ch_0 = jl.charAt_I_C__devirtual$_0(pattern, pos);
    if (ch_0 == 39) {
      if (pos + 1 < len && jl.charAt_I_C__devirtual$_0(pattern, pos + 1) == 39) {
        ++pos;
        affix.append_9("'");
      }
       else {
        inQuote = !inQuote;
      }
      continue;
    }
    if (inQuote) {
      affix.append_4(ch_0);
    }
     else {
      switch (ch_0) {
        case 35:
        case 48:
        case 44:
        case 46:
        case 59:
          return pos - start_0;
        case 164:
          this.isCurrencyFormat = true;
          if (pos + 1 < len && jl.charAt_I_C__devirtual$_0(pattern, pos + 1) == 164) {
            ++pos;
            if (pos < len - 2 && jl.charAt_I_C__devirtual$_0(pattern, pos + 1) == 164 && jl.charAt_I_C__devirtual$_0(pattern, pos + 2) == 164) {
              pos += 2;
              affix.append_9(cggici.getSimpleCurrencySymbol__Ljava_lang_String___devirtual$(this.currencyData));
            }
             else {
              affix.append_9(cggici.getCurrencyCode__Ljava_lang_String___devirtual$(this.currencyData));
            }
          }
           else {
            affix.append_9(cggici.getCurrencySymbol__Ljava_lang_String___devirtual$(this.currencyData));
          }

          break;
        case 37:
          if (!inNegativePattern) {
            if (this.multiplier != 1) {
              throw toJs(new jl.IllegalArgumentException_0('Too many percent/per mille characters in pattern "' + pattern + '"'));
            }
            this.multiplier = 100;
          }

          affix.append_9(this.numberConstants.percent());
          break;
        case 8240:
          if (!inNegativePattern) {
            if (this.multiplier != 1) {
              throw toJs(new jl.IllegalArgumentException_0('Too many percent/per mille characters in pattern "' + pattern + '"'));
            }
            this.multiplier = 1000;
          }

          affix.append_9(this.numberConstants.perMill());
          break;
        case 45:
          affix.append_9('-');
          break;
        default:affix.append_4(ch_0);
      }
    }
  }
  return len - start_0;
}
;
_.parsePattern = function parsePattern(pattern){
  var affix, pos;
  pos = 0;
  affix = new jl.StringBuilder;
  pos += this.parseAffix(pattern, pos, affix, false);
  this.positivePrefix = affix.toString_0();
  pos += this.parseTrunk(pattern, pos, false);
  pos += this.parseAffix(pattern, pos, affix, false);
  this.positiveSuffix = affix.toString_0();
  if (pos < jl.length__I__devirtual$_0(pattern) && jl.charAt_I_C__devirtual$_0(pattern, pos) == 59) {
    ++pos;
    pos += this.parseAffix(pattern, pos, affix, true);
    this.negativePrefix = affix.toString_0();
    pos += this.parseTrunk(pattern, pos, true);
    pos += this.parseAffix(pattern, pos, affix, true);
    this.negativeSuffix = affix.toString_0();
  }
   else {
    this.negativePrefix = this.numberConstants.minusSign() + ('' + this.positivePrefix);
    this.negativeSuffix = this.positiveSuffix;
  }
}
;
_.parseTrunk = function parseTrunk(pattern, start_0, ignorePattern){
  var ch_0, decimalPos, digitLeftCount, digitRightCount, effectiveDecimalPos, groupingCount, len, loop, n, pos, totalDigits, zeroDigitCount;
  decimalPos = -1;
  digitLeftCount = 0;
  zeroDigitCount = 0;
  digitRightCount = 0;
  groupingCount = -1;
  len = jl.length__I__devirtual$_0(pattern);
  pos = start_0;
  loop = true;
  for (; pos < len && loop; ++pos) {
    ch_0 = jl.charAt_I_C__devirtual$_0(pattern, pos);
    switch (ch_0) {
      case 35:
        if (zeroDigitCount > 0) {
          ++digitRightCount;
        }
         else {
          ++digitLeftCount;
        }

        if (groupingCount >= 0 && decimalPos < 0) {
          ++groupingCount;
        }

        break;
      case 48:
        if (digitRightCount > 0) {
          throw toJs(new jl.IllegalArgumentException_0("Unexpected '0' in pattern \"" + pattern + '"'));
        }

        ++zeroDigitCount;
        if (groupingCount >= 0 && decimalPos < 0) {
          ++groupingCount;
        }

        break;
      case 44:
        groupingCount = 0;
        break;
      case 46:
        if (decimalPos >= 0) {
          throw toJs(new jl.IllegalArgumentException_0('Multiple decimal separators in pattern "' + pattern + '"'));
        }

        decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;
        break;
      case 69:
        if (!ignorePattern) {
          if (this.useExponentialNotation) {
            throw toJs(new jl.IllegalArgumentException_0('Multiple exponential symbols in pattern "' + pattern + '"'));
          }
          this.useExponentialNotation = true;
          this.minExponentDigits = 0;
        }

        while (pos + 1 < len && jl.charAt_I_C__devirtual$_0(pattern, pos + 1) == 48) {
          ++pos;
          if (!ignorePattern) {
            ++this.minExponentDigits;
          }
        }

        if (!ignorePattern && digitLeftCount + zeroDigitCount < 1 || this.minExponentDigits < 1) {
          throw toJs(new jl.IllegalArgumentException_0('Malformed exponential pattern "' + pattern + '"'));
        }

        loop = false;
        break;
      default:--pos;
        loop = false;
        break;
    }
  }
  if (zeroDigitCount == 0 && digitLeftCount > 0 && decimalPos >= 0) {
    n = decimalPos;
    if (n == 0) {
      ++n;
    }
    digitRightCount = digitLeftCount - n;
    digitLeftCount = n - 1;
    zeroDigitCount = 1;
  }
  if (decimalPos < 0 && digitRightCount > 0 || decimalPos >= 0 && (decimalPos < digitLeftCount || decimalPos > digitLeftCount + zeroDigitCount) || groupingCount == 0) {
    throw toJs(new jl.IllegalArgumentException_0('Malformed pattern "' + pattern + '"'));
  }
  if (ignorePattern) {
    return pos - start_0;
  }
  totalDigits = digitLeftCount + zeroDigitCount + digitRightCount;
  this.maximumFractionDigits = decimalPos >= 0?totalDigits - decimalPos:0;
  if (decimalPos >= 0) {
    this.minimumFractionDigits = digitLeftCount + zeroDigitCount - decimalPos;
    if (this.minimumFractionDigits < 0) {
      this.minimumFractionDigits = 0;
    }
  }
  effectiveDecimalPos = decimalPos >= 0?decimalPos:totalDigits;
  this.minimumIntegerDigits = effectiveDecimalPos - digitLeftCount;
  if (this.useExponentialNotation) {
    this.maximumIntegerDigits = digitLeftCount + this.minimumIntegerDigits;
    if (this.maximumFractionDigits == 0 && this.minimumIntegerDigits == 0) {
      this.minimumIntegerDigits = 1;
    }
  }
  this.groupingSize = groupingCount > 0?groupingCount:0;
  this.decimalSeparatorAlwaysShown = decimalPos == 0 || decimalPos == totalDigits;
  return pos - start_0;
}
;
_.processLeadingZeros = function processLeadingZeros(digits){
  var i, prefix, strip;
  if (this.decimalPosition > this.digitsLength) {
    while (this.digitsLength < this.decimalPosition) {
      digits.append_4(48);
      ++this.digitsLength;
    }
  }
  if (!this.useExponentialNotation) {
    if (this.decimalPosition < this.minimumIntegerDigits) {
      prefix = new jl.StringBuilder;
      while (this.decimalPosition < this.minimumIntegerDigits) {
        prefix.append_4(48);
        ++this.decimalPosition;
        ++this.digitsLength;
      }
      digits.insert_3(0, prefix);
    }
     else if (this.decimalPosition > this.minimumIntegerDigits) {
      strip = this.decimalPosition - this.minimumIntegerDigits;
      for (i = 0; i < strip; ++i) {
        if (digits.charAt_0(i) != 48) {
          strip = i;
          break;
        }
      }
      if (strip > 0) {
        digits.delete_0(0, strip);
        this.digitsLength -= strip;
        this.decimalPosition -= strip;
      }
    }
  }
}
;
_.propagateCarry = function propagateCarry(digits, i){
  var carry, digit;
  carry = true;
  while (carry && i >= 0) {
    digit = digits.charAt_0(i);
    if (digit == 57) {
      digits.setCharAt(i--, 48);
    }
     else {
      digits.setCharAt(i, narrow_char(digit + 1));
      carry = false;
    }
  }
  if (carry) {
    digits.insert_2(0, 49);
    ++this.decimalPosition;
    ++this.digitsLength;
  }
}
;
_.roundValue = function roundValue(digits){
  var i;
  if (this.digitsLength > this.decimalPosition + this.maximumFractionDigits && digits.charAt_0(this.decimalPosition + this.maximumFractionDigits) >= 53) {
    i = this.decimalPosition + this.maximumFractionDigits - 1;
    this.propagateCarry(digits, i);
  }
}
;
_.decimalPosition = 0;
_.decimalSeparatorAlwaysShown = false;
_.digitsLength = 0;
_.exponent = 0;
_.groupingSize = 0;
_.isCurrencyFormat = false;
_.maximumFractionDigits = 0;
_.maximumIntegerDigits = 0;
_.minExponentDigits = 0;
_.minimumFractionDigits = 0;
_.minimumIntegerDigits = 0;
_.multiplier = 0;
_.useExponentialNotation = false;
cggic.CURRENCY_SIGN = 164;
cggic.LOCALIZED_COMMA_EQUIVALENTS = ',\u060C\u066B\u3001\uFE10\uFE11\uFE50\uFE51\uFF0C\uFF64';
cggic.LOCALIZED_DOT_EQUIVALENTS = '.\u2024\u3002\uFE12\uFE52\uFF0E\uFF61';
cggic.PATTERN_DECIMAL_SEPARATOR = 46;
cggic.PATTERN_DIGIT = 35;
cggic.PATTERN_EXPONENT = 69;
cggic.PATTERN_GROUPING_SEPARATOR = 44;
cggic.PATTERN_MINUS = 45;
cggic.PATTERN_PERCENT = 37;
cggic.PATTERN_PER_MILLE = 8240;
cggic.PATTERN_SEPARATOR = 59;
cggic.PATTERN_ZERO_DIGIT = 48;
cggic.QUOTE = 39;
cggic.latinNumberConstants = null;
cggl.Lcom_google_gwt_i18n_client_NumberFormat_2_classLit = createForClass('com.google.gwt.i18n.client', 'NumberFormat', 356, cggl.Ljava_lang_Object_2_classLit);
cggicc.$clinit_NumberConstants = function $clinit_NumberConstants(){
  cggicc.$clinit_NumberConstants = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_constants_NumberConstants_2_classLit = createForInterface('com.google.gwt.i18n.client.constants', 'NumberConstants');
cggic.$clinit_NumberFormat$1 = function $clinit_NumberFormat$1(){
  cggic.$clinit_NumberFormat$1 = emptyMethod;
}
;
defineClass(1166, 1, {1:1});
cggl.Lcom_google_gwt_i18n_client_NumberFormat$1_2_classLit = createForClass('com.google.gwt.i18n.client', 'NumberFormat/1', 1166, cggl.Ljava_lang_Object_2_classLit);
cggicc.$clinit_NumberConstantsImpl = function $clinit_NumberConstantsImpl(){
  cggicc.$clinit_NumberConstantsImpl = emptyMethod;
}
;
cggl.Lcom_google_gwt_i18n_client_constants_NumberConstantsImpl_2_classLit = createForInterface('com.google.gwt.i18n.client.constants', 'NumberConstantsImpl');
cggicc.$clinit_NumberConstantsImpl_ = function $clinit_NumberConstantsImpl_(){
  cggicc.$clinit_NumberConstantsImpl_ = emptyMethod;
  jl.$clinit_Object();
}
;
cggicc.NumberConstantsImpl_ = function NumberConstantsImpl_(){
  cggicc.$clinit_NumberConstantsImpl_();
  Object_0.call(this);
  this.$init_463();
}
;
defineClass(378, 1, {817:1, 1:1}, cggicc.NumberConstantsImpl_);
_.$init_463 = function $init_463(){
}
;
_.decimalSeparator = function decimalSeparator_0(){
  return '.';
}
;
_.exponentialSymbol = function exponentialSymbol(){
  return 'E';
}
;
_.groupingSeparator = function groupingSeparator_0(){
  return ',';
}
;
_.infinity = function infinity(){
  return '\u221E';
}
;
_.minusSign = function minusSign(){
  return '-';
}
;
_.monetaryGroupingSeparator = function monetaryGroupingSeparator(){
  return ',';
}
;
_.monetarySeparator = function monetarySeparator(){
  return '.';
}
;
_.notANumber = function notANumber(){
  return 'NaN';
}
;
_.perMill = function perMill(){
  return '\u2030';
}
;
_.percent = function percent(){
  return '%';
}
;
_.zeroDigit = function zeroDigit(){
  return '0';
}
;
cggl.Lcom_google_gwt_i18n_client_constants_NumberConstantsImpl_1_2_classLit = createForClass('com.google.gwt.i18n.client.constants', 'NumberConstantsImpl_', 378, cggl.Ljava_lang_Object_2_classLit);
cggici.$clinit_CldrImpl = function $clinit_CldrImpl(){
  cggici.$clinit_CldrImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggici.CldrImpl = function CldrImpl(){
  cggici.$clinit_CldrImpl();
  Object_0.call(this);
  this.$init_464();
}
;
defineClass(237, 1, {237:1, 1:1}, cggici.CldrImpl);
_.$init_464 = function $init_464(){
}
;
_.isRTL_0 = function isRTL_1(){
  return false;
}
;
cggl.Lcom_google_gwt_i18n_client_impl_CldrImpl_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'CldrImpl', 237, cggl.Ljava_lang_Object_2_classLit);
cggici.$clinit_CurrencyDataImpl = function $clinit_CurrencyDataImpl(){
  cggici.$clinit_CurrencyDataImpl = emptyMethod;
  cggic.$clinit_DefaultCurrencyData();
}
;
cggici.CurrencyDataImpl = function CurrencyDataImpl(currencyCode, currencySymbol, flagsAndPrecision, portableCurrencySymbol, simpleCurrencySymbol){
  cggici.$clinit_CurrencyDataImpl();
  cggic.DefaultCurrencyData.call(this, currencyCode, currencySymbol, cggici.getDefaultFractionDigits_1(flagsAndPrecision));
  this.$init_465();
  this.flagsAndPrecision = flagsAndPrecision;
  this.portableCurrencySymbol = jsEquals(portableCurrencySymbol, null)?currencySymbol:portableCurrencySymbol;
  this.simpleCurrencySymbol = jsEquals(simpleCurrencySymbol, null)?currencySymbol:simpleCurrencySymbol;
}
;
cggici.getDefaultFractionDigits_1 = function getDefaultFractionDigits_1(flagsAndPrecision){
  cggici.$clinit_CurrencyDataImpl();
  return flagsAndPrecision & 7;
}
;
cggici.isDeprecated_1 = function isDeprecated_1(flagsAndPrecision){
  cggici.$clinit_CurrencyDataImpl();
  return (flagsAndPrecision & 128) != 0;
}
;
defineClass(9, 746, {326:1, 1:1}, cggici.CurrencyDataImpl);
_.$init_465 = function $init_465(){
}
;
_.getDefaultFractionDigits = function getDefaultFractionDigits_0(){
  return cggici.getDefaultFractionDigits_1(this.flagsAndPrecision);
}
;
_.getSimpleCurrencySymbol = function getSimpleCurrencySymbol_0(){
  return this.simpleCurrencySymbol;
}
;
_.isDeprecated = function isDeprecated_0(){
  return cggici.isDeprecated_1(this.flagsAndPrecision);
}
;
_.flagsAndPrecision = 0;
cggici.DEPRECATED_FLAG = 128;
cggici.POS_FIXED_FLAG = 16;
cggici.POS_SUFFIX_FLAG = 8;
cggici.PRECISION_MASK = 7;
cggici.SPACE_FORCED_FLAG = 32;
cggici.SPACING_FIXED_FLAG = 64;
cggl.Lcom_google_gwt_i18n_client_impl_CurrencyDataImpl_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'CurrencyDataImpl', 9, cggl.Lcom_google_gwt_i18n_client_DefaultCurrencyData_2_classLit);
cggici.$clinit_CurrencyDataJso = function $clinit_CurrencyDataJso(){
  cggici.$clinit_CurrencyDataJso = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggici.$getCurrencyCode = function $getCurrencyCode(this$static){
  return this$static[0];
}
;
cggici.$getCurrencySymbol = function $getCurrencySymbol(this$static){
  return this$static[1];
}
;
cggici.$getDefaultFractionDigits = function $getDefaultFractionDigits(this$static){
  return cggici.getDefaultFractionDigits_1(cggici.$getFlagsAndPrecision(this$static));
}
;
cggici.$getFlagsAndPrecision = function $getFlagsAndPrecision(this$static){
  return this$static[2];
}
;
cggici.$getSimpleCurrencySymbol = function $getSimpleCurrencySymbol(this$static){
  return this$static[4] || this$static[1];
}
;
cggici.$isDeprecated = function $isDeprecated(this$static){
  return cggici.isDeprecated_1(cggici.$getFlagsAndPrecision(this$static));
}
;
cggici.getCurrencyCode__Ljava_lang_String___devirtual$ = function getCurrencyCode__Ljava_lang_String___devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.getCurrencyCode():cggici.$getCurrencyCode(this$static);
}
;
cggici.getCurrencySymbol__Ljava_lang_String___devirtual$ = function getCurrencySymbol__Ljava_lang_String___devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.getCurrencySymbol():cggici.$getCurrencySymbol(this$static);
}
;
cggici.getDefaultFractionDigits__I__devirtual$ = function getDefaultFractionDigits__I__devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.getDefaultFractionDigits():cggici.$getDefaultFractionDigits(this$static);
}
;
cggici.getSimpleCurrencySymbol__Ljava_lang_String___devirtual$ = function getSimpleCurrencySymbol__Ljava_lang_String___devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.getSimpleCurrencySymbol():cggici.$getSimpleCurrencySymbol(this$static);
}
;
cggici.isDeprecated__Z__devirtual$ = function isDeprecated__Z__devirtual$(this$static){
  cggici.$clinit_CurrencyDataJso();
  return hasJavaObjectVirtualDispatch(this$static)?this$static.isDeprecated():cggici.$isDeprecated(this$static);
}
;
cggici.$clinit_LocaleInfoImpl = function $clinit_LocaleInfoImpl(){
  cggici.$clinit_LocaleInfoImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggici.LocaleInfoImpl = function LocaleInfoImpl(){
  cggici.$clinit_LocaleInfoImpl();
  Object_0.call(this);
  this.$init_466();
}
;
defineClass(180, 1, {180:1, 1:1});
_.$init_466 = function $init_466(){
}
;
_.getNumberConstants = function getNumberConstants_1(){
  return castTo(new cggicc.NumberConstantsImpl_, 817);
}
;
_.hasAnyRTL = function hasAnyRTL_0(){
  return false;
}
;
cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'LocaleInfoImpl', 180, cggl.Ljava_lang_Object_2_classLit);
cggici.$clinit_LocaleInfoImpl_shared = function $clinit_LocaleInfoImpl_shared(){
  cggici.$clinit_LocaleInfoImpl_shared = emptyMethod;
  cggici.$clinit_LocaleInfoImpl();
}
;
cggici.LocaleInfoImpl_shared = function LocaleInfoImpl_shared(){
  cggici.$clinit_LocaleInfoImpl_shared();
  cggici.LocaleInfoImpl.call(this);
  this.$init_467();
}
;
defineClass(706, 180, {180:1, 1:1});
_.$init_467 = function $init_467(){
}
;
_.hasAnyRTL = function hasAnyRTL_1(){
  return false;
}
;
cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_1shared_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'LocaleInfoImpl_shared', 706, cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_2_classLit);
cggici.$clinit_LocaleInfoImpl_ = function $clinit_LocaleInfoImpl_(){
  cggici.$clinit_LocaleInfoImpl_ = emptyMethod;
  cggici.$clinit_LocaleInfoImpl_shared();
}
;
cggici.LocaleInfoImpl_ = function LocaleInfoImpl_(){
  cggici.$clinit_LocaleInfoImpl_();
  cggici.LocaleInfoImpl_shared.call(this);
  this.$init_468();
}
;
defineClass(707, 706, {180:1, 1:1}, cggici.LocaleInfoImpl_);
_.$init_468 = function $init_468(){
}
;
_.getNumberConstants = function getNumberConstants_2(){
  return castTo(new cggicc.NumberConstantsImpl_, 817);
}
;
cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_1_2_classLit = createForClass('com.google.gwt.i18n.client.impl', 'LocaleInfoImpl_', 707, cggl.Lcom_google_gwt_i18n_client_impl_LocaleInfoImpl_1shared_2_classLit);
cggis.$clinit_BidiFormatterBase = function $clinit_BidiFormatterBase(){
  cggis.$clinit_BidiFormatterBase = emptyMethod;
  jl.$clinit_Object();
}
;
cggis.BidiFormatterBase = function BidiFormatterBase(contextDir, alwaysSpan){
  cggis.$clinit_BidiFormatterBase();
  Object_0.call(this);
  this.$init_469();
  this.contextDir = contextDir;
  this.alwaysSpan = alwaysSpan;
}
;
defineClass(250, 1, {250:1, 1:1});
_.$init_469 = function $init_469(){
}
;
_.dirResetIfNeeded = function dirResetIfNeeded(str, dir_0, isHtml, dirReset){
  if (dirReset && (jsEquals(this.contextDir, (cggic.$clinit_HasDirection$Direction() , cggic.LTR)) && (jsEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.RTL)) || cggis.get_22().endsWithRtl_0(str, isHtml)) || jsEquals(this.contextDir, (cggic.$clinit_HasDirection$Direction() , cggic.RTL)) && (jsEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.LTR)) || cggis.get_22().endsWithLtr_0(str, isHtml)))) {
    return jsEquals(this.contextDir, (cggic.$clinit_HasDirection$Direction() , cggic.LTR))?(cggis.$clinit_BidiFormatterBase$Format() , cggis.LRM_STRING):(cggis.$clinit_BidiFormatterBase$Format() , cggis.RLM_STRING);
  }
   else {
    return '';
  }
}
;
_.estimateDirection = function estimateDirection(str){
  return cggis.get_22().estimateDirection(str);
}
;
_.estimateDirection_0 = function estimateDirection_0(str, isHtml){
  return cggis.get_22().estimateDirection_0(str, isHtml);
}
;
_.spanWrapWithKnownDirBase = function spanWrapWithKnownDirBase(dir_0, str, isHtml, dirReset){
  var dirCondition, origStr, result;
  dirCondition = jsNotEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0)) && jsNotEquals(dir_0, this.contextDir);
  origStr = str;
  if (!isHtml) {
    str = cggss.htmlEscape(str);
  }
  result = new jl.StringBuilder;
  if (this.alwaysSpan || dirCondition) {
    result.append_9('<span');
    if (dirCondition) {
      result.append_9(' ');
      result.append_9(jsEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.RTL))?'dir=rtl':'dir=ltr');
    }
    result.append_9('>' + str + '<\/span>');
  }
   else {
    result.append_9(str);
  }
  result.append_9(this.dirResetIfNeeded(origStr, dir_0, isHtml, dirReset));
  return result.toString_0();
}
;
_.unicodeWrapWithKnownDirBase = function unicodeWrapWithKnownDirBase(dir_0, str, isHtml, dirReset){
  var result;
  result = new jl.StringBuilder;
  if (jsNotEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0)) && jsNotEquals(dir_0, this.contextDir)) {
    result.append_4(jsEquals(dir_0, (cggic.$clinit_HasDirection$Direction() , cggic.RTL))?8235:8234);
    result.append_9(str);
    result.append_4(8236);
  }
   else {
    result.append_9(str);
  }
  result.append_9(this.dirResetIfNeeded(str, dir_0, isHtml, dirReset));
  return result.toString_0();
}
;
_.alwaysSpan = false;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatterBase', 250, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_BidiFormatter = function $clinit_BidiFormatter(){
  cggis.$clinit_BidiFormatter = emptyMethod;
  cggis.$clinit_BidiFormatterBase();
  cggis.factory_0 = new cggis.BidiFormatter$Factory;
}
;
cggis.BidiFormatter = function BidiFormatter(contextDir, alwaysSpan){
  cggis.BidiFormatterBase.call(this, contextDir, alwaysSpan);
  this.$init_470();
}
;
cggis.getInstance_1 = function getInstance_1(rtlContext, alwaysSpan){
  return new cggis.BidiFormatter(rtlContext?(cggic.$clinit_HasDirection$Direction() , cggic.RTL):(cggic.$clinit_HasDirection$Direction() , cggic.LTR), alwaysSpan);
}
;
cggis.getInstanceForCurrentLocale = function getInstanceForCurrentLocale(){
  cggis.$clinit_BidiFormatter();
  return cggis.getInstanceForCurrentLocale_0(false);
}
;
cggis.getInstanceForCurrentLocale_0 = function getInstanceForCurrentLocale_0(alwaysSpan){
  cggis.$clinit_BidiFormatter();
  return cggis.getInstance_1(cggic.getCurrentLocale().isRTL_0(), alwaysSpan);
}
;
defineClass(803, 250, {250:1, 1:1}, cggis.BidiFormatter);
_.$init_470 = function $init_470(){
}
;
_.spanWrapWithKnownDir = function spanWrapWithKnownDir(dir_0, str, isHtml){
  return this.spanWrapWithKnownDir_0(dir_0, str, isHtml, true);
}
;
_.spanWrapWithKnownDir_0 = function spanWrapWithKnownDir_0(dir_0, str, isHtml, dirReset){
  return this.spanWrapWithKnownDirBase(dir_0, str, isHtml, dirReset);
}
;
_.unicodeWrapWithKnownDir = function unicodeWrapWithKnownDir(dir_0, str, isHtml, dirReset){
  return this.unicodeWrapWithKnownDirBase(dir_0, str, isHtml, dirReset);
}
;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatter_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatter', 803, cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase_2_classLit);
cggis.$clinit_BidiFormatterBase$Factory = function $clinit_BidiFormatterBase$Factory(){
  cggis.$clinit_BidiFormatterBase$Factory = emptyMethod;
  jl.$clinit_Object();
}
;
cggis.BidiFormatterBase$Factory = function BidiFormatterBase$Factory(){
  cggis.$clinit_BidiFormatterBase$Factory();
  Object_0.call(this);
  this.$init_471();
  this.instances = castTo(initUnidimensionalArray(cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase_2_classLit, {1353:1, 4:1, 1:1, 7:1}, 250, 6, 0, 1), 1353);
}
;
defineClass(804, 1, {1:1});
_.$init_471 = function $init_471(){
}
;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase$Factory_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatterBase/Factory', 804, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_BidiFormatter$Factory = function $clinit_BidiFormatter$Factory(){
  cggis.$clinit_BidiFormatter$Factory = emptyMethod;
  cggis.$clinit_BidiFormatterBase$Factory();
}
;
cggis.BidiFormatter$Factory = function BidiFormatter$Factory(){
  cggis.$clinit_BidiFormatter$Factory();
  cggis.BidiFormatterBase$Factory.call(this);
  this.$init_472();
}
;
defineClass(805, 804, {1:1}, cggis.BidiFormatter$Factory);
_.$init_472 = function $init_472(){
}
;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatter$Factory_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatter/Factory', 805, cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase$Factory_2_classLit);
cggis.$clinit_BidiFormatterBase$Format = function $clinit_BidiFormatterBase$Format(){
  cggis.$clinit_BidiFormatterBase$Format = emptyMethod;
  jl.$clinit_Object();
  cggis.LRM_STRING = jl.toString_39(8206);
  cggis.RLM_STRING = jl.toString_39(8207);
}
;
defineClass(1339, 1, {1:1});
cggis.LEFT_1 = 'left';
cggis.LRE = 8234;
cggis.LRM = 8206;
cggis.PDF = 8236;
cggis.RIGHT_1 = 'right';
cggis.RLE = 8235;
cggis.RLM = 8207;
cggl.Lcom_google_gwt_i18n_shared_BidiFormatterBase$Format_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiFormatterBase/Format', 1339, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_BidiUtils_0 = function $clinit_BidiUtils_0(){
  cggis.$clinit_BidiUtils_0 = emptyMethod;
  jl.$clinit_Object();
  cggis.FIRST_STRONG_IS_LTR_RE = cggrs.compile('^[^' + cggis.RTL_CHARS + ']*[' + cggis.LTR_CHARS + ']');
  cggis.FIRST_STRONG_IS_RTL_RE = cggrs.compile('^[^' + cggis.LTR_CHARS + ']*[' + cggis.RTL_CHARS + ']');
  cggis.HAS_ANY_LTR_RE = cggrs.compile('[' + cggis.LTR_CHARS + ']');
  cggis.HAS_ANY_RTL_RE = cggrs.compile('[' + cggis.RTL_CHARS + ']');
  cggis.HAS_NUMERALS_RE = cggrs.compile('\\d');
  cggis.SKIP_HTML_RE = cggrs.compile_0('<[^>]*>|&[^;]+;', 'g');
  cggis.INSTANCE_0 = new cggis.BidiUtils;
  cggis.IS_REQUIRED_LTR_RE = cggrs.compile('^http://.*');
  cggis.LAST_STRONG_IS_LTR_RE = cggrs.compile('[' + cggis.LTR_CHARS + '][^' + cggis.RTL_CHARS + ']*$');
  cggis.LAST_STRONG_IS_RTL_RE = cggrs.compile('[' + cggis.RTL_CHARS + '][^' + cggis.LTR_CHARS + ']*$');
  cggis.WORD_SEPARATOR_RE = cggrs.compile('\\s+');
}
;
cggis.BidiUtils = function BidiUtils(){
  Object_0.call(this);
  this.$init_473();
}
;
cggis.get_22 = function get_22(){
  cggis.$clinit_BidiUtils_0();
  return cggis.INSTANCE_0;
}
;
defineClass(802, 1, {1:1}, cggis.BidiUtils);
_.$init_473 = function $init_473(){
}
;
_.endsWithLtr = function endsWithLtr(str){
  return cggrs.$test(cggis.LAST_STRONG_IS_LTR_RE, str);
}
;
_.endsWithLtr_0 = function endsWithLtr_0(str, isHtml){
  return this.endsWithLtr(this.stripHtmlIfNeeded(str, isHtml));
}
;
_.endsWithRtl = function endsWithRtl(str){
  return cggrs.$test(cggis.LAST_STRONG_IS_RTL_RE, str);
}
;
_.endsWithRtl_0 = function endsWithRtl_0(str, isHtml){
  return this.endsWithRtl(this.stripHtmlIfNeeded(str, isHtml));
}
;
_.estimateDirection = function estimateDirection_1(str){
  var hasWeaklyLtr, i, rtlCount, token, tokens, total;
  rtlCount = 0;
  total = 0;
  hasWeaklyLtr = false;
  tokens = cggrs.$split(cggis.WORD_SEPARATOR_RE, str);
  for (i = 0; i < cggcc.$length_0(tokens); i++) {
    token = cggcc.$get_0(tokens, i);
    if (this.startsWithRtl(token)) {
      rtlCount++;
      total++;
    }
     else if (cggrs.$test(cggis.IS_REQUIRED_LTR_RE, token)) {
      hasWeaklyLtr = true;
    }
     else if (this.hasAnyLtr(token)) {
      total++;
    }
     else if (cggrs.$test(cggis.HAS_NUMERALS_RE, token)) {
      hasWeaklyLtr = true;
    }
  }
  return total == 0?hasWeaklyLtr?(cggic.$clinit_HasDirection$Direction() , cggic.LTR):(cggic.$clinit_HasDirection$Direction() , cggic.DEFAULT_0):rtlCount / total > 0.4000000059604645?(cggic.$clinit_HasDirection$Direction() , cggic.RTL):(cggic.$clinit_HasDirection$Direction() , cggic.LTR);
}
;
_.estimateDirection_0 = function estimateDirection_2(str, isHtml){
  return this.estimateDirection(this.stripHtmlIfNeeded(str, isHtml));
}
;
_.hasAnyLtr = function hasAnyLtr(str){
  return cggrs.$test(cggis.HAS_ANY_LTR_RE, str);
}
;
_.startsWithRtl = function startsWithRtl(str){
  return cggrs.$test(cggis.FIRST_STRONG_IS_RTL_RE, str);
}
;
_.stripHtmlIfNeeded = function stripHtmlIfNeeded(str, isStripNeeded){
  return isStripNeeded?cggrs.$replace(cggis.SKIP_HTML_RE, str, ' '):str;
}
;
cggis.LTR_CHARS = 'A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF';
cggis.RTL_CHARS = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC';
cggis.RTL_DETECTION_THRESHOLD = 0.4000000059604645;
cggl.Lcom_google_gwt_i18n_shared_BidiUtils_2_classLit = createForClass('com.google.gwt.i18n.shared', 'BidiUtils', 802, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_DirectionEstimator = function $clinit_DirectionEstimator(){
  cggis.$clinit_DirectionEstimator = emptyMethod;
  jl.$clinit_Object();
}
;
cggis.DirectionEstimator = function DirectionEstimator(){
  cggis.$clinit_DirectionEstimator();
  Object_0.call(this);
  this.$init_474();
}
;
defineClass(794, 1, {1:1});
_.$init_474 = function $init_474(){
}
;
_.estimateDirection_0 = function estimateDirection_3(str, isHtml){
  return this.estimateDirection(cggis.get_22().stripHtmlIfNeeded(str, isHtml));
}
;
cggl.Lcom_google_gwt_i18n_shared_DirectionEstimator_2_classLit = createForClass('com.google.gwt.i18n.shared', 'DirectionEstimator', 794, cggl.Ljava_lang_Object_2_classLit);
cggis.$clinit_WordCountDirectionEstimator = function $clinit_WordCountDirectionEstimator(){
  cggis.$clinit_WordCountDirectionEstimator = emptyMethod;
  cggis.$clinit_DirectionEstimator();
  cggis.instance_5 = new cggis.WordCountDirectionEstimator;
}
;
cggis.WordCountDirectionEstimator = function WordCountDirectionEstimator(){
  cggis.DirectionEstimator.call(this);
  this.$init_475();
}
;
cggis.get_23 = function get_23(){
  cggis.$clinit_WordCountDirectionEstimator();
  return cggis.instance_5;
}
;
defineClass(795, 794, {1:1}, cggis.WordCountDirectionEstimator);
_.$init_475 = function $init_475(){
}
;
_.estimateDirection = function estimateDirection_4(str){
  return cggis.get_22().estimateDirection(str);
}
;
cggl.Lcom_google_gwt_i18n_shared_WordCountDirectionEstimator_2_classLit = createForClass('com.google.gwt.i18n.shared', 'WordCountDirectionEstimator', 795, cggl.Lcom_google_gwt_i18n_shared_DirectionEstimator_2_classLit);
cggl.$clinit_BigLongLibBase = function $clinit_BigLongLibBase(){
  cggl.$clinit_BigLongLibBase = emptyMethod;
  jl.$clinit_Object();
  cggl.BITS01 = 2 * 22;
  cggl.BITS2 = 64 - 44;
  cggl.MASK = (1 << 22) - 1;
  cggl.MASK_2 = (1 << 20) - 1;
  cggl.SIGN_BIT = 20 - 1;
  cggl.SIGN_BIT_VALUE = 1 << 19;
  cggl.TWO_PWR_31_DBL = 65536 * 32768;
  cggl.TWO_PWR_32_DBL = 65536 * 65536;
  cggl.TWO_PWR_44_DBL = 4194304 * 4194304;
  cggl.TWO_PWR_63_DBL = 4294967296 * 2147483648;
}
;
cggl.create_6 = function create_6(){
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    return new cggl.BigLongLibBase$BigLong;
  }
  return cggl.create0(0, 0, 0);
}
;
cggl.create_7 = function create_7(value_0){
  cggl.$clinit_BigLongLibBase();
  var a, a0, a1, a2;
  a0 = value_0 & 4194303;
  a1 = value_0 >> 22 & 4194303;
  a2 = value_0 < 0?1048575:0;
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a = new cggl.BigLongLibBase$BigLong;
    a.l_0 = a0;
    a.m_0 = a1;
    a.h_0 = a2;
    return a;
  }
  return cggl.create0(a0, a1, a2);
}
;
cggl.create_8 = function create_8(a0, a1, a2){
  cggl.$clinit_BigLongLibBase();
  var a;
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a = new cggl.BigLongLibBase$BigLong;
    a.l_0 = a0;
    a.m_0 = a1;
    a.h_0 = a2;
    return a;
  }
  return cggl.create0(a0, a1, a2);
}
;
cggl.create_9 = function create_9(a){
  cggl.$clinit_BigLongLibBase();
  var b;
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    b = new cggl.BigLongLibBase$BigLong;
    b.l_0 = cggl.getL(a);
    b.m_0 = cggl.getM(a);
    b.h_0 = cggl.getH(a);
    return b;
  }
  return cggl.create0(cggl.getL(a), cggl.getM(a), cggl.getH(a));
}
;
cggl.create0 = function create0(l, m, h){
  return {l:l, m:m, h:h};
}
;
cggl.divMod = function divMod(a, b, computeRemainder){
  cggl.$clinit_BigLongLibBase();
  var aIsCopy, aIsMinValue, aIsNegative, bpower, c, negative;
  if (cggl.isZero(b)) {
    throw toJs(new jl.ArithmeticException('divide by zero'));
  }
  if (cggl.isZero(a)) {
    if (computeRemainder) {
      cggl.remainder_0 = cggl.create_6();
    }
    return cggl.create_6();
  }
  if (cggl.isMinValue(b)) {
    return cggl.divModByMinValue(a, computeRemainder);
  }
  negative = false;
  if (cggl.isNegative_0(b)) {
    b = cggl.neg(b);
    negative = !negative;
  }
  bpower = cggl.powerOfTwo_0(b);
  aIsNegative = false;
  aIsMinValue = false;
  aIsCopy = false;
  if (cggl.isMinValue(a)) {
    aIsMinValue = true;
    aIsNegative = true;
    if (bpower == -1) {
      a = cggl.create_9((cggl.$clinit_BigLongLib$Const() , cggl.MAX_VALUE));
      aIsCopy = true;
      negative = !negative;
    }
     else {
      c = cggl.shr(a, bpower);
      if (negative) {
        cggl.negate_0(c);
      }
      if (computeRemainder) {
        cggl.remainder_0 = cggl.create_6();
      }
      return c;
    }
  }
   else if (cggl.isNegative_0(a)) {
    aIsNegative = true;
    a = cggl.neg(a);
    aIsCopy = true;
    negative = !negative;
  }
  if (bpower != -1) {
    return cggl.divModByShift(a, bpower, negative, aIsNegative, computeRemainder);
  }
  if (cggl.compare_17(a, b) < 0) {
    if (computeRemainder) {
      if (aIsNegative) {
        cggl.remainder_0 = cggl.neg(a);
      }
       else {
        cggl.remainder_0 = cggl.create_9(a);
      }
    }
    return cggl.create_6();
  }
  return cggl.divModHelper(aIsCopy?a:cggl.create_9(a), b, negative, aIsNegative, aIsMinValue, computeRemainder);
}
;
cggl.divModByMinValue = function divModByMinValue(a, computeRemainder){
  if (cggl.isMinValue(a)) {
    if (computeRemainder) {
      cggl.remainder_0 = cggl.create_6();
    }
    return cggl.create_9((cggl.$clinit_BigLongLib$Const() , cggl.ONE_0));
  }
  if (computeRemainder) {
    cggl.remainder_0 = cggl.create_9(a);
  }
  return cggl.create_6();
}
;
cggl.divModByShift = function divModByShift(a, bpower, negative, aIsNegative, computeRemainder){
  var c;
  c = cggl.shr(a, bpower);
  if (negative) {
    cggl.negate_0(c);
  }
  if (computeRemainder) {
    a = cggl.maskRight(a, bpower);
    if (aIsNegative) {
      cggl.remainder_0 = cggl.neg(a);
    }
     else {
      cggl.remainder_0 = cggl.create_9(a);
    }
  }
  return c;
}
;
cggl.divModHelper = function divModHelper(a, b, negative, aIsNegative, aIsMinValue, computeRemainder){
  var bshift, gte, quotient, shift_0;
  shift_0 = cggl.numberOfLeadingZeros(b) - cggl.numberOfLeadingZeros(a);
  bshift = cggl.shl(b, shift_0);
  quotient = cggl.create_6();
  while (shift_0 >= 0) {
    gte = cggl.trialSubtract(a, bshift);
    if (gte) {
      cggl.setBit(quotient, shift_0);
      if (cggl.isZero(a)) {
        break;
      }
    }
    cggl.toShru1(bshift);
    shift_0--;
  }
  if (negative) {
    cggl.negate_0(quotient);
  }
  if (computeRemainder) {
    if (aIsNegative) {
      cggl.remainder_0 = cggl.neg(a);
      if (aIsMinValue) {
        cggl.remainder_0 = cggl.sub_1(cggl.remainder_0, (cggl.$clinit_BigLongLib$Const() , cggl.ONE_0));
      }
    }
     else {
      cggl.remainder_0 = cggl.create_9(a);
    }
  }
  return quotient;
}
;
cggl.getH = function getH(a){
  cggl.$clinit_BigLongLibBase();
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    return a.h_0;
  }
  return cggl.getHNative(a);
}
;
cggl.getHNative = function getHNative(a){
  return a.h;
}
;
cggl.getL = function getL(a){
  cggl.$clinit_BigLongLibBase();
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    return a.l_0;
  }
  return cggl.getLNative(a);
}
;
cggl.getLNative = function getLNative(a){
  return a.l;
}
;
cggl.getM = function getM(a){
  cggl.$clinit_BigLongLibBase();
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    return a.m_0;
  }
  return cggl.getMNative(a);
}
;
cggl.getMNative = function getMNative(a){
  return a.m;
}
;
cggl.isMinValue = function isMinValue(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.getH(a) == 524288 && cggl.getM(a) == 0 && cggl.getL(a) == 0;
}
;
cggl.isNegative_0 = function isNegative_0(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.sign_0(a) != 0;
}
;
cggl.isZero = function isZero(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.getL(a) == 0 && cggl.getM(a) == 0 && cggl.getH(a) == 0;
}
;
cggl.maskRight = function maskRight(a, bits){
  var b0, b1, b2;
  if (bits <= 22) {
    b0 = cggl.getL(a) & (1 << bits) - 1;
    b1 = b2 = 0;
  }
   else if (bits <= 44) {
    b0 = cggl.getL(a);
    b1 = cggl.getM(a) & (1 << bits - 22) - 1;
    b2 = 0;
  }
   else {
    b0 = cggl.getL(a);
    b1 = cggl.getM(a);
    b2 = cggl.getH(a) & (1 << bits - 44) - 1;
  }
  return cggl.create_8(b0, b1, b2);
}
;
cggl.negate_0 = function negate_0(a){
  cggl.$clinit_BigLongLibBase();
  var neg0, neg1, neg2;
  neg0 = ~cggl.getL(a) + 1 & 4194303;
  neg1 = ~cggl.getM(a) + (neg0 == 0?1:0) & 4194303;
  neg2 = ~cggl.getH(a) + (neg0 == 0 && neg1 == 0?1:0) & 1048575;
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a.l_0 = neg0;
    a.m_0 = neg1;
    a.h_0 = neg2;
  }
   else {
    cggl.setL(a, neg0);
    cggl.setM(a, neg1);
    cggl.setH(a, neg2);
  }
}
;
cggl.numberOfLeadingZeros = function numberOfLeadingZeros(a){
  var b1, b2;
  b2 = numberOfLeadingZeros_0(cggl.getH(a));
  if (b2 == 32) {
    b1 = numberOfLeadingZeros_0(cggl.getM(a));
    if (b1 == 32) {
      return numberOfLeadingZeros_0(cggl.getL(a)) + 32;
    }
     else {
      return b1 + 20 - (32 - 22);
    }
  }
   else {
    return b2 - (32 - 20);
  }
}
;
cggl.powerOfTwo_0 = function powerOfTwo_0(a){
  var h, l, m;
  l = cggl.getL(a);
  if ((l & l - 1) != 0) {
    return -1;
  }
  m = cggl.getM(a);
  if ((m & m - 1) != 0) {
    return -1;
  }
  h = cggl.getH(a);
  if ((h & h - 1) != 0) {
    return -1;
  }
  if (h == 0 && m == 0 && l == 0) {
    return -1;
  }
  if (h == 0 && m == 0 && l != 0) {
    return numberOfTrailingZeros(l);
  }
  if (h == 0 && m != 0 && l == 0) {
    return numberOfTrailingZeros(m) + 22;
  }
  if (h != 0 && m == 0 && l == 0) {
    return numberOfTrailingZeros(h) + 44;
  }
  return -1;
}
;
cggl.setBit = function setBit(a, bit){
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    if (bit < 22) {
      a.l_0 |= 1 << bit;
    }
     else if (bit < 44) {
      a.m_0 |= 1 << bit - 22;
    }
     else {
      a.h_0 |= 1 << bit - 44;
    }
  }
   else {
    if (bit < 22) {
      cggl.setBitL(a, bit);
    }
     else if (bit < 44) {
      cggl.setBitM(a, bit - 22);
    }
     else {
      cggl.setBitH(a, bit - 44);
    }
  }
}
;
cggl.setBitH = function setBitH(a, bit){
  a.h |= 1 << bit;
}
;
cggl.setBitL = function setBitL(a, bit){
  a.l |= 1 << bit;
}
;
cggl.setBitM = function setBitM(a, bit){
  a.m |= 1 << bit;
}
;
cggl.setH = function setH(a, x_0){
  a.h = x_0;
}
;
cggl.setL = function setL(a, x_0){
  a.l = x_0;
}
;
cggl.setM = function setM(a, x_0){
  a.m = x_0;
}
;
cggl.sign_0 = function sign_0(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.getH(a) >> 20 - 1;
}
;
cggl.toDoubleHelper = function toDoubleHelper(a){
  cggl.$clinit_BigLongLibBase();
  return cggl.getL(a) + cggl.getM(a) * 4194304 + cggl.getH(a) * 17592186044416;
}
;
cggl.toShru1 = function toShru1(a){
  var a0, a1, a2;
  a1 = cggl.getM(a);
  a2 = cggl.getH(a);
  a0 = cggl.getL(a);
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a.h_0 = a2 >>> 1;
    a.m_0 = a1 >>> 1 | (a2 & 1) << 22 - 1;
    a.l_0 = a0 >>> 1 | (a1 & 1) << 22 - 1;
  }
   else {
    cggl.setH(a, a2 >>> 1);
    cggl.setM(a, a1 >>> 1 | (a2 & 1) << 22 - 1);
    cggl.setL(a, a0 >>> 1 | (a1 & 1) << 22 - 1);
  }
}
;
cggl.trialSubtract = function trialSubtract(a, b){
  var sum0, sum1, sum2;
  sum2 = cggl.getH(a) - cggl.getH(b);
  if (sum2 < 0) {
    return false;
  }
  sum0 = cggl.getL(a) - cggl.getL(b);
  sum1 = cggl.getM(a) - cggl.getM(b) + (sum0 >> 22);
  sum2 += sum1 >> 22;
  if (sum2 < 0) {
    return false;
  }
  if (cggl.$clinit_LongLib() , RUN_IN_JVM) {
    a.l_0 = sum0 & 4194303;
    a.m_0 = sum1 & 4194303;
    a.h_0 = sum2 & 1048575;
  }
   else {
    cggl.setL(a, sum0 & 4194303);
    cggl.setM(a, sum1 & 4194303);
    cggl.setH(a, sum2 & 1048575);
  }
  return true;
}
;
defineClass(943, 1, {1:1});
cggl.BITS = 22;
cggl.BITS01 = 0;
cggl.BITS2 = 0;
cggl.MASK = 0;
cggl.MASK_2 = 0;
cggl.SIGN_BIT = 0;
cggl.SIGN_BIT_VALUE = 0;
cggl.TWO_PWR_15_DBL = 32768;
cggl.TWO_PWR_16_DBL = 65536;
cggl.TWO_PWR_22_DBL = 4194304;
cggl.TWO_PWR_31_DBL = 0;
cggl.TWO_PWR_32_DBL = 0;
cggl.TWO_PWR_44_DBL = 0;
cggl.TWO_PWR_63_DBL = 0;
cggl.Lcom_google_gwt_lang_BigLongLibBase_2_classLit = createForClass('com.google.gwt.lang', 'BigLongLibBase', 943, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_BigLongLib = function $clinit_BigLongLib(){
  cggl.$clinit_BigLongLib = emptyMethod;
  cggl.$clinit_BigLongLibBase();
}
;
cggl.add_21 = function add_21(a, b){
  cggl.$clinit_BigLongLib();
  var sum0, sum1, sum2;
  sum0 = cggl.getL(a) + cggl.getL(b);
  sum1 = cggl.getM(a) + cggl.getM(b) + (sum0 >> 22);
  sum2 = cggl.getH(a) + cggl.getH(b) + (sum1 >> 22);
  return cggl.create_8(sum0 & 4194303, sum1 & 4194303, sum2 & 1048575);
}
;
cggl.and = function and(a, b){
  cggl.$clinit_BigLongLib();
  return cggl.create_8(cggl.getL(a) & cggl.getL(b), cggl.getM(a) & cggl.getM(b), cggl.getH(a) & cggl.getH(b));
}
;
cggl.compare_17 = function compare_17(a, b){
  cggl.$clinit_BigLongLib();
  var a0, a1, a2, b0, b1, b2, signA, signB;
  signA = cggl.sign_0(a);
  signB = cggl.sign_0(b);
  if (signA != signB) {
    return signB - signA;
  }
  a2 = cggl.getH(a);
  b2 = cggl.getH(b);
  if (a2 != b2) {
    return a2 - b2;
  }
  a1 = cggl.getM(a);
  b1 = cggl.getM(b);
  if (a1 != b1) {
    return a1 - b1;
  }
  a0 = cggl.getL(a);
  b0 = cggl.getL(b);
  return a0 - b0;
}
;
cggl.div_0 = function div_0(a, b){
  cggl.$clinit_BigLongLib();
  return cggl.divMod(a, b, false);
}
;
cggl.fromDouble = function fromDouble(value_0){
  cggl.$clinit_BigLongLib();
  var a0, a1, a2, negative, result;
  if (isNaN(value_0)) {
    return cggl.$clinit_BigLongLib$Const() , cggl.ZERO;
  }
  if (value_0 < -9223372036854775807) {
    return cggl.$clinit_BigLongLib$Const() , cggl.MIN_VALUE;
  }
  if (value_0 >= 9223372036854775807) {
    return cggl.$clinit_BigLongLib$Const() , cggl.MAX_VALUE;
  }
  negative = false;
  if (value_0 < 0) {
    negative = true;
    value_0 = -value_0;
  }
  a2 = 0;
  if (value_0 >= 17592186044416) {
    a2 = round_int(value_0 / 17592186044416);
    value_0 -= a2 * 17592186044416;
  }
  a1 = 0;
  if (value_0 >= 4194304) {
    a1 = round_int(value_0 / 4194304);
    value_0 -= a1 * 4194304;
  }
  a0 = round_int(value_0);
  result = cggl.create_8(a0, a1, a2);
  if (negative) {
    cggl.negate_0(result);
  }
  return result;
}
;
cggl.fromInt = function fromInt(value_0){
  cggl.$clinit_BigLongLib();
  return cggl.create_7(value_0);
}
;
cggl.getAsLongArray = function getAsLongArray(l){
  cggl.$clinit_BigLongLib();
  var a;
  a = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, 3, 14, 1);
  a[0] = fromInt_0(toInt_0(and_0(l, 4194303)));
  a[1] = fromInt_0(toInt_0(and_0(shr_0(l, 22), 4194303)));
  a[2] = fromInt_0(toInt_0(and_0(shr_0(l, 44), 1048575)));
  return a;
}
;
cggl.mod = function mod(a, b){
  cggl.$clinit_BigLongLib();
  cggl.divMod(a, b, true);
  return cggl.$clinit_BigLongLibBase() , cggl.remainder_0;
}
;
cggl.mul = function mul(a, b){
  cggl.$clinit_BigLongLib();
  var a0, a1, a2, a3, a4, b0, b1, b2, b3, b4, c0, c00, c01, c1, c10, c11, c12, c13, c2, c22, c23, c24, p0, p1, p2, p3, p4;
  a0 = cggl.getL(a) & 8191;
  a1 = cggl.getL(a) >> 13 | (cggl.getM(a) & 15) << 9;
  a2 = cggl.getM(a) >> 4 & 8191;
  a3 = cggl.getM(a) >> 17 | (cggl.getH(a) & 255) << 5;
  a4 = (cggl.getH(a) & 1048320) >> 8;
  b0 = cggl.getL(b) & 8191;
  b1 = cggl.getL(b) >> 13 | (cggl.getM(b) & 15) << 9;
  b2 = cggl.getM(b) >> 4 & 8191;
  b3 = cggl.getM(b) >> 17 | (cggl.getH(b) & 255) << 5;
  b4 = (cggl.getH(b) & 1048320) >> 8;
  p0 = a0 * b0;
  p1 = a1 * b0;
  p2 = a2 * b0;
  p3 = a3 * b0;
  p4 = a4 * b0;
  if (b1 != 0) {
    p1 += a0 * b1;
    p2 += a1 * b1;
    p3 += a2 * b1;
    p4 += a3 * b1;
  }
  if (b2 != 0) {
    p2 += a0 * b2;
    p3 += a1 * b2;
    p4 += a2 * b2;
  }
  if (b3 != 0) {
    p3 += a0 * b3;
    p4 += a1 * b3;
  }
  if (b4 != 0) {
    p4 += a0 * b4;
  }
  c00 = p0 & 4194303;
  c01 = (p1 & 511) << 13;
  c0 = c00 + c01;
  c10 = p0 >> 22;
  c11 = p1 >> 9;
  c12 = (p2 & 262143) << 4;
  c13 = (p3 & 31) << 17;
  c1 = c10 + c11 + c12 + c13;
  c22 = p2 >> 18;
  c23 = p3 >> 5;
  c24 = (p4 & 4095) << 8;
  c2 = c22 + c23 + c24;
  c1 += c0 >> 22;
  c0 &= 4194303;
  c2 += c1 >> 22;
  c1 &= 4194303;
  c2 &= 1048575;
  return cggl.create_8(c0, c1, c2);
}
;
cggl.neg = function neg(a){
  cggl.$clinit_BigLongLib();
  var neg0, neg1, neg2;
  neg0 = ~cggl.getL(a) + 1 & 4194303;
  neg1 = ~cggl.getM(a) + (neg0 == 0?1:0) & 4194303;
  neg2 = ~cggl.getH(a) + (neg0 == 0 && neg1 == 0?1:0) & 1048575;
  return cggl.create_8(neg0, neg1, neg2);
}
;
cggl.not = function not(a){
  cggl.$clinit_BigLongLib();
  return cggl.create_8(~cggl.getL(a) & 4194303, ~cggl.getM(a) & 4194303, ~cggl.getH(a) & 1048575);
}
;
cggl.or = function or(a, b){
  cggl.$clinit_BigLongLib();
  return cggl.create_8(cggl.getL(a) | cggl.getL(b), cggl.getM(a) | cggl.getM(b), cggl.getH(a) | cggl.getH(b));
}
;
cggl.shl = function shl(a, n){
  cggl.$clinit_BigLongLib();
  var res0, res1, res2;
  n &= 63;
  if (n < 22) {
    res0 = cggl.getL(a) << n;
    res1 = cggl.getM(a) << n | cggl.getL(a) >> 22 - n;
    res2 = cggl.getH(a) << n | cggl.getM(a) >> 22 - n;
  }
   else if (n < 44) {
    res0 = 0;
    res1 = cggl.getL(a) << n - 22;
    res2 = cggl.getM(a) << n - 22 | cggl.getL(a) >> 44 - n;
  }
   else {
    res0 = 0;
    res1 = 0;
    res2 = cggl.getL(a) << n - 44;
  }
  return cggl.create_8(res0 & 4194303, res1 & 4194303, res2 & 1048575);
}
;
cggl.shr = function shr(a, n){
  cggl.$clinit_BigLongLib();
  var a2, negative, res0, res1, res2;
  n &= 63;
  a2 = cggl.getH(a);
  negative = (a2 & 524288) != 0;
  if (negative) {
    a2 |= ~1048575;
  }
  if (n < 22) {
    res2 = a2 >> n;
    res1 = cggl.getM(a) >> n | a2 << 22 - n;
    res0 = cggl.getL(a) >> n | cggl.getM(a) << 22 - n;
  }
   else if (n < 44) {
    res2 = negative?1048575:0;
    res1 = a2 >> n - 22;
    res0 = cggl.getM(a) >> n - 22 | a2 << 44 - n;
  }
   else {
    res2 = negative?1048575:0;
    res1 = negative?4194303:0;
    res0 = a2 >> n - 44;
  }
  return cggl.create_8(res0 & 4194303, res1 & 4194303, res2 & 1048575);
}
;
cggl.shru = function shru(a, n){
  cggl.$clinit_BigLongLib();
  var a2, res0, res1, res2;
  n &= 63;
  a2 = cggl.getH(a) & 1048575;
  if (n < 22) {
    res2 = a2 >>> n;
    res1 = cggl.getM(a) >> n | a2 << 22 - n;
    res0 = cggl.getL(a) >> n | cggl.getM(a) << 22 - n;
  }
   else if (n < 44) {
    res2 = 0;
    res1 = a2 >>> n - 22;
    res0 = cggl.getM(a) >> n - 22 | cggl.getH(a) << 44 - n;
  }
   else {
    res2 = 0;
    res1 = 0;
    res0 = a2 >>> n - 44;
  }
  return cggl.create_8(res0 & 4194303, res1 & 4194303, res2 & 1048575);
}
;
cggl.sub_1 = function sub_1(a, b){
  cggl.$clinit_BigLongLib();
  var sum0, sum1, sum2;
  sum0 = cggl.getL(a) - cggl.getL(b);
  sum1 = cggl.getM(a) - cggl.getM(b) + (sum0 >> 22);
  sum2 = cggl.getH(a) - cggl.getH(b) + (sum1 >> 22);
  return cggl.create_8(sum0 & 4194303, sum1 & 4194303, sum2 & 1048575);
}
;
cggl.toDouble = function toDouble(a){
  cggl.$clinit_BigLongLib();
  if (cggl.compare_17(a, (cggl.$clinit_BigLongLib$Const() , cggl.ZERO)) < 0) {
    return -cggl.toDoubleHelper(cggl.neg(a));
  }
  return cggl.toDoubleHelper(a);
}
;
cggl.toInt = function toInt(a){
  cggl.$clinit_BigLongLib();
  return cggl.getL(a) | cggl.getM(a) << 22;
}
;
cggl.toString_27 = function toString_27(a){
  cggl.$clinit_BigLongLib();
  var digits, rem, res, tenPower, tenPowerLong, tenPowerZeroes, zeroesNeeded;
  if (cggl.isZero(a)) {
    return '0';
  }
  if (cggl.isMinValue(a)) {
    return '-9223372036854775808';
  }
  if (cggl.isNegative_0(a)) {
    return '-' + cggl.toString_27(cggl.neg(a));
  }
  rem = a;
  res = '';
  while (!cggl.isZero(rem)) {
    tenPowerZeroes = 9;
    tenPower = 1000000000;
    tenPowerLong = cggl.fromInt(1000000000);
    rem = cggl.divMod(rem, tenPowerLong, true);
    digits = '' + cggl.toInt((cggl.$clinit_BigLongLibBase() , cggl.remainder_0));
    if (!cggl.isZero(rem)) {
      zeroesNeeded = 9 - jl.length__I__devirtual$_0(digits);
      for (; zeroesNeeded > 0; zeroesNeeded--) {
        digits = '0' + digits;
      }
    }
    res = digits + ('' + res);
  }
  return res;
}
;
cggl.xor = function xor(a, b){
  cggl.$clinit_BigLongLib();
  return cggl.create_8(cggl.getL(a) ^ cggl.getL(b), cggl.getM(a) ^ cggl.getM(b), cggl.getH(a) ^ cggl.getH(b));
}
;
defineClass(1097, 943, {1:1});
cggl.Lcom_google_gwt_lang_BigLongLib_2_classLit = createForClass('com.google.gwt.lang', 'BigLongLib', 1097, cggl.Lcom_google_gwt_lang_BigLongLibBase_2_classLit);
cggl.$clinit_BigLongLib$Const = function $clinit_BigLongLib$Const(){
  cggl.$clinit_BigLongLib$Const = emptyMethod;
  jl.$clinit_Object();
  cggl.MAX_VALUE = cggl.create_8(4194303, 4194303, 1048575 >> 1);
  cggl.MIN_VALUE = cggl.create_8(0, 0, 524288);
  cggl.ONE_0 = cggl.fromInt(1);
  cggl.TWO = cggl.fromInt(2);
  cggl.ZERO = cggl.fromInt(0);
}
;
defineClass(1098, 1, {1:1});
cggl.Lcom_google_gwt_lang_BigLongLib$Const_2_classLit = createForClass('com.google.gwt.lang', 'BigLongLib/Const', 1098, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_BigLongLibBase$BigLong = function $clinit_BigLongLibBase$BigLong(){
  cggl.$clinit_BigLongLibBase$BigLong = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.BigLongLibBase$BigLong = function BigLongLibBase$BigLong(){
  cggl.$clinit_BigLongLibBase$BigLong();
  Object_0.call(this);
  this.$init_477();
}
;
defineClass(221, 1, {1:1}, cggl.BigLongLibBase$BigLong);
_.$init_477 = function $init_477(){
}
;
_.h_0 = 0;
_.l_0 = 0;
_.m_0 = 0;
cggl.Lcom_google_gwt_lang_BigLongLibBase$BigLong_2_classLit = createForClass('com.google.gwt.lang', 'BigLongLibBase/BigLong', 221, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_LongLib = function $clinit_LongLib(){
  cggl.$clinit_LongLib = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.LongLib = function LongLib(){
  Object_0.call(this);
  this.$init_480();
}
;
function add_22(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) + cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.add_21(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function and_0(a, b){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.and(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function asBigLong(value_0){
  cggl.$clinit_LongLib();
  if (RUN_IN_JVM) {
    return value_0.big_0;
  }
  return cggl.asBigLong0(value_0);
}

cggl.asBigLong0 = function asBigLong0(value_0){
  return value_0;
}
;
cggl.asDouble = function asDouble(value_0){
  return cggl.asDouble_0(cggl.asSmallLong(value_0));
}
;
cggl.asDouble_0 = function asDouble_0(value_0){
  if (RUN_IN_JVM) {
    return isNull(value_0)?NaN:value_0.d;
  }
  return cggl.asDouble0(value_0);
}
;
cggl.asDouble0 = function asDouble0(value_0){
  return value_0;
}
;
cggl.asSmallLong = function asSmallLong(value_0){
  if (RUN_IN_JVM) {
    return value_0.small_0;
  }
  return cggl.asSmallLong0(value_0);
}
;
cggl.asSmallLong0 = function asSmallLong0(value_0){
  return value_0;
}
;
cggl.coerceToInt = function coerceToInt(value_0){
  if (RUN_IN_JVM) {
    return toInt_0(fromDouble_0(value_0));
  }
  return cggl.coerceToInt0(value_0);
}
;
cggl.coerceToInt0 = function coerceToInt0(value_0){
  return value_0 | 0;
}
;
function compare_18(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) - cggl.asDouble(b);
    if (!isNaN(result)) {
      return result;
    }
  }
  return cggl.compare_17(cggl.toBigLong(a), cggl.toBigLong(b));
}

function copy_1(value_0){
  cggl.$clinit_LongLib();
  if (cggl.isSmallLong(value_0)) {
    return cggl.createSmallLongEmul(cggl.asDouble(value_0));
  }
   else {
    return cggl.createBigLongEmul(cggl.create_9(asBigLong(value_0)));
  }
}

cggl.createBigLongEmul = function createBigLongEmul(big_0){
  var emul;
  if (RUN_IN_JVM) {
    emul = new cggl.LongLib$LongEmul;
    emul.big_0 = big_0;
    return emul;
  }
  return cggl.createBigLongEmul0(big_0);
}
;
cggl.createBigLongEmul0 = function createBigLongEmul0(value_0){
  return value_0;
}
;
cggl.createLongEmul = function createLongEmul(big_0){
  var a2;
  a2 = cggl.getH(big_0);
  if (a2 == 0) {
    return cggl.createSmallLongEmul(cggl.getL(big_0) + cggl.getM(big_0) * 4194304);
  }
  if (a2 == 1048575) {
    return cggl.createSmallLongEmul(cggl.getL(big_0) + cggl.getM(big_0) * 4194304 - 17592186044416);
  }
  return cggl.createBigLongEmul(big_0);
}
;
cggl.createSmallLongEmul = function createSmallLongEmul(value_0){
  var emul, small_0;
  if (RUN_IN_JVM) {
    small_0 = new cggl.LongLib$SmallLong;
    small_0.d = value_0;
    emul = new cggl.LongLib$LongEmul;
    emul.small_0 = small_0;
    return emul;
  }
  return cggl.createSmallLongEmul0(value_0);
}
;
cggl.createSmallLongEmul0 = function createSmallLongEmul0(value_0){
  return value_0;
}
;
function div_1(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) / cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(cggl.truncate(result));
    }
  }
  return cggl.createLongEmul(cggl.div_0(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function eq(a, b){
  cggl.$clinit_LongLib();
  return compare_18(a, b) == 0;
}

function fromDouble_0(value_0){
  cggl.$clinit_LongLib();
  if (cggl.isSafeIntegerRange(value_0)) {
    return cggl.createSmallLongEmul(cggl.truncate(value_0));
  }
  return cggl.createLongEmul(cggl.fromDouble(value_0));
}

function fromInt_0(value_0){
  cggl.$clinit_LongLib();
  return cggl.createSmallLongEmul(value_0);
}

function getAsLongArray_0(l){
  cggl.$clinit_LongLib();
  if (cggl.isSafeIntegerRange(toDouble_0(l))) {
    return stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 60:1}, 5, 14, [l]);
  }
  return cggl.getAsLongArray(l);
}

function gt(a, b){
  cggl.$clinit_LongLib();
  return compare_18(a, b) > 0;
}

function gte_0(a, b){
  cggl.$clinit_LongLib();
  return compare_18(a, b) >= 0;
}

cggl.isSafeIntegerRange = function isSafeIntegerRange(value_0){
  return -17592186044416 < value_0 && value_0 < 17592186044416;
}
;
cggl.isSmallLong = function isSmallLong(value_0){
  if (RUN_IN_JVM) {
    return isNotNull(value_0.small_0);
  }
  return cggl.isSmallLong0(value_0);
}
;
cggl.isSmallLong0 = function isSmallLong0(value_0){
  return typeof value_0 === 'number';
}
;
function lt(a, b){
  cggl.$clinit_LongLib();
  return compare_18(a, b) < 0;
}

function lte(a, b){
  cggl.$clinit_LongLib();
  return compare_18(a, b) <= 0;
}

function mod_0(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) % cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.mod(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function mul_0(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) * cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.mul(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function neg_0(a){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a)) {
    result = 0 - cggl.asDouble(a);
    if (!isNaN(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.neg(asBigLong(a)));
}

function neq(a, b){
  cggl.$clinit_LongLib();
  return compare_18(a, b) != 0;
}

function not_0(a){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.not(cggl.toBigLong(a)));
}

function or_0(a, b){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.or(cggl.toBigLong(a), cggl.toBigLong(b)));
}

function shl_0(a, n){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.shl(cggl.toBigLong(a), n));
}

function shr_0(a, n){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.shr(cggl.toBigLong(a), n));
}

function shru_0(a, n){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.shru(cggl.toBigLong(a), n));
}

function sub_2(a, b){
  cggl.$clinit_LongLib();
  var result;
  if (cggl.isSmallLong(a) && cggl.isSmallLong(b)) {
    result = cggl.asDouble(a) - cggl.asDouble(b);
    if (cggl.isSafeIntegerRange(result)) {
      return cggl.createSmallLongEmul(result);
    }
  }
  return cggl.createLongEmul(cggl.sub_1(cggl.toBigLong(a), cggl.toBigLong(b)));
}

cggl.toBigLong = function toBigLong(value_0){
  return cggl.isSmallLong(value_0)?cggl.toBigLong_0(cggl.asSmallLong(value_0)):asBigLong(value_0);
}
;
cggl.toBigLong_0 = function toBigLong_0(longValue){
  var a0, a1, a3, value_0;
  value_0 = cggl.asDouble_0(longValue);
  a3 = 0;
  if (value_0 < 0) {
    value_0 += 17592186044416;
    a3 = 1048575;
  }
  a1 = round_int(value_0 / 4194304);
  a0 = round_int(value_0 - a1 * 4194304);
  return cggl.create_8(a0, a1, a3);
}
;
function toDouble_0(a){
  cggl.$clinit_LongLib();
  var d;
  if (cggl.isSmallLong(a)) {
    d = cggl.asDouble(a);
    return d == -0?0:d;
  }
  return cggl.toDouble(asBigLong(a));
}

function toInt_0(a){
  cggl.$clinit_LongLib();
  if (cggl.isSmallLong(a)) {
    return cggl.coerceToInt(cggl.asDouble(a));
  }
  return cggl.toInt(asBigLong(a));
}

cggl.toString_28 = function toString_28(value_0){
  if (RUN_IN_JVM) {
    return jl.valueOf_33(fromDouble_0(value_0));
  }
  return jl.valueOf_30(value_0);
}
;
function toString_29(a){
  cggl.$clinit_LongLib();
  if (cggl.isSmallLong(a)) {
    return cggl.toString_28(cggl.asDouble(a));
  }
  return cggl.toString_27(asBigLong(a));
}

cggl.truncate = function truncate(value_0){
  return value_0 < 0?$wnd.Math.ceil(value_0):$wnd.Math.floor(value_0);
}
;
function xor_0(a, b){
  cggl.$clinit_LongLib();
  return cggl.createLongEmul(cggl.xor(cggl.toBigLong(a), cggl.toBigLong(b)));
}

defineClass(928, 1, {1:1});
_.$init_480 = function $init_480(){
}
;
var RUN_IN_JVM = false;
cggl.Lcom_google_gwt_lang_LongLib_2_classLit = createForClass('com.google.gwt.lang', 'LongLib', 928, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_LongLib$LongEmul = function $clinit_LongLib$LongEmul(){
  cggl.$clinit_LongLib$LongEmul = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.LongLib$LongEmul = function LongLib$LongEmul(){
  cggl.$clinit_LongLib$LongEmul();
  Object_0.call(this);
  this.$init_481();
}
;
defineClass(327, 1, {1:1}, cggl.LongLib$LongEmul);
_.$init_481 = function $init_481(){
}
;
cggl.Lcom_google_gwt_lang_LongLib$LongEmul_2_classLit = createForClass('com.google.gwt.lang', 'LongLib/LongEmul', 327, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_LongLib$SmallLong = function $clinit_LongLib$SmallLong(){
  cggl.$clinit_LongLib$SmallLong = emptyMethod;
  jl.$clinit_Object();
}
;
cggl.LongLib$SmallLong = function LongLib$SmallLong(){
  cggl.$clinit_LongLib$SmallLong();
  Object_0.call(this);
  this.$init_482();
}
;
defineClass(499, 1, {1:1}, cggl.LongLib$SmallLong);
_.$init_482 = function $init_482(){
}
;
_.d = 0;
cggl.Lcom_google_gwt_lang_LongLib$SmallLong_2_classLit = createForClass('com.google.gwt.lang', 'LongLib/SmallLong', 499, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_Stats = function $clinit_Stats(){
  cggl.$clinit_Stats = emptyMethod;
  jl.$clinit_Object();
}
;
function Stats(){
  Object_0.call(this);
  this.$init_483();
}

function isStatsAvailable_0(){
  cggl.$clinit_Stats();
  return !!$stats;
}

function onModuleStart(mainClassName){
  cggl.$clinit_Stats();
  return $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date).getTime(), type:'onModuleLoadStart', className:mainClassName});
}

defineClass(931, 1, {1:1});
_.$init_483 = function $init_483(){
}
;
cggl.Lcom_google_gwt_lang_Stats_2_classLit = createForClass('com.google.gwt.lang', 'Stats', 931, cggl.Ljava_lang_Object_2_classLit);
cggl.$clinit_com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder = function $clinit_com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder(){
  cggl.$clinit_com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder = emptyMethod;
  jl.$clinit_Object();
}
;
function init_8(){
  cggl.$clinit_com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder();
  castTo(new cargc.Core, 99).onModuleLoad();
  castTo(new cgguc2.UserAgentAsserter$UserAgentAsserterDisabled, 99).onModuleLoad();
  castTo(new cgguc.DocumentModeAsserter, 99).onModuleLoad();
  castTo(new cargm.Minimal, 99).onModuleLoad();
  castTo(new carggv.StructureViewer, 99).onModuleLoad();
  castTo(new cargge.GWTStructureEditor, 99).onModuleLoad();
}

defineClass(821, 1, {1:1});
cggl.Lcom_google_gwt_lang_com_100046actelion_100046research_100046gwt_100046Full_1_1EntryMethodHolder_2_classLit = createForClass('com.google.gwt.lang', 'com_00046actelion_00046research_00046gwt_00046Full__EntryMethodHolder', 821, cggl.Ljava_lang_Object_2_classLit);
cggrs.$clinit_RegExp = function $clinit_RegExp(){
  cggrs.$clinit_RegExp = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggrs.$replace = function $replace(this$static, input_0, replacement){
  cggrs.$clinit_RegExp();
  return input_0.replace(this$static, replacement);
}
;
cggrs.$split = function $split(this$static, input_0){
  cggrs.$clinit_RegExp();
  return input_0.split(this$static);
}
;
cggrs.$test = function $test(this$static, input_0){
  cggrs.$clinit_RegExp();
  return this$static.test(input_0);
}
;
cggrs.compile = function compile(pattern){
  cggrs.$clinit_RegExp();
  return new RegExp(pattern);
}
;
cggrs.compile_0 = function compile_0(pattern, flags){
  cggrs.$clinit_RegExp();
  return new RegExp(pattern, flags);
}
;
cggrs.$clinit_SplitResult = function $clinit_SplitResult(){
  cggrs.$clinit_SplitResult = emptyMethod;
  cggcc.$clinit_JsArrayString();
}
;
cggss.$clinit_SafeHtml = function $clinit_SafeHtml(){
  cggss.$clinit_SafeHtml = emptyMethod;
}
;
cggl.Lcom_google_gwt_safehtml_shared_SafeHtml_2_classLit = createForInterface('com.google.gwt.safehtml.shared', 'SafeHtml');
cggss.$clinit_SafeHtmlString = function $clinit_SafeHtmlString(){
  cggss.$clinit_SafeHtmlString = emptyMethod;
  jl.$clinit_Object();
}
;
cggss.SafeHtmlString = function SafeHtmlString(html){
  cggss.$clinit_SafeHtmlString();
  Object_0.call(this);
  this.$init_485();
  if (jsEquals(html, null)) {
    throw toJs(new jl.NullPointerException_1('html is null'));
  }
  this.html = html;
}
;
defineClass(392, 1, {820:1, 4:1, 1:1}, cggss.SafeHtmlString);
_.$init_485 = function $init_485(){
}
;
_.asString = function asString(){
  return this.html;
}
;
_.equals_0 = function equals_19(obj){
  if (!instanceOf(obj, 820)) {
    return false;
  }
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this.html, castTo(obj, 820).asString());
}
;
_.hashCode_1 = function hashCode_7(){
  return jl.hashCode__I__devirtual$_2(this.html);
}
;
_.toString_0 = function toString_31(){
  return 'safe: "' + this.asString() + '"';
}
;
cggl.Lcom_google_gwt_safehtml_shared_SafeHtmlString_2_classLit = createForClass('com.google.gwt.safehtml.shared', 'SafeHtmlString', 392, cggl.Ljava_lang_Object_2_classLit);
cggss.$clinit_SafeHtmlUtils = function $clinit_SafeHtmlUtils(){
  cggss.$clinit_SafeHtmlUtils = emptyMethod;
  jl.$clinit_Object();
  cggss.EMPTY_SAFE_HTML = new cggss.SafeHtmlString('');
  cggss.HTML_CHARS_RE = cggrs.compile('[&<>\'"]');
  cggss.AMP_RE = cggrs.compile_0('&', 'g');
  cggss.GT_RE = cggrs.compile_0('>', 'g');
  cggss.LT_RE = cggrs.compile_0('<', 'g');
  cggss.SQUOT_RE = cggrs.compile_0("'", 'g');
  cggss.QUOT_RE = cggrs.compile_0('"', 'g');
}
;
cggss.fromTrustedString = function fromTrustedString(s){
  cggss.$clinit_SafeHtmlUtils();
  return new cggss.SafeHtmlString(s);
}
;
cggss.htmlEscape = function htmlEscape(s){
  cggss.$clinit_SafeHtmlUtils();
  if (!cggrs.$test(cggss.HTML_CHARS_RE, s)) {
    return s;
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, '&') != -1) {
    s = cggrs.$replace(cggss.AMP_RE, s, '&amp;');
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, '<') != -1) {
    s = cggrs.$replace(cggss.LT_RE, s, '&lt;');
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, '>') != -1) {
    s = cggrs.$replace(cggss.GT_RE, s, '&gt;');
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, '"') != -1) {
    s = cggrs.$replace(cggss.QUOT_RE, s, '&quot;');
  }
  if (jl.indexOf_Ljava_lang_String__I__devirtual$(s, "'") != -1) {
    s = cggrs.$replace(cggss.SQUOT_RE, s, '&#39;');
  }
  return s;
}
;
defineClass(1334, 1, {1:1});
cggss.HTML_ENTITY_REGEX = '[a-z]+|#[0-9]+|#x[0-9a-fA-F]+';
cggl.Lcom_google_gwt_safehtml_shared_SafeHtmlUtils_2_classLit = createForClass('com.google.gwt.safehtml.shared', 'SafeHtmlUtils', 1334, cggl.Ljava_lang_Object_2_classLit);
cggss.$clinit_SafeUri = function $clinit_SafeUri(){
  cggss.$clinit_SafeUri = emptyMethod;
}
;
cggl.Lcom_google_gwt_safehtml_shared_SafeUri_2_classLit = createForInterface('com.google.gwt.safehtml.shared', 'SafeUri');
cggss.$clinit_SafeUriString = function $clinit_SafeUriString(){
  cggss.$clinit_SafeUriString = emptyMethod;
  jl.$clinit_Object();
}
;
cggss.SafeUriString = function SafeUriString(uri_0){
  cggss.$clinit_SafeUriString();
  Object_0.call(this);
  this.$init_486();
  if (jsEquals(uri_0, null)) {
    throw toJs(new jl.NullPointerException_1('uri is null'));
  }
  this.uri_0 = uri_0;
}
;
defineClass(727, 1, {818:1, 1:1}, cggss.SafeUriString);
_.$init_486 = function $init_486(){
}
;
_.asString = function asString_0(){
  return this.uri_0;
}
;
_.equals_0 = function equals_20(obj){
  if (!instanceOf(obj, 818)) {
    return false;
  }
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this.uri_0, castTo(obj, 818).asString());
}
;
_.hashCode_1 = function hashCode_8(){
  return jl.hashCode__I__devirtual$_2(this.uri_0);
}
;
_.toString_0 = function toString_32(){
  return 'safe: "' + this.asString() + '"';
}
;
cggl.Lcom_google_gwt_safehtml_shared_SafeUriString_2_classLit = createForClass('com.google.gwt.safehtml.shared', 'SafeUriString', 727, cggl.Ljava_lang_Object_2_classLit);
cggss.$clinit_UriUtils = function $clinit_UriUtils(){
  cggss.$clinit_UriUtils = emptyMethod;
  jl.$clinit_Object();
  cggss.ESCAPED_LBRACKET_RE = cggcs.isScript_0()?cggrs.compile_0('%5B', 'g'):null;
  cggss.ESCAPED_RBRACKET_RE = cggcs.isScript_0()?cggrs.compile_0('%5D', 'g'):null;
}
;
cggss.unsafeCastFromUntrustedString = function unsafeCastFromUntrustedString(s){
  cggss.$clinit_UriUtils();
  return new cggss.SafeUriString(s);
}
;
defineClass(1168, 1, {1:1});
cggss.DONT_NEED_ENCODING = ";/?:@&=+$,-_.!~*'()#[]";
cggl.Lcom_google_gwt_safehtml_shared_UriUtils_2_classLit = createForClass('com.google.gwt.safehtml.shared', 'UriUtils', 1168, cggl.Ljava_lang_Object_2_classLit);
cggts.$clinit_Renderer = function $clinit_Renderer(){
  cggts.$clinit_Renderer = emptyMethod;
}
;
cggl.Lcom_google_gwt_text_shared_Renderer_2_classLit = createForInterface('com.google.gwt.text.shared', 'Renderer');
cggts.$clinit_AbstractRenderer = function $clinit_AbstractRenderer(){
  cggts.$clinit_AbstractRenderer = emptyMethod;
  jl.$clinit_Object();
}
;
cggts.AbstractRenderer = function AbstractRenderer(){
  cggts.$clinit_AbstractRenderer();
  Object_0.call(this);
  this.$init_487();
}
;
defineClass(798, 1, {1:1});
_.$init_487 = function $init_487(){
}
;
cggl.Lcom_google_gwt_text_shared_AbstractRenderer_2_classLit = createForClass('com.google.gwt.text.shared', 'AbstractRenderer', 798, cggl.Ljava_lang_Object_2_classLit);
cggts.$clinit_Parser = function $clinit_Parser(){
  cggts.$clinit_Parser = emptyMethod;
}
;
cggl.Lcom_google_gwt_text_shared_Parser_2_classLit = createForInterface('com.google.gwt.text.shared', 'Parser');
cggtst.$clinit_PassthroughParser = function $clinit_PassthroughParser(){
  cggtst.$clinit_PassthroughParser = emptyMethod;
  jl.$clinit_Object();
}
;
cggtst.PassthroughParser = function PassthroughParser(){
  Object_0.call(this);
  this.$init_488();
}
;
cggtst.instance_6 = function instance_6(){
  cggtst.$clinit_PassthroughParser();
  if (isNull(cggtst.INSTANCE_1)) {
    cggtst.INSTANCE_1 = new cggtst.PassthroughParser;
  }
  return cggtst.INSTANCE_1;
}
;
defineClass(800, 1, {1:1}, cggtst.PassthroughParser);
_.$init_488 = function $init_488(){
}
;
_.parse_13 = function parse_14(object){
  return this.parse_14(object);
}
;
_.parse_14 = function parse_15(object){
  return toString_30(object);
}
;
cggl.Lcom_google_gwt_text_shared_testing_PassthroughParser_2_classLit = createForClass('com.google.gwt.text.shared.testing', 'PassthroughParser', 800, cggl.Ljava_lang_Object_2_classLit);
cggtst.$clinit_PassthroughRenderer = function $clinit_PassthroughRenderer(){
  cggtst.$clinit_PassthroughRenderer = emptyMethod;
  cggts.$clinit_AbstractRenderer();
}
;
cggtst.PassthroughRenderer = function PassthroughRenderer(){
  cggts.AbstractRenderer.call(this);
  this.$init_489();
}
;
cggtst.instance_7 = function instance_7(){
  cggtst.$clinit_PassthroughRenderer();
  if (isNull(cggtst.INSTANCE_2)) {
    cggtst.INSTANCE_2 = new cggtst.PassthroughRenderer;
  }
  return cggtst.INSTANCE_2;
}
;
defineClass(799, 798, {1:1}, cggtst.PassthroughRenderer);
_.$init_489 = function $init_489(){
}
;
cggl.Lcom_google_gwt_text_shared_testing_PassthroughRenderer_2_classLit = createForClass('com.google.gwt.text.shared.testing', 'PassthroughRenderer', 799, cggl.Lcom_google_gwt_text_shared_AbstractRenderer_2_classLit);
cggts2.$clinit_ArrayBuffer = function $clinit_ArrayBuffer(){
  cggts2.$clinit_ArrayBuffer = emptyMethod;
}
;
cggl.Lcom_google_gwt_typedarrays_shared_ArrayBuffer_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'ArrayBuffer');
cggtc.$clinit_ArrayBufferNative = function $clinit_ArrayBufferNative(){
  cggtc.$clinit_ArrayBufferNative = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggts2.$clinit_ArrayBufferView = function $clinit_ArrayBufferView(){
  cggts2.$clinit_ArrayBufferView = emptyMethod;
}
;
cggl.Lcom_google_gwt_typedarrays_shared_ArrayBufferView_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'ArrayBufferView');
cggtc.$clinit_ArrayBufferViewNative = function $clinit_ArrayBufferViewNative(){
  cggtc.$clinit_ArrayBufferViewNative = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cggts2.$clinit_DataView = function $clinit_DataView(){
  cggts2.$clinit_DataView = emptyMethod;
}
;
cggl.Lcom_google_gwt_typedarrays_shared_DataView_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'DataView');
cggtc.$clinit_DataViewNative = function $clinit_DataViewNative(){
  cggtc.$clinit_DataViewNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggts2.$clinit_Float32Array = function $clinit_Float32Array(){
  cggts2.$clinit_Float32Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT = 4;
cggl.Lcom_google_gwt_typedarrays_shared_Float32Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Float32Array');
cggtc.$clinit_Float32ArrayNative = function $clinit_Float32ArrayNative(){
  cggtc.$clinit_Float32ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_1 = function $length_1(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Float64Array = function $clinit_Float64Array(){
  cggts2.$clinit_Float64Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_0 = 8;
cggl.Lcom_google_gwt_typedarrays_shared_Float64Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Float64Array');
cggtc.$clinit_Float64ArrayNative = function $clinit_Float64ArrayNative(){
  cggtc.$clinit_Float64ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_2 = function $length_2(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Int16Array = function $clinit_Int16Array(){
  cggts2.$clinit_Int16Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_1 = 2;
cggl.Lcom_google_gwt_typedarrays_shared_Int16Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Int16Array');
cggtc.$clinit_Int16ArrayNative = function $clinit_Int16ArrayNative(){
  cggtc.$clinit_Int16ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_3 = function $length_3(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Int32Array = function $clinit_Int32Array(){
  cggts2.$clinit_Int32Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_2 = 4;
cggl.Lcom_google_gwt_typedarrays_shared_Int32Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Int32Array');
cggtc.$clinit_Int32ArrayNative = function $clinit_Int32ArrayNative(){
  cggtc.$clinit_Int32ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$get_2 = function $get_2(this$static, index_0){
  return this$static[index_0];
}
;
cggtc.$length_4 = function $length_4(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Int8Array = function $clinit_Int8Array(){
  cggts2.$clinit_Int8Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_3 = 1;
cggl.Lcom_google_gwt_typedarrays_shared_Int8Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Int8Array');
cggtc.$clinit_Int8ArrayNative = function $clinit_Int8ArrayNative(){
  cggtc.$clinit_Int8ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_5 = function $length_5(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Uint16Array = function $clinit_Uint16Array(){
  cggts2.$clinit_Uint16Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_4 = 2;
cggl.Lcom_google_gwt_typedarrays_shared_Uint16Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Uint16Array');
cggtc.$clinit_Uint16ArrayNative = function $clinit_Uint16ArrayNative(){
  cggtc.$clinit_Uint16ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$get_3 = function $get_3(this$static, index_0){
  return this$static[index_0];
}
;
cggtc.$length_6 = function $length_6(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Uint32Array = function $clinit_Uint32Array(){
  cggts2.$clinit_Uint32Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_5 = 4;
cggl.Lcom_google_gwt_typedarrays_shared_Uint32Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Uint32Array');
cggtc.$clinit_Uint32ArrayNative = function $clinit_Uint32ArrayNative(){
  cggtc.$clinit_Uint32ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_7 = function $length_7(this$static){
  return this$static.length;
}
;
cggts2.$clinit_Uint8Array = function $clinit_Uint8Array(){
  cggts2.$clinit_Uint8Array = emptyMethod;
}
;
cggts2.BYTES_PER_ELEMENT_6 = 1;
cggl.Lcom_google_gwt_typedarrays_shared_Uint8Array_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Uint8Array');
cggts2.$clinit_Uint8ClampedArray = function $clinit_Uint8ClampedArray(){
  cggts2.$clinit_Uint8ClampedArray = emptyMethod;
}
;
cggl.Lcom_google_gwt_typedarrays_shared_Uint8ClampedArray_2_classLit = createForInterface('com.google.gwt.typedarrays.shared', 'Uint8ClampedArray');
cggtc.$clinit_Uint8ArrayNative = function $clinit_Uint8ArrayNative(){
  cggtc.$clinit_Uint8ArrayNative = emptyMethod;
  cggtc.$clinit_ArrayBufferViewNative();
}
;
cggtc.$length_8 = function $length_8(this$static){
  return this$static.length;
}
;
cgguc.$clinit_BaseListenerWrapper = function $clinit_BaseListenerWrapper(){
  cgguc.$clinit_BaseListenerWrapper = emptyMethod;
}
;
defineClass(1170, 1, {21:1, 1:1});
cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit = createForClass('com.google.gwt.user.client', 'BaseListenerWrapper', 1170, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Window$ClosingHandler = function $clinit_Window$ClosingHandler(){
  cgguc.$clinit_Window$ClosingHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_Window$ClosingHandler_2_classLit = createForInterface('com.google.gwt.user.client', 'Window/ClosingHandler');
cgguc.$clinit_BaseListenerWrapper$WrapWindowClose = function $clinit_BaseListenerWrapper$WrapWindowClose(){
  cgguc.$clinit_BaseListenerWrapper$WrapWindowClose = emptyMethod;
}
;
defineClass(1172, 1170, {816:1, 21:1, 1345:1, 1:1});
cggl.Lcom_google_gwt_user_client_BaseListenerWrapper$WrapWindowClose_2_classLit = createForClass('com.google.gwt.user.client', 'BaseListenerWrapper/WrapWindowClose', 1172, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_BaseListenerWrapper$WrapWindowResize = function $clinit_BaseListenerWrapper$WrapWindowResize(){
  cgguc.$clinit_BaseListenerWrapper$WrapWindowResize = emptyMethod;
}
;
defineClass(1173, 1170, {215:1, 21:1, 1:1});
cggl.Lcom_google_gwt_user_client_BaseListenerWrapper$WrapWindowResize_2_classLit = createForClass('com.google.gwt.user.client', 'BaseListenerWrapper/WrapWindowResize', 1173, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_Window$ScrollHandler = function $clinit_Window$ScrollHandler(){
  cgguc.$clinit_Window$ScrollHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_Window$ScrollHandler_2_classLit = createForInterface('com.google.gwt.user.client', 'Window/ScrollHandler');
cgguc.$clinit_BaseListenerWrapper$WrapWindowScroll = function $clinit_BaseListenerWrapper$WrapWindowScroll(){
  cgguc.$clinit_BaseListenerWrapper$WrapWindowScroll = emptyMethod;
}
;
defineClass(1174, 1170, {21:1, 1:1});
cggl.Lcom_google_gwt_user_client_BaseListenerWrapper$WrapWindowScroll_2_classLit = createForClass('com.google.gwt.user.client', 'BaseListenerWrapper/WrapWindowScroll', 1174, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_DOM = function $clinit_DOM(){
  cgguc.$clinit_DOM = emptyMethod;
  jl.$clinit_Object();
  cgguc.impl_4 = castTo(new cgguci.DOMImplWebkit_0, 292);
}
;
cgguc.appendChild = function appendChild(parent_0, child){
  cgguc.$clinit_DOM();
  cggdc.$appendChild(parent_0, cgguc.resolve(child));
}
;
cgguc.asOld = function asOld(elem){
  cgguc.$clinit_DOM();
  return elem;
}
;
cgguc.createDiv = function createDiv(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createDivElement(cggdc.get_19()));
}
;
cgguc.createElement_5 = function createElement_5(tagName){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createElement(cggdc.get_19(), tagName));
}
;
cgguc.createInputCheck = function createInputCheck(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createCheckInputElement(cggdc.get_19()));
}
;
cgguc.createSpan = function createSpan(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createSpanElement(cggdc.get_19()));
}
;
cgguc.createTBody = function createTBody(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createTBodyElement(cggdc.get_19()));
}
;
cgguc.createTD = function createTD(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createTDElement(cggdc.get_19()));
}
;
cgguc.createTR = function createTR(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createTRElement(cggdc.get_19()));
}
;
cgguc.createTable = function createTable(){
  cgguc.$clinit_DOM();
  return cggcc.$cast(cggdc.$createTableElement(cggdc.get_19()));
}
;
cgguc.createUniqueId = function createUniqueId(){
  cgguc.$clinit_DOM();
  return cggdc.$createUniqueId(cggdc.get_19());
}
;
cgguc.dispatchEvent_2 = function dispatchEvent_2(evt, elem){
  cgguc.$clinit_DOM();
  var eventListener;
  eventListener = cgguc.getEventListener(elem);
  if (isNull(eventListener)) {
    return false;
  }
  cgguc.dispatchEvent_3(evt, elem, eventListener);
  return true;
}
;
cgguc.dispatchEvent_3 = function dispatchEvent_3(evt, elem, listener){
  cgguc.$clinit_DOM();
  var prevCurrentEvent;
  prevCurrentEvent = cgguc.currentEvent;
  cgguc.currentEvent = evt;
  cgguc.dispatchEventImpl(evt, elem, listener);
  cgguc.currentEvent = prevCurrentEvent;
}
;
cgguc.dispatchEventImpl = function dispatchEventImpl(evt, elem, listener){
  if (jsEquals(elem, cgguc.sCaptureElem)) {
    if (cgguc.eventGetType_0(evt) == 8192) {
      cgguc.sCaptureElem = null;
    }
  }
  listener.onBrowserEvent(evt);
}
;
cgguc.eventGetType_0 = function eventGetType_0(evt){
  cgguc.$clinit_DOM();
  return cgguc.impl_4.eventGetTypeInt(evt);
}
;
cgguc.getCaptureElement = function getCaptureElement(){
  cgguc.$clinit_DOM();
  return cgguc.asOld(cgguc.sCaptureElem);
}
;
cgguc.getChild = function getChild(parent_0, index_0){
  cgguc.$clinit_DOM();
  return cgguc.asOld(cgguc.impl_4.getChild(parent_0, index_0));
}
;
cgguc.getEventListener = function getEventListener(elem){
  cgguc.$clinit_DOM();
  return cgguci.getEventListener_1(elem);
}
;
cgguc.getEventsSunk = function getEventsSunk(elem){
  cgguc.$clinit_DOM();
  return cgguc.impl_4.getEventsSunk(elem);
}
;
cgguc.getFirstChild = function getFirstChild(elem){
  cgguc.$clinit_DOM();
  return cgguc.asOld(cggdc.$getFirstChildElement(elem));
}
;
cgguc.getParent_0 = function getParent_0(elem){
  cgguc.$clinit_DOM();
  return cgguc.asOld(cggdc.$getParentElement(elem));
}
;
cgguc.insertChild = function insertChild(parent_0, child, index_0){
  cgguc.$clinit_DOM();
  cgguc.impl_4.insertChild(parent_0, cgguc.resolve(child), index_0);
}
;
cgguc.isPotential = function isPotential(o){
  cgguc.$clinit_DOM();
  try {
    return !!o && !!o.__gwt_resolve;
  }
   catch (e) {
    return false;
  }
}
;
cgguc.maybeInitializeEventSystem = function maybeInitializeEventSystem(){
  cgguc.$clinit_DOM();
  cgguc.impl_4.maybeInitializeEventSystem();
}
;
cgguc.previewEvent = function previewEvent(evt){
  cgguc.$clinit_DOM();
  var ret;
  ret = cgguc.fireNativePreviewEvent(evt);
  if (!ret && isNotNull(evt)) {
    cggdc.$stopPropagation(evt);
    cggdc.$preventDefault(evt);
  }
  return ret;
}
;
cgguc.releaseCapture = function releaseCapture(elem){
  cgguc.$clinit_DOM();
  if (isNotNull(cgguc.sCaptureElem) && jsEquals(elem, cgguc.sCaptureElem)) {
    cgguc.sCaptureElem = null;
  }
  cgguc.impl_4.releaseCapture(elem);
}
;
cgguc.resolve = function resolve(maybePotential){
  return maybePotential.__gwt_resolve?maybePotential.__gwt_resolve():maybePotential;
}
;
cgguc.setCapture = function setCapture(elem){
  cgguc.$clinit_DOM();
  cgguc.sCaptureElem = elem;
  cgguc.impl_4.setCapture(elem);
}
;
cgguc.setEventListener = function setEventListener(elem, listener){
  cgguc.$clinit_DOM();
  cgguci.setEventListener_0(elem, listener);
}
;
cgguc.sinkBitlessEvent_0 = function sinkBitlessEvent_0(elem, eventTypeName){
  cgguc.$clinit_DOM();
  cgguc.impl_4.sinkBitlessEvent_0(elem, eventTypeName);
}
;
cgguc.sinkEvents_1 = function sinkEvents_1(elem, eventBits){
  cgguc.$clinit_DOM();
  cgguc.impl_4.sinkEvents_0(elem, eventBits);
}
;
defineClass(1169, 1, {1:1});
cgguc.currentEvent = null;
cggl.Lcom_google_gwt_user_client_DOM_2_classLit = createForClass('com.google.gwt.user.client', 'DOM', 1169, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Event$NativePreviewHandler = function $clinit_Event$NativePreviewHandler(){
  cgguc.$clinit_Event$NativePreviewHandler = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_Event$NativePreviewHandler_2_classLit = createForInterface('com.google.gwt.user.client', 'Event/NativePreviewHandler');
cgguc.$clinit_DOM$NativePreview = function $clinit_DOM$NativePreview(){
  cgguc.$clinit_DOM$NativePreview = emptyMethod;
}
;
defineClass(1171, 1170, {21:1, 819:1, 1:1});
cggl.Lcom_google_gwt_user_client_DOM$NativePreview_2_classLit = createForClass('com.google.gwt.user.client', 'DOM/NativePreview', 1171, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_DocumentModeAsserter = function $clinit_DocumentModeAsserter(){
  cgguc.$clinit_DocumentModeAsserter = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.DocumentModeAsserter = function DocumentModeAsserter(){
  cgguc.$clinit_DocumentModeAsserter();
  Object_0.call(this);
  this.$init_490();
}
;
defineClass(397, 1, {99:1, 1:1}, cgguc.DocumentModeAsserter);
_.$init_490 = function $init_490(){
}
;
_.onModuleLoad = function onModuleLoad_3(){
  var allowedModes, currentMode, i, impl, message, severity;
  impl = castTo(new cgguc.DocumentModeAsserter_DocumentModeProperty, 875);
  severity = impl.getDocumentModeSeverity();
  if (jsEquals(severity, (cgguc.$clinit_DocumentModeAsserter$Severity() , cgguc.IGNORE))) {
    return;
  }
  currentMode = cggdc.$getCompatMode(cggdc.get_19());
  allowedModes = impl.getAllowedDocumentModes();
  for (i = 0; i < allowedModes.length; i++) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(allowedModes[i], currentMode)) {
      return;
    }
  }
  if (allowedModes.length == 1 && jl.equals_Ljava_lang_Object__Z__devirtual$_2('CSS1Compat', allowedModes[0]) && jl.equals_Ljava_lang_Object__Z__devirtual$_2('BackCompat', currentMode)) {
    message = "GWT no longer supports Quirks Mode (document.compatMode=' " + 'BackCompat' + "').<br>Make sure your application's host HTML page has a Standards Mode " + "(document.compatMode=' " + 'CSS1Compat' + "') doctype,<br>e.g. by using &lt;!doctype html&gt; at the start of your application's HTML " + 'page.<br><br>To continue using this unsupported rendering mode and risk layout problems, ' + 'suppress this message by adding<br>the following line to your*.gwt.xml module file:<br>' + '&nbsp;&nbsp;&lt;extend-configuration-property name="document.compatMode" value="' + currentMode + '"/&gt;';
  }
   else {
    message = "Your *.gwt.xml module configuration prohibits the use of the current document rendering mode (document.compatMode=' " + currentMode + "').<br>Modify your application's host HTML page doctype, or update your custom " + "'document.compatMode' configuration property settings.";
  }
  if (jsEquals(severity, (cgguc.$clinit_DocumentModeAsserter$Severity() , cgguc.ERROR))) {
    throw toJs(new jl.RuntimeException_1(message));
  }
  cggcc.log_1(message);
}
;
cgguc.PROPERTY_DOCUMENT_COMPATMODE = 'document.compatMode';
cgguc.PROPERTY_DOCUMENT_COMPATMODE_SEVERITY = 'document.compatMode.severity';
cgguc.QUIRKS_MODE_BACK_COMPAT = 'BackCompat';
cgguc.STANDARDS_MODE_CSS1_COMPAT = 'CSS1Compat';
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter_2_classLit = createForClass('com.google.gwt.user.client', 'DocumentModeAsserter', 397, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_DocumentModeAsserter$DocumentModeProperty = function $clinit_DocumentModeAsserter$DocumentModeProperty(){
  cgguc.$clinit_DocumentModeAsserter$DocumentModeProperty = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter$DocumentModeProperty_2_classLit = createForInterface('com.google.gwt.user.client', 'DocumentModeAsserter/DocumentModeProperty');
cgguc.$clinit_DocumentModeAsserter$Severity = function $clinit_DocumentModeAsserter$Severity(){
  cgguc.$clinit_DocumentModeAsserter$Severity = emptyMethod;
  jl.$clinit_Enum();
  cgguc.ERROR = new cgguc.DocumentModeAsserter$Severity('ERROR', 0);
  cgguc.IGNORE = new cgguc.DocumentModeAsserter$Severity('IGNORE', 1);
  cgguc.WARN = new cgguc.DocumentModeAsserter$Severity('WARN', 2);
}
;
cgguc.DocumentModeAsserter$Severity = function DocumentModeAsserter$Severity(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_491();
}
;
cgguc.valueOf_16 = function valueOf_16(name_0){
  cgguc.$clinit_DocumentModeAsserter$Severity();
  return valueOf((cgguc.$clinit_DocumentModeAsserter$Severity$Map() , cgguc.$MAP_15), name_0);
}
;
cgguc.values_16 = function values_16(){
  cgguc.$clinit_DocumentModeAsserter$Severity();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_user_client_DocumentModeAsserter$Severity_2_classLit, 1), {4:1, 1:1, 7:1}, 186, 0, [cgguc.ERROR, cgguc.IGNORE, cgguc.WARN]);
}
;
defineClass(186, 11, {186:1, 4:1, 10:1, 11:1, 1:1}, cgguc.DocumentModeAsserter$Severity);
_.$init_491 = function $init_491(){
}
;
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter$Severity_2_classLit = createForEnum('com.google.gwt.user.client', 'DocumentModeAsserter/Severity', 186, cggl.Ljava_lang_Enum_2_classLit, cgguc.values_16, cgguc.valueOf_16);
cgguc.$clinit_DocumentModeAsserter$Severity$Map = function $clinit_DocumentModeAsserter$Severity$Map(){
  cgguc.$clinit_DocumentModeAsserter$Severity$Map = emptyMethod;
  cgguc.$MAP_15 = createValueOfMap(cgguc.values_16());
}
;
defineClass(876, 1, {1:1});
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter$Severity$Map_2_classLit = createForClass('com.google.gwt.user.client', 'DocumentModeAsserter/Severity/Map', 876, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_DocumentModeAsserter_DocumentModeProperty = function $clinit_DocumentModeAsserter_DocumentModeProperty(){
  cgguc.$clinit_DocumentModeAsserter_DocumentModeProperty = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.DocumentModeAsserter_DocumentModeProperty = function DocumentModeAsserter_DocumentModeProperty(){
  cgguc.$clinit_DocumentModeAsserter_DocumentModeProperty();
  Object_0.call(this);
  this.$init_492();
}
;
defineClass(422, 1, {875:1, 1:1}, cgguc.DocumentModeAsserter_DocumentModeProperty);
_.$init_492 = function $init_492(){
}
;
_.getAllowedDocumentModes = function getAllowedDocumentModes(){
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['CSS1Compat']);
}
;
_.getDocumentModeSeverity = function getDocumentModeSeverity(){
  return cgguc.$clinit_DocumentModeAsserter$Severity() , cgguc.WARN;
}
;
cggl.Lcom_google_gwt_user_client_DocumentModeAsserter_1DocumentModeProperty_2_classLit = createForClass('com.google.gwt.user.client', 'DocumentModeAsserter_DocumentModeProperty', 422, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Element_0 = function $clinit_Element_0(){
  cgguc.$clinit_Element_0 = emptyMethod;
  cggdc.$clinit_Element();
}
;
cgguc.$clinit_Event_0 = function $clinit_Event_0(){
  cgguc.$clinit_Event_0 = emptyMethod;
  cggdc.$clinit_NativeEvent();
  cgguc.FOCUSEVENTS = 2048 | 4096;
  cgguc.KEYEVENTS = 128 | 256 | 512;
  cgguc.MOUSEEVENTS = 4 | 8 | 64 | 16 | 32;
  cgguc.TOUCHEVENTS = 1048576 | 2097152 | 4194304 | 8388608;
  cgguc.GESTUREEVENTS = 16777216 | 33554432 | 67108864;
}
;
cgguc.$getTarget = function $getTarget(this$static){
  cgguc.$clinit_Event_0();
  return cggcc.$cast(cggdc.$getEventTarget(this$static));
}
;
cgguc.$getTypeInt = function $getTypeInt(this$static){
  cgguc.$clinit_Event_0();
  return cgguc.eventGetType_0(this$static);
}
;
cgguc.addNativePreviewHandler = function addNativePreviewHandler(handler){
  cgguc.$clinit_Event_0();
  cgguc.maybeInitializeEventSystem();
  cgguc.getType_38();
  if (isNull(cgguc.handlers_0)) {
    cgguc.handlers_0 = new cgges.HandlerManager_0(null, true);
    cgguc.$clinit_Event$NativePreviewEvent() , cgguc.singleton = new cgguc.Event$NativePreviewEvent;
  }
  return cgguc.handlers_0.addHandler_0((cgguc.$clinit_Event$NativePreviewEvent() , cgguc.TYPE_25), handler);
}
;
cgguc.as_2 = function as_2(event_0){
  cgguc.$clinit_Event_0();
  return event_0;
}
;
cgguc.fireNativePreviewEvent = function fireNativePreviewEvent(nativeEvent){
  cgguc.$clinit_Event_0();
  return cgguc.fire_5(cgguc.handlers_0, nativeEvent);
}
;
cgguc.getEventListener_0 = function getEventListener_0(elem){
  cgguc.$clinit_Event_0();
  return cgguc.getEventListener(elem);
}
;
cgguc.getEventsSunk_0 = function getEventsSunk_0(elem){
  cgguc.$clinit_Event_0();
  return cgguc.getEventsSunk(elem);
}
;
cgguc.getTypeInt = function getTypeInt(typeName){
  cgguc.$clinit_Event_0();
  return (cgguc.$clinit_DOM() , cgguc.impl_4).eventGetTypeInt_0(typeName);
}
;
cgguc.sinkEvents_2 = function sinkEvents_2(elem, eventBits){
  cgguc.$clinit_Event_0();
  cgguc.sinkEvents_1(elem, eventBits);
}
;
cgguc.FOCUSEVENTS = 0;
cgguc.GESTUREEVENTS = 0;
cgguc.KEYEVENTS = 0;
cgguc.MOUSEEVENTS = 0;
cgguc.ONBLUR = 4096;
cgguc.ONCHANGE = 1024;
cgguc.ONCLICK = 1;
cgguc.ONCONTEXTMENU = 262144;
cgguc.ONDBLCLICK = 2;
cgguc.ONERROR = 65536;
cgguc.ONFOCUS = 2048;
cgguc.ONGESTURECHANGE = 33554432;
cgguc.ONGESTUREEND = 67108864;
cgguc.ONGESTURESTART = 16777216;
cgguc.ONKEYDOWN = 128;
cgguc.ONKEYPRESS = 256;
cgguc.ONKEYUP = 512;
cgguc.ONLOAD = 32768;
cgguc.ONLOSECAPTURE = 8192;
cgguc.ONMOUSEDOWN = 4;
cgguc.ONMOUSEMOVE = 64;
cgguc.ONMOUSEOUT = 32;
cgguc.ONMOUSEOVER = 16;
cgguc.ONMOUSEUP = 8;
cgguc.ONMOUSEWHEEL = 131072;
cgguc.ONPASTE = 524288;
cgguc.ONSCROLL = 16384;
cgguc.ONTOUCHCANCEL = 8388608;
cgguc.ONTOUCHEND = 4194304;
cgguc.ONTOUCHMOVE = 2097152;
cgguc.ONTOUCHSTART = 1048576;
cgguc.TOUCHEVENTS = 0;
cgguc.UNDEFINED = 0;
cgguc.$clinit_Event$NativePreviewEvent = function $clinit_Event$NativePreviewEvent(){
  cgguc.$clinit_Event$NativePreviewEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
}
;
cgguc.Event$NativePreviewEvent = function Event$NativePreviewEvent(){
  cgguc.$clinit_Event$NativePreviewEvent();
  cgges.GwtEvent.call(this);
  this.$init_493();
}
;
cgguc.fire_5 = function fire_5(handlers, nativeEvent){
  cgguc.$clinit_Event$NativePreviewEvent();
  var lastIsCanceled, lastIsConsumed, lastIsFirstHandler, lastNativeEvent, ret;
  if (isNotNull(cgguc.TYPE_25) && isNotNull(handlers) && handlers.isEventHandled(cgguc.TYPE_25)) {
    lastIsCanceled = cgguc.singleton.isCanceled;
    lastIsConsumed = cgguc.singleton.isConsumed;
    lastIsFirstHandler = cgguc.singleton.isFirstHandler;
    lastNativeEvent = cgguc.singleton.nativeEvent;
    cgguc.singleton.revive();
    cgguc.singleton.setNativeEvent_0(nativeEvent);
    handlers.fireEvent(cgguc.singleton);
    ret = !(cgguc.singleton.isCanceled_0() && !cgguc.singleton.isConsumed_0());
    cgguc.singleton.isCanceled = lastIsCanceled;
    cgguc.singleton.isConsumed = lastIsConsumed;
    cgguc.singleton.isFirstHandler = lastIsFirstHandler;
    cgguc.singleton.nativeEvent = lastNativeEvent;
    return ret;
  }
  return true;
}
;
cgguc.getType_38 = function getType_38(){
  cgguc.$clinit_Event$NativePreviewEvent();
  if (isNull(cgguc.TYPE_25)) {
    cgguc.TYPE_25 = new cgges.GwtEvent$Type;
  }
  return cgguc.TYPE_25;
}
;
defineClass(705, 131, {1:1}, cgguc.Event$NativePreviewEvent);
_.$init_493 = function $init_493(){
  this.isCanceled = false;
  this.isConsumed = false;
  this.isFirstHandler = false;
}
;
_.dispatch_0 = function dispatch_52(handler){
  this.dispatch_27(castTo(handler, 819));
}
;
_.getAssociatedType = function getAssociatedType_77(){
  return this.getAssociatedType_0();
}
;
_.cancel_0 = function cancel_4(){
  this.isCanceled = true;
}
;
_.consume = function consume(){
  this.isConsumed = true;
}
;
_.dispatch_27 = function dispatch_53(handler){
  handler.onPreviewNativeEvent(this);
  cgguc.singleton.isFirstHandler = false;
}
;
_.getAssociatedType_0 = function getAssociatedType_76(){
  return cgguc.TYPE_25;
}
;
_.getNativeEvent = function getNativeEvent_0(){
  return this.nativeEvent;
}
;
_.getTypeInt = function getTypeInt_0(){
  return cgguc.$getTypeInt(cgguc.as_2(this.getNativeEvent()));
}
;
_.isCanceled_0 = function isCanceled(){
  return this.isCanceled;
}
;
_.isConsumed_0 = function isConsumed(){
  return this.isConsumed;
}
;
_.isFirstHandler_0 = function isFirstHandler(){
  return this.isFirstHandler;
}
;
_.revive = function revive_0(){
  getClassPrototype(131).revive.call(this);
  this.isCanceled = false;
  this.isConsumed = false;
  this.isFirstHandler = true;
  this.nativeEvent = null;
}
;
_.setNativeEvent_0 = function setNativeEvent_0(nativeEvent){
  this.nativeEvent = nativeEvent;
}
;
_.isCanceled = false;
_.isConsumed = false;
_.isFirstHandler = false;
cggl.Lcom_google_gwt_user_client_Event$NativePreviewEvent_2_classLit = createForClass('com.google.gwt.user.client', 'Event/NativePreviewEvent', 705, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cgguc.$clinit_History = function $clinit_History(){
  cgguc.$clinit_History = emptyMethod;
  jl.$clinit_Object();
  cgguc.impl_5 = castTo(new cgguc.History$HistoryImpl, 303);
  cgguc.historyEventSource = new cgguc.History$HistoryEventSource;
  cgguc.tokenEncoder = castTo(new cgguc.History$HistoryTokenEncoder, 248);
  cgguc.token_0 = cgguc.getDecodedHash();
}
;
cgguc.addValueChangeHandler = function addValueChangeHandler(handler){
  cgguc.$clinit_History();
  return cgguc.historyEventSource.addValueChangeHandler(handler);
}
;
cgguc.getDecodedHash = function getDecodedHash(){
  var hashToken;
  hashToken = cgguc.getHash();
  if (jsEquals(hashToken, null) || jl.isEmpty__Z__devirtual$(hashToken)) {
    return '';
  }
  return cgguc.tokenEncoder.decode_0(jl.substring_I_Ljava_lang_String___devirtual$(hashToken, 1));
}
;
cgguc.getToken = function getToken(){
  return cgguc.token_0;
}
;
cgguc.onHashChanged = function onHashChanged(){
  cgguc.$clinit_History();
  var hashToken;
  hashToken = cgguc.getDecodedHash();
  if (!jl.equals_Ljava_lang_Object__Z__devirtual$_2(hashToken, cgguc.getToken())) {
    cgguc.token_0 = hashToken;
    cgguc.historyEventSource.fireValueChangedEvent(hashToken);
  }
}
;
defineClass(1331, 1, {1:1});
cggl.Lcom_google_gwt_user_client_History_2_classLit = createForClass('com.google.gwt.user.client', 'History', 1331, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_History$HistoryEventSource = function $clinit_History$HistoryEventSource(){
  cgguc.$clinit_History$HistoryEventSource = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.History$HistoryEventSource = function History$HistoryEventSource(){
  cgguc.$clinit_History$HistoryEventSource();
  Object_0.call(this);
  this.$init_494();
}
;
defineClass(793, 1, {1:1}, cgguc.History$HistoryEventSource);
_.$init_494 = function $init_494(){
  this.handlers = new cgges.HandlerManager(null);
}
;
_.addValueChangeHandler = function addValueChangeHandler_0(handler){
  return this.handlers.addHandler_0(cggels.getType_37(), handler);
}
;
_.fireEvent = function fireEvent_2(event_0){
  this.handlers.fireEvent(event_0);
}
;
_.fireValueChangedEvent = function fireValueChangedEvent(newToken){
  cggels.fire_4(this, newToken);
}
;
cggl.Lcom_google_gwt_user_client_History$HistoryEventSource_2_classLit = createForClass('com.google.gwt.user.client', 'History/HistoryEventSource', 793, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_History$HistoryImpl = function $clinit_History$HistoryImpl(){
  cgguc.$clinit_History$HistoryImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.History$HistoryImpl = function History$HistoryImpl(){
  cgguc.$clinit_History$HistoryImpl();
  Object_0.call(this);
  this.$init_495();
  this.attachListener();
}
;
defineClass(303, 1, {303:1, 1:1}, cgguc.History$HistoryImpl);
_.$init_495 = function $init_495(){
}
;
_.attachListener = function attachListener(){
  var handler = $entry(cgguc.onHashChanged);
  $wnd.addEventListener('hashchange', handler, false);
}
;
cggl.Lcom_google_gwt_user_client_History$HistoryImpl_2_classLit = createForClass('com.google.gwt.user.client', 'History/HistoryImpl', 303, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_History$HistoryTokenEncoder = function $clinit_History$HistoryTokenEncoder(){
  cgguc.$clinit_History$HistoryTokenEncoder = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.History$HistoryTokenEncoder = function History$HistoryTokenEncoder(){
  cgguc.$clinit_History$HistoryTokenEncoder();
  Object_0.call(this);
  this.$init_496();
}
;
defineClass(248, 1, {248:1, 1:1}, cgguc.History$HistoryTokenEncoder);
_.$init_496 = function $init_496(){
}
;
_.decode_0 = function decode_3(toDecode){
  return $wnd.decodeURI(toDecode.replace('%23', '#'));
}
;
cggl.Lcom_google_gwt_user_client_History$HistoryTokenEncoder_2_classLit = createForClass('com.google.gwt.user.client', 'History/HistoryTokenEncoder', 248, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_History$NoopHistoryTokenEncoder = function $clinit_History$NoopHistoryTokenEncoder(){
  cgguc.$clinit_History$NoopHistoryTokenEncoder = emptyMethod;
}
;
defineClass(1332, 248, {248:1, 1:1});
cggl.Lcom_google_gwt_user_client_History$NoopHistoryTokenEncoder_2_classLit = createForClass('com.google.gwt.user.client', 'History/NoopHistoryTokenEncoder', 1332, cggl.Lcom_google_gwt_user_client_History$HistoryTokenEncoder_2_classLit);
cgguc.$clinit_History$WrapHistory = function $clinit_History$WrapHistory(){
  cgguc.$clinit_History$WrapHistory = emptyMethod;
}
;
defineClass(1333, 1170, {252:1, 21:1, 1:1});
cggl.Lcom_google_gwt_user_client_History$WrapHistory_2_classLit = createForClass('com.google.gwt.user.client', 'History/WrapHistory', 1333, cggl.Lcom_google_gwt_user_client_BaseListenerWrapper_2_classLit);
cgguc.$clinit_TakesValue = function $clinit_TakesValue(){
  cgguc.$clinit_TakesValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_TakesValue_2_classLit = createForInterface('com.google.gwt.user.client', 'TakesValue');
cgguc.$clinit_Window_0 = function $clinit_Window_0(){
  cgguc.$clinit_Window_0 = emptyMethod;
  jl.$clinit_Object();
  cgguc.impl_6 = castTo(new cgguci.WindowImpl, 279);
}
;
cgguc.addCloseHandler = function addCloseHandler(handler){
  cgguc.$clinit_Window_0();
  cgguc.maybeInitializeCloseHandlers();
  return cgguc.addHandler_2(cggels.getType_35(), handler);
}
;
cgguc.addHandler_2 = function addHandler_2(type_0, handler){
  return cgguc.getHandlers().addHandler_0(type_0, handler);
}
;
cgguc.addResizeHandler = function addResizeHandler(handler){
  cgguc.$clinit_Window_0();
  cgguc.maybeInitializeCloseHandlers();
  cgguc.maybeInitializeResizeHandlers();
  return cgguc.addHandler_2(cggels.getType_36(), handler);
}
;
cgguc.fireEvent_3 = function fireEvent_3(event_0){
  if (isNotNull(cgguc.handlers_1)) {
    cgguc.handlers_1.fireEvent(event_0);
  }
}
;
cgguc.getClientHeight = function getClientHeight(){
  cgguc.$clinit_Window_0();
  return cggdc.$getClientHeight_0(cggdc.get_19());
}
;
cgguc.getClientWidth = function getClientWidth(){
  cgguc.$clinit_Window_0();
  return cggdc.$getClientWidth_0(cggdc.get_19());
}
;
cgguc.getHandlers = function getHandlers(){
  if (isNull(cgguc.handlers_1)) {
    cgguc.handlers_1 = new cgguc.Window$WindowHandlers;
  }
  return cgguc.handlers_1;
}
;
cgguc.maybeInitializeCloseHandlers = function maybeInitializeCloseHandlers(){
  if (isClient() && !cgguc.closeHandlersInitialized) {
    cgguc.impl_6.initWindowCloseHandler();
    cgguc.closeHandlersInitialized = true;
  }
}
;
cgguc.maybeInitializeResizeHandlers = function maybeInitializeResizeHandlers(){
  if (isClient() && !cgguc.resizeHandlersInitialized) {
    cgguc.impl_6.initWindowResizeHandler();
    cgguc.resizeHandlersInitialized = true;
  }
}
;
cgguc.onClosed = function onClosed(){
  cgguc.$clinit_Window_0();
  if (cgguc.closeHandlersInitialized) {
    cggels.fire_1(cgguc.getHandlers(), null);
  }
}
;
cgguc.onClosing = function onClosing(){
  cgguc.$clinit_Window_0();
  var event_0;
  if (cgguc.closeHandlersInitialized) {
    event_0 = new cgguc.Window$ClosingEvent;
    cgguc.fireEvent_3(event_0);
    return event_0.getMessage();
  }
  return null;
}
;
cgguc.onResize_1 = function onResize_1(){
  cgguc.$clinit_Window_0();
  var height, width_0;
  if (cgguc.resizeHandlersInitialized) {
    width_0 = cgguc.getClientWidth();
    height = cgguc.getClientHeight();
    if (cgguc.lastResizeWidth != width_0 || cgguc.lastResizeHeight != height) {
      cgguc.lastResizeWidth = width_0;
      cgguc.lastResizeHeight = height;
      cggels.fire_3(cgguc.getHandlers(), width_0, height);
    }
  }
}
;
defineClass(976, 1, {1:1});
cgguc.closeHandlersInitialized = false;
cgguc.lastResizeHeight = 0;
cgguc.lastResizeWidth = 0;
cgguc.resizeHandlersInitialized = false;
cggl.Lcom_google_gwt_user_client_Window_2_classLit = createForClass('com.google.gwt.user.client', 'Window', 976, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Window$ClosingEvent = function $clinit_Window$ClosingEvent(){
  cgguc.$clinit_Window$ClosingEvent = emptyMethod;
  cgges.$clinit_GwtEvent();
  cgguc.TYPE_26 = new cgges.GwtEvent$Type;
}
;
cgguc.Window$ClosingEvent = function Window$ClosingEvent(){
  cgguc.$clinit_Window$ClosingEvent();
  cgges.GwtEvent.call(this);
  this.$init_497();
}
;
defineClass(540, 131, {1:1}, cgguc.Window$ClosingEvent);
_.$init_497 = function $init_497(){
  this.message_0 = null;
}
;
_.dispatch_0 = function dispatch_54(handler){
  this.dispatch_28(castTo(handler, 1345));
}
;
_.getAssociatedType = function getAssociatedType_79(){
  return this.getAssociatedType_0();
}
;
_.dispatch_28 = function dispatch_55(handler){
  handler.onWindowClosing(this);
}
;
_.getAssociatedType_0 = function getAssociatedType_78(){
  return cgguc.TYPE_26;
}
;
_.getMessage = function getMessage_1(){
  return this.message_0;
}
;
cggl.Lcom_google_gwt_user_client_Window$ClosingEvent_2_classLit = createForClass('com.google.gwt.user.client', 'Window/ClosingEvent', 540, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cgguc.$clinit_Window$Location = function $clinit_Window$Location(){
  cgguc.$clinit_Window$Location = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc.getHash = function getHash(){
  cgguc.$clinit_Window$Location();
  return (cgguc.$clinit_Window_0() , cgguc.impl_6).getHash();
}
;
defineClass(977, 1, {1:1});
cgguc.cachedQueryString = '';
cggl.Lcom_google_gwt_user_client_Window$Location_2_classLit = createForClass('com.google.gwt.user.client', 'Window/Location', 977, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Window$Navigator = function $clinit_Window$Navigator(){
  cgguc.$clinit_Window$Navigator = emptyMethod;
}
;
defineClass(978, 1, {1:1});
cggl.Lcom_google_gwt_user_client_Window$Navigator_2_classLit = createForClass('com.google.gwt.user.client', 'Window/Navigator', 978, cggl.Ljava_lang_Object_2_classLit);
cgguc.$clinit_Window$ScrollEvent = function $clinit_Window$ScrollEvent(){
  cgguc.$clinit_Window$ScrollEvent = emptyMethod;
}
;
defineClass(979, 131, {1:1});
cggl.Lcom_google_gwt_user_client_Window$ScrollEvent_2_classLit = createForClass('com.google.gwt.user.client', 'Window/ScrollEvent', 979, cggl.Lcom_google_gwt_event_shared_GwtEvent_2_classLit);
cgguc.$clinit_Window$WindowHandlers = function $clinit_Window$WindowHandlers(){
  cgguc.$clinit_Window$WindowHandlers = emptyMethod;
  cgges.$clinit_HandlerManager();
}
;
cgguc.Window$WindowHandlers = function Window$WindowHandlers(){
  cgguc.$clinit_Window$WindowHandlers();
  cgges.HandlerManager.call(this, null);
  this.$init_498();
}
;
defineClass(541, 199, {1:1}, cgguc.Window$WindowHandlers);
_.$init_498 = function $init_498(){
}
;
cggl.Lcom_google_gwt_user_client_Window$WindowHandlers_2_classLit = createForClass('com.google.gwt.user.client', 'Window/WindowHandlers', 541, cggl.Lcom_google_gwt_event_shared_HandlerManager_2_classLit);
cgguci.$clinit_DOMImpl_0 = function $clinit_DOMImpl_0(){
  cgguci.$clinit_DOMImpl_0 = emptyMethod;
  jl.$clinit_Object();
}
;
cgguci.DOMImpl_0 = function DOMImpl_0(){
  cgguci.$clinit_DOMImpl_0();
  Object_0.call(this);
  this.$init_499();
}
;
cgguci.getEventListener_1 = function getEventListener_1(elem){
  cgguci.$clinit_DOMImpl_0();
  var maybeListener = elem.__listener;
  return cgguci.isMyListener(maybeListener)?maybeListener:null;
}
;
cgguci.isMyListener = function isMyListener(object){
  return !instanceOfJso(object) && instanceOf(object, 37);
}
;
cgguci.setEventListener_0 = function setEventListener_0(elem, listener){
  cgguci.$clinit_DOMImpl_0();
  elem.__listener = listener;
}
;
defineClass(292, 1, {1:1});
_.$init_499 = function $init_499(){
}
;
_.eventGetTypeInt = function eventGetTypeInt(evt){
  return this.eventGetTypeInt_0(cggdc.$getType_1(evt));
}
;
_.eventGetTypeInt_0 = function eventGetTypeInt_0(eventType){
  switch (eventType) {
    case 'blur':
      return 4096;
    case 'change':
      return 1024;
    case 'click':
      return 1;
    case 'dblclick':
      return 2;
    case 'focus':
      return 2048;
    case 'keydown':
      return 128;
    case 'keypress':
      return 256;
    case 'keyup':
      return 512;
    case 'load':
      return 32768;
    case 'losecapture':
      return 8192;
    case 'mousedown':
      return 4;
    case 'mousemove':
      return 64;
    case 'mouseout':
      return 32;
    case 'mouseover':
      return 16;
    case 'mouseup':
      return 8;
    case 'scroll':
      return 16384;
    case 'error':
      return 65536;
    case 'mousewheel':
      return 131072;
    case 'DOMMouseScroll':
      return 131072;
    case 'contextmenu':
      return 262144;
    case 'paste':
      return 524288;
    case 'touchstart':
      return 1048576;
    case 'touchmove':
      return 2097152;
    case 'touchend':
      return 4194304;
    case 'touchcancel':
      return 8388608;
    case 'gesturestart':
      return 16777216;
    case 'gesturechange':
      return 33554432;
    case 'gestureend':
      return 67108864;
    default:return -1;
  }
}
;
_.getEventsSunk = function getEventsSunk_1(elem){
  return elem.__eventBits || 0;
}
;
_.maybeInitializeEventSystem = function maybeInitializeEventSystem_0(){
  if (!cgguci.eventSystemIsInitialized) {
    this.initEventSystem();
    cgguci.eventSystemIsInitialized = true;
  }
}
;
cgguci.eventSystemIsInitialized = false;
cggl.Lcom_google_gwt_user_client_impl_DOMImpl_2_classLit = createForClass('com.google.gwt.user.client.impl', 'DOMImpl', 292, cggl.Ljava_lang_Object_2_classLit);
cgguci.$clinit_DOMImplStandard_0 = function $clinit_DOMImplStandard_0(){
  cgguci.$clinit_DOMImplStandard_0 = emptyMethod;
  cgguci.$clinit_DOMImpl_0();
  cgguci.bitlessEventDispatchers = cgguci.getBitlessEventDispatchers();
  cgguci.captureEventDispatchers = cgguci.getCaptureEventDispatchers();
}
;
cgguci.DOMImplStandard_0 = function DOMImplStandard_0(){
  cgguci.$clinit_DOMImplStandard_0();
  cgguci.DOMImpl_0.call(this);
  this.$init_500();
}
;
cgguci.dispatchCapturedEvent = function dispatchCapturedEvent(evt){
  cgguc.previewEvent(evt);
}
;
cgguci.dispatchCapturedMouseEvent = function dispatchCapturedMouseEvent(evt){
  var cancelled;
  cancelled = !cgguc.previewEvent(evt);
  if (cancelled || isNull(cgguci.captureElem)) {
    return;
  }
  if (cgguc.dispatchEvent_2(evt, cgguci.captureElem)) {
    cggdc.$stopPropagation(evt);
  }
}
;
cgguci.dispatchDragEvent = function dispatchDragEvent(evt){
  cggdc.$preventDefault(evt);
  cgguci.dispatchEvent_5(evt);
}
;
cgguci.dispatchEvent_5 = function dispatchEvent_5(evt){
  var element;
  element = cgguci.getFirstAncestorWithListener(evt);
  if (isNull(element)) {
    return;
  }
  cgguc.dispatchEvent_3(evt, cggdc.$getNodeType(element) != 1?null:element, cgguci.getEventListener_1(element));
}
;
cgguci.dispatchUnhandledEvent_0 = function dispatchUnhandledEvent_0(evt){
  var element;
  element = cggcc.$cast(cggdc.$getCurrentEventTarget(evt));
  cggdc.$setPropertyString_0(element, '__gwtLastUnhandledEvent', cggdc.$getType_1(evt));
  cgguci.dispatchEvent_5(evt);
}
;
cgguci.getBitlessEventDispatchers = function getBitlessEventDispatchers(){
  return {_default_:cgguci.dispatchEvent_5, dragenter:cgguci.dispatchDragEvent, dragover:cgguci.dispatchDragEvent};
}
;
cgguci.getCaptureEventDispatchers = function getCaptureEventDispatchers(){
  return {click:cgguci.dispatchCapturedMouseEvent, dblclick:cgguci.dispatchCapturedMouseEvent, mousedown:cgguci.dispatchCapturedMouseEvent, mouseup:cgguci.dispatchCapturedMouseEvent, mousemove:cgguci.dispatchCapturedMouseEvent, mouseover:cgguci.dispatchCapturedMouseEvent, mouseout:cgguci.dispatchCapturedMouseEvent, mousewheel:cgguci.dispatchCapturedMouseEvent, keydown:cgguci.dispatchCapturedEvent, keyup:cgguci.dispatchCapturedEvent, keypress:cgguci.dispatchCapturedEvent, touchstart:cgguci.dispatchCapturedMouseEvent, touchend:cgguci.dispatchCapturedMouseEvent, touchmove:cgguci.dispatchCapturedMouseEvent, touchcancel:cgguci.dispatchCapturedMouseEvent, gesturestart:cgguci.dispatchCapturedMouseEvent, gestureend:cgguci.dispatchCapturedMouseEvent, gesturechange:cgguci.dispatchCapturedMouseEvent};
}
;
cgguci.getFirstAncestorWithListener = function getFirstAncestorWithListener(evt){
  var curElem;
  curElem = cggcc.$cast(cggdc.$getCurrentEventTarget(evt));
  while (isNotNull(curElem) && isNull(cgguci.getEventListener_1(curElem))) {
    curElem = cggcc.$cast(cggdc.$getParentNode(curElem));
  }
  return curElem;
}
;
defineClass(741, 292, {1:1});
_.$init_500 = function $init_500(){
}
;
_.getChild = function getChild_0(elem, index_0){
  var count = 0, child = elem.firstChild;
  while (child) {
    if (child.nodeType == 1) {
      if (index_0 == count)
        return child;
      ++count;
    }
    child = child.nextSibling;
  }
  return null;
}
;
_.initEventSystem = function initEventSystem(){
  cgguci.dispatchEvent_4 = $entry(cgguci.dispatchEvent_5);
  cgguci.dispatchUnhandledEvent = $entry(cgguci.dispatchUnhandledEvent_0);
  var foreach = cgguci.foreach_0;
  var bitlessEvents = cgguci.bitlessEventDispatchers;
  foreach(bitlessEvents, function(e, fn){
    bitlessEvents[e] = $entry(fn);
  }
  );
  var captureEvents_0 = cgguci.captureEventDispatchers;
  foreach(captureEvents_0, function(e, fn){
    captureEvents_0[e] = $entry(fn);
  }
  );
  foreach(captureEvents_0, function(e, fn){
    $wnd.addEventListener(e, fn, true);
  }
  );
}
;
_.insertChild = function insertChild_0(parent_0, toAdd, index_0){
  var count = 0, child = parent_0.firstChild, before = null;
  while (child) {
    if (child.nodeType == 1) {
      if (count == index_0) {
        before = child;
        break;
      }
      ++count;
    }
    child = child.nextSibling;
  }
  parent_0.insertBefore(toAdd, before);
}
;
_.releaseCapture = function releaseCapture_0(elem){
  this.maybeInitializeEventSystem();
  if (jsEquals(cgguci.captureElem, elem)) {
    cgguci.captureElem = null;
  }
}
;
_.setCapture = function setCapture_0(elem){
  this.maybeInitializeEventSystem();
  cgguci.captureElem = elem;
}
;
_.sinkBitlessEvent_0 = function sinkBitlessEvent_1(elem, eventTypeName){
  this.maybeInitializeEventSystem();
  this.sinkBitlessEventImpl(elem, eventTypeName);
}
;
_.sinkBitlessEventImpl = function sinkBitlessEventImpl(elem, eventTypeName){
  var dispatchMap = cgguci.bitlessEventDispatchers;
  var dispatcher = dispatchMap[eventTypeName] || dispatchMap['_default_'];
  elem.addEventListener(eventTypeName, dispatcher, false);
}
;
_.sinkEvents_0 = function sinkEvents_3(elem, bits){
  this.maybeInitializeEventSystem();
  this.sinkEventsImpl(elem, bits);
}
;
_.sinkEventsImpl = function sinkEventsImpl(elem, bits){
  var chMask = (elem.__eventBits || 0) ^ bits;
  elem.__eventBits = bits;
  if (!chMask)
    return;
  if (chMask & 1)
    elem.onclick = bits & 1?cgguci.dispatchEvent_4:null;
  if (chMask & 2)
    elem.ondblclick = bits & 2?cgguci.dispatchEvent_4:null;
  if (chMask & 4)
    elem.onmousedown = bits & 4?cgguci.dispatchEvent_4:null;
  if (chMask & 8)
    elem.onmouseup = bits & 8?cgguci.dispatchEvent_4:null;
  if (chMask & 16)
    elem.onmouseover = bits & 16?cgguci.dispatchEvent_4:null;
  if (chMask & 32)
    elem.onmouseout = bits & 32?cgguci.dispatchEvent_4:null;
  if (chMask & 64)
    elem.onmousemove = bits & 64?cgguci.dispatchEvent_4:null;
  if (chMask & 128)
    elem.onkeydown = bits & 128?cgguci.dispatchEvent_4:null;
  if (chMask & 256)
    elem.onkeypress = bits & 256?cgguci.dispatchEvent_4:null;
  if (chMask & 512)
    elem.onkeyup = bits & 512?cgguci.dispatchEvent_4:null;
  if (chMask & 1024)
    elem.onchange = bits & 1024?cgguci.dispatchEvent_4:null;
  if (chMask & 2048)
    elem.onfocus = bits & 2048?cgguci.dispatchEvent_4:null;
  if (chMask & 4096)
    elem.onblur = bits & 4096?cgguci.dispatchEvent_4:null;
  if (chMask & 8192)
    elem.onlosecapture = bits & 8192?cgguci.dispatchEvent_4:null;
  if (chMask & 16384)
    elem.onscroll = bits & 16384?cgguci.dispatchEvent_4:null;
  if (chMask & 32768)
    elem.onload = bits & 32768?cgguci.dispatchUnhandledEvent:null;
  if (chMask & 65536)
    elem.onerror = bits & 65536?cgguci.dispatchEvent_4:null;
  if (chMask & 131072)
    elem.onmousewheel = bits & 131072?cgguci.dispatchEvent_4:null;
  if (chMask & 262144)
    elem.oncontextmenu = bits & 262144?cgguci.dispatchEvent_4:null;
  if (chMask & 524288)
    elem.onpaste = bits & 524288?cgguci.dispatchEvent_4:null;
  if (chMask & 1048576)
    elem.ontouchstart = bits & 1048576?cgguci.dispatchEvent_4:null;
  if (chMask & 2097152)
    elem.ontouchmove = bits & 2097152?cgguci.dispatchEvent_4:null;
  if (chMask & 4194304)
    elem.ontouchend = bits & 4194304?cgguci.dispatchEvent_4:null;
  if (chMask & 8388608)
    elem.ontouchcancel = bits & 8388608?cgguci.dispatchEvent_4:null;
  if (chMask & 16777216)
    elem.ongesturestart = bits & 16777216?cgguci.dispatchEvent_4:null;
  if (chMask & 33554432)
    elem.ongesturechange = bits & 33554432?cgguci.dispatchEvent_4:null;
  if (chMask & 67108864)
    elem.ongestureend = bits & 67108864?cgguci.dispatchEvent_4:null;
}
;
cggl.Lcom_google_gwt_user_client_impl_DOMImplStandard_2_classLit = createForClass('com.google.gwt.user.client.impl', 'DOMImplStandard', 741, cggl.Lcom_google_gwt_user_client_impl_DOMImpl_2_classLit);
cgguci.$clinit_DOMImplStandardBase_0 = function $clinit_DOMImplStandardBase_0(){
  cgguci.$clinit_DOMImplStandardBase_0 = emptyMethod;
  cgguci.$clinit_DOMImplStandard_0();
}
;
cgguci.DOMImplStandardBase_0 = function DOMImplStandardBase_0(){
  cgguci.$clinit_DOMImplStandardBase_0();
  cgguci.DOMImplStandard_0.call(this);
  this.$init_501();
}
;
defineClass(742, 741, {1:1});
_.$init_501 = function $init_501(){
}
;
cggl.Lcom_google_gwt_user_client_impl_DOMImplStandardBase_2_classLit = createForClass('com.google.gwt.user.client.impl', 'DOMImplStandardBase', 742, cggl.Lcom_google_gwt_user_client_impl_DOMImplStandard_2_classLit);
cgguci.$clinit_DOMImplWebkit_0 = function $clinit_DOMImplWebkit_0(){
  cgguci.$clinit_DOMImplWebkit_0 = emptyMethod;
  cgguci.$clinit_DOMImplStandardBase_0();
}
;
cgguci.DOMImplWebkit_0 = function DOMImplWebkit_0(){
  cgguci.$clinit_DOMImplWebkit_0();
  cgguci.DOMImplStandardBase_0.call(this);
  this.$init_502();
}
;
defineClass(743, 742, {292:1, 1:1}, cgguci.DOMImplWebkit_0);
_.$init_502 = function $init_502(){
}
;
cggl.Lcom_google_gwt_user_client_impl_DOMImplWebkit_2_classLit = createForClass('com.google.gwt.user.client.impl', 'DOMImplWebkit', 743, cggl.Lcom_google_gwt_user_client_impl_DOMImplStandardBase_2_classLit);
cgguci.$clinit_ElementMapperImpl = function $clinit_ElementMapperImpl(){
  cgguci.$clinit_ElementMapperImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cgguci.ElementMapperImpl = function ElementMapperImpl(){
  cgguci.$clinit_ElementMapperImpl();
  Object_0.call(this);
  this.$init_503();
}
;
cgguci.clearIndex = function clearIndex(elem){
  elem['__uiObjectID'] = null;
}
;
cgguci.getIndex_2 = function getIndex_2(elem){
  var index_0 = elem['__uiObjectID'];
  return index_0 == null?-1:index_0;
}
;
cgguci.setIndex = function setIndex(elem, index_0){
  elem['__uiObjectID'] = index_0;
}
;
defineClass(791, 1, {1:1}, cgguci.ElementMapperImpl);
_.$init_503 = function $init_503(){
  this.freeList = null;
  this.uiObjectList = new ju.ArrayList;
}
;
_.get_4 = function get_24(elem){
  var index_0;
  index_0 = cgguci.getIndex_2(elem);
  if (index_0 < 0) {
    return null;
  }
  return castTo(this.uiObjectList.getAtIndex(index_0), 31);
}
;
_.getObjectList = function getObjectList(){
  return this.uiObjectList;
}
;
_.iterator = function iterator_5(){
  return this.uiObjectList.iterator();
}
;
_.put_0 = function put(uiObject){
  var index_0;
  if (isNull(this.freeList)) {
    index_0 = this.uiObjectList.size();
    this.uiObjectList.add(uiObject);
  }
   else {
    index_0 = this.freeList.index_0;
    this.uiObjectList.setAtIndex(index_0, uiObject);
    this.freeList = this.freeList.next_0;
  }
  cgguci.setIndex(uiObject.getElement(), index_0);
}
;
_.removeByElement = function removeByElement(elem){
  var index_0;
  index_0 = cgguci.getIndex_2(elem);
  this.removeImpl(elem, index_0);
}
;
_.removeImpl = function removeImpl(elem, index_0){
  cgguci.clearIndex(elem);
  this.uiObjectList.setAtIndex(index_0, null);
  this.freeList = new cgguci.ElementMapperImpl$FreeNode(index_0, this.freeList);
}
;
cggl.Lcom_google_gwt_user_client_impl_ElementMapperImpl_2_classLit = createForClass('com.google.gwt.user.client.impl', 'ElementMapperImpl', 791, cggl.Ljava_lang_Object_2_classLit);
cgguci.$clinit_ElementMapperImpl$FreeNode = function $clinit_ElementMapperImpl$FreeNode(){
  cgguci.$clinit_ElementMapperImpl$FreeNode = emptyMethod;
  jl.$clinit_Object();
}
;
cgguci.ElementMapperImpl$FreeNode = function ElementMapperImpl$FreeNode(index_0, next){
  cgguci.$clinit_ElementMapperImpl$FreeNode();
  Object_0.call(this);
  this.$init_504();
  this.index_0 = index_0;
  this.next_0 = next;
}
;
defineClass(792, 1, {1:1}, cgguci.ElementMapperImpl$FreeNode);
_.$init_504 = function $init_504(){
}
;
_.index_0 = 0;
cggl.Lcom_google_gwt_user_client_impl_ElementMapperImpl$FreeNode_2_classLit = createForClass('com.google.gwt.user.client.impl', 'ElementMapperImpl/FreeNode', 792, cggl.Ljava_lang_Object_2_classLit);
cgguci.$clinit_EventMap = function $clinit_EventMap(){
  cgguci.$clinit_EventMap = emptyMethod;
  cggcc.$clinit_JavaScriptObject();
}
;
cgguci.foreach_0 = function foreach_0(map_0, fn){
  cgguci.$clinit_EventMap();
  for (var e in map_0) {
    if (map_0.hasOwnProperty(e)) {
      fn(e, map_0[e]);
    }
  }
}
;
cgguci.$clinit_WindowImpl = function $clinit_WindowImpl(){
  cgguci.$clinit_WindowImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cgguci.WindowImpl = function WindowImpl(){
  cgguci.$clinit_WindowImpl();
  Object_0.call(this);
  this.$init_505();
}
;
defineClass(279, 1, {279:1, 1:1}, cgguci.WindowImpl);
_.$init_505 = function $init_505(){
}
;
_.getHash = function getHash_0(){
  return $wnd.location.hash;
}
;
_.initWindowCloseHandler = function initWindowCloseHandler(){
  var oldOnBeforeUnload = $wnd.onbeforeunload;
  var oldOnUnload = $wnd.onunload;
  $wnd.onbeforeunload = function(evt){
    var ret, oldRet;
    try {
      ret = $entry(cgguc.onClosing)();
    }
     finally {
      oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);
    }
    if (ret != null) {
      return ret;
    }
    if (oldRet != null) {
      return oldRet;
    }
  }
  ;
  $wnd.onunload = $entry(function(evt){
    try {
      cgguc.onClosed();
    }
     finally {
      oldOnUnload && oldOnUnload(evt);
      $wnd.onresize = null;
      $wnd.onscroll = null;
      $wnd.onbeforeunload = null;
      $wnd.onunload = null;
    }
  }
  );
}
;
_.initWindowResizeHandler = function initWindowResizeHandler(){
  var oldOnResize = $wnd.onresize;
  $wnd.onresize = $entry(function(evt){
    try {
      cgguc.onResize_1();
    }
     finally {
      oldOnResize && oldOnResize(evt);
    }
  }
  );
}
;
cggl.Lcom_google_gwt_user_client_impl_WindowImpl_2_classLit = createForClass('com.google.gwt.user.client.impl', 'WindowImpl', 279, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_IndexedPanel = function $clinit_IndexedPanel(){
  cggucu.$clinit_IndexedPanel = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_IndexedPanel_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'IndexedPanel');
cggucu.$clinit_IndexedPanel$ForIsWidget = function $clinit_IndexedPanel$ForIsWidget(){
  cggucu.$clinit_IndexedPanel$ForIsWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_IndexedPanel$ForIsWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'IndexedPanel/ForIsWidget');
cggucu.$clinit_ComplexPanel = function $clinit_ComplexPanel(){
  cggucu.$clinit_ComplexPanel = emptyMethod;
  cggucu.$clinit_Panel();
}
;
cggucu.ComplexPanel = function ComplexPanel(){
  cggucu.$clinit_ComplexPanel();
  cggucu.Panel.call(this);
  this.$init_506();
}
;
defineClass(201, 278, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_506 = function $init_506(){
  this.children = new cggucu.WidgetCollection(this);
}
;
_.add_11 = function add_23(child, container){
  this.add_12(child, cgguc.asOld(container));
}
;
_.add_12 = function add_24(child, container){
  child.removeFromParent();
  this.getChildren().add_8(child);
  cgguc.appendChild(container, child.getElement());
  this.adopt(child);
}
;
_.adjustIndex = function adjustIndex(child, beforeIndex){
  var idx;
  this.checkIndexBoundsForInsertion(beforeIndex);
  if (jsEquals(child.getParent(), this)) {
    idx = this.getWidgetIndex(child);
    if (idx < beforeIndex) {
      beforeIndex--;
    }
  }
  return beforeIndex;
}
;
_.checkIndexBoundsForInsertion = function checkIndexBoundsForInsertion(index_0){
  if (index_0 < 0 || index_0 > this.getWidgetCount()) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
}
;
_.getChildren = function getChildren(){
  return this.children;
}
;
_.getWidgetCount = function getWidgetCount(){
  return this.getChildren().size_1();
}
;
_.getWidgetIndex = function getWidgetIndex(child){
  return this.getChildren().indexOf_1(child);
}
;
_.insert = function insert(child, container, beforeIndex, domInsert){
  this.insert_0(child, cgguc.asOld(container), beforeIndex, domInsert);
}
;
_.insert_0 = function insert_0(child, container, beforeIndex, domInsert){
  beforeIndex = this.adjustIndex(child, beforeIndex);
  child.removeFromParent();
  this.getChildren().insert_1(child, beforeIndex);
  if (domInsert) {
    cgguc.insertChild(container, child.getElement(), beforeIndex);
  }
   else {
    cgguc.appendChild(container, child.getElement());
  }
  this.adopt(child);
}
;
_.iterator = function iterator_6(){
  return this.getChildren().iterator();
}
;
_.remove_0 = function remove_9(w){
  var elem;
  if (jsNotEquals(w.getParent(), this)) {
    return false;
  }
  try {
    this.orphan(w);
  }
   finally {
    elem = w.getElement();
    cggdc.$removeChild(cgguc.getParent_0(elem), elem);
    this.getChildren().remove_5(w);
  }
  return true;
}
;
cggl.Lcom_google_gwt_user_client_ui_ComplexPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ComplexPanel', 201, cggl.Lcom_google_gwt_user_client_ui_Panel_2_classLit);
cggucu.$clinit_InsertPanel = function $clinit_InsertPanel(){
  cggucu.$clinit_InsertPanel = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_InsertPanel_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'InsertPanel');
cggucu.$clinit_InsertPanel$ForIsWidget = function $clinit_InsertPanel$ForIsWidget(){
  cggucu.$clinit_InsertPanel$ForIsWidget = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_InsertPanel$ForIsWidget_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'InsertPanel/ForIsWidget');
cggucu.$clinit_AbsolutePanel = function $clinit_AbsolutePanel(){
  cggucu.$clinit_AbsolutePanel = emptyMethod;
  cggucu.$clinit_ComplexPanel();
}
;
cggucu.AbsolutePanel = function AbsolutePanel(elem){
  cggucu.$clinit_AbsolutePanel();
  cggucu.ComplexPanel.call(this);
  this.$init_507();
  this.setElement(elem);
}
;
cggucu.changeToStaticPositioning = function changeToStaticPositioning(elem){
  cggdc.$setProperty_0(cggdc.$getStyle(elem), 'left', '');
  cggdc.$setProperty_0(cggdc.$getStyle(elem), 'top', '');
  cggdc.$setProperty_0(cggdc.$getStyle(elem), 'position', '');
}
;
defineClass(621, 201, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_507 = function $init_507(){
}
;
_.add_8 = function add_25(w){
  getClassPrototype(201).add_12.call(this, w, this.getElement());
}
;
_.insert_1 = function insert_1(w, beforeIndex){
  this.insert_0(w, this.getElement(), beforeIndex, true);
}
;
_.remove_0 = function remove_10(w){
  var removed;
  removed = getClassPrototype(201).remove_0.call(this, w);
  if (removed) {
    cggucu.changeToStaticPositioning(w.getElement());
  }
  return removed;
}
;
cggl.Lcom_google_gwt_user_client_ui_AbsolutePanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'AbsolutePanel', 621, cggl.Lcom_google_gwt_user_client_ui_ComplexPanel_2_classLit);
cggucu.$clinit_AttachDetachException = function $clinit_AttachDetachException(){
  cggucu.$clinit_AttachDetachException = emptyMethod;
  cgges.$clinit_UmbrellaException_0();
  cggucu.attachCommand = new cggucu.AttachDetachException$1;
  cggucu.detachCommand = new cggucu.AttachDetachException$2;
}
;
cggucu.AttachDetachException = function AttachDetachException(causes){
  cgges.UmbrellaException_0.call(this, causes);
  this.$init_508();
}
;
cggucu.tryCommand = function tryCommand(hasWidgets, c){
  cggucu.$clinit_AttachDetachException();
  var caught, e, w, w$iterator;
  caught = null;
  for (w$iterator = hasWidgets.iterator(); w$iterator.hasNext_0();) {
    w = castTo(w$iterator.next_3(), 22);
    try {
      c.execute_3(w);
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 20)) {
        e = $e0;
        if (isNull(caught)) {
          caught = new ju.HashSet;
        }
        caught.add(e);
      }
       else 
        throw toJs($e0);
    }
  }
  if (isNotNull(caught)) {
    throw toJs(new cggucu.AttachDetachException(caught));
  }
}
;
defineClass(625, 341, {174:1, 4:1, 14:1, 1:1, 23:1, 20:1}, cggucu.AttachDetachException);
_.$init_508 = function $init_508(){
}
;
cggl.Lcom_google_gwt_user_client_ui_AttachDetachException_2_classLit = createForClass('com.google.gwt.user.client.ui', 'AttachDetachException', 625, cggl.Lcom_google_gwt_event_shared_UmbrellaException_2_classLit);
cggucu.$clinit_AttachDetachException$Command = function $clinit_AttachDetachException$Command(){
  cggucu.$clinit_AttachDetachException$Command = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_AttachDetachException$Command_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'AttachDetachException/Command');
cggucu.$clinit_AttachDetachException$1 = function $clinit_AttachDetachException$1(){
  cggucu.$clinit_AttachDetachException$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.AttachDetachException$1 = function AttachDetachException$1(){
  cggucu.$clinit_AttachDetachException$1();
  Object_0.call(this);
  this.$init_509();
}
;
defineClass(626, 1, {1:1}, cggucu.AttachDetachException$1);
_.$init_509 = function $init_509(){
}
;
_.execute_3 = function execute_5(w){
  w.onAttach();
}
;
cggl.Lcom_google_gwt_user_client_ui_AttachDetachException$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'AttachDetachException/1', 626, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_AttachDetachException$2 = function $clinit_AttachDetachException$2(){
  cggucu.$clinit_AttachDetachException$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.AttachDetachException$2 = function AttachDetachException$2(){
  cggucu.$clinit_AttachDetachException$2();
  Object_0.call(this);
  this.$init_510();
}
;
defineClass(627, 1, {1:1}, cggucu.AttachDetachException$2);
_.$init_510 = function $init_510(){
}
;
_.execute_3 = function execute_6(w){
  w.onDetach();
}
;
cggl.Lcom_google_gwt_user_client_ui_AttachDetachException$2_2_classLit = createForClass('com.google.gwt.user.client.ui', 'AttachDetachException/2', 627, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_ButtonBase = function $clinit_ButtonBase(){
  cggucu.$clinit_ButtonBase = emptyMethod;
  cggucu.$clinit_FocusWidget();
}
;
cggucu.ButtonBase = function ButtonBase(elem){
  cggucu.$clinit_ButtonBase();
  cggucu.FocusWidget_0.call(this, elem);
  this.$init_511();
}
;
defineClass(386, 227, {37:1, 31:1, 22:1, 1:1});
_.$init_511 = function $init_511(){
}
;
_.getText = function getText_2(){
  return cggdc.$getInnerText(this.getElement());
}
;
_.setHTML = function setHTML_1(html){
  this.setHTML_0(html.asString());
}
;
_.setHTML_0 = function setHTML_2(html){
  cggdc.$setInnerHTML(this.getElement(), html);
}
;
_.setText = function setText_1(text_0){
  cggdc.$setInnerText(this.getElement(), text_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_ButtonBase_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ButtonBase', 386, cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit);
cggucu.$clinit_Button = function $clinit_Button(){
  cggucu.$clinit_Button = emptyMethod;
  cggucu.$clinit_ButtonBase();
}
;
cggucu.Button = function Button(){
  cggucu.ButtonBase.call(this, cggdc.$createPushButtonElement(cggdc.get_19()));
  this.$init_512();
  this.setStyleName('gwt-Button');
}
;
cggucu.Button_0 = function Button_0(html){
  cggucu.$clinit_Button();
  cggucu.Button.call(this);
  this.setHTML_0(html);
}
;
defineClass(162, 386, {37:1, 31:1, 22:1, 1:1}, cggucu.Button_0);
_.$init_512 = function $init_512(){
}
;
cggl.Lcom_google_gwt_user_client_ui_Button_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Button', 162, cggl.Lcom_google_gwt_user_client_ui_ButtonBase_2_classLit);
cggucu.$clinit_CellPanel = function $clinit_CellPanel(){
  cggucu.$clinit_CellPanel = emptyMethod;
  cggucu.$clinit_ComplexPanel();
}
;
cggucu.CellPanel = function CellPanel(){
  cggucu.$clinit_CellPanel();
  cggucu.ComplexPanel.call(this);
  this.$init_513();
  this.table = cgguc.createTable();
  this.body_0 = cgguc.createTBody();
  cgguc.appendChild(this.table, this.body_0);
  this.setElement(this.table);
}
;
defineClass(788, 201, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_513 = function $init_513(){
}
;
_.getBody = function getBody(){
  return cgguc.asOld(this.body_0);
}
;
_.getTable = function getTable(){
  return cgguc.asOld(this.table);
}
;
_.setCellHorizontalAlignment = function setCellHorizontalAlignment(td, align_0){
  this.setCellHorizontalAlignment_0(cgguc.asOld(td), align_0);
}
;
_.setCellHorizontalAlignment_0 = function setCellHorizontalAlignment_0(td, align_0){
  cggdc.$setPropertyString_0(td, 'align', align_0.getTextAlignString());
}
;
_.setCellVerticalAlignment = function setCellVerticalAlignment(td, align_0){
  this.setCellVerticalAlignment_0(cgguc.asOld(td), align_0);
}
;
_.setCellVerticalAlignment_0 = function setCellVerticalAlignment_0(td, align_0){
  cggdc.$setProperty_0(cggdc.$getStyle(td), 'verticalAlign', align_0.getVerticalAlignString());
}
;
cggl.Lcom_google_gwt_user_client_ui_CellPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'CellPanel', 788, cggl.Lcom_google_gwt_user_client_ui_ComplexPanel_2_classLit);
cggucu.$clinit_HasValue = function $clinit_HasValue(){
  cggucu.$clinit_HasValue = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasValue_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasValue');
cggucu.$clinit_HasWordWrap = function $clinit_HasWordWrap(){
  cggucu.$clinit_HasWordWrap = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasWordWrap_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasWordWrap');
cggucu.$clinit_HasDirectionalText = function $clinit_HasDirectionalText(){
  cggucu.$clinit_HasDirectionalText = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasDirectionalText_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasDirectionalText');
cggucu.$clinit_HasDirectionalSafeHtml = function $clinit_HasDirectionalSafeHtml(){
  cggucu.$clinit_HasDirectionalSafeHtml = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasDirectionalSafeHtml_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasDirectionalSafeHtml');
cggucu.$clinit_CheckBox = function $clinit_CheckBox(){
  cggucu.$clinit_CheckBox = emptyMethod;
  cggucu.$clinit_ButtonBase();
  cggucu.DEFAULT_DIRECTION_ESTIMATOR_0 = (cggucu.$clinit_DirectionalTextHelper() , cggucu.DEFAULT_DIRECTION_ESTIMATOR_2);
}
;
cggucu.CheckBox = function CheckBox(){
  cggucu.CheckBox_0.call(this, cgguc.createInputCheck());
  this.setStyleName('gwt-CheckBox');
}
;
cggucu.CheckBox_0 = function CheckBox_0(elem){
  var uid;
  cggucu.ButtonBase.call(this, cgguc.createSpan());
  this.$init_514();
  this.inputElem = cggdc.as_1(elem);
  this.labelElem = cggdc.$createLabelElement(cggdc.get_19());
  cggdc.$appendChild(this.getElement(), this.inputElem);
  cggdc.$appendChild(this.getElement(), this.labelElem);
  uid = cgguc.createUniqueId();
  cggdc.$setPropertyString_0(this.inputElem, 'id', uid);
  cggdc.$setHtmlFor(this.labelElem, uid);
  this.directionalTextHelper = new cggucu.DirectionalTextHelper(this.labelElem, true);
  this.setTabIndex(0);
}
;
cggucu.CheckBox_1 = function CheckBox_1(label_0){
  cggucu.$clinit_CheckBox();
  cggucu.CheckBox.call(this);
  this.setText(label_0);
}
;
defineClass(78, 386, {37:1, 31:1, 22:1, 1:1}, cggucu.CheckBox_1);
_.$init_514 = function $init_514(){
}
;
_.getValue_1 = function getValue_6(){
  return this.getValue_2();
}
;
_.addValueChangeHandler = function addValueChangeHandler_1(handler){
  if (!this.valueChangeHandlerInitialized) {
    this.ensureDomEventHandlers();
    this.valueChangeHandlerInitialized = true;
  }
  return this.addHandler(handler, cggels.getType_37());
}
;
_.ensureDomEventHandlers = function ensureDomEventHandlers(){
  this.addClickHandler(new cggucu.CheckBox$1(this));
}
;
_.getName_0 = function getName_9(){
  return cggdc.$getName_0(this.inputElem);
}
;
_.getTabIndex = function getTabIndex_2(){
  return cggdc.$getTabIndex(this.inputElem);
}
;
_.getText = function getText_3(){
  return this.directionalTextHelper.getText();
}
;
_.getTextDirection = function getTextDirection(){
  return this.directionalTextHelper.getTextDirection();
}
;
_.getValue_2 = function getValue_5(){
  if (this.isAttached()) {
    return jl.valueOf_20(cggdc.$isChecked(this.inputElem));
  }
   else {
    return jl.valueOf_20(cggdc.$isDefaultChecked(this.inputElem));
  }
}
;
_.isChecked = function isChecked(){
  return jl.booleanValue__Z__devirtual$(this.getValue_2()) == true;
}
;
_.isEnabled = function isEnabled_0(){
  return !cggdc.$isDisabled_0(this.inputElem);
}
;
_.onLoad_0 = function onLoad_6(){
  cgguc.setEventListener(this.inputElem, this);
}
;
_.onUnload = function onUnload_1(){
  cgguc.setEventListener(this.inputElem, null);
  this.setValue_1(this.getValue_2());
}
;
_.setChecked = function setChecked(checked){
  this.setValue_1(jl.valueOf_20(checked));
}
;
_.setDirectionEstimator = function setDirectionEstimator_1(directionEstimator){
  this.directionalTextHelper.setDirectionEstimator(directionEstimator);
}
;
_.setEnabled = function setEnabled_0(enabled){
  cggdc.$setDisabled_0(this.inputElem, !enabled);
  if (enabled) {
    this.removeStyleDependentName('disabled');
  }
   else {
    this.addStyleDependentName('disabled');
  }
}
;
_.setFocus = function setFocus_0(focused){
  if (focused) {
    cggdc.$focus(this.inputElem);
  }
   else {
    cggdc.$blur(this.inputElem);
  }
}
;
_.setHTML_0 = function setHTML_3(html){
  this.directionalTextHelper.setHtml(html);
}
;
_.setName_0 = function setName_5(name_0){
  cggdc.$setName_0(this.inputElem, name_0);
}
;
_.setTabIndex = function setTabIndex_0(index_0){
  if (isNotNull(this.inputElem)) {
    cggdc.$setTabIndex(this.inputElem, index_0);
  }
}
;
_.setText = function setText_2(text_0){
  this.directionalTextHelper.setText(text_0);
}
;
_.setValue_1 = function setValue_1(value_0){
  this.setValue_2(value_0, false);
}
;
_.setValue_2 = function setValue_2(value_0, fireEvents){
  var oldValue;
  if (jsEquals(value_0, null)) {
    value_0 = (jl.$clinit_Boolean() , FALSE_0);
  }
  oldValue = this.getValue_2();
  cggdc.$setChecked(this.inputElem, jl.booleanValue__Z__devirtual$(value_0));
  cggdc.$setDefaultChecked(this.inputElem, jl.booleanValue__Z__devirtual$(value_0));
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_0(value_0, oldValue)) {
    return;
  }
  if (fireEvents) {
    cggels.fire_4(this, value_0);
  }
}
;
_.sinkEvents = function sinkEvents_4(eventBitsToAdd){
  if (this.isOrWasAttached()) {
    cgguc.sinkEvents_2(this.inputElem, eventBitsToAdd | cgguc.getEventsSunk_0(this.inputElem));
  }
   else {
    getClassPrototype(22).sinkEvents.call(this, eventBitsToAdd);
  }
}
;
_.valueChangeHandlerInitialized = false;
cggl.Lcom_google_gwt_user_client_ui_CheckBox_2_classLit = createForClass('com.google.gwt.user.client.ui', 'CheckBox', 78, cggl.Lcom_google_gwt_user_client_ui_ButtonBase_2_classLit);
cggucu.$clinit_CheckBox$1 = function $clinit_CheckBox$1(){
  cggucu.$clinit_CheckBox$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.CheckBox$1 = function CheckBox$1(this$0){
  cggucu.$clinit_CheckBox$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_515();
}
;
defineClass(789, 1, {114:1, 21:1, 1:1}, cggucu.CheckBox$1);
_.$init_515 = function $init_515(){
}
;
_.onClick = function onClick_8(event_0){
  cggels.fire_4(this.this$01, this.this$01.getValue_2());
}
;
cggl.Lcom_google_gwt_user_client_ui_CheckBox$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'CheckBox/1', 789, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_ComplexPanel$1 = function $clinit_ComplexPanel$1(){
  cggucu.$clinit_ComplexPanel$1 = emptyMethod;
}
;
defineClass(1130, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_ComplexPanel$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ComplexPanel/1', 1130, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_DecoratorPanel = function $clinit_DecoratorPanel(){
  cggucu.$clinit_DecoratorPanel = emptyMethod;
  cggucu.$clinit_SimplePanel();
  cggucu.DEFAULT_ROW_STYLENAMES = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['top', 'middle', 'bottom']);
}
;
cggucu.DecoratorPanel = function DecoratorPanel(rowStyles, containerIndex){
  cggucu.$clinit_DecoratorPanel();
  var i, row, table;
  cggucu.SimplePanel_0.call(this, cgguc.createTable());
  this.$init_516();
  table = this.getElement();
  this.tbody = cgguc.createTBody();
  cgguc.appendChild(table, this.tbody);
  cggdc.$setPropertyInt_0(table, 'cellSpacing', 0);
  cggdc.$setPropertyInt_0(table, 'cellPadding', 0);
  for (i = 0; i < rowStyles.length; i++) {
    row = cggucu.createTR_0(rowStyles[i]);
    cgguc.appendChild(this.tbody, row);
    if (i == containerIndex) {
      this.containerElem = cgguc.getFirstChild(cgguc.getChild(row, 1));
    }
  }
  this.setStyleName('gwt-DecoratorPanel');
}
;
cggucu.createTD_0 = function createTD_0(styleName){
  var inner, tdElem;
  tdElem = cgguc.createTD();
  inner = cgguc.createDiv();
  cgguc.appendChild(tdElem, inner);
  cggucu.setStyleName(tdElem, styleName);
  cggucu.setStyleName(inner, styleName + 'Inner');
  return tdElem;
}
;
cggucu.createTR_0 = function createTR_0(styleName){
  var trElem;
  trElem = cgguc.createTR();
  cggucu.setStyleName(trElem, styleName);
  if (cggic.getCurrentLocale().isRTL_0()) {
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Right'));
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Center'));
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Left'));
  }
   else {
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Left'));
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Center'));
    cgguc.appendChild(trElem, cggucu.createTD_0(styleName + 'Right'));
  }
  return trElem;
}
;
defineClass(776, 138, {37:1, 55:1, 31:1, 22:1, 1:1}, cggucu.DecoratorPanel);
_.$init_516 = function $init_516(){
}
;
_.getCellElement = function getCellElement_0(row, cell){
  var td, tr;
  tr = cgguc.getChild(this.tbody, row);
  td = cgguc.getChild(tr, cell);
  return cgguc.asOld(cgguc.getFirstChild(td));
}
;
_.getContainerElement = function getContainerElement_1(){
  return cgguc.asOld(this.containerElem);
}
;
cggucu.DEFAULT_STYLENAME_2 = 'gwt-DecoratorPanel';
cggl.Lcom_google_gwt_user_client_ui_DecoratorPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DecoratorPanel', 776, cggl.Lcom_google_gwt_user_client_ui_SimplePanel_2_classLit);
cggucu.$clinit_DialogBox$1 = function $clinit_DialogBox$1(){
  cggucu.$clinit_DialogBox$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.DialogBox$1 = function DialogBox$1(this$0){
  cggucu.$clinit_DialogBox$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_517();
}
;
defineClass(761, 1, {215:1, 21:1, 1:1}, cggucu.DialogBox$1);
_.$init_517 = function $init_517(){
}
;
_.onResize = function onResize_2(event_0){
  this.this$01.windowWidth = event_0.getWidth_1();
}
;
cggl.Lcom_google_gwt_user_client_ui_DialogBox$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DialogBox/1', 761, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_DialogBox$Caption = function $clinit_DialogBox$Caption(){
  cggucu.$clinit_DialogBox$Caption = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_DialogBox$Caption_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'DialogBox/Caption');
cggucu.$clinit_HasHorizontalAlignment = function $clinit_HasHorizontalAlignment(){
  cggucu.$clinit_HasHorizontalAlignment = emptyMethod;
  cggucu.ALIGN_CENTER = new cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant((cggdc.$clinit_Style$TextAlign() , cggdc.CENTER_0).getCssName());
  cggucu.ALIGN_JUSTIFY = new cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant((cggdc.$clinit_Style$TextAlign() , cggdc.JUSTIFY).getCssName());
  cggucu.ALIGN_LEFT = new cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant((cggdc.$clinit_Style$TextAlign() , cggdc.LEFT_0).getCssName());
  cggucu.ALIGN_RIGHT = new cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant((cggdc.$clinit_Style$TextAlign() , cggdc.RIGHT_0).getCssName());
  cggucu.ALIGN_LOCALE_START = isClient() && cggic.getCurrentLocale().isRTL_0()?cggucu.ALIGN_RIGHT:cggucu.ALIGN_LEFT;
  cggucu.ALIGN_LOCALE_END = isClient() && cggic.getCurrentLocale().isRTL_0()?cggucu.ALIGN_LEFT:cggucu.ALIGN_RIGHT;
  cggucu.ALIGN_DEFAULT = cggucu.ALIGN_LOCALE_START;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasHorizontalAlignment_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasHorizontalAlignment');
cggucu.$clinit_HasAutoHorizontalAlignment = function $clinit_HasAutoHorizontalAlignment(){
  cggucu.$clinit_HasAutoHorizontalAlignment = emptyMethod;
  cggucu.ALIGN_CONTENT_START = new cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant;
  cggucu.ALIGN_CONTENT_END = new cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasAutoHorizontalAlignment_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasAutoHorizontalAlignment');
cggucu.$clinit_LabelBase = function $clinit_LabelBase(){
  cggucu.$clinit_LabelBase = emptyMethod;
  cggucu.$clinit_Widget();
}
;
cggucu.LabelBase = function LabelBase(element){
  cggucu.$clinit_LabelBase();
  cggucu.LabelBase_0.call(this, element, jl.equalsIgnoreCase_Ljava_lang_String__Z__devirtual$('span', cggdc.$getTagName(element)));
}
;
cggucu.LabelBase_0 = function LabelBase_0(element, isElementInline){
  cggucu.Widget.call(this);
  this.$init_518();
  this.setElement(element);
  this.directionalTextHelper = new cggucu.DirectionalTextHelper(this.getElement(), isElementInline);
}
;
cggucu.LabelBase_1 = function LabelBase_1(inline){
  cggucu.$clinit_LabelBase();
  cggucu.LabelBase_0.call(this, inline?cggdc.$createSpanElement(cggdc.get_19()):cggdc.$createDivElement(cggdc.get_19()), inline);
}
;
defineClass(245, 22, {37:1, 31:1, 22:1, 1:1});
_.$init_518 = function $init_518(){
}
;
_.setAutoHorizontalAlignment = function setAutoHorizontalAlignment(autoAlignment){
  this.autoHorizontalAlignment = autoAlignment;
  this.updateHorizontalAlignment();
}
;
_.setDirectionEstimator = function setDirectionEstimator_2(directionEstimator){
  this.directionalTextHelper.setDirectionEstimator(directionEstimator);
  this.updateHorizontalAlignment();
}
;
_.setHorizontalAlignment = function setHorizontalAlignment(align_0){
  this.setAutoHorizontalAlignment(align_0);
}
;
_.updateHorizontalAlignment = function updateHorizontalAlignment(){
  var align_0;
  if (isNull(this.autoHorizontalAlignment)) {
    align_0 = null;
  }
   else if (instanceOf(this.autoHorizontalAlignment, 161)) {
    align_0 = castTo(this.autoHorizontalAlignment, 161);
  }
   else {
    align_0 = jsEquals(this.autoHorizontalAlignment, (cggucu.$clinit_HasAutoHorizontalAlignment() , cggucu.ALIGN_CONTENT_START))?cggucu.startOf(this.directionalTextHelper.getTextDirection()):cggucu.endOf(this.directionalTextHelper.getTextDirection());
  }
  if (jsNotEquals(align_0, this.horzAlign)) {
    this.horzAlign = align_0;
    cggdc.$setProperty_0(cggdc.$getStyle(this.getElement()), 'textAlign', isNull(this.horzAlign)?'':this.horzAlign.getTextAlignString());
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_LabelBase_2_classLit = createForClass('com.google.gwt.user.client.ui', 'LabelBase', 245, cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit);
cggucu.$clinit_Label = function $clinit_Label(){
  cggucu.$clinit_Label = emptyMethod;
  cggucu.$clinit_LabelBase();
  cggucu.DEFAULT_DIRECTION_ESTIMATOR_1 = (cggucu.$clinit_DirectionalTextHelper() , cggucu.DEFAULT_DIRECTION_ESTIMATOR_2);
}
;
cggucu.Label = function Label(){
  cggucu.LabelBase_1.call(this, false);
  this.$init_519();
  this.setStyleName('gwt-Label');
}
;
cggucu.Label_0 = function Label_0(element){
  cggucu.$clinit_Label();
  cggucu.LabelBase.call(this, element);
  this.$init_519();
}
;
cggucu.Label_1 = function Label_1(text_0){
  cggucu.$clinit_Label();
  cggucu.Label.call(this);
  this.setText(text_0);
}
;
defineClass(120, 245, {37:1, 31:1, 22:1, 1:1}, cggucu.Label_1);
_.$init_519 = function $init_519(){
}
;
_.addClickHandler = function addClickHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler_0(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.addMouseDownHandler = function addMouseDownHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_26());
}
;
_.addMouseMoveHandler = function addMouseMoveHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_27());
}
;
_.addMouseOutHandler = function addMouseOutHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_28());
}
;
_.addMouseUpHandler = function addMouseUpHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_30());
}
;
_.addTouchCancelHandler = function addTouchCancelHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_31());
}
;
_.addTouchEndHandler = function addTouchEndHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_32());
}
;
_.addTouchMoveHandler = function addTouchMoveHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_33());
}
;
_.addTouchStartHandler = function addTouchStartHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_34());
}
;
_.getDirection = function getDirection(){
  return cggic.getDirectionOnElement(this.getElement());
}
;
_.getText = function getText_4(){
  return this.directionalTextHelper.getText();
}
;
_.getTextDirection = function getTextDirection_0(){
  return this.directionalTextHelper.getTextDirection();
}
;
_.setDirection = function setDirection(direction){
  this.directionalTextHelper.setDirection(direction);
  this.updateHorizontalAlignment();
}
;
_.setText = function setText_3(text_0){
  this.directionalTextHelper.setText(text_0);
  this.updateHorizontalAlignment();
}
;
cggl.Lcom_google_gwt_user_client_ui_Label_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Label', 120, cggl.Lcom_google_gwt_user_client_ui_LabelBase_2_classLit);
cggucu.$clinit_HasDirectionalHtml = function $clinit_HasDirectionalHtml(){
  cggucu.$clinit_HasDirectionalHtml = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasDirectionalHtml_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasDirectionalHtml');
cggucu.$clinit_HTML = function $clinit_HTML(){
  cggucu.$clinit_HTML = emptyMethod;
  cggucu.$clinit_Label();
}
;
cggucu.HTML = function HTML(){
  cggucu.$clinit_HTML();
  cggucu.Label_0.call(this, cggdc.$createDivElement(cggdc.get_19()));
  this.$init_520();
  this.setStyleName('gwt-HTML');
}
;
defineClass(758, 120, {37:1, 31:1, 22:1, 1:1});
_.$init_520 = function $init_520(){
}
;
_.getTextOrHtml = function getTextOrHtml(isHtml){
  return this.directionalTextHelper.getTextOrHtml(isHtml);
}
;
_.setHTML = function setHTML_4(html){
  this.setHTML_0(html.asString());
}
;
_.setHTML_0 = function setHTML_5(html){
  this.directionalTextHelper.setHtml(html);
  this.updateHorizontalAlignment();
}
;
cggl.Lcom_google_gwt_user_client_ui_HTML_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTML', 758, cggl.Lcom_google_gwt_user_client_ui_Label_2_classLit);
cggucu.$clinit_DialogBox$CaptionImpl = function $clinit_DialogBox$CaptionImpl(){
  cggucu.$clinit_DialogBox$CaptionImpl = emptyMethod;
  cggucu.$clinit_HTML();
}
;
cggucu.DialogBox$CaptionImpl = function DialogBox$CaptionImpl(){
  cggucu.$clinit_DialogBox$CaptionImpl();
  cggucu.HTML.call(this);
  this.$init_521();
  this.setStyleName('Caption');
}
;
defineClass(759, 758, {37:1, 31:1, 22:1, 1:1}, cggucu.DialogBox$CaptionImpl);
_.$init_521 = function $init_521(){
}
;
cggl.Lcom_google_gwt_user_client_ui_DialogBox$CaptionImpl_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DialogBox/CaptionImpl', 759, cggl.Lcom_google_gwt_user_client_ui_HTML_2_classLit);
cggucu.$clinit_DialogBox$MouseHandler = function $clinit_DialogBox$MouseHandler(){
  cggucu.$clinit_DialogBox$MouseHandler = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.DialogBox$MouseHandler = function DialogBox$MouseHandler(this$0){
  cggucu.$clinit_DialogBox$MouseHandler();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_522();
}
;
defineClass(760, 1, {217:1, 265:1, 319:1, 1350:1, 218:1, 21:1, 1:1}, cggucu.DialogBox$MouseHandler);
_.$init_522 = function $init_522(){
}
;
_.onMouseDown = function onMouseDown_11(event_0){
  this.this$01.beginDragging(event_0);
}
;
_.onMouseMove = function onMouseMove_9(event_0){
  this.this$01.continueDragging(event_0);
}
;
_.onMouseOut = function onMouseOut_1(event_0){
  this.this$01.onMouseLeave(this.this$01.caption.asWidget());
}
;
_.onMouseOver = function onMouseOver(event_0){
  this.this$01.onMouseEnter(this.this$01.caption.asWidget());
}
;
_.onMouseUp = function onMouseUp_17(event_0){
  this.this$01.endDragging(event_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_DialogBox$MouseHandler_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DialogBox/MouseHandler', 760, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_DirectionalTextHelper = function $clinit_DirectionalTextHelper(){
  cggucu.$clinit_DirectionalTextHelper = emptyMethod;
  jl.$clinit_Object();
  cggucu.DEFAULT_DIRECTION_ESTIMATOR_2 = cggis.get_23();
}
;
cggucu.DirectionalTextHelper = function DirectionalTextHelper(element, isElementInline){
  cggucu.$clinit_DirectionalTextHelper();
  Object_0.call(this);
  this.$init_523();
  this.element = element;
  this.isElementInline = isElementInline;
  this.isSpanWrapped = false;
  this.initialElementDir = cggic.getDirectionOnElement(element);
  this.textDir = this.initialElementDir;
  this.isDirectionExplicitlySet = true;
}
;
defineClass(390, 1, {1:1}, cggucu.DirectionalTextHelper);
_.$init_523 = function $init_523(){
}
;
_.getHtml = function getHtml(){
  return this.getTextOrHtml(true);
}
;
_.getText = function getText_5(){
  return this.getTextOrHtml(false);
}
;
_.getTextDirection = function getTextDirection_1(){
  return this.textDir;
}
;
_.getTextOrHtml = function getTextOrHtml_0(isHtml){
  var elem;
  elem = this.isSpanWrapped?cggdc.$getFirstChildElement(this.element):this.element;
  return isHtml?cggdc.$getInnerHTML(elem):cggdc.$getInnerText(elem);
}
;
_.setDirection = function setDirection_0(direction){
  cggic.setDirectionOnElement(this.element, direction);
  this.initialElementDir = direction;
  this.setInnerTextOrHtml(this.getHtml(), true);
  this.isSpanWrapped = false;
  this.textDir = this.initialElementDir;
  this.isDirectionExplicitlySet = true;
}
;
_.setDirectionEstimator = function setDirectionEstimator_3(directionEstimator){
  this.directionEstimator = directionEstimator;
  if (!this.isDirectionExplicitlySet) {
    this.setHtml(this.getHtml());
  }
}
;
_.setHtml = function setHtml(content_0){
  this.setTextOrHtml_0(content_0, true);
}
;
_.setInnerTextOrHtml = function setInnerTextOrHtml(content_0, isHtml){
  if (isHtml) {
    cggdc.$setInnerHTML(this.element, content_0);
  }
   else {
    cggdc.$setInnerText(this.element, content_0);
  }
}
;
_.setText = function setText_4(content_0){
  this.setTextOrHtml_0(content_0, false);
}
;
_.setTextOrHtml = function setTextOrHtml(content_0, dir_0, isHtml){
  this.textDir = dir_0;
  if (this.isElementInline) {
    this.isSpanWrapped = true;
    cggdc.$setInnerHTML(this.element, cggis.getInstanceForCurrentLocale_0(true).spanWrapWithKnownDir(dir_0, content_0, isHtml));
  }
   else {
    this.isSpanWrapped = false;
    cggic.setDirectionOnElement(this.element, dir_0);
    this.setInnerTextOrHtml(content_0, isHtml);
  }
  this.isDirectionExplicitlySet = true;
}
;
_.setTextOrHtml_0 = function setTextOrHtml_0(content_0, isHtml){
  if (isNull(this.directionEstimator)) {
    this.isSpanWrapped = false;
    this.setInnerTextOrHtml(content_0, isHtml);
    if (jsNotEquals(this.textDir, this.initialElementDir)) {
      this.textDir = this.initialElementDir;
      cggic.setDirectionOnElement(this.element, this.initialElementDir);
    }
  }
   else {
    this.setTextOrHtml(content_0, this.directionEstimator.estimateDirection_0(content_0, isHtml), isHtml);
  }
  this.isDirectionExplicitlySet = false;
}
;
_.isDirectionExplicitlySet = false;
_.isElementInline = false;
_.isSpanWrapped = false;
cggl.Lcom_google_gwt_user_client_ui_DirectionalTextHelper_2_classLit = createForClass('com.google.gwt.user.client.ui', 'DirectionalTextHelper', 390, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_SourcesTableEvents = function $clinit_SourcesTableEvents(){
  cggucu.$clinit_SourcesTableEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesTableEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesTableEvents');
cggucu.$clinit_HTMLTable = function $clinit_HTMLTable(){
  cggucu.$clinit_HTMLTable = emptyMethod;
  cggucu.$clinit_Panel();
  cggucu.impl_7 = castTo(new cggucu.HTMLTable$HTMLTableStandardImpl, 1351);
}
;
cggucu.HTMLTable = function HTMLTable(){
  cggucu.$clinit_HTMLTable();
  cggucu.Panel.call(this);
  this.$init_524();
  this.tableElem = cgguc.createTable();
  this.bodyElem = cgguc.createTBody();
  cgguc.appendChild(this.tableElem, this.bodyElem);
  this.setElement(this.tableElem);
}
;
defineClass(121, 278, {37:1, 55:1, 31:1, 22:1, 1:1});
_.$init_524 = function $init_524(){
  this.widgetMap = new cgguci.ElementMapperImpl;
}
;
_.addCells = function addCells(tbody, row, num){
  var i, rowElem, tdElement;
  rowElem = cggcc.$get(cggucu.impl_7.getRows(tbody), row);
  for (i = 0; i < num; i++) {
    tdElement = cggdc.$createTDElement(cggdc.get_19());
    cggdc.$appendChild(rowElem, tdElement);
  }
}
;
_.addClickHandler = function addClickHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler_1(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.checkCellBounds = function checkCellBounds(row, column){
  var cellSize;
  this.checkRowBounds(row);
  if (column < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Column ' + column + ' must be non-negative: ' + column));
  }
  cellSize = this.getCellCount(row);
  if (cellSize <= column) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Column index: ' + column + ', Column size: ' + this.getCellCount(row)));
  }
}
;
_.checkRowBounds = function checkRowBounds(row){
  var rowSize;
  rowSize = this.getRowCount();
  if (row >= rowSize || row < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Row index: ' + row + ', Row size: ' + rowSize));
  }
}
;
_.cleanCell = function cleanCell(row, column, clearInnerHTML){
  var td;
  td = this.getCellFormatter().getRawElement(row, column);
  this.internalClearCell(td, clearInnerHTML);
  return td;
}
;
_.clear_0 = function clear_14(){
  this.clear_1(false);
}
;
_.clear_1 = function clear_15(clearInnerHTML){
  var col, row;
  for (row = 0; row < this.getRowCount(); ++row) {
    for (col = 0; col < this.getCellCount(row); ++col) {
      this.cleanCell(row, col, clearInnerHTML);
    }
  }
}
;
_.createCell = function createCell(){
  return cgguc.createTD();
}
;
_.getBodyElement = function getBodyElement(){
  return cgguc.asOld(this.bodyElem);
}
;
_.getCellFormatter = function getCellFormatter(){
  return this.cellFormatter;
}
;
_.getColumnFormatter = function getColumnFormatter(){
  return this.columnFormatter;
}
;
_.getDOMCellCount = function getDOMCellCount(tableBody, row){
  var rowElement;
  rowElement = cggcc.$get(cggucu.impl_7.getRows(tableBody), row);
  return cggcc.$length(cggucu.impl_7.getCells(rowElement));
}
;
_.getDOMRowCount = function getDOMRowCount(){
  return this.getDOMRowCount_0(this.bodyElem);
}
;
_.getDOMRowCount_0 = function getDOMRowCount_0(tbody){
  return this.getDOMRowCount_1(cgguc.asOld(tbody));
}
;
_.getDOMRowCount_1 = function getDOMRowCount_1(tbody){
  return cggcc.$length(cggucu.impl_7.getRows(tbody));
}
;
_.insertCell = function insertCell(row, column){
  var td, tr;
  tr = this.rowFormatter.getRow(this.bodyElem, row);
  td = this.createCell();
  cgguc.insertChild(tr, td, column);
}
;
_.insertRow = function insertRow(beforeRow){
  var tr;
  if (beforeRow != this.getRowCount()) {
    this.checkRowBounds(beforeRow);
  }
  tr = cgguc.createTR();
  cgguc.insertChild(this.bodyElem, tr, beforeRow);
  return beforeRow;
}
;
_.internalClearCell = function internalClearCell(td, clearInnerHTML){
  return this.internalClearCell_0(cgguc.asOld(td), clearInnerHTML);
}
;
_.internalClearCell_0 = function internalClearCell_0(td, clearInnerHTML){
  var maybeChild, widget;
  maybeChild = cgguc.getFirstChild(td);
  widget = null;
  if (isNotNull(maybeChild)) {
    widget = castTo(this.widgetMap.get_4(maybeChild), 22);
  }
  if (isNotNull(widget)) {
    this.remove_0(widget);
    return true;
  }
   else {
    if (clearInnerHTML) {
      cggdc.$setInnerHTML(td, '');
    }
    return false;
  }
}
;
_.iterator = function iterator_7(){
  return new cggucu.HTMLTable$1(this);
}
;
_.remove_0 = function remove_11(widget){
  var elem;
  if (jsNotEquals(widget.getParent(), this)) {
    return false;
  }
  try {
    this.orphan(widget);
  }
   finally {
    elem = widget.getElement();
    cggdc.$removeChild(cgguc.getParent_0(elem), elem);
    this.widgetMap.removeByElement(elem);
  }
  return true;
}
;
_.removeCell = function removeCell(row, column){
  var td, tr;
  this.checkCellBounds(row, column);
  td = this.cleanCell(row, column, false);
  tr = this.rowFormatter.getRow(this.bodyElem, row);
  cggdc.$removeChild(tr, td);
}
;
_.removeRow = function removeRow(row){
  var column, columnCount;
  columnCount = this.getCellCount(row);
  for (column = 0; column < columnCount; ++column) {
    this.cleanCell(row, column, false);
  }
  cggdc.$removeChild(this.bodyElem, this.rowFormatter.getRow(this.bodyElem, row));
}
;
_.setCellFormatter = function setCellFormatter(cellFormatter){
  this.cellFormatter = cellFormatter;
}
;
_.setCellPadding = function setCellPadding(padding){
  cggdc.$setPropertyInt_0(this.tableElem, 'cellPadding', padding);
}
;
_.setColumnFormatter = function setColumnFormatter(formatter){
  if (isNotNull(this.columnFormatter)) {
    formatter.columnGroup = this.columnFormatter.columnGroup;
  }
  this.columnFormatter = formatter;
  this.columnFormatter.prepareColumnGroup();
}
;
_.setRowFormatter = function setRowFormatter(rowFormatter){
  this.rowFormatter = rowFormatter;
}
;
_.setWidget_0 = function setWidget_2(row, column, widget){
  var td;
  this.prepareCell(row, column);
  td = this.cleanCell(row, column, true);
  if (isNotNull(widget)) {
    widget.removeFromParent();
    this.widgetMap.put_0(widget);
    cgguc.appendChild(td, widget.getElement());
    this.adopt(widget);
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable', 121, cggl.Lcom_google_gwt_user_client_ui_Panel_2_classLit);
cggucu.$clinit_FlexTable = function $clinit_FlexTable(){
  cggucu.$clinit_FlexTable = emptyMethod;
  cggucu.$clinit_HTMLTable();
}
;
cggucu.FlexTable = function FlexTable(){
  cggucu.$clinit_FlexTable();
  cggucu.HTMLTable.call(this);
  this.$init_525();
  this.setCellFormatter(new cggucu.FlexTable$FlexCellFormatter(this));
  this.setRowFormatter(new cggucu.HTMLTable$RowFormatter(this));
  this.setColumnFormatter(new cggucu.HTMLTable$ColumnFormatter(this));
}
;
defineClass(790, 121, {37:1, 55:1, 31:1, 22:1, 1:1}, cggucu.FlexTable);
_.$init_525 = function $init_525(){
}
;
_.getCellCount = function getCellCount(row){
  this.checkRowBounds(row);
  return this.getDOMCellCount(this.getBodyElement(), row);
}
;
_.getFlexCellFormatter = function getFlexCellFormatter(){
  return castTo(this.getCellFormatter(), 302);
}
;
_.getRowCount = function getRowCount_0(){
  return this.getDOMRowCount();
}
;
_.insertCell = function insertCell_0(beforeRow, beforeColumn){
  getClassPrototype(121).insertCell.call(this, beforeRow, beforeColumn);
}
;
_.insertRow = function insertRow_0(beforeRow){
  return getClassPrototype(121).insertRow.call(this, beforeRow);
}
;
_.prepareCell = function prepareCell(row, column){
  var cellCount, required;
  this.prepareRow(row);
  if (column < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot create a column with a negative index: ' + column));
  }
  cellCount = this.getCellCount(row);
  required = column + 1 - cellCount;
  if (required > 0) {
    this.addCells(this.getBodyElement(), row, required);
  }
}
;
_.prepareRow = function prepareRow(row){
  var i, rowCount;
  if (row < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot create a row with a negative index: ' + row));
  }
  rowCount = this.getRowCount();
  for (i = rowCount; i <= row; i++) {
    this.insertRow(i);
  }
}
;
_.removeCell = function removeCell_0(row, col){
  getClassPrototype(121).removeCell.call(this, row, col);
}
;
_.removeRow = function removeRow_0(row){
  getClassPrototype(121).removeRow.call(this, row);
}
;
cggl.Lcom_google_gwt_user_client_ui_FlexTable_2_classLit = createForClass('com.google.gwt.user.client.ui', 'FlexTable', 790, cggl.Lcom_google_gwt_user_client_ui_HTMLTable_2_classLit);
cggucu.$clinit_HTMLTable$CellFormatter = function $clinit_HTMLTable$CellFormatter(){
  cggucu.$clinit_HTMLTable$CellFormatter = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HTMLTable$CellFormatter = function HTMLTable$CellFormatter(this$0){
  cggucu.$clinit_HTMLTable$CellFormatter();
  this.this$01_0 = this$0;
  Object_0.call(this);
  this.$init_526();
}
;
defineClass(383, 1, {1:1}, cggucu.HTMLTable$CellFormatter);
_.$init_526 = function $init_526(){
}
;
_.ensureElement = function ensureElement(row, column){
  this.this$01_0.prepareCell(row, column);
  return cgguc.asOld(this.getCellElement_0(this.this$01_0.bodyElem, row, column));
}
;
_.getCellElement_0 = function getCellElement_1(tbody, row, col){
  return cggcc.$get((cggucu.$clinit_HTMLTable() , cggucu.impl_7).getCells(cggcc.$get((cggucu.$clinit_HTMLTable() , cggucu.impl_7).getRows(tbody), row)), col);
}
;
_.getRawElement = function getRawElement(row, column){
  cggucu.$clinit_HTMLTable$CellFormatter();
  return this.getCellElement_0(this.this$01_0.bodyElem, row, column);
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$CellFormatter_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/CellFormatter', 383, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_FlexTable$FlexCellFormatter = function $clinit_FlexTable$FlexCellFormatter(){
  cggucu.$clinit_FlexTable$FlexCellFormatter = emptyMethod;
  cggucu.$clinit_HTMLTable$CellFormatter();
}
;
cggucu.FlexTable$FlexCellFormatter = function FlexTable$FlexCellFormatter(this$0){
  cggucu.$clinit_FlexTable$FlexCellFormatter();
  this.this$01 = this$0;
  cggucu.HTMLTable$CellFormatter.call(this, this$0);
  this.$init_527();
}
;
defineClass(302, 383, {302:1, 1:1}, cggucu.FlexTable$FlexCellFormatter);
_.$init_527 = function $init_527(){
}
;
_.setColSpan = function setColSpan(row, column, colSpan){
  cggdc.$setPropertyInt_0(this.ensureElement(row, column), 'colSpan', colSpan);
}
;
cggl.Lcom_google_gwt_user_client_ui_FlexTable$FlexCellFormatter_2_classLit = createForClass('com.google.gwt.user.client.ui', 'FlexTable/FlexCellFormatter', 302, cggl.Lcom_google_gwt_user_client_ui_HTMLTable$CellFormatter_2_classLit);
cggucu.$clinit_SourcesMouseWheelEvents = function $clinit_SourcesMouseWheelEvents(){
  cggucu.$clinit_SourcesMouseWheelEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesMouseWheelEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesMouseWheelEvents');
cggucu.$clinit_FocusPanel = function $clinit_FocusPanel(){
  cggucu.$clinit_FocusPanel = emptyMethod;
  cggucu.$clinit_SimplePanel();
  cggucu.impl_8 = cggucui.getFocusImplForPanel();
}
;
cggucu.FocusPanel = function FocusPanel(){
  cggucu.$clinit_FocusPanel();
  cggucu.SimplePanel_0.call(this, cggucu.impl_8.createFocusable());
  this.$init_528();
}
;
defineClass(475, 138, {37:1, 55:1, 31:1, 22:1, 1:1}, cggucu.FocusPanel);
_.$init_528 = function $init_528(){
}
;
_.addBlurHandler = function addBlurHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_13());
}
;
_.addClickHandler = function addClickHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler_2(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.addFocusHandler = function addFocusHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_21());
}
;
_.addKeyDownHandler = function addKeyDownHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_22());
}
;
_.addKeyPressHandler = function addKeyPressHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_23());
}
;
_.addKeyUpHandler = function addKeyUpHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_24());
}
;
_.addMouseDownHandler = function addMouseDownHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_26());
}
;
_.addMouseMoveHandler = function addMouseMoveHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_27());
}
;
_.addMouseOutHandler = function addMouseOutHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_28());
}
;
_.addMouseUpHandler = function addMouseUpHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_30());
}
;
_.addTouchCancelHandler = function addTouchCancelHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_31());
}
;
_.addTouchEndHandler = function addTouchEndHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_32());
}
;
_.addTouchMoveHandler = function addTouchMoveHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_33());
}
;
_.addTouchStartHandler = function addTouchStartHandler_1(handler){
  return this.addDomHandler(handler, cggedc.getType_34());
}
;
_.getTabIndex = function getTabIndex_3(){
  return cggucu.impl_8.getTabIndex_0(this.getElement());
}
;
_.setFocus = function setFocus_1(focused){
  if (focused) {
    cggucu.impl_8.focus_1(this.getElement());
  }
   else {
    cggucu.impl_8.blur_1(this.getElement());
  }
}
;
_.setTabIndex = function setTabIndex_1(index_0){
  cggucu.impl_8.setTabIndex_0(this.getElement(), index_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_FocusPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'FocusPanel', 475, cggl.Lcom_google_gwt_user_client_ui_SimplePanel_2_classLit);
cggucu.$clinit_Grid = function $clinit_Grid(){
  cggucu.$clinit_Grid = emptyMethod;
  cggucu.$clinit_HTMLTable();
}
;
cggucu.Grid = function Grid(){
  cggucu.HTMLTable.call(this);
  this.$init_529();
  this.setCellFormatter(new cggucu.HTMLTable$CellFormatter(this));
  this.setRowFormatter(new cggucu.HTMLTable$RowFormatter(this));
  this.setColumnFormatter(new cggucu.HTMLTable$ColumnFormatter(this));
}
;
cggucu.Grid_0 = function Grid_0(rows_0, columns){
  cggucu.$clinit_Grid();
  cggucu.Grid.call(this);
  this.resize_1(rows_0, columns);
}
;
cggucu.addRows = function addRows(table, rows_0, columns){
  var td = $doc.createElement('td');
  td.innerHTML = '&nbsp;';
  var row = $doc.createElement('tr');
  for (var cellNum = 0; cellNum < columns; cellNum++) {
    var cell = td.cloneNode(true);
    row.appendChild(cell);
  }
  table.appendChild(row);
  for (var rowNum = 1; rowNum < rows_0; rowNum++) {
    table.appendChild(row.cloneNode(true));
  }
}
;
defineClass(246, 121, {37:1, 55:1, 31:1, 22:1, 1:1}, cggucu.Grid_0);
_.$init_529 = function $init_529(){
}
;
_.createCell = function createCell_0(){
  var td;
  td = getClassPrototype(121).createCell.call(this);
  cggdc.$setInnerHTML(td, '&nbsp;');
  return cgguc.asOld(td);
}
;
_.getCellCount = function getCellCount_0(row){
  return this.numColumns;
}
;
_.getRowCount = function getRowCount_1(){
  return this.numRows;
}
;
_.insertRow = function insertRow_1(beforeRow){
  var i, index_0;
  index_0 = getClassPrototype(121).insertRow.call(this, beforeRow);
  this.numRows++;
  for (i = 0; i < this.numColumns; i++) {
    this.insertCell(index_0, i);
  }
  return index_0;
}
;
_.prepareCell = function prepareCell_0(row, column){
  this.prepareRow(row);
  if (column < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot access a column with a negative index: ' + column));
  }
  if (column >= this.numColumns) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Column index: ' + column + ', Column size: ' + this.numColumns));
  }
}
;
_.prepareRow = function prepareRow_0(row){
  if (row < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot access a row with a negative index: ' + row));
  }
  if (row >= this.numRows) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Row index: ' + row + ', Row size: ' + this.numRows));
  }
}
;
_.removeRow = function removeRow_1(row){
  getClassPrototype(121).removeRow.call(this, row);
  this.numRows--;
}
;
_.resize_1 = function resize_1(rows_0, columns){
  this.resizeColumns(columns);
  this.resizeRows(rows_0);
}
;
_.resizeColumns = function resizeColumns(columns){
  var i, j;
  if (this.numColumns == columns) {
    return;
  }
  if (columns < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot set number of columns to ' + columns));
  }
  if (this.numColumns > columns) {
    for (i = 0; i < this.numRows; i++) {
      for (j = this.numColumns - 1; j >= columns; j--) {
        this.removeCell(i, j);
      }
    }
  }
   else {
    for (i = 0; i < this.numRows; i++) {
      for (j = this.numColumns; j < columns; j++) {
        this.insertCell(i, j);
      }
    }
  }
  this.numColumns = columns;
  this.getColumnFormatter().resizeColumnGroup(columns, false);
}
;
_.resizeRows = function resizeRows(rows_0){
  if (this.numRows == rows_0) {
    return;
  }
  if (rows_0 < 0) {
    throw toJs(new jl.IndexOutOfBoundsException_0('Cannot set number of rows to ' + rows_0));
  }
  if (this.numRows < rows_0) {
    cggucu.addRows(this.getBodyElement(), rows_0 - this.numRows, this.numColumns);
    this.numRows = rows_0;
  }
   else {
    while (this.numRows > rows_0) {
      this.removeRow(this.numRows - 1);
    }
  }
}
;
_.numColumns = 0;
_.numRows = 0;
cggl.Lcom_google_gwt_user_client_ui_Grid_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Grid', 246, cggl.Lcom_google_gwt_user_client_ui_HTMLTable_2_classLit);
ju.$clinit_Iterator = function $clinit_Iterator(){
  ju.$clinit_Iterator = emptyMethod;
}
;
ju.$forEachRemaining = function $forEachRemaining(this$static, consumer){
  ji2.checkNotNull_0(consumer);
  while (this$static.hasNext_0()) {
    consumer.accept_0(this$static.next_3());
  }
}
;
ju.$remove_0 = function $remove_0(this$static){
  throw toJs(new jl.UnsupportedOperationException);
}
;
cggl.Ljava_util_Iterator_2_classLit = createForInterface('java.util', 'Iterator');
cggucu.$clinit_HTMLTable$1 = function $clinit_HTMLTable$1(){
  cggucu.$clinit_HTMLTable$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
cggucu.HTMLTable$1 = function HTMLTable$1(this$0){
  cggucu.$clinit_HTMLTable$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_530();
}
;
defineClass(779, 1, {1:1, 46:1}, cggucu.HTMLTable$1);
_.$init_530 = function $init_530(){
  this.widgetList = this.this$01.widgetMap.getObjectList();
  this.lastIndex = -1;
  this.nextIndex = -1;
  {
    this.findNext();
  }
}
;
_.forEachRemaining = function forEachRemaining(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_3(){
  return this.next_2();
}
;
_.findNext = function findNext(){
  while (++this.nextIndex < this.widgetList.size()) {
    if (jsNotEquals(this.widgetList.getAtIndex(this.nextIndex), null)) {
      return;
    }
  }
}
;
_.hasNext_0 = function hasNext(){
  return this.nextIndex < this.widgetList.size();
}
;
_.next_2 = function next_2(){
  var result;
  if (!this.hasNext_0()) {
    throw toJs(new ju.NoSuchElementException);
  }
  result = castTo(this.widgetList.getAtIndex(this.nextIndex), 22);
  this.lastIndex = this.nextIndex;
  this.findNext();
  return result;
}
;
_.remove_4 = function remove_12(){
  var w;
  if (this.lastIndex < 0) {
    throw toJs(new jl.IllegalStateException);
  }
  w = castTo(this.widgetList.getAtIndex(this.lastIndex), 22);
  w.removeFromParent();
  this.lastIndex = -1;
}
;
_.lastIndex = 0;
_.nextIndex = 0;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/1', 779, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$Cell = function $clinit_HTMLTable$Cell(){
  cggucu.$clinit_HTMLTable$Cell = emptyMethod;
}
;
defineClass(1329, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$Cell_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/Cell', 1329, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$ColumnFormatter = function $clinit_HTMLTable$ColumnFormatter(){
  cggucu.$clinit_HTMLTable$ColumnFormatter = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HTMLTable$ColumnFormatter = function HTMLTable$ColumnFormatter(this$0){
  cggucu.$clinit_HTMLTable$ColumnFormatter();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_531();
}
;
defineClass(384, 1, {1:1}, cggucu.HTMLTable$ColumnFormatter);
_.$init_531 = function $init_531(){
}
;
_.prepareColumnGroup = function prepareColumnGroup(){
  cggucu.$clinit_HTMLTable$ColumnFormatter();
  if (isNull(this.columnGroup)) {
    this.columnGroup = cgguc.createElement_5('colgroup');
    cgguc.insertChild(this.this$01.tableElem, this.columnGroup, 0);
    cgguc.appendChild(this.columnGroup, cgguc.createElement_5('col'));
  }
}
;
_.resizeColumnGroup = function resizeColumnGroup(columns, growOnly){
  var i, num;
  columns = $wnd.Math.max(columns, 1);
  num = cggdc.$getChildCount(this.columnGroup);
  if (num < columns) {
    for (i = num; i < columns; i++) {
      cggdc.$appendChild(this.columnGroup, cggdc.$createColElement(cggdc.get_19()));
    }
  }
   else if (!growOnly && num > columns) {
    for (i = num; i > columns; i--) {
      cggdc.$removeChild(this.columnGroup, cggdc.$getLastChild(this.columnGroup));
    }
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$ColumnFormatter_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/ColumnFormatter', 384, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$HTMLTableImpl = function $clinit_HTMLTable$HTMLTableImpl(){
  cggucu.$clinit_HTMLTable$HTMLTableImpl = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$HTMLTableImpl_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HTMLTable/HTMLTableImpl');
cggucu.$clinit_HTMLTable$HTMLTableIEImpl = function $clinit_HTMLTable$HTMLTableIEImpl(){
  cggucu.$clinit_HTMLTable$HTMLTableIEImpl = emptyMethod;
}
;
defineClass(1328, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$HTMLTableIEImpl_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/HTMLTableIEImpl', 1328, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$HTMLTableStandardImpl = function $clinit_HTMLTable$HTMLTableStandardImpl(){
  cggucu.$clinit_HTMLTable$HTMLTableStandardImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HTMLTable$HTMLTableStandardImpl = function HTMLTable$HTMLTableStandardImpl(){
  cggucu.$clinit_HTMLTable$HTMLTableStandardImpl();
  Object_0.call(this);
  this.$init_532();
}
;
defineClass(778, 1, {1351:1, 1:1}, cggucu.HTMLTable$HTMLTableStandardImpl);
_.$init_532 = function $init_532(){
}
;
_.getCells = function getCells(row){
  return row.cells;
}
;
_.getRows = function getRows(tbody){
  return tbody.rows;
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$HTMLTableStandardImpl_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/HTMLTableStandardImpl', 778, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HTMLTable$RowFormatter = function $clinit_HTMLTable$RowFormatter(){
  cggucu.$clinit_HTMLTable$RowFormatter = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HTMLTable$RowFormatter = function HTMLTable$RowFormatter(this$0){
  cggucu.$clinit_HTMLTable$RowFormatter();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_533();
}
;
defineClass(385, 1, {1:1}, cggucu.HTMLTable$RowFormatter);
_.$init_533 = function $init_533(){
}
;
_.getRow = function getRow(tbody, row){
  return this.getRow_0(cgguc.asOld(tbody), row);
}
;
_.getRow_0 = function getRow_0(tbody, row){
  return cgguc.asOld(cggcc.$get((cggucu.$clinit_HTMLTable() , cggucu.impl_7).getRows(tbody), row));
}
;
cggl.Lcom_google_gwt_user_client_ui_HTMLTable$RowFormatter_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HTMLTable/RowFormatter', 385, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HasVerticalAlignment = function $clinit_HasVerticalAlignment(){
  cggucu.$clinit_HasVerticalAlignment = emptyMethod;
  cggucu.ALIGN_BOTTOM = new cggucu.HasVerticalAlignment$VerticalAlignmentConstant('bottom');
  cggucu.ALIGN_MIDDLE = new cggucu.HasVerticalAlignment$VerticalAlignmentConstant('middle');
  cggucu.ALIGN_TOP = new cggucu.HasVerticalAlignment$VerticalAlignmentConstant('top');
}
;
cggl.Lcom_google_gwt_user_client_ui_HasVerticalAlignment_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasVerticalAlignment');
cggucu.$clinit_HasAlignment = function $clinit_HasAlignment(){
  cggucu.$clinit_HasAlignment = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasAlignment_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'HasAlignment');
cggucu.$clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant = function $clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant(){
  cggucu.$clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant = function HasHorizontalAlignment$AutoHorizontalAlignmentConstant(){
  cggucu.$clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant();
  Object_0.call(this);
  this.$init_534();
}
;
defineClass(298, 1, {1:1}, cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant);
_.$init_534 = function $init_534(){
}
;
cggl.Lcom_google_gwt_user_client_ui_HasHorizontalAlignment$AutoHorizontalAlignmentConstant_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HasHorizontalAlignment/AutoHorizontalAlignmentConstant', 298, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant = function $clinit_HasHorizontalAlignment$HorizontalAlignmentConstant(){
  cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant = emptyMethod;
  cggucu.$clinit_HasHorizontalAlignment$AutoHorizontalAlignmentConstant();
}
;
cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant = function HasHorizontalAlignment$HorizontalAlignmentConstant(textAlignString){
  cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant();
  cggucu.HasHorizontalAlignment$AutoHorizontalAlignmentConstant.call(this);
  this.$init_535();
  this.textAlignString = textAlignString;
}
;
cggucu.endOf = function endOf(direction){
  cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant();
  return jsEquals(direction, (cggic.$clinit_HasDirection$Direction() , cggic.LTR))?(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_RIGHT):jsEquals(direction, (cggic.$clinit_HasDirection$Direction() , cggic.RTL))?(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_LEFT):(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_LOCALE_END);
}
;
cggucu.startOf = function startOf(direction){
  cggucu.$clinit_HasHorizontalAlignment$HorizontalAlignmentConstant();
  return jsEquals(direction, (cggic.$clinit_HasDirection$Direction() , cggic.LTR))?(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_LEFT):jsEquals(direction, (cggic.$clinit_HasDirection$Direction() , cggic.RTL))?(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_RIGHT):(cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_LOCALE_START);
}
;
defineClass(161, 298, {161:1, 1:1}, cggucu.HasHorizontalAlignment$HorizontalAlignmentConstant);
_.$init_535 = function $init_535(){
}
;
_.getTextAlignString = function getTextAlignString(){
  return this.textAlignString;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasHorizontalAlignment$HorizontalAlignmentConstant_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HasHorizontalAlignment/HorizontalAlignmentConstant', 161, cggl.Lcom_google_gwt_user_client_ui_HasHorizontalAlignment$AutoHorizontalAlignmentConstant_2_classLit);
cggucu.$clinit_HasVerticalAlignment$VerticalAlignmentConstant = function $clinit_HasVerticalAlignment$VerticalAlignmentConstant(){
  cggucu.$clinit_HasVerticalAlignment$VerticalAlignmentConstant = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.HasVerticalAlignment$VerticalAlignmentConstant = function HasVerticalAlignment$VerticalAlignmentConstant(verticalAlignString){
  cggucu.$clinit_HasVerticalAlignment$VerticalAlignmentConstant();
  Object_0.call(this);
  this.$init_536();
  this.verticalAlignString = verticalAlignString;
}
;
defineClass(301, 1, {1:1}, cggucu.HasVerticalAlignment$VerticalAlignmentConstant);
_.$init_536 = function $init_536(){
}
;
_.getVerticalAlignString = function getVerticalAlignString(){
  return this.verticalAlignString;
}
;
cggl.Lcom_google_gwt_user_client_ui_HasVerticalAlignment$VerticalAlignmentConstant_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HasVerticalAlignment/VerticalAlignmentConstant', 301, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_HorizontalPanel = function $clinit_HorizontalPanel(){
  cggucu.$clinit_HorizontalPanel = emptyMethod;
  cggucu.$clinit_CellPanel();
}
;
cggucu.HorizontalPanel = function HorizontalPanel(){
  cggucu.$clinit_HorizontalPanel();
  cggucu.CellPanel.call(this);
  this.$init_537();
  this.tableRow = cgguc.createTR();
  cgguc.appendChild(this.getBody(), this.tableRow);
  cggdc.$setPropertyString_0(this.getTable(), 'cellSpacing', '0');
  cggdc.$setPropertyString_0(this.getTable(), 'cellPadding', '0');
}
;
defineClass(388, 788, {37:1, 55:1, 31:1, 22:1, 1:1}, cggucu.HorizontalPanel);
_.$init_537 = function $init_537(){
  this.horzAlign = (cggucu.$clinit_HasHorizontalAlignment() , cggucu.ALIGN_DEFAULT);
  this.vertAlign = (cggucu.$clinit_HasVerticalAlignment() , cggucu.ALIGN_TOP);
}
;
_.add_8 = function add_26(w){
  var td;
  td = this.createAlignedTd();
  cgguc.appendChild(this.tableRow, td);
  this.add_11(w, td);
}
;
_.createAlignedTd = function createAlignedTd(){
  var td;
  td = cgguc.createTD();
  this.setCellHorizontalAlignment(td, this.horzAlign);
  this.setCellVerticalAlignment(td, this.vertAlign);
  return td;
}
;
_.insert_1 = function insert_2(w, beforeIndex){
  var td;
  this.checkIndexBoundsForInsertion(beforeIndex);
  td = this.createAlignedTd();
  cgguc.insertChild(this.tableRow, td, beforeIndex);
  this.insert(w, td, beforeIndex, false);
}
;
_.remove_0 = function remove_13(w){
  var removed, td;
  td = cgguc.getParent_0(w.getElement());
  removed = getClassPrototype(201).remove_0.call(this, w);
  if (removed) {
    cggdc.$removeChild(this.tableRow, td);
  }
  return removed;
}
;
_.setHorizontalAlignment = function setHorizontalAlignment_0(align_0){
  this.horzAlign = align_0;
}
;
cggl.Lcom_google_gwt_user_client_ui_HorizontalPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'HorizontalPanel', 388, cggl.Lcom_google_gwt_user_client_ui_CellPanel_2_classLit);
cggucu.$clinit_SourcesLoadEvents = function $clinit_SourcesLoadEvents(){
  cggucu.$clinit_SourcesLoadEvents = emptyMethod;
}
;
cggl.Lcom_google_gwt_user_client_ui_SourcesLoadEvents_2_classLit = createForInterface('com.google.gwt.user.client.ui', 'SourcesLoadEvents');
cggucu.$clinit_Image = function $clinit_Image(){
  cggucu.$clinit_Image = emptyMethod;
  cggucu.$clinit_Widget();
  cggucu.prefetchImages = new ju.HashMap;
}
;
cggucu.Image_0 = function Image_0(url_0){
  cggucu.Widget.call(this);
  this.$init_538();
  this.changeState(new cggucu.Image$UnclippedState_0(this, url_0));
  this.setStyleName('gwt-Image');
}
;
cggucu.Image_1 = function Image_1(url_0){
  cggucu.$clinit_Image();
  cggucu.Image_0.call(this, cggss.unsafeCastFromUntrustedString(url_0));
}
;
defineClass(95, 22, {37:1, 31:1, 22:1, 1:1}, cggucu.Image_1);
_.$init_538 = function $init_538(){
}
;
_.addClickHandler = function addClickHandler_3(handler){
  return this.addHandler(handler, cggedc.getType_15());
}
;
_.addDoubleClickHandler = function addDoubleClickHandler_3(handler){
  return this.addHandler(handler, cggedc.getType_16());
}
;
_.addDragStartHandler = function addDragStartHandler_3(handler){
  return this.addBitlessDomHandler(handler, cggedc.getType_19());
}
;
_.addLoadHandler = function addLoadHandler(handler){
  return this.addHandler(handler, cggedc.getType_25());
}
;
_.addMouseDownHandler = function addMouseDownHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_26());
}
;
_.addMouseMoveHandler = function addMouseMoveHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_27());
}
;
_.addMouseOutHandler = function addMouseOutHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_28());
}
;
_.addMouseUpHandler = function addMouseUpHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_30());
}
;
_.addTouchCancelHandler = function addTouchCancelHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_31());
}
;
_.addTouchEndHandler = function addTouchEndHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_32());
}
;
_.addTouchMoveHandler = function addTouchMoveHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_33());
}
;
_.addTouchStartHandler = function addTouchStartHandler_2(handler){
  return this.addDomHandler(handler, cggedc.getType_34());
}
;
_.changeState = function changeState(newState){
  this.state = newState;
}
;
_.clearUnhandledEvent = function clearUnhandledEvent(){
  cggucu.$clinit_Image();
  if (isNotNull(this.state)) {
    cggdc.$setPropertyString_0(this.state.getImageElement(this), '__gwtLastUnhandledEvent', '');
  }
}
;
_.getHeight_1 = function getHeight_3(){
  return this.state.getHeight_2(this);
}
;
_.getUrl = function getUrl_0(){
  return this.state.getUrl_0(this).asString();
}
;
_.getWidth_1 = function getWidth_3(){
  return this.state.getWidth_2(this);
}
;
_.onBrowserEvent = function onBrowserEvent_1(event_0){
  if (cgguc.$getTypeInt(event_0) == 32768) {
    this.clearUnhandledEvent();
    this.state.onLoadEvent(this);
  }
  getClassPrototype(22).onBrowserEvent.call(this, event_0);
}
;
_.onLoad_0 = function onLoad_7(){
  getClassPrototype(22).onLoad_0.call(this);
  this.state.onLoad_1(this);
}
;
cggucu.UNHANDLED_EVENT_ATTR = '__gwtLastUnhandledEvent';
cggl.Lcom_google_gwt_user_client_ui_Image_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image', 95, cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit);
cggucu.$clinit_Image$State = function $clinit_Image$State(){
  cggucu.$clinit_Image$State = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.Image$State = function Image$State(){
  cggucu.$clinit_Image$State();
  Object_0.call(this);
  this.$init_539();
}
;
defineClass(663, 1, {1:1});
_.$init_539 = function $init_539(){
  this.syntheticEventCommand = null;
}
;
_.fireSyntheticLoadEvent = function fireSyntheticLoadEvent(image){
  this.syntheticEventCommand = new cggucu.Image$State$1(this, image);
  cggcc.get_18().scheduleDeferred(this.syntheticEventCommand);
}
;
_.onLoad_1 = function onLoad_8(image){
  var unhandledEvent;
  unhandledEvent = cggdc.$getPropertyString(this.getImageElement(image), '__gwtLastUnhandledEvent');
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('load', unhandledEvent)) {
    this.fireSyntheticLoadEvent(image);
  }
}
;
_.onLoadEvent = function onLoadEvent(image){
}
;
cggl.Lcom_google_gwt_user_client_ui_Image$State_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image/State', 663, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_Image$ClippedState = function $clinit_Image$ClippedState(){
  cggucu.$clinit_Image$ClippedState = emptyMethod;
}
;
defineClass(1158, 663, {1:1});
cggl.Lcom_google_gwt_user_client_ui_Image$ClippedState_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image/ClippedState', 1158, cggl.Lcom_google_gwt_user_client_ui_Image$State_2_classLit);
cggucu.$clinit_Image$State$1 = function $clinit_Image$State$1(){
  cggucu.$clinit_Image$State$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.Image$State$1 = function Image$State$1(this$1, val$image){
  cggucu.$clinit_Image$State$1();
  this.this$11 = this$1;
  this.val$image2 = val$image;
  Object_0.call(this);
  this.$init_540();
}
;
defineClass(664, 1, {1:1}, cggucu.Image$State$1);
_.$init_540 = function $init_540(){
}
;
_.execute_1 = function execute_7(){
  var evt;
  if (jsNotEquals(this.val$image2.state, this.this$11) || jsNotEquals(this, this.this$11.syntheticEventCommand)) {
    return;
  }
  this.this$11.syntheticEventCommand = null;
  if (!this.val$image2.isAttached()) {
    cggdc.$setPropertyString_0(this.this$11.getImageElement(this.val$image2), '__gwtLastUnhandledEvent', 'load');
    return;
  }
  evt = cggdc.$createLoadEvent(cggdc.get_19());
  cggdc.$dispatchEvent(this.this$11.getImageElement(this.val$image2), evt);
}
;
cggl.Lcom_google_gwt_user_client_ui_Image$State$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image/State/1', 664, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_Image$UnclippedState = function $clinit_Image$UnclippedState(){
  cggucu.$clinit_Image$UnclippedState = emptyMethod;
  cggucu.$clinit_Image$State();
}
;
cggucu.Image$UnclippedState = function Image$UnclippedState(image){
  cggucu.Image$State.call(this);
  this.$init_541();
  image.replaceElement(cggdc.$createImageElement(cggdc.get_19()));
  cgguc.sinkEvents_2(image.getElement(), 32768);
  image.sinkEvents(1 | 2 | 124 | 32768 | 65536 | 131072 | 15728640 | 117440512);
}
;
cggucu.Image$UnclippedState_0 = function Image$UnclippedState_0(image, url_0){
  cggucu.$clinit_Image$UnclippedState();
  cggucu.Image$UnclippedState.call(this, image);
  this.setUrl(image, url_0);
}
;
defineClass(349, 663, {1:1}, cggucu.Image$UnclippedState_0);
_.$init_541 = function $init_541(){
}
;
_.getHeight_2 = function getHeight_4(image){
  return cggdc.$getHeight_0(this.getImageElement(image));
}
;
_.getImageElement = function getImageElement(image){
  return cggcc.$cast(image.getElement());
}
;
_.getUrl_0 = function getUrl_1(image){
  return cggss.unsafeCastFromUntrustedString(cggdc.$getSrc(this.getImageElement(image)));
}
;
_.getWidth_2 = function getWidth_4(image){
  return cggdc.$getWidth_1(this.getImageElement(image));
}
;
_.setUrl = function setUrl(image, url_0){
  image.clearUnhandledEvent();
  cggdc.$setSrc(this.getImageElement(image), url_0.asString());
}
;
cggl.Lcom_google_gwt_user_client_ui_Image$UnclippedState_2_classLit = createForClass('com.google.gwt.user.client.ui', 'Image/UnclippedState', 349, cggl.Lcom_google_gwt_user_client_ui_Image$State_2_classLit);
cggucu.$clinit_KeyboardListenerCollection = function $clinit_KeyboardListenerCollection(){
  cggucu.$clinit_KeyboardListenerCollection = emptyMethod;
  ju.$clinit_ArrayList();
}
;
cggucu.getKeyboardModifiers = function getKeyboardModifiers(event_0){
  cggucu.$clinit_KeyboardListenerCollection();
  return (cggdc.$getShiftKey(event_0)?1:0) | (cggdc.$getMetaKey(event_0)?8:0) | (cggdc.$getCtrlKey(event_0)?2:0) | (cggdc.$getAltKey(event_0)?4:0);
}
;
defineClass(1340, 18, {4:1, 1:1, 18:1, 38:1, 57:1, 143:1});
cggl.Lcom_google_gwt_user_client_ui_KeyboardListenerCollection_2_classLit = createForClass('com.google.gwt.user.client.ui', 'KeyboardListenerCollection', 1340, cggl.Ljava_util_ArrayList_2_classLit);
cggucu.$clinit_PopupPanel$1 = function $clinit_PopupPanel$1(){
  cggucu.$clinit_PopupPanel$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.PopupPanel$1 = function PopupPanel$1(this$0){
  cggucu.$clinit_PopupPanel$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_542();
}
;
defineClass(734, 1, {215:1, 21:1, 1:1}, cggucu.PopupPanel$1);
_.$init_542 = function $init_542(){
}
;
_.onResize = function onResize_3(event_0){
  var height, style, width_0, winHeight, winWidth;
  style = cggdc.$getStyle(this.this$01.glass);
  winWidth = cgguc.getClientWidth();
  winHeight = cgguc.getClientHeight();
  cggdc.$setDisplay(style, (cggdc.$clinit_Style$Display() , cggdc.NONE));
  cggdc.$setWidth_1(style, 0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
  cggdc.$setHeight_1(style, 0, (cggdc.$clinit_Style$Unit() , cggdc.PX));
  width_0 = cggdc.$getScrollWidth_0(cggdc.get_19());
  height = cggdc.$getScrollHeight_0(cggdc.get_19());
  cggdc.$setWidth_1(style, $wnd.Math.max(width_0, winWidth), (cggdc.$clinit_Style$Unit() , cggdc.PX));
  cggdc.$setHeight_1(style, $wnd.Math.max(height, winHeight), (cggdc.$clinit_Style$Unit() , cggdc.PX));
  cggdc.$setDisplay(style, (cggdc.$clinit_Style$Display() , cggdc.BLOCK));
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/1', 734, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$2 = function $clinit_PopupPanel$2(){
  cggucu.$clinit_PopupPanel$2 = emptyMethod;
}
;
defineClass(1217, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$2_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/2', 1217, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$3 = function $clinit_PopupPanel$3(){
  cggucu.$clinit_PopupPanel$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.PopupPanel$3 = function PopupPanel$3(this$0){
  cggucu.$clinit_PopupPanel$3();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_543();
}
;
defineClass(735, 1, {21:1, 819:1, 1:1}, cggucu.PopupPanel$3);
_.$init_543 = function $init_543(){
}
;
_.onPreviewNativeEvent = function onPreviewNativeEvent_1(event_0){
  this.this$01.previewNativeEvent(event_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$3_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/3', 735, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$4 = function $clinit_PopupPanel$4(){
  cggucu.$clinit_PopupPanel$4 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.PopupPanel$4 = function PopupPanel$4(this$0){
  cggucu.$clinit_PopupPanel$4();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_544();
}
;
defineClass(736, 1, {252:1, 21:1, 1:1}, cggucu.PopupPanel$4);
_.$init_544 = function $init_544(){
}
;
_.onValueChange = function onValueChange_2(event_0){
  if (this.this$01.autoHideOnHistoryEvents) {
    this.this$01.hide();
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$4_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/4', 736, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$AnimationType = function $clinit_PopupPanel$AnimationType(){
  cggucu.$clinit_PopupPanel$AnimationType = emptyMethod;
  jl.$clinit_Enum();
  cggucu.CENTER_1 = new cggucu.PopupPanel$AnimationType('CENTER', 0);
  cggucu.ONE_WAY_CORNER = new cggucu.PopupPanel$AnimationType('ONE_WAY_CORNER', 1);
  cggucu.ROLL_DOWN = new cggucu.PopupPanel$AnimationType('ROLL_DOWN', 2);
}
;
cggucu.PopupPanel$AnimationType = function PopupPanel$AnimationType(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_545();
}
;
cggucu.valueOf_17 = function valueOf_17(name_0){
  cggucu.$clinit_PopupPanel$AnimationType();
  return valueOf((cggucu.$clinit_PopupPanel$AnimationType$Map() , cggucu.$MAP_16), name_0);
}
;
cggucu.values_17 = function values_17(){
  cggucu.$clinit_PopupPanel$AnimationType();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_user_client_ui_PopupPanel$AnimationType_2_classLit, 1), {4:1, 1:1, 7:1}, 206, 0, [cggucu.CENTER_1, cggucu.ONE_WAY_CORNER, cggucu.ROLL_DOWN]);
}
;
defineClass(206, 11, {206:1, 4:1, 10:1, 11:1, 1:1}, cggucu.PopupPanel$AnimationType);
_.$init_545 = function $init_545(){
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$AnimationType_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'PopupPanel/AnimationType', 206, cggl.Ljava_lang_Enum_2_classLit, cggucu.values_17, cggucu.valueOf_17);
cggucu.$clinit_PopupPanel$AnimationType$Map = function $clinit_PopupPanel$AnimationType$Map(){
  cggucu.$clinit_PopupPanel$AnimationType$Map = emptyMethod;
  cggucu.$MAP_16 = createValueOfMap(cggucu.values_17());
}
;
defineClass(1216, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$AnimationType$Map_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/AnimationType/Map', 1216, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_PopupPanel$ResizeAnimation = function $clinit_PopupPanel$ResizeAnimation(){
  cggucu.$clinit_PopupPanel$ResizeAnimation = emptyMethod;
  cggac.$clinit_Animation();
}
;
cggucu.PopupPanel$ResizeAnimation = function PopupPanel$ResizeAnimation(panel){
  cggucu.$clinit_PopupPanel$ResizeAnimation();
  cggac.Animation_0.call(this);
  this.$init_546();
  this.curPanel = panel;
}
;
defineClass(732, 290, {1:1}, cggucu.PopupPanel$ResizeAnimation);
_.$init_546 = function $init_546(){
  this.curPanel = null;
  this.offsetWidth_0 = -1;
}
;
_.getRectString = function getRectString(top_0, right, bottom, left){
  return 'rect(' + top_0 + 'px, ' + right + 'px, ' + bottom + 'px, ' + left + 'px)';
}
;
_.maybeShowGlass = function maybeShowGlass(){
  if (this.showing) {
    if (this.curPanel.isGlassEnabled) {
      cggdc.$appendChild(cggdc.$getBody(cggdc.get_19()), this.curPanel.glass);
      this.resizeRegistration = cgguc.addResizeHandler(this.curPanel.glassResizer);
      this.curPanel.glassResizer.onResize(null);
      this.glassShowing = true;
    }
  }
   else if (this.glassShowing) {
    cggdc.$removeChild(cggdc.$getBody(cggdc.get_19()), this.curPanel.glass);
    this.resizeRegistration.removeHandler();
    this.resizeRegistration = null;
    this.glassShowing = false;
  }
}
;
_.onComplete = function onComplete_0(){
  if (!this.showing) {
    this.maybeShowGlass();
    if (!this.isUnloading) {
      cggucu.get_25().remove_0(this.curPanel);
    }
  }
  (cggucu.$clinit_PopupPanel() , cggucu.impl_0).setClip(this.curPanel.getElement(), 'rect(auto, auto, auto, auto)');
  cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'overflow', 'visible');
}
;
_.onInstantaneousRun = function onInstantaneousRun(){
  this.maybeShowGlass();
  if (this.showing) {
    cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'position', 'absolute');
    if (this.curPanel.topPosition != -1) {
      this.curPanel.setPopupPosition(this.curPanel.leftPosition, this.curPanel.topPosition);
    }
    cggucu.get_25().add_8(this.curPanel);
  }
   else {
    if (!this.isUnloading) {
      cggucu.get_25().remove_0(this.curPanel);
    }
  }
  cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'overflow', 'visible');
}
;
_.onStart = function onStart_0(){
  this.offsetHeight_0 = this.curPanel.getOffsetHeight();
  this.offsetWidth_0 = this.curPanel.getOffsetWidth();
  cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'overflow', 'hidden');
  getClassPrototype(290).onStart.call(this);
}
;
_.onUpdate = function onUpdate(progress){
  var bottom, height, left, right, top_0, width_0;
  if (!this.showing) {
    progress = 1 - progress;
  }
  top_0 = 0;
  left = 0;
  right = 0;
  bottom = 0;
  height = round_int(progress * this.offsetHeight_0);
  width_0 = round_int(progress * this.offsetWidth_0);
  switch (this.curPanel.animType.ordinal()) {
    case (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.ROLL_DOWN).ordinal():
      right = this.offsetWidth_0;
      bottom = height;
      break;
    case (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.CENTER_1).ordinal():
      top_0 = this.offsetHeight_0 - height >> 1;
      left = this.offsetWidth_0 - width_0 >> 1;
      right = left + width_0;
      bottom = top_0 + height;
      break;
    case (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.ONE_WAY_CORNER).ordinal():
      if (cggic.getCurrentLocale().isRTL_0()) {
        left = this.offsetWidth_0 - width_0;
      }

      right = left + width_0;
      bottom = top_0 + height;
      break;
  }
  (cggucu.$clinit_PopupPanel() , cggucu.impl_0).setClip(this.curPanel.getElement(), this.getRectString(top_0, right, bottom, left));
}
;
_.setState_0 = function setState_0(showing, isUnloading){
  var animate;
  this.isUnloading = isUnloading;
  this.cancel_0();
  if (isNotNull(this.showTimer)) {
    this.showTimer.cancel_0();
    this.showTimer = null;
    this.onComplete();
  }
  this.curPanel.showing = showing;
  this.curPanel.updateHandlers();
  animate = !isUnloading && this.curPanel.isAnimationEnabled;
  if (jsNotEquals(this.curPanel.animType, (cggucu.$clinit_PopupPanel$AnimationType() , cggucu.CENTER_1)) && !showing) {
    animate = false;
  }
  this.showing = showing;
  if (animate) {
    if (showing) {
      this.maybeShowGlass();
      cggdc.$setProperty_0(cggdc.$getStyle(this.curPanel.getElement()), 'position', 'absolute');
      if (this.curPanel.topPosition != -1) {
        this.curPanel.setPopupPosition(this.curPanel.leftPosition, this.curPanel.topPosition);
      }
      (cggucu.$clinit_PopupPanel() , cggucu.impl_0).setClip(this.curPanel.getElement(), this.getRectString(0, 0, 0, 0));
      cggucu.get_25().add_8(this.curPanel);
      this.showTimer = new cggucu.PopupPanel$ResizeAnimation$1(this);
      this.showTimer.schedule(1);
    }
     else {
      this.run_0(200);
    }
  }
   else {
    this.onInstantaneousRun();
  }
}
;
_.glassShowing = false;
_.isUnloading = false;
_.offsetHeight_0 = 0;
_.offsetWidth_0 = 0;
_.showing = false;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$ResizeAnimation_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/ResizeAnimation', 732, cggl.Lcom_google_gwt_animation_client_Animation_2_classLit);
cggucu.$clinit_PopupPanel$ResizeAnimation$1 = function $clinit_PopupPanel$ResizeAnimation$1(){
  cggucu.$clinit_PopupPanel$ResizeAnimation$1 = emptyMethod;
  cgguc.$clinit_Timer();
}
;
cggucu.PopupPanel$ResizeAnimation$1 = function PopupPanel$ResizeAnimation$1(this$1){
  cggucu.$clinit_PopupPanel$ResizeAnimation$1();
  this.this$11 = this$1;
  cgguc.Timer.call(this);
  this.$init_547();
}
;
defineClass(733, 273, {1:1}, cggucu.PopupPanel$ResizeAnimation$1);
_.$init_547 = function $init_547(){
}
;
_.run = function run_4(){
  this.this$11.showTimer = null;
  this.this$11.run_0(200);
}
;
cggl.Lcom_google_gwt_user_client_ui_PopupPanel$ResizeAnimation$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'PopupPanel/ResizeAnimation/1', 733, cggl.Lcom_google_gwt_user_client_Timer_2_classLit);
cggucu.$clinit_PotentialElement = function $clinit_PotentialElement(){
  cggucu.$clinit_PotentialElement = emptyMethod;
  cggdc.$clinit_Element();
  {
    cggucu.declareShim();
  }
}
;
cggucu.declareShim = function declareShim(){
  var shim = function(){
  }
  ;
  shim.prototype = {className:'', clientHeight:0, clientWidth:0, dir:'', getAttribute:function(name_0, value_0){
    return this[name_0];
  }
  , href:'', id:'', lang:'', nodeType:1, removeAttribute:function(name_0, value_0){
    this[name_0] = undefined;
  }
  , setAttribute:function(name_0, value_0){
    this[name_0] = value_0;
  }
  , src:'', style:{}, title:''};
  $wnd.GwtPotentialElementShim = shim;
}
;
cggucu.isPotential_0 = function isPotential_0(o){
  return cgguc.isPotential(o);
}
;
cggucu.$clinit_RootPanel = function $clinit_RootPanel(){
  cggucu.$clinit_RootPanel = emptyMethod;
  cggucu.$clinit_AbsolutePanel();
  cggucu.maybeDetachCommand = new cggucu.RootPanel$1;
  cggucu.rootPanels = new ju.HashMap;
  cggucu.widgetsToDetach = new ju.HashSet;
}
;
cggucu.RootPanel = function RootPanel(elem){
  cggucu.$clinit_RootPanel();
  cggucu.AbsolutePanel.call(this, elem);
  this.$init_548();
  this.onAttach();
}
;
cggucu.detachNow = function detachNow(widget){
  cggucu.$clinit_RootPanel();
  try {
    widget.onDetach();
  }
   finally {
    cggucu.widgetsToDetach.remove(widget);
  }
}
;
cggucu.detachOnWindowClose = function detachOnWindowClose(widget){
  cggucu.$clinit_RootPanel();
  cggucu.widgetsToDetach.add(widget);
}
;
cggucu.detachWidgets = function detachWidgets(){
  cggucu.$clinit_RootPanel();
  try {
    cggucu.tryCommand(cggucu.widgetsToDetach, cggucu.maybeDetachCommand);
  }
   finally {
    cggucu.widgetsToDetach.clear();
    cggucu.rootPanels.clear();
  }
}
;
cggucu.get_25 = function get_25(){
  cggucu.$clinit_RootPanel();
  return cggucu.get_26(null);
}
;
cggucu.get_26 = function get_26(id_0){
  cggucu.$clinit_RootPanel();
  var elem, rp;
  rp = castTo(cggucu.rootPanels.get(id_0), 202);
  elem = null;
  if (jsNotEquals(id_0, null)) {
    if (isNull(elem = cggdc.$getElementById(cggdc.get_19(), id_0))) {
      return null;
    }
  }
  if (isNotNull(rp)) {
    if (isNull(elem) || jsEquals(rp.getElement(), elem)) {
      return rp;
    }
  }
  if (cggucu.rootPanels.size() == 0) {
    cggucu.hookWindowClosing();
    if (cggic.getCurrentLocale().isRTL_0()) {
      cggic.setDirectionOnElement(cggucu.getRootElement(), (cggic.$clinit_HasDirection$Direction() , cggic.RTL));
    }
  }
  if (isNull(elem)) {
    rp = new cggucu.RootPanel$DefaultRootPanel;
  }
   else {
    rp = new cggucu.RootPanel(elem);
  }
  cggucu.rootPanels.put(id_0, rp);
  cggucu.detachOnWindowClose(rp);
  return rp;
}
;
cggucu.getBodyElement_0 = function getBodyElement_0(){
  cggucu.$clinit_RootPanel();
  return $doc.body;
}
;
cggucu.getRootElement = function getRootElement(){
  return $doc;
}
;
cggucu.hookWindowClosing = function hookWindowClosing(){
  cgguc.addCloseHandler(new cggucu.RootPanel$2);
}
;
cggucu.isElementChildOfWidget = function isElementChildOfWidget(element){
  var body_0;
  element = cggdc.$getParentElement(element);
  body_0 = cggdc.$getBody(cggdc.get_19());
  while (isNotNull(element) && jsNotEquals(body_0, element)) {
    if (isNotNull(cgguc.getEventListener_0(element))) {
      return true;
    }
    element = cggcc.$cast(cggdc.$getParentElement(element));
  }
  return false;
}
;
cggucu.isInDetachList = function isInDetachList(widget){
  cggucu.$clinit_RootPanel();
  return cggucu.widgetsToDetach.contains(widget);
}
;
defineClass(202, 621, {37:1, 55:1, 202:1, 31:1, 22:1, 1:1}, cggucu.RootPanel);
_.$init_548 = function $init_548(){
}
;
_.clear_1 = function clear_16(clearDom){
  this.clear_0();
  if (clearDom) {
    cggdc.$removeAllChildren(this.getElement());
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_RootPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'RootPanel', 202, cggl.Lcom_google_gwt_user_client_ui_AbsolutePanel_2_classLit);
cggucu.$clinit_RootPanel$1 = function $clinit_RootPanel$1(){
  cggucu.$clinit_RootPanel$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.RootPanel$1 = function RootPanel$1(){
  cggucu.$clinit_RootPanel$1();
  Object_0.call(this);
  this.$init_549();
}
;
defineClass(623, 1, {1:1}, cggucu.RootPanel$1);
_.$init_549 = function $init_549(){
}
;
_.execute_3 = function execute_8(w){
  if (w.isAttached()) {
    w.onDetach();
  }
}
;
cggl.Lcom_google_gwt_user_client_ui_RootPanel$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'RootPanel/1', 623, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_RootPanel$2 = function $clinit_RootPanel$2(){
  cggucu.$clinit_RootPanel$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.RootPanel$2 = function RootPanel$2(){
  cggucu.$clinit_RootPanel$2();
  Object_0.call(this);
  this.$init_550();
}
;
defineClass(624, 1, {816:1, 21:1, 1:1}, cggucu.RootPanel$2);
_.$init_550 = function $init_550(){
}
;
_.onClose_1 = function onClose_0(closeEvent){
  cggucu.detachWidgets();
}
;
cggl.Lcom_google_gwt_user_client_ui_RootPanel$2_2_classLit = createForClass('com.google.gwt.user.client.ui', 'RootPanel/2', 624, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_RootPanel$DefaultRootPanel = function $clinit_RootPanel$DefaultRootPanel(){
  cggucu.$clinit_RootPanel$DefaultRootPanel = emptyMethod;
  cggucu.$clinit_RootPanel();
}
;
cggucu.RootPanel$DefaultRootPanel = function RootPanel$DefaultRootPanel(){
  cggucu.$clinit_RootPanel$DefaultRootPanel();
  cggucu.RootPanel.call(this, cggucu.getBodyElement_0());
  this.$init_551();
}
;
defineClass(622, 202, {37:1, 55:1, 202:1, 31:1, 22:1, 1:1}, cggucu.RootPanel$DefaultRootPanel);
_.$init_551 = function $init_551(){
}
;
cggl.Lcom_google_gwt_user_client_ui_RootPanel$DefaultRootPanel_2_classLit = createForClass('com.google.gwt.user.client.ui', 'RootPanel/DefaultRootPanel', 622, cggl.Lcom_google_gwt_user_client_ui_RootPanel_2_classLit);
cggucu.$clinit_SimplePanel$1 = function $clinit_SimplePanel$1(){
  cggucu.$clinit_SimplePanel$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
cggucu.SimplePanel$1 = function SimplePanel$1(this$0){
  cggucu.$clinit_SimplePanel$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_552();
}
;
defineClass(620, 1, {1:1, 46:1}, cggucu.SimplePanel$1);
_.$init_552 = function $init_552(){
  this.hasElement = isNotNull(this.this$01.widget);
  this.returned = null;
}
;
_.forEachRemaining = function forEachRemaining_0(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_5(){
  return this.next_2();
}
;
_.hasNext_0 = function hasNext_0(){
  return this.hasElement;
}
;
_.next_2 = function next_4(){
  if (!this.hasElement || isNull(this.this$01.widget)) {
    throw toJs(new ju.NoSuchElementException);
  }
  this.hasElement = false;
  return this.returned = this.this$01.widget;
}
;
_.remove_4 = function remove_14(){
  if (isNotNull(this.returned)) {
    this.this$01.remove_0(this.returned);
  }
}
;
_.hasElement = false;
cggl.Lcom_google_gwt_user_client_ui_SimplePanel$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'SimplePanel/1', 620, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_ValueBoxBase = function $clinit_ValueBoxBase(){
  cggucu.$clinit_ValueBoxBase = emptyMethod;
  cggucu.$clinit_FocusWidget();
  cggucu.impl_9 = castTo(new cggucui.TextBoxImpl, 304);
}
;
cggucu.ValueBoxBase = function ValueBoxBase(elem, renderer, parser){
  cggucu.$clinit_ValueBoxBase();
  cggucu.FocusWidget_0.call(this, elem);
  this.$init_553();
  this.autoDirHandler = cggic.addTo_0(this, cggic.isBidiEnabled());
  this.renderer = renderer;
  this.parser = parser;
}
;
defineClass(387, 227, {37:1, 31:1, 22:1, 1:1});
_.$init_553 = function $init_553(){
}
;
_.addChangeHandler = function addChangeHandler_0(handler){
  return this.addDomHandler(handler, cggedc.getType_14());
}
;
_.addValueChangeHandler = function addValueChangeHandler_2(handler){
  if (!this.valueChangeHandlerInitialized) {
    this.valueChangeHandlerInitialized = true;
    this.addChangeHandler(new cggucu.ValueBoxBase$1(this));
  }
  return this.addHandler(handler, cggels.getType_37());
}
;
_.getDirection = function getDirection_0(){
  return cggic.getDirectionOnElement(this.getElement());
}
;
_.getName_0 = function getName_10(){
  return cggdc.$getPropertyString(this.getElement(), 'name');
}
;
_.getText = function getText_6(){
  return cggdc.$getPropertyString(this.getElement(), 'value');
}
;
_.getValue_1 = function getValue_7(){
  var e;
  try {
    return this.getValueOrThrow();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 391)) {
      e = $e0;
      return null;
    }
     else 
      throw toJs($e0);
  }
}
;
_.getValueOrThrow = function getValueOrThrow(){
  var parseResult, text_0;
  text_0 = this.getText();
  parseResult = this.parser.parse_13(text_0);
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2('', text_0)) {
    return null;
  }
  return parseResult;
}
;
_.onBrowserEvent = function onBrowserEvent_2(event_0){
  var type_0;
  type_0 = cgguc.eventGetType_0(event_0);
  if ((type_0 & 896) != 0) {
    this.currentEvent = event_0;
    getClassPrototype(22).onBrowserEvent.call(this, event_0);
    this.currentEvent = null;
  }
   else {
    getClassPrototype(22).onBrowserEvent.call(this, event_0);
  }
}
;
_.onLoad_0 = function onLoad_9(){
  getClassPrototype(22).onLoad_0.call(this);
  this.autoDirHandler.refreshDirection();
}
;
_.setDirection = function setDirection_1(direction){
  cggic.setDirectionOnElement(this.getElement(), direction);
}
;
_.setDirectionEstimator = function setDirectionEstimator_4(directionEstimator){
  this.autoDirHandler.setDirectionEstimator(directionEstimator);
}
;
_.setName_0 = function setName_6(name_0){
  cggdc.$setPropertyString_0(this.getElement(), 'name', name_0);
}
;
_.setText = function setText_5(text_0){
  cggdc.$setPropertyString_0(this.getElement(), 'value', jsNotEquals(text_0, null)?text_0:'');
  this.autoDirHandler.refreshDirection();
}
;
_.valueChangeHandlerInitialized = false;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ValueBoxBase', 387, cggl.Lcom_google_gwt_user_client_ui_FocusWidget_2_classLit);
cggucu.$clinit_TextBoxBase = function $clinit_TextBoxBase(){
  cggucu.$clinit_TextBoxBase = emptyMethod;
  cggucu.$clinit_ValueBoxBase();
  cggucu.ALIGN_CENTER_0 = new cggucu.TextBoxBase$TextAlignConstant((cggucu.$clinit_ValueBoxBase$TextAlignment() , cggucu.CENTER_2));
  cggucu.ALIGN_JUSTIFY_0 = new cggucu.TextBoxBase$TextAlignConstant((cggucu.$clinit_ValueBoxBase$TextAlignment() , cggucu.JUSTIFY_0));
  cggucu.ALIGN_LEFT_0 = new cggucu.TextBoxBase$TextAlignConstant((cggucu.$clinit_ValueBoxBase$TextAlignment() , cggucu.LEFT_2));
  cggucu.ALIGN_RIGHT_0 = new cggucu.TextBoxBase$TextAlignConstant((cggucu.$clinit_ValueBoxBase$TextAlignment() , cggucu.RIGHT_2));
}
;
cggucu.TextBoxBase = function TextBoxBase(elem){
  cggucu.$clinit_TextBoxBase();
  cggucu.ValueBoxBase.call(this, elem, cggtst.instance_7(), cggtst.instance_6());
  this.$init_554();
}
;
defineClass(780, 387, {37:1, 31:1, 22:1, 1:1});
_.$init_554 = function $init_554(){
}
;
_.getValue_1 = function getValue_8(){
  return this.getValue_0();
}
;
_.getValue_0 = function getValue_9(){
  var raw;
  raw = castToString(getClassPrototype(387).getValue_1.call(this));
  return jsEquals(raw, null)?'':raw;
}
;
cggl.Lcom_google_gwt_user_client_ui_TextBoxBase_2_classLit = createForClass('com.google.gwt.user.client.ui', 'TextBoxBase', 780, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase_2_classLit);
cggucu.$clinit_TextBox = function $clinit_TextBox(){
  cggucu.$clinit_TextBox = emptyMethod;
  cggucu.$clinit_TextBoxBase();
}
;
cggucu.TextBox = function TextBox(){
  cggucu.$clinit_TextBox();
  cggucu.TextBox_0.call(this, cggdc.$createTextInputElement(cggdc.get_19()), 'gwt-TextBox');
}
;
cggucu.TextBox_0 = function TextBox_0(element, styleName){
  cggucu.TextBoxBase.call(this, element);
  this.$init_555();
  if (jsNotEquals(styleName, null)) {
    this.setStyleName(styleName);
  }
}
;
defineClass(207, 780, {37:1, 31:1, 22:1, 1:1}, cggucu.TextBox);
_.$init_555 = function $init_555(){
}
;
cggl.Lcom_google_gwt_user_client_ui_TextBox_2_classLit = createForClass('com.google.gwt.user.client.ui', 'TextBox', 207, cggl.Lcom_google_gwt_user_client_ui_TextBoxBase_2_classLit);
cggucu.$clinit_TextBoxBase$TextAlignConstant = function $clinit_TextBoxBase$TextAlignConstant(){
  cggucu.$clinit_TextBoxBase$TextAlignConstant = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.TextBoxBase$TextAlignConstant = function TextBoxBase$TextAlignConstant(value_0){
  cggucu.$clinit_TextBoxBase$TextAlignConstant();
  Object_0.call(this);
  this.$init_556();
  this.value_0 = value_0;
}
;
defineClass(247, 1, {1:1}, cggucu.TextBoxBase$TextAlignConstant);
_.$init_556 = function $init_556(){
}
;
cggl.Lcom_google_gwt_user_client_ui_TextBoxBase$TextAlignConstant_2_classLit = createForClass('com.google.gwt.user.client.ui', 'TextBoxBase/TextAlignConstant', 247, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_UIObject$DebugIdImpl = function $clinit_UIObject$DebugIdImpl(){
  cggucu.$clinit_UIObject$DebugIdImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.UIObject$DebugIdImpl = function UIObject$DebugIdImpl(){
  cggucu.$clinit_UIObject$DebugIdImpl();
  Object_0.call(this);
  this.$init_557();
}
;
defineClass(229, 1, {229:1, 1:1}, cggucu.UIObject$DebugIdImpl);
_.$init_557 = function $init_557(){
}
;
cggl.Lcom_google_gwt_user_client_ui_UIObject$DebugIdImpl_2_classLit = createForClass('com.google.gwt.user.client.ui', 'UIObject/DebugIdImpl', 229, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_UIObject$DebugIdImplEnabled = function $clinit_UIObject$DebugIdImplEnabled(){
  cggucu.$clinit_UIObject$DebugIdImplEnabled = emptyMethod;
}
;
defineClass(982, 229, {229:1, 1:1});
cggl.Lcom_google_gwt_user_client_ui_UIObject$DebugIdImplEnabled_2_classLit = createForClass('com.google.gwt.user.client.ui', 'UIObject/DebugIdImplEnabled', 982, cggl.Lcom_google_gwt_user_client_ui_UIObject$DebugIdImpl_2_classLit);
cggucu.$clinit_ValueBoxBase$1 = function $clinit_ValueBoxBase$1(){
  cggucu.$clinit_ValueBoxBase$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cggucu.ValueBoxBase$1 = function ValueBoxBase$1(this$0){
  cggucu.$clinit_ValueBoxBase$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_558();
}
;
defineClass(785, 1, {1352:1, 21:1, 1:1}, cggucu.ValueBoxBase$1);
_.$init_558 = function $init_558(){
}
;
_.onChange_1 = function onChange_4(event_0){
  cggels.fire_4(this.this$01, this.this$01.getValue_1());
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$1_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ValueBoxBase/1', 785, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_ValueBoxBase$TextAlignment = function $clinit_ValueBoxBase$TextAlignment(){
  cggucu.$clinit_ValueBoxBase$TextAlignment = emptyMethod;
  jl.$clinit_Enum();
  cggucu.CENTER_2 = new cggucu.ValueBoxBase$TextAlignment$1('CENTER', 0);
  cggucu.JUSTIFY_0 = new cggucu.ValueBoxBase$TextAlignment$2('JUSTIFY', 1);
  cggucu.LEFT_2 = new cggucu.ValueBoxBase$TextAlignment$3('LEFT', 2);
  cggucu.RIGHT_2 = new cggucu.ValueBoxBase$TextAlignment$4('RIGHT', 3);
}
;
cggucu.ValueBoxBase$TextAlignment = function ValueBoxBase$TextAlignment(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_559();
}
;
cggucu.valueOf_18 = function valueOf_18(name_0){
  cggucu.$clinit_ValueBoxBase$TextAlignment();
  return valueOf((cggucu.$clinit_ValueBoxBase$TextAlignment$Map() , cggucu.$MAP_17), name_0);
}
;
cggucu.values_18 = function values_18(){
  cggucu.$clinit_ValueBoxBase$TextAlignment();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, 1), {4:1, 1:1, 7:1}, 110, 0, [cggucu.CENTER_2, cggucu.JUSTIFY_0, cggucu.LEFT_2, cggucu.RIGHT_2]);
}
;
defineClass(110, 11, {110:1, 4:1, 10:1, 11:1, 1:1});
_.$init_559 = function $init_559(){
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment', 110, cggl.Ljava_lang_Enum_2_classLit, cggucu.values_18, cggucu.valueOf_18);
cggucu.$clinit_ValueBoxBase$TextAlignment$1 = function $clinit_ValueBoxBase$TextAlignment$1(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$1 = emptyMethod;
  cggucu.$clinit_ValueBoxBase$TextAlignment();
}
;
cggucu.ValueBoxBase$TextAlignment$1 = function ValueBoxBase$TextAlignment$1(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment$1();
  cggucu.ValueBoxBase$TextAlignment.call(this, enum$name, enum$ordinal);
  this.$init_560();
}
;
defineClass(781, 110, {110:1, 4:1, 10:1, 11:1, 1:1}, cggucu.ValueBoxBase$TextAlignment$1);
_.$init_560 = function $init_560(){
}
;
_.getTextAlignString_0 = function getTextAlignString_0(){
  return 'center';
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$1_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/1', 781, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, null, null);
cggucu.$clinit_ValueBoxBase$TextAlignment$2 = function $clinit_ValueBoxBase$TextAlignment$2(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$2 = emptyMethod;
  cggucu.$clinit_ValueBoxBase$TextAlignment();
}
;
cggucu.ValueBoxBase$TextAlignment$2 = function ValueBoxBase$TextAlignment$2(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment$2();
  cggucu.ValueBoxBase$TextAlignment.call(this, enum$name, enum$ordinal);
  this.$init_561();
}
;
defineClass(782, 110, {110:1, 4:1, 10:1, 11:1, 1:1}, cggucu.ValueBoxBase$TextAlignment$2);
_.$init_561 = function $init_561(){
}
;
_.getTextAlignString_0 = function getTextAlignString_1(){
  return 'justify';
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$2_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/2', 782, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, null, null);
cggucu.$clinit_ValueBoxBase$TextAlignment$3 = function $clinit_ValueBoxBase$TextAlignment$3(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$3 = emptyMethod;
  cggucu.$clinit_ValueBoxBase$TextAlignment();
}
;
cggucu.ValueBoxBase$TextAlignment$3 = function ValueBoxBase$TextAlignment$3(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment$3();
  cggucu.ValueBoxBase$TextAlignment.call(this, enum$name, enum$ordinal);
  this.$init_562();
}
;
defineClass(783, 110, {110:1, 4:1, 10:1, 11:1, 1:1}, cggucu.ValueBoxBase$TextAlignment$3);
_.$init_562 = function $init_562(){
}
;
_.getTextAlignString_0 = function getTextAlignString_2(){
  return 'left';
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$3_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/3', 783, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, null, null);
cggucu.$clinit_ValueBoxBase$TextAlignment$4 = function $clinit_ValueBoxBase$TextAlignment$4(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$4 = emptyMethod;
  cggucu.$clinit_ValueBoxBase$TextAlignment();
}
;
cggucu.ValueBoxBase$TextAlignment$4 = function ValueBoxBase$TextAlignment$4(enum$name, enum$ordinal){
  cggucu.$clinit_ValueBoxBase$TextAlignment$4();
  cggucu.ValueBoxBase$TextAlignment.call(this, enum$name, enum$ordinal);
  this.$init_563();
}
;
defineClass(784, 110, {110:1, 4:1, 10:1, 11:1, 1:1}, cggucu.ValueBoxBase$TextAlignment$4);
_.$init_563 = function $init_563(){
}
;
_.getTextAlignString_0 = function getTextAlignString_3(){
  return 'right';
}
;
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$4_2_classLit = createForEnum('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/4', 784, cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment_2_classLit, null, null);
cggucu.$clinit_ValueBoxBase$TextAlignment$Map = function $clinit_ValueBoxBase$TextAlignment$Map(){
  cggucu.$clinit_ValueBoxBase$TextAlignment$Map = emptyMethod;
  cggucu.$MAP_17 = createValueOfMap(cggucu.values_18());
}
;
defineClass(1330, 1, {1:1});
cggl.Lcom_google_gwt_user_client_ui_ValueBoxBase$TextAlignment$Map_2_classLit = createForClass('com.google.gwt.user.client.ui', 'ValueBoxBase/TextAlignment/Map', 1330, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_WidgetCollection = function $clinit_WidgetCollection(){
  cggucu.$clinit_WidgetCollection = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
}
;
cggucu.WidgetCollection = function WidgetCollection(parent_0){
  cggucu.$clinit_WidgetCollection();
  Object_0.call(this);
  this.$init_564();
  this.parent_0 = parent_0;
  this.array = initUnidimensionalArray(cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit, {4:1, 1:1, 7:1}, 22, 4, 0, 1);
}
;
defineClass(708, 1, {1:1}, cggucu.WidgetCollection);
_.$init_564 = function $init_564(){
}
;
_.forEach_0 = function forEach_3(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_4(){
  return jl.$spliterator(this);
}
;
_.add_8 = function add_27(w){
  this.insert_1(w, this.size_0);
}
;
_.indexOf_1 = function indexOf_4(w){
  var i;
  for (i = 0; i < this.size_0; ++i) {
    if (jsEquals(this.array[i], w)) {
      return i;
    }
  }
  return -1;
}
;
_.insert_1 = function insert_3(w, beforeIndex){
  var i, i0, newArray;
  if (beforeIndex < 0 || beforeIndex > this.size_0) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
  if (this.size_0 == this.array.length) {
    newArray = initUnidimensionalArray(cggl.Lcom_google_gwt_user_client_ui_Widget_2_classLit, {4:1, 1:1, 7:1}, 22, this.array.length * 2, 0, 1);
    for (i0 = 0; i0 < this.array.length; ++i0) {
      setCheck(newArray, i0, this.array[i0]);
    }
    this.array = newArray;
  }
  ++this.size_0;
  for (i = this.size_0 - 1; i > beforeIndex; --i) {
    setCheck(this.array, i, this.array[i - 1]);
  }
  setCheck(this.array, beforeIndex, w);
}
;
_.iterator = function iterator_8(){
  return new cggucu.WidgetCollection$WidgetIterator(this);
}
;
_.remove_2 = function remove_15(index_0){
  var i;
  if (index_0 < 0 || index_0 >= this.size_0) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
  --this.size_0;
  for (i = index_0; i < this.size_0; ++i) {
    setCheck(this.array, i, this.array[i + 1]);
  }
  setCheck(this.array, this.size_0, null);
}
;
_.remove_5 = function remove_16(w){
  var index_0;
  index_0 = this.indexOf_1(w);
  if (index_0 == -1) {
    throw toJs(new ju.NoSuchElementException);
  }
  this.remove_2(index_0);
}
;
_.size_1 = function size_8(){
  return this.size_0;
}
;
_.size_0 = 0;
cggucu.INITIAL_SIZE = 4;
cggl.Lcom_google_gwt_user_client_ui_WidgetCollection_2_classLit = createForClass('com.google.gwt.user.client.ui', 'WidgetCollection', 708, cggl.Ljava_lang_Object_2_classLit);
cggucu.$clinit_WidgetCollection$WidgetIterator = function $clinit_WidgetCollection$WidgetIterator(){
  cggucu.$clinit_WidgetCollection$WidgetIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
cggucu.WidgetCollection$WidgetIterator = function WidgetCollection$WidgetIterator(this$0){
  cggucu.$clinit_WidgetCollection$WidgetIterator();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_565();
}
;
defineClass(709, 1, {1:1, 46:1}, cggucu.WidgetCollection$WidgetIterator);
_.$init_565 = function $init_565(){
  this.index_0 = 0;
}
;
_.forEachRemaining = function forEachRemaining_1(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_7(){
  return this.next_2();
}
;
_.hasNext_0 = function hasNext_1(){
  return this.index_0 < this.this$01.size_0;
}
;
_.next_2 = function next_6(){
  if (this.index_0 >= this.this$01.size_0) {
    throw toJs(new ju.NoSuchElementException);
  }
  this.currentWidget = this.this$01.array[this.index_0];
  this.index_0++;
  return this.currentWidget;
}
;
_.remove_4 = function remove_17(){
  if (isNull(this.currentWidget)) {
    throw toJs(new jl.IllegalStateException);
  }
  this.this$01.parent_0.remove_0(this.currentWidget);
  this.index_0--;
  this.currentWidget = null;
}
;
_.index_0 = 0;
cggl.Lcom_google_gwt_user_client_ui_WidgetCollection$WidgetIterator_2_classLit = createForClass('com.google.gwt.user.client.ui', 'WidgetCollection/WidgetIterator', 709, cggl.Ljava_lang_Object_2_classLit);
cggucui.$clinit_FocusImpl = function $clinit_FocusImpl(){
  cggucui.$clinit_FocusImpl = emptyMethod;
  jl.$clinit_Object();
  cggucui.implPanel = castTo(new cggucui.FocusImplSafari, 233);
  cggucui.implWidget = instanceOf(cggucui.implPanel, 238)?new cggucui.FocusImpl:cggucui.implPanel;
}
;
cggucui.FocusImpl = function FocusImpl(){
  cggucui.$clinit_FocusImpl();
  Object_0.call(this);
  this.$init_566();
}
;
cggucui.getFocusImplForPanel = function getFocusImplForPanel(){
  cggucui.$clinit_FocusImpl();
  return cggucui.implPanel;
}
;
cggucui.getFocusImplForWidget = function getFocusImplForWidget(){
  cggucui.$clinit_FocusImpl();
  return cggucui.implWidget;
}
;
defineClass(233, 1, {1:1}, cggucui.FocusImpl);
_.$init_566 = function $init_566(){
}
;
_.blur_1 = function blur_1(elem){
  cggdc.$blur(elem);
}
;
_.createFocusable = function createFocusable(){
  var e;
  e = cggcc.$cast(cggdc.$createDivElement(cggdc.get_19()));
  cggdc.$setTabIndex(e, 0);
  return e;
}
;
_.focus_1 = function focus_0(elem){
  cggdc.$focus(elem);
}
;
_.getTabIndex_0 = function getTabIndex_4(elem){
  return cggdc.$getTabIndex(elem);
}
;
_.setTabIndex_0 = function setTabIndex_2(elem, index_0){
  cggdc.$setTabIndex(elem, index_0);
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_FocusImpl_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'FocusImpl', 233, cggl.Ljava_lang_Object_2_classLit);
cggucui.$clinit_FocusImplStandard = function $clinit_FocusImplStandard(){
  cggucui.$clinit_FocusImplStandard = emptyMethod;
  cggucui.$clinit_FocusImpl();
}
;
cggucui.FocusImplStandard = function FocusImplStandard(){
  cggucui.$clinit_FocusImplStandard();
  cggucui.FocusImpl.call(this);
  this.$init_567();
}
;
cggucui.createFocusable0 = function createFocusable0(focusHandler){
  var div = $doc.createElement('div');
  div.tabIndex = 0;
  var input_0 = $doc.createElement('input');
  input_0.type = 'text';
  input_0.tabIndex = -1;
  input_0.setAttribute('aria-hidden', 'true');
  var style = input_0.style;
  style.opacity = 0;
  style.height = '1px';
  style.width = '1px';
  style.zIndex = -1;
  style.overflow = 'hidden';
  style.position = 'absolute';
  input_0.addEventListener('focus', focusHandler, false);
  div.appendChild(input_0);
  return div;
}
;
defineClass(238, 233, {238:1, 1:1});
_.$init_567 = function $init_567(){
}
;
_.createFocusHandler = function createFocusHandler(){
  return function(evt){
    var div = this.parentNode;
    if (div.onfocus) {
      $wnd.setTimeout(function(){
        div.focus();
      }
      , 0);
    }
  }
  ;
}
;
_.createFocusable = function createFocusable_0(){
  return cggucui.createFocusable0(this.ensureFocusHandler());
}
;
_.ensureFocusHandler = function ensureFocusHandler(){
  return isNotNull(cggucui.focusHandler_0)?cggucui.focusHandler_0:(cggucui.focusHandler_0 = this.createFocusHandler());
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_FocusImplStandard_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'FocusImplStandard', 238, cggl.Lcom_google_gwt_user_client_ui_impl_FocusImpl_2_classLit);
cggucui.$clinit_FocusImplSafari = function $clinit_FocusImplSafari(){
  cggucui.$clinit_FocusImplSafari = emptyMethod;
  cggucui.$clinit_FocusImplStandard();
}
;
cggucui.FocusImplSafari = function FocusImplSafari(){
  cggucui.$clinit_FocusImplSafari();
  cggucui.FocusImplStandard.call(this);
  this.$init_568();
}
;
defineClass(711, 238, {233:1, 238:1, 1:1}, cggucui.FocusImplSafari);
_.$init_568 = function $init_568(){
}
;
_.blur_1 = function blur_2(elem){
  $wnd.setTimeout(function(){
    elem.blur();
  }
  , 0);
}
;
_.focus_1 = function focus_1(elem){
  $wnd.setTimeout(function(){
    elem.focus();
  }
  , 0);
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_FocusImplSafari_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'FocusImplSafari', 711, cggl.Lcom_google_gwt_user_client_ui_impl_FocusImplStandard_2_classLit);
cggucui.$clinit_PopupImpl = function $clinit_PopupImpl(){
  cggucui.$clinit_PopupImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggucui.PopupImpl = function PopupImpl(){
  cggucui.$clinit_PopupImpl();
  Object_0.call(this);
  this.$init_569();
}
;
defineClass(299, 1, {299:1, 1:1}, cggucui.PopupImpl);
_.$init_569 = function $init_569(){
}
;
_.createElement_4 = function createElement_6(){
  return cggdc.$createDivElement(cggdc.get_19());
}
;
_.getContainerElement_0 = function getContainerElement_2(popup){
  return popup;
}
;
_.getStyleElement_0 = function getStyleElement_1(popup){
  return cggdc.$getParentElement(popup);
}
;
_.setClip = function setClip(popup, rect){
  cggdc.$setProperty_0(cggdc.$getStyle(popup), 'clip', rect);
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_PopupImpl_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'PopupImpl', 299, cggl.Ljava_lang_Object_2_classLit);
cggucui.$clinit_TextBoxImpl = function $clinit_TextBoxImpl(){
  cggucui.$clinit_TextBoxImpl = emptyMethod;
  jl.$clinit_Object();
}
;
cggucui.TextBoxImpl = function TextBoxImpl(){
  cggucui.$clinit_TextBoxImpl();
  Object_0.call(this);
  this.$init_570();
}
;
defineClass(304, 1, {304:1, 1:1}, cggucui.TextBoxImpl);
_.$init_570 = function $init_570(){
}
;
cggl.Lcom_google_gwt_user_client_ui_impl_TextBoxImpl_2_classLit = createForClass('com.google.gwt.user.client.ui.impl', 'TextBoxImpl', 304, cggl.Ljava_lang_Object_2_classLit);
cgguc2.$clinit_UserAgentAsserter = function $clinit_UserAgentAsserter(){
  cgguc2.$clinit_UserAgentAsserter = emptyMethod;
}
;
defineClass(825, 1, {1:1});
cggl.Lcom_google_gwt_useragent_client_UserAgentAsserter_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentAsserter', 825, cggl.Ljava_lang_Object_2_classLit);
cgguc2.$clinit_UserAgentAsserter$UserAgentAsserterDisabled = function $clinit_UserAgentAsserter$UserAgentAsserterDisabled(){
  cgguc2.$clinit_UserAgentAsserter$UserAgentAsserterDisabled = emptyMethod;
  jl.$clinit_Object();
}
;
cgguc2.UserAgentAsserter$UserAgentAsserterDisabled = function UserAgentAsserter$UserAgentAsserterDisabled(){
  cgguc2.$clinit_UserAgentAsserter$UserAgentAsserterDisabled();
  Object_0.call(this);
  this.$init_571();
}
;
defineClass(396, 1, {99:1, 1:1}, cgguc2.UserAgentAsserter$UserAgentAsserterDisabled);
_.$init_571 = function $init_571(){
}
;
_.onModuleLoad = function onModuleLoad_4(){
}
;
cggl.Lcom_google_gwt_useragent_client_UserAgentAsserter$UserAgentAsserterDisabled_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentAsserter/UserAgentAsserterDisabled', 396, cggl.Ljava_lang_Object_2_classLit);
cgguc2.$clinit_UserAgentAsserter$UserAgentAssertionError = function $clinit_UserAgentAsserter$UserAgentAssertionError(){
  cgguc2.$clinit_UserAgentAsserter$UserAgentAssertionError = emptyMethod;
}
;
defineClass(826, 44, {4:1, 123:1, 1:1, 20:1});
cggl.Lcom_google_gwt_useragent_client_UserAgentAsserter$UserAgentAssertionError_2_classLit = createForClass('com.google.gwt.useragent.client', 'UserAgentAsserter/UserAgentAssertionError', 826, cggl.Ljava_lang_AssertionError_2_classLit);
cgwbes.$clinit_SimpleEventBus$1 = function $clinit_SimpleEventBus$1(){
  cgwbes.$clinit_SimpleEventBus$1 = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.SimpleEventBus$1 = function SimpleEventBus$1(this$0, val$type, val$source, val$handler){
  cgwbes.$clinit_SimpleEventBus$1();
  this.this$01 = this$0;
  this.val$type2 = val$type;
  this.val$source3 = val$source;
  this.val$handler4 = val$handler;
  Object_0.call(this);
  this.$init_574();
}
;
defineClass(544, 1, {1:1}, cgwbes.SimpleEventBus$1);
_.$init_574 = function $init_574(){
}
;
_.removeHandler = function removeHandler_0(){
  this.this$01.doRemove(this.val$type2, this.val$source3, this.val$handler4);
}
;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus$1_2_classLit = createForClass('com.google.web.bindery.event.shared', 'SimpleEventBus/1', 544, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_SimpleEventBus$Command = function $clinit_SimpleEventBus$Command(){
  cgwbes.$clinit_SimpleEventBus$Command = emptyMethod;
}
;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus$Command_2_classLit = createForInterface('com.google.web.bindery.event.shared', 'SimpleEventBus/Command');
cgwbes.$clinit_SimpleEventBus$2 = function $clinit_SimpleEventBus$2(){
  cgwbes.$clinit_SimpleEventBus$2 = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.SimpleEventBus$2 = function SimpleEventBus$2(this$0, val$type, val$source, val$handler){
  cgwbes.$clinit_SimpleEventBus$2();
  this.this$01 = this$0;
  this.val$type2 = val$type;
  this.val$source3 = val$source;
  this.val$handler4 = val$handler;
  Object_0.call(this);
  this.$init_575();
}
;
defineClass(545, 1, {815:1, 1:1}, cgwbes.SimpleEventBus$2);
_.$init_575 = function $init_575(){
}
;
_.execute_1 = function execute_9(){
  this.this$01.doAddNow(this.val$type2, this.val$source3, this.val$handler4);
}
;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus$2_2_classLit = createForClass('com.google.web.bindery.event.shared', 'SimpleEventBus/2', 545, cggl.Ljava_lang_Object_2_classLit);
cgwbes.$clinit_SimpleEventBus$3 = function $clinit_SimpleEventBus$3(){
  cgwbes.$clinit_SimpleEventBus$3 = emptyMethod;
  jl.$clinit_Object();
}
;
cgwbes.SimpleEventBus$3 = function SimpleEventBus$3(this$0, val$type, val$source, val$handler){
  cgwbes.$clinit_SimpleEventBus$3();
  this.this$01 = this$0;
  this.val$type2 = val$type;
  this.val$source3 = val$source;
  this.val$handler4 = val$handler;
  Object_0.call(this);
  this.$init_576();
}
;
defineClass(546, 1, {815:1, 1:1}, cgwbes.SimpleEventBus$3);
_.$init_576 = function $init_576(){
}
;
_.execute_1 = function execute_10(){
  this.this$01.doRemoveNow(this.val$type2, this.val$source3, this.val$handler4);
}
;
cggl.Lcom_google_web_bindery_event_shared_SimpleEventBus$3_2_classLit = createForClass('com.google.web.bindery.event.shared', 'SimpleEventBus/3', 546, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Color = function $clinit_Color(){
  ja.$clinit_Color = emptyMethod;
  jl.$clinit_Object();
  ja.white = new ja.Color(255, 255, 255);
  ja.WHITE_0 = ja.white;
  ja.gray = new ja.Color(128, 128, 128);
  ja.black = new ja.Color(0, 0, 0);
}
;
ja.Color = function Color(red, green, blue){
  ja.Color_0.call(this, red, green, blue, 255);
}
;
ja.Color_0 = function Color_0(red, green, blue, alpha_0){
  Object_0.call(this);
  this.$init_577();
  this.rgbValue = (alpha_0 & 255) << 24 | (red & 255) << 16 | (green & 255) << 8 | (blue & 255) << 0;
}
;
ja.RGBtoHSB = function RGBtoHSB(r, g, b, hsbvals){
  ja.$clinit_Color();
  return ja.RGBtoHSV(r / 255, g / 255, b / 255, hsbvals);
}
;
ja.RGBtoHSV = function RGBtoHSV(r, g, b, hsbvals){
  var brightness, delta, hue, max_0, min_0, saturation;
  hue = 0;
  saturation = 0;
  brightness = 0;
  if (jsEquals(hsbvals, null)) {
    hsbvals = initUnidimensionalArray(cggl.F_classLit, {65:1, 4:1, 1:1}, 5, 3, 15, 1);
  }
  min_0 = $wnd.Math.min(r, $wnd.Math.min(g, b));
  max_0 = $wnd.Math.max(r, $wnd.Math.max(g, b));
  brightness = max_0;
  delta = max_0 - min_0;
  if (delta == 0) {
    brightness = min_0;
    hue = 0;
    hsbvals[0] = hue;
    hsbvals[1] = saturation;
    hsbvals[2] = brightness;
    return hsbvals;
  }
  if (max_0 != 0)
    saturation = delta / max_0;
  else {
    saturation = 0;
    hue = 0;
    hsbvals[0] = hue;
    hsbvals[1] = saturation;
    hsbvals[2] = brightness;
    return hsbvals;
  }
  if (r == max_0)
    hue = (g - b) / delta;
  else if (g == max_0)
    hue = 2 + (b - r) / delta;
  else 
    hue = 4 + (r - g) / delta;
  hue *= 60;
  if (hue < 0)
    hue += 360;
  hsbvals[0] = hue / 360;
  hsbvals[1] = saturation;
  hsbvals[2] = brightness;
  return hsbvals;
}
;
defineClass(236, 1, {1:1}, ja.Color);
_.$init_577 = function $init_577(){
  this.realRGBValues = null;
  this.alphaValue = 0;
}
;
_.alphaValue = 0;
_.rgbValue = 0;
cggl.Ljava_awt_Color_2_classLit = createForClass('java.awt', 'Color', 236, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Dimension2D = function $clinit_Dimension2D(){
  jag.$clinit_Dimension2D = emptyMethod;
  jl.$clinit_Object();
}
;
jag.Dimension2D = function Dimension2D(){
  jag.$clinit_Dimension2D();
  Object_0.call(this);
  this.$init_578();
}
;
defineClass(667, 1, {1:1});
_.$init_578 = function $init_578(){
}
;
cggl.Ljava_awt_geom_Dimension2D_2_classLit = createForClass('java.awt.geom', 'Dimension2D', 667, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Dimension = function $clinit_Dimension(){
  ja.$clinit_Dimension = emptyMethod;
  jag.$clinit_Dimension2D();
}
;
ja.Dimension = function Dimension(width_0, height){
  ja.$clinit_Dimension();
  jag.Dimension2D.call(this);
  this.$init_579();
  this.width_0 = width_0;
  this.height_0 = height;
}
;
defineClass(190, 667, {190:1, 4:1, 1:1}, ja.Dimension);
_.$init_579 = function $init_579(){
}
;
_.equals_0 = function equals_21(obj){
  var d;
  if (maskUndefined(this) === maskUndefined(obj))
    return true;
  if (instanceOf(obj, 190)) {
    d = castTo(obj, 190);
    return this.width_0 == d.width_0 && this.height_0 == d.height_0;
  }
  return false;
}
;
_.getHeight = function getHeight_5(){
  return this.height_0;
}
;
_.getWidth = function getWidth_5(){
  return this.width_0;
}
;
_.hashCode_1 = function hashCode_9(){
  var sum;
  sum = this.width_0 + this.height_0;
  return sum * 37;
}
;
_.setSize_1 = function setSize_2(width_0, height){
  this.width_0 = width_0;
  this.height_0 = height;
}
;
_.height_0 = 0;
_.width_0 = 0;
cggl.Ljava_awt_Dimension_2_classLit = createForClass('java.awt', 'Dimension', 190, cggl.Ljava_awt_geom_Dimension2D_2_classLit);
ja.$clinit_Font = function $clinit_Font(){
  ja.$clinit_Font = emptyMethod;
  jl.$clinit_Object();
  ja.helveticaSizes = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [5.55, 15, 15, 15, 15, 15, 15, 15, 15, 5.56, 5.56, 5.56, 5.56, 5.56, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 5.56, 5.56, 7.1, 11.12, 11.12, 17.78, 13.34, 3.82, 6.66, 6.66, 7.78, 11.68, 5.56, 6.66, 5.56, 5.56, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 11.12, 5.56, 5.56, 11.68, 11.68, 11.68, 11.12, 20.3, 13.34, 13.34, 14.44, 14.44, 13.34, 12.22, 15.56, 14.44, 5.56, 10, 13.34, 11.12, 16.66, 14.44, 15.56, 13.34, 15.56, 14.44, 13.34, 12.22, 14.44, 13.34, 18.88, 13.34, 13.34, 12.22, 5.56, 5.56, 5.56, 9.38, 11.12, 6.66, 11.12, 11.12, 10, 11.12, 11.12, 5.56, 11.12, 11.12, 4.44, 4.44, 10, 4.44, 16.66, 11.12, 11.12, 11.12, 11.12, 6.66, 10, 5.56, 11.12, 10, 14.44, 10, 10, 10, 6.68, 5.2, 6.68, 11.68, 10.5]);
}
;
ja.Font = function Font(name_0, type_0, size_0){
  ja.$clinit_Font();
  Object_0.call(this);
  this.$init_580();
  this.name_0 = name_0;
  this.size_0 = size_0;
}
;
defineClass(344, 1, {1:1}, ja.Font);
_.$init_580 = function $init_580(){
}
;
_.getCharWidth = function getCharWidth(ch_0){
  var width_0;
  if (ch_0 < 128) {
    width_0 = ja.helveticaSizes[ch_0];
  }
   else {
    width_0 = 5.56;
  }
  return width_0 * this.size_0 / 20;
}
;
_.getName_0 = function getName_11(){
  return this.name_0;
}
;
_.getSize_0 = function getSize_6(){
  return this.size_0;
}
;
_.getStringBounds = function getStringBounds(theString, fontRenderContext){
  var width_0;
  width_0 = this.getStringWidth_0(theString);
  return new jag.Rectangle2D$Double(0, 0, width_0, 0);
}
;
_.getStringWidth_0 = function getStringWidth_1(text_0){
  var ch_0, i, n, total;
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2(this.name_0, 'Helvetica')) {
    total = 0;
    for (i = 0 , n = jl.length__I__devirtual$_0(text_0); i < n; i++) {
      ch_0 = jl.charAt_I_C__devirtual$_0(text_0, i);
      total += this.getCharWidth(ch_0);
    }
    return total;
  }
   else {
    return this.getStringWidthCanvas(text_0);
  }
}
;
_.getStringWidthCanvas = function getStringWidthCanvas(text_0){
  var canvas = ja.canvas_0;
  if (!canvas) {
    canvas = $doc.createElement('canvas');
    ja.canvas_0 = canvas;
  }
  var f = '' + this.size_0 + 'px ' + this.name_0;
  var ctx = canvas.getContext('2d');
  ctx.font = f;
  var text_0 = ctx.measureText(text_0);
  return text_0.width;
}
;
_.size_0 = 0;
ja.PLAIN = 0;
ja.canvas_0 = null;
cggl.Ljava_awt_Font_2_classLit = createForClass('java.awt', 'Font', 344, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Graphics = function $clinit_Graphics(){
  ja.$clinit_Graphics = emptyMethod;
}
;
defineClass(764, 1, {1:1});
cggl.Ljava_awt_Graphics_2_classLit = createForClass('java.awt', 'Graphics', 764, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Graphics2D = function $clinit_Graphics2D(){
  ja.$clinit_Graphics2D = emptyMethod;
  jl.$clinit_Object();
}
;
ja.Graphics2D = function Graphics2D(){
  ja.$clinit_Graphics2D();
  Object_0.call(this);
  this.$init_581();
}
;
defineClass(646, 1, {1:1}, ja.Graphics2D);
_.$init_581 = function $init_581(){
}
;
_.getFontRenderContext = function getFontRenderContext(){
  return new jaf.FontRenderContext;
}
;
cggl.Ljava_awt_Graphics2D_2_classLit = createForClass('java.awt', 'Graphics2D', 646, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Point2D = function $clinit_Point2D(){
  jag.$clinit_Point2D = emptyMethod;
  jl.$clinit_Object();
}
;
jag.Point2D = function Point2D(){
  jag.$clinit_Point2D();
  Object_0.call(this);
  this.$init_582();
}
;
defineClass(118, 1, {118:1, 1:1});
_.$init_582 = function $init_582(){
}
;
_.equals_0 = function equals_22(obj){
  var p2d;
  if (maskUndefined(this) === maskUndefined(obj))
    return true;
  if (instanceOf(obj, 118)) {
    p2d = castTo(obj, 118);
    return this.getX_0() == p2d.getX_0() && this.getY_0() == p2d.getY_0();
  }
  return getClassPrototype(1).equals_0.call(this, obj);
}
;
_.hashCode_1 = function hashCode_10(){
  var sum;
  sum = this.getX_0() + this.getY_0();
  return round_int(sum) * 37;
}
;
cggl.Ljava_awt_geom_Point2D_2_classLit = createForClass('java.awt.geom', 'Point2D', 118, cggl.Ljava_lang_Object_2_classLit);
ja.$clinit_Point = function $clinit_Point(){
  ja.$clinit_Point = emptyMethod;
  jag.$clinit_Point2D();
}
;
ja.Point = function Point(){
  ja.$clinit_Point();
  ja.Point_0.call(this, 0, 0);
}
;
ja.Point_0 = function Point_0(x_0, y_0){
  ja.$clinit_Point();
  jag.Point2D.call(this);
  this.$init_583();
  this.x_0 = x_0;
  this.y_0 = y_0;
}
;
defineClass(113, 118, {113:1, 118:1, 1:1}, ja.Point, ja.Point_0);
_.$init_583 = function $init_583(){
}
;
_.equals_0 = function equals_23(obj){
  var pt;
  if (instanceOf(obj, 113)) {
    pt = castTo(obj, 113);
    return this.x_0 == pt.x_0 && this.y_0 == pt.y_0;
  }
  return getClassPrototype(118).equals_0.call(this, obj);
}
;
_.getX_0 = function getX_8(){
  return this.x_0;
}
;
_.getY_0 = function getY_8(){
  return this.y_0;
}
;
_.x_0 = 0;
_.y_0 = 0;
cggl.Ljava_awt_Point_2_classLit = createForClass('java.awt', 'Point', 113, cggl.Ljava_awt_geom_Point2D_2_classLit);
ja.$clinit_Shape = function $clinit_Shape(){
  ja.$clinit_Shape = emptyMethod;
}
;
cggl.Ljava_awt_Shape_2_classLit = createForInterface('java.awt', 'Shape');
jaf.$clinit_FontRenderContext = function $clinit_FontRenderContext(){
  jaf.$clinit_FontRenderContext = emptyMethod;
  jl.$clinit_Object();
}
;
jaf.FontRenderContext = function FontRenderContext(){
  jaf.$clinit_FontRenderContext();
  Object_0.call(this);
  this.$init_584();
}
;
defineClass(687, 1, {1:1}, jaf.FontRenderContext);
_.$init_584 = function $init_584(){
}
;
cggl.Ljava_awt_font_FontRenderContext_2_classLit = createForClass('java.awt.font', 'FontRenderContext', 687, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Line2D = function $clinit_Line2D(){
  jag.$clinit_Line2D = emptyMethod;
  jl.$clinit_Object();
}
;
jag.Line2D = function Line2D(){
  jag.$clinit_Line2D();
  Object_0.call(this);
  this.$init_585();
}
;
jag.ptSegDist_0 = function ptSegDist_0(x1, y1, x2, y2, px, py){
  return $wnd.Math.sqrt(jag.ptSegDistSq(x1, y1, x2, y2, px, py));
}
;
jag.ptSegDistSq = function ptSegDistSq(x1, y1, x2, y2, px, py){
  var dotprod, lenSq, projlenSq;
  x2 -= x1;
  y2 -= y1;
  px -= x1;
  py -= y1;
  dotprod = px * x2 + py * y2;
  if (dotprod <= 0) {
    projlenSq = 0;
  }
   else {
    px = x2 - px;
    py = y2 - py;
    dotprod = px * x2 + py * y2;
    if (dotprod <= 0) {
      projlenSq = 0;
    }
     else {
      projlenSq = dotprod * dotprod / (x2 * x2 + y2 * y2);
    }
  }
  lenSq = px * px + py * py - projlenSq;
  if (lenSq < 0) {
    lenSq = 0;
  }
  return lenSq;
}
;
defineClass(751, 1, {1:1});
_.$init_585 = function $init_585(){
}
;
_.ptSegDist = function ptSegDist(px, py){
  return jag.ptSegDist_0(this.getX1(), this.getY1(), this.getX2(), this.getY2(), px, py);
}
;
cggl.Ljava_awt_geom_Line2D_2_classLit = createForClass('java.awt.geom', 'Line2D', 751, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Line2D$Double = function $clinit_Line2D$Double(){
  jag.$clinit_Line2D$Double = emptyMethod;
  jag.$clinit_Line2D();
}
;
jag.Line2D$Double = function Line2D$Double(x1, y1, x2, y2){
  jag.$clinit_Line2D$Double();
  jag.Line2D.call(this);
  this.$init_586();
  this.setLine(x1, y1, x2, y2);
}
;
defineClass(318, 751, {4:1, 1:1}, jag.Line2D$Double);
_.$init_586 = function $init_586(){
}
;
_.getX1 = function getX1(){
  return this.x1;
}
;
_.getX2 = function getX2(){
  return this.x2;
}
;
_.getY1 = function getY1(){
  return this.y1;
}
;
_.getY2 = function getY2(){
  return this.y2;
}
;
_.setLine = function setLine(x1, y1, x2, y2){
  this.x1 = x1;
  this.y1 = y1;
  this.x2 = x2;
  this.y2 = y2;
}
;
_.x1 = 0;
_.x2 = 0;
_.y1 = 0;
_.y2 = 0;
cggl.Ljava_awt_geom_Line2D$Double_2_classLit = createForClass('java.awt.geom', 'Line2D/Double', 318, cggl.Ljava_awt_geom_Line2D_2_classLit);
jag.$clinit_Line2D$Float = function $clinit_Line2D$Float(){
  jag.$clinit_Line2D$Float = emptyMethod;
}
;
defineClass(1322, 751, {1:1});
cggl.Ljava_awt_geom_Line2D$Float_2_classLit = createForClass('java.awt.geom', 'Line2D/Float', 1322, cggl.Ljava_awt_geom_Line2D_2_classLit);
jag.$clinit_Point2D$Double = function $clinit_Point2D$Double(){
  jag.$clinit_Point2D$Double = emptyMethod;
  jag.$clinit_Point2D();
}
;
jag.Point2D$Double = function Point2D$Double(x_0, y_0){
  jag.$clinit_Point2D$Double();
  jag.Point2D.call(this);
  this.$init_587();
  this.x_0 = x_0;
  this.y_0 = y_0;
}
;
defineClass(182, 118, {118:1, 4:1, 1:1}, jag.Point2D$Double);
_.$init_587 = function $init_587(){
}
;
_.getX_0 = function getX_9(){
  return this.x_0;
}
;
_.getY_0 = function getY_9(){
  return this.y_0;
}
;
_.x_0 = 0;
_.y_0 = 0;
cggl.Ljava_awt_geom_Point2D$Double_2_classLit = createForClass('java.awt.geom', 'Point2D/Double', 182, cggl.Ljava_awt_geom_Point2D_2_classLit);
jag.$clinit_Point2D$Float = function $clinit_Point2D$Float(){
  jag.$clinit_Point2D$Float = emptyMethod;
}
;
defineClass(1215, 118, {118:1, 1:1});
cggl.Ljava_awt_geom_Point2D$Float_2_classLit = createForClass('java.awt.geom', 'Point2D/Float', 1215, cggl.Ljava_awt_geom_Point2D_2_classLit);
jag.$clinit_RectangularShape = function $clinit_RectangularShape(){
  jag.$clinit_RectangularShape = emptyMethod;
  jl.$clinit_Object();
}
;
jag.RectangularShape = function RectangularShape(){
  jag.$clinit_RectangularShape();
  Object_0.call(this);
  this.$init_588();
}
;
defineClass(686, 1, {1:1});
_.$init_588 = function $init_588(){
}
;
cggl.Ljava_awt_geom_RectangularShape_2_classLit = createForClass('java.awt.geom', 'RectangularShape', 686, cggl.Ljava_lang_Object_2_classLit);
jag.$clinit_Rectangle2D = function $clinit_Rectangle2D(){
  jag.$clinit_Rectangle2D = emptyMethod;
  jag.$clinit_RectangularShape();
}
;
jag.Rectangle2D = function Rectangle2D(){
  jag.$clinit_Rectangle2D();
  jag.RectangularShape.call(this);
  this.$init_589();
}
;
defineClass(179, 686, {179:1, 1:1});
_.$init_589 = function $init_589(){
}
;
_.contains_0 = function contains_11(x_0, y_0){
  var x0, y0;
  x0 = this.getX_0();
  y0 = this.getY_0();
  return x_0 >= x0 && y_0 >= y0 && x_0 < x0 + this.getWidth() && y_0 < y0 + this.getHeight();
}
;
_.equals_0 = function equals_24(obj){
  var r2d;
  if (maskUndefined(obj) === maskUndefined(this)) {
    return true;
  }
  if (instanceOf(obj, 179)) {
    r2d = castTo(obj, 179);
    return this.getX_0() == r2d.getX_0() && this.getY_0() == r2d.getY_0() && this.getWidth() == r2d.getWidth() && this.getHeight() == r2d.getHeight();
  }
  return false;
}
;
_.hashCode_1 = function hashCode_11(){
  var bits;
  bits = doubleToLongBits(this.getX_0());
  bits = add_22(bits, mul_0(doubleToLongBits(this.getY_0()), 37));
  bits = add_22(bits, mul_0(doubleToLongBits(this.getWidth()), 43));
  bits = add_22(bits, mul_0(doubleToLongBits(this.getHeight()), 47));
  return toInt_0(bits) ^ toInt_0(shr_0(bits, 32));
}
;
jag.OUT_BOTTOM = 8;
jag.OUT_LEFT = 1;
jag.OUT_RIGHT = 4;
jag.OUT_TOP = 2;
cggl.Ljava_awt_geom_Rectangle2D_2_classLit = createForClass('java.awt.geom', 'Rectangle2D', 179, cggl.Ljava_awt_geom_RectangularShape_2_classLit);
jag.$clinit_Rectangle2D$Double = function $clinit_Rectangle2D$Double(){
  jag.$clinit_Rectangle2D$Double = emptyMethod;
  jag.$clinit_Rectangle2D();
}
;
jag.Rectangle2D$Double = function Rectangle2D$Double(x_0, y_0, w, h){
  jag.$clinit_Rectangle2D$Double();
  jag.Rectangle2D.call(this);
  this.$init_590();
  this.setRect_0(x_0, y_0, w, h);
}
;
defineClass(688, 179, {179:1, 1:1}, jag.Rectangle2D$Double);
_.$init_590 = function $init_590(){
}
;
_.getHeight = function getHeight_6(){
  return this.height_0;
}
;
_.getWidth = function getWidth_6(){
  return this.width_0;
}
;
_.getX_0 = function getX_10(){
  return this.x_0;
}
;
_.getY_0 = function getY_10(){
  return this.y_0;
}
;
_.isEmpty_0 = function isEmpty_4(){
  return this.width_0 <= 0 || this.height_0 <= 0;
}
;
_.setRect_0 = function setRect_0(x_0, y_0, w, h){
  this.x_0 = x_0;
  this.y_0 = y_0;
  this.width_0 = w;
  this.height_0 = h;
}
;
_.height_0 = 0;
_.width_0 = 0;
_.x_0 = 0;
_.y_0 = 0;
cggl.Ljava_awt_geom_Rectangle2D$Double_2_classLit = createForClass('java.awt.geom', 'Rectangle2D/Double', 688, cggl.Ljava_awt_geom_Rectangle2D_2_classLit);
jag.$clinit_Rectangle2D$Float = function $clinit_Rectangle2D$Float(){
  jag.$clinit_Rectangle2D$Float = emptyMethod;
}
;
defineClass(1164, 179, {179:1, 1:1});
cggl.Ljava_awt_geom_Rectangle2D$Float_2_classLit = createForClass('java.awt.geom', 'Rectangle2D/Float', 1164, cggl.Ljava_awt_geom_Rectangle2D_2_classLit);
jai.$clinit_BufferedImage = function $clinit_BufferedImage(){
  jai.$clinit_BufferedImage = emptyMethod;
  jl.$clinit_Object();
}
;
jai.BufferedImage = function BufferedImage(width_0, height, typeIntArgb){
  jai.$clinit_BufferedImage();
  Object_0.call(this);
  this.$init_591();
}
;
defineClass(645, 1, {1:1}, jai.BufferedImage);
_.$init_591 = function $init_591(){
}
;
_.createGraphics = function createGraphics(){
  return new ja.Graphics2D;
}
;
jai.TYPE_CUSTOM = 0;
jai.TYPE_INT_ARGB = 2;
jai.TYPE_INT_ARGB_PRE = 3;
jai.TYPE_INT_RGB = 1;
cggl.Ljava_awt_image_BufferedImage_2_classLit = createForClass('java.awt.image', 'BufferedImage', 645, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_Reader = function $clinit_Reader(){
  ji.$clinit_Reader = emptyMethod;
  jl.$clinit_Object();
}
;
ji.Reader = function Reader(){
  ji.$clinit_Reader();
  Object_0.call(this);
  this.$init_592();
  this.lock = this;
}
;
defineClass(333, 1, {1:1});
_.$init_592 = function $init_592(){
  this.skipBuffer = null;
}
;
_.read_0 = function read(){
  var cb;
  cb = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, 1, 15, 1);
  if (this.read_1(cb, 0, 1) == -1)
    return -1;
  else 
    return cb[0];
}
;
ji.maxSkipBufferSize = 8192;
cggl.Ljava_io_Reader_2_classLit = createForClass('java.io', 'Reader', 333, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_BufferedReader = function $clinit_BufferedReader(){
  ji.$clinit_BufferedReader = emptyMethod;
  ji.$clinit_Reader();
}
;
ji.BufferedReader = function BufferedReader(source){
  ji.$clinit_BufferedReader();
  ji.Reader.call(this);
  this.$init_593();
  this.source = source;
  this.savedNextChar = -2;
}
;
defineClass(91, 333, {91:1, 1:1}, ji.BufferedReader);
_.$init_593 = function $init_593(){
}
;
_.close_0 = function close_1(){
}
;
_.getSource_0 = function getSource_1(){
  return this.source;
}
;
_.read_0 = function read_0(){
  var result;
  result = -1;
  if (this.savedNextChar != -2) {
    result = this.savedNextChar;
    this.savedNextChar = -2;
  }
   else {
    result = this.getSource_0().read_0();
  }
  return result;
}
;
_.read_1 = function read_1(cbuf, off, len){
  return this.source.read_1(cbuf, off, len);
}
;
_.readLine = function readLine(){
  var eol, nextChar, sb;
  nextChar = this.read_0();
  if (nextChar == -1)
    return null;
  sb = new jl.StringBuilder;
  eol = false;
  while (!eol) {
    if (nextChar == 10) {
      eol = true;
    }
     else if (nextChar == 13) {
      eol = true;
      nextChar = this.read_0();
      if (nextChar != 10) {
        this.savedNextChar = nextChar;
      }
    }
    if (!eol) {
      if (nextChar == -1) {
        break;
      }
      sb.append_4(narrow_char(nextChar));
      nextChar = this.read_0();
    }
  }
  return sb.toString_0();
}
;
_.savedNextChar = 0;
cggl.Ljava_io_BufferedReader_2_classLit = createForClass('java.io', 'BufferedReader', 91, cggl.Ljava_io_Reader_2_classLit);
ji.$clinit_BufferedWriter = function $clinit_BufferedWriter(){
  ji.$clinit_BufferedWriter = emptyMethod;
}
;
defineClass(1220, 1, {1:1});
_.newLine = function newLine(){
}
;
_.write_2 = function write_1(string){
}
;
cggl.Ljava_io_BufferedWriter_2_classLit = createForClass('java.io', 'BufferedWriter', 1220, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_AutoCloseable = function $clinit_AutoCloseable(){
  jl.$clinit_AutoCloseable = emptyMethod;
}
;
cggl.Ljava_lang_AutoCloseable_2_classLit = createForInterface('java.lang', 'AutoCloseable');
ji.$clinit_Closeable = function $clinit_Closeable(){
  ji.$clinit_Closeable = emptyMethod;
}
;
cggl.Ljava_io_Closeable_2_classLit = createForInterface('java.io', 'Closeable');
ji.$clinit_Flushable = function $clinit_Flushable(){
  ji.$clinit_Flushable = emptyMethod;
}
;
cggl.Ljava_io_Flushable_2_classLit = createForInterface('java.io', 'Flushable');
ji.$clinit_OutputStream = function $clinit_OutputStream(){
  ji.$clinit_OutputStream = emptyMethod;
  jl.$clinit_Object();
}
;
ji.OutputStream = function OutputStream(){
  ji.$clinit_OutputStream();
  Object_0.call(this);
  this.$init_594();
}
;
defineClass(421, 1, {1:1});
_.$init_594 = function $init_594(){
}
;
_.close_0 = function close_2(){
}
;
_.flush = function flush(){
}
;
_.write_4 = function write_2(buffer){
  ji2.checkNotNull_0(buffer);
  this.write_5(buffer, 0, buffer.length);
}
;
_.write_5 = function write_3(buffer, offset, count){
  var i;
  ji.checkOffsetAndCount_0(buffer, offset, count);
  for (i = offset; i < offset + count; i++) {
    this.write_3(buffer[i]);
  }
}
;
cggl.Ljava_io_OutputStream_2_classLit = createForClass('java.io', 'OutputStream', 421, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_FilterOutputStream = function $clinit_FilterOutputStream(){
  ji.$clinit_FilterOutputStream = emptyMethod;
  ji.$clinit_OutputStream();
}
;
ji.FilterOutputStream = function FilterOutputStream(out){
  ji.$clinit_FilterOutputStream();
  ji.OutputStream.call(this);
  this.$init_595();
  this.out = out;
}
;
defineClass(420, 421, {1:1});
_.$init_595 = function $init_595(){
}
;
_.close_0 = function close_3(){
  var e, thrown;
  thrown = null;
  try {
    this.flush();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 20)) {
      e = $e0;
      thrown = e;
    }
     else 
      throw toJs($e0);
  }
  try {
    this.out.close_0();
  }
   catch ($e1) {
    $e1 = toJava($e1);
    if (instanceOf($e1, 20)) {
      e = $e1;
      if (isNull(thrown)) {
        thrown = e;
      }
    }
     else 
      throw toJs($e1);
  }
  if (isNotNull(thrown)) {
    throw toJs(new ji.IOException_0(thrown));
  }
}
;
_.flush = function flush_0(){
  this.out.flush();
}
;
_.write_3 = function write_4(oneByte){
  this.out.write_3(oneByte);
}
;
_.write_5 = function write_5(buffer, offset, length_0){
  var i;
  ji.checkOffsetAndCount_0(buffer, offset, length_0);
  for (i = 0; i < length_0; i++) {
    this.write_3(buffer[offset + i]);
  }
}
;
cggl.Ljava_io_FilterOutputStream_2_classLit = createForClass('java.io', 'FilterOutputStream', 420, cggl.Ljava_io_OutputStream_2_classLit);
ji.$clinit_HasSerializableTypeMarker = function $clinit_HasSerializableTypeMarker(){
  ji.$clinit_HasSerializableTypeMarker = emptyMethod;
}
;
ji.$clinit_IOException = function $clinit_IOException(){
  ji.$clinit_IOException = emptyMethod;
  jl.$clinit_Exception();
}
;
ji.IOException = function IOException(message){
  ji.$clinit_IOException();
  jl.Exception_1.call(this, message);
  this.$init_596();
}
;
ji.IOException_0 = function IOException_0(throwable){
  ji.$clinit_IOException();
  jl.Exception_3.call(this, throwable);
  this.$init_596();
}
;
defineClass(66, 14, {66:1, 4:1, 14:1, 1:1, 20:1}, ji.IOException_0);
_.$init_596 = function $init_596(){
}
;
cggl.Ljava_io_IOException_2_classLit = createForClass('java.io', 'IOException', 66, cggl.Ljava_lang_Exception_2_classLit);
ji.$clinit_IOUtils = function $clinit_IOUtils(){
  ji.$clinit_IOUtils = emptyMethod;
  jl.$clinit_Object();
}
;
ji.checkOffsetAndCount = function checkOffsetAndCount(length_0, offset, count){
  if (offset < 0 || count < 0 || offset + count > length_0) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
}
;
ji.checkOffsetAndCount_0 = function checkOffsetAndCount_0(buffer, byteOffset, byteCount){
  ji.$clinit_IOUtils();
  ji2.checkNotNull_0(buffer);
  ji.checkOffsetAndCount(buffer.length, byteOffset, byteCount);
}
;
defineClass(1204, 1, {1:1});
cggl.Ljava_io_IOUtils_2_classLit = createForClass('java.io', 'IOUtils', 1204, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_PrintStream = function $clinit_PrintStream(){
  ji.$clinit_PrintStream = emptyMethod;
  ji.$clinit_FilterOutputStream();
}
;
ji.PrintStream = function PrintStream(out){
  ji.$clinit_PrintStream();
  ji.FilterOutputStream.call(this, out);
  this.$init_597();
}
;
defineClass(309, 420, {1:1}, ji.PrintStream);
_.$init_597 = function $init_597(){
  this.ioError = false;
}
;
_.close_0 = function close_4(){
  var e;
  this.flush();
  if (isNotNull(this.out)) {
    try {
      this.out.close_0();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 66)) {
        e = $e0;
        this.setError();
      }
       else 
        throw toJs($e0);
    }
     finally {
      this.out = null;
    }
  }
}
;
_.flush = function flush_1(){
  var e;
  if (isNotNull(this.out)) {
    try {
      this.out.flush();
      return;
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 66)) {
        e = $e0;
      }
       else 
        throw toJs($e0);
    }
  }
  this.setError();
}
;
_.newline = function newline(){
  this.print_0(10);
}
;
_.print_0 = function print_0(x_0){
  this.print_1(jl.valueOf_29(x_0));
}
;
_.print_1 = function print_1(s){
  var e;
  if (isNull(this.out)) {
    this.setError();
    return;
  }
  if (jsEquals(s, null)) {
    this.print_1('null');
    return;
  }
  try {
    this.write_4(jl.getBytes___B__devirtual$(s));
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 66)) {
      e = $e0;
      this.setError();
    }
     else 
      throw toJs($e0);
  }
}
;
_.println = function println_0(){
  this.newline();
}
;
_.println_0 = function println_1(s){
  this.print_1(s);
  this.newline();
}
;
_.setError = function setError(){
  this.ioError = true;
}
;
_.write_3 = function write_6(oneByte){
  var b, e, isNewline;
  if (isNull(this.out)) {
    this.setError();
    return;
  }
  try {
    this.out.write_3(oneByte);
    b = oneByte & 255;
    isNewline = b == 10 || b == 21;
    if (isNewline) {
      this.flush();
    }
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 66)) {
      e = $e0;
      this.setError();
    }
     else 
      throw toJs($e0);
  }
}
;
_.write_5 = function write_7(buffer, offset, length_0){
  var e;
  ji.checkOffsetAndCount_0(buffer, offset, length_0);
  if (isNull(this.out)) {
    this.setError();
    return;
  }
  try {
    this.out.write_5(buffer, offset, length_0);
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 66)) {
      e = $e0;
      this.setError();
    }
     else 
      throw toJs($e0);
  }
}
;
_.ioError = false;
cggl.Ljava_io_PrintStream_2_classLit = createForClass('java.io', 'PrintStream', 309, cggl.Ljava_io_FilterOutputStream_2_classLit);
ji.$clinit_StringReader = function $clinit_StringReader(){
  ji.$clinit_StringReader = emptyMethod;
  ji.$clinit_Reader();
}
;
ji.StringReader = function StringReader(text_0){
  ji.$clinit_StringReader();
  ji.Reader.call(this);
  this.$init_598();
  this.text_0 = text_0;
  this.position_0 = 0;
}
;
defineClass(129, 333, {1:1}, ji.StringReader);
_.$init_598 = function $init_598(){
}
;
_.close_0 = function close_5(){
}
;
_.read_0 = function read_2(){
  return this.position_0 == jl.length__I__devirtual$_0(this.text_0)?-1:jl.charAt_I_C__devirtual$_0(this.text_0, this.position_0++);
}
;
_.read_1 = function read_3(cbuf, off, len){
  var n;
  if (this.position_0 >= jl.length__I__devirtual$_0(this.text_0))
    return -1;
  n = $wnd.Math.min(jl.length__I__devirtual$_0(this.text_0) - this.position_0, len);
  jl.getChars_II_CI_V__devirtual$(this.text_0, this.position_0, this.position_0 + n, cbuf, off);
  this.position_0 += n;
  return n;
}
;
_.position_0 = 0;
cggl.Ljava_io_StringReader_2_classLit = createForClass('java.io', 'StringReader', 129, cggl.Ljava_io_Reader_2_classLit);
jl.$clinit_Appendable = function $clinit_Appendable(){
  jl.$clinit_Appendable = emptyMethod;
}
;
cggl.Ljava_lang_Appendable_2_classLit = createForInterface('java.lang', 'Appendable');
ji.$clinit_Writer = function $clinit_Writer(){
  ji.$clinit_Writer = emptyMethod;
  jl.$clinit_Object();
}
;
ji.Writer = function Writer(){
  ji.$clinit_Writer();
  Object_0.call(this);
  this.$init_599();
  this.lock = this;
}
;
defineClass(619, 1, {1:1});
_.$init_599 = function $init_599(){
}
;
_.write_3 = function write_8(c){
  {
    this.lock;
    if (jsEquals(this.writeBuffer, null)) {
      this.writeBuffer = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, this.writeBufferSize, 15, 1);
    }
    this.writeBuffer[0] = narrow_char(c);
    this.write_7(this.writeBuffer, 0, 1);
  }
}
;
_.write_2 = function write_9(str){
  this.write_6(str, 0, jl.length__I__devirtual$_0(str));
}
;
_.write_6 = function write_10(str, off, len){
  var cbuf;
  {
    this.lock;
    if (len <= this.writeBufferSize) {
      if (jsEquals(this.writeBuffer, null)) {
        this.writeBuffer = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, this.writeBufferSize, 15, 1);
      }
      cbuf = this.writeBuffer;
    }
     else {
      cbuf = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, len, 15, 1);
    }
    jl.getChars_II_CI_V__devirtual$(str, off, off + len, cbuf, 0);
    this.write_7(cbuf, 0, len);
  }
}
;
_.writeBufferSize = 1024;
cggl.Ljava_io_Writer_2_classLit = createForClass('java.io', 'Writer', 619, cggl.Ljava_lang_Object_2_classLit);
ji.$clinit_StringWriter = function $clinit_StringWriter(){
  ji.$clinit_StringWriter = emptyMethod;
  ji.$clinit_Writer();
}
;
ji.StringWriter = function StringWriter(){
  ji.$clinit_StringWriter();
  ji.Writer.call(this);
  this.$init_600();
  this.buf = new jl.StringBuffer;
  this.lock = this.buf;
}
;
defineClass(340, 619, {1:1}, ji.StringWriter);
_.$init_600 = function $init_600(){
}
;
_.close_0 = function close_6(){
}
;
_.flush = function flush_2(){
}
;
_.getBuffer = function getBuffer(){
  return this.buf;
}
;
_.toString_0 = function toString_33(){
  return this.buf.toString_0();
}
;
_.write_3 = function write_11(c){
  this.buf.append_0(narrow_char(c));
}
;
_.write_2 = function write_12(str){
  this.buf.append_2(str);
}
;
_.write_6 = function write_13(str, off, len){
  this.buf.append_2(jl.substring_II_Ljava_lang_String___devirtual$(str, off, off + len));
}
;
_.write_7 = function write_14(cbuf, off, len){
  if (off < 0 || off > cbuf.length || len < 0 || off + len > cbuf.length || off + len < 0) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
   else if (len == 0) {
    return;
  }
  this.buf.append_3(cbuf, off, len);
}
;
cggl.Ljava_io_StringWriter_2_classLit = createForClass('java.io', 'StringWriter', 340, cggl.Ljava_io_Writer_2_classLit);
ji.$clinit_UnsupportedEncodingException = function $clinit_UnsupportedEncodingException(){
  ji.$clinit_UnsupportedEncodingException = emptyMethod;
  ji.$clinit_IOException();
}
;
ji.UnsupportedEncodingException = function UnsupportedEncodingException(msg){
  ji.$clinit_UnsupportedEncodingException();
  ji.IOException.call(this, msg);
  this.$init_601();
}
;
defineClass(403, 66, {66:1, 4:1, 14:1, 1:1, 20:1}, ji.UnsupportedEncodingException);
_.$init_601 = function $init_601(){
}
;
cggl.Ljava_io_UnsupportedEncodingException_2_classLit = createForClass('java.io', 'UnsupportedEncodingException', 403, cggl.Ljava_io_IOException_2_classLit);
jl.$clinit_AbstractStringBuilder = function $clinit_AbstractStringBuilder(){
  jl.$clinit_AbstractStringBuilder = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_CharSequence();
}
;
jl.AbstractStringBuilder = function AbstractStringBuilder(string){
  jl.$clinit_AbstractStringBuilder();
  Object_0.call(this);
  this.$init_602();
  this.string = string;
}
;
defineClass(163, 1, {208:1, 1:1});
_.$init_602 = function $init_602(){
}
;
_.chars = function chars_0(){
  return jl.$chars(this);
}
;
_.charAt_0 = function charAt(index_0){
  return jl.charAt_I_C__devirtual$_0(this.string, index_0);
}
;
_.getChars = function getChars(srcStart, srcEnd, dst, dstStart){
  jl.getChars_II_CI_V__devirtual$(this.string, srcStart, srcEnd, dst, dstStart);
}
;
_.indexOf_2 = function indexOf_5(x_0){
  return jl.indexOf_Ljava_lang_String__I__devirtual$(this.string, x_0);
}
;
_.indexOf_3 = function indexOf_6(x_0, start_0){
  return jl.indexOf_Ljava_lang_String_I_I__devirtual$(this.string, x_0, start_0);
}
;
_.lastIndexOf_1 = function lastIndexOf_2(s){
  return jl.lastIndexOf_Ljava_lang_String__I__devirtual$(this.string, s);
}
;
_.lastIndexOf_2 = function lastIndexOf_3(s, start_0){
  return jl.lastIndexOf_Ljava_lang_String_I_I__devirtual$(this.string, s, start_0);
}
;
_.length_0 = function length_14(){
  return jl.length__I__devirtual$_0(this.string);
}
;
_.replace0 = function replace0(start_0, end, toInsert){
  var length_0;
  length_0 = jl.length__I__devirtual$_0(this.string);
  if (end > length_0) {
    end = length_0;
  }
   else {
    ji2.checkStringElementIndex(start_0, end + 1);
  }
  this.string = jl.substring_II_Ljava_lang_String___devirtual$(this.string, 0, start_0) + ('' + toInsert) + jl.substring_I_Ljava_lang_String___devirtual$(this.string, end);
}
;
_.setCharAt = function setCharAt(index_0, x_0){
  this.replace0(index_0, index_0 + 1, jl.valueOf_29(x_0));
}
;
_.setLength = function setLength(newLength){
  var oldLength;
  oldLength = this.length_0();
  if (newLength < oldLength) {
    this.string = jl.substring_II_Ljava_lang_String___devirtual$(this.string, 0, newLength);
  }
   else if (newLength > oldLength) {
    this.string += '' + jl.valueOf_36(initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, newLength - oldLength, 15, 1));
  }
}
;
_.subSequence = function subSequence(start_0, end){
  return jl.substring_II_Ljava_lang_String___devirtual$(this.string, start_0, end);
}
;
_.substring_0 = function substring(begin){
  return jl.substring_I_Ljava_lang_String___devirtual$(this.string, begin);
}
;
_.substring_1 = function substring_0(begin, end){
  return jl.substring_II_Ljava_lang_String___devirtual$(this.string, begin, end);
}
;
_.toString_0 = function toString_34(){
  return this.string;
}
;
cggl.Ljava_lang_AbstractStringBuilder_2_classLit = createForClass('java.lang', 'AbstractStringBuilder', 163, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_ArithmeticException = function $clinit_ArithmeticException(){
  jl.$clinit_ArithmeticException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.ArithmeticException = function ArithmeticException(explanation){
  jl.$clinit_ArithmeticException();
  jl.RuntimeException_1.call(this, explanation);
  this.$init_603();
}
;
defineClass(158, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.ArithmeticException);
_.$init_603 = function $init_603(){
}
;
cggl.Ljava_lang_ArithmeticException_2_classLit = createForClass('java.lang', 'ArithmeticException', 158, cggl.Ljava_lang_RuntimeException_2_classLit);
jl.$clinit_ArrayIndexOutOfBoundsException = function $clinit_ArrayIndexOutOfBoundsException(){
  jl.$clinit_ArrayIndexOutOfBoundsException = emptyMethod;
  jl.$clinit_IndexOutOfBoundsException();
}
;
jl.ArrayIndexOutOfBoundsException = function ArrayIndexOutOfBoundsException(){
  jl.$clinit_ArrayIndexOutOfBoundsException();
  jl.IndexOutOfBoundsException.call(this);
  this.$init_605();
}
;
jl.ArrayIndexOutOfBoundsException_0 = function ArrayIndexOutOfBoundsException_0(msg){
  jl.$clinit_ArrayIndexOutOfBoundsException();
  jl.IndexOutOfBoundsException_0.call(this, msg);
  this.$init_605();
}
;
defineClass(293, 52, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.ArrayIndexOutOfBoundsException, jl.ArrayIndexOutOfBoundsException_0);
_.$init_605 = function $init_605(){
}
;
cggl.Ljava_lang_ArrayIndexOutOfBoundsException_2_classLit = createForClass('java.lang', 'ArrayIndexOutOfBoundsException', 293, cggl.Ljava_lang_IndexOutOfBoundsException_2_classLit);
jl.$clinit_Byte = function $clinit_Byte(){
  jl.$clinit_Byte = emptyMethod;
  jl.$clinit_Number();
  MIN_VALUE_0 = narrow_byte(128);
  MAX_VALUE_0 = narrow_byte(127);
  BYTES = narrow_int(8 / 8);
  TYPE_28 = cggl.B_classLit;
}
;
jl.Byte = function Byte(value_0){
  jl.$clinit_Byte();
  jl.Number_0.call(this);
  this.$init_608();
  this.value_0 = value_0;
}
;
function compare_20(x_0, y_0){
  jl.$clinit_Byte();
  return x_0 - y_0;
}

jl.hashCode_14 = function hashCode_14(b){
  return b;
}
;
jl.parseByte = function parseByte(s){
  jl.$clinit_Byte();
  return parseByte_0(s, 10);
}
;
function parseByte_0(s, radix){
  jl.$clinit_Byte();
  return narrow_byte(jl.__parseAndValidateInt(s, radix, -128, 127));
}

jl.toString_37 = function toString_37(b){
  return jl.valueOf_32(b);
}
;
jl.valueOf_21 = function valueOf_21(b){
  return jl.get_27(b);
}
;
defineClass(169, 24, {4:1, 169:1, 10:1, 24:1, 1:1}, jl.Byte);
_.$init_608 = function $init_608(){
}
;
_.compareTo_1 = function compareTo_20(b){
  return this.compareTo_10(castTo(b, 169));
}
;
_.byteValue = function byteValue_0(){
  return this.value_0;
}
;
_.compareTo_10 = function compareTo_19(b){
  return compare_20(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_0(){
  return this.value_0;
}
;
_.equals_0 = function equals_25(o){
  return instanceOf(o, 169) && castTo(o, 169).value_0 == this.value_0;
}
;
_.floatValue = function floatValue(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_13(){
  return jl.hashCode_14(this.value_0);
}
;
_.intValue = function intValue_0(){
  return this.value_0;
}
;
_.longValue = function longValue_0(){
  return fromInt_0(this.value_0);
}
;
_.shortValue = function shortValue_0(){
  return this.value_0;
}
;
_.toString_0 = function toString_36(){
  return jl.toString_37(this.value_0);
}
;
_.value_0 = 0;
var BYTES = 0;
var MAX_VALUE_0 = 0;
var MIN_VALUE_0 = 0;
var SIZE = 8;
var TYPE_28;
cggl.Ljava_lang_Byte_2_classLit = createForClass('java.lang', 'Byte', 169, cggl.Ljava_lang_Number_2_classLit);
jl.$clinit_Byte$BoxedValues = function $clinit_Byte$BoxedValues(){
  jl.$clinit_Byte$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues = initUnidimensionalArray(cggl.Ljava_lang_Byte_2_classLit, {4:1, 1:1, 7:1}, 169, 256, 0, 1);
}
;
jl.get_27 = function get_27(b){
  jl.$clinit_Byte$BoxedValues();
  var rebase, result;
  rebase = b + 128;
  result = jl.boxedValues[rebase];
  if (isNull(result)) {
    result = jl.boxedValues[rebase] = new jl.Byte(b);
  }
  return result;
}
;
defineClass(933, 1, {1:1});
cggl.Ljava_lang_Byte$BoxedValues_2_classLit = createForClass('java.lang', 'Byte/BoxedValues', 933, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_PrimitiveIterator = function $clinit_PrimitiveIterator(){
  ju.$clinit_PrimitiveIterator = emptyMethod;
}
;
cggl.Ljava_util_PrimitiveIterator_2_classLit = createForInterface('java.util', 'PrimitiveIterator');
ju.$clinit_PrimitiveIterator$OfInt = function $clinit_PrimitiveIterator$OfInt(){
  ju.$clinit_PrimitiveIterator$OfInt = emptyMethod;
}
;
ju.$forEachRemaining_0 = function $forEachRemaining_0(this$static, consumer){
  this$static.forEachRemaining_1(castTo(consumer, 40));
}
;
ju.$forEachRemaining_1 = function $forEachRemaining_1(this$static, consumer){
  if (instanceOf(consumer, 40)) {
    this$static.forEachRemaining_1(castTo(consumer, 40));
  }
   else {
    this$static.forEachRemaining_1(castTo(new ju.PrimitiveIterator$OfInt$1methodref$accept$Type(consumer), 40));
  }
}
;
ju.$forEachRemaining_2 = function $forEachRemaining_2(this$static, consumer){
  ji2.checkNotNull_0(consumer);
  while (this$static.hasNext_0()) {
    consumer.accept_1(this$static.nextInt());
  }
}
;
ju.$next = function $next(this$static){
  return jl.valueOf_26(this$static.nextInt());
}
;
ju.$next_0 = function $next_0(this$static){
  return this$static.next_4();
}
;
cggl.Ljava_util_PrimitiveIterator$OfInt_2_classLit = createForInterface('java.util', 'PrimitiveIterator/OfInt');
jl.$clinit_CharSequence$1 = function $clinit_CharSequence$1(){
  jl.$clinit_CharSequence$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
  ju.$clinit_PrimitiveIterator$OfInt();
}
;
jl.CharSequence$1 = function CharSequence$1(this$0){
  jl.$clinit_CharSequence$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_609();
}
;
defineClass(405, 1, {1:1, 46:1, 407:1}, jl.CharSequence$1);
_.$init_609 = function $init_609(){
}
;
_.forEachRemaining_0 = function forEachRemaining_2(arg0){
  this.forEachRemaining_1(castTo(arg0, 40));
}
;
_.forEachRemaining = function forEachRemaining_3(consumer){
  ju.$forEachRemaining_1(this, consumer);
}
;
_.forEachRemaining_1 = function forEachRemaining_4(consumer){
  ju.$forEachRemaining_2(this, consumer);
}
;
_.next_4 = function next_8(){
  return ju.$next(this);
}
;
_.next_3 = function next_9(){
  return this.next_4();
}
;
_.remove_4 = function remove_18(){
  ju.$remove_0(this);
}
;
_.hasNext_0 = function hasNext_2(){
  return this.cursor < jl.length__I__devirtual$(this.this$01);
}
;
_.nextInt = function nextInt(){
  ji2.checkElement(this.hasNext_0());
  return jl.charAt_I_C__devirtual$(this.this$01, this.cursor++);
}
;
_.cursor = 0;
cggl.Ljava_lang_CharSequence$1_2_classLit = createForClass('java.lang', 'CharSequence/1', 405, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Supplier = function $clinit_Supplier(){
  juf.$clinit_Supplier = emptyMethod;
}
;
cggl.Ljava_util_function_Supplier_2_classLit = createForInterface('java.util.function', 'Supplier');
jl.$clinit_CharSequence$lambda$0$Type = function $clinit_CharSequence$lambda$0$Type(){
  jl.$clinit_CharSequence$lambda$0$Type = emptyMethod;
}
;
jl.CharSequence$lambda$0$Type = function CharSequence$lambda$0$Type($$outer_0){
  jl.$clinit_CharSequence$lambda$0$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(404, 1, {1:1, 74:1}, jl.CharSequence$lambda$0$Type);
_.get_5 = function get_28(){
  return jl.$lambda$0(this.$$outer_0);
}
;
cggl.Ljava_lang_CharSequence$lambda$0$Type_2_classLit = createForClass('java.lang', 'CharSequence/lambda$0$Type', 404, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Character = function $clinit_Character(){
  jl.$clinit_Character = emptyMethod;
  jl.$clinit_Object();
  TYPE_29 = cggl.Ljava_lang_Character_2_classLit;
}
;
function Character(value_0){
  Object_0.call(this);
  this.$init_610();
  this.value_0 = value_0;
}

function charCount_0(codePoint){
  jl.$clinit_Character();
  return codePoint >= 65536?2:1;
}

function checkCriticalArgument(expression){
  jl.$clinit_Character();
  if (!expression) {
    throw toJs(new jl.IllegalArgumentException);
  }
}

function codePointAt(cs, index_0, limit){
  jl.$clinit_Character();
  var hiSurrogate, loSurrogate;
  hiSurrogate = jl.charAt_I_C__devirtual$(cs, index_0++);
  if (isHighSurrogate(hiSurrogate) && index_0 < limit && isLowSurrogate(loSurrogate = jl.charAt_I_C__devirtual$(cs, index_0))) {
    return toCodePoint(hiSurrogate, loSurrogate);
  }
  return hiSurrogate;
}

function codePointBefore(cs, index_0, start_0){
  jl.$clinit_Character();
  var highSurrogate, loSurrogate;
  loSurrogate = jl.charAt_I_C__devirtual$(cs, --index_0);
  if (isLowSurrogate(loSurrogate) && index_0 > start_0 && isHighSurrogate(highSurrogate = jl.charAt_I_C__devirtual$(cs, index_0 - 1))) {
    return toCodePoint(highSurrogate, loSurrogate);
  }
  return loSurrogate;
}

function codePointCount(seq, beginIndex, endIndex){
  jl.$clinit_Character();
  var ch_0, count, idx;
  count = 0;
  for (idx = beginIndex; idx < endIndex;) {
    ch_0 = jl.charAt_I_C__devirtual$(seq, idx++);
    if (isHighSurrogate(ch_0) && idx < endIndex && isLowSurrogate(jl.charAt_I_C__devirtual$(seq, idx))) {
      ++idx;
    }
    ++count;
  }
  return count;
}

function compare_21(x_0, y_0){
  jl.$clinit_Character();
  return x_0 - y_0;
}

function digit_0(c, radix){
  jl.$clinit_Character();
  if (radix < 2 || radix > 36) {
    return -1;
  }
  if (c >= 48 && c < 48 + $wnd.Math.min(radix, 10)) {
    return c - 48;
  }
  if (c >= 97 && c < radix + 97 - 10) {
    return c - 97 + 10;
  }
  if (c >= 65 && c < radix + 65 - 10) {
    return c - 65 + 10;
  }
  return -1;
}

function forDigit(digit){
  jl.$clinit_Character();
  var overBaseTen;
  overBaseTen = digit - 10;
  return narrow_char(overBaseTen < 0?48 + digit:97 + overBaseTen);
}

jl.forDigit_0 = function forDigit_0(digit, radix){
  jl.$clinit_Character();
  if (radix < 2 || radix > 36) {
    return 0;
  }
  if (digit < 0 || digit >= radix) {
    return 0;
  }
  return forDigit(digit);
}
;
function getHighSurrogate(codePoint){
  jl.$clinit_Character();
  return narrow_char(55296 + (codePoint - 65536 >> 10 & 1023));
}

function getLowSurrogate(codePoint){
  jl.$clinit_Character();
  return narrow_char(56320 + (codePoint - 65536 & 1023));
}

jl.hashCode_16 = function hashCode_16(c){
  return c;
}
;
function isDigit(c){
  jl.$clinit_Character();
  return /\d/.test(String.fromCharCode(c));
}

jl.isDigit_0 = function isDigit_0(c){
  jl.$clinit_Character();
  return isDigit(narrow_char(c));
}
;
function isHighSurrogate(ch_0){
  jl.$clinit_Character();
  return ch_0 >= 55296 && ch_0 <= 56319;
}

function isLetter(c){
  jl.$clinit_Character();
  return /[A-Z]/i.test(String.fromCharCode(c));
}

jl.isLetter_0 = function isLetter_0(c){
  jl.$clinit_Character();
  return /[A-Z]/i.test(String.fromCharCode(c));
}
;
function isLetterOrDigit(c){
  jl.$clinit_Character();
  return /[A-Z\d]/i.test(String.fromCharCode(c));
}

function isLowSurrogate(ch_0){
  jl.$clinit_Character();
  return ch_0 >= 56320 && ch_0 <= 57343;
}

function isLowerCase_0(c){
  jl.$clinit_Character();
  return toLowerCase(c) == c && jl.isLetter_0(c);
}

function offsetByCodePoints(seq, index_0, codePointOffset){
  jl.$clinit_Character();
  if (codePointOffset < 0) {
    while (codePointOffset < 0) {
      --index_0;
      if (isLowSurrogate(jl.charAt_I_C__devirtual$(seq, index_0)) && isHighSurrogate(jl.charAt_I_C__devirtual$(seq, index_0 - 1))) {
        --index_0;
      }
      ++codePointOffset;
    }
  }
   else {
    while (codePointOffset > 0) {
      if (isHighSurrogate(jl.charAt_I_C__devirtual$(seq, index_0)) && isLowSurrogate(jl.charAt_I_C__devirtual$(seq, index_0 + 1))) {
        ++index_0;
      }
      ++index_0;
      --codePointOffset;
    }
  }
  return index_0;
}

function toChars(codePoint, dst, dstIndex){
  jl.$clinit_Character();
  checkCriticalArgument(codePoint >= 0 && codePoint <= 1114111);
  if (codePoint >= 65536) {
    dst[dstIndex++] = getHighSurrogate(codePoint);
    dst[dstIndex] = getLowSurrogate(codePoint);
    return 2;
  }
   else {
    dst[dstIndex] = narrow_char(codePoint);
    return 1;
  }
}

function toCodePoint(highSurrogate, lowSurrogate){
  jl.$clinit_Character();
  return 65536 + ((highSurrogate & 1023) << 10) + (lowSurrogate & 1023);
}

function toLowerCase(c){
  jl.$clinit_Character();
  return String.fromCharCode(c).toLowerCase().charCodeAt(0);
}

jl.toString_39 = function toString_39(x_0){
  jl.$clinit_Character();
  return jl.valueOf_29(x_0);
}
;
function toUpperCase(c){
  jl.$clinit_Character();
  return String.fromCharCode(c).toUpperCase().charCodeAt(0);
}

function valueOf_22(c){
  jl.$clinit_Character();
  var result;
  if (c < 128) {
    result = (jl.$clinit_Character$BoxedValues() , jl.boxedValues_0)[c];
    if (isNull(result)) {
      result = (jl.$clinit_Character$BoxedValues() , jl.boxedValues_0)[c] = new Character(c);
    }
    return result;
  }
  return new Character(c);
}

defineClass(133, 1, {4:1, 133:1, 10:1, 1:1}, Character);
_.$init_610 = function $init_610(){
}
;
_.compareTo_1 = function compareTo_22(c){
  return this.compareTo_11(castTo(c, 133));
}
;
_.charValue = function charValue(){
  return this.value_0;
}
;
_.compareTo_11 = function compareTo_21(c){
  return compare_21(this.value_0, c.value_0);
}
;
_.equals_0 = function equals_26(o){
  return instanceOf(o, 133) && castTo(o, 133).value_0 == this.value_0;
}
;
_.hashCode_1 = function hashCode_15(){
  return jl.hashCode_16(this.value_0);
}
;
_.toString_0 = function toString_38(){
  return jl.valueOf_29(this.value_0);
}
;
_.value_0 = 0;
var MAX_CODE_POINT = 1114111;
var MAX_HIGH_SURROGATE = 56319;
var MAX_LOW_SURROGATE = 57343;
var MAX_RADIX = 36;
var MAX_SURROGATE = 57343;
var MAX_VALUE_1 = 65535;
var MIN_CODE_POINT = 0;
var MIN_HIGH_SURROGATE = 55296;
var MIN_LOW_SURROGATE = 56320;
var MIN_RADIX = 2;
var MIN_SUPPLEMENTARY_CODE_POINT = 65536;
var MIN_SURROGATE = 55296;
var MIN_VALUE_1 = 0;
var SIZE_0 = 16;
var TYPE_29;
cggl.Ljava_lang_Character_2_classLit = createForClass('java.lang', 'Character', 133, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Character$BoxedValues = function $clinit_Character$BoxedValues(){
  jl.$clinit_Character$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues_0 = initUnidimensionalArray(cggl.Ljava_lang_Character_2_classLit, {4:1, 1:1, 7:1}, 133, 128, 0, 1);
}
;
defineClass(936, 1, {1:1});
cggl.Ljava_lang_Character$BoxedValues_2_classLit = createForClass('java.lang', 'Character/BoxedValues', 936, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Character$CharSequenceAdapter = function $clinit_Character$CharSequenceAdapter(){
  jl.$clinit_Character$CharSequenceAdapter = emptyMethod;
}
;
defineClass(935, 1, {208:1, 1:1});
cggl.Ljava_lang_Character$CharSequenceAdapter_2_classLit = createForClass('java.lang', 'Character/CharSequenceAdapter', 935, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Float = function $clinit_Float(){
  jl.$clinit_Float = emptyMethod;
  jl.$clinit_Number();
  MIN_EXPONENT_0 = -126;
  NaN_1 = 0 / 0;
  NEGATIVE_INFINITY_0 = -1 / 0;
  POSITIVE_INFINITY_0 = 1 / 0;
  BYTES_1 = narrow_int(32 / 8);
  TYPE_31 = cggl.F_classLit;
}
;
jl.Float = function Float(value_0){
  jl.Number_0.call(this);
  this.$init_613();
  this.value_0 = value_0;
}
;
function compare_23(x_0, y_0){
  jl.$clinit_Float();
  return compare_22(x_0, y_0);
}

jl.hashCode_19 = function hashCode_19(f){
  return round_int(f);
}
;
jl.isInfinite_1 = function isInfinite_1(x_0){
  return jl.isInfinite(x_0);
}
;
jl.isNaN_2 = function isNaN_2(x_0){
  return isNaN(x_0);
}
;
function parseFloat_0(s){
  jl.$clinit_Float();
  var doubleValue;
  doubleValue = jl.__parseAndValidateDouble(s);
  if (doubleValue > 3.4028234663852886E38) {
    return Infinity;
  }
   else if (doubleValue < -3.4028234663852886E38) {
    return -Infinity;
  }
  return doubleValue;
}

jl.toString_43 = function toString_43(b){
  return jl.valueOf_31(b);
}
;
jl.valueOf_25 = function valueOf_25(f){
  return new jl.Float(f);
}
;
defineClass(196, 24, {4:1, 10:1, 196:1, 24:1, 1:1}, jl.Float);
_.$init_613 = function $init_613(){
}
;
_.compareTo_1 = function compareTo_24(b){
  return this.compareTo_12(castTo(b, 196));
}
;
_.byteValue = function byteValue_1(){
  return round_byte(this.value_0);
}
;
_.compareTo_12 = function compareTo_23(b){
  return compare_23(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_1(){
  return this.value_0;
}
;
_.equals_0 = function equals_27(o){
  return instanceOf(o, 196) && jl.equals_Ljava_lang_Object__Z__devirtual$_1(jl.valueOf_23(this.value_0), jl.valueOf_23(castTo(o, 196).value_0));
}
;
_.floatValue = function floatValue_0(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_18(){
  return jl.hashCode_19(this.value_0);
}
;
_.intValue = function intValue_1(){
  return round_int(this.value_0);
}
;
_.isInfinite = function isInfinite_0(){
  return jl.isInfinite_1(this.value_0);
}
;
_.isNaN_0 = function isNaN_1(){
  return jl.isNaN_2(this.value_0);
}
;
_.longValue = function longValue_1(){
  return fromDouble_0(this.value_0);
}
;
_.shortValue = function shortValue_1(){
  return round_short(this.value_0);
}
;
_.toString_0 = function toString_42(){
  return jl.toString_43(this.value_0);
}
;
_.value_0 = 0;
var BYTES_1 = 0;
var MAX_EXPONENT_0 = 127;
var MAX_VALUE_3 = 3.4028234663852886E38;
var MIN_EXPONENT_0 = 0;
var MIN_NORMAL_0 = 1.1754943508222875E-38;
var MIN_VALUE_3 = 1.401298464324817E-45;
var NEGATIVE_INFINITY_0 = 0;
var NaN_1 = 0;
var POSITIVE_INFINITY_0 = 0;
var POWER_31_INT = 2147483648;
var SIZE_2 = 32;
var TYPE_31;
cggl.Ljava_lang_Float_2_classLit = createForClass('java.lang', 'Float', 196, cggl.Ljava_lang_Number_2_classLit);
jl.$clinit_HasCharSequenceTypeMarker = function $clinit_HasCharSequenceTypeMarker(){
  jl.$clinit_HasCharSequenceTypeMarker = emptyMethod;
}
;
jl.$clinit_HasCloneableTypeMarker = function $clinit_HasCloneableTypeMarker(){
  jl.$clinit_HasCloneableTypeMarker = emptyMethod;
}
;
jl.$clinit_HasComparableTypeMarker = function $clinit_HasComparableTypeMarker(){
  jl.$clinit_HasComparableTypeMarker = emptyMethod;
}
;
jl.$clinit_IllegalArgumentException = function $clinit_IllegalArgumentException(){
  jl.$clinit_IllegalArgumentException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.IllegalArgumentException = function IllegalArgumentException(){
  jl.$clinit_IllegalArgumentException();
  jl.RuntimeException.call(this);
  this.$init_614();
}
;
jl.IllegalArgumentException_0 = function IllegalArgumentException_0(message){
  jl.$clinit_IllegalArgumentException();
  jl.RuntimeException_1.call(this, message);
  this.$init_614();
}
;
defineClass(53, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.IllegalArgumentException, jl.IllegalArgumentException_0);
_.$init_614 = function $init_614(){
}
;
cggl.Ljava_lang_IllegalArgumentException_2_classLit = createForClass('java.lang', 'IllegalArgumentException', 53, cggl.Ljava_lang_RuntimeException_2_classLit);
jl.$clinit_Integer$BoxedValues = function $clinit_Integer$BoxedValues(){
  jl.$clinit_Integer$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues_1 = initUnidimensionalArray(cggl.Ljava_lang_Integer_2_classLit, {4:1, 1:1, 7:1}, 32, 256, 0, 1);
}
;
jl.get_29 = function get_29(i){
  jl.$clinit_Integer$BoxedValues();
  var rebase, result;
  rebase = i + 128;
  result = jl.boxedValues_1[rebase];
  if (isNull(result)) {
    result = jl.boxedValues_1[rebase] = new jl.Integer(i);
  }
  return result;
}
;
defineClass(937, 1, {1:1});
cggl.Ljava_lang_Integer$BoxedValues_2_classLit = createForClass('java.lang', 'Integer/BoxedValues', 937, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Integer$ReverseNibbles = function $clinit_Integer$ReverseNibbles(){
  jl.$clinit_Integer$ReverseNibbles = emptyMethod;
}
;
defineClass(938, 1, {1:1});
cggl.Ljava_lang_Integer$ReverseNibbles_2_classLit = createForClass('java.lang', 'Integer/ReverseNibbles', 938, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Long = function $clinit_Long(){
  jl.$clinit_Long = emptyMethod;
  jl.$clinit_Number();
  BYTES_3 = narrow_int(64 / 8);
  TYPE_33 = cggl.J_classLit;
}
;
jl.Long = function Long(value_0){
  jl.$clinit_Long();
  jl.Number_0.call(this);
  this.$init_617();
  this.value_0 = value_0;
}
;
function compare_25(x_0, y_0){
  jl.$clinit_Long();
  if (lt(x_0, y_0)) {
    return -1;
  }
   else if (gt(x_0, y_0)) {
    return 1;
  }
   else {
    return 0;
  }
}

jl.hashCode_23 = function hashCode_23(l){
  return ji2.getHighBits(l) ^ toInt_0(l);
}
;
function numberOfLeadingZeros_1(l){
  jl.$clinit_Long();
  var high;
  high = ji2.getHighBits(l);
  if (high != 0) {
    return numberOfLeadingZeros_0(high);
  }
   else {
    return numberOfLeadingZeros_0(toInt_0(l)) + 32;
  }
}

function toHexString_0(value_0){
  jl.$clinit_Long();
  return jl.toPowerOfTwoUnsignedString(value_0, 4);
}

jl.toPowerOfTwoUnsignedString = function toPowerOfTwoUnsignedString(value_0, shift_0){
  var buf, bufSize, highBits, mask, pos, radix;
  radix = 1 << shift_0;
  highBits = ji2.getHighBits(value_0);
  if (highBits == 0) {
    return toUnsignedString(toInt_0(value_0), radix);
  }
  mask = radix - 1;
  bufSize = narrow_int(64 / shift_0) + 1;
  buf = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, bufSize, 15, 1);
  pos = bufSize;
  do {
    buf[--pos] = forDigit(toInt_0(value_0) & mask);
    value_0 = shru_0(value_0, shift_0);
  }
   while (neq(value_0, 0));
  return jl.valueOf_37(buf, pos, bufSize - pos);
}
;
jl.toString_48 = function toString_48(value_0){
  jl.$clinit_Long();
  return jl.valueOf_33(value_0);
}
;
jl.toString_49 = function toString_49(value_0, intRadix){
  jl.$clinit_Long();
  var buf, bufLen, cursor, intValue, negative, q, radix;
  if (intRadix == 10 || intRadix < 2 || intRadix > 36) {
    return jl.valueOf_33(value_0);
  }
  intValue = toInt_0(value_0);
  if (eq(fromInt_0(intValue), value_0)) {
    return jl.toString_46(intValue, intRadix);
  }
  negative = lt(value_0, 0);
  if (!negative) {
    value_0 = neg_0(value_0);
  }
  bufLen = intRadix < 8?65:23;
  buf = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, bufLen, 15, 1);
  cursor = bufLen;
  radix = fromInt_0(intRadix);
  do {
    q = div_1(value_0, radix);
    buf[--cursor] = forDigit(toInt_0(sub_2(mul_0(radix, q), value_0)));
    value_0 = q;
  }
   while (neq(value_0, 0));
  if (negative) {
    buf[--cursor] = 45;
  }
  return jl.valueOf_37(buf, cursor, bufLen - cursor);
}
;
jl.valueOf_27 = function valueOf_27(l){
  jl.$clinit_Long();
  if (gt(l, fromInt_0(-129)) && lt(l, 128)) {
    return jl.get_30(l);
  }
  return new jl.Long(l);
}
;
defineClass(93, 24, {4:1, 10:1, 93:1, 24:1, 1:1}, jl.Long);
_.$init_617 = function $init_617(){
}
;
_.compareTo_1 = function compareTo_28(b){
  return this.compareTo_14(castTo(b, 93));
}
;
_.byteValue = function byteValue_3(){
  return narrow_byte(toInt_0(this.value_0));
}
;
_.compareTo_14 = function compareTo_27(b){
  return compare_25(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_3(){
  return toDouble_0(this.value_0);
}
;
_.equals_0 = function equals_29(o){
  return instanceOf(o, 93) && eq(castTo(o, 93).value_0, this.value_0);
}
;
_.floatValue = function floatValue_2(){
  return toDouble_0(this.value_0);
}
;
_.hashCode_1 = function hashCode_22(){
  return jl.hashCode_23(this.value_0);
}
;
_.intValue = function intValue_3(){
  return toInt_0(this.value_0);
}
;
_.longValue = function longValue_3(){
  return this.value_0;
}
;
_.shortValue = function shortValue_3(){
  return narrow_short(toInt_0(this.value_0));
}
;
_.toString_0 = function toString_47(){
  return jl.toString_48(this.value_0);
}
;
_.value_0 = 0;
var BYTES_3 = 0;
var MAX_VALUE_5 = {l:4194303, m:4194303, h:524287};
var MIN_VALUE_5 = {l:0, m:0, h:524288};
var SIZE_4 = 64;
var TYPE_33;
cggl.Ljava_lang_Long_2_classLit = createForClass('java.lang', 'Long', 93, cggl.Ljava_lang_Number_2_classLit);
jl.$clinit_Long$BoxedValues = function $clinit_Long$BoxedValues(){
  jl.$clinit_Long$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues_2 = initUnidimensionalArray(cggl.Ljava_lang_Long_2_classLit, {4:1, 1:1, 7:1}, 93, 256, 0, 1);
}
;
jl.get_30 = function get_30(l){
  jl.$clinit_Long$BoxedValues();
  var rebase, result;
  rebase = toInt_0(l) + 128;
  result = jl.boxedValues_2[rebase];
  if (isNull(result)) {
    result = jl.boxedValues_2[rebase] = new jl.Long(l);
  }
  return result;
}
;
defineClass(939, 1, {1:1});
cggl.Ljava_lang_Long$BoxedValues_2_classLit = createForClass('java.lang', 'Long/BoxedValues', 939, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Math = function $clinit_Math(){
  jl.$clinit_Math = emptyMethod;
  jl.$clinit_Object();
  jl.PI_OVER_180 = 3.141592653589793 / 180;
  jl.PI_UNDER_180 = 180 / 3.141592653589793;
}
;
jl.abs_0 = function abs_0(x_0){
  jl.$clinit_Math();
  return lt(x_0, 0)?neg_0(x_0):x_0;
}
;
jl.log10 = function log10(x_0){
  jl.$clinit_Math();
  return $wnd.Math.log(x_0) * (jl.$clinit_Math$NativeMath() , $wnd.Math.LOG10E);
}
;
jl.round_1 = function round_1(x_0){
  jl.$clinit_Math();
  return fromDouble_0($wnd.Math.round(x_0));
}
;
jl.round_2 = function round_2(x_0){
  jl.$clinit_Math();
  return round_int($wnd.Math.round(x_0));
}
;
jl.signum_1 = function signum_1(d){
  if (d == 0 || isNaN(d)) {
    return d;
  }
   else {
    return d < 0?-1:1;
  }
}
;
jl.signum_2 = function signum_2(f){
  jl.$clinit_Math();
  return jl.signum_1(f);
}
;
jl.toDegrees = function toDegrees(x_0){
  jl.$clinit_Math();
  return x_0 * 57.29577951308232;
}
;
defineClass(955, 1, {1:1});
jl.E_0 = 2.718281828459045;
jl.PI_0 = 3.141592653589793;
jl.PI_OVER_180 = 0;
jl.PI_UNDER_180 = 0;
cggl.Ljava_lang_Math_2_classLit = createForClass('java.lang', 'Math', 955, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Math$NativeMath = function $clinit_Math$NativeMath(){
  jl.$clinit_Math$NativeMath = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_NegativeArraySizeException = function $clinit_NegativeArraySizeException(){
  jl.$clinit_NegativeArraySizeException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.NegativeArraySizeException = function NegativeArraySizeException(message){
  jl.$clinit_NegativeArraySizeException();
  jl.RuntimeException_1.call(this, message);
  this.$init_618();
}
;
defineClass(724, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.NegativeArraySizeException);
_.$init_618 = function $init_618(){
}
;
cggl.Ljava_lang_NegativeArraySizeException_2_classLit = createForClass('java.lang', 'NegativeArraySizeException', 724, cggl.Ljava_lang_RuntimeException_2_classLit);
jl.$clinit_Number$__Decode = function $clinit_Number$__Decode(){
  jl.$clinit_Number$__Decode = emptyMethod;
  jl.$clinit_Object();
}
;
jl.Number$__Decode = function Number$__Decode(radix, payload){
  jl.$clinit_Number$__Decode();
  Object_0.call(this);
  this.$init_620();
  this.radix = radix;
  this.payload = payload;
}
;
defineClass(500, 1, {1:1}, jl.Number$__Decode);
_.$init_620 = function $init_620(){
}
;
_.radix = 0;
cggl.Ljava_lang_Number$_1_1Decode_2_classLit = createForClass('java.lang', 'Number/__Decode', 500, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Number$__ParseLong = function $clinit_Number$__ParseLong(){
  jl.$clinit_Number$__ParseLong = emptyMethod;
  var i;
  jl.$clinit_Object();
  jl.maxDigitsForRadix = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [-1, -1, 30, 19, 15, 13, 11, 11, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5]);
  jl.maxDigitsRadixPower = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 37, 15, 1);
  jl.maxLengthForRadix = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [-1, -1, 63, 40, 32, 28, 25, 23, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 13, 13]);
  jl.maxValueForRadix = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, 37, 14, 1);
  {
    for (i = 2; i <= 36; i++) {
      jl.maxDigitsRadixPower[i] = round_int($wnd.Math.pow(i, jl.maxDigitsForRadix[i]));
      jl.maxValueForRadix[i] = div_1({l:4194303, m:4194303, h:524287}, fromInt_0(jl.maxDigitsRadixPower[i]));
    }
  }
}
;
defineClass(934, 1, {1:1});
cggl.Ljava_lang_Number$_1_1ParseLong_2_classLit = createForClass('java.lang', 'Number/__ParseLong', 934, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_NumberFormatException = function $clinit_NumberFormatException(){
  jl.$clinit_NumberFormatException = emptyMethod;
  jl.$clinit_IllegalArgumentException();
}
;
jl.NumberFormatException = function NumberFormatException(message){
  jl.$clinit_NumberFormatException();
  jl.IllegalArgumentException_0.call(this, message);
  this.$init_621();
}
;
jl.forInputString = function forInputString(s){
  jl.$clinit_NumberFormatException();
  return new jl.NumberFormatException('For input string: "' + s + '"');
}
;
jl.forNullInputString = function forNullInputString(){
  jl.$clinit_NumberFormatException();
  return new jl.NumberFormatException('null');
}
;
jl.forRadix = function forRadix(radix){
  jl.$clinit_NumberFormatException();
  return new jl.NumberFormatException('radix ' + radix + ' out of range');
}
;
defineClass(61, 53, {4:1, 14:1, 61:1, 1:1, 23:1, 20:1}, jl.NumberFormatException);
_.$init_621 = function $init_621(){
}
;
cggl.Ljava_lang_NumberFormatException_2_classLit = createForClass('java.lang', 'NumberFormatException', 61, cggl.Ljava_lang_IllegalArgumentException_2_classLit);
jl.$clinit_Runnable = function $clinit_Runnable(){
  jl.$clinit_Runnable = emptyMethod;
}
;
cggl.Ljava_lang_Runnable_2_classLit = createForInterface('java.lang', 'Runnable');
jl.$clinit_Short = function $clinit_Short(){
  jl.$clinit_Short = emptyMethod;
  jl.$clinit_Number();
  MIN_VALUE_6 = narrow_short(32768);
  MAX_VALUE_6 = narrow_short(32767);
  BYTES_4 = narrow_int(16 / 8);
  TYPE_34 = cggl.S_classLit;
}
;
jl.Short = function Short(value_0){
  jl.$clinit_Short();
  jl.Number_0.call(this);
  this.$init_622();
  this.value_0 = value_0;
}
;
function compare_26(x_0, y_0){
  jl.$clinit_Short();
  return x_0 - y_0;
}

jl.hashCode_25 = function hashCode_25(s){
  return s;
}
;
jl.parseShort = function parseShort(s){
  jl.$clinit_Short();
  return parseShort_0(s, 10);
}
;
function parseShort_0(s, radix){
  jl.$clinit_Short();
  return narrow_short(jl.__parseAndValidateInt(s, radix, -32768, 32767));
}

jl.toString_51 = function toString_51(b){
  return jl.valueOf_32(b);
}
;
jl.valueOf_28 = function valueOf_28(s){
  if (s > -129 && s < 128) {
    return jl.get_31(s);
  }
  return new jl.Short(s);
}
;
defineClass(155, 24, {4:1, 10:1, 24:1, 1:1, 155:1}, jl.Short);
_.$init_622 = function $init_622(){
}
;
_.compareTo_1 = function compareTo_29(b){
  return this.compareTo_15(castTo(b, 155));
}
;
_.byteValue = function byteValue_4(){
  return narrow_byte(this.value_0);
}
;
_.compareTo_15 = function compareTo_30(b){
  return compare_26(this.value_0, b.value_0);
}
;
_.doubleValue = function doubleValue_4(){
  return this.value_0;
}
;
_.equals_0 = function equals_30(o){
  return instanceOf(o, 155) && castTo(o, 155).value_0 == this.value_0;
}
;
_.floatValue = function floatValue_3(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_24(){
  return jl.hashCode_25(this.value_0);
}
;
_.intValue = function intValue_4(){
  return this.value_0;
}
;
_.longValue = function longValue_4(){
  return fromInt_0(this.value_0);
}
;
_.shortValue = function shortValue_4(){
  return this.value_0;
}
;
_.toString_0 = function toString_50(){
  return jl.toString_51(this.value_0);
}
;
_.value_0 = 0;
var BYTES_4 = 0;
var MAX_VALUE_6 = 0;
var MIN_VALUE_6 = 0;
var SIZE_5 = 16;
var TYPE_34;
cggl.Ljava_lang_Short_2_classLit = createForClass('java.lang', 'Short', 155, cggl.Ljava_lang_Number_2_classLit);
jl.$clinit_Short$BoxedValues = function $clinit_Short$BoxedValues(){
  jl.$clinit_Short$BoxedValues = emptyMethod;
  jl.$clinit_Object();
  jl.boxedValues_3 = initUnidimensionalArray(cggl.Ljava_lang_Short_2_classLit, {4:1, 1:1, 7:1}, 155, 256, 0, 1);
}
;
jl.get_31 = function get_31(s){
  jl.$clinit_Short$BoxedValues();
  var rebase, result;
  rebase = s + 128;
  result = jl.boxedValues_3[rebase];
  if (isNull(result)) {
    result = jl.boxedValues_3[rebase] = new jl.Short(s);
  }
  return result;
}
;
defineClass(940, 1, {1:1});
cggl.Ljava_lang_Short$BoxedValues_2_classLit = createForClass('java.lang', 'Short/BoxedValues', 940, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_StackTraceElement = function $clinit_StackTraceElement(){
  jl.$clinit_StackTraceElement = emptyMethod;
  jl.$clinit_Object();
}
;
jl.StackTraceElement = function StackTraceElement(className, methodName, fileName, lineNumber){
  jl.$clinit_StackTraceElement();
  Object_0.call(this);
  this.$init_623();
  this.className_0 = className;
  this.methodName = methodName;
  this.fileName = fileName;
  this.lineNumber = lineNumber;
}
;
defineClass(86, 1, {4:1, 1:1, 86:1}, jl.StackTraceElement);
_.$init_623 = function $init_623(){
}
;
_.equals_0 = function equals_31(other){
  var st;
  if (instanceOf(other, 86)) {
    st = castTo(other, 86);
    return this.lineNumber == st.lineNumber && ju.equals_47(this.methodName, st.methodName) && ju.equals_47(this.className_0, st.className_0) && ju.equals_47(this.fileName, st.fileName);
  }
  return false;
}
;
_.getClassName = function getClassName(){
  return this.className_0;
}
;
_.getMethodName = function getMethodName(){
  return this.methodName;
}
;
_.hashCode_1 = function hashCode_26(){
  return ju.hash_0(stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_Object_2_classLit, 1), {4:1, 1:1, 7:1}, 1, 5, [jl.valueOf_26(this.lineNumber), this.className_0, this.methodName, this.fileName]));
}
;
_.toString_0 = function toString_52(){
  return this.className_0 + '.' + this.methodName + '(' + (jsNotEquals(this.fileName, null)?this.fileName:'Unknown Source') + (this.lineNumber >= 0?':' + this.lineNumber:'') + ')';
}
;
_.lineNumber = 0;
cggl.Ljava_lang_StackTraceElement_2_classLit = createForClass('java.lang', 'StackTraceElement', 86, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_String$NativeFunction = function $clinit_String$NativeFunction(){
  jl.$clinit_String$NativeFunction = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_String$NativeString = function $clinit_String$NativeString(){
  jl.$clinit_String$NativeString = emptyMethod;
  jl.$clinit_Object();
}
;
jl.$clinit_StringBuffer = function $clinit_StringBuffer(){
  jl.$clinit_StringBuffer = emptyMethod;
  jl.$clinit_AbstractStringBuilder();
}
;
jl.StringBuffer = function StringBuffer(){
  jl.$clinit_StringBuffer();
  jl.AbstractStringBuilder.call(this, '');
  this.$init_625();
}
;
jl.StringBuffer_0 = function StringBuffer_0(ignoredCapacity){
  jl.$clinit_StringBuffer();
  jl.AbstractStringBuilder.call(this, '');
  this.$init_625();
}
;
jl.StringBuffer_1 = function StringBuffer_1(s){
  jl.$clinit_StringBuffer();
  jl.AbstractStringBuilder.call(this, castToString(ji2.checkNotNull_0(s)));
  this.$init_625();
}
;
defineClass(87, 163, {208:1, 1:1}, jl.StringBuffer, jl.StringBuffer_0, jl.StringBuffer_1);
_.$init_625 = function $init_625(){
}
;
_.append_0 = function append_0(x_0){
  this.string += charToString(x_0);
  return this;
}
;
_.append_1 = function append_1(x_0){
  this.string += x_0;
  return this;
}
;
_.append_2 = function append_2(x_0){
  this.string += '' + x_0;
  return this;
}
;
_.append_3 = function append_3(x_0, start_0, len){
  this.string += '' + jl.valueOf_37(x_0, start_0, len);
  return this;
}
;
cggl.Ljava_lang_StringBuffer_2_classLit = createForClass('java.lang', 'StringBuffer', 87, cggl.Ljava_lang_AbstractStringBuilder_2_classLit);
jl.$clinit_StringBuilder = function $clinit_StringBuilder(){
  jl.$clinit_StringBuilder = emptyMethod;
  jl.$clinit_AbstractStringBuilder();
}
;
jl.StringBuilder = function StringBuilder(){
  jl.$clinit_StringBuilder();
  jl.AbstractStringBuilder.call(this, '');
  this.$init_626();
}
;
jl.StringBuilder_0 = function StringBuilder_0(ignoredCapacity){
  jl.$clinit_StringBuilder();
  jl.AbstractStringBuilder.call(this, '');
  this.$init_626();
}
;
jl.StringBuilder_1 = function StringBuilder_1(s){
  jl.$clinit_StringBuilder();
  jl.AbstractStringBuilder.call(this, castToString(ji2.checkNotNull_0(s)));
  this.$init_626();
}
;
defineClass(29, 163, {208:1, 1:1}, jl.StringBuilder, jl.StringBuilder_0, jl.StringBuilder_1);
_.$init_626 = function $init_626(){
}
;
_.append_4 = function append_4(x_0){
  this.string += charToString(x_0);
  return this;
}
;
_.append_5 = function append_5(x_0){
  this.string += x_0;
  return this;
}
;
_.append_6 = function append_6(x_0){
  this.string += toString_29(x_0);
  return this;
}
;
_.append_7 = function append_7(x_0){
  this.string += '' + x_0;
  return this;
}
;
_.append_8 = function append_8(x_0, start_0, end){
  this.string += '' + jl.substring_II_Ljava_lang_String___devirtual$(valueOf_34(x_0), start_0, end);
  return this;
}
;
_.append_9 = function append_9(x_0){
  this.string += '' + x_0;
  return this;
}
;
_.append_10 = function append_10(x_0, start_0, len){
  this.string += '' + jl.valueOf_37(x_0, start_0, len);
  return this;
}
;
_.delete_0 = function delete_0(start_0, end){
  this.replace0(start_0, end, '');
  return this;
}
;
_.deleteCharAt = function deleteCharAt(start_0){
  this.replace0(start_0, start_0 + 1, '');
  return this;
}
;
_.insert_2 = function insert_4(index_0, x_0){
  return this.insert_4(index_0, jl.valueOf_29(x_0));
}
;
_.insert_3 = function insert_5(index_0, chars){
  return this.insert_4(index_0, valueOf_34(chars));
}
;
_.insert_4 = function insert_6(index_0, x_0){
  this.replace0(index_0, index_0, x_0);
  return this;
}
;
_.insert_5 = function insert_7(index_0, x_0, offset, len){
  return this.insert_4(index_0, jl.valueOf_37(x_0, offset, len));
}
;
cggl.Ljava_lang_StringBuilder_2_classLit = createForClass('java.lang', 'StringBuilder', 29, cggl.Ljava_lang_AbstractStringBuilder_2_classLit);
jl.$clinit_System = function $clinit_System(){
  jl.$clinit_System = emptyMethod;
  jl.$clinit_Object();
  jl.err = new ji.PrintStream(null);
  jl.out_0 = new ji.PrintStream(null);
}
;
jl.arrayTypeMatch = function arrayTypeMatch(srcComp, destComp){
  if (srcComp.isPrimitive()) {
    return jl.equals_Ljava_lang_Object__Z__devirtual$(srcComp, destComp);
  }
   else {
    return !destComp.isPrimitive();
  }
}
;
jl.arraycopy = function arraycopy(src_0, srcOfs, dest, destOfs, len){
  jl.$clinit_System();
  var destArray, destComp, destEnd, destType, srcArray, srcComp, srcType;
  ji2.checkNotNull_1(src_0, 'src');
  ji2.checkNotNull_1(dest, 'dest');
  if (!ji2.isTypeChecked()) {
    jl.checkArrayCopyIndicies(src_0, srcOfs, dest, destOfs, len);
    ji2.copy_2(src_0, srcOfs, dest, destOfs, len);
    return;
  }
  srcType = jl.getClass__Ljava_lang_Class___devirtual$(src_0);
  destType = jl.getClass__Ljava_lang_Class___devirtual$(dest);
  ji2.checkArrayType_0(srcType.isArray_0(), 'srcType is not an array');
  ji2.checkArrayType_0(destType.isArray_0(), 'destType is not an array');
  srcComp = srcType.getComponentType();
  destComp = destType.getComponentType();
  ji2.checkArrayType_0(jl.arrayTypeMatch(srcComp, destComp), "Array types don't match");
  jl.checkArrayCopyIndicies(src_0, srcOfs, dest, destOfs, len);
  if (!srcComp.isPrimitive() && !jl.equals_Ljava_lang_Object__Z__devirtual$(srcType, destType)) {
    srcArray = castToArray(src_0);
    destArray = castToArray(dest);
    if (maskUndefined(src_0) === maskUndefined(dest) && srcOfs < destOfs) {
      srcOfs += len;
      for (destEnd = destOfs + len; destEnd-- > destOfs;) {
        setCheck(destArray, destEnd, srcArray[--srcOfs]);
      }
    }
     else {
      for (destEnd = destOfs + len; destOfs < destEnd;) {
        setCheck(destArray, destOfs++, srcArray[srcOfs++]);
      }
    }
  }
   else {
    ji2.copy_2(src_0, srcOfs, dest, destOfs, len);
  }
}
;
jl.checkArrayCopyIndicies = function checkArrayCopyIndicies(src_0, srcOfs, dest, destOfs, len){
  var destlen, srclen;
  srclen = ji2.getLength_1(src_0);
  destlen = ji2.getLength_1(dest);
  if (srcOfs < 0 || destOfs < 0 || len < 0 || srcOfs + len > srclen || destOfs + len > destlen) {
    throw toJs(new jl.IndexOutOfBoundsException);
  }
}
;
jl.currentTimeMillis_0 = function currentTimeMillis_0(){
  jl.$clinit_System();
  return fromDouble_0(Date.now());
}
;
defineClass(960, 1, {1:1});
jl.MILLIS_TO_NANOS = 1000000;
cggl.Ljava_lang_System_2_classLit = createForClass('java.lang', 'System', 960, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Thread = function $clinit_Thread(){
  jl.$clinit_Thread = emptyMethod;
  jl.$clinit_Object();
}
;
jl.yield_0 = function yield_0(){
  jl.$clinit_Thread();
}
;
defineClass(1124, 1, {1:1});
cggl.Ljava_lang_Thread_2_classLit = createForClass('java.lang', 'Thread', 1124, cggl.Ljava_lang_Object_2_classLit);
jl.$clinit_Throwable$HasJavaThrowable = function $clinit_Throwable$HasJavaThrowable(){
  jl.$clinit_Throwable$HasJavaThrowable = emptyMethod;
}
;
jl.$clinit_UnsupportedOperationException = function $clinit_UnsupportedOperationException(){
  jl.$clinit_UnsupportedOperationException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
jl.UnsupportedOperationException = function UnsupportedOperationException(){
  jl.$clinit_UnsupportedOperationException();
  jl.RuntimeException.call(this);
  this.$init_628();
}
;
jl.UnsupportedOperationException_0 = function UnsupportedOperationException_0(message){
  jl.$clinit_UnsupportedOperationException();
  jl.RuntimeException_1.call(this, message);
  this.$init_628();
}
;
defineClass(56, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, jl.UnsupportedOperationException, jl.UnsupportedOperationException_0);
_.$init_628 = function $init_628(){
}
;
cggl.Ljava_lang_UnsupportedOperationException_2_classLit = createForClass('java.lang', 'UnsupportedOperationException', 56, cggl.Ljava_lang_RuntimeException_2_classLit);
jl.$clinit_Void = function $clinit_Void(){
  jl.$clinit_Void = emptyMethod;
}
;
defineClass(389, 1, {1:1, 389:1});
cggl.Ljava_lang_Void_2_classLit = createForClass('java.lang', 'Void', 389, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_BigDecimal = function $clinit_BigDecimal(){
  jm.$clinit_BigDecimal = emptyMethod;
  var i, j, j0;
  jl.$clinit_Number();
  jm.ONE_1 = new jm.BigDecimal_1(1, 0);
  jm.TEN = new jm.BigDecimal_1(10, 0);
  jm.ZERO_0 = new jm.BigDecimal_1(0, 0);
  jm.BI_SCALED_BY_ZERO = initUnidimensionalArray(cggl.Ljava_math_BigDecimal_2_classLit, {4:1, 1:1, 7:1}, 63, 11, 0, 1);
  jm.CH_ZEROS = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, 100, 15, 1);
  jm.DOUBLE_FIVE_POW = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125, 6103515625, 30517578125, 152587890625, 762939453125, 3814697265625, 19073486328125, 95367431640625, 476837158203125, 2384185791015625]);
  jm.DOUBLE_FIVE_POW_BIT_LENGTH = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, jm.DOUBLE_FIVE_POW.length, 15, 1);
  jm.DOUBLE_TEN_POW = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000, 1000000000000000, 10000000000000000]);
  jm.DOUBLE_TEN_POW_BIT_LENGTH = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, jm.DOUBLE_TEN_POW.length, 15, 1);
  jm.ZERO_SCALED_BY = initUnidimensionalArray(cggl.Ljava_math_BigDecimal_2_classLit, {4:1, 1:1, 7:1}, 63, 11, 0, 1);
  {
    i = 0;
    for (; i < jm.ZERO_SCALED_BY.length; i++) {
      setCheck(jm.BI_SCALED_BY_ZERO, i, new jm.BigDecimal_1(fromInt_0(i), 0));
      setCheck(jm.ZERO_SCALED_BY, i, new jm.BigDecimal_1(0, i));
      jm.CH_ZEROS[i] = 48;
    }
    for (; i < jm.CH_ZEROS.length; i++) {
      jm.CH_ZEROS[i] = 48;
    }
    for (j0 = 0; j0 < jm.DOUBLE_FIVE_POW_BIT_LENGTH.length; j0++) {
      jm.DOUBLE_FIVE_POW_BIT_LENGTH[j0] = jm.bitLength(jm.DOUBLE_FIVE_POW[j0]);
    }
    for (j = 0; j < jm.DOUBLE_TEN_POW_BIT_LENGTH.length; j++) {
      jm.DOUBLE_TEN_POW_BIT_LENGTH[j] = jm.bitLength(jm.DOUBLE_TEN_POW[j]);
    }
    jm.TEN_POW = (jm.$clinit_Multiplication() , jm.bigTenPows);
    jm.FIVE_POW = (jm.$clinit_Multiplication() , jm.bigFivePows);
  }
}
;
jm.BigDecimal = function BigDecimal(val){
  jm.$clinit_BigDecimal();
  jl.Number_0.call(this);
  this.$init_629();
  if (jl.isInfinite(val) || isNaN(val)) {
    throw toJs(new jl.NumberFormatException('Infinite or NaN'));
  }
  this.initFrom(ji2.toPrecision_0(val, 20));
}
;
jm.BigDecimal_0 = function BigDecimal_0(smallValue, scale){
  jl.Number_0.call(this);
  this.$init_629();
  this.smallValue = smallValue;
  this.scale_0 = scale;
  this.bitLength = jm.bitLength(smallValue);
}
;
jm.BigDecimal_1 = function BigDecimal_1(smallValue, scale){
  jl.Number_0.call(this);
  this.$init_629();
  this.scale_0 = scale;
  this.bitLength = jm.bitLength_0(smallValue);
  if (this.bitLength < 54) {
    this.smallValue = toDouble_0(smallValue);
  }
   else {
    this.intVal = jm.valueOf_41(smallValue);
  }
}
;
jm.BigDecimal_2 = function BigDecimal_2(unscaledVal, scale){
  jl.Number_0.call(this);
  this.$init_629();
  this.scale_0 = scale;
  this.setUnscaledValue(castTo(ji2.checkNotNull_0(unscaledVal), 28));
}
;
jm.BigDecimal_3 = function BigDecimal_3(unscaledVal, scale){
  jm.BigDecimal_2.call(this, unscaledVal, scale);
}
;
jm.bitLength = function bitLength(value_0){
  var negative, result;
  if (value_0 > -140737488355328 && value_0 < 140737488355328) {
    if (value_0 == 0) {
      return 0;
    }
    negative = value_0 < 0;
    if (negative) {
      value_0 = -value_0;
    }
    result = round_int($wnd.Math.floor($wnd.Math.log(value_0) / 0.6931471805599453));
    if (!negative || value_0 != $wnd.Math.pow(2, result)) {
      result++;
    }
    return result;
  }
  return jm.bitLength_0(fromDouble_0(value_0));
}
;
jm.bitLength_0 = function bitLength_0(value_0){
  if (lt(value_0, 0)) {
    value_0 = not_0(value_0);
  }
  return 64 - numberOfLeadingZeros_1(value_0);
}
;
jm.divideBigIntegers = function divideBigIntegers(scaledDividend, scaledDivisor, scale, roundingMode){
  var compRem, divisor, quotAndRem, quotient, rem, remainder, sign;
  quotAndRem = scaledDividend.divideAndRemainder(scaledDivisor);
  quotient = quotAndRem[0];
  remainder = quotAndRem[1];
  if (remainder.signum() == 0) {
    return new jm.BigDecimal_3(quotient, scale);
  }
  sign = scaledDividend.signum() * scaledDivisor.signum();
  if (scaledDivisor.bitLength_0() < 54) {
    rem = remainder.longValue();
    divisor = scaledDivisor.longValue();
    compRem = compare_25(shl_0(jl.abs_0(rem), 1), jl.abs_0(divisor));
    compRem = jm.roundingBehavior(quotient.testBit(0)?1:0, sign * (5 + compRem), roundingMode);
  }
   else {
    compRem = remainder.abs_0().shiftLeftOneBit().compareTo_17(scaledDivisor.abs_0());
    compRem = jm.roundingBehavior(quotient.testBit(0)?1:0, sign * (5 + compRem), roundingMode);
  }
  if (compRem != 0) {
    if (quotient.bitLength_0() < 54) {
      return jm.valueOf_40(add_22(quotient.longValue(), fromInt_0(compRem)), scale);
    }
    quotient = quotient.add_13(jm.valueOf_41(fromInt_0(compRem)));
    return new jm.BigDecimal_3(quotient, scale);
  }
  return new jm.BigDecimal_3(quotient, scale);
}
;
jm.dividePrimitiveDoubles = function dividePrimitiveDoubles(scaledDividend, scaledDivisor, scale, roundingMode){
  var compRem, quotient, remainder, sign;
  quotient = jm.intDivide(scaledDividend, scaledDivisor);
  remainder = scaledDividend % scaledDivisor;
  sign = compare_22(scaledDividend * scaledDivisor, 0);
  if (remainder != 0) {
    compRem = compare_22($wnd.Math.abs(remainder) * 2, $wnd.Math.abs(scaledDivisor));
    quotient += jm.roundingBehavior(round_int(quotient) & 1, sign * (5 + compRem), roundingMode);
  }
  return jm.valueOf_38(quotient, scale);
}
;
jm.intDivide = function intDivide(dividend, divisor){
  var quotient;
  quotient = dividend / divisor;
  return quotient > 0?$wnd.Math.floor(quotient):$wnd.Math.ceil(quotient);
}
;
jm.isValidBigUnscaledDecimal = function isValidBigUnscaledDecimal(str){
  if (jsEquals(jm.unscaledRegex, null)) {
    jm.unscaledRegex = new RegExp('^[+-]?\\d*$', 'i');
  }
  return jm.unscaledRegex.test(str);
}
;
jm.parseUnscaled = function parseUnscaled(str){
  return jm.isValidBigUnscaledDecimal(str)?parseInt(str, 10):NaN;
}
;
jm.roundingBehavior = function roundingBehavior(parityBit, fraction, roundingMode){
  var increment;
  increment = 0;
  switch (roundingMode.ordinal()) {
    case (jm.$clinit_RoundingMode() , jm.UNNECESSARY).ordinal():
      if (fraction != 0) {
        throw toJs(new jl.ArithmeticException('Rounding necessary'));
      }

      break;
    case (jm.$clinit_RoundingMode() , jm.UP).ordinal():
      increment = signum_0(fraction);
      break;
    case (jm.$clinit_RoundingMode() , jm.DOWN).ordinal():
      break;
    case (jm.$clinit_RoundingMode() , jm.CEILING).ordinal():
      increment = $wnd.Math.max(signum_0(fraction), 0);
      break;
    case (jm.$clinit_RoundingMode() , jm.FLOOR).ordinal():
      increment = $wnd.Math.min(signum_0(fraction), 0);
      break;
    case (jm.$clinit_RoundingMode() , jm.HALF_UP).ordinal():
      if ($wnd.Math.abs(fraction) >= 5) {
        increment = signum_0(fraction);
      }

      break;
    case (jm.$clinit_RoundingMode() , jm.HALF_DOWN).ordinal():
      if ($wnd.Math.abs(fraction) > 5) {
        increment = signum_0(fraction);
      }

      break;
    case (jm.$clinit_RoundingMode() , jm.HALF_EVEN).ordinal():
      if ($wnd.Math.abs(fraction) + parityBit > 5) {
        increment = signum_0(fraction);
      }

      break;
  }
  return increment;
}
;
jm.valueOf_38 = function valueOf_38(smallValue, scale){
  return new jm.BigDecimal_0(smallValue, scale);
}
;
jm.valueOf_39 = function valueOf_39(unscaledVal){
  if (gte_0(unscaledVal, 0) && lt(unscaledVal, 11)) {
    return jm.BI_SCALED_BY_ZERO[toInt_0(unscaledVal)];
  }
  return new jm.BigDecimal_1(unscaledVal, 0);
}
;
jm.valueOf_40 = function valueOf_40(unscaledVal, scale){
  if (scale == 0) {
    return jm.valueOf_39(unscaledVal);
  }
  if (eq(unscaledVal, 0) && scale >= 0 && scale < jm.ZERO_SCALED_BY.length) {
    return jm.ZERO_SCALED_BY[scale];
  }
  return new jm.BigDecimal_1(unscaledVal, scale);
}
;
defineClass(63, 24, {4:1, 10:1, 24:1, 1:1, 63:1}, jm.BigDecimal, jm.BigDecimal_0, jm.BigDecimal_1, jm.BigDecimal_3);
_.$init_629 = function $init_629(){
}
;
_.compareTo_1 = function compareTo_31(val){
  return this.compareTo_16(castTo(val, 63));
}
;
_.approxPrecision = function approxPrecision(){
  return this.precision > 0?this.precision:$wnd.Math.floor((this.bitLength - 1) * 0.3010299956639812) + 1;
}
;
_.compareTo_16 = function compareTo_32(val){
  var diffPrecision, diffScale, thisSign, thisUnscaled, valUnscaled, valueSign;
  thisSign = this.signum();
  valueSign = val.signum();
  if (thisSign == valueSign) {
    if (this.scale_0 == val.scale_0 && this.bitLength < 54 && val.bitLength < 54) {
      return this.smallValue < val.smallValue?-1:this.smallValue > val.smallValue?1:0;
    }
    diffScale = this.scale_0 - val.scale_0;
    diffPrecision = this.approxPrecision() - val.approxPrecision();
    if (diffPrecision > diffScale + 1) {
      return thisSign;
    }
     else if (diffPrecision < diffScale - 1) {
      return -thisSign;
    }
     else {
      thisUnscaled = this.getUnscaledValue();
      valUnscaled = val.getUnscaledValue();
      if (diffScale < 0) {
        thisUnscaled = thisUnscaled.multiply(jm.powerOf10(-diffScale));
      }
       else if (diffScale > 0) {
        valUnscaled = valUnscaled.multiply(jm.powerOf10(diffScale));
      }
      return thisUnscaled.compareTo_17(valUnscaled);
    }
  }
   else if (thisSign < valueSign) {
    return -1;
  }
   else {
    return 1;
  }
}
;
_.doubleValue = function doubleValue_5(){
  return parseDouble(this.toString_0());
}
;
_.equals_0 = function equals_33(x_0){
  var x1;
  if (maskUndefined(this) === maskUndefined(x_0)) {
    return true;
  }
  if (instanceOf(x_0, 63)) {
    x1 = castTo(x_0, 63);
    return this.scale_0 == x1.scale_0 && this.compareTo_16(x1) == 0;
  }
  return false;
}
;
_.floatValue = function floatValue_4(){
  var floatResult, powerOfTwo;
  floatResult = this.signum();
  powerOfTwo = this.bitLength - this.scale_0 / 0.3010299956639812;
  if (powerOfTwo < -149 || floatResult == 0) {
    floatResult *= 0;
  }
   else if (powerOfTwo > 129) {
    floatResult *= Infinity;
  }
   else {
    floatResult = this.doubleValue();
  }
  return floatResult;
}
;
_.getUnscaledValue = function getUnscaledValue(){
  if (isNull(this.intVal)) {
    this.intVal = jm.valueOf_41(fromDouble_0(this.smallValue));
  }
  return this.intVal;
}
;
_.hashCode_1 = function hashCode_27(){
  var longValue;
  if (this.hashCode_0 != 0) {
    return this.hashCode_0;
  }
  if (this.bitLength < 54) {
    longValue = fromDouble_0(this.smallValue);
    this.hashCode_0 = toInt_0(and_0(longValue, -1));
    this.hashCode_0 = 33 * this.hashCode_0 + toInt_0(and_0(shr_0(longValue, 32), -1));
    this.hashCode_0 = 17 * this.hashCode_0 + round_int(this.scale_0);
    return this.hashCode_0;
  }
  this.hashCode_0 = 17 * this.intVal.hashCode_1() + round_int(this.scale_0);
  return this.hashCode_0;
}
;
_.initFrom = function initFrom(val){
  var begin, ch_0, i, last, offset, scaleString, unscaled, unscaledBuffer;
  begin = 0;
  offset = 0;
  last = jl.length__I__devirtual$_0(val);
  scaleString = null;
  unscaledBuffer = new jl.StringBuilder_0(jl.length__I__devirtual$_0(val));
  if (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) == 43) {
    offset++;
    begin++;
    if (offset < last && (jl.charAt_I_C__devirtual$_0(val, offset) == 43 || jl.charAt_I_C__devirtual$_0(val, offset) == 45)) {
      throw toJs(new jl.NumberFormatException('For input string: "' + val + '"'));
    }
  }
  while (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) != 46 && jl.charAt_I_C__devirtual$_0(val, offset) != 101 && jl.charAt_I_C__devirtual$_0(val, offset) != 69) {
    offset++;
  }
  unscaledBuffer.append_8(val, begin, offset);
  if (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) == 46) {
    offset++;
    begin = offset;
    while (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) != 101 && jl.charAt_I_C__devirtual$_0(val, offset) != 69) {
      offset++;
    }
    this.scale_0 = offset - begin;
    unscaledBuffer.append_8(val, begin, offset);
  }
   else {
    this.scale_0 = 0;
  }
  if (offset < last && (jl.charAt_I_C__devirtual$_0(val, offset) == 101 || jl.charAt_I_C__devirtual$_0(val, offset) == 69)) {
    offset++;
    begin = offset;
    if (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) == 43) {
      offset++;
      if (offset < last && jl.charAt_I_C__devirtual$_0(val, offset) != 45) {
        begin++;
      }
    }
    scaleString = jl.substring_II_Ljava_lang_String___devirtual$(val, begin, last);
    this.scale_0 = this.scale_0 - jl.parseInt_2(scaleString);
    if (this.scale_0 != round_int(this.scale_0)) {
      throw toJs(new jl.NumberFormatException('Scale out of range.'));
    }
  }
  unscaled = unscaledBuffer.toString_0();
  if (jl.length__I__devirtual$_0(unscaled) < 16) {
    this.smallValue = jm.parseUnscaled(unscaled);
    if (isNaN(this.smallValue)) {
      throw toJs(new jl.NumberFormatException('For input string: "' + val + '"'));
    }
    this.bitLength = jm.bitLength(this.smallValue);
  }
   else {
    this.setUnscaledValue(new jm.BigInteger_3(unscaled));
  }
  this.precision = unscaledBuffer.length_0();
  for (i = 0; i < unscaledBuffer.length_0(); ++i) {
    ch_0 = unscaledBuffer.charAt_0(i);
    if (ch_0 != 45 && ch_0 != 48) {
      break;
    }
    --this.precision;
  }
  if (this.precision == 0) {
    this.precision = 1;
  }
}
;
_.intValue = function intValue_5(){
  return this.scale_0 <= -32 || this.scale_0 > this.approxPrecision()?0:this.toBigInteger().intValue();
}
;
_.isZero = function isZero_0(){
  return this.bitLength == 0 && this.smallValue != -1;
}
;
_.longValue = function longValue_5(){
  return this.scale_0 <= -64 || this.scale_0 > this.approxPrecision()?0:this.toBigInteger().longValue();
}
;
_.setScale = function setScale(newScale, roundingMode){
  var diffScale;
  ji2.checkNotNull_0(roundingMode);
  diffScale = newScale - this.scale_0;
  if (diffScale == 0) {
    return this;
  }
  if (diffScale > 0) {
    if (diffScale < jm.DOUBLE_TEN_POW.length && this.bitLength + jm.DOUBLE_TEN_POW_BIT_LENGTH[round_int(diffScale)] < 54) {
      return jm.valueOf_38(this.smallValue * jm.DOUBLE_TEN_POW[round_int(diffScale)], newScale);
    }
    return new jm.BigDecimal_3(jm.multiplyByTenPow(this.getUnscaledValue(), round_int(diffScale)), newScale);
  }
  if (this.bitLength < 54 && -diffScale < jm.DOUBLE_TEN_POW.length) {
    return jm.dividePrimitiveDoubles(this.smallValue, jm.DOUBLE_TEN_POW[round_int(-diffScale)], newScale, roundingMode);
  }
  return jm.divideBigIntegers(this.getUnscaledValue(), jm.powerOf10(-diffScale), newScale, roundingMode);
}
;
_.setUnscaledValue = function setUnscaledValue(unscaledValue){
  this.intVal = unscaledValue;
  this.bitLength = unscaledValue.bitLength_0();
  if (this.bitLength < 54) {
    this.smallValue = toDouble_0(unscaledValue.longValue());
  }
}
;
_.signum = function signum_3(){
  if (this.bitLength < 54) {
    return this.smallValue < 0?-1:this.smallValue > 0?1:0;
  }
  return this.getUnscaledValue().signum();
}
;
_.toBigInteger = function toBigInteger(){
  if (this.scale_0 == 0 || this.isZero()) {
    return this.getUnscaledValue();
  }
   else if (this.scale_0 < 0) {
    return this.getUnscaledValue().multiply(jm.powerOf10(-this.scale_0));
  }
   else {
    return this.getUnscaledValue().divide(jm.powerOf10(this.scale_0));
  }
}
;
_.toString_0 = function toString_53(){
  var begin, end, exponent, intString, result;
  if (jsNotEquals(this.toStringImage, null)) {
    return this.toStringImage;
  }
  if (this.bitLength < 32) {
    this.toStringImage = jm.toDecimalScaledString(fromDouble_0(this.smallValue), round_int(this.scale_0));
    return this.toStringImage;
  }
  intString = this.getUnscaledValue().toString_0();
  if (this.scale_0 == 0) {
    return intString;
  }
  begin = this.getUnscaledValue().signum() < 0?2:1;
  end = jl.length__I__devirtual$_0(intString);
  exponent = -this.scale_0 + end - begin;
  result = new jl.StringBuilder;
  result.append_9(intString);
  if (this.scale_0 > 0 && exponent >= -6) {
    if (exponent >= 0) {
      result.insert_2(end - round_int(this.scale_0), 46);
    }
     else {
      result.insert_4(begin - 1, '0.');
      result.insert_5(begin + 1, jm.CH_ZEROS, 0, -round_int(exponent) - 1);
    }
  }
   else {
    if (end - begin >= 1) {
      result.insert_2(begin, 46);
      end++;
    }
    result.insert_2(end, 69);
    if (exponent > 0) {
      result.insert_2(++end, 43);
    }
    result.insert_4(++end, jl.toString_48(fromDouble_0(exponent)));
  }
  this.toStringImage = result.toString_0();
  return this.toStringImage;
}
;
_.bitLength = 0;
_.hashCode_0 = 0;
_.precision = 0;
_.scale_0 = 0;
_.smallValue = 0;
jm.BI_SCALED_BY_ZERO_LENGTH = 11;
jm.LOG10_2 = 0.3010299956639812;
jm.LOG2 = 0.6931471805599453;
jm.POW47 = 140737488355328;
jm.ROUND_CEILING = 2;
jm.ROUND_DOWN = 1;
jm.ROUND_FLOOR = 3;
jm.ROUND_HALF_DOWN = 5;
jm.ROUND_HALF_EVEN = 6;
jm.ROUND_HALF_UP = 4;
jm.ROUND_UNNECESSARY = 7;
jm.ROUND_UP = 0;
jm.SMALL_VALUE_BITS = 54;
jm.serialVersionUID_10 = {l:75855, m:1400806, h:347249};
cggl.Ljava_math_BigDecimal_2_classLit = createForClass('java.math', 'BigDecimal', 63, cggl.Ljava_lang_Number_2_classLit);
jm.$clinit_BigInteger = function $clinit_BigInteger(){
  jm.$clinit_BigInteger = emptyMethod;
  var i;
  jl.$clinit_Number();
  jm.ONE_2 = new jm.BigInteger(1, 1);
  jm.TEN_0 = new jm.BigInteger(1, 10);
  jm.ZERO_1 = new jm.BigInteger(0, 0);
  jm.LESS = -1;
  jm.MINUS_ONE = new jm.BigInteger(-1, 1);
  jm.SMALL_VALUES = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 7:1}, 28, 0, [jm.ZERO_1, jm.ONE_2, new jm.BigInteger(1, 2), new jm.BigInteger(1, 3), new jm.BigInteger(1, 4), new jm.BigInteger(1, 5), new jm.BigInteger(1, 6), new jm.BigInteger(1, 7), new jm.BigInteger(1, 8), new jm.BigInteger(1, 9), jm.TEN_0]);
  jm.serialVersionUID_11 = neg_0({l:263395, m:229723, h:471094});
  {
    jm.TWO_POWS = initUnidimensionalArray(cggl.Ljava_math_BigInteger_2_classLit, {4:1, 1:1, 7:1}, 28, 32, 0, 1);
    for (i = 0; i < jm.TWO_POWS.length; i++) {
      setCheck(jm.TWO_POWS, i, jm.valueOf_41(shl_0(1, i)));
    }
  }
}
;
jm.BigInteger = function BigInteger(sign, bits){
  jm.$clinit_BigInteger();
  jm.BigInteger_1.call(this, sign, 1, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [bits]));
}
;
jm.BigInteger_0 = function BigInteger_0(sign, lowBits, highBits){
  jm.BigInteger_1.call(this, sign, 2, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [lowBits, highBits]));
}
;
jm.BigInteger_1 = function BigInteger_1(sign, numberLength, digits){
  jm.$clinit_BigInteger();
  jl.Number_0.call(this);
  this.$init_630();
  this.sign = sign;
  this.numberLength = numberLength;
  this.digits = digits;
}
;
jm.BigInteger_2 = function BigInteger_2(signum, digits){
  jm.$clinit_BigInteger();
  jl.Number_0.call(this);
  this.$init_630();
  if (digits.length == 0) {
    this.sign = 0;
    this.numberLength = 1;
    this.digits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [0]);
  }
   else {
    this.sign = signum;
    this.numberLength = digits.length;
    this.digits = digits;
    this.cutOffLeadingZeroes();
  }
}
;
jm.BigInteger_3 = function BigInteger_3(val){
  jm.$clinit_BigInteger();
  jm.BigInteger_4.call(this, val, 10);
}
;
jm.BigInteger_4 = function BigInteger_4(val, radix){
  jl.Number_0.call(this);
  this.$init_630();
  ji2.checkNotNull_0(val);
  if (radix < 2 || radix > 36) {
    throw toJs(new jl.NumberFormatException('Radix out of range'));
  }
  if (jl.isEmpty__Z__devirtual$(val)) {
    throw toJs(new jl.NumberFormatException('Zero length BigInteger'));
  }
  jm.setFromString(this, val, radix);
}
;
jm.fromBits = function fromBits(bits){
  var highBits, lowBits;
  lowBits = toInt_0(bits);
  highBits = ji2.getHighBits(bits);
  if (highBits != 0) {
    return new jm.BigInteger_0(1, lowBits, highBits);
  }
  if (lowBits > 10 || lowBits < 0) {
    return new jm.BigInteger(1, lowBits);
  }
  return jm.SMALL_VALUES[lowBits];
}
;
jm.getPowerOfTwo = function getPowerOfTwo(exp_0){
  var bitN, intCount, resDigits;
  if (exp_0 < jm.TWO_POWS.length) {
    return jm.TWO_POWS[exp_0];
  }
  intCount = exp_0 >> 5;
  bitN = exp_0 & 31;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, intCount + 1, 15, 1);
  resDigits[intCount] = 1 << bitN;
  return new jm.BigInteger_1(1, intCount + 1, resDigits);
}
;
jm.setFromString = function setFromString(bi, val, radix){
  var bigRadix, bigRadixDigit, bigRadixDigitsLength, charsPerInt, digitIndex, digits, endChar, newDigit, numberLength, sign, startChar, stringLength, substrEnd, substrStart, topChars;
  stringLength = jl.length__I__devirtual$_0(val);
  endChar = stringLength;
  if (jl.charAt_I_C__devirtual$_0(val, 0) == 45) {
    sign = -1;
    startChar = 1;
    stringLength--;
  }
   else {
    sign = 1;
    startChar = 0;
  }
  charsPerInt = (jm.$clinit_Conversion() , jm.digitFitInInt)[radix];
  bigRadixDigitsLength = narrow_int(stringLength / charsPerInt);
  topChars = stringLength % charsPerInt;
  if (topChars != 0) {
    bigRadixDigitsLength++;
  }
  digits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, bigRadixDigitsLength, 15, 1);
  bigRadix = (jm.$clinit_Conversion() , jm.bigRadices)[radix - 2];
  digitIndex = 0;
  substrEnd = startChar + (topChars == 0?charsPerInt:topChars);
  for (substrStart = startChar; substrStart < endChar; substrStart = substrEnd , substrEnd = substrStart + charsPerInt) {
    bigRadixDigit = parseInt_3(jl.substring_II_Ljava_lang_String___devirtual$(val, substrStart, substrEnd), radix);
    newDigit = jm.multiplyByInt(digits, digitIndex, bigRadix);
    newDigit += jm.inplaceAdd(digits, digitIndex, bigRadixDigit);
    digits[digitIndex++] = newDigit;
  }
  numberLength = digitIndex;
  bi.sign = sign;
  bi.numberLength = numberLength;
  bi.digits = digits;
  bi.cutOffLeadingZeroes();
}
;
jm.valueOf_41 = function valueOf_41(val){
  jm.$clinit_BigInteger();
  return gte_0(val, 0)?jm.fromBits(val):jm.fromBits(neg_0(val)).negate_0();
}
;
defineClass(28, 24, {4:1, 10:1, 24:1, 1:1, 28:1}, jm.BigInteger, jm.BigInteger_0, jm.BigInteger_1, jm.BigInteger_2, jm.BigInteger_3);
_.$init_630 = function $init_630(){
  this.firstNonzeroDigit = -2;
  this.hashCode_0 = 0;
}
;
_.compareTo_1 = function compareTo_33(val){
  return this.compareTo_17(castTo(val, 28));
}
;
_.abs_0 = function abs_1(){
  return this.sign < 0?this.negate_0():this;
}
;
_.add_13 = function add_28(val){
  return jm.add_29(this, val);
}
;
_.bitLength_0 = function bitLength_1(){
  return jm.bitLength_2(this);
}
;
_.compareTo_17 = function compareTo_34(val){
  if (this.sign > val.sign) {
    return 1;
  }
  if (this.sign < val.sign) {
    return -1;
  }
  if (this.numberLength > val.numberLength) {
    return this.sign;
  }
  if (this.numberLength < val.numberLength) {
    return -val.sign;
  }
  return this.sign * jm.compareArrays(this.digits, val.digits, this.numberLength);
}
;
_.cutOffLeadingZeroes = function cutOffLeadingZeroes(){
  while (this.numberLength > 0 && this.digits[--this.numberLength] == 0) {
  }
  if (this.digits[this.numberLength++] == 0) {
    this.sign = 0;
  }
}
;
_.divide = function divide(divisor){
  var cmp, divisorLen, divisorSign, resDigits, resLength, resSign, result, thisLen, thisSign, val;
  if (divisor.sign == 0) {
    throw toJs(new jl.ArithmeticException('BigInteger divide by zero'));
  }
  divisorSign = divisor.sign;
  if (divisor.isOne()) {
    return divisor.sign > 0?this:this.negate_0();
  }
  thisSign = this.sign;
  thisLen = this.numberLength;
  divisorLen = divisor.numberLength;
  if (thisLen + divisorLen == 2) {
    val = div_1(and_0(fromInt_0(this.digits[0]), 4294967295), and_0(fromInt_0(divisor.digits[0]), 4294967295));
    if (thisSign != divisorSign) {
      val = neg_0(val);
    }
    return jm.valueOf_41(val);
  }
  cmp = thisLen != divisorLen?thisLen > divisorLen?1:-1:jm.compareArrays(this.digits, divisor.digits, thisLen);
  if (cmp == 0) {
    return thisSign == divisorSign?jm.ONE_2:jm.MINUS_ONE;
  }
  if (cmp == -1) {
    return jm.ZERO_1;
  }
  resLength = thisLen - divisorLen + 1;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, resLength, 15, 1);
  resSign = thisSign == divisorSign?1:-1;
  if (divisorLen == 1) {
    jm.divideArrayByInt(resDigits, this.digits, thisLen, divisor.digits[0]);
  }
   else {
    jm.divide_0(resDigits, resLength, this.digits, thisLen, divisor.digits, divisorLen);
  }
  result = new jm.BigInteger_1(resSign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
_.divideAndRemainder = function divideAndRemainder(divisor){
  var cmp, divisorDigits, divisorLen, divisorSign, quotientDigits, quotientLength, quotientSign, remainderDigits, remainderLength, result0, result1, thisDigits, thisLen, thisSign;
  divisorSign = divisor.sign;
  if (divisorSign == 0) {
    throw toJs(new jl.ArithmeticException('BigInteger divide by zero'));
  }
  divisorLen = divisor.numberLength;
  divisorDigits = divisor.digits;
  if (divisorLen == 1) {
    return jm.divideAndRemainderByInteger(this, divisorDigits[0], divisorSign);
  }
  thisDigits = this.digits;
  thisLen = this.numberLength;
  cmp = thisLen != divisorLen?thisLen > divisorLen?1:-1:jm.compareArrays(thisDigits, divisorDigits, thisLen);
  if (cmp < 0) {
    return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 7:1}, 28, 0, [jm.ZERO_1, this]);
  }
  thisSign = this.sign;
  quotientLength = thisLen - divisorLen + 1;
  remainderLength = divisorLen;
  quotientSign = thisSign == divisorSign?1:-1;
  quotientDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, quotientLength, 15, 1);
  remainderDigits = jm.divide_0(quotientDigits, quotientLength, thisDigits, thisLen, divisorDigits, divisorLen);
  result0 = new jm.BigInteger_1(quotientSign, quotientLength, quotientDigits);
  result1 = new jm.BigInteger_1(thisSign, remainderLength, remainderDigits);
  result0.cutOffLeadingZeroes();
  result1.cutOffLeadingZeroes();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 7:1}, 28, 0, [result0, result1]);
}
;
_.doubleValue = function doubleValue_6(){
  return parseDouble(this.toString_0());
}
;
_.equals_0 = function equals_34(x_0){
  var x1;
  if (maskUndefined(this) === maskUndefined(x_0)) {
    return true;
  }
  if (instanceOf(x_0, 28)) {
    x1 = castTo(x_0, 28);
    return this.sign == x1.sign && this.numberLength == x1.numberLength && this.equalsArrays(x1.digits);
  }
  return false;
}
;
_.equalsArrays = function equalsArrays(b){
  var i;
  for (i = this.numberLength - 1; i >= 0 && this.digits[i] == b[i]; i--) {
  }
  return i < 0;
}
;
_.floatValue = function floatValue_5(){
  return parseFloat_0(this.toString_0());
}
;
_.getFirstNonzeroDigit = function getFirstNonzeroDigit(){
  var i;
  if (this.firstNonzeroDigit == -2) {
    if (this.sign == 0) {
      i = -1;
    }
     else {
      for (i = 0; this.digits[i] == 0; i++) {
      }
    }
    this.firstNonzeroDigit = i;
  }
  return this.firstNonzeroDigit;
}
;
_.hashCode_1 = function hashCode_28(){
  var i;
  if (this.hashCode_0 != 0) {
    return this.hashCode_0;
  }
  for (i = 0; i < this.digits.length; i++) {
    this.hashCode_0 = this.hashCode_0 * 33 + (this.digits[i] & -1);
  }
  this.hashCode_0 = this.hashCode_0 * this.sign;
  return this.hashCode_0;
}
;
_.intValue = function intValue_6(){
  var i;
  i = this.digits[0];
  return this.sign > 0?i:ji2.ensureInt(-i);
}
;
_.isOne = function isOne(){
  return this.numberLength == 1 && this.digits[0] == 1;
}
;
_.longValue = function longValue_6(){
  var value_0;
  value_0 = this.numberLength > 1?ji2.fromBits_0(this.digits[0], this.digits[1]):ji2.fromBits_0(this.digits[0], 0);
  return this.sign > 0?value_0:neg_0(value_0);
}
;
_.multiply = function multiply(val){
  if (val.sign == 0 || this.sign == 0) {
    return jm.ZERO_1;
  }
  return jm.multiply_0(this, val);
}
;
_.negate_0 = function negate_1(){
  return this.sign == 0?this:new jm.BigInteger_1(-this.sign, this.numberLength, this.digits);
}
;
_.pow_0 = function pow_0(exp_0){
  var x_0;
  if (exp_0 < 0) {
    throw toJs(new jl.ArithmeticException('Negative exponent'));
  }
  if (exp_0 == 0) {
    return jm.ONE_2;
  }
   else if (exp_0 == 1 || this.equals_0(jm.ONE_2) || this.equals_0(jm.ZERO_1)) {
    return this;
  }
  if (!this.testBit(0)) {
    x_0 = 1;
    while (!this.testBit(x_0)) {
      x_0++;
    }
    return jm.getPowerOfTwo(x_0 * exp_0).multiply(this.shiftRight(x_0).pow_0(exp_0));
  }
  return jm.pow_1(this, exp_0);
}
;
_.shiftLeft = function shiftLeft(n){
  if (n == 0 || this.sign == 0) {
    return this;
  }
  return n > 0?jm.shiftLeft_0(this, n):jm.shiftRight_0(this, -n);
}
;
_.shiftLeftOneBit = function shiftLeftOneBit(){
  return this.sign == 0?this:jm.shiftLeftOneBit_0(this);
}
;
_.shiftRight = function shiftRight(n){
  if (n == 0 || this.sign == 0) {
    return this;
  }
  return n > 0?jm.shiftRight_0(this, n):jm.shiftLeft_0(this, -n);
}
;
_.signum = function signum_4(){
  return this.sign;
}
;
_.subtract = function subtract(val){
  return jm.subtract_0(this, val);
}
;
_.testBit = function testBit(n){
  var digit, firstNonZeroDigit, intCount;
  if (n == 0) {
    return (this.digits[0] & 1) != 0;
  }
  if (n < 0) {
    throw toJs(new jl.ArithmeticException('Negative bit address'));
  }
  intCount = n >> 5;
  if (intCount >= this.numberLength) {
    return this.sign < 0;
  }
  digit = this.digits[intCount];
  n = 1 << (n & 31);
  if (this.sign < 0) {
    firstNonZeroDigit = this.getFirstNonzeroDigit();
    if (intCount < firstNonZeroDigit) {
      return false;
    }
     else if (firstNonZeroDigit == intCount) {
      digit = -digit;
    }
     else {
      digit = ~digit;
    }
  }
  return (digit & n) != 0;
}
;
_.toString_0 = function toString_54(){
  return jm.toDecimalScaledString_0(this, 0);
}
;
_.toString_3 = function toString_55(radix){
  return jm.bigInteger2String(this, radix);
}
;
_.firstNonzeroDigit = 0;
_.hashCode_0 = 0;
_.numberLength = 0;
_.sign = 0;
jm.EQUALS = 0;
jm.GREATER = 1;
jm.LESS = 0;
jm.serialVersionUID_11 = 0;
cggl.Ljava_math_BigInteger_2_classLit = createForClass('java.math', 'BigInteger', 28, cggl.Ljava_lang_Number_2_classLit);
jm.$clinit_BitLevel = function $clinit_BitLevel(){
  jm.$clinit_BitLevel = emptyMethod;
  jl.$clinit_Object();
}
;
jm.bitLength_2 = function bitLength_2(val){
  jm.$clinit_BitLevel();
  var bLength, highDigit, i;
  if (val.sign == 0) {
    return 0;
  }
  bLength = val.numberLength << 5;
  highDigit = val.digits[val.numberLength - 1];
  if (val.sign < 0) {
    i = val.getFirstNonzeroDigit();
    if (i == val.numberLength - 1) {
      highDigit--;
      highDigit = ji2.ensureInt(highDigit);
    }
  }
  bLength -= numberOfLeadingZeros_0(highDigit);
  return bLength;
}
;
jm.shiftLeft_0 = function shiftLeft_0(source, count){
  jm.$clinit_BitLevel();
  var intCount, resDigits, resLength, result;
  intCount = count >> 5;
  count &= 31;
  resLength = source.numberLength + intCount + (count == 0?0:1);
  resDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, resLength, 15, 1);
  jm.shiftLeft_1(resDigits, source.digits, intCount, count);
  result = new jm.BigInteger_1(source.sign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.shiftLeft_1 = function shiftLeft_1(result, source, intCount, count){
  jm.$clinit_BitLevel();
  var i, i0, rightShiftCount;
  if (count == 0) {
    jl.arraycopy(source, 0, result, intCount, result.length - intCount);
  }
   else {
    rightShiftCount = 32 - count;
    result[result.length - 1] = 0;
    for (i0 = result.length - 1; i0 > intCount; i0--) {
      result[i0] |= source[i0 - intCount - 1] >>> rightShiftCount;
      result[i0 - 1] = source[i0 - intCount - 1] << count;
    }
  }
  for (i = 0; i < intCount; i++) {
    result[i] = 0;
  }
}
;
jm.shiftLeftOneBit_0 = function shiftLeftOneBit_0(source){
  jm.$clinit_BitLevel();
  var resDigits, resLen, result, srcLen;
  srcLen = source.numberLength;
  resLen = srcLen + 1;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, resLen, 15, 1);
  jm.shiftLeftOneBit_1(resDigits, source.digits, srcLen);
  result = new jm.BigInteger_1(source.sign, resLen, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.shiftLeftOneBit_1 = function shiftLeftOneBit_1(result, source, srcLen){
  jm.$clinit_BitLevel();
  var carry, i, val;
  carry = 0;
  for (i = 0; i < srcLen; i++) {
    val = source[i];
    result[i] = val << 1 | carry;
    carry = val >>> 31;
  }
  if (carry != 0) {
    result[srcLen] = carry;
  }
}
;
jm.shiftRight_0 = function shiftRight_0(source, count){
  jm.$clinit_BitLevel();
  var i, intCount, resDigits, resLength, result;
  intCount = count >> 5;
  count &= 31;
  if (intCount >= source.numberLength) {
    return source.sign < 0?(jm.$clinit_BigInteger() , jm.MINUS_ONE):(jm.$clinit_BigInteger() , jm.ZERO_1);
  }
  resLength = source.numberLength - intCount;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, resLength + 1, 15, 1);
  jm.shiftRight_1(resDigits, resLength, source.digits, intCount, count);
  if (source.sign < 0) {
    for (i = 0; i < intCount && source.digits[i] == 0; i++) {
    }
    if (i < intCount || count > 0 && source.digits[i] << 32 - count != 0) {
      for (i = 0; i < resLength && resDigits[i] == -1; i++) {
        resDigits[i] = 0;
      }
      if (i == resLength) {
        resLength++;
      }
      resDigits[i]++;
    }
  }
  result = new jm.BigInteger_1(source.sign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.shiftRight_1 = function shiftRight_1(result, resultLen, source, intCount, count){
  jm.$clinit_BitLevel();
  var allZero, i, leftShiftCount;
  allZero = true;
  for (i = 0; i < intCount; i++) {
    allZero = allZero & source[i] == 0;
  }
  if (count == 0) {
    jl.arraycopy(source, intCount, result, 0, resultLen);
    i = resultLen;
  }
   else {
    leftShiftCount = 32 - count;
    allZero = allZero & source[i] << leftShiftCount == 0;
    for (i = 0; i < resultLen - 1; i++) {
      result[i] = source[i + intCount] >>> count | source[i + intCount + 1] << leftShiftCount;
    }
    result[i] = source[i + intCount] >>> count;
    i++;
  }
  return allZero;
}
;
defineClass(1318, 1, {1:1});
cggl.Ljava_math_BitLevel_2_classLit = createForClass('java.math', 'BitLevel', 1318, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_Conversion = function $clinit_Conversion(){
  jm.$clinit_Conversion = emptyMethod;
  jl.$clinit_Object();
  jm.bigRadices = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [-2147483648, 1162261467, 1073741824, 1220703125, 362797056, 1977326743, 1073741824, 387420489, 1000000000, 214358881, 429981696, 815730721, 1475789056, 170859375, 268435456, 410338673, 612220032, 893871739, 1280000000, 1801088541, 113379904, 148035889, 191102976, 244140625, 308915776, 387420489, 481890304, 594823321, 729000000, 887503681, 1073741824, 1291467969, 1544804416, 1838265625, 60466176]);
  jm.digitFitInInt = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [-1, -1, 31, 19, 15, 13, 11, 11, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5]);
}
;
jm.bigInteger2String = function bigInteger2String(val, radix){
  jm.$clinit_Conversion();
  var bigRadix, bitsForRadixDigit, charsPerInt, currentChar, delta, digits, highDigit, i, j, numberLength, previous, resDigit, resLengthInChars, result, sign, temp, tempLen, v;
  sign = val.sign;
  numberLength = val.numberLength;
  digits = val.digits;
  if (sign == 0) {
    return '0';
  }
  if (numberLength == 1) {
    highDigit = digits[numberLength - 1];
    v = and_0(fromInt_0(highDigit), 4294967295);
    if (sign < 0) {
      v = neg_0(v);
    }
    return jl.toString_49(v, radix);
  }
  if (radix == 10 || radix < 2 || radix > 36) {
    return val.toString_0();
  }
  bitsForRadixDigit = $wnd.Math.log(radix) / $wnd.Math.log(2);
  resLengthInChars = round_int(val.abs_0().bitLength_0() / bitsForRadixDigit + (sign < 0?1:0)) + 1;
  result = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, resLengthInChars, 15, 1);
  currentChar = resLengthInChars;
  if (radix != 16) {
    temp = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, numberLength, 15, 1);
    jl.arraycopy(digits, 0, temp, 0, numberLength);
    tempLen = numberLength;
    charsPerInt = jm.digitFitInInt[radix];
    bigRadix = jm.bigRadices[radix - 2];
    while (true) {
      resDigit = jm.divideArrayByInt(temp, temp, tempLen, bigRadix);
      previous = currentChar;
      do {
        result[--currentChar] = jl.forDigit_0(resDigit % radix, radix);
      }
       while ((resDigit = narrow_int(resDigit / radix)) != 0 && currentChar != 0);
      delta = charsPerInt - previous + currentChar;
      for (i = 0; i < delta && currentChar > 0; i++) {
        result[--currentChar] = 48;
      }
      for (i = tempLen - 1; i > 0 && temp[i] == 0; i--) {
      }
      tempLen = i + 1;
      if (tempLen == 1 && temp[0] == 0) {
        break;
      }
    }
  }
   else {
    for (i = 0; i < numberLength; i++) {
      for (j = 0; j < 8 && currentChar > 0; j++) {
        resDigit = digits[i] >> (j << 2) & 15;
        result[--currentChar] = jl.forDigit_0(resDigit, 16);
      }
    }
  }
  while (result[currentChar] == 48) {
    currentChar++;
  }
  if (sign == -1) {
    result[--currentChar] = 45;
  }
  return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
}
;
jm.divideLongByBillion = function divideLongByBillion(a){
  var aPos, bLong, bPos, quot, rem;
  if (gte_0(a, 0)) {
    bLong = 1000000000;
    quot = div_1(a, bLong);
    rem = mod_0(a, bLong);
  }
   else {
    aPos = shru_0(a, 1);
    bPos = shru_0(1000000000, 1);
    quot = div_1(aPos, bPos);
    rem = mod_0(aPos, bPos);
    rem = add_22(shl_0(rem, 1), and_0(a, 1));
  }
  return or_0(shl_0(rem, 32), and_0(quot, 4294967295));
}
;
jm.toDecimalScaledString = function toDecimalScaledString(value_0, scale){
  jm.$clinit_Conversion();
  var currentChar, endPoint, exponent, insertPoint, j, j0, negNumber, prev, resLengthInChars, result, result1, result10, startPoint, v;
  negNumber = lt(value_0, 0);
  if (negNumber) {
    value_0 = neg_0(value_0);
  }
  if (eq(value_0, 0)) {
    switch (scale) {
      case 0:
        return '0';
      case 1:
        return '0.0';
      case 2:
        return '0.00';
      case 3:
        return '0.000';
      case 4:
        return '0.0000';
      case 5:
        return '0.00000';
      case 6:
        return '0.000000';
      default:result10 = new jl.StringBuilder;
        if (scale < 0) {
          result10.append_9('0E+');
        }
         else {
          result10.append_9('0E');
        }

        result10.append_9(scale == -2147483648?'2147483648':jl.toString_45(-scale));
        return result10.toString_0();
    }
  }
  resLengthInChars = 18;
  result = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, resLengthInChars + 1, 15, 1);
  currentChar = resLengthInChars;
  v = value_0;
  do {
    prev = v;
    v = div_1(v, 10);
    result[--currentChar] = narrow_char(toInt_0(add_22(48, sub_2(prev, mul_0(v, 10)))));
  }
   while (neq(v, 0));
  exponent = sub_2(sub_2(sub_2(fromInt_0(resLengthInChars), fromInt_0(currentChar)), fromInt_0(scale)), 1);
  if (scale == 0) {
    if (negNumber) {
      result[--currentChar] = 45;
    }
    return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
  }
  if (scale > 0 && gte_0(exponent, fromInt_0(-6))) {
    if (gte_0(exponent, 0)) {
      insertPoint = currentChar + toInt_0(exponent);
      for (j0 = resLengthInChars - 1; j0 >= insertPoint; j0--) {
        result[j0 + 1] = result[j0];
      }
      result[++insertPoint] = 46;
      if (negNumber) {
        result[--currentChar] = 45;
      }
      return jl.$create_14(result, currentChar, resLengthInChars - currentChar + 1);
    }
    for (j = 2; lt(fromInt_0(j), add_22(neg_0(exponent), 1)); j++) {
      result[--currentChar] = 48;
    }
    result[--currentChar] = 46;
    result[--currentChar] = 48;
    if (negNumber) {
      result[--currentChar] = 45;
    }
    return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
  }
  startPoint = currentChar + 1;
  endPoint = resLengthInChars;
  result1 = new jl.StringBuilder_0(16 + endPoint - startPoint);
  if (negNumber) {
    result1.append_4(45);
  }
  if (endPoint - startPoint >= 1) {
    result1.append_4(result[currentChar]);
    result1.append_4(46);
    result1.append_10(result, currentChar + 1, resLengthInChars - currentChar - 1);
  }
   else {
    result1.append_10(result, currentChar, resLengthInChars - currentChar);
  }
  result1.append_4(69);
  if (gt(exponent, 0)) {
    result1.append_4(43);
  }
  result1.append_9(jl.toString_48(exponent));
  return result1.toString_0();
}
;
jm.toDecimalScaledString_0 = function toDecimalScaledString_0(val, scale){
  jm.$clinit_Conversion();
  var currentChar, delta, digits, endPoint, exponent, highDigit, i, i1, insertPoint, j, j0, negNumber, numberLength, prev, previous, res, resDigit, resLengthInChars, result, result1, result10, result11, sign, startPoint, temp, temp1, tempLen, v;
  sign = val.sign;
  numberLength = val.numberLength;
  digits = val.digits;
  if (sign == 0) {
    switch (scale) {
      case 0:
        return '0';
      case 1:
        return '0.0';
      case 2:
        return '0.00';
      case 3:
        return '0.000';
      case 4:
        return '0.0000';
      case 5:
        return '0.00000';
      case 6:
        return '0.000000';
      default:result10 = new jl.StringBuilder;
        if (scale < 0) {
          result10.append_9('0E+');
        }
         else {
          result10.append_9('0E');
        }

        result10.append_5(-scale);
        return result10.toString_0();
    }
  }
  resLengthInChars = numberLength * 10 + 1 + 7;
  result = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, resLengthInChars + 1, 15, 1);
  currentChar = resLengthInChars;
  if (numberLength == 1) {
    highDigit = digits[0];
    if (highDigit < 0) {
      v = and_0(fromInt_0(highDigit), 4294967295);
      do {
        prev = v;
        v = div_1(v, 10);
        result[--currentChar] = narrow_char(48 + toInt_0(sub_2(prev, mul_0(v, 10))));
      }
       while (neq(v, 0));
    }
     else {
      v = highDigit;
      do {
        prev = v;
        v = narrow_int(v / 10);
        result[--currentChar] = narrow_char(48 + (prev - v * 10));
      }
       while (v != 0);
    }
  }
   else {
    temp = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, numberLength, 15, 1);
    tempLen = numberLength;
    jl.arraycopy(digits, 0, temp, 0, tempLen);
    BIG_LOOP: while (true) {
      result11 = 0;
      for (i1 = tempLen - 1; i1 >= 0; i1--) {
        temp1 = add_22(shl_0(result11, 32), and_0(fromInt_0(temp[i1]), 4294967295));
        res = jm.divideLongByBillion(temp1);
        temp[i1] = toInt_0(res);
        result11 = fromInt_0(toInt_0(shr_0(res, 32)));
      }
      resDigit = toInt_0(result11);
      previous = currentChar;
      do {
        result[--currentChar] = narrow_char(48 + resDigit % 10);
      }
       while ((resDigit = narrow_int(resDigit / 10)) != 0 && currentChar != 0);
      delta = 9 - previous + currentChar;
      for (i = 0; i < delta && currentChar > 0; i++) {
        result[--currentChar] = 48;
      }
      j = tempLen - 1;
      for (; temp[j] == 0; j--) {
        if (j == 0) {
          break BIG_LOOP;
        }
      }
      tempLen = j + 1;
    }
    while (result[currentChar] == 48) {
      currentChar++;
    }
  }
  negNumber = sign < 0;
  exponent = resLengthInChars - currentChar - scale - 1;
  if (scale == 0) {
    if (negNumber) {
      result[--currentChar] = 45;
    }
    return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
  }
  if (scale > 0 && exponent >= -6) {
    if (exponent >= 0) {
      insertPoint = currentChar + exponent;
      for (j0 = resLengthInChars - 1; j0 >= insertPoint; j0--) {
        result[j0 + 1] = result[j0];
      }
      result[++insertPoint] = 46;
      if (negNumber) {
        result[--currentChar] = 45;
      }
      return jl.$create_14(result, currentChar, resLengthInChars - currentChar + 1);
    }
    for (j = 2; j < -exponent + 1; j++) {
      result[--currentChar] = 48;
    }
    result[--currentChar] = 46;
    result[--currentChar] = 48;
    if (negNumber) {
      result[--currentChar] = 45;
    }
    return jl.$create_14(result, currentChar, resLengthInChars - currentChar);
  }
  startPoint = currentChar + 1;
  endPoint = resLengthInChars;
  result1 = new jl.StringBuilder_0(16 + endPoint - startPoint);
  if (negNumber) {
    result1.append_4(45);
  }
  if (endPoint - startPoint >= 1) {
    result1.append_4(result[currentChar]);
    result1.append_4(46);
    result1.append_10(result, currentChar + 1, resLengthInChars - currentChar - 1);
  }
   else {
    result1.append_10(result, currentChar, resLengthInChars - currentChar);
  }
  result1.append_4(69);
  if (exponent > 0) {
    result1.append_4(43);
  }
  result1.append_9(jl.toString_45(exponent));
  return result1.toString_0();
}
;
defineClass(1255, 1, {1:1});
cggl.Ljava_math_Conversion_2_classLit = createForClass('java.math', 'Conversion', 1255, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_Division = function $clinit_Division(){
  jm.$clinit_Division = emptyMethod;
  jl.$clinit_Object();
}
;
jm.divide_0 = function divide_0(quot, quotLength, a, aLength, b, bLength){
  jm.$clinit_Division();
  var borrow, carry, divisorShift, firstDivisorDigit, guessDigit, i, j, k, leftHand, longR, normA, normB, normBLength, product, rOverflowed, rem, res, rightHand;
  normA = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, aLength + 1, 15, 1);
  normB = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, bLength + 1, 15, 1);
  normBLength = bLength;
  divisorShift = numberOfLeadingZeros_0(b[bLength - 1]);
  if (divisorShift != 0) {
    jm.shiftLeft_1(normB, b, 0, divisorShift);
    jm.shiftLeft_1(normA, a, 0, divisorShift);
  }
   else {
    jl.arraycopy(a, 0, normA, 0, aLength);
    jl.arraycopy(b, 0, normB, 0, bLength);
  }
  firstDivisorDigit = normB[normBLength - 1];
  i = quotLength - 1;
  j = aLength;
  while (i >= 0) {
    guessDigit = 0;
    if (normA[j] == firstDivisorDigit) {
      guessDigit = -1;
    }
     else {
      product = add_22(shl_0(and_0(fromInt_0(normA[j]), 4294967295), 32), and_0(fromInt_0(normA[j - 1]), 4294967295));
      res = jm.divideLongByInt(product, firstDivisorDigit);
      guessDigit = toInt_0(res);
      rem = toInt_0(shr_0(res, 32));
      if (guessDigit != 0) {
        leftHand = 0;
        rightHand = 0;
        rOverflowed = false;
        guessDigit++;
        do {
          guessDigit--;
          if (rOverflowed) {
            break;
          }
          leftHand = mul_0(and_0(fromInt_0(guessDigit), 4294967295), and_0(fromInt_0(normB[normBLength - 2]), 4294967295));
          rightHand = add_22(shl_0(fromInt_0(rem), 32), and_0(fromInt_0(normA[j - 2]), 4294967295));
          longR = add_22(and_0(fromInt_0(rem), 4294967295), and_0(fromInt_0(firstDivisorDigit), 4294967295));
          if (numberOfLeadingZeros_0(toInt_0(shru_0(longR, 32))) < 32) {
            rOverflowed = true;
          }
           else {
            rem = toInt_0(longR);
          }
        }
         while (gt(xor_0(leftHand, {l:0, m:0, h:524288}), xor_0(rightHand, {l:0, m:0, h:524288})));
      }
    }
    if (guessDigit != 0) {
      borrow = jm.multiplyAndSubtract(normA, j - normBLength, normB, normBLength, guessDigit);
      if (borrow != 0) {
        guessDigit--;
        carry = 0;
        for (k = 0; k < normBLength; k++) {
          carry = add_22(carry, add_22(and_0(fromInt_0(normA[j - normBLength + k]), 4294967295), and_0(fromInt_0(normB[k]), 4294967295)));
          normA[j - normBLength + k] = toInt_0(carry);
          carry = shru_0(carry, 32);
        }
      }
    }
    if (jsNotEquals(quot, null)) {
      quot[i] = guessDigit;
    }
    j--;
    i--;
  }
  if (divisorShift != 0) {
    jm.shiftRight_1(normB, normBLength, normA, 0, divisorShift);
    return normB;
  }
  jl.arraycopy(normA, 0, normB, 0, bLength);
  return normA;
}
;
jm.divideAndRemainderByInteger = function divideAndRemainderByInteger(val, divisor, divisorSign){
  jm.$clinit_Division();
  var a, b, quo, quotientDigits, quotientLength, quotientSign, rem, remainderDigits, result0, result1, valDigits, valLen, valSign;
  valDigits = val.digits;
  valLen = val.numberLength;
  valSign = val.sign;
  if (valLen == 1) {
    a = and_0(fromInt_0(valDigits[0]), 4294967295);
    b = and_0(fromInt_0(divisor), 4294967295);
    quo = div_1(a, b);
    rem = mod_0(a, b);
    if (valSign != divisorSign) {
      quo = neg_0(quo);
    }
    if (valSign < 0) {
      rem = neg_0(rem);
    }
    return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 7:1}, 28, 0, [jm.valueOf_41(quo), jm.valueOf_41(rem)]);
  }
  quotientLength = valLen;
  quotientSign = valSign == divisorSign?1:-1;
  quotientDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, quotientLength, 15, 1);
  remainderDigits = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [jm.divideArrayByInt(quotientDigits, valDigits, valLen, divisor)]);
  result0 = new jm.BigInteger_1(quotientSign, quotientLength, quotientDigits);
  result1 = new jm.BigInteger_1(valSign, 1, remainderDigits);
  result0.cutOffLeadingZeroes();
  result1.cutOffLeadingZeroes();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_BigInteger_2_classLit, 1), {4:1, 1:1, 7:1}, 28, 0, [result0, result1]);
}
;
jm.divideArrayByInt = function divideArrayByInt(dest, src_0, srcLength, divisor){
  jm.$clinit_Division();
  var aPos, bLong, bPos, i, quot, rem, temp;
  rem = 0;
  bLong = and_0(fromInt_0(divisor), 4294967295);
  for (i = srcLength - 1; i >= 0; i--) {
    temp = or_0(shl_0(rem, 32), and_0(fromInt_0(src_0[i]), 4294967295));
    if (gte_0(temp, 0)) {
      quot = div_1(temp, bLong);
      rem = mod_0(temp, bLong);
    }
     else {
      aPos = shru_0(temp, 1);
      bPos = fromInt_0(divisor >>> 1);
      quot = div_1(aPos, bPos);
      rem = mod_0(aPos, bPos);
      rem = add_22(shl_0(rem, 1), and_0(temp, 1));
      if ((divisor & 1) != 0) {
        if (lte(quot, rem)) {
          rem = sub_2(rem, quot);
        }
         else {
          if (lte(sub_2(quot, rem), bLong)) {
            rem = add_22(rem, sub_2(bLong, quot));
            quot = sub_2(quot, 1);
          }
           else {
            rem = add_22(rem, sub_2(shl_0(bLong, 1), quot));
            quot = sub_2(quot, 2);
          }
        }
      }
    }
    dest[i] = toInt_0(and_0(quot, 4294967295));
  }
  return toInt_0(rem);
}
;
jm.divideLongByInt = function divideLongByInt(a, b){
  var aPos, bLong, bPos, quot, rem;
  bLong = and_0(fromInt_0(b), 4294967295);
  if (gte_0(a, 0)) {
    quot = div_1(a, bLong);
    rem = mod_0(a, bLong);
  }
   else {
    aPos = shru_0(a, 1);
    bPos = fromInt_0(b >>> 1);
    quot = div_1(aPos, bPos);
    rem = mod_0(aPos, bPos);
    rem = add_22(shl_0(rem, 1), and_0(a, 1));
    if ((b & 1) != 0) {
      if (lte(quot, rem)) {
        rem = sub_2(rem, quot);
      }
       else {
        if (lte(sub_2(quot, rem), bLong)) {
          rem = add_22(rem, sub_2(bLong, quot));
          quot = sub_2(quot, 1);
        }
         else {
          rem = add_22(rem, sub_2(shl_0(bLong, 1), quot));
          quot = sub_2(quot, 2);
        }
      }
    }
  }
  return or_0(shl_0(rem, 32), and_0(quot, 4294967295));
}
;
jm.multiplyAndSubtract = function multiplyAndSubtract(a, start_0, b, bLen, c){
  var carry0, carry1, i;
  carry0 = 0;
  carry1 = 0;
  for (i = 0; i < bLen; i++) {
    carry0 = jm.unsignedMultAddAdd(b[i], c, toInt_0(carry0), 0);
    carry1 = add_22(sub_2(and_0(fromInt_0(a[start_0 + i]), 4294967295), and_0(carry0, 4294967295)), carry1);
    a[start_0 + i] = toInt_0(carry1);
    carry1 = shr_0(carry1, 32);
    carry0 = shru_0(carry0, 32);
  }
  carry1 = add_22(sub_2(and_0(fromInt_0(a[start_0 + bLen]), 4294967295), carry0), carry1);
  a[start_0 + bLen] = toInt_0(carry1);
  return toInt_0(shr_0(carry1, 32));
}
;
defineClass(1319, 1, {1:1});
cggl.Ljava_math_Division_2_classLit = createForClass('java.math', 'Division', 1319, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_Elementary = function $clinit_Elementary(){
  jm.$clinit_Elementary = emptyMethod;
  jl.$clinit_Object();
}
;
jm.add_29 = function add_29(op1, op2){
  jm.$clinit_Elementary();
  var a, b, cmp, op1Len, op1Sign, op2Len, op2Sign, res, res0, resDigits, resSign, valueHi, valueLo;
  op1Sign = op1.sign;
  op2Sign = op2.sign;
  if (op1Sign == 0) {
    return op2;
  }
  if (op2Sign == 0) {
    return op1;
  }
  op1Len = op1.numberLength;
  op2Len = op2.numberLength;
  if (op1Len + op2Len == 2) {
    a = and_0(fromInt_0(op1.digits[0]), 4294967295);
    b = and_0(fromInt_0(op2.digits[0]), 4294967295);
    if (op1Sign == op2Sign) {
      res0 = add_22(a, b);
      valueLo = toInt_0(res0);
      valueHi = toInt_0(shru_0(res0, 32));
      return valueHi == 0?new jm.BigInteger(op1Sign, valueLo):new jm.BigInteger_1(op1Sign, 2, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [valueLo, valueHi]));
    }
    return jm.valueOf_41(op1Sign < 0?sub_2(b, a):sub_2(a, b));
  }
   else if (op1Sign == op2Sign) {
    resSign = op1Sign;
    resDigits = op1Len >= op2Len?jm.add_30(op1.digits, op1Len, op2.digits, op2Len):jm.add_30(op2.digits, op2Len, op1.digits, op1Len);
  }
   else {
    cmp = op1Len != op2Len?op1Len > op2Len?1:-1:jm.compareArrays(op1.digits, op2.digits, op1Len);
    if (cmp == 0) {
      return jm.$clinit_BigInteger() , jm.ZERO_1;
    }
    if (cmp == 1) {
      resSign = op1Sign;
      resDigits = jm.subtract_1(op1.digits, op1Len, op2.digits, op2Len);
    }
     else {
      resSign = op2Sign;
      resDigits = jm.subtract_1(op2.digits, op2Len, op1.digits, op1Len);
    }
  }
  res = new jm.BigInteger_1(resSign, resDigits.length, resDigits);
  res.cutOffLeadingZeroes();
  return res;
}
;
jm.add_30 = function add_30(a, aSize, b, bSize){
  var res;
  res = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, aSize + 1, 15, 1);
  jm.add_31(res, a, aSize, b, bSize);
  return res;
}
;
jm.add_31 = function add_31(res, a, aSize, b, bSize){
  var carry, i;
  carry = add_22(and_0(fromInt_0(a[0]), 4294967295), and_0(fromInt_0(b[0]), 4294967295));
  res[0] = toInt_0(carry);
  carry = shr_0(carry, 32);
  if (aSize >= bSize) {
    for (i = 1; i < bSize; i++) {
      carry = add_22(carry, add_22(and_0(fromInt_0(a[i]), 4294967295), and_0(fromInt_0(b[i]), 4294967295)));
      res[i] = toInt_0(carry);
      carry = shr_0(carry, 32);
    }
    for (; i < aSize; i++) {
      carry = add_22(carry, and_0(fromInt_0(a[i]), 4294967295));
      res[i] = toInt_0(carry);
      carry = shr_0(carry, 32);
    }
  }
   else {
    for (i = 1; i < aSize; i++) {
      carry = add_22(carry, add_22(and_0(fromInt_0(a[i]), 4294967295), and_0(fromInt_0(b[i]), 4294967295)));
      res[i] = toInt_0(carry);
      carry = shr_0(carry, 32);
    }
    for (; i < bSize; i++) {
      carry = add_22(carry, and_0(fromInt_0(b[i]), 4294967295));
      res[i] = toInt_0(carry);
      carry = shr_0(carry, 32);
    }
  }
  if (neq(carry, 0)) {
    res[i] = toInt_0(carry);
  }
}
;
jm.compareArrays = function compareArrays(a, b, size_0){
  jm.$clinit_Elementary();
  var i;
  for (i = size_0 - 1; i >= 0 && a[i] == b[i]; i--) {
  }
  return i < 0?0:lt(and_0(fromInt_0(a[i]), 4294967295), and_0(fromInt_0(b[i]), 4294967295))?-1:1;
}
;
jm.inplaceAdd = function inplaceAdd(a, aSize, addend){
  jm.$clinit_Elementary();
  var carry, i;
  carry = and_0(fromInt_0(addend), 4294967295);
  for (i = 0; neq(carry, 0) && i < aSize; i++) {
    carry = add_22(carry, and_0(fromInt_0(a[i]), 4294967295));
    a[i] = toInt_0(carry);
    carry = shr_0(carry, 32);
  }
  return toInt_0(carry);
}
;
jm.subtract_0 = function subtract_0(op1, op2){
  jm.$clinit_Elementary();
  var a, b, cmp, op1Len, op1Sign, op2Len, op2Sign, res, resDigits, resSign;
  op1Sign = op1.sign;
  op2Sign = op2.sign;
  if (op2Sign == 0) {
    return op1;
  }
  if (op1Sign == 0) {
    return op2.negate_0();
  }
  op1Len = op1.numberLength;
  op2Len = op2.numberLength;
  if (op1Len + op2Len == 2) {
    a = and_0(fromInt_0(op1.digits[0]), 4294967295);
    b = and_0(fromInt_0(op2.digits[0]), 4294967295);
    if (op1Sign < 0) {
      a = neg_0(a);
    }
    if (op2Sign < 0) {
      b = neg_0(b);
    }
    return jm.valueOf_41(sub_2(a, b));
  }
  cmp = op1Len != op2Len?op1Len > op2Len?1:-1:jm.compareArrays(op1.digits, op2.digits, op1Len);
  if (cmp == -1) {
    resSign = -op2Sign;
    resDigits = op1Sign == op2Sign?jm.subtract_1(op2.digits, op2Len, op1.digits, op1Len):jm.add_30(op2.digits, op2Len, op1.digits, op1Len);
  }
   else {
    resSign = op1Sign;
    if (op1Sign == op2Sign) {
      if (cmp == 0) {
        return jm.$clinit_BigInteger() , jm.ZERO_1;
      }
      resDigits = jm.subtract_1(op1.digits, op1Len, op2.digits, op2Len);
    }
     else {
      resDigits = jm.add_30(op1.digits, op1Len, op2.digits, op2Len);
    }
  }
  res = new jm.BigInteger_1(resSign, resDigits.length, resDigits);
  res.cutOffLeadingZeroes();
  return res;
}
;
jm.subtract_1 = function subtract_1(a, aSize, b, bSize){
  var res;
  res = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, aSize, 15, 1);
  jm.subtract_2(res, a, aSize, b, bSize);
  return res;
}
;
jm.subtract_2 = function subtract_2(res, a, aSize, b, bSize){
  var borrow, i;
  borrow = 0;
  for (i = 0; i < bSize; i++) {
    borrow = add_22(borrow, sub_2(and_0(fromInt_0(a[i]), 4294967295), and_0(fromInt_0(b[i]), 4294967295)));
    res[i] = toInt_0(borrow);
    borrow = shr_0(borrow, 32);
  }
  for (; i < aSize; i++) {
    borrow = add_22(borrow, and_0(fromInt_0(a[i]), 4294967295));
    res[i] = toInt_0(borrow);
    borrow = shr_0(borrow, 32);
  }
}
;
defineClass(1320, 1, {1:1});
cggl.Ljava_math_Elementary_2_classLit = createForClass('java.math', 'Elementary', 1320, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_Multiplication = function $clinit_Multiplication(){
  jm.$clinit_Multiplication = emptyMethod;
  var fivePow, i;
  jl.$clinit_Object();
  jm.bigFivePows = initUnidimensionalArray(cggl.Ljava_math_BigInteger_2_classLit, {4:1, 1:1, 7:1}, 28, 32, 0, 1);
  jm.bigTenPows = initUnidimensionalArray(cggl.Ljava_math_BigInteger_2_classLit, {4:1, 1:1, 7:1}, 28, 32, 0, 1);
  jm.fivePows = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125]);
  jm.tenPows = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000]);
  {
    fivePow = 1;
    for (i = 0; i <= 18; i++) {
      setCheck(jm.bigFivePows, i, jm.valueOf_41(fivePow));
      setCheck(jm.bigTenPows, i, jm.valueOf_41(shl_0(fivePow, i)));
      fivePow = mul_0(fivePow, 5);
    }
    for (; i < jm.bigTenPows.length; i++) {
      setCheck(jm.bigFivePows, i, jm.bigFivePows[i - 1].multiply(jm.bigFivePows[1]));
      setCheck(jm.bigTenPows, i, jm.bigTenPows[i - 1].multiply((jm.$clinit_BigInteger() , jm.TEN_0)));
    }
  }
}
;
jm.karatsuba = function karatsuba(op1, op2){
  var lower, lowerOp1, lowerOp2, middle, ndiv2, temp, upper, upperOp1, upperOp2;
  if (op2.numberLength > op1.numberLength) {
    temp = op1;
    op1 = op2;
    op2 = temp;
  }
  if (op2.numberLength < 63) {
    return jm.multiplyPAP(op1, op2);
  }
  ndiv2 = (op1.numberLength & -2) << 4;
  upperOp1 = op1.shiftRight(ndiv2);
  upperOp2 = op2.shiftRight(ndiv2);
  lowerOp1 = op1.subtract(upperOp1.shiftLeft(ndiv2));
  lowerOp2 = op2.subtract(upperOp2.shiftLeft(ndiv2));
  upper = jm.karatsuba(upperOp1, upperOp2);
  lower = jm.karatsuba(lowerOp1, lowerOp2);
  middle = jm.karatsuba(upperOp1.subtract(lowerOp1), lowerOp2.subtract(upperOp2));
  middle = middle.add_13(upper).add_13(lower);
  middle = middle.shiftLeft(ndiv2);
  upper = upper.shiftLeft(ndiv2 << 1);
  return upper.add_13(middle).add_13(lower);
}
;
jm.multArraysPAP = function multArraysPAP(aDigits, aLen, bDigits, bLen, resDigits){
  if (aLen == 0 || bLen == 0) {
    return;
  }
  if (aLen == 1) {
    resDigits[bLen] = jm.multiplyByInt_0(resDigits, bDigits, bLen, aDigits[0]);
  }
   else if (bLen == 1) {
    resDigits[aLen] = jm.multiplyByInt_0(resDigits, aDigits, aLen, bDigits[0]);
  }
   else {
    jm.multPAP(aDigits, bDigits, resDigits, aLen, bLen);
  }
}
;
jm.multPAP = function multPAP(a, b, t, aLen, bLen){
  var aI, carry, i, j;
  if (maskUndefined(a) === maskUndefined(b) && aLen == bLen) {
    jm.square(a, aLen, t);
    return;
  }
  for (i = 0; i < aLen; i++) {
    carry = 0;
    aI = a[i];
    for (j = 0; j < bLen; j++) {
      carry = jm.unsignedMultAddAdd(aI, b[j], t[i + j], toInt_0(carry));
      t[i + j] = toInt_0(carry);
      carry = shru_0(carry, 32);
    }
    t[i + bLen] = toInt_0(carry);
  }
}
;
jm.multiply_0 = function multiply_0(x_0, y_0){
  jm.$clinit_Multiplication();
  return jm.karatsuba(x_0, y_0);
}
;
jm.multiplyByInt = function multiplyByInt(a, aSize, factor){
  jm.$clinit_Multiplication();
  return jm.multiplyByInt_0(a, a, aSize, factor);
}
;
jm.multiplyByInt_0 = function multiplyByInt_0(res, a, aSize, factor){
  var carry, i;
  carry = 0;
  for (i = 0; i < aSize; i++) {
    carry = jm.unsignedMultAddAdd(a[i], factor, toInt_0(carry), 0);
    res[i] = toInt_0(carry);
    carry = shru_0(carry, 32);
  }
  return toInt_0(carry);
}
;
jm.multiplyByPositiveInt = function multiplyByPositiveInt(val, factor){
  var aDigits, aNumberLength, res, resDigits, resHi, resLength, resLo, resSign, result;
  resSign = val.sign;
  if (resSign == 0) {
    return jm.$clinit_BigInteger() , jm.ZERO_1;
  }
  aNumberLength = val.numberLength;
  aDigits = val.digits;
  if (aNumberLength == 1) {
    res = jm.unsignedMultAddAdd(aDigits[0], factor, 0, 0);
    resLo = toInt_0(res);
    resHi = toInt_0(shru_0(res, 32));
    return resHi == 0?new jm.BigInteger(resSign, resLo):new jm.BigInteger_1(resSign, 2, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [resLo, resHi]));
  }
  resLength = aNumberLength + 1;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, resLength, 15, 1);
  resDigits[aNumberLength] = jm.multiplyByInt_0(resDigits, aDigits, aNumberLength, factor);
  result = new jm.BigInteger_1(resSign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.multiplyByTenPow = function multiplyByTenPow(val, exp_0){
  jm.$clinit_Multiplication();
  return exp_0 < jm.tenPows.length?jm.multiplyByPositiveInt(val, jm.tenPows[exp_0]):val.multiply(jm.powerOf10(exp_0));
}
;
jm.multiplyPAP = function multiplyPAP(a, b){
  var aDigits, aLen, bDigits, bLen, resDigits, resLength, resSign, result, val, valueHi, valueLo;
  aLen = a.numberLength;
  bLen = b.numberLength;
  resLength = aLen + bLen;
  resSign = a.sign != b.sign?-1:1;
  if (resLength == 2) {
    val = jm.unsignedMultAddAdd(a.digits[0], b.digits[0], 0, 0);
    valueLo = toInt_0(val);
    valueHi = toInt_0(shru_0(val, 32));
    return valueHi == 0?new jm.BigInteger(resSign, valueLo):new jm.BigInteger_1(resSign, 2, stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [valueLo, valueHi]));
  }
  aDigits = a.digits;
  bDigits = b.digits;
  resDigits = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, resLength, 15, 1);
  jm.multArraysPAP(aDigits, aLen, bDigits, bLen, resDigits);
  result = new jm.BigInteger_1(resSign, resLength, resDigits);
  result.cutOffLeadingZeroes();
  return result;
}
;
jm.pow_1 = function pow_1(base, exponent){
  jm.$clinit_Multiplication();
  var acc, res;
  res = (jm.$clinit_BigInteger() , jm.ONE_2);
  acc = base;
  for (; exponent > 1; exponent >>= 1) {
    if ((exponent & 1) != 0) {
      res = res.multiply(acc);
    }
    if (acc.numberLength == 1) {
      acc = acc.multiply(acc);
    }
     else {
      acc = new jm.BigInteger_2(1, jm.square(acc.digits, acc.numberLength, initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, acc.numberLength << 1, 15, 1)));
    }
  }
  res = res.multiply(acc);
  return res;
}
;
jm.powerOf10 = function powerOf10(exp_0){
  jm.$clinit_Multiplication();
  var intExp, longExp, powerOfFive, res;
  intExp = round_int(exp_0);
  if (exp_0 < jm.bigTenPows.length) {
    return jm.bigTenPows[intExp];
  }
   else if (exp_0 <= 50) {
    return (jm.$clinit_BigInteger() , jm.TEN_0).pow_0(intExp);
  }
   else if (exp_0 <= 1000) {
    return jm.bigFivePows[1].pow_0(intExp).shiftLeft(intExp);
  }
  if (exp_0 > 1000000) {
    throw toJs(new jl.ArithmeticException('power of ten too big'));
  }
  if (exp_0 <= 2147483647) {
    return jm.bigFivePows[1].pow_0(intExp).shiftLeft(intExp);
  }
  powerOfFive = jm.bigFivePows[1].pow_0(2147483647);
  res = powerOfFive;
  longExp = fromDouble_0(exp_0 - 2147483647);
  intExp = round_int(exp_0 % 2147483647);
  while (gt(longExp, 2147483647)) {
    res = res.multiply(powerOfFive);
    longExp = sub_2(longExp, 2147483647);
  }
  res = res.multiply(jm.bigFivePows[1].pow_0(intExp));
  res = res.shiftLeft(2147483647);
  longExp = fromDouble_0(exp_0 - 2147483647);
  while (gt(longExp, 2147483647)) {
    res = res.shiftLeft(2147483647);
    longExp = sub_2(longExp, 2147483647);
  }
  res = res.shiftLeft(intExp);
  return res;
}
;
jm.square = function square(a, aLen, res){
  var carry, i, i0, index_0, j;
  for (i0 = 0; i0 < aLen; i0++) {
    carry = 0;
    for (j = i0 + 1; j < aLen; j++) {
      carry = jm.unsignedMultAddAdd(a[i0], a[j], res[i0 + j], toInt_0(carry));
      res[i0 + j] = toInt_0(carry);
      carry = shru_0(carry, 32);
    }
    res[i0 + aLen] = toInt_0(carry);
  }
  jm.shiftLeftOneBit_1(res, res, aLen << 1);
  carry = 0;
  for (i = 0 , index_0 = 0; i < aLen; i++ , index_0++) {
    carry = jm.unsignedMultAddAdd(a[i], a[i], res[index_0], toInt_0(carry));
    res[index_0] = toInt_0(carry);
    carry = shru_0(carry, 32);
    index_0++;
    carry = add_22(carry, and_0(fromInt_0(res[index_0]), 4294967295));
    res[index_0] = toInt_0(carry);
    carry = shru_0(carry, 32);
  }
  return res;
}
;
jm.unsignedMultAddAdd = function unsignedMultAddAdd(a, b, c, d){
  jm.$clinit_Multiplication();
  return add_22(add_22(mul_0(and_0(fromInt_0(a), 4294967295), and_0(fromInt_0(b), 4294967295)), and_0(fromInt_0(c), 4294967295)), and_0(fromInt_0(d), 4294967295));
}
;
defineClass(1218, 1, {1:1});
jm.whenUseKaratsuba = 63;
cggl.Ljava_math_Multiplication_2_classLit = createForClass('java.math', 'Multiplication', 1218, cggl.Ljava_lang_Object_2_classLit);
jm.$clinit_RoundingMode = function $clinit_RoundingMode(){
  jm.$clinit_RoundingMode = emptyMethod;
  jl.$clinit_Enum();
  jm.UP = new jm.RoundingMode('UP', 0);
  jm.DOWN = new jm.RoundingMode('DOWN', 1);
  jm.CEILING = new jm.RoundingMode('CEILING', 2);
  jm.FLOOR = new jm.RoundingMode('FLOOR', 3);
  jm.HALF_UP = new jm.RoundingMode('HALF_UP', 4);
  jm.HALF_DOWN = new jm.RoundingMode('HALF_DOWN', 5);
  jm.HALF_EVEN = new jm.RoundingMode('HALF_EVEN', 6);
  jm.UNNECESSARY = new jm.RoundingMode('UNNECESSARY', 7);
}
;
jm.RoundingMode = function RoundingMode(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_631();
}
;
jm.valueOf_42 = function valueOf_42(name_0){
  jm.$clinit_RoundingMode();
  return valueOf((jm.$clinit_RoundingMode$Map() , jm.$MAP_18), name_0);
}
;
jm.values_19 = function values_19(){
  jm.$clinit_RoundingMode();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_math_RoundingMode_2_classLit, 1), {4:1, 1:1, 7:1}, 109, 0, [jm.UP, jm.DOWN, jm.CEILING, jm.FLOOR, jm.HALF_UP, jm.HALF_DOWN, jm.HALF_EVEN, jm.UNNECESSARY]);
}
;
defineClass(109, 11, {4:1, 10:1, 11:1, 1:1, 109:1}, jm.RoundingMode);
_.$init_631 = function $init_631(){
}
;
cggl.Ljava_math_RoundingMode_2_classLit = createForEnum('java.math', 'RoundingMode', 109, cggl.Ljava_lang_Enum_2_classLit, jm.values_19, jm.valueOf_42);
jm.$clinit_RoundingMode$Map = function $clinit_RoundingMode$Map(){
  jm.$clinit_RoundingMode$Map = emptyMethod;
  jm.$MAP_18 = createValueOfMap(jm.values_19());
}
;
defineClass(1206, 1, {1:1});
cggl.Ljava_math_RoundingMode$Map_2_classLit = createForClass('java.math', 'RoundingMode/Map', 1206, cggl.Ljava_lang_Object_2_classLit);
jnc.$clinit_Charset = function $clinit_Charset(){
  jnc.$clinit_Charset = emptyMethod;
  jl.$clinit_Object();
}
;
jnc.Charset = function Charset(name_0, aliasesIgnored){
  jnc.$clinit_Charset();
  Object_0.call(this);
  this.$init_632();
  this.name_0 = name_0;
}
;
jnc.forName = function forName(charsetName){
  jnc.$clinit_Charset();
  ji2.checkArgument(jsNotEquals(charsetName, null), 'Null charset name');
  charsetName = jl.toUpperCase__Ljava_lang_String___devirtual$(charsetName);
  if (jl.equals_Ljava_lang_Object__Z__devirtual$_2((ji2.$clinit_EmulatedCharset() , ji2.ISO_8859_1_0).name_1(), charsetName)) {
    return ji2.$clinit_EmulatedCharset() , ji2.ISO_8859_1_0;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2((ji2.$clinit_EmulatedCharset() , ji2.ISO_LATIN_1).name_1(), charsetName)) {
    return ji2.$clinit_EmulatedCharset() , ji2.ISO_LATIN_1;
  }
   else if (jl.equals_Ljava_lang_Object__Z__devirtual$_2((ji2.$clinit_EmulatedCharset() , ji2.UTF_8_0).name_1(), charsetName)) {
    return ji2.$clinit_EmulatedCharset() , ji2.UTF_8_0;
  }
  throw toJs(new jnc.UnsupportedCharsetException(charsetName));
}
;
defineClass(124, 1, {10:1, 1:1, 124:1});
_.$init_632 = function $init_632(){
}
;
_.compareTo_1 = function compareTo_35(that){
  return this.compareTo_18(castTo(that, 124));
}
;
_.compareTo_18 = function compareTo_36(that){
  return jl.compareToIgnoreCase_Ljava_lang_String__I__devirtual$(this.name_0, that.name_0);
}
;
_.equals_0 = function equals_35(o){
  var that;
  if (maskUndefined(o) === maskUndefined(this)) {
    return true;
  }
  if (!instanceOf(o, 124)) {
    return false;
  }
  that = castTo(o, 124);
  return jl.equals_Ljava_lang_Object__Z__devirtual$_2(this.name_0, that.name_0);
}
;
_.hashCode_1 = function hashCode_29(){
  return jl.hashCode__I__devirtual$_2(this.name_0);
}
;
_.name_1 = function name_2(){
  return this.name_0;
}
;
_.toString_0 = function toString_56(){
  return this.name_0;
}
;
cggl.Ljava_nio_charset_Charset_2_classLit = createForClass('java.nio.charset', 'Charset', 124, cggl.Ljava_lang_Object_2_classLit);
jnc.$clinit_Charset$AvailableCharsets = function $clinit_Charset$AvailableCharsets(){
  jnc.$clinit_Charset$AvailableCharsets = emptyMethod;
}
;
defineClass(874, 1, {1:1});
cggl.Ljava_nio_charset_Charset$AvailableCharsets_2_classLit = createForClass('java.nio.charset', 'Charset/AvailableCharsets', 874, cggl.Ljava_lang_Object_2_classLit);
jnc.$clinit_StandardCharsets = function $clinit_StandardCharsets(){
  jnc.$clinit_StandardCharsets = emptyMethod;
  jl.$clinit_Object();
  jnc.ISO_8859_1 = (ji2.$clinit_EmulatedCharset() , ji2.ISO_8859_1_0);
  jnc.UTF_8 = (ji2.$clinit_EmulatedCharset() , ji2.UTF_8_0);
}
;
defineClass(1119, 1, {1:1});
cggl.Ljava_nio_charset_StandardCharsets_2_classLit = createForClass('java.nio.charset', 'StandardCharsets', 1119, cggl.Ljava_lang_Object_2_classLit);
jnc.$clinit_UnsupportedCharsetException = function $clinit_UnsupportedCharsetException(){
  jnc.$clinit_UnsupportedCharsetException = emptyMethod;
  jl.$clinit_IllegalArgumentException();
}
;
jnc.UnsupportedCharsetException = function UnsupportedCharsetException(charsetName){
  jnc.$clinit_UnsupportedCharsetException();
  jl.IllegalArgumentException_0.call(this, valueOf_34(charsetName));
  this.$init_633();
  this.charsetName = charsetName;
}
;
defineClass(253, 53, {4:1, 14:1, 1:1, 23:1, 20:1, 253:1}, jnc.UnsupportedCharsetException);
_.$init_633 = function $init_633(){
}
;
cggl.Ljava_nio_charset_UnsupportedCharsetException_2_classLit = createForClass('java.nio.charset', 'UnsupportedCharsetException', 253, cggl.Ljava_lang_IllegalArgumentException_2_classLit);
jt.$clinit_NumberFormat_0 = function $clinit_NumberFormat_0(){
  jt.$clinit_NumberFormat_0 = emptyMethod;
  jl.$clinit_Object();
}
;
jt.NumberFormat_1 = function NumberFormat_1(){
  jt.$clinit_NumberFormat_0();
  Object_0.call(this);
  this.$init_634();
}
;
defineClass(658, 1, {1:1});
_.$init_634 = function $init_634(){
}
;
cggl.Ljava_text_NumberFormat_2_classLit = createForClass('java.text', 'NumberFormat', 658, cggl.Ljava_lang_Object_2_classLit);
jt.$clinit_DecimalFormat = function $clinit_DecimalFormat(){
  jt.$clinit_DecimalFormat = emptyMethod;
  jt.$clinit_NumberFormat_0();
}
;
jt.DecimalFormat = function DecimalFormat(pattern){
  jt.$clinit_DecimalFormat();
  jt.NumberFormat_1.call(this);
  this.$init_635();
  this.formatter = cggic.getFormat(pattern);
}
;
jt.DecimalFormat_0 = function DecimalFormat_0(pattern, symbols){
  jt.$clinit_DecimalFormat();
  jt.DecimalFormat.call(this, pattern);
}
;
defineClass(203, 658, {1:1}, jt.DecimalFormat, jt.DecimalFormat_0);
_.$init_635 = function $init_635(){
}
;
_.format = function format_2(number){
  return this.formatter.format(number);
}
;
_.format_1 = function format_3(number){
  return this.formatter.format(number);
}
;
cggl.Ljava_text_DecimalFormat_2_classLit = createForClass('java.text', 'DecimalFormat', 203, cggl.Ljava_text_NumberFormat_2_classLit);
jt.$clinit_DecimalFormatSymbols = function $clinit_DecimalFormatSymbols(){
  jt.$clinit_DecimalFormatSymbols = emptyMethod;
  jl.$clinit_Object();
}
;
jt.DecimalFormatSymbols = function DecimalFormatSymbols(locale){
  jt.$clinit_DecimalFormatSymbols();
  Object_0.call(this);
  this.$init_636();
}
;
defineClass(659, 1, {1:1}, jt.DecimalFormatSymbols);
_.$init_636 = function $init_636(){
}
;
cggl.Ljava_text_DecimalFormatSymbols_2_classLit = createForClass('java.text', 'DecimalFormatSymbols', 659, cggl.Ljava_lang_Object_2_classLit);
jt.$clinit_ParseException = function $clinit_ParseException(){
  jt.$clinit_ParseException = emptyMethod;
}
;
defineClass(391, 14, {4:1, 14:1, 1:1, 20:1, 391:1});
cggl.Ljava_text_ParseException_2_classLit = createForClass('java.text', 'ParseException', 391, cggl.Ljava_lang_Exception_2_classLit);
ju.$clinit_Map = function $clinit_Map(){
  ju.$clinit_Map = emptyMethod;
}
;
ju.$getOrDefault = function $getOrDefault(this$static, key, defaultValue){
  var currentValue;
  currentValue = this$static.get(key);
  return jsEquals(currentValue, null) && !this$static.containsKey(key)?defaultValue:currentValue;
}
;
ju.$putIfAbsent = function $putIfAbsent(this$static, key, value_0){
  var currentValue;
  currentValue = this$static.get(key);
  return jsNotEquals(currentValue, null)?currentValue:this$static.put(key, value_0);
}
;
ju.$replace_2 = function $replace_2(this$static, key, value_0){
  return this$static.containsKey(key)?this$static.put(key, value_0):null;
}
;
cggl.Ljava_util_Map_2_classLit = createForInterface('java.util', 'Map');
ju.$clinit_AbstractMap = function $clinit_AbstractMap(){
  ju.$clinit_AbstractMap = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Map();
}
;
ju.AbstractMap = function AbstractMap(){
  ju.$clinit_AbstractMap();
  Object_0.call(this);
  this.$init_637();
}
;
ju.getEntryKeyOrNull = function getEntryKeyOrNull(entry){
  ju.$clinit_AbstractMap();
  return isNull(entry)?null:entry.getKey();
}
;
ju.getEntryValueOrNull = function getEntryValueOrNull(entry){
  ju.$clinit_AbstractMap();
  return isNull(entry)?null:entry.getValue_1();
}
;
defineClass(172, 1, {1:1, 72:1});
_.$init_637 = function $init_637(){
}
;
_.getOrDefault = function getOrDefault(key, defaultValue){
  return ju.$getOrDefault(this, key, defaultValue);
}
;
_.putIfAbsent = function putIfAbsent(key, value_0){
  return ju.$putIfAbsent(this, key, value_0);
}
;
_.replace = function replace_0(key, value_0){
  return ju.$replace_2(this, key, value_0);
}
;
_.clear = function clear_17(){
  this.entrySet().clear();
}
;
_.containsEntry = function containsEntry(entry){
  var key, ourValue, value_0;
  key = entry.getKey();
  value_0 = entry.getValue_1();
  ourValue = this.get(key);
  if (!ju.equals_46(value_0, ourValue)) {
    return false;
  }
  if (jsEquals(ourValue, null) && !this.containsKey(key)) {
    return false;
  }
  return true;
}
;
_.containsKey = function containsKey(key){
  return isNotNull(this.implFindEntry(key, false));
}
;
_.containsValue = function containsValue(value_0){
  var entry, entry$iterator, v;
  for (entry$iterator = this.entrySet().iterator(); entry$iterator.hasNext_0();) {
    entry = castTo(entry$iterator.next_3(), 45);
    v = entry.getValue_1();
    if (ju.equals_46(value_0, v)) {
      return true;
    }
  }
  return false;
}
;
_.equals_0 = function equals_36(obj){
  var entry, entry$iterator, otherMap;
  if (maskUndefined(obj) === maskUndefined(this)) {
    return true;
  }
  if (!instanceOf(obj, 72)) {
    return false;
  }
  otherMap = castTo(obj, 72);
  if (this.size() != otherMap.size()) {
    return false;
  }
  for (entry$iterator = otherMap.entrySet().iterator(); entry$iterator.hasNext_0();) {
    entry = castTo(entry$iterator.next_3(), 45);
    if (!this.containsEntry(entry)) {
      return false;
    }
  }
  return true;
}
;
_.get = function get_32(key){
  return ju.getEntryValueOrNull(this.implFindEntry(key, false));
}
;
_.hashCode_1 = function hashCode_30(){
  return ju.hashCode_35(this.entrySet());
}
;
_.implFindEntry = function implFindEntry(key, remove){
  var entry, iter, k;
  for (iter = this.entrySet().iterator(); iter.hasNext_0();) {
    entry = castTo(iter.next_3(), 45);
    k = entry.getKey();
    if (ju.equals_46(key, k)) {
      if (remove) {
        entry = new ju.AbstractMap$SimpleEntry(entry.getKey(), entry.getValue_1());
        iter.remove_4();
      }
      return entry;
    }
  }
  return null;
}
;
_.isEmpty = function isEmpty_5(){
  return this.size() == 0;
}
;
_.keySet = function keySet(){
  return new ju.AbstractMap$1(this);
}
;
_.put = function put_0(key, value_0){
  throw toJs(new jl.UnsupportedOperationException_0('Put not supported on this map'));
}
;
_.putAll = function putAll(map_0){
  var e, e$iterator;
  ji2.checkNotNull_0(map_0);
  for (e$iterator = map_0.entrySet().iterator(); e$iterator.hasNext_0();) {
    e = castTo(e$iterator.next_3(), 45);
    this.put(e.getKey(), e.getValue_1());
  }
}
;
_.remove = function remove_19(key){
  return ju.getEntryValueOrNull(this.implFindEntry(key, true));
}
;
_.size = function size_9(){
  return this.entrySet().size();
}
;
_.toString_0 = function toString_57(){
  var entry, entry$iterator, joiner;
  joiner = new ju.StringJoiner_0(', ', '{', '}');
  for (entry$iterator = this.entrySet().iterator(); entry$iterator.hasNext_0();) {
    entry = castTo(entry$iterator.next_3(), 45);
    joiner.add_14(this.toString_5(entry));
  }
  return joiner.toString_0();
}
;
_.toString_4 = function toString_58(o){
  return maskUndefined(o) === maskUndefined(this)?'(this Map)':valueOf_34(o);
}
;
_.toString_5 = function toString_59(entry){
  return this.toString_4(entry.getKey()) + '=' + this.toString_4(entry.getValue_1());
}
;
_.values = function values_20(){
  return new ju.AbstractMap$2(this);
}
;
cggl.Ljava_util_AbstractMap_2_classLit = createForClass('java.util', 'AbstractMap', 172, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_AbstractHashMap = function $clinit_AbstractHashMap(){
  ju.$clinit_AbstractHashMap = emptyMethod;
  ju.$clinit_AbstractMap();
}
;
ju.AbstractHashMap = function AbstractHashMap(){
  ju.$clinit_AbstractHashMap();
  ju.AbstractMap.call(this);
  this.$init_638();
  this.reset_0();
}
;
ju.AbstractHashMap_0 = function AbstractHashMap_0(ignored){
  ju.$clinit_AbstractHashMap();
  ju.AbstractHashMap_1.call(this, ignored, 0);
}
;
ju.AbstractHashMap_1 = function AbstractHashMap_1(ignored, alsoIgnored){
  ju.AbstractMap.call(this);
  this.$init_638();
  ji2.checkArgument(ignored >= 0, 'Negative initial capacity');
  ji2.checkArgument(alsoIgnored >= 0, 'Non-positive load factor');
  this.reset_0();
}
;
defineClass(271, 172, {1:1, 72:1});
_.$init_638 = function $init_638(){
}
;
_.clear = function clear_18(){
  this.reset_0();
}
;
_.containsKey = function containsKey_0(key){
  return instanceOfString(key)?this.hasStringValue(ji2.uncheckedCast(key)):this.hasHashValue(key);
}
;
_.containsValue = function containsValue_0(value_0){
  return this.containsValue_0(value_0, this.stringMap) || this.containsValue_0(value_0, this.hashCodeMap);
}
;
_.containsValue_0 = function containsValue_1(value_0, entries){
  var entry, entry$iterator;
  for (entry$iterator = entries.iterator(); entry$iterator.hasNext_0();) {
    entry = castTo(entry$iterator.next_3(), 45);
    if (this.equals_4(value_0, entry.getValue_1())) {
      return true;
    }
  }
  return false;
}
;
_.entrySet = function entrySet(){
  return new ju.AbstractHashMap$EntrySet(this);
}
;
_.get = function get_33(key){
  return instanceOfString(key)?this.getStringValue(ji2.uncheckedCast(key)):this.getHashValue(key);
}
;
_.getHashValue = function getHashValue(key){
  return ju.getEntryValueOrNull(this.hashCodeMap.getEntry_0(key));
}
;
_.getStringValue = function getStringValue(key){
  return jsEquals(key, null)?this.getHashValue(null):this.stringMap.get_6(key);
}
;
_.hasHashValue = function hasHashValue(key){
  return isNotNull(this.hashCodeMap.getEntry_0(key));
}
;
_.hasStringValue = function hasStringValue(key){
  return jsEquals(key, null)?this.hasHashValue(null):this.stringMap.contains_1(key);
}
;
_.put = function put_1(key, value_0){
  return instanceOfString(key)?this.putStringValue(ji2.uncheckedCast(key), value_0):this.putHashValue(key, value_0);
}
;
_.putHashValue = function putHashValue(key, value_0){
  return this.hashCodeMap.put_1(key, value_0);
}
;
_.putStringValue = function putStringValue(key, value_0){
  return jsEquals(key, null)?this.putHashValue(null, value_0):this.stringMap.put_2(key, value_0);
}
;
_.remove = function remove_20(key){
  return instanceOfString(key)?this.removeStringValue(ji2.uncheckedCast(key)):this.removeHashValue(key);
}
;
_.removeHashValue = function removeHashValue(key){
  return this.hashCodeMap.remove_7(key);
}
;
_.removeStringValue = function removeStringValue(key){
  return jsEquals(key, null)?this.removeHashValue(null):this.stringMap.remove_8(key);
}
;
_.reset_0 = function reset_0(){
  this.hashCodeMap = new ju.InternalHashCodeMap(this);
  this.stringMap = new ju.InternalStringMap(this);
  this.structureChanged();
}
;
_.size = function size_10(){
  return this.hashCodeMap.size_1() + this.stringMap.size_1();
}
;
_.structureChanged = function structureChanged(){
  if (!ji2.isApiChecked()) {
    return;
  }
  this.modCount++;
}
;
_.modCount = 0;
cggl.Ljava_util_AbstractHashMap_2_classLit = createForClass('java.util', 'AbstractHashMap', 271, cggl.Ljava_util_AbstractMap_2_classLit);
ju.$clinit_Set = function $clinit_Set(){
  ju.$clinit_Set = emptyMethod;
}
;
ju.$spliterator_2 = function $spliterator_2(this$static){
  return ju.spliterator_13(this$static, 1);
}
;
cggl.Ljava_util_Set_2_classLit = createForInterface('java.util', 'Set');
ju.$clinit_AbstractSet = function $clinit_AbstractSet(){
  ju.$clinit_AbstractSet = emptyMethod;
  ju.$clinit_AbstractCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
}
;
ju.AbstractSet = function AbstractSet(){
  ju.$clinit_AbstractSet();
  ju.AbstractCollection.call(this);
  this.$init_639();
}
;
defineClass(115, 225, {1:1, 38:1, 79:1});
_.$init_639 = function $init_639(){
}
;
_.spliterator_0 = function spliterator_5(){
  return ju.$spliterator_2(this);
}
;
_.equals_0 = function equals_37(o){
  var other;
  if (maskUndefined(o) === maskUndefined(this)) {
    return true;
  }
  if (!instanceOf(o, 79)) {
    return false;
  }
  other = castTo(o, 79);
  if (other.size() != this.size()) {
    return false;
  }
  return this.containsAll(other);
}
;
_.hashCode_1 = function hashCode_31(){
  return ju.hashCode_35(this);
}
;
_.removeAll = function removeAll_1(c){
  var iter, o, o$iterator, size_0;
  ji2.checkNotNull_0(c);
  size_0 = this.size();
  if (size_0 < c.size()) {
    for (iter = this.iterator(); iter.hasNext_0();) {
      o = iter.next_3();
      if (c.contains(o)) {
        iter.remove_4();
      }
    }
  }
   else {
    for (o$iterator = c.iterator(); o$iterator.hasNext_0();) {
      o = o$iterator.next_3();
      this.remove(o);
    }
  }
  return size_0 != this.size();
}
;
cggl.Ljava_util_AbstractSet_2_classLit = createForClass('java.util', 'AbstractSet', 115, cggl.Ljava_util_AbstractCollection_2_classLit);
ju.$clinit_AbstractHashMap$EntrySet = function $clinit_AbstractHashMap$EntrySet(){
  ju.$clinit_AbstractHashMap$EntrySet = emptyMethod;
  ju.$clinit_AbstractSet();
}
;
ju.AbstractHashMap$EntrySet = function AbstractHashMap$EntrySet(this$0){
  ju.$clinit_AbstractHashMap$EntrySet();
  this.this$01 = this$0;
  ju.AbstractSet.call(this);
  this.$init_640();
}
;
defineClass(518, 115, {1:1, 38:1, 79:1}, ju.AbstractHashMap$EntrySet);
_.$init_640 = function $init_640(){
}
;
_.clear = function clear_19(){
  this.this$01.clear();
}
;
_.contains = function contains_12(o){
  if (instanceOf(o, 45)) {
    return this.this$01.containsEntry(castTo(o, 45));
  }
  return false;
}
;
_.iterator = function iterator_9(){
  return new ju.AbstractHashMap$EntrySetIterator(this.this$01);
}
;
_.remove = function remove_21(entry){
  var key;
  if (this.contains(entry)) {
    key = castTo(entry, 45).getKey();
    this.this$01.remove(key);
    return true;
  }
  return false;
}
;
_.size = function size_11(){
  return this.this$01.size();
}
;
cggl.Ljava_util_AbstractHashMap$EntrySet_2_classLit = createForClass('java.util', 'AbstractHashMap/EntrySet', 518, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_AbstractHashMap$EntrySetIterator = function $clinit_AbstractHashMap$EntrySetIterator(){
  ju.$clinit_AbstractHashMap$EntrySetIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractHashMap$EntrySetIterator = function AbstractHashMap$EntrySetIterator(this$0){
  ju.$clinit_AbstractHashMap$EntrySetIterator();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_641();
}
;
defineClass(519, 1, {1:1, 46:1}, ju.AbstractHashMap$EntrySetIterator);
_.$init_641 = function $init_641(){
  this.stringMapEntries = this.this$01.stringMap.iterator();
  this.current = this.stringMapEntries;
  this.hasNext = this.computeHasNext();
  this.lastModCount = this.this$01.modCount;
}
;
_.forEachRemaining = function forEachRemaining_5(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_10(){
  return this.next_5();
}
;
_.computeHasNext = function computeHasNext(){
  if (this.current.hasNext_0()) {
    return true;
  }
  if (jsNotEquals(this.current, this.stringMapEntries)) {
    return false;
  }
  this.current = this.this$01.hashCodeMap.iterator();
  return this.current.hasNext_0();
}
;
_.hasNext_0 = function hasNext_3(){
  return this.hasNext;
}
;
_.next_5 = function next_11(){
  var rv;
  ji2.checkConcurrentModification_0(this.this$01.modCount, this.lastModCount);
  ji2.checkElement(this.hasNext_0());
  this.last = this.current;
  rv = castTo(this.current.next_3(), 45);
  this.hasNext = this.computeHasNext();
  return rv;
}
;
_.remove_4 = function remove_22(){
  ji2.checkState(isNotNull(this.last));
  ji2.checkConcurrentModification_0(this.this$01.modCount, this.lastModCount);
  this.last.remove_4();
  this.last = null;
  this.hasNext = this.computeHasNext();
  this.lastModCount = this.this$01.modCount;
}
;
_.hasNext = false;
_.lastModCount = 0;
cggl.Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit = createForClass('java.util', 'AbstractHashMap/EntrySetIterator', 519, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_AbstractList$IteratorImpl = function $clinit_AbstractList$IteratorImpl(){
  ju.$clinit_AbstractList$IteratorImpl = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractList$IteratorImpl = function AbstractList$IteratorImpl(this$0){
  ju.$clinit_AbstractList$IteratorImpl();
  this.this$01_0 = this$0;
  Object_0.call(this);
  this.$init_642();
}
;
defineClass(269, 1, {1:1, 46:1}, ju.AbstractList$IteratorImpl);
_.$init_642 = function $init_642(){
  this.i = 0;
  this.last = -1;
}
;
_.forEachRemaining = function forEachRemaining_6(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_4(){
  return this.i < this.this$01_0.size();
}
;
_.next_3 = function next_12(){
  ji2.checkElement(this.hasNext_0());
  return this.this$01_0.getAtIndex(this.last = this.i++);
}
;
_.remove_4 = function remove_23(){
  ji2.checkState(this.last != -1);
  this.this$01_0.removeAtIndex(this.last);
  this.i = this.last;
  this.last = -1;
}
;
_.i = 0;
_.last = 0;
cggl.Ljava_util_AbstractList$IteratorImpl_2_classLit = createForClass('java.util', 'AbstractList/IteratorImpl', 269, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_ListIterator = function $clinit_ListIterator(){
  ju.$clinit_ListIterator = emptyMethod;
}
;
cggl.Ljava_util_ListIterator_2_classLit = createForInterface('java.util', 'ListIterator');
ju.$clinit_AbstractList$ListIteratorImpl = function $clinit_AbstractList$ListIteratorImpl(){
  ju.$clinit_AbstractList$ListIteratorImpl = emptyMethod;
  ju.$clinit_AbstractList$IteratorImpl();
  ju.$clinit_Iterator();
}
;
ju.AbstractList$ListIteratorImpl = function AbstractList$ListIteratorImpl(this$0, start_0){
  ju.$clinit_AbstractList$ListIteratorImpl();
  this.this$01 = this$0;
  ju.AbstractList$IteratorImpl.call(this, this$0);
  this.$init_643();
  ji2.checkPositionIndex(start_0, this$0.size());
  this.i = start_0;
}
;
defineClass(516, 269, {1:1, 46:1}, ju.AbstractList$ListIteratorImpl);
_.$init_643 = function $init_643(){
}
;
_.remove_4 = function remove_24(){
  getClassPrototype(269).remove_4.call(this);
}
;
_.hasPrevious = function hasPrevious(){
  return this.i > 0;
}
;
_.previous = function previous_0(){
  ji2.checkElement(this.hasPrevious());
  return this.this$01.getAtIndex(this.last = --this.i);
}
;
cggl.Ljava_util_AbstractList$ListIteratorImpl_2_classLit = createForClass('java.util', 'AbstractList/ListIteratorImpl', 516, cggl.Ljava_util_AbstractList$IteratorImpl_2_classLit);
ju.$clinit_AbstractList$SubList = function $clinit_AbstractList$SubList(){
  ju.$clinit_AbstractList$SubList = emptyMethod;
  ju.$clinit_AbstractList();
}
;
ju.AbstractList$SubList = function AbstractList$SubList(wrapped, fromIndex, toIndex){
  ju.$clinit_AbstractList$SubList();
  ju.AbstractList.call(this);
  this.$init_644();
  ji2.checkCriticalPositionIndexes(fromIndex, toIndex, wrapped.size());
  this.wrapped = wrapped;
  this.fromIndex = fromIndex;
  this.size_0 = toIndex - fromIndex;
}
;
defineClass(517, 171, {1:1, 38:1, 57:1}, ju.AbstractList$SubList);
_.$init_644 = function $init_644(){
}
;
_.addAtIndex = function add_32(index_0, element){
  ji2.checkPositionIndex(index_0, this.size_0);
  this.wrapped.addAtIndex(this.fromIndex + index_0, element);
  this.size_0++;
}
;
_.getAtIndex = function get_34(index_0){
  ji2.checkElementIndex(index_0, this.size_0);
  return this.wrapped.getAtIndex(this.fromIndex + index_0);
}
;
_.removeAtIndex = function remove_25(index_0){
  var result;
  ji2.checkElementIndex(index_0, this.size_0);
  result = this.wrapped.removeAtIndex(this.fromIndex + index_0);
  this.size_0--;
  return result;
}
;
_.setAtIndex = function set_7(index_0, element){
  ji2.checkElementIndex(index_0, this.size_0);
  return this.wrapped.setAtIndex(this.fromIndex + index_0, element);
}
;
_.size = function size_12(){
  return this.size_0;
}
;
_.fromIndex = 0;
_.size_0 = 0;
cggl.Ljava_util_AbstractList$SubList_2_classLit = createForClass('java.util', 'AbstractList/SubList', 517, cggl.Ljava_util_AbstractList_2_classLit);
ju.$clinit_AbstractMap$1 = function $clinit_AbstractMap$1(){
  ju.$clinit_AbstractMap$1 = emptyMethod;
  ju.$clinit_AbstractSet();
}
;
ju.AbstractMap$1 = function AbstractMap$1(this$0){
  ju.$clinit_AbstractMap$1();
  this.this$01 = this$0;
  ju.AbstractSet.call(this);
  this.$init_645();
}
;
defineClass(521, 115, {1:1, 38:1, 79:1}, ju.AbstractMap$1);
_.$init_645 = function $init_645(){
}
;
_.clear = function clear_20(){
  this.this$01.clear();
}
;
_.contains = function contains_13(key){
  return this.this$01.containsKey(key);
}
;
_.iterator = function iterator_10(){
  var outerIter;
  outerIter = this.this$01.entrySet().iterator();
  return new ju.AbstractMap$1$1(this, outerIter);
}
;
_.remove = function remove_26(key){
  if (this.this$01.containsKey(key)) {
    this.this$01.remove(key);
    return true;
  }
  return false;
}
;
_.size = function size_13(){
  return this.this$01.size();
}
;
cggl.Ljava_util_AbstractMap$1_2_classLit = createForClass('java.util', 'AbstractMap/1', 521, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_AbstractMap$1$1 = function $clinit_AbstractMap$1$1(){
  ju.$clinit_AbstractMap$1$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractMap$1$1 = function AbstractMap$1$1(this$1, val$outerIter){
  ju.$clinit_AbstractMap$1$1();
  this.this$11 = this$1;
  this.val$outerIter2 = val$outerIter;
  Object_0.call(this);
  this.$init_646();
}
;
defineClass(522, 1, {1:1, 46:1}, ju.AbstractMap$1$1);
_.$init_646 = function $init_646(){
}
;
_.forEachRemaining = function forEachRemaining_7(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_5(){
  return this.val$outerIter2.hasNext_0();
}
;
_.next_3 = function next_13(){
  var entry;
  entry = castTo(this.val$outerIter2.next_3(), 45);
  return entry.getKey();
}
;
_.remove_4 = function remove_27(){
  this.val$outerIter2.remove_4();
}
;
cggl.Ljava_util_AbstractMap$1$1_2_classLit = createForClass('java.util', 'AbstractMap/1/1', 522, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_AbstractMap$2 = function $clinit_AbstractMap$2(){
  ju.$clinit_AbstractMap$2 = emptyMethod;
  ju.$clinit_AbstractCollection();
}
;
ju.AbstractMap$2 = function AbstractMap$2(this$0){
  ju.$clinit_AbstractMap$2();
  this.this$01 = this$0;
  ju.AbstractCollection.call(this);
  this.$init_647();
}
;
defineClass(523, 225, {1:1, 38:1}, ju.AbstractMap$2);
_.$init_647 = function $init_647(){
}
;
_.clear = function clear_21(){
  this.this$01.clear();
}
;
_.contains = function contains_14(value_0){
  return this.this$01.containsValue(value_0);
}
;
_.iterator = function iterator_11(){
  var outerIter;
  outerIter = this.this$01.entrySet().iterator();
  return new ju.AbstractMap$2$1(this, outerIter);
}
;
_.size = function size_14(){
  return this.this$01.size();
}
;
cggl.Ljava_util_AbstractMap$2_2_classLit = createForClass('java.util', 'AbstractMap/2', 523, cggl.Ljava_util_AbstractCollection_2_classLit);
ju.$clinit_AbstractMap$2$1 = function $clinit_AbstractMap$2$1(){
  ju.$clinit_AbstractMap$2$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractMap$2$1 = function AbstractMap$2$1(this$1, val$outerIter){
  ju.$clinit_AbstractMap$2$1();
  this.this$11 = this$1;
  this.val$outerIter2 = val$outerIter;
  Object_0.call(this);
  this.$init_648();
}
;
defineClass(524, 1, {1:1, 46:1}, ju.AbstractMap$2$1);
_.$init_648 = function $init_648(){
}
;
_.forEachRemaining = function forEachRemaining_8(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_6(){
  return this.val$outerIter2.hasNext_0();
}
;
_.next_3 = function next_14(){
  var entry;
  entry = castTo(this.val$outerIter2.next_3(), 45);
  return entry.getValue_1();
}
;
_.remove_4 = function remove_28(){
  this.val$outerIter2.remove_4();
}
;
cggl.Ljava_util_AbstractMap$2$1_2_classLit = createForClass('java.util', 'AbstractMap/2/1', 524, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Map$Entry = function $clinit_Map$Entry(){
  ju.$clinit_Map$Entry = emptyMethod;
}
;
cggl.Ljava_util_Map$Entry_2_classLit = createForInterface('java.util', 'Map/Entry');
ju.$clinit_AbstractMap$AbstractEntry = function $clinit_AbstractMap$AbstractEntry(){
  ju.$clinit_AbstractMap$AbstractEntry = emptyMethod;
  jl.$clinit_Object();
}
;
ju.AbstractMap$AbstractEntry = function AbstractMap$AbstractEntry(key, value_0){
  ju.$clinit_AbstractMap$AbstractEntry();
  Object_0.call(this);
  this.$init_649();
  this.key = key;
  this.value_0 = value_0;
}
;
defineClass(330, 1, {1:1, 45:1});
_.$init_649 = function $init_649(){
}
;
_.equals_0 = function equals_38(other){
  var entry;
  if (!instanceOf(other, 45)) {
    return false;
  }
  entry = castTo(other, 45);
  return ju.equals_46(this.key, entry.getKey()) && ju.equals_46(this.value_0, entry.getValue_1());
}
;
_.getKey = function getKey(){
  return this.key;
}
;
_.getValue_1 = function getValue_10(){
  return this.value_0;
}
;
_.hashCode_1 = function hashCode_32(){
  return ju.hashCode_39(this.key) ^ ju.hashCode_39(this.value_0);
}
;
_.setValue_3 = function setValue_3(value_0){
  var oldValue;
  oldValue = this.value_0;
  this.value_0 = value_0;
  return oldValue;
}
;
_.toString_0 = function toString_60(){
  return this.key + '=' + this.value_0;
}
;
cggl.Ljava_util_AbstractMap$AbstractEntry_2_classLit = createForClass('java.util', 'AbstractMap/AbstractEntry', 330, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_AbstractMap$SimpleEntry = function $clinit_AbstractMap$SimpleEntry(){
  ju.$clinit_AbstractMap$SimpleEntry = emptyMethod;
  ju.$clinit_AbstractMap$AbstractEntry();
}
;
ju.AbstractMap$SimpleEntry = function AbstractMap$SimpleEntry(key, value_0){
  ju.$clinit_AbstractMap$SimpleEntry();
  ju.AbstractMap$AbstractEntry.call(this, key, value_0);
  this.$init_650();
}
;
defineClass(272, 330, {1:1, 45:1}, ju.AbstractMap$SimpleEntry);
_.$init_650 = function $init_650(){
}
;
cggl.Ljava_util_AbstractMap$SimpleEntry_2_classLit = createForClass('java.util', 'AbstractMap/SimpleEntry', 272, cggl.Ljava_util_AbstractMap$AbstractEntry_2_classLit);
ju.$clinit_AbstractMap$SimpleImmutableEntry = function $clinit_AbstractMap$SimpleImmutableEntry(){
  ju.$clinit_AbstractMap$SimpleImmutableEntry = emptyMethod;
  ju.$clinit_AbstractMap$AbstractEntry();
}
;
ju.AbstractMap$SimpleImmutableEntry = function AbstractMap$SimpleImmutableEntry(entry){
  ju.$clinit_AbstractMap$SimpleImmutableEntry();
  ju.AbstractMap$AbstractEntry.call(this, entry.getKey(), entry.getValue_1());
  this.$init_651();
}
;
defineClass(520, 330, {1:1, 45:1}, ju.AbstractMap$SimpleImmutableEntry);
_.$init_651 = function $init_651(){
}
;
_.setValue_3 = function setValue_4(value_0){
  throw toJs(new jl.UnsupportedOperationException);
}
;
cggl.Ljava_util_AbstractMap$SimpleImmutableEntry_2_classLit = createForClass('java.util', 'AbstractMap/SimpleImmutableEntry', 520, cggl.Ljava_util_AbstractMap$AbstractEntry_2_classLit);
ju.$clinit_AbstractMapEntry = function $clinit_AbstractMapEntry(){
  ju.$clinit_AbstractMapEntry = emptyMethod;
  jl.$clinit_Object();
}
;
ju.AbstractMapEntry = function AbstractMapEntry(){
  ju.$clinit_AbstractMapEntry();
  Object_0.call(this);
  this.$init_652();
}
;
defineClass(653, 1, {1:1, 45:1});
_.$init_652 = function $init_652(){
}
;
_.equals_0 = function equals_39(other){
  var entry;
  if (!instanceOf(other, 45)) {
    return false;
  }
  entry = castTo(other, 45);
  return ju.equals_46(this.getKey(), entry.getKey()) && ju.equals_46(this.getValue_1(), entry.getValue_1());
}
;
_.hashCode_1 = function hashCode_33(){
  return ju.hashCode_39(this.getKey()) ^ ju.hashCode_39(this.getValue_1());
}
;
_.toString_0 = function toString_61(){
  return this.getKey() + '=' + this.getValue_1();
}
;
cggl.Ljava_util_AbstractMapEntry_2_classLit = createForClass('java.util', 'AbstractMapEntry', 653, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_SortedMap = function $clinit_SortedMap(){
  ju.$clinit_SortedMap = emptyMethod;
}
;
cggl.Ljava_util_SortedMap_2_classLit = createForInterface('java.util', 'SortedMap');
ju.$clinit_NavigableMap = function $clinit_NavigableMap(){
  ju.$clinit_NavigableMap = emptyMethod;
}
;
cggl.Ljava_util_NavigableMap_2_classLit = createForInterface('java.util', 'NavigableMap');
ju.$clinit_AbstractNavigableMap = function $clinit_AbstractNavigableMap(){
  ju.$clinit_AbstractNavigableMap = emptyMethod;
  ju.$clinit_AbstractMap();
  ju.$clinit_Map();
}
;
ju.AbstractNavigableMap = function AbstractNavigableMap(){
  ju.$clinit_AbstractNavigableMap();
  ju.AbstractMap.call(this);
  this.$init_653();
}
;
ju.copyOf_6 = function copyOf_6(entry){
  return isNull(entry)?null:new ju.AbstractMap$SimpleImmutableEntry(entry);
}
;
defineClass(604, 172, {1:1, 72:1});
_.$init_653 = function $init_653(){
}
;
_.containsEntry = function containsEntry_0(entry){
  var key, lookupEntry;
  key = entry.getKey();
  lookupEntry = this.getEntry(key);
  return isNotNull(lookupEntry) && ju.equals_46(lookupEntry.getValue_1(), entry.getValue_1());
}
;
_.containsKey = function containsKey_1(k){
  var key;
  key = k;
  return isNotNull(this.getEntry(key));
}
;
_.entrySet = function entrySet_0(){
  return new ju.AbstractNavigableMap$EntrySet(this);
}
;
_.get = function get_35(k){
  var key;
  key = k;
  return ju.getEntryValueOrNull(this.getEntry(key));
}
;
_.keySet = function keySet_0(){
  return this.navigableKeySet();
}
;
_.navigableKeySet = function navigableKeySet(){
  return new ju.AbstractNavigableMap$NavigableKeySet(this);
}
;
_.pollEntry = function pollEntry(entry){
  if (isNotNull(entry)) {
    this.removeEntry(entry);
  }
  return ju.copyOf_6(entry);
}
;
_.pollFirstEntry = function pollFirstEntry(){
  return this.pollEntry(this.getFirstEntry());
}
;
cggl.Ljava_util_AbstractNavigableMap_2_classLit = createForClass('java.util', 'AbstractNavigableMap', 604, cggl.Ljava_util_AbstractMap_2_classLit);
ju.$clinit_AbstractNavigableMap$DescendingMap = function $clinit_AbstractNavigableMap$DescendingMap(){
  ju.$clinit_AbstractNavigableMap$DescendingMap = emptyMethod;
}
;
defineClass(1123, 604, {1:1, 72:1});
cggl.Ljava_util_AbstractNavigableMap$DescendingMap_2_classLit = createForClass('java.util', 'AbstractNavigableMap/DescendingMap', 1123, cggl.Ljava_util_AbstractNavigableMap_2_classLit);
ju.$clinit_AbstractNavigableMap$EntrySet = function $clinit_AbstractNavigableMap$EntrySet(){
  ju.$clinit_AbstractNavigableMap$EntrySet = emptyMethod;
  ju.$clinit_AbstractSet();
}
;
ju.AbstractNavigableMap$EntrySet = function AbstractNavigableMap$EntrySet(this$0){
  ju.$clinit_AbstractNavigableMap$EntrySet();
  this.this$01_0 = this$0;
  ju.AbstractSet.call(this);
  this.$init_654();
}
;
defineClass(338, 115, {1:1, 38:1, 79:1}, ju.AbstractNavigableMap$EntrySet);
_.$init_654 = function $init_654(){
}
;
_.contains = function contains_15(o){
  return instanceOf(o, 45) && this.this$01_0.containsEntry(castTo(o, 45));
}
;
_.iterator = function iterator_12(){
  return this.this$01_0.entryIterator();
}
;
_.remove = function remove_29(o){
  var entry;
  if (instanceOf(o, 45)) {
    entry = castTo(o, 45);
    return this.this$01_0.removeEntry(entry);
  }
  return false;
}
;
_.size = function size_15(){
  return this.this$01_0.size();
}
;
cggl.Ljava_util_AbstractNavigableMap$EntrySet_2_classLit = createForClass('java.util', 'AbstractNavigableMap/EntrySet', 338, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_SortedSet = function $clinit_SortedSet(){
  ju.$clinit_SortedSet = emptyMethod;
}
;
ju.$spliterator_3 = function $spliterator_3(this$static){
  return new ju.SortedSet$1(this$static, this$static, 1 | 16 | 4);
}
;
cggl.Ljava_util_SortedSet_2_classLit = createForInterface('java.util', 'SortedSet');
ju.$clinit_NavigableSet = function $clinit_NavigableSet(){
  ju.$clinit_NavigableSet = emptyMethod;
}
;
cggl.Ljava_util_NavigableSet_2_classLit = createForInterface('java.util', 'NavigableSet');
ju.$clinit_AbstractNavigableMap$NavigableKeySet = function $clinit_AbstractNavigableMap$NavigableKeySet(){
  ju.$clinit_AbstractNavigableMap$NavigableKeySet = emptyMethod;
  ju.$clinit_AbstractSet();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
  ju.$clinit_SortedSet();
}
;
ju.AbstractNavigableMap$NavigableKeySet = function AbstractNavigableMap$NavigableKeySet(map_0){
  ju.$clinit_AbstractNavigableMap$NavigableKeySet();
  ju.AbstractSet.call(this);
  this.$init_655();
  this.map_0 = map_0;
}
;
defineClass(609, 115, {1:1, 38:1, 79:1}, ju.AbstractNavigableMap$NavigableKeySet);
_.$init_655 = function $init_655(){
}
;
_.spliterator_0 = function spliterator_6(){
  return ju.$spliterator_3(this);
}
;
_.clear = function clear_22(){
  this.map_0.clear();
}
;
_.contains = function contains_16(o){
  return this.map_0.containsKey(o);
}
;
_.iterator = function iterator_13(){
  var entryIterator;
  entryIterator = this.map_0.entrySet().iterator();
  return new ju.AbstractNavigableMap$NavigableKeySet$1(this, entryIterator);
}
;
_.pollFirst = function pollFirst(){
  return ju.getEntryKeyOrNull(this.map_0.pollFirstEntry());
}
;
_.remove = function remove_30(o){
  if (this.map_0.containsKey(o)) {
    this.map_0.remove(o);
    return true;
  }
  return false;
}
;
_.size = function size_16(){
  return this.map_0.size();
}
;
cggl.Ljava_util_AbstractNavigableMap$NavigableKeySet_2_classLit = createForClass('java.util', 'AbstractNavigableMap/NavigableKeySet', 609, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_AbstractNavigableMap$NavigableKeySet$1 = function $clinit_AbstractNavigableMap$NavigableKeySet$1(){
  ju.$clinit_AbstractNavigableMap$NavigableKeySet$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.AbstractNavigableMap$NavigableKeySet$1 = function AbstractNavigableMap$NavigableKeySet$1(this$1, val$entryIterator){
  ju.$clinit_AbstractNavigableMap$NavigableKeySet$1();
  this.this$11 = this$1;
  this.val$entryIterator2 = val$entryIterator;
  Object_0.call(this);
  this.$init_656();
}
;
defineClass(610, 1, {1:1, 46:1}, ju.AbstractNavigableMap$NavigableKeySet$1);
_.$init_656 = function $init_656(){
}
;
_.forEachRemaining = function forEachRemaining_9(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_7(){
  return this.val$entryIterator2.hasNext_0();
}
;
_.next_3 = function next_15(){
  var entry;
  entry = castTo(this.val$entryIterator2.next_3(), 45);
  return entry.getKey();
}
;
_.remove_4 = function remove_31(){
  this.val$entryIterator2.remove_4();
}
;
cggl.Ljava_util_AbstractNavigableMap$NavigableKeySet$1_2_classLit = createForClass('java.util', 'AbstractNavigableMap/NavigableKeySet/1', 610, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Queue = function $clinit_Queue(){
  ju.$clinit_Queue = emptyMethod;
}
;
cggl.Ljava_util_Queue_2_classLit = createForInterface('java.util', 'Queue');
ju.$clinit_AbstractQueue = function $clinit_AbstractQueue(){
  ju.$clinit_AbstractQueue = emptyMethod;
}
;
defineClass(1132, 225, {1:1, 38:1});
cggl.Ljava_util_AbstractQueue_2_classLit = createForClass('java.util', 'AbstractQueue', 1132, cggl.Ljava_util_AbstractCollection_2_classLit);
ju.$clinit_Deque = function $clinit_Deque(){
  ju.$clinit_Deque = emptyMethod;
}
;
cggl.Ljava_util_Deque_2_classLit = createForInterface('java.util', 'Deque');
ju.$clinit_ArrayDeque = function $clinit_ArrayDeque(){
  ju.$clinit_ArrayDeque = emptyMethod;
  ju.$clinit_AbstractCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
}
;
ju.ArrayDeque = function ArrayDeque(){
  ju.$clinit_ArrayDeque();
  ju.AbstractCollection.call(this);
  this.$init_657();
  this.array = castToArray(initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 7:1}, 1, 8, 5, 1));
}
;
ju.checkConcurrentModification = function checkConcurrentModification(expression){
  ju.$clinit_ArrayDeque();
  if (!expression) {
    throw toJs(new ju.ConcurrentModificationException);
  }
}
;
ju.nextArrayLength = function nextArrayLength(numElements){
  return ju.nextPowerOfTwo($wnd.Math.max(8, numElements));
}
;
ju.nextPowerOfTwo = function nextPowerOfTwo(num){
  return highestOneBit(num) << 1;
}
;
defineClass(725, 225, {1:1, 38:1}, ju.ArrayDeque);
_.$init_657 = function $init_657(){
}
;
_.add = function add_33(e){
  this.addLast(e);
  return true;
}
;
_.addFirst = function addFirst(e){
  ji2.checkCriticalNotNull(e);
  this.head_0 = this.head_0 - 1 & this.array.length - 1;
  setCheck(this.array, this.head_0, e);
  this.ensureCapacity();
}
;
_.addLast = function addLast(e){
  ji2.checkCriticalNotNull(e);
  setCheck(this.array, this.tail, e);
  this.tail = this.tail + 1 & this.array.length - 1;
  this.ensureCapacity();
}
;
_.clear = function clear_23(){
  if (this.head_0 == this.tail) {
    return;
  }
  this.array = castToArray(initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 7:1}, 1, 8, 5, 1));
  this.head_0 = 0;
  this.tail = 0;
}
;
_.contains = function contains_17(o){
  return this.contains_4(this.iterator(), o);
}
;
_.contains_4 = function contains_18(it, o){
  if (jsEquals(o, null)) {
    return false;
  }
  while (it.hasNext_0()) {
    if (jl.equals_Ljava_lang_Object__Z__devirtual$(o, it.next_3())) {
      return true;
    }
  }
  return false;
}
;
_.copyElements = function copyElements(dest, count){
  var dstIdx, i, mask;
  mask = this.array.length - 1;
  for (i = this.head_0 , dstIdx = 0; dstIdx < count; i = i + 1 & mask , ++dstIdx) {
    setCheck(dest, dstIdx, this.array[i]);
  }
}
;
_.ensureCapacity = function ensureCapacity(){
  var newArray, newLength, numElements;
  if (this.head_0 != this.tail) {
    return;
  }
  numElements = this.array.length;
  newLength = ju.nextArrayLength(numElements);
  if (this.head_0 != 0) {
    newArray = ji2.createFrom(this.array, newLength);
    this.copyElements(newArray, numElements);
    this.array = newArray;
    this.head_0 = 0;
  }
   else {
    ji2.setLength_0(this.array, newLength);
  }
  this.tail = numElements;
}
;
_.isEmpty = function isEmpty_6(){
  return this.head_0 == this.tail;
}
;
_.iterator = function iterator_14(){
  return new ju.ArrayDeque$IteratorImpl(this);
}
;
_.peekFirstElement = function peekFirstElement(){
  return this.array[this.head_0];
}
;
_.poll = function poll(){
  return this.pollFirst();
}
;
_.pollFirst = function pollFirst_0(){
  var e;
  e = this.peekFirstElement();
  if (jsEquals(e, null)) {
    return null;
  }
  setCheck(this.array, this.head_0, null);
  this.head_0 = this.head_0 + 1 & this.array.length - 1;
  return e;
}
;
_.push_0 = function push_1(e){
  this.addFirst(e);
}
;
_.remove = function remove_32(o){
  return this.removeFirstOccurrence(o);
}
;
_.remove_6 = function remove_33(it, o){
  if (this.contains_4(it, o)) {
    it.remove_4();
    return true;
  }
  return false;
}
;
_.removeAtIndex_0 = function removeAtIndex(i){
  ju.$clinit_ArrayDeque();
  var headDistance, mask, size_0, tailDistance;
  mask = this.array.length - 1;
  headDistance = i - this.head_0 & mask;
  tailDistance = this.tail - i & mask;
  size_0 = this.tail - this.head_0 & mask;
  ju.checkConcurrentModification(headDistance < size_0);
  if (headDistance >= tailDistance) {
    this.shiftLeftAtIndex(i);
    return -1;
  }
   else {
    this.shiftRightAtIndex(i);
    return 1;
  }
}
;
_.removeFirstOccurrence = function removeFirstOccurrence(o){
  return this.remove_6(this.iterator(), o);
}
;
_.shiftLeftAtIndex = function shiftLeftAtIndex(i){
  var mask, nextOffset;
  mask = this.array.length - 1;
  this.tail = this.tail - 1 & mask;
  while (i != this.tail) {
    nextOffset = i + 1 & mask;
    setCheck(this.array, i, this.array[nextOffset]);
    i = nextOffset;
  }
  setCheck(this.array, this.tail, null);
}
;
_.shiftRightAtIndex = function shiftRightAtIndex(i){
  var mask, prevOffset;
  mask = this.array.length - 1;
  while (i != this.head_0) {
    prevOffset = i - 1 & mask;
    setCheck(this.array, i, this.array[prevOffset]);
    i = prevOffset;
  }
  setCheck(this.array, this.head_0, null);
  this.head_0 = this.head_0 + 1 & mask;
}
;
_.size = function size_17(){
  return this.tail - this.head_0 & this.array.length - 1;
}
;
_.spliterator_0 = function spliterator_7(){
  return ju.spliterator_13(this, 256 | 16);
}
;
_.toArray_0 = function toArray_7(out){
  var size_0;
  size_0 = this.size();
  if (out.length < size_0) {
    out = ji2.createFrom(out, size_0);
  }
  this.copyElements(out, size_0);
  if (out.length > size_0) {
    setCheck(out, size_0, null);
  }
  return out;
}
;
_.head_0 = 0;
_.tail = 0;
ju.MIN_INITIAL_CAPACITY = 8;
cggl.Ljava_util_ArrayDeque_2_classLit = createForClass('java.util', 'ArrayDeque', 725, cggl.Ljava_util_AbstractCollection_2_classLit);
ju.$clinit_ArrayDeque$DescendingIteratorImpl = function $clinit_ArrayDeque$DescendingIteratorImpl(){
  ju.$clinit_ArrayDeque$DescendingIteratorImpl = emptyMethod;
}
;
defineClass(1207, 1, {1:1, 46:1});
cggl.Ljava_util_ArrayDeque$DescendingIteratorImpl_2_classLit = createForClass('java.util', 'ArrayDeque/DescendingIteratorImpl', 1207, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_ArrayDeque$IteratorImpl = function $clinit_ArrayDeque$IteratorImpl(){
  ju.$clinit_ArrayDeque$IteratorImpl = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.ArrayDeque$IteratorImpl = function ArrayDeque$IteratorImpl(this$0){
  ju.$clinit_ArrayDeque$IteratorImpl();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_658();
}
;
defineClass(726, 1, {1:1, 46:1}, ju.ArrayDeque$IteratorImpl);
_.$init_658 = function $init_658(){
  this.currentIndex = this.this$01.head_0;
  this.fence = this.this$01.tail;
  this.lastIndex = -1;
}
;
_.forEachRemaining = function forEachRemaining_10(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_8(){
  return this.currentIndex != this.fence;
}
;
_.next_3 = function next_16(){
  var e;
  ji2.checkCriticalElement(this.hasNext_0());
  e = this.this$01.array[this.currentIndex];
  ju.checkConcurrentModification(this.fence == this.this$01.tail && jsNotEquals(e, null));
  this.lastIndex = this.currentIndex;
  this.currentIndex = this.currentIndex + 1 & this.this$01.array.length - 1;
  return e;
}
;
_.remove_4 = function remove_34(){
  ji2.checkState(this.lastIndex >= 0);
  if (this.this$01.removeAtIndex_0(this.lastIndex) < 0) {
    this.currentIndex = this.currentIndex - 1 & this.this$01.array.length - 1;
    this.fence = this.this$01.tail;
  }
  this.lastIndex = -1;
}
;
_.currentIndex = 0;
_.fence = 0;
_.lastIndex = 0;
cggl.Ljava_util_ArrayDeque$IteratorImpl_2_classLit = createForClass('java.util', 'ArrayDeque/IteratorImpl', 726, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_ArrayList$1 = function $clinit_ArrayList$1(){
  ju.$clinit_ArrayList$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.ArrayList$1 = function ArrayList$1(this$0){
  ju.$clinit_ArrayList$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_659();
}
;
defineClass(515, 1, {1:1, 46:1}, ju.ArrayList$1);
_.$init_659 = function $init_659(){
  this.i = 0;
  this.last = -1;
}
;
_.forEachRemaining = function forEachRemaining_11(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_9(){
  return this.i < this.this$01.array.length;
}
;
_.next_3 = function next_17(){
  ji2.checkElement(this.hasNext_0());
  this.last = this.i++;
  return this.this$01.array[this.last];
}
;
_.remove_4 = function remove_35(){
  ji2.checkState(this.last != -1);
  this.this$01.removeAtIndex(this.i = this.last);
  this.last = -1;
}
;
_.i = 0;
_.last = 0;
cggl.Ljava_util_ArrayList$1_2_classLit = createForClass('java.util', 'ArrayList/1', 515, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Arrays = function $clinit_Arrays(){
  ju.$clinit_Arrays = emptyMethod;
  jl.$clinit_Object();
}
;
ju.checkCopyOfRange = function checkCopyOfRange(original, from, to){
  var len;
  ji2.checkArgument(from <= to, from + ' > ' + to);
  len = ji2.getLength_1(original);
  ji2.checkCriticalArrayBounds(from, from, len);
}
;
ju.copyOf_7 = function copyOf_7(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, newLength, 15, 1), 0, newLength), 8);
}
;
ju.copyOf_8 = function copyOf_8(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, newLength, 15, 1), 0, newLength), 13);
}
;
ju.copyOf_9 = function copyOf_9(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, newLength, 15, 1), 0, newLength), 6);
}
;
ju.copyOf_10 = function copyOf_10(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, newLength, 14, 1), 0, newLength), 60);
}
;
ju.copyOf_11 = function copyOf_11(original, newLength){
  ju.$clinit_Arrays();
  ji2.checkArraySize(newLength);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, newLength, 15, 1), 0, newLength), 16);
}
;
ju.copyOfRange = function copyOfRange(original, from, to){
  ju.$clinit_Arrays();
  ju.checkCopyOfRange(original, from, to);
  return castTo(ju.copyPrimitiveArray(original, initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, to - from, 15, 1), from, to), 8);
}
;
ju.copyPrimitiveArray = function copyPrimitiveArray(original, copy, from, to){
  var copyLen, len;
  len = ji2.getLength_1(original);
  copyLen = $wnd.Math.min(to, len) - from;
  ji2.copy_2(original, from, copy, 0, copyLen);
  return copy;
}
;
ju.fill = function fill(a, val){
  ju.$clinit_Arrays();
  ju.fill0(a, 0, a.length, val);
}
;
ju.fill_0 = function fill_0(a, val){
  ju.$clinit_Arrays();
  ju.fill0_0(a, 0, a.length, val);
}
;
ju.fill_1 = function fill_1(a, val){
  ju.$clinit_Arrays();
  ju.fill0_1(a, 0, a.length, val);
}
;
ju.fill_2 = function fill_2(a, val){
  ju.$clinit_Arrays();
  ju.fill0_2(a, 0, a.length, val);
}
;
ju.fill_3 = function fill_3(a, val){
  ju.$clinit_Arrays();
  ju.fill0_3(a, 0, a.length, val);
}
;
ju.fill0 = function fill0(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.fill0_0 = function fill0_0(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.fill0_1 = function fill0_1(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.fill0_2 = function fill0_2(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.fill0_3 = function fill0_3(a, fromIndex, toIndex, val){
  var i;
  for (i = fromIndex; i < toIndex; ++i) {
    a[i] = val;
  }
}
;
ju.getDoubleComparator = function getDoubleComparator(){
  return ji2.uncheckedCast(castToFunction(makeLambdaFunction(ju.Arrays$0methodref$compare$Type.prototype.compare_6, ju.Arrays$0methodref$compare$Type, [])));
}
;
ju.getIntComparator = function getIntComparator(){
  return ji2.uncheckedCast(castToFunction(makeLambdaFunction(ju.Arrays$lambda$0$Type.prototype.compare_6, ju.Arrays$lambda$0$Type, [])));
}
;
ju.getLongComparator = function getLongComparator(){
  return ji2.uncheckedCast(castToFunction(makeLambdaFunction(ju.Arrays$1methodref$compare$Type.prototype.compare_7, ju.Arrays$1methodref$compare$Type, [])));
}
;
ju.hashCode_34 = function hashCode_34(a){
  ju.$clinit_Arrays();
  var e, e$array, e$index, e$max, hashCode;
  if (jsEquals(a, null)) {
    return 0;
  }
  hashCode = 1;
  for (e$array = a , e$index = 0 , e$max = e$array.length; e$index < e$max; ++e$index) {
    e = e$array[e$index];
    hashCode = 31 * hashCode + ju.hashCode_39(e);
    hashCode = ji2.ensureInt(hashCode);
  }
  return hashCode;
}
;
ju.insertionSort = function insertionSort(array, low, high, comp){
  var i, j, t;
  for (i = low + 1; i < high; ++i) {
    for (j = i; j > low && comp.compare_0(array[j - 1], array[j]) > 0; --j) {
      t = array[j];
      setCheck(array, j, array[j - 1]);
      setCheck(array, j - 1, t);
    }
  }
}
;
ju.lambda$0 = function lambda$0(a_0, b_1){
  ju.$clinit_Arrays();
  return a_0 - b_1;
}
;
ju.merge = function merge(src_0, srcLow, srcMid, srcHigh, dest, destLow, destHigh, comp){
  var topIdx;
  topIdx = srcMid;
  while (destLow < destHigh) {
    if (topIdx >= srcHigh || srcLow < srcMid && comp.compare_0(src_0[srcLow], src_0[topIdx]) <= 0) {
      setCheck(dest, destLow++, src_0[srcLow++]);
    }
     else {
      setCheck(dest, destLow++, src_0[topIdx++]);
    }
  }
}
;
ju.mergeSort = function mergeSort(x_0, fromIndex, toIndex, comp){
  var temp;
  comp = ju.nullToNaturalOrder(comp);
  temp = ji2.unsafeClone(x_0, fromIndex, toIndex);
  ju.mergeSort_0(temp, x_0, fromIndex, toIndex, -fromIndex, castTo(comp, 50));
}
;
ju.mergeSort_0 = function mergeSort_0(temp, array, low, high, ofs, comp){
  var length_0, tempHigh, tempLow, tempMid;
  length_0 = high - low;
  if (length_0 < 7) {
    ju.insertionSort(array, low, high, comp);
    return;
  }
  tempLow = low + ofs;
  tempHigh = high + ofs;
  tempMid = tempLow + (tempHigh - tempLow >> 1);
  ju.mergeSort_0(array, temp, tempLow, tempMid, -ofs, comp);
  ju.mergeSort_0(array, temp, tempMid, tempHigh, -ofs, comp);
  if (comp.compare_0(temp[tempMid - 1], temp[tempMid]) <= 0) {
    while (low < high) {
      setCheck(array, low++, temp[tempLow++]);
    }
    return;
  }
  ju.merge(temp, tempLow, tempMid, tempHigh, array, low, high, comp);
}
;
ju.nativeIntegerSort = function nativeIntegerSort(array){
  ji2.sort_11(array, ju.getIntComparator());
}
;
ju.sort_2 = function sort_2(array){
  ju.$clinit_Arrays();
  ji2.sort_11(array, ju.getDoubleComparator());
}
;
ju.sort_3 = function sort_3(array){
  ju.$clinit_Arrays();
  ju.nativeIntegerSort(array);
}
;
ju.sort_4 = function sort_4(array){
  ju.$clinit_Arrays();
  ji2.sort_11(array, ju.getLongComparator());
}
;
ju.sort_5 = function sort_5(array){
  ju.$clinit_Arrays();
  ju.sort_7(array, null);
}
;
ju.sort_6 = function sort_6(x_0, fromIndex, toIndex, c){
  ju.$clinit_Arrays();
  ji2.checkCriticalArrayBounds(fromIndex, toIndex, x_0.length);
  ju.mergeSort(x_0, fromIndex, toIndex, c);
}
;
ju.sort_7 = function sort_7(x_0, c){
  ju.$clinit_Arrays();
  ju.mergeSort(x_0, 0, x_0.length, c);
}
;
defineClass(1117, 1, {1:1});
cggl.Ljava_util_Arrays_2_classLit = createForClass('java.util', 'Arrays', 1117, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Arrays$0methodref$compare$Type = function $clinit_Arrays$0methodref$compare$Type(){
  ju.$clinit_Arrays$0methodref$compare$Type = emptyMethod;
}
;
ju.$getClass_4 = function $getClass_4(this$static){
  return cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit;
}
;
ju.Arrays$0methodref$compare$Type = function Arrays$0methodref$compare$Type(){
  ju.$clinit_Arrays$0methodref$compare$Type();
}
;
defineClass(1360, $wnd.Function, {1:1, 1346:1}, ju.Arrays$0methodref$compare$Type);
_.compare_6 = function compare_29(d1, d2){
  return compare_22(d1, d2);
}
;
ju.$clinit_Arrays$1methodref$compare$Type = function $clinit_Arrays$1methodref$compare$Type(){
  ju.$clinit_Arrays$1methodref$compare$Type = emptyMethod;
}
;
ju.$getClass_5 = function $getClass_5(this$static){
  return cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit;
}
;
ju.Arrays$1methodref$compare$Type = function Arrays$1methodref$compare$Type(){
  ju.$clinit_Arrays$1methodref$compare$Type();
}
;
defineClass(1361, $wnd.Function, {1:1, 1362:1}, ju.Arrays$1methodref$compare$Type);
_.compare_7 = function compare_30(d1, d2){
  return compare_25(d1, d2);
}
;
ju.$clinit_Arrays$ArrayList = function $clinit_Arrays$ArrayList(){
  ju.$clinit_Arrays$ArrayList = emptyMethod;
}
;
defineClass(1118, 171, {4:1, 1:1, 38:1, 57:1, 143:1});
cggl.Ljava_util_Arrays$ArrayList_2_classLit = createForClass('java.util', 'Arrays/ArrayList', 1118, cggl.Ljava_util_AbstractList_2_classLit);
ju.$clinit_Arrays$lambda$0$Type = function $clinit_Arrays$lambda$0$Type(){
  ju.$clinit_Arrays$lambda$0$Type = emptyMethod;
}
;
ju.$getClass_6 = function $getClass_6(this$static){
  return cggl.Lcom_google_gwt_core_client_JavaScriptObject_2_classLit;
}
;
ju.Arrays$lambda$0$Type = function Arrays$lambda$0$Type(){
  ju.$clinit_Arrays$lambda$0$Type();
}
;
defineClass(1359, $wnd.Function, {1:1, 1346:1}, ju.Arrays$lambda$0$Type);
_.compare_6 = function compare_31(d1, d2){
  return ju.lambda$0(d1, d2);
}
;
ju.$clinit_Collections = function $clinit_Collections(){
  ju.$clinit_Collections = emptyMethod;
  jl.$clinit_Object();
  ju.EMPTY_LIST = new ju.Collections$EmptyList;
  ju.EMPTY_MAP = new ju.Collections$EmptyMap;
  ju.EMPTY_SET = new ju.Collections$EmptySet;
}
;
ju.emptyIterator = function emptyIterator(){
  ju.$clinit_Collections();
  return castTo((ju.$clinit_Collections$EmptyListIterator() , ju.INSTANCE_3), 46);
}
;
ju.emptyList = function emptyList(){
  ju.$clinit_Collections();
  return castTo(ju.EMPTY_LIST, 57);
}
;
ju.emptyListIterator = function emptyListIterator(){
  ju.$clinit_Collections();
  return castTo((ju.$clinit_Collections$EmptyListIterator() , ju.INSTANCE_3), 1344);
}
;
ju.emptySet = function emptySet(){
  ju.$clinit_Collections();
  return castTo(ju.EMPTY_SET, 79);
}
;
ju.hashCode_35 = function hashCode_35(collection){
  ju.$clinit_Collections();
  var e, e$iterator, hashCode;
  hashCode = 0;
  for (e$iterator = collection.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    hashCode = hashCode + ju.hashCode_39(e);
    hashCode = ji2.ensureInt(hashCode);
  }
  return hashCode;
}
;
ju.hashCode_36 = function hashCode_36(list){
  ju.$clinit_Collections();
  var e, e$iterator, hashCode;
  hashCode = 1;
  for (e$iterator = list.iterator(); e$iterator.hasNext_0();) {
    e = e$iterator.next_3();
    hashCode = 31 * hashCode + ju.hashCode_39(e);
    hashCode = ji2.ensureInt(hashCode);
  }
  return hashCode;
}
;
ju.singleton_0 = function singleton_0(o){
  ju.$clinit_Collections();
  var set_0;
  set_0 = new ju.HashSet_0(1);
  set_0.add(o);
  return ju.unmodifiableSet(set_0);
}
;
ju.sort_8 = function sort_8(target, c){
  ju.$clinit_Collections();
  target.sort_0(c);
}
;
ju.unmodifiableList = function unmodifiableList(list){
  ju.$clinit_Collections();
  return instanceOf(list, 143)?new ju.Collections$UnmodifiableRandomAccessList(list):new ju.Collections$UnmodifiableList(list);
}
;
ju.unmodifiableSet = function unmodifiableSet(set_0){
  return new ju.Collections$UnmodifiableSet(set_0);
}
;
defineClass(1131, 1, {1:1});
cggl.Ljava_util_Collections_2_classLit = createForClass('java.util', 'Collections', 1131, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Enumeration = function $clinit_Enumeration(){
  ju.$clinit_Enumeration = emptyMethod;
}
;
cggl.Ljava_util_Enumeration_2_classLit = createForInterface('java.util', 'Enumeration');
ju.$clinit_Collections$1 = function $clinit_Collections$1(){
  ju.$clinit_Collections$1 = emptyMethod;
}
;
defineClass(1143, 1, {1:1});
cggl.Ljava_util_Collections$1_2_classLit = createForClass('java.util', 'Collections/1', 1143, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$EmptyList = function $clinit_Collections$EmptyList(){
  ju.$clinit_Collections$EmptyList = emptyMethod;
  ju.$clinit_AbstractList();
}
;
ju.Collections$EmptyList = function Collections$EmptyList(){
  ju.$clinit_Collections$EmptyList();
  ju.AbstractList.call(this);
  this.$init_660();
}
;
defineClass(634, 171, {4:1, 1:1, 38:1, 57:1, 143:1}, ju.Collections$EmptyList);
_.$init_660 = function $init_660(){
}
;
_.contains = function contains_19(object){
  return false;
}
;
_.getAtIndex = function get_36(location_0){
  ji2.checkElementIndex(location_0, 0);
  return null;
}
;
_.iterator = function iterator_15(){
  return ju.emptyIterator();
}
;
_.listIterator = function listIterator_1(){
  return ju.emptyListIterator();
}
;
_.size = function size_18(){
  return 0;
}
;
cggl.Ljava_util_Collections$EmptyList_2_classLit = createForClass('java.util', 'Collections/EmptyList', 634, cggl.Ljava_util_AbstractList_2_classLit);
ju.$clinit_Collections$EmptyListIterator = function $clinit_Collections$EmptyListIterator(){
  ju.$clinit_Collections$EmptyListIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
  ju.INSTANCE_3 = new ju.Collections$EmptyListIterator;
}
;
ju.Collections$EmptyListIterator = function Collections$EmptyListIterator(){
  Object_0.call(this);
  this.$init_661();
}
;
defineClass(635, 1, {1:1, 46:1, 1344:1}, ju.Collections$EmptyListIterator);
_.$init_661 = function $init_661(){
}
;
_.forEachRemaining = function forEachRemaining_12(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_10(){
  return false;
}
;
_.hasPrevious = function hasPrevious_0(){
  return false;
}
;
_.next_3 = function next_18(){
  throw toJs(new ju.NoSuchElementException);
}
;
_.previous = function previous_1(){
  throw toJs(new ju.NoSuchElementException);
}
;
_.remove_4 = function remove_36(){
  throw toJs(new jl.IllegalStateException);
}
;
cggl.Ljava_util_Collections$EmptyListIterator_2_classLit = createForClass('java.util', 'Collections/EmptyListIterator', 635, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$EmptyMap = function $clinit_Collections$EmptyMap(){
  ju.$clinit_Collections$EmptyMap = emptyMethod;
  ju.$clinit_AbstractMap();
}
;
ju.Collections$EmptyMap = function Collections$EmptyMap(){
  ju.$clinit_Collections$EmptyMap();
  ju.AbstractMap.call(this);
  this.$init_662();
}
;
defineClass(637, 172, {4:1, 1:1, 72:1}, ju.Collections$EmptyMap);
_.$init_662 = function $init_662(){
}
;
_.containsKey = function containsKey_2(key){
  return false;
}
;
_.containsValue = function containsValue_2(value_0){
  return false;
}
;
_.entrySet = function entrySet_1(){
  return ju.$clinit_Collections() , ju.EMPTY_SET;
}
;
_.get = function get_37(key){
  return null;
}
;
_.keySet = function keySet_1(){
  return ju.$clinit_Collections() , ju.EMPTY_SET;
}
;
_.size = function size_19(){
  return 0;
}
;
_.values = function values_21(){
  return ju.$clinit_Collections() , ju.EMPTY_LIST;
}
;
cggl.Ljava_util_Collections$EmptyMap_2_classLit = createForClass('java.util', 'Collections/EmptyMap', 637, cggl.Ljava_util_AbstractMap_2_classLit);
ju.$clinit_Collections$EmptySet = function $clinit_Collections$EmptySet(){
  ju.$clinit_Collections$EmptySet = emptyMethod;
  ju.$clinit_AbstractSet();
}
;
ju.Collections$EmptySet = function Collections$EmptySet(){
  ju.$clinit_Collections$EmptySet();
  ju.AbstractSet.call(this);
  this.$init_663();
}
;
defineClass(636, 115, {4:1, 1:1, 38:1, 79:1}, ju.Collections$EmptySet);
_.$init_663 = function $init_663(){
}
;
_.contains = function contains_20(object){
  return false;
}
;
_.iterator = function iterator_16(){
  return ju.emptyIterator();
}
;
_.size = function size_20(){
  return 0;
}
;
cggl.Ljava_util_Collections$EmptySet_2_classLit = createForClass('java.util', 'Collections/EmptySet', 636, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_Collections$LifoQueue = function $clinit_Collections$LifoQueue(){
  ju.$clinit_Collections$LifoQueue = emptyMethod;
}
;
defineClass(1133, 1132, {4:1, 1:1, 38:1});
cggl.Ljava_util_Collections$LifoQueue_2_classLit = createForClass('java.util', 'Collections/LifoQueue', 1133, cggl.Ljava_util_AbstractQueue_2_classLit);
ju.$clinit_Collections$RandomHolder = function $clinit_Collections$RandomHolder(){
  ju.$clinit_Collections$RandomHolder = emptyMethod;
}
;
defineClass(1141, 1, {1:1});
cggl.Ljava_util_Collections$RandomHolder_2_classLit = createForClass('java.util', 'Collections/RandomHolder', 1141, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$SetFromMap = function $clinit_Collections$SetFromMap(){
  ju.$clinit_Collections$SetFromMap = emptyMethod;
}
;
defineClass(1134, 115, {4:1, 1:1, 38:1, 79:1});
cggl.Ljava_util_Collections$SetFromMap_2_classLit = createForClass('java.util', 'Collections/SetFromMap', 1134, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_Collections$SingletonList = function $clinit_Collections$SingletonList(){
  ju.$clinit_Collections$SingletonList = emptyMethod;
}
;
defineClass(1135, 171, {4:1, 1:1, 38:1, 57:1});
cggl.Ljava_util_Collections$SingletonList_2_classLit = createForClass('java.util', 'Collections/SingletonList', 1135, cggl.Ljava_util_AbstractList_2_classLit);
ju.$clinit_Collections$UnmodifiableCollection = function $clinit_Collections$UnmodifiableCollection(){
  ju.$clinit_Collections$UnmodifiableCollection = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
}
;
ju.Collections$UnmodifiableCollection = function Collections$UnmodifiableCollection(coll){
  ju.$clinit_Collections$UnmodifiableCollection();
  Object_0.call(this);
  this.$init_664();
  this.coll = coll;
}
;
defineClass(342, 1, {1:1, 38:1});
_.$init_664 = function $init_664(){
}
;
_.forEach_0 = function forEach_4(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_8(){
  return ju.$spliterator_0(this);
}
;
_.stream = function stream_0(){
  return ju.$stream(this);
}
;
_.add = function add_34(o){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.addAll = function addAll_3(c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.clear = function clear_24(){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.contains = function contains_21(o){
  return this.coll.contains(o);
}
;
_.containsAll = function containsAll_0(c){
  return this.coll.containsAll(c);
}
;
_.isEmpty = function isEmpty_7(){
  return this.coll.isEmpty();
}
;
_.iterator = function iterator_17(){
  return new ju.Collections$UnmodifiableCollectionIterator(this.coll.iterator());
}
;
_.remove = function remove_37(o){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.removeAll = function removeAll_2(c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.retainAll = function retainAll_0(c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.size = function size_21(){
  return this.coll.size();
}
;
_.toArray = function toArray_8(){
  return this.coll.toArray();
}
;
_.toArray_0 = function toArray_9(a){
  return this.coll.toArray_0(a);
}
;
_.toString_0 = function toString_62(){
  return toString_30(this.coll);
}
;
cggl.Ljava_util_Collections$UnmodifiableCollection_2_classLit = createForClass('java.util', 'Collections/UnmodifiableCollection', 342, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableCollectionIterator = function $clinit_Collections$UnmodifiableCollectionIterator(){
  ju.$clinit_Collections$UnmodifiableCollectionIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.Collections$UnmodifiableCollectionIterator = function Collections$UnmodifiableCollectionIterator(it){
  ju.$clinit_Collections$UnmodifiableCollectionIterator();
  Object_0.call(this);
  this.$init_665();
  this.it = it;
}
;
defineClass(281, 1, {1:1, 46:1}, ju.Collections$UnmodifiableCollectionIterator);
_.$init_665 = function $init_665(){
}
;
_.forEachRemaining = function forEachRemaining_13(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.hasNext_0 = function hasNext_11(){
  return this.it.hasNext_0();
}
;
_.next_3 = function next_19(){
  return this.it.next_3();
}
;
_.remove_4 = function remove_38(){
  throw toJs(new jl.UnsupportedOperationException);
}
;
cggl.Ljava_util_Collections$UnmodifiableCollectionIterator_2_classLit = createForClass('java.util', 'Collections/UnmodifiableCollectionIterator', 281, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableList = function $clinit_Collections$UnmodifiableList(){
  ju.$clinit_Collections$UnmodifiableList = emptyMethod;
  ju.$clinit_Collections$UnmodifiableCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_List();
}
;
ju.Collections$UnmodifiableList = function Collections$UnmodifiableList(list){
  ju.$clinit_Collections$UnmodifiableList();
  ju.Collections$UnmodifiableCollection.call(this, list);
  this.$init_666();
  this.list = list;
}
;
defineClass(280, 342, {1:1, 38:1, 57:1}, ju.Collections$UnmodifiableList);
_.$init_666 = function $init_666(){
}
;
_.spliterator_0 = function spliterator_9(){
  return ju.$spliterator_1(this);
}
;
_.addAtIndex = function add_35(index_0, element){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.addAllAtIndex = function addAll_4(index_0, c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.equals_0 = function equals_40(o){
  return jl.equals_Ljava_lang_Object__Z__devirtual$(this.list, o);
}
;
_.getAtIndex = function get_38(index_0){
  return this.list.getAtIndex(index_0);
}
;
_.hashCode_1 = function hashCode_37(){
  return jl.hashCode__I__devirtual$(this.list);
}
;
_.indexOf = function indexOf_7(o){
  return this.list.indexOf(o);
}
;
_.isEmpty = function isEmpty_8(){
  return this.list.isEmpty();
}
;
_.lastIndexOf = function lastIndexOf_4(o){
  return this.list.lastIndexOf(o);
}
;
_.listIterator = function listIterator_2(){
  return this.listIterator_0(0);
}
;
_.listIterator_0 = function listIterator_3(from){
  return new ju.Collections$UnmodifiableListIterator(this.list.listIterator_0(from));
}
;
_.removeAtIndex = function remove_39(index_0){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.setAtIndex = function set_8(index_0, element){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.sort_0 = function sort_9(c){
  throw toJs(new jl.UnsupportedOperationException);
}
;
_.subList = function subList_0(fromIndex, toIndex){
  return new ju.Collections$UnmodifiableList(this.list.subList(fromIndex, toIndex));
}
;
cggl.Ljava_util_Collections$UnmodifiableList_2_classLit = createForClass('java.util', 'Collections/UnmodifiableList', 280, cggl.Ljava_util_Collections$UnmodifiableCollection_2_classLit);
ju.$clinit_Collections$UnmodifiableListIterator = function $clinit_Collections$UnmodifiableListIterator(){
  ju.$clinit_Collections$UnmodifiableListIterator = emptyMethod;
  ju.$clinit_Collections$UnmodifiableCollectionIterator();
  ju.$clinit_Iterator();
}
;
ju.Collections$UnmodifiableListIterator = function Collections$UnmodifiableListIterator(lit){
  ju.$clinit_Collections$UnmodifiableListIterator();
  ju.Collections$UnmodifiableCollectionIterator.call(this, lit);
  this.$init_667();
  this.lit = lit;
}
;
defineClass(640, 281, {1:1, 46:1}, ju.Collections$UnmodifiableListIterator);
_.$init_667 = function $init_667(){
}
;
_.remove_4 = function remove_40(){
  getClassPrototype(281).remove_4.call(this);
}
;
_.hasPrevious = function hasPrevious_1(){
  return this.lit.hasPrevious();
}
;
_.previous = function previous_2(){
  return this.lit.previous();
}
;
cggl.Ljava_util_Collections$UnmodifiableListIterator_2_classLit = createForClass('java.util', 'Collections/UnmodifiableListIterator', 640, cggl.Ljava_util_Collections$UnmodifiableCollectionIterator_2_classLit);
ju.$clinit_Collections$UnmodifiableMap = function $clinit_Collections$UnmodifiableMap(){
  ju.$clinit_Collections$UnmodifiableMap = emptyMethod;
}
;
defineClass(1136, 1, {1:1, 72:1});
cggl.Ljava_util_Collections$UnmodifiableMap_2_classLit = createForClass('java.util', 'Collections/UnmodifiableMap', 1136, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableSet = function $clinit_Collections$UnmodifiableSet(){
  ju.$clinit_Collections$UnmodifiableSet = emptyMethod;
  ju.$clinit_Collections$UnmodifiableCollection();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
}
;
ju.Collections$UnmodifiableSet = function Collections$UnmodifiableSet(set_0){
  ju.$clinit_Collections$UnmodifiableSet();
  ju.Collections$UnmodifiableCollection.call(this, set_0);
  this.$init_668();
}
;
defineClass(638, 342, {1:1, 38:1, 79:1}, ju.Collections$UnmodifiableSet);
_.$init_668 = function $init_668(){
}
;
_.spliterator_0 = function spliterator_10(){
  return ju.$spliterator_2(this);
}
;
_.equals_0 = function equals_41(o){
  return jl.equals_Ljava_lang_Object__Z__devirtual$(this.coll, o);
}
;
_.hashCode_1 = function hashCode_38(){
  return jl.hashCode__I__devirtual$(this.coll);
}
;
cggl.Ljava_util_Collections$UnmodifiableSet_2_classLit = createForClass('java.util', 'Collections/UnmodifiableSet', 638, cggl.Ljava_util_Collections$UnmodifiableCollection_2_classLit);
ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet = function $clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet(){
  ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet = emptyMethod;
}
;
defineClass(1137, 638, {1:1, 38:1, 79:1});
cggl.Ljava_util_Collections$UnmodifiableMap$UnmodifiableEntrySet_2_classLit = createForClass('java.util', 'Collections/UnmodifiableMap/UnmodifiableEntrySet', 1137, cggl.Ljava_util_Collections$UnmodifiableSet_2_classLit);
ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$1 = function $clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$1(){
  ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$1 = emptyMethod;
}
;
defineClass(1142, 1, {1:1, 46:1});
cggl.Ljava_util_Collections$UnmodifiableMap$UnmodifiableEntrySet$1_2_classLit = createForClass('java.util', 'Collections/UnmodifiableMap/UnmodifiableEntrySet/1', 1142, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry = function $clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry(){
  ju.$clinit_Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry = emptyMethod;
}
;
defineClass(1138, 1, {1:1, 45:1});
cggl.Ljava_util_Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry_2_classLit = createForClass('java.util', 'Collections/UnmodifiableMap/UnmodifiableEntrySet/UnmodifiableEntry', 1138, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Collections$UnmodifiableRandomAccessList = function $clinit_Collections$UnmodifiableRandomAccessList(){
  ju.$clinit_Collections$UnmodifiableRandomAccessList = emptyMethod;
  ju.$clinit_Collections$UnmodifiableList();
}
;
ju.Collections$UnmodifiableRandomAccessList = function Collections$UnmodifiableRandomAccessList(list){
  ju.$clinit_Collections$UnmodifiableRandomAccessList();
  ju.Collections$UnmodifiableList.call(this, list);
  this.$init_669();
}
;
defineClass(639, 280, {1:1, 38:1, 57:1, 143:1}, ju.Collections$UnmodifiableRandomAccessList);
_.$init_669 = function $init_669(){
}
;
cggl.Ljava_util_Collections$UnmodifiableRandomAccessList_2_classLit = createForClass('java.util', 'Collections/UnmodifiableRandomAccessList', 639, cggl.Ljava_util_Collections$UnmodifiableList_2_classLit);
ju.$clinit_Collections$UnmodifiableSortedMap = function $clinit_Collections$UnmodifiableSortedMap(){
  ju.$clinit_Collections$UnmodifiableSortedMap = emptyMethod;
}
;
defineClass(1139, 1136, {1:1, 72:1});
cggl.Ljava_util_Collections$UnmodifiableSortedMap_2_classLit = createForClass('java.util', 'Collections/UnmodifiableSortedMap', 1139, cggl.Ljava_util_Collections$UnmodifiableMap_2_classLit);
ju.$clinit_Collections$UnmodifiableSortedSet = function $clinit_Collections$UnmodifiableSortedSet(){
  ju.$clinit_Collections$UnmodifiableSortedSet = emptyMethod;
}
;
defineClass(1140, 638, {1:1, 38:1, 79:1});
cggl.Ljava_util_Collections$UnmodifiableSortedSet_2_classLit = createForClass('java.util', 'Collections/UnmodifiableSortedSet', 1140, cggl.Ljava_util_Collections$UnmodifiableSet_2_classLit);
ju.$clinit_Comparator$lambda$0$Type = function $clinit_Comparator$lambda$0$Type(){
  ju.$clinit_Comparator$lambda$0$Type = emptyMethod;
}
;
defineClass(870, 1, {4:1, 1:1, 50:1});
cggl.Ljava_util_Comparator$lambda$0$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$0$Type', 870, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparator$lambda$1$Type = function $clinit_Comparator$lambda$1$Type(){
  ju.$clinit_Comparator$lambda$1$Type = emptyMethod;
}
;
defineClass(871, 1, {4:1, 1:1, 50:1});
cggl.Ljava_util_Comparator$lambda$1$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$1$Type', 871, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparator$lambda$2$Type = function $clinit_Comparator$lambda$2$Type(){
  ju.$clinit_Comparator$lambda$2$Type = emptyMethod;
}
;
ju.Comparator$lambda$2$Type = function Comparator$lambda$2$Type(keyExtractor_0){
  ju.$clinit_Comparator$lambda$2$Type();
  this.keyExtractor_0 = keyExtractor_0;
}
;
defineClass(415, 1, {4:1, 1:1, 50:1}, ju.Comparator$lambda$2$Type);
_.compare_0 = function compare_32(a, b){
  return ju.lambda$2(this.keyExtractor_0, a, b);
}
;
_.equals_0 = function equals_42(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
cggl.Ljava_util_Comparator$lambda$2$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$2$Type', 415, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparator$lambda$3$Type = function $clinit_Comparator$lambda$3$Type(){
  ju.$clinit_Comparator$lambda$3$Type = emptyMethod;
}
;
defineClass(872, 1, {4:1, 1:1, 50:1});
cggl.Ljava_util_Comparator$lambda$3$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$3$Type', 872, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparator$lambda$4$Type = function $clinit_Comparator$lambda$4$Type(){
  ju.$clinit_Comparator$lambda$4$Type = emptyMethod;
}
;
defineClass(873, 1, {4:1, 1:1, 50:1});
cggl.Ljava_util_Comparator$lambda$4$Type_2_classLit = createForClass('java.util', 'Comparator/lambda$4$Type', 873, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators = function $clinit_Comparators(){
  ju.$clinit_Comparators = emptyMethod;
  jl.$clinit_Object();
  ju.INTERNAL_NATURAL_ORDER = new ju.Comparators$NaturalOrderComparator;
  ju.NATURAL_ORDER = new ju.Comparators$NaturalOrderComparator;
  ju.REVERSE_NATURAL_ORDER = new ju.Comparators$ReverseNaturalOrderComparator;
}
;
ju.nullToNaturalOrder = function nullToNaturalOrder(cmp){
  ju.$clinit_Comparators();
  return isNull(cmp)?castTo(ju.INTERNAL_NATURAL_ORDER, 50):cmp;
}
;
defineClass(1150, 1, {1:1});
cggl.Ljava_util_Comparators_2_classLit = createForClass('java.util', 'Comparators', 1150, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators$NaturalOrderComparator = function $clinit_Comparators$NaturalOrderComparator(){
  ju.$clinit_Comparators$NaturalOrderComparator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
ju.Comparators$NaturalOrderComparator = function Comparators$NaturalOrderComparator(){
  ju.$clinit_Comparators$NaturalOrderComparator();
  Object_0.call(this);
  this.$init_670();
}
;
defineClass(348, 1, {4:1, 1:1, 50:1}, ju.Comparators$NaturalOrderComparator);
_.$init_670 = function $init_670(){
}
;
_.compare_0 = function compare_34(a, b){
  return this.compare_8(castTo(a, 10), castTo(b, 10));
}
;
_.equals_0 = function equals_43(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_8 = function compare_33(a, b){
  return jl.compareTo_Ljava_lang_Object__I__devirtual$_0(castTo(ji2.checkNotNull_0(a), 10), ji2.checkNotNull_0(b));
}
;
cggl.Ljava_util_Comparators$NaturalOrderComparator_2_classLit = createForClass('java.util', 'Comparators/NaturalOrderComparator', 348, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators$NullComparator = function $clinit_Comparators$NullComparator(){
  ju.$clinit_Comparators$NullComparator = emptyMethod;
}
;
defineClass(1152, 1, {4:1, 1:1, 50:1});
cggl.Ljava_util_Comparators$NullComparator_2_classLit = createForClass('java.util', 'Comparators/NullComparator', 1152, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators$ReverseNaturalOrderComparator = function $clinit_Comparators$ReverseNaturalOrderComparator(){
  ju.$clinit_Comparators$ReverseNaturalOrderComparator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Comparator();
}
;
ju.Comparators$ReverseNaturalOrderComparator = function Comparators$ReverseNaturalOrderComparator(){
  ju.$clinit_Comparators$ReverseNaturalOrderComparator();
  Object_0.call(this);
  this.$init_671();
}
;
defineClass(650, 1, {4:1, 1:1, 50:1}, ju.Comparators$ReverseNaturalOrderComparator);
_.$init_671 = function $init_671(){
}
;
_.compare_0 = function compare_36(a, b){
  return this.compare_8(castTo(a, 10), castTo(b, 10));
}
;
_.equals_0 = function equals_44(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
_.compare_8 = function compare_35(a, b){
  return jl.compareTo_Ljava_lang_Object__I__devirtual$_0(castTo(ji2.checkNotNull_0(b), 10), ji2.checkNotNull_0(a));
}
;
cggl.Ljava_util_Comparators$ReverseNaturalOrderComparator_2_classLit = createForClass('java.util', 'Comparators/ReverseNaturalOrderComparator', 650, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Comparators$ReversedComparator = function $clinit_Comparators$ReversedComparator(){
  ju.$clinit_Comparators$ReversedComparator = emptyMethod;
}
;
defineClass(1151, 1, {4:1, 1:1, 50:1});
cggl.Ljava_util_Comparators$ReversedComparator_2_classLit = createForClass('java.util', 'Comparators/ReversedComparator', 1151, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_ConcurrentModificationException = function $clinit_ConcurrentModificationException(){
  ju.$clinit_ConcurrentModificationException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
ju.ConcurrentModificationException = function ConcurrentModificationException(){
  ju.$clinit_ConcurrentModificationException();
  jl.RuntimeException.call(this);
  this.$init_672();
}
;
defineClass(382, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, ju.ConcurrentModificationException);
_.$init_672 = function $init_672(){
}
;
cggl.Ljava_util_ConcurrentModificationException_2_classLit = createForClass('java.util', 'ConcurrentModificationException', 382, cggl.Ljava_lang_RuntimeException_2_classLit);
ju.$clinit_Enumeration$1 = function $clinit_Enumeration$1(){
  ju.$clinit_Enumeration$1 = emptyMethod;
}
;
defineClass(1144, 1, {1:1, 46:1});
cggl.Ljava_util_Enumeration$1_2_classLit = createForClass('java.util', 'Enumeration/1', 1144, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_HashMap = function $clinit_HashMap(){
  ju.$clinit_HashMap = emptyMethod;
  ju.$clinit_AbstractHashMap();
}
;
ju.HashMap = function HashMap(){
  ju.$clinit_HashMap();
  ju.AbstractHashMap.call(this);
  this.$init_673();
}
;
ju.HashMap_0 = function HashMap_0(ignored){
  ju.$clinit_HashMap();
  ju.AbstractHashMap_0.call(this, ignored);
  this.$init_673();
}
;
defineClass(75, 271, {4:1, 1:1, 72:1}, ju.HashMap, ju.HashMap_0);
_.$init_673 = function $init_673(){
}
;
_.equals_4 = function equals_45(value1, value2){
  return ju.equals_46(value1, value2);
}
;
_.getHashCode = function getHashCode(key){
  var hashCode;
  if (jsEquals(key, null)) {
    return 0;
  }
  hashCode = jl.hashCode__I__devirtual$(key);
  return ji2.ensureInt(hashCode);
}
;
cggl.Ljava_util_HashMap_2_classLit = createForClass('java.util', 'HashMap', 75, cggl.Ljava_util_AbstractHashMap_2_classLit);
ju.$clinit_HashSet = function $clinit_HashSet(){
  ju.$clinit_HashSet = emptyMethod;
  ju.$clinit_AbstractSet();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
}
;
ju.HashSet = function HashSet(){
  ju.$clinit_HashSet();
  ju.AbstractSet.call(this);
  this.$init_674();
  this.map_0 = new ju.HashMap;
}
;
ju.HashSet_0 = function HashSet_0(initialCapacity){
  ju.$clinit_HashSet();
  ju.AbstractSet.call(this);
  this.$init_674();
  this.map_0 = new ju.HashMap_0(initialCapacity);
}
;
defineClass(140, 115, {4:1, 1:1, 38:1, 79:1}, ju.HashSet, ju.HashSet_0);
_.$init_674 = function $init_674(){
}
;
_.add = function add_36(o){
  var old;
  old = this.map_0.put(o, this);
  return jsEquals(old, null);
}
;
_.clear = function clear_25(){
  this.map_0.clear();
}
;
_.contains = function contains_22(o){
  return this.map_0.containsKey(o);
}
;
_.isEmpty = function isEmpty_9(){
  return this.map_0.isEmpty();
}
;
_.iterator = function iterator_18(){
  return this.map_0.keySet().iterator();
}
;
_.remove = function remove_41(o){
  return jsNotEquals(this.map_0.remove(o), null);
}
;
_.size = function size_22(){
  return this.map_0.size();
}
;
cggl.Ljava_util_HashSet_2_classLit = createForClass('java.util', 'HashSet', 140, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_InternalHashCodeMap = function $clinit_InternalHashCodeMap(){
  ju.$clinit_InternalHashCodeMap = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
}
;
ju.InternalHashCodeMap = function InternalHashCodeMap(host){
  ju.$clinit_InternalHashCodeMap();
  Object_0.call(this);
  this.$init_675();
  this.host = host;
}
;
defineClass(655, 1, {1:1}, ju.InternalHashCodeMap);
_.$init_675 = function $init_675(){
  this.backingMap = ju.newJsMap();
}
;
_.forEach_0 = function forEach_5(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_11(){
  return jl.$spliterator(this);
}
;
_.findEntryInChain = function findEntryInChain(key, chain){
  var entry, entry$array, entry$index, entry$max;
  for (entry$array = chain , entry$index = 0 , entry$max = entry$array.length; entry$index < entry$max; ++entry$index) {
    entry = entry$array[entry$index];
    if (this.host.equals_4(key, entry.getKey())) {
      return entry;
    }
  }
  return null;
}
;
_.getChainOrEmpty = function getChainOrEmpty(hashCode){
  var chain;
  chain = ji2.uncheckedCast(this.backingMap.get(hashCode));
  return jsEquals(chain, null)?this.newEntryChain():chain;
}
;
_.getEntry_0 = function getEntry(key){
  return this.findEntryInChain(key, this.getChainOrEmpty(this.hash_0(key)));
}
;
_.hash_0 = function hash(key){
  return this.host.getHashCode(key);
}
;
_.iterator = function iterator_19(){
  return new ju.InternalHashCodeMap$1(this);
}
;
_.newEntryChain = function newEntryChain(){
  ju.$clinit_InternalHashCodeMap();
  return ji2.uncheckedCast(initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 7:1}, 1, 0, 5, 1));
}
;
_.put_1 = function put_2(key, value_0){
  var chain, entry, hashCode;
  hashCode = this.hash_0(key);
  chain = this.getChainOrEmpty(hashCode);
  if (chain.length == 0) {
    this.backingMap.set(hashCode, chain);
  }
   else {
    entry = this.findEntryInChain(key, chain);
    if (isNotNull(entry)) {
      return entry.setValue_3(value_0);
    }
  }
  setCheck(chain, chain.length, new ju.AbstractMap$SimpleEntry(key, value_0));
  this.size_0++;
  this.host.structureChanged();
  return null;
}
;
_.remove_7 = function remove_42(key){
  var chain, entry, hashCode, i;
  hashCode = this.hash_0(key);
  chain = this.getChainOrEmpty(hashCode);
  for (i = 0; i < chain.length; i++) {
    entry = chain[i];
    if (this.host.equals_4(key, entry.getKey())) {
      if (chain.length == 1) {
        ji2.setLength_0(chain, 0);
        ju.$delete(this.backingMap, hashCode);
      }
       else {
        ji2.removeFrom(chain, i, 1);
      }
      this.size_0--;
      this.host.structureChanged();
      return entry.getValue_1();
    }
  }
  return null;
}
;
_.size_1 = function size_23(){
  return this.size_0;
}
;
_.size_0 = 0;
cggl.Ljava_util_InternalHashCodeMap_2_classLit = createForClass('java.util', 'InternalHashCodeMap', 655, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalHashCodeMap$1 = function $clinit_InternalHashCodeMap$1(){
  ju.$clinit_InternalHashCodeMap$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.InternalHashCodeMap$1 = function InternalHashCodeMap$1(this$0){
  ju.$clinit_InternalHashCodeMap$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_676();
}
;
defineClass(656, 1, {1:1, 46:1}, ju.InternalHashCodeMap$1);
_.$init_676 = function $init_676(){
  this.chains = this.this$01.backingMap.entries();
  this.itemIndex = 0;
  this.chain = this.this$01.newEntryChain();
  this.lastEntry = null;
}
;
_.forEachRemaining = function forEachRemaining_14(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_20(){
  return this.next_5();
}
;
_.hasNext_0 = function hasNext_12(){
  var current;
  if (this.itemIndex < this.chain.length) {
    return true;
  }
  current = this.chains.next();
  if (!current.done) {
    this.chain = ji2.uncheckedCast(ju.$getValue_3(current));
    this.itemIndex = 0;
    return true;
  }
  return false;
}
;
_.next_5 = function next_21(){
  this.lastEntry = this.chain[this.itemIndex++];
  return this.lastEntry;
}
;
_.remove_4 = function remove_43(){
  this.this$01.remove_7(this.lastEntry.getKey());
  if (this.itemIndex != 0) {
    this.itemIndex--;
  }
}
;
_.itemIndex = 0;
cggl.Ljava_util_InternalHashCodeMap$1_2_classLit = createForClass('java.util', 'InternalHashCodeMap/1', 656, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalJsMap = function $clinit_InternalJsMap(){
  ju.$clinit_InternalJsMap = emptyMethod;
}
;
ju.$delete = function $delete(this$static, key){
  ju.$clinit_InternalJsMap();
  var fn;
  fn = ji2.getProperty(this$static, 'delete');
  fn.call(this$static, key);
}
;
ju.$delete_0 = function $delete_0(this$static, key){
  ju.$clinit_InternalJsMap();
  var fn;
  fn = ji2.getProperty(this$static, 'delete');
  fn.call(this$static, key);
}
;
ju.$clinit_InternalJsMap$DeleteFunction = function $clinit_InternalJsMap$DeleteFunction(){
  ju.$clinit_InternalJsMap$DeleteFunction = emptyMethod;
}
;
ju.$clinit_InternalJsMap$Iterator = function $clinit_InternalJsMap$Iterator(){
  ju.$clinit_InternalJsMap$Iterator = emptyMethod;
}
;
ju.$clinit_InternalJsMap$IteratorEntry = function $clinit_InternalJsMap$IteratorEntry(){
  ju.$clinit_InternalJsMap$IteratorEntry = emptyMethod;
}
;
ju.$getKey = function $getKey(this$static){
  ju.$clinit_InternalJsMap$IteratorEntry();
  return ji2.uncheckedCast(this$static.value[0]);
}
;
ju.$getValue_3 = function $getValue_3(this$static){
  ju.$clinit_InternalJsMap$IteratorEntry();
  return ji2.uncheckedCast(this$static.value[1]);
}
;
ju.$clinit_InternalJsMapFactory = function $clinit_InternalJsMapFactory(){
  ju.$clinit_InternalJsMapFactory = emptyMethod;
  jl.$clinit_Object();
  ju.jsMapCtor = ju.getJsMapConstructor();
}
;
ju.canHandleObjectCreateAndProto = function canHandleObjectCreateAndProto(){
  if (!Object.create || !Object.getOwnPropertyNames) {
    return false;
  }
  var protoField = '__proto__';
  var map_0 = Object.create(null);
  if (map_0[protoField] !== undefined) {
    return false;
  }
  var keys_0 = Object.getOwnPropertyNames(map_0);
  if (keys_0.length != 0) {
    return false;
  }
  map_0[protoField] = 42;
  if (map_0[protoField] !== 42) {
    return false;
  }
  if (Object.getOwnPropertyNames(map_0).length == 0) {
    return false;
  }
  return true;
}
;
ju.getJsMapConstructor = function getJsMapConstructor(){
  function isCorrectIterationProtocol(){
    try {
      return (new Map).entries().next().done;
    }
     catch (e) {
      return false;
    }
  }

  if (typeof Map === 'function' && (Map.prototype.entries && isCorrectIterationProtocol())) {
    return Map;
  }
   else {
    return ju.getJsMapPolyFill();
  }
}
;
ju.getJsMapPolyFill = function getJsMapPolyFill(){
  function Stringmap(){
    this.obj = this.createObject();
  }

  ;
  Stringmap.prototype.createObject = function(key){
    return Object.create(null);
  }
  ;
  Stringmap.prototype.get = function(key){
    return this.obj[key];
  }
  ;
  Stringmap.prototype.set = function(key, value_0){
    this.obj[key] = value_0;
  }
  ;
  Stringmap.prototype['delete'] = function(key){
    delete this.obj[key];
  }
  ;
  Stringmap.prototype.keys = function(){
    return Object.getOwnPropertyNames(this.obj);
  }
  ;
  Stringmap.prototype.entries = function(){
    var keys_0 = this.keys();
    var map_0 = this;
    var nextIndex = 0;
    return {next:function(){
      if (nextIndex >= keys_0.length)
        return {done:true};
      var key = keys_0[nextIndex++];
      return {value:[key, map_0.get(key)], done:false};
    }
    };
  }
  ;
  if (!ju.canHandleObjectCreateAndProto()) {
    Stringmap.prototype.createObject = function(){
      return {};
    }
    ;
    Stringmap.prototype.get = function(key){
      return this.obj[':' + key];
    }
    ;
    Stringmap.prototype.set = function(key, value_0){
      this.obj[':' + key] = value_0;
    }
    ;
    Stringmap.prototype['delete'] = function(key){
      delete this.obj[':' + key];
    }
    ;
    Stringmap.prototype.keys = function(){
      var result = [];
      for (var key in this.obj) {
        if (key.charCodeAt(0) == 58) {
          result.push(key.substring(1));
        }
      }
      return result;
    }
    ;
  }
  return Stringmap;
}
;
ju.newJsMap = function newJsMap(){
  ju.$clinit_InternalJsMapFactory();
  return new ju.jsMapCtor;
}
;
defineClass(1221, 1, {1:1});
cggl.Ljava_util_InternalJsMapFactory_2_classLit = createForClass('java.util', 'InternalJsMapFactory', 1221, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalStringMap = function $clinit_InternalStringMap(){
  ju.$clinit_InternalStringMap = emptyMethod;
  jl.$clinit_Object();
  jl.$clinit_Iterable();
}
;
ju.InternalStringMap = function InternalStringMap(host){
  ju.$clinit_InternalStringMap();
  Object_0.call(this);
  this.$init_677();
  this.host = host;
}
;
ju.toNullIfUndefined = function toNullIfUndefined(value_0){
  return ji2.isUndefined(value_0)?null:value_0;
}
;
defineClass(651, 1, {1:1}, ju.InternalStringMap);
_.$init_677 = function $init_677(){
  this.backingMap = ju.newJsMap();
}
;
_.forEach_0 = function forEach_6(action){
  jl.$forEach(this, action);
}
;
_.spliterator_0 = function spliterator_12(){
  return jl.$spliterator(this);
}
;
_.contains_1 = function contains_23(key){
  return !ji2.isUndefined(this.backingMap.get(key));
}
;
_.get_6 = function get_39(key){
  return this.backingMap.get(key);
}
;
_.iterator = function iterator_20(){
  return new ju.InternalStringMap$1(this);
}
;
_.newMapEntry = function newMapEntry(entry, lastValueMod){
  ju.$clinit_InternalStringMap();
  return new ju.InternalStringMap$2(this, entry, lastValueMod);
}
;
_.put_2 = function put_3(key, value_0){
  var oldValue;
  oldValue = this.backingMap.get(key);
  this.backingMap.set(key, ju.toNullIfUndefined(value_0));
  if (ji2.isUndefined(oldValue)) {
    this.size_0++;
    this.host.structureChanged();
  }
   else {
    this.valueMod++;
  }
  return oldValue;
}
;
_.remove_8 = function remove_44(key){
  var value_0;
  value_0 = this.backingMap.get(key);
  if (!ji2.isUndefined(value_0)) {
    ju.$delete_0(this.backingMap, key);
    this.size_0--;
    this.host.structureChanged();
  }
   else {
    this.valueMod++;
  }
  return value_0;
}
;
_.size_1 = function size_24(){
  return this.size_0;
}
;
_.size_0 = 0;
_.valueMod = 0;
cggl.Ljava_util_InternalStringMap_2_classLit = createForClass('java.util', 'InternalStringMap', 651, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalStringMap$1 = function $clinit_InternalStringMap$1(){
  ju.$clinit_InternalStringMap$1 = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.InternalStringMap$1 = function InternalStringMap$1(this$0){
  ju.$clinit_InternalStringMap$1();
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_678();
}
;
defineClass(652, 1, {1:1, 46:1}, ju.InternalStringMap$1);
_.$init_678 = function $init_678(){
  this.entries_0 = this.this$01.backingMap.entries();
  this.current = this.entries_0.next();
}
;
_.forEachRemaining = function forEachRemaining_15(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_22(){
  return this.next_5();
}
;
_.hasNext_0 = function hasNext_13(){
  return !this.current.done;
}
;
_.next_5 = function next_23(){
  this.last = this.current;
  this.current = this.entries_0.next();
  return this.this$01.newMapEntry(this.last, this.this$01.valueMod);
}
;
_.remove_4 = function remove_45(){
  this.this$01.remove_8(ju.$getKey(this.last));
}
;
cggl.Ljava_util_InternalStringMap$1_2_classLit = createForClass('java.util', 'InternalStringMap/1', 652, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_InternalStringMap$2 = function $clinit_InternalStringMap$2(){
  ju.$clinit_InternalStringMap$2 = emptyMethod;
  ju.$clinit_AbstractMapEntry();
}
;
ju.InternalStringMap$2 = function InternalStringMap$2(this$0, val$entry, val$lastValueMod){
  ju.$clinit_InternalStringMap$2();
  this.this$01 = this$0;
  this.val$entry2 = val$entry;
  this.val$lastValueMod3 = val$lastValueMod;
  ju.AbstractMapEntry.call(this);
  this.$init_679();
}
;
defineClass(654, 653, {1:1, 45:1}, ju.InternalStringMap$2);
_.$init_679 = function $init_679(){
}
;
_.getKey = function getKey_0(){
  return ju.$getKey(this.val$entry2);
}
;
_.getValue_1 = function getValue_11(){
  if (this.this$01.valueMod != this.val$lastValueMod3) {
    return this.this$01.get_6(ju.$getKey(this.val$entry2));
  }
  return ju.$getValue_3(this.val$entry2);
}
;
_.setValue_3 = function setValue_5(object){
  return this.this$01.put_2(ju.$getKey(this.val$entry2), object);
}
;
_.val$lastValueMod3 = 0;
cggl.Ljava_util_InternalStringMap$2_2_classLit = createForClass('java.util', 'InternalStringMap/2', 654, cggl.Ljava_util_AbstractMapEntry_2_classLit);
ju.$clinit_Locale = function $clinit_Locale(){
  ju.$clinit_Locale = emptyMethod;
  jl.$clinit_Object();
  ju.ROOT = new ju.Locale$1;
  ju.ENGLISH = new ju.Locale$2;
  ju.US = new ju.Locale$3;
  ju.defaultLocale = new ju.Locale$4;
}
;
ju.Locale = function Locale(){
  ju.$clinit_Locale();
  Object_0.call(this);
  this.$init_680();
}
;
ju.getDefault_0 = function getDefault_0(){
  ju.$clinit_Locale();
  return ju.defaultLocale;
}
;
defineClass(210, 1, {1:1});
_.$init_680 = function $init_680(){
}
;
cggl.Ljava_util_Locale_2_classLit = createForClass('java.util', 'Locale', 210, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Locale$1 = function $clinit_Locale$1(){
  ju.$clinit_Locale$1 = emptyMethod;
  ju.$clinit_Locale();
}
;
ju.Locale$1 = function Locale$1(){
  ju.$clinit_Locale$1();
  ju.Locale.call(this);
  this.$init_681();
}
;
defineClass(416, 210, {1:1}, ju.Locale$1);
_.$init_681 = function $init_681(){
}
;
_.toString_0 = function toString_63(){
  return '';
}
;
cggl.Ljava_util_Locale$1_2_classLit = createForClass('java.util', 'Locale/1', 416, cggl.Ljava_util_Locale_2_classLit);
ju.$clinit_Locale$2 = function $clinit_Locale$2(){
  ju.$clinit_Locale$2 = emptyMethod;
  ju.$clinit_Locale();
}
;
ju.Locale$2 = function Locale$2(){
  ju.$clinit_Locale$2();
  ju.Locale.call(this);
  this.$init_682();
}
;
defineClass(417, 210, {1:1}, ju.Locale$2);
_.$init_682 = function $init_682(){
}
;
_.toString_0 = function toString_64(){
  return 'en';
}
;
cggl.Ljava_util_Locale$2_2_classLit = createForClass('java.util', 'Locale/2', 417, cggl.Ljava_util_Locale_2_classLit);
ju.$clinit_Locale$3 = function $clinit_Locale$3(){
  ju.$clinit_Locale$3 = emptyMethod;
  ju.$clinit_Locale();
}
;
ju.Locale$3 = function Locale$3(){
  ju.$clinit_Locale$3();
  ju.Locale.call(this);
  this.$init_683();
}
;
defineClass(418, 210, {1:1}, ju.Locale$3);
_.$init_683 = function $init_683(){
}
;
_.toString_0 = function toString_65(){
  return 'en_US';
}
;
cggl.Ljava_util_Locale$3_2_classLit = createForClass('java.util', 'Locale/3', 418, cggl.Ljava_util_Locale_2_classLit);
ju.$clinit_Locale$4 = function $clinit_Locale$4(){
  ju.$clinit_Locale$4 = emptyMethod;
  ju.$clinit_Locale();
}
;
ju.Locale$4 = function Locale$4(){
  ju.$clinit_Locale$4();
  ju.Locale.call(this);
  this.$init_684();
}
;
defineClass(419, 210, {1:1}, ju.Locale$4);
_.$init_684 = function $init_684(){
}
;
_.toString_0 = function toString_66(){
  return 'unknown';
}
;
cggl.Ljava_util_Locale$4_2_classLit = createForClass('java.util', 'Locale/4', 419, cggl.Ljava_util_Locale_2_classLit);
ju.$clinit_Map$Entry$lambda$0$Type = function $clinit_Map$Entry$lambda$0$Type(){
  ju.$clinit_Map$Entry$lambda$0$Type = emptyMethod;
}
;
defineClass(973, 1, {4:1, 1:1, 50:1});
cggl.Ljava_util_Map$Entry$lambda$0$Type_2_classLit = createForClass('java.util', 'Map/Entry/lambda$0$Type', 973, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Map$Entry$lambda$1$Type = function $clinit_Map$Entry$lambda$1$Type(){
  ju.$clinit_Map$Entry$lambda$1$Type = emptyMethod;
}
;
defineClass(974, 1, {4:1, 1:1, 50:1});
cggl.Ljava_util_Map$Entry$lambda$1$Type_2_classLit = createForClass('java.util', 'Map/Entry/lambda$1$Type', 974, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_NoSuchElementException = function $clinit_NoSuchElementException(){
  ju.$clinit_NoSuchElementException = emptyMethod;
  jl.$clinit_RuntimeException();
}
;
ju.NoSuchElementException = function NoSuchElementException(){
  ju.$clinit_NoSuchElementException();
  jl.RuntimeException.call(this);
  this.$init_685();
}
;
defineClass(159, 23, {4:1, 14:1, 1:1, 23:1, 20:1}, ju.NoSuchElementException);
_.$init_685 = function $init_685(){
}
;
cggl.Ljava_util_NoSuchElementException_2_classLit = createForClass('java.util', 'NoSuchElementException', 159, cggl.Ljava_lang_RuntimeException_2_classLit);
ju.$clinit_Objects = function $clinit_Objects(){
  ju.$clinit_Objects = emptyMethod;
  jl.$clinit_Object();
}
;
ju.equals_46 = function equals_46(a, b){
  ju.$clinit_Objects();
  return maskUndefined(a) === maskUndefined(b) || jsNotEquals(a, null) && jl.equals_Ljava_lang_Object__Z__devirtual$(a, b);
}
;
ju.equals_47 = function equals_47(a, b){
  ju.$clinit_Objects();
  return jsEquals(a, b);
}
;
ju.hash_0 = function hash_0(values){
  ju.$clinit_Objects();
  return ju.hashCode_34(values);
}
;
ju.hashCode_39 = function hashCode_39(o){
  ju.$clinit_Objects();
  return jsNotEquals(o, null)?jl.hashCode__I__devirtual$(o):0;
}
;
defineClass(1153, 1, {1:1});
cggl.Ljava_util_Objects_2_classLit = createForClass('java.util', 'Objects', 1153, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_PrimitiveIterator$OfDouble = function $clinit_PrimitiveIterator$OfDouble(){
  ju.$clinit_PrimitiveIterator$OfDouble = emptyMethod;
}
;
cggl.Ljava_util_PrimitiveIterator$OfDouble_2_classLit = createForInterface('java.util', 'PrimitiveIterator/OfDouble');
juf.$clinit_DoubleConsumer = function $clinit_DoubleConsumer(){
  juf.$clinit_DoubleConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_DoubleConsumer_2_classLit = createForInterface('java.util.function', 'DoubleConsumer');
ju.$clinit_PrimitiveIterator$OfDouble$0methodref$accept$Type = function $clinit_PrimitiveIterator$OfDouble$0methodref$accept$Type(){
  ju.$clinit_PrimitiveIterator$OfDouble$0methodref$accept$Type = emptyMethod;
}
;
defineClass(827, 1, {1:1});
cggl.Ljava_util_PrimitiveIterator$OfDouble$0methodref$accept$Type_2_classLit = createForClass('java.util', 'PrimitiveIterator/OfDouble/0methodref$accept$Type', 827, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntConsumer = function $clinit_IntConsumer(){
  juf.$clinit_IntConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_IntConsumer_2_classLit = createForInterface('java.util.function', 'IntConsumer');
ju.$clinit_PrimitiveIterator$OfInt$1methodref$accept$Type = function $clinit_PrimitiveIterator$OfInt$1methodref$accept$Type(){
  ju.$clinit_PrimitiveIterator$OfInt$1methodref$accept$Type = emptyMethod;
}
;
ju.PrimitiveIterator$OfInt$1methodref$accept$Type = function PrimitiveIterator$OfInt$1methodref$accept$Type($$outer_0){
  ju.$clinit_PrimitiveIterator$OfInt$1methodref$accept$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(406, 1, {1:1, 40:1}, ju.PrimitiveIterator$OfInt$1methodref$accept$Type);
_.accept_1 = function accept_5(arg0){
  this.$$outer_0.accept_0(jl.valueOf_26(arg0));
}
;
cggl.Ljava_util_PrimitiveIterator$OfInt$1methodref$accept$Type_2_classLit = createForClass('java.util', 'PrimitiveIterator/OfInt/1methodref$accept$Type', 406, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_PrimitiveIterator$OfLong = function $clinit_PrimitiveIterator$OfLong(){
  ju.$clinit_PrimitiveIterator$OfLong = emptyMethod;
}
;
cggl.Ljava_util_PrimitiveIterator$OfLong_2_classLit = createForInterface('java.util', 'PrimitiveIterator/OfLong');
juf.$clinit_LongConsumer = function $clinit_LongConsumer(){
  juf.$clinit_LongConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_LongConsumer_2_classLit = createForInterface('java.util.function', 'LongConsumer');
ju.$clinit_PrimitiveIterator$OfLong$2methodref$accept$Type = function $clinit_PrimitiveIterator$OfLong$2methodref$accept$Type(){
  ju.$clinit_PrimitiveIterator$OfLong$2methodref$accept$Type = emptyMethod;
}
;
defineClass(828, 1, {1:1});
cggl.Ljava_util_PrimitiveIterator$OfLong$2methodref$accept$Type_2_classLit = createForClass('java.util', 'PrimitiveIterator/OfLong/2methodref$accept$Type', 828, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Random = function $clinit_Random(){
  ju.$clinit_Random = emptyMethod;
  var i, i0, twoToTheXMinus24Tmp, twoToTheXMinus48Tmp;
  jl.$clinit_Object();
  ju.twoToTheXMinus24 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 25, 15, 1);
  ju.twoToTheXMinus48 = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 33, 15, 1);
  {
    twoToTheXMinus48Tmp = 1.52587890625E-5;
    for (i0 = 32; i0 >= 0; i0--) {
      ju.twoToTheXMinus48[i0] = twoToTheXMinus48Tmp;
      twoToTheXMinus48Tmp *= 0.5;
    }
    twoToTheXMinus24Tmp = 1;
    for (i = 24; i >= 0; i--) {
      ju.twoToTheXMinus24[i] = twoToTheXMinus24Tmp;
      twoToTheXMinus24Tmp *= 0.5;
    }
  }
}
;
ju.Random = function Random(){
  ju.$clinit_Random();
  var hi, lo, seed;
  Object_0.call(this);
  this.$init_686();
  seed = ju.uniqueSeed++ + Date.now();
  hi = round_int($wnd.Math.floor(seed * 5.960464477539063E-8)) & 16777215;
  lo = round_int(seed - hi * 16777216);
  this.setSeed(hi, lo);
}
;
ju.Random_0 = function Random_0(seed){
  ju.$clinit_Random();
  Object_0.call(this);
  this.$init_686();
  this.setSeed_0(seed);
}
;
defineClass(101, 1, {1:1}, ju.Random, ju.Random_0);
_.$init_686 = function $init_686(){
  this.haveNextNextGaussian = false;
}
;
_.nextDouble = function nextDouble(){
  return this.nextInternal(26) * 1.4901161193847656E-8 + this.nextInternal(27) * 1.1102230246251565E-16;
}
;
_.nextInt = function nextInt_0(){
  return round_int(this.nextInternal(32));
}
;
_.nextInt_0 = function nextInt_1(n){
  var bits, val;
  ji2.checkCriticalArgument_0(n > 0);
  if ((n & -n) == n) {
    return round_int(n * this.nextInternal(31) * 4.656612873077393E-10);
  }
  do {
    bits = this.nextInternal(31);
    val = bits % n;
  }
   while (bits - val + (n - 1) < 0);
  return round_int(val);
}
;
_.nextInternal = function nextInternal(bits){
  var carry, dval, h, hi, l, lo;
  hi = this.seedhi * 15525485 + this.seedlo * 1502;
  lo = this.seedlo * 15525485 + 11;
  carry = $wnd.Math.floor(lo * 5.960464477539063E-8);
  hi += carry;
  lo -= carry * 16777216;
  hi %= 16777216;
  this.seedhi = hi;
  this.seedlo = lo;
  if (bits <= 24) {
    return $wnd.Math.floor(this.seedhi * ju.twoToTheXMinus24[bits]);
  }
   else {
    h = this.seedhi * (1 << bits - 24);
    l = $wnd.Math.floor(this.seedlo * ju.twoToTheXMinus48[bits]);
    dval = h + l;
    if (dval >= 2147483648) {
      dval -= 4294967296;
    }
    return dval;
  }
}
;
_.setSeed = function setSeed(seedhi, seedlo){
  this.seedhi = seedhi ^ 1502;
  this.seedlo = seedlo ^ 15525485;
  this.haveNextNextGaussian = false;
}
;
_.setSeed_0 = function setSeed_0(seed){
  this.setSeed(toInt_0(and_0(shr_0(seed, 24), 16777215)), toInt_0(and_0(seed, 16777215)));
}
;
_.haveNextNextGaussian = false;
_.seedhi = 0;
_.seedlo = 0;
ju.multiplierHi = 1502;
ju.multiplierLo = 15525485;
ju.twoToThe24 = 16777216;
ju.twoToThe31 = 2147483648;
ju.twoToThe32 = 4294967296;
ju.twoToTheMinus24 = 5.960464477539063E-8;
ju.twoToTheMinus26 = 1.4901161193847656E-8;
ju.twoToTheMinus31 = 4.656612873077393E-10;
ju.twoToTheMinus53 = 1.1102230246251565E-16;
ju.uniqueSeed = 0;
cggl.Ljava_util_Random_2_classLit = createForClass('java.util', 'Random', 101, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator = function $clinit_Spliterator(){
  ju.$clinit_Spliterator = emptyMethod;
}
;
ju.$forEachRemaining_3 = function $forEachRemaining_3(this$static, consumer){
  while (this$static.tryAdvance(consumer)) {
  }
}
;
ju.CONCURRENT = 4096;
ju.DISTINCT = 1;
ju.IMMUTABLE = 1024;
ju.NONNULL = 256;
ju.ORDERED = 16;
ju.SIZED = 64;
ju.SORTED = 4;
ju.SUBSIZED = 16384;
cggl.Ljava_util_Spliterator_2_classLit = createForInterface('java.util', 'Spliterator');
ju.$clinit_Spliterators$IteratorSpliterator = function $clinit_Spliterators$IteratorSpliterator(){
  ju.$clinit_Spliterators$IteratorSpliterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Spliterator();
}
;
ju.Spliterators$IteratorSpliterator = function Spliterators$IteratorSpliterator(collection, characteristics){
  ju.$clinit_Spliterators$IteratorSpliterator();
  Object_0.call(this);
  this.$init_687();
  this.collection = castTo(ji2.checkNotNull_0(collection), 38);
  this.characteristics = ju.sizeKnownIteratorSpliteratorCharacteristics(characteristics);
}
;
ju.Spliterators$IteratorSpliterator_0 = function Spliterators$IteratorSpliterator_0(it, characteristics){
  ju.$clinit_Spliterators$IteratorSpliterator();
  Object_0.call(this);
  this.$init_687();
  this.it = castTo(ji2.checkNotNull_0(it), 46);
  this.characteristics = ju.sizeUnknownSpliteratorCharacteristics(characteristics);
  this.estimateSize = {l:4194303, m:4194303, h:524287};
}
;
defineClass(254, 1, {1:1, 27:1}, ju.Spliterators$IteratorSpliterator, ju.Spliterators$IteratorSpliterator_0);
_.$init_687 = function $init_687(){
}
;
_.characteristics_0 = function characteristics_0(){
  return this.characteristics;
}
;
_.estimateSize_0 = function estimateSize(){
  this.initIterator();
  return this.estimateSize;
}
;
_.forEachRemaining = function forEachRemaining_16(consumer){
  this.initIterator();
  this.it.forEachRemaining(consumer);
}
;
_.initIterator = function initIterator(){
  if (isNull(this.it)) {
    this.it = this.collection.iterator();
    this.estimateSize = fromInt_0(this.collection.size());
  }
}
;
_.tryAdvance = function tryAdvance(consumer){
  ji2.checkNotNull_0(consumer);
  this.initIterator();
  if (this.it.hasNext_0()) {
    consumer.accept_0(this.it.next_3());
    return true;
  }
  return false;
}
;
_.characteristics = 0;
_.estimateSize = 0;
cggl.Ljava_util_Spliterators$IteratorSpliterator_2_classLit = createForClass('java.util', 'Spliterators/IteratorSpliterator', 254, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_SortedSet$1 = function $clinit_SortedSet$1(){
  ju.$clinit_SortedSet$1 = emptyMethod;
  ju.$clinit_Spliterators$IteratorSpliterator();
}
;
ju.SortedSet$1 = function SortedSet$1(this$0, $anonymous0, $anonymous1){
  ju.$clinit_SortedSet$1();
  this.this$01 = this$0;
  ju.Spliterators$IteratorSpliterator.call(this, $anonymous0, $anonymous1);
  this.$init_688();
}
;
defineClass(611, 254, {1:1, 27:1}, ju.SortedSet$1);
_.$init_688 = function $init_688(){
}
;
cggl.Ljava_util_SortedSet$1_2_classLit = createForClass('java.util', 'SortedSet/1', 611, cggl.Ljava_util_Spliterators$IteratorSpliterator_2_classLit);
ju.$clinit_Spliterator$OfPrimitive = function $clinit_Spliterator$OfPrimitive(){
  ju.$clinit_Spliterator$OfPrimitive = emptyMethod;
}
;
ju.$forEachRemaining_5 = function $forEachRemaining_5(this$static, consumer){
  while (this$static.tryAdvance_0(consumer)) {
  }
}
;
cggl.Ljava_util_Spliterator$OfPrimitive_2_classLit = createForInterface('java.util', 'Spliterator/OfPrimitive');
ju.$clinit_Spliterator$OfDouble = function $clinit_Spliterator$OfDouble(){
  ju.$clinit_Spliterator$OfDouble = emptyMethod;
}
;
cggl.Ljava_util_Spliterator$OfDouble_2_classLit = createForInterface('java.util', 'Spliterator/OfDouble');
ju.$clinit_Spliterator$OfDouble$0methodref$accept$Type = function $clinit_Spliterator$OfDouble$0methodref$accept$Type(){
  ju.$clinit_Spliterator$OfDouble$0methodref$accept$Type = emptyMethod;
}
;
defineClass(862, 1, {1:1});
cggl.Ljava_util_Spliterator$OfDouble$0methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfDouble/0methodref$accept$Type', 862, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfDouble$1methodref$accept$Type = function $clinit_Spliterator$OfDouble$1methodref$accept$Type(){
  ju.$clinit_Spliterator$OfDouble$1methodref$accept$Type = emptyMethod;
}
;
defineClass(863, 1, {1:1});
cggl.Ljava_util_Spliterator$OfDouble$1methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfDouble/1methodref$accept$Type', 863, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfInt = function $clinit_Spliterator$OfInt(){
  ju.$clinit_Spliterator$OfInt = emptyMethod;
}
;
ju.$forEachRemaining_4 = function $forEachRemaining_4(this$static, consumer){
  if (instanceOf(consumer, 40)) {
    this$static.forEachRemaining_0(castTo(consumer, 40));
  }
   else {
    this$static.forEachRemaining_0(castTo(new ju.Spliterator$OfInt$3methodref$accept$Type(consumer), 40));
  }
}
;
ju.$tryAdvance = function $tryAdvance(this$static, consumer){
  if (instanceOf(consumer, 40)) {
    return this$static.tryAdvance_0(castTo(consumer, 40));
  }
   else {
    return this$static.tryAdvance_0(castTo(new ju.Spliterator$OfInt$2methodref$accept$Type(consumer), 40));
  }
}
;
cggl.Ljava_util_Spliterator$OfInt_2_classLit = createForInterface('java.util', 'Spliterator/OfInt');
ju.$clinit_Spliterator$OfInt$2methodref$accept$Type = function $clinit_Spliterator$OfInt$2methodref$accept$Type(){
  ju.$clinit_Spliterator$OfInt$2methodref$accept$Type = emptyMethod;
}
;
ju.Spliterator$OfInt$2methodref$accept$Type = function Spliterator$OfInt$2methodref$accept$Type($$outer_0){
  ju.$clinit_Spliterator$OfInt$2methodref$accept$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(413, 1, {1:1, 40:1}, ju.Spliterator$OfInt$2methodref$accept$Type);
_.accept_1 = function accept_6(arg0){
  this.$$outer_0.accept_0(jl.valueOf_26(arg0));
}
;
cggl.Ljava_util_Spliterator$OfInt$2methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfInt/2methodref$accept$Type', 413, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfInt$3methodref$accept$Type = function $clinit_Spliterator$OfInt$3methodref$accept$Type(){
  ju.$clinit_Spliterator$OfInt$3methodref$accept$Type = emptyMethod;
}
;
ju.Spliterator$OfInt$3methodref$accept$Type = function Spliterator$OfInt$3methodref$accept$Type($$outer_0){
  ju.$clinit_Spliterator$OfInt$3methodref$accept$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(414, 1, {1:1, 40:1}, ju.Spliterator$OfInt$3methodref$accept$Type);
_.accept_1 = function accept_7(arg0){
  this.$$outer_0.accept_0(jl.valueOf_26(arg0));
}
;
cggl.Ljava_util_Spliterator$OfInt$3methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfInt/3methodref$accept$Type', 414, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfLong = function $clinit_Spliterator$OfLong(){
  ju.$clinit_Spliterator$OfLong = emptyMethod;
}
;
cggl.Ljava_util_Spliterator$OfLong_2_classLit = createForInterface('java.util', 'Spliterator/OfLong');
ju.$clinit_Spliterator$OfLong$4methodref$accept$Type = function $clinit_Spliterator$OfLong$4methodref$accept$Type(){
  ju.$clinit_Spliterator$OfLong$4methodref$accept$Type = emptyMethod;
}
;
defineClass(864, 1, {1:1});
cggl.Ljava_util_Spliterator$OfLong$4methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfLong/4methodref$accept$Type', 864, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterator$OfLong$5methodref$accept$Type = function $clinit_Spliterator$OfLong$5methodref$accept$Type(){
  ju.$clinit_Spliterator$OfLong$5methodref$accept$Type = emptyMethod;
}
;
defineClass(865, 1, {1:1});
cggl.Ljava_util_Spliterator$OfLong$5methodref$accept$Type_2_classLit = createForClass('java.util', 'Spliterator/OfLong/5methodref$accept$Type', 865, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators = function $clinit_Spliterators(){
  ju.$clinit_Spliterators = emptyMethod;
  jl.$clinit_Object();
}
;
ju.iterator_21 = function iterator_21(spliterator){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$IntConsumerIterator(spliterator);
}
;
ju.iterator_22 = function iterator_22(spliterator){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$ConsumerIterator(spliterator);
}
;
ju.sizeKnownIteratorSpliteratorCharacteristics = function sizeKnownIteratorSpliteratorCharacteristics(characteristics){
  ju.$clinit_Spliterators();
  return (characteristics & 4096) == 0?ju.sizeKnownSpliteratorCharacteristics(characteristics):characteristics;
}
;
ju.sizeKnownSpliteratorCharacteristics = function sizeKnownSpliteratorCharacteristics(characteristics){
  return characteristics | 64 | 16384;
}
;
ju.sizeUnknownSpliteratorCharacteristics = function sizeUnknownSpliteratorCharacteristics(characteristics){
  ju.$clinit_Spliterators();
  return characteristics & ~(64 | 16384);
}
;
ju.spliterator_13 = function spliterator_13(c, characteristics){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$IteratorSpliterator(c, characteristics);
}
;
ju.spliterator_14 = function spliterator_14(it, size_0, characteristics){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$IntIteratorSpliterator(it, size_0, characteristics);
}
;
ju.spliteratorUnknownSize = function spliteratorUnknownSize(it, characteristics){
  ju.$clinit_Spliterators();
  return new ju.Spliterators$IteratorSpliterator_0(it, characteristics);
}
;
defineClass(845, 1, {1:1});
cggl.Ljava_util_Spliterators_2_classLit = createForClass('java.util', 'Spliterators', 845, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$BaseSpliterator = function $clinit_Spliterators$BaseSpliterator(){
  ju.$clinit_Spliterators$BaseSpliterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Spliterator();
}
;
ju.Spliterators$BaseSpliterator = function Spliterators$BaseSpliterator(size_0, characteristics){
  ju.$clinit_Spliterators$BaseSpliterator();
  Object_0.call(this);
  this.$init_689();
  this.sizeEstimate = size_0;
  this.characteristics = (characteristics & 64) != 0?characteristics | 16384:characteristics;
}
;
defineClass(307, 1, {1:1, 27:1});
_.$init_689 = function $init_689(){
}
;
_.forEachRemaining = function forEachRemaining_17(consumer){
  ju.$forEachRemaining_3(this, consumer);
}
;
_.characteristics_0 = function characteristics_1(){
  return this.characteristics;
}
;
_.estimateSize_0 = function estimateSize_0(){
  return this.sizeEstimate;
}
;
_.characteristics = 0;
_.sizeEstimate = 0;
cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit = createForClass('java.util', 'Spliterators/BaseSpliterator', 307, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$AbstractDoubleSpliterator = function $clinit_Spliterators$AbstractDoubleSpliterator(){
  ju.$clinit_Spliterators$AbstractDoubleSpliterator = emptyMethod;
}
;
defineClass(846, 307, {1:1, 27:1});
cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit = createForClass('java.util', 'Spliterators/AbstractDoubleSpliterator', 846, cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit);
ju.$clinit_Spliterators$AbstractIntSpliterator = function $clinit_Spliterators$AbstractIntSpliterator(){
  ju.$clinit_Spliterators$AbstractIntSpliterator = emptyMethod;
  ju.$clinit_Spliterators$BaseSpliterator();
  ju.$clinit_Spliterator();
  ju.$clinit_Spliterator$OfPrimitive();
  ju.$clinit_Spliterator$OfInt();
}
;
ju.Spliterators$AbstractIntSpliterator = function Spliterators$AbstractIntSpliterator(size_0, characteristics){
  ju.$clinit_Spliterators$AbstractIntSpliterator();
  ju.Spliterators$BaseSpliterator.call(this, size_0, characteristics);
  this.$init_690();
}
;
defineClass(308, 307, {1:1, 27:1, 64:1});
_.$init_690 = function $init_690(){
}
;
_.forEachRemaining_0 = function forEachRemaining_18(consumer){
  ju.$forEachRemaining_5(this, consumer);
}
;
_.forEachRemaining = function forEachRemaining_19(consumer){
  ju.$forEachRemaining_4(this, consumer);
}
;
_.tryAdvance = function tryAdvance_0(consumer){
  return ju.$tryAdvance(this, consumer);
}
;
cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit = createForClass('java.util', 'Spliterators/AbstractIntSpliterator', 308, cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit);
ju.$clinit_Spliterators$AbstractLongSpliterator = function $clinit_Spliterators$AbstractLongSpliterator(){
  ju.$clinit_Spliterators$AbstractLongSpliterator = emptyMethod;
}
;
defineClass(847, 307, {1:1, 27:1});
cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit = createForClass('java.util', 'Spliterators/AbstractLongSpliterator', 847, cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit);
ju.$clinit_Spliterators$AbstractSpliterator = function $clinit_Spliterators$AbstractSpliterator(){
  ju.$clinit_Spliterators$AbstractSpliterator = emptyMethod;
  ju.$clinit_Spliterators$BaseSpliterator();
  ju.$clinit_Spliterator();
}
;
ju.Spliterators$AbstractSpliterator = function Spliterators$AbstractSpliterator(size_0, characteristics){
  ju.$clinit_Spliterators$AbstractSpliterator();
  ju.Spliterators$BaseSpliterator.call(this, size_0, characteristics);
  this.$init_691();
}
;
defineClass(412, 307, {1:1, 27:1});
_.$init_691 = function $init_691(){
}
;
cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit = createForClass('java.util', 'Spliterators/AbstractSpliterator', 412, cggl.Ljava_util_Spliterators$BaseSpliterator_2_classLit);
ju.$clinit_Spliterators$BaseArraySpliterator = function $clinit_Spliterators$BaseArraySpliterator(){
  ju.$clinit_Spliterators$BaseArraySpliterator = emptyMethod;
}
;
defineClass(857, 1, {1:1, 27:1});
cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/BaseArraySpliterator', 857, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$ArraySpliterator = function $clinit_Spliterators$ArraySpliterator(){
  ju.$clinit_Spliterators$ArraySpliterator = emptyMethod;
}
;
defineClass(858, 857, {1:1, 27:1});
cggl.Ljava_util_Spliterators$ArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/ArraySpliterator', 858, cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit);
ju.$clinit_Spliterators$ConsumerIterator = function $clinit_Spliterators$ConsumerIterator(){
  ju.$clinit_Spliterators$ConsumerIterator = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
  ju.$clinit_Iterator();
}
;
ju.Spliterators$ConsumerIterator = function Spliterators$ConsumerIterator(spliterator){
  ju.$clinit_Spliterators$ConsumerIterator();
  Object_0.call(this);
  this.$init_692();
  this.spliterator = castTo(ji2.checkNotNull_0(spliterator), 27);
}
;
defineClass(410, 1, {1:1, 46:1}, ju.Spliterators$ConsumerIterator);
_.$init_692 = function $init_692(){
  this.hasElement = false;
}
;
_.forEachRemaining = function forEachRemaining_20(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.remove_4 = function remove_46(){
  ju.$remove_0(this);
}
;
_.accept_0 = function accept_8(element){
  this.nextElement = element;
}
;
_.hasNext_0 = function hasNext_14(){
  if (!this.hasElement) {
    this.hasElement = this.spliterator.tryAdvance(this);
  }
  return this.hasElement;
}
;
_.next_3 = function next_24(){
  var element;
  ji2.checkCriticalElement(this.hasNext_0());
  this.hasElement = false;
  element = this.nextElement;
  this.nextElement = null;
  return element;
}
;
_.hasElement = false;
cggl.Ljava_util_Spliterators$ConsumerIterator_2_classLit = createForClass('java.util', 'Spliterators/ConsumerIterator', 410, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$DoubleArraySpliterator = function $clinit_Spliterators$DoubleArraySpliterator(){
  ju.$clinit_Spliterators$DoubleArraySpliterator = emptyMethod;
}
;
defineClass(859, 857, {1:1, 27:1});
cggl.Ljava_util_Spliterators$DoubleArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/DoubleArraySpliterator', 859, cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit);
ju.$clinit_Spliterators$DoubleConsumerIterator = function $clinit_Spliterators$DoubleConsumerIterator(){
  ju.$clinit_Spliterators$DoubleConsumerIterator = emptyMethod;
}
;
defineClass(853, 1, {1:1, 46:1});
cggl.Ljava_util_Spliterators$DoubleConsumerIterator_2_classLit = createForClass('java.util', 'Spliterators/DoubleConsumerIterator', 853, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$DoubleIteratorSpliterator = function $clinit_Spliterators$DoubleIteratorSpliterator(){
  ju.$clinit_Spliterators$DoubleIteratorSpliterator = emptyMethod;
}
;
defineClass(855, 846, {1:1, 27:1});
cggl.Ljava_util_Spliterators$DoubleIteratorSpliterator_2_classLit = createForClass('java.util', 'Spliterators/DoubleIteratorSpliterator', 855, cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator = function $clinit_Spliterators$EmptySpliterator(){
  ju.$clinit_Spliterators$EmptySpliterator = emptyMethod;
}
;
defineClass(848, 1, {1:1, 27:1});
cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator', 848, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator$OfDouble = function $clinit_Spliterators$EmptySpliterator$OfDouble(){
  ju.$clinit_Spliterators$EmptySpliterator$OfDouble = emptyMethod;
}
;
defineClass(850, 848, {1:1, 27:1});
cggl.Ljava_util_Spliterators$EmptySpliterator$OfDouble_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator/OfDouble', 850, cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator$OfInt = function $clinit_Spliterators$EmptySpliterator$OfInt(){
  ju.$clinit_Spliterators$EmptySpliterator$OfInt = emptyMethod;
}
;
defineClass(851, 848, {1:1, 27:1, 64:1});
cggl.Ljava_util_Spliterators$EmptySpliterator$OfInt_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator/OfInt', 851, cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator$OfLong = function $clinit_Spliterators$EmptySpliterator$OfLong(){
  ju.$clinit_Spliterators$EmptySpliterator$OfLong = emptyMethod;
}
;
defineClass(852, 848, {1:1, 27:1});
cggl.Ljava_util_Spliterators$EmptySpliterator$OfLong_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator/OfLong', 852, cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit);
ju.$clinit_Spliterators$EmptySpliterator$OfRef = function $clinit_Spliterators$EmptySpliterator$OfRef(){
  ju.$clinit_Spliterators$EmptySpliterator$OfRef = emptyMethod;
}
;
defineClass(849, 848, {1:1, 27:1});
cggl.Ljava_util_Spliterators$EmptySpliterator$OfRef_2_classLit = createForClass('java.util', 'Spliterators/EmptySpliterator/OfRef', 849, cggl.Ljava_util_Spliterators$EmptySpliterator_2_classLit);
ju.$clinit_Spliterators$IntArraySpliterator = function $clinit_Spliterators$IntArraySpliterator(){
  ju.$clinit_Spliterators$IntArraySpliterator = emptyMethod;
}
;
defineClass(860, 857, {1:1, 27:1, 64:1});
cggl.Ljava_util_Spliterators$IntArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/IntArraySpliterator', 860, cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit);
ju.$clinit_Spliterators$IntConsumerIterator = function $clinit_Spliterators$IntConsumerIterator(){
  ju.$clinit_Spliterators$IntConsumerIterator = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_IntConsumer();
  ju.$clinit_Iterator();
  ju.$clinit_PrimitiveIterator$OfInt();
}
;
ju.Spliterators$IntConsumerIterator = function Spliterators$IntConsumerIterator(spliterator){
  ju.$clinit_Spliterators$IntConsumerIterator();
  Object_0.call(this);
  this.$init_693();
  this.spliterator = castTo(ji2.checkNotNull_0(spliterator), 64);
}
;
defineClass(411, 1, {1:1, 46:1, 407:1, 40:1}, ju.Spliterators$IntConsumerIterator);
_.$init_693 = function $init_693(){
  this.hasElement = false;
}
;
_.forEachRemaining_0 = function forEachRemaining_21(arg0){
  this.forEachRemaining_1(castTo(arg0, 40));
}
;
_.forEachRemaining = function forEachRemaining_22(consumer){
  ju.$forEachRemaining_1(this, consumer);
}
;
_.forEachRemaining_1 = function forEachRemaining_23(consumer){
  ju.$forEachRemaining_2(this, consumer);
}
;
_.next_4 = function next_25(){
  return ju.$next(this);
}
;
_.next_3 = function next_26(){
  return this.next_4();
}
;
_.remove_4 = function remove_47(){
  ju.$remove_0(this);
}
;
_.accept_1 = function accept_9(i){
  this.nextElement = i;
}
;
_.hasNext_0 = function hasNext_15(){
  if (!this.hasElement) {
    this.hasElement = this.spliterator.tryAdvance_0(this);
  }
  return this.hasElement;
}
;
_.nextInt = function nextInt_2(){
  ji2.checkCriticalElement(this.hasNext_0());
  this.hasElement = false;
  return this.nextElement;
}
;
_.hasElement = false;
_.nextElement = 0;
cggl.Ljava_util_Spliterators$IntConsumerIterator_2_classLit = createForClass('java.util', 'Spliterators/IntConsumerIterator', 411, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$IntIteratorSpliterator = function $clinit_Spliterators$IntIteratorSpliterator(){
  ju.$clinit_Spliterators$IntIteratorSpliterator = emptyMethod;
  ju.$clinit_Spliterators$AbstractIntSpliterator();
}
;
ju.Spliterators$IntIteratorSpliterator = function Spliterators$IntIteratorSpliterator(it, size_0, characteristics){
  ju.$clinit_Spliterators$IntIteratorSpliterator();
  ju.Spliterators$AbstractIntSpliterator.call(this, size_0, ju.sizeKnownIteratorSpliteratorCharacteristics(characteristics));
  this.$init_694();
  this.it = castTo(ji2.checkNotNull_0(it), 407);
}
;
defineClass(409, 308, {1:1, 27:1, 64:1}, ju.Spliterators$IntIteratorSpliterator);
_.$init_694 = function $init_694(){
}
;
_.forEachRemaining_0 = function forEachRemaining_24(consumer){
  this.forEachRemaining_1(castTo(consumer, 40));
}
;
_.tryAdvance_0 = function tryAdvance_1(consumer){
  return this.tryAdvance_1(castTo(consumer, 40));
}
;
_.forEachRemaining_1 = function forEachRemaining_25(consumer){
  this.it.forEachRemaining_1(consumer);
}
;
_.tryAdvance_1 = function tryAdvance_2(consumer){
  ji2.checkNotNull_0(consumer);
  if (this.it.hasNext_0()) {
    consumer.accept_1(this.it.nextInt());
    return true;
  }
  return false;
}
;
cggl.Ljava_util_Spliterators$IntIteratorSpliterator_2_classLit = createForClass('java.util', 'Spliterators/IntIteratorSpliterator', 409, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
ju.$clinit_Spliterators$LongArraySpliterator = function $clinit_Spliterators$LongArraySpliterator(){
  ju.$clinit_Spliterators$LongArraySpliterator = emptyMethod;
}
;
defineClass(861, 857, {1:1, 27:1});
cggl.Ljava_util_Spliterators$LongArraySpliterator_2_classLit = createForClass('java.util', 'Spliterators/LongArraySpliterator', 861, cggl.Ljava_util_Spliterators$BaseArraySpliterator_2_classLit);
ju.$clinit_Spliterators$LongConsumerIterator = function $clinit_Spliterators$LongConsumerIterator(){
  ju.$clinit_Spliterators$LongConsumerIterator = emptyMethod;
}
;
defineClass(854, 1, {1:1, 46:1});
cggl.Ljava_util_Spliterators$LongConsumerIterator_2_classLit = createForClass('java.util', 'Spliterators/LongConsumerIterator', 854, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_Spliterators$LongIteratorSpliterator = function $clinit_Spliterators$LongIteratorSpliterator(){
  ju.$clinit_Spliterators$LongIteratorSpliterator = emptyMethod;
}
;
defineClass(856, 847, {1:1, 27:1});
cggl.Ljava_util_Spliterators$LongIteratorSpliterator_2_classLit = createForClass('java.util', 'Spliterators/LongIteratorSpliterator', 856, cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit);
ju.$clinit_StringJoiner = function $clinit_StringJoiner(){
  ju.$clinit_StringJoiner = emptyMethod;
  jl.$clinit_Object();
}
;
ju.StringJoiner = function StringJoiner(delimiter){
  ju.$clinit_StringJoiner();
  ju.StringJoiner_0.call(this, delimiter, '', '');
}
;
ju.StringJoiner_0 = function StringJoiner_0(delimiter, prefix, suffix){
  ju.$clinit_StringJoiner();
  Object_0.call(this);
  this.$init_695();
  this.delimiter = toString_30(delimiter);
  this.prefix = toString_30(prefix);
  this.suffix = toString_30(suffix);
  this.emptyValue = this.prefix + ('' + this.suffix);
}
;
defineClass(185, 1, {1:1}, ju.StringJoiner, ju.StringJoiner_0);
_.$init_695 = function $init_695(){
}
;
_.add_14 = function add_37(newElement){
  this.initBuilderOrAddDelimiter();
  this.builder.append_7(newElement);
  return this;
}
;
_.initBuilderOrAddDelimiter = function initBuilderOrAddDelimiter(){
  if (isNull(this.builder)) {
    this.builder = new jl.StringBuilder_1(this.prefix);
  }
   else {
    this.builder.append_9(this.delimiter);
  }
}
;
_.length_0 = function length_15(){
  if (isNull(this.builder)) {
    return jl.length__I__devirtual$_0(this.emptyValue);
  }
  return this.builder.length_0() + jl.length__I__devirtual$_0(this.suffix);
}
;
_.toString_0 = function toString_67(){
  if (isNull(this.builder)) {
    return this.emptyValue;
  }
   else if (jl.isEmpty__Z__devirtual$(this.suffix)) {
    return this.builder.toString_0();
  }
   else {
    return this.builder.toString_0() + ('' + this.suffix);
  }
}
;
cggl.Ljava_util_StringJoiner_2_classLit = createForClass('java.util', 'StringJoiner', 185, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeMap = function $clinit_TreeMap(){
  ju.$clinit_TreeMap = emptyMethod;
  ju.$clinit_AbstractNavigableMap();
}
;
ju.TreeMap = function TreeMap(){
  ju.$clinit_TreeMap();
  ju.TreeMap_0.call(this, castTo(null, 50));
}
;
ju.TreeMap_0 = function TreeMap_0(c){
  ju.$clinit_TreeMap();
  ju.AbstractNavigableMap.call(this);
  this.$init_696();
  this.root = null;
  this.cmp = ju.nullToNaturalOrder(c);
}
;
ju.otherChild = function otherChild(child){
  return 1 - child;
}
;
defineClass(81, 604, {4:1, 1:1, 72:1}, ju.TreeMap, ju.TreeMap_0);
_.$init_696 = function $init_696(){
  this.size_0 = 0;
}
;
_.clear = function clear_26(){
  this.root = null;
  this.size_0 = 0;
}
;
_.entryIterator = function entryIterator_0(){
  return new ju.TreeMap$EntryIterator(this);
}
;
_.entrySet = function entrySet_2(){
  return new ju.TreeMap$EntrySet(this);
}
;
_.getEntry = function getEntry_0(key){
  var c, childNum, tree;
  tree = this.root;
  while (isNotNull(tree)) {
    c = this.cmp.compare_0(key, tree.getKey());
    if (c == 0) {
      return tree;
    }
    childNum = c < 0?0:1;
    tree = tree.child[childNum];
  }
  return null;
}
;
_.getFirstEntry = function getFirstEntry(){
  var nextNode, node;
  if (isNull(this.root)) {
    return null;
  }
  node = this.root;
  while (isNotNull(nextNode = node.child[0])) {
    node = nextNode;
  }
  return node;
}
;
_.inOrderAdd = function inOrderAdd(list, type_0, current, fromKey, fromInclusive, toKey, toInclusive){
  ju.$clinit_TreeMap();
  var leftNode, rightNode;
  if (isNull(current)) {
    return;
  }
  leftNode = current.child[0];
  if (isNotNull(leftNode)) {
    this.inOrderAdd(list, type_0, leftNode, fromKey, fromInclusive, toKey, toInclusive);
  }
  if (this.inRange(type_0, current.getKey(), fromKey, fromInclusive, toKey, toInclusive)) {
    list.add(current);
  }
  rightNode = current.child[1];
  if (isNotNull(rightNode)) {
    this.inOrderAdd(list, type_0, rightNode, fromKey, fromInclusive, toKey, toInclusive);
  }
}
;
_.inRange = function inRange(type_0, key, fromKey, fromInclusive, toKey, toInclusive){
  if (type_0.fromKeyValid() && this.smaller(key, fromKey, !fromInclusive)) {
    return false;
  }
  if (type_0.toKeyValid() && this.larger(key, toKey, !toInclusive)) {
    return false;
  }
  return true;
}
;
_.insert_6 = function insert_8(tree, newNode, state){
  var c, childNum;
  if (isNull(tree)) {
    return newNode;
  }
   else {
    c = this.cmp.compare_0(newNode.getKey(), tree.getKey());
    if (c == 0) {
      state.value_0 = tree.setValue_3(newNode.getValue_1());
      state.found = true;
      return tree;
    }
    childNum = c < 0?0:1;
    setCheck(tree.child, childNum, this.insert_6(tree.child[childNum], newNode, state));
    if (this.isRed_0(tree.child[childNum])) {
      if (this.isRed_0(tree.child[ju.otherChild(childNum)])) {
        tree.isRed = true;
        tree.child[0].isRed = false;
        tree.child[1].isRed = false;
      }
       else {
        if (this.isRed_0(tree.child[childNum].child[childNum])) {
          tree = this.rotateSingle(tree, ju.otherChild(childNum));
        }
         else if (this.isRed_0(tree.child[childNum].child[ju.otherChild(childNum)])) {
          tree = this.rotateDouble(tree, ju.otherChild(childNum));
        }
      }
    }
  }
  return tree;
}
;
_.isRed_0 = function isRed_0(node){
  return isNotNull(node) && node.isRed;
}
;
_.larger = function larger(a, b, orEqual){
  var compare;
  compare = this.cmp.compare_0(a, b);
  return compare > 0 || orEqual && compare == 0;
}
;
_.put = function put_4(key, value_0){
  var node, state;
  node = new ju.TreeMap$Node(key, value_0);
  state = new ju.TreeMap$State;
  this.root = this.insert_6(this.root, node, state);
  if (!state.found) {
    ++this.size_0;
  }
  this.root.isRed = false;
  return state.value_0;
}
;
_.remove = function remove_48(k){
  var key, state;
  key = k;
  state = new ju.TreeMap$State;
  this.removeWithState(key, state);
  return state.value_0;
}
;
_.removeEntry = function removeEntry(entry){
  var state;
  state = new ju.TreeMap$State;
  state.matchValue = true;
  state.value_0 = entry.getValue_1();
  return this.removeWithState(entry.getKey(), state);
}
;
_.removeWithState = function removeWithState(key, state){
  var c, dir_0, dir2, found, grandparent, head, last, newNode, node, parent_0, sibling;
  if (isNull(this.root)) {
    return false;
  }
  found = null;
  parent_0 = null;
  head = new ju.TreeMap$Node(null, null);
  dir_0 = 1;
  setCheck(head.child, 1, this.root);
  node = head;
  while (isNotNull(node.child[dir_0])) {
    last = dir_0;
    grandparent = parent_0;
    parent_0 = node;
    node = node.child[dir_0];
    c = this.cmp.compare_0(key, node.getKey());
    dir_0 = c < 0?0:1;
    if (c == 0 && (!state.matchValue || ju.equals_46(node.getValue_1(), state.value_0))) {
      found = node;
    }
    if (!this.isRed_0(node) && !this.isRed_0(node.child[dir_0])) {
      if (this.isRed_0(node.child[ju.otherChild(dir_0)])) {
        parent_0 = setCheck(parent_0.child, last, this.rotateSingle(node, dir_0));
      }
       else if (!this.isRed_0(node.child[ju.otherChild(dir_0)])) {
        sibling = parent_0.child[ju.otherChild(last)];
        if (isNotNull(sibling)) {
          if (!this.isRed_0(sibling.child[ju.otherChild(last)]) && !this.isRed_0(sibling.child[last])) {
            parent_0.isRed = false;
            sibling.isRed = true;
            node.isRed = true;
          }
           else {
            dir2 = jsEquals(grandparent.child[1], parent_0)?1:0;
            if (this.isRed_0(sibling.child[last])) {
              setCheck(grandparent.child, dir2, this.rotateDouble(parent_0, last));
            }
             else if (this.isRed_0(sibling.child[ju.otherChild(last)])) {
              setCheck(grandparent.child, dir2, this.rotateSingle(parent_0, last));
            }
            node.isRed = grandparent.child[dir2].isRed = true;
            grandparent.child[dir2].child[0].isRed = false;
            grandparent.child[dir2].child[1].isRed = false;
          }
        }
      }
    }
  }
  if (isNotNull(found)) {
    state.found = true;
    state.value_0 = found.getValue_1();
    if (jsNotEquals(node, found)) {
      newNode = new ju.TreeMap$Node(node.getKey(), node.getValue_1());
      this.replaceNode_0(head, found, newNode);
      if (jsEquals(parent_0, found)) {
        parent_0 = newNode;
      }
    }
    setCheck(parent_0.child, jsEquals(parent_0.child[1], node)?1:0, node.child[isNull(node.child[0])?1:0]);
    this.size_0--;
  }
  this.root = head.child[1];
  if (isNotNull(this.root)) {
    this.root.isRed = false;
  }
  return state.found;
}
;
_.replaceNode_0 = function replaceNode_0(head, node, newNode){
  var direction, parent_0;
  parent_0 = head;
  direction = jsEquals(parent_0.getKey(), null) || this.cmp.compare_0(node.getKey(), parent_0.getKey()) > 0?1:0;
  while (jsNotEquals(parent_0.child[direction], node)) {
    parent_0 = parent_0.child[direction];
    direction = this.cmp.compare_0(node.getKey(), parent_0.getKey()) > 0?1:0;
  }
  setCheck(parent_0.child, direction, newNode);
  newNode.isRed = node.isRed;
  setCheck(newNode.child, 0, node.child[0]);
  setCheck(newNode.child, 1, node.child[1]);
  setCheck(node.child, 0, null);
  setCheck(node.child, 1, null);
}
;
_.rotateDouble = function rotateDouble(tree, rotateDirection){
  var otherChildDir;
  otherChildDir = ju.otherChild(rotateDirection);
  setCheck(tree.child, otherChildDir, this.rotateSingle(tree.child[otherChildDir], otherChildDir));
  return this.rotateSingle(tree, rotateDirection);
}
;
_.rotateSingle = function rotateSingle(tree, rotateDirection){
  var otherChildDir, save;
  otherChildDir = ju.otherChild(rotateDirection);
  save = tree.child[otherChildDir];
  setCheck(tree.child, otherChildDir, save.child[rotateDirection]);
  setCheck(save.child, rotateDirection, tree);
  tree.isRed = true;
  save.isRed = false;
  return save;
}
;
_.size = function size_25(){
  return this.size_0;
}
;
_.smaller = function smaller(a, b, orEqual){
  var compare;
  compare = this.cmp.compare_0(a, b);
  return compare < 0 || orEqual && compare == 0;
}
;
_.size_0 = 0;
ju.LEFT_3 = 0;
ju.RIGHT_3 = 1;
cggl.Ljava_util_TreeMap_2_classLit = createForClass('java.util', 'TreeMap', 81, cggl.Ljava_util_AbstractNavigableMap_2_classLit);
ju.$clinit_TreeMap$DescendingEntryIterator = function $clinit_TreeMap$DescendingEntryIterator(){
  ju.$clinit_TreeMap$DescendingEntryIterator = emptyMethod;
}
;
defineClass(1120, 1, {1:1, 46:1});
cggl.Ljava_util_TreeMap$DescendingEntryIterator_2_classLit = createForClass('java.util', 'TreeMap/DescendingEntryIterator', 1120, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeMap$EntryIterator = function $clinit_TreeMap$EntryIterator(){
  ju.$clinit_TreeMap$EntryIterator = emptyMethod;
  jl.$clinit_Object();
  ju.$clinit_Iterator();
}
;
ju.TreeMap$EntryIterator = function TreeMap$EntryIterator(this$0){
  ju.$clinit_TreeMap$EntryIterator();
  ju.TreeMap$EntryIterator_0.call(this, this$0, (ju.$clinit_TreeMap$SubMapType() , ju.All), null, false, null, false);
}
;
ju.TreeMap$EntryIterator_0 = function TreeMap$EntryIterator_0(this$0, type_0, fromKey, fromInclusive, toKey, toInclusive){
  var list;
  this.this$01 = this$0;
  Object_0.call(this);
  this.$init_697();
  list = new ju.ArrayList;
  this$0.inOrderAdd(list, type_0, this$0.root, fromKey, fromInclusive, toKey, toInclusive);
  this.iter = list.listIterator();
}
;
defineClass(337, 1, {1:1, 46:1}, ju.TreeMap$EntryIterator);
_.$init_697 = function $init_697(){
}
;
_.forEachRemaining = function forEachRemaining_26(consumer){
  ju.$forEachRemaining(this, consumer);
}
;
_.next_3 = function next_27(){
  return this.next_5();
}
;
_.hasNext_0 = function hasNext_16(){
  return this.iter.hasNext_0();
}
;
_.next_5 = function next_28(){
  return this.last = castTo(this.iter.next_3(), 45);
}
;
_.remove_4 = function remove_49(){
  this.iter.remove_4();
  this.this$01.removeEntry(this.last);
  this.last = null;
}
;
cggl.Ljava_util_TreeMap$EntryIterator_2_classLit = createForClass('java.util', 'TreeMap/EntryIterator', 337, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeMap$EntrySet = function $clinit_TreeMap$EntrySet(){
  ju.$clinit_TreeMap$EntrySet = emptyMethod;
  ju.$clinit_AbstractNavigableMap$EntrySet();
}
;
ju.TreeMap$EntrySet = function TreeMap$EntrySet(this$0){
  ju.$clinit_TreeMap$EntrySet();
  this.this$01 = this$0;
  ju.AbstractNavigableMap$EntrySet.call(this, this$0);
  this.$init_698();
}
;
defineClass(605, 338, {1:1, 38:1, 79:1}, ju.TreeMap$EntrySet);
_.$init_698 = function $init_698(){
}
;
_.clear = function clear_27(){
  this.this$01.clear();
}
;
cggl.Ljava_util_TreeMap$EntrySet_2_classLit = createForClass('java.util', 'TreeMap/EntrySet', 605, cggl.Ljava_util_AbstractNavigableMap$EntrySet_2_classLit);
ju.$clinit_TreeMap$Node = function $clinit_TreeMap$Node(){
  ju.$clinit_TreeMap$Node = emptyMethod;
  ju.$clinit_AbstractMap$SimpleEntry();
}
;
ju.TreeMap$Node = function TreeMap$Node(key, value_0){
  ju.$clinit_TreeMap$Node();
  ju.TreeMap$Node_0.call(this, key, value_0, true);
}
;
ju.TreeMap$Node_0 = function TreeMap$Node_0(key, value_0, isRed){
  ju.AbstractMap$SimpleEntry.call(this, key, value_0);
  this.$init_699();
  this.isRed = isRed;
}
;
defineClass(173, 272, {1:1, 45:1, 173:1}, ju.TreeMap$Node);
_.$init_699 = function $init_699(){
  this.child = initUnidimensionalArray(cggl.Ljava_util_TreeMap$Node_2_classLit, {4:1, 1:1, 7:1}, 173, 2, 0, 1);
}
;
_.isRed = false;
cggl.Ljava_util_TreeMap$Node_2_classLit = createForClass('java.util', 'TreeMap/Node', 173, cggl.Ljava_util_AbstractMap$SimpleEntry_2_classLit);
ju.$clinit_TreeMap$State = function $clinit_TreeMap$State(){
  ju.$clinit_TreeMap$State = emptyMethod;
  jl.$clinit_Object();
}
;
ju.TreeMap$State = function TreeMap$State(){
  ju.$clinit_TreeMap$State();
  Object_0.call(this);
  this.$init_700();
}
;
defineClass(275, 1, {1:1}, ju.TreeMap$State);
_.$init_700 = function $init_700(){
}
;
_.toString_0 = function toString_68(){
  return 'State: mv=' + this.matchValue + ' value=' + this.value_0 + ' done=' + this.done_0 + ' found=' + this.found;
}
;
_.done_0 = false;
_.found = false;
_.matchValue = false;
cggl.Ljava_util_TreeMap$State_2_classLit = createForClass('java.util', 'TreeMap/State', 275, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeMap$SubMap = function $clinit_TreeMap$SubMap(){
  ju.$clinit_TreeMap$SubMap = emptyMethod;
}
;
defineClass(1121, 604, {1:1, 72:1});
cggl.Ljava_util_TreeMap$SubMap_2_classLit = createForClass('java.util', 'TreeMap/SubMap', 1121, cggl.Ljava_util_AbstractNavigableMap_2_classLit);
ju.$clinit_TreeMap$SubMapType = function $clinit_TreeMap$SubMapType(){
  ju.$clinit_TreeMap$SubMapType = emptyMethod;
  jl.$clinit_Enum();
  ju.All = new ju.TreeMap$SubMapType('All', 0);
  ju.Head = new ju.TreeMap$SubMapType$1('Head', 1);
  ju.Range_0 = new ju.TreeMap$SubMapType$2('Range', 2);
  ju.Tail = new ju.TreeMap$SubMapType$3('Tail', 3);
}
;
ju.TreeMap$SubMapType = function TreeMap$SubMapType(enum$name, enum$ordinal){
  ju.$clinit_TreeMap$SubMapType();
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_701();
}
;
ju.valueOf_43 = function valueOf_43(name_0){
  ju.$clinit_TreeMap$SubMapType();
  return valueOf((ju.$clinit_TreeMap$SubMapType$Map() , ju.$MAP_19), name_0);
}
;
ju.values_22 = function values_22(){
  ju.$clinit_TreeMap$SubMapType();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_util_TreeMap$SubMapType_2_classLit, 1), {4:1, 1:1, 7:1}, 116, 0, [ju.All, ju.Head, ju.Range_0, ju.Tail]);
}
;
defineClass(116, 11, {4:1, 10:1, 11:1, 1:1, 116:1}, ju.TreeMap$SubMapType);
_.$init_701 = function $init_701(){
}
;
_.fromKeyValid = function fromKeyValid(){
  return false;
}
;
_.toKeyValid = function toKeyValid(){
  return false;
}
;
cggl.Ljava_util_TreeMap$SubMapType_2_classLit = createForEnum('java.util', 'TreeMap/SubMapType', 116, cggl.Ljava_lang_Enum_2_classLit, ju.values_22, ju.valueOf_43);
ju.$clinit_TreeMap$SubMapType$1 = function $clinit_TreeMap$SubMapType$1(){
  ju.$clinit_TreeMap$SubMapType$1 = emptyMethod;
  ju.$clinit_TreeMap$SubMapType();
}
;
ju.TreeMap$SubMapType$1 = function TreeMap$SubMapType$1(enum$name, enum$ordinal){
  ju.$clinit_TreeMap$SubMapType$1();
  ju.TreeMap$SubMapType.call(this, enum$name, enum$ordinal);
  this.$init_702();
}
;
defineClass(606, 116, {4:1, 10:1, 11:1, 1:1, 116:1}, ju.TreeMap$SubMapType$1);
_.$init_702 = function $init_702(){
}
;
_.toKeyValid = function toKeyValid_0(){
  return true;
}
;
cggl.Ljava_util_TreeMap$SubMapType$1_2_classLit = createForEnum('java.util', 'TreeMap/SubMapType/1', 606, cggl.Ljava_util_TreeMap$SubMapType_2_classLit, null, null);
ju.$clinit_TreeMap$SubMapType$2 = function $clinit_TreeMap$SubMapType$2(){
  ju.$clinit_TreeMap$SubMapType$2 = emptyMethod;
  ju.$clinit_TreeMap$SubMapType();
}
;
ju.TreeMap$SubMapType$2 = function TreeMap$SubMapType$2(enum$name, enum$ordinal){
  ju.$clinit_TreeMap$SubMapType$2();
  ju.TreeMap$SubMapType.call(this, enum$name, enum$ordinal);
  this.$init_703();
}
;
defineClass(607, 116, {4:1, 10:1, 11:1, 1:1, 116:1}, ju.TreeMap$SubMapType$2);
_.$init_703 = function $init_703(){
}
;
_.fromKeyValid = function fromKeyValid_0(){
  return true;
}
;
_.toKeyValid = function toKeyValid_1(){
  return true;
}
;
cggl.Ljava_util_TreeMap$SubMapType$2_2_classLit = createForEnum('java.util', 'TreeMap/SubMapType/2', 607, cggl.Ljava_util_TreeMap$SubMapType_2_classLit, null, null);
ju.$clinit_TreeMap$SubMapType$3 = function $clinit_TreeMap$SubMapType$3(){
  ju.$clinit_TreeMap$SubMapType$3 = emptyMethod;
  ju.$clinit_TreeMap$SubMapType();
}
;
ju.TreeMap$SubMapType$3 = function TreeMap$SubMapType$3(enum$name, enum$ordinal){
  ju.$clinit_TreeMap$SubMapType$3();
  ju.TreeMap$SubMapType.call(this, enum$name, enum$ordinal);
  this.$init_704();
}
;
defineClass(608, 116, {4:1, 10:1, 11:1, 1:1, 116:1}, ju.TreeMap$SubMapType$3);
_.$init_704 = function $init_704(){
}
;
_.fromKeyValid = function fromKeyValid_1(){
  return true;
}
;
cggl.Ljava_util_TreeMap$SubMapType$3_2_classLit = createForEnum('java.util', 'TreeMap/SubMapType/3', 608, cggl.Ljava_util_TreeMap$SubMapType_2_classLit, null, null);
ju.$clinit_TreeMap$SubMapType$Map = function $clinit_TreeMap$SubMapType$Map(){
  ju.$clinit_TreeMap$SubMapType$Map = emptyMethod;
  ju.$MAP_19 = createValueOfMap(ju.values_22());
}
;
defineClass(1122, 1, {1:1});
cggl.Ljava_util_TreeMap$SubMapType$Map_2_classLit = createForClass('java.util', 'TreeMap/SubMapType/Map', 1122, cggl.Ljava_lang_Object_2_classLit);
ju.$clinit_TreeSet = function $clinit_TreeSet(){
  ju.$clinit_TreeSet = emptyMethod;
  ju.$clinit_AbstractSet();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_Set();
  ju.$clinit_SortedSet();
}
;
ju.TreeSet = function TreeSet(){
  ju.$clinit_TreeSet();
  ju.AbstractSet.call(this);
  this.$init_705();
  this.map_0 = new ju.TreeMap;
}
;
ju.TreeSet_0 = function TreeSet_0(c){
  ju.$clinit_TreeSet();
  ju.AbstractSet.call(this);
  this.$init_705();
  this.map_0 = new ju.TreeMap_0(c);
}
;
defineClass(216, 115, {4:1, 1:1, 38:1, 79:1}, ju.TreeSet, ju.TreeSet_0);
_.$init_705 = function $init_705(){
}
;
_.spliterator_0 = function spliterator_15(){
  return ju.$spliterator_3(this);
}
;
_.add = function add_38(o){
  return jsEquals(this.map_0.put(o, (jl.$clinit_Boolean() , FALSE_0)), null);
}
;
_.clear = function clear_28(){
  this.map_0.clear();
}
;
_.contains = function contains_24(o){
  return this.map_0.containsKey(o);
}
;
_.iterator = function iterator_23(){
  return this.map_0.keySet().iterator();
}
;
_.pollFirst = function pollFirst_1(){
  return ju.getEntryKeyOrNull(this.map_0.pollFirstEntry());
}
;
_.remove = function remove_50(o){
  return jsNotEquals(this.map_0.remove(o), null);
}
;
_.size = function size_26(){
  return this.map_0.size();
}
;
cggl.Ljava_util_TreeSet_2_classLit = createForClass('java.util', 'TreeSet', 216, cggl.Ljava_util_AbstractSet_2_classLit);
ju.$clinit_Vector = function $clinit_Vector(){
  ju.$clinit_Vector = emptyMethod;
  ju.$clinit_AbstractList();
  jl.$clinit_Iterable();
  ju.$clinit_Collection();
  ju.$clinit_List();
}
;
ju.Vector = function Vector(){
  ju.$clinit_Vector();
  ju.AbstractList.call(this);
  this.$init_706();
  this.arrayList = new ju.ArrayList;
}
;
ju.checkArrayElementIndex = function checkArrayElementIndex(index_0, size_0){
  if (index_0 < 0 || index_0 >= size_0) {
    throw toJs(new jl.ArrayIndexOutOfBoundsException);
  }
}
;
ju.checkArrayIndexOutOfBounds = function checkArrayIndexOutOfBounds(expression, index_0){
  if (!expression) {
    throw toJs(new jl.ArrayIndexOutOfBoundsException_0(jl.valueOf_32(index_0)));
  }
}
;
defineClass(643, 171, {4:1, 1:1, 38:1, 57:1, 143:1}, ju.Vector);
_.$init_706 = function $init_706(){
}
;
_.addAtIndex = function add_39(index_0, o){
  ju.checkArrayElementIndex(index_0, this.size() + 1);
  this.arrayList.addAtIndex(index_0, o);
}
;
_.add = function add_40(o){
  return this.arrayList.add(o);
}
;
_.addAllAtIndex = function addAll_5(index_0, c){
  ju.checkArrayElementIndex(index_0, this.size() + 1);
  return this.arrayList.addAllAtIndex(index_0, c);
}
;
_.addAll = function addAll_6(c){
  return this.arrayList.addAll(c);
}
;
_.clear = function clear_29(){
  this.arrayList.clear();
}
;
_.contains = function contains_25(elem){
  return this.arrayList.contains(elem);
}
;
_.containsAll = function containsAll_1(c){
  return this.arrayList.containsAll(c);
}
;
_.forEach_0 = function forEach_7(consumer){
  this.arrayList.forEach_0(consumer);
}
;
_.getAtIndex = function get_40(index_0){
  ju.checkArrayElementIndex(index_0, this.size());
  return this.arrayList.getAtIndex(index_0);
}
;
_.indexOf = function indexOf_8(elem){
  return this.arrayList.indexOf(elem);
}
;
_.indexOf_4 = function indexOf_9(elem, index_0){
  ju.checkArrayIndexOutOfBounds(index_0 >= 0, index_0);
  return this.arrayList.indexOf_0(elem, index_0);
}
;
_.isEmpty = function isEmpty_10(){
  return this.arrayList.size() == 0;
}
;
_.iterator = function iterator_24(){
  return this.arrayList.iterator();
}
;
_.lastIndexOf = function lastIndexOf_5(o){
  return this.arrayList.lastIndexOf(o);
}
;
_.lastIndexOf_3 = function lastIndexOf_6(o, index_0){
  ju.checkArrayIndexOutOfBounds(index_0 < this.size(), index_0);
  return this.arrayList.lastIndexOf_0(o, index_0);
}
;
_.removeAtIndex = function remove_51(index_0){
  ju.checkArrayElementIndex(index_0, this.size());
  return this.arrayList.removeAtIndex(index_0);
}
;
_.removeAll = function removeAll_3(c){
  return this.arrayList.removeAll(c);
}
;
_.removeRange = function removeRange_1(fromIndex, endIndex){
  this.arrayList.removeRange(fromIndex, endIndex);
}
;
_.setAtIndex = function set_9(index_0, elem){
  ju.checkArrayElementIndex(index_0, this.size());
  return this.arrayList.setAtIndex(index_0, elem);
}
;
_.setSize_2 = function setSize_3(size_0){
  ju.checkArrayIndexOutOfBounds(size_0 >= 0, size_0);
  this.arrayList.setSize(size_0);
}
;
_.size = function size_27(){
  return this.arrayList.size();
}
;
_.sort_0 = function sort_10(c){
  this.arrayList.sort_0(c);
}
;
_.subList = function subList_1(fromIndex, toIndex){
  return this.arrayList.subList(fromIndex, toIndex);
}
;
_.toArray = function toArray_10(){
  return this.arrayList.toArray();
}
;
_.toArray_0 = function toArray_11(a){
  return this.arrayList.toArray_0(a);
}
;
_.toString_0 = function toString_69(){
  return this.arrayList.toString_0();
}
;
cggl.Ljava_util_Vector_2_classLit = createForClass('java.util', 'Vector', 643, cggl.Ljava_util_AbstractList_2_classLit);
juc.$clinit_ConcurrentMap = function $clinit_ConcurrentMap(){
  juc.$clinit_ConcurrentMap = emptyMethod;
}
;
cggl.Ljava_util_concurrent_ConcurrentMap_2_classLit = createForInterface('java.util.concurrent', 'ConcurrentMap');
juc.$clinit_ConcurrentHashMap = function $clinit_ConcurrentHashMap(){
  juc.$clinit_ConcurrentHashMap = emptyMethod;
  ju.$clinit_AbstractMap();
  ju.$clinit_Map();
}
;
juc.ConcurrentHashMap = function ConcurrentHashMap(){
  juc.$clinit_ConcurrentHashMap();
  ju.AbstractMap.call(this);
  this.$init_707();
  this.backingMap = new ju.HashMap;
}
;
defineClass(335, 172, {1:1, 72:1});
_.$init_707 = function $init_707(){
}
;
_.contains_3 = function contains_26(value_0){
  return this.containsValue(value_0);
}
;
_.containsKey = function containsKey_3(key){
  if (jsEquals(key, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.containsKey(key);
}
;
_.containsValue = function containsValue_3(value_0){
  if (jsEquals(value_0, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.containsValue(value_0);
}
;
_.entrySet = function entrySet_3(){
  return this.backingMap.entrySet();
}
;
_.get = function get_41(key){
  if (jsEquals(key, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.get(key);
}
;
_.put = function put_5(key, value_0){
  if (jsEquals(key, null) || jsEquals(value_0, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.put(key, value_0);
}
;
_.putIfAbsent = function putIfAbsent_0(key, value_0){
  if (!this.containsKey(key)) {
    return this.put(key, value_0);
  }
   else {
    return this.get(key);
  }
}
;
_.remove = function remove_52(key){
  if (jsEquals(key, null)) {
    throw toJs(new jl.NullPointerException);
  }
  return this.backingMap.remove(key);
}
;
_.replace = function replace_1(key, value_0){
  if (jsEquals(value_0, null)) {
    throw toJs(new jl.NullPointerException);
  }
   else if (this.containsKey(key)) {
    return this.put(key, value_0);
  }
   else {
    return null;
  }
}
;
cggl.Ljava_util_concurrent_ConcurrentHashMap_2_classLit = createForClass('java.util.concurrent', 'ConcurrentHashMap', 335, cggl.Ljava_util_AbstractMap_2_classLit);
juf.$clinit_BiConsumer = function $clinit_BiConsumer(){
  juf.$clinit_BiConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_BiConsumer_2_classLit = createForInterface('java.util.function', 'BiConsumer');
juf.$clinit_BiConsumer$lambda$0$Type = function $clinit_BiConsumer$lambda$0$Type(){
  juf.$clinit_BiConsumer$lambda$0$Type = emptyMethod;
}
;
defineClass(1254, 1, {1:1});
cggl.Ljava_util_function_BiConsumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'BiConsumer/lambda$0$Type', 1254, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_BiFunction = function $clinit_BiFunction(){
  juf.$clinit_BiFunction = emptyMethod;
}
;
cggl.Ljava_util_function_BiFunction_2_classLit = createForInterface('java.util.function', 'BiFunction');
juf.$clinit_BiFunction$lambda$0$Type = function $clinit_BiFunction$lambda$0$Type(){
  juf.$clinit_BiFunction$lambda$0$Type = emptyMethod;
}
;
defineClass(1203, 1, {1:1});
cggl.Ljava_util_function_BiFunction$lambda$0$Type_2_classLit = createForClass('java.util.function', 'BiFunction/lambda$0$Type', 1203, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_BinaryOperator = function $clinit_BinaryOperator(){
  juf.$clinit_BinaryOperator = emptyMethod;
}
;
cggl.Ljava_util_function_BinaryOperator_2_classLit = createForInterface('java.util.function', 'BinaryOperator');
juf.$clinit_BinaryOperator$lambda$0$Type = function $clinit_BinaryOperator$lambda$0$Type(){
  juf.$clinit_BinaryOperator$lambda$0$Type = emptyMethod;
}
;
defineClass(1201, 1, {1:1});
cggl.Ljava_util_function_BinaryOperator$lambda$0$Type_2_classLit = createForClass('java.util.function', 'BinaryOperator/lambda$0$Type', 1201, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_BinaryOperator$lambda$1$Type = function $clinit_BinaryOperator$lambda$1$Type(){
  juf.$clinit_BinaryOperator$lambda$1$Type = emptyMethod;
}
;
defineClass(1202, 1, {1:1});
cggl.Ljava_util_function_BinaryOperator$lambda$1$Type_2_classLit = createForClass('java.util.function', 'BinaryOperator/lambda$1$Type', 1202, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Consumer$lambda$0$Type = function $clinit_Consumer$lambda$0$Type(){
  juf.$clinit_Consumer$lambda$0$Type = emptyMethod;
}
;
defineClass(866, 1, {1:1});
cggl.Ljava_util_function_Consumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'Consumer/lambda$0$Type', 866, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_DoubleConsumer$lambda$0$Type = function $clinit_DoubleConsumer$lambda$0$Type(){
  juf.$clinit_DoubleConsumer$lambda$0$Type = emptyMethod;
}
;
defineClass(829, 1, {1:1});
cggl.Ljava_util_function_DoubleConsumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'DoubleConsumer/lambda$0$Type', 829, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Function = function $clinit_Function(){
  juf.$clinit_Function = emptyMethod;
}
;
juf.identity_0 = function identity_0(){
  juf.$clinit_Function();
  return new juf.Function$lambda$0$Type;
}
;
juf.lambda$0_0 = function lambda$0_0(t_0){
  juf.$clinit_Function();
  return t_0;
}
;
cggl.Ljava_util_function_Function_2_classLit = createForInterface('java.util.function', 'Function');
juf.$clinit_Function$lambda$0$Type = function $clinit_Function$lambda$0$Type(){
  juf.$clinit_Function$lambda$0$Type = emptyMethod;
}
;
juf.Function$lambda$0$Type = function Function$lambda$0$Type(){
  juf.$clinit_Function$lambda$0$Type();
}
;
defineClass(505, 1, {1:1}, juf.Function$lambda$0$Type);
_.apply_1 = function apply_1(t){
  return juf.lambda$0_0(t);
}
;
cggl.Ljava_util_function_Function$lambda$0$Type_2_classLit = createForClass('java.util.function', 'Function/lambda$0$Type', 505, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Function$lambda$1$Type = function $clinit_Function$lambda$1$Type(){
  juf.$clinit_Function$lambda$1$Type = emptyMethod;
}
;
defineClass(952, 1, {1:1});
cggl.Ljava_util_function_Function$lambda$1$Type_2_classLit = createForClass('java.util.function', 'Function/lambda$1$Type', 952, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Function$lambda$2$Type = function $clinit_Function$lambda$2$Type(){
  juf.$clinit_Function$lambda$2$Type = emptyMethod;
}
;
defineClass(953, 1, {1:1});
cggl.Ljava_util_function_Function$lambda$2$Type_2_classLit = createForClass('java.util.function', 'Function/lambda$2$Type', 953, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntConsumer$lambda$0$Type = function $clinit_IntConsumer$lambda$0$Type(){
  juf.$clinit_IntConsumer$lambda$0$Type = emptyMethod;
}
;
defineClass(830, 1, {1:1, 40:1});
cggl.Ljava_util_function_IntConsumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'IntConsumer/lambda$0$Type', 830, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntFunction = function $clinit_IntFunction(){
  juf.$clinit_IntFunction = emptyMethod;
}
;
cggl.Ljava_util_function_IntFunction_2_classLit = createForInterface('java.util.function', 'IntFunction');
juf.$clinit_IntPredicate = function $clinit_IntPredicate(){
  juf.$clinit_IntPredicate = emptyMethod;
}
;
cggl.Ljava_util_function_IntPredicate_2_classLit = createForInterface('java.util.function', 'IntPredicate');
juf.$clinit_IntPredicate$lambda$0$Type = function $clinit_IntPredicate$lambda$0$Type(){
  juf.$clinit_IntPredicate$lambda$0$Type = emptyMethod;
}
;
defineClass(867, 1, {1:1});
cggl.Ljava_util_function_IntPredicate$lambda$0$Type_2_classLit = createForClass('java.util.function', 'IntPredicate/lambda$0$Type', 867, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntPredicate$lambda$1$Type = function $clinit_IntPredicate$lambda$1$Type(){
  juf.$clinit_IntPredicate$lambda$1$Type = emptyMethod;
}
;
defineClass(868, 1, {1:1});
cggl.Ljava_util_function_IntPredicate$lambda$1$Type_2_classLit = createForClass('java.util.function', 'IntPredicate/lambda$1$Type', 868, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntPredicate$lambda$2$Type = function $clinit_IntPredicate$lambda$2$Type(){
  juf.$clinit_IntPredicate$lambda$2$Type = emptyMethod;
}
;
defineClass(869, 1, {1:1});
cggl.Ljava_util_function_IntPredicate$lambda$2$Type_2_classLit = createForClass('java.util.function', 'IntPredicate/lambda$2$Type', 869, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_IntToDoubleFunction = function $clinit_IntToDoubleFunction(){
  juf.$clinit_IntToDoubleFunction = emptyMethod;
}
;
cggl.Ljava_util_function_IntToDoubleFunction_2_classLit = createForInterface('java.util.function', 'IntToDoubleFunction');
juf.$clinit_IntToLongFunction = function $clinit_IntToLongFunction(){
  juf.$clinit_IntToLongFunction = emptyMethod;
}
;
cggl.Ljava_util_function_IntToLongFunction_2_classLit = createForInterface('java.util.function', 'IntToLongFunction');
juf.$clinit_LongConsumer$lambda$0$Type = function $clinit_LongConsumer$lambda$0$Type(){
  juf.$clinit_LongConsumer$lambda$0$Type = emptyMethod;
}
;
defineClass(831, 1, {1:1});
cggl.Ljava_util_function_LongConsumer$lambda$0$Type_2_classLit = createForClass('java.util.function', 'LongConsumer/lambda$0$Type', 831, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_ObjIntConsumer = function $clinit_ObjIntConsumer(){
  juf.$clinit_ObjIntConsumer = emptyMethod;
}
;
cggl.Ljava_util_function_ObjIntConsumer_2_classLit = createForInterface('java.util.function', 'ObjIntConsumer');
juf.$clinit_Predicate = function $clinit_Predicate(){
  juf.$clinit_Predicate = emptyMethod;
}
;
cggl.Ljava_util_function_Predicate_2_classLit = createForInterface('java.util.function', 'Predicate');
juf.$clinit_Predicate$0methodref$isNull$Type = function $clinit_Predicate$0methodref$isNull$Type(){
  juf.$clinit_Predicate$0methodref$isNull$Type = emptyMethod;
}
;
defineClass(1111, 1, {1:1});
cggl.Ljava_util_function_Predicate$0methodref$isNull$Type_2_classLit = createForClass('java.util.function', 'Predicate/0methodref$isNull$Type', 1111, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Predicate$1methodref$equals$Type = function $clinit_Predicate$1methodref$equals$Type(){
  juf.$clinit_Predicate$1methodref$equals$Type = emptyMethod;
}
;
defineClass(1112, 1, {1:1});
cggl.Ljava_util_function_Predicate$1methodref$equals$Type_2_classLit = createForClass('java.util.function', 'Predicate/1methodref$equals$Type', 1112, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Predicate$lambda$2$Type = function $clinit_Predicate$lambda$2$Type(){
  juf.$clinit_Predicate$lambda$2$Type = emptyMethod;
}
;
defineClass(1113, 1, {1:1});
cggl.Ljava_util_function_Predicate$lambda$2$Type_2_classLit = createForClass('java.util.function', 'Predicate/lambda$2$Type', 1113, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Predicate$lambda$3$Type = function $clinit_Predicate$lambda$3$Type(){
  juf.$clinit_Predicate$lambda$3$Type = emptyMethod;
}
;
defineClass(1114, 1, {1:1});
cggl.Ljava_util_function_Predicate$lambda$3$Type_2_classLit = createForClass('java.util.function', 'Predicate/lambda$3$Type', 1114, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_Predicate$lambda$4$Type = function $clinit_Predicate$lambda$4$Type(){
  juf.$clinit_Predicate$lambda$4$Type = emptyMethod;
}
;
defineClass(1115, 1, {1:1});
cggl.Ljava_util_function_Predicate$lambda$4$Type_2_classLit = createForClass('java.util.function', 'Predicate/lambda$4$Type', 1115, cggl.Ljava_lang_Object_2_classLit);
juf.$clinit_ToDoubleFunction = function $clinit_ToDoubleFunction(){
  juf.$clinit_ToDoubleFunction = emptyMethod;
}
;
cggl.Ljava_util_function_ToDoubleFunction_2_classLit = createForInterface('java.util.function', 'ToDoubleFunction');
jus.$clinit_BaseStream = function $clinit_BaseStream(){
  jus.$clinit_BaseStream = emptyMethod;
}
;
cggl.Ljava_util_stream_BaseStream_2_classLit = createForInterface('java.util.stream', 'BaseStream');
jus.$clinit_Collector = function $clinit_Collector(){
  jus.$clinit_Collector = emptyMethod;
}
;
jus.of_0 = function of_0(supplier, accumulator, combiner, characteristics){
  jus.$clinit_Collector();
  ji2.checkNotNull_0(supplier);
  ji2.checkNotNull_0(accumulator);
  ji2.checkNotNull_0(combiner);
  ji2.checkNotNull_0(characteristics);
  return new jus.CollectorImpl(supplier, accumulator, combiner, juf.identity_0(), characteristics);
}
;
cggl.Ljava_util_stream_Collector_2_classLit = createForInterface('java.util.stream', 'Collector');
jus.$clinit_Collector$Characteristics = function $clinit_Collector$Characteristics(){
  jus.$clinit_Collector$Characteristics = emptyMethod;
  jl.$clinit_Enum();
  jus.CONCURRENT_0 = new jus.Collector$Characteristics('CONCURRENT', 0);
  jus.IDENTITY_FINISH = new jus.Collector$Characteristics('IDENTITY_FINISH', 1);
  jus.UNORDERED = new jus.Collector$Characteristics('UNORDERED', 2);
}
;
jus.Collector$Characteristics = function Collector$Characteristics(enum$name, enum$ordinal){
  Enum.call(this, enum$name, enum$ordinal);
  this.$init_708();
}
;
jus.valueOf_44 = function valueOf_44(name_0){
  jus.$clinit_Collector$Characteristics();
  return valueOf((jus.$clinit_Collector$Characteristics$Map() , jus.$MAP_20), name_0);
}
;
jus.values_23 = function values_23(){
  jus.$clinit_Collector$Characteristics();
  return stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_util_stream_Collector$Characteristics_2_classLit, 1), {4:1, 1:1, 7:1}, 183, 0, [jus.CONCURRENT_0, jus.IDENTITY_FINISH, jus.UNORDERED]);
}
;
defineClass(183, 11, {4:1, 10:1, 11:1, 1:1, 183:1}, jus.Collector$Characteristics);
_.$init_708 = function $init_708(){
}
;
cggl.Ljava_util_stream_Collector$Characteristics_2_classLit = createForEnum('java.util.stream', 'Collector/Characteristics', 183, cggl.Ljava_lang_Enum_2_classLit, jus.values_23, jus.valueOf_44);
jus.$clinit_Collector$Characteristics$Map = function $clinit_Collector$Characteristics$Map(){
  jus.$clinit_Collector$Characteristics$Map = emptyMethod;
  jus.$MAP_20 = createValueOfMap(jus.values_23());
}
;
defineClass(1317, 1, {1:1});
cggl.Ljava_util_stream_Collector$Characteristics$Map_2_classLit = createForClass('java.util.stream', 'Collector/Characteristics/Map', 1317, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_CollectorImpl = function $clinit_CollectorImpl(){
  jus.$clinit_CollectorImpl = emptyMethod;
  jl.$clinit_Object();
}
;
jus.CollectorImpl = function CollectorImpl(supplier, accumulator, combiner, finisher, characteristics){
  jus.$clinit_CollectorImpl();
  Object_0.call(this);
  this.$init_709();
  this.supplier = supplier;
  this.accumulator = accumulator;
  this.characteristics = ju.emptySet();
  this.combiner = combiner;
  this.finisher = finisher;
}
;
defineClass(777, 1, {1:1}, jus.CollectorImpl);
_.$init_709 = function $init_709(){
}
;
_.accumulator_0 = function accumulator_0(){
  return this.accumulator;
}
;
_.combiner_0 = function combiner_0(){
  return this.combiner;
}
;
_.finisher_0 = function finisher_0(){
  return this.finisher;
}
;
_.supplier_0 = function supplier_0(){
  return this.supplier;
}
;
cggl.Ljava_util_stream_CollectorImpl_2_classLit = createForClass('java.util.stream', 'CollectorImpl', 777, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors = function $clinit_Collectors(){
  jus.$clinit_Collectors = emptyMethod;
  jl.$clinit_Object();
}
;
jus.addAll_7 = function addAll_7(collection, items){
  collection.addAll(items);
  return collection;
}
;
jus.lambda$45 = function lambda$45(c1_0, c2_1){
  jus.$clinit_Collectors();
  return jus.addAll_7(c1_0, c2_1);
}
;
jus.toCollection = function toCollection(collectionFactory){
  return jus.of_0(collectionFactory, new jus.Collectors$20methodref$add$Type, new jus.Collectors$lambda$45$Type, stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_util_stream_Collector$Characteristics_2_classLit, 1), {4:1, 1:1, 7:1}, 183, 0, [(jus.$clinit_Collector$Characteristics() , jus.IDENTITY_FINISH)]));
}
;
jus.toList = function toList(){
  jus.$clinit_Collectors();
  return jus.toCollection(new jus.Collectors$21methodref$ctor$Type);
}
;
defineClass(1257, 1, {1:1});
cggl.Ljava_util_stream_Collectors_2_classLit = createForClass('java.util.stream', 'Collectors', 1257, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$0methodref$getAverage$Type = function $clinit_Collectors$0methodref$getAverage$Type(){
  jus.$clinit_Collectors$0methodref$getAverage$Type = emptyMethod;
}
;
defineClass(1258, 1, {1:1});
cggl.Ljava_util_stream_Collectors$0methodref$getAverage$Type_2_classLit = createForClass('java.util.stream', 'Collectors/0methodref$getAverage$Type', 1258, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$10methodref$merge$Type = function $clinit_Collectors$10methodref$merge$Type(){
  jus.$clinit_Collectors$10methodref$merge$Type = emptyMethod;
}
;
defineClass(1275, 1, {1:1});
cggl.Ljava_util_stream_Collectors$10methodref$merge$Type_2_classLit = createForClass('java.util.stream', 'Collectors/10methodref$merge$Type', 1275, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$11methodref$toString$Type = function $clinit_Collectors$11methodref$toString$Type(){
  jus.$clinit_Collectors$11methodref$toString$Type = emptyMethod;
}
;
defineClass(1276, 1, {1:1});
cggl.Ljava_util_stream_Collectors$11methodref$toString$Type_2_classLit = createForClass('java.util.stream', 'Collectors/11methodref$toString$Type', 1276, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$12methodref$test$Type = function $clinit_Collectors$12methodref$test$Type(){
  jus.$clinit_Collectors$12methodref$test$Type = emptyMethod;
}
;
defineClass(1281, 1, {1:1});
cggl.Ljava_util_stream_Collectors$12methodref$test$Type_2_classLit = createForClass('java.util.stream', 'Collectors/12methodref$test$Type', 1281, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$13methodref$ctor$Type = function $clinit_Collectors$13methodref$ctor$Type(){
  jus.$clinit_Collectors$13methodref$ctor$Type = emptyMethod;
}
;
defineClass(1282, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$13methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/13methodref$ctor$Type', 1282, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$14methodref$of$Type = function $clinit_Collectors$14methodref$of$Type(){
  jus.$clinit_Collectors$14methodref$of$Type = emptyMethod;
}
;
defineClass(1284, 1, {1:1});
cggl.Ljava_util_stream_Collectors$14methodref$of$Type_2_classLit = createForClass('java.util.stream', 'Collectors/14methodref$of$Type', 1284, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$15methodref$ctor$Type = function $clinit_Collectors$15methodref$ctor$Type(){
  jus.$clinit_Collectors$15methodref$ctor$Type = emptyMethod;
}
;
defineClass(1290, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$15methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/15methodref$ctor$Type', 1290, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$16methodref$ctor$Type = function $clinit_Collectors$16methodref$ctor$Type(){
  jus.$clinit_Collectors$16methodref$ctor$Type = emptyMethod;
}
;
defineClass(1293, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$16methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/16methodref$ctor$Type', 1293, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$17methodref$ctor$Type = function $clinit_Collectors$17methodref$ctor$Type(){
  jus.$clinit_Collectors$17methodref$ctor$Type = emptyMethod;
}
;
defineClass(1296, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$17methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/17methodref$ctor$Type', 1296, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$18methodref$getSum$Type = function $clinit_Collectors$18methodref$getSum$Type(){
  jus.$clinit_Collectors$18methodref$getSum$Type = emptyMethod;
}
;
defineClass(1299, 1, {1:1});
cggl.Ljava_util_stream_Collectors$18methodref$getSum$Type_2_classLit = createForClass('java.util.stream', 'Collectors/18methodref$getSum$Type', 1299, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$19methodref$getSum$Type = function $clinit_Collectors$19methodref$getSum$Type(){
  jus.$clinit_Collectors$19methodref$getSum$Type = emptyMethod;
}
;
defineClass(1301, 1, {1:1});
cggl.Ljava_util_stream_Collectors$19methodref$getSum$Type_2_classLit = createForClass('java.util.stream', 'Collectors/19methodref$getSum$Type', 1301, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$1methodref$getAverage$Type = function $clinit_Collectors$1methodref$getAverage$Type(){
  jus.$clinit_Collectors$1methodref$getAverage$Type = emptyMethod;
}
;
defineClass(1259, 1, {1:1});
cggl.Ljava_util_stream_Collectors$1methodref$getAverage$Type_2_classLit = createForClass('java.util.stream', 'Collectors/1methodref$getAverage$Type', 1259, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$20methodref$add$Type = function $clinit_Collectors$20methodref$add$Type(){
  jus.$clinit_Collectors$20methodref$add$Type = emptyMethod;
}
;
jus.Collectors$20methodref$add$Type = function Collectors$20methodref$add$Type(){
  jus.$clinit_Collectors$20methodref$add$Type();
}
;
defineClass(748, 1, {1:1}, jus.Collectors$20methodref$add$Type);
_.accept_2 = function accept_10(arg0, arg1){
  castTo(arg0, 38).add(arg1);
}
;
cggl.Ljava_util_stream_Collectors$20methodref$add$Type_2_classLit = createForClass('java.util.stream', 'Collectors/20methodref$add$Type', 748, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$21methodref$ctor$Type = function $clinit_Collectors$21methodref$ctor$Type(){
  jus.$clinit_Collectors$21methodref$ctor$Type = emptyMethod;
}
;
jus.Collectors$21methodref$ctor$Type = function Collectors$21methodref$ctor$Type(){
  jus.$clinit_Collectors$21methodref$ctor$Type();
}
;
defineClass(750, 1, {1:1, 74:1}, jus.Collectors$21methodref$ctor$Type);
_.get_5 = function get_42(){
  return new ju.ArrayList;
}
;
cggl.Ljava_util_stream_Collectors$21methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/21methodref$ctor$Type', 750, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$22methodref$requireNonNull$Type = function $clinit_Collectors$22methodref$requireNonNull$Type(){
  jus.$clinit_Collectors$22methodref$requireNonNull$Type = emptyMethod;
}
;
defineClass(1302, 1, {1:1});
cggl.Ljava_util_stream_Collectors$22methodref$requireNonNull$Type_2_classLit = createForClass('java.util.stream', 'Collectors/22methodref$requireNonNull$Type', 1302, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$23methodref$unmodifiableList$Type = function $clinit_Collectors$23methodref$unmodifiableList$Type(){
  jus.$clinit_Collectors$23methodref$unmodifiableList$Type = emptyMethod;
}
;
defineClass(1303, 1, {1:1});
cggl.Ljava_util_stream_Collectors$23methodref$unmodifiableList$Type_2_classLit = createForClass('java.util.stream', 'Collectors/23methodref$unmodifiableList$Type', 1303, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$24methodref$ctor$Type = function $clinit_Collectors$24methodref$ctor$Type(){
  jus.$clinit_Collectors$24methodref$ctor$Type = emptyMethod;
}
;
defineClass(1305, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$24methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/24methodref$ctor$Type', 1305, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$25methodref$unmodifiableMap$Type = function $clinit_Collectors$25methodref$unmodifiableMap$Type(){
  jus.$clinit_Collectors$25methodref$unmodifiableMap$Type = emptyMethod;
}
;
defineClass(1306, 1, {1:1});
cggl.Ljava_util_stream_Collectors$25methodref$unmodifiableMap$Type_2_classLit = createForClass('java.util.stream', 'Collectors/25methodref$unmodifiableMap$Type', 1306, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$26methodref$unmodifiableMap$Type = function $clinit_Collectors$26methodref$unmodifiableMap$Type(){
  jus.$clinit_Collectors$26methodref$unmodifiableMap$Type = emptyMethod;
}
;
defineClass(1307, 1, {1:1});
cggl.Ljava_util_stream_Collectors$26methodref$unmodifiableMap$Type_2_classLit = createForClass('java.util.stream', 'Collectors/26methodref$unmodifiableMap$Type', 1307, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$27methodref$requireNonNull$Type = function $clinit_Collectors$27methodref$requireNonNull$Type(){
  jus.$clinit_Collectors$27methodref$requireNonNull$Type = emptyMethod;
}
;
defineClass(1308, 1, {1:1});
cggl.Ljava_util_stream_Collectors$27methodref$requireNonNull$Type_2_classLit = createForClass('java.util.stream', 'Collectors/27methodref$requireNonNull$Type', 1308, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$28methodref$ctor$Type = function $clinit_Collectors$28methodref$ctor$Type(){
  jus.$clinit_Collectors$28methodref$ctor$Type = emptyMethod;
}
;
defineClass(1311, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$28methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/28methodref$ctor$Type', 1311, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$29methodref$add$Type = function $clinit_Collectors$29methodref$add$Type(){
  jus.$clinit_Collectors$29methodref$add$Type = emptyMethod;
}
;
defineClass(1312, 1, {1:1});
cggl.Ljava_util_stream_Collectors$29methodref$add$Type_2_classLit = createForClass('java.util.stream', 'Collectors/29methodref$add$Type', 1312, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$2methodref$getAverage$Type = function $clinit_Collectors$2methodref$getAverage$Type(){
  jus.$clinit_Collectors$2methodref$getAverage$Type = emptyMethod;
}
;
defineClass(1260, 1, {1:1});
cggl.Ljava_util_stream_Collectors$2methodref$getAverage$Type_2_classLit = createForClass('java.util.stream', 'Collectors/2methodref$getAverage$Type', 1260, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$30methodref$requireNonNull$Type = function $clinit_Collectors$30methodref$requireNonNull$Type(){
  jus.$clinit_Collectors$30methodref$requireNonNull$Type = emptyMethod;
}
;
defineClass(1315, 1, {1:1});
cggl.Ljava_util_stream_Collectors$30methodref$requireNonNull$Type_2_classLit = createForClass('java.util.stream', 'Collectors/30methodref$requireNonNull$Type', 1315, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$31methodref$unmodifiableSet$Type = function $clinit_Collectors$31methodref$unmodifiableSet$Type(){
  jus.$clinit_Collectors$31methodref$unmodifiableSet$Type = emptyMethod;
}
;
defineClass(1316, 1, {1:1});
cggl.Ljava_util_stream_Collectors$31methodref$unmodifiableSet$Type_2_classLit = createForClass('java.util.stream', 'Collectors/31methodref$unmodifiableSet$Type', 1316, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$3methodref$ctor$Type = function $clinit_Collectors$3methodref$ctor$Type(){
  jus.$clinit_Collectors$3methodref$ctor$Type = emptyMethod;
}
;
defineClass(1263, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$3methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/3methodref$ctor$Type', 1263, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$4methodref$addAll$Type = function $clinit_Collectors$4methodref$addAll$Type(){
  jus.$clinit_Collectors$4methodref$addAll$Type = emptyMethod;
}
;
defineClass(1266, 1, {1:1});
cggl.Ljava_util_stream_Collectors$4methodref$addAll$Type_2_classLit = createForClass('java.util.stream', 'Collectors/4methodref$addAll$Type', 1266, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$5methodref$ctor$Type = function $clinit_Collectors$5methodref$ctor$Type(){
  jus.$clinit_Collectors$5methodref$ctor$Type = emptyMethod;
}
;
defineClass(1269, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$5methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'Collectors/5methodref$ctor$Type', 1269, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$6methodref$append$Type = function $clinit_Collectors$6methodref$append$Type(){
  jus.$clinit_Collectors$6methodref$append$Type = emptyMethod;
}
;
defineClass(1270, 1, {1:1});
cggl.Ljava_util_stream_Collectors$6methodref$append$Type_2_classLit = createForClass('java.util.stream', 'Collectors/6methodref$append$Type', 1270, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$7methodref$append$Type = function $clinit_Collectors$7methodref$append$Type(){
  jus.$clinit_Collectors$7methodref$append$Type = emptyMethod;
}
;
defineClass(1271, 1, {1:1});
cggl.Ljava_util_stream_Collectors$7methodref$append$Type_2_classLit = createForClass('java.util.stream', 'Collectors/7methodref$append$Type', 1271, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$8methodref$toString$Type = function $clinit_Collectors$8methodref$toString$Type(){
  jus.$clinit_Collectors$8methodref$toString$Type = emptyMethod;
}
;
defineClass(1272, 1, {1:1});
cggl.Ljava_util_stream_Collectors$8methodref$toString$Type_2_classLit = createForClass('java.util.stream', 'Collectors/8methodref$toString$Type', 1272, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$9methodref$add$Type = function $clinit_Collectors$9methodref$add$Type(){
  jus.$clinit_Collectors$9methodref$add$Type = emptyMethod;
}
;
defineClass(1274, 1, {1:1});
cggl.Ljava_util_stream_Collectors$9methodref$add$Type_2_classLit = createForClass('java.util.stream', 'Collectors/9methodref$add$Type', 1274, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$15$Type = function $clinit_Collectors$lambda$15$Type(){
  jus.$clinit_Collectors$lambda$15$Type = emptyMethod;
}
;
defineClass(1273, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$lambda$15$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$15$Type', 1273, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$19$Type = function $clinit_Collectors$lambda$19$Type(){
  jus.$clinit_Collectors$lambda$19$Type = emptyMethod;
}
;
defineClass(1277, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$19$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$19$Type', 1277, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$20$Type = function $clinit_Collectors$lambda$20$Type(){
  jus.$clinit_Collectors$lambda$20$Type = emptyMethod;
}
;
defineClass(1279, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$20$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$20$Type', 1279, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$21$Type = function $clinit_Collectors$lambda$21$Type(){
  jus.$clinit_Collectors$lambda$21$Type = emptyMethod;
}
;
defineClass(1278, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$21$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$21$Type', 1278, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$22$Type = function $clinit_Collectors$lambda$22$Type(){
  jus.$clinit_Collectors$lambda$22$Type = emptyMethod;
}
;
defineClass(1280, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$22$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$22$Type', 1280, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$25$Type = function $clinit_Collectors$lambda$25$Type(){
  jus.$clinit_Collectors$lambda$25$Type = emptyMethod;
}
;
defineClass(1283, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$lambda$25$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$25$Type', 1283, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$27$Type = function $clinit_Collectors$lambda$27$Type(){
  jus.$clinit_Collectors$lambda$27$Type = emptyMethod;
}
;
defineClass(1285, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$27$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$27$Type', 1285, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$28$Type = function $clinit_Collectors$lambda$28$Type(){
  jus.$clinit_Collectors$lambda$28$Type = emptyMethod;
}
;
defineClass(1286, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$lambda$28$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$28$Type', 1286, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$29$Type = function $clinit_Collectors$lambda$29$Type(){
  jus.$clinit_Collectors$lambda$29$Type = emptyMethod;
}
;
defineClass(1287, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$29$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$29$Type', 1287, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$3$Type = function $clinit_Collectors$lambda$3$Type(){
  jus.$clinit_Collectors$lambda$3$Type = emptyMethod;
}
;
defineClass(1261, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$3$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$3$Type', 1261, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$30$Type = function $clinit_Collectors$lambda$30$Type(){
  jus.$clinit_Collectors$lambda$30$Type = emptyMethod;
}
;
defineClass(1288, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$30$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$30$Type', 1288, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$31$Type = function $clinit_Collectors$lambda$31$Type(){
  jus.$clinit_Collectors$lambda$31$Type = emptyMethod;
}
;
defineClass(1289, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$31$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$31$Type', 1289, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$33$Type = function $clinit_Collectors$lambda$33$Type(){
  jus.$clinit_Collectors$lambda$33$Type = emptyMethod;
}
;
defineClass(1291, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$33$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$33$Type', 1291, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$34$Type = function $clinit_Collectors$lambda$34$Type(){
  jus.$clinit_Collectors$lambda$34$Type = emptyMethod;
}
;
defineClass(1292, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$34$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$34$Type', 1292, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$36$Type = function $clinit_Collectors$lambda$36$Type(){
  jus.$clinit_Collectors$lambda$36$Type = emptyMethod;
}
;
defineClass(1294, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$36$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$36$Type', 1294, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$37$Type = function $clinit_Collectors$lambda$37$Type(){
  jus.$clinit_Collectors$lambda$37$Type = emptyMethod;
}
;
defineClass(1295, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$37$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$37$Type', 1295, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$39$Type = function $clinit_Collectors$lambda$39$Type(){
  jus.$clinit_Collectors$lambda$39$Type = emptyMethod;
}
;
defineClass(1297, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$39$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$39$Type', 1297, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$4$Type = function $clinit_Collectors$lambda$4$Type(){
  jus.$clinit_Collectors$lambda$4$Type = emptyMethod;
}
;
defineClass(1262, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$4$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$4$Type', 1262, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$40$Type = function $clinit_Collectors$lambda$40$Type(){
  jus.$clinit_Collectors$lambda$40$Type = emptyMethod;
}
;
defineClass(1298, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$40$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$40$Type', 1298, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$42$Type = function $clinit_Collectors$lambda$42$Type(){
  jus.$clinit_Collectors$lambda$42$Type = emptyMethod;
}
;
defineClass(1300, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$42$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$42$Type', 1300, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$45$Type = function $clinit_Collectors$lambda$45$Type(){
  jus.$clinit_Collectors$lambda$45$Type = emptyMethod;
}
;
jus.Collectors$lambda$45$Type = function Collectors$lambda$45$Type(){
  jus.$clinit_Collectors$lambda$45$Type();
}
;
defineClass(749, 1, {1:1}, jus.Collectors$lambda$45$Type);
_.apply_0 = function apply_2(arg0, arg1){
  return jus.lambda$45(castTo(arg0, 38), castTo(arg1, 38));
}
;
cggl.Ljava_util_stream_Collectors$lambda$45$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$45$Type', 749, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$49$Type = function $clinit_Collectors$lambda$49$Type(){
  jus.$clinit_Collectors$lambda$49$Type = emptyMethod;
}
;
defineClass(1304, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$49$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$49$Type', 1304, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$54$Type = function $clinit_Collectors$lambda$54$Type(){
  jus.$clinit_Collectors$lambda$54$Type = emptyMethod;
}
;
defineClass(1309, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$54$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$54$Type', 1309, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$55$Type = function $clinit_Collectors$lambda$55$Type(){
  jus.$clinit_Collectors$lambda$55$Type = emptyMethod;
}
;
defineClass(1310, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$55$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$55$Type', 1310, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$58$Type = function $clinit_Collectors$lambda$58$Type(){
  jus.$clinit_Collectors$lambda$58$Type = emptyMethod;
}
;
defineClass(1313, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$58$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$58$Type', 1313, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$59$Type = function $clinit_Collectors$lambda$59$Type(){
  jus.$clinit_Collectors$lambda$59$Type = emptyMethod;
}
;
defineClass(1314, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$59$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$59$Type', 1314, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$6$Type = function $clinit_Collectors$lambda$6$Type(){
  jus.$clinit_Collectors$lambda$6$Type = emptyMethod;
}
;
defineClass(1264, 1, {1:1, 74:1});
cggl.Ljava_util_stream_Collectors$lambda$6$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$6$Type', 1264, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$7$Type = function $clinit_Collectors$lambda$7$Type(){
  jus.$clinit_Collectors$lambda$7$Type = emptyMethod;
}
;
defineClass(1265, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$7$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$7$Type', 1265, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$8$Type = function $clinit_Collectors$lambda$8$Type(){
  jus.$clinit_Collectors$lambda$8$Type = emptyMethod;
}
;
defineClass(1267, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$8$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$8$Type', 1267, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Collectors$lambda$9$Type = function $clinit_Collectors$lambda$9$Type(){
  jus.$clinit_Collectors$lambda$9$Type = emptyMethod;
}
;
defineClass(1268, 1, {1:1});
cggl.Ljava_util_stream_Collectors$lambda$9$Type_2_classLit = createForClass('java.util.stream', 'Collectors/lambda$9$Type', 1268, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream = function $clinit_IntStream(){
  jus.$clinit_IntStream = emptyMethod;
}
;
jus.$iterator = function $iterator(this$static){
  return this$static.iterator_1();
}
;
jus.$spliterator_4 = function $spliterator_4(this$static){
  return this$static.spliterator_1();
}
;
cggl.Ljava_util_stream_IntStream_2_classLit = createForInterface('java.util.stream', 'IntStream');
jus.$clinit_IntStream$0methodref$close$Type = function $clinit_IntStream$0methodref$close$Type(){
  jus.$clinit_IntStream$0methodref$close$Type = emptyMethod;
}
;
defineClass(835, 1, {1:1, 255:1});
cggl.Ljava_util_stream_IntStream$0methodref$close$Type_2_classLit = createForClass('java.util.stream', 'IntStream/0methodref$close$Type', 835, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$Builder = function $clinit_IntStream$Builder(){
  jus.$clinit_IntStream$Builder = emptyMethod;
}
;
cggl.Ljava_util_stream_IntStream$Builder_2_classLit = createForInterface('java.util.stream', 'IntStream/Builder');
jus.$clinit_IntStream$1 = function $clinit_IntStream$1(){
  jus.$clinit_IntStream$1 = emptyMethod;
}
;
defineClass(832, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStream$1_2_classLit = createForClass('java.util.stream', 'IntStream/1', 832, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$1methodref$close$Type = function $clinit_IntStream$1methodref$close$Type(){
  jus.$clinit_IntStream$1methodref$close$Type = emptyMethod;
}
;
defineClass(836, 1, {1:1, 255:1});
cggl.Ljava_util_stream_IntStream$1methodref$close$Type_2_classLit = createForClass('java.util.stream', 'IntStream/1methodref$close$Type', 836, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$2 = function $clinit_IntStream$2(){
  jus.$clinit_IntStream$2 = emptyMethod;
}
;
defineClass(833, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStream$2_2_classLit = createForClass('java.util.stream', 'IntStream/2', 833, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$2$lambda$0$Type = function $clinit_IntStream$2$lambda$0$Type(){
  jus.$clinit_IntStream$2$lambda$0$Type = emptyMethod;
}
;
defineClass(834, 1, {1:1});
cggl.Ljava_util_stream_IntStream$2$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStream/2/lambda$0$Type', 834, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$3 = function $clinit_IntStream$3(){
  jus.$clinit_IntStream$3 = emptyMethod;
}
;
defineClass(837, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStream$3_2_classLit = createForClass('java.util.stream', 'IntStream/3', 837, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$4 = function $clinit_IntStream$4(){
  jus.$clinit_IntStream$4 = emptyMethod;
}
;
defineClass(839, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStream$4_2_classLit = createForClass('java.util.stream', 'IntStream/4', 839, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$5 = function $clinit_IntStream$5(){
  jus.$clinit_IntStream$5 = emptyMethod;
}
;
defineClass(840, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStream$5_2_classLit = createForClass('java.util.stream', 'IntStream/5', 840, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$6 = function $clinit_IntStream$6(){
  jus.$clinit_IntStream$6 = emptyMethod;
}
;
defineClass(841, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStream$6_2_classLit = createForClass('java.util.stream', 'IntStream/6', 841, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$6$lambda$0$Type = function $clinit_IntStream$6$lambda$0$Type(){
  jus.$clinit_IntStream$6$lambda$0$Type = emptyMethod;
}
;
defineClass(842, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStream$6$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStream/6/lambda$0$Type', 842, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$7 = function $clinit_IntStream$7(){
  jus.$clinit_IntStream$7 = emptyMethod;
}
;
defineClass(843, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStream$7_2_classLit = createForClass('java.util.stream', 'IntStream/7', 843, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStream$7$lambda$0$Type = function $clinit_IntStream$7$lambda$0$Type(){
  jus.$clinit_IntStream$7$lambda$0$Type = emptyMethod;
}
;
defineClass(844, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStream$7$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStream/7/lambda$0$Type', 844, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStream$lambda$2$Type = function $clinit_IntStream$lambda$2$Type(){
  jus.$clinit_IntStream$lambda$2$Type = emptyMethod;
}
;
defineClass(838, 1, {1:1});
cggl.Ljava_util_stream_IntStream$lambda$2$Type_2_classLit = createForClass('java.util.stream', 'IntStream/lambda$2$Type', 838, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_TerminatableStream = function $clinit_TerminatableStream(){
  jus.$clinit_TerminatableStream = emptyMethod;
  jl.$clinit_Object();
}
;
jus.TerminatableStream = function TerminatableStream(previous){
  jus.$clinit_TerminatableStream();
  Object_0.call(this);
  this.$init_710();
  if (isNull(previous)) {
    this.root = null;
    this.onClose = new ju.ArrayList;
  }
   else {
    this.root = previous;
    this.onClose = null;
  }
}
;
jus.lambda$0_1 = function lambda$0_1(throwables_0, runnable_1){
  jus.$clinit_TerminatableStream();
  var e;
  {
    try {
      runnable_1.run();
    }
     catch ($e0) {
      $e0 = toJava($e0);
      if (instanceOf($e0, 20)) {
        e = $e0;
        throwables_0.add(e);
      }
       else 
        throw toJs($e0);
    }
  }
}
;
defineClass(239, 1, {1:1});
_.$init_710 = function $init_710(){
  this.terminated = false;
}
;
_.close_0 = function close_7(){
  if (isNull(this.root)) {
    this.terminated = true;
    this.runClosers();
  }
   else {
    this.root.close_0();
  }
}
;
_.runClosers = function runClosers(){
  var e, i, size_0, suppressed, throwables;
  throwables = new ju.ArrayList;
  this.onClose.forEach_0(new jus.TerminatableStream$lambda$0$Type(throwables));
  this.onClose.clear();
  if (!throwables.isEmpty()) {
    e = castTo(throwables.getAtIndex(0), 20);
    for (i = 1 , size_0 = throwables.size(); i < size_0; ++i) {
      suppressed = castTo(throwables.getAtIndex(i), 20);
      if (jsNotEquals(suppressed, e)) {
        e.addSuppressed(suppressed);
      }
    }
    if (instanceOf(e, 23)) {
      throw toJs(castTo(e, 23));
    }
    if (instanceOf(e, 123)) {
      throw toJs(castTo(e, 123));
    }
  }
}
;
_.terminate = function terminate(){
  if (isNull(this.root)) {
    this.throwIfTerminated();
    this.terminated = true;
  }
   else {
    this.root.terminate();
  }
}
;
_.throwIfTerminated = function throwIfTerminated(){
  if (isNotNull(this.root)) {
    this.root.throwIfTerminated();
  }
   else if (this.terminated) {
    throw toJs(new jl.IllegalStateException_0("Stream already terminated, can't be modified or used"));
  }
}
;
_.terminated = false;
cggl.Ljava_util_stream_TerminatableStream_2_classLit = createForClass('java.util.stream', 'TerminatableStream', 239, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl = function $clinit_IntStreamImpl(){
  jus.$clinit_IntStreamImpl = emptyMethod;
  jus.$clinit_TerminatableStream();
  jus.$clinit_IntStream();
}
;
jus.IntStreamImpl = function IntStreamImpl(previous, spliterator){
  jus.$clinit_IntStreamImpl();
  jus.TerminatableStream.call(this, previous);
  this.$init_711();
  this.spliterator = spliterator;
}
;
defineClass(379, 239, {1:1, 408:1}, jus.IntStreamImpl);
_.$init_711 = function $init_711(){
}
;
_.close_0 = function close_8(){
  getClassPrototype(239).close_0.call(this);
}
;
_.iterator = function iterator_25(){
  return this.iterator_1();
}
;
_.spliterator_0 = function spliterator_17(){
  return this.spliterator_1();
}
;
_.iterator_1 = function iterator_26(){
  return ju.iterator_21(this.spliterator_1());
}
;
_.spliterator_1 = function spliterator_16(){
  this.terminate();
  return this.spliterator;
}
;
cggl.Ljava_util_stream_IntStreamImpl_2_classLit = createForClass('java.util.stream', 'IntStreamImpl', 379, cggl.Ljava_util_stream_TerminatableStream_2_classLit);
jus.$clinit_IntStreamImpl$0methodref$ctor$Type = function $clinit_IntStreamImpl$0methodref$ctor$Type(){
  jus.$clinit_IntStreamImpl$0methodref$ctor$Type = emptyMethod;
}
;
defineClass(1238, 1, {1:1, 74:1});
cggl.Ljava_util_stream_IntStreamImpl$0methodref$ctor$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/0methodref$ctor$Type', 1238, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$1 = function $clinit_IntStreamImpl$1(){
  jus.$clinit_IntStreamImpl$1 = emptyMethod;
}
;
defineClass(1245, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStreamImpl$1_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/1', 1245, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$1$lambda$0$Type = function $clinit_IntStreamImpl$1$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$1$lambda$0$Type = emptyMethod;
}
;
defineClass(1246, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$1$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/1/lambda$0$Type', 1246, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$1methodref$combine$Type = function $clinit_IntStreamImpl$1methodref$combine$Type(){
  jus.$clinit_IntStreamImpl$1methodref$combine$Type = emptyMethod;
}
;
defineClass(1240, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$1methodref$combine$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/1methodref$combine$Type', 1240, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$2 = function $clinit_IntStreamImpl$2(){
  jus.$clinit_IntStreamImpl$2 = emptyMethod;
}
;
defineClass(1248, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStreamImpl$2_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/2', 1248, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$2$lambda$0$Type = function $clinit_IntStreamImpl$2$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$2$lambda$0$Type = emptyMethod;
}
;
defineClass(1249, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$2$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/2/lambda$0$Type', 1249, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$2methodref$add$Type = function $clinit_IntStreamImpl$2methodref$add$Type(){
  jus.$clinit_IntStreamImpl$2methodref$add$Type = emptyMethod;
}
;
defineClass(1247, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$2methodref$add$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/2methodref$add$Type', 1247, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$3 = function $clinit_IntStreamImpl$3(){
  jus.$clinit_IntStreamImpl$3 = emptyMethod;
}
;
defineClass(1250, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStreamImpl$3_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/3', 1250, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$3methodref$valueOf$Type = function $clinit_IntStreamImpl$3methodref$valueOf$Type(){
  jus.$clinit_IntStreamImpl$3methodref$valueOf$Type = emptyMethod;
}
;
defineClass(1253, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$3methodref$valueOf$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/3methodref$valueOf$Type', 1253, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$Empty = function $clinit_IntStreamImpl$Empty(){
  jus.$clinit_IntStreamImpl$Empty = emptyMethod;
}
;
defineClass(1223, 239, {1:1, 408:1});
cggl.Ljava_util_stream_IntStreamImpl$Empty_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/Empty', 1223, cggl.Ljava_util_stream_TerminatableStream_2_classLit);
jus.$clinit_IntStreamImpl$FilterSpliterator = function $clinit_IntStreamImpl$FilterSpliterator(){
  jus.$clinit_IntStreamImpl$FilterSpliterator = emptyMethod;
}
;
defineClass(1228, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStreamImpl$FilterSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/FilterSpliterator', 1228, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$FilterSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$FilterSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$FilterSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1236, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$FilterSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/FilterSpliterator/lambda$0$Type', 1236, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$LimitSpliterator = function $clinit_IntStreamImpl$LimitSpliterator(){
  jus.$clinit_IntStreamImpl$LimitSpliterator = emptyMethod;
}
;
defineClass(1230, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStreamImpl$LimitSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/LimitSpliterator', 1230, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToDoubleSpliterator = function $clinit_IntStreamImpl$MapToDoubleSpliterator(){
  jus.$clinit_IntStreamImpl$MapToDoubleSpliterator = emptyMethod;
}
;
defineClass(1227, 846, {1:1, 27:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToDoubleSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToDoubleSpliterator', 1227, cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToDoubleSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$MapToDoubleSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$MapToDoubleSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1235, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToDoubleSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToDoubleSpliterator/lambda$0$Type', 1235, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$MapToIntSpliterator = function $clinit_IntStreamImpl$MapToIntSpliterator(){
  jus.$clinit_IntStreamImpl$MapToIntSpliterator = emptyMethod;
}
;
defineClass(1224, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToIntSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToIntSpliterator', 1224, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToIntSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$MapToIntSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$MapToIntSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1232, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToIntSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToIntSpliterator/lambda$0$Type', 1232, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$MapToLongSpliterator = function $clinit_IntStreamImpl$MapToLongSpliterator(){
  jus.$clinit_IntStreamImpl$MapToLongSpliterator = emptyMethod;
}
;
defineClass(1226, 847, {1:1, 27:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToLongSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToLongSpliterator', 1226, cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToLongSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$MapToLongSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$MapToLongSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1234, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToLongSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToLongSpliterator/lambda$0$Type', 1234, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$MapToObjSpliterator = function $clinit_IntStreamImpl$MapToObjSpliterator(){
  jus.$clinit_IntStreamImpl$MapToObjSpliterator = emptyMethod;
}
;
defineClass(1225, 412, {1:1, 27:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToObjSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToObjSpliterator', 1225, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$MapToObjSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$MapToObjSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$MapToObjSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1233, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$MapToObjSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/MapToObjSpliterator/lambda$0$Type', 1233, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$SkipSpliterator = function $clinit_IntStreamImpl$SkipSpliterator(){
  jus.$clinit_IntStreamImpl$SkipSpliterator = emptyMethod;
}
;
defineClass(1229, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_IntStreamImpl$SkipSpliterator_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/SkipSpliterator', 1229, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_IntStreamImpl$SkipSpliterator$lambda$0$Type = function $clinit_IntStreamImpl$SkipSpliterator$lambda$0$Type(){
  jus.$clinit_IntStreamImpl$SkipSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1237, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$SkipSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/SkipSpliterator/lambda$0$Type', 1237, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$ValueConsumer = function $clinit_IntStreamImpl$ValueConsumer(){
  jus.$clinit_IntStreamImpl$ValueConsumer = emptyMethod;
}
;
defineClass(1231, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$ValueConsumer_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/ValueConsumer', 1231, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$1$Type = function $clinit_IntStreamImpl$lambda$1$Type(){
  jus.$clinit_IntStreamImpl$lambda$1$Type = emptyMethod;
}
;
defineClass(1239, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$1$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$1$Type', 1239, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$3$Type = function $clinit_IntStreamImpl$lambda$3$Type(){
  jus.$clinit_IntStreamImpl$lambda$3$Type = emptyMethod;
}
;
defineClass(1241, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$3$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$3$Type', 1241, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$4$Type = function $clinit_IntStreamImpl$lambda$4$Type(){
  jus.$clinit_IntStreamImpl$lambda$4$Type = emptyMethod;
}
;
defineClass(1242, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$4$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$4$Type', 1242, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$5$Type = function $clinit_IntStreamImpl$lambda$5$Type(){
  jus.$clinit_IntStreamImpl$lambda$5$Type = emptyMethod;
}
;
defineClass(1243, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$5$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$5$Type', 1243, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$6$Type = function $clinit_IntStreamImpl$lambda$6$Type(){
  jus.$clinit_IntStreamImpl$lambda$6$Type = emptyMethod;
}
;
defineClass(1244, 1, {1:1, 40:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$6$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$6$Type', 1244, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$8$Type = function $clinit_IntStreamImpl$lambda$8$Type(){
  jus.$clinit_IntStreamImpl$lambda$8$Type = emptyMethod;
}
;
defineClass(1251, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$8$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$8$Type', 1251, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_IntStreamImpl$lambda$9$Type = function $clinit_IntStreamImpl$lambda$9$Type(){
  jus.$clinit_IntStreamImpl$lambda$9$Type = emptyMethod;
}
;
defineClass(1252, 1, {1:1});
cggl.Ljava_util_stream_IntStreamImpl$lambda$9$Type_2_classLit = createForClass('java.util.stream', 'IntStreamImpl/lambda$9$Type', 1252, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream = function $clinit_Stream(){
  jus.$clinit_Stream = emptyMethod;
}
;
jus.of_1 = function of_1(t){
  jus.$clinit_Stream();
  return ju.singleton_0(t).stream();
}
;
cggl.Ljava_util_stream_Stream_2_classLit = createForInterface('java.util.stream', 'Stream');
jus.$clinit_Stream$0methodref$close$Type = function $clinit_Stream$0methodref$close$Type(){
  jus.$clinit_Stream$0methodref$close$Type = emptyMethod;
}
;
defineClass(1102, 1, {1:1, 255:1});
cggl.Ljava_util_stream_Stream$0methodref$close$Type_2_classLit = createForClass('java.util.stream', 'Stream/0methodref$close$Type', 1102, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$Builder = function $clinit_Stream$Builder(){
  jus.$clinit_Stream$Builder = emptyMethod;
}
;
cggl.Ljava_util_stream_Stream$Builder_2_classLit = createForInterface('java.util.stream', 'Stream/Builder');
jus.$clinit_Stream$1 = function $clinit_Stream$1(){
  jus.$clinit_Stream$1 = emptyMethod;
}
;
defineClass(1099, 1, {1:1});
cggl.Ljava_util_stream_Stream$1_2_classLit = createForClass('java.util.stream', 'Stream/1', 1099, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$1methodref$close$Type = function $clinit_Stream$1methodref$close$Type(){
  jus.$clinit_Stream$1methodref$close$Type = emptyMethod;
}
;
defineClass(1103, 1, {1:1, 255:1});
cggl.Ljava_util_stream_Stream$1methodref$close$Type_2_classLit = createForClass('java.util.stream', 'Stream/1methodref$close$Type', 1103, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$2 = function $clinit_Stream$2(){
  jus.$clinit_Stream$2 = emptyMethod;
}
;
defineClass(1100, 412, {1:1, 27:1});
cggl.Ljava_util_stream_Stream$2_2_classLit = createForClass('java.util.stream', 'Stream/2', 1100, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_Stream$2$lambda$0$Type = function $clinit_Stream$2$lambda$0$Type(){
  jus.$clinit_Stream$2$lambda$0$Type = emptyMethod;
}
;
defineClass(1101, 1, {1:1});
cggl.Ljava_util_stream_Stream$2$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'Stream/2/lambda$0$Type', 1101, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$3 = function $clinit_Stream$3(){
  jus.$clinit_Stream$3 = emptyMethod;
}
;
defineClass(1104, 412, {1:1, 27:1});
cggl.Ljava_util_stream_Stream$3_2_classLit = createForClass('java.util.stream', 'Stream/3', 1104, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_Stream$4 = function $clinit_Stream$4(){
  jus.$clinit_Stream$4 = emptyMethod;
}
;
defineClass(1106, 412, {1:1, 27:1});
cggl.Ljava_util_stream_Stream$4_2_classLit = createForClass('java.util.stream', 'Stream/4', 1106, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_Stream$5 = function $clinit_Stream$5(){
  jus.$clinit_Stream$5 = emptyMethod;
}
;
defineClass(1107, 412, {1:1, 27:1});
cggl.Ljava_util_stream_Stream$5_2_classLit = createForClass('java.util.stream', 'Stream/5', 1107, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_Stream$5$lambda$0$Type = function $clinit_Stream$5$lambda$0$Type(){
  jus.$clinit_Stream$5$lambda$0$Type = emptyMethod;
}
;
defineClass(1108, 1, {1:1});
cggl.Ljava_util_stream_Stream$5$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'Stream/5/lambda$0$Type', 1108, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$6 = function $clinit_Stream$6(){
  jus.$clinit_Stream$6 = emptyMethod;
}
;
defineClass(1109, 412, {1:1, 27:1});
cggl.Ljava_util_stream_Stream$6_2_classLit = createForClass('java.util.stream', 'Stream/6', 1109, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_Stream$6$lambda$0$Type = function $clinit_Stream$6$lambda$0$Type(){
  jus.$clinit_Stream$6$lambda$0$Type = emptyMethod;
}
;
defineClass(1110, 1, {1:1});
cggl.Ljava_util_stream_Stream$6$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'Stream/6/lambda$0$Type', 1110, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_Stream$lambda$2$Type = function $clinit_Stream$lambda$2$Type(){
  jus.$clinit_Stream$lambda$2$Type = emptyMethod;
}
;
defineClass(1105, 1, {1:1});
cggl.Ljava_util_stream_Stream$lambda$2$Type_2_classLit = createForClass('java.util.stream', 'Stream/lambda$2$Type', 1105, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl = function $clinit_StreamImpl(){
  jus.$clinit_StreamImpl = emptyMethod;
  jus.$clinit_TerminatableStream();
  jus.$clinit_Stream();
  jus.NULL_CONSUMER = new jus.StreamImpl$lambda$0$Type;
}
;
jus.StreamImpl = function StreamImpl(prev, spliterator){
  jus.$clinit_StreamImpl();
  jus.TerminatableStream.call(this, prev);
  this.$init_712();
  this.spliterator = spliterator;
}
;
jus.lambda$0_2 = function lambda$0_2(value_0){
  jus.$clinit_StreamImpl();
  {
  }
}
;
jus.lambda$2_0 = function lambda$2_0(arg0){
  jus.$clinit_StreamImpl();
  return initUnidimensionalArray(cggl.Ljava_lang_Object_2_classLit, {4:1, 1:1, 7:1}, 1, arg0, 5, 1);
}
;
jus.lambda$4 = function lambda$4(collector_0, a_1, t_2){
  jus.$clinit_StreamImpl();
  {
    collector_0.accumulator_0().accept_2(a_1, t_2);
    return a_1;
  }
}
;
jus.lambda$5 = function lambda$5(consumer_0, accumulator_1, item_2){
  jus.$clinit_StreamImpl();
  {
    consumer_0.accept_0(accumulator_1.apply_0(consumer_0.value_0, item_2));
  }
}
;
defineClass(357, 239, {1:1}, jus.StreamImpl);
_.$init_712 = function $init_712(){
}
;
_.close_0 = function close_9(){
  getClassPrototype(239).close_0.call(this);
}
;
_.collect_0 = function collect_1(collector){
  return collector.finisher_0().apply_1(this.reduce(collector.supplier_0().get_5(), new jus.StreamImpl$lambda$4$Type(collector), collector.combiner_0()));
}
;
_.flatMapToInt = function flatMapToInt(mapper){
  var flatMapSpliterator, spliteratorOfStreams;
  this.throwIfTerminated();
  spliteratorOfStreams = new jus.StreamImpl$MapToObjSpliterator(mapper, this.spliterator);
  flatMapSpliterator = new jus.StreamImpl$2(this, {l:4194303, m:4194303, h:524287}, 0, spliteratorOfStreams);
  return new jus.IntStreamImpl(this, flatMapSpliterator);
}
;
_.forEach_0 = function forEach_8(action){
  this.forEachOrdered(action);
}
;
_.forEachOrdered = function forEachOrdered(action){
  this.terminate();
  this.spliterator.forEachRemaining(action);
}
;
_.iterator = function iterator_27(){
  return ju.iterator_22(this.spliterator_0());
}
;
_.map_1 = function map_3(mapper){
  this.throwIfTerminated();
  return new jus.StreamImpl(this, new jus.StreamImpl$MapToObjSpliterator(mapper, this.spliterator));
}
;
_.reduce = function reduce(identity, accumulator, combiner){
  var consumer;
  this.terminate();
  consumer = new jus.StreamImpl$ValueConsumer;
  consumer.value_0 = identity;
  this.spliterator.forEachRemaining(new jus.StreamImpl$lambda$5$Type(consumer, accumulator));
  return consumer.value_0;
}
;
_.spliterator_0 = function spliterator_18(){
  this.terminate();
  return this.spliterator;
}
;
_.toArray_2 = function toArray_12(){
  return this.toArray_3(new jus.StreamImpl$0methodref$lambda$2$Type);
}
;
_.toArray_3 = function toArray_13(generator){
  var collected;
  collected = castTo(this.collect_0(jus.toList()), 57);
  return collected.toArray_0(castToArray(generator.apply_2(collected.size())));
}
;
cggl.Ljava_util_stream_StreamImpl_2_classLit = createForClass('java.util.stream', 'StreamImpl', 357, cggl.Ljava_util_stream_TerminatableStream_2_classLit);
jus.$clinit_StreamImpl$0methodref$lambda$2$Type = function $clinit_StreamImpl$0methodref$lambda$2$Type(){
  jus.$clinit_StreamImpl$0methodref$lambda$2$Type = emptyMethod;
}
;
jus.StreamImpl$0methodref$lambda$2$Type = function StreamImpl$0methodref$lambda$2$Type(){
  jus.$clinit_StreamImpl$0methodref$lambda$2$Type();
}
;
defineClass(718, 1, {1:1}, jus.StreamImpl$0methodref$lambda$2$Type);
_.apply_2 = function apply_3(arg0){
  return jus.lambda$2_0(arg0);
}
;
cggl.Ljava_util_stream_StreamImpl$0methodref$lambda$2$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/0methodref$lambda$2$Type', 718, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$1 = function $clinit_StreamImpl$1(){
  jus.$clinit_StreamImpl$1 = emptyMethod;
}
;
defineClass(1190, 412, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$1_2_classLit = createForClass('java.util.stream', 'StreamImpl/1', 1190, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$1$lambda$0$Type = function $clinit_StreamImpl$1$lambda$0$Type(){
  jus.$clinit_StreamImpl$1$lambda$0$Type = emptyMethod;
}
;
defineClass(1191, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$1$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/1/lambda$0$Type', 1191, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$1methodref$add$Type = function $clinit_StreamImpl$1methodref$add$Type(){
  jus.$clinit_StreamImpl$1methodref$add$Type = emptyMethod;
}
;
defineClass(1196, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$1methodref$add$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/1methodref$add$Type', 1196, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$2 = function $clinit_StreamImpl$2(){
  jus.$clinit_StreamImpl$2 = emptyMethod;
  ju.$clinit_Spliterators$AbstractIntSpliterator();
}
;
jus.StreamImpl$2 = function StreamImpl$2(this$0, $anonymous0, $anonymous1, val$spliteratorOfStreams){
  jus.$clinit_StreamImpl$2();
  this.this$01 = this$0;
  this.val$spliteratorOfStreams5 = val$spliteratorOfStreams;
  ju.Spliterators$AbstractIntSpliterator.call(this, $anonymous0, $anonymous1);
  this.$init_713();
}
;
defineClass(721, 308, {1:1, 27:1, 64:1}, jus.StreamImpl$2);
_.$init_713 = function $init_713(){
}
;
_.lambda$0 = function lambda$0_3(n_0){
  jus.$clinit_StreamImpl$2();
  {
    if (isNotNull(n_0)) {
      this.nextStream = n_0;
      this.next_0 = n_0.spliterator_1();
    }
  }
}
;
_.tryAdvance_0 = function tryAdvance_3(action){
  return this.tryAdvance_1(castTo(action, 40));
}
;
_.advanceToNextSpliterator = function advanceToNextSpliterator(){
  while (isNull(this.next_0)) {
    if (!this.val$spliteratorOfStreams5.tryAdvance(new jus.StreamImpl$2$lambda$0$Type(this))) {
      return false;
    }
  }
  return true;
}
;
_.tryAdvance_1 = function tryAdvance_4(action){
  while (this.advanceToNextSpliterator()) {
    if (this.next_0.tryAdvance_0(action)) {
      return true;
    }
     else {
      this.nextStream.close_0();
      this.nextStream = null;
      this.next_0 = null;
    }
  }
  return false;
}
;
cggl.Ljava_util_stream_StreamImpl$2_2_classLit = createForClass('java.util.stream', 'StreamImpl/2', 721, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_StreamImpl$2$lambda$0$Type = function $clinit_StreamImpl$2$lambda$0$Type(){
  jus.$clinit_StreamImpl$2$lambda$0$Type = emptyMethod;
}
;
jus.StreamImpl$2$lambda$0$Type = function StreamImpl$2$lambda$0$Type($$outer_0){
  jus.$clinit_StreamImpl$2$lambda$0$Type();
  this.$$outer_0 = $$outer_0;
}
;
defineClass(722, 1, {1:1}, jus.StreamImpl$2$lambda$0$Type);
_.accept_0 = function accept_11(arg0){
  this.$$outer_0.lambda$0(castTo(arg0, 408));
}
;
cggl.Ljava_util_stream_StreamImpl$2$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/2/lambda$0$Type', 722, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$3 = function $clinit_StreamImpl$3(){
  jus.$clinit_StreamImpl$3 = emptyMethod;
}
;
defineClass(1192, 847, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$3_2_classLit = createForClass('java.util.stream', 'StreamImpl/3', 1192, cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit);
jus.$clinit_StreamImpl$3$lambda$0$Type = function $clinit_StreamImpl$3$lambda$0$Type(){
  jus.$clinit_StreamImpl$3$lambda$0$Type = emptyMethod;
}
;
defineClass(1193, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$3$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/3/lambda$0$Type', 1193, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$4 = function $clinit_StreamImpl$4(){
  jus.$clinit_StreamImpl$4 = emptyMethod;
}
;
defineClass(1194, 846, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$4_2_classLit = createForClass('java.util.stream', 'StreamImpl/4', 1194, cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit);
jus.$clinit_StreamImpl$4$lambda$0$Type = function $clinit_StreamImpl$4$lambda$0$Type(){
  jus.$clinit_StreamImpl$4$lambda$0$Type = emptyMethod;
}
;
defineClass(1195, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$4$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/4/lambda$0$Type', 1195, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$5 = function $clinit_StreamImpl$5(){
  jus.$clinit_StreamImpl$5 = emptyMethod;
}
;
defineClass(1197, 412, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$5_2_classLit = createForClass('java.util.stream', 'StreamImpl/5', 1197, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$5$2methodref$add$Type = function $clinit_StreamImpl$5$2methodref$add$Type(){
  jus.$clinit_StreamImpl$5$2methodref$add$Type = emptyMethod;
}
;
defineClass(1198, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$5$2methodref$add$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/5/2methodref$add$Type', 1198, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$6 = function $clinit_StreamImpl$6(){
  jus.$clinit_StreamImpl$6 = emptyMethod;
}
;
defineClass(1199, 412, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$6_2_classLit = createForClass('java.util.stream', 'StreamImpl/6', 1199, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$6$lambda$0$Type = function $clinit_StreamImpl$6$lambda$0$Type(){
  jus.$clinit_StreamImpl$6$lambda$0$Type = emptyMethod;
}
;
defineClass(1200, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$6$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/6/lambda$0$Type', 1200, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$Empty = function $clinit_StreamImpl$Empty(){
  jus.$clinit_StreamImpl$Empty = emptyMethod;
}
;
defineClass(1176, 239, {1:1});
cggl.Ljava_util_stream_StreamImpl$Empty_2_classLit = createForClass('java.util.stream', 'StreamImpl/Empty', 1176, cggl.Ljava_util_stream_TerminatableStream_2_classLit);
jus.$clinit_StreamImpl$FilterSpliterator = function $clinit_StreamImpl$FilterSpliterator(){
  jus.$clinit_StreamImpl$FilterSpliterator = emptyMethod;
}
;
defineClass(1180, 412, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$FilterSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/FilterSpliterator', 1180, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$FilterSpliterator$lambda$0$Type = function $clinit_StreamImpl$FilterSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$FilterSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1186, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$FilterSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/FilterSpliterator/lambda$0$Type', 1186, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$LimitSpliterator = function $clinit_StreamImpl$LimitSpliterator(){
  jus.$clinit_StreamImpl$LimitSpliterator = emptyMethod;
}
;
defineClass(1182, 412, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$LimitSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/LimitSpliterator', 1182, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToDoubleSpliterator = function $clinit_StreamImpl$MapToDoubleSpliterator(){
  jus.$clinit_StreamImpl$MapToDoubleSpliterator = emptyMethod;
}
;
defineClass(1179, 846, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$MapToDoubleSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToDoubleSpliterator', 1179, cggl.Ljava_util_Spliterators$AbstractDoubleSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToDoubleSpliterator$lambda$0$Type = function $clinit_StreamImpl$MapToDoubleSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$MapToDoubleSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1185, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$MapToDoubleSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToDoubleSpliterator/lambda$0$Type', 1185, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$MapToIntSpliterator = function $clinit_StreamImpl$MapToIntSpliterator(){
  jus.$clinit_StreamImpl$MapToIntSpliterator = emptyMethod;
}
;
defineClass(1177, 308, {1:1, 27:1, 64:1});
cggl.Ljava_util_stream_StreamImpl$MapToIntSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToIntSpliterator', 1177, cggl.Ljava_util_Spliterators$AbstractIntSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToIntSpliterator$lambda$0$Type = function $clinit_StreamImpl$MapToIntSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$MapToIntSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1183, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$MapToIntSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToIntSpliterator/lambda$0$Type', 1183, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$MapToLongSpliterator = function $clinit_StreamImpl$MapToLongSpliterator(){
  jus.$clinit_StreamImpl$MapToLongSpliterator = emptyMethod;
}
;
defineClass(1178, 847, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$MapToLongSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToLongSpliterator', 1178, cggl.Ljava_util_Spliterators$AbstractLongSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToLongSpliterator$lambda$0$Type = function $clinit_StreamImpl$MapToLongSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$MapToLongSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1184, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$MapToLongSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToLongSpliterator/lambda$0$Type', 1184, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$MapToObjSpliterator = function $clinit_StreamImpl$MapToObjSpliterator(){
  jus.$clinit_StreamImpl$MapToObjSpliterator = emptyMethod;
  ju.$clinit_Spliterators$AbstractSpliterator();
}
;
jus.StreamImpl$MapToObjSpliterator = function StreamImpl$MapToObjSpliterator(map_0, original){
  jus.$clinit_StreamImpl$MapToObjSpliterator();
  ju.Spliterators$AbstractSpliterator.call(this, original.estimateSize_0(), original.characteristics_0() & ~(4 | 1));
  this.$init_714();
  ji2.checkNotNull_0(map_0);
  this.map_0 = map_0;
  this.original = original;
}
;
defineClass(358, 412, {1:1, 27:1}, jus.StreamImpl$MapToObjSpliterator);
_.$init_714 = function $init_714(){
}
;
_.lambda$0_0 = function lambda$0_4(action_1, u_1){
  jus.$clinit_StreamImpl$MapToObjSpliterator();
  action_1.accept_0(this.map_0.apply_1(u_1));
}
;
_.tryAdvance = function tryAdvance_5(action){
  return this.original.tryAdvance(new jus.StreamImpl$MapToObjSpliterator$lambda$0$Type(this, action));
}
;
cggl.Ljava_util_stream_StreamImpl$MapToObjSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToObjSpliterator', 358, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$MapToObjSpliterator$lambda$0$Type = function $clinit_StreamImpl$MapToObjSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$MapToObjSpliterator$lambda$0$Type = emptyMethod;
}
;
jus.StreamImpl$MapToObjSpliterator$lambda$0$Type = function StreamImpl$MapToObjSpliterator$lambda$0$Type($$outer_0, action_1){
  jus.$clinit_StreamImpl$MapToObjSpliterator$lambda$0$Type();
  this.$$outer_0 = $$outer_0;
  this.action_1 = action_1;
}
;
defineClass(716, 1, {1:1}, jus.StreamImpl$MapToObjSpliterator$lambda$0$Type);
_.accept_0 = function accept_12(arg0){
  this.$$outer_0.lambda$0_0(this.action_1, arg0);
}
;
cggl.Ljava_util_stream_StreamImpl$MapToObjSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/MapToObjSpliterator/lambda$0$Type', 716, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$SkipSpliterator = function $clinit_StreamImpl$SkipSpliterator(){
  jus.$clinit_StreamImpl$SkipSpliterator = emptyMethod;
}
;
defineClass(1181, 412, {1:1, 27:1});
cggl.Ljava_util_stream_StreamImpl$SkipSpliterator_2_classLit = createForClass('java.util.stream', 'StreamImpl/SkipSpliterator', 1181, cggl.Ljava_util_Spliterators$AbstractSpliterator_2_classLit);
jus.$clinit_StreamImpl$SkipSpliterator$lambda$0$Type = function $clinit_StreamImpl$SkipSpliterator$lambda$0$Type(){
  jus.$clinit_StreamImpl$SkipSpliterator$lambda$0$Type = emptyMethod;
}
;
defineClass(1187, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$SkipSpliterator$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/SkipSpliterator/lambda$0$Type', 1187, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$ValueConsumer = function $clinit_StreamImpl$ValueConsumer(){
  jus.$clinit_StreamImpl$ValueConsumer = emptyMethod;
  jl.$clinit_Object();
  juf.$clinit_Consumer();
}
;
jus.StreamImpl$ValueConsumer = function StreamImpl$ValueConsumer(){
  jus.$clinit_StreamImpl$ValueConsumer();
  Object_0.call(this);
  this.$init_715();
}
;
defineClass(715, 1, {1:1}, jus.StreamImpl$ValueConsumer);
_.$init_715 = function $init_715(){
}
;
_.accept_0 = function accept_13(value_0){
  this.value_0 = value_0;
}
;
cggl.Ljava_util_stream_StreamImpl$ValueConsumer_2_classLit = createForClass('java.util.stream', 'StreamImpl/ValueConsumer', 715, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$lambda$0$Type = function $clinit_StreamImpl$lambda$0$Type(){
  jus.$clinit_StreamImpl$lambda$0$Type = emptyMethod;
}
;
jus.StreamImpl$lambda$0$Type = function StreamImpl$lambda$0$Type(){
  jus.$clinit_StreamImpl$lambda$0$Type();
}
;
defineClass(717, 1, {1:1}, jus.StreamImpl$lambda$0$Type);
_.accept_0 = function accept_14(arg0){
  jus.lambda$0_2(arg0);
}
;
cggl.Ljava_util_stream_StreamImpl$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$0$Type', 717, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$lambda$1$Type = function $clinit_StreamImpl$lambda$1$Type(){
  jus.$clinit_StreamImpl$lambda$1$Type = emptyMethod;
}
;
defineClass(1188, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$lambda$1$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$1$Type', 1188, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$lambda$3$Type = function $clinit_StreamImpl$lambda$3$Type(){
  jus.$clinit_StreamImpl$lambda$3$Type = emptyMethod;
}
;
defineClass(1189, 1, {1:1});
cggl.Ljava_util_stream_StreamImpl$lambda$3$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$3$Type', 1189, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$lambda$4$Type = function $clinit_StreamImpl$lambda$4$Type(){
  jus.$clinit_StreamImpl$lambda$4$Type = emptyMethod;
}
;
jus.StreamImpl$lambda$4$Type = function StreamImpl$lambda$4$Type(collector_0){
  jus.$clinit_StreamImpl$lambda$4$Type();
  this.collector_0 = collector_0;
}
;
defineClass(719, 1, {1:1}, jus.StreamImpl$lambda$4$Type);
_.apply_0 = function apply_4(arg0, arg1){
  return jus.lambda$4(this.collector_0, arg0, arg1);
}
;
cggl.Ljava_util_stream_StreamImpl$lambda$4$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$4$Type', 719, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamImpl$lambda$5$Type = function $clinit_StreamImpl$lambda$5$Type(){
  jus.$clinit_StreamImpl$lambda$5$Type = emptyMethod;
}
;
jus.StreamImpl$lambda$5$Type = function StreamImpl$lambda$5$Type(consumer_0, accumulator_1){
  jus.$clinit_StreamImpl$lambda$5$Type();
  this.consumer_0 = consumer_0;
  this.accumulator_1 = accumulator_1;
}
;
defineClass(720, 1, {1:1}, jus.StreamImpl$lambda$5$Type);
_.accept_0 = function accept_15(arg0){
  jus.lambda$5(this.consumer_0, this.accumulator_1, arg0);
}
;
cggl.Ljava_util_stream_StreamImpl$lambda$5$Type_2_classLit = createForClass('java.util.stream', 'StreamImpl/lambda$5$Type', 720, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport = function $clinit_StreamSupport(){
  jus.$clinit_StreamSupport = emptyMethod;
  jl.$clinit_Object();
}
;
jus.intStream = function intStream(spliterator, parallel){
  return new jus.IntStreamImpl(null, spliterator);
}
;
jus.intStream_0 = function intStream_0(supplier, characteristics, parallel){
  jus.$clinit_StreamSupport();
  return jus.of_1(supplier).map_1(new jus.StreamSupport$1methodref$get$Type).flatMapToInt(new jus.StreamSupport$lambda$3$Type(parallel));
}
;
jus.lambda$3 = function lambda$3(parallel_0, intSpliterator_1){
  jus.$clinit_StreamSupport();
  {
    return jus.intStream(intSpliterator_1, parallel_0);
  }
}
;
jus.stream_1 = function stream_1(spliterator, parallel){
  jus.$clinit_StreamSupport();
  return new jus.StreamImpl(null, spliterator);
}
;
defineClass(945, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport_2_classLit = createForClass('java.util.stream', 'StreamSupport', 945, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$0methodref$get$Type = function $clinit_StreamSupport$0methodref$get$Type(){
  jus.$clinit_StreamSupport$0methodref$get$Type = emptyMethod;
}
;
defineClass(946, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$0methodref$get$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/0methodref$get$Type', 946, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$1methodref$get$Type = function $clinit_StreamSupport$1methodref$get$Type(){
  jus.$clinit_StreamSupport$1methodref$get$Type = emptyMethod;
}
;
jus.StreamSupport$1methodref$get$Type = function StreamSupport$1methodref$get$Type(){
  jus.$clinit_StreamSupport$1methodref$get$Type();
}
;
defineClass(503, 1, {1:1}, jus.StreamSupport$1methodref$get$Type);
_.apply_1 = function apply_5(arg0){
  return castTo(arg0, 74).get_5();
}
;
cggl.Ljava_util_stream_StreamSupport$1methodref$get$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/1methodref$get$Type', 503, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$2methodref$get$Type = function $clinit_StreamSupport$2methodref$get$Type(){
  jus.$clinit_StreamSupport$2methodref$get$Type = emptyMethod;
}
;
defineClass(948, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$2methodref$get$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/2methodref$get$Type', 948, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$3methodref$get$Type = function $clinit_StreamSupport$3methodref$get$Type(){
  jus.$clinit_StreamSupport$3methodref$get$Type = emptyMethod;
}
;
defineClass(950, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$3methodref$get$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/3methodref$get$Type', 950, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$lambda$1$Type = function $clinit_StreamSupport$lambda$1$Type(){
  jus.$clinit_StreamSupport$lambda$1$Type = emptyMethod;
}
;
defineClass(947, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$lambda$1$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/lambda$1$Type', 947, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$lambda$3$Type = function $clinit_StreamSupport$lambda$3$Type(){
  jus.$clinit_StreamSupport$lambda$3$Type = emptyMethod;
}
;
jus.StreamSupport$lambda$3$Type = function StreamSupport$lambda$3$Type(parallel_0){
  jus.$clinit_StreamSupport$lambda$3$Type();
  this.parallel_0 = parallel_0;
}
;
defineClass(504, 1, {1:1}, jus.StreamSupport$lambda$3$Type);
_.apply_1 = function apply_6(arg0){
  return jus.lambda$3(this.parallel_0, castTo(arg0, 64));
}
;
_.parallel_0 = false;
cggl.Ljava_util_stream_StreamSupport$lambda$3$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/lambda$3$Type', 504, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$lambda$5$Type = function $clinit_StreamSupport$lambda$5$Type(){
  jus.$clinit_StreamSupport$lambda$5$Type = emptyMethod;
}
;
defineClass(949, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$lambda$5$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/lambda$5$Type', 949, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_StreamSupport$lambda$7$Type = function $clinit_StreamSupport$lambda$7$Type(){
  jus.$clinit_StreamSupport$lambda$7$Type = emptyMethod;
}
;
defineClass(951, 1, {1:1});
cggl.Ljava_util_stream_StreamSupport$lambda$7$Type_2_classLit = createForClass('java.util.stream', 'StreamSupport/lambda$7$Type', 951, cggl.Ljava_lang_Object_2_classLit);
jus.$clinit_TerminatableStream$lambda$0$Type = function $clinit_TerminatableStream$lambda$0$Type(){
  jus.$clinit_TerminatableStream$lambda$0$Type = emptyMethod;
}
;
jus.TerminatableStream$lambda$0$Type = function TerminatableStream$lambda$0$Type(throwables_0){
  jus.$clinit_TerminatableStream$lambda$0$Type();
  this.throwables_0 = throwables_0;
}
;
defineClass(723, 1, {1:1}, jus.TerminatableStream$lambda$0$Type);
_.accept_0 = function accept_16(arg0){
  jus.lambda$0_1(this.throwables_0, castTo(arg0, 255));
}
;
cggl.Ljava_util_stream_TerminatableStream$lambda$0$Type_2_classLit = createForClass('java.util.stream', 'TerminatableStream/lambda$0$Type', 723, cggl.Ljava_lang_Object_2_classLit);
ji2.$clinit_ArrayHelper$NativeArray = function $clinit_ArrayHelper$NativeArray(){
  ji2.$clinit_ArrayHelper$NativeArray = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_ArrayHelper$NativeFunction = function $clinit_ArrayHelper$NativeFunction(){
  ji2.$clinit_ArrayHelper$NativeFunction = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_ArrayStamper = function $clinit_ArrayStamper(){
  ji2.$clinit_ArrayStamper = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.stampJavaTypeInfo_1 = function stampJavaTypeInfo_1(array, referenceType){
  ji2.$clinit_ArrayStamper();
  return cggl.stampJavaTypeInfo_0(array, referenceType);
}
;
defineClass(1167, 1, {1:1});
cggl.Ljavaemul_internal_ArrayStamper_2_classLit = createForClass('javaemul.internal', 'ArrayStamper', 1167, cggl.Ljava_lang_Object_2_classLit);
ji2.$clinit_EmulatedCharset = function $clinit_EmulatedCharset(){
  ji2.$clinit_EmulatedCharset = emptyMethod;
  jnc.$clinit_Charset();
  ji2.UTF_8_0 = new ji2.EmulatedCharset$UtfCharset('UTF-8');
  ji2.ISO_LATIN_1 = new ji2.EmulatedCharset$LatinCharset('ISO-LATIN-1');
  ji2.ISO_8859_1_0 = new ji2.EmulatedCharset$LatinCharset('ISO-8859-1');
}
;
ji2.EmulatedCharset = function EmulatedCharset(name_0){
  ji2.$clinit_EmulatedCharset();
  jnc.Charset.call(this, name_0, null);
  this.$init_716();
}
;
defineClass(144, 124, {10:1, 1:1, 124:1, 144:1});
_.$init_716 = function $init_716(){
}
;
cggl.Ljavaemul_internal_EmulatedCharset_2_classLit = createForClass('javaemul.internal', 'EmulatedCharset', 144, cggl.Ljava_nio_charset_Charset_2_classLit);
ji2.$clinit_EmulatedCharset$LatinCharset = function $clinit_EmulatedCharset$LatinCharset(){
  ji2.$clinit_EmulatedCharset$LatinCharset = emptyMethod;
  ji2.$clinit_EmulatedCharset();
}
;
ji2.EmulatedCharset$LatinCharset = function EmulatedCharset$LatinCharset(name_0){
  ji2.$clinit_EmulatedCharset$LatinCharset();
  ji2.EmulatedCharset.call(this, name_0);
  this.$init_717();
}
;
defineClass(328, 144, {10:1, 1:1, 124:1, 144:1}, ji2.EmulatedCharset$LatinCharset);
_.$init_717 = function $init_717(){
}
;
_.decodeString = function decodeString(bytes, ofs, len){
  var chars, i;
  chars = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, len, 15, 1);
  for (i = 0; i < len; ++i) {
    chars[i] = narrow_char(bytes[ofs + i] & 255);
  }
  return chars;
}
;
_.getBytes = function getBytes(str){
  var bytes, i, n;
  n = jl.length__I__devirtual$_0(str);
  bytes = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, n, 15, 1);
  for (i = 0; i < n; ++i) {
    bytes[i] = narrow_byte(jl.charAt_I_C__devirtual$_0(str, i) & 255);
  }
  return bytes;
}
;
cggl.Ljavaemul_internal_EmulatedCharset$LatinCharset_2_classLit = createForClass('javaemul.internal', 'EmulatedCharset/LatinCharset', 328, cggl.Ljavaemul_internal_EmulatedCharset_2_classLit);
ji2.$clinit_EmulatedCharset$UtfCharset = function $clinit_EmulatedCharset$UtfCharset(){
  ji2.$clinit_EmulatedCharset$UtfCharset = emptyMethod;
  ji2.$clinit_EmulatedCharset();
}
;
ji2.EmulatedCharset$UtfCharset = function EmulatedCharset$UtfCharset(name_0){
  ji2.$clinit_EmulatedCharset$UtfCharset();
  ji2.EmulatedCharset.call(this, name_0);
  this.$init_718();
}
;
defineClass(506, 144, {10:1, 1:1, 124:1, 144:1}, ji2.EmulatedCharset$UtfCharset);
_.$init_718 = function $init_718(){
}
;
_.decodeString = function decodeString_0(bytes, ofs, len){
  var b, ch_0, charCount, chars, count, i, i0, outIdx;
  charCount = 0;
  for (i0 = 0; i0 < len;) {
    ++charCount;
    ch_0 = bytes[ofs + i0];
    if ((ch_0 & 192) == 128) {
      throw toJs(new jl.IllegalArgumentException_0('Invalid UTF8 sequence'));
    }
     else if ((ch_0 & 128) == 0) {
      ++i0;
    }
     else if ((ch_0 & 224) == 192) {
      i0 += 2;
    }
     else if ((ch_0 & 240) == 224) {
      i0 += 3;
    }
     else if ((ch_0 & 248) == 240) {
      i0 += 4;
    }
     else {
      throw toJs(new jl.IllegalArgumentException_0('Invalid UTF8 sequence'));
    }
    if (i0 > len) {
      throw toJs(new jl.IndexOutOfBoundsException_0('Invalid UTF8 sequence'));
    }
  }
  chars = initUnidimensionalArray(cggl.C_classLit, {4:1, 1:1}, 5, charCount, 15, 1);
  outIdx = 0;
  count = 0;
  for (i = 0; i < len;) {
    ch_0 = bytes[ofs + i++];
    if ((ch_0 & 128) == 0) {
      count = 1;
      ch_0 &= 127;
    }
     else if ((ch_0 & 224) == 192) {
      count = 2;
      ch_0 &= 31;
    }
     else if ((ch_0 & 240) == 224) {
      count = 3;
      ch_0 &= 15;
    }
     else if ((ch_0 & 248) == 240) {
      count = 4;
      ch_0 &= 7;
    }
     else if ((ch_0 & 252) == 248) {
      count = 5;
      ch_0 &= 3;
    }
    while (--count > 0) {
      b = bytes[ofs + i++];
      if ((b & 192) != 128) {
        throw toJs(new jl.IllegalArgumentException_0('Invalid UTF8 sequence at ' + (ofs + i - 1) + ', byte=' + toHexString(b)));
      }
      ch_0 = ch_0 << 6 | b & 63;
    }
    outIdx += toChars(ch_0, chars, outIdx);
  }
  return chars;
}
;
_.encodeUtf8 = function encodeUtf8(bytes, codePoint){
  if (codePoint < 1 << 7) {
    ji2.push_2(bytes, narrow_byte(codePoint & 127));
  }
   else if (codePoint < 1 << 11) {
    ji2.push_2(bytes, narrow_byte(codePoint >> 6 & 31 | 192));
    ji2.push_2(bytes, narrow_byte(codePoint & 63 | 128));
  }
   else if (codePoint < 1 << 16) {
    ji2.push_2(bytes, narrow_byte(codePoint >> 12 & 15 | 224));
    ji2.push_2(bytes, narrow_byte(codePoint >> 6 & 63 | 128));
    ji2.push_2(bytes, narrow_byte(codePoint & 63 | 128));
  }
   else if (codePoint < 1 << 21) {
    ji2.push_2(bytes, narrow_byte(codePoint >> 18 & 7 | 240));
    ji2.push_2(bytes, narrow_byte(codePoint >> 12 & 63 | 128));
    ji2.push_2(bytes, narrow_byte(codePoint >> 6 & 63 | 128));
    ji2.push_2(bytes, narrow_byte(codePoint & 63 | 128));
  }
   else if (codePoint < 1 << 26) {
    ji2.push_2(bytes, narrow_byte(codePoint >> 24 & 3 | 248));
    ji2.push_2(bytes, narrow_byte(codePoint >> 18 & 63 | 128));
    ji2.push_2(bytes, narrow_byte(codePoint >> 12 & 63 | 128));
    ji2.push_2(bytes, narrow_byte(codePoint >> 6 & 63 | 128));
    ji2.push_2(bytes, narrow_byte(codePoint & 63 | 128));
  }
   else {
    throw toJs(new jl.IllegalArgumentException_0('Character out of range: ' + codePoint));
  }
}
;
_.getBytes = function getBytes_0(str){
  var bytes, ch_0, i, n;
  n = jl.length__I__devirtual$_0(str);
  bytes = initUnidimensionalArray(cggl.B_classLit, {8:1, 4:1, 1:1}, 5, 0, 15, 1);
  for (i = 0; i < n;) {
    ch_0 = jl.codePointAt_I_I__devirtual$(str, i);
    i += charCount_0(ch_0);
    this.encodeUtf8(bytes, ch_0);
  }
  return bytes;
}
;
cggl.Ljavaemul_internal_EmulatedCharset$UtfCharset_2_classLit = createForClass('javaemul.internal', 'EmulatedCharset/UtfCharset', 506, cggl.Ljavaemul_internal_EmulatedCharset_2_classLit);
ji2.$clinit_JsUtils$ArrayBuffer = function $clinit_JsUtils$ArrayBuffer(){
  ji2.$clinit_JsUtils$ArrayBuffer = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_JsUtils$Float32Array = function $clinit_JsUtils$Float32Array(){
  ji2.$clinit_JsUtils$Float32Array = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_JsUtils$Float64Array = function $clinit_JsUtils$Float64Array(){
  ji2.$clinit_JsUtils$Float64Array = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_JsUtils$NativeNumber = function $clinit_JsUtils$NativeNumber(){
  ji2.$clinit_JsUtils$NativeNumber = emptyMethod;
}
;
ji2.$clinit_JsUtils$Uint32Array = function $clinit_JsUtils$Uint32Array(){
  ji2.$clinit_JsUtils$Uint32Array = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_LongUtils = function $clinit_LongUtils(){
  ji2.$clinit_LongUtils = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.fromBits_0 = function fromBits_0(lowBits, highBits){
  ji2.$clinit_LongUtils();
  var highBitsLong, lowBitsLong;
  lowBitsLong = and_0(fromInt_0(lowBits), 4294967295);
  highBitsLong = shl_0(fromInt_0(highBits), 32);
  return or_0(highBitsLong, lowBitsLong);
}
;
ji2.getHighBits = function getHighBits(value_0){
  ji2.$clinit_LongUtils();
  return toInt_0(shru_0(value_0, 32));
}
;
defineClass(1096, 1, {1:1});
cggl.Ljavaemul_internal_LongUtils_2_classLit = createForClass('javaemul.internal', 'LongUtils', 1096, cggl.Ljava_lang_Object_2_classLit);
ji2.$clinit_NativeRegExp = function $clinit_NativeRegExp(){
  ji2.$clinit_NativeRegExp = emptyMethod;
  jl.$clinit_Object();
}
;
ji2.$clinit_NativeRegExp$Match = function $clinit_NativeRegExp$Match(){
  ji2.$clinit_NativeRegExp$Match = emptyMethod;
}
;
ji2.$asArray = function $asArray(this$static){
  ji2.$clinit_NativeRegExp$Match();
  return ji2.uncheckedCast(this$static);
}
;
ooccg.$clinit_BaseConformer = function $clinit_BaseConformer(){
  ooccg.$clinit_BaseConformer = emptyMethod;
  carcc.$clinit_Conformer();
}
;
ooccg.BaseConformer = function BaseConformer(mol, rigidFragment, rotatableBond, fragmentPermutation, random){
  ooccg.$clinit_BaseConformer();
  var bondIndex, bondIndex0, defaultTorsionRange, frequencies, i, isAttached, j, torsions;
  carcc.Conformer.call(this, mol);
  this.$init_721();
  this.mRandom = random;
  this.mRotatableBond = rotatableBond;
  this.mTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 7:1, 49:1}, 16, rotatableBond.length, 0, 2);
  this.mFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 7:1, 49:1}, 16, rotatableBond.length, 0, 2);
  this.mLikelyhood = initUnidimensionalArray(cggl.D_classLit, {4:1, 1:1, 7:1}, 13, rotatableBond.length, 0, 2);
  defaultTorsionRange = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 7:1}, 49, rotatableBond.length, 0, 3);
  for (bondIndex0 = 0; bondIndex0 < rotatableBond.length; bondIndex0++) {
    torsions = rotatableBond[bondIndex0].getDefaultTorsions();
    this.mTorsion[bondIndex0] = ju.copyOf_11(torsions, torsions.length);
    frequencies = rotatableBond[bondIndex0].getDefaultFrequencies();
    this.mFrequency[bondIndex0] = ju.copyOf_11(frequencies, frequencies.length);
    this.mLikelyhood[bondIndex0] = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mTorsion[bondIndex0].length, 15, 1);
    defaultTorsionRange[bondIndex0] = rotatableBond[bondIndex0].getDefaultTorsionRanges();
  }
  this.mBestTorsionIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, rotatableBond.length, 15, 1);
  isAttached = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, rigidFragment.length, 16, 1);
  for (bondIndex = 0; bondIndex < rotatableBond.length; bondIndex++)
    this.connectFragments(rotatableBond[bondIndex], bondIndex, isAttached, fragmentPermutation, defaultTorsionRange[bondIndex]);
  for (i = 0; i < rigidFragment.length; i++)
    if (!isAttached[i])
      for (j = 0; j < rigidFragment[i].getCoreSize(); j++)
        this.setCoordinates_0(rigidFragment[i].coreToOriginalAtom(j), rigidFragment[i].getCoreCoordinates(fragmentPermutation[i], j));
  this.mEliminationRuleList = new ju.ArrayList;
}
;
ooccg.getRotationMatrix = function getRotationMatrix(n, alpha_0){
  var cosAlpha, invcosAlpha, m, sinAlpha;
  sinAlpha = $wnd.Math.sin(alpha_0);
  cosAlpha = $wnd.Math.cos(alpha_0);
  invcosAlpha = 1 - cosAlpha;
  m = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [3, 3], 2);
  m[0][0] = n.x_0 * n.x_0 * invcosAlpha + cosAlpha;
  m[1][1] = n.y_0 * n.y_0 * invcosAlpha + cosAlpha;
  m[2][2] = n.z_0 * n.z_0 * invcosAlpha + cosAlpha;
  m[0][1] = n.x_0 * n.y_0 * invcosAlpha - n.z_0 * sinAlpha;
  m[1][2] = n.y_0 * n.z_0 * invcosAlpha - n.x_0 * sinAlpha;
  m[2][0] = n.z_0 * n.x_0 * invcosAlpha - n.y_0 * sinAlpha;
  m[0][2] = n.x_0 * n.z_0 * invcosAlpha + n.y_0 * sinAlpha;
  m[1][0] = n.y_0 * n.x_0 * invcosAlpha + n.z_0 * sinAlpha;
  m[2][1] = n.z_0 * n.y_0 * invcosAlpha + n.x_0 * sinAlpha;
  return m;
}
;
defineClass(258, 71, {71:1, 10:1, 1:1, 258:1}, ooccg.BaseConformer);
_.$init_721 = function $init_721(){
}
;
_.calculateCollisionStrain = function calculateCollisionStrain(rotatableBond){
  var atom1, atom2, bond, bondAtom1, bondAtom2, distance, dx, dy, dz, fragment1, fragment2, i, j, minDistance, p, panalty, vdwr1;
  fragment1 = rotatableBond.getFragment_3(0);
  fragment2 = rotatableBond.getFragment_3(1);
  bond = rotatableBond.getBond_1();
  panalty = 0;
  bondAtom1 = this.getMolecule_0().getBondAtom_0(0, bond);
  bondAtom2 = this.getMolecule_0().getBondAtom_0(1, bond);
  for (i = 0; i < fragment1.getCoreSize(); i++) {
    atom1 = fragment1.coreToOriginalAtom(i);
    if (atom1 != bondAtom1 && atom1 != bondAtom2) {
      vdwr1 = ooccg.getToleratedVDWRadius(this.getMolecule_0().getAtomicNo_0(atom1));
      for (j = 0; j < fragment2.getCoreSize(); j++) {
        atom2 = fragment2.coreToOriginalAtom(j);
        if (atom2 != bondAtom1 && atom2 != bondAtom2) {
          minDistance = vdwr1 + ooccg.getToleratedVDWRadius(this.getMolecule_0().getAtomicNo_0(atom2));
          dx = $wnd.Math.abs(this.getX(atom1) - this.getX(atom2));
          if (dx < minDistance) {
            dy = $wnd.Math.abs(this.getY(atom1) - this.getY(atom2));
            if (dy < minDistance) {
              dz = $wnd.Math.abs(this.getZ(atom1) - this.getZ(atom2));
              if (dz < minDistance) {
                distance = $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
                if (distance < minDistance) {
                  p = (minDistance - distance) / minDistance;
                  panalty += p * p;
                }
              }
            }
          }
        }
      }
    }
  }
  return panalty;
}
;
_.connectFragments = function connectFragments(rotatableBond, bondIndex, isAttached, fragmentPermutation, defaultTorsionRange){
  var alpha_0, angle, atom, bestTorsionEdgeUsed, bestTorsionStrain, bond, bondAtomIndex, centerStrain, centerTorsion, connAtom, currentTorsion, escapeStrain, fAtom, fRearAtom, fRootAtom, fcoords, fragment, fragment1, fragment2, fragmentConformer, fragmentConformer0, fragmentNo, fragmentNo1, fragmentNo2, froot, fuv, i, i0, i1, largerFragment, largerFragmentNo, m, r, rangeStrain, rearAtom, relativeStrain, root, rootAtom, rotationAxis, startTorsion, step, t, t0, t1, torsionEdgeUsed, totalLikelyhood, usedRangeStrain, usedStrain, uv;
  fragmentNo1 = rotatableBond.getFragmentNo(0);
  fragmentNo2 = rotatableBond.getFragmentNo(1);
  fragment1 = rotatableBond.getFragment_3(0);
  fragment2 = rotatableBond.getFragment_3(1);
  if (!isAttached[fragmentNo1] && !isAttached[fragmentNo2]) {
    largerFragment = fragment1.getCoreSize() > fragment2.getCoreSize()?fragment1:fragment2;
    largerFragmentNo = fragment1.getCoreSize() > fragment2.getCoreSize()?fragmentNo1:fragmentNo2;
    isAttached[largerFragmentNo] = true;
    fragmentConformer0 = jsEquals(fragmentPermutation, null)?0:fragmentPermutation[largerFragmentNo];
    for (i0 = 0; i0 < largerFragment.getExtendedSize(); i0++) {
      atom = largerFragment.extendedToOriginalAtom(i0);
      this.setCoordinates_0(atom, largerFragment.getExtendedCoordinates(fragmentConformer0, i0));
    }
  }
  if (isAttached[fragmentNo1]) {
    fragmentNo = fragmentNo2;
    fragment = fragment2;
    bondAtomIndex = rotatableBond.areBondAtomsInFragmentOrder()?1:0;
  }
   else {
    fragmentNo = fragmentNo1;
    fragment = fragment1;
    bondAtomIndex = rotatableBond.areBondAtomsInFragmentOrder()?0:1;
  }
  bond = rotatableBond.getBond_1();
  rootAtom = this.getMolecule_0().getBondAtom_0(bondAtomIndex, bond);
  rearAtom = this.getMolecule_0().getBondAtom_0(1 - bondAtomIndex, bond);
  fragmentConformer = jsEquals(fragmentPermutation, null)?0:fragmentPermutation[fragmentNo];
  fRootAtom = fragment.originalToExtendedAtom(rootAtom);
  fRearAtom = fragment.originalToExtendedAtom(rearAtom);
  froot = fragment.getExtendedCoordinates(fragmentConformer, fRootAtom);
  root = this.getCoordinates(rootAtom);
  fuv = froot.subC(fragment.getExtendedCoordinates(fragmentConformer, fRearAtom)).unit();
  uv = root.subC(this.getCoordinates(rearAtom)).unit();
  alpha_0 = fuv.getAngle_0(uv);
  fcoords = initUnidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, {187:1, 4:1, 1:1, 7:1}, 43, fragment.getExtendedSize(), 0, 1);
  if (alpha_0 < 0.0010000000474974513) {
    for (i0 = 0; i0 < fragment.getExtendedSize(); i0++) {
      atom = fragment.extendedToOriginalAtom(i0);
      if (atom != rootAtom && atom != rearAtom)
        fcoords[i0] = alpha_0 > 3.141592653589793 / 2?froot.subC(fragment.getExtendedCoordinates(fragmentConformer, i0)):fragment.getExtendedCoordinates(fragmentConformer, i0).subC(froot);
    }
  }
   else {
    if (alpha_0 < 3.141592653589793 - 0.0010000000474974513) {
      rotationAxis = uv.cross(fuv);
    }
     else {
      if ($wnd.Math.abs(uv.x_0) >= $wnd.Math.abs(uv.y_0) && $wnd.Math.abs(uv.x_0) >= $wnd.Math.abs(uv.z_0))
        rotationAxis = new carc2.Coordinates_1(-(uv.y_0 + uv.z_0) / uv.x_0, 1, 1);
      else if ($wnd.Math.abs(uv.y_0) >= $wnd.Math.abs(uv.x_0) && $wnd.Math.abs(uv.y_0) >= $wnd.Math.abs(uv.z_0))
        rotationAxis = new carc2.Coordinates_1(1, -(uv.x_0 + uv.z_0) / uv.y_0, 1);
      else 
        rotationAxis = new carc2.Coordinates_1(1, 1, -(uv.x_0 + uv.y_0) / uv.z_0);
    }
    m = ooccg.getRotationMatrix(rotationAxis.unit(), alpha_0);
    for (i0 = 0; i0 < fragment.getExtendedSize(); i0++) {
      atom = fragment.extendedToOriginalAtom(i0);
      if (atom != rootAtom && atom != rearAtom)
        fcoords[i0] = fragment.getExtendedCoordinates(fragmentConformer, i0).subC(froot).rotate(m);
    }
  }
  isAttached[fragmentNo] = true;
  for (i1 = 0; i1 < this.getMolecule_0().getConnAtoms_0(rootAtom); i1++) {
    connAtom = this.getMolecule_0().getConnAtom_0(rootAtom, i1);
    if (connAtom != rearAtom) {
      fAtom = fragment.originalToExtendedAtom(connAtom);
      this.setCoordinatesReplace(connAtom, fcoords[fAtom].addC(root));
    }
  }
  startTorsion = carcc.calculateTorsionExtended_0(this, rotatableBond.getTorsionAtoms());
  currentTorsion = -1;
  bestTorsionEdgeUsed = 0;
  bestTorsionStrain = 0;
  for (t0 = 0; t0 < this.mTorsion[bondIndex].length; t0++) {
    currentTorsion = this.mTorsion[bondIndex][t0];
    m = ooccg.getRotationMatrix(uv, 3.141592653589793 * currentTorsion / 180 - startTorsion);
    for (i0 = 0; i0 < fragment.getExtendedSize(); i0++) {
      atom = fragment.extendedToOriginalAtom(i0);
      if (atom != rootAtom && atom != rearAtom) {
        this.setCoordinates_0(atom, fcoords[i0]);
        this.getCoordinates(atom).rotate(m).add_3(root);
      }
    }
    centerStrain = this.calculateCollisionStrain(rotatableBond);
    usedStrain = centerStrain;
    torsionEdgeUsed = 0;
    if (centerStrain < 0.05000000074505806) {
      relativeStrain = centerStrain / 0.20000000298023224;
      this.mLikelyhood[bondIndex][t0] = this.mFrequency[bondIndex][t0] * (1 - relativeStrain * relativeStrain);
    }
     else {
      centerTorsion = this.mTorsion[bondIndex][t0];
      usedRangeStrain = 1.7976931348623157E308;
      for (r = 0; r < 2; r++) {
        currentTorsion = defaultTorsionRange[t0][r];
        if (currentTorsion != centerTorsion) {
          m = ooccg.getRotationMatrix(uv, 3.141592653589793 * currentTorsion / 180 - startTorsion);
          for (i = 0; i < fragment.getExtendedSize(); i++) {
            atom = fragment.extendedToOriginalAtom(i);
            if (atom != rootAtom && atom != rearAtom) {
              this.setCoordinates_0(atom, fcoords[i]);
              this.getCoordinates(atom).rotate(m).add_3(root);
            }
          }
          rangeStrain = this.calculateCollisionStrain(rotatableBond);
          if (rangeStrain < centerStrain * 0.800000011920929 && rangeStrain < usedRangeStrain) {
            this.mTorsion[bondIndex][t0] = defaultTorsionRange[t0][r];
            relativeStrain = rangeStrain / (0.800000011920929 * 0.20000000298023224);
            this.mLikelyhood[bondIndex][t0] = this.mFrequency[bondIndex][t0] * (1 - relativeStrain * relativeStrain);
            usedStrain = rangeStrain;
            torsionEdgeUsed = r + 1;
            usedRangeStrain = rangeStrain;
          }
        }
      }
      if (usedRangeStrain == 1.7976931348623157E308 && centerStrain < 0.20000000298023224) {
        relativeStrain = centerStrain / 0.20000000298023224;
        this.mLikelyhood[bondIndex][t0] = this.mFrequency[bondIndex][t0] * (1 - relativeStrain * relativeStrain);
      }
    }
    if (this.mLikelyhood[bondIndex][this.mBestTorsionIndex[bondIndex]] < this.mLikelyhood[bondIndex][t0]) {
      this.mBestTorsionIndex[bondIndex] = t0;
      bestTorsionEdgeUsed = torsionEdgeUsed;
      bestTorsionStrain = usedStrain;
    }
  }
  totalLikelyhood = 0;
  for (t1 = 0; t1 < this.mTorsion[bondIndex].length; t1++)
    if (this.mLikelyhood[bondIndex][t1] > 0)
      totalLikelyhood += this.mLikelyhood[bondIndex][t1];
  if (this.mLikelyhood[bondIndex][this.mBestTorsionIndex[bondIndex]] <= 0) {
    this.mLikelyhood[bondIndex][this.mBestTorsionIndex[bondIndex]] = 1;
    angle = bestTorsionEdgeUsed == 1?-8:bestTorsionEdgeUsed == 2?8:this.mRandom.nextDouble() < 0.5?-8:8;
    for (step = 1; step <= 4; step++) {
      currentTorsion = narrow_short(this.mTorsion[bondIndex][this.mBestTorsionIndex[bondIndex]] + angle * step);
      m = ooccg.getRotationMatrix(uv, 3.141592653589793 * currentTorsion / 180 - startTorsion);
      for (i = 0; i < fragment.getExtendedSize(); i++) {
        atom = fragment.extendedToOriginalAtom(i);
        if (atom != rootAtom && atom != rearAtom) {
          this.setCoordinates_0(atom, fcoords[i]);
          this.getCoordinates(atom).rotate(m).add_3(root);
        }
      }
      escapeStrain = this.calculateCollisionStrain(rotatableBond);
      if (bestTorsionStrain - escapeStrain < 0.05)
        break;
      this.mTorsion[bondIndex][this.mBestTorsionIndex[bondIndex]] = currentTorsion;
    }
  }
   else {
    for (t = 0; t < this.mTorsion[bondIndex].length; t++)
      this.mLikelyhood[bondIndex][t] /= totalLikelyhood;
  }
  if (currentTorsion != this.mTorsion[bondIndex][this.mBestTorsionIndex[bondIndex]]) {
    m = ooccg.getRotationMatrix(uv, 3.141592653589793 * this.mTorsion[bondIndex][this.mBestTorsionIndex[bondIndex]] / 180 - startTorsion);
    for (i = 0; i < fragment.getExtendedSize(); i++) {
      atom = fragment.extendedToOriginalAtom(i);
      if (atom != rootAtom && atom != rearAtom) {
        this.setCoordinates_0(atom, fcoords[i]);
        this.getCoordinates(atom).rotate(m).add_3(root);
      }
    }
  }
  this.setBondTorsion(bond, this.mTorsion[bondIndex][this.mBestTorsionIndex[bondIndex]]);
}
;
_.deriveConformer = function deriveConformer(torsionIndex, name_0){
  var conformer, rb;
  this.mConformerCount++;
  conformer = new carcc.Conformer_0(this);
  conformer.setName_0(name_0);
  for (rb = this.mRotatableBond.length - 1; rb >= 0; rb--)
    this.rotateToIndex(conformer, this.mRotatableBond[rb], rb, torsionIndex[rb]);
  return conformer;
}
;
_.getEliminationRules = function getEliminationRules(){
  return this.mEliminationRuleList;
}
;
_.getLikelyRandomTorsionIndex = function getLikelyRandomTorsionIndex(bondIndex, random, progress){
  var contribution, sum, t;
  sum = 0;
  for (t = 0; t < this.mTorsion[bondIndex].length; t++) {
    contribution = (1 - progress) * this.mLikelyhood[bondIndex][t] + progress / this.mTorsion[bondIndex].length;
    sum += contribution;
    if (random <= sum)
      return t;
  }
  return this.mTorsion[bondIndex].length - 1;
}
;
_.getRotatableBonds = function getRotatableBonds(){
  return this.mRotatableBond;
}
;
_.getTorsion = function getTorsion(bondIndex, torsionIndex){
  return this.mTorsion[bondIndex][torsionIndex];
}
;
_.getTorsionLikelyhood = function getTorsionLikelyhood(bondIndex, torsionIndex){
  return this.mLikelyhood[bondIndex][torsionIndex];
}
;
_.rotateSmallerSide = function rotateSmallerSide(conformer, rotatableBond, alpha_0){
  var atom, atom$array, atom$index, atom$max, m, rotationCenter, t2, torsionAtom, unit, x_0, y_0, z_0;
  torsionAtom = rotatableBond.getTorsionAtoms();
  rotationCenter = rotatableBond.getRotationCenter();
  t2 = conformer.getCoordinates(torsionAtom[2]);
  unit = t2.subC(conformer.getCoordinates(torsionAtom[1])).unit();
  m = ooccg.getRotationMatrix(unit, rotationCenter == torsionAtom[1]?alpha_0:-alpha_0);
  for (atom$array = rotatableBond.getSmallerSideAtoms() , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    if (atom != rotationCenter) {
      x_0 = conformer.getX(atom) - t2.x_0;
      y_0 = conformer.getY(atom) - t2.y_0;
      z_0 = conformer.getZ(atom) - t2.z_0;
      conformer.setX_0(atom, x_0 * m[0][0] + y_0 * m[0][1] + z_0 * m[0][2] + t2.x_0);
      conformer.setY_0(atom, x_0 * m[1][0] + y_0 * m[1][1] + z_0 * m[1][2] + t2.y_0);
      conformer.setZ(atom, x_0 * m[2][0] + y_0 * m[2][1] + z_0 * m[2][2] + t2.z_0);
    }
  }
}
;
_.rotateTo = function rotateTo(conformer, rotatableBond, torsion){
  var bond, deltaTorsion;
  while (torsion < 0)
    torsion = narrow_short(torsion + 360);
  while (torsion >= 360)
    torsion = narrow_short(torsion - 360);
  bond = rotatableBond.getBond_1();
  if (torsion != conformer.getBondTorsion(bond)) {
    deltaTorsion = torsion - conformer.getBondTorsion(bond);
    this.rotateSmallerSide(conformer, rotatableBond, 3.141592653589793 * deltaTorsion / 180);
    conformer.setBondTorsion(bond, torsion);
  }
}
;
_.rotateToIndex = function rotateToIndex(conformer, rotatableBond, bondIndex, torsionIndex){
  this.rotateTo(conformer, rotatableBond, this.mTorsion[bondIndex][torsionIndex]);
}
;
_.mConformerCount = 0;
ooccg.ACCEPTABLE_CENTER_STRAIN = 0.05000000074505806;
ooccg.ANGLE_TOLERANCE = 0.0010000000474974513;
ooccg.ESCAPE_ANGLE = 8;
ooccg.ESCAPE_STEPS = 4;
ooccg.MAXIMUM_CENTER_STRAIN = 0.20000000298023224;
ooccg.MIN_ESCAPE_GAIN_PER_STEP = 0.05;
ooccg.NECESSARY_EDGE_STRAIN_IMPROVEMENT_FACTOR = 0.800000011920929;
cggl.Lorg_openmolecules_chem_conf_gen_BaseConformer_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'BaseConformer', 258, cggl.Lcom_actelion_research_chem_conf_Conformer_2_classLit);
ooccg.$clinit_ConformerDiagnostics = function $clinit_ConformerDiagnostics(){
  ooccg.$clinit_ConformerDiagnostics = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.ConformerDiagnostics = function ConformerDiagnostics(ts){
  ooccg.$clinit_ConformerDiagnostics();
  Object_0.call(this);
  this.$init_722();
  this.mTorsionIndex = ts.getTorsionIndexes();
  this.mConformerIndex = ts.getConformerIndexes();
  this.mCollisionLog = new jl.StringBuilder;
  this.mEliminationRules = new ju.ArrayList;
}
;
defineClass(285, 1, {1:1, 285:1}, ooccg.ConformerDiagnostics);
_.$init_722 = function $init_722(){
}
;
_.addEliminationRule = function addEliminationRule(rule){
  this.mEliminationRules.add(rule);
}
;
_.getCollisionAtoms = function getCollisionAtoms(){
  return this.mCollisionAtoms;
}
;
_.getCollisionIntensity = function getCollisionIntensity(){
  return this.mCollisionIntensity;
}
;
_.getEliminationRules = function getEliminationRules_0(){
  return this.mEliminationRules;
}
;
_.getIDCode_0 = function getIDCode_9(){
  return this.mIDCode;
}
;
_.getLikelihood = function getLikelihood_0(){
  return this.mLikelihood;
}
;
_.getName_0 = function getName_13(){
  return this.mName;
}
;
_.getTorsionIndexes = function getTorsionIndexes(){
  return this.mTorsionIndex;
}
;
_.setCollisionAtoms = function setCollisionAtoms(atoms){
  this.mCollisionAtoms = atoms;
}
;
_.setCollisionStrain = function setCollisionStrain(v){
  this.mCollisionIntensity = v;
}
;
_.setConformer = function setConformer(bc, c){
  var can, i;
  can = new carc2.Canonizer(c.toMolecule_0(null));
  this.mIDCode = can.getIDCode_0();
  this.mCoords = can.getEncodedCoordinates();
  this.mBaseConformer = bc;
  this.mName = c.getName_0();
  this.mFixedTorsion = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, bc.getRotatableBonds().length, 15, 1);
  this.mLikelihood = c.getLikelihood();
  for (i = 0; i < this.mFixedTorsion.length; i++)
    this.mFixedTorsion[i] = c.getBondTorsion(bc.getRotatableBonds()[i].getBond_1());
}
;
_.setSuccess = function setSuccess(b){
  this.mSuccess = b;
}
;
_.writeCollisionLog = function writeCollisionLog(log_0){
  if (this.mCollisionLog.length_0() != 0)
    this.mCollisionLog.append_9('<NL>');
  this.mCollisionLog.append_9(log_0);
}
;
_.mCollisionIntensity = 0;
_.mLikelihood = 0;
_.mSuccess = false;
cggl.Lorg_openmolecules_chem_conf_gen_ConformerDiagnostics_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'ConformerDiagnostics', 285, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_ConformerGenerator = function $clinit_ConformerGenerator(){
  ooccg.$clinit_ConformerGenerator = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.ConformerGenerator = function ConformerGenerator(seed, cache, optimizeRigidFragments){
  Object_0.call(this);
  this.$init_723();
  carcc.initialize_0(1);
  this.mRandomSeed = seed;
  this.mRandom = eq(seed, 0)?new ju.Random:new ju.Random_0(seed);
  this.mRigidFragmentProvider = new ooccg.RigidFragmentProvider(seed, cache, optimizeRigidFragments);
}
;
ooccg.ConformerGenerator_0 = function ConformerGenerator_0(seed, optimizeRigidFragments){
  ooccg.$clinit_ConformerGenerator();
  ooccg.ConformerGenerator.call(this, seed, ooccg.getDefaultInstance(), optimizeRigidFragments);
}
;
ooccg.addHydrogenAtoms = function addHydrogenAtoms(mol){
  ooccg.$clinit_ConformerGenerator();
  var atom, atom0, atom1, hydrogenBondLength, i, implicitHydrogen, oldStereoHelperBits;
  oldStereoHelperBits = mol.getHelperArrayStatus_0() & 248;
  mol.ensureHelperArrays_0(1);
  implicitHydrogen = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  for (atom0 = 0; atom0 < mol.getAtoms_0(); atom0++)
    implicitHydrogen[atom0] = mol.getImplicitHydrogens_0(atom0);
  hydrogenBondLength = 0.8 * mol.getAverageBondLength_0();
  for (atom1 = 0; atom1 < implicitHydrogen.length; atom1++)
    if (implicitHydrogen[atom1] != 0)
      for (i = 0; i < implicitHydrogen[atom1]; i++)
        mol.addBond_1(atom1, mol.addAtom_2(1), 1);
  mol.ensureHelperArrays_0(1);
  for (atom = 0; atom < implicitHydrogen.length; atom++)
    if (implicitHydrogen[atom] != 0)
      ooccg.setHydrogenLocations(mol, atom, implicitHydrogen[atom], hydrogenBondLength);
  if ((oldStereoHelperBits & 8) != 0)
    mol.setParitiesValid_0(oldStereoHelperBits);
}
;
ooccg.getToleratedVDWRadius = function getToleratedVDWRadius(atomicNo){
  ooccg.$clinit_ConformerGenerator();
  var vdwr;
  vdwr = (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS)[atomicNo < (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS).length?atomicNo:6];
  return vdwr * (atomicNo == 1?0.9:0.9);
}
;
ooccg.lambda$0_5 = function lambda$0_5(b1_0, b2_1){
  ooccg.$clinit_ConformerGenerator();
  return compare_24(b2_1.getSmallerSideAtoms().length, b1_0.getSmallerSideAtoms().length);
}
;
ooccg.setHydrogenLocations = function setHydrogenLocations(mol, atom, newHydrogenCount, avbl){
  var a1, a2, angle, angleIncrement, biggestAngleDif, bond, dif, firstNewHydrogenConnIndex, hydrogenAngle, i, i0, i1, newHydrogen, startAngle, stereoBondAngle, stereoBondCount, stereoBondIndex;
  firstNewHydrogenConnIndex = mol.getAllConnAtoms_0(atom) - newHydrogenCount;
  stereoBondIndex = -1;
  stereoBondAngle = NaN;
  for (i0 = 0; i0 < firstNewHydrogenConnIndex; i0++) {
    if (mol.isStereoBond_1(mol.getConnBond_0(atom, i0), atom)) {
      stereoBondIndex = i0;
      stereoBondAngle = mol.getBondAngle_0(atom, mol.getConnAtom_0(atom, i0));
      break;
    }
  }
  stereoBondCount = stereoBondIndex == -1?0:1;
  angle = null;
  if (stereoBondCount < firstNewHydrogenConnIndex) {
    angle = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, firstNewHydrogenConnIndex - stereoBondCount, 15, 1);
    bond = 0;
    for (i1 = 0; i1 < firstNewHydrogenConnIndex; i1++)
      if (i1 != stereoBondIndex)
        angle[bond++] = mol.getBondAngle_0(atom, mol.getConnAtom_0(atom, i1));
    ju.sort_2(angle);
  }
  angleIncrement = 2 * 3.141592653589793 / $wnd.Math.max(newHydrogenCount, 3);
  startAngle = 0;
  if (jsNotEquals(angle, null)) {
    if (angle.length == 1 && newHydrogenCount == 1) {
      startAngle = angle[0];
    }
     else {
      biggestAngleDif = 0;
      for (i1 = 0; i1 < angle.length; i1++) {
        a1 = i1 == 0?angle[angle.length - 1] - 3.141592653589793 * 2:angle[i1 - 1];
        a2 = angle[i1];
        if (biggestAngleDif < a2 - a1) {
          biggestAngleDif = a2 - a1;
          startAngle = a1;
        }
      }
      angleIncrement = biggestAngleDif / (newHydrogenCount + 1);
    }
  }
  for (i = 0; i < newHydrogenCount; i++) {
    startAngle += angleIncrement;
    hydrogenAngle = startAngle;
    if (stereoBondCount != 0) {
      dif = carc2.getAngleDif(hydrogenAngle, stereoBondAngle);
      if ($wnd.Math.abs(dif) < angleIncrement / 2) {
        if (dif < 0)
          hydrogenAngle = stereoBondAngle - angleIncrement / 2;
        else 
          hydrogenAngle = stereoBondAngle + angleIncrement / 2;
      }
    }
    newHydrogen = mol.getConnAtom_0(atom, firstNewHydrogenConnIndex + i);
    mol.setAtomX_0(newHydrogen, mol.getAtomX_0(atom) + avbl * $wnd.Math.sin(hydrogenAngle));
    mol.setAtomY_0(newHydrogen, mol.getAtomY_0(atom) + avbl * $wnd.Math.cos(hydrogenAngle));
  }
}
;
defineClass(310, 1, {1:1}, ooccg.ConformerGenerator_0);
_.$init_723 = function $init_723(){
}
;
_.calculateCollision = function calculateCollision(torsionSet, conformer){
  var atom1, atom2, atoms, collisionStrain, collisionStrainMatrix, collisionStrainSum, distance, dx, dy, dz, f1, f2, minDistance, mol, relativeCollision, vdwr1;
  if (this.mIsDiagnosticsMode)
    this.mDiagnostics.get_7(torsionSet).setCollisionAtoms(null);
  collisionStrainSum = 0;
  collisionStrainMatrix = null;
  mol = conformer.getMolecule_0();
  for (atom1 = 1; atom1 < mol.getAllAtoms_0(); atom1++) {
    vdwr1 = ooccg.getToleratedVDWRadius(mol.getAtomicNo_0(atom1));
    for (atom2 = 0; atom2 < atom1; atom2++) {
      if (!this.mSkipCollisionCheck[atom1][atom2]) {
        minDistance = vdwr1 + ooccg.getToleratedVDWRadius(mol.getAtomicNo_0(atom2));
        dx = $wnd.Math.abs(conformer.getX(atom1) - conformer.getX(atom2));
        if (dx < minDistance) {
          dy = $wnd.Math.abs(conformer.getY(atom1) - conformer.getY(atom2));
          if (dy < minDistance) {
            dz = $wnd.Math.abs(conformer.getZ(atom1) - conformer.getZ(atom2));
            if (dz < minDistance) {
              distance = $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
              if (distance < minDistance) {
                relativeCollision = (minDistance - distance) / minDistance;
                collisionStrain = 20 * relativeCollision * relativeCollision;
                collisionStrainSum += collisionStrain;
                if (this.mIsDiagnosticsMode) {
                  this.mDiagnostics.get_7(torsionSet).writeCollisionLog('a1:' + atom1 + ' f1:' + this.mFragmentNo[atom1] + ' a2:' + atom2 + ' f2:' + this.mFragmentNo[atom2] + ' distance:' + caru.toString_20(distance) + ' min:' + caru.toString_20(minDistance));
                  if (jsEquals(this.mDiagnostics.get_7(torsionSet).getCollisionAtoms(), null)) {
                    atoms = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
                    atoms[0] = atom1;
                    atoms[1] = atom2;
                    this.mDiagnostics.get_7(torsionSet).setCollisionAtoms(atoms);
                  }
                }
                if (jsEquals(collisionStrainMatrix, null))
                  collisionStrainMatrix = initUnidimensionalArray(cggl.D_classLit, {4:1, 1:1, 7:1}, 13, this.mRigidFragment.length, 0, 2);
                f1 = this.mFragmentNo[atom1];
                f2 = this.mFragmentNo[atom2];
                if (f1 < f2) {
                  if (jsEquals(collisionStrainMatrix[f2], null))
                    collisionStrainMatrix[f2] = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, f2, 15, 1);
                  collisionStrainMatrix[f2][f1] += collisionStrain;
                }
                 else {
                  if (jsEquals(collisionStrainMatrix[f1], null))
                    collisionStrainMatrix[f1] = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, f1, 15, 1);
                  collisionStrainMatrix[f1][f2] += collisionStrain;
                }
              }
            }
          }
        }
      }
    }
  }
  torsionSet.setCollisionStrain_0(collisionStrainSum, collisionStrainMatrix);
  return collisionStrainSum != 0;
}
;
_.calculateCollisionStrain_0 = function calculateCollisionStrain_0(conformer, f1, f2){
  var atom1, atom2, collisionStrain, collisionStrainSum, distance, dx, dy, dz, i, j, minDistance, relativeCollision, vdwr1;
  collisionStrainSum = 0;
  for (i = 0; i < f1.getCoreSize(); i++) {
    atom1 = f1.coreToOriginalAtom(i);
    vdwr1 = ooccg.getToleratedVDWRadius(this.mMolecule.getAtomicNo_0(atom1));
    for (j = 0; j < f2.getCoreSize(); j++) {
      atom2 = f2.coreToOriginalAtom(j);
      minDistance = vdwr1 + ooccg.getToleratedVDWRadius(this.mMolecule.getAtomicNo_0(atom2));
      dx = $wnd.Math.abs(conformer.getX(atom1) - conformer.getX(atom2));
      if (dx < minDistance) {
        dy = $wnd.Math.abs(conformer.getY(atom1) - conformer.getY(atom2));
        if (dy < minDistance) {
          dz = $wnd.Math.abs(conformer.getZ(atom1) - conformer.getZ(atom2));
          if (dz < minDistance) {
            distance = $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
            if (distance < minDistance) {
              relativeCollision = (minDistance - distance) / minDistance;
              collisionStrain = relativeCollision * relativeCollision;
              collisionStrainSum += collisionStrain;
            }
          }
        }
      }
    }
  }
  return 20 * collisionStrainSum;
}
;
_.getBaseConformer = function getBaseConformer(fragmentPermutation){
  var baseConformer;
  baseConformer = castTo(this.mBaseConformerMap.get(fragmentPermutation), 258);
  if (isNotNull(baseConformer))
    return baseConformer;
  baseConformer = new ooccg.BaseConformer(this.mMolecule, this.mRigidFragment, this.mRotatableBond, fragmentPermutation, this.mRandom);
  this.mBaseConformerMap.put(ju.copyOf_9(fragmentPermutation, fragmentPermutation.length), baseConformer);
  return baseConformer;
}
;
_.getConformerCount_0 = function getConformerCount_0(){
  return this.mReturnedConformerCount;
}
;
_.getNextConformer = function getNextConformer(){
  return this.getNextConformer_0(null);
}
;
_.getNextConformer_0 = function getNextConformer_0(torsionSetHolder){
  var baseConformer, conformer;
  if (jsEquals(this.mRotatableBond, null) && isNull(this.mSelfOrganizer))
    return null;
  if (isNotNull(this.mSelfOrganizer)) {
    conformer = this.mSelfOrganizer.getNextConformer_1();
    if (isNotNull(conformer)) {
      this.separateDisconnectedFragments(conformer);
      this.mReturnedConformerCount++;
      conformer.setName_0('SO#' + ++this.mAllConformerCount);
      return conformer;
    }
    return null;
  }
  if (this.mIsFinished)
    return null;
  if (this.mBaseConformerMap.size() == 0)
    this.getBaseConformer(initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 15, 1));
  this.mTorsionSet = this.mTorsionSetStrategy.getNextTorsionSet(this.mTorsionSet, this.mDiagnostics);
  while (isNotNull(this.mTorsionSet) && (isNull(this.mThreadMaster) || !this.mThreadMaster.threadMustDie())) {
    baseConformer = this.getBaseConformer(this.mTorsionSet.getConformerIndexes());
    if (isNull(this.mTorsionSet.getConformer())) {
      this.mTorsionSet.setConformer_0(baseConformer.deriveConformer(this.mTorsionSet.getTorsionIndexes(), '#' + ++this.mAllConformerCount));
      if (this.mIsDiagnosticsMode)
        this.mDiagnostics.addNew(this.mTorsionSet);
    }
    if (this.mTorsionSet.getCollisionStrainSum() == 0) {
      this.calculateCollision(this.mTorsionSet, this.mTorsionSet.getConformer());
      if (this.mTorsionSet.getCollisionStrainSum() != 0)
        this.tryFixCollisions(baseConformer, this.mTorsionSet);
      if (this.mIsDiagnosticsMode) {
        this.mDiagnostics.get_7(this.mTorsionSet).setConformer(baseConformer, this.mTorsionSet.getConformer());
        this.mDiagnostics.get_7(this.mTorsionSet).setCollisionStrain(this.mTorsionSet.getCollisionStrainSum());
      }
    }
    if (this.mTorsionSet.getCollisionStrainSum() > this.mTorsionSetStrategy.calculateCollisionTolerance()) {
      this.mTorsionSet = this.mTorsionSetStrategy.getNextTorsionSet(this.mTorsionSet, this.mDiagnostics);
      if (isNotNull(this.mTorsionSet) || this.mReturnedConformerCount != 0)
        continue;
      if (isNull(this.mTorsionSet) && this.mUseSelfOrganizerIfAllFails) {
        this.mSelfOrganizer = new ooccs.ConformationSelfOrganizer(this.mMolecule, true);
        this.mSelfOrganizer.setThreadMaster(this.mThreadMaster);
        this.mSelfOrganizer.initializeConformers_2(this.mRandomSeed, -1);
        conformer = this.mSelfOrganizer.getNextConformer_1();
        if (isNotNull(conformer)) {
          this.separateDisconnectedFragments(conformer);
          this.mReturnedConformerCount++;
          conformer.setName_0('SO#' + ++this.mAllConformerCount);
          return conformer;
        }
      }
      this.mTorsionSet = this.mTorsionSetStrategy.getBestCollidingTorsionIndexes();
      this.mIsFinished = true;
    }
    if (isNotNull(this.mTorsionSet)) {
      this.separateDisconnectedFragments(this.mTorsionSet.getConformer());
      this.mTorsionSet.setUsed();
      this.mReturnedConformerCount++;
      if (jsNotEquals(torsionSetHolder, null))
        setCheck(torsionSetHolder, 0, new ooccg.TorsionSet(this.mTorsionSet));
      if (this.mIsDiagnosticsMode)
        this.mDiagnostics.get_7(this.mTorsionSet).setSuccess(true);
      return this.mTorsionSet.getConformer();
    }
  }
  return null;
}
;
_.getNextConformerAsMolecule_0 = function getNextConformerAsMolecule_0(mol){
  var conformer;
  conformer = this.getNextConformer();
  return isNull(conformer)?null:conformer.toMolecule_0(mol);
}
;
_.getOneConformer = function getOneConformer(mol){
  var conformer, sampler;
  if (!this.initialize_0(mol, false))
    return null;
  if (jsNotEquals(this.mRotatableBond, null)) {
    this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyAdaptiveRandom(this, true, true, this.mRandomSeed);
    this.mTorsionSetStrategy.setMaxTotalCount(400);
    this.mBaseConformerMap = new ju.TreeMap_0(new caru.IntArrayComparator);
    return this.getNextConformer();
  }
   else {
    sampler = new ooccs.ConformationSelfOrganizer(mol, true);
    conformer = sampler.generateOneConformer(this.mRandomSeed);
    this.separateDisconnectedFragments(conformer);
    conformer.setName_0('SO#1');
    return conformer;
  }
}
;
_.getOneConformerAsMolecule_0 = function getOneConformerAsMolecule_0(mol){
  var conformer;
  conformer = this.getOneConformer(mol);
  return isNull(conformer)?null:conformer.toMolecule_0(mol);
}
;
_.getPotentialConformerCount_0 = function getPotentialConformerCount_0(){
  return isNull(this.mTorsionSetStrategy)?1:this.mTorsionSetStrategy.getPermutationCount();
}
;
_.getRigidFragments = function getRigidFragments(){
  return this.mRigidFragment;
}
;
_.getRotatableBondCount_0 = function getRotatableBondCount_3(){
  return jsEquals(this.mRotatableBond, null)?0:this.mRotatableBond.length;
}
;
_.getRotatableBonds = function getRotatableBonds_0(){
  return this.mRotatableBond;
}
;
_.initialize_0 = function initialize_4(mol, use60degreeSteps){
  var atom, atom0, atom1, atomParity, atomParityIsPseudo, bond, bond0, bondParity, bondParityIsPseudo, count, isRotatableBond, rotatableBond;
  this.mSelfOrganizer = null;
  mol.ensureHelperArrays_0(1);
  for (atom0 = 0; atom0 < mol.getAtoms_0(); atom0++)
    if (mol.getOccupiedValence_0(atom0) > mol.getMaxValence_0(atom0))
      return false;
  ooccg.addHydrogenAtoms(mol);
  mol.setHydrogenProtection_0(true);
  atomParity = null;
  bondParity = null;
  atomParityIsPseudo = null;
  bondParityIsPseudo = null;
  if ((mol.getHelperArrayStatus_0() & 8) != 0) {
    atomParity = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
    atomParityIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
    for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++) {
      atomParity[atom1] = mol.getAtomParity_0(atom1);
      atomParityIsPseudo[atom1] = mol.isAtomParityPseudo_0(atom1);
    }
    bondParity = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getBonds_0(), 15, 1);
    bondParityIsPseudo = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
    for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
      bondParity[bond0] = mol.getBondParity_0(bond0);
      bondParityIsPseudo[bond0] = mol.isBondParityPseudo_0(bond0);
    }
  }
  mol.ensureHelperArrays_0(63);
  if (jsNotEquals(atomParity, null)) {
    for (atom1 = 0; atom1 < mol.getAtoms_0(); atom1++)
      mol.setAtomParity_0(atom1, atomParity[atom1], atomParityIsPseudo[atom1]);
    for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++)
      mol.setBondParity_0(bond0, bondParity[bond0], bondParityIsPseudo[bond0]);
  }
  this.mMolecule = mol;
  this.mAllConformerCount = 0;
  this.mReturnedConformerCount = 0;
  this.mTorsionSet = null;
  this.mRotatableBond = null;
  this.mDisconnectedFragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  this.mDisconnectedFragmentCount = mol.getFragmentNumbers_0(this.mDisconnectedFragmentNo, false, true);
  this.mDisconnectedFragmentSize = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    this.mDisconnectedFragmentSize[this.mDisconnectedFragmentNo[atom]]++;
  isRotatableBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 16, 1);
  count = carcc.findRotatableBonds(mol, true, isRotatableBond);
  if (count == 0)
    return true;
  if (!this.locateInitialFragments_0(isRotatableBond))
    return false;
  this.mRotatableBond = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_gen_RotatableBond_2_classLit, {4:1, 1:1, 7:1}, 188, count, 0, 1);
  rotatableBond = 0;
  for (bond = 0; bond < mol.getBonds_0(); bond++)
    if (isRotatableBond[bond])
      setCheck(this.mRotatableBond, rotatableBond++, new ooccg.RotatableBond(mol, bond, this.mFragmentNo, this.mDisconnectedFragmentNo, this.mDisconnectedFragmentSize[this.mDisconnectedFragmentNo[mol.getBondAtom_0(0, bond)]], this.mRigidFragment, use60degreeSteps));
  ju.sort_7(this.mRotatableBond, new ooccg.ConformerGenerator$lambda$0$Type);
  if (this.mIsDiagnosticsMode)
    this.mDiagnostics = new ooccg.ConformerSetDiagnostics(this);
  this.initializeCollisionCheck();
  return true;
}
;
_.initializeCollisionCheck = function initializeCollisionCheck(){
  var atom, atom0, atom1, atom2, i, i0, j, j0, rf, rf$array, rf$index, rf$max;
  this.mSkipCollisionCheck = initUnidimensionalArray(cggl.Z_classLit, {4:1, 1:1, 7:1}, 12, this.mMolecule.getAllAtoms_0(), 0, 2);
  for (atom0 = 1; atom0 < this.mMolecule.getAllAtoms_0(); atom0++)
    this.mSkipCollisionCheck[atom0] = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, atom0, 16, 1);
  for (rf$array = this.mRigidFragment , rf$index = 0 , rf$max = rf$array.length; rf$index < rf$max; ++rf$index) {
    rf = rf$array[rf$index];
    for (i0 = 1; i0 < rf.getExtendedSize(); i0++)
      for (j0 = 0; j0 < i0; j0++)
        this.skipCollisionCheck(rf.extendedToOriginalAtom(i0), rf.extendedToOriginalAtom(j0));
  }
  for (atom = 0; atom < this.mMolecule.getAtoms_0(); atom++)
    for (i = 1; i < this.mMolecule.getAllConnAtoms_0(atom); i++)
      for (j = 0; j < i; j++)
        this.skipCollisionCheck(this.mMolecule.getConnAtom_0(atom, i), this.mMolecule.getConnAtom_0(atom, j));
  if (jsNotEquals(this.mDisconnectedFragmentNo, null))
    for (atom1 = 1; atom1 < this.mMolecule.getAllAtoms_0(); atom1++)
      for (atom2 = 0; atom2 < atom1; atom2++)
        if (this.mDisconnectedFragmentNo[atom1] != this.mDisconnectedFragmentNo[atom2])
          this.mSkipCollisionCheck[atom1][atom2] = true;
}
;
_.initializeConformers_1 = function initializeConformers_1(mol, strategy, maxTorsionSets, use60degreeSteps){
  if (!this.initialize_0(mol, use60degreeSteps))
    return false;
  if (jsEquals(this.mRotatableBond, null)) {
    this.mSelfOrganizer = new ooccs.ConformationSelfOrganizer(mol, true);
    this.mSelfOrganizer.setThreadMaster(this.mThreadMaster);
    this.mSelfOrganizer.initializeConformers_2(this.mRandomSeed, -1);
  }
   else {
    this.mBaseConformerMap = new ju.TreeMap_0(new caru.IntArrayComparator);
    switch (strategy) {
      case 2:
        this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyRandom(this, false, this.mRandomSeed);
        break;
      case 3:
        this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyRandom(this, true, this.mRandomSeed);
        break;
      case 4:
        this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyAdaptiveRandom(this, true, true, this.mRandomSeed);
        break;
      case 1:
        this.mTorsionSetStrategy = new ooccg.TorsionSetStrategyLikelySystematic(this);
        break;
    }
    this.mTorsionSetStrategy.setMaxTotalCount(maxTorsionSets);
  }
  return true;
}
;
_.locateInitialFragments_0 = function locateInitialFragments_0(isRotatableBond){
  var fragmentCount, i, ok;
  this.mFragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mMolecule.getAllAtoms_0(), 15, 1);
  fragmentCount = this.mMolecule.getFragmentNumbers_1(this.mFragmentNo, isRotatableBond, true);
  this.mRigidFragment = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_gen_RigidFragment_2_classLit, {4:1, 1:1, 7:1}, 259, fragmentCount, 0, 1);
  ok = true;
  for (i = 0; i < fragmentCount; i++)
    ok = ok & jsNotEquals(setCheck(this.mRigidFragment, i, this.mRigidFragmentProvider.createFragment(this.mMolecule, this.mFragmentNo, i)), null);
  return ok;
}
;
_.separateDisconnectedFragments = function separateDisconnectedFragments(conformer){
  var SEPARATION_DISTANCE, atom, atom0, c, i, i0, i1, maxZ, meanX, meanY, minZ, shiftX, shiftY, shiftZ;
  SEPARATION_DISTANCE = 3;
  if (this.mDisconnectedFragmentCount > 1) {
    meanX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    meanY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    minZ = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    maxZ = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    for (i0 = 0; i0 < this.mDisconnectedFragmentCount; i0++) {
      minZ[i0] = 1000000000;
      maxZ[i0] = -1000000000;
    }
    for (atom0 = 0; atom0 < conformer.getSize_0(); atom0++) {
      meanX[this.mDisconnectedFragmentNo[atom0]] += conformer.getX(atom0);
      meanY[this.mDisconnectedFragmentNo[atom0]] += conformer.getY(atom0);
      if (minZ[this.mDisconnectedFragmentNo[atom0]] > conformer.getZ(atom0))
        minZ[this.mDisconnectedFragmentNo[atom0]] = conformer.getZ(atom0);
      if (maxZ[this.mDisconnectedFragmentNo[atom0]] < conformer.getZ(atom0))
        maxZ[this.mDisconnectedFragmentNo[atom0]] = conformer.getZ(atom0);
    }
    for (i1 = 0; i1 < this.mDisconnectedFragmentCount; i1++) {
      meanX[i1] /= this.mDisconnectedFragmentSize[i1];
      meanY[i1] /= this.mDisconnectedFragmentSize[i1];
    }
    shiftX = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    shiftY = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    shiftZ = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mDisconnectedFragmentCount, 15, 1);
    for (i = 1; i < this.mDisconnectedFragmentCount; i++) {
      shiftX[i] = meanX[0] - meanX[i];
      shiftY[i] = meanY[0] - meanY[i];
      shiftZ[i] = shiftZ[i - 1] + maxZ[i - 1] - minZ[i] + 3;
    }
    for (atom = 0; atom < conformer.getSize_0(); atom++) {
      if (this.mDisconnectedFragmentNo[atom] != 0) {
        c = conformer.getCoordinates(atom);
        c.x_0 += shiftX[this.mDisconnectedFragmentNo[atom]];
        c.y_0 += shiftY[this.mDisconnectedFragmentNo[atom]];
        c.z_0 += shiftZ[this.mDisconnectedFragmentNo[atom]];
      }
    }
  }
}
;
_.setThreadMaster = function setThreadMaster(tm){
  this.mThreadMaster = tm;
  this.mRigidFragmentProvider.setThreadMaster(tm);
}
;
_.skipCollisionCheck = function skipCollisionCheck(atom1, atom2){
  if (atom1 < atom2)
    this.mSkipCollisionCheck[atom2][atom1] = true;
  else 
    this.mSkipCollisionCheck[atom1][atom2] = true;
}
;
_.tryFixCollisions = function tryFixCollisions(baseConformer, torsionSet){
  var bestCollisionStrain, collisionStrain, conformer, f1, f10, f2, f20, globalBest, i, i0, localBest, origCollisionStrainMatrix, origCollisionStrainSum, r1, r2, rbIndex, remainingCollisionStrain, rotatableBond, startTorsion, step, strain, torsionDif;
  if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
    return false;
  origCollisionStrainMatrix = torsionSet.getCollisionStrainMatrix();
  remainingCollisionStrain = 0;
  for (f10 = 1; f10 < origCollisionStrainMatrix.length; f10++)
    if (jsNotEquals(origCollisionStrainMatrix[f10], null))
      for (f20 = 0; f20 < f10; f20++)
        if (origCollisionStrainMatrix[f10][f20] != 0 && this.mTorsionSetStrategy.getBondsBetweenFragments(f10, f20).length != 2)
          remainingCollisionStrain += origCollisionStrainMatrix[f10][f20];
  if (remainingCollisionStrain > 6)
    return false;
  conformer = null;
  localBest = null;
  globalBest = null;
  bestCollisionStrain = 1.7976931348623157E308;
  origCollisionStrainSum = torsionSet.getCollisionStrainSum();
  for (f1 = 1; f1 < origCollisionStrainMatrix.length; f1++) {
    if (jsNotEquals(origCollisionStrainMatrix[f1], null)) {
      for (f2 = 0; f2 < f1; f2++) {
        if (origCollisionStrainMatrix[f1][f2] > 1 && this.mTorsionSetStrategy.getBondsBetweenFragments(f1, f2).length == 2) {
          rbIndex = this.mTorsionSetStrategy.getBondsBetweenFragments(f1, f2);
          startTorsion = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
          for (i0 = 0; i0 < 2; i0++) {
            rotatableBond = this.mRotatableBond[rbIndex[i0]];
            startTorsion[i0] = torsionSet.getConformer().getBondTorsion(rotatableBond.getBond_1());
          }
          torsionDif = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
          for (r1 = -1; r1 <= 1; r1 += 2) {
            torsionDif[0] = r1 * 8;
            for (r2 = -1; r2 <= 1; r2 += 2) {
              torsionDif[1] = r2 * 8;
              collisionStrain = origCollisionStrainMatrix[f1][f2];
              for (step = 1; step <= 3; step++) {
                if (isNull(conformer))
                  conformer = new carcc.Conformer_0(torsionSet.getConformer());
                else 
                  conformer.copyFrom_0(torsionSet.getConformer());
                for (i = 0; i < 2; i++)
                  baseConformer.rotateTo(conformer, this.mRotatableBond[rbIndex[i]], narrow_short(startTorsion[i] + step * torsionDif[i]));
                strain = this.calculateCollisionStrain_0(conformer, this.mRigidFragment[f1], this.mRigidFragment[f2]);
                if (strain < collisionStrain - 1) {
                  collisionStrain = strain;
                  if (isNull(localBest))
                    localBest = new carcc.Conformer_0(conformer);
                  else 
                    localBest.copyFrom_0(conformer);
                  if (collisionStrain < 1)
                    break;
                }
                 else {
                  break;
                }
              }
              if (collisionStrain < origCollisionStrainMatrix[f1][f2] && collisionStrain < bestCollisionStrain) {
                bestCollisionStrain = collisionStrain;
                if (isNull(globalBest))
                  globalBest = new carcc.Conformer_0(localBest);
                else 
                  globalBest.copyFrom_0(localBest);
              }
            }
          }
        }
      }
    }
  }
  if (isNull(globalBest))
    return false;
  this.calculateCollision(torsionSet, globalBest);
  if (torsionSet.getCollisionStrainSum() >= origCollisionStrainSum) {
    torsionSet.setCollisionStrain_0(origCollisionStrainSum, origCollisionStrainMatrix);
    return false;
  }
  torsionSet.getConformer().copyFrom_0(globalBest);
  return true;
}
;
_.mAllConformerCount = 0;
_.mDisconnectedFragmentCount = 0;
_.mIsDiagnosticsMode = false;
_.mIsFinished = false;
_.mRandomSeed = 0;
_.mReturnedConformerCount = 0;
_.mUseSelfOrganizerIfAllFails = false;
ooccg.COLLISION_STRAIN_TO_ENERGY_FACTOR = 20;
ooccg.ESCAPE_ANGLE_0 = 8;
ooccg.ESCAPE_STEPS_0 = 3;
ooccg.MIN_ESCAPE_GAIN_PER_STEP_0 = 1;
ooccg.STRATEGY_ADAPTIVE_RANDOM_0 = 4;
ooccg.STRATEGY_LIKELY_RANDOM_0 = 3;
ooccg.STRATEGY_LIKELY_SYSTEMATIC_0 = 1;
ooccg.STRATEGY_PURE_RANDOM_0 = 2;
ooccg.VDW_TOLERANCE_HYDROGEN = 0.9;
ooccg.VDW_TOLERANCE_OTHER = 0.9;
cggl.Lorg_openmolecules_chem_conf_gen_ConformerGenerator_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'ConformerGenerator', 310, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_ConformerGenerator$lambda$0$Type = function $clinit_ConformerGenerator$lambda$0$Type(){
  ooccg.$clinit_ConformerGenerator$lambda$0$Type = emptyMethod;
}
;
ooccg.ConformerGenerator$lambda$0$Type = function ConformerGenerator$lambda$0$Type(){
  ooccg.$clinit_ConformerGenerator$lambda$0$Type();
}
;
defineClass(428, 1, {1:1, 50:1}, ooccg.ConformerGenerator$lambda$0$Type);
_.compare_0 = function compare_37(arg0, arg1){
  return ooccg.lambda$0_5(castTo(arg0, 188), castTo(arg1, 188));
}
;
_.equals_0 = function equals_48(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
cggl.Lorg_openmolecules_chem_conf_gen_ConformerGenerator$lambda$0$Type_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'ConformerGenerator/lambda$0$Type', 428, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_ConformerSetDiagnostics = function $clinit_ConformerSetDiagnostics(){
  ooccg.$clinit_ConformerSetDiagnostics = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.ConformerSetDiagnostics = function ConformerSetDiagnostics(cg){
  ooccg.$clinit_ConformerSetDiagnostics();
  Object_0.call(this);
  this.$init_724();
  this.mConformerGenerator = cg;
  this.mRotatableBond = cg.getRotatableBonds();
  this.mRigidFragment = cg.getRigidFragments();
  this.mDiagnosticsMap = new ju.TreeMap;
}
;
defineClass(429, 1, {1:1}, ooccg.ConformerSetDiagnostics);
_.$init_724 = function $init_724(){
}
;
_.addNew = function addNew(ts){
  this.mDiagnosticsMap.put(ts.getConformer().getName_0(), new ooccg.ConformerDiagnostics(ts));
}
;
_.get_7 = function get_43(ts){
  return castTo(this.mDiagnosticsMap.get(ts.getConformer().getName_0()), 285);
}
;
_.getRotatableBondCount_0 = function getRotatableBondCount_4(){
  return this.mRotatableBond.length;
}
;
_.setExitReason = function setExitReason(er){
  this.mExitReason = er;
}
;
cggl.Lorg_openmolecules_chem_conf_gen_ConformerSetDiagnostics_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'ConformerSetDiagnostics', 429, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_RigidFragment = function $clinit_RigidFragment(){
  ooccg.$clinit_RigidFragment = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.RigidFragment = function RigidFragment(coreAtomCount, coreToFragmentAtom, fragmentToOriginalAtom, extendedToFragmentAtom, originalToExtendedAtom, conformerList, conformerLikelyhood){
  ooccg.$clinit_RigidFragment();
  Object_0.call(this);
  this.$init_725();
  this.mCoreAtomCount = coreAtomCount;
  this.mCoreToFragmentAtom = coreToFragmentAtom;
  this.mFragmentToOriginalAtom = fragmentToOriginalAtom;
  this.mExtendedToFragmentAtom = extendedToFragmentAtom;
  this.mOriginalToExtendedAtom = originalToExtendedAtom;
  this.mConformerList = conformerList;
  this.mConformerLikelihood = conformerLikelyhood;
}
;
defineClass(259, 1, {1:1, 259:1}, ooccg.RigidFragment);
_.$init_725 = function $init_725(){
}
;
_.coreToOriginalAtom = function coreToOriginalAtom(atom){
  return this.mFragmentToOriginalAtom[this.mCoreToFragmentAtom[atom]];
}
;
_.extendedToOriginalAtom = function extendedToOriginalAtom(atom){
  return this.mFragmentToOriginalAtom[this.mExtendedToFragmentAtom[atom]];
}
;
_.getConformerCount_0 = function getConformerCount_1(){
  return this.mConformerList.length;
}
;
_.getConformerLikelihood = function getConformerLikelihood(i){
  return this.mConformerLikelihood[i];
}
;
_.getConnectionPointCount = function getConnectionPointCount(){
  return this.mExtendedToFragmentAtom.length - this.mCoreToFragmentAtom.length;
}
;
_.getCoreCoordinates = function getCoreCoordinates(conformer, atom){
  return this.mConformerList[conformer].getCoordinates(this.mCoreToFragmentAtom[atom]);
}
;
_.getCoreSize = function getCoreSize(){
  return this.mCoreToFragmentAtom.length;
}
;
_.getExtendedCoordinates = function getExtendedCoordinates(conformer, atom){
  return this.mConformerList[conformer].getCoordinates(this.mExtendedToFragmentAtom[atom]);
}
;
_.getExtendedSize = function getExtendedSize(){
  return this.mExtendedToFragmentAtom.length;
}
;
_.getLikelyRandomConformerIndex = function getLikelyRandomConformerIndex(random, progress){
  var contribution, sum, t;
  sum = 0;
  for (t = 0; t < this.mConformerLikelihood.length; t++) {
    contribution = (1 - progress) * this.mConformerLikelihood[t] + progress / this.mConformerLikelihood.length;
    sum += contribution;
    if (random <= sum)
      return t;
  }
  return this.mConformerLikelihood.length - 1;
}
;
_.originalToExtendedAtom = function originalToExtendedAtom_0(originalAtom){
  return this.mOriginalToExtendedAtom[originalAtom];
}
;
_.mCoreAtomCount = 0;
cggl.Lorg_openmolecules_chem_conf_gen_RigidFragment_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RigidFragment', 259, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_RigidFragmentCache = function $clinit_RigidFragmentCache(){
  ooccg.$clinit_RigidFragmentCache = emptyMethod;
  juc.$clinit_ConcurrentHashMap();
}
;
ooccg.RigidFragmentCache = function RigidFragmentCache(){
  juc.ConcurrentHashMap.call(this);
  this.$init_726();
}
;
ooccg.getDefaultInstance = function getDefaultInstance(){
  ooccg.$clinit_RigidFragmentCache();
  if (isNotNull(ooccg.sInstance_0))
    return ooccg.sInstance_0;
  {
    cggl.Lorg_openmolecules_chem_conf_gen_RigidFragmentCache_2_classLit;
    if (isNull(ooccg.sInstance_0))
      ooccg.sInstance_0 = new ooccg.RigidFragmentCache;
    return ooccg.sInstance_0;
  }
}
;
defineClass(602, 335, {4:1, 1:1, 72:1}, ooccg.RigidFragmentCache);
_.$init_726 = function $init_726(){
}
;
_.get = function get_44(key){
  return this.get_8(key);
}
;
_.clear = function clear_30(){
  getClassPrototype(172).clear.call(this);
  this.mDefaultCacheLoaded = false;
}
;
_.get_8 = function get_45(key){
  var entry;
  entry = castTo(getClassPrototype(335).get.call(this, key), 230);
  this.mGetCount++;
  if (isNotNull(entry)) {
    entry.incrementHitCount();
    this.mHitCount++;
  }
  return entry;
}
;
_.increaseNonCachableCount = function increaseNonCachableCount(){
  this.mNonCachableCount++;
}
;
_.mDefaultCacheLoaded = false;
_.mGetCount = 0;
_.mHitCount = 0;
_.mNonCachableCount = 0;
ooccg.DEFAULT_CACHE_FILE = '/resources/defaultRigidFragments.zip';
cggl.Lorg_openmolecules_chem_conf_gen_RigidFragmentCache_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RigidFragmentCache', 602, cggl.Ljava_util_concurrent_ConcurrentHashMap_2_classLit);
ooccg.$clinit_RigidFragmentCache$CacheEntry = function $clinit_RigidFragmentCache$CacheEntry(){
  ooccg.$clinit_RigidFragmentCache$CacheEntry = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.RigidFragmentCache$CacheEntry = function RigidFragmentCache$CacheEntry(coordinates, likelihoods){
  ooccg.$clinit_RigidFragmentCache$CacheEntry();
  Object_0.call(this);
  this.$init_727();
  this.coordinates_0 = coordinates;
  this.likelihood = likelihoods;
}
;
defineClass(230, 1, {10:1, 1:1, 230:1}, ooccg.RigidFragmentCache$CacheEntry);
_.$init_727 = function $init_727(){
}
;
_.compareTo_1 = function compareTo_37(o){
  return this.compareTo_19(castTo(o, 230));
}
;
_.compareTo_19 = function compareTo_38(o){
  if (this.hitCount != o.hitCount)
    return this.hitCount < o.hitCount?-1:1;
  return 0;
}
;
_.incrementHitCount = function incrementHitCount(){
  this.hitCount++;
}
;
_.hitCount = 0;
cggl.Lorg_openmolecules_chem_conf_gen_RigidFragmentCache$CacheEntry_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RigidFragmentCache/CacheEntry', 230, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_RigidFragmentProvider = function $clinit_RigidFragmentProvider(){
  ooccg.$clinit_RigidFragmentProvider = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.RigidFragmentProvider = function RigidFragmentProvider(randomSeed, cache, optimizeRigidFragments){
  ooccg.$clinit_RigidFragmentProvider();
  Object_0.call(this);
  this.$init_728();
  this.mRandomSeed = randomSeed;
  this.mCache = cache;
  this.mOptimizeFragments = optimizeRigidFragments;
  if (optimizeRigidFragments)
    this.forceFieldInitialize();
}
;
defineClass(427, 1, {1:1}, ooccg.RigidFragmentProvider);
_.$init_728 = function $init_728(){
}
;
_.createFragment = function createFragment(mol, fragmentNo, fragmentIndex){
  var ENERGY_FOR_FACTOR_10, atom, atom0, atom1, atom2, atom3, atomCount, bestConformer, bond, bond0, bondCount, c, cacheEntry, canonizer, conf, conf$iterator, conf$iterator0, conf$iterator1, conformer, conformerList, connAtom, coords, coords$array, coords$index, coords$max, coreAtom, coreAtomCount, coreToFragmentAtom, energy, energyLimit, extendedAtom, extendedAtomCount, extendedToFragmentAtom, fragment, fragmentAtom, fragmentToOriginalAtom, graphIndex, i, i0, i1, i2, i3, includeAtom, index_0, invertedEnantiomer, isCoreFragment, isOuterShellAtom, j, key, likelihood, likelihoodSum, minEnergy, minStrain, originalToExtendedAtom, population, populationSum, selfOrganizer, strainLimit, useCache, validEnergyCount, xyz;
  coreAtomCount = 0;
  atomCount = 0;
  extendedAtomCount = 0;
  includeAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  isOuterShellAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  isCoreFragment = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  for (atom0 = 0; atom0 < mol.getAllAtoms_0(); atom0++) {
    if (fragmentNo[atom0] == fragmentIndex) {
      isCoreFragment[atom0] = true;
      includeAtom[atom0] = true;
      atomCount++;
      coreAtomCount++;
    }
  }
  for (atom1 = 0; atom1 < mol.getAllAtoms_0(); atom1++) {
    if (isCoreFragment[atom1]) {
      for (i = 0; i < mol.getConnAtoms_0(atom1); i++) {
        connAtom = mol.getConnAtom_0(atom1, i);
        if (!includeAtom[connAtom]) {
          includeAtom[connAtom] = true;
          atomCount++;
          extendedAtomCount++;
        }
      }
    }
  }
  for (atom2 = 0; atom2 < mol.getAllAtoms_0(); atom2++) {
    if (includeAtom[atom2] && !isCoreFragment[atom2] && !isOuterShellAtom[atom2]) {
      for (i = 0; i < mol.getAllConnAtoms_0(atom2); i++) {
        connAtom = mol.getConnAtom_0(atom2, i);
        if (!includeAtom[connAtom]) {
          isOuterShellAtom[connAtom] = true;
          includeAtom[connAtom] = true;
          atomCount++;
        }
      }
    }
  }
  bondCount = 0;
  for (bond0 = 0; bond0 < mol.getAllBonds_0(); bond0++)
    if (includeAtom[mol.getBondAtom_0(0, bond0)] && includeAtom[mol.getBondAtom_0(1, bond0)])
      bondCount++;
  fragment = new carc2.StereoMolecule_0(atomCount, bondCount);
  mol.copyMoleculeByAtoms_0(fragment, includeAtom, false, null);
  fragment.setFragment_0(true);
  coreToFragmentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, coreAtomCount, 15, 1);
  fragmentToOriginalAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, atomCount, 15, 1);
  extendedToFragmentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, coreAtomCount + extendedAtomCount, 15, 1);
  originalToExtendedAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  coreAtom = 0;
  fragmentAtom = 0;
  extendedAtom = 0;
  for (atom3 = 0; atom3 < mol.getAllAtoms_0(); atom3++) {
    if (includeAtom[atom3]) {
      if (mol.isFlatNitrogen_0(atom3))
        fragment.setAtomQueryFeature(fragmentAtom, 268435456, true);
      if (!isCoreFragment[atom3])
        fragment.setAtomMarker_0(fragmentAtom, true);
      if (isCoreFragment[atom3] || !isOuterShellAtom[atom3]) {
        extendedToFragmentAtom[extendedAtom] = fragmentAtom;
        originalToExtendedAtom[atom3] = extendedAtom;
        extendedAtom++;
      }
      if (isCoreFragment[atom3]) {
        coreToFragmentAtom[coreAtom] = fragmentAtom;
        coreAtom++;
      }
      fragmentToOriginalAtom[fragmentAtom] = atom3;
      if (fragment.getAtomicNo_0(fragmentAtom) == 1)
        fragment.setAtomMass_0(fragmentAtom, 2);
      fragmentAtom++;
    }
  }
  conformerList = null;
  likelihood = null;
  canonizer = null;
  key = null;
  invertedEnantiomer = false;
  useCache = isNotNull(this.mCache) && atomCount <= ooccg.MAX_ATOMS_FOR_CACHING;
  if (useCache) {
    canonizer = new carc2.Canonizer_0(fragment, 512);
    for (atom = 0; atom < fragment.getAtoms_0(); atom++) {
      if (canonizer.getTHParity(atom) == 3) {
        useCache = false;
        break;
      }
    }
    for (bond = 0; bond < fragment.getBonds_0(); bond++) {
      if (canonizer.getEZParity(bond) == 3) {
        useCache = false;
        break;
      }
    }
    if (useCache)
      canonizer.setParities();
  }
  if (isNotNull(this.mCache) && !useCache)
    this.mCache.increaseNonCachableCount();
  fragment.setParitiesValid_0(0);
  if (useCache) {
    invertedEnantiomer = canonizer.normalizeEnantiomer();
    key = canonizer.getIDCode_0();
    cacheEntry = this.mCache.get_8(key);
    if (isNotNull(cacheEntry)) {
      graphIndex = canonizer.getGraphIndexes();
      conformerList = new ju.ArrayList;
      for (coords$array = cacheEntry.coordinates_0 , coords$index = 0 , coords$max = coords$array.length; coords$index < coords$max; ++coords$index) {
        coords = coords$array[coords$index];
        for (j = 0; j < fragment.getAllAtoms_0(); j++) {
          c = coords[graphIndex[j]];
          fragment.setAtomX_0(j, c.x_0);
          fragment.setAtomY_0(j, c.y_0);
          fragment.setAtomZ_0(j, invertedEnantiomer?-c.z_0:c.z_0);
        }
        conformerList.add(new ooccs.SelfOrganizedConformer(fragment));
      }
      likelihood = cacheEntry.likelihood;
    }
  }
  if (isNull(conformerList)) {
    if (this.mOptimizeFragments && !this.forceFieldAllowsOpenValences()) {
      fragment.setFragment_0(false);
      ooccg.addHydrogenAtoms(fragment);
    }
    selfOrganizer = new ooccs.ConformationSelfOrganizer(fragment, true);
    selfOrganizer.setThreadMaster(this.mThreadMaster);
    selfOrganizer.initializeConformers_2(this.mRandomSeed, ooccg.MAX_CONFORMERS);
    conformerList = new ju.ArrayList;
    bestConformer = selfOrganizer.getNextConformer_1();
    conformerList.add(bestConformer);
    conformer = selfOrganizer.getNextConformer_1();
    while (isNotNull(conformer)) {
      conformerList.add(conformer);
      conformer = selfOrganizer.getNextConformer_1();
    }
    ENERGY_FOR_FACTOR_10 = 1.36;
    minStrain = 1.7976931348623157E308;
    for (conf$iterator0 = conformerList.iterator(); conf$iterator0.hasNext_0();) {
      conf = castTo(conf$iterator0.next_3(), 67);
      minStrain = $wnd.Math.min(minStrain, castTo(conf, 67).getTotalStrain());
    }
    strainLimit = minStrain + 3 * ENERGY_FOR_FACTOR_10;
    for (i0 = conformerList.size() - 1; i0 >= 0; i0--)
      if (castTo(conformerList.getAtIndex(i0), 67).getTotalStrain() > strainLimit)
        conformerList.removeAtIndex(i0);
    likelihood = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, conformerList.size(), 15, 1);
    likelihoodSum = 0;
    index_0 = 0;
    for (i1 = 0; i1 < conformerList.size(); i1++) {
      conf = castTo(conformerList.getAtIndex(i1), 67);
      likelihood[i1] = $wnd.Math.pow(10, (minStrain - conf.getTotalStrain()) / ENERGY_FOR_FACTOR_10);
      likelihoodSum += likelihood[i1];
    }
    for (i2 = 0; i2 < conformerList.size(); i2++)
      likelihood[i2] /= likelihoodSum;
    if (this.mOptimizeFragments) {
      validEnergyCount = 0;
      minEnergy = 1.7976931348623157E308;
      for (conf$iterator1 = conformerList.iterator(); conf$iterator1.hasNext_0();) {
        conf = castTo(conf$iterator1.next_3(), 67);
        energy = this.forceFieldMinimize(conf.toMolecule());
        conf.setEnergy(energy);
        if (!isNaN(energy)) {
          minEnergy = $wnd.Math.min(minEnergy, energy);
          validEnergyCount++;
        }
        conf.copyFrom(fragment);
      }
      energyLimit = minEnergy + 2 * ENERGY_FOR_FACTOR_10;
      for (conf$iterator = conformerList.iterator(); conf$iterator.hasNext_0();) {
        conf = castTo(conf$iterator.next_3(), 67);
        if (!isNaN(conf.getEnergy()) && conf.getEnergy() > energyLimit) {
          conf.setEnergy(NaN);
          validEnergyCount--;
        }
      }
      if (validEnergyCount != 0) {
        population = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, validEnergyCount, 15, 1);
        populationSum = 0;
        index_0 = 0;
        for (i3 = conformerList.size() - 1; i3 >= 0; i3--) {
          conf = castTo(conformerList.getAtIndex(i3), 71);
          if (isNaN(conf.getEnergy()))
            conformerList.removeAtIndex(i3);
          else {
            population[index_0] = $wnd.Math.pow(10, (minEnergy - conf.getEnergy()) / ENERGY_FOR_FACTOR_10);
            populationSum += population[index_0];
            index_0++;
          }
        }
        likelihood = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, validEnergyCount, 15, 1);
        for (i = 0; i < validEnergyCount; i++)
          likelihood[i] = population[i] / populationSum;
      }
    }
    if (useCache) {
      graphIndex = canonizer.getGraphIndexes();
      coords = initMultidimensionalArray(cggl.Lcom_actelion_research_chem_Coordinates_2_classLit, [{4:1, 1:1, 7:1}, {187:1, 4:1, 1:1, 7:1}], [187, 43], 0, [conformerList.size(), graphIndex.length], 2);
      for (i = 0; i < coords.length; i++) {
        for (j = 0; j < graphIndex.length; j++) {
          xyz = castTo(conformerList.getAtIndex(i), 67).getCoordinates(j);
          coords[i][graphIndex[j]] = new carc2.Coordinates_1(xyz.x_0, xyz.y_0, invertedEnantiomer?-xyz.z_0:xyz.z_0);
        }
      }
      this.mCache.put(key, new ooccg.RigidFragmentCache$CacheEntry(coords, likelihood));
    }
  }
  return new ooccg.RigidFragment(coreAtomCount, coreToFragmentAtom, fragmentToOriginalAtom, extendedToFragmentAtom, originalToExtendedAtom, castTo(conformerList.toArray_0(initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_so_SelfOrganizedConformer_2_classLit, {4:1, 1:1, 7:1, 1347:1}, 67, 0, 0, 1)), 1347), likelihood);
}
;
_.forceFieldAllowsOpenValences = function forceFieldAllowsOpenValences(){
  return true;
}
;
_.forceFieldInitialize = function forceFieldInitialize(){
  carcfm.initialize_2('MMFF94s+');
}
;
_.forceFieldMinimize = function forceFieldMinimize(mol){
  var bate, ex, ff;
  try {
    ff = new carcfm.ForceFieldMMFF94(mol, 'MMFF94s+');
    ff.minimise();
    return ff.getTotalEnergy_0();
  }
   catch ($e0) {
    $e0 = toJava($e0);
    if (instanceOf($e0, 276)) {
      bate = $e0;
      return NaN;
    }
     else if (instanceOf($e0, 14)) {
      ex = $e0;
      ex.printStackTrace();
      return NaN;
    }
     else 
      throw toJs($e0);
  }
}
;
_.setThreadMaster = function setThreadMaster_0(tm){
  this.mThreadMaster = tm;
}
;
_.mOptimizeFragments = false;
_.mRandomSeed = 0;
ooccg.MAX_ATOMS_FOR_CACHING = 32;
ooccg.MAX_CONFORMERS = 16;
cggl.Lorg_openmolecules_chem_conf_gen_RigidFragmentProvider_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RigidFragmentProvider', 427, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_RotatableBond = function $clinit_RotatableBond(){
  ooccg.$clinit_RotatableBond = emptyMethod;
  jl.$clinit_Object();
  ooccg.SIXTY_DEGREE_TORSION = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [0, 60, 120, 180, 240, 300]);
  ooccg.SIXTY_DEGREE_FREQUENCY = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [17, 17, 17, 17, 17, 17]);
  ooccg.SIXTY_DEGREE_RANGE = stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 2), {4:1, 1:1, 7:1, 49:1}, 16, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [-20, 20]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [40, 80]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [100, 140]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [160, 200]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [220, 260]), stampJavaTypeInfo(getClassLiteralForArray(cggl.S_classLit, 1), {4:1, 1:1, 16:1}, 5, 15, [280, 320])]);
}
;
ooccg.RotatableBond = function RotatableBond(mol, bond, fragmentNo, disconnectedFragmentNo, disconnectedFragmentSize, fragment, use60degreeSteps){
  ooccg.$clinit_RotatableBond();
  var detail, prediction;
  Object_0.call(this);
  this.$init_729();
  if (carcc.getTorsionFrequencies('gGP`@dfyjidNcGI[WQCP`<')[0] == -1)
    (jl.$clinit_System() , jl.out_0).println_0('ERROR');
  this.mBond = bond;
  this.mTorsionAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
  this.mRearAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  detail = new carcc.TorsionDetail;
  if (jsNotEquals(carcc.getTorsionID(mol, bond, this.mTorsionAtom, detail), null)) {
    this.mRearAtom[0] = detail.getRearAtom(0);
    this.mRearAtom[1] = detail.getRearAtom(1);
  }
   else {
    this.predictAtomSequence(mol);
  }
  this.mFragmentNo1 = fragmentNo[this.mTorsionAtom[1]];
  this.mFragmentNo2 = fragmentNo[this.mTorsionAtom[2]];
  this.mFragment1 = fragment[this.mFragmentNo1];
  this.mFragment2 = fragment[this.mFragmentNo2];
  this.mBondAtomsInFragmentOrder = fragmentNo[mol.getBondAtom_0(0, bond)] == this.mFragmentNo1;
  if (carcc.getTorsionFrequencies('gGP`@dfyjidNcGI[WQCP`<')[0] == -1)
    (jl.$clinit_System() , jl.out_0).println_0('ERROR');
  if (use60degreeSteps) {
    this.mDefaultTorsion = ooccg.SIXTY_DEGREE_TORSION;
    this.mDefaultFrequency = ooccg.SIXTY_DEGREE_FREQUENCY;
    this.mDefaultTorsionRange = ooccg.SIXTY_DEGREE_RANGE;
  }
   else {
    this.mTorsionID = detail.getID();
    this.mDefaultTorsion = carcc.getTorsions(detail.getID());
    if (jsEquals(this.mDefaultTorsion, null)) {
      prediction = new carcc.TorsionPrediction(mol, this.mTorsionAtom);
      this.mDefaultTorsion = prediction.getTorsions();
      this.mDefaultFrequency = prediction.getTorsionFrequencies();
      this.mDefaultTorsionRange = prediction.getTorsionRanges();
    }
     else {
      this.mDefaultFrequency = carcc.getTorsionFrequencies(detail.getID());
      this.mDefaultTorsionRange = carcc.getTorsionRanges(detail.getID());
    }
  }
  this.removeIllegalTorsions(mol);
  this.removeEquivalentTorsions(mol);
  this.findSmallerSideAtomList(mol, disconnectedFragmentNo, disconnectedFragmentSize);
}
;
defineClass(188, 1, {1:1, 188:1}, ooccg.RotatableBond);
_.$init_729 = function $init_729(){
}
;
_.areBondAtomsInFragmentOrder = function areBondAtomsInFragmentOrder(){
  return this.mBondAtomsInFragmentOrder;
}
;
_.countSymmetricalTerminalNeighbors = function countSymmetricalTerminalNeighbors(mol, atom, rearAtom){
  var connAtom, i, rank;
  if (mol.getAtomPi_0(atom) == 2)
    return 1;
  if ((mol.getAtomPi_0(atom) == 1 || mol.isFlatNitrogen_0(atom)) && mol.getConnAtoms_0(atom) != 3)
    return 1;
  if (mol.getAtomPi_0(atom) == 0 && mol.getConnAtoms_0(atom) != 4)
    return 1;
  rank = -2;
  for (i = 0; i < mol.getConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    if (connAtom != rearAtom) {
      if (rank == -2)
        rank = mol.getSymmetryRank_0(connAtom);
      else if (rank != mol.getSymmetryRank_0(connAtom))
        return 1;
    }
  }
  return mol.getConnAtoms_0(atom) - 1;
}
;
_.findSmallerSideAtomList = function findSmallerSideAtomList(mol, disconnectedFragmentNo, disconnectedFragmentSize){
  var alkyneAtoms, atom, backAtom, connAtom, fragmentNo, invert, isMember, j, memberCount, memberNo, spAtom;
  isMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  memberCount = mol.getSubstituent_0(this.mRearAtom[0], this.mTorsionAtom[1], isMember, null, null);
  alkyneAtoms = 0;
  if (this.mRearAtom[0] != this.mTorsionAtom[2])
    alkyneAtoms = mol.getPathLength_0(this.mRearAtom[0], this.mTorsionAtom[2]);
  invert = false;
  if (memberCount > disconnectedFragmentSize - alkyneAtoms - memberCount) {
    memberCount = disconnectedFragmentSize - alkyneAtoms - memberCount;
    invert = true;
  }
  if (invert && alkyneAtoms != 0) {
    spAtom = this.mRearAtom[0];
    backAtom = this.mTorsionAtom[1];
    while (mol.getAtomPi_0(spAtom) == 2 && mol.getConnAtoms_0(spAtom) == 2 && mol.getAtomicNo_0(spAtom) < 10) {
      isMember[spAtom] = true;
      for (j = 0; j < 2; j++) {
        connAtom = mol.getConnAtom_0(spAtom, j);
        if (connAtom != backAtom) {
          backAtom = spAtom;
          spAtom = connAtom;
          break;
        }
      }
    }
  }
  memberNo = 0;
  fragmentNo = disconnectedFragmentNo[this.mTorsionAtom[1]];
  this.mSmallerSideAtomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, memberCount, 15, 1);
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    if (disconnectedFragmentNo[atom] == fragmentNo && isMember[atom] ^ invert)
      this.mSmallerSideAtomList[memberNo++] = atom;
  this.mBondRelevance = (memberCount == 1?1:2 * memberCount) / mol.getAtoms_0();
  this.mRotationCenter = this.mTorsionAtom[invert?2:1];
}
;
_.getBond_1 = function getBond_1(){
  return this.mBond;
}
;
_.getDefaultFrequencies = function getDefaultFrequencies(){
  return this.mDefaultFrequency;
}
;
_.getDefaultTorsionRanges = function getDefaultTorsionRanges(){
  return this.mDefaultTorsionRange;
}
;
_.getDefaultTorsions = function getDefaultTorsions(){
  return this.mDefaultTorsion;
}
;
_.getFragment_3 = function getFragment_4(i){
  return i == 0?this.mFragment1:this.mFragment2;
}
;
_.getFragmentNo = function getFragmentNo(i){
  return i == 0?this.mFragmentNo1:this.mFragmentNo2;
}
;
_.getRotationCenter = function getRotationCenter(){
  return this.mRotationCenter;
}
;
_.getSmallerSideAtoms = function getSmallerSideAtoms(){
  return this.mSmallerSideAtomList;
}
;
_.getTorsionAtoms = function getTorsionAtoms(){
  return this.mTorsionAtom;
}
;
_.getTorsionCount = function getTorsionCount(){
  return this.mDefaultTorsion.length;
}
;
_.predictAtomSequence = function predictAtomSequence(mol){
  var centralAtom, connAtom, i, i0, j, rearAtom;
  for (i0 = 0; i0 < 2; i0++) {
    centralAtom = mol.getBondAtom_0(i0, this.mBond);
    rearAtom = mol.getBondAtom_0(1 - i0, this.mBond);
    while (mol.getAtomPi_0(centralAtom) == 2 && mol.getConnAtoms_0(centralAtom) == 2 && mol.getAtomicNo_0(centralAtom) < 10) {
      for (j = 0; j < 2; j++) {
        connAtom = mol.getConnAtom_0(centralAtom, j);
        if (connAtom != rearAtom) {
          rearAtom = centralAtom;
          centralAtom = connAtom;
          break;
        }
      }
    }
    this.mTorsionAtom[i0 + 1] = centralAtom;
    this.mRearAtom[i0] = rearAtom;
  }
  if (mol.getAtomPi_0(this.mTorsionAtom[1]) == 0 && mol.getConnAtoms_0(this.mTorsionAtom[1]) == 3) {
    this.mTorsionAtom[0] = -1;
  }
   else {
    for (i = 0; i < mol.getConnAtoms_0(this.mTorsionAtom[1]); i++) {
      connAtom = mol.getConnAtom_0(this.mTorsionAtom[1], i);
      if (connAtom != this.mTorsionAtom[2]) {
        this.mTorsionAtom[0] = connAtom;
        break;
      }
    }
  }
  if (mol.getAtomPi_0(this.mTorsionAtom[2]) == 0 && mol.getConnAtoms_0(this.mTorsionAtom[2]) == 3) {
    this.mTorsionAtom[3] = -1;
  }
   else {
    for (i = 0; i < mol.getConnAtoms_0(this.mTorsionAtom[2]); i++) {
      connAtom = mol.getConnAtom_0(this.mTorsionAtom[2], i);
      if (connAtom != this.mTorsionAtom[1]) {
        this.mTorsionAtom[3] = connAtom;
        break;
      }
    }
  }
}
;
_.removeEquivalentTorsions = function removeEquivalentTorsions(mol){
  var SYMMETRY_COUNT, count, frequencySum, i, i0, maxAngle, newFrequency, newRange, newTorsion, symmetryCount1, symmetryCount2;
  SYMMETRY_COUNT = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 2), {35:1, 4:1, 1:1, 7:1}, 6, 0, [stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [1, 2, 3]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [2, 4, 12]), stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [3, 12, 6])]);
  symmetryCount1 = this.mFragment1.getConnectionPointCount() != 1?1:this.countSymmetricalTerminalNeighbors(mol, this.mTorsionAtom[1], this.mRearAtom[0]);
  symmetryCount2 = this.mFragment2.getConnectionPointCount() != 1?1:this.countSymmetricalTerminalNeighbors(mol, this.mTorsionAtom[2], this.mRearAtom[1]);
  if (symmetryCount1 == 1 && symmetryCount2 == 1)
    return;
  maxAngle = narrow_int(360 / $wnd.Math.max(symmetryCount1, symmetryCount2));
  count = 0;
  frequencySum = 0;
  for (i0 = 0; i0 < this.mDefaultTorsion.length && this.mDefaultTorsion[i0] < maxAngle; i0++) {
    frequencySum += this.mDefaultFrequency[i0];
    count++;
  }
  if (count == 0)
    return;
  newTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
  newFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
  newRange = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 7:1, 49:1}, 16, count, 0, 2);
  for (i = 0; i < count; i++) {
    newTorsion[i] = this.mDefaultTorsion[i];
    newFrequency[i] = narrow_short(narrow_int(this.mDefaultFrequency[i] * 100 / frequencySum));
    newRange[i] = this.mDefaultTorsionRange[i];
  }
  this.mDefaultTorsion = newTorsion;
  this.mDefaultFrequency = newFrequency;
  this.mDefaultTorsionRange = newRange;
}
;
_.removeIllegalTorsions = function removeIllegalTorsions(mol){
  var atom, conn, count, frequencySum, i, i0, i1, inverse, j, newFrequency, newRange, newTorsion, other, rear;
  if (mol.getBondOrder_0(this.mBond) == 1 && (mol.getBondParity_0(this.mBond) == 1 || mol.getBondParity_0(this.mBond) == 2)) {
    inverse = false;
    for (i0 = 0; i0 < 2; i0++) {
      conn = this.mTorsionAtom[3 * i0];
      atom = this.mTorsionAtom[1 + i0];
      rear = this.mTorsionAtom[2 - i0];
      for (j = 0; j < mol.getConnAtoms_0(atom); j++) {
        other = mol.getConnAtom_0(atom, j);
        if (other != rear && other != conn) {
          if (other < conn)
            inverse = !inverse;
          break;
        }
      }
    }
    if (mol.getBondParity_0(this.mBond) == 1)
      inverse = !inverse;
    count = 0;
    frequencySum = 0;
    for (i1 = 0; i1 < this.mDefaultTorsion.length; i1++) {
      if (this.mDefaultTorsion[i1] < 180 ^ inverse) {
        frequencySum += this.mDefaultFrequency[i1];
        count++;
      }
    }
    if (count < this.mDefaultTorsion.length) {
      newTorsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
      newFrequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, count, 15, 1);
      newRange = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 7:1, 49:1}, 16, count, 0, 2);
      count = 0;
      for (i = 0; i < this.mDefaultTorsion.length; i++) {
        if (this.mDefaultTorsion[i] < 180 ^ inverse) {
          newTorsion[count] = this.mDefaultTorsion[i];
          newFrequency[count] = narrow_short(narrow_int(this.mDefaultFrequency[i] * 100 / frequencySum));
          newRange[count] = this.mDefaultTorsionRange[i];
          count++;
        }
      }
      this.mDefaultTorsion = newTorsion;
      this.mDefaultFrequency = newFrequency;
      this.mDefaultTorsionRange = newRange;
    }
  }
}
;
_.mBond = 0;
_.mBondAtomsInFragmentOrder = false;
_.mBondRelevance = 0;
_.mFragmentNo1 = 0;
_.mFragmentNo2 = 0;
_.mRotationCenter = 0;
cggl.Lorg_openmolecules_chem_conf_gen_RotatableBond_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'RotatableBond', 188, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSet = function $clinit_TorsionSet(){
  ooccg.$clinit_TorsionSet = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.TorsionSet = function TorsionSet(ref){
  ooccg.$clinit_TorsionSet();
  Object_0.call(this);
  this.$init_730();
  this.mTorsionIndex = ju.copyOf_9(ref.mTorsionIndex, ref.mTorsionIndex.length);
  this.mConformerIndex = ju.copyOf_9(ref.mConformerIndex, ref.mConformerIndex.length);
  this.mEncodedBits = ju.copyOf_10(ref.mEncodedBits, ref.mEncodedBits.length);
}
;
ooccg.TorsionSet_0 = function TorsionSet_0(torsionIndex, conformerIndex, encoder){
  ooccg.$clinit_TorsionSet();
  Object_0.call(this);
  this.$init_730();
  this.mTorsionIndex = torsionIndex;
  this.mConformerIndex = conformerIndex;
  this.mEncodedBits = encoder.encode_0(torsionIndex, conformerIndex);
}
;
defineClass(82, 1, {10:1, 1:1, 82:1}, ooccg.TorsionSet, ooccg.TorsionSet_0);
_.$init_730 = function $init_730(){
}
;
_.compareTo_1 = function compareTo_39(ts){
  return this.compareTo_20(castTo(ts, 82));
}
;
_.compareTo_20 = function compareTo_40(ts){
  var i;
  for (i = 0; i < this.mEncodedBits.length; i++)
    if (neq(this.mEncodedBits[i], ts.mEncodedBits[i]))
      return lt(this.mEncodedBits[i], ts.mEncodedBits[i])?-1:1;
  return 0;
}
;
_.equals_0 = function equals_49(ts){
  return this.compareTo_20(castTo(ts, 82)) == 0;
}
;
_.getCollisionStrainIfMatches = function getCollisionStrainIfMatches(er){
  return this.matches(er.getMask(), er.getData_1())?this.mCollisionIntensitySum:0;
}
;
_.getCollisionStrainMatrix = function getCollisionStrainMatrix(){
  return this.mCollisionIntensityMatrix;
}
;
_.getCollisionStrainSum = function getCollisionStrainSum(){
  return this.mCollisionIntensitySum;
}
;
_.getConformer = function getConformer(){
  return this.mConformer;
}
;
_.getConformerIndexes = function getConformerIndexes(){
  return this.mConformerIndex;
}
;
_.getContribution = function getContribution(){
  return this.mContribution;
}
;
_.getTorsionIndexes = function getTorsionIndexes_0(){
  return this.mTorsionIndex;
}
;
_.isUsed = function isUsed_0(){
  return this.mIsUsed;
}
;
_.matches = function matches(mask, data_0){
  var i;
  for (i = 0; i < mask.length; i++)
    if (neq(and_0(this.mEncodedBits[i], mask[i]), and_0(data_0[i], mask[i])))
      return false;
  return true;
}
;
_.setCollisionStrain_0 = function setCollisionStrain_0(sum, matrix){
  this.mCollisionIntensitySum = sum;
  this.mCollisionIntensityMatrix = matrix;
  if (isNotNull(this.mConformer))
    this.mConformer.setLikelihood(this.mContribution * $wnd.Math.pow(10, -sum / 1.36));
}
;
_.setConformer_0 = function setConformer_0(c){
  this.mConformer = c;
  this.mConformer.setLikelihood(this.mContribution * $wnd.Math.pow(10, -this.mCollisionIntensitySum / 1.36));
}
;
_.setContribution = function setContribution(contribution){
  this.mContribution = contribution;
}
;
_.setUsed = function setUsed(){
  this.mIsUsed = true;
}
;
_.toString_0 = function toString_70(){
  var i, i$array, i$array0, i$index, i$index0, i$max, i$max0, sb;
  sb = new jl.StringBuilder;
  for (i$array0 = this.mTorsionIndex , i$index0 = 0 , i$max0 = i$array0.length; i$index0 < i$max0; ++i$index0) {
    i = i$array0[i$index0];
    sb.append_5(i);
    sb.append_4(44);
  }
  if (this.mTorsionIndex.length != 0)
    sb.setLength(sb.length_0() - 1);
  sb.append_4(59);
  for (i$array = this.mConformerIndex , i$index = 0 , i$max = i$array.length; i$index < i$max; ++i$index) {
    i = i$array[i$index];
    sb.append_5(i);
    sb.append_4(44);
  }
  if (this.mConformerIndex.length != 0)
    sb.setLength(sb.length_0() - 1);
  return sb.toString_0();
}
;
_.mCollisionIntensitySum = 0;
_.mContribution = 0;
_.mIsUsed = false;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSet_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSet', 82, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetEliminationRule = function $clinit_TorsionSetEliminationRule(){
  ooccg.$clinit_TorsionSetEliminationRule = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.TorsionSetEliminationRule = function TorsionSetEliminationRule(torsionIndex, rotatableBondIndex, collisionIntensity, encoder){
  ooccg.$clinit_TorsionSetEliminationRule();
  Object_0.call(this);
  this.$init_731();
  this.mMask = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, encoder.getEncodingLongCount(), 14, 1);
  this.mData = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, encoder.getEncodingLongCount(), 14, 1);
  encoder.encodeRule(torsionIndex, rotatableBondIndex, this.mMask, this.mData);
  this.mCollisionIntensity = collisionIntensity;
}
;
defineClass(181, 1, {1:1, 181:1}, ooccg.TorsionSetEliminationRule);
_.$init_731 = function $init_731(){
}
;
_.getCollisionIntensity = function getCollisionIntensity_0(){
  return this.mCollisionIntensity;
}
;
_.getData_1 = function getData_0(){
  return this.mData;
}
;
_.getMask = function getMask(){
  return this.mMask;
}
;
_.isCovered = function isCovered_0(rule){
  var i, isCovered;
  isCovered = true;
  for (i = 0; i < this.mMask.length; i++)
    if (neq(and_0(not_0(rule.mMask[i]), this.mMask[i]), 0) || neq(and_0(rule.mData[i], this.mMask[i]), this.mData[i]))
      isCovered = false;
  return isCovered;
}
;
_.isMoreGeneral = function isMoreGeneral_0(rule){
  var i, isMoreGeneral;
  isMoreGeneral = true;
  for (i = 0; i < this.mMask.length; i++)
    if (neq(and_0(not_0(this.mMask[i]), rule.mMask[i]), 0) || neq(and_0(this.mData[i], rule.mMask[i]), rule.mData[i]))
      isMoreGeneral = false;
  return isMoreGeneral;
}
;
_.mCollisionIntensity = 0;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetEliminationRule_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetEliminationRule', 181, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetEncoder = function $clinit_TorsionSetEncoder(){
  ooccg.$clinit_TorsionSetEncoder = emptyMethod;
  jl.$clinit_Object();
  ooccg.BITS_0 = stampJavaTypeInfo(getClassLiteralForArray(cggl.J_classLit, 1), {4:1, 1:1, 60:1}, 5, 14, [0, 1, 3, 7, 15, 31, 63, 127]);
}
;
ooccg.TorsionSetEncoder = function TorsionSetEncoder(rigidFragment, rotatableBond){
  ooccg.$clinit_TorsionSetEncoder();
  var bitCount, bits, index_0, longIndex, rb, rb$array, rb$index, rb$max, rf, rf$array, rf$index, rf$max;
  Object_0.call(this);
  this.$init_732();
  this.mRigidFragment = rigidFragment;
  this.mRotatableBond = rotatableBond;
  this.mEncodingBitCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, rotatableBond.length + rigidFragment.length, 15, 1);
  this.mEncodingBitShift = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, rotatableBond.length + rigidFragment.length, 15, 1);
  this.mEncodingLongIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, rotatableBond.length + rigidFragment.length, 15, 1);
  bitCount = 0;
  longIndex = 0;
  index_0 = 0;
  for (rb$array = rotatableBond , rb$index = 0 , rb$max = rb$array.length; rb$index < rb$max; ++rb$index) {
    rb = rb$array[rb$index];
    bits = this.neededBits(rb.getTorsionCount());
    if (bitCount + bits <= 64) {
      this.mEncodingBitShift[index_0] = bitCount;
      bitCount += bits;
    }
     else {
      longIndex++;
      this.mEncodingBitShift[index_0] = 0;
      bitCount = 0;
    }
    this.mEncodingBitCount[index_0] = bits;
    this.mEncodingLongIndex[index_0] = longIndex;
    index_0++;
  }
  for (rf$array = rigidFragment , rf$index = 0 , rf$max = rf$array.length; rf$index < rf$max; ++rf$index) {
    rf = rf$array[rf$index];
    bits = this.neededBits(rf.getConformerCount_0());
    if (bitCount + bits <= 64) {
      this.mEncodingBitShift[index_0] = bitCount;
      bitCount += bits;
    }
     else {
      longIndex++;
      this.mEncodingBitShift[index_0] = 0;
      bitCount = 0;
    }
    this.mEncodingBitCount[index_0] = bits;
    this.mEncodingLongIndex[index_0] = longIndex;
    index_0++;
  }
  this.mEncodingLongCount = longIndex + 1;
}
;
defineClass(690, 1, {1:1}, ooccg.TorsionSetEncoder);
_.$init_732 = function $init_732(){
}
;
_.createRuleString = function createRuleString(rule, baseConformer){
  var data_0, i, i0, i1, sb, sl;
  sb = new jl.StringBuilder;
  data_0 = this.decodeRule(rule);
  sb.append_9(' rb:');
  sl = sb.length_0();
  for (i0 = 0; i0 < data_0.length; i0++) {
    if (data_0[i0] != -1) {
      if (sb.length_0() != sl)
        sb.append_4(44);
      sb.append_5(i0);
    }
  }
  sb.append_9(' ti:');
  sl = sb.length_0();
  for (i1 = 0; i1 < data_0.length; i1++) {
    if (data_0[i1] != -1) {
      if (sb.length_0() != sl)
        sb.append_4(44);
      sb.append_5(data_0[i1]);
    }
  }
  sb.append_9(' (');
  sl = sb.length_0();
  for (i = 0; i < data_0.length; i++) {
    if (data_0[i] != -1) {
      if (sb.length_0() != sl)
        sb.append_4(44);
      sb.append_5(baseConformer.getTorsion(i, data_0[i]));
    }
  }
  sb.append_9(') ' + caru.toString_21(rule.getCollisionIntensity(), 3));
  return sb.toString_0();
}
;
_.decodeRule = function decodeRule(rule){
  var data_0, mask, rb;
  data_0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  for (rb = 0; rb < this.mRotatableBond.length; rb++) {
    mask = shl_0(ooccg.BITS_0[this.mEncodingBitCount[rb]], this.mEncodingBitShift[rb]);
    if (neq(and_0(rule.getMask()[this.mEncodingLongIndex[rb]], mask), 0))
      data_0[rb] = toInt_0(shr_0(and_0(rule.getData_1()[this.mEncodingLongIndex[rb]], mask), this.mEncodingBitShift[rb]));
    else 
      data_0[rb] = -1;
  }
  return data_0;
}
;
_.encode_0 = function encode_2(torsionIndex, conformerIndex){
  var i, index_0, index$array, index$array0, index$index, index$index0, index$max, index$max0, mEncodedBits;
  mEncodedBits = initUnidimensionalArray(cggl.J_classLit, {4:1, 1:1, 60:1}, 5, 1 + this.mEncodingLongIndex[this.mEncodingLongIndex.length - 1], 14, 1);
  i = 0;
  for (index$array0 = torsionIndex , index$index0 = 0 , index$max0 = index$array0.length; index$index0 < index$max0; ++index$index0) {
    index_0 = index$array0[index$index0];
    mEncodedBits[this.mEncodingLongIndex[i]] = add_22(mEncodedBits[this.mEncodingLongIndex[i]], fromInt_0(index_0 << this.mEncodingBitShift[i]));
    i++;
  }
  for (index$array = conformerIndex , index$index = 0 , index$max = index$array.length; index$index < index$max; ++index$index) {
    index_0 = index$array[index$index];
    mEncodedBits[this.mEncodingLongIndex[i]] = add_22(mEncodedBits[this.mEncodingLongIndex[i]], fromInt_0(index_0 << this.mEncodingBitShift[i]));
    i++;
  }
  return mEncodedBits;
}
;
_.encodeRule = function encodeRule(torsionIndex, rotatableBondIndex, mask, data_0){
  var rb, rb$array, rb$index, rb$max;
  for (rb$array = rotatableBondIndex , rb$index = 0 , rb$max = rb$array.length; rb$index < rb$max; ++rb$index) {
    rb = rb$array[rb$index];
    data_0[this.mEncodingLongIndex[rb]] = add_22(data_0[this.mEncodingLongIndex[rb]], fromInt_0(torsionIndex[rb] << this.mEncodingBitShift[rb]));
    mask[this.mEncodingLongIndex[rb]] = add_22(mask[this.mEncodingLongIndex[rb]], shl_0(ooccg.BITS_0[this.mEncodingBitCount[rb]], this.mEncodingBitShift[rb]));
  }
}
;
_.getEncodingLongCount = function getEncodingLongCount(){
  return this.mEncodingLongCount;
}
;
_.isMaskSet = function isMaskSet(rule, torsionAndConformerIndex){
  return neq(and_0(rule.getMask()[this.mEncodingLongIndex[torsionAndConformerIndex]], shl_0(1, this.mEncodingBitShift[torsionAndConformerIndex])), 0);
}
;
_.neededBits = function neededBits(count){
  var bits, maxIndex;
  bits = 0;
  maxIndex = count - 1;
  while (maxIndex > 0) {
    maxIndex >>= 1;
    bits++;
  }
  return bits;
}
;
_.mEncodingLongCount = 0;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetEncoder_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetEncoder', 690, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetStrategy = function $clinit_TorsionSetStrategy(){
  ooccg.$clinit_TorsionSetStrategy = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.TorsionSetStrategy = function TorsionSetStrategy(conformerGenerator){
  ooccg.$clinit_TorsionSetStrategy();
  var count, f1, f10, f2, i, i0, rb, rb$array, rb$array0, rb$array1, rb$index, rb$index0, rb$index1, rb$max, rb$max0, rb$max1, rf, rf$array, rf$index, rf$max;
  Object_0.call(this);
  this.$init_733();
  this.mConformerGenerator = conformerGenerator;
  this.mRotatableBond = conformerGenerator.getRotatableBonds();
  this.mRigidFragment = conformerGenerator.getRigidFragments();
  this.mTorsionSetEncoder = new ooccg.TorsionSetEncoder(this.mRigidFragment, this.mRotatableBond);
  this.mFragmentCount = 0;
  for (rb$array0 = this.mRotatableBond , rb$index0 = 0 , rb$max0 = rb$array0.length; rb$index0 < rb$max0; ++rb$index0) {
    rb = rb$array0[rb$index0];
    this.mFragmentCount = $wnd.Math.max(this.mFragmentCount, $wnd.Math.max(1 + rb.getFragmentNo(0), 1 + rb.getFragmentNo(1)));
  }
  count = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragmentCount, 15, 1);
  for (rb$array1 = this.mRotatableBond , rb$index1 = 0 , rb$max1 = rb$array1.length; rb$index1 < rb$max1; ++rb$index1) {
    rb = rb$array1[rb$index1];
    count[rb.getFragmentNo(0)]++;
    count[rb.getFragmentNo(1)]++;
  }
  this.mConnFragmentNo = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, count.length, 0, 2);
  this.mConnRotatableBondNo = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, count.length, 0, 2);
  for (i0 = 0; i0 < count.length; i0++) {
    this.mConnFragmentNo[i0] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count[i0], 15, 1);
    this.mConnRotatableBondNo[i0] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count[i0], 15, 1);
  }
  ju.fill_0(count, 0);
  for (i = 0; i < this.mRotatableBond.length; i++) {
    f10 = this.mRotatableBond[i].getFragmentNo(0);
    f2 = this.mRotatableBond[i].getFragmentNo(1);
    this.mConnFragmentNo[f10][count[f10]] = f2;
    this.mConnFragmentNo[f2][count[f2]] = f10;
    this.mConnRotatableBondNo[f10][count[f10]] = i;
    this.mConnRotatableBondNo[f2][count[f2]] = i;
    count[f10]++;
    count[f2]++;
  }
  this.mGraphFragment = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragmentCount, 15, 1);
  this.mGraphBond = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragmentCount, 15, 1);
  this.mGraphParent = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mFragmentCount, 15, 1);
  this.mGraphFragmentHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, this.mFragmentCount, 16, 1);
  this.mBondsBetweenFragments = initUnidimensionalArray(cggl.I_classLit, {4:1, 1:1, 7:1}, 35, this.mFragmentCount, 0, 3);
  for (f1 = 1; f1 < this.mFragmentCount; f1++) {
    this.mBondsBetweenFragments[f1] = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, f1, 0, 2);
    for (f2 = 0; f2 < f1; f2++)
      this.mBondsBetweenFragments[f1][f2] = this.getRotatableBondsBetween(f1, f2);
  }
  this.mPermutationCount = 1;
  for (rb$array = this.mRotatableBond , rb$index = 0 , rb$max = rb$array.length; rb$index < rb$max; ++rb$index) {
    rb = rb$array[rb$index];
    this.mPermutationCount *= rb.getTorsionCount();
  }
  for (rf$array = this.mRigidFragment , rf$index = 0 , rf$max = rf$array.length; rf$index < rf$max; ++rf$index) {
    rf = rf$array[rf$index];
    this.mPermutationCount *= rf.getConformerCount_0();
  }
  if (this.mPermutationCount <= 0)
    this.mPermutationCount = 2147483647;
  this.mTorsionSetList = new caru.UniqueList;
  this.mSecondChoiceList = new caru.SortedList_0(ju.comparingDouble(new ooccg.TorsionSetStrategy$lambda$0$Type));
  this.mStrainedTorsionSetCache = new caru.SortedList;
  this.mCollisionCount = 0;
  this.mSuccessCount = 0;
  this.mLowestCollisionStrain = 3;
  this.mUsingSecondChoices = false;
  this.mMaxTotalCount = $wnd.Math.min(10000, this.mPermutationCount);
}
;
ooccg.lambda$0_6 = function lambda$0_6(ts_0){
  ooccg.$clinit_TorsionSetStrategy();
  return castTo(ts_0, 82).getCollisionStrainSum();
}
;
defineClass(336, 1, {1:1});
_.$init_733 = function $init_733(){
}
;
_.calculateCollisionTolerance = function calculateCollisionTolerance(){
  return this.mLowestCollisionStrain + 3;
}
;
_.calculateKnownCollisionStrainSum = function calculateKnownCollisionStrainSum(ts, elimRules){
  var er, er$iterator, sum;
  sum = 0;
  for (er$iterator = elimRules.iterator(); er$iterator.hasNext_0();) {
    er = castTo(er$iterator.next_3(), 181);
    sum += ts.getCollisionStrainIfMatches(er);
  }
  return sum;
}
;
_.createTorsionSet_0 = function createTorsionSet(torsionIndex, conformerIndex){
  var ts;
  ts = new ooccg.TorsionSet_0(torsionIndex, conformerIndex, this.mTorsionSetEncoder);
  ts.setContribution(this.getContribution_0(ts));
  return ts;
}
;
_.getBestCollidingTorsionIndexes = function getBestCollidingTorsionIndexes(){
  return this.mBestUnacceptableTorsionSet;
}
;
_.getBestSecondChoice = function getBestSecondChoice(){
  var index_0, ts;
  if (this.mSecondChoiceList.size_1() == 0)
    return null;
  index_0 = instanceOf(this, 89)?castTo(this, 89).getRandom().nextInt_0(this.mSecondChoiceList.size_1()):0;
  ts = castTo(this.mSecondChoiceList.get_3(index_0), 82);
  this.mSecondChoiceList.remove_2(index_0);
  return ts;
}
;
_.getBondAndFragmentCollisionIntensities = function getBondAndFragmentCollisionIntensities(collidingTorsionSet){
  var collisionIntensity, elimRules, er, er$iterator, i;
  collisionIntensity = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mRotatableBond.length + this.mRigidFragment.length, 15, 1);
  elimRules = this.mConformerGenerator.getBaseConformer(collidingTorsionSet.getConformerIndexes()).getEliminationRules();
  for (er$iterator = elimRules.iterator(); er$iterator.hasNext_0();) {
    er = castTo(er$iterator.next_3(), 181);
    if (collidingTorsionSet.getCollisionStrainIfMatches(er) != 0)
      for (i = 0; i < collisionIntensity.length; i++)
        if (this.mTorsionSetEncoder.isMaskSet(er, i))
          collisionIntensity[i] += er.getCollisionIntensity();
  }
  return collisionIntensity;
}
;
_.getBondsBetweenFragments = function getBondsBetweenFragments(f1, f2){
  return this.mBondsBetweenFragments[f1][f2];
}
;
_.getContribution_0 = function getContribution_0(torsionSet){
  var baseConformer, likelyhood, rb, rf;
  likelyhood = 1;
  for (rf = 0; rf < this.mRigidFragment.length; rf++)
    likelyhood *= this.mRigidFragment[rf].getConformerLikelihood(torsionSet.getConformerIndexes()[rf]);
  baseConformer = this.mConformerGenerator.getBaseConformer(torsionSet.getConformerIndexes());
  for (rb = 0; rb < this.mRotatableBond.length; rb++)
    likelyhood *= baseConformer.getTorsionLikelyhood(rb, torsionSet.getTorsionIndexes()[rb]);
  return likelyhood;
}
;
_.getNextTorsionSet = function getNextTorsionSet(previousTorsionSet, diagnostics){
  var baseConformer, collisionStrain, elimRuleCount, eliminationRules, i, tolerance, ts;
  if (isNotNull(previousTorsionSet) && previousTorsionSet.isUsed())
    this.mSuccessCount++;
  if (isNotNull(previousTorsionSet) && this.mLowestCollisionStrain > previousTorsionSet.getCollisionStrainSum())
    this.mLowestCollisionStrain = previousTorsionSet.getCollisionStrainSum();
  if (this.mUsingSecondChoices)
    return this.getBestSecondChoice();
  if (this.mTorsionSetList.size_1() == this.mMaxTotalCount) {
    if (isNotNull(diagnostics))
      diagnostics.setExitReason('maxTotal(' + this.mMaxTotalCount + ') reached A; collisions:' + this.mCollisionCount);
    return null;
  }
  if (isNotNull(previousTorsionSet) && previousTorsionSet.getCollisionStrainSum() > 3) {
    baseConformer = isNotNull(diagnostics)?this.mConformerGenerator.getBaseConformer(previousTorsionSet.getConformerIndexes()):null;
    eliminationRules = isNotNull(diagnostics)?baseConformer.getEliminationRules():null;
    elimRuleCount = isNull(diagnostics)?0:eliminationRules.size();
    this.processCollisions(previousTorsionSet);
    if (isNotNull(diagnostics))
      for (i = elimRuleCount; i < eliminationRules.size(); i++)
        diagnostics.get_7(previousTorsionSet).addEliminationRule(this.mTorsionSetEncoder.createRuleString(castTo(eliminationRules.getAtIndex(i), 181), baseConformer));
    if (!previousTorsionSet.isUsed()) {
      if (previousTorsionSet.getCollisionStrainSum() < 6)
        this.mSecondChoiceList.add_10(previousTorsionSet);
      else if (isNull(this.mBestUnacceptableTorsionSet) || this.mBestUnacceptableTorsionSet.getCollisionStrainSum() > previousTorsionSet.getCollisionStrainSum())
        this.mBestUnacceptableTorsionSet = previousTorsionSet;
    }
    this.mCollisionCount++;
  }
  tolerance = this.calculateCollisionTolerance();
  ts = this.getTorsionSet(tolerance, previousTorsionSet);
  while (isNotNull(ts)) {
    collisionStrain = this.calculateKnownCollisionStrainSum(ts, this.mConformerGenerator.getBaseConformer(ts.getConformerIndexes()).getEliminationRules());
    if (collisionStrain < tolerance)
      break;
    if (collisionStrain < 6)
      this.mStrainedTorsionSetCache.add_10(new ooccg.TorsionSetWithEliminationRuleStrain(ts, collisionStrain));
    this.mCollisionCount++;
    this.mTorsionSetList.add_10(ts);
    if (this.mTorsionSetList.size_1() == this.mMaxTotalCount) {
      if (isNotNull(diagnostics))
        diagnostics.setExitReason('maxTotal("+mMaxTotalCount+") reached B; collisions:' + this.mCollisionCount);
      return null;
    }
    tolerance = this.calculateCollisionTolerance();
    ts = this.getTorsionSet(tolerance, ts);
  }
  if (isNull(ts)) {
    if (this.mSecondChoiceList.size_1() != 0) {
      this.mUsingSecondChoices = true;
      while (this.mSecondChoiceList.size_1() != 0 && castTo(this.mSecondChoiceList.get_3(this.mSecondChoiceList.size_1() - 1), 82).getCollisionStrainSum() > this.mLowestCollisionStrain + 3)
        this.mSecondChoiceList.remove_2(this.mSecondChoiceList.size_1() - 1);
      ts = this.getBestSecondChoice();
    }
    if (isNull(ts) && isNotNull(diagnostics))
      diagnostics.setExitReason('Inner strategy stop criterion hit');
    return ts;
  }
  this.mTorsionSetList.add_10(ts);
  return ts;
}
;
_.getPermutationCount = function getPermutationCount(){
  return this.mPermutationCount;
}
;
_.getRotatableBondsBetween = function getRotatableBondsBetween(f1, f2){
  var bondCount, candidate, current, highest, i, index_0, rotatableBondIndex;
  ju.fill_3(this.mGraphFragmentHandled, false);
  this.mGraphFragment[0] = f1;
  this.mGraphFragmentHandled[f1] = true;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < this.mConnFragmentNo[this.mGraphFragment[current]].length; i++) {
      candidate = this.mConnFragmentNo[this.mGraphFragment[current]][i];
      if (candidate == f2) {
        bondCount = 1;
        index_0 = current;
        while (index_0 != 0) {
          bondCount++;
          index_0 = this.mGraphParent[index_0];
        }
        rotatableBondIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, bondCount, 15, 1);
        rotatableBondIndex[0] = this.mConnRotatableBondNo[this.mGraphFragment[current]][i];
        bondCount = 1;
        while (current != 0) {
          rotatableBondIndex[bondCount++] = this.mGraphBond[current];
          current = this.mGraphParent[current];
        }
        return rotatableBondIndex;
      }
      if (!this.mGraphFragmentHandled[candidate]) {
        this.mGraphFragmentHandled[candidate] = true;
        highest++;
        this.mGraphFragment[highest] = candidate;
        this.mGraphBond[highest] = this.mConnRotatableBondNo[this.mGraphFragment[current]][i];
        this.mGraphParent[highest] = current;
      }
    }
    current++;
  }
  return null;
}
;
_.getTorsionSet = function getTorsionSet(tolerance, previousTorsionSet){
  var tswers;
  if (this.mStrainedTorsionSetCache.size_1() != 0) {
    tswers = castTo(this.mStrainedTorsionSetCache.get_3(0), 240);
    if (tswers.getRuleStrain() < tolerance) {
      this.mStrainedTorsionSetCache.remove_2(0);
      return tswers.getTorsionSet_0();
    }
  }
  return this.createTorsionSet(previousTorsionSet);
}
;
_.getTorsionSetCount = function getTorsionSetCount(){
  return this.mTorsionSetList.size_1();
}
;
_.isNewTorsionSet = function isNewTorsionSet(ts){
  return !this.mTorsionSetList.contains_3(ts);
}
;
_.processCollisions = function processCollisions(torsionSet){
  var collisionIntensityMatrix, currentList, er, er$iterator, f1, f2, isCovered, obsoleteList, rotatableBondIndex, rule, torsionIndex;
  collisionIntensityMatrix = torsionSet.getCollisionStrainMatrix();
  torsionIndex = torsionSet.getTorsionIndexes();
  for (f1 = 1; f1 < collisionIntensityMatrix.length; f1++) {
    if (jsNotEquals(collisionIntensityMatrix[f1], null)) {
      for (f2 = 0; f2 < f1; f2++) {
        if (collisionIntensityMatrix[f1][f2] != 0) {
          rotatableBondIndex = this.mBondsBetweenFragments[f1][f2];
          rule = new ooccg.TorsionSetEliminationRule(torsionIndex, rotatableBondIndex, collisionIntensityMatrix[f1][f2], this.mTorsionSetEncoder);
          isCovered = false;
          obsoleteList = null;
          currentList = this.mConformerGenerator.getBaseConformer(torsionSet.getConformerIndexes()).getEliminationRules();
          for (er$iterator = currentList.iterator(); er$iterator.hasNext_0();) {
            er = castTo(er$iterator.next_3(), 181);
            if (er.isCovered(rule)) {
              isCovered = true;
              break;
            }
            if (er.isMoreGeneral(rule)) {
              if (isNull(obsoleteList))
                obsoleteList = new ju.ArrayList;
              obsoleteList.add(er);
            }
          }
          if (!isCovered) {
            if (isNotNull(obsoleteList))
              currentList.removeAll(obsoleteList);
            currentList.add(rule);
          }
        }
      }
    }
  }
}
;
_.setMaxTotalCount = function setMaxTotalCount(maxTotalCount){
  this.mMaxTotalCount = $wnd.Math.min(maxTotalCount, this.mPermutationCount);
}
;
_.mCollisionCount = 0;
_.mFragmentCount = 0;
_.mLowestCollisionStrain = 0;
_.mMaxTotalCount = 0;
_.mPermutationCount = 0;
_.mSuccessCount = 0;
_.mUsingSecondChoices = false;
ooccg.COLLISION_STRAIN_FOR_FACTOR_10 = 1.36;
ooccg.MAX_COLLISION_STRAIN = 6;
ooccg.MAX_LOWEST_COLLISION_STRAIN = 3;
ooccg.MAX_TOTAL_COUNT = 10000;
ooccg.SECOND_CHOICE_TOLERANCE = 3;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategy_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategy', 336, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetStrategy$lambda$0$Type = function $clinit_TorsionSetStrategy$lambda$0$Type(){
  ooccg.$clinit_TorsionSetStrategy$lambda$0$Type = emptyMethod;
}
;
ooccg.TorsionSetStrategy$lambda$0$Type = function TorsionSetStrategy$lambda$0$Type(){
  ooccg.$clinit_TorsionSetStrategy$lambda$0$Type();
}
;
defineClass(603, 1, {1:1}, ooccg.TorsionSetStrategy$lambda$0$Type);
_.applyAsDouble = function applyAsDouble(arg0){
  return ooccg.lambda$0_6(arg0);
}
;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategy$lambda$0$Type_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategy/lambda$0$Type', 603, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetStrategyRandom = function $clinit_TorsionSetStrategyRandom(){
  ooccg.$clinit_TorsionSetStrategyRandom = emptyMethod;
  ooccg.$clinit_TorsionSetStrategy();
}
;
ooccg.TorsionSetStrategyRandom = function TorsionSetStrategyRandom(conformerGenerator, preferLikelyTorsions, seed){
  ooccg.$clinit_TorsionSetStrategyRandom();
  ooccg.TorsionSetStrategy.call(this, conformerGenerator);
  this.$init_734();
  this.mPreferLikelyTorsions = preferLikelyTorsions;
  this.mRandom = eq(seed, 0)?new ju.Random:new ju.Random_0(seed);
}
;
defineClass(89, 336, {1:1, 89:1}, ooccg.TorsionSetStrategyRandom);
_.$init_734 = function $init_734(){
}
;
_.createTorsionSet = function createTorsionSet_0(previousTorsionSet){
  var baseConformer, conformerIndex, count, j, j0, progress, rb, rf, torsionIndex, ts;
  if (this.getTorsionSetCount() == this.getPermutationCount())
    return null;
  torsionIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  conformerIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 15, 1);
  count = 0;
  do {
    if (count++ == 64)
      return null;
    if (this.mPreferLikelyTorsions) {
      progress = count / 64;
      for (rf = 0; rf < this.mRigidFragment.length; rf++)
        conformerIndex[rf] = this.mRigidFragment[rf].getLikelyRandomConformerIndex(this.mRandom.nextDouble(), progress);
      baseConformer = this.mConformerGenerator.getBaseConformer(conformerIndex);
      for (rb = 0; rb < this.mRotatableBond.length; rb++)
        torsionIndex[rb] = baseConformer.getLikelyRandomTorsionIndex(rb, this.mRandom.nextDouble(), progress);
    }
     else {
      for (j0 = 0; j0 < this.mRigidFragment.length; j0++)
        conformerIndex[j0] = this.mRandom.nextInt_0(this.mRigidFragment[j0].getConformerCount_0());
      for (j = 0; j < this.mRotatableBond.length; j++)
        torsionIndex[j] = this.mRandom.nextInt_0(this.mRotatableBond[j].getTorsionCount());
    }
    ts = this.createTorsionSet_0(torsionIndex, conformerIndex);
  }
   while (!this.isNewTorsionSet(ts));
  return ts;
}
;
_.getRandom = function getRandom(){
  return this.mRandom;
}
;
_.mPreferLikelyTorsions = false;
ooccg.MAX_TRIES_FOR_NEW = 64;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyRandom_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategyRandom', 89, cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategy_2_classLit);
ooccg.$clinit_TorsionSetStrategyAdaptiveRandom = function $clinit_TorsionSetStrategyAdaptiveRandom(){
  ooccg.$clinit_TorsionSetStrategyAdaptiveRandom = emptyMethod;
  ooccg.$clinit_TorsionSetStrategyRandom();
}
;
ooccg.TorsionSetStrategyAdaptiveRandom = function TorsionSetStrategyAdaptiveRandom(conformerGenerator, preferLikelyTorsions, startWithMostProbable, seed){
  ooccg.$clinit_TorsionSetStrategyAdaptiveRandom();
  ooccg.TorsionSetStrategyRandom.call(this, conformerGenerator, preferLikelyTorsions, seed);
  this.$init_735();
  this.mStartWithMostProbable = startWithMostProbable;
}
;
defineClass(311, 89, {1:1, 89:1}, ooccg.TorsionSetStrategyAdaptiveRandom);
_.$init_735 = function $init_735(){
}
;
_.createTorsionSet = function createTorsionSet_1(previousTorsionSet){
  var collidingConformerIndex, collidingTorsionIndex, collisionIntensitySum, conformerIndex, count, i, i0, index_0, indexTried, j, random, rigidFragment, rigidFragment$array, rigidFragment$index, rigidFragment$max, torsionIndex, ts;
  if (isNull(previousTorsionSet)) {
    if (this.mStartWithMostProbable)
      return this.createTorsionSet_0(initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1), initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 15, 1));
    else 
      return getClassPrototype(89).createTorsionSet.call(this, null);
  }
  if (previousTorsionSet.getCollisionStrainSum() == 0)
    return getClassPrototype(89).createTorsionSet.call(this, previousTorsionSet);
  collisionIntensitySum = this.getBondAndFragmentCollisionIntensities(previousTorsionSet);
  collidingTorsionIndex = previousTorsionSet.getTorsionIndexes();
  collidingConformerIndex = previousTorsionSet.getConformerIndexes();
  indexTried = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, collisionIntensitySum.length, 16, 1);
  for (count = 0; count < 64; count++) {
    if (indexTried[0] || this.mRotatableBond[0].getTorsionCount() == 1)
      collisionIntensitySum[0] = 0;
    index_0 = 1;
    for (i0 = 1; i0 < this.mRotatableBond.length; i0++) {
      if (indexTried[index_0] || this.mRotatableBond[i0].getTorsionCount() == 1)
        collisionIntensitySum[index_0] = collisionIntensitySum[index_0 - 1];
      else 
        collisionIntensitySum[index_0] += collisionIntensitySum[index_0 - 1];
      index_0++;
    }
    for (rigidFragment$array = this.mRigidFragment , rigidFragment$index = 0 , rigidFragment$max = rigidFragment$array.length; rigidFragment$index < rigidFragment$max; ++rigidFragment$index) {
      rigidFragment = rigidFragment$array[rigidFragment$index];
      if (indexTried[index_0] || rigidFragment.getConformerCount_0() == 1)
        collisionIntensitySum[index_0] = collisionIntensitySum[index_0 - 1];
      else 
        collisionIntensitySum[index_0] += collisionIntensitySum[index_0 - 1];
      index_0++;
    }
    if (collisionIntensitySum[collisionIntensitySum.length - 1] == 0)
      return getClassPrototype(89).createTorsionSet.call(this, previousTorsionSet);
    random = this.getRandom().nextDouble() * collisionIntensitySum[collisionIntensitySum.length - 1];
    for (i = 0; i < collisionIntensitySum.length; i++) {
      if (random < collisionIntensitySum[i]) {
        torsionIndex = ju.copyOf_9(collidingTorsionIndex, collidingTorsionIndex.length);
        conformerIndex = ju.copyOf_9(collidingConformerIndex, collidingConformerIndex.length);
        if (i < this.mRotatableBond.length) {
          for (j = 1; j < this.mRotatableBond[i].getTorsionCount(); j++) {
            torsionIndex[i]++;
            if (torsionIndex[i] == this.mRotatableBond[i].getTorsionCount())
              torsionIndex[i] = 0;
            ts = this.createTorsionSet_0(torsionIndex, conformerIndex);
            if (this.isNewTorsionSet(ts))
              return ts;
          }
        }
         else {
          i -= this.mRotatableBond.length;
          for (j = 1; j < this.mRigidFragment[i].getConformerCount_0(); j++) {
            conformerIndex[i]++;
            if (conformerIndex[i] == this.mRigidFragment[i].getConformerCount_0())
              conformerIndex[i] = 0;
            ts = this.createTorsionSet_0(torsionIndex, conformerIndex);
            if (this.isNewTorsionSet(ts))
              return ts;
          }
        }
        indexTried[i] = true;
        break;
      }
    }
  }
  return getClassPrototype(89).createTorsionSet.call(this, previousTorsionSet);
}
;
_.mStartWithMostProbable = false;
ooccg.MAX_TRIES_FOR_NEW_0 = 64;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyAdaptiveRandom_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategyAdaptiveRandom', 311, cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyRandom_2_classLit);
ooccg.$clinit_TorsionSetStrategyLikelySystematic = function $clinit_TorsionSetStrategyLikelySystematic(){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic = emptyMethod;
  ooccg.$clinit_TorsionSetStrategy();
}
;
ooccg.TorsionSetStrategyLikelySystematic = function TorsionSetStrategyLikelySystematic(conformerGenerator){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic();
  ooccg.TorsionSetStrategy.call(this, conformerGenerator);
  this.$init_736();
  this.mCurrentMaxTorsionIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1);
  this.mCurrentMaxConformerIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 15, 1);
  this.mAvailableTorsionSet = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_gen_TorsionSet_2_classLit, {4:1, 1:1, 7:1}, 82, 1, 0, 1);
  setCheck(this.mAvailableTorsionSet, 0, this.createTorsionSet_0(initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRotatableBond.length, 15, 1), initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mRigidFragment.length, 15, 1)));
  this.mAvailableTorsionSetIndex = -1;
}
;
ooccg.lambda$0_7 = function lambda$0_7(ts1_0, ts2_1){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic();
  {
    return compare_22(ts2_1.getContribution(), ts1_0.getContribution());
  }
}
;
defineClass(430, 336, {1:1}, ooccg.TorsionSetStrategyLikelySystematic);
_.$init_736 = function $init_736(){
}
;
_.createNextAvailableSet = function createNextAvailableSet(){
  var baseConformer, bestIndex, conformerCount, conformerIndex, count, i, i0, i1, isConformerIndex, j, j0, loss, minLoss, n, rb, rf, torsionCount, torsionIndex;
  bestIndex = -1;
  isConformerIndex = false;
  minLoss = 1.7976931348623157E308;
  baseConformer = this.mConformerGenerator.getBaseConformer(this.mCurrentMaxConformerIndex);
  for (rb = 0; rb < this.mCurrentMaxTorsionIndex.length; rb++) {
    if (this.mCurrentMaxTorsionIndex[rb] < this.mRotatableBond[rb].getTorsionCount() - 1) {
      loss = baseConformer.getTorsionLikelyhood(rb, this.mCurrentMaxTorsionIndex[rb]) / baseConformer.getTorsionLikelyhood(rb, this.mCurrentMaxTorsionIndex[rb] + 1);
      if (minLoss > loss) {
        minLoss = loss;
        bestIndex = rb;
      }
    }
  }
  for (rf = 0; rf < this.mCurrentMaxConformerIndex.length; rf++) {
    if (this.mCurrentMaxConformerIndex[rf] < this.mRigidFragment[rf].getConformerCount_0() - 1) {
      loss = this.mRigidFragment[rf].getConformerLikelihood(this.mCurrentMaxConformerIndex[rf]) / this.mRigidFragment[rf].getConformerLikelihood(this.mCurrentMaxConformerIndex[rf] + 1);
      if (minLoss > loss) {
        minLoss = loss;
        bestIndex = rf;
        isConformerIndex = true;
      }
    }
  }
  if (bestIndex == -1) {
    this.mAvailableTorsionSet = null;
    return;
  }
  count = 1;
  for (i0 = 0; i0 < this.mCurrentMaxTorsionIndex.length; i0++)
    if (isConformerIndex || i0 != bestIndex)
      count *= this.mCurrentMaxTorsionIndex[i0] + 1;
  for (i1 = 0; i1 < this.mCurrentMaxConformerIndex.length; i1++)
    if (!isConformerIndex || i1 != bestIndex)
      count *= this.mCurrentMaxConformerIndex[i1] + 1;
  this.mAvailableTorsionSet = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_gen_TorsionSet_2_classLit, {4:1, 1:1, 7:1}, 82, count, 0, 1);
  if (isConformerIndex)
    this.mCurrentMaxConformerIndex[bestIndex]++;
  else 
    this.mCurrentMaxTorsionIndex[bestIndex]++;
  for (i = 0; i < count; i++) {
    n = i;
    torsionIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mCurrentMaxTorsionIndex.length, 15, 1);
    for (j0 = 0; j0 < this.mCurrentMaxTorsionIndex.length; j0++) {
      if (isConformerIndex || j0 != bestIndex) {
        torsionCount = this.mCurrentMaxTorsionIndex[j0] + 1;
        if (torsionCount != 1) {
          torsionIndex[j0] = n % torsionCount;
          n = narrow_int(n / torsionCount);
        }
      }
    }
    conformerIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, this.mCurrentMaxConformerIndex.length, 15, 1);
    for (j = 0; j < this.mCurrentMaxConformerIndex.length; j++) {
      if (!isConformerIndex || j != bestIndex) {
        conformerCount = this.mCurrentMaxConformerIndex[j] + 1;
        if (conformerCount != 1) {
          conformerIndex[j] = n % conformerCount;
          n = narrow_int(n / conformerCount);
        }
      }
    }
    if (isConformerIndex)
      conformerIndex[bestIndex] = this.mCurrentMaxConformerIndex[bestIndex];
    else 
      torsionIndex[bestIndex] = this.mCurrentMaxTorsionIndex[bestIndex];
    setCheck(this.mAvailableTorsionSet, i, this.createTorsionSet_0(torsionIndex, conformerIndex));
  }
  ju.sort_7(this.mAvailableTorsionSet, new ooccg.TorsionSetStrategyLikelySystematic$lambda$0$Type);
  this.mAvailableTorsionSetIndex = -1;
}
;
_.createTorsionSet = function createTorsionSet_2(previousTorsionSet){
  if (jsEquals(this.mAvailableTorsionSet, null))
    return null;
  if (this.mAvailableTorsionSetIndex + 1 == this.mAvailableTorsionSet.length)
    this.createNextAvailableSet();
  if (jsEquals(this.mAvailableTorsionSet, null))
    return null;
  this.mAvailableTorsionSetIndex++;
  return this.mAvailableTorsionSet[this.mAvailableTorsionSetIndex];
}
;
_.mAvailableTorsionSetIndex = 0;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyLikelySystematic_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategyLikelySystematic', 430, cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategy_2_classLit);
ooccg.$clinit_TorsionSetStrategyLikelySystematic$lambda$0$Type = function $clinit_TorsionSetStrategyLikelySystematic$lambda$0$Type(){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic$lambda$0$Type = emptyMethod;
}
;
ooccg.TorsionSetStrategyLikelySystematic$lambda$0$Type = function TorsionSetStrategyLikelySystematic$lambda$0$Type(){
  ooccg.$clinit_TorsionSetStrategyLikelySystematic$lambda$0$Type();
}
;
defineClass(612, 1, {1:1, 50:1}, ooccg.TorsionSetStrategyLikelySystematic$lambda$0$Type);
_.compare_0 = function compare_38(arg0, arg1){
  return ooccg.lambda$0_7(castTo(arg0, 82), castTo(arg1, 82));
}
;
_.equals_0 = function equals_50(other){
  return getClassPrototype(1).equals_0.call(this, other);
}
;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetStrategyLikelySystematic$lambda$0$Type_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetStrategyLikelySystematic/lambda$0$Type', 612, cggl.Ljava_lang_Object_2_classLit);
ooccg.$clinit_TorsionSetWithEliminationRuleStrain = function $clinit_TorsionSetWithEliminationRuleStrain(){
  ooccg.$clinit_TorsionSetWithEliminationRuleStrain = emptyMethod;
  jl.$clinit_Object();
}
;
ooccg.TorsionSetWithEliminationRuleStrain = function TorsionSetWithEliminationRuleStrain(torsionSet, ruleStrain){
  ooccg.$clinit_TorsionSetWithEliminationRuleStrain();
  Object_0.call(this);
  this.$init_737();
  this.mTorsionSet = torsionSet;
  this.mRuleStrain = ruleStrain;
}
;
defineClass(240, 1, {10:1, 1:1, 240:1}, ooccg.TorsionSetWithEliminationRuleStrain);
_.$init_737 = function $init_737(){
}
;
_.compareTo_1 = function compareTo_41(ts){
  return this.compareTo_21(castTo(ts, 240));
}
;
_.compareTo_21 = function compareTo_42(ts){
  return this.mRuleStrain < ts.mRuleStrain?-1:this.mRuleStrain > ts.mRuleStrain?1:0;
}
;
_.getRuleStrain = function getRuleStrain(){
  return this.mRuleStrain;
}
;
_.getTorsionSet_0 = function getTorsionSet_0(){
  return this.mTorsionSet;
}
;
_.mRuleStrain = 0;
cggl.Lorg_openmolecules_chem_conf_gen_TorsionSetWithEliminationRuleStrain_2_classLit = createForClass('org.openmolecules.chem.conf.gen', 'TorsionSetWithEliminationRuleStrain', 240, cggl.Ljava_lang_Object_2_classLit);
ooccs.$clinit_ConformationRule = function $clinit_ConformationRule(){
  ooccs.$clinit_ConformationRule = emptyMethod;
  jl.$clinit_Object();
  ooccs.RULE_NAME = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['distance', 'plane', 'line', 'torsion', 'stereo', 'binap']);
}
;
ooccs.ConformationRule = function ConformationRule(atom){
  ooccs.$clinit_ConformationRule();
  Object_0.call(this);
  this.$init_738();
  this.mAtom = atom;
  this.mIsEnabled = true;
}
;
ooccs.calculateNearestPlane = function calculateNearestPlane(conformer, atom, cog, n, coords){
  ooccs.$clinit_ConformationRule();
  var S, U, i, i0, i1, i2, j, k, minIndex, squareMatrix, svd;
  for (i0 = 0; i0 < atom.length; i0++)
    cog.add_3(conformer.getCoordinates(atom[i0]));
  cog.scale_2(1 / atom.length);
  for (i1 = 0; i1 < atom.length; i1++) {
    coords[i1][0] = conformer.getX(atom[i1]) - cog.x_0;
    coords[i1][1] = conformer.getY(atom[i1]) - cog.y_0;
    coords[i1][2] = conformer.getZ(atom[i1]) - cog.z_0;
  }
  squareMatrix = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [3, 3], 2);
  for (i2 = 0; i2 < atom.length; i2++)
    for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
        squareMatrix[j][k] += coords[i2][j] * coords[i2][k];
  svd = new carc.SingularValueDecomposition(squareMatrix, null, null);
  S = svd.getSingularValues();
  minIndex = 0;
  for (i = 1; i < 3; i++)
    if (S[i] < S[minIndex])
      minIndex = i;
  U = svd.getU();
  n.x_0 = U[0][minIndex];
  n.y_0 = U[1][minIndex];
  n.z_0 = U[2][minIndex];
}
;
ooccs.rotateAtom = function rotateAtom(conformer, atom, p, unit, theta){
  ooccs.$clinit_ConformationRule();
  var c, mx, my, mz, s, t, x_0, y_0, z_0;
  x_0 = unit.x_0;
  y_0 = unit.y_0;
  z_0 = unit.z_0;
  c = $wnd.Math.cos(theta);
  s = $wnd.Math.sin(theta);
  t = 1 - c;
  mx = conformer.getX(atom) - p.x_0;
  my = conformer.getY(atom) - p.y_0;
  mz = conformer.getZ(atom) - p.z_0;
  conformer.setX_0(atom, p.x_0 + (t * x_0 * x_0 + c) * mx + (t * x_0 * y_0 + s * z_0) * my + (t * x_0 * z_0 - s * y_0) * mz);
  conformer.setY_0(atom, p.y_0 + (t * x_0 * y_0 - s * z_0) * mx + (t * y_0 * y_0 + c) * my + (t * y_0 * z_0 + s * x_0) * mz);
  conformer.setZ(atom, p.z_0 + (t * x_0 * z_0 + s * y_0) * mx + (t * z_0 * y_0 - s * x_0) * my + (t * z_0 * z_0 + c) * mz);
}
;
ooccs.rotateGroup = function rotateGroup(conformer, atom, notList, p, n, theta){
  ooccs.$clinit_ConformationRule();
  var avoidAtom, candidate, current, graphAtom, highest, i, mol, notAtom, notAtom$array, notAtom$index, notAtom$max;
  mol = conformer.getMolecule_0();
  avoidAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = atom;
  avoidAtom[atom] = true;
  for (notAtom$array = notList , notAtom$index = 0 , notAtom$max = notAtom$array.length; notAtom$index < notAtom$max; ++notAtom$index) {
    notAtom = notAtom$array[notAtom$index];
    avoidAtom[notAtom] = true;
  }
  ooccs.rotateAtom(conformer, atom, p, n, theta);
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < mol.getAllConnAtoms_0(graphAtom[current]); i++) {
      candidate = mol.getConnAtom_0(graphAtom[current], i);
      if (!avoidAtom[candidate]) {
        avoidAtom[candidate] = true;
        graphAtom[++highest] = candidate;
        ooccs.rotateAtom(conformer, candidate, p, n, theta);
      }
    }
    current++;
  }
}
;
defineClass(48, 1, {1:1, 48:1});
_.$init_738 = function $init_738(){
}
;
_.addAtomList = function addAtomList(sb){
  var i;
  if (jsEquals(this.mAtom, null)) {
    sb.append_9(' atoms:<null>');
  }
   else {
    sb.append_9(' atoms:' + this.mAtom[0]);
    for (i = 1; i < this.mAtom.length; i++)
      sb.append_9(',' + this.mAtom[i]);
  }
}
;
_.getAtomList_1 = function getAtomList_1(){
  return this.mAtom;
}
;
_.isEnabled = function isEnabled_1(){
  return this.mIsEnabled;
}
;
_.moveGroup = function moveGroup(conformer, atom, notList, dx, dy, dz){
  var connAtom, found, i, j, mol;
  conformer.getCoordinates(atom).add_2(dx, dy, dz);
  mol = conformer.getMolecule_0();
  for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    found = false;
    if (jsNotEquals(notList, null)) {
      for (j = 0; j < notList.length; j++) {
        if (connAtom == notList[j]) {
          found = true;
          break;
        }
      }
    }
    if (!found) {
      if (mol.getAllConnAtoms_0(connAtom) == 1) {
        conformer.getCoordinates(connAtom).add_2(dx, dy, dz);
      }
       else if (mol.isRingBond_0(mol.getConnBond_0(atom, i))) {
        conformer.getCoordinates(connAtom).add_2(dx / 3, dy / 3, dz / 3);
      }
       else {
        this.moveSubstituent(conformer, atom, connAtom, dx, dy, dz);
      }
    }
  }
}
;
_.moveSubstituent = function moveSubstituent(conformer, rootAtom, firstAtom, dx, dy, dz){
  var candidate, current, graphAtom, highest, i, isMemberAtom, mol;
  conformer.getCoordinates(firstAtom).add_2(dx, dy, dz);
  mol = conformer.getMolecule_0();
  isMemberAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = firstAtom;
  isMemberAtom[rootAtom] = true;
  isMemberAtom[firstAtom] = true;
  current = 0;
  highest = 0;
  while (current <= highest) {
    for (i = 0; i < mol.getAllConnAtoms_0(graphAtom[current]); i++) {
      candidate = mol.getConnAtom_0(graphAtom[current], i);
      if (!isMemberAtom[candidate]) {
        isMemberAtom[candidate] = true;
        graphAtom[++highest] = candidate;
        conformer.getCoordinates(candidate).add_2(dx, dy, dz);
      }
    }
    current++;
  }
}
;
_.setEnabled = function setEnabled_1(b){
  this.mIsEnabled = b;
}
;
_.mIsEnabled = false;
ooccs.RULE_TYPE_BINAP = 5;
ooccs.RULE_TYPE_DISTANCE = 0;
ooccs.RULE_TYPE_LINE = 2;
ooccs.RULE_TYPE_PLANE = 1;
ooccs.RULE_TYPE_STEREO = 4;
ooccs.RULE_TYPE_TORSION = 3;
cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'ConformationRule', 48, cggl.Ljava_lang_Object_2_classLit);
ooccs.$clinit_AxialStereoRule = function $clinit_AxialStereoRule(){
  ooccs.$clinit_AxialStereoRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.AxialStereoRule = function AxialStereoRule(mol, atom, rearArom, isInRing, positiveTorsionWanted){
  ooccs.ConformationRule.call(this, atom);
  this.$init_739();
  this.mRotatableAtom = this.getRotatableAtoms(mol, isInRing, atom, rearArom);
  this.mPositiveTorsionWanted = positiveTorsionWanted;
}
;
ooccs.calculateRules = function calculateRules(ruleList, mol){
  ooccs.$clinit_AxialStereoRule();
  var atom, atomList, bond, centralAtom, connAtom, i, j, lowConn, parity, rear, rearAtom;
  for (centralAtom = 0; centralAtom < mol.getAtoms_0(); centralAtom++) {
    if (mol.isCentralAlleneAtom(centralAtom)) {
      parity = mol.getAtomParity_0(centralAtom);
      if (parity == 1 || parity == 2) {
        atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
        rearAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
        for (i = 0; i < mol.getConnAtoms_0(centralAtom); i++) {
          atom = mol.getConnAtom_0(centralAtom, i);
          lowConn = 2147483647;
          for (j = 0; j < mol.getConnAtoms_0(atom); j++) {
            connAtom = mol.getConnAtom_0(atom, j);
            if (connAtom != centralAtom && lowConn > connAtom)
              lowConn = connAtom;
          }
          atomList[3 * i] = lowConn;
          atomList[1 + i] = atom;
          rearAtom[i] = centralAtom;
        }
        if (atomList[0] == 2147483647 || atomList[3] == 2147483647) {
          (jl.$clinit_System() , jl.out_0).println_0('Unexpected MAX_VALUE idcode:' + (new carc2.Canonizer(mol)).getIDCode_0());
          break;
        }
        ruleList.add(new ooccs.AxialStereoRule(mol, atomList, rearAtom, mol.isRingAtom_0(centralAtom), parity == 1));
      }
    }
  }
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    parity = mol.getBondParity_0(bond);
    if ((parity == 1 || parity == 2) && mol.getBondOrder_0(bond) != 2) {
      atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
      rearAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
      for (i = 0; i < 2; i++) {
        atom = mol.getBondAtom_0(i, bond);
        rear = mol.getBondAtom_0(1 - i, bond);
        lowConn = 2147483647;
        for (j = 0; j < mol.getConnAtoms_0(atom); j++) {
          connAtom = mol.getConnAtom_0(atom, j);
          if (connAtom != rear && lowConn > connAtom)
            lowConn = connAtom;
        }
        atomList[3 * i] = lowConn;
        atomList[1 + i] = atom;
        rearAtom[i] = mol.getBondAtom_0(1 - i, bond);
      }
      ruleList.add(new ooccs.AxialStereoRule(mol, atomList, rearAtom, mol.isRingBond_0(bond), parity == 2));
    }
  }
}
;
defineClass(347, 48, {1:1, 48:1}, ooccs.AxialStereoRule);
_.$init_739 = function $init_739(){
}
;
_.addStrain = function addStrain(conformer, atomStrain){
  var atom, atom$array, atom$index, atom$max, strain;
  strain = conformer.calculateTorsion_0(this.mAtom) < 0?1:0;
  if (jsNotEquals(atomStrain, null))
    for (atom$array = this.mAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
      atom = atom$array[atom$index];
      atomStrain[atom] += strain / 4;
    }
  return strain;
}
;
_.apply_3 = function apply_7(conformer, cycleFactor){
  var atom, atom$array, atom$index, atom$max, rotation, torsion, unit;
  torsion = conformer.calculateTorsion_0(this.mAtom);
  if (torsion == 0 || this.mPositiveTorsionWanted == torsion > 0)
    return false;
  unit = conformer.getCoordinates(this.mAtom[2]).subC(conformer.getCoordinates(this.mAtom[1]));
  unit.unit();
  rotation = $wnd.Math.abs(torsion) < 3.141592653589793 / 2?-2 * torsion:2 * (3.141592653589793 - torsion);
  if (this.mInverse)
    rotation = -rotation;
  for (atom$array = this.mRotatableAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    ooccs.rotateAtom(conformer, atom, conformer.getCoordinates(this.mAtom[1]), unit, rotation);
  }
  return true;
}
;
_.getAromaticFragmentAtoms = function getAromaticFragmentAtoms(mol, firstAtom, rearAtom){
  var aromAtom, atom, candidate, current, highest, i, i0, i1, isMember, j;
  aromAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 15, 1);
  isMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  isMember[rearAtom] = true;
  isMember[firstAtom] = true;
  aromAtom[0] = firstAtom;
  current = 0;
  highest = 1;
  while (current <= highest) {
    for (i0 = 0; i0 < mol.getConnAtoms_0(aromAtom[current]); i0++) {
      if (mol.isAromaticBond_0(mol.getConnBond_0(aromAtom[current], i0))) {
        candidate = mol.getConnAtom_0(aromAtom[current], i0);
        if (!isMember[candidate]) {
          aromAtom[++highest] = candidate;
          isMember[candidate] = true;
        }
      }
    }
    current++;
  }
  for (i1 = 0; i1 <= highest; i1++) {
    for (j = 0; j < mol.getConnAtoms_0(aromAtom[i1]); j++) {
      candidate = mol.getConnAtom_0(aromAtom[i1], j);
      if (!isMember[candidate] && !mol.isRingBond_0(mol.getConnBond_0(aromAtom[i1], j)))
        mol.getSubstituent_0(aromAtom[i1], candidate, isMember, null, null);
    }
  }
  isMember[rearAtom] = false;
  for (i = 0; i <= highest; i++)
    isMember[aromAtom[i]] = false;
  for (atom = 0; atom < isMember.length; atom++)
    if (isMember[atom])
      aromAtom[++highest] = atom;
  return ju.copyOf_9(aromAtom, highest + 1);
}
;
_.getRotatableAtoms = function getRotatableAtoms(mol, isInRing, atomList, rearAtom){
  var atom, count, i, index_0, isMemberAtom, rotatableAtom, smallerSubstituentIndex;
  if (isInRing)
    return this.getAromaticFragmentAtoms(mol, atomList[1], atomList[2]);
  isMemberAtom = initMultidimensionalArray(cggl.Z_classLit, [{4:1, 1:1, 7:1}, {12:1, 4:1, 1:1}], [12, 5], 16, [2, mol.getAllAtoms_0()], 2);
  count = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (i = 0; i < 2; i++)
    count[i] = mol.getSubstituent_0(atomList[1 + i], rearAtom[i], isMemberAtom[i], null, null);
  smallerSubstituentIndex = count[0] < count[1]?0:1;
  rotatableAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count[smallerSubstituentIndex], 15, 1);
  index_0 = 0;
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    if (isMemberAtom[smallerSubstituentIndex][atom])
      rotatableAtom[index_0++] = atom;
  this.mInverse = smallerSubstituentIndex == 1;
  return rotatableAtom;
}
;
_.getRuleType = function getRuleType(){
  return 5;
}
;
_.toString_0 = function toString_71(){
  var sb;
  sb = new jl.StringBuilder_1('binap rule (' + (this.mPositiveTorsionWanted?'positive':'negative') + ' torsion):');
  getClassPrototype(48).addAtomList.call(this, sb);
  return sb.toString_0();
}
;
_.mInverse = false;
_.mPositiveTorsionWanted = false;
cggl.Lorg_openmolecules_chem_conf_so_AxialStereoRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'AxialStereoRule', 347, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_ConformationSelfOrganizer = function $clinit_ConformationSelfOrganizer(){
  ooccs.$clinit_ConformationSelfOrganizer = emptyMethod;
  jl.$clinit_Object();
  ooccs.PHASE_CYCLES = stampJavaTypeInfo(getClassLiteralForArray(cggl.I_classLit, 1), {6:1, 4:1, 1:1}, 5, 15, [40, 20, 20, 100, 20]);
  ooccs.PHASE_FACTOR = stampJavaTypeInfo(getClassLiteralForArray(cggl.D_classLit, 1), {13:1, 4:1, 1:1}, 5, 15, [40, 20, 20, 100, 40]);
  ooccs.PHASE_NAME = stampJavaTypeInfo(getClassLiteralForArray(cggl.Ljava_lang_String_2_classLit, 1), {4:1, 1:1, 7:1, 15:1}, 2, 6, ['preparation', 'pre-optimization', 'breakout', 'optimization', 'minimization']);
}
;
ooccs.ConformationSelfOrganizer = function ConformationSelfOrganizer(mol, keepHydrogen){
  ooccs.$clinit_ConformationSelfOrganizer();
  Object_0.call(this);
  this.$init_740();
  this.mMol = mol;
  if (!keepHydrogen)
    this.mMol.removeExplicitHydrogens_0();
  this.mMol.ensureHelperArrays_0(15);
  this.mRuleList = new ju.ArrayList;
  this.mSkipRule = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length, 16, 1);
  this.mRuleCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length, 15, 1);
  ooccs.calculateRules_0(this.mRuleList, mol);
  this.mRuleCount[0] = this.mRuleList.size();
  this.mRuleCount[1] = -this.mRuleList.size();
  ooccs.calculateRules_1(this.mRuleList, mol);
  this.mRuleCount[1] += this.mRuleList.size();
  this.mRuleCount[2] = -this.mRuleList.size();
  ooccs.calculateRules_2(this.mRuleList, mol);
  this.mRuleCount[2] += this.mRuleList.size();
  this.mRuleCount[4] = -this.mRuleList.size();
  ooccs.calculateRules_3(this.mRuleList, mol);
  this.mRuleCount[4] += this.mRuleList.size();
  this.mRuleCount[5] = -this.mRuleList.size();
  ooccs.calculateRules(this.mRuleList, mol);
  this.mRuleCount[5] += this.mRuleList.size();
  this.mRuleCount[3] = -this.mRuleList.size();
  ooccs.calculateRules_4(this.mRuleList, mol);
  this.mRuleCount[3] += this.mRuleList.size();
}
;
defineClass(213, 1, {1:1}, ooccs.ConformationSelfOrganizer);
_.$init_740 = function $init_740(){
}
;
_.addIfNewOrReplaceIfBetter = function addIfNewOrReplaceIfBetter(conformer){
  var i, i0, soc;
  if (jsEquals(this.mRotatableBondForDescriptor, null))
    this.mRotatableBondForDescriptor = carcc.findRotatableBonds_0(this.getMolecule_0());
  if (conformer.getTotalStrain() > this.mMinStrainInPool + 2.72)
    return false;
  conformer.calculateDescriptor(this.mRotatableBondForDescriptor);
  for (i0 = this.mConformerList.size() - 1; i0 >= 0; i0--) {
    soc = castTo(this.mConformerList.getAtIndex(i0), 67);
    if (conformer.equals_1(soc)) {
      if (soc.isWorseThan(conformer)) {
        this.mConformerList.removeAtIndex(i0);
        this.mConformerList.add(conformer);
        if (this.mMinStrainInPool > conformer.getTotalStrain())
          this.mMinStrainInPool = conformer.getTotalStrain();
        return true;
      }
      return false;
    }
  }
  this.mConformerList.add(conformer);
  if (this.mMinStrainInPool > conformer.getTotalStrain()) {
    this.mMinStrainInPool = conformer.getTotalStrain();
    for (i = this.mConformerList.size() - 1; i >= 0; i--) {
      soc = castTo(this.mConformerList.getAtIndex(i), 67);
      if (soc.getTotalStrain() > this.mMinStrainInPool + 2.72)
        this.mConformerList.removeAtIndex(i);
    }
  }
  return true;
}
;
_.containsTrappedAtom = function containsTrappedAtom(conformer){
  var atom;
  for (atom = 0; atom < conformer.getMolecule_0().getAllAtoms_0(); atom++)
    if (conformer.getAtomStrain(atom) > 1000 || conformer.getAtomStrain(atom) > 2000)
      return true;
  return false;
}
;
_.escapeFromTrappedStates = function escapeFromTrappedStates(conformer){
  var atom, atom0, atom1, atomCount, atomStrain, c, cn, distance, e, neighbourCount;
  conformer.calculateStrain(this.mRuleList);
  atomCount = 0;
  for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++) {
    atomStrain = conformer.getAtomStrain(atom0);
    if (atomStrain > 1000 && this.tryEscapeFromFlatRingTrap(conformer, atom0))
      atomCount++;
  }
  if (atomCount == 0) {
    neighbourCount = 16;
    for (atom1 = 0; atom1 < this.mMol.getAllAtoms_0(); atom1++)
      if (neighbourCount > this.mMol.getAllConnAtoms_0(atom1) && conformer.getAtomStrain(atom1) > this.maxCageBreakoutStrain(atom1))
        neighbourCount = this.mMol.getAllConnAtoms_0(atom1);
    if (neighbourCount != 16) {
      for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
        if (neighbourCount == this.mMol.getAllConnAtoms_0(atom) && conformer.getAtomStrain(atom) > this.maxCageBreakoutStrain(atom)) {
          if (isNotNull(ooccs.mDWWriter)) {
            try {
              this.writeStrains(conformer, null, 'escapeCage', conformer.getAtomStrain(atom), NaN);
            }
             catch ($e0) {
              $e0 = toJava($e0);
              if (instanceOf($e0, 14)) {
                e = $e0;
                e.printStackTrace();
              }
               else 
                throw toJs($e0);
            }
          }
          c = conformer.getCoordinates(atom);
          if (this.mMol.getAllConnAtoms_0(atom) == 1) {
            cn = conformer.getCoordinates(this.mMol.getConnAtom_0(atom, 0));
            c.add_2(2 * (cn.x_0 - c.x_0), 2 * (cn.y_0 - c.y_0), 2 * (cn.z_0 - c.z_0));
          }
           else {
            distance = this.mMol.getAllConnAtoms_0(atom) == 0?2 * 8:8;
            c.add_2(distance * this.mRandom.nextDouble() - distance / 2, distance * this.mRandom.nextDouble() - distance / 2, distance * this.mRandom.nextDouble() - distance / 2);
          }
          atomCount++;
        }
      }
    }
  }
  if (atomCount != 0)
    conformer.invalidateStrain();
  return atomCount;
}
;
_.generateOneConformer = function generateOneConformer(randomSeed){
  var bestConformer, conformer, i, tempConformer;
  this.mRandom = eq(randomSeed, 0)?new ju.Random:new ju.Random_0(randomSeed);
  conformer = new ooccs.SelfOrganizedConformer(this.mMol);
  bestConformer = null;
  for (i = 0; i < 12; i++) {
    if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
      break;
    if (this.tryGenerateConformer(conformer) || neq(randomSeed, 0))
      return conformer;
    if (isNull(bestConformer)) {
      bestConformer = conformer;
      conformer = new ooccs.SelfOrganizedConformer(this.mMol);
    }
     else if (bestConformer.isWorseThan(conformer)) {
      tempConformer = bestConformer;
      bestConformer = conformer;
      conformer = tempConformer;
    }
  }
  return bestConformer;
}
;
_.getMolecule_0 = function getMolecule_9(){
  return this.mMol;
}
;
_.getNextConformer_1 = function getNextConformer_1(){
  var bestConformer, conformer, conformer$iterator;
  if (isNull(this.mConformerList))
    return null;
  if (!this.mPoolIsClosed)
    this.increaseConformerPool(1);
  bestConformer = null;
  for (conformer$iterator = this.mConformerList.iterator(); conformer$iterator.hasNext_0();) {
    conformer = castTo(conformer$iterator.next_3(), 67);
    if (!conformer.isUsed() && (isNull(bestConformer) || bestConformer.isWorseThan(conformer))) {
      bestConformer = conformer;
    }
  }
  if (isNotNull(bestConformer))
    bestConformer.setUsed_0(true);
  else 
    this.mConformerList = null;
  return bestConformer;
}
;
_.increaseConformerPool = function increaseConformerPool(newConformerCount){
  var bestRefusedConformer, conformer, finalPoolSize, i, tempConformer, tryCount;
  bestRefusedConformer = null;
  conformer = null;
  finalPoolSize = this.mConformerList.size() + newConformerCount;
  tryCount = newConformerCount * 12;
  for (i = 0; i < tryCount && this.mConformerList.size() < finalPoolSize; i++) {
    if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
      break;
    if (isNull(conformer))
      conformer = new ooccs.SelfOrganizedConformer(this.mMol);
    if (this.tryGenerateConformer(conformer)) {
      if (this.addIfNewOrReplaceIfBetter(conformer))
        conformer = null;
    }
     else {
      if (isNull(bestRefusedConformer)) {
        bestRefusedConformer = conformer;
        conformer = null;
      }
       else if (bestRefusedConformer.isWorseThan(conformer)) {
        tempConformer = bestRefusedConformer;
        bestRefusedConformer = conformer;
        conformer = tempConformer;
      }
    }
  }
  if (this.mConformerList.isEmpty() && isNotNull(bestRefusedConformer))
    this.mConformerList.add(bestRefusedConformer);
  if (this.mConformerList.size() < finalPoolSize || this.mConformerList.size() == this.mMaxConformers)
    this.mPoolIsClosed = true;
}
;
_.initializeConformers_2 = function initializeConformers_2(randomSeed, maxConformers){
  var bond, freeBondCount, ringBondCount;
  this.mRandom = eq(randomSeed, 0)?new ju.Random:new ju.Random_0(randomSeed);
  this.mConformerList = new ju.ArrayList;
  this.mMinStrainInPool = 1.7976931348623157E308;
  this.mPoolIsClosed = false;
  freeBondCount = 0;
  ringBondCount = 0;
  for (bond = 0; bond < this.mMol.getBonds_0(); bond++) {
    if (!this.mMol.isAromaticBond_0(bond) && this.mMol.getBondOrder_0(bond) == 1 && this.mMol.getAllConnAtoms_0(this.mMol.getBondAtom_0(0, bond)) > 1 && this.mMol.getAllConnAtoms_0(this.mMol.getBondAtom_0(1, bond)) > 1) {
      if (!this.mMol.isRingBond_0(bond))
        freeBondCount++;
      else if (this.mMol.getBondRingSize_0(bond) > 4)
        ringBondCount++;
    }
  }
  this.mMaxConformers = maxConformers == -1?1 << 1 + freeBondCount + narrow_int(ringBondCount / 2):maxConformers;
  this.increaseConformerPool($wnd.Math.min(8, this.mMaxConformers));
}
;
_.isAcceptable = function isAcceptable(conformer){
  var atom;
  for (atom = 0; atom < conformer.getMolecule_0().getAllAtoms_0(); atom++)
    if (conformer.getAtomStrain(atom) > 2.72)
      return false;
  return true;
}
;
_.jumbleAtoms = function jumbleAtoms(conformer){
  var atom, atom0, boxSize, connAtom;
  boxSize = 2 + 2 * $wnd.Math.sqrt(this.mMol.getAllAtoms_0());
  for (atom0 = 0; atom0 < this.mMol.getAllAtoms_0(); atom0++) {
    if (this.mMol.getAllConnAtoms_0(atom0) != 1) {
      conformer.setX_0(atom0, boxSize * this.mRandom.nextDouble() - boxSize / 2);
      conformer.setY_0(atom0, boxSize * this.mRandom.nextDouble() - boxSize / 2);
      conformer.setZ(atom0, boxSize * this.mRandom.nextDouble() - boxSize / 2);
    }
  }
  for (atom = 0; atom < this.mMol.getAllAtoms_0(); atom++) {
    if (this.mMol.getAllConnAtoms_0(atom) == 1) {
      connAtom = this.mMol.getConnAtom_0(atom, 0);
      conformer.setX_0(atom, conformer.getX(connAtom) + 4 * this.mRandom.nextDouble() - 2);
      conformer.setY_0(atom, conformer.getY(connAtom) + 4 * this.mRandom.nextDouble() - 2);
      conformer.setZ(atom, conformer.getZ(connAtom) + 4 * this.mRandom.nextDouble() - 2);
    }
  }
  conformer.invalidateStrain();
}
;
_.maxCageBreakoutStrain = function maxCageBreakoutStrain(atom){
  var connAtoms;
  connAtoms = $wnd.Math.min(4, this.mMol.getAllConnAtoms_0(atom));
  return 2000 / 5 + connAtoms * 2000 / 5;
}
;
_.optimize = function optimize(conformer, bestConformer, phase){
  var atomsSquare, averagePreviousStrain, conformerChanged, cycleFactor, cycles, e, innerCycle, outerCycle, previousTotalStrainIndex, previousTotalStrains, reductionFactor, rule, s1, s2, strain, strain$array, strain$index, strain$max;
  cycles = ooccs.PHASE_CYCLES[phase];
  cycleFactor = 1;
  reductionFactor = phase == 4?$wnd.Math.exp($wnd.Math.log(0.01) / cycles):1;
  this.mDWMode = ooccs.PHASE_NAME[phase];
  atomsSquare = this.mMol.getAllAtoms_0() * this.mMol.getAllAtoms_0();
  previousTotalStrains = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 10, 15, 1);
  previousTotalStrainIndex = 0;
  for (outerCycle = 0; outerCycle < cycles; outerCycle++) {
    if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
      break;
    if (phase != 0 && outerCycle % 10 == 0)
      this.tryEscapeTwistBoats(conformer);
    for (innerCycle = 0; innerCycle < atomsSquare; innerCycle++) {
      if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
        break;
      rule = null;
      if (false) {
      }
       else {
        rule = castTo(this.mRuleList.getAtIndex(round_int(this.mRandom.nextDouble() * this.mRuleList.size())), 48);
      }
      if (rule.isEnabled() && !this.mSkipRule[rule.getRuleType()]) {
        conformerChanged = rule.apply_3(conformer, cycleFactor);
        if (conformerChanged)
          conformer.invalidateStrain();
        if (isNotNull(ooccs.mDWWriter) && conformerChanged) {
          try {
            s1 = isNull(ooccs.mLastDWConformer)?0:rule.addStrain(ooccs.mLastDWConformer, null);
            s2 = rule.addStrain(conformer, null);
            this.writeStrains(conformer, rule, null, s1, s2);
          }
           catch ($e0) {
            $e0 = toJava($e0);
            if (instanceOf($e0, 14)) {
              e = $e0;
              e.printStackTrace();
            }
             else 
              throw toJs($e0);
          }
        }
      }
    }
    conformer.calculateStrain(this.mRuleList);
    previousTotalStrains[previousTotalStrainIndex++] = conformer.getTotalStrain();
    if (previousTotalStrainIndex == 10)
      previousTotalStrainIndex = 0;
    if (outerCycle > 10) {
      averagePreviousStrain = 0;
      for (strain$array = previousTotalStrains , strain$index = 0 , strain$max = strain$array.length; strain$index < strain$max; ++strain$index) {
        strain = strain$array[strain$index];
        averagePreviousStrain += strain;
      }
      averagePreviousStrain /= 10;
      if (conformer.getTotalStrain() > averagePreviousStrain)
        break;
    }
    if (bestConformer.getTotalStrain() > conformer.getTotalStrain())
      bestConformer.copyFrom_1(conformer);
    cycleFactor *= reductionFactor;
  }
  if (conformer.isWorseThan(bestConformer))
    conformer.copyFrom_1(bestConformer);
}
;
_.setThreadMaster = function setThreadMaster_1(tm){
  this.mThreadMaster = tm;
}
;
_.tryEscapeFromFlatRingTrap = function tryEscapeFromFlatRingTrap(conformer, atom){
  var ca, cc, connAtom, e, i, ringAtom, va, vr;
  if (this.mMol.getAllConnAtoms_0(atom) == 1) {
    connAtom = this.mMol.getConnAtom_0(atom, 0);
    if (this.mMol.isSmallRingAtom_0(connAtom)) {
      ca = conformer.getCoordinates(atom);
      cc = conformer.getCoordinates(connAtom);
      va = cc.subC(ca);
      for (i = 0; i < this.mMol.getConnAtoms_0(connAtom); i++) {
        ringAtom = this.mMol.getConnAtom_0(connAtom, i);
        if (this.mMol.isRingAtom_0(ringAtom)) {
          vr = cc.subC(conformer.getCoordinates(ringAtom));
          if (va.getAngle_0(vr) > 3.141592653589793 / 2)
            return false;
        }
      }
      ca.add_3(va).add_3(va);
      if (isNotNull(ooccs.mDWWriter)) {
        try {
          this.writeStrains(conformer, null, 'escapeFlatRing', conformer.getAtomStrain(atom), NaN);
        }
         catch ($e0) {
          $e0 = toJava($e0);
          if (instanceOf($e0, 14)) {
            e = $e0;
            e.printStackTrace();
          }
           else 
            throw toJs($e0);
        }
      }
      return true;
    }
  }
  return false;
}
;
_.tryEscapeTwistBoats = function tryEscapeTwistBoats(conformer){
  var angle, axis_0, center, changeDone, cog, connAtom, coords, distance, e, i, i0, isBridgedRingAtom, isCandidate, j, n, notAtom, pAtom, r, rb, rb$array, rb$index, rb$max, ringAtom, ringSet, sideMatchCount, strain1, theta;
  changeDone = false;
  ringSet = this.mMol.getRingSet_0();
  for (r = 0; r < ringSet.getSize_0(); r++) {
    ringAtom = ringSet.getRingAtoms_0(r);
    if (ringAtom.length == 6 && !ringSet.isDelocalized_0(r)) {
      isCandidate = true;
      for (rb$array = ringSet.getRingBonds_0(r) , rb$index = 0 , rb$max = rb$array.length; rb$index < rb$max; ++rb$index) {
        rb = rb$array[rb$index];
        if (this.mMol.getBondOrder_0(rb) != 1 || this.mMol.isDelocalizedBond_0(rb)) {
          isCandidate = false;
          break;
        }
      }
      if (isCandidate) {
        cog = new carc2.Coordinates_0;
        n = new carc2.Coordinates_0;
        coords = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [6, 3], 2);
        ooccs.calculateNearestPlane(conformer, ringAtom, cog, n, coords);
        distance = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, ringAtom.length, 15, 1);
        sideMatchCount = 0;
        for (i0 = 0; i0 < ringAtom.length; i0++) {
          distance[i0] = -(n.x_0 * coords[i0][0] + n.y_0 * coords[i0][1] + n.z_0 * coords[i0][2]);
          if (distance[i0] < 0 ^ (i0 & 1) == 1)
            sideMatchCount++;
        }
        if (sideMatchCount != 0 && sideMatchCount != 6) {
          for (i = 0; i < ringAtom.length; i++) {
            if (distance[i] < 0 ^ (i & 1) == 1 ^ sideMatchCount >= 3) {
              notAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
              notAtom[0] = ringAtom[i == 0?5:i - 1];
              notAtom[1] = ringAtom[i == 5?0:i + 1];
              pAtom = conformer.getCoordinates(ringAtom[i]);
              axis_0 = conformer.getCoordinates(ringAtom[i]).subC(cog).cross(n).unit();
              angle = 0.6 + $wnd.Math.asin($wnd.Math.abs(distance[i]) / pAtom.distance(cog));
              theta = distance[i] < 0?angle:-angle;
              center = (new carc2.Coordinates_2(pAtom)).center(cog);
              isBridgedRingAtom = false;
              if (this.mMol.getConnAtoms_0(ringAtom[i]) > 2) {
                for (j = 0; j < this.mMol.getConnAtoms_0(ringAtom[i]); j++) {
                  connAtom = this.mMol.getConnAtom_0(ringAtom[i], j);
                  if (connAtom != notAtom[0] && connAtom != notAtom[1] && this.mMol.isRingBond_0(this.mMol.getConnBond_0(ringAtom[i], j))) {
                    isBridgedRingAtom = true;
                    break;
                  }
                }
              }
              if (!isBridgedRingAtom)
                ooccs.rotateGroup(conformer, ringAtom[i], notAtom, center, axis_0, theta);
            }
          }
          changeDone = true;
        }
      }
    }
  }
  if (changeDone) {
    strain1 = conformer.getTotalStrain();
    conformer.invalidateStrain();
    conformer.calculateStrain(this.mRuleList);
    if (isNotNull(ooccs.mDWWriter)) {
      try {
        this.writeStrains(conformer, null, 'escapeTwistBoat', strain1, conformer.getTotalStrain());
      }
       catch ($e0) {
        $e0 = toJava($e0);
        if (instanceOf($e0, 14)) {
          e = $e0;
          e.printStackTrace();
        }
         else 
          throw toJs($e0);
      }
    }
  }
  return changeDone;
}
;
_.tryGenerateConformer = function tryGenerateConformer(conformer){
  var bestConformer, i, i0, rule, rule$iterator;
  if (this.mMol.getAllAtoms_0() < 2)
    return true;
  for (rule$iterator = this.mRuleList.iterator(); rule$iterator.hasNext_0();) {
    rule = castTo(rule$iterator.next_3(), 48);
    rule.setEnabled(true);
  }
  for (i0 = 0; i0 < this.mSkipRule.length; i0++)
    this.mSkipRule[i0] = false;
  if (!ooccs.KEEP_INITIAL_COORDINATES)
    this.jumbleAtoms(conformer);
  if (false)
    this.mSkipRule[3] = true;
  bestConformer = new ooccs.SelfOrganizedConformer_0(conformer);
  this.optimize(conformer, bestConformer, 0);
  if (false && this.mRuleCount[3] != 0) {
  }
  for (i = 0; this.containsTrappedAtom(conformer) && i < 3; i++) {
    if (isNotNull(this.mThreadMaster) && this.mThreadMaster.threadMustDie())
      break;
    if (this.escapeFromTrappedStates(conformer) == 0)
      break;
    this.optimize(conformer, bestConformer, 2);
  }
  this.optimize(conformer, bestConformer, 3);
  this.optimize(conformer, bestConformer, 4);
  return this.isAcceptable(conformer);
}
;
_.writeStrains = function writeStrains(newConformer, rule, stepName, strain1, strain2){
  var atom, atom0, atomList, atoms, i, i0, i1, idcode, mol, newCanonizer, newCoords, oldCanonizer, oldCoords, oldStrainSum, ruleName, s, s$array, s$index, s$max, strain, strainSum;
  newConformer.calculateStrain(this.mRuleList);
  strain = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length, 15, 1);
  strainSum = 0;
  for (i0 = 0; i0 < (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length; i0++) {
    strain[i0] = newConformer.getRuleStrain_0(i0);
    strainSum += strain[i0];
  }
  oldStrainSum = 0;
  if (jsNotEquals(this.mDWStrain, null))
    for (i1 = 0; i1 < this.mDWStrain.length; i1++)
      oldStrainSum += this.mDWStrain[i1];
  ruleName = isNotNull(rule)?(ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME)[rule.getRuleType()]:stepName;
  mol = this.mMol.getCompactCopy_0();
  for (atom0 = 0; atom0 < mol.getAllAtoms_0(); atom0++) {
    if (mol.getAtomicNo_0(atom0) == 1)
      mol.setAtomicNo_0(atom0, 9);
  }
  atoms = '';
  if (isNotNull(rule)) {
    atomList = rule.getAtomList_1();
    for (i = 0; i < atomList.length; i++) {
      if (i != 0)
        atoms = atoms + ',';
      atoms = atoms + atomList[i];
      if (atomList[i] != -1)
        mol.setAtomicNo_0(atomList[i], 5);
    }
  }
  newConformer.toMolecule_0(mol);
  newCanonizer = new carc2.Canonizer(mol);
  newCoords = newCanonizer.getEncodedCoordinates();
  if (isNotNull(ooccs.mLastDWConformer)) {
    ooccs.mLastDWConformer.toMolecule_0(mol);
    oldCanonizer = new carc2.Canonizer(mol);
    idcode = oldCanonizer.getIDCode_0();
    oldCoords = oldCanonizer.getEncodedCoordinates();
    ooccs.mDWWriter.write_2(idcode + '\t' + oldCoords + '\t' + newCoords + '\t' + ooccs.mDWCycle + '\t' + this.mDWMode + '\t' + ruleName + '\t' + atoms + '\t' + (isNotNull(rule)?rule.toString_0():stepName));
    for (s$array = strain , s$index = 0 , s$max = s$array.length; s$index < s$max; ++s$index) {
      s = s$array[s$index];
      ooccs.mDWWriter.write_2('\t' + caru.toString_20(s));
    }
    ooccs.mDWWriter.write_2('\t' + caru.toString_20(strainSum) + '\t' + caru.toString_20(oldStrainSum - strainSum) + '\t' + caru.toString_20(strain1) + '\t' + caru.toString_20(strain2) + '\t' + caru.toString_20(strain1 - strain2));
    for (atom = 0; atom < mol.getAllAtoms_0(); atom++) {
      ooccs.mDWWriter.write_2(atom == 0?'\t':' ');
      ooccs.mDWWriter.write_2(atom + ':' + caru.toString_21(newConformer.getAtomStrain(atom), 2));
    }
    ooccs.mDWWriter.newLine();
    this.mDWStrain = strain;
    ooccs.mDWCycle++;
  }
  ooccs.mLastDWConformer = new carcc.Conformer_0(newConformer);
}
;
_.mMaxConformers = 0;
_.mMinStrainInPool = 0;
_.mPoolIsClosed = false;
ooccs.ATOM_ACCEPTABLE_STRAIN = 2.72;
ooccs.ATOM_CAGE_BREAKOUT_STRAIN = 2000;
ooccs.ATOM_FLAT_RING_BREAKOUT_STRAIN = 1000;
ooccs.BREAKOUT_DISTANCE = 8;
ooccs.CONSIDERED_PREVIOUS_CYCLE_COUNT = 10;
ooccs.DATAWARRIOR_DEBUG_FILE = '/home/thomas/data/debug/conformationSampler.dwar';
ooccs.INITIALLY_SKIP_TORSION_RULES = false;
ooccs.INITIAL_POOL_SIZE = 8;
ooccs.KEEP_INITIAL_COORDINATES = false;
ooccs.MAX_BREAKOUT_ROUNDS = 3;
ooccs.MAX_CONFORMER_TRIES = 12;
ooccs.MAX_POOL_STRAIN_DIF = 2.72;
ooccs.MINIMIZATION_END_FACTOR = 0.01;
ooccs.PHASE_BREAKOUT = 2;
ooccs.PHASE_MINIMIZATION = 4;
ooccs.PHASE_OPTIMIZATION = 3;
ooccs.PHASE_PREPARATION = 0;
ooccs.PHASE_PRE_OPTIMIZATION = 1;
ooccs.PREFER_HIGH_STRAIN_RULES = false;
ooccs.STANDARD_CYCLE_FACTOR = 1;
ooccs.TWIST_BOAT_ESCAPE_ANGLE = 0.6;
ooccs.TWIST_BOAT_ESCAPE_FREQUENCY = 10;
ooccs.WRITE_DW_FILE = false;
ooccs.mDWCycle = 0;
cggl.Lorg_openmolecules_chem_conf_so_ConformationSelfOrganizer_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'ConformationSelfOrganizer', 213, cggl.Ljava_lang_Object_2_classLit);
ooccs.$clinit_DistanceRule = function $clinit_DistanceRule(){
  ooccs.$clinit_DistanceRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.DistanceRule = function DistanceRule(){
  ooccs.ConformationRule.call(this, null);
  this.$init_741();
}
;
ooccs.DistanceRule_0 = function DistanceRule_0(atom, minDistance, maxDistance, priority){
  ooccs.ConformationRule.call(this, atom);
  this.$init_741();
  this.mDistance = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mDistance[0] = minDistance;
  this.mDistance[1] = maxDistance;
  this.mPriority = priority;
}
;
ooccs.DistanceRule_1 = function DistanceRule_1(atom, notList, minDistance, maxDistance, priority){
  ooccs.ConformationRule.call(this, atom);
  this.$init_741();
  this.mDistance = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 2, 15, 1);
  this.mDistance[0] = minDistance;
  this.mDistance[1] = maxDistance;
  this.mNotList = notList;
  this.mPriority = priority;
}
;
ooccs.DistanceRule_2 = function DistanceRule_2(atom, notList, distance, priority){
  ooccs.ConformationRule.call(this, atom);
  this.$init_741();
  this.mDistance = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 1, 15, 1);
  this.mDistance[0] = distance;
  this.mNotList = notList;
  this.mPriority = priority;
}
;
ooccs.calculateDisconnectedDistanceRules = function calculateDisconnectedDistanceRules(rule, mol){
  var atom1, atom2;
  for (atom1 = 1; atom1 < mol.getAllAtoms_0(); atom1++) {
    for (atom2 = 0; atom2 < atom1; atom2++) {
      if (isNull(rule[atom1][atom2])) {
        setCheck(rule[atom1], atom2, new ooccs.DistanceRule_0(ooccs.combineAtoms(atom1, atom2), ooccs.getVDWRadius(atom1, mol) + ooccs.getVDWRadius(atom2, mol), 1.7976931348623157E308, -1));
      }
    }
  }
}
;
ooccs.calculateLongDistanceRules = function calculateLongDistanceRules(rule, rootAtom, mol, bondLengthSet){
  var bondCount, candidate, current, distanceToRoot, graphAtom, highest, i, notList, parent_0;
  bondCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  graphAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  distanceToRoot = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  graphAtom[0] = rootAtom;
  current = 0;
  highest = 0;
  while (current <= highest) {
    parent_0 = graphAtom[current];
    for (i = 0; i < mol.getAllConnAtoms_0(parent_0); i++) {
      candidate = mol.getConnAtom_0(parent_0, i);
      if (bondCount[candidate] == 0 && candidate != rootAtom) {
        graphAtom[++highest] = candidate;
        bondCount[candidate] = bondCount[parent_0] + 1;
        if (bondCount[candidate] == 2)
          distanceToRoot[candidate] = candidate < rootAtom?rule[rootAtom][candidate].mDistance[0]:rule[candidate][rootAtom].mDistance[0];
        else if (bondCount[candidate] > 2) {
          distanceToRoot[candidate] = distanceToRoot[parent_0] + bondLengthSet.getLength_0(mol.getConnBond_0(parent_0, i));
          if (candidate < rootAtom && isNull(rule[rootAtom][candidate])) {
            if (bondCount[candidate] == 3) {
              setCheck(rule[rootAtom], candidate, new ooccs.DistanceRule);
            }
             else {
              notList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
              notList[0] = graphAtom[1];
              notList[1] = parent_0;
              setCheck(rule[rootAtom], candidate, new ooccs.DistanceRule_1(ooccs.combineAtoms(rootAtom, candidate), notList, ooccs.getVDWRadius(rootAtom, mol) + ooccs.getVDWRadius(candidate, mol), distanceToRoot[candidate], 0));
            }
          }
        }
      }
    }
    current++;
  }
}
;
ooccs.calculateRules_0 = function calculateRules_0(ruleList, mol){
  ooccs.$clinit_DistanceRule();
  var angle, angle1, angle2, atom, atom0, atom1, atom2, atom3, atom4, bond, bond0, bondAngleSet, bondLength1, bondLength2, bondLengthSet, conn1, conn2, connAngle, connAtom, connAtom1, connAtom2, connBond, connBond1, connBond2, connIndex, distance, doubleBondOpponentIndex, dx, dy, dz, i, i0, i1, i2, i3, isE, j, j0, j1, notAtom, opponentIndex, outerAtom, rule;
  bondLengthSet = new carcc.BondLengthSet(mol);
  bondAngleSet = new carcc.BondAngleSet(mol, bondLengthSet);
  rule = initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_so_DistanceRule_2_classLit, {4:1, 1:1, 7:1}, 1348, mol.getAllAtoms_0(), 0, 2);
  for (i0 = 1; i0 < mol.getAllAtoms_0(); i0++)
    setCheck(rule, i0, initUnidimensionalArray(cggl.Lorg_openmolecules_chem_conf_so_DistanceRule_2_classLit, {4:1, 1:1, 7:1, 1348:1}, 117, i0, 0, 1));
  for (bond0 = 0; bond0 < mol.getAllBonds_0(); bond0++) {
    atom0 = ooccs.combineAtoms(mol.getBondAtom_0(0, bond0), mol.getBondAtom_0(1, bond0));
    ooccs.setFixedDistance(rule, atom0, atom0, bondLengthSet.getLength_0(bond0), 10);
  }
  for (atom3 = 0; atom3 < mol.getAtoms_0(); atom3++) {
    for (i1 = 1; i1 < mol.getAllConnAtoms_0(atom3); i1++) {
      connAtom1 = mol.getConnAtom_0(atom3, i1);
      connBond1 = mol.getConnBond_0(atom3, i1);
      bondLength1 = bondLengthSet.getLength_0(connBond1);
      for (j0 = 0; j0 < i1; j0++) {
        connAtom2 = mol.getConnAtom_0(atom3, j0);
        connBond2 = mol.getConnBond_0(atom3, j0);
        angle = bondAngleSet.getConnAngle(atom3, i1, j0);
        bondLength2 = bondLengthSet.getLength_0(connBond2);
        distance = $wnd.Math.sqrt(bondLength1 * bondLength1 + bondLength2 * bondLength2 - 2 * bondLength1 * bondLength2 * $wnd.Math.cos(angle));
        notAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1, 15, 1);
        notAtom[0] = atom3;
        ooccs.setFixedDistance(rule, ooccs.combineAtoms(connAtom1, connAtom2), notAtom, distance, 5);
      }
    }
  }
  for (bond = 0; bond < mol.getAllBonds_0(); bond++) {
    if (mol.isAromaticBond_0(bond) || mol.isRingBond_0(bond) && mol.getBondRingSize_0(bond) <= 5)
      continue;
    atom0 = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
    for (i1 = 0; i1 < 2; i1++)
      atom0[i1] = mol.getBondAtom_0(i1, bond);
    if (mol.getAllConnAtoms_0(atom0[0]) > 1 && mol.getAllConnAtoms_0(atom0[1]) > 1) {
      if (mol.getBondOrder_0(bond) == 3) {
        distance = bondLengthSet.getLength_0(bond);
        outerAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
        for (i2 = 0; i2 < 2; i2++) {
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom0[i2]); j0++) {
            connBond = mol.getConnBond_0(atom0[i2], j0);
            if (connBond != bond) {
              distance += bondLengthSet.getLength_0(connBond);
              outerAtom[i2] = mol.getConnAtom_0(atom0[i2], j0);
              break;
            }
          }
        }
        notAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
        notAtom[0] = atom0[0];
        notAtom[1] = atom0[1];
        ooccs.setFixedDistance(rule, ooccs.combineAtoms(outerAtom[0], outerAtom[1]), notAtom, distance, 3);
      }
       else if (mol.getBondOrder_0(bond) == 2 && mol.getAtomPi_0(atom0[0]) == 1 && mol.getAtomPi_0(atom0[1]) == 1 && mol.getBondParity_0(bond) != 3) {
        connAtom = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, 2, 0, 2);
        connBond = initUnidimensionalArray(cggl.I_classLit, {35:1, 4:1, 1:1, 7:1}, 6, 2, 0, 2);
        connAngle = initUnidimensionalArray(cggl.D_classLit, {4:1, 1:1, 7:1}, 13, 2, 0, 2);
        for (i2 = 0; i2 < 2; i2++) {
          connAtom[i2] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllConnAtoms_0(atom0[i2]) - 1, 15, 1);
          connBond[i2] = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllConnAtoms_0(atom0[i2]) - 1, 15, 1);
          connAngle[i2] = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, mol.getAllConnAtoms_0(atom0[i2]) - 1, 15, 1);
          doubleBondOpponentIndex = -1;
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom0[i2]); j0++) {
            if (mol.getConnAtom_0(atom0[i2], j0) == atom0[1 - i2]) {
              doubleBondOpponentIndex = j0;
              break;
            }
          }
          connIndex = 0;
          for (j1 = 0; j1 < mol.getAllConnAtoms_0(atom0[i2]); j1++) {
            if (j1 != doubleBondOpponentIndex) {
              connAtom[i2][connIndex] = mol.getConnAtom_0(atom0[i2], j1);
              connBond[i2][connIndex] = mol.getConnBond_0(atom0[i2], j1);
              connAngle[i2][connIndex] = bondAngleSet.getConnAngle(atom0[i2], doubleBondOpponentIndex, j1);
              connIndex++;
            }
          }
        }
        for (i3 = 0; i3 < connAtom[0].length; i3++) {
          for (j0 = 0; j0 < connAtom[1].length; j0++) {
            isE = mol.getBondParity_0(bond) == 1;
            if (connAtom[0].length == 2 && connAtom[0][i3] > connAtom[0][1 - i3])
              isE = !isE;
            if (connAtom[1].length == 2 && connAtom[1][j0] > connAtom[1][1 - j0])
              isE = !isE;
            ooccs.setDoubleBondDistance(connAtom[0][i3], connAtom[1][j0], connBond[0][i3], connBond[1][j0], connAngle[0][i3], connAngle[1][j0], bond, isE, bondLengthSet, rule, mol);
          }
        }
      }
       else if (mol.getBondOrder_0(bond) != 0) {
        opponentIndex = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
        for (i2 = 0; i2 < 2; i2++) {
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom0[i2]); j0++) {
            if (mol.getConnAtom_0(atom0[i2], j0) == atom0[1 - i2]) {
              opponentIndex[i2] = j0;
              break;
            }
          }
        }
        for (i3 = 0; i3 < mol.getAllConnAtoms_0(atom0[0]); i3++) {
          if (i3 != opponentIndex[0]) {
            for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom0[1]); j0++) {
              if (j0 != opponentIndex[1]) {
                if (mol.getAtomPi_0(atom0[0]) == 0 && mol.getAtomPi_0(atom0[1]) == 0)
                  ooccs.setSingleBondConnAtomDistance(mol.getConnAtom_0(atom0[0], i3), mol.getConnAtom_0(atom0[1], j0), mol.getConnBond_0(atom0[0], i3), mol.getConnBond_0(atom0[1], j0), bondAngleSet.getConnAngle(atom0[0], opponentIndex[0], i3), bondAngleSet.getConnAngle(atom0[1], opponentIndex[1], j0), bond, bondLengthSet, rule, mol);
                else 
                  ooccs.setAnyBondConnAtomDistance(mol.getConnAtom_0(atom0[0], i3), mol.getConnAtom_0(atom0[1], j0), mol.getConnBond_0(atom0[0], i3), mol.getConnBond_0(atom0[1], j0), bondAngleSet.getConnAngle(atom0[0], opponentIndex[0], i3), bondAngleSet.getConnAngle(atom0[1], opponentIndex[1], j0), bond, bondLengthSet, rule, mol);
              }
            }
          }
        }
      }
    }
  }
  for (atom4 = 0; atom4 < mol.getAtoms_0(); atom4++) {
    if (mol.getAtomPi_0(atom4) == 2 && mol.getConnAtoms_0(atom4) == 2 && mol.getConnBondOrder_0(atom4, 0) == 2 && mol.getConnBondOrder_0(atom4, 1) == 2) {
      atom1 = mol.getConnAtom_0(atom4, 0);
      atom2 = mol.getConnAtom_0(atom4, 1);
      for (i1 = 0; i1 < mol.getAllConnAtoms_0(atom1); i1++) {
        conn1 = mol.getConnAtom_0(atom1, i1);
        if (conn1 != atom4) {
          for (j0 = 0; j0 < mol.getAllConnAtoms_0(atom2); j0++) {
            conn2 = mol.getConnAtom_0(atom2, j0);
            if (conn2 != atom4) {
              angle1 = bondAngleSet.getAngle_1(atom1, atom4, conn1);
              angle2 = bondAngleSet.getAngle_1(atom2, atom4, conn2);
              bondLength1 = bondLengthSet.getLength_0(mol.getConnBond_0(atom1, i1));
              bondLength2 = bondLengthSet.getLength_0(mol.getConnBond_0(atom2, j0));
              dx = bondLengthSet.getLength_0(mol.getConnBond_0(atom4, 0)) + bondLengthSet.getLength_0(mol.getConnBond_0(atom4, 1)) - bondLength1 * $wnd.Math.cos(angle1) - bondLength2 * $wnd.Math.cos(angle2);
              dy = bondLength1 * $wnd.Math.sin(angle1);
              dz = bondLength2 * $wnd.Math.sin(angle2);
              notAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
              notAtom[0] = atom1;
              notAtom[1] = atom2;
              ooccs.setFixedDistance(rule, ooccs.combineAtoms(conn1, conn2), notAtom, $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz), 3);
            }
          }
        }
      }
    }
  }
  for (atom = 0; atom < mol.getAllAtoms_0(); atom++)
    ooccs.calculateLongDistanceRules(rule, atom, mol, bondLengthSet);
  ooccs.calculateDisconnectedDistanceRules(rule, mol);
  for (i = 1; i < mol.getAllAtoms_0(); i++)
    for (j = 0; j < i; j++)
      if (jsNotEquals(rule[i][j].mDistance, null))
        ruleList.add(rule[i][j]);
}
;
ooccs.combineAtoms = function combineAtoms(atom1, atom2){
  var atom;
  atom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  if (atom1 > atom2) {
    atom[0] = atom1;
    atom[1] = atom2;
  }
   else {
    atom[0] = atom2;
    atom[1] = atom1;
  }
  return atom;
}
;
ooccs.getVDWRadius = function getVDWRadius(atom, mol){
  var atomicNo;
  atomicNo = mol.getAtomicNo_0(atom);
  return atomicNo < (carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS).length?(carcc.$clinit_VDWRadii() , carcc.VDW_RADIUS)[atomicNo]:2;
}
;
ooccs.mergeNotLists = function mergeNotLists(nl1, nl2){
  var atom, atom$array, atom$array0, atom$index, atom$index0, atom$max, atom$max0, index_0, nl;
  if (jsEquals(nl1, null))
    return nl2;
  if (jsEquals(nl2, null))
    return nl1;
  nl = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, nl1.length + nl2.length, 15, 1);
  index_0 = 0;
  for (atom$array0 = nl1 , atom$index0 = 0 , atom$max0 = atom$array0.length; atom$index0 < atom$max0; ++atom$index0) {
    atom = atom$array0[atom$index0];
    nl[index_0++] = atom;
  }
  for (atom$array = nl2 , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    nl[index_0++] = atom;
  }
  return nl;
}
;
ooccs.setAnyBondConnAtomDistance = function setAnyBondConnAtomDistance(atom1, atom2, bond1, bond2, angle1, angle2, centralBond, bondLengthSet, rule, mol){
  var atom, currentRule, dx, dyMax, dyMin, max_0, min_0, notAtom, s1, s2;
  if (atom1 == atom2)
    return;
  atom = ooccs.combineAtoms(atom1, atom2);
  if (isNotNull(rule[atom[0]][atom[1]]) && rule[atom[0]][atom[1]].isFixedDistance())
    return;
  dx = bondLengthSet.getLength_0(centralBond) - bondLengthSet.getLength_0(bond1) * $wnd.Math.cos(angle1) - bondLengthSet.getLength_0(bond2) * $wnd.Math.cos(angle2);
  s1 = bondLengthSet.getLength_0(bond1) * $wnd.Math.sin(angle1);
  s2 = bondLengthSet.getLength_0(bond2) * $wnd.Math.sin(angle2);
  dyMax = s1 + s2;
  dyMin = s1 - s2;
  min_0 = $wnd.Math.sqrt(dx * dx + dyMin * dyMin);
  max_0 = $wnd.Math.sqrt(dx * dx + dyMax * dyMax);
  notAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  notAtom[0] = mol.getBondAtom_0(0, centralBond);
  notAtom[1] = mol.getBondAtom_0(1, centralBond);
  currentRule = rule[atom[0]][atom[1]];
  if (isNull(currentRule)) {
    setCheck(rule[atom[0]], atom[1], new ooccs.DistanceRule_1(atom, notAtom, min_0, max_0, 3));
  }
   else {
    currentRule.mDistance[0] = $wnd.Math.min(currentRule.mDistance[0], min_0);
    currentRule.mDistance[1] = $wnd.Math.min(currentRule.mDistance[1], max_0);
  }
}
;
ooccs.setDoubleBondDistance = function setDoubleBondDistance(atom1, atom2, bond1, bond2, angle1, angle2, ezBond, isE, bondLengthSet, rule, mol){
  var notAtom, s1, s2;
  s1 = bondLengthSet.getLength_0(ezBond) - bondLengthSet.getLength_0(bond1) * $wnd.Math.cos(angle1) - bondLengthSet.getLength_0(bond2) * $wnd.Math.cos(angle2);
  s2 = bondLengthSet.getLength_0(bond1) * $wnd.Math.sin(angle1);
  if (isE)
    s2 += bondLengthSet.getLength_0(bond2) * $wnd.Math.sin(angle2);
  else 
    s2 -= bondLengthSet.getLength_0(bond2) * $wnd.Math.sin(angle2);
  notAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  notAtom[0] = mol.getBondAtom_0(0, ezBond);
  notAtom[1] = mol.getBondAtom_0(1, ezBond);
  ooccs.setFixedDistance(rule, ooccs.combineAtoms(atom1, atom2), notAtom, $wnd.Math.sqrt(s1 * s1 + s2 * s2), 3);
}
;
ooccs.setFixedDistance = function setFixedDistance(rule, atom, notList, distance, priority){
  if (isNull(rule[atom[0]][atom[1]])) {
    setCheck(rule[atom[0]], atom[1], new ooccs.DistanceRule_2(atom, notList, distance, priority));
  }
   else if (rule[atom[0]][atom[1]].mDistance.length == 2 || rule[atom[0]][atom[1]].mPriority < priority) {
    setCheck(rule[atom[0]], atom[1], new ooccs.DistanceRule_2(atom, notList, distance, priority));
  }
   else if (rule[atom[0]][atom[1]].mPriority == priority) {
    rule[atom[0]][atom[1]].mDistance[0] = (rule[atom[0]][atom[1]].mDistance[0] + distance) / 2;
    rule[atom[0]][atom[1]].mNotList = ooccs.mergeNotLists(rule[atom[0]][atom[1]].mNotList, notList);
  }
}
;
ooccs.setSingleBondConnAtomDistance = function setSingleBondConnAtomDistance(atom1, atom2, bond1, bond2, angle1, angle2, centralBond, bondLengthSet, rule, mol){
  var atom, cosTorsion, currentRule, dx, dyMax, dyMin, dz, max_0, min_0, notAtom, ringSize, s1, s2, sinTorsion;
  if (atom1 == atom2)
    return;
  atom = ooccs.combineAtoms(atom1, atom2);
  if (isNotNull(rule[atom[0]][atom[1]]) && rule[atom[0]][atom[1]].isFixedDistance())
    return;
  sinTorsion = 0.866;
  cosTorsion = 0.5;
  if (mol.isRingBond_0(centralBond)) {
    ringSize = mol.getBondRingSize_0(centralBond);
    if (ringSize < 6) {
      sinTorsion = 0;
      cosTorsion = 1;
    }
  }
  dx = bondLengthSet.getLength_0(centralBond) - bondLengthSet.getLength_0(bond1) * $wnd.Math.cos(angle1) - bondLengthSet.getLength_0(bond2) * $wnd.Math.cos(angle2);
  s1 = bondLengthSet.getLength_0(bond1) * $wnd.Math.sin(angle1);
  s2 = bondLengthSet.getLength_0(bond2) * $wnd.Math.sin(angle2);
  dyMax = s1 + s2;
  dyMin = s1 - s2 * cosTorsion;
  dz = s2 * sinTorsion;
  min_0 = $wnd.Math.sqrt(dx * dx + dyMin * dyMin + dz * dz);
  max_0 = $wnd.Math.sqrt(dx * dx + dyMax * dyMax);
  notAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  notAtom[0] = mol.getBondAtom_0(0, centralBond);
  notAtom[1] = mol.getBondAtom_0(1, centralBond);
  currentRule = rule[atom[0]][atom[1]];
  if (isNull(currentRule)) {
    setCheck(rule[atom[0]], atom[1], new ooccs.DistanceRule_1(atom, notAtom, min_0, max_0, 3));
  }
   else {
    currentRule.mDistance[0] = $wnd.Math.min(currentRule.mDistance[0], min_0);
    currentRule.mDistance[1] = $wnd.Math.min(currentRule.mDistance[1], max_0);
  }
}
;
defineClass(117, 48, {1:1, 48:1, 117:1}, ooccs.DistanceRule, ooccs.DistanceRule_0, ooccs.DistanceRule_1, ooccs.DistanceRule_2);
_.$init_741 = function $init_741(){
}
;
_.addStrain = function addStrain_0(conformer, atomStrain){
  var strain;
  strain = this.getStrain(conformer);
  if (jsNotEquals(atomStrain, null) && strain > 0) {
    atomStrain[this.mAtom[0]] += strain / 2;
    atomStrain[this.mAtom[1]] += strain / 2;
  }
  return strain;
}
;
_.apply_3 = function apply_8(conformer, cycleFactor){
  var distance, distanceFactor, dx, dy, dz, factor, mol;
  dx = conformer.getX(this.mAtom[1]) - conformer.getX(this.mAtom[0]);
  dy = conformer.getY(this.mAtom[1]) - conformer.getY(this.mAtom[0]);
  dz = conformer.getZ(this.mAtom[1]) - conformer.getZ(this.mAtom[0]);
  distance = $wnd.Math.sqrt(dx * dx + dy * dy + dz * dz);
  distanceFactor = 0;
  if (this.mDistance.length == 2) {
    if (distance < this.mDistance[0]) {
      distanceFactor = (distance - this.mDistance[0]) / distance;
    }
     else if (distance > this.mDistance[1]) {
      distanceFactor = (distance - this.mDistance[1]) / distance;
    }
  }
   else {
    if (distance < this.mDistance[0]) {
      distanceFactor = (distance - this.mDistance[0]) / distance;
    }
     else if (distance > this.mDistance[0]) {
      distanceFactor = (distance - this.mDistance[0]) / distance;
    }
  }
  if ($wnd.Math.abs(distanceFactor) < 0.001)
    return false;
  factor = cycleFactor * distanceFactor;
  mol = conformer.getMolecule_0();
  if (this.mPriority == 10) {
    if (mol.getAllConnAtoms_0(this.mAtom[0]) == 1 && mol.getAllConnAtoms_0(this.mAtom[1]) != 1) {
      conformer.getCoordinates(this.mAtom[0]).add_2(dx * factor, dy * factor, dz * factor);
      return true;
    }
    if (mol.getAllConnAtoms_0(this.mAtom[0]) != 1 && mol.getAllConnAtoms_0(this.mAtom[1]) == 1) {
      conformer.getCoordinates(this.mAtom[1]).add_2(-dx * factor, -dy * factor, -dz * factor);
      return true;
    }
  }
  factor /= 2;
  this.moveGroup(conformer, this.mAtom[0], this.mNotList, dx * factor, dy * factor, dz * factor);
  this.moveGroup(conformer, this.mAtom[1], this.mNotList, -dx * factor, -dy * factor, -dz * factor);
  return true;
}
;
_.calculateDirectConnectionStrain = function calculateDirectConnectionStrain(deltaDistance){
  return 10000 * deltaDistance * deltaDistance;
}
;
_.calculateRelaxedStrain = function calculateRelaxedStrain(deltaDistance){
  return 4000 * deltaDistance * deltaDistance;
}
;
_.calculateTwoBondStrain = function calculateTwoBondStrain(deltaDistance){
  return 8000 * deltaDistance * deltaDistance;
}
;
_.calculateVDWStrain = function calculateVDWStrain(mol, distance){
  var constant, reldist, reldist6, vdwradii;
  vdwradii = 1.02 * ooccs.getVDWRadius(this.mAtom[1], mol) + ooccs.getVDWRadius(this.mAtom[0], mol);
  reldist = distance / vdwradii;
  reldist6 = $wnd.Math.pow(reldist, -6);
  constant = 2;
  return reldist >= 1?0:constant * (reldist6 * reldist6 - reldist6);
}
;
_.getRuleType = function getRuleType_0(){
  return 0;
}
;
_.getStrain = function getStrain(conformer){
  var distance, strain;
  distance = conformer.getCoordinates(this.mAtom[1]).distance(conformer.getCoordinates(this.mAtom[0]));
  if (this.mDistance.length == 2) {
    if (distance < 1.02 * this.mDistance[0]) {
      return this.calculateVDWStrain(conformer.getMolecule_0(), distance);
    }
     else if (distance > this.mDistance[1]) {
      return this.calculateRelaxedStrain((distance - this.mDistance[1]) / distance);
    }
  }
   else {
    strain = this.mPriority == 10?this.calculateDirectConnectionStrain($wnd.Math.abs(this.mDistance[0] - distance) / $wnd.Math.max(this.mDistance[0], distance)):this.mPriority == 5?this.calculateTwoBondStrain($wnd.Math.abs(this.mDistance[0] - distance) / $wnd.Math.max(this.mDistance[0], distance)):this.calculateRelaxedStrain($wnd.Math.abs(this.mDistance[0] - distance) / $wnd.Math.max(this.mDistance[0], distance));
    if ($wnd.Math.abs(strain) > 0.009999999776482582)
      return strain;
  }
  return 0;
}
;
_.isFixedDistance = function isFixedDistance(){
  return this.mDistance.length == 1;
}
;
_.toString_0 = function toString_72(){
  var i, sb;
  sb = new jl.StringBuilder_1('distance rule:');
  getClassPrototype(48).addAtomList.call(this, sb);
  if (this.mDistance.length == 1)
    sb.append_9(' distance:' + caru.toString_20(this.mDistance[0]));
  else 
    sb.append_9(' min:' + caru.toString_20(this.mDistance[0]) + ' max:' + caru.toString_20(this.mDistance[1]));
  if (jsNotEquals(this.mNotList, null)) {
    sb.append_9(' not:' + this.mNotList[0]);
    for (i = 1; i < this.mNotList.length; i++)
      sb.append_9(',' + this.mNotList[i]);
  }
  return sb.toString_0();
}
;
_.mPriority = 0;
ooccs.PRIORITY_DISCONNECTED = 0;
ooccs.PRIORITY_FOUR_AND_MORE_BONDS = 1;
ooccs.PRIORITY_ONE_BOND = 10;
ooccs.PRIORITY_THREE_BONDS = 3;
ooccs.PRIORITY_TWO_BONDS = 5;
ooccs.VDW_RADIUS_CORRECTION = 1.02;
cggl.Lorg_openmolecules_chem_conf_so_DistanceRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'DistanceRule', 117, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_PlaneRule = function $clinit_PlaneRule(){
  ooccs.$clinit_PlaneRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.PlaneRule = function PlaneRule(atom, mol){
  var count, i, i0;
  ooccs.ConformationRule.call(this, atom);
  this.$init_742();
  count = 0;
  for (i0 = 0; i0 < atom.length; i0++)
    if (mol.getConnAtoms_0(atom[i0]) != 1)
      count++;
  if (count > 2) {
    this.mPlaneAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
    count = 0;
    for (i = 0; i < atom.length; i++)
      if (mol.getConnAtoms_0(atom[i]) != 1)
        this.mPlaneAtom[count++] = atom[i];
  }
   else {
    this.mPlaneAtom = atom;
  }
}
;
ooccs.calculateRules_1 = function calculateRules_1(ruleList, mol){
  ooccs.$clinit_PlaneRule();
  var atom, atomList, atomicNo, bond, bond0, bond1, bondAtom1, bondAtom2, carbon, connAtom, count, fragmentAtom, i, i0, isAromaticRing, isFlatBond, isFlatBondAtom, j, ring, ringSet;
  isFlatBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getBonds_0(), 16, 1);
  ringSet = mol.getRingSet_0();
  isAromaticRing = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1);
  ringSet.determineAromaticity_1(isAromaticRing, initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 16, 1), initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, ringSet.getSize_0(), 15, 1), true);
  for (ring = 0; ring < ringSet.getSize_0(); ring++)
    if (isAromaticRing[ring])
      for (i0 = 0; i0 < ringSet.getRingSize_0(ring); i0++)
        isFlatBond[ringSet.getRingBonds_0(ring)[i0]] = true;
  atomicNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    bondAtom1 = mol.getBondAtom_0(0, bond0);
    bondAtom2 = mol.getBondAtom_0(1, bond0);
    atomicNo[0] = mol.getAtomicNo_0(bondAtom1);
    atomicNo[1] = mol.getAtomicNo_0(bondAtom2);
    isFlatBond[bond0] = isFlatBond[bond0] | (mol.isAromaticBond_0(bond0) || mol.getBondOrder_0(bond0) == 2 && atomicNo[0] <= 8 && atomicNo[1] <= 8 && mol.getAtomPi_0(bondAtom1) == 1 && mol.getAtomPi_0(bondAtom2) == 1 && mol.getAllConnAtoms_0(bondAtom1) > 1 && mol.getAllConnAtoms_0(bondAtom2) > 1);
    if (!isFlatBond[bond0]) {
      if (mol.getBondOrder_0(bond0) == 1) {
        for (i = 0; i < 2; i++) {
          if ((atomicNo[i] == 7 || atomicNo[i] == 8) && atomicNo[1 - i] == 6) {
            carbon = mol.getBondAtom_0(1 - i, bond0);
            for (j = 0; j < mol.getConnAtoms_0(carbon); j++) {
              if (mol.getConnBondOrder_0(carbon, j) == 2) {
                connAtom = mol.getConnAtom_0(carbon, j);
                if (mol.getAtomicNo_0(connAtom) == 7 || mol.getAtomicNo_0(connAtom) == 8 || mol.getAtomicNo_0(connAtom) == 16) {
                  isFlatBond[bond0] = true;
                  break;
                }
              }
            }
          }
        }
      }
    }
  }
  isFlatBondAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAtoms_0(), 16, 1);
  for (bond1 = 0; bond1 < mol.getBonds_0(); bond1++) {
    if (isFlatBond[bond1]) {
      isFlatBondAtom[mol.getBondAtom_0(0, bond1)] = true;
      isFlatBondAtom[mol.getBondAtom_0(1, bond1)] = true;
    }
  }
  fragmentAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    if (isFlatBond[bond]) {
      fragmentAtom[0] = mol.getBondAtom_0(0, bond);
      count = ooccs.getFlatFragmentAtoms(fragmentAtom, isFlatBond, mol);
      atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
      for (i = 0; i < count; i++)
        atomList[i] = fragmentAtom[i];
      ruleList.add(new ooccs.PlaneRule(atomList, mol));
    }
  }
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (!isFlatBondAtom[atom]) {
      if (mol.getAtomicNo_0(atom) == 5 && mol.getAtomCharge_0(atom) == 0 && mol.getAllConnAtoms_0(atom) <= 3 || mol.getAtomicNo_0(atom) <= 8 && mol.getAtomPi_0(atom) == 1 && mol.getAllConnAtoms_0(atom) > 1 || mol.isFlatNitrogen_0(atom) && mol.getAtomPi_0(atom) != 2 && mol.getAllConnAtoms_0(atom) > 1) {
        atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 1 + mol.getAllConnAtoms_0(atom), 15, 1);
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++)
          atomList[i] = mol.getConnAtom_0(atom, i);
        atomList[mol.getAllConnAtoms_0(atom)] = atom;
        ruleList.add(new ooccs.PlaneRule(atomList, mol));
      }
    }
  }
}
;
ooccs.getFlatFragmentAtoms = function getFlatFragmentAtoms(fragmentAtom, isFlatBond, mol){
  var candidateAtom, candidateBond, connAtom, current, highest, i, i0, isFragmentMember, j;
  isFragmentMember = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  isFragmentMember[fragmentAtom[0]] = true;
  current = 0;
  highest = 0;
  while (current <= highest && mol.getAtomPi_0(fragmentAtom[current]) < 2) {
    for (i0 = 0; i0 < mol.getConnAtoms_0(fragmentAtom[current]); i0++) {
      candidateAtom = mol.getConnAtom_0(fragmentAtom[current], i0);
      candidateBond = mol.getConnBond_0(fragmentAtom[current], i0);
      if (isFlatBond[candidateBond]) {
        if (!isFragmentMember[candidateAtom]) {
          fragmentAtom[++highest] = candidateAtom;
          isFragmentMember[candidateAtom] = true;
        }
        isFlatBond[candidateBond] = false;
      }
    }
    current++;
  }
  for (i = highest; i >= 0; i--) {
    if (mol.getAtomicNo_0(fragmentAtom[i]) <= 8) {
      for (j = 0; j < mol.getAllConnAtoms_0(fragmentAtom[i]); j++) {
        connAtom = mol.getConnAtom_0(fragmentAtom[i], j);
        if (!isFragmentMember[connAtom] && mol.getConnBondOrder_0(fragmentAtom[i], j) != 0) {
          fragmentAtom[++highest] = connAtom;
          isFragmentMember[connAtom] = true;
        }
      }
    }
  }
  return highest + 1;
}
;
defineClass(346, 48, {1:1, 48:1}, ooccs.PlaneRule);
_.$init_742 = function $init_742(){
}
;
_.addStrain = function addStrain_1(conformer, atomStrain){
  var cog, coords, distance, i, n, panalty, totalStrain;
  cog = new carc2.Coordinates_0;
  n = new carc2.Coordinates_0;
  coords = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [this.mAtom.length, 3], 2);
  ooccs.calculateNearestPlane(conformer, this.mAtom, cog, n, coords);
  totalStrain = 0;
  for (i = 0; i < this.mAtom.length; i++) {
    distance = -(n.x_0 * coords[i][0] + n.y_0 * coords[i][1] + n.z_0 * coords[i][2]);
    panalty = 20 * distance * distance;
    if (jsNotEquals(atomStrain, null))
      atomStrain[this.mAtom[i]] += panalty;
    totalStrain += panalty;
  }
  return totalStrain;
}
;
_.apply_3 = function apply_9(conformer, cycleFactor){
  var cog, coords, distance, i, n;
  cog = new carc2.Coordinates_0;
  n = new carc2.Coordinates_0;
  coords = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [this.mPlaneAtom.length, 3], 2);
  ooccs.calculateNearestPlane(conformer, this.mPlaneAtom, cog, n, coords);
  for (i = 0; i < this.mAtom.length; i++) {
    distance = -(n.x_0 * (conformer.getX(this.mAtom[i]) - cog.x_0) + n.y_0 * (conformer.getY(this.mAtom[i]) - cog.y_0) + n.z_0 * (conformer.getZ(this.mAtom[i]) - cog.z_0));
    this.moveGroup(conformer, this.mAtom[i], this.mAtom, 0.5 * distance * cycleFactor * n.x_0, 0.5 * distance * cycleFactor * n.y_0, 0.5 * distance * cycleFactor * n.z_0);
  }
  return true;
}
;
_.getRuleType = function getRuleType_1(){
  return 1;
}
;
_.toString_0 = function toString_73(){
  var sb;
  sb = new jl.StringBuilder_1('plane rule:');
  getClassPrototype(48).addAtomList.call(this, sb);
  return sb.toString_0();
}
;
cggl.Lorg_openmolecules_chem_conf_so_PlaneRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'PlaneRule', 346, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_SelfOrganizedConformer = function $clinit_SelfOrganizedConformer(){
  ooccs.$clinit_SelfOrganizedConformer = emptyMethod;
  carcc.$clinit_Conformer();
}
;
ooccs.SelfOrganizedConformer = function SelfOrganizedConformer(mol){
  ooccs.$clinit_SelfOrganizedConformer();
  carcc.Conformer.call(this, mol);
  this.$init_743();
  this.mTotalStrain = NaN;
}
;
ooccs.SelfOrganizedConformer_0 = function SelfOrganizedConformer_0(conformer){
  ooccs.$clinit_SelfOrganizedConformer();
  carcc.Conformer_0.call(this, conformer);
  this.$init_743();
  this.copyStrainFrom(conformer);
}
;
defineClass(67, 71, {71:1, 10:1, 1:1, 67:1}, ooccs.SelfOrganizedConformer, ooccs.SelfOrganizedConformer_0);
_.$init_743 = function $init_743(){
}
;
_.calculateStrain = function calculateStrain(ruleList){
  var atom, rule, rule$iterator;
  if (jsNotEquals(this.mAtomStrain, null))
    return;
  this.mAtomStrain = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.getMolecule_0().getAllAtoms_0(), 15, 1);
  this.mRuleStrain = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, (ooccs.$clinit_ConformationRule() , ooccs.RULE_NAME).length, 15, 1);
  for (rule$iterator = ruleList.iterator(); rule$iterator.hasNext_0();) {
    rule = castTo(rule$iterator.next_3(), 48);
    if (rule.isEnabled())
      this.mRuleStrain[rule.getRuleType()] += rule.addStrain(this, this.mAtomStrain);
  }
  this.mTotalStrain = 0;
  for (atom = 0; atom < this.getMolecule_0().getAllAtoms_0(); atom++)
    this.mTotalStrain += this.mAtomStrain[atom];
  this.mLikelihood = -1;
}
;
_.copyFrom_1 = function copyFrom_1(conformer){
  getClassPrototype(71).copyFrom_0.call(this, conformer);
  this.copyStrainFrom(conformer);
}
;
_.copyStrainFrom = function copyStrainFrom(conformer){
  this.mTotalStrain = conformer.mTotalStrain;
  this.mLikelihood = conformer.mLikelihood;
  this.mIsUsed = conformer.mIsUsed;
  this.mAtomStrain = jsEquals(conformer.mAtomStrain, null)?null:ju.copyOf_8(conformer.mAtomStrain, conformer.mAtomStrain.length);
  this.mRuleStrain = jsEquals(conformer.mRuleStrain, null)?null:ju.copyOf_8(conformer.mRuleStrain, conformer.mRuleStrain.length);
}
;
_.getAtomStrain = function getAtomStrain(atom){
  return jsEquals(this.mAtomStrain, null)?NaN:this.mAtomStrain[atom];
}
;
_.getLikelihood = function getLikelihood_1(){
  if (this.mLikelihood == -1)
    this.mLikelihood = $wnd.Math.pow(10, -this.mTotalStrain / 1.36);
  return this.mLikelihood;
}
;
_.getRuleStrain_0 = function getRuleStrain_0(rule){
  return jsEquals(this.mRuleStrain, null)?NaN:this.mRuleStrain[rule];
}
;
_.getTotalStrain = function getTotalStrain(){
  return this.mTotalStrain;
}
;
_.invalidateStrain = function invalidateStrain(){
  this.mTotalStrain = 1.7976931348623157E308;
  this.mAtomStrain = null;
  this.mRuleStrain = null;
}
;
_.isUsed = function isUsed_1(){
  return this.mIsUsed;
}
;
_.isWorseThan = function isWorseThan(conformer){
  return this.mTotalStrain > conformer.mTotalStrain;
}
;
_.setUsed_0 = function setUsed_0(isUsed){
  this.mIsUsed = isUsed;
}
;
_.mIsUsed = false;
_.mLikelihood = 0;
_.mTotalStrain = 0;
ooccs.STRAIN_FOR_LIKELIHOOD_FACTOR_10 = 1.36;
cggl.Lorg_openmolecules_chem_conf_so_SelfOrganizedConformer_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'SelfOrganizedConformer', 67, cggl.Lcom_actelion_research_chem_conf_Conformer_2_classLit);
ooccs.$clinit_StraightLineRule = function $clinit_StraightLineRule(){
  ooccs.$clinit_StraightLineRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.StraightLineRule = function StraightLineRule(atom){
  ooccs.ConformationRule.call(this, atom);
  this.$init_744();
}
;
ooccs.calculateRules_2 = function calculateRules_2(ruleList, mol){
  ooccs.$clinit_StraightLineRule();
  var atom, atomHandled, atomList, i;
  atomHandled = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (!atomHandled[atom] && mol.getAtomPi_0(atom) == 2 && mol.getAtomicNo_0(atom) <= 8) {
      atomList = ooccs.getLineFragmentAtoms(atom, mol);
      for (i = 0; i < atomList.length; i++)
        atomHandled[atomList[i]] = true;
      if (atomList[0] != atomList[atomList.length - 1])
        ruleList.add(new ooccs.StraightLineRule(atomList));
    }
  }
}
;
ooccs.getLineFragmentAtoms = function getLineFragmentAtoms(seedAtom, mol){
  var atomList, backAtom, count, firstAtom, headAtom, i, rearAtom, tempAtom;
  firstAtom = seedAtom;
  backAtom = mol.getConnAtom_0(firstAtom, 0);
  while (mol.getAllConnAtoms_0(firstAtom) != 1 && mol.getAtomPi_0(firstAtom) == 2) {
    tempAtom = backAtom;
    backAtom = firstAtom;
    firstAtom = mol.getConnAtom_0(firstAtom, 0) == tempAtom?mol.getConnAtom_0(firstAtom, 1):mol.getConnAtom_0(firstAtom, 0);
    if (firstAtom == seedAtom)
      break;
  }
  rearAtom = firstAtom;
  headAtom = backAtom;
  count = 2;
  while (mol.getAllConnAtoms_0(headAtom) != 1 && mol.getAtomPi_0(headAtom) == 2) {
    tempAtom = rearAtom;
    rearAtom = headAtom;
    headAtom = mol.getConnAtom_0(headAtom, 0) == tempAtom?mol.getConnAtom_0(headAtom, 1):mol.getConnAtom_0(headAtom, 0);
    count++;
    if (headAtom == firstAtom)
      break;
  }
  atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count, 15, 1);
  atomList[0] = firstAtom;
  atomList[1] = backAtom;
  for (i = 2; i < count; i++)
    atomList[i] = mol.getConnAtom_0(atomList[i - 1], 0) == atomList[i - 2]?mol.getConnAtom_0(atomList[i - 1], 1):mol.getConnAtom_0(atomList[i - 1], 0);
  return atomList;
}
;
defineClass(648, 48, {1:1, 48:1}, ooccs.StraightLineRule);
_.$init_744 = function $init_744(){
}
;
_.addStrain = function addStrain_2(conformer, atomStrain){
  var A, S, U, cog, dx, dy, dz, i, i0, i1, i2, i3, i4, j, j0, k, lambda, maxIndex, n, squareMatrix, strain, svd, totalStrain;
  cog = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i0 = 0; i0 < this.mAtom.length; i0++) {
    cog[0] += conformer.getX(this.mAtom[i0]);
    cog[1] += conformer.getY(this.mAtom[i0]);
    cog[2] += conformer.getZ(this.mAtom[i0]);
  }
  for (j0 = 0; j0 < 3; j0++)
    cog[j0] /= this.mAtom.length;
  A = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [this.mAtom.length, 3], 2);
  for (i1 = 0; i1 < this.mAtom.length; i1++) {
    A[i1][0] = conformer.getX(this.mAtom[i1]) - cog[0];
    A[i1][1] = conformer.getY(this.mAtom[i1]) - cog[1];
    A[i1][2] = conformer.getZ(this.mAtom[i1]) - cog[2];
  }
  squareMatrix = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [3, 3], 2);
  for (i2 = 0; i2 < this.mAtom.length; i2++)
    for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
        squareMatrix[j][k] += A[i2][j] * A[i2][k];
  svd = new carc.SingularValueDecomposition(squareMatrix, null, null);
  S = svd.getSingularValues();
  maxIndex = 0;
  for (i3 = 1; i3 < 3; i3++)
    if (S[i3] > S[maxIndex])
      maxIndex = i3;
  U = svd.getU();
  n = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i4 = 0; i4 < 3; i4++)
    n[i4] = U[i4][maxIndex];
  totalStrain = 0;
  for (i = 0; i < this.mAtom.length; i++) {
    lambda = n[0] * A[i][0] + n[1] * A[i][1] + n[2] * A[i][2];
    dx = lambda * n[0] - A[i][0];
    dy = lambda * n[1] - A[i][1];
    dz = lambda * n[2] - A[i][2];
    strain = 10 * dx * dx + dy * dy + dz * dz;
    if (jsNotEquals(atomStrain, null))
      atomStrain[this.mAtom[i]] += strain;
    totalStrain += strain;
  }
  return totalStrain;
}
;
_.apply_3 = function apply_10(conformer, cycleFactor){
  var A, S, U, cog, i, i0, i1, i2, i3, i4, i5, i6, isInconsistent, isIncreasing, j, j0, k, lambda, maxIndex, n, squareMatrix, svd;
  cog = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i0 = 0; i0 < this.mAtom.length; i0++) {
    cog[0] += conformer.getX(this.mAtom[i0]);
    cog[1] += conformer.getY(this.mAtom[i0]);
    cog[2] += conformer.getZ(this.mAtom[i0]);
  }
  for (j0 = 0; j0 < 3; j0++)
    cog[j0] /= this.mAtom.length;
  A = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [this.mAtom.length, 3], 2);
  for (i1 = 0; i1 < this.mAtom.length; i1++) {
    A[i1][0] = conformer.getX(this.mAtom[i1]) - cog[0];
    A[i1][1] = conformer.getY(this.mAtom[i1]) - cog[1];
    A[i1][2] = conformer.getZ(this.mAtom[i1]) - cog[2];
  }
  squareMatrix = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [3, 3], 2);
  for (i2 = 0; i2 < this.mAtom.length; i2++)
    for (j = 0; j < 3; j++)
      for (k = 0; k < 3; k++)
        squareMatrix[j][k] += A[i2][j] * A[i2][k];
  svd = new carc.SingularValueDecomposition(squareMatrix, null, null);
  S = svd.getSingularValues();
  maxIndex = 0;
  for (i3 = 1; i3 < 3; i3++)
    if (S[i3] > S[maxIndex])
      maxIndex = i3;
  U = svd.getU();
  n = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  for (i4 = 0; i4 < 3; i4++)
    n[i4] = U[i4][maxIndex];
  lambda = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, this.mAtom.length, 15, 1);
  for (i5 = 0; i5 < this.mAtom.length; i5++)
    lambda[i5] = n[0] * A[i5][0] + n[1] * A[i5][1] + n[2] * A[i5][2];
  if (cycleFactor == 1) {
    isInconsistent = false;
    isIncreasing = lambda[0] < lambda[1];
    for (i6 = 2; i6 < this.mAtom.length; i6++) {
      if (isIncreasing != lambda[i6 - 1] < lambda[i6]) {
        isInconsistent = true;
        break;
      }
    }
    if (isInconsistent)
      return false;
  }
  for (i = 0; i < this.mAtom.length; i++) {
    conformer.getCoordinates(this.mAtom[i]).add_2(cycleFactor * (lambda[i] * n[0] - A[i][0]), cycleFactor * (lambda[i] * n[1] - A[i][1]), cycleFactor * (lambda[i] * n[2] - A[i][2]));
  }
  return true;
}
;
_.getRuleType = function getRuleType_2(){
  return 2;
}
;
_.toString_0 = function toString_74(){
  var sb;
  sb = new jl.StringBuilder_1('line rule:');
  getClassPrototype(48).addAtomList.call(this, sb);
  return sb.toString_0();
}
;
cggl.Lorg_openmolecules_chem_conf_so_StraightLineRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'StraightLineRule', 648, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_TetrahedralStereoRule = function $clinit_TetrahedralStereoRule(){
  ooccs.$clinit_TetrahedralStereoRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.TetrahedralStereoRule = function TetrahedralStereoRule(mol, neighbourAtom, neighbourBond){
  ooccs.ConformationRule.call(this, neighbourAtom);
  this.$init_745();
  this.calculateRotatableAtoms(mol, neighbourAtom, neighbourBond);
}
;
ooccs.calculateRules_3 = function calculateRules_3(ruleList, mol){
  ooccs.$clinit_TetrahedralStereoRule();
  var atom, atomList, bondList, connAtom, connBond, i, index_0, j, parity, temp;
  for (atom = 0; atom < mol.getAtoms_0(); atom++) {
    if (mol.getAllConnAtoms_0(atom) >= 3) {
      parity = mol.getAtomParity_0(atom);
      if ((parity == 1 || parity == 2) && !mol.isCentralAlleneAtom(atom)) {
        atomList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 5, 15, 1);
        bondList = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
        for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
          connAtom = mol.getConnAtom_0(atom, i);
          connBond = mol.getConnBond_0(atom, i);
          index_0 = 0;
          while (index_0 < i && connAtom > atomList[index_0])
            index_0++;
          for (j = i - 1; j >= index_0; j--) {
            atomList[j + 1] = atomList[j];
            bondList[j + 1] = bondList[j];
          }
          atomList[index_0] = connAtom;
          bondList[index_0] = connBond;
        }
        if (mol.getAllConnAtoms_0(atom) == 3) {
          atomList[3] = -1;
          bondList[3] = -1;
        }
        atomList[4] = atom;
        if (parity == 1) {
          temp = atomList[1];
          atomList[1] = atomList[0];
          atomList[0] = temp;
          temp = bondList[1];
          bondList[1] = bondList[0];
          bondList[0] = temp;
        }
        ruleList.add(new ooccs.TetrahedralStereoRule(mol, atomList, bondList));
      }
    }
  }
}
;
defineClass(649, 48, {1:1, 48:1}, ooccs.TetrahedralStereoRule);
_.$init_745 = function $init_745(){
}
;
_.addStrain = function addStrain_3(conformer, atomStrain){
  var i, n, panalty, totalStrain, wrongCount;
  totalStrain = 0;
  n = this.getPlaneVector(conformer);
  wrongCount = 0;
  if (this.mAtom[3] == -1) {
    if (!this.isOnSameSide(conformer, n, this.mAtom[4], this.mAtom[2]))
      wrongCount++;
  }
   else {
    if (!this.isOnSameSide(conformer, n, this.mAtom[4], this.mAtom[2]))
      wrongCount++;
    if (this.isOnSameSide(conformer, n, this.mAtom[4], this.mAtom[3]))
      wrongCount++;
  }
  if (wrongCount != 0) {
    for (i = 0; i < this.mAtom.length; i++) {
      if (this.mAtom[i] != -1) {
        panalty = 0.68 * wrongCount;
        if (jsNotEquals(atomStrain, null))
          atomStrain[this.mAtom[i]] += panalty;
        totalStrain += panalty;
      }
    }
  }
  return totalStrain;
}
;
_.apply_3 = function apply_11(conformer, cycleFactor){
  var atom, atom$array, atom$index, atom$max, invert, n, rotationAxis;
  n = this.getPlaneVector(conformer);
  invert = this.mAtom[3] == -1 && !this.isOnSameSide(conformer, n, this.mAtom[4], this.mAtom[2]) || this.mAtom[3] != -1 && !this.isOnSameSide(conformer, n, this.mAtom[4], this.mAtom[2]) && this.isOnSameSide(conformer, n, this.mAtom[4], this.mAtom[3]);
  if (!invert)
    return false;
  rotationAxis = this.calculateRotationAxis(conformer);
  for (atom$array = this.mRotatableAtom , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    ooccs.rotateAtom(conformer, atom, conformer.getCoordinates(this.mAtom[4]), rotationAxis, 3.141592653589793);
  }
  return true;
}
;
_.calculateRotatableAtoms = function calculateRotatableAtoms(mol, neighbourAtom, neighbourBond){
  var a, b, b$array, b$index, b$max, f, f$array, f$index, f$max, f0, fragmentCount, fragmentNo, fragmentSize, i, i0, i1, i2, i3, i4, index_0, isNeighbourFragment, isRotatableAtom, isSmallerFragment, j, k, k$array, k$array0, k$array1, k$array2, k$index, k$index0, k$index1, k$index2, k$max, k$max0, k$max1, k$max2, lastSmallestFragmentIndex, neglectBond, neighbourFragmentBondCount, neighbourFragmentCount, neighbourFragmentNo, neighbourFragmentSize, neighbours, remainingNeighboursToRotate, rotatableAtomCount, rotatableIndex, smallestFragmentIndex, smallestFragmentSize, staticIndex, staticNeighbourCount, stereoCenter;
  stereoCenter = neighbourAtom[4];
  neighbours = neighbourAtom[3] == -1?3:4;
  fragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 15, 1);
  neglectBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 16, 1);
  for (i0 = 0; i0 < neighbours; i0++)
    neglectBond[neighbourBond[i0]] = true;
  fragmentCount = mol.getFragmentNumbers_1(fragmentNo, neglectBond, false);
  fragmentSize = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, fragmentCount, 15, 1);
  for (f$array = fragmentNo , f$index = 0 , f$max = f$array.length; f$index < f$max; ++f$index) {
    f0 = f$array[f$index];
    fragmentSize[f0]++;
  }
  neighbourFragmentCount = 0;
  isNeighbourFragment = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, fragmentCount, 16, 1);
  for (i1 = 0; i1 < neighbours; i1++) {
    f0 = fragmentNo[neighbourAtom[i1]];
    if (!isNeighbourFragment[f0]) {
      isNeighbourFragment[f0] = true;
      neighbourFragmentCount++;
    }
  }
  neighbourFragmentNo = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, neighbourFragmentCount, 15, 1);
  neighbourFragmentSize = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, neighbourFragmentCount, 15, 1);
  neighbourFragmentBondCount = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, neighbourFragmentCount, 15, 1);
  index_0 = 0;
  for (f = 0; f < fragmentCount; f++) {
    if (isNeighbourFragment[f]) {
      neighbourFragmentNo[index_0] = f;
      neighbourFragmentSize[index_0] = fragmentSize[f];
      for (i2 = 0; i2 < neighbours; i2++)
        if (f == fragmentNo[neighbourAtom[i2]])
          neighbourFragmentBondCount[index_0]++;
      index_0++;
    }
  }
  isRotatableAtom = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllAtoms_0(), 16, 1);
  rotatableAtomCount = 0;
  staticNeighbourCount = 2;
  if (neighbourFragmentCount == neighbours) {
    lastSmallestFragmentIndex = -1;
    for (i2 = 0; i2 < neighbours - 2; i2++) {
      smallestFragmentIndex = -1;
      smallestFragmentSize = 2147483647;
      for (j = 0; j < neighbourFragmentCount; j++) {
        if (j != lastSmallestFragmentIndex && neighbourFragmentSize[j] < smallestFragmentSize) {
          smallestFragmentIndex = j;
          smallestFragmentSize = neighbourFragmentSize[j];
        }
      }
      for (a = 0; a < mol.getAllAtoms_0(); a++) {
        if (fragmentNo[a] == neighbourFragmentNo[smallestFragmentIndex]) {
          isRotatableAtom[a] = true;
          rotatableAtomCount++;
        }
      }
      lastSmallestFragmentIndex = smallestFragmentIndex;
    }
  }
   else {
    for (i2 = 0; i2 < neighbourFragmentNo.length; i2++) {
      if (neighbourFragmentBondCount[i2] == 1 && neighbours == 3) {
        isSmallerFragment = 2 * neighbourFragmentSize[i2] < mol.getAllAtoms_0();
        if (!isSmallerFragment)
          staticNeighbourCount = 1;
        for (a = 0; a < mol.getAllAtoms_0(); a++) {
          if (a != stereoCenter) {
            if (fragmentNo[a] == neighbourFragmentNo[i2] == isSmallerFragment) {
              isRotatableAtom[a] = true;
              rotatableAtomCount++;
            }
          }
        }
        break;
      }
      if (neighbourFragmentBondCount[i2] == 2 && neighbours == 4) {
        isSmallerFragment = 2 * neighbourFragmentSize[i2] < mol.getAllAtoms_0();
        for (a = 0; a < mol.getAllAtoms_0(); a++) {
          if (a != stereoCenter) {
            if (fragmentNo[a] == neighbourFragmentNo[i2] == isSmallerFragment) {
              isRotatableAtom[a] = true;
              rotatableAtomCount++;
            }
          }
        }
        break;
      }
    }
  }
  if (rotatableAtomCount == 0) {
    for (i2 = 0; i2 < neighbourFragmentNo.length; i2++) {
      if (neighbourFragmentBondCount[i2] == 1) {
        for (a = 0; a < mol.getAllAtoms_0(); a++) {
          if (fragmentNo[a] == neighbourFragmentNo[i2]) {
            isRotatableAtom[a] = true;
            rotatableAtomCount++;
          }
        }
        break;
      }
    }
    remainingNeighboursToRotate = neighbours - 2 - (rotatableAtomCount == 0?0:1);
    for (i3 = 0; i3 < remainingNeighboursToRotate; i3++) {
      for (j = 0; j < neighbours; j++) {
        if (!isRotatableAtom[neighbourAtom[j]]) {
          isRotatableAtom[neighbourAtom[j]] = true;
          rotatableAtomCount++;
          break;
        }
      }
    }
  }
  index_0 = 0;
  this.mRotatableAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, rotatableAtomCount, 15, 1);
  for (i4 = 0; i4 < isRotatableAtom.length; i4++)
    if (isRotatableAtom[i4])
      this.mRotatableAtom[index_0++] = i4;
  staticIndex = 0;
  rotatableIndex = 0;
  this.mStaticNeighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, staticNeighbourCount, 15, 1);
  this.mRotatableNeighbour = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, neighbours - staticNeighbourCount, 15, 1);
  for (i = 0; i < neighbours; i++)
    if (isRotatableAtom[neighbourAtom[i]]) {
      if (rotatableIndex >= this.mRotatableNeighbour.length) {
        (jl.$clinit_System() , jl.out_0).println_0('##### Out of bounds exception:' + (new carc2.MolfileCreator(mol)).getMolfile());
        (jl.$clinit_System() , jl.out_0).print_1('neighbours:' + neighbours + ' ');
        (jl.$clinit_System() , jl.out_0).print_1('neighbourAtom:');
        for (k$array0 = neighbourAtom , k$index0 = 0 , k$max0 = k$array0.length; k$index0 < k$max0; ++k$index0) {
          k = k$array0[k$index0];
          (jl.$clinit_System() , jl.out_0).print_1(' ' + k);
        }
        (jl.$clinit_System() , jl.out_0).println();
        (jl.$clinit_System() , jl.out_0).print_1('neighbourBond:');
        for (k$array1 = neighbourBond , k$index1 = 0 , k$max1 = k$array1.length; k$index1 < k$max1; ++k$index1) {
          k = k$array1[k$index1];
          (jl.$clinit_System() , jl.out_0).print_1(' ' + k);
        }
        (jl.$clinit_System() , jl.out_0).println();
        (jl.$clinit_System() , jl.out_0).print_1('fragmentNo:');
        for (k$array2 = fragmentNo , k$index2 = 0 , k$max2 = k$array2.length; k$index2 < k$max2; ++k$index2) {
          k = k$array2[k$index2];
          (jl.$clinit_System() , jl.out_0).print_1(' ' + k);
        }
        (jl.$clinit_System() , jl.out_0).println();
        (jl.$clinit_System() , jl.out_0).print_1('isNeighbourFragment:');
        for (k$array = isNeighbourFragment , k$index = 0 , k$max = k$array.length; k$index < k$max; ++k$index) {
          k = k$array[k$index];
          (jl.$clinit_System() , jl.out_0).print_1(' ' + k);
        }
        (jl.$clinit_System() , jl.out_0).println();
        (jl.$clinit_System() , jl.out_0).print_1('isRotatableAtom:');
        for (b$array = isRotatableAtom , b$index = 0 , b$max = b$array.length; b$index < b$max; ++b$index) {
          b = b$array[b$index];
          (jl.$clinit_System() , jl.out_0).print_1(' ' + b);
        }
        (jl.$clinit_System() , jl.out_0).println();
      }
      this.mRotatableNeighbour[rotatableIndex++] = neighbourAtom[i];
    }
     else 
      this.mStaticNeighbour[staticIndex++] = neighbourAtom[i];
}
;
_.calculateRotationAxis = function calculateRotationAxis(conformer){
  var atom, atom$array, atom$index, atom$max, axis_0, neighbour;
  axis_0 = new carc2.Coordinates_0;
  neighbour = this.mStaticNeighbour.length == 2?this.mStaticNeighbour:this.mRotatableNeighbour;
  for (atom$array = neighbour , atom$index = 0 , atom$max = atom$array.length; atom$index < atom$max; ++atom$index) {
    atom = atom$array[atom$index];
    axis_0.add_3(conformer.getCoordinates(atom));
  }
  axis_0.scale_2(0.5);
  axis_0.sub_0(conformer.getCoordinates(this.mAtom[4])).unit();
  return axis_0;
}
;
_.getPlaneVector = function getPlaneVector(conformer){
  var coords, i, v;
  coords = initMultidimensionalArray(cggl.D_classLit, [{4:1, 1:1, 7:1}, {13:1, 4:1, 1:1}], [13, 5], 15, [2, 3], 2);
  for (i = 0; i < 2; i++) {
    coords[i][0] = conformer.getX(this.mAtom[i]) - conformer.getX(this.mAtom[4]);
    coords[i][1] = conformer.getY(this.mAtom[i]) - conformer.getY(this.mAtom[4]);
    coords[i][2] = conformer.getZ(this.mAtom[i]) - conformer.getZ(this.mAtom[4]);
  }
  v = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  v[0] = coords[0][1] * coords[1][2] - coords[0][2] * coords[1][1];
  v[1] = coords[0][2] * coords[1][0] - coords[0][0] * coords[1][2];
  v[2] = coords[0][0] * coords[1][1] - coords[0][1] * coords[1][0];
  return v;
}
;
_.getRuleType = function getRuleType_3(){
  return 4;
}
;
_.isOnSameSide = function isOnSameSide(conformer, n, atom0, atom1){
  var v;
  v = initUnidimensionalArray(cggl.D_classLit, {13:1, 4:1, 1:1}, 5, 3, 15, 1);
  v[0] = conformer.getX(atom1) - conformer.getX(atom0);
  v[1] = conformer.getY(atom1) - conformer.getY(atom0);
  v[2] = conformer.getZ(atom1) - conformer.getZ(atom0);
  return v[0] * n[0] + v[1] * n[1] + v[2] * n[2] > 0;
}
;
_.toString_0 = function toString_75(){
  var ra, ra$array, ra$index, ra$max, sb;
  sb = new jl.StringBuilder_1('stereo rule:');
  getClassPrototype(48).addAtomList.call(this, sb);
  sb.append_9(' rotatable:');
  for (ra$array = this.mRotatableAtom , ra$index = 0 , ra$max = ra$array.length; ra$index < ra$max; ++ra$index) {
    ra = ra$array[ra$index];
    sb.append_9(ra + ' ');
  }
  return sb.toString_0();
}
;
cggl.Lorg_openmolecules_chem_conf_so_TetrahedralStereoRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'TetrahedralStereoRule', 649, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
ooccs.$clinit_TorsionRule = function $clinit_TorsionRule(){
  ooccs.$clinit_TorsionRule = emptyMethod;
  ooccs.$clinit_ConformationRule();
}
;
ooccs.TorsionRule = function TorsionRule(torsion, frequency, range, torsionAtom, atomToRotate, smallerSubstituentIndex){
  ooccs.ConformationRule.call(this, torsionAtom);
  this.$init_746();
  this.mTorsion = torsion;
  this.mFrequency = frequency;
  this.mRange = range;
  this.mAtomToRotate = atomToRotate;
  this.mSmallerSubstituentIndex = smallerSubstituentIndex;
}
;
ooccs.addDegree60Rule = function addDegree60Rule(mol, bondAtom, rearAtom, hCount, ruleList){
  var atomToRotate, connAtom, frequency, hIndex, i, range, torsion, torsionAtom;
  atomToRotate = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, hCount, 15, 1);
  torsionAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
  torsionAtom[0] = mol.getConnAtom_0(rearAtom, mol.getConnAtom_0(rearAtom, 0) == bondAtom?1:0);
  torsionAtom[1] = rearAtom;
  torsionAtom[2] = bondAtom;
  torsionAtom[3] = mol.getConnAtom_0(bondAtom, mol.getConnAtom_0(bondAtom, 0) == rearAtom?1:0);
  hIndex = 0;
  for (i = 0; i < mol.getAllConnAtoms_0(bondAtom); i++) {
    connAtom = mol.getConnAtom_0(bondAtom, i);
    if (connAtom != rearAtom)
      atomToRotate[hIndex++] = connAtom;
  }
  torsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
  frequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, 3, 15, 1);
  range = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [3, 2], 2);
  torsion[0] = 60;
  torsion[1] = 180;
  torsion[2] = 300;
  frequency[0] = 33;
  frequency[1] = 33;
  frequency[2] = 33;
  range[0][0] = 45;
  range[0][1] = 75;
  range[1][0] = 165;
  range[1][1] = 195;
  range[2][0] = 285;
  range[2][1] = 315;
  ruleList.add(new ooccs.TorsionRule(torsion, frequency, range, torsionAtom, atomToRotate, 1));
}
;
ooccs.addHeteroPiRule = function addHeteroPiRule(mol, bondAtom, piAtom, hCount, ruleList){
  var atomToRotate, connAtom, frequency, hIndex, j, j0, piNeighbour, range, stateCount, torsion, torsionAtom;
  piNeighbour = -1;
  for (j0 = 0; j0 < mol.getConnAtoms_0(piAtom); j0++)
    if (mol.getConnBondOrder_0(piAtom, j0) == 2)
      piNeighbour = mol.getConnAtom_0(piAtom, j0);
  atomToRotate = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, hCount, 15, 1);
  torsionAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
  torsionAtom[0] = piNeighbour;
  torsionAtom[1] = piAtom;
  torsionAtom[2] = bondAtom;
  hIndex = 0;
  for (j = 0; j < mol.getAllConnAtoms_0(bondAtom); j++) {
    connAtom = mol.getConnAtom_0(bondAtom, j);
    if (mol.getAtomicNo_0(connAtom) == 1) {
      if (hIndex == 0)
        torsionAtom[3] = connAtom;
      atomToRotate[hIndex++] = connAtom;
    }
  }
  stateCount = !mol.isAromaticAtom_1(piAtom) && hCount == 1?1:2;
  torsion = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, stateCount, 15, 1);
  frequency = initUnidimensionalArray(cggl.S_classLit, {4:1, 1:1, 16:1}, 5, stateCount, 15, 1);
  range = initMultidimensionalArray(cggl.S_classLit, [{4:1, 1:1, 7:1, 49:1}, {4:1, 1:1, 16:1}], [16, 5], 15, [stateCount, 2], 2);
  if (!mol.isAromaticAtom_1(piAtom) && hCount == 1) {
    torsion[0] = 0;
    frequency[0] = 100;
    range[0][0] = -15;
    range[0][1] = 15;
  }
   else {
    torsion[0] = 0;
    torsion[1] = 180;
    frequency[0] = 50;
    frequency[1] = 50;
    range[0][0] = -15;
    range[0][1] = 15;
    range[1][0] = 165;
    range[1][1] = 195;
  }
  ruleList.add(new ooccs.TorsionRule(torsion, frequency, range, torsionAtom, atomToRotate, 1));
}
;
ooccs.calculateRules_4 = function calculateRules_4(ruleList, mol){
  ooccs.$clinit_TorsionRule();
  var a, atomToRotate, atomicNo, bond, bond0, bondAtom, count, frequency, hCount, i, index_0, isMemberAtom, isRotatableBond, nonHNeighbours, prediction, range, rearAtom, smallerSubstituentIndex, torsion, torsionAtom, torsionDetail, torsionID;
  carcc.initialize_0(1);
  isRotatableBond = initUnidimensionalArray(cggl.Z_classLit, {12:1, 4:1, 1:1}, 5, mol.getAllBonds_0(), 16, 1);
  carcc.findRotatableBonds(mol, true, isRotatableBond);
  for (bond0 = 0; bond0 < mol.getBonds_0(); bond0++) {
    if (isRotatableBond[bond0]) {
      torsionAtom = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 4, 15, 1);
      torsionDetail = new carcc.TorsionDetail;
      torsionID = carcc.getTorsionID(mol, bond0, torsionAtom, torsionDetail);
      if (jsNotEquals(torsionID, null) && !ooccs.conflictWithPlaneRules(torsionAtom, ruleList)) {
        torsion = carcc.getTorsions(torsionID);
        frequency = carcc.getTorsionFrequencies(torsionID);
        range = carcc.getTorsionRanges(torsionID);
        if (jsEquals(torsion, null)) {
          prediction = new carcc.TorsionPrediction(mol, torsionAtom);
          torsion = prediction.getTorsions();
          frequency = prediction.getTorsionFrequencies();
          range = prediction.getTorsionRanges();
        }
        if (jsNotEquals(torsion, null)) {
          atomToRotate = null;
          smallerSubstituentIndex = 0;
          if (!mol.isRingBond_0(bond0)) {
            isMemberAtom = initMultidimensionalArray(cggl.Z_classLit, [{4:1, 1:1, 7:1}, {12:1, 4:1, 1:1}], [12, 5], 16, [2, mol.getAllAtoms_0()], 2);
            count = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, 2, 15, 1);
            for (i = 0; i < 2; i++)
              count[i] = mol.getSubstituent_0(torsionDetail.getRearAtom(i), torsionDetail.getCentralAtom(i), isMemberAtom[i], null, null);
            smallerSubstituentIndex = count[0] < count[1]?0:1;
            atomToRotate = initUnidimensionalArray(cggl.I_classLit, {6:1, 4:1, 1:1}, 5, count[smallerSubstituentIndex], 15, 1);
            index_0 = 0;
            for (a = 0; a < mol.getAllAtoms_0(); a++)
              if (isMemberAtom[smallerSubstituentIndex][a])
                atomToRotate[index_0++] = a;
          }
          ruleList.add(new ooccs.TorsionRule(torsion, frequency, range, torsionAtom, atomToRotate, smallerSubstituentIndex));
        }
      }
    }
  }
  for (bond = 0; bond < mol.getBonds_0(); bond++) {
    if (mol.getBondType_0(bond) == 1 && !mol.isRingBond_0(bond)) {
      for (i = 0; i < 2; i++) {
        bondAtom = mol.getBondAtom_0(i, bond);
        nonHNeighbours = mol.getNonHydrogenNeighbourCount_0(bondAtom);
        hCount = mol.getAllConnAtoms_0(bondAtom) - nonHNeighbours;
        if (nonHNeighbours == 1 && hCount != 0) {
          rearAtom = mol.getBondAtom_0(1 - i, bond);
          atomicNo = mol.getAtomicNo_0(bondAtom);
          if (atomicNo > 6 && mol.getAtomPi_0(rearAtom) == 1)
            ooccs.addHeteroPiRule(mol, bondAtom, rearAtom, hCount, ruleList);
          else if (mol.getAtomPi_0(rearAtom) != 2 && mol.getAllConnAtoms_0(rearAtom) > 1)
            ooccs.addDegree60Rule(mol, bondAtom, rearAtom, hCount, ruleList);
          break;
        }
      }
    }
  }
}
;
ooccs.conflictWithPlaneRules = function conflictWithPlaneRules(torsionAtom, ruleList){
  var found, pa, pa$array, pa$index, pa$max, planeAtom, rule, rule$iterator, ta, ta$array, ta$index, ta$max;
  for (rule$iterator = ruleList.iterator(); rule$iterator.hasNext_0();) {
    rule = castTo(rule$iterator.next_3(), 48);
    if (rule.getRuleType() == 1) {
      planeAtom = rule.getAtomList_1();
      for (ta$array = torsionAtom , ta$index = 0 , ta$max = ta$array.length; ta$index < ta$max; ++ta$index) {
        ta = ta$array[ta$index];
        if (ta == -1)
          return false;
        found = false;
        for (pa$array = planeAtom , pa$index = 0 , pa$max = pa$array.length; pa$index < pa$max; ++pa$index) {
          pa = pa$array[pa$index];
          if (ta == pa) {
            found = true;
            break;
          }
        }
        if (!found)
          return false;
      }
      return true;
    }
  }
  return false;
}
;
defineClass(284, 48, {1:1, 48:1}, ooccs.TorsionRule);
_.$init_746 = function $init_746(){
}
;
_.addStrain = function addStrain_4(conformer, atomStrain){
  var angle, dif, i, i0, index_0, mol, severity, strain, t, t$array, t$index, t$max, torsion, totalStrain;
  angle = carcc.calculateTorsionExtended_0(conformer, this.mAtom);
  if (isNaN(angle))
    return 0;
  if (angle < 0)
    angle += 2 * 3.141592653589793;
  torsion = 180 * angle / 3.141592653589793;
  index_0 = this.findApplicableTorsionIndex(angle);
  if (index_0 == -1) {
    (jl.$clinit_System() , jl.out_0).print_1('TorsionRule angle: ' + angle + ' torsions:');
    for (t$array = this.mTorsion , t$index = 0 , t$max = t$array.length; t$index < t$max; ++t$index) {
      t = t$array[t$index];
      (jl.$clinit_System() , jl.out_0).print_1(' ' + t);
    }
    (jl.$clinit_System() , jl.out_0).println();
  }
  severity = this.getSeverity(angle, index_0);
  if (severity == 0)
    return 0;
  dif = $wnd.Math.abs(torsion - this.mTorsion[index_0]);
  if (dif > 180)
    dif = 360 - dif;
  if (dif > 60)
    dif = 60;
  mol = conformer.getMolecule_0();
  strain = 3 * severity * dif * dif / 3600;
  totalStrain = 0;
  for (i0 = 0; i0 < mol.getAllConnAtoms_0(this.mAtom[1]); i0++) {
    if (mol.getConnAtom_0(this.mAtom[1], i0) != this.mAtom[2]) {
      if (jsNotEquals(atomStrain, null))
        atomStrain[mol.getConnAtom_0(this.mAtom[1], i0)] += strain;
      totalStrain += strain;
    }
  }
  for (i = 0; i < mol.getAllConnAtoms_0(this.mAtom[2]); i++) {
    if (mol.getConnAtom_0(this.mAtom[2], i) != this.mAtom[1]) {
      if (jsNotEquals(atomStrain, null))
        atomStrain[mol.getConnAtom_0(this.mAtom[2], i)] += strain;
      totalStrain += strain;
    }
  }
  return totalStrain;
}
;
_.apply_3 = function apply_12(conformer, cycleFactor){
  var a, a$array, a$index, a$max, angleCorrection, bond, currentTorsion, factor, firstConn, i, index_0, isFiveMemberedRing, j, k, mol, rotation, secondConn, severity, unit;
  currentTorsion = carcc.calculateTorsionExtended_0(conformer, this.mAtom);
  if (isNaN(currentTorsion))
    return false;
  if (currentTorsion < 0)
    currentTorsion += 2 * 3.141592653589793;
  index_0 = this.findApplicableTorsionIndex(currentTorsion);
  severity = this.getSeverity(currentTorsion, index_0);
  if (severity == 0)
    return false;
  angleCorrection = 3.141592653589793 * this.mTorsion[index_0] / 180 - currentTorsion;
  if ($wnd.Math.abs(angleCorrection) > 3.141592653589793)
    angleCorrection = angleCorrection < 0?2 * 3.141592653589793 + angleCorrection:angleCorrection - 2 * 3.141592653589793;
  if ($wnd.Math.abs(angleCorrection) < 0.001 * 3.141592653589793)
    return false;
  unit = conformer.getCoordinates(this.mAtom[2]).subC(conformer.getCoordinates(this.mAtom[1]));
  unit.unit();
  angleCorrection *= cycleFactor * severity;
  mol = conformer.getMolecule_0();
  if (jsNotEquals(this.mAtomToRotate, null)) {
    rotation = this.mSmallerSubstituentIndex == 0?-angleCorrection:angleCorrection;
    for (a$array = this.mAtomToRotate , a$index = 0 , a$max = a$array.length; a$index < a$max; ++a$index) {
      a = a$array[a$index];
      ooccs.rotateAtom(conformer, a, conformer.getCoordinates(this.mAtom[1]), unit, rotation);
    }
  }
   else {
    bond = mol.getBond_0(this.mAtom[1], this.mAtom[2]);
    isFiveMemberedRing = bond != -1 && mol.getBondRingSize_0(bond) <= 5;
    for (i = 1; i <= 2; i++) {
      factor = (i == 1?-2:2) * mol.getAtomRingBondCount_0(this.mAtom[i]);
      for (j = 0; j < mol.getAllConnAtoms_0(this.mAtom[i]); j++) {
        firstConn = mol.getConnAtom_0(this.mAtom[i], j);
        if (firstConn != this.mAtom[3 - i]) {
          this.rotateGroup(conformer, firstConn, this.mAtom[i], unit, angleCorrection / factor);
          if (!isFiveMemberedRing) {
            for (k = 0; k < mol.getConnAtoms_0(firstConn); k++) {
              secondConn = mol.getConnAtom_0(firstConn, k);
              if (secondConn != firstConn && mol.getAllConnAtoms_0(secondConn) != 1) {
                this.rotateGroup(conformer, secondConn, this.mAtom[i], unit, angleCorrection / (4 * factor));
              }
            }
          }
        }
      }
    }
  }
  return true;
}
;
_.findApplicableTorsionIndex = function findApplicableTorsionIndex(torsion){
  var dif, i, index_0, minDif, t;
  index_0 = -1;
  minDif = 1.7976931348623157E308;
  for (i = 0; i < this.mTorsion.length; i++) {
    t = 3.141592653589793 * this.mTorsion[i] / 180;
    dif = $wnd.Math.abs(torsion - t);
    if (dif > 3.141592653589793)
      dif = 2 * 3.141592653589793 - dif;
    dif /= 10 + $wnd.Math.sqrt(this.mFrequency[i]);
    if (minDif > dif) {
      minDif = dif;
      index_0 = i;
    }
  }
  return index_0;
}
;
_.getRuleType = function getRuleType_4(){
  return 3;
}
;
_.getSeverity = function getSeverity(angle, index_0){
  var dif, range0, range1, torsion;
  range0 = this.mRange[index_0][0] * 3.141592653589793 / 180;
  range1 = this.mRange[index_0][1] * 3.141592653589793 / 180;
  torsion = this.mTorsion[index_0] * 3.141592653589793 / 180;
  if (angle < torsion - 3.141592653589793)
    angle += 2 * 3.141592653589793;
  else if (angle > torsion + 3.141592653589793)
    angle -= 2 * 3.141592653589793;
  dif = (torsion - angle) / (torsion - (angle < torsion?range0:range1));
  if (dif < 1)
    return 0;
  if (dif < 2) {
    dif -= 1;
    return dif * dif;
  }
  return 1;
}
;
_.rotateGroup = function rotateGroup_0(conformer, atom, refAtom, unit, theta){
  var connAtom, i, mol;
  ooccs.rotateAtom(conformer, atom, conformer.getCoordinates(refAtom), unit, theta);
  mol = conformer.getMolecule_0();
  for (i = 0; i < mol.getAllConnAtoms_0(atom); i++) {
    connAtom = mol.getConnAtom_0(atom, i);
    if (mol.getAllConnAtoms_0(connAtom) == 1)
      ooccs.rotateAtom(conformer, connAtom, conformer.getCoordinates(refAtom), unit, theta);
  }
}
;
_.toString_0 = function toString_76(){
  var i, sb;
  sb = new jl.StringBuilder_1('torsion rule:');
  getClassPrototype(48).addAtomList.call(this, sb);
  sb.append_9(' torsions:');
  for (i = 0; i < this.mTorsion.length; i++) {
    if (i != 0)
      sb.append_9(',');
    sb.append_9(this.mTorsion[i] + '(' + this.mFrequency[i] + ')');
  }
  return sb.toString_0();
}
;
_.mSmallerSubstituentIndex = 0;
ooccs.COLLIDING_ATOM_STRAIN = 0.1;
cggl.Lorg_openmolecules_chem_conf_so_TorsionRule_2_classLit = createForClass('org.openmolecules.chem.conf.so', 'TorsionRule', 284, cggl.Lorg_openmolecules_chem_conf_so_ConformationRule_2_classLit);
cggl.Z_classLit = createForPrimitive('boolean', 'Z');
cggl.B_classLit = createForPrimitive('byte', 'B');
cggl.C_classLit = createForPrimitive('char', 'C');
cggl.D_classLit = createForPrimitive('double', 'D');
cggl.F_classLit = createForPrimitive('float', 'F');
cggl.I_classLit = createForPrimitive('int', 'I');
cggl.J_classLit = createForPrimitive('long', 'J');
cggl.S_classLit = createForPrimitive('short', 'S');
cggl.V_classLit = createForPrimitive('void', 'V');
cargc.$clinit_JSCanonizerUtil();
_ = provide('OCL.CanonizerUtil', cargc.JSCanonizerUtil);
_.BACKBONE = cargc.BACKBONE_0;
_.NORMAL = cargc.NORMAL_0;
_.NOSTEREO = cargc.NOSTEREO_0;
_.NOSTEREO_TAUTOMER = cargc.NOSTEREO_TAUTOMER_0;
_.TAUTOMER = cargc.TAUTOMER_0;
_.getIDCode = cargc.getIDCode_4;
cargc.$clinit_JSConformerGenerator();
_ = provide('OCL.ConformerGenerator', cargc.JSConformerGenerator);
_.STRATEGY_ADAPTIVE_RANDOM = cargc.STRATEGY_ADAPTIVE_RANDOM;
_.STRATEGY_LIKELY_RANDOM = cargc.STRATEGY_LIKELY_RANDOM;
_.STRATEGY_LIKELY_SYSTEMATIC = cargc.STRATEGY_LIKELY_SYSTEMATIC;
_.STRATEGY_PURE_RANDOM = cargc.STRATEGY_PURE_RANDOM;
cargc.$clinit_JSDrugScoreCalculator();
_ = provide('OCL.DrugScoreCalculator', cargc.JSDrugScoreCalculator);
_.calculate = cargc.calculate_0;
cargc.$clinit_JSDruglikenessPredictor();
_ = provide('OCL.DruglikenessPredictor', cargc.JSDruglikenessPredictor);
_.DRUGLIKENESS_UNKNOWN = cargc.DRUGLIKENESS_UNKNOWN;
cargc.$clinit_JSForceFieldMMFF94();
_ = provide('OCL.ForceFieldMMFF94', cargc.JSForceFieldMMFF94);
_.MMFF94 = cargc.MMFF94_0;
_.MMFF94S = cargc.MMFF94S_0;
_.MMFF94SPLUS = cargc.MMFF94SPLUS_0;
cargm.$clinit_JSMolecule();
_ = provide('OCL.Molecule', cargm.JSMolecule_0);
_.CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N = cargm.CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N;
_.CANONIZER_CONSIDER_DIASTEREOTOPICITY = cargm.CANONIZER_CONSIDER_DIASTEREOTOPICITY;
_.CANONIZER_CONSIDER_ENANTIOTOPICITY = cargm.CANONIZER_CONSIDER_ENANTIOTOPICITY;
_.CANONIZER_CONSIDER_STEREOHETEROTOPICITY = cargm.CANONIZER_CONSIDER_STEREOHETEROTOPICITY;
_.CANONIZER_COORDS_ARE_3D = cargm.CANONIZER_COORDS_ARE_3D;
_.CANONIZER_CREATE_PSEUDO_STEREO_GROUPS = cargm.CANONIZER_CREATE_PSEUDO_STEREO_GROUPS;
_.CANONIZER_CREATE_SYMMETRY_RANK = cargm.CANONIZER_CREATE_SYMMETRY_RANK;
_.CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS = cargm.CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS;
_.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS = cargm.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS;
_.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS_WITHOUT_RANKING = cargm.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS_WITHOUT_RANKING;
_.CANONIZER_ENCODE_ATOM_SELECTION = cargm.CANONIZER_ENCODE_ATOM_SELECTION;
_.CANONIZER_NEGLECT_ANY_STEREO_INFORMATION = cargm.CANONIZER_NEGLECT_ANY_STEREO_INFORMATION;
_.CANONIZER_TIE_BREAK_FREE_VALENCE_ATOMS = cargm.CANONIZER_TIE_BREAK_FREE_VALENCE_ATOMS;
_.FISCHER_PROJECTION_LIMIT = cargm.FISCHER_PROJECTION_LIMIT_0;
_.FISCHER_PROJECTION_RING_LIMIT = cargm.FISCHER_PROJECTION_RING_LIMIT_0;
_.STEREO_ANGLE_LIMIT = cargm.STEREO_ANGLE_LIMIT_0;
_.VALIDATION_ERRORS_STEREO = cargm.VALIDATION_ERRORS_STEREO_0;
_.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION = cargm.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION_0;
_.VALIDATION_ERROR_ESR_CENTER_UNKNOWN = cargm.VALIDATION_ERROR_ESR_CENTER_UNKNOWN_0;
_.VALIDATION_ERROR_OVER_UNDER_SPECIFIED = cargm.VALIDATION_ERROR_OVER_UNDER_SPECIFIED_0;
_.cAtomCIPParityNone = cargm.cAtomCIPParityNone_0;
_.cAtomCIPParityProblem = cargm.cAtomCIPParityProblem_0;
_.cAtomCIPParityRorM = cargm.cAtomCIPParityRorM_0;
_.cAtomCIPParitySorP = cargm.cAtomCIPParitySorP_0;
_.cAtomColorBlue = cargm.cAtomColorBlue_0;
_.cAtomColorDarkGreen = cargm.cAtomColorDarkGreen_0;
_.cAtomColorDarkRed = cargm.cAtomColorDarkRed_0;
_.cAtomColorGreen = cargm.cAtomColorGreen_0;
_.cAtomColorMagenta = cargm.cAtomColorMagenta_0;
_.cAtomColorNone = cargm.cAtomColorNone_0;
_.cAtomColorOrange = cargm.cAtomColorOrange_0;
_.cAtomColorRed = cargm.cAtomColorRed_0;
_.cAtomLabel = cargm.cAtomLabel_0;
_.cAtomParity1 = cargm.cAtomParity1_0;
_.cAtomParity2 = cargm.cAtomParity2_0;
_.cAtomParityIsPseudo = cargm.cAtomParityIsPseudo_0;
_.cAtomParityNone = cargm.cAtomParityNone_0;
_.cAtomParityUnknown = cargm.cAtomParityUnknown_0;
_.cAtomQFAny = cargm.cAtomQFAny_0;
_.cAtomQFAromState = cargm.cAtomQFAromState_0;
_.cAtomQFAromStateBits = cargm.cAtomQFAromStateBits_0;
_.cAtomQFAromStateShift = cargm.cAtomQFAromStateShift_0;
_.cAtomQFAromatic = cargm.cAtomQFAromatic_0;
_.cAtomQFCharge = cargm.cAtomQFCharge_0;
_.cAtomQFChargeBits = cargm.cAtomQFChargeBits_0;
_.cAtomQFChargeShift = cargm.cAtomQFChargeShift_0;
_.cAtomQFENeighbourBits = cargm.cAtomQFENeighbourBits_0;
_.cAtomQFENeighbourShift = cargm.cAtomQFENeighbourShift_0;
_.cAtomQFENeighbours = cargm.cAtomQFENeighbours_0;
_.cAtomQFExcludeGroup = cargm.cAtomQFExcludeGroup_0;
_.cAtomQFFlatNitrogen = cargm.cAtomQFFlatNitrogen_0;
_.cAtomQFHeteroAromatic = cargm.cAtomQFHeteroAromatic_0;
_.cAtomQFHydrogen = cargm.cAtomQFHydrogen_0;
_.cAtomQFHydrogenBits = cargm.cAtomQFHydrogenBits_0;
_.cAtomQFHydrogenShift = cargm.cAtomQFHydrogenShift_0;
_.cAtomQFIsNotStereo = cargm.cAtomQFIsNotStereo_0;
_.cAtomQFIsStereo = cargm.cAtomQFIsStereo_0;
_.cAtomQFMatchStereo = cargm.cAtomQFMatchStereo_0;
_.cAtomQFMoreNeighbours = cargm.cAtomQFMoreNeighbours_0;
_.cAtomQFNarrowing = cargm.cAtomQFNarrowing_0;
_.cAtomQFNeighbourBits = cargm.cAtomQFNeighbourBits_0;
_.cAtomQFNeighbourShift = cargm.cAtomQFNeighbourShift_0;
_.cAtomQFNeighbours = cargm.cAtomQFNeighbours_0;
_.cAtomQFNewRingSize = cargm.cAtomQFNewRingSize_0;
_.cAtomQFNewRingSizeBits = cargm.cAtomQFNewRingSizeBits_0;
_.cAtomQFNewRingSizeShift = cargm.cAtomQFNewRingSizeShift_0;
_.cAtomQFNoMoreNeighbours = cargm.cAtomQFNoMoreNeighbours_0;
_.cAtomQFNoOfBits = cargm.cAtomQFNoOfBits_0;
_.cAtomQFNot0ENeighbours = cargm.cAtomQFNot0ENeighbours_0;
_.cAtomQFNot0Hydrogen = cargm.cAtomQFNot0Hydrogen_0;
_.cAtomQFNot0Neighbours = cargm.cAtomQFNot0Neighbours_0;
_.cAtomQFNot0PiElectrons = cargm.cAtomQFNot0PiElectrons_0;
_.cAtomQFNot1ENeighbour = cargm.cAtomQFNot1ENeighbour_0;
_.cAtomQFNot1Hydrogen = cargm.cAtomQFNot1Hydrogen_0;
_.cAtomQFNot1Neighbour = cargm.cAtomQFNot1Neighbour_0;
_.cAtomQFNot1PiElectron = cargm.cAtomQFNot1PiElectron_0;
_.cAtomQFNot2ENeighbours = cargm.cAtomQFNot2ENeighbours_0;
_.cAtomQFNot2Hydrogen = cargm.cAtomQFNot2Hydrogen_0;
_.cAtomQFNot2Neighbours = cargm.cAtomQFNot2Neighbours_0;
_.cAtomQFNot2PiElectrons = cargm.cAtomQFNot2PiElectrons_0;
_.cAtomQFNot2RingBonds = cargm.cAtomQFNot2RingBonds_0;
_.cAtomQFNot3ENeighbours = cargm.cAtomQFNot3ENeighbours_0;
_.cAtomQFNot3Hydrogen = cargm.cAtomQFNot3Hydrogen_0;
_.cAtomQFNot3Neighbours = cargm.cAtomQFNot3Neighbours_0;
_.cAtomQFNot3RingBonds = cargm.cAtomQFNot3RingBonds_0;
_.cAtomQFNot4ENeighbours = cargm.cAtomQFNot4ENeighbours_0;
_.cAtomQFNot4Neighbours = cargm.cAtomQFNot4Neighbours_0;
_.cAtomQFNot4RingBonds = cargm.cAtomQFNot4RingBonds_0;
_.cAtomQFNotAromatic = cargm.cAtomQFNotAromatic_0;
_.cAtomQFNotChain = cargm.cAtomQFNotChain_0;
_.cAtomQFNotCharge0 = cargm.cAtomQFNotCharge0_0;
_.cAtomQFNotChargeNeg = cargm.cAtomQFNotChargeNeg_0;
_.cAtomQFNotChargePos = cargm.cAtomQFNotChargePos_0;
_.cAtomQFPiElectronBits = cargm.cAtomQFPiElectronBits_0;
_.cAtomQFPiElectronShift = cargm.cAtomQFPiElectronShift_0;
_.cAtomQFPiElectrons = cargm.cAtomQFPiElectrons_0;
_.cAtomQFRingSize0 = cargm.cAtomQFRingSize0_0;
_.cAtomQFRingSize3 = cargm.cAtomQFRingSize3_0;
_.cAtomQFRingSize4 = cargm.cAtomQFRingSize4_0;
_.cAtomQFRingSize5 = cargm.cAtomQFRingSize5_0;
_.cAtomQFRingSize6 = cargm.cAtomQFRingSize6_0;
_.cAtomQFRingSize7 = cargm.cAtomQFRingSize7_0;
_.cAtomQFRingSizeLarge = cargm.cAtomQFRingSizeLarge_0;
_.cAtomQFRingState = cargm.cAtomQFRingState_0;
_.cAtomQFRingStateBits = cargm.cAtomQFRingStateBits_0;
_.cAtomQFRingStateShift = cargm.cAtomQFRingStateShift_0;
_.cAtomQFRxnParityBits = cargm.cAtomQFRxnParityBits_0;
_.cAtomQFRxnParityHint = cargm.cAtomQFRxnParityHint_0;
_.cAtomQFRxnParityInvert = cargm.cAtomQFRxnParityInvert_0;
_.cAtomQFRxnParityRacemize = cargm.cAtomQFRxnParityRacemize_0;
_.cAtomQFRxnParityRetain = cargm.cAtomQFRxnParityRetain_0;
_.cAtomQFRxnParityShift = cargm.cAtomQFRxnParityShift_0;
_.cAtomQFSimpleFeatures = cargm.cAtomQFSimpleFeatures_0;
_.cAtomQFSmallRingSize = cargm.cAtomQFSmallRingSize_0;
_.cAtomQFSmallRingSizeBits = cargm.cAtomQFSmallRingSizeBits_0;
_.cAtomQFSmallRingSizeShift = cargm.cAtomQFSmallRingSizeShift_0;
_.cAtomQFStereoState = cargm.cAtomQFStereoState_0;
_.cAtomQFStereoStateBits = cargm.cAtomQFStereoStateBits_0;
_.cAtomQFStereoStateShift = cargm.cAtomQFStereoStateShift_0;
_.cAtomRadicalState = cargm.cAtomRadicalState_0;
_.cAtomRadicalStateD = cargm.cAtomRadicalStateD_0;
_.cAtomRadicalStateNone = cargm.cAtomRadicalStateNone_0;
_.cAtomRadicalStateS = cargm.cAtomRadicalStateS_0;
_.cAtomRadicalStateShift = cargm.cAtomRadicalStateShift_0;
_.cAtomRadicalStateT = cargm.cAtomRadicalStateT_0;
_.cAtomValence = cargm.cAtomValence_0;
_.cBondCIPParityEorP = cargm.cBondCIPParityEorP_0;
_.cBondCIPParityNone = cargm.cBondCIPParityNone_0;
_.cBondCIPParityProblem = cargm.cBondCIPParityProblem_0;
_.cBondCIPParityZorM = cargm.cBondCIPParityZorM_0;
_.cBondParityEor1 = cargm.cBondParityEor1_0;
_.cBondParityNone = cargm.cBondParityNone_0;
_.cBondParityUnknown = cargm.cBondParityUnknown_0;
_.cBondParityZor2 = cargm.cBondParityZor2_0;
_.cBondQFAllFeatures = cargm.cBondQFAllFeatures_0;
_.cBondQFAromState = cargm.cBondQFAromState_0;
_.cBondQFAromStateBits = cargm.cBondQFAromStateBits_0;
_.cBondQFAromStateShift = cargm.cBondQFAromStateShift_0;
_.cBondQFAromatic = cargm.cBondQFAromatic_0;
_.cBondQFBondTypes = cargm.cBondQFBondTypes_0;
_.cBondQFBondTypesBits = cargm.cBondQFBondTypesBits_0;
_.cBondQFBondTypesShift = cargm.cBondQFBondTypesShift_0;
_.cBondQFBridge = cargm.cBondQFBridge_0;
_.cBondQFBridgeBits = cargm.cBondQFBridgeBits_0;
_.cBondQFBridgeMin = cargm.cBondQFBridgeMin_0;
_.cBondQFBridgeMinBits = cargm.cBondQFBridgeMinBits_0;
_.cBondQFBridgeMinShift = cargm.cBondQFBridgeMinShift_0;
_.cBondQFBridgeShift = cargm.cBondQFBridgeShift_0;
_.cBondQFBridgeSpan = cargm.cBondQFBridgeSpan_0;
_.cBondQFBridgeSpanBits = cargm.cBondQFBridgeSpanBits_0;
_.cBondQFBridgeSpanShift = cargm.cBondQFBridgeSpanShift_0;
_.cBondQFDelocalized = cargm.cBondQFDelocalized_0;
_.cBondQFDouble = cargm.cBondQFDouble_0;
_.cBondQFMatchFormalOrder = cargm.cBondQFMatchFormalOrder_0;
_.cBondQFMatchStereo = cargm.cBondQFMatchStereo_0;
_.cBondQFMetalLigand = cargm.cBondQFMetalLigand_0;
_.cBondQFNarrowing = cargm.cBondQFNarrowing_0;
_.cBondQFNoOfBits = cargm.cBondQFNoOfBits_0;
_.cBondQFNotAromatic = cargm.cBondQFNotAromatic_0;
_.cBondQFNotRing = cargm.cBondQFNotRing_0;
_.cBondQFQuadruple = cargm.cBondQFQuadruple_0;
_.cBondQFQuintuple = cargm.cBondQFQuintuple_0;
_.cBondQFRareBondTypes = cargm.cBondQFRareBondTypes_0;
_.cBondQFRareBondTypesBits = cargm.cBondQFRareBondTypesBits_0;
_.cBondQFRareBondTypesShift = cargm.cBondQFRareBondTypesShift_0;
_.cBondQFRing = cargm.cBondQFRing_0;
_.cBondQFRingSize = cargm.cBondQFRingSize_0;
_.cBondQFRingSizeBits = cargm.cBondQFRingSizeBits_0;
_.cBondQFRingSizeShift = cargm.cBondQFRingSizeShift_0;
_.cBondQFRingState = cargm.cBondQFRingState_0;
_.cBondQFRingStateBits = cargm.cBondQFRingStateBits_0;
_.cBondQFRingStateShift = cargm.cBondQFRingStateShift_0;
_.cBondQFSimpleFeatures = cargm.cBondQFSimpleFeatures_0;
_.cBondQFSingle = cargm.cBondQFSingle_0;
_.cBondQFTriple = cargm.cBondQFTriple_0;
_.cBondTypeCross = cargm.cBondTypeCross_0;
_.cBondTypeDeleted = cargm.cBondTypeDeleted_0;
_.cBondTypeDelocalized = cargm.cBondTypeDelocalized_0;
_.cBondTypeDouble = cargm.cBondTypeDouble_0;
_.cBondTypeDown = cargm.cBondTypeDown_0;
_.cBondTypeIncreaseOrder = cargm.cBondTypeIncreaseOrder_0;
_.cBondTypeMaskSimple = cargm.cBondTypeMaskSimple_0;
_.cBondTypeMaskStereo = cargm.cBondTypeMaskStereo_0;
_.cBondTypeMetalLigand = cargm.cBondTypeMetalLigand_0;
_.cBondTypeQuadruple = cargm.cBondTypeQuadruple_0;
_.cBondTypeQuintuple = cargm.cBondTypeQuintuple_0;
_.cBondTypeSingle = cargm.cBondTypeSingle_0;
_.cBondTypeTriple = cargm.cBondTypeTriple_0;
_.cBondTypeUp = cargm.cBondTypeUp_0;
_.cChiralityDiastereomers = cargm.cChiralityDiastereomers_0;
_.cChiralityEpimers = cargm.cChiralityEpimers_0;
_.cChiralityIsomerCountMask = cargm.cChiralityIsomerCountMask_0;
_.cChiralityKnownEnantiomer = cargm.cChiralityKnownEnantiomer_0;
_.cChiralityMeso = cargm.cChiralityMeso_0;
_.cChiralityNotChiral = cargm.cChiralityNotChiral_0;
_.cChiralityRacemic = cargm.cChiralityRacemic_0;
_.cChiralityUnknown = cargm.cChiralityUnknown_0;
_.cChiralityUnknownEnantiomer = cargm.cChiralityUnknownEnantiomer_0;
_.cCommonOxidationState = cargm.cCommonOxidationState_0;
_.cDefaultAVBL = cargm.cDefaultAVBL_0;
_.cDefaultAllowedPseudoAtoms = cargm.cDefaultAllowedPseudoAtoms_0;
_.cDefaultAtomValence = cargm.cDefaultAtomValence_0;
_.cESRGroupBits = cargm.cESRGroupBits_0;
_.cESRMaxGroups = cargm.cESRMaxGroups_0;
_.cESRTypeAbs = cargm.cESRTypeAbs_0;
_.cESRTypeAnd = cargm.cESRTypeAnd_0;
_.cESRTypeOr = cargm.cESRTypeOr_0;
_.cHelperAll = cargm.cHelperAll_0;
_.cHelperBitCIP = cargm.cHelperBitCIP_0;
_.cHelperBitIncludeNitrogenParities = cargm.cHelperBitIncludeNitrogenParities_0;
_.cHelperBitNeighbours = cargm.cHelperBitNeighbours_0;
_.cHelperBitParities = cargm.cHelperBitParities_0;
_.cHelperBitRings = cargm.cHelperBitRings_0;
_.cHelperBitRingsSimple = cargm.cHelperBitRingsSimple_0;
_.cHelperBitSymmetrySimple = cargm.cHelperBitSymmetrySimple_0;
_.cHelperBitSymmetryStereoHeterotopicity = cargm.cHelperBitSymmetryStereoHeterotopicity_0;
_.cHelperBitsStereo = cargm.cHelperBitsStereo_0;
_.cHelperCIP = cargm.cHelperCIP_0;
_.cHelperNeighbours = cargm.cHelperNeighbours_0;
_.cHelperNone = cargm.cHelperNone_0;
_.cHelperParities = cargm.cHelperParities_0;
_.cHelperRings = cargm.cHelperRings_0;
_.cHelperRingsSimple = cargm.cHelperRingsSimple_0;
_.cHelperSymmetrySimple = cargm.cHelperSymmetrySimple_0;
_.cHelperSymmetryStereoHeterotopicity = cargm.cHelperSymmetryStereoHeterotopicity_0;
_.cMaxAtomicNo = cargm.cMaxAtomicNo_0;
_.cMaxConnAtoms = cargm.cMaxConnAtoms_0;
_.cMoleculeColorDefault = cargm.cMoleculeColorDefault_0;
_.cMoleculeColorNeutral = cargm.cMoleculeColorNeutral_0;
_.cPseudoAtomA = cargm.cPseudoAtomA_0;
_.cPseudoAtomAttachmentPoint = cargm.cPseudoAtomAttachmentPoint_0;
_.cPseudoAtomPolymer = cargm.cPseudoAtomPolymer_0;
_.cPseudoAtomR = cargm.cPseudoAtomR_0;
_.cPseudoAtomX = cargm.cPseudoAtomX_0;
_.cPseudoAtomsAGroups = cargm.cPseudoAtomsAGroups_0;
_.cPseudoAtomsAll = cargm.cPseudoAtomsAll_0;
_.cPseudoAtomsAminoAcids = cargm.cPseudoAtomsAminoAcids_0;
_.cPseudoAtomsHydrogenIsotops = cargm.cPseudoAtomsHydrogenIsotops_0;
_.cPseudoAtomsRGroups = cargm.cPseudoAtomsRGroups_0;
_.cRoundedMass = cargm.cRoundedMass_0;
_.fromIDCode = cargm.fromIDCode;
_.fromMolfile = cargm.fromMolfile;
_.fromMolfileWithAtomMap = cargm.fromMolfileWithAtomMap;
_.fromSmiles = cargm.fromSmiles;
_.getAngle = cargm.getAngle_3;
_.getAngleDif = cargm.getAngleDif_1;
_.getAtomicNoFromLabel = cargm.getAtomicNoFromLabel_1;
_.getDefaultAverageBondLength = cargm.getDefaultAverageBondLength_0;
_.isAtomicNoElectronegative = cargm.isAtomicNoElectronegative_0;
_.isAtomicNoElectropositive = cargm.isAtomicNoElectropositive_0;
_.setDefaultAverageBondLength = cargm.setDefaultAverageBondLength_0;
cargc.$clinit_JSMoleculeProperties();
_ = provide('OCL.MoleculeProperties', cargc.JSMoleculeProperties);
cargm.$clinit_JSReaction();
_ = provide('OCL.Reaction');
_.create = cargm.create;
_.fromMolecules = cargm.fromMolecules;
_.fromRxn = cargm.fromRxn;
_.fromSmiles = cargm.fromSmiles_1;
cargc.$clinit_JSReactionEncoder();
_ = provide('OCL.ReactionEncoder', cargc.JSReactionEncoder);
_.decode = cargc.decode_2;
_.encode = cargc.encode_1;
cargc.$clinit_JSReactor();
_ = provide('OCL.Reactor', cargc.JSReactor);
_ = provide('OCL.RingCollection');
_.MAX_SMALL_RING_SIZE = cargm.MAX_SMALL_RING_SIZE_0;
_.MODE_SMALL_AND_LARGE_RINGS = cargm.MODE_SMALL_AND_LARGE_RINGS_0;
_.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY = cargm.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY_0;
_.MODE_SMALL_RINGS_AND_AROMATICITY = cargm.MODE_SMALL_RINGS_AND_AROMATICITY_0;
_.MODE_SMALL_RINGS_ONLY = cargm.MODE_SMALL_RINGS_ONLY_0;
cargm.$clinit_JSSDFileParser();
_ = provide('OCL.SDFileParser', cargm.JSSDFileParser);
cargm.$clinit_JSSSSearcher();
_ = provide('OCL.SSSearcher', cargm.JSSSSearcher);
cargm.$clinit_JSSSSearcherWithIndex();
_ = provide('OCL.SSSearcherWithIndex', cargm.JSSSSearcherWithIndex);
_.bitCount = cargm.bitCount_0;
_.getHexStringFromIndex = cargm.getHexStringFromIndex_0;
_.getIndexFromHexString = cargm.getIndexFromHexString_0;
_.getKeyIDCode = cargm.getKeyIDCode;
_.getSimilarityAngleCosine = cargm.getSimilarityAngleCosine_0;
_.getSimilarityTanimoto = cargm.getSimilarityTanimoto_0;
carggv.$clinit_SVGRenderer();
_ = provide('OCL.SVGRenderer', carggv.SVGRenderer);
_.renderMolecule = carggv.renderMolecule;
cargm.$clinit_JSSmilesParser();
_ = provide('OCL.SmilesParser', cargm.JSSmilesParser);
cargge.$clinit_StructureEditor();
_ = provide('OCL.StructureEditor', cargge.StructureEditor_0);
_.addPasteHandler = cargge.addPasteHandler;
_.createEditor = cargge.createEditor;
_.createSVGEditor = cargge.createSVGEditor;
_.notify = cargge.notify;
carggv.$clinit_StructureView();
_ = provide('OCL.StructureView', carggv.StructureView);
_.drawMolecule = carggv.drawMolecule_3;
_.drawStructure = carggv.drawStructure_0;
_.drawStructureWithText = carggv.drawStructureWithText;
_.getIDCode = carggv.getIDCode_7;
_.renderStructure = carggv.renderStructure;
_.showStructures = carggv.showStructures;
cargc.$clinit_JSToxicityPredictor();
_ = provide('OCL.ToxicityPredictor', cargc.JSToxicityPredictor);
_.RISK_HIGH = cargc.RISK_HIGH;
_.RISK_LOW = cargc.RISK_LOW;
_.RISK_NAMES = cargc.RISK_NAMES;
_.RISK_NO = cargc.RISK_NO;
_.RISK_UNKNOWN = cargc.RISK_UNKNOWN;
_.TYPE_IRRITANT = cargc.TYPE_IRRITANT;
_.TYPE_MUTAGENIC = cargc.TYPE_MUTAGENIC;
_.TYPE_REPRODUCTIVE_EFFECTIVE = cargc.TYPE_REPRODUCTIVE_EFFECTIVE;
_.TYPE_TUMORIGENIC = cargc.TYPE_TUMORIGENIC;
cargc.$clinit_JSTransformer();
_ = provide('OCL.Transformer', cargc.JSTransformer);
cargm.$clinit_JSUtil();
_ = provide('OCL.Util', cargm.JSUtil);
_.getHoseCodesFromDiastereotopicID = cargm.getHoseCodesFromDiastereotopicID;
ji.$clinit_Serializable();
_ = provide('java.io.Serializable');
_.$isInstance = $isInstance;
jl.$clinit_Boolean();
_ = provide('java.lang.Boolean');
_.$isInstance = $isInstance_0;
jl.$clinit_CharSequence();
_ = provide('java.lang.CharSequence');
_.$isInstance = $isInstance_2;
jl.$clinit_Cloneable();
_ = provide('java.lang.Cloneable');
_.$isInstance = $isInstance_3;
jl.$clinit_Comparable();
_ = provide('java.lang.Comparable');
_.$isInstance = $isInstance_4;
jl.$clinit_Double();
_ = provide('java.lang.Double');
_.$isInstance = $isInstance_5;
jl.$clinit_Number();
_ = provide('java.lang.Number');
_.$isInstance = jl.$isInstance_1;
jl.$clinit_String();
_ = provide('java.lang.String');
_.$isInstance = $isInstance_6;
jl.$clinit_Throwable();
_ = provide('java.lang.Throwable');
_.of = of;
ji2.$clinit_HashCodes();
_ = provide('javaemul.internal.HashCodes', ji2.HashCodes);
_.getIdentityHashCode = ji2.getIdentityHashCode;
_.getNextHash = ji2.getNextHash;
_.getObjectIdentityHashCode = ji2.getObjectIdentityHashCode;
ji2.$clinit_JsUtils();
_ = provide('javaemul.internal.JsUtils');
_.toDoubleFromUnsignedInt = ji2.toDoubleFromUnsignedInt;
var $entry = registerEntry_0();
var gwtOnLoad = gwtOnLoad = gwtOnLoad_0;
addInitFunctions(init_8);
setGwtProperty('permProps', [[['locale', 'default'], ['user.agent', 'safari']]]);
$sendStats('moduleStartup', 'moduleEvalEnd');
gwtOnLoad(__gwtModuleFunction.__errFn, __gwtModuleFunction.__moduleName, __gwtModuleFunction.__moduleBase, __gwtModuleFunction.__softPermutationId,__gwtModuleFunction.__computePropValue);
$sendStats('moduleStartup', 'end');
$gwt && $gwt.permProps && __gwtModuleFunction.__moduleStartupDone($gwt.permProps);



    // End GWT code

    var toReturn = $wnd["OCL"];

    toReturn.version = '8.13.0';

    return toReturn;
  }

  var isBrowser, globalEnv;

  if (typeof self !== 'undefined') { // Usual Browser Window or Web Worker
    isBrowser = true;
    globalEnv = self;
  } else if (typeof global !== 'undefined') { // Node.js
    isBrowser = false;
    globalEnv = global;
  } else { // Other environment (example: CouchDB)
    isBrowser = false;
    globalEnv = root;
  }

  var document = globalEnv.document || {};

  if (!document.compatMode) {
    document.compatMode = 'CSS1Compat';
  }

  var fakeWindow;
  if (isBrowser && !false) {
    fakeWindow = globalEnv;
  } else {
    fakeWindow = {};
    fakeWindow.setTimeout = globalEnv.setTimeout ? globalEnv.setTimeout.bind(globalEnv) : noop;
    fakeWindow.clearTimeout = globalEnv.clearTimeout ? globalEnv.clearTimeout.bind(globalEnv) : noop;
    fakeWindow.setInterval = globalEnv.setInterval ? globalEnv.setInterval.bind(globalEnv) : noop;
    fakeWindow.clearInterval = globalEnv.clearInterval ? globalEnv.clearInterval.bind(globalEnv) : noop;
    // required since GWT 2.8.0
    fakeWindow.Error = globalEnv.Error;
    fakeWindow.Math = globalEnv.Math;
    fakeWindow.RegExp = globalEnv.RegExp;
    fakeWindow.TypeError = globalEnv.TypeError;
  }

  if (!fakeWindow.document) {
    fakeWindow.document = document;
  }

  var exportedApi = getExports(fakeWindow);

  var extendApi = function extendApi(exports) {
    function extendMinimal() {
  'use strict';
}
extendMinimal(exports);
function extendCore(exports) {
  'use strict';

  let ConformerGenerator = exports.ConformerGenerator;
  ConformerGenerator.prototype.molecules = function* molecules() {
    let nextConformer;
    while ((nextConformer = this.getNextConformerAsMolecule()) !== null) {
      yield nextConformer;
    }
  };

  let ForceFieldMMFF94 = exports.ForceFieldMMFF94;
  let defaultMinimiseOptions = {
    maxIts: 4000,
    gradTol: 1e-4,
    funcTol: 1e-6,
  };
  ForceFieldMMFF94.prototype.minimise = function minimise(options) {
    options = { ...defaultMinimiseOptions, ...options};
    return this._minimise(options.maxIts, options.gradTol, options.funcTol);
  };
}
extendCore(exports);
function extendFull() {
  'use strict';
}
extendFull(exports);
  };

  if (typeof exports !== 'undefined') { // NodeJS
    fillExports(exportedApi, exports);
  } else if (typeof define === 'function' && define.amd) { // AMD
    define(function () {
      var exportsObj = {};
      fillExports(exportedApi, exportsObj);
      return exportsObj;
    });
  } else { // Global
    var path = ["OCL"];
    var l = path.length - 1;
    var obj = globalEnv;
    for (var i = 0; i < l; i++) {
      obj = obj[path[i]] || (obj[path[i]] = {});
    }
    obj[path[l]] = {};
    fillExports(exportedApi, obj[path[l]]);
  }

  function fillExports(obj, exports) {
    var keys = Object.keys(obj);
    for (var i = 0; i < keys.length; i++) {
      exports[keys[i]] = obj[keys[i]];
    }
    extendApi(exports);
  }

  function noop() {}

})(this);
