diff --git a/cms/djangoapps/contentstore/tests/test_contentstore.py b/cms/djangoapps/contentstore/tests/test_contentstore.py index da7b1ed682fadcf367cc0be316d2153dc4ae98bd..d3c59664e82d46237bf6bf900991c6fe94312e3e 100644 --- a/cms/djangoapps/contentstore/tests/test_contentstore.py +++ b/cms/djangoapps/contentstore/tests/test_contentstore.py @@ -265,7 +265,33 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): # note, we know the link it should be because that's what in the 'full' course in the test data self.assertContains(resp, '/c4x/edX/full/asset/handouts_schematic_tutorial.pdf') + def test_export_course_with_unknown_metadata(self): + ms = modulestore('direct') + cs = contentstore() + + import_from_xml(ms, 'common/test/data/', ['full']) + location = CourseDescriptor.id_to_location('edX/full/6.002_Spring_2012') + + root_dir = path(mkdtemp_clean()) + + course = ms.get_item(location) + + # add a bool piece of unknown metadata so we can verify we don't throw an exception + course.metadata['new_metadata'] = True + + ms.update_metadata(location, course.metadata) + + print 'Exporting to tempdir = {0}'.format(root_dir) + + # export out to a tempdir + bExported = False + try: + export_to_xml(ms, cs, location, root_dir, 'test_export') + bExported = True + except Exception: + pass + self.assertTrue(bExported) class ContentStoreTest(ModuleStoreTestCase): """ diff --git a/cms/envs/dev.py b/cms/envs/dev.py index 3dee93a3987b6930b92e1f435376dacb8aca0d9f..9164c02e3f69b8dacba03495b74f4740bfdba84f 100644 --- a/cms/envs/dev.py +++ b/cms/envs/dev.py @@ -4,9 +4,6 @@ This config file runs the simplest dev environment""" from .common import * from logsettings import get_logger_config -import logging -import sys - DEBUG = True TEMPLATE_DEBUG = DEBUG LOGGING = get_logger_config(ENV_ROOT / "log", @@ -107,3 +104,36 @@ CACHE_TIMEOUT = 0 # Dummy secret key for dev SECRET_KEY = '85920908f28904ed733fe576320db18cabd7b6cd' + +################################ DEBUG TOOLBAR ################################# +INSTALLED_APPS += ('debug_toolbar', 'debug_toolbar_mongo') +MIDDLEWARE_CLASSES += ('django_comment_client.utils.QueryCountDebugMiddleware', + 'debug_toolbar.middleware.DebugToolbarMiddleware',) +INTERNAL_IPS = ('127.0.0.1',) + +DEBUG_TOOLBAR_PANELS = ( + 'debug_toolbar.panels.version.VersionDebugPanel', + 'debug_toolbar.panels.timer.TimerDebugPanel', + 'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel', + 'debug_toolbar.panels.headers.HeaderDebugPanel', + 'debug_toolbar.panels.request_vars.RequestVarsDebugPanel', + 'debug_toolbar.panels.sql.SQLDebugPanel', + 'debug_toolbar.panels.signals.SignalDebugPanel', + 'debug_toolbar.panels.logger.LoggingPanel', +# This is breaking Mongo updates-- Christina is investigating. +# 'debug_toolbar_mongo.panel.MongoDebugPanel', + + # Enabling the profiler has a weird bug as of django-debug-toolbar==0.9.4 and + # Django=1.3.1/1.4 where requests to views get duplicated (your method gets + # hit twice). So you can uncomment when you need to diagnose performance + # problems, but you shouldn't leave it on. + # 'debug_toolbar.panels.profiling.ProfilingDebugPanel', + ) + +DEBUG_TOOLBAR_CONFIG = { + 'INTERCEPT_REDIRECTS': False +} + +# To see stacktraces for MongoDB queries, set this to True. +# Stacktraces slow down page loads drastically (for pages with lots of queries). +# DEBUG_TOOLBAR_MONGO_STACKTRACES = False diff --git a/cms/static/js/views/settings/advanced_view.js b/cms/static/js/views/settings/advanced_view.js index d20a21f7e7ec2f327e8ae4c19c9bfc61754f8295..2f2abb8d25c06cd76cf88bbb78e1a95aa1b71bad 100644 --- a/cms/static/js/views/settings/advanced_view.js +++ b/cms/static/js/views/settings/advanced_view.js @@ -31,7 +31,8 @@ CMS.Views.Settings.Advanced = CMS.Views.ValidatingView.extend({ // because these are outside of this.$el, they can't be in the event hash $('.save-button').on('click', this, this.saveView); $('.cancel-button').on('click', this, this.revertView); - this.model.on('error', this.handleValidationError, this); + this.listenTo(this.model, 'error', CMS.ServerError); + this.listenTo(this.model, 'invalid', this.handleValidationError); }, render: function() { // catch potential outside call before template loaded diff --git a/cms/static/js/views/settings/main_settings_view.js b/cms/static/js/views/settings/main_settings_view.js index 8f998dbf7afb8beb1776a387830f9f750d631ad7..9bd8feab8cad1337abec3b20c58ef98ded4ca627 100644 --- a/cms/static/js/views/settings/main_settings_view.js +++ b/cms/static/js/views/settings/main_settings_view.js @@ -26,7 +26,8 @@ CMS.Views.Settings.Details = CMS.Views.ValidatingView.extend({ var dateIntrospect = new Date(); this.$el.find('#timezone').html("(" + dateIntrospect.getTimezone() + ")"); - this.model.on('error', this.handleValidationError, this); + this.listenTo(this.model, 'error', CMS.ServerError); + this.listenTo(this.model, 'invalid', this.handleValidationError); this.selectorToField = _.invert(this.fieldToSelectorMap); }, diff --git a/cms/static/js/views/settings/settings_grading_view.js b/cms/static/js/views/settings/settings_grading_view.js index a7c8defb43270ffff520e14191f19322b5aedaa5..78972f97a7f084a27cf53e4c22efeaddfd72ed0b 100644 --- a/cms/static/js/views/settings/settings_grading_view.js +++ b/cms/static/js/views/settings/settings_grading_view.js @@ -44,7 +44,8 @@ CMS.Views.Settings.Grading = CMS.Views.ValidatingView.extend({ self.render(); } ); - this.model.on('error', this.handleValidationError, this); + this.listenTo(this.model, 'error', CMS.ServerError); + this.listenTo(this.model, 'invalid', this.handleValidationError); this.model.get('graders').on('remove', this.render, this); this.model.get('graders').on('reset', this.render, this); this.model.get('graders').on('add', this.render, this); @@ -316,7 +317,8 @@ CMS.Views.Settings.GraderView = CMS.Views.ValidatingView.extend({ 'blur :input' : "inputUnfocus" }, initialize : function() { - this.model.on('error', this.handleValidationError, this); + this.listenTo(this.model, 'error', CMS.ServerError); + this.listenTo(this.model, 'invalid', this.handleValidationError); this.selectorToField = _.invert(this.fieldToSelectorMap); this.render(); }, diff --git a/cms/static/js/views/validating_view.js b/cms/static/js/views/validating_view.js index e4928a8ebe118863c903c121590febdc80a7b3bc..041e7790307861fc640abd197837f271c7f771c1 100644 --- a/cms/static/js/views/validating_view.js +++ b/cms/static/js/views/validating_view.js @@ -3,7 +3,8 @@ CMS.Views.ValidatingView = Backbone.View.extend({ // decorates the fields. Needs wiring per class, but this initialization shows how // either have your init call this one or copy the contents initialize : function() { - this.model.on('error', this.handleValidationError, this); + this.listenTo(this.model, 'error', CMS.ServerError); + this.listenTo(this.model, 'invalid', this.handleValidationError); this.selectorToField = _.invert(this.fieldToSelectorMap); }, @@ -18,20 +19,11 @@ CMS.Views.ValidatingView = Backbone.View.extend({ // which may be the subjects of validation errors }, _cacheValidationErrors : [], + handleValidationError : function(model, error) { - // error triggered either by validation or server error // error is object w/ fields and error strings for (var field in error) { var ele = this.$el.find('#' + this.fieldToSelectorMap[field]); - if (ele.length === 0) { - // check if it might a server error: note a typo in the field name - // or failure to put in a map may cause this to muffle validation errors - if (_.has(error, 'error') && _.has(error, 'responseText')) { - CMS.ServerError(model, error); - return; - } - else continue; - } this._cacheValidationErrors.push(ele); if ($(ele).is('div')) { // put error on the contained inputs diff --git a/cms/templates/asset_index.html b/cms/templates/asset_index.html index 5ace98df56917712cf23c6602fb05ee3c53c71b4..a5a9144b0713114d49848838c4eeb62df0fc63ab 100644 --- a/cms/templates/asset_index.html +++ b/cms/templates/asset_index.html @@ -28,7 +28,7 @@ {{uploadDate}} </td> <td class="embed-col"> - <input type="text" class="embeddable-xml-input" value='{{url}}' disabled> + <input type="text" class="embeddable-xml-input" value='{{url}}' readonly> </td> </tr> </script> @@ -84,7 +84,7 @@ ${asset['uploadDate']} </td> <td class="embed-col"> - <input type="text" class="embeddable-xml-input" value="${asset['url']}" disabled> + <input type="text" class="embeddable-xml-input" value="${asset['url']}" readonly> </td> </tr> % endfor @@ -115,7 +115,7 @@ </div> <div class="embeddable"> <label>URL:</label> - <input type="text" class="embeddable-xml-input" value='' disabled> + <input type="text" class="embeddable-xml-input" value='' readonly> </div> <form class="file-chooser" action="${upload_asset_callback_url}" method="post" enctype="multipart/form-data"> diff --git a/common/djangoapps/static_replace/__init__.py b/common/djangoapps/static_replace/__init__.py index fb1f48d14367e603bd53aa1069cfa4671f750a63..b73a658c5f22b6ebd1417e7d783c25b31559c8f1 100644 --- a/common/djangoapps/static_replace/__init__.py +++ b/common/djangoapps/static_replace/__init__.py @@ -84,12 +84,19 @@ def replace_static_urls(text, data_directory, course_namespace=None): if rest.endswith('?raw'): return original - # course_namespace is not None, then use studio style urls - if course_namespace is not None and not isinstance(modulestore(), XMLModuleStore): - url = StaticContent.convert_legacy_static_url(rest, course_namespace) # In debug mode, if we can find the url as is, - elif settings.DEBUG and finders.find(rest, True): + if settings.DEBUG and finders.find(rest, True): return original + # if we're running with a MongoBacked store course_namespace is not None, then use studio style urls + elif course_namespace is not None and not isinstance(modulestore(), XMLModuleStore): + # first look in the static file pipeline and see if we are trying to reference + # a piece of static content which is in the mitx repo (e.g. JS associated with an xmodule) + if staticfiles_storage.exists(rest): + url = staticfiles_storage.url(rest) + else: + # if not, then assume it's courseware specific content and then look in the + # Mongo-backed database + url = StaticContent.convert_legacy_static_url(rest, course_namespace) # Otherwise, look the file up in staticfiles_storage, and append the data directory if needed else: course_path = "/".join((data_directory, rest)) diff --git a/common/lib/capa/capa/capa_problem.py b/common/lib/capa/capa/capa_problem.py index de7fc0f5de92174882545f3bfd4680fedb718b75..8b0a333e05ebee7679983a15c5e1afac8b3cb428 100644 --- a/common/lib/capa/capa/capa_problem.py +++ b/common/lib/capa/capa/capa_problem.py @@ -29,6 +29,7 @@ import sys from lxml import etree from xml.sax.saxutils import unescape +from copy import deepcopy import chem import chem.chemcalc @@ -148,6 +149,13 @@ class LoncapaProblem(object): if not self.student_answers: # True when student_answers is an empty dict self.set_initial_display() + # dictionary of InputType objects associated with this problem + # input_id string -> InputType object + self.inputs = {} + + self.extracted_tree = self._extract_html(self.tree) + + def do_reset(self): ''' Reset internal state to unfinished, with no answers @@ -326,7 +334,27 @@ class LoncapaProblem(object): ''' Main method called externally to get the HTML to be rendered for this capa Problem. ''' - return contextualize_text(etree.tostring(self._extract_html(self.tree)), self.context) + html = contextualize_text(etree.tostring(self._extract_html(self.tree)), self.context) + return html + + + def handle_input_ajax(self, get): + ''' + InputTypes can support specialized AJAX calls. Find the correct input and pass along the correct data + + Also, parse out the dispatch from the get so that it can be passed onto the input type nicely + ''' + + # pull out the id + input_id = get['input_id'] + if self.inputs[input_id]: + dispatch = get['dispatch'] + return self.inputs[input_id].handle_ajax(dispatch, get) + else: + log.warning("Could not find matching input for id: %s" % problem_id) + return {} + + # ======= Private Methods Below ======== @@ -460,6 +488,8 @@ class LoncapaProblem(object): finally: sys.path = original_path + + def _extract_html(self, problemtree): # private ''' Main (private) function which converts Problem XML tree to HTML. @@ -473,7 +503,7 @@ class LoncapaProblem(object): if (problemtree.tag == 'script' and problemtree.get('type') and 'javascript' in problemtree.get('type')): # leave javascript intact. - return problemtree + return deepcopy(problemtree) if problemtree.tag in html_problem_semantics: return @@ -486,8 +516,9 @@ class LoncapaProblem(object): msg = '' hint = '' hintmode = None + input_id = problemtree.get('id') if problemid in self.correct_map: - pid = problemtree.get('id') + pid = input_id status = self.correct_map.get_correctness(pid) msg = self.correct_map.get_msg(pid) hint = self.correct_map.get_hint(pid) @@ -498,17 +529,17 @@ class LoncapaProblem(object): value = self.student_answers[problemid] # do the rendering - state = {'value': value, 'status': status, - 'id': problemtree.get('id'), + 'id': input_id, 'feedback': {'message': msg, 'hint': hint, 'hintmode': hintmode, }} input_type_cls = inputtypes.registry.get_class_for_tag(problemtree.tag) - the_input = input_type_cls(self.system, problemtree, state) - return the_input.get_html() + # save the input type so that we can make ajax calls on it if we need to + self.inputs[input_id] = input_type_cls(self.system, problemtree, state) + return self.inputs[input_id].get_html() # let each Response render itself if problemtree in self.responders: diff --git a/common/lib/capa/capa/correctmap.py b/common/lib/capa/capa/correctmap.py index 9e76fc20bf3a6673e26a202a4750881b6679b326..f246b406d53f75014e4dc3e3ef95ba60e9eb26ee 100644 --- a/common/lib/capa/capa/correctmap.py +++ b/common/lib/capa/capa/correctmap.py @@ -95,7 +95,7 @@ class CorrectMap(object): def is_correct(self, answer_id): if answer_id in self.cmap: - return self.cmap[answer_id]['correctness'] == 'correct' + return self.cmap[answer_id]['correctness'] in ['correct', 'partially-correct'] return None def is_queued(self, answer_id): diff --git a/common/lib/capa/capa/inputtypes.py b/common/lib/capa/capa/inputtypes.py index af4a447a841c28d744234cb621988ff51766d475..3993eeae2b606924bd519c67955e1df72cfe46c5 100644 --- a/common/lib/capa/capa/inputtypes.py +++ b/common/lib/capa/capa/inputtypes.py @@ -45,8 +45,10 @@ import re import shlex # for splitting quoted strings import sys import os +import pyparsing from registry import TagRegistry +from capa.chem import chemcalc log = logging.getLogger(__name__) @@ -215,6 +217,18 @@ class InputTypeBase(object): """ pass + def handle_ajax(self, dispatch, get): + """ + InputTypes that need to handle specialized AJAX should override this. + + Input: + dispatch: a string that can be used to determine how to handle the data passed in + get: a dictionary containing the data that was sent with the ajax call + + Output: + a dictionary object that can be serialized into JSON. This will be sent back to the Javascript. + """ + pass def _get_render_context(self): """ @@ -740,6 +754,45 @@ class ChemicalEquationInput(InputTypeBase): """ return {'previewer': '/static/js/capa/chemical_equation_preview.js', } + def handle_ajax(self, dispatch, get): + ''' + Since we only have chemcalc preview this input, check to see if it + matches the corresponding dispatch and send it through if it does + ''' + if dispatch == 'preview_chemcalc': + return self.preview_chemcalc(get) + return {} + + def preview_chemcalc(self, get): + """ + Render an html preview of a chemical formula or equation. get should + contain a key 'formula' and value 'some formula string'. + + Returns a json dictionary: + { + 'preview' : 'the-preview-html' or '' + 'error' : 'the-error' or '' + } + """ + + result = {'preview': '', + 'error': ''} + formula = get['formula'] + if formula is None: + result['error'] = "No formula specified." + return result + + try: + result['preview'] = chemcalc.render_to_html(formula) + except pyparsing.ParseException as p: + result['error'] = "Couldn't parse formula: {0}".format(p) + except Exception: + # this is unexpected, so log + log.warning("Error while previewing chemical formula", exc_info=True) + result['error'] = "Error while rendering preview" + + return result + registry.register(ChemicalEquationInput) #----------------------------------------------------------------------------- @@ -925,11 +978,12 @@ class EditAGeneInput(InputTypeBase): @classmethod def get_attributes(cls): """ - Note: width, hight, and dna_sequencee are required. - """ + Note: width, height, and dna_sequencee are required. + """ return [Attribute('width'), Attribute('height'), - Attribute('dna_sequence') + Attribute('dna_sequence'), + Attribute('genex_problem_number') ] def _extra_context(self): @@ -943,3 +997,111 @@ class EditAGeneInput(InputTypeBase): registry.register(EditAGeneInput) +#--------------------------------------------------------------------- + +class AnnotationInput(InputTypeBase): + """ + Input type for annotations: students can enter some notes or other text + (currently ungraded), and then choose from a set of tags/optoins, which are graded. + + Example: + + <annotationinput> + <title>Annotation Exercise</title> + <text> + They are the ones who, at the public assembly, had put savage derangement [ate] into my thinking + [phrenes] |89 on that day when I myself deprived Achilles of his honorific portion [geras] + </text> + <comment>Agamemnon says that ate or 'derangement' was the cause of his actions: why could Zeus say the same thing?</comment> + <comment_prompt>Type a commentary below:</comment_prompt> + <tag_prompt>Select one tag:</tag_prompt> + <options> + <option choice="correct">ate - both a cause and an effect</option> + <option choice="incorrect">ate - a cause</option> + <option choice="partially-correct">ate - an effect</option> + </options> + </annotationinput> + + # TODO: allow ordering to be randomized + """ + + template = "annotationinput.html" + tags = ['annotationinput'] + + def setup(self): + xml = self.xml + + self.debug = False # set to True to display extra debug info with input + self.return_to_annotation = True # return only works in conjunction with annotatable xmodule + + self.title = xml.findtext('./title', 'Annotation Exercise') + self.text = xml.findtext('./text') + self.comment = xml.findtext('./comment') + self.comment_prompt = xml.findtext('./comment_prompt', 'Type a commentary below:') + self.tag_prompt = xml.findtext('./tag_prompt', 'Select one tag:') + self.options = self._find_options() + + # Need to provide a value that JSON can parse if there is no + # student-supplied value yet. + if self.value == '': + self.value = 'null' + + self._validate_options() + + def _find_options(self): + ''' Returns an array of dicts where each dict represents an option. ''' + elements = self.xml.findall('./options/option') + return [{ + 'id': index, + 'description': option.text, + 'choice': option.get('choice') + } for (index, option) in enumerate(elements) ] + + def _validate_options(self): + ''' Raises a ValueError if the choice attribute is missing or invalid. ''' + valid_choices = ('correct', 'partially-correct', 'incorrect') + for option in self.options: + choice = option['choice'] + if choice is None: + raise ValueError('Missing required choice attribute.') + elif choice not in valid_choices: + raise ValueError('Invalid choice attribute: {0}. Must be one of: {1}'.format(choice, ', '.join(valid_choices))) + + def _unpack(self, json_value): + ''' Unpacks the json input state into a dict. ''' + d = json.loads(json_value) + if type(d) != dict: + d = {} + + comment_value = d.get('comment', '') + if not isinstance(comment_value, basestring): + comment_value = '' + + options_value = d.get('options', []) + if not isinstance(options_value, list): + options_value = [] + + return { + 'options_value': options_value, + 'has_options_value': len(options_value) > 0, # for convenience + 'comment_value': comment_value, + } + + def _extra_context(self): + extra_context = { + 'title': self.title, + 'text': self.text, + 'comment': self.comment, + 'comment_prompt': self.comment_prompt, + 'tag_prompt': self.tag_prompt, + 'options': self.options, + 'return_to_annotation': self.return_to_annotation, + 'debug': self.debug + } + + extra_context.update(self._unpack(self.value)) + + return extra_context + +registry.register(AnnotationInput) + diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index 36f240b0fcb0f1c5fd4ac4edf163f20225f94494..49ccb9b4150ac1f65744fe9c7b4ef3ce053852da 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -911,7 +911,8 @@ def sympy_check2(): allowed_inputfields = ['textline', 'textbox', 'crystallography', 'chemicalequationinput', 'vsepr_input', 'drag_and_drop_input', 'editamoleculeinput', - 'designprotein2dinput', 'editageneinput'] + 'designprotein2dinput', 'editageneinput', + 'annotationinput'] def setup_response(self): xml = self.xml @@ -1943,6 +1944,117 @@ class ImageResponse(LoncapaResponse): dict([(ie.get('id'), ie.get('regions')) for ie in self.ielements])) #----------------------------------------------------------------------------- +class AnnotationResponse(LoncapaResponse): + ''' + Checking of annotation responses. + + The response contains both a comment (student commentary) and an option (student tag). + Only the tag is currently graded. Answers may be incorrect, partially correct, or correct. + ''' + response_tag = 'annotationresponse' + allowed_inputfields = ['annotationinput'] + max_inputfields = 1 + default_scoring = {'incorrect': 0, 'partially-correct': 1, 'correct': 2 } + def setup_response(self): + xml = self.xml + self.scoring_map = self._get_scoring_map() + self.answer_map = self._get_answer_map() + self.maxpoints = self._get_max_points() + + def get_score(self, student_answers): + ''' Returns a CorrectMap for the student answer, which may include + partially correct answers.''' + student_answer = student_answers[self.answer_id] + student_option = self._get_submitted_option_id(student_answer) + + scoring = self.scoring_map[self.answer_id] + is_valid = student_option is not None and student_option in scoring.keys() + + (correctness, points) = ('incorrect', None) + if is_valid: + correctness = scoring[student_option]['correctness'] + points = scoring[student_option]['points'] + + return CorrectMap(self.answer_id, correctness=correctness, npoints=points) + + def get_answers(self): + return self.answer_map + + def _get_scoring_map(self): + ''' Returns a dict of option->scoring for each input. ''' + scoring = self.default_scoring + choices = dict([(choice,choice) for choice in scoring]) + scoring_map = {} + + for inputfield in self.inputfields: + option_scoring = dict([(option['id'], { + 'correctness': choices.get(option['choice']), + 'points': scoring.get(option['choice']) + }) for option in self._find_options(inputfield) ]) + + scoring_map[inputfield.get('id')] = option_scoring + + return scoring_map + + def _get_answer_map(self): + ''' Returns a dict of answers for each input.''' + answer_map = {} + for inputfield in self.inputfields: + correct_option = self._find_option_with_choice(inputfield, 'correct') + if correct_option is not None: + answer_map[inputfield.get('id')] = correct_option.get('description') + return answer_map + + def _get_max_points(self): + ''' Returns a dict of the max points for each input: input id -> maxpoints. ''' + scoring = self.default_scoring + correct_points = scoring.get('correct') + return dict([(inputfield.get('id'), correct_points) for inputfield in self.inputfields]) + + def _find_options(self, inputfield): + ''' Returns an array of dicts where each dict represents an option. ''' + elements = inputfield.findall('./options/option') + return [{ + 'id': index, + 'description': option.text, + 'choice': option.get('choice') + } for (index, option) in enumerate(elements) ] + + def _find_option_with_choice(self, inputfield, choice): + ''' Returns the option with the given choice value, otherwise None. ''' + for option in self._find_options(inputfield): + if option['choice'] == choice: + return option + + def _unpack(self, json_value): + ''' Unpacks a student response value submitted as JSON.''' + d = json.loads(json_value) + if type(d) != dict: + d = {} + + comment_value = d.get('comment', '') + if not isinstance(d, basestring): + comment_value = '' + + options_value = d.get('options', []) + if not isinstance(options_value, list): + options_value = [] + + return { + 'options_value': options_value, + 'comment_value': comment_value + } + + def _get_submitted_option_id(self, student_answer): + ''' Return the single option that was selected, otherwise None.''' + submitted = self._unpack(student_answer) + option_ids = submitted['options_value'] + if len(option_ids) == 1: + return option_ids[0] + return None + +#----------------------------------------------------------------------------- + # TEMPORARY: List of all response subclasses # FIXME: To be replaced by auto-registration @@ -1959,4 +2071,5 @@ __all__ = [CodeResponse, ChoiceResponse, MultipleChoiceResponse, TrueFalseResponse, - JavascriptResponse] + JavascriptResponse, + AnnotationResponse] diff --git a/common/lib/capa/capa/templates/annotationinput.html b/common/lib/capa/capa/templates/annotationinput.html new file mode 100644 index 0000000000000000000000000000000000000000..e0172bb13baab20a6799162933d2d18dff0335ab --- /dev/null +++ b/common/lib/capa/capa/templates/annotationinput.html @@ -0,0 +1,70 @@ +<form class="annotation-input"> +<div class="script_placeholder" data-src="/static/js/capa/annotationinput.js"/> + +<div class="annotation-header"> + ${title} + + % if return_to_annotation: + <a class="annotation-return" href="javascript:void(0)">Return to Annotation</a><br/> + % endif +</div> +<div class="annotation-body"> + + <div class="block block-highlight">${text}</div> + <div class="block block-comment">${comment}</div> + + <div class="block">${comment_prompt}</div> + <textarea class="comment" id="input_${id}_comment" name="input_${id}_comment">${comment_value|h}</textarea> + + <div class="block">${tag_prompt}</div> + <ul class="tags"> + % for option in options: + <li> + % if has_options_value: + % if all([c == 'correct' for c in option['choice'], status]): + <span class="tag-status correct" id="status_${id}"></span> + % elif all([c == 'partially-correct' for c in option['choice'], status]): + <span class="tag-status partially-correct" id="status_${id}"></span> + % elif all([c == 'incorrect' for c in option['choice'], status]): + <span class="tag-status incorrect" id="status_${id}"></span> + % endif + % endif + + <span class="tag + % if option['id'] in options_value: + selected + % endif + " data-id="${option['id']}"> + ${option['description']} + </span> + </li> + % endfor + </ul> + + % if debug: + <div class="debug-value"> + Rendered with value:<br/> + <pre>${value|h}</pre> + Current input value:<br/> + <input type="text" class="value" name="input_${id}" id="input_${id}" value="${value|h}" /> + </div> + % else: + <input type="hidden" class="value" name="input_${id}" id="input_${id}" value="${value|h}" /> + % endif + + % if status == 'unsubmitted': + <span class="unanswered" style="display:inline-block;" id="status_${id}"></span> + % elif status == 'incomplete': + <span class="incorrect" id="status_${id}"></span> + % elif status == 'incorrect' and not has_options_value: + <span class="incorrect" id="status_${id}"></span> + % endif + + <p id="answer_${id}" class="answer answer-annotation"></p> +</div> +</form> + +% if msg: +<span class="message">${msg|n}</span> +% endif + diff --git a/common/lib/capa/capa/templates/chemicalequationinput.html b/common/lib/capa/capa/templates/chemicalequationinput.html index dd177dc92085e5ba0a64788466e0d847568eb844..17c84114e54f28613d838181e5eaa528870b3695 100644 --- a/common/lib/capa/capa/templates/chemicalequationinput.html +++ b/common/lib/capa/capa/templates/chemicalequationinput.html @@ -11,7 +11,7 @@ <div class="incorrect" id="status_${id}"> % endif - <input type="text" name="input_${id}" id="input_${id}" value="${value|h}" + <input type="text" name="input_${id}" id="input_${id}" data-input-id="${id}" value="${value|h}" % if size: size="${size}" % endif diff --git a/common/lib/capa/capa/templates/choicegroup.html b/common/lib/capa/capa/templates/choicegroup.html index b9d8164321ccae14fb6fcf84eb93da29fdf4cced..881693307566876c6819e15970b90ec4d8733f82 100644 --- a/common/lib/capa/capa/templates/choicegroup.html +++ b/common/lib/capa/capa/templates/choicegroup.html @@ -1,37 +1,40 @@ <form class="choicegroup capa_inputtype" id="inputtype_${id}"> - - <fieldset> - % for choice_id, choice_description in choices: - <label for="input_${id}_${choice_id}"> - - % if choice_id in value: - <span class="indicator_container"> - % if status == 'unsubmitted': - <span class="unanswered" style="display:inline-block;" id="status_${id}"></span> - % elif status == 'correct': - <span class="correct" id="status_${id}"></span> - % elif status == 'incorrect': - <span class="incorrect" id="status_${id}"></span> - % elif status == 'incomplete': - <span class="incorrect" id="status_${id}"></span> - % endif - </span> - % else: - <span class="indicator_container"> </span> + <div class="indicator_container"> + % if input_type == 'checkbox' or not value: + % if status == 'unsubmitted': + <span class="unanswered" style="display:inline-block;" id="status_${id}"></span> + % elif status == 'correct': + <span class="correct" id="status_${id}"></span> + % elif status == 'incorrect': + <span class="incorrect" id="status_${id}"></span> + % elif status == 'incomplete': + <span class="incorrect" id="status_${id}"></span> % endif - - <input type="${input_type}" name="input_${id}${name_array_suffix}" id="input_${id}_${choice_id}" value="${choice_id}" - % if choice_id in value: - checked="true" % endif - /> - - ${choice_description} + </div> - </label> + <fieldset> + + % for choice_id, choice_description in choices: + <label for="input_${id}_${choice_id}" + % if input_type == 'radio' and choice_id in value: + <% + if status == 'correct': + correctness = 'correct' + if status == 'incorrect': + correctness = 'incorrect' + %> + class="choicegroup_${correctness}" + % endif + > + <input type="${input_type}" name="input_${id}${name_array_suffix}" id="input_${id}_${choice_id}" value="${choice_id}" + % if choice_id in value: + checked="true" + % endif - % endfor - <span id="answer_${id}"></span> - </fieldset> + /> ${choice_description} </label> + % endfor + <span id="answer_${id}"></span> + </fieldset> </form> diff --git a/common/lib/capa/capa/templates/editageneinput.html b/common/lib/capa/capa/templates/editageneinput.html index 8dd4fa89d1e6c3ee6b88986765dad92c4dbbb324..3465c625933a99f9121e6eaada65faa789b1829b 100644 --- a/common/lib/capa/capa/templates/editageneinput.html +++ b/common/lib/capa/capa/templates/editageneinput.html @@ -1,4 +1,5 @@ -<section id="editageneinput_${id}" class="editageneinput"> + <section id="editageneinput_${id}" class="editageneinput"> + <div class="script_placeholder" data-src="/static/js/capa/genex/genex.nocache.js?raw"/> <div class="script_placeholder" data-src="${applet_loader}"/> % if status == 'unsubmitted': @@ -8,16 +9,12 @@ % elif status == 'incorrect': <div class="incorrect" id="status_${id}"> % elif status == 'incomplete': - <div class="incorrect" id="status_${id}"> + <div class="incomplete" id="status_${id}"> % endif - - <object type="application/x-java-applet" id="applet_${id}" class="applet" width="${width}" height="${height}"> - <param name="archive" value="/static/applets/capa/genex.jar" /> - <param name="code" value="GX.GenexApplet.class" /> - <param name="DNA_SEQUENCE" value="${dna_sequence}" /> - Applet failed to run. No Java plug-in was found. - </object> - + + <div id="genex_container"></div> + <input type="hidden" name="dna_sequence" id="dna_sequence" value ="${dna_sequence}"></input> + <input type="hidden" name="genex_problem_number" id="genex_problem_number" value ="${genex_problem_number}"></input> <input type="hidden" name="input_${id}" id="input_${id}" value="${value|h}"/> <p class="status"> @@ -37,3 +34,4 @@ </div> % endif </section> + diff --git a/common/lib/capa/capa/tests/response_xml_factory.py b/common/lib/capa/capa/tests/response_xml_factory.py index fe918ec5db6186373572052442e5bd01ede51c68..7aa299d20dab8adfd8162c569eb6a64e37ef9328 100644 --- a/common/lib/capa/capa/tests/response_xml_factory.py +++ b/common/lib/capa/capa/tests/response_xml_factory.py @@ -666,3 +666,36 @@ class StringResponseXMLFactory(ResponseXMLFactory): def create_input_element(self, **kwargs): return ResponseXMLFactory.textline_input_xml(**kwargs) + +class AnnotationResponseXMLFactory(ResponseXMLFactory): + """ Factory for creating <annotationresponse> XML trees """ + def create_response_element(self, **kwargs): + """ Create a <annotationresponse> element """ + return etree.Element("annotationresponse") + + def create_input_element(self, **kwargs): + """ Create a <annotationinput> element.""" + + input_element = etree.Element("annotationinput") + + text_children = [ + {'tag': 'title', 'text': kwargs.get('title', 'super cool annotation') }, + {'tag': 'text', 'text': kwargs.get('text', 'texty text') }, + {'tag': 'comment', 'text':kwargs.get('comment', 'blah blah erudite comment blah blah') }, + {'tag': 'comment_prompt', 'text': kwargs.get('comment_prompt', 'type a commentary below') }, + {'tag': 'tag_prompt', 'text': kwargs.get('tag_prompt', 'select one tag') } + ] + + for child in text_children: + etree.SubElement(input_element, child['tag']).text = child['text'] + + default_options = [('green', 'correct'),('eggs', 'incorrect'),('ham', 'partially-correct')] + options = kwargs.get('options', default_options) + options_element = etree.SubElement(input_element, 'options') + + for (description, correctness) in options: + option_element = etree.SubElement(options_element, 'option', {'choice': correctness}) + option_element.text = description + + return input_element + diff --git a/common/lib/capa/capa/tests/test_html_render.py b/common/lib/capa/capa/tests/test_html_render.py index 64f031ea5965d8c587f93cacfb5b8edc8cad1777..6c74d06ef49bc94f6fbbcbcf96f56301673f4d56 100644 --- a/common/lib/capa/capa/tests/test_html_render.py +++ b/common/lib/capa/capa/tests/test_html_render.py @@ -3,6 +3,7 @@ from lxml import etree import os import textwrap import json + import mock from capa.capa_problem import LoncapaProblem @@ -11,6 +12,20 @@ from . import test_system class CapaHtmlRenderTest(unittest.TestCase): + def test_blank_problem(self): + """ + It's important that blank problems don't break, since that's + what you start with in studio. + """ + xml_str = "<problem> </problem>" + + # Create the problem + problem = LoncapaProblem(xml_str, '1', system=test_system) + + # Render the HTML + rendered_html = etree.XML(problem.get_html()) + # expect that we made it here without blowing up + def test_include_html(self): # Create a test file to include self._create_test_file('test_include.xml', @@ -25,7 +40,7 @@ class CapaHtmlRenderTest(unittest.TestCase): # Create the problem problem = LoncapaProblem(xml_str, '1', system=test_system) - + # Render the HTML rendered_html = etree.XML(problem.get_html()) @@ -35,6 +50,8 @@ class CapaHtmlRenderTest(unittest.TestCase): self.assertEqual(test_element.text, "Test include") + + def test_process_outtext(self): # Generate some XML with <startouttext /> and <endouttext /> xml_str = textwrap.dedent(""" @@ -45,7 +62,7 @@ class CapaHtmlRenderTest(unittest.TestCase): # Create the problem problem = LoncapaProblem(xml_str, '1', system=test_system) - + # Render the HTML rendered_html = etree.XML(problem.get_html()) @@ -64,7 +81,7 @@ class CapaHtmlRenderTest(unittest.TestCase): # Create the problem problem = LoncapaProblem(xml_str, '1', system=test_system) - + # Render the HTML rendered_html = etree.XML(problem.get_html()) @@ -72,6 +89,25 @@ class CapaHtmlRenderTest(unittest.TestCase): script_element = rendered_html.find('script') self.assertEqual(None, script_element) + def test_render_javascript(self): + # Generate some XML with a <script> tag + xml_str = textwrap.dedent(""" + <problem> + <script type="text/javascript">function(){}</script> + </problem> + """) + + # Create the problem + problem = LoncapaProblem(xml_str, '1', system=test_system) + + # Render the HTML + rendered_html = etree.XML(problem.get_html()) + + + # expect the javascript is still present in the rendered html + self.assertTrue("<script type=\"text/javascript\">function(){}</script>" in etree.tostring(rendered_html)) + + def test_render_response_xml(self): # Generate some XML for a string response kwargs = {'question_text': "Test question", @@ -99,11 +135,11 @@ class CapaHtmlRenderTest(unittest.TestCase): response_element = rendered_html.find("span") self.assertEqual(response_element.tag, "span") - # Expect that the response <span> + # Expect that the response <span> # that contains a <div> for the textline textline_element = response_element.find("div") self.assertEqual(textline_element.text, 'Input Template Render') - + # Expect a child <div> for the solution # with the rendered template solution_element = rendered_html.find("div") @@ -112,19 +148,21 @@ class CapaHtmlRenderTest(unittest.TestCase): # Expect that the template renderer was called with the correct # arguments, once for the textline input and once for # the solution - expected_textline_context = {'status': 'unsubmitted', - 'value': '', - 'preprocessor': None, - 'msg': '', - 'inline': False, - 'hidden': False, - 'do_math': False, - 'id': '1_2_1', + expected_textline_context = {'status': 'unsubmitted', + 'value': '', + 'preprocessor': None, + 'msg': '', + 'inline': False, + 'hidden': False, + 'do_math': False, + 'id': '1_2_1', 'size': None} expected_solution_context = {'id': '1_solution_1'} expected_calls = [mock.call('textline.html', expected_textline_context), + mock.call('solutionspan.html', expected_solution_context), + mock.call('textline.html', expected_textline_context), mock.call('solutionspan.html', expected_solution_context)] self.assertEqual(test_system.render_template.call_args_list, @@ -146,7 +184,7 @@ class CapaHtmlRenderTest(unittest.TestCase): # Create the problem and render the html problem = LoncapaProblem(xml_str, '1', system=test_system) - + # Grade the problem correctmap = problem.grade_answers({'1_2_1': 'test'}) diff --git a/common/lib/capa/capa/tests/test_inputtypes.py b/common/lib/capa/capa/tests/test_inputtypes.py index 8286f16b959b7ea1cf48ef1a2121a160aac65134..8bfcb819a44ddf37f816fca59433b844151bd016 100644 --- a/common/lib/capa/capa/tests/test_inputtypes.py +++ b/common/lib/capa/capa/tests/test_inputtypes.py @@ -482,27 +482,43 @@ class ChemicalEquationTest(unittest.TestCase): ''' Check that chemical equation inputs work. ''' - - def test_rendering(self): - size = "42" - xml_str = """<chemicalequationinput id="prob_1_2" size="{size}"/>""".format(size=size) + def setUp(self): + self.size = "42" + xml_str = """<chemicalequationinput id="prob_1_2" size="{size}"/>""".format(size=self.size) element = etree.fromstring(xml_str) state = {'value': 'H2OYeah', } - the_input = lookup_tag('chemicalequationinput')(test_system, element, state) + self.the_input = lookup_tag('chemicalequationinput')(test_system, element, state) - context = the_input._get_render_context() + + def test_rendering(self): + ''' Verify that the render context matches the expected render context''' + context = self.the_input._get_render_context() expected = {'id': 'prob_1_2', 'value': 'H2OYeah', 'status': 'unanswered', 'msg': '', - 'size': size, + 'size': self.size, 'previewer': '/static/js/capa/chemical_equation_preview.js', } self.assertEqual(context, expected) + + def test_chemcalc_ajax_sucess(self): + ''' Verify that using the correct dispatch and valid data produces a valid response''' + + data = {'formula': "H"} + response = self.the_input.handle_ajax("preview_chemcalc", data) + + self.assertTrue('preview' in response) + self.assertNotEqual(response['preview'], '') + self.assertEqual(response['error'], "") + + + + class DragAndDropTest(unittest.TestCase): ''' @@ -570,3 +586,65 @@ class DragAndDropTest(unittest.TestCase): context.pop('drag_and_drop_json') expected.pop('drag_and_drop_json') self.assertEqual(context, expected) + + +class AnnotationInputTest(unittest.TestCase): + ''' + Make sure option inputs work + ''' + def test_rendering(self): + xml_str = ''' +<annotationinput> + <title>foo</title> + <text>bar</text> + <comment>my comment</comment> + <comment_prompt>type a commentary</comment_prompt> + <tag_prompt>select a tag</tag_prompt> + <options> + <option choice="correct">x</option> + <option choice="incorrect">y</option> + <option choice="partially-correct">z</option> + </options> +</annotationinput> +''' + element = etree.fromstring(xml_str) + + value = {"comment": "blah blah", "options": [1]} + json_value = json.dumps(value) + state = { + 'value': json_value, + 'id': 'annotation_input', + 'status': 'answered' + } + + tag = 'annotationinput' + + the_input = lookup_tag(tag)(test_system, element, state) + + context = the_input._get_render_context() + + expected = { + 'id': 'annotation_input', + 'value': value, + 'status': 'answered', + 'msg': '', + 'title': 'foo', + 'text': 'bar', + 'comment': 'my comment', + 'comment_prompt': 'type a commentary', + 'tag_prompt': 'select a tag', + 'options': [ + {'id': 0, 'description': 'x', 'choice': 'correct'}, + {'id': 1, 'description': 'y', 'choice': 'incorrect'}, + {'id': 2, 'description': 'z', 'choice': 'partially-correct'} + ], + 'value': json_value, + 'options_value': value['options'], + 'has_options_value': len(value['options']) > 0, + 'comment_value': value['comment'], + 'debug': False, + 'return_to_annotation': True + } + + self.maxDiff = None + self.assertDictEqual(context, expected) diff --git a/common/lib/capa/capa/tests/test_responsetypes.py b/common/lib/capa/capa/tests/test_responsetypes.py index 1b78dfce5c9fb7ec41582a71c3a6db4c8ee32844..93a7e9628aec9a1ec6504e6c3e2ac9e2b49e42b6 100644 --- a/common/lib/capa/capa/tests/test_responsetypes.py +++ b/common/lib/capa/capa/tests/test_responsetypes.py @@ -906,3 +906,40 @@ class SchematicResponseTest(ResponseTest): # (That is, our script verifies that the context # is what we expect) self.assertEqual(correct_map.get_correctness('1_2_1'), 'correct') + +class AnnotationResponseTest(ResponseTest): + from response_xml_factory import AnnotationResponseXMLFactory + xml_factory_class = AnnotationResponseXMLFactory + + def test_grade(self): + (correct, partially, incorrect) = ('correct', 'partially-correct', 'incorrect') + + answer_id = '1_2_1' + options = (('x', correct),('y', partially),('z', incorrect)) + make_answer = lambda option_ids: {answer_id: json.dumps({'options': option_ids })} + + tests = [ + {'correctness': correct, 'points': 2,'answers': make_answer([0]) }, + {'correctness': partially, 'points': 1, 'answers': make_answer([1]) }, + {'correctness': incorrect, 'points': 0, 'answers': make_answer([2]) }, + {'correctness': incorrect, 'points': 0, 'answers': make_answer([0,1,2]) }, + {'correctness': incorrect, 'points': 0, 'answers': make_answer([]) }, + {'correctness': incorrect, 'points': 0, 'answers': make_answer('') }, + {'correctness': incorrect, 'points': 0, 'answers': make_answer(None) }, + {'correctness': incorrect, 'points': 0, 'answers': {answer_id: 'null' } }, + ] + + for (index, test) in enumerate(tests): + expected_correctness = test['correctness'] + expected_points = test['points'] + answers = test['answers'] + + problem = self.build_problem(options=options) + correct_map = problem.grade_answers(answers) + actual_correctness = correct_map.get_correctness(answer_id) + actual_points = correct_map.get_npoints(answer_id) + + self.assertEqual(expected_correctness, actual_correctness, + msg="%s should be marked %s" % (answer_id, expected_correctness)) + self.assertEqual(expected_points, actual_points, + msg="%s should have %d points" % (answer_id, expected_points)) diff --git a/common/lib/xmodule/setup.py b/common/lib/xmodule/setup.py index f7d500db548d211c6d89f1481a862203d39b8dea..85d42690b9f20a23130824e51606ef0ae1583424 100644 --- a/common/lib/xmodule/setup.py +++ b/common/lib/xmodule/setup.py @@ -48,6 +48,7 @@ setup( "about = xmodule.html_module:AboutDescriptor", "wrapper = xmodule.wrapper_module:WrapperDescriptor", "graphical_slider_tool = xmodule.gst_module:GraphicalSliderToolDescriptor", + "annotatable = xmodule.annotatable_module:AnnotatableDescriptor", "foldit = xmodule.foldit_module:FolditDescriptor", ] } diff --git a/common/lib/xmodule/xmodule/annotatable_module.py b/common/lib/xmodule/xmodule/annotatable_module.py new file mode 100644 index 0000000000000000000000000000000000000000..f093b76f52499ffb709b678c72c0807b82a75fa9 --- /dev/null +++ b/common/lib/xmodule/xmodule/annotatable_module.py @@ -0,0 +1,131 @@ +import logging + +from lxml import etree +from pkg_resources import resource_string, resource_listdir + +from xmodule.x_module import XModule +from xmodule.raw_module import RawDescriptor +from xmodule.modulestore.mongo import MongoModuleStore +from xmodule.modulestore.django import modulestore +from xmodule.contentstore.content import StaticContent + +log = logging.getLogger(__name__) + +class AnnotatableModule(XModule): + js = {'coffee': [resource_string(__name__, 'js/src/javascript_loader.coffee'), + resource_string(__name__, 'js/src/collapsible.coffee'), + resource_string(__name__, 'js/src/html/display.coffee'), + resource_string(__name__, 'js/src/annotatable/display.coffee')], + 'js': [] + } + js_module_name = "Annotatable" + css = {'scss': [resource_string(__name__, 'css/annotatable/display.scss')]} + icon_class = 'annotatable' + + def _get_annotation_class_attr(self, index, el): + """ Returns a dict with the CSS class attribute to set on the annotation + and an XML key to delete from the element. + """ + + attr = {} + cls = ['annotatable-span', 'highlight'] + highlight_key = 'highlight' + color = el.get(highlight_key) + + if color is not None: + if color in self.highlight_colors: + cls.append('highlight-'+color) + attr['_delete'] = highlight_key + attr['value'] = ' '.join(cls) + + return { 'class' : attr } + + def _get_annotation_data_attr(self, index, el): + """ Returns a dict in which the keys are the HTML data attributes + to set on the annotation element. Each data attribute has a + corresponding 'value' and (optional) '_delete' key to specify + an XML attribute to delete. + """ + + data_attrs = {} + attrs_map = { + 'body': 'data-comment-body', + 'title': 'data-comment-title', + 'problem': 'data-problem-id' + } + + for xml_key in attrs_map.keys(): + if xml_key in el.attrib: + value = el.get(xml_key, '') + html_key = attrs_map[xml_key] + data_attrs[html_key] = { 'value': value, '_delete': xml_key } + + return data_attrs + + def _render_annotation(self, index, el): + """ Renders an annotation element for HTML output. """ + attr = {} + attr.update(self._get_annotation_class_attr(index, el)) + attr.update(self._get_annotation_data_attr(index, el)) + + el.tag = 'span' + + for key in attr.keys(): + el.set(key, attr[key]['value']) + if '_delete' in attr[key] and attr[key]['_delete'] is not None: + delete_key = attr[key]['_delete'] + del el.attrib[delete_key] + + + def _render_content(self): + """ Renders annotatable content with annotation spans and returns HTML. """ + xmltree = etree.fromstring(self.content) + xmltree.tag = 'div' + if 'display_name' in xmltree.attrib: + del xmltree.attrib['display_name'] + + index = 0 + for el in xmltree.findall('.//annotation'): + self._render_annotation(index, el) + index += 1 + + return etree.tostring(xmltree, encoding='unicode') + + def _extract_instructions(self, xmltree): + """ Removes <instructions> from the xmltree and returns them as a string, otherwise None. """ + instructions = xmltree.find('instructions') + if instructions is not None: + instructions.tag = 'div' + xmltree.remove(instructions) + return etree.tostring(instructions, encoding='unicode') + return None + + def get_html(self): + """ Renders parameters to template. """ + context = { + 'display_name': self.display_name, + 'element_id': self.element_id, + 'instructions_html': self.instructions, + 'content_html': self._render_content() + } + + return self.system.render_template('annotatable.html', context) + + def __init__(self, system, location, definition, descriptor, + instance_state=None, shared_state=None, **kwargs): + XModule.__init__(self, system, location, definition, descriptor, + instance_state, shared_state, **kwargs) + + xmltree = etree.fromstring(self.definition['data']) + + self.instructions = self._extract_instructions(xmltree) + self.content = etree.tostring(xmltree, encoding='unicode') + self.element_id = self.location.html_id() + self.highlight_colors = ['yellow', 'orange', 'purple', 'blue', 'green'] + +class AnnotatableDescriptor(RawDescriptor): + module_class = AnnotatableModule + stores_state = True + template_dir_name = "annotatable" + mako_template = "widgets/raw-edit.html" + diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 0e5cb35d63441d6bf97c7fa5042c0c32b03d35d5..65b765315525cfe6985e2c24b900a557bc496da0 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -113,8 +113,6 @@ class CapaModule(XModule): if self.graceperiod is not None and due_date: self.close_date = due_date + self.graceperiod - #log.debug("Then parsed " + grace_period_string + - # " to closing date" + str(self.close_date)) else: self.close_date = due_date @@ -209,122 +207,176 @@ class CapaModule(XModule): 'progress': Progress.to_js_status_str(self.get_progress()) }) - def get_problem_html(self, encapsulate=True): - '''Return html for the problem. Adds check, reset, save buttons - as necessary based on the problem config and state.''' + def check_button_name(self): + """ + Determine the name for the "check" button. + Usually it is just "Check", but if this is the student's + final attempt, change the name to "Final Check" + """ + if self.max_attempts is not None: + final_check = (self.attempts >= self.max_attempts - 1) + else: + final_check = False - try: - html = self.lcp.get_html() - except Exception, err: - log.exception(err) + return "Final Check" if final_check else "Check" - # TODO (vshnayder): another switch on DEBUG. - if self.system.DEBUG: - msg = ( - '[courseware.capa.capa_module] <font size="+1" color="red">' - 'Failed to generate HTML for problem %s</font>' % - (self.location.url())) - msg += '<p>Error:</p><p><pre>%s</pre></p>' % str(err).replace('<', '<') - msg += '<p><pre>%s</pre></p>' % traceback.format_exc().replace('<', '<') - html = msg + def should_show_check_button(self): + """ + Return True/False to indicate whether to show the "Check" button. + """ + submitted_without_reset = (self.is_completed() and self.rerandomize == "always") + + # If the problem is closed (past due / too many attempts) + # then we do NOT show the "check" button + # Also, do not show the "check" button if we're waiting + # for the user to reset a randomized problem + if self.closed() or submitted_without_reset: + return False + else: + return True + + def should_show_reset_button(self): + """ + Return True/False to indicate whether to show the "Reset" button. + """ + is_survey_question = (self.max_attempts == 0) + + if self.rerandomize in ["always", "onreset"]: + + # If the problem is closed (and not a survey question with max_attempts==0), + # then do NOT show the reset button. + # If the problem hasn't been submitted yet, then do NOT show + # the reset button. + if (self.closed() and not is_survey_question) or not self.is_completed(): + return False else: - # We're in non-debug mode, and possibly even in production. We want - # to avoid bricking of problem as much as possible - - # Presumably, student submission has corrupted LoncapaProblem HTML. - # First, pull down all student answers - student_answers = self.lcp.student_answers - answer_ids = student_answers.keys() - - # Some inputtypes, such as dynamath, have additional "hidden" state that - # is not exposed to the student. Keep those hidden - # TODO: Use regex, e.g. 'dynamath' is suffix at end of answer_id - hidden_state_keywords = ['dynamath'] - for answer_id in answer_ids: - for hidden_state_keyword in hidden_state_keywords: - if answer_id.find(hidden_state_keyword) >= 0: - student_answers.pop(answer_id) - - # Next, generate a fresh LoncapaProblem - self.lcp = self.new_lcp(None) - self.set_state_from_lcp() - - # Prepend a scary warning to the student - warning = '<div class="capa_reset">'\ - '<h2>Warning: The problem has been reset to its initial state!</h2>'\ - 'The problem\'s state was corrupted by an invalid submission. ' \ - 'The submission consisted of:'\ - '<ul>' - for student_answer in student_answers.values(): - if student_answer != '': - warning += '<li>' + cgi.escape(student_answer) + '</li>' - warning += '</ul>'\ - 'If this error persists, please contact the course staff.'\ - '</div>' - - html = warning - try: - html += self.lcp.get_html() - except Exception: # Couldn't do it. Give up - log.exception("Unable to generate html from LoncapaProblem") - raise + return True + # Only randomized problems need a "reset" button + else: + return False - content = {'name': self.display_name, - 'html': html, - 'weight': self.descriptor.weight, - } + def should_show_save_button(self): + """ + Return True/False to indicate whether to show the "Save" button. + """ + + # If the user has forced the save button to display, + # then show it as long as the problem is not closed + # (past due / too many attempts) + if self.force_save_button == "true": + return not self.closed() + else: + is_survey_question = (self.max_attempts == 0) + needs_reset = self.is_completed() and self.rerandomize == "always" + + # If the problem is closed (and not a survey question with max_attempts==0), + # then do NOT show the reset button + # If we're waiting for the user to reset a randomized problem + # then do NOT show the reset button + if (self.closed() and not is_survey_question) or needs_reset: + return False + else: + return True + + def handle_problem_html_error(self, err): + """ + Change our problem to a dummy problem containing + a warning message to display to users. - # We using strings as truthy values, because the terminology of the - # check button is context-specific. + Returns the HTML to show to users - # Put a "Check" button if unlimited attempts or still some left - if self.max_attempts is None or self.attempts < self.max_attempts - 1: - check_button = "Check" + *err* is the Exception encountered while rendering the problem HTML. + """ + log.exception(err) + + # TODO (vshnayder): another switch on DEBUG. + if self.system.DEBUG: + msg = ( + '[courseware.capa.capa_module] <font size="+1" color="red">' + 'Failed to generate HTML for problem %s</font>' % + (self.location.url())) + msg += '<p>Error:</p><p><pre>%s</pre></p>' % str(err).replace('<', '<') + msg += '<p><pre>%s</pre></p>' % traceback.format_exc().replace('<', '<') + html = msg + + # We're in non-debug mode, and possibly even in production. We want + # to avoid bricking of problem as much as possible else: - # Will be final check so let user know that - check_button = "Final Check" + # We're in non-debug mode, and possibly even in production. We want + # to avoid bricking of problem as much as possible + + # Presumably, student submission has corrupted LoncapaProblem HTML. + # First, pull down all student answers + student_answers = self.lcp.student_answers + answer_ids = student_answers.keys() + + # Some inputtypes, such as dynamath, have additional "hidden" state that + # is not exposed to the student. Keep those hidden + # TODO: Use regex, e.g. 'dynamath' is suffix at end of answer_id + hidden_state_keywords = ['dynamath'] + for answer_id in answer_ids: + for hidden_state_keyword in hidden_state_keywords: + if answer_id.find(hidden_state_keyword) >= 0: + student_answers.pop(answer_id) + + # Next, generate a fresh LoncapaProblem + self.lcp = self.new_lcp(None) + self.set_state_from_lcp() - reset_button = True - save_button = True + # Prepend a scary warning to the student + warning = '<div class="capa_reset">'\ + '<h2>Warning: The problem has been reset to its initial state!</h2>'\ + 'The problem\'s state was corrupted by an invalid submission. ' \ + 'The submission consisted of:'\ + '<ul>' + for student_answer in student_answers.values(): + if student_answer != '': + warning += '<li>' + cgi.escape(student_answer) + '</li>' + warning += '</ul>'\ + 'If this error persists, please contact the course staff.'\ + '</div>' + + html = warning + try: + html += self.lcp.get_html() + except Exception: # Couldn't do it. Give up + log.exception("Unable to generate html from LoncapaProblem") + raise - # If we're after deadline, or user has exhausted attempts, - # question is read-only. - if self.closed(): - check_button = False - reset_button = False - save_button = False + return html - # If attempts=0 then show just check and reset buttons; this is for survey questions using capa - if self.max_attempts==0: - check_button = False - reset_button = True - save_button = True - # User submitted a problem, and hasn't reset. We don't want - # more submissions. - if self.done and self.rerandomize == "always": - check_button = False - save_button = False + def get_problem_html(self, encapsulate=True): + '''Return html for the problem. Adds check, reset, save buttons + as necessary based on the problem config and state.''' - # Only show the reset button if pressing it will show different values - if self.rerandomize not in ["always", "onreset"]: - reset_button = False + try: + html = self.lcp.get_html() - # User hasn't submitted an answer yet -- we don't want resets - if not self.done: - reset_button = False + # If we cannot construct the problem HTML, + # then generate an error message instead. + except Exception, err: + html = self.handle_problem_html_error(err) - # We may not need a "save" button if infinite number of attempts and - # non-randomized. The problem author can force it. It's a bit weird for - # randomization to control this; should perhaps be cleaned up. - if (not self.force_save_button) and (self.max_attempts is None and self.rerandomize != "always"): - save_button = False + + # The convention is to pass the name of the check button + # if we want to show a check button, and False otherwise + # This works because non-empty strings evaluate to True + if self.should_show_check_button(): + check_button = self.check_button_name() + else: + check_button = False + + content = {'name': self.display_name, + 'html': html, + 'weight': self.descriptor.weight, + } context = {'problem': content, 'id': self.id, 'check_button': check_button, - 'reset_button': reset_button, - 'save_button': save_button, + 'reset_button': self.should_show_reset_button(), + 'save_button': self.should_show_save_button(), 'answer_available': self.answer_available(), 'ajax_url': self.system.ajax_url, 'attempts_used': self.attempts, @@ -357,6 +409,7 @@ class CapaModule(XModule): 'problem_save': self.save_problem, 'problem_show': self.get_answer, 'score_update': self.update_score, + 'input_ajax': self.lcp.handle_input_ajax } if dispatch not in handlers: @@ -379,11 +432,8 @@ class CapaModule(XModule): datetime.datetime.utcnow() > self.close_date) def closed(self): - ''' Is the student prevented from submitting answers? ''' - if self.max_attempts is None: - return False - - if self.attempts >= self.max_attempts: + ''' Is the student still allowed to submit answers? ''' + if self.max_attempts is not None and self.attempts >= self.max_attempts: return True if self.is_past_due(): return True @@ -494,22 +544,60 @@ class CapaModule(XModule): @staticmethod def make_dict_of_responses(get): '''Make dictionary of student responses (aka "answers") - get is POST dictionary. + get is POST dictionary (Djano QueryDict). + + The *get* dict has keys of the form 'x_y', which are mapped + to key 'y' in the returned dict. For example, + 'input_1_2_3' would be mapped to '1_2_3' in the returned dict. + + Some inputs always expect a list in the returned dict + (e.g. checkbox inputs). The convention is that + keys in the *get* dict that end with '[]' will always + have list values in the returned dict. + For example, if the *get* dict contains {'input_1[]': 'test' } + then the output dict would contain {'1': ['test'] } + (the value is a list). + + Raises an exception if: + + A key in the *get* dictionary does not contain >= 1 underscores + (e.g. "input" is invalid; "input_1" is valid) + + Two keys end up with the same name in the returned dict. + (e.g. 'input_1' and 'input_1[]', which both get mapped + to 'input_1' in the returned dict) ''' answers = dict() + for key in get: # e.g. input_resistor_1 ==> resistor_1 _, _, name = key.partition('_') - # This allows for answers which require more than one value for - # the same form input (e.g. checkbox inputs). The convention is that - # if the name ends with '[]' (which looks like an array), then the - # answer will be an array. - if not name.endswith('[]'): - answers[name] = get[key] + # If key has no underscores, then partition + # will return (key, '', '') + # We detect this and raise an error + if not name: + raise ValueError("%s must contain at least one underscore" % str(key)) + else: - name = name[:-2] - answers[name] = get.getlist(key) + # This allows for answers which require more than one value for + # the same form input (e.g. checkbox inputs). The convention is that + # if the name ends with '[]' (which looks like an array), then the + # answer will be an array. + is_list_key = name.endswith('[]') + name = name[:-2] if is_list_key else name + + if is_list_key: + val = get.getlist(key) + else: + val = get[key] + + # If the name already exists, then we don't want + # to override it. Raise an error instead + if name in answers: + raise ValueError("Key %s already exists in answers dict" % str(name)) + else: + answers[name] = val return answers @@ -529,7 +617,7 @@ class CapaModule(XModule): ''' Checks whether answers to a problem are correct, and returns a map of correct/incorrect answers: - {'success' : bool, + {'success' : 'correct' | 'incorrect' | AJAX alert msg string, 'contents' : html} ''' event_info = dict() @@ -642,7 +730,12 @@ class CapaModule(XModule): ''' Changes problem state to unfinished -- removes student answers, and causes problem to rerender itself. - Returns problem html as { 'html' : html-string }. + Returns a dictionary of the form: + {'success': True/False, + 'html': Problem HTML string } + + If an error occurs, the dictionary will also have an + 'error' key containing an error message. ''' event_info = dict() event_info['old_state'] = self.lcp.get_state() @@ -676,7 +769,8 @@ class CapaModule(XModule): event_info['new_state'] = self.lcp.get_state() self.system.track_function('reset_problem', event_info) - return {'html': self.get_problem_html(encapsulate=False)} + return { 'success': True, + 'html': self.get_problem_html(encapsulate=False)} class CapaDescriptor(RawDescriptor): diff --git a/common/lib/xmodule/xmodule/css/annotatable/display.scss b/common/lib/xmodule/xmodule/css/annotatable/display.scss new file mode 100644 index 0000000000000000000000000000000000000000..308b379ec1ce2a7cd3d94cbe3952746f3f5e62f0 --- /dev/null +++ b/common/lib/xmodule/xmodule/css/annotatable/display.scss @@ -0,0 +1,169 @@ +$border-color: #C8C8C8; +$body-font-size: em(14); + +.annotatable-header { + margin-bottom: .5em; + .annotatable-title { + font-size: em(22); + text-transform: uppercase; + padding: 2px 4px; + } +} + +.annotatable-section { + position: relative; + padding: .5em 1em; + border: 1px solid $border-color; + border-radius: .5em; + margin-bottom: .5em; + + &.shaded { background-color: #EDEDED; } + + .annotatable-section-title { + font-weight: bold; + a { font-weight: normal; } + } + .annotatable-section-body { + border-top: 1px solid $border-color; + margin-top: .5em; + padding-top: .5em; + @include clearfix; + } + + ul.instructions-template { + list-style: disc; + margin-left: 4em; + b { font-weight: bold; } + i { font-style: italic; } + code { + display: inline; + white-space: pre; + font-family: Courier New, monospace; + } + } +} + +.annotatable-toggle { + position: absolute; + right: 0; + margin: 2px 1em 2px 0; + &.expanded:after { content: " \2191" } + &.collapsed:after { content: " \2193" } +} + +.annotatable-span { + display: inline; + cursor: pointer; + + @each $highlight in ( + (yellow rgba(255,255,10,0.3) rgba(255,255,10,0.9)), + (red rgba(178,19,16,0.3) rgba(178,19,16,0.9)), + (orange rgba(255,165,0,0.3) rgba(255,165,0,0.9)), + (green rgba(25,255,132,0.3) rgba(25,255,132,0.9)), + (blue rgba(35,163,255,0.3) rgba(35,163,255,0.9)), + (purple rgba(115,9,178,0.3) rgba(115,9,178,0.9))) { + + $marker: nth($highlight,1); + $color: nth($highlight,2); + $selected_color: nth($highlight,3); + + @if $marker == yellow { + &.highlight { + background-color: $color; + &.selected { background-color: $selected_color; } + } + } + &.highlight-#{$marker} { + background-color: $color; + &.selected { background-color: $selected_color; } + } + } + + &.hide { + cursor: none; + background-color: inherit; + .annotatable-icon { + display: none; + } + } + + .annotatable-comment { + display: none; + } +} + +.ui-tooltip.qtip.ui-tooltip { + font-size: $body-font-size; + border: 1px solid #333; + border-radius: 1em; + background-color: rgba(0,0,0,.85); + color: #fff; + -webkit-font-smoothing: antialiased; + + .ui-tooltip-titlebar { + font-size: em(16); + color: inherit; + background-color: transparent; + padding: 5px 10px; + border: none; + .ui-tooltip-title { + padding: 5px 0px; + border-bottom: 2px solid #333; + font-weight: bold; + } + .ui-tooltip-icon { + right: 10px; + background: #333; + } + .ui-state-hover { + color: inherit; + border: 1px solid #ccc; + } + } + .ui-tooltip-content { + color: inherit; + font-size: em(14); + text-align: left; + font-weight: 400; + padding: 0 10px 10px 10px; + background-color: transparent; + } + p { + color: inherit; + line-height: normal; + } +} + +.ui-tooltip.qtip.ui-tooltip-annotatable { + max-width: 375px; + .ui-tooltip-content { + padding: 0 10px; + .annotatable-comment { + display: block; + margin: 0px 0px 10px 0; + max-height: 225px; + overflow: auto; + } + .annotatable-reply { + display: block; + border-top: 2px solid #333; + padding: 5px 0; + margin: 0; + text-align: center; + } + } + &:after { + content: ''; + display: inline-block; + position: absolute; + bottom: -20px; + left: 50%; + height: 0; + width: 0; + margin-left: -5px; + border: 10px solid transparent; + border-top-color: rgba(0, 0, 0, .85); + } +} + + diff --git a/common/lib/xmodule/xmodule/css/capa/display.scss b/common/lib/xmodule/xmodule/css/capa/display.scss index b705f5146e560953c7366774d6b4cc0b171c423c..ab23bc1b48b2643d3b8a2041970fafb9a6838d79 100644 --- a/common/lib/xmodule/xmodule/css/capa/display.scss +++ b/common/lib/xmodule/xmodule/css/capa/display.scss @@ -42,6 +42,14 @@ section.problem { label.choicegroup_correct{ &:after{ content: url('../images/correct-icon.png'); + margin-left:15px + } + } + + label.choicegroup_incorrect{ + &:after{ + content: url('../images/incorrect-icon.png'); + margin-left:15px; } } @@ -52,6 +60,7 @@ section.problem { .indicator_container { float: left; width: 25px; + height: 1px; margin-right: 15px; } @@ -69,7 +78,7 @@ section.problem { } text { - display: block; + display: inline; margin-left: 25px; } } @@ -231,6 +240,15 @@ section.problem { width: 25px; } + &.partially-correct { + @include inline-block(); + background: url('../images/partially-correct-icon.png') center center no-repeat; + height: 20px; + position: relative; + top: 6px; + width: 25px; + } + &.incorrect, &.ui-icon-close { @include inline-block(); background: url('../images/incorrect-icon.png') center center no-repeat; @@ -802,4 +820,91 @@ section.problem { display: none; } } + + .annotation-input { + $yellow: rgba(255,255,10,0.3); + + border: 1px solid #ccc; + border-radius: 1em; + margin: 0 0 1em 0; + + .annotation-header { + font-weight: bold; + border-bottom: 1px solid #ccc; + padding: .5em 1em; + } + .annotation-body { padding: .5em 1em; } + a.annotation-return { + float: right; + font: inherit; + font-weight: normal; + } + a.annotation-return:after { content: " \2191" } + + .block, ul.tags { + margin: .5em 0; + padding: 0; + } + .block-highlight { + padding: .5em; + color: #333; + font-style: normal; + background-color: $yellow; + border: 1px solid darken($yellow, 10%); + } + .block-comment { font-style: italic; } + + ul.tags { + display: block; + list-style-type: none; + margin-left: 1em; + li { + display: block; + margin: 1em 0 0 0; + position: relative; + .tag { + display: inline-block; + cursor: pointer; + border: 1px solid rgb(102,102,102); + margin-left: 40px; + &.selected { + background-color: $yellow; + } + } + .tag-status { + position: absolute; + left: 0; + } + .tag-status, .tag { padding: .25em .5em; } + } + } + textarea.comment { + $num-lines-to-show: 5; + $line-height: 1.4em; + $padding: .2em; + width: 100%; + padding: $padding (2 * $padding); + line-height: $line-height; + height: ($num-lines-to-show * $line-height) + (2*$padding) - (($line-height - 1)/2); + } + .answer-annotation { display: block; margin: 0; } + + /* for debugging the input value field. enable the debug flag on the inputtype */ + .debug-value { + color: #fff; + padding: 1em; + margin: 1em 0; + background-color: #999; + border: 1px solid #000; + input[type="text"] { width: 100%; } + pre { background-color: #CCC; color: #000; } + &:before { + display: block; + content: "debug input value"; + text-transform: uppercase; + font-weight: bold; + font-size: 1.5em; + } + } + } } diff --git a/common/lib/xmodule/xmodule/foldit_module.py b/common/lib/xmodule/xmodule/foldit_module.py index 84deb1bb610a3028c4963be09b31ef2b4b4d5552..43a345eec1bae26f9589aa489e3f2021d4ac7e3d 100644 --- a/common/lib/xmodule/xmodule/foldit_module.py +++ b/common/lib/xmodule/xmodule/foldit_module.py @@ -97,6 +97,7 @@ class FolditModule(XModule): showbasic = (self.show_basic_score.lower() == "true") showleader = (self.show_leaderboard.lower() == "true") + context = { 'due': self.due, 'success': self.is_complete(), diff --git a/common/lib/xmodule/xmodule/js/fixtures/annotatable.html b/common/lib/xmodule/xmodule/js/fixtures/annotatable.html new file mode 100644 index 0000000000000000000000000000000000000000..61020d95e84943ce9979cef9ab8b7d8e89f87fe7 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/fixtures/annotatable.html @@ -0,0 +1,35 @@ +<section class='xmodule_display xmodule_AnnotatableModule' data-type='Annotatable'> + <div class="annotatable-wrapper"> + <div class="annotatable-header"> + <div class="annotatable-title">First Annotation Exercise</div> + </div> + <div class="annotatable-section"> + <div class="annotatable-section-title"> + Instructions + <a class="annotatable-toggle annotatable-toggle-instructions expanded" href="javascript:void(0)">Collapse Instructions</a> + </div> + <div class="annotatable-section-body annotatable-instructions"> + <div><p>The main goal of this exercise is to start practicing the art of slow reading.</p> + </div> + </div> + <div class="annotatable-section"> + <div class="annotatable-section-title"> + Guided Discussion + <a class="annotatable-toggle annotatable-toggle-annotations" href="javascript:void(0)">Hide Annotations</a> + </div> + </div> + <div class="annotatable-content"> + |87 No, those who are really responsible are Zeus and Fate [Moira] and the Fury [Erinys] who roams in the mist. <br/> + |88 <span data-problem-id="0" data-comment-body="Agamemnon says..." class="annotatable-span highlight" data-comment-title="Your Title Here">They are the ones who</span><br/> + |100 He [= Zeus], making a formal declaration [eukhesthai], spoke up at a meeting of all the gods and said: <br/> + |101 <span data-problem-id="1" data-comment-body="When Zeus speaks..." class="annotatable-span highlight">“hear me, all gods and all goddesses,</span><br/> + |113 but he swore a great oath. + <span data-problem-id="2" data-comment-body="How is the ‘veering off-course’ ..." class="annotatable-span highlight">And right then and there</span><br/> + </div> + </div> +</section> + +<section class="problem"><a class="annotation-return" href="javascript:void(0)">Return to Annotation</a></section> +<section class="problem"><a class="annotation-return" href="javascript:void(0)">Return to Annotation</a></section> +<section class="problem"><a class="annotation-return" href="javascript:void(0)">Return to Annotation</a></section> + diff --git a/common/lib/xmodule/xmodule/js/spec/annotatable/display_spec.coffee b/common/lib/xmodule/xmodule/js/spec/annotatable/display_spec.coffee new file mode 100644 index 0000000000000000000000000000000000000000..3adb028f9787a73d02c690cd7d06066b153513f5 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/spec/annotatable/display_spec.coffee @@ -0,0 +1,9 @@ +describe 'Annotatable', -> + beforeEach -> + loadFixtures 'annotatable.html' + describe 'constructor', -> + el = $('.xmodule_display.xmodule_AnnotatableModule') + beforeEach -> + @annotatable = new Annotatable(el) + it 'works', -> + expect(1).toBe(1) \ No newline at end of file diff --git a/common/lib/xmodule/xmodule/js/src/annotatable/display.coffee b/common/lib/xmodule/xmodule/js/src/annotatable/display.coffee new file mode 100644 index 0000000000000000000000000000000000000000..2ad49ae6d70e4577c4665643a8704a62c529b97b --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/annotatable/display.coffee @@ -0,0 +1,197 @@ +class @Annotatable + _debug: false + + # selectors for the annotatable xmodule + toggleAnnotationsSelector: '.annotatable-toggle-annotations' + toggleInstructionsSelector: '.annotatable-toggle-instructions' + instructionsSelector: '.annotatable-instructions' + sectionSelector: '.annotatable-section' + spanSelector: '.annotatable-span' + replySelector: '.annotatable-reply' + + # these selectors are for responding to events from the annotation capa problem type + problemXModuleSelector: '.xmodule_CapaModule' + problemSelector: 'section.problem' + problemInputSelector: 'section.problem .annotation-input' + problemReturnSelector: 'section.problem .annotation-return' + + constructor: (el) -> + console.log 'loaded Annotatable' if @_debug + @el = el + @$el = $(el) + @init() + + $: (selector) -> + $(selector, @el) + + init: () -> + @initEvents() + @initTips() + + initEvents: () -> + # Initialize toggle handlers for the instructions and annotations sections + [@annotationsHidden, @instructionsHidden] = [false, false] + @$(@toggleAnnotationsSelector).bind 'click', @onClickToggleAnnotations + @$(@toggleInstructionsSelector).bind 'click', @onClickToggleInstructions + + # Initialize handler for 'reply to annotation' events that scroll to + # the associated problem. The reply buttons are part of the tooltip + # content. It's important that the tooltips be configured to render + # as descendants of the annotation module and *not* the document.body. + @$el.delegate @replySelector, 'click', @onClickReply + + # Initialize handler for 'return to annotation' events triggered from problems. + # 1) There are annotationinput capa problems rendered on the page + # 2) Each one has an embedded return link (see annotation capa problem template). + # Since the capa problem injects HTML content via AJAX, the best we can do is + # is let the click events bubble up to the body and handle them there. + $('body').delegate @problemReturnSelector, 'click', @onClickReturn + + initTips: () -> + # tooltips are used to display annotations for highlighted text spans + @$(@spanSelector).each (index, el) => + $(el).qtip(@getSpanTipOptions el) + + getSpanTipOptions: (el) -> + content: + title: + text: @makeTipTitle(el) + text: @makeTipContent(el) + position: + my: 'bottom center' # of tooltip + at: 'top center' # of target + target: $(el) # where the tooltip was triggered (i.e. the annotation span) + container: @$el + adjust: + y: -5 + show: + event: 'click mouseenter' + solo: true + hide: + event: 'click mouseleave' + delay: 500, + fixed: true # don't hide the tooltip if it is moused over + style: + classes: 'ui-tooltip-annotatable' + events: + show: @onShowTip + + onClickToggleAnnotations: (e) => @toggleAnnotations() + + onClickToggleInstructions: (e) => @toggleInstructions() + + onClickReply: (e) => @replyTo(e.currentTarget) + + onClickReturn: (e) => @returnFrom(e.currentTarget) + + onShowTip: (event, api) => + event.preventDefault() if @annotationsHidden + + getSpanForProblemReturn: (el) -> + problem_id = $(@problemReturnSelector).index(el) + @$(@spanSelector).filter("[data-problem-id='#{problem_id}']") + + getProblem: (el) -> + problem_id = @getProblemId(el) + $(@problemSelector).has(@problemInputSelector).eq(problem_id) + + getProblemId: (el) -> + $(el).data('problem-id') + + toggleAnnotations: () -> + hide = (@annotationsHidden = not @annotationsHidden) + @toggleAnnotationButtonText hide + @toggleSpans hide + @toggleTips hide + + toggleTips: (hide) -> + visible = @findVisibleTips() + @hideTips visible + + toggleAnnotationButtonText: (hide) -> + buttonText = (if hide then 'Show' else 'Hide')+' Annotations' + @$(@toggleAnnotationsSelector).text(buttonText) + + toggleInstructions: () -> + hide = (@instructionsHidden = not @instructionsHidden) + @toggleInstructionsButton hide + @toggleInstructionsText hide + + toggleInstructionsButton: (hide) -> + txt = (if hide then 'Expand' else 'Collapse')+' Instructions' + cls = (if hide then ['expanded', 'collapsed'] else ['collapsed','expanded']) + @$(@toggleInstructionsSelector).text(txt).removeClass(cls[0]).addClass(cls[1]) + + toggleInstructionsText: (hide) -> + slideMethod = (if hide then 'slideUp' else 'slideDown') + @$(@instructionsSelector)[slideMethod]() + + toggleSpans: (hide) -> + @$(@spanSelector).toggleClass 'hide', hide, 250 + + replyTo: (buttonEl) -> + offset = -20 + el = @getProblem buttonEl + if el.length > 0 + @scrollTo(el, @afterScrollToProblem, offset) + else + console.log('problem not found. event: ', e) if @_debug + + returnFrom: (buttonEl) -> + offset = -200 + el = @getSpanForProblemReturn buttonEl + if el.length > 0 + @scrollTo(el, @afterScrollToSpan, offset) + else + console.log('span not found. event:', e) if @_debug + + scrollTo: (el, after, offset = -20) -> + $('html,body').scrollTo(el, { + duration: 500 + onAfter: @_once => after?.call this, el + offset: offset + }) if $(el).length > 0 + + afterScrollToProblem: (problem_el) -> + problem_el.effect 'highlight', {}, 500 + + afterScrollToSpan: (span_el) -> + span_el.addClass 'selected', 400, 'swing', -> + span_el.removeClass 'selected', 400, 'swing' + + makeTipContent: (el) -> + (api) => + text = $(el).data('comment-body') + comment = @createComment(text) + problem_id = @getProblemId(el) + reply = @createReplyLink(problem_id) + $(comment).add(reply) + + makeTipTitle: (el) -> + (api) => + title = $(el).data('comment-title') + (if title then title else 'Commentary') + + createComment: (text) -> + $("<div class=\"annotatable-comment\">#{text}</div>") + + createReplyLink: (problem_id) -> + $("<a class=\"annotatable-reply\" href=\"javascript:void(0);\" data-problem-id=\"#{problem_id}\">Reply to Annotation</a>") + + findVisibleTips: () -> + visible = [] + @$(@spanSelector).each (index, el) -> + api = $(el).qtip('api') + tip = $(api?.elements.tooltip) + if tip.is(':visible') + visible.push el + visible + + hideTips: (elements) -> + $(elements).qtip('hide') + + _once: (fn) -> + done = false + return => + fn.call this unless done + done = true diff --git a/common/lib/xmodule/xmodule/js/src/capa/display.coffee b/common/lib/xmodule/xmodule/js/src/capa/display.coffee index 41c9b508916fd311278f4c83795141a945ff1013..158c2b98d0c9c40d4d3bfc5395c59b579b947cc0 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/capa/display.coffee @@ -76,6 +76,24 @@ class @Problem # TODO: Some logic to dynamically adjust polling rate based on queuelen window.queuePollerID = window.setTimeout(@poll, 1000) + + # Use this if you want to make an ajax call on the input type object + # static method so you don't have to instantiate a Problem in order to use it + # Input: + # url: the AJAX url of the problem + # input_id: the input_id of the input you would like to make the call on + # NOTE: the id is the ${id} part of "input_${id}" during rendering + # If this function is passed the entire prefixed id, the backend may have trouble + # finding the correct input + # dispatch: string that indicates how this data should be handled by the inputtype + # callback: the function that will be called once the AJAX call has been completed. + # It will be passed a response object + @inputAjax: (url, input_id, dispatch, data, callback) -> + data['dispatch'] = dispatch + data['input_id'] = input_id + $.postWithPrefix "#{url}/input_ajax", data, callback + + render: (content) -> if content @el.html(content) diff --git a/common/lib/xmodule/xmodule/templates/annotatable/default.yaml b/common/lib/xmodule/xmodule/templates/annotatable/default.yaml new file mode 100644 index 0000000000000000000000000000000000000000..31dd489fb4e7bca29310cbff1be7ff0087282461 --- /dev/null +++ b/common/lib/xmodule/xmodule/templates/annotatable/default.yaml @@ -0,0 +1,20 @@ +--- +metadata: + display_name: 'Annotation' +data: | + <annotatable> + <instructions> + <p>Enter your (optional) instructions for the exercise in HTML format.</p> + <p>Annotations are specified by an <code><annotation></code> tag which may may have the following attributes:</p> + <ul class="instructions-template"> + <li><code>title</code> (optional). Title of the annotation. Defaults to <i>Commentary</i> if omitted.</li> + <li><code>body</code> (<b>required</b>). Text of the annotation.</li> + <li><code>problem</code> (optional). Numeric index of the problem associated with this annotation. This is a zero-based index, so the first problem on the page would have <code>problem="0"</code>.</li> + <li><code>highlight</code> (optional). Possible values: yellow, red, orange, green, blue, or purple. Defaults to yellow if this attribute is omitted.</li> + </ul> + </instructions> + <p>Add your HTML with annotation spans here.</p> + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. <annotation title="My title" body="My comment" highlight="yellow" problem="0">Ut sodales laoreet est, egestas gravida felis egestas nec.</annotation> Aenean at volutpat erat. Cras commodo viverra nibh in aliquam.</p> + <p>Nulla facilisi. <annotation body="Basic annotation example." problem="1">Pellentesque id vestibulum libero.</annotation> Suspendisse potenti. Morbi scelerisque nisi vitae felis dictum mattis. Nam sit amet magna elit. Nullam volutpat cursus est, sit amet sagittis odio vulputate et. Curabitur euismod, orci in vulputate imperdiet, augue lorem tempor purus, id aliquet augue turpis a est. Aenean a sagittis libero. Praesent fringilla pretium magna, non condimentum risus elementum nec. Pellentesque faucibus elementum pharetra. Pellentesque vitae metus eros.</p> + </annotatable> +children: [] diff --git a/common/lib/xmodule/xmodule/tests/__init__.py b/common/lib/xmodule/xmodule/tests/__init__.py index 8db3d72aec3e079515006ffd93bd1f22dabaf22a..1a10654f6c424632ece53916697158ea5c864214 100644 --- a/common/lib/xmodule/xmodule/tests/__init__.py +++ b/common/lib/xmodule/xmodule/tests/__init__.py @@ -28,22 +28,36 @@ open_ended_grading_interface = { 'grading_controller' : 'grading_controller' } -test_system = ModuleSystem( - ajax_url='courses/course_id/modx/a_location', - track_function=Mock(), - get_module=Mock(), - # "render" to just the context... - render_template=lambda template, context: str(context), - replace_urls=Mock(), - user=Mock(is_staff=False), - filestore=Mock(), - debug=True, - xqueue={'interface': None, 'callback_url': '/', 'default_queuename': 'testqueue', 'waittime': 10}, - node_path=os.environ.get("NODE_PATH", "/usr/local/lib/node_modules"), - xblock_model_data=lambda descriptor: descriptor._model_data, - anonymous_student_id='student', - open_ended_grading_interface=open_ended_grading_interface, -) + +def test_system(): + """ + Construct a test ModuleSystem instance. + + By default, the render_template() method simply returns + the context it is passed as a string. + You can override this behavior by monkey patching: + + system = test_system() + system.render_template = my_render_func + + where my_render_func is a function of the form + my_render_func(template, context) + """ + return ModuleSystem( + ajax_url='courses/course_id/modx/a_location', + track_function=Mock(), + get_module=Mock(), + render_template=lambda template, context: str(context), + replace_urls=lambda html: str(html), + user=Mock(is_staff=False), + filestore=Mock(), + debug=True, + xqueue={'interface': None, 'callback_url': '/', 'default_queuename': 'testqueue', 'waittime': 10}, + node_path=os.environ.get("NODE_PATH", "/usr/local/lib/node_modules"), + xblock_model_data=lambda descriptor: descriptor._model_data, + anonymous_student_id='student', + open_ended_grading_interface= open_ended_grading_interface + ) class ModelsTest(unittest.TestCase): diff --git a/common/lib/xmodule/xmodule/tests/test_annotatable_module.py b/common/lib/xmodule/xmodule/tests/test_annotatable_module.py new file mode 100644 index 0000000000000000000000000000000000000000..30f9c9ff9205c55641ec4a41d0bc872956e7f0de --- /dev/null +++ b/common/lib/xmodule/xmodule/tests/test_annotatable_module.py @@ -0,0 +1,129 @@ +"""Module annotatable tests""" + +import unittest + +from lxml import etree +from mock import Mock + +from xmodule.annotatable_module import AnnotatableModule +from xmodule.modulestore import Location + +from . import test_system + +class AnnotatableModuleTestCase(unittest.TestCase): + location = Location(["i4x", "edX", "toy", "annotatable", "guided_discussion"]) + sample_xml = ''' + <annotatable display_name="Iliad"> + <instructions>Read the text.</instructions> + <p> + <annotation body="first">Sing</annotation>, + <annotation title="goddess" body="second">O goddess</annotation>, + <annotation title="anger" body="third" highlight="blue">the anger of Achilles son of Peleus</annotation>, + that brought <i>countless</i> ills upon the Achaeans. Many a brave soul did it send + hurrying down to Hades, and many a hero did it yield a prey to dogs and + <div style="font-weight:bold"><annotation body="fourth" problem="4">vultures</annotation>, for so were the counsels + of Jove fulfilled from the day on which the son of Atreus, king of men, and great + Achilles, first fell out with one another.</div> + </p> + <annotation title="footnote" body="the end">The Iliad of Homer by Samuel Butler</annotation> + </annotatable> + ''' + definition = { 'data': sample_xml } + descriptor = Mock() + instance_state = None + shared_state = None + + def setUp(self): + self.annotatable = AnnotatableModule(test_system(), self.location, self.definition, self.descriptor, self.instance_state, self.shared_state) + + def test_annotation_data_attr(self): + el = etree.fromstring('<annotation title="bar" body="foo" problem="0">test</annotation>') + + expected_attr = { + 'data-comment-body': {'value': 'foo', '_delete': 'body' }, + 'data-comment-title': {'value': 'bar', '_delete': 'title'}, + 'data-problem-id': {'value': '0', '_delete': 'problem'} + } + + actual_attr = self.annotatable._get_annotation_data_attr(0, el) + + self.assertTrue(type(actual_attr) is dict) + self.assertDictEqual(expected_attr, actual_attr) + + def test_annotation_class_attr_default(self): + xml = '<annotation title="x" body="y" problem="0">test</annotation>' + el = etree.fromstring(xml) + + expected_attr = { 'class': { 'value': 'annotatable-span highlight' } } + actual_attr = self.annotatable._get_annotation_class_attr(0, el) + + self.assertTrue(type(actual_attr) is dict) + self.assertDictEqual(expected_attr, actual_attr) + + def test_annotation_class_attr_with_valid_highlight(self): + xml = '<annotation title="x" body="y" problem="0" highlight="{highlight}">test</annotation>' + + for color in self.annotatable.highlight_colors: + el = etree.fromstring(xml.format(highlight=color)) + value = 'annotatable-span highlight highlight-{highlight}'.format(highlight=color) + + expected_attr = { 'class': { + 'value': value, + '_delete': 'highlight' } + } + actual_attr = self.annotatable._get_annotation_class_attr(0, el) + + self.assertTrue(type(actual_attr) is dict) + self.assertDictEqual(expected_attr, actual_attr) + + def test_annotation_class_attr_with_invalid_highlight(self): + xml = '<annotation title="x" body="y" problem="0" highlight="{highlight}">test</annotation>' + + for invalid_color in ['rainbow', 'blink', 'invisible', '', None]: + el = etree.fromstring(xml.format(highlight=invalid_color)) + expected_attr = { 'class': { + 'value': 'annotatable-span highlight', + '_delete': 'highlight' } + } + actual_attr = self.annotatable._get_annotation_class_attr(0, el) + + self.assertTrue(type(actual_attr) is dict) + self.assertDictEqual(expected_attr, actual_attr) + + def test_render_annotation(self): + expected_html = '<span class="annotatable-span highlight highlight-yellow" data-comment-title="x" data-comment-body="y" data-problem-id="0">z</span>' + expected_el = etree.fromstring(expected_html) + + actual_el = etree.fromstring('<annotation title="x" body="y" problem="0" highlight="yellow">z</annotation>') + self.annotatable._render_annotation(0, actual_el) + + self.assertEqual(expected_el.tag, actual_el.tag) + self.assertEqual(expected_el.text, actual_el.text) + self.assertDictEqual(dict(expected_el.attrib), dict(actual_el.attrib)) + + def test_render_content(self): + content = self.annotatable._render_content() + el = etree.fromstring(content) + + self.assertEqual('div', el.tag, 'root tag is a div') + + expected_num_annotations = 5 + actual_num_annotations = el.xpath('count(//span[contains(@class,"annotatable-span")])') + self.assertEqual(expected_num_annotations, actual_num_annotations, 'check number of annotations') + + def test_get_html(self): + context = self.annotatable.get_html() + for key in ['display_name', 'element_id', 'content_html', 'instructions_html']: + self.assertIn(key, context) + + def test_extract_instructions(self): + xmltree = etree.fromstring(self.sample_xml) + + expected_xml = u"<div>Read the text.</div>" + actual_xml = self.annotatable._extract_instructions(xmltree) + self.assertIsNotNone(actual_xml) + self.assertEqual(expected_xml.strip(), actual_xml.strip()) + + xmltree = etree.fromstring('<annotatable>foo</annotatable>') + actual = self.annotatable._extract_instructions(xmltree) + self.assertIsNone(actual) diff --git a/common/lib/xmodule/xmodule/tests/test_capa_module.py b/common/lib/xmodule/xmodule/tests/test_capa_module.py index dbcee08c0cf13d1c8443e93aba118e5571bb7741..ca8f267c3965fc0a5c29af1b7e6c46ed7677e8e2 100644 --- a/common/lib/xmodule/xmodule/tests/test_capa_module.py +++ b/common/lib/xmodule/xmodule/tests/test_capa_module.py @@ -1,13 +1,18 @@ import datetime import json -from mock import Mock +from mock import Mock, MagicMock, patch from pprint import pprint import unittest +import random +import xmodule +import capa from xmodule.capa_module import CapaModule from xmodule.modulestore import Location from lxml import etree +from django.http import QueryDict + from . import test_system @@ -33,6 +38,18 @@ class CapaFactory(object): CapaFactory.num += 1 return CapaFactory.num + @staticmethod + def input_key(): + """ Return the input key to use when passing GET parameters """ + return ("input_" + CapaFactory.answer_key()) + + @staticmethod + def answer_key(): + """ Return the key stored in the capa problem answer dict """ + return ("-".join(['i4x', 'edX', 'capa_test', 'problem', + 'SampleProblem%d' % CapaFactory.num]) + + "_2_1") + @staticmethod def create(graceperiod=None, due=None, @@ -59,7 +76,6 @@ class CapaFactory(object): module. attempts: also added to instance state. Will be converted to an int. - correct: if True, the problem will be initialized to be answered correctly. """ definition = {'data': CapaFactory.sample_problem_xml, } location = Location(["i4x", "edX", "capa_test", "problem", @@ -87,13 +103,14 @@ class CapaFactory(object): # since everything else is a string. model_data['attempts'] = int(attempts) - if correct: - # TODO: make this actually set an answer of 3.14, and mark it correct - #instance_state_dict['student_answers'] = {} - #instance_state_dict['correct_map'] = {} - pass + if len(instance_state_dict) > 0: + instance_state = json.dumps(instance_state_dict) + else: + instance_state = None - module = CapaModule(test_system, location, descriptor, model_data) + system = test_system() + system.render_template = Mock(return_value="<div>Test Template HTML</div>") + module = CapaModule(system, location, descriptor, model_data) if correct: # TODO: probably better to actually set the internal state properly, but... @@ -127,6 +144,8 @@ class CapaModuleTest(unittest.TestCase): "Factory should be creating unique names for each problem") + + def test_correct(self): """ Check that the factory creates correct and incorrect problems properly. @@ -170,6 +189,7 @@ class CapaModuleTest(unittest.TestCase): max_attempts="1", attempts="0", due=self.yesterday_str) + self.assertTrue(after_due_date.answer_available()) @@ -274,3 +294,602 @@ class CapaModuleTest(unittest.TestCase): due=self.yesterday_str, graceperiod=self.two_day_delta_str) self.assertTrue(still_in_grace.answer_available()) + + + def test_closed(self): + + # Attempts < Max attempts --> NOT closed + module = CapaFactory.create(max_attempts="1", attempts="0") + self.assertFalse(module.closed()) + + # Attempts < Max attempts --> NOT closed + module = CapaFactory.create(max_attempts="2", attempts="1") + self.assertFalse(module.closed()) + + # Attempts = Max attempts --> closed + module = CapaFactory.create(max_attempts="1", attempts="1") + self.assertTrue(module.closed()) + + # Attempts > Max attempts --> closed + module = CapaFactory.create(max_attempts="1", attempts="2") + self.assertTrue(module.closed()) + + # Max attempts = 0 --> closed + module = CapaFactory.create(max_attempts="0", attempts="2") + self.assertTrue(module.closed()) + + # Past due --> closed + module = CapaFactory.create(max_attempts="1", attempts="0", + due=self.yesterday_str) + self.assertTrue(module.closed()) + + + def test_parse_get_params(self): + + # We have to set up Django settings in order to use QueryDict + from django.conf import settings + settings.configure() + + # Valid GET param dict + valid_get_dict = self._querydict_from_dict({'input_1': 'test', + 'input_1_2': 'test', + 'input_1_2_3': 'test', + 'input_[]_3': 'test', + 'input_4': None, + 'input_5': [], + 'input_6': 5}) + + result = CapaModule.make_dict_of_responses(valid_get_dict) + + # Expect that we get a dict with "input" stripped from key names + # and that we get the same values back + for key in result.keys(): + original_key = "input_" + key + self.assertTrue(original_key in valid_get_dict, + "Output dict should have key %s" % original_key) + self.assertEqual(valid_get_dict[original_key], result[key]) + + + # Valid GET param dict with list keys + valid_get_dict = self._querydict_from_dict({'input_2[]': ['test1', 'test2']}) + result = CapaModule.make_dict_of_responses(valid_get_dict) + self.assertTrue('2' in result) + self.assertEqual(['test1','test2'], result['2']) + + # If we use [] at the end of a key name, we should always + # get a list, even if there's just one value + valid_get_dict = self._querydict_from_dict({'input_1[]': 'test'}) + result = CapaModule.make_dict_of_responses(valid_get_dict) + self.assertEqual(result['1'], ['test']) + + # If we have no underscores in the name, then the key is invalid + invalid_get_dict = self._querydict_from_dict({'input': 'test'}) + with self.assertRaises(ValueError): + result = CapaModule.make_dict_of_responses(invalid_get_dict) + + + # Two equivalent names (one list, one non-list) + # One of the values would overwrite the other, so detect this + # and raise an exception + invalid_get_dict = self._querydict_from_dict({'input_1[]': 'test 1', + 'input_1': 'test 2' }) + with self.assertRaises(ValueError): + result = CapaModule.make_dict_of_responses(invalid_get_dict) + + def _querydict_from_dict(self, param_dict): + """ Create a Django QueryDict from a Python dictionary """ + + # QueryDict objects are immutable by default, so we make + # a copy that we can update. + querydict = QueryDict('') + copyDict = querydict.copy() + + for (key, val) in param_dict.items(): + + # QueryDicts handle lists differently from ordinary values, + # so we have to specifically tell the QueryDict that + # this is a list + if type(val) is list: + copyDict.setlist(key, val) + else: + copyDict[key] = val + + return copyDict + + + def test_check_problem_correct(self): + + module = CapaFactory.create(attempts=1) + + # Simulate that all answers are marked correct, no matter + # what the input is, by patching CorrectMap.is_correct() + # Also simulate rendering the HTML + with patch('capa.correctmap.CorrectMap.is_correct') as mock_is_correct,\ + patch('xmodule.capa_module.CapaModule.get_problem_html') as mock_html: + mock_is_correct.return_value = True + mock_html.return_value = "Test HTML" + + # Check the problem + get_request_dict = { CapaFactory.input_key(): '3.14' } + result = module.check_problem(get_request_dict) + + # Expect that the problem is marked correct + self.assertEqual(result['success'], 'correct') + + # Expect that we get the (mocked) HTML + self.assertEqual(result['contents'], 'Test HTML') + + # Expect that the number of attempts is incremented by 1 + self.assertEqual(module.attempts, 2) + + + def test_check_problem_incorrect(self): + + module = CapaFactory.create(attempts=0) + + # Simulate marking the input incorrect + with patch('capa.correctmap.CorrectMap.is_correct') as mock_is_correct: + mock_is_correct.return_value = False + + # Check the problem + get_request_dict = { CapaFactory.input_key(): '0' } + result = module.check_problem(get_request_dict) + + # Expect that the problem is marked correct + self.assertEqual(result['success'], 'incorrect') + + # Expect that the number of attempts is incremented by 1 + self.assertEqual(module.attempts, 1) + + + def test_check_problem_closed(self): + module = CapaFactory.create(attempts=3) + + # Problem closed -- cannot submit + # Simulate that CapaModule.closed() always returns True + with patch('xmodule.capa_module.CapaModule.closed') as mock_closed: + mock_closed.return_value = True + with self.assertRaises(xmodule.exceptions.NotFoundError): + get_request_dict = { CapaFactory.input_key(): '3.14' } + module.check_problem(get_request_dict) + + # Expect that number of attempts NOT incremented + self.assertEqual(module.attempts, 3) + + + def test_check_problem_resubmitted_with_randomize(self): + # Randomize turned on + module = CapaFactory.create(rerandomize='always', attempts=0) + + # Simulate that the problem is completed + module.lcp.done = True + + # Expect that we cannot submit + with self.assertRaises(xmodule.exceptions.NotFoundError): + get_request_dict = { CapaFactory.input_key(): '3.14' } + module.check_problem(get_request_dict) + + # Expect that number of attempts NOT incremented + self.assertEqual(module.attempts, 0) + + + def test_check_problem_resubmitted_no_randomize(self): + # Randomize turned off + module = CapaFactory.create(rerandomize='never', attempts=0) + + # Simulate that the problem is completed + module.lcp.done = True + + # Expect that we can submit successfully + get_request_dict = { CapaFactory.input_key(): '3.14' } + result = module.check_problem(get_request_dict) + + self.assertEqual(result['success'], 'correct') + + # Expect that number of attempts IS incremented + self.assertEqual(module.attempts, 1) + + + def test_check_problem_queued(self): + module = CapaFactory.create(attempts=1) + + # Simulate that the problem is queued + with patch('capa.capa_problem.LoncapaProblem.is_queued') \ + as mock_is_queued,\ + patch('capa.capa_problem.LoncapaProblem.get_recentmost_queuetime') \ + as mock_get_queuetime: + + mock_is_queued.return_value = True + mock_get_queuetime.return_value = datetime.datetime.now() + + get_request_dict = { CapaFactory.input_key(): '3.14' } + result = module.check_problem(get_request_dict) + + # Expect an AJAX alert message in 'success' + self.assertTrue('You must wait' in result['success']) + + # Expect that the number of attempts is NOT incremented + self.assertEqual(module.attempts, 1) + + + def test_check_problem_student_input_error(self): + module = CapaFactory.create(attempts=1) + + # Simulate a student input exception + with patch('capa.capa_problem.LoncapaProblem.grade_answers') as mock_grade: + mock_grade.side_effect = capa.responsetypes.StudentInputError('test error') + + get_request_dict = { CapaFactory.input_key(): '3.14' } + result = module.check_problem(get_request_dict) + + # Expect an AJAX alert message in 'success' + self.assertTrue('test error' in result['success']) + + # Expect that the number of attempts is NOT incremented + self.assertEqual(module.attempts, 1) + + + def test_reset_problem(self): + module = CapaFactory.create() + + # Mock the module's capa problem + # to simulate that the problem is done + mock_problem = MagicMock(capa.capa_problem.LoncapaProblem) + mock_problem.done = True + module.lcp = mock_problem + + # Stub out HTML rendering + with patch('xmodule.capa_module.CapaModule.get_problem_html') as mock_html: + mock_html.return_value = "<div>Test HTML</div>" + + # Reset the problem + get_request_dict = {} + result = module.reset_problem(get_request_dict) + + # Expect that the request was successful + self.assertTrue('success' in result and result['success']) + + # Expect that the problem HTML is retrieved + self.assertTrue('html' in result) + self.assertEqual(result['html'], "<div>Test HTML</div>") + + # Expect that the problem was reset + mock_problem.do_reset.assert_called_once_with() + + + def test_reset_problem_closed(self): + module = CapaFactory.create() + + # Simulate that the problem is closed + with patch('xmodule.capa_module.CapaModule.closed') as mock_closed: + mock_closed.return_value = True + + # Try to reset the problem + get_request_dict = {} + result = module.reset_problem(get_request_dict) + + # Expect that the problem was NOT reset + self.assertTrue('success' in result and not result['success']) + + + def test_reset_problem_not_done(self): + module = CapaFactory.create() + + # Simulate that the problem is NOT done + module.lcp.done = False + + # Try to reset the problem + get_request_dict = {} + result = module.reset_problem(get_request_dict) + + # Expect that the problem was NOT reset + self.assertTrue('success' in result and not result['success']) + + + def test_save_problem(self): + module = CapaFactory.create() + + # Simulate that the problem is not done (not attempted or reset) + module.lcp.done = False + + # Save the problem + get_request_dict = { CapaFactory.input_key(): '3.14' } + result = module.save_problem(get_request_dict) + + # Expect that answers are saved to the problem + expected_answers = { CapaFactory.answer_key(): '3.14' } + self.assertEqual(module.lcp.student_answers, expected_answers) + + # Expect that the result is success + self.assertTrue('success' in result and result['success']) + + + def test_save_problem_closed(self): + module = CapaFactory.create() + + # Simulate that the problem is NOT done (not attempted or reset) + module.lcp.done = False + + # Simulate that the problem is closed + with patch('xmodule.capa_module.CapaModule.closed') as mock_closed: + mock_closed.return_value = True + + # Try to save the problem + get_request_dict = { CapaFactory.input_key(): '3.14' } + result = module.save_problem(get_request_dict) + + # Expect that the result is failure + self.assertTrue('success' in result and not result['success']) + + + def test_save_problem_submitted_with_randomize(self): + module = CapaFactory.create(rerandomize='always') + + # Simulate that the problem is completed + module.lcp.done = True + + # Try to save + get_request_dict = { CapaFactory.input_key(): '3.14' } + result = module.save_problem(get_request_dict) + + # Expect that we cannot save + self.assertTrue('success' in result and not result['success']) + + + def test_save_problem_submitted_no_randomize(self): + module = CapaFactory.create(rerandomize='never') + + # Simulate that the problem is completed + module.lcp.done = True + + # Try to save + get_request_dict = { CapaFactory.input_key(): '3.14' } + result = module.save_problem(get_request_dict) + + # Expect that we succeed + self.assertTrue('success' in result and result['success']) + + def test_check_button_name(self): + + # If last attempt, button name changes to "Final Check" + # Just in case, we also check what happens if we have + # more attempts than allowed. + attempts = random.randint(1, 10) + module = CapaFactory.create(attempts=attempts-1, max_attempts=attempts) + self.assertEqual(module.check_button_name(), "Final Check") + + module = CapaFactory.create(attempts=attempts, max_attempts=attempts) + self.assertEqual(module.check_button_name(), "Final Check") + + module = CapaFactory.create(attempts=attempts + 1, max_attempts=attempts) + self.assertEqual(module.check_button_name(), "Final Check") + + # Otherwise, button name is "Check" + module = CapaFactory.create(attempts=attempts-2, max_attempts=attempts) + self.assertEqual(module.check_button_name(), "Check") + + module = CapaFactory.create(attempts=attempts-3, max_attempts=attempts) + self.assertEqual(module.check_button_name(), "Check") + + # If no limit on attempts, then always show "Check" + module = CapaFactory.create(attempts=attempts-3) + self.assertEqual(module.check_button_name(), "Check") + + module = CapaFactory.create(attempts=0) + self.assertEqual(module.check_button_name(), "Check") + + def test_should_show_check_button(self): + + attempts = random.randint(1,10) + + # If we're after the deadline, do NOT show check button + module = CapaFactory.create(due=self.yesterday_str) + self.assertFalse(module.should_show_check_button()) + + # If user is out of attempts, do NOT show the check button + module = CapaFactory.create(attempts=attempts, max_attempts=attempts) + self.assertFalse(module.should_show_check_button()) + + # If survey question (max_attempts = 0), do NOT show the check button + module = CapaFactory.create(max_attempts=0) + self.assertFalse(module.should_show_check_button()) + + # If user submitted a problem but hasn't reset, + # do NOT show the check button + # Note: we can only reset when rerandomize="always" + module = CapaFactory.create(rerandomize="always") + module.lcp.done = True + self.assertFalse(module.should_show_check_button()) + + # Otherwise, DO show the check button + module = CapaFactory.create() + self.assertTrue(module.should_show_check_button()) + + # If the user has submitted the problem + # and we do NOT have a reset button, then we can show the check button + # Setting rerandomize to "never" ensures that the reset button + # is not shown + module = CapaFactory.create(rerandomize="never") + module.lcp.done = True + self.assertTrue(module.should_show_check_button()) + + + def test_should_show_reset_button(self): + + attempts = random.randint(1,10) + + # If we're after the deadline, do NOT show the reset button + module = CapaFactory.create(due=self.yesterday_str) + module.lcp.done = True + self.assertFalse(module.should_show_reset_button()) + + # If the user is out of attempts, do NOT show the reset button + module = CapaFactory.create(attempts=attempts, max_attempts=attempts) + module.lcp.done = True + self.assertFalse(module.should_show_reset_button()) + + # If we're NOT randomizing, then do NOT show the reset button + module = CapaFactory.create(rerandomize="never") + module.lcp.done = True + self.assertFalse(module.should_show_reset_button()) + + # If the user hasn't submitted an answer yet, + # then do NOT show the reset button + module = CapaFactory.create() + module.lcp.done = False + self.assertFalse(module.should_show_reset_button()) + + # Otherwise, DO show the reset button + module = CapaFactory.create() + module.lcp.done = True + self.assertTrue(module.should_show_reset_button()) + + # If survey question for capa (max_attempts = 0), + # DO show the reset button + module = CapaFactory.create(max_attempts=0) + module.lcp.done = True + self.assertTrue(module.should_show_reset_button()) + + + def test_should_show_save_button(self): + + attempts = random.randint(1,10) + + # If we're after the deadline, do NOT show the save button + module = CapaFactory.create(due=self.yesterday_str) + module.lcp.done = True + self.assertFalse(module.should_show_save_button()) + + # If the user is out of attempts, do NOT show the save button + module = CapaFactory.create(attempts=attempts, max_attempts=attempts) + module.lcp.done = True + self.assertFalse(module.should_show_save_button()) + + # If user submitted a problem but hasn't reset, do NOT show the save button + module = CapaFactory.create(rerandomize="always") + module.lcp.done = True + self.assertFalse(module.should_show_save_button()) + + # Otherwise, DO show the save button + module = CapaFactory.create() + module.lcp.done = False + self.assertTrue(module.should_show_save_button()) + + # If we're not randomizing, then we can re-save + module = CapaFactory.create(rerandomize="never") + module.lcp.done = True + self.assertTrue(module.should_show_save_button()) + + # If survey question for capa (max_attempts = 0), + # DO show the save button + module = CapaFactory.create(max_attempts=0) + module.lcp.done = False + self.assertTrue(module.should_show_save_button()) + + def test_should_show_save_button_force_save_button(self): + # If we're after the deadline, do NOT show the save button + # even though we're forcing a save + module = CapaFactory.create(due=self.yesterday_str, + force_save_button="true") + module.lcp.done = True + self.assertFalse(module.should_show_save_button()) + + # If the user is out of attempts, do NOT show the save button + attempts = random.randint(1,10) + module = CapaFactory.create(attempts=attempts, + max_attempts=attempts, + force_save_button="true") + module.lcp.done = True + self.assertFalse(module.should_show_save_button()) + + # Otherwise, if we force the save button, + # then show it even if we would ordinarily + # require a reset first + module = CapaFactory.create(force_save_button="true", + rerandomize="always") + module.lcp.done = True + self.assertTrue(module.should_show_save_button()) + + def test_no_max_attempts(self): + module = CapaFactory.create(max_attempts='') + html = module.get_problem_html() + # assert that we got here without exploding + + + def test_get_problem_html(self): + module = CapaFactory.create() + + # We've tested the show/hide button logic in other tests, + # so here we hard-wire the values + show_check_button = bool(random.randint(0,1) % 2) + show_reset_button = bool(random.randint(0,1) % 2) + show_save_button = bool(random.randint(0,1) % 2) + + module.should_show_check_button = Mock(return_value=show_check_button) + module.should_show_reset_button = Mock(return_value=show_reset_button) + module.should_show_save_button = Mock(return_value=show_save_button) + + # Mock the system rendering function + module.system.render_template = Mock(return_value="<div>Test Template HTML</div>") + + # Patch the capa problem's HTML rendering + with patch('capa.capa_problem.LoncapaProblem.get_html') as mock_html: + mock_html.return_value = "<div>Test Problem HTML</div>" + + # Render the problem HTML + html = module.get_problem_html(encapsulate=False) + + # Also render the problem encapsulated in a <div> + html_encapsulated = module.get_problem_html(encapsulate=True) + + # Expect that we get the rendered template back + self.assertEqual(html, "<div>Test Template HTML</div>") + + # Check the rendering context + render_args,_ = module.system.render_template.call_args + self.assertEqual(len(render_args), 2) + + template_name = render_args[0] + self.assertEqual(template_name, "problem.html") + + context = render_args[1] + self.assertEqual(context['problem']['html'], "<div>Test Problem HTML</div>") + self.assertEqual(bool(context['check_button']), show_check_button) + self.assertEqual(bool(context['reset_button']), show_reset_button) + self.assertEqual(bool(context['save_button']), show_save_button) + + # Assert that the encapsulated html contains the original html + self.assertTrue(html in html_encapsulated) + + + def test_get_problem_html_error(self): + """ + In production, when an error occurs with the problem HTML + rendering, a "dummy" problem is created with an error + message to display to the user. + """ + module = CapaFactory.create() + + # Save the original problem so we can compare it later + original_problem = module.lcp + + # Simulate throwing an exception when the capa problem + # is asked to render itself as HTML + module.lcp.get_html = Mock(side_effect=Exception("Test")) + + # Stub out the test_system rendering function + module.system.render_template = Mock(return_value="<div>Test Template HTML</div>") + + # Turn off DEBUG + module.system.DEBUG = False + + # Try to render the module with DEBUG turned off + html = module.get_problem_html() + + # Check the rendering context + render_args,_ = module.system.render_template.call_args + context = render_args[1] + self.assertTrue("error" in context['problem']['html']) + + # Expect that the module has created a new dummy problem with the error + self.assertNotEqual(original_problem, module.lcp) diff --git a/common/lib/xmodule/xmodule/tests/test_combined_open_ended.py b/common/lib/xmodule/xmodule/tests/test_combined_open_ended.py index c6e95df6a759376a49b204a4a1911dea5248909c..d3b869a8027b91b1673c0e16fc3bbd9978636728 100644 --- a/common/lib/xmodule/xmodule/tests/test_combined_open_ended.py +++ b/common/lib/xmodule/xmodule/tests/test_combined_open_ended.py @@ -54,8 +54,9 @@ class OpenEndedChildTest(unittest.TestCase): descriptor = Mock() def setUp(self): - self.openendedchild = OpenEndedChild(test_system, self.location, - self.definition, self.descriptor, self.static_data, self.metadata) + self.test_system = test_system() + self.openendedchild = OpenEndedChild(self.test_system, self.location, + self.definition, self.descriptor, self.static_data, self.metadata) def test_latest_answer_empty(self): @@ -69,7 +70,7 @@ class OpenEndedChildTest(unittest.TestCase): def test_latest_post_assessment_empty(self): - answer = self.openendedchild.latest_post_assessment(test_system) + answer = self.openendedchild.latest_post_assessment(self.test_system) self.assertEqual(answer, "") @@ -106,7 +107,7 @@ class OpenEndedChildTest(unittest.TestCase): post_assessment = "Post assessment" self.openendedchild.record_latest_post_assessment(post_assessment) self.assertEqual(post_assessment, - self.openendedchild.latest_post_assessment(test_system)) + self.openendedchild.latest_post_assessment(self.test_system)) def test_get_score(self): new_answer = "New Answer" @@ -125,7 +126,7 @@ class OpenEndedChildTest(unittest.TestCase): def test_reset(self): - self.openendedchild.reset(test_system) + self.openendedchild.reset(self.test_system) state = json.loads(self.openendedchild.get_instance_state()) self.assertEqual(state['child_state'], OpenEndedChild.INITIAL) @@ -182,12 +183,14 @@ class OpenEndedModuleTest(unittest.TestCase): descriptor = Mock() def setUp(self): - test_system.location = self.location + self.test_system = test_system() + + self.test_system.location = self.location self.mock_xqueue = MagicMock() self.mock_xqueue.send_to_queue.return_value = (None, "Message") - test_system.xqueue = {'interface': self.mock_xqueue, 'callback_url': '/', 'default_queuename': 'testqueue', 'waittime': 1} - self.openendedmodule = OpenEndedModule(test_system, self.location, - self.definition, self.descriptor, self.static_data, self.metadata) + self.test_system.xqueue = {'interface': self.mock_xqueue, 'callback_url': '/', 'default_queuename': 'testqueue', 'waittime': 1} + self.openendedmodule = OpenEndedModule(self.test_system, self.location, + self.definition, self.descriptor, self.static_data, self.metadata) def test_message_post(self): get = {'feedback': 'feedback text', @@ -195,7 +198,7 @@ class OpenEndedModuleTest(unittest.TestCase): 'grader_id': '1', 'score': 3} qtime = datetime.strftime(datetime.now(), xqueue_interface.dateformat) - student_info = {'anonymous_student_id': test_system.anonymous_student_id, + student_info = {'anonymous_student_id': self.test_system.anonymous_student_id, 'submission_time': qtime} contents = { 'feedback': get['feedback'], @@ -205,7 +208,7 @@ class OpenEndedModuleTest(unittest.TestCase): 'student_info': json.dumps(student_info) } - result = self.openendedmodule.message_post(get, test_system) + result = self.openendedmodule.message_post(get, self.test_system) self.assertTrue(result['success']) # make sure it's actually sending something we want to the queue self.mock_xqueue.send_to_queue.assert_called_with(body=json.dumps(contents), header=ANY) @@ -216,7 +219,7 @@ class OpenEndedModuleTest(unittest.TestCase): def test_send_to_grader(self): submission = "This is a student submission" qtime = datetime.strftime(datetime.now(), xqueue_interface.dateformat) - student_info = {'anonymous_student_id': test_system.anonymous_student_id, + student_info = {'anonymous_student_id': self.test_system.anonymous_student_id, 'submission_time': qtime} contents = self.openendedmodule.payload.copy() contents.update({ @@ -224,7 +227,7 @@ class OpenEndedModuleTest(unittest.TestCase): 'student_response': submission, 'max_score': self.max_score }) - result = self.openendedmodule.send_to_grader(submission, test_system) + result = self.openendedmodule.send_to_grader(submission, self.test_system) self.assertTrue(result) self.mock_xqueue.send_to_queue.assert_called_with(body=json.dumps(contents), header=ANY) @@ -238,7 +241,7 @@ class OpenEndedModuleTest(unittest.TestCase): } get = {'queuekey': "abcd", 'xqueue_body': score_msg} - self.openendedmodule.update_score(get, test_system) + self.openendedmodule.update_score(get, self.test_system) def update_score_single(self): self.openendedmodule.new_history_entry("New Entry") @@ -261,11 +264,11 @@ class OpenEndedModuleTest(unittest.TestCase): } get = {'queuekey': "abcd", 'xqueue_body': json.dumps(score_msg)} - self.openendedmodule.update_score(get, test_system) + self.openendedmodule.update_score(get, self.test_system) def test_latest_post_assessment(self): self.update_score_single() - assessment = self.openendedmodule.latest_post_assessment(test_system) + assessment = self.openendedmodule.latest_post_assessment(self.test_system) self.assertFalse(assessment == '') # check for errors self.assertFalse('errors' in assessment) @@ -336,7 +339,16 @@ class CombinedOpenEndedModuleTest(unittest.TestCase): descriptor = Mock() def setUp(self): - self.combinedoe = CombinedOpenEndedV1Module(test_system, self.location, self.definition, self.descriptor, static_data = self.static_data, metadata=self.metadata, instance_state={}) + self.test_system = test_system() + # TODO: this constructor call is definitely wrong, but neither branch + # of the merge matches the module constructor. Someone (Vik?) should fix this. + self.combinedoe = CombinedOpenEndedV1Module(self.test_system, + self.location, + self.definition, + self.descriptor, + static_data=self.static_data, + metadata=self.metadata, + instance_state={}) def test_get_tag_name(self): name = self.combinedoe.get_tag_name("<t>Tag</t>") diff --git a/common/lib/xmodule/xmodule/tests/test_conditional.py b/common/lib/xmodule/xmodule/tests/test_conditional.py index 1d635770738c4f45a081fbde7b2a741a7fadeee0..1b2da0b74a8f331970b99aba2b6914fbb473980f 100644 --- a/common/lib/xmodule/xmodule/tests/test_conditional.py +++ b/common/lib/xmodule/xmodule/tests/test_conditional.py @@ -56,6 +56,9 @@ class ConditionalModuleTest(unittest.TestCase): '''Get a dummy system''' return DummySystem(load_error_modules) + def setUp(self): + self.test_system = test_system() + def get_course(self, name): """Get a test course by directory name. If there's more than one, error.""" print "Importing {0}".format(name) @@ -80,7 +83,7 @@ class ConditionalModuleTest(unittest.TestCase): location = descriptor descriptor = self.modulestore.get_instance(course.id, location, depth=None) location = descriptor.location - return descriptor.xmodule(test_system) + return descriptor.xmodule(self.test_system) # edx - HarvardX # cond_test - ER22x @@ -88,8 +91,8 @@ class ConditionalModuleTest(unittest.TestCase): def replace_urls(text, staticfiles_prefix=None, replace_prefix='/static/', course_namespace=None): return text - test_system.replace_urls = replace_urls - test_system.get_module = inner_get_module + self.test_system.replace_urls = replace_urls + self.test_system.get_module = inner_get_module module = inner_get_module(location) print "module: ", module diff --git a/common/lib/xmodule/xmodule/tests/test_self_assessment.py b/common/lib/xmodule/xmodule/tests/test_self_assessment.py index a2bd992317880de64ad692671ca0aaa9c907f1e0..43f3f3bc7a336e314c08b078686411d73fad1659 100644 --- a/common/lib/xmodule/xmodule/tests/test_self_assessment.py +++ b/common/lib/xmodule/xmodule/tests/test_self_assessment.py @@ -51,13 +51,13 @@ class SelfAssessmentTest(unittest.TestCase): 'skip_basic_checks' : False, } - self.module = SelfAssessmentModule(test_system, self.location, + self.module = SelfAssessmentModule(test_system(), self.location, self.definition, self.descriptor, static_data) def test_get_html(self): - html = self.module.get_html(test_system) + html = self.module.get_html(self.module.system) self.assertTrue("This is sample prompt text" in html) def test_self_assessment_flow(self): @@ -80,10 +80,11 @@ class SelfAssessmentTest(unittest.TestCase): self.assertEqual(self.module.get_score()['score'], 0) - self.module.save_answer({'student_answer': "I am an answer"}, test_system) + self.module.save_answer({'student_answer': "I am an answer"}, + self.module.system) self.assertEqual(self.module.child_state, self.module.ASSESSING) - self.module.save_assessment(mock_query_dict, test_system) + self.module.save_assessment(mock_query_dict, self.module.system) self.assertEqual(self.module.child_state, self.module.DONE) @@ -92,7 +93,8 @@ class SelfAssessmentTest(unittest.TestCase): self.assertEqual(self.module.child_state, self.module.INITIAL) # if we now assess as right, skip the REQUEST_HINT state - self.module.save_answer({'student_answer': 'answer 4'}, test_system) + self.module.save_answer({'student_answer': 'answer 4'}, + self.module.system) responses['assessment'] = '1' - self.module.save_assessment(mock_query_dict, test_system) + self.module.save_assessment(mock_query_dict, self.module.system) self.assertEqual(self.module.child_state, self.module.DONE) diff --git a/common/lib/xmodule/xmodule/xml_module.py b/common/lib/xmodule/xmodule/xml_module.py index 5062513bebfb5bc666fd58946a76256fc09e3d8f..3713bfedb60713a4871dcf3a7407123004653dd5 100644 --- a/common/lib/xmodule/xmodule/xml_module.py +++ b/common/lib/xmodule/xmodule/xml_module.py @@ -389,7 +389,11 @@ class XmlDescriptor(XModuleDescriptor): if attr not in self.metadata_to_strip and attr not in self.metadata_to_export_to_policy: val = val_for_xml(attr) #logging.debug('location.category = {0}, attr = {1}'.format(self.location.category, attr)) - xml_object.set(attr, val) + try: + xml_object.set(attr, val) + except Exception, e: + logging.exception('Failed to serialize metadata attribute {0} with value {1}. This could mean data loss!!! Exception: {2}'.format(attr, val, e)) + pass for key, value in self.xml_attributes.items(): if key not in self.metadata_to_strip: diff --git a/common/static/coffee/src/discussion/discussion_module_view.coffee b/common/static/coffee/src/discussion/discussion_module_view.coffee index 2e58b2c0b8ed7fd478b2fc8aa8e478796d6cdb10..3dde9bf950adc8832d8c64b623d13726b8c590ac 100644 --- a/common/static/coffee/src/discussion/discussion_module_view.coffee +++ b/common/static/coffee/src/discussion/discussion_module_view.coffee @@ -88,7 +88,7 @@ if Backbone? if @$('section.discussion').length @$('section.discussion').replaceWith($discussion) else - $(".discussion-module").append($discussion) + @$el.append($discussion) @newPostForm = $('.new-post-article') @threadviews = @discussion.map (thread) -> new DiscussionThreadInlineView el: @$("article#thread_#{thread.id}"), model: thread diff --git a/common/static/images/partially-correct-icon.png b/common/static/images/partially-correct-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac0fd32f7a5c579fcb2e419486fc4443cccf6a5 Binary files /dev/null and b/common/static/images/partially-correct-icon.png differ diff --git a/common/static/js/capa/annotationinput.js b/common/static/js/capa/annotationinput.js new file mode 100644 index 0000000000000000000000000000000000000000..4353fd262a83b1d0dfc39378d51cfcbf51c4ae61 --- /dev/null +++ b/common/static/js/capa/annotationinput.js @@ -0,0 +1,97 @@ +(function () { + var debug = false; + + var module = { + debug: debug, + inputSelector: '.annotation-input', + tagSelector: '.tag', + tagsSelector: '.tags', + commentSelector: 'textarea.comment', + valueSelector: 'input.value', // stash tag selections and comment here as a JSON string... + + singleSelect: true, + + init: function() { + var that = this; + + if(this.debug) { console.log('annotation input loaded: '); } + + $(this.inputSelector).each(function(index, el) { + if(!$(el).data('listening')) { + $(el).delegate(that.tagSelector, 'click', $.proxy(that.onClickTag, that)); + $(el).delegate(that.commentSelector, 'change', $.proxy(that.onChangeComment, that)); + $(el).data('listening', 'yes'); + } + }); + }, + onChangeComment: function(e) { + var value_el = this.findValueEl(e.target); + var current_value = this.loadValue(value_el); + var target_value = $(e.target).val(); + + current_value.comment = target_value; + this.storeValue(value_el, current_value); + }, + onClickTag: function(e) { + var target_el = e.target, target_value, target_index; + var value_el, current_value; + + value_el = this.findValueEl(e.target); + current_value = this.loadValue(value_el); + target_value = $(e.target).data('id'); + + if(!$(target_el).hasClass('selected')) { + if(this.singleSelect) { + current_value.options = [target_value] + } else { + current_value.options.push(target_value); + } + } else { + if(this.singleSelect) { + current_value.options = [] + } else { + target_index = current_value.options.indexOf(target_value); + if(target_index !== -1) { + current_value.options.splice(target_index, 1); + } + } + } + + this.storeValue(value_el, current_value); + + if(this.singleSelect) { + $(target_el).closest(this.tagsSelector) + .find(this.tagSelector) + .not(target_el) + .removeClass('selected') + } + $(target_el).toggleClass('selected'); + }, + findValueEl: function(target_el) { + var input_el = $(target_el).closest(this.inputSelector); + return $(this.valueSelector, input_el); + }, + loadValue: function(value_el) { + var json = $(value_el).val(); + + var result = JSON.parse(json); + if(result === null) { + result = {}; + } + if(!result.hasOwnProperty('options')) { + result.options = []; + } + if(!result.hasOwnProperty('comment')) { + result.comment = ''; + } + + return result; + }, + storeValue: function(value_el, new_value) { + var json = JSON.stringify(new_value); + $(value_el).val(json); + } + } + + module.init(); +}).call(this); diff --git a/common/static/js/capa/chemical_equation_preview.js b/common/static/js/capa/chemical_equation_preview.js index 90ce27ad119371956aa29a3e6b2ebec59c6c33a8..10a6b5465509e9eba42d68395b035a2e2b7537ff 100644 --- a/common/static/js/capa/chemical_equation_preview.js +++ b/common/static/js/capa/chemical_equation_preview.js @@ -11,9 +11,14 @@ } prev_id = "#" + this.id + "_preview"; - preview_div = $(prev_id) + preview_div = $(prev_id); - $.get("/preview/chemcalc/", {"formula" : this.value}, create_handler(preview_div)); + // find the closest parent problems-wrapper and use that url + url = $(this).closest('.problems-wrapper').data('url'); + // grab the input id from the input + input_id = $(this).data('input-id') + + Problem.inputAjax(url, input_id, 'preview_chemcalc', {"formula" : this.value}, create_handler(preview_div)); } inputs = $('.chemicalequationinput input'); diff --git a/common/static/js/capa/edit-a-gene.js b/common/static/js/capa/edit-a-gene.js index 48753e507daaec2a76f7208907066161ff6ec9b2..bd6d10cc64cb1195ab07b5bd4cf549074664e21d 100644 --- a/common/static/js/capa/edit-a-gene.js +++ b/common/static/js/capa/edit-a-gene.js @@ -1,27 +1,44 @@ (function () { var timeout = 1000; - function initializeApplet(applet) { - console.log("Initializing " + applet); - waitForApplet(applet); - } + waitForGenex(); - function waitForApplet(applet) { - if (applet.isActive && applet.isActive()) { - console.log("Applet is ready."); - var answerStr = applet.checkAnswer(); - console.log(answerStr); - var input = $('.editageneinput input'); - console.log(input); - input.val(answerStr); - } else if (timeout > 30 * 1000) { - console.error("Applet did not load on time."); - } else { - console.log("Waiting for applet..."); - setTimeout(function() { waitForApplet(applet); }, timeout); + function waitForGenex() { + if (typeof(genex) !== "undefined" && genex) { + genex.onInjectionDone("genex"); + } + else { + setTimeout(function() { waitForGenex(); }, timeout); } } - var applets = $('.editageneinput object'); - applets.each(function(i, el) { initializeApplet(el); }); + //NOTE: + // Genex uses six global functions: + // genexSetDNASequence (exported from GWT) + // genexSetClickEvent (exported from GWT) + // genexSetKeyEvent (exported from GWT) + // genexSetProblemNumber (exported from GWT) + // + // It calls genexIsReady with a deferred command when it has finished + // initialization and has drawn itself + // genexStoreAnswer(answer) is called when the GWT [Store Answer] button + // is clicked + + genexIsReady = function() { + //Load DNA sequence + var dna_sequence = $('#dna_sequence').val(); + genexSetDNASequence(dna_sequence); + //Now load mouse and keyboard handlers + genexSetClickEvent(); + genexSetKeyEvent(); + //Now load problem + var genex_problem_number = $('#genex_problem_number').val(); + genexSetProblemNumber(genex_problem_number); + }; + genexStoreAnswer = function(ans) { + var problem = $('#genex_container').parents('.problem'); + var input_field = problem.find('input[type="hidden"][name!="dna_sequence"][name!="genex_problem_number"]'); + input_field.val(ans); + }; }).call(this); + diff --git a/common/static/js/capa/genex/026A6180B5959B8660E084245FEE5E9E.cache.html b/common/static/js/capa/genex/026A6180B5959B8660E084245FEE5E9E.cache.html new file mode 100644 index 0000000000000000000000000000000000000000..13f25ec581eb1b1aa3c7e1ef4ec8c04240432952 --- /dev/null +++ b/common/static/js/capa/genex/026A6180B5959B8660E084245FEE5E9E.cache.html @@ -0,0 +1,649 @@ +<html><head><meta charset="UTF-8" /><script>var $gwt_version = "2.5.0";var $wnd = parent;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '026A6180B5959B8660E084245FEE5E9E';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});</script></head><body><script><!-- +function mB(){} +function gb(){} +function ec(){} +function xc(){} +function Xc(){} +function Kf(){} +function Zf(){} +function eg(){} +function kg(){} +function qg(){} +function xg(){} +function Jg(){} +function Pg(){} +function Yg(){} +function dh(){} +function ph(){} +function Ch(){} +function ji(){} +function ui(){} +function yn(){} +function Bn(){} +function Fn(){} +function Ft(){} +function bt(){} +function It(){} +function Rt(){} +function Rw(){} +function Fw(){} +function Iw(){} +function Lw(){} +function Ow(){} +function Uw(){} +function Xw(){} +function $w(){} +function Mo(){} +function cp(){} +function lp(){} +function lx(){} +function hr(){} +function kr(){} +function NA(){} +function Sc(){Hc()} +function Cp(){Bp()} +function cq(a){Zp=a} +function oq(a,b){a.I=b} +function zf(a,b){a.g=b} +function Cf(a,b){a.b=b} +function Df(a,b){a.c=b} +function In(a,b){a.c=b} +function Hn(a,b){a.b=b} +function Jn(a,b){a.e=b} +function bp(a,b){a.e=b} +function lw(a,b){a.b=b} +function Vc(a,b){a.b+=b} +function lc(a){this.b=a} +function oc(a){this.b=a} +function C(a){this.b=a} +function kb(a){this.b=a} +function jh(a){this.b=a} +function vh(a){this.b=a} +function bi(a){this.b=a} +function oo(a){this.b=a} +function qo(a){this.b=a} +function so(a){this.b=a} +function uo(a){this.b=a} +function wo(a){this.b=a} +function yo(a){this.b=a} +function Fo(a){this.b=a} +function Io(a){this.b=a} +function Is(a){this.b=a} +function ts(a){this.b=a} +function Ss(a){this.b=a} +function Ws(a){this.b=a} +function et(a){this.b=a} +function ht(a){this.b=a} +function Zv(a){this.b=a} +function aw(a){this.b=a} +function cw(a){this.b=a} +function fw(a){this.b=a} +function iw(a){this.b=a} +function gx(a){this.b=a} +function lz(a){this.b=a} +function Cz(a){this.b=a} +function $z(a){this.e=a} +function qr(a){this.I=a} +function Ar(a){this.I=a} +function Wu(a){this.c=a} +function nA(a){this.b=a} +function mv(){this.b=1} +function Dg(){this.b={}} +function ob(){this.b=pb()} +function Tf(){this.d=++Qf} +function TA(){Sy(this)} +function ty(){oy(this)} +function xb(){Kc(Hc())} +function Qq(a,b){Hq(b,a)} +function Yf(a,b){ds(b.b,a)} +function dg(a,b){es(b.b,a)} +function wg(a,b){fs(b.b,a)} +function Xg(a,b){eo(b.b,a)} +function ch(a,b){fo(b.b,a)} +function Aw(a,b){VA(a.b,b)} +function sq(a,b){Up(a.I,b)} +function Wt(a,b){pd(a.c,b)} +function Yt(a,b){ed(a.c,b)} +function Cg(a,b,c){a.b[b]=c} +function oy(a){a.b=new Xc} +function Cw(){this.b=new YA} +function Pv(){this.z=new mw} +function st(){st=mB;ut()} +function pu(){pu=mB;yu()} +function fc(a){return a.Q()} +function Z(a){S();this.b=a} +function qt(a){S();this.b=a} +function YA(){this.b=new TA} +function bx(){xb.call(this)} +function ux(){xb.call(this)} +function yx(){xb.call(this)} +function Bx(){xb.call(this)} +function Hx(){xb.call(this)} +function kB(){xb.call(this)} +function Ld(){Kd();return Fd} +function _d(){$d();return Vd} +function pe(){oe();return je} +function Fe(){Ee();return ze} +function $e(){Ze();return Pe} +function ti(){ri();return ni} +function zu(){yu();return tu} +function Zb(){Zb=mB;Yb=new ec} +function Bp(){Bp=mB;Ap=new Tf} +function LA(){LA=mB;KA=new NA} +function Uo(a){Po=a;Jp();Mp=a} +function Up(a,b){Jp();Vp(a,b)} +function Wp(a,b){Jp();Xp(a,b)} +function Yq(a,b){Tq(a,b,a.I)} +function Nu(a,b){Pu(a,b,a.d)} +function Kr(a,b){yr(a,b);Hr(a)} +function qq(a,b){a.fb()[RC]=b} +function $u(a,b){a.style[nD]=b} +function ed(b,a){b.scrollTop=a} +function er(a){hi.call(this,a)} +function hi(a){ei.call(this,a)} +function wx(a){yb.call(this,a)} +function zx(a){yb.call(this,a)} +function Cx(a){yb.call(this,a)} +function Ix(a){yb.call(this,a)} +function By(a){yb.call(this,a)} +function Bh(a){a.b.o&&a.b.sb()} +function Bg(a,b){return a.b[b]} +function Fx(a,b){return a>b?a:b} +function nb(a){return pb()-a.b} +function tn(a){return new rn[a]} +function mu(a){this.I=a;new ji} +function bv(a){$h(a.b,a.d,a.c)} +function Ds(a,b){Ks(a.b,b,true)} +function Lo(a,b,c){a.b=b;a.c=c} +function Vo(a,b,c){a.style[b]=c} +function Kp(a,b){a.__listener=b} +function Ur(a,b){yr(a.k,b);Hr(a)} +function As(a,b){Ks(a.b,b,false)} +function ks(a){a.g=false;To(a.I)} +function yb(a){Kc(Hc());this.f=a} +function zb(a){Kc(Hc());this.f=a} +function Gp(){Kh.call(this,null)} +function He(){Bd.call(this,pC,0)} +function Bu(){Bd.call(this,pC,0)} +function Du(){Bd.call(this,qC,1)} +function Je(){Bd.call(this,qC,1)} +function Le(){Bd.call(this,rC,2)} +function Fu(){Bd.call(this,rC,2)} +function Hu(){Bd.call(this,sC,3)} +function Ne(){Bd.call(this,sC,3)} +function IA(a,b,c){a.splice(b,c)} +function WA(a,b){return Ty(a.b,b)} +function Zh(a,b){return Ty(a.e,b)} +function Jh(a,b){return Zh(a.b,b)} +function Cq(a,b){!!a.G&&Ih(a.G,b)} +function bb(a,b){this.c=a;this.b=b} +function Bd(a,b){this.b=a;this.c=b} +function gq(){this.b=new Kh(null)} +function Vq(){this.g=new Su(this)} +function rc(a){return vc((Hc(),a))} +function bc(a){return !!a.b||!!a.g} +function Ex(a){return a<=0?0-a:a} +function Wy(b,a){return b.f[aC+a]} +function dd(b,a){b.innerHTML=a||XB} +function jy(){jy=mB;gy={};iy={}} +function jf(){Bd.call(this,'PT',4)} +function af(){Bd.call(this,'PX',0)} +function gf(){Bd.call(this,'EX',3)} +function ef(){Bd.call(this,'EM',2)} +function pf(){Bd.call(this,'CM',7)} +function rf(){Bd.call(this,'MM',8)} +function lf(){Bd.call(this,'PC',5)} +function nf(){Bd.call(this,'IN',6)} +function si(a,b){Bd.call(this,a,b)} +function ls(){ms.call(this,new Gs)} +function W(a){$wnd.clearTimeout(a)} +function V(a){$wnd.clearInterval(a)} +function Vb(a){$wnd.clearTimeout(a)} +function Xz(a){return a.c<a.e.Hb()} +function Hz(a,b){this.c=a;this.b=b} +function ow(a,b){this.c=a;this.b=b} +function uw(a,b){this.c=b;this.b=a} +function Pn(a,b){this.b=a;this.c=b} +function No(a,b){this.b=a;this.c=b} +function hA(a,b){this.b=a;this.c=b} +function fB(a,b){this.b=a;this.c=b} +function py(a,b){Vc(a.b,b);return a} +function xy(a,b){Vc(a.b,b);return a} +function rq(a,b){vq(a.fb(),b,true)} +function Qo(a,b){Yc(a,(st(),tt(b)))} +function ih(a,b){a.b?lo(b.b):ho(b.b)} +function jd(a,b){a.textContent=b||XB} +function Yy(b,a){return aC+a in b.f} +function Sx(b,a){return b.indexOf(a)} +function Mi(a){return a==null?null:a} +function Kh(a){Lh.call(this,a,false)} +function Qn(a){Pn.call(this,a.b,a.c)} +function cf(){Bd.call(this,'PCT',1)} +function he(){Bd.call(this,'AUTO',3)} +function Nd(){Bd.call(this,'NONE',0)} +function Pd(){Bd.call(this,'BLOCK',1)} +function xe(){Bd.call(this,'FIXED',3)} +function uy(a){oy(this);Vc(this.b,a)} +function _h(a){this.e=new TA;this.d=a} +function zA(){this.b=xi(ln,tB,0,0,0)} +function JA(a,b,c,d){a.splice(b,c,d)} +function id(a,b){return a.contains(b)} +function Gi(a,b){return a.cM&&a.cM[b]} +function sc(a){return parseInt(a)||-1} +function _x(a){return xi(nn,tB,1,a,0)} +function wp(){if(!rp){iq();rp=true}} +function vp(){if(!np){hq();np=true}} +function Jp(){if(!Hp){Tp();Hp=true}} +function S(){S=mB;R=new zA;sp(new lp)} +function Kc(){var a;a=Ic(new Sc);Mc(a)} +function lo(a){ho(a);a.c=Yo(new yo(a))} +function T(a){a.c?V(a.d):W(a.d);xA(R,a)} +function Ub(a){return a.$H||(a.$H=++Mb)} +function Fi(a,b){return a.cM&&!!a.cM[b]} +function Li(a){return a.tM==mB||Fi(a,1)} +function Lp(a){return !Ki(a)&&Ji(a,37)} +function Px(b,a){return b.charCodeAt(a)} +function XA(a,b){return bz(a.b,b)!=null} +function io(a,b){a.g=b;!b&&(a.i=null)} +function Oz(a,b){(a<0||a>=b)&&Rz(a,b)} +function fe(){Bd.call(this,'SCROLL',2)} +function re(){Bd.call(this,'STATIC',0)} +function te(){Bd.call(this,'RELATIVE',1)} +function Rd(){Bd.call(this,'INLINE',2)} +function de(){Bd.call(this,'HIDDEN',1)} +function be(){Bd.call(this,'VISIBLE',0)} +function ve(){Bd.call(this,'ABSOLUTE',2)} +function Lt(){At.call(this,$doc.body)} +function dr(){dr=mB;br=new hr;cr=new kr} +function cg(){cg=mB;bg=new Uf(vC,new eg)} +function jg(){jg=mB;ig=new Uf(wC,new kg)} +function pg(){pg=mB;og=new Uf(xC,new qg)} +function vg(){vg=mB;ug=new Uf(yC,new xg)} +function Ig(){Ig=mB;Hg=new Uf(zC,new Jg)} +function Og(){Og=mB;Ng=new Uf(AC,new Pg)} +function Wg(){Wg=mB;Vg=new Uf(CC,new Yg)} +function Jf(){Jf=mB;If=new Uf(tC,new Kf)} +function Xf(){Xf=mB;Wf=new Uf(uC,new Zf)} +function bh(){bh=mB;ah=new Uf(DC,new dh)} +function fs(a,b){ks(a,(a.b,Gf(b),Hf(b)))} +function ds(a,b){is(a,(a.b,Gf(b)),Hf(b))} +function es(a,b){js(a,(a.b,Gf(b)),Hf(b))} +function uA(a,b){Oz(b,a.c);return a.b[b]} +function Ji(a,b){return a!=null&&Fi(a,b)} +function Tx(c,a,b){return c.indexOf(a,b)} +function Ux(b,a){return b.lastIndexOf(a)} +function Yc(b,a){return b.appendChild(a)} +function Zc(b,a){return b.removeChild(a)} +function ad(b,a){return parseInt(b[a])||0} +function Fb(a){return Ki(a)?rc(Ii(a)):XB} +function rz(a){return a.c=Hi(Yz(a.b),59)} +function Zx(c,a,b){return c.substr(a,b-a)} +function ry(a,b,c){return Wc(a.b,b,b,c),a} +function Bb(a){return Ki(a)?Cb(Ii(a)):a+XB} +function Eb(a){return a==null?null:a.name} +function pb(){return (new Date).getTime()} +function z(a){this.k=new C(this);this.t=a} +function Lh(a,b){this.b=new _h(b);this.c=a} +function yy(a){this.b=new Xc;Vc(this.b,a)} +function fu(a){this.d=a;this.b=!!this.d.D} +function go(a){if(a.b){bv(a.b.b);a.b=null}} +function ho(a){if(a.c){bv(a.c.b);a.c=null}} +function Xn(a){a.s=false;a.d=false;a.i=null} +function tA(a){a.b=xi(ln,tB,0,0,0);a.c=0} +function dc(a,b){a.b=gc(a.b,[b,false]);cc(a)} +function qy(a,b){return Wc(a.b,b,b+1,XB),a} +function Pb(a,b,c){return a.apply(b,c);var d} +function wd(b,a){return b.getElementById(a)} +function Vx(c,a,b){return c.lastIndexOf(a,b)} +function K(a,b){xA(a.b,b);a.b.c==0&&T(a.c)} +function sy(a,b,c,d){Wc(a.b,b,c,d);return a} +function sA(a,b){zi(a.b,a.c++,b);return true} +function Wh(a,b){var c;c=Xh(a,b);return c} +function Sh(a,b,c){var d;d=Vh(a,b);d.Db(c)} +function mA(a){var b;b=rz(a.b);return b.Jb()} +function px(a){var b=rn[a.c];a=null;return b} +function Cb(a){return a==null?null:a.message} +function fy(a){return String.fromCharCode(a)} +function Hh(a,b,c){return new bi(Rh(a.b,b,c))} +function Qh(a,b){!a.b&&(a.b=new zA);sA(a.b,b)} +function rh(a){var b;if(oh){b=new ph;a.ab(b)}} +function zs(a){this.I=a;this.b=new Ls(this.I)} +function M(){this.b=new zA;this.c=new Z(this)} +function cv(a,b,c){this.b=a;this.d=b;this.c=c} +function ev(a,b,c){this.b=a;this.d=b;this.c=c} +function hv(a,b,c){this.b=a;this.d=b;this.c=c} +function ov(a,b,c){this.c=a;this.b=b;this.d=c} +function ot(a){z.call(this,(I(),H));this.b=a} +function At(a){Vq.call(this);this.I=a;Dq(this)} +function Td(){Bd.call(this,'INLINE_BLOCK',3)} +function wc(){try{null.a()}catch(a){return a}} +function Hc(){Hc=mB;Error.stackTraceLimit=128} +function ip(){ip=mB;hp=new gq;fq(hp)||(hp=null)} +function jp(a){ip();return hp?$p(hp,a):null} +function qx(a){return typeof a=='number'&&a>0} +function Yx(b,a){return b.substr(a,b.length-a)} +function Mn(a,b){return new Pn(a.b-b.b,a.c-b.c)} +function Nn(a,b){return new Pn(a.b*b.b,a.c*b.c)} +function On(a,b){return new Pn(a.b+b.b,a.c+b.c)} +function ko(a,b){Wt(a.t,Ni(b.b));Yt(a.t,Ni(b.c))} +function Wc(a,b,c,d){a.b=Zx(a.b,0,b)+d+Yx(a.b,c)} +function Eh(a){var b;if(Ah){b=new Ch;Ih(a.b,b)}} +function Tt(a){return Ot((!Nt&&(Nt=new Rt),a.c))} +function Vt(a){return Pt((!Nt&&(Nt=new Rt),a.c))} +function Ki(a){return a!=null&&a.tM!=mB&&!Fi(a,1)} +function gs(a){if(a.i){bv(a.i.b);a.i=null}Gr(a)} +function Bt(a){zt();try{a.lb()}finally{XA(yt,a)}} +function sp(a){vp();return tp(oh?oh:(oh=new Tf),a)} +function Jb(a){var b;return b=a,Li(b)?b.hC():Ub(b)} +function xh(a,b){var c;if(uh){c=new vh(b);Ih(a,c)}} +function gc(a,b){!a&&(a=[]);a[a.length]=b;return a} +function Oi(a){if(a!=null){throw new ux}return null} +function my(){if(hy==256){gy=iy;iy={};hy=0}++hy} +function Ci(){Ci=mB;Ai=[];Bi=[];Di(new ui,Ai,Bi)} +function zt(){zt=mB;wt=new Ft;xt=new TA;yt=new YA} +function My(a){var b;b=new lz(a);return new hA(a,b)} +function VA(a,b){var c;c=Zy(a.b,b,a);return c==null} +function Zq(a,b){var c;c=Uq(a,b);c&&$q(b.I);return c} +function tc(a,b){a.length>=b&&a.splice(0,b);return a} +function ei(a){zb.call(this,gi(a),fi(a));this.b=a} +function Bs(a){zs.call(this,a,Rx('span',a.tagName))} +function zr(){Ar.call(this,$doc.createElement(BC))} +function Gs(){Es.call(this);this.I[RC]='Caption'} +function Ls(a){this.b=a;this.c=ki(a);this.d=this.c} +function Mx(a,b){this.b=dC;this.e=a;this.c=b;this.d=-1} +function Su(a){this.c=a;this.b=xi(kn,tB,45,4,0)} +function bd(b,a){return b[a]==null?null:String(b[a])} +function SA(a,b){return Mi(a)===Mi(b)||a!=null&&Ib(a,b)} +function lB(a,b){return Mi(a)===Mi(b)||a!=null&&Ib(a,b)} +function tp(a,b){return Hh((!op&&(op=new Gp),op),a,b)} +function $p(a,b){return Hh(a.b,(!Ah&&(Ah=new Tf),Ah),b)} +function Ib(a,b){var c;return c=a,Li(c)?c.eQ(b):c===b} +function gA(a){var b;b=new tz(a.c.b);return new nA(b)} +function pn(a){if(Ji(a,56)){return a}return new Ab(a)} +function Gr(a){if(!a.B){return}nt(a.A,false,false);rh(a)} +function Sy(a){a.b=[];a.f={};a.d=false;a.c=null;a.e=0} +function fx(){fx=mB;dx=new gx(false);ex=new gx(true)} +function Rz(a,b){throw new Cx('Index: '+a+', Size: '+b)} +function $h(a,b,c){a.c>0?Qh(a,new hv(a,b,c)):Uh(a,b,c)} +function Jc(a,b){var c;c=Lc(a,Ki(b.c)?Ii(b.c):null);Mc(c)} +function $r(a){var b,c;c=Sp(a.c,0);b=Sp(c,1);return gd(b)} +function _n(a,b){if(a.k.b){return $n(b,a.k.b)}return false} +function is(a,b,c){if(!Po){a.g=true;Uo(a.I);a.e=b;a.f=c}} +function Bv(a,b,c,d){b.b=a;b.g=0;c.b=a;c.g=1;d.b=a;d.g=2} +function xi(a,b,c,d,e){var f;f=wi(e,d);yi(a,b,c,f);return f} +function Bq(a,b,c){return Hh(!a.G?(a.G=new Kh(a)):a.G,c,b)} +function up(a){vp();wp();return tp((!uh&&(uh=new Tf),uh),a)} +function Wx(c,a,b){b=ay(b);return c.replace(RegExp(a,kE),b)} +function lh(a,b){var c;if(hh){c=new jh(b);!!a.G&&Ih(a.G,c)}} +function Kn(a,b){this.d=b;this.e=new Qn(a);this.f=new Qn(b)} +function eb(a){$wnd.webkitCancelRequestAnimationFrame(a)} +function Jv(a){$wnd.genexSetKeyEvent=QB(function(){Vv(a)})} +function Hv(a){$wnd.genexSetClickEvent=QB(function(){Tv(a)})} +function tt(a){return a.__gwt_resolve?a.__gwt_resolve():a} +function Zn(a){return new Pn(md(a.t.c),a.t.c.scrollTop||0)} +function Pt(a){return Qt(a)?a.clientWidth-(a.scrollWidth||0):0} +function Ot(a){return Qt(a)?0:(a.scrollWidth||0)-a.clientWidth} +function Ut(a){return (a.c.scrollHeight||0)-a.c.clientHeight} +function X(a,b){return $wnd.setTimeout(QB(function(){a.N()}),b)} +function Qx(a,b){if(!Ji(b,1)){return false}return String(a)==b} +function Hi(a,b){if(a!=null&&!Gi(a,b)){throw new ux}return a} +function Vu(a){if(a.b>=a.c.d){throw new kB}return a.c.b[++a.b]} +function Ru(a,b){var c;c=Ou(a,b);if(c==-1){throw new kB}Qu(a,c)} +function Tq(a,b,c){Gq(b);Nu(a.g,b);Yc(c,(st(),tt(b.I)));Hq(b,a)} +function Bo(a){if(a.g){bv(a.g.b);a.g=null}a==a.f.i&&(a.f.i=null)} +function To(a){!!Po&&a==Po&&(Po=null);Jp();a===Mp&&(Mp=null)} +function Yn(a){var b;b=a.b.touches;return b.length>0?b[0]:null} +function qv(a){var b;b=Wx(a,'<[^<]*>',XB);return b.indexOf(ND)+4} +function dA(a){if(a.c<=0){throw new kB}return a.b.Nb(a.d=--a.c)} +function Zz(a){if(a.d<0){throw new yx}a.e.Qb(a.d);a.c=a.d;a.d=-1} +function co(a){if(!a.s){return}a.s=false;if(a.d){a.d=false;bo(a)}} +function Lr(a){if(a.B){return}else a.E&&Gq(a);nt(a.A,true,false)} +function fd(a){if($c(a)){return !!a&&a.nodeType==1}return false} +function $c(b){try{return !!b&&!!b.nodeType}catch(a){return false}} +function nx(a,b,c){var d;d=new lx;d.d=a+b;qx(c)&&rx(c,d);return d} +function yi(a,b,c,d){Ci();Ei(d,Ai,Bi);d.cZ=a;d.cM=b;d.qI=c;return d} +function _y(a,b){var c;c=a.c;a.c=b;if(!a.d){a.d=true;++a.e}return c} +function B(a,b){y(a.b,b)?(a.b.r=a.b.t.K(a.b.k,a.b.o)):(a.b.r=null)} +function vi(a,b){var c,d;c=a;d=wi(0,b);yi(c.cZ,c.cM,c.qI,d);return d} +function Sb(a,b,c){var d;d=Qb();try{return Pb(a,b,c)}finally{Tb(d)}} +function Ct(){zt();try{fr(yt,wt)}finally{Sy(yt.b);Sy(xt)}} +function pq(a){a.I.style[PC]='818px';a.I.style[QC]='325px'} +function $q(a){a.style[VC]=XB;a.style[WC]=XB;a.style[kC]=XB} +function Ab(a){xb.call(this);this.c=a;this.b=XB;Jc(new Sc,this)} +function Fs(){Es.call(this);Ks(this.b,'Enter new DNA Sequence',true)} +function Us(){Us=mB;new Ws('bottom');new Ws('middle');Ts=new Ws(WC)} +function I(){I=mB;var a;a=new gb;!!a&&(a.M()||(a=new M));H=a} +function dz(a){var b;b=a.c;a.c=null;if(a.d){a.d=false;--a.e}return b} +function wA(a,b){var c;c=(Oz(b,a.c),a.b[b]);IA(a.b,b,1);--a.c;return c} +function Fr(a,b){var c;c=td(b);if(fd(c)){return id(a.I,c)}return false} +function vA(a,b,c){for(;c<a.c;++c){if(lB(b,a.b[c])){return c}}return -1} +function Ii(a){if(a!=null&&(a.tM==mB||Fi(a,1))){throw new ux}return a} +function Yz(a){if(a.c>=a.e.Hb()){throw new kB}return a.e.Nb(a.d=a.c++)} +function eu(a){if(!a.b||!a.d.D){throw new kB}a.b=false;return a.c=a.d.D} +function ap(a){a.f=false;a.g=null;a.b=false;a.c=false;a.d=true;a.e=null} +function nd(a){return typeof a.tabIndex!='undefined'?a.tabIndex:-1} +function sd(a){return a.getBoundingClientRect&&a.getBoundingClientRect()} +function Ni(a){return ~~Math.max(Math.min(a,2147483647),-2147483648)} +function Wb(){return $wnd.setTimeout(function(){Lb!=0&&(Lb=0);Ob=-1},10)} +function Tb(a){a&&_b((Zb(),Yb));--Lb;if(a){if(Ob!=-1){Vb(Ob);Ob=-1}}} +function hd(a){var b=a.parentNode;(!b||b.nodeType!=1)&&(b=null);return b} +function td(a){var b=a.target;b&&b.nodeType==3&&(b=b.parentNode);return b} +function fi(a){var b;b=a.pb();if(!b.tb()){return null}return Hi(b.ub(),56)} +function xp(){var a;if(np){a=new Cp;!!op&&Ih(op,a);return null}return null} +function Iv(b){$wnd.genexSetDNASequence=QB(function(a){return b.Ab(a)})} +function Kv(b){$wnd.genexSetProblemNumber=QB(function(a){return b.Bb(a)})} +function Xv(a){typeof $wnd.genexStoreAnswer===$B&&$wnd.genexStoreAnswer(a)} +function kd(a){var b;b=sd(a);return b?b.left+md(a.ownerDocument.body):qd(a)} +function Lc(a,b){var c;c=Dc(a,b);return c.length==0?(new xc).T(b):tc(c,1)} +function by(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} +function Ks(a,b,c){c?dd(a.b,b):jd(a.b,b);if(a.d!=a.c){a.d=a.c;li(a.b,a.c)}} +function Hr(a){var b;b=a.D;if(b){a.p!=null&&b.gb(a.p);a.q!=null&&b.hb(a.q)}} +function az(e,a,b){var c,d=e.f;a=aC+a;a in d?(c=d[a]):++e.e;d[a]=b;return c} +function Di(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function Ei(a,b,c){Ci();for(var d=0,e=b.length;d<e;++d){a[b[d]]=c[d]}} +function Es(){Bs.call(this,$doc.createElement(BC));this.I[RC]='gwt-HTML'} +function Uf(a,b){Tf.call(this);this.b=b;!Bf&&(Bf=new Dg);Cg(Bf,a,this);this.c=a} +function eA(a,b){var c;this.b=a;this.e=a;c=a.Hb();(b<0||b>c)&&Rz(b,c);this.c=b} +function xA(a,b){var c;c=vA(a,b,0);if(c==-1){return false}wA(a,c);return true} +function hs(a,b){var c;c=td(b);if(fd(c)){return id(hd($r(a.k)),c)}return false} +function Ou(a,b){var c;for(c=0;c<a.d;++c){if(a.b[c]==b){return c}}return -1} +function ez(d,a){var b,c=d.f;a=aC+a;if(a in c){b=c[a];--d.e;delete c[a]}return b} +function gd(a){var b=a.firstChild;while(b&&b.nodeType!=1)b=b.nextSibling;return b} +function ox(a,b,c,d){var e;e=new lx;e.d=a+b;qx(c)&&rx(c,e);e.b=d?8:0;return e} +function Ty(a,b){return b==null?a.d:Ji(b,1)?Yy(a,Hi(b,1)):Xy(a,b,~~Jb(b))} +function Uy(a,b){return b==null?a.c:Ji(b,1)?Wy(a,Hi(b,1)):Vy(a,b,~~Jb(b))} +function bz(a,b){return b==null?dz(a):Ji(b,1)?ez(a,Hi(b,1)):cz(a,b,~~Jb(b))} +function Zy(a,b,c){return b==null?_y(a,c):Ji(b,1)?az(a,Hi(b,1),c):$y(a,b,c,~~Jb(b))} +function Rb(b){return function(){try{return Sb(b,this,arguments)}catch(a){throw a}}} +function vd(a){return (Qx(a.compatMode,oC)?a.documentElement:a.body).clientWidth} +function ud(a){return (Qx(a.compatMode,oC)?a.documentElement:a.body).clientHeight} +function xd(a){return (Qx(a.compatMode,oC)?a.documentElement:a.body).scrollHeight||0} +function yd(a){return (Qx(a.compatMode,oC)?a.documentElement:a.body).scrollWidth||0} +function pd(a,b){od(a)&&(b+=(a.scrollWidth||0)-a.clientWidth);a.scrollLeft=b} +function x(a,b){w(a);a.p=true;a.q=false;a.n=200;a.u=b;a.o=null;++a.s;B(a.k,pb())} +function Ro(a,b,c){var d;d=Oo;Oo=a;b==Po&&Ip(a.type)==8192&&(Po=null);c.cb(a);Oo=d} +function mx(a,b,c){var d;d=new lx;d.d=a+b;qx(c!=0?-c:0)&&rx(c!=0?-c:0,d);d.b=4;return d} +function Ic(a){var b;b=tc(Lc(a,wc()),3);b.length==0&&(b=tc((new xc).R(),1));return b} +function yv(a){var b;b=a.s;b=Wx(b,XD,XB);b=Wx(b,UD,XB);b=Wx(b,WD,XB);return Wx(b,VD,XB)} +function $b(a){var b,c;if(a.c){c=null;do{b=a.c;a.c=null;c=ic(b,c)}while(a.c);a.c=c}} +function _b(a){var b,c;if(a.d){c=null;do{b=a.d;a.d=null;c=ic(b,c)}while(a.d);a.d=c}} +function ac(a){var b;if(a.b){b=a.b;a.b=null;!a.g&&(a.g=[]);ic(b,a.g)}!!a.g&&(a.g=hc(a.g))} +function Mv(a){if(!a.I){return null}return new xw(a.g,a.i,a.j,a.e,a.b,a.I.j,a.I.f,a.I.r)} +function Rx(b,a){if(a==null)return false;return b==a||b.toLowerCase()==a.toLowerCase()} +function ld(a){var b;b=sd(a);return b?b.top+(a.ownerDocument.body.scrollTop||0):rd(a)} +function qu(){var a;pu();ru.call(this,(a=$doc.createElement('INPUT'),a.type='text',a))} +function od(a){return a.ownerDocument.defaultView.getComputedStyle(a,XB).direction==iC} +function oe(){oe=mB;ne=new re;me=new te;ke=new ve;le=new xe;je=yi(en,tB,8,[ne,me,ke,le])} +function Ee(){Ee=mB;Ae=new He;Be=new Je;Ce=new Le;De=new Ne;ze=yi(fn,tB,9,[Ae,Be,Ce,De])} +function $d(){$d=mB;Zd=new be;Xd=new de;Yd=new fe;Wd=new he;Vd=yi(dn,tB,7,[Zd,Xd,Yd,Wd])} +function Kd(){Kd=mB;Jd=new Nd;Gd=new Pd;Hd=new Rd;Id=new Td;Fd=yi(cn,tB,5,[Jd,Gd,Hd,Id])} +function yu(){yu=mB;uu=new Bu;vu=new Du;wu=new Fu;xu=new Hu;tu=yi(jn,tB,44,[uu,vu,wu,xu])} +function tz(a){var b;this.d=a;b=new zA;a.d&&sA(b,new Cz(a));Ry(a,b);Qy(a,b);this.b=new $z(b)} +function Db(a){var b;return a==null?'null':Ki(a)?Eb(Ii(a)):Ji(a,1)?YB:(b=a,Li(b)?b.cZ:_i).d} +function bo(a){var b;if(!a.g){return}b=Wn(a.n,a.f);if(b){a.i=new Co(a,b);jc((Zb(),a.i),16)}} +function Gv(a){var b,c;c=Mv(a);if(!c){Xv(cE);return}b=Bw(a.C,c);Qx(b,dE)?Xv('CORRECT'):Xv(cE)} +function So(a){var b;b=ep(Xo,a);if(!b&&!!a){a.cancelBubble=true;a.preventDefault()}return b} +function Yo(a){Jp();!$o&&($o=new Tf);if(!Xo){Xo=new Lh(null,true);_o=new cp}return Hh(Xo,$o,a)} +function wq(a,b){if(!a){throw new yb(SC)}b=$x(b);if(b.length==0){throw new wx(TC)}zq(a,b)} +function $n(a,b){var c,d,e;e=new Pn(a.b-b.b,a.c-b.c);c=Ex(e.b);d=Ex(e.c);return c<=25&&d<=25} +function Wn(a,b){var c,d;d=b.c-a.c;if(d<=0){return null}c=Mn(a.b,b.b);return new Pn(c.b/d,c.c/d)} +function Dy(a,b){var c;while(a.tb()){c=a.ub();if(b==null?c==null:Ib(b,c)){return a}}return null} +function xr(a,b){if(a.D!=b){return false}try{Hq(b,null)}finally{Zc(a.rb(),b.I);a.D=null}return true} +function rw(a){if(!a.d&&!a.e)return hC;if(!a.d&&a.e){return gE}if(a.c==84)return 'U';return fy(a.c)} +function cc(a){if(!a.j){a.j=true;!a.f&&(a.f=new lc(a));jc(a.f,1);!a.i&&(a.i=new oc(a));jc(a.i,50)}} +function w(a){if(!a.p){return}a.v=a.q;a.o=null;a.p=false;a.q=false;if(a.r){a.r.L();a.r=null}a.v&&kt(a)} +function sw(a,b){this.f=b;this.c=a;this.e=false;this.d=false;this.b=-1;this.g=-1;this.i=false} +function Ku(){tr.call(this);this.b=(Ps(),Ms);this.c=(Us(),Ts);this.f[cD]=kD;this.f[dD]=kD} +function ru(a){mu.call(this,a,(!An&&(An=new Bn),!xn&&(xn=new yn)));this.I[RC]='gwt-TextBox'} +function Cs(){zs.call(this,$doc.createElement(BC));this.I[RC]='gwt-Label';Ks(this.b,hD,false)} +function Co(a,b){this.f=a;this.b=new ob;this.c=Zn(this.f);this.e=new Kn(this.c,b);this.g=up(new Fo(this))} +function vq(a,b,c){if(!a){throw new yb(SC)}b=$x(b);if(b.length==0){throw new wx(TC)}c?_c(a,b):cd(a,b)} +function Jr(a,b,c){var d;a.w=b;a.C=c;b-=0;c-=0;d=a.I;d.style[VC]=b+(Ze(),$C);d.style[WC]=c+$C} +function Lv(a,b,c){var d;d=new Ev(b,a.D,a.E,a.H,a.v,a.u,a.A);Cv(d);Av(d);Dv(d);return new uw(tv(d,c),d)} +function Qt(a){var b=$doc.defaultView.getComputedStyle(a,null);return b.getPropertyValue(jC)==iC} +function iq(){var b=$wnd.onresize;$wnd.onresize=QB(function(a){try{yp()}finally{b&&b(a)}})} +function jc(b,c){Zb();$wnd.setTimeout(function(){var a=QB(fc)(b);a&&$wnd.setTimeout(arguments.callee,c)},c)} +function fb(b,c){var d=b;var e=QB(function(){var a=pb();d.J(a)});return $wnd.webkitRequestAnimationFrame(e,c)} +function Ry(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=new Hz(e,c.substring(1));a.Db(d)}}} +function Yh(a){var b,c;if(a.b){try{for(c=new $z(a.b);c.c<c.e.Hb();){b=Hi(Yz(c),46);b.wb()}}finally{a.b=null}}} +function js(a,b,c){var d,e;if(a.g){d=b+kd(a.I);e=c+ld(a.I);if(d<a.c||d>=a.j||e<a.d){return}Jr(a,d-a.e,e-a.f)}} +function yp(){var a,b;if(rp){b=vd($doc);a=ud($doc);if(qp!=b||pp!=a){qp=b;pp=a;xh((!op&&(op=new Gp),op),b)}}} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{QB(on)()}catch(a){b(c)}else{QB(on)()}} +function yr(a,b){if(b==a.D){return}!!b&&Gq(b);!!a.D&&a.ob(a.D);a.D=b;if(b){Yc(a.rb(),(st(),tt(a.D.I)));Hq(b,a)}} +function md(a){if(od(a)){return (a.scrollLeft||0)-((a.scrollWidth||0)-a.clientWidth)}return a.scrollLeft||0} +function Uq(a,b){var c;if(b.H!=a){return false}try{Hq(b,null)}finally{c=b.I;Zc(hd(c),c);Ru(a.g,b)}return true} +function Dc(a,b){var c,d,e;e=b&&b.stack?b.stack.split(bC):[];for(c=0,d=e.length;c<d;++c){e[c]=a.S(e[c])}return e} +function ub(a){var b,c,d;c=xi(mn,tB,55,a.length,0);for(d=0,b=a.length;d<b;++d){if(!a[d]){throw new Hx}c[d]=a[d]}} +function Ys(a,b){var c,d;c=(d=$doc.createElement(fD),d[iD]=a.b.b,Vo(d,jD,a.d.b),d);Yc(a.c,(st(),tt(c)));Tq(a,b,c)} +function Qu(a,b){var c;if(b<0||b>=a.d){throw new Bx}--a.d;for(c=b;c<a.d;++c){zi(a.b,c,a.b[c+1])}zi(a.b,a.d,null)} +function Eq(a,b){var c;switch(Ip(b.type)){case 16:case 32:c=b.relatedTarget;if(!!c&&id(a.I,c)){return}}Ef(b,a,a.I)} +function qw(a){switch(a.c){case 65:return jE;case 71:return iE;case 67:return hE;case 84:return gE;}return XB} +function ki(a){var b;b=bd(a,EC);if(Rx(iC,b)){return ri(),qi}else if(Rx(FC,b)){return ri(),pi}return ri(),oi} +function Qb(){var a;if(Lb!=0){a=pb();if(a-Nb>2000){Nb=a;Ob=Wb()}}if(Lb++==0){$b((Zb(),Yb));return true}return false} +function Mr(a){if(a.y){bv(a.y.b);a.y=null}if(a.t){bv(a.t.b);a.t=null}if(a.B){a.y=Yo(new et(a));a.t=jp(new ht(a))}} +function sz(a){if(!a.c){throw new zx('Must call next() before remove().')}else{Zz(a.b);bz(a.d,a.c.Jb());a.c=null}} +function U(a,b){if(b<0){throw new wx('must be non-negative')}a.c?V(a.d):W(a.d);xA(R,a);a.c=false;a.d=X(a,b);sA(R,a)} +function ri(){ri=mB;qi=new si('RTL',0);pi=new si('LTR',1);oi=new si('DEFAULT',2);ni=yi(hn,tB,30,[qi,pi,oi])} +function Ps(){Ps=mB;new Ss((Ee(),'center'));new Ss('justify');Ns=new Ss(VC);new Ss('right');Os=Ns;Ms=Os} +function mo(){this.e=new zA;this.f=new Mo;this.n=new Mo;this.k=new Mo;this.r=new zA;this.j=new Io(this);io(this,new Fn)} +function Vh(a,b){var c,d;d=Hi(Uy(a.e,b),58);if(!d){d=new TA;Zy(a.e,b,d)}c=Hi(d.c,57);if(!c){c=new zA;_y(d,c)}return c} +function Xh(a,b){var c,d;d=Hi(Uy(a.e,b),58);if(!d){return LA(),LA(),KA}c=Hi(d.c,57);if(!c){return LA(),LA(),KA}return c} +function kz(a,b){var c,d,e;if(Ji(b,59)){c=Hi(b,59);d=c.Jb();if(Ty(a.b,d)){e=Uy(a.b,d);return SA(c.Kb(),e)}}return false} +function xv(a,b){var c;b>=a.b.c&&(b=a.b.c-1);c=Hi(uA(a.b,b),48);while(!c.e&&b<a.b.c){c=Hi(uA(a.b,b),48);++b}return c} +function yA(a,b){var c;b.length<a.c&&(b=vi(b,a.c));for(c=0;c<a.c;++c){zi(b,c,a.b[c])}b.length>a.c&&zi(b,a.c,null);return b} +function Sp(a,b){var c=0,d=a.firstChild;while(d){if(d.nodeType==1){if(b==c)return d;++c}d=d.nextSibling}return null} +function Dn(a,b,c,d){var e,f,g;g=a*b;if(c>=0){e=0>c-d?0:c-d;g=g<e?g:e}else{f=0<c+d?0:c+d;g=g>f?g:f}return g} +function ly(a){jy();var b=aC+a;var c=iy[b];if(c!=null){return c}c=gy[b];c==null&&(c=ky(a));my();return iy[b]=c} +function Gf(a){var b,c;b=a.c;if(b){return c=a.b,(c.clientX||0)-kd(b)+md(b)+md(b.ownerDocument.body)}return a.b.clientX||0} +function as(a){var b,c;c=$doc.createElement(fD);b=$doc.createElement(BC);Yc(c,(st(),tt(b)));c[RC]=a;b[RC]=a+'Inner';return c} +function tr(){Vq.call(this);this.f=$doc.createElement(XC);this.e=$doc.createElement(YC);Yc(this.f,(st(),tt(this.e)));oq(this,this.f)} +function Tg(){var a;this.b=(a=document.createElement(BC),a.setAttribute('ontouchstart','return;'),typeof a.ontouchstart==$B)} +function kt(a){if(!a.j){jt(a);a.d||Zq((zt(),Dt(null)),a.b)}a.b.I.style[nD]='rect(auto, auto, auto, auto)';a.b.I.style[UB]=bD} +function Uh(a,b,c){var d,e,f;d=Xh(a,b);e=d.Gb(c);e&&d.Fb()&&(f=Hi(Uy(a.e,b),58),Hi(dz(f),57),f.e==0&&bz(a.e,b),undefined)} +function Ef(a,b,c){var d,e,f;if(Bf){f=Hi(Bg(Bf,a.type),12);if(f){d=f.b.b;e=f.b.c;Cf(f.b,a);Df(f.b,c);Cq(b,f.b);Cf(f.b,d);Df(f.b,e)}}} +function Qy(h,a){var b=h.b;for(var c in b){var d=parseInt(c,10);if(c==d){var e=b[d];for(var f=0,g=e.length;f<g;++f){a.Db(e[f])}}}} +function Vy(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Jb();if(h.Ib(a,g)){return f.Kb()}}}return null} +function Xy(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Jb();if(h.Ib(a,g)){return true}}}return false} +function ao(a,b){var c,d,e,f;c=pb();f=false;for(e=new $z(a.r);e.c<e.e.Hb();){d=Hi(Yz(e),35);if(c-d.c<=2500&&$n(b,d.b)){f=true;break}}return f} +function Bw(a,b){var c,d,e,f;c=new ty;e=gA(My(a.b.b));f=true;while(Xz(e.b.b)){d=Hi(mA(e),49);if(!d.Cb(b)){f=false;py(c,d.c)}}return f?dE:c.b.b} +function xw(a,b,c,d,e,f,g,h){this.g=a;this.i=b;this.j=c;this.f=d;this.b=e;this.c=f;this.e=g;this.d=h;'GenexState\n'+ww(this)} +function li(a,b){switch(b.c){case 0:{a[EC]=iC;break}case 1:{a[EC]=FC;break}case 2:{ki(a)!=(ri(),oi)&&(a[EC]=XB,undefined);break}}} +function lv(a){switch(a.b){case 0:++a.b;case 1:++a.b;return 'exon';case 2:++a.b;return 'next';case 3:a.b=1;return 'another';}return XB} +function $x(c){if(c.length==0||c[0]>hC&&c[c.length-1]>hC){return c}var a=c.replace(/^(\s*)/,XB);var b=a.replace(/\s*$/,XB);return b} +function Aq(a,b,c){var d;d=Ip(c.c);d==-1?sq(a,c.c):a.F==-1?Wp(a.I,d|(a.I.__eventBits||0)):(a.F|=d);return Hh(!a.G?(a.G=new Kh(a)):a.G,c,b)} +function rr(a){var b;qr.call(this,(b=$doc.createElement('BUTTON'),b.setAttribute('type','button'),b));this.I[RC]='gwt-Button';dd(this.I,a)} +function vc(b){var c=XB;try{for(var d in b){if(d!='name'&&d!='message'&&d!='toString'){try{c+='\n '+d+WB+b[d]}catch(a){}}}}catch(a){}return c} +function Hf(a){var b,c;b=a.c;if(b){return c=a.b,(c.clientY||0)-ld(b)+(b.scrollTop||0)+(b.ownerDocument.body.scrollTop||0)}return a.b.clientY||0} +function jt(a){if(a.j){if(a.b.v){Yc($doc.body,a.b.r);a.g=up(a.b.s);at();a.c=true}}else if(a.c){Zc($doc.body,a.b.r);bv(a.g.b);a.g=null;a.c=false}} +function Zs(){tr.call(this);this.b=(Ps(),Ms);this.d=(Us(),Ts);this.c=$doc.createElement(eD);Yc(this.e,(st(),tt(this.c)));this.f[cD]=kD;this.f[dD]=kD} +--></script> +<script><!-- +function Gq(a){if(!a.H){(zt(),WA(yt,a))&&Bt(a)}else if(a.H){a.H.ob(a)}else if(a.H){throw new zx("This widget's parent does not implement HasWidgets")}} +function ay(a){var b;b=0;while(0<=(b=a.indexOf('\\',b))){a.charCodeAt(b+1)==36?(a=a.substr(0,b-0)+'$'+Yx(a,++b)):(a=a.substr(0,b-0)+Yx(a,++b))}return a} +function Ju(a,b){var c,d,e;d=$doc.createElement(eD);c=(e=$doc.createElement(fD),e[iD]=a.b.b,Vo(e,jD,a.c.b),e);Yc(d,(st(),tt(c)));Yc(a.e,tt(d));Tq(a,b,c)} +function Ze(){Ze=mB;Ye=new af;We=new cf;Re=new ef;Se=new gf;Xe=new jf;Ve=new lf;Te=new nf;Qe=new pf;Ue=new rf;Pe=yi(gn,tB,10,[Ye,We,Re,Se,Xe,Ve,Te,Qe,Ue])} +function lt(a){jt(a);if(a.j){a.b.I.style[kC]=nC;a.b.C!=-1&&Jr(a.b,a.b.w,a.b.C);Yq((zt(),Dt(null)),a.b)}else{a.d||Zq((zt(),Dt(null)),a.b)}a.b.I.style[UB]=bD} +function rx(a,b){var c;b.c=a;if(a==2){c=String.prototype}else{if(a>0){var d=px(b);if(d){c=d.prototype}else{d=rn[a]=function(){};d.cZ=b;return}}else{return}}c.cZ=b} +function L(a){var b,c,d,e,f;b=xi(bn,rB,3,a.b.c,0);b=Hi(yA(a.b,b),4);c=new ob;for(e=0,f=b.length;e<f;++e){d=b[e];xA(a.b,d);B(d.b,c.b)}a.b.c>0&&U(a.c,Fx(5,16-(pb()-c.b)))} +function rv(a,b){var c,d;d=Tx(a.n,a.e,b);if(d==-1)return new ov(b,a.n.length,-1);c=Tx(a.n,a.d,d);if(c==-1)return new ov(b,a.n.length,-1);return new ov(b,d,c+a.d.length)} +function Ov(a,b,c){c!=-1?As(a.t,hD+c):As(a.t,hD);Ds(a.s,b.b.c+'<font color=blue>'+a.B+'<\/font><\/pre><br><br><br><font size=+1><\/font><\/body><\/html>');a.I=b.c;Tv(a)} +function Kx(){Kx=mB;Jx=yi(an,tB,-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function Dx(a){var b,c,d;b=xi(an,tB,-1,8,1);c=(Kx(),Jx);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return by(b,d,8)} +function ep(a,b){var c,d,e,f,g;if(!!$o&&!!a&&Jh(a,$o)){c=_o.b;d=_o.c;e=_o.d;f=_o.e;ap(_o);bp(_o,b);Ih(a,_o);g=!(_o.b&&!_o.c);_o.b=c;_o.c=d;_o.d=e;_o.e=f;return g}return true} +function Ey(a){var b,c,d,e;d=new ty;b=null;d.b.b+=eC;c=a.pb();while(c.tb()){b!=null?(Vc(d.b,b),d):(b=uE);e=c.ub();Vc(d.b,e===a?'(this Collection)':XB+e)}d.b.b+=fC;return d.b.b} +function Ih(b,c){var a,d,e;!c.f||c.X();e=c.g;zf(c,b.c);try{Th(b.b,c)}catch(a){a=pn(a);if(Ji(a,47)){d=a;throw new hi(d.b)}else throw a}finally{e==null?(c.f=true,c.g=null):(c.g=e)}} +function at(){var a,b,c,d,e;b=null.Rb();e=vd($doc);d=ud($doc);b[lD]=(Kd(),mD);b[PC]=0+(Ze(),$C);b[QC]=_C;c=yd($doc);a=xd($doc);b[PC]=(c>e?c:e)+$C;b[QC]=(a>d?a:d)+$C;b[lD]='block'} +function wi(a,b){var c=new Array(b);if(a==3){for(var d=0;d<b;++d){var e=new Object;e.l=e.m=e.h=0;c[d]=e}}else if(a>0){var e=[null,0,false][a];for(var d=0;d<b;++d){c[d]=e}}return c} +function cz(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Jb();if(h.Ib(a,g)){c.length==1?delete h.b[b]:c.splice(d,1);--h.e;return f.Kb()}}}return null} +function Hq(a,b){var c;c=a.H;if(!b){try{!!c&&c.E&&a.lb()}finally{a.H=null}}else{if(c){throw new zx('Cannot set a new parent without first clearing the old parent')}a.H=b;b.E&&a.kb()}} +function Rh(a,b,c){if(!b){throw new Ix('Cannot add a handler with a null type')}if(!c){throw new Ix('Cannot add a null handler')}a.c>0?Qh(a,new ev(a,b,c)):Sh(a,b,c);return new cv(a,b,c)} +function un(a){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:a})} +function fr(b,c){dr();var a,d,e,f,g;d=null;for(g=b.pb();g.tb();){f=Hi(g.ub(),45);try{c.qb(f)}catch(a){a=pn(a);if(Ji(a,56)){e=a;!d&&(d=new YA);VA(d,e)}else throw a}}if(d){throw new er(d)}} +function qc(a){var b,c,d;d=XB;a=$x(a);b=a.indexOf(ZB);c=a.indexOf($B)==0?8:0;if(b==-1){b=Sx(a,dy(64));c=a.indexOf('function ')==0?9:0}b!=-1&&(d=$x(a.substr(c,b-c)));return d.length>0?d:_B} +function mt(a,b){var c,d,e,f,g,h;a.j||(b=1-b);g=0;e=0;f=0;c=0;d=Ni(b*a.e);h=Ni(b*a.f);switch(0){case 2:case 0:g=~~(a.e-d)>>1;e=~~(a.f-h)>>1;f=e+h;c=g+d;}$u(a.b.I,'rect('+g+oD+f+oD+c+oD+e+'px)')} +function dy(a){var b,c;if(a>=65536){b=55296+(~~(a-65536)>>10&1023)&65535;c=56320+(a-65536&1023)&65535;return String.fromCharCode(b)+String.fromCharCode(c)}else{return String.fromCharCode(a&65535)}} +function ky(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c<e){b=a.charCodeAt(c+3)+31*(a.charCodeAt(c+2)+31*(a.charCodeAt(c+1)+31*(a.charCodeAt(c)+31*b)))|0;c+=4}while(c<d){b=b*31+Px(a,c++)}return b|0} +function zi(a,b,c){if(c!=null){if(a.qI>0&&!Gi(c,a.qI)){throw new bx}else if(a.qI==-1&&(c.tM==mB||Fi(c,1))){throw new bx}else if(a.qI<-1&&!(c.tM!=mB&&!Fi(c,1))&&!Gi(c,-a.qI)){throw new bx}}return a[b]=c} +function Fq(a){if(!a.E){throw new zx("Should only call onDetach when the widget is attached to the browser's document")}try{a.nb();lh(a,false)}finally{try{a.jb()}finally{a.I.__listener=null;a.E=false}}} +function $y(j,a,b,c){var d=j.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.Jb();if(j.Ib(a,h)){var i=g.Kb();g.Lb(b);return i}}}else{d=j.b[c]=[]}var g=new fB(a,b);d.push(g);++j.e;return null} +function Dt(a){zt();var b,c;c=Hi(Uy(xt,a),42);b=null;if(a!=null){if(!(b=wd($doc,a))){return null}}if(c){if(!b||c.I==b){return c}}xt.e==0&&sp(new It);!b?(c=new Lt):(c=new At(b));Zy(xt,a,c);VA(yt,c);return c} +function Pu(a,b,c){var d,e;if(c<0||c>a.d){throw new Bx}if(a.d==a.b.length){e=xi(kn,tB,45,a.b.length*2,0);for(d=0;d<a.b.length;++d){zi(e,d,a.b[d])}a.b=e}++a.d;for(d=a.d-1;d>c;--d){zi(a.b,d,a.b[d-1])}zi(a.b,c,b)} +function mw(){this.b='CAAGGCTATAACCGAGATTGATGCCTTGTGCGATAAGGTGTGTCCCCCCCCAAAGTGTCGGATGTCGAGTGCGCGTGCAAAAAAAAACAAAGGCGAGGACCTTAAGAAGGTGTGAGGGGGCGCTCGAT';this.f=nE;this.g=0;this.i=oE;this.d=pE;this.c=qE;this.e=rE} +function sn(a,b,c){var d=rn[a];if(d&&!d.cZ){_=d.prototype}else{!d&&(d=rn[a]=function(){});_=d.prototype=b<0?{}:tn(b);_.cM=c}for(var e=3;e<arguments.length;++e){arguments[e].prototype=_}if(d.cZ){_.cZ=d.cZ;d.cZ=null}} +function gi(a){var b,c,d,e,f;c=a.Hb();if(c==0){return null}b=new yy(c==1?'Exception caught: ':c+' exceptions caught: ');d=true;for(f=a.pb();f.tb();){e=Hi(f.ub(),56);d?(d=false):(b.b.b+='; ',b);xy(b,e.P())}return b.b.b} +function Vv(d){$doc.onkeypress=function(a){if(d.o){var a=$wnd.event||a;var b=String.fromCharCode(a.charCode);var c=a.charCode;d.yb(b,c)}};$doc.onkeydown=function(a){if(d.o){var a=$wnd.event||a;var b=a.keyCode;d.xb(b)}}} +function Xt(a){var b,c;if(a.d){return false}a.d=(b=(!Vn&&(Vn=(fx(),(!Gg&&(Gg=new Tg),Gg.b)&&!(c=navigator.userAgent.toLowerCase(),/android ([3-9]+)\.([0-9]+)/.exec(c)!=null)?ex:dx)),Vn.b?new mo:null),!!b&&jo(b,a),b);return !a.d} +function zq(a,b){var c=a.className.split(/\s+/);if(!c){return}var d=c[0];var e=d.length;c[0]=b;for(var f=1,g=c.length;f<g;f++){var h=c[f];h.length>e&&h.charAt(e)==UC&&h.indexOf(d)==0&&(c[f]=b+h.substring(e))}a.className=c.join(hC)} +function Dq(a){var b;if(a.E){throw new zx("Should only call onAttach when the widget is detached from the browser's document")}a.E=true;Kp(a.I,a);b=a.F;a.F=-1;b>0&&(a.F==-1?Wp(a.I,b|(a.I.__eventBits||0)):(a.F|=b));a.ib();a.mb();lh(a,true)} +function fo(a,b){var c,d;Lo(a.k,null,0);if(a.s){return}d=Yn(b);a.q=new Pn(d.pageX,d.pageY);c=pb();Lo(a.n,a.q,c);Lo(a.f,a.q,c);a.o=null;if(a.i){sA(a.r,new No(a.q,c));jc((Zb(),a.j),2500)}a.p=new Pn(md(a.t.c),a.t.c.scrollTop||0);Xn(a);a.s=true} +function _c(a,b){var c,d,e,f;b=$x(b);f=a.className;c=f.indexOf(b);while(c!=-1){if(c==0||f.charCodeAt(c-1)==32){d=c+b.length;e=f.length;if(d==e||d<e&&f.charCodeAt(d)==32){break}}c=f.indexOf(b,c+1)}if(c==-1){f.length>0&&(f+=hC);a.className=f+b}} +function Zt(a){zr.call(this);this.c=this.I;this.b=$doc.createElement(BC);Yc(this.c,this.b);this.c.style[UB]=($d(),'auto');this.c.style[kC]=(oe(),pD);this.b.style[kC]=pD;this.c.style[qD]=rD;this.b.style[qD]=rD;Xt(this);!Nt&&(Nt=new Rt);yr(this,a)} +function ic(b,c){var a,d,e,f;for(d=0,e=b.length;d<e;++d){f=b[d];try{f[1]?f[0].Q()&&(c=gc(c,f)):(Iv(f[0].b),Hv(f[0].b),Jv(f[0].b),Kv(f[0].b),typeof $wnd.genexIsReady===$B&&$wnd.genexIsReady(),undefined)}catch(a){a=pn(a);if(!Ji(a,56))throw a}}return c} +function Ev(a,b,c,d,e,f,g){var h;this.b=new zA;this.c=a;this.o=b;this.p=c;this.t=d;this.e=e;this.d=f;this.k=g;this.q=-1;this.u=-1;this.i=0;this.j=0;this.g=0;this.n=XB;this.f=XB;this.r=XB;this.s=XB;for(h=0;h<a.length;++h){sA(this.b,new sw(Px(this.c,h),h))}} +function fq(h){var c=XB;var d=$wnd.location.hash;d.length>0&&(c=h.db(d.substring(1)));cq(c);var e=h;var f=QB(function(){var a=XB,b=$wnd.location.hash;b.length>0&&(a=e.db(b.substring(1)));e.eb(a)});var g=function(){$wnd.setTimeout(g,250);f()};g();return true} +function nt(a,b,c){var d;a.d=c;w(a);if(a.i){T(a.i);a.i=null;kt(a)}a.b.B=b;Mr(a.b);d=!c&&a.b.u;a.j=b;if(d){if(b){jt(a);a.b.I.style[kC]=nC;a.b.C!=-1&&Jr(a.b,a.b.w,a.b.C);a.b.I.style[nD]=aD;Yq((zt(),Dt(null)),a.b);a.i=new qt(a);U(a.i,1)}else{x(a,pb())}}else{lt(a)}} +function En(a){var b,c,d,e,f,g,h,i,j,k,l,m;e=a.c;m=a.b;f=a.d;k=a.f;b=Math.pow(0.9993,m);g=e*5.0E-4;i=Dn(f.b,b,k.b,g);j=Dn(f.c,b,k.c,g);h=new Pn(i,j);a.f=h;d=a.c;c=Nn(h,new Pn(d,d));l=a.e;Jn(a,new Pn(l.b+c.b,l.c+c.c));if(Ex(h.b)<0.02&&Ex(h.c)<0.02){return false}return true} +function hc(a){var b,c,d,e,f,g;d=a.length;if(d==0){return null}b=false;f=pb();while(pb()-f<100){for(c=0;c<d;++c){g=a[c];if(!g){continue}if(!g[0].Q()){a[c]=null;b=true}}}if(b){e=[];for(c=0;c<d;++c){!!a[c]&&(e[e.length]=a[c],undefined)}return e.length==0?null:e}else{return a}} +function Cv(a){var b,c,d,e,f,g;f=Sx(a.c,a.o);g=Tx(a.c,a.t,f);e=new ty;if(f!=-1){c=0;a.q=f;a.i=a.q+a.o.length+a.p;g!=-1?(a.u=g):(a.u=a.c.length);for(b=a.i;b<a.u;++b){d=Hi(uA(a.b,b),48);d.d=true;++c}for(b=0;b<a.c.length;++b){d=Hi(uA(a.b,b),48);py(e,rw(d))}a.n=$x(e.b.b)}else{a.n=XB}} +function Mc(a){var b,c,d,e,f,g,h,i,j;j=xi(mn,tB,55,a.length,0);for(e=0,f=j.length;e<f;++e){i=Xx(a[e],cC,0);b=-1;d=dC;if(i.length==2&&i[1]!=null){h=i[1];g=Ux(h,dy(58));c=Vx(h,dy(58),g-1);d=h.substr(0,c-0);if(g!=-1&&c!=-1){sc(h.substr(c+1,g-(c+1)));b=sc(Yx(h,g+1))}}j[e]=new Mx(i[0],d+RB+b)}ub(j)} +function Tv(e){function f(a,b,c){var d=document.createRange();d.selectNodeContents(a);d.setEnd(b,c);return d.toString().length} +var g=$doc.getElementById('dna-strand');g.style.cursor='pointer';g.onclick=function(){var a=$wnd.getSelection();var b=f(this,a.anchorNode,a.anchorOffset);e.zb(b);e.o=true}} +function ww(a){var b;b=new ty;b.b.b+='State:\n';py(b,'\tStarting DNA='+a.g+bC);py(b,'\tStarting mRNA='+a.i+bC);py(b,'\tStarting protein='+a.j+bC);py(b,'\tSelected base='+a.f+bC);py(b,'\tCurrent DNA='+a.b+bC);py(b,'\tNum Exons='+a.c+bC);py(b,'\tRNA='+a.e+bC);py(b,'\tProtein='+a.d+'\n\n');return b.b.b} +function Av(a){var b,c,d,e,f,g;if(Qx(a.n,XB)){a.f=XB}else{c=0;f=new ty;d=0;while(c!=-1){b=rv(a,c);++a.j;c=b.d;for(e=b.c;e<b.b;++e){g=Hi(uA(a.b,e+a.i),48);g.e=true;++d;py(f,rw(g))}}for(e=a.u;e<a.u+a.k.length;++e){if(e>=a.b.c){g=new sw(65,e);g.e=true;sA(a.b,g)}else{g=Hi(uA(a.b,e),48);g.e=true}}a.f=f.b.b+a.k}} +function ut(){var c=function(){};c.prototype={className:XB,clientHeight:0,clientWidth:0,dir:XB,getAttribute:function(a,b){return this[a]},href:XB,id:XB,lang:XB,nodeType:1,removeAttribute:function(a,b){this[a]=undefined},setAttribute:function(a,b){this[a]=b},src:XB,style:{},title:XB};$wnd.GwtPotentialElementShim=c} +function cd(a,b){var c,d,e,f,g,h,i;b=$x(b);i=a.className;e=i.indexOf(b);while(e!=-1){if(e==0||i.charCodeAt(e-1)==32){f=e+b.length;g=i.length;if(f==g||f<g&&i.charCodeAt(f)==32){break}}e=i.indexOf(b,e+1)}if(e!=-1){c=$x(i.substr(0,e-0));d=$x(Yx(i,e+b.length));c.length==0?(h=d):d.length==0?(h=c):(h=c+hC+d);a.className=h}} +function Th(b,c){var a,d,e,f,g,h;if(!c){throw new Ix('Cannot fire null event')}try{++b.c;g=Wh(b,c.W());d=null;h=b.d?g.Pb(g.Hb()):g.Ob();while(b.d?h.c>0:h.c<h.e.Hb()){f=b.d?dA(h):Yz(h);try{c.V(Hi(f,27))}catch(a){a=pn(a);if(Ji(a,56)){e=a;!d&&(d=new YA);VA(d,e)}else throw a}}if(d){throw new ei(d)}}finally{--b.c;b.c==0&&Yh(b)}} +function _r(a){var b,c,d,e;Ar.call(this,$doc.createElement(XC));d=this.I;this.c=$doc.createElement(YC);Qo(d,this.c);d[cD]=0;d[dD]=0;for(b=0;b<a.length;++b){c=(e=$doc.createElement(eD),e[RC]=a[b],Qo(e,as(a[b]+'Left')),Qo(e,as(a[b]+'Center')),Qo(e,as(a[b]+'Right')),e);Qo(this.c,c);b==1&&(this.b=gd(Sp(c,1)))}this.I[RC]='gwt-DecoratorPanel'} +function hq(){var d=$wnd.onbeforeunload;var e=$wnd.onunload;$wnd.onbeforeunload=function(a){var b,c;try{b=QB(xp)()}finally{c=d&&d(a)}if(b!=null){return b}if(c!=null){return c}};$wnd.onunload=QB(function(a){try{np&&rh((!op&&(op=new Gp),op))}finally{e&&e(a);$wnd.onresize=null;$wnd.onscroll=null;$wnd.onbeforeunload=null;$wnd.onunload=null}})} +function zv(a,b,c,d,e){var f,g;f=new ty;g=new ty;b==a.q&&(g.b.b+='<EM class=promoter>',g);b==a.q+a.o.length&&(g.b.b+=UD,g);b==a.u&&(g.b.b+='<EM class=terminator>',g);b==a.u+a.t.length&&(g.b.b+=UD,g);if(d){g.b.b+=XD;Vc(g.b,c);g.b.b+=UD;e?(Vc(f.b,c),f):py(f,c.toLowerCase())}else{Vc(g.b,c);e?py(f,c.toLowerCase()):(Vc(f.b,c),f)}return new ow(g.b.b,f.b.b)} +function Er(a){var b,c,d,e,f;d=a.B;c=a.u;if(!d){a.I.style[ZC]=VB;a.u=false;!a.i&&(a.i=up(new ts(a)));Lr(a)}b=a.I;b.style[VC]=0+(Ze(),$C);b.style[WC]=_C;e=~~(vd($doc)-ad(a.I,TB))>>1;f=~~(ud($doc)-ad(a.I,SB))>>1;Jr(a,Fx(md($doc.body)+e,0),Fx(($doc.body.scrollTop||0)+f,0));if(!d){a.u=c;if(c){$u(a.I,aD);a.I.style[ZC]=bD;x(a.A,pb())}else{a.I.style[ZC]=bD}}} +function y(a,b){var c,d,e;c=a.s;d=b>=a.u+a.n;if(a.q&&!d){e=(b-a.u)/a.n;mt(a,(1+Math.cos(3.141592653589793+e*3.141592653589793))/2);return a.p&&a.s==c}if(!a.q&&b>=a.u){a.q=true;a.e=ad(a.b.I,SB);a.f=ad(a.b.I,TB);a.b.I.style[UB]=VB;mt(a,(1+Math.cos(3.141592653589793))/2);if(!(a.p&&a.s==c)){return false}}if(d){a.p=false;a.q=false;kt(a);return false}return true} +function jo(a,b){var c,d;if(a.t==b){return}Xn(a);for(d=new $z(a.e);d.c<d.e.Hb();){c=Hi(Yz(d),28);bv(c.b)}tA(a.e);go(a);ho(a);a.t=b;if(b){b.E&&(ho(a),a.c=Yo(new yo(a)));a.b=Bq(b,new oo(a),(!hh&&(hh=new Tf),hh));sA(a.e,Aq(b,new qo(a),(bh(),bh(),ah)));sA(a.e,Aq(b,new so(a),(Wg(),Wg(),Vg)));sA(a.e,Aq(b,new uo(a),(Og(),Og(),Ng)));sA(a.e,Aq(b,new wo(a),(Ig(),Ig(),Hg)))}} +function on(){var a;!!$stats&&un('com.google.gwt.useragent.client.UserAgentAsserter');a=_u();Qx(GC,a)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (safari) does not match the runtime user.agent value ('+a+'). Expect more errors.\n'),undefined);!!$stats&&un('com.google.gwt.user.client.DocumentModeAsserter');Wo();!!$stats&&un('genex.client.gx.GenexGWT');Nv(new Pv)} +function Dv(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(Qx(a.f,XB)){a.r=XB}else{h=0;l=new ty;for(j=0;j<a.b.c;++j){b=Hi(uA(a.b,j),48);if(b.e){c=xv(a,j);d=xv(a,c.f+1);e=xv(a,d.f+1);f=rw(c)+rw(d)+rw(e);h=e.f;if(Qx(f,xD)){Bv(0,c,d,e);py(l,jv(f));break}}}g=1;k=h+1;while(k<=a.b.c){i=xv(a,k);m=xv(a,i.f+1);n=xv(a,m.f+1);f=rw(i)+rw(m)+rw(n);if(k+2>=a.b.c)break;k=n.f+1;py(l,jv(f));Bv(g,i,m,n);if(Qx(jv(f),XB)){Bv(-2,i,m,n);break}++g}a.r=l.b.b}} +function rd(a){if(a.offsetTop==null){return 0}var b=0;var c=a.ownerDocument;var d=a.parentNode;if(d){while(d.offsetParent){b-=d.scrollTop;d=d.parentNode}}while(a){b+=a.offsetTop;if(c.defaultView.getComputedStyle(a,XB)[kC]==lC){b+=c.body.scrollTop;return b}var e=a.offsetParent;e&&$wnd.devicePixelRatio&&(b+=parseInt(c.defaultView.getComputedStyle(e,XB).getPropertyValue('border-top-width')));if(e&&e.tagName==mC&&a.style.position==nC){break}a=e}return b} +function Vp(a,b){switch(b){case 'drag':a.ondrag=Qp;break;case 'dragend':a.ondragend=Qp;break;case 'dragenter':a.ondragenter=Pp;break;case 'dragleave':a.ondragleave=Qp;break;case 'dragover':a.ondragover=Pp;break;case 'dragstart':a.ondragstart=Qp;break;case 'drop':a.ondrop=Qp;break;case 'canplaythrough':case 'ended':case 'progress':a.removeEventListener(b,Qp,false);a.addEventListener(b,Qp,false);break;default:throw 'Trying to sink unknown event type '+b;}} +function Xx(l,a,b){var c=new RegExp(a,kE);var d=[];var e=0;var f=l;var g=null;while(true){var h=c.exec(f);if(h==null||f==XB||e==b-1&&b>0){d[e]=f;break}else{d[e]=f.substring(0,h.index);f=f.substring(h.index+h[0].length,f.length);c.lastIndex=0;if(g==f){d[e]=f.substring(0,1);f=f.substring(1)}g=f;e++}}if(b==0&&l.length>0){var i=d.length;while(i>0&&d[i-1]==XB){--i}i<d.length&&d.splice(i,d.length-i)}var j=_x(d.length);for(var k=0;k<d.length;++k){j[k]=d[k]}return j} +function uv(a,b){var c,d,e,f,g,h;c=new ty;d=new ty;h=new ty;if(Qx(a.e,mD)||Qx(a.d,mD)){for(e=0;e<a.i;++e){h.b.b+=hC;c.b.b+=hC}}if(Qx(a.r,XB)){h.b.b+=RD;c.b.b+=SD}else{for(e=0;e<a.c.length;++e){f=Hi(uA(a.b,e),48);if(f.e){if(f.b==0){break}h.b.b+=hC;c.b.b+=hC}}h.b.b+=TD;py(c,TD+a.r+'-C\n');if(b!=-1){g=new uy(a.r);f=Hi(uA(a.b,b),48);if(f.b>=0){g=ry(g,f.b*3+3,UD);g=ry(g,f.b*3+f.g+1,VD);g=ry(g,f.b*3+f.g,WD);g=ry(g,f.b*3,XD)}py(h,g.b.b+YD)}else{py(h,a.r+YD)}}a.s=h.b.b;py(d,a.s+bC);return new ow(d.b.b,c.b.b)} +function Ir(a,b){var c,d,e,f;if(b.b||!a.z&&b.c){a.x&&(b.b=true);return}a.bb(b);if(b.b){return}d=b.e;c=Fr(a,d);c&&(b.c=true);a.x&&(b.b=true);f=Ip(d.type);switch(f){case 512:case 256:case 128:{((d.keyCode||0)&65535,(d.shiftKey?1:0)|(d.metaKey?8:0)|(d.ctrlKey?2:0)|(d.altKey?4:0),true)||(b.b=true);return}case 4:case 1048576:if(Po){b.c=true;return}if(!c&&a.n){Gr(a);return}break;case 8:case 64:case 1:case 2:case 4194304:{if(Po){b.c=true;return}break}case 2048:{e=td(d);if(a.x&&!c&&!!e){e.blur&&e!=$doc.body&&e.blur();b.b=true;return}break}}} +function qd(a){if(a.offsetLeft==null){return 0}var b=0;var c=a.ownerDocument;var d=a.parentNode;if(d){while(d.offsetParent){b-=d.scrollLeft;c.defaultView.getComputedStyle(d,XB).getPropertyValue(jC)==iC&&(b+=d.scrollWidth-d.clientWidth);d=d.parentNode}}while(a){b+=a.offsetLeft;if(c.defaultView.getComputedStyle(a,XB)[kC]==lC){b+=c.body.scrollLeft;return b}var e=a.offsetParent;e&&$wnd.devicePixelRatio&&(b+=parseInt(c.defaultView.getComputedStyle(e,XB).getPropertyValue('border-left-width')));if(e&&e.tagName==mC&&a.style.position==nC){break}a=e}return b} +function _u(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(sD)!=-1}())return sD;if(function(){return b.indexOf('webkit')!=-1}())return GC;if(function(){return b.indexOf(tD)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return b.indexOf(tD)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return 'ie6';if(function(){return b.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'} +function eo(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(!a.s){return}i=Yn(b);j=new Pn(i.pageX,i.pageY);k=pb();Lo(a.f,j,k);if(!a.d){e=Mn(j,a.q);c=Ex(e.b);d=Ex(e.c);if(c>5||d>5){Lo(a.k,a.n.b,a.n.c);if(c>d){h=md(a.t.c);g=Vt(a.t);f=Tt(a.t);if(e.b<0&&f<=h){Xn(a);return}else if(e.b>0&&g>=h){Xn(a);return}}else{n=a.t.c.scrollTop||0;m=Ut(a.t);if(e.c<0&&m<=n){Xn(a);return}else if(e.c>0&&0>=n){Xn(a);return}}a.d=true}}b.b.preventDefault();if(a.d){o=Mn(a.q,a.f.b);p=On(a.p,o);Wt(a.t,Ni(p.b));Yt(a.t,Ni(p.c));l=k-a.n.c;if(l>200&&!!a.o){Lo(a.n,a.o.b,a.o.c);a.o=null}else l>100&&!a.o&&(a.o=new No(j,k))}} +function Nv(a){a.s=new Es;a.G=new Zt(a.s);pq(a.G);qq(a.G,'genex-scrollpanel');Yq(Dt(eE),a.G);a.k=new ls;rq(a.k,'genex-dialogbox');a.n=new Ku;As(a.k.b,'New DNA Sequence');a.w=new Fs;qq(a.w,'genex-dialogbox-message');a.p=new qu;a.d=new rr('Cancel');rq(a.d,fE);Aq(a.d,new Zv(a),(Jf(),Jf(),If));a.y=new rr(dE);rq(a.y,fE);Aq(a.y,new cw(a),If);a.r=new Zs;Ys(a.r,a.d);Ys(a.r,a.y);Ju(a.n,a.w);Ju(a.n,a.p);Ju(a.n,a.r);Ur(a.k,a.n);a.F=new rr('Reset DNA Sequence');rq(a.F,fE);Aq(a.F,new fw(a),If);a.x=new rr('Enter New DNA Sequence');rq(a.x,fE);Aq(a.x,new iw(a),If);a.t=new Cs;rq(a.t,'genex-label');a.q=new Zs;Ys(a.q,a.F);Ys(a.q,a.x);Ys(a.q,a.t);Yq(Dt(eE),a.q);dc((Zb(),Yb),new aw(a))} +function Ip(a){switch(a){case 'blur':return 4096;case 'change':return 1024;case tC:return 1;case HC:return 2;case 'focus':return 2048;case IC:return 128;case JC:return 256;case KC:return 512;case 'load':return 32768;case 'losecapture':return 8192;case uC:return 4;case vC:return 64;case wC:return 32;case xC:return 16;case yC:return 8;case 'scroll':return 16384;case 'error':return 65536;case 'DOMMouseScroll':case LC:return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case DC:return 1048576;case CC:return 2097152;case AC:return 4194304;case zC:return 8388608;case MC:return 16777216;case NC:return 33554432;case OC:return 67108864;default:return -1;}} +function ms(a){var b,c,d;zr.call(this);this.s=new bt;this.A=new ot(this);Yc(this.I,$doc.createElement(BC));Jr(this,0,0);hd(gd(this.I))[RC]='gwt-PopupPanel';gd(this.I)[RC]=gD;this.n=false;this.o=false;this.x=true;d=yi(nn,tB,1,['dialogTop','dialogMiddle','dialogBottom']);this.k=new _r(d);qq(this.k,XB);wq(hd(gd(this.I)),'gwt-DecoratedPopupPanel');Kr(this,this.k);vq(gd(this.I),gD,false);vq(this.k.b,'dialogContent',true);Gq(a);this.b=a;c=$r(this.k);Yc(c,(st(),tt(this.b.I)));Qq(this,this.b);hd(gd(this.I))[RC]='gwt-DialogBox';this.j=vd($doc);this.c=0;this.d=0;b=new Is(this);Aq(this,b,(Xf(),Xf(),Wf));Aq(this,b,(vg(),vg(),ug));Aq(this,b,(cg(),cg(),bg));Aq(this,b,(pg(),pg(),og));Aq(this,b,(jg(),jg(),ig))} +function wv(a){var b,c,d,e,f,g,h;b=new ty;c=new ty;f=false;e=new mv;if(!(Qx(a.e,mD)||Qx(a.d,mD))){c.b.b+='<\/pre><h3>pre-mRNA: <EM class=exon>Ex<\/EM><EM class=next>o<\/EM><EM class=another>n<\/EM> Intron<\/h3><pre>';b.b.b+='<\/pre><h3>pre-mRNA: EXON intron<\/h3><pre>';if(Qx(a.n,XB)){c.b.b+=RD;b.b.b+=SD}else{for(g=0;g<a.i;++g){c.b.b+=hC;b.b.b+=hC}c.b.b+=ND;b.b.b+=ND;for(g=0;g<a.c.length;++g){d=Hi(uA(a.b,g),48);g!=0?(h=Hi(uA(a.b,g-1),48)):(h=Hi(uA(a.b,0),48));if(d.d){if(!h.e&&d.e){py(c,_D+lv(e)+aE);f=true}if(h.e&&!d.e){c.b.b+=UD;f=false}if(d.i){c.b.b+=XD;py(c,rw(d));c.b.b+=UD;f?py(b,rw(d).toLowerCase()):py(b,rw(d))}else{py(c,rw(d));f?py(b,rw(d)):py(b,rw(d).toLowerCase())}}}c.b.b+="<\/EM>-3'\n";b.b.b+=bE}}return new ow(c.b.b,b.b.b)} +function tv(a,b){var c,d,e,f,g,h,i,j,k;if(b!=-1){h=Hi(uA(a.b,b),48);h.i=true}e=new ty;d=new ty;f=(k=new ty,k.b.b+='<html><head>',k.b.b+='<style type="text/css">',k.b.b+='EM.selected {font-style: normal; background: blue; color: red}',k.b.b+='EM.promoter {font-style: normal; background: #90FF90; color: black}',k.b.b+='EM.terminator {font-style: normal; background: #FF9090; color: black}',k.b.b+='EM.exon {font-style: normal; background: #FF90FF; color: black}',k.b.b+='EM.next {font-style: normal; background: #FF8C00; color: black}',k.b.b+='EM.another {font-style: normal; background: #FFFF50; color: black}',k.b.b+='<\/style><\/head><body>',new ow(k.b.b,XB));py(e,f.c);py(d,f.b);c=sv(a);py(e,c.c);py(d,c.b);a.g=qv(c.c);i=wv(a);py(e,i.c);py(d,i.b);g=vv(a);py(e,g.c);py(d,g.b);j=uv(a,b);py(e,j.c);py(d,j.b);return new ow(e.b.b,d.b.b)} +function Wo(){var a,b,c;b=$doc.compatMode;a=yi(nn,tB,1,[oC]);for(c=0;c<a.length;++c){if(Qx(a[c],b)){return}}a.length==1&&Qx(oC,a[0])&&Qx('BackCompat',b)?"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 <!doctype html> 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> <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').<br>Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} +function vv(a){var b,c,d,e,f,g,h,i,j;b=new ty;c=new ty;f=false;h=false;e=new mv;c.b.b+=ZD;b.b.b+=ZD;if(!(Qx(a.e,mD)||Qx(a.d,mD))){c.b.b+=$D;b.b.b+=$D}c.b.b+='mRNA and Protein (<font color=blue>previous<\/font>):<\/h3><pre>';b.b.b+='mRNA and Protein (previous on line below):<\/h3><pre>';if(Qx(a.e,mD)||Qx(a.d,mD)){for(g=0;g<a.i;++g){c.b.b+=hC;b.b.b+=hC}}if(Qx(a.f,XB)){c.b.b+=RD;b.b.b+=SD}else{c.b.b+=ND;b.b.b+=ND;for(g=0;g<a.b.c;++g){d=Hi(uA(a.b,g),48);g!=0?(j=Hi(uA(a.b,g-1),48)):(j=Hi(uA(a.b,0),48));g!=a.b.c-1?(i=Hi(uA(a.b,g+1),48)):(i=Hi(uA(a.b,g),48));if(d.e){if(!j.e&&d.e){py(c,_D+lv(e)+aE);f&&(c.b.b+=WD,c)}if(!d.d&&d.e&&!h){c.b.b+=UD;h=true}if((d.b==0||d.b==-2)&&d.g==0&&d.d){c.b.b+=WD;f=true}if(d.b==1&&d.g==0){c.b.b+=VD;f=false}if(d.b==-1&&j.b==-2){c.b.b+=VD;f=false}if(d.i&&d.d){c.b.b+=XD;py(c,rw(d));c.b.b+=UD;f?py(b,rw(d)):py(b,rw(d).toLowerCase())}else{py(c,rw(d));f?py(b,rw(d).toLowerCase()):py(b,rw(d))}d.e&&!i.e&&(c.b.b+=UD,c)}}c.b.b+=bE;b.b.b+=bE}return new ow(c.b.b,b.b.b)} +function sv(a){var b,c,d,e,f,g,h,i,j,k,l,m;d=new ty;h=new ty;j=false;h.b.b+='<html><h3>DNA: <EM class=promoter>Promoter<\/EM>';h.b.b+='<EM class=terminator>Terminator<\/EM><\/h3><pre>\n';d.b.b+='<h3>DNA: promoter, terminator<\/h3><pre>\n';h.b.b+=OD;d.b.b+=OD;for(k=0;k<a.c.length;k=k+10){k==0?(m=XB):k<100?(m=' '+k):(m=' '+k);Vc(h.b,m);Vc(d.b,m)}h.b.b+=bC;d.b.b+=bC;h.b.b+=OD;d.b.b+=OD;for(k=0;k<a.c.length;k=k+10){if(k>0){h.b.b+=PD;d.b.b+=PD}}h.b.b+=bC;d.b.b+=bC;i=new ty;f=new ty;g=new ty;e=new ty;b=new ty;c=new ty;for(k=0;k<a.c.length;++k){l=Hi(uA(a.b,k),48);k==a.q&&(j=true);k==a.q+a.o.length&&(j=false);k==a.u&&(j=true);k==a.u+a.t.length&&(j=false);py(i,zv(a,k,fy(l.c),l.i,j).c);py(f,zv(a,k,QD,l.i,j).c);py(g,zv(a,k,qw(l),l.i,j).c);py(e,zv(a,k,fy(l.c),l.i,j).b);py(b,zv(a,k,QD,l.i,j).b);py(c,zv(a,k,qw(l),l.i,j).b)}h.b.b+="5'-<span id='dna-strand'>";py(h,i.b.b+"<\/EM><\/span>-3'\n "+f.b.b+"<\/EM>\n3'-"+g.b.b);h.b.b+="<\/EM>-5'\n";d.b.b+=ND;py(d,e.b.b+"-3'\n "+b.b.b+"\n3'-"+c.b.b);d.b.b+="-5'\n";return new ow(h.b.b,d.b.b)} +function Tp(){Np=QB(function(a){if(!So(a)){a.stopPropagation();a.preventDefault();return false}return true});Qp=QB(function(a){var b,c=this;while(c&&!(b=c.__listener)){c=c.parentNode}c&&c.nodeType!=1&&(c=null);b&&Lp(b)&&Ro(a,c,b)});Pp=QB(function(a){a.preventDefault();Qp.call(this,a)});Rp=QB(function(a){this.__gwtLastUnhandledEvent=a.type;Qp.call(this,a)});Op=QB(function(a){var b=Np;if(b(a)){var c=Mp;if(c&&c.__listener){if(Lp(c.__listener)){Ro(a,c,c.__listener);a.stopPropagation()}}}});$wnd.addEventListener(tC,Op,true);$wnd.addEventListener(HC,Op,true);$wnd.addEventListener(uC,Op,true);$wnd.addEventListener(yC,Op,true);$wnd.addEventListener(vC,Op,true);$wnd.addEventListener(xC,Op,true);$wnd.addEventListener(wC,Op,true);$wnd.addEventListener(LC,Op,true);$wnd.addEventListener(IC,Np,true);$wnd.addEventListener(KC,Np,true);$wnd.addEventListener(JC,Np,true);$wnd.addEventListener(DC,Op,true);$wnd.addEventListener(CC,Op,true);$wnd.addEventListener(AC,Op,true);$wnd.addEventListener(zC,Op,true);$wnd.addEventListener(MC,Op,true);$wnd.addEventListener(NC,Op,true);$wnd.addEventListener(OC,Op,true)} +function Xp(a,b){var c=(a.__eventBits||0)^b;a.__eventBits=b;if(!c)return;c&1&&(a.onclick=b&1?Qp:null);c&2&&(a.ondblclick=b&2?Qp:null);c&4&&(a.onmousedown=b&4?Qp:null);c&8&&(a.onmouseup=b&8?Qp:null);c&16&&(a.onmouseover=b&16?Qp:null);c&32&&(a.onmouseout=b&32?Qp:null);c&64&&(a.onmousemove=b&64?Qp:null);c&128&&(a.onkeydown=b&128?Qp:null);c&256&&(a.onkeypress=b&256?Qp:null);c&512&&(a.onkeyup=b&512?Qp:null);c&1024&&(a.onchange=b&1024?Qp:null);c&2048&&(a.onfocus=b&2048?Qp:null);c&4096&&(a.onblur=b&4096?Qp:null);c&8192&&(a.onlosecapture=b&8192?Qp:null);c&16384&&(a.onscroll=b&16384?Qp:null);c&32768&&(a.onload=b&32768?Rp:null);c&65536&&(a.onerror=b&65536?Qp:null);c&131072&&(a.onmousewheel=b&131072?Qp:null);c&262144&&(a.oncontextmenu=b&262144?Qp:null);c&524288&&(a.onpaste=b&524288?Qp:null);c&1048576&&(a.ontouchstart=b&1048576?Qp:null);c&2097152&&(a.ontouchmove=b&2097152?Qp:null);c&4194304&&(a.ontouchend=b&4194304?Qp:null);c&8388608&&(a.ontouchcancel=b&8388608?Qp:null);c&16777216&&(a.ongesturestart=b&16777216?Qp:null);c&33554432&&(a.ongesturechange=b&33554432?Qp:null);c&67108864&&(a.ongestureend=b&67108864?Qp:null)} +function jv(a){if(Qx(a,'UUU'))return uD;if(Qx(a,'UUC'))return uD;if(Qx(a,'UUA'))return vD;if(Qx(a,'UUG'))return vD;if(Qx(a,'CUU'))return vD;if(Qx(a,'CUC'))return vD;if(Qx(a,'CUA'))return vD;if(Qx(a,'CUG'))return vD;if(Qx(a,'AUU'))return wD;if(Qx(a,'AUC'))return wD;if(Qx(a,'AUA'))return wD;if(Qx(a,xD))return 'Met';if(Qx(a,'GUU'))return yD;if(Qx(a,'GUC'))return yD;if(Qx(a,'GUA'))return yD;if(Qx(a,'GUG'))return yD;if(Qx(a,'UCU'))return zD;if(Qx(a,'UCC'))return zD;if(Qx(a,'UCA'))return zD;if(Qx(a,'UCG'))return zD;if(Qx(a,'CCU'))return AD;if(Qx(a,'CCC'))return AD;if(Qx(a,'CCA'))return AD;if(Qx(a,'CCG'))return AD;if(Qx(a,'ACU'))return BD;if(Qx(a,'ACC'))return BD;if(Qx(a,'ACA'))return BD;if(Qx(a,'ACG'))return BD;if(Qx(a,'GCU'))return CD;if(Qx(a,'GCC'))return CD;if(Qx(a,'GCA'))return CD;if(Qx(a,'GCG'))return CD;if(Qx(a,'UAU'))return DD;if(Qx(a,'UAC'))return DD;if(Qx(a,'UAA'))return XB;if(Qx(a,'UAG'))return XB;if(Qx(a,'CAU'))return ED;if(Qx(a,'CAC'))return ED;if(Qx(a,'CAA'))return FD;if(Qx(a,'CAG'))return FD;if(Qx(a,'AAU'))return GD;if(Qx(a,'AAC'))return GD;if(Qx(a,'AAA'))return HD;if(Qx(a,'AAG'))return HD;if(Qx(a,'GAU'))return ID;if(Qx(a,'GAC'))return ID;if(Qx(a,'GAA'))return JD;if(Qx(a,'GAG'))return JD;if(Qx(a,'UGU'))return KD;if(Qx(a,'UGC'))return KD;if(Qx(a,'UGA'))return XB;if(Qx(a,'UGG'))return 'Trp';if(Qx(a,'CGU'))return LD;if(Qx(a,'CGC'))return LD;if(Qx(a,'CGA'))return LD;if(Qx(a,'CGG'))return LD;if(Qx(a,'AGU'))return zD;if(Qx(a,'AGC'))return zD;if(Qx(a,'AGA'))return LD;if(Qx(a,'AGG'))return LD;if(Qx(a,'GGU'))return MD;if(Qx(a,'GGC'))return MD;if(Qx(a,'GGA'))return MD;if(Qx(a,'GGG'))return MD;return XB} +--></script> +<script><!-- +var XB='',bC='\n',hC=' ',OD=' ',PD=' . |',TD=' N-',ZB='(',gC=')',lE='+',uE=', ',UC='-',bE="-3'\n",YD='-C',kD='0',_C='0px',rD='1',ND="5'-",aC=':',WB=': ',UD='<\/EM>',ZD='<\/pre><h3>',VD='<\/u>',_D='<EM class=',XD='<EM class=selected>',RD='<font color=red>none<\/font>\n',WD='<u>',mE='=',aE='>',RB='@',cC='@@',gE='A',rE='AAAAAAAAAAAAA',xD='AUG',CD='Ala',LD='Arg',GD='Asn',ID='Asp',mC='BODY',iE='C',qE='CAAAG',pC='CENTER',oC='CSS1Compat',KD='Cys',hE='G',oE='GGGGG',pE='GUGCG',FD='Gln',JD='Glu',MD='Gly',ED='His',cE='INCORRECT',wD='Ile',qC='JUSTIFY',rC='LEFT',vD='Leu',HD='Lys',SC='Null widget handle. If you are creating a composite, ensure that initWidget() has been called.',dE='OK',uD='Phe',AD='Pro',sC='RIGHT',hD='Selected Base = ',zD='Ser',YB='String',TC='Style names cannot be empty',jE='T',nE='TATAA',BD='Thr',DD='Tyr',CE='UmbrellaException',dC='Unknown',yD='Val',sE='You did not make a single base substitution.',eC='[',LE='[Lcom.google.gwt.dom.client.',GE='[Lcom.google.gwt.user.client.ui.',xE='[Ljava.lang.',fC=']',nC='absolute',iD='align',_B='anonymous',dD='cellPadding',cD='cellSpacing',RC='className',tC='click',nD='clip',EE='com.google.gwt.animation.client.',wE='com.google.gwt.core.client.',HE='com.google.gwt.core.client.impl.',KE='com.google.gwt.dom.client.',JE='com.google.gwt.event.dom.client.',ME='com.google.gwt.event.logical.shared.',DE='com.google.gwt.event.shared.',AE='com.google.gwt.i18n.client.',NE='com.google.gwt.text.shared.testing.',OE='com.google.gwt.touch.client.',FE='com.google.gwt.user.client.',RE='com.google.gwt.user.client.impl.',zE='com.google.gwt.user.client.ui.',BE='com.google.web.bindery.event.shared.',HC='dblclick',EC='dir',jC='direction',lD='display',BC='div',lC='fixed',$B='function',kE='g',fE='genex-button',yE='genex.client.gx.',QE='genex.client.problems.',PE='genex.client.requirements.',eE='genex_container',NC='gesturechange',OC='gestureend',MC='gesturestart',QC='height',VB='hidden',vE='java.lang.',IE='java.util.',IC='keydown',JC='keypress',KC='keyup',VC='left',FC='ltr',$D='mature-',uC='mousedown',vC='mousemove',wC='mouseout',xC='mouseover',yC='mouseup',LC='mousewheel',tD='msie',mD='none',SD='none\n',SB='offsetHeight',TB='offsetWidth',sD='opera',UB='overflow',gD='popupContent',kC='position',$C='px',oD='px, ',aD='rect(0px, 0px, 0px, 0px)',pD='relative',iC='rtl',GC='safari',XC='table',YC='tbody',fD='td',WC='top',zC='touchcancel',AC='touchend',CC='touchmove',DC='touchstart',eD='tr',tE='value',jD='verticalAlign',ZC='visibility',bD='visible',PC='width',qD='zoom',QD='|';var _,rn={},DB={25:1,27:1},NB={60:1},yB={6:1,9:1,50:1,53:1,54:1},tB={50:1},pB={},IB={46:1},LB={52:1},PB={50:1,57:1},qB={2:1},FB={24:1,29:1,37:1,40:1,41:1,43:1,45:1},MB={58:1},JB={11:1,27:1},AB={29:1},uB={50:1,56:1},BB={47:1,50:1,56:1},xB={6:1,8:1,50:1,53:1,54:1},OB={59:1},wB={6:1,7:1,50:1,53:1,54:1},vB={5:1,6:1,50:1,53:1,54:1},EB={23:1,27:1},HB={44:1,50:1,53:1,54:1},rB={4:1,50:1},CB={27:1,36:1},sB={38:1},GB={24:1,29:1,37:1,40:1,41:1,42:1,43:1,45:1},KB={49:1},zB={10:1,50:1,53:1,54:1};sn(1,-1,pB);_.eQ=function s(a){return this===a};_.gC=function t(){return this.cZ};_.hC=function u(){return Ub(this)};_.tS=function v(){return this.cZ.d+RB+Dx(this.hC())};_.toString=function(){return this.tS()};_.tM=mB;sn(3,1,{});_.n=-1;_.o=null;_.p=false;_.q=false;_.r=null;_.s=-1;_.t=null;_.u=-1;_.v=false;sn(4,1,{},C);_.J=function D(a){B(this,a)};_.b=null;sn(5,1,{});sn(6,1,qB);sn(7,5,{});var H=null;sn(8,7,{},M);_.M=function N(){return true};_.K=function O(a,b){var c;c=new bb(this,a);sA(this.b,c);this.b.c==1&&U(this.c,16);return c};sn(10,1,sB);_.N=function Y(){this.c||xA(R,this);this.O()};_.c=false;_.d=0;var R;sn(9,10,sB,Z);_.O=function $(){L(this.b)};_.b=null;sn(11,6,{2:1,3:1},bb);_.L=function cb(){K(this.c,this)};_.b=null;_.c=null;sn(12,7,{},gb);_.M=function hb(){return !!($wnd.webkitRequestAnimationFrame&&$wnd.webkitCancelRequestAnimationFrame)};_.K=function ib(a,b){var c;c=fb(a,b);return new kb(c)};sn(13,6,qB,kb);_.L=function lb(){eb(this.b)};_.b=0;sn(14,1,{},ob);sn(19,1,uB);_.P=function vb(){return this.f};_.tS=function wb(){var a,b;a=this.cZ.d;b=this.P();return b!=null?a+WB+b:a};_.f=null;sn(18,19,uB);sn(17,18,uB,yb);sn(16,17,uB,Ab);_.P=function Gb(){this.d==null&&(this.e=Db(this.c),this.b=this.b+WB+Bb(this.c),this.d=ZB+this.e+') '+Fb(this.c)+this.b,undefined);return this.d};_.b=XB;_.c=null;_.d=null;_.e=null;sn(23,1,{});var Lb=0,Mb=0,Nb=0,Ob=-1;sn(25,23,{},ec);_.b=null;_.c=null;_.d=null;_.e=false;_.f=null;_.g=null;_.i=null;_.j=false;var Yb;sn(26,1,{},lc);_.Q=function mc(){this.b.e=true;ac(this.b);this.b.e=false;return this.b.j=bc(this.b)};_.b=null;sn(27,1,{},oc);_.Q=function pc(){this.b.e&&jc(this.b.f,1);return this.b.j};_.b=null;sn(30,1,{},xc);_.R=function yc(){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=this.S(c.toString());b.push(d);var e=aC+d;var f=a[e];if(f){var g,h;for(g=0,h=f.length;g<h;g++){if(f[g]===c){return b}}}(f||(a[e]=[])).push(c);c=c.caller}return b};_.S=function zc(a){return qc(a)};_.T=function Ac(a){return []};sn(32,30,{});_.R=function Ec(){return tc(this.T(wc()),this.U())};_.T=function Fc(a){return Dc(this,a)};_.U=function Gc(){return 2};sn(31,32,{});_.R=function Nc(){return Ic(this)};_.S=function Oc(a){var b,c,d,e;if(a.length==0){return _B}e=$x(a);e.indexOf('at ')==0&&(e=Yx(e,3));c=e.indexOf(eC);c!=-1&&(e=$x(e.substr(0,c-0))+$x(Yx(e,e.indexOf(fC,c)+1)));c=e.indexOf(ZB);if(c==-1){d=e;e=XB}else{b=e.indexOf(gC,c);d=e.substr(c+1,b-(c+1));e=$x(e.substr(0,c-0))}c=Sx(e,dy(46));c!=-1&&(e=Yx(e,c+1));return (e.length>0?e:_B)+cC+d};_.T=function Pc(a){return Lc(this,a)};_.U=function Qc(){return 3};sn(33,31,{},Sc);sn(34,1,{});sn(35,34,{},Xc);_.b=XB;sn(51,1,{50:1,53:1,54:1});_.eQ=function Cd(a){return this===a};_.hC=function Dd(){return Ub(this)};_.tS=function Ed(){return this.b};_.b=null;_.c=0;sn(50,51,vB);var Fd,Gd,Hd,Id,Jd;sn(52,50,vB,Nd);sn(53,50,vB,Pd);sn(54,50,vB,Rd);sn(55,50,vB,Td);sn(56,51,wB);var Vd,Wd,Xd,Yd,Zd;sn(57,56,wB,be);sn(58,56,wB,de);sn(59,56,wB,fe);sn(60,56,wB,he);sn(61,51,xB);var je,ke,le,me,ne;sn(62,61,xB,re);sn(63,61,xB,te);sn(64,61,xB,ve);sn(65,61,xB,xe);sn(66,51,yB);var ze,Ae,Be,Ce,De;sn(67,66,yB,He);sn(68,66,yB,Je);sn(69,66,yB,Le);sn(70,66,yB,Ne);sn(71,51,zB);var Pe,Qe,Re,Se,Te,Ue,Ve,We,Xe,Ye;sn(72,71,zB,af);sn(73,71,zB,cf);sn(74,71,zB,ef);sn(75,71,zB,gf);sn(76,71,zB,jf);sn(77,71,zB,lf);sn(78,71,zB,nf);sn(79,71,zB,pf);sn(80,71,zB,rf);sn(86,1,{});_.tS=function yf(){return 'An event type'};_.g=null;sn(85,86,{});_.X=function Af(){this.f=false;this.g=null};_.f=false;sn(84,85,{});_.W=function Ff(){return this.Y()};_.b=null;_.c=null;var Bf=null;sn(83,84,{});sn(82,83,{});sn(81,82,{},Kf);_.V=function Lf(a){Hi(a,11).Z(this)};_.Y=function Mf(){return If};var If;sn(89,1,{});_.hC=function Rf(){return this.d};_.tS=function Sf(){return 'Event type'};_.d=0;var Qf=0;sn(88,89,{},Tf);sn(87,88,{12:1},Uf);_.b=null;_.c=null;sn(90,82,{},Zf);_.V=function $f(a){Yf(this,Hi(a,13))};_.Y=function _f(){return Wf};var Wf;sn(91,82,{},eg);_.V=function fg(a){dg(this,Hi(a,14))};_.Y=function gg(){return bg};var bg;sn(92,82,{},kg);_.V=function lg(a){Hi(Hi(a,15),39)};_.Y=function mg(){return ig};var ig;sn(93,82,{},qg);_.V=function rg(a){Hi(Hi(a,16),39)};_.Y=function sg(){return og};var og;sn(94,82,{},xg);_.V=function yg(a){wg(this,Hi(a,17))};_.Y=function zg(){return ug};var ug;sn(95,1,{},Dg);_.b=null;sn(98,83,{});var Gg=null;sn(97,98,{},Jg);_.V=function Kg(a){co(Hi(Hi(a,18),34).b)};_.Y=function Lg(){return Hg};var Hg;sn(99,98,{},Pg);_.V=function Qg(a){co(Hi(Hi(a,19),33).b)};_.Y=function Rg(){return Ng};var Ng;sn(100,1,{},Tg);sn(101,98,{},Yg);_.V=function Zg(a){Xg(this,Hi(a,20))};_.Y=function $g(){return Vg};var Vg;sn(102,98,{},dh);_.V=function eh(a){ch(this,Hi(a,21))};_.Y=function fh(){return ah};var ah;sn(103,85,{},jh);_.V=function kh(a){ih(this,Hi(a,22))};_.W=function mh(){return hh};_.b=false;var hh=null;sn(104,85,{},ph);_.V=function qh(a){Hi(a,23).$(this)};_.W=function sh(){return oh};var oh=null;sn(105,85,{},vh);_.V=function wh(a){Hi(a,25)._(this)};_.W=function yh(){return uh};_.b=0;var uh=null;sn(106,85,{},Ch);_.V=function Dh(a){Bh(Hi(a,26))};_.W=function Fh(){return Ah};var Ah=null;sn(107,1,AB,Kh,Lh);_.ab=function Mh(a){Ih(this,a)};_.b=null;_.c=null;sn(110,1,{});sn(109,110,{});_.b=null;_.c=0;_.d=false;sn(108,109,{},_h);sn(111,1,{28:1},bi);_.b=null;sn(113,17,BB,ei);_.b=null;sn(112,113,BB,hi);sn(114,1,{27:1},ji);sn(116,51,{30:1,50:1,53:1,54:1},si);var ni,oi,pi,qi;sn(117,1,{},ui);_.qI=0;var Ai,Bi;sn(126,1,{});sn(127,1,{},yn);var xn=null;sn(128,126,{},Bn);var An=null;sn(129,1,{},Fn);sn(130,1,{},Kn);_.b=0;_.c=0;_.d=null;_.e=null;_.f=null;sn(131,1,{32:1},Pn,Qn);_.eQ=function Rn(a){var b;if(!Ji(a,32)){return false}b=Hi(a,32);return this.b==b.b&&this.c==b.c};_.hC=function Sn(){return Ni(this.b)^Ni(this.c)};_.tS=function Tn(){return 'Point('+this.b+','+this.c+gC};_.b=0;_.c=0;sn(132,1,{},mo);_.b=null;_.c=null;_.d=false;_.g=null;_.i=null;_.o=null;_.p=null;_.q=null;_.s=false;_.t=null;var Vn=null;sn(133,1,{22:1,27:1},oo);_.b=null;sn(134,1,{21:1,27:1},qo);_.b=null;sn(135,1,{20:1,27:1},so);_.b=null;sn(136,1,{19:1,27:1,33:1},uo);_.b=null;sn(137,1,{18:1,27:1,34:1},wo);_.b=null;sn(138,1,CB,yo);_.bb=function zo(a){var b;if(1==Ip(a.e.type)){b=new Pn(a.e.clientX||0,a.e.clientY||0);if(_n(this.b,b)||ao(this.b,b)){a.b=true;a.e.stopPropagation();a.e.preventDefault()}}};_.b=null;sn(139,1,{},Co);_.Q=function Do(){var a,b,c,d,e,f,g;if(this!=this.f.i){Bo(this);return false}a=nb(this.b);In(this.e,a-this.d);this.d=a;Hn(this.e,a);e=En(this.e);e||Bo(this);ko(this.f,this.e.e);d=Ni(this.e.e.b);c=Vt(this.f.t);b=Tt(this.f.t);f=Ut(this.f.t);g=Ni(this.e.e.c);if((f<=g||0>=g)&&(b<=d||c>=d)){Bo(this);return false}return e};_.d=0;_.e=null;_.f=null;_.g=null;sn(140,1,DB,Fo);_._=function Go(a){Bo(this.b)};_.b=null;sn(141,1,{},Io);_.Q=function Jo(){var a,b,c;a=pb();b=new $z(this.b.r);while(b.c<b.e.Hb()){c=Hi(Yz(b),35);a-c.c>=2500&&Zz(b)}return this.b.r.c!=0};_.b=null;sn(142,1,{35:1},Mo,No);_.b=null;_.c=0;var Oo=null,Po=null;var Xo=null;sn(147,85,{},cp);_.V=function dp(a){Hi(a,36).bb(this);_o.d=false};_.W=function fp(){return $o};_.X=function gp(){ap(this)};_.b=false;_.c=false;_.d=false;_.e=null;var $o=null,_o=null;var hp=null;sn(149,1,EB,lp);_.$=function mp(a){while((S(),R).c>0){T(Hi(uA(R,0),38))}};var np=false,op=null,pp=0,qp=0,rp=false;sn(151,85,{},Cp);_.V=function Dp(a){Oi(a);null.Rb()};_.W=function Ep(){return Ap};var Ap;sn(152,107,AB,Gp);var Hp=false;var Mp=null,Np=null,Op=null,Pp=null,Qp=null,Rp=null;sn(155,1,AB);_.db=function _p(a){return decodeURI(a.replace('%23','#'))};_.ab=function aq(a){Ih(this.b,a)};_.eb=function bq(a){a=a==null?XB:a;if(!Qx(a,Zp==null?XB:Zp)){Zp=a;Eh(this)}};var Zp=XB;sn(157,155,AB);sn(156,157,AB,gq);sn(163,1,{40:1,43:1});_.fb=function tq(){return this.I};_.gb=function uq(a){Vo(this.I,QC,a)};_.hb=function xq(a){Vo(this.I,PC,a)};_.tS=function yq(){if(!this.I){return '(null handle)'}return this.I.outerHTML};_.I=null;sn(162,163,FB);_.ib=function Iq(){};_.jb=function Jq(){};_.ab=function Kq(a){Cq(this,a)};_.kb=function Lq(){Dq(this)};_.cb=function Mq(a){Eq(this,a)};_.lb=function Nq(){Fq(this)};_.mb=function Oq(){};_.nb=function Pq(){};_.E=false;_.F=0;_.G=null;_.H=null;sn(161,162,FB);_.ib=function Rq(){fr(this,(dr(),br))};_.jb=function Sq(){fr(this,(dr(),cr))};sn(160,161,FB);_.pb=function Wq(){return new Wu(this.g)};_.ob=function Xq(a){return Uq(this,a)};sn(159,160,FB);_.ob=function _q(a){return Zq(this,a)};sn(164,112,BB,er);var br,cr;sn(165,1,{},hr);_.qb=function ir(a){a.kb()};sn(166,1,{},kr);_.qb=function lr(a){a.lb()};sn(169,162,FB);_.kb=function pr(){var a;Dq(this);a=nd(this.I);-1==a&&(this.I.tabIndex=0,undefined)};sn(168,169,FB);sn(167,168,FB,rr);sn(170,160,FB);_.e=null;_.f=null;sn(173,161,FB);_.rb=function Br(){return this.I};_.pb=function Cr(){return new fu(this)};_.ob=function Dr(a){return xr(this,a)};_.D=null;sn(172,173,FB);_.rb=function Nr(){return gd(this.I)};_.fb=function Or(){return hd(gd(this.I))};_.sb=function Pr(){Gr(this)};_.bb=function Qr(a){a.d&&(a.e,false)&&(a.b=true)};_.nb=function Rr(){this.B&&nt(this.A,false,true)};_.gb=function Sr(a){this.p=a;Hr(this);a.length==0&&(this.p=null)};_.hb=function Tr(a){this.q=a;Hr(this);a.length==0&&(this.q=null)};_.n=false;_.o=false;_.p=null;_.q=null;_.r=null;_.t=null;_.u=false;_.v=false;_.w=-1;_.x=false;_.y=null;_.z=false;_.B=false;_.C=-1;sn(171,172,FB);_.ib=function Vr(){Dq(this.k)};_.jb=function Wr(){Fq(this.k)};_.pb=function Xr(){return new fu(this.k)};_.ob=function Yr(a){return xr(this.k,a)};_.k=null;sn(174,173,FB,_r);_.rb=function bs(){return this.b};_.b=null;_.c=null;sn(175,171,FB,ls);_.ib=function ns(){try{Dq(this.k)}finally{Dq(this.b)}};_.jb=function os(){try{Fq(this.k)}finally{Fq(this.b)}};_.sb=function ps(){gs(this)};_.cb=function qs(a){switch(Ip(a.type)){case 4:case 8:case 64:case 16:case 32:if(!this.g&&!hs(this,a)){return}}Eq(this,a)};_.bb=function rs(a){var b;b=a.e;!a.b&&Ip(a.e.type)==4&&hs(this,b)&&(b.preventDefault(),undefined);a.d&&(a.e,false)&&(a.b=true)};_.b=null;_.c=0;_.d=0;_.e=0;_.f=0;_.g=false;_.i=null;_.j=0;sn(176,1,DB,ts);_._=function us(a){this.b.j=a.b};_.b=null;sn(180,162,FB);_.b=null;sn(179,180,FB,Cs);sn(178,179,FB,Es,Fs);sn(177,178,FB,Gs);sn(181,1,{13:1,14:1,15:1,16:1,17:1,27:1,39:1},Is);_.b=null;sn(182,1,{},Ls);_.b=null;_.c=null;_.d=null;var Ms,Ns,Os;sn(183,1,{});sn(184,183,{},Ss);_.b=null;var Ts;sn(185,1,{},Ws);_.b=null;sn(186,170,FB,Zs);_.ob=function $s(a){var b,c;c=hd(a.I);b=Uq(this,a);b&&Zc(this.c,c);return b};_.c=null;sn(187,1,DB,bt);_._=function ct(a){at()};sn(188,1,CB,et);_.bb=function ft(a){Ir(this.b,a)};_.b=null;sn(189,1,{26:1,27:1},ht);_.b=null;sn(190,3,{},ot);_.b=null;_.c=false;_.d=false;_.e=0;_.f=-1;_.g=null;_.i=null;_.j=false;sn(191,10,sB,qt);_.O=function rt(){this.b.i=null;x(this.b,pb())};_.b=null;sn(193,159,GB,At);var wt,xt,yt;sn(194,1,{},Ft);_.qb=function Gt(a){a.E&&a.lb()};sn(195,1,EB,It);_.$=function Jt(a){Ct()};sn(196,193,GB,Lt);sn(197,1,{},Rt);var Nt=null;sn(198,173,FB,Zt);_.rb=function $t(){return this.b};_.kb=function _t(){Dq(this);this.c.__listener=this};_.lb=function au(){this.c.__listener=null;Fq(this)};_.gb=function bu(a){Vo(this.I,QC,a)};_.hb=function cu(a){Vo(this.I,PC,a)};_.b=null;_.c=null;_.d=null;sn(199,1,{},fu);_.tb=function gu(){return this.b};_.ub=function hu(){return eu(this)};_.vb=function iu(){!!this.c&&this.d.ob(this.c)};_.c=null;_.d=null;sn(202,169,FB);_.cb=function nu(a){var b;b=Ip(a.type);(b&896)!=0?Eq(this,a):Eq(this,a)};_.mb=function ou(){};sn(201,202,FB);sn(200,201,FB,qu);sn(203,51,HB);var tu,uu,vu,wu,xu;sn(204,203,HB,Bu);sn(205,203,HB,Du);sn(206,203,HB,Fu);sn(207,203,HB,Hu);sn(208,170,FB,Ku);_.ob=function Lu(a){var b,c;c=hd(a.I);b=Uq(this,a);b&&Zc(this.e,hd(c));return b};sn(209,1,{},Su);_.pb=function Tu(){return new Wu(this)};_.b=null;_.c=null;_.d=0;sn(210,1,{},Wu);_.tb=function Xu(){return this.b<this.c.d-1};_.ub=function Yu(){return Vu(this)};_.vb=function Zu(){if(this.b<0||this.b>=this.c.d){throw new yx}this.c.c.ob(this.c.b[this.b--])};_.b=-1;_.c=null;sn(214,1,{},cv);_.b=null;_.c=null;_.d=null;sn(215,1,IB,ev);_.wb=function fv(){Sh(this.b,this.d,this.c)};_.b=null;_.c=null;_.d=null;sn(216,1,IB,hv);_.wb=function iv(){Uh(this.b,this.d,this.c)};_.b=null;_.c=null;_.d=null;sn(218,1,{},mv);_.b=0;sn(219,1,{},ov);_.b=0;_.c=0;_.d=0;sn(220,1,{},Ev);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;_.g=0;_.i=0;_.j=0;_.k=null;_.n=null;_.o=null;_.p=0;_.q=0;_.r=null;_.s=null;_.t=null;_.u=0;sn(221,1,{},Pv);_.xb=function Qv(a){var b,c;if(a==39){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1);b=Lv(this,this.b,this.e);Ov(this,b,this.e);this.c=b.c.c.length;b.c.g+1;Gv(this)}if(a==37){--this.e;this.e<0&&(this.e=0);b=Lv(this,this.b,this.e);Ov(this,b,this.e);this.c=b.c.c.length;b.c.g+1;Gv(this)}if(a==8||a==46){this.B=this.f;c=new uy(this.b);qy(c,this.e);this.b=c.b.b;this.e>=0&&--this.e;b=Lv(this,this.b,this.e);Ov(this,b,this.e);this.f=yv(b.c);this.c=b.c.c.length;Gv(this)}};_.yb=function Rv(a,b){var c,d;if(Qx(a,gE)||Qx(a,hE)||Qx(a,iE)||Qx(a,jE)){this.B=this.f;d=new uy(this.b);ry(d,this.e,a);this.b=d.b.b;++this.e;c=Lv(this,this.b,this.e);Ov(this,c,this.e);this.f=yv(c.c);this.c=c.c.c.length;c.c.g+1;Gv(this)}if(Qx(a,'a')||Qx(a,kE)||Qx(a,'c')||Qx(a,'t')){this.B=this.f;d=new uy(this.b);sy(d,this.e,this.e+1,a.toUpperCase());this.b=d.b.b;c=Lv(this,this.b,this.e);Ov(this,c,this.e);this.f=yv(c.c);this.c=c.c.c.length;c.c.g+1;Gv(this)}if(Qx(a,lE)||Qx(a,UC)||Qx(a,mE)||Qx(a,'_')){if(Qx(a,lE)||Qx(a,mE)){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1)}else{--this.e;this.e<0&&(this.e=0)}c=Lv(this,this.b,this.e);Ov(this,c,this.e);this.c=c.c.c.length;c.c.g+1;Gv(this)}if(b==39){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1);c=Lv(this,this.b,this.e);Ov(this,c,this.e);this.c=c.c.c.length;c.c.g+1;Gv(this)}if(b==37){--this.e;this.e<0&&(this.e=0);c=Lv(this,this.b,this.e);Ov(this,c,this.e);this.c=c.c.c.length;c.c.g+1;Gv(this)}};_.zb=function Sv(a){var b;if(a>=0&&a<=this.c){b=Lv(this,this.b,a);Ov(this,b,a);this.c=b.c.c.length;this.e=a;Gv(this)}};_.Ab=function Uv(a){var b;a!=null&&lw(this.z,a);this.z.f=nE;this.z.i=oE;this.z.d=pE;this.z.c=qE;this.z.e=rE;this.g=this.z.b;this.b=this.z.b;this.c=this.b.length;this.D=this.z.f;this.E=this.z.g;this.H=this.z.i;this.v=this.z.d;this.u=this.z.c;this.A=this.z.e;(Qx(this.v,mD)||Qx(this.u,mD))&&(this.A=XB);b=Lv(this,this.g,-1);this.i=b.c.f;this.j=b.c.r;this.c=b.c.c.length;this.f=yv(b.c);Ds(this.s,b.b.c+'<\/pre><\/body><\/html>')};_.Bb=function Wv(a){var b,c,d,e,f;this.C=new Cw;if(a==1){b=new $w;b.c=sE;Aw(this.C,b);d=new Xw;d.c='Your change does not make the mature mRNA shorter.';Aw(this.C,d)}else if(a==2){b=new $w;b.c=sE;Aw(this.C,b);d=new Iw;d.c='Your change does not make the protein longer.';Aw(this.C,d)}else if(a==3){b=new $w;b.c=sE;Aw(this.C,b);d=new Uw;d.c='Your change does not make the protein shorter.';Aw(this.C,d)}else if(a==4){b=new $w;b.c=sE;Aw(this.C,b);d=new Ow;d.c='Your change does not prevent mRNA from being made.';Aw(this.C,d);f=new Lw;f.c='Your change does not prevent protein from being made';Aw(this.C,f)}else if(a==5){c=new Rw;c.b=c.b;c.c='Your protein does not have 5 amino acids.';Aw(this.C,c);e=new Fw;e.b=1;e.c='Your gene does not contain one intron.';Aw(this.C,e)}};_.b=null;_.c=0;_.d=null;_.e=0;_.f=XB;_.g=null;_.i=XB;_.j=XB;_.k=null;_.n=null;_.o=false;_.p=null;_.q=null;_.r=null;_.s=null;_.t=null;_.u=null;_.v=null;_.w=null;_.x=null;_.y=null;_.A=null;_.B=XB;_.C=null;_.D=null;_.E=0;_.F=null;_.G=null;_.H=null;_.I=null;sn(222,1,JB,Zv);_.Z=function $v(a){gs(this.b.k);this.b.p.I[tE]=XB};_.b=null;sn(223,1,{},aw);_.b=null;sn(224,1,JB,cw);_.Z=function dw(a){var b,c;this.b.B=this.b.f;c=bd(this.b.p.I,tE);c=c.toUpperCase();c=Wx(c,'[^AGCT]',XB);this.b.b=c;this.b.e=-1;b=Lv(this.b,this.b.b,-1);Ov(this.b,b,-1);this.b.f=yv(b.c);this.b.c=b.c.c.length;gs(this.b.k);Gv(this.b)};_.b=null;sn(225,1,JB,fw);_.Z=function gw(a){var b;this.b.b=this.b.g;b=Lv(this.b,this.b.b,-1);Ov(this.b,b,-1);this.b.f=yv(b.c);this.b.c=b.c.c.length;Gv(this.b)};_.b=null;sn(226,1,JB,iw);_.Z=function jw(a){Er(this.b.k)};_.b=null;sn(227,1,{},mw);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;_.g=0;_.i=null;sn(228,1,{},ow);_.b=null;_.c=null;sn(229,1,{48:1},sw);_.b=0;_.c=0;_.d=false;_.e=false;_.f=0;_.g=0;_.i=false;sn(230,1,{},uw);_.b=null;_.c=null;sn(231,1,{},xw);_.tS=function yw(){return ww(this)};_.b=null;_.c=0;_.d=null;_.e=null;_.f=0;_.g=null;_.i=null;_.j=null;sn(232,1,{},Cw);_.b=null;sn(234,1,KB);_.c='unassigned';sn(233,234,KB,Fw);_.Cb=function Gw(a){return a.c==this.b+1};_.b=0;sn(235,234,KB,Iw);_.Cb=function Jw(a){return a.d.length>a.j.length};sn(236,234,KB,Lw);_.Cb=function Mw(a){return Qx(a.d,XB)};sn(237,234,KB,Ow);_.Cb=function Pw(a){return Qx(a.e,XB)};sn(238,234,KB,Rw);_.Cb=function Sw(a){return a.d.length==this.b};_.b=0;sn(239,234,KB,Uw);_.Cb=function Vw(a){return a.d.length<a.j.length};sn(240,234,KB,Xw);_.Cb=function Yw(a){return a.e.length<a.i.length};sn(241,234,KB,$w);_.Cb=function _w(a){var b,c,d,e;e=a.g;b=a.b;if(e.length!=b.length)return false;d=0;for(c=0;c<e.length;++c){e.charCodeAt(c)!=b.charCodeAt(c)&&++d}if(d==1)return true;return false};sn(242,17,uB,bx);sn(243,1,{50:1,51:1,53:1},gx);_.eQ=function hx(a){return Ji(a,51)&&Hi(a,51).b==this.b};_.hC=function ix(){return this.b?1231:1237};_.tS=function jx(){return this.b?'true':'false'};_.b=false;var dx,ex;sn(244,1,{},lx);_.tS=function sx(){return ((this.b&2)!=0?'interface ':(this.b&1)!=0?XB:'class ')+this.d};_.b=0;_.c=0;_.d=null;sn(245,17,uB,ux);sn(246,17,uB,wx);sn(247,17,uB,yx,zx);sn(248,17,uB,Bx,Cx);sn(252,17,uB,Hx,Ix);var Jx;sn(254,1,{50:1,55:1},Mx);_.tS=function Nx(){return this.b+'.'+this.e+ZB+(this.c!=null?this.c:'Unknown Source')+(this.d>=0?aC+this.d:XB)+gC};_.b=null;_.c=null;_.d=0;_.e=null;_=String.prototype;_.cM={1:1,50:1,52:1,53:1};_.eQ=function cy(a){return Qx(this,a)};_.hC=function ey(){return ly(this)};_.tS=_.toString;var gy,hy=0,iy;sn(256,1,LB,ty,uy);_.tS=function vy(){return this.b.b};sn(257,1,LB,yy);_.tS=function zy(){return this.b.b};sn(258,17,uB,By);sn(259,1,{});_.Db=function Fy(a){throw new By('Add not supported on this collection')};_.Eb=function Gy(a){var b;b=Dy(this.pb(),a);return !!b};_.Fb=function Hy(){return this.Hb()==0};_.Gb=function Iy(a){var b;b=Dy(this.pb(),a);if(b){b.vb();return true}else{return false}};_.tS=function Jy(){return Ey(this)};sn(261,1,MB);_.eQ=function Ny(a){var b,c,d,e,f;if(a===this){return true}if(!Ji(a,58)){return false}e=Hi(a,58);if(this.e!=e.e){return false}for(c=new tz((new lz(e)).b);Xz(c.b);){b=c.c=Hi(Yz(c.b),59);d=b.Jb();f=b.Kb();if(!(d==null?this.d:Ji(d,1)?aC+Hi(d,1) in this.f:Xy(this,d,~~Jb(d)))){return false}if(!lB(f,d==null?this.c:Ji(d,1)?Wy(this,Hi(d,1)):Vy(this,d,~~Jb(d)))){return false}}return true};_.hC=function Oy(){var a,b,c;c=0;for(b=new tz((new lz(this)).b);Xz(b.b);){a=b.c=Hi(Yz(b.b),59);c+=a.hC();c=~~c}return c};_.tS=function Py(){var a,b,c,d;d='{';a=false;for(c=new tz((new lz(this)).b);Xz(c.b);){b=c.c=Hi(Yz(c.b),59);a?(d+=uE):(a=true);d+=XB+b.Jb();d+=mE;d+=XB+b.Kb()}return d+'}'};sn(260,261,MB);_.Ib=function fz(a,b){return Mi(a)===Mi(b)||a!=null&&Ib(a,b)};_.b=null;_.c=null;_.d=false;_.e=0;_.f=null;sn(263,259,NB);_.eQ=function iz(a){var b,c,d;if(a===this){return true}if(!Ji(a,60)){return false}c=Hi(a,60);if(c.Hb()!=this.Hb()){return false}for(b=c.pb();b.tb();){d=b.ub();if(!this.Eb(d)){return false}}return true};_.hC=function jz(){var a,b,c;a=0;for(b=this.pb();b.tb();){c=b.ub();if(c!=null){a+=Jb(c);a=~~a}}return a};sn(262,263,NB,lz);_.Eb=function mz(a){return kz(this,a)};_.pb=function nz(){return new tz(this.b)};_.Gb=function oz(a){var b;if(kz(this,a)){b=Hi(a,59).Jb();bz(this.b,b);return true}return false};_.Hb=function pz(){return this.b.e};_.b=null;sn(264,1,{},tz);_.tb=function uz(){return Xz(this.b)};_.ub=function vz(){return rz(this)};_.vb=function wz(){sz(this)};_.b=null;_.c=null;_.d=null;sn(266,1,OB);_.eQ=function zz(a){var b;if(Ji(a,59)){b=Hi(a,59);if(lB(this.Jb(),b.Jb())&&lB(this.Kb(),b.Kb())){return true}}return false};_.hC=function Az(){var a,b;a=0;b=0;this.Jb()!=null&&(a=Jb(this.Jb()));this.Kb()!=null&&(b=Jb(this.Kb()));return a^b};_.tS=function Bz(){return this.Jb()+mE+this.Kb()};sn(265,266,OB,Cz);_.Jb=function Dz(){return null};_.Kb=function Ez(){return this.b.c};_.Lb=function Fz(a){return _y(this.b,a)};_.b=null;sn(267,266,OB,Hz);_.Jb=function Iz(){return this.b};_.Kb=function Jz(){return Wy(this.c,this.b)};_.Lb=function Kz(a){return az(this.c,this.b,a)};_.b=null;_.c=null;sn(268,259,{57:1});_.Mb=function Mz(a,b){throw new By('Add not supported on this list')};_.Db=function Nz(a){this.Mb(this.Hb(),a);return true};_.eQ=function Pz(a){var b,c,d,e,f;if(a===this){return true}if(!Ji(a,57)){return false}f=Hi(a,57);if(this.Hb()!=f.Hb()){return false}d=new $z(this);e=f.pb();while(d.c<d.e.Hb()){b=Yz(d);c=Yz(e);if(!(b==null?c==null:Ib(b,c))){return false}}return true};_.hC=function Qz(){var a,b,c;b=1;a=new $z(this);while(a.c<a.e.Hb()){c=Yz(a);b=31*b+(c==null?0:Jb(c));b=~~b}return b};_.pb=function Sz(){return new $z(this)};_.Ob=function Tz(){return new eA(this,0)};_.Pb=function Uz(a){return new eA(this,a)};_.Qb=function Vz(a){throw new By('Remove not supported on this list')};sn(269,1,{},$z);_.tb=function _z(){return Xz(this)};_.ub=function aA(){return Yz(this)};_.vb=function bA(){Zz(this)};_.c=0;_.d=-1;_.e=null;sn(270,269,{},eA);_.b=null;sn(271,263,NB,hA);_.Eb=function iA(a){return Ty(this.b,a)};_.pb=function jA(){return gA(this)};_.Hb=function kA(){return this.c.b.e};_.b=null;_.c=null;sn(272,1,{},nA);_.tb=function oA(){return Xz(this.b.b)};_.ub=function pA(){return mA(this)};_.vb=function qA(){sz(this.b)};_.b=null;sn(273,268,PB,zA);_.Mb=function AA(a,b){(a<0||a>this.c)&&Rz(a,this.c);JA(this.b,a,0,b);++this.c};_.Db=function BA(a){return sA(this,a)};_.Eb=function CA(a){return vA(this,a,0)!=-1};_.Nb=function DA(a){return uA(this,a)};_.Fb=function EA(){return this.c==0};_.Qb=function FA(a){return wA(this,a)};_.Gb=function GA(a){return xA(this,a)};_.Hb=function HA(){return this.c};_.c=0;var KA;sn(275,268,PB,NA);_.Eb=function OA(a){return false};_.Nb=function PA(a){throw new Bx};_.Hb=function QA(){return 0};sn(276,260,{50:1,58:1},TA);sn(277,263,{50:1,60:1},YA);_.Db=function ZA(a){return VA(this,a)};_.Eb=function $A(a){return Ty(this.b,a)};_.Fb=function _A(){return this.b.e==0};_.pb=function aB(){return gA(My(this.b))};_.Gb=function bB(a){return XA(this,a)};_.Hb=function cB(){return this.b.e};_.tS=function dB(){return Ey(My(this.b))};_.b=null;sn(278,266,OB,fB);_.Jb=function gB(){return this.b};_.Kb=function hB(){return this.c};_.Lb=function iB(a){var b;b=this.c;this.c=a;return b};_.b=null;_.c=null;sn(279,17,uB,kB);var QB=Rb; +--></script> +<script><!-- +var Am=nx(vE,'Object',1),_i=nx(wE,'JavaScriptObject$',20),ln=mx(xE,'Object;',284),Gm=nx(vE,'Throwable',19),vm=nx(vE,'Exception',18),Bm=nx(vE,'RuntimeException',17),Cm=nx(vE,'StackTraceElement',254),mn=mx(xE,'StackTraceElement;',286),pk=nx('com.google.gwt.lang.','SeedUtil',123),um=nx(vE,'Enum',51),am=nx(yE,'GenexGWT',221),Yl=nx(yE,'GenexGWT$1',222),Zl=nx(yE,'GenexGWT$2',224),$l=nx(yE,'GenexGWT$3',225),_l=nx(yE,'GenexGWT$4',226),Xl=nx(yE,'GenexGWT$1DeferredCommand',223),aj=nx(wE,'Scheduler',23),rm=nx(vE,'Boolean',243),an=mx(XB,'[C',287),tm=nx(vE,'Class',244),Fm=nx(vE,YB,2),nn=mx(xE,'String;',285),sm=nx(vE,'ClassCastException',245),Em=nx(vE,'StringBuilder',257),qm=nx(vE,'ArrayStoreException',242),$i=nx(wE,'JavaScriptException',16),Bl=nx(zE,'UIObject',163),Ll=nx(zE,'Widget',162),il=nx(zE,'LabelBase',180),jl=nx(zE,'Label',179),dl=nx(zE,'HTML',178),el=nx(zE,'HasHorizontalAlignment$AutoHorizontalAlignmentConstant',183),fl=nx(zE,'HasHorizontalAlignment$HorizontalAlignmentConstant',184),ok=ox(AE,'HasDirection$Direction',116,ti),hn=mx('[Lcom.google.gwt.i18n.client.','HasDirection$Direction;',288),kl=nx(zE,'Panel',161),yl=nx(zE,'SimplePanel',173),wl=nx(zE,'ScrollPanel',198),xl=nx(zE,'SimplePanel$1',199),Wk=nx(zE,'ComplexPanel',160),Pk=nx(zE,'AbsolutePanel',159),Tl=nx(BE,CE,113),mk=nx(DE,CE,112),Sk=nx(zE,'AttachDetachException',164),Qk=nx(zE,'AttachDetachException$1',165),Rk=nx(zE,'AttachDetachException$2',166),ul=nx(zE,'RootPanel',193),tl=nx(zE,'RootPanel$DefaultRootPanel',196),rl=nx(zE,'RootPanel$1',194),sl=nx(zE,'RootPanel$2',195),ql=nx(zE,'PopupPanel',172),Xk=nx(zE,'DecoratedPopupPanel',171),al=nx(zE,'DialogBox',175),$k=nx(zE,'DialogBox$CaptionImpl',177),_k=nx(zE,'DialogBox$MouseHandler',181),Zk=nx(zE,'DialogBox$1',176),Yi=nx(EE,'Animation',3),pl=nx(zE,'PopupPanel$ResizeAnimation',190),Jk=nx(FE,'Timer',10),ol=nx(zE,'PopupPanel$ResizeAnimation$1',191),ll=nx(zE,'PopupPanel$1',187),ml=nx(zE,'PopupPanel$3',188),nl=nx(zE,'PopupPanel$4',189),Pi=nx(EE,'Animation$1',4),Xi=nx(EE,'AnimationScheduler',5),Qi=nx(EE,'AnimationScheduler$AnimationHandle',6),Ik=nx(FE,'Timer$1',149),Ol=nx(BE,'Event',86),ik=nx(DE,'GwtEvent',85),Hk=nx(FE,'Event$NativePreviewEvent',147),Ml=nx(BE,'Event$Type',89),hk=nx(DE,'GwtEvent$Type',88),Vk=nx(zE,'CellPanel',170),Il=nx(zE,'VerticalPanel',208),gl=nx(zE,'HasVerticalAlignment$VerticalAlignmentConstant',185),cl=nx(zE,'FocusWidget',169),Hl=nx(zE,'ValueBoxBase',202),zl=nx(zE,'TextBoxBase',201),Al=nx(zE,'TextBox',200),Gl=ox(zE,'ValueBoxBase$TextAlignment',203,zu),jn=mx(GE,'ValueBoxBase$TextAlignment;',289),Cl=ox(zE,'ValueBoxBase$TextAlignment$1',204,null),Dl=ox(zE,'ValueBoxBase$TextAlignment$2',205,null),El=ox(zE,'ValueBoxBase$TextAlignment$3',206,null),Fl=ox(zE,'ValueBoxBase$TextAlignment$4',207,null),nk=nx(AE,'AutoDirectionHandler',114),Tk=nx(zE,'ButtonBase',168),Uk=nx(zE,'Button',167),hl=nx(zE,'HorizontalPanel',186),jj=nx(HE,'StringBufferImpl',34),bm=nx(yE,'GenexParams',227),Um=nx(IE,'AbstractMap',261),Nm=nx(IE,'AbstractHashMap',260),Ym=nx(IE,'HashMap',276),Im=nx(IE,'AbstractCollection',259),Vm=nx(IE,'AbstractSet',263),Km=nx(IE,'AbstractHashMap$EntrySet',262),Jm=nx(IE,'AbstractHashMap$EntrySetIterator',264),Tm=nx(IE,'AbstractMapEntry',266),Lm=nx(IE,'AbstractHashMap$MapEntryNull',265),Mm=nx(IE,'AbstractHashMap$MapEntryString',267),Sm=nx(IE,'AbstractMap$1',271),Rm=nx(IE,'AbstractMap$1$1',272),Zm=nx(IE,'HashSet',277),Qj=nx(JE,'DomEvent',84),Rj=nx(JE,'HumanInputEvent',83),Tj=nx(JE,'MouseEvent',82),Oj=nx(JE,'ClickEvent',81),Pj=nx(JE,'DomEvent$Type',87),Yk=nx(zE,'DecoratorPanel',174),dj=nx(HE,'SchedulerImpl',25),bj=nx(HE,'SchedulerImpl$Flusher',26),cj=nx(HE,'SchedulerImpl$Rescuer',27),hj=nx(HE,'StackTraceCreator$Collector',30),gj=nx(HE,'StackTraceCreator$CollectorMoz',32),fj=nx(HE,'StackTraceCreator$CollectorChrome',31),ej=nx(HE,'StackTraceCreator$CollectorChromeNoSourceMap',33),ij=nx(HE,'StringBufferImplAppend',35),Zi=nx(wE,'Duration',14),Nj=ox(KE,'Style$Unit',71,$e),gn=mx(LE,'Style$Unit;',290),oj=ox(KE,'Style$Display',50,Ld),cn=mx(LE,'Style$Display;',291),tj=ox(KE,'Style$Overflow',56,_d),dn=mx(LE,'Style$Overflow;',292),yj=ox(KE,'Style$Position',61,pe),en=mx(LE,'Style$Position;',293),Dj=ox(KE,'Style$TextAlign',66,Fe),fn=mx(LE,'Style$TextAlign;',294),Ej=ox(KE,'Style$Unit$1',72,null),Fj=ox(KE,'Style$Unit$2',73,null),Gj=ox(KE,'Style$Unit$3',74,null),Hj=ox(KE,'Style$Unit$4',75,null),Ij=ox(KE,'Style$Unit$5',76,null),Jj=ox(KE,'Style$Unit$6',77,null),Kj=ox(KE,'Style$Unit$7',78,null),Lj=ox(KE,'Style$Unit$8',79,null),Mj=ox(KE,'Style$Unit$9',80,null),kj=ox(KE,'Style$Display$1',52,null),lj=ox(KE,'Style$Display$2',53,null),mj=ox(KE,'Style$Display$3',54,null),nj=ox(KE,'Style$Display$4',55,null),pj=ox(KE,'Style$Overflow$1',57,null),qj=ox(KE,'Style$Overflow$2',58,null),rj=ox(KE,'Style$Overflow$3',59,null),sj=ox(KE,'Style$Overflow$4',60,null),uj=ox(KE,'Style$Position$1',62,null),vj=ox(KE,'Style$Position$2',63,null),wj=ox(KE,'Style$Position$3',64,null),xj=ox(KE,'Style$Position$4',65,null),zj=ox(KE,'Style$TextAlign$1',67,null),Aj=ox(KE,'Style$TextAlign$2',68,null),Bj=ox(KE,'Style$TextAlign$3',69,null),Cj=ox(KE,'Style$TextAlign$4',70,null),bl=nx(zE,'DirectionalTextHelper',182),Hm=nx(vE,'UnsupportedOperationException',258),xm=nx(vE,'IllegalStateException',247),Kk=nx(FE,'Window$ClosingEvent',151),kk=nx(DE,'HandlerManager',107),Lk=nx(FE,'Window$WindowHandlers',152),Nl=nx(BE,'EventBus',110),Sl=nx(BE,'SimpleEventBus',109),jk=nx(DE,'HandlerManager$Bus',108),Pl=nx(BE,'SimpleEventBus$1',214),Ql=nx(BE,'SimpleEventBus$2',215),Rl=nx(BE,'SimpleEventBus$3',216),Kl=nx(zE,'WidgetCollection',209),kn=mx(GE,'Widget;',295),Jl=nx(zE,'WidgetCollection$WidgetIterator',210),zm=nx(vE,'NullPointerException',252),wm=nx(vE,'IllegalArgumentException',246),vl=nx(zE,'ScrollImpl',197),Dm=nx(vE,'StringBuffer',256),ek=nx(ME,'CloseEvent',104),dk=nx(ME,'AttachEvent',103),Sj=nx(JE,'MouseDownEvent',90),Xj=nx(JE,'MouseUpEvent',94),Uj=nx(JE,'MouseMoveEvent',91),Wj=nx(JE,'MouseOverEvent',93),Vj=nx(JE,'MouseOutEvent',92),qk=nx('com.google.gwt.text.shared.','AbstractRenderer',126),sk=nx(NE,'PassthroughRenderer',128),rk=nx(NE,'PassthroughParser',127),Yj=nx(JE,'PrivateMap',95),lk=nx(DE,'LegacyHandlerWrapper',111),Gk=nx(OE,'TouchScroller',132),Fk=nx(OE,'TouchScroller$TemporalPoint',142),Dk=nx(OE,'TouchScroller$MomentumCommand',139),Ek=nx(OE,'TouchScroller$MomentumTouchRemovalCommand',141),Ck=nx(OE,'TouchScroller$MomentumCommand$1',140),wk=nx(OE,'TouchScroller$1',133),xk=nx(OE,'TouchScroller$2',134),yk=nx(OE,'TouchScroller$3',135),zk=nx(OE,'TouchScroller$4',136),Ak=nx(OE,'TouchScroller$5',137),Bk=nx(OE,'TouchScroller$6',138),_m=nx(IE,'NoSuchElementException',279),$m=nx(IE,'MapEntryImpl',278),ym=nx(vE,'IndexOutOfBoundsException',248),ak=nx(JE,'TouchEvent',98),ck=nx(JE,'TouchStartEvent',102),_j=nx(JE,'TouchEvent$TouchSupportDetector',100),bk=nx(JE,'TouchMoveEvent',101),$j=nx(JE,'TouchEndEvent',99),Zj=nx(JE,'TouchCancelEvent',97),tk=nx(OE,'DefaultMomentum',129),uk=nx(OE,'Momentum$State',130),Qm=nx(IE,'AbstractList',268),Wm=nx(IE,'ArrayList',273),Om=nx(IE,'AbstractList$IteratorImpl',269),Pm=nx(IE,'AbstractList$ListIteratorImpl',270),em=nx(yE,'VisibleGene',230),Wl=nx(yE,'Gene',220),mm=nx(PE,'Requirement',234),lm=nx(PE,'ProteinLengthRequirement',238),hm=nx(PE,'IntronNumberRequirement',233),gm=nx(QE,'Problem',232),pm=nx(PE,'SingleMutationRequirement',241),om=nx(PE,'ShortermRNARequirement',240),im=nx(PE,'LongerProteinRequirement',235),nm=nx(PE,'ShorterProteinRequirement',239),km=nx(PE,'NomRNARequirement',237),jm=nx(PE,'NoProteinRequirement',236),fk=nx(ME,'ResizeEvent',105),cm=nx(yE,'HTMLContainer',228),Ok=nx(RE,'HistoryImpl',155),Nk=nx(RE,'HistoryImplTimer',157),Mk=nx(RE,'HistoryImplSafari',156),dm=nx(yE,'Nucleotide',229),Vl=nx(yE,'Exon',219),fm=nx(QE,'GenexState',231),gk=nx(ME,'ValueChangeEvent',106),Xm=nx(IE,'Collections$EmptyList',275),Ul=nx(yE,'ColorSequencer',218),Wi=nx(EE,'AnimationSchedulerImpl',7),Ti=nx(EE,'AnimationSchedulerImplTimer',8),Si=nx(EE,'AnimationSchedulerImplTimer$AnimationHandleImpl',11),bn=mx('[Lcom.google.gwt.animation.client.','AnimationSchedulerImplTimer$AnimationHandleImpl;',296),Ri=nx(EE,'AnimationSchedulerImplTimer$1',9),Vi=nx(EE,'AnimationSchedulerImplWebkit',12),Ui=nx(EE,'AnimationSchedulerImplWebkit$AnimationHandleImpl',13),vk=nx(OE,'Point',131);$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if ($wnd.genex) $wnd.genex.onScriptLoad(); +--></script></body></html> \ No newline at end of file diff --git a/common/static/js/capa/genex/1F433010E1134C95BF6CB43F552F3019.cache.html b/common/static/js/capa/genex/1F433010E1134C95BF6CB43F552F3019.cache.html new file mode 100644 index 0000000000000000000000000000000000000000..1e99fe0f1945179a44100b3365ad6a0d717e1c88 --- /dev/null +++ b/common/static/js/capa/genex/1F433010E1134C95BF6CB43F552F3019.cache.html @@ -0,0 +1,649 @@ +<html><head><meta charset="UTF-8" /><script>var $gwt_version = "2.5.0";var $wnd = parent;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '1F433010E1134C95BF6CB43F552F3019';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});</script></head><body><script><!-- +function L(){} +function P(){} +function _A(){} +function cc(){} +function zc(){} +function sf(){} +function Hf(){} +function Of(){} +function Uf(){} +function $f(){} +function fg(){} +function rg(){} +function xg(){} +function Gg(){} +function Ng(){} +function Zg(){} +function kh(){} +function Th(){} +function Tq(){} +function Qq(){} +function ci(){} +function cn(){} +function fn(){} +function kn(){} +function ro(){} +function Jo(){} +function So(){} +function Ls(){} +function nt(){} +function qt(){} +function zt(){} +function xw(){} +function Aw(){} +function Dw(){} +function Gw(){} +function Jw(){} +function Mw(){} +function Pw(){} +function Sw(){} +function dx(){} +function AA(){} +function ZA(){rc()} +function Vw(){rc()} +function mx(){rc()} +function qx(){rc()} +function tx(){rc()} +function zx(){rc()} +function hp(){gp()} +function Kp(a){Fp=a} +function Xp(a,b){a.I=b} +function gf(a,b){a.g=b} +function kf(a,b){a.b=b} +function lf(a,b){a.c=b} +function nn(a,b){a.c=b} +function mn(a,b){a.b=b} +function on(a,b){a.e=b} +function Io(a,b){a.e=b} +function dw(a,b){a.b=b} +function xc(a,b){a.b+=b} +function jc(a){this.b=a} +function mc(a){this.b=a} +function C(a){this.b=a} +function Tg(a){this.b=a} +function dh(a){this.b=a} +function Lh(a){this.b=a} +function Un(a){this.b=a} +function Wn(a){this.b=a} +function Yn(a){this.b=a} +function $n(a){this.b=a} +function ao(a){this.b=a} +function co(a){this.b=a} +function ko(a){this.b=a} +function no(a){this.b=a} +function bs(a){this.b=a} +function qs(a){this.b=a} +function As(a){this.b=a} +function Es(a){this.b=a} +function Os(a){this.b=a} +function Rs(a){this.b=a} +function Qu(a){this.b=a} +function Qv(a){this.b=a} +function Tv(a){this.b=a} +function Wv(a){this.b=a} +function Zv(a){this.b=a} +function Zq(a){this.I=a} +function hr(a){this.I=a} +function Eu(a){this.c=a} +function aw(a){this.b=a} +function $w(a){this.b=a} +function $y(a){this.b=a} +function pz(a){this.b=a} +function Nz(a){this.e=a} +function aA(a){this.b=a} +function dv(){this.b=1} +function lg(){this.b={}} +function nb(){this.b=ob()} +function Bf(){this.d=++yf} +function gy(){by(this)} +function GA(){Fy(this)} +function xq(a,b){oq(b,a)} +function Gf(a,b){Nr(b.b,a)} +function Nf(a,b){Or(b.b,a)} +function eg(a,b){Pr(b.b,a)} +function Fg(a,b){Kn(b.b,a)} +function Mg(a,b){Ln(b.b,a)} +function sw(a,b){IA(a.b,b)} +function _p(a,b){zp(a.I,b)} +function Et(a,b){Yc(a.c,b)} +function Gt(a,b){Kc(a.c,b)} +function at(){at=_A;ct()} +function Zt(){Zt=_A;gu()} +function lr(){lr=_A;Ju()} +function Ju(){Ju=_A;Iu=Ou()} +function dc(a){return a.Q()} +function by(a){a.b=new zc} +function uw(){this.b=new LA} +function LA(){this.b=new GA} +function Gv(){this.z=new ew} +function gb(a){$();this.b=a} +function $s(a){$();this.b=a} +function wb(a){rc();this.f=a} +function xb(a){rc();this.f=a} +function kg(a,b,c){a.b[b]=c} +function Fq(a,b){Aq(a,b,a.I)} +function vu(a,b){xu(a,b,a.d)} +function hu(){gu();return bu} +function td(){sd();return nd} +function Jd(){Id();return Dd} +function Zd(){Yd();return Td} +function ne(){me();return he} +function Ie(){He();return xe} +function bi(){_h();return Xh} +function jg(a,b){return a.b[b]} +function mb(a){return ob()-a.b} +function zo(a){uo=a;op();rp=a} +function Kc(b,a){b.scrollTop=a} +function Zp(a,b){a.cb()[tC]=b} +function qo(a,b,c){a.b=b;a.c=c} +function sr(a,b){fr(a,b);pr(a)} +function Uu(a){Ih(a.b,a.d,a.c)} +function jh(a){a.b.o&&a.b.pb()} +function Rh(a){Oh.call(this,a)} +function Nq(a){Rh.call(this,a)} +function ox(a){wb.call(this,a)} +function rx(a){wb.call(this,a)} +function ux(a){wb.call(this,a)} +function Ax(a){wb.call(this,a)} +function oy(a){wb.call(this,a)} +function pp(a,b){a.__listener=b} +function Ao(a,b,c){a.style[b]=c} +function ls(a,b){ss(a.b,b,true)} +function xx(a,b){return a>b?a:b} +function Zm(a){return new Xm[a]} +function Wt(a){this.I=a;new Th} +function Xb(){Xb=_A;Wb=new cc} +function gp(){gp=_A;fp=new Bf} +function yA(){yA=_A;xA=new AA} +function Yx(){Yx=_A;Vx={};Xx={}} +function pe(){jd.call(this,PB,0)} +function ju(){jd.call(this,PB,0)} +function lu(){jd.call(this,QB,1)} +function re(){jd.call(this,QB,1)} +function te(){jd.call(this,RB,2)} +function nu(){jd.call(this,RB,2)} +function pu(){jd.call(this,SB,3)} +function ve(){jd.call(this,SB,3)} +function lp(){sh.call(this,null)} +function Op(){this.b=new sh(null)} +function Ur(a){a.g=false;yo(a.I)} +function Cr(a,b){fr(a.k,b);pr(a)} +function is(a,b){ss(a.b,b,false)} +function jq(a,b){!!a.G&&qh(a.G,b)} +function rh(a,b){return Hh(a.b,b)} +function Hh(a,b){return Gy(a.e,b)} +function JA(a,b){return Gy(a.b,b)} +function Mu(a){return Iu?a:Nc(a)} +function Lu(a){return Iu?Mc(a):a} +function wx(a){return a<=0?0-a:a} +function _b(a){return !!a.b||!!a.g} +function Jy(b,a){return b.f[$D+a]} +function Jc(b,a){b.innerHTML=a||HB} +function jb(a,b){this.c=a;this.b=b} +function jd(a,b){this.b=a;this.c=b} +function Cq(){this.g=new Au(this)} +function vA(a,b,c){a.splice(b,c)} +function ai(a,b){jd.call(this,a,b)} +function Ke(){jd.call(this,'PX',0)} +function Qe(){jd.call(this,'EX',3)} +function Oe(){jd.call(this,'EM',2)} +function Ye(){jd.call(this,'CM',7)} +function $e(){jd.call(this,'MM',8)} +function Se(){jd.call(this,'PT',4)} +function Ue(){jd.call(this,'PC',5)} +function We(){jd.call(this,'IN',6)} +function db(a){$wnd.clearTimeout(a)} +function Tb(a){$wnd.clearTimeout(a)} +function Kz(a){return a.c<a.e.Db()} +function uz(a,b){this.c=a;this.b=b} +function gw(a,b){this.c=a;this.b=b} +function mw(a,b){this.c=b;this.b=a} +function un(a,b){this.b=a;this.c=b} +function so(a,b){this.b=a;this.c=b} +function Wz(a,b){this.b=a;this.c=b} +function UA(a,b){this.b=a;this.c=b} +function cy(a,b){xc(a.b,b);return a} +function ky(a,b){xc(a.b,b);return a} +function $p(a,b){cq(a.cb(),b,true)} +function vo(a,b){Ac(a,(at(),bt(b)))} +function Sg(a,b){a.b?Rn(b.b):Nn(b.b)} +function Ly(b,a){return $D+a in b.f} +function ui(a){return a==null?null:a} +function Kx(b,a){return b.indexOf(a)} +function cb(a){$wnd.clearInterval(a)} +function sh(a){th.call(this,a,false)} +function vn(a){un.call(this,a.b,a.c)} +function Me(){jd.call(this,'PCT',1)} +function Rd(){jd.call(this,'AUTO',3)} +function vd(){jd.call(this,'NONE',0)} +function xd(){jd.call(this,'BLOCK',1)} +function fe(){jd.call(this,'FIXED',3)} +function hy(a){by(this);xc(this.b,a)} +function Jh(a){this.e=new GA;this.d=a} +function mA(){this.b=fi(Rm,eB,0,0,0)} +function wA(a,b,c,d){a.splice(b,c,d)} +function Oc(a,b){a.textContent=b||HB} +function On(a,b){a.g=b;!b&&(a.i=null)} +function Bz(a,b){(a<0||a>=b)&&Ez(a,b)} +function oi(a,b){return a.cM&&a.cM[b]} +function qp(a){return !si(a)&&ri(a,37)} +function Sb(a){return a.$H||(a.$H=++Kb)} +function Rn(a){Nn(a);a.c=Do(new co(a))} +function $(){$=_A;Z=new mA;Zo(new So)} +function ap(){if(!Uo){Qp();Uo=true}} +function bp(){if(!Yo){Rp();Yo=true}} +function tt(){it.call(this,$doc.body)} +function zd(){jd.call(this,'INLINE',2)} +function Nd(){jd.call(this,'HIDDEN',1)} +function Pd(){jd.call(this,'SCROLL',2)} +function _d(){jd.call(this,'STATIC',0)} +function Ld(){jd.call(this,'VISIBLE',0)} +function be(){jd.call(this,'RELATIVE',1)} +function de(){jd.call(this,'ABSOLUTE',2)} +function Vr(){lr();Wr.call(this,new os)} +function rf(){rf=_A;qf=new Cf(TB,new sf)} +function Ff(){Ff=_A;Ef=new Cf(UB,new Hf)} +function Mf(){Mf=_A;Lf=new Cf(VB,new Of)} +function Tf(){Tf=_A;Sf=new Cf(WB,new Uf)} +function Zf(){Zf=_A;Yf=new Cf(XB,new $f)} +function dg(){dg=_A;cg=new Cf(YB,new fg)} +function qg(){qg=_A;pg=new Cf(ZB,new rg)} +function wg(){wg=_A;vg=new Cf($B,new xg)} +function Eg(){Eg=_A;Dg=new Cf(aC,new Gg)} +function Lg(){Lg=_A;Kg=new Cf(bC,new Ng)} +function Mq(){Mq=_A;Kq=new Qq;Lq=new Tq} +function op(){if(!mp){yp();Cp();mp=true}} +function KA(a,b){return Qy(a.b,b)!=null} +function ni(a,b){return a.cM&&!!a.cM[b]} +function ri(a,b){return a!=null&&ni(a,b)} +function ti(a){return a.tM==_A||ni(a,1)} +function ez(a){return a.c=pi(Lz(a.b),59)} +function Db(a){return si(a)?sc(qi(a)):HB} +function Hx(b,a){return b.charCodeAt(a)} +function Ac(b,a){return b.appendChild(a)} +function Bc(b,a){return b.removeChild(a)} +function Gc(b,a){return parseInt(b[a])||0} +function Lx(c,a,b){return c.indexOf(a,b)} +function Pr(a,b){Ur(a,(a.b,of(b),pf(b)))} +function Nr(a,b){Sr(a,(a.b,of(b)),pf(b))} +function Or(a,b){Tr(a,(a.b,of(b)),pf(b))} +function hA(a,b){Bz(b,a.c);return a.b[b]} +function Eh(a,b){var c;c=Fh(a,b);return c} +function Ox(c,a,b){return c.substr(a,b-a)} +function ey(a,b,c){return yc(a.b,b,b,c),a} +function zb(a){return si(a)?Ab(qi(a)):a+HB} +function Cb(a){return a==null?null:a.name} +function ob(){return (new Date).getTime()} +function z(a){this.k=new C(this);this.t=a} +function th(a,b){this.b=new Jh(b);this.c=a} +function ly(a){this.b=new zc;xc(this.b,a)} +function Pt(a){this.d=a;this.b=!!this.d.D} +function Mn(a){if(a.b){Uu(a.b.b);a.b=null}} +function Nn(a){if(a.c){Uu(a.c.b);a.c=null}} +function Cn(a){a.s=false;a.d=false;a.i=null} +function gA(a){a.b=fi(Rm,eB,0,0,0);a.c=0} +function bc(a,b){a.b=ec(a.b,[b,false]);ac(a)} +function ab(a){a.c?cb(a.d):db(a.d);kA(Z,a)} +function Ah(a,b,c){var d;d=Dh(a,b);d.zb(c)} +function Nb(a,b,c){return a.apply(b,c);var d} +function dy(a,b){return yc(a.b,b,b+1,HB),a} +function bd(b,a){return b.getElementById(a)} +function Ux(a){return String.fromCharCode(a)} +function Ab(a){return a==null?null:a.message} +function hx(a){var b=Xm[a.c];a=null;return b} +function _z(a){var b;b=ez(a.b);return b.Fb()} +function _g(a){var b;if(Yg){b=new Zg;a.Z(b)}} +function yh(a,b){!a.b&&(a.b=new mA);fA(a.b,b)} +function S(a,b){kA(a.b,b);a.b.c==0&&ab(a.c)} +function fA(a,b){hi(a.b,a.c++,b);return true} +function fy(a,b,c,d){yc(a.b,b,c,d);return a} +function tc(){try{null.a()}catch(a){return a}} +function Bd(){jd.call(this,'INLINE_BLOCK',3)} +function Ys(a){z.call(this,(I(),H));this.b=a} +function it(a){Cq.call(this);this.I=a;kq(this)} +function hs(a){this.I=a;this.b=new ts(this.I)} +function U(){this.b=new mA;this.c=new gb(this)} +function yb(a){rc();this.c=a;this.b=HB;qc(this)} +function fv(a,b,c){this.c=a;this.b=b;this.d=c} +function Vu(a,b,c){this.b=a;this.d=b;this.c=c} +function Xu(a,b,c){this.b=a;this.d=b;this.c=c} +function $u(a,b,c){this.b=a;this.d=b;this.c=c} +function ph(a,b,c){return new Lh(zh(a.b,b,c))} +function rn(a,b){return new un(a.b-b.b,a.c-b.c)} +function sn(a,b){return new un(a.b*b.b,a.c*b.c)} +function tn(a,b){return new un(a.b+b.b,a.c+b.c)} +function Nx(b,a){return b.substr(a,b.length-a)} +function ix(a){return typeof a=='number'&&a>0} +function Ec(a){return Qc(gd(a.ownerDocument),a)} +function Fc(a){return Rc(gd(a.ownerDocument),a)} +function Qo(a){Po();return Oo?Gp(Oo,a):null} +function Po(){Po=_A;Oo=new Op;Np(Oo)||(Oo=null)} +function ki(){ki=_A;ii=[];ji=[];li(new ci,ii,ji)} +function Au(a){this.c=a;this.b=fi(Qm,eB,45,4,0)} +function mh(a){var b;if(ih){b=new kh;qh(a.b,b)}} +function Bt(a){return wt((!vt&&(vt=new zt),a.c))} +function Dt(a){return xt((!vt&&(vt=new zt),a.c))} +function si(a){return a!=null&&a.tM!=_A&&!ni(a,1)} +function Qr(a){if(a.i){Uu(a.i.b);a.i=null}or(a)} +function jt(a){ht();try{a.ib()}finally{KA(gt,a)}} +function Qn(a,b){Et(a.t,vi(b.b));Gt(a.t,vi(b.c))} +function yc(a,b,c,d){a.b=Ox(a.b,0,b)+d+Nx(a.b,c)} +function Oh(a){xb.call(this,Qh(a),Ph(a));this.b=a} +function ts(a){this.b=a;this.c=Uh(a);this.d=this.c} +function Ex(a){this.b='Unknown';this.d=a;this.c=-1} +function os(){ms.call(this);this.I[tC]='Caption'} +function gr(){hr.call(this,$doc.createElement(_B))} +function js(a){hs.call(this,a,Jx('span',a.tagName))} +function Hb(a){var b;return b=a,ti(b)?b.hC():Sb(b)} +function Zo(a){ap();return $o(Yg?Yg:(Yg=new Bf),a)} +function zy(a){var b;b=new $y(a);return new Wz(a,b)} +function IA(a,b){var c;c=My(a.b,b,a);return c==null} +function Gq(a,b){var c;c=Bq(a,b);c&&Hq(b.I);return c} +function ec(a,b){!a&&(a=[]);a[a.length]=b;return a} +function pc(a,b){a.length>=b&&a.splice(0,b);return a} +function fh(a,b){var c;if(ch){c=new dh(b);qh(a,c)}} +function Gb(a,b){var c;return c=a,ti(c)?c.eQ(b):c===b} +function Vc(){var a=$c();return a!=-1&&a>=1009000} +function Vm(a){if(ri(a,56)){return a}return new yb(a)} +function Vz(a){var b;b=new gz(a.c.b);return new aA(b)} +function Zw(){Zw=_A;Xw=new $w(false);Yw=new $w(true)} +function ht(){ht=_A;et=new nt;ft=new GA;gt=new LA} +function wi(a){if(a!=null){throw new mx}return null} +function _x(){if(Wx==256){Vx=Xx;Xx={};Wx=0}++Wx} +function Fy(a){a.b=[];a.f={};a.d=false;a.c=null;a.e=0} +function sv(a,b,c,d){b.b=a;b.g=0;c.b=a;c.g=1;d.b=a;d.g=2} +function Sr(a,b,c){if(!uo){a.g=true;zo(a.I);a.e=b;a.f=c}} +function Ih(a,b,c){a.c>0?yh(a,new $u(a,b,c)):Ch(a,b,c)} +function $o(a,b){return ph((!Vo&&(Vo=new lp),Vo),a,b)} +function Gp(a,b){return ph(a.b,(!ih&&(ih=new Bf),ih),b)} +function FA(a,b){return ui(a)===ui(b)||a!=null&&Gb(a,b)} +function $A(a,b){return ui(a)===ui(b)||a!=null&&Gb(a,b)} +function Hc(b,a){return b[a]==null?null:String(b[a])} +function or(a){if(!a.B){return}Xs(a.A,false,false);_g(a)} +function Gn(a,b){if(a.k.b){return Fn(b,a.k.b)}return false} +function Ir(a){var b,c;c=xp(a.c,0);b=xp(c,1);return Mc(b)} +function fi(a,b,c,d,e){var f;f=ei(e,d);gi(a,b,c,f);return f} +function Ez(a,b){throw new ux('Index: '+a+', Size: '+b)} +function En(a){return new un(Uc(a.t.c),a.t.c.scrollTop||0)} +function bt(a){return a.__gwt_resolve?a.__gwt_resolve():a} +function iq(a,b,c){return ph(!a.G?(a.G=new sh(a)):a.G,c,b)} +function _o(a){ap();bp();return $o((!ch&&(ch=new Bf),ch),a)} +function Mx(c,a,b){b=Qx(b);return c.replace(RegExp(a,QD),b)} +function pn(a,b){this.d=b;this.e=new vn(a);this.f=new vn(b)} +function Vg(a,b){var c;if(Rg){c=new Tg(b);!!a.G&&qh(a.G,c)}} +function I(){I=_A;var a;a=new L;!!a&&(a.M()||(a=new U));H=a} +function kt(){ht();try{Oq(gt,et)}finally{Fy(gt.b);Fy(ft)}} +function Av(a){$wnd.genexSetKeyEvent=BB(function(){Mv(a)})} +function yv(a){$wnd.genexSetClickEvent=BB(function(){Kv(a)})} +function xt(a){return yt(a)?a.clientWidth-(a.scrollWidth||0):0} +function wt(a){return yt(a)?0:(a.scrollWidth||0)-a.clientWidth} +function Ct(a){return (a.c.scrollHeight||0)-a.c.clientHeight} +function Du(a){if(a.b>=a.c.d){throw new ZA}return a.c.b[++a.b]} +function Sz(a){if(a.c<=0){throw new ZA}return a.b.Jb(a.d=--a.c)} +function Ix(a,b){if(!ri(b,1)){return false}return String(a)==b} +function pi(a,b){if(a!=null&&!oi(a,b)){throw new mx}return a} +function zu(a,b){var c;c=wu(a,b);if(c==-1){throw new ZA}yu(a,c)} +function Aq(a,b,c){nq(b);vu(a.g,b);Ac(c,(at(),bt(b.I)));oq(b,a)} +function go(a){if(a.g){Uu(a.g.b);a.g=null}a==a.f.i&&(a.f.i=null)} +function yo(a){!!uo&&a==uo&&(uo=null);op();a===rp&&(rp=null)} +function Jn(a){if(!a.s){return}a.s=false;if(a.d){a.d=false;In(a)}} +function tr(a){if(a.B){return}else a.E&&nq(a);Xs(a.A,true,false)} +function Lc(a){if(Cc(a)){return !!a&&a.nodeType==1}return false} +function Cc(b){try{return !!b&&!!b.nodeType}catch(a){return false}} +function Wc(a,b){return a===b||!!(a.compareDocumentPosition(b)&16)} +function eb(a,b){return $wnd.setTimeout(BB(function(){a.N()}),b)} +function gd(a){return Ix(a.compatMode,OB)?a.documentElement:a.body} +function hv(a){var b;b=Mx(a,'<[^<]*>',HB);return b.indexOf(rD)+4} +function Dn(a){var b;b=a.b.touches;return b.length>0?b[0]:null} +function Qb(a,b,c){var d;d=Ob();try{return Nb(a,b,c)}finally{Rb(d)}} +function fx(a,b,c){var d;d=new dx;d.d=a+b;ix(c)&&jx(c,d);return d} +function di(a,b){var c,d;c=a;d=ei(0,b);gi(c.cZ,c.cM,c.qI,d);return d} +function gi(a,b,c,d){ki();mi(d,ii,ji);d.cZ=a;d.cM=b;d.qI=c;return d} +function Oy(a,b){var c;c=a.c;a.c=b;if(!a.d){a.d=true;++a.e}return c} +function Sy(a){var b;b=a.c;a.c=null;if(a.d){a.d=false;--a.e}return b} +function qi(a){if(a!=null&&(a.tM==_A||ni(a,1))){throw new mx}return a} +function B(a,b){y(a.b,b)?(a.b.r=a.b.t.K(a.b.k,a.b.o)):(a.b.r=null)} +function Mz(a){if(a.d<0){throw new qx}a.e.Mb(a.d);a.c=a.d;a.d=-1} +function Lz(a){if(a.c>=a.e.Db()){throw new ZA}return a.e.Jb(a.d=a.c++)} +function Hq(a){a.style[xC]=HB;a.style[yC]=HB;a.style[zC]=HB} +function Yp(a){a.I.style[rC]='818px';a.I.style[sC]='325px'} +function Cs(){Cs=_A;new Es('bottom');new Es('middle');Bs=new Es(yC)} +function ns(){ms.call(this);ss(this.b,'Enter new DNA Sequence',true)} +function vi(a){return ~~Math.max(Math.min(a,2147483647),-2147483648)} +function dd(a){return Uc(Ix(a.compatMode,OB)?a.documentElement:a.body)} +function Ot(a){if(!a.b||!a.d.D){throw new ZA}a.b=false;return a.c=a.d.D} +function Ho(a){a.f=false;a.g=null;a.b=false;a.c=false;a.d=true;a.e=null} +function Nu(a,b){a.style['clip']=b;a.style[QC]=(sd(),RC);a.style[QC]=HB} +function jA(a,b){var c;c=(Bz(b,a.c),a.b[b]);vA(a.b,b,1);--a.c;return c} +function iA(a,b,c){for(;c<a.c;++c){if($A(b,a.b[c])){return c}}return -1} +function nr(a,b){var c;c=b.target;if(Lc(c)){return Wc(a.I,c)}return false} +function Nc(a){var b=a.parentNode;(!b||b.nodeType!=1)&&(b=null);return b} +function Ph(a){var b;b=a.mb();if(!b.qb()){return null}return pi(b.rb(),56)} +function cp(){var a;if(Uo){a=new hp;!!Vo&&qh(Vo,a);return null}return null} +function zv(b){$wnd.genexSetDNASequence=BB(function(a){return b.wb(a)})} +function Bv(b){$wnd.genexSetProblemNumber=BB(function(a){return b.xb(a)})} +function Ov(a){typeof $wnd.genexStoreAnswer===KB&&$wnd.genexStoreAnswer(a)} +function Ub(){return $wnd.setTimeout(function(){Jb!=0&&(Jb=0);Mb=-1},10)} +function Rb(a){a&&Zb((Xb(),Wb));--Jb;if(a){if(Mb!=-1){Tb(Mb);Mb=-1}}} +function li(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function mi(a,b,c){ki();for(var d=0,e=b.length;d<e;++d){a[b[d]]=c[d]}} +function Rx(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} +function ss(a,b,c){c?Jc(a.b,b):Oc(a.b,b);if(a.d!=a.c){a.d=a.c;Vh(a.b,a.c)}} +function pr(a){var b;b=a.D;if(b){a.p!=null&&b.db(a.p);a.q!=null&&b.eb(a.q)}} +function Py(e,a,b){var c,d=e.f;a=$D+a;a in d?(c=d[a]):++e.e;d[a]=b;return c} +function wu(a,b){var c;for(c=0;c<a.d;++c){if(a.b[c]==b){return c}}return -1} +function kA(a,b){var c;c=iA(a,b,0);if(c==-1){return false}jA(a,c);return true} +function gx(a,b,c,d){var e;e=new dx;e.d=a+b;ix(c)&&jx(c,e);e.b=d?8:0;return e} +function Ty(d,a){var b,c=d.f;a=$D+a;if(a in c){b=c[a];--d.e;delete c[a]}return b} +function Mc(a){var b=a.firstChild;while(b&&b.nodeType!=1)b=b.nextSibling;return b} +function Tz(a,b){var c;this.b=a;this.e=a;c=a.Db();(b<0||b>c)&&Ez(b,c);this.c=b} +function Cf(a,b){Bf.call(this);this.b=b;!jf&&(jf=new lg);kg(jf,a,this);this.c=a} +function ms(){js.call(this,$doc.createElement(_B));this.I[tC]='gwt-HTML'} +function Dp(a,b){op();Bp(a,b);b&131072&&a.addEventListener(kC,vp,false)} +function Gy(a,b){return b==null?a.d:ri(b,1)?Ly(a,pi(b,1)):Ky(a,b,~~Hb(b))} +function Hy(a,b){return b==null?a.c:ri(b,1)?Jy(a,pi(b,1)):Iy(a,b,~~Hb(b))} +function Qy(a,b){return b==null?Sy(a):ri(b,1)?Ty(a,pi(b,1)):Ry(a,b,~~Hb(b))} +function Pb(b){return function(){try{return Qb(b,this,arguments)}catch(a){throw a}}} +function ed(a){return (Ix(a.compatMode,OB)?a.documentElement:a.body).scrollTop||0} +function fd(a){return (Ix(a.compatMode,OB)?a.documentElement:a.body).scrollWidth||0} +function cd(a){return (Ix(a.compatMode,OB)?a.documentElement:a.body).scrollHeight||0} +function _c(a){return (Ix(a.compatMode,OB)?a.documentElement:a.body).clientHeight} +function ad(a){return (Ix(a.compatMode,OB)?a.documentElement:a.body).clientWidth} +function $t(){var a;Zt();_t.call(this,(a=$doc.createElement('INPUT'),a.type='text',a))} +function Rr(a,b){var c;c=b.target;if(Lc(c)){return Wc(Nc(Ir(a.k)),c)}return false} +function wo(a,b,c){var d;d=to;to=a;b==uo&&np(a.type)==8192&&(uo=null);c._(a);to=d} +function ex(a,b,c){var d;d=new dx;d.d=a+b;ix(c!=0?-c:0)&&jx(c!=0?-c:0,d);d.b=4;return d} +function My(a,b,c){return b==null?Oy(a,c):ri(b,1)?Py(a,pi(b,1),c):Ny(a,b,c,~~Hb(b))} +function x(a,b){w(a);a.p=true;a.q=false;a.n=200;a.u=b;a.o=null;++a.s;B(a.k,ob())} +function Jx(b,a){if(a==null)return false;return b==a||b.toLowerCase()==a.toLowerCase()} +function Dv(a){if(!a.I){return null}return new pw(a.g,a.i,a.j,a.e,a.b,a.I.j,a.I.f,a.I.r)} +function $b(a){var b;if(a.b){b=a.b;a.b=null;!a.g&&(a.g=[]);gc(b,a.g)}!!a.g&&(a.g=fc(a.g))} +function Yb(a){var b,c;if(a.c){c=null;do{b=a.c;a.c=null;c=gc(b,c)}while(a.c);a.c=c}} +function Zb(a){var b,c;if(a.d){c=null;do{b=a.d;a.d=null;c=gc(b,c)}while(a.d);a.d=c}} +function pv(a){var b;b=a.s;b=Mx(b,BD,HB);b=Mx(b,yD,HB);b=Mx(b,AD,HB);return Mx(b,zD,HB)} +function Bb(a){var b;return a==null?'null':si(a)?Cb(qi(a)):ri(a,1)?IB:(b=a,ti(b)?b.cZ:Ji).d} +function In(a){var b;if(!a.g){return}b=Bn(a.n,a.f);if(b){a.i=new ho(a,b);hc((Xb(),a.i),16)}} +function dq(a,b){if(!a){throw new wb(uC)}b=Px(b);if(b.length==0){throw new ox(vC)}gq(a,b)} +function Yc(a,b){!Vc()&&Xc(a)&&(b+=(a.scrollWidth||0)-a.clientWidth);a.scrollLeft=b} +function xo(a){var b;b=Lo(Co,a);if(!b&&!!a){a.cancelBubble=true;a.preventDefault()}return b} +function Rp(){var b=$wnd.onresize;$wnd.onresize=BB(function(a){try{dp()}finally{b&&b(a)}})} +function gz(a){var b;this.d=a;b=new mA;a.d&&fA(b,new pz(a));Ey(a,b);Dy(a,b);this.b=new Nz(b)} +function Fn(a,b){var c,d,e;e=new un(a.b-b.b,a.c-b.c);c=wx(e.b);d=wx(e.c);return c<=25&&d<=25} +function xv(a){var b,c;c=Dv(a);if(!c){Ov(ID);return}b=tw(a.C,c);Ix(b,JD)?Ov('CORRECT'):Ov(ID)} +function su(){ar.call(this);this.b=(xs(),us);this.c=(Cs(),Bs);this.f[HC]=PC;this.f[IC]=PC} +function kw(a,b){this.f=b;this.c=a;this.e=false;this.d=false;this.b=-1;this.g=-1;this.i=false} +function ks(){hs.call(this,$doc.createElement(_B));this.I[tC]='gwt-Label';ss(this.b,MC,false)} +function _t(a){Wt.call(this,a,(!en&&(en=new fn),!bn&&(bn=new cn)));this.I[tC]='gwt-TextBox'} +function me(){me=_A;ie=new pe;je=new re;ke=new te;le=new ve;he=gi(Mm,eB,9,[ie,je,ke,le])} +function Yd(){Yd=_A;Xd=new _d;Wd=new be;Ud=new de;Vd=new fe;Td=gi(Lm,eB,8,[Xd,Wd,Ud,Vd])} +function sd(){sd=_A;rd=new vd;od=new xd;pd=new zd;qd=new Bd;nd=gi(Jm,eB,5,[rd,od,pd,qd])} +function Id(){Id=_A;Hd=new Ld;Fd=new Nd;Gd=new Pd;Ed=new Rd;Dd=gi(Km,eB,7,[Hd,Fd,Gd,Ed])} +function gu(){gu=_A;cu=new ju;du=new lu;eu=new nu;fu=new pu;bu=gi(Pm,eB,44,[cu,du,eu,fu])} +function Do(a){op();!Fo&&(Fo=new Bf);if(!Co){Co=new th(null,true);Go=new Jo}return ph(Co,Fo,a)} +function jw(a){if(!a.d&&!a.e)return MB;if(!a.d&&a.e){return MD}if(a.c==84)return 'U';return Ux(a.c)} +function Bn(a,b){var c,d;d=b.c-a.c;if(d<=0){return null}c=rn(a.b,b.b);return new un(c.b/d,c.c/d)} +function Cv(a,b,c){var d;d=new vv(b,a.D,a.E,a.H,a.v,a.u,a.A);tv(d);rv(d);uv(d);return new mw(kv(d,c),d)} +function qy(a,b){var c;while(a.qb()){c=a.rb();if(b==null?c==null:Gb(b,c)){return a}}return null} +function lq(a,b){var c;switch(np(b.type)){case 16:case 32:c=Pc(b);if(!!c&&Wc(a.I,c)){return}}mf(b,a,a.I)} +function K(b,c){var d=BB(function(){if(!c.b){var a=ob();b.J(a)}});$wnd.mozRequestAnimationFrame(d)} +function Xc(a){var b=a.ownerDocument.defaultView.getComputedStyle(a,null);return b.direction==NB} +function yt(a){var b=$doc.defaultView.getComputedStyle(a,null);return b.getPropertyValue('direction')==NB} +function Pc(b){var c=b.relatedTarget;if(!c){return null}try{var d=c.nodeName;return c}catch(a){return null}} +function Uh(a){var b;b=Hc(a,cC);if(Jx(NB,b)){return _h(),$h}else if(Jx(dC,b)){return _h(),Zh}return _h(),Yh} +function Ku(){var a;a=$doc.createElement(_B);if(Iu){Jc(a,'<div><\/div>');bc((Xb(),Wb),new Qu(a))}return a} +function er(a,b){if(a.D!=b){return false}try{oq(b,null)}finally{Bc(a.ob(),b.I);a.D=null}return true} +function w(a){if(!a.p){return}a.v=a.q;a.o=null;a.p=false;a.q=false;if(a.r){a.r.L();a.r=null}a.v&&Us(a)} +function ac(a){if(!a.j){a.j=true;!a.f&&(a.f=new jc(a));hc(a.f,1);!a.i&&(a.i=new mc(a));hc(a.i,50)}} +function cq(a,b,c){if(!a){throw new wb(uC)}b=Px(b);if(b.length==0){throw new ox(vC)}c?Dc(a,b):Ic(a,b)} +function ho(a,b){this.f=a;this.b=new nb;this.c=En(this.f);this.e=new pn(this.c,b);this.g=_o(new ko(this))} +function _h(){_h=_A;$h=new ai('RTL',0);Zh=new ai('LTR',1);Yh=new ai('DEFAULT',2);Xh=gi(Om,eB,30,[$h,Zh,Yh])} +function xs(){xs=_A;new As((me(),'center'));new As('justify');vs=new As(xC);new As('right');ws=vs;us=ws} +function Ey(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=new uz(e,c.substring(1));a.zb(d)}}} +function Gh(a){var b,c;if(a.b){try{for(c=new Nz(a.b);c.c<c.e.Db();){b=pi(Lz(c),46);b.R()}}finally{a.b=null}}} +function Tr(a,b,c){var d,e;if(a.g){d=b+Ec(a.I);e=c+Fc(a.I);if(d<a.c||d>=a.j||e<a.d){return}rr(a,d-a.e,e-a.f)}} +function dp(){var a,b;if(Yo){b=ad($doc);a=_c($doc);if(Xo!=b||Wo!=a){Xo=b;Wo=a;fh((!Vo&&(Vo=new lp),Vo),b)}}} +function rr(a,b,c){var d;a.w=b;a.C=c;b-=Sc($doc);c-=Tc($doc);d=a.I;d.style[xC]=b+(He(),DC);d.style[yC]=c+DC} +function hn(a,b,c,d){var e,f,g;g=a*b;if(c>=0){e=0>c-d?0:c-d;g=g<e?g:e}else{f=0<c+d?0:c+d;g=g>f?g:f}return g} +function uc(a){var b,c,d;d=a&&a.stack?a.stack.split(LB):[];for(b=0,c=d.length;b<c;++b){d[b]=oc(d[b])}return d} +function tb(a){var b,c,d;c=fi(Sm,eB,55,a.length,0);for(d=0,b=a.length;d<b;++d){if(!a[d]){throw new zx}c[d]=a[d]}} +function Gs(a,b){var c,d;c=(d=$doc.createElement(KC),d[NC]=a.b.b,Ao(d,OC,a.d.b),d);Ac(a.c,(at(),bt(c)));Aq(a,b,c)} +function fr(a,b){if(b==a.D){return}!!b&&nq(b);!!a.D&&a.lb(a.D);a.D=b;if(b){Ac(a.ob(),(at(),bt(a.D.I)));oq(b,a)}} +function ur(a){if(a.y){Uu(a.y.b);a.y=null}if(a.t){Uu(a.t.b);a.t=null}if(a.B){a.y=Do(new Os(a));a.t=Qo(new Rs(a))}} +function fz(a){if(!a.c){throw new rx('Must call next() before remove().')}else{Mz(a.b);Qy(a.d,a.c.Fb());a.c=null}} +function yu(a,b){var c;if(b<0||b>=a.d){throw new tx}--a.d;for(c=b;c<a.d;++c){hi(a.b,c,a.b[c+1])}hi(a.b,a.d,null)} +function Bq(a,b){var c;if(b.H!=a){return false}try{oq(b,null)}finally{c=b.I;Bc(Nc(c),c);zu(a.g,b)}return true} +function Ob(){var a;if(Jb!=0){a=ob();if(a-Lb>2000){Lb=a;Mb=Ub()}}if(Jb++==0){Yb((Xb(),Wb));return true}return false} +function xp(a,b){var c=0,d=a.firstChild;while(d){if(d.nodeType==1){if(b==c)return d;++c}d=d.nextSibling}return null} +function iw(a){switch(a.c){case 65:return PD;case 71:return OD;case 67:return ND;case 84:return MD;}return HB} +function Uc(a){if(!Vc()&&Xc(a)){return (a.scrollLeft||0)-((a.scrollWidth||0)-a.clientWidth)}return a.scrollLeft||0} +function hc(b,c){Xb();$wnd.setTimeout(function(){var a=BB(dc)(b);a&&$wnd.setTimeout(arguments.callee,c)},c)} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{BB(Um)()}catch(a){b(c)}else{BB(Um)()}} +function Zy(a,b){var c,d,e;if(ri(b,59)){c=pi(b,59);d=c.Fb();if(Gy(a.b,d)){e=Hy(a.b,d);return FA(c.Gb(),e)}}return false} +function Dh(a,b){var c,d;d=pi(Hy(a.e,b),58);if(!d){d=new GA;My(a.e,b,d)}c=pi(d.c,57);if(!c){c=new mA;Oy(d,c)}return c} +function Fh(a,b){var c,d;d=pi(Hy(a.e,b),58);if(!d){return yA(),yA(),xA}c=pi(d.c,57);if(!c){return yA(),yA(),xA}return c} +function ov(a,b){var c;b>=a.b.c&&(b=a.b.c-1);c=pi(hA(a.b,b),48);while(!c.e&&b<a.b.c){c=pi(hA(a.b,b),48);++b}return c} +function lA(a,b){var c;b.length<a.c&&(b=di(b,a.c));for(c=0;c<a.c;++c){hi(b,c,a.b[c])}b.length>a.c&&hi(b,a.c,null);return b} +function zp(a,b){var c;op();Ix(pC,b)&&(c=$c(),c!=-1&&c<=1009000)?(qC==qC&&(a.ondragexit=up),undefined):Ap(a,b)} +function Ch(a,b,c){var d,e,f;d=Fh(a,b);e=d.Cb(c);e&&d.Bb()&&(f=pi(Hy(a.e,b),58),pi(Sy(f),57),f.e==0&&Qy(a.e,b),undefined)} +function bb(a,b){if(b<0){throw new ox('must be non-negative')}a.c?cb(a.d):db(a.d);kA(Z,a);a.c=false;a.d=eb(a,b);fA(Z,a)} +function Vh(a,b){switch(b.c){case 0:{a[cC]=NB;break}case 1:{a[cC]=dC;break}case 2:{Uh(a)!=(_h(),Yh)&&(a[cC]=HB,undefined);break}}} +function $x(a){Yx();var b=$D+a;var c=Xx[b];if(c!=null){return c}c=Vx[b];c==null&&(c=Zx(a));_x();return Xx[b]=c} +function Tc(a){var b=$wnd.getComputedStyle(a.documentElement,HB);return parseInt(b.marginTop)+parseInt(b.borderTopWidth)} +function Sc(a){var b=$wnd.getComputedStyle(a.documentElement,HB);return parseInt(b.marginLeft)+parseInt(b.borderLeftWidth)} +function Kr(a){var b,c;c=$doc.createElement(KC);b=$doc.createElement(_B);Ac(c,(at(),bt(b)));c[tC]=a;b[tC]=a+'Inner';return c} +function $q(a){var b;Zq.call(this,(b=$doc.createElement('BUTTON'),b.type='button',b));this.I[tC]='gwt-Button';Jc(this.I,a)} +function ar(){Cq.call(this);this.f=$doc.createElement(AC);this.e=$doc.createElement(BC);Ac(this.f,(at(),bt(this.e)));Xp(this,this.f)} +function Sn(){this.e=new mA;this.f=new ro;this.n=new ro;this.k=new ro;this.r=new mA;this.j=new no(this);On(this,new kn)} +function pw(a,b,c,d,e,f,g,h){this.g=a;this.i=b;this.j=c;this.f=d;this.b=e;this.c=f;this.e=g;this.d=h;'GenexState\n'+ow(this)} +function rc(){var a,b,c,d;c=pc(uc(tc()),2);d=fi(Sm,eB,55,c.length,0);for(a=0,b=d.length;a<b;++a){d[a]=new Ex(c[a])}tb(d)} +function qc(a){var b,c,d,e;d=uc(si(a.c)?qi(a.c):null);e=fi(Sm,eB,55,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new Ex(d[b])}tb(e)} +function Dy(h,a){var b=h.b;for(var c in b){var d=parseInt(c,10);if(c==d){var e=b[d];for(var f=0,g=e.length;f<g;++f){a.zb(e[f])}}}} +function Iy(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Fb();if(h.Eb(a,g)){return f.Gb()}}}return null} +function Ky(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Fb();if(h.Eb(a,g)){return true}}}return false} +function mf(a,b,c){var d,e,f;if(jf){f=pi(jg(jf,a.type),12);if(f){d=f.b.b;e=f.b.c;kf(f.b,a);lf(f.b,c);jq(b,f.b);kf(f.b,d);lf(f.b,e)}}} +function Hn(a,b){var c,d,e,f;c=ob();f=false;for(e=new Nz(a.r);e.c<e.e.Db();){d=pi(Lz(e),35);if(c-d.c<=2500&&Fn(b,d.b)){f=true;break}}return f} +function tw(a,b){var c,d,e,f;c=new gy;e=Vz(zy(a.b.b));f=true;while(Kz(e.b.b)){d=pi(_z(e),49);if(!d.yb(b)){f=false;cy(c,d.c)}}return f?JD:c.b.b} +function Bg(){var a;this.b=(a=document.createElement(_B),a.setAttribute('ontouchstart','return;'),typeof a.ontouchstart==KB)} +function Us(a){if(!a.j){Ts(a);a.d||Gq((ht(),lt(null)),a.b);lr()}Nu((lr(),a.b.I),'rect(auto, auto, auto, auto)');a.b.I.style[EB]=GC} +function Px(c){if(c.length==0||c[0]>MB&&c[c.length-1]>MB){return c}var a=c.replace(/^(\s*)/,HB);var b=a.replace(/\s*$/,HB);return b} +function cv(a){switch(a.b){case 0:++a.b;case 1:++a.b;return 'exon';case 2:++a.b;return 'next';case 3:a.b=1;return 'another';}return HB} +function of(a){var b,c;b=a.c;if(b){return c=a.b,(c.clientX||0)-Qc(gd(b.ownerDocument),b)+Uc(b)+dd(b.ownerDocument)}return a.b.clientX||0} +function pf(a){var b,c;b=a.c;if(b){return c=a.b,(c.clientY||0)-Rc(gd(b.ownerDocument),b)+(b.scrollTop||0)+ed(b.ownerDocument)}return a.b.clientY||0} +function hq(a,b,c){var d;d=np(c.c);d==-1?_p(a,c.c):a.F==-1?Dp(a.I,d|(a.I.__eventBits||0)):(a.F|=d);return ph(!a.G?(a.G=new sh(a)):a.G,c,b)} +function sc(b){var c=HB;try{for(var d in b){if(d!='name'&&d!='message'&&d!='toString'){try{c+='\n '+d+GB+b[d]}catch(a){}}}}catch(a){}return c} +--></script> +<script><!-- +function Hs(){ar.call(this);this.b=(xs(),us);this.d=(Cs(),Bs);this.c=$doc.createElement(JC);Ac(this.e,(at(),bt(this.c)));this.f[HC]=PC;this.f[IC]=PC} +function nq(a){if(!a.H){(ht(),JA(gt,a))&&jt(a)}else if(a.H){a.H.lb(a)}else if(a.H){throw new rx("This widget's parent does not implement HasWidgets")}} +function gc(b,c){var a,d,e,f;for(d=0,e=b.length;d<e;++d){f=b[d];try{f[1]?f[0].Q()&&(c=ec(c,f)):f[0].R()}catch(a){a=Vm(a);if(!ri(a,56))throw a}}return c} +function Qx(a){var b;b=0;while(0<=(b=a.indexOf('\\',b))){a.charCodeAt(b+1)==36?(a=a.substr(0,b-0)+'$'+Nx(a,++b)):(a=a.substr(0,b-0)+Nx(a,++b))}return a} +function Zc(a){var b=a.ownerDocument;var c=a.cloneNode(true);var d=b.createElement('DIV');d.appendChild(c);outer=d.innerHTML;c.innerHTML=HB;return outer} +function ru(a,b){var c,d,e;d=$doc.createElement(JC);c=(e=$doc.createElement(KC),e[NC]=a.b.b,Ao(e,OC,a.c.b),e);Ac(d,(at(),bt(c)));Ac(a.e,bt(d));Aq(a,b,c)} +function He(){He=_A;Ge=new Ke;Ee=new Me;ze=new Oe;Ae=new Qe;Fe=new Se;De=new Ue;Be=new We;ye=new Ye;Ce=new $e;xe=gi(Nm,eB,10,[Ge,Ee,ze,Ae,Fe,De,Be,ye,Ce])} +function Ts(a){if(a.j){if(a.b.v){Ac($doc.body,a.b.r);lr();a.g=_o(a.b.s);Ks();a.c=true}}else if(a.c){Bc($doc.body,a.b.r);lr();Uu(a.g.b);a.g=null;a.c=false}} +function jx(a,b){var c;b.c=a;if(a==2){c=String.prototype}else{if(a>0){var d=hx(b);if(d){c=d.prototype}else{d=Xm[a]=function(){};d.cZ=b;return}}else{return}}c.cZ=b} +function Vs(a){Ts(a);if(a.j){a.b.I.style[zC]=SC;a.b.C!=-1&&rr(a.b,a.b.w,a.b.C);Fq((ht(),lt(null)),a.b);lr()}else{a.d||Gq((ht(),lt(null)),a.b);lr()}a.b.I.style[EB]=GC} +function iv(a,b){var c,d;d=Lx(a.n,a.e,b);if(d==-1)return new fv(b,a.n.length,-1);c=Lx(a.n,a.d,d);if(c==-1)return new fv(b,a.n.length,-1);return new fv(b,d,c+a.d.length)} +function Fv(a,b,c){c!=-1?is(a.t,MC+c):is(a.t,MC);ls(a.s,b.b.c+'<font color=blue>'+a.B+'<\/font><\/pre><br><br><br><font size=+1><\/font><\/body><\/html>');a.I=b.c;Kv(a)} +function Cx(){Cx=_A;Bx=gi(Hm,eB,-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function T(a){var b,c,d,e,f;b=fi(Im,cB,3,a.b.c,0);b=pi(lA(a.b,b),4);c=new nb;for(e=0,f=b.length;e<f;++e){d=b[e];kA(a.b,d);B(d.b,c.b)}a.b.c>0&&bb(a.c,xx(5,16-(ob()-c.b)))} +function vx(a){var b,c,d;b=fi(Hm,eB,-1,8,1);c=(Cx(),Bx);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return Rx(b,d,8)} +function Lo(a,b){var c,d,e,f,g;if(!!Fo&&!!a&&rh(a,Fo)){c=Go.b;d=Go.c;e=Go.d;f=Go.e;Ho(Go);Io(Go,b);qh(a,Go);g=!(Go.b&&!Go.c);Go.b=c;Go.c=d;Go.d=e;Go.e=f;return g}return true} +function ry(a){var b,c,d,e;d=new gy;b=null;d.b.b+='[';c=a.mb();while(c.qb()){b!=null?(xc(d.b,b),d):(b=_D);e=c.rb();xc(d.b,e===a?'(this Collection)':HB+e)}d.b.b+=']';return d.b.b} +function qh(b,c){var a,d,e;!c.f||c.U();e=c.g;gf(c,b.c);try{Bh(b.b,c)}catch(a){a=Vm(a);if(ri(a,47)){d=a;throw new Rh(d.b)}else throw a}finally{e==null?(c.f=true,c.g=null):(c.g=e)}} +function Ks(){var a,b,c,d,e;b=null.Nb();e=ad($doc);d=_c($doc);b[QC]=(sd(),RC);b[rC]=0+(He(),DC);b[sC]=EC;c=fd($doc);a=cd($doc);b[rC]=(c>e?c:e)+DC;b[sC]=(a>d?a:d)+DC;b[QC]='block'} +function ei(a,b){var c=new Array(b);if(a==3){for(var d=0;d<b;++d){var e=new Object;e.l=e.m=e.h=0;c[d]=e}}else if(a>0){var e=[null,0,false][a];for(var d=0;d<b;++d){c[d]=e}}return c} +function Ry(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Fb();if(h.Eb(a,g)){c.length==1?delete h.b[b]:c.splice(d,1);--h.e;return f.Gb()}}}return null} +function Ny(j,a,b,c){var d=j.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.Fb();if(j.Eb(a,h)){var i=g.Gb();g.Hb(b);return i}}}else{d=j.b[c]=[]}var g=new UA(a,b);d.push(g);++j.e;return null} +function oq(a,b){var c;c=a.H;if(!b){try{!!c&&c.E&&a.ib()}finally{a.H=null}}else{if(c){throw new rx('Cannot set a new parent without first clearing the old parent')}a.H=b;b.E&&a.hb()}} +function zh(a,b,c){if(!b){throw new Ax('Cannot add a handler with a null type')}if(!c){throw new Ax('Cannot add a null handler')}a.c>0?yh(a,new Xu(a,b,c)):Ah(a,b,c);return new Vu(a,b,c)} +function $m(a){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:a})} +function Oq(b,c){Mq();var a,d,e,f,g;d=null;for(g=b.mb();g.qb();){f=pi(g.rb(),45);try{c.nb(f)}catch(a){a=Vm(a);if(ri(a,56)){e=a;!d&&(d=new LA);IA(d,e)}else throw a}}if(d){throw new Nq(d)}} +function Ws(a,b){var c,d,e,f,g,h;a.j||(b=1-b);g=0;e=0;f=0;c=0;d=vi(b*a.e);h=vi(b*a.f);switch(0){case 2:case 0:g=a.e-d>>1;e=a.f-h>>1;f=e+h;c=g+d;}Nu((lr(),a.b.I),'rect('+g+TC+f+TC+c+TC+e+'px)')} +function Zx(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c<e){b=a.charCodeAt(c+3)+31*(a.charCodeAt(c+2)+31*(a.charCodeAt(c+1)+31*(a.charCodeAt(c)+31*b)))|0;c+=4}while(c<d){b=b*31+Hx(a,c++)}return b|0} +function hi(a,b,c){if(c!=null){if(a.qI>0&&!oi(c,a.qI)){throw new Vw}else if(a.qI==-1&&(c.tM==_A||ni(c,1))){throw new Vw}else if(a.qI<-1&&!(c.tM!=_A&&!ni(c,1))&&!oi(c,-a.qI)){throw new Vw}}return a[b]=c} +function mq(a){if(!a.E){throw new rx("Should only call onDetach when the widget is attached to the browser's document")}try{a.kb();Vg(a,false)}finally{try{a.gb()}finally{a.I.__listener=null;a.E=false}}} +function lt(a){ht();var b,c;c=pi(Hy(ft,a),42);b=null;if(a!=null){if(!(b=bd($doc,a))){return null}}if(c){if(!b||c.I==b){return c}}ft.e==0&&Zo(new qt);!b?(c=new tt):(c=new it(b));My(ft,a,c);IA(gt,c);return c} +function xu(a,b,c){var d,e;if(c<0||c>a.d){throw new tx}if(a.d==a.b.length){e=fi(Qm,eB,45,a.b.length*2,0);for(d=0;d<a.b.length;++d){hi(e,d,a.b[d])}a.b=e}++a.d;for(d=a.d-1;d>c;--d){hi(a.b,d,a.b[d-1])}hi(a.b,c,b)} +function ew(){this.b='CAAGGCTATAACCGAGATTGATGCCTTGTGCGATAAGGTGTGTCCCCCCCCAAAGTGTCGGATGTCGAGTGCGCGTGCAAAAAAAAACAAAGGCGAGGACCTTAAGAAGGTGTGAGGGGGCGCTCGAT';this.f=TD;this.g=0;this.i=UD;this.d=VD;this.c=WD;this.e=XD} +function oc(a){var b,c,d;d=HB;a=Px(a);b=a.indexOf(JB);c=a.indexOf(KB)==0?8:0;if(b==-1){b=Kx(a,String.fromCharCode(64));c=a.indexOf('function ')==0?9:0}b!=-1&&(d=Px(a.substr(c,b-c)));return d.length>0?d:'anonymous'} +function Ym(a,b,c){var d=Xm[a];if(d&&!d.cZ){_=d.prototype}else{!d&&(d=Xm[a]=function(){});_=d.prototype=b<0?{}:Zm(b);_.cM=c}for(var e=3;e<arguments.length;++e){arguments[e].prototype=_}if(d.cZ){_.cZ=d.cZ;d.cZ=null}} +function Qh(a){var b,c,d,e,f;c=a.Db();if(c==0){return null}b=new ly(c==1?'Exception caught: ':c+' exceptions caught: ');d=true;for(f=a.mb();f.qb();){e=pi(f.rb(),56);d?(d=false):(b.b.b+='; ',b);ky(b,e.P())}return b.b.b} +function Mv(d){$doc.onkeypress=function(a){if(d.o){var a=$wnd.event||a;var b=String.fromCharCode(a.charCode);var c=a.charCode;d.ub(b,c)}};$doc.onkeydown=function(a){if(d.o){var a=$wnd.event||a;var b=a.keyCode;d.tb(b)}}} +function Rc(a,b){if(Element.prototype.getBoundingClientRect){return b.getBoundingClientRect().top+a.scrollTop|0}else{var c=b.ownerDocument;return c.getBoxObjectFor(b).screenY-c.getBoxObjectFor(c.documentElement).screenY}} +function Qc(a,b){if(Element.prototype.getBoundingClientRect){return b.getBoundingClientRect().left+a.scrollLeft|0}else{var c=b.ownerDocument;return c.getBoxObjectFor(b).screenX-c.getBoxObjectFor(c.documentElement).screenX}} +function Ou(){function b(a){return parseInt(a[1])*1000+parseInt(a[2])} +var c=navigator.userAgent;if(c.indexOf('Macintosh')!=-1){var d=/rv:([0-9]+)\.([0-9]+)/.exec(c);if(d&&d.length==3){if(b(d)<=1008){return true}}}return false} +function Ft(a){var b,c;if(a.d){return false}a.d=(b=(!An&&(An=(Zw(),(!og&&(og=new Bg),og.b)&&!(c=navigator.userAgent.toLowerCase(),/android ([3-9]+)\.([0-9]+)/.exec(c)!=null)?Yw:Xw)),An.b?new Sn:null),!!b&&Pn(b,a),b);return !a.d} +function $c(){var a=/rv:([0-9]+)\.([0-9]+)(\.([0-9]+))?.*?/.exec(navigator.userAgent.toLowerCase());if(a&&a.length>=3){var b=parseInt(a[1])*1000000+parseInt(a[2])*1000+parseInt(a.length>=5&&!isNaN(a[4])?a[4]:0);return b}return -1} +function gq(a,b){var c=a.className.split(/\s+/);if(!c){return}var d=c[0];var e=d.length;c[0]=b;for(var f=1,g=c.length;f<g;f++){var h=c[f];h.length>e&&h.charAt(e)==wC&&h.indexOf(d)==0&&(c[f]=b+h.substring(e))}a.className=c.join(MB)} +function kq(a){var b;if(a.E){throw new rx("Should only call onAttach when the widget is detached from the browser's document")}a.E=true;pp(a.I,a);b=a.F;a.F=-1;b>0&&(a.F==-1?Dp(a.I,b|(a.I.__eventBits||0)):(a.F|=b));a.fb();a.jb();Vg(a,true)} +function Ln(a,b){var c,d;qo(a.k,null,0);if(a.s){return}d=Dn(b);a.q=new un(d.pageX,d.pageY);c=ob();qo(a.n,a.q,c);qo(a.f,a.q,c);a.o=null;if(a.i){fA(a.r,new so(a.q,c));hc((Xb(),a.j),2500)}a.p=new un(Uc(a.t.c),a.t.c.scrollTop||0);Cn(a);a.s=true} +function Ht(a){gr.call(this);this.c=this.I;this.b=$doc.createElement(_B);Ac(this.c,this.b);this.c.style[EB]=(Id(),UC);this.c.style[zC]=(Yd(),VC);this.b.style[zC]=VC;this.c.style[WC]=XC;this.b.style[WC]=XC;Ft(this);!vt&&(vt=new zt);fr(this,a)} +function Dc(a,b){var c,d,e,f;b=Px(b);f=a.className;c=f.indexOf(b);while(c!=-1){if(c==0||f.charCodeAt(c-1)==32){d=c+b.length;e=f.length;if(d==e||d<e&&f.charCodeAt(d)==32){break}}c=f.indexOf(b,c+1)}if(c==-1){f.length>0&&(f+=MB);a.className=f+b}} +function vv(a,b,c,d,e,f,g){var h;this.b=new mA;this.c=a;this.o=b;this.p=c;this.t=d;this.e=e;this.d=f;this.k=g;this.q=-1;this.u=-1;this.i=0;this.j=0;this.g=0;this.n=HB;this.f=HB;this.r=HB;this.s=HB;for(h=0;h<a.length;++h){fA(this.b,new kw(Hx(this.c,h),h))}} +function Np(h){var c=HB;var d=$wnd.location.hash;d.length>0&&(c=h.ab(d.substring(1)));Kp(c);var e=h;var f=BB(function(){var a=HB,b=$wnd.location.hash;b.length>0&&(a=e.ab(b.substring(1)));e.bb(a)});var g=function(){$wnd.setTimeout(g,250);f()};g();return true} +function Xs(a,b,c){var d;a.d=c;w(a);if(a.i){ab(a.i);a.i=null;Us(a)}a.b.B=b;ur(a.b);d=!c&&a.b.u;a.j=b;if(d){if(b){Ts(a);a.b.I.style[zC]=SC;a.b.C!=-1&&rr(a.b,a.b.w,a.b.C);Nu((lr(),a.b.I),FC);Fq((ht(),lt(null)),a.b);a.i=new $s(a);bb(a.i,1)}else{x(a,ob())}}else{Vs(a)}} +function jn(a){var b,c,d,e,f,g,h,i,j,k,l,m;e=a.c;m=a.b;f=a.d;k=a.f;b=Math.pow(0.9993,m);g=e*5.0E-4;i=hn(f.b,b,k.b,g);j=hn(f.c,b,k.c,g);h=new un(i,j);a.f=h;d=a.c;c=sn(h,new un(d,d));l=a.e;on(a,new un(l.b+c.b,l.c+c.c));if(wx(h.b)<0.02&&wx(h.c)<0.02){return false}return true} +function fc(a){var b,c,d,e,f,g;d=a.length;if(d==0){return null}b=false;f=ob();while(ob()-f<100){for(c=0;c<d;++c){g=a[c];if(!g){continue}if(!g[0].Q()){a[c]=null;b=true}}}if(b){e=[];for(c=0;c<d;++c){!!a[c]&&(e[e.length]=a[c],undefined)}return e.length==0?null:e}else{return a}} +function tv(a){var b,c,d,e,f,g;f=Kx(a.c,a.o);g=Lx(a.c,a.t,f);e=new gy;if(f!=-1){c=0;a.q=f;a.i=a.q+a.o.length+a.p;g!=-1?(a.u=g):(a.u=a.c.length);for(b=a.i;b<a.u;++b){d=pi(hA(a.b,b),48);d.d=true;++c}for(b=0;b<a.c.length;++b){d=pi(hA(a.b,b),48);cy(e,jw(d))}a.n=Px(e.b.b)}else{a.n=HB}} +function Kv(e){function f(a,b,c){var d=document.createRange();d.selectNodeContents(a);d.setEnd(b,c);return d.toString().length} +var g=$doc.getElementById('dna-strand');g.style.cursor='pointer';g.onclick=function(){var a=$wnd.getSelection();var b=f(this,a.anchorNode,a.anchorOffset);e.vb(b);e.o=true}} +function ow(a){var b;b=new gy;b.b.b+='State:\n';cy(b,'\tStarting DNA='+a.g+LB);cy(b,'\tStarting mRNA='+a.i+LB);cy(b,'\tStarting protein='+a.j+LB);cy(b,'\tSelected base='+a.f+LB);cy(b,'\tCurrent DNA='+a.b+LB);cy(b,'\tNum Exons='+a.c+LB);cy(b,'\tRNA='+a.e+LB);cy(b,'\tProtein='+a.d+'\n\n');return b.b.b} +function rv(a){var b,c,d,e,f,g;if(Ix(a.n,HB)){a.f=HB}else{c=0;f=new gy;d=0;while(c!=-1){b=iv(a,c);++a.j;c=b.d;for(e=b.c;e<b.b;++e){g=pi(hA(a.b,e+a.i),48);g.e=true;++d;cy(f,jw(g))}}for(e=a.u;e<a.u+a.k.length;++e){if(e>=a.b.c){g=new kw(65,e);g.e=true;fA(a.b,g)}else{g=pi(hA(a.b,e),48);g.e=true}}a.f=f.b.b+a.k}} +function ct(){var c=function(){};c.prototype={className:HB,clientHeight:0,clientWidth:0,dir:HB,getAttribute:function(a,b){return this[a]},href:HB,id:HB,lang:HB,nodeType:1,removeAttribute:function(a,b){this[a]=undefined},setAttribute:function(a,b){this[a]=b},src:HB,style:{},title:HB};$wnd.GwtPotentialElementShim=c} +function Ic(a,b){var c,d,e,f,g,h,i;b=Px(b);i=a.className;e=i.indexOf(b);while(e!=-1){if(e==0||i.charCodeAt(e-1)==32){f=e+b.length;g=i.length;if(f==g||f<g&&i.charCodeAt(f)==32){break}}e=i.indexOf(b,e+1)}if(e!=-1){c=Px(i.substr(0,e-0));d=Px(Nx(i,e+b.length));c.length==0?(h=d):d.length==0?(h=c):(h=c+MB+d);a.className=h}} +function Bh(b,c){var a,d,e,f,g,h;if(!c){throw new Ax('Cannot fire null event')}try{++b.c;g=Eh(b,c.T());d=null;h=b.d?g.Lb(g.Db()):g.Kb();while(b.d?h.c>0:h.c<h.e.Db()){f=b.d?Sz(h):Lz(h);try{c.S(pi(f,27))}catch(a){a=Vm(a);if(ri(a,56)){e=a;!d&&(d=new LA);IA(d,e)}else throw a}}if(d){throw new Oh(d)}}finally{--b.c;b.c==0&&Gh(b)}} +function mr(a){var b,c,d,e,f;d=a.B;c=a.u;if(!d){a.I.style[CC]=FB;a.u=false;!a.i&&(a.i=_o(new bs(a)));tr(a)}b=a.I;b.style[xC]=0+(He(),DC);b.style[yC]=EC;e=ad($doc)-Gc(a.I,DB)>>1;f=_c($doc)-Gc(a.I,CB)>>1;rr(a,xx(dd($doc)+e,0),xx(ed($doc)+f,0));if(!d){a.u=c;if(c){Nu(a.I,FC);a.I.style[CC]=GC;x(a.A,ob())}else{a.I.style[CC]=GC}}} +function Jr(a){var b,c,d,e;hr.call(this,$doc.createElement(AC));d=this.I;this.c=$doc.createElement(BC);vo(d,this.c);d[HC]=0;d[IC]=0;for(b=0;b<a.length;++b){c=(e=$doc.createElement(JC),e[tC]=a[b],vo(e,Kr(a[b]+'Left')),vo(e,Kr(a[b]+'Center')),vo(e,Kr(a[b]+'Right')),e);vo(this.c,c);b==1&&(this.b=Mc(xp(c,1)))}this.I[tC]='gwt-DecoratorPanel'} +function Qp(){var d=$wnd.onbeforeunload;var e=$wnd.onunload;$wnd.onbeforeunload=function(a){var b,c;try{b=BB(cp)()}finally{c=d&&d(a)}if(b!=null){return b}if(c!=null){return c}};$wnd.onunload=BB(function(a){try{Uo&&_g((!Vo&&(Vo=new lp),Vo))}finally{e&&e(a);$wnd.onresize=null;$wnd.onscroll=null;$wnd.onbeforeunload=null;$wnd.onunload=null}})} +function qv(a,b,c,d,e){var f,g;f=new gy;g=new gy;b==a.q&&(g.b.b+='<EM class=promoter>',g);b==a.q+a.o.length&&(g.b.b+=yD,g);b==a.u&&(g.b.b+='<EM class=terminator>',g);b==a.u+a.t.length&&(g.b.b+=yD,g);if(d){g.b.b+=BD;xc(g.b,c);g.b.b+=yD;e?(xc(f.b,c),f):cy(f,c.toLowerCase())}else{xc(g.b,c);e?cy(f,c.toLowerCase()):(xc(f.b,c),f)}return new gw(g.b.b,f.b.b)} +function y(a,b){var c,d,e;c=a.s;d=b>=a.u+a.n;if(a.q&&!d){e=(b-a.u)/a.n;Ws(a,(1+Math.cos(3.141592653589793+e*3.141592653589793))/2);return a.p&&a.s==c}if(!a.q&&b>=a.u){a.q=true;a.e=Gc(a.b.I,CB);a.f=Gc(a.b.I,DB);a.b.I.style[EB]=FB;Ws(a,(1+Math.cos(3.141592653589793))/2);if(!(a.p&&a.s==c)){return false}}if(d){a.p=false;a.q=false;Us(a);return false}return true} +function Cp(){$wnd.addEventListener(WB,BB(function(a){var b=rp;if(b&&!a.relatedTarget){if('html'==a.target.tagName.toLowerCase()){var c=$doc.createEvent('MouseEvents');c.initMouseEvent(YB,true,true,$wnd,0,a.screenX,a.screenY,a.clientX,a.clientY,a.ctrlKey,a.altKey,a.shiftKey,a.metaKey,a.button,null);b.dispatchEvent(c)}}}),true);$wnd.addEventListener(kC,tp,true)} +function Pn(a,b){var c,d;if(a.t==b){return}Cn(a);for(d=new Nz(a.e);d.c<d.e.Db();){c=pi(Lz(d),28);Uu(c.b)}gA(a.e);Mn(a);Nn(a);a.t=b;if(b){b.E&&(Nn(a),a.c=Do(new co(a)));a.b=iq(b,new Un(a),(!Rg&&(Rg=new Bf),Rg));fA(a.e,hq(b,new Wn(a),(Lg(),Lg(),Kg)));fA(a.e,hq(b,new Yn(a),(Eg(),Eg(),Dg)));fA(a.e,hq(b,new $n(a),(wg(),wg(),vg)));fA(a.e,hq(b,new ao(a),(qg(),qg(),pg)))}} +function Um(){var a;!!$stats&&$m('com.google.gwt.useragent.client.UserAgentAsserter');a=Su();Ix(eC,a)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (gecko1_8) does not match the runtime user.agent value ('+a+'). Expect more errors.\n'),undefined);!!$stats&&$m('com.google.gwt.user.client.DocumentModeAsserter');Bo();!!$stats&&$m('genex.client.gx.GenexGWT');Ev(new Gv)} +function uv(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(Ix(a.f,HB)){a.r=HB}else{h=0;l=new gy;for(j=0;j<a.b.c;++j){b=pi(hA(a.b,j),48);if(b.e){c=ov(a,j);d=ov(a,c.f+1);e=ov(a,d.f+1);f=jw(c)+jw(d)+jw(e);h=e.f;if(Ix(f,bD)){sv(0,c,d,e);cy(l,av(f));break}}}g=1;k=h+1;while(k<=a.b.c){i=ov(a,k);m=ov(a,i.f+1);n=ov(a,m.f+1);f=jw(i)+jw(m)+jw(n);if(k+2>=a.b.c)break;k=n.f+1;cy(l,av(f));sv(g,i,m,n);if(Ix(av(f),HB)){sv(-2,i,m,n);break}++g}a.r=l.b.b}} +function Ap(a,b){switch(b){case 'drag':a.ondrag=vp;break;case 'dragend':a.ondragend=vp;break;case 'dragenter':a.ondragenter=up;break;case pC:a.ondragleave=vp;break;case 'dragover':a.ondragover=up;break;case 'dragstart':a.ondragstart=vp;break;case 'drop':a.ondrop=vp;break;case 'canplaythrough':case 'ended':case 'progress':a.removeEventListener(b,vp,false);a.addEventListener(b,vp,false);break;default:throw 'Trying to sink unknown event type '+b;}} +function lv(a,b){var c,d,e,f,g,h;c=new gy;d=new gy;h=new gy;if(Ix(a.e,RC)||Ix(a.d,RC)){for(e=0;e<a.i;++e){h.b.b+=MB;c.b.b+=MB}}if(Ix(a.r,HB)){h.b.b+=vD;c.b.b+=wD}else{for(e=0;e<a.c.length;++e){f=pi(hA(a.b,e),48);if(f.e){if(f.b==0){break}h.b.b+=MB;c.b.b+=MB}}h.b.b+=xD;cy(c,xD+a.r+'-C\n');if(b!=-1){g=new hy(a.r);f=pi(hA(a.b,b),48);if(f.b>=0){g=ey(g,f.b*3+3,yD);g=ey(g,f.b*3+f.g+1,zD);g=ey(g,f.b*3+f.g,AD);g=ey(g,f.b*3,BD)}cy(h,g.b.b+CD)}else{cy(h,a.r+CD)}}a.s=h.b.b;cy(d,a.s+LB);return new gw(d.b.b,c.b.b)} +function qr(a,b){var c,d,e,f;if(b.b||!a.z&&b.c){a.x&&(b.b=true);return}a.$(b);if(b.b){return}d=b.e;c=nr(a,d);c&&(b.c=true);a.x&&(b.b=true);f=np(d.type);switch(f){case 512:case 256:case 128:{((d.keyCode||0)&65535,(d.shiftKey?1:0)|(d.metaKey?8:0)|(d.ctrlKey?2:0)|(d.altKey?4:0),true)||(b.b=true);return}case 4:case 1048576:if(uo){b.c=true;return}if(!c&&a.n){or(a);return}break;case 8:case 64:case 1:case 2:case 4194304:{if(uo){b.c=true;return}break}case 2048:{e=d.target;if(a.x&&!c&&!!e){e.blur&&e!=$doc.body&&e.blur();b.b=true;return}break}}} +function Su(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(YC)!=-1}())return YC;if(function(){return b.indexOf('webkit')!=-1}())return 'safari';if(function(){return b.indexOf(ZC)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return b.indexOf(ZC)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return 'ie6';if(function(){return b.indexOf('gecko')!=-1}())return eC;return 'unknown'} +function Kn(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(!a.s){return}i=Dn(b);j=new un(i.pageX,i.pageY);k=ob();qo(a.f,j,k);if(!a.d){e=rn(j,a.q);c=wx(e.b);d=wx(e.c);if(c>5||d>5){qo(a.k,a.n.b,a.n.c);if(c>d){h=Uc(a.t.c);g=Dt(a.t);f=Bt(a.t);if(e.b<0&&f<=h){Cn(a);return}else if(e.b>0&&g>=h){Cn(a);return}}else{n=a.t.c.scrollTop||0;m=Ct(a.t);if(e.c<0&&m<=n){Cn(a);return}else if(e.c>0&&0>=n){Cn(a);return}}a.d=true}}b.b.preventDefault();if(a.d){o=rn(a.q,a.f.b);p=tn(a.p,o);Et(a.t,vi(p.b));Gt(a.t,vi(p.c));l=k-a.n.c;if(l>200&&!!a.o){qo(a.n,a.o.b,a.o.c);a.o=null}else l>100&&!a.o&&(a.o=new so(j,k))}} +function np(a){switch(a){case 'blur':return 4096;case 'change':return 1024;case TB:return 1;case gC:return 2;case 'focus':return 2048;case hC:return 128;case iC:return 256;case jC:return 512;case 'load':return 32768;case 'losecapture':return 8192;case UB:return 4;case VB:return 64;case WB:return 32;case XB:return 16;case YB:return 8;case 'scroll':return 16384;case 'error':return 65536;case kC:case lC:return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case bC:return 1048576;case aC:return 2097152;case $B:return 4194304;case ZB:return 8388608;case mC:return 16777216;case nC:return 33554432;case oC:return 67108864;default:return -1;}} +function Ev(a){a.s=new ms;a.G=new Ht(a.s);Yp(a.G);Zp(a.G,'genex-scrollpanel');Fq(lt(KD),a.G);a.k=new Vr;$p(a.k,'genex-dialogbox');a.n=new su;is(a.k.b,'New DNA Sequence');a.w=new ns;Zp(a.w,'genex-dialogbox-message');a.p=new $t;a.d=new $q('Cancel');$p(a.d,LD);hq(a.d,new Qv(a),(rf(),rf(),qf));a.y=new $q(JD);$p(a.y,LD);hq(a.y,new Wv(a),qf);a.r=new Hs;Gs(a.r,a.d);Gs(a.r,a.y);ru(a.n,a.w);ru(a.n,a.p);ru(a.n,a.r);Cr(a.k,a.n);a.F=new $q('Reset DNA Sequence');$p(a.F,LD);hq(a.F,new Zv(a),qf);a.x=new $q('Enter New DNA Sequence');$p(a.x,LD);hq(a.x,new aw(a),qf);a.t=new ks;$p(a.t,'genex-label');a.q=new Hs;Gs(a.q,a.F);Gs(a.q,a.x);Gs(a.q,a.t);Fq(lt(KD),a.q);bc((Xb(),Wb),new Tv(a))} +function Wr(a){var b,c,d;gr.call(this);this.s=new Ls;this.A=new Ys(this);Ac(this.I,Ku());rr(this,0,0);Mu(Mc(this.I))[tC]='gwt-PopupPanel';Lu(Mc(this.I))[tC]=LC;this.n=false;this.o=false;this.x=true;d=gi(Tm,eB,1,['dialogTop','dialogMiddle','dialogBottom']);this.k=new Jr(d);Zp(this.k,HB);dq(Mu(Mc(this.I)),'gwt-DecoratedPopupPanel');sr(this,this.k);cq(Lu(Mc(this.I)),LC,false);cq(this.k.b,'dialogContent',true);nq(a);this.b=a;c=Ir(this.k);Ac(c,(at(),bt(this.b.I)));xq(this,this.b);Mu(Mc(this.I))[tC]='gwt-DialogBox';this.j=ad($doc);this.c=Sc($doc);this.d=Tc($doc);b=new qs(this);hq(this,b,(Ff(),Ff(),Ef));hq(this,b,(dg(),dg(),cg));hq(this,b,(Mf(),Mf(),Lf));hq(this,b,(Zf(),Zf(),Yf));hq(this,b,(Tf(),Tf(),Sf))} +function nv(a){var b,c,d,e,f,g,h;b=new gy;c=new gy;f=false;e=new dv;if(!(Ix(a.e,RC)||Ix(a.d,RC))){c.b.b+='<\/pre><h3>pre-mRNA: <EM class=exon>Ex<\/EM><EM class=next>o<\/EM><EM class=another>n<\/EM> Intron<\/h3><pre>';b.b.b+='<\/pre><h3>pre-mRNA: EXON intron<\/h3><pre>';if(Ix(a.n,HB)){c.b.b+=vD;b.b.b+=wD}else{for(g=0;g<a.i;++g){c.b.b+=MB;b.b.b+=MB}c.b.b+=rD;b.b.b+=rD;for(g=0;g<a.c.length;++g){d=pi(hA(a.b,g),48);g!=0?(h=pi(hA(a.b,g-1),48)):(h=pi(hA(a.b,0),48));if(d.d){if(!h.e&&d.e){cy(c,FD+cv(e)+GD);f=true}if(h.e&&!d.e){c.b.b+=yD;f=false}if(d.i){c.b.b+=BD;cy(c,jw(d));c.b.b+=yD;f?cy(b,jw(d).toLowerCase()):cy(b,jw(d))}else{cy(c,jw(d));f?cy(b,jw(d)):cy(b,jw(d).toLowerCase())}}}c.b.b+="<\/EM>-3'\n";b.b.b+=HD}}return new gw(c.b.b,b.b.b)} +function kv(a,b){var c,d,e,f,g,h,i,j,k;if(b!=-1){h=pi(hA(a.b,b),48);h.i=true}e=new gy;d=new gy;f=(k=new gy,k.b.b+='<html><head>',k.b.b+='<style type="text/css">',k.b.b+='EM.selected {font-style: normal; background: blue; color: red}',k.b.b+='EM.promoter {font-style: normal; background: #90FF90; color: black}',k.b.b+='EM.terminator {font-style: normal; background: #FF9090; color: black}',k.b.b+='EM.exon {font-style: normal; background: #FF90FF; color: black}',k.b.b+='EM.next {font-style: normal; background: #FF8C00; color: black}',k.b.b+='EM.another {font-style: normal; background: #FFFF50; color: black}',k.b.b+='<\/style><\/head><body>',new gw(k.b.b,HB));cy(e,f.c);cy(d,f.b);c=jv(a);cy(e,c.c);cy(d,c.b);a.g=hv(c.c);i=nv(a);cy(e,i.c);cy(d,i.b);g=mv(a);cy(e,g.c);cy(d,g.b);j=lv(a,b);cy(e,j.c);cy(d,j.b);return new gw(e.b.b,d.b.b)} +function Bo(){var a,b,c;b=$doc.compatMode;a=gi(Tm,eB,1,[OB]);for(c=0;c<a.length;++c){if(Ix(a[c],b)){return}}a.length==1&&Ix(OB,a[0])&&Ix('BackCompat',b)?"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 <!doctype html> 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> <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').<br>Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} +function mv(a){var b,c,d,e,f,g,h,i,j;b=new gy;c=new gy;f=false;h=false;e=new dv;c.b.b+=DD;b.b.b+=DD;if(!(Ix(a.e,RC)||Ix(a.d,RC))){c.b.b+=ED;b.b.b+=ED}c.b.b+='mRNA and Protein (<font color=blue>previous<\/font>):<\/h3><pre>';b.b.b+='mRNA and Protein (previous on line below):<\/h3><pre>';if(Ix(a.e,RC)||Ix(a.d,RC)){for(g=0;g<a.i;++g){c.b.b+=MB;b.b.b+=MB}}if(Ix(a.f,HB)){c.b.b+=vD;b.b.b+=wD}else{c.b.b+=rD;b.b.b+=rD;for(g=0;g<a.b.c;++g){d=pi(hA(a.b,g),48);g!=0?(j=pi(hA(a.b,g-1),48)):(j=pi(hA(a.b,0),48));g!=a.b.c-1?(i=pi(hA(a.b,g+1),48)):(i=pi(hA(a.b,g),48));if(d.e){if(!j.e&&d.e){cy(c,FD+cv(e)+GD);f&&(c.b.b+=AD,c)}if(!d.d&&d.e&&!h){c.b.b+=yD;h=true}if((d.b==0||d.b==-2)&&d.g==0&&d.d){c.b.b+=AD;f=true}if(d.b==1&&d.g==0){c.b.b+=zD;f=false}if(d.b==-1&&j.b==-2){c.b.b+=zD;f=false}if(d.i&&d.d){c.b.b+=BD;cy(c,jw(d));c.b.b+=yD;f?cy(b,jw(d)):cy(b,jw(d).toLowerCase())}else{cy(c,jw(d));f?cy(b,jw(d).toLowerCase()):cy(b,jw(d))}d.e&&!i.e&&(c.b.b+=yD,c)}}c.b.b+=HD;b.b.b+=HD}return new gw(c.b.b,b.b.b)} +function jv(a){var b,c,d,e,f,g,h,i,j,k,l,m;d=new gy;h=new gy;j=false;h.b.b+='<html><h3>DNA: <EM class=promoter>Promoter<\/EM>';h.b.b+='<EM class=terminator>Terminator<\/EM><\/h3><pre>\n';d.b.b+='<h3>DNA: promoter, terminator<\/h3><pre>\n';h.b.b+=sD;d.b.b+=sD;for(k=0;k<a.c.length;k=k+10){k==0?(m=HB):k<100?(m=' '+k):(m=' '+k);xc(h.b,m);xc(d.b,m)}h.b.b+=LB;d.b.b+=LB;h.b.b+=sD;d.b.b+=sD;for(k=0;k<a.c.length;k=k+10){if(k>0){h.b.b+=tD;d.b.b+=tD}}h.b.b+=LB;d.b.b+=LB;i=new gy;f=new gy;g=new gy;e=new gy;b=new gy;c=new gy;for(k=0;k<a.c.length;++k){l=pi(hA(a.b,k),48);k==a.q&&(j=true);k==a.q+a.o.length&&(j=false);k==a.u&&(j=true);k==a.u+a.t.length&&(j=false);cy(i,qv(a,k,Ux(l.c),l.i,j).c);cy(f,qv(a,k,uD,l.i,j).c);cy(g,qv(a,k,iw(l),l.i,j).c);cy(e,qv(a,k,Ux(l.c),l.i,j).b);cy(b,qv(a,k,uD,l.i,j).b);cy(c,qv(a,k,iw(l),l.i,j).b)}h.b.b+="5'-<span id='dna-strand'>";cy(h,i.b.b+"<\/EM><\/span>-3'\n "+f.b.b+"<\/EM>\n3'-"+g.b.b);h.b.b+="<\/EM>-5'\n";d.b.b+=rD;cy(d,e.b.b+"-3'\n "+b.b.b+"\n3'-"+c.b.b);d.b.b+="-5'\n";return new gw(h.b.b,d.b.b)} +function yp(){sp=BB(function(a){if(!xo(a)){a.stopPropagation();a.preventDefault();return false}return true});vp=BB(function(a){var b,c=this;while(c&&!(b=c.__listener)){c=c.parentNode}c&&c.nodeType!=1&&(c=null);b&&qp(b)&&wo(a,c,b)});up=BB(function(a){a.preventDefault();vp.call(this,a)});wp=BB(function(a){this.__gwtLastUnhandledEvent=a.type;vp.call(this,a)});tp=BB(function(a){var b=sp;if(b(a)){var c=rp;if(c&&c.__listener){if(qp(c.__listener)){wo(a,c,c.__listener);a.stopPropagation()}}}});$wnd.addEventListener(TB,tp,true);$wnd.addEventListener(gC,tp,true);$wnd.addEventListener(UB,tp,true);$wnd.addEventListener(YB,tp,true);$wnd.addEventListener(VB,tp,true);$wnd.addEventListener(XB,tp,true);$wnd.addEventListener(WB,tp,true);$wnd.addEventListener(lC,tp,true);$wnd.addEventListener(hC,sp,true);$wnd.addEventListener(jC,sp,true);$wnd.addEventListener(iC,sp,true);$wnd.addEventListener(bC,tp,true);$wnd.addEventListener(aC,tp,true);$wnd.addEventListener($B,tp,true);$wnd.addEventListener(ZB,tp,true);$wnd.addEventListener(mC,tp,true);$wnd.addEventListener(nC,tp,true);$wnd.addEventListener(oC,tp,true)} +function Bp(a,b){var c=(a.__eventBits||0)^b;a.__eventBits=b;if(!c)return;c&1&&(a.onclick=b&1?vp:null);c&2&&(a.ondblclick=b&2?vp:null);c&4&&(a.onmousedown=b&4?vp:null);c&8&&(a.onmouseup=b&8?vp:null);c&16&&(a.onmouseover=b&16?vp:null);c&32&&(a.onmouseout=b&32?vp:null);c&64&&(a.onmousemove=b&64?vp:null);c&128&&(a.onkeydown=b&128?vp:null);c&256&&(a.onkeypress=b&256?vp:null);c&512&&(a.onkeyup=b&512?vp:null);c&1024&&(a.onchange=b&1024?vp:null);c&2048&&(a.onfocus=b&2048?vp:null);c&4096&&(a.onblur=b&4096?vp:null);c&8192&&(a.onlosecapture=b&8192?vp:null);c&16384&&(a.onscroll=b&16384?vp:null);c&32768&&(a.onload=b&32768?wp:null);c&65536&&(a.onerror=b&65536?vp:null);c&131072&&(a.onmousewheel=b&131072?vp:null);c&262144&&(a.oncontextmenu=b&262144?vp:null);c&524288&&(a.onpaste=b&524288?vp:null);c&1048576&&(a.ontouchstart=b&1048576?vp:null);c&2097152&&(a.ontouchmove=b&2097152?vp:null);c&4194304&&(a.ontouchend=b&4194304?vp:null);c&8388608&&(a.ontouchcancel=b&8388608?vp:null);c&16777216&&(a.ongesturestart=b&16777216?vp:null);c&33554432&&(a.ongesturechange=b&33554432?vp:null);c&67108864&&(a.ongestureend=b&67108864?vp:null)} +function av(a){if(Ix(a,'UUU'))return $C;if(Ix(a,'UUC'))return $C;if(Ix(a,'UUA'))return _C;if(Ix(a,'UUG'))return _C;if(Ix(a,'CUU'))return _C;if(Ix(a,'CUC'))return _C;if(Ix(a,'CUA'))return _C;if(Ix(a,'CUG'))return _C;if(Ix(a,'AUU'))return aD;if(Ix(a,'AUC'))return aD;if(Ix(a,'AUA'))return aD;if(Ix(a,bD))return 'Met';if(Ix(a,'GUU'))return cD;if(Ix(a,'GUC'))return cD;if(Ix(a,'GUA'))return cD;if(Ix(a,'GUG'))return cD;if(Ix(a,'UCU'))return dD;if(Ix(a,'UCC'))return dD;if(Ix(a,'UCA'))return dD;if(Ix(a,'UCG'))return dD;if(Ix(a,'CCU'))return eD;if(Ix(a,'CCC'))return eD;if(Ix(a,'CCA'))return eD;if(Ix(a,'CCG'))return eD;if(Ix(a,'ACU'))return fD;if(Ix(a,'ACC'))return fD;if(Ix(a,'ACA'))return fD;if(Ix(a,'ACG'))return fD;if(Ix(a,'GCU'))return gD;if(Ix(a,'GCC'))return gD;if(Ix(a,'GCA'))return gD;if(Ix(a,'GCG'))return gD;if(Ix(a,'UAU'))return hD;if(Ix(a,'UAC'))return hD;if(Ix(a,'UAA'))return HB;if(Ix(a,'UAG'))return HB;if(Ix(a,'CAU'))return iD;if(Ix(a,'CAC'))return iD;if(Ix(a,'CAA'))return jD;if(Ix(a,'CAG'))return jD;if(Ix(a,'AAU'))return kD;if(Ix(a,'AAC'))return kD;if(Ix(a,'AAA'))return lD;if(Ix(a,'AAG'))return lD;if(Ix(a,'GAU'))return mD;if(Ix(a,'GAC'))return mD;if(Ix(a,'GAA'))return nD;if(Ix(a,'GAG'))return nD;if(Ix(a,'UGU'))return oD;if(Ix(a,'UGC'))return oD;if(Ix(a,'UGA'))return HB;if(Ix(a,'UGG'))return 'Trp';if(Ix(a,'CGU'))return pD;if(Ix(a,'CGC'))return pD;if(Ix(a,'CGA'))return pD;if(Ix(a,'CGG'))return pD;if(Ix(a,'AGU'))return dD;if(Ix(a,'AGC'))return dD;if(Ix(a,'AGA'))return pD;if(Ix(a,'AGG'))return pD;if(Ix(a,'GGU'))return qD;if(Ix(a,'GGC'))return qD;if(Ix(a,'GGA'))return qD;if(Ix(a,'GGG'))return qD;return HB} +--></script> +<script><!-- +var HB='',LB='\n',MB=' ',sD=' ',tD=' . |',xD=' N-',JB='(',fC=')',RD='+',_D=', ',wC='-',HD="-3'\n",CD='-C',PC='0',EC='0px',XC='1',rD="5'-",$D=':',GB=': ',yD='<\/EM>',DD='<\/pre><h3>',zD='<\/u>',FD='<EM class=',BD='<EM class=selected>',vD='<font color=red>none<\/font>\n',AD='<u>',SD='=',GD='>',MD='A',XD='AAAAAAAAAAAAA',bD='AUG',gD='Ala',pD='Arg',kD='Asn',mD='Asp',OD='C',WD='CAAAG',PB='CENTER',OB='CSS1Compat',oD='Cys',kC='DOMMouseScroll',ND='G',UD='GGGGG',VD='GUGCG',jD='Gln',nD='Glu',qD='Gly',iD='His',ID='INCORRECT',aD='Ile',QB='JUSTIFY',RB='LEFT',_C='Leu',lD='Lys',uC='Null widget handle. If you are creating a composite, ensure that initWidget() has been called.',JD='OK',$C='Phe',eD='Pro',SB='RIGHT',MC='Selected Base = ',dD='Ser',IB='String',vC='Style names cannot be empty',PD='T',TD='TATAA',fD='Thr',hD='Tyr',hE='UmbrellaException',cD='Val',YD='You did not make a single base substitution.',qE='[Lcom.google.gwt.dom.client.',lE='[Lcom.google.gwt.user.client.ui.',cE='[Ljava.lang.',SC='absolute',NC='align',UC='auto',IC='cellPadding',HC='cellSpacing',tC='className',TB='click',jE='com.google.gwt.animation.client.',bE='com.google.gwt.core.client.',mE='com.google.gwt.core.client.impl.',pE='com.google.gwt.dom.client.',oE='com.google.gwt.event.dom.client.',rE='com.google.gwt.event.logical.shared.',iE='com.google.gwt.event.shared.',fE='com.google.gwt.i18n.client.',sE='com.google.gwt.text.shared.testing.',tE='com.google.gwt.touch.client.',kE='com.google.gwt.user.client.',wE='com.google.gwt.user.client.impl.',eE='com.google.gwt.user.client.ui.',gE='com.google.web.bindery.event.shared.',gC='dblclick',cC='dir',QC='display',_B='div',qC='dragexit',pC='dragleave',KB='function',QD='g',eC='gecko1_8',LD='genex-button',dE='genex.client.gx.',vE='genex.client.problems.',uE='genex.client.requirements.',KD='genex_container',nC='gesturechange',oC='gestureend',mC='gesturestart',sC='height',FB='hidden',aE='java.lang.',nE='java.util.',hC='keydown',iC='keypress',jC='keyup',xC='left',dC='ltr',ED='mature-',UB='mousedown',VB='mousemove',WB='mouseout',XB='mouseover',YB='mouseup',lC='mousewheel',ZC='msie',RC='none',wD='none\n',CB='offsetHeight',DB='offsetWidth',YC='opera',EB='overflow',LC='popupContent',zC='position',DC='px',TC='px, ',FC='rect(0px, 0px, 0px, 0px)',VC='relative',NB='rtl',AC='table',BC='tbody',KC='td',yC='top',ZB='touchcancel',$B='touchend',aC='touchmove',bC='touchstart',JC='tr',ZD='value',OC='verticalAlign',CC='visibility',GC='visible',rC='width',WC='zoom',uD='|';var _,Xm={},oB={25:1,27:1},yB={60:1},jB={6:1,9:1,50:1,53:1,54:1},eB={50:1},aB={},tB={46:1},wB={52:1},AB={50:1,57:1},bB={2:1},qB={24:1,29:1,37:1,40:1,41:1,43:1,45:1},xB={58:1},uB={11:1,27:1},lB={29:1},fB={50:1,56:1},mB={47:1,50:1,56:1},iB={6:1,8:1,50:1,53:1,54:1},zB={59:1},hB={6:1,7:1,50:1,53:1,54:1},gB={5:1,6:1,50:1,53:1,54:1},pB={23:1,27:1},sB={44:1,50:1,53:1,54:1},cB={4:1,50:1},nB={27:1,36:1},dB={38:1},rB={24:1,29:1,37:1,40:1,41:1,42:1,43:1,45:1},vB={49:1},kB={10:1,50:1,53:1,54:1};Ym(1,-1,aB);_.eQ=function s(a){return this===a};_.gC=function t(){return this.cZ};_.hC=function u(){return Sb(this)};_.tS=function v(){return this.cZ.d+'@'+vx(this.hC())};_.toString=function(){return this.tS()};_.tM=_A;Ym(3,1,{});_.n=-1;_.o=null;_.p=false;_.q=false;_.r=null;_.s=-1;_.t=null;_.u=-1;_.v=false;Ym(4,1,{},C);_.J=function D(a){B(this,a)};_.b=null;Ym(5,1,{});Ym(6,1,bB);Ym(7,5,{});var H=null;Ym(8,7,{},L);_.M=function M(){return !!$wnd.mozRequestAnimationFrame};_.K=function N(a,b){var c;c=new P;K(a,c);return c};Ym(9,6,bB,P);_.L=function Q(){this.b=true};_.b=false;Ym(10,7,{},U);_.M=function V(){return true};_.K=function W(a,b){var c;c=new jb(this,a);fA(this.b,c);this.b.c==1&&bb(this.c,16);return c};Ym(12,1,dB);_.N=function fb(){this.c||kA(Z,this);this.O()};_.c=false;_.d=0;var Z;Ym(11,12,dB,gb);_.O=function hb(){T(this.b)};_.b=null;Ym(13,6,{2:1,3:1},jb);_.L=function kb(){S(this.c,this)};_.b=null;_.c=null;Ym(14,1,{},nb);Ym(19,1,fB);_.P=function ub(){return this.f};_.tS=function vb(){var a,b;a=this.cZ.d;b=this.P();return b!=null?a+GB+b:a};_.f=null;Ym(18,19,fB);Ym(17,18,fB,wb);Ym(16,17,fB,yb);_.P=function Eb(){this.d==null&&(this.e=Bb(this.c),this.b=this.b+GB+zb(this.c),this.d=JB+this.e+') '+Db(this.c)+this.b,undefined);return this.d};_.b=HB;_.c=null;_.d=null;_.e=null;Ym(23,1,{});var Jb=0,Kb=0,Lb=0,Mb=-1;Ym(25,23,{},cc);_.b=null;_.c=null;_.d=null;_.e=false;_.f=null;_.g=null;_.i=null;_.j=false;var Wb;Ym(26,1,{},jc);_.Q=function kc(){this.b.e=true;$b(this.b);this.b.e=false;return this.b.j=_b(this.b)};_.b=null;Ym(27,1,{},mc);_.Q=function nc(){this.b.e&&hc(this.b.f,1);return this.b.j};_.b=null;Ym(32,1,{});Ym(33,32,{},zc);_.b=HB;Ym(47,1,{50:1,53:1,54:1});_.eQ=function kd(a){return this===a};_.hC=function ld(){return Sb(this)};_.tS=function md(){return this.b};_.b=null;_.c=0;Ym(46,47,gB);var nd,od,pd,qd,rd;Ym(48,46,gB,vd);Ym(49,46,gB,xd);Ym(50,46,gB,zd);Ym(51,46,gB,Bd);Ym(52,47,hB);var Dd,Ed,Fd,Gd,Hd;Ym(53,52,hB,Ld);Ym(54,52,hB,Nd);Ym(55,52,hB,Pd);Ym(56,52,hB,Rd);Ym(57,47,iB);var Td,Ud,Vd,Wd,Xd;Ym(58,57,iB,_d);Ym(59,57,iB,be);Ym(60,57,iB,de);Ym(61,57,iB,fe);Ym(62,47,jB);var he,ie,je,ke,le;Ym(63,62,jB,pe);Ym(64,62,jB,re);Ym(65,62,jB,te);Ym(66,62,jB,ve);Ym(67,47,kB);var xe,ye,ze,Ae,Be,Ce,De,Ee,Fe,Ge;Ym(68,67,kB,Ke);Ym(69,67,kB,Me);Ym(70,67,kB,Oe);Ym(71,67,kB,Qe);Ym(72,67,kB,Se);Ym(73,67,kB,Ue);Ym(74,67,kB,We);Ym(75,67,kB,Ye);Ym(76,67,kB,$e);Ym(82,1,{});_.tS=function ff(){return 'An event type'};_.g=null;Ym(81,82,{});_.U=function hf(){this.f=false;this.g=null};_.f=false;Ym(80,81,{});_.T=function nf(){return this.V()};_.b=null;_.c=null;var jf=null;Ym(79,80,{});Ym(78,79,{});Ym(77,78,{},sf);_.S=function tf(a){pi(a,11).W(this)};_.V=function uf(){return qf};var qf;Ym(85,1,{});_.hC=function zf(){return this.d};_.tS=function Af(){return 'Event type'};_.d=0;var yf=0;Ym(84,85,{},Bf);Ym(83,84,{12:1},Cf);_.b=null;_.c=null;Ym(86,78,{},Hf);_.S=function If(a){Gf(this,pi(a,13))};_.V=function Jf(){return Ef};var Ef;Ym(87,78,{},Of);_.S=function Pf(a){Nf(this,pi(a,14))};_.V=function Qf(){return Lf};var Lf;Ym(88,78,{},Uf);_.S=function Vf(a){pi(pi(a,15),39)};_.V=function Wf(){return Sf};var Sf;Ym(89,78,{},$f);_.S=function _f(a){pi(pi(a,16),39)};_.V=function ag(){return Yf};var Yf;Ym(90,78,{},fg);_.S=function gg(a){eg(this,pi(a,17))};_.V=function hg(){return cg};var cg;Ym(91,1,{},lg);_.b=null;Ym(94,79,{});var og=null;Ym(93,94,{},rg);_.S=function sg(a){Jn(pi(pi(a,18),34).b)};_.V=function tg(){return pg};var pg;Ym(95,94,{},xg);_.S=function yg(a){Jn(pi(pi(a,19),33).b)};_.V=function zg(){return vg};var vg;Ym(96,1,{},Bg);Ym(97,94,{},Gg);_.S=function Hg(a){Fg(this,pi(a,20))};_.V=function Ig(){return Dg};var Dg;Ym(98,94,{},Ng);_.S=function Og(a){Mg(this,pi(a,21))};_.V=function Pg(){return Kg};var Kg;Ym(99,81,{},Tg);_.S=function Ug(a){Sg(this,pi(a,22))};_.T=function Wg(){return Rg};_.b=false;var Rg=null;Ym(100,81,{},Zg);_.S=function $g(a){pi(a,23).X(this)};_.T=function ah(){return Yg};var Yg=null;Ym(101,81,{},dh);_.S=function eh(a){pi(a,25).Y(this)};_.T=function gh(){return ch};_.b=0;var ch=null;Ym(102,81,{},kh);_.S=function lh(a){jh(pi(a,26))};_.T=function nh(){return ih};var ih=null;Ym(103,1,lB,sh,th);_.Z=function uh(a){qh(this,a)};_.b=null;_.c=null;Ym(106,1,{});Ym(105,106,{});_.b=null;_.c=0;_.d=false;Ym(104,105,{},Jh);Ym(107,1,{28:1},Lh);_.b=null;Ym(109,17,mB,Oh);_.b=null;Ym(108,109,mB,Rh);Ym(110,1,{27:1},Th);Ym(112,47,{30:1,50:1,53:1,54:1},ai);var Xh,Yh,Zh,$h;Ym(113,1,{},ci);_.qI=0;var ii,ji;Ym(122,1,{});Ym(123,1,{},cn);var bn=null;Ym(124,122,{},fn);var en=null;Ym(125,1,{},kn);Ym(126,1,{},pn);_.b=0;_.c=0;_.d=null;_.e=null;_.f=null;Ym(127,1,{32:1},un,vn);_.eQ=function wn(a){var b;if(!ri(a,32)){return false}b=pi(a,32);return this.b==b.b&&this.c==b.c};_.hC=function xn(){return vi(this.b)^vi(this.c)};_.tS=function yn(){return 'Point('+this.b+','+this.c+fC};_.b=0;_.c=0;Ym(128,1,{},Sn);_.b=null;_.c=null;_.d=false;_.g=null;_.i=null;_.o=null;_.p=null;_.q=null;_.s=false;_.t=null;var An=null;Ym(129,1,{22:1,27:1},Un);_.b=null;Ym(130,1,{21:1,27:1},Wn);_.b=null;Ym(131,1,{20:1,27:1},Yn);_.b=null;Ym(132,1,{19:1,27:1,33:1},$n);_.b=null;Ym(133,1,{18:1,27:1,34:1},ao);_.b=null;Ym(134,1,nB,co);_.$=function eo(a){var b;if(1==np(a.e.type)){b=new un(a.e.clientX||0,a.e.clientY||0);if(Gn(this.b,b)||Hn(this.b,b)){a.b=true;a.e.stopPropagation();a.e.preventDefault()}}};_.b=null;Ym(135,1,{},ho);_.Q=function io(){var a,b,c,d,e,f,g;if(this!=this.f.i){go(this);return false}a=mb(this.b);nn(this.e,a-this.d);this.d=a;mn(this.e,a);e=jn(this.e);e||go(this);Qn(this.f,this.e.e);d=vi(this.e.e.b);c=Dt(this.f.t);b=Bt(this.f.t);f=Ct(this.f.t);g=vi(this.e.e.c);if((f<=g||0>=g)&&(b<=d||c>=d)){go(this);return false}return e};_.d=0;_.e=null;_.f=null;_.g=null;Ym(136,1,oB,ko);_.Y=function lo(a){go(this.b)};_.b=null;Ym(137,1,{},no);_.Q=function oo(){var a,b,c;a=ob();b=new Nz(this.b.r);while(b.c<b.e.Db()){c=pi(Lz(b),35);a-c.c>=2500&&Mz(b)}return this.b.r.c!=0};_.b=null;Ym(138,1,{35:1},ro,so);_.b=null;_.c=0;var to=null,uo=null;var Co=null;Ym(143,81,{},Jo);_.S=function Ko(a){pi(a,36).$(this);Go.d=false};_.T=function Mo(){return Fo};_.U=function No(){Ho(this)};_.b=false;_.c=false;_.d=false;_.e=null;var Fo=null,Go=null;var Oo=null;Ym(145,1,pB,So);_.X=function To(a){while(($(),Z).c>0){ab(pi(hA(Z,0),38))}};var Uo=false,Vo=null,Wo=0,Xo=0,Yo=false;Ym(147,81,{},hp);_.S=function ip(a){wi(a);null.Nb()};_.T=function jp(){return fp};var fp;Ym(148,103,lB,lp);var mp=false;var rp=null,sp=null,tp=null,up=null,vp=null,wp=null;Ym(152,1,lB);_.ab=function Hp(a){return decodeURI(a.replace('%23','#'))};_.Z=function Ip(a){qh(this.b,a)};_.bb=function Jp(a){a=a==null?HB:a;if(!Ix(a,Fp==null?HB:Fp)){Fp=a;mh(this)}};var Fp=HB;Ym(154,152,lB);Ym(153,154,lB,Op);_.ab=function Pp(a){return a};Ym(160,1,{40:1,43:1});_.cb=function aq(){return this.I};_.db=function bq(a){Ao(this.I,sC,a)};_.eb=function eq(a){Ao(this.I,rC,a)};_.tS=function fq(){if(!this.I){return '(null handle)'}return Zc(this.I)};_.I=null;Ym(159,160,qB);_.fb=function pq(){};_.gb=function qq(){};_.Z=function rq(a){jq(this,a)};_.hb=function sq(){kq(this)};_._=function tq(a){lq(this,a)};_.ib=function uq(){mq(this)};_.jb=function vq(){};_.kb=function wq(){};_.E=false;_.F=0;_.G=null;_.H=null;Ym(158,159,qB);_.fb=function yq(){Oq(this,(Mq(),Kq))};_.gb=function zq(){Oq(this,(Mq(),Lq))};Ym(157,158,qB);_.mb=function Dq(){return new Eu(this.g)};_.lb=function Eq(a){return Bq(this,a)};Ym(156,157,qB);_.lb=function Iq(a){return Gq(this,a)};Ym(161,108,mB,Nq);var Kq,Lq;Ym(162,1,{},Qq);_.nb=function Rq(a){a.hb()};Ym(163,1,{},Tq);_.nb=function Uq(a){a.ib()};Ym(166,159,qB);_.hb=function Yq(){var a;kq(this);a=this.I.tabIndex;-1==a&&(this.I.tabIndex=0,undefined)};Ym(165,166,qB);Ym(164,165,qB,$q);Ym(167,157,qB);_.e=null;_.f=null;Ym(170,158,qB);_.ob=function ir(){return this.I};_.mb=function jr(){return new Pt(this)};_.lb=function kr(a){return er(this,a)};_.D=null;Ym(169,170,qB);_.ob=function vr(){return Lu(Mc(this.I))};_.cb=function wr(){return Mu(Mc(this.I))};_.pb=function xr(){or(this)};_.$=function yr(a){a.d&&(a.e,false)&&(a.b=true)};_.kb=function zr(){this.B&&Xs(this.A,false,true)};_.db=function Ar(a){this.p=a;pr(this);a.length==0&&(this.p=null)};_.eb=function Br(a){this.q=a;pr(this);a.length==0&&(this.q=null)};_.n=false;_.o=false;_.p=null;_.q=null;_.r=null;_.t=null;_.u=false;_.v=false;_.w=-1;_.x=false;_.y=null;_.z=false;_.B=false;_.C=-1;Ym(168,169,qB);_.fb=function Dr(){kq(this.k)};_.gb=function Er(){mq(this.k)};_.mb=function Fr(){return new Pt(this.k)};_.lb=function Gr(a){return er(this.k,a)};_.k=null;Ym(171,170,qB,Jr);_.ob=function Lr(){return this.b};_.b=null;_.c=null;Ym(172,168,qB,Vr);_.fb=function Xr(){try{kq(this.k)}finally{kq(this.b)}};_.gb=function Yr(){try{mq(this.k)}finally{mq(this.b)}};_.pb=function Zr(){Qr(this)};_._=function $r(a){switch(np(a.type)){case 4:case 8:case 64:case 16:case 32:if(!this.g&&!Rr(this,a)){return}}lq(this,a)};_.$=function _r(a){var b;b=a.e;!a.b&&np(a.e.type)==4&&Rr(this,b)&&(b.preventDefault(),undefined);a.d&&(a.e,false)&&(a.b=true)};_.b=null;_.c=0;_.d=0;_.e=0;_.f=0;_.g=false;_.i=null;_.j=0;Ym(173,1,oB,bs);_.Y=function cs(a){this.b.j=a.b};_.b=null;Ym(177,159,qB);_.b=null;Ym(176,177,qB,ks);Ym(175,176,qB,ms,ns);Ym(174,175,qB,os);Ym(178,1,{13:1,14:1,15:1,16:1,17:1,27:1,39:1},qs);_.b=null;Ym(179,1,{},ts);_.b=null;_.c=null;_.d=null;var us,vs,ws;Ym(180,1,{});Ym(181,180,{},As);_.b=null;var Bs;Ym(182,1,{},Es);_.b=null;Ym(183,167,qB,Hs);_.lb=function Is(a){var b,c;c=Nc(a.I);b=Bq(this,a);b&&Bc(this.c,c);return b};_.c=null;Ym(184,1,oB,Ls);_.Y=function Ms(a){Ks()};Ym(185,1,nB,Os);_.$=function Ps(a){qr(this.b,a)};_.b=null;Ym(186,1,{26:1,27:1},Rs);_.b=null;Ym(187,3,{},Ys);_.b=null;_.c=false;_.d=false;_.e=0;_.f=-1;_.g=null;_.i=null;_.j=false;Ym(188,12,dB,$s);_.O=function _s(){this.b.i=null;x(this.b,ob())};_.b=null;Ym(190,156,rB,it);var et,ft,gt;Ym(191,1,{},nt);_.nb=function ot(a){a.E&&a.ib()};Ym(192,1,pB,qt);_.X=function rt(a){kt()};Ym(193,190,rB,tt);Ym(194,1,{},zt);var vt=null;Ym(195,170,qB,Ht);_.ob=function It(){return this.b};_.hb=function Jt(){kq(this);this.c.__listener=this};_.ib=function Kt(){this.c.__listener=null;mq(this)};_.db=function Lt(a){Ao(this.I,sC,a)};_.eb=function Mt(a){Ao(this.I,rC,a)};_.b=null;_.c=null;_.d=null;Ym(196,1,{},Pt);_.qb=function Qt(){return this.b};_.rb=function Rt(){return Ot(this)};_.sb=function St(){!!this.c&&this.d.lb(this.c)};_.c=null;_.d=null;Ym(199,166,qB);_._=function Xt(a){var b;b=np(a.type);(b&896)!=0?lq(this,a):lq(this,a)};_.jb=function Yt(){};Ym(198,199,qB);Ym(197,198,qB,$t);Ym(200,47,sB);var bu,cu,du,eu,fu;Ym(201,200,sB,ju);Ym(202,200,sB,lu);Ym(203,200,sB,nu);Ym(204,200,sB,pu);Ym(205,167,qB,su);_.lb=function tu(a){var b,c;c=Nc(a.I);b=Bq(this,a);b&&Bc(this.e,Nc(c));return b};Ym(206,1,{},Au);_.mb=function Bu(){return new Eu(this)};_.b=null;_.c=null;_.d=0;Ym(207,1,{},Eu);_.qb=function Fu(){return this.b<this.c.d-1};_.rb=function Gu(){return Du(this)};_.sb=function Hu(){if(this.b<0||this.b>=this.c.d){throw new qx}this.c.c.lb(this.c.b[this.b--])};_.b=-1;_.c=null;var Iu;Ym(210,1,{},Qu);_.R=function Ru(){this.b.style[EB]=(Id(),UC)};_.b=null;Ym(213,1,{},Vu);_.b=null;_.c=null;_.d=null;Ym(214,1,tB,Xu);_.R=function Yu(){Ah(this.b,this.d,this.c)};_.b=null;_.c=null;_.d=null;Ym(215,1,tB,$u);_.R=function _u(){Ch(this.b,this.d,this.c)};_.b=null;_.c=null;_.d=null;Ym(217,1,{},dv);_.b=0;Ym(218,1,{},fv);_.b=0;_.c=0;_.d=0;Ym(219,1,{},vv);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;_.g=0;_.i=0;_.j=0;_.k=null;_.n=null;_.o=null;_.p=0;_.q=0;_.r=null;_.s=null;_.t=null;_.u=0;Ym(220,1,{},Gv);_.tb=function Hv(a){var b,c;if(a==39){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1);b=Cv(this,this.b,this.e);Fv(this,b,this.e);this.c=b.c.c.length;b.c.g+1;xv(this)}if(a==37){--this.e;this.e<0&&(this.e=0);b=Cv(this,this.b,this.e);Fv(this,b,this.e);this.c=b.c.c.length;b.c.g+1;xv(this)}if(a==8||a==46){this.B=this.f;c=new hy(this.b);dy(c,this.e);this.b=c.b.b;this.e>=0&&--this.e;b=Cv(this,this.b,this.e);Fv(this,b,this.e);this.f=pv(b.c);this.c=b.c.c.length;xv(this)}};_.ub=function Iv(a,b){var c,d;if(Ix(a,MD)||Ix(a,ND)||Ix(a,OD)||Ix(a,PD)){this.B=this.f;d=new hy(this.b);ey(d,this.e,a);this.b=d.b.b;++this.e;c=Cv(this,this.b,this.e);Fv(this,c,this.e);this.f=pv(c.c);this.c=c.c.c.length;c.c.g+1;xv(this)}if(Ix(a,'a')||Ix(a,QD)||Ix(a,'c')||Ix(a,'t')){this.B=this.f;d=new hy(this.b);fy(d,this.e,this.e+1,a.toUpperCase());this.b=d.b.b;c=Cv(this,this.b,this.e);Fv(this,c,this.e);this.f=pv(c.c);this.c=c.c.c.length;c.c.g+1;xv(this)}if(Ix(a,RD)||Ix(a,wC)||Ix(a,SD)||Ix(a,'_')){if(Ix(a,RD)||Ix(a,SD)){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1)}else{--this.e;this.e<0&&(this.e=0)}c=Cv(this,this.b,this.e);Fv(this,c,this.e);this.c=c.c.c.length;c.c.g+1;xv(this)}if(b==39){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1);c=Cv(this,this.b,this.e);Fv(this,c,this.e);this.c=c.c.c.length;c.c.g+1;xv(this)}if(b==37){--this.e;this.e<0&&(this.e=0);c=Cv(this,this.b,this.e);Fv(this,c,this.e);this.c=c.c.c.length;c.c.g+1;xv(this)}};_.vb=function Jv(a){var b;if(a>=0&&a<=this.c){b=Cv(this,this.b,a);Fv(this,b,a);this.c=b.c.c.length;this.e=a;xv(this)}};_.wb=function Lv(a){var b;a!=null&&dw(this.z,a);this.z.f=TD;this.z.i=UD;this.z.d=VD;this.z.c=WD;this.z.e=XD;this.g=this.z.b;this.b=this.z.b;this.c=this.b.length;this.D=this.z.f;this.E=this.z.g;this.H=this.z.i;this.v=this.z.d;this.u=this.z.c;this.A=this.z.e;(Ix(this.v,RC)||Ix(this.u,RC))&&(this.A=HB);b=Cv(this,this.g,-1);this.i=b.c.f;this.j=b.c.r;this.c=b.c.c.length;this.f=pv(b.c);ls(this.s,b.b.c+'<\/pre><\/body><\/html>')};_.xb=function Nv(a){var b,c,d,e,f;this.C=new uw;if(a==1){b=new Sw;b.c=YD;sw(this.C,b);d=new Pw;d.c='Your change does not make the mature mRNA shorter.';sw(this.C,d)}else if(a==2){b=new Sw;b.c=YD;sw(this.C,b);d=new Aw;d.c='Your change does not make the protein longer.';sw(this.C,d)}else if(a==3){b=new Sw;b.c=YD;sw(this.C,b);d=new Mw;d.c='Your change does not make the protein shorter.';sw(this.C,d)}else if(a==4){b=new Sw;b.c=YD;sw(this.C,b);d=new Gw;d.c='Your change does not prevent mRNA from being made.';sw(this.C,d);f=new Dw;f.c='Your change does not prevent protein from being made';sw(this.C,f)}else if(a==5){c=new Jw;c.b=c.b;c.c='Your protein does not have 5 amino acids.';sw(this.C,c);e=new xw;e.b=1;e.c='Your gene does not contain one intron.';sw(this.C,e)}};_.b=null;_.c=0;_.d=null;_.e=0;_.f=HB;_.g=null;_.i=HB;_.j=HB;_.k=null;_.n=null;_.o=false;_.p=null;_.q=null;_.r=null;_.s=null;_.t=null;_.u=null;_.v=null;_.w=null;_.x=null;_.y=null;_.A=null;_.B=HB;_.C=null;_.D=null;_.E=0;_.F=null;_.G=null;_.H=null;_.I=null;Ym(221,1,uB,Qv);_.W=function Rv(a){Qr(this.b.k);this.b.p.I[ZD]=HB};_.b=null;Ym(222,1,{},Tv);_.R=function Uv(){zv(this.b);yv(this.b);Av(this.b);Bv(this.b);typeof $wnd.genexIsReady===KB&&$wnd.genexIsReady()};_.b=null;Ym(223,1,uB,Wv);_.W=function Xv(a){var b,c;this.b.B=this.b.f;c=Hc(this.b.p.I,ZD);c=c.toUpperCase();c=Mx(c,'[^AGCT]',HB);this.b.b=c;this.b.e=-1;b=Cv(this.b,this.b.b,-1);Fv(this.b,b,-1);this.b.f=pv(b.c);this.b.c=b.c.c.length;Qr(this.b.k);xv(this.b)};_.b=null;Ym(224,1,uB,Zv);_.W=function $v(a){var b;this.b.b=this.b.g;b=Cv(this.b,this.b.b,-1);Fv(this.b,b,-1);this.b.f=pv(b.c);this.b.c=b.c.c.length;xv(this.b)};_.b=null;Ym(225,1,uB,aw);_.W=function bw(a){mr(this.b.k)};_.b=null;Ym(226,1,{},ew);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;_.g=0;_.i=null;Ym(227,1,{},gw);_.b=null;_.c=null;Ym(228,1,{48:1},kw);_.b=0;_.c=0;_.d=false;_.e=false;_.f=0;_.g=0;_.i=false;Ym(229,1,{},mw);_.b=null;_.c=null;Ym(230,1,{},pw);_.tS=function qw(){return ow(this)};_.b=null;_.c=0;_.d=null;_.e=null;_.f=0;_.g=null;_.i=null;_.j=null;Ym(231,1,{},uw);_.b=null;Ym(233,1,vB);_.c='unassigned';Ym(232,233,vB,xw);_.yb=function yw(a){return a.c==this.b+1};_.b=0;Ym(234,233,vB,Aw);_.yb=function Bw(a){return a.d.length>a.j.length};Ym(235,233,vB,Dw);_.yb=function Ew(a){return Ix(a.d,HB)};Ym(236,233,vB,Gw);_.yb=function Hw(a){return Ix(a.e,HB)};Ym(237,233,vB,Jw);_.yb=function Kw(a){return a.d.length==this.b};_.b=0;Ym(238,233,vB,Mw);_.yb=function Nw(a){return a.d.length<a.j.length};Ym(239,233,vB,Pw);_.yb=function Qw(a){return a.e.length<a.i.length};Ym(240,233,vB,Sw);_.yb=function Tw(a){var b,c,d,e;e=a.g;b=a.b;if(e.length!=b.length)return false;d=0;for(c=0;c<e.length;++c){e.charCodeAt(c)!=b.charCodeAt(c)&&++d}if(d==1)return true;return false};Ym(241,17,fB,Vw);Ym(242,1,{50:1,51:1,53:1},$w);_.eQ=function _w(a){return ri(a,51)&&pi(a,51).b==this.b};_.hC=function ax(){return this.b?1231:1237};_.tS=function bx(){return this.b?'true':'false'};_.b=false;var Xw,Yw;Ym(243,1,{},dx);_.tS=function kx(){return ((this.b&2)!=0?'interface ':(this.b&1)!=0?HB:'class ')+this.d};_.b=0;_.c=0;_.d=null;Ym(244,17,fB,mx);Ym(245,17,fB,ox);Ym(246,17,fB,qx,rx);Ym(247,17,fB,tx,ux);Ym(251,17,fB,zx,Ax);var Bx;Ym(253,1,{50:1,55:1},Ex);_.tS=function Fx(){return this.b+'.'+this.d+'(Unknown Source'+(this.c>=0?$D+this.c:HB)+fC};_.b=null;_.c=0;_.d=null;_=String.prototype;_.cM={1:1,50:1,52:1,53:1};_.eQ=function Sx(a){return Ix(this,a)};_.hC=function Tx(){return $x(this)};_.tS=_.toString;var Vx,Wx=0,Xx;Ym(255,1,wB,gy,hy);_.tS=function iy(){return this.b.b};Ym(256,1,wB,ly);_.tS=function my(){return this.b.b};Ym(257,17,fB,oy);Ym(258,1,{});_.zb=function sy(a){throw new oy('Add not supported on this collection')};_.Ab=function ty(a){var b;b=qy(this.mb(),a);return !!b};_.Bb=function uy(){return this.Db()==0};_.Cb=function vy(a){var b;b=qy(this.mb(),a);if(b){b.sb();return true}else{return false}};_.tS=function wy(){return ry(this)};Ym(260,1,xB);_.eQ=function Ay(a){var b,c,d,e,f;if(a===this){return true}if(!ri(a,58)){return false}e=pi(a,58);if(this.e!=e.e){return false}for(c=new gz((new $y(e)).b);Kz(c.b);){b=c.c=pi(Lz(c.b),59);d=b.Fb();f=b.Gb();if(!(d==null?this.d:ri(d,1)?$D+pi(d,1) in this.f:Ky(this,d,~~Hb(d)))){return false}if(!$A(f,d==null?this.c:ri(d,1)?Jy(this,pi(d,1)):Iy(this,d,~~Hb(d)))){return false}}return true};_.hC=function By(){var a,b,c;c=0;for(b=new gz((new $y(this)).b);Kz(b.b);){a=b.c=pi(Lz(b.b),59);c+=a.hC();c=~~c}return c};_.tS=function Cy(){var a,b,c,d;d='{';a=false;for(c=new gz((new $y(this)).b);Kz(c.b);){b=c.c=pi(Lz(c.b),59);a?(d+=_D):(a=true);d+=HB+b.Fb();d+=SD;d+=HB+b.Gb()}return d+'}'};Ym(259,260,xB);_.Eb=function Uy(a,b){return ui(a)===ui(b)||a!=null&&Gb(a,b)};_.b=null;_.c=null;_.d=false;_.e=0;_.f=null;Ym(262,258,yB);_.eQ=function Xy(a){var b,c,d;if(a===this){return true}if(!ri(a,60)){return false}c=pi(a,60);if(c.Db()!=this.Db()){return false}for(b=c.mb();b.qb();){d=b.rb();if(!this.Ab(d)){return false}}return true};_.hC=function Yy(){var a,b,c;a=0;for(b=this.mb();b.qb();){c=b.rb();if(c!=null){a+=Hb(c);a=~~a}}return a};Ym(261,262,yB,$y);_.Ab=function _y(a){return Zy(this,a)};_.mb=function az(){return new gz(this.b)};_.Cb=function bz(a){var b;if(Zy(this,a)){b=pi(a,59).Fb();Qy(this.b,b);return true}return false};_.Db=function cz(){return this.b.e};_.b=null;Ym(263,1,{},gz);_.qb=function hz(){return Kz(this.b)};_.rb=function iz(){return ez(this)};_.sb=function jz(){fz(this)};_.b=null;_.c=null;_.d=null;Ym(265,1,zB);_.eQ=function mz(a){var b;if(ri(a,59)){b=pi(a,59);if($A(this.Fb(),b.Fb())&&$A(this.Gb(),b.Gb())){return true}}return false};_.hC=function nz(){var a,b;a=0;b=0;this.Fb()!=null&&(a=Hb(this.Fb()));this.Gb()!=null&&(b=Hb(this.Gb()));return a^b};_.tS=function oz(){return this.Fb()+SD+this.Gb()};Ym(264,265,zB,pz);_.Fb=function qz(){return null};_.Gb=function rz(){return this.b.c};_.Hb=function sz(a){return Oy(this.b,a)};_.b=null;Ym(266,265,zB,uz);_.Fb=function vz(){return this.b};_.Gb=function wz(){return Jy(this.c,this.b)};_.Hb=function xz(a){return Py(this.c,this.b,a)};_.b=null;_.c=null;Ym(267,258,{57:1});_.Ib=function zz(a,b){throw new oy('Add not supported on this list')};_.zb=function Az(a){this.Ib(this.Db(),a);return true};_.eQ=function Cz(a){var b,c,d,e,f;if(a===this){return true}if(!ri(a,57)){return false}f=pi(a,57);if(this.Db()!=f.Db()){return false}d=new Nz(this);e=f.mb();while(d.c<d.e.Db()){b=Lz(d);c=Lz(e);if(!(b==null?c==null:Gb(b,c))){return false}}return true};_.hC=function Dz(){var a,b,c;b=1;a=new Nz(this);while(a.c<a.e.Db()){c=Lz(a);b=31*b+(c==null?0:Hb(c));b=~~b}return b};_.mb=function Fz(){return new Nz(this)};_.Kb=function Gz(){return new Tz(this,0)};_.Lb=function Hz(a){return new Tz(this,a)};_.Mb=function Iz(a){throw new oy('Remove not supported on this list')};Ym(268,1,{},Nz);_.qb=function Oz(){return Kz(this)};_.rb=function Pz(){return Lz(this)};_.sb=function Qz(){Mz(this)};_.c=0;_.d=-1;_.e=null;Ym(269,268,{},Tz);_.b=null;Ym(270,262,yB,Wz);_.Ab=function Xz(a){return Gy(this.b,a)};_.mb=function Yz(){return Vz(this)};_.Db=function Zz(){return this.c.b.e};_.b=null;_.c=null;Ym(271,1,{},aA);_.qb=function bA(){return Kz(this.b.b)};_.rb=function cA(){return _z(this)};_.sb=function dA(){fz(this.b)};_.b=null;Ym(272,267,AB,mA);_.Ib=function nA(a,b){(a<0||a>this.c)&&Ez(a,this.c);wA(this.b,a,0,b);++this.c};_.zb=function oA(a){return fA(this,a)};_.Ab=function pA(a){return iA(this,a,0)!=-1};_.Jb=function qA(a){return hA(this,a)};_.Bb=function rA(){return this.c==0};_.Mb=function sA(a){return jA(this,a)};_.Cb=function tA(a){return kA(this,a)};_.Db=function uA(){return this.c};_.c=0;var xA;Ym(274,267,AB,AA);_.Ab=function BA(a){return false};_.Jb=function CA(a){throw new tx};_.Db=function DA(){return 0};Ym(275,259,{50:1,58:1},GA);Ym(276,262,{50:1,60:1},LA);_.zb=function MA(a){return IA(this,a)};_.Ab=function NA(a){return Gy(this.b,a)};_.Bb=function OA(){return this.b.e==0};_.mb=function PA(){return Vz(zy(this.b))};_.Cb=function QA(a){return KA(this,a)};_.Db=function RA(){return this.b.e};_.tS=function SA(){return ry(zy(this.b))};_.b=null;Ym(277,265,zB,UA);_.Fb=function VA(){return this.b};_.Gb=function WA(){return this.c};_.Hb=function XA(a){var b;b=this.c;this.c=a;return b};_.b=null;_.c=null;Ym(278,17,fB,ZA);var BB=Pb; +--></script> +<script><!-- +var fm=fx(aE,'Object',1),Ji=fx(bE,'JavaScriptObject$',20),Rm=ex(cE,'Object;',280),lm=fx(aE,'Throwable',19),am=fx(aE,'Exception',18),gm=fx(aE,'RuntimeException',17),hm=fx(aE,'StackTraceElement',253),Sm=ex(cE,'StackTraceElement;',281),Vj=fx('com.google.gwt.lang.','SeedUtil',119),_l=fx(aE,'Enum',47),Hl=fx(dE,'GenexGWT',220),Dl=fx(dE,'GenexGWT$1',221),El=fx(dE,'GenexGWT$2',223),Fl=fx(dE,'GenexGWT$3',224),Gl=fx(dE,'GenexGWT$4',225),Cl=fx(dE,'GenexGWT$1DeferredCommand',222),Ki=fx(bE,'Scheduler',23),Yl=fx(aE,'Boolean',242),Hm=ex(HB,'[C',282),$l=fx(aE,'Class',243),km=fx(aE,IB,2),Tm=ex(cE,'String;',283),Zl=fx(aE,'ClassCastException',244),jm=fx(aE,'StringBuilder',256),Xl=fx(aE,'ArrayStoreException',241),Ii=fx(bE,'JavaScriptException',16),fl=fx(eE,'UIObject',160),pl=fx(eE,'Widget',159),Ok=fx(eE,'LabelBase',177),Pk=fx(eE,'Label',176),Jk=fx(eE,'HTML',175),Kk=fx(eE,'HasHorizontalAlignment$AutoHorizontalAlignmentConstant',180),Lk=fx(eE,'HasHorizontalAlignment$HorizontalAlignmentConstant',181),Uj=gx(fE,'HasDirection$Direction',112,bi),Om=ex('[Lcom.google.gwt.i18n.client.','HasDirection$Direction;',284),Qk=fx(eE,'Panel',158),cl=fx(eE,'SimplePanel',170),al=fx(eE,'ScrollPanel',195),bl=fx(eE,'SimplePanel$1',196),Ak=fx(eE,'ComplexPanel',157),tk=fx(eE,'AbsolutePanel',156),yl=fx(gE,hE,109),Sj=fx(iE,hE,108),wk=fx(eE,'AttachDetachException',161),uk=fx(eE,'AttachDetachException$1',162),vk=fx(eE,'AttachDetachException$2',163),$k=fx(eE,'RootPanel',190),Zk=fx(eE,'RootPanel$DefaultRootPanel',193),Xk=fx(eE,'RootPanel$1',191),Yk=fx(eE,'RootPanel$2',192),Wk=fx(eE,'PopupPanel',169),Bk=fx(eE,'DecoratedPopupPanel',168),Gk=fx(eE,'DialogBox',172),Ek=fx(eE,'DialogBox$CaptionImpl',174),Fk=fx(eE,'DialogBox$MouseHandler',178),Dk=fx(eE,'DialogBox$1',173),Gi=fx(jE,'Animation',3),Vk=fx(eE,'PopupPanel$ResizeAnimation',187),nk=fx(kE,'Timer',12),Uk=fx(eE,'PopupPanel$ResizeAnimation$1',188),Rk=fx(eE,'PopupPanel$1',184),Sk=fx(eE,'PopupPanel$3',185),Tk=fx(eE,'PopupPanel$4',186),xi=fx(jE,'Animation$1',4),Fi=fx(jE,'AnimationScheduler',5),yi=fx(jE,'AnimationScheduler$AnimationHandle',6),mk=fx(kE,'Timer$1',145),tl=fx(gE,'Event',82),Oj=fx(iE,'GwtEvent',81),lk=fx(kE,'Event$NativePreviewEvent',143),rl=fx(gE,'Event$Type',85),Nj=fx(iE,'GwtEvent$Type',84),zk=fx(eE,'CellPanel',167),ml=fx(eE,'VerticalPanel',205),Mk=fx(eE,'HasVerticalAlignment$VerticalAlignmentConstant',182),Ik=fx(eE,'FocusWidget',166),ll=fx(eE,'ValueBoxBase',199),dl=fx(eE,'TextBoxBase',198),el=fx(eE,'TextBox',197),kl=gx(eE,'ValueBoxBase$TextAlignment',200,hu),Pm=ex(lE,'ValueBoxBase$TextAlignment;',285),gl=gx(eE,'ValueBoxBase$TextAlignment$1',201,null),hl=gx(eE,'ValueBoxBase$TextAlignment$2',202,null),il=gx(eE,'ValueBoxBase$TextAlignment$3',203,null),jl=gx(eE,'ValueBoxBase$TextAlignment$4',204,null),Tj=fx(fE,'AutoDirectionHandler',110),xk=fx(eE,'ButtonBase',165),yk=fx(eE,'Button',164),Nk=fx(eE,'HorizontalPanel',183),Pi=fx(mE,'StringBufferImpl',32),Il=fx(dE,'GenexParams',226),zm=fx(nE,'AbstractMap',260),sm=fx(nE,'AbstractHashMap',259),Dm=fx(nE,'HashMap',275),nm=fx(nE,'AbstractCollection',258),Am=fx(nE,'AbstractSet',262),pm=fx(nE,'AbstractHashMap$EntrySet',261),om=fx(nE,'AbstractHashMap$EntrySetIterator',263),ym=fx(nE,'AbstractMapEntry',265),qm=fx(nE,'AbstractHashMap$MapEntryNull',264),rm=fx(nE,'AbstractHashMap$MapEntryString',266),xm=fx(nE,'AbstractMap$1',270),wm=fx(nE,'AbstractMap$1$1',271),Em=fx(nE,'HashSet',276),uj=fx(oE,'DomEvent',80),vj=fx(oE,'HumanInputEvent',79),xj=fx(oE,'MouseEvent',78),sj=fx(oE,'ClickEvent',77),tj=fx(oE,'DomEvent$Type',83),Ck=fx(eE,'DecoratorPanel',171),Ni=fx(mE,'SchedulerImpl',25),Li=fx(mE,'SchedulerImpl$Flusher',26),Mi=fx(mE,'SchedulerImpl$Rescuer',27),Oi=fx(mE,'StringBufferImplAppend',33),Hi=fx(bE,'Duration',14),rj=gx(pE,'Style$Unit',67,Ie),Nm=ex(qE,'Style$Unit;',286),Ui=gx(pE,'Style$Display',46,td),Jm=ex(qE,'Style$Display;',287),Zi=gx(pE,'Style$Overflow',52,Jd),Km=ex(qE,'Style$Overflow;',288),cj=gx(pE,'Style$Position',57,Zd),Lm=ex(qE,'Style$Position;',289),hj=gx(pE,'Style$TextAlign',62,ne),Mm=ex(qE,'Style$TextAlign;',290),ij=gx(pE,'Style$Unit$1',68,null),jj=gx(pE,'Style$Unit$2',69,null),kj=gx(pE,'Style$Unit$3',70,null),lj=gx(pE,'Style$Unit$4',71,null),mj=gx(pE,'Style$Unit$5',72,null),nj=gx(pE,'Style$Unit$6',73,null),oj=gx(pE,'Style$Unit$7',74,null),pj=gx(pE,'Style$Unit$8',75,null),qj=gx(pE,'Style$Unit$9',76,null),Qi=gx(pE,'Style$Display$1',48,null),Ri=gx(pE,'Style$Display$2',49,null),Si=gx(pE,'Style$Display$3',50,null),Ti=gx(pE,'Style$Display$4',51,null),Vi=gx(pE,'Style$Overflow$1',53,null),Wi=gx(pE,'Style$Overflow$2',54,null),Xi=gx(pE,'Style$Overflow$3',55,null),Yi=gx(pE,'Style$Overflow$4',56,null),$i=gx(pE,'Style$Position$1',58,null),_i=gx(pE,'Style$Position$2',59,null),aj=gx(pE,'Style$Position$3',60,null),bj=gx(pE,'Style$Position$4',61,null),dj=gx(pE,'Style$TextAlign$1',63,null),ej=gx(pE,'Style$TextAlign$2',64,null),fj=gx(pE,'Style$TextAlign$3',65,null),gj=gx(pE,'Style$TextAlign$4',66,null),Hk=fx(eE,'DirectionalTextHelper',179),mm=fx(aE,'UnsupportedOperationException',257),cm=fx(aE,'IllegalStateException',246),ok=fx(kE,'Window$ClosingEvent',147),Qj=fx(iE,'HandlerManager',103),pk=fx(kE,'Window$WindowHandlers',148),sl=fx(gE,'EventBus',106),xl=fx(gE,'SimpleEventBus',105),Pj=fx(iE,'HandlerManager$Bus',104),ul=fx(gE,'SimpleEventBus$1',213),vl=fx(gE,'SimpleEventBus$2',214),wl=fx(gE,'SimpleEventBus$3',215),ol=fx(eE,'WidgetCollection',206),Qm=ex(lE,'Widget;',291),nl=fx(eE,'WidgetCollection$WidgetIterator',207),ql=fx('com.google.gwt.user.client.ui.impl.','PopupImplMozilla$1',210),em=fx(aE,'NullPointerException',251),bm=fx(aE,'IllegalArgumentException',245),_k=fx(eE,'ScrollImpl',194),im=fx(aE,'StringBuffer',255),Kj=fx(rE,'CloseEvent',100),Jj=fx(rE,'AttachEvent',99),wj=fx(oE,'MouseDownEvent',86),Bj=fx(oE,'MouseUpEvent',90),yj=fx(oE,'MouseMoveEvent',87),Aj=fx(oE,'MouseOverEvent',89),zj=fx(oE,'MouseOutEvent',88),Wj=fx('com.google.gwt.text.shared.','AbstractRenderer',122),Yj=fx(sE,'PassthroughRenderer',124),Xj=fx(sE,'PassthroughParser',123),Cj=fx(oE,'PrivateMap',91),Rj=fx(iE,'LegacyHandlerWrapper',107),kk=fx(tE,'TouchScroller',128),jk=fx(tE,'TouchScroller$TemporalPoint',138),hk=fx(tE,'TouchScroller$MomentumCommand',135),ik=fx(tE,'TouchScroller$MomentumTouchRemovalCommand',137),gk=fx(tE,'TouchScroller$MomentumCommand$1',136),ak=fx(tE,'TouchScroller$1',129),bk=fx(tE,'TouchScroller$2',130),ck=fx(tE,'TouchScroller$3',131),dk=fx(tE,'TouchScroller$4',132),ek=fx(tE,'TouchScroller$5',133),fk=fx(tE,'TouchScroller$6',134),Gm=fx(nE,'NoSuchElementException',278),Fm=fx(nE,'MapEntryImpl',277),dm=fx(aE,'IndexOutOfBoundsException',247),Gj=fx(oE,'TouchEvent',94),Ij=fx(oE,'TouchStartEvent',98),Fj=fx(oE,'TouchEvent$TouchSupportDetector',96),Hj=fx(oE,'TouchMoveEvent',97),Ej=fx(oE,'TouchEndEvent',95),Dj=fx(oE,'TouchCancelEvent',93),Zj=fx(tE,'DefaultMomentum',125),$j=fx(tE,'Momentum$State',126),vm=fx(nE,'AbstractList',267),Bm=fx(nE,'ArrayList',272),tm=fx(nE,'AbstractList$IteratorImpl',268),um=fx(nE,'AbstractList$ListIteratorImpl',269),Ll=fx(dE,'VisibleGene',229),Bl=fx(dE,'Gene',219),Tl=fx(uE,'Requirement',233),Sl=fx(uE,'ProteinLengthRequirement',237),Ol=fx(uE,'IntronNumberRequirement',232),Nl=fx(vE,'Problem',231),Wl=fx(uE,'SingleMutationRequirement',240),Vl=fx(uE,'ShortermRNARequirement',239),Pl=fx(uE,'LongerProteinRequirement',234),Ul=fx(uE,'ShorterProteinRequirement',238),Rl=fx(uE,'NomRNARequirement',236),Ql=fx(uE,'NoProteinRequirement',235),Lj=fx(rE,'ResizeEvent',101),Jl=fx(dE,'HTMLContainer',227),sk=fx(wE,'HistoryImpl',152),rk=fx(wE,'HistoryImplTimer',154),qk=fx(wE,'HistoryImplMozilla',153),Kl=fx(dE,'Nucleotide',228),Al=fx(dE,'Exon',218),Ml=fx(vE,'GenexState',230),Mj=fx(rE,'ValueChangeEvent',102),Cm=fx(nE,'Collections$EmptyList',274),zl=fx(dE,'ColorSequencer',217),Ei=fx(jE,'AnimationSchedulerImpl',7),Di=fx(jE,'AnimationSchedulerImplTimer',10),Ci=fx(jE,'AnimationSchedulerImplTimer$AnimationHandleImpl',13),Im=ex('[Lcom.google.gwt.animation.client.','AnimationSchedulerImplTimer$AnimationHandleImpl;',292),Bi=fx(jE,'AnimationSchedulerImplTimer$1',11),Ai=fx(jE,'AnimationSchedulerImplMozilla',8),zi=fx(jE,'AnimationSchedulerImplMozilla$AnimationHandleImpl',9),_j=fx(tE,'Point',127);$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if ($wnd.genex) $wnd.genex.onScriptLoad(); +--></script></body></html> \ No newline at end of file diff --git a/common/static/js/capa/genex/2DDA730EDABB80B88A6B0DFA3AFEACA2.cache.html b/common/static/js/capa/genex/2DDA730EDABB80B88A6B0DFA3AFEACA2.cache.html new file mode 100644 index 0000000000000000000000000000000000000000..743492768bbc8905503716ae88765924dbf670d1 --- /dev/null +++ b/common/static/js/capa/genex/2DDA730EDABB80B88A6B0DFA3AFEACA2.cache.html @@ -0,0 +1,639 @@ +<html><head><meta charset="UTF-8" /><script>var $gwt_version = "2.5.0";var $wnd = parent;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '2DDA730EDABB80B88A6B0DFA3AFEACA2';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});</script></head><body><script><!-- +function HA(){} +function Ub(){} +function kc(){} +function df(){} +function tf(){} +function Af(){} +function Gf(){} +function Mf(){} +function Tf(){} +function dg(){} +function jg(){} +function sg(){} +function zg(){} +function Lg(){} +function Yg(){} +function Fh(){} +function Qh(){} +function Qm(){} +function Nm(){} +function Um(){} +function _n(){} +function so(){} +function Bo(){} +function zp(){} +function Cp(){} +function Cq(){} +function Fq(){} +function ws(){} +function $s(){} +function bt(){} +function ew(){} +function hw(){} +function kw(){} +function nw(){} +function qw(){} +function tw(){} +function ww(){} +function zw(){} +function Mw(){} +function gA(){} +function gx(){ic()} +function ax(){ic()} +function Cw(){ic()} +function Vw(){ic()} +function Zw(){ic()} +function FA(){ic()} +function To(){So()} +function nt(){ot()} +function wp(a){pp=a} +function Jp(a,b){a.H=b} +function Ue(a,b){a.f=b} +function Xe(a,b){a.a=b} +function Ye(a,b){a.b=b} +function Xm(a,b){a.b=b} +function Wm(a,b){a.a=b} +function Ym(a,b){a.d=b} +function ro(a,b){a.d=b} +function Mv(a,b){a.a=b} +function Mu(){this.a=1} +function C(a){this.a=a} +function _b(a){this.a=a} +function cc(a){this.a=a} +function Fg(a){this.a=a} +function Rg(a){this.a=a} +function xh(a){this.a=a} +function Dn(a){this.a=a} +function Fn(a){this.a=a} +function Hn(a){this.a=a} +function Jn(a){this.a=a} +function Ln(a){this.a=a} +function Nn(a){this.a=a} +function Un(a){this.a=a} +function Xn(a){this.a=a} +function Or(a){this.a=a} +function bs(a){this.a=a} +function ls(a){this.a=a} +function ps(a){this.a=a} +function zs(a){this.a=a} +function Cs(a){this.a=a} +function xv(a){this.a=a} +function Av(a){this.a=a} +function Dv(a){this.a=a} +function Gv(a){this.a=a} +function Jv(a){this.a=a} +function Hw(a){this.a=a} +function Gy(a){this.a=a} +function Xy(a){this.a=a} +function Iz(a){this.a=a} +function tz(a){this.d=a} +function Lq(a){this.H=a} +function Vq(a){this.H=a} +function uu(a){this.b=a} +function Zf(){this.a={}} +function db(){this.a=eb()} +function nf(){this.c=++kf} +function Ox(){Jx(this)} +function mA(){ly(this)} +function $(a){J(a.b,a)} +function Jx(a){a.a=oc()} +function jq(a,b){aq(b,a)} +function sf(a,b){yr(b.a,a)} +function zf(a,b){zr(b.a,a)} +function Sf(a,b){Ar(b.a,a)} +function rg(a,b){tn(b.a,a)} +function yg(a,b){un(b.a,a)} +function _v(a,b){oA(a.a,b)} +function Np(a,b){jp(a.H,b)} +function ut(a,b){Oc(a.b,b)} +function wt(a,b){Ac(a.b,b)} +function Yf(a,b,c){a.a[b]=c} +function X(a){Q();this.a=a} +function Ls(a){Q();this.a=a} +function mb(a){ic();this.e=a} +function nb(a){ic();this.e=a} +function Vb(a){return a.L()} +function Pt(){Pt=HA;Yt()} +function Ns(){Ns=HA;Ps()} +function nv(){this.y=new Nv} +function bw(){this.a=new rA} +function rA(){this.a=new mA} +function ue(){te();return je} +function fd(){ed();return _c} +function vd(){ud();return pd} +function Ld(){Kd();return Fd} +function _d(){$d();return Vd} +function Ph(){Nh();return Jh} +function Zt(){Yt();return Tt} +function Nb(){Nb=HA;Mb=new Ub} +function So(){So=HA;Ro=new nf} +function eA(){eA=HA;dA=new gA} +function io(a){co=a;$o();bp=a} +function Lp(a,b){a.$()[_B]=b} +function lp(a,b){$o();mp(a,b)} +function lu(a,b){nu(a,b,a.c)} +function rq(a,b){mq(a,b,a.H)} +function dr(a,b){Tq(a,b);ar(a)} +function $n(a,b,c){a.a=b;a.b=c} +function yu(a,b){a.style[yC]=b} +function Ac(b,a){b.scrollTop=a} +function Xw(a){mb.call(this,a)} +function $w(a){mb.call(this,a)} +function bx(a){mb.call(this,a)} +function hx(a){mb.call(this,a)} +function Wx(a){mb.call(this,a)} +function Dh(a){Ah.call(this,a)} +function zq(a){Dh.call(this,a)} +function Bu(a){uh(a.a,a.c,a.b)} +function Xg(a){a.a.n&&a.a.lb()} +function Xf(a,b){return a.a[b]} +function ex(a,b){return a>b?a:b} +function cb(a){return eb()-a.a} +function Im(a){return new Gm[a]} +function Mt(a){this.H=a;new Fh} +function _o(a,b){a.__listener=b} +function jo(a,b,c){a.style[b]=c} +function Yr(a,b){ds(a.a,b,true)} +function Vr(a,b){ds(a.a,b,false)} +function nr(a,b){Tq(a.j,b);ar(a)} +function Fr(a){a.f=false;ho(a.H)} +function be(){Xc.call(this,vB,0)} +function _t(){Xc.call(this,vB,0)} +function de(){Xc.call(this,wB,1)} +function bu(){Xc.call(this,wB,1)} +function du(){Xc.call(this,xB,2)} +function fe(){Xc.call(this,xB,2)} +function he(){Xc.call(this,yB,3)} +function fu(){Xc.call(this,yB,3)} +function Xo(){eh.call(this,null)} +function sp(){this.a=new eh(null)} +function oq(){this.f=new qu(this)} +function Ex(){Ex=HA;Bx={};Dx={}} +function dx(a){return a<=0?0-a:a} +function Rb(a){return !!a.a||!!a.f} +function dh(a,b){return th(a.a,b)} +function th(a,b){return my(a.d,b)} +function pA(a,b){return my(a.a,b)} +function Xp(a,b){!!a.F&&ch(a.F,b)} +function bA(a,b,c){a.splice(b,c)} +function Mp(a,b){Qp(a.$(),b,true)} +function ab(a,b){this.b=a;this.a=b} +function Xc(a,b){this.a=a;this.b=b} +function zc(b,a){b.innerHTML=a||mB} +function py(b,a){return b.e[rB+a]} +function Oh(a,b){Xc.call(this,a,b)} +function we(){Xc.call(this,'PX',0)} +function Ce(){Xc.call(this,'EX',3)} +function Ae(){Xc.call(this,'EM',2)} +function Ke(){Xc.call(this,'CM',7)} +function Me(){Xc.call(this,'MM',8)} +function Ee(){Xc.call(this,'PT',4)} +function Ge(){Xc.call(this,'PC',5)} +function Ie(){Xc.call(this,'IN',6)} +function Gr(){Hr.call(this,new _r)} +function H(){H=HA;var a;a=new M;G=a} +function U(a){$wnd.clearTimeout(a)} +function Jb(a){$wnd.clearTimeout(a)} +function T(a){$wnd.clearInterval(a)} +function qz(a){return a.b<a.d.zb()} +function Cz(a,b){this.a=a;this.b=b} +function cn(a,b){this.a=a;this.b=b} +function ao(a,b){this.a=a;this.b=b} +function AA(a,b){this.a=a;this.b=b} +function Pv(a,b){this.b=a;this.a=b} +function az(a,b){this.b=a;this.a=b} +function Vv(a,b){this.b=b;this.a=a} +function Kx(a,b){mc(a.a,b);return a} +function Sx(a,b){mc(a.a,b);return a} +function eo(a,b){sc(a,(Ns(),Os(b)))} +function Eg(a,b){a.a?An(b.a):wn(b.a)} +function Ec(a,b){a.dispatchEvent(b)} +function Fc(a,b){a.textContent=b||mB} +function ry(b,a){return rB+a in b.e} +function rx(b,a){return b.indexOf(a)} +function gi(a){return a==null?null:a} +function eh(a){fh.call(this,a,false)} +function dn(a){cn.call(this,a.a,a.b)} +function ye(){Xc.call(this,'PCT',1)} +function Dd(){Xc.call(this,'AUTO',3)} +function hd(){Xc.call(this,'NONE',0)} +function jd(){Xc.call(this,'BLOCK',1)} +function Td(){Xc.call(this,'FIXED',3)} +function ld(){Xc.call(this,'INLINE',2)} +function zd(){Xc.call(this,'HIDDEN',1)} +function Bd(){Xc.call(this,'SCROLL',2)} +function Nd(){Xc.call(this,'STATIC',0)} +function et(){Vs.call(this,$doc.body)} +function Uz(){this.a=Th(Am,LA,0,0,0)} +function vh(a){this.d=new mA;this.c=a} +function Px(a){Jx(this);mc(this.a,a)} +function An(a){wn(a);a.b=mo(new Nn(a))} +function xn(a,b){a.f=b;!b&&(a.g=null)} +function hz(a,b){(a<0||a>=b)&&kz(a,b)} +function ai(a,b){return a.cM&&a.cM[b]} +function _h(a,b){return a.cM&&!!a.cM[b]} +function Ib(a){return a.$H||(a.$H=++Ab)} +function fi(a){return a.tM==HA||_h(a,1)} +function ap(a){return !ei(a)&&di(a,37)} +function tb(a){return ei(a)?jc(ci(a)):mB} +function ox(b,a){return b.charCodeAt(a)} +function sc(b,a){return b.appendChild(a)} +function tc(b,a){return b.removeChild(a)} +function qA(a,b){return wy(a.a,b)!=null} +function cA(a,b,c,d){a.splice(b,c,d)} +function nc(a,b){a[a.explicitLength++]=b} +function Tx(a){this.a=oc();mc(this.a,a)} +function R(a){a.b?T(a.c):U(a.c);Sz(P,a)} +function Q(){Q=HA;P=new Uz;Io(new Bo)} +function yq(){yq=HA;wq=new Cq;xq=new Fq} +function yf(){yf=HA;xf=new of(BB,new Af)} +function cf(){cf=HA;bf=new of(zB,new df)} +function rf(){rf=HA;qf=new of(AB,new tf)} +function Ff(){Ff=HA;Ef=new of(CB,new Gf)} +function Lf(){Lf=HA;Kf=new of(DB,new Mf)} +function Rf(){Rf=HA;Qf=new of(EB,new Tf)} +function cg(){cg=HA;bg=new of(FB,new dg)} +function ig(){ig=HA;hg=new of(GB,new jg)} +function qg(){qg=HA;pg=new of(IB,new sg)} +function xg(){xg=HA;wg=new of(JB,new zg)} +function xd(){Xc.call(this,'VISIBLE',0)} +function Rd(){Xc.call(this,'ABSOLUTE',2)} +function Pd(){Xc.call(this,'RELATIVE',1)} +function yr(a,b){Dr(a,(a.a,_e(b)),af(b))} +function zr(a,b){Er(a,(a.a,_e(b)),af(b))} +function Ar(a,b){Fr(a,(a.a,_e(b),af(b)))} +function Pz(a,b){hz(b,a.b);return a.a[b]} +function qh(a,b){var c;c=rh(a,b);return c} +function di(a,b){return a!=null&&_h(a,b)} +function sx(c,a,b){return c.indexOf(a,b)} +function Mx(a,b,c){return pc(a.a,b,b,c),a} +function wc(b,a){return parseInt(b[a])||0} +function My(a){return a.b=bi(rz(a.a),59)} +function pb(a){return ei(a)?qb(ci(a)):a+mB} +function sb(a){return a==null?null:a.name} +function eb(){return (new Date).getTime()} +function z(a){this.j=new C(this);this.r=a} +function fh(a,b){this.a=new vh(b);this.b=a} +function Ft(a){this.c=a;this.a=!!this.c.C} +function vn(a){if(a.a){Bu(a.a.a);a.a=null}} +function wn(a){if(a.b){Bu(a.b.a);a.b=null}} +function $o(){if(!Yo){ip();np();Yo=true}} +function zo(a){yo();return xo?qp(xo,a):null} +function Db(a,b,c){return a.apply(b,c);var d} +function Lx(a,b){return pc(a.a,b,b+1,mB),a} +function Sc(b,a){return b.getElementById(a)} +function qb(a){return a==null?null:a.message} +function ln(a){a.r=false;a.c=false;a.g=null} +function Oz(a){a.a=Th(Am,LA,0,0,0);a.b=0} +function Tb(a,b){a.a=Wb(a.a,[b,false]);Sb(a)} +function J(a,b){Sz(a.a,b);a.a.b==0&&R(a.b)} +function Nz(a,b){Vh(a.a,a.b++,b);return true} +function Nx(a,b,c,d){pc(a.a,b,c,d);return a} +function rc(a){var b;b=qc(a);nc(a,b);return b} +function Hz(a){var b;b=My(a.a);return b.Bb()} +function Qw(a){var b=Gm[a.b];a=null;return b} +function Ng(a){var b;if(Kg){b=new Lg;a.V(b)}} +function kh(a,b){!a.a&&(a.a=new Uz);Nz(a.a,b)} +function bh(a,b,c){return new xh(lh(a.a,b,c))} +function mh(a,b,c){var d;d=ph(a,b);d.vb(c)} +function Cu(a,b,c){this.a=a;this.c=b;this.b=c} +function Eu(a,b,c){this.a=a;this.c=b;this.b=c} +function Hu(a,b,c){this.a=a;this.c=b;this.b=c} +function Ou(a,b,c){this.b=a;this.a=b;this.c=c} +function Ur(a){this.H=a;this.a=new es(this.H)} +function M(){this.a=new Uz;this.b=new X(this)} +function ob(a){ic();this.b=a;this.a=mB;hc(this)} +function Vs(a){oq.call(this);this.H=a;Yp(this)} +function Js(a){z.call(this,(H(),G));this.a=a} +function nd(){Xc.call(this,'INLINE_BLOCK',3)} +function No(){Do&&Ng((!Eo&&(Eo=new Xo),Eo))} +function Ax(a){return String.fromCharCode(a)} +function ux(b,a){return b.substr(a,b.length-a)} +function _m(a,b){return new cn(a.a-b.a,a.b-b.b)} +function an(a,b){return new cn(a.a*b.a,a.b*b.b)} +function bn(a,b){return new cn(a.a+b.a,a.b+b.b)} +function Rw(a){return typeof a=='number'&&a>0} +function qu(a){this.b=a;this.a=Th(zm,LA,45,4,0)} +function Yh(){Yh=HA;Wh=[];Xh=[];Zh(new Qh,Wh,Xh)} +function yo(){yo=HA;xo=new sp;rp(xo)||(xo=null)} +function Hx(){if(Cx==256){Bx=Dx;Dx={};Cx=0}++Cx} +function Br(a){if(a.g){Bu(a.g.a);a.g=null}_q(a)} +function Oc(a,b){Hc(a)&&(b=-b);a.scrollLeft=b} +function zn(a,b){ut(a.s,hi(b.a));wt(a.s,hi(b.b))} +function jp(a,b){$o();kp(a,b);px(XB,b)&&kp(a,YB)} +function Ws(a){Us();try{a.eb()}finally{qA(Ts,a)}} +function $g(a){var b;if(Wg){b=new Yg;ch(a.a,b)}} +function Tg(a,b){var c;if(Qg){c=new Rg(b);ch(a,c)}} +function xb(a){var b;return b=a,fi(b)?b.hC():Ib(b)} +function Io(a){Lo();return Jo(Kg?Kg:(Kg=new nf),a)} +function rt(a){return ht((!gt&&(gt=new nt),a.b))} +function tt(a){return it((!gt&&(gt=new nt),a.b))} +function ei(a){return a!=null&&a.tM!=HA&&!_h(a,1)} +function lx(a){this.a='Unknown';this.c=a;this.b=-1} +function es(a){this.a=a;this.b=Gh(a);this.c=this.b} +function Ah(a){nb.call(this,Ch(a),Bh(a));this.a=a} +function Wr(a){Ur.call(this,a,qx('span',a.tagName))} +function Uq(){Vq.call(this,$doc.createElement(HB))} +function _r(){Zr.call(this);this.H[_B]='Caption'} +function Wb(a,b){!a&&(a=[]);a[a.length]=b;return a} +function oc(){var a=[];a.explicitLength=0;return a} +function mc(a,b){a[a.explicitLength++]=b==null?nB:b} +function oA(a,b){var c;c=sy(a.a,b,a);return c==null} +function sq(a,b){var c;c=nq(a,b);c&&tq(b.H);return c} +function Bz(a){var b;b=new Oy(a.b.a);return new Iz(b)} +function fy(a){var b;b=new Gy(a);return new Cz(a,b)} +function Em(a){if(di(a,56)){return a}return new ob(a)} +function ii(a){if(a!=null){throw new Vw}return null} +function Us(){Us=HA;Rs=new $s;Ss=new mA;Ts=new rA} +function Gw(){Gw=HA;Ew=new Hw(false);Fw=new Hw(true)} +function ly(a){a.a=[];a.e={};a.c=false;a.b=null;a.d=0} +function Dr(a,b,c){if(!co){a.f=true;io(a.H);a.d=b;a.e=c}} +function _u(a,b,c,d){b.a=a;b.f=0;c.a=a;c.f=1;d.a=a;d.f=2} +function wb(a,b){var c;return c=a,fi(c)?c.eQ(b):c===b} +function Jo(a,b){return bh((!Eo&&(Eo=new Xo),Eo),a,b)} +function qp(a,b){return bh(a.a,(!Wg&&(Wg=new nf),Wg),b)} +function lA(a,b){return gi(a)===gi(b)||a!=null&&wb(a,b)} +function GA(a,b){return gi(a)===gi(b)||a!=null&&wb(a,b)} +function xc(b,a){return b[a]==null?null:String(b[a])} +function Wp(a,b,c){return bh(!a.F?(a.F=new eh(a)):a.F,c,b)} +function uh(a,b,c){a.b>0?kh(a,new Hu(a,b,c)):oh(a,b,c)} +function Hg(a,b){var c;if(Dg){c=new Fg(b);!!a.F&&ch(a.F,c)}} +function tr(a){var b,c;c=hp(a.b,0);b=hp(c,1);return Cc(b)} +function Th(a,b,c,d,e){var f;f=Sh(e,d);Uh(a,b,c,f);return f} +function pn(a,b){if(a.j.a){return on(b,a.j.a)}return false} +function _q(a){if(!a.A){return}Is(a.z,false,false);Ng(a)} +function Ko(a){Lo();Mo();return Jo((!Qg&&(Qg=new nf),Qg),a)} +function tx(c,a,b){b=wx(b);return c.replace(RegExp(a,yD),b)} +function kz(a,b){throw new bx('Index: '+a+', Size: '+b)} +function Zm(a,b){this.c=b;this.d=new dn(a);this.e=new dn(b)} +function B(a,b){y(a.a,b)?(a.a.p=K(a.a.r,a.a.j)):(a.a.p=null)} +function nn(a){return new cn(Mc(a.s.b),a.s.b.scrollTop||0)} +function Os(a){return a.__gwt_resolve?a.__gwt_resolve():a} +function st(a){return (a.b.scrollHeight||0)-a.b.clientHeight} +function Mc(a){var b;b=a.scrollLeft||0;Hc(a)&&(b=-b);return b} +function mn(a){var b;b=a.a.touches;return b.length>0?b[0]:null} +function tu(a){if(a.a>=a.b.c){throw new FA}return a.b.a[++a.a]} +function bi(a,b){if(a!=null&&!ai(a,b)){throw new Vw}return a} +function px(a,b){if(!di(b,1)){return false}return String(a)==b} +function Bc(a){if(uc(a)){return !!a&&a.nodeType==1}return false} +function np(){ep=gB(function(a){fp.call(this,a);return false})} +function Xs(){Us();try{Aq(Ts,Rs)}finally{ly(Ts.a);ly(Ss)}} +function Kp(a){a.H.style[ZB]='818px';a.H.style[$B]='325px'} +function tq(a){a.style[dC]=mB;a.style[eC]=mB;a.style[fC]=mB} +function er(a){if(a.A){return}else a.D&&_p(a);Is(a.z,true,false)} +function Qn(a){if(a.f){Bu(a.f.a);a.f=null}a==a.e.g&&(a.e.g=null)} +function ho(a){!!co&&a==co&&(co=null);$o();a===bp&&(bp=null)} +function hv(a){$wnd.genexSetKeyEvent=gB(function(){tv(a)})} +function fv(a){$wnd.genexSetClickEvent=gB(function(){rv(a)})} +function V(a,b){return $wnd.setTimeout(gB(function(){a.I()}),b)} +function mq(a,b,c){_p(b);lu(a.f,b);sc(c,(Ns(),Os(b.H)));aq(b,a)} +function pu(a,b){var c;c=mu(a,b);if(c==-1){throw new FA}ou(a,c)} +function Qu(a){var b;b=tx(a,'<[^<]*>',mB);return b.indexOf($C)+4} +function yz(a){if(a.b<=0){throw new FA}return a.a.Fb(a.c=--a.b)} +function sz(a){if(a.c<0){throw new Zw}a.d.Ib(a.c);a.b=a.c;a.c=-1} +function sn(a){if(!a.r){return}a.r=false;if(a.c){a.c=false;rn(a)}} +function uy(a,b){var c;c=a.b;a.b=b;if(!a.c){a.c=true;++a.d}return c} +function Rh(a,b){var c,d;c=a;d=Sh(0,b);Uh(c.cZ,c.cM,c.qI,d);return d} +function Gc(a,b){var c;c=a.createElement('script');Fc(c,b);return c} +function Ow(a,b,c){var d;d=new Mw;d.c=a+b;Rw(c)&&Sw(c,d);return d} +function Uh(a,b,c,d){Yh();$h(d,Wh,Xh);d.cZ=a;d.cM=b;d.qI=c;return d} +function $h(a,b,c){Yh();for(var d=0,e=b.length;d<e;++d){a[b[d]]=c[d]}} +function Gb(a,b,c){var d;d=Eb();try{return Db(a,b,c)}finally{Hb(d)}} +function Rz(a,b){var c;c=(hz(b,a.b),a.a[b]);bA(a.a,b,1);--a.b;return c} +function yy(a){var b;b=a.b;a.b=null;if(a.c){a.c=false;--a.d}return b} +function qc(a){var b=a.join(mB);a.length=a.explicitLength=0;return b} +function ci(a){if(a!=null&&(a.tM==HA||_h(a,1))){throw new Vw}return a} +function rz(a){if(a.b>=a.d.zb()){throw new FA}return a.d.Fb(a.c=a.b++)} +function Et(a){if(!a.a||!a.c.C){throw new FA}a.a=false;return a.b=a.c.C} +function qo(a){a.e=false;a.f=null;a.a=false;a.b=false;a.c=true;a.d=null} +function x(a,b){w(a);a.n=true;a.o=false;a.k=200;a.s=b;++a.q;B(a.j,eb())} +function $r(){Zr.call(this);ds(this.a,'Enter new DNA Sequence',true)} +function uc(b){try{return !!b&&!!b.nodeType}catch(a){return false}} +function Dc(a){var b=a.parentNode;(!b||b.nodeType!=1)&&(b=null);return b} +function Ic(a){var b;b=Jc(a)+$wnd.pageXOffset;Hc(a)&&(b+=Lc(a));return b} +function $q(a,b){var c;c=b.target;if(Bc(c)){return Pc(a.H,c)}return false} +function Qz(a,b,c){for(;c<a.b;++c){if(GA(b,a.a[c])){return c}}return -1} +function xp(a,b){var c;c=Gc($doc,a);sc($doc.body,c);b.M();tc($doc.body,c)} +function my(a,b){return b==null?a.c:di(b,1)?ry(a,bi(b,1)):qy(a,b,~~xb(b))} +function ny(a,b){return b==null?a.b:di(b,1)?py(a,bi(b,1)):oy(a,b,~~xb(b))} +function hi(a){return ~~Math.max(Math.min(a,2147483647),-2147483648)} +function Nc(a){return a.tabIndex<65535?a.tabIndex:-(a.tabIndex%65535)-1} +function Kc(b){try{return b.getBoundingClientRect().top}catch(a){return 0}} +function gv(b){$wnd.genexSetDNASequence=gB(function(a){return b.sb(a)})} +function iv(b){$wnd.genexSetProblemNumber=gB(function(a){return b.tb(a)})} +function vv(a){typeof $wnd.genexStoreAnswer===qB&&$wnd.genexStoreAnswer(a)} +function ns(){ns=HA;new ps('bottom');new ps('middle');ms=new ps(eC)} +function Kb(){return $wnd.setTimeout(function(){zb!=0&&(zb=0);Cb=-1},10)} +function Hb(a){a&&Pb((Nb(),Mb));--zb;if(a){if(Cb!=-1){Jb(Cb);Cb=-1}}} +function Zh(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function vy(e,a,b){var c,d=e.e;a=rB+a;a in d?(c=d[a]):++e.d;d[a]=b;return c} +function K(a,b){var c;c=new ab(a,b);Nz(a.a,c);a.a.b==1&&S(a.b,16);return c} +function mu(a,b){var c;for(c=0;c<a.c;++c){if(a.a[c]==b){return c}}return -1} +function Sz(a,b){var c;c=Qz(a,b,0);if(c==-1){return false}Rz(a,c);return true} +function Bh(a){var b;b=a.ib();if(!b.mb()){return null}return bi(b.nb(),56)} +function Oo(){var a;if(Do){a=new To;!!Eo&&ch(Eo,a);return null}return null} +function ar(a){var b;b=a.C;if(b){a.o!=null&&b._(a.o);a.p!=null&&b.ab(a.p)}} +function ds(a,b,c){c?zc(a.a,b):Fc(a.a,b);if(a.c!=a.b){a.c=a.b;Hh(a.a,a.b)}} +function xx(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} +function Pw(a,b,c,d){var e;e=new Mw;e.c=a+b;Rw(c)&&Sw(c,e);e.a=d?8:0;return e} +function Jc(b){try{return b.getBoundingClientRect().left}catch(a){return 0}} +function wy(a,b){return b==null?yy(a):di(b,1)?zy(a,bi(b,1)):xy(a,b,~~xb(b))} +function zz(a,b){var c;this.a=a;this.d=a;c=a.zb();(b<0||b>c)&&kz(b,c);this.b=b} +function of(a,b){nf.call(this);this.a=b;!We&&(We=new Zf);Yf(We,a,this);this.b=a} +function Zr(){Wr.call(this,$doc.createElement(HB));this.H[_B]='gwt-HTML'} +function Rc(a){return (px(a.compatMode,uB)?a.documentElement:a.body).clientWidth} +function Qc(a){return (px(a.compatMode,uB)?a.documentElement:a.body).clientHeight} +function Tc(a){return (px(a.compatMode,uB)?a.documentElement:a.body).scrollHeight||0} +function Uc(a){return (px(a.compatMode,uB)?a.documentElement:a.body).scrollWidth||0} +function ht(a){return a.currentStyle.direction==tB?0:(a.scrollWidth||0)-a.clientWidth} +function it(a){return a.currentStyle.direction==tB?a.clientWidth-(a.scrollWidth||0):0} +function Lc(a){var b=a.offsetParent;if(b){return b.offsetWidth-b.clientWidth}return 0} +function Cc(a){var b=a.firstChild;while(b&&b.nodeType!=1)b=b.nextSibling;return b} +function zy(d,a){var b,c=d.e;a=rB+a;if(a in c){b=c[a];--d.d;delete c[a]}return b} +function Cr(a,b){var c;c=b.target;if(Bc(c)){return Pc(Dc(tr(a.j)),c)}return false} +function fo(a,b,c){var d;d=bo;bo=a;b==co&&Zo(a.type)==8192&&(co=null);c.X(a);bo=d} +function Nw(a,b,c){var d;d=new Mw;d.c=a+b;Rw(c!=0?-c:0)&&Sw(c!=0?-c:0,d);d.a=4;return d} +function sy(a,b,c){return b==null?uy(a,c):di(b,1)?vy(a,bi(b,1),c):ty(a,b,c,~~xb(b))} +function rb(a){var b;return a==null?nB:ei(a)?sb(ci(a)):di(a,1)?oB:(b=a,fi(b)?b.cZ:ti).c} +function Ob(a){var b,c;if(a.b){c=null;do{b=a.b;a.b=null;c=Yb(b,c)}while(a.b);a.b=c}} +function Pb(a){var b,c;if(a.c){c=null;do{b=a.c;a.c=null;c=Yb(b,c)}while(a.c);a.c=c}} +function Yu(a){var b;b=a.r;b=tx(b,jD,mB);b=tx(b,gD,mB);b=tx(b,iD,mB);return tx(b,hD,mB)} +function Qb(a){var b;if(a.a){b=a.a;a.a=null;!a.f&&(a.f=[]);Yb(b,a.f)}!!a.f&&(a.f=Xb(a.f))} +function kv(a){if(!a.H){return null}return new Yv(a.f,a.g,a.i,a.d,a.a,a.H.i,a.H.e,a.H.q)} +function qx(b,a){if(a==null)return false;return b==a||b.toLowerCase()==a.toLowerCase()} +function Fb(b){return function(){try{return Gb(b,this,arguments)}catch(a){throw a}}} +function Hc(a){return a.ownerDocument.defaultView.getComputedStyle(a,mB).direction==tB} +function Qt(){var a;Pt();Rt.call(this,(a=$doc.createElement('INPUT'),a.type='text',a))} +function pt(a){var b;Ec(a,(b=$doc.createEvent('HTMLEvents'),b.initEvent(SB,false,false),b))} +function go(a){var b;b=uo(lo,a);if(!b&&!!a){a.cancelBubble=true;a.preventDefault()}return b} +function rn(a){var b;if(!a.f){return}b=kn(a.k,a.e);if(b){a.g=new Rn(a,b);Zb((Nb(),a.g),16)}} +function w(a){if(!a.n){return}a.t=a.o;a.n=false;a.o=false;if(a.p){$(a.p);a.p=null}a.t&&Fs(a)} +function Rp(a,b){if(!a){throw new mb(aC)}b=vx(b);if(b.length==0){throw new Xw(bC)}Up(a,b)} +function on(a,b){var c,d,e;e=new cn(a.a-b.a,a.b-b.b);c=dx(e.a);d=dx(e.b);return c<=25&&d<=25} +function Oy(a){var b;this.c=a;b=new Uz;a.c&&Nz(b,new Xy(a));ky(a,b);jy(a,b);this.a=new tz(b)} +function Yt(){Yt=HA;Ut=new _t;Vt=new bu;Wt=new du;Xt=new fu;Tt=Uh(ym,LA,44,[Ut,Vt,Wt,Xt])} +function ed(){ed=HA;dd=new hd;ad=new jd;bd=new ld;cd=new nd;_c=Uh(sm,LA,5,[dd,ad,bd,cd])} +function ud(){ud=HA;td=new xd;rd=new zd;sd=new Bd;qd=new Dd;pd=Uh(tm,LA,7,[td,rd,sd,qd])} +function Kd(){Kd=HA;Jd=new Nd;Id=new Pd;Gd=new Rd;Hd=new Td;Fd=Uh(um,LA,8,[Jd,Id,Gd,Hd])} +function $d(){$d=HA;Wd=new be;Xd=new de;Yd=new fe;Zd=new he;Vd=Uh(vm,LA,9,[Wd,Xd,Yd,Zd])} +function mo(a){$o();!oo&&(oo=new nf);if(!lo){lo=new fh(null,true);po=new so}return bh(lo,oo,a)} +function Yx(a,b){var c;while(a.mb()){c=a.nb();if(b==null?c==null:wb(b,c)){return a}}return null} +function kn(a,b){var c,d;d=b.b-a.b;if(d<=0){return null}c=_m(a.a,b.a);return new cn(c.a/d,c.b/d)} +function ev(a){var b,c;c=kv(a);if(!c){vv(qD);return}b=aw(a.B,c);px(b,rD)?vv('CORRECT'):vv(qD)} +function Sv(a){if(!a.c&&!a.d)return sB;if(!a.c&&a.d){return uD}if(a.b==84)return 'U';return Ax(a.b)} +function Sq(a,b){if(a.C!=b){return false}try{aq(b,null)}finally{tc(a.kb(),b.H);a.C=null}return true} +function Tv(a,b){this.e=b;this.b=a;this.d=false;this.c=false;this.a=-1;this.f=-1;this.g=false} +function iu(){Oq.call(this);this.a=(is(),fs);this.b=(ns(),ms);this.e[nC]=vC;this.e[oC]=vC} +function Rt(a){Mt.call(this,a,(!Pm&&(Pm=new Qm),!Mm&&(Mm=new Nm)));this.H[_B]='gwt-TextBox'} +function Xr(){Ur.call(this,$doc.createElement(HB));this.H[_B]='gwt-Label';ds(this.a,sC,false)} +function Rn(a,b){this.e=a;this.a=new db;this.b=nn(this.e);this.d=new Zm(this.b,b);this.f=Ko(new Un(this))} +function Qp(a,b,c){if(!a){throw new mb(aC)}b=vx(b);if(b.length==0){throw new Xw(bC)}c?vc(a,b):yc(a,b)} +function Sb(a){if(!a.i){a.i=true;!a.e&&(a.e=new _b(a));Zb(a.e,1);!a.g&&(a.g=new cc(a));Zb(a.g,50)}} +function is(){is=HA;new ls(($d(),'center'));new ls('justify');gs=new ls(dC);new ls('right');hs=gs;fs=hs} +function Nh(){Nh=HA;Mh=new Oh('RTL',0);Lh=new Oh('LTR',1);Kh=new Oh('DEFAULT',2);Jh=Uh(xm,LA,30,[Mh,Lh,Kh])} +function jv(a,b,c){var d;d=new cv(b,a.C,a.D,a.G,a.u,a.t,a.z);av(d);$u(d);bv(d);return new Vv(Tu(d,c),d)} +function cr(a,b,c){var d;a.v=b;a.B=c;b-=0;c-=0;d=a.H;d.style[dC]=b+(te(),jC);d.style[eC]=c+jC} +function pc(a,b,c,d){var e;e=qc(a);nc(a,e.substr(0,b-0));a[a.explicitLength++]=d==null?nB:d;nc(a,ux(e,c))} +function Sm(a,b,c,d){var e,f,g;g=a*b;if(c>=0){e=0>c-d?0:c-d;g=g<e?g:e}else{f=0<c+d?0:c+d;g=g>f?g:f}return g} +function nq(a,b){var c;if(b.G!=a){return false}try{aq(b,null)}finally{c=b.H;tc(Dc(c),c);pu(a.f,b)}return true} +function sh(a){var b,c;if(a.a){try{for(c=new tz(a.a);c.b<c.d.zb();){b=bi(rz(c),46);b.M()}}finally{a.a=null}}} +function ou(a,b){var c;if(b<0||b>=a.c){throw new ax}--a.c;for(c=b;c<a.c;++c){Vh(a.a,c,a.a[c+1])}Vh(a.a,a.c,null)} +function Tq(a,b){if(b==a.C){return}!!b&&_p(b);!!a.C&&a.hb(a.C);a.C=b;if(b){sc(a.kb(),(Ns(),Os(a.C.H)));aq(b,a)}} +function rs(a,b){var c,d;c=(d=$doc.createElement(qC),d[tC]=a.a.a,jo(d,uC,a.c.a),d);sc(a.b,(Ns(),Os(c)));mq(a,b,c)} +function Gh(a){var b;b=xc(a,KB);if(qx(tB,b)){return Nh(),Mh}else if(qx(LB,b)){return Nh(),Lh}return Nh(),Kh} +function Gx(a){Ex();var b=rB+a;var c=Dx[b];if(c!=null){return c}c=Bx[b];c==null&&(c=Fx(a));Hx();return Dx[b]=c} +function ky(e,a){var b=e.e;for(var c in b){if(c.charCodeAt(0)==58){var d=new az(e,c.substring(1));a.vb(d)}}} +function Po(){var a,b;if(Ho){b=Rc($doc);a=Qc($doc);if(Go!=b||Fo!=a){Go=b;Fo=a;Tg((!Eo&&(Eo=new Xo),Eo),b)}}} +function jb(a){var b,c,d;c=Th(Bm,LA,55,a.length,0);for(d=0,b=a.length;d<b;++d){if(!a[d]){throw new gx}c[d]=a[d]}} +function ic(){var a,b,c,d;c=gc(new kc);d=Th(Bm,LA,55,c.length,0);for(a=0,b=d.length;a<b;++a){d[a]=new lx(c[a])}jb(d)} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{gB(Dm)()}catch(a){b(c)}else{gB(Dm)()}} +function Zb(b,c){Nb();$wnd.setTimeout(function(){var a=gB(Vb)(b);a&&$wnd.setTimeout(arguments.callee,c)},c)} +function Zp(a,b){var c;switch(Zo(b.type)){case 16:case 32:c=b.relatedTarget;if(!!c&&Pc(a.H,c)){return}}Ze(b,a,a.H)} +function Rv(a){switch(a.b){case 65:return xD;case 71:return wD;case 67:return vD;case 84:return uD;}return mB} +function hp(a,b){var c=0,d=a.firstChild;while(d){if(d.nodeType==1){if(b==c)return d;++c}d=d.nextSibling}return null} +function Fy(a,b){var c,d,e;if(di(b,59)){c=bi(b,59);d=c.Bb();if(my(a.a,d)){e=ny(a.a,d);return lA(c.Cb(),e)}}return false} +function ph(a,b){var c,d;d=bi(ny(a.d,b),58);if(!d){d=new mA;sy(a.d,b,d)}c=bi(d.b,57);if(!c){c=new Uz;uy(d,c)}return c} +function rh(a,b){var c,d;d=bi(ny(a.d,b),58);if(!d){return eA(),eA(),dA}c=bi(d.b,57);if(!c){return eA(),eA(),dA}return c} +function Xu(a,b){var c;b>=a.a.b&&(b=a.a.b-1);c=bi(Pz(a.a,b),48);while(!c.d&&b<a.a.b){c=bi(Pz(a.a,b),48);++b}return c} +function Tz(a,b){var c;b.length<a.b&&(b=Rh(b,a.b));for(c=0;c<a.b;++c){Vh(b,c,a.a[c])}b.length>a.b&&Vh(b,a.b,null);return b} +function vr(a){var b,c;c=$doc.createElement(qC);b=$doc.createElement(HB);sc(c,(Ns(),Os(b)));c[_B]=a;b[_B]=a+'Inner';return c} +function ng(){var a;this.a=(a=document.createElement(HB),a.setAttribute('ontouchstart','return;'),typeof a.ontouchstart==qB)} +function Eb(){var a;if(zb!=0){a=eb();if(a-Bb>2000){Bb=a;Cb=Kb()}}if(zb++==0){Ob((Nb(),Mb));return true}return false} +function fr(a){if(a.x){Bu(a.x.a);a.x=null}if(a.s){Bu(a.s.a);a.s=null}if(a.A){a.x=mo(new zs(a));a.s=zo(new Cs(a))}} +function Ny(a){if(!a.b){throw new $w('Must call next() before remove().')}else{sz(a.a);wy(a.c,a.b.Bb());a.b=null}} +function S(a,b){if(b<0){throw new Xw('must be non-negative')}a.b?T(a.c):U(a.c);Sz(P,a);a.b=false;a.c=V(a,b);Nz(P,a)} +function oh(a,b,c){var d,e,f;d=rh(a,b);e=d.yb(c);e&&d.xb()&&(f=bi(ny(a.d,b),58),bi(yy(f),57),f.d==0&&wy(a.d,b),undefined)} +function Er(a,b,c){var d,e;if(a.f){d=b+Ic(a.H);e=c+(Kc(a.H)+$wnd.pageYOffset);if(d<a.b||d>=a.i||e<a.c){return}cr(a,d-a.d,e-a.e)}} +function Ze(a,b,c){var d,e,f;if(We){f=bi(Xf(We,a.type),12);if(f){d=f.a.a;e=f.a.b;Xe(f.a,a);Ye(f.a,c);Xp(b,f.a);Xe(f.a,d);Ye(f.a,e)}}} +function jy(h,a){var b=h.a;for(var c in b){var d=parseInt(c,10);if(c==d){var e=b[d];for(var f=0,g=e.length;f<g;++f){a.vb(e[f])}}}} +function qy(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){return true}}}return false} +function oy(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){return f.Cb()}}}return null} +function _e(a){var b,c;b=a.b;if(b){return c=a.a,(c.clientX||0)-Ic(b)+Mc(b)+(b.ownerDocument,$wnd.pageXOffset)}return a.a.clientX||0} +function Bn(){this.d=new Uz;this.e=new _n;this.k=new _n;this.j=new _n;this.q=new Uz;this.i=new Xn(this);xn(this,new Um)} +function Oq(){oq.call(this);this.e=$doc.createElement(gC);this.d=$doc.createElement(hC);sc(this.e,(Ns(),Os(this.d)));Jp(this,this.e)} +function Mq(a){var b;Lq.call(this,(b=$doc.createElement('BUTTON'),b.setAttribute('type','button'),b));this.H[_B]='gwt-Button';zc(this.H,a)} +function Fs(a){if(!a.i){Es(a);a.c||sq((Us(),Ys(null)),a.a)}a.a.H.style[yC]='rect(auto, auto, auto, auto)';a.a.H.style[jB]=mC} +function Es(a){if(a.i){if(a.a.u){sc($doc.body,a.a.q);a.f=Ko(a.a.r);vs();a.b=true}}else if(a.b){tc($doc.body,a.a.q);Bu(a.f.a);a.f=null;a.b=false}} +function Yv(a,b,c,d,e,f,g,h){this.f=a;this.g=b;this.i=c;this.e=d;this.a=e;this.b=f;this.d=g;this.c=h;'GenexState\n'+Xv(this)} +function Hh(a,b){switch(b.b){case 0:{a[KB]=tB;break}case 1:{a[KB]=LB;break}case 2:{Gh(a)!=(Nh(),Kh)&&(a[KB]=mB,undefined);break}}} +function Lu(a){switch(a.a){case 0:++a.a;case 1:++a.a;return 'exon';case 2:++a.a;return 'next';case 3:a.a=1;return 'another';}return mB} +function vx(c){if(c.length==0||c[0]>sB&&c[c.length-1]>sB){return c}var a=c.replace(/^(\s*)/,mB);var b=a.replace(/\s*$/,mB);return b} +function hc(a){var b,c,d,e;d=(ei(a.b)?ci(a.b):null,[]);e=Th(Bm,LA,55,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new lx(d[b])}jb(e)} +function Vp(a,b,c){var d;d=Zo(c.b);d==-1?Np(a,c.b):a.E==-1?lp(a.H,d|(a.H.__eventBits||0)):(a.E|=d);return bh(!a.F?(a.F=new eh(a)):a.F,c,b)} +function jc(b){var c=mB;try{for(var d in b){if(d!='name'&&d!='message'&&d!='toString'){try{c+='\n '+d+lB+b[d]}catch(a){}}}}catch(a){}return c} +function qn(a,b){var c,d,e,f;c=eb();f=false;for(e=new tz(a.q);e.b<e.d.zb();){d=bi(rz(e),35);if(c-d.b<=2500&&on(b,d.a)){f=true;break}}return f} +function aw(a,b){var c,d,e,f;c=new Ox;e=Bz(fy(a.a.a));f=true;while(qz(e.a.a)){d=bi(Hz(e),49);if(!d.ub(b)){f=false;Kx(c,d.b)}}return f?rD:rc(c.a)} +function ss(){Oq.call(this);this.a=(is(),fs);this.c=(ns(),ms);this.b=$doc.createElement(pC);sc(this.d,(Ns(),Os(this.b)));this.e[nC]=vC;this.e[oC]=vC} +function _p(a){if(!a.G){(Us(),pA(Ts,a))&&Ws(a)}else if(a.G){a.G.hb(a)}else if(a.G){throw new $w("This widget's parent does not implement HasWidgets")}} +function Yb(b,c){var a,d,e,f;for(d=0,e=b.length;d<e;++d){f=b[d];try{f[1]?f[0].L()&&(c=Wb(c,f)):f[0].M()}catch(a){a=Em(a);if(!di(a,56))throw a}}return c} +function wx(a){var b;b=0;while(0<=(b=a.indexOf('\\',b))){a.charCodeAt(b+1)==36?(a=a.substr(0,b-0)+'$'+ux(a,++b)):(a=a.substr(0,b-0)+ux(a,++b))}return a} +function hu(a,b){var c,d,e;d=$doc.createElement(pC);c=(e=$doc.createElement(qC),e[tC]=a.a.a,jo(e,uC,a.b.a),e);sc(d,(Ns(),Os(c)));sc(a.d,Os(d));mq(a,b,c)} +--></script> +<script><!-- +function mt(a,b){a.__lastScrollTop=a.__lastScrollLeft=0;a.attachEvent('onscroll',lt);a.attachEvent(BC,kt);b.attachEvent(BC,kt);b.__isScrollContainer=true} +function te(){te=HA;se=new we;qe=new ye;le=new Ae;me=new Ce;re=new Ee;pe=new Ge;ne=new Ie;ke=new Ke;oe=new Me;je=Uh(wm,LA,10,[se,qe,le,me,re,pe,ne,ke,oe])} +function Gs(a){Es(a);if(a.i){a.a.H.style[fC]=zC;a.a.B!=-1&&cr(a.a,a.a.v,a.a.B);rq((Us(),Ys(null)),a.a)}else{a.c||sq((Us(),Ys(null)),a.a)}a.a.H.style[jB]=mC} +function af(a){var b,c;b=a.b;if(b){return c=a.a,(c.clientY||0)-(Kc(b)+$wnd.pageYOffset)+(b.scrollTop||0)+(b.ownerDocument,$wnd.pageYOffset)}return a.a.clientY||0} +function Sw(a,b){var c;b.b=a;if(a==2){c=String.prototype}else{if(a>0){var d=Qw(b);if(d){c=d.prototype}else{d=Gm[a]=function(){};d.cZ=b;return}}else{return}}c.cZ=b} +function L(a){var b,c,d,e,f;b=Th(rm,JA,3,a.a.b,0);b=bi(Tz(a.a,b),4);c=new db;for(e=0,f=b.length;e<f;++e){d=b[e];Sz(a.a,d);B(d.a,c.a)}a.a.b>0&&S(a.b,ex(5,16-(eb()-c.a)))} +function Ru(a,b){var c,d;d=sx(a.k,a.d,b);if(d==-1)return new Ou(b,a.k.length,-1);c=sx(a.k,a.c,d);if(c==-1)return new Ou(b,a.k.length,-1);return new Ou(b,d,c+a.c.length)} +function mv(a,b,c){c!=-1?Vr(a.s,sC+c):Vr(a.s,sC);Yr(a.r,b.a.b+'<font color=blue>'+a.A+'<\/font><\/pre><br><br><br><font size=+1><\/font><\/body><\/html>');a.H=b.b;rv(a)} +function jx(){jx=HA;ix=Uh(qm,LA,-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function cx(a){var b,c,d;b=Th(qm,LA,-1,8,1);c=(jx(),ix);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return xx(b,d,8)} +function uo(a,b){var c,d,e,f,g;if(!!oo&&!!a&&dh(a,oo)){c=po.a;d=po.b;e=po.c;f=po.d;qo(po);ro(po,b);ch(a,po);g=!(po.a&&!po.b);po.a=c;po.b=d;po.c=e;po.d=f;return g}return true} +function ch(b,c){var a,d,e;!c.e||c.Q();e=c.f;Ue(c,b.b);try{nh(b.a,c)}catch(a){a=Em(a);if(di(a,47)){d=a;throw new Dh(d.a)}else throw a}finally{e==null?(c.e=true,c.f=null):(c.f=e)}} +function vs(){var a,b,c,d,e;b=null.Jb();e=Rc($doc);d=Qc($doc);b[wC]=(ed(),xC);b[ZB]=0+(te(),jC);b[$B]=kC;c=Uc($doc);a=Tc($doc);b[ZB]=(c>e?c:e)+jC;b[$B]=(a>d?a:d)+jC;b[wC]='block'} +function Sh(a,b){var c=new Array(b);if(a==3){for(var d=0;d<b;++d){var e=new Object;e.l=e.m=e.h=0;c[d]=e}}else if(a>0){var e=[null,0,false][a];for(var d=0;d<b;++d){c[d]=e}}return c} +function Zx(a){var b,c,d,e;d=new Ox;b=null;mc(d.a,'[');c=a.ib();while(c.mb()){b!=null?(mc(d.a,b),d):(b=ID);e=c.nb();mc(d.a,e===a?'(this Collection)':mB+e)}mc(d.a,']');return rc(d.a)} +function xy(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){c.length==1?delete h.a[b]:c.splice(d,1);--h.d;return f.Cb()}}}return null} +function ty(j,a,b,c){var d=j.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.Bb();if(j.Ab(a,h)){var i=g.Cb();g.Db(b);return i}}}else{d=j.a[c]=[]}var g=new AA(a,b);d.push(g);++j.d;return null} +function aq(a,b){var c;c=a.G;if(!b){try{!!c&&c.D&&a.eb()}finally{a.G=null}}else{if(c){throw new $w('Cannot set a new parent without first clearing the old parent')}a.G=b;b.D&&a.db()}} +function lh(a,b,c){if(!b){throw new hx('Cannot add a handler with a null type')}if(!c){throw new hx('Cannot add a null handler')}a.b>0?kh(a,new Eu(a,b,c)):mh(a,b,c);return new Cu(a,b,c)} +function Jm(a){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:a})} +function Hs(a,b){var c,d,e,f,g,h;a.i||(b=1-b);g=0;e=0;f=0;c=0;d=hi(b*a.d);h=hi(b*a.e);switch(0){case 2:case 0:g=a.d-d>>1;e=a.e-h>>1;f=e+h;c=g+d;}yu(a.a.H,'rect('+g+AC+f+AC+c+AC+e+'px)')} +function Aq(b,c){yq();var a,d,e,f,g;d=null;for(g=b.ib();g.mb();){f=bi(g.nb(),45);try{c.jb(f)}catch(a){a=Em(a);if(di(a,56)){e=a;!d&&(d=new rA);oA(d,e)}else throw a}}if(d){throw new zq(d)}} +function Fx(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c<e){b=a.charCodeAt(c+3)+31*(a.charCodeAt(c+2)+31*(a.charCodeAt(c+1)+31*(a.charCodeAt(c)+31*b)))|0;c+=4}while(c<d){b=b*31+ox(a,c++)}return b|0} +function Vh(a,b,c){if(c!=null){if(a.qI>0&&!ai(c,a.qI)){throw new Cw}else if(a.qI==-1&&(c.tM==HA||_h(c,1))){throw new Cw}else if(a.qI<-1&&!(c.tM!=HA&&!_h(c,1))&&!ai(c,-a.qI)){throw new Cw}}return a[b]=c} +function $p(a){if(!a.D){throw new $w("Should only call onDetach when the widget is attached to the browser's document")}try{a.gb();Hg(a,false)}finally{try{a.cb()}finally{a.H.__listener=null;a.D=false}}} +function Ys(a){Us();var b,c;c=bi(ny(Ss,a),42);b=null;if(a!=null){if(!(b=Sc($doc,a))){return null}}if(c){if(!b||c.H==b){return c}}Ss.d==0&&Io(new bt);!b?(c=new et):(c=new Vs(b));sy(Ss,a,c);oA(Ts,c);return c} +function Pc(a,b){if(a.nodeType!=1&&a.nodeType!=9){return a==b}if(b.nodeType!=1){b=b.parentNode;if(!b){return false}}if(a.nodeType==9){return a===b||a.body&&a.body.contains(b)}else{return a===b||a.contains(b)}} +function nu(a,b,c){var d,e;if(c<0||c>a.c){throw new ax}if(a.c==a.a.length){e=Th(zm,LA,45,a.a.length*2,0);for(d=0;d<a.a.length;++d){Vh(e,d,a.a[d])}a.a=e}++a.c;for(d=a.c-1;d>c;--d){Vh(a.a,d,a.a[d-1])}Vh(a.a,c,b)} +function Nv(){this.a='CAAGGCTATAACCGAGATTGATGCCTTGTGCGATAAGGTGTGTCCCCCCCCAAAGTGTCGGATGTCGAGTGCGCGTGCAAAAAAAAACAAAGGCGAGGACCTTAAGAAGGTGTGAGGGGGCGCTCGAT';this.e=BD;this.f=0;this.g=CD;this.c=DD;this.b=ED;this.d=FD} +function ec(a){var b,c,d;d=mB;a=vx(a);b=a.indexOf(pB);c=a.indexOf(qB)==0?8:0;if(b==-1){b=rx(a,String.fromCharCode(64));c=a.indexOf('function ')==0?9:0}b!=-1&&(d=vx(a.substr(c,b-c)));return d.length>0?d:'anonymous'} +function Hm(a,b,c){var d=Gm[a];if(d&&!d.cZ){_=d.prototype}else{!d&&(d=Gm[a]=function(){});_=d.prototype=b<0?{}:Im(b);_.cM=c}for(var e=3;e<arguments.length;++e){arguments[e].prototype=_}if(d.cZ){_.cZ=d.cZ;d.cZ=null}} +function tv(d){$doc.onkeypress=function(a){if(d.n){var a=$wnd.event||a;var b=String.fromCharCode(a.charCode);var c=a.charCode;d.qb(b,c)}};$doc.onkeydown=function(a){if(d.n){var a=$wnd.event||a;var b=a.keyCode;d.pb(b)}}} +function Ch(a){var b,c,d,e,f;c=a.zb();if(c==0){return null}b=new Tx(c==1?'Exception caught: ':c+' exceptions caught: ');d=true;for(f=a.ib();f.mb();){e=bi(f.nb(),56);d?(d=false):(mc(b.a,'; '),b);Sx(b,e.K())}return rc(b.a)} +function vt(a){var b,c;if(a.c){return false}a.c=(b=(!jn&&(jn=(Gw(),(!ag&&(ag=new ng),ag.a)&&!(c=navigator.userAgent.toLowerCase(),/android ([3-9]+)\.([0-9]+)/.exec(c)!=null)?Fw:Ew)),jn.a?new Bn:null),!!b&&yn(b,a),b);return !a.c} +function Up(a,b){var c=a.className.split(/\s+/);if(!c){return}var d=c[0];var e=d.length;c[0]=b;for(var f=1,g=c.length;f<g;f++){var h=c[f];h.length>e&&h.charAt(e)==cC&&h.indexOf(d)==0&&(c[f]=b+h.substring(e))}a.className=c.join(sB)} +function Yp(a){var b;if(a.D){throw new $w("Should only call onAttach when the widget is detached from the browser's document")}a.D=true;_o(a.H,a);b=a.E;a.E=-1;b>0&&(a.E==-1?lp(a.H,b|(a.H.__eventBits||0)):(a.E|=b));a.bb();a.fb();Hg(a,true)} +function un(a,b){var c,d;$n(a.j,null,0);if(a.r){return}d=mn(b);a.p=new cn(d.pageX,d.pageY);c=eb();$n(a.k,a.p,c);$n(a.e,a.p,c);a.n=null;if(a.g){Nz(a.q,new ao(a.p,c));Zb((Nb(),a.i),2500)}a.o=new cn(Mc(a.s.b),a.s.b.scrollTop||0);ln(a);a.r=true} +function vc(a,b){var c,d,e,f;b=vx(b);f=a.className;c=f.indexOf(b);while(c!=-1){if(c==0||f.charCodeAt(c-1)==32){d=c+b.length;e=f.length;if(d==e||d<e&&f.charCodeAt(d)==32){break}}c=f.indexOf(b,c+1)}if(c==-1){f.length>0&&(f+=sB);a.className=f+b}} +function gc(i){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=i.N(c.toString());b.push(d);var e=rB+d;var f=a[e];if(f){var g,h;for(g=0,h=f.length;g<h;g++){if(f[g]===c){return b}}}(f||(a[e]=[])).push(c);c=c.caller}return b} +function rp(g){var c=mB;var d=$wnd.location.hash;d.length>0&&(c=g.Y(d.substring(1)));wp(c);var e=g;var f=$wnd.onhashchange;$wnd.onhashchange=gB(function(){var a=mB,b=$wnd.location.hash;b.length>0&&(a=e.Y(b.substring(1)));e.Z(a);f&&f()});return true} +function cv(a,b,c,d,e,f,g){var h;this.a=new Uz;this.b=a;this.n=b;this.o=c;this.s=d;this.d=e;this.c=f;this.j=g;this.p=-1;this.t=-1;this.g=0;this.i=0;this.f=0;this.k=mB;this.e=mB;this.q=mB;this.r=mB;for(h=0;h<a.length;++h){Nz(this.a,new Tv(ox(this.b,h),h))}} +function Is(a,b,c){var d;a.c=c;w(a);if(a.g){R(a.g);a.g=null;Fs(a)}a.a.A=b;fr(a.a);d=!c&&a.a.t;a.i=b;if(d){if(b){Es(a);a.a.H.style[fC]=zC;a.a.B!=-1&&cr(a.a,a.a.v,a.a.B);a.a.H.style[yC]=lC;rq((Us(),Ys(null)),a.a);a.g=new Ls(a);S(a.g,1)}else{x(a,eb())}}else{Gs(a)}} +function xt(a){Uq.call(this);this.b=this.H;this.a=$doc.createElement(HB);sc(this.b,this.a);this.b.style[jB]=(ud(),'auto');this.b.style[fC]=(Kd(),CC);this.a.style[fC]=CC;this.b.style[DC]=EC;this.a.style[DC]=EC;vt(this);!gt&&(gt=new nt);mt(this.b,this.a);Tq(this,a)} +function Tm(a){var b,c,d,e,f,g,h,i,j,k,l,m;e=a.b;m=a.a;f=a.c;k=a.e;b=Math.pow(0.9993,m);g=e*5.0E-4;i=Sm(f.a,b,k.a,g);j=Sm(f.b,b,k.b,g);h=new cn(i,j);a.e=h;d=a.b;c=an(h,new cn(d,d));l=a.d;Ym(a,new cn(l.a+c.a,l.b+c.b));if(dx(h.a)<0.02&&dx(h.b)<0.02){return false}return true} +function Xb(a){var b,c,d,e,f,g;d=a.length;if(d==0){return null}b=false;f=eb();while(eb()-f<100){for(c=0;c<d;++c){g=a[c];if(!g){continue}if(!g[0].L()){a[c]=null;b=true}}}if(b){e=[];for(c=0;c<d;++c){!!a[c]&&(e[e.length]=a[c],undefined)}return e.length==0?null:e}else{return a}} +function av(a){var b,c,d,e,f,g;f=rx(a.b,a.n);g=sx(a.b,a.s,f);e=new Ox;if(f!=-1){c=0;a.p=f;a.g=a.p+a.n.length+a.o;g!=-1?(a.t=g):(a.t=a.b.length);for(b=a.g;b<a.t;++b){d=bi(Pz(a.a,b),48);d.c=true;++c}for(b=0;b<a.b.length;++b){d=bi(Pz(a.a,b),48);Kx(e,Sv(d))}a.k=vx(rc(e.a))}else{a.k=mB}} +function rv(e){function f(a,b,c){var d=document.createRange();d.selectNodeContents(a);d.setEnd(b,c);return d.toString().length} +var g=$doc.getElementById('dna-strand');g.style.cursor='pointer';g.onclick=function(){var a=$wnd.getSelection();var b=f(this,a.anchorNode,a.anchorOffset);e.rb(b);e.n=true}} +function Xv(a){var b;b=new Ox;mc(b.a,'State:\n');Kx(b,'\tStarting DNA='+a.f+aD);Kx(b,'\tStarting mRNA='+a.g+aD);Kx(b,'\tStarting protein='+a.i+aD);Kx(b,'\tSelected base='+a.e+aD);Kx(b,'\tCurrent DNA='+a.a+aD);Kx(b,'\tNum Exons='+a.b+aD);Kx(b,'\tRNA='+a.d+aD);Kx(b,'\tProtein='+a.c+'\n\n');return rc(b.a)} +function $u(a){var b,c,d,e,f,g;if(px(a.k,mB)){a.e=mB}else{c=0;f=new Ox;d=0;while(c!=-1){b=Ru(a,c);++a.i;c=b.c;for(e=b.b;e<b.a;++e){g=bi(Pz(a.a,e+a.g),48);g.d=true;++d;Kx(f,Sv(g))}}for(e=a.t;e<a.t+a.j.length;++e){if(e>=a.a.b){g=new Tv(65,e);g.d=true;Nz(a.a,g)}else{g=bi(Pz(a.a,e),48);g.d=true}}a.e=rc(f.a)+a.j}} +function Ps(){var c=function(){};c.prototype={className:mB,clientHeight:0,clientWidth:0,dir:mB,getAttribute:function(a,b){return this[a]},href:mB,id:mB,lang:mB,nodeType:1,removeAttribute:function(a,b){this[a]=undefined},setAttribute:function(a,b){this[a]=b},src:mB,style:{},title:mB};$wnd.GwtPotentialElementShim=c} +function yc(a,b){var c,d,e,f,g,h,i;b=vx(b);i=a.className;e=i.indexOf(b);while(e!=-1){if(e==0||i.charCodeAt(e-1)==32){f=e+b.length;g=i.length;if(f==g||f<g&&i.charCodeAt(f)==32){break}}e=i.indexOf(b,e+1)}if(e!=-1){c=vx(i.substr(0,e-0));d=vx(ux(i,e+b.length));c.length==0?(h=d):d.length==0?(h=c):(h=c+sB+d);a.className=h}} +function nh(b,c){var a,d,e,f,g,h;if(!c){throw new hx('Cannot fire null event')}try{++b.b;g=qh(b,c.P());d=null;h=b.c?g.Hb(g.zb()):g.Gb();while(b.c?h.b>0:h.b<h.d.zb()){f=b.c?yz(h):rz(h);try{c.O(bi(f,27))}catch(a){a=Em(a);if(di(a,56)){e=a;!d&&(d=new rA);oA(d,e)}else throw a}}if(d){throw new Ah(d)}}finally{--b.b;b.b==0&&sh(b)}} +function ur(a){var b,c,d,e;Vq.call(this,$doc.createElement(gC));d=this.H;this.b=$doc.createElement(hC);eo(d,this.b);d[nC]=0;d[oC]=0;for(b=0;b<a.length;++b){c=(e=$doc.createElement(pC),e[_B]=a[b],eo(e,vr(a[b]+'Left')),eo(e,vr(a[b]+'Center')),eo(e,vr(a[b]+'Right')),e);eo(this.b,c);b==1&&(this.a=Cc(hp(c,1)))}this.H[_B]='gwt-DecoratorPanel'} +function Zq(a){var b,c,d,e,f;d=a.A;c=a.t;if(!d){a.H.style[iC]=kB;a.t=false;!a.g&&(a.g=Ko(new Or(a)));er(a)}b=a.H;b.style[dC]=0+(te(),jC);b.style[eC]=kC;e=Rc($doc)-wc(a.H,iB)>>1;f=Qc($doc)-wc(a.H,hB)>>1;cr(a,ex($wnd.pageXOffset+e,0),ex($wnd.pageYOffset+f,0));if(!d){a.t=c;if(c){yu(a.H,lC);a.H.style[iC]=mC;x(a.z,eb())}else{a.H.style[iC]=mC}}} +function y(a,b){var c,d,e;c=a.q;d=b>=a.s+a.k;if(a.o&&!d){e=(b-a.s)/a.k;Hs(a,(1+Math.cos(3.141592653589793+e*3.141592653589793))/2);return a.n&&a.q==c}if(!a.o&&b>=a.s){a.o=true;a.d=wc(a.a.H,hB);a.e=wc(a.a.H,iB);a.a.H.style[jB]=kB;Hs(a,(1+Math.cos(3.141592653589793))/2);if(!(a.n&&a.q==c)){return false}}if(d){a.n=false;a.o=false;Fs(a);return false}return true} +function Zu(a,b,c,d,e){var f,g;f=new Ox;g=new Ox;b==a.p&&(mc(g.a,'<EM class=promoter>'),g);b==a.p+a.n.length&&(mc(g.a,gD),g);b==a.t&&(mc(g.a,'<EM class=terminator>'),g);b==a.t+a.s.length&&(mc(g.a,gD),g);if(d){mc(g.a,jD);mc(g.a,c);mc(g.a,gD);e?(mc(f.a,c),f):Kx(f,c.toLowerCase())}else{mc(g.a,c);e?Kx(f,c.toLowerCase()):(mc(f.a,c),f)}return new Pv(rc(g.a),rc(f.a))} +function yn(a,b){var c,d;if(a.s==b){return}ln(a);for(d=new tz(a.d);d.b<d.d.zb();){c=bi(rz(d),28);Bu(c.a)}Oz(a.d);vn(a);wn(a);a.s=b;if(b){b.D&&(wn(a),a.b=mo(new Nn(a)));a.a=Wp(b,new Dn(a),(!Dg&&(Dg=new nf),Dg));Nz(a.d,Vp(b,new Fn(a),(xg(),xg(),wg)));Nz(a.d,Vp(b,new Hn(a),(qg(),qg(),pg)));Nz(a.d,Vp(b,new Jn(a),(ig(),ig(),hg)));Nz(a.d,Vp(b,new Ln(a),(cg(),cg(),bg)))}} +function ot(){lt=function(){var a=$wnd.event.srcElement;a.__lastScrollTop=a.scrollTop;a.__lastScrollLeft=a.scrollLeft};kt=function(){var a=$wnd.event.srcElement;a.__isScrollContainer&&(a=a.parentNode);setTimeout(gB(function(){if(a.scrollTop!=a.__lastScrollTop||a.scrollLeft!=a.__lastScrollLeft){a.__lastScrollTop=a.scrollTop;a.__lastScrollLeft=a.scrollLeft;pt(a)}}),1)}} +function Mo(){if(!Ho){xp("function __gwt_initWindowResizeHandler(resize) {\n var wnd = window, oldOnResize = wnd.onresize;\n \n wnd.onresize = function(evt) {\n try {\n resize();\n } finally {\n oldOnResize && oldOnResize(evt);\n }\n };\n \n // Remove the reference once we've initialize the handler\n wnd.__gwt_initWindowResizeHandler = undefined;\n}\n",new Cp);Ho=true}} +function Dm(){var a;!!$stats&&Jm('com.google.gwt.useragent.client.UserAgentAsserter');a=zu();px(MB,a)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (ie9) does not match the runtime user.agent value ('+a+'). Expect more errors.\n'),undefined);!!$stats&&Jm('com.google.gwt.user.client.DocumentModeAsserter');ko();!!$stats&&Jm('genex.client.gx.GenexGWT');lv(new nv)} +function bv(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(px(a.e,mB)){a.q=mB}else{h=0;l=new Ox;for(j=0;j<a.a.b;++j){b=bi(Pz(a.a,j),48);if(b.d){c=Xu(a,j);d=Xu(a,c.e+1);e=Xu(a,d.e+1);f=Sv(c)+Sv(d)+Sv(e);h=e.e;if(px(f,KC)){_u(0,c,d,e);Kx(l,Ju(f));break}}}g=1;k=h+1;while(k<=a.a.b){i=Xu(a,k);m=Xu(a,i.e+1);n=Xu(a,m.e+1);f=Sv(i)+Sv(m)+Sv(n);if(k+2>=a.a.b)break;k=n.e+1;Kx(l,Ju(f));_u(g,i,m,n);if(px(Ju(f),mB)){_u(-2,i,m,n);break}++g}a.q=rc(l.a)}} +function kp(a,b){switch(b){case 'drag':a.ondrag=fp;break;case 'dragend':a.ondragend=fp;break;case YB:a.ondragenter=ep;break;case 'dragleave':a.ondragleave=fp;break;case XB:a.ondragover=ep;break;case 'dragstart':a.ondragstart=fp;break;case 'drop':a.ondrop=fp;break;case 'canplaythrough':case 'ended':case 'progress':a.removeEventListener(b,fp,false);a.addEventListener(b,fp,false);break;default:throw 'Trying to sink unknown event type '+b;}} +function Uu(a,b){var c,d,e,f,g,h;c=new Ox;d=new Ox;h=new Ox;if(px(a.d,xC)||px(a.c,xC)){for(e=0;e<a.g;++e){mc(h.a,sB);mc(c.a,sB)}}if(px(a.q,mB)){mc(h.a,dD);mc(c.a,eD)}else{for(e=0;e<a.b.length;++e){f=bi(Pz(a.a,e),48);if(f.d){if(f.a==0){break}mc(h.a,sB);mc(c.a,sB)}}mc(h.a,fD);Kx(c,fD+a.q+'-C\n');if(b!=-1){g=new Px(a.q);f=bi(Pz(a.a,b),48);if(f.a>=0){g=Mx(g,f.a*3+3,gD);g=Mx(g,f.a*3+f.f+1,hD);g=Mx(g,f.a*3+f.f,iD);g=Mx(g,f.a*3,jD)}Kx(h,rc(g.a)+kD)}else{Kx(h,a.q+kD)}}a.r=rc(h.a);Kx(d,a.r+aD);return new Pv(rc(d.a),rc(c.a))} +function br(a,b){var c,d,e,f;if(b.a||!a.y&&b.b){a.w&&(b.a=true);return}a.W(b);if(b.a){return}d=b.d;c=$q(a,d);c&&(b.b=true);a.w&&(b.a=true);f=Zo(d.type);switch(f){case 512:case 256:case 128:{((d.keyCode||0)&65535,(d.shiftKey?1:0)|(d.metaKey?8:0)|(d.ctrlKey?2:0)|(d.altKey?4:0),true)||(b.a=true);return}case 4:case 1048576:if(co){b.b=true;return}if(!c&&a.k){_q(a);return}break;case 8:case 64:case 1:case 2:case 4194304:{if(co){b.b=true;return}break}case 2048:{e=d.target;if(a.w&&!c&&!!e){e.blur&&e!=$doc.body&&e.blur();b.a=true;return}break}}} +function zu(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(FC)!=-1}())return FC;if(function(){return b.indexOf('webkit')!=-1}())return 'safari';if(function(){return b.indexOf(GC)!=-1&&$doc.documentMode>=9}())return MB;if(function(){return b.indexOf(GC)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return 'ie6';if(function(){return b.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'} +function tn(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(!a.r){return}i=mn(b);j=new cn(i.pageX,i.pageY);k=eb();$n(a.e,j,k);if(!a.c){e=_m(j,a.p);c=dx(e.a);d=dx(e.b);if(c>5||d>5){$n(a.j,a.k.a,a.k.b);if(c>d){h=Mc(a.s.b);g=tt(a.s);f=rt(a.s);if(e.a<0&&f<=h){ln(a);return}else if(e.a>0&&g>=h){ln(a);return}}else{n=a.s.b.scrollTop||0;m=st(a.s);if(e.b<0&&m<=n){ln(a);return}else if(e.b>0&&0>=n){ln(a);return}}a.c=true}}b.a.preventDefault();if(a.c){o=_m(a.p,a.e.a);p=bn(a.o,o);ut(a.s,hi(p.a));wt(a.s,hi(p.b));l=k-a.k.b;if(l>200&&!!a.n){$n(a.k,a.n.a,a.n.b);a.n=null}else l>100&&!a.n&&(a.n=new ao(j,k))}} +function Zo(a){switch(a){case 'blur':return 4096;case 'change':return 1024;case zB:return 1;case OB:return 2;case 'focus':return 2048;case PB:return 128;case QB:return 256;case RB:return 512;case 'load':return 32768;case 'losecapture':return 8192;case AB:return 4;case BB:return 64;case CB:return 32;case DB:return 16;case EB:return 8;case SB:return 16384;case 'error':return 65536;case 'DOMMouseScroll':case TB:return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case JB:return 1048576;case IB:return 2097152;case GB:return 4194304;case FB:return 8388608;case UB:return 16777216;case VB:return 33554432;case WB:return 67108864;default:return -1;}} +function lv(a){a.r=new Zr;a.F=new xt(a.r);Kp(a.F);Lp(a.F,'genex-scrollpanel');rq(Ys(sD),a.F);a.j=new Gr;Mp(a.j,'genex-dialogbox');a.k=new iu;Vr(a.j.a,'New DNA Sequence');a.v=new $r;Lp(a.v,'genex-dialogbox-message');a.o=new Qt;a.c=new Mq('Cancel');Mp(a.c,tD);Vp(a.c,new xv(a),(cf(),cf(),bf));a.x=new Mq(rD);Mp(a.x,tD);Vp(a.x,new Dv(a),bf);a.q=new ss;rs(a.q,a.c);rs(a.q,a.x);hu(a.k,a.v);hu(a.k,a.o);hu(a.k,a.q);nr(a.j,a.k);a.E=new Mq('Reset DNA Sequence');Mp(a.E,tD);Vp(a.E,new Gv(a),bf);a.w=new Mq('Enter New DNA Sequence');Mp(a.w,tD);Vp(a.w,new Jv(a),bf);a.s=new Xr;Mp(a.s,'genex-label');a.p=new ss;rs(a.p,a.E);rs(a.p,a.w);rs(a.p,a.s);rq(Ys(sD),a.p);Tb((Nb(),Mb),new Av(a))} +function Hr(a){var b,c,d;Uq.call(this);this.r=new ws;this.z=new Js(this);sc(this.H,$doc.createElement(HB));cr(this,0,0);Dc(Cc(this.H))[_B]='gwt-PopupPanel';Cc(this.H)[_B]=rC;this.k=false;this.n=false;this.w=true;d=Uh(Cm,LA,1,['dialogTop','dialogMiddle','dialogBottom']);this.j=new ur(d);Lp(this.j,mB);Rp(Dc(Cc(this.H)),'gwt-DecoratedPopupPanel');dr(this,this.j);Qp(Cc(this.H),rC,false);Qp(this.j.a,'dialogContent',true);_p(a);this.a=a;c=tr(this.j);sc(c,(Ns(),Os(this.a.H)));jq(this,this.a);Dc(Cc(this.H))[_B]='gwt-DialogBox';this.i=Rc($doc);this.b=0;this.c=0;b=new bs(this);Vp(this,b,(rf(),rf(),qf));Vp(this,b,(Rf(),Rf(),Qf));Vp(this,b,(yf(),yf(),xf));Vp(this,b,(Lf(),Lf(),Kf));Vp(this,b,(Ff(),Ff(),Ef))} +function Wu(a){var b,c,d,e,f,g,h;b=new Ox;c=new Ox;f=false;e=new Mu;if(!(px(a.d,xC)||px(a.c,xC))){mc(c.a,'<\/pre><h3>pre-mRNA: <EM class=exon>Ex<\/EM><EM class=next>o<\/EM><EM class=another>n<\/EM> Intron<\/h3><pre>');mc(b.a,'<\/pre><h3>pre-mRNA: EXON intron<\/h3><pre>');if(px(a.k,mB)){mc(c.a,dD);mc(b.a,eD)}else{for(g=0;g<a.g;++g){mc(c.a,sB);mc(b.a,sB)}mc(c.a,$C);mc(b.a,$C);for(g=0;g<a.b.length;++g){d=bi(Pz(a.a,g),48);g!=0?(h=bi(Pz(a.a,g-1),48)):(h=bi(Pz(a.a,0),48));if(d.c){if(!h.d&&d.d){Kx(c,nD+Lu(e)+oD);f=true}if(h.d&&!d.d){mc(c.a,gD);f=false}if(d.g){mc(c.a,jD);Kx(c,Sv(d));mc(c.a,gD);f?Kx(b,Sv(d).toLowerCase()):Kx(b,Sv(d))}else{Kx(c,Sv(d));f?Kx(b,Sv(d)):Kx(b,Sv(d).toLowerCase())}}}mc(c.a,"<\/EM>-3'\n");mc(b.a,pD)}}return new Pv(rc(c.a),rc(b.a))} +function Tu(a,b){var c,d,e,f,g,h,i,j,k;if(b!=-1){h=bi(Pz(a.a,b),48);h.g=true}e=new Ox;d=new Ox;f=(k=new Ox,mc(k.a,'<html><head>'),mc(k.a,'<style type="text/css">'),mc(k.a,'EM.selected {font-style: normal; background: blue; color: red}'),mc(k.a,'EM.promoter {font-style: normal; background: #90FF90; color: black}'),mc(k.a,'EM.terminator {font-style: normal; background: #FF9090; color: black}'),mc(k.a,'EM.exon {font-style: normal; background: #FF90FF; color: black}'),mc(k.a,'EM.next {font-style: normal; background: #FF8C00; color: black}'),mc(k.a,'EM.another {font-style: normal; background: #FFFF50; color: black}'),mc(k.a,'<\/style><\/head><body>'),new Pv(rc(k.a),mB));Kx(e,f.b);Kx(d,f.a);c=Su(a);Kx(e,c.b);Kx(d,c.a);a.f=Qu(c.b);i=Wu(a);Kx(e,i.b);Kx(d,i.a);g=Vu(a);Kx(e,g.b);Kx(d,g.a);j=Uu(a,b);Kx(e,j.b);Kx(d,j.a);return new Pv(rc(e.a),rc(d.a))} +function ko(){var a,b,c;b=$doc.compatMode;a=Uh(Cm,LA,1,[uB]);for(c=0;c<a.length;++c){if(px(a[c],b)){return}}a.length==1&&px(uB,a[0])&&px('BackCompat',b)?"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 <!doctype html> 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> <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').<br>Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} +function Vu(a){var b,c,d,e,f,g,h,i,j;b=new Ox;c=new Ox;f=false;h=false;e=new Mu;mc(c.a,lD);mc(b.a,lD);if(!(px(a.d,xC)||px(a.c,xC))){mc(c.a,mD);mc(b.a,mD)}mc(c.a,'mRNA and Protein (<font color=blue>previous<\/font>):<\/h3><pre>');mc(b.a,'mRNA and Protein (previous on line below):<\/h3><pre>');if(px(a.d,xC)||px(a.c,xC)){for(g=0;g<a.g;++g){mc(c.a,sB);mc(b.a,sB)}}if(px(a.e,mB)){mc(c.a,dD);mc(b.a,eD)}else{mc(c.a,$C);mc(b.a,$C);for(g=0;g<a.a.b;++g){d=bi(Pz(a.a,g),48);g!=0?(j=bi(Pz(a.a,g-1),48)):(j=bi(Pz(a.a,0),48));g!=a.a.b-1?(i=bi(Pz(a.a,g+1),48)):(i=bi(Pz(a.a,g),48));if(d.d){if(!j.d&&d.d){Kx(c,nD+Lu(e)+oD);f&&(mc(c.a,iD),c)}if(!d.c&&d.d&&!h){mc(c.a,gD);h=true}if((d.a==0||d.a==-2)&&d.f==0&&d.c){mc(c.a,iD);f=true}if(d.a==1&&d.f==0){mc(c.a,hD);f=false}if(d.a==-1&&j.a==-2){mc(c.a,hD);f=false}if(d.g&&d.c){mc(c.a,jD);Kx(c,Sv(d));mc(c.a,gD);f?Kx(b,Sv(d)):Kx(b,Sv(d).toLowerCase())}else{Kx(c,Sv(d));f?Kx(b,Sv(d).toLowerCase()):Kx(b,Sv(d))}d.d&&!i.d&&(mc(c.a,gD),c)}}mc(c.a,pD);mc(b.a,pD)}return new Pv(rc(c.a),rc(b.a))} +function Lo(){if(!Do){xp('function __gwt_initWindowCloseHandler(beforeunload, unload) {\n var wnd = window\n , oldOnBeforeUnload = wnd.onbeforeunload\n , oldOnUnload = wnd.onunload;\n \n wnd.onbeforeunload = function(evt) {\n var ret, oldRet;\n try {\n ret = beforeunload();\n } finally {\n oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);\n }\n // Avoid returning null as IE6 will coerce it into a string.\n // Ensure that "" gets returned properly.\n if (ret != null) {\n return ret;\n }\n if (oldRet != null) {\n return oldRet;\n }\n // returns undefined.\n };\n \n wnd.onunload = function(evt) {\n try {\n unload();\n } finally {\n oldOnUnload && oldOnUnload(evt);\n wnd.onresize = null;\n wnd.onscroll = null;\n wnd.onbeforeunload = null;\n wnd.onunload = null;\n }\n };\n \n // Remove the reference once we\'ve initialize the handler\n wnd.__gwt_initWindowCloseHandler = undefined;\n}\n',new zp);Do=true}} +function Su(a){var b,c,d,e,f,g,h,i,j,k,l,m;d=new Ox;h=new Ox;j=false;mc(h.a,'<html><h3>DNA: <EM class=promoter>Promoter<\/EM>');mc(h.a,'<EM class=terminator>Terminator<\/EM><\/h3><pre>\n');mc(d.a,'<h3>DNA: promoter, terminator<\/h3><pre>\n');mc(h.a,_C);mc(d.a,_C);for(k=0;k<a.b.length;k=k+10){k==0?(m=mB):k<100?(m=' '+k):(m=' '+k);mc(h.a,m);mc(d.a,m)}mc(h.a,aD);mc(d.a,aD);mc(h.a,_C);mc(d.a,_C);for(k=0;k<a.b.length;k=k+10){if(k>0){mc(h.a,bD);mc(d.a,bD)}}mc(h.a,aD);mc(d.a,aD);i=new Ox;f=new Ox;g=new Ox;e=new Ox;b=new Ox;c=new Ox;for(k=0;k<a.b.length;++k){l=bi(Pz(a.a,k),48);k==a.p&&(j=true);k==a.p+a.n.length&&(j=false);k==a.t&&(j=true);k==a.t+a.s.length&&(j=false);Kx(i,Zu(a,k,Ax(l.b),l.g,j).b);Kx(f,Zu(a,k,cD,l.g,j).b);Kx(g,Zu(a,k,Rv(l),l.g,j).b);Kx(e,Zu(a,k,Ax(l.b),l.g,j).a);Kx(b,Zu(a,k,cD,l.g,j).a);Kx(c,Zu(a,k,Rv(l),l.g,j).a)}mc(h.a,"5'-<span id='dna-strand'>");Kx(h,rc(i.a)+"<\/EM><\/span>-3'\n "+rc(f.a)+"<\/EM>\n3'-"+rc(g.a));mc(h.a,"<\/EM>-5'\n");mc(d.a,$C);Kx(d,rc(e.a)+"-3'\n "+rc(b.a)+"\n3'-"+rc(c.a));mc(d.a,"-5'\n");return new Pv(rc(h.a),rc(d.a))} +function ip(){cp=gB(function(a){if(!go(a)){a.stopPropagation();a.preventDefault();return false}return true});fp=gB(function(a){var b,c=this;while(c&&!(b=c.__listener)){c=c.parentNode}c&&c.nodeType!=1&&(c=null);b&&ap(b)&&fo(a,c,b)});ep=gB(function(a){a.preventDefault();fp.call(this,a)});gp=gB(function(a){this.__gwtLastUnhandledEvent=a.type;fp.call(this,a)});dp=gB(function(a){var b=cp;if(b(a)){var c=bp;if(c&&c.__listener){if(ap(c.__listener)){fo(a,c,c.__listener);a.stopPropagation()}}}});$wnd.addEventListener(zB,dp,true);$wnd.addEventListener(OB,dp,true);$wnd.addEventListener(AB,dp,true);$wnd.addEventListener(EB,dp,true);$wnd.addEventListener(BB,dp,true);$wnd.addEventListener(DB,dp,true);$wnd.addEventListener(CB,dp,true);$wnd.addEventListener(TB,dp,true);$wnd.addEventListener(PB,cp,true);$wnd.addEventListener(RB,cp,true);$wnd.addEventListener(QB,cp,true);$wnd.addEventListener(JB,dp,true);$wnd.addEventListener(IB,dp,true);$wnd.addEventListener(GB,dp,true);$wnd.addEventListener(FB,dp,true);$wnd.addEventListener(UB,dp,true);$wnd.addEventListener(VB,dp,true);$wnd.addEventListener(WB,dp,true)} +function mp(a,b){var c=(a.__eventBits||0)^b;a.__eventBits=b;if(!c)return;c&1&&(a.onclick=b&1?fp:null);c&2&&(a.ondblclick=b&2?fp:null);c&4&&(a.onmousedown=b&4?fp:null);c&8&&(a.onmouseup=b&8?fp:null);c&16&&(a.onmouseover=b&16?fp:null);c&32&&(a.onmouseout=b&32?fp:null);c&64&&(a.onmousemove=b&64?fp:null);c&128&&(a.onkeydown=b&128?fp:null);c&256&&(a.onkeypress=b&256?fp:null);c&512&&(a.onkeyup=b&512?fp:null);c&1024&&(a.onchange=b&1024?fp:null);c&2048&&(a.onfocus=b&2048?fp:null);c&4096&&(a.onblur=b&4096?fp:null);c&8192&&(a.onlosecapture=b&8192?fp:null);c&16384&&(a.onscroll=b&16384?fp:null);c&32768&&(a.onload=b&32768?gp:null);c&65536&&(a.onerror=b&65536?fp:null);c&131072&&(a.onmousewheel=b&131072?fp:null);c&262144&&(a.oncontextmenu=b&262144?fp:null);c&524288&&(a.onpaste=b&524288?fp:null);c&1048576&&(a.ontouchstart=b&1048576?fp:null);c&2097152&&(a.ontouchmove=b&2097152?fp:null);c&4194304&&(a.ontouchend=b&4194304?fp:null);c&8388608&&(a.ontouchcancel=b&8388608?fp:null);c&16777216&&(a.ongesturestart=b&16777216?fp:null);c&33554432&&(a.ongesturechange=b&33554432?fp:null);c&67108864&&(a.ongestureend=b&67108864?fp:null)} +function Ju(a){if(px(a,'UUU'))return HC;if(px(a,'UUC'))return HC;if(px(a,'UUA'))return IC;if(px(a,'UUG'))return IC;if(px(a,'CUU'))return IC;if(px(a,'CUC'))return IC;if(px(a,'CUA'))return IC;if(px(a,'CUG'))return IC;if(px(a,'AUU'))return JC;if(px(a,'AUC'))return JC;if(px(a,'AUA'))return JC;if(px(a,KC))return 'Met';if(px(a,'GUU'))return LC;if(px(a,'GUC'))return LC;if(px(a,'GUA'))return LC;if(px(a,'GUG'))return LC;if(px(a,'UCU'))return MC;if(px(a,'UCC'))return MC;if(px(a,'UCA'))return MC;if(px(a,'UCG'))return MC;if(px(a,'CCU'))return NC;if(px(a,'CCC'))return NC;if(px(a,'CCA'))return NC;if(px(a,'CCG'))return NC;if(px(a,'ACU'))return OC;if(px(a,'ACC'))return OC;if(px(a,'ACA'))return OC;if(px(a,'ACG'))return OC;if(px(a,'GCU'))return PC;if(px(a,'GCC'))return PC;if(px(a,'GCA'))return PC;if(px(a,'GCG'))return PC;if(px(a,'UAU'))return QC;if(px(a,'UAC'))return QC;if(px(a,'UAA'))return mB;if(px(a,'UAG'))return mB;if(px(a,'CAU'))return RC;if(px(a,'CAC'))return RC;if(px(a,'CAA'))return SC;if(px(a,'CAG'))return SC;if(px(a,'AAU'))return TC;if(px(a,'AAC'))return TC;if(px(a,'AAA'))return UC;if(px(a,'AAG'))return UC;if(px(a,'GAU'))return VC;if(px(a,'GAC'))return VC;if(px(a,'GAA'))return WC;if(px(a,'GAG'))return WC;if(px(a,'UGU'))return XC;if(px(a,'UGC'))return XC;if(px(a,'UGA'))return mB;if(px(a,'UGG'))return 'Trp';if(px(a,'CGU'))return YC;if(px(a,'CGC'))return YC;if(px(a,'CGA'))return YC;if(px(a,'CGG'))return YC;if(px(a,'AGU'))return MC;if(px(a,'AGC'))return MC;if(px(a,'AGA'))return YC;if(px(a,'AGG'))return YC;if(px(a,'GGU'))return ZC;if(px(a,'GGC'))return ZC;if(px(a,'GGA'))return ZC;if(px(a,'GGG'))return ZC;return mB} +--></script> +<script><!-- +var mB='',aD='\n',sB=' ',_C=' ',bD=' . |',fD=' N-',pB='(',NB=')',zD='+',ID=', ',cC='-',pD="-3'\n",kD='-C',vC='0',kC='0px',EC='1',$C="5'-",rB=':',lB=': ',gD='<\/EM>',lD='<\/pre><h3>',hD='<\/u>',nD='<EM class=',jD='<EM class=selected>',dD='<font color=red>none<\/font>\n',iD='<u>',AD='=',oD='>',uD='A',FD='AAAAAAAAAAAAA',KC='AUG',PC='Ala',YC='Arg',TC='Asn',VC='Asp',wD='C',ED='CAAAG',vB='CENTER',uB='CSS1Compat',XC='Cys',vD='G',CD='GGGGG',DD='GUGCG',SC='Gln',WC='Glu',ZC='Gly',RC='His',qD='INCORRECT',JC='Ile',wB='JUSTIFY',xB='LEFT',IC='Leu',UC='Lys',aC='Null widget handle. If you are creating a composite, ensure that initWidget() has been called.',rD='OK',HC='Phe',NC='Pro',yB='RIGHT',sC='Selected Base = ',MC='Ser',oB='String',bC='Style names cannot be empty',xD='T',BD='TATAA',OC='Thr',QC='Tyr',QD='UmbrellaException',LC='Val',GD='You did not make a single base substitution.',ZD='[Lcom.google.gwt.dom.client.',UD='[Lcom.google.gwt.user.client.ui.',LD='[Ljava.lang.',zC='absolute',tC='align',oC='cellPadding',nC='cellSpacing',_B='className',zB='click',yC='clip',SD='com.google.gwt.animation.client.',KD='com.google.gwt.core.client.',XD='com.google.gwt.core.client.impl.',YD='com.google.gwt.dom.client.',WD='com.google.gwt.event.dom.client.',_D='com.google.gwt.event.logical.shared.',RD='com.google.gwt.event.shared.',OD='com.google.gwt.i18n.client.',aE='com.google.gwt.text.shared.testing.',bE='com.google.gwt.touch.client.',TD='com.google.gwt.user.client.',$D='com.google.gwt.user.client.impl.',ND='com.google.gwt.user.client.ui.',PD='com.google.web.bindery.event.shared.',OB='dblclick',KB='dir',wC='display',HB='div',YB='dragenter',XB='dragover',qB='function',yD='g',tD='genex-button',MD='genex.client.gx.',dE='genex.client.problems.',cE='genex.client.requirements.',sD='genex_container',VB='gesturechange',WB='gestureend',UB='gesturestart',$B='height',kB='hidden',MB='ie9',JD='java.lang.',VD='java.util.',PB='keydown',QB='keypress',RB='keyup',dC='left',LB='ltr',mD='mature-',AB='mousedown',BB='mousemove',CB='mouseout',DB='mouseover',EB='mouseup',TB='mousewheel',GC='msie',xC='none',eD='none\n',nB='null',hB='offsetHeight',iB='offsetWidth',BC='onresize',FC='opera',jB='overflow',rC='popupContent',fC='position',jC='px',AC='px, ',lC='rect(0px, 0px, 0px, 0px)',CC='relative',tB='rtl',SB='scroll',gC='table',hC='tbody',qC='td',eC='top',FB='touchcancel',GB='touchend',IB='touchmove',JB='touchstart',pC='tr',HD='value',uC='verticalAlign',iC='visibility',mC='visible',ZB='width',DC='zoom',cD='|';var _,Gm={},VA={25:1,27:1},dB={60:1},QA={6:1,9:1,50:1,53:1,54:1},LA={50:1},IA={},$A={46:1},bB={52:1},fB={50:1,57:1},XA={24:1,29:1,37:1,40:1,41:1,43:1,45:1},cB={58:1},_A={11:1,27:1},SA={29:1},TA={47:1,50:1,56:1},MA={50:1,56:1},PA={6:1,8:1,50:1,53:1,54:1},eB={59:1},OA={6:1,7:1,50:1,53:1,54:1},NA={5:1,6:1,50:1,53:1,54:1},WA={23:1,27:1},ZA={44:1,50:1,53:1,54:1},JA={4:1,50:1},UA={27:1,36:1},KA={38:1},YA={24:1,29:1,37:1,40:1,41:1,42:1,43:1,45:1},aB={49:1},RA={10:1,50:1,53:1,54:1};Hm(1,-1,IA);_.eQ=function s(a){return this===a};_.gC=function t(){return this.cZ};_.hC=function u(){return Ib(this)};_.tS=function v(){return this.cZ.c+'@'+cx(this.hC())};_.toString=function(){return this.tS()};_.tM=HA;Hm(3,1,{});_.k=-1;_.n=false;_.o=false;_.p=null;_.q=-1;_.r=null;_.s=-1;_.t=false;Hm(4,1,{},C);_.a=null;Hm(5,1,{});Hm(6,1,{2:1});Hm(7,5,{});var G=null;Hm(8,7,{},M);Hm(10,1,KA);_.I=function W(){this.b||Sz(P,this);this.J()};_.b=false;_.c=0;var P;Hm(9,10,KA,X);_.J=function Y(){L(this.a)};_.a=null;Hm(11,6,{2:1,3:1},ab);_.a=null;_.b=null;Hm(12,1,{},db);Hm(17,1,MA);_.K=function kb(){return this.e};_.tS=function lb(){var a,b;a=this.cZ.c;b=this.K();return b!=null?a+lB+b:a};_.e=null;Hm(16,17,MA);Hm(15,16,MA,mb);Hm(14,15,MA,ob);_.K=function ub(){this.c==null&&(this.d=rb(this.b),this.a=this.a+lB+pb(this.b),this.c=pB+this.d+') '+tb(this.b)+this.a,undefined);return this.c};_.a=mB;_.b=null;_.c=null;_.d=null;Hm(21,1,{});var zb=0,Ab=0,Bb=0,Cb=-1;Hm(23,21,{},Ub);_.a=null;_.b=null;_.c=null;_.d=false;_.e=null;_.f=null;_.g=null;_.i=false;var Mb;Hm(24,1,{},_b);_.L=function ac(){this.a.d=true;Qb(this.a);this.a.d=false;return this.a.i=Rb(this.a)};_.a=null;Hm(25,1,{},cc);_.L=function dc(){this.a.d&&Zb(this.a.e,1);return this.a.i};_.a=null;Hm(28,1,{},kc);_.N=function lc(a){return ec(a)};Hm(46,1,{50:1,53:1,54:1});_.eQ=function Yc(a){return this===a};_.hC=function Zc(){return Ib(this)};_.tS=function $c(){return this.a};_.a=null;_.b=0;Hm(45,46,NA);var _c,ad,bd,cd,dd;Hm(47,45,NA,hd);Hm(48,45,NA,jd);Hm(49,45,NA,ld);Hm(50,45,NA,nd);Hm(51,46,OA);var pd,qd,rd,sd,td;Hm(52,51,OA,xd);Hm(53,51,OA,zd);Hm(54,51,OA,Bd);Hm(55,51,OA,Dd);Hm(56,46,PA);var Fd,Gd,Hd,Id,Jd;Hm(57,56,PA,Nd);Hm(58,56,PA,Pd);Hm(59,56,PA,Rd);Hm(60,56,PA,Td);Hm(61,46,QA);var Vd,Wd,Xd,Yd,Zd;Hm(62,61,QA,be);Hm(63,61,QA,de);Hm(64,61,QA,fe);Hm(65,61,QA,he);Hm(66,46,RA);var je,ke,le,me,ne,oe,pe,qe,re,se;Hm(67,66,RA,we);Hm(68,66,RA,ye);Hm(69,66,RA,Ae);Hm(70,66,RA,Ce);Hm(71,66,RA,Ee);Hm(72,66,RA,Ge);Hm(73,66,RA,Ie);Hm(74,66,RA,Ke);Hm(75,66,RA,Me);Hm(81,1,{});_.tS=function Te(){return 'An event type'};_.f=null;Hm(80,81,{});_.Q=function Ve(){this.e=false;this.f=null};_.e=false;Hm(79,80,{});_.P=function $e(){return this.R()};_.a=null;_.b=null;var We=null;Hm(78,79,{});Hm(77,78,{});Hm(76,77,{},df);_.O=function ef(a){bi(a,11).S(this)};_.R=function ff(){return bf};var bf;Hm(84,1,{});_.hC=function lf(){return this.c};_.tS=function mf(){return 'Event type'};_.c=0;var kf=0;Hm(83,84,{},nf);Hm(82,83,{12:1},of);_.a=null;_.b=null;Hm(85,77,{},tf);_.O=function uf(a){sf(this,bi(a,13))};_.R=function vf(){return qf};var qf;Hm(86,77,{},Af);_.O=function Bf(a){zf(this,bi(a,14))};_.R=function Cf(){return xf};var xf;Hm(87,77,{},Gf);_.O=function Hf(a){bi(bi(a,15),39)};_.R=function If(){return Ef};var Ef;Hm(88,77,{},Mf);_.O=function Nf(a){bi(bi(a,16),39)};_.R=function Of(){return Kf};var Kf;Hm(89,77,{},Tf);_.O=function Uf(a){Sf(this,bi(a,17))};_.R=function Vf(){return Qf};var Qf;Hm(90,1,{},Zf);_.a=null;Hm(93,78,{});var ag=null;Hm(92,93,{},dg);_.O=function eg(a){sn(bi(bi(a,18),34).a)};_.R=function fg(){return bg};var bg;Hm(94,93,{},jg);_.O=function kg(a){sn(bi(bi(a,19),33).a)};_.R=function lg(){return hg};var hg;Hm(95,1,{},ng);Hm(96,93,{},sg);_.O=function tg(a){rg(this,bi(a,20))};_.R=function ug(){return pg};var pg;Hm(97,93,{},zg);_.O=function Ag(a){yg(this,bi(a,21))};_.R=function Bg(){return wg};var wg;Hm(98,80,{},Fg);_.O=function Gg(a){Eg(this,bi(a,22))};_.P=function Ig(){return Dg};_.a=false;var Dg=null;Hm(99,80,{},Lg);_.O=function Mg(a){bi(a,23).T(this)};_.P=function Og(){return Kg};var Kg=null;Hm(100,80,{},Rg);_.O=function Sg(a){bi(a,25).U(this)};_.P=function Ug(){return Qg};_.a=0;var Qg=null;Hm(101,80,{},Yg);_.O=function Zg(a){Xg(bi(a,26))};_.P=function _g(){return Wg};var Wg=null;Hm(102,1,SA,eh,fh);_.V=function gh(a){ch(this,a)};_.a=null;_.b=null;Hm(105,1,{});Hm(104,105,{});_.a=null;_.b=0;_.c=false;Hm(103,104,{},vh);Hm(106,1,{28:1},xh);_.a=null;Hm(108,15,TA,Ah);_.a=null;Hm(107,108,TA,Dh);Hm(109,1,{27:1},Fh);Hm(111,46,{30:1,50:1,53:1,54:1},Oh);var Jh,Kh,Lh,Mh;Hm(112,1,{},Qh);_.qI=0;var Wh,Xh;Hm(121,1,{});Hm(122,1,{},Nm);var Mm=null;Hm(123,121,{},Qm);var Pm=null;Hm(124,1,{},Um);Hm(125,1,{},Zm);_.a=0;_.b=0;_.c=null;_.d=null;_.e=null;Hm(126,1,{32:1},cn,dn);_.eQ=function en(a){var b;if(!di(a,32)){return false}b=bi(a,32);return this.a==b.a&&this.b==b.b};_.hC=function fn(){return hi(this.a)^hi(this.b)};_.tS=function gn(){return 'Point('+this.a+','+this.b+NB};_.a=0;_.b=0;Hm(127,1,{},Bn);_.a=null;_.b=null;_.c=false;_.f=null;_.g=null;_.n=null;_.o=null;_.p=null;_.r=false;_.s=null;var jn=null;Hm(128,1,{22:1,27:1},Dn);_.a=null;Hm(129,1,{21:1,27:1},Fn);_.a=null;Hm(130,1,{20:1,27:1},Hn);_.a=null;Hm(131,1,{19:1,27:1,33:1},Jn);_.a=null;Hm(132,1,{18:1,27:1,34:1},Ln);_.a=null;Hm(133,1,UA,Nn);_.W=function On(a){var b;if(1==Zo(a.d.type)){b=new cn(a.d.clientX||0,a.d.clientY||0);if(pn(this.a,b)||qn(this.a,b)){a.a=true;a.d.stopPropagation();a.d.preventDefault()}}};_.a=null;Hm(134,1,{},Rn);_.L=function Sn(){var a,b,c,d,e,f,g;if(this!=this.e.g){Qn(this);return false}a=cb(this.a);Xm(this.d,a-this.c);this.c=a;Wm(this.d,a);e=Tm(this.d);e||Qn(this);zn(this.e,this.d.d);d=hi(this.d.d.a);c=tt(this.e.s);b=rt(this.e.s);f=st(this.e.s);g=hi(this.d.d.b);if((f<=g||0>=g)&&(b<=d||c>=d)){Qn(this);return false}return e};_.c=0;_.d=null;_.e=null;_.f=null;Hm(135,1,VA,Un);_.U=function Vn(a){Qn(this.a)};_.a=null;Hm(136,1,{},Xn);_.L=function Yn(){var a,b,c;a=eb();b=new tz(this.a.q);while(b.b<b.d.zb()){c=bi(rz(b),35);a-c.b>=2500&&sz(b)}return this.a.q.b!=0};_.a=null;Hm(137,1,{35:1},_n,ao);_.a=null;_.b=0;var bo=null,co=null;var lo=null;Hm(142,80,{},so);_.O=function to(a){bi(a,36).W(this);po.c=false};_.P=function vo(){return oo};_.Q=function wo(){qo(this)};_.a=false;_.b=false;_.c=false;_.d=null;var oo=null,po=null;var xo=null;Hm(144,1,WA,Bo);_.T=function Co(a){while((Q(),P).b>0){R(bi(Pz(P,0),38))}};var Do=false,Eo=null,Fo=0,Go=0,Ho=false;Hm(146,80,{},To);_.O=function Uo(a){ii(a);null.Jb()};_.P=function Vo(){return Ro};var Ro;Hm(147,102,SA,Xo);var Yo=false;var bp=null,cp=null,dp=null,ep=null,fp=null,gp=null;Hm(152,1,SA,sp);_.Y=function tp(a){return decodeURI(a.replace('%23','#'))};_.V=function up(a){ch(this.a,a)};_.Z=function vp(a){a=a==null?mB:a;if(!px(a,pp==null?mB:pp)){pp=a;$g(this)}};var pp=mB;Hm(155,1,{},zp);_.M=function Ap(){$wnd.__gwt_initWindowCloseHandler(gB(Oo),gB(No))};Hm(156,1,{},Cp);_.M=function Dp(){$wnd.__gwt_initWindowResizeHandler(gB(Po))};Hm(161,1,{40:1,43:1});_.$=function Op(){return this.H};_._=function Pp(a){jo(this.H,$B,a)};_.ab=function Sp(a){jo(this.H,ZB,a)};_.tS=function Tp(){if(!this.H){return '(null handle)'}return this.H.outerHTML};_.H=null;Hm(160,161,XA);_.bb=function bq(){};_.cb=function cq(){};_.V=function dq(a){Xp(this,a)};_.db=function eq(){Yp(this)};_.X=function fq(a){Zp(this,a)};_.eb=function gq(){$p(this)};_.fb=function hq(){};_.gb=function iq(){};_.D=false;_.E=0;_.F=null;_.G=null;Hm(159,160,XA);_.bb=function kq(){Aq(this,(yq(),wq))};_.cb=function lq(){Aq(this,(yq(),xq))};Hm(158,159,XA);_.ib=function pq(){return new uu(this.f)};_.hb=function qq(a){return nq(this,a)};Hm(157,158,XA);_.hb=function uq(a){return sq(this,a)};Hm(162,107,TA,zq);var wq,xq;Hm(163,1,{},Cq);_.jb=function Dq(a){a.db()};Hm(164,1,{},Fq);_.jb=function Gq(a){a.eb()};Hm(167,160,XA);_.db=function Kq(){var a;Yp(this);a=Nc(this.H);-1==a&&(this.H.tabIndex=0,undefined)};Hm(166,167,XA);Hm(165,166,XA,Mq);Hm(168,158,XA);_.d=null;_.e=null;Hm(171,159,XA);_.kb=function Wq(){return this.H};_.ib=function Xq(){return new Ft(this)};_.hb=function Yq(a){return Sq(this,a)};_.C=null;Hm(170,171,XA);_.kb=function gr(){return Cc(this.H)};_.$=function hr(){return Dc(Cc(this.H))};_.lb=function ir(){_q(this)};_.W=function jr(a){a.c&&(a.d,false)&&(a.a=true)};_.gb=function kr(){this.A&&Is(this.z,false,true)};_._=function lr(a){this.o=a;ar(this);a.length==0&&(this.o=null)};_.ab=function mr(a){this.p=a;ar(this);a.length==0&&(this.p=null)};_.k=false;_.n=false;_.o=null;_.p=null;_.q=null;_.s=null;_.t=false;_.u=false;_.v=-1;_.w=false;_.x=null;_.y=false;_.A=false;_.B=-1;Hm(169,170,XA);_.bb=function or(){Yp(this.j)};_.cb=function pr(){$p(this.j)};_.ib=function qr(){return new Ft(this.j)};_.hb=function rr(a){return Sq(this.j,a)};_.j=null;Hm(172,171,XA,ur);_.kb=function wr(){return this.a};_.a=null;_.b=null;Hm(173,169,XA,Gr);_.bb=function Ir(){try{Yp(this.j)}finally{Yp(this.a)}};_.cb=function Jr(){try{$p(this.j)}finally{$p(this.a)}};_.lb=function Kr(){Br(this)};_.X=function Lr(a){switch(Zo(a.type)){case 4:case 8:case 64:case 16:case 32:if(!this.f&&!Cr(this,a)){return}}Zp(this,a)};_.W=function Mr(a){var b;b=a.d;!a.a&&Zo(a.d.type)==4&&Cr(this,b)&&(b.preventDefault(),undefined);a.c&&(a.d,false)&&(a.a=true)};_.a=null;_.b=0;_.c=0;_.d=0;_.e=0;_.f=false;_.g=null;_.i=0;Hm(174,1,VA,Or);_.U=function Pr(a){this.a.i=a.a};_.a=null;Hm(178,160,XA);_.a=null;Hm(177,178,XA,Xr);Hm(176,177,XA,Zr,$r);Hm(175,176,XA,_r);Hm(179,1,{13:1,14:1,15:1,16:1,17:1,27:1,39:1},bs);_.a=null;Hm(180,1,{},es);_.a=null;_.b=null;_.c=null;var fs,gs,hs;Hm(181,1,{});Hm(182,181,{},ls);_.a=null;var ms;Hm(183,1,{},ps);_.a=null;Hm(184,168,XA,ss);_.hb=function ts(a){var b,c;c=Dc(a.H);b=nq(this,a);b&&tc(this.b,c);return b};_.b=null;Hm(185,1,VA,ws);_.U=function xs(a){vs()};Hm(186,1,UA,zs);_.W=function As(a){br(this.a,a)};_.a=null;Hm(187,1,{26:1,27:1},Cs);_.a=null;Hm(188,3,{},Js);_.a=null;_.b=false;_.c=false;_.d=0;_.e=-1;_.f=null;_.g=null;_.i=false;Hm(189,10,KA,Ls);_.J=function Ms(){this.a.g=null;x(this.a,eb())};_.a=null;Hm(191,157,YA,Vs);var Rs,Ss,Ts;Hm(192,1,{},$s);_.jb=function _s(a){a.D&&a.eb()};Hm(193,1,WA,bt);_.T=function ct(a){Xs()};Hm(194,191,YA,et);Hm(195,1,{});var gt=null;Hm(196,195,{},nt);var kt=null,lt=null;Hm(197,171,XA,xt);_.kb=function yt(){return this.a};_.db=function zt(){Yp(this);this.b.__listener=this};_.eb=function At(){this.b.__listener=null;$p(this)};_._=function Bt(a){jo(this.H,$B,a)};_.ab=function Ct(a){jo(this.H,ZB,a)};_.a=null;_.b=null;_.c=null;Hm(198,1,{},Ft);_.mb=function Gt(){return this.a};_.nb=function Ht(){return Et(this)};_.ob=function It(){!!this.b&&this.c.hb(this.b)};_.b=null;_.c=null;Hm(201,167,XA);_.X=function Nt(a){var b;b=Zo(a.type);(b&896)!=0?Zp(this,a):Zp(this,a)};_.fb=function Ot(){};Hm(200,201,XA);Hm(199,200,XA,Qt);Hm(202,46,ZA);var Tt,Ut,Vt,Wt,Xt;Hm(203,202,ZA,_t);Hm(204,202,ZA,bu);Hm(205,202,ZA,du);Hm(206,202,ZA,fu);Hm(207,168,XA,iu);_.hb=function ju(a){var b,c;c=Dc(a.H);b=nq(this,a);b&&tc(this.d,Dc(c));return b};Hm(208,1,{},qu);_.ib=function ru(){return new uu(this)};_.a=null;_.b=null;_.c=0;Hm(209,1,{},uu);_.mb=function vu(){return this.a<this.b.c-1};_.nb=function wu(){return tu(this)};_.ob=function xu(){if(this.a<0||this.a>=this.b.c){throw new Zw}this.b.b.hb(this.b.a[this.a--])};_.a=-1;_.b=null;Hm(213,1,{},Cu);_.a=null;_.b=null;_.c=null;Hm(214,1,$A,Eu);_.M=function Fu(){mh(this.a,this.c,this.b)};_.a=null;_.b=null;_.c=null;Hm(215,1,$A,Hu);_.M=function Iu(){oh(this.a,this.c,this.b)};_.a=null;_.b=null;_.c=null;Hm(217,1,{},Mu);_.a=0;Hm(218,1,{},Ou);_.a=0;_.b=0;_.c=0;Hm(219,1,{},cv);_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;_.f=0;_.g=0;_.i=0;_.j=null;_.k=null;_.n=null;_.o=0;_.p=0;_.q=null;_.r=null;_.s=null;_.t=0;Hm(220,1,{},nv);_.pb=function ov(a){var b,c;if(a==39){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1);b=jv(this,this.a,this.d);mv(this,b,this.d);this.b=b.b.b.length;b.b.f+1;ev(this)}if(a==37){--this.d;this.d<0&&(this.d=0);b=jv(this,this.a,this.d);mv(this,b,this.d);this.b=b.b.b.length;b.b.f+1;ev(this)}if(a==8||a==46){this.A=this.e;c=new Px(this.a);Lx(c,this.d);this.a=rc(c.a);this.d>=0&&--this.d;b=jv(this,this.a,this.d);mv(this,b,this.d);this.e=Yu(b.b);this.b=b.b.b.length;ev(this)}};_.qb=function pv(a,b){var c,d;if(px(a,uD)||px(a,vD)||px(a,wD)||px(a,xD)){this.A=this.e;d=new Px(this.a);Mx(d,this.d,a);this.a=rc(d.a);++this.d;c=jv(this,this.a,this.d);mv(this,c,this.d);this.e=Yu(c.b);this.b=c.b.b.length;c.b.f+1;ev(this)}if(px(a,'a')||px(a,yD)||px(a,'c')||px(a,'t')){this.A=this.e;d=new Px(this.a);Nx(d,this.d,this.d+1,a.toUpperCase());this.a=rc(d.a);c=jv(this,this.a,this.d);mv(this,c,this.d);this.e=Yu(c.b);this.b=c.b.b.length;c.b.f+1;ev(this)}if(px(a,zD)||px(a,cC)||px(a,AD)||px(a,'_')){if(px(a,zD)||px(a,AD)){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1)}else{--this.d;this.d<0&&(this.d=0)}c=jv(this,this.a,this.d);mv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;ev(this)}if(b==39){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1);c=jv(this,this.a,this.d);mv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;ev(this)}if(b==37){--this.d;this.d<0&&(this.d=0);c=jv(this,this.a,this.d);mv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;ev(this)}};_.rb=function qv(a){var b;if(a>=0&&a<=this.b){b=jv(this,this.a,a);mv(this,b,a);this.b=b.b.b.length;this.d=a;ev(this)}};_.sb=function sv(a){var b;a!=null&&Mv(this.y,a);this.y.e=BD;this.y.g=CD;this.y.c=DD;this.y.b=ED;this.y.d=FD;this.f=this.y.a;this.a=this.y.a;this.b=this.a.length;this.C=this.y.e;this.D=this.y.f;this.G=this.y.g;this.u=this.y.c;this.t=this.y.b;this.z=this.y.d;(px(this.u,xC)||px(this.t,xC))&&(this.z=mB);b=jv(this,this.f,-1);this.g=b.b.e;this.i=b.b.q;this.b=b.b.b.length;this.e=Yu(b.b);Yr(this.r,b.a.b+'<\/pre><\/body><\/html>')};_.tb=function uv(a){var b,c,d,e,f;this.B=new bw;if(a==1){b=new zw;b.b=GD;_v(this.B,b);d=new ww;d.b='Your change does not make the mature mRNA shorter.';_v(this.B,d)}else if(a==2){b=new zw;b.b=GD;_v(this.B,b);d=new hw;d.b='Your change does not make the protein longer.';_v(this.B,d)}else if(a==3){b=new zw;b.b=GD;_v(this.B,b);d=new tw;d.b='Your change does not make the protein shorter.';_v(this.B,d)}else if(a==4){b=new zw;b.b=GD;_v(this.B,b);d=new nw;d.b='Your change does not prevent mRNA from being made.';_v(this.B,d);f=new kw;f.b='Your change does not prevent protein from being made';_v(this.B,f)}else if(a==5){c=new qw;c.a=c.a;c.b='Your protein does not have 5 amino acids.';_v(this.B,c);e=new ew;e.a=1;e.b='Your gene does not contain one intron.';_v(this.B,e)}};_.a=null;_.b=0;_.c=null;_.d=0;_.e=mB;_.f=null;_.g=mB;_.i=mB;_.j=null;_.k=null;_.n=false;_.o=null;_.p=null;_.q=null;_.r=null;_.s=null;_.t=null;_.u=null;_.v=null;_.w=null;_.x=null;_.z=null;_.A=mB;_.B=null;_.C=null;_.D=0;_.E=null;_.F=null;_.G=null;_.H=null;Hm(221,1,_A,xv);_.S=function yv(a){Br(this.a.j);this.a.o.H[HD]=mB};_.a=null;Hm(222,1,{},Av);_.M=function Bv(){gv(this.a);fv(this.a);hv(this.a);iv(this.a);typeof $wnd.genexIsReady===qB&&$wnd.genexIsReady()};_.a=null;Hm(223,1,_A,Dv);_.S=function Ev(a){var b,c;this.a.A=this.a.e;c=xc(this.a.o.H,HD);c=c.toUpperCase();c=tx(c,'[^AGCT]',mB);this.a.a=c;this.a.d=-1;b=jv(this.a,this.a.a,-1);mv(this.a,b,-1);this.a.e=Yu(b.b);this.a.b=b.b.b.length;Br(this.a.j);ev(this.a)};_.a=null;Hm(224,1,_A,Gv);_.S=function Hv(a){var b;this.a.a=this.a.f;b=jv(this.a,this.a.a,-1);mv(this.a,b,-1);this.a.e=Yu(b.b);this.a.b=b.b.b.length;ev(this.a)};_.a=null;Hm(225,1,_A,Jv);_.S=function Kv(a){Zq(this.a.j)};_.a=null;Hm(226,1,{},Nv);_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;_.f=0;_.g=null;Hm(227,1,{},Pv);_.a=null;_.b=null;Hm(228,1,{48:1},Tv);_.a=0;_.b=0;_.c=false;_.d=false;_.e=0;_.f=0;_.g=false;Hm(229,1,{},Vv);_.a=null;_.b=null;Hm(230,1,{},Yv);_.tS=function Zv(){return Xv(this)};_.a=null;_.b=0;_.c=null;_.d=null;_.e=0;_.f=null;_.g=null;_.i=null;Hm(231,1,{},bw);_.a=null;Hm(233,1,aB);_.b='unassigned';Hm(232,233,aB,ew);_.ub=function fw(a){return a.b==this.a+1};_.a=0;Hm(234,233,aB,hw);_.ub=function iw(a){return a.c.length>a.i.length};Hm(235,233,aB,kw);_.ub=function lw(a){return px(a.c,mB)};Hm(236,233,aB,nw);_.ub=function ow(a){return px(a.d,mB)};Hm(237,233,aB,qw);_.ub=function rw(a){return a.c.length==this.a};_.a=0;Hm(238,233,aB,tw);_.ub=function uw(a){return a.c.length<a.i.length};Hm(239,233,aB,ww);_.ub=function xw(a){return a.d.length<a.g.length};Hm(240,233,aB,zw);_.ub=function Aw(a){var b,c,d,e;e=a.f;b=a.a;if(e.length!=b.length)return false;d=0;for(c=0;c<e.length;++c){e.charCodeAt(c)!=b.charCodeAt(c)&&++d}if(d==1)return true;return false};Hm(241,15,MA,Cw);Hm(242,1,{50:1,51:1,53:1},Hw);_.eQ=function Iw(a){return di(a,51)&&bi(a,51).a==this.a};_.hC=function Jw(){return this.a?1231:1237};_.tS=function Kw(){return this.a?'true':'false'};_.a=false;var Ew,Fw;Hm(243,1,{},Mw);_.tS=function Tw(){return ((this.a&2)!=0?'interface ':(this.a&1)!=0?mB:'class ')+this.c};_.a=0;_.b=0;_.c=null;Hm(244,15,MA,Vw);Hm(245,15,MA,Xw);Hm(246,15,MA,Zw,$w);Hm(247,15,MA,ax,bx);Hm(251,15,MA,gx,hx);var ix;Hm(253,1,{50:1,55:1},lx);_.tS=function mx(){return this.a+'.'+this.c+'(Unknown Source'+(this.b>=0?rB+this.b:mB)+NB};_.a=null;_.b=0;_.c=null;_=String.prototype;_.cM={1:1,50:1,52:1,53:1};_.eQ=function yx(a){return px(this,a)};_.hC=function zx(){return Gx(this)};_.tS=_.toString;var Bx,Cx=0,Dx;Hm(255,1,bB,Ox,Px);_.tS=function Qx(){return rc(this.a)};Hm(256,1,bB,Tx);_.tS=function Ux(){return rc(this.a)};Hm(257,15,MA,Wx);Hm(258,1,{});_.vb=function $x(a){throw new Wx('Add not supported on this collection')};_.wb=function _x(a){var b;b=Yx(this.ib(),a);return !!b};_.xb=function ay(){return this.zb()==0};_.yb=function by(a){var b;b=Yx(this.ib(),a);if(b){b.ob();return true}else{return false}};_.tS=function cy(){return Zx(this)};Hm(260,1,cB);_.eQ=function gy(a){var b,c,d,e,f;if(a===this){return true}if(!di(a,58)){return false}e=bi(a,58);if(this.d!=e.d){return false}for(c=new Oy((new Gy(e)).a);qz(c.a);){b=c.b=bi(rz(c.a),59);d=b.Bb();f=b.Cb();if(!(d==null?this.c:di(d,1)?rB+bi(d,1) in this.e:qy(this,d,~~xb(d)))){return false}if(!GA(f,d==null?this.b:di(d,1)?py(this,bi(d,1)):oy(this,d,~~xb(d)))){return false}}return true};_.hC=function hy(){var a,b,c;c=0;for(b=new Oy((new Gy(this)).a);qz(b.a);){a=b.b=bi(rz(b.a),59);c+=a.hC();c=~~c}return c};_.tS=function iy(){var a,b,c,d;d='{';a=false;for(c=new Oy((new Gy(this)).a);qz(c.a);){b=c.b=bi(rz(c.a),59);a?(d+=ID):(a=true);d+=mB+b.Bb();d+=AD;d+=mB+b.Cb()}return d+'}'};Hm(259,260,cB);_.Ab=function Ay(a,b){return gi(a)===gi(b)||a!=null&&wb(a,b)};_.a=null;_.b=null;_.c=false;_.d=0;_.e=null;Hm(262,258,dB);_.eQ=function Dy(a){var b,c,d;if(a===this){return true}if(!di(a,60)){return false}c=bi(a,60);if(c.zb()!=this.zb()){return false}for(b=c.ib();b.mb();){d=b.nb();if(!this.wb(d)){return false}}return true};_.hC=function Ey(){var a,b,c;a=0;for(b=this.ib();b.mb();){c=b.nb();if(c!=null){a+=xb(c);a=~~a}}return a};Hm(261,262,dB,Gy);_.wb=function Hy(a){return Fy(this,a)};_.ib=function Iy(){return new Oy(this.a)};_.yb=function Jy(a){var b;if(Fy(this,a)){b=bi(a,59).Bb();wy(this.a,b);return true}return false};_.zb=function Ky(){return this.a.d};_.a=null;Hm(263,1,{},Oy);_.mb=function Py(){return qz(this.a)};_.nb=function Qy(){return My(this)};_.ob=function Ry(){Ny(this)};_.a=null;_.b=null;_.c=null;Hm(265,1,eB);_.eQ=function Uy(a){var b;if(di(a,59)){b=bi(a,59);if(GA(this.Bb(),b.Bb())&&GA(this.Cb(),b.Cb())){return true}}return false};_.hC=function Vy(){var a,b;a=0;b=0;this.Bb()!=null&&(a=xb(this.Bb()));this.Cb()!=null&&(b=xb(this.Cb()));return a^b};_.tS=function Wy(){return this.Bb()+AD+this.Cb()};Hm(264,265,eB,Xy);_.Bb=function Yy(){return null};_.Cb=function Zy(){return this.a.b};_.Db=function $y(a){return uy(this.a,a)};_.a=null;Hm(266,265,eB,az);_.Bb=function bz(){return this.a};_.Cb=function cz(){return py(this.b,this.a)};_.Db=function dz(a){return vy(this.b,this.a,a)};_.a=null;_.b=null;Hm(267,258,{57:1});_.Eb=function fz(a,b){throw new Wx('Add not supported on this list')};_.vb=function gz(a){this.Eb(this.zb(),a);return true};_.eQ=function iz(a){var b,c,d,e,f;if(a===this){return true}if(!di(a,57)){return false}f=bi(a,57);if(this.zb()!=f.zb()){return false}d=new tz(this);e=f.ib();while(d.b<d.d.zb()){b=rz(d);c=rz(e);if(!(b==null?c==null:wb(b,c))){return false}}return true};_.hC=function jz(){var a,b,c;b=1;a=new tz(this);while(a.b<a.d.zb()){c=rz(a);b=31*b+(c==null?0:xb(c));b=~~b}return b};_.ib=function lz(){return new tz(this)};_.Gb=function mz(){return new zz(this,0)};_.Hb=function nz(a){return new zz(this,a)};_.Ib=function oz(a){throw new Wx('Remove not supported on this list')};Hm(268,1,{},tz);_.mb=function uz(){return qz(this)};_.nb=function vz(){return rz(this)};_.ob=function wz(){sz(this)};_.b=0;_.c=-1;_.d=null;Hm(269,268,{},zz);_.a=null;Hm(270,262,dB,Cz);_.wb=function Dz(a){return my(this.a,a)};_.ib=function Ez(){return Bz(this)};_.zb=function Fz(){return this.b.a.d};_.a=null;_.b=null;Hm(271,1,{},Iz);_.mb=function Jz(){return qz(this.a.a)};_.nb=function Kz(){return Hz(this)};_.ob=function Lz(){Ny(this.a)};_.a=null;Hm(272,267,fB,Uz);_.Eb=function Vz(a,b){(a<0||a>this.b)&&kz(a,this.b);cA(this.a,a,0,b);++this.b};_.vb=function Wz(a){return Nz(this,a)};_.wb=function Xz(a){return Qz(this,a,0)!=-1};_.Fb=function Yz(a){return Pz(this,a)};_.xb=function Zz(){return this.b==0};_.Ib=function $z(a){return Rz(this,a)};_.yb=function _z(a){return Sz(this,a)};_.zb=function aA(){return this.b};_.b=0;var dA;Hm(274,267,fB,gA);_.wb=function hA(a){return false};_.Fb=function iA(a){throw new ax};_.zb=function jA(){return 0};Hm(275,259,{50:1,58:1},mA);Hm(276,262,{50:1,60:1},rA);_.vb=function sA(a){return oA(this,a)};_.wb=function tA(a){return my(this.a,a)};_.xb=function uA(){return this.a.d==0};_.ib=function vA(){return Bz(fy(this.a))};_.yb=function wA(a){return qA(this,a)};_.zb=function xA(){return this.a.d};_.tS=function yA(){return Zx(fy(this.a))};_.a=null;Hm(277,265,eB,AA);_.Bb=function BA(){return this.a};_.Cb=function CA(){return this.b};_.Db=function DA(a){var b;b=this.b;this.b=a;return b};_.a=null;_.b=null;Hm(278,15,MA,FA);var gB=Fb; +--></script> +<script><!-- +var Ql=Ow(JD,'Object',1),ti=Ow(KD,'JavaScriptObject$',18),Am=Nw(LD,'Object;',280),Wl=Ow(JD,'Throwable',17),Ll=Ow(JD,'Exception',16),Rl=Ow(JD,'RuntimeException',15),Sl=Ow(JD,'StackTraceElement',253),Bm=Nw(LD,'StackTraceElement;',281),Ej=Ow('com.google.gwt.lang.','SeedUtil',118),Kl=Ow(JD,'Enum',46),ql=Ow(MD,'GenexGWT',220),ml=Ow(MD,'GenexGWT$1',221),nl=Ow(MD,'GenexGWT$2',223),ol=Ow(MD,'GenexGWT$3',224),pl=Ow(MD,'GenexGWT$4',225),ll=Ow(MD,'GenexGWT$1DeferredCommand',222),ui=Ow(KD,'Scheduler',21),Hl=Ow(JD,'Boolean',242),qm=Nw(mB,'[C',282),Jl=Ow(JD,'Class',243),Vl=Ow(JD,oB,2),Cm=Nw(LD,'String;',283),Il=Ow(JD,'ClassCastException',244),Ul=Ow(JD,'StringBuilder',256),Gl=Ow(JD,'ArrayStoreException',241),si=Ow(KD,'JavaScriptException',14),Rk=Ow(ND,'UIObject',161),_k=Ow(ND,'Widget',160),xk=Ow(ND,'LabelBase',178),yk=Ow(ND,'Label',177),sk=Ow(ND,'HTML',176),tk=Ow(ND,'HasHorizontalAlignment$AutoHorizontalAlignmentConstant',181),uk=Ow(ND,'HasHorizontalAlignment$HorizontalAlignmentConstant',182),Dj=Pw(OD,'HasDirection$Direction',111,Ph),xm=Nw('[Lcom.google.gwt.i18n.client.','HasDirection$Direction;',284),zk=Ow(ND,'Panel',159),Ok=Ow(ND,'SimplePanel',171),Mk=Ow(ND,'ScrollPanel',197),Nk=Ow(ND,'SimplePanel$1',198),jk=Ow(ND,'ComplexPanel',158),ck=Ow(ND,'AbsolutePanel',157),hl=Ow(PD,QD,108),Bj=Ow(RD,QD,107),fk=Ow(ND,'AttachDetachException',162),dk=Ow(ND,'AttachDetachException$1',163),ek=Ow(ND,'AttachDetachException$2',164),Jk=Ow(ND,'RootPanel',191),Ik=Ow(ND,'RootPanel$DefaultRootPanel',194),Gk=Ow(ND,'RootPanel$1',192),Hk=Ow(ND,'RootPanel$2',193),Fk=Ow(ND,'PopupPanel',170),kk=Ow(ND,'DecoratedPopupPanel',169),pk=Ow(ND,'DialogBox',173),nk=Ow(ND,'DialogBox$CaptionImpl',175),ok=Ow(ND,'DialogBox$MouseHandler',179),mk=Ow(ND,'DialogBox$1',174),qi=Ow(SD,'Animation',3),Ek=Ow(ND,'PopupPanel$ResizeAnimation',188),Yj=Ow(TD,'Timer',10),Dk=Ow(ND,'PopupPanel$ResizeAnimation$1',189),Ak=Ow(ND,'PopupPanel$1',185),Bk=Ow(ND,'PopupPanel$3',186),Ck=Ow(ND,'PopupPanel$4',187),ji=Ow(SD,'Animation$1',4),pi=Ow(SD,'AnimationScheduler',5),ki=Ow(SD,'AnimationScheduler$AnimationHandle',6),Xj=Ow(TD,'Timer$1',144),cl=Ow(PD,'Event',81),xj=Ow(RD,'GwtEvent',80),Wj=Ow(TD,'Event$NativePreviewEvent',142),al=Ow(PD,'Event$Type',84),wj=Ow(RD,'GwtEvent$Type',83),ik=Ow(ND,'CellPanel',168),Yk=Ow(ND,'VerticalPanel',207),vk=Ow(ND,'HasVerticalAlignment$VerticalAlignmentConstant',183),rk=Ow(ND,'FocusWidget',167),Xk=Ow(ND,'ValueBoxBase',201),Pk=Ow(ND,'TextBoxBase',200),Qk=Ow(ND,'TextBox',199),Wk=Pw(ND,'ValueBoxBase$TextAlignment',202,Zt),ym=Nw(UD,'ValueBoxBase$TextAlignment;',285),Sk=Pw(ND,'ValueBoxBase$TextAlignment$1',203,null),Tk=Pw(ND,'ValueBoxBase$TextAlignment$2',204,null),Uk=Pw(ND,'ValueBoxBase$TextAlignment$3',205,null),Vk=Pw(ND,'ValueBoxBase$TextAlignment$4',206,null),Cj=Ow(OD,'AutoDirectionHandler',109),gk=Ow(ND,'ButtonBase',166),hk=Ow(ND,'Button',165),wk=Ow(ND,'HorizontalPanel',184),rl=Ow(MD,'GenexParams',226),im=Ow(VD,'AbstractMap',260),bm=Ow(VD,'AbstractHashMap',259),mm=Ow(VD,'HashMap',275),Yl=Ow(VD,'AbstractCollection',258),jm=Ow(VD,'AbstractSet',262),$l=Ow(VD,'AbstractHashMap$EntrySet',261),Zl=Ow(VD,'AbstractHashMap$EntrySetIterator',263),hm=Ow(VD,'AbstractMapEntry',265),_l=Ow(VD,'AbstractHashMap$MapEntryNull',264),am=Ow(VD,'AbstractHashMap$MapEntryString',266),gm=Ow(VD,'AbstractMap$1',270),fm=Ow(VD,'AbstractMap$1$1',271),nm=Ow(VD,'HashSet',276),dj=Ow(WD,'DomEvent',79),ej=Ow(WD,'HumanInputEvent',78),gj=Ow(WD,'MouseEvent',77),bj=Ow(WD,'ClickEvent',76),cj=Ow(WD,'DomEvent$Type',82),lk=Ow(ND,'DecoratorPanel',172),xi=Ow(XD,'SchedulerImpl',23),vi=Ow(XD,'SchedulerImpl$Flusher',24),wi=Ow(XD,'SchedulerImpl$Rescuer',25),yi=Ow(XD,'StackTraceCreator$Collector',28),ri=Ow(KD,'Duration',12),aj=Pw(YD,'Style$Unit',66,ue),wm=Nw(ZD,'Style$Unit;',286),Di=Pw(YD,'Style$Display',45,fd),sm=Nw(ZD,'Style$Display;',287),Ii=Pw(YD,'Style$Overflow',51,vd),tm=Nw(ZD,'Style$Overflow;',288),Ni=Pw(YD,'Style$Position',56,Ld),um=Nw(ZD,'Style$Position;',289),Si=Pw(YD,'Style$TextAlign',61,_d),vm=Nw(ZD,'Style$TextAlign;',290),Ti=Pw(YD,'Style$Unit$1',67,null),Ui=Pw(YD,'Style$Unit$2',68,null),Vi=Pw(YD,'Style$Unit$3',69,null),Wi=Pw(YD,'Style$Unit$4',70,null),Xi=Pw(YD,'Style$Unit$5',71,null),Yi=Pw(YD,'Style$Unit$6',72,null),Zi=Pw(YD,'Style$Unit$7',73,null),$i=Pw(YD,'Style$Unit$8',74,null),_i=Pw(YD,'Style$Unit$9',75,null),zi=Pw(YD,'Style$Display$1',47,null),Ai=Pw(YD,'Style$Display$2',48,null),Bi=Pw(YD,'Style$Display$3',49,null),Ci=Pw(YD,'Style$Display$4',50,null),Ei=Pw(YD,'Style$Overflow$1',52,null),Fi=Pw(YD,'Style$Overflow$2',53,null),Gi=Pw(YD,'Style$Overflow$3',54,null),Hi=Pw(YD,'Style$Overflow$4',55,null),Ji=Pw(YD,'Style$Position$1',57,null),Ki=Pw(YD,'Style$Position$2',58,null),Li=Pw(YD,'Style$Position$3',59,null),Mi=Pw(YD,'Style$Position$4',60,null),Oi=Pw(YD,'Style$TextAlign$1',62,null),Pi=Pw(YD,'Style$TextAlign$2',63,null),Qi=Pw(YD,'Style$TextAlign$3',64,null),Ri=Pw(YD,'Style$TextAlign$4',65,null),qk=Ow(ND,'DirectionalTextHelper',180),Xl=Ow(JD,'UnsupportedOperationException',257),Nl=Ow(JD,'IllegalStateException',246),Zj=Ow(TD,'Window$ClosingEvent',146),zj=Ow(RD,'HandlerManager',102),$j=Ow(TD,'Window$WindowHandlers',147),bl=Ow(PD,'EventBus',105),gl=Ow(PD,'SimpleEventBus',104),yj=Ow(RD,'HandlerManager$Bus',103),dl=Ow(PD,'SimpleEventBus$1',213),el=Ow(PD,'SimpleEventBus$2',214),fl=Ow(PD,'SimpleEventBus$3',215),$k=Ow(ND,'WidgetCollection',208),zm=Nw(UD,'Widget;',291),Zk=Ow(ND,'WidgetCollection$WidgetIterator',209),Pl=Ow(JD,'NullPointerException',251),Ml=Ow(JD,'IllegalArgumentException',245),Lk=Ow(ND,'ScrollImpl',195),Kk=Ow(ND,'ScrollImpl$ScrollImplTrident',196),Tl=Ow(JD,'StringBuffer',255),ak=Ow($D,'WindowImplIE$1',155),bk=Ow($D,'WindowImplIE$2',156),tj=Ow(_D,'CloseEvent',99),sj=Ow(_D,'AttachEvent',98),fj=Ow(WD,'MouseDownEvent',85),kj=Ow(WD,'MouseUpEvent',89),hj=Ow(WD,'MouseMoveEvent',86),jj=Ow(WD,'MouseOverEvent',88),ij=Ow(WD,'MouseOutEvent',87),Fj=Ow('com.google.gwt.text.shared.','AbstractRenderer',121),Hj=Ow(aE,'PassthroughRenderer',123),Gj=Ow(aE,'PassthroughParser',122),lj=Ow(WD,'PrivateMap',90),Aj=Ow(RD,'LegacyHandlerWrapper',106),Vj=Ow(bE,'TouchScroller',127),Uj=Ow(bE,'TouchScroller$TemporalPoint',137),Sj=Ow(bE,'TouchScroller$MomentumCommand',134),Tj=Ow(bE,'TouchScroller$MomentumTouchRemovalCommand',136),Rj=Ow(bE,'TouchScroller$MomentumCommand$1',135),Lj=Ow(bE,'TouchScroller$1',128),Mj=Ow(bE,'TouchScroller$2',129),Nj=Ow(bE,'TouchScroller$3',130),Oj=Ow(bE,'TouchScroller$4',131),Pj=Ow(bE,'TouchScroller$5',132),Qj=Ow(bE,'TouchScroller$6',133),pm=Ow(VD,'NoSuchElementException',278),om=Ow(VD,'MapEntryImpl',277),Ol=Ow(JD,'IndexOutOfBoundsException',247),pj=Ow(WD,'TouchEvent',93),rj=Ow(WD,'TouchStartEvent',97),oj=Ow(WD,'TouchEvent$TouchSupportDetector',95),qj=Ow(WD,'TouchMoveEvent',96),nj=Ow(WD,'TouchEndEvent',94),mj=Ow(WD,'TouchCancelEvent',92),Ij=Ow(bE,'DefaultMomentum',124),Jj=Ow(bE,'Momentum$State',125),em=Ow(VD,'AbstractList',267),km=Ow(VD,'ArrayList',272),cm=Ow(VD,'AbstractList$IteratorImpl',268),dm=Ow(VD,'AbstractList$ListIteratorImpl',269),ul=Ow(MD,'VisibleGene',229),kl=Ow(MD,'Gene',219),Cl=Ow(cE,'Requirement',233),Bl=Ow(cE,'ProteinLengthRequirement',237),xl=Ow(cE,'IntronNumberRequirement',232),wl=Ow(dE,'Problem',231),Fl=Ow(cE,'SingleMutationRequirement',240),El=Ow(cE,'ShortermRNARequirement',239),yl=Ow(cE,'LongerProteinRequirement',234),Dl=Ow(cE,'ShorterProteinRequirement',238),Al=Ow(cE,'NomRNARequirement',236),zl=Ow(cE,'NoProteinRequirement',235),uj=Ow(_D,'ResizeEvent',100),sl=Ow(MD,'HTMLContainer',227),_j=Ow($D,'HistoryImpl',152),tl=Ow(MD,'Nucleotide',228),jl=Ow(MD,'Exon',218),vl=Ow(dE,'GenexState',230),vj=Ow(_D,'ValueChangeEvent',101),lm=Ow(VD,'Collections$EmptyList',274),il=Ow(MD,'ColorSequencer',217),oi=Ow(SD,'AnimationSchedulerImpl',7),ni=Ow(SD,'AnimationSchedulerImplTimer',8),mi=Ow(SD,'AnimationSchedulerImplTimer$AnimationHandleImpl',11),rm=Nw('[Lcom.google.gwt.animation.client.','AnimationSchedulerImplTimer$AnimationHandleImpl;',292),li=Ow(SD,'AnimationSchedulerImplTimer$1',9),Kj=Ow(bE,'Point',126);$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if ($wnd.genex) $wnd.genex.onScriptLoad(); +--></script></body></html> \ No newline at end of file diff --git a/common/static/js/capa/genex/4EEB1DCF4B30D366C27968D1B5C0BD04.cache.html b/common/static/js/capa/genex/4EEB1DCF4B30D366C27968D1B5C0BD04.cache.html new file mode 100644 index 0000000000000000000000000000000000000000..4aa12e55d46fb09e81af9fb810459e2eefeb2987 --- /dev/null +++ b/common/static/js/capa/genex/4EEB1DCF4B30D366C27968D1B5C0BD04.cache.html @@ -0,0 +1,651 @@ +<html><head><meta charset="UTF-8" /><script>var $gwt_version = "2.5.0";var $wnd = parent;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '4EEB1DCF4B30D366C27968D1B5C0BD04';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});</script></head><body><script><!-- +function ZA(){} +function Ub(){} +function kc(){} +function kg(){} +function qg(){} +function zg(){} +function Gg(){} +function Sg(){} +function lf(){} +function Af(){} +function Hf(){} +function Nf(){} +function Tf(){} +function $f(){} +function dh(){} +function Mh(){} +function Xh(){} +function Vm(){} +function Ym(){} +function an(){} +function io(){} +function Ao(){} +function Jo(){} +function Op(){} +function Rp(){} +function Qq(){} +function Tq(){} +function Ks(){} +function Kw(){} +function vw(){} +function yw(){} +function Bw(){} +function Ew(){} +function Hw(){} +function Nw(){} +function Qw(){} +function mt(){} +function pt(){} +function bx(){} +function yA(){} +function yx(){ic()} +function kx(){ic()} +function ox(){ic()} +function rx(){ic()} +function Tw(){ic()} +function XA(){ic()} +function _o(){$o()} +function Bt(){Ct()} +function yp(a){rp=a} +function Yp(a,b){a.H=b} +function _e(a,b){a.f=b} +function cf(a,b){a.a=b} +function cn(a,b){a.a=b} +function dn(a,b){a.b=b} +function df(a,b){a.b=b} +function en(a,b){a.d=b} +function zo(a,b){a.d=b} +function bw(a,b){a.a=b} +function bv(){this.a=1} +function C(a){this.a=a} +function _b(a){this.a=a} +function cc(a){this.a=a} +function Mg(a){this.a=a} +function Yg(a){this.a=a} +function Eh(a){this.a=a} +function Ln(a){this.a=a} +function Nn(a){this.a=a} +function Pn(a){this.a=a} +function Rn(a){this.a=a} +function Tn(a){this.a=a} +function Vn(a){this.a=a} +function ao(a){this.a=a} +function eo(a){this.a=a} +function as(a){this.a=a} +function ps(a){this.a=a} +function zs(a){this.a=a} +function Ds(a){this.a=a} +function Ns(a){this.a=a} +function Qs(a){this.a=a} +function Ov(a){this.a=a} +function Rv(a){this.a=a} +function Uv(a){this.a=a} +function Xv(a){this.a=a} +function $v(a){this.a=a} +function Yw(a){this.a=a} +function Yy(a){this.a=a} +function nz(a){this.a=a} +function $z(a){this.a=a} +function Lz(a){this.d=a} +function Zq(a){this.H=a} +function hr(a){this.H=a} +function Iu(a){this.b=a} +function eg(){this.a={}} +function db(){this.a=eb()} +function uf(){this.c=++rf} +function ey(){_x(this)} +function EA(){Dy(this)} +function $(a){J(a.b,a)} +function _x(a){a.a=oc()} +function _s(){_s=ZA;bt()} +function bu(){bu=ZA;ku()} +function xq(a,b){oq(b,a)} +function zf(a,b){Mr(b.a,a)} +function Gf(a,b){Nr(b.a,a)} +function Zf(a,b){Or(b.a,a)} +function yg(a,b){Bn(b.a,a)} +function Fg(a,b){Cn(b.a,a)} +function qw(a,b){GA(a.a,b)} +function It(a,b){Sc(a.b,b)} +function Kt(a,b){Ac(a.b,b)} +function dg(a,b,c){a.a[b]=c} +function X(a){Q();this.a=a} +function Zs(a){Q();this.a=a} +function mb(a){ic();this.e=a} +function nb(a){ic();this.e=a} +function Vb(a){return a.L()} +function ge(){fe();return ae} +function Be(){Ae();return qe} +function md(){ld();return gd} +function Cd(){Bd();return wd} +function Sd(){Rd();return Md} +function Wh(){Uh();return Qh} +function lu(){ku();return fu} +function Ev(){this.y=new cw} +function sw(){this.a=new JA} +function JA(){this.a=new EA} +function wA(){wA=ZA;vA=new yA} +function Nb(){Nb=ZA;Mb=new Ub} +function $o(){$o=ZA;Zo=new uf} +function Fq(a,b){Aq(a,b,a.H)} +function zu(a,b){Bu(a,b,a.c)} +function rr(a,b){fr(a,b);or(a)} +function np(a,b){gp();op(a,b)} +function $p(a,b){a.cb()[oE]=b} +function Mu(a,b){a.style[pF]=b} +function Ac(b,a){b.scrollTop=a} +function mx(a){mb.call(this,a)} +function px(a){mb.call(this,a)} +function sx(a){mb.call(this,a)} +function zx(a){mb.call(this,a)} +function my(a){mb.call(this,a)} +function Kh(a){Hh.call(this,a)} +function Nq(a){Kh.call(this,a)} +function Su(a){Bh(a.a,a.c,a.b)} +function ch(a){a.a.n&&a.a.pb()} +function cg(a,b){return a.a[b]} +function wx(a,b){return a>b?a:b} +function cb(a){return eb()-a.a} +function Qm(a){return new Om[a]} +function $t(a){this.H=a;new Mh} +function ho(a,b,c){a.a=b;a.b=c} +function ro(a,b,c){a.style[b]=c} +function hp(a,b){a.__listener=b} +function ks(a,b){rs(a.a,b,true)} +function od(){cd.call(this,aC,0)} +function Ed(){cd.call(this,eC,0)} +function Ud(){cd.call(this,iC,0)} +function qd(){cd.call(this,bC,1)} +function Gd(){cd.call(this,fC,1)} +function Wd(){cd.call(this,jC,1)} +function sd(){cd.call(this,cC,2)} +function Id(){cd.call(this,gC,2)} +function Yd(){cd.call(this,kC,2)} +function ud(){cd.call(this,dC,3)} +function Kd(){cd.call(this,hC,3)} +function $d(){cd.call(this,lC,3)} +function oe(){cd.call(this,pC,3)} +function Je(){cd.call(this,tC,3)} +function ie(){cd.call(this,mC,0)} +function De(){cd.call(this,qC,0)} +function ke(){cd.call(this,nC,1)} +function Fe(){cd.call(this,rC,1)} +function me(){cd.call(this,oC,2)} +function He(){cd.call(this,sC,2)} +function Le(){cd.call(this,uC,4)} +function Ne(){cd.call(this,vC,5)} +function Pe(){cd.call(this,wC,6)} +function Re(){cd.call(this,xC,7)} +function Te(){cd.call(this,yC,8)} +function nu(){cd.call(this,mC,0)} +function pu(){cd.call(this,nC,1)} +function ru(){cd.call(this,oC,2)} +function tu(){cd.call(this,pC,3)} +function dp(){lh.call(this,null)} +function Gp(){this.c=new lh(null)} +function Cq(){this.f=new Eu(this)} +function Tr(a){a.f=false;po(a.H)} +function Br(a,b){fr(a.j,b);or(a)} +function hs(a,b){rs(a.a,b,false)} +function kh(a,b){return Ah(a.a,b)} +function Ah(a,b){return Ey(a.d,b)} +function HA(a,b){return Ey(a.a,b)} +function jq(a,b){!!a.F&&jh(a.F,b)} +function tA(a,b,c){a.splice(b,c)} +function Mc(a,b){a.innerText=b||GB} +function zc(b,a){b.innerHTML=a||GB} +function Hy(b,a){return b.e[OB+a]} +function ux(a){return a<=0?0-a:a} +function Rb(a){return !!a.a||!!a.f} +function Ic(a){a.returnValue=false} +function U(a){$wnd.clearTimeout(a)} +function Vh(a,b){cd.call(this,a,b)} +function Ur(){Vr.call(this,new ns)} +function cd(a,b){this.a=a;this.b=b} +function ln(a,b){this.a=a;this.b=b} +function jo(a,b){this.a=a;this.b=b} +function Uz(a,b){this.a=a;this.b=b} +function SA(a,b){this.a=a;this.b=b} +function ab(a,b){this.b=a;this.a=b} +function ew(a,b){this.b=a;this.a=b} +function sz(a,b){this.b=a;this.a=b} +function kw(a,b){this.b=b;this.a=a} +function ay(a,b){mc(a.a,b);return a} +function iy(a,b){mc(a.a,b);return a} +function _p(a,b){cq(a.cb(),b,true)} +function mo(a,b){sc(a,(_s(),at(b)))} +function Lg(a,b){a.a?In(b.a):En(b.a)} +function Jy(b,a){return OB+a in b.e} +function Iz(a){return a.b<a.d.Db()} +function vx(a){return Math.floor(a)} +function Jx(b,a){return b.indexOf(a)} +function ni(a){return a==null?null:a} +function T(a){$wnd.clearInterval(a)} +function Jb(a){$wnd.clearTimeout(a)} +function mn(a){ln.call(this,a.a,a.b)} +function lh(a){mh.call(this,a,false)} +function fy(a){_x(this);mc(this.a,a)} +function Ch(a){this.d=new EA;this.c=a} +function kA(){this.a=$h(Im,bB,0,0,0)} +function uA(a,b,c,d){a.splice(b,c,d)} +function Fn(a,b){a.f=b;!b&&(a.g=null)} +function zz(a,b){(a<0||a>=b)&&Cz(a,b)} +function hi(a,b){return a.cM&&a.cM[b]} +function gi(a,b){return a.cM&&!!a.cM[b]} +function Ib(a){return a.$H||(a.$H=++Ab)} +function mi(a){return a.tM==ZA||gi(a,1)} +function In(a){En(a);a.b=uo(new Vn(a))} +function H(){H=ZA;var a;a=new M;G=a} +function Q(){Q=ZA;P=new kA;Qo(new Jo)} +function Mq(){Mq=ZA;Kq=new Qq;Lq=new Tq} +function Wx(){Wx=ZA;Tx={};Vx={}} +function gp(){if(!ep){mp();ep=true}} +function qo(a){lo=a;gp();a.setCapture()} +function jy(a){this.a=oc();mc(this.a,a)} +function R(a){a.b?T(a.c):U(a.c);iA(P,a)} +function Gx(b,a){return b.charCodeAt(a)} +function sc(b,a){return b.appendChild(a)} +function tc(b,a){return b.removeChild(a)} +function gx(a){return typeof a==xJ&&a>0} +function IA(a,b){return Oy(a.a,b)!=null} +function tb(a){return li(a)?jc(ji(a)):GB} +function st(){ht.call(this,$doc.body)} +function gr(){hr.call(this,Gc($doc,VB))} +function kf(){kf=ZA;jf=new vf(AC,new lf)} +function yf(){yf=ZA;xf=new vf(CC,new Af)} +function Ff(){Ff=ZA;Ef=new vf(DC,new Hf)} +function Mf(){Mf=ZA;Lf=new vf(EC,new Nf)} +function Sf(){Sf=ZA;Rf=new vf(FC,new Tf)} +function Yf(){Yf=ZA;Xf=new vf(GC,new $f)} +function jg(){jg=ZA;ig=new vf(HC,new kg)} +function pg(){pg=ZA;og=new vf(IC,new qg)} +function xg(){xg=ZA;wg=new vf(LC,new zg)} +function Eg(){Eg=ZA;Dg=new vf(MC,new Gg)} +function Cz(a,b){throw new sx(NJ+a+OJ+b)} +function ki(a,b){return a!=null&&gi(a,b)} +function Kx(c,a,b){return c.indexOf(a,b)} +function cz(a){return a.b=ii(Jz(a.a),59)} +function sb(a){return a==null?null:a.name} +function eb(){return (new Date).getTime()} +function z(a){this.j=new C(this);this.r=a} +function ns(){ls.call(this);this.H[oE]=dF} +function Tt(a){this.c=a;this.a=!!this.c.C} +function nc(a,b){a[a.explicitLength++]=b} +function Hc(a,b){a.fireEvent(YB+b.type,b)} +function Mr(a,b){Rr(a,(a.a,gf(b)),hf(b))} +function Nr(a,b){Sr(a,(a.a,gf(b)),hf(b))} +function Or(a,b){Tr(a,(a.a,gf(b),hf(b)))} +function J(a,b){iA(a.a,b);a.a.b==0&&R(a.b)} +function fA(a,b){zz(b,a.b);return a.a[b]} +function xh(a,b){var c;c=yh(a,b);return c} +function th(a,b,c){var d;d=wh(a,b);d.zb(c)} +function cy(a,b,c){return pc(a.a,b,b,c),a} +function by(a,b){return pc(a.a,b,b+1,GB),a} +function wc(b,a){return parseInt(b[a])||0} +function Xc(b,a){return b.getElementById(a)} +function pb(a){return li(a)?qb(ji(a)):a+GB} +function Ho(a){Go();return Fo?sp(Fo,a):null} +function Dn(a){if(a.a){Su(a.a.a);a.a=null}} +function En(a){if(a.b){Su(a.b.a);a.b=null}} +function tn(a){a.r=false;a.c=false;a.g=null} +function eA(a){a.a=$h(Im,bB,0,0,0);a.b=0} +function Tb(a,b){a.a=Wb(a.a,[b,false]);Sb(a)} +function dy(a,b,c,d){pc(a.a,b,c,d);return a} +function Db(a,b,c){return a.apply(b,c);var d} +function qb(a){return a==null?null:a.message} +function fx(a){var b=Om[a.b];a=null;return b} +function Ug(a){var b;if(Rg){b=new Sg;a.V(b)}} +function Zz(a){var b;b=cz(a.a);return b.Fb()} +function dA(a,b){ai(a.a,a.b++,b);return true} +function mh(a,b){this.a=new Ch(b);this.b=a} +function Dx(a){this.a=AJ;this.c=a;this.b=-1} +function M(){this.a=new kA;this.b=new X(this)} +function Vo(){Lo&&Ug((!Mo&&(Mo=new dp),Mo))} +function To(){if(!Lo){Mp(nD,new Op);Lo=true}} +function Uo(){if(!Po){Mp(oD,new Rp);Po=true}} +function rc(a){var b;b=qc(a);nc(a,b);return b} +function rh(a,b){!a.a&&(a.a=new kA);dA(a.a,b)} +function ih(a,b,c){return new Eh(sh(a.a,b,c))} +function Sx(a){return String.fromCharCode(a)} +function Fp(b,a){$wnd.location.hash=b.Z(a)} +function Mx(b,a){return b.substr(a,b.length-a)} +function is(a){gs.call(this,a,Ix($E,Lc(a)))} +function Xs(a){z.call(this,(H(),G));this.a=a} +function ht(a){Cq.call(this);this.H=a;kq(this)} +function ms(){ls.call(this);rs(this.a,cF,true)} +function ob(a){ic();this.b=a;this.a=GB;hc(this)} +function gs(a){this.H=a;this.a=new ss(this.H)} +function dv(a,b,c){this.b=a;this.a=b;this.c=c} +function Tu(a,b,c){this.a=a;this.c=b;this.b=c} +function Vu(a,b,c){this.a=a;this.c=b;this.b=c} +function Yu(a,b,c){this.a=a;this.c=b;this.b=c} +function Eu(a){this.b=a;this.a=$h(Hm,bB,45,4,0)} +function fh(a){var b;if(bh){b=new dh;jh(a.c,b)}} +function Hn(a,b){It(a.s,oi(b.a));Kt(a.s,oi(b.b))} +function hn(a,b){return new ln(a.a-b.a,a.b-b.b)} +function jn(a,b){return new ln(a.a*b.a,a.b*b.b)} +function kn(a,b){return new ln(a.a+b.a,a.b+b.b)} +function Ft(a){return vt((!ut&&(ut=new Bt),a.b))} +function Ht(a){return wt((!ut&&(ut=new Bt),a.b))} +function li(a){return a!=null&&a.tM!=ZA&&!gi(a,1)} +function Pr(a){if(a.g){Su(a.g.a);a.g=null}nr(a)} +function it(a){gt();try{a.ib()}finally{IA(ft,a)}} +function gt(){gt=ZA;dt=new mt;et=new EA;ft=new JA} +function Go(){Go=ZA;Fo=new Gp;Ap(Fo)||(Fo=null)} +function di(){di=ZA;bi=[];ci=[];ei(new Xh,bi,ci)} +function xb(a){var b;return b=a,mi(b)?b.hC():Ib(b)} +function Qo(a){To();return Ro(Rg?Rg:(Rg=new uf),a)} +function Hh(a){nb.call(this,Jh(a),Ih(a));this.a=a} +function ss(a){this.a=a;this.b=Nh(a);this.c=this.b} +function Zp(a){a.H.style[kE]=lE;a.H.style[mE]=nE} +function Zx(){if(Ux==256){Tx=Vx;Vx={};Ux=0}++Ux} +function pi(a){if(a!=null){throw new kx}return null} +function Wb(a,b){!a&&(a=[]);a[a.length]=b;return a} +function oc(){var a=[];a.explicitLength=0;return a} +function Cc(a,b){var c;c=Gc(a,UB);c.text=b;return c} +function Gq(a,b){var c;c=Bq(a,b);c&&Hq(b.H);return c} +function GA(a,b){var c;c=Ky(a.a,b,a);return c==null} +function xy(a){var b;b=new Yy(a);return new Uz(a,b)} +function Tz(a){var b;b=new ez(a.b.a);return new $z(b)} +function Mm(a){if(ki(a,56)){return a}return new ob(a)} +function xc(b,a){return b[a]==null?null:String(b[a])} +function Ro(a,b){return ih((!Mo&&(Mo=new dp),Mo),a,b)} +function sp(a,b){return ih(a.c,(!bh&&(bh=new uf),bh),b)} +function DA(a,b){return ni(a)===ni(b)||a!=null&&wb(a,b)} +function YA(a,b){return ni(a)===ni(b)||a!=null&&wb(a,b)} +function $g(a,b){var c;if(Xg){c=new Yg(b);jh(a,c)}} +function wb(a,b){var c;return c=a,mi(c)?c.eQ(b):c===b} +function Bh(a,b,c){a.b>0?rh(a,new Yu(a,b,c)):vh(a,b,c)} +function Rr(a,b,c){if(!lo){a.f=true;qo(a.H);a.d=b;a.e=c}} +function qv(a,b,c,d){b.a=a;b.f=0;c.a=a;c.f=1;d.a=a;d.f=2} +function Dy(a){a.a=[];a.e={};a.c=false;a.b=null;a.d=0} +function mc(a,b){a[a.explicitLength++]=b==null?HB:b} +function xn(a,b){if(a.j.a){return wn(b,a.j.a)}return false} +function nr(a){if(!a.A){return}Ws(a.z,false,false);Ug(a)} +function iq(a,b,c){return ih(!a.F?(a.F=new lh(a)):a.F,c,b)} +function Og(a,b){var c;if(Kg){c=new Mg(b);!!a.F&&jh(a.F,c)}} +function fn(a,b){this.c=b;this.d=new mn(a);this.e=new mn(b)} +function ls(){is.call(this,Gc($doc,VB));this.H[oE]=bF} +function Bs(){Bs=ZA;new Ds(hF);new Ds(iF);As=new Ds(yE)} +function Xw(){Xw=ZA;Vw=new Yw(false);Ww=new Yw(true)} +function So(a){To();Uo();return Ro((!Xg&&(Xg=new uf),Xg),a)} +function Lx(c,a,b){b=Ox(b);return c.replace(RegExp(a,OI),b)} +function fv(a){var b;b=Lx(a,yH,GB);return b.indexOf(zH)+4} +function yv(a){$wnd.genexSetKeyEvent=yB(function(){Kv(a)})} +function wv(a){$wnd.genexSetClickEvent=yB(function(){Iv(a)})} +function at(a){return a.__gwt_resolve?a.__gwt_resolve():a} +function vn(a){return new ln(Qc(a.s.b),a.s.b.scrollTop||0)} +function Gt(a){return (a.b.scrollHeight||0)-a.b.clientHeight} +function V(a,b){return $wnd.setTimeout(yB(function(){a.I()}),b)} +function B(a,b){y(a.a,b)?(a.a.p=K(a.a.r,a.a.j)):(a.a.p=null)} +function un(a){var b;b=a.a.touches;return b.length>0?b[0]:null} +function Hu(a){if(a.a>=a.b.c){throw new XA}return a.b.a[++a.a]} +function Qz(a){if(a.b<=0){throw new XA}return a.a.Jb(a.c=--a.b)} +function Hx(a,b){if(!ki(b,1)){return false}return String(a)==b} +function ii(a,b){if(a!=null&&!hi(a,b)){throw new kx}return a} +function Du(a,b){var c;c=Au(a,b);if(c==-1){throw new XA}Cu(a,c)} +function Aq(a,b,c){nq(b);zu(a.f,b);sc(c,(_s(),at(b.H)));oq(b,a)} +function $h(a,b,c,d,e){var f;f=Zh(e,d);_h(a,b,c,f);return f} +function dx(a,b,c){var d;d=new bx;d.c=a+b;gx(c)&&hx(c,d);return d} +function po(a){!!lo&&a==lo&&(lo=null);gp();a.releaseCapture()} +function Yn(a){if(a.f){Su(a.f.a);a.f=null}a==a.e.g&&(a.e.g=null)} +function An(a){if(!a.r){return}a.r=false;if(a.c){a.c=false;zn(a)}} +function sr(a){if(a.A){return}else a.D&&nq(a);Ws(a.z,true,false)} +function Bc(a){if(uc(a)){return !!a&&a.nodeType==1}return false} +function uc(b){try{return !!b&&!!b.nodeType}catch(a){return false}} +function jt(){gt();try{Oq(ft,dt)}finally{Dy(ft.a);Dy(et)}} +function Hq(a){a.style[xE]=GB;a.style[yE]=GB;a.style[zE]=GB} +function Pu(a,b){a.__frame&&(a.__frame.style.visibility=b?IE:DB)} +function Dt(a){var b;Hc(a,(b=$doc.createEventObject(),b.type=yD,b))} +function Qy(a){var b;b=a.b;a.b=null;if(a.c){a.c=false;--a.d}return b} +function My(a,b){var c;c=a.b;a.b=b;if(!a.c){a.c=true;++a.d}return c} +function Yh(a,b){var c,d;c=a;d=Zh(0,b);_h(c.cZ,c.cM,c.qI,d);return d} +function _h(a,b,c,d){di();fi(d,bi,ci);d.cZ=a;d.cM=b;d.qI=c;return d} +function fi(a,b,c){di();for(var d=0,e=b.length;d<e;++d){a[b[d]]=c[d]}} +function Gb(a,b,c){var d;d=Eb();try{return Db(a,b,c)}finally{Hb(d)}} +function hA(a,b){var c;c=(zz(b,a.b),a.a[b]);tA(a.a,b,1);--a.b;return c} +function Hr(a){var b,c;c=a.b.children[0];b=c.children[1];return Dc(b)} +function qc(a){var b=a.join(GB);a.length=a.explicitLength=0;return b} +function ji(a){if(a!=null&&(a.tM==ZA||gi(a,1))){throw new kx}return a} +function Jz(a){if(a.b>=a.d.Db()){throw new XA}return a.d.Jb(a.c=a.b++)} +function Kz(a){if(a.c<0){throw new ox}a.d.Mb(a.c);a.b=a.c;a.c=-1} +function St(a){if(!a.a||!a.c.C){throw new XA}a.a=false;return a.b=a.c.C} +function yo(a){a.e=false;a.f=null;a.a=false;a.b=false;a.c=true;a.d=null} +function x(a,b){w(a);a.n=true;a.o=false;a.k=200;a.s=b;++a.q;B(a.j,eb())} +function Mp(a,b){var c;c=Cc($doc,a);sc($doc.body,c);b.M();tc($doc.body,c)} +function Zc(a){return Qc(Hx(a.compatMode,$B)?a.documentElement:a.body)} +function oi(a){return ~~Math.max(Math.min(a,2147483647),-2147483648)} +function Kb(){return $wnd.setTimeout(function(){zb!=0&&(zb=0);Cb=-1},10)} +function Hb(a){a&&Pb((Nb(),Mb));--zb;if(a){if(Cb!=-1){Jb(Cb);Cb=-1}}} +function Ec(a){var b=a.parentNode;(!b||b.nodeType!=1)&&(b=null);return b} +function K(a,b){var c;c=new ab(a,b);dA(a.a,c);a.a.b==1&&S(a.b,16);return c} +function gA(a,b,c){for(;c<a.b;++c){if(YA(b,a.a[c])){return c}}return -1} +function Ih(a){var b;b=a.mb();if(!b.qb()){return null}return ii(b.rb(),56)} +function Wo(){var a;if(Lo){a=new _o;!!Mo&&jh(Mo,a);return null}return null} +function xv(b){$wnd.genexSetDNASequence=yB(function(a){return b.wb(a)})} +function zv(b){$wnd.genexSetProblemNumber=yB(function(a){return b.xb(a)})} +function Mv(a){typeof $wnd.genexStoreAnswer===LB&&$wnd.genexStoreAnswer(a)} +function Kc(b){try{return b.getBoundingClientRect().top}catch(a){return 0}} +function Jc(b){try{return b.getBoundingClientRect().left}catch(a){return 0}} +function Au(a,b){var c;for(c=0;c<a.c;++c){if(a.a[c]==b){return c}}return -1} +function mr(a,b){var c;c=b.srcElement;if(Bc(c)){return Nc(a.H,c)}return false} +function Ny(e,a,b){var c,d=e.e;a=OB+a;a in d?(c=d[a]):++e.d;d[a]=b;return c} +function ei(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function rs(a,b,c){c?zc(a.a,b):Mc(a.a,b);if(a.c!=a.b){a.c=a.b;Oh(a.a,a.b)}} +function or(a){var b;b=a.C;if(b){a.o!=null&&b.db(a.o);a.p!=null&&b.eb(a.p)}} +function oo(a){var b;b=Co(to,a);if(!b&&!!a){a.cancelBubble=true;Ic(a)}return b} +function iA(a,b){var c;c=gA(a,b,0);if(c==-1){return false}hA(a,c);return true} +function ex(a,b,c,d){var e;e=new bx;e.c=a+b;gx(c)&&hx(c,e);e.a=d?8:0;return e} +function Px(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} +function $q(a){Zq.call(this,$doc.createElement(AE));this.H[oE]=BE;zc(this.H,a)} +function js(){gs.call(this,Gc($doc,VB));this.H[oE]=_E;rs(this.a,aF,false)} +function cu(){var a;bu();du.call(this,(a=$doc.createElement(BF),a.type=CF,a))} +function Uc(a){return (Hx(a.compatMode,$B)?a.documentElement:a.body).clientTop} +function Tc(a){return (Hx(a.compatMode,$B)?a.documentElement:a.body).clientLeft} +function Wc(a){return (Hx(a.compatMode,$B)?a.documentElement:a.body).clientWidth} +function Vc(a){return (Hx(a.compatMode,$B)?a.documentElement:a.body).clientHeight} +function $c(a){return (Hx(a.compatMode,$B)?a.documentElement:a.body).scrollTop||0} +function Ey(a,b){return b==null?a.c:ki(b,1)?Jy(a,ii(b,1)):Iy(a,b,~~xb(b))} +function Fy(a,b){return b==null?a.b:ki(b,1)?Hy(a,ii(b,1)):Gy(a,b,~~xb(b))} +function Oy(a,b){return b==null?Qy(a):ki(b,1)?Ry(a,ii(b,1)):Py(a,b,~~xb(b))} +function Rz(a,b){var c;this.a=a;this.d=a;c=a.Db();(b<0||b>c)&&Cz(b,c);this.b=b} +function vf(a,b){uf.call(this);this.a=b;!bf&&(bf=new eg);dg(bf,a,this);this.b=a} +function du(a){$t.call(this,a,(!Xm&&(Xm=new Ym),!Um&&(Um=new Vm)));this.H[oE]=DF} +function cw(){this.a=hJ;this.e=TI;this.f=0;this.g=UI;this.c=VI;this.b=WI;this.d=XI} +function dz(a){if(!a.b){throw new px(MJ)}else{Kz(a.a);Oy(a.c,a.b.Fb());a.b=null}} +function Ob(a){var b,c;if(a.b){c=null;do{b=a.b;a.b=null;c=Yb(b,c)}while(a.b);a.b=c}} +function Pb(a){var b,c;if(a.c){c=null;do{b=a.c;a.c=null;c=Yb(b,c)}while(a.c);a.c=c}} +function Ry(d,a){var b,c=d.e;a=OB+a;if(a in c){b=c[a];--d.d;delete c[a]}return b} +function Qr(a,b){var c;c=b.srcElement;if(Bc(c)){return Nc(Ec(Hr(a.j)),c)}return false} +function vv(a){var b,c;c=Bv(a);if(!c){Mv(sI);return}b=rw(a.B,c);Hx(b,tI)?Mv(uI):Mv(sI)} +function Dv(a,b,c){c!=-1?hs(a.s,aF+c):hs(a.s,aF);ks(a.r,b.a.b+FI+a.A+GI);a.H=b.b;Iv(a)} +function Ky(a,b,c){return b==null?My(a,c):ki(b,1)?Ny(a,ii(b,1),c):Ly(a,b,c,~~xb(b))} +function rb(a){var b;return a==null?HB:li(a)?sb(ji(a)):ki(a,1)?IB:(b=a,mi(b)?b.cZ:Ai).c} +function Dc(a){var b=a.firstChild;while(b&&b.nodeType!=1)b=b.nextSibling;return b} +function nv(a){var b;b=a.r;b=Lx(b,eI,GB);b=Lx(b,bI,GB);b=Lx(b,dI,GB);return Lx(b,cI,GB)} +function no(a,b,c){var d;d=ko;ko=a;b==lo&&fp(a.type)==8192&&(lo=null);c.X(a);ko=d} +function cx(a,b,c){var d;d=new bx;d.c=a+b;gx(c!=0?-c:0)&&hx(c!=0?-c:0,d);d.a=4;return d} +function Bd(){Bd=ZA;Ad=new Ed;yd=new Gd;zd=new Id;xd=new Kd;wd=_h(Bm,bB,7,[Ad,yd,zd,xd])} +function ld(){ld=ZA;kd=new od;hd=new qd;id=new sd;jd=new ud;gd=_h(Am,bB,5,[kd,hd,id,jd])} +function Rd(){Rd=ZA;Qd=new Ud;Pd=new Wd;Nd=new Yd;Od=new $d;Md=_h(Cm,bB,8,[Qd,Pd,Nd,Od])} +function fe(){fe=ZA;be=new ie;ce=new ke;de=new me;ee=new oe;ae=_h(Dm,bB,9,[be,ce,de,ee])} +function ws(){ws=ZA;new zs((fe(),eF));new zs(fF);us=new zs(xE);new zs(gF);vs=us;ts=vs} +function ku(){ku=ZA;gu=new nu;hu=new pu;iu=new ru;ju=new tu;fu=_h(Gm,bB,44,[gu,hu,iu,ju])} +function Bv(a){if(!a.H){return null}return new nw(a.f,a.g,a.i,a.d,a.a,a.H.i,a.H.e,a.H.q)} +function Ix(b,a){if(a==null)return false;return b==a||b.toLowerCase()==a.toLowerCase()} +function Fb(b){return function(){try{return Gb(b,this,arguments)}catch(a){throw a}}} +function wt(a){return a.currentStyle.direction==_B?a.clientWidth-(a.scrollWidth||0):0} +function vt(a){return a.currentStyle.direction==_B?0:(a.scrollWidth||0)-a.clientWidth} +function _c(a){return (Hx(a.compatMode,$B)?a.documentElement:a.body).scrollWidth||0} +function Yc(a){return (Hx(a.compatMode,$B)?a.documentElement:a.body).scrollHeight||0} +function w(a){if(!a.n){return}a.t=a.o;a.n=false;a.o=false;if(a.p){$(a.p);a.p=null}a.t&&Ts(a)} +function zn(a){var b;if(!a.f){return}b=sn(a.k,a.e);if(b){a.g=new Zn(a,b);Zb((Nb(),a.g),16)}} +function Qb(a){var b;if(a.a){b=a.a;a.a=null;!a.f&&(a.f=[]);Yb(b,a.f)}!!a.f&&(a.f=Xb(a.f))} +function ez(a){var b;this.c=a;b=new kA;a.c&&dA(b,new nz(a));Cy(a,b);By(a,b);this.a=new Lz(b)} +function wn(a,b){var c,d,e;e=new ln(a.a-b.a,a.b-b.b);c=ux(e.a);d=ux(e.b);return c<=25&&d<=25} +function Lc(a){var b,c;c=a.tagName;b=a.scopeName;if(b==null||Ix(ZB,b)){return c}return b+OB+c} +function oy(a,b){var c;while(a.qb()){c=a.rb();if(b==null?c==null:wb(b,c)){return a}}return null} +function sn(a,b){var c,d;d=b.b-a.b;if(d<=0){return null}c=hn(a.a,b.a);return new ln(c.a/d,c.b/d)} +function Hp(){var a=$wnd.location.href;var b=a.lastIndexOf(fE);return b>0?a.substring(b):GB} +function Ip(a){if(a.contentWindow){var b=a.contentWindow.document;return b.getElementById(jE)}} +function hw(a){if(!a.c&&!a.d)return TB;if(!a.c&&a.d){return JI}if(a.b==84)return iJ;return Sx(a.b)} +function er(a,b){if(a.C!=b){return false}try{oq(b,null)}finally{tc(a.ob(),b.H);a.C=null}return true} +function dq(a,b){if(!a){throw new mb(pE)}b=Nx(b);if(b.length==0){throw new mx(qE)}gq(a,b)} +function cq(a,b,c){if(!a){throw new mb(pE)}b=Nx(b);if(b.length==0){throw new mx(qE)}c?vc(a,b):yc(a,b)} +function S(a,b){if(b<0){throw new mx(EB)}a.b?T(a.c):U(a.c);iA(P,a);a.b=false;a.c=V(a,b);dA(P,a)} +function Sb(a){if(!a.i){a.i=true;!a.e&&(a.e=new _b(a));Zb(a.e,1);!a.g&&(a.g=new cc(a));Zb(a.g,50)}} +function nq(a){if(!a.G){(gt(),HA(ft,a))&&it(a)}else if(a.G){a.G.lb(a)}else if(a.G){throw new px(vE)}} +function Av(a,b,c){var d;d=new tv(b,a.C,a.D,a.G,a.u,a.t,a.z);rv(d);pv(d);sv(d);return new kw(iv(d,c),d)} +function Fs(a,b){var c,d;c=(d=Gc($doc,QE),d[jF]=a.a.a,ro(d,kF,a.c.a),d);sc(a.b,(_s(),at(c)));Aq(a,b,c)} +function Jr(a){var b,c;c=Gc($doc,QE);b=Gc($doc,VB);sc(c,(_s(),at(b)));c[oE]=a;b[oE]=a+RE;return c} +function wu(){ar.call(this);this.a=(ws(),ts);this.b=(Bs(),As);this.e[JE]=lF;this.e[KE]=lF} +function iw(a,b){this.e=b;this.b=a;this.d=false;this.c=false;this.a=-1;this.f=-1;this.g=false} +function Zn(a,b){this.e=a;this.a=new db;this.b=vn(this.e);this.d=new fn(this.b,b);this.f=So(new ao(this))} +function Uh(){Uh=ZA;Th=new Vh(VC,0);Sh=new Vh(WC,1);Rh=new Vh(XC,2);Qh=_h(Fm,bB,30,[Th,Sh,Rh])} +function uo(a){gp();!wo&&(wo=new uf);if(!to){to=new mh(null,true);xo=new Ao}return ih(to,wo,a)} +function Nh(a){var b;b=xc(a,TC);if(Ix(_B,b)){return Uh(),Th}else if(Ix(UC,b)){return Uh(),Sh}return Uh(),Rh} +function ug(){var a;this.a=(a=document.createElement(VB),a.setAttribute(JC,KC),typeof a.ontouchstart==LB)} +function zh(a){var b,c;if(a.a){try{for(c=new Lz(a.a);c.b<c.d.Db();){b=ii(Jz(c),46);b.M()}}finally{a.a=null}}} +function Bq(a,b){var c;if(b.G!=a){return false}try{oq(b,null)}finally{c=b.H;tc(Ec(c),c);Du(a.f,b)}return true} +function Sc(a,b){a.currentStyle.direction==_B&&(b+=(a.scrollWidth||0)-a.clientWidth);a.scrollLeft=b} +function Zb(b,c){Nb();$wnd.setTimeout(function(){var a=yB(Vb)(b);a&&$wnd.setTimeout(arguments.callee,c)},c)} +function qr(a,b,c){var d;a.v=b;a.B=c;b-=Tc($doc);c-=Uc($doc);d=a.H;d.style[xE]=b+(Ae(),FE);d.style[yE]=c+FE} +function Ts(a){if(!a.i){Ss(a);a.c||Gq((gt(),kt(null)),a.a);Nu(a.a.H)}a.a.H.style[pF]=qF;a.a.H.style[CB]=IE} +function Sr(a,b,c){var d,e;if(a.f){d=b+Oc(a.H);e=c+Pc(a.H);if(d<a.b||d>=a.i||e<a.c){return}qr(a,d-a.d,e-a.e)}} +function Xo(){var a,b;if(Po){b=Wc($doc);a=Vc($doc);if(Oo!=b||No!=a){Oo=b;No=a;$g((!Mo&&(Mo=new dp),Mo),b)}}} +function Cy(e,a){var b=e.e;for(var c in b){if(c.charCodeAt(0)==58){var d=new sz(e,c.substring(1));a.zb(d)}}} +function Bp(d){var b=GB;var c=Hp();if(c.length>0){try{b=d.Y(c.substring(1))}catch(a){$wnd.location.hash=GB}}rp=b} +function Dp(d){var b=d;var c=$wnd.__gwt_onHistoryLoad;$wnd.__gwt_onHistoryLoad=yB(function(a){b._(a);c&&c(a)})} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{yB(Lm)()}catch(a){b(c)}else{yB(Lm)()}} +function pc(a,b,c,d){var e;e=qc(a);nc(a,e.substr(0,b-0));a[a.explicitLength++]=d==null?HB:d;nc(a,Mx(e,c))} +function $m(a,b,c,d){var e,f,g;g=a*b;if(c>=0){e=0>c-d?0:c-d;g=g<e?g:e}else{f=0<c+d?0:c+d;g=g>f?g:f}return g} +function Yx(a){Wx();var b=OB+a;var c=Vx[b];if(c!=null){return c}c=Tx[b];c==null&&(c=Xx(a));Zx();return Vx[b]=c} +function gw(a){switch(a.b){case 65:return MI;case 71:return LI;case 67:return KI;case 84:return JI;}return GB} +function gf(a){var b,c;b=a.b;if(b){return c=a.a,(c.clientX||0)-Oc(b)+Qc(b)+Zc(b.ownerDocument)}return a.a.clientX||0} +function Oc(a){var b;b=a.ownerDocument;return oi(vx(Jc(a)/Rc(b)+Qc(Hx(b.compatMode,$B)?b.documentElement:b.body)))} +function Cu(a,b){var c;if(b<0||b>=a.c){throw new rx}--a.c;for(c=b;c<a.c;++c){ai(a.a,c,a.a[c+1])}ai(a.a,a.c,null)} +function fr(a,b){if(b==a.C){return}!!b&&nq(b);!!a.C&&a.lb(a.C);a.C=b;if(b){sc(a.ob(),(_s(),at(a.C.H)));oq(b,a)}} +function tr(a){if(a.x){Su(a.x.a);a.x=null}if(a.s){Su(a.s.a);a.s=null}if(a.A){a.x=uo(new Ns(a));a.s=Ho(new Qs(a))}} +function Eb(){var a;if(zb!=0){a=eb();if(a-Bb>2000){Bb=a;Cb=Kb()}}if(zb++==0){Ob((Nb(),Mb));return true}return false} +function wh(a,b){var c,d;d=ii(Fy(a.d,b),58);if(!d){d=new EA;Ky(a.d,b,d)}c=ii(d.b,57);if(!c){c=new kA;My(d,c)}return c} +function yh(a,b){var c,d;d=ii(Fy(a.d,b),58);if(!d){return wA(),wA(),vA}c=ii(d.b,57);if(!c){return wA(),wA(),vA}return c} +function Xy(a,b){var c,d,e;if(ki(b,59)){c=ii(b,59);d=c.Fb();if(Ey(a.a,d)){e=Fy(a.a,d);return DA(c.Gb(),e)}}return false} +function mv(a,b){var c;b>=a.a.b&&(b=a.a.b-1);c=ii(fA(a.a,b),48);while(!c.d&&b<a.a.b){c=ii(fA(a.a,b),48);++b}return c} +function vh(a,b,c){var d,e,f;d=yh(a,b);e=d.Cb(c);e&&d.Bb()&&(f=ii(Fy(a.d,b),58),ii(Qy(f),57),f.d==0&&Oy(a.d,b),undefined)} +function oq(a,b){var c;c=a.G;if(!b){try{!!c&&c.D&&a.ib()}finally{a.G=null}}else{if(c){throw new px(wE)}a.G=b;b.D&&a.hb()}} +function jb(a){var b,c,d;c=$h(Jm,bB,55,a.length,0);for(d=0,b=a.length;d<b;++d){if(!a[d]){throw new yx}c[d]=a[d]}} +function ic(){var a,b,c,d;c=gc(new kc);d=$h(Jm,bB,55,c.length,0);for(a=0,b=d.length;a<b;++a){d[a]=new Dx(c[a])}jb(d)} +function nw(a,b,c,d,e,f,g,h){this.f=a;this.g=b;this.i=c;this.e=d;this.a=e;this.b=f;this.d=g;this.c=h;tJ+mw(this)} +function ar(){Cq.call(this);this.e=Gc($doc,CE);this.d=Gc($doc,DE);sc(this.e,(_s(),at(this.d)));Yp(this,this.e)} +function Jn(){this.d=new kA;this.e=new io;this.k=new io;this.j=new io;this.q=new kA;this.i=new eo(this);Fn(this,new an)} +function sh(a,b,c){if(!b){throw new zx(NC)}if(!c){throw new zx(OC)}a.b>0?rh(a,new Vu(a,b,c)):th(a,b,c);return new Tu(a,b,c)} +function mq(a){if(!a.D){throw new px(uE)}try{a.kb();Og(a,false)}finally{try{a.gb()}finally{a.H.__listener=null;a.D=false}}} +function av(a){switch(a.a){case 0:++a.a;case 1:++a.a;return vH;case 2:++a.a;return wH;case 3:a.a=1;return xH;}return GB} +function Oh(a,b){switch(b.b){case 0:{a[TC]=_B;break}case 1:{a[TC]=UC;break}case 2:{Nh(a)!=(Uh(),Rh)&&(a[TC]=GB,undefined);break}}} +function jc(b){var c=GB;try{for(var d in b){if(d!=PB&&d!=QB&&d!=RB){try{c+=SB+d+FB+b[d]}catch(a){}}}}catch(a){}return c} +function jA(a,b){var c;b.length<a.b&&(b=Yh(b,a.b));for(c=0;c<a.b;++c){ai(b,c,a.a[c])}b.length>a.b&&ai(b,a.b,null);return b} +function Pc(a){var b;b=a.ownerDocument;return oi(vx(Kc(a)/Rc(b)+((Hx(b.compatMode,$B)?b.documentElement:b.body).scrollTop||0)))} +function hf(a){var b,c;b=a.b;if(b){return c=a.a,(c.clientY||0)-Pc(b)+(b.scrollTop||0)+$c(b.ownerDocument)}return a.a.clientY||0} +function Qc(a){if(a.currentStyle.direction==_B){return (a.scrollLeft||0)-((a.scrollWidth||0)-a.clientWidth)}return a.scrollLeft||0} +function Rc(a){var b;if(Hx(a.compatMode,$B)){return 1}else{b=a.body.offsetWidth||0;return b==0?1:~~((Ec(a.body).offsetWidth||0)/b)}} +function Nu(a){var b=a.__frame;if(b){b.parentElement.removeChild(b);b.__popup=null;a.__frame=null;a.onresize=null;a.onmove=null}} +function By(h,a){var b=h.a;for(var c in b){var d=parseInt(c,10);if(c==d){var e=b[d];for(var f=0,g=e.length;f<g;++f){a.zb(e[f])}}}} +function Gy(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Fb();if(h.Eb(a,g)){return f.Gb()}}}return null} +function Iy(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Fb();if(h.Eb(a,g)){return true}}}return false} +function ef(a,b,c){var d,e,f;if(bf){f=ii(cg(bf,a.type),12);if(f){d=f.a.a;e=f.a.b;cf(f.a,a);df(f.a,c);jq(b,f.a);cf(f.a,d);df(f.a,e)}}} +function vu(a,b){var c,d,e;d=Gc($doc,LE);c=(e=Gc($doc,QE),e[jF]=a.a.a,ro(e,kF,a.b.a),e);sc(d,(_s(),at(c)));sc(a.d,at(d));Aq(a,b,c)} +function Ep(d,a){var b=(e=Gc($doc,VB),Mc(e,a),e.innerHTML),e;var c=d.a.contentWindow.document;c.open();c.write(hE+b+iE);c.close()} +function Nx(c){if(c.length==0||c[0]>TB&&c[c.length-1]>TB){return c}var a=c.replace(/^(\s*)/,GB);var b=a.replace(/\s*$/,GB);return b} +--></script> +<script><!-- +function hc(a){var b,c,d,e;d=(li(a.b)?ji(a.b):null,[]);e=$h(Jm,bB,55,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new Dx(d[b])}jb(e)} +function hq(a,b,c){var d;d=fp(c.b);d==-1?null:a.E==-1?np(a.H,d|(a.H.__eventBits||0)):(a.E|=d);return ih(!a.F?(a.F=new lh(a)):a.F,c,b)} +function pp(){var a=false;for(var b=0;b<$wnd.__gwt_globalEventArray.length;b++){!$wnd.__gwt_globalEventArray[b]()&&(a=true)}return !a} +function Lm(){var a;!!$stats&&Rm(YC);a=Qu();Hx(ZC,a)||($wnd.alert($C+a+_C),undefined);!!$stats&&Rm(aD);so();!!$stats&&Rm(bD);Cv(new Ev)} +function Gs(){ar.call(this);this.a=(ws(),ts);this.c=(Bs(),As);this.b=Gc($doc,LE);sc(this.d,(_s(),at(this.b)));this.e[JE]=lF;this.e[KE]=lF} +function yn(a,b){var c,d,e,f;c=eb();f=false;for(e=new Lz(a.q);e.b<e.d.Db();){d=ii(Jz(e),35);if(c-d.b<=2500&&wn(b,d.a)){f=true;break}}return f} +function rw(a,b){var c,d,e,f;c=new ey;e=Tz(xy(a.a.a));f=true;while(Iz(e.a.a)){d=ii(Zz(e),49);if(!d.yb(b)){f=false;ay(c,d.b)}}return f?tI:rc(c.a)} +function At(a,b){a.__lastScrollTop=a.__lastScrollLeft=0;a.attachEvent(vF,zt);a.attachEvent(wF,yt);b.attachEvent(wF,yt);b.__isScrollContainer=true} +function Rm(a){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:cD,evtGroup:dD,millis:(new Date).getTime(),type:eD,className:a})} +function Ox(a){var b;b=0;while(0<=(b=a.indexOf(DJ,b))){a.charCodeAt(b+1)==36?(a=a.substr(0,b-0)+EJ+Mx(a,++b)):(a=a.substr(0,b-0)+Mx(a,++b))}return a} +function Ap(a){var b;a.a=$doc.getElementById(gE);if(!a.a){return false}Bp(a);b=Ip(a.a);b?yp(b.innerText):Ep(a,rp==null?GB:rp);Dp(a);Cp(a);return true} +function Yb(b,c){var a,d,e,f;for(d=0,e=b.length;d<e;++d){f=b[d];try{f[1]?f[0].L()&&(c=Wb(c,f)):f[0].M()}catch(a){a=Mm(a);if(!ki(a,56))throw a}}return c} +function Ae(){Ae=ZA;ze=new De;xe=new Fe;se=new He;te=new Je;ye=new Le;we=new Ne;ue=new Pe;re=new Re;ve=new Te;qe=_h(Em,bB,10,[ze,xe,se,te,ye,we,ue,re,ve])} +function lq(a,b){var c;switch(fp(b.type)){case 16:case 32:c=b.relatedTarget||(b.type==EC?b.toElement:b.fromElement);if(!!c&&Nc(a.H,c)){return}}ef(b,a,a.H)} +function kq(a){var b;if(a.D){throw new px(tE)}a.D=true;hp(a.H,a);b=a.E;a.E=-1;b>0&&(a.E==-1?np(a.H,b|(a.H.__eventBits||0)):(a.E|=b));a.fb();a.jb();Og(a,true)} +function so(){var a,b,c;b=$doc.compatMode;a=_h(Km,bB,1,[$B]);for(c=0;c<a.length;++c){if(Hx(a[c],b)){return}}a.length==1&&Hx($B,a[0])&&Hx(iD,b)?jD+b+kD:lD+b+mD} +function hx(a,b){var c;b.b=a;if(a==2){c=String.prototype}else{if(a>0){var d=fx(b);if(d){c=d.prototype}else{d=Om[a]=function(){};d.cZ=b;return}}else{return}}c.cZ=b} +function py(a){var b,c,d,e;d=new ey;b=null;mc(d.a,FJ);c=a.mb();while(c.qb()){b!=null?(mc(d.a,b),d):(b=GJ);e=c.rb();mc(d.a,e===a?HJ:GB+e)}mc(d.a,IJ);return rc(d.a)} +function Ss(a){if(a.i){if(a.a.u){sc($doc.body,a.a.q);Ou(a.a.q);a.f=So(a.a.r);Js();a.b=true}}else if(a.b){tc($doc.body,a.a.q);Nu(a.a.q);Su(a.f.a);a.f=null;a.b=false}} +function L(a){var b,c,d,e,f;b=$h(zm,_A,3,a.a.b,0);b=ii(jA(a.a,b),4);c=new db;for(e=0,f=b.length;e<f;++e){d=b[e];iA(a.a,d);B(d.a,c.a)}a.a.b>0&&S(a.b,wx(5,16-(eb()-c.a)))} +function gv(a,b){var c,d;d=Kx(a.k,a.d,b);if(d==-1)return new dv(b,a.k.length,-1);c=Kx(a.k,a.c,d);if(c==-1)return new dv(b,a.k.length,-1);return new dv(b,d,c+a.c.length)} +function Bx(){Bx=ZA;Ax=_h(ym,bB,-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function tx(a){var b,c,d;b=$h(ym,bB,-1,8,1);c=(Bx(),Ax);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return Px(b,d,8)} +function Co(a,b){var c,d,e,f,g;if(!!wo&&!!a&&kh(a,wo)){c=xo.a;d=xo.b;e=xo.c;f=xo.d;yo(xo);zo(xo,b);jh(a,xo);g=!(xo.a&&!xo.b);xo.a=c;xo.b=d;xo.c=e;xo.d=f;return g}return true} +function Js(){var a,b,c,d,e;b=null.Nb();e=Wc($doc);d=Vc($doc);b[mF]=(ld(),nF);b[kE]=0+(Ae(),FE);b[mE]=GE;c=_c($doc);a=Yc($doc);b[kE]=(c>e?c:e)+FE;b[mE]=(a>d?a:d)+FE;b[mF]=oF} +function Us(a){Ss(a);if(a.i){a.a.H.style[zE]=rF;a.a.B!=-1&&qr(a.a,a.a.v,a.a.B);Fq((gt(),kt(null)),a.a);Ou(a.a.H)}else{a.c||Gq((gt(),kt(null)),a.a);Nu(a.a.H)}a.a.H.style[CB]=IE} +function Vs(a,b){var c,d,e,f,g,h;a.i||(b=1-b);g=0;e=0;f=0;c=0;d=oi(b*a.d);h=oi(b*a.e);switch(0){case 2:case 0:g=a.d-d>>1;e=a.e-h>>1;f=e+h;c=g+d;}Mu(a.a.H,sF+g+tF+f+tF+c+tF+e+uF)} +function jh(b,c){var a,d,e;!c.e||c.Q();e=c.f;_e(c,b.b);try{uh(b.a,c)}catch(a){a=Mm(a);if(ki(a,47)){d=a;throw new Kh(d.a)}else throw a}finally{e==null?(c.e=true,c.f=null):(c.f=e)}} +function Zh(a,b){var c=new Array(b);if(a==3){for(var d=0;d<b;++d){var e=new Object;e.l=e.m=e.h=0;c[d]=e}}else if(a>0){var e=[null,0,false][a];for(var d=0;d<b;++d){c[d]=e}}return c} +function Jh(a){var b,c,d,e,f;c=a.Db();if(c==0){return null}b=new jy(c==1?QC:c+RC);d=true;for(f=a.mb();f.qb();){e=ii(f.rb(),56);d?(d=false):(mc(b.a,SC),b);iy(b,e.K())}return rc(b.a)} +function Py(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Fb();if(h.Eb(a,g)){c.length==1?delete h.a[b]:c.splice(d,1);--h.d;return f.Gb()}}}return null} +function Ly(j,a,b,c){var d=j.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.Fb();if(j.Eb(a,h)){var i=g.Gb();g.Hb(b);return i}}}else{d=j.a[c]=[]}var g=new SA(a,b);d.push(g);++j.d;return null} +function mw(a){var b;b=new ey;mc(b.a,jJ);ay(b,kJ+a.f+GH);ay(b,lJ+a.g+GH);ay(b,mJ+a.i+GH);ay(b,nJ+a.e+GH);ay(b,oJ+a.a+GH);ay(b,pJ+a.b+GH);ay(b,qJ+a.d+GH);ay(b,rJ+a.c+sJ);return rc(b.a)} +function Oq(b,c){Mq();var a,d,e,f,g;d=null;for(g=b.mb();g.qb();){f=ii(g.rb(),45);try{c.nb(f)}catch(a){a=Mm(a);if(ki(a,56)){e=a;!d&&(d=new JA);GA(d,e)}else throw a}}if(d){throw new Nq(d)}} +function ec(a){var b,c,d;d=GB;a=Nx(a);b=a.indexOf(JB);c=a.indexOf(LB)==0?8:0;if(b==-1){b=Jx(a,String.fromCharCode(64));c=a.indexOf(MB)==0?9:0}b!=-1&&(d=Nx(a.substr(c,b-c)));return d.length>0?d:NB} +function Xx(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c<e){b=a.charCodeAt(c+3)+31*(a.charCodeAt(c+2)+31*(a.charCodeAt(c+1)+31*(a.charCodeAt(c)+31*b)))|0;c+=4}while(c<d){b=b*31+Gx(a,c++)}return b|0} +function ai(a,b,c){if(c!=null){if(a.qI>0&&!hi(c,a.qI)){throw new Tw}else if(a.qI==-1&&(c.tM==ZA||gi(c,1))){throw new Tw}else if(a.qI<-1&&!(c.tM!=ZA&&!gi(c,1))&&!hi(c,-a.qI)){throw new Tw}}return a[b]=c} +function Cp(g){var e=g;var f=yB(function(){$wnd.setTimeout(f,250);if(e.ab()){return}var b=Hp();if(b.length>0){var c=GB;try{c=e.Y(b.substring(1))}catch(a){e.bb()}var d=rp==null?GB:rp;d&&c!=d&&e.bb()}});f()} +function kt(a){gt();var b,c;c=ii(Fy(et,a),42);b=null;if(a!=null){if(!(b=Xc($doc,a))){return null}}if(c){if(!b||c.H==b){return c}}et.d==0&&Qo(new pt);!b?(c=new st):(c=new ht(b));Ky(et,a,c);GA(ft,c);return c} +function Nc(a,b){if(a.nodeType!=1&&a.nodeType!=9){return a==b}if(b.nodeType!=1){b=b.parentNode;if(!b){return false}}if(a.nodeType==9){return a===b||a.body&&a.body.contains(b)}else{return a===b||a.contains(b)}} +function Bu(a,b,c){var d,e;if(c<0||c>a.c){throw new rx}if(a.c==a.a.length){e=$h(Hm,bB,45,a.a.length*2,0);for(d=0;d<a.a.length;++d){ai(e,d,a.a[d])}a.a=e}++a.c;for(d=a.c-1;d>c;--d){ai(a.a,d,a.a[d-1])}ai(a.a,c,b)} +function Gc(a,b){var c,d;if(b.indexOf(OB)!=-1){c=(!a.__gwt_container&&(a.__gwt_container=a.createElement(VB)),a.__gwt_container);c.innerHTML=WB+b+XB||GB;d=Dc(c);c.removeChild(d);return d}return a.createElement(b)} +function Pm(a,b,c){var d=Om[a];if(d&&!d.cZ){_=d.prototype}else{!d&&(d=Om[a]=function(){});_=d.prototype=b<0?{}:Qm(b);_.cM=c}for(var e=3;e<arguments.length;++e){arguments[e].prototype=_}if(d.cZ){_.cZ=d.cZ;d.cZ=null}} +function Kv(d){$doc.onkeypress=function(a){if(d.n){var a=$wnd.event||a;var b=String.fromCharCode(a.charCode);var c=a.charCode;d.ub(b,c)}};$doc.onkeydown=function(a){if(d.n){var a=$wnd.event||a;var b=a.keyCode;d.tb(b)}}} +function Jt(a){var b,c;if(a.c){return false}a.c=(b=(!rn&&(rn=(Xw(),(!hg&&(hg=new ug),hg.a)&&!(c=navigator.userAgent.toLowerCase(),/android ([3-9]+)\.([0-9]+)/.exec(c)!=null)?Ww:Vw)),rn.a?new Jn:null),!!b&&Gn(b,a),b);return !a.c} +function gq(a,b){var c=a.className.split(/\s+/);if(!c){return}var d=c[0];var e=d.length;c[0]=b;for(var f=1,g=c.length;f<g;f++){var h=c[f];h.length>e&&h.charAt(e)==rE&&h.indexOf(d)==0&&(c[f]=b+h.substring(e))}a.className=c.join(TB)} +function Cn(a,b){var c,d;ho(a.j,null,0);if(a.r){return}d=un(b);a.p=new ln(d.pageX,d.pageY);c=eb();ho(a.k,a.p,c);ho(a.e,a.p,c);a.n=null;if(a.g){dA(a.q,new jo(a.p,c));Zb((Nb(),a.i),2500)}a.o=new ln(Qc(a.s.b),a.s.b.scrollTop||0);tn(a);a.r=true} +function vc(a,b){var c,d,e,f;b=Nx(b);f=a.className;c=f.indexOf(b);while(c!=-1){if(c==0||f.charCodeAt(c-1)==32){d=c+b.length;e=f.length;if(d==e||d<e&&f.charCodeAt(d)==32){break}}c=f.indexOf(b,c+1)}if(c==-1){f.length>0&&(f+=TB);a.className=f+b}} +function gc(i){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=i.N(c.toString());b.push(d);var e=OB+d;var f=a[e];if(f){var g,h;for(g=0,h=f.length;g<h;g++){if(f[g]===c){return b}}}(f||(a[e]=[])).push(c);c=c.caller}return b} +function Lt(a){gr.call(this);this.b=this.H;this.a=Gc($doc,VB);sc(this.b,this.a);this.b.style[CB]=(Bd(),xF);this.b.style[zE]=(Rd(),yF);this.a.style[zE]=yF;this.b.style[zF]=AF;this.a.style[zF]=AF;Jt(this);!ut&&(ut=new Bt);At(this.b,this.a);fr(this,a)} +function tv(a,b,c,d,e,f,g){var h;this.a=new kA;this.b=a;this.n=b;this.o=c;this.s=d;this.d=e;this.c=f;this.j=g;this.p=-1;this.t=-1;this.g=0;this.i=0;this.f=0;this.k=GB;this.e=GB;this.q=GB;this.r=GB;for(h=0;h<a.length;++h){dA(this.a,new iw(Gx(this.b,h),h))}} +function Ws(a,b,c){var d;a.c=c;w(a);if(a.g){R(a.g);a.g=null;Ts(a)}a.a.A=b;tr(a.a);d=!c&&a.a.t;a.i=b;if(d){if(b){Ss(a);a.a.H.style[zE]=rF;a.a.B!=-1&&qr(a.a,a.a.v,a.a.B);a.a.H.style[pF]=HE;Fq((gt(),kt(null)),a.a);Ou(a.a.H);a.g=new Zs(a);S(a.g,1)}else{x(a,eb())}}else{Us(a)}} +function _m(a){var b,c,d,e,f,g,h,i,j,k,l,m;e=a.b;m=a.a;f=a.c;k=a.e;b=Math.pow(0.9993,m);g=e*5.0E-4;i=$m(f.a,b,k.a,g);j=$m(f.b,b,k.b,g);h=new ln(i,j);a.e=h;d=a.b;c=jn(h,new ln(d,d));l=a.d;en(a,new ln(l.a+c.a,l.b+c.b));if(ux(h.a)<0.02&&ux(h.b)<0.02){return false}return true} +function Xb(a){var b,c,d,e,f,g;d=a.length;if(d==0){return null}b=false;f=eb();while(eb()-f<100){for(c=0;c<d;++c){g=a[c];if(!g){continue}if(!g[0].L()){a[c]=null;b=true}}}if(b){e=[];for(c=0;c<d;++c){!!a[c]&&(e[e.length]=a[c],undefined)}return e.length==0?null:e}else{return a}} +function Ir(a){var b,c,d,e;hr.call(this,Gc($doc,CE));d=this.H;this.b=Gc($doc,DE);mo(d,this.b);d[JE]=0;d[KE]=0;for(b=0;b<a.length;++b){c=(e=Gc($doc,LE),e[oE]=a[b],mo(e,Jr(a[b]+ME)),mo(e,Jr(a[b]+NE)),mo(e,Jr(a[b]+OE)),e);mo(this.b,c);b==1&&(this.a=Dc(c.children[1]))}this.H[oE]=PE} +function rv(a){var b,c,d,e,f,g;f=Jx(a.b,a.n);g=Kx(a.b,a.s,f);e=new ey;if(f!=-1){c=0;a.p=f;a.g=a.p+a.n.length+a.o;g!=-1?(a.t=g):(a.t=a.b.length);for(b=a.g;b<a.t;++b){d=ii(fA(a.a,b),48);d.c=true;++c}for(b=0;b<a.b.length;++b){d=ii(fA(a.a,b),48);ay(e,hw(d))}a.k=Nx(rc(e.a))}else{a.k=GB}} +function Iv(e){function f(a,b,c){var d=document.createRange();d.selectNodeContents(a);d.setEnd(b,c);return d.toString().length} +var g=$doc.getElementById(HI);g.style.cursor=II;g.onclick=function(){var a=$wnd.getSelection();var b=f(this,a.anchorNode,a.anchorOffset);e.vb(b);e.n=true}} +function uh(b,c){var a,d,e,f,g,h;if(!c){throw new zx(PC)}try{++b.b;g=xh(b,c.P());d=null;h=b.c?g.Lb(g.Db()):g.Kb();while(b.c?h.b>0:h.b<h.d.Db()){f=b.c?Qz(h):Jz(h);try{c.O(ii(f,27))}catch(a){a=Mm(a);if(ki(a,56)){e=a;!d&&(d=new JA);GA(d,e)}else throw a}}if(d){throw new Hh(d)}}finally{--b.b;b.b==0&&zh(b)}} +function pv(a){var b,c,d,e,f,g;if(Hx(a.k,GB)){a.e=GB}else{c=0;f=new ey;d=0;while(c!=-1){b=gv(a,c);++a.i;c=b.c;for(e=b.b;e<b.a;++e){g=ii(fA(a.a,e+a.g),48);g.d=true;++d;ay(f,hw(g))}}for(e=a.t;e<a.t+a.j.length;++e){if(e>=a.a.b){g=new iw(65,e);g.d=true;dA(a.a,g)}else{g=ii(fA(a.a,e),48);g.d=true}}a.e=rc(f.a)+a.j}} +function bt(){var c=function(){};c.prototype={className:GB,clientHeight:0,clientWidth:0,dir:GB,getAttribute:function(a,b){return this[a]},href:GB,id:GB,lang:GB,nodeType:1,removeAttribute:function(a,b){this[a]=undefined},setAttribute:function(a,b){this[a]=b},src:GB,style:{},title:GB};$wnd.GwtPotentialElementShim=c} +function yc(a,b){var c,d,e,f,g,h,i;b=Nx(b);i=a.className;e=i.indexOf(b);while(e!=-1){if(e==0||i.charCodeAt(e-1)==32){f=e+b.length;g=i.length;if(f==g||f<g&&i.charCodeAt(f)==32){break}}e=i.indexOf(b,e+1)}if(e!=-1){c=Nx(i.substr(0,e-0));d=Nx(Mx(i,e+b.length));c.length==0?(h=d):d.length==0?(h=c):(h=c+TB+d);a.className=h}} +function ov(a,b,c,d,e){var f,g;f=new ey;g=new ey;b==a.p&&(mc(g.a,qI),g);b==a.p+a.n.length&&(mc(g.a,bI),g);b==a.t&&(mc(g.a,rI),g);b==a.t+a.s.length&&(mc(g.a,bI),g);if(d){mc(g.a,eI);mc(g.a,c);mc(g.a,bI);e?(mc(f.a,c),f):ay(f,c.toLowerCase())}else{mc(g.a,c);e?ay(f,c.toLowerCase()):(mc(f.a,c),f)}return new ew(rc(g.a),rc(f.a))} +function y(a,b){var c,d,e;c=a.q;d=b>=a.s+a.k;if(a.o&&!d){e=(b-a.s)/a.k;Vs(a,(1+Math.cos(3.141592653589793+e*3.141592653589793))/2);return a.n&&a.q==c}if(!a.o&&b>=a.s){a.o=true;a.d=wc(a.a.H,AB);a.e=wc(a.a.H,BB);a.a.H.style[CB]=DB;Vs(a,(1+Math.cos(3.141592653589793))/2);if(!(a.n&&a.q==c)){return false}}if(d){a.n=false;a.o=false;Ts(a);return false}return true} +function lr(a){var b,c,d,e,f;d=a.A;c=a.t;if(!d){a.H.style[EE]=DB;Pu(a.H,false);a.t=false;!a.g&&(a.g=So(new as(a)));sr(a)}b=a.H;b.style[xE]=0+(Ae(),FE);b.style[yE]=GE;e=Wc($doc)-wc(a.H,BB)>>1;f=Vc($doc)-wc(a.H,AB)>>1;qr(a,wx(Zc($doc)+e,0),wx($c($doc)+f,0));if(!d){a.t=c;if(c){Mu(a.H,HE);a.H.style[EE]=IE;Pu(a.H,true);x(a.z,eb())}else{a.H.style[EE]=IE;Pu(a.H,true)}}} +function Gn(a,b){var c,d;if(a.s==b){return}tn(a);for(d=new Lz(a.d);d.b<d.d.Db();){c=ii(Jz(d),28);Su(c.a)}eA(a.d);Dn(a);En(a);a.s=b;if(b){b.D&&(En(a),a.b=uo(new Vn(a)));a.a=iq(b,new Ln(a),(!Kg&&(Kg=new uf),Kg));dA(a.d,hq(b,new Nn(a),(Eg(),Eg(),Dg)));dA(a.d,hq(b,new Pn(a),(xg(),xg(),wg)));dA(a.d,hq(b,new Rn(a),(pg(),pg(),og)));dA(a.d,hq(b,new Tn(a),(jg(),jg(),ig)))}} +function Ct(){zt=function(){var a=$wnd.event.srcElement;a.__lastScrollTop=a.scrollTop;a.__lastScrollLeft=a.scrollLeft};yt=function(){var a=$wnd.event.srcElement;a.__isScrollContainer&&(a=a.parentNode);setTimeout(yB(function(){if(a.scrollTop!=a.__lastScrollTop||a.scrollLeft!=a.__lastScrollLeft){a.__lastScrollTop=a.scrollTop;a.__lastScrollLeft=a.scrollLeft;Dt(a)}}),1)}} +function iv(a,b){var c,d,e,f,g,h,i,j,k;if(b!=-1){h=ii(fA(a.a,b),48);h.g=true}e=new ey;d=new ey;f=(k=new ey,mc(k.a,QH),mc(k.a,RH),mc(k.a,SH),mc(k.a,TH),mc(k.a,UH),mc(k.a,VH),mc(k.a,WH),mc(k.a,XH),mc(k.a,YH),new ew(rc(k.a),GB));ay(e,f.b);ay(d,f.a);c=hv(a);ay(e,c.b);ay(d,c.a);a.f=fv(c.b);i=lv(a);ay(e,i.b);ay(d,i.a);g=kv(a);ay(e,g.b);ay(d,g.a);j=jv(a,b);ay(e,j.b);ay(d,j.a);return new ew(rc(e.a),rc(d.a))} +function sv(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(Hx(a.e,GB)){a.q=GB}else{h=0;l=new ey;for(j=0;j<a.a.b;++j){b=ii(fA(a.a,j),48);if(b.d){c=mv(a,j);d=mv(a,c.e+1);e=mv(a,d.e+1);f=hw(c)+hw(d)+hw(e);h=e.e;if(Hx(f,fG)){qv(0,c,d,e);ay(l,$u(f));break}}}g=1;k=h+1;while(k<=a.a.b){i=mv(a,k);m=mv(a,i.e+1);n=mv(a,m.e+1);f=hw(i)+hw(m)+hw(n);if(k+2>=a.a.b)break;k=n.e+1;ay(l,$u(f));qv(g,i,m,n);if(Hx($u(f),GB)){qv(-2,i,m,n);break}++g}a.q=rc(l.a)}} +function jv(a,b){var c,d,e,f,g,h;c=new ey;d=new ey;h=new ey;if(Hx(a.d,nF)||Hx(a.c,nF)){for(e=0;e<a.g;++e){mc(h.a,TB);mc(c.a,TB)}}if(Hx(a.q,GB)){mc(h.a,ZH);mc(c.a,$H)}else{for(e=0;e<a.b.length;++e){f=ii(fA(a.a,e),48);if(f.d){if(f.a==0){break}mc(h.a,TB);mc(c.a,TB)}}mc(h.a,_H);ay(c,_H+a.q+aI);if(b!=-1){g=new fy(a.q);f=ii(fA(a.a,b),48);if(f.a>=0){g=cy(g,f.a*3+3,bI);g=cy(g,f.a*3+f.f+1,cI);g=cy(g,f.a*3+f.f,dI);g=cy(g,f.a*3,eI)}ay(h,rc(g.a)+fI)}else{ay(h,a.q+fI)}}a.r=rc(h.a);ay(d,a.r+GH);return new ew(rc(d.a),rc(c.a))} +function Qu(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(KF)!=-1}())return KF;if(function(){return b.indexOf(LF)!=-1}())return MF;if(function(){return b.indexOf(NF)!=-1&&$doc.documentMode>=9}())return OF;if(function(){return b.indexOf(NF)!=-1&&$doc.documentMode>=8}())return PF;if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return ZC;if(function(){return b.indexOf(QF)!=-1}())return RF;return SF} +function pr(a,b){var c,d,e,f;if(b.a||!a.y&&b.b){a.w&&(b.a=true);return}a.W(b);if(b.a){return}d=b.d;c=mr(a,d);c&&(b.b=true);a.w&&(b.a=true);f=fp(d.type);switch(f){case 512:case 256:case 128:{((d.keyCode||0)&65535,(d.shiftKey?1:0)|(d.metaKey?8:0)|(d.ctrlKey?2:0)|(d.altKey?4:0),true)||(b.a=true);return}case 4:case 1048576:if(lo){b.b=true;return}if(!c&&a.k){nr(a);return}break;case 8:case 64:case 1:case 2:case 4194304:{if(lo){b.b=true;return}break}case 2048:{e=d.srcElement;if(a.w&&!c&&!!e){e.blur&&e!=$doc.body&&e.blur();b.a=true;return}break}}} +function Ou(a){var b=$doc.createElement(EF);b.src=FF;b.scrolling=GF;b.frameBorder=0;a.__frame=b;b.__popup=a;var c=b.style;c.position=rF;c.filter=HF;c.visibility=a.currentStyle.visibility;c.border=0;c.padding=0;c.margin=0;c.left=a.offsetLeft;c.top=a.offsetTop;c.width=a.offsetWidth;c.height=a.offsetHeight;c.zIndex=a.currentStyle.zIndex;a.onmove=function(){b.style.left=a.offsetLeft;b.style.top=a.offsetTop};a.onresize=function(){b.style.width=a.offsetWidth;b.style.height=a.offsetHeight};c.setExpression(IF,JF);a.parentElement.insertBefore(b,a)} +function Cv(a){a.r=new ls;a.F=new Lt(a.r);Zp(a.F);$p(a.F,vI);Fq(kt(wI),a.F);a.j=new Ur;_p(a.j,xI);a.k=new wu;hs(a.j.a,yI);a.v=new ms;$p(a.v,zI);a.o=new cu;a.c=new $q(AI);_p(a.c,BI);hq(a.c,new Ov(a),(kf(),kf(),jf));a.x=new $q(tI);_p(a.x,BI);hq(a.x,new Uv(a),jf);a.q=new Gs;Fs(a.q,a.c);Fs(a.q,a.x);vu(a.k,a.v);vu(a.k,a.o);vu(a.k,a.q);Br(a.j,a.k);a.E=new $q(CI);_p(a.E,BI);hq(a.E,new Xv(a),jf);a.w=new $q(DI);_p(a.w,BI);hq(a.w,new $v(a),jf);a.s=new js;_p(a.s,EI);a.p=new Gs;Fs(a.p,a.E);Fs(a.p,a.w);Fs(a.p,a.s);Fq(kt(wI),a.p);Tb((Nb(),Mb),new Rv(a))} +function Bn(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(!a.r){return}i=un(b);j=new ln(i.pageX,i.pageY);k=eb();ho(a.e,j,k);if(!a.c){e=hn(j,a.p);c=ux(e.a);d=ux(e.b);if(c>5||d>5){ho(a.j,a.k.a,a.k.b);if(c>d){h=Qc(a.s.b);g=Ht(a.s);f=Ft(a.s);if(e.a<0&&f<=h){tn(a);return}else if(e.a>0&&g>=h){tn(a);return}}else{n=a.s.b.scrollTop||0;m=Gt(a.s);if(e.b<0&&m<=n){tn(a);return}else if(e.b>0&&0>=n){tn(a);return}}a.c=true}}Ic(b.a);if(a.c){o=hn(a.p,a.e.a);p=kn(a.o,o);It(a.s,oi(p.a));Kt(a.s,oi(p.b));l=k-a.k.b;if(l>200&&!!a.n){ho(a.k,a.n.a,a.n.b);a.n=null}else l>100&&!a.n&&(a.n=new jo(j,k))}} +function lv(a){var b,c,d,e,f,g,h;b=new ey;c=new ey;f=false;e=new bv;if(!(Hx(a.d,nF)||Hx(a.c,nF))){mc(c.a,nI);mc(b.a,oI);if(Hx(a.k,GB)){mc(c.a,ZH);mc(b.a,$H)}else{for(g=0;g<a.g;++g){mc(c.a,TB);mc(b.a,TB)}mc(c.a,zH);mc(b.a,zH);for(g=0;g<a.b.length;++g){d=ii(fA(a.a,g),48);g!=0?(h=ii(fA(a.a,g-1),48)):(h=ii(fA(a.a,0),48));if(d.c){if(!h.d&&d.d){ay(c,kI+av(e)+lI);f=true}if(h.d&&!d.d){mc(c.a,bI);f=false}if(d.g){mc(c.a,eI);ay(c,hw(d));mc(c.a,bI);f?ay(b,hw(d).toLowerCase()):ay(b,hw(d))}else{ay(c,hw(d));f?ay(b,hw(d)):ay(b,hw(d).toLowerCase())}}}mc(c.a,pI);mc(b.a,mI)}}return new ew(rc(c.a),rc(b.a))} +function fp(a){switch(a){case pD:return 4096;case qD:return 1024;case AC:return 1;case rD:return 2;case sD:return 2048;case tD:return 128;case uD:return 256;case vD:return 512;case wD:return 32768;case xD:return 8192;case CC:return 4;case DC:return 64;case EC:return 32;case FC:return 16;case GC:return 8;case yD:return 16384;case zD:return 65536;case AD:case BD:return 131072;case CD:return 262144;case DD:return 524288;case MC:return 1048576;case LC:return 2097152;case IC:return 4194304;case HC:return 8388608;case ED:return 16777216;case FD:return 33554432;case GD:return 67108864;default:return -1;}} +function Vr(a){var b,c,d;gr.call(this);this.r=new Ks;this.z=new Xs(this);sc(this.H,Gc($doc,VB));qr(this,0,0);Ec(Dc(this.H))[oE]=SE;Dc(this.H)[oE]=TE;this.k=false;this.n=false;this.w=true;d=_h(Km,bB,1,[UE,VE,WE]);this.j=new Ir(d);$p(this.j,GB);dq(Ec(Dc(this.H)),XE);rr(this,this.j);cq(Dc(this.H),TE,false);cq(this.j.a,YE,true);nq(a);this.a=a;c=Hr(this.j);sc(c,(_s(),at(this.a.H)));xq(this,this.a);Ec(Dc(this.H))[oE]=ZE;this.i=Wc($doc);this.b=Tc($doc);this.c=Uc($doc);b=new ps(this);hq(this,b,(yf(),yf(),xf));hq(this,b,(Yf(),Yf(),Xf));hq(this,b,(Ff(),Ff(),Ef));hq(this,b,(Sf(),Sf(),Rf));hq(this,b,(Mf(),Mf(),Lf))} +function hv(a){var b,c,d,e,f,g,h,i,j,k,l,m;d=new ey;h=new ey;j=false;mc(h.a,AH);mc(h.a,BH);mc(d.a,CH);mc(h.a,DH);mc(d.a,DH);for(k=0;k<a.b.length;k=k+10){k==0?(m=GB):k<100?(m=EH+k):(m=FH+k);mc(h.a,m);mc(d.a,m)}mc(h.a,GH);mc(d.a,GH);mc(h.a,DH);mc(d.a,DH);for(k=0;k<a.b.length;k=k+10){if(k>0){mc(h.a,HH);mc(d.a,HH)}}mc(h.a,GH);mc(d.a,GH);i=new ey;f=new ey;g=new ey;e=new ey;b=new ey;c=new ey;for(k=0;k<a.b.length;++k){l=ii(fA(a.a,k),48);k==a.p&&(j=true);k==a.p+a.n.length&&(j=false);k==a.t&&(j=true);k==a.t+a.s.length&&(j=false);ay(i,ov(a,k,Sx(l.b),l.g,j).b);ay(f,ov(a,k,IH,l.g,j).b);ay(g,ov(a,k,gw(l),l.g,j).b);ay(e,ov(a,k,Sx(l.b),l.g,j).a);ay(b,ov(a,k,IH,l.g,j).a);ay(c,ov(a,k,gw(l),l.g,j).a)}mc(h.a,JH);ay(h,rc(i.a)+KH+rc(f.a)+LH+rc(g.a));mc(h.a,MH);mc(d.a,zH);ay(d,rc(e.a)+NH+rc(b.a)+OH+rc(c.a));mc(d.a,PH);return new ew(rc(h.a),rc(d.a))} +function op(a,b){var c=(a.__eventBits||0)^b;a.__eventBits=b;if(!c)return;c&1&&(a.onclick=b&1?jp:null);c&3&&(a.ondblclick=b&3?ip:null);c&4&&(a.onmousedown=b&4?jp:null);c&8&&(a.onmouseup=b&8?jp:null);c&16&&(a.onmouseover=b&16?jp:null);c&32&&(a.onmouseout=b&32?jp:null);c&64&&(a.onmousemove=b&64?jp:null);c&128&&(a.onkeydown=b&128?jp:null);c&256&&(a.onkeypress=b&256?jp:null);c&512&&(a.onkeyup=b&512?jp:null);c&1024&&(a.onchange=b&1024?jp:null);c&2048&&(a.onfocus=b&2048?jp:null);c&4096&&(a.onblur=b&4096?jp:null);c&8192&&(a.onlosecapture=b&8192?jp:null);c&16384&&(a.onscroll=b&16384?jp:null);c&32768&&(a.nodeName==cE?b&32768?a.attachEvent(dE,kp):a.detachEvent(dE,kp):(a.onload=b&32768?lp:null));c&65536&&(a.onerror=b&65536?jp:null);c&131072&&(a.onmousewheel=b&131072?jp:null);c&262144&&(a.oncontextmenu=b&262144?jp:null);c&524288&&(a.onpaste=b&524288?jp:null)} +function kv(a){var b,c,d,e,f,g,h,i,j;b=new ey;c=new ey;f=false;h=false;e=new bv;mc(c.a,gI);mc(b.a,gI);if(!(Hx(a.d,nF)||Hx(a.c,nF))){mc(c.a,hI);mc(b.a,hI)}mc(c.a,iI);mc(b.a,jI);if(Hx(a.d,nF)||Hx(a.c,nF)){for(g=0;g<a.g;++g){mc(c.a,TB);mc(b.a,TB)}}if(Hx(a.e,GB)){mc(c.a,ZH);mc(b.a,$H)}else{mc(c.a,zH);mc(b.a,zH);for(g=0;g<a.a.b;++g){d=ii(fA(a.a,g),48);g!=0?(j=ii(fA(a.a,g-1),48)):(j=ii(fA(a.a,0),48));g!=a.a.b-1?(i=ii(fA(a.a,g+1),48)):(i=ii(fA(a.a,g),48));if(d.d){if(!j.d&&d.d){ay(c,kI+av(e)+lI);f&&(mc(c.a,dI),c)}if(!d.c&&d.d&&!h){mc(c.a,bI);h=true}if((d.a==0||d.a==-2)&&d.f==0&&d.c){mc(c.a,dI);f=true}if(d.a==1&&d.f==0){mc(c.a,cI);f=false}if(d.a==-1&&j.a==-2){mc(c.a,cI);f=false}if(d.g&&d.c){mc(c.a,eI);ay(c,hw(d));mc(c.a,bI);f?ay(b,hw(d)):ay(b,hw(d).toLowerCase())}else{ay(c,hw(d));f?ay(b,hw(d).toLowerCase()):ay(b,hw(d))}d.d&&!i.d&&(mc(c.a,bI),c)}}mc(c.a,mI);mc(b.a,mI)}return new ew(rc(c.a),rc(b.a))} +function mp(){$wnd.__gwt_globalEventArray==null&&($wnd.__gwt_globalEventArray=new Array);$wnd.__gwt_globalEventArray[$wnd.__gwt_globalEventArray.length]=yB(function(){return oo($wnd.event)});var d=yB(function(){var a=Fc;Fc=this;if($wnd.event.returnValue==null){$wnd.event.returnValue=true;if(!pp()){Fc=a;return}}var b,c=this;while(c&&!(b=c.__listener)){c=c.parentElement}b&&!li(b)&&ki(b,37)&&no($wnd.event,c,b);Fc=a});var e=yB(function(){var a=$doc.createEventObject();$wnd.event.returnValue==null&&$wnd.event.srcElement.fireEvent&&$wnd.event.srcElement.fireEvent(HD,a);if(this.__eventBits&2){d.call(this)}else if($wnd.event.returnValue==null){$wnd.event.returnValue=true;pp()}});var f=yB(function(){this.__gwtLastUnhandledEvent=$wnd.event.type;d.call(this)});var g=$moduleName.replace(/\./g,ID);$wnd[JD+g]=d;jp=(new Function(KD,LD+g+MD))($wnd);$wnd[ND+g]=e;ip=(new Function(KD,OD+g+PD))($wnd);$wnd[QD+g]=f;lp=(new Function(KD,RD+g+PD))($wnd);kp=(new Function(KD,RD+g+SD))($wnd);var h=yB(function(){d.call($doc.body)});var i=yB(function(){e.call($doc.body)});$doc.body.attachEvent(HD,h);$doc.body.attachEvent(TD,h);$doc.body.attachEvent(UD,h);$doc.body.attachEvent(VD,h);$doc.body.attachEvent(WD,h);$doc.body.attachEvent(XD,h);$doc.body.attachEvent(YD,h);$doc.body.attachEvent(ZD,h);$doc.body.attachEvent($D,h);$doc.body.attachEvent(_D,h);$doc.body.attachEvent(aE,i);$doc.body.attachEvent(bE,h)} +function $u(a){if(Hx(a,TF))return UF;if(Hx(a,VF))return UF;if(Hx(a,WF))return XF;if(Hx(a,YF))return XF;if(Hx(a,ZF))return XF;if(Hx(a,$F))return XF;if(Hx(a,_F))return XF;if(Hx(a,aG))return XF;if(Hx(a,bG))return cG;if(Hx(a,dG))return cG;if(Hx(a,eG))return cG;if(Hx(a,fG))return gG;if(Hx(a,hG))return iG;if(Hx(a,jG))return iG;if(Hx(a,kG))return iG;if(Hx(a,lG))return iG;if(Hx(a,mG))return nG;if(Hx(a,oG))return nG;if(Hx(a,pG))return nG;if(Hx(a,qG))return nG;if(Hx(a,rG))return sG;if(Hx(a,tG))return sG;if(Hx(a,uG))return sG;if(Hx(a,vG))return sG;if(Hx(a,wG))return xG;if(Hx(a,yG))return xG;if(Hx(a,zG))return xG;if(Hx(a,AG))return xG;if(Hx(a,BG))return CG;if(Hx(a,DG))return CG;if(Hx(a,EG))return CG;if(Hx(a,FG))return CG;if(Hx(a,GG))return HG;if(Hx(a,IG))return HG;if(Hx(a,JG))return GB;if(Hx(a,KG))return GB;if(Hx(a,LG))return MG;if(Hx(a,NG))return MG;if(Hx(a,OG))return PG;if(Hx(a,QG))return PG;if(Hx(a,RG))return SG;if(Hx(a,TG))return SG;if(Hx(a,UG))return VG;if(Hx(a,WG))return VG;if(Hx(a,XG))return YG;if(Hx(a,ZG))return YG;if(Hx(a,$G))return _G;if(Hx(a,aH))return _G;if(Hx(a,bH))return cH;if(Hx(a,dH))return cH;if(Hx(a,eH))return GB;if(Hx(a,fH))return gH;if(Hx(a,hH))return iH;if(Hx(a,jH))return iH;if(Hx(a,kH))return iH;if(Hx(a,lH))return iH;if(Hx(a,mH))return nG;if(Hx(a,nH))return nG;if(Hx(a,oH))return iH;if(Hx(a,pH))return iH;if(Hx(a,qH))return rH;if(Hx(a,sH))return rH;if(Hx(a,tH))return rH;if(Hx(a,uH))return rH;return GB} +--></script> +<script><!-- +var GB='',oJ='\tCurrent DNA=',pJ='\tNum Exons=',rJ='\tProtein=',qJ='\tRNA=',nJ='\tSelected base=',kJ='\tStarting DNA=',lJ='\tStarting mRNA=',mJ='\tStarting protein=',GH='\n',sJ='\n\n',SB='\n ',OH="\n3'-",TB=' ',DH=' ',FH=' ',EH=' ',HH=' . |',_H=' N-',RC=' exceptions caught: ',kD='"/>',fE='#',EJ='$',eE='%23',mD="').<br>Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings.",JB='(',CJ='(Unknown Source',sE='(null handle)',HJ='(this Collection)',hD=')',KB=') ',_C='). Expect more errors.\n',RI='+',gD=',',GJ=', ',OJ=', Size: ',rE='-',mI="-3'\n",NH="-3'\n ",PH="-5'\n",fI='-C',aI='-C\n',BJ='.',MD='.call(this) }',PD='.call(this)}',SD='.call(w.event.srcElement)}',XB='/>',lF='0',GE='0px',AF='1',nE='325px',zH="5'-",JH="5'-<span id='dna-strand'>",lE='818px',OB=':',FB=': ',SC='; ',WB='<',bI='<\/EM>',LH="<\/EM>\n3'-",pI="<\/EM>-3'\n",MH="<\/EM>-5'\n",KH="<\/EM><\/span>-3'\n ",iE='<\/div><\/body><\/html>',GI='<\/font><\/pre><br><br><br><font size=+1><\/font><\/body><\/html>',YI='<\/pre><\/body><\/html>',gI='<\/pre><h3>',nI='<\/pre><h3>pre-mRNA: <EM class=exon>Ex<\/EM><EM class=next>o<\/EM><EM class=another>n<\/EM> Intron<\/h3><pre>',oI='<\/pre><h3>pre-mRNA: EXON intron<\/h3><pre>',YH='<\/style><\/head><body>',cI='<\/u>',AE="<BUTTON type='button'><\/BUTTON>",kI='<EM class=',qI='<EM class=promoter>',eI='<EM class=selected>',rI='<EM class=terminator>',BH='<EM class=terminator>Terminator<\/EM><\/h3><pre>\n',yH='<[^<]*>',FI='<font color=blue>',ZH='<font color=red>none<\/font>\n',CH='<h3>DNA: promoter, terminator<\/h3><pre>\n',hE='<html><body onload="if(parent.__gwt_onHistoryLoad)parent.__gwt_onHistoryLoad(__gwt_historyToken.innerText)"><div id="__gwt_historyToken">',AH='<html><h3>DNA: <EM class=promoter>Promoter<\/EM>',QH='<html><head>',RH='<style type="text/css">',dI='<u>',SI='=',lI='>',zB='@',JI='A',UG='AAA',XI='AAAAAAAAAAAAA',TG='AAC',WG='AAG',RG='AAU',kC='ABSOLUTE',zG='ACA',yG='ACC',AG='ACG',wG='ACU',oH='AGA',nH='AGC',pH='AGG',mH='AGU',eG='AUA',dG='AUC',fG='AUG',hC='AUTO',bG='AUU',KK='AbsolutePanel',OL='AbstractCollection',ML='AbstractHashMap',QL='AbstractHashMap$EntrySet',RL='AbstractHashMap$EntrySetIterator',TL='AbstractHashMap$MapEntryNull',UL='AbstractHashMap$MapEntryString',aO='AbstractList',cO='AbstractList$IteratorImpl',dO='AbstractList$ListIteratorImpl',LL='AbstractMap',VL='AbstractMap$1',WL='AbstractMap$1$1',SL='AbstractMapEntry',zN='AbstractRenderer',PL='AbstractSet',JJ='Add not supported on this collection',PJ='Add not supported on this list',CG='Ala',zC='An event type',aL='Animation',iL='Animation$1',jL='AnimationScheduler',kL='AnimationScheduler$AnimationHandle',CO='AnimationSchedulerImpl',DO='AnimationSchedulerImplTimer',HO='AnimationSchedulerImplTimer$1',EO='AnimationSchedulerImplTimer$AnimationHandleImpl',GO='AnimationSchedulerImplTimer$AnimationHandleImpl;',iH='Arg',bO='ArrayList',rK='ArrayStoreException',SG='Asn',YG='Asp',OK='AttachDetachException',PK='AttachDetachException$1',QK='AttachDetachException$2',sN='AttachEvent',FL='AutoDirectionHandler',bC='BLOCK',iD='BackCompat',lK='Boolean',HL='Button',GL='ButtonBase',LI='C',OG='CAA',WI='CAAAG',hJ='CAAGGCTATAACCGAGATTGATGCCTTGTGCGATAAGGTGTGTCCCCCCCCAAAGTGTCGGATGTCGAGTGCGCGTGCAAAAAAAAACAAAGGCGAGGACCTTAAGAAGGTGTGAGGGGGCGCTCGAT',NG='CAC',QG='CAG',LG='CAU',uG='CCA',tG='CCC',vG='CCG',rG='CCU',mC='CENTER',kH='CGA',jH='CGC',lH='CGG',hH='CGU',xC='CM',uI='CORRECT',$B='CSS1Compat',_F='CUA',$F='CUC',aG='CUG',ZF='CUU',AI='Cancel',NC='Cannot add a handler with a null type',OC='Cannot add a null handler',PC='Cannot fire null event',wE='Cannot set a new parent without first clearing the old parent',dF='Caption',rL='CellPanel',NE='Center',nK='Class',pK='ClassCastException',aM='ClickEvent',rN='CloseEvent',AO='Collections$EmptyList',BO='ColorSequencer',JK='ComplexPanel',cH='Cys',XC='DEFAULT',AD='DOMMouseScroll',WK='DecoratedPopupPanel',cM='DecoratorPanel',$N='DefaultMomentum',XK='DialogBox',$K='DialogBox$1',YK='DialogBox$CaptionImpl',ZK='DialogBox$MouseHandler',VM='DirectionalTextHelper',ZL='DomEvent',bM='DomEvent$Type',iM='Duration',sC='EM',XH='EM.another {font-style: normal; background: #FFFF50; color: black}',VH='EM.exon {font-style: normal; background: #FF90FF; color: black}',WH='EM.next {font-style: normal; background: #FF8C00; color: black}',TH='EM.promoter {font-style: normal; background: #90FF90; color: black}',SH='EM.selected {font-style: normal; background: blue; color: red}',UH='EM.terminator {font-style: normal; background: #FF9090; color: black}',$C='ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (ie6) does not match the runtime user.agent value (',tC='EX',DI='Enter New DNA Sequence',cF='Enter new DNA Sequence',cK='Enum',mL='Event',BC='Event type',oL='Event$NativePreviewEvent',pL='Event$Type',_M='EventBus',YJ='Exception',QC='Exception caught: ',xO='Exon',lC='FIXED',uL='FocusWidget',KI='G',$G='GAA',ZG='GAC',aH='GAG',XG='GAU',EG='GCA',DG='GCC',FG='GCG',BG='GCU',tH='GGA',sH='GGC',uH='GGG',UI='GGGGG',qH='GGU',kG='GUA',jG='GUC',lG='GUG',VI='GUGCG',hG='GUU',jD="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 <!doctype html> 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> <extend-configuration-property name=\"document.compatMode\" value=\"",fO='Gene',eK='GenexGWT',fK='GenexGWT$1',jK='GenexGWT$1DeferredCommand',gK='GenexGWT$2',hK='GenexGWT$3',iK='GenexGWT$4',JL='GenexParams',yO='GenexState',tJ='GenexState\n',PG='Gln',_G='Glu',rH='Gly',nL='GwtEvent',qL='GwtEvent$Type',fC='HIDDEN',yK='HTML',tO='HTMLContainer',ZM='HandlerManager',bN='HandlerManager$Bus',CK='HasDirection$Direction',EK='HasDirection$Direction;',zK='HasHorizontalAlignment$AutoHorizontalAlignmentConstant',AK='HasHorizontalAlignment$HorizontalAlignmentConstant',tL='HasVerticalAlignment$VerticalAlignmentConstant',NL='HashMap',XL='HashSet',MG='His',uO='HistoryImpl',vO='HistoryImplIE6',IL='HorizontalPanel',$L='HumanInputEvent',cE='IFRAME',wC='IN',sI='INCORRECT',cC='INLINE',dC='INLINE_BLOCK',BF='INPUT',cG='Ile',jN='IllegalArgumentException',XM='IllegalStateException',NJ='Index: ',TN='IndexOutOfBoundsException',RE='Inner',jO='IntronNumberRequirement',nC='JUSTIFY',sK='JavaScriptException',UJ='JavaScriptObject$',oC='LEFT',WC='LTR',xK='Label',wK='LabelBase',ME='Left',EN='LegacyHandlerWrapper',XF='Leu',oO='LongerProteinRequirement',VG='Lys',yC='MM',SN='MapEntryImpl',gG='Met',_N='Momentum$State',tN='MouseDownEvent',_L='MouseEvent',vN='MouseMoveEvent',xN='MouseOutEvent',wN='MouseOverEvent',uN='MouseUpEvent',MJ='Must call next() before remove().',aC='NONE',yI='New DNA Sequence',rO='NoProteinRequirement',RN='NoSuchElementException',qO='NomRNARequirement',wO='Nucleotide',pE='Null widget handle. If you are creating a composite, ensure that initWidget() has been called.',iN='NullPointerException',tI='OK',SJ='Object',WJ='Object;',vC='PC',rC='PCT',uC='PT',qC='PX',FK='Panel',CN='PassthroughParser',BN='PassthroughRenderer',UF='Phe',IO='Point',fD='Point(',VK='PopupPanel',fL='PopupPanel$1',gL='PopupPanel$3',hL='PopupPanel$4',bL='PopupPanel$ResizeAnimation',eL='PopupPanel$ResizeAnimation$1',DN='PrivateMap',sG='Pro',lO='Problem',iO='ProteinLengthRequirement',jC='RELATIVE',pC='RIGHT',VC='RTL',QJ='Remove not supported on this list',hO='Requirement',CI='Reset DNA Sequence',sO='ResizeEvent',OE='Right',RK='RootPanel',TK='RootPanel$1',UK='RootPanel$2',SK='RootPanel$DefaultRootPanel',ZJ='RuntimeException',gC='SCROLL',iC='STATIC',kK='Scheduler',eM='SchedulerImpl',fM='SchedulerImpl$Flusher',gM='SchedulerImpl$Rescuer',kN='ScrollImpl',lN='ScrollImpl$ScrollImplTrident',HK='ScrollPanel',bK='SeedUtil',aF='Selected Base = ',nG='Ser',pO='ShorterProteinRequirement',nO='ShortermRNARequirement',tE="Should only call onAttach when the widget is detached from the browser's document",uE="Should only call onDetach when the widget is attached to the browser's document",aN='SimpleEventBus',cN='SimpleEventBus$1',dN='SimpleEventBus$2',eN='SimpleEventBus$3',GK='SimplePanel',IK='SimplePanel$1',mO='SingleMutationRequirement',hM='StackTraceCreator$Collector',$J='StackTraceElement',_J='StackTraceElement;',jJ='State:\n',IB='String',oK='String;',mN='StringBuffer',qK='StringBuilder',qE='Style names cannot be empty',nM='Style$Display',FM='Style$Display$1',GM='Style$Display$2',HM='Style$Display$3',IM='Style$Display$4',oM='Style$Display;',pM='Style$Overflow',JM='Style$Overflow$1',KM='Style$Overflow$2',LM='Style$Overflow$3',MM='Style$Overflow$4',qM='Style$Overflow;',rM='Style$Position',NM='Style$Position$1',OM='Style$Position$2',PM='Style$Position$3',QM='Style$Position$4',sM='Style$Position;',uM='Style$TextAlign',RM='Style$TextAlign$1',SM='Style$TextAlign$2',TM='Style$TextAlign$3',UM='Style$TextAlign$4',vM='Style$TextAlign;',kM='Style$Unit',wM='Style$Unit$1',xM='Style$Unit$2',yM='Style$Unit$3',zM='Style$Unit$4',AM='Style$Unit$5',BM='Style$Unit$6',CM='Style$Unit$7',DM='Style$Unit$8',EM='Style$Unit$9',mM='Style$Unit;',MI='T',TI='TATAA',xL='TextBox',wL='TextBoxBase',vE="This widget's parent does not implement HasWidgets",xG='Thr',XJ='Throwable',dL='Timer',lL='Timer$1',ZN='TouchCancelEvent',YN='TouchEndEvent',UN='TouchEvent',WN='TouchEvent$TouchSupportDetector',XN='TouchMoveEvent',GN='TouchScroller',LN='TouchScroller$1',MN='TouchScroller$2',NN='TouchScroller$3',ON='TouchScroller$4',PN='TouchScroller$5',QN='TouchScroller$6',IN='TouchScroller$MomentumCommand',KN='TouchScroller$MomentumCommand$1',JN='TouchScroller$MomentumTouchRemovalCommand',HN='TouchScroller$TemporalPoint',VN='TouchStartEvent',gH='Trp',HG='Tyr',iJ='U',JG='UAA',IG='UAC',KG='UAG',GG='UAU',pG='UCA',oG='UCC',qG='UCG',mG='UCU',eH='UGA',dH='UGC',fH='UGG',bH='UGU',uK='UIObject',WF='UUA',VF='UUC',YF='UUG',TF='UUU',MK='UmbrellaException',AJ='Unknown',WM='UnsupportedOperationException',eC='VISIBLE',iG='Val',vL='ValueBoxBase',yL='ValueBoxBase$TextAlignment',BL='ValueBoxBase$TextAlignment$1',CL='ValueBoxBase$TextAlignment$2',DL='ValueBoxBase$TextAlignment$3',EL='ValueBoxBase$TextAlignment$4',AL='ValueBoxBase$TextAlignment;',zO='ValueChangeEvent',sL='VerticalPanel',eO='VisibleGene',vK='Widget',gN='Widget;',fN='WidgetCollection',hN='WidgetCollection$WidgetIterator',YM='Window$ClosingEvent',$M='Window$WindowHandlers',oN='WindowImplIE$1',pN='WindowImplIE$2',ZI='You did not make a single base substitution.',lD="Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' ",$I='Your change does not make the mature mRNA shorter.',_I='Your change does not make the protein longer.',aJ='Your change does not make the protein shorter.',bJ='Your change does not prevent mRNA from being made.',cJ='Your change does not prevent protein from being made',eJ='Your gene does not contain one intron.',dJ='Your protein does not have 5 amino acids.',FJ='[',mK='[C',FO='[Lcom.google.gwt.animation.client.',lM='[Lcom.google.gwt.dom.client.',DK='[Lcom.google.gwt.i18n.client.',zL='[Lcom.google.gwt.user.client.ui.',VJ='[Ljava.lang.',gJ='[^AGCT]',DJ='\\',IJ=']',ID='_',ND='__gwt_dispatchDblClickEvent_',JD='__gwt_dispatchEvent_',QD='__gwt_dispatchUnhandledEvent_',gE='__gwt_historyFrame',jE='__gwt_historyToken',NI='a',rF='absolute',jF='align',HF='alpha(opacity=0)',NB='anonymous',xH='another',xF='auto',oF='block',pD='blur',hF='bottom',PI='c',KE='cellPadding',JE='cellSpacing',eF='center',qD='change',zJ='class ',oE='className',AC='click',pF='clip',_K='com.google.gwt.animation.client.',TJ='com.google.gwt.core.client.',dM='com.google.gwt.core.client.impl.',jM='com.google.gwt.dom.client.',YL='com.google.gwt.event.dom.client.',qN='com.google.gwt.event.logical.shared.',NK='com.google.gwt.event.shared.',BK='com.google.gwt.i18n.client.',aK='com.google.gwt.lang.',yN='com.google.gwt.text.shared.',AN='com.google.gwt.text.shared.testing.',FN='com.google.gwt.touch.client.',cL='com.google.gwt.user.client.',aD='com.google.gwt.user.client.DocumentModeAsserter',nN='com.google.gwt.user.client.impl.',tK='com.google.gwt.user.client.ui.',YC='com.google.gwt.useragent.client.UserAgentAsserter',LK='com.google.web.bindery.event.shared.',CD='contextmenu',rD='dblclick',WE='dialogBottom',YE='dialogContent',VE='dialogMiddle',UE='dialogTop',TC='dir',mF='display',VB='div',HI='dna-strand',zD='error',vH='exon',wJ='false',sD='focus',LB='function',MB='function ',nD='function __gwt_initWindowCloseHandler(beforeunload, unload) {\n var wnd = window\n , oldOnBeforeUnload = wnd.onbeforeunload\n , oldOnUnload = wnd.onunload;\n \n wnd.onbeforeunload = function(evt) {\n var ret, oldRet;\n try {\n ret = beforeunload();\n } finally {\n oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);\n }\n // Avoid returning null as IE6 will coerce it into a string.\n // Ensure that "" gets returned properly.\n if (ret != null) {\n return ret;\n }\n if (oldRet != null) {\n return oldRet;\n }\n // returns undefined.\n };\n \n wnd.onunload = function(evt) {\n try {\n unload();\n } finally {\n oldOnUnload && oldOnUnload(evt);\n wnd.onresize = null;\n wnd.onscroll = null;\n wnd.onbeforeunload = null;\n wnd.onunload = null;\n }\n };\n \n // Remove the reference once we\'ve initialize the handler\n wnd.__gwt_initWindowCloseHandler = undefined;\n}\n',oD="function __gwt_initWindowResizeHandler(resize) {\n var wnd = window, oldOnResize = wnd.onresize;\n \n wnd.onresize = function(evt) {\n try {\n resize();\n } finally {\n oldOnResize && oldOnResize(evt);\n }\n };\n \n // Remove the reference once we've initialize the handler\n wnd.__gwt_initWindowResizeHandler = undefined;\n}\n",OI='g',QF='gecko',RF='gecko1_8',BI='genex-button',xI='genex-dialogbox',zI='genex-dialogbox-message',EI='genex-label',vI='genex-scrollpanel',dK='genex.client.gx.',bD='genex.client.gx.GenexGWT',kO='genex.client.problems.',gO='genex.client.requirements.',wI='genex_container',FD='gesturechange',GD='gestureend',ED='gesturestart',BE='gwt-Button',XE='gwt-DecoratedPopupPanel',PE='gwt-DecoratorPanel',ZE='gwt-DialogBox',bF='gwt-HTML',_E='gwt-Label',SE='gwt-PopupPanel',DF='gwt-TextBox',mE='height',DB='hidden',ZB='html',ZC='ie6',PF='ie8',OF='ie9',EF='iframe',yJ='interface ',RJ='java.lang.',KL='java.util.',FF="javascript:''",fF='justify',tD='keydown',uD='keypress',vD='keyup',xE='left',wD='load',xD='losecapture',UC='ltr',iI='mRNA and Protein (<font color=blue>previous<\/font>):<\/h3><pre>',jI='mRNA and Protein (previous on line below):<\/h3><pre>',hI='mature-',QB='message',iF='middle',dD='moduleStartup',CC='mousedown',DC='mousemove',EC='mouseout',FC='mouseover',GC='mouseup',BD='mousewheel',NF='msie',EB='must be non-negative',PB='name',wH='next',GF='no',nF='none',$H='none\n',HB='null',xJ='number',AB='offsetHeight',BB='offsetWidth',YB='on',eD='onModuleLoadStart',_D='onblur',HD='onclick',bE='oncontextmenu',aE='ondblclick',$D='onfocus',XD='onkeydown',YD='onkeypress',ZD='onkeyup',dE='onload',TD='onmousedown',VD='onmousemove',UD='onmouseup',WD='onmousewheel',wF='onresize',vF='onscroll',JC='ontouchstart',KF='opera',CB='overflow',DD='paste',II='pointer',TE='popupContent',zE='position',FE='px',uF='px)',tF='px, ',sF='rect(',HE='rect(0px, 0px, 0px, 0px)',qF='rect(auto, auto, auto, auto)',yF='relative',OD='return function() { w.__gwt_dispatchDblClickEvent_',LD='return function() { w.__gwt_dispatchEvent_',RD='return function() { w.__gwt_dispatchUnhandledEvent_',KC='return;',gF='right',_B='rtl',MF='safari',UB='script',yD='scroll',$E='span',cD='startup',QI='t',CE='table',DE='tbody',QE='td',CF='text',JF='this.__popup.currentStyle.zIndex',RB='toString',yE='top',HC='touchcancel',IC='touchend',LC='touchmove',MC='touchstart',LE='tr',vJ='true',uJ='unassigned',SF='unknown',fJ='value',kF='verticalAlign',EE='visibility',IE='visible',KD='w',LF='webkit',kE='width',IF='zIndex',zF='zoom',KJ='{',IH='|',LJ='}';var _,Om={},lB={25:1,27:1},vB={60:1},gB={6:1,9:1,50:1,53:1,54:1},bB={50:1},$A={},qB={46:1},tB={52:1},xB={50:1,57:1},nB={24:1,29:1,37:1,40:1,41:1,43:1,45:1},uB={58:1},rB={11:1,27:1},iB={29:1},jB={47:1,50:1,56:1},cB={50:1,56:1},fB={6:1,8:1,50:1,53:1,54:1},wB={59:1},eB={6:1,7:1,50:1,53:1,54:1},dB={5:1,6:1,50:1,53:1,54:1},mB={23:1,27:1},pB={44:1,50:1,53:1,54:1},_A={4:1,50:1},kB={27:1,36:1},aB={38:1},oB={24:1,29:1,37:1,40:1,41:1,42:1,43:1,45:1},sB={49:1},hB={10:1,50:1,53:1,54:1};Pm(1,-1,$A);_.eQ=function s(a){return this===a};_.gC=function t(){return this.cZ};_.hC=function u(){return Ib(this)};_.tS=function v(){return this.cZ.c+zB+tx(this.hC())};_.toString=function(){return this.tS()};_.tM=ZA;Pm(3,1,{});_.k=-1;_.n=false;_.o=false;_.p=null;_.q=-1;_.r=null;_.s=-1;_.t=false;Pm(4,1,{},C);_.a=null;Pm(5,1,{});Pm(6,1,{2:1});Pm(7,5,{});var G=null;Pm(8,7,{},M);Pm(10,1,aB);_.I=function W(){this.b||iA(P,this);this.J()};_.b=false;_.c=0;var P;Pm(9,10,aB,X);_.J=function Y(){L(this.a)};_.a=null;Pm(11,6,{2:1,3:1},ab);_.a=null;_.b=null;Pm(12,1,{},db);Pm(17,1,cB);_.K=function kb(){return this.e};_.tS=function lb(){var a,b;a=this.cZ.c;b=this.K();return b!=null?a+FB+b:a};_.e=null;Pm(16,17,cB);Pm(15,16,cB,mb);Pm(14,15,cB,ob);_.K=function ub(){this.c==null&&(this.d=rb(this.b),this.a=this.a+FB+pb(this.b),this.c=JB+this.d+KB+tb(this.b)+this.a,undefined);return this.c};_.a=GB;_.b=null;_.c=null;_.d=null;Pm(21,1,{});var zb=0,Ab=0,Bb=0,Cb=-1;Pm(23,21,{},Ub);_.a=null;_.b=null;_.c=null;_.d=false;_.e=null;_.f=null;_.g=null;_.i=false;var Mb;Pm(24,1,{},_b);_.L=function ac(){this.a.d=true;Qb(this.a);this.a.d=false;return this.a.i=Rb(this.a)};_.a=null;Pm(25,1,{},cc);_.L=function dc(){this.a.d&&Zb(this.a.e,1);return this.a.i};_.a=null;Pm(28,1,{},kc);_.N=function lc(a){return ec(a)};var Fc=null;Pm(45,1,{50:1,53:1,54:1});_.eQ=function dd(a){return this===a};_.hC=function ed(){return Ib(this)};_.tS=function fd(){return this.a};_.a=null;_.b=0;Pm(44,45,dB);var gd,hd,id,jd,kd;Pm(46,44,dB,od);Pm(47,44,dB,qd);Pm(48,44,dB,sd);Pm(49,44,dB,ud);Pm(50,45,eB);var wd,xd,yd,zd,Ad;Pm(51,50,eB,Ed);Pm(52,50,eB,Gd);Pm(53,50,eB,Id);Pm(54,50,eB,Kd);Pm(55,45,fB);var Md,Nd,Od,Pd,Qd;Pm(56,55,fB,Ud);Pm(57,55,fB,Wd);Pm(58,55,fB,Yd);Pm(59,55,fB,$d);Pm(60,45,gB);var ae,be,ce,de,ee;Pm(61,60,gB,ie);Pm(62,60,gB,ke);Pm(63,60,gB,me);Pm(64,60,gB,oe);Pm(65,45,hB);var qe,re,se,te,ue,ve,we,xe,ye,ze;Pm(66,65,hB,De);Pm(67,65,hB,Fe);Pm(68,65,hB,He);Pm(69,65,hB,Je);Pm(70,65,hB,Le);Pm(71,65,hB,Ne);Pm(72,65,hB,Pe);Pm(73,65,hB,Re);Pm(74,65,hB,Te);Pm(80,1,{});_.tS=function $e(){return zC};_.f=null;Pm(79,80,{});_.Q=function af(){this.e=false;this.f=null};_.e=false;Pm(78,79,{});_.P=function ff(){return this.R()};_.a=null;_.b=null;var bf=null;Pm(77,78,{});Pm(76,77,{});Pm(75,76,{},lf);_.O=function mf(a){ii(a,11).S(this)};_.R=function nf(){return jf};var jf;Pm(83,1,{});_.hC=function sf(){return this.c};_.tS=function tf(){return BC};_.c=0;var rf=0;Pm(82,83,{},uf);Pm(81,82,{12:1},vf);_.a=null;_.b=null;Pm(84,76,{},Af);_.O=function Bf(a){zf(this,ii(a,13))};_.R=function Cf(){return xf};var xf;Pm(85,76,{},Hf);_.O=function If(a){Gf(this,ii(a,14))};_.R=function Jf(){return Ef};var Ef;Pm(86,76,{},Nf);_.O=function Of(a){ii(ii(a,15),39)};_.R=function Pf(){return Lf};var Lf;Pm(87,76,{},Tf);_.O=function Uf(a){ii(ii(a,16),39)};_.R=function Vf(){return Rf};var Rf;Pm(88,76,{},$f);_.O=function _f(a){Zf(this,ii(a,17))};_.R=function ag(){return Xf};var Xf;Pm(89,1,{},eg);_.a=null;Pm(92,77,{});var hg=null;Pm(91,92,{},kg);_.O=function lg(a){An(ii(ii(a,18),34).a)};_.R=function mg(){return ig};var ig;Pm(93,92,{},qg);_.O=function rg(a){An(ii(ii(a,19),33).a)};_.R=function sg(){return og};var og;Pm(94,1,{},ug);Pm(95,92,{},zg);_.O=function Ag(a){yg(this,ii(a,20))};_.R=function Bg(){return wg};var wg;Pm(96,92,{},Gg);_.O=function Hg(a){Fg(this,ii(a,21))};_.R=function Ig(){return Dg};var Dg;Pm(97,79,{},Mg);_.O=function Ng(a){Lg(this,ii(a,22))};_.P=function Pg(){return Kg};_.a=false;var Kg=null;Pm(98,79,{},Sg);_.O=function Tg(a){ii(a,23).T(this)};_.P=function Vg(){return Rg};var Rg=null;Pm(99,79,{},Yg);_.O=function Zg(a){ii(a,25).U(this)};_.P=function _g(){return Xg};_.a=0;var Xg=null;Pm(100,79,{},dh);_.O=function eh(a){ch(ii(a,26))};_.P=function gh(){return bh};var bh=null;Pm(101,1,iB,lh,mh);_.V=function nh(a){jh(this,a)};_.a=null;_.b=null;Pm(104,1,{});Pm(103,104,{});_.a=null;_.b=0;_.c=false;Pm(102,103,{},Ch);Pm(105,1,{28:1},Eh);_.a=null;Pm(107,15,jB,Hh);_.a=null;Pm(106,107,jB,Kh);Pm(108,1,{27:1},Mh);Pm(110,45,{30:1,50:1,53:1,54:1},Vh);var Qh,Rh,Sh,Th;Pm(111,1,{},Xh);_.qI=0;var bi,ci;Pm(120,1,{});Pm(121,1,{},Vm);var Um=null;Pm(122,120,{},Ym);var Xm=null;Pm(123,1,{},an);Pm(124,1,{},fn);_.a=0;_.b=0;_.c=null;_.d=null;_.e=null;Pm(125,1,{32:1},ln,mn);_.eQ=function nn(a){var b;if(!ki(a,32)){return false}b=ii(a,32);return this.a==b.a&&this.b==b.b};_.hC=function on(){return oi(this.a)^oi(this.b)};_.tS=function pn(){return fD+this.a+gD+this.b+hD};_.a=0;_.b=0;Pm(126,1,{},Jn);_.a=null;_.b=null;_.c=false;_.f=null;_.g=null;_.n=null;_.o=null;_.p=null;_.r=false;_.s=null;var rn=null;Pm(127,1,{22:1,27:1},Ln);_.a=null;Pm(128,1,{21:1,27:1},Nn);_.a=null;Pm(129,1,{20:1,27:1},Pn);_.a=null;Pm(130,1,{19:1,27:1,33:1},Rn);_.a=null;Pm(131,1,{18:1,27:1,34:1},Tn);_.a=null;Pm(132,1,kB,Vn);_.W=function Wn(a){var b;if(1==fp(a.d.type)){b=new ln(a.d.clientX||0,a.d.clientY||0);if(xn(this.a,b)||yn(this.a,b)){a.a=true;a.d.cancelBubble=true;Ic(a.d)}}};_.a=null;Pm(133,1,{},Zn);_.L=function $n(){var a,b,c,d,e,f,g;if(this!=this.e.g){Yn(this);return false}a=cb(this.a);dn(this.d,a-this.c);this.c=a;cn(this.d,a);e=_m(this.d);e||Yn(this);Hn(this.e,this.d.d);d=oi(this.d.d.a);c=Ht(this.e.s);b=Ft(this.e.s);f=Gt(this.e.s);g=oi(this.d.d.b);if((f<=g||0>=g)&&(b<=d||c>=d)){Yn(this);return false}return e};_.c=0;_.d=null;_.e=null;_.f=null;Pm(134,1,lB,ao);_.U=function bo(a){Yn(this.a)};_.a=null;Pm(135,1,{},eo);_.L=function fo(){var a,b,c;a=eb();b=new Lz(this.a.q);while(b.b<b.d.Db()){c=ii(Jz(b),35);a-c.b>=2500&&Kz(b)}return this.a.q.b!=0};_.a=null;Pm(136,1,{35:1},io,jo);_.a=null;_.b=0;var ko=null,lo=null;var to=null;Pm(141,79,{},Ao);_.O=function Bo(a){ii(a,36).W(this);xo.c=false};_.P=function Do(){return wo};_.Q=function Eo(){yo(this)};_.a=false;_.b=false;_.c=false;_.d=null;var wo=null,xo=null;var Fo=null;Pm(143,1,mB,Jo);_.T=function Ko(a){while((Q(),P).b>0){R(ii(fA(P,0),38))}};var Lo=false,Mo=null,No=0,Oo=0,Po=false;Pm(145,79,{},_o);_.O=function ap(a){pi(a);null.Nb()};_.P=function bp(){return Zo};var Zo;Pm(147,101,iB,dp);var ep=false;var ip=null,jp=null,kp=null,lp=null;Pm(150,1,iB);_.Y=function tp(a){return decodeURI(a.replace(eE,fE))};_.Z=function up(a){return encodeURI(a).replace(fE,eE)};_.V=function vp(a){jh(this.c,a)};_.$=function wp(a){};_._=function xp(a){a=a==null?GB:a;if(!Hx(a,rp==null?GB:rp)){rp=a;this.$(a);fh(this)}};var rp=GB;Pm(151,150,iB,Gp);_.ab=function Jp(){if(this.b){this.b=false;Fp(this,rp==null?GB:rp);return true}return false};_.$=function Kp(a){Fp(this,a)};_.bb=function Lp(){this.b=true;$wnd.location.reload()};_.a=null;_.b=false;Pm(154,1,{},Op);_.M=function Pp(){$wnd.__gwt_initWindowCloseHandler(yB(Wo),yB(Vo))};Pm(155,1,{},Rp);_.M=function Sp(){$wnd.__gwt_initWindowResizeHandler(yB(Xo))};Pm(160,1,{40:1,43:1});_.cb=function aq(){return this.H};_.db=function bq(a){ro(this.H,mE,a)};_.eb=function eq(a){ro(this.H,kE,a)};_.tS=function fq(){if(!this.H){return sE}return this.H.outerHTML};_.H=null;Pm(159,160,nB);_.fb=function pq(){};_.gb=function qq(){};_.V=function rq(a){jq(this,a)};_.hb=function sq(){kq(this)};_.X=function tq(a){lq(this,a)};_.ib=function uq(){mq(this)};_.jb=function vq(){};_.kb=function wq(){};_.D=false;_.E=0;_.F=null;_.G=null;Pm(158,159,nB);_.fb=function yq(){Oq(this,(Mq(),Kq))};_.gb=function zq(){Oq(this,(Mq(),Lq))};Pm(157,158,nB);_.mb=function Dq(){return new Iu(this.f)};_.lb=function Eq(a){return Bq(this,a)};Pm(156,157,nB);_.lb=function Iq(a){return Gq(this,a)};Pm(161,106,jB,Nq);var Kq,Lq;Pm(162,1,{},Qq);_.nb=function Rq(a){a.hb()};Pm(163,1,{},Tq);_.nb=function Uq(a){a.ib()};Pm(166,159,nB);_.hb=function Yq(){var a;kq(this);a=this.H.tabIndex;-1==a&&(this.H.tabIndex=0,undefined)};Pm(165,166,nB);Pm(164,165,nB,$q);Pm(167,157,nB);_.d=null;_.e=null;Pm(170,158,nB);_.ob=function ir(){return this.H};_.mb=function jr(){return new Tt(this)};_.lb=function kr(a){return er(this,a)};_.C=null;Pm(169,170,nB);_.ob=function ur(){return Dc(this.H)};_.cb=function vr(){return Ec(Dc(this.H))};_.pb=function wr(){nr(this)};_.W=function xr(a){a.c&&(a.d,false)&&(a.a=true)};_.kb=function yr(){this.A&&Ws(this.z,false,true)};_.db=function zr(a){this.o=a;or(this);a.length==0&&(this.o=null)};_.eb=function Ar(a){this.p=a;or(this);a.length==0&&(this.p=null)};_.k=false;_.n=false;_.o=null;_.p=null;_.q=null;_.s=null;_.t=false;_.u=false;_.v=-1;_.w=false;_.x=null;_.y=false;_.A=false;_.B=-1;Pm(168,169,nB);_.fb=function Cr(){kq(this.j)};_.gb=function Dr(){mq(this.j)};_.mb=function Er(){return new Tt(this.j)};_.lb=function Fr(a){return er(this.j,a)};_.j=null;Pm(171,170,nB,Ir);_.ob=function Kr(){return this.a};_.a=null;_.b=null;Pm(172,168,nB,Ur);_.fb=function Wr(){try{kq(this.j)}finally{kq(this.a)}};_.gb=function Xr(){try{mq(this.j)}finally{mq(this.a)}};_.pb=function Yr(){Pr(this)};_.X=function Zr(a){switch(fp(a.type)){case 4:case 8:case 64:case 16:case 32:if(!this.f&&!Qr(this,a)){return}}lq(this,a)};_.W=function $r(a){var b;b=a.d;!a.a&&fp(a.d.type)==4&&Qr(this,b)&&Ic(b);a.c&&(a.d,false)&&(a.a=true)};_.a=null;_.b=0;_.c=0;_.d=0;_.e=0;_.f=false;_.g=null;_.i=0;Pm(173,1,lB,as);_.U=function bs(a){this.a.i=a.a};_.a=null;Pm(177,159,nB);_.a=null;Pm(176,177,nB,js);Pm(175,176,nB,ls,ms);Pm(174,175,nB,ns);Pm(178,1,{13:1,14:1,15:1,16:1,17:1,27:1,39:1},ps);_.a=null;Pm(179,1,{},ss);_.a=null;_.b=null;_.c=null;var ts,us,vs;Pm(180,1,{});Pm(181,180,{},zs);_.a=null;var As;Pm(182,1,{},Ds);_.a=null;Pm(183,167,nB,Gs);_.lb=function Hs(a){var b,c;c=Ec(a.H);b=Bq(this,a);b&&tc(this.b,c);return b};_.b=null;Pm(184,1,lB,Ks);_.U=function Ls(a){Js()};Pm(185,1,kB,Ns);_.W=function Os(a){pr(this.a,a)};_.a=null;Pm(186,1,{26:1,27:1},Qs);_.a=null;Pm(187,3,{},Xs);_.a=null;_.b=false;_.c=false;_.d=0;_.e=-1;_.f=null;_.g=null;_.i=false;Pm(188,10,aB,Zs);_.J=function $s(){this.a.g=null;x(this.a,eb())};_.a=null;Pm(190,156,oB,ht);var dt,et,ft;Pm(191,1,{},mt);_.nb=function nt(a){a.D&&a.ib()};Pm(192,1,mB,pt);_.T=function qt(a){jt()};Pm(193,190,oB,st);Pm(194,1,{});var ut=null;Pm(195,194,{},Bt);var yt=null,zt=null;Pm(196,170,nB,Lt);_.ob=function Mt(){return this.a};_.hb=function Nt(){kq(this);this.b.__listener=this};_.ib=function Ot(){this.b.__listener=null;mq(this)};_.db=function Pt(a){ro(this.H,mE,a)};_.eb=function Qt(a){ro(this.H,kE,a)};_.a=null;_.b=null;_.c=null;Pm(197,1,{},Tt);_.qb=function Ut(){return this.a};_.rb=function Vt(){return St(this)};_.sb=function Wt(){!!this.b&&this.c.lb(this.b)};_.b=null;_.c=null;Pm(200,166,nB);_.X=function _t(a){var b;b=fp(a.type);(b&896)!=0?lq(this,a):lq(this,a)};_.jb=function au(){};Pm(199,200,nB);Pm(198,199,nB,cu);Pm(201,45,pB);var fu,gu,hu,iu,ju;Pm(202,201,pB,nu);Pm(203,201,pB,pu);Pm(204,201,pB,ru);Pm(205,201,pB,tu);Pm(206,167,nB,wu);_.lb=function xu(a){var b,c;c=Ec(a.H);b=Bq(this,a);b&&tc(this.d,Ec(c));return b};Pm(207,1,{},Eu);_.mb=function Fu(){return new Iu(this)};_.a=null;_.b=null;_.c=0;Pm(208,1,{},Iu);_.qb=function Ju(){return this.a<this.b.c-1};_.rb=function Ku(){return Hu(this)};_.sb=function Lu(){if(this.a<0||this.a>=this.b.c){throw new ox}this.b.b.lb(this.b.a[this.a--])};_.a=-1;_.b=null;Pm(213,1,{},Tu);_.a=null;_.b=null;_.c=null;Pm(214,1,qB,Vu);_.M=function Wu(){th(this.a,this.c,this.b)};_.a=null;_.b=null;_.c=null;Pm(215,1,qB,Yu);_.M=function Zu(){vh(this.a,this.c,this.b)};_.a=null;_.b=null;_.c=null;Pm(217,1,{},bv);_.a=0;Pm(218,1,{},dv);_.a=0;_.b=0;_.c=0;Pm(219,1,{},tv);_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;_.f=0;_.g=0;_.i=0;_.j=null;_.k=null;_.n=null;_.o=0;_.p=0;_.q=null;_.r=null;_.s=null;_.t=0;Pm(220,1,{},Ev);_.tb=function Fv(a){var b,c;if(a==39){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1);b=Av(this,this.a,this.d);Dv(this,b,this.d);this.b=b.b.b.length;b.b.f+1;vv(this)}if(a==37){--this.d;this.d<0&&(this.d=0);b=Av(this,this.a,this.d);Dv(this,b,this.d);this.b=b.b.b.length;b.b.f+1;vv(this)}if(a==8||a==46){this.A=this.e;c=new fy(this.a);by(c,this.d);this.a=rc(c.a);this.d>=0&&--this.d;b=Av(this,this.a,this.d);Dv(this,b,this.d);this.e=nv(b.b);this.b=b.b.b.length;vv(this)}};_.ub=function Gv(a,b){var c,d;if(Hx(a,JI)||Hx(a,KI)||Hx(a,LI)||Hx(a,MI)){this.A=this.e;d=new fy(this.a);cy(d,this.d,a);this.a=rc(d.a);++this.d;c=Av(this,this.a,this.d);Dv(this,c,this.d);this.e=nv(c.b);this.b=c.b.b.length;c.b.f+1;vv(this)}if(Hx(a,NI)||Hx(a,OI)||Hx(a,PI)||Hx(a,QI)){this.A=this.e;d=new fy(this.a);dy(d,this.d,this.d+1,a.toUpperCase());this.a=rc(d.a);c=Av(this,this.a,this.d);Dv(this,c,this.d);this.e=nv(c.b);this.b=c.b.b.length;c.b.f+1;vv(this)}if(Hx(a,RI)||Hx(a,rE)||Hx(a,SI)||Hx(a,ID)){if(Hx(a,RI)||Hx(a,SI)){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1)}else{--this.d;this.d<0&&(this.d=0)}c=Av(this,this.a,this.d);Dv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;vv(this)}if(b==39){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1);c=Av(this,this.a,this.d);Dv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;vv(this)}if(b==37){--this.d;this.d<0&&(this.d=0);c=Av(this,this.a,this.d);Dv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;vv(this)}};_.vb=function Hv(a){var b;if(a>=0&&a<=this.b){b=Av(this,this.a,a);Dv(this,b,a);this.b=b.b.b.length;this.d=a;vv(this)}}; +--></script> +<script><!-- +_.wb=function Jv(a){var b;a!=null&&bw(this.y,a);this.y.e=TI;this.y.g=UI;this.y.c=VI;this.y.b=WI;this.y.d=XI;this.f=this.y.a;this.a=this.y.a;this.b=this.a.length;this.C=this.y.e;this.D=this.y.f;this.G=this.y.g;this.u=this.y.c;this.t=this.y.b;this.z=this.y.d;(Hx(this.u,nF)||Hx(this.t,nF))&&(this.z=GB);b=Av(this,this.f,-1);this.g=b.b.e;this.i=b.b.q;this.b=b.b.b.length;this.e=nv(b.b);ks(this.r,b.a.b+YI)};_.xb=function Lv(a){var b,c,d,e,f;this.B=new sw;if(a==1){b=new Qw;b.b=ZI;qw(this.B,b);d=new Nw;d.b=$I;qw(this.B,d)}else if(a==2){b=new Qw;b.b=ZI;qw(this.B,b);d=new yw;d.b=_I;qw(this.B,d)}else if(a==3){b=new Qw;b.b=ZI;qw(this.B,b);d=new Kw;d.b=aJ;qw(this.B,d)}else if(a==4){b=new Qw;b.b=ZI;qw(this.B,b);d=new Ew;d.b=bJ;qw(this.B,d);f=new Bw;f.b=cJ;qw(this.B,f)}else if(a==5){c=new Hw;c.a=c.a;c.b=dJ;qw(this.B,c);e=new vw;e.a=1;e.b=eJ;qw(this.B,e)}};_.a=null;_.b=0;_.c=null;_.d=0;_.e=GB;_.f=null;_.g=GB;_.i=GB;_.j=null;_.k=null;_.n=false;_.o=null;_.p=null;_.q=null;_.r=null;_.s=null;_.t=null;_.u=null;_.v=null;_.w=null;_.x=null;_.z=null;_.A=GB;_.B=null;_.C=null;_.D=0;_.E=null;_.F=null;_.G=null;_.H=null;Pm(221,1,rB,Ov);_.S=function Pv(a){Pr(this.a.j);this.a.o.H[fJ]=GB};_.a=null;Pm(222,1,{},Rv);_.M=function Sv(){xv(this.a);wv(this.a);yv(this.a);zv(this.a);typeof $wnd.genexIsReady===LB&&$wnd.genexIsReady()};_.a=null;Pm(223,1,rB,Uv);_.S=function Vv(a){var b,c;this.a.A=this.a.e;c=xc(this.a.o.H,fJ);c=c.toUpperCase();c=Lx(c,gJ,GB);this.a.a=c;this.a.d=-1;b=Av(this.a,this.a.a,-1);Dv(this.a,b,-1);this.a.e=nv(b.b);this.a.b=b.b.b.length;Pr(this.a.j);vv(this.a)};_.a=null;Pm(224,1,rB,Xv);_.S=function Yv(a){var b;this.a.a=this.a.f;b=Av(this.a,this.a.a,-1);Dv(this.a,b,-1);this.a.e=nv(b.b);this.a.b=b.b.b.length;vv(this.a)};_.a=null;Pm(225,1,rB,$v);_.S=function _v(a){lr(this.a.j)};_.a=null;Pm(226,1,{},cw);_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;_.f=0;_.g=null;Pm(227,1,{},ew);_.a=null;_.b=null;Pm(228,1,{48:1},iw);_.a=0;_.b=0;_.c=false;_.d=false;_.e=0;_.f=0;_.g=false;Pm(229,1,{},kw);_.a=null;_.b=null;Pm(230,1,{},nw);_.tS=function ow(){return mw(this)};_.a=null;_.b=0;_.c=null;_.d=null;_.e=0;_.f=null;_.g=null;_.i=null;Pm(231,1,{},sw);_.a=null;Pm(233,1,sB);_.b=uJ;Pm(232,233,sB,vw);_.yb=function ww(a){return a.b==this.a+1};_.a=0;Pm(234,233,sB,yw);_.yb=function zw(a){return a.c.length>a.i.length};Pm(235,233,sB,Bw);_.yb=function Cw(a){return Hx(a.c,GB)};Pm(236,233,sB,Ew);_.yb=function Fw(a){return Hx(a.d,GB)};Pm(237,233,sB,Hw);_.yb=function Iw(a){return a.c.length==this.a};_.a=0;Pm(238,233,sB,Kw);_.yb=function Lw(a){return a.c.length<a.i.length};Pm(239,233,sB,Nw);_.yb=function Ow(a){return a.d.length<a.g.length};Pm(240,233,sB,Qw);_.yb=function Rw(a){var b,c,d,e;e=a.f;b=a.a;if(e.length!=b.length)return false;d=0;for(c=0;c<e.length;++c){e.charCodeAt(c)!=b.charCodeAt(c)&&++d}if(d==1)return true;return false};Pm(241,15,cB,Tw);Pm(242,1,{50:1,51:1,53:1},Yw);_.eQ=function Zw(a){return ki(a,51)&&ii(a,51).a==this.a};_.hC=function $w(){return this.a?1231:1237};_.tS=function _w(){return this.a?vJ:wJ};_.a=false;var Vw,Ww;Pm(243,1,{},bx);_.tS=function ix(){return ((this.a&2)!=0?yJ:(this.a&1)!=0?GB:zJ)+this.c};_.a=0;_.b=0;_.c=null;Pm(244,15,cB,kx);Pm(245,15,cB,mx);Pm(246,15,cB,ox,px);Pm(247,15,cB,rx,sx);Pm(251,15,cB,yx,zx);var Ax;Pm(253,1,{50:1,55:1},Dx);_.tS=function Ex(){return this.a+BJ+this.c+CJ+(this.b>=0?OB+this.b:GB)+hD};_.a=null;_.b=0;_.c=null;_=String.prototype;_.cM={1:1,50:1,52:1,53:1};_.eQ=function Qx(a){return Hx(this,a)};_.hC=function Rx(){return Yx(this)};_.tS=_.toString;var Tx,Ux=0,Vx;Pm(255,1,tB,ey,fy);_.tS=function gy(){return rc(this.a)};Pm(256,1,tB,jy);_.tS=function ky(){return rc(this.a)};Pm(257,15,cB,my);Pm(258,1,{});_.zb=function qy(a){throw new my(JJ)};_.Ab=function ry(a){var b;b=oy(this.mb(),a);return !!b};_.Bb=function sy(){return this.Db()==0};_.Cb=function ty(a){var b;b=oy(this.mb(),a);if(b){b.sb();return true}else{return false}};_.tS=function uy(){return py(this)};Pm(260,1,uB);_.eQ=function yy(a){var b,c,d,e,f;if(a===this){return true}if(!ki(a,58)){return false}e=ii(a,58);if(this.d!=e.d){return false}for(c=new ez((new Yy(e)).a);Iz(c.a);){b=c.b=ii(Jz(c.a),59);d=b.Fb();f=b.Gb();if(!(d==null?this.c:ki(d,1)?OB+ii(d,1) in this.e:Iy(this,d,~~xb(d)))){return false}if(!YA(f,d==null?this.b:ki(d,1)?Hy(this,ii(d,1)):Gy(this,d,~~xb(d)))){return false}}return true};_.hC=function zy(){var a,b,c;c=0;for(b=new ez((new Yy(this)).a);Iz(b.a);){a=b.b=ii(Jz(b.a),59);c+=a.hC();c=~~c}return c};_.tS=function Ay(){var a,b,c,d;d=KJ;a=false;for(c=new ez((new Yy(this)).a);Iz(c.a);){b=c.b=ii(Jz(c.a),59);a?(d+=GJ):(a=true);d+=GB+b.Fb();d+=SI;d+=GB+b.Gb()}return d+LJ};Pm(259,260,uB);_.Eb=function Sy(a,b){return ni(a)===ni(b)||a!=null&&wb(a,b)};_.a=null;_.b=null;_.c=false;_.d=0;_.e=null;Pm(262,258,vB);_.eQ=function Vy(a){var b,c,d;if(a===this){return true}if(!ki(a,60)){return false}c=ii(a,60);if(c.Db()!=this.Db()){return false}for(b=c.mb();b.qb();){d=b.rb();if(!this.Ab(d)){return false}}return true};_.hC=function Wy(){var a,b,c;a=0;for(b=this.mb();b.qb();){c=b.rb();if(c!=null){a+=xb(c);a=~~a}}return a};Pm(261,262,vB,Yy);_.Ab=function Zy(a){return Xy(this,a)};_.mb=function $y(){return new ez(this.a)};_.Cb=function _y(a){var b;if(Xy(this,a)){b=ii(a,59).Fb();Oy(this.a,b);return true}return false};_.Db=function az(){return this.a.d};_.a=null;Pm(263,1,{},ez);_.qb=function fz(){return Iz(this.a)};_.rb=function gz(){return cz(this)};_.sb=function hz(){dz(this)};_.a=null;_.b=null;_.c=null;Pm(265,1,wB);_.eQ=function kz(a){var b;if(ki(a,59)){b=ii(a,59);if(YA(this.Fb(),b.Fb())&&YA(this.Gb(),b.Gb())){return true}}return false};_.hC=function lz(){var a,b;a=0;b=0;this.Fb()!=null&&(a=xb(this.Fb()));this.Gb()!=null&&(b=xb(this.Gb()));return a^b};_.tS=function mz(){return this.Fb()+SI+this.Gb()};Pm(264,265,wB,nz);_.Fb=function oz(){return null};_.Gb=function pz(){return this.a.b};_.Hb=function qz(a){return My(this.a,a)};_.a=null;Pm(266,265,wB,sz);_.Fb=function tz(){return this.a};_.Gb=function uz(){return Hy(this.b,this.a)};_.Hb=function vz(a){return Ny(this.b,this.a,a)};_.a=null;_.b=null;Pm(267,258,{57:1});_.Ib=function xz(a,b){throw new my(PJ)};_.zb=function yz(a){this.Ib(this.Db(),a);return true};_.eQ=function Az(a){var b,c,d,e,f;if(a===this){return true}if(!ki(a,57)){return false}f=ii(a,57);if(this.Db()!=f.Db()){return false}d=new Lz(this);e=f.mb();while(d.b<d.d.Db()){b=Jz(d);c=Jz(e);if(!(b==null?c==null:wb(b,c))){return false}}return true};_.hC=function Bz(){var a,b,c;b=1;a=new Lz(this);while(a.b<a.d.Db()){c=Jz(a);b=31*b+(c==null?0:xb(c));b=~~b}return b};_.mb=function Dz(){return new Lz(this)};_.Kb=function Ez(){return new Rz(this,0)};_.Lb=function Fz(a){return new Rz(this,a)};_.Mb=function Gz(a){throw new my(QJ)};Pm(268,1,{},Lz);_.qb=function Mz(){return Iz(this)};_.rb=function Nz(){return Jz(this)};_.sb=function Oz(){Kz(this)};_.b=0;_.c=-1;_.d=null;Pm(269,268,{},Rz);_.a=null;Pm(270,262,vB,Uz);_.Ab=function Vz(a){return Ey(this.a,a)};_.mb=function Wz(){return Tz(this)};_.Db=function Xz(){return this.b.a.d};_.a=null;_.b=null;Pm(271,1,{},$z);_.qb=function _z(){return Iz(this.a.a)};_.rb=function aA(){return Zz(this)};_.sb=function bA(){dz(this.a)};_.a=null;Pm(272,267,xB,kA);_.Ib=function lA(a,b){(a<0||a>this.b)&&Cz(a,this.b);uA(this.a,a,0,b);++this.b};_.zb=function mA(a){return dA(this,a)};_.Ab=function nA(a){return gA(this,a,0)!=-1};_.Jb=function oA(a){return fA(this,a)};_.Bb=function pA(){return this.b==0};_.Mb=function qA(a){return hA(this,a)};_.Cb=function rA(a){return iA(this,a)};_.Db=function sA(){return this.b};_.b=0;var vA;Pm(274,267,xB,yA);_.Ab=function zA(a){return false};_.Jb=function AA(a){throw new rx};_.Db=function BA(){return 0};Pm(275,259,{50:1,58:1},EA);Pm(276,262,{50:1,60:1},JA);_.zb=function KA(a){return GA(this,a)};_.Ab=function LA(a){return Ey(this.a,a)};_.Bb=function MA(){return this.a.d==0};_.mb=function NA(){return Tz(xy(this.a))};_.Cb=function OA(a){return IA(this,a)};_.Db=function PA(){return this.a.d};_.tS=function QA(){return py(xy(this.a))};_.a=null;Pm(277,265,wB,SA);_.Fb=function TA(){return this.a};_.Gb=function UA(){return this.b};_.Hb=function VA(a){var b;b=this.b;this.b=a;return b};_.a=null;_.b=null;Pm(278,15,cB,XA);var yB=Fb;var Yl=dx(RJ,SJ,1),Ai=dx(TJ,UJ,18),Im=cx(VJ,WJ,280),cm=dx(RJ,XJ,17),Tl=dx(RJ,YJ,16),Zl=dx(RJ,ZJ,15),$l=dx(RJ,$J,253),Jm=cx(VJ,_J,281),Lj=dx(aK,bK,117),Sl=dx(RJ,cK,45),yl=dx(dK,eK,220),ul=dx(dK,fK,221),vl=dx(dK,gK,223),wl=dx(dK,hK,224),xl=dx(dK,iK,225),tl=dx(dK,jK,222),Bi=dx(TJ,kK,21),Pl=dx(RJ,lK,242),ym=cx(GB,mK,282),Rl=dx(RJ,nK,243),bm=dx(RJ,IB,2),Km=cx(VJ,oK,283),Ql=dx(RJ,pK,244),am=dx(RJ,qK,256),Ol=dx(RJ,rK,241),zi=dx(TJ,sK,14),Zk=dx(tK,uK,160),hl=dx(tK,vK,159),Fk=dx(tK,wK,177),Gk=dx(tK,xK,176),Ak=dx(tK,yK,175),Bk=dx(tK,zK,180),Ck=dx(tK,AK,181),Kj=ex(BK,CK,110,Wh),Fm=cx(DK,EK,284),Hk=dx(tK,FK,158),Wk=dx(tK,GK,170),Uk=dx(tK,HK,196),Vk=dx(tK,IK,197),rk=dx(tK,JK,157),kk=dx(tK,KK,156),pl=dx(LK,MK,107),Ij=dx(NK,MK,106),nk=dx(tK,OK,161),lk=dx(tK,PK,162),mk=dx(tK,QK,163),Rk=dx(tK,RK,190),Qk=dx(tK,SK,193),Ok=dx(tK,TK,191),Pk=dx(tK,UK,192),Nk=dx(tK,VK,169),sk=dx(tK,WK,168),xk=dx(tK,XK,172),vk=dx(tK,YK,174),wk=dx(tK,ZK,178),uk=dx(tK,$K,173),xi=dx(_K,aL,3),Mk=dx(tK,bL,187),dk=dx(cL,dL,10),Lk=dx(tK,eL,188),Ik=dx(tK,fL,184),Jk=dx(tK,gL,185),Kk=dx(tK,hL,186),qi=dx(_K,iL,4),wi=dx(_K,jL,5),ri=dx(_K,kL,6),ck=dx(cL,lL,143),kl=dx(LK,mL,80),Ej=dx(NK,nL,79),bk=dx(cL,oL,141),il=dx(LK,pL,83),Dj=dx(NK,qL,82),qk=dx(tK,rL,167),el=dx(tK,sL,206),Dk=dx(tK,tL,182),zk=dx(tK,uL,166),dl=dx(tK,vL,200),Xk=dx(tK,wL,199),Yk=dx(tK,xL,198),cl=ex(tK,yL,201,lu),Gm=cx(zL,AL,285),$k=ex(tK,BL,202,null),_k=ex(tK,CL,203,null),al=ex(tK,DL,204,null),bl=ex(tK,EL,205,null),Jj=dx(BK,FL,108),ok=dx(tK,GL,165),pk=dx(tK,HL,164),Ek=dx(tK,IL,183),zl=dx(dK,JL,226),qm=dx(KL,LL,260),jm=dx(KL,ML,259),um=dx(KL,NL,275),em=dx(KL,OL,258),rm=dx(KL,PL,262),gm=dx(KL,QL,261),fm=dx(KL,RL,263),pm=dx(KL,SL,265),hm=dx(KL,TL,264),im=dx(KL,UL,266),om=dx(KL,VL,270),nm=dx(KL,WL,271),vm=dx(KL,XL,276),kj=dx(YL,ZL,78),lj=dx(YL,$L,77),nj=dx(YL,_L,76),ij=dx(YL,aM,75),jj=dx(YL,bM,81),tk=dx(tK,cM,171),Ei=dx(dM,eM,23),Ci=dx(dM,fM,24),Di=dx(dM,gM,25),Fi=dx(dM,hM,28),yi=dx(TJ,iM,12),hj=ex(jM,kM,65,Be),Em=cx(lM,mM,286),Ki=ex(jM,nM,44,md),Am=cx(lM,oM,287),Pi=ex(jM,pM,50,Cd),Bm=cx(lM,qM,288),Ui=ex(jM,rM,55,Sd),Cm=cx(lM,sM,289),Zi=ex(jM,uM,60,ge),Dm=cx(lM,vM,290),$i=ex(jM,wM,66,null),_i=ex(jM,xM,67,null),aj=ex(jM,yM,68,null),bj=ex(jM,zM,69,null),cj=ex(jM,AM,70,null),dj=ex(jM,BM,71,null),ej=ex(jM,CM,72,null),fj=ex(jM,DM,73,null),gj=ex(jM,EM,74,null),Gi=ex(jM,FM,46,null),Hi=ex(jM,GM,47,null),Ii=ex(jM,HM,48,null),Ji=ex(jM,IM,49,null),Li=ex(jM,JM,51,null),Mi=ex(jM,KM,52,null),Ni=ex(jM,LM,53,null),Oi=ex(jM,MM,54,null),Qi=ex(jM,NM,56,null),Ri=ex(jM,OM,57,null),Si=ex(jM,PM,58,null),Ti=ex(jM,QM,59,null),Vi=ex(jM,RM,61,null),Wi=ex(jM,SM,62,null),Xi=ex(jM,TM,63,null),Yi=ex(jM,UM,64,null),yk=dx(tK,VM,179),dm=dx(RJ,WM,257),Vl=dx(RJ,XM,246),ek=dx(cL,YM,145),Gj=dx(NK,ZM,101),fk=dx(cL,$M,147),jl=dx(LK,_M,104),ol=dx(LK,aN,103),Fj=dx(NK,bN,102),ll=dx(LK,cN,213),ml=dx(LK,dN,214),nl=dx(LK,eN,215),gl=dx(tK,fN,207),Hm=cx(zL,gN,291),fl=dx(tK,hN,208),Xl=dx(RJ,iN,251),Ul=dx(RJ,jN,245),Tk=dx(tK,kN,194),Sk=dx(tK,lN,195),_l=dx(RJ,mN,255),ik=dx(nN,oN,154),jk=dx(nN,pN,155),Aj=dx(qN,rN,98),zj=dx(qN,sN,97),mj=dx(YL,tN,84),rj=dx(YL,uN,88),oj=dx(YL,vN,85),qj=dx(YL,wN,87),pj=dx(YL,xN,86),Mj=dx(yN,zN,120),Oj=dx(AN,BN,122),Nj=dx(AN,CN,121),sj=dx(YL,DN,89),Hj=dx(NK,EN,105),ak=dx(FN,GN,126),_j=dx(FN,HN,136),Zj=dx(FN,IN,133),$j=dx(FN,JN,135),Yj=dx(FN,KN,134),Sj=dx(FN,LN,127),Tj=dx(FN,MN,128),Uj=dx(FN,NN,129),Vj=dx(FN,ON,130),Wj=dx(FN,PN,131),Xj=dx(FN,QN,132),xm=dx(KL,RN,278),wm=dx(KL,SN,277),Wl=dx(RJ,TN,247),wj=dx(YL,UN,92),yj=dx(YL,VN,96),vj=dx(YL,WN,94),xj=dx(YL,XN,95),uj=dx(YL,YN,93),tj=dx(YL,ZN,91),Pj=dx(FN,$N,123),Qj=dx(FN,_N,124),mm=dx(KL,aO,267),sm=dx(KL,bO,272),km=dx(KL,cO,268),lm=dx(KL,dO,269),Cl=dx(dK,eO,229),sl=dx(dK,fO,219),Kl=dx(gO,hO,233),Jl=dx(gO,iO,237),Fl=dx(gO,jO,232),El=dx(kO,lO,231),Nl=dx(gO,mO,240),Ml=dx(gO,nO,239),Gl=dx(gO,oO,234),Ll=dx(gO,pO,238),Il=dx(gO,qO,236),Hl=dx(gO,rO,235),Bj=dx(qN,sO,99),Al=dx(dK,tO,227),hk=dx(nN,uO,150),gk=dx(nN,vO,151),Bl=dx(dK,wO,228),rl=dx(dK,xO,218),Dl=dx(kO,yO,230),Cj=dx(qN,zO,100),tm=dx(KL,AO,274),ql=dx(dK,BO,217),vi=dx(_K,CO,7),ui=dx(_K,DO,8),ti=dx(_K,EO,11),zm=cx(FO,GO,292),si=dx(_K,HO,9),Rj=dx(FN,IO,125);$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if ($wnd.genex) $wnd.genex.onScriptLoad(); +--></script></body></html> \ No newline at end of file diff --git a/common/static/js/capa/genex/5033ABB047340FB9346B622E2CC7107D.cache.html b/common/static/js/capa/genex/5033ABB047340FB9346B622E2CC7107D.cache.html new file mode 100644 index 0000000000000000000000000000000000000000..167a193adb0da8891a12f16e5ba1aa71adcd941b --- /dev/null +++ b/common/static/js/capa/genex/5033ABB047340FB9346B622E2CC7107D.cache.html @@ -0,0 +1,625 @@ +<html><head><meta charset="UTF-8" /><script>var $gwt_version = "2.5.0";var $wnd = parent;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = '5033ABB047340FB9346B622E2CC7107D';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});</script></head><body><script><!-- +function nA(){} +function Ub(){} +function pc(){} +function Ye(){} +function Yf(){} +function mf(){} +function tf(){} +function zf(){} +function Ff(){} +function Mf(){} +function Mm(){} +function Fm(){} +function Im(){} +function cg(){} +function lg(){} +function sg(){} +function Eg(){} +function Rg(){} +function yh(){} +function Jh(){} +function Tn(){} +function ko(){} +function to(){} +function nq(){} +function qq(){} +function hs(){} +function Ls(){} +function Os(){} +function Xs(){} +function Xv(){} +function Lv(){} +function Ov(){} +function Rv(){} +function Uv(){} +function $v(){} +function bw(){} +function ew(){} +function rw(){} +function Oz(){} +function Ko(){Jo()} +function hw(){gc()} +function Aw(){gc()} +function Ew(){gc()} +function Hw(){gc()} +function Nw(){gc()} +function lA(){gc()} +function jp(a){ep=a} +function jo(a,b){a.e=b} +function Qm(a,b){a.e=b} +function Qe(a,b){a.b=b} +function Ne(a,b){a.g=b} +function Re(a,b){a.c=b} +function Pm(a,b){a.c=b} +function Om(a,b){a.b=b} +function rv(a,b){a.b=b} +function up(a,b){a.I=b} +function nc(a,b){a.b+=b} +function cc(a){this.b=a} +function C(a){this.b=a} +function _b(a){this.b=a} +function yg(a){this.b=a} +function Kg(a){this.b=a} +function qh(a){this.b=a} +function vn(a){this.b=a} +function xn(a){this.b=a} +function zn(a){this.b=a} +function Bn(a){this.b=a} +function Dn(a){this.b=a} +function Fn(a){this.b=a} +function Mn(a){this.b=a} +function Pn(a){this.b=a} +function zr(a){this.b=a} +function Or(a){this.b=a} +function Yr(a){this.b=a} +function as(a){this.b=a} +function ks(a){this.b=a} +function ns(a){this.b=a} +function dv(a){this.b=a} +function gv(a){this.b=a} +function iv(a){this.b=a} +function lv(a){this.b=a} +function ov(a){this.b=a} +function mw(a){this.b=a} +function my(a){this.b=a} +function Dy(a){this.b=a} +function _y(a){this.e=a} +function wq(a){this.I=a} +function Gq(a){this.I=a} +function au(a){this.c=a} +function oz(a){this.b=a} +function su(){this.b=1} +function Sf(){this.b={}} +function db(){this.b=eb()} +function ff(){this.d=++cf} +function ux(){px(this)} +function Uz(){Tx(this)} +function $(a){J(a.c,a)} +function lf(a,b){jr(b.b,a)} +function sf(a,b){kr(b.b,a)} +function Lf(a,b){lr(b.b,a)} +function kg(a,b){ln(b.b,a)} +function rg(a,b){mn(b.b,a)} +function Wp(a,b){Np(b,a)} +function yp(a,b){ap(a.I,b)} +function at(a,b){Cc(a.c,b)} +function ct(a,b){yc(a.c,b)} +function Gv(a,b){Wz(a.b,b)} +function Rf(a,b,c){a.b[b]=c} +function px(a){a.b=new pc} +function Iv(){this.b=new Zz} +function Zz(){this.b=new Uz} +function Vu(){this.z=new sv} +function ys(){ys=nA;As()} +function vt(){vt=nA;Et()} +function Vb(a){return a.M()} +function X(a){Q();this.b=a} +function ws(a){Q();this.b=a} +function mb(a){gc();this.f=a} +function nb(a){gc();this.f=a} +function $c(){Zc();return Uc} +function od(){nd();return id} +function Ed(){Dd();return yd} +function Ud(){Td();return Od} +function ne(){me();return ce} +function Ih(){Gh();return Ch} +function Ft(){Et();return zt} +function Nb(){Nb=nA;Mb=new Ub} +function Jo(){Jo=nA;Io=new ff} +function Mz(){Mz=nA;Lz=new Oz} +function _n(a){Wn=a;Ro();Uo=a} +function wp(a,b){a.Z()[EB]=b} +function ap(a,b){Ro();bp(a,b)} +function cq(a,b){Zp(a,b,a.I)} +function Tt(a,b){Vt(a,b,a.d)} +function Qq(a,b){Eq(a,b);Nq(a)} +function Qf(a,b){return a.b[b]} +function cb(a){return eb()-a.b} +function yc(b,a){b.scrollTop=a} +function eu(a,b){a.style[bC]=b} +function Sn(a,b,c){a.b=b;a.c=c} +function hu(a){nh(a.b,a.d,a.c)} +function Qg(a){a.b.o&&a.b.kb()} +function Cw(a){mb.call(this,a)} +function Fw(a){mb.call(this,a)} +function Iw(a){mb.call(this,a)} +function Ow(a){mb.call(this,a)} +function Cx(a){mb.call(this,a)} +function wh(a){th.call(this,a)} +function kq(a){wh.call(this,a)} +function Wd(){Qc.call(this,aB,0)} +function Yd(){Qc.call(this,bB,1)} +function $d(){Qc.call(this,cB,2)} +function ae(){Qc.call(this,dB,3)} +function Oo(){Zg.call(this,null)} +function So(a,b){a.__listener=b} +function Cc(a,b){a.scrollLeft=b} +function ao(a,b,c){a.style[b]=c} +function Jr(a,b){Qr(a.b,b,true)} +function Gr(a,b){Qr(a.b,b,false)} +function $q(a,b){Eq(a.k,b);Nq(a)} +function Lw(a,b){return a>b?a:b} +function Kw(a){return a<=0?0-a:a} +function Am(a){return new ym[a]} +function Yg(a,b){return mh(a.b,b)} +function mh(a,b){return Ux(a.e,b)} +function Jz(a,b,c){a.splice(b,c)} +function Ip(a,b){!!a.G&&Xg(a.G,b)} +function xp(a,b){Bp(a.Z(),b,true)} +function st(a){this.I=a;new yh} +function _p(){this.g=new Yt(this)} +function mp(){this.b=new Zg(null)} +function ab(a,b){this.c=a;this.b=b} +function Xz(a,b){return Ux(a.b,b)} +function Xx(b,a){return b.f[iD+a]} +function Rb(a){return !!a.b||!!a.g} +function qr(a){a.g=false;$n(a.I)} +function Ht(){Qc.call(this,aB,0)} +function Jt(){Qc.call(this,bB,1)} +function Lt(){Qc.call(this,cB,2)} +function Nt(){Qc.call(this,dB,3)} +function ve(){Qc.call(this,'EX',3)} +function pe(){Qc.call(this,'PX',0)} +function xe(){Qc.call(this,'PT',4)} +function ze(){Qc.call(this,'PC',5)} +function te(){Qc.call(this,'EM',2)} +function De(){Qc.call(this,'CM',7)} +function Fe(){Qc.call(this,'MM',8)} +function Be(){Qc.call(this,'IN',6)} +function Hh(a,b){Qc.call(this,a,b)} +function rr(){sr.call(this,new Mr)} +function U(a){$wnd.clearTimeout(a)} +function Yy(a){return a.c<a.e.zb()} +function Iy(a,b){this.c=a;this.b=b} +function uv(a,b){this.c=a;this.b=b} +function Av(a,b){this.c=b;this.b=a} +function Qc(a,b){this.b=a;this.c=b} +function Wm(a,b){this.b=a;this.c=b} +function Un(a,b){this.b=a;this.c=b} +function iz(a,b){this.b=a;this.c=b} +function gA(a,b){this.b=a;this.c=b} +function Xn(a,b){qc(a,(ys(),zs(b)))} +function qx(a,b){nc(a.b,b);return a} +function yx(a,b){nc(a.b,b);return a} +function T(a){$wnd.clearInterval(a)} +function Jb(a){$wnd.clearTimeout(a)} +function re(){Qc.call(this,'PCT',1)} +function wd(){Qc.call(this,'AUTO',3)} +function ad(){Qc.call(this,'NONE',0)} +function Zg(a){$g.call(this,a,false)} +function xg(a,b){a.b?sn(b.b):on(b.b)} +function Zx(b,a){return iD+a in b.f} +function Yw(b,a){return b.indexOf(a)} +function _h(a){return a==null?null:a} +function H(){H=nA;var a;a=new M;G=a} +function kx(){kx=nA;hx={};jx={}} +function Do(){if(!vo){np();vo=true}} +function Eo(){if(!zo){op();zo=true}} +function Ro(){if(!Po){_o();Po=true}} +function vx(a){px(this);nc(this.b,a)} +function Xm(a){Wm.call(this,a.b,a.c)} +function cd(){Qc.call(this,'BLOCK',1)} +function Md(){Qc.call(this,'FIXED',3)} +function Rs(){Gs.call(this,$doc.body)} +function Az(){this.b=Mh(sm,rA,0,0,0)} +function oh(a){this.e=new Uz;this.d=a} +function Q(){Q=nA;P=new Az;Ao(new to)} +function ed(){Qc.call(this,'INLINE',2)} +function sd(){Qc.call(this,'HIDDEN',1)} +function ud(){Qc.call(this,'SCROLL',2)} +function Gd(){Qc.call(this,'STATIC',0)} +function Kz(a,b,c,d){a.splice(b,c,d)} +function Ec(a,b){a.textContent=b||UA} +function xc(b,a){b.innerHTML=a||UA} +function Dc(a,b){return a.contains(b)} +function Vh(a,b){return a.cM&&a.cM[b]} +function Uh(a,b){return a.cM&&!!a.cM[b]} +function Ib(a){return a.$H||(a.$H=++Ab)} +function $h(a){return a.tM==nA||Uh(a,1)} +function To(a){return !Zh(a)&&Yh(a,37)} +function tb(a){return Zh(a)?hc(Xh(a)):UA} +function Vw(b,a){return b.charCodeAt(a)} +function qc(b,a){return b.appendChild(a)} +function rc(b,a){return b.removeChild(a)} +function Yz(a,b){return cy(a.b,b)!=null} +function pn(a,b){a.g=b;!b&&(a.i=null)} +function Py(a,b){(a<0||a>=b)&&Sy(a,b)} +function sn(a){on(a);a.c=eo(new Fn(a))} +function R(a){a.c?T(a.d):U(a.d);yz(P,a)} +function qd(){Qc.call(this,'VISIBLE',0)} +function Kd(){Qc.call(this,'ABSOLUTE',2)} +function Id(){Qc.call(this,'RELATIVE',1)} +function Xe(){Xe=nA;We=new gf(eB,new Ye)} +function Xf(){Xf=nA;Wf=new gf(kB,new Yf)} +function kf(){kf=nA;jf=new gf(fB,new mf)} +function rf(){rf=nA;qf=new gf(gB,new tf)} +function yf(){yf=nA;xf=new gf(hB,new zf)} +function Ef(){Ef=nA;Df=new gf(iB,new Ff)} +function Kf(){Kf=nA;Jf=new gf(jB,new Mf)} +function bg(){bg=nA;ag=new gf(lB,new cg)} +function jg(){jg=nA;ig=new gf(nB,new lg)} +function qg(){qg=nA;pg=new gf(oB,new sg)} +function jq(){jq=nA;hq=new nq;iq=new qq} +function eb(){return (new Date).getTime()} +function sb(a){return a==null?null:a.name} +function Yh(a,b){return a!=null&&Uh(a,b)} +function Zw(c,a,b){return c.indexOf(a,b)} +function sy(a){return a.c=Wh(Zy(a.b),59)} +function ax(c,a,b){return c.substr(a,b-a)} +function sx(a,b,c){return oc(a.b,b,b,c),a} +function uc(b,a){return parseInt(b[a])||0} +function lr(a,b){qr(a,(a.b,Ue(b),Ve(b)))} +function jr(a,b){or(a,(a.b,Ue(b)),Ve(b))} +function kr(a,b){pr(a,(a.b,Ue(b)),Ve(b))} +function vz(a,b){Py(b,a.c);return a.b[b]} +function jh(a,b){var c;c=kh(a,b);return c} +function fh(a,b,c){var d;d=ih(a,b);d.vb(c)} +function $g(a,b){this.b=new oh(b);this.c=a} +function z(a){this.k=new C(this);this.s=a} +function zx(a){this.b=new pc;nc(this.b,a)} +function lt(a){this.d=a;this.b=!!this.d.D} +function nn(a){if(a.b){hu(a.b.b);a.b=null}} +function on(a){if(a.c){hu(a.c.b);a.c=null}} +function cn(a){a.s=false;a.d=false;a.i=null} +function uz(a){a.b=Mh(sm,rA,0,0,0);a.c=0} +function Tb(a,b){a.b=Wb(a.b,[b,false]);Sb(a)} +function J(a,b){yz(a.b,b);a.b.c==0&&R(a.c)} +function rx(a,b){return oc(a.b,b,b+1,UA),a} +function pb(a){return Zh(a)?qb(Xh(a)):a+UA} +function Db(a,b,c){return a.apply(b,c);var d} +function Jc(b,a){return b.getElementById(a)} +function gx(a){return String.fromCharCode(a)} +function qb(a){return a==null?null:a.message} +function vw(a){var b=ym[a.c];a=null;return b} +function nz(a){var b;b=sy(a.b);return b.Bb()} +function Gg(a){var b;if(Dg){b=new Eg;a.U(b)}} +function dh(a,b){!a.b&&(a.b=new Az);tz(a.b,b)} +function Wg(a,b,c){return new qh(eh(a.b,b,c))} +function ro(a){qo();return po?fp(po,a):null} +function us(a){z.call(this,(H(),G));this.b=a} +function gd(){Qc.call(this,'INLINE_BLOCK',3)} +function Fr(a){this.I=a;this.b=new Rr(this.I)} +function M(){this.b=new Az;this.c=new X(this)} +function Gs(a){_p.call(this);this.I=a;Jp(this)} +function ob(a){gc();this.c=a;this.b=UA;fc(this)} +function uu(a,b,c){this.c=a;this.b=b;this.d=c} +function iu(a,b,c){this.b=a;this.d=b;this.c=c} +function ku(a,b,c){this.b=a;this.d=b;this.c=c} +function nu(a,b,c){this.b=a;this.d=b;this.c=c} +function tx(a,b,c,d){oc(a.b,b,c,d);return a} +function tz(a,b){Oh(a.b,a.c++,b);return true} +function ic(){try{null.a()}catch(a){return a}} +function _w(b,a){return b.substr(a,b.length-a)} +function Tm(a,b){return new Wm(a.b-b.b,a.c-b.c)} +function Um(a,b){return new Wm(a.b*b.b,a.c*b.c)} +function Vm(a,b){return new Wm(a.b+b.b,a.c+b.c)} +function ww(a){return typeof a=='number'&&a>0} +function Yt(a){this.c=a;this.b=Mh(rm,rA,45,4,0)} +function Rh(){Rh=nA;Ph=[];Qh=[];Sh(new Jh,Ph,Qh)} +function qo(){qo=nA;po=new mp;lp(po)||(po=null)} +function Tg(a){var b;if(Pg){b=new Rg;Xg(a.b,b)}} +function Zs(a){return Us((!Ts&&(Ts=new Xs),a.c))} +function _s(a){return Vs((!Ts&&(Ts=new Xs),a.c))} +function Zh(a){return a!=null&&a.tM!=nA&&!Uh(a,1)} +function mr(a){if(a.i){hu(a.i.b);a.i=null}Mq(a)} +function Hs(a){Fs();try{a.db()}finally{Yz(Es,a)}} +function rn(a,b){at(a.t,ai(b.b));ct(a.t,ai(b.c))} +function oc(a,b,c,d){a.b=ax(a.b,0,b)+d+_w(a.b,c)} +function th(a){nb.call(this,vh(a),uh(a));this.b=a} +function Rr(a){this.b=a;this.c=zh(a);this.d=this.c} +function Sw(a){this.b='Unknown';this.d=a;this.c=-1} +function Mr(){Kr.call(this);this.I[EB]='Caption'} +function Hr(a){Fr.call(this,a,Xw('span',a.tagName))} +function Fq(){Gq.call(this,$doc.createElement(mB))} +function Fs(){Fs=nA;Cs=new Ls;Ds=new Uz;Es=new Zz} +function Nx(a){var b;b=new my(a);return new iz(a,b)} +function Wz(a,b){var c;c=$x(a.b,b,a);return c==null} +function dq(a,b){var c;c=$p(a,b);c&&eq(b.I);return c} +function Mg(a,b){var c;if(Jg){c=new Kg(b);Xg(a,c)}} +function wb(a,b){var c;return c=a,$h(c)?c.eQ(b):c===b} +function xb(a){var b;return b=a,$h(b)?b.hC():Ib(b)} +function Ao(a){Do();return Bo(Dg?Dg:(Dg=new ff),a)} +function Bo(a,b){return Wg((!wo&&(wo=new Oo),wo),a,b)} +function vc(b,a){return b[a]==null?null:String(b[a])} +function fp(a,b){return Wg(a.b,(!Pg&&(Pg=new ff),Pg),b)} +function hz(a){var b;b=new uy(a.c.b);return new oz(b)} +function wm(a){if(Yh(a,56)){return a}return new ob(a)} +function bi(a){if(a!=null){throw new Aw}return null} +function nx(){if(ix==256){hx=jx;jx={};ix=0}++ix} +function Wb(a,b){!a&&(a=[]);a[a.length]=b;return a} +function ec(a,b){a.length>=b&&a.splice(0,b);return a} +function er(a){var b,c;c=$o(a.c,0);b=$o(c,1);return Ac(b)} +function Tx(a){a.b=[];a.f={};a.d=false;a.c=null;a.e=0} +function lw(){lw=nA;jw=new mw(false);kw=new mw(true)} +function Sy(a,b){throw new Iw('Index: '+a+', Size: '+b)} +function nh(a,b,c){a.c>0?dh(a,new nu(a,b,c)):hh(a,b,c)} +function Hp(a,b,c){return Wg(!a.G?(a.G=new Zg(a)):a.G,c,b)} +function Tz(a,b){return _h(a)===_h(b)||a!=null&&wb(a,b)} +function mA(a,b){return _h(a)===_h(b)||a!=null&&wb(a,b)} +function Ag(a,b){var c;if(wg){c=new yg(b);!!a.G&&Xg(a.G,c)}} +function Rm(a,b){this.d=b;this.e=new Xm(a);this.f=new Xm(b)} +function gn(a,b){if(a.k.b){return fn(b,a.k.b)}return false} +function Mq(a){if(!a.B){return}ts(a.A,false,false);Gg(a)} +function Co(a){Do();Eo();return Bo((!Jg&&(Jg=new ff),Jg),a)} +function $w(c,a,b){b=cx(b);return c.replace(RegExp(a,$C),b)} +function Hu(a,b,c,d){b.b=a;b.g=0;c.b=a;c.g=1;d.b=a;d.g=2} +function or(a,b,c){if(!Wn){a.g=true;_n(a.I);a.e=b;a.f=c}} +function Mh(a,b,c,d,e){var f;f=Lh(e,d);Nh(a,b,c,f);return f} +function Wh(a,b){if(a!=null&&!Vh(a,b)){throw new Aw}return a} +function B(a,b){y(a.b,b)?(a.b.q=K(a.b.s,a.b.k)):(a.b.q=null)} +function dn(a){var b;b=a.b.touches;return b.length>0?b[0]:null} +function zs(a){return a.__gwt_resolve?a.__gwt_resolve():a} +function $s(a){return (a.c.scrollHeight||0)-a.c.clientHeight} +function Us(a){return Ws(a)?0:(a.scrollWidth||0)-a.clientWidth} +function Vs(a){return Ws(a)?a.clientWidth-(a.scrollWidth||0):0} +function V(a,b){return $wnd.setTimeout(OA(function(){a.J()}),b)} +function Pu(a){$wnd.genexSetKeyEvent=OA(function(){_u(a)})} +function Nu(a){$wnd.genexSetClickEvent=OA(function(){Zu(a)})} +function Is(){Fs();try{lq(Es,Cs)}finally{Tx(Es.b);Tx(Ds)}} +function vp(a){a.I.style[CB]='818px';a.I.style[DB]='325px'} +function eq(a){a.style[IB]=UA;a.style[JB]=UA;a.style[KB]=UA} +function Rq(a){if(a.B){return}else a.E&&Mp(a);ts(a.A,true,false)} +function zc(a){if(sc(a)){return !!a&&a.nodeType==1}return false} +function Ww(a,b){if(!Yh(b,1)){return false}return String(a)==b} +function _t(a){if(a.b>=a.c.d){throw new lA}return a.c.b[++a.b]} +function ez(a){if(a.c<=0){throw new lA}return a.b.Fb(a.d=--a.c)} +function $y(a){if(a.d<0){throw new Ew}a.e.Ib(a.d);a.c=a.d;a.d=-1} +function kn(a){if(!a.s){return}a.s=false;if(a.d){a.d=false;jn(a)}} +function In(a){if(a.g){hu(a.g.b);a.g=null}a==a.f.i&&(a.f.i=null)} +function $n(a){!!Wn&&a==Wn&&(Wn=null);Ro();a===Uo&&(Uo=null)} +function Zp(a,b,c){Mp(b);Tt(a.g,b);qc(c,(ys(),zs(b.I)));Np(b,a)} +function Xt(a,b){var c;c=Ut(a,b);if(c==-1){throw new lA}Wt(a,c)} +function ay(a,b){var c;c=a.c;a.c=b;if(!a.d){a.d=true;++a.e}return c} +function Kh(a,b){var c,d;c=a;d=Lh(0,b);Nh(c.cZ,c.cM,c.qI,d);return d} +function tw(a,b,c){var d;d=new rw;d.d=a+b;ww(c)&&xw(c,d);return d} +function Nh(a,b,c,d){Rh();Th(d,Ph,Qh);d.cZ=a;d.cM=b;d.qI=c;return d} +function Th(a,b,c){Rh();for(var d=0,e=b.length;d<e;++d){a[b[d]]=c[d]}} +function Gb(a,b,c){var d;d=Eb();try{return Db(a,b,c)}finally{Hb(d)}} +function wu(a){var b;b=$w(a,'<[^<]*>',UA);return b.indexOf(BC)+4} +function ey(a){var b;b=a.c;a.c=null;if(a.d){a.d=false;--a.e}return b} +function xz(a,b){var c;c=(Py(b,a.c),a.b[b]);Jz(a.b,b,1);--a.c;return c} +function x(a,b){w(a);a.o=true;a.p=false;a.n=200;a.t=b;++a.r;B(a.k,eb())} +function io(a){a.f=false;a.g=null;a.b=false;a.c=false;a.d=true;a.e=null} +function kt(a){if(!a.b||!a.d.D){throw new lA}a.b=false;return a.c=a.d.D} +function Zy(a){if(a.c>=a.e.zb()){throw new lA}return a.e.Fb(a.d=a.c++)} +function Xh(a){if(a!=null&&(a.tM==nA||Uh(a,1))){throw new Aw}return a} +function wz(a,b,c){for(;c<a.c;++c){if(mA(b,a.b[c])){return c}}return -1} +function sc(b){try{return !!b&&!!b.nodeType}catch(a){return false}} +function Bc(a){var b=a.parentNode;(!b||b.nodeType!=1)&&(b=null);return b} +function Lq(a,b){var c;c=b.target;if(zc(c)){return Dc(a.I,c)}return false} +function Nq(a){var b;b=a.D;if(b){a.p!=null&&b.$(a.p);a.q!=null&&b._(a.q)}} +function Hb(a){a&&Pb((Nb(),Mb));--zb;if(a){if(Cb!=-1){Jb(Cb);Cb=-1}}} +function Kb(){return $wnd.setTimeout(function(){zb!=0&&(zb=0);Cb=-1},10)} +function en(a){return new Wm(a.t.c.scrollLeft||0,a.t.c.scrollTop||0)} +function ai(a){return ~~Math.max(Math.min(a,2147483647),-2147483648)} +function Ux(a,b){return b==null?a.d:Yh(b,1)?Zx(a,Wh(b,1)):Yx(a,b,~~xb(b))} +function Vx(a,b){return b==null?a.c:Yh(b,1)?Xx(a,Wh(b,1)):Wx(a,b,~~xb(b))} +function Qr(a,b,c){c?xc(a.b,b):Ec(a.b,b);if(a.d!=a.c){a.d=a.c;Ah(a.b,a.c)}} +function K(a,b){var c;c=new ab(a,b);tz(a.b,c);a.b.c==1&&S(a.c,16);return c} +function $r(){$r=nA;new as('bottom');new as('middle');Zr=new as(JB)} +function Lr(){Kr.call(this);Qr(this.b,'Enter new DNA Sequence',true)} +function Kr(){Hr.call(this,$doc.createElement(mB));this.I[EB]='gwt-HTML'} +function Qu(b){$wnd.genexSetProblemNumber=OA(function(a){return b.tb(a)})} +function Ou(b){$wnd.genexSetDNASequence=OA(function(a){return b.sb(a)})} +function bv(a){typeof $wnd.genexStoreAnswer===WA&&$wnd.genexStoreAnswer(a)} +function dx(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} +function Sh(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function by(e,a,b){var c,d=e.f;a=iD+a;a in d?(c=d[a]):++e.e;d[a]=b;return c} +function fy(d,a){var b,c=d.f;a=iD+a;if(a in c){b=c[a];--d.e;delete c[a]}return b} +function Ut(a,b){var c;for(c=0;c<a.d;++c){if(a.b[c]==b){return c}}return -1} +function yz(a,b){var c;c=wz(a,b,0);if(c==-1){return false}xz(a,c);return true} +function uh(a){var b;b=a.hb();if(!b.lb()){return null}return Wh(b.mb(),56)} +function Fo(){var a;if(vo){a=new Ko;!!wo&&Xg(wo,a);return null}return null} +function uw(a,b,c,d){var e;e=new rw;e.d=a+b;ww(c)&&xw(c,e);e.b=d?8:0;return e} +function nr(a,b){var c;c=b.target;if(zc(c)){return Dc(Bc(er(a.k)),c)}return false} +function fz(a,b){var c;this.b=a;this.e=a;c=a.zb();(b<0||b>c)&&Sy(b,c);this.c=b} +function gf(a,b){ff.call(this);this.b=b;!Pe&&(Pe=new Sf);Rf(Pe,a,this);this.c=a} +function Ac(a){var b=a.firstChild;while(b&&b.nodeType!=1)b=b.nextSibling;return b} +function Ob(a){var b,c;if(a.c){c=null;do{b=a.c;a.c=null;c=Yb(b,c)}while(a.c);a.c=c}} +function Pb(a){var b,c;if(a.d){c=null;do{b=a.d;a.d=null;c=Yb(b,c)}while(a.d);a.d=c}} +function Ic(a){return (Ww(a.compatMode,_A)?a.documentElement:a.body).clientWidth} +function Hc(a){return (Ww(a.compatMode,_A)?a.documentElement:a.body).clientHeight} +function Kc(a){return (Ww(a.compatMode,_A)?a.documentElement:a.body).scrollHeight||0} +function Lc(a){return (Ww(a.compatMode,_A)?a.documentElement:a.body).scrollLeft||0} +function Mc(a){return (Ww(a.compatMode,_A)?a.documentElement:a.body).scrollTop||0} +function Nc(a){return (Ww(a.compatMode,_A)?a.documentElement:a.body).scrollWidth||0} +function wt(){var a;vt();xt.call(this,(a=$doc.createElement('INPUT'),a.type='text',a))} +function Eu(a){var b;b=a.s;b=$w(b,LC,UA);b=$w(b,IC,UA);b=$w(b,KC,UA);return $w(b,JC,UA)} +function cy(a,b){return b==null?ey(a):Yh(b,1)?fy(a,Wh(b,1)):dy(a,b,~~xb(b))} +function $x(a,b,c){return b==null?ay(a,c):Yh(b,1)?by(a,Wh(b,1),c):_x(a,b,c,~~xb(b))} +function Fb(b){return function(){try{return Gb(b,this,arguments)}catch(a){throw a}}} +function Xw(b,a){if(a==null)return false;return b==a||b.toLowerCase()==a.toLowerCase()} +function Su(a){if(!a.I){return null}return new Dv(a.g,a.i,a.j,a.e,a.b,a.I.j,a.I.f,a.I.r)} +function Qb(a){var b;if(a.b){b=a.b;a.b=null;!a.g&&(a.g=[]);Yb(b,a.g)}!!a.g&&(a.g=Xb(a.g))} +function Yn(a,b,c){var d;d=Vn;Vn=a;b==Wn&&Qo(a.type)==8192&&(Wn=null);c.W(a);Vn=d} +function sw(a,b,c){var d;d=new rw;d.d=a+b;ww(c!=0?-c:0)&&xw(c!=0?-c:0,d);d.b=4;return d} +function nd(){nd=nA;md=new qd;kd=new sd;ld=new ud;jd=new wd;id=Nh(lm,rA,7,[md,kd,ld,jd])} +function Dd(){Dd=nA;Cd=new Gd;Bd=new Id;zd=new Kd;Ad=new Md;yd=Nh(mm,rA,8,[Cd,Bd,zd,Ad])} +function Td(){Td=nA;Pd=new Wd;Qd=new Yd;Rd=new $d;Sd=new ae;Od=Nh(nm,rA,9,[Pd,Qd,Rd,Sd])} +function Zc(){Zc=nA;Yc=new ad;Vc=new cd;Wc=new ed;Xc=new gd;Uc=Nh(km,rA,5,[Yc,Vc,Wc,Xc])} +function Et(){Et=nA;At=new Ht;Bt=new Jt;Ct=new Lt;Dt=new Nt;zt=Nh(qm,rA,44,[At,Bt,Ct,Dt])} +function xt(a){st.call(this,a,(!Hm&&(Hm=new Im),!Em&&(Em=new Fm)));this.I[EB]='gwt-TextBox'} +function Qt(){zq.call(this);this.b=(Vr(),Sr);this.c=($r(),Zr);this.f[SB]=$B;this.f[TB]=$B} +function Ir(){Fr.call(this,$doc.createElement(mB));this.I[EB]='gwt-Label';Qr(this.b,XB,false)} +function uy(a){var b;this.d=a;b=new Az;a.d&&tz(b,new Dy(a));Sx(a,b);Rx(a,b);this.b=new _y(b)} +function rb(a){var b;return a==null?'null':Zh(a)?sb(Xh(a)):Yh(a,1)?VA:(b=a,$h(b)?b.cZ:mi).d} +function jn(a){var b;if(!a.g){return}b=bn(a.n,a.f);if(b){a.i=new Jn(a,b);Zb((Nb(),a.i),16)}} +function w(a){if(!a.o){return}a.u=a.p;a.o=false;a.p=false;if(a.q){$(a.q);a.q=null}a.u&&qs(a)} +function yv(a,b){this.f=b;this.c=a;this.e=false;this.d=false;this.b=-1;this.g=-1;this.i=false} +function Cp(a,b){if(!a){throw new mb(FB)}b=bx(b);if(b.length==0){throw new Cw(GB)}Fp(a,b)} +function Sb(a){if(!a.j){a.j=true;!a.f&&(a.f=new _b(a));Zb(a.f,1);!a.i&&(a.i=new cc(a));Zb(a.i,50)}} +function xv(a){if(!a.d&&!a.e)return YA;if(!a.d&&a.e){return WC}if(a.c==84)return 'U';return gx(a.c)} +function bn(a,b){var c,d;d=b.c-a.c;if(d<=0){return null}c=Tm(a.b,b.b);return new Wm(c.b/d,c.c/d)} +function fn(a,b){var c,d,e;e=new Wm(a.b-b.b,a.c-b.c);c=Kw(e.b);d=Kw(e.c);return c<=25&&d<=25} +function Ex(a,b){var c;while(a.lb()){c=a.mb();if(b==null?c==null:wb(b,c)){return a}}return null} +function Dq(a,b){if(a.D!=b){return false}try{Np(b,null)}finally{rc(a.jb(),b.I);a.D=null}return true} +function Zn(a){var b;b=mo(co,a);if(!b&&!!a){a.cancelBubble=true;a.preventDefault()}return b} +function Mu(a){var b,c;c=Su(a);if(!c){bv(SC);return}b=Hv(a.C,c);Ww(b,TC)?bv('CORRECT'):bv(SC)} +function op(){var b=$wnd.onresize;$wnd.onresize=OA(function(a){try{Go()}finally{b&&b(a)}})} +function eo(a){Ro();!go&&(go=new ff);if(!co){co=new $g(null,true);ho=new ko}return Wg(co,go,a)} +function Bp(a,b,c){if(!a){throw new mb(FB)}b=bx(b);if(b.length==0){throw new Cw(GB)}c?tc(a,b):wc(a,b)} +function Pq(a,b,c){var d;a.w=b;a.C=c;b-=0;c-=0;d=a.I;d.style[IB]=b+(me(),OB);d.style[JB]=c+OB} +function Ru(a,b,c){var d;d=new Ku(b,a.D,a.E,a.H,a.v,a.u,a.A);Iu(d);Gu(d);Ju(d);return new Av(zu(d,c),d)} +function Zb(b,c){Nb();$wnd.setTimeout(function(){var a=OA(Vb)(b);a&&$wnd.setTimeout(arguments.callee,c)},c)} +function Ws(a){var b=$doc.defaultView.getComputedStyle(a,null);return b.getPropertyValue('direction')==qB} +function zh(a){var b;b=vc(a,pB);if(Xw(qB,b)){return Gh(),Fh}else if(Xw(rB,b)){return Gh(),Eh}return Gh(),Dh} +function jc(a){var b,c,d;d=kc(a);for(b=0,c=d.length;b<c;++b){d[b]=d[b].length==0?'anonymous':d[b]}return d} +function Km(a,b,c,d){var e,f,g;g=a*b;if(c>=0){e=0>c-d?0:c-d;g=g<e?g:e}else{f=0<c+d?0:c+d;g=g>f?g:f}return g} +function pr(a,b,c){var d,e;if(a.g){d=b+Fc(a.I);e=c+Gc(a.I);if(d<a.c||d>=a.j||e<a.d){return}Pq(a,d-a.e,e-a.f)}} +function Go(){var a,b;if(zo){b=Ic($doc);a=Hc($doc);if(yo!=b||xo!=a){yo=b;xo=a;Mg((!wo&&(wo=new Oo),wo),b)}}} +function lh(a){var b,c;if(a.b){try{for(c=new _y(a.b);c.c<c.e.zb();){b=Wh(Zy(c),46);b.ob()}}finally{a.b=null}}} +function $p(a,b){var c;if(b.H!=a){return false}try{Np(b,null)}finally{c=b.I;rc(Bc(c),c);Xt(a.g,b)}return true} +function Wt(a,b){var c;if(b<0||b>=a.d){throw new Hw}--a.d;for(c=b;c<a.d;++c){Oh(a.b,c,a.b[c+1])}Oh(a.b,a.d,null)} +function Eq(a,b){if(b==a.D){return}!!b&&Mp(b);!!a.D&&a.gb(a.D);a.D=b;if(b){qc(a.jb(),(ys(),zs(a.D.I)));Np(b,a)}} +function cs(a,b){var c,d;c=(d=$doc.createElement(VB),d[YB]=a.b.b,ao(d,ZB,a.d.b),d);qc(a.c,(ys(),zs(c)));Zp(a,b,c)} +function jb(a){var b,c,d;c=Mh(tm,rA,55,a.length,0);for(d=0,b=a.length;d<b;++d){if(!a[d]){throw new Nw}c[d]=a[d]}} +function Sx(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=new Iy(e,c.substring(1));a.vb(d)}}} +function mx(a){kx();var b=iD+a;var c=jx[b];if(c!=null){return c}c=hx[b];c==null&&(c=lx(a));nx();return jx[b]=c} +function wv(a){switch(a.c){case 65:return ZC;case 71:return YC;case 67:return XC;case 84:return WC;}return UA} +function Kp(a,b){var c;switch(Qo(b.type)){case 16:case 32:c=b.relatedTarget;if(!!c&&Dc(a.I,c)){return}}Se(b,a,a.I)} +function Eb(){var a;if(zb!=0){a=eb();if(a-Bb>2000){Bb=a;Cb=Kb()}}if(zb++==0){Ob((Nb(),Mb));return true}return false} +function Sq(a){if(a.y){hu(a.y.b);a.y=null}if(a.t){hu(a.t.b);a.t=null}if(a.B){a.y=eo(new ks(a));a.t=ro(new ns(a))}} +function Jn(a,b){this.f=a;this.b=new db;this.c=en(this.f);this.e=new Rm(this.c,b);this.g=Co(new Mn(this))} +function tn(){this.e=new Az;this.f=new Tn;this.n=new Tn;this.k=new Tn;this.r=new Az;this.j=new Pn(this);pn(this,new Mm)} +function Vr(){Vr=nA;new Yr((Td(),'center'));new Yr('justify');Tr=new Yr(IB);new Yr('right');Ur=Tr;Sr=Ur} +function Gh(){Gh=nA;Fh=new Hh('RTL',0);Eh=new Hh('LTR',1);Dh=new Hh('DEFAULT',2);Ch=Nh(pm,rA,30,[Fh,Eh,Dh])} +function Du(a,b){var c;b>=a.b.c&&(b=a.b.c-1);c=Wh(vz(a.b,b),48);while(!c.e&&b<a.b.c){c=Wh(vz(a.b,b),48);++b}return c} +function ih(a,b){var c,d;d=Wh(Vx(a.e,b),58);if(!d){d=new Uz;$x(a.e,b,d)}c=Wh(d.c,57);if(!c){c=new Az;ay(d,c)}return c} +function kh(a,b){var c,d;d=Wh(Vx(a.e,b),58);if(!d){return Mz(),Mz(),Lz}c=Wh(d.c,57);if(!c){return Mz(),Mz(),Lz}return c} +function ly(a,b){var c,d,e;if(Yh(b,59)){c=Wh(b,59);d=c.Bb();if(Ux(a.b,d)){e=Vx(a.b,d);return Tz(c.Cb(),e)}}return false} +function hh(a,b,c){var d,e,f;d=kh(a,b);e=d.yb(c);e&&d.xb()&&(f=Wh(Vx(a.e,b),58),Wh(ey(f),57),f.e==0&&cy(a.e,b),undefined)} +function zz(a,b){var c;b.length<a.c&&(b=Kh(b,a.c));for(c=0;c<a.c;++c){Oh(b,c,a.b[c])}b.length>a.c&&Oh(b,a.c,null);return b} +function $o(a,b){var c=0,d=a.firstChild;while(d){if(d.nodeType==1){if(b==c)return d;++c}d=d.nextSibling}return null} +function Ve(a){var b,c;b=a.c;if(b){return c=a.b,(c.clientY||0)-Gc(b)+(b.scrollTop||0)+Mc(b.ownerDocument)}return a.b.clientY||0} +function Ue(a){var b,c;b=a.c;if(b){return c=a.b,(c.clientX||0)-Fc(b)+(b.scrollLeft||0)+Lc(b.ownerDocument)}return a.b.clientX||0} +function gr(a){var b,c;c=$doc.createElement(VB);b=$doc.createElement(mB);qc(c,(ys(),zs(b)));c[EB]=a;b[EB]=a+'Inner';return c} +function xq(a){var b;wq.call(this,(b=$doc.createElement('BUTTON'),b.type='button',b));this.I[EB]='gwt-Button';xc(this.I,a)} +function gg(){var a;this.b=(a=document.createElement(mB),a.setAttribute('ontouchstart','return;'),typeof a.ontouchstart==WA)} +function ty(a){if(!a.c){throw new Fw('Must call next() before remove().')}else{$y(a.b);cy(a.d,a.c.Bb());a.c=null}} +function S(a,b){if(b<0){throw new Cw('must be non-negative')}a.c?T(a.d):U(a.d);yz(P,a);a.c=false;a.d=V(a,b);tz(P,a)} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{OA(vm)()}catch(a){b(c)}else{OA(vm)()}} +function gc(){var a,b,c,d;c=ec(jc(ic()),3);d=Mh(tm,rA,55,c.length,0);for(a=0,b=d.length;a<b;++a){d[a]=new Sw(c[a])}jb(d)} +function fc(a){var b,c,d,e;d=jc(Zh(a.c)?Xh(a.c):null);e=Mh(tm,rA,55,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new Sw(d[b])}jb(e)} +function Rx(h,a){var b=h.b;for(var c in b){var d=parseInt(c,10);if(c==d){var e=b[d];for(var f=0,g=e.length;f<g;++f){a.vb(e[f])}}}} +function Wx(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){return f.Cb()}}}return null} +function Yx(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){return true}}}return false} +function Se(a,b,c){var d,e,f;if(Pe){f=Wh(Qf(Pe,a.type),12);if(f){d=f.b.b;e=f.b.c;Qe(f.b,a);Re(f.b,c);Ip(b,f.b);Qe(f.b,d);Re(f.b,e)}}} +function hn(a,b){var c,d,e,f;c=eb();f=false;for(e=new _y(a.r);e.c<e.e.zb();){d=Wh(Zy(e),35);if(c-d.c<=2500&&fn(b,d.b)){f=true;break}}return f} +function Hv(a,b){var c,d,e,f;c=new ux;e=hz(Nx(a.b.b));f=true;while(Yy(e.b.b)){d=Wh(nz(e),49);if(!d.ub(b)){f=false;qx(c,d.c)}}return f?TC:c.b.b} +function qs(a){if(!a.j){ps(a);a.d||dq((Fs(),Js(null)),a.b)}a.b.I.style[bC]='rect(auto, auto, auto, auto)';a.b.I.style[RA]=RB} +function ps(a){if(a.j){if(a.b.v){qc($doc.body,a.b.r);a.g=Co(a.b.s);gs();a.c=true}}else if(a.c){rc($doc.body,a.b.r);hu(a.g.b);a.g=null;a.c=false}} +function Dv(a,b,c,d,e,f,g,h){this.g=a;this.i=b;this.j=c;this.f=d;this.b=e;this.c=f;this.e=g;this.d=h;'GenexState\n'+Cv(this)} +function zq(){_p.call(this);this.f=$doc.createElement(LB);this.e=$doc.createElement(MB);qc(this.f,(ys(),zs(this.e)));up(this,this.f)} +function ds(){zq.call(this);this.b=(Vr(),Sr);this.d=($r(),Zr);this.c=$doc.createElement(UB);qc(this.e,(ys(),zs(this.c)));this.f[SB]=$B;this.f[TB]=$B} +function Ah(a,b){switch(b.c){case 0:{a[pB]=qB;break}case 1:{a[pB]=rB;break}case 2:{zh(a)!=(Gh(),Dh)&&(a[pB]=UA,undefined);break}}} +function ru(a){switch(a.b){case 0:++a.b;case 1:++a.b;return 'exon';case 2:++a.b;return 'next';case 3:a.b=1;return 'another';}return UA} +function bx(c){if(c.length==0||c[0]>YA&&c[c.length-1]>YA){return c}var a=c.replace(/^(\s*)/,UA);var b=a.replace(/\s*$/,UA);return b} +function Gp(a,b,c){var d;d=Qo(c.c);d==-1?yp(a,c.c):a.F==-1?cp(a.I,d|(a.I.__eventBits||0)):(a.F|=d);return Wg(!a.G?(a.G=new Zg(a)):a.G,c,b)} +function hc(b){var c=UA;try{for(var d in b){if(d!='name'&&d!='message'&&d!='toString'){try{c+='\n '+d+TA+b[d]}catch(a){}}}}catch(a){}return c} +function Mp(a){if(!a.H){(Fs(),Xz(Es,a))&&Hs(a)}else if(a.H){a.H.gb(a)}else if(a.H){throw new Fw("This widget's parent does not implement HasWidgets")}} +function cx(a){var b;b=0;while(0<=(b=a.indexOf('\\',b))){a.charCodeAt(b+1)==36?(a=a.substr(0,b-0)+'$'+_w(a,++b)):(a=a.substr(0,b-0)+_w(a,++b))}return a} +function Pt(a,b){var c,d,e;d=$doc.createElement(UB);c=(e=$doc.createElement(VB),e[YB]=a.b.b,ao(e,ZB,a.c.b),e);qc(d,(ys(),zs(c)));qc(a.e,zs(d));Zp(a,b,c)} +function me(){me=nA;le=new pe;je=new re;ee=new te;fe=new ve;ke=new xe;ie=new ze;ge=new Be;de=new De;he=new Fe;ce=Nh(om,rA,10,[le,je,ee,fe,ke,ie,ge,de,he])} +function rs(a){ps(a);if(a.j){a.b.I.style[KB]=cC;a.b.C!=-1&&Pq(a.b,a.b.w,a.b.C);cq((Fs(),Js(null)),a.b)}else{a.d||dq((Fs(),Js(null)),a.b)}a.b.I.style[RA]=RB} +function xw(a,b){var c;b.c=a;if(a==2){c=String.prototype}else{if(a>0){var d=vw(b);if(d){c=d.prototype}else{d=ym[a]=function(){};d.cZ=b;return}}else{return}}c.cZ=b} +function L(a){var b,c,d,e,f;b=Mh(jm,pA,3,a.b.c,0);b=Wh(zz(a.b,b),4);c=new db;for(e=0,f=b.length;e<f;++e){d=b[e];yz(a.b,d);B(d.b,c.b)}a.b.c>0&&S(a.c,Lw(5,16-(eb()-c.b)))} +--></script> +<script><!-- +function xu(a,b){var c,d;d=Zw(a.n,a.e,b);if(d==-1)return new uu(b,a.n.length,-1);c=Zw(a.n,a.d,d);if(c==-1)return new uu(b,a.n.length,-1);return new uu(b,d,c+a.d.length)} +function Uu(a,b,c){c!=-1?Gr(a.t,XB+c):Gr(a.t,XB);Jr(a.s,b.b.c+'<font color=blue>'+a.B+'<\/font><\/pre><br><br><br><font size=+1><\/font><\/body><\/html>');a.I=b.c;Zu(a)} +function Qw(){Qw=nA;Pw=Nh(im,rA,-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function Jw(a){var b,c,d;b=Mh(im,rA,-1,8,1);c=(Qw(),Pw);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return dx(b,d,8)} +function mo(a,b){var c,d,e,f,g;if(!!go&&!!a&&Yg(a,go)){c=ho.b;d=ho.c;e=ho.d;f=ho.e;io(ho);jo(ho,b);Xg(a,ho);g=!(ho.b&&!ho.c);ho.b=c;ho.c=d;ho.d=e;ho.e=f;return g}return true} +function Fx(a){var b,c,d,e;d=new ux;b=null;d.b.b+='[';c=a.hb();while(c.lb()){b!=null?(nc(d.b,b),d):(b=jD);e=c.mb();nc(d.b,e===a?'(this Collection)':UA+e)}d.b.b+=']';return d.b.b} +function Gc(a){var b=0;var c=a.parentNode;while(c&&c.offsetParent){c.tagName!=ZA&&c.tagName!=$A&&(b-=c.scrollTop);c=c.parentNode}while(a){b+=a.offsetTop;a=a.offsetParent}return b} +function Fc(a){var b=0;var c=a.parentNode;while(c&&c.offsetParent){c.tagName!=ZA&&c.tagName!=$A&&(b-=c.scrollLeft);c=c.parentNode}while(a){b+=a.offsetLeft;a=a.offsetParent}return b} +function Xg(b,c){var a,d,e;!c.f||c.P();e=c.g;Ne(c,b.c);try{gh(b.b,c)}catch(a){a=wm(a);if(Yh(a,47)){d=a;throw new wh(d.b)}else throw a}finally{e==null?(c.f=true,c.g=null):(c.g=e)}} +function gs(){var a,b,c,d,e;b=null.Jb();e=Ic($doc);d=Hc($doc);b[_B]=(Zc(),aC);b[CB]=0+(me(),OB);b[DB]=PB;c=Nc($doc);a=Kc($doc);b[CB]=(c>e?c:e)+OB;b[DB]=(a>d?a:d)+OB;b[_B]='block'} +function Lh(a,b){var c=new Array(b);if(a==3){for(var d=0;d<b;++d){var e=new Object;e.l=e.m=e.h=0;c[d]=e}}else if(a>0){var e=[null,0,false][a];for(var d=0;d<b;++d){c[d]=e}}return c} +function dy(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){c.length==1?delete h.b[b]:c.splice(d,1);--h.e;return f.Cb()}}}return null} +function _x(j,a,b,c){var d=j.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.Bb();if(j.Ab(a,h)){var i=g.Cb();g.Db(b);return i}}}else{d=j.b[c]=[]}var g=new gA(a,b);d.push(g);++j.e;return null} +function Np(a,b){var c;c=a.H;if(!b){try{!!c&&c.E&&a.db()}finally{a.H=null}}else{if(c){throw new Fw('Cannot set a new parent without first clearing the old parent')}a.H=b;b.E&&a.cb()}} +function eh(a,b,c){if(!b){throw new Ow('Cannot add a handler with a null type')}if(!c){throw new Ow('Cannot add a null handler')}a.c>0?dh(a,new ku(a,b,c)):fh(a,b,c);return new iu(a,b,c)} +function Bm(a){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:a})} +function ss(a,b){var c,d,e,f,g,h;a.j||(b=1-b);g=0;e=0;f=0;c=0;d=ai(b*a.e);h=ai(b*a.f);switch(0){case 2:case 0:g=a.e-d>>1;e=a.f-h>>1;f=e+h;c=g+d;}eu(a.b.I,'rect('+g+dC+f+dC+c+dC+e+'px)')} +function lq(b,c){jq();var a,d,e,f,g;d=null;for(g=b.hb();g.lb();){f=Wh(g.mb(),45);try{c.ib(f)}catch(a){a=wm(a);if(Yh(a,56)){e=a;!d&&(d=new Zz);Wz(d,e)}else throw a}}if(d){throw new kq(d)}} +function lx(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c<e){b=a.charCodeAt(c+3)+31*(a.charCodeAt(c+2)+31*(a.charCodeAt(c+1)+31*(a.charCodeAt(c)+31*b)))|0;c+=4}while(c<d){b=b*31+Vw(a,c++)}return b|0} +function Oh(a,b,c){if(c!=null){if(a.qI>0&&!Vh(c,a.qI)){throw new hw}else if(a.qI==-1&&(c.tM==nA||Uh(c,1))){throw new hw}else if(a.qI<-1&&!(c.tM!=nA&&!Uh(c,1))&&!Vh(c,-a.qI)){throw new hw}}return a[b]=c} +function Lp(a){if(!a.E){throw new Fw("Should only call onDetach when the widget is attached to the browser's document")}try{a.fb();Ag(a,false)}finally{try{a.bb()}finally{a.I.__listener=null;a.E=false}}} +function Js(a){Fs();var b,c;c=Wh(Vx(Ds,a),42);b=null;if(a!=null){if(!(b=Jc($doc,a))){return null}}if(c){if(!b||c.I==b){return c}}Ds.e==0&&Ao(new Os);!b?(c=new Rs):(c=new Gs(b));$x(Ds,a,c);Wz(Es,c);return c} +function Vt(a,b,c){var d,e;if(c<0||c>a.d){throw new Hw}if(a.d==a.b.length){e=Mh(rm,rA,45,a.b.length*2,0);for(d=0;d<a.b.length;++d){Oh(e,d,a.b[d])}a.b=e}++a.d;for(d=a.d-1;d>c;--d){Oh(a.b,d,a.b[d-1])}Oh(a.b,c,b)} +function sv(){this.b='CAAGGCTATAACCGAGATTGATGCCTTGTGCGATAAGGTGTGTCCCCCCCCAAAGTGTCGGATGTCGAGTGCGCGTGCAAAAAAAAACAAAGGCGAGGACCTTAAGAAGGTGTGAGGGGGCGCTCGAT';this.f=bD;this.g=0;this.i=cD;this.d=dD;this.c=eD;this.e=fD} +function zm(a,b,c){var d=ym[a];if(d&&!d.cZ){_=d.prototype}else{!d&&(d=ym[a]=function(){});_=d.prototype=b<0?{}:Am(b);_.cM=c}for(var e=3;e<arguments.length;++e){arguments[e].prototype=_}if(d.cZ){_.cZ=d.cZ;d.cZ=null}} +function kc(a){var b,c,d,e,f;f=a&&a.message?a.message.split(XA):[];for(b=0,c=0,e=f.length;c<e;++b,c+=2){d=f[c].lastIndexOf('function ');d==-1?(f[b]=UA,undefined):(f[b]=bx(_w(f[c],d+9)),undefined)}f.length=b;return f} +function vh(a){var b,c,d,e,f;c=a.zb();if(c==0){return null}b=new zx(c==1?'Exception caught: ':c+' exceptions caught: ');d=true;for(f=a.hb();f.lb();){e=Wh(f.mb(),56);d?(d=false):(b.b.b+='; ',b);yx(b,e.L())}return b.b.b} +function _u(d){$doc.onkeypress=function(a){if(d.o){var a=$wnd.event||a;var b=String.fromCharCode(a.charCode);var c=a.charCode;d.qb(b,c)}};$doc.onkeydown=function(a){if(d.o){var a=$wnd.event||a;var b=a.keyCode;d.pb(b)}}} +function bt(a){var b,c;if(a.d){return false}a.d=(b=(!an&&(an=(lw(),(!Vf&&(Vf=new gg),Vf.b)&&!(c=navigator.userAgent.toLowerCase(),/android ([3-9]+)\.([0-9]+)/.exec(c)!=null)?kw:jw)),an.b?new tn:null),!!b&&qn(b,a),b);return !a.d} +function Fp(a,b){var c=a.className.split(/\s+/);if(!c){return}var d=c[0];var e=d.length;c[0]=b;for(var f=1,g=c.length;f<g;f++){var h=c[f];h.length>e&&h.charAt(e)==HB&&h.indexOf(d)==0&&(c[f]=b+h.substring(e))}a.className=c.join(YA)} +function Jp(a){var b;if(a.E){throw new Fw("Should only call onAttach when the widget is detached from the browser's document")}a.E=true;So(a.I,a);b=a.F;a.F=-1;b>0&&(a.F==-1?cp(a.I,b|(a.I.__eventBits||0)):(a.F|=b));a.ab();a.eb();Ag(a,true)} +function tc(a,b){var c,d,e,f;b=bx(b);f=a.className;c=f.indexOf(b);while(c!=-1){if(c==0||f.charCodeAt(c-1)==32){d=c+b.length;e=f.length;if(d==e||d<e&&f.charCodeAt(d)==32){break}}c=f.indexOf(b,c+1)}if(c==-1){f.length>0&&(f+=YA);a.className=f+b}} +function dt(a){Fq.call(this);this.c=this.I;this.b=$doc.createElement(mB);qc(this.c,this.b);this.c.style[RA]=(nd(),'auto');this.c.style[KB]=(Dd(),eC);this.b.style[KB]=eC;this.c.style[fC]=gC;this.b.style[fC]=gC;bt(this);!Ts&&(Ts=new Xs);Eq(this,a)} +function Yb(b,c){var a,d,e,f;for(d=0,e=b.length;d<e;++d){f=b[d];try{f[1]?f[0].M()&&(c=Wb(c,f)):(Ou(f[0].b),Nu(f[0].b),Pu(f[0].b),Qu(f[0].b),typeof $wnd.genexIsReady===WA&&$wnd.genexIsReady(),undefined)}catch(a){a=wm(a);if(!Yh(a,56))throw a}}return c} +function mn(a,b){var c,d;Sn(a.k,null,0);if(a.s){return}d=dn(b);a.q=new Wm(d.pageX,d.pageY);c=eb();Sn(a.n,a.q,c);Sn(a.f,a.q,c);a.o=null;if(a.i){tz(a.r,new Un(a.q,c));Zb((Nb(),a.j),2500)}a.p=new Wm(a.t.c.scrollLeft||0,a.t.c.scrollTop||0);cn(a);a.s=true} +function lp(h){var c=UA;var d=$wnd.location.hash;d.length>0&&(c=h.X(d.substring(1)));jp(c);var e=h;var f=OA(function(){var a=UA,b=$wnd.location.hash;b.length>0&&(a=e.X(b.substring(1)));e.Y(a)});var g=function(){$wnd.setTimeout(g,250);f()};g();return true} +function Ku(a,b,c,d,e,f,g){var h;this.b=new Az;this.c=a;this.o=b;this.p=c;this.t=d;this.e=e;this.d=f;this.k=g;this.q=-1;this.u=-1;this.i=0;this.j=0;this.g=0;this.n=UA;this.f=UA;this.r=UA;this.s=UA;for(h=0;h<a.length;++h){tz(this.b,new yv(Vw(this.c,h),h))}} +function ts(a,b,c){var d;a.d=c;w(a);if(a.i){R(a.i);a.i=null;qs(a)}a.b.B=b;Sq(a.b);d=!c&&a.b.u;a.j=b;if(d){if(b){ps(a);a.b.I.style[KB]=cC;a.b.C!=-1&&Pq(a.b,a.b.w,a.b.C);a.b.I.style[bC]=QB;cq((Fs(),Js(null)),a.b);a.i=new ws(a);S(a.i,1)}else{x(a,eb())}}else{rs(a)}} +function Lm(a){var b,c,d,e,f,g,h,i,j,k,l,m;e=a.c;m=a.b;f=a.d;k=a.f;b=Math.pow(0.9993,m);g=e*5.0E-4;i=Km(f.b,b,k.b,g);j=Km(f.c,b,k.c,g);h=new Wm(i,j);a.f=h;d=a.c;c=Um(h,new Wm(d,d));l=a.e;Qm(a,new Wm(l.b+c.b,l.c+c.c));if(Kw(h.b)<0.02&&Kw(h.c)<0.02){return false}return true} +function Xb(a){var b,c,d,e,f,g;d=a.length;if(d==0){return null}b=false;f=eb();while(eb()-f<100){for(c=0;c<d;++c){g=a[c];if(!g){continue}if(!g[0].M()){a[c]=null;b=true}}}if(b){e=[];for(c=0;c<d;++c){!!a[c]&&(e[e.length]=a[c],undefined)}return e.length==0?null:e}else{return a}} +function Iu(a){var b,c,d,e,f,g;f=Yw(a.c,a.o);g=Zw(a.c,a.t,f);e=new ux;if(f!=-1){c=0;a.q=f;a.i=a.q+a.o.length+a.p;g!=-1?(a.u=g):(a.u=a.c.length);for(b=a.i;b<a.u;++b){d=Wh(vz(a.b,b),48);d.d=true;++c}for(b=0;b<a.c.length;++b){d=Wh(vz(a.b,b),48);qx(e,xv(d))}a.n=bx(e.b.b)}else{a.n=UA}} +function Zu(e){function f(a,b,c){var d=document.createRange();d.selectNodeContents(a);d.setEnd(b,c);return d.toString().length} +var g=$doc.getElementById('dna-strand');g.style.cursor='pointer';g.onclick=function(){var a=$wnd.getSelection();var b=f(this,a.anchorNode,a.anchorOffset);e.rb(b);e.o=true}} +function Cv(a){var b;b=new ux;b.b.b+='State:\n';qx(b,'\tStarting DNA='+a.g+XA);qx(b,'\tStarting mRNA='+a.i+XA);qx(b,'\tStarting protein='+a.j+XA);qx(b,'\tSelected base='+a.f+XA);qx(b,'\tCurrent DNA='+a.b+XA);qx(b,'\tNum Exons='+a.c+XA);qx(b,'\tRNA='+a.e+XA);qx(b,'\tProtein='+a.d+'\n\n');return b.b.b} +function Gu(a){var b,c,d,e,f,g;if(Ww(a.n,UA)){a.f=UA}else{c=0;f=new ux;d=0;while(c!=-1){b=xu(a,c);++a.j;c=b.d;for(e=b.c;e<b.b;++e){g=Wh(vz(a.b,e+a.i),48);g.e=true;++d;qx(f,xv(g))}}for(e=a.u;e<a.u+a.k.length;++e){if(e>=a.b.c){g=new yv(65,e);g.e=true;tz(a.b,g)}else{g=Wh(vz(a.b,e),48);g.e=true}}a.f=f.b.b+a.k}} +function As(){var c=function(){};c.prototype={className:UA,clientHeight:0,clientWidth:0,dir:UA,getAttribute:function(a,b){return this[a]},href:UA,id:UA,lang:UA,nodeType:1,removeAttribute:function(a,b){this[a]=undefined},setAttribute:function(a,b){this[a]=b},src:UA,style:{},title:UA};$wnd.GwtPotentialElementShim=c} +function wc(a,b){var c,d,e,f,g,h,i;b=bx(b);i=a.className;e=i.indexOf(b);while(e!=-1){if(e==0||i.charCodeAt(e-1)==32){f=e+b.length;g=i.length;if(f==g||f<g&&i.charCodeAt(f)==32){break}}e=i.indexOf(b,e+1)}if(e!=-1){c=bx(i.substr(0,e-0));d=bx(_w(i,e+b.length));c.length==0?(h=d):d.length==0?(h=c):(h=c+YA+d);a.className=h}} +function gh(b,c){var a,d,e,f,g,h;if(!c){throw new Ow('Cannot fire null event')}try{++b.c;g=jh(b,c.O());d=null;h=b.d?g.Hb(g.zb()):g.Gb();while(b.d?h.c>0:h.c<h.e.zb()){f=b.d?ez(h):Zy(h);try{c.N(Wh(f,27))}catch(a){a=wm(a);if(Yh(a,56)){e=a;!d&&(d=new Zz);Wz(d,e)}else throw a}}if(d){throw new th(d)}}finally{--b.c;b.c==0&&lh(b)}} +function Kq(a){var b,c,d,e,f;d=a.B;c=a.u;if(!d){a.I.style[NB]=SA;a.u=false;!a.i&&(a.i=Co(new zr(a)));Rq(a)}b=a.I;b.style[IB]=0+(me(),OB);b.style[JB]=PB;e=Ic($doc)-uc(a.I,QA)>>1;f=Hc($doc)-uc(a.I,PA)>>1;Pq(a,Lw(Lc($doc)+e,0),Lw(Mc($doc)+f,0));if(!d){a.u=c;if(c){eu(a.I,QB);a.I.style[NB]=RB;x(a.A,eb())}else{a.I.style[NB]=RB}}} +function fr(a){var b,c,d,e;Gq.call(this,$doc.createElement(LB));d=this.I;this.c=$doc.createElement(MB);Xn(d,this.c);d[SB]=0;d[TB]=0;for(b=0;b<a.length;++b){c=(e=$doc.createElement(UB),e[EB]=a[b],Xn(e,gr(a[b]+'Left')),Xn(e,gr(a[b]+'Center')),Xn(e,gr(a[b]+'Right')),e);Xn(this.c,c);b==1&&(this.b=Ac($o(c,1)))}this.I[EB]='gwt-DecoratorPanel'} +function np(){var d=$wnd.onbeforeunload;var e=$wnd.onunload;$wnd.onbeforeunload=function(a){var b,c;try{b=OA(Fo)()}finally{c=d&&d(a)}if(b!=null){return b}if(c!=null){return c}};$wnd.onunload=OA(function(a){try{vo&&Gg((!wo&&(wo=new Oo),wo))}finally{e&&e(a);$wnd.onresize=null;$wnd.onscroll=null;$wnd.onbeforeunload=null;$wnd.onunload=null}})} +function Fu(a,b,c,d,e){var f,g;f=new ux;g=new ux;b==a.q&&(g.b.b+='<EM class=promoter>',g);b==a.q+a.o.length&&(g.b.b+=IC,g);b==a.u&&(g.b.b+='<EM class=terminator>',g);b==a.u+a.t.length&&(g.b.b+=IC,g);if(d){g.b.b+=LC;nc(g.b,c);g.b.b+=IC;e?(nc(f.b,c),f):qx(f,c.toLowerCase())}else{nc(g.b,c);e?qx(f,c.toLowerCase()):(nc(f.b,c),f)}return new uv(g.b.b,f.b.b)} +function y(a,b){var c,d,e;c=a.r;d=b>=a.t+a.n;if(a.p&&!d){e=(b-a.t)/a.n;ss(a,(1+Math.cos(3.141592653589793+e*3.141592653589793))/2);return a.o&&a.r==c}if(!a.p&&b>=a.t){a.p=true;a.e=uc(a.b.I,PA);a.f=uc(a.b.I,QA);a.b.I.style[RA]=SA;ss(a,(1+Math.cos(3.141592653589793))/2);if(!(a.o&&a.r==c)){return false}}if(d){a.o=false;a.p=false;qs(a);return false}return true} +function qn(a,b){var c,d;if(a.t==b){return}cn(a);for(d=new _y(a.e);d.c<d.e.zb();){c=Wh(Zy(d),28);hu(c.b)}uz(a.e);nn(a);on(a);a.t=b;if(b){b.E&&(on(a),a.c=eo(new Fn(a)));a.b=Hp(b,new vn(a),(!wg&&(wg=new ff),wg));tz(a.e,Gp(b,new xn(a),(qg(),qg(),pg)));tz(a.e,Gp(b,new zn(a),(jg(),jg(),ig)));tz(a.e,Gp(b,new Bn(a),(bg(),bg(),ag)));tz(a.e,Gp(b,new Dn(a),(Xf(),Xf(),Wf)))}} +function vm(){var a;!!$stats&&Bm('com.google.gwt.useragent.client.UserAgentAsserter');a=fu();Ww(sB,a)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (opera) does not match the runtime user.agent value ('+a+'). Expect more errors.\n'),undefined);!!$stats&&Bm('com.google.gwt.user.client.DocumentModeAsserter');bo();!!$stats&&Bm('genex.client.gx.GenexGWT');Tu(new Vu)} +function Ju(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(Ww(a.f,UA)){a.r=UA}else{h=0;l=new ux;for(j=0;j<a.b.c;++j){b=Wh(vz(a.b,j),48);if(b.e){c=Du(a,j);d=Du(a,c.f+1);e=Du(a,d.f+1);f=xv(c)+xv(d)+xv(e);h=e.f;if(Ww(f,lC)){Hu(0,c,d,e);qx(l,pu(f));break}}}g=1;k=h+1;while(k<=a.b.c){i=Du(a,k);m=Du(a,i.f+1);n=Du(a,m.f+1);f=xv(i)+xv(m)+xv(n);if(k+2>=a.b.c)break;k=n.f+1;qx(l,pu(f));Hu(g,i,m,n);if(Ww(pu(f),UA)){Hu(-2,i,m,n);break}++g}a.r=l.b.b}} +function bp(a,b){switch(b){case 'drag':a.ondrag=Yo;break;case 'dragend':a.ondragend=Yo;break;case 'dragenter':a.ondragenter=Xo;break;case 'dragleave':a.ondragleave=Yo;break;case 'dragover':a.ondragover=Xo;break;case 'dragstart':a.ondragstart=Yo;break;case 'drop':a.ondrop=Yo;break;case 'canplaythrough':case 'ended':case 'progress':a.removeEventListener(b,Yo,false);a.addEventListener(b,Yo,false);break;default:throw 'Trying to sink unknown event type '+b;}} +function Au(a,b){var c,d,e,f,g,h;c=new ux;d=new ux;h=new ux;if(Ww(a.e,aC)||Ww(a.d,aC)){for(e=0;e<a.i;++e){h.b.b+=YA;c.b.b+=YA}}if(Ww(a.r,UA)){h.b.b+=FC;c.b.b+=GC}else{for(e=0;e<a.c.length;++e){f=Wh(vz(a.b,e),48);if(f.e){if(f.b==0){break}h.b.b+=YA;c.b.b+=YA}}h.b.b+=HC;qx(c,HC+a.r+'-C\n');if(b!=-1){g=new vx(a.r);f=Wh(vz(a.b,b),48);if(f.b>=0){g=sx(g,f.b*3+3,IC);g=sx(g,f.b*3+f.g+1,JC);g=sx(g,f.b*3+f.g,KC);g=sx(g,f.b*3,LC)}qx(h,g.b.b+MC)}else{qx(h,a.r+MC)}}a.s=h.b.b;qx(d,a.s+XA);return new uv(d.b.b,c.b.b)} +function Oq(a,b){var c,d,e,f;if(b.b||!a.z&&b.c){a.x&&(b.b=true);return}a.V(b);if(b.b){return}d=b.e;c=Lq(a,d);c&&(b.c=true);a.x&&(b.b=true);f=Qo(d.type);switch(f){case 512:case 256:case 128:{((d.keyCode||0)&65535,(d.shiftKey?1:0)|(d.metaKey?8:0)|(d.ctrlKey?2:0)|(d.altKey?4:0),true)||(b.b=true);return}case 4:case 1048576:if(Wn){b.c=true;return}if(!c&&a.n){Mq(a);return}break;case 8:case 64:case 1:case 2:case 4194304:{if(Wn){b.c=true;return}break}case 2048:{e=d.target;if(a.x&&!c&&!!e){e.blur&&e!=$doc.body&&e.blur();b.b=true;return}break}}} +function cp(a,b){Ro();a.__eventBits=b;a.onclick=b&1?Yo:null;a.ondblclick=b&2?Yo:null;a.onmousedown=b&4?Yo:null;a.onmouseup=b&8?Yo:null;a.onmouseover=b&16?Yo:null;a.onmouseout=b&32?Yo:null;a.onmousemove=b&64?Yo:null;a.onkeydown=b&128?Yo:null;a.onkeypress=b&256?Yo:null;a.onkeyup=b&512?Yo:null;a.onchange=b&1024?Yo:null;a.onfocus=b&2048?Yo:null;a.onblur=b&4096?Yo:null;a.onlosecapture=b&8192?Yo:null;a.onscroll=b&16384?Yo:null;a.onload=b&32768?Zo:null;a.onerror=b&65536?Yo:null;a.onmousewheel=b&131072?Yo:null;a.oncontextmenu=b&262144?Yo:null;a.onpaste=b&524288?Yo:null} +function fu(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(sB)!=-1}())return sB;if(function(){return b.indexOf('webkit')!=-1}())return 'safari';if(function(){return b.indexOf(hC)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return b.indexOf(hC)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return 'ie6';if(function(){return b.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'} +function ln(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(!a.s){return}i=dn(b);j=new Wm(i.pageX,i.pageY);k=eb();Sn(a.f,j,k);if(!a.d){e=Tm(j,a.q);c=Kw(e.b);d=Kw(e.c);if(c>5||d>5){Sn(a.k,a.n.b,a.n.c);if(c>d){h=a.t.c.scrollLeft||0;g=_s(a.t);f=Zs(a.t);if(e.b<0&&f<=h){cn(a);return}else if(e.b>0&&g>=h){cn(a);return}}else{n=a.t.c.scrollTop||0;m=$s(a.t);if(e.c<0&&m<=n){cn(a);return}else if(e.c>0&&0>=n){cn(a);return}}a.d=true}}b.b.preventDefault();if(a.d){o=Tm(a.q,a.f.b);p=Vm(a.p,o);at(a.t,ai(p.b));ct(a.t,ai(p.c));l=k-a.n.c;if(l>200&&!!a.o){Sn(a.n,a.o.b,a.o.c);a.o=null}else l>100&&!a.o&&(a.o=new Un(j,k))}} +function Tu(a){a.s=new Kr;a.G=new dt(a.s);vp(a.G);wp(a.G,'genex-scrollpanel');cq(Js(UC),a.G);a.k=new rr;xp(a.k,'genex-dialogbox');a.n=new Qt;Gr(a.k.b,'New DNA Sequence');a.w=new Lr;wp(a.w,'genex-dialogbox-message');a.p=new wt;a.d=new xq('Cancel');xp(a.d,VC);Gp(a.d,new dv(a),(Xe(),Xe(),We));a.y=new xq(TC);xp(a.y,VC);Gp(a.y,new iv(a),We);a.r=new ds;cs(a.r,a.d);cs(a.r,a.y);Pt(a.n,a.w);Pt(a.n,a.p);Pt(a.n,a.r);$q(a.k,a.n);a.F=new xq('Reset DNA Sequence');xp(a.F,VC);Gp(a.F,new lv(a),We);a.x=new xq('Enter New DNA Sequence');xp(a.x,VC);Gp(a.x,new ov(a),We);a.t=new Ir;xp(a.t,'genex-label');a.q=new ds;cs(a.q,a.F);cs(a.q,a.x);cs(a.q,a.t);cq(Js(UC),a.q);Tb((Nb(),Mb),new gv(a))} +function Qo(a){switch(a){case 'blur':return 4096;case 'change':return 1024;case eB:return 1;case uB:return 2;case 'focus':return 2048;case vB:return 128;case wB:return 256;case xB:return 512;case 'load':return 32768;case 'losecapture':return 8192;case fB:return 4;case gB:return 64;case hB:return 32;case iB:return 16;case jB:return 8;case 'scroll':return 16384;case 'error':return 65536;case 'DOMMouseScroll':case yB:return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case oB:return 1048576;case nB:return 2097152;case lB:return 4194304;case kB:return 8388608;case zB:return 16777216;case AB:return 33554432;case BB:return 67108864;default:return -1;}} +function sr(a){var b,c,d;Fq.call(this);this.s=new hs;this.A=new us(this);qc(this.I,$doc.createElement(mB));Pq(this,0,0);Bc(Ac(this.I))[EB]='gwt-PopupPanel';Ac(this.I)[EB]=WB;this.n=false;this.o=false;this.x=true;d=Nh(um,rA,1,['dialogTop','dialogMiddle','dialogBottom']);this.k=new fr(d);wp(this.k,UA);Cp(Bc(Ac(this.I)),'gwt-DecoratedPopupPanel');Qq(this,this.k);Bp(Ac(this.I),WB,false);Bp(this.k.b,'dialogContent',true);Mp(a);this.b=a;c=er(this.k);qc(c,(ys(),zs(this.b.I)));Wp(this,this.b);Bc(Ac(this.I))[EB]='gwt-DialogBox';this.j=Ic($doc);this.c=0;this.d=0;b=new Or(this);Gp(this,b,(kf(),kf(),jf));Gp(this,b,(Kf(),Kf(),Jf));Gp(this,b,(rf(),rf(),qf));Gp(this,b,(Ef(),Ef(),Df));Gp(this,b,(yf(),yf(),xf))} +function Cu(a){var b,c,d,e,f,g,h;b=new ux;c=new ux;f=false;e=new su;if(!(Ww(a.e,aC)||Ww(a.d,aC))){c.b.b+='<\/pre><h3>pre-mRNA: <EM class=exon>Ex<\/EM><EM class=next>o<\/EM><EM class=another>n<\/EM> Intron<\/h3><pre>';b.b.b+='<\/pre><h3>pre-mRNA: EXON intron<\/h3><pre>';if(Ww(a.n,UA)){c.b.b+=FC;b.b.b+=GC}else{for(g=0;g<a.i;++g){c.b.b+=YA;b.b.b+=YA}c.b.b+=BC;b.b.b+=BC;for(g=0;g<a.c.length;++g){d=Wh(vz(a.b,g),48);g!=0?(h=Wh(vz(a.b,g-1),48)):(h=Wh(vz(a.b,0),48));if(d.d){if(!h.e&&d.e){qx(c,PC+ru(e)+QC);f=true}if(h.e&&!d.e){c.b.b+=IC;f=false}if(d.i){c.b.b+=LC;qx(c,xv(d));c.b.b+=IC;f?qx(b,xv(d).toLowerCase()):qx(b,xv(d))}else{qx(c,xv(d));f?qx(b,xv(d)):qx(b,xv(d).toLowerCase())}}}c.b.b+="<\/EM>-3'\n";b.b.b+=RC}}return new uv(c.b.b,b.b.b)} +function zu(a,b){var c,d,e,f,g,h,i,j,k;if(b!=-1){h=Wh(vz(a.b,b),48);h.i=true}e=new ux;d=new ux;f=(k=new ux,k.b.b+='<html><head>',k.b.b+='<style type="text/css">',k.b.b+='EM.selected {font-style: normal; background: blue; color: red}',k.b.b+='EM.promoter {font-style: normal; background: #90FF90; color: black}',k.b.b+='EM.terminator {font-style: normal; background: #FF9090; color: black}',k.b.b+='EM.exon {font-style: normal; background: #FF90FF; color: black}',k.b.b+='EM.next {font-style: normal; background: #FF8C00; color: black}',k.b.b+='EM.another {font-style: normal; background: #FFFF50; color: black}',k.b.b+='<\/style><\/head><body>',new uv(k.b.b,UA));qx(e,f.c);qx(d,f.b);c=yu(a);qx(e,c.c);qx(d,c.b);a.g=wu(c.c);i=Cu(a);qx(e,i.c);qx(d,i.b);g=Bu(a);qx(e,g.c);qx(d,g.b);j=Au(a,b);qx(e,j.c);qx(d,j.b);return new uv(e.b.b,d.b.b)} +function bo(){var a,b,c;b=$doc.compatMode;a=Nh(um,rA,1,[_A]);for(c=0;c<a.length;++c){if(Ww(a[c],b)){return}}a.length==1&&Ww(_A,a[0])&&Ww('BackCompat',b)?"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 <!doctype html> 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> <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').<br>Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} +function Bu(a){var b,c,d,e,f,g,h,i,j;b=new ux;c=new ux;f=false;h=false;e=new su;c.b.b+=NC;b.b.b+=NC;if(!(Ww(a.e,aC)||Ww(a.d,aC))){c.b.b+=OC;b.b.b+=OC}c.b.b+='mRNA and Protein (<font color=blue>previous<\/font>):<\/h3><pre>';b.b.b+='mRNA and Protein (previous on line below):<\/h3><pre>';if(Ww(a.e,aC)||Ww(a.d,aC)){for(g=0;g<a.i;++g){c.b.b+=YA;b.b.b+=YA}}if(Ww(a.f,UA)){c.b.b+=FC;b.b.b+=GC}else{c.b.b+=BC;b.b.b+=BC;for(g=0;g<a.b.c;++g){d=Wh(vz(a.b,g),48);g!=0?(j=Wh(vz(a.b,g-1),48)):(j=Wh(vz(a.b,0),48));g!=a.b.c-1?(i=Wh(vz(a.b,g+1),48)):(i=Wh(vz(a.b,g),48));if(d.e){if(!j.e&&d.e){qx(c,PC+ru(e)+QC);f&&(c.b.b+=KC,c)}if(!d.d&&d.e&&!h){c.b.b+=IC;h=true}if((d.b==0||d.b==-2)&&d.g==0&&d.d){c.b.b+=KC;f=true}if(d.b==1&&d.g==0){c.b.b+=JC;f=false}if(d.b==-1&&j.b==-2){c.b.b+=JC;f=false}if(d.i&&d.d){c.b.b+=LC;qx(c,xv(d));c.b.b+=IC;f?qx(b,xv(d)):qx(b,xv(d).toLowerCase())}else{qx(c,xv(d));f?qx(b,xv(d).toLowerCase()):qx(b,xv(d))}d.e&&!i.e&&(c.b.b+=IC,c)}}c.b.b+=RC;b.b.b+=RC}return new uv(c.b.b,b.b.b)} +function yu(a){var b,c,d,e,f,g,h,i,j,k,l,m;d=new ux;h=new ux;j=false;h.b.b+='<html><h3>DNA: <EM class=promoter>Promoter<\/EM>';h.b.b+='<EM class=terminator>Terminator<\/EM><\/h3><pre>\n';d.b.b+='<h3>DNA: promoter, terminator<\/h3><pre>\n';h.b.b+=CC;d.b.b+=CC;for(k=0;k<a.c.length;k=k+10){k==0?(m=UA):k<100?(m=' '+k):(m=' '+k);nc(h.b,m);nc(d.b,m)}h.b.b+=XA;d.b.b+=XA;h.b.b+=CC;d.b.b+=CC;for(k=0;k<a.c.length;k=k+10){if(k>0){h.b.b+=DC;d.b.b+=DC}}h.b.b+=XA;d.b.b+=XA;i=new ux;f=new ux;g=new ux;e=new ux;b=new ux;c=new ux;for(k=0;k<a.c.length;++k){l=Wh(vz(a.b,k),48);k==a.q&&(j=true);k==a.q+a.o.length&&(j=false);k==a.u&&(j=true);k==a.u+a.t.length&&(j=false);qx(i,Fu(a,k,gx(l.c),l.i,j).c);qx(f,Fu(a,k,EC,l.i,j).c);qx(g,Fu(a,k,wv(l),l.i,j).c);qx(e,Fu(a,k,gx(l.c),l.i,j).b);qx(b,Fu(a,k,EC,l.i,j).b);qx(c,Fu(a,k,wv(l),l.i,j).b)}h.b.b+="5'-<span id='dna-strand'>";qx(h,i.b.b+"<\/EM><\/span>-3'\n "+f.b.b+"<\/EM>\n3'-"+g.b.b);h.b.b+="<\/EM>-5'\n";d.b.b+=BC;qx(d,e.b.b+"-3'\n "+b.b.b+"\n3'-"+c.b.b);d.b.b+="-5'\n";return new uv(h.b.b,d.b.b)} +function _o(){Vo=OA(function(a){if(!Zn(a)){a.stopPropagation();a.preventDefault();return false}return true});Yo=OA(function(a){var b,c=this;while(c&&!(b=c.__listener)){c=c.parentNode}c&&c.nodeType!=1&&(c=null);b&&To(b)&&Yn(a,c,b)});Xo=OA(function(a){a.preventDefault();Yo.call(this,a)});Zo=OA(function(a){this.__gwtLastUnhandledEvent=a.type;Yo.call(this,a)});Wo=OA(function(a){var b=Vo;if(b(a)){var c=Uo;if(c&&c.__listener){if(To(c.__listener)){Yn(a,c,c.__listener);a.stopPropagation()}}}});$wnd.addEventListener(eB,Wo,true);$wnd.addEventListener(uB,Wo,true);$wnd.addEventListener(fB,Wo,true);$wnd.addEventListener(jB,Wo,true);$wnd.addEventListener(gB,Wo,true);$wnd.addEventListener(iB,Wo,true);$wnd.addEventListener(hB,Wo,true);$wnd.addEventListener(yB,Wo,true);$wnd.addEventListener(vB,Vo,true);$wnd.addEventListener(xB,Vo,true);$wnd.addEventListener(wB,Vo,true);$wnd.addEventListener(oB,Wo,true);$wnd.addEventListener(nB,Wo,true);$wnd.addEventListener(lB,Wo,true);$wnd.addEventListener(kB,Wo,true);$wnd.addEventListener(zB,Wo,true);$wnd.addEventListener(AB,Wo,true);$wnd.addEventListener(BB,Wo,true)} +function pu(a){if(Ww(a,'UUU'))return iC;if(Ww(a,'UUC'))return iC;if(Ww(a,'UUA'))return jC;if(Ww(a,'UUG'))return jC;if(Ww(a,'CUU'))return jC;if(Ww(a,'CUC'))return jC;if(Ww(a,'CUA'))return jC;if(Ww(a,'CUG'))return jC;if(Ww(a,'AUU'))return kC;if(Ww(a,'AUC'))return kC;if(Ww(a,'AUA'))return kC;if(Ww(a,lC))return 'Met';if(Ww(a,'GUU'))return mC;if(Ww(a,'GUC'))return mC;if(Ww(a,'GUA'))return mC;if(Ww(a,'GUG'))return mC;if(Ww(a,'UCU'))return nC;if(Ww(a,'UCC'))return nC;if(Ww(a,'UCA'))return nC;if(Ww(a,'UCG'))return nC;if(Ww(a,'CCU'))return oC;if(Ww(a,'CCC'))return oC;if(Ww(a,'CCA'))return oC;if(Ww(a,'CCG'))return oC;if(Ww(a,'ACU'))return pC;if(Ww(a,'ACC'))return pC;if(Ww(a,'ACA'))return pC;if(Ww(a,'ACG'))return pC;if(Ww(a,'GCU'))return qC;if(Ww(a,'GCC'))return qC;if(Ww(a,'GCA'))return qC;if(Ww(a,'GCG'))return qC;if(Ww(a,'UAU'))return rC;if(Ww(a,'UAC'))return rC;if(Ww(a,'UAA'))return UA;if(Ww(a,'UAG'))return UA;if(Ww(a,'CAU'))return sC;if(Ww(a,'CAC'))return sC;if(Ww(a,'CAA'))return tC;if(Ww(a,'CAG'))return tC;if(Ww(a,'AAU'))return uC;if(Ww(a,'AAC'))return uC;if(Ww(a,'AAA'))return vC;if(Ww(a,'AAG'))return vC;if(Ww(a,'GAU'))return wC;if(Ww(a,'GAC'))return wC;if(Ww(a,'GAA'))return xC;if(Ww(a,'GAG'))return xC;if(Ww(a,'UGU'))return yC;if(Ww(a,'UGC'))return yC;if(Ww(a,'UGA'))return UA;if(Ww(a,'UGG'))return 'Trp';if(Ww(a,'CGU'))return zC;if(Ww(a,'CGC'))return zC;if(Ww(a,'CGA'))return zC;if(Ww(a,'CGG'))return zC;if(Ww(a,'AGU'))return nC;if(Ww(a,'AGC'))return nC;if(Ww(a,'AGA'))return zC;if(Ww(a,'AGG'))return zC;if(Ww(a,'GGU'))return AC;if(Ww(a,'GGC'))return AC;if(Ww(a,'GGA'))return AC;if(Ww(a,'GGG'))return AC;return UA} +var UA='',XA='\n',YA=' ',CC=' ',DC=' . |',HC=' N-',tB=')',_C='+',jD=', ',HB='-',RC="-3'\n",MC='-C',$B='0',PB='0px',gC='1',BC="5'-",iD=':',TA=': ',IC='<\/EM>',NC='<\/pre><h3>',JC='<\/u>',PC='<EM class=',LC='<EM class=selected>',FC='<font color=red>none<\/font>\n',KC='<u>',aD='=',QC='>',WC='A',fD='AAAAAAAAAAAAA',lC='AUG',qC='Ala',zC='Arg',uC='Asn',wC='Asp',YC='C',eD='CAAAG',aB='CENTER',_A='CSS1Compat',yC='Cys',XC='G',cD='GGGGG',dD='GUGCG',tC='Gln',xC='Glu',AC='Gly',sC='His',SC='INCORRECT',kC='Ile',bB='JUSTIFY',cB='LEFT',jC='Leu',vC='Lys',FB='Null widget handle. If you are creating a composite, ensure that initWidget() has been called.',TC='OK',iC='Phe',oC='Pro',dB='RIGHT',XB='Selected Base = ',nC='Ser',VA='String',GB='Style names cannot be empty',ZC='T',bD='TATAA',$A='TBODY',ZA='TR',pC='Thr',rC='Tyr',rD='UmbrellaException',mC='Val',gD='You did not make a single base substitution.',AD='[Lcom.google.gwt.dom.client.',vD='[Lcom.google.gwt.user.client.ui.',mD='[Ljava.lang.',cC='absolute',YB='align',TB='cellPadding',SB='cellSpacing',EB='className',eB='click',bC='clip',tD='com.google.gwt.animation.client.',lD='com.google.gwt.core.client.',wD='com.google.gwt.core.client.impl.',zD='com.google.gwt.dom.client.',yD='com.google.gwt.event.dom.client.',BD='com.google.gwt.event.logical.shared.',sD='com.google.gwt.event.shared.',pD='com.google.gwt.i18n.client.',CD='com.google.gwt.text.shared.testing.',DD='com.google.gwt.touch.client.',uD='com.google.gwt.user.client.',GD='com.google.gwt.user.client.impl.',oD='com.google.gwt.user.client.ui.',qD='com.google.web.bindery.event.shared.',uB='dblclick',pB='dir',_B='display',mB='div',WA='function',$C='g',VC='genex-button',nD='genex.client.gx.',FD='genex.client.problems.',ED='genex.client.requirements.',UC='genex_container',AB='gesturechange',BB='gestureend',zB='gesturestart',DB='height',SA='hidden',kD='java.lang.',xD='java.util.',vB='keydown',wB='keypress',xB='keyup',IB='left',rB='ltr',OC='mature-',fB='mousedown',gB='mousemove',hB='mouseout',iB='mouseover',jB='mouseup',yB='mousewheel',hC='msie',aC='none',GC='none\n',PA='offsetHeight',QA='offsetWidth',sB='opera',RA='overflow',WB='popupContent',KB='position',OB='px',dC='px, ',QB='rect(0px, 0px, 0px, 0px)',eC='relative',qB='rtl',LB='table',MB='tbody',VB='td',JB='top',kB='touchcancel',lB='touchend',nB='touchmove',oB='touchstart',UB='tr',hD='value',ZB='verticalAlign',NB='visibility',RB='visible',CB='width',fC='zoom',EC='|';var _,ym={},BA={25:1,27:1},LA={60:1},wA={6:1,9:1,50:1,53:1,54:1},rA={50:1},oA={},GA={46:1},JA={52:1},NA={50:1,57:1},DA={24:1,29:1,37:1,40:1,41:1,43:1,45:1},KA={58:1},HA={11:1,27:1},yA={29:1},zA={47:1,50:1,56:1},sA={50:1,56:1},vA={6:1,8:1,50:1,53:1,54:1},MA={59:1},uA={6:1,7:1,50:1,53:1,54:1},tA={5:1,6:1,50:1,53:1,54:1},CA={23:1,27:1},FA={44:1,50:1,53:1,54:1},pA={4:1,50:1},AA={27:1,36:1},qA={38:1},EA={24:1,29:1,37:1,40:1,41:1,42:1,43:1,45:1},IA={49:1},xA={10:1,50:1,53:1,54:1};zm(1,-1,oA);_.eQ=function s(a){return this===a};_.gC=function t(){return this.cZ};_.hC=function u(){return Ib(this)};_.tS=function v(){return this.cZ.d+'@'+Jw(this.hC())};_.toString=function(){return this.tS()};_.tM=nA;zm(3,1,{});_.n=-1;_.o=false;_.p=false;_.q=null;_.r=-1;_.s=null;_.t=-1;_.u=false;zm(4,1,{},C);_.b=null;zm(5,1,{});zm(6,1,{2:1});zm(7,5,{});var G=null;zm(8,7,{},M);zm(10,1,qA);_.J=function W(){this.c||yz(P,this);this.K()};_.c=false;_.d=0;var P;zm(9,10,qA,X);_.K=function Y(){L(this.b)};_.b=null;zm(11,6,{2:1,3:1},ab);_.b=null;_.c=null;zm(12,1,{},db);zm(17,1,sA);_.L=function kb(){return this.f};_.tS=function lb(){var a,b;a=this.cZ.d;b=this.L();return b!=null?a+TA+b:a};_.f=null;zm(16,17,sA);zm(15,16,sA,mb);zm(14,15,sA,ob);_.L=function ub(){this.d==null&&(this.e=rb(this.c),this.b=this.b+TA+pb(this.c),this.d='('+this.e+') '+tb(this.c)+this.b,undefined);return this.d};_.b=UA;_.c=null;_.d=null;_.e=null;zm(21,1,{});var zb=0,Ab=0,Bb=0,Cb=-1;zm(23,21,{},Ub); +--></script> +<script><!-- +_.b=null;_.c=null;_.d=null;_.e=false;_.f=null;_.g=null;_.i=null;_.j=false;var Mb;zm(24,1,{},_b);_.M=function ac(){this.b.e=true;Qb(this.b);this.b.e=false;return this.b.j=Rb(this.b)};_.b=null;zm(25,1,{},cc);_.M=function dc(){this.b.e&&Zb(this.b.f,1);return this.b.j};_.b=null;zm(31,1,{});zm(32,31,{},pc);_.b=UA;zm(46,1,{50:1,53:1,54:1});_.eQ=function Rc(a){return this===a};_.hC=function Sc(){return Ib(this)};_.tS=function Tc(){return this.b};_.b=null;_.c=0;zm(45,46,tA);var Uc,Vc,Wc,Xc,Yc;zm(47,45,tA,ad);zm(48,45,tA,cd);zm(49,45,tA,ed);zm(50,45,tA,gd);zm(51,46,uA);var id,jd,kd,ld,md;zm(52,51,uA,qd);zm(53,51,uA,sd);zm(54,51,uA,ud);zm(55,51,uA,wd);zm(56,46,vA);var yd,zd,Ad,Bd,Cd;zm(57,56,vA,Gd);zm(58,56,vA,Id);zm(59,56,vA,Kd);zm(60,56,vA,Md);zm(61,46,wA);var Od,Pd,Qd,Rd,Sd;zm(62,61,wA,Wd);zm(63,61,wA,Yd);zm(64,61,wA,$d);zm(65,61,wA,ae);zm(66,46,xA);var ce,de,ee,fe,ge,he,ie,je,ke,le;zm(67,66,xA,pe);zm(68,66,xA,re);zm(69,66,xA,te);zm(70,66,xA,ve);zm(71,66,xA,xe);zm(72,66,xA,ze);zm(73,66,xA,Be);zm(74,66,xA,De);zm(75,66,xA,Fe);zm(81,1,{});_.tS=function Me(){return 'An event type'};_.g=null;zm(80,81,{});_.P=function Oe(){this.f=false;this.g=null};_.f=false;zm(79,80,{});_.O=function Te(){return this.Q()};_.b=null;_.c=null;var Pe=null;zm(78,79,{});zm(77,78,{});zm(76,77,{},Ye);_.N=function Ze(a){Wh(a,11).R(this)};_.Q=function $e(){return We};var We;zm(84,1,{});_.hC=function df(){return this.d};_.tS=function ef(){return 'Event type'};_.d=0;var cf=0;zm(83,84,{},ff);zm(82,83,{12:1},gf);_.b=null;_.c=null;zm(85,77,{},mf);_.N=function nf(a){lf(this,Wh(a,13))};_.Q=function of(){return jf};var jf;zm(86,77,{},tf);_.N=function uf(a){sf(this,Wh(a,14))};_.Q=function vf(){return qf};var qf;zm(87,77,{},zf);_.N=function Af(a){Wh(Wh(a,15),39)};_.Q=function Bf(){return xf};var xf;zm(88,77,{},Ff);_.N=function Gf(a){Wh(Wh(a,16),39)};_.Q=function Hf(){return Df};var Df;zm(89,77,{},Mf);_.N=function Nf(a){Lf(this,Wh(a,17))};_.Q=function Of(){return Jf};var Jf;zm(90,1,{},Sf);_.b=null;zm(93,78,{});var Vf=null;zm(92,93,{},Yf);_.N=function Zf(a){kn(Wh(Wh(a,18),34).b)};_.Q=function $f(){return Wf};var Wf;zm(94,93,{},cg);_.N=function dg(a){kn(Wh(Wh(a,19),33).b)};_.Q=function eg(){return ag};var ag;zm(95,1,{},gg);zm(96,93,{},lg);_.N=function mg(a){kg(this,Wh(a,20))};_.Q=function ng(){return ig};var ig;zm(97,93,{},sg);_.N=function tg(a){rg(this,Wh(a,21))};_.Q=function ug(){return pg};var pg;zm(98,80,{},yg);_.N=function zg(a){xg(this,Wh(a,22))};_.O=function Bg(){return wg};_.b=false;var wg=null;zm(99,80,{},Eg);_.N=function Fg(a){Wh(a,23).S(this)};_.O=function Hg(){return Dg};var Dg=null;zm(100,80,{},Kg);_.N=function Lg(a){Wh(a,25).T(this)};_.O=function Ng(){return Jg};_.b=0;var Jg=null;zm(101,80,{},Rg);_.N=function Sg(a){Qg(Wh(a,26))};_.O=function Ug(){return Pg};var Pg=null;zm(102,1,yA,Zg,$g);_.U=function _g(a){Xg(this,a)};_.b=null;_.c=null;zm(105,1,{});zm(104,105,{});_.b=null;_.c=0;_.d=false;zm(103,104,{},oh);zm(106,1,{28:1},qh);_.b=null;zm(108,15,zA,th);_.b=null;zm(107,108,zA,wh);zm(109,1,{27:1},yh);zm(111,46,{30:1,50:1,53:1,54:1},Hh);var Ch,Dh,Eh,Fh;zm(112,1,{},Jh);_.qI=0;var Ph,Qh;zm(121,1,{});zm(122,1,{},Fm);var Em=null;zm(123,121,{},Im);var Hm=null;zm(124,1,{},Mm);zm(125,1,{},Rm);_.b=0;_.c=0;_.d=null;_.e=null;_.f=null;zm(126,1,{32:1},Wm,Xm);_.eQ=function Ym(a){var b;if(!Yh(a,32)){return false}b=Wh(a,32);return this.b==b.b&&this.c==b.c};_.hC=function Zm(){return ai(this.b)^ai(this.c)};_.tS=function $m(){return 'Point('+this.b+','+this.c+tB};_.b=0;_.c=0;zm(127,1,{},tn);_.b=null;_.c=null;_.d=false;_.g=null;_.i=null;_.o=null;_.p=null;_.q=null;_.s=false;_.t=null;var an=null;zm(128,1,{22:1,27:1},vn);_.b=null;zm(129,1,{21:1,27:1},xn);_.b=null;zm(130,1,{20:1,27:1},zn);_.b=null;zm(131,1,{19:1,27:1,33:1},Bn);_.b=null;zm(132,1,{18:1,27:1,34:1},Dn);_.b=null;zm(133,1,AA,Fn);_.V=function Gn(a){var b;if(1==Qo(a.e.type)){b=new Wm(a.e.clientX||0,a.e.clientY||0);if(gn(this.b,b)||hn(this.b,b)){a.b=true;a.e.stopPropagation();a.e.preventDefault()}}};_.b=null;zm(134,1,{},Jn);_.M=function Kn(){var a,b,c,d,e,f,g;if(this!=this.f.i){In(this);return false}a=cb(this.b);Pm(this.e,a-this.d);this.d=a;Om(this.e,a);e=Lm(this.e);e||In(this);rn(this.f,this.e.e);d=ai(this.e.e.b);c=_s(this.f.t);b=Zs(this.f.t);f=$s(this.f.t);g=ai(this.e.e.c);if((f<=g||0>=g)&&(b<=d||c>=d)){In(this);return false}return e};_.d=0;_.e=null;_.f=null;_.g=null;zm(135,1,BA,Mn);_.T=function Nn(a){In(this.b)};_.b=null;zm(136,1,{},Pn);_.M=function Qn(){var a,b,c;a=eb();b=new _y(this.b.r);while(b.c<b.e.zb()){c=Wh(Zy(b),35);a-c.c>=2500&&$y(b)}return this.b.r.c!=0};_.b=null;zm(137,1,{35:1},Tn,Un);_.b=null;_.c=0;var Vn=null,Wn=null;var co=null;zm(142,80,{},ko);_.N=function lo(a){Wh(a,36).V(this);ho.d=false};_.O=function no(){return go};_.P=function oo(){io(this)};_.b=false;_.c=false;_.d=false;_.e=null;var go=null,ho=null;var po=null;zm(144,1,CA,to);_.S=function uo(a){while((Q(),P).c>0){R(Wh(vz(P,0),38))}};var vo=false,wo=null,xo=0,yo=0,zo=false;zm(146,80,{},Ko);_.N=function Lo(a){bi(a);null.Jb()};_.O=function Mo(){return Io};var Io;zm(147,102,yA,Oo);var Po=false;var Uo=null,Vo=null,Wo=null,Xo=null,Yo=null,Zo=null;zm(151,1,yA);_.X=function gp(a){return decodeURI(a.replace('%23','#'))};_.U=function hp(a){Xg(this.b,a)};_.Y=function ip(a){a=a==null?UA:a;if(!Ww(a,ep==null?UA:ep)){ep=a;Tg(this)}};var ep=UA;zm(152,151,yA,mp);zm(158,1,{40:1,43:1});_.Z=function zp(){return this.I};_.$=function Ap(a){ao(this.I,DB,a)};_._=function Dp(a){ao(this.I,CB,a)};_.tS=function Ep(){if(!this.I){return '(null handle)'}return this.I.outerHTML};_.I=null;zm(157,158,DA);_.ab=function Op(){};_.bb=function Pp(){};_.U=function Qp(a){Ip(this,a)};_.cb=function Rp(){Jp(this)};_.W=function Sp(a){Kp(this,a)};_.db=function Tp(){Lp(this)};_.eb=function Up(){};_.fb=function Vp(){};_.E=false;_.F=0;_.G=null;_.H=null;zm(156,157,DA);_.ab=function Xp(){lq(this,(jq(),hq))};_.bb=function Yp(){lq(this,(jq(),iq))};zm(155,156,DA);_.hb=function aq(){return new au(this.g)};_.gb=function bq(a){return $p(this,a)};zm(154,155,DA);_.gb=function fq(a){return dq(this,a)};zm(159,107,zA,kq);var hq,iq;zm(160,1,{},nq);_.ib=function oq(a){a.cb()};zm(161,1,{},qq);_.ib=function rq(a){a.db()};zm(164,157,DA);_.cb=function vq(){var a;Jp(this);a=this.I.tabIndex;-1==a&&(this.I.tabIndex=0,undefined)};zm(163,164,DA);zm(162,163,DA,xq);zm(165,155,DA);_.e=null;_.f=null;zm(168,156,DA);_.jb=function Hq(){return this.I};_.hb=function Iq(){return new lt(this)};_.gb=function Jq(a){return Dq(this,a)};_.D=null;zm(167,168,DA);_.jb=function Tq(){return Ac(this.I)};_.Z=function Uq(){return Bc(Ac(this.I))};_.kb=function Vq(){Mq(this)};_.V=function Wq(a){a.d&&(a.e,false)&&(a.b=true)};_.fb=function Xq(){this.B&&ts(this.A,false,true)};_.$=function Yq(a){this.p=a;Nq(this);a.length==0&&(this.p=null)};_._=function Zq(a){this.q=a;Nq(this);a.length==0&&(this.q=null)};_.n=false;_.o=false;_.p=null;_.q=null;_.r=null;_.t=null;_.u=false;_.v=false;_.w=-1;_.x=false;_.y=null;_.z=false;_.B=false;_.C=-1;zm(166,167,DA);_.ab=function _q(){Jp(this.k)};_.bb=function ar(){Lp(this.k)};_.hb=function br(){return new lt(this.k)};_.gb=function cr(a){return Dq(this.k,a)};_.k=null;zm(169,168,DA,fr);_.jb=function hr(){return this.b};_.b=null;_.c=null;zm(170,166,DA,rr);_.ab=function tr(){try{Jp(this.k)}finally{Jp(this.b)}};_.bb=function ur(){try{Lp(this.k)}finally{Lp(this.b)}};_.kb=function vr(){mr(this)};_.W=function wr(a){switch(Qo(a.type)){case 4:case 8:case 64:case 16:case 32:if(!this.g&&!nr(this,a)){return}}Kp(this,a)};_.V=function xr(a){var b;b=a.e;!a.b&&Qo(a.e.type)==4&&nr(this,b)&&(b.preventDefault(),undefined);a.d&&(a.e,false)&&(a.b=true)};_.b=null;_.c=0;_.d=0;_.e=0;_.f=0;_.g=false;_.i=null;_.j=0;zm(171,1,BA,zr);_.T=function Ar(a){this.b.j=a.b};_.b=null;zm(175,157,DA);_.b=null;zm(174,175,DA,Ir);zm(173,174,DA,Kr,Lr);zm(172,173,DA,Mr);zm(176,1,{13:1,14:1,15:1,16:1,17:1,27:1,39:1},Or);_.b=null;zm(177,1,{},Rr);_.b=null;_.c=null;_.d=null;var Sr,Tr,Ur;zm(178,1,{});zm(179,178,{},Yr);_.b=null;var Zr;zm(180,1,{},as);_.b=null;zm(181,165,DA,ds);_.gb=function es(a){var b,c;c=Bc(a.I);b=$p(this,a);b&&rc(this.c,c);return b};_.c=null;zm(182,1,BA,hs);_.T=function is(a){gs()};zm(183,1,AA,ks);_.V=function ls(a){Oq(this.b,a)};_.b=null;zm(184,1,{26:1,27:1},ns);_.b=null;zm(185,3,{},us);_.b=null;_.c=false;_.d=false;_.e=0;_.f=-1;_.g=null;_.i=null;_.j=false;zm(186,10,qA,ws);_.K=function xs(){this.b.i=null;x(this.b,eb())};_.b=null;zm(188,154,EA,Gs);var Cs,Ds,Es;zm(189,1,{},Ls);_.ib=function Ms(a){a.E&&a.db()};zm(190,1,CA,Os);_.S=function Ps(a){Is()};zm(191,188,EA,Rs);zm(192,1,{},Xs);var Ts=null;zm(193,168,DA,dt);_.jb=function et(){return this.b};_.cb=function ft(){Jp(this);this.c.__listener=this};_.db=function gt(){this.c.__listener=null;Lp(this)};_.$=function ht(a){ao(this.I,DB,a)};_._=function it(a){ao(this.I,CB,a)};_.b=null;_.c=null;_.d=null;zm(194,1,{},lt);_.lb=function mt(){return this.b};_.mb=function nt(){return kt(this)};_.nb=function ot(){!!this.c&&this.d.gb(this.c)};_.c=null;_.d=null;zm(197,164,DA);_.W=function tt(a){var b;b=Qo(a.type);(b&896)!=0?Kp(this,a):Kp(this,a)};_.eb=function ut(){};zm(196,197,DA);zm(195,196,DA,wt);zm(198,46,FA);var zt,At,Bt,Ct,Dt;zm(199,198,FA,Ht);zm(200,198,FA,Jt);zm(201,198,FA,Lt);zm(202,198,FA,Nt);zm(203,165,DA,Qt);_.gb=function Rt(a){var b,c;c=Bc(a.I);b=$p(this,a);b&&rc(this.e,Bc(c));return b};zm(204,1,{},Yt);_.hb=function Zt(){return new au(this)};_.b=null;_.c=null;_.d=0;zm(205,1,{},au);_.lb=function bu(){return this.b<this.c.d-1};_.mb=function cu(){return _t(this)};_.nb=function du(){if(this.b<0||this.b>=this.c.d){throw new Ew}this.c.c.gb(this.c.b[this.b--])};_.b=-1;_.c=null;zm(209,1,{},iu);_.b=null;_.c=null;_.d=null;zm(210,1,GA,ku);_.ob=function lu(){fh(this.b,this.d,this.c)};_.b=null;_.c=null;_.d=null;zm(211,1,GA,nu);_.ob=function ou(){hh(this.b,this.d,this.c)};_.b=null;_.c=null;_.d=null;zm(213,1,{},su);_.b=0;zm(214,1,{},uu);_.b=0;_.c=0;_.d=0;zm(215,1,{},Ku);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;_.g=0;_.i=0;_.j=0;_.k=null;_.n=null;_.o=null;_.p=0;_.q=0;_.r=null;_.s=null;_.t=null;_.u=0;zm(216,1,{},Vu);_.pb=function Wu(a){var b,c;if(a==39){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1);b=Ru(this,this.b,this.e);Uu(this,b,this.e);this.c=b.c.c.length;b.c.g+1;Mu(this)}if(a==37){--this.e;this.e<0&&(this.e=0);b=Ru(this,this.b,this.e);Uu(this,b,this.e);this.c=b.c.c.length;b.c.g+1;Mu(this)}if(a==8||a==46){this.B=this.f;c=new vx(this.b);rx(c,this.e);this.b=c.b.b;this.e>=0&&--this.e;b=Ru(this,this.b,this.e);Uu(this,b,this.e);this.f=Eu(b.c);this.c=b.c.c.length;Mu(this)}};_.qb=function Xu(a,b){var c,d;if(Ww(a,WC)||Ww(a,XC)||Ww(a,YC)||Ww(a,ZC)){this.B=this.f;d=new vx(this.b);sx(d,this.e,a);this.b=d.b.b;++this.e;c=Ru(this,this.b,this.e);Uu(this,c,this.e);this.f=Eu(c.c);this.c=c.c.c.length;c.c.g+1;Mu(this)}if(Ww(a,'a')||Ww(a,$C)||Ww(a,'c')||Ww(a,'t')){this.B=this.f;d=new vx(this.b);tx(d,this.e,this.e+1,a.toUpperCase());this.b=d.b.b;c=Ru(this,this.b,this.e);Uu(this,c,this.e);this.f=Eu(c.c);this.c=c.c.c.length;c.c.g+1;Mu(this)}if(Ww(a,_C)||Ww(a,HB)||Ww(a,aD)||Ww(a,'_')){if(Ww(a,_C)||Ww(a,aD)){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1)}else{--this.e;this.e<0&&(this.e=0)}c=Ru(this,this.b,this.e);Uu(this,c,this.e);this.c=c.c.c.length;c.c.g+1;Mu(this)}if(b==39){++this.e;this.e>this.b.length-1&&(this.e=this.b.length-1);c=Ru(this,this.b,this.e);Uu(this,c,this.e);this.c=c.c.c.length;c.c.g+1;Mu(this)}if(b==37){--this.e;this.e<0&&(this.e=0);c=Ru(this,this.b,this.e);Uu(this,c,this.e);this.c=c.c.c.length;c.c.g+1;Mu(this)}};_.rb=function Yu(a){var b;if(a>=0&&a<=this.c){b=Ru(this,this.b,a);Uu(this,b,a);this.c=b.c.c.length;this.e=a;Mu(this)}};_.sb=function $u(a){var b;a!=null&&rv(this.z,a);this.z.f=bD;this.z.i=cD;this.z.d=dD;this.z.c=eD;this.z.e=fD;this.g=this.z.b;this.b=this.z.b;this.c=this.b.length;this.D=this.z.f;this.E=this.z.g;this.H=this.z.i;this.v=this.z.d;this.u=this.z.c;this.A=this.z.e;(Ww(this.v,aC)||Ww(this.u,aC))&&(this.A=UA);b=Ru(this,this.g,-1);this.i=b.c.f;this.j=b.c.r;this.c=b.c.c.length;this.f=Eu(b.c);Jr(this.s,b.b.c+'<\/pre><\/body><\/html>')};_.tb=function av(a){var b,c,d,e,f;this.C=new Iv;if(a==1){b=new ew;b.c=gD;Gv(this.C,b);d=new bw;d.c='Your change does not make the mature mRNA shorter.';Gv(this.C,d)}else if(a==2){b=new ew;b.c=gD;Gv(this.C,b);d=new Ov;d.c='Your change does not make the protein longer.';Gv(this.C,d)}else if(a==3){b=new ew;b.c=gD;Gv(this.C,b);d=new $v;d.c='Your change does not make the protein shorter.';Gv(this.C,d)}else if(a==4){b=new ew;b.c=gD;Gv(this.C,b);d=new Uv;d.c='Your change does not prevent mRNA from being made.';Gv(this.C,d);f=new Rv;f.c='Your change does not prevent protein from being made';Gv(this.C,f)}else if(a==5){c=new Xv;c.b=c.b;c.c='Your protein does not have 5 amino acids.';Gv(this.C,c);e=new Lv;e.b=1;e.c='Your gene does not contain one intron.';Gv(this.C,e)}};_.b=null;_.c=0;_.d=null;_.e=0;_.f=UA;_.g=null;_.i=UA;_.j=UA;_.k=null;_.n=null;_.o=false;_.p=null;_.q=null;_.r=null;_.s=null;_.t=null;_.u=null;_.v=null;_.w=null;_.x=null;_.y=null;_.A=null;_.B=UA;_.C=null;_.D=null;_.E=0;_.F=null;_.G=null;_.H=null;_.I=null;zm(217,1,HA,dv);_.R=function ev(a){mr(this.b.k);this.b.p.I[hD]=UA};_.b=null;zm(218,1,{},gv);_.b=null;zm(219,1,HA,iv);_.R=function jv(a){var b,c;this.b.B=this.b.f;c=vc(this.b.p.I,hD);c=c.toUpperCase();c=$w(c,'[^AGCT]',UA);this.b.b=c;this.b.e=-1;b=Ru(this.b,this.b.b,-1);Uu(this.b,b,-1);this.b.f=Eu(b.c);this.b.c=b.c.c.length;mr(this.b.k);Mu(this.b)};_.b=null;zm(220,1,HA,lv);_.R=function mv(a){var b;this.b.b=this.b.g;b=Ru(this.b,this.b.b,-1);Uu(this.b,b,-1);this.b.f=Eu(b.c);this.b.c=b.c.c.length;Mu(this.b)};_.b=null;zm(221,1,HA,ov);_.R=function pv(a){Kq(this.b.k)};_.b=null;zm(222,1,{},sv);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;_.g=0;_.i=null;zm(223,1,{},uv);_.b=null;_.c=null;zm(224,1,{48:1},yv);_.b=0;_.c=0;_.d=false;_.e=false;_.f=0;_.g=0;_.i=false;zm(225,1,{},Av);_.b=null;_.c=null;zm(226,1,{},Dv);_.tS=function Ev(){return Cv(this)};_.b=null;_.c=0;_.d=null;_.e=null;_.f=0;_.g=null;_.i=null;_.j=null;zm(227,1,{},Iv);_.b=null;zm(229,1,IA);_.c='unassigned';zm(228,229,IA,Lv);_.ub=function Mv(a){return a.c==this.b+1};_.b=0;zm(230,229,IA,Ov);_.ub=function Pv(a){return a.d.length>a.j.length};zm(231,229,IA,Rv);_.ub=function Sv(a){return Ww(a.d,UA)};zm(232,229,IA,Uv);_.ub=function Vv(a){return Ww(a.e,UA)};zm(233,229,IA,Xv);_.ub=function Yv(a){return a.d.length==this.b};_.b=0;zm(234,229,IA,$v);_.ub=function _v(a){return a.d.length<a.j.length};zm(235,229,IA,bw);_.ub=function cw(a){return a.e.length<a.i.length};zm(236,229,IA,ew);_.ub=function fw(a){var b,c,d,e;e=a.g;b=a.b;if(e.length!=b.length)return false;d=0;for(c=0;c<e.length;++c){e.charCodeAt(c)!=b.charCodeAt(c)&&++d}if(d==1)return true;return false};zm(237,15,sA,hw);zm(238,1,{50:1,51:1,53:1},mw);_.eQ=function nw(a){return Yh(a,51)&&Wh(a,51).b==this.b};_.hC=function ow(){return this.b?1231:1237};_.tS=function pw(){return this.b?'true':'false'};_.b=false;var jw,kw;zm(239,1,{},rw);_.tS=function yw(){return ((this.b&2)!=0?'interface ':(this.b&1)!=0?UA:'class ')+this.d};_.b=0;_.c=0;_.d=null;zm(240,15,sA,Aw);zm(241,15,sA,Cw);zm(242,15,sA,Ew,Fw);zm(243,15,sA,Hw,Iw);zm(247,15,sA,Nw,Ow);var Pw;zm(249,1,{50:1,55:1},Sw);_.tS=function Tw(){return this.b+'.'+this.d+'(Unknown Source'+(this.c>=0?iD+this.c:UA)+tB};_.b=null;_.c=0;_.d=null;_=String.prototype;_.cM={1:1,50:1,52:1,53:1};_.eQ=function ex(a){return Ww(this,a)};_.hC=function fx(){return mx(this)};_.tS=_.toString;var hx,ix=0,jx;zm(251,1,JA,ux,vx);_.tS=function wx(){return this.b.b};zm(252,1,JA,zx);_.tS=function Ax(){return this.b.b};zm(253,15,sA,Cx);zm(254,1,{});_.vb=function Gx(a){throw new Cx('Add not supported on this collection')};_.wb=function Hx(a){var b;b=Ex(this.hb(),a);return !!b};_.xb=function Ix(){return this.zb()==0};_.yb=function Jx(a){var b;b=Ex(this.hb(),a);if(b){b.nb();return true}else{return false}};_.tS=function Kx(){return Fx(this)};zm(256,1,KA);_.eQ=function Ox(a){var b,c,d,e,f;if(a===this){return true}if(!Yh(a,58)){return false}e=Wh(a,58);if(this.e!=e.e){return false}for(c=new uy((new my(e)).b);Yy(c.b);){b=c.c=Wh(Zy(c.b),59);d=b.Bb();f=b.Cb();if(!(d==null?this.d:Yh(d,1)?iD+Wh(d,1) in this.f:Yx(this,d,~~xb(d)))){return false}if(!mA(f,d==null?this.c:Yh(d,1)?Xx(this,Wh(d,1)):Wx(this,d,~~xb(d)))){return false}}return true};_.hC=function Px(){var a,b,c;c=0;for(b=new uy((new my(this)).b);Yy(b.b);){a=b.c=Wh(Zy(b.b),59);c+=a.hC();c=~~c}return c};_.tS=function Qx(){var a,b,c,d;d='{';a=false;for(c=new uy((new my(this)).b);Yy(c.b);){b=c.c=Wh(Zy(c.b),59);a?(d+=jD):(a=true);d+=UA+b.Bb();d+=aD;d+=UA+b.Cb()}return d+'}'};zm(255,256,KA);_.Ab=function gy(a,b){return _h(a)===_h(b)||a!=null&&wb(a,b)};_.b=null;_.c=null;_.d=false;_.e=0;_.f=null;zm(258,254,LA);_.eQ=function jy(a){var b,c,d;if(a===this){return true}if(!Yh(a,60)){return false}c=Wh(a,60);if(c.zb()!=this.zb()){return false}for(b=c.hb();b.lb();){d=b.mb();if(!this.wb(d)){return false}}return true};_.hC=function ky(){var a,b,c;a=0;for(b=this.hb();b.lb();){c=b.mb();if(c!=null){a+=xb(c);a=~~a}}return a};zm(257,258,LA,my);_.wb=function ny(a){return ly(this,a)};_.hb=function oy(){return new uy(this.b)};_.yb=function py(a){var b;if(ly(this,a)){b=Wh(a,59).Bb();cy(this.b,b);return true}return false};_.zb=function qy(){return this.b.e};_.b=null;zm(259,1,{},uy);_.lb=function vy(){return Yy(this.b)};_.mb=function wy(){return sy(this)};_.nb=function xy(){ty(this)};_.b=null;_.c=null;_.d=null;zm(261,1,MA);_.eQ=function Ay(a){var b;if(Yh(a,59)){b=Wh(a,59);if(mA(this.Bb(),b.Bb())&&mA(this.Cb(),b.Cb())){return true}}return false};_.hC=function By(){var a,b;a=0;b=0;this.Bb()!=null&&(a=xb(this.Bb()));this.Cb()!=null&&(b=xb(this.Cb()));return a^b};_.tS=function Cy(){return this.Bb()+aD+this.Cb()};zm(260,261,MA,Dy);_.Bb=function Ey(){return null};_.Cb=function Fy(){return this.b.c};_.Db=function Gy(a){return ay(this.b,a)};_.b=null;zm(262,261,MA,Iy);_.Bb=function Jy(){return this.b};_.Cb=function Ky(){return Xx(this.c,this.b)};_.Db=function Ly(a){return by(this.c,this.b,a)};_.b=null;_.c=null;zm(263,254,{57:1});_.Eb=function Ny(a,b){throw new Cx('Add not supported on this list')};_.vb=function Oy(a){this.Eb(this.zb(),a);return true};_.eQ=function Qy(a){var b,c,d,e,f;if(a===this){return true}if(!Yh(a,57)){return false}f=Wh(a,57);if(this.zb()!=f.zb()){return false}d=new _y(this);e=f.hb();while(d.c<d.e.zb()){b=Zy(d);c=Zy(e);if(!(b==null?c==null:wb(b,c))){return false}}return true};_.hC=function Ry(){var a,b,c;b=1;a=new _y(this);while(a.c<a.e.zb()){c=Zy(a);b=31*b+(c==null?0:xb(c));b=~~b}return b};_.hb=function Ty(){return new _y(this)};_.Gb=function Uy(){return new fz(this,0)};_.Hb=function Vy(a){return new fz(this,a)};_.Ib=function Wy(a){throw new Cx('Remove not supported on this list')};zm(264,1,{},_y);_.lb=function az(){return Yy(this)};_.mb=function bz(){return Zy(this)};_.nb=function cz(){$y(this)};_.c=0;_.d=-1;_.e=null;zm(265,264,{},fz);_.b=null;zm(266,258,LA,iz);_.wb=function jz(a){return Ux(this.b,a)};_.hb=function kz(){return hz(this)};_.zb=function lz(){return this.c.b.e};_.b=null;_.c=null;zm(267,1,{},oz);_.lb=function pz(){return Yy(this.b.b)};_.mb=function qz(){return nz(this)};_.nb=function rz(){ty(this.b)};_.b=null;zm(268,263,NA,Az);_.Eb=function Bz(a,b){(a<0||a>this.c)&&Sy(a,this.c);Kz(this.b,a,0,b);++this.c};_.vb=function Cz(a){return tz(this,a)};_.wb=function Dz(a){return wz(this,a,0)!=-1};_.Fb=function Ez(a){return vz(this,a)};_.xb=function Fz(){return this.c==0};_.Ib=function Gz(a){return xz(this,a)};_.yb=function Hz(a){return yz(this,a)};_.zb=function Iz(){return this.c};_.c=0;var Lz;zm(270,263,NA,Oz);_.wb=function Pz(a){return false};_.Fb=function Qz(a){throw new Hw};_.zb=function Rz(){return 0};zm(271,255,{50:1,58:1},Uz);zm(272,258,{50:1,60:1},Zz);_.vb=function $z(a){return Wz(this,a)};_.wb=function _z(a){return Ux(this.b,a)};_.xb=function aA(){return this.b.e==0};_.hb=function bA(){return hz(Nx(this.b))};_.yb=function cA(a){return Yz(this,a)};_.zb=function dA(){return this.b.e};_.tS=function eA(){return Fx(Nx(this.b))};_.b=null;zm(273,261,MA,gA);_.Bb=function hA(){return this.b};_.Cb=function iA(){return this.c};_.Db=function jA(a){var b;b=this.c;this.c=a;return b};_.b=null;_.c=null;zm(274,15,sA,lA);var OA=Fb;var Il=tw(kD,'Object',1),mi=tw(lD,'JavaScriptObject$',18),sm=sw(mD,'Object;',276),Ol=tw(kD,'Throwable',17),Dl=tw(kD,'Exception',16),Jl=tw(kD,'RuntimeException',15),Kl=tw(kD,'StackTraceElement',249),tm=sw(mD,'StackTraceElement;',277),yj=tw('com.google.gwt.lang.','SeedUtil',118),Cl=tw(kD,'Enum',46),il=tw(nD,'GenexGWT',216),el=tw(nD,'GenexGWT$1',217),fl=tw(nD,'GenexGWT$2',219),gl=tw(nD,'GenexGWT$3',220),hl=tw(nD,'GenexGWT$4',221),dl=tw(nD,'GenexGWT$1DeferredCommand',218),ni=tw(lD,'Scheduler',21),zl=tw(kD,'Boolean',238),im=sw(UA,'[C',278),Bl=tw(kD,'Class',239),Nl=tw(kD,VA,2),um=sw(mD,'String;',279),Al=tw(kD,'ClassCastException',240),Ml=tw(kD,'StringBuilder',252),yl=tw(kD,'ArrayStoreException',237),li=tw(lD,'JavaScriptException',14),Jk=tw(oD,'UIObject',158),Tk=tw(oD,'Widget',157),qk=tw(oD,'LabelBase',175),rk=tw(oD,'Label',174),lk=tw(oD,'HTML',173),mk=tw(oD,'HasHorizontalAlignment$AutoHorizontalAlignmentConstant',178),nk=tw(oD,'HasHorizontalAlignment$HorizontalAlignmentConstant',179),xj=uw(pD,'HasDirection$Direction',111,Ih),pm=sw('[Lcom.google.gwt.i18n.client.','HasDirection$Direction;',280),sk=tw(oD,'Panel',156),Gk=tw(oD,'SimplePanel',168),Ek=tw(oD,'ScrollPanel',193),Fk=tw(oD,'SimplePanel$1',194),ck=tw(oD,'ComplexPanel',155),Xj=tw(oD,'AbsolutePanel',154),_k=tw(qD,rD,108),vj=tw(sD,rD,107),$j=tw(oD,'AttachDetachException',159),Yj=tw(oD,'AttachDetachException$1',160),Zj=tw(oD,'AttachDetachException$2',161),Ck=tw(oD,'RootPanel',188),Bk=tw(oD,'RootPanel$DefaultRootPanel',191),zk=tw(oD,'RootPanel$1',189),Ak=tw(oD,'RootPanel$2',190),yk=tw(oD,'PopupPanel',167),dk=tw(oD,'DecoratedPopupPanel',166),ik=tw(oD,'DialogBox',170),gk=tw(oD,'DialogBox$CaptionImpl',172),hk=tw(oD,'DialogBox$MouseHandler',176),fk=tw(oD,'DialogBox$1',171),ji=tw(tD,'Animation',3),xk=tw(oD,'PopupPanel$ResizeAnimation',185),Sj=tw(uD,'Timer',10),wk=tw(oD,'PopupPanel$ResizeAnimation$1',186),tk=tw(oD,'PopupPanel$1',182),uk=tw(oD,'PopupPanel$3',183),vk=tw(oD,'PopupPanel$4',184),ci=tw(tD,'Animation$1',4),ii=tw(tD,'AnimationScheduler',5),di=tw(tD,'AnimationScheduler$AnimationHandle',6),Rj=tw(uD,'Timer$1',144),Wk=tw(qD,'Event',81),rj=tw(sD,'GwtEvent',80),Qj=tw(uD,'Event$NativePreviewEvent',142),Uk=tw(qD,'Event$Type',84),qj=tw(sD,'GwtEvent$Type',83),bk=tw(oD,'CellPanel',165),Qk=tw(oD,'VerticalPanel',203),ok=tw(oD,'HasVerticalAlignment$VerticalAlignmentConstant',180),kk=tw(oD,'FocusWidget',164),Pk=tw(oD,'ValueBoxBase',197),Hk=tw(oD,'TextBoxBase',196),Ik=tw(oD,'TextBox',195),Ok=uw(oD,'ValueBoxBase$TextAlignment',198,Ft),qm=sw(vD,'ValueBoxBase$TextAlignment;',281),Kk=uw(oD,'ValueBoxBase$TextAlignment$1',199,null),Lk=uw(oD,'ValueBoxBase$TextAlignment$2',200,null),Mk=uw(oD,'ValueBoxBase$TextAlignment$3',201,null),Nk=uw(oD,'ValueBoxBase$TextAlignment$4',202,null),wj=tw(pD,'AutoDirectionHandler',109),_j=tw(oD,'ButtonBase',163),ak=tw(oD,'Button',162),pk=tw(oD,'HorizontalPanel',181),si=tw(wD,'StringBufferImpl',31),jl=tw(nD,'GenexParams',222),am=tw(xD,'AbstractMap',256),Vl=tw(xD,'AbstractHashMap',255),em=tw(xD,'HashMap',271),Ql=tw(xD,'AbstractCollection',254),bm=tw(xD,'AbstractSet',258),Sl=tw(xD,'AbstractHashMap$EntrySet',257),Rl=tw(xD,'AbstractHashMap$EntrySetIterator',259),_l=tw(xD,'AbstractMapEntry',261),Tl=tw(xD,'AbstractHashMap$MapEntryNull',260),Ul=tw(xD,'AbstractHashMap$MapEntryString',262),$l=tw(xD,'AbstractMap$1',266),Zl=tw(xD,'AbstractMap$1$1',267),fm=tw(xD,'HashSet',272),Zi=tw(yD,'DomEvent',79),$i=tw(yD,'HumanInputEvent',78),aj=tw(yD,'MouseEvent',77),Xi=tw(yD,'ClickEvent',76),Yi=tw(yD,'DomEvent$Type',82),ek=tw(oD,'DecoratorPanel',169),qi=tw(wD,'SchedulerImpl',23),oi=tw(wD,'SchedulerImpl$Flusher',24),pi=tw(wD,'SchedulerImpl$Rescuer',25),ri=tw(wD,'StringBufferImplAppend',32),ki=tw(lD,'Duration',12),Wi=uw(zD,'Style$Unit',66,ne),om=sw(AD,'Style$Unit;',282),xi=uw(zD,'Style$Display',45,$c),km=sw(AD,'Style$Display;',283),Ci=uw(zD,'Style$Overflow',51,od),lm=sw(AD,'Style$Overflow;',284),Hi=uw(zD,'Style$Position',56,Ed),mm=sw(AD,'Style$Position;',285),Mi=uw(zD,'Style$TextAlign',61,Ud),nm=sw(AD,'Style$TextAlign;',286),Ni=uw(zD,'Style$Unit$1',67,null),Oi=uw(zD,'Style$Unit$2',68,null),Pi=uw(zD,'Style$Unit$3',69,null),Qi=uw(zD,'Style$Unit$4',70,null),Ri=uw(zD,'Style$Unit$5',71,null),Si=uw(zD,'Style$Unit$6',72,null),Ti=uw(zD,'Style$Unit$7',73,null),Ui=uw(zD,'Style$Unit$8',74,null),Vi=uw(zD,'Style$Unit$9',75,null),ti=uw(zD,'Style$Display$1',47,null),ui=uw(zD,'Style$Display$2',48,null),vi=uw(zD,'Style$Display$3',49,null),wi=uw(zD,'Style$Display$4',50,null),yi=uw(zD,'Style$Overflow$1',52,null),zi=uw(zD,'Style$Overflow$2',53,null),Ai=uw(zD,'Style$Overflow$3',54,null),Bi=uw(zD,'Style$Overflow$4',55,null),Di=uw(zD,'Style$Position$1',57,null),Ei=uw(zD,'Style$Position$2',58,null),Fi=uw(zD,'Style$Position$3',59,null),Gi=uw(zD,'Style$Position$4',60,null),Ii=uw(zD,'Style$TextAlign$1',62,null),Ji=uw(zD,'Style$TextAlign$2',63,null),Ki=uw(zD,'Style$TextAlign$3',64,null),Li=uw(zD,'Style$TextAlign$4',65,null),jk=tw(oD,'DirectionalTextHelper',177),Pl=tw(kD,'UnsupportedOperationException',253),Fl=tw(kD,'IllegalStateException',242),Tj=tw(uD,'Window$ClosingEvent',146),tj=tw(sD,'HandlerManager',102),Uj=tw(uD,'Window$WindowHandlers',147),Vk=tw(qD,'EventBus',105),$k=tw(qD,'SimpleEventBus',104),sj=tw(sD,'HandlerManager$Bus',103),Xk=tw(qD,'SimpleEventBus$1',209),Yk=tw(qD,'SimpleEventBus$2',210),Zk=tw(qD,'SimpleEventBus$3',211),Sk=tw(oD,'WidgetCollection',204),rm=sw(vD,'Widget;',287),Rk=tw(oD,'WidgetCollection$WidgetIterator',205),Hl=tw(kD,'NullPointerException',247),El=tw(kD,'IllegalArgumentException',241),Dk=tw(oD,'ScrollImpl',192),Ll=tw(kD,'StringBuffer',251),nj=tw(BD,'CloseEvent',99),mj=tw(BD,'AttachEvent',98),_i=tw(yD,'MouseDownEvent',85),ej=tw(yD,'MouseUpEvent',89),bj=tw(yD,'MouseMoveEvent',86),dj=tw(yD,'MouseOverEvent',88),cj=tw(yD,'MouseOutEvent',87),zj=tw('com.google.gwt.text.shared.','AbstractRenderer',121),Bj=tw(CD,'PassthroughRenderer',123),Aj=tw(CD,'PassthroughParser',122),fj=tw(yD,'PrivateMap',90),uj=tw(sD,'LegacyHandlerWrapper',106),Pj=tw(DD,'TouchScroller',127),Oj=tw(DD,'TouchScroller$TemporalPoint',137),Mj=tw(DD,'TouchScroller$MomentumCommand',134),Nj=tw(DD,'TouchScroller$MomentumTouchRemovalCommand',136),Lj=tw(DD,'TouchScroller$MomentumCommand$1',135),Fj=tw(DD,'TouchScroller$1',128),Gj=tw(DD,'TouchScroller$2',129),Hj=tw(DD,'TouchScroller$3',130),Ij=tw(DD,'TouchScroller$4',131),Jj=tw(DD,'TouchScroller$5',132),Kj=tw(DD,'TouchScroller$6',133),hm=tw(xD,'NoSuchElementException',274),gm=tw(xD,'MapEntryImpl',273),Gl=tw(kD,'IndexOutOfBoundsException',243),jj=tw(yD,'TouchEvent',93),lj=tw(yD,'TouchStartEvent',97),ij=tw(yD,'TouchEvent$TouchSupportDetector',95),kj=tw(yD,'TouchMoveEvent',96),hj=tw(yD,'TouchEndEvent',94),gj=tw(yD,'TouchCancelEvent',92),Cj=tw(DD,'DefaultMomentum',124),Dj=tw(DD,'Momentum$State',125),Yl=tw(xD,'AbstractList',263),cm=tw(xD,'ArrayList',268),Wl=tw(xD,'AbstractList$IteratorImpl',264),Xl=tw(xD,'AbstractList$ListIteratorImpl',265),ml=tw(nD,'VisibleGene',225),cl=tw(nD,'Gene',215),ul=tw(ED,'Requirement',229),tl=tw(ED,'ProteinLengthRequirement',233),pl=tw(ED,'IntronNumberRequirement',228),ol=tw(FD,'Problem',227),xl=tw(ED,'SingleMutationRequirement',236),wl=tw(ED,'ShortermRNARequirement',235),ql=tw(ED,'LongerProteinRequirement',230),vl=tw(ED,'ShorterProteinRequirement',234),sl=tw(ED,'NomRNARequirement',232),rl=tw(ED,'NoProteinRequirement',231),oj=tw(BD,'ResizeEvent',100),kl=tw(nD,'HTMLContainer',223),Wj=tw(GD,'HistoryImpl',151),Vj=tw(GD,'HistoryImplTimer',152),ll=tw(nD,'Nucleotide',224),bl=tw(nD,'Exon',214),nl=tw(FD,'GenexState',226),pj=tw(BD,'ValueChangeEvent',101),dm=tw(xD,'Collections$EmptyList',270),al=tw(nD,'ColorSequencer',213),hi=tw(tD,'AnimationSchedulerImpl',7),gi=tw(tD,'AnimationSchedulerImplTimer',8),fi=tw(tD,'AnimationSchedulerImplTimer$AnimationHandleImpl',11),jm=sw('[Lcom.google.gwt.animation.client.','AnimationSchedulerImplTimer$AnimationHandleImpl;',288),ei=tw(tD,'AnimationSchedulerImplTimer$1',9),Ej=tw(DD,'Point',126);$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if ($wnd.genex) $wnd.genex.onScriptLoad(); +--></script></body></html> \ No newline at end of file diff --git a/common/static/js/capa/genex/DF3D3A7FAEE63D711CF2D95BDB3F538C.cache.html b/common/static/js/capa/genex/DF3D3A7FAEE63D711CF2D95BDB3F538C.cache.html new file mode 100644 index 0000000000000000000000000000000000000000..913b90be20059c0c7a5de90cf1ff925c5d88fb52 --- /dev/null +++ b/common/static/js/capa/genex/DF3D3A7FAEE63D711CF2D95BDB3F538C.cache.html @@ -0,0 +1,639 @@ +<html><head><meta charset="UTF-8" /><script>var $gwt_version = "2.5.0";var $wnd = parent;var $doc = $wnd.document;var $moduleName, $moduleBase;var $strongName = 'DF3D3A7FAEE63D711CF2D95BDB3F538C';var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'});</script></head><body><script><!-- +function GA(){} +function Gf(){} +function kf(){} +function kc(){} +function Ub(){} +function zf(){} +function Mf(){} +function Sf(){} +function Zf(){} +function jg(){} +function pg(){} +function yg(){} +function Fg(){} +function Rg(){} +function ch(){} +function Lh(){} +function Wh(){} +function Wm(){} +function Tm(){} +function $m(){} +function go(){} +function yo(){} +function Ho(){} +function zp(){} +function Cp(){} +function Bq(){} +function Eq(){} +function vs(){} +function Zs(){} +function at(){} +function dw(){} +function gw(){} +function jw(){} +function mw(){} +function pw(){} +function sw(){} +function vw(){} +function yw(){} +function Lw(){} +function fA(){} +function fx(){ic()} +function Bw(){ic()} +function Uw(){ic()} +function Yw(){ic()} +function _w(){ic()} +function EA(){ic()} +function Zo(){Yo()} +function mt(){nt()} +function wp(a){pp=a} +function Jp(a,b){a.H=b} +function $e(a,b){a.f=b} +function bf(a,b){a.a=b} +function cf(a,b){a.b=b} +function bn(a,b){a.b=b} +function an(a,b){a.a=b} +function cn(a,b){a.d=b} +function xo(a,b){a.d=b} +function Lv(a,b){a.a=b} +function Lu(){this.a=1} +function Lg(a){this.a=a} +function Xg(a){this.a=a} +function C(a){this.a=a} +function _b(a){this.a=a} +function cc(a){this.a=a} +function Dh(a){this.a=a} +function Jn(a){this.a=a} +function Ln(a){this.a=a} +function Nn(a){this.a=a} +function Pn(a){this.a=a} +function Rn(a){this.a=a} +function Tn(a){this.a=a} +function $n(a){this.a=a} +function bo(a){this.a=a} +function Nr(a){this.a=a} +function as(a){this.a=a} +function ks(a){this.a=a} +function os(a){this.a=a} +function ys(a){this.a=a} +function Bs(a){this.a=a} +function wv(a){this.a=a} +function zv(a){this.a=a} +function Cv(a){this.a=a} +function Fv(a){this.a=a} +function Iv(a){this.a=a} +function Gw(a){this.a=a} +function Fy(a){this.a=a} +function Wy(a){this.a=a} +function Hz(a){this.a=a} +function sz(a){this.d=a} +function Kq(a){this.H=a} +function Uq(a){this.H=a} +function tu(a){this.b=a} +function dg(){this.a={}} +function db(){this.a=eb()} +function tf(){this.c=++qf} +function Nx(){Ix(this)} +function lA(){ky(this)} +function $(a){J(a.b,a)} +function Ix(a){a.a=oc()} +function iq(a,b){_p(b,a)} +function yf(a,b){xr(b.a,a)} +function Ff(a,b){yr(b.a,a)} +function Yf(a,b){zr(b.a,a)} +function xg(a,b){zn(b.a,a)} +function Eg(a,b){An(b.a,a)} +function vt(a,b){Ac(a.b,b)} +function tt(a,b){Rc(a.b,b)} +function $v(a,b){nA(a.a,b)} +function cg(a,b,c){a.a[b]=c} +function X(a){Q();this.a=a} +function Ks(a){Q();this.a=a} +function mb(a){ic();this.e=a} +function nb(a){ic();this.e=a} +function Vb(a){return a.L()} +function Ot(){Ot=GA;Xt()} +function Ms(){Ms=GA;Os()} +function mv(){this.y=new Mv} +function aw(){this.a=new qA} +function qA(){this.a=new lA} +function Vh(){Th();return Ph} +function ld(){kd();return fd} +function Bd(){Ad();return vd} +function Rd(){Qd();return Ld} +function fe(){ee();return _d} +function Ae(){ze();return pe} +function Yt(){Xt();return St} +function Yo(){Yo=GA;Xo=new tf} +function Nb(){Nb=GA;Mb=new Ub} +function dA(){dA=GA;cA=new fA} +function cb(a){return eb()-a.a} +function bg(a,b){return a.a[b]} +function lp(a,b){ep();mp(a,b)} +function Lp(a,b){a.$()[WB]=b} +function xu(a,b){a.style[tC]=b} +function ku(a,b){mu(a,b,a.c)} +function qq(a,b){lq(a,b,a.H)} +function cr(a,b){Sq(a,b);_q(a)} +function fo(a,b,c){a.a=b;a.b=c} +function bh(a){a.a.n&&a.a.lb()} +function Au(a){Ah(a.a,a.c,a.b)} +function Jh(a){Gh.call(this,a)} +function yq(a){Jh.call(this,a)} +function Ww(a){mb.call(this,a)} +function Zw(a){mb.call(this,a)} +function ax(a){mb.call(this,a)} +function gx(a){mb.call(this,a)} +function Vx(a){mb.call(this,a)} +function he(){bd.call(this,vB,0)} +function je(){bd.call(this,wB,1)} +function le(){bd.call(this,xB,2)} +function ne(){bd.call(this,yB,3)} +function bp(){kh.call(this,null)} +function fp(a,b){a.__listener=b} +function po(a,b,c){a.style[b]=c} +function Ac(b,a){b.scrollTop=a} +function dx(a,b){return a>b?a:b} +function Om(a){return new Mm[a]} +function Lt(a){this.H=a;new Lh} +function Er(a){a.f=false;no(a.H)} +function mr(a,b){Sq(a.j,b);_q(a)} +function Xr(a,b){cs(a.a,b,true)} +function Ur(a,b){cs(a.a,b,false)} +function aA(a,b,c){a.splice(b,c)} +function au(){bd.call(this,wB,1)} +function cu(){bd.call(this,xB,2)} +function eu(){bd.call(this,yB,3)} +function $t(){bd.call(this,vB,0)} +function sp(){this.a=new kh(null)} +function nq(){this.f=new pu(this)} +function ab(a,b){this.b=a;this.a=b} +function jh(a,b){return zh(a.a,b)} +function zh(a,b){return ly(a.d,b)} +function oA(a,b){return ly(a.a,b)} +function Wp(a,b){!!a.F&&ih(a.F,b)} +function Mp(a,b){Pp(a.$(),b,true)} +function Mc(a,b){a.innerText=b||lB} +function zc(b,a){b.innerHTML=a||lB} +function oy(b,a){return b.e[qB+a]} +function cx(a){return a<=0?0-a:a} +function Rb(a){return !!a.a||!!a.f} +function Ic(a){a.returnValue=false} +function U(a){$wnd.clearTimeout(a)} +function Ce(){bd.call(this,'PX',0)} +function Ie(){bd.call(this,'EX',3)} +function Ge(){bd.call(this,'EM',2)} +function Qe(){bd.call(this,'CM',7)} +function Se(){bd.call(this,'MM',8)} +function Ke(){bd.call(this,'PT',4)} +function Me(){bd.call(this,'PC',5)} +function Oe(){bd.call(this,'IN',6)} +function Uh(a,b){bd.call(this,a,b)} +function Fr(){Gr.call(this,new $r)} +function bd(a,b){this.a=a;this.b=b} +function jn(a,b){this.a=a;this.b=b} +function ho(a,b){this.a=a;this.b=b} +function Bz(a,b){this.a=a;this.b=b} +function zA(a,b){this.a=a;this.b=b} +function Ov(a,b){this.b=a;this.a=b} +function _y(a,b){this.b=a;this.a=b} +function Uv(a,b){this.b=b;this.a=a} +function Jx(a,b){mc(a.a,b);return a} +function Rx(a,b){mc(a.a,b);return a} +function ko(a,b){sc(a,(Ms(),Ns(b)))} +function Ee(){bd.call(this,'PCT',1)} +function Jd(){bd.call(this,'AUTO',3)} +function nd(){bd.call(this,'NONE',0)} +function kh(a){lh.call(this,a,false)} +function kn(a){jn.call(this,a.a,a.b)} +function Jb(a){$wnd.clearTimeout(a)} +function T(a){$wnd.clearInterval(a)} +function pz(a){return a.b<a.d.zb()} +function qy(b,a){return qB+a in b.e} +function qx(b,a){return b.indexOf(a)} +function mi(a){return a==null?null:a} +function H(){H=GA;var a;a=new M;G=a} +function Q(){Q=GA;P=new Tz;Oo(new Ho)} +function Bh(a){this.d=new lA;this.c=a} +function Ox(a){Ix(this);mc(this.a,a)} +function Dx(){Dx=GA;Ax={};Cx={}} +function ep(){if(!cp){kp();cp=true}} +function Tz(){this.a=Zh(Gm,KA,0,0,0)} +function Kg(a,b){a.a?Gn(b.a):Cn(b.a)} +function Dn(a,b){a.f=b;!b&&(a.g=null)} +function gz(a,b){(a<0||a>=b)&&jz(a,b)} +function gi(a,b){return a.cM&&a.cM[b]} +function bA(a,b,c,d){a.splice(b,c,d)} +function Gn(a){Cn(a);a.b=so(new Tn(a))} +function R(a){a.b?T(a.c):U(a.c);Rz(P,a)} +function Ib(a){return a.$H||(a.$H=++Ab)} +function li(a){return a.tM==GA||fi(a,1)} +function fi(a,b){return a.cM&&!!a.cM[b]} +function dt(){Us.call(this,$doc.body)} +function Tq(){Uq.call(this,Gc($doc,sB))} +function pd(){bd.call(this,'BLOCK',1)} +function Zd(){bd.call(this,'FIXED',3)} +function Fd(){bd.call(this,'HIDDEN',1)} +function rd(){bd.call(this,'INLINE',2)} +function Hd(){bd.call(this,'SCROLL',2)} +function Td(){bd.call(this,'STATIC',0)} +function Dd(){bd.call(this,'VISIBLE',0)} +function Vd(){bd.call(this,'RELATIVE',1)} +function Xd(){bd.call(this,'ABSOLUTE',2)} +function oo(a){jo=a;ep();a.setCapture()} +function Sx(a){this.a=oc();mc(this.a,a)} +function tb(a){return ki(a)?jc(ii(a)):lB} +function nx(b,a){return b.charCodeAt(a)} +function sc(b,a){return b.appendChild(a)} +function tc(b,a){return b.removeChild(a)} +function pA(a,b){return vy(a.a,b)!=null} +function nc(a,b){a[a.explicitLength++]=b} +function xq(){xq=GA;vq=new Bq;wq=new Eq} +function xf(){xf=GA;wf=new uf(AB,new zf)} +function jf(){jf=GA;hf=new uf(zB,new kf)} +function Ef(){Ef=GA;Df=new uf(BB,new Gf)} +function Lf(){Lf=GA;Kf=new uf(CB,new Mf)} +function Rf(){Rf=GA;Qf=new uf(DB,new Sf)} +function Xf(){Xf=GA;Wf=new uf(EB,new Zf)} +function ig(){ig=GA;hg=new uf(FB,new jg)} +function og(){og=GA;ng=new uf(GB,new pg)} +function wg(){wg=GA;vg=new uf(HB,new yg)} +function Dg(){Dg=GA;Cg=new uf(IB,new Fg)} +function eb(){return (new Date).getTime()} +function sb(a){return a==null?null:a.name} +function ji(a,b){return a!=null&&fi(a,b)} +function rx(c,a,b){return c.indexOf(a,b)} +function Ly(a){return a.b=hi(qz(a.a),59)} +function wc(b,a){return parseInt(b[a])||0} +function Lx(a,b,c){return pc(a.a,b,b,c),a} +function pb(a){return ki(a)?qb(ii(a)):a+lB} +function xr(a,b){Cr(a,(a.a,ff(b)),gf(b))} +function yr(a,b){Dr(a,(a.a,ff(b)),gf(b))} +function zr(a,b){Er(a,(a.a,ff(b),gf(b)))} +function J(a,b){Rz(a.a,b);a.a.b==0&&R(a.b)} +function Oz(a,b){gz(b,a.b);return a.a[b]} +function wh(a,b){var c;c=xh(a,b);return c} +function sh(a,b,c){var d;d=vh(a,b);d.vb(c)} +function lh(a,b){this.a=new Bh(b);this.b=a} +function z(a){this.j=new C(this);this.r=a} +function Et(a){this.c=a;this.a=!!this.c.C} +function Bn(a){if(a.a){Au(a.a.a);a.a=null}} +function Cn(a){if(a.b){Au(a.b.a);a.b=null}} +function rn(a){a.r=false;a.c=false;a.g=null} +function Nz(a){a.a=Zh(Gm,KA,0,0,0);a.b=0} +function Tb(a,b){a.a=Wb(a.a,[b,false]);Sb(a)} +function Kx(a,b){return pc(a.a,b,b+1,lB),a} +function Db(a,b,c){return a.apply(b,c);var d} +function Wc(b,a){return b.getElementById(a)} +function zx(a){return String.fromCharCode(a)} +function qb(a){return a==null?null:a.message} +function Pw(a){var b=Mm[a.b];a=null;return b} +function Gz(a){var b;b=Ly(a.a);return b.Bb()} +function rc(a){var b;b=qc(a);nc(a,b);return b} +function Mx(a,b,c,d){pc(a.a,b,c,d);return a} +function Mz(a,b){_h(a.a,a.b++,b);return true} +function qh(a,b){!a.a&&(a.a=new Tz);Mz(a.a,b)} +function hh(a,b,c){return new Dh(rh(a.a,b,c))} +function Fo(a){Eo();return Do?qp(Do,a):null} +function Hc(a,b){a.fireEvent('on'+b.type,b)} +function Bu(a,b,c){this.a=a;this.c=b;this.b=c} +function Du(a,b,c){this.a=a;this.c=b;this.b=c} +function Gu(a,b,c){this.a=a;this.c=b;this.b=c} +function Nu(a,b,c){this.b=a;this.a=b;this.c=c} +function ob(a){ic();this.b=a;this.a=lB;hc(this)} +function Tr(a){this.H=a;this.a=new ds(this.H)} +function M(){this.a=new Tz;this.b=new X(this)} +function Us(a){nq.call(this);this.H=a;Xp(this)} +function Is(a){z.call(this,(H(),G));this.a=a} +function td(){bd.call(this,'INLINE_BLOCK',3)} +function To(){Jo&&Tg((!Ko&&(Ko=new bp),Ko))} +function Tg(a){var b;if(Qg){b=new Rg;a.V(b)}} +function eh(a){var b;if(ah){b=new ch;ih(a.a,b)}} +function Vr(a){Tr.call(this,a,px('span',Lc(a)))} +function pu(a){this.b=a;this.a=Zh(Fm,KA,45,4,0)} +function Qw(a){return typeof a=='number'&&a>0} +function tx(b,a){return b.substr(a,b.length-a)} +function fn(a,b){return new jn(a.a-b.a,a.b-b.b)} +function gn(a,b){return new jn(a.a*b.a,a.b*b.b)} +function hn(a,b){return new jn(a.a+b.a,a.b+b.b)} +function Fn(a,b){tt(a.s,ni(b.a));vt(a.s,ni(b.b))} +function Ar(a){if(a.g){Au(a.g.a);a.g=null}$q(a)} +function Vs(a){Ts();try{a.eb()}finally{pA(Ss,a)}} +function Ts(){Ts=GA;Qs=new Zs;Rs=new lA;Ss=new qA} +function Eo(){Eo=GA;Do=new sp;rp(Do)||(Do=null)} +function ci(){ci=GA;ai=[];bi=[];di(new Wh,ai,bi)} +function qt(a){return gt((!ft&&(ft=new mt),a.b))} +function st(a){return ht((!ft&&(ft=new mt),a.b))} +function Oo(a){Ro();return Po(Qg?Qg:(Qg=new tf),a)} +function xb(a){var b;return b=a,li(b)?b.hC():Ib(b)} +function Zg(a,b){var c;if(Wg){c=new Xg(b);ih(a,c)}} +function Wb(a,b){!a&&(a=[]);a[a.length]=b;return a} +function oc(){var a=[];a.explicitLength=0;return a} +function mc(a,b){a[a.explicitLength++]=b==null?mB:b} +function nA(a,b){var c;c=ry(a.a,b,a);return c==null} +function rq(a,b){var c;c=mq(a,b);c&&sq(b.H);return c} +function ey(a){var b;b=new Fy(a);return new Bz(a,b)} +function Fw(){Fw=GA;Dw=new Gw(false);Ew=new Gw(true)} +function oi(a){if(a!=null){throw new Uw}return null} +function Km(a){if(ji(a,56)){return a}return new ob(a)} +function Gx(){if(Bx==256){Ax=Cx;Cx={};Bx=0}++Bx} +function ds(a){this.a=a;this.b=Mh(a);this.c=this.b} +function kx(a){this.a='Unknown';this.c=a;this.b=-1} +function Gh(a){nb.call(this,Ih(a),Hh(a));this.a=a} +function $r(){Yr.call(this);this.H[WB]='Caption'} +function ki(a){return a!=null&&a.tM!=GA&&!fi(a,1)} +function kA(a,b){return mi(a)===mi(b)||a!=null&&wb(a,b)} +function FA(a,b){return mi(a)===mi(b)||a!=null&&wb(a,b)} +function qp(a,b){return hh(a.a,(!ah&&(ah=new tf),ah),b)} +function Po(a,b){return hh((!Ko&&(Ko=new bp),Ko),a,b)} +function xc(b,a){return b[a]==null?null:String(b[a])} +function $q(a){if(!a.A){return}Hs(a.z,false,false);Tg(a)} +function ky(a){a.a=[];a.e={};a.c=false;a.b=null;a.d=0} +function $u(a,b,c,d){b.a=a;b.f=0;c.a=a;c.f=1;d.a=a;d.f=2} +function Cr(a,b,c){if(!jo){a.f=true;oo(a.H);a.d=b;a.e=c}} +function Ah(a,b,c){a.b>0?qh(a,new Gu(a,b,c)):uh(a,b,c)} +function Vp(a,b,c){return hh(!a.F?(a.F=new kh(a)):a.F,c,b)} +function wb(a,b){var c;return c=a,li(c)?c.eQ(b):c===b} +function Cc(a,b){var c;c=Gc(a,'script');c.text=b;return c} +function Zh(a,b,c,d,e){var f;f=Yh(e,d);$h(a,b,c,f);return f} +function Az(a){var b;b=new Ny(a.b.a);return new Hz(b)} +function dn(a,b){this.c=b;this.d=new kn(a);this.e=new kn(b)} +function Ng(a,b){var c;if(Jg){c=new Lg(b);!!a.F&&ih(a.F,c)}} +function jz(a,b){throw new ax('Index: '+a+', Size: '+b)} +function tn(a){return new jn(Qc(a.s.b),a.s.b.scrollTop||0)} +function Ns(a){return a.__gwt_resolve?a.__gwt_resolve():a} +function rt(a){return (a.b.scrollHeight||0)-a.b.clientHeight} +function sq(a){a.style[$B]=lB;a.style[_B]=lB;a.style[aC]=lB} +function Kp(a){a.H.style[UB]='818px';a.H.style[VB]='325px'} +function vn(a,b){if(a.j.a){return un(b,a.j.a)}return false} +function Qo(a){Ro();So();return Po((!Wg&&(Wg=new tf),Wg),a)} +function sx(c,a,b){b=vx(b);return c.replace(RegExp(a,tD),b)} +function ox(a,b){if(!ji(b,1)){return false}return String(a)==b} +function hi(a,b){if(a!=null&&!gi(a,b)){throw new Uw}return a} +function su(a){if(a.a>=a.b.c){throw new EA}return a.b.a[++a.a]} +function sn(a){var b;b=a.a.touches;return b.length>0?b[0]:null} +function B(a,b){y(a.a,b)?(a.a.p=K(a.a.r,a.a.j)):(a.a.p=null)} +function xz(a){if(a.b<=0){throw new EA}return a.a.Fb(a.c=--a.b)} +function Wn(a){if(a.f){Au(a.f.a);a.f=null}a==a.e.g&&(a.e.g=null)} +function dr(a){if(a.A){return}else a.D&&$p(a);Hs(a.z,true,false)} +function Bc(a){if(uc(a)){return !!a&&a.nodeType==1}return false} +function rz(a){if(a.c<0){throw new Yw}a.d.Ib(a.c);a.b=a.c;a.c=-1} +function yn(a){if(!a.r){return}a.r=false;if(a.c){a.c=false;xn(a)}} +function Ws(){Ts();try{zq(Ss,Qs)}finally{ky(Ss.a);ky(Rs)}} +function gv(a){$wnd.genexSetKeyEvent=fB(function(){sv(a)})} +function ev(a){$wnd.genexSetClickEvent=fB(function(){qv(a)})} +function V(a,b){return $wnd.setTimeout(fB(function(){a.I()}),b)} +function lq(a,b,c){$p(b);ku(a.f,b);sc(c,(Ms(),Ns(b.H)));_p(b,a)} +function ou(a,b){var c;c=lu(a,b);if(c==-1){throw new EA}nu(a,c)} +function ty(a,b){var c;c=a.b;a.b=b;if(!a.c){a.c=true;++a.d}return c} +function Nw(a,b,c){var d;d=new Lw;d.c=a+b;Qw(c)&&Rw(c,d);return d} +function $h(a,b,c,d){ci();ei(d,ai,bi);d.cZ=a;d.cM=b;d.qI=c;return d} +function qc(a){var b=a.join(lB);a.length=a.explicitLength=0;return b} +function Xh(a,b){var c,d;c=a;d=Yh(0,b);$h(c.cZ,c.cM,c.qI,d);return d} +function Gb(a,b,c){var d;d=Eb();try{return Db(a,b,c)}finally{Hb(d)}} +function Pu(a){var b;b=sx(a,'<[^<]*>',lB);return b.indexOf(VC)+4} +function ot(a){var b;Hc(a,(b=$doc.createEventObject(),b.type=NB,b))} +function xy(a){var b;b=a.b;a.b=null;if(a.c){a.c=false;--a.d}return b} +function no(a){!!jo&&a==jo&&(jo=null);ep();a.releaseCapture()} +function Yr(){Vr.call(this,Gc($doc,sB));this.H[WB]='gwt-HTML'} +function Zr(){Yr.call(this);cs(this.a,'Enter new DNA Sequence',true)} +function uc(b){try{return !!b&&!!b.nodeType}catch(a){return false}} +function Yc(a){return Qc(ox(a.compatMode,tB)?a.documentElement:a.body)} +function ni(a){return ~~Math.max(Math.min(a,2147483647),-2147483648)} +function ii(a){if(a!=null&&(a.tM==GA||fi(a,1))){throw new Uw}return a} +function qz(a){if(a.b>=a.d.zb()){throw new EA}return a.d.Fb(a.c=a.b++)} +function Dt(a){if(!a.a||!a.c.C){throw new EA}a.a=false;return a.b=a.c.C} +function wo(a){a.e=false;a.f=null;a.a=false;a.b=false;a.c=true;a.d=null} +function x(a,b){w(a);a.n=true;a.o=false;a.k=200;a.s=b;++a.q;B(a.j,eb())} +function Rc(a,b){a.currentStyle.direction==uB&&(b=-b);a.scrollLeft=b} +function Qz(a,b){var c;c=(gz(b,a.b),a.a[b]);aA(a.a,b,1);--a.b;return c} +function sr(a){var b,c;c=a.b.children[0];b=c.children[1];return Dc(b)} +function Pz(a,b,c){for(;c<a.b;++c){if(FA(b,a.a[c])){return c}}return -1} +function Ec(a){var b=a.parentNode;(!b||b.nodeType!=1)&&(b=null);return b} +function K(a,b){var c;c=new ab(a,b);Mz(a.a,c);a.a.b==1&&S(a.b,16);return c} +function xp(a,b){var c;c=Cc($doc,a);sc($doc.body,c);b.M();tc($doc.body,c)} +function ly(a,b){return b==null?a.c:ji(b,1)?qy(a,hi(b,1)):py(a,b,~~xb(b))} +function my(a,b){return b==null?a.b:ji(b,1)?oy(a,hi(b,1)):ny(a,b,~~xb(b))} +function Kb(){return $wnd.setTimeout(function(){zb!=0&&(zb=0);Cb=-1},10)} +function Hb(a){a&&Pb((Nb(),Mb));--zb;if(a){if(Cb!=-1){Jb(Cb);Cb=-1}}} +function cs(a,b,c){c?zc(a.a,b):Mc(a.a,b);if(a.c!=a.b){a.c=a.b;Nh(a.a,a.b)}} +function _q(a){var b;b=a.C;if(b){a.o!=null&&b._(a.o);a.p!=null&&b.ab(a.p)}} +function Hh(a){var b;b=a.ib();if(!b.mb()){return null}return hi(b.nb(),56)} +function Uo(){var a;if(Jo){a=new Zo;!!Ko&&ih(Ko,a);return null}return null} +function lu(a,b){var c;for(c=0;c<a.c;++c){if(a.a[c]==b){return c}}return -1} +function di(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function ei(a,b,c){ci();for(var d=0,e=b.length;d<e;++d){a[b[d]]=c[d]}} +function wx(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} +function Zq(a,b){var c;c=b.srcElement;if(Bc(c)){return Nc(a.H,c)}return false} +function Rz(a,b){var c;c=Pz(a,b,0);if(c==-1){return false}Qz(a,c);return true} +function uy(e,a,b){var c,d=e.e;a=qB+a;a in d?(c=d[a]):++e.d;d[a]=b;return c} +function Ow(a,b,c,d){var e;e=new Lw;e.c=a+b;Qw(c)&&Rw(c,e);e.a=d?8:0;return e} +function Kc(b){try{return b.getBoundingClientRect().top}catch(a){return 0}} +function Jc(b){try{return b.getBoundingClientRect().left}catch(a){return 0}} +function fv(b){$wnd.genexSetDNASequence=fB(function(a){return b.sb(a)})} +function hv(b){$wnd.genexSetProblemNumber=fB(function(a){return b.tb(a)})} +function uv(a){typeof $wnd.genexStoreAnswer===pB&&$wnd.genexStoreAnswer(a)} +function ms(){ms=GA;new os('bottom');new os('middle');ls=new os(_B)} +function vy(a,b){return b==null?xy(a):ji(b,1)?yy(a,hi(b,1)):wy(a,b,~~xb(b))} +function yz(a,b){var c;this.a=a;this.d=a;c=a.zb();(b<0||b>c)&&jz(b,c);this.b=b} +function uf(a,b){tf.call(this);this.a=b;!af&&(af=new dg);cg(af,a,this);this.b=a} +function Wr(){Tr.call(this,Gc($doc,sB));this.H[WB]='gwt-Label';cs(this.a,nC,false)} +function Tc(a){return (ox(a.compatMode,tB)?a.documentElement:a.body).clientTop} +function Sc(a){return (ox(a.compatMode,tB)?a.documentElement:a.body).clientLeft} +function Vc(a){return (ox(a.compatMode,tB)?a.documentElement:a.body).clientWidth} +function Uc(a){return (ox(a.compatMode,tB)?a.documentElement:a.body).clientHeight} +function Zc(a){return (ox(a.compatMode,tB)?a.documentElement:a.body).scrollTop||0} +function $c(a){return (ox(a.compatMode,tB)?a.documentElement:a.body).scrollWidth||0} +function Xc(a){return (ox(a.compatMode,tB)?a.documentElement:a.body).scrollHeight||0} +function gt(a){return a.currentStyle.direction==uB?0:(a.scrollWidth||0)-a.clientWidth} +function ht(a){return a.currentStyle.direction==uB?a.clientWidth-(a.scrollWidth||0):0} +function Fb(b){return function(){try{return Gb(b,this,arguments)}catch(a){throw a}}} +function ry(a,b,c){return b==null?ty(a,c):ji(b,1)?uy(a,hi(b,1),c):sy(a,b,c,~~xb(b))} +function rb(a){var b;return a==null?mB:ki(a)?sb(ii(a)):ji(a,1)?nB:(b=a,li(b)?b.cZ:zi).c} +function Ob(a){var b,c;if(a.b){c=null;do{b=a.b;a.b=null;c=Yb(b,c)}while(a.b);a.b=c}} +function Pb(a){var b,c;if(a.c){c=null;do{b=a.c;a.c=null;c=Yb(b,c)}while(a.c);a.c=c}} +function mo(a){var b;b=Ao(ro,a);if(!b&&!!a){a.cancelBubble=true;Ic(a)}return b} +function yy(d,a){var b,c=d.e;a=qB+a;if(a in c){b=c[a];--d.d;delete c[a]}return b} +function Br(a,b){var c;c=b.srcElement;if(Bc(c)){return Nc(Ec(sr(a.j)),c)}return false} +function Xu(a){var b;b=a.r;b=sx(b,eD,lB);b=sx(b,bD,lB);b=sx(b,dD,lB);return sx(b,cD,lB)} +function Dc(a){var b=a.firstChild;while(b&&b.nodeType!=1)b=b.nextSibling;return b} +function Mw(a,b,c){var d;d=new Lw;d.c=a+b;Qw(c!=0?-c:0)&&Rw(c!=0?-c:0,d);d.a=4;return d} +function lo(a,b,c){var d;d=io;io=a;b==jo&&dp(a.type)==8192&&(jo=null);c.X(a);io=d} +function Qb(a){var b;if(a.a){b=a.a;a.a=null;!a.f&&(a.f=[]);Yb(b,a.f)}!!a.f&&(a.f=Xb(a.f))} +function jv(a){if(!a.H){return null}return new Xv(a.f,a.g,a.i,a.d,a.a,a.H.i,a.H.e,a.H.q)} +function px(b,a){if(a==null)return false;return b==a||b.toLowerCase()==a.toLowerCase()} +function Qp(a,b){if(!a){throw new mb(XB)}b=ux(b);if(b.length==0){throw new Ww(YB)}Tp(a,b)} +function xn(a){var b;if(!a.f){return}b=qn(a.k,a.e);if(b){a.g=new Xn(a,b);Zb((Nb(),a.g),16)}} +function w(a){if(!a.n){return}a.t=a.o;a.n=false;a.o=false;if(a.p){$(a.p);a.p=null}a.t&&Es(a)} +function Ny(a){var b;this.c=a;b=new Tz;a.c&&Mz(b,new Wy(a));jy(a,b);iy(a,b);this.a=new sz(b)} +function un(a,b){var c,d,e;e=new jn(a.a-b.a,a.b-b.b);c=cx(e.a);d=cx(e.b);return c<=25&&d<=25} +function Pt(){var a;Ot();Qt.call(this,(a=$doc.createElement('INPUT'),a.type='text',a))} +function Xt(){Xt=GA;Tt=new $t;Ut=new au;Vt=new cu;Wt=new eu;St=$h(Em,KA,44,[Tt,Ut,Vt,Wt])} +function kd(){kd=GA;jd=new nd;gd=new pd;hd=new rd;id=new td;fd=$h(ym,KA,5,[jd,gd,hd,id])} +function Ad(){Ad=GA;zd=new Dd;xd=new Fd;yd=new Hd;wd=new Jd;vd=$h(zm,KA,7,[zd,xd,yd,wd])} +function Qd(){Qd=GA;Pd=new Td;Od=new Vd;Md=new Xd;Nd=new Zd;Ld=$h(Am,KA,8,[Pd,Od,Md,Nd])} +function ee(){ee=GA;ae=new he;be=new je;ce=new le;de=new ne;_d=$h(Bm,KA,9,[ae,be,ce,de])} +function so(a){ep();!uo&&(uo=new tf);if(!ro){ro=new lh(null,true);vo=new yo}return hh(ro,uo,a)} +function Qc(a){if(a.currentStyle.direction==uB){return -(a.scrollLeft||0)}return a.scrollLeft||0} +function Rv(a){if(!a.c&&!a.d)return rB;if(!a.c&&a.d){return pD}if(a.b==84)return 'U';return zx(a.b)} +function qn(a,b){var c,d;d=b.b-a.b;if(d<=0){return null}c=fn(a.a,b.a);return new jn(c.a/d,c.b/d)} +function Xx(a,b){var c;while(a.mb()){c=a.nb();if(b==null?c==null:wb(b,c)){return a}}return null} +function Lc(a){var b,c;c=a.tagName;b=a.scopeName;if(b==null||px('html',b)){return c}return b+qB+c} +function dv(a){var b,c;c=jv(a);if(!c){uv(lD);return}b=_v(a.B,c);ox(b,mD)?uv('CORRECT'):uv(lD)} +function Oc(a){var b;b=a.ownerDocument;return Jc(a)+Qc(ox(b.compatMode,tB)?b.documentElement:b.body)} +function ur(a){var b,c;c=Gc($doc,lC);b=Gc($doc,sB);sc(c,(Ms(),Ns(b)));c[WB]=a;b[WB]=a+'Inner';return c} +function qs(a,b){var c,d;c=(d=Gc($doc,lC),d[oC]=a.a.a,po(d,pC,a.c.a),d);sc(a.b,(Ms(),Ns(c)));lq(a,b,c)} +function iv(a,b,c){var d;d=new bv(b,a.C,a.D,a.G,a.u,a.t,a.z);_u(d);Zu(d);av(d);return new Uv(Su(d,c),d)} +function pc(a,b,c,d){var e;e=qc(a);nc(a,e.substr(0,b-0));a[a.explicitLength++]=d==null?mB:d;nc(a,tx(e,c))} +function Sb(a){if(!a.i){a.i=true;!a.e&&(a.e=new _b(a));Zb(a.e,1);!a.g&&(a.g=new cc(a));Zb(a.g,50)}} +function Qt(a){Lt.call(this,a,(!Vm&&(Vm=new Wm),!Sm&&(Sm=new Tm)));this.H[WB]='gwt-TextBox'} +function hu(){Nq.call(this);this.a=(hs(),es);this.b=(ms(),ls);this.e[iC]=qC;this.e[jC]=qC} +function Sv(a,b){this.e=b;this.b=a;this.d=false;this.c=false;this.a=-1;this.f=-1;this.g=false} +function Xn(a,b){this.e=a;this.a=new db;this.b=tn(this.e);this.d=new dn(this.b,b);this.f=Qo(new $n(this))} +function Pp(a,b,c){if(!a){throw new mb(XB)}b=ux(b);if(b.length==0){throw new Ww(YB)}c?vc(a,b):yc(a,b)} +function Rq(a,b){if(a.C!=b){return false}try{_p(b,null)}finally{tc(a.kb(),b.H);a.C=null}return true} +function Mh(a){var b;b=xc(a,JB);if(px(uB,b)){return Th(),Sh}else if(px(KB,b)){return Th(),Rh}return Th(),Qh} +function mq(a,b){var c;if(b.G!=a){return false}try{_p(b,null)}finally{c=b.H;tc(Ec(c),c);ou(a.f,b)}return true} +function yh(a){var b,c;if(a.a){try{for(c=new sz(a.a);c.b<c.d.zb();){b=hi(qz(c),46);b.M()}}finally{a.a=null}}} +function Dr(a,b,c){var d,e;if(a.f){d=b+Oc(a.H);e=c+Pc(a.H);if(d<a.b||d>=a.i||e<a.c){return}br(a,d-a.d,e-a.e)}} +function Vo(){var a,b;if(No){b=Vc($doc);a=Uc($doc);if(Mo!=b||Lo!=a){Mo=b;Lo=a;Zg((!Ko&&(Ko=new bp),Ko),b)}}} +function br(a,b,c){var d;a.v=b;a.B=c;b-=Sc($doc);c-=Tc($doc);d=a.H;d.style[$B]=b+(ze(),eC);d.style[_B]=c+eC} +function Ym(a,b,c,d){var e,f,g;g=a*b;if(c>=0){e=0>c-d?0:c-d;g=g<e?g:e}else{f=0<c+d?0:c+d;g=g>f?g:f}return g} +function Fx(a){Dx();var b=qB+a;var c=Cx[b];if(c!=null){return c}c=Ax[b];c==null&&(c=Ex(a));Gx();return Cx[b]=c} +function jy(e,a){var b=e.e;for(var c in b){if(c.charCodeAt(0)==58){var d=new _y(e,c.substring(1));a.vb(d)}}} +function Sq(a,b){if(b==a.C){return}!!b&&$p(b);!!a.C&&a.hb(a.C);a.C=b;if(b){sc(a.kb(),(Ms(),Ns(a.C.H)));_p(b,a)}} +function Nq(){nq.call(this);this.e=Gc($doc,bC);this.d=Gc($doc,cC);sc(this.e,(Ms(),Ns(this.d)));Jp(this,this.e)} +function hs(){hs=GA;new ks((ee(),'center'));new ks('justify');fs=new ks($B);new ks('right');gs=fs;es=gs} +function Th(){Th=GA;Sh=new Uh('RTL',0);Rh=new Uh('LTR',1);Qh=new Uh('DEFAULT',2);Ph=$h(Dm,KA,30,[Sh,Rh,Qh])} +function S(a,b){if(b<0){throw new Ww('must be non-negative')}a.b?T(a.c):U(a.c);Rz(P,a);a.b=false;a.c=V(a,b);Mz(P,a)} +function My(a){if(!a.b){throw new Zw('Must call next() before remove().')}else{rz(a.a);vy(a.c,a.b.Bb());a.b=null}} +function nu(a,b){var c;if(b<0||b>=a.c){throw new _w}--a.c;for(c=b;c<a.c;++c){_h(a.a,c,a.a[c+1])}_h(a.a,a.c,null)} +function Wu(a,b){var c;b>=a.a.b&&(b=a.a.b-1);c=hi(Oz(a.a,b),48);while(!c.d&&b<a.a.b){c=hi(Oz(a.a,b),48);++b}return c} +function vh(a,b){var c,d;d=hi(my(a.d,b),58);if(!d){d=new lA;ry(a.d,b,d)}c=hi(d.b,57);if(!c){c=new Tz;ty(d,c)}return c} +function xh(a,b){var c,d;d=hi(my(a.d,b),58);if(!d){return dA(),dA(),cA}c=hi(d.b,57);if(!c){return dA(),dA(),cA}return c} +function jb(a){var b,c,d;c=Zh(Hm,KA,55,a.length,0);for(d=0,b=a.length;d<b;++d){if(!a[d]){throw new fx}c[d]=a[d]}} +function ic(){var a,b,c,d;c=gc(new kc);d=Zh(Hm,KA,55,c.length,0);for(a=0,b=d.length;a<b;++a){d[a]=new kx(c[a])}jb(d)} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{fB(Jm)()}catch(a){b(c)}else{fB(Jm)()}} +function Zb(b,c){Nb();$wnd.setTimeout(function(){var a=fB(Vb)(b);a&&$wnd.setTimeout(arguments.callee,c)},c)} +function ff(a){var b,c;b=a.b;if(b){return c=a.a,(c.clientX||0)-Oc(b)+Qc(b)+Yc(b.ownerDocument)}return a.a.clientX||0} +function Pc(a){var b;b=a.ownerDocument;return Kc(a)+((ox(b.compatMode,tB)?b.documentElement:b.body).scrollTop||0)} +function tg(){var a;this.a=(a=document.createElement(sB),a.setAttribute('ontouchstart','return;'),typeof a.ontouchstart==pB)} +function Lq(a){Kq.call(this,$doc.createElement("<BUTTON type='button'><\/BUTTON>"));this.H[WB]='gwt-Button';zc(this.H,a)} +function Hn(){this.d=new Tz;this.e=new go;this.k=new go;this.j=new go;this.q=new Tz;this.i=new bo(this);Dn(this,new $m)} +function Xv(a,b,c,d,e,f,g,h){this.f=a;this.g=b;this.i=c;this.e=d;this.a=e;this.b=f;this.d=g;this.c=h;'GenexState\n'+Wv(this)} +function er(a){if(a.x){Au(a.x.a);a.x=null}if(a.s){Au(a.s.a);a.s=null}if(a.A){a.x=so(new ys(a));a.s=Fo(new Bs(a))}} +function Es(a){if(!a.i){Ds(a);a.c||rq((Ts(),Xs(null)),a.a)}a.a.H.style[tC]='rect(auto, auto, auto, auto)';a.a.H.style[iB]=hC} +function Qv(a){switch(a.b){case 65:return sD;case 71:return rD;case 67:return qD;case 84:return pD;}return lB} +function Eb(){var a;if(zb!=0){a=eb();if(a-Bb>2000){Bb=a;Cb=Kb()}}if(zb++==0){Ob((Nb(),Mb));return true}return false} +function Ey(a,b){var c,d,e;if(ji(b,59)){c=hi(b,59);d=c.Bb();if(ly(a.a,d)){e=my(a.a,d);return kA(c.Cb(),e)}}return false} +function uh(a,b,c){var d,e,f;d=xh(a,b);e=d.yb(c);e&&d.xb()&&(f=hi(my(a.d,b),58),hi(xy(f),57),f.d==0&&vy(a.d,b),undefined)} +function gu(a,b){var c,d,e;d=Gc($doc,kC);c=(e=Gc($doc,lC),e[oC]=a.a.a,po(e,pC,a.b.a),e);sc(d,(Ms(),Ns(c)));sc(a.d,Ns(d));lq(a,b,c)} +function df(a,b,c){var d,e,f;if(af){f=hi(bg(af,a.type),12);if(f){d=f.a.a;e=f.a.b;bf(f.a,a);cf(f.a,c);Wp(b,f.a);bf(f.a,d);cf(f.a,e)}}} +function Sz(a,b){var c;b.length<a.b&&(b=Xh(b,a.b));for(c=0;c<a.b;++c){_h(b,c,a.a[c])}b.length>a.b&&_h(b,a.b,null);return b} +function np(){var a=false;for(var b=0;b<$wnd.__gwt_globalEventArray.length;b++){!$wnd.__gwt_globalEventArray[b]()&&(a=true)}return !a} +function gf(a){var b,c;b=a.b;if(b){return c=a.a,(c.clientY||0)-Pc(b)+(b.scrollTop||0)+Zc(b.ownerDocument)}return a.a.clientY||0} +function py(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){return true}}}return false} +function ny(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){return f.Cb()}}}return null} +function iy(h,a){var b=h.a;for(var c in b){var d=parseInt(c,10);if(c==d){var e=b[d];for(var f=0,g=e.length;f<g;++f){a.vb(e[f])}}}} +function hc(a){var b,c,d,e;d=(ki(a.b)?ii(a.b):null,[]);e=Zh(Hm,KA,55,d.length,0);for(b=0,c=e.length;b<c;++b){e[b]=new kx(d[b])}jb(e)} +function Up(a,b,c){var d;d=dp(c.b);d==-1?null:a.E==-1?lp(a.H,d|(a.H.__eventBits||0)):(a.E|=d);return hh(!a.F?(a.F=new kh(a)):a.F,c,b)} +function Nh(a,b){switch(b.b){case 0:{a[JB]=uB;break}case 1:{a[JB]=KB;break}case 2:{Mh(a)!=(Th(),Qh)&&(a[JB]=lB,undefined);break}}} +function Ku(a){switch(a.a){case 0:++a.a;case 1:++a.a;return 'exon';case 2:++a.a;return 'next';case 3:a.a=1;return 'another';}return lB} +function ux(c){if(c.length==0||c[0]>rB&&c[c.length-1]>rB){return c}var a=c.replace(/^(\s*)/,lB);var b=a.replace(/\s*$/,lB);return b} +function rs(){Nq.call(this);this.a=(hs(),es);this.c=(ms(),ls);this.b=Gc($doc,kC);sc(this.d,(Ms(),Ns(this.b)));this.e[iC]=qC;this.e[jC]=qC} +function jc(b){var c=lB;try{for(var d in b){if(d!='name'&&d!='message'&&d!='toString'){try{c+='\n '+d+kB+b[d]}catch(a){}}}}catch(a){}return c} +function wn(a,b){var c,d,e,f;c=eb();f=false;for(e=new sz(a.q);e.b<e.d.zb();){d=hi(qz(e),35);if(c-d.b<=2500&&un(b,d.a)){f=true;break}}return f} +function _v(a,b){var c,d,e,f;c=new Nx;e=Az(ey(a.a.a));f=true;while(pz(e.a.a)){d=hi(Gz(e),49);if(!d.ub(b)){f=false;Jx(c,d.b)}}return f?mD:rc(c.a)} +function Ds(a){if(a.i){if(a.a.u){sc($doc.body,a.a.q);a.f=Qo(a.a.r);us();a.b=true}}else if(a.b){tc($doc.body,a.a.q);Au(a.f.a);a.f=null;a.b=false}} +function $p(a){if(!a.G){(Ts(),oA(Ss,a))&&Vs(a)}else if(a.G){a.G.hb(a)}else if(a.G){throw new Zw("This widget's parent does not implement HasWidgets")}} +function Yb(b,c){var a,d,e,f;for(d=0,e=b.length;d<e;++d){f=b[d];try{f[1]?f[0].L()&&(c=Wb(c,f)):f[0].M()}catch(a){a=Km(a);if(!ji(a,56))throw a}}return c} +--></script> +<script><!-- +function vx(a){var b;b=0;while(0<=(b=a.indexOf('\\',b))){a.charCodeAt(b+1)==36?(a=a.substr(0,b-0)+'$'+tx(a,++b)):(a=a.substr(0,b-0)+tx(a,++b))}return a} +function lt(a,b){a.__lastScrollTop=a.__lastScrollLeft=0;a.attachEvent('onscroll',kt);a.attachEvent(wC,jt);b.attachEvent(wC,jt);b.__isScrollContainer=true} +function ze(){ze=GA;ye=new Ce;we=new Ee;re=new Ge;se=new Ie;xe=new Ke;ve=new Me;te=new Oe;qe=new Qe;ue=new Se;pe=$h(Cm,KA,10,[ye,we,re,se,xe,ve,te,qe,ue])} +function Yp(a,b){var c;switch(dp(b.type)){case 16:case 32:c=b.relatedTarget||(b.type==CB?b.toElement:b.fromElement);if(!!c&&Nc(a.H,c)){return}}df(b,a,a.H)} +function Fs(a){Ds(a);if(a.i){a.a.H.style[aC]=uC;a.a.B!=-1&&br(a.a,a.a.v,a.a.B);qq((Ts(),Xs(null)),a.a)}else{a.c||rq((Ts(),Xs(null)),a.a)}a.a.H.style[iB]=hC} +function Rw(a,b){var c;b.b=a;if(a==2){c=String.prototype}else{if(a>0){var d=Pw(b);if(d){c=d.prototype}else{d=Mm[a]=function(){};d.cZ=b;return}}else{return}}c.cZ=b} +function L(a){var b,c,d,e,f;b=Zh(xm,IA,3,a.a.b,0);b=hi(Sz(a.a,b),4);c=new db;for(e=0,f=b.length;e<f;++e){d=b[e];Rz(a.a,d);B(d.a,c.a)}a.a.b>0&&S(a.b,dx(5,16-(eb()-c.a)))} +function Qu(a,b){var c,d;d=rx(a.k,a.d,b);if(d==-1)return new Nu(b,a.k.length,-1);c=rx(a.k,a.c,d);if(c==-1)return new Nu(b,a.k.length,-1);return new Nu(b,d,c+a.c.length)} +function lv(a,b,c){c!=-1?Ur(a.s,nC+c):Ur(a.s,nC);Xr(a.r,b.a.b+'<font color=blue>'+a.A+'<\/font><\/pre><br><br><br><font size=+1><\/font><\/body><\/html>');a.H=b.b;qv(a)} +function ix(){ix=GA;hx=$h(wm,KA,-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function bx(a){var b,c,d;b=Zh(wm,KA,-1,8,1);c=(ix(),hx);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return wx(b,d,8)} +function Ao(a,b){var c,d,e,f,g;if(!!uo&&!!a&&jh(a,uo)){c=vo.a;d=vo.b;e=vo.c;f=vo.d;wo(vo);xo(vo,b);ih(a,vo);g=!(vo.a&&!vo.b);vo.a=c;vo.b=d;vo.c=e;vo.d=f;return g}return true} +function ih(b,c){var a,d,e;!c.e||c.Q();e=c.f;$e(c,b.b);try{th(b.a,c)}catch(a){a=Km(a);if(ji(a,47)){d=a;throw new Jh(d.a)}else throw a}finally{e==null?(c.e=true,c.f=null):(c.f=e)}} +function us(){var a,b,c,d,e;b=null.Jb();e=Vc($doc);d=Uc($doc);b[rC]=(kd(),sC);b[UB]=0+(ze(),eC);b[VB]=fC;c=$c($doc);a=Xc($doc);b[UB]=(c>e?c:e)+eC;b[VB]=(a>d?a:d)+eC;b[rC]='block'} +function Yh(a,b){var c=new Array(b);if(a==3){for(var d=0;d<b;++d){var e=new Object;e.l=e.m=e.h=0;c[d]=e}}else if(a>0){var e=[null,0,false][a];for(var d=0;d<b;++d){c[d]=e}}return c} +function Yx(a){var b,c,d,e;d=new Nx;b=null;mc(d.a,'[');c=a.ib();while(c.mb()){b!=null?(mc(d.a,b),d):(b=DD);e=c.nb();mc(d.a,e===a?'(this Collection)':lB+e)}mc(d.a,']');return rc(d.a)} +function wy(h,a,b){var c=h.a[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.Bb();if(h.Ab(a,g)){c.length==1?delete h.a[b]:c.splice(d,1);--h.d;return f.Cb()}}}return null} +function sy(j,a,b,c){var d=j.a[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.Bb();if(j.Ab(a,h)){var i=g.Cb();g.Db(b);return i}}}else{d=j.a[c]=[]}var g=new zA(a,b);d.push(g);++j.d;return null} +function _p(a,b){var c;c=a.G;if(!b){try{!!c&&c.D&&a.eb()}finally{a.G=null}}else{if(c){throw new Zw('Cannot set a new parent without first clearing the old parent')}a.G=b;b.D&&a.db()}} +function rh(a,b,c){if(!b){throw new gx('Cannot add a handler with a null type')}if(!c){throw new gx('Cannot add a null handler')}a.b>0?qh(a,new Du(a,b,c)):sh(a,b,c);return new Bu(a,b,c)} +function Pm(a){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:a})} +function Gs(a,b){var c,d,e,f,g,h;a.i||(b=1-b);g=0;e=0;f=0;c=0;d=ni(b*a.d);h=ni(b*a.e);switch(0){case 2:case 0:g=a.d-d>>1;e=a.e-h>>1;f=e+h;c=g+d;}xu(a.a.H,'rect('+g+vC+f+vC+c+vC+e+'px)')} +function zq(b,c){xq();var a,d,e,f,g;d=null;for(g=b.ib();g.mb();){f=hi(g.nb(),45);try{c.jb(f)}catch(a){a=Km(a);if(ji(a,56)){e=a;!d&&(d=new qA);nA(d,e)}else throw a}}if(d){throw new yq(d)}} +function Ex(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c<e){b=a.charCodeAt(c+3)+31*(a.charCodeAt(c+2)+31*(a.charCodeAt(c+1)+31*(a.charCodeAt(c)+31*b)))|0;c+=4}while(c<d){b=b*31+nx(a,c++)}return b|0} +function _h(a,b,c){if(c!=null){if(a.qI>0&&!gi(c,a.qI)){throw new Bw}else if(a.qI==-1&&(c.tM==GA||fi(c,1))){throw new Bw}else if(a.qI<-1&&!(c.tM!=GA&&!fi(c,1))&&!gi(c,-a.qI)){throw new Bw}}return a[b]=c} +function Zp(a){if(!a.D){throw new Zw("Should only call onDetach when the widget is attached to the browser's document")}try{a.gb();Ng(a,false)}finally{try{a.cb()}finally{a.H.__listener=null;a.D=false}}} +function Xs(a){Ts();var b,c;c=hi(my(Rs,a),42);b=null;if(a!=null){if(!(b=Wc($doc,a))){return null}}if(c){if(!b||c.H==b){return c}}Rs.d==0&&Oo(new at);!b?(c=new dt):(c=new Us(b));ry(Rs,a,c);nA(Ss,c);return c} +function Nc(a,b){if(a.nodeType!=1&&a.nodeType!=9){return a==b}if(b.nodeType!=1){b=b.parentNode;if(!b){return false}}if(a.nodeType==9){return a===b||a.body&&a.body.contains(b)}else{return a===b||a.contains(b)}} +function mu(a,b,c){var d,e;if(c<0||c>a.c){throw new _w}if(a.c==a.a.length){e=Zh(Fm,KA,45,a.a.length*2,0);for(d=0;d<a.a.length;++d){_h(e,d,a.a[d])}a.a=e}++a.c;for(d=a.c-1;d>c;--d){_h(a.a,d,a.a[d-1])}_h(a.a,c,b)} +function Mv(){this.a='CAAGGCTATAACCGAGATTGATGCCTTGTGCGATAAGGTGTGTCCCCCCCCAAAGTGTCGGATGTCGAGTGCGCGTGCAAAAAAAAACAAAGGCGAGGACCTTAAGAAGGTGTGAGGGGGCGCTCGAT';this.e=wD;this.f=0;this.g=xD;this.c=yD;this.b=zD;this.d=AD} +function ec(a){var b,c,d;d=lB;a=ux(a);b=a.indexOf(oB);c=a.indexOf(pB)==0?8:0;if(b==-1){b=qx(a,String.fromCharCode(64));c=a.indexOf('function ')==0?9:0}b!=-1&&(d=ux(a.substr(c,b-c)));return d.length>0?d:'anonymous'} +function Nm(a,b,c){var d=Mm[a];if(d&&!d.cZ){_=d.prototype}else{!d&&(d=Mm[a]=function(){});_=d.prototype=b<0?{}:Om(b);_.cM=c}for(var e=3;e<arguments.length;++e){arguments[e].prototype=_}if(d.cZ){_.cZ=d.cZ;d.cZ=null}} +function Gc(a,b){var c,d;if(b.indexOf(qB)!=-1){c=(!a.__gwt_container&&(a.__gwt_container=a.createElement(sB)),a.__gwt_container);c.innerHTML='<'+b+'/>'||lB;d=Dc(c);c.removeChild(d);return d}return a.createElement(b)} +function sv(d){$doc.onkeypress=function(a){if(d.n){var a=$wnd.event||a;var b=String.fromCharCode(a.charCode);var c=a.charCode;d.qb(b,c)}};$doc.onkeydown=function(a){if(d.n){var a=$wnd.event||a;var b=a.keyCode;d.pb(b)}}} +function Ih(a){var b,c,d,e,f;c=a.zb();if(c==0){return null}b=new Sx(c==1?'Exception caught: ':c+' exceptions caught: ');d=true;for(f=a.ib();f.mb();){e=hi(f.nb(),56);d?(d=false):(mc(b.a,'; '),b);Rx(b,e.K())}return rc(b.a)} +function ut(a){var b,c;if(a.c){return false}a.c=(b=(!pn&&(pn=(Fw(),(!gg&&(gg=new tg),gg.a)&&!(c=navigator.userAgent.toLowerCase(),/android ([3-9]+)\.([0-9]+)/.exec(c)!=null)?Ew:Dw)),pn.a?new Hn:null),!!b&&En(b,a),b);return !a.c} +function Tp(a,b){var c=a.className.split(/\s+/);if(!c){return}var d=c[0];var e=d.length;c[0]=b;for(var f=1,g=c.length;f<g;f++){var h=c[f];h.length>e&&h.charAt(e)==ZB&&h.indexOf(d)==0&&(c[f]=b+h.substring(e))}a.className=c.join(rB)} +function Xp(a){var b;if(a.D){throw new Zw("Should only call onAttach when the widget is detached from the browser's document")}a.D=true;fp(a.H,a);b=a.E;a.E=-1;b>0&&(a.E==-1?lp(a.H,b|(a.H.__eventBits||0)):(a.E|=b));a.bb();a.fb();Ng(a,true)} +function An(a,b){var c,d;fo(a.j,null,0);if(a.r){return}d=sn(b);a.p=new jn(d.pageX,d.pageY);c=eb();fo(a.k,a.p,c);fo(a.e,a.p,c);a.n=null;if(a.g){Mz(a.q,new ho(a.p,c));Zb((Nb(),a.i),2500)}a.o=new jn(Qc(a.s.b),a.s.b.scrollTop||0);rn(a);a.r=true} +function vc(a,b){var c,d,e,f;b=ux(b);f=a.className;c=f.indexOf(b);while(c!=-1){if(c==0||f.charCodeAt(c-1)==32){d=c+b.length;e=f.length;if(d==e||d<e&&f.charCodeAt(d)==32){break}}c=f.indexOf(b,c+1)}if(c==-1){f.length>0&&(f+=rB);a.className=f+b}} +function gc(i){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=i.N(c.toString());b.push(d);var e=qB+d;var f=a[e];if(f){var g,h;for(g=0,h=f.length;g<h;g++){if(f[g]===c){return b}}}(f||(a[e]=[])).push(c);c=c.caller}return b} +function rp(g){var c=lB;var d=$wnd.location.hash;d.length>0&&(c=g.Y(d.substring(1)));wp(c);var e=g;var f=$wnd.onhashchange;$wnd.onhashchange=fB(function(){var a=lB,b=$wnd.location.hash;b.length>0&&(a=e.Y(b.substring(1)));e.Z(a);f&&f()});return true} +function wt(a){Tq.call(this);this.b=this.H;this.a=Gc($doc,sB);sc(this.b,this.a);this.b.style[iB]=(Ad(),'auto');this.b.style[aC]=(Qd(),xC);this.a.style[aC]=xC;this.b.style[yC]=zC;this.a.style[yC]=zC;ut(this);!ft&&(ft=new mt);lt(this.b,this.a);Sq(this,a)} +function bv(a,b,c,d,e,f,g){var h;this.a=new Tz;this.b=a;this.n=b;this.o=c;this.s=d;this.d=e;this.c=f;this.j=g;this.p=-1;this.t=-1;this.g=0;this.i=0;this.f=0;this.k=lB;this.e=lB;this.q=lB;this.r=lB;for(h=0;h<a.length;++h){Mz(this.a,new Sv(nx(this.b,h),h))}} +function Hs(a,b,c){var d;a.c=c;w(a);if(a.g){R(a.g);a.g=null;Es(a)}a.a.A=b;er(a.a);d=!c&&a.a.t;a.i=b;if(d){if(b){Ds(a);a.a.H.style[aC]=uC;a.a.B!=-1&&br(a.a,a.a.v,a.a.B);a.a.H.style[tC]=gC;qq((Ts(),Xs(null)),a.a);a.g=new Ks(a);S(a.g,1)}else{x(a,eb())}}else{Fs(a)}} +function Zm(a){var b,c,d,e,f,g,h,i,j,k,l,m;e=a.b;m=a.a;f=a.c;k=a.e;b=Math.pow(0.9993,m);g=e*5.0E-4;i=Ym(f.a,b,k.a,g);j=Ym(f.b,b,k.b,g);h=new jn(i,j);a.e=h;d=a.b;c=gn(h,new jn(d,d));l=a.d;cn(a,new jn(l.a+c.a,l.b+c.b));if(cx(h.a)<0.02&&cx(h.b)<0.02){return false}return true} +function Xb(a){var b,c,d,e,f,g;d=a.length;if(d==0){return null}b=false;f=eb();while(eb()-f<100){for(c=0;c<d;++c){g=a[c];if(!g){continue}if(!g[0].L()){a[c]=null;b=true}}}if(b){e=[];for(c=0;c<d;++c){!!a[c]&&(e[e.length]=a[c],undefined)}return e.length==0?null:e}else{return a}} +function _u(a){var b,c,d,e,f,g;f=qx(a.b,a.n);g=rx(a.b,a.s,f);e=new Nx;if(f!=-1){c=0;a.p=f;a.g=a.p+a.n.length+a.o;g!=-1?(a.t=g):(a.t=a.b.length);for(b=a.g;b<a.t;++b){d=hi(Oz(a.a,b),48);d.c=true;++c}for(b=0;b<a.b.length;++b){d=hi(Oz(a.a,b),48);Jx(e,Rv(d))}a.k=ux(rc(e.a))}else{a.k=lB}} +function qv(e){function f(a,b,c){var d=document.createRange();d.selectNodeContents(a);d.setEnd(b,c);return d.toString().length} +var g=$doc.getElementById('dna-strand');g.style.cursor='pointer';g.onclick=function(){var a=$wnd.getSelection();var b=f(this,a.anchorNode,a.anchorOffset);e.rb(b);e.n=true}} +function Wv(a){var b;b=new Nx;mc(b.a,'State:\n');Jx(b,'\tStarting DNA='+a.f+XC);Jx(b,'\tStarting mRNA='+a.g+XC);Jx(b,'\tStarting protein='+a.i+XC);Jx(b,'\tSelected base='+a.e+XC);Jx(b,'\tCurrent DNA='+a.a+XC);Jx(b,'\tNum Exons='+a.b+XC);Jx(b,'\tRNA='+a.d+XC);Jx(b,'\tProtein='+a.c+'\n\n');return rc(b.a)} +function Zu(a){var b,c,d,e,f,g;if(ox(a.k,lB)){a.e=lB}else{c=0;f=new Nx;d=0;while(c!=-1){b=Qu(a,c);++a.i;c=b.c;for(e=b.b;e<b.a;++e){g=hi(Oz(a.a,e+a.g),48);g.d=true;++d;Jx(f,Rv(g))}}for(e=a.t;e<a.t+a.j.length;++e){if(e>=a.a.b){g=new Sv(65,e);g.d=true;Mz(a.a,g)}else{g=hi(Oz(a.a,e),48);g.d=true}}a.e=rc(f.a)+a.j}} +function tr(a){var b,c,d,e;Uq.call(this,Gc($doc,bC));d=this.H;this.b=Gc($doc,cC);ko(d,this.b);d[iC]=0;d[jC]=0;for(b=0;b<a.length;++b){c=(e=Gc($doc,kC),e[WB]=a[b],ko(e,ur(a[b]+'Left')),ko(e,ur(a[b]+'Center')),ko(e,ur(a[b]+'Right')),e);ko(this.b,c);b==1&&(this.a=Dc(c.children[1]))}this.H[WB]='gwt-DecoratorPanel'} +function Os(){var c=function(){};c.prototype={className:lB,clientHeight:0,clientWidth:0,dir:lB,getAttribute:function(a,b){return this[a]},href:lB,id:lB,lang:lB,nodeType:1,removeAttribute:function(a,b){this[a]=undefined},setAttribute:function(a,b){this[a]=b},src:lB,style:{},title:lB};$wnd.GwtPotentialElementShim=c} +function yc(a,b){var c,d,e,f,g,h,i;b=ux(b);i=a.className;e=i.indexOf(b);while(e!=-1){if(e==0||i.charCodeAt(e-1)==32){f=e+b.length;g=i.length;if(f==g||f<g&&i.charCodeAt(f)==32){break}}e=i.indexOf(b,e+1)}if(e!=-1){c=ux(i.substr(0,e-0));d=ux(tx(i,e+b.length));c.length==0?(h=d):d.length==0?(h=c):(h=c+rB+d);a.className=h}} +function th(b,c){var a,d,e,f,g,h;if(!c){throw new gx('Cannot fire null event')}try{++b.b;g=wh(b,c.P());d=null;h=b.c?g.Hb(g.zb()):g.Gb();while(b.c?h.b>0:h.b<h.d.zb()){f=b.c?xz(h):qz(h);try{c.O(hi(f,27))}catch(a){a=Km(a);if(ji(a,56)){e=a;!d&&(d=new qA);nA(d,e)}else throw a}}if(d){throw new Gh(d)}}finally{--b.b;b.b==0&&yh(b)}} +function Yq(a){var b,c,d,e,f;d=a.A;c=a.t;if(!d){a.H.style[dC]=jB;a.t=false;!a.g&&(a.g=Qo(new Nr(a)));dr(a)}b=a.H;b.style[$B]=0+(ze(),eC);b.style[_B]=fC;e=Vc($doc)-wc(a.H,hB)>>1;f=Uc($doc)-wc(a.H,gB)>>1;br(a,dx(Yc($doc)+e,0),dx(Zc($doc)+f,0));if(!d){a.t=c;if(c){xu(a.H,gC);a.H.style[dC]=hC;x(a.z,eb())}else{a.H.style[dC]=hC}}} +function y(a,b){var c,d,e;c=a.q;d=b>=a.s+a.k;if(a.o&&!d){e=(b-a.s)/a.k;Gs(a,(1+Math.cos(3.141592653589793+e*3.141592653589793))/2);return a.n&&a.q==c}if(!a.o&&b>=a.s){a.o=true;a.d=wc(a.a.H,gB);a.e=wc(a.a.H,hB);a.a.H.style[iB]=jB;Gs(a,(1+Math.cos(3.141592653589793))/2);if(!(a.n&&a.q==c)){return false}}if(d){a.n=false;a.o=false;Es(a);return false}return true} +function Yu(a,b,c,d,e){var f,g;f=new Nx;g=new Nx;b==a.p&&(mc(g.a,'<EM class=promoter>'),g);b==a.p+a.n.length&&(mc(g.a,bD),g);b==a.t&&(mc(g.a,'<EM class=terminator>'),g);b==a.t+a.s.length&&(mc(g.a,bD),g);if(d){mc(g.a,eD);mc(g.a,c);mc(g.a,bD);e?(mc(f.a,c),f):Jx(f,c.toLowerCase())}else{mc(g.a,c);e?Jx(f,c.toLowerCase()):(mc(f.a,c),f)}return new Ov(rc(g.a),rc(f.a))} +function En(a,b){var c,d;if(a.s==b){return}rn(a);for(d=new sz(a.d);d.b<d.d.zb();){c=hi(qz(d),28);Au(c.a)}Nz(a.d);Bn(a);Cn(a);a.s=b;if(b){b.D&&(Cn(a),a.b=so(new Tn(a)));a.a=Vp(b,new Jn(a),(!Jg&&(Jg=new tf),Jg));Mz(a.d,Up(b,new Ln(a),(Dg(),Dg(),Cg)));Mz(a.d,Up(b,new Nn(a),(wg(),wg(),vg)));Mz(a.d,Up(b,new Pn(a),(og(),og(),ng)));Mz(a.d,Up(b,new Rn(a),(ig(),ig(),hg)))}} +function nt(){kt=function(){var a=$wnd.event.srcElement;a.__lastScrollTop=a.scrollTop;a.__lastScrollLeft=a.scrollLeft};jt=function(){var a=$wnd.event.srcElement;a.__isScrollContainer&&(a=a.parentNode);setTimeout(fB(function(){if(a.scrollTop!=a.__lastScrollTop||a.scrollLeft!=a.__lastScrollLeft){a.__lastScrollTop=a.scrollTop;a.__lastScrollLeft=a.scrollLeft;ot(a)}}),1)}} +function So(){if(!No){xp("function __gwt_initWindowResizeHandler(resize) {\n var wnd = window, oldOnResize = wnd.onresize;\n \n wnd.onresize = function(evt) {\n try {\n resize();\n } finally {\n oldOnResize && oldOnResize(evt);\n }\n };\n \n // Remove the reference once we've initialize the handler\n wnd.__gwt_initWindowResizeHandler = undefined;\n}\n",new Cp);No=true}} +function Jm(){var a;!!$stats&&Pm('com.google.gwt.useragent.client.UserAgentAsserter');a=yu();ox(LB,a)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (ie8) does not match the runtime user.agent value ('+a+'). Expect more errors.\n'),undefined);!!$stats&&Pm('com.google.gwt.user.client.DocumentModeAsserter');qo();!!$stats&&Pm('genex.client.gx.GenexGWT');kv(new mv)} +function av(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;if(ox(a.e,lB)){a.q=lB}else{h=0;l=new Nx;for(j=0;j<a.a.b;++j){b=hi(Oz(a.a,j),48);if(b.d){c=Wu(a,j);d=Wu(a,c.e+1);e=Wu(a,d.e+1);f=Rv(c)+Rv(d)+Rv(e);h=e.e;if(ox(f,FC)){$u(0,c,d,e);Jx(l,Iu(f));break}}}g=1;k=h+1;while(k<=a.a.b){i=Wu(a,k);m=Wu(a,i.e+1);n=Wu(a,m.e+1);f=Rv(i)+Rv(m)+Rv(n);if(k+2>=a.a.b)break;k=n.e+1;Jx(l,Iu(f));$u(g,i,m,n);if(ox(Iu(f),lB)){$u(-2,i,m,n);break}++g}a.q=rc(l.a)}} +function Tu(a,b){var c,d,e,f,g,h;c=new Nx;d=new Nx;h=new Nx;if(ox(a.d,sC)||ox(a.c,sC)){for(e=0;e<a.g;++e){mc(h.a,rB);mc(c.a,rB)}}if(ox(a.q,lB)){mc(h.a,$C);mc(c.a,_C)}else{for(e=0;e<a.b.length;++e){f=hi(Oz(a.a,e),48);if(f.d){if(f.a==0){break}mc(h.a,rB);mc(c.a,rB)}}mc(h.a,aD);Jx(c,aD+a.q+'-C\n');if(b!=-1){g=new Ox(a.q);f=hi(Oz(a.a,b),48);if(f.a>=0){g=Lx(g,f.a*3+3,bD);g=Lx(g,f.a*3+f.f+1,cD);g=Lx(g,f.a*3+f.f,dD);g=Lx(g,f.a*3,eD)}Jx(h,rc(g.a)+fD)}else{Jx(h,a.q+fD)}}a.r=rc(h.a);Jx(d,a.r+XC);return new Ov(rc(d.a),rc(c.a))} +function ar(a,b){var c,d,e,f;if(b.a||!a.y&&b.b){a.w&&(b.a=true);return}a.W(b);if(b.a){return}d=b.d;c=Zq(a,d);c&&(b.b=true);a.w&&(b.a=true);f=dp(d.type);switch(f){case 512:case 256:case 128:{((d.keyCode||0)&65535,(d.shiftKey?1:0)|(d.metaKey?8:0)|(d.ctrlKey?2:0)|(d.altKey?4:0),true)||(b.a=true);return}case 4:case 1048576:if(jo){b.b=true;return}if(!c&&a.k){$q(a);return}break;case 8:case 64:case 1:case 2:case 4194304:{if(jo){b.b=true;return}break}case 2048:{e=d.srcElement;if(a.w&&!c&&!!e){e.blur&&e!=$doc.body&&e.blur();b.a=true;return}break}}} +function yu(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(AC)!=-1}())return AC;if(function(){return b.indexOf('webkit')!=-1}())return 'safari';if(function(){return b.indexOf(BC)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return b.indexOf(BC)!=-1&&$doc.documentMode>=8}())return LB;if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return 'ie6';if(function(){return b.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'} +function zn(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(!a.r){return}i=sn(b);j=new jn(i.pageX,i.pageY);k=eb();fo(a.e,j,k);if(!a.c){e=fn(j,a.p);c=cx(e.a);d=cx(e.b);if(c>5||d>5){fo(a.j,a.k.a,a.k.b);if(c>d){h=Qc(a.s.b);g=st(a.s);f=qt(a.s);if(e.a<0&&f<=h){rn(a);return}else if(e.a>0&&g>=h){rn(a);return}}else{n=a.s.b.scrollTop||0;m=rt(a.s);if(e.b<0&&m<=n){rn(a);return}else if(e.b>0&&0>=n){rn(a);return}}a.c=true}}Ic(b.a);if(a.c){o=fn(a.p,a.e.a);p=hn(a.o,o);tt(a.s,ni(p.a));vt(a.s,ni(p.b));l=k-a.k.b;if(l>200&&!!a.n){fo(a.k,a.n.a,a.n.b);a.n=null}else l>100&&!a.n&&(a.n=new ho(j,k))}} +function kv(a){a.r=new Yr;a.F=new wt(a.r);Kp(a.F);Lp(a.F,'genex-scrollpanel');qq(Xs(nD),a.F);a.j=new Fr;Mp(a.j,'genex-dialogbox');a.k=new hu;Ur(a.j.a,'New DNA Sequence');a.v=new Zr;Lp(a.v,'genex-dialogbox-message');a.o=new Pt;a.c=new Lq('Cancel');Mp(a.c,oD);Up(a.c,new wv(a),(jf(),jf(),hf));a.x=new Lq(mD);Mp(a.x,oD);Up(a.x,new Cv(a),hf);a.q=new rs;qs(a.q,a.c);qs(a.q,a.x);gu(a.k,a.v);gu(a.k,a.o);gu(a.k,a.q);mr(a.j,a.k);a.E=new Lq('Reset DNA Sequence');Mp(a.E,oD);Up(a.E,new Fv(a),hf);a.w=new Lq('Enter New DNA Sequence');Mp(a.w,oD);Up(a.w,new Iv(a),hf);a.s=new Wr;Mp(a.s,'genex-label');a.p=new rs;qs(a.p,a.E);qs(a.p,a.w);qs(a.p,a.s);qq(Xs(nD),a.p);Tb((Nb(),Mb),new zv(a))} +function Gr(a){var b,c,d;Tq.call(this);this.r=new vs;this.z=new Is(this);sc(this.H,Gc($doc,sB));br(this,0,0);Ec(Dc(this.H))[WB]='gwt-PopupPanel';Dc(this.H)[WB]=mC;this.k=false;this.n=false;this.w=true;d=$h(Im,KA,1,['dialogTop','dialogMiddle','dialogBottom']);this.j=new tr(d);Lp(this.j,lB);Qp(Ec(Dc(this.H)),'gwt-DecoratedPopupPanel');cr(this,this.j);Pp(Dc(this.H),mC,false);Pp(this.j.a,'dialogContent',true);$p(a);this.a=a;c=sr(this.j);sc(c,(Ms(),Ns(this.a.H)));iq(this,this.a);Ec(Dc(this.H))[WB]='gwt-DialogBox';this.i=Vc($doc);this.b=Sc($doc);this.c=Tc($doc);b=new as(this);Up(this,b,(xf(),xf(),wf));Up(this,b,(Xf(),Xf(),Wf));Up(this,b,(Ef(),Ef(),Df));Up(this,b,(Rf(),Rf(),Qf));Up(this,b,(Lf(),Lf(),Kf))} +function dp(a){switch(a){case 'blur':return 4096;case 'change':return 1024;case zB: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 AB:return 4;case BB:return 64;case CB:return 32;case DB:return 16;case EB:return 8;case NB:return 16384;case 'error':return 65536;case 'DOMMouseScroll':case 'mousewheel':return 131072;case 'contextmenu':return 262144;case 'paste':return 524288;case IB:return 1048576;case HB:return 2097152;case GB:return 4194304;case FB:return 8388608;case 'gesturestart':return 16777216;case 'gesturechange':return 33554432;case 'gestureend':return 67108864;default:return -1;}} +function Vu(a){var b,c,d,e,f,g,h;b=new Nx;c=new Nx;f=false;e=new Lu;if(!(ox(a.d,sC)||ox(a.c,sC))){mc(c.a,'<\/pre><h3>pre-mRNA: <EM class=exon>Ex<\/EM><EM class=next>o<\/EM><EM class=another>n<\/EM> Intron<\/h3><pre>');mc(b.a,'<\/pre><h3>pre-mRNA: EXON intron<\/h3><pre>');if(ox(a.k,lB)){mc(c.a,$C);mc(b.a,_C)}else{for(g=0;g<a.g;++g){mc(c.a,rB);mc(b.a,rB)}mc(c.a,VC);mc(b.a,VC);for(g=0;g<a.b.length;++g){d=hi(Oz(a.a,g),48);g!=0?(h=hi(Oz(a.a,g-1),48)):(h=hi(Oz(a.a,0),48));if(d.c){if(!h.d&&d.d){Jx(c,iD+Ku(e)+jD);f=true}if(h.d&&!d.d){mc(c.a,bD);f=false}if(d.g){mc(c.a,eD);Jx(c,Rv(d));mc(c.a,bD);f?Jx(b,Rv(d).toLowerCase()):Jx(b,Rv(d))}else{Jx(c,Rv(d));f?Jx(b,Rv(d)):Jx(b,Rv(d).toLowerCase())}}}mc(c.a,"<\/EM>-3'\n");mc(b.a,kD)}}return new Ov(rc(c.a),rc(b.a))} +function Su(a,b){var c,d,e,f,g,h,i,j,k;if(b!=-1){h=hi(Oz(a.a,b),48);h.g=true}e=new Nx;d=new Nx;f=(k=new Nx,mc(k.a,'<html><head>'),mc(k.a,'<style type="text/css">'),mc(k.a,'EM.selected {font-style: normal; background: blue; color: red}'),mc(k.a,'EM.promoter {font-style: normal; background: #90FF90; color: black}'),mc(k.a,'EM.terminator {font-style: normal; background: #FF9090; color: black}'),mc(k.a,'EM.exon {font-style: normal; background: #FF90FF; color: black}'),mc(k.a,'EM.next {font-style: normal; background: #FF8C00; color: black}'),mc(k.a,'EM.another {font-style: normal; background: #FFFF50; color: black}'),mc(k.a,'<\/style><\/head><body>'),new Ov(rc(k.a),lB));Jx(e,f.b);Jx(d,f.a);c=Ru(a);Jx(e,c.b);Jx(d,c.a);a.f=Pu(c.b);i=Vu(a);Jx(e,i.b);Jx(d,i.a);g=Uu(a);Jx(e,g.b);Jx(d,g.a);j=Tu(a,b);Jx(e,j.b);Jx(d,j.a);return new Ov(rc(e.a),rc(d.a))} +function mp(a,b){var c=(a.__eventBits||0)^b;a.__eventBits=b;if(!c)return;c&1&&(a.onclick=b&1?hp:null);c&3&&(a.ondblclick=b&3?gp:null);c&4&&(a.onmousedown=b&4?hp:null);c&8&&(a.onmouseup=b&8?hp:null);c&16&&(a.onmouseover=b&16?hp:null);c&32&&(a.onmouseout=b&32?hp:null);c&64&&(a.onmousemove=b&64?hp:null);c&128&&(a.onkeydown=b&128?hp:null);c&256&&(a.onkeypress=b&256?hp:null);c&512&&(a.onkeyup=b&512?hp:null);c&1024&&(a.onchange=b&1024?hp:null);c&2048&&(a.onfocus=b&2048?hp:null);c&4096&&(a.onblur=b&4096?hp:null);c&8192&&(a.onlosecapture=b&8192?hp:null);c&16384&&(a.onscroll=b&16384?hp:null);c&32768&&(a.nodeName=='IFRAME'?b&32768?a.attachEvent(TB,ip):a.detachEvent(TB,ip):(a.onload=b&32768?jp:null));c&65536&&(a.onerror=b&65536?hp:null);c&131072&&(a.onmousewheel=b&131072?hp:null);c&262144&&(a.oncontextmenu=b&262144?hp:null);c&524288&&(a.onpaste=b&524288?hp:null)} +function qo(){var a,b,c;b=$doc.compatMode;a=$h(Im,KA,1,[tB]);for(c=0;c<a.length;++c){if(ox(a[c],b)){return}}a.length==1&&ox(tB,a[0])&&ox('BackCompat',b)?"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 <!doctype html> 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> <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').<br>Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} +function Uu(a){var b,c,d,e,f,g,h,i,j;b=new Nx;c=new Nx;f=false;h=false;e=new Lu;mc(c.a,gD);mc(b.a,gD);if(!(ox(a.d,sC)||ox(a.c,sC))){mc(c.a,hD);mc(b.a,hD)}mc(c.a,'mRNA and Protein (<font color=blue>previous<\/font>):<\/h3><pre>');mc(b.a,'mRNA and Protein (previous on line below):<\/h3><pre>');if(ox(a.d,sC)||ox(a.c,sC)){for(g=0;g<a.g;++g){mc(c.a,rB);mc(b.a,rB)}}if(ox(a.e,lB)){mc(c.a,$C);mc(b.a,_C)}else{mc(c.a,VC);mc(b.a,VC);for(g=0;g<a.a.b;++g){d=hi(Oz(a.a,g),48);g!=0?(j=hi(Oz(a.a,g-1),48)):(j=hi(Oz(a.a,0),48));g!=a.a.b-1?(i=hi(Oz(a.a,g+1),48)):(i=hi(Oz(a.a,g),48));if(d.d){if(!j.d&&d.d){Jx(c,iD+Ku(e)+jD);f&&(mc(c.a,dD),c)}if(!d.c&&d.d&&!h){mc(c.a,bD);h=true}if((d.a==0||d.a==-2)&&d.f==0&&d.c){mc(c.a,dD);f=true}if(d.a==1&&d.f==0){mc(c.a,cD);f=false}if(d.a==-1&&j.a==-2){mc(c.a,cD);f=false}if(d.g&&d.c){mc(c.a,eD);Jx(c,Rv(d));mc(c.a,bD);f?Jx(b,Rv(d)):Jx(b,Rv(d).toLowerCase())}else{Jx(c,Rv(d));f?Jx(b,Rv(d).toLowerCase()):Jx(b,Rv(d))}d.d&&!i.d&&(mc(c.a,bD),c)}}mc(c.a,kD);mc(b.a,kD)}return new Ov(rc(c.a),rc(b.a))} +function Ro(){if(!Jo){xp('function __gwt_initWindowCloseHandler(beforeunload, unload) {\n var wnd = window\n , oldOnBeforeUnload = wnd.onbeforeunload\n , oldOnUnload = wnd.onunload;\n \n wnd.onbeforeunload = function(evt) {\n var ret, oldRet;\n try {\n ret = beforeunload();\n } finally {\n oldRet = oldOnBeforeUnload && oldOnBeforeUnload(evt);\n }\n // Avoid returning null as IE6 will coerce it into a string.\n // Ensure that "" gets returned properly.\n if (ret != null) {\n return ret;\n }\n if (oldRet != null) {\n return oldRet;\n }\n // returns undefined.\n };\n \n wnd.onunload = function(evt) {\n try {\n unload();\n } finally {\n oldOnUnload && oldOnUnload(evt);\n wnd.onresize = null;\n wnd.onscroll = null;\n wnd.onbeforeunload = null;\n wnd.onunload = null;\n }\n };\n \n // Remove the reference once we\'ve initialize the handler\n wnd.__gwt_initWindowCloseHandler = undefined;\n}\n',new zp);Jo=true}} +function Ru(a){var b,c,d,e,f,g,h,i,j,k,l,m;d=new Nx;h=new Nx;j=false;mc(h.a,'<html><h3>DNA: <EM class=promoter>Promoter<\/EM>');mc(h.a,'<EM class=terminator>Terminator<\/EM><\/h3><pre>\n');mc(d.a,'<h3>DNA: promoter, terminator<\/h3><pre>\n');mc(h.a,WC);mc(d.a,WC);for(k=0;k<a.b.length;k=k+10){k==0?(m=lB):k<100?(m=' '+k):(m=' '+k);mc(h.a,m);mc(d.a,m)}mc(h.a,XC);mc(d.a,XC);mc(h.a,WC);mc(d.a,WC);for(k=0;k<a.b.length;k=k+10){if(k>0){mc(h.a,YC);mc(d.a,YC)}}mc(h.a,XC);mc(d.a,XC);i=new Nx;f=new Nx;g=new Nx;e=new Nx;b=new Nx;c=new Nx;for(k=0;k<a.b.length;++k){l=hi(Oz(a.a,k),48);k==a.p&&(j=true);k==a.p+a.n.length&&(j=false);k==a.t&&(j=true);k==a.t+a.s.length&&(j=false);Jx(i,Yu(a,k,zx(l.b),l.g,j).b);Jx(f,Yu(a,k,ZC,l.g,j).b);Jx(g,Yu(a,k,Qv(l),l.g,j).b);Jx(e,Yu(a,k,zx(l.b),l.g,j).a);Jx(b,Yu(a,k,ZC,l.g,j).a);Jx(c,Yu(a,k,Qv(l),l.g,j).a)}mc(h.a,"5'-<span id='dna-strand'>");Jx(h,rc(i.a)+"<\/EM><\/span>-3'\n "+rc(f.a)+"<\/EM>\n3'-"+rc(g.a));mc(h.a,"<\/EM>-5'\n");mc(d.a,VC);Jx(d,rc(e.a)+"-3'\n "+rc(b.a)+"\n3'-"+rc(c.a));mc(d.a,"-5'\n");return new Ov(rc(h.a),rc(d.a))} +function Iu(a){if(ox(a,'UUU'))return CC;if(ox(a,'UUC'))return CC;if(ox(a,'UUA'))return DC;if(ox(a,'UUG'))return DC;if(ox(a,'CUU'))return DC;if(ox(a,'CUC'))return DC;if(ox(a,'CUA'))return DC;if(ox(a,'CUG'))return DC;if(ox(a,'AUU'))return EC;if(ox(a,'AUC'))return EC;if(ox(a,'AUA'))return EC;if(ox(a,FC))return 'Met';if(ox(a,'GUU'))return GC;if(ox(a,'GUC'))return GC;if(ox(a,'GUA'))return GC;if(ox(a,'GUG'))return GC;if(ox(a,'UCU'))return HC;if(ox(a,'UCC'))return HC;if(ox(a,'UCA'))return HC;if(ox(a,'UCG'))return HC;if(ox(a,'CCU'))return IC;if(ox(a,'CCC'))return IC;if(ox(a,'CCA'))return IC;if(ox(a,'CCG'))return IC;if(ox(a,'ACU'))return JC;if(ox(a,'ACC'))return JC;if(ox(a,'ACA'))return JC;if(ox(a,'ACG'))return JC;if(ox(a,'GCU'))return KC;if(ox(a,'GCC'))return KC;if(ox(a,'GCA'))return KC;if(ox(a,'GCG'))return KC;if(ox(a,'UAU'))return LC;if(ox(a,'UAC'))return LC;if(ox(a,'UAA'))return lB;if(ox(a,'UAG'))return lB;if(ox(a,'CAU'))return MC;if(ox(a,'CAC'))return MC;if(ox(a,'CAA'))return NC;if(ox(a,'CAG'))return NC;if(ox(a,'AAU'))return OC;if(ox(a,'AAC'))return OC;if(ox(a,'AAA'))return PC;if(ox(a,'AAG'))return PC;if(ox(a,'GAU'))return QC;if(ox(a,'GAC'))return QC;if(ox(a,'GAA'))return RC;if(ox(a,'GAG'))return RC;if(ox(a,'UGU'))return SC;if(ox(a,'UGC'))return SC;if(ox(a,'UGA'))return lB;if(ox(a,'UGG'))return 'Trp';if(ox(a,'CGU'))return TC;if(ox(a,'CGC'))return TC;if(ox(a,'CGA'))return TC;if(ox(a,'CGG'))return TC;if(ox(a,'AGU'))return HC;if(ox(a,'AGC'))return HC;if(ox(a,'AGA'))return TC;if(ox(a,'AGG'))return TC;if(ox(a,'GGU'))return UC;if(ox(a,'GGC'))return UC;if(ox(a,'GGA'))return UC;if(ox(a,'GGG'))return UC;return lB} +function kp(){$wnd.__gwt_globalEventArray==null&&($wnd.__gwt_globalEventArray=new Array);$wnd.__gwt_globalEventArray[$wnd.__gwt_globalEventArray.length]=fB(function(){return mo($wnd.event)});var d=fB(function(){var a=Fc;Fc=this;if($wnd.event.returnValue==null){$wnd.event.returnValue=true;if(!np()){Fc=a;return}}var b,c=this;while(c&&!(b=c.__listener)){c=c.parentElement}b&&!ki(b)&&ji(b,37)&&lo($wnd.event,c,b);Fc=a});var e=fB(function(){var a=$doc.createEventObject();$wnd.event.returnValue==null&&$wnd.event.srcElement.fireEvent&&$wnd.event.srcElement.fireEvent(OB,a);if(this.__eventBits&2){d.call(this)}else if($wnd.event.returnValue==null){$wnd.event.returnValue=true;np()}});var f=fB(function(){this.__gwtLastUnhandledEvent=$wnd.event.type;d.call(this)});var g=$moduleName.replace(/\./g,PB);$wnd['__gwt_dispatchEvent_'+g]=d;hp=(new Function(QB,'return function() { w.__gwt_dispatchEvent_'+g+'.call(this) }'))($wnd);$wnd['__gwt_dispatchDblClickEvent_'+g]=e;gp=(new Function(QB,'return function() { w.__gwt_dispatchDblClickEvent_'+g+RB))($wnd);$wnd['__gwt_dispatchUnhandledEvent_'+g]=f;jp=(new Function(QB,SB+g+RB))($wnd);ip=(new Function(QB,SB+g+'.call(w.event.srcElement)}'))($wnd);var h=fB(function(){d.call($doc.body)});var i=fB(function(){e.call($doc.body)});$doc.body.attachEvent(OB,h);$doc.body.attachEvent('onmousedown',h);$doc.body.attachEvent('onmouseup',h);$doc.body.attachEvent('onmousemove',h);$doc.body.attachEvent('onmousewheel',h);$doc.body.attachEvent('onkeydown',h);$doc.body.attachEvent('onkeypress',h);$doc.body.attachEvent('onkeyup',h);$doc.body.attachEvent('onfocus',h);$doc.body.attachEvent('onblur',h);$doc.body.attachEvent('ondblclick',i);$doc.body.attachEvent('oncontextmenu',h)} +--></script> +<script><!-- +var lB='',XC='\n',rB=' ',WC=' ',YC=' . |',aD=' N-',oB='(',MB=')',uD='+',DD=', ',ZB='-',kD="-3'\n",fD='-C',RB='.call(this)}',qC='0',fC='0px',zC='1',VC="5'-",qB=':',kB=': ',bD='<\/EM>',gD='<\/pre><h3>',cD='<\/u>',iD='<EM class=',eD='<EM class=selected>',$C='<font color=red>none<\/font>\n',dD='<u>',vD='=',jD='>',pD='A',AD='AAAAAAAAAAAAA',FC='AUG',KC='Ala',TC='Arg',OC='Asn',QC='Asp',rD='C',zD='CAAAG',vB='CENTER',tB='CSS1Compat',SC='Cys',qD='G',xD='GGGGG',yD='GUGCG',NC='Gln',RC='Glu',UC='Gly',MC='His',lD='INCORRECT',EC='Ile',wB='JUSTIFY',xB='LEFT',DC='Leu',PC='Lys',XB='Null widget handle. If you are creating a composite, ensure that initWidget() has been called.',mD='OK',CC='Phe',IC='Pro',yB='RIGHT',nC='Selected Base = ',HC='Ser',nB='String',YB='Style names cannot be empty',sD='T',wD='TATAA',JC='Thr',LC='Tyr',LD='UmbrellaException',GC='Val',BD='You did not make a single base substitution.',UD='[Lcom.google.gwt.dom.client.',PD='[Lcom.google.gwt.user.client.ui.',GD='[Ljava.lang.',PB='_',uC='absolute',oC='align',jC='cellPadding',iC='cellSpacing',WB='className',zB='click',tC='clip',ND='com.google.gwt.animation.client.',FD='com.google.gwt.core.client.',SD='com.google.gwt.core.client.impl.',TD='com.google.gwt.dom.client.',RD='com.google.gwt.event.dom.client.',WD='com.google.gwt.event.logical.shared.',MD='com.google.gwt.event.shared.',JD='com.google.gwt.i18n.client.',XD='com.google.gwt.text.shared.testing.',YD='com.google.gwt.touch.client.',OD='com.google.gwt.user.client.',VD='com.google.gwt.user.client.impl.',ID='com.google.gwt.user.client.ui.',KD='com.google.web.bindery.event.shared.',JB='dir',rC='display',sB='div',pB='function',tD='g',oD='genex-button',HD='genex.client.gx.',$D='genex.client.problems.',ZD='genex.client.requirements.',nD='genex_container',VB='height',jB='hidden',LB='ie8',ED='java.lang.',QD='java.util.',$B='left',KB='ltr',hD='mature-',AB='mousedown',BB='mousemove',CB='mouseout',DB='mouseover',EB='mouseup',BC='msie',sC='none',_C='none\n',mB='null',gB='offsetHeight',hB='offsetWidth',OB='onclick',TB='onload',wC='onresize',AC='opera',iB='overflow',mC='popupContent',aC='position',eC='px',vC='px, ',gC='rect(0px, 0px, 0px, 0px)',xC='relative',SB='return function() { w.__gwt_dispatchUnhandledEvent_',uB='rtl',NB='scroll',bC='table',cC='tbody',lC='td',_B='top',FB='touchcancel',GB='touchend',HB='touchmove',IB='touchstart',kC='tr',CD='value',pC='verticalAlign',dC='visibility',hC='visible',QB='w',UB='width',yC='zoom',ZC='|';var _,Mm={},UA={25:1,27:1},cB={60:1},PA={6:1,9:1,50:1,53:1,54:1},KA={50:1},HA={},ZA={46:1},aB={52:1},eB={50:1,57:1},WA={24:1,29:1,37:1,40:1,41:1,43:1,45:1},bB={58:1},$A={11:1,27:1},RA={29:1},SA={47:1,50:1,56:1},LA={50:1,56:1},OA={6:1,8:1,50:1,53:1,54:1},dB={59:1},NA={6:1,7:1,50:1,53:1,54:1},MA={5:1,6:1,50:1,53:1,54:1},VA={23:1,27:1},YA={44:1,50:1,53:1,54:1},IA={4:1,50:1},TA={27:1,36:1},JA={38:1},XA={24:1,29:1,37:1,40:1,41:1,42:1,43:1,45:1},_A={49:1},QA={10:1,50:1,53:1,54:1};Nm(1,-1,HA);_.eQ=function s(a){return this===a};_.gC=function t(){return this.cZ};_.hC=function u(){return Ib(this)};_.tS=function v(){return this.cZ.c+'@'+bx(this.hC())};_.toString=function(){return this.tS()};_.tM=GA;Nm(3,1,{});_.k=-1;_.n=false;_.o=false;_.p=null;_.q=-1;_.r=null;_.s=-1;_.t=false;Nm(4,1,{},C);_.a=null;Nm(5,1,{});Nm(6,1,{2:1});Nm(7,5,{});var G=null;Nm(8,7,{},M);Nm(10,1,JA);_.I=function W(){this.b||Rz(P,this);this.J()};_.b=false;_.c=0;var P;Nm(9,10,JA,X);_.J=function Y(){L(this.a)};_.a=null;Nm(11,6,{2:1,3:1},ab);_.a=null;_.b=null;Nm(12,1,{},db);Nm(17,1,LA);_.K=function kb(){return this.e};_.tS=function lb(){var a,b;a=this.cZ.c;b=this.K();return b!=null?a+kB+b:a};_.e=null;Nm(16,17,LA);Nm(15,16,LA,mb);Nm(14,15,LA,ob);_.K=function ub(){this.c==null&&(this.d=rb(this.b),this.a=this.a+kB+pb(this.b),this.c=oB+this.d+') '+tb(this.b)+this.a,undefined);return this.c};_.a=lB;_.b=null;_.c=null;_.d=null;Nm(21,1,{});var zb=0,Ab=0,Bb=0,Cb=-1;Nm(23,21,{},Ub);_.a=null;_.b=null;_.c=null;_.d=false;_.e=null;_.f=null;_.g=null;_.i=false;var Mb;Nm(24,1,{},_b);_.L=function ac(){this.a.d=true;Qb(this.a);this.a.d=false;return this.a.i=Rb(this.a)};_.a=null;Nm(25,1,{},cc);_.L=function dc(){this.a.d&&Zb(this.a.e,1);return this.a.i};_.a=null;Nm(28,1,{},kc);_.N=function lc(a){return ec(a)};var Fc=null;Nm(45,1,{50:1,53:1,54:1});_.eQ=function cd(a){return this===a};_.hC=function dd(){return Ib(this)};_.tS=function ed(){return this.a};_.a=null;_.b=0;Nm(44,45,MA);var fd,gd,hd,id,jd;Nm(46,44,MA,nd);Nm(47,44,MA,pd);Nm(48,44,MA,rd);Nm(49,44,MA,td);Nm(50,45,NA);var vd,wd,xd,yd,zd;Nm(51,50,NA,Dd);Nm(52,50,NA,Fd);Nm(53,50,NA,Hd);Nm(54,50,NA,Jd);Nm(55,45,OA);var Ld,Md,Nd,Od,Pd;Nm(56,55,OA,Td);Nm(57,55,OA,Vd);Nm(58,55,OA,Xd);Nm(59,55,OA,Zd);Nm(60,45,PA);var _d,ae,be,ce,de;Nm(61,60,PA,he);Nm(62,60,PA,je);Nm(63,60,PA,le);Nm(64,60,PA,ne);Nm(65,45,QA);var pe,qe,re,se,te,ue,ve,we,xe,ye;Nm(66,65,QA,Ce);Nm(67,65,QA,Ee);Nm(68,65,QA,Ge);Nm(69,65,QA,Ie);Nm(70,65,QA,Ke);Nm(71,65,QA,Me);Nm(72,65,QA,Oe);Nm(73,65,QA,Qe);Nm(74,65,QA,Se);Nm(80,1,{});_.tS=function Ze(){return 'An event type'};_.f=null;Nm(79,80,{});_.Q=function _e(){this.e=false;this.f=null};_.e=false;Nm(78,79,{});_.P=function ef(){return this.R()};_.a=null;_.b=null;var af=null;Nm(77,78,{});Nm(76,77,{});Nm(75,76,{},kf);_.O=function lf(a){hi(a,11).S(this)};_.R=function mf(){return hf};var hf;Nm(83,1,{});_.hC=function rf(){return this.c};_.tS=function sf(){return 'Event type'};_.c=0;var qf=0;Nm(82,83,{},tf);Nm(81,82,{12:1},uf);_.a=null;_.b=null;Nm(84,76,{},zf);_.O=function Af(a){yf(this,hi(a,13))};_.R=function Bf(){return wf};var wf;Nm(85,76,{},Gf);_.O=function Hf(a){Ff(this,hi(a,14))};_.R=function If(){return Df};var Df;Nm(86,76,{},Mf);_.O=function Nf(a){hi(hi(a,15),39)};_.R=function Of(){return Kf};var Kf;Nm(87,76,{},Sf);_.O=function Tf(a){hi(hi(a,16),39)};_.R=function Uf(){return Qf};var Qf;Nm(88,76,{},Zf);_.O=function $f(a){Yf(this,hi(a,17))};_.R=function _f(){return Wf};var Wf;Nm(89,1,{},dg);_.a=null;Nm(92,77,{});var gg=null;Nm(91,92,{},jg);_.O=function kg(a){yn(hi(hi(a,18),34).a)};_.R=function lg(){return hg};var hg;Nm(93,92,{},pg);_.O=function qg(a){yn(hi(hi(a,19),33).a)};_.R=function rg(){return ng};var ng;Nm(94,1,{},tg);Nm(95,92,{},yg);_.O=function zg(a){xg(this,hi(a,20))};_.R=function Ag(){return vg};var vg;Nm(96,92,{},Fg);_.O=function Gg(a){Eg(this,hi(a,21))};_.R=function Hg(){return Cg};var Cg;Nm(97,79,{},Lg);_.O=function Mg(a){Kg(this,hi(a,22))};_.P=function Og(){return Jg};_.a=false;var Jg=null;Nm(98,79,{},Rg);_.O=function Sg(a){hi(a,23).T(this)};_.P=function Ug(){return Qg};var Qg=null;Nm(99,79,{},Xg);_.O=function Yg(a){hi(a,25).U(this)};_.P=function $g(){return Wg};_.a=0;var Wg=null;Nm(100,79,{},ch);_.O=function dh(a){bh(hi(a,26))};_.P=function fh(){return ah};var ah=null;Nm(101,1,RA,kh,lh);_.V=function mh(a){ih(this,a)};_.a=null;_.b=null;Nm(104,1,{});Nm(103,104,{});_.a=null;_.b=0;_.c=false;Nm(102,103,{},Bh);Nm(105,1,{28:1},Dh);_.a=null;Nm(107,15,SA,Gh);_.a=null;Nm(106,107,SA,Jh);Nm(108,1,{27:1},Lh);Nm(110,45,{30:1,50:1,53:1,54:1},Uh);var Ph,Qh,Rh,Sh;Nm(111,1,{},Wh);_.qI=0;var ai,bi;Nm(120,1,{});Nm(121,1,{},Tm);var Sm=null;Nm(122,120,{},Wm);var Vm=null;Nm(123,1,{},$m);Nm(124,1,{},dn);_.a=0;_.b=0;_.c=null;_.d=null;_.e=null;Nm(125,1,{32:1},jn,kn);_.eQ=function ln(a){var b;if(!ji(a,32)){return false}b=hi(a,32);return this.a==b.a&&this.b==b.b};_.hC=function mn(){return ni(this.a)^ni(this.b)};_.tS=function nn(){return 'Point('+this.a+','+this.b+MB};_.a=0;_.b=0;Nm(126,1,{},Hn);_.a=null;_.b=null;_.c=false;_.f=null;_.g=null;_.n=null;_.o=null;_.p=null;_.r=false;_.s=null;var pn=null;Nm(127,1,{22:1,27:1},Jn);_.a=null;Nm(128,1,{21:1,27:1},Ln);_.a=null;Nm(129,1,{20:1,27:1},Nn);_.a=null;Nm(130,1,{19:1,27:1,33:1},Pn);_.a=null;Nm(131,1,{18:1,27:1,34:1},Rn);_.a=null;Nm(132,1,TA,Tn);_.W=function Un(a){var b;if(1==dp(a.d.type)){b=new jn(a.d.clientX||0,a.d.clientY||0);if(vn(this.a,b)||wn(this.a,b)){a.a=true;a.d.cancelBubble=true;Ic(a.d)}}};_.a=null;Nm(133,1,{},Xn);_.L=function Yn(){var a,b,c,d,e,f,g;if(this!=this.e.g){Wn(this);return false}a=cb(this.a);bn(this.d,a-this.c);this.c=a;an(this.d,a);e=Zm(this.d);e||Wn(this);Fn(this.e,this.d.d);d=ni(this.d.d.a);c=st(this.e.s);b=qt(this.e.s);f=rt(this.e.s);g=ni(this.d.d.b);if((f<=g||0>=g)&&(b<=d||c>=d)){Wn(this);return false}return e};_.c=0;_.d=null;_.e=null;_.f=null;Nm(134,1,UA,$n);_.U=function _n(a){Wn(this.a)};_.a=null;Nm(135,1,{},bo);_.L=function co(){var a,b,c;a=eb();b=new sz(this.a.q);while(b.b<b.d.zb()){c=hi(qz(b),35);a-c.b>=2500&&rz(b)}return this.a.q.b!=0};_.a=null;Nm(136,1,{35:1},go,ho);_.a=null;_.b=0;var io=null,jo=null;var ro=null;Nm(141,79,{},yo);_.O=function zo(a){hi(a,36).W(this);vo.c=false};_.P=function Bo(){return uo};_.Q=function Co(){wo(this)};_.a=false;_.b=false;_.c=false;_.d=null;var uo=null,vo=null;var Do=null;Nm(143,1,VA,Ho);_.T=function Io(a){while((Q(),P).b>0){R(hi(Oz(P,0),38))}};var Jo=false,Ko=null,Lo=0,Mo=0,No=false;Nm(145,79,{},Zo);_.O=function $o(a){oi(a);null.Jb()};_.P=function _o(){return Xo};var Xo;Nm(146,101,RA,bp);var cp=false;var gp=null,hp=null,ip=null,jp=null;Nm(149,1,RA,sp);_.Y=function tp(a){return decodeURI(a.replace('%23','#'))};_.V=function up(a){ih(this.a,a)};_.Z=function vp(a){a=a==null?lB:a;if(!ox(a,pp==null?lB:pp)){pp=a;eh(this)}};var pp=lB;Nm(152,1,{},zp);_.M=function Ap(){$wnd.__gwt_initWindowCloseHandler(fB(Uo),fB(To))};Nm(153,1,{},Cp);_.M=function Dp(){$wnd.__gwt_initWindowResizeHandler(fB(Vo))};Nm(158,1,{40:1,43:1});_.$=function Np(){return this.H};_._=function Op(a){po(this.H,VB,a)};_.ab=function Rp(a){po(this.H,UB,a)};_.tS=function Sp(){if(!this.H){return '(null handle)'}return this.H.outerHTML};_.H=null;Nm(157,158,WA);_.bb=function aq(){};_.cb=function bq(){};_.V=function cq(a){Wp(this,a)};_.db=function dq(){Xp(this)};_.X=function eq(a){Yp(this,a)};_.eb=function fq(){Zp(this)};_.fb=function gq(){};_.gb=function hq(){};_.D=false;_.E=0;_.F=null;_.G=null;Nm(156,157,WA);_.bb=function jq(){zq(this,(xq(),vq))};_.cb=function kq(){zq(this,(xq(),wq))};Nm(155,156,WA);_.ib=function oq(){return new tu(this.f)};_.hb=function pq(a){return mq(this,a)};Nm(154,155,WA);_.hb=function tq(a){return rq(this,a)};Nm(159,106,SA,yq);var vq,wq;Nm(160,1,{},Bq);_.jb=function Cq(a){a.db()};Nm(161,1,{},Eq);_.jb=function Fq(a){a.eb()};Nm(164,157,WA);_.db=function Jq(){var a;Xp(this);a=this.H.tabIndex;-1==a&&(this.H.tabIndex=0,undefined)};Nm(163,164,WA);Nm(162,163,WA,Lq);Nm(165,155,WA);_.d=null;_.e=null;Nm(168,156,WA);_.kb=function Vq(){return this.H};_.ib=function Wq(){return new Et(this)};_.hb=function Xq(a){return Rq(this,a)};_.C=null;Nm(167,168,WA);_.kb=function fr(){return Dc(this.H)};_.$=function gr(){return Ec(Dc(this.H))};_.lb=function hr(){$q(this)};_.W=function ir(a){a.c&&(a.d,false)&&(a.a=true)};_.gb=function jr(){this.A&&Hs(this.z,false,true)};_._=function kr(a){this.o=a;_q(this);a.length==0&&(this.o=null)};_.ab=function lr(a){this.p=a;_q(this);a.length==0&&(this.p=null)};_.k=false;_.n=false;_.o=null;_.p=null;_.q=null;_.s=null;_.t=false;_.u=false;_.v=-1;_.w=false;_.x=null;_.y=false;_.A=false;_.B=-1;Nm(166,167,WA);_.bb=function nr(){Xp(this.j)};_.cb=function or(){Zp(this.j)};_.ib=function pr(){return new Et(this.j)};_.hb=function qr(a){return Rq(this.j,a)};_.j=null;Nm(169,168,WA,tr);_.kb=function vr(){return this.a};_.a=null;_.b=null;Nm(170,166,WA,Fr);_.bb=function Hr(){try{Xp(this.j)}finally{Xp(this.a)}};_.cb=function Ir(){try{Zp(this.j)}finally{Zp(this.a)}};_.lb=function Jr(){Ar(this)};_.X=function Kr(a){switch(dp(a.type)){case 4:case 8:case 64:case 16:case 32:if(!this.f&&!Br(this,a)){return}}Yp(this,a)};_.W=function Lr(a){var b;b=a.d;!a.a&&dp(a.d.type)==4&&Br(this,b)&&Ic(b);a.c&&(a.d,false)&&(a.a=true)};_.a=null;_.b=0;_.c=0;_.d=0;_.e=0;_.f=false;_.g=null;_.i=0;Nm(171,1,UA,Nr);_.U=function Or(a){this.a.i=a.a};_.a=null;Nm(175,157,WA);_.a=null;Nm(174,175,WA,Wr);Nm(173,174,WA,Yr,Zr);Nm(172,173,WA,$r);Nm(176,1,{13:1,14:1,15:1,16:1,17:1,27:1,39:1},as);_.a=null;Nm(177,1,{},ds);_.a=null;_.b=null;_.c=null;var es,fs,gs;Nm(178,1,{});Nm(179,178,{},ks);_.a=null;var ls;Nm(180,1,{},os);_.a=null;Nm(181,165,WA,rs);_.hb=function ss(a){var b,c;c=Ec(a.H);b=mq(this,a);b&&tc(this.b,c);return b};_.b=null;Nm(182,1,UA,vs);_.U=function ws(a){us()};Nm(183,1,TA,ys);_.W=function zs(a){ar(this.a,a)};_.a=null;Nm(184,1,{26:1,27:1},Bs);_.a=null;Nm(185,3,{},Is);_.a=null;_.b=false;_.c=false;_.d=0;_.e=-1;_.f=null;_.g=null;_.i=false;Nm(186,10,JA,Ks);_.J=function Ls(){this.a.g=null;x(this.a,eb())};_.a=null;Nm(188,154,XA,Us);var Qs,Rs,Ss;Nm(189,1,{},Zs);_.jb=function $s(a){a.D&&a.eb()};Nm(190,1,VA,at);_.T=function bt(a){Ws()};Nm(191,188,XA,dt);Nm(192,1,{});var ft=null;Nm(193,192,{},mt);var jt=null,kt=null;Nm(194,168,WA,wt);_.kb=function xt(){return this.a};_.db=function yt(){Xp(this);this.b.__listener=this};_.eb=function zt(){this.b.__listener=null;Zp(this)};_._=function At(a){po(this.H,VB,a)};_.ab=function Bt(a){po(this.H,UB,a)};_.a=null;_.b=null;_.c=null;Nm(195,1,{},Et);_.mb=function Ft(){return this.a};_.nb=function Gt(){return Dt(this)};_.ob=function Ht(){!!this.b&&this.c.hb(this.b)};_.b=null;_.c=null;Nm(198,164,WA);_.X=function Mt(a){var b;b=dp(a.type);(b&896)!=0?Yp(this,a):Yp(this,a)};_.fb=function Nt(){};Nm(197,198,WA);Nm(196,197,WA,Pt);Nm(199,45,YA);var St,Tt,Ut,Vt,Wt;Nm(200,199,YA,$t);Nm(201,199,YA,au);Nm(202,199,YA,cu);Nm(203,199,YA,eu);Nm(204,165,WA,hu);_.hb=function iu(a){var b,c;c=Ec(a.H);b=mq(this,a);b&&tc(this.d,Ec(c));return b};Nm(205,1,{},pu);_.ib=function qu(){return new tu(this)};_.a=null;_.b=null;_.c=0;Nm(206,1,{},tu);_.mb=function uu(){return this.a<this.b.c-1};_.nb=function vu(){return su(this)};_.ob=function wu(){if(this.a<0||this.a>=this.b.c){throw new Yw}this.b.b.hb(this.b.a[this.a--])};_.a=-1;_.b=null;Nm(210,1,{},Bu);_.a=null;_.b=null;_.c=null;Nm(211,1,ZA,Du);_.M=function Eu(){sh(this.a,this.c,this.b)};_.a=null;_.b=null;_.c=null;Nm(212,1,ZA,Gu);_.M=function Hu(){uh(this.a,this.c,this.b)};_.a=null;_.b=null;_.c=null;Nm(214,1,{},Lu);_.a=0;Nm(215,1,{},Nu);_.a=0;_.b=0;_.c=0;Nm(216,1,{},bv);_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;_.f=0;_.g=0;_.i=0;_.j=null;_.k=null;_.n=null;_.o=0;_.p=0;_.q=null;_.r=null;_.s=null;_.t=0;Nm(217,1,{},mv);_.pb=function nv(a){var b,c;if(a==39){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1);b=iv(this,this.a,this.d);lv(this,b,this.d);this.b=b.b.b.length;b.b.f+1;dv(this)}if(a==37){--this.d;this.d<0&&(this.d=0);b=iv(this,this.a,this.d);lv(this,b,this.d);this.b=b.b.b.length;b.b.f+1;dv(this)}if(a==8||a==46){this.A=this.e;c=new Ox(this.a);Kx(c,this.d);this.a=rc(c.a);this.d>=0&&--this.d;b=iv(this,this.a,this.d);lv(this,b,this.d);this.e=Xu(b.b);this.b=b.b.b.length;dv(this)}};_.qb=function ov(a,b){var c,d;if(ox(a,pD)||ox(a,qD)||ox(a,rD)||ox(a,sD)){this.A=this.e;d=new Ox(this.a);Lx(d,this.d,a);this.a=rc(d.a);++this.d;c=iv(this,this.a,this.d);lv(this,c,this.d);this.e=Xu(c.b);this.b=c.b.b.length;c.b.f+1;dv(this)}if(ox(a,'a')||ox(a,tD)||ox(a,'c')||ox(a,'t')){this.A=this.e;d=new Ox(this.a);Mx(d,this.d,this.d+1,a.toUpperCase());this.a=rc(d.a);c=iv(this,this.a,this.d);lv(this,c,this.d);this.e=Xu(c.b);this.b=c.b.b.length;c.b.f+1;dv(this)}if(ox(a,uD)||ox(a,ZB)||ox(a,vD)||ox(a,PB)){if(ox(a,uD)||ox(a,vD)){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1)}else{--this.d;this.d<0&&(this.d=0)}c=iv(this,this.a,this.d);lv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;dv(this)}if(b==39){++this.d;this.d>this.a.length-1&&(this.d=this.a.length-1);c=iv(this,this.a,this.d);lv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;dv(this)}if(b==37){--this.d;this.d<0&&(this.d=0);c=iv(this,this.a,this.d);lv(this,c,this.d);this.b=c.b.b.length;c.b.f+1;dv(this)}};_.rb=function pv(a){var b;if(a>=0&&a<=this.b){b=iv(this,this.a,a);lv(this,b,a);this.b=b.b.b.length;this.d=a;dv(this)}};_.sb=function rv(a){var b;a!=null&&Lv(this.y,a);this.y.e=wD;this.y.g=xD;this.y.c=yD;this.y.b=zD;this.y.d=AD;this.f=this.y.a;this.a=this.y.a;this.b=this.a.length;this.C=this.y.e;this.D=this.y.f;this.G=this.y.g;this.u=this.y.c;this.t=this.y.b;this.z=this.y.d;(ox(this.u,sC)||ox(this.t,sC))&&(this.z=lB);b=iv(this,this.f,-1);this.g=b.b.e;this.i=b.b.q;this.b=b.b.b.length;this.e=Xu(b.b);Xr(this.r,b.a.b+'<\/pre><\/body><\/html>')};_.tb=function tv(a){var b,c,d,e,f;this.B=new aw;if(a==1){b=new yw;b.b=BD;$v(this.B,b);d=new vw;d.b='Your change does not make the mature mRNA shorter.';$v(this.B,d)}else if(a==2){b=new yw;b.b=BD;$v(this.B,b);d=new gw;d.b='Your change does not make the protein longer.';$v(this.B,d)}else if(a==3){b=new yw;b.b=BD;$v(this.B,b);d=new sw;d.b='Your change does not make the protein shorter.';$v(this.B,d)}else if(a==4){b=new yw;b.b=BD;$v(this.B,b);d=new mw;d.b='Your change does not prevent mRNA from being made.';$v(this.B,d);f=new jw;f.b='Your change does not prevent protein from being made';$v(this.B,f)}else if(a==5){c=new pw;c.a=c.a;c.b='Your protein does not have 5 amino acids.';$v(this.B,c);e=new dw;e.a=1;e.b='Your gene does not contain one intron.';$v(this.B,e)}};_.a=null;_.b=0;_.c=null;_.d=0;_.e=lB;_.f=null;_.g=lB;_.i=lB;_.j=null;_.k=null;_.n=false;_.o=null;_.p=null;_.q=null;_.r=null;_.s=null;_.t=null;_.u=null;_.v=null;_.w=null;_.x=null;_.z=null;_.A=lB;_.B=null;_.C=null;_.D=0;_.E=null;_.F=null;_.G=null;_.H=null;Nm(218,1,$A,wv);_.S=function xv(a){Ar(this.a.j);this.a.o.H[CD]=lB};_.a=null;Nm(219,1,{},zv);_.M=function Av(){fv(this.a);ev(this.a);gv(this.a);hv(this.a);typeof $wnd.genexIsReady===pB&&$wnd.genexIsReady()};_.a=null;Nm(220,1,$A,Cv);_.S=function Dv(a){var b,c;this.a.A=this.a.e;c=xc(this.a.o.H,CD);c=c.toUpperCase();c=sx(c,'[^AGCT]',lB);this.a.a=c;this.a.d=-1;b=iv(this.a,this.a.a,-1);lv(this.a,b,-1);this.a.e=Xu(b.b);this.a.b=b.b.b.length;Ar(this.a.j);dv(this.a)};_.a=null;Nm(221,1,$A,Fv);_.S=function Gv(a){var b;this.a.a=this.a.f;b=iv(this.a,this.a.a,-1);lv(this.a,b,-1);this.a.e=Xu(b.b);this.a.b=b.b.b.length;dv(this.a)};_.a=null;Nm(222,1,$A,Iv);_.S=function Jv(a){Yq(this.a.j)};_.a=null;Nm(223,1,{},Mv);_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;_.f=0;_.g=null;Nm(224,1,{},Ov);_.a=null;_.b=null;Nm(225,1,{48:1},Sv);_.a=0;_.b=0;_.c=false;_.d=false;_.e=0;_.f=0;_.g=false;Nm(226,1,{},Uv);_.a=null;_.b=null;Nm(227,1,{},Xv);_.tS=function Yv(){return Wv(this)};_.a=null;_.b=0;_.c=null;_.d=null;_.e=0;_.f=null;_.g=null;_.i=null;Nm(228,1,{},aw);_.a=null;Nm(230,1,_A);_.b='unassigned';Nm(229,230,_A,dw);_.ub=function ew(a){return a.b==this.a+1};_.a=0;Nm(231,230,_A,gw);_.ub=function hw(a){return a.c.length>a.i.length};Nm(232,230,_A,jw);_.ub=function kw(a){return ox(a.c,lB)};Nm(233,230,_A,mw);_.ub=function nw(a){return ox(a.d,lB)};Nm(234,230,_A,pw);_.ub=function qw(a){return a.c.length==this.a};_.a=0;Nm(235,230,_A,sw);_.ub=function tw(a){return a.c.length<a.i.length};Nm(236,230,_A,vw);_.ub=function ww(a){return a.d.length<a.g.length};Nm(237,230,_A,yw);_.ub=function zw(a){var b,c,d,e;e=a.f;b=a.a;if(e.length!=b.length)return false;d=0;for(c=0;c<e.length;++c){e.charCodeAt(c)!=b.charCodeAt(c)&&++d}if(d==1)return true;return false};Nm(238,15,LA,Bw);Nm(239,1,{50:1,51:1,53:1},Gw);_.eQ=function Hw(a){return ji(a,51)&&hi(a,51).a==this.a};_.hC=function Iw(){return this.a?1231:1237};_.tS=function Jw(){return this.a?'true':'false'};_.a=false;var Dw,Ew;Nm(240,1,{},Lw);_.tS=function Sw(){return ((this.a&2)!=0?'interface ':(this.a&1)!=0?lB:'class ')+this.c};_.a=0;_.b=0;_.c=null;Nm(241,15,LA,Uw);Nm(242,15,LA,Ww);Nm(243,15,LA,Yw,Zw);Nm(244,15,LA,_w,ax);Nm(248,15,LA,fx,gx);var hx;Nm(250,1,{50:1,55:1},kx);_.tS=function lx(){return this.a+'.'+this.c+'(Unknown Source'+(this.b>=0?qB+this.b:lB)+MB};_.a=null;_.b=0;_.c=null;_=String.prototype;_.cM={1:1,50:1,52:1,53:1};_.eQ=function xx(a){return ox(this,a)};_.hC=function yx(){return Fx(this)};_.tS=_.toString;var Ax,Bx=0,Cx;Nm(252,1,aB,Nx,Ox);_.tS=function Px(){return rc(this.a)};Nm(253,1,aB,Sx);_.tS=function Tx(){return rc(this.a)};Nm(254,15,LA,Vx);Nm(255,1,{});_.vb=function Zx(a){throw new Vx('Add not supported on this collection')};_.wb=function $x(a){var b;b=Xx(this.ib(),a);return !!b};_.xb=function _x(){return this.zb()==0};_.yb=function ay(a){var b;b=Xx(this.ib(),a);if(b){b.ob();return true}else{return false}};_.tS=function by(){return Yx(this)};Nm(257,1,bB);_.eQ=function fy(a){var b,c,d,e,f;if(a===this){return true}if(!ji(a,58)){return false}e=hi(a,58);if(this.d!=e.d){return false}for(c=new Ny((new Fy(e)).a);pz(c.a);){b=c.b=hi(qz(c.a),59);d=b.Bb();f=b.Cb();if(!(d==null?this.c:ji(d,1)?qB+hi(d,1) in this.e:py(this,d,~~xb(d)))){return false}if(!FA(f,d==null?this.b:ji(d,1)?oy(this,hi(d,1)):ny(this,d,~~xb(d)))){return false}}return true};_.hC=function gy(){var a,b,c;c=0;for(b=new Ny((new Fy(this)).a);pz(b.a);){a=b.b=hi(qz(b.a),59);c+=a.hC();c=~~c}return c};_.tS=function hy(){var a,b,c,d;d='{';a=false;for(c=new Ny((new Fy(this)).a);pz(c.a);){b=c.b=hi(qz(c.a),59);a?(d+=DD):(a=true);d+=lB+b.Bb();d+=vD;d+=lB+b.Cb()}return d+'}'};Nm(256,257,bB);_.Ab=function zy(a,b){return mi(a)===mi(b)||a!=null&&wb(a,b)};_.a=null;_.b=null;_.c=false;_.d=0;_.e=null;Nm(259,255,cB);_.eQ=function Cy(a){var b,c,d;if(a===this){return true}if(!ji(a,60)){return false}c=hi(a,60);if(c.zb()!=this.zb()){return false}for(b=c.ib();b.mb();){d=b.nb();if(!this.wb(d)){return false}}return true};_.hC=function Dy(){var a,b,c;a=0;for(b=this.ib();b.mb();){c=b.nb();if(c!=null){a+=xb(c);a=~~a}}return a};Nm(258,259,cB,Fy);_.wb=function Gy(a){return Ey(this,a)};_.ib=function Hy(){return new Ny(this.a)};_.yb=function Iy(a){var b;if(Ey(this,a)){b=hi(a,59).Bb();vy(this.a,b);return true}return false};_.zb=function Jy(){return this.a.d};_.a=null;Nm(260,1,{},Ny);_.mb=function Oy(){return pz(this.a)};_.nb=function Py(){return Ly(this)};_.ob=function Qy(){My(this)};_.a=null;_.b=null;_.c=null;Nm(262,1,dB);_.eQ=function Ty(a){var b;if(ji(a,59)){b=hi(a,59);if(FA(this.Bb(),b.Bb())&&FA(this.Cb(),b.Cb())){return true}}return false};_.hC=function Uy(){var a,b;a=0;b=0;this.Bb()!=null&&(a=xb(this.Bb()));this.Cb()!=null&&(b=xb(this.Cb()));return a^b};_.tS=function Vy(){return this.Bb()+vD+this.Cb()};Nm(261,262,dB,Wy);_.Bb=function Xy(){return null};_.Cb=function Yy(){return this.a.b};_.Db=function Zy(a){return ty(this.a,a)};_.a=null;Nm(263,262,dB,_y);_.Bb=function az(){return this.a};_.Cb=function bz(){return oy(this.b,this.a)};_.Db=function cz(a){return uy(this.b,this.a,a)};_.a=null;_.b=null;Nm(264,255,{57:1});_.Eb=function ez(a,b){throw new Vx('Add not supported on this list')};_.vb=function fz(a){this.Eb(this.zb(),a);return true};_.eQ=function hz(a){var b,c,d,e,f;if(a===this){return true}if(!ji(a,57)){return false}f=hi(a,57);if(this.zb()!=f.zb()){return false}d=new sz(this);e=f.ib();while(d.b<d.d.zb()){b=qz(d);c=qz(e);if(!(b==null?c==null:wb(b,c))){return false}}return true};_.hC=function iz(){var a,b,c;b=1;a=new sz(this);while(a.b<a.d.zb()){c=qz(a);b=31*b+(c==null?0:xb(c));b=~~b}return b};_.ib=function kz(){return new sz(this)};_.Gb=function lz(){return new yz(this,0)};_.Hb=function mz(a){return new yz(this,a)};_.Ib=function nz(a){throw new Vx('Remove not supported on this list')};Nm(265,1,{},sz);_.mb=function tz(){return pz(this)};_.nb=function uz(){return qz(this)};_.ob=function vz(){rz(this)};_.b=0;_.c=-1;_.d=null;Nm(266,265,{},yz);_.a=null;Nm(267,259,cB,Bz);_.wb=function Cz(a){return ly(this.a,a)};_.ib=function Dz(){return Az(this)};_.zb=function Ez(){return this.b.a.d};_.a=null;_.b=null;Nm(268,1,{},Hz);_.mb=function Iz(){return pz(this.a.a)};_.nb=function Jz(){return Gz(this)};_.ob=function Kz(){My(this.a)};_.a=null;Nm(269,264,eB,Tz);_.Eb=function Uz(a,b){(a<0||a>this.b)&&jz(a,this.b);bA(this.a,a,0,b);++this.b};_.vb=function Vz(a){return Mz(this,a)};_.wb=function Wz(a){return Pz(this,a,0)!=-1};_.Fb=function Xz(a){return Oz(this,a)};_.xb=function Yz(){return this.b==0};_.Ib=function Zz(a){return Qz(this,a)};_.yb=function $z(a){return Rz(this,a)};_.zb=function _z(){return this.b};_.b=0;var cA;Nm(271,264,eB,fA);_.wb=function gA(a){return false};_.Fb=function hA(a){throw new _w};_.zb=function iA(){return 0};Nm(272,256,{50:1,58:1},lA);Nm(273,259,{50:1,60:1},qA);_.vb=function rA(a){return nA(this,a)};_.wb=function sA(a){return ly(this.a,a)};_.xb=function tA(){return this.a.d==0};_.ib=function uA(){return Az(ey(this.a))};_.yb=function vA(a){return pA(this,a)};_.zb=function wA(){return this.a.d};_.tS=function xA(){return Yx(ey(this.a))};_.a=null;Nm(274,262,dB,zA);_.Bb=function AA(){return this.a};_.Cb=function BA(){return this.b};_.Db=function CA(a){var b;b=this.b;this.b=a;return b};_.a=null;_.b=null;Nm(275,15,LA,EA);var fB=Fb; +--></script> +<script><!-- +var Wl=Nw(ED,'Object',1),zi=Nw(FD,'JavaScriptObject$',18),Gm=Mw(GD,'Object;',277),am=Nw(ED,'Throwable',17),Rl=Nw(ED,'Exception',16),Xl=Nw(ED,'RuntimeException',15),Yl=Nw(ED,'StackTraceElement',250),Hm=Mw(GD,'StackTraceElement;',278),Kj=Nw('com.google.gwt.lang.','SeedUtil',117),Ql=Nw(ED,'Enum',45),wl=Nw(HD,'GenexGWT',217),sl=Nw(HD,'GenexGWT$1',218),tl=Nw(HD,'GenexGWT$2',220),ul=Nw(HD,'GenexGWT$3',221),vl=Nw(HD,'GenexGWT$4',222),rl=Nw(HD,'GenexGWT$1DeferredCommand',219),Ai=Nw(FD,'Scheduler',21),Nl=Nw(ED,'Boolean',239),wm=Mw(lB,'[C',279),Pl=Nw(ED,'Class',240),_l=Nw(ED,nB,2),Im=Mw(GD,'String;',280),Ol=Nw(ED,'ClassCastException',241),$l=Nw(ED,'StringBuilder',253),Ml=Nw(ED,'ArrayStoreException',238),yi=Nw(FD,'JavaScriptException',14),Xk=Nw(ID,'UIObject',158),fl=Nw(ID,'Widget',157),Dk=Nw(ID,'LabelBase',175),Ek=Nw(ID,'Label',174),yk=Nw(ID,'HTML',173),zk=Nw(ID,'HasHorizontalAlignment$AutoHorizontalAlignmentConstant',178),Ak=Nw(ID,'HasHorizontalAlignment$HorizontalAlignmentConstant',179),Jj=Ow(JD,'HasDirection$Direction',110,Vh),Dm=Mw('[Lcom.google.gwt.i18n.client.','HasDirection$Direction;',281),Fk=Nw(ID,'Panel',156),Uk=Nw(ID,'SimplePanel',168),Sk=Nw(ID,'ScrollPanel',194),Tk=Nw(ID,'SimplePanel$1',195),pk=Nw(ID,'ComplexPanel',155),ik=Nw(ID,'AbsolutePanel',154),nl=Nw(KD,LD,107),Hj=Nw(MD,LD,106),lk=Nw(ID,'AttachDetachException',159),jk=Nw(ID,'AttachDetachException$1',160),kk=Nw(ID,'AttachDetachException$2',161),Pk=Nw(ID,'RootPanel',188),Ok=Nw(ID,'RootPanel$DefaultRootPanel',191),Mk=Nw(ID,'RootPanel$1',189),Nk=Nw(ID,'RootPanel$2',190),Lk=Nw(ID,'PopupPanel',167),qk=Nw(ID,'DecoratedPopupPanel',166),vk=Nw(ID,'DialogBox',170),tk=Nw(ID,'DialogBox$CaptionImpl',172),uk=Nw(ID,'DialogBox$MouseHandler',176),sk=Nw(ID,'DialogBox$1',171),wi=Nw(ND,'Animation',3),Kk=Nw(ID,'PopupPanel$ResizeAnimation',185),ck=Nw(OD,'Timer',10),Jk=Nw(ID,'PopupPanel$ResizeAnimation$1',186),Gk=Nw(ID,'PopupPanel$1',182),Hk=Nw(ID,'PopupPanel$3',183),Ik=Nw(ID,'PopupPanel$4',184),pi=Nw(ND,'Animation$1',4),vi=Nw(ND,'AnimationScheduler',5),qi=Nw(ND,'AnimationScheduler$AnimationHandle',6),bk=Nw(OD,'Timer$1',143),il=Nw(KD,'Event',80),Dj=Nw(MD,'GwtEvent',79),ak=Nw(OD,'Event$NativePreviewEvent',141),gl=Nw(KD,'Event$Type',83),Cj=Nw(MD,'GwtEvent$Type',82),ok=Nw(ID,'CellPanel',165),cl=Nw(ID,'VerticalPanel',204),Bk=Nw(ID,'HasVerticalAlignment$VerticalAlignmentConstant',180),xk=Nw(ID,'FocusWidget',164),bl=Nw(ID,'ValueBoxBase',198),Vk=Nw(ID,'TextBoxBase',197),Wk=Nw(ID,'TextBox',196),al=Ow(ID,'ValueBoxBase$TextAlignment',199,Yt),Em=Mw(PD,'ValueBoxBase$TextAlignment;',282),Yk=Ow(ID,'ValueBoxBase$TextAlignment$1',200,null),Zk=Ow(ID,'ValueBoxBase$TextAlignment$2',201,null),$k=Ow(ID,'ValueBoxBase$TextAlignment$3',202,null),_k=Ow(ID,'ValueBoxBase$TextAlignment$4',203,null),Ij=Nw(JD,'AutoDirectionHandler',108),mk=Nw(ID,'ButtonBase',163),nk=Nw(ID,'Button',162),Ck=Nw(ID,'HorizontalPanel',181),xl=Nw(HD,'GenexParams',223),om=Nw(QD,'AbstractMap',257),hm=Nw(QD,'AbstractHashMap',256),sm=Nw(QD,'HashMap',272),cm=Nw(QD,'AbstractCollection',255),pm=Nw(QD,'AbstractSet',259),em=Nw(QD,'AbstractHashMap$EntrySet',258),dm=Nw(QD,'AbstractHashMap$EntrySetIterator',260),nm=Nw(QD,'AbstractMapEntry',262),fm=Nw(QD,'AbstractHashMap$MapEntryNull',261),gm=Nw(QD,'AbstractHashMap$MapEntryString',263),mm=Nw(QD,'AbstractMap$1',267),lm=Nw(QD,'AbstractMap$1$1',268),tm=Nw(QD,'HashSet',273),jj=Nw(RD,'DomEvent',78),kj=Nw(RD,'HumanInputEvent',77),mj=Nw(RD,'MouseEvent',76),hj=Nw(RD,'ClickEvent',75),ij=Nw(RD,'DomEvent$Type',81),rk=Nw(ID,'DecoratorPanel',169),Di=Nw(SD,'SchedulerImpl',23),Bi=Nw(SD,'SchedulerImpl$Flusher',24),Ci=Nw(SD,'SchedulerImpl$Rescuer',25),Ei=Nw(SD,'StackTraceCreator$Collector',28),xi=Nw(FD,'Duration',12),gj=Ow(TD,'Style$Unit',65,Ae),Cm=Mw(UD,'Style$Unit;',283),Ji=Ow(TD,'Style$Display',44,ld),ym=Mw(UD,'Style$Display;',284),Oi=Ow(TD,'Style$Overflow',50,Bd),zm=Mw(UD,'Style$Overflow;',285),Ti=Ow(TD,'Style$Position',55,Rd),Am=Mw(UD,'Style$Position;',286),Yi=Ow(TD,'Style$TextAlign',60,fe),Bm=Mw(UD,'Style$TextAlign;',287),Zi=Ow(TD,'Style$Unit$1',66,null),$i=Ow(TD,'Style$Unit$2',67,null),_i=Ow(TD,'Style$Unit$3',68,null),aj=Ow(TD,'Style$Unit$4',69,null),bj=Ow(TD,'Style$Unit$5',70,null),cj=Ow(TD,'Style$Unit$6',71,null),dj=Ow(TD,'Style$Unit$7',72,null),ej=Ow(TD,'Style$Unit$8',73,null),fj=Ow(TD,'Style$Unit$9',74,null),Fi=Ow(TD,'Style$Display$1',46,null),Gi=Ow(TD,'Style$Display$2',47,null),Hi=Ow(TD,'Style$Display$3',48,null),Ii=Ow(TD,'Style$Display$4',49,null),Ki=Ow(TD,'Style$Overflow$1',51,null),Li=Ow(TD,'Style$Overflow$2',52,null),Mi=Ow(TD,'Style$Overflow$3',53,null),Ni=Ow(TD,'Style$Overflow$4',54,null),Pi=Ow(TD,'Style$Position$1',56,null),Qi=Ow(TD,'Style$Position$2',57,null),Ri=Ow(TD,'Style$Position$3',58,null),Si=Ow(TD,'Style$Position$4',59,null),Ui=Ow(TD,'Style$TextAlign$1',61,null),Vi=Ow(TD,'Style$TextAlign$2',62,null),Wi=Ow(TD,'Style$TextAlign$3',63,null),Xi=Ow(TD,'Style$TextAlign$4',64,null),wk=Nw(ID,'DirectionalTextHelper',177),bm=Nw(ED,'UnsupportedOperationException',254),Tl=Nw(ED,'IllegalStateException',243),dk=Nw(OD,'Window$ClosingEvent',145),Fj=Nw(MD,'HandlerManager',101),ek=Nw(OD,'Window$WindowHandlers',146),hl=Nw(KD,'EventBus',104),ml=Nw(KD,'SimpleEventBus',103),Ej=Nw(MD,'HandlerManager$Bus',102),jl=Nw(KD,'SimpleEventBus$1',210),kl=Nw(KD,'SimpleEventBus$2',211),ll=Nw(KD,'SimpleEventBus$3',212),el=Nw(ID,'WidgetCollection',205),Fm=Mw(PD,'Widget;',288),dl=Nw(ID,'WidgetCollection$WidgetIterator',206),Vl=Nw(ED,'NullPointerException',248),Sl=Nw(ED,'IllegalArgumentException',242),Rk=Nw(ID,'ScrollImpl',192),Qk=Nw(ID,'ScrollImpl$ScrollImplTrident',193),Zl=Nw(ED,'StringBuffer',252),gk=Nw(VD,'WindowImplIE$1',152),hk=Nw(VD,'WindowImplIE$2',153),zj=Nw(WD,'CloseEvent',98),yj=Nw(WD,'AttachEvent',97),lj=Nw(RD,'MouseDownEvent',84),qj=Nw(RD,'MouseUpEvent',88),nj=Nw(RD,'MouseMoveEvent',85),pj=Nw(RD,'MouseOverEvent',87),oj=Nw(RD,'MouseOutEvent',86),Lj=Nw('com.google.gwt.text.shared.','AbstractRenderer',120),Nj=Nw(XD,'PassthroughRenderer',122),Mj=Nw(XD,'PassthroughParser',121),rj=Nw(RD,'PrivateMap',89),Gj=Nw(MD,'LegacyHandlerWrapper',105),_j=Nw(YD,'TouchScroller',126),$j=Nw(YD,'TouchScroller$TemporalPoint',136),Yj=Nw(YD,'TouchScroller$MomentumCommand',133),Zj=Nw(YD,'TouchScroller$MomentumTouchRemovalCommand',135),Xj=Nw(YD,'TouchScroller$MomentumCommand$1',134),Rj=Nw(YD,'TouchScroller$1',127),Sj=Nw(YD,'TouchScroller$2',128),Tj=Nw(YD,'TouchScroller$3',129),Uj=Nw(YD,'TouchScroller$4',130),Vj=Nw(YD,'TouchScroller$5',131),Wj=Nw(YD,'TouchScroller$6',132),vm=Nw(QD,'NoSuchElementException',275),um=Nw(QD,'MapEntryImpl',274),Ul=Nw(ED,'IndexOutOfBoundsException',244),vj=Nw(RD,'TouchEvent',92),xj=Nw(RD,'TouchStartEvent',96),uj=Nw(RD,'TouchEvent$TouchSupportDetector',94),wj=Nw(RD,'TouchMoveEvent',95),tj=Nw(RD,'TouchEndEvent',93),sj=Nw(RD,'TouchCancelEvent',91),Oj=Nw(YD,'DefaultMomentum',123),Pj=Nw(YD,'Momentum$State',124),km=Nw(QD,'AbstractList',264),qm=Nw(QD,'ArrayList',269),im=Nw(QD,'AbstractList$IteratorImpl',265),jm=Nw(QD,'AbstractList$ListIteratorImpl',266),Al=Nw(HD,'VisibleGene',226),ql=Nw(HD,'Gene',216),Il=Nw(ZD,'Requirement',230),Hl=Nw(ZD,'ProteinLengthRequirement',234),Dl=Nw(ZD,'IntronNumberRequirement',229),Cl=Nw($D,'Problem',228),Ll=Nw(ZD,'SingleMutationRequirement',237),Kl=Nw(ZD,'ShortermRNARequirement',236),El=Nw(ZD,'LongerProteinRequirement',231),Jl=Nw(ZD,'ShorterProteinRequirement',235),Gl=Nw(ZD,'NomRNARequirement',233),Fl=Nw(ZD,'NoProteinRequirement',232),Aj=Nw(WD,'ResizeEvent',99),yl=Nw(HD,'HTMLContainer',224),fk=Nw(VD,'HistoryImpl',149),zl=Nw(HD,'Nucleotide',225),pl=Nw(HD,'Exon',215),Bl=Nw($D,'GenexState',227),Bj=Nw(WD,'ValueChangeEvent',100),rm=Nw(QD,'Collections$EmptyList',271),ol=Nw(HD,'ColorSequencer',214),ui=Nw(ND,'AnimationSchedulerImpl',7),ti=Nw(ND,'AnimationSchedulerImplTimer',8),si=Nw(ND,'AnimationSchedulerImplTimer$AnimationHandleImpl',11),xm=Mw('[Lcom.google.gwt.animation.client.','AnimationSchedulerImplTimer$AnimationHandleImpl;',289),ri=Nw(ND,'AnimationSchedulerImplTimer$1',9),Qj=Nw(YD,'Point',125);$stats && $stats({moduleName:'genex',sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalEnd'});if ($wnd.genex) $wnd.genex.onScriptLoad(); +--></script></body></html> \ No newline at end of file diff --git a/common/static/js/capa/genex/clear.cache.gif b/common/static/js/capa/genex/clear.cache.gif new file mode 100644 index 0000000000000000000000000000000000000000..e565824aafafe632011b281cba976baf8b3ba89a Binary files /dev/null and b/common/static/js/capa/genex/clear.cache.gif differ diff --git a/common/static/js/capa/genex/genex.css b/common/static/js/capa/genex/genex.css new file mode 100644 index 0000000000000000000000000000000000000000..a05f31110bcc063ab74b424ec4fc403ac427edfc --- /dev/null +++ b/common/static/js/capa/genex/genex.css @@ -0,0 +1,109 @@ +.genex-button { + margin-right: -8px; + height: 40px !important; +} + +.genex-label { + /*font: normal normal normal 10pt/normal 'Open Sans', Verdana, Geneva, sans-serif !important;*/ + /*padding: 4px 0px 0px 10px !important;*/ + font-family: sans-serif !important; + font-size: 13px !important; + font-style: normal !important; + font-variant: normal !important; + font-weight: bold !important; + padding-top: 6px !important; + margin-left: 18px; +} + +.gwt-HTML { + cursor: default; + overflow-x: auto !important; + overflow-y: auto !important; + background-color: rgb(248, 248, 248) !important; +} + +.genex-scrollpanel { + word-wrap: normal !important; + white-space: pre !important; +} + +pre, #dna-strand { + font-family: 'courier new', courier !important; + font-size: 13px !important; + font-style: normal !important; + font-variant: normal !important; + font-weight: normal !important; + border-style: none !important; + background-color: rgb(248, 248, 248) !important; + word-wrap: normal !important; + white-space: pre !important; + overflow-x: visible !important; + overflow-y: visible !important; +} + +.gwt-DialogBox .Caption { + background: #F1F1F1; + padding: 4px 8px 4px 4px; + cursor: default; + font-family: Arial Unicode MS, Arial, sans-serif; + font-weight: bold; + border-bottom: 1px solid #bbbbbb; + border-top: 1px solid #D2D2D2; +} +.gwt-DialogBox .dialogContent { +} +.gwt-DialogBox .dialogMiddleCenter { + padding: 3px; + background: white; +} +.gwt-DialogBox .dialogBottomCenter { +} +.gwt-DialogBox .dialogMiddleLeft { +} +.gwt-DialogBox .dialogMiddleRight { +} +.gwt-DialogBox .dialogTopLeftInner { + width: 10px; + height: 8px; + zoom: 1; +} +.gwt-DialogBox .dialogTopRightInner { + width: 12px; + zoom: 1; +} +.gwt-DialogBox .dialogBottomLeftInner { + width: 10px; + height: 12px; + zoom: 1; +} +.gwt-DialogBox .dialogBottomRightInner { + width: 12px; + height: 12px; + zoom: 1; +} +.gwt-DialogBox .dialogTopLeft { +} +.gwt-DialogBox .dialogTopRight { +} +.gwt-DialogBox .dialogBottomLeft { +} +.gwt-DialogBox .dialogBottomRight { +} +* html .gwt-DialogBox .dialogTopLeftInner { + width: 10px; + overflow: hidden; +} +* html .gwt-DialogBox .dialogTopRightInner { + width: 12px; + overflow: hidden; +} +* html .gwt-DialogBox .dialogBottomLeftInner { + width: 10px; + height: 12px; + overflow: hidden; +} +* html .gwt-DialogBox .dialogBottomRightInner { + width: 12px; + height: 12px; + overflow: hidden; +} \ No newline at end of file diff --git a/common/static/js/capa/genex/genex.nocache.js b/common/static/js/capa/genex/genex.nocache.js new file mode 100644 index 0000000000000000000000000000000000000000..07da0382346e5a305833f5436f70a161003f875b --- /dev/null +++ b/common/static/js/capa/genex/genex.nocache.js @@ -0,0 +1,18 @@ +function genex(){var P='',xb='" for "gwt:onLoadErrorFn"',vb='" for "gwt:onPropertyErrorFn"',ib='"><\/script>',Z='#',Xb='.cache.html',_='/',lb='//',Qb='026A6180B5959B8660E084245FEE5E9E',Rb='1F433010E1134C95BF6CB43F552F3019',Sb='2DDA730EDABB80B88A6B0DFA3AFEACA2',Tb='4EEB1DCF4B30D366C27968D1B5C0BD04',Ub='5033ABB047340FB9346B622E2CC7107D',Wb=':',pb='::',dc='<script defer="defer">genex.onInjectionDone(\'genex\')<\/script>',hb='<script id="',sb='=',$='?',ub='Bad handler "',Vb='DF3D3A7FAEE63D711CF2D95BDB3F538C',cc='DOMContentLoaded',jb='SCRIPT',gb='__gwt_marker_genex',kb='base',cb='baseUrl',T='begin',S='bootstrap',bb='clear.cache.gif',rb='content',Y='end',Kb='gecko',Lb='gecko1_8',Q='genex',Yb='genex.css',eb='genex.nocache.js',ob='genex::',U='gwt.codesvr=',V='gwt.hosted=',W='gwt.hybrid',wb='gwt:onLoadErrorFn',tb='gwt:onPropertyErrorFn',qb='gwt:property',bc='head',Ob='hosted.html?genex',ac='href',Jb='ie6',Ib='ie8',Hb='ie9',yb='iframe',ab='img',zb="javascript:''",Zb='link',Nb='loadExternalRefs',mb='meta',Bb='moduleRequested',X='moduleStartup',Gb='msie',nb='name',Db='opera',Ab='position:absolute;width:0;height:0;border:none',$b='rel',Fb='safari',db='script',Pb='selectingPermutation',R='startup',_b='stylesheet',fb='undefined',Mb='unknown',Cb='user.agent',Eb='webkit';var m=window,n=document,o=m.__gwtStatsEvent?function(a){return m.__gwtStatsEvent(a)}:null,p=m.__gwtStatsSessionId?m.__gwtStatsSessionId:null,q,r,s,t=P,u={},v=[],w=[],x=[],y=0,z,A;o&&o({moduleName:Q,sessionId:p,subSystem:R,evtGroup:S,millis:(new Date).getTime(),type:T});if(!m.__gwt_stylesLoaded){m.__gwt_stylesLoaded={}}if(!m.__gwt_scriptsLoaded){m.__gwt_scriptsLoaded={}}function B(){var b=false;try{var c=m.location.search;return (c.indexOf(U)!=-1||(c.indexOf(V)!=-1||m.external&&m.external.gwtOnLoad))&&c.indexOf(W)==-1}catch(a){}B=function(){return b};return b} +function C(){if(q&&r){var b=n.getElementById(Q);var c=b.contentWindow;if(B()){c.__gwt_getProperty=function(a){return H(a)}}genex=null;c.gwtOnLoad(z,Q,t,y);o&&o({moduleName:Q,sessionId:p,subSystem:R,evtGroup:X,millis:(new Date).getTime(),type:Y})}} +function D(){function e(a){var b=a.lastIndexOf(Z);if(b==-1){b=a.length}var c=a.indexOf($);if(c==-1){c=a.length}var d=a.lastIndexOf(_,Math.min(c,b));return d>=0?a.substring(0,d+1):P} +function f(a){if(a.match(/^\w+:\/\//)){}else{var b=n.createElement(ab);b.src=a+bb;a=e(b.src)}return a} +function g(){var a=F(cb);if(a!=null){return a}return P} +function h(){var a=n.getElementsByTagName(db);for(var b=0;b<a.length;++b){if(a[b].src.indexOf(eb)!=-1){return e(a[b].src)}}return P} +function i(){var a;if(typeof isBodyLoaded==fb||!isBodyLoaded()){var b=gb;var c;n.write(hb+b+ib);c=n.getElementById(b);a=c&&c.previousSibling;while(a&&a.tagName!=jb){a=a.previousSibling}if(c){c.parentNode.removeChild(c)}if(a&&a.src){return e(a.src)}}return P} +function j(){var a=n.getElementsByTagName(kb);if(a.length>0){return a[a.length-1].href}return P} +function k(){var a=n.location;return a.href==a.protocol+lb+a.host+a.pathname+a.search+a.hash} +var l=g();if(l==P){l=h()}if(l==P){l=i()}if(l==P){l=j()}if(l==P&&k()){l=e(n.location.href)}l=f(l);t=l;return l} +function E(){var b=document.getElementsByTagName(mb);for(var c=0,d=b.length;c<d;++c){var e=b[c],f=e.getAttribute(nb),g;if(f){f=f.replace(ob,P);if(f.indexOf(pb)>=0){continue}if(f==qb){g=e.getAttribute(rb);if(g){var h,i=g.indexOf(sb);if(i>=0){f=g.substring(0,i);h=g.substring(i+1)}else{f=g;h=P}u[f]=h}}else if(f==tb){g=e.getAttribute(rb);if(g){try{A=eval(g)}catch(a){alert(ub+g+vb)}}}else if(f==wb){g=e.getAttribute(rb);if(g){try{z=eval(g)}catch(a){alert(ub+g+xb)}}}}}} +function F(a){var b=u[a];return b==null?null:b} +function G(a,b){var c=x;for(var d=0,e=a.length-1;d<e;++d){c=c[a[d]]||(c[a[d]]=[])}c[a[e]]=b} +function H(a){var b=w[a](),c=v[a];if(b in c){return b}var d=[];for(var e in c){d[c[e]]=e}if(A){A(a,d,b)}throw null} +var I;function J(){if(!I){I=true;var a=n.createElement(yb);a.src=zb;a.id=Q;a.style.cssText=Ab;a.tabIndex=-1;n.body.appendChild(a);o&&o({moduleName:Q,sessionId:p,subSystem:R,evtGroup:X,millis:(new Date).getTime(),type:Bb});a.contentWindow.location.replace(t+L)}} +w[Cb]=function(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(Db)!=-1}())return Db;if(function(){return b.indexOf(Eb)!=-1}())return Fb;if(function(){return b.indexOf(Gb)!=-1&&n.documentMode>=9}())return Hb;if(function(){return b.indexOf(Gb)!=-1&&n.documentMode>=8}())return Ib;if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(b);if(a&&a.length==3)return c(a)>=6000}())return Jb;if(function(){return b.indexOf(Kb)!=-1}())return Lb;return Mb};v[Cb]={gecko1_8:0,ie6:1,ie8:2,ie9:3,opera:4,safari:5};genex.onScriptLoad=function(){if(I){r=true;C()}};genex.onInjectionDone=function(){q=true;o&&o({moduleName:Q,sessionId:p,subSystem:R,evtGroup:Nb,millis:(new Date).getTime(),type:Y});C()};E();D();var K;var L;if(B()){if(m.external&&(m.external.initModule&&m.external.initModule(Q))){m.location.reload();return}L=Ob;K=P}o&&o({moduleName:Q,sessionId:p,subSystem:R,evtGroup:S,millis:(new Date).getTime(),type:Pb});if(!B()){try{G([Fb],Qb);G([Lb],Rb);G([Hb],Sb);G([Jb],Tb);G([Db],Ub);G([Ib],Vb);K=x[H(Cb)];var M=K.indexOf(Wb);if(M!=-1){y=Number(K.substring(M+1));K=K.substring(0,M)}L=K+Xb}catch(a){return}}var N;function O(){if(!s){s=true;if(!__gwt_stylesLoaded[Yb]){var a=n.createElement(Zb);__gwt_stylesLoaded[Yb]=a;a.setAttribute($b,_b);a.setAttribute(ac,t+Yb);n.getElementsByTagName(bc)[0].appendChild(a)}C();if(n.removeEventListener){n.removeEventListener(cc,O,false)}if(N){clearInterval(N)}}} +if(n.addEventListener){n.addEventListener(cc,function(){J();O()},false)}var N=setInterval(function(){if(/loaded|complete/.test(n.readyState)){J();O()}},50);o&&o({moduleName:Q,sessionId:p,subSystem:R,evtGroup:S,millis:(new Date).getTime(),type:Y});o&&o({moduleName:Q,sessionId:p,subSystem:R,evtGroup:Nb,millis:(new Date).getTime(),type:T});n.write(dc)} +genex(); \ No newline at end of file diff --git a/common/static/js/capa/genex/hosted.html b/common/static/js/capa/genex/hosted.html new file mode 100644 index 0000000000000000000000000000000000000000..48b87f39b57ab6d65184f668dfca8883463976f8 --- /dev/null +++ b/common/static/js/capa/genex/hosted.html @@ -0,0 +1,365 @@ +<html> +<head><script> +var $wnd = parent; +var $doc = $wnd.document; +var $moduleName, $moduleBase, $entry +,$stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent(a);} : null +,$sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null; +// Lightweight metrics +if ($stats) { + var moduleFuncName = location.search.substr(1); + var moduleFunc = $wnd[moduleFuncName]; + var moduleName = moduleFunc ? moduleFunc.moduleName : "unknown"; + $stats({moduleName:moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date()).getTime(),type:'moduleEvalStart'}); +} +var $hostedHtmlVersion="2.1"; + +var gwtOnLoad; +var $hosted = "localhost:9997"; + +function loadIframe(url) { + var topDoc = window.top.document; + + // create an iframe + var iframeDiv = topDoc.createElement("div"); + iframeDiv.innerHTML = "<iframe scrolling=no frameborder=0 src='" + url + "'>"; + var iframe = iframeDiv.firstChild; + + // mess with the iframe style a little + var iframeStyle = iframe.style; + iframeStyle.position = "absolute"; + iframeStyle.borderWidth = "0"; + iframeStyle.left = "0"; + iframeStyle.top = "0"; + iframeStyle.width = "100%"; + iframeStyle.backgroundColor = "#ffffff"; + iframeStyle.zIndex = "1"; + iframeStyle.height = "100%"; + + // update the top window's document's body's style + var hostBodyStyle = window.top.document.body.style; + hostBodyStyle.margin = "0"; + hostBodyStyle.height = iframeStyle.height; + hostBodyStyle.overflow = "hidden"; + + // insert the iframe + topDoc.body.insertBefore(iframe, topDoc.body.firstChild); +} + +var ua = navigator.userAgent.toLowerCase(); +if (ua.indexOf("gecko") != -1) { + // install eval wrapper on FF to avoid EvalError problem + var __eval = window.eval; + window.eval = function(s) { + return __eval(s); + } +} +if (ua.indexOf("chrome") != -1) { + // work around __gwt_ObjectId appearing in JS objects + var hop = Object.prototype.hasOwnProperty; + Object.prototype.hasOwnProperty = function(prop) { + return prop != "__gwt_ObjectId" && hop.call(this, prop); + }; + // do the same in our parent as well -- see issue 4486 + // NOTE: this will have to be changed when we support non-iframe-based DevMode + var hop2 = parent.Object.prototype.hasOwnProperty; + parent.Object.prototype.hasOwnProperty = function(prop) { + return prop != "__gwt_ObjectId" && hop2.call(this, prop); + }; +} + +// wrapper to call JS methods, which we need both to be able to supply a +// different this for method lookup and to get the exception back +function __gwt_jsInvoke(thisObj, methodName) { + try { + var args = Array.prototype.slice.call(arguments, 2); + return [0, window[methodName].apply(thisObj, args)]; + } catch (e) { + return [1, e]; + } +} + +var __gwt_javaInvokes = []; +function __gwt_makeJavaInvoke(argCount) { + return __gwt_javaInvokes[argCount] || __gwt_doMakeJavaInvoke(argCount); +} + +function __gwt_doMakeJavaInvoke(argCount) { + // IE6 won't eval() anonymous functions except as r-values + var argList = ""; + for (var i = 0; i < argCount; i++) { + argList += ",p" + i; + } + var argListNoComma = argList.substring(1); + + return eval( + "__gwt_javaInvokes[" + argCount + "] =\n" + + " function(thisObj, dispId" + argList + ") {\n" + + " var result = __static(dispId, thisObj" + argList + ");\n" + + " if (result[0]) {\n" + + " throw result[1];\n" + + " } else {\n" + + " return result[1];\n" + + " }\n" + + " }\n" + ); +} + +/* + * This is used to create tear-offs of Java methods. Each function corresponds + * to exactly one dispId, and also embeds the argument count. We get the "this" + * value from the context in which the function is being executed. + * Function-object identity is preserved by caching in a sparse array. + */ +var __gwt_tearOffs = []; +var __gwt_tearOffGenerators = []; +function __gwt_makeTearOff(proxy, dispId, argCount) { + return __gwt_tearOffs[dispId] || __gwt_doMakeTearOff(dispId, argCount); +} + +function __gwt_doMakeTearOff(dispId, argCount) { + return __gwt_tearOffs[dispId] = + (__gwt_tearOffGenerators[argCount] || __gwt_doMakeTearOffGenerator(argCount))(dispId); +} + +function __gwt_doMakeTearOffGenerator(argCount) { + // IE6 won't eval() anonymous functions except as r-values + var argList = ""; + for (var i = 0; i < argCount; i++) { + argList += ",p" + i; + } + var argListNoComma = argList.substring(1); + + return eval( + "__gwt_tearOffGenerators[" + argCount + "] =\n" + + " function(dispId) {\n" + + " return function(" + argListNoComma + ") {\n" + + " var result = __static(dispId, this" + argList + ");\n" + + " if (result[0]) {\n" + + " throw result[1];\n" + + " } else {\n" + + " return result[1];\n" + + " }\n" + + " }\n" + + " }\n" + ); +} + +function __gwt_makeResult(isException, result) { + return [isException, result]; +} + +function __gwt_disconnected() { + // Prevent double-invocation. + window.__gwt_disconnected = new Function(); + // Do it in a timeout so we can be sure we have a clean stack. + window.setTimeout(__gwt_disconnected_impl, 1); +} + +function __gwt_disconnected_impl() { + __gwt_displayGlassMessage('GWT Code Server Disconnected', + 'Most likely, you closed GWT Development Mode. Or, you might have lost ' + + 'network connectivity. To fix this, try restarting GWT Development Mode and ' + + 'refresh this page.'); +} + +// Keep track of z-index to allow layering of multiple glass messages +var __gwt_glassMessageZIndex = 2147483647; + +// Note this method is also used by ModuleSpace.java +function __gwt_displayGlassMessage(summary, details) { + var topWin = window.top; + var topDoc = topWin.document; + var outer = topDoc.createElement("div"); + // Do not insert whitespace or outer.firstChild will get a text node. + outer.innerHTML = + '<div style="position:absolute;z-index:' + __gwt_glassMessageZIndex-- + + ';left:50px;top:50px;width:600px;color:#FFF;font-family:verdana;text-align:left;">' + + '<div style="font-size:30px;font-weight:bold;">' + summary + '</div>' + + '<div style="font-size:15px;">' + details + '</div>' + + '</div>' + + '<div style="position:absolute;z-index:' + __gwt_glassMessageZIndex-- + + ';left:0px;top:0px;right:0px;bottom:0px;filter:alpha(opacity=60);opacity:0.6;background-color:#000;"></div>' + ; + topDoc.body.appendChild(outer); + var glass = outer.firstChild; + var glassStyle = glass.style; + + // Scroll to the top and remove scrollbars. + topWin.scrollTo(0, 0); + if (topDoc.compatMode == "BackCompat") { + topDoc.body.style["overflow"] = "hidden"; + } else { + topDoc.documentElement.style["overflow"] = "hidden"; + } + + // Steal focus. + glass.focus(); + + if ((navigator.userAgent.indexOf("MSIE") >= 0) && (topDoc.compatMode == "BackCompat")) { + // IE quirks mode doesn't support right/bottom, but does support this. + glassStyle.width = "125%"; + glassStyle.height = "100%"; + } else if (navigator.userAgent.indexOf("MSIE 6") >= 0) { + // IE6 doesn't have a real standards mode, so we have to use hacks. + glassStyle.width = "125%"; // Get past scroll bar area. + // Nasty CSS; onresize would be better but the outer window won't let us add a listener IE. + glassStyle.setExpression("height", "document.documentElement.clientHeight"); + } + + $doc.title = summary + " [" + $doc.title + "]"; +} + +function findPluginObject() { + try { + return document.getElementById('pluginObject'); + } catch (e) { + return null; + } +} + +function findPluginEmbed() { + try { + return document.getElementById('pluginEmbed') + } catch (e) { + return null; + } +} + +function findPluginXPCOM() { + try { + return __gwt_HostedModePlugin; + } catch (e) { + return null; + } +} + +gwtOnLoad = function(errFn, modName, modBase){ + $moduleName = modName; + $moduleBase = modBase; + + // Note that the order is important + var pluginFinders = [ + findPluginXPCOM, + findPluginObject, + findPluginEmbed, + ]; + var topWin = window.top; + var url = topWin.location.href; + if (!topWin.__gwt_SessionID) { + var ASCII_EXCLAMATION = 33; + var ASCII_TILDE = 126; + var chars = []; + for (var i = 0; i < 16; ++i) { + chars.push(Math.floor(ASCII_EXCLAMATION + + Math.random() * (ASCII_TILDE - ASCII_EXCLAMATION + 1))); + } + topWin.__gwt_SessionID = String.fromCharCode.apply(null, chars); + } + var plugin = null; + for (var i = 0; i < pluginFinders.length; ++i) { + try { + var maybePlugin = pluginFinders[i](); + if (maybePlugin != null && maybePlugin.init(window)) { + plugin = maybePlugin; + break; + } + } catch (e) { + } + } + if (!plugin) { + // try searching for a v1 plugin for backwards compatibility + var found = false; + for (var i = 0; i < pluginFinders.length; ++i) { + try { + plugin = pluginFinders[i](); + if (plugin != null && plugin.connect($hosted, $moduleName, window)) { + return; + } + } catch (e) { + } + } + loadIframe("http://gwt.google.com/missing-plugin"); + } else { + if (plugin.connect(url, topWin.__gwt_SessionID, $hosted, $moduleName, + $hostedHtmlVersion)) { + window.onUnload = function() { + try { + // wrap in try/catch since plugins are not required to supply this + plugin.disconnect(); + } catch (e) { + } + }; + } else { + if (errFn) { + errFn(modName); + } else { + __gwt_displayGlassMessage( + "Plugin failed to connect to Development Mode server at " + simpleEscape($hosted), + "Follow the troubleshooting instructions at " + + "<a href='http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM'>" + + "http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM</a>"); + } + } + } +} + +function simpleEscape(originalString) { + return originalString.replace(/&/g,"&") + .replace(/</g,"<") + .replace(/>/g,">") + .replace(/\'/g, "'") + .replace(/\"/g,"""); +} + +window.onunload = function() { +}; + +// Lightweight metrics +window.fireOnModuleLoadStart = function(className) { + $stats && $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:className}); +}; + +window.__gwt_module_id = 0; +</script></head> +<body> +<font face='arial' size='-1'>This html file is for Development Mode support.</font> +<script><!-- +// Lightweight metrics +$stats && $stats({moduleName:$moduleName, sessionId:$sessionId, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'moduleEvalEnd'}); + +// OOPHM currently only supports IFrameLinker +var query = parent.location.search; +if (!findPluginXPCOM()) { + document.write('<embed id="pluginEmbed" type="application/x-gwt-hosted-mode" width="10" height="10">'); + document.write('</embed>'); + document.write('<object id="pluginObject" CLASSID="CLSID:1D6156B6-002B-49E7-B5CA-C138FB843B4E">'); + document.write('</object>'); +} + +// look for the old query parameter if we don't find the new one +var idx = query.indexOf("gwt.codesvr="); +if (idx >= 0) { + idx += 12; // "gwt.codesvr=".length() == 12 +} else { + idx = query.indexOf("gwt.hosted="); + if (idx >= 0) { + idx += 11; // "gwt.hosted=".length() == 11 + } +} +if (idx >= 0) { + var amp = query.indexOf("&", idx); + if (amp >= 0) { + $hosted = query.substring(idx, amp); + } else { + $hosted = query.substring(idx); + } + + // According to RFC 3986, some of this component's characters (e.g., ':') + // are reserved and *may* be escaped. + $hosted = decodeURIComponent($hosted); +} + +query = window.location.search.substring(1); +if (query && $wnd[query]) setTimeout($wnd[query].onScriptLoad, 1); +--></script></body></html> diff --git a/doc/public/course_data_formats/course_xml.rst b/doc/public/course_data_formats/course_xml.rst index fe25aa92f2f3e2ebc621cc5c495fdc44c97e8f71..56d831d972da2fecfe4327f98c2df46e070e8fd3 100644 --- a/doc/public/course_data_formats/course_xml.rst +++ b/doc/public/course_data_formats/course_xml.rst @@ -550,15 +550,84 @@ If you want to customize the courseware tabs displayed for your course, specify ********* Textbooks ********* -Support is currently provided for image-based and PDF-based textbooks. +Support is currently provided for image-based and PDF-based textbooks. In addition to enabling the display of textbooks in tabs (see above), specific information about the location of textbook content must be configured. Image-based Textbooks -^^^^^^^^^^^^^^^^^^^^^ +===================== + +Configuration +------------- + +Image-based textbooks are configured at the course level in the XML markup. Here is an example: + +.. code-block:: xml + + <course> + <textbook title="Textbook 1" book_url="https://www.example.com/textbook_1/" /> + <textbook title="Textbook 2" book_url="https://www.example.com/textbook_2/" /> + <chapter url_name="Overview"> + <chapter url_name="First week"> + </course> + + +Each `textbook` element is displayed on a different tab. The `title` attribute is used as the tab's name, and the `book_url` attribute points to the remote directory that contains the images of the text. Note the trailing slash on the end of the `book_url` attribute. + +The images must be stored in the same directory as the `book_url`, with filenames matching `pXXX.png`, where `XXX` is a three-digit number representing the page number (with leading zeroes as necessary). Pages start at `p001.png`. + +Each textbook must also have its own table of contents. This is read from the `book_url` location, by appending `toc.xml`. This file contains a `table_of_contents` parent element, with `entry` elements nested below it. Each `entry` has attributes for `name`, `page_label`, and `page`, as well as an optional `chapter` attribute. An arbitrary number of levels of nesting of `entry` elements within other `entry` elements is supported, but you're likely to only want two levels. The `page` represents the actual page to link to, while the `page_label` matches the displayed page number on that page. Here's an example: + +.. code-block:: xml + + <table_of_contents> + <entry page="1" page_label="i" name="Title" /> + <entry page="2" page_label="ii" name="Preamble"> + <entry page="2" page_label="ii" name="Copyright"/> + <entry page="3" page_label="iii" name="Brief Contents"/> + <entry page="5" page_label="v" name="Contents"/> + <entry page="9" page_label="1" name="About the Authors"/> + <entry page="10" page_label="2" name="Acknowledgments"/> + <entry page="11" page_label="3" name="Dedication"/> + <entry page="12" page_label="4" name="Preface"/> + </entry> + <entry page="15" page_label="7" name="Introduction to edX" chapter="1"> + <entry page="15" page_label="7" name="edX in the Modern World"/> + <entry page="18" page_label="10" name="The edX Method"/> + <entry page="18" page_label="10" name="A Description of edX"/> + <entry page="29" page_label="21" name="A Brief History of edX"/> + <entry page="51" page_label="43" name="Introduction to edX"/> + <entry page="56" page_label="48" name="Endnotes"/> + </entry> + <entry page="73" page_label="65" name="Art and Photo Credits" chapter="30"> + <entry page="73" page_label="65" name="Molecular Models"/> + <entry page="73" page_label="65" name="Photo Credits"/> + </entry> + <entry page="77" page_label="69" name="Index" /> + </table_of_contents> + + +Linking from Content +-------------------- + +It is possible to add links to specific pages in a textbook by using a URL that encodes the index of the textbook and the page number. The URL is of the form `/course/book/${bookindex}/$page}`. If the page is omitted from the URL, the first page is assumed. + +You can use a `customtag` to create a template for such links. For example, you can create a `book` template in the `customtag` directory, containing: + +.. code-block:: xml + + <img src="/static/images/icons/textbook_icon.png"/> More information given in <a href="/course/book/${book}/${page}">the text</a>. + +The course content can then link to page 25 using the `customtag` element: + +.. code-block:: xml + + <customtag book="0" page="25" impl="book"/> -TBD. PDF-based Textbooks -^^^^^^^^^^^^^^^^^^^ +=================== + +Configuration +------------- PDF-based textbooks are configured at the course level in the policy file. The JSON markup consists of an array of maps, with each map corresponding to a separate textbook. There are two styles to presenting PDF-based material. The first way is as a single PDF on a tab, which requires only a tab title and a URL for configuration. A second way permits the display of multiple PDFs that should be displayed together on a single view. For this view, a side panel of links is available on the left, allowing selection of a particular PDF to view. @@ -566,20 +635,51 @@ PDF-based textbooks are configured at the course level in the policy file. The "pdf_textbooks": [ {"tab_title": "Textbook 1", - "url": "https://www.example.com/book1.pdf" }, + "url": "https://www.example.com/thiscourse/book1/book1.pdf" }, {"tab_title": "Textbook 2", "chapters": [ - { "title": "Chapter 1", "url": "https://www.example.com/Chapter1.pdf" }, - { "title": "Chapter 2", "url": "https://www.example.com/Chapter2.pdf" }, - { "title": "Chapter 3", "url": "https://www.example.com/Chapter3.pdf" }, - { "title": "Chapter 4", "url": "https://www.example.com/Chapter4.pdf" }, - { "title": "Chapter 5", "url": "https://www.example.com/Chapter5.pdf" }, - { "title": "Chapter 6", "url": "https://www.example.com/Chapter6.pdf" }, - { "title": "Chapter 7", "url": "https://www.example.com/Chapter7.pdf" } + { "title": "Chapter 1", "url": "https://www.example.com/thiscourse/book2/Chapter1.pdf" }, + { "title": "Chapter 2", "url": "https://www.example.com/thiscourse/book2/Chapter2.pdf" }, + { "title": "Chapter 3", "url": "https://www.example.com/thiscourse/book2/Chapter3.pdf" }, + { "title": "Chapter 4", "url": "https://www.example.com/thiscourse/book2/Chapter4.pdf" }, + { "title": "Chapter 5", "url": "https://www.example.com/thiscourse/book2/Chapter5.pdf" }, + { "title": "Chapter 6", "url": "https://www.example.com/thiscourse/book2/Chapter6.pdf" }, + { "title": "Chapter 7", "url": "https://www.example.com/thiscourse/book2/Chapter7.pdf" } ] } ] +Some notes: + +* It is not a good idea to include a top-level URL and chapter-level URLs in the same textbook configuration. + +Linking from Content +-------------------- + +It is possible to add links to specific pages in a textbook by using a URL that encodes the index of the textbook, the chapter (if chapters are used), and the page number. For a book with no chapters, the URL is of the form `/course/pdfbook/${bookindex}/$page}`. For a book with chapters, use `/course/pdfbook/${bookindex}/chapter/${chapter}/${page}`. If the page is omitted from the URL, the first page is assumed. + +For example, for the book with no chapters configured above, page 25 can be reached using the URL `/course/pdfbook/0/25`. Reaching page 19 in the third chapter of the second book is accomplished with `/course/pdfbook/1/chapter/3/19`. + +You can use a `customtag` to create a template for such links. For example, you can create a `pdfbook` template in the `customtag` directory, containing: + +.. code-block:: xml + + <img src="/static/images/icons/textbook_icon.png"/> More information given in <a href="/course/pdfbook/${book}/${page}">the text</a>. + +And a `pdfchapter` template containing: + +.. code-block:: xml + + <img src="/static/images/icons/textbook_icon.png"/> More information given in <a href="/course/pdfbook/${book}/chapter/${chapter}/${page}">the text</a>. + +The example pages can then be linked using the `customtag` element: + +.. code-block:: xml + + <customtag book="0" page="25" impl="pdfbook"/> + <customtag book="1" chapter="3" page="19" impl="pdfchapter"/> + + ************************************* Other file locations (info and about) ************************************* diff --git a/doc/public/course_data_formats/drag_and_drop/drag-n-drop-demo3.xml b/doc/public/course_data_formats/drag_and_drop/drag-n-drop-demo3.xml new file mode 100644 index 0000000000000000000000000000000000000000..860f488089329a517ec33a04cec77e69d1d8bf2d --- /dev/null +++ b/doc/public/course_data_formats/drag_and_drop/drag-n-drop-demo3.xml @@ -0,0 +1,262 @@ +<problem display_name="Drag and drop demos chem features: drag and drop icons or labels + to proper positions." attempts="10"> + +<customresponse> + <text> + <h4>[Simple grading example: draggables on draggables]</h4><br/> + <h4>Describe carbon molecule in LCAO-MO.</h4><br/> + <br/> + </text> + + <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo.jpg" target_outline="true" > + + <!-- filled bond --> + <draggable id="up_and_down" icon="/static/images/images_list/lcao-mo/u_d.png" can_reuse="true" /> + <!-- up bond --> + <draggable id="up" icon="/static/images/images_list/lcao-mo/up.png" can_reuse="true" /> + + <draggable id="s" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="s orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + </draggable> + + <draggable id="p" icon="/static/images/images_list/lcao-mo/orbital_triple.png" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + <target id="2" x="34" y="0" w="32" h="32"/> + <target id="3" x="68" y="0" w="32" h="32"/> + </draggable> + + <!-- positions of electrons and electron pairs --> + <target id="s_l" x="130" y="360" w="32" h="32"/> + <target id="s_r" x="505" y="360" w="32" h="32"/> + <target id="p_l" x="80" y="100" w="100" h="32"/> + <target id="p_r" x="465" y="100" w="100" h="32"/> + + </drag_and_drop_input> + + <answer type="loncapa/python"><![CDATA[ +correct_answer = [ + { + 'draggables': ['p'], + 'targets': ['p_l', 'p_r'], + 'rule': 'unordered_equal' + }, + { + 'draggables': ['s'], + 'targets': ['s_l', 's_r'], + 'rule': 'unordered_equal' + }, + { + 'draggables': ['up_and_down'], + 'targets': [ + 's_l[s][1]', 's_r[s][1]' + ], + 'rule': 'unordered_equal' + }, + { + 'draggables': ['up'], + 'targets': [ + 'p_l[p][1]', 'p_l[p][3]', 'p_r[p][1]', 'p_r[p][3]' + ], + 'rule': 'unordered_equal' + } +] + +if draganddrop.grade(submission[0], correct_answer): + correct = ['correct'] +else: + correct = ['incorrect'] +]]></answer> +</customresponse> + +<customresponse> + <text> + <h4>[Complex grading example: draggables on draggables]</h4><br/> + <h4>Describe carbon molecule in LCAO-MO.</h4> + <br/> + </text> + + <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo-clean.jpg" target_outline="true" > + + <!-- filled bond --> + <draggable id="up_and_down" icon="/static/images/images_list/lcao-mo/u_d.png" can_reuse="true" /> + <!-- up bond --> + <draggable id="up" icon="/static/images/images_list/lcao-mo/up.png" can_reuse="true" /> + + <!-- images that should not be dragged --> + <draggable id="down" icon="/static/images/images_list/lcao-mo/d.png" can_reuse="true" /> + + <draggable id="s" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="s orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + </draggable> + + <draggable id="p" icon="/static/images/images_list/lcao-mo/orbital_triple.png" can_reuse="true" label="p orbital" > + <target id="1" x="0" y="0" w="32" h="32"/> + <target id="2" x="34" y="0" w="32" h="32"/> + <target id="3" x="68" y="0" w="32" h="32"/> + </draggable> + + <draggable id="s-sigma" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="s-sigma orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + </draggable> + + <draggable id="s-sigma*" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="s-sigma* orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + </draggable> + + <draggable id="p-pi" icon="/static/images/images_list/lcao-mo/orbital_double.png" label="p-pi orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + <target id="2" x="34" y="0" w="32" h="32"/> + </draggable> + + <draggable id="p-sigma" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="p-sigma orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + </draggable> + + <draggable id="p-pi*" icon="/static/images/images_list/lcao-mo/orbital_double.png" label="p-pi* orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + <target id="2" x="34" y="0" w="32" h="32"/> + </draggable> + + <draggable id="p-sigma*" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="p-sigma* orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + </draggable> + + <!-- positions of electrons and electron pairs --> + <target id="s-left-target" x="130" y="360" w="32" h="32"/> + <target id="s-right-target" x="505" y="360" w="32" h="32"/> + <target id="s-sigma-target" x="315" y="425" w="32" h="32"/> + <target id="s-sigma*-target" x="315" y="290" w="32" h="32"/> + <target id="p-left-target" x="80" y="100" w="100" h="32"/> + <target id="p-right-target" x="480" y="100" w="100" h="32"/> + <target id="p-pi-target" x="300" y="220" w="66" h="32"/> + <target id="p-sigma-target" x="315" y="170" w="32" h="32"/> + <target id="p-pi*-target" x="300" y="40" w="66" h="32"/> + <target id="p-sigma*-target" x="315" y="0" w="32" h="32"/> + + </drag_and_drop_input> + + <answer type="loncapa/python"><![CDATA[ +correct_answer = [ +{'draggables': ['p'], 'targets': ['p-left-target', 'p-right-target'], 'rule': 'unordered_equal'}, +{'draggables': ['s'], 'targets': ['s-left-target', 's-right-target'], 'rule': 'unordered_equal'}, +{'draggables': ['s-sigma'], 'targets': ['s-sigma-target'], 'rule': 'exact'}, +{'draggables': ['s-sigma*'], 'targets': ['s-sigma*-target'], 'rule': 'exact'}, +{'draggables': ['p-pi'], 'targets': ['p-pi-target'], 'rule': 'exact'}, +{'draggables': ['p-sigma'], 'targets': ['p-sigma-target'], 'rule': 'exact'}, +{'draggables': ['p-pi*'], 'targets': ['p-pi*-target'], 'rule': 'exact'}, +{'draggables': ['p-sigma*'], 'targets': ['p-sigma*-target'], 'rule': 'exact'}, +{ + 'draggables': ['up_and_down'], + 'targets': ['s-left-target[s][1]', 's-right-target[s][1]', 's-sigma-target[s-sigma][1]', 's-sigma*-target[s-sigma*][1]', 'p-pi-target[p-pi][1]', 'p-pi-target[p-pi][2]'], + 'rule': 'unordered_equal' +}, +{ + 'draggables': ['up'], + 'targets': ['p-left-target[p][1]', 'p-left-target[p][2]', 'p-right-target[p][2]', 'p-right-target[p][3]',], + 'rule': 'unordered_equal' +} +] + +if draganddrop.grade(submission[0], correct_answer): + correct = ['correct'] +else: + correct = ['incorrect'] +]]></answer> +</customresponse> + +<customresponse> + <text> + <h4>[Complex grading example: no draggables on draggables]</h4><br/> + <h4>Describe carbon molecule in LCAO-MO.</h4> + <br/> + </text> + + <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo.jpg" target_outline="true"> + + <!-- filled bond --> + <draggable id="1" icon="/static/images/images_list/lcao-mo/u_d.png" can_reuse="true" /> + + <!-- up bond --> + <draggable id="7" icon="/static/images/images_list/lcao-mo/up.png" can_reuse="true" /> + + <!-- sigma --> + <draggable id="11" icon="/static/images/images_list/lcao-mo/sigma.png" can_reuse="true" /> + + <!-- sigma* --> + <draggable id="13" icon="/static/images/images_list/lcao-mo/sigma_s.png" can_reuse="true" /> + + <!-- pi --> + <draggable id="15" icon="/static/images/images_list/lcao-mo/pi.png" can_reuse="true" /> + + <!-- pi* --> + <draggable id="16" icon="/static/images/images_list/lcao-mo/pi_s.png" can_reuse="true" /> + + <!-- images that should not be dragged --> + <draggable id="17" icon="/static/images/images_list/lcao-mo/d.png" can_reuse="true" /> + + <!-- positions of electrons and electron pairs --> + <target id="s_left" x="130" y="360" w="32" h="32"/> + <target id="s_right" x="505" y="360" w="32" h="32"/> + <target id="s_sigma" x="320" y="425" w="32" h="32"/> + <target id="s_sigma_star" x="320" y="290" w="32" h="32"/> + <target id="p_left_1" x="80" y="100" w="32" h="32"/> + <target id="p_left_2" x="125" y="100" w="32" h="32"/> + <target id="p_left_3" x="175" y="100" w="32" h="32"/> + <target id="p_right_1" x="465" y="100" w="32" h="32"/> + <target id="p_right_2" x="515" y="100" w="32" h="32"/> + <target id="p_right_3" x="560" y="100" w="32" h="32"/> + <target id="p_pi_1" x="290" y="220" w="32" h="32"/> + <target id="p_pi_2" x="335" y="220" w="32" h="32"/> + <target id="p_sigma" x="315" y="170" w="32" h="32"/> + <target id="p_pi_star_1" x="290" y="40" w="32" h="32"/> + <target id="p_pi_star_2" x="340" y="40" w="32" h="32"/> + <target id="p_sigma_star" x="315" y="0" w="32" h="32"/> + + <!-- positions of names of energy levels --> + <target id="s_sigma_name" x="400" y="425" w="32" h="32"/> + <target id="s_sigma_star_name" x="400" y="290" w="32" h="32"/> + <target id="p_pi_name" x="400" y="220" w="32" h="32"/> + <target id="p_sigma_name" x="400" y="170" w="32" h="32"/> + <target id="p_pi_star_name" x="400" y="40" w="32" h="32"/> + <target id="p_sigma_star_name" x="400" y="0" w="32" h="32"/> + + </drag_and_drop_input> + + <answer type="loncapa/python"><![CDATA[ +correct_answer = [ +{ + 'draggables': ['1'], + 'targets': [ + 's_left', 's_right', 's_sigma', 's_sigma_star', 'p_pi_1', 'p_pi_2' + ], + 'rule': 'exact' +}, { + 'draggables': ['7'], + 'targets': ['p_left_1', 'p_left_2', 'p_right_2','p_right_3'], + 'rule': 'exact' +}, { + 'draggables': ['11'], + 'targets': ['s_sigma_name', 'p_sigma_name'], + 'rule': 'exact' +}, { + 'draggables': ['13'], + 'targets': ['s_sigma_star_name', 'p_sigma_star_name'], + 'rule': 'exact' +}, { + 'draggables': ['15'], + 'targets': ['p_pi_name'], + 'rule': 'exact' +}, { + 'draggables': ['16'], + 'targets': ['p_pi_star_name'], + 'rule': 'exact' +}] + +if draganddrop.grade(submission[0], correct_answer): + correct = ['correct'] +else: + correct = ['incorrect'] +]]></answer> +</customresponse> + +</problem> diff --git a/doc/public/course_data_formats/drag_and_drop/drag_and_drop_input.rst b/doc/public/course_data_formats/drag_and_drop/drag_and_drop_input.rst index 4d61038054a466440704239eec49c71b673449cf..4927deeec60a0bff860f022268a43afe29405495 100644 --- a/doc/public/course_data_formats/drag_and_drop/drag_and_drop_input.rst +++ b/doc/public/course_data_formats/drag_and_drop/drag_and_drop_input.rst @@ -83,9 +83,58 @@ the slider. If no targets are provided, then a draggable can be dragged and placed anywhere on the base image. -correct answer format +Targets on draggables --------------------- +Sometimes it is not enough to have targets only on the base image, and all of the +draggables on these targets. If a complex problem exists where a draggable must +become itself a target (or many targets), then the following extended syntax +can be used: :: + + <draggable {attribute list}> + <target {attribute list} /> + <target {attribute list} /> + <target {attribute list} /> + ... + </draggable> + +The attribute list in the tags above ('draggable' and 'target') is the same as for +normal 'draggable' and 'target' tags. The only difference is when you will be +specifying inner target position coordinates. Using the 'x' and 'y' attributes you +are setting the offset of the inner target from the upper-left corner of the +parent draggable (that contains the inner target). + +Limitations of targets on draggables +------------------------------------ + +1.) Currently there is a limitation to the level of nesting of targets. + +Even though you can pile up a large number of draggables on targets that themselves +are on draggables, the Drag and Drop instance will be graded only in the case if +there is a maximum of two levels of targets. The first level are the "base" targets. +They are attached to the base image. The second level are the targets defined on +draggables. + +2.) Another limitation is that the target bounds are not checked against +other targets. + +For now, it is the responsibility of the person who is constructing the course +material to make sure that there is no overlapping of targets. It is also preferable +that targets on draggables are smaller than the actual parent draggable. Technically +this is not necessary, but from the usability perspective it is desirable. + +3.) You can have targets on draggables only in the case when there are base targets +defined (base targets are attached to the base image). + +If you do not have base targets, then you can only have a single level of nesting +(draggables on the base image). In this case the client side will be reporting (x,y) +positions of each draggables on the base image. + +Correct answer format +--------------------- + +(NOTE: For specifying answers for targets on draggables please see next section.) + There are two correct answer formats: short and long If short from correct answer is mapping of 'draggable_id' to 'target_id':: @@ -180,7 +229,7 @@ Rules are: exact, anyof, unordered_equal, anyof+number, unordered_equal+number 'rule': 'unordered_equal' }] -- And sometimes you want to allow drag only two 'b' draggables, in these case you sould use 'anyof+number' of 'unordered_equal+number' rule:: +- And sometimes you want to allow drag only two 'b' draggables, in these case you should use 'anyof+number' of 'unordered_equal+number' rule:: correct_answer = [ { @@ -204,6 +253,54 @@ for same number of draggables, anyof is equal to unordered_equal If we have can_reuse=true, than one must use only long form of correct answer. +Answer format for targets on draggables +--------------------------------------- + +As with the cases described above, an answer must provide precise positioning for +each draggable (on which targets it must reside). In the case when a draggable must +be placed on a target that itself is on a draggable, then the answer must contain +the chain of target-draggable-target. It is best to understand this on an example. + +Suppose we have three draggables - 'up', 's', and 'p'. Draggables 's', and 'p' have targets +on themselves. More specifically, 'p' has three targets - '1', '2', and '3'. The first +requirement is that 's', and 'p' are positioned on specific targets on the base image. +The second requirement is that draggable 'up' is positioned on specific targets of +draggable 'p'. Below is an excerpt from a problem.:: + + <draggable id="up" icon="/static/images/images_list/lcao-mo/up.png" can_reuse="true" /> + + <draggable id="s" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="s orbital" can_reuse="true" > + <target id="1" x="0" y="0" w="32" h="32"/> + </draggable> + + <draggable id="p" icon="/static/images/images_list/lcao-mo/orbital_triple.png" can_reuse="true" label="p orbital" > + <target id="1" x="0" y="0" w="32" h="32"/> + <target id="2" x="34" y="0" w="32" h="32"/> + <target id="3" x="68" y="0" w="32" h="32"/> + </draggable> + + ... + + correct_answer = [ + { + 'draggables': ['p'], + 'targets': ['p-left-target', 'p-right-target'], + 'rule': 'unordered_equal' + }, + { + 'draggables': ['s'], + 'targets': ['s-left-target', 's-right-target'], + 'rule': 'unordered_equal' + }, + { + 'draggables': ['up'], + 'targets': ['p-left-target[p][1]', 'p-left-target[p][2]', 'p-right-target[p][2]', 'p-right-target[p][3]',], + 'rule': 'unordered_equal' + } + ] + +Note that it is a requirement to specify rules for all draggables, even if some draggable gets included +in more than one chain. Grading logic ------------- @@ -321,3 +418,8 @@ Draggables can be reused ------------------------ .. literalinclude:: drag-n-drop-demo2.xml + +Examples of targets on draggables +------------------------ + +.. literalinclude:: drag-n-drop-demo3.xml diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index a5477a15ab7cefc2e71d01bfe4527e06ed4a67f0..063f8d9d628ad5b61a59b157bd621935eb34125a 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -16,7 +16,6 @@ from django.views.decorators.csrf import csrf_exempt from requests.auth import HTTPBasicAuth from capa.xqueue_interface import XQueueInterface -from capa.chem import chemcalc from courseware.access import has_access from mitxmako.shortcuts import render_to_string from models import StudentModule @@ -446,42 +445,6 @@ def modx_dispatch(request, dispatch, location, course_id): return HttpResponse(ajax_return) -def preview_chemcalc(request): - """ - Render an html preview of a chemical formula or equation. The fact that - this is here is a bit of hack. See the note in lms/urls.py about why it's - here. (Victor is to blame.) - - request should be a GET, with a key 'formula' and value 'some formula string'. - - Returns a json dictionary: - { - 'preview' : 'the-preview-html' or '' - 'error' : 'the-error' or '' - } - """ - if request.method != "GET": - raise Http404 - - result = {'preview': '', - 'error': ''} - formula = request.GET.get('formula') - if formula is None: - result['error'] = "No formula specified." - - return HttpResponse(json.dumps(result)) - - try: - result['preview'] = chemcalc.render_to_html(formula) - except pyparsing.ParseException as p: - result['error'] = "Couldn't parse formula: {0}".format(p) - except Exception: - # this is unexpected, so log - log.warning("Error while previewing chemical formula", exc_info=True) - result['error'] = "Error while rendering preview" - - return HttpResponse(json.dumps(result)) - def get_score_bucket(grade, max_grade): """ diff --git a/lms/djangoapps/courseware/tests/test_tabs.py b/lms/djangoapps/courseware/tests/test_tabs.py new file mode 100644 index 0000000000000000000000000000000000000000..928b9ae0df35fbd62061870b8edefbe78ba49f1d --- /dev/null +++ b/lms/djangoapps/courseware/tests/test_tabs.py @@ -0,0 +1,259 @@ +from django.test import TestCase +from mock import MagicMock + +import courseware.tabs as tabs + +from django.test.utils import override_settings +from django.core.urlresolvers import reverse + + +class ProgressTestCase(TestCase): + + def setUp(self): + + self.mockuser1 = MagicMock() + self.mockuser0 = MagicMock() + self.course = MagicMock() + self.mockuser1.is_authenticated.return_value = True + self.mockuser0.is_authenticated.return_value = False + self.course.id = 'edX/full/6.002_Spring_2012' + self.tab = {'name': 'same'} + self.active_page1 = 'progress' + self.active_page0 = 'stagnation' + + def test_progress(self): + + self.assertEqual(tabs._progress(self.tab, self.mockuser0, self.course, + self.active_page0), []) + + self.assertEqual(tabs._progress(self.tab, self.mockuser1, self.course, + self.active_page1)[0].name, 'same') + + self.assertEqual(tabs._progress(self.tab, self.mockuser1, self.course, + self.active_page1)[0].link, + reverse('progress', args = [self.course.id])) + + self.assertEqual(tabs._progress(self.tab, self.mockuser1, self.course, + self.active_page0)[0].is_active, False) + + self.assertEqual(tabs._progress(self.tab, self.mockuser1, self.course, + self.active_page1)[0].is_active, True) + + +class WikiTestCase(TestCase): + + def setUp(self): + + self.user = MagicMock() + self.course = MagicMock() + self.course.id = 'edX/full/6.002_Spring_2012' + self.tab = {'name': 'same'} + self.active_page1 = 'wiki' + self.active_page0 = 'miki' + + @override_settings(WIKI_ENABLED=True) + def test_wiki_enabled(self): + + self.assertEqual(tabs._wiki(self.tab, self.user, + self.course, self.active_page1)[0].name, + 'same') + + self.assertEqual(tabs._wiki(self.tab, self.user, + self.course, self.active_page1)[0].link, + reverse('course_wiki', args=[self.course.id])) + + self.assertEqual(tabs._wiki(self.tab, self.user, + self.course, self.active_page1)[0].is_active, + True) + + self.assertEqual(tabs._wiki(self.tab, self.user, + self.course, self.active_page0)[0].is_active, + False) + + @override_settings(WIKI_ENABLED=False) + def test_wiki_enabled_false(self): + + self.assertEqual(tabs._wiki(self.tab, self.user, + self.course, self.active_page1), []) + + +class ExternalLinkTestCase(TestCase): + + def setUp(self): + + self.user = MagicMock() + self.course = MagicMock() + self.tabby = {'name': 'same', 'link': 'blink'} + self.active_page0 = None + self.active_page00 = True + + def test_external_link(self): + + self.assertEqual(tabs._external_link(self.tabby, self.user, + self.course, self.active_page0)[0].name, + 'same') + + self.assertEqual(tabs._external_link(self.tabby, self.user, + self.course, self.active_page0)[0].link, + 'blink') + + self.assertEqual(tabs._external_link(self.tabby, self.user, + self.course, self.active_page0)[0].is_active, + False) + + self.assertEqual(tabs._external_link(self.tabby, self.user, + self.course, self.active_page00)[0].is_active, + False) + + +class StaticTabTestCase(TestCase): + + def setUp(self): + + self.user = MagicMock() + self.course = MagicMock() + self.tabby = {'name': 'same', 'url_slug': 'schmug'} + self.course.id = 'edX/full/6.002_Spring_2012' + self.active_page1 = 'static_tab_schmug' + self.active_page0 = 'static_tab_schlug' + + def test_static_tab(self): + + self.assertEqual(tabs._static_tab(self.tabby, self.user, + self.course, self.active_page1)[0].name, + 'same') + + self.assertEqual(tabs._static_tab(self.tabby, self.user, + self.course, self.active_page1)[0].link, + reverse('static_tab', args = [self.course.id, + self.tabby['url_slug']])) + + self.assertEqual(tabs._static_tab(self.tabby, self.user, + self.course, self.active_page1)[0].is_active, + True) + + + self.assertEqual(tabs._static_tab(self.tabby, self.user, + self.course, self.active_page0)[0].is_active, + False) + + +class TextbooksTestCase(TestCase): + + def setUp(self): + + self.mockuser1 = MagicMock() + self.mockuser0 = MagicMock() + self.course = MagicMock() + self.tab = MagicMock() + A = MagicMock() + T = MagicMock() + self.mockuser1.is_authenticated.return_value = True + self.mockuser0.is_authenticated.return_value = False + self.course.id = 'edX/full/6.002_Spring_2012' + self.active_page0 = 'textbook/0' + self.active_page1 = 'textbook/1' + self.active_pageX = 'you_shouldnt_be_seein_this' + A.title = 'Algebra' + T.title = 'Topology' + self.course.textbooks = [A, T] + + @override_settings(MITX_FEATURES={'ENABLE_TEXTBOOK': True}) + def test_textbooks1(self): + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_page0)[0].name, + 'Algebra') + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_page0)[0].link, + reverse('book', args=[self.course.id, 0])) + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_page0)[0].is_active, + True) + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_pageX)[0].is_active, + False) + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_page1)[1].name, + 'Topology') + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_page1)[1].link, + reverse('book', args=[self.course.id, 1])) + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_page1)[1].is_active, + True) + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_pageX)[1].is_active, + False) + + @override_settings(MITX_FEATURES={'ENABLE_TEXTBOOK': False}) + def test_textbooks0(self): + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser1, + self.course, self.active_pageX), []) + + self.assertEqual(tabs._textbooks(self.tab, self.mockuser0, + self.course, self.active_pageX), []) + +class KeyCheckerTestCase(TestCase): + + def setUp(self): + + self.expected_keys1 = ['a', 'b'] + self.expected_keys0 = ['a', 'v', 'g'] + self.dictio = {'a': 1, 'b': 2, 'c': 3} + + def test_key_checker(self): + + self.assertIsNone(tabs.key_checker(self.expected_keys1)(self.dictio)) + self.assertRaises(tabs.InvalidTabsException, + tabs.key_checker(self.expected_keys0), self.dictio) + + +class NullValidatorTestCase(TestCase): + + def setUp(self): + + self.d = {} + + def test_null_validator(self): + + self.assertIsNone(tabs.null_validator(self.d)) + + +class ValidateTabsTestCase(TestCase): + + def setUp(self): + + self.courses = [MagicMock() for i in range(0,5)] + + self.courses[0].tabs = None + + self.courses[1].tabs = [{'type':'courseware'}, {'type': 'fax'}] + + self.courses[2].tabs = [{'type':'shadow'}, {'type': 'course_info'}] + + self.courses[3].tabs = [{'type':'courseware'},{'type':'course_info', 'name': 'alice'}, + {'type': 'wiki', 'name':'alice'}, {'type':'discussion', 'name': 'alice'}, + {'type':'external_link', 'name': 'alice', 'link':'blink'}, + {'type':'textbooks'}, {'type':'progress', 'name': 'alice'}, + {'type':'static_tab', 'name':'alice', 'url_slug':'schlug'}, + {'type': 'staff_grading'}] + + self.courses[4].tabs = [{'type':'courseware'},{'type': 'course_info'}, {'type': 'flying'}] + + + def test_validate_tabs(self): + + self.assertIsNone(tabs.validate_tabs(self.courses[0])) + self.assertRaises(tabs.InvalidTabsException, tabs.validate_tabs, self.courses[1]) + self.assertRaises(tabs.InvalidTabsException, tabs.validate_tabs, self.courses[2]) + self.assertIsNone(tabs.validate_tabs(self.courses[3])) + self.assertRaises(tabs.InvalidTabsException, tabs.validate_tabs, self.courses[4]) diff --git a/lms/djangoapps/django_comment_client/tests/test_models.py b/lms/djangoapps/django_comment_client/tests/test_models.py new file mode 100644 index 0000000000000000000000000000000000000000..6f90b3c4b81d898a6486a1ff4b2c939f1ffba292 --- /dev/null +++ b/lms/djangoapps/django_comment_client/tests/test_models.py @@ -0,0 +1,55 @@ +import django_comment_client.models as models +import django_comment_client.permissions as permissions +from django.test import TestCase + + +class RoleClassTestCase(TestCase): + def setUp(self): + # For course ID, syntax edx/classname/classdate is important + # because xmodel.course_module.id_to_location looks for a string to split + + self.course_id = "edX/toy/2012_Fall" + self.student_role = models.Role.objects.get_or_create(name="Student", \ + course_id=self.course_id)[0] + self.student_role.add_permission("delete_thread") + self.student_2_role = models.Role.objects.get_or_create(name="Student", \ + course_id=self.course_id)[0] + self.TA_role = models.Role.objects.get_or_create(name="Community TA",\ + course_id=self.course_id)[0] + self.course_id_2 = "edx/6.002x/2012_Fall" + self.TA_role_2 = models.Role.objects.get_or_create(name="Community TA",\ + course_id=self.course_id_2)[0] + class Dummy(): + def render_template(): + pass + d = {"data": { + "textbooks": [], + 'wiki_slug': True, + } + } + + def testHasPermission(self): + # Whenever you add a permission to student_role, + # Roles with the same FORUM_ROLE in same class also receives the same + # permission. + # Is this desirable behavior? + self.assertTrue(self.student_role.has_permission("delete_thread")) + self.assertTrue(self.student_2_role.has_permission("delete_thread")) + self.assertFalse(self.TA_role.has_permission("delete_thread")) + + def testInheritPermissions(self): + + self.TA_role.inherit_permissions(self.student_role) + self.assertTrue(self.TA_role.has_permission("delete_thread")) + # Despite being from 2 different courses, TA_role_2 can still inherit + # permissions from TA_role without error + self.TA_role_2.inherit_permissions(self.TA_role) + + +class PermissionClassTestCase(TestCase): + + def setUp(self): + self.permission = permissions.Permission.objects.get_or_create(name="test")[0] + + def testUnicode(self): + self.assertEqual(str(self.permission), "test") diff --git a/lms/djangoapps/django_comment_client/tests/test_mustache_helpers.py b/lms/djangoapps/django_comment_client/tests/test_mustache_helpers.py index 5b788b3cc47a60cf3dff27da11b13fb830e2790c..7db3ba6e8682f8c2f92a90acf982d47f7e8b6fa6 100644 --- a/lms/djangoapps/django_comment_client/tests/test_mustache_helpers.py +++ b/lms/djangoapps/django_comment_client/tests/test_mustache_helpers.py @@ -3,26 +3,40 @@ import random import collections from django.test import TestCase +from mock import MagicMock +from django.test.utils import override_settings +import django.core.urlresolvers as urlresolvers import django_comment_client.mustache_helpers as mustache_helpers +######################################################################################### -class PluralizeTestCase(TestCase): - def test_pluralize(self): - self.text1 = '0 goat' - self.text2 = '1 goat' - self.text3 = '7 goat' - self.content = 'unused argument' - self.assertEqual(mustache_helpers.pluralize(self.content, self.text1), 'goats') - self.assertEqual(mustache_helpers.pluralize(self.content, self.text2), 'goat') - self.assertEqual(mustache_helpers.pluralize(self.content, self.text3), 'goats') +class PluralizeTest(TestCase): + def setUp(self): + self.text1 = '0 goat' + self.text2 = '1 goat' + self.text3 = '7 goat' + self.content = 'unused argument' -class CloseThreadTextTestCase(TestCase): + def test_pluralize(self): + self.assertEqual(mustache_helpers.pluralize(self.content, self.text1), 'goats') + self.assertEqual(mustache_helpers.pluralize(self.content, self.text2), 'goat') + self.assertEqual(mustache_helpers.pluralize(self.content, self.text3), 'goats') + +######################################################################################### + + +class CloseThreadTextTest(TestCase): + + def setUp(self): + self.contentClosed = {'closed': True} + self.contentOpen = {'closed': False} + + def test_close_thread_text(self): + self.assertEqual(mustache_helpers.close_thread_text(self.contentClosed), 'Re-open thread') + self.assertEqual(mustache_helpers.close_thread_text(self.contentOpen), 'Close thread') + +######################################################################################### - def test_close_thread_text(self): - self.contentClosed = {'closed': True} - self.contentOpen = {'closed': False} - self.assertEqual(mustache_helpers.close_thread_text(self.contentClosed), 'Re-open thread') - self.assertEqual(mustache_helpers.close_thread_text(self.contentOpen), 'Close thread') diff --git a/lms/djangoapps/foldit/views.py b/lms/djangoapps/foldit/views.py index 988c113d23a81e8fb38a46727294ce931189eff7..da361a2a825e9234ff860870a6081efd4fa13496 100644 --- a/lms/djangoapps/foldit/views.py +++ b/lms/djangoapps/foldit/views.py @@ -130,7 +130,7 @@ def save_scores(user, puzzle_scores): current_score=current_score, best_score=best_score, score_version=score_version) - obj.save() + obj.save() score_responses.append({'PuzzleID': puzzle_id, 'Status': 'Success'}) diff --git a/lms/templates/annotatable.html b/lms/templates/annotatable.html new file mode 100644 index 0000000000000000000000000000000000000000..f01030574442769c1d45a8eb1dcf441728586bb6 --- /dev/null +++ b/lms/templates/annotatable.html @@ -0,0 +1,29 @@ +<div class="annotatable-wrapper"> + <div class="annotatable-header"> + % if display_name is not UNDEFINED and display_name is not None: + <div class="annotatable-title">${display_name}</div> + % endif + </div> + + % if instructions_html is not UNDEFINED and instructions_html is not None: + <div class="annotatable-section shaded"> + <div class="annotatable-section-title"> + Instructions + <a class="annotatable-toggle annotatable-toggle-instructions expanded" href="javascript:void(0)">Collapse Instructions</a> + </div> + <div class="annotatable-section-body annotatable-instructions"> + ${instructions_html} + </div> + </div> + % endif + + <div class="annotatable-section"> + <div class="annotatable-section-title"> + Guided Discussion + <a class="annotatable-toggle annotatable-toggle-annotations" href="javascript:void(0)">Hide Annotations</a> + </div> + <div class="annotatable-section-body annotatable-content"> + ${content_html} + </div> + </div> +</div> diff --git a/lms/urls.py b/lms/urls.py index 5e5ac9a7f275a0f856f92fb1385e23a17b43f2d8..5972b49266d702f7d796bbfd190e1a69a76114fb 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -224,14 +224,6 @@ if settings.COURSEWARE_ENABLED: 'courseware.module_render.modx_dispatch', name='modx_dispatch'), - # TODO (vshnayder): This is a hack. It creates a direct connection from - # the LMS to capa functionality, and really wants to go through the - # input types system so that previews can be context-specific. - # Unfortunately, we don't have time to think through the right way to do - # that (and implement it), and it's not a terrible thing to provide a - # generic chemical-equation rendering service. - url(r'^preview/chemcalc', 'courseware.module_render.preview_chemcalc', - name='preview_chemcalc'), # Software Licenses