Custom Jewellery Form
First Name
Last Name
Email
Phone Number
Jewellery Type
Budget Range
Required By
- -
Description
Inspiration Image Link
Today

Discover The Power Of Ai chatbots

Automate your customer service with artificial intelligence. 24/7 availability and support.

Excellent reviews

Companies report saving time and money with our product

Why choose us?

Our platform offers a range of powerful features designed to elevate your experience.

Discover the Power of Ai

24/7 availability and support

Save up to 80% of costs

Companies report saving up to 80% of their customer service costs! On average, companies save 20-40% of customer service costs, and have a major increase in customer satisfaction.

439€ Million
Reported cost cutting by chatbots in the retail sector in 2023.
20-40%
Average customer service cost reduction by companies.

Tailored Solutions

Experience the pinnacle of AI-driven customer service with Booosted. Our expertly designed chatbots are tailored to understand and respond to your customers’ needs, providing a level of engagement and satisfaction that sets your business apart.

Automate your customer service. Save time and money, by automating your customer service utilizing Booosted Ai.
Gather leads. Gather leads and convert your visitors to customers with Booosted
Beautiful Dashboards. Manage customize your chatbot with ease.

Seamless Experience

Our top features are designed to provide you with a seamless experience and make your customer service as easy as possible.

Start Saving Today

Are you ready to step into the future by deploying a groundbreaking customer service bot? Schedule a demo and be amazed by the opportunities brought by artificial intelligence.

Many Benefits
Unified cross-platform experience
Book a free demo of the product
DJDT

Versions

Package Name Version
Django 3.2.25
Python 3.10.20
allauth Allauth 0.50.0.final.0
constance Constance 2.9.1
debug_toolbar Debug Toolbar 3.5.0
django_celery_beat Periodic Tasks 2.3.0
django_celery_results Celery Results 2.5.1
django_extensions Django Extensions 3.1.5
drf_yasg Drf_Yasg 1.20.3
rest_framework Django REST framework 3.13.1
rest_framework_simplejwt Rest_Framework_Simplejwt 4.8.0
silk Silk 5.0.4
storages Storages 1.13.2

Time

Resource usage

Resource Value
User CPU time 328.411 msec
System CPU time 44.188 msec
Total CPU time 372.599 msec
Elapsed time 398.177 msec
Context switches 22 voluntary, 34 involuntary

Browser timing

Timing attribute Timeline Milliseconds since navigation start (+length)

Settings from config.settings.stage

Setting Value
ABSOLUTE_URL_OVERRIDES {}
ACCOUNT_AUTHENTICATION_METHOD 'email'
ACCOUNT_EMAIL_REQUIRED True
ACCOUNT_UNIQUE_EMAIL True
ACCOUNT_USERNAME_REQUIRED False
ACCOUNT_USER_MODEL_USERNAME_FIELD None
ADMINS []
ADMIN_SESSION_TIMEOUT_IN_SECONDS 3600
AI_AUTHENTICATION_TOKEN '********************'
ALLOWED_HOSTS ['*']
ANYMAIL {'BREVO_API_KEY': '********************'}
API_BASE_URL '********************'
APPEND_SLASH True
AUTHENTICATION_BACKENDS ['django.contrib.auth.backends.ModelBackend']
AUTH_PASSWORD_VALIDATORS '********************'
AUTH_USER_MODEL 'users.User'
BACKEND_AUTHENTICATION_TOKEN '********************'
BACKEND_BASE_URL 'https://stage.booosted.com'
BASE_DIR PosixPath('/code')
CACHES {'default': {'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://redis:6379/1', 'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient'}}}
CACHE_MIDDLEWARE_ALIAS 'default'
CACHE_MIDDLEWARE_KEY_PREFIX '********************'
CACHE_MIDDLEWARE_SECONDS 600
CELERY_ACCEPT_CONTENT ['application/json']
CELERY_BROKER_URL 'redis://redis:6379'
CELERY_RESULT_BACKEND 'django-db'
CELERY_RESULT_SERIALIZER 'json'
CELERY_TASK_SERIALIZER 'json'
CONSTANCE_BACKEND 'constance.backends.database.DatabaseBackend'
CONSTANCE_CONFIG {'APP_DOMAIN': ('booosted.com', 'Allowed domain for Widget Pro access without referer check', <class 'str'>), 'BATCH_SIZE': (1000, 'Max Batch size for url processing', <class 'int'>), 'CRAWLING_DEPTH': (5, 'Maximum depth for crawling', <class 'int'>), 'CRAWLING_MAX_SESSION_PERMIT': (5, 'Maximum session permit for crawling', <class 'int'>), 'CRAWLING_THRESHOLD_PERCENTAGE': (35.0, 'Memory percentage threshold for crawling', <class 'float'>), 'CURRENCY': ('', 'Currency for payment'), 'DEFAULT_CTA_DISPLAY_ORDER': ('["mainImage", "placeholderVideoLink", ' '"aiCtaLabel"]', 'Default display order for Call-To-Action (CTA) ' 'elements as a JSON string'), 'DEFAULT_WEBHOOK_EVENTS': ('lead.created', 'Default events for new webhook endpoints ' '(comma-separated)', <class 'str'>), 'EXCLUDED_SELECTOR': ("[class*='footer'], [class*='header']", 'CSS selectors to exclude during crawling', <class 'str'>), 'GPT_MODEL': ('gpt-4o', 'chat-gpt model use for AI part'), 'HOME_PAGE_VIDEO_EMBEDDED_LINK': ('', 'Please put the youtube video embedded url'), 'MAX_LOG_BODY_CHARS': (2048, 'Maximum body size to keep for the logfile.'), 'MAX_WEBHOOKS_PER_SOURCE': (10, 'Maximum number of webhook endpoints per source ' '(chatbot or sticky button)', <class 'int'>), 'MINIMUM_FEEDBACK_MESSAGES': (5, 'Minimum number of messages required for ' 'feedback eligibility', <class 'int'>), 'NUMBER_of_URLS_TO_SCRAPE': ('', 'Please add the maximum number of page crawls'), 'OTP_EXPIRY_TIME_IN_SECONDS': (300, 'OTP Expiry time in seconds', <class 'int'>), 'PAGE_TIMEOUT': (60000, 'Page timeout for crawling in milliseconds', <class 'int'>), 'PLATFORM_EMBEDDED_CHATBOT': ('', 'Embedded Chatbot code for you own website'), 'PLATFORM_EMBEDDED_STICKY_BUTTON': ('', 'Embedded Sticky Button for you own ' 'website'), 'PREMIUM_CHATBOT_FEATURES': ('widget_icon', 'List of premium features for chatbot', <class 'str'>), 'PREVIOUS_CHAT_INDEX': (6, 'Previous messages append in the langchain ' 'conversational retrival'), 'QUESTION_BASE_HUMAN_PROMPT': ('\n' ' % Start of CONTEXT %\n' '{context}\n' '% End of CONTEXT %\n' '\n' 'Question: {question}\n' '\n' 'Helpful Answer:\n', 'This is question based human prompt'), 'QUESTION_BASE_SYSTEM_PROMPT': ('\n' ' Your name is {name}. Act as a helpful AI ' 'Assistant who possesses exceptional language ' 'skills and is capable of responding in ' 'all languages. Your goal is to help the ' 'questioner, and provide a helpful response ' 'from the CONTEXT provided below in the ' "same language as the user's query.\n" '\n' 'Follow the following process:\n' '1. Must respond in the same language as the ' 'question.\n' '2. Provide a use friendly and structured ' 'response to the question from the given ' 'context. Organize responses clearly using ' 'headings, bullet points, and tables when ' 'applicable.\n' "3. If you don't know the answer direct the " 'questioner to contact the ({support_email}) ' 'email address for further assistance.\n' '4. Never use your own knowledge to answer a ' 'question. Never hallucinate. Always stay ' 'within the bounds of the context provided to ' 'you.\n' '5. Never break your character.\n' '\n' 'The current date and time of the user is: ' '{current_time}. Use this to determine ' 'whether events, dates, or deadlines ' 'mentioned in the context are in the past, or ' 'future. Do not reference or recommend past ' 'events. Only mention upcoming events.\n', 'This is question based system prompt'), 'STANDALONE_HUMAN_PROMPT': ('\n' ' Chat History:\n' '{chat_history}\n' '\n' 'Follow-Up Question: {question}\n' '\n' 'Standalone Question:\n', 'This is standalone question human prompt'), 'STANDALONE_SYSTEM_PROMPT': ('\n' ' Given the following conversation ' 'history and a follow-up question, rephrase the ' 'follow-up question into a new ' 'standalone question that maintains context and ' 'coherence with the conversation.\n' '\n' 'Guidelines:\n' '\n' 'If the follow-up question refers to a previous ' 'topic in the conversation (e.g., "What about ' 'that?" or "Can you explain more?"), replace ' 'ambiguous references with specific details from ' 'the history.\n' 'Maintain the lexicon and tone of the follow-up ' 'question.\n' 'If the follow-up question is a greeting (e.g., ' '"Hello," "Hi") or an appreciation comment ' '(e.g., "Good," "Good work," "Thank you," "Ok"), ' 'retain it as is without modification.\n' 'Ensure the final output is a grammatically ' 'correct, natural-sounding standalone question.\n' 'Only return the standalone question, with no ' 'additional explanations or formatting.\n', 'This is standalone question system prompt'), 'STRIPE_SUBSCRIPTION_CANCEL_URL': ('', 'Please provide the cancel url where we ' 'redirect when subscription is cancel'), 'STRIPE_SUBSCRIPTION_SUCCESS_URL': ('', 'Please provide the success url where we ' 'redirect when subscription is created ' 'successfully'), 'TEXT_AREA_LIMIT': (200, 'Text area limit for chatbot', <class 'int'>), 'TEXT_FIELD_LIMIT': (139, 'Text field limit for chatbot', <class 'int'>), 'WC_ALLOWED_SYNC_INTERVALS': ('6,12,24', 'Comma-separated allowed sync interval hours', <class 'str'>), 'WC_API_RATE_LIMIT_DELAY': '********************', 'WC_API_TIMEOUT': '********************', 'WC_BACKOFF_AFTER_FAILURES': (3, 'Number of consecutive sync failures before ' 'exponential backoff', <class 'int'>), 'WC_DB_BATCH_SIZE': (500, 'Batch size for database bulk operations', <class 'int'>), 'WC_DEFAULT_PER_PAGE': (100, 'Default per_page for WC API pagination', <class 'int'>), 'WC_DEFAULT_RETRY_AFTER': (5, 'Default Retry-After value in seconds when header ' 'is missing', <class 'int'>), 'WC_DEFAULT_SYNC_INTERVAL_HOURS': (24, 'Default sync interval in hours for new ' 'stores', <class 'int'>), 'WC_EMBEDDING_BATCH_SIZE': (50, 'Batch size for embedding generation', <class 'int'>), 'WC_EMBEDDING_DESCRIPTION_LIMIT': (2000, 'Max characters of description in ' 'embedding text', <class 'int'>), 'WC_EMBEDDING_MAX_VARIANTS': (20, 'Max number of variants in embedding text', <class 'int'>), 'WC_MAX_429_RETRIES': (3, 'Max retries on WC API 429 rate limit', <class 'int'>), 'WC_MAX_BACKOFF_HOURS': (168, 'Maximum backoff interval in hours (default 7 days)', <class 'int'>), 'WC_MAX_HTML_INPUT_LENGTH': (100000, 'Max HTML input length for sanitization', <class 'int'>), 'WC_MAX_RETRY_AFTER': (60, 'Max Retry-After header value in seconds', <class 'int'>), 'WC_MAX_SANITIZED_OUTPUT_LENGTH': (5000, 'Max sanitized output length', <class 'int'>), 'WC_STUCK_SYNC_TIMEOUT_HOURS': (2, 'Hours before a stuck sync is automatically ' 'reset to FAILED', <class 'int'>), 'WC_SYNC_THROTTLE_RATE': ('6/hour', 'Rate limit for manual sync triggers', <class 'str'>), 'WEBHOOK_FAILED_RETENTION_DAYS': (90, 'Days to retain failed webhook deliveries ' 'before deletion', <class 'int'>), 'WEBHOOK_STALE_RETRY_DAYS': (7, 'Days after which stale retrying/pending ' 'deliveries are marked as failed', <class 'int'>), 'WEBHOOK_SUCCESS_RETENTION_DAYS': (30, 'Days to retain successful webhook ' 'deliveries before deletion', <class 'int'>)}
CONSTANCE_REDIS_PREFIX 'constance:booosted:'
CORS_ALLOWED_HEADERS ['Content-Type', 'Authorization', 'Embed-Website-Url', 'Inpage-Embed-Website-Url']
CORS_ALLOWED_METHODS ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS']
CORS_ALLOW_ALL_ORIGINS True
CORS_ALLOW_CREDENTIALS True
CSRF_COOKIE_AGE 31449600
CSRF_COOKIE_DOMAIN None
CSRF_COOKIE_HTTPONLY False
CSRF_COOKIE_NAME 'csrftoken'
CSRF_COOKIE_PATH '/'
CSRF_COOKIE_SAMESITE 'Lax'
CSRF_COOKIE_SECURE False
CSRF_FAILURE_VIEW 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS []
CSRF_USE_SESSIONS False
CUSTOM_APPS ['booosted.marketplace', 'booosted.core', 'booosted.users', 'booosted.subscription', 'booosted.chatbot', 'booosted.webhooks', 'booosted.notifications', 'booosted.widget_pro', 'booosted.popup_widget', 'booosted.ecommerce', 'booosted.newsletter']
DATABASES {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql', 'HOST': 'postgres', 'NAME': 'booosted', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '5432', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'postgres'}}
DATABASE_ROUTERS []
DATA_UPLOAD_MAX_MEMORY_SIZE 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS 1000
DATA_UPLOAD_MAX_NUMBER_FILES 100
DATETIME_FORMAT 'N j, Y, P'
DATETIME_INPUT_FORMATS ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M']
DATE_FORMAT 'N j, Y'
DATE_INPUT_FORMATS ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG True
DEBUG_PROPAGATE_EXCEPTIONS False
DEBUG_TOOLBAR_CONFIG {'SHOW_TOOLBAR_CALLBACK': <function <lambda> at 0x7f873c319ab0>}
DECIMAL_SEPARATOR '.'
DEFAULT_APPS ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles']
DEFAULT_AUTO_FIELD 'django.db.models.BigAutoField'
DEFAULT_CHARSET 'utf-8'
DEFAULT_EXCEPTION_REPORTER 'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL 'noreply@booosted.com'
DEFAULT_HASHING_ALGORITHM 'sha256'
DEFAULT_INDEX_TABLESPACE ''
DEFAULT_TABLESPACE ''
DISALLOWED_USER_AGENTS []
EMAIL_BACKEND 'anymail.backends.brevo.EmailBackend'
EMAIL_HOST 'localhost'
EMAIL_HOST_PASSWORD '********************'
EMAIL_HOST_USER ''
EMAIL_PORT 25
EMAIL_SSL_CERTFILE None
EMAIL_SSL_KEYFILE '********************'
EMAIL_SUBJECT_PREFIX '[Django] '
EMAIL_TIMEOUT None
EMAIL_USE_LOCALTIME False
EMAIL_USE_SSL False
EMAIL_USE_TLS False
ENABLED_2FA_FOR_ADMIN_PANEL True
ENABLE_DEBUG_TOOLBAR True
FILE_UPLOAD_DIRECTORY_PERMISSIONS None
FILE_UPLOAD_HANDLERS ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE 2621440
FILE_UPLOAD_PERMISSIONS 420
FILE_UPLOAD_TEMP_DIR None
FIRST_DAY_OF_WEEK 0
FIXTURE_DIRS []
FORCE_SCRIPT_NAME None
FORMAT_MODULE_PATH None
FORM_RENDERER 'django.forms.renderers.DjangoTemplates'
IGNORABLE_404_URLS []
INSTALLED_APPS ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_celery_beat', 'django_celery_results', 'drf_yasg', 'corsheaders', 'constance', 'constance.backends.database', 'storages', 'django_extensions', 'allauth', 'dj_rest_auth', 'rest_framework.authtoken', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', 'rest_framework_simplejwt', 'django_otp', 'django_otp.plugins.otp_totp', 'booosted.marketplace', 'booosted.core', 'booosted.users', 'booosted.subscription', 'booosted.chatbot', 'booosted.webhooks', 'booosted.notifications', 'booosted.widget_pro', 'booosted.popup_widget', 'booosted.ecommerce', 'booosted.newsletter', 'debug_toolbar', 'silk']
INTERNAL_IPS ['127.0.0.1']
LANGUAGES [('fi', 'Finnish'), ('en', 'English'), ('de', 'German'), ('sv', 'Swedish')]
LANGUAGES_BIDI ['he', 'ar', 'ar-dz', 'fa', 'ur']
LANGUAGE_CODE 'en-us'
LANGUAGE_COOKIE_AGE None
LANGUAGE_COOKIE_DOMAIN None
LANGUAGE_COOKIE_HTTPONLY False
LANGUAGE_COOKIE_NAME 'django_language'
LANGUAGE_COOKIE_PATH '/'
LANGUAGE_COOKIE_SAMESITE None
LANGUAGE_COOKIE_SECURE False
LANGUAGE_QUERY_PARAMETER 'lang'
LEAD_CONFIRMATION_REPLY_TO_EMAIL 'noreply@booosted.com'
LOCALE_PATHS ['/code/locale']
LOGGING {'disable_existing_loggers': True, 'formatters': {'simple': {'format': '{asctime} {levelname} {message}', 'style': '{'}}, 'handlers': {'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}, 'file': {'backupCount': 10, 'class': 'booosted.core.logging.handler.LoggingHandler', 'filename': PosixPath('/code/debug.log'), 'formatter': 'simple', 'level': 'INFO', 'maxBytes': 1048576}}, 'loggers': {'booosted': {'handlers': ['file', 'console'], 'level': 'INFO'}, 'django.request': {'handlers': ['file', 'console'], 'level': 'ERROR', 'propagate': False}}, 'version': 1}
LOGGING_CONFIG 'logging.config.dictConfig'
LOGIN_REDIRECT_URL '/accounts/profile/'
LOGIN_URL '/accounts/login/'
LOGOUT_REDIRECT_URL None
MANAGERS []
MEDIA_ROOT '/code/media/'
MEDIA_URL '/media/'
MESSAGE_STORAGE 'django.contrib.messages.storage.fallback.FallbackStorage'
MIDDLEWARE ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', 'booosted.core.middleware.query_language.QueryParamLanguageMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'booosted.core.middleware.logging.LoggingMiddleware', 'django_otp.middleware.OTPMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', 'silk.middleware.SilkyMiddleware']
MIGRATION_MODULES {}
MONTH_DAY_FORMAT 'F j'
NUMBER_GROUPING 0
PASSWORD_HASHERS '********************'
PASSWORD_RESET_TIMEOUT '********************'
PASSWORD_RESET_TIMEOUT_DAYS '********************'
PREPEND_WWW False
REDIS_URL 'redis://redis:6379'
REST_AUTH_SERIALIZERS {'USER_DETAILS_SERIALIZER': 'booosted.users.serializers.UserSerializer'}
REST_FRAMEWORK {'DEFAULT_AUTHENTICATION_CLASSES': ['rest_framework_simplejwt.authentication.JWTAuthentication', 'dj_rest_auth.jwt_auth.JWTCookieAuthentication'], 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'], 'DEFAULT_PAGINATION_CLASS': 'booosted.core.paginations.PageNumberPagination', 'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAuthenticated']}
REST_USE_JWT True
ROOT_URLCONF 'config.urls'
SECRET_KEY '********************'
SECURE_BROWSER_XSS_FILTER False
SECURE_CONTENT_TYPE_NOSNIFF True
SECURE_HSTS_INCLUDE_SUBDOMAINS False
SECURE_HSTS_PRELOAD False
SECURE_HSTS_SECONDS 0
SECURE_PROXY_SSL_HEADER None
SECURE_REDIRECT_EXEMPT []
SECURE_REFERRER_POLICY 'same-origin'
SECURE_SSL_HOST None
SECURE_SSL_REDIRECT False
SENTRY_DSN ''
SERVER_EMAIL 'root@localhost'
SESSION_CACHE_ALIAS 'default'
SESSION_COOKIE_AGE 1209600
SESSION_COOKIE_DOMAIN None
SESSION_COOKIE_HTTPONLY True
SESSION_COOKIE_NAME 'sessionid'
SESSION_COOKIE_PATH '/'
SESSION_COOKIE_SAMESITE 'None'
SESSION_COOKIE_SECURE True
SESSION_ENGINE 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE True
SESSION_FILE_PATH None
SESSION_SAVE_EVERY_REQUEST False
SESSION_SERIALIZER 'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE 'config.settings.stage'
SHORT_DATETIME_FORMAT 'm/d/Y P'
SHORT_DATE_FORMAT 'm/d/Y'
SIGNING_BACKEND 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS []
SIMPLE_JWT {'ACCESS_TOKEN_LIFETIME': '********************', 'AUTH_HEADER_TYPES': ('JWT',), 'REFRESH_TOKEN_LIFETIME': '********************'}
SITE_ID 1
STATICFILES_DIRS ['/code/booosted/marketplace/static']
STATICFILES_FINDERS ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE 'whitenoise.storage.CompressedManifestStaticFilesStorage'
STATIC_ROOT '/code/static'
STATIC_URL '/static/'
SWAGGER_SETTINGS {'SECURITY_DEFINITIONS': {'api_key': '********************'}, 'USE_SESSION_AUTH': False}
TEMPLATES [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/code/config/templates'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'constance.context_processors.config', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}]
TEST_NON_SERIALIZED_APPS []
TEST_RUNNER 'django.test.runner.DiscoverRunner'
THIRD_PARTY_APPS ['rest_framework', 'django_celery_beat', 'django_celery_results', 'drf_yasg', 'corsheaders', 'constance', 'constance.backends.database', 'storages', 'django_extensions', 'allauth', 'dj_rest_auth', 'rest_framework.authtoken', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', 'rest_framework_simplejwt', 'django_otp', 'django_otp.plugins.otp_totp', 'whitenoise.runserver_nostatic', 'anymail']
THOUSAND_SEPARATOR ','
TIME_FORMAT 'P'
TIME_INPUT_FORMATS ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE 'UTC'
USE_I18N True
USE_L10N True
USE_THOUSAND_SEPARATOR False
USE_TZ True
USE_X_FORWARDED_HOST False
USE_X_FORWARDED_PORT False
WHITENOISE_AUTOREFRESH False
WHITENOISE_ROOT None
WHITENOISE_USE_FINDERS False
WSGI_APPLICATION 'config.wsgi.application'
X_FRAME_OPTIONS 'DENY'
YEAR_MONTH_FORMAT 'F Y'

Headers

Request headers

Key Value
Accept */*
Accept-Encoding gzip, br, zstd, deflate
Host stage.booosted.com
User-Agent Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
X-Forwarded-For 216.73.216.108
X-Forwarded-Host stage.booosted.com
X-Forwarded-Port 443
X-Forwarded-Proto https
X-Forwarded-Server d354bf07f705
X-Real-Ip 216.73.216.108

Response headers

Key Value
Content-Type text/html; charset=utf-8

WSGI environ

Since the WSGI environ inherits the environment of the server, only a significant subset is shown below.

Key Value
PATH_INFO /
QUERY_STRING
REMOTE_ADDR 10.0.1.16
REQUEST_METHOD GET
SCRIPT_NAME
SERVER_NAME 0.0.0.0
SERVER_PORT 8000
SERVER_PROTOCOL HTTP/1.1
SERVER_SOFTWARE gunicorn/20.1.0

Request

View information

View function Arguments Keyword arguments URL name
django.views.generic.base.TemplateView () {} Marketing-Page

No cookies

No session data

No GET data

No POST data

SQL queries from 1 connection

  • default 21.64 ms (13 queries including 6 similar )
Query Timeline Time (ms) Action
INSERT INTO "silk_request" ("id", "path", "query_params", "raw_body", "body", "method", "start_time", "view_name", "end_time", "time_taken", "encoded_headers", "meta_time", "meta_num_queries", "meta_time_spent_queries", "pyprofile", "prof_file", "num_sql_queries")
VALUES
('35cd3a55-9132-4761-a6ad-f371f8e313c7', '/', '', '', '', 'GET', '2026-04-30T10:40:59.691386+00:00'::timestamptz, 'Marketing-Page', NULL, NULL, '{"host": "stage.booosted.com", "user-agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "accept": "*/*", "accept-encoding": "gzip, br, zstd, deflate", "x-forwarded-for": "216.73.216.108", "x-forwarded-host": "stage.booosted.com", "x-forwarded-port": "443", "x-forwarded-proto": "https", "x-forwarded-server": "d354bf07f705", "x-real-ip": "216.73.216.108"}', NULL, NULL, NULL, '', '', 0)
INSERT INTO "silk_request" ("id", "path", "query_params", "raw_body", "body", "method", "start_time", "view_name", "end_time", "time_taken", "encoded_headers", "meta_time", "meta_num_queries", "meta_time_spent_queries", "pyprofile", "prof_file", "num_sql_queries") VALUES ('35cd3a55-9132-4761-a6ad-f371f8e313c7', '/', '', '', '', 'GET', '2026-04-30T10:40:59.691386+00:00'::timestamptz, 'Marketing-Page', NULL, NULL, '{"host": "stage.booosted.com", "user-agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "accept": "*/*", "accept-encoding": "gzip, br, zstd, deflate", "x-forwarded-for": "216.73.216.108", "x-forwarded-host": "stage.booosted.com", "x-forwarded-port": "443", "x-forwarded-proto": "https", "x-forwarded-server": "d354bf07f705", "x-real-ip": "216.73.216.108"}', NULL, NULL, NULL, '', '', 0)
2.21

Connection: default

Transaction status: Idle

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(70)
  self.process_request(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_request(120)
  request_model = RequestModelFactory(request).construct_request_model()

/usr/local/lib/python3.10/site-packages/silk/model_factory.py in construct_request_model(230)
  request_model = models.Request.objects.create(

/usr/local/lib/python3.10/site-packages/silk/models.py in save(190)
  super().save(*args, **kwargs)

SELECT "constance_config"."id",
       "constance_config"."key",
       "constance_config"."value"
  FROM
"constance_config"
 WHERE
"constance_config"."key" = 'PLATFORM_EMBEDDED_CHATBOT'
 LIMIT
21
SELECT ••• FROM "constance_config" WHERE "constance_config"."key" = 'PLATFORM_EMBEDDED_CHATBOT' LIMIT 21
2 similar queries.
3.12

Connection: default

Transaction status: Idle

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(72)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django/template/response.py in render(105)
  self.content = self.rendered_content

/usr/local/lib/python3.10/site-packages/django/template/response.py in rendered_content(83)
  return template.render(context, self._request)

/usr/local/lib/python3.10/site-packages/django/template/backends/django.py in render(61)
  return self.template.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(170)
  return self._render(context)

/usr/local/lib/python3.10/site-packages/django/test/utils.py in instrumented_test_render(100)
  return self.nodelist.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(938)
  bit = node.render_annotated(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render_annotated(905)
  return self.render(context)

/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py in render(150)
  return compiled_parent._render(context)

/usr/local/lib/python3.10/site-packages/django/test/utils.py in instrumented_test_render(100)
  return self.nodelist.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(938)
  bit = node.render_annotated(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render_annotated(905)
  return self.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(988)
  output = self.filter_expression.resolve(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in resolve(671)
  obj = self.var.resolve(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in resolve(796)
  value = self._resolve_lookup(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in _resolve_lookup(837)
  current = getattr(current, bit)

/usr/local/lib/python3.10/site-packages/constance/base.py in __getattr__(19)
  result = self._backend.get(key)

/usr/local/lib/python3.10/site-packages/constance/backends/database/__init__.py in get(80)
  value = self._model._default_manager.get(key=key).value

/usr/local/lib/python3.10/site-packages/silk/sql.py in execute_sql(89)
  return self._execute_sql(*args, **kwargs)

51 </div>
52 </div>
53 </div>
54 {{ config.PLATFORM_EMBEDDED_CHATBOT | safe }}
55 {{ config.PLATFORM_EMBEDDED_STICKY_BUTTON | safe }}
56 {% block content %}
57 {% endblock %}
58 <div class="section">

/code/config/templates/base.html

EXPLAIN SELECT "constance_config"."id",
       "constance_config"."key",
       "constance_config"."value"
  FROM
"constance_config"
 WHERE
"constance_config"."key" = 'PLATFORM_EMBEDDED_CHATBOT'
 LIMIT
21
EXPLAIN SELECT ••• FROM "constance_config" WHERE "constance_config"."key" = 'PLATFORM_EMBEDDED_CHATBOT' LIMIT 21
2 similar queries.
0.71

Connection: default

Transaction status: Idle

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(72)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django/template/response.py in render(105)
  self.content = self.rendered_content

/usr/local/lib/python3.10/site-packages/django/template/response.py in rendered_content(83)
  return template.render(context, self._request)

/usr/local/lib/python3.10/site-packages/django/template/backends/django.py in render(61)
  return self.template.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(170)
  return self._render(context)

/usr/local/lib/python3.10/site-packages/django/test/utils.py in instrumented_test_render(100)
  return self.nodelist.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(938)
  bit = node.render_annotated(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render_annotated(905)
  return self.render(context)

/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py in render(150)
  return compiled_parent._render(context)

/usr/local/lib/python3.10/site-packages/django/test/utils.py in instrumented_test_render(100)
  return self.nodelist.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(938)
  bit = node.render_annotated(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render_annotated(905)
  return self.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(988)
  output = self.filter_expression.resolve(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in resolve(671)
  obj = self.var.resolve(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in resolve(796)
  value = self._resolve_lookup(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in _resolve_lookup(837)
  current = getattr(current, bit)

/usr/local/lib/python3.10/site-packages/constance/base.py in __getattr__(19)
  result = self._backend.get(key)

/usr/local/lib/python3.10/site-packages/constance/backends/database/__init__.py in get(80)
  value = self._model._default_manager.get(key=key).value

/usr/local/lib/python3.10/site-packages/silk/sql.py in execute_sql(96)
  query_dict['analysis'] = _explain_query(self.connection, q, params)

/usr/local/lib/python3.10/site-packages/silk/sql.py in _explain_query(58)
  cur.execute(prefixed_query, params)

51 </div>
52 </div>
53 </div>
54 {{ config.PLATFORM_EMBEDDED_CHATBOT | safe }}
55 {{ config.PLATFORM_EMBEDDED_STICKY_BUTTON | safe }}
56 {% block content %}
57 {% endblock %}
58 <div class="section">

/code/config/templates/base.html

SELECT "constance_config"."id",
       "constance_config"."key",
       "constance_config"."value"
  FROM
"constance_config"
 WHERE
"constance_config"."key" = 'PLATFORM_EMBEDDED_STICKY_BUTTON'
 LIMIT
21
SELECT ••• FROM "constance_config" WHERE "constance_config"."key" = 'PLATFORM_EMBEDDED_STICKY_BUTTON' LIMIT 21
2 similar queries.
0.69

Connection: default

Transaction status: Idle

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(72)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django/template/response.py in render(105)
  self.content = self.rendered_content

/usr/local/lib/python3.10/site-packages/django/template/response.py in rendered_content(83)
  return template.render(context, self._request)

/usr/local/lib/python3.10/site-packages/django/template/backends/django.py in render(61)
  return self.template.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(170)
  return self._render(context)

/usr/local/lib/python3.10/site-packages/django/test/utils.py in instrumented_test_render(100)
  return self.nodelist.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(938)
  bit = node.render_annotated(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render_annotated(905)
  return self.render(context)

/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py in render(150)
  return compiled_parent._render(context)

/usr/local/lib/python3.10/site-packages/django/test/utils.py in instrumented_test_render(100)
  return self.nodelist.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(938)
  bit = node.render_annotated(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render_annotated(905)
  return self.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(988)
  output = self.filter_expression.resolve(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in resolve(671)
  obj = self.var.resolve(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in resolve(796)
  value = self._resolve_lookup(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in _resolve_lookup(837)
  current = getattr(current, bit)

/usr/local/lib/python3.10/site-packages/constance/base.py in __getattr__(19)
  result = self._backend.get(key)

/usr/local/lib/python3.10/site-packages/constance/backends/database/__init__.py in get(80)
  value = self._model._default_manager.get(key=key).value

/usr/local/lib/python3.10/site-packages/silk/sql.py in execute_sql(89)
  return self._execute_sql(*args, **kwargs)

52 </div>
53 </div>
54 {{ config.PLATFORM_EMBEDDED_CHATBOT | safe }}
55 {{ config.PLATFORM_EMBEDDED_STICKY_BUTTON | safe }}
56 {% block content %}
57 {% endblock %}
58 <div class="section">
59 <div class="footer-holder">

/code/config/templates/base.html

EXPLAIN SELECT "constance_config"."id",
       "constance_config"."key",
       "constance_config"."value"
  FROM
"constance_config"
 WHERE
"constance_config"."key" = 'PLATFORM_EMBEDDED_STICKY_BUTTON'
 LIMIT
21
EXPLAIN SELECT ••• FROM "constance_config" WHERE "constance_config"."key" = 'PLATFORM_EMBEDDED_STICKY_BUTTON' LIMIT 21
2 similar queries.
0.69

Connection: default

Transaction status: Idle

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(72)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django/template/response.py in render(105)
  self.content = self.rendered_content

/usr/local/lib/python3.10/site-packages/django/template/response.py in rendered_content(83)
  return template.render(context, self._request)

/usr/local/lib/python3.10/site-packages/django/template/backends/django.py in render(61)
  return self.template.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(170)
  return self._render(context)

/usr/local/lib/python3.10/site-packages/django/test/utils.py in instrumented_test_render(100)
  return self.nodelist.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(938)
  bit = node.render_annotated(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render_annotated(905)
  return self.render(context)

/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py in render(150)
  return compiled_parent._render(context)

/usr/local/lib/python3.10/site-packages/django/test/utils.py in instrumented_test_render(100)
  return self.nodelist.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(938)
  bit = node.render_annotated(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render_annotated(905)
  return self.render(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in render(988)
  output = self.filter_expression.resolve(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in resolve(671)
  obj = self.var.resolve(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in resolve(796)
  value = self._resolve_lookup(context)

/usr/local/lib/python3.10/site-packages/django/template/base.py in _resolve_lookup(837)
  current = getattr(current, bit)

/usr/local/lib/python3.10/site-packages/constance/base.py in __getattr__(19)
  result = self._backend.get(key)

/usr/local/lib/python3.10/site-packages/constance/backends/database/__init__.py in get(80)
  value = self._model._default_manager.get(key=key).value

/usr/local/lib/python3.10/site-packages/silk/sql.py in execute_sql(96)
  query_dict['analysis'] = _explain_query(self.connection, q, params)

/usr/local/lib/python3.10/site-packages/silk/sql.py in _explain_query(58)
  cur.execute(prefixed_query, params)

52 </div>
53 </div>
54 {{ config.PLATFORM_EMBEDDED_CHATBOT | safe }}
55 {{ config.PLATFORM_EMBEDDED_STICKY_BUTTON | safe }}
56 {% block content %}
57 {% endblock %}
58 <div class="section">
59 <div class="footer-holder">

/code/config/templates/base.html

INSERT INTO "silk_response" ("id", "request_id", "status_code", "raw_body", "body", "encoded_headers")
VALUES
('462ca548-7546-4045-9342-0d3f38bfd1b9', '35cd3a55-9132-4761-a6ad-f371f8e313c7', 200, 'CjwhRE9DVFlQRSBodG1sPjwhLS0gIExhc3QgUHVibGlzaGVkOiBUdWUgTm92IDIxIDIwMjMgMjE6Mjc6MDkgR01UKzAwMDAgKENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lKSAgLS0+CjxodG1sIGRhdGEtd2YtcGFnZT0iNjU1MzkzMGMwNjE2YWIzNDNmZjRkYzE2IiBkYXRhLXdmLXNpdGU9IjY1NTM5MzBiMDYxNmFiMzQzZmY0ZGJlYiI+CjxoZWFkPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8dGl0bGU+Qm9vb3N0ZWQgLSBOZXh0IEdlbmVyYXRpb24gQWkgY2hhdGJvdDwvdGl0bGU+CiAgPG1ldGEgY29udGVudD0iRGlzY292ZXIgVGhlIFBvd2VyIE9mIEFpIGNoYXRib3RzIiBuYW1lPSJkZXNjcmlwdGlvbiI+CiAgPG1ldGEgY29udGVudD0iQm9vb3N0ZWQgLSBOZXh0IEdlbmVyYXRpb24gQWkgY2hhdGJvdCIgcHJvcGVydHk9Im9nOnRpdGxlIj4KICA8bWV0YSBjb250ZW50PSJEaXNjb3ZlciBUaGUgUG93ZXIgT2YgQWkgY2hhdGJvdHMiIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiI+CiAgPG1ldGEgY29udGVudD0iQm9vb3N0ZWQgLSBOZXh0IEdlbmVyYXRpb24gQWkgY2hhdGJvdCIgcHJvcGVydHk9InR3aXR0ZXI6dGl0bGUiPgogIDxtZXRhIGNvbnRlbnQ9IkRpc2NvdmVyIFRoZSBQb3dlciBPZiBBaSBjaGF0Ym90cyIgcHJvcGVydHk9InR3aXR0ZXI6ZGVzY3JpcHRpb24iPgogIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIj4KICA8bWV0YSBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIiBuYW1lPSJ0d2l0dGVyOmNhcmQiPgogIDxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiBuYW1lPSJ2aWV3cG9ydCI+CiAgPGxpbmsgaHJlZj0iL3N0YXRpYy9jc3Mvbm9ybWFsaXplLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CiAgPGxpbmsgaHJlZj0iL3N0YXRpYy9jc3Mvd2ViZmxvdy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgogIDxsaW5rIGhyZWY9Ii9zdGF0aWMvY3NzL2Jvb29zdGVkLndlYmZsb3cuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIiByZWw9InByZWNvbm5lY3QiPgogIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIHJlbD0icHJlY29ubmVjdCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvd2ViZm9udC8xLjYuMjYvd2ViZm9udC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+V2ViRm9udC5sb2FkKHsgIGdvb2dsZTogeyAgICBmYW1pbGllczogWyJMYXRvOjEwMCwxMDBpdGFsaWMsMzAwLDMwMGl0YWxpYyw0MDAsNDAwaXRhbGljLDcwMCw3MDBpdGFsaWMsOTAwLDkwMGl0YWxpYyIsIkRNIFNhbnM6cmVndWxhcixpdGFsaWMsNTAwLDUwMGl0YWxpYyw3MDAsNzAwaXRhbGljIiwiSW50ZXI6MTAwLDIwMCwzMDAscmVndWxhciw1MDAsNjAwLDcwMCw4MDAsOTAwIl0gIH19KTs8L3NjcmlwdD4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IWZ1bmN0aW9uKG8sYyl7dmFyIG49Yy5kb2N1bWVudEVsZW1lbnQsdD0iIHctbW9kLSI7bi5jbGFzc05hbWUrPXQrImpzIiwoIm9udG91Y2hzdGFydCJpbiBvfHxvLkRvY3VtZW50VG91Y2gmJmMgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoKSYmKG4uY2xhc3NOYW1lKz10KyJ0b3VjaCIpfSh3aW5kb3csZG9jdW1lbnQpOzwvc2NyaXB0PgogIDxsaW5rIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2Zhdmljb24ucG5nIiByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3gtaWNvbiI+CiAgPGxpbmsgaHJlZj0iL3N0YXRpYy9pbWFnZXMvd2ViY2xpcC5wbiIgcmVsPSJhcHBsZS10b3VjaC1pY29uIj4KPC9oZWFkPgo8Ym9keT4KPGRpdiBkYXRhLWFuaW1hdGlvbj0iZGVmYXVsdCIgZGF0YS1jb2xsYXBzZT0ibWVkaXVtIiBkYXRhLWR1cmF0aW9uPSI0MDAiIGRhdGEtZWFzaW5nPSJlYXNlIiBkYXRhLWVhc2luZzI9ImVhc2UiIHJvbGU9ImJhbm5lciIgY2xhc3M9Im5hdmJhciB3LW5hdiI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgbmF2YmFyLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9Im5hdmJhci1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9Im5hdmJhci1jb250YWluZXIiPgogICAgICAgICAgPGEgaHJlZj0iLyIgYXJpYS1jdXJyZW50PSJwYWdlIiBjbGFzcz0iYnJhbmQgdy1uYXYtYnJhbmQgdy0tY3VycmVudCI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xvZ28taXNvLWtvcGlvLnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDk5MXB4KSAxMjBweCwgOTcuNzAzMTI1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvbG9nby1pc28ta29waW8tcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL2xvZ28taXNvLWtvcGlvLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby1wLTE2MDAucG5nIDE2MDB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby1wLTIwMDAucG5nIDIwMDB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby1wLTI2MDAucG5nIDI2MDB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby5wbmcgMzAwMHciIGFsdD0iIiBjbGFzcz0iYnJhbmQtaW1hZ2UiPjwvYT4KICAgICAgICAgIDxuYXYgcm9sZT0ibmF2aWdhdGlvbiIgY2xhc3M9Im5hdi1tZW51IHctbmF2LW1lbnUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtbWVudS1saW5rLWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LW1lbnUtbGluay1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWxpbmtzIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI1Byb2R1Y3QiIGNsYXNzPSJuYXYtbGluayB3LW5hdi1saW5rIj5UdW90ZTwvYT4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0ZlYXR1cmVzIiBjbGFzcz0ibmF2LWxpbmsgdy1uYXYtbGluayI+T21pbmFpc3V1ZGV0PC9hPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjUG93ZXIiIGNsYXNzPSJuYXYtbGluayB3LW5hdi1saW5rIj5UZWhvPC9hPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjRXhwZXJpZW5jZSIgY2xhc3M9Im5hdi1saW5rIHctbmF2LWxpbmsiPkvDpHl0dMO2PC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LW1lbnUtYnV0dG9uLWhvbGRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvYXBwIiBjbGFzcz0iYnV0dG9uIG5hdmJhci1idXR0b24gdy1idXR0b24iPkxPRyBJTjwvYT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L25hdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1lbnUtYnV0dG9uIHctbmF2LWJ1dHRvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InctaWNvbi1uYXYtbWVudSI+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KLyogQ09NTU9OIFNUWUxFUyAqLwo6cm9vdCwKCWh0bWwgewoJZm9udC1zaXplOiAxMHB4OyAKfQoqIHsKcGFkZGluZzogMDsgCiBtYXJnaW46IDA7IAogb3V0bGluZTogMDt9Cmh0bWwsCmJvZHkgewoJaGVpZ2h0OiAxMDAlOwoJd2lkdGg6IDEwMCU7Cglmb250LXdlaWdodDogbm9ybWFsOwoJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CgktbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwoJYmFja2dyb3VuZC1jb2xvcjogI0VERjFGNDsKCWZvbnQtc2l6ZTogMTVweDsKfQp1bCwKb2wgewoJbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlOwp9CnRleHRhcmVhLAppbnB1dFt0eXBlPSd0ZXh0J10sCmlucHV0W3R5cGU9J2J1dHRvbiddLAppbnB1dFt0eXBlPSdzdWJtaXQnXSwKaW5wdXRbdHlwZT0nZGF0ZSddIHsKCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQppbnB1dDpmb2N1cywKc2VsZWN0OmZvY3VzLAp0ZXh0YXJlYTpmb2N1cywKYnV0dG9uOmZvY3VzIHsKCW91dGxpbmU6IG5vbmU7Cn0ubGlua3sKCWNvbG9yOiAjMTk4MEQ4OwoJY3Vyc29yOiBwb2ludGVyOwp9Ci5jUHsKCWN1cnNvcjogcG9pbnRlcjsKfS5mbGV4LWNlbnRlci12ewoJZGlzcGxheTogZmxleDsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLyogQ09NTU9OIFNUWUxFUyAqLwoud2YtZm9ybS1jb21wb25lbnQgewoJcGFkZGluZzogMzBweCA0MHB4IDYwcHg7Cn0KLndmLWZvcm0tcGFpZCB7CglwYWRkaW5nLWJvdHRvbTogNDVweDsKfQoud2YtcGFyZW50IHsKCXBhZGRpbmc6IDMwcHggMDsKCWhlaWdodDogMTAwJTsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7CglvdmVyZmxvdzogYXV0bzsKCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CgliYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTt9Ci53Zi13cmFwcGVyICogewoJYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoud2Ytd3JhcHBlciB7Cgl3aWR0aDogMTAwJTsKCW1heC13aWR0aDogNzAwcHg7Cglib3JkZXItcmFkaXVzOiAxMHB4OwoJbWFyZ2luOiBhdXRvOwoJYm9yZGVyOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWNvbG9yOiAjMjIyOwoJYm94LXNoYWRvdzogMHB4IDBweCAycHggMCAjMDAwMDAwMzM7Cn0KLmlmcmFtZS1jb250YWluZXJ7CgloZWlnaHQ6IDEwMCU7Cgl3aWR0aDogMTAwJTsKCWJvcmRlcjogbm9uZTsKCW1pbi1oZWlnaHQ6IDM2NXB4Owp9Ci53Zi1sb2dvIHsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW4tYm90dG9tOiAzMHB4OwoJbWF4LWhlaWdodDogNjBweDsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci53Zi1sb2dvW2RhdGEtdXgtbG9nby1zaXplPSdsZyddIHsKCWhlaWdodDogNjBweDsKfQoud2YtbG9nb1tkYXRhLXV4LWxvZ28tc2l6ZT0nbWQnXSB7CgloZWlnaHQ6IDUwcHg7Cn0KLndmLWxvZ29bZGF0YS11eC1sb2dvLXNpemU9J3NtJ10gewoJaGVpZ2h0OiAzMHB4Owp9Ci53Zi1sb2dvW2RhdGEtdXgtbG9nby1wb3M9J2xlZnQnXSB7CglqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7Cn0KLndmLWxvZ29bZGF0YS11eC1sb2dvLXBvcz0nY2VudGVyJ10gewoJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLndmLWxvZ29bZGF0YS11eC1sb2dvLXBvcz0ncmlnaHQnXSB7CglqdXN0aWZ5LWNvbnRlbnQ6IHJpZ2h0Owp9Ci53Zi1oZWFkZXIgewoJZm9udC1zaXplOiAyMnB4OwoJcGFkZGluZy1ib3R0b206IDM1cHg7Cglmb250LXdlaWdodDogYm9sZDsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KLndmLXNlYy13cmFwewoJbWFyZ2luLWJvdHRvbTogNDBweDsKfQoud2Ytc2VjLXdyYXA6Zmlyc3QtY2hpbGQgLndmLXNlYy1oZWFkewoJbWFyZ2luLXRvcDogMDsKfQoud2Ytc2VjLWhlYWQgewoJbWFyZ2luLWJvdHRvbTogMjBweDsKCW1hcmdpbi10b3A6IDM1cHg7Cn0KLndmLXNlYy10aXRsZSB7Cglmb250LXNpemU6IDE4cHg7Cglmb250LXdlaWdodDogYm9sZDsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KLndmLXNlYy1kZXNjIHsKCW1hcmdpbjogMDsKCW1hcmdpbi10b3A6IDVweDsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KLndmLXJvdyB7CgltYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci53Zi1yb3ctd2l0aC1zdXBwbGVtZW50YXJ5ewoJbWFyZ2luLWJvdHRvbTogMTBweDsKfQoud2YtbGFiZWwgewoJcGFkZGluZzogN3B4IDA7Cgl3b3JkLWJyZWFrOiBicmVhay13b3JkOwp9Ci53Zi1maWVsZDpub3QoIC5tdWx0aXBsZS1maWVsZHMtZGl2KSB7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJd29yZC1icmVhazogYnJlYWstd29yZDsKCWJvcmRlcjogMDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoud2YtZmllbGQtaW5uZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogZmxleDsKCWZsZXg6IDE7Cn0KLndmLWZpZWxkLWlucHV0OmZvY3VzIHsKCWJvcmRlcjogMXB4IHNvbGlkICMxOTgwZDg7Cn0KLndmLWZpZWxkLWRyb3Bkb3duIC53Zi1maWVsZC1pbnB1dDpmb2N1c3sKCWJvcmRlcjogbm9uZTsgIC8qIG11bHRpcGlja2xpc3Qgc2VhcmNoICovCn0ud2YtaW5wdXQtZm9jdXMud2YtZmllbGQ6OmFmdGVyIHsKCW9wYWNpdHk6IDE7Cn0KLndmLWlucHV0LWZvY3VzLndmLWZpZWxkOjphZnRlciwKLndmLWZpZWxkLWVycm9yLWFjdGl2ZS53Zi1maWVsZCAud2YtZmllbGQtZXJyb3IgewoJZGlzcGxheTogYmxvY2s7Cn0KLndmLWZpZWxkLWVycm9yLWFjdGl2ZS53Zi1maWVsZCAud2YtZXJyb3Itdmlldy1tb3JlIHsKZGlzcGxheTogZmxleDsKfS53Zi1maWVsZC1lcnJvci1hY3RpdmUud2YtZmllbGQgLndmLWZpZWxkLWlucHV0Om5vdCguZGF0ZS1pbnB1dC1jb250YWluZXIgLndmLWZpZWxkLWlucHV0KSwud2YtZmllbGQtZXJyb3ItYWN0aXZlLndmLWZpZWxkIC53Zi1maWVsZC1kcm9wZG93biwgLndmLWZpZWxkLWVycm9yLWFjdGl2ZSAuZGF0ZS1pbnB1dC1jb250YWluZXIgewoJYm9yZGVyOiAxcHggc29saWQgI0ZENkI2RDsKCWJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICNGNEEyQTI7Cn0KLndmLWZpZWxkLW1hbmRhdG9yeSAud2YtZmllbGQtaW5uZXI6OmJlZm9yZSB7Cgljb250ZW50OiAnJzsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWluc2V0LWlubGluZS1zdGFydDogMHB4OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmNmE2YTsKCXdpZHRoOiAzcHg7CgloZWlnaHQ6IDEwMCU7Cglib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzOiA0cHg7Cglib3JkZXItZW5kLXN0YXJ0LXJhZGl1czogNHB4OwoJei1pbmRleDogMjsKCXRvcDogMDsKCWJvdHRvbTogMDsKfQoud2YtZmllbGQtbWFuZGF0b3J5IC53Zi1maWVsZC1pbm5lci5uby1yZXN1bHRzLWVsZW06OmJlZm9yZXsgCgloZWlnaHQ6IDk4JTsKfQoud2YtZmllbGQtaW5wdXQsCi53Zi1maWVsZC1kcm9wZG93biB7Cgl3aWR0aDogMTAwJTsKCWJvcmRlcjogMXB4IHNvbGlkICNCREM4RDM7Cglib3JkZXItcmFkaXVzOiA0cHg7CglwYWRkaW5nOiAxMHB4IDE1cHg7CgltaW4taGVpZ2h0OiAzOHB4OwoJZm9udC1zaXplOiAxNXB4OwoJZm9udC1mYW1pbHk6IGluaGVyaXQ7Cn0Kc2VsZWN0Om5vdChbZGF0YS13Zm9ybS1maWVsZD0nc2VsZWN0LW11bHRpcGxlJ10pIHsKCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKCS1tb3otYXBwZWFyYW5jZTogbm9uZTsKCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyBmaWxsPSdibGFjaycgaGVpZ2h0PSczNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+XCIpOwoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKCWJhY2tncm91bmQtcG9zaXRpb24teDogOTklOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCW1pbi13aWR0aDogNzBweDsKfQppbnB1dCwKc2VsZWN0IHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLndmLWZpZWxkLWl0ZW0gewoJbWluLWhlaWdodDogMzhweDsKfQoud2YtdGltZS1maWVsZC13cmFwcGVyIHsKCWRpc3BsYXk6IGZsZXg7CglmbGV4OiAxOwp9Ci53Zi10aW1lLWZpZWxkLXdyYXBwZXIgc2VsZWN0IHsKCW1hcmdpbi1sZWZ0OiAxMHB4Owp9Ci53Zi1mb3JtLWNvbXBvbmVudCAud2YtZmllbGQtZXJyb3IsCgkud2YtZm9ybS1jb21wb25lbnQgLndmLWZpZWxkLWhlbHAtdGV4dCB7Cgl0ZXh0LWFsaWduOiBsZWZ0Owp9Ci53Zi1mb3JtLWNvbXBvbmVudCAud2YtZmllbGQtZXJyb3IgewoJdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLndmLWZpZWxkLWVycm9yIHsKCWNvbG9yOiAjRkY1MDUwOwoJZm9udC1zaXplOiAxMnB4OwoJbWFyZ2luLXRvcDogNHB4OwoJZGlzcGxheTogbm9uZTsKCWFuaW1hdGlvbjogc2hha2UgMC44MnMgY3ViaWMtYmV6aWVyKC4zNiwgLjA3LCAuMTksIC45NykgYm90aDsKCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CgliYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CglwZXJzcGVjdGl2ZTogMTAwMHB4Owp9Ci53Zi1maWVsZC1lcnJvci1sb25nIHsKCXdoaXRlLXNwYWNlOiBub3dyYXA7CglvdmVyZmxvdzogaGlkZGVuOwoJdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Cn0KLndmLWVycm9yLXZpZXctbW9yZSB7Cglmb250LXNpemU6IDEycHg7CglkaXNwbGF5OiBub25lOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cgljb2xvcjogIzE4ODBkODsKCW1hcmdpbi10b3A6IDRweDsKCSY6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CgljdXJzb3I6IHBvaW50ZXI7Cn0KfQoud2YtZXJyb3ItcGFyZW50LWVsZSB7CglkaXNwbGF5OiBmbGV4OwoJanVzdGlmeS1jb250ZW50OiBlbmQ7Cn0KLndmLWZpZWxkLWhlbHAtdGV4dCB7Cgljb2xvcjogIzUxNTE1OTsKCWZvbnQtc2l6ZTogMTJweDsKCW1hcmdpbi10b3A6IDVweDsKCX0KLndmLWZpZWxkLWhlbHAtdGV4dCArIC53Zi1lcnJvci1wYXJlbnQtZWxlIC53Zi1maWVsZC1lcnJvciwKIC53Zi1maWVsZC1oZWxwLXRleHQgKyAud2YtZXJyb3ItcGFyZW50LWVsZSAud2YtZXJyb3Itdmlldy1tb3JlIHsKbWFyZ2luOiAwOwp9Ci53Zi1maWVsZC1oZWxwLXRleHQtbGlua3sKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoud2YtZmllbGQtY2hlY2tib3ggewoJY3Vyc29yOiBwb2ludGVyOwoJYm9yZGVyLXJhZGl1czogM3B4OwoJbWluLXdpZHRoOiAxNHB4OwoJbWluLWhlaWdodDogMjBweDsKCWJveC1zaXppbmc6IGluaXRpYWw7CglhY2NlbnQtY29sb3I6ICMxOTgwZDg7CgltYXJnaW4taW5saW5lLWVuZDogMTBweDsKCW1hcmdpbi1ib3R0b206IGF1dG87Cn0KLndmLWZpZWxkLWRyb3Bkb3duLWRhdGUgewoJcGFkZGluZzogOHB4IDEycHg7Cglib3JkZXItcmFkaXVzOiA0cHg7Cglmb250LXNpemU6IDE1cHg7CgljdXJzb3I6IHBvaW50ZXI7Cn0KLndmLWZpZWxkLWRyb3Bkb3duLWRhdGUgewoJYm9yZGVyOiAxcHggc29saWQgI0JEQzhEMzsKCX0KLndmLWZpZWxkLWRyb3Bkb3duLWRhdGU6aG92ZXIgewoJYm9yZGVyOiAxcHggc29saWQgIzY1QzE5OTsKfQoud2Zvcm0tZmllbGQtaXRlbS11cGxvYWQtaW5wdXQgewoJbWluLWhlaWdodDogNXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICNGQkZDRkQ7Cglib3JkZXI6IDFweCBkYXNoZWQgI2JkYzhkMzsKCWxpbmUtaGVpZ2h0OiAyLjE7CgljdXJzb3I6IHBvaW50ZXI7Cn0KLndmb3JtLWZpZWxkLWl0ZW0tdXBsb2FkLWlucHV0OmZvY3VzIHsKCWJvcmRlcjogMXB4IGRhc2hlZCAjYmRjOGQzOwp9Ci53Zm9ybS1maWxlLXVwbG9hZC1pbnB1dC1sYWJlbCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgI0Y1RjhGQSwgI2ZmZmZmZik7Cgljb2xvcjogIzIxMjEyOTsKCWJvcmRlci1jb2xvcjogI2QzZGJlMzsKCWJvcmRlcjogMXB4IHNvbGlkICNkM2RiZTM7Ym9yZGVyLXJhZGl1czogNHB4OwoJcGFkZGluZzogMC43cmVtIDJyZW07Cglmb250LXNpemU6IDEuNHJlbTsKCWluc2V0LWlubGluZS1lbmQ6IDFyZW07Cgl0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7Cgl0b3A6IDUwJTsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCX0KaW5wdXRbdHlwZT0nZmlsZSddOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiwgaW5wdXRbdHlwZT0nZmlsZSddOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbnsKIG9wYWNpdHk6IDA7IAogd2lkdGg6IDA7CiBoZWlnaHQ6IDI4cHg7Cn0ud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nY2FwdGNoYSddIC53Zi1maWVsZHsKCWRpc3BsYXk6IGZsZXg7CglhbGlnbi1pdGVtczogY2VudGVyOwp9Ci53Zm9ybS1maWVsZC1pdGVtLWNhcHRjaGEtaW5wdXR7Cglib3JkZXItc3RhcnQtZW5kLXJhZGl1czogMDsKCWJvcmRlci1lbmQtZW5kLXJhZGl1czogMDsKfQoud2YtZmllbGQtY2FwdGNoYS1pbWctd3JhcHsKCWJvcmRlcjogMXB4IHNvbGlkICNCREM4RDM7Cglib3JkZXItcmFkaXVzOiA0cHg7Cglib3JkZXItaW5saW5lLXN0YXJ0OiAwOwoJYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czogMDsKCWJvcmRlci1lbmQtc3RhcnQtcmFkaXVzOiAwOwoJaGVpZ2h0OiBpbml0aWFsOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCW1pbi13aWR0aDogMTIwcHg7Cn0KLndmLWZpZWxkLWNhcHRjaGEtaW1newoJaGVpZ2h0OiAzOHB4OwoJd2lkdGg6IDEwMCU7Cn0KLnJlbG9hZC1pbWd7Cglmb250LXNpemU6IDIzcHg7Cgljb2xvcjogIzRCNTU2OTsKCW1hcmdpbi1pbmxpbmUtZW5kOiA1cHg7Cn0KLnJlbG9hZC1jYXB0Y2hhewoJbWFyZ2luLWlubGluZS1zdGFydDogMTBweDsKCXVzZXItc2VsZWN0OiBub25lCn0KLndmLWJ0biB7CglwYWRkaW5nOiAxMHB4IDIwcHg7Cglib3JkZXItcmFkaXVzOiA0cHg7Cglmb250LXNpemU6IDE1cHg7CgljdXJzb3I6IHBvaW50ZXI7Cglmb250LXdlaWdodDogYm9sZDsKCWZvbnQtZmFtaWx5OiBpbmhlcml0Owp9Ci53Zi1idG5bZGF0YS11eC1idG4tdHlwZT0nZGVmYXVsdCddIHsKCWJvcmRlci1yYWRpdXM6IDA7Cn0KLndmLWJ0bltkYXRhLXV4LWJ0bi10eXBlPSdwcmltYXJ5J10gewoJYm9yZGVyLXJhZGl1czogNHB4Owp9Ci53Zi1idG5bZGF0YS11eC1idG4tdHlwZT0nc2Vjb25kYXJ5J10gewoJYm9yZGVyLXJhZGl1czogMjBweDsKfQoud2Zvcm0tYnRuLXdyYXAgewoJZGlzcGxheTogZmxleDsKCW1hcmdpbi10b3A6IDQwcHg7CglhbGlnbi1pdGVtczogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCWZsZXg6IDE7Cn0KLndmb3JtLXBvd2VyZWRieS1jb250YWluZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJaW5zZXQtaW5saW5lLXN0YXJ0OiAwOwoJYm90dG9tOiAwOwoJYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6IDEwcHg7Cglib3JkZXItZW5kLXN0YXJ0LXJhZGl1czogMTBweDsKCWJhY2tncm91bmQtY29sb3I6ICMyMzM4NEY7Cglmb250LXNpemU6IDEzcHg7CglwYWRkaW5nOiA2cHggOHB4OwoJZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CglkaXNwbGF5OiBmbGV4OwoJYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoud2YtdGV4dC1hcmVhLWlucHV0IHsKCXJlc2l6ZTogdmVydGljYWw7CgloZWlnaHQ6IDEwMHB4OwoJbWluLWhlaWdodDogMTAwcHg7CgltYXgtaGVpZ2h0OiAyMDBweDsKfQouZHJvcGRvd24tY29udGVudHM6OmFmdGVyIHsKCWJvcmRlci1sZWZ0OiAwLjRyZW0gc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItcmlnaHQ6IDAuNHJlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci10b3A6IDAuNHJlbSBzb2xpZCBibGFjazsKCXRvcDogNDUlOwoJY29udGVudDogJyc7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglpbnNldC1pbmxpbmUtZW5kOiAxcmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09ICogTXVsdGlQaWNrbGlzdCBTdHlsZXMgKiA9PT09PT09PT09PT09PT09PT09PSAqLwoubXVsdGlzZWxlY3Qud2YtZmllbGQtZHJvcGRvd24gewoJcGFkZGluZzogMDsKCWN1cnNvcjogdGV4dDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoubXVsdGlzZWxlY3QuZHJvcGJveC1hY3RpdmV7Cglib3JkZXItY29sb3I6ICMxOTgwZDg7Cglib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsKfQoubXVsdGlzZWxlY3QuZHJvcGJveC1hY3RpdmUuZHJvcGRvd25Ub3A6bm90KC51eC1waWNrLW1peGVkIC5tdWx0aXNlbGVjdC5kcm9wYm94LWFjdGl2ZSkgewoJYm9yZGVyLXJhZGl1czogMCAwIDRweCA0cHg7CgkuZHJvcGRvd24taW5wdXQgewoJbWluLWhlaWdodDogMzZweDsKCWJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4Owp9Cn0KLm11bHRpc2VsZWN0Lm5vLXJlc3VsdHMtZWxlbXsKCWJvcmRlci1yYWRpdXM6IDRweDsgCn0KLnNlbGVjdGVkLW9wdGlvbnMuc2VsZWN0ZWQtb3B0aW9ucy1maWVsZCB7CglkaXNwbGF5OiBub25lOwp9Ci5zZWxlY3RlZC1vcHRpb25zewoJbWF4LWhlaWdodDogMTUwcHg7CglvdmVyZmxvdzogYXV0bzsKCXBhZGRpbmc6IDNweCA1cHggN3B4IDVweDsKCWJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOwoJYm9yZGVyLWJvdHRvbTogMDsKCW1pbi1oZWlnaHQ6IDM4cHg7CgloZWlnaHQ6IDM4cHg7Cgl0cmFuc2l0aW9uOiAwLjNzIGFsbDsgCglzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsKfQouc2VsZWN0ZWQtb3B0aW9ucy5oaWRlLW9wdC1saXN0ewoJbWluLWhlaWdodDogMDsgIAoJaGVpZ2h0OiAwOwoJcGFkZGluZzogMDsKfQouc2VsZWN0ZWQtb3B0aW9ucy5zZXQtb3B0LWxpc3R7CgloZWlnaHQ6IGF1dG87IAp9Ci5zZWxlY3RlZC1vcHRpb25zLmRycC1kd24tbm8tdmFsewoJYm9yZGVyLXJpZ2h0OiB1bnNldCAhaW1wb3J0YW50Owp9Ci5kcm9wZG93bi1pbnB1dC5kcm9wLWJveC1jbG9zZWR7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4Owp9Ci5kcm9wZG93bi1pbnB1dC5kcm9wLWJveC1hY3RpdmV7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50OwoJYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5kTnsKCWRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQouZHJvcGRvd24gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJd2lkdGg6IDEwMCU7CgkgaGVpZ2h0OiAzNnB4OwoJdHJhbnNpdGlvbjogMC4zcyBhbGw7Cn0KLmRyb3Bkb3duLmhpZGUtZHJvcGRvd257CgloZWlnaHQ6IDA7Cn0KLmRyb3Bkb3duLWlucHV0ewoJd2lkdGg6IDEwMCU7Cglib3JkZXI6IG5vbmU7CglvdXRsaW5lOiBub25lOwoJaGVpZ2h0OiAzMHB4OwoJcGFkZGluZzogNXB4OwoJYm9yZGVyLXJhZGl1czogNHB4OwoJYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7CglwYWRkaW5nLWxlZnQ6IDE0cHg7Cn0KLmRyb3Bkb3duLWlucHV0OjpwbGFjZWhvbGRlcnsKCWNvbG9yOiAjOTE5MTkxOwoJZm9udC1zaXplOiAxNHB4Owp9Ci5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWRpc3BsYXk6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI0JEQzhEMzsKCWJvcmRlci1yYWRpdXM6IDAgMCA1cHggNXB4OwoJbWF4LWhlaWdodDogMzAwcHg7CglvdmVyZmxvdy15OiBhdXRvOwoJd2lkdGg6IGNhbGMoMTAwJSArIDJweCk7CglsZWZ0OiAtMXB4OwoJei1pbmRleDogMzsKCXRvcDogMzdweDsKCXRyYW5zaXRpb246IDAuM3MgYWxsOwp9Ci5kcm9wZG93bi1tZW51LmhpZGUtdGhlLWlucHsKCXRvcDogMDsKfQouZHJvcGRvd24ub3BlbiAuZHJvcGRvd24tbWVudSB7CglkaXNwbGF5OiBibG9jazsKfQouZHJvcGRvd24tbWVudS5kcm9wZG93bi1mb2N1c3sKCWJvcmRlci1jb2xvcjogIzE5ODBkODsKCWJvcmRlci10b3A6IDFweCBzb2xpZCAjRTZFQkYxOwp9Ci5kcm9wZG93bi1tZW51LmRyb3Bkb3duLWZvY3VzLmRyb3Bkb3duVG9wOm5vdCgudXgtcGljay1taXhlZCAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1mb2N1cyl7Cglib3JkZXItdG9wOiAxcHggc29saWQgIzE5ODBkODsKCWJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwOwp9Ci5tdWx0aXNlbGVjdC5kcm9wYm94LWFjdGl2ZSAuZHJvcGRvd24taW5wdXR7Cglib3JkZXItdG9wOiAwOwoJYm9yZGVyLWJvdHRvbTogMDsKCXBhZGRpbmctYm90dG9tOiAxN3B4OwoJcGFkZGluZy10b3A6IDE5cHg7Cglib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm11bHRpLXRhZ3sKCWJhY2tncm91bmQtY29sb3I6ICNDRUVCRkY7CglwYWRkaW5nLWlubGluZS1lbmQ6IDVweCAhaW1wb3J0YW50OwoJcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDEwcHggIWltcG9ydGFudDsKCXBhZGRpbmc6IDJweCA1cHggM3B4IDEwcHg7Cglib3JkZXItcmFkaXVzOiAxNXB4OwoJbWFyZ2luOiA1cHggNXB4IDAgMnB4OwoJZGlzcGxheTogaW5saW5lLWZsZXg7CgltYXgtd2lkdGg6IDk2JTsKfQoudGFnLWRhdGEtdmFsewoJY3Vyc29yOiBkZWZhdWx0OwoJbWF4LXdpZHRoOiA1NTBweDsKfQoubm8tcmVzdWx0c3sKCWN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OwoJdGV4dC1hbGlnbjogY2VudGVyOwoJY29sb3I6ICM5MTkxOTE7Cglmb250LXNpemU6IDE0cHg7Cn0KLm5vLXJlc3VsdHM6aG92ZXJ7CgliYWNrZ3JvdW5kLWNvbG9yOiB1bnNldCAhaW1wb3J0YW50Owp9Ci5vcHQtaGlkZXsKCWRpc3BsYXk6IG5vbmU7Cn0KLm9wdC1zaG93ewoJZGlzcGxheTogYmxvY2s7Cn0KLnRhZy1jbG9zZS1idG57CgltYXJnaW4taW5saW5lLXN0YXJ0OiAzcHg7CglwYWRkaW5nOiAwcHggNHB4IDBweDsKCWJvcmRlci1yYWRpdXM6IDUwJTsKCW9wYWNpdHk6IDAuNTsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJY3Vyc29yOiBwb2ludGVyOwp9Ci5tdWx0aS10YWc6aG92ZXIgLnRhZy1jbG9zZS1idG57CglvcGFjaXR5OiAxOwp9Ci5vcHRpb257CglwYWRkaW5nOiAxMHB4IDE0cHg7CgljdXJzb3I6IHBvaW50ZXI7Cglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjVmODsKfQoub3B0aW9uOmhvdmVyewoJYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjhmYTsKfQouaW5wdXQtbm90LWFjdGl2ZXsKCWRpc3BsYXk6IG5vbmU7Cn0KLmVsbGlwc2lzIHsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCW92ZXJmbG93OiBoaWRkZW47Cn0KLyogPT09PT09PT09PT09PT09PT09PT0gKiBNdWx0aVBpY2tsaXN0IFN0eWxlcyAqID09PT09PT09PT09PT09PT09PT09ICovCgoudXgtcGljay1taXhlZCB7CgoJLmRyb3Bkb3duLWNvbnRlbnRzIHsKCXBhZGRpbmc6IDMuNXB4IDEwcHg7CgloZWlnaHQ6IDEwMCU7Cn0KCgkuZHJvcGRvd24tbWVudSB7Cgl3aWR0aDogbWF4LWNvbnRlbnQ7CgltYXgtd2lkdGg6IDMwcmVtOwoJdG9wOiA0MnB4OwoJYm9yZGVyOiAxcHggc29saWQgI0QyREJFNTsKCWJvcmRlci1yYWRpdXM6IDRweDsKCWJveC1zaGFkb3c6IDAgMXB4IDE1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7Cgkub3B0aW9uW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV0gewoJYmFja2dyb3VuZC1jb2xvcjogI0UyRjNGQzsKCWZvbnQtd2VpZ2h0OiA2MDA7Cgl9Cn0KCgkud2YtZmllbGQtZHJvcGRvd24uZHJvcGJveC1hY3RpdmU6OmFmdGVyIHsKCWNvbnRlbnQ6ICcnOwoJYm9yZGVyOiAycHggc29saWQgIzE5ODBkODsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKIAl3aWR0aDogMTAwJTsKCWhlaWdodDogMTAwJTsKCXRvcDogMDsKCWxlZnQ6IDA7Cglib3gtc2l6aW5nOiBib3JkZXItYm94OwoJei1pbmRleDogMTsKCX0KCS53Zi1maWVsZC1pdGVtOm5vdCguc2VsZWN0ZWQtb3B0aW9ucykgewoJCW1pbi1oZWlnaHQ6IDM2cHg7Cgl9Cn0KLndmLWZvcm0tY29tcG9uZW50Om5vdChbZGF0YS11eC1mb3JtLWFsaWdubWVudD0ndG9wJ10pIC5tdWx0aXBsZS1maWVsZHMtZGl2IHsKCXdpZHRoOiA3MCU7Cn0KLmljb24td2l0aC10ZXh0LWRyb3Bkb3duIHsKCS5kcm9wZG93biA+IHNwYW4gewoJCW1hcmdpbi1pbmxpbmUtZW5kOiAxMHB4OwoJfQoJLmljb24tdGV4dC1kcm9wZG93biB7CgkJZGlzcGxheTogZmxleDsKCQlhbGlnbi1pdGVtczogY2VudGVyOwoJCT4gLyogc3BhbjpmaXJzdC1jaGlsZCB7CgkJCWZvbnQtc2l6ZTogMjJweDsgKi8gCgkJfQoJfQoJLm9wdGlvbiB7CgkJcGFkZGluZzogNHB4IDE0cHg7CgkJfQp9Ci5kcm9wZG93bi13aXRoLXNlYXJjaCB7CgkuZHJvcGRvd24ub3BlbiAuZHJvcGRvd24tbWVudSB7CgkJZGlzcGxheTogZmxleDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJfQoJLmRyb3Bkb3duLWl0ZW1zLXdyYXBwZXIgewoJCWZsZXgtZ3JvdzogMTsKCQlvdmVyZmxvdy15OiBhdXRvOwp9Cn0KLm11bHRpcGxlLWZpZWxkcy1kaXYgewoJZGlzcGxheTogZmxleDsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgkmLmZsZXgtMS01IHsKCQkuZmllbGQtMSB7CgkJCWZsZXg6IDE7Cn0KCS5maWVsZC0yIHsKCQkJZmxleDogNTsKCQl9Cgl9Cgkud2YtZmllbGQtZHJvcGRvd24gewoJCWJvcmRlci1yYWRpdXM6IDRweCAwcHggMHB4IDRweDsKCQlib3JkZXItcmlnaHQ6IDA7Cgl9Cgkud2YtZmllbGQtaXRlbTpub3QoLnNlbGVjdGVkLW9wdGlvbnMpIHsKCQlib3JkZXItcmFkaXVzOiAwcHggNHB4IDRweCAwcHg7Cgl9CgkmLndmLWZpZWxkIHsKCQl3b3JkLWJyZWFrOiB1bnNldDsKCX0KfQouZHJvcGRvd24tbWVudSB7CgkuZHJvcGRvd24tc2VhcmNoLWlucHV0IHsKCQlwYWRkaW5nOiA1cHggMTBweDsKCQl3aWR0aDogOTIlOwoJCW1hcmdpbjogMTBweDsKCQlib3JkZXI6IDFweCBzb2xpZCAjQ0REOEUzOwoJCWJvcmRlci1yYWRpdXM6IDRweDsKCX0KCS5kcm9wZG93bi1zZWFyY2gtaW5wdXQ6aG92ZXIgewoJCWJvcmRlcjogMXB4IHNvbGlkICMxOTgwZDg7Cgl9CgkuZHJvcGRvd24tc2VhcmNoLWlucHV0OmZvY3VzIHsKCQlib3JkZXI6IDJweCBzb2xpZCAjMTk4MGQ4OwoJfQp9CgovKiA9PT09PT09PT09PT09PT09PT09PSAqIERhdGVQaWNrZXIgU3R5bGVzICogPT09PT09PT09PT09PT09PT09PT0gKi8KLmNhbGVuZGFyLWljb24gewoJcGFkZGluZzogMHB4IDVweDsKfQouZGF0ZS1pbnB1dC1jb250YWluZXIgewoJd2lkdGg6IDEwMCU7Cglib3JkZXI6IDFweCBzb2xpZCAjQkRDOEQzOwoJYm9yZGVyLXJhZGl1czogNXB4OwoJZGlzcGxheTogZmxleDsKCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmR1bW15LWRpdiB7Cgl3aWR0aDogZml0LWNvbnRlbnQ7Cgl2aXNpYmlsaXR5OiBoaWRkZW47Cglwb3NpdGlvbjogYWJzb2x1dGU7Cn0KLndmLWZpZWxkLWl0ZW0tZGF0ZS5jdXN0b20tZGF0ZS1jb252ZXJ0ZWQtZmllbGQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJYm9yZGVyOiBub25lOwoJcGFkZGluZzogNXB4IDBweDsKCXRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9Ci53Zi1kYXRlLWNvbnRhaW5lcnMgewoJcGFkZGluZzogMHB4IDEwcHg7Cn0KLndmLWNhbGVuZGFyLXBvcHVwLXdyYXBwZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJd2lkdGg6IGF1dG87CglkaXNwbGF5OiBub25lOwoJYm9yZGVyOiAxcHggc29saWQgI0QyREJFNTsKCWJvcmRlci1yYWRpdXM6IDRweDsKCWJhY2tncm91bmQ6IHdoaXRlOwoJei1pbmRleDogMTAwMTsKCWJveC1zaGFkb3c6IDBweCAxcHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMik7CglwYWRkaW5nOiAxNXB4IDIwcHggMjBweDsKfQoud2YtY2FsZW5kYXItaGVhZGVyIHsKCWRpc3BsYXk6IGZsZXg7CglqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CglhbGlnbi1pdGVtczogY2VudGVyOwoJbWFyZ2luLWJvdHRvbTogMjBweDsKfS53Zi1jYWxlbmRhci1uYXYtaWNvbnMgewoJYmFja2dyb3VuZDogbm9uZTsKCWJvcmRlcjogbm9uZTsKCWN1cnNvcjogcG9pbnRlcjsKCWZvbnQtc2l6ZTogMjJweDsKCW1hcmdpbjogMCA1cHg7CglvcGFjaXR5OiAwLjY7Cn0KLndmLWNhbGVuZGFyLW5hdi1pY29ucy5uYXYtaWNvbi13aXRoLXNwYWNlIHsKCW1hcmdpbi1yaWdodDogMTBweDsKfQoud2YtY2FsZW5kYXItbW9udGgteWVhciB7Cglmb250LXNpemU6IDE2cHg7CgltYXJnaW4tdG9wOiAzcHg7Cn0KLndmLWNhbGVuZGFyLWdyaWQtY29udGFpbmVyIHsKCWRpc3BsYXk6IGdyaWQ7CglncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpOwoJbWFyZ2luLWJvdHRvbTogMTBweDsKfQoud2YtY2FsZW5kYXItZGF5cyB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cgljb2xvcjogIzIxMjEyOTsKCWZvbnQtc2l6ZTogMS4zcmVtOwp9Ci53Zi1jYWxlbmRhci1ib2R5LXdyYXBwZXIgewoJZGlzcGxheTogZ3JpZDsKCWdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcik7Cn0KLndmLWNhbGVuZGFyLWRhdGUgewoJdGV4dC1hbGlnbjogY2VudGVyOwoJcGFkZGluZzogOXB4OwoJbWFyZ2luOiAxcHg7CgljdXJzb3I6IHBvaW50ZXI7Cglmb250LXNpemU6IDEuM3JlbTsKfQoud2YtY2FsZW5kYXItZGF0ZTpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwOwoJYm9yZGVyLXJhZGl1czogMjVweDsKfQoud2YtY2FsZW5kYXItZGF0ZS5zZWxlY3RlZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMTk4MGQ4OwoJY29sb3I6IHdoaXRlOwoJYm9yZGVyLXJhZGl1czogMjVweDsKfQoud2YtY2FsZW5kYXItZGF0ZS5jdXJyZW50LWRhdGUgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICMxOTgwZDg7Cglib3JkZXItcmFkaXVzOiAyNXB4Owp9LndmLWNhbGVuZGFyLWRhdGUuZGlzYWJsZWQtZGF0ZSB7CglvcGFjaXR5OiAwLjM7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoud2YtY2FsZW5kYXItdG9kYXktYnV0dG9uIHsKCWRpc3BsYXk6IG5vbmU7CglwYWRkaW5nLXRvcDogMTBweDsKCWNvbG9yOiAjMTk4MGQ4OwoJY3Vyc29yOiBwb2ludGVyOwp9Ci8qID09PT09PT09PT09PT09PT09PT09ICogRGF0ZVBpY2tlciBTdHlsZXMgKiA9PT09PT09PT09PT09PT09PT09PSAqLwoKLyogUlRMIENzcyBjaGFuZ2Ugc3RhcnQgKi8KW2Rpcj1ydGxdIHsKLm11bHRpcGxlLWZpZWxkcy1kaXZ7Cgkud2YtZmllbGQtaXRlbTpub3QoLnNlbGVjdGVkLW9wdGlvbnMpIHsKCQlib3JkZXItcmFkaXVzOiA0cHggMHB4IDBweCA0cHg7Cgl9Cgkud2YtZmllbGQtZHJvcGRvd24gewoJCWJvcmRlci1yYWRpdXM6IDBweCA0cHggNHB4IDBweDsKCQlib3JkZXItbGVmdDogMDsKCQlib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjQkRDOEQzOwoJfQp9Ci51eC1waWNrLW1peGVkIHsKCS5kcm9wZG93bi1tZW51IHsKCQlyaWdodDogLTFweDsKCX0KfQoud2YtZm9ybS1jb21wb25lbnRbZGF0YS11eC1mb3JtLWFsaWdubWVudD0nbGVmdCddIC53Zi1sYWJlbCB7CglwYWRkaW5nLWxlZnQ6IDJyZW07CglwYWRkaW5nLXJpZ2h0OiAwOwp9Ci53Zi10aW1lLWZpZWxkLXdyYXBwZXIgc2VsZWN0IHsKCW1hcmdpbi1sZWZ0OiAwcHg7CgltYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KLndmLWNhbGVuZGFyLW5hdi1pY29ucy5uYXYtaWNvbi13aXRoLXNwYWNlIHsKCW1hcmdpbi1sZWZ0OiAxMHB4Owp9Ci53Zi1mb3JtLWNvbXBvbmVudCAud2YtZmllbGQtaGVscC10ZXh0IHsKCXRleHQtYWxpZ246IHJpZ2h0Owp9Cn0KLyogUlRMIENzcyBjaGFuZ2UgZW5kICovLyogPT09PT09PT09PT09PT09PT09PT0gKioqIEZvcm0gQWxpZ25tZW50ICoqKiA9PT09PT09PT09PT09PT09PT09PSAqLwoud2YtZm9ybS1jb21wb25lbnQ6bm90KFtkYXRhLXV4LWZvcm0tYWxpZ25tZW50PSd0b3AnXSkgLndmLXJvdyB7CglkaXNwbGF5OiBmbGV4Owp9Ci53Zi1mb3JtLWNvbXBvbmVudDpub3QoW2RhdGEtdXgtZm9ybS1hbGlnbm1lbnQ9J3RvcCddKSAud2YtbGFiZWwgewoJd29yZC1icmVhazogYnJlYWstd29yZDsKCXdpZHRoOiAzMCU7CglwYWRkaW5nOiAxLjJyZW0gMnJlbSAwOwp9Ci53Zi1mb3JtLWNvbXBvbmVudFtkYXRhLXV4LWZvcm0tYWxpZ25tZW50PSdsZWZ0J10gLndmLWxhYmVsIHsKCXRleHQtYWxpZ246IGxlZnQ7CglwYWRkaW5nLWxlZnQ6IDA7Cn0KLndmLWZvcm0tY29tcG9uZW50W2RhdGEtdXgtZm9ybS1hbGlnbm1lbnQ9J3JpZ2h0J10gLndmLWxhYmVsIHsKCXRleHQtYWxpZ246IHJpZ2h0Owp9Ci53Zi1mb3JtLWNvbXBvbmVudFtkYXRhLXV4LWZvcm0tYWxpZ25tZW50PSdjZW50ZXInXSAud2YtbGFiZWwgewoJdGV4dC1hbGlnbjogY2VudGVyOwp9Ci53Zm9ybS1idG4td3JhcFtkYXRhLXV4LXBvcz0nbGVmdCddIHsKCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQoud2Zvcm0tYnRuLXdyYXBbZGF0YS11eC1wb3M9J2NlbnRlciddIHsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci53Zm9ybS1idG4td3JhcFtkYXRhLXV4LXBvcz0ncmlnaHQnXSB7CglqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwp9Ci53Zi1mb3JtLWNvbXBvbmVudDpub3QoW2RhdGEtdXgtZm9ybS1hbGlnbm1lbnQ9J3RvcCddKSAud2YtZmllbGQgewoJd2lkdGg6IDcwJTsKfQoud2YtZm9ybS1jb21wb25lbnRbZGF0YS11eC1mb3JtLWFsaWdubWVudD0ndG9wJ10gLndmLWxhYmVsewoJcGFkZGluZy10b3A6MDsKfQoud2YtZm9ybS1jb21wb25lbnRbZGF0YS11eC1mb3JtLWFsaWdubWVudD0ndG9wJ10gLnJlbG9hZC1jYXB0Y2hhewoJdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2NhcHRjaGEnXSAud2YtZmllbGQtaW5uZXJ7CgloZWlnaHQ6IDM4cHg7Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2NhcHRjaGEnXSAud2YtZmllbGQud2YtZmllbGQtZXJyb3ItYWN0aXZlewoJZmxleC13cmFwOiB3cmFwOwp9Ci53Zi1yb3dbZGF0YS11eC1maWVsZC1hcHBlYXJhbmNlPSdjYXB0Y2hhJ10gLndmLWZpZWxkLWVycm9yewoJZmxleC1iYXNpczogMTAwJTsKCXdpZHRoOjEwMCU7CgltYXJnaW4taW5saW5lLXN0YXJ0OiA1cHg7Cn0KLyogPT09PT09PT09PT09PT09PT09PT0gKioqIEZvcm0gQWxpZ25tZW50IGVuZHMgKioqID09PT09PT09PT09PT09PT09PT09ICovCgovKiA9PT09PT09PT09PT09PT09PT09PSAqKiogY3NzIGFuaW1hdGlvbnMgKioqID09PT09PT09PT09PT09PT09PT09ICovCkBrZXlmcmFtZXMgc2hha2UgewoJMTAlLDkwJSB7dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMXB4LCAwLCAwKTt9CgkyMCUsODAlIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDJweCwgMCwgMCk7fQoJMzAlLDUwJSw3MCUge3RyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTRweCwgMCwgMCk7fQoJNDAlLDYwJSB7dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg0cHgsIDAsIDApO30KfQovKiA9PT09PT09PT09PT09PT09PT09PSAqKiogY3NzIGFuaW1hdGlvbnMgZW5kcyAqKiogPT09PT09PT09PT09PT09PT09PT0gKi8KCi8qID09PT09PT09PT09PT09PT09PT09ICoqKiBNZWRpYXF1ZXJ5ICoqKiA9PT09PT09PT09PT09PT09PT09PSAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHsKCS53Zi13cmFwcGVyIHsKCW1heC13aWR0aDogNzAwcHg7Cgl3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7Cglib3JkZXI6IDA7Cn0KCS53Zi1maWVsZCBpbnB1dFt0eXBlPXRleHRdLAoJLndmLWZpZWxkIHNlbGVjdCwKCS53Zi1maWVsZCB0ZXh0YXJlYSB7CgkJd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKCX0KCS53Zi1sYWJlbDplbXB0eSB7CgkJZGlzcGxheTogbm9uZTsKCX0KLndmLWZpZWxkLWNoZWNrYm94IHsKCW1pbi13aWR0aDogMThweDsKCW1pbi1oZWlnaHQ6IDE4cHg7Cn0KfQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkgewoJLndmLXdyYXBwZXIgewoJbWF4LXdpZHRoOiA3MDBweDsKCXdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKCWJvcmRlcjogMDsKfQoud2YtZmllbGQgaW5wdXRbdHlwZT10ZXh0XSwKCS53Zi1maWVsZCBzZWxlY3QsCgkud2YtZmllbGQgdGV4dGFyZWEgewoJd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKCX0KLndmLWxhYmVsOmVtcHR5IHsKCWRpc3BsYXk6IG5vbmU7Cgl9Ci53Zi1mb3JtLWNvbXBvbmVudFtkYXRhLXV4LWZvcm0tYWxpZ25tZW50PSd0b3AnXSAud2Zvcm0tYnRuLXdyYXAgewoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkwcHgpIHsKLndmLXBhcmVudCB7CglwYWRkaW5nOiAyMHB4IDA7Cn0KLndmLXdyYXBwZXIgewoJd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpICFJbXBvcnRhbnQ7Cglib3JkZXI6IDA7Cn0KLndmLWZvcm0tY29tcG9uZW50IHsKCXBhZGRpbmc6IDIwcHg7CglwYWRkaW5nLWJvdHRvbTo2MHB4Owp9Ci53Zi1maWVsZCBpbnB1dFt0eXBlPXRleHRdLAoud2YtZmllbGQgc2VsZWN0LAoud2YtZmllbGQgdGV4dGFyZWEgewoJd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoud2YtbGFiZWw6ZW1wdHkgewoJZGlzcGxheTogbm9uZTsKfQoud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nZGF0ZS10aW1lJ10gLndmLWZpZWxkLWlubmVyewoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nZGF0ZS10aW1lJ10gLndmLXRpbWUtZmllbGQtd3JhcHBlcnsKCW1hcmdpbi10b3A6IDEwcHg7Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2RhdGUtdGltZSddIC53Zi1maWVsZC1pdGVtOmZpcnN0LWNoaWxkewoJbWFyZ2luLWxlZnQ6IDA7Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2RhdGUtdGltZSddIC53Zi1maWVsZC1pdGVtewoJZmxleDogMTsKfQoud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nY2FwdGNoYSddIC53Zi1maWVsZHsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2NhcHRjaGEnXSAucmVsb2FkLWNhcHRjaGF7CgltYXJnaW4tbGVmdDogYXV0bzsKfQoud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nY2FwdGNoYSddIC53Zi1maWVsZC1pbm5lcnsKCXdpZHRoOiAxMDAlOwp9Cn0KLyogPT09PT09PT09PT09PT09PT09PT0gKioqIE1lZGlhcXVlcnkgZW5kcyAqKiogPT09PT09PT09PT09PT09PT09PT0gKi8KPC9zdHlsZT4KPGlmcmFtZSBpZD0naGlkZGVuNzM2NTI1MzAwMDAwMDY0MTE0NkZyYW1lJyBuYW1lPSdoaWRkZW43MzY1MjUzMDAwMDAwNjQxMTQ2RnJhbWUnIHN0eWxlPSdkaXNwbGF5OiBub25lOycgY2xhc3M9J2lmcmFtZS1jb250YWluZXInPjwvaWZyYW1lPgo8ZGl2IGNsYXNzPSd3Zi1wYXJlbnQnICBpZD0nQmlnaW5XZWJUb1JlY29yZEZvcm1QYXJlbnQ3MzY1MjUzMDAwMDAwNjQxMTQ2JyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogJiN4MjM7RUFFRUYyJz4KCTxkaXYgY2xhc3M9J3dmLXdyYXBwZXInIGlkPSdCaWdpbldlYlRvUmVjb3JkRm9ybURpdjczNjUyNTMwMDAwMDA2NDExNDYnPgoJPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAnPgoJPE1FVEEgSFRUUC1FUVVJVj0nY29udGVudC10eXBlJyBDT05URU5UPSd0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCc+Cgk8Zm9ybSBpZD0nQmlnaW5XZWJUb1JlY29yZEZvcm03MzY1MjUzMDAwMDAwNjQxMTQ2JyBuYW1lPSdCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnIGNsYXNzPSd3Zi1mb3JtLWNvbXBvbmVudCcgZGF0YS11eC1mb3JtLWFsaWdubWVudD0ndG9wJyBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsO3Bvc2l0aW9uOiByZWxhdGl2ZTtmb250LXNpemU6MTVweDsnIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YScgdGFyZ2V0PSdoaWRkZW43MzY1MjUzMDAwMDAwNjQxMTQ2RnJhbWUnIG9uU3VibWl0PSdqYXZhc2NyaXB0OmRvY3VtZW50LmNoYXJzZXQ9IlVURi04IjsgcmV0dXJuIHZhbGlkYXRlRm9ybTczNjUyNTMwMDAwMDA2NDExNDYoKScgYWNjZXB0LWNoYXJzZXQ9J1VURi04Jz4KPCEtLSBEbyBub3QgcmVtb3ZlIHRoaXMgY29kZS4gLS0+CiAJPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSd4blFzanNkcCcgdmFsdWU9JzdmNDdkZDJkNzU3ZjU4NWJlYzA1OTM0M2Q4ZTcwNWNjOGZiOWVhNDM0NjVkMjY4Y2IzNGM5MTM3ZTNiNDk4ZmQnLz4KIAk8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd6Y19nYWQnIGlkPSd6Y19nYWQnIHZhbHVlPScnLz4KIAk8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J3htSXd0TEQnIHZhbHVlPSdiMDU2OGQ3NWI3MzBlZDU3NGVkYWYwZjE3MDhkYjIwZWMxMDYxYzA4MmI5NTAyMjU1ZGU3M2I0ZDk3NTNhYjBmNzQ0ZGVlYTg2NjFkYzhhMzI4MGYxN2NlM2I5MzdkY2MnLz4KIAk8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J2FjdGlvblR5cGUnIHZhbHVlPSdRMjl1ZEdGamRITT0nLz4KIAk8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdybXNnJyBpZD0ncm1zZycgdmFsdWU9J3RydWUnLz4KIAk8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J3JldHVyblVSTCcgdmFsdWU9J251bGwnIC8+CiAJPGRpdiBjbGFzcz0nd2YtaGVhZGVyJz5DdXN0b20gSmV3ZWxsZXJ5IEZvcm08L2Rpdj4KIAk8ZGl2IGlkPSdlbGVtZW50RGl2NzM2NTI1MzAwMDAwMDY0MTE0NicgY2xhc3M9J3dmLWZvcm0td3JhcHBlcic+CiAJIAk8ZGl2IGNsYXNzPSd3Zi1yb3cnPiAgCiAJIAkgCTxkaXYgY2xhc3M9J3dmLWxhYmVsJz5GaXJzdCBOYW1lPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkJz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lcic+CiAJIAkgCSAJPGlucHV0IG5hbWU9J0ZpcnN0IE5hbWUnIG1heGxlbmd0aD0nNDAnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+TGFzdCBOYW1lPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkIHdmLWZpZWxkLW1hbmRhdG9yeSc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXInPgogCSAJIAkgCTxpbnB1dCBuYW1lPSdMYXN0IE5hbWUnIG1heGxlbmd0aD0nODAnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+RW1haWw8L2Rpdj4KIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQgd2YtZmllbGQtbWFuZGF0b3J5Jz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lcic+CiAJIAkgCSAJPGlucHV0IGZ2YWxpZGF0ZT0ndHJ1ZScgZnR5cGU9J2VtYWlsJyBuYW1lPSdFbWFpbCcgbWF4bGVuZ3RoPScxMDAnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+UGhvbmUgTnVtYmVyPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkIHV4LXBpY2stbWl4ZWQgbXVsdGlwbGUtZmllbGRzLWRpdiBmbGV4LTEtNSc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXInPgogCSAJIAkgCTxkaXYgaWQ9J3BoQ09OVEFDVENGMTInIGNsYXNzPSdtdWx0aXNlbGVjdCB3Zi1maWVsZC1kcm9wZG93biBmaWVsZC0xIGRyb3Bkb3duLXdpdGgtc2VhcmNoIGljb24td2l0aC10ZXh0LWRyb3Bkb3duIHNpbmdsZS1zZWxlY3QtZHJwJyBvbmNsaWNrPSdyZW1vdmVFcnJvcih0aGlzKTsgc2hvd0Ryb3BEb3duNzM2NTI1MzAwMDAwMDY0MTE0Nih0aGlzKScgaXNQaG9uZT0ndHJ1ZScgZmluZElQPSd0cnVlJyA+CiAJIAkgCSAJIAk8ZGl2IGNsYXNzPSdzZWxlY3RlZC1vcHRpb25zIGhpZGUtb3B0LWxpc3Qgd2YtZmllbGQtaXRlbSBzZWxlY3RlZC1vcHRpb25zLWZpZWxkJyBzdHlsZT0nZGlzcGxheTpub25lOyc+PC9kaXY+CiAJIAkgCSAJIAk8ZGl2IGNsYXNzPSdkcm9wZG93biBmbGV4LWNlbnRlci12IGRyb3Bkb3duLWNvbnRlbnRzJz4KIAkgCSAJIAkgCSAJPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdkcm9wZG93bi1pbnB1dCBpbnB1dC1ub3QtYWN0aXZlIHdmLWZpZWxkLWl0ZW0gd2YtZmllbGQtaW5wdXQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyAvPgogCSAJIAkgCSAJIAk8c3BhbiBjbGFzcz0nbVIxMCBmMjIgY29udGVudC1kaXNwbGF5LWFyZWEnPjwvc3Bhbj4KIAkgCSAJIAkgCSAJPHVsIGNsYXNzPSdkcm9wZG93bi1tZW51Jz48L3VsPgogCSAJIAkgCSAJPC9kaXY+CiAJIAkgCSAJPC9kaXY+CiAJIAkgCSAJPGRpdiBjbGFzcz0nZmllbGQtMic+CiAJIAkgCSAJIAk8ZGl2IGNsYXNzPScnPgogCSAJIAkgCSAJPGlucHV0IG1heGxlbmd0aD0nMTUnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCSAJPGlucHV0IGZ0eXBlPSdkaWFsY29kZScgbmFtZT0nQ09OVEFDVENGMTInIG1heGxlbmd0aD0nMTUnIHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JwlyZXN0X2FscGhhPSd0cnVlJy8+CiAJIAkgCSAJIAk8L2Rpdj4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJPC9kaXY+CiAJIAk8L2Rpdj4KIAkgCTxkaXYgY2xhc3M9J3dmLXJvdyc+ICAKIAkgCSAJPGRpdiBjbGFzcz0nd2YtbGFiZWwnPkpld2VsbGVyeSBUeXBlPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkIHdmLWZpZWxkLW1hbmRhdG9yeSc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXIgZHJvcGRvd24tY29udGVudHMnPgogCSAJIAkgCTxzZWxlY3QgbmFtZT0nQ09OVEFDVENGMycgY2xhc3M9J3dmLWZpZWxkLWl0ZW0gd2YtZmllbGQtZHJvcGRvd24nIGRhdGEtd2Zvcm0tZmllbGQ9J3NlbGVjdCcgb25jaGFuZ2U9J3JlbW92ZUVycm9yKHRoaXMpOyc+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSctTm9uZS0nPi1Ob25lLTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nRW5nYWdlbWVudCYjeDIwO1JpbmcnPkVuZ2FnZW1lbnQgUmluZzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nV2VkZGluZyYjeDIwO0JhbmQnPldlZGRpbmcgQmFuZDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nUmluZyc+UmluZzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nTmVja2xhY2UnPk5lY2tsYWNlPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdFYXJyaW5ncyc+RWFycmluZ3M8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J0hlaXJsb29tJiN4MjA7UmVkZXNpZ24nPkhlaXJsb29tIFJlZGVzaWduPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdFbmdyYXZpbmcmI3gyMDsmI3gyZjsmI3gyMDtDdXN0b21pemF0aW9uJz5FbmdyYXZpbmcgJiN4MmY7IEN1c3RvbWl6YXRpb248L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J090aGVyJz5PdGhlcjwvb3B0aW9uPgogCSAJIAkgCTwvc2VsZWN0PgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+QnVkZ2V0IFJhbmdlPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkIHdmLWZpZWxkLW1hbmRhdG9yeSc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXIgZHJvcGRvd24tY29udGVudHMnPgogCSAJIAkgCTxzZWxlY3QgbmFtZT0nQ09OVEFDVENGMicgY2xhc3M9J3dmLWZpZWxkLWl0ZW0gd2YtZmllbGQtZHJvcGRvd24nIGRhdGEtd2Zvcm0tZmllbGQ9J3NlbGVjdCcgb25jaGFuZ2U9J3JlbW92ZUVycm9yKHRoaXMpOyc+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSctTm9uZS0nPi1Ob25lLTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nRmxleGlibGUmI3gyMDsmI3gyZjsmI3gyMDtOb3QmI3gyMDtTdXJlJz5GbGV4aWJsZSAmI3gyZjsgTm90IFN1cmU8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzEuNWsmbmRhc2g7Mi41ayc+MS41ayZuZGFzaDsyLjVrPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScyLjVrJm5kYXNoOzVrJz4yLjVrJm5kYXNoOzVrPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc1ayZuZGFzaDs3LjVrJz41ayZuZGFzaDs3LjVrPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc3LjVrJm5kYXNoOzEwayc+Ny41ayZuZGFzaDsxMGs8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzEwayZuZGFzaDsxNWsnPjEwayZuZGFzaDsxNWs8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzE1ayZuZGFzaDsyMGsnPjE1ayZuZGFzaDsyMGs8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzIwayYjeDJiOyc+MjBrJiN4MmI7PC9vcHRpb24+CiAJIAkgCSAJPC9zZWxlY3Q+CiAJIAkgCSAJPC9kaXY+CiAJIAkgCTwvZGl2PgogCSAJPC9kaXY+CiAJIAk8ZGl2IGNsYXNzPSd3Zi1yb3cnIGRhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nZGF0ZS10aW1lJz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+UmVxdWlyZWQgQnk8L2Rpdj4KIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQgd2YtZmllbGQtbWFuZGF0b3J5Jz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lcic+CiAJIAkgCSAJPGlucHV0IGZ2YWxpZGF0ZT0nZGF0ZScgZnR5cGU9J2RhdGV0aW1lJyB0eXBlPSd0ZXh0JyBuYW1lPSdDT05UQUNUQ0Y1MScgc3R5bGU9J2Rpc3BsYXk6IG5vbmU7Jy8+CiAJIAkgCSAJIAk8ZGl2IGNsYXNzPSdkYXRlLWlucHV0LWNvbnRhaW5lcicgZGF0YS1mb3JtYXQ9J01NL2RkL3l5eXknIGRhdGEtcmVzdHJpY3RUeXBlPSdwYXN0JyA+CiAJIAkgCSAJIAkgCTxzcGFuIGNsYXNzPSd3Zi1kYXRlLWNvbnRhaW5lcnMnPgogCSAJIAkgCSAJIAk8aW5wdXQgdHlwZT0ndGV4dCcgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0IHdmLWZpZWxkLWl0ZW0tZGF0ZSBjdXN0b20tZGF0ZS1jb252ZXJ0ZWQtZmllbGQnIG9uaW5wdXQ9J3JlbW92ZUVycm9yKHRoaXMpJyAvPgogCSAJIAkgCSAJIAk8c3BhbiBjbGFzcz0nc2VwYXJhdG9yJz4tPC9zcGFuPgogCSAJIAkgCSAJIAk8aW5wdXQgdHlwZT0ndGV4dCcgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0IHdmLWZpZWxkLWl0ZW0tZGF0ZSBjdXN0b20tZGF0ZS1jb252ZXJ0ZWQtZmllbGQnIG9uaW5wdXQ9J3JlbW92ZUVycm9yKHRoaXMpJyAvPgogCSAJIAkgCSAJIAk8c3BhbiBjbGFzcz0nc2VwYXJhdG9yJz4tPC9zcGFuPgogCSAJIAkgCSAJIAk8aW5wdXQgdHlwZT0ndGV4dCcgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0IHdmLWZpZWxkLWl0ZW0tZGF0ZSBjdXN0b20tZGF0ZS1jb252ZXJ0ZWQtZmllbGQnIG9uaW5wdXQ9J3JlbW92ZUVycm9yKHRoaXMpJyAvPgogCSAJIAkgCSAJPC9zcGFuPgogCSAJIAkgCSAJPHNwYW4gY2xhc3M9J2NhbGVuZGFyLWljb24nID48aW1nIHNyYz0naHR0cHM6Ly9iaWdpbi56b2hvLmNvbS9pbWFnZXMvY2FsZW5kYXIuc3ZnJyBzdHlsZT0nbWFyZ2luLWlubGluZS1lbmQ6IDVweDsnLz48L3NwYW4+CiAJIAkgCSAJIAk8L2Rpdj4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi10aW1lLWZpZWxkLXdyYXBwZXInPiAKIAkgCSAJIAk8c2VsZWN0IG5hbWU9J0NPTlRBQ1RDRjUxaG91cicgY2xhc3M9J3dmLWZpZWxkLWl0ZW0gd2YtZmllbGQtZHJvcGRvd24tZGF0ZScgZGF0YS13Zm9ybS1maWVsZD0nc2VsZWN0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKSc+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwMSc+MDE8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzAyJz4wMjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDMnPjAzPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwNCc+MDQ8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzA1Jz4wNTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDYnPjA2PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwNyc+MDc8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzA4Jz4wODwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDknPjA5PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScxMCc+MTA8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzExJz4xMTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMTInPjEyPC9vcHRpb24+CiAJIAkgCSAJPC9zZWxlY3Q+CiAJIAkgCSAJPHNlbGVjdCBuYW1lPSdDT05UQUNUQ0Y1MW1pbnV0ZScgY2xhc3M9J3dmLWZpZWxkLWl0ZW0gd2YtZmllbGQtZHJvcGRvd24tZGF0ZScgZGF0YS13Zm9ybS1maWVsZD0nc2VsZWN0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKSc+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwMCc+MDA8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzAxJz4wMTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDInPjAyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwMyc+MDM8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzA0Jz4wNDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDUnPjA1PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwNic+MDY8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzA3Jz4wNzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDgnPjA4PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwOSc+MDk8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzEwJz4xMDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMTEnPjExPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScxMic+MTI8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzEzJz4xMzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMTQnPjE0PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScxNSc+MTU8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzE2Jz4xNjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMTcnPjE3PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScxOCc+MTg8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzE5Jz4xOTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMjAnPjIwPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScyMSc+MjE8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzIyJz4yMjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMjMnPjIzPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScyNCc+MjQ8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzI1Jz4yNTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMjYnPjI2PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScyNyc+Mjc8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzI4Jz4yODwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMjknPjI5PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSczMCc+MzA8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzMxJz4zMTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMzInPjMyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSczMyc+MzM8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzM0Jz4zNDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMzUnPjM1PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSczNic+MzY8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzM3Jz4zNzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMzgnPjM4PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSczOSc+Mzk8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzQwJz40MDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNDEnPjQxPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc0Mic+NDI8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzQzJz40Mzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNDQnPjQ0PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc0NSc+NDU8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzQ2Jz40Njwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNDcnPjQ3PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc0OCc+NDg8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzQ5Jz40OTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNTAnPjUwPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc1MSc+NTE8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzUyJz41Mjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNTMnPjUzPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc1NCc+NTQ8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzU1Jz41NTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNTYnPjU2PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc1Nyc+NTc8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzU4Jz41ODwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNTknPjU5PC9vcHRpb24+CiAJIAkgCSAJPC9zZWxlY3Q+CiAJIAkgCSAJPHNlbGVjdCBuYW1lPSdDT05UQUNUQ0Y1MWFtcG0nIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWRyb3Bkb3duLWRhdGUnIGRhdGEtd2Zvcm0tZmllbGQ9J3NlbGVjdCcgb25pbnB1dD0ncmVtb3ZlRXJyb3IodGhpcyknPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nQU0nPkFNPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdQTSc+UE08L29wdGlvbj4KIAkgCSAJIAk8L3NlbGVjdD4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJPC9kaXY+CiAJIAk8L2Rpdj4KIAkgCTxkaXYgY2xhc3M9J3dmLXJvdyc+ICAKIAkgCSAJPGRpdiBjbGFzcz0nd2YtbGFiZWwnPkRlc2NyaXB0aW9uPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkJz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lcic+CiAJIAkgCSAJPHRleHRhcmVhIG5hbWU9J0Rlc2NyaXB0aW9uJyBtYXhsZW5ndGg9JzMyMDAwJyB0eXBlPSd0ZXh0JyBjbGFzcz0nd2YtZmllbGQtaXRlbSB3Zi1maWVsZC1pbnB1dCB3Zi10ZXh0LWFyZWEtaW5wdXQnIG9uaW5wdXQ9J3JlbW92ZUVycm9yKHRoaXMpJz48L3RleHRhcmVhPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+SW5zcGlyYXRpb24gSW1hZ2UgTGluazwvZGl2PgogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZCc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXInPgogCSAJIAkgCTxpbnB1dCBuYW1lPSdDT05UQUNUQ0YxMScgbWF4bGVuZ3RoPScyNTUnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93JyBzdHlsZT0nZGlzcGxheTpub25lOyc7PiAgCiAJIAkgCTxkaXYgY2xhc3M9J3dmLWxhYmVsJz5Db250YWN0IFR5cGU8L2Rpdj4KIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQnPgogCSAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkLWlubmVyIGRyb3Bkb3duLWNvbnRlbnRzJz4KIAkgCSAJIAk8c2VsZWN0IG5hbWU9J0NPTlRBQ1RDRjEnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWRyb3Bkb3duJyBkYXRhLXdmb3JtLWZpZWxkPSdzZWxlY3QnIG9uY2hhbmdlPSdyZW1vdmVFcnJvcih0aGlzKTsnPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nLU5vbmUtJz4tTm9uZS08L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9J0N1c3RvbSYjeDIwO0xlYWQnPkN1c3RvbSBMZWFkPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdEVEMmI3gyMDtDdXN0b21lcic+RFRDIEN1c3RvbWVyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdSZXRhaWxlciYjeDIwOyYjeDJmOyYjeDIwO1N0b2NraXN0Jz5SZXRhaWxlciAmI3gyZjsgU3RvY2tpc3Q8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J1BhcnRuZXImI3gyMDsmI3gyZjsmI3gyMDtDb2xsYWJvcmF0b3InPlBhcnRuZXIgJiN4MmY7IENvbGxhYm9yYXRvcjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nTWVkaWEmI3gyMDsmI3gyZjsmI3gyMDtJbmZsdWVuY2VyJz5NZWRpYSAmI3gyZjsgSW5mbHVlbmNlcjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nR2VuZXJhbCYjeDIwO0NvbnRhY3QnPkdlbmVyYWwgQ29udGFjdDwvb3B0aW9uPgogCSAJIAkgCTwvc2VsZWN0PgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93JyBzdHlsZT0nZGlzcGxheTpub25lOyc7PiAgCiAJIAkgCTxkaXYgY2xhc3M9J3dmLWxhYmVsJz5MZWFkIFNvdXJjZTwvZGl2PgogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZCc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXIgZHJvcGRvd24tY29udGVudHMnPgogCSAJIAkgCTxzZWxlY3QgbmFtZT0nTGVhZCBTb3VyY2UnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWRyb3Bkb3duJyBkYXRhLXdmb3JtLWZpZWxkPSdzZWxlY3QnIG9uY2hhbmdlPSdyZW1vdmVFcnJvcih0aGlzKTsnPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nLU5vbmUtJz4tTm9uZS08L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9J1dlYnNpdGUmI3gyMDtDdXN0b20mI3gyMDtGb3JtJz5XZWJzaXRlIEN1c3RvbSBGb3JtPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdXZWJzaXRlJiN4MjA7Q29udGFjdCc+V2Vic2l0ZSBDb250YWN0PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdTaG9waWZ5Jz5TaG9waWZ5PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdFbWFpbCc+RW1haWw8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J0luc3RhZ3JhbSc+SW5zdGFncmFtPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdSZWZlcnJhbCc+UmVmZXJyYWw8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J1RyYWRlJiN4MjA7U2hvdyYjeDIwOyYjeDJmOyYjeDIwO0V2ZW50Jz5UcmFkZSBTaG93ICYjeDJmOyBFdmVudDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nTWFudWFsJiN4MjA7SW1wb3J0Jz5NYW51YWwgSW1wb3J0PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdPdGhlcic+T3RoZXI8L29wdGlvbj4KIAkgCSAJIAk8L3NlbGVjdD4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJPC9kaXY+CiAJIAk8L2Rpdj4KIAkgCTxkaXYgY2xhc3M9J3dmLXJvdycgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnOz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+TGVhZCBTb3VyY2UgRGV0YWlsPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkJz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lciBkcm9wZG93bi1jb250ZW50cyc+CiAJIAkgCSAJPHNlbGVjdCBuYW1lPSdDT05UQUNUQ0Y1JyBjbGFzcz0nd2YtZmllbGQtaXRlbSB3Zi1maWVsZC1kcm9wZG93bicgZGF0YS13Zm9ybS1maWVsZD0nc2VsZWN0JyBvbmNoYW5nZT0ncmVtb3ZlRXJyb3IodGhpcyk7Jz4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9Jy1Ob25lLSc+LU5vbmUtPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHNlbGVjdGVkIHZhbHVlPSdDdXN0b20mI3gyMDtGb3JtJz5DdXN0b20gRm9ybTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nQ29udGFjdCYjeDIwO0Zvcm0nPkNvbnRhY3QgRm9ybTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nTmV3c2xldHRlcic+TmV3c2xldHRlcjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nUmV0YWlsJiN4MjA7SW5xdWlyeSc+UmV0YWlsIElucXVpcnk8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J0VtYWlsJz5FbWFpbDwvb3B0aW9uPgogCSAJIAkgCTwvc2VsZWN0PgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93JyBzdHlsZT0nZGlzcGxheTpub25lOyc7PiAgCiAJIAkgCTxkaXYgY2xhc3M9J3dmLWxhYmVsJz5MaWZlY3ljbGUgU3RhZ2U8L2Rpdj4KIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQnPgogCSAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkLWlubmVyIGRyb3Bkb3duLWNvbnRlbnRzJz4KIAkgCSAJIAk8c2VsZWN0IG5hbWU9J0NPTlRBQ1RDRjQnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWRyb3Bkb3duJyBkYXRhLXdmb3JtLWZpZWxkPSdzZWxlY3QnIG9uY2hhbmdlPSdyZW1vdmVFcnJvcih0aGlzKTsnPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nLU5vbmUtJz4tTm9uZS08L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9J05ldyc+TmV3PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdBY3RpdmUnPkFjdGl2ZTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nQ3VzdG9tZXInPkN1c3RvbWVyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdOdXJ0dXJlJz5OdXJ0dXJlPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdQYXJ0bmVyJz5QYXJ0bmVyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdJbmFjdGl2ZSc+SW5hY3RpdmU8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J0Rpc3F1YWxpZmllZCc+RGlzcXVhbGlmaWVkPC9vcHRpb24+CiAJIAkgCSAJPC9zZWxlY3Q+CiAJIAkgCSAJPC9kaXY+CiAJIAkgCTwvZGl2PgogCSAJPC9kaXY+CiAJIAk8ZGl2IGNsYXNzPSd3Zm9ybS1idG4td3JhcCcgZGF0YS11eC1wb3M9J2NlbnRlcic+CiAJIAkgCTxpbnB1dCBpZD0nZm9ybXN1Ym1pdCcgdHlwZT0nc3VibWl0JyBjbGFzcz0nd2YtYnRuJyBkYXRhLXV4LWJ0bi10eXBlPSdzZWNvbmRhcnknIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiYjeDIzOzE5ODBkODsgY29sb3I6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICYjeDIzOzE5ODBkODt3aWR0aDogYXV0bzsnIHZhbHVlPSdTdWJtaXQnLz4KIAkgCTwvZGl2PgoJPC9kaXY+CgkJPGRpdiBjbGFzcz0nZHVtbXktZGl2Jz48L2Rpdj4KCTxkaXYgaWQ9J3dmLWNhbGVuZGVyLXBvcHVwJyBjbGFzcz0nd2YtY2FsZW5kYXItcG9wdXAtd3JhcHBlcic+CgkJPGRpdiBjbGFzcz0nd2YtY2FsZW5kYXItaGVhZGVyJz4KCQkJPHNwYW4gY2xhc3M9J2ZsZXgtY2VudGVyLXYnPgoJCQk8YnV0dG9uIGlkPSd3Zi1jYWxlbmRhci1wcmV2WWVhci1pY29uJyBjbGFzcz0nd2YtY2FsZW5kYXItbmF2LWljb25zIG5hdi1pY29uLXdpdGgtc3BhY2UnIHR5cGU9J2J1dHRvbic+JiMxNzE7PC9idXR0b24+CgkJCTxidXR0b24gaWQ9J3dmLWNhbGVuZGFyLXByZXZNb250aC1pY29uJyBjbGFzcz0nd2YtY2FsZW5kYXItbmF2LWljb25zJyB0eXBlPSdidXR0b24nPiYjODI0OTs8L2J1dHRvbj4KCQk8L3NwYW4+CgkJPHNwYW4gaWQ9J3dmLWNhbGVuZGFyLW1vbnRoWWVhcicgY2xhc3M9J3dmLWNhbGVuZGFyLW1vbnRoLXllYXInPjwvc3Bhbj4KCQk8c3BhbiBjbGFzcz0nZmxleC1jZW50ZXItdic+CgkJCTxidXR0b24gaWQ9J3dmLWNhbGVuZGFyLW5leHRNb250aC1pY29uJyBjbGFzcz0nd2YtY2FsZW5kYXItbmF2LWljb25zIG5hdi1pY29uLXdpdGgtc3BhY2UnIHR5cGU9J2J1dHRvbic+JiM4MjUwOzwvYnV0dG9uPgoJCQk8YnV0dG9uIGlkPSd3Zi1jYWxlbmRhci1uZXh0WWVhci1pY29uJyBjbGFzcz0nd2YtY2FsZW5kYXItbmF2LWljb25zJyB0eXBlPSdidXR0b24nPiYjMTg3OzwvYnV0dG9uPgoJCTwvc3Bhbj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSd3Zi1jYWxlbmRhci1ncmlkLWNvbnRhaW5lcic+CgkJCTxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PgoJCTwvZGl2PgoJCTxkaXYgaWQ9J3dmLWNhbGVuZGFyLWJvZHknIGNsYXNzPSd3Zi1jYWxlbmRhci1ib2R5LXdyYXBwZXInPjwvZGl2PgoJCTxkaXYgaWQ9J3dmLWNhbGVuZGFyLXRvZGF5LWJ0bicgY2xhc3M9J3dmLWNhbGVuZGFyLXRvZGF5LWJ1dHRvbic+VG9kYXk8L2Rpdj4KCTwvZGl2PgoJPC9mb3JtPgoJPC9kaXY+CjwvZGl2Pgo8c2NyaXB0PgogCSAgdmFyIG1uZEZpZWxkczczNjUyNTMwMDAwMDA2NDExNDY9bmV3IEFycmF5KCdMYXN0XHgyME5hbWUnLCdFbWFpbCcsJ0NPTlRBQ1RDRjMnLCdDT05UQUNUQ0YyJywnQ09OVEFDVENGNTEnKTsKIAkgIHZhciBmbGRMYW5nVmFsNzM2NTI1MzAwMDAwMDY0MTE0Nj1uZXcgQXJyYXkoJ0xhc3QgTmFtZScsJ0VtYWlsJywnSmV3ZWxsZXJ5IFR5cGUnLCdCdWRnZXQgUmFuZ2UnLCdSZXF1aXJlZCBCeScpOwogCSB2YXIgd2ZJbm5lcldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7CiAJIGlmKHdmSW5uZXJXaWR0aCA8PSA3NjgpewogCSAJIGRvY3VtZW50LmZvcm1zWydCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtdXgtZm9ybS1hbGlnbm1lbnQnLCAndG9wJyk7CiAJIH0KIAlmdW5jdGlvbiByZW1vdmVFcnJvcihmaWVsZE9iaikgewogCSAJdmFyIHBhcmVudEVsZW1lbnQgPSBmaWVsZE9iai5jbG9zZXN0KCcud2YtZmllbGQnKSwKIAkgCSAJY2hpbGRFbGUgPSBwYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWVycm9yLXBhcmVudC1lbGUnKVswXTsKIAkgCWlmKGNoaWxkRWxlKSB7CiAJIAkgCXBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnd2YtZmllbGQtZXJyb3ItYWN0aXZlJyk7CiAJIAkgCXBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQocGFyZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd3Zi1lcnJvci1wYXJlbnQtZWxlJylbMF0pOwogCSAJfQogCX0KIAlmdW5jdGlvbiBzZXRFcnJvcihmaWVsZE9iaiwgbGFiZWwpIHsKIAkgCXZhciBwYXJlbnRFbGVtZW50ID0gZmllbGRPYmouY2xvc2VzdCgnLndmLWZpZWxkJyksCiAJIAkJY2hpbGRFbGUgPSBwYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWVycm9yLXBhcmVudC1lbGUnKVswXTsKIAkgCWlmKCFjaGlsZEVsZSkgewogCSAJIAl2YXIgZXJyb3JQYXJlbnRFbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKSwKIAkgCSAJc3BhbkVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ1NQQU4nKSwKIAkgCSAJdmlld01vcmVFbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7CiAJIAkgCXNwYW5FbGUuc2V0QXR0cmlidXRlKCdjbGFzcycsICd3Zi1maWVsZC1lcnJvciB3Zi1maWVsZC1lcnJvci1sb25nJyk7CiAJIAkgCXNwYW5FbGUuaW5uZXJIVE1MID0gbGFiZWw7CiAJIAkgCWVycm9yUGFyZW50RWxlLmNsYXNzTGlzdC5hZGQoJ3dmLWVycm9yLXBhcmVudC1lbGUnKTsKIAkgCSAJZXJyb3JQYXJlbnRFbGUuYXBwZW5kQ2hpbGQoc3BhbkVsZSk7CiAJIAkgCXBhcmVudEVsZW1lbnQuYXBwZW5kKGVycm9yUGFyZW50RWxlKTsKIAkgCSAJcGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCd3Zi1maWVsZC1lcnJvci1hY3RpdmUnKTsKIAkgCSAJaWYoc3BhbkVsZS5zY3JvbGxXaWR0aCA+IHBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGgpIHsKIAkgCSAJIAl2aWV3TW9yZUVsZS5pbm5lckhUTUwgPSAnVmlldyBNb3JlJzsKIAkgCSAJIAl2aWV3TW9yZUVsZS5jbGFzc0xpc3QuYWRkKCd3Zi1lcnJvci12aWV3LW1vcmUnKTsKIAkgCSAJIAllcnJvclBhcmVudEVsZS5hcHBlbmQodmlld01vcmVFbGUpOwogCSAJIAkgCXZpZXdNb3JlRWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAJIAkgCSAJZXJyb3JQYXJlbnRFbGUucmVtb3ZlQ2hpbGQodmlld01vcmVFbGUpOwogCSAJIAkgCXNwYW5FbGUuY2xhc3NMaXN0LnJlbW92ZSgnd2YtZmllbGQtZXJyb3ItbG9uZycpOwogCSAJIAkgCX0pOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCXNwYW5FbGUuY2xhc3NMaXN0LnJlbW92ZSgnd2YtZmllbGQtZXJyb3ItbG9uZycpCiAJIAkgCX0KIAkgCX0KIAl9CiAJZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHM3MzY1MjUzMDAwMDAwNjQxMTQ2KCkgewogCSAJdmFyIGlzUmV0dXJuID0gdHJ1ZTsKIAkgCXZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbJ0JpZ2luV2ViVG9SZWNvcmRGb3JtNzM2NTI1MzAwMDAwMDY0MTE0NiddOwogCSAJdmFyIHZhbGlkYXRlRmxkID0gZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdbZnZhbGlkYXRlPXRydWVdJyk7CiAJIAl2YXIgaTsKIAkgCWZvciAoaSA9IDA7IGkgPCB2YWxpZGF0ZUZsZC5sZW5ndGg7IGkrKykKIAkgCXsKIAkgCSAJdmFyIHZhbGlkYXRlRmxkVmFsID0gdmFsaWRhdGVGbGRbaV0udmFsdWU7CiAJIAkgCXZhciBmVHlwZSA9IHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZnR5cGUnKTsKIAkgCSAJaWYodmFsaWRhdGVGbGRWYWwgIT09ICcnIHx8ICh2YWxpZGF0ZUZsZFZhbCA9PT0gJycgJiYgZlR5cGUuaW5kZXhPZignZGF0ZScpICE9PSAtMSkpIHsKIAkgCSAJIAl2YXIgd2ZMYWJlbCA9IHZhbGlkYXRlRmxkW2ldLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWxhYmVsJylbMF07CiAJIAkgCSAJdmFyIGZMYWJlbCA9IHdmTGFiZWwgPyB3ZkxhYmVsLmlubmVySFRNTDogJyc7CiAJIAkgCSAJc3dpdGNoKHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSkgewogCSAJIAkgCWNhc2UgJ3N0cmluZ19yZXN0X251bWJlcic6CiAJIAkgCSAJY2FzZSAnc3RyaW5nJzoKIAkgCSAJIAkgCXZhciBpc0Vycm9yID0gZmFsc2UsCiAJIAkgCSAJIAllcnJvcktleSA9ICdPbmx5IGxldHRlcnMgYXJlIGFsbG93ZWQuJzsKIAkgCSAJIAkgCWlmKHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSA9PT0gJ3N0cmluZ19yZXN0X251bWJlcicgJiYgdmFsaWRhdGVGbGRWYWwubWF0Y2goKC9cZC9nKSkgIT09IG51bGwpIHsJCiAJIAkgCSAJIAkgCWlzRXJyb3IgPSB0cnVlOwogCSAJIAkgCSAJfWVsc2UgaWYodmFsaWRhdGVGbGRbaV0uaGFzQXR0cmlidXRlKCdmbWluJykpewogCSAJIAkgCSAJIAlpZih2YWxpZGF0ZUZsZFZhbC5sZW5ndGggPCBwYXJzZUludCh2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2ZtaW4nKSkpIHsKIAkgCSAJIAkgCSAJIAllcnJvcktleSA9ICdZb3VyIGlucHV0IG11c3QgYmUgYXQgbGVhc3QgJyArdmFsaWRhdGVGbGRbaV0uZ2V0QXR0cmlidXRlKCdmbWluJykgKyAnIGNoYXJhY3RlcihzKS4nOwogCSAJIAkgCSAJIAkgCWlzRXJyb3IgPSB0cnVlOwogCSAJIAkgCSAJIAl9IGVsc2UgaWYodmFsaWRhdGVGbGRWYWwubGVuZ3RoID4gcGFyc2VJbnQodmFsaWRhdGVGbGRbaV0uZ2V0QXR0cmlidXRlKCdmbWF4JykpKSB7CiAJIAkgCSAJIAkgCSAJZXJyb3JLZXkgPSAnWW91ciBpbnB1dCBzaG91bGQgbm90IGV4Y2VlZCAnICt2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2ZtYXgnKSArICcgY2hhcmFjdGVyKHMpLic7CiAJIAkgCSAJIAkgCSAJaXNFcnJvciA9IHRydWU7CiAJIAkgCSAJIAkgCX0KIAkgCSAJIAkgCX0KIAkgCSAJIAkgCWlmKGlzRXJyb3IpewogCSAJIAkgCSAJIAlzZXRFcnJvcih2YWxpZGF0ZUZsZFtpXSwgZXJyb3JLZXkpOwogCSAJIAkgCSAJIAlpc1JldHVybiA9IGZhbHNlOwogCSAJIAkgCSAJfQogCSAJIAkgCSAJYnJlYWs7CiAJIAkgCSAJY2FzZSAnZW1haWwnOgogCSAJIAkgCSAJaWYodmFsaWRhdGVGbGRWYWwubWF0Y2goL14oW0EtWmEtejAtOS0uXyUnKy9dK0BbQS1aYS16MC05Li1dKy5bYS16QS1aXXsyLDIyfSkkLykgPT09IG51bGwpIHsKIAkgCSAJIAkgCSAJc2V0RXJyb3IodmFsaWRhdGVGbGRbaV0sICdFbnRlciB2YWxpZCAnICsgZkxhYmVsKTsKIAkgCSAJIAkgCSAJaXNSZXR1cm4gPSBmYWxzZTsKIAkgCSAJIAkgCX0KIAkgCSAJIAkgCWJyZWFrOwogCSAJIAkgCWNhc2UgJ251bWJlcic6CiAJIAkgCSAJY2FzZSAnZG91YmxlJzoKIAkgCSAJIAkgCXZhciBpc0Vycm9yID0gZmFsc2UsCiAJIAkgCSAJIAllcnJvcktleSA9ICdFbnRlciB2YWxpZCAnICsgZkxhYmVsOwogCSAJIAkgCSAJaWYoKHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSA9PT0gJ251bWJlcicgJiYgdmFsaWRhdGVGbGRWYWwubWF0Y2goL15bMC05XSskLykgPT09IG51bGwpCiAJIAkgCSAJIAkJCXx8ICh2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2Z0eXBlJykgPT09ICdkb3VibGUnICYmIHZhbGlkYXRlRmxkVmFsLm1hdGNoKC9eWzAtOV0qKFwuWzAtOV17MCwyfSk/JC8pID09PSBudWxsKSkgewogCSAJIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJIAkgCX1lbHNlIGlmKHZhbGlkYXRlRmxkW2ldLmhhc0F0dHJpYnV0ZSgnZm1pbicpKXsKIAkgCSAJIAkgCSAJaWYodmFsaWRhdGVGbGRWYWwgPCBwYXJzZUludCh2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2ZtaW4nKSkpIHsKIAkgCSAJIAkgCSAJIAllcnJvcktleSA9ICdFbnRlciBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJyArdmFsaWRhdGVGbGRbaV0uZ2V0QXR0cmlidXRlKCdmbWluJyk7CiAJIAkgCSAJIAkgCSAJaXNFcnJvciA9IHRydWU7CiAJIAkgCSAJIAkgCX0gZWxzZSBpZih2YWxpZGF0ZUZsZFZhbCA+IHBhcnNlSW50KHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZm1heCcpKSkgewogCSAJIAkgCSAJIAkgCWVycm9yS2V5ID0gJ0VudGVyIGEgbnVtYmVyIGxlc3MgdGhhbiBvciBlcXVhbCB0byAnICt2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2ZtYXgnKTsKIAkgCSAJIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJIAkgCSAJfQogCSAJIAkgCSAJfQogCSAJIAkgCSAJaWYoaXNFcnJvcil7CiAJIAkgCSAJIAkgCXNldEVycm9yKHZhbGlkYXRlRmxkW2ldLCBlcnJvcktleSk7CiAJIAkgCSAJIAkgCWlzUmV0dXJuID0gZmFsc2U7CiAJIAkgCSAJIAl9CiAJIAkgCSAJIAlicmVhazsKIAkgCSAJIAkgfQogCSAJIAl9CiAJIAl9CiAJIAlyZXR1cm4gaXNSZXR1cm47CiAJfQogCWZ1bmN0aW9uIHNob3dEcm9wRG93bjczNjUyNTMwMDAwMDA2NDExNDYoX2MpewogCSAJdmFyIF9kZCA9IF9jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duJylbMF0sCiAJIAkgX2RkSW5wdXQgPSBfYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcm9wZG93bi1pbnB1dCcpWzBdLAogCSAJIGRkTSA9IF9jLnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JyksCiAJIAkgX3NPcHQgPSBfYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzZWxlY3RlZC1vcHRpb25zJylbMF07CiAJIAkgaWYoX2RkSW5wdXQgJiYgX2RkSW5wdXQudmFsdWUgIT09ICcnKSB7CgogCSAJIAl0aGlzLnJlbW92ZUVycm9yKF9kZElucHV0KTsKCiAJIAkgfQogCSAJaWYoZGRNLmNoaWxkRWxlbWVudENvdW50ID09PSAwKSB7CiAJIAkgCV9jLmNsYXNzTGlzdC5yZW1vdmUoJ2Ryb3Bib3gtYWN0aXZlJyk7CiAJIAkgCV9zT3B0LmNsYXNzTGlzdC5hZGQoJ2RycC1kd24tbm8tdmFsJyk7CiAJIAkgCXJldHVybiBmYWxzZTsKIAkgCX0KIAkgCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bicpLmZvckVhY2goZHJvcGR3bj0+ewogCSAJIAlpZighZHJvcGR3bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGUtZHJvcGRvd24nKSkgewogCSAJIAkgCWRyb3Bkd24uY2xhc3NMaXN0LmFkZCgnaGlkZS1kcm9wZG93bicpOwogCSAJIAl9CiAJIAkgCWRyb3Bkd24ucXVlcnlTZWxlY3RvckFsbCgnLmRyb3Bkb3duLWlucHV0JykuZm9yRWFjaChpbnA9PnsKIAkgCSAJIAlpZighaW5wLmNsYXNzTGlzdC5jb250YWlucygnZE4nKSkgewogCSAJIAkgCSAJaW5wLmNsYXNzTGlzdC5hZGQoJ2ROJyk7CiAJIAkgCSAJfQogCSAJIAl9KTsKIAkgCX0pOwogCSAJbGV0IGRkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bicpOwogCSAJaWYoZGRzKSB7CiAJIAkgCWRkcy5mb3JFYWNoKGRkRWxlbT0+ewogCSAJIAkgCWlmKGRkRWxlbS5jbGFzc0xpc3QuY29udGFpbnMoJ29wZW4nKSkgewogCSAJIAkgCSAJZGRFbGVtLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTsKIAkgCSAJIAl9CiAJIAkgCX0pOwogCSAJfQogCSAJaWYoX3NPcHQpIHsKIAkgCSAJX3NPcHQuY2xhc3NMaXN0LnJlbW92ZSgnZHJvcC1ib3gtY2xvc2VkJywgJ2RycC1kd24tbm8tdmFsJywgJ3NlbGVjdGVkLW9wdGlvbnMtZmllbGQnKTsKIAkgCX0KIAkgCV9jLmNsb3Nlc3QoJy53Zi1mb3JtLXdyYXBwZXInKS5xdWVyeVNlbGVjdG9yQWxsKCcubXVsdGlzZWxlY3QnKS5mb3JFYWNoKGRkV3JhcD0+ewogCSAJIAlpZihkZFdyYXAuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcm9wYm94LWFjdGl2ZScpKSB7CiAJIAkgCSAJZGRXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2Ryb3Bib3gtYWN0aXZlJyk7CiAJIAkgCX0KIAkgCX0pOwogCSAJX2MuY2xhc3NMaXN0LmFkZCgnZHJvcGJveC1hY3RpdmUnKTsKIAkgCWRkTS5jbGFzc0xpc3QuYWRkKCdkcm9wZG93bi1mb2N1cycpOwogCSAJaWYoX2RkSW5wdXQpIHsKIAkgCV9kZElucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2lucHV0LW5vdC1hY3RpdmUnLCAnZHJvcC1ib3gtY2xvc2VkJyk7CiAJIAlfZGRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgJ1NlYXJjaCBIZXJlJyk7CiAJIAl9CiAJIAlpZihkZE0uY2hpbGRFbGVtZW50Q291bnQgPiAxKSB7CiAJIAkgCV9jLnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bicpLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGUtZHJvcGRvd24nKTsKIAkgCX0KIAkgCWxldCBvcHRpb25zID0gX2MucXVlcnlTZWxlY3RvckFsbCgnLm9wdGlvbicpOwogCSAJb3B0aW9ucy5mb3JFYWNoKG9wdGlvbj0+ewogCSAJIAlpZihvcHRpb24uY2xhc3NMaXN0LmNvbnRhaW5zKCduby1yZXN1bHRzJykpIHsKIAkgCSAJIAlpZighX2RkSW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkTicpKSB7CiAJIAkgCSAJIAlfZGRJbnB1dC5jbGFzc0xpc3QuYWRkKCdkTicpOwogCSAJIAkgCX0KIAkgCSAJfQogCSAJfSk7CiAJIAlpZihfZGQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkTicpKSB7CiAJIAkgCV9kZC5jbGFzc0xpc3QucmVtb3ZlKCdkTicpOwogCSAJfQogCSAJX2RkLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKIAkgCWlmKGRkTS5xdWVyeVNlbGVjdG9yKCcub3B0aW9uW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV0nKSkgewogCSAJIAlkZE0ucXVlcnlTZWxlY3RvcignLm9wdGlvbltkYXRhLXNlbGVjdGVkPXRydWVdJykuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAnY2VudGVyJ30pOwogCSAJfQogCSAJaWYoX2RkSW5wdXQgJiYgX2RkSW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkTicpKSB7CiAJIAkgCV9kZElucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2ROJyk7CiAJIAl9CiAJIAlfYy5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24nKS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRlLWRyb3Bkb3duJyk7CiAJIAlpZihfZGRJbnB1dCl7CiAJIAlfZGRJbnB1dC5mb2N1cygpOwogCSAJfQogCSAJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAJIAkgCWlmIChfZGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICsgZGRNLm9mZnNldEhlaWdodCArIDEwID4gd2luZG93LmlubmVySGVpZ2h0KSB7CiAJIAkgCWxldCB0b3AgPSBkZE0ub2Zmc2V0SGVpZ2h0OwogCSAJIAlpZiAoZGRNLmNsb3Nlc3QoJy51eC1waWNrLW1peGVkJykpIHsKIAkgCSAJIAl0b3AgPSBkZE0ub2Zmc2V0SGVpZ2h0ICsgNDsKIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAlpZiAoX3NPcHQub2Zmc2V0SGVpZ2h0KSB7CiAJIAkgCSAJIAl0b3AgPSBNYXRoLmFicyhkZE0ub2Zmc2V0SGVpZ2h0KSArIF9zT3B0Lm9mZnNldEhlaWdodAogCSAJIAkgCX0KIAkgCSAJfQogCSAJIAlfZGQuY2xvc2VzdCgnLndmLWZpZWxkLWRyb3Bkb3duJykuY2xhc3NMaXN0LmFkZCgnZHJvcGRvd25Ub3AnKTsKIAkgCSAJZGRNLmNsYXNzTGlzdC5hZGQoJ2Ryb3Bkb3duVG9wJyk7CiAJIAkgCWRkTS5zdHlsZS50b3AgPSAnLScgKyB0b3AgKyAncHgnOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCV9kZC5jbG9zZXN0KCcud2YtZmllbGQtZHJvcGRvd24nKS5jbGFzc0xpc3QucmVtb3ZlKCdkcm9wZG93blRvcCcpOwogCSAJIAkgCWRkTS5jbGFzc0xpc3QucmVtb3ZlKCdkcm9wZG93blRvcCcpOwogCSAJIAkgCWRkTS5zdHlsZS50b3AgPSAnJzsKIAkgCSAJfQogCSAJfSwgMjAwKQogCX0KIAlmdW5jdGlvbiBoYW5kbGVTZWFyY2hGb3JEcm9wZG93bihkcm9wZG93bklucHV0LCBkcm9wZG93blNlbGVjdG9yKSB7CiAJIAl2YXIgZHJvcGRvd25NZW51ID0gZHJvcGRvd25JbnB1dC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoZHJvcGRvd25TZWxlY3RvciksCiAJIAkgc2VhcmNoVGV4dCA9IGRyb3Bkb3duSW5wdXQudmFsdWUudG9Mb3dlckNhc2UoKSwKIAkgCSBub1Jlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCduby1yZXN1bHRzJylbMF0sCiAJIAkgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAJIAkgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSwKIAkgCSBvcHRpb25zID0gZHJvcGRvd25NZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHRpb24nKTsKIAkgCXNwYW4uc2V0QXR0cmlidXRlKCdkYXRhLXZhbHVlJywgJ05vIHJlc3VsdHMnKTsKIAkgCWRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnLCAnTm8gcmVzdWx0cycpOwogCSAJZGl2LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnb3B0aW9uIG5vLXJlc3VsdHMnKTsKIAkgCWRpdi50ZXh0Q29udGVudCA9ICdObyBvcHRpb25zIGZvdW5kJzsKIAkgCW9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAob3B0aW9uKSB7CiAJIAkgCWxldCBvcHRpb25WYWx1ZSA9IG9wdGlvbi5xdWVyeVNlbGVjdG9yKCdzcGFuJykuZGF0YXNldC52YWx1ZS50b0xvd2VyQ2FzZSgpOwogCSAJIAlpZiAob3B0aW9uVmFsdWUuaW5jbHVkZXMoc2VhcmNoVGV4dCkpIHsKIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LmFkZCgnb3B0LXNob3cnKTsKIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnb3B0LWhpZGUnKTsKIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnb3B0LXNob3cnKTsKIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LmFkZCgnb3B0LWhpZGUnKTsKIAkgCSAJfQogCSAJfSk7CiAJIAlmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgewogCSAJIAlpZiAob3B0aW9uc1tpXS5jbGFzc0xpc3QuY29udGFpbnMoJ29wdC1oaWRlJykpIHsKIAkgCSAJIAlpZiAoaSA9PSBvcHRpb25zLmxlbmd0aCAtIDEpIHsKIAkgCSAJIAkgCWRpdi5hcHBlbmRDaGlsZChzcGFuKTsKIAkgCSAJIAkgCWlmIChvcHRpb25zW2ldLmNsYXNzTGlzdC5jb250YWlucygnbm8tcmVzdWx0cycpKSB7CiAJIAkgCSAJIAkgCWlmIChub1Jlc3VsdHMuY2xhc3NMaXN0LmNvbnRhaW5zKCdvcHQtaGlkZScpKSB7CiAJIAkgCSAJIAkgCSAJbm9SZXN1bHRzLmNsYXNzTGlzdC5yZW1vdmUoJ29wdC1oaWRlJyk7CiAJIAkgCSAJIAkgCX0KIAkgCSAJIAkgCSAJcmV0dXJuIGZhbHNlOwogCSAJIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAkgCSAJZHJvcGRvd25NZW51LmFwcGVuZENoaWxkKGRpdik7CiAJIAkgCSAJIAl9CiAJIAkgCSAJfQogCSAJIAl9IGVsc2UgewogCSAJIAkgCSBpZiAobm9SZXN1bHRzKSB7CiAJIAkgCSAJIAlub1Jlc3VsdHMucmVtb3ZlKCk7CiAJIAkgCSAJIH0KIAkgCSAJIAlyZXR1cm4gZmFsc2U7CiAJIAkgCX0KIAkgCX0KIAl9CiAJZnVuY3Rpb24gY3JlYXRlRHJvcGRvd25PcHRpb25zNzM2NTI1MzAwMDAwMDY0MTE0NihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQpIHsKIAkgCXZhciBlbGVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVJRCksCiAJIAkgX2RkID0gZWxlRGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duJylbMF0sCiAJIAkgX2RkTSA9IGVsZURpdi5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tbWVudScpLAogCSAJIF9kZElucHV0ID0gZWxlRGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duLWlucHV0JylbMF0sCiAJIAkgX3NPcHQgPSBlbGVEaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2VsZWN0ZWQtb3B0aW9ucycpWzBdLAogCSAJX21zUGFyID0gZWxlRGl2LmNsb3Nlc3QoJy53Zi1maWVsZCcpOwogCSAJX2RkTS5pbm5lckhUTUwgPSAnJzsgCgogCSAJb3B0aW9uc0RhdGEuZm9yRWFjaChmdW5jdGlvbihvcHRpb25WYWx1ZSkgewogCSAJIAlpZiAoIXNPcHQuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7CiAJIAkgCSAJdmFyIG9wdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogCSAJIAkgCW9wdGlvbkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdvcHRpb24nKTsKIAkgCSAJIAl2YXIgb3B0aW9uVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogCSAJIAkgCW9wdGlvblRhZy50ZXh0Q29udGVudCA9IG9wdGlvblZhbHVlOwogCSAJIAkgCW9wdGlvblRhZy5kYXRhc2V0LnZhbHVlID0gb3B0aW9uVmFsdWU7CiAJIAkgCSAJb3B0aW9uVGFnLmNsYXNzTGlzdC5hZGQoJ29wdGlvbi10eHQnKTsKIAkgCSAJIAlvcHRpb25Db250YWluZXIuYXBwZW5kQ2hpbGQob3B0aW9uVGFnKTsKIAkgCSAJIAlfZGRNLmFwcGVuZENoaWxkKG9wdGlvbkNvbnRhaW5lcik7CiAJIAkgCX0KIAkgCX0pOwogCSAJdmFyIG9wdGlvbnMgPSBfZGRNLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHRpb24nKTsKIAkgCW9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvcHRpb24pIHsKIAkgCSAJb3B0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAJIAkgCSAJdmFyIG9wdGlvblZhbHVlID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdzcGFuJykuZGF0YXNldC52YWx1ZTsKIAkgCSAJIAlhZGRTZWxlY3RlZE9wdGlvbihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQsIFtvcHRpb25WYWx1ZV0pOwogCSAJIAkgCWlmKF9zT3B0LmNoaWxkRWxlbWVudENvdW50ID4gMCl7CiAJIAkgCSAJIAlfc09wdC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRlLW9wdC1saXN0Jyk7CiAJIAkgCSAJIAlfZGRJbnB1dC5jbGFzc0xpc3QuYWRkKCdkcm9wLWJveC1hY3RpdmUnKTsKIAkgCSAJIAl9CiAJIAkgCSAJbGV0IHRhZ3MgPSBfc09wdC5xdWVyeVNlbGVjdG9yQWxsKCcudGFnLWRhdGEtdmFsJyk7CiAJIAkgCSAJaWYodGFncykgewogCSAJIAkgCXRhZ3MuZm9yRWFjaCh0YWdWYWw9PnsKIAkgCSAJIAlpZigodGFnVmFsLnNjcm9sbFdpZHRoID4gdGFnVmFsLmNsaWVudFdpZHRoKSAmJiAhdGFnVmFsLmdldEF0dHJpYnV0ZSgndGl0bGUnKSl7CiAJIAkgCSAJdGFnVmFsLnNldEF0dHJpYnV0ZSgndGl0bGUnLCB0YWdWYWwuZ2V0QXR0cmlidXRlKCdkYXRhLXZhbHVlJykpOwogCSAJIAkgCX0KIAkgCSAJIAl9KQogCSAJIAkgCX0KIAkgCSAJIAlpZihfc09wdC5jaGlsZEVsZW1lbnRDb3VudCA+IDEpIHsKIAkgCSAJIAkgCV9zT3B0LmNsYXNzTGlzdC5hZGQoJ3NldC1vcHQtbGlzdCcpOwogCSAJIAkgCX0KIAkgCSAJIAlpZihfZGRNLmNoaWxkRWxlbWVudENvdW50ID09PSAwKXsKIAkgCSAJIAkgCV9kZC5jbGFzc0xpc3QuYWRkKCdoaWRlLWRyb3Bkb3duJyk7CiAJIAkgCSAJIAlpZihvcHRpb24gJiYgIW9wdGlvbi5jbGFzc0xpc3QuY29udGFpbnMoJ25vLXJlc3VsdHMnKSkgewogCSAJIAkgCSAJIAlsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAJIAkgCSAJIAkgCXNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAJIAkgCSAJIAkgCWRpdi50ZXh0Q29udGVudCA9ICdObyBvcHRpb25zIGZvdW5kJzsKIAkgCSAJIAkgCSAJc3Bhbi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnLCAnTm8gcmVzdWx0cycpOwogCSAJIAkgCSAJIAlkaXYuc2V0QXR0cmlidXRlKCdjbGFzcycsICdvcHRpb24gbm8tcmVzdWx0cycpOwogCSAJIAkgCSAJIAlkaXYuYXBwZW5kQ2hpbGQoc3Bhbik7CiAJIAkgCSAJIAkgCV9kZE0uYXBwZW5kQ2hpbGQoZGl2KTsKIAkgCSAJIAkgCSAJX2RkTS5jbGFzc0xpc3QuYWRkKCdoaWRlLXRoZS1pbnAnKTsKIAkgCSAJIAkgCSAJX2RkSW5wdXQuY2xhc3NMaXN0LmFkZCgnZE4nKTsKIAkgCSAJIAkgCSAJZWxlRGl2LmNsYXNzTGlzdC5hZGQoJ25vLXJlc3VsdHMtZWxlbScpOwogCSAJIAkgCSAJIAllbGVEaXYuY2xvc2VzdCgnLndmLWZpZWxkLWlubmVyJykuY2xhc3NMaXN0LmFkZCgnbm8tcmVzdWx0cy1lbGVtJyk7CiAJIAkgCSAJIAl9ZWxzZSB7CiAJIAkgCSAJIAkgCV9kZC5jbGFzc0xpc3QuYWRkKCdkTicpOwogCSAJIAkgCSAJIAlfZGRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkTicpOwogCSAJIAkgCSAJIAllbGVEaXYuY2xhc3NMaXN0LnJlbW92ZSgnbm8tcmVzdWx0cy1lbGVtJyk7CiAJIAkgCSAJIAkgCWVsZURpdi5jbG9zZXN0KCcud2YtZmllbGQtaW5uZXInKS5jbGFzc0xpc3QucmVtb3ZlKCduby1yZXN1bHRzLWVsZW0nKTsKIAkgCSAJIAkgCX0KIAkgCSAJIAl9CiAJIAkgCX0pOwogCSAJfSk7CiAJIAlpZihfbXNQYXIgJiYgX21zUGFyLmNsYXNzTGlzdC5jb250YWlucygnd2YtZmllbGQtZXJyb3ItYWN0aXZlJykpewogCSAJIAl0aGlzLnJlbW92ZUVycm9yKF9kZElucHV0KTsKIAkgCX0KIAkgCWlmKF9zT3B0ICYmIF9zT3B0LmNoaWxkRWxlbWVudENvdW50ID4gNCkgewogCSAJIAlfc09wdC5sYXN0RWxlbWVudENoaWxkLnNjcm9sbEludG9WaWV3KCk7CiAJIAl9CiAJfQogCSBmdW5jdGlvbiBhZGRTZWxlY3RlZE9wdGlvbihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQsIG9wdGlvbnNWYWx1ZSkgewogCSAJdmFyIGVsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZUlEKSwKIAkgCSBfc09wdCA9IGVsZURpdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzZWxlY3RlZC1vcHRpb25zJylbMF0sCiAJIAkgX2RkSW5wdXQgPSBlbGVEaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHJvcGRvd24taW5wdXQnKVswXTsgCgogCSAJb3B0aW9uc1ZhbHVlLm1hcChvcHRpb25WYWx1ZSA9PiB7CiAJIAlpZiAoIXNPcHQuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7CiAJIAkgCXNPcHQucHVzaChvcHRpb25WYWx1ZSk7IAoKIAkgCSAJdmFyIG9wdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogCSAJIAlvcHRpb25Db250YWluZXIuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQtb3B0aW9uJywgJ211bHRpLXRhZycpOyAKCiAJIAkgCXZhciBvcHRpb25UYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAJIAkgCW9wdGlvblRhZy5jbGFzc0xpc3QuYWRkKCd0YWctZGF0YS12YWwnLCAnZWxsaXBzaXMnKTsKIAkgCSAJb3B0aW9uVGFnLnRleHRDb250ZW50ID0gb3B0aW9uVmFsdWU7CiAJIAkgCW9wdGlvblRhZy5kYXRhc2V0LnZhbHVlID0gb3B0aW9uVmFsdWU7CiAJIAkgCW9wdGlvbkNvbnRhaW5lci5hcHBlbmRDaGlsZChvcHRpb25UYWcpOwoKIAkgCSAJdmFyIHJlbW92ZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKIAkgCSAJcmVtb3ZlQnV0dG9uLnRleHRDb250ZW50ID0gJ3gnOwogCSAJIAlyZW1vdmVCdXR0b24uY2xhc3NMaXN0LmFkZCgncmVtb3ZlLWJ1dHRvbicsICd0YWctY2xvc2UtYnRuJyk7CiAJIAkgCXJlbW92ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGNsc2VCdG4pIHsKIAkgCSAJIAl2YXIgb3B0aW9uQ29udGFpbmVyID0gdGhpcy5wYXJlbnROb2RlLAogCSAJIAkgCSBvcHRpb25WYWx1ZSA9IG9wdGlvbkNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzcGFuJykuZGF0YXNldC52YWx1ZSwKIAkgCSAJIAkgZHJvcGRvd24gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcm9wZG93bicpWzBdOwogCSAJIAkgCWxldCBjbG9zZUREID0gY2xzZUJ0biAmJiBjbHNlQnRuLmN1cnJlbnRUYXJnZXQuY2xvc2VzdCgnLm11bHRpc2VsZWN0JykgPyBjbHNlQnRuLmN1cnJlbnRUYXJnZXQuY2xvc2VzdCgnLm11bHRpc2VsZWN0JykuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHJvcGRvd24nKVswXSA6IHVuZGVmaW5lZDsKIAkgCSAJIAlpZihjbG9zZUREICYmIGNsb3NlREQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkTicpKSB7CiAJIAkgCSAJIAljbG9zZURELmNsYXNzTGlzdC5yZW1vdmUoJ2ROJyk7CiAJIAkgCSAJIAl9CiAJIAkgCSAJIAlpZihjbHNlQnRuICYmIGNsc2VCdG4uY3VycmVudFRhcmdldC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICYmIGNsc2VCdG4uY3VycmVudFRhcmdldC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmdldEF0dHJpYnV0ZSgndGl0bGUnKSkgewogCSAJIAkgCSAJY2xzZUJ0bi5jdXJyZW50VGFyZ2V0LnByZXZpb3VzRWxlbWVudFNpYmxpbmcucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpOwogCSAJIAkgCX0KIAkgCSAJIAlfc09wdC5yZW1vdmVDaGlsZChvcHRpb25Db250YWluZXIpOwogCSAJIAkgCXZhciBpbmRleCA9IHNPcHQuaW5kZXhPZihvcHRpb25WYWx1ZSk7CiAJIAkgCSAJaWYgKGluZGV4ID4gLTEpIHsKIAkgCSAJIAkgCXNPcHQuc3BsaWNlKGluZGV4LCAxKTsKIAkgCSAJIAl9CiAJIAkgCSAJaWYoX3NPcHQuY2hpbGRFbGVtZW50Q291bnQgPT09IDApewogCSAJIAkgCSAJX3NPcHQuY2xhc3NMaXN0LmFkZCgnaGlkZS1vcHQtbGlzdCcpOwogCSAJIAkgCSAJX2RkSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgnZHJvcC1ib3gtYWN0aXZlJyk7CiAJIAkgCSAJIAlfc09wdC5jbGFzc0xpc3QucmVtb3ZlKCdzZXQtb3B0LWxpc3QnKTsKIAkgCSAJIAl9CiAJIAkgCSAJbGV0IF9kZE0gPSBjbG9zZURELmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duLW1lbnUnKVswXTsKIAkgCSAJIAlpZihfZGRNICYmIF9kZE0uY2hpbGRFbGVtZW50Q291bnQgPiAwKSB7CiAJIAkgCSAJIAlfZGRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkTicpOwogCSAJIAkgCSAJY2xvc2VERC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRlLWRyb3Bkb3duJyk7CiAJIAkgCSAJIAljbG9zZURELnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZS10aGUtaW5wJyk7CiAJIAkgCSAJfQogCSAJIAkgCWlmKGNsb3NlREQuY2xvc2VzdCgnLndmLWZpZWxkLWlubmVyJykuY2xhc3NMaXN0LmNvbnRhaW5zKCduby1yZXN1bHRzLWVsZW0nKSkgewogCSAJIAkgCSAJY2xvc2VERC5jbG9zZXN0KCcud2YtZmllbGQtaW5uZXInKS5jbGFzc0xpc3QucmVtb3ZlKCduby1yZXN1bHRzLWVsZW0nKTsKIAkgCSAJIAkgCWNsb3NlREQuY2xvc2VzdCgnLndmLWZpZWxkLWlubmVyJykucXVlcnlTZWxlY3RvcignLm11bHRpc2VsZWN0JykuY2xhc3NMaXN0LnJlbW92ZSgnbm8tcmVzdWx0cy1lbGVtJyk7CiAJIAkgCSAJfQogCSAJIAkgCSAJY3JlYXRlRHJvcGRvd25PcHRpb25zNzM2NTI1MzAwMDAwMDY0MTE0NihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQpOwogCSAJIAl9KTsKIAkgCSAJb3B0aW9uQ29udGFpbmVyLmFwcGVuZENoaWxkKHJlbW92ZUJ1dHRvbik7CiAJIAkgCV9zT3B0LmFwcGVuZENoaWxkKG9wdGlvbkNvbnRhaW5lcik7CiAJIAl9CiAJIAl9KTsKIAkgCV9kZElucHV0LnZhbHVlID0gJyc7CiAJIAlfZGRJbnB1dC5mb2N1cygpOwogCSAJY3JlYXRlRHJvcGRvd25PcHRpb25zNzM2NTI1MzAwMDAwMDY0MTE0NihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQpOwogCX0KIAlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZHJvcGRvd24taW5wdXQnKS5mb3JFYWNoKGZ1bmN0aW9uKGRkRWxlKSB7CiAJIAlkZEVsZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlbGUpIHsKIAkgCSAJaGFuZGxlU2VhcmNoRm9yRHJvcGRvd24oZWxlLnNyY0VsZW1lbnQsJy5kcm9wZG93bi1tZW51Jyk7CiAJIAl9KTsKIAl9KTsKIAlmdW5jdGlvbiB2YWxpZGF0ZU11bHRpUGljazczNjUyNTMwMDAwMDA2NDExNDYoKSB7CiAJIAl2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWydCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnXSwKIAkgCSBpc1JldHVybiA9IHRydWU7CiAJIAlmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJ1ttdWx0aXBpY2s9dHJ1ZV0nKS5mb3JFYWNoKGZ1bmN0aW9uKG11bHRpUGlja0VsZSl7CiAJIAkgCXZhciBvcHRpb25zQSA9IHdpbmRvd1snc29wdCcrbXVsdGlQaWNrRWxlLm5hbWVdLAogCSAJIAkgb3B0TCA9IG9wdGlvbnNBLmxlbmd0aCwKIAkgCSAJIGlzRXJyb3IgPSBmYWxzZSwKIAkgCSAJIGVycm9yS2V5ID0gJycsCiAJIAkgCSBwaWNrT3B0aW9ucyA9ICcnOwogCSAJIAlpZihtdWx0aVBpY2tFbGUuaGFzQXR0cmlidXRlKCdmbWluJykpIHsKIAkgCSAJIAlpZihvcHRMIDwgcGFyc2VJbnQobXVsdGlQaWNrRWxlLmdldEF0dHJpYnV0ZSgnZm1pbicpKSkgewogCSAJIAkgCSAJZXJyb3JLZXkgPSAnWW91IG11c3Qgc2VsZWN0IGF0IGxlYXN0ICcgKyBtdWx0aVBpY2tFbGUuZ2V0QXR0cmlidXRlKCdmbWluJykgKyAnIG9wdGlvbihzKSc7CiAJIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJIAl9IGVsc2UgaWYob3B0TCA+IHBhcnNlSW50KG11bHRpUGlja0VsZS5nZXRBdHRyaWJ1dGUoJ2ZtYXgnKSkpIHsKIAkgCSAJIAkgCWVycm9yS2V5ID0gJ1lvdSBjYW4gc2VsZWN0IHVwIHRvIG9ubHkgJyArIG11bHRpUGlja0VsZS5nZXRBdHRyaWJ1dGUoJ2ZtYXgnKSArICcgb3B0aW9uKHMpJzsKIAkgCSAJIAkgCWlzRXJyb3IgPSB0cnVlOwogCSAJIAkgCX0KIAkgCSAJfQogCSAJIAlpZihpc0Vycm9yKXsKIAkgCSAJIAlzZXRFcnJvcihtdWx0aVBpY2tFbGUsIGVycm9yS2V5KTsKIAkgCSAJIAlpc1JldHVybiA9IGZhbHNlOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCWZvciAoaiA9IDA7IGogPCBvcHRMOyBqKyspIHsKIAkgCSAJIAkgCWlmKHBpY2tPcHRpb25zID09PSAnJykgewogCSAJIAkgCSAJIAlwaWNrT3B0aW9ucyA9IG9wdGlvbnNBW2pdOwogCSAJIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAkgCSAJcGlja09wdGlvbnMgKz0gJzsnICsgb3B0aW9uc0Fbal07CiAJIAkgCSAJIAl9CiAJIAkgCSAJfQogCSAJIAl9CiAJIAkgCW11bHRpUGlja0VsZS52YWx1ZSA9IHBpY2tPcHRpb25zOwogCSAJfSk7CiAJIAlyZXR1cm4gaXNSZXR1cm47CiAJfQogCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSl7CiAJIAlsZXQgdGFyZ2V0Q2xhc3NlcyA9IGUudGFyZ2V0LmNsYXNzTGlzdCwKIAkgCSBjbGFzc05hbWVzID0gWydtdWx0aXNlbGVjdCcsICdzZWxlY3RlZC1vcHRpb25zJywgJ2Ryb3Bkb3duLWlucHV0JywgJ29wdGlvbicsICdvcHRpb24tdHh0JywgJ3NlbGVjdGVkLW9wdGlvbicsICdyZW1vdmUtYnV0dG9uJywgJ2Ryb3Bkb3duJ107CiAJIAlpZigoIWUudGFyZ2V0LmNsb3Nlc3QoJy5zaW5nbGUtc2VsZWN0LWRycCcpICYmIGNsYXNzTmFtZXMuc29tZShjbGFzc05hbWUgPT4gdGFyZ2V0Q2xhc3Nlcy5jb250YWlucyhjbGFzc05hbWUpKSkgfHwgKGUudGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bicpICYmICAhZS50YXJnZXQuY2xvc2VzdCgnLmRyb3Bkb3duLWl0ZW1zLXdyYXBwZXInKSkpewogCSAJIAlyZXR1cm4gdHJ1ZTsKIAkgCX1lbHNlewogCSAJIAl2YXIgbUxlbiA9IG11bHRpUGlja0ZpZWxkcy5sZW5ndGg7CiAJIAkgCWZvcihpPTA7IGk8bUxlbjsgaSsrKSB7CiAJIAkgCXZhciBkcm9wZG93bk1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tbWVudScpLAogCSAJIAkgZHJvcGRvd24gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcm9wZG93bicpW2ldLAogCSAJIAkgbXVsdGlzZWxlY3RCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtdWx0aXNlbGVjdCcpW2ldLAogCSAJIAkgc2VsZWN0ZWRPcHRpb25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2VsZWN0ZWQtb3B0aW9ucycpW2ldLAogCSAJIAkgZHJvcGRvd25JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duLWlucHV0JylbaV0sCiAJIAkgCSBvcHRpb25zID0gZHJvcGRvd25NZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHRpb24nKTsKIAkgCSAJbm9SZXN1bHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbm8tcmVzdWx0cycpW2ldOwogCSAJIAlkcm9wZG93bi5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAJIAkgCW11bHRpc2VsZWN0Qm94LmNsYXNzTGlzdC5yZW1vdmUoJ2Ryb3Bib3gtYWN0aXZlJyk7CiAJIAkgCWRyb3Bkb3duTWVudS5jbGFzc0xpc3QucmVtb3ZlKCdkcm9wZG93bi1mb2N1cycpOwogCSAJIAlzZWxlY3RlZE9wdGlvbnMuY2xhc3NMaXN0LmFkZCgnZHJvcC1ib3gtY2xvc2VkJyk7CiAJIAkgCWRyb3Bkb3duSW5wdXQuY2xhc3NMaXN0LmFkZCgnZHJvcC1ib3gtY2xvc2VkJyk7CiAJIAkgCWlmKGRyb3Bkb3duSW5wdXQudmFsdWUgfHwgKG11bHRpc2VsZWN0Qm94LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1zZWFyY2gtaW5wdXQnKSAmJiBtdWx0aXNlbGVjdEJveC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tc2VhcmNoLWlucHV0JykudmFsdWUpKXsKIAkgCSAJaWYoZHJvcGRvd25JbnB1dC52YWx1ZSl7CiAJIAkgCSAJZHJvcGRvd25JbnB1dC52YWx1ZSA9ICcnOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCW11bHRpc2VsZWN0Qm94LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1zZWFyY2gtaW5wdXQnKS52YWx1ZSA9ICcnOwogCSAJIAl9CiAJIAkgCSAJb3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdGlvbil7CiAJIAkgCSAJaWYob3B0aW9uLmNsYXNzTGlzdC5jb250YWlucygnb3B0LWhpZGUnKSl7CiAJIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnb3B0LWhpZGUnKQogCSAJIAkgCX0KIAkgCSAJIAl9KTsKIAkgCSAJfQogCSAJIAlpZihzZWxlY3RlZE9wdGlvbnMuY2hpbGROb2Rlcy5sZW5ndGggPCAxKXsKIAkgCSAJIAlzZWxlY3RlZE9wdGlvbnMuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQtb3B0aW9ucy1maWVsZCcpOwogCSAJIAkgCWRyb3Bkb3duSW5wdXQucmVtb3ZlQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpOwogCSAJIAl9ZWxzZXsKIAkgCSAJIAlzZWxlY3RlZE9wdGlvbnMuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQtb3B0aW9ucy1maWVsZCcpOwogCSAJIAl9CiAJIAkgCWlmKCFkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ29wZW4nKSkgewogCSAJIAkgCWRyb3Bkb3duLmNsYXNzTGlzdC5hZGQoJ2hpZGUtZHJvcGRvd24nKTsKIAkgCSAJIAlkcm9wZG93bklucHV0LmNsYXNzTGlzdC5hZGQoJ2ROJyk7CiAJIAkgCX1lbHNlIHsKIAkgCSAJIAlkcm9wZG93bklucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2ROJyk7CiAJIAkgCSAJZHJvcGRvd24uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZS1kcm9wZG93bicpOwogCSAJIAl9CiAJIAkgCX0KIAkgCSAJbm9SZXN1bHRzID0gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCduby1yZXN1bHRzJykpOwogCSAJIAlub1Jlc3VsdHMubWFwKHggPT4geC5yZW1vdmUoKSk7CiAJIAkgCWlmKCFlLnRhcmdldC5jbG9zZXN0KCcuZGF0ZS1pbnB1dC1jb250YWluZXInKSAmJiAhZS50YXJnZXQuY2xvc2VzdCgnLndmLWNhbGVuZGFyLXBvcHVwLXdyYXBwZXInKSl7CgogCSAJIAkgCWNhbGVuZGFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgogCSAJIAl9CiAJIAl9CiAJfSk7CiAJZnVuY3Rpb24gY3JlYXRlU2luZ2xlU2VsZWN0RHJwKGVsZUlELCBvcHRpb25zRGF0YSkgewogCSAJdmFyIGVsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZUlEKSwKIAkgCSBfZGQgPSBlbGVEaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHJvcGRvd24nKVswXSwKIAkgCSBfZGRNID0gZWxlRGl2LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JyksCiAJIAkgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpLAogCSAJIGRycEl0ZW1zV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogCSAJX2RkTS5pbm5lckhUTUwgPSAnJzsKIAkgCWlucHV0LnR5cGUgPSAndGV4dCc7CiAJIAlpbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgJ1NlYXJjaCcpOwogCSAJaW5wdXQuY2xhc3NMaXN0LmFkZCgnZHJvcGRvd24tc2VhcmNoLWlucHV0Jyk7CiAJIAlkcnBJdGVtc1dyYXBwZXIuY2xhc3NOYW1lID0gJ2Ryb3Bkb3duLWl0ZW1zLXdyYXBwZXInOwogCSAJX2RkTS5hcHBlbmRDaGlsZChpbnB1dCk7CiAJIAlfZGRNLmFwcGVuZENoaWxkKGRycEl0ZW1zV3JhcHBlcik7CiAJIAlvcHRpb25zRGF0YS5kcm9wZG93bkl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKG9wdGlvblZhbHVlKSB7CiAJIAkgCXZhciBvcHRpb25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIAkgCSAJb3B0aW9uQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ29wdGlvbicpOwogCSAJIAlvcHRpb25Db250YWluZXIuc2V0QXR0cmlidXRlKCdpc28nLCBvcHRpb25WYWx1ZS5pc28pOwogCSAJIAlvcHRpb25Db250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRHJwRm9yT2JqZWN0VHlwZShvcHRpb25zRGF0YSwgb3B0aW9uVmFsdWUsIGVsZURpdikpOwogCSAJIAlpZiAob3B0aW9uVmFsdWUuaXNEZWZhdWx0KSB7CiAJIAkgCSAJc2V0U2VsZWN0ZWRPcHRpb24ob3B0aW9uQ29udGFpbmVyLCBlbGVEaXYpOwogCSAJIAl9CiAJIAkgCWRycEl0ZW1zV3JhcHBlci5hcHBlbmRDaGlsZChvcHRpb25Db250YWluZXIpOwogCSAJfSk7CiAJIAl2YXIgb3B0aW9ucyA9IF9kZE0ucXVlcnlTZWxlY3RvckFsbCgnLm9wdGlvbicpOwogCSAJb3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcHRpb24pIHsKIAkgCSAJb3B0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAkgCXNldFNlbGVjdGVkT3B0aW9uKG9wdGlvbiwgZWxlRGl2KQogCSAJIAl9KTsKIAkgCX0pOwogCSAJaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZWxlKSB7CiAJIAkgCWhhbmRsZVNlYXJjaEZvckRyb3Bkb3duKGVsZS5zcmNFbGVtZW50LCAnLmRyb3Bkb3duLWl0ZW1zLXdyYXBwZXInKTsKIAkgCX0pOwogCX0KIAlmdW5jdGlvbiBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24sIGVsZURpdikgewogCSAJdmFyIGNvbnRlbnQgPSBlbGVEaXYucXVlcnlTZWxlY3RvckFsbCgnLmNvbnRlbnQtZGlzcGxheS1hcmVhJyksCiAJIAkgY29udGVudF9pbmRleCA9IDA7CiAJIAlpZiAoZWxlRGl2LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JykucXVlcnlTZWxlY3RvckFsbCgnLm9wdGlvbltkYXRhLXNlbGVjdGVkPXRydWVdJykubGVuZ3RoID4gMCkgewogCSAJIAllbGVEaXYucXVlcnlTZWxlY3RvcignLmRyb3Bkb3duLW1lbnUnKS5xdWVyeVNlbGVjdG9yQWxsKCcub3B0aW9uW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV0nKVswXS5kYXRhc2V0LnNlbGVjdGVkID0gZmFsc2U7CiAJIAl9CiAJIAlBcnJheS5mcm9tKG9wdGlvbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpKS5maWx0ZXIoZWwgPT4gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNob3ctaW4tc2VsZWN0aW9uJykgPT09ICd0cnVlJykubWFwKHggPT4gewogCSAJIAljb250ZW50W2NvbnRlbnRfaW5kZXhdLmlubmVySFRNTCA9IHguaW5uZXJIVE1MOwogCSAJIAljb250ZW50X2luZGV4Kys7CiAJIAl9KTsKIAkgCW9wdGlvbi5kYXRhc2V0LnNlbGVjdGVkID0gdHJ1ZTsKIAkgCXdpbmRvd1tlbGVEaXYuaWQrJ0NvZGUnXSA9IG9wdGlvbi5nZXRBdHRyaWJ1dGUoJ2lzbycpOwogCX0KIAlmdW5jdGlvbiBjcmVhdGVEcnBGb3JPYmplY3RUeXBlKGNvbmZpZywgaXRlbSwgZWxlRGl2KSB7CiAJIAl2YXIgaW5kZXggPSAxLAogCSAJIG9wdGlvblRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKIAkgCW9wdGlvblRhZy5jbGFzc0xpc3QuYWRkKCdpY29uLXRleHQtZHJvcGRvd24nKTsKIAkgCXdoaWxlIChjb25maWdbYGRpc3BsYXlMYWJlbCR7aW5kZXh9YF0pIHsKIAkgCSAJdmFyIGVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKIAkgCSAJZWxlLmlubmVySFRNTCA9IGl0ZW1bY29uZmlnW2BkaXNwbGF5TGFiZWwke2luZGV4fWBdXTsKIAkgCSAJZWxlLmRhdGFzZXQuc2hvd0luU2VsZWN0aW9uID0gY29uZmlnLnNob3dJblNlbGVjdGlvbi5pbmNsdWRlcyhgZGlzcGxheUxhYmVsJHtpbmRleH1gKTsKIAkgCSAJZWxlLnN0eWxlLm1hcmdpblJpZ2h0ID0gJzEwcHgnOwogCSAJIAlvcHRpb25UYWcuYXBwZW5kQ2hpbGQoZWxlKTsKIAkgCSAJb3B0aW9uVGFnLmRhdGFzZXQudmFsdWUgPSBpdGVtW2NvbmZpZy5zZWFyY2hWYWx1ZV07CiAJIAkgCWluZGV4Kys7CiAJIAl9CiAJIAlyZXR1cm4gb3B0aW9uVGFnOwogCX0KIAlmdW5jdGlvbiB2YWxpZGF0ZVBob25lNzM2NTI1MzAwMDAwMDY0MTE0NigpIHsKIAkgCXZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbJ0JpZ2luV2ViVG9SZWNvcmRGb3JtNzM2NTI1MzAwMDAwMDY0MTE0NiddLAogCSAJIGlzUmV0dXJuID0gdHJ1ZTsKIAkgCWZvcm0ucXVlcnlTZWxlY3RvckFsbCgnW2Z0eXBlPWRpYWxjb2RlXScpLmZvckVhY2goZnVuY3Rpb24ocGhvbmVFbGUpewogCSAJIAl2YXIgZGlhbENvZGUgPSBjb3VudHJpZXMuZmluZCgoe2lzb30pID0+IGlzbyA9PT0gd2luZG93WydwaCcrcGhvbmVFbGUubmFtZS5yZXBsYWNlQWxsKCcuJywgJ19fXycpLnJlcGxhY2VBbGwoJyAnLCAnX19fJykrJ0NvZGUnXSkuZGlhbCwKIAkgCSAJIGlzRXJyb3IgPSBmYWxzZSwKIAkgCSAJIHBoTXNnID0gJ0VudGVyIHZhbGlkIG51bWJlcnMnLAogCSAJIAkgcGhWYWwgPSBwaG9uZUVsZS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLnZhbHVlOwogCSAJIAlpZihwaFZhbCAhPT0gJycpIHsKIAkgCSAJaWYocGhvbmVFbGUuaGFzQXR0cmlidXRlKCdyZXN0X2FscGhhJykgJiYgcGhWYWwubWF0Y2goL15bMC05XSskLykgPT09IG51bGwpIHsKIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJIAlwaE1zZyA9ICdFbnRlciBvbmx5IG51bWJlcnMnOwogCSAJIAl9IGVsc2UgaWYocGhWYWwubWF0Y2goL15bMC05YS16QS1aKy4oKVwtO1xzXSskLykgPT09IG51bGwpIHsKIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJfQogCSAJIAlpZihpc0Vycm9yKSB7CiAJIAkgCSAJc2V0RXJyb3IocGhvbmVFbGUucHJldmlvdXNFbGVtZW50U2libGluZywgcGhNc2cpOwogCSAJIAkgCWlzUmV0dXJuID0gZmFsc2U7CiAJIAkgCX0gZWxzZSB7CiAJIAkgCSAJcGhvbmVFbGUudmFsdWUgPSBkaWFsQ29kZSArIHBob25lRWxlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcudmFsdWU7CiAJIAkgCX0KIAkgCSAJfQogCSAJfSk7CiAJIAlyZXR1cm4gaXNSZXR1cm47CiAJfQoKCQlmdW5jdGlvbiBjaGVja01hbmRhdG9yeTczNjUyNTMwMDAwMDA2NDExNDYoKSB7CgkJdmFyIGlzUmV0dXJuID0gdHJ1ZTsKCQl2YXIgaXNOb3RDYXB0Y2hhID0gZmFsc2U7CgkJZm9yKGk9MDtpPG1uZEZpZWxkczczNjUyNTMwMDAwMDA2NDExNDYubGVuZ3RoO2krKykgewoJCSAgdmFyIGZpZWxkT2JqPWRvY3VtZW50LmZvcm1zWydCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnXVttbmRGaWVsZHM3MzY1MjUzMDAwMDAwNjQxMTQ2W2ldXTsKCQkgIGlmKGZpZWxkT2JqKSB7CgkJCWlmICgoKGZpZWxkT2JqLnZhbHVlKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpKS5sZW5ndGg9PTApIHsKCQkJCWlmKGZpZWxkT2JqLnR5cGUgPT0nZmlsZScpewoJCQkJCXNldEVycm9yKGZpZWxkT2JqLCAnUGxlYXNlIHNlbGVjdCBhIGZpbGUgdG8gdXBsb2FkLicpOyAKCQkJCQlpc1JldHVybiA9IGZhbHNlOwoJCQkJfQoJCQkJZWxzZSBpZihmaWVsZE9iai5nZXRBdHRyaWJ1dGUoJ2Z0eXBlJykgPT09ICdkaWFsY29kZScpewoJCQkJaWYoZmllbGRPYmoucHJldmlvdXNFbGVtZW50U2libGluZyAmJiBmaWVsZE9iai5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLnZhbHVlID09PSAnJykgewoJCQkJCXNldEVycm9yKGZpZWxkT2JqLnByZXZpb3VzRWxlbWVudFNpYmxpbmcsIGZsZExhbmdWYWw3MzY1MjUzMDAwMDAwNjQxMTQ2W2ldICsgJyBjYW5ub3QgYmUgZW1wdHknKTsKCQkJCQlpc1JldHVybiA9IGZhbHNlOwoJCQkJfQoJCQkJfQoJCQkJZWxzZSBpZihmaWVsZE9iai5nZXRBdHRyaWJ1dGUoJ2Z2YWxpZGF0ZScpID09PSAnZGF0ZScpewoJCQkJCWNvbnN0IGRhdGVJbnB1dHMgPSBbLi4uZmllbGRPYmoubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0JyldOwoJCQkJCWNvbnN0IGVtcHR5Q291bnQgPSBkYXRlSW5wdXRzLnJlZHVjZSgoY291bnQsIGlucHV0KSA9PiBjb3VudCArIChpbnB1dC52YWx1ZS50cmltKCkubGVuZ3RoID09PSAwID8gMSA6IDApLCAwKTsKCQkJCQlpZiAoZW1wdHlDb3VudCA+IDApIHsKCQkJCQkJc2V0RXJyb3IoZmllbGRPYmosIGVtcHR5Q291bnQgPT09IGRhdGVJbnB1dHMubGVuZ3RoID8gYCR7ZmxkTGFuZ1ZhbDczNjUyNTMwMDAwMDA2NDExNDZbaV19IGNhbm5vdCBiZSBlbXB0eWAgOiBgRW50ZXIgdmFsaWQgJHtmbGRMYW5nVmFsNzM2NTI1MzAwMDAwMDY0MTE0NltpXX1gKTsKCQkJCQkJaXNSZXR1cm4gPSBmYWxzZTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlzZXRFcnJvcihmaWVsZE9iaiwgZmxkTGFuZ1ZhbDczNjUyNTMwMDAwMDA2NDExNDZbaV0gKyAnIGNhbm5vdCBiZSBlbXB0eScpOwoJCQkJaXNSZXR1cm49IGZhbHNlOwoJCQkJfQoJCQl9ICBlbHNlIGlmKGZpZWxkT2JqLm5vZGVOYW1lPT0nU0VMRUNUJykgewoJCQkJaWYoZmllbGRPYmoub3B0aW9uc1tmaWVsZE9iai5zZWxlY3RlZEluZGV4XS52YWx1ZT09Jy1Ob25lLScpIHsKCQkJCXNldEVycm9yKGZpZWxkT2JqLCBmbGRMYW5nVmFsNzM2NTI1MzAwMDAwMDY0MTE0NltpXSArJyBjYW5ub3QgYmUgbm9uZS4nKTsKCQkJCWlzUmV0dXJuID0gZmFsc2U7CgkJCSAgIH0KCQkJfSBlbHNlIGlmKGZpZWxkT2JqLnR5cGUgPT0nY2hlY2tib3gnKXsKIAkgCSAJIGlmKGZpZWxkT2JqLmNoZWNrZWQgPT0gZmFsc2UpewoJCQkJc2V0RXJyb3IoZmllbGRPYmosICdQbGVhc2UgYWNjZXB0ICAnK2ZsZExhbmdWYWw3MzY1MjUzMDAwMDAwNjQxMTQ2W2ldKTsKCQkJCWlzUmV0dXJuPSBmYWxzZTsKCQkJCX0gCgkJCSB9CgkJICAgIH0KCQl9CgkJIGlzTm90Q2FwdGNoYSA9IHRydWU7CgkJaWYoIXZhbGlkYXRlRmllbGRzNzM2NTI1MzAwMDAwMDY0MTE0NigpKXtpc1JldHVybiA9IGZhbHNlO30KCQlpZighdmFsaWRhdGVQaG9uZTczNjUyNTMwMDAwMDA2NDExNDYoKSl7aXNSZXR1cm4gPSBmYWxzZTt9CgkJaWYoIXZhbGlkYXRlRGF0ZTczNjUyNTMwMDAwMDA2NDExNDYoKSl7aXNSZXR1cm4gPSBmYWxzZTt9CgkJaWYoIWlzUmV0dXJuKXsKCQkJdmFyIGVyckVsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWZpZWxkLWVycm9yJyk7CgkJCWlmKGVyckVsZSAmJiBlcnJFbGUubGVuZ3RoID4wKXsKCQkJCXZhciBpbnB1dEVsZSA9IGVyckVsZVswXS5jbG9zZXN0KCcud2YtZmllbGQnKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsKCQkJCWlmKGlucHV0RWxlICYmIGlucHV0RWxlLmxlbmd0aCA9PSAwKSB7CgkJCQkJaW5wdXRFbGUgPSBlcnJFbGVbMF0uY2xvc2VzdCgnLndmLWZpZWxkJykuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpOwoJCQkJfQoJCQkJaWYoaW5wdXRFbGUgJiYgaW5wdXRFbGUubGVuZ3RoID4gMCkgewoJCQkJCWlucHV0RWxlWzBdLmZvY3VzKCk7CgkJCQl9CgkJCX0KCQl9ZWxzZSBpZihpc05vdENhcHRjaGEpewoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybXN1Ym1pdCcpLmRpc2FibGVkID0gdHJ1ZTsKCQl9CgkJcmV0dXJuIGlzUmV0dXJuOyAKCQl9CgoJICAgCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbjczNjUyNTMwMDAwMDA2NDExNDZGcmFtZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CgkJCXRyeSB7CgkJCQl2YXIgZG9jID0gYXJndW1lbnRzWzBdLmN1cnJlbnRUYXJnZXQuY29udGVudFdpbmRvdy5kb2N1bWVudDsKCQkJCWlmKGRvYy5ib2R5LmNoaWxkRWxlbWVudENvdW50ICE9PSAwKSB7CgkJCQkJYXJndW1lbnRzWzBdLmN1cnJlbnRUYXJnZXQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CgkJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0JpZ2luV2ViVG9SZWNvcmRGb3JtUGFyZW50NzM2NTI1MzAwMDAwMDY0MTE0NicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgkJCQl9CgkJCX0gY2F0Y2ggKGVycm9yKSB7CgkJCQlhcmd1bWVudHNbMF0uY3VycmVudFRhcmdldC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCQkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdCaWdpbldlYlRvUmVjb3JkRm9ybVBhcmVudDczNjUyNTMwMDAwMDA2NDExNDYnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnCgkJCX0KCQl9KTsKIAkgdmFyIG11bHRpUGlja0ZpZWxkcz1bJ0NPTlRBQ1RDRjEyJ107IAogCSB2YXIgY291bnRyaWVzID0gW3snaXNvJzonYWYnLCdmbCc6JyYjMTI3NDYyJiMxMjc0Njc7JywnZHMnOidBZmdoYW5pc3RhbicsJ2RpYWwnOicrOTMnfSx7J2lzbyc6J2FsJywnZmwnOicmIzEyNzQ2MiYjMTI3NDczOycsJ2RzJzonQWxiYW5pYScsJ2RpYWwnOicrMzU1J30seydpc28nOidkeicsJ2ZsJzonJiMxMjc0NjUmIzEyNzQ4NzsnLCdkcyc6J0FsZ2VyaWEnLCdkaWFsJzonKzIxMyd9LHsnaXNvJzonYXMnLCdmbCc6JyYjMTI3NDYyJiMxMjc0ODA7JywnZHMnOidBbWVyaWNhbiBTYW1vYScsJ2RpYWwnOicrMTY4NCd9LHsnaXNvJzonYWQnLCdmbCc6JyYjMTI3NDYyJiMxMjc0NjU7JywnZHMnOidBbmRvcnJhJywnZGlhbCc6JyszNzYnfSx7J2lzbyc6J2FvJywnZmwnOicmIzEyNzQ2MiYjMTI3NDc2OycsJ2RzJzonQW5nb2xhJywnZGlhbCc6JysyNDQnfSx7J2lzbyc6J2FpJywnZmwnOicmIzEyNzQ2MiYjMTI3NDcwOycsJ2RzJzonQW5ndWlsbGEnLCdkaWFsJzonKzEyNjQnfSx7J2lzbyc6J2FxJywnZmwnOicmIzEyNzQ2MiYjMTI3NDc4OycsJ2RzJzonQW50YXJjdGljYScsJ2RpYWwnOicrNjcyJ30seydpc28nOidhZycsJ2ZsJzonJiMxMjc0NjImIzEyNzQ2ODsnLCdkcyc6J0FudGlndWEgJiBCYXJidWRhJywnZGlhbCc6JysxMjY4J30seydpc28nOidhcicsJ2ZsJzonJiMxMjc0NjImIzEyNzQ3OTsnLCdkcyc6J0FyZ2VudGluYScsJ2RpYWwnOicrNTQnfSx7J2lzbyc6J2FtJywnZmwnOicmIzEyNzQ2MiYjMTI3NDc0OycsJ2RzJzonQXJtZW5pYScsJ2RpYWwnOicrMzc0J30seydpc28nOidhdycsJ2ZsJzonJiMxMjc0NjImIzEyNzQ4NDsnLCdkcyc6J0FydWJhJywnZGlhbCc6JysyOTcnfSx7J2lzbyc6J2F1JywnZmwnOicmIzEyNzQ2MiYjMTI3NDgyOycsJ2RzJzonQXVzdHJhbGlhJywnZGlhbCc6Jys2MSd9LHsnaXNvJzonYXQnLCdmbCc6JyYjMTI3NDYyJiMxMjc0ODE7JywnZHMnOidBdXN0cmlhJywnZGlhbCc6Jys0Myd9LHsnaXNvJzonYXonLCdmbCc6JyYjMTI3NDYyJiMxMjc0ODc7JywnZHMnOidBemVyYmFpamFuJywnZGlhbCc6Jys5OTQnfSx7J2lzbyc6J2JzJywnZmwnOicmIzEyNzQ2MyYjMTI3NDgwOycsJ2RzJzonQmFoYW1hcycsJ2RpYWwnOicrMTI0Mid9LHsnaXNvJzonYmgnLCdmbCc6JyYjMTI3NDYzJiMxMjc0Njk7JywnZHMnOidCYWhyYWluJywnZGlhbCc6Jys5NzMnfSx7J2lzbyc6J2JkJywnZmwnOicmIzEyNzQ2MyYjMTI3NDY1OycsJ2RzJzonQmFuZ2xhZGVzaCcsJ2RpYWwnOicrODgwJ30seydpc28nOidiYicsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ2MzsnLCdkcyc6J0JhcmJhZG9zJywnZGlhbCc6JysxMjQ2J30seydpc28nOidieScsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ4NjsnLCdkcyc6J0JlbGFydXMnLCdkaWFsJzonKzM3NSd9LHsnaXNvJzonYmUnLCdmbCc6JyYjMTI3NDYzJiMxMjc0NjY7JywnZHMnOidCZWxnaXVtJywnZGlhbCc6JyszMid9LHsnaXNvJzonYnonLCdmbCc6JyYjMTI3NDYzJiMxMjc0ODc7JywnZHMnOidCZWxpemUnLCdkaWFsJzonKzUwMSd9LHsnaXNvJzonYmonLCdmbCc6JyYjMTI3NDYzJiMxMjc0NzE7JywnZHMnOidCZW5pbicsJ2RpYWwnOicrMjI5J30seydpc28nOidibScsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ3NDsnLCdkcyc6J0Jlcm11ZGEnLCdkaWFsJzonKzE0NDEnfSx7J2lzbyc6J2J0JywnZmwnOicmIzEyNzQ2MyYjMTI3NDgxOycsJ2RzJzonQmh1dGFuJywnZGlhbCc6Jys5NzUnfSx7J2lzbyc6J2JvJywnZmwnOicmIzEyNzQ2MyYjMTI3NDc2OycsJ2RzJzonQm9saXZpYScsJ2RpYWwnOicrNTkxJ30seydpc28nOidiYScsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ2MjsnLCdkcyc6J0Jvc25pYSBhbmQgSGVyemVnb3ZpbmEnLCdkaWFsJzonKzM4Nyd9LHsnaXNvJzonYncnLCdmbCc6JyYjMTI3NDYzJiMxMjc0ODQ7JywnZHMnOidCb3Rzd2FuYScsJ2RpYWwnOicrMjY3J30seydpc28nOididicsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ4MzsnLCdkcyc6J0JvdXZldCBJc2xhbmQnLCdkaWFsJzonKzQ3J30seydpc28nOidicicsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ3OTsnLCdkcyc6J0JyYXppbCcsJ2RpYWwnOicrNTUnfSx7J2lzbyc6J2lvJywnZmwnOicmIzEyNzQ3MCYjMTI3NDc2OycsJ2RzJzonQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5JywnZGlhbCc6JysyNDYnfSx7J2lzbyc6J3ZnJywnZmwnOicmIzEyNzQ4MyYjMTI3NDY4OycsJ2RzJzonQnJpdGlzaCBWaXJnaW4gSXNsYW5kcycsJ2RpYWwnOicrMTI4NCd9LHsnaXNvJzonYm4nLCdmbCc6JyYjMTI3NDYzJiMxMjc0NzU7JywnZHMnOidCcnVuZWknLCdkaWFsJzonKzY3Myd9LHsnaXNvJzonYmcnLCdmbCc6JyYjMTI3NDYzJiMxMjc0Njg7JywnZHMnOidCdWxnYXJpYScsJ2RpYWwnOicrMzU5J30seydpc28nOidiZicsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ2NzsnLCdkcyc6J0J1cmtpbmEgRmFzbycsJ2RpYWwnOicrMjI2J30seydpc28nOidiaScsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ3MDsnLCdkcyc6J0J1cnVuZGknLCdkaWFsJzonKzI1Nyd9LHsnaXNvJzona2gnLCdmbCc6JyYjMTI3NDcyJiMxMjc0Njk7JywnZHMnOidDYW1ib2RpYScsJ2RpYWwnOicrODU1J30seydpc28nOidjbScsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ3NDsnLCdkcyc6J0NhbWVyb29uJywnZGlhbCc6JysyMzcnfSx7J2lzbyc6J2NhJywnZmwnOicmIzEyNzQ2NCYjMTI3NDYyOycsJ2RzJzonQ2FuYWRhJywnZGlhbCc6JysxJ30seydpc28nOicnLCdmbCc6JyYjMTI3NDY0JiMxMjc0ODM7JywnZHMnOidDYXBlIFZlcmRlJywnZGlhbCc6JysyMzgnfSx7J2lzbyc6J2N2JywnZmwnOicmIzEyNzQ2MyYjMTI3NDc4OycsJ2RzJzonQ2FyaWJiZWFuIE5ldGhlcmxhbmRzJywnZGlhbCc6Jys1OTknfSx7J2lzbyc6J2t5JywnZmwnOicmIzEyNzQ3MiYjMTI3NDg2OycsJ2RzJzonQ2F5bWFuIElzbGFuZHMnLCdkaWFsJzonKzEzNDUnfSx7J2lzbyc6J2NmJywnZmwnOicmIzEyNzQ2NCYjMTI3NDY3OycsJ2RzJzonQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJywnZGlhbCc6JysyMzYnfSx7J2lzbyc6J3RkJywnZmwnOicmIzEyNzQ4MSYjMTI3NDY1OycsJ2RzJzonQ2hhZCcsJ2RpYWwnOicrMjM1J30seydpc28nOidjbCcsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ3MzsnLCdkcyc6J0NoaWxlJywnZGlhbCc6Jys1Nid9LHsnaXNvJzonY24nLCdmbCc6JyYjMTI3NDY0JiMxMjc0NzU7JywnZHMnOidDaGluYScsJ2RpYWwnOicrODYnfSx7J2lzbyc6J2N4JywnZmwnOicmIzEyNzQ2NCYjMTI3NDg1OycsJ2RzJzonQ2hyaXN0bWFzIElzbGFuZCcsJ2RpYWwnOicrNjEnfSx7J2lzbyc6J2NjJywnZmwnOicmIzEyNzQ2NCYjMTI3NDY0OycsJ2RzJzonQ29jb3MgKEtlZWxpbmcpIElzbGFuZCcsJ2RpYWwnOicrNjEnfSx7J2lzbyc6J2NvJywnZmwnOicmIzEyNzQ2NCYjMTI3NDc2OycsJ2RzJzonQ29sb21iaWEnLCdkaWFsJzonKzU3J30seydpc28nOidrbScsJ2ZsJzonJiMxMjc0NzImIzEyNzQ3NDsnLCdkcyc6J0NvbW9yb3MnLCdkaWFsJzonKzI2OSd9LHsnaXNvJzonY2cnLCdmbCc6JyYjMTI3NDY0JiMxMjc0Njg7JywnZHMnOidDb25nbyAtIEJyYXp6YXZpbGxlJywnZGlhbCc6JysyNDInfSx7J2lzbyc6J2NkJywnZmwnOicmIzEyNzQ2NCYjMTI3NDY1OycsJ2RzJzonQ29uZ28gLSBLaW5zaGFzYScsJ2RpYWwnOicrMjQzJ30seydpc28nOidjaycsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ3MjsnLCdkcyc6J0Nvb2sgSXNsYW5kcycsJ2RpYWwnOicrNjgyJ30seydpc28nOidjcicsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ3OTsnLCdkcyc6J0Nvc3RhIFJpY2EnLCdkaWFsJzonKzUwNid9LHsnaXNvJzonaHInLCdmbCc6JyYjMTI3NDY5JiMxMjc0Nzk7JywnZHMnOidDcm9hdGlhJywnZGlhbCc6JyszODUnfSx7J2lzbyc6J2N1JywnZmwnOicmIzEyNzQ2NCYjMTI3NDgyOycsJ2RzJzonQ3ViYScsJ2RpYWwnOicrNTMnfSx7J2lzbyc6J2N3JywnZmwnOicmIzEyNzQ2NCYjMTI3NDg0OycsJ2RzJzonQ3VyYcOnYW8nLCdkaWFsJzonKzU5OSd9LHsnaXNvJzonY3knLCdmbCc6JyYjMTI3NDY0JiMxMjc0ODY7JywnZHMnOidDeXBydXMnLCdkaWFsJzonKzM1Nyd9LHsnaXNvJzonY3onLCdmbCc6JyYjMTI3NDY0JiMxMjc0ODc7JywnZHMnOidDemVjaGlhJywnZGlhbCc6Jys0MjAnfSx7J2lzbyc6J2NpJywnZmwnOicmIzEyNzQ2NCYjMTI3NDcwOycsJ2RzJzonQ8O0dGUgZD9Jdm9pcmUnLCdkaWFsJzonKzIyNSd9LHsnaXNvJzonZGsnLCdmbCc6JyYjMTI3NDY1JiMxMjc0NzI7JywnZHMnOidEZW5tYXJrJywnZGlhbCc6Jys0NSd9LHsnaXNvJzonZGonLCdmbCc6JyYjMTI3NDY1JiMxMjc0NzE7JywnZHMnOidEamlib3V0aScsJ2RpYWwnOicrMjUzJ30seydpc28nOidkbScsJ2ZsJzonJiMxMjc0NjUmIzEyNzQ3NDsnLCdkcyc6J0RvbWluaWNhJywnZGlhbCc6JysxNzY3J30seydpc28nOidkbycsJ2ZsJzonJiMxMjc0NjUmIzEyNzQ3NjsnLCdkcyc6J0RvbWluaWNhbiBSZXB1YmxpYycsJ2RpYWwnOicrMSd9LHsnaXNvJzonZWMnLCdmbCc6JyYjMTI3NDY2JiMxMjc0NjQ7JywnZHMnOidFY3VhZG9yJywnZGlhbCc6Jys1OTMnfSx7J2lzbyc6J2VnJywnZmwnOicmIzEyNzQ2NiYjMTI3NDY4OycsJ2RzJzonRWd5cHQnLCdkaWFsJzonKzIwJ30seydpc28nOidzdicsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ4MzsnLCdkcyc6J0VsIFNhbHZhZG9yJywnZGlhbCc6Jys1MDMnfSx7J2lzbyc6J2dxJywnZmwnOicmIzEyNzQ2OCYjMTI3NDc4OycsJ2RzJzonRXF1YXRvcmlhbCBHdWluZWEnLCdkaWFsJzonKzI0MCd9LHsnaXNvJzonZXInLCdmbCc6JyYjMTI3NDY2JiMxMjc0Nzk7JywnZHMnOidFcml0cmVhJywnZGlhbCc6JysyOTEnfSx7J2lzbyc6J2VlJywnZmwnOicmIzEyNzQ2NiYjMTI3NDY2OycsJ2RzJzonRXN0b25pYScsJ2RpYWwnOicrMzcyJ30seydpc28nOidldCcsJ2ZsJzonJiMxMjc0NjYmIzEyNzQ4MTsnLCdkcyc6J0V0aGlvcGlhJywnZGlhbCc6JysyNTEnfSx7J2lzbyc6J2ZrJywnZmwnOicmIzEyNzQ2NyYjMTI3NDcyOycsJ2RzJzonRmFsa2xhbmQgSXNsYW5kcycsJ2RpYWwnOicrNTAwJ30seydpc28nOidmbycsJ2ZsJzonJiMxMjc0NjcmIzEyNzQ3NjsnLCdkcyc6J0Zhcm9lIElzbGFuZHMnLCdkaWFsJzonKzI5OCd9LHsnaXNvJzonZmonLCdmbCc6JyYjMTI3NDY3JiMxMjc0NzE7JywnZHMnOidGaWppJywnZGlhbCc6Jys2NzknfSx7J2lzbyc6J2ZpJywnZmwnOicmIzEyNzQ2NyYjMTI3NDcwOycsJ2RzJzonRmlubGFuZCcsJ2RpYWwnOicrMzU4J30seydpc28nOidmcicsJ2ZsJzonJiMxMjc0NjcmIzEyNzQ3OTsnLCdkcyc6J0ZyYW5jZScsJ2RpYWwnOicrMzMnfSx7J2lzbyc6J2dmJywnZmwnOicmIzEyNzQ2OCYjMTI3NDY3OycsJ2RzJzonRnJlbmNoIEd1aWFuYScsJ2RpYWwnOicrNTk0J30seydpc28nOidwZicsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ2NzsnLCdkcyc6J0ZyZW5jaCBQb2x5bmVzaWEnLCdkaWFsJzonKzY4OSd9LHsnaXNvJzondGYnLCdmbCc6JyYjMTI3NDgxJiMxMjc0Njc7JywnZHMnOidGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMnLCdkaWFsJzonKzI2Mid9LHsnaXNvJzonZ2EnLCdmbCc6JyYjMTI3NDY4JiMxMjc0NjI7JywnZHMnOidHYWJvbicsJ2RpYWwnOicrMjQxJ30seydpc28nOidnbScsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ3NDsnLCdkcyc6J0dhbWJpYScsJ2RpYWwnOicrMjIwJ30seydpc28nOidnZScsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ2NjsnLCdkcyc6J0dlb3JnaWEnLCdkaWFsJzonKzk5NSd9LHsnaXNvJzonZGUnLCdmbCc6JyYjMTI3NDY1JiMxMjc0NjY7JywnZHMnOidHZXJtYW55JywnZGlhbCc6Jys0OSd9LHsnaXNvJzonZ2gnLCdmbCc6JyYjMTI3NDY4JiMxMjc0Njk7JywnZHMnOidHaGFuYScsJ2RpYWwnOicrMjMzJ30seydpc28nOidnaScsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ3MDsnLCdkcyc6J0dpYnJhbHRhcicsJ2RpYWwnOicrMzUwJ30seydpc28nOidncicsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ3OTsnLCdkcyc6J0dyZWVjZScsJ2RpYWwnOicrMzAnfSx7J2lzbyc6J2dsJywnZmwnOicmIzEyNzQ2OCYjMTI3NDczOycsJ2RzJzonR3JlZW5sYW5kJywnZGlhbCc6JysyOTknfSx7J2lzbyc6J2dkJywnZmwnOicmIzEyNzQ2OCYjMTI3NDY1OycsJ2RzJzonR3JlbmFkYScsJ2RpYWwnOicrMTQ3Myd9LHsnaXNvJzonZ3AnLCdmbCc6JyYjMTI3NDY4JiMxMjc0Nzc7JywnZHMnOidHdWFkZWxvdXBlJywnZGlhbCc6Jys1OTAnfSx7J2lzbyc6J2d1JywnZmwnOicmIzEyNzQ2OCYjMTI3NDgyOycsJ2RzJzonR3VhbScsJ2RpYWwnOicrMTY3MSd9LHsnaXNvJzonZ3QnLCdmbCc6JyYjMTI3NDY4JiMxMjc0ODE7JywnZHMnOidHdWF0ZW1hbGEnLCdkaWFsJzonKzUwMid9LHsnaXNvJzonZ2cnLCdmbCc6JyYjMTI3NDY4JiMxMjc0Njg7JywnZHMnOidHdWVybnNleScsJ2RpYWwnOicrNDQnfSx7J2lzbyc6J2duJywnZmwnOicmIzEyNzQ2OCYjMTI3NDc1OycsJ2RzJzonR3VpbmVhJywnZGlhbCc6JysyMjQnfSx7J2lzbyc6J2d3JywnZmwnOicmIzEyNzQ2OCYjMTI3NDg0OycsJ2RzJzonR3VpbmVhLUJpc3NhdScsJ2RpYWwnOicrMjQ1J30seydpc28nOidneScsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ4NjsnLCdkcyc6J0d1eWFuYScsJ2RpYWwnOicrNTkyJ30seydpc28nOidodCcsJ2ZsJzonJiMxMjc0NjkmIzEyNzQ4MTsnLCdkcyc6J0hhaXRpJywnZGlhbCc6Jys1MDknfSx7J2lzbyc6J2htJywnZmwnOicmIzEyNzQ2OSYjMTI3NDc0OycsJ2RzJzonSGVhcmQgJiBNY0RvbmFsZCBJc2xhbmRzJywnZGlhbCc6Jys2NzInfSx7J2lzbyc6J2huJywnZmwnOicmIzEyNzQ2OSYjMTI3NDc1OycsJ2RzJzonSG9uZHVyYXMnLCdkaWFsJzonKzUwNCd9LHsnaXNvJzonaGsnLCdmbCc6JyYjMTI3NDY5JiMxMjc0NzI7JywnZHMnOidIb25nIEtvbmcnLCdkaWFsJzonKzg1Mid9LHsnaXNvJzonaHUnLCdmbCc6JyYjMTI3NDY5JiMxMjc0ODI7JywnZHMnOidIdW5nYXJ5JywnZGlhbCc6JyszNid9LHsnaXNvJzonaXMnLCdmbCc6JyYjMTI3NDcwJiMxMjc0ODA7JywnZHMnOidJY2VsYW5kJywnZGlhbCc6JyszNTQnfSx7J2lzbyc6J2luJywnZmwnOicmIzEyNzQ3MCYjMTI3NDc1OycsJ2RzJzonSW5kaWEnLCdkaWFsJzonKzkxJ30seydpc28nOidpZCcsJ2ZsJzonJiMxMjc0NzAmIzEyNzQ2NTsnLCdkcyc6J0luZG9uZXNpYScsJ2RpYWwnOicrNjInfSx7J2lzbyc6J2lyJywnZmwnOicmIzEyNzQ3MCYjMTI3NDc5OycsJ2RzJzonSXJhbicsJ2RpYWwnOicrOTgnfSx7J2lzbyc6J2lxJywnZmwnOicmIzEyNzQ3MCYjMTI3NDc4OycsJ2RzJzonSXJhcScsJ2RpYWwnOicrOTY0J30seydpc28nOidpZScsJ2ZsJzonJiMxMjc0NzAmIzEyNzQ2NjsnLCdkcyc6J0lyZWxhbmQnLCdkaWFsJzonKzM1Myd9LHsnaXNvJzonaW0nLCdmbCc6JyYjMTI3NDcwJiMxMjc0NzQ7JywnZHMnOidJc2xlIG9mIE1hbicsJ2RpYWwnOicrNDQnfSx7J2lzbyc6J2lsJywnZmwnOicmIzEyNzQ3MCYjMTI3NDczOycsJ2RzJzonSXNyYWVsJywnZGlhbCc6Jys5NzInfSx7J2lzbyc6J2l0JywnZmwnOicmIzEyNzQ3MCYjMTI3NDgxOycsJ2RzJzonSXRhbHknLCdkaWFsJzonKzM5J30seydpc28nOidqbScsJ2ZsJzonJiMxMjc0NzEmIzEyNzQ3NDsnLCdkcyc6J0phbWFpY2EnLCdkaWFsJzonKzE4NzYnfSx7J2lzbyc6J2pwJywnZmwnOicmIzEyNzQ3MSYjMTI3NDc3OycsJ2RzJzonSmFwYW4nLCdkaWFsJzonKzgxJ30seydpc28nOidqZScsJ2ZsJzonJiMxMjc0NzEmIzEyNzQ2NjsnLCdkcyc6J0plcnNleScsJ2RpYWwnOicrNDQnfSx7J2lzbyc6J2pvJywnZmwnOicmIzEyNzQ3MSYjMTI3NDc2OycsJ2RzJzonSm9yZGFuJywnZGlhbCc6Jys5NjInfSx7J2lzbyc6J2t6JywnZmwnOicmIzEyNzQ3MiYjMTI3NDg3OycsJ2RzJzonS2F6YWtoc3RhbicsJ2RpYWwnOicrNyd9LHsnaXNvJzona2UnLCdmbCc6JyYjMTI3NDcyJiMxMjc0NjY7JywnZHMnOidLZW55YScsJ2RpYWwnOicrMjU0J30seydpc28nOidraScsJ2ZsJzonJiMxMjc0NzImIzEyNzQ3MDsnLCdkcyc6J0tpcmliYXRpJywnZGlhbCc6Jys2ODYnfSx7J2lzbyc6J3hrJywnZmwnOicmIzEyNzQ4NSYjMTI3NDcyOycsJ2RzJzonS29zb3ZvJywnZGlhbCc6JyszODMnfSx7J2lzbyc6J2t3JywnZmwnOicmIzEyNzQ3MiYjMTI3NDg0OycsJ2RzJzonS3V3YWl0JywnZGlhbCc6Jys5NjUnfSx7J2lzbyc6J2tnJywnZmwnOicmIzEyNzQ3MiYjMTI3NDY4OycsJ2RzJzonS3lyZ3l6c3RhbicsJ2RpYWwnOicrOTk2J30seydpc28nOidsYScsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ2MjsnLCdkcyc6J0xhb3MnLCdkaWFsJzonKzg1Nid9LHsnaXNvJzonbHYnLCdmbCc6JyYjMTI3NDczJiMxMjc0ODM7JywnZHMnOidMYXR2aWEnLCdkaWFsJzonKzM3MSd9LHsnaXNvJzonbGInLCdmbCc6JyYjMTI3NDczJiMxMjc0NjM7JywnZHMnOidMZWJhbm9uJywnZGlhbCc6Jys5NjEnfSx7J2lzbyc6J2xzJywnZmwnOicmIzEyNzQ3MyYjMTI3NDgwOycsJ2RzJzonTGVzb3RobycsJ2RpYWwnOicrMjY2J30seydpc28nOidscicsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ3OTsnLCdkcyc6J0xpYmVyaWEnLCdkaWFsJzonKzIzMSd9LHsnaXNvJzonbHknLCdmbCc6JyYjMTI3NDczJiMxMjc0ODY7JywnZHMnOidMaWJ5YScsJ2RpYWwnOicrMjE4J30seydpc28nOidsaScsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ3MDsnLCdkcyc6J0xpZWNodGVuc3RlaW4nLCdkaWFsJzonKzQyMyd9LHsnaXNvJzonbHQnLCdmbCc6JyYjMTI3NDczJiMxMjc0ODE7JywnZHMnOidMaXRodWFuaWEnLCdkaWFsJzonKzM3MCd9LHsnaXNvJzonbHUnLCdmbCc6JyYjMTI3NDczJiMxMjc0ODI7JywnZHMnOidMdXhlbWJvdXJnJywnZGlhbCc6JyszNTInfSx7J2lzbyc6J21vJywnZmwnOicmIzEyNzQ3NCYjMTI3NDc2OycsJ2RzJzonTWFjYW8nLCdkaWFsJzonKzg1Myd9LHsnaXNvJzonbWsnLCdmbCc6JyYjMTI3NDc0JiMxMjc0NzI7JywnZHMnOidNYWNlZG9uaWEnLCdkaWFsJzonKzM4OSd9LHsnaXNvJzonbWcnLCdmbCc6JyYjMTI3NDc0JiMxMjc0Njg7JywnZHMnOidNYWRhZ2FzY2FyJywnZGlhbCc6JysyNjEnfSx7J2lzbyc6J213JywnZmwnOicmIzEyNzQ3NCYjMTI3NDg0OycsJ2RzJzonTWFsYXdpJywnZGlhbCc6JysyNjUnfSx7J2lzbyc6J215JywnZmwnOicmIzEyNzQ3NCYjMTI3NDg2OycsJ2RzJzonTWFsYXlzaWEnLCdkaWFsJzonKzYwJ30seydpc28nOidtdicsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ4MzsnLCdkcyc6J01hbGRpdmVzJywnZGlhbCc6Jys5NjAnfSx7J2lzbyc6J21sJywnZmwnOicmIzEyNzQ3NCYjMTI3NDczOycsJ2RzJzonTWFsaScsJ2RpYWwnOicrMjIzJ30seydpc28nOidtdCcsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ4MTsnLCdkcyc6J01hbHRhJywnZGlhbCc6JyszNTYnfSx7J2lzbyc6J21oJywnZmwnOicmIzEyNzQ3NCYjMTI3NDY5OycsJ2RzJzonTWFyc2hhbGwgSXNsYW5kcycsJ2RpYWwnOicrNjkyJ30seydpc28nOidtcScsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ3ODsnLCdkcyc6J01hcnRpbmlxdWUnLCdkaWFsJzonKzU5Nid9LHsnaXNvJzonbXInLCdmbCc6JyYjMTI3NDc0JiMxMjc0Nzk7JywnZHMnOidNYXVyaXRhbmlhJywnZGlhbCc6JysyMjInfSx7J2lzbyc6J211JywnZmwnOicmIzEyNzQ3NCYjMTI3NDgyOycsJ2RzJzonTWF1cml0aXVzJywnZGlhbCc6JysyMzAnfSx7J2lzbyc6J3l0JywnZmwnOicmIzEyNzQ4NiYjMTI3NDgxOycsJ2RzJzonTWF5b3R0ZScsJ2RpYWwnOicrMjYyJ30seydpc28nOidteCcsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ4NTsnLCdkcyc6J01leGljbycsJ2RpYWwnOicrNTInfSx7J2lzbyc6J2ZtJywnZmwnOicmIzEyNzQ2NyYjMTI3NDc0OycsJ2RzJzonTWljcm9uZXNpYScsJ2RpYWwnOicrNjkxJ30seydpc28nOidtZCcsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ2NTsnLCdkcyc6J01vbGRvdmEnLCdkaWFsJzonKzM3Myd9LHsnaXNvJzonbWMnLCdmbCc6JyYjMTI3NDc0JiMxMjc0NjQ7JywnZHMnOidNb25hY28nLCdkaWFsJzonKzM3Nyd9LHsnaXNvJzonbW4nLCdmbCc6JyYjMTI3NDc0JiMxMjc0NzU7JywnZHMnOidNb25nb2xpYScsJ2RpYWwnOicrOTc2J30seydpc28nOidtZScsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ2NjsnLCdkcyc6J01vbnRlbmVncm8nLCdkaWFsJzonKzM4Mid9LHsnaXNvJzonbXMnLCdmbCc6JyYjMTI3NDc0JiMxMjc0ODA7JywnZHMnOidNb250c2VycmF0JywnZGlhbCc6JysxNjY0J30seydpc28nOidtYScsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ2MjsnLCdkcyc6J01vcm9jY28nLCdkaWFsJzonKzIxMid9LHsnaXNvJzonbXonLCdmbCc6JyYjMTI3NDc0JiMxMjc0ODc7JywnZHMnOidNb3phbWJpcXVlJywnZGlhbCc6JysyNTgnfSx7J2lzbyc6J21tJywnZmwnOicmIzEyNzQ3NCYjMTI3NDc0OycsJ2RzJzonTXlhbm1hciAoQnVybWEpJywnZGlhbCc6Jys5NSd9LHsnaXNvJzonbmEnLCdmbCc6JyYjMTI3NDc1JiMxMjc0NjI7JywnZHMnOidOYW1pYmlhJywnZGlhbCc6JysyNjQnfSx7J2lzbyc6J25yJywnZmwnOicmIzEyNzQ3NSYjMTI3NDc5OycsJ2RzJzonTmF1cnUnLCdkaWFsJzonKzY3NCd9LHsnaXNvJzonbnAnLCdmbCc6JyYjMTI3NDc1JiMxMjc0Nzc7JywnZHMnOidOZXBhbCcsJ2RpYWwnOicrOTc3J30seydpc28nOidubCcsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ3MzsnLCdkcyc6J05ldGhlcmxhbmRzJywnZGlhbCc6JyszMSd9LHsnaXNvJzonbmMnLCdmbCc6JyYjMTI3NDc1JiMxMjc0NjQ7JywnZHMnOidOZXcgQ2FsZWRvbmlhJywnZGlhbCc6Jys2ODcnfSx7J2lzbyc6J256JywnZmwnOicmIzEyNzQ3NSYjMTI3NDg3OycsJ2RzJzonTmV3IFplYWxhbmQnLCdkaWFsJzonKzY0J30seydpc28nOiduaScsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ3MDsnLCdkcyc6J05pY2FyYWd1YScsJ2RpYWwnOicrNTA1J30seydpc28nOiduZScsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ2NjsnLCdkcyc6J05pZ2VyJywnZGlhbCc6JysyMjcnfSx7J2lzbyc6J25nJywnZmwnOicmIzEyNzQ3NSYjMTI3NDY4OycsJ2RzJzonTmlnZXJpYScsJ2RpYWwnOicrMjM0J30seydpc28nOidudScsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ4MjsnLCdkcyc6J05pdWUnLCdkaWFsJzonKzY4Myd9LHsnaXNvJzonbmYnLCdmbCc6JyYjMTI3NDc1JiMxMjc0Njc7JywnZHMnOidOb3Jmb2xrIElzbGFuZCcsJ2RpYWwnOicrNjcyJ30seydpc28nOidrcCcsJ2ZsJzonJiMxMjc0NzImIzEyNzQ3NzsnLCdkcyc6J05vcnRoIEtvcmVhJywnZGlhbCc6Jys4NTAnfSx7J2lzbyc6J21wJywnZmwnOicmIzEyNzQ3NCYjMTI3NDc3OycsJ2RzJzonTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzJywnZGlhbCc6JysxNjcwJ30seydpc28nOidubycsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ3NjsnLCdkcyc6J05vcndheScsJ2RpYWwnOicrNDcnfSx7J2lzbyc6J29tJywnZmwnOicmIzEyNzQ3NiYjMTI3NDc0OycsJ2RzJzonT21hbicsJ2RpYWwnOicrOTY4J30seydpc28nOidwaycsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ3MjsnLCdkcyc6J1Bha2lzdGFuJywnZGlhbCc6Jys5Mid9LHsnaXNvJzoncHcnLCdmbCc6JyYjMTI3NDc3JiMxMjc0ODQ7JywnZHMnOidQYWxhdScsJ2RpYWwnOicrNjgwJ30seydpc28nOidwcycsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ4MDsnLCdkcyc6J1BhbGVzdGluaWFuIFRlcnJpdG9yaWVzJywnZGlhbCc6Jys5NzAnfSx7J2lzbyc6J3BhJywnZmwnOicmIzEyNzQ3NyYjMTI3NDYyOycsJ2RzJzonUGFuYW1hJywnZGlhbCc6Jys1MDcnfSx7J2lzbyc6J3BnJywnZmwnOicmIzEyNzQ3NyYjMTI3NDY4OycsJ2RzJzonUGFwdWEgTmV3IEd1aW5lYScsJ2RpYWwnOicrNjc1J30seydpc28nOidweScsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ4NjsnLCdkcyc6J1BhcmFndWF5JywnZGlhbCc6Jys1OTUnfSx7J2lzbyc6J3BlJywnZmwnOicmIzEyNzQ3NyYjMTI3NDY2OycsJ2RzJzonUGVydScsJ2RpYWwnOicrNTEnfSx7J2lzbyc6J3BoJywnZmwnOicmIzEyNzQ3NyYjMTI3NDY5OycsJ2RzJzonUGhpbGlwcGluZXMnLCdkaWFsJzonKzYzJ30seydpc28nOidwbicsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ3NTsnLCdkcyc6J1BpdGNhaXJuIElzbGFuZHMnLCdkaWFsJzonKzY0J30seydpc28nOidwbCcsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ3MzsnLCdkcyc6J1BvbGFuZCcsJ2RpYWwnOicrNDgnfSx7J2lzbyc6J3B0JywnZmwnOicmIzEyNzQ3NyYjMTI3NDgxOycsJ2RzJzonUG9ydHVnYWwnLCdkaWFsJzonKzM1MSd9LHsnaXNvJzoncHInLCdmbCc6JyYjMTI3NDc3JiMxMjc0Nzk7JywnZHMnOidQdWVydG8gUmljbycsJ2RpYWwnOicrMSd9LHsnaXNvJzoncWEnLCdmbCc6JyYjMTI3NDc4JiMxMjc0NjI7JywnZHMnOidRYXRhcicsJ2RpYWwnOicrOTc0J30seydpc28nOidybycsJ2ZsJzonJiMxMjc0NzkmIzEyNzQ3NjsnLCdkcyc6J1JvbWFuaWEnLCdkaWFsJzonKzQwJ30seydpc28nOidydScsJ2ZsJzonJiMxMjc0NzkmIzEyNzQ4MjsnLCdkcyc6J1J1c3NpYScsJ2RpYWwnOicrNyd9LHsnaXNvJzoncncnLCdmbCc6JyYjMTI3NDc5JiMxMjc0ODQ7JywnZHMnOidSd2FuZGEnLCdkaWFsJzonKzI1MCd9LHsnaXNvJzoncmUnLCdmbCc6JyYjMTI3NDc5JiMxMjc0NjY7JywnZHMnOidSw6l1bmlvbicsJ2RpYWwnOicrMjYyJ30seydpc28nOid3cycsJ2ZsJzonJiMxMjc0ODQmIzEyNzQ4MDsnLCdkcyc6J1NhbW9hJywnZGlhbCc6Jys2ODUnfSx7J2lzbyc6J3NtJywnZmwnOicmIzEyNzQ4MCYjMTI3NDc0OycsJ2RzJzonU2FuIE1hcmlubycsJ2RpYWwnOicrMzc4J30seydpc28nOidzYScsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ2MjsnLCdkcyc6J1NhdWRpIEFyYWJpYScsJ2RpYWwnOicrOTY2J30seydpc28nOidzbicsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ3NTsnLCdkcyc6J1NlbmVnYWwnLCdkaWFsJzonKzIyMSd9LHsnaXNvJzoncnMnLCdmbCc6JyYjMTI3NDc5JiMxMjc0ODA7JywnZHMnOidTZXJiaWEnLCdkaWFsJzonKzM4MSd9LHsnaXNvJzonc2MnLCdmbCc6JyYjMTI3NDgwJiMxMjc0NjQ7JywnZHMnOidTZXljaGVsbGVzJywnZGlhbCc6JysyNDgnfSx7J2lzbyc6J3NsJywnZmwnOicmIzEyNzQ4MCYjMTI3NDczOycsJ2RzJzonU2llcnJhIExlb25lJywnZGlhbCc6JysyMzInfSx7J2lzbyc6J3NnJywnZmwnOicmIzEyNzQ4MCYjMTI3NDY4OycsJ2RzJzonU2luZ2Fwb3JlJywnZGlhbCc6Jys2NSd9LHsnaXNvJzonc3gnLCdmbCc6JyYjMTI3NDgwJiMxMjc0ODU7JywnZHMnOidTaW50IE1hYXJ0ZW4nLCdkaWFsJzonKzE3MjEnfSx7J2lzbyc6J3NrJywnZmwnOicmIzEyNzQ4MCYjMTI3NDcyOycsJ2RzJzonU2xvdmFraWEnLCdkaWFsJzonKzQyMSd9LHsnaXNvJzonc2knLCdmbCc6JyYjMTI3NDgwJiMxMjc0NzA7JywnZHMnOidTbG92ZW5pYScsJ2RpYWwnOicrMzg2J30seydpc28nOidzYicsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ2MzsnLCdkcyc6J1NvbG9tb24gSXNsYW5kcycsJ2RpYWwnOicrNjc3J30seydpc28nOidzbycsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ3NjsnLCdkcyc6J1NvbWFsaWEnLCdkaWFsJzonKzI1Mid9LHsnaXNvJzonemEnLCdmbCc6JyYjMTI3NDg3JiMxMjc0NjI7JywnZHMnOidTb3V0aCBBZnJpY2EnLCdkaWFsJzonKzI3J30seydpc28nOidncycsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ4MDsnLCdkcyc6J1NvdXRoIEdlb3JnaWEgJiBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzJywnZGlhbCc6Jys1MDAnfSx7J2lzbyc6J2tyJywnZmwnOicmIzEyNzQ3MiYjMTI3NDc5OycsJ2RzJzonU291dGggS29yZWEnLCdkaWFsJzonKzgyJ30seydpc28nOidzcycsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ4MDsnLCdkcyc6J1NvdXRoIFN1ZGFuJywnZGlhbCc6JysyMTEnfSx7J2lzbyc6J2VzJywnZmwnOicmIzEyNzQ2NiYjMTI3NDgwOycsJ2RzJzonU3BhaW4nLCdkaWFsJzonKzM0J30seydpc28nOidsaycsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ3MjsnLCdkcyc6J1NyaSBMYW5rYScsJ2RpYWwnOicrOTQnfSx7J2lzbyc6J2JsJywnZmwnOicmIzEyNzQ2MyYjMTI3NDczOycsJ2RzJzonU3QgQmFydGjDqWxlbXknLCdkaWFsJzonKzU5MCd9LHsnaXNvJzonc2gnLCdmbCc6JyYjMTI3NDgwJiMxMjc0Njk7JywnZHMnOidTdCBIZWxlbmEnLCdkaWFsJzonKzI5MCd9LHsnaXNvJzona24nLCdmbCc6JyYjMTI3NDcyJiMxMjc0NzU7JywnZHMnOidTdCBLaXR0cyAmIE5ldmlzJywnZGlhbCc6JysxODY5J30seydpc28nOidsYycsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ2NDsnLCdkcyc6J1N0IEx1Y2lhJywnZGlhbCc6JysxNzU4J30seydpc28nOidtZicsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ2NzsnLCdkcyc6J1N0IE1hcnRpbicsJ2RpYWwnOicrNTkwJ30seydpc28nOidwbScsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ3NDsnLCdkcyc6J1N0IFBpZXJyZSAmIE1pcXVlbG9uJywnZGlhbCc6Jys1MDgnfSx7J2lzbyc6J3ZjJywnZmwnOicmIzEyNzQ4MyYjMTI3NDY0OycsJ2RzJzonU3QgVmluY2VudCAmIEdyZW5hZGluZXMnLCdkaWFsJzonKzE3ODQnfSx7J2lzbyc6J3NkJywnZmwnOicmIzEyNzQ4MCYjMTI3NDY1OycsJ2RzJzonU3VkYW4nLCdkaWFsJzonKzI0OSd9LHsnaXNvJzonc3InLCdmbCc6JyYjMTI3NDgwJiMxMjc0Nzk7JywnZHMnOidTdXJpbmFtZScsJ2RpYWwnOicrNTk3J30seydpc28nOidzaicsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ3MTsnLCdkcyc6J1N2YWxiYXJkICYgSmFuIE1heWVuJywnZGlhbCc6Jys0Nyd9LHsnaXNvJzonc3onLCdmbCc6JyYjMTI3NDgwJiMxMjc0ODc7JywnZHMnOidTd2F6aWxhbmQnLCdkaWFsJzonKzI2OCd9LHsnaXNvJzonc2UnLCdmbCc6JyYjMTI3NDgwJiMxMjc0NjY7JywnZHMnOidTd2VkZW4nLCdkaWFsJzonKzQ2J30seydpc28nOidjaCcsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ2OTsnLCdkcyc6J1N3aXR6ZXJsYW5kJywnZGlhbCc6Jys0MSd9LHsnaXNvJzonc3knLCdmbCc6JyYjMTI3NDgwJiMxMjc0ODY7JywnZHMnOidTeXJpYScsJ2RpYWwnOicrOTYzJ30seydpc28nOidzdCcsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ4MTsnLCdkcyc6J1PDo28gVG9tw6kgJiBQcsOtbmNpcGUnLCdkaWFsJzonKzIzOSd9LHsnaXNvJzondHcnLCdmbCc6JyYjMTI3NDgxJiMxMjc0ODQ7JywnZHMnOidUYWl3YW4nLCdkaWFsJzonKzg4Nid9LHsnaXNvJzondGonLCdmbCc6JyYjMTI3NDgxJiMxMjc0NzE7JywnZHMnOidUYWppa2lzdGFuJywnZGlhbCc6Jys5OTInfSx7J2lzbyc6J3R6JywnZmwnOicmIzEyNzQ4MSYjMTI3NDg3OycsJ2RzJzonVGFuemFuaWEnLCdkaWFsJzonKzI1NSd9LHsnaXNvJzondGgnLCdmbCc6JyYjMTI3NDgxJiMxMjc0Njk7JywnZHMnOidUaGFpbGFuZCcsJ2RpYWwnOicrNjYnfSx7J2lzbyc6J3RsJywnZmwnOicmIzEyNzQ4MSYjMTI3NDczOycsJ2RzJzonVGltb3ItTGVzdGUnLCdkaWFsJzonKzY3MCd9LHsnaXNvJzondGcnLCdmbCc6JyYjMTI3NDgxJiMxMjc0Njg7JywnZHMnOidUb2dvJywnZGlhbCc6JysyMjgnfSx7J2lzbyc6J3RrJywnZmwnOicmIzEyNzQ4MSYjMTI3NDcyOycsJ2RzJzonVG9rZWxhdScsJ2RpYWwnOicrNjkwJ30seydpc28nOid0bycsJ2ZsJzonJiMxMjc0ODEmIzEyNzQ3NjsnLCdkcyc6J1RvbmdhJywnZGlhbCc6Jys2NzYnfSx7J2lzbyc6J3R0JywnZmwnOicmIzEyNzQ4MSYjMTI3NDgxOycsJ2RzJzonVHJpbmlkYWQgJiBUb2JhZ28nLCdkaWFsJzonKzE4NjgnfSx7J2lzbyc6J3RuJywnZmwnOicmIzEyNzQ4MSYjMTI3NDc1OycsJ2RzJzonVHVuaXNpYScsJ2RpYWwnOicrMjE2J30seydpc28nOid0cicsJ2ZsJzonJiMxMjc0ODEmIzEyNzQ3OTsnLCdkcyc6J1R1cmtleScsJ2RpYWwnOicrOTAnfSx7J2lzbyc6J3RtJywnZmwnOicmIzEyNzQ4MSYjMTI3NDc0OycsJ2RzJzonVHVya21lbmlzdGFuJywnZGlhbCc6Jys5OTMnfSx7J2lzbyc6J3RjJywnZmwnOicmIzEyNzQ4MSYjMTI3NDY0OycsJ2RzJzonVHVya3MgJiBDYWljb3MgSXNsYW5kcycsJ2RpYWwnOicrMSd9LHsnaXNvJzondHYnLCdmbCc6JyYjMTI3NDgxJiMxMjc0ODM7JywnZHMnOidUdXZhbHUnLCdkaWFsJzonKzY4OCd9LHsnaXNvJzondW0nLCdmbCc6JyYjMTI3NDgyJiMxMjc0NzQ7JywnZHMnOidVUyBPdXRseWluZyBJc2xhbmRzJywnZGlhbCc6JysxJ30seydpc28nOid2aScsJ2ZsJzonJiMxMjc0ODMmIzEyNzQ3MDsnLCdkcyc6J1VTIFZpcmdpbiBJc2xhbmRzJywnZGlhbCc6JysxMzQwJ30seydpc28nOid1ZycsJ2ZsJzonJiMxMjc0ODImIzEyNzQ2ODsnLCdkcyc6J1VnYW5kYScsJ2RpYWwnOicrMjU2J30seydpc28nOid1YScsJ2ZsJzonJiMxMjc0ODImIzEyNzQ2MjsnLCdkcyc6J1VrcmFpbmUnLCdkaWFsJzonKzM4MCd9LHsnaXNvJzonYWUnLCdmbCc6JyYjMTI3NDYyJiMxMjc0NjY7JywnZHMnOidVbml0ZWQgQXJhYiBFbWlyYXRlcycsJ2RpYWwnOicrOTcxJ30seydpc28nOidnYicsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ2MzsnLCdkcyc6J1VuaXRlZCBLaW5nZG9tJywnZGlhbCc6Jys0NCd9LHsnaXNvJzondXMnLCdmbCc6JyYjMTI3NDgyJiMxMjc0ODA7JywnZHMnOidVbml0ZWQgU3RhdGVzJywnZGlhbCc6JysxJ30seydpc28nOid1eScsJ2ZsJzonJiMxMjc0ODImIzEyNzQ4NjsnLCdkcyc6J1VydWd1YXknLCdkaWFsJzonKzU5OCd9LHsnaXNvJzondXonLCdmbCc6JyYjMTI3NDgyJiMxMjc0ODc7JywnZHMnOidVemJla2lzdGFuJywnZGlhbCc6Jys5OTgnfSx7J2lzbyc6J3Z1JywnZmwnOicmIzEyNzQ4MyYjMTI3NDgyOycsJ2RzJzonVmFudWF0dScsJ2RpYWwnOicrNjc4J30seydpc28nOid2YScsJ2ZsJzonJiMxMjc0ODMmIzEyNzQ2MjsnLCdkcyc6J1ZhdGljYW4gQ2l0eScsJ2RpYWwnOicrMzc5J30seydpc28nOid2ZScsJ2ZsJzonJiMxMjc0ODMmIzEyNzQ2NjsnLCdkcyc6J1ZlbmV6dWVsYScsJ2RpYWwnOicrNTgnfSx7J2lzbyc6J3ZuJywnZmwnOicmIzEyNzQ4MyYjMTI3NDc1OycsJ2RzJzonVmlldG5hbScsJ2RpYWwnOicrODQnfSx7J2lzbyc6J3dmJywnZmwnOicmIzEyNzQ4NCYjMTI3NDY3OycsJ2RzJzonV2FsbGlzICYgRnV0dW5hJywnZGlhbCc6Jys2ODEnfSx7J2lzbyc6J2VoJywnZmwnOicmIzEyNzQ2NiYjMTI3NDY5OycsJ2RzJzonV2VzdGVybiBTYWhhcmEnLCdkaWFsJzonKzIxMid9LHsnaXNvJzoneWUnLCdmbCc6JyYjMTI3NDg2JiMxMjc0NjY7JywnZHMnOidZZW1lbicsJ2RpYWwnOicrOTY3J30seydpc28nOid6bScsJ2ZsJzonJiMxMjc0ODcmIzEyNzQ3NDsnLCdkcyc6J1phbWJpYScsJ2RpYWwnOicrMjYwJ30seydpc28nOid6dycsJ2ZsJzonJiMxMjc0ODcmIzEyNzQ4NDsnLCdkcyc6J1ppbWJhYndlJywnZGlhbCc6JysyNjMnfSx7J2lzbyc6J2F4JywnZmwnOicmIzEyNzQ2MiYjMTI3NDg1OycsJ2RzJzonw4VsYW5kIElzbGFuZHMnLCdkaWFsJzonKzY3Mid9XQk7CiAJY291bnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGNvdW50cnkpewogCSAJY291bnRyeS5yZWYgPSBjb3VudHJ5LmRzICsgJyAnICsgY291bnRyeS5kaWFsOwogCX0pOwogCSB2YXIgc2luZ2xlU2VsZWN0RHJwRGF0YSA9IHsKIAkgCWRyb3Bkb3duSXRlbXM6IGNvdW50cmllcywKIAkgCWRpc3BsYXlMYWJlbDE6ICdkcycsCiAJIAlkaXNwbGF5TGFiZWwyOiAnZGlhbCcsCiAJIAlzZWFyY2hWYWx1ZTogJ3JlZicsCiAJIAlzaG93SW5TZWxlY3Rpb246IFsnZGlzcGxheUxhYmVsMiddCiAJIH07CiAJIHZhciBwaENPTlRBQ1RDRjEyQ29kZSA9ICdmaW5kSVAnOwogCWNyZWF0ZVNpbmdsZVNlbGVjdERycCgncGhDT05UQUNUQ0YxMicsIHNpbmdsZVNlbGVjdERycERhdGEpOwogCWZ1bmN0aW9uIHNldHVwUGhvbmVGbGRJUCgpIHsKIAkgCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpc1Bob25lPXRydWVdJykuZm9yRWFjaChmdW5jdGlvbihlbGUpewogCSAJIAlpZihlbGUuaGFzQXR0cmlidXRlKCdmaW5kaXAnKSkgewogCSAJIAkgCXdpbmRvd1tlbGUuaWQrJ0NvZGUnXSA9IGxvY2FsQ29kZTsKIAkgCSAJfQogCSAJIAlzZXRTZWxlY3RlZE9wdGlvbihlbGUucXVlcnlTZWxlY3RvcignW2lzbz0nICsgd2luZG93W2VsZS5pZCArICdDb2RlJ10gKyAnXScpLCBlbGUpOwogCSAJfSk7CiAJfQogCXZhciBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCksCiAJIGRhdGVGaWVsZCwKIAkgc2VsZWN0ZWREYXRlRmllbGQsCiAJIHNob3J0TW9udGggPSBbJ2phbicsICdmZWInLCAnbWFyJywgJ2FwcicsICdtYXknLCAnanVuJywgJ2p1bCcsICdhdWcnLCAnc2VwJywgJ29jdCcsICdub3YnLCAnZGVjJ10sCiAJIGxvbmdNb250aCA9IFsnamFudWFyeScsICdmZWJydWFyeScsICdtYXJjaCcsICdhcHJpbCcsICdtYXknLCAnanVuZScsICdqdWx5JywgJ2F1Z3VzdCcsICdzZXB0ZW1iZXInLCAnb2N0b2JlcicsICdub3ZlbWJlcicsICdkZWNlbWJlciddLAogCSBjYWxlbmRhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3Zi1jYWxlbmRlci1wb3B1cCcpLAogCSBwcmV2WWVhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3Zi1jYWxlbmRhci1wcmV2WWVhci1pY29uJyksCiAJIHByZXZNb250aCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3Zi1jYWxlbmRhci1wcmV2TW9udGgtaWNvbicpLAogCSBuZXh0TW9udGggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2YtY2FsZW5kYXItbmV4dE1vbnRoLWljb24nKSwKIAkgbmV4dFllYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2YtY2FsZW5kYXItbmV4dFllYXItaWNvbicpLAogCSBtb250aFllYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2YtY2FsZW5kYXItbW9udGhZZWFyJyksCiAJIGNhbGVuZGFyQm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3Zi1jYWxlbmRhci1ib2R5JyksCiAJIHRvZGF5QnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3dmLWNhbGVuZGFyLXRvZGF5LWJ0bicpLAogCSBkdW1teUVsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kdW1teS1kaXYnKSwKIAkgd2Vla1N0YXJ0RGF5ID0gMDsKIAlpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRhdGUtaW5wdXQtY29udGFpbmVyJykpIHsKIAkgCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kYXRlLWlucHV0LWNvbnRhaW5lcicpLmZvckVhY2goZWxlID0+IHsKIAkgCSAJdmFyIGRhdGVGb3JtYXQgPSBlbGUuZGF0YXNldC5mb3JtYXQudG9VcHBlckNhc2UoKSwKIAkgCSAJIHllYXJPYmogPSB7IHBsYWNlaG9sZGVyOiBkYXRlRm9ybWF0LmluZGV4T2YoJ1lZWVknKSA+IC0xID8gJ1lZWVknIDogJ1lZJywgbWF4TGVuZ3RoOiBkYXRlRm9ybWF0LmluZGV4T2YoJ1lZWVknKSA+IC0xID8gNCA6IDIsIG1heFdpZHRoOiBnZXRQbGFjZWhvbGRlcldpZHRoKGRhdGVGb3JtYXQuaW5kZXhPZignWVlZWScpID4gLTEgPyAnWVlZWScgOiAnWVknKSwgaWQ6ICd5ZWFySW5wdXQnLCB0eXBlOiAneWVhcicgfSwKIAkgCSAJIG1vbnRoT2JqID0gZ2V0TW9udGhPYmooZGF0ZUZvcm1hdCk7CiAJIAkgCSBkYXlPYmogPSB7IHBsYWNlaG9sZGVyOiBkYXRlRm9ybWF0LmluZGV4T2YoJ0REJykgPiAtMSA/ICdERCcgOiAnRCcsIG1heExlbmd0aDogMiwgbWF4V2lkdGg6IGdldFBsYWNlaG9sZGVyV2lkdGgoZGF0ZUZvcm1hdC5pbmRleE9mKCdERCcpID4gLTEgPyAnREQnIDogJ0QnKSwgaWQ6ICdkYXlJbnB1dCcsIHR5cGU6ICdkYXknIH07CiAJIAkgCWlmIChbJ1lZWVkvTU0vREQnLCAnWVlZWS1NTS1ERCcsICdZWVlZLk1NLkREJywgJ1lZWVkgTU0gREQnLCAnWVkvTU0vREQnLCAnWVktTU0tREQnLCAnWVkuTS5EJywgJ1lZLU0tRCcsICdZWS4gTS4gRCcsICdZWVlZL00vRCcsICdZWVlZLk1NLkRELicsICdZWVlZLiBNTS4gREQnLCAnWVlZWS5ERC5NTScsICdZWVlZ5bm0TU3mnIhEROaXpScsICdZWS5ELk0nXS5pbmNsdWRlcyhkYXRlRm9ybWF0KSkgewogCSAJIAkgCXNldElucHV0c0ZvckRhdGVGb3JtYXQoZWxlLCBbeWVhck9iaiwgbW9udGhPYmosIGRheU9ial0sIGdldFNlcGFyYXRvcnMoZGF0ZUZvcm1hdCkpOwogCSAJIAl9IGVsc2UgaWYgKFsnTU0vREQvWVlZWScsICdNTS1ERC1ZWVlZJywgJ01NLkRELllZWVknLCAnTU0gREQgWVlZWScsICdNTU1NIEQsIFlZWVknLCAnTU1NLURELVlZWVknLCAnTU1NIEQsIFlZWVknLCAnTU0tREQtWVknLCAnTU0vREQvWVknLCAnTS9ERC9ZWScsICdNTU0gREQsIFlZWVknXS5pbmNsdWRlcyhkYXRlRm9ybWF0KSkgewogCSAJIAkgCXNldElucHV0c0ZvckRhdGVGb3JtYXQoZWxlLCBbbW9udGhPYmosIGRheU9iaiwgeWVhck9ial0sIGdldFNlcGFyYXRvcnMoZGF0ZUZvcm1hdCkpOwogCSAJIAl9IGVsc2UgaWYgKFsnREQvTU0vWVknLCAnREQtTU0tWVlZWScsICdERC9NTS9ZWVlZJywgJ0RELk1NLllZWVknLCAnREQgTU0gWVlZWScsICdERC1NTS1ZWScsICdERC5NTS5ZWScsICdELk1NLllZJywgJ0QtTS1ZWScsICdEL00vWVknLCAnRC5NLllZJywgJ0QtTS1ZWVlZJywgJ0REIE1NTSwgWVlZWScsICdELk0uWVkuJywgJ0QvTS9ZWVlZJywgJ0QuTS5ZWVlZJywgJ0QuIE0uIFlZWVkuJywgJ0QuIE0uIFlZWVknLCAnRCBNTU0sIFlZWVknLCAnRC4gTU1NTSBZWVlZJywgJ0RELk1NLllZWVkuJywgJ0RELk1NLllZLiddLmluY2x1ZGVzKGRhdGVGb3JtYXQpKSB7CiAJIAkgCSAJc2V0SW5wdXRzRm9yRGF0ZUZvcm1hdChlbGUsIFtkYXlPYmosIG1vbnRoT2JqLCB5ZWFyT2JqXSwgZ2V0U2VwYXJhdG9ycyhkYXRlRm9ybWF0KSk7CiAJIAkgCX0KIAkgCSAJZWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAlpZiAoY2FsZW5kYXIuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnIHx8IGNhbGVuZGFyLnN0eWxlLmRpc3BsYXkgPT09ICcnIHx8IGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3dmLWZpZWxkLWl0ZW0tZGF0ZScpKSB7CiAJIAkgCSAJc2VsZWN0ZWREYXRlRmllbGQgPSBlbGU7CiAJIAkgCW9wZW5DYWxlbmRhcigpOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCXNlbGVjdGVkRGF0ZUZpZWxkID0gbnVsbDsKIAkgCSAJIAljbG9zZUNhbGVuZGFyKCk7CiAJIAkgCX0KIAkgCSAJfSk7CiAJIAkgCX0pOwogCSAJcHJldk1vbnRoLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAlkYXRlRmllbGQuc2V0TW9udGgoZGF0ZUZpZWxkLmdldE1vbnRoKCkgLSAxKTsKIAkgCSAJcmVuZGVyQ2FsZW5kYXIoZGF0ZUZpZWxkKTsKIAkgCX0pOwogCSAJbmV4dE1vbnRoLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAlsZXQgY3VycmVudERheSA9IGRhdGVGaWVsZC5nZXREYXRlKCk7CiAJIAkgCWRhdGVGaWVsZC5zZXRNb250aChkYXRlRmllbGQuZ2V0TW9udGgoKSArIDEpOwogCSAJIAlpZiAoZGF0ZUZpZWxkLmdldERhdGUoKSAhPT0gY3VycmVudERheSkgewogCSAJIAkgCWRhdGVGaWVsZC5zZXREYXRlKDApOwogCSAJIAl9CiAJIAkgCXJlbmRlckNhbGVuZGFyKGRhdGVGaWVsZCk7CiAJIAl9KTsKIAkgCXByZXZZZWFyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAlkYXRlRmllbGQuc2V0RnVsbFllYXIoZGF0ZUZpZWxkLmdldEZ1bGxZZWFyKCkgLSAxKTsKIAkgCSAJcmVuZGVyQ2FsZW5kYXIoZGF0ZUZpZWxkKTsKIAkgCX0pOwogCSAJbmV4dFllYXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAJIAkgCWRhdGVGaWVsZC5zZXRGdWxsWWVhcihkYXRlRmllbGQuZ2V0RnVsbFllYXIoKSArIDEpOwogCSAJIAlyZW5kZXJDYWxlbmRhcihkYXRlRmllbGQpOwogCSAJfSk7CiAJIAl0b2RheUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKIAkgCSAJZGF0ZUZpZWxkID0gbmV3IERhdGUoKTsKIAkgCSAJcmVuZGVyQ2FsZW5kYXIobmV3IERhdGUoKSk7CiAJIAl9KTsKIAkgCWZ1bmN0aW9uIGdldE1vbnRoT2JqKGRhdGVGb3JtYXQpIHsKIAkgCSAJdmFyIG1heFdpZHRoID0gJycsIHBsYWNlaG9sZGVyID0gJ00nLCBtYXhMZW5ndGggPSAyLCBpc1N0cmluZyA9IGZhbHNlLCBtaW5XaWR0aCA9ICcnLCB3aWR0aCA9ICcnOwogCSAJIAlpZiAoZGF0ZUZvcm1hdC5pbmRleE9mKCdNTU1NJykgPiAtMSkgewogCSAJIAkgCXBsYWNlaG9sZGVyID0gJ01NTU0nOwogCSAJIAkgCW1heExlbmd0aCA9IDk7CiAJIAkgCSAJaXNTdHJpbmcgPSB0cnVlOwogCSAJIAkgCW1heFdpZHRoID0gJzc1cHgnOwogCSAJIAkgCXdpZHRoID0gbWF4V2lkdGggPSBnZXRQbGFjZWhvbGRlcldpZHRoKHBsYWNlaG9sZGVyKTsKIAkgCSAJfSBlbHNlIGlmIChkYXRlRm9ybWF0LmluZGV4T2YoJ01NTScpID4gLTEpIHsKIAkgCSAJIAlwbGFjZWhvbGRlciA9ICdNTU0nOwogCSAJIAkgCW1heExlbmd0aCA9IDM7CiAJIAkgCSAJaXNTdHJpbmcgPSB0cnVlOwogCSAJIAkgCXdpZHRoID0gbWF4V2lkdGggPSBnZXRQbGFjZWhvbGRlcldpZHRoKHBsYWNlaG9sZGVyKTsKIAkgCSAJIAltaW5XaWR0aCA9ICcyMHB4JzsKIAkgCSAJfSBlbHNlIGlmIChkYXRlRm9ybWF0LmluZGV4T2YoJ01NJykgPiAtMSkgewogCSAJIAkgCXBsYWNlaG9sZGVyID0gJ01NJzsKIAkgCSAJIAltYXhXaWR0aCA9IGdldFBsYWNlaG9sZGVyV2lkdGgocGxhY2Vob2xkZXIpOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCW1heFdpZHRoID0gJzE2cHgnOwogCSAJIAl9CiAJIAkgCXJldHVybiB7IHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgbWF4TGVuZ3RoOiBtYXhMZW5ndGgsIG1heFdpZHRoOiBtYXhXaWR0aCwgbWluV2lkdGg6IG1pbldpZHRoLCB3aWR0aDogd2lkdGgsIGlkOiAnbW9udGhJbnB1dCcsIHR5cGU6ICdtb250aCcsIGlzU3RyaW5nOiBpc1N0cmluZyB9CiAJIAl9CiAJIAlmdW5jdGlvbiBnZXRQbGFjZWhvbGRlcldpZHRoKHBsYWNlaG9sZGVyKSB7CiAJIAkgCWlmKCFkdW1teUVsZSkge2R1bW15RWxlID0gZG9jdW1lbnQuZm9ybXNbJ0JpZ2luV2ViVG9SZWNvcmRGb3JtNzM2NTI1MzAwMDAwMDY0MTE0NiddLnF1ZXJ5U2VsZWN0b3IoJy5kdW1teS1kaXYnKTt9CiAJIAkgCWR1bW15RWxlLmlubmVySFRNTCA9IHBsYWNlaG9sZGVyOwogCSAJIAlyZXR1cm4gZHVtbXlFbGUub2Zmc2V0V2lkdGggKyAxICsgJ3B4JzsKIAkgCX0KIAkgCWZ1bmN0aW9uIHNldElucHV0c0ZvckRhdGVGb3JtYXQoZWxlLCBmb3JtYXRPYmosIHNlcGFyYXRvcnMpIHsKIAkgCSAJdmFyIGlucHV0cyA9IGVsZS5xdWVyeVNlbGVjdG9yQWxsKCcud2YtZmllbGQtaXRlbS1kYXRlJyk7CiAJIAkgCWZvcm1hdE9iai5tYXAoKG9iaiwgaW5kZXgpID0+IHsKIAkgCSAJaW5wdXRzW2luZGV4XS5pZCA9IG9iai5pZDsKIAkgCSAJaW5wdXRzW2luZGV4XS5wbGFjZWhvbGRlciA9IG9iai5wbGFjZWhvbGRlcjsKIAkgCSAJaW5wdXRzW2luZGV4XS5zdHlsZS5tYXhXaWR0aCA9IG9iai5tYXhXaWR0aDsKIAkgCSAJaW5wdXRzW2luZGV4XS5kYXRhc2V0LnR5cGUgPSBvYmoudHlwZTsKIAkgCSAJaWYgKG9iai5pc1N0cmluZykgewogCSAJIAkgCWlucHV0c1tpbmRleF0ubWF4TGVuZ3RoID0gb2JqLm1heExlbmd0aDsKIAkgCSAJIAlpbnB1dHNbaW5kZXhdLnN0eWxlLm1pbldpZHRoID0gb2JqLm1pbldpZHRoOwogCSAJIAkgCWlucHV0c1tpbmRleF0uc3R5bGUud2lkdGggPSBvYmoud2lkdGg7CiAJIAkgCX0KIAkgCSAJdmFsaWRhdGVBbmRGb3JtYXRJbnB1dChpbnB1dHNbaW5kZXhdLCBvYmoubWF4TGVuZ3RoLCBvYmoudHlwZSwgaW5wdXRzW2luZGV4ICsgMV0sIGlucHV0c1tpbmRleCAtIDFdLCBvYmopOwogCSAJIAl9KTsKIAkgCSAJZWxlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZXBhcmF0b3InKS5mb3JFYWNoKCh4LCBpbmRleCkgPT4geC5pbm5lckhUTUwgPSBzZXBhcmF0b3JzW2luZGV4XSk7CiAJIAl9CiAJIAlmdW5jdGlvbiB2YWxpZGF0ZUFuZEZvcm1hdElucHV0KGlucHV0LCBtYXgsIHR5cGUsIG5leHRJbnB1dCwgcHJldklucHV0LCBvYmopIHsKIAkgCSAJaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7CiAJIAkgCWlmICh0aGlzLnZhbHVlLmxlbmd0aCA9PSBtYXgpIHtvcGVuQ2FsZW5kYXIoKTt9CiAJIAkgCWxldCB2YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvXEQvZywgJycpOwogCSAJIAlpZiAob2JqLmlzU3RyaW5nKSB7CiAJIAkgCSAJdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvW15hLXpBLVpcc10vZywgJycpOwogCSAJIAlpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PSBtYXggJiYgbmV4dElucHV0KSB7bmV4dElucHV0LmZvY3VzKCk7IH0KIAkgCSAJaWYgKHRoaXMudmFsdWUpIHsKIAkgCSAJIAlkdW1teUVsZS5pbm5lckhUTUwgPSB0aGlzLnZhbHVlOwogCSAJIAkgCXRoaXMuc3R5bGUud2lkdGggPSBkdW1teUVsZS5vZmZzZXRXaWR0aCArIDUgKyAncHgnOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCXRoaXMuc3R5bGUud2lkdGggPSBvYmoud2lkdGg7CiAJIAkgCX0KIAkgCSAJcmV0dXJuOwogCSAJIAl9CiAJIAkgCWlmICh0eXBlID09PSAnZGF5JyAmJiBwYXJzZUludCh2YWx1ZSkgPiAzMSkge3ZhbHVlID0gJzMxJzt9CiAJIAkgCWlmICh0eXBlID09PSAnbW9udGgnICYmIHBhcnNlSW50KHZhbHVlKSA+IDEyKSB7dmFsdWUgPSAnMTInO30KIAkgCSAJaWYgKHZhbHVlKSB7dmFsdWUgPSBwYXJzZUludCh2YWx1ZSkgKyAnJzt9CiAJIAkgCWlmICh2YWx1ZSAhPSAnMCcgJiYgdmFsdWUubGVuZ3RoID09PSAxICYmIG1heCA9PT0gMiAmJiAhWydEJywgJ00nLCAnWVknXS5pbmNsdWRlcyh0aGlzLnBsYWNlaG9sZGVyKSkge3ZhbHVlID0gJzAnICsgdmFsdWU7fQogCSAJIAlpZiAodHlwZSA9PSAneWVhcicgJiYgdmFsdWUubGVuZ3RoID4gbWF4KSB7dmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgbWF4KTt9CiAJIAkgCXRoaXMudmFsdWUgPSB2YWx1ZTsKIAkgCSAJaWYgKCh2YWx1ZS5sZW5ndGggPT09IG1heCB8fCBbJ0QnLCAnTSddLmluY2x1ZGVzKHRoaXMucGxhY2Vob2xkZXIpKSAmJiBuZXh0SW5wdXQgJiYgKCh0eXBlID09PSAnZGF5JyAmJiBwYXJzZUludCh2YWx1ZSkgPiAzKSB8fCAodHlwZSA9PT0gJ21vbnRoJyAmJiBwYXJzZUludCh2YWx1ZSkgPiAxKSB8fCAodHlwZSA9PSAneWVhcicgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT0gbWF4KSkpIHsKIAkgCSAJIAluZXh0SW5wdXQuZm9jdXMoKTsKIAkgCSAJfQogCSAJIAl1cGRhdGVXaWR0aDczNjUyNTMwMDAwMDA2NDExNDYoaW5wdXQpOwogCSAJIAl9KTsKIAkgCSAJaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHsKIAkgCSAJIAlsZXQgdmFsdWUgPSB0aGlzLnZhbHVlOwogCSAJIAlpZiAodmFsdWUubGVuZ3RoID09PSAxICYmIG1heCA9PT0gMiAmJiAhWydEJywgJ00nXS5pbmNsdWRlcyh0aGlzLnBsYWNlaG9sZGVyKSkge3RoaXMudmFsdWUgPSAnMCcgKyB2YWx1ZTt9CiAJIAkgCX0pOwogCSAJIAlpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsKIAkgCSAJIAlpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnICYmIHRoaXMudmFsdWUgPT09ICcnICYmIHByZXZJbnB1dCkge3ByZXZJbnB1dC5mb2N1cygpO30KIAkgCSAJfSk7CiAJIAkgCX0KIAkgCWZ1bmN0aW9uIG9wZW5DYWxlbmRhcigpIHsKIAkgCSAJaWYgKHNlbGVjdGVkRGF0ZUZpZWxkKSB7CiAJIAkgCXZhciBtb250aFZhbHVlID0gJycsIGRheVZhbHVlID0gJycsIHllYXJWYWx1ZSA9ICcnOwogCSAJIAlzZWxlY3RlZERhdGVGaWVsZC5xdWVyeVNlbGVjdG9yQWxsKCcud2YtZmllbGQtaXRlbS1kYXRlJykuZm9yRWFjaCh4ID0+IHsKIAkgCSAJaWYgKHguZGF0YXNldC50eXBlID09ICdkYXknKSB7ZGF5VmFsdWUgPSB4LnZhbHVlO30KIAkgCSAJZWxzZSBpZiAoeC5kYXRhc2V0LnR5cGUgPT0gJ21vbnRoJykgewogCSAJIAkgCW1vbnRoVmFsdWUgPSB4LnZhbHVlOwogCSAJIAkgCWlmICh4LnBsYWNlaG9sZGVyID09ICdNTU0nIHx8IHgucGxhY2Vob2xkZXIgPT0gJ01NTU0nKSB7bW9udGhWYWx1ZSA9IGdldE1vbnRoVmFsdWUoeC52YWx1ZSwgeC5wbGFjZWhvbGRlciA9PSAnTU1NJyA/IHNob3J0TW9udGggOiBsb25nTW9udGgpfQogCSAJIAl9IGVsc2UgewogCSAJIAkgCXllYXJWYWx1ZSA9IHgudmFsdWU7CiAJIAkgCSAJaWYgKHgucGxhY2Vob2xkZXIgPT0gJ1lZJykge3llYXJWYWx1ZSA9IGdldENvcnJlY3RZZWFyKHgudmFsdWUpO30KIAkgCSAJfQogCSAJIAl9KTsKIAkgCSAJaWYgKHllYXJWYWx1ZSAmJiBtb250aFZhbHVlICYmIGRheVZhbHVlKSB7CiAJIAkgCSAJY3VycmVudERhdGUgPSBuZXcgRGF0ZShwYXJzZUludCh5ZWFyVmFsdWUpLCBwYXJzZUludChtb250aFZhbHVlKSAtIDEsIHBhcnNlSW50KGRheVZhbHVlKSk7CiAJIAkgCWlmKCEoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSA9PSBwYXJzZUludCh5ZWFyVmFsdWUpICYmIGN1cnJlbnREYXRlLmdldE1vbnRoKCkgPT0gcGFyc2VJbnQobW9udGhWYWx1ZSkgLSAxICYmIGN1cnJlbnREYXRlLmdldERhdGUoKSA9PSBwYXJzZUludChkYXlWYWx1ZSkpKSB7Y3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO30KIAkgCSAJfSBlbHNlIHtjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7fQogCSAJIAkgCWRhdGVGaWVsZCA9IG5ldyBEYXRlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY3VycmVudERhdGUpKSk7CiAJIAkgCXJlbmRlckNhbGVuZGFyKGN1cnJlbnREYXRlKTsKIAkgCSAJfQogCSAJfQogCSAJZnVuY3Rpb24gZ2V0TW9udGhWYWx1ZSh2YWx1ZSwgbW9udGhBcnIpIHsKIAkgCSAJdmFyIG1vbnRoID0gJyc7CiAJIAkgCWlmIChtb250aEFyci5pbmRleE9mKHZhbHVlLnRvTG93ZXJDYXNlKCkpID4gLTEpIHttb250aCA9IG1vbnRoQXJyLmluZGV4T2YodmFsdWUudG9Mb3dlckNhc2UoKSkgKyAxICsgJyc7fQogCSAJIAlyZXR1cm4gbW9udGg7CiAJIAl9CiAJIAlmdW5jdGlvbiBjbG9zZUNhbGVuZGFyKCkge2NhbGVuZGFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7fQogCSAJZnVuY3Rpb24gcmVuZGVyQ2FsZW5kYXIoZGF0ZSkgewogCSAJIAlsZXQgZmllbGRBdHRyID0gc2VsZWN0ZWREYXRlRmllbGQuZGF0YXNldCwKIAkgCSAJcmVzdHJpY3R0eXBlID0gZmllbGRBdHRyLnJlc3RyaWN0dHlwZSwKIAkgCSAJbWluRGF0ZSA9IGZpZWxkQXR0ci5yYW5nZWZyb20gPyBuZXcgRGF0ZShmaWVsZEF0dHIucmFuZ2Vmcm9tKS5zZXRIb3VycygwLCAwLCAwLCAwKSA6IG51bGwsCiAJIAkgCW1heERhdGUgPSBmaWVsZEF0dHIucmFuZ2V0byA/IG5ldyBEYXRlKGZpZWxkQXR0ci5yYW5nZXRvKS5zZXRIb3VycygwLCAwLCAwLCAwKSA6IG51bGwsCiAJIAkgCWRheXNUb1Jlc3RyaWN0ID0gZmllbGRBdHRyLnJlc3RyaWN0ZGF5cyA/IGZpZWxkQXR0ci5yZXN0cmljdGRheXMuc3BsaXQoJywnKS5tYXAoeCA9PiBwYXJzZUludCh4KSkgOiBbXTsKIAkgCSAJY2FsZW5kYXJCb2R5LmlubmVySFRNTCA9ICcnOwogCSAJIAljb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLAogCSAJIAltb250aCA9IGRhdGUuZ2V0TW9udGgoKSwKIAkgCSAJZGF5TmFtZXMgPSBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLAogCSAJIAlmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCksCiAJIAkgCWFkanVzdGVkRmlyc3REYXkgPSAoZmlyc3REYXlPZk1vbnRoIC0gd2Vla1N0YXJ0RGF5ICsgNykgJSA3LAogCSAJIAlsYXN0RGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpLAogCSAJIAlhZGp1c3RlZERheU5hbWVzID0gZGF5TmFtZXMuc2xpY2Uod2Vla1N0YXJ0RGF5KS5jb25jYXQoZGF5TmFtZXMuc2xpY2UoMCwgd2Vla1N0YXJ0RGF5KSk7CiAJIAkgCW1vbnRoWWVhci50ZXh0Q29udGVudCA9IGAke2RhdGUudG9Mb2NhbGVTdHJpbmcoJ2RlZmF1bHQnLCB7IG1vbnRoOiAnbG9uZycgfSl9ICR7eWVhcn1gOwogCSAJIAlhZGp1c3RlZERheU5hbWVzLm1hcCgoZGF5LCBpbmRleCkgPT4gY2FsZW5kYXIucXVlcnlTZWxlY3RvckFsbCgnLndmLWNhbGVuZGFyLWRheXMnKVtpbmRleF0uaW5uZXJIVE1MID0gZGF5KTsKIAkgCSAJaWYgKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAhPT0geWVhciB8fCBuZXcgRGF0ZSgpLmdldE1vbnRoKCkgIT09IG1vbnRoKSB7dG9kYXlCdG4uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7fQogCSAJIAllbHNlIHt0b2RheUJ0bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO30KIAkgCSAJZm9yIChsZXQgaSA9IDA7IGkgPCBhZGp1c3RlZEZpcnN0RGF5OyBpKyspIHsKIAkgCSAJIAljb25zdCBlbXB0eUNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIAkgCSAJIAljYWxlbmRhckJvZHkuYXBwZW5kQ2hpbGQoZW1wdHlDZWxsKTsKIAkgCSAJfQogCSAJIAlmb3IgKGxldCBkYXkgPSAxOyBkYXkgPD0gbGFzdERhdGU7IGRheSsrKSB7CiAJIAkgCWNvbnN0IGRhdGVDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAJIAkgCWNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTsKIAkgCSAJY29uc3QgZGF5T2ZXZWVrID0gZGF0ZU9iai5nZXREYXkoKTsKIAkgCSAJZGF0ZUNlbGwuY2xhc3NMaXN0LmFkZCgnd2YtY2FsZW5kYXItZGF0ZScpOwogCSAJIAlkYXRlQ2VsbC50ZXh0Q29udGVudCA9IGRheTsKIAkgCSAJaWYgKGRheSA9PT0gbmV3IERhdGUoKS5nZXREYXRlKCkgJiYgbW9udGggPT09IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSAmJiB5ZWFyID09PSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpIHtkYXRlQ2VsbC5jbGFzc0xpc3QuYWRkKCdjdXJyZW50LWRhdGUnKTt9CiAJIAkgCWlmIChkYXkgPT09IGN1cnJlbnREYXRlLmdldERhdGUoKSAmJiB5ZWFyID09PSBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpICYmIG1vbnRoID09PSBjdXJyZW50RGF0ZS5nZXRNb250aCgpKSB7ZGF0ZUNlbGwuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTt9CiAJIAkgCWlmIChkYXlzVG9SZXN0cmljdC5pbmNsdWRlcyhkYXlPZldlZWspIHx8IAogCSAJIAkocmVzdHJpY3R0eXBlICYmICgocmVzdHJpY3R0eXBlID09PSAncmFuZ2UnICYmIG1pbkRhdGUgJiYgbWF4RGF0ZSAmJiAoZGF0ZU9iaiA8IG1pbkRhdGUgfHwgZGF0ZU9iaiA+IG1heERhdGUpKSAgfHwgCiAJIAkgCShyZXN0cmljdHR5cGUgPT09ICdmdXR1cmUnICYmIGRhdGVPYmogPiBuZXcgRGF0ZSgpKSB8fAogCSAJIAkocmVzdHJpY3R0eXBlID09PSAncGFzdCcgJiYgZGF0ZU9iaiA8IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwwLDAsMCkpKSkpKSB7CiAJIAkgCSAJZGF0ZUNlbGwuY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQtZGF0ZScpOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCWRhdGVDZWxsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAkgCXNlbGVjdGVkRGF0ZUZpZWxkLnF1ZXJ5U2VsZWN0b3JBbGwoJy53Zi1maWVsZC1pdGVtLWRhdGUnKS5mb3JFYWNoKHggPT4gewogCSAJIAkgCWlmICh4LmRhdGFzZXQudHlwZSA9PSAnZGF5JykgewogCSAJIAkgCSAJbGV0IGRheVYgPSBTdHJpbmcoZGF5KS5wYWRTdGFydCgyLCAnMCcpOwogCSAJIAkgCSAJeC52YWx1ZSA9IGRheVY7CiAJIAkgCSAJIAlpZiAoeC5wbGFjZWhvbGRlciA9PSAnRCcpIHsgeC52YWx1ZSA9IFN0cmluZyhkYXkpO30KIAkgCSAJIAl9IGVsc2UgaWYgKHguZGF0YXNldC50eXBlID09ICdtb250aCcpIHsKIAkgCSAJIAkgCWxldCBtb250aFYgPSBTdHJpbmcobW9udGggKyAxKS5wYWRTdGFydCgyLCAnMCcpOwogCSAJIAkgCSAJeC52YWx1ZSA9IG1vbnRoVjsKIAkgCSAJIAkgCWlmICh4LnBsYWNlaG9sZGVyID09ICdNTU0nKSB7CiAJIAkgCSAJIAl4LnZhbHVlID0gc2hvcnRNb250aFttb250aF07CiAJIAkgCSAJIAl9IGVsc2UgaWYgKHgucGxhY2Vob2xkZXIgPT0gJ01NTU0nKSB7CiAJIAkgCSAJIAl4LnZhbHVlID0gbG9uZ01vbnRoW21vbnRoXTsKIAkgCSAJIAkgCX0gZWxzZSBpZiAoeC5wbGFjZWhvbGRlciA9PSAnTScpIHt4LnZhbHVlID0gU3RyaW5nKG1vbnRoICsgMSk7fQogCSAJIAkgCX0gZWxzZSB7CiAJIAkgCSAJIAlpZiAoeC5wbGFjZWhvbGRlciA9PSAnWVknKSB7eC52YWx1ZSA9ICh5ZWFyICsgJycpLnN1YnN0cmluZygyLCA0KTsKIAkgCSAJIAkgCX0gZWxzZSB7eC52YWx1ZSA9IHllYXI7fQogCSAJIAkgCX0KIAkgCSAJIAl1cGRhdGVXaWR0aDczNjUyNTMwMDAwMDA2NDExNDYoeCk7CiAJIAkgCSAJfSk7CiAJIAkgCSAJdmFyIGRhdGVFbGUgPSBzZWxlY3RlZERhdGVGaWVsZC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOwogCSAJIAkgCWlmIChkYXRlRWxlKSB7CiAJIAkgCSAJIAlyZW1vdmVFcnJvcihkYXRlRWxlKTsKIAkgCSAJIAl9CiAJIAkgCSAJY2xvc2VDYWxlbmRhcigpOwogCSAJIAkgCX0pOwogCSAJIAl9CiAJIAkgCWNhbGVuZGFyQm9keS5hcHBlbmRDaGlsZChkYXRlQ2VsbCk7CiAJIAkgCX0KIAkgCSAJY2FsZW5kYXIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAJIAkgCXBvc2l0aW9uQ2FsZW5kYXIoKTsKIAkgCX0KIAl9CiAJZnVuY3Rpb24gdXBkYXRlV2lkdGg3MzY1MjUzMDAwMDAwNjQxMTQ2KGVsZSkgewogCSAJaWYoIWR1bW15RWxlKSB7ZHVtbXlFbGUgPSBkb2N1bWVudC5mb3Jtc1snQmlnaW5XZWJUb1JlY29yZEZvcm03MzY1MjUzMDAwMDAwNjQxMTQ2J10ucXVlcnlTZWxlY3RvcignLmR1bW15LWRpdicpO30KIAkgCWR1bW15RWxlLmlubmVySFRNTCA9IGVsZS52YWx1ZSA/IGVsZS52YWx1ZSA6IGVsZS5wbGFjZWhvbGRlcjsKIAkgCWlmKFsnTU1NJywnTU1NTSddLmluY2x1ZGVzKGVsZS5wbGFjZWhvbGRlcikpIHtkdW1teUVsZS5pbm5lckhUTUwgPSBkdW1teUVsZS5pbm5lckhUTUxbMF0udG9VcHBlckNhc2UoKSArIGR1bW15RWxlLmlubmVySFRNTC5zbGljZSgxKTt9CiAJIAllbGUuc3R5bGUud2lkdGggPSBkdW1teUVsZS5vZmZzZXRXaWR0aDsKIAl9CiAJZnVuY3Rpb24gcG9zaXRpb25DYWxlbmRhcigpIHsKIAkgCWNvbnN0IHdyYXBwZXJSZWN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndmLWZvcm0tY29tcG9uZW50JykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAJIAljb25zdCBwb3NpdGlvbiA9IHNlbGVjdGVkRGF0ZUZpZWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCSAJY29uc3Qgc3BhY2VCZWxvdyA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHBvc2l0aW9uLmJvdHRvbTsKIAkgCWNhbGVuZGFyLnN0eWxlLmJvdHRvbSA9IGAke3dyYXBwZXJSZWN0LmJvdHRvbSAtIHBvc2l0aW9uLmJvdHRvbSAtIGNhbGVuZGFyLm9mZnNldEhlaWdodCAtIDV9cHhgOwogCSAJY2FsZW5kYXIuc3R5bGUudG9wID0gJyc7CiAJIAlpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2Rpcj1ydGxdJykpIHsKIAkgCSAJY2FsZW5kYXIuc3R5bGUucmlnaHQgPSBgJHtNYXRoLmFicyhwb3NpdGlvbi5yaWdodCAtIHdyYXBwZXJSZWN0LnJpZ2h0KX1weGA7CiAJIAkgCWNhbGVuZGFyLnN0eWxlLmxlZnQgPSAnJzsKIAkgCX0gZWxzZSB7CiAJIAkgCWNhbGVuZGFyLnN0eWxlLmxlZnQgPSBgJHtNYXRoLmFicyhwb3NpdGlvbi5sZWZ0IC0gd3JhcHBlclJlY3QubGVmdCl9cHhgOwogCSAJIAljYWxlbmRhci5zdHlsZS5yaWdodCA9ICcnOwogCSAJfQogCX0KIAlmdW5jdGlvbiBnZXRDb3JyZWN0WWVhcih5ZWFyKSB7CiAJIAlpZiAoKHllYXIgKyAnJykubGVuZ3RoICE9IDIpIHtyZXR1cm4geWVhcjt9CiAJIAl2YXIgY3VyX1llYXIgPSAobmV3IERhdGUpLmdldEZ1bGxZZWFyKCksCiAJIAl5ZWFyX3ByZWZpeCA9IHBhcnNlSW50KGN1cl9ZZWFyIC8gMTAwKSwKIAkgCXllYXJfc3VmZml4ID0gY3VyX1llYXIgJSAxMDAsCiAJIAlsaW1pdCA9ICh5ZWFyX3N1ZmZpeCAtIGxMaW1pdCArIDEwMCkgJSAxMDA7CiAJIAlpZiAoeWVhcl9zdWZmaXggPiBsaW1pdCkgewogCSAJaWYgKHllYXIgPCBsaW1pdCkge3llYXIgPSB5ZWFyX3ByZWZpeCArIDEgKyAnJyArIHllYXI7CiAJIAl9IGVsc2Uge3llYXIgPSB5ZWFyX3ByZWZpeCArICcnICsgeWVhcjt9CiAJIAl9IGVsc2UgaWYgKHllYXIgPCBsaW1pdCkge3llYXIgPSB5ZWFyX3ByZWZpeCArICcnICsgeWVhcjsKIAkgCX0gZWxzZSB7eWVhciA9IHllYXJfcHJlZml4IC0gMSArICcnICsgeWVhcjt9CiAJIAlyZXR1cm4geWVhcjsKIAl9CiAJIAlmdW5jdGlvbiBnZXRTZXBhcmF0b3JzKGRhdGVGb3JtYXQpIHsKIAkgCXZhciBzZXBhcmF0b3JzID0gW107CiAJIAljb25zdCByZWdleFBhdHRlcm4xID0gL1wuIC9nOwogCSAJaWYgKHJlZ2V4UGF0dGVybjEudGVzdChkYXRlRm9ybWF0KSkge3NlcGFyYXRvcnMgPSBkYXRlRm9ybWF0Lm1hdGNoKHJlZ2V4UGF0dGVybjEpOwogCSAJfSBlbHNlIHtzZXBhcmF0b3JzID0gZGF0ZUZvcm1hdC5tYXRjaCgvW15hLXpBLVowLTldL2cpO30KIAkgCWlmIChzZXBhcmF0b3JzLmxlbmd0aCA9PSAxKSB7c2VwYXJhdG9ycyA9IGRhdGVGb3JtYXQubWF0Y2goL1teYS16QS1aMC05XS9nKTt9CiAJIAlyZXR1cm4gc2VwYXJhdG9yczsKIAl9CiAJZnVuY3Rpb24gY29udmVydFRvSVNPKGRhdGVTdHJpbmcsIGZvcm1hdCkgewogCSAJY29uc3QgbW9udGhOYW1lcyA9IHsKIAkgCSAJSmFudWFyeTogJzAxJywgRmVicnVhcnk6ICcwMicsIE1hcmNoOiAnMDMnLCBBcHJpbDogJzA0JywgTWF5OiAnMDUnLCBKdW5lOiAnMDYnLEp1bHk6ICcwNycsIEF1Z3VzdDogJzA4JywgU2VwdGVtYmVyOiAnMDknLCBPY3RvYmVyOiAnMTAnLCBOb3ZlbWJlcjogJzExJywgRGVjZW1iZXI6ICcxMicsSmFuOiAnMDEnLCBGZWI6ICcwMicsIE1hcjogJzAzJywgQXByOiAnMDQnLCBNYXlfOiAnMDUnLCBKdW46ICcwNicsIEp1bDogJzA3JyxBdWc6ICcwOCcsIFNlcDogJzA5JywgT2N0OiAnMTAnLCBOb3Y6ICcxMScsIERlYzogJzEyJwogCSAJfTsKIAkgCXZhciBkZWxpbWl0ZXJzID0gL1tcL1wtLlxzXS87CiAJIAlpZihmb3JtYXQuaW5kZXhPZign5bm0JykgIT09IC0xKSB7CiAJIAkgCWRlbGltaXRlcnMgPSAvW+W5tOaciOaXpV0vOwogCSAJfQogCSAJY29uc3QgZm9ybWF0UGFydHMgPSBmb3JtYXQuc3BsaXQoZGVsaW1pdGVycyk7CiAJIAljb25zdCBkYXRlUGFydHMgPSBkYXRlU3RyaW5nLnNwbGl0KGRlbGltaXRlcnMpOwogCSAJaWYgKGZvcm1hdFBhcnRzLmxlbmd0aCAhPT0gZGF0ZVBhcnRzLmxlbmd0aCkgcmV0dXJuICcnOwogCSAJbGV0IGRheSA9ICcnLCBtb250aCA9ICcnLCB5ZWFyID0gJyc7CiAJIAlmb3JtYXRQYXJ0cy5mb3JFYWNoKChwYXJ0LCBpbmRleCkgPT4gewogCSAJIAlsZXQgdmFsdWUgPSBkYXRlUGFydHNbaW5kZXhdOwogCSAJIAlpZiAocGFydC5pbmNsdWRlcygnWVlZWScpKSB7CiAJIAkgCSAJeWVhciA9IHZhbHVlOwogCSAJIAl9IGVsc2UgaWYgKHBhcnQuaW5jbHVkZXMoJ1lZJykpIHsKIAkgCSAJIAlsZXQgeWVhck51bSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAJIAkgCSAJeWVhciA9IHllYXJOdW0gPiAzMCA/IGAxOSR7dmFsdWV9YCA6IGAyMCR7dmFsdWV9YDsKIAkgCSAJfSBlbHNlIGlmIChwYXJ0LmluY2x1ZGVzKCdNTScpIHx8IHBhcnQuaW5jbHVkZXMoJ00nKSkgewogCSAJIAkgCWlmIChpc05hTih2YWx1ZSkpIHt0bW9udGggPSBtb250aE5hbWVzW3ZhbHVlXSB8fCAnMDAnOwogCSAJIAl9IGVsc2Uge21vbnRoID0gdmFsdWUucGFkU3RhcnQoMiwgJzAnKTt9CiAJIAkgCX0gZWxzZSBpZiAocGFydC5pbmNsdWRlcygnREQnKSB8fCBwYXJ0LmluY2x1ZGVzKCdEJykpIHsKIAkgCSAJIAlkYXkgPSB2YWx1ZS5wYWRTdGFydCgyLCAnMCcpOwogCSAJIAl9CiAJIAl9KTsKIAkgCXJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gOwogCSAJfQogCWZ1bmN0aW9uIHZhbGlkYXRlRGF0ZTczNjUyNTMwMDAwMDA2NDExNDYoKSB7CiAJIAl2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWydCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnXSwKIAkgCSBpc1JldHVybiA9IHRydWU7CiAJIAl2YXIgdmFsaWRhdGVGbGQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tmdmFsaWRhdGU9ZGF0ZV0nKTsKIAkgCWZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRhdGVGbGQubGVuZ3RoOyBpKyspIHsKIAkgCSAJbGV0IGZpZWxkID0gdmFsaWRhdGVGbGRbaV0sCiAJIAkgCSB3ZkxhYmVsID0gZmllbGQuY2xvc2VzdCgnLndmLXJvdycpID8gZmllbGQuY2xvc2VzdCgnLndmLXJvdycpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWxhYmVsJylbMF0uaW5uZXJIVE1MIDogJycsCiAJIAkgCSBkYXRlRmllbGRTaWIgPSBmaWVsZC5uZXh0RWxlbWVudFNpYmxpbmcsCiAJIAkgCSBkYXRlSW5wdXRzID0gWy4uLmRhdGVGaWVsZFNpYi5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCcpXSwKIAkgCSAJIGRhdGVGb3JtYXRTdHIgPSBkYXRlRmllbGRTaWIuZGF0YXNldC5mb3JtYXQudG9VcHBlckNhc2UoKSwKIAkgCSAJIGlzRW1wdHkgPSAwOwogCSAJIAlkYXRlSW5wdXRzLmZvckVhY2goZGF0ZUlFbGUgPT4gewogCSAJIAlsZXQgdmFsID0gZGF0ZUlFbGUudmFsdWUudHJpbSgpOwogCSAJIAlpZiAoIXZhbCkgaXNFbXB0eSsrOwogCSAJIAlkYXRlRm9ybWF0U3RyID0gZGF0ZUZvcm1hdFN0ci5yZXBsYWNlKGRhdGVJRWxlLnBsYWNlaG9sZGVyLCB2YWwpOwogCSAJIAl9KTsKIAkgCSAJaWYgKGlzRW1wdHkgPT09IGRhdGVJbnB1dHMubGVuZ3RoKSBjb250aW51ZTsKIAkgCSAJdmFyIHNlbGVjdGVkRGF0ZSwKIAkgCSAJY29udmVydGVkRGF0ZSA9IGNvbnZlcnRUb0lTTyhkYXRlRm9ybWF0U3RyLCBkYXRlRmllbGRTaWIuZGF0YXNldC5mb3JtYXQudG9VcHBlckNhc2UoKSk7CiAJIAkgCWlmKGZpZWxkLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSA9PT0gJ2RhdGUnKXsKIAkgCSAJIAl2YXIgZGF0ZXN0ciA9IGNvbnZlcnRlZERhdGUuc3BsaXQoJy0nKTsKIAkgCSAJIAlzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShkYXRlc3RyWzBdLGRhdGVzdHJbMV0tMSwgZGF0ZXN0clsyXSwgMCwgMCwgMCk7CiAJIAkgCX0KIAkgCSAJZWxzZXsKIAkgCSAJIAkgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoY29udmVydGVkRGF0ZSk7CiAJIAkgCX0KIAkgCSAJdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAJIAkgCWlmIChpc05hTihzZWxlY3RlZERhdGUpKSB7CiAJIAkgCSAJc2V0RXJyb3IoZmllbGQsIGBFbnRlciB2YWxpZCAke3dmTGFiZWx9YCk7CiAJIAkgCSAJaXNSZXR1cm4gPSBmYWxzZTsKIAkgCSAJIAljb250aW51ZTsKIAkgCSAJfQogCSAJIAlpZiAoZmllbGQuZ2V0QXR0cmlidXRlKCdmdHlwZScpID09PSAnZGF0ZXRpbWUnKSB7CiAJIAkgCSAJY29uc3QgZ2V0VmFsdWUgPSAobmFtZSwgZGVmYXVsdFZhbHVlKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShgJHtmaWVsZC5uYW1lfSR7bmFtZX1gKVswXT8udmFsdWUgfHwgZGVmYXVsdFZhbHVlOwogCSAJIAkgCWxldCBkdEhyID0gZ2V0VmFsdWUoJ2hvdXInLCAnMTInKSwKIAkgCSAJIAkgZHRNaW4gPSBnZXRWYWx1ZSgnbWludXRlJywgJzAwJyksCiAJIAkgCSAJIGR0QW1QTSA9IGdldFZhbHVlKCdhbXBtJywgJ0FNJyksCiAJIAkgCSAJIGlzb0RhdGUgPSBjb252ZXJ0VG9JU08oZGF0ZUZvcm1hdFN0ciwgZGF0ZUZpZWxkU2liLmRhdGFzZXQuZm9ybWF0LnRvVXBwZXJDYXNlKCkpLAogCSAJIAkgCWRhdGVQYXJ0cyA9IGlzb0RhdGUuc3BsaXQoJy0nKSwKIAkgCSAJIAl5ZWFyID0gcGFyc2VJbnQoZGF0ZVBhcnRzWzBdLCAxMCksCiAJIAkgCSAJbW9udGggPSBwYXJzZUludChkYXRlUGFydHNbMV0sIDEwKSAtIDEsCiAJIAkgCSAJZGF5ID0gcGFyc2VJbnQoZGF0ZVBhcnRzWzJdLCAxMCksCiAJIAkgCSAJaG91ciA9IHBhcnNlSW50KGR0SHIsIDEwKTsKIAkgCSAJIAlpZiAoZHRBbVBNID09PSAnUE0nICYmIGhvdXIgIT09IDEyKSB7CiAJIAkgCSAJIAlob3VyICs9IDEyOwogCSAJIAkgCX0gZWxzZSBpZiAoZHRBbVBNID09PSAnQU0nICYmIGhvdXIgPT09IDEyKSB7CiAJIAkgCSAJIAlob3VyID0gMDsKIAkgCSAJIAl9CiAJIAkgCSAJdmFyIG1pbnV0ZSA9IHBhcnNlSW50KGR0TWluLCAxMCk7CiAJIAkgCSAJc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlKTsKIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAlzZWxlY3RlZERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7CiAJIAkgCSAJbm93LnNldEhvdXJzKDAsIDAsIDAsIDApOwogCSAJIAl9CiAJIAkgCWZpZWxkLnZhbHVlID0gc2VsZWN0ZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQ0EnKTsKIAkgCSAJbGV0IHJlc3RyaWN0aW9uVHlwZSA9IGRhdGVGaWVsZFNpYi5kYXRhc2V0LnJlc3RyaWN0dHlwZTsKIAkgCSAJaWYoaXNSZXR1cm4gJiYgZGF0ZUZpZWxkU2liLmRhdGFzZXQucmVzdHJpY3RkYXlzKSB7CiAJIAkgCSAJbGV0IHNEYXkgPSBzZWxlY3RlZERhdGUuZ2V0RGF5KCkudG9TdHJpbmcoKSwKIAkgCSAJIAkgZGF5TmFtZSA9IHNlbGVjdGVkRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywgeyB3ZWVrZGF5OiAnbG9uZycgfSk7CiAJIAkgCSAJaWYoZGF0ZUZpZWxkU2liLmRhdGFzZXQucmVzdHJpY3RkYXlzLmluZGV4T2Yoc0RheSkgIT09IC0xKSB7CiAJIAkgCSAJIAlzZXRFcnJvcihmaWVsZCwgJ0Nob29zZSBhIGRhdGUgdGhhdCBkb2VzIG5vdCBmYWxsIG9uICcrIGRheU5hbWUpOwogCSAJIAkgCSAJaXNSZXR1cm4gPSBmYWxzZTsKIAkgCSAJIAl9CiAJIAkgCX0KIAkgCSAJaWYgKGlzUmV0dXJuICYmIHJlc3RyaWN0aW9uVHlwZSkgewogCSAJIAkgCWNvbnN0IGZvcm1hdERhdGUgPSBkYXRlID0+IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi11cycsIHsgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnLCBkYXk6ICdudW1lcmljJyB9KTsKIAkgCSAJIAllcnJvcktleSA9ICcnOwogCSAJIAkgCWlmICgocmVzdHJpY3Rpb25UeXBlID09PSAncGFzdCcgJiYgc2VsZWN0ZWREYXRlIDwgbm93KSB8fCAocmVzdHJpY3Rpb25UeXBlID09PSAnZnV0dXJlJyAmJiBzZWxlY3RlZERhdGUgPiBub3cpKSB7CiAJIAkgCSAJIAllcnJvcktleSA9IGBDaG9vc2UgYSBkYXRlICR7cmVzdHJpY3Rpb25UeXBlID09PSAncGFzdCcgPyAnb24gb3IgYWZ0ZXInIDogJ29uIG9yIGJlZm9yZSd9ICR7Zm9ybWF0RGF0ZShub3cpfWA7CiAJIAkgCSAJfSBlbHNlIGlmIChyZXN0cmljdGlvblR5cGUgPT09ICdyYW5nZScpIHsKIAkgCSAJIAkgCWxldCBzdGFydCA9IG5ldyBEYXRlKGRhdGVGaWVsZFNpYi5kYXRhc2V0LnJhbmdlZnJvbSksCiAJIAkgCSAJIAkgZW5kID0gbmV3IERhdGUoZGF0ZUZpZWxkU2liLmRhdGFzZXQucmFuZ2V0byk7CiAJIAkgCSAJIAkgc3RhcnQuc2V0SG91cnMoMCwgMCwgMCwgMCk7CiAJIAkgCSAJIAkgaWYgKGZpZWxkLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSA9PT0gJ2RhdGV0aW1lJykgewogCSAJIAkgCSAJIAllbmQuc2V0SG91cnMoMjMsIDU5LCAwLCAwKTsKIAkgCSAJIAkgCSB9IGVsc2UgewogCSAJIAkgCSAJIAllbmQuc2V0SG91cnMoMCwgMCwgMCwgMCk7CiAJIAkgCSAJIAkgfQogCSAJIAkgCSAJaWYgKHNlbGVjdGVkRGF0ZSA8IHN0YXJ0IHx8IHNlbGVjdGVkRGF0ZSA+IGVuZCkgewogCSAJIAkgCSAJIAllcnJvcktleSA9IGBDaG9vc2UgYSBkYXRlIGJldHdlZW4gJHtmb3JtYXREYXRlKHN0YXJ0KX0gYW5kICR7Zm9ybWF0RGF0ZShlbmQpfWA7CiAJIAkgCSAJIAl9CiAJIAkgCSAJfQogCSAJIAkgCWlmIChlcnJvcktleSkgewogCSAJIAkgCSAJc2V0RXJyb3IoZmllbGQsIGVycm9yS2V5KTsKIAkgCSAJIAkgCWlzUmV0dXJuID0gZmFsc2U7CiAJIAkgCSAJfQogCSAJIAl9CiAJIAl9CiAJIAlyZXR1cm4gaXNSZXR1cm47CiAJfQogCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSl7CiAJIAlpZighZS50YXJnZXQuY2xvc2VzdCgnLmRhdGUtaW5wdXQtY29udGFpbmVyJykgJiYgIWUudGFyZ2V0LmNsb3Nlc3QoJy53Zi1jYWxlbmRhci1wb3B1cC13cmFwcGVyJykpe2NhbGVuZGFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7fQogCX0pOwo8L3NjcmlwdD4KIAkgPHNjcmlwdCBpZD0nd2Zfc2NyaXB0JyBzcmM9J2h0dHBzOi8vYmlnaW4uem9oby5jb20vY3JtL1dlYmZvcm1TY3JpcHRTZXJ2bGV0P3JpZD1iMDU2OGQ3NWI3MzBlZDU3NGVkYWYwZjE3MDhkYjIwZWMxMDYxYzA4MmI5NTAyMjU1ZGU3M2I0ZDk3NTNhYjBmNzQ0ZGVlYTg2NjFkYzhhMzI4MGYxN2NlM2I5MzdkY2NnaWQ3ZjQ3ZGQyZDc1N2Y1ODViZWMwNTkzNDNkOGU3MDVjYzhmYjllYTQzNDY1ZDI2OGNiMzRjOTEzN2UzYjQ5OGZkJmZpbmRpcD10cnVlJyBvbmxvYWQ9c2V0dXBQaG9uZUZsZElQKCk+PC9zY3JpcHQ+CjxkaXYgaWQ9ImxlYWQtd2lkZ2V0IiBkYXRhLWxlYWQtaWQ9IjM1OCI+PC9kaXY+CiAgICA8bGluayBocmVmPSJodHRwczovL3N0YWdlLmJvb29zdGVkLmNvbS9zdGlja3ktYnV0dG9uL21haW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgc3JjPSJodHRwczovL3N0YWdlLmJvb29zdGVkLmNvbS9zdGlja3ktYnV0dG9uL21haW4uanMiPjwvc2NyaXB0PgoKICA8ZGl2IGlkPSJQcm9kdWN0IiBkYXRhLXctaWQ9ImNmYmE2NjkwLTI0NzMtOTI2MS04YWJkLTM2MjRmZWFjODI2YiIgY2xhc3M9InNlY3Rpb24gb3ZlcmZsb3ctaGlkZGVuIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBoZXJvIj4KICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uLWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uLWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApO3RyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZDtvcGFjaXR5OjAiIGNsYXNzPSJhbmltYXRlLW9uLWxvYWQtMDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLXRleHQtaG9sZGVyIj4KICAgICAgICAgICAgICA8aDEgY2xhc3M9InRpdGxlIG1vYmlsZS1iaWdnZXIiPkRpc2NvdmVyIFRoZSBQb3dlciBPZiBBaSBjaGF0Ym90czwvaDE+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApO29wYWNpdHk6MDt0cmFuc2Zvcm0tc3R5bGU6cHJlc2VydmUtM2QiIGNsYXNzPSJhbmltYXRlLW9uLWxvYWQtMDMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLXBhcmFncmFwaC1ob2xkZXIiPgogICAgICAgICAgICAgIDxwIGNsYXNzPSJwYXJhZ3JhcGgiPkF1dG9tYXRlIHlvdXIgY3VzdG9tZXIgc2VydmljZSB3aXRoIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLiAyNC83IGF2YWlsYWJpbGl0eSBhbmQgc3VwcG9ydC4gPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMzBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDY1ZGVnKSByb3RhdGVZKDApIHJvdGF0ZVoobnVsbCkgc2tldygwLCAwKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMzBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDY1ZGVnKSByb3RhdGVZKDApIHJvdGF0ZVoobnVsbCkgc2tldygwLCAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMzBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDY1ZGVnKSByb3RhdGVZKDApIHJvdGF0ZVoobnVsbCkgc2tldygwLCAwKTt0cmFuc2Zvcm0tc3R5bGU6cHJlc2VydmUtM2Q7b3BhY2l0eTowIiBjbGFzcz0iYW5pbWF0ZS1vbi1sb2FkLTA0Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1idXR0b24taG9sZGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NhbGVuZGx5LmNvbS9ib29vc3RlZGNvbS9kZW1vIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ1dHRvbiB3LWJ1dHRvbiI+Qm9vayBhIEZyZWUgRGVtbyBIZXJlPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Imhlcm8tc2VjdGlvbi1hcHAtaG9sZGVyIj4KICAgICAgICAgIDxkaXYgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMzBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDY1ZGVnKSByb3RhdGVZKDApIHJvdGF0ZVoobnVsbCkgc2tldygwLCAwKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7b3BhY2l0eTowO3RyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZCIgY2xhc3M9Imhlcm8tc2VjdGlvbi1hcHAtY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uLXBob25lLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0FwcGxlLUlwaG9uZS0xNC1wcm8ucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9Imhlcm8tc2VjdGlvbi1waG9uZS1pbWFnZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uLXBob25lLXNjcmVlbnNob3QtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQXBwLVNjcmVlbnNob3QuanBnIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDc3dncsIChtYXgtd2lkdGg6IDk5MXB4KSAyNTJweCwgNDUwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQXBwLVNjcmVlbnNob3QtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0FwcC1TY3JlZW5zaG90LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9BcHAtU2NyZWVuc2hvdC1wLTEwODAuanBnIDEwODB3LCAvc3RhdGljL2ltYWdlcy9BcHAtU2NyZWVuc2hvdC5qcGcgMTE3OXciIGFsdD0iIiBjbGFzcz0iaGVyby1zZWN0aW9uLXBob25lLXNjcmVlbnNob3QtaW1hZ2UiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvY2hhdC1leGFtcGxlLnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSA4NXZ3LCAobWF4LXdpZHRoOiA5OTFweCkgMzMwcHgsIDU1MHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL2NoYXQtZXhhbXBsZS1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvY2hhdC1leGFtcGxlLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9jaGF0LWV4YW1wbGUucG5nIDkwNHciIGFsdD0iIiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im90aGVyLWNhcmRzLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2NhcmQtMS5wbmciIGxvYWRpbmc9ImxhenkiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvY2FyZC0xLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9jYXJkLTEucG5nIDc4OHciIGFsdD0iIiBzaXplcz0iKG1heC13aWR0aDogNzY3cHgpIDEwMHZ3LCAobWF4LXdpZHRoOiA5OTFweCkgMTAwcHgsIDE5MHB4IiBjbGFzcz0ib3RoZXItY2FyZC1pbWFnZSBfMDEiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9DYXJkLTA0LnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDc2N3B4KSAxMDB2dywgKG1heC13aWR0aDogOTkxcHgpIDEwMHB4LCAyMDBweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9DYXJkLTA0LXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9DYXJkLTA0LXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9DYXJkLTA0LnBuZyA4NDZ3IiBhbHQ9IiIgY2xhc3M9Im90aGVyLWNhcmQtaW1hZ2UgXzAyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d28tY2FyZHMtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy5wbmciIGxvYWRpbmc9ImxhenkiIHNpemVzPSIobWF4LXdpZHRoOiA3NjdweCkgMTAwdncsIChtYXgtd2lkdGg6IDk5MXB4KSAxNTBweCwgMjcwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9DYXJkLTAzLnBuZyAxMTM4dyIgYWx0PSIiIGNsYXNzPSJvdGhlci1jYXJkLWltYWdlIF8wMyI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1iYWNrZ3JvdW5kLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyIgbG9hZGluZz0ibGF6eSIgc3R5bGU9ImZpbHRlcjpzYXR1cmF0ZSgyMDAlKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDE5ZGVnKSBza2V3KDAsIDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCgwKSByb3RhdGVZKDApIHJvdGF0ZVooMTlkZWcpIHNrZXcoMCwgMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDE5ZGVnKSBza2V3KDAsIDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDE5ZGVnKSBza2V3KDAsIDApO29wYWNpdHk6MCIgc2l6ZXM9IjEwMHZ3IiBhbHQ9IiIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTUwMC5qcGcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC04MDAuanBnIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtMTA4MC5qcGcgMTA4MHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyAxMzAwdyIgY2xhc3M9Imhlcm8tYmFja2dyb3VuZCI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZS1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgIDxoMiBjbGFzcz0iaDMtdGl0bGUiPkV4Y2VsbGVudCByZXZpZXdzPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmYWRlLWluLW9uLXNjcm9sbCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLXBhcmFncmFwaC1ob2xkZXIiPgogICAgICAgICAgICA8cD5Db21wYW5pZXMgcmVwb3J0IHNhdmluZyB0aW1lIGFuZCBtb25leSB3aXRoIG91ciBwcm9kdWN0PC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLWxvZ29zLWhvbGRlciI+CiAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3Mtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcy1jb250YWluZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGF1c19fMV8tcmVtb3ZlYmctcHJldmlldy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9tb3RvcnNwYWNlLWxvZ28ucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IihtYXgtd2lkdGg6IDc2N3B4KSAxMDBweCwgKG1heC13aWR0aDogMTQzOXB4KSAxMzBweCwgMjl2dyIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9tb3RvcnNwYWNlLWxvZ28tcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL21vdG9yc3BhY2UtbG9nby5wbmcgNjE5dyIgY2xhc3M9InJldmlld3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLWxvZ29zIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbG9nby0yLjAtMzAweDEyNC1yZW1vdmViZy1wcmV2aWV3LnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGF1cy1yZW1vdmViZy1wcmV2aWV3LnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1NUTF9sb2dvX3NpbmluZW5fcmdiLmpwZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGF1cy0yLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1RlaHR5U3VvbU1hZGVJbl9TaW5fcmdiLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL09tYXdhdHRpLWxvZ28tMS10dW1tYWxsZS0wMS5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9tZWRvX295X2xvZ28tcmVtb3ZlYmctcHJldmlldy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3Mtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcy1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9sYXRhdXNfXzFfLXJlbW92ZWJnLXByZXZpZXcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9InJldmlld3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLWxvZ29zIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbW90b3JzcGFjZS1sb2dvLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSIobWF4LXdpZHRoOiA3NjdweCkgMTAwcHgsIChtYXgtd2lkdGg6IDE0MzlweCkgMTMwcHgsIDI5dnciIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvbW90b3JzcGFjZS1sb2dvLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9tb3RvcnNwYWNlLWxvZ28ucG5nIDYxOXciIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xvZ28tMi4wLTMwMHgxMjQtcmVtb3ZlYmctcHJldmlldy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9sYXRhdXMtcmVtb3ZlYmctcHJldmlldy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9TVExfbG9nb19zaW5pbmVuX3JnYi5qcGciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9sYXRhdXMtMi5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9UZWh0eVN1b21NYWRlSW5fU2luX3JnYi5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9PbWF3YXR0aS1sb2dvLTEtdHVtbWFsbGUtMDEucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9InJldmlld3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLWxvZ29zIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbWVkb19veV9sb2dvLXJlbW92ZWJnLXByZXZpZXcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9InJldmlld3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBpZD0iRmVhdHVyZXMiIGNsYXNzPSJzZWN0aW9uIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlLWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXMtdGl0bGUtaG9sZGVyIj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+V2h5IGNob29zZSB1cz88L2gxPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmV0YXVyZXMtcGFyYWdyYXBoLWhvbGRlciI+CiAgICAgICAgICAgIDxwPk91ciBwbGF0Zm9ybSBvZmZlcnMgYSByYW5nZSBvZiBwb3dlcmZ1bCBmZWF0dXJlcyBkZXNpZ25lZCB0byBlbGV2YXRlIHlvdXIgZXhwZXJpZW5jZS48L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVkLWNhcmRzLWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXMtY2FyZC1jb250YWluZXIiPgogICAgICAgICAgPGRpdiBpZD0idy1ub2RlLWE3ZDhiZTRjLWJjMDQtMTI1OC04OTZkLTMzOGZjOGQzOWNjMi0zZmY0ZGMxNiIgZGF0YS13LWlkPSJhN2Q4YmU0Yy1iYzA0LTEyNTgtODk2ZC0zMzhmYzhkMzljYzIiIHN0eWxlPSJvcGFjaXR5OjAiIGNsYXNzPSJmZWF0dXJlcy1jYXJkLWltYWdlLWhvbGRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzLWNhcmQtaW1hZ2UtY29udGFpbmVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQuanBnIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDk0dncsIChtYXgtd2lkdGg6IDc2N3B4KSAxMDB2dywgKG1heC13aWR0aDogOTkxcHgpIDU5dncsIChtYXgtd2lkdGg6IDE0MzlweCkgNjB2dywgODE2cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTEwODAuanBnIDEwODB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC5qcGcgMTMwMHciIGFsdD0iIiBjbGFzcz0iZmVhdHVyZWQtY2FyZC1iYWNrZ3JvdW5kLWlhbWdlIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvY2hhdC1leGFtcGxlLTMucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImZlYXR1cmVkLWNhcmQtaW1hZ2UiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZ3JhZGllbnQiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC10aXRsZS1ob2xkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtdGl0bGUiPkhhbmRsZSBjb21wbGV4IHRhc2tzPC9kaXY+CiAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyZXktdGV4dCI+QXV0b21hdGUgY29tcGxleCBxdWVyaWVzLiBDb252ZXJ0IHZpc2l0b3JzIHRvIGN1c3RvbWVycyB3aXRoIDI0LzcgYXZhaWxhYmlsaXR5IGFuZCBzdXBwb3J0PC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBpZD0idy1ub2RlLWQ4Y2U2ZTM5LWNiMTQtNTliNS01MWMxLTEzYTYyMmJhNDkzYy0zZmY0ZGMxNiIgZGF0YS13LWlkPSJkOGNlNmUzOS1jYjE0LTU5YjUtNTFjMS0xM2E2MjJiYTQ5M2MiIHN0eWxlPSJvcGFjaXR5OjAiIGNsYXNzPSJmZWF0dXJlcy1jYXJkLWltYWdlLWhvbGRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzLWNhcmQtaW1hZ2UtY29udGFpbmVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQuanBnIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDk0dncsIChtYXgtd2lkdGg6IDc2N3B4KSAxMDB2dywgKG1heC13aWR0aDogOTkxcHgpIDU5dncsIChtYXgtd2lkdGg6IDE0MzlweCkgNjB2dywgODE2cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTEwODAuanBnIDEwODB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC5qcGcgMTMwMHciIGFsdD0iIiBjbGFzcz0iZmVhdHVyZWQtY2FyZC1iYWNrZ3JvdW5kLWlhbWdlIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvY2hhdC1leGFtcGxlLTQucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImZlYXR1cmVkLWNhcmQtaW1hZ2UiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZ3JhZGllbnQiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC10aXRsZS1ob2xkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtdGl0bGUiPkh1bWFuLWxpa2UgYW5zd2VyczwvZGl2PgogICAgICAgICAgICAgIDxwIGNsYXNzPSJncmV5LXRleHQiPldpdGggbmV3IEFpIHRlY2hub2xvZ3ksIHlvdSBjYW4gaGF2ZSBodW1hbi1saWtlIGN1c3RvbWVyIHNlcnZpY2UsIHdpdGhvdXQgdGhlIG5lZWQgb2YgYSBodW1hbiBhc3NpZ25lZCBmb3IgdGhhdCByb2xlLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1fMTAzNDdhMjMtYjdlOS1jMWRlLTNjZDQtYmYxODUzYjg2MTdlLTNmZjRkYzE2IiBkYXRhLXctaWQ9IjEwMzQ3YTIzLWI3ZTktYzFkZS0zY2Q0LWJmMTg1M2I4NjE3ZSIgc3R5bGU9Im9wYWNpdHk6MCIgY2xhc3M9ImZlYXR1cmVzLWNhcmQtaW1hZ2UtaG9sZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXMtY2FyZC1pbWFnZS1jb250YWluZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC5qcGciIGxvYWRpbmc9ImxhenkiIHNpemVzPSIobWF4LXdpZHRoOiA0NzlweCkgOTR2dywgKG1heC13aWR0aDogNzY3cHgpIDEwMHZ3LCAobWF4LXdpZHRoOiA5OTFweCkgNTl2dywgKG1heC13aWR0aDogMTQzOXB4KSA2MHZ3LCA4MTZweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTUwMC5qcGcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC04MDAuanBnIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtMTA4MC5qcGcgMTA4MHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyAxMzAwdyIgYWx0PSIiIGNsYXNzPSJmZWF0dXJlZC1jYXJkLWJhY2tncm91bmQtaWFtZ2UiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9jaGF0LWV4YW1wbGUtNi5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0iZmVhdHVyZWQtY2FyZC1pbWFnZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1ncmFkaWVudCI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLXRpdGxlLWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC10aXRsZSI+NTArIGxhbmd1YWdlczwvZGl2PgogICAgICAgICAgICAgIDxwIGNsYXNzPSJncmV5LXRleHQiPlByb3ZpZGUgY3VzdG9tZXIgc2VydmljZSB0byBldmVyeSBzZWdtZW50IG9mIHlvdXIgdmlzaXRvcnMsIHdpdGggemVybyBsYW5ndWFnZSBiYXJyaWVyLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGlkPSJQb3dlciIgY2xhc3M9InNlY3Rpb24iPgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0idGl0bGUtaG9sZGVyIHhsLXBhZGRpbmciPgogICAgICAgIDxkaXYgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPkRpc2NvdmVyIHRoZSBQb3dlciBvZiBBaTwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmV0YXVyZXMtcGFyYWdyYXBoLWhvbGRlciI+CiAgICAgICAgICAgIDxwPjI0LzcgYXZhaWxhYmlsaXR5IGFuZCBzdXBwb3J0PC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXNlY3Rpb24taG9sZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXNlY3Rpb24tY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1jZmEwODM0MS05YTFhLWVhZTAtOWYxNS0zOTc5NzdhNzg5NmEtM2ZmNGRjMTYiIGNsYXNzPSJkZXBsb3lpbmctYXBwLWNvbnRlbnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXRpdGxlLWhvbGRlciI+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+U2F2ZSB1cCB0byA4MCUgb2YgY29zdHM8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wYXJhZ3JhcGgtaG9sZGVyIj4KICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JleS10ZXh0Ij5Db21wYW5pZXMgcmVwb3J0IHNhdmluZyB1cCB0byA4MCUgb2YgdGhlaXIgY3VzdG9tZXIgc2VydmljZSBjb3N0cyEgT24gYXZlcmFnZSwgY29tcGFuaWVzIHNhdmUgMjAtNDAlIG9mIGN1c3RvbWVyIHNlcnZpY2UgY29zdHMsIGFuZCBoYXZlIGEgbWFqb3IgaW5jcmVhc2UgaW4gY3VzdG9tZXIgc2F0aXNmYWN0aW9uLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXRzLWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBkYXRhLXctaWQ9IjYxYzM4ZDU4LTVkZGUtNTBkMi1hMjAwLThlZmVjY2I3MjYzOCIgc3R5bGU9Im9wYWNpdHk6MCIgY2xhc3M9InN0YXRzLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwdXJwbGUtdGV4dCI+NDM54oKsIE1pbGxpb248L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyZXktcGFyYWdyYXBoIj5SZXBvcnRlZCBjb3N0IGN1dHRpbmcgYnkgY2hhdGJvdHMgaW4gdGhlIHJldGFpbCBzZWN0b3IgaW4gMjAyMy48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGRhdGEtdy1pZD0iNjFjMzhkNTgtNWRkZS01MGQyLWEyMDAtOGVmZWNjYjcyNjNkIiBzdHlsZT0ib3BhY2l0eTowIiBjbGFzcz0ic3RhdHMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB1cnBsZS10ZXh0Ij4yMC00MCU8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyZXktcGFyYWdyYXBoIj5BdmVyYWdlIGN1c3RvbWVyIHNlcnZpY2UgY29zdCByZWR1Y3Rpb24gYnkgY29tcGFuaWVzLjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBpZD0idy1ub2RlLWQ4NzJmYTRiLWNlOTAtZDc2Mi05YzA1LTRmN2FiNWUyMDZmNC0zZmY0ZGMxNiIgY2xhc3M9ImRlcGxveWluZy1hcHAtaW1hZ2VzLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDk5MXB4KSAxMDB2dywgKG1heC13aWR0aDogMTQzOXB4KSA2MHZ3LCA4MTYuNTYyNXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtNTAwLmpwZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTgwMC5qcGcgODAwdywgL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC0xMDgwLmpwZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQuanBnIDEzMDB3IiBhbHQ9IiIgY2xhc3M9ImRlcGxveWluZy1hcHAtYmciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXNjcmVlbnNob3QtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQWN0aW9uLXNoZWV0LTA1LnBuZyIgbG9hZGluZz0iZWFnZXIiIGFsdD0iIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1zY3JlZW5zaG90Ij48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImRlcGxveWluZy1hcHAtc2VjdGlvbi1jb250YWluZXIgc2Vjb25kIj4KICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1fNDhiOTdkNzQtYzJjMC1iZGM5LWY4YTMtYzAzZWQxYzEyOGY5LTNmZjRkYzE2IiBjbGFzcz0iZGVwbG95aW5nLWFwcC1pbWFnZXMtaG9sZGVyIj48aW1nIHNyYz0iaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDk5MXB4KSAxMDB2dywgKG1heC13aWR0aDogMTQzOXB4KSA2MHZ3LCA4MTYuNTQ2ODc1cHgiIHNyY3NldD0iaW1hZ2VzL0JHLUdyYWRpZW50LXAtNTAwLmpwZyA1MDB3LCBpbWFnZXMvQkctR3JhZGllbnQtcC04MDAuanBnIDgwMHcsIGltYWdlcy9CRy1HcmFkaWVudC1wLTEwODAuanBnIDEwODB3LCBpbWFnZXMvQkctR3JhZGllbnQuanBnIDEzMDB3IiBhbHQ9IiIgY2xhc3M9ImRlcGxveWluZy1hcHAtYmciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXNjcmVlbnNob3QtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQWN0aW9uLXNoZWV0LTA2LnBuZyIgbG9hZGluZz0iZWFnZXIiIGFsdD0iIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1zY3JlZW5zaG90Ij48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC10aXRsZS1ob2xkZXIiPgogICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiPlRhaWxvcmVkIFNvbHV0aW9uczwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXBhcmFncmFwaC1ob2xkZXIiPgogICAgICAgICAgICAgIDxwIGNsYXNzPSJncmV5LXRleHQiPkV4cGVyaWVuY2UgdGhlIHBpbm5hY2xlIG9mIEFJLWRyaXZlbiBjdXN0b21lciBzZXJ2aWNlIHdpdGggQm9vb3N0ZWQuIE91ciBleHBlcnRseSBkZXNpZ25lZCBjaGF0Ym90cyBhcmUgdGFpbG9yZWQgdG8gdW5kZXJzdGFuZCBhbmQgcmVzcG9uZCB0byB5b3VyIGN1c3RvbWVyc+KAmSBuZWVkcywgcHJvdmlkaW5nIGEgbGV2ZWwgb2YgZW5nYWdlbWVudCBhbmQgc2F0aXNmYWN0aW9uIHRoYXQgc2V0cyB5b3VyIGJ1c2luZXNzIGFwYXJ0LjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY2FsZW5kbHkuY29tL2Jvb29zdGVkY29tL2RlbW8iIGNsYXNzPSJ3LWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1saW5rLWhvbGRlciI+CiAgICAgICAgICAgICAgICA8ZGl2PkJvb2sgYSBmcmVlIGRlbW8gb2YgdGhlIHByb2R1Y3Q8L2Rpdj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQXJyb3cuc3ZnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImFycm93LXJpZ2h0Ij4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmFkaWVudC1saW5lIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMiPgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1fOWYzZWM5MjAtNTNiYi0xZWI5LWFiZTQtZGQwNDIyM2IyYjYxLTNmZjRkYzE2IiBkYXRhLXctaWQ9IjlmM2VjOTIwLTUzYmItMWViOS1hYmU0LWRkMDQyMjNiMmI2MSIgc3R5bGU9Im9wYWNpdHk6MCIgY2xhc3M9ImRlcGxveWluZy1hcHAtcG9pbnRzLWhvbGRlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXBvaW50cy1pY29uLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1NtYWxsLUljb24tMDEuc3ZnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImRlcGxveWluZy1hcHAtcG9pbnRzLWljb24iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludCI+PHNwYW4gY2xhc3M9ImRlcGxveWluZy1jb2xvciI+QXV0b21hdGUgeW91ciBjdXN0b21lciBzZXJ2aWNlLiA8L3NwYW4+U2F2ZSB0aW1lIGFuZCBtb25leSwgYnkgYXV0b21hdGluZyB5b3VyIGN1c3RvbWVyIHNlcnZpY2UgdXRpbGl6aW5nIEJvb29zdGVkIEFpLjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1iNDQwMjY5Mi01YTY0LTI5OWItNzNkZi0zOTM1OTZhNWJiYWUtM2ZmNGRjMTYiIGRhdGEtdy1pZD0iYjQ0MDI2OTItNWE2NC0yOTliLTczZGYtMzkzNTk2YTViYmFlIiBzdHlsZT0ib3BhY2l0eTowIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMtaG9sZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlcGxveWluZy1hcHAtcG9pbnRzLWljb24taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvU21hbGwtSWNvbi0wMy5zdmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMtaWNvbiI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXBvaW50Ij48c3BhbiBjbGFzcz0iZGVwbG95aW5nLWNvbG9yIj5HYXRoZXIgbGVhZHMuIDwvc3Bhbj5HYXRoZXIgbGVhZHMgYW5kIGNvbnZlcnQgeW91ciB2aXNpdG9ycyB0byBjdXN0b21lcnMgd2l0aCBCb29vc3RlZDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1jMThhODI0Mi1mZmRmLTY1MDgtZWIzYS0wNWVkN2Y2NDU5NTYtM2ZmNGRjMTYiIGRhdGEtdy1pZD0iYzE4YTgyNDItZmZkZi02NTA4LWViM2EtMDVlZDdmNjQ1OTU2IiBzdHlsZT0ib3BhY2l0eTowIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMtaG9sZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlcGxveWluZy1hcHAtcG9pbnRzLWljb24taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvU21hbGwtSWNvbi0wMi5zdmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMtaWNvbiI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXBvaW50Ij48c3BhbiBjbGFzcz0iZGVwbG95aW5nLWNvbG9yIj5CZWF1dGlmdWwgRGFzaGJvYXJkcy4gPC9zcGFuPk1hbmFnZSBjdXN0b21pemUgeW91ciBjaGF0Ym90IHdpdGggZWFzZS48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGlkPSJFeHBlcmllbmNlIiBjbGFzcz0ic2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZS1ob2xkZXIgeGwtcGFkZGluZyI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+U2VhbWxlc3MgRXhwZXJpZW5jZTwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmV0YXVyZXMtcGFyYWdyYXBoLWhvbGRlciI+CiAgICAgICAgICAgIDxwPk91ciB0b3AgZmVhdHVyZXMgYXJlIGRlc2lnbmVkIHRvIHByb3ZpZGUgeW91IHdpdGggYSBzZWFtbGVzcyBleHBlcmllbmNlIGFuZCBtYWtlIHlvdXIgY3VzdG9tZXIgc2VydmljZSBhcyBlYXN5IGFzIHBvc3NpYmxlLjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idGFiLWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0idGFiLWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IGRhdGEtY3VycmVudD0iVGFiIDUiIGRhdGEtZWFzaW5nPSJlYXNlIiBkYXRhLWR1cmF0aW9uLWluPSIzMDAiIGRhdGEtZHVyYXRpb24tb3V0PSIxMDAiIGNsYXNzPSJ3LXRhYnMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJzLW1lbnUgdy10YWItbWVudSI+CiAgICAgICAgICAgICAgPGEgZGF0YS13LXRhYj0iVGFiIDEiIGNsYXNzPSJ0YWItbGluayB3LWlubGluZS1ibG9jayB3LXRhYi1saW5rIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLWhvbGRlciI+PGltZyBsb2FkaW5nPSJsYXp5IiBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0Nvbm5lY3QtSWNvbi5zdmciIGFsdD0iIiBjbGFzcz0idGFiLWxpbmstaWNvbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLXRleHQiPjxzcGFuIGNsYXNzPSJsaWdodC1jb2xvciI+QWRkIHlvdXIgd2Vic2l0ZSB1cmw8YnI+PC9zcGFuPlBsYWNlIHVybCBhbmQgbGV0IEFpPGJyPmRvIHRoZSByZXN0PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgPGEgZGF0YS13LXRhYj0iVGFiIDMiIGNsYXNzPSJ0YWItbGluayB3LWlubGluZS1ibG9jayB3LXRhYi1saW5rIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLWhvbGRlciI+PGltZyBsb2FkaW5nPSJsYXp5IiBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1NtYWxsLUljb24tMDEuc3ZnIiBhbHQ9IiIgY2xhc3M9InRhYi1saW5rLWljb24iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItbGluay10ZXh0Ij48c3BhbiBjbGFzcz0ibGlnaHQtY29sb3IiPkFkZCBQREYgZmlsZXM8YnI+PC9zcGFuPkFkZCBhZGRpdGlvbmFsIGZpbGVzIHdpdGggZWFzZTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgIDxhIGRhdGEtdy10YWI9IlRhYiA0IiBjbGFzcz0idGFiLWxpbmsgdy1pbmxpbmUtYmxvY2sgdy10YWItbGluayI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItbGluay1ob2xkZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgc3JjPSIvc3RhdGljL2ltYWdlcy9aYXAtSWNvbi5zdmciIGFsdD0iIiBjbGFzcz0idGFiLWxpbmstaWNvbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLXRleHQiPjxzcGFuIGNsYXNzPSJsaWdodC1jb2xvciI+SW5zdGFsbCB0aGUgY2hhdGJvdCA8YnI+PC9zcGFuPkVhc2lseSBwbGFjZSB0aGUgY2hhdGJvdCBvbiB5b3VyIHBhZ2Ugd2l0aCBodG1sLWNvZGUgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgPGEgZGF0YS13LXRhYj0iVGFiIDUiIGNsYXNzPSJ0YWItbGluayB3LWlubGluZS1ibG9jayB3LXRhYi1saW5rIHctLWN1cnJlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiLWxpbmstaG9sZGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHNyYz0iL3N0YXRpYy9pbWFnZXMvU2hhcmUtSWNvbi5zdmciIGFsdD0iIiBjbGFzcz0idGFiLWxpbmstaWNvbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLXRleHQiPjxzcGFuIGNsYXNzPSJsaWdodC1jb2xvciI+Q3VzdG9taXplPGJyPjwvc3Bhbj5TYXZlIHRpbWUgd2l0aCBmYXN0IGN1c3RvbWl6YXRpb248L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYnMtY29udGVudCB3LXRhYi1jb250ZW50Ij4KICAgICAgICAgICAgICA8ZGl2IGRhdGEtdy10YWI9IlRhYiAxIiBjbGFzcz0idGFiLXBhbmUtdGFiLTEgdy10YWItcGFuZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItcGFuZS1ob2xkZXIgdGFiLXBhbmUtdGFiLTEiPjxpbWcgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSA5NHZ3LCAobWF4LXdpZHRoOiA3NjdweCkgOTN2dywgKG1heC13aWR0aDogOTkxcHgpIDk0dncsIChtYXgtd2lkdGg6IDE0MzlweCkgOTV2dywgMTI4NHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXAxLWFkZGluZy11cmwtcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL3N0ZXAxLWFkZGluZy11cmwtcC04MDAucG5nIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL3N0ZXAxLWFkZGluZy11cmwtcC0xMDgwLnBuZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDEtYWRkaW5nLXVybC5wbmcgMTMwMHciIGFsdD0iIiBzcmM9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXAxLWFkZGluZy11cmwucG5nIiBsb2FkaW5nPSJlYWdlciIgY2xhc3M9InRhYi1wYW5lLWltYWdlIj48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGRhdGEtdy10YWI9IlRhYiAzIiBjbGFzcz0idGFiLXBhbmUtdGFiLTEgdy10YWItcGFuZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItcGFuZS1ob2xkZXIgdGFiLXBhbmUtdGFiLTEiPjxpbWcgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSA5NHZ3LCAobWF4LXdpZHRoOiA3NjdweCkgOTN2dywgKG1heC13aWR0aDogOTkxcHgpIDk0dncsIChtYXgtd2lkdGg6IDE0MzlweCkgOTV2dywgMTI4NHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXAyLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9zdGVwMi1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDItcC0xMDgwLnBuZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDIucG5nIDEzMDB3IiBhbHQ9IiIgc3JjPSIvc3RhdGljL2ltYWdlcy9zdGVwMi5wbmciIGxvYWRpbmc9ImVhZ2VyIiBjbGFzcz0idGFiLXBhbmUtaW1hZ2UiPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgZGF0YS13LXRhYj0iVGFiIDQiIGNsYXNzPSJ3LXRhYi1wYW5lIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1wYW5lLWhvbGRlciB0YWItcGFuZS10YWItMSI+PGltZyBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDk0dncsIChtYXgtd2lkdGg6IDc2N3B4KSA5M3Z3LCAobWF4LXdpZHRoOiA5OTFweCkgOTR2dywgKG1heC13aWR0aDogMTQzOXB4KSA5NXZ3LCAxMjg0cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvc3RlcDMtcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL3N0ZXAzLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9zdGVwMy1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9zdGVwMy5wbmcgMTMwMHciIGFsdD0iIiBzcmM9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXAzLnBuZyIgbG9hZGluZz0iZWFnZXIiIGNsYXNzPSJ0YWItcGFuZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBkYXRhLXctdGFiPSJUYWIgNSIgY2xhc3M9InctdGFiLXBhbmUgdy0tdGFiLWFjdGl2ZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItcGFuZS1ob2xkZXIgdGFiLXBhbmUtdGFiLTEiPjxpbWcgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSA5NHZ3LCAobWF4LXdpZHRoOiA3NjdweCkgOTN2dywgKG1heC13aWR0aDogOTkxcHgpIDk0dncsIChtYXgtd2lkdGg6IDE0MzlweCkgOTV2dywgMTI4NHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXA0LXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9zdGVwNC1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDQtcC0xMDgwLnBuZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDQucG5nIDEzMDB3IiBhbHQ9IiIgc3JjPSIvc3RhdGljL2ltYWdlcy9zdGVwNC5wbmciIGxvYWRpbmc9ImVhZ2VyIiBjbGFzcz0idGFiLXBhbmUtaW1hZ2UiPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgaWQ9IkdldC1TdGFydGVkIiBjbGFzcz0ic2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZS1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlLXdyYXBwZXIiPgogICAgICAgICAgICA8aDEgY2xhc3M9InRpdGxlIj5TdGFydCBTYXZpbmcgVG9kYXk8L2gxPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmV0YXVyZXMtcGFyYWdyYXBoLWhvbGRlciI+CiAgICAgICAgICAgIDxwPkFyZSB5b3UgcmVhZHkgdG8gc3RlcCBpbnRvIHRoZSBmdXR1cmUgYnkgZGVwbG95aW5nIGEgZ3JvdW5kYnJlYWtpbmcgY3VzdG9tZXIgc2VydmljZSBib3Q/IFNjaGVkdWxlIGEgZGVtbyBhbmQgYmUgYW1hemVkIGJ5IHRoZSBvcHBvcnR1bml0aWVzIGJyb3VnaHQgYnkgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJiZXN0LXRoaW5ncy1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImJlc3QtdGhpbmdzLWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJiZXN0LXRoaW5ncy1ncmlkIj4KICAgICAgICAgICAgPGRpdiBpZD0idy1ub2RlLWQ2MmY5MzA3LTc3MGItYzNhOS1iN2MzLTUxZTY3OTk0ZDhkZC0zZmY0ZGMxNiIgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzM5YmM4ZmRiLTUwMTEtYTUwYi00ZDEwLTk4ZDNjMDE0NWFkNy0zZmY0ZGMxNiIgY2xhc3M9ImJlc3QtdGhpbmctYm94LWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xvZ28tY29sb3IucG5nIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDIxOHB4LCAobWF4LXdpZHRoOiA3NjdweCkgNjN2dywgKG1heC13aWR0aDogOTkxcHgpIDQ1dncsIDMwMHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL2xvZ28tY29sb3ItcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL2xvZ28tY29sb3IucG5nIDY4MHciIGFsdD0iIiBjbGFzcz0iYmVzdC10aGluZ3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzEyNjI4ZDllLTk5ZjAtMTkzYi1mODQ5LTRlN2RiN2MwMmFjZi0zZmY0ZGMxNiIgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzE0OTcyNmIzLTFlMTctMmU3Yi0zZGQ2LTUzM2UxZmY1NjFjMS0zZmY0ZGMxNiIgY2xhc3M9ImJlc3QtdGhpbmctYm94LWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1NtYWxsLUljb24tMDIuc3ZnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImJlc3QtdGhpbmctaWNvbiI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzFkNDk1NmYxLTQzOWItNmRjZS1mZWY2LTk5Nzg2NjIzMWY0NC0zZmY0ZGMxNiIgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtZDM1NzM4MWItMmE3Yi1jYTJiLTE0NWUtNTZmOGQwYWE3NDg3LTNmZjRkYzE2IiBjbGFzcz0iYmVzdC10aGluZy1ib3gtaG9sZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlc3QtdGhpbmctc2xpZGVyLWhvbGRlciI+CiAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1kZWxheT0iMzAwMCIgZGF0YS1hbmltYXRpb249InNsaWRlIiBjbGFzcz0ic2xpZGVyIHNsaWRlIHctc2xpZGVyIiBkYXRhLWF1dG9wbGF5PSJ0cnVlIiBkYXRhLWVhc2luZz0iZWFzZSIgZGF0YS1oaWRlLWFycm93cz0iZmFsc2UiIGRhdGEtZGlzYWJsZS1zd2lwZT0iZmFsc2UiIGRhdGEtYXV0b3BsYXktbGltaXQ9IjAiIGRhdGEtbmF2LXNwYWNpbmc9IjMiIGRhdGEtZHVyYXRpb249IjUwMCIgZGF0YS1pbmZpbml0ZT0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFzayB3LXNsaWRlci1tYXNrIj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9DYXJkLTA0LnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC5wbmcgODQ2dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9DYXJkLTAzLnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9DYXJkLTAzLnBuZyAxMTM4dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9DYXJkLTAyLnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMi1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMi1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMi5wbmcgODQ2dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9jYXJkLTEucG5nIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDE1MHB4LCAyMDBweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9jYXJkLTEtcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL2NhcmQtMS5wbmcgNzg4dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSJpbWFnZXMvQWN0aW9uLXNoZWV0LTA2LnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQWN0aW9uLXNoZWV0LTA2LXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9BY3Rpb24tc2hlZXQtMDYtcC04MDAucG5nIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL0FjdGlvbi1zaGVldC0wNi1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9BY3Rpb24tc2hlZXQtMDYucG5nIDEyNDJ3IiBhbHQ9IiIgY2xhc3M9InNsaWRlLWltYWdlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGUgdy1zbGlkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlLWltYWdlLWhvbGRlciI+PGltZyBzcmM9ImltYWdlcy9DYXJkLTA0LnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC5wbmcgODQ2dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoaWRlIHctc2xpZGVyLWFycm93LWxlZnQiPgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1pY29uLXNsaWRlci1sZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoaWRlIHctc2xpZGVyLWFycm93LXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctaWNvbi1zbGlkZXItcmlnaHQiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhpZGUgdy1zbGlkZXItbmF2IHctcm91bmQgdy1udW0iPjwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdj5NYW55IEJlbmVmaXRzPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1fOTU3Mjc4ZjEtYzcxYS1lNjFhLThmOTItZWFkMTNlOTFmNTdkLTNmZjRkYzE2IiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzUzODFlZmVjLTE5NTMtMzc1My1jMjI1LTEyMGQyMGU4YTFiNS0zZmY0ZGMxNiIgY2xhc3M9ImJlc3QtdGhpbmctYm94LWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVzdC10aGluZy1hcHAtaG9sZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhhbmQtaW1hZ2UtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvUGhvbmUtQm9yZGVyLWV4YW1wbGUucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImhhbmQtaW1hZ2UiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY3JlZW4taW1hZ2UtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQXBwLXNob3djYXNlLS1JbWFnZS5qcGciIGxvYWRpbmc9ImxhenkiIHNpemVzPSIobWF4LXdpZHRoOiA0NzlweCkgNDJ2dywgKG1heC13aWR0aDogMTQzOXB4KSAyMTAuNzE4NzVweCwgMjI1LjQyMTg3NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL0FwcC1zaG93Y2FzZS0tSW1hZ2UtcC01MDAuanBnIDUwMHcsIHgvc3RhdGljL2ltYWdlcy9BcHAtc2hvd2Nhc2UtLUltYWdlLXAtNTAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9BcHAtc2hvd2Nhc2UtLUltYWdlLmpwZyA5ODB3IiBhbHQ9IiIgY2xhc3M9InNjcmVlbi1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3djYXNlLXRleHQiPlVuaWZpZWQgY3Jvc3MtcGxhdGZvcm0gZXhwZXJpZW5jZTwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgZGF0YS13LWlkPSJlZDViZjAyYS1jYjMxLWQ3ZTEtMTBhMS0zMjJjZmEzZTgxMGUiIHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAyMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDApIHNrZXcoMCwgMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMjBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDApIHJvdGF0ZVkoMCkgcm90YXRlWigwKSBza2V3KDAsIDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMjBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDApIHJvdGF0ZVkoMCkgcm90YXRlWigwKSBza2V3KDAsIDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAyMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDApIHNrZXcoMCwgMCk7b3BhY2l0eTowIiBjbGFzcz0iYmVzdC10aGluZ3MtZm9vdGVyLWdyaWQiPgogICAgICAgICAgPGRpdiBpZD0idy1ub2RlLV8yOTA0MGE1OC1lOTQ0LWVkZjktYmM2MC1kYjhhMGJkYjMwNzgtM2ZmNGRjMTYiIGNsYXNzPSJsb2dvcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLXdyYXBwZXIgXzAxIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9XZWJmbG93LUxvZ28tR3JhZGllbnQuanBnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvV2ViZmxvdy1Mb2dvLUdyYWRpZW50LXAtNTAwLmpwZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9XZWJmbG93LUxvZ28tR3JhZGllbnQuanBnIDY4MHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmcucG5nIDEwMjR3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9TaG9waWZ5LndlYnAiIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9TaG9waWZ5LXAtNTAwLndlYnAgNTAwdywgaW1hZ2VzL1Nob3BpZnktcC04MDAud2VicCA4MDB3LCBpbWFnZXMvU2hvcGlmeS1wLTEwODAud2VicCAxMDgwdywgaW1hZ2VzL1Nob3BpZnktcC0xNjAwLndlYnAgMTYwMHcsIGltYWdlcy9TaG9waWZ5LndlYnAgMjAwMHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL3dpeC1sb2dvLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL3dpeC1sb2dvLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy93aXgtbG9nby5wbmcgNTEydyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvaTNnOTRtczZ0bm93aG1ya2l1dm8ud2VicCIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL2kzZzk0bXM2dG5vd2htcmtpdXZvLXAtNTAwLndlYnAgNTAwdywgL3N0YXRpYy9pbWFnZXMvaTNnOTRtczZ0bm93aG1ya2l1dm8tcC04MDAud2VicCA4MDB3LCAvc3RhdGljL2ltYWdlcy9pM2c5NG1zNnRub3dobXJraXV2by53ZWJwIDEwMDB3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9QaXhwYV9Mb2dvLmpwZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGFhLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24td3JhcHBlciBfMDEiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC5qcGciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9XZWJmbG93LUxvZ28tR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC5qcGcgNjgwdyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmctcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy5wbmcgMTAyNHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1Nob3BpZnkud2VicCIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL1Nob3BpZnktcC01MDAud2VicCA1MDB3LCBpbWFnZXMvU2hvcGlmeS1wLTgwMC53ZWJwIDgwMHcsIGltYWdlcy9TaG9waWZ5LXAtMTA4MC53ZWJwIDEwODB3LCBpbWFnZXMvU2hvcGlmeS1wLTE2MDAud2VicCAxNjAwdywgaW1hZ2VzL1Nob3BpZnkud2VicCAyMDAwdyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvd2l4LWxvZ28ucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvd2l4LWxvZ28tcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL3dpeC1sb2dvLnBuZyA1MTJ3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9pM2c5NG1zNnRub3dobXJraXV2by53ZWJwIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvaTNnOTRtczZ0bm93aG1ya2l1dm8tcC01MDAud2VicCA1MDB3LCAvc3RhdGljL2ltYWdlcy9pM2c5NG1zNnRub3dobXJraXV2by1wLTgwMC53ZWJwIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL2kzZzk0bXM2dG5vd2htcmtpdXZvLndlYnAgMTAwMHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1BpeHBhX0xvZ28uanBnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbGF0YWEucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi13cmFwcGVyIF8wMiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvZ29vZ2xlLXNpdGVzMzc4OC5qcGciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9nb29nbGUtc2l0ZXMzNzg4LXAtNTAwLmpwZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9nb29nbGUtc2l0ZXMzNzg4LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9nb29nbGUtc2l0ZXMzNzg4LmpwZyA4NjZ3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9zcXVhcmVzcGFjZV9sb2dvX2ljb25fMTgxMjUyLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9Hb0RhZGR5X0xvZ29fLV9UaGVfR08uc3ZnLXAtMTYwMC5wbmcgMTYwMHcsIC9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmctcC0yMDAwLnBuZyAyMDAwdywgL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy5wbmcgMjI5OHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2Q2MDEyZjY3Njk5MmQ1MWExNDllMjRjOTcxY2I3M2FkLndlYnAiIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9kNjAxMmY2NzY5OTJkNTFhMTQ5ZTI0Yzk3MWNiNzNhZC1wLTUwMC53ZWJwIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL2Q2MDEyZjY3Njk5MmQ1MWExNDllMjRjOTcxY2I3M2FkLndlYnAgNjE1dyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbGF0YWEucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvV2ViZmxvdy1Mb2dvLUdyYWRpZW50LmpwZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC1wLTUwMC5qcGcgNTAwdywgL3N0YXRpYy9pbWFnZXMvV2ViZmxvdy1Mb2dvLUdyYWRpZW50LmpwZyA2ODB3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmctcC04MDAucG5nIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLnBuZyAxMDI0dyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi13cmFwcGVyIF8wMiI+CiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2dvb2dsZS1zaXRlczM3ODguanBnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvZ29vZ2xlLXNpdGVzMzc4OC1wLTUwMC5qcGcgNTAwdywgL3N0YXRpYy9pbWFnZXMvZ29vZ2xlLXNpdGVzMzc4OC1wLTgwMC5qcGcgODAwdywgL3N0YXRpYy9pbWFnZXMvZ29vZ2xlLXNpdGVzMzc4OC5qcGcgODY2dyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvc3F1YXJlc3BhY2VfbG9nb19pY29uXzE4MTI1Mi5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9Hb0RhZGR5X0xvZ29fLV9UaGVfR08uc3ZnLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmctcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmctcC04MDAucG5nIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmctcC0xMDgwLnBuZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy1wLTE2MDAucG5nIDE2MDB3LCAvc3RhdGljL2ltYWdlcy9Hb0RhZGR5X0xvZ29fLV9UaGVfR08uc3ZnLXAtMjAwMC5wbmcgMjAwMHcsIC9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmcucG5nIDIyOTh3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9kNjAxMmY2NzY5OTJkNTFhMTQ5ZTI0Yzk3MWNiNzNhZC53ZWJwIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvZDYwMTJmNjc2OTkyZDUxYTE0OWUyNGM5NzFjYjczYWQtcC01MDAud2VicCA1MDB3LCAvc3RhdGljL2ltYWdlcy9kNjAxMmY2NzY5OTJkNTFhMTQ5ZTI0Yzk3MWNiNzNhZC53ZWJwIDYxNXciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGFhLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC5qcGciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9XZWJmbG93LUxvZ28tR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC5qcGcgNjgwdyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmctcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy5wbmcgMTAyNHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvd2Nhc2UtdGV4dC1ub3JtYWwiPkNvbXBhdGlibGUgd2l0aCBtYW55IHBsYXRmb3JtczwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJmb290ZXItaG9sZGVyIj4KICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci13cmFwcGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbnRlbnQiPgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1lOTJiZjQ4NC1hNjA1LTQxMzItZjE0MS00NTE4NDY4YWY3ZTItNDY4YWY3ZDkiIGNsYXNzPSJmb290ZXItYmxvY2siPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUtc21hbGwiPkNvbXBhbnk8L2Rpdj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNQcm9kdWN0IiBjbGFzcz0iZm9vdGVyLWxpbmsiPlByb2R1Y3Q8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjRmVhdHVyZXMiIGNsYXNzPSJmb290ZXItbGluayI+RmVhdHVyZXM8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjUG93ZXIiIGNsYXNzPSJmb290ZXItbGluayI+UG93ZXI8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjRXhwZXJpZW5jZSIgY2xhc3M9ImZvb3Rlci1saW5rIj5FeHBlcmllbmNlPC9hPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1lOTJiZjQ4NC1hNjA1LTQxMzItZjE0MS00NTE4NDY4YWY3ZWYtNDY4YWY3ZDkiIGNsYXNzPSJmb290ZXItYmxvY2siPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUtc21hbGwiPlNvY2lhbCBtZWRpYTwvZGl2PgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvOTg5MDIwMTYvYWRtaW4vZmVlZC9wb3N0cy8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iZm9vdGVyLWxpbmsiPkxpbmtlZGluPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9ib29vc3RlZGNoYXQvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImZvb3Rlci1saW5rIj5JbnN0YWdyYW08L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vYm9vb3N0ZWRjb20iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iZm9vdGVyLWxpbmsiPkZhY2Vib29rPC9hPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1lOTJiZjQ4NC1hNjA1LTQxMzItZjE0MS00NTE4NDY4YWY3ZmEtNDY4YWY3ZDkiIGNsYXNzPSJmb290ZXItYmxvY2siPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUtc21hbGwiPkFib3V0IHNlcnZpY2U8L2Rpdj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii90ZXJtLWNvbmRpdGlvbi8iIGNsYXNzPSJmb290ZXItbGluayI+VGVybXMgYW5kIGNvbmRpdGlvbnM8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJpdmFjeS1wb2xpY3kvIiBjbGFzcz0iZm9vdGVyLWxpbmsiPlByaXZhY3kgcG9saWN5PC9hPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWRpdmlkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItY29weXJpZ2h0LWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvcHlyaWdodC1jZW50ZXIiPsKpIEFua2t1cmkgU29mdHdhcmUgb3kgLyAyMDIzPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItY29weXJpZ2h0LWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvcHlyaWdodC1jZW50ZXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQuanBnIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iMTAwdnciIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTEwODAuanBnIDEwODB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC5qcGcgMTMwMHciIGFsdD0iIiBjbGFzcz0iZm9vdGVyLWdyYWRpZW50Ij4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImJ1eS10ZW1wbGF0ZSI+CiAgICA8YSBocmVmPSJodHRwczovL2NhbGVuZGx5LmNvbS9ib29vc3RlZGNvbS9kZW1vIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ1eS10ZW1wbGF0ZS1ob2xkZXIgdy1pbmxpbmUtYmxvY2siPgogICAgICA8ZGl2IGNsYXNzPSJidXktdGVtcGxhdGUtdGV4dCI+PHN0cm9uZz5Cb29rIGEgZnJlZSBkZW1vIG9mIHRoZSBwcm9kdWN0PC9zdHJvbmc+PC9kaXY+CiAgICA8L2E+CiAgPC9kaXY+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZDNlNTR2MTAzajhxYmIuY2xvdWRmcm9udC5uZXQvanMvanF1ZXJ5LTMuNS4xLm1pbi5kYzVlN2YxOGM4LmpzP3NpdGU9NjU1MzkzMGIwNjE2YWIzNDNmZjRkYmViIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGludGVncml0eT0ic2hhMjU2LTkvYWxpVThkR2QydGI2T1NzdXppeGVWNHkvZmFUcWdGdG9oZXRwaGJiajA9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iL3N0YXRpYy9qcy93ZWJmbG93LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K', '', '{"Content-Type": "text/html; charset=utf-8"}')
INSERT INTO "silk_response" ("id", "request_id", "status_code", "raw_body", "body", "encoded_headers") VALUES ('462ca548-7546-4045-9342-0d3f38bfd1b9', '35cd3a55-9132-4761-a6ad-f371f8e313c7', 200, 'CjwhRE9DVFlQRSBodG1sPjwhLS0gIExhc3QgUHVibGlzaGVkOiBUdWUgTm92IDIxIDIwMjMgMjE6Mjc6MDkgR01UKzAwMDAgKENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lKSAgLS0+CjxodG1sIGRhdGEtd2YtcGFnZT0iNjU1MzkzMGMwNjE2YWIzNDNmZjRkYzE2IiBkYXRhLXdmLXNpdGU9IjY1NTM5MzBiMDYxNmFiMzQzZmY0ZGJlYiI+CjxoZWFkPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8dGl0bGU+Qm9vb3N0ZWQgLSBOZXh0IEdlbmVyYXRpb24gQWkgY2hhdGJvdDwvdGl0bGU+CiAgPG1ldGEgY29udGVudD0iRGlzY292ZXIgVGhlIFBvd2VyIE9mIEFpIGNoYXRib3RzIiBuYW1lPSJkZXNjcmlwdGlvbiI+CiAgPG1ldGEgY29udGVudD0iQm9vb3N0ZWQgLSBOZXh0IEdlbmVyYXRpb24gQWkgY2hhdGJvdCIgcHJvcGVydHk9Im9nOnRpdGxlIj4KICA8bWV0YSBjb250ZW50PSJEaXNjb3ZlciBUaGUgUG93ZXIgT2YgQWkgY2hhdGJvdHMiIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiI+CiAgPG1ldGEgY29udGVudD0iQm9vb3N0ZWQgLSBOZXh0IEdlbmVyYXRpb24gQWkgY2hhdGJvdCIgcHJvcGVydHk9InR3aXR0ZXI6dGl0bGUiPgogIDxtZXRhIGNvbnRlbnQ9IkRpc2NvdmVyIFRoZSBQb3dlciBPZiBBaSBjaGF0Ym90cyIgcHJvcGVydHk9InR3aXR0ZXI6ZGVzY3JpcHRpb24iPgogIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIj4KICA8bWV0YSBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIiBuYW1lPSJ0d2l0dGVyOmNhcmQiPgogIDxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiBuYW1lPSJ2aWV3cG9ydCI+CiAgPGxpbmsgaHJlZj0iL3N0YXRpYy9jc3Mvbm9ybWFsaXplLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CiAgPGxpbmsgaHJlZj0iL3N0YXRpYy9jc3Mvd2ViZmxvdy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgogIDxsaW5rIGhyZWY9Ii9zdGF0aWMvY3NzL2Jvb29zdGVkLndlYmZsb3cuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIiByZWw9InByZWNvbm5lY3QiPgogIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIHJlbD0icHJlY29ubmVjdCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvd2ViZm9udC8xLjYuMjYvd2ViZm9udC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+V2ViRm9udC5sb2FkKHsgIGdvb2dsZTogeyAgICBmYW1pbGllczogWyJMYXRvOjEwMCwxMDBpdGFsaWMsMzAwLDMwMGl0YWxpYyw0MDAsNDAwaXRhbGljLDcwMCw3MDBpdGFsaWMsOTAwLDkwMGl0YWxpYyIsIkRNIFNhbnM6cmVndWxhcixpdGFsaWMsNTAwLDUwMGl0YWxpYyw3MDAsNzAwaXRhbGljIiwiSW50ZXI6MTAwLDIwMCwzMDAscmVndWxhciw1MDAsNjAwLDcwMCw4MDAsOTAwIl0gIH19KTs8L3NjcmlwdD4KICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IWZ1bmN0aW9uKG8sYyl7dmFyIG49Yy5kb2N1bWVudEVsZW1lbnQsdD0iIHctbW9kLSI7bi5jbGFzc05hbWUrPXQrImpzIiwoIm9udG91Y2hzdGFydCJpbiBvfHxvLkRvY3VtZW50VG91Y2gmJmMgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoKSYmKG4uY2xhc3NOYW1lKz10KyJ0b3VjaCIpfSh3aW5kb3csZG9jdW1lbnQpOzwvc2NyaXB0PgogIDxsaW5rIGhyZWY9Ii9zdGF0aWMvaW1hZ2VzL2Zhdmljb24ucG5nIiByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3gtaWNvbiI+CiAgPGxpbmsgaHJlZj0iL3N0YXRpYy9pbWFnZXMvd2ViY2xpcC5wbiIgcmVsPSJhcHBsZS10b3VjaC1pY29uIj4KPC9oZWFkPgo8Ym9keT4KPGRpdiBkYXRhLWFuaW1hdGlvbj0iZGVmYXVsdCIgZGF0YS1jb2xsYXBzZT0ibWVkaXVtIiBkYXRhLWR1cmF0aW9uPSI0MDAiIGRhdGEtZWFzaW5nPSJlYXNlIiBkYXRhLWVhc2luZzI9ImVhc2UiIHJvbGU9ImJhbm5lciIgY2xhc3M9Im5hdmJhciB3LW5hdiI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIgbmF2YmFyLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9Im5hdmJhci1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9Im5hdmJhci1jb250YWluZXIiPgogICAgICAgICAgPGEgaHJlZj0iLyIgYXJpYS1jdXJyZW50PSJwYWdlIiBjbGFzcz0iYnJhbmQgdy1uYXYtYnJhbmQgdy0tY3VycmVudCI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xvZ28taXNvLWtvcGlvLnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDk5MXB4KSAxMjBweCwgOTcuNzAzMTI1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvbG9nby1pc28ta29waW8tcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL2xvZ28taXNvLWtvcGlvLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby1wLTE2MDAucG5nIDE2MDB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby1wLTIwMDAucG5nIDIwMDB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby1wLTI2MDAucG5nIDI2MDB3LCAvc3RhdGljL2ltYWdlcy9sb2dvLWlzby1rb3Bpby5wbmcgMzAwMHciIGFsdD0iIiBjbGFzcz0iYnJhbmQtaW1hZ2UiPjwvYT4KICAgICAgICAgIDxuYXYgcm9sZT0ibmF2aWdhdGlvbiIgY2xhc3M9Im5hdi1tZW51IHctbmF2LW1lbnUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtbWVudS1saW5rLWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LW1lbnUtbGluay1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWxpbmtzIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI1Byb2R1Y3QiIGNsYXNzPSJuYXYtbGluayB3LW5hdi1saW5rIj5UdW90ZTwvYT4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0ZlYXR1cmVzIiBjbGFzcz0ibmF2LWxpbmsgdy1uYXYtbGluayI+T21pbmFpc3V1ZGV0PC9hPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjUG93ZXIiIGNsYXNzPSJuYXYtbGluayB3LW5hdi1saW5rIj5UZWhvPC9hPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjRXhwZXJpZW5jZSIgY2xhc3M9Im5hdi1saW5rIHctbmF2LWxpbmsiPkvDpHl0dMO2PC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LW1lbnUtYnV0dG9uLWhvbGRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvYXBwIiBjbGFzcz0iYnV0dG9uIG5hdmJhci1idXR0b24gdy1idXR0b24iPkxPRyBJTjwvYT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L25hdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1lbnUtYnV0dG9uIHctbmF2LWJ1dHRvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InctaWNvbi1uYXYtbWVudSI+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KLyogQ09NTU9OIFNUWUxFUyAqLwo6cm9vdCwKCWh0bWwgewoJZm9udC1zaXplOiAxMHB4OyAKfQoqIHsKcGFkZGluZzogMDsgCiBtYXJnaW46IDA7IAogb3V0bGluZTogMDt9Cmh0bWwsCmJvZHkgewoJaGVpZ2h0OiAxMDAlOwoJd2lkdGg6IDEwMCU7Cglmb250LXdlaWdodDogbm9ybWFsOwoJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CgktbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwoJYmFja2dyb3VuZC1jb2xvcjogI0VERjFGNDsKCWZvbnQtc2l6ZTogMTVweDsKfQp1bCwKb2wgewoJbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlOwp9CnRleHRhcmVhLAppbnB1dFt0eXBlPSd0ZXh0J10sCmlucHV0W3R5cGU9J2J1dHRvbiddLAppbnB1dFt0eXBlPSdzdWJtaXQnXSwKaW5wdXRbdHlwZT0nZGF0ZSddIHsKCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQppbnB1dDpmb2N1cywKc2VsZWN0OmZvY3VzLAp0ZXh0YXJlYTpmb2N1cywKYnV0dG9uOmZvY3VzIHsKCW91dGxpbmU6IG5vbmU7Cn0ubGlua3sKCWNvbG9yOiAjMTk4MEQ4OwoJY3Vyc29yOiBwb2ludGVyOwp9Ci5jUHsKCWN1cnNvcjogcG9pbnRlcjsKfS5mbGV4LWNlbnRlci12ewoJZGlzcGxheTogZmxleDsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLyogQ09NTU9OIFNUWUxFUyAqLwoud2YtZm9ybS1jb21wb25lbnQgewoJcGFkZGluZzogMzBweCA0MHB4IDYwcHg7Cn0KLndmLWZvcm0tcGFpZCB7CglwYWRkaW5nLWJvdHRvbTogNDVweDsKfQoud2YtcGFyZW50IHsKCXBhZGRpbmc6IDMwcHggMDsKCWhlaWdodDogMTAwJTsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7CglvdmVyZmxvdzogYXV0bzsKCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CgliYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTt9Ci53Zi13cmFwcGVyICogewoJYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoud2Ytd3JhcHBlciB7Cgl3aWR0aDogMTAwJTsKCW1heC13aWR0aDogNzAwcHg7Cglib3JkZXItcmFkaXVzOiAxMHB4OwoJbWFyZ2luOiBhdXRvOwoJYm9yZGVyOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWNvbG9yOiAjMjIyOwoJYm94LXNoYWRvdzogMHB4IDBweCAycHggMCAjMDAwMDAwMzM7Cn0KLmlmcmFtZS1jb250YWluZXJ7CgloZWlnaHQ6IDEwMCU7Cgl3aWR0aDogMTAwJTsKCWJvcmRlcjogbm9uZTsKCW1pbi1oZWlnaHQ6IDM2NXB4Owp9Ci53Zi1sb2dvIHsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW4tYm90dG9tOiAzMHB4OwoJbWF4LWhlaWdodDogNjBweDsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci53Zi1sb2dvW2RhdGEtdXgtbG9nby1zaXplPSdsZyddIHsKCWhlaWdodDogNjBweDsKfQoud2YtbG9nb1tkYXRhLXV4LWxvZ28tc2l6ZT0nbWQnXSB7CgloZWlnaHQ6IDUwcHg7Cn0KLndmLWxvZ29bZGF0YS11eC1sb2dvLXNpemU9J3NtJ10gewoJaGVpZ2h0OiAzMHB4Owp9Ci53Zi1sb2dvW2RhdGEtdXgtbG9nby1wb3M9J2xlZnQnXSB7CglqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7Cn0KLndmLWxvZ29bZGF0YS11eC1sb2dvLXBvcz0nY2VudGVyJ10gewoJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLndmLWxvZ29bZGF0YS11eC1sb2dvLXBvcz0ncmlnaHQnXSB7CglqdXN0aWZ5LWNvbnRlbnQ6IHJpZ2h0Owp9Ci53Zi1oZWFkZXIgewoJZm9udC1zaXplOiAyMnB4OwoJcGFkZGluZy1ib3R0b206IDM1cHg7Cglmb250LXdlaWdodDogYm9sZDsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KLndmLXNlYy13cmFwewoJbWFyZ2luLWJvdHRvbTogNDBweDsKfQoud2Ytc2VjLXdyYXA6Zmlyc3QtY2hpbGQgLndmLXNlYy1oZWFkewoJbWFyZ2luLXRvcDogMDsKfQoud2Ytc2VjLWhlYWQgewoJbWFyZ2luLWJvdHRvbTogMjBweDsKCW1hcmdpbi10b3A6IDM1cHg7Cn0KLndmLXNlYy10aXRsZSB7Cglmb250LXNpemU6IDE4cHg7Cglmb250LXdlaWdodDogYm9sZDsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KLndmLXNlYy1kZXNjIHsKCW1hcmdpbjogMDsKCW1hcmdpbi10b3A6IDVweDsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KLndmLXJvdyB7CgltYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci53Zi1yb3ctd2l0aC1zdXBwbGVtZW50YXJ5ewoJbWFyZ2luLWJvdHRvbTogMTBweDsKfQoud2YtbGFiZWwgewoJcGFkZGluZzogN3B4IDA7Cgl3b3JkLWJyZWFrOiBicmVhay13b3JkOwp9Ci53Zi1maWVsZDpub3QoIC5tdWx0aXBsZS1maWVsZHMtZGl2KSB7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJd29yZC1icmVhazogYnJlYWstd29yZDsKCWJvcmRlcjogMDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoud2YtZmllbGQtaW5uZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogZmxleDsKCWZsZXg6IDE7Cn0KLndmLWZpZWxkLWlucHV0OmZvY3VzIHsKCWJvcmRlcjogMXB4IHNvbGlkICMxOTgwZDg7Cn0KLndmLWZpZWxkLWRyb3Bkb3duIC53Zi1maWVsZC1pbnB1dDpmb2N1c3sKCWJvcmRlcjogbm9uZTsgIC8qIG11bHRpcGlja2xpc3Qgc2VhcmNoICovCn0ud2YtaW5wdXQtZm9jdXMud2YtZmllbGQ6OmFmdGVyIHsKCW9wYWNpdHk6IDE7Cn0KLndmLWlucHV0LWZvY3VzLndmLWZpZWxkOjphZnRlciwKLndmLWZpZWxkLWVycm9yLWFjdGl2ZS53Zi1maWVsZCAud2YtZmllbGQtZXJyb3IgewoJZGlzcGxheTogYmxvY2s7Cn0KLndmLWZpZWxkLWVycm9yLWFjdGl2ZS53Zi1maWVsZCAud2YtZXJyb3Itdmlldy1tb3JlIHsKZGlzcGxheTogZmxleDsKfS53Zi1maWVsZC1lcnJvci1hY3RpdmUud2YtZmllbGQgLndmLWZpZWxkLWlucHV0Om5vdCguZGF0ZS1pbnB1dC1jb250YWluZXIgLndmLWZpZWxkLWlucHV0KSwud2YtZmllbGQtZXJyb3ItYWN0aXZlLndmLWZpZWxkIC53Zi1maWVsZC1kcm9wZG93biwgLndmLWZpZWxkLWVycm9yLWFjdGl2ZSAuZGF0ZS1pbnB1dC1jb250YWluZXIgewoJYm9yZGVyOiAxcHggc29saWQgI0ZENkI2RDsKCWJveC1zaGFkb3c6IDAgMCAxcHggMXB4ICNGNEEyQTI7Cn0KLndmLWZpZWxkLW1hbmRhdG9yeSAud2YtZmllbGQtaW5uZXI6OmJlZm9yZSB7Cgljb250ZW50OiAnJzsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWluc2V0LWlubGluZS1zdGFydDogMHB4OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmNmE2YTsKCXdpZHRoOiAzcHg7CgloZWlnaHQ6IDEwMCU7Cglib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzOiA0cHg7Cglib3JkZXItZW5kLXN0YXJ0LXJhZGl1czogNHB4OwoJei1pbmRleDogMjsKCXRvcDogMDsKCWJvdHRvbTogMDsKfQoud2YtZmllbGQtbWFuZGF0b3J5IC53Zi1maWVsZC1pbm5lci5uby1yZXN1bHRzLWVsZW06OmJlZm9yZXsgCgloZWlnaHQ6IDk4JTsKfQoud2YtZmllbGQtaW5wdXQsCi53Zi1maWVsZC1kcm9wZG93biB7Cgl3aWR0aDogMTAwJTsKCWJvcmRlcjogMXB4IHNvbGlkICNCREM4RDM7Cglib3JkZXItcmFkaXVzOiA0cHg7CglwYWRkaW5nOiAxMHB4IDE1cHg7CgltaW4taGVpZ2h0OiAzOHB4OwoJZm9udC1zaXplOiAxNXB4OwoJZm9udC1mYW1pbHk6IGluaGVyaXQ7Cn0Kc2VsZWN0Om5vdChbZGF0YS13Zm9ybS1maWVsZD0nc2VsZWN0LW11bHRpcGxlJ10pIHsKCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKCS1tb3otYXBwZWFyYW5jZTogbm9uZTsKCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyBmaWxsPSdibGFjaycgaGVpZ2h0PSczNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+XCIpOwoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKCWJhY2tncm91bmQtcG9zaXRpb24teDogOTklOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCW1pbi13aWR0aDogNzBweDsKfQppbnB1dCwKc2VsZWN0IHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLndmLWZpZWxkLWl0ZW0gewoJbWluLWhlaWdodDogMzhweDsKfQoud2YtdGltZS1maWVsZC13cmFwcGVyIHsKCWRpc3BsYXk6IGZsZXg7CglmbGV4OiAxOwp9Ci53Zi10aW1lLWZpZWxkLXdyYXBwZXIgc2VsZWN0IHsKCW1hcmdpbi1sZWZ0OiAxMHB4Owp9Ci53Zi1mb3JtLWNvbXBvbmVudCAud2YtZmllbGQtZXJyb3IsCgkud2YtZm9ybS1jb21wb25lbnQgLndmLWZpZWxkLWhlbHAtdGV4dCB7Cgl0ZXh0LWFsaWduOiBsZWZ0Owp9Ci53Zi1mb3JtLWNvbXBvbmVudCAud2YtZmllbGQtZXJyb3IgewoJdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLndmLWZpZWxkLWVycm9yIHsKCWNvbG9yOiAjRkY1MDUwOwoJZm9udC1zaXplOiAxMnB4OwoJbWFyZ2luLXRvcDogNHB4OwoJZGlzcGxheTogbm9uZTsKCWFuaW1hdGlvbjogc2hha2UgMC44MnMgY3ViaWMtYmV6aWVyKC4zNiwgLjA3LCAuMTksIC45NykgYm90aDsKCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CgliYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CglwZXJzcGVjdGl2ZTogMTAwMHB4Owp9Ci53Zi1maWVsZC1lcnJvci1sb25nIHsKCXdoaXRlLXNwYWNlOiBub3dyYXA7CglvdmVyZmxvdzogaGlkZGVuOwoJdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Cn0KLndmLWVycm9yLXZpZXctbW9yZSB7Cglmb250LXNpemU6IDEycHg7CglkaXNwbGF5OiBub25lOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cgljb2xvcjogIzE4ODBkODsKCW1hcmdpbi10b3A6IDRweDsKCSY6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CgljdXJzb3I6IHBvaW50ZXI7Cn0KfQoud2YtZXJyb3ItcGFyZW50LWVsZSB7CglkaXNwbGF5OiBmbGV4OwoJanVzdGlmeS1jb250ZW50OiBlbmQ7Cn0KLndmLWZpZWxkLWhlbHAtdGV4dCB7Cgljb2xvcjogIzUxNTE1OTsKCWZvbnQtc2l6ZTogMTJweDsKCW1hcmdpbi10b3A6IDVweDsKCX0KLndmLWZpZWxkLWhlbHAtdGV4dCArIC53Zi1lcnJvci1wYXJlbnQtZWxlIC53Zi1maWVsZC1lcnJvciwKIC53Zi1maWVsZC1oZWxwLXRleHQgKyAud2YtZXJyb3ItcGFyZW50LWVsZSAud2YtZXJyb3Itdmlldy1tb3JlIHsKbWFyZ2luOiAwOwp9Ci53Zi1maWVsZC1oZWxwLXRleHQtbGlua3sKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoud2YtZmllbGQtY2hlY2tib3ggewoJY3Vyc29yOiBwb2ludGVyOwoJYm9yZGVyLXJhZGl1czogM3B4OwoJbWluLXdpZHRoOiAxNHB4OwoJbWluLWhlaWdodDogMjBweDsKCWJveC1zaXppbmc6IGluaXRpYWw7CglhY2NlbnQtY29sb3I6ICMxOTgwZDg7CgltYXJnaW4taW5saW5lLWVuZDogMTBweDsKCW1hcmdpbi1ib3R0b206IGF1dG87Cn0KLndmLWZpZWxkLWRyb3Bkb3duLWRhdGUgewoJcGFkZGluZzogOHB4IDEycHg7Cglib3JkZXItcmFkaXVzOiA0cHg7Cglmb250LXNpemU6IDE1cHg7CgljdXJzb3I6IHBvaW50ZXI7Cn0KLndmLWZpZWxkLWRyb3Bkb3duLWRhdGUgewoJYm9yZGVyOiAxcHggc29saWQgI0JEQzhEMzsKCX0KLndmLWZpZWxkLWRyb3Bkb3duLWRhdGU6aG92ZXIgewoJYm9yZGVyOiAxcHggc29saWQgIzY1QzE5OTsKfQoud2Zvcm0tZmllbGQtaXRlbS11cGxvYWQtaW5wdXQgewoJbWluLWhlaWdodDogNXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICNGQkZDRkQ7Cglib3JkZXI6IDFweCBkYXNoZWQgI2JkYzhkMzsKCWxpbmUtaGVpZ2h0OiAyLjE7CgljdXJzb3I6IHBvaW50ZXI7Cn0KLndmb3JtLWZpZWxkLWl0ZW0tdXBsb2FkLWlucHV0OmZvY3VzIHsKCWJvcmRlcjogMXB4IGRhc2hlZCAjYmRjOGQzOwp9Ci53Zm9ybS1maWxlLXVwbG9hZC1pbnB1dC1sYWJlbCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgI0Y1RjhGQSwgI2ZmZmZmZik7Cgljb2xvcjogIzIxMjEyOTsKCWJvcmRlci1jb2xvcjogI2QzZGJlMzsKCWJvcmRlcjogMXB4IHNvbGlkICNkM2RiZTM7Ym9yZGVyLXJhZGl1czogNHB4OwoJcGFkZGluZzogMC43cmVtIDJyZW07Cglmb250LXNpemU6IDEuNHJlbTsKCWluc2V0LWlubGluZS1lbmQ6IDFyZW07Cgl0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7Cgl0b3A6IDUwJTsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCX0KaW5wdXRbdHlwZT0nZmlsZSddOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiwgaW5wdXRbdHlwZT0nZmlsZSddOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbnsKIG9wYWNpdHk6IDA7IAogd2lkdGg6IDA7CiBoZWlnaHQ6IDI4cHg7Cn0ud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nY2FwdGNoYSddIC53Zi1maWVsZHsKCWRpc3BsYXk6IGZsZXg7CglhbGlnbi1pdGVtczogY2VudGVyOwp9Ci53Zm9ybS1maWVsZC1pdGVtLWNhcHRjaGEtaW5wdXR7Cglib3JkZXItc3RhcnQtZW5kLXJhZGl1czogMDsKCWJvcmRlci1lbmQtZW5kLXJhZGl1czogMDsKfQoud2YtZmllbGQtY2FwdGNoYS1pbWctd3JhcHsKCWJvcmRlcjogMXB4IHNvbGlkICNCREM4RDM7Cglib3JkZXItcmFkaXVzOiA0cHg7Cglib3JkZXItaW5saW5lLXN0YXJ0OiAwOwoJYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czogMDsKCWJvcmRlci1lbmQtc3RhcnQtcmFkaXVzOiAwOwoJaGVpZ2h0OiBpbml0aWFsOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCW1pbi13aWR0aDogMTIwcHg7Cn0KLndmLWZpZWxkLWNhcHRjaGEtaW1newoJaGVpZ2h0OiAzOHB4OwoJd2lkdGg6IDEwMCU7Cn0KLnJlbG9hZC1pbWd7Cglmb250LXNpemU6IDIzcHg7Cgljb2xvcjogIzRCNTU2OTsKCW1hcmdpbi1pbmxpbmUtZW5kOiA1cHg7Cn0KLnJlbG9hZC1jYXB0Y2hhewoJbWFyZ2luLWlubGluZS1zdGFydDogMTBweDsKCXVzZXItc2VsZWN0OiBub25lCn0KLndmLWJ0biB7CglwYWRkaW5nOiAxMHB4IDIwcHg7Cglib3JkZXItcmFkaXVzOiA0cHg7Cglmb250LXNpemU6IDE1cHg7CgljdXJzb3I6IHBvaW50ZXI7Cglmb250LXdlaWdodDogYm9sZDsKCWZvbnQtZmFtaWx5OiBpbmhlcml0Owp9Ci53Zi1idG5bZGF0YS11eC1idG4tdHlwZT0nZGVmYXVsdCddIHsKCWJvcmRlci1yYWRpdXM6IDA7Cn0KLndmLWJ0bltkYXRhLXV4LWJ0bi10eXBlPSdwcmltYXJ5J10gewoJYm9yZGVyLXJhZGl1czogNHB4Owp9Ci53Zi1idG5bZGF0YS11eC1idG4tdHlwZT0nc2Vjb25kYXJ5J10gewoJYm9yZGVyLXJhZGl1czogMjBweDsKfQoud2Zvcm0tYnRuLXdyYXAgewoJZGlzcGxheTogZmxleDsKCW1hcmdpbi10b3A6IDQwcHg7CglhbGlnbi1pdGVtczogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCWZsZXg6IDE7Cn0KLndmb3JtLXBvd2VyZWRieS1jb250YWluZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJaW5zZXQtaW5saW5lLXN0YXJ0OiAwOwoJYm90dG9tOiAwOwoJYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXM6IDEwcHg7Cglib3JkZXItZW5kLXN0YXJ0LXJhZGl1czogMTBweDsKCWJhY2tncm91bmQtY29sb3I6ICMyMzM4NEY7Cglmb250LXNpemU6IDEzcHg7CglwYWRkaW5nOiA2cHggOHB4OwoJZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CglkaXNwbGF5OiBmbGV4OwoJYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoud2YtdGV4dC1hcmVhLWlucHV0IHsKCXJlc2l6ZTogdmVydGljYWw7CgloZWlnaHQ6IDEwMHB4OwoJbWluLWhlaWdodDogMTAwcHg7CgltYXgtaGVpZ2h0OiAyMDBweDsKfQouZHJvcGRvd24tY29udGVudHM6OmFmdGVyIHsKCWJvcmRlci1sZWZ0OiAwLjRyZW0gc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItcmlnaHQ6IDAuNHJlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci10b3A6IDAuNHJlbSBzb2xpZCBibGFjazsKCXRvcDogNDUlOwoJY29udGVudDogJyc7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglpbnNldC1pbmxpbmUtZW5kOiAxcmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09ICogTXVsdGlQaWNrbGlzdCBTdHlsZXMgKiA9PT09PT09PT09PT09PT09PT09PSAqLwoubXVsdGlzZWxlY3Qud2YtZmllbGQtZHJvcGRvd24gewoJcGFkZGluZzogMDsKCWN1cnNvcjogdGV4dDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoubXVsdGlzZWxlY3QuZHJvcGJveC1hY3RpdmV7Cglib3JkZXItY29sb3I6ICMxOTgwZDg7Cglib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsKfQoubXVsdGlzZWxlY3QuZHJvcGJveC1hY3RpdmUuZHJvcGRvd25Ub3A6bm90KC51eC1waWNrLW1peGVkIC5tdWx0aXNlbGVjdC5kcm9wYm94LWFjdGl2ZSkgewoJYm9yZGVyLXJhZGl1czogMCAwIDRweCA0cHg7CgkuZHJvcGRvd24taW5wdXQgewoJbWluLWhlaWdodDogMzZweDsKCWJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4Owp9Cn0KLm11bHRpc2VsZWN0Lm5vLXJlc3VsdHMtZWxlbXsKCWJvcmRlci1yYWRpdXM6IDRweDsgCn0KLnNlbGVjdGVkLW9wdGlvbnMuc2VsZWN0ZWQtb3B0aW9ucy1maWVsZCB7CglkaXNwbGF5OiBub25lOwp9Ci5zZWxlY3RlZC1vcHRpb25zewoJbWF4LWhlaWdodDogMTUwcHg7CglvdmVyZmxvdzogYXV0bzsKCXBhZGRpbmc6IDNweCA1cHggN3B4IDVweDsKCWJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOwoJYm9yZGVyLWJvdHRvbTogMDsKCW1pbi1oZWlnaHQ6IDM4cHg7CgloZWlnaHQ6IDM4cHg7Cgl0cmFuc2l0aW9uOiAwLjNzIGFsbDsgCglzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsKfQouc2VsZWN0ZWQtb3B0aW9ucy5oaWRlLW9wdC1saXN0ewoJbWluLWhlaWdodDogMDsgIAoJaGVpZ2h0OiAwOwoJcGFkZGluZzogMDsKfQouc2VsZWN0ZWQtb3B0aW9ucy5zZXQtb3B0LWxpc3R7CgloZWlnaHQ6IGF1dG87IAp9Ci5zZWxlY3RlZC1vcHRpb25zLmRycC1kd24tbm8tdmFsewoJYm9yZGVyLXJpZ2h0OiB1bnNldCAhaW1wb3J0YW50Owp9Ci5kcm9wZG93bi1pbnB1dC5kcm9wLWJveC1jbG9zZWR7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4Owp9Ci5kcm9wZG93bi1pbnB1dC5kcm9wLWJveC1hY3RpdmV7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50OwoJYm9yZGVyLXJhZGl1czogNHB4Owp9Ci5kTnsKCWRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQouZHJvcGRvd24gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJd2lkdGg6IDEwMCU7CgkgaGVpZ2h0OiAzNnB4OwoJdHJhbnNpdGlvbjogMC4zcyBhbGw7Cn0KLmRyb3Bkb3duLmhpZGUtZHJvcGRvd257CgloZWlnaHQ6IDA7Cn0KLmRyb3Bkb3duLWlucHV0ewoJd2lkdGg6IDEwMCU7Cglib3JkZXI6IG5vbmU7CglvdXRsaW5lOiBub25lOwoJaGVpZ2h0OiAzMHB4OwoJcGFkZGluZzogNXB4OwoJYm9yZGVyLXJhZGl1czogNHB4OwoJYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7CglwYWRkaW5nLWxlZnQ6IDE0cHg7Cn0KLmRyb3Bkb3duLWlucHV0OjpwbGFjZWhvbGRlcnsKCWNvbG9yOiAjOTE5MTkxOwoJZm9udC1zaXplOiAxNHB4Owp9Ci5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWRpc3BsYXk6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI0JEQzhEMzsKCWJvcmRlci1yYWRpdXM6IDAgMCA1cHggNXB4OwoJbWF4LWhlaWdodDogMzAwcHg7CglvdmVyZmxvdy15OiBhdXRvOwoJd2lkdGg6IGNhbGMoMTAwJSArIDJweCk7CglsZWZ0OiAtMXB4OwoJei1pbmRleDogMzsKCXRvcDogMzdweDsKCXRyYW5zaXRpb246IDAuM3MgYWxsOwp9Ci5kcm9wZG93bi1tZW51LmhpZGUtdGhlLWlucHsKCXRvcDogMDsKfQouZHJvcGRvd24ub3BlbiAuZHJvcGRvd24tbWVudSB7CglkaXNwbGF5OiBibG9jazsKfQouZHJvcGRvd24tbWVudS5kcm9wZG93bi1mb2N1c3sKCWJvcmRlci1jb2xvcjogIzE5ODBkODsKCWJvcmRlci10b3A6IDFweCBzb2xpZCAjRTZFQkYxOwp9Ci5kcm9wZG93bi1tZW51LmRyb3Bkb3duLWZvY3VzLmRyb3Bkb3duVG9wOm5vdCgudXgtcGljay1taXhlZCAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1mb2N1cyl7Cglib3JkZXItdG9wOiAxcHggc29saWQgIzE5ODBkODsKCWJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwOwp9Ci5tdWx0aXNlbGVjdC5kcm9wYm94LWFjdGl2ZSAuZHJvcGRvd24taW5wdXR7Cglib3JkZXItdG9wOiAwOwoJYm9yZGVyLWJvdHRvbTogMDsKCXBhZGRpbmctYm90dG9tOiAxN3B4OwoJcGFkZGluZy10b3A6IDE5cHg7Cglib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLm11bHRpLXRhZ3sKCWJhY2tncm91bmQtY29sb3I6ICNDRUVCRkY7CglwYWRkaW5nLWlubGluZS1lbmQ6IDVweCAhaW1wb3J0YW50OwoJcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDEwcHggIWltcG9ydGFudDsKCXBhZGRpbmc6IDJweCA1cHggM3B4IDEwcHg7Cglib3JkZXItcmFkaXVzOiAxNXB4OwoJbWFyZ2luOiA1cHggNXB4IDAgMnB4OwoJZGlzcGxheTogaW5saW5lLWZsZXg7CgltYXgtd2lkdGg6IDk2JTsKfQoudGFnLWRhdGEtdmFsewoJY3Vyc29yOiBkZWZhdWx0OwoJbWF4LXdpZHRoOiA1NTBweDsKfQoubm8tcmVzdWx0c3sKCWN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OwoJdGV4dC1hbGlnbjogY2VudGVyOwoJY29sb3I6ICM5MTkxOTE7Cglmb250LXNpemU6IDE0cHg7Cn0KLm5vLXJlc3VsdHM6aG92ZXJ7CgliYWNrZ3JvdW5kLWNvbG9yOiB1bnNldCAhaW1wb3J0YW50Owp9Ci5vcHQtaGlkZXsKCWRpc3BsYXk6IG5vbmU7Cn0KLm9wdC1zaG93ewoJZGlzcGxheTogYmxvY2s7Cn0KLnRhZy1jbG9zZS1idG57CgltYXJnaW4taW5saW5lLXN0YXJ0OiAzcHg7CglwYWRkaW5nOiAwcHggNHB4IDBweDsKCWJvcmRlci1yYWRpdXM6IDUwJTsKCW9wYWNpdHk6IDAuNTsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJY3Vyc29yOiBwb2ludGVyOwp9Ci5tdWx0aS10YWc6aG92ZXIgLnRhZy1jbG9zZS1idG57CglvcGFjaXR5OiAxOwp9Ci5vcHRpb257CglwYWRkaW5nOiAxMHB4IDE0cHg7CgljdXJzb3I6IHBvaW50ZXI7Cglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjVmODsKfQoub3B0aW9uOmhvdmVyewoJYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjhmYTsKfQouaW5wdXQtbm90LWFjdGl2ZXsKCWRpc3BsYXk6IG5vbmU7Cn0KLmVsbGlwc2lzIHsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCW92ZXJmbG93OiBoaWRkZW47Cn0KLyogPT09PT09PT09PT09PT09PT09PT0gKiBNdWx0aVBpY2tsaXN0IFN0eWxlcyAqID09PT09PT09PT09PT09PT09PT09ICovCgoudXgtcGljay1taXhlZCB7CgoJLmRyb3Bkb3duLWNvbnRlbnRzIHsKCXBhZGRpbmc6IDMuNXB4IDEwcHg7CgloZWlnaHQ6IDEwMCU7Cn0KCgkuZHJvcGRvd24tbWVudSB7Cgl3aWR0aDogbWF4LWNvbnRlbnQ7CgltYXgtd2lkdGg6IDMwcmVtOwoJdG9wOiA0MnB4OwoJYm9yZGVyOiAxcHggc29saWQgI0QyREJFNTsKCWJvcmRlci1yYWRpdXM6IDRweDsKCWJveC1zaGFkb3c6IDAgMXB4IDE1cHggMCByZ2JhKDAsIDAsIDAsIDAuMik7Cgkub3B0aW9uW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV0gewoJYmFja2dyb3VuZC1jb2xvcjogI0UyRjNGQzsKCWZvbnQtd2VpZ2h0OiA2MDA7Cgl9Cn0KCgkud2YtZmllbGQtZHJvcGRvd24uZHJvcGJveC1hY3RpdmU6OmFmdGVyIHsKCWNvbnRlbnQ6ICcnOwoJYm9yZGVyOiAycHggc29saWQgIzE5ODBkODsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKIAl3aWR0aDogMTAwJTsKCWhlaWdodDogMTAwJTsKCXRvcDogMDsKCWxlZnQ6IDA7Cglib3gtc2l6aW5nOiBib3JkZXItYm94OwoJei1pbmRleDogMTsKCX0KCS53Zi1maWVsZC1pdGVtOm5vdCguc2VsZWN0ZWQtb3B0aW9ucykgewoJCW1pbi1oZWlnaHQ6IDM2cHg7Cgl9Cn0KLndmLWZvcm0tY29tcG9uZW50Om5vdChbZGF0YS11eC1mb3JtLWFsaWdubWVudD0ndG9wJ10pIC5tdWx0aXBsZS1maWVsZHMtZGl2IHsKCXdpZHRoOiA3MCU7Cn0KLmljb24td2l0aC10ZXh0LWRyb3Bkb3duIHsKCS5kcm9wZG93biA+IHNwYW4gewoJCW1hcmdpbi1pbmxpbmUtZW5kOiAxMHB4OwoJfQoJLmljb24tdGV4dC1kcm9wZG93biB7CgkJZGlzcGxheTogZmxleDsKCQlhbGlnbi1pdGVtczogY2VudGVyOwoJCT4gLyogc3BhbjpmaXJzdC1jaGlsZCB7CgkJCWZvbnQtc2l6ZTogMjJweDsgKi8gCgkJfQoJfQoJLm9wdGlvbiB7CgkJcGFkZGluZzogNHB4IDE0cHg7CgkJfQp9Ci5kcm9wZG93bi13aXRoLXNlYXJjaCB7CgkuZHJvcGRvd24ub3BlbiAuZHJvcGRvd24tbWVudSB7CgkJZGlzcGxheTogZmxleDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJfQoJLmRyb3Bkb3duLWl0ZW1zLXdyYXBwZXIgewoJCWZsZXgtZ3JvdzogMTsKCQlvdmVyZmxvdy15OiBhdXRvOwp9Cn0KLm11bHRpcGxlLWZpZWxkcy1kaXYgewoJZGlzcGxheTogZmxleDsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgkmLmZsZXgtMS01IHsKCQkuZmllbGQtMSB7CgkJCWZsZXg6IDE7Cn0KCS5maWVsZC0yIHsKCQkJZmxleDogNTsKCQl9Cgl9Cgkud2YtZmllbGQtZHJvcGRvd24gewoJCWJvcmRlci1yYWRpdXM6IDRweCAwcHggMHB4IDRweDsKCQlib3JkZXItcmlnaHQ6IDA7Cgl9Cgkud2YtZmllbGQtaXRlbTpub3QoLnNlbGVjdGVkLW9wdGlvbnMpIHsKCQlib3JkZXItcmFkaXVzOiAwcHggNHB4IDRweCAwcHg7Cgl9CgkmLndmLWZpZWxkIHsKCQl3b3JkLWJyZWFrOiB1bnNldDsKCX0KfQouZHJvcGRvd24tbWVudSB7CgkuZHJvcGRvd24tc2VhcmNoLWlucHV0IHsKCQlwYWRkaW5nOiA1cHggMTBweDsKCQl3aWR0aDogOTIlOwoJCW1hcmdpbjogMTBweDsKCQlib3JkZXI6IDFweCBzb2xpZCAjQ0REOEUzOwoJCWJvcmRlci1yYWRpdXM6IDRweDsKCX0KCS5kcm9wZG93bi1zZWFyY2gtaW5wdXQ6aG92ZXIgewoJCWJvcmRlcjogMXB4IHNvbGlkICMxOTgwZDg7Cgl9CgkuZHJvcGRvd24tc2VhcmNoLWlucHV0OmZvY3VzIHsKCQlib3JkZXI6IDJweCBzb2xpZCAjMTk4MGQ4OwoJfQp9CgovKiA9PT09PT09PT09PT09PT09PT09PSAqIERhdGVQaWNrZXIgU3R5bGVzICogPT09PT09PT09PT09PT09PT09PT0gKi8KLmNhbGVuZGFyLWljb24gewoJcGFkZGluZzogMHB4IDVweDsKfQouZGF0ZS1pbnB1dC1jb250YWluZXIgewoJd2lkdGg6IDEwMCU7Cglib3JkZXI6IDFweCBzb2xpZCAjQkRDOEQzOwoJYm9yZGVyLXJhZGl1czogNXB4OwoJZGlzcGxheTogZmxleDsKCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLmR1bW15LWRpdiB7Cgl3aWR0aDogZml0LWNvbnRlbnQ7Cgl2aXNpYmlsaXR5OiBoaWRkZW47Cglwb3NpdGlvbjogYWJzb2x1dGU7Cn0KLndmLWZpZWxkLWl0ZW0tZGF0ZS5jdXN0b20tZGF0ZS1jb252ZXJ0ZWQtZmllbGQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJYm9yZGVyOiBub25lOwoJcGFkZGluZzogNXB4IDBweDsKCXRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwp9Ci53Zi1kYXRlLWNvbnRhaW5lcnMgewoJcGFkZGluZzogMHB4IDEwcHg7Cn0KLndmLWNhbGVuZGFyLXBvcHVwLXdyYXBwZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJd2lkdGg6IGF1dG87CglkaXNwbGF5OiBub25lOwoJYm9yZGVyOiAxcHggc29saWQgI0QyREJFNTsKCWJvcmRlci1yYWRpdXM6IDRweDsKCWJhY2tncm91bmQ6IHdoaXRlOwoJei1pbmRleDogMTAwMTsKCWJveC1zaGFkb3c6IDBweCAxcHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMik7CglwYWRkaW5nOiAxNXB4IDIwcHggMjBweDsKfQoud2YtY2FsZW5kYXItaGVhZGVyIHsKCWRpc3BsYXk6IGZsZXg7CglqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CglhbGlnbi1pdGVtczogY2VudGVyOwoJbWFyZ2luLWJvdHRvbTogMjBweDsKfS53Zi1jYWxlbmRhci1uYXYtaWNvbnMgewoJYmFja2dyb3VuZDogbm9uZTsKCWJvcmRlcjogbm9uZTsKCWN1cnNvcjogcG9pbnRlcjsKCWZvbnQtc2l6ZTogMjJweDsKCW1hcmdpbjogMCA1cHg7CglvcGFjaXR5OiAwLjY7Cn0KLndmLWNhbGVuZGFyLW5hdi1pY29ucy5uYXYtaWNvbi13aXRoLXNwYWNlIHsKCW1hcmdpbi1yaWdodDogMTBweDsKfQoud2YtY2FsZW5kYXItbW9udGgteWVhciB7Cglmb250LXNpemU6IDE2cHg7CgltYXJnaW4tdG9wOiAzcHg7Cn0KLndmLWNhbGVuZGFyLWdyaWQtY29udGFpbmVyIHsKCWRpc3BsYXk6IGdyaWQ7CglncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpOwoJbWFyZ2luLWJvdHRvbTogMTBweDsKfQoud2YtY2FsZW5kYXItZGF5cyB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cgljb2xvcjogIzIxMjEyOTsKCWZvbnQtc2l6ZTogMS4zcmVtOwp9Ci53Zi1jYWxlbmRhci1ib2R5LXdyYXBwZXIgewoJZGlzcGxheTogZ3JpZDsKCWdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcik7Cn0KLndmLWNhbGVuZGFyLWRhdGUgewoJdGV4dC1hbGlnbjogY2VudGVyOwoJcGFkZGluZzogOXB4OwoJbWFyZ2luOiAxcHg7CgljdXJzb3I6IHBvaW50ZXI7Cglmb250LXNpemU6IDEuM3JlbTsKfQoud2YtY2FsZW5kYXItZGF0ZTpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwOwoJYm9yZGVyLXJhZGl1czogMjVweDsKfQoud2YtY2FsZW5kYXItZGF0ZS5zZWxlY3RlZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMTk4MGQ4OwoJY29sb3I6IHdoaXRlOwoJYm9yZGVyLXJhZGl1czogMjVweDsKfQoud2YtY2FsZW5kYXItZGF0ZS5jdXJyZW50LWRhdGUgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICMxOTgwZDg7Cglib3JkZXItcmFkaXVzOiAyNXB4Owp9LndmLWNhbGVuZGFyLWRhdGUuZGlzYWJsZWQtZGF0ZSB7CglvcGFjaXR5OiAwLjM7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoud2YtY2FsZW5kYXItdG9kYXktYnV0dG9uIHsKCWRpc3BsYXk6IG5vbmU7CglwYWRkaW5nLXRvcDogMTBweDsKCWNvbG9yOiAjMTk4MGQ4OwoJY3Vyc29yOiBwb2ludGVyOwp9Ci8qID09PT09PT09PT09PT09PT09PT09ICogRGF0ZVBpY2tlciBTdHlsZXMgKiA9PT09PT09PT09PT09PT09PT09PSAqLwoKLyogUlRMIENzcyBjaGFuZ2Ugc3RhcnQgKi8KW2Rpcj1ydGxdIHsKLm11bHRpcGxlLWZpZWxkcy1kaXZ7Cgkud2YtZmllbGQtaXRlbTpub3QoLnNlbGVjdGVkLW9wdGlvbnMpIHsKCQlib3JkZXItcmFkaXVzOiA0cHggMHB4IDBweCA0cHg7Cgl9Cgkud2YtZmllbGQtZHJvcGRvd24gewoJCWJvcmRlci1yYWRpdXM6IDBweCA0cHggNHB4IDBweDsKCQlib3JkZXItbGVmdDogMDsKCQlib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjQkRDOEQzOwoJfQp9Ci51eC1waWNrLW1peGVkIHsKCS5kcm9wZG93bi1tZW51IHsKCQlyaWdodDogLTFweDsKCX0KfQoud2YtZm9ybS1jb21wb25lbnRbZGF0YS11eC1mb3JtLWFsaWdubWVudD0nbGVmdCddIC53Zi1sYWJlbCB7CglwYWRkaW5nLWxlZnQ6IDJyZW07CglwYWRkaW5nLXJpZ2h0OiAwOwp9Ci53Zi10aW1lLWZpZWxkLXdyYXBwZXIgc2VsZWN0IHsKCW1hcmdpbi1sZWZ0OiAwcHg7CgltYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KLndmLWNhbGVuZGFyLW5hdi1pY29ucy5uYXYtaWNvbi13aXRoLXNwYWNlIHsKCW1hcmdpbi1sZWZ0OiAxMHB4Owp9Ci53Zi1mb3JtLWNvbXBvbmVudCAud2YtZmllbGQtaGVscC10ZXh0IHsKCXRleHQtYWxpZ246IHJpZ2h0Owp9Cn0KLyogUlRMIENzcyBjaGFuZ2UgZW5kICovLyogPT09PT09PT09PT09PT09PT09PT0gKioqIEZvcm0gQWxpZ25tZW50ICoqKiA9PT09PT09PT09PT09PT09PT09PSAqLwoud2YtZm9ybS1jb21wb25lbnQ6bm90KFtkYXRhLXV4LWZvcm0tYWxpZ25tZW50PSd0b3AnXSkgLndmLXJvdyB7CglkaXNwbGF5OiBmbGV4Owp9Ci53Zi1mb3JtLWNvbXBvbmVudDpub3QoW2RhdGEtdXgtZm9ybS1hbGlnbm1lbnQ9J3RvcCddKSAud2YtbGFiZWwgewoJd29yZC1icmVhazogYnJlYWstd29yZDsKCXdpZHRoOiAzMCU7CglwYWRkaW5nOiAxLjJyZW0gMnJlbSAwOwp9Ci53Zi1mb3JtLWNvbXBvbmVudFtkYXRhLXV4LWZvcm0tYWxpZ25tZW50PSdsZWZ0J10gLndmLWxhYmVsIHsKCXRleHQtYWxpZ246IGxlZnQ7CglwYWRkaW5nLWxlZnQ6IDA7Cn0KLndmLWZvcm0tY29tcG9uZW50W2RhdGEtdXgtZm9ybS1hbGlnbm1lbnQ9J3JpZ2h0J10gLndmLWxhYmVsIHsKCXRleHQtYWxpZ246IHJpZ2h0Owp9Ci53Zi1mb3JtLWNvbXBvbmVudFtkYXRhLXV4LWZvcm0tYWxpZ25tZW50PSdjZW50ZXInXSAud2YtbGFiZWwgewoJdGV4dC1hbGlnbjogY2VudGVyOwp9Ci53Zm9ybS1idG4td3JhcFtkYXRhLXV4LXBvcz0nbGVmdCddIHsKCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQoud2Zvcm0tYnRuLXdyYXBbZGF0YS11eC1wb3M9J2NlbnRlciddIHsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci53Zm9ybS1idG4td3JhcFtkYXRhLXV4LXBvcz0ncmlnaHQnXSB7CglqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwp9Ci53Zi1mb3JtLWNvbXBvbmVudDpub3QoW2RhdGEtdXgtZm9ybS1hbGlnbm1lbnQ9J3RvcCddKSAud2YtZmllbGQgewoJd2lkdGg6IDcwJTsKfQoud2YtZm9ybS1jb21wb25lbnRbZGF0YS11eC1mb3JtLWFsaWdubWVudD0ndG9wJ10gLndmLWxhYmVsewoJcGFkZGluZy10b3A6MDsKfQoud2YtZm9ybS1jb21wb25lbnRbZGF0YS11eC1mb3JtLWFsaWdubWVudD0ndG9wJ10gLnJlbG9hZC1jYXB0Y2hhewoJdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2NhcHRjaGEnXSAud2YtZmllbGQtaW5uZXJ7CgloZWlnaHQ6IDM4cHg7Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2NhcHRjaGEnXSAud2YtZmllbGQud2YtZmllbGQtZXJyb3ItYWN0aXZlewoJZmxleC13cmFwOiB3cmFwOwp9Ci53Zi1yb3dbZGF0YS11eC1maWVsZC1hcHBlYXJhbmNlPSdjYXB0Y2hhJ10gLndmLWZpZWxkLWVycm9yewoJZmxleC1iYXNpczogMTAwJTsKCXdpZHRoOjEwMCU7CgltYXJnaW4taW5saW5lLXN0YXJ0OiA1cHg7Cn0KLyogPT09PT09PT09PT09PT09PT09PT0gKioqIEZvcm0gQWxpZ25tZW50IGVuZHMgKioqID09PT09PT09PT09PT09PT09PT09ICovCgovKiA9PT09PT09PT09PT09PT09PT09PSAqKiogY3NzIGFuaW1hdGlvbnMgKioqID09PT09PT09PT09PT09PT09PT09ICovCkBrZXlmcmFtZXMgc2hha2UgewoJMTAlLDkwJSB7dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMXB4LCAwLCAwKTt9CgkyMCUsODAlIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDJweCwgMCwgMCk7fQoJMzAlLDUwJSw3MCUge3RyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTRweCwgMCwgMCk7fQoJNDAlLDYwJSB7dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg0cHgsIDAsIDApO30KfQovKiA9PT09PT09PT09PT09PT09PT09PSAqKiogY3NzIGFuaW1hdGlvbnMgZW5kcyAqKiogPT09PT09PT09PT09PT09PT09PT0gKi8KCi8qID09PT09PT09PT09PT09PT09PT09ICoqKiBNZWRpYXF1ZXJ5ICoqKiA9PT09PT09PT09PT09PT09PT09PSAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHsKCS53Zi13cmFwcGVyIHsKCW1heC13aWR0aDogNzAwcHg7Cgl3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7Cglib3JkZXI6IDA7Cn0KCS53Zi1maWVsZCBpbnB1dFt0eXBlPXRleHRdLAoJLndmLWZpZWxkIHNlbGVjdCwKCS53Zi1maWVsZCB0ZXh0YXJlYSB7CgkJd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKCX0KCS53Zi1sYWJlbDplbXB0eSB7CgkJZGlzcGxheTogbm9uZTsKCX0KLndmLWZpZWxkLWNoZWNrYm94IHsKCW1pbi13aWR0aDogMThweDsKCW1pbi1oZWlnaHQ6IDE4cHg7Cn0KfQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkgewoJLndmLXdyYXBwZXIgewoJbWF4LXdpZHRoOiA3MDBweDsKCXdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKCWJvcmRlcjogMDsKfQoud2YtZmllbGQgaW5wdXRbdHlwZT10ZXh0XSwKCS53Zi1maWVsZCBzZWxlY3QsCgkud2YtZmllbGQgdGV4dGFyZWEgewoJd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKCX0KLndmLWxhYmVsOmVtcHR5IHsKCWRpc3BsYXk6IG5vbmU7Cgl9Ci53Zi1mb3JtLWNvbXBvbmVudFtkYXRhLXV4LWZvcm0tYWxpZ25tZW50PSd0b3AnXSAud2Zvcm0tYnRuLXdyYXAgewoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkwcHgpIHsKLndmLXBhcmVudCB7CglwYWRkaW5nOiAyMHB4IDA7Cn0KLndmLXdyYXBwZXIgewoJd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpICFJbXBvcnRhbnQ7Cglib3JkZXI6IDA7Cn0KLndmLWZvcm0tY29tcG9uZW50IHsKCXBhZGRpbmc6IDIwcHg7CglwYWRkaW5nLWJvdHRvbTo2MHB4Owp9Ci53Zi1maWVsZCBpbnB1dFt0eXBlPXRleHRdLAoud2YtZmllbGQgc2VsZWN0LAoud2YtZmllbGQgdGV4dGFyZWEgewoJd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoud2YtbGFiZWw6ZW1wdHkgewoJZGlzcGxheTogbm9uZTsKfQoud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nZGF0ZS10aW1lJ10gLndmLWZpZWxkLWlubmVyewoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nZGF0ZS10aW1lJ10gLndmLXRpbWUtZmllbGQtd3JhcHBlcnsKCW1hcmdpbi10b3A6IDEwcHg7Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2RhdGUtdGltZSddIC53Zi1maWVsZC1pdGVtOmZpcnN0LWNoaWxkewoJbWFyZ2luLWxlZnQ6IDA7Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2RhdGUtdGltZSddIC53Zi1maWVsZC1pdGVtewoJZmxleDogMTsKfQoud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nY2FwdGNoYSddIC53Zi1maWVsZHsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLndmLXJvd1tkYXRhLXV4LWZpZWxkLWFwcGVhcmFuY2U9J2NhcHRjaGEnXSAucmVsb2FkLWNhcHRjaGF7CgltYXJnaW4tbGVmdDogYXV0bzsKfQoud2Ytcm93W2RhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nY2FwdGNoYSddIC53Zi1maWVsZC1pbm5lcnsKCXdpZHRoOiAxMDAlOwp9Cn0KLyogPT09PT09PT09PT09PT09PT09PT0gKioqIE1lZGlhcXVlcnkgZW5kcyAqKiogPT09PT09PT09PT09PT09PT09PT0gKi8KPC9zdHlsZT4KPGlmcmFtZSBpZD0naGlkZGVuNzM2NTI1MzAwMDAwMDY0MTE0NkZyYW1lJyBuYW1lPSdoaWRkZW43MzY1MjUzMDAwMDAwNjQxMTQ2RnJhbWUnIHN0eWxlPSdkaXNwbGF5OiBub25lOycgY2xhc3M9J2lmcmFtZS1jb250YWluZXInPjwvaWZyYW1lPgo8ZGl2IGNsYXNzPSd3Zi1wYXJlbnQnICBpZD0nQmlnaW5XZWJUb1JlY29yZEZvcm1QYXJlbnQ3MzY1MjUzMDAwMDAwNjQxMTQ2JyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogJiN4MjM7RUFFRUYyJz4KCTxkaXYgY2xhc3M9J3dmLXdyYXBwZXInIGlkPSdCaWdpbldlYlRvUmVjb3JkRm9ybURpdjczNjUyNTMwMDAwMDA2NDExNDYnPgoJPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAnPgoJPE1FVEEgSFRUUC1FUVVJVj0nY29udGVudC10eXBlJyBDT05URU5UPSd0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCc+Cgk8Zm9ybSBpZD0nQmlnaW5XZWJUb1JlY29yZEZvcm03MzY1MjUzMDAwMDAwNjQxMTQ2JyBuYW1lPSdCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnIGNsYXNzPSd3Zi1mb3JtLWNvbXBvbmVudCcgZGF0YS11eC1mb3JtLWFsaWdubWVudD0ndG9wJyBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsO3Bvc2l0aW9uOiByZWxhdGl2ZTtmb250LXNpemU6MTVweDsnIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YScgdGFyZ2V0PSdoaWRkZW43MzY1MjUzMDAwMDAwNjQxMTQ2RnJhbWUnIG9uU3VibWl0PSdqYXZhc2NyaXB0OmRvY3VtZW50LmNoYXJzZXQ9IlVURi04IjsgcmV0dXJuIHZhbGlkYXRlRm9ybTczNjUyNTMwMDAwMDA2NDExNDYoKScgYWNjZXB0LWNoYXJzZXQ9J1VURi04Jz4KPCEtLSBEbyBub3QgcmVtb3ZlIHRoaXMgY29kZS4gLS0+CiAJPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSd4blFzanNkcCcgdmFsdWU9JzdmNDdkZDJkNzU3ZjU4NWJlYzA1OTM0M2Q4ZTcwNWNjOGZiOWVhNDM0NjVkMjY4Y2IzNGM5MTM3ZTNiNDk4ZmQnLz4KIAk8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd6Y19nYWQnIGlkPSd6Y19nYWQnIHZhbHVlPScnLz4KIAk8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J3htSXd0TEQnIHZhbHVlPSdiMDU2OGQ3NWI3MzBlZDU3NGVkYWYwZjE3MDhkYjIwZWMxMDYxYzA4MmI5NTAyMjU1ZGU3M2I0ZDk3NTNhYjBmNzQ0ZGVlYTg2NjFkYzhhMzI4MGYxN2NlM2I5MzdkY2MnLz4KIAk8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J2FjdGlvblR5cGUnIHZhbHVlPSdRMjl1ZEdGamRITT0nLz4KIAk8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdybXNnJyBpZD0ncm1zZycgdmFsdWU9J3RydWUnLz4KIAk8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J3JldHVyblVSTCcgdmFsdWU9J251bGwnIC8+CiAJPGRpdiBjbGFzcz0nd2YtaGVhZGVyJz5DdXN0b20gSmV3ZWxsZXJ5IEZvcm08L2Rpdj4KIAk8ZGl2IGlkPSdlbGVtZW50RGl2NzM2NTI1MzAwMDAwMDY0MTE0NicgY2xhc3M9J3dmLWZvcm0td3JhcHBlcic+CiAJIAk8ZGl2IGNsYXNzPSd3Zi1yb3cnPiAgCiAJIAkgCTxkaXYgY2xhc3M9J3dmLWxhYmVsJz5GaXJzdCBOYW1lPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkJz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lcic+CiAJIAkgCSAJPGlucHV0IG5hbWU9J0ZpcnN0IE5hbWUnIG1heGxlbmd0aD0nNDAnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+TGFzdCBOYW1lPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkIHdmLWZpZWxkLW1hbmRhdG9yeSc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXInPgogCSAJIAkgCTxpbnB1dCBuYW1lPSdMYXN0IE5hbWUnIG1heGxlbmd0aD0nODAnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+RW1haWw8L2Rpdj4KIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQgd2YtZmllbGQtbWFuZGF0b3J5Jz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lcic+CiAJIAkgCSAJPGlucHV0IGZ2YWxpZGF0ZT0ndHJ1ZScgZnR5cGU9J2VtYWlsJyBuYW1lPSdFbWFpbCcgbWF4bGVuZ3RoPScxMDAnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+UGhvbmUgTnVtYmVyPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkIHV4LXBpY2stbWl4ZWQgbXVsdGlwbGUtZmllbGRzLWRpdiBmbGV4LTEtNSc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXInPgogCSAJIAkgCTxkaXYgaWQ9J3BoQ09OVEFDVENGMTInIGNsYXNzPSdtdWx0aXNlbGVjdCB3Zi1maWVsZC1kcm9wZG93biBmaWVsZC0xIGRyb3Bkb3duLXdpdGgtc2VhcmNoIGljb24td2l0aC10ZXh0LWRyb3Bkb3duIHNpbmdsZS1zZWxlY3QtZHJwJyBvbmNsaWNrPSdyZW1vdmVFcnJvcih0aGlzKTsgc2hvd0Ryb3BEb3duNzM2NTI1MzAwMDAwMDY0MTE0Nih0aGlzKScgaXNQaG9uZT0ndHJ1ZScgZmluZElQPSd0cnVlJyA+CiAJIAkgCSAJIAk8ZGl2IGNsYXNzPSdzZWxlY3RlZC1vcHRpb25zIGhpZGUtb3B0LWxpc3Qgd2YtZmllbGQtaXRlbSBzZWxlY3RlZC1vcHRpb25zLWZpZWxkJyBzdHlsZT0nZGlzcGxheTpub25lOyc+PC9kaXY+CiAJIAkgCSAJIAk8ZGl2IGNsYXNzPSdkcm9wZG93biBmbGV4LWNlbnRlci12IGRyb3Bkb3duLWNvbnRlbnRzJz4KIAkgCSAJIAkgCSAJPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdkcm9wZG93bi1pbnB1dCBpbnB1dC1ub3QtYWN0aXZlIHdmLWZpZWxkLWl0ZW0gd2YtZmllbGQtaW5wdXQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyAvPgogCSAJIAkgCSAJIAk8c3BhbiBjbGFzcz0nbVIxMCBmMjIgY29udGVudC1kaXNwbGF5LWFyZWEnPjwvc3Bhbj4KIAkgCSAJIAkgCSAJPHVsIGNsYXNzPSdkcm9wZG93bi1tZW51Jz48L3VsPgogCSAJIAkgCSAJPC9kaXY+CiAJIAkgCSAJPC9kaXY+CiAJIAkgCSAJPGRpdiBjbGFzcz0nZmllbGQtMic+CiAJIAkgCSAJIAk8ZGl2IGNsYXNzPScnPgogCSAJIAkgCSAJPGlucHV0IG1heGxlbmd0aD0nMTUnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCSAJPGlucHV0IGZ0eXBlPSdkaWFsY29kZScgbmFtZT0nQ09OVEFDVENGMTInIG1heGxlbmd0aD0nMTUnIHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JwlyZXN0X2FscGhhPSd0cnVlJy8+CiAJIAkgCSAJIAk8L2Rpdj4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJPC9kaXY+CiAJIAk8L2Rpdj4KIAkgCTxkaXYgY2xhc3M9J3dmLXJvdyc+ICAKIAkgCSAJPGRpdiBjbGFzcz0nd2YtbGFiZWwnPkpld2VsbGVyeSBUeXBlPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkIHdmLWZpZWxkLW1hbmRhdG9yeSc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXIgZHJvcGRvd24tY29udGVudHMnPgogCSAJIAkgCTxzZWxlY3QgbmFtZT0nQ09OVEFDVENGMycgY2xhc3M9J3dmLWZpZWxkLWl0ZW0gd2YtZmllbGQtZHJvcGRvd24nIGRhdGEtd2Zvcm0tZmllbGQ9J3NlbGVjdCcgb25jaGFuZ2U9J3JlbW92ZUVycm9yKHRoaXMpOyc+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSctTm9uZS0nPi1Ob25lLTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nRW5nYWdlbWVudCYjeDIwO1JpbmcnPkVuZ2FnZW1lbnQgUmluZzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nV2VkZGluZyYjeDIwO0JhbmQnPldlZGRpbmcgQmFuZDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nUmluZyc+UmluZzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nTmVja2xhY2UnPk5lY2tsYWNlPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdFYXJyaW5ncyc+RWFycmluZ3M8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J0hlaXJsb29tJiN4MjA7UmVkZXNpZ24nPkhlaXJsb29tIFJlZGVzaWduPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdFbmdyYXZpbmcmI3gyMDsmI3gyZjsmI3gyMDtDdXN0b21pemF0aW9uJz5FbmdyYXZpbmcgJiN4MmY7IEN1c3RvbWl6YXRpb248L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J090aGVyJz5PdGhlcjwvb3B0aW9uPgogCSAJIAkgCTwvc2VsZWN0PgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+QnVkZ2V0IFJhbmdlPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkIHdmLWZpZWxkLW1hbmRhdG9yeSc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXIgZHJvcGRvd24tY29udGVudHMnPgogCSAJIAkgCTxzZWxlY3QgbmFtZT0nQ09OVEFDVENGMicgY2xhc3M9J3dmLWZpZWxkLWl0ZW0gd2YtZmllbGQtZHJvcGRvd24nIGRhdGEtd2Zvcm0tZmllbGQ9J3NlbGVjdCcgb25jaGFuZ2U9J3JlbW92ZUVycm9yKHRoaXMpOyc+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSctTm9uZS0nPi1Ob25lLTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nRmxleGlibGUmI3gyMDsmI3gyZjsmI3gyMDtOb3QmI3gyMDtTdXJlJz5GbGV4aWJsZSAmI3gyZjsgTm90IFN1cmU8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzEuNWsmbmRhc2g7Mi41ayc+MS41ayZuZGFzaDsyLjVrPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScyLjVrJm5kYXNoOzVrJz4yLjVrJm5kYXNoOzVrPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc1ayZuZGFzaDs3LjVrJz41ayZuZGFzaDs3LjVrPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc3LjVrJm5kYXNoOzEwayc+Ny41ayZuZGFzaDsxMGs8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzEwayZuZGFzaDsxNWsnPjEwayZuZGFzaDsxNWs8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzE1ayZuZGFzaDsyMGsnPjE1ayZuZGFzaDsyMGs8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzIwayYjeDJiOyc+MjBrJiN4MmI7PC9vcHRpb24+CiAJIAkgCSAJPC9zZWxlY3Q+CiAJIAkgCSAJPC9kaXY+CiAJIAkgCTwvZGl2PgogCSAJPC9kaXY+CiAJIAk8ZGl2IGNsYXNzPSd3Zi1yb3cnIGRhdGEtdXgtZmllbGQtYXBwZWFyYW5jZT0nZGF0ZS10aW1lJz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+UmVxdWlyZWQgQnk8L2Rpdj4KIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQgd2YtZmllbGQtbWFuZGF0b3J5Jz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lcic+CiAJIAkgCSAJPGlucHV0IGZ2YWxpZGF0ZT0nZGF0ZScgZnR5cGU9J2RhdGV0aW1lJyB0eXBlPSd0ZXh0JyBuYW1lPSdDT05UQUNUQ0Y1MScgc3R5bGU9J2Rpc3BsYXk6IG5vbmU7Jy8+CiAJIAkgCSAJIAk8ZGl2IGNsYXNzPSdkYXRlLWlucHV0LWNvbnRhaW5lcicgZGF0YS1mb3JtYXQ9J01NL2RkL3l5eXknIGRhdGEtcmVzdHJpY3RUeXBlPSdwYXN0JyA+CiAJIAkgCSAJIAkgCTxzcGFuIGNsYXNzPSd3Zi1kYXRlLWNvbnRhaW5lcnMnPgogCSAJIAkgCSAJIAk8aW5wdXQgdHlwZT0ndGV4dCcgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0IHdmLWZpZWxkLWl0ZW0tZGF0ZSBjdXN0b20tZGF0ZS1jb252ZXJ0ZWQtZmllbGQnIG9uaW5wdXQ9J3JlbW92ZUVycm9yKHRoaXMpJyAvPgogCSAJIAkgCSAJIAk8c3BhbiBjbGFzcz0nc2VwYXJhdG9yJz4tPC9zcGFuPgogCSAJIAkgCSAJIAk8aW5wdXQgdHlwZT0ndGV4dCcgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0IHdmLWZpZWxkLWl0ZW0tZGF0ZSBjdXN0b20tZGF0ZS1jb252ZXJ0ZWQtZmllbGQnIG9uaW5wdXQ9J3JlbW92ZUVycm9yKHRoaXMpJyAvPgogCSAJIAkgCSAJIAk8c3BhbiBjbGFzcz0nc2VwYXJhdG9yJz4tPC9zcGFuPgogCSAJIAkgCSAJIAk8aW5wdXQgdHlwZT0ndGV4dCcgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0IHdmLWZpZWxkLWl0ZW0tZGF0ZSBjdXN0b20tZGF0ZS1jb252ZXJ0ZWQtZmllbGQnIG9uaW5wdXQ9J3JlbW92ZUVycm9yKHRoaXMpJyAvPgogCSAJIAkgCSAJPC9zcGFuPgogCSAJIAkgCSAJPHNwYW4gY2xhc3M9J2NhbGVuZGFyLWljb24nID48aW1nIHNyYz0naHR0cHM6Ly9iaWdpbi56b2hvLmNvbS9pbWFnZXMvY2FsZW5kYXIuc3ZnJyBzdHlsZT0nbWFyZ2luLWlubGluZS1lbmQ6IDVweDsnLz48L3NwYW4+CiAJIAkgCSAJIAk8L2Rpdj4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi10aW1lLWZpZWxkLXdyYXBwZXInPiAKIAkgCSAJIAk8c2VsZWN0IG5hbWU9J0NPTlRBQ1RDRjUxaG91cicgY2xhc3M9J3dmLWZpZWxkLWl0ZW0gd2YtZmllbGQtZHJvcGRvd24tZGF0ZScgZGF0YS13Zm9ybS1maWVsZD0nc2VsZWN0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKSc+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwMSc+MDE8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzAyJz4wMjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDMnPjAzPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwNCc+MDQ8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzA1Jz4wNTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDYnPjA2PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwNyc+MDc8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzA4Jz4wODwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDknPjA5PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScxMCc+MTA8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzExJz4xMTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMTInPjEyPC9vcHRpb24+CiAJIAkgCSAJPC9zZWxlY3Q+CiAJIAkgCSAJPHNlbGVjdCBuYW1lPSdDT05UQUNUQ0Y1MW1pbnV0ZScgY2xhc3M9J3dmLWZpZWxkLWl0ZW0gd2YtZmllbGQtZHJvcGRvd24tZGF0ZScgZGF0YS13Zm9ybS1maWVsZD0nc2VsZWN0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKSc+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwMCc+MDA8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzAxJz4wMTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDInPjAyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwMyc+MDM8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzA0Jz4wNDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDUnPjA1PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwNic+MDY8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzA3Jz4wNzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMDgnPjA4PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScwOSc+MDk8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzEwJz4xMDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMTEnPjExPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScxMic+MTI8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzEzJz4xMzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMTQnPjE0PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScxNSc+MTU8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzE2Jz4xNjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMTcnPjE3PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScxOCc+MTg8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzE5Jz4xOTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMjAnPjIwPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScyMSc+MjE8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzIyJz4yMjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMjMnPjIzPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScyNCc+MjQ8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzI1Jz4yNTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMjYnPjI2PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPScyNyc+Mjc8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzI4Jz4yODwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMjknPjI5PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSczMCc+MzA8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzMxJz4zMTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMzInPjMyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSczMyc+MzM8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzM0Jz4zNDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMzUnPjM1PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSczNic+MzY8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzM3Jz4zNzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nMzgnPjM4PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSczOSc+Mzk8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzQwJz40MDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNDEnPjQxPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc0Mic+NDI8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzQzJz40Mzwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNDQnPjQ0PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc0NSc+NDU8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzQ2Jz40Njwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNDcnPjQ3PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc0OCc+NDg8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzQ5Jz40OTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNTAnPjUwPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc1MSc+NTE8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzUyJz41Mjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNTMnPjUzPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc1NCc+NTQ8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzU1Jz41NTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNTYnPjU2PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSc1Nyc+NTc8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9JzU4Jz41ODwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nNTknPjU5PC9vcHRpb24+CiAJIAkgCSAJPC9zZWxlY3Q+CiAJIAkgCSAJPHNlbGVjdCBuYW1lPSdDT05UQUNUQ0Y1MWFtcG0nIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWRyb3Bkb3duLWRhdGUnIGRhdGEtd2Zvcm0tZmllbGQ9J3NlbGVjdCcgb25pbnB1dD0ncmVtb3ZlRXJyb3IodGhpcyknPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nQU0nPkFNPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdQTSc+UE08L29wdGlvbj4KIAkgCSAJIAk8L3NlbGVjdD4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJPC9kaXY+CiAJIAk8L2Rpdj4KIAkgCTxkaXYgY2xhc3M9J3dmLXJvdyc+ICAKIAkgCSAJPGRpdiBjbGFzcz0nd2YtbGFiZWwnPkRlc2NyaXB0aW9uPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkJz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lcic+CiAJIAkgCSAJPHRleHRhcmVhIG5hbWU9J0Rlc2NyaXB0aW9uJyBtYXhsZW5ndGg9JzMyMDAwJyB0eXBlPSd0ZXh0JyBjbGFzcz0nd2YtZmllbGQtaXRlbSB3Zi1maWVsZC1pbnB1dCB3Zi10ZXh0LWFyZWEtaW5wdXQnIG9uaW5wdXQ9J3JlbW92ZUVycm9yKHRoaXMpJz48L3RleHRhcmVhPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93Jz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+SW5zcGlyYXRpb24gSW1hZ2UgTGluazwvZGl2PgogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZCc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXInPgogCSAJIAkgCTxpbnB1dCBuYW1lPSdDT05UQUNUQ0YxMScgbWF4bGVuZ3RoPScyNTUnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWlucHV0JyBvbmlucHV0PSdyZW1vdmVFcnJvcih0aGlzKScvPgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93JyBzdHlsZT0nZGlzcGxheTpub25lOyc7PiAgCiAJIAkgCTxkaXYgY2xhc3M9J3dmLWxhYmVsJz5Db250YWN0IFR5cGU8L2Rpdj4KIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQnPgogCSAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkLWlubmVyIGRyb3Bkb3duLWNvbnRlbnRzJz4KIAkgCSAJIAk8c2VsZWN0IG5hbWU9J0NPTlRBQ1RDRjEnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWRyb3Bkb3duJyBkYXRhLXdmb3JtLWZpZWxkPSdzZWxlY3QnIG9uY2hhbmdlPSdyZW1vdmVFcnJvcih0aGlzKTsnPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nLU5vbmUtJz4tTm9uZS08L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9J0N1c3RvbSYjeDIwO0xlYWQnPkN1c3RvbSBMZWFkPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdEVEMmI3gyMDtDdXN0b21lcic+RFRDIEN1c3RvbWVyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdSZXRhaWxlciYjeDIwOyYjeDJmOyYjeDIwO1N0b2NraXN0Jz5SZXRhaWxlciAmI3gyZjsgU3RvY2tpc3Q8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J1BhcnRuZXImI3gyMDsmI3gyZjsmI3gyMDtDb2xsYWJvcmF0b3InPlBhcnRuZXIgJiN4MmY7IENvbGxhYm9yYXRvcjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nTWVkaWEmI3gyMDsmI3gyZjsmI3gyMDtJbmZsdWVuY2VyJz5NZWRpYSAmI3gyZjsgSW5mbHVlbmNlcjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nR2VuZXJhbCYjeDIwO0NvbnRhY3QnPkdlbmVyYWwgQ29udGFjdDwvb3B0aW9uPgogCSAJIAkgCTwvc2VsZWN0PgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93JyBzdHlsZT0nZGlzcGxheTpub25lOyc7PiAgCiAJIAkgCTxkaXYgY2xhc3M9J3dmLWxhYmVsJz5MZWFkIFNvdXJjZTwvZGl2PgogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZCc+CiAJIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQtaW5uZXIgZHJvcGRvd24tY29udGVudHMnPgogCSAJIAkgCTxzZWxlY3QgbmFtZT0nTGVhZCBTb3VyY2UnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWRyb3Bkb3duJyBkYXRhLXdmb3JtLWZpZWxkPSdzZWxlY3QnIG9uY2hhbmdlPSdyZW1vdmVFcnJvcih0aGlzKTsnPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nLU5vbmUtJz4tTm9uZS08L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9J1dlYnNpdGUmI3gyMDtDdXN0b20mI3gyMDtGb3JtJz5XZWJzaXRlIEN1c3RvbSBGb3JtPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdXZWJzaXRlJiN4MjA7Q29udGFjdCc+V2Vic2l0ZSBDb250YWN0PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdTaG9waWZ5Jz5TaG9waWZ5PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdFbWFpbCc+RW1haWw8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J0luc3RhZ3JhbSc+SW5zdGFncmFtPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdSZWZlcnJhbCc+UmVmZXJyYWw8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J1RyYWRlJiN4MjA7U2hvdyYjeDIwOyYjeDJmOyYjeDIwO0V2ZW50Jz5UcmFkZSBTaG93ICYjeDJmOyBFdmVudDwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nTWFudWFsJiN4MjA7SW1wb3J0Jz5NYW51YWwgSW1wb3J0PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdPdGhlcic+T3RoZXI8L29wdGlvbj4KIAkgCSAJIAk8L3NlbGVjdD4KIAkgCSAJIAk8L2Rpdj4KIAkgCSAJPC9kaXY+CiAJIAk8L2Rpdj4KIAkgCTxkaXYgY2xhc3M9J3dmLXJvdycgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnOz4gIAogCSAJIAk8ZGl2IGNsYXNzPSd3Zi1sYWJlbCc+TGVhZCBTb3VyY2UgRGV0YWlsPC9kaXY+CiAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkJz4KIAkgCSAJIAk8ZGl2IGNsYXNzPSd3Zi1maWVsZC1pbm5lciBkcm9wZG93bi1jb250ZW50cyc+CiAJIAkgCSAJPHNlbGVjdCBuYW1lPSdDT05UQUNUQ0Y1JyBjbGFzcz0nd2YtZmllbGQtaXRlbSB3Zi1maWVsZC1kcm9wZG93bicgZGF0YS13Zm9ybS1maWVsZD0nc2VsZWN0JyBvbmNoYW5nZT0ncmVtb3ZlRXJyb3IodGhpcyk7Jz4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9Jy1Ob25lLSc+LU5vbmUtPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHNlbGVjdGVkIHZhbHVlPSdDdXN0b20mI3gyMDtGb3JtJz5DdXN0b20gRm9ybTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nQ29udGFjdCYjeDIwO0Zvcm0nPkNvbnRhY3QgRm9ybTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nTmV3c2xldHRlcic+TmV3c2xldHRlcjwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nUmV0YWlsJiN4MjA7SW5xdWlyeSc+UmV0YWlsIElucXVpcnk8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J0VtYWlsJz5FbWFpbDwvb3B0aW9uPgogCSAJIAkgCTwvc2VsZWN0PgogCSAJIAkgCTwvZGl2PgogCSAJIAk8L2Rpdj4KIAkgCTwvZGl2PgogCSAJPGRpdiBjbGFzcz0nd2Ytcm93JyBzdHlsZT0nZGlzcGxheTpub25lOyc7PiAgCiAJIAkgCTxkaXYgY2xhc3M9J3dmLWxhYmVsJz5MaWZlY3ljbGUgU3RhZ2U8L2Rpdj4KIAkgCSAJPGRpdiBjbGFzcz0nd2YtZmllbGQnPgogCSAJIAkgCTxkaXYgY2xhc3M9J3dmLWZpZWxkLWlubmVyIGRyb3Bkb3duLWNvbnRlbnRzJz4KIAkgCSAJIAk8c2VsZWN0IG5hbWU9J0NPTlRBQ1RDRjQnIGNsYXNzPSd3Zi1maWVsZC1pdGVtIHdmLWZpZWxkLWRyb3Bkb3duJyBkYXRhLXdmb3JtLWZpZWxkPSdzZWxlY3QnIG9uY2hhbmdlPSdyZW1vdmVFcnJvcih0aGlzKTsnPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nLU5vbmUtJz4tTm9uZS08L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9J05ldyc+TmV3PC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdBY3RpdmUnPkFjdGl2ZTwvb3B0aW9uPgogCSAJIAkgCSAJPG9wdGlvbiB2YWx1ZT0nQ3VzdG9tZXInPkN1c3RvbWVyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdOdXJ0dXJlJz5OdXJ0dXJlPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdQYXJ0bmVyJz5QYXJ0bmVyPC9vcHRpb24+CiAJIAkgCSAJIAk8b3B0aW9uIHZhbHVlPSdJbmFjdGl2ZSc+SW5hY3RpdmU8L29wdGlvbj4KIAkgCSAJIAkgCTxvcHRpb24gdmFsdWU9J0Rpc3F1YWxpZmllZCc+RGlzcXVhbGlmaWVkPC9vcHRpb24+CiAJIAkgCSAJPC9zZWxlY3Q+CiAJIAkgCSAJPC9kaXY+CiAJIAkgCTwvZGl2PgogCSAJPC9kaXY+CiAJIAk8ZGl2IGNsYXNzPSd3Zm9ybS1idG4td3JhcCcgZGF0YS11eC1wb3M9J2NlbnRlcic+CiAJIAkgCTxpbnB1dCBpZD0nZm9ybXN1Ym1pdCcgdHlwZT0nc3VibWl0JyBjbGFzcz0nd2YtYnRuJyBkYXRhLXV4LWJ0bi10eXBlPSdzZWNvbmRhcnknIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiYjeDIzOzE5ODBkODsgY29sb3I6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICYjeDIzOzE5ODBkODt3aWR0aDogYXV0bzsnIHZhbHVlPSdTdWJtaXQnLz4KIAkgCTwvZGl2PgoJPC9kaXY+CgkJPGRpdiBjbGFzcz0nZHVtbXktZGl2Jz48L2Rpdj4KCTxkaXYgaWQ9J3dmLWNhbGVuZGVyLXBvcHVwJyBjbGFzcz0nd2YtY2FsZW5kYXItcG9wdXAtd3JhcHBlcic+CgkJPGRpdiBjbGFzcz0nd2YtY2FsZW5kYXItaGVhZGVyJz4KCQkJPHNwYW4gY2xhc3M9J2ZsZXgtY2VudGVyLXYnPgoJCQk8YnV0dG9uIGlkPSd3Zi1jYWxlbmRhci1wcmV2WWVhci1pY29uJyBjbGFzcz0nd2YtY2FsZW5kYXItbmF2LWljb25zIG5hdi1pY29uLXdpdGgtc3BhY2UnIHR5cGU9J2J1dHRvbic+JiMxNzE7PC9idXR0b24+CgkJCTxidXR0b24gaWQ9J3dmLWNhbGVuZGFyLXByZXZNb250aC1pY29uJyBjbGFzcz0nd2YtY2FsZW5kYXItbmF2LWljb25zJyB0eXBlPSdidXR0b24nPiYjODI0OTs8L2J1dHRvbj4KCQk8L3NwYW4+CgkJPHNwYW4gaWQ9J3dmLWNhbGVuZGFyLW1vbnRoWWVhcicgY2xhc3M9J3dmLWNhbGVuZGFyLW1vbnRoLXllYXInPjwvc3Bhbj4KCQk8c3BhbiBjbGFzcz0nZmxleC1jZW50ZXItdic+CgkJCTxidXR0b24gaWQ9J3dmLWNhbGVuZGFyLW5leHRNb250aC1pY29uJyBjbGFzcz0nd2YtY2FsZW5kYXItbmF2LWljb25zIG5hdi1pY29uLXdpdGgtc3BhY2UnIHR5cGU9J2J1dHRvbic+JiM4MjUwOzwvYnV0dG9uPgoJCQk8YnV0dG9uIGlkPSd3Zi1jYWxlbmRhci1uZXh0WWVhci1pY29uJyBjbGFzcz0nd2YtY2FsZW5kYXItbmF2LWljb25zJyB0eXBlPSdidXR0b24nPiYjMTg3OzwvYnV0dG9uPgoJCTwvc3Bhbj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSd3Zi1jYWxlbmRhci1ncmlkLWNvbnRhaW5lcic+CgkJCTxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PjxkaXYgY2xhc3M9J3dmLWNhbGVuZGFyLWRheXMnPjwvZGl2PgoJCTwvZGl2PgoJCTxkaXYgaWQ9J3dmLWNhbGVuZGFyLWJvZHknIGNsYXNzPSd3Zi1jYWxlbmRhci1ib2R5LXdyYXBwZXInPjwvZGl2PgoJCTxkaXYgaWQ9J3dmLWNhbGVuZGFyLXRvZGF5LWJ0bicgY2xhc3M9J3dmLWNhbGVuZGFyLXRvZGF5LWJ1dHRvbic+VG9kYXk8L2Rpdj4KCTwvZGl2PgoJPC9mb3JtPgoJPC9kaXY+CjwvZGl2Pgo8c2NyaXB0PgogCSAgdmFyIG1uZEZpZWxkczczNjUyNTMwMDAwMDA2NDExNDY9bmV3IEFycmF5KCdMYXN0XHgyME5hbWUnLCdFbWFpbCcsJ0NPTlRBQ1RDRjMnLCdDT05UQUNUQ0YyJywnQ09OVEFDVENGNTEnKTsKIAkgIHZhciBmbGRMYW5nVmFsNzM2NTI1MzAwMDAwMDY0MTE0Nj1uZXcgQXJyYXkoJ0xhc3QgTmFtZScsJ0VtYWlsJywnSmV3ZWxsZXJ5IFR5cGUnLCdCdWRnZXQgUmFuZ2UnLCdSZXF1aXJlZCBCeScpOwogCSB2YXIgd2ZJbm5lcldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7CiAJIGlmKHdmSW5uZXJXaWR0aCA8PSA3NjgpewogCSAJIGRvY3VtZW50LmZvcm1zWydCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtdXgtZm9ybS1hbGlnbm1lbnQnLCAndG9wJyk7CiAJIH0KIAlmdW5jdGlvbiByZW1vdmVFcnJvcihmaWVsZE9iaikgewogCSAJdmFyIHBhcmVudEVsZW1lbnQgPSBmaWVsZE9iai5jbG9zZXN0KCcud2YtZmllbGQnKSwKIAkgCSAJY2hpbGRFbGUgPSBwYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWVycm9yLXBhcmVudC1lbGUnKVswXTsKIAkgCWlmKGNoaWxkRWxlKSB7CiAJIAkgCXBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnd2YtZmllbGQtZXJyb3ItYWN0aXZlJyk7CiAJIAkgCXBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQocGFyZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd3Zi1lcnJvci1wYXJlbnQtZWxlJylbMF0pOwogCSAJfQogCX0KIAlmdW5jdGlvbiBzZXRFcnJvcihmaWVsZE9iaiwgbGFiZWwpIHsKIAkgCXZhciBwYXJlbnRFbGVtZW50ID0gZmllbGRPYmouY2xvc2VzdCgnLndmLWZpZWxkJyksCiAJIAkJY2hpbGRFbGUgPSBwYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWVycm9yLXBhcmVudC1lbGUnKVswXTsKIAkgCWlmKCFjaGlsZEVsZSkgewogCSAJIAl2YXIgZXJyb3JQYXJlbnRFbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdESVYnKSwKIAkgCSAJc3BhbkVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ1NQQU4nKSwKIAkgCSAJdmlld01vcmVFbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdTUEFOJyk7CiAJIAkgCXNwYW5FbGUuc2V0QXR0cmlidXRlKCdjbGFzcycsICd3Zi1maWVsZC1lcnJvciB3Zi1maWVsZC1lcnJvci1sb25nJyk7CiAJIAkgCXNwYW5FbGUuaW5uZXJIVE1MID0gbGFiZWw7CiAJIAkgCWVycm9yUGFyZW50RWxlLmNsYXNzTGlzdC5hZGQoJ3dmLWVycm9yLXBhcmVudC1lbGUnKTsKIAkgCSAJZXJyb3JQYXJlbnRFbGUuYXBwZW5kQ2hpbGQoc3BhbkVsZSk7CiAJIAkgCXBhcmVudEVsZW1lbnQuYXBwZW5kKGVycm9yUGFyZW50RWxlKTsKIAkgCSAJcGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCd3Zi1maWVsZC1lcnJvci1hY3RpdmUnKTsKIAkgCSAJaWYoc3BhbkVsZS5zY3JvbGxXaWR0aCA+IHBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGgpIHsKIAkgCSAJIAl2aWV3TW9yZUVsZS5pbm5lckhUTUwgPSAnVmlldyBNb3JlJzsKIAkgCSAJIAl2aWV3TW9yZUVsZS5jbGFzc0xpc3QuYWRkKCd3Zi1lcnJvci12aWV3LW1vcmUnKTsKIAkgCSAJIAllcnJvclBhcmVudEVsZS5hcHBlbmQodmlld01vcmVFbGUpOwogCSAJIAkgCXZpZXdNb3JlRWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAJIAkgCSAJZXJyb3JQYXJlbnRFbGUucmVtb3ZlQ2hpbGQodmlld01vcmVFbGUpOwogCSAJIAkgCXNwYW5FbGUuY2xhc3NMaXN0LnJlbW92ZSgnd2YtZmllbGQtZXJyb3ItbG9uZycpOwogCSAJIAkgCX0pOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCXNwYW5FbGUuY2xhc3NMaXN0LnJlbW92ZSgnd2YtZmllbGQtZXJyb3ItbG9uZycpCiAJIAkgCX0KIAkgCX0KIAl9CiAJZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHM3MzY1MjUzMDAwMDAwNjQxMTQ2KCkgewogCSAJdmFyIGlzUmV0dXJuID0gdHJ1ZTsKIAkgCXZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbJ0JpZ2luV2ViVG9SZWNvcmRGb3JtNzM2NTI1MzAwMDAwMDY0MTE0NiddOwogCSAJdmFyIHZhbGlkYXRlRmxkID0gZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdbZnZhbGlkYXRlPXRydWVdJyk7CiAJIAl2YXIgaTsKIAkgCWZvciAoaSA9IDA7IGkgPCB2YWxpZGF0ZUZsZC5sZW5ndGg7IGkrKykKIAkgCXsKIAkgCSAJdmFyIHZhbGlkYXRlRmxkVmFsID0gdmFsaWRhdGVGbGRbaV0udmFsdWU7CiAJIAkgCXZhciBmVHlwZSA9IHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZnR5cGUnKTsKIAkgCSAJaWYodmFsaWRhdGVGbGRWYWwgIT09ICcnIHx8ICh2YWxpZGF0ZUZsZFZhbCA9PT0gJycgJiYgZlR5cGUuaW5kZXhPZignZGF0ZScpICE9PSAtMSkpIHsKIAkgCSAJIAl2YXIgd2ZMYWJlbCA9IHZhbGlkYXRlRmxkW2ldLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWxhYmVsJylbMF07CiAJIAkgCSAJdmFyIGZMYWJlbCA9IHdmTGFiZWwgPyB3ZkxhYmVsLmlubmVySFRNTDogJyc7CiAJIAkgCSAJc3dpdGNoKHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSkgewogCSAJIAkgCWNhc2UgJ3N0cmluZ19yZXN0X251bWJlcic6CiAJIAkgCSAJY2FzZSAnc3RyaW5nJzoKIAkgCSAJIAkgCXZhciBpc0Vycm9yID0gZmFsc2UsCiAJIAkgCSAJIAllcnJvcktleSA9ICdPbmx5IGxldHRlcnMgYXJlIGFsbG93ZWQuJzsKIAkgCSAJIAkgCWlmKHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSA9PT0gJ3N0cmluZ19yZXN0X251bWJlcicgJiYgdmFsaWRhdGVGbGRWYWwubWF0Y2goKC9cZC9nKSkgIT09IG51bGwpIHsJCiAJIAkgCSAJIAkgCWlzRXJyb3IgPSB0cnVlOwogCSAJIAkgCSAJfWVsc2UgaWYodmFsaWRhdGVGbGRbaV0uaGFzQXR0cmlidXRlKCdmbWluJykpewogCSAJIAkgCSAJIAlpZih2YWxpZGF0ZUZsZFZhbC5sZW5ndGggPCBwYXJzZUludCh2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2ZtaW4nKSkpIHsKIAkgCSAJIAkgCSAJIAllcnJvcktleSA9ICdZb3VyIGlucHV0IG11c3QgYmUgYXQgbGVhc3QgJyArdmFsaWRhdGVGbGRbaV0uZ2V0QXR0cmlidXRlKCdmbWluJykgKyAnIGNoYXJhY3RlcihzKS4nOwogCSAJIAkgCSAJIAkgCWlzRXJyb3IgPSB0cnVlOwogCSAJIAkgCSAJIAl9IGVsc2UgaWYodmFsaWRhdGVGbGRWYWwubGVuZ3RoID4gcGFyc2VJbnQodmFsaWRhdGVGbGRbaV0uZ2V0QXR0cmlidXRlKCdmbWF4JykpKSB7CiAJIAkgCSAJIAkgCSAJZXJyb3JLZXkgPSAnWW91ciBpbnB1dCBzaG91bGQgbm90IGV4Y2VlZCAnICt2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2ZtYXgnKSArICcgY2hhcmFjdGVyKHMpLic7CiAJIAkgCSAJIAkgCSAJaXNFcnJvciA9IHRydWU7CiAJIAkgCSAJIAkgCX0KIAkgCSAJIAkgCX0KIAkgCSAJIAkgCWlmKGlzRXJyb3IpewogCSAJIAkgCSAJIAlzZXRFcnJvcih2YWxpZGF0ZUZsZFtpXSwgZXJyb3JLZXkpOwogCSAJIAkgCSAJIAlpc1JldHVybiA9IGZhbHNlOwogCSAJIAkgCSAJfQogCSAJIAkgCSAJYnJlYWs7CiAJIAkgCSAJY2FzZSAnZW1haWwnOgogCSAJIAkgCSAJaWYodmFsaWRhdGVGbGRWYWwubWF0Y2goL14oW0EtWmEtejAtOS0uXyUnKy9dK0BbQS1aYS16MC05Li1dKy5bYS16QS1aXXsyLDIyfSkkLykgPT09IG51bGwpIHsKIAkgCSAJIAkgCSAJc2V0RXJyb3IodmFsaWRhdGVGbGRbaV0sICdFbnRlciB2YWxpZCAnICsgZkxhYmVsKTsKIAkgCSAJIAkgCSAJaXNSZXR1cm4gPSBmYWxzZTsKIAkgCSAJIAkgCX0KIAkgCSAJIAkgCWJyZWFrOwogCSAJIAkgCWNhc2UgJ251bWJlcic6CiAJIAkgCSAJY2FzZSAnZG91YmxlJzoKIAkgCSAJIAkgCXZhciBpc0Vycm9yID0gZmFsc2UsCiAJIAkgCSAJIAllcnJvcktleSA9ICdFbnRlciB2YWxpZCAnICsgZkxhYmVsOwogCSAJIAkgCSAJaWYoKHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSA9PT0gJ251bWJlcicgJiYgdmFsaWRhdGVGbGRWYWwubWF0Y2goL15bMC05XSskLykgPT09IG51bGwpCiAJIAkgCSAJIAkJCXx8ICh2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2Z0eXBlJykgPT09ICdkb3VibGUnICYmIHZhbGlkYXRlRmxkVmFsLm1hdGNoKC9eWzAtOV0qKFwuWzAtOV17MCwyfSk/JC8pID09PSBudWxsKSkgewogCSAJIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJIAkgCX1lbHNlIGlmKHZhbGlkYXRlRmxkW2ldLmhhc0F0dHJpYnV0ZSgnZm1pbicpKXsKIAkgCSAJIAkgCSAJaWYodmFsaWRhdGVGbGRWYWwgPCBwYXJzZUludCh2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2ZtaW4nKSkpIHsKIAkgCSAJIAkgCSAJIAllcnJvcktleSA9ICdFbnRlciBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJyArdmFsaWRhdGVGbGRbaV0uZ2V0QXR0cmlidXRlKCdmbWluJyk7CiAJIAkgCSAJIAkgCSAJaXNFcnJvciA9IHRydWU7CiAJIAkgCSAJIAkgCX0gZWxzZSBpZih2YWxpZGF0ZUZsZFZhbCA+IHBhcnNlSW50KHZhbGlkYXRlRmxkW2ldLmdldEF0dHJpYnV0ZSgnZm1heCcpKSkgewogCSAJIAkgCSAJIAkgCWVycm9yS2V5ID0gJ0VudGVyIGEgbnVtYmVyIGxlc3MgdGhhbiBvciBlcXVhbCB0byAnICt2YWxpZGF0ZUZsZFtpXS5nZXRBdHRyaWJ1dGUoJ2ZtYXgnKTsKIAkgCSAJIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJIAkgCSAJfQogCSAJIAkgCSAJfQogCSAJIAkgCSAJaWYoaXNFcnJvcil7CiAJIAkgCSAJIAkgCXNldEVycm9yKHZhbGlkYXRlRmxkW2ldLCBlcnJvcktleSk7CiAJIAkgCSAJIAkgCWlzUmV0dXJuID0gZmFsc2U7CiAJIAkgCSAJIAl9CiAJIAkgCSAJIAlicmVhazsKIAkgCSAJIAkgfQogCSAJIAl9CiAJIAl9CiAJIAlyZXR1cm4gaXNSZXR1cm47CiAJfQogCWZ1bmN0aW9uIHNob3dEcm9wRG93bjczNjUyNTMwMDAwMDA2NDExNDYoX2MpewogCSAJdmFyIF9kZCA9IF9jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duJylbMF0sCiAJIAkgX2RkSW5wdXQgPSBfYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcm9wZG93bi1pbnB1dCcpWzBdLAogCSAJIGRkTSA9IF9jLnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JyksCiAJIAkgX3NPcHQgPSBfYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzZWxlY3RlZC1vcHRpb25zJylbMF07CiAJIAkgaWYoX2RkSW5wdXQgJiYgX2RkSW5wdXQudmFsdWUgIT09ICcnKSB7CgogCSAJIAl0aGlzLnJlbW92ZUVycm9yKF9kZElucHV0KTsKCiAJIAkgfQogCSAJaWYoZGRNLmNoaWxkRWxlbWVudENvdW50ID09PSAwKSB7CiAJIAkgCV9jLmNsYXNzTGlzdC5yZW1vdmUoJ2Ryb3Bib3gtYWN0aXZlJyk7CiAJIAkgCV9zT3B0LmNsYXNzTGlzdC5hZGQoJ2RycC1kd24tbm8tdmFsJyk7CiAJIAkgCXJldHVybiBmYWxzZTsKIAkgCX0KIAkgCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bicpLmZvckVhY2goZHJvcGR3bj0+ewogCSAJIAlpZighZHJvcGR3bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGUtZHJvcGRvd24nKSkgewogCSAJIAkgCWRyb3Bkd24uY2xhc3NMaXN0LmFkZCgnaGlkZS1kcm9wZG93bicpOwogCSAJIAl9CiAJIAkgCWRyb3Bkd24ucXVlcnlTZWxlY3RvckFsbCgnLmRyb3Bkb3duLWlucHV0JykuZm9yRWFjaChpbnA9PnsKIAkgCSAJIAlpZighaW5wLmNsYXNzTGlzdC5jb250YWlucygnZE4nKSkgewogCSAJIAkgCSAJaW5wLmNsYXNzTGlzdC5hZGQoJ2ROJyk7CiAJIAkgCSAJfQogCSAJIAl9KTsKIAkgCX0pOwogCSAJbGV0IGRkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bicpOwogCSAJaWYoZGRzKSB7CiAJIAkgCWRkcy5mb3JFYWNoKGRkRWxlbT0+ewogCSAJIAkgCWlmKGRkRWxlbS5jbGFzc0xpc3QuY29udGFpbnMoJ29wZW4nKSkgewogCSAJIAkgCSAJZGRFbGVtLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTsKIAkgCSAJIAl9CiAJIAkgCX0pOwogCSAJfQogCSAJaWYoX3NPcHQpIHsKIAkgCSAJX3NPcHQuY2xhc3NMaXN0LnJlbW92ZSgnZHJvcC1ib3gtY2xvc2VkJywgJ2RycC1kd24tbm8tdmFsJywgJ3NlbGVjdGVkLW9wdGlvbnMtZmllbGQnKTsKIAkgCX0KIAkgCV9jLmNsb3Nlc3QoJy53Zi1mb3JtLXdyYXBwZXInKS5xdWVyeVNlbGVjdG9yQWxsKCcubXVsdGlzZWxlY3QnKS5mb3JFYWNoKGRkV3JhcD0+ewogCSAJIAlpZihkZFdyYXAuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcm9wYm94LWFjdGl2ZScpKSB7CiAJIAkgCSAJZGRXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2Ryb3Bib3gtYWN0aXZlJyk7CiAJIAkgCX0KIAkgCX0pOwogCSAJX2MuY2xhc3NMaXN0LmFkZCgnZHJvcGJveC1hY3RpdmUnKTsKIAkgCWRkTS5jbGFzc0xpc3QuYWRkKCdkcm9wZG93bi1mb2N1cycpOwogCSAJaWYoX2RkSW5wdXQpIHsKIAkgCV9kZElucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2lucHV0LW5vdC1hY3RpdmUnLCAnZHJvcC1ib3gtY2xvc2VkJyk7CiAJIAlfZGRJbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgJ1NlYXJjaCBIZXJlJyk7CiAJIAl9CiAJIAlpZihkZE0uY2hpbGRFbGVtZW50Q291bnQgPiAxKSB7CiAJIAkgCV9jLnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bicpLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGUtZHJvcGRvd24nKTsKIAkgCX0KIAkgCWxldCBvcHRpb25zID0gX2MucXVlcnlTZWxlY3RvckFsbCgnLm9wdGlvbicpOwogCSAJb3B0aW9ucy5mb3JFYWNoKG9wdGlvbj0+ewogCSAJIAlpZihvcHRpb24uY2xhc3NMaXN0LmNvbnRhaW5zKCduby1yZXN1bHRzJykpIHsKIAkgCSAJIAlpZighX2RkSW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkTicpKSB7CiAJIAkgCSAJIAlfZGRJbnB1dC5jbGFzc0xpc3QuYWRkKCdkTicpOwogCSAJIAkgCX0KIAkgCSAJfQogCSAJfSk7CiAJIAlpZihfZGQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkTicpKSB7CiAJIAkgCV9kZC5jbGFzc0xpc3QucmVtb3ZlKCdkTicpOwogCSAJfQogCSAJX2RkLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKIAkgCWlmKGRkTS5xdWVyeVNlbGVjdG9yKCcub3B0aW9uW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV0nKSkgewogCSAJIAlkZE0ucXVlcnlTZWxlY3RvcignLm9wdGlvbltkYXRhLXNlbGVjdGVkPXRydWVdJykuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAnY2VudGVyJ30pOwogCSAJfQogCSAJaWYoX2RkSW5wdXQgJiYgX2RkSW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkTicpKSB7CiAJIAkgCV9kZElucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2ROJyk7CiAJIAl9CiAJIAlfYy5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24nKS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRlLWRyb3Bkb3duJyk7CiAJIAlpZihfZGRJbnB1dCl7CiAJIAlfZGRJbnB1dC5mb2N1cygpOwogCSAJfQogCSAJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAJIAkgCWlmIChfZGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICsgZGRNLm9mZnNldEhlaWdodCArIDEwID4gd2luZG93LmlubmVySGVpZ2h0KSB7CiAJIAkgCWxldCB0b3AgPSBkZE0ub2Zmc2V0SGVpZ2h0OwogCSAJIAlpZiAoZGRNLmNsb3Nlc3QoJy51eC1waWNrLW1peGVkJykpIHsKIAkgCSAJIAl0b3AgPSBkZE0ub2Zmc2V0SGVpZ2h0ICsgNDsKIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAlpZiAoX3NPcHQub2Zmc2V0SGVpZ2h0KSB7CiAJIAkgCSAJIAl0b3AgPSBNYXRoLmFicyhkZE0ub2Zmc2V0SGVpZ2h0KSArIF9zT3B0Lm9mZnNldEhlaWdodAogCSAJIAkgCX0KIAkgCSAJfQogCSAJIAlfZGQuY2xvc2VzdCgnLndmLWZpZWxkLWRyb3Bkb3duJykuY2xhc3NMaXN0LmFkZCgnZHJvcGRvd25Ub3AnKTsKIAkgCSAJZGRNLmNsYXNzTGlzdC5hZGQoJ2Ryb3Bkb3duVG9wJyk7CiAJIAkgCWRkTS5zdHlsZS50b3AgPSAnLScgKyB0b3AgKyAncHgnOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCV9kZC5jbG9zZXN0KCcud2YtZmllbGQtZHJvcGRvd24nKS5jbGFzc0xpc3QucmVtb3ZlKCdkcm9wZG93blRvcCcpOwogCSAJIAkgCWRkTS5jbGFzc0xpc3QucmVtb3ZlKCdkcm9wZG93blRvcCcpOwogCSAJIAkgCWRkTS5zdHlsZS50b3AgPSAnJzsKIAkgCSAJfQogCSAJfSwgMjAwKQogCX0KIAlmdW5jdGlvbiBoYW5kbGVTZWFyY2hGb3JEcm9wZG93bihkcm9wZG93bklucHV0LCBkcm9wZG93blNlbGVjdG9yKSB7CiAJIAl2YXIgZHJvcGRvd25NZW51ID0gZHJvcGRvd25JbnB1dC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoZHJvcGRvd25TZWxlY3RvciksCiAJIAkgc2VhcmNoVGV4dCA9IGRyb3Bkb3duSW5wdXQudmFsdWUudG9Mb3dlckNhc2UoKSwKIAkgCSBub1Jlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCduby1yZXN1bHRzJylbMF0sCiAJIAkgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAJIAkgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSwKIAkgCSBvcHRpb25zID0gZHJvcGRvd25NZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHRpb24nKTsKIAkgCXNwYW4uc2V0QXR0cmlidXRlKCdkYXRhLXZhbHVlJywgJ05vIHJlc3VsdHMnKTsKIAkgCWRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnLCAnTm8gcmVzdWx0cycpOwogCSAJZGl2LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnb3B0aW9uIG5vLXJlc3VsdHMnKTsKIAkgCWRpdi50ZXh0Q29udGVudCA9ICdObyBvcHRpb25zIGZvdW5kJzsKIAkgCW9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAob3B0aW9uKSB7CiAJIAkgCWxldCBvcHRpb25WYWx1ZSA9IG9wdGlvbi5xdWVyeVNlbGVjdG9yKCdzcGFuJykuZGF0YXNldC52YWx1ZS50b0xvd2VyQ2FzZSgpOwogCSAJIAlpZiAob3B0aW9uVmFsdWUuaW5jbHVkZXMoc2VhcmNoVGV4dCkpIHsKIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LmFkZCgnb3B0LXNob3cnKTsKIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnb3B0LWhpZGUnKTsKIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnb3B0LXNob3cnKTsKIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LmFkZCgnb3B0LWhpZGUnKTsKIAkgCSAJfQogCSAJfSk7CiAJIAlmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgewogCSAJIAlpZiAob3B0aW9uc1tpXS5jbGFzc0xpc3QuY29udGFpbnMoJ29wdC1oaWRlJykpIHsKIAkgCSAJIAlpZiAoaSA9PSBvcHRpb25zLmxlbmd0aCAtIDEpIHsKIAkgCSAJIAkgCWRpdi5hcHBlbmRDaGlsZChzcGFuKTsKIAkgCSAJIAkgCWlmIChvcHRpb25zW2ldLmNsYXNzTGlzdC5jb250YWlucygnbm8tcmVzdWx0cycpKSB7CiAJIAkgCSAJIAkgCWlmIChub1Jlc3VsdHMuY2xhc3NMaXN0LmNvbnRhaW5zKCdvcHQtaGlkZScpKSB7CiAJIAkgCSAJIAkgCSAJbm9SZXN1bHRzLmNsYXNzTGlzdC5yZW1vdmUoJ29wdC1oaWRlJyk7CiAJIAkgCSAJIAkgCX0KIAkgCSAJIAkgCSAJcmV0dXJuIGZhbHNlOwogCSAJIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAkgCSAJZHJvcGRvd25NZW51LmFwcGVuZENoaWxkKGRpdik7CiAJIAkgCSAJIAl9CiAJIAkgCSAJfQogCSAJIAl9IGVsc2UgewogCSAJIAkgCSBpZiAobm9SZXN1bHRzKSB7CiAJIAkgCSAJIAlub1Jlc3VsdHMucmVtb3ZlKCk7CiAJIAkgCSAJIH0KIAkgCSAJIAlyZXR1cm4gZmFsc2U7CiAJIAkgCX0KIAkgCX0KIAl9CiAJZnVuY3Rpb24gY3JlYXRlRHJvcGRvd25PcHRpb25zNzM2NTI1MzAwMDAwMDY0MTE0NihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQpIHsKIAkgCXZhciBlbGVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVJRCksCiAJIAkgX2RkID0gZWxlRGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duJylbMF0sCiAJIAkgX2RkTSA9IGVsZURpdi5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tbWVudScpLAogCSAJIF9kZElucHV0ID0gZWxlRGl2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duLWlucHV0JylbMF0sCiAJIAkgX3NPcHQgPSBlbGVEaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2VsZWN0ZWQtb3B0aW9ucycpWzBdLAogCSAJX21zUGFyID0gZWxlRGl2LmNsb3Nlc3QoJy53Zi1maWVsZCcpOwogCSAJX2RkTS5pbm5lckhUTUwgPSAnJzsgCgogCSAJb3B0aW9uc0RhdGEuZm9yRWFjaChmdW5jdGlvbihvcHRpb25WYWx1ZSkgewogCSAJIAlpZiAoIXNPcHQuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7CiAJIAkgCSAJdmFyIG9wdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogCSAJIAkgCW9wdGlvbkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdvcHRpb24nKTsKIAkgCSAJIAl2YXIgb3B0aW9uVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogCSAJIAkgCW9wdGlvblRhZy50ZXh0Q29udGVudCA9IG9wdGlvblZhbHVlOwogCSAJIAkgCW9wdGlvblRhZy5kYXRhc2V0LnZhbHVlID0gb3B0aW9uVmFsdWU7CiAJIAkgCSAJb3B0aW9uVGFnLmNsYXNzTGlzdC5hZGQoJ29wdGlvbi10eHQnKTsKIAkgCSAJIAlvcHRpb25Db250YWluZXIuYXBwZW5kQ2hpbGQob3B0aW9uVGFnKTsKIAkgCSAJIAlfZGRNLmFwcGVuZENoaWxkKG9wdGlvbkNvbnRhaW5lcik7CiAJIAkgCX0KIAkgCX0pOwogCSAJdmFyIG9wdGlvbnMgPSBfZGRNLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHRpb24nKTsKIAkgCW9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvcHRpb24pIHsKIAkgCSAJb3B0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAJIAkgCSAJdmFyIG9wdGlvblZhbHVlID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdzcGFuJykuZGF0YXNldC52YWx1ZTsKIAkgCSAJIAlhZGRTZWxlY3RlZE9wdGlvbihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQsIFtvcHRpb25WYWx1ZV0pOwogCSAJIAkgCWlmKF9zT3B0LmNoaWxkRWxlbWVudENvdW50ID4gMCl7CiAJIAkgCSAJIAlfc09wdC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRlLW9wdC1saXN0Jyk7CiAJIAkgCSAJIAlfZGRJbnB1dC5jbGFzc0xpc3QuYWRkKCdkcm9wLWJveC1hY3RpdmUnKTsKIAkgCSAJIAl9CiAJIAkgCSAJbGV0IHRhZ3MgPSBfc09wdC5xdWVyeVNlbGVjdG9yQWxsKCcudGFnLWRhdGEtdmFsJyk7CiAJIAkgCSAJaWYodGFncykgewogCSAJIAkgCXRhZ3MuZm9yRWFjaCh0YWdWYWw9PnsKIAkgCSAJIAlpZigodGFnVmFsLnNjcm9sbFdpZHRoID4gdGFnVmFsLmNsaWVudFdpZHRoKSAmJiAhdGFnVmFsLmdldEF0dHJpYnV0ZSgndGl0bGUnKSl7CiAJIAkgCSAJdGFnVmFsLnNldEF0dHJpYnV0ZSgndGl0bGUnLCB0YWdWYWwuZ2V0QXR0cmlidXRlKCdkYXRhLXZhbHVlJykpOwogCSAJIAkgCX0KIAkgCSAJIAl9KQogCSAJIAkgCX0KIAkgCSAJIAlpZihfc09wdC5jaGlsZEVsZW1lbnRDb3VudCA+IDEpIHsKIAkgCSAJIAkgCV9zT3B0LmNsYXNzTGlzdC5hZGQoJ3NldC1vcHQtbGlzdCcpOwogCSAJIAkgCX0KIAkgCSAJIAlpZihfZGRNLmNoaWxkRWxlbWVudENvdW50ID09PSAwKXsKIAkgCSAJIAkgCV9kZC5jbGFzc0xpc3QuYWRkKCdoaWRlLWRyb3Bkb3duJyk7CiAJIAkgCSAJIAlpZihvcHRpb24gJiYgIW9wdGlvbi5jbGFzc0xpc3QuY29udGFpbnMoJ25vLXJlc3VsdHMnKSkgewogCSAJIAkgCSAJIAlsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAJIAkgCSAJIAkgCXNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAJIAkgCSAJIAkgCWRpdi50ZXh0Q29udGVudCA9ICdObyBvcHRpb25zIGZvdW5kJzsKIAkgCSAJIAkgCSAJc3Bhbi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnLCAnTm8gcmVzdWx0cycpOwogCSAJIAkgCSAJIAlkaXYuc2V0QXR0cmlidXRlKCdjbGFzcycsICdvcHRpb24gbm8tcmVzdWx0cycpOwogCSAJIAkgCSAJIAlkaXYuYXBwZW5kQ2hpbGQoc3Bhbik7CiAJIAkgCSAJIAkgCV9kZE0uYXBwZW5kQ2hpbGQoZGl2KTsKIAkgCSAJIAkgCSAJX2RkTS5jbGFzc0xpc3QuYWRkKCdoaWRlLXRoZS1pbnAnKTsKIAkgCSAJIAkgCSAJX2RkSW5wdXQuY2xhc3NMaXN0LmFkZCgnZE4nKTsKIAkgCSAJIAkgCSAJZWxlRGl2LmNsYXNzTGlzdC5hZGQoJ25vLXJlc3VsdHMtZWxlbScpOwogCSAJIAkgCSAJIAllbGVEaXYuY2xvc2VzdCgnLndmLWZpZWxkLWlubmVyJykuY2xhc3NMaXN0LmFkZCgnbm8tcmVzdWx0cy1lbGVtJyk7CiAJIAkgCSAJIAl9ZWxzZSB7CiAJIAkgCSAJIAkgCV9kZC5jbGFzc0xpc3QuYWRkKCdkTicpOwogCSAJIAkgCSAJIAlfZGRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkTicpOwogCSAJIAkgCSAJIAllbGVEaXYuY2xhc3NMaXN0LnJlbW92ZSgnbm8tcmVzdWx0cy1lbGVtJyk7CiAJIAkgCSAJIAkgCWVsZURpdi5jbG9zZXN0KCcud2YtZmllbGQtaW5uZXInKS5jbGFzc0xpc3QucmVtb3ZlKCduby1yZXN1bHRzLWVsZW0nKTsKIAkgCSAJIAkgCX0KIAkgCSAJIAl9CiAJIAkgCX0pOwogCSAJfSk7CiAJIAlpZihfbXNQYXIgJiYgX21zUGFyLmNsYXNzTGlzdC5jb250YWlucygnd2YtZmllbGQtZXJyb3ItYWN0aXZlJykpewogCSAJIAl0aGlzLnJlbW92ZUVycm9yKF9kZElucHV0KTsKIAkgCX0KIAkgCWlmKF9zT3B0ICYmIF9zT3B0LmNoaWxkRWxlbWVudENvdW50ID4gNCkgewogCSAJIAlfc09wdC5sYXN0RWxlbWVudENoaWxkLnNjcm9sbEludG9WaWV3KCk7CiAJIAl9CiAJfQogCSBmdW5jdGlvbiBhZGRTZWxlY3RlZE9wdGlvbihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQsIG9wdGlvbnNWYWx1ZSkgewogCSAJdmFyIGVsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZUlEKSwKIAkgCSBfc09wdCA9IGVsZURpdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzZWxlY3RlZC1vcHRpb25zJylbMF0sCiAJIAkgX2RkSW5wdXQgPSBlbGVEaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHJvcGRvd24taW5wdXQnKVswXTsgCgogCSAJb3B0aW9uc1ZhbHVlLm1hcChvcHRpb25WYWx1ZSA9PiB7CiAJIAlpZiAoIXNPcHQuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7CiAJIAkgCXNPcHQucHVzaChvcHRpb25WYWx1ZSk7IAoKIAkgCSAJdmFyIG9wdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogCSAJIAlvcHRpb25Db250YWluZXIuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQtb3B0aW9uJywgJ211bHRpLXRhZycpOyAKCiAJIAkgCXZhciBvcHRpb25UYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAJIAkgCW9wdGlvblRhZy5jbGFzc0xpc3QuYWRkKCd0YWctZGF0YS12YWwnLCAnZWxsaXBzaXMnKTsKIAkgCSAJb3B0aW9uVGFnLnRleHRDb250ZW50ID0gb3B0aW9uVmFsdWU7CiAJIAkgCW9wdGlvblRhZy5kYXRhc2V0LnZhbHVlID0gb3B0aW9uVmFsdWU7CiAJIAkgCW9wdGlvbkNvbnRhaW5lci5hcHBlbmRDaGlsZChvcHRpb25UYWcpOwoKIAkgCSAJdmFyIHJlbW92ZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKIAkgCSAJcmVtb3ZlQnV0dG9uLnRleHRDb250ZW50ID0gJ3gnOwogCSAJIAlyZW1vdmVCdXR0b24uY2xhc3NMaXN0LmFkZCgncmVtb3ZlLWJ1dHRvbicsICd0YWctY2xvc2UtYnRuJyk7CiAJIAkgCXJlbW92ZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGNsc2VCdG4pIHsKIAkgCSAJIAl2YXIgb3B0aW9uQ29udGFpbmVyID0gdGhpcy5wYXJlbnROb2RlLAogCSAJIAkgCSBvcHRpb25WYWx1ZSA9IG9wdGlvbkNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzcGFuJykuZGF0YXNldC52YWx1ZSwKIAkgCSAJIAkgZHJvcGRvd24gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcm9wZG93bicpWzBdOwogCSAJIAkgCWxldCBjbG9zZUREID0gY2xzZUJ0biAmJiBjbHNlQnRuLmN1cnJlbnRUYXJnZXQuY2xvc2VzdCgnLm11bHRpc2VsZWN0JykgPyBjbHNlQnRuLmN1cnJlbnRUYXJnZXQuY2xvc2VzdCgnLm11bHRpc2VsZWN0JykuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHJvcGRvd24nKVswXSA6IHVuZGVmaW5lZDsKIAkgCSAJIAlpZihjbG9zZUREICYmIGNsb3NlREQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkTicpKSB7CiAJIAkgCSAJIAljbG9zZURELmNsYXNzTGlzdC5yZW1vdmUoJ2ROJyk7CiAJIAkgCSAJIAl9CiAJIAkgCSAJIAlpZihjbHNlQnRuICYmIGNsc2VCdG4uY3VycmVudFRhcmdldC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICYmIGNsc2VCdG4uY3VycmVudFRhcmdldC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmdldEF0dHJpYnV0ZSgndGl0bGUnKSkgewogCSAJIAkgCSAJY2xzZUJ0bi5jdXJyZW50VGFyZ2V0LnByZXZpb3VzRWxlbWVudFNpYmxpbmcucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpOwogCSAJIAkgCX0KIAkgCSAJIAlfc09wdC5yZW1vdmVDaGlsZChvcHRpb25Db250YWluZXIpOwogCSAJIAkgCXZhciBpbmRleCA9IHNPcHQuaW5kZXhPZihvcHRpb25WYWx1ZSk7CiAJIAkgCSAJaWYgKGluZGV4ID4gLTEpIHsKIAkgCSAJIAkgCXNPcHQuc3BsaWNlKGluZGV4LCAxKTsKIAkgCSAJIAl9CiAJIAkgCSAJaWYoX3NPcHQuY2hpbGRFbGVtZW50Q291bnQgPT09IDApewogCSAJIAkgCSAJX3NPcHQuY2xhc3NMaXN0LmFkZCgnaGlkZS1vcHQtbGlzdCcpOwogCSAJIAkgCSAJX2RkSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgnZHJvcC1ib3gtYWN0aXZlJyk7CiAJIAkgCSAJIAlfc09wdC5jbGFzc0xpc3QucmVtb3ZlKCdzZXQtb3B0LWxpc3QnKTsKIAkgCSAJIAl9CiAJIAkgCSAJbGV0IF9kZE0gPSBjbG9zZURELmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duLW1lbnUnKVswXTsKIAkgCSAJIAlpZihfZGRNICYmIF9kZE0uY2hpbGRFbGVtZW50Q291bnQgPiAwKSB7CiAJIAkgCSAJIAlfZGRJbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkTicpOwogCSAJIAkgCSAJY2xvc2VERC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRlLWRyb3Bkb3duJyk7CiAJIAkgCSAJIAljbG9zZURELnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZS10aGUtaW5wJyk7CiAJIAkgCSAJfQogCSAJIAkgCWlmKGNsb3NlREQuY2xvc2VzdCgnLndmLWZpZWxkLWlubmVyJykuY2xhc3NMaXN0LmNvbnRhaW5zKCduby1yZXN1bHRzLWVsZW0nKSkgewogCSAJIAkgCSAJY2xvc2VERC5jbG9zZXN0KCcud2YtZmllbGQtaW5uZXInKS5jbGFzc0xpc3QucmVtb3ZlKCduby1yZXN1bHRzLWVsZW0nKTsKIAkgCSAJIAkgCWNsb3NlREQuY2xvc2VzdCgnLndmLWZpZWxkLWlubmVyJykucXVlcnlTZWxlY3RvcignLm11bHRpc2VsZWN0JykuY2xhc3NMaXN0LnJlbW92ZSgnbm8tcmVzdWx0cy1lbGVtJyk7CiAJIAkgCSAJfQogCSAJIAkgCSAJY3JlYXRlRHJvcGRvd25PcHRpb25zNzM2NTI1MzAwMDAwMDY0MTE0NihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQpOwogCSAJIAl9KTsKIAkgCSAJb3B0aW9uQ29udGFpbmVyLmFwcGVuZENoaWxkKHJlbW92ZUJ1dHRvbik7CiAJIAkgCV9zT3B0LmFwcGVuZENoaWxkKG9wdGlvbkNvbnRhaW5lcik7CiAJIAl9CiAJIAl9KTsKIAkgCV9kZElucHV0LnZhbHVlID0gJyc7CiAJIAlfZGRJbnB1dC5mb2N1cygpOwogCSAJY3JlYXRlRHJvcGRvd25PcHRpb25zNzM2NTI1MzAwMDAwMDY0MTE0NihlbGVJRCwgb3B0aW9uc0RhdGEsIHNPcHQpOwogCX0KIAlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZHJvcGRvd24taW5wdXQnKS5mb3JFYWNoKGZ1bmN0aW9uKGRkRWxlKSB7CiAJIAlkZEVsZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uIChlbGUpIHsKIAkgCSAJaGFuZGxlU2VhcmNoRm9yRHJvcGRvd24oZWxlLnNyY0VsZW1lbnQsJy5kcm9wZG93bi1tZW51Jyk7CiAJIAl9KTsKIAl9KTsKIAlmdW5jdGlvbiB2YWxpZGF0ZU11bHRpUGljazczNjUyNTMwMDAwMDA2NDExNDYoKSB7CiAJIAl2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWydCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnXSwKIAkgCSBpc1JldHVybiA9IHRydWU7CiAJIAlmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJ1ttdWx0aXBpY2s9dHJ1ZV0nKS5mb3JFYWNoKGZ1bmN0aW9uKG11bHRpUGlja0VsZSl7CiAJIAkgCXZhciBvcHRpb25zQSA9IHdpbmRvd1snc29wdCcrbXVsdGlQaWNrRWxlLm5hbWVdLAogCSAJIAkgb3B0TCA9IG9wdGlvbnNBLmxlbmd0aCwKIAkgCSAJIGlzRXJyb3IgPSBmYWxzZSwKIAkgCSAJIGVycm9yS2V5ID0gJycsCiAJIAkgCSBwaWNrT3B0aW9ucyA9ICcnOwogCSAJIAlpZihtdWx0aVBpY2tFbGUuaGFzQXR0cmlidXRlKCdmbWluJykpIHsKIAkgCSAJIAlpZihvcHRMIDwgcGFyc2VJbnQobXVsdGlQaWNrRWxlLmdldEF0dHJpYnV0ZSgnZm1pbicpKSkgewogCSAJIAkgCSAJZXJyb3JLZXkgPSAnWW91IG11c3Qgc2VsZWN0IGF0IGxlYXN0ICcgKyBtdWx0aVBpY2tFbGUuZ2V0QXR0cmlidXRlKCdmbWluJykgKyAnIG9wdGlvbihzKSc7CiAJIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJIAl9IGVsc2UgaWYob3B0TCA+IHBhcnNlSW50KG11bHRpUGlja0VsZS5nZXRBdHRyaWJ1dGUoJ2ZtYXgnKSkpIHsKIAkgCSAJIAkgCWVycm9yS2V5ID0gJ1lvdSBjYW4gc2VsZWN0IHVwIHRvIG9ubHkgJyArIG11bHRpUGlja0VsZS5nZXRBdHRyaWJ1dGUoJ2ZtYXgnKSArICcgb3B0aW9uKHMpJzsKIAkgCSAJIAkgCWlzRXJyb3IgPSB0cnVlOwogCSAJIAkgCX0KIAkgCSAJfQogCSAJIAlpZihpc0Vycm9yKXsKIAkgCSAJIAlzZXRFcnJvcihtdWx0aVBpY2tFbGUsIGVycm9yS2V5KTsKIAkgCSAJIAlpc1JldHVybiA9IGZhbHNlOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCWZvciAoaiA9IDA7IGogPCBvcHRMOyBqKyspIHsKIAkgCSAJIAkgCWlmKHBpY2tPcHRpb25zID09PSAnJykgewogCSAJIAkgCSAJIAlwaWNrT3B0aW9ucyA9IG9wdGlvbnNBW2pdOwogCSAJIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAkgCSAJcGlja09wdGlvbnMgKz0gJzsnICsgb3B0aW9uc0Fbal07CiAJIAkgCSAJIAl9CiAJIAkgCSAJfQogCSAJIAl9CiAJIAkgCW11bHRpUGlja0VsZS52YWx1ZSA9IHBpY2tPcHRpb25zOwogCSAJfSk7CiAJIAlyZXR1cm4gaXNSZXR1cm47CiAJfQogCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSl7CiAJIAlsZXQgdGFyZ2V0Q2xhc3NlcyA9IGUudGFyZ2V0LmNsYXNzTGlzdCwKIAkgCSBjbGFzc05hbWVzID0gWydtdWx0aXNlbGVjdCcsICdzZWxlY3RlZC1vcHRpb25zJywgJ2Ryb3Bkb3duLWlucHV0JywgJ29wdGlvbicsICdvcHRpb24tdHh0JywgJ3NlbGVjdGVkLW9wdGlvbicsICdyZW1vdmUtYnV0dG9uJywgJ2Ryb3Bkb3duJ107CiAJIAlpZigoIWUudGFyZ2V0LmNsb3Nlc3QoJy5zaW5nbGUtc2VsZWN0LWRycCcpICYmIGNsYXNzTmFtZXMuc29tZShjbGFzc05hbWUgPT4gdGFyZ2V0Q2xhc3Nlcy5jb250YWlucyhjbGFzc05hbWUpKSkgfHwgKGUudGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bicpICYmICAhZS50YXJnZXQuY2xvc2VzdCgnLmRyb3Bkb3duLWl0ZW1zLXdyYXBwZXInKSkpewogCSAJIAlyZXR1cm4gdHJ1ZTsKIAkgCX1lbHNlewogCSAJIAl2YXIgbUxlbiA9IG11bHRpUGlja0ZpZWxkcy5sZW5ndGg7CiAJIAkgCWZvcihpPTA7IGk8bUxlbjsgaSsrKSB7CiAJIAkgCXZhciBkcm9wZG93bk1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tbWVudScpLAogCSAJIAkgZHJvcGRvd24gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkcm9wZG93bicpW2ldLAogCSAJIAkgbXVsdGlzZWxlY3RCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtdWx0aXNlbGVjdCcpW2ldLAogCSAJIAkgc2VsZWN0ZWRPcHRpb25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2VsZWN0ZWQtb3B0aW9ucycpW2ldLAogCSAJIAkgZHJvcGRvd25JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Ryb3Bkb3duLWlucHV0JylbaV0sCiAJIAkgCSBvcHRpb25zID0gZHJvcGRvd25NZW51LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHRpb24nKTsKIAkgCSAJbm9SZXN1bHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbm8tcmVzdWx0cycpW2ldOwogCSAJIAlkcm9wZG93bi5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7CiAJIAkgCW11bHRpc2VsZWN0Qm94LmNsYXNzTGlzdC5yZW1vdmUoJ2Ryb3Bib3gtYWN0aXZlJyk7CiAJIAkgCWRyb3Bkb3duTWVudS5jbGFzc0xpc3QucmVtb3ZlKCdkcm9wZG93bi1mb2N1cycpOwogCSAJIAlzZWxlY3RlZE9wdGlvbnMuY2xhc3NMaXN0LmFkZCgnZHJvcC1ib3gtY2xvc2VkJyk7CiAJIAkgCWRyb3Bkb3duSW5wdXQuY2xhc3NMaXN0LmFkZCgnZHJvcC1ib3gtY2xvc2VkJyk7CiAJIAkgCWlmKGRyb3Bkb3duSW5wdXQudmFsdWUgfHwgKG11bHRpc2VsZWN0Qm94LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1zZWFyY2gtaW5wdXQnKSAmJiBtdWx0aXNlbGVjdEJveC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tc2VhcmNoLWlucHV0JykudmFsdWUpKXsKIAkgCSAJaWYoZHJvcGRvd25JbnB1dC52YWx1ZSl7CiAJIAkgCSAJZHJvcGRvd25JbnB1dC52YWx1ZSA9ICcnOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCW11bHRpc2VsZWN0Qm94LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1zZWFyY2gtaW5wdXQnKS52YWx1ZSA9ICcnOwogCSAJIAl9CiAJIAkgCSAJb3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdGlvbil7CiAJIAkgCSAJaWYob3B0aW9uLmNsYXNzTGlzdC5jb250YWlucygnb3B0LWhpZGUnKSl7CiAJIAkgCSAJIAlvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnb3B0LWhpZGUnKQogCSAJIAkgCX0KIAkgCSAJIAl9KTsKIAkgCSAJfQogCSAJIAlpZihzZWxlY3RlZE9wdGlvbnMuY2hpbGROb2Rlcy5sZW5ndGggPCAxKXsKIAkgCSAJIAlzZWxlY3RlZE9wdGlvbnMuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQtb3B0aW9ucy1maWVsZCcpOwogCSAJIAkgCWRyb3Bkb3duSW5wdXQucmVtb3ZlQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpOwogCSAJIAl9ZWxzZXsKIAkgCSAJIAlzZWxlY3RlZE9wdGlvbnMuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQtb3B0aW9ucy1maWVsZCcpOwogCSAJIAl9CiAJIAkgCWlmKCFkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ29wZW4nKSkgewogCSAJIAkgCWRyb3Bkb3duLmNsYXNzTGlzdC5hZGQoJ2hpZGUtZHJvcGRvd24nKTsKIAkgCSAJIAlkcm9wZG93bklucHV0LmNsYXNzTGlzdC5hZGQoJ2ROJyk7CiAJIAkgCX1lbHNlIHsKIAkgCSAJIAlkcm9wZG93bklucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ2ROJyk7CiAJIAkgCSAJZHJvcGRvd24uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZS1kcm9wZG93bicpOwogCSAJIAl9CiAJIAkgCX0KIAkgCSAJbm9SZXN1bHRzID0gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCduby1yZXN1bHRzJykpOwogCSAJIAlub1Jlc3VsdHMubWFwKHggPT4geC5yZW1vdmUoKSk7CiAJIAkgCWlmKCFlLnRhcmdldC5jbG9zZXN0KCcuZGF0ZS1pbnB1dC1jb250YWluZXInKSAmJiAhZS50YXJnZXQuY2xvc2VzdCgnLndmLWNhbGVuZGFyLXBvcHVwLXdyYXBwZXInKSl7CgogCSAJIAkgCWNhbGVuZGFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgogCSAJIAl9CiAJIAl9CiAJfSk7CiAJZnVuY3Rpb24gY3JlYXRlU2luZ2xlU2VsZWN0RHJwKGVsZUlELCBvcHRpb25zRGF0YSkgewogCSAJdmFyIGVsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZUlEKSwKIAkgCSBfZGQgPSBlbGVEaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZHJvcGRvd24nKVswXSwKIAkgCSBfZGRNID0gZWxlRGl2LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JyksCiAJIAkgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpLAogCSAJIGRycEl0ZW1zV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogCSAJX2RkTS5pbm5lckhUTUwgPSAnJzsKIAkgCWlucHV0LnR5cGUgPSAndGV4dCc7CiAJIAlpbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgJ1NlYXJjaCcpOwogCSAJaW5wdXQuY2xhc3NMaXN0LmFkZCgnZHJvcGRvd24tc2VhcmNoLWlucHV0Jyk7CiAJIAlkcnBJdGVtc1dyYXBwZXIuY2xhc3NOYW1lID0gJ2Ryb3Bkb3duLWl0ZW1zLXdyYXBwZXInOwogCSAJX2RkTS5hcHBlbmRDaGlsZChpbnB1dCk7CiAJIAlfZGRNLmFwcGVuZENoaWxkKGRycEl0ZW1zV3JhcHBlcik7CiAJIAlvcHRpb25zRGF0YS5kcm9wZG93bkl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKG9wdGlvblZhbHVlKSB7CiAJIAkgCXZhciBvcHRpb25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIAkgCSAJb3B0aW9uQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ29wdGlvbicpOwogCSAJIAlvcHRpb25Db250YWluZXIuc2V0QXR0cmlidXRlKCdpc28nLCBvcHRpb25WYWx1ZS5pc28pOwogCSAJIAlvcHRpb25Db250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRHJwRm9yT2JqZWN0VHlwZShvcHRpb25zRGF0YSwgb3B0aW9uVmFsdWUsIGVsZURpdikpOwogCSAJIAlpZiAob3B0aW9uVmFsdWUuaXNEZWZhdWx0KSB7CiAJIAkgCSAJc2V0U2VsZWN0ZWRPcHRpb24ob3B0aW9uQ29udGFpbmVyLCBlbGVEaXYpOwogCSAJIAl9CiAJIAkgCWRycEl0ZW1zV3JhcHBlci5hcHBlbmRDaGlsZChvcHRpb25Db250YWluZXIpOwogCSAJfSk7CiAJIAl2YXIgb3B0aW9ucyA9IF9kZE0ucXVlcnlTZWxlY3RvckFsbCgnLm9wdGlvbicpOwogCSAJb3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcHRpb24pIHsKIAkgCSAJb3B0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAkgCXNldFNlbGVjdGVkT3B0aW9uKG9wdGlvbiwgZWxlRGl2KQogCSAJIAl9KTsKIAkgCX0pOwogCSAJaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZWxlKSB7CiAJIAkgCWhhbmRsZVNlYXJjaEZvckRyb3Bkb3duKGVsZS5zcmNFbGVtZW50LCAnLmRyb3Bkb3duLWl0ZW1zLXdyYXBwZXInKTsKIAkgCX0pOwogCX0KIAlmdW5jdGlvbiBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24sIGVsZURpdikgewogCSAJdmFyIGNvbnRlbnQgPSBlbGVEaXYucXVlcnlTZWxlY3RvckFsbCgnLmNvbnRlbnQtZGlzcGxheS1hcmVhJyksCiAJIAkgY29udGVudF9pbmRleCA9IDA7CiAJIAlpZiAoZWxlRGl2LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51JykucXVlcnlTZWxlY3RvckFsbCgnLm9wdGlvbltkYXRhLXNlbGVjdGVkPXRydWVdJykubGVuZ3RoID4gMCkgewogCSAJIAllbGVEaXYucXVlcnlTZWxlY3RvcignLmRyb3Bkb3duLW1lbnUnKS5xdWVyeVNlbGVjdG9yQWxsKCcub3B0aW9uW2RhdGEtc2VsZWN0ZWQ9dHJ1ZV0nKVswXS5kYXRhc2V0LnNlbGVjdGVkID0gZmFsc2U7CiAJIAl9CiAJIAlBcnJheS5mcm9tKG9wdGlvbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpKS5maWx0ZXIoZWwgPT4gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNob3ctaW4tc2VsZWN0aW9uJykgPT09ICd0cnVlJykubWFwKHggPT4gewogCSAJIAljb250ZW50W2NvbnRlbnRfaW5kZXhdLmlubmVySFRNTCA9IHguaW5uZXJIVE1MOwogCSAJIAljb250ZW50X2luZGV4Kys7CiAJIAl9KTsKIAkgCW9wdGlvbi5kYXRhc2V0LnNlbGVjdGVkID0gdHJ1ZTsKIAkgCXdpbmRvd1tlbGVEaXYuaWQrJ0NvZGUnXSA9IG9wdGlvbi5nZXRBdHRyaWJ1dGUoJ2lzbycpOwogCX0KIAlmdW5jdGlvbiBjcmVhdGVEcnBGb3JPYmplY3RUeXBlKGNvbmZpZywgaXRlbSwgZWxlRGl2KSB7CiAJIAl2YXIgaW5kZXggPSAxLAogCSAJIG9wdGlvblRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKIAkgCW9wdGlvblRhZy5jbGFzc0xpc3QuYWRkKCdpY29uLXRleHQtZHJvcGRvd24nKTsKIAkgCXdoaWxlIChjb25maWdbYGRpc3BsYXlMYWJlbCR7aW5kZXh9YF0pIHsKIAkgCSAJdmFyIGVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKIAkgCSAJZWxlLmlubmVySFRNTCA9IGl0ZW1bY29uZmlnW2BkaXNwbGF5TGFiZWwke2luZGV4fWBdXTsKIAkgCSAJZWxlLmRhdGFzZXQuc2hvd0luU2VsZWN0aW9uID0gY29uZmlnLnNob3dJblNlbGVjdGlvbi5pbmNsdWRlcyhgZGlzcGxheUxhYmVsJHtpbmRleH1gKTsKIAkgCSAJZWxlLnN0eWxlLm1hcmdpblJpZ2h0ID0gJzEwcHgnOwogCSAJIAlvcHRpb25UYWcuYXBwZW5kQ2hpbGQoZWxlKTsKIAkgCSAJb3B0aW9uVGFnLmRhdGFzZXQudmFsdWUgPSBpdGVtW2NvbmZpZy5zZWFyY2hWYWx1ZV07CiAJIAkgCWluZGV4Kys7CiAJIAl9CiAJIAlyZXR1cm4gb3B0aW9uVGFnOwogCX0KIAlmdW5jdGlvbiB2YWxpZGF0ZVBob25lNzM2NTI1MzAwMDAwMDY0MTE0NigpIHsKIAkgCXZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbJ0JpZ2luV2ViVG9SZWNvcmRGb3JtNzM2NTI1MzAwMDAwMDY0MTE0NiddLAogCSAJIGlzUmV0dXJuID0gdHJ1ZTsKIAkgCWZvcm0ucXVlcnlTZWxlY3RvckFsbCgnW2Z0eXBlPWRpYWxjb2RlXScpLmZvckVhY2goZnVuY3Rpb24ocGhvbmVFbGUpewogCSAJIAl2YXIgZGlhbENvZGUgPSBjb3VudHJpZXMuZmluZCgoe2lzb30pID0+IGlzbyA9PT0gd2luZG93WydwaCcrcGhvbmVFbGUubmFtZS5yZXBsYWNlQWxsKCcuJywgJ19fXycpLnJlcGxhY2VBbGwoJyAnLCAnX19fJykrJ0NvZGUnXSkuZGlhbCwKIAkgCSAJIGlzRXJyb3IgPSBmYWxzZSwKIAkgCSAJIHBoTXNnID0gJ0VudGVyIHZhbGlkIG51bWJlcnMnLAogCSAJIAkgcGhWYWwgPSBwaG9uZUVsZS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLnZhbHVlOwogCSAJIAlpZihwaFZhbCAhPT0gJycpIHsKIAkgCSAJaWYocGhvbmVFbGUuaGFzQXR0cmlidXRlKCdyZXN0X2FscGhhJykgJiYgcGhWYWwubWF0Y2goL15bMC05XSskLykgPT09IG51bGwpIHsKIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJIAlwaE1zZyA9ICdFbnRlciBvbmx5IG51bWJlcnMnOwogCSAJIAl9IGVsc2UgaWYocGhWYWwubWF0Y2goL15bMC05YS16QS1aKy4oKVwtO1xzXSskLykgPT09IG51bGwpIHsKIAkgCSAJIAlpc0Vycm9yID0gdHJ1ZTsKIAkgCSAJfQogCSAJIAlpZihpc0Vycm9yKSB7CiAJIAkgCSAJc2V0RXJyb3IocGhvbmVFbGUucHJldmlvdXNFbGVtZW50U2libGluZywgcGhNc2cpOwogCSAJIAkgCWlzUmV0dXJuID0gZmFsc2U7CiAJIAkgCX0gZWxzZSB7CiAJIAkgCSAJcGhvbmVFbGUudmFsdWUgPSBkaWFsQ29kZSArIHBob25lRWxlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcudmFsdWU7CiAJIAkgCX0KIAkgCSAJfQogCSAJfSk7CiAJIAlyZXR1cm4gaXNSZXR1cm47CiAJfQoKCQlmdW5jdGlvbiBjaGVja01hbmRhdG9yeTczNjUyNTMwMDAwMDA2NDExNDYoKSB7CgkJdmFyIGlzUmV0dXJuID0gdHJ1ZTsKCQl2YXIgaXNOb3RDYXB0Y2hhID0gZmFsc2U7CgkJZm9yKGk9MDtpPG1uZEZpZWxkczczNjUyNTMwMDAwMDA2NDExNDYubGVuZ3RoO2krKykgewoJCSAgdmFyIGZpZWxkT2JqPWRvY3VtZW50LmZvcm1zWydCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnXVttbmRGaWVsZHM3MzY1MjUzMDAwMDAwNjQxMTQ2W2ldXTsKCQkgIGlmKGZpZWxkT2JqKSB7CgkJCWlmICgoKGZpZWxkT2JqLnZhbHVlKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpKS5sZW5ndGg9PTApIHsKCQkJCWlmKGZpZWxkT2JqLnR5cGUgPT0nZmlsZScpewoJCQkJCXNldEVycm9yKGZpZWxkT2JqLCAnUGxlYXNlIHNlbGVjdCBhIGZpbGUgdG8gdXBsb2FkLicpOyAKCQkJCQlpc1JldHVybiA9IGZhbHNlOwoJCQkJfQoJCQkJZWxzZSBpZihmaWVsZE9iai5nZXRBdHRyaWJ1dGUoJ2Z0eXBlJykgPT09ICdkaWFsY29kZScpewoJCQkJaWYoZmllbGRPYmoucHJldmlvdXNFbGVtZW50U2libGluZyAmJiBmaWVsZE9iai5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLnZhbHVlID09PSAnJykgewoJCQkJCXNldEVycm9yKGZpZWxkT2JqLnByZXZpb3VzRWxlbWVudFNpYmxpbmcsIGZsZExhbmdWYWw3MzY1MjUzMDAwMDAwNjQxMTQ2W2ldICsgJyBjYW5ub3QgYmUgZW1wdHknKTsKCQkJCQlpc1JldHVybiA9IGZhbHNlOwoJCQkJfQoJCQkJfQoJCQkJZWxzZSBpZihmaWVsZE9iai5nZXRBdHRyaWJ1dGUoJ2Z2YWxpZGF0ZScpID09PSAnZGF0ZScpewoJCQkJCWNvbnN0IGRhdGVJbnB1dHMgPSBbLi4uZmllbGRPYmoubmV4dEVsZW1lbnRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0JyldOwoJCQkJCWNvbnN0IGVtcHR5Q291bnQgPSBkYXRlSW5wdXRzLnJlZHVjZSgoY291bnQsIGlucHV0KSA9PiBjb3VudCArIChpbnB1dC52YWx1ZS50cmltKCkubGVuZ3RoID09PSAwID8gMSA6IDApLCAwKTsKCQkJCQlpZiAoZW1wdHlDb3VudCA+IDApIHsKCQkJCQkJc2V0RXJyb3IoZmllbGRPYmosIGVtcHR5Q291bnQgPT09IGRhdGVJbnB1dHMubGVuZ3RoID8gYCR7ZmxkTGFuZ1ZhbDczNjUyNTMwMDAwMDA2NDExNDZbaV19IGNhbm5vdCBiZSBlbXB0eWAgOiBgRW50ZXIgdmFsaWQgJHtmbGRMYW5nVmFsNzM2NTI1MzAwMDAwMDY0MTE0NltpXX1gKTsKCQkJCQkJaXNSZXR1cm4gPSBmYWxzZTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlzZXRFcnJvcihmaWVsZE9iaiwgZmxkTGFuZ1ZhbDczNjUyNTMwMDAwMDA2NDExNDZbaV0gKyAnIGNhbm5vdCBiZSBlbXB0eScpOwoJCQkJaXNSZXR1cm49IGZhbHNlOwoJCQkJfQoJCQl9ICBlbHNlIGlmKGZpZWxkT2JqLm5vZGVOYW1lPT0nU0VMRUNUJykgewoJCQkJaWYoZmllbGRPYmoub3B0aW9uc1tmaWVsZE9iai5zZWxlY3RlZEluZGV4XS52YWx1ZT09Jy1Ob25lLScpIHsKCQkJCXNldEVycm9yKGZpZWxkT2JqLCBmbGRMYW5nVmFsNzM2NTI1MzAwMDAwMDY0MTE0NltpXSArJyBjYW5ub3QgYmUgbm9uZS4nKTsKCQkJCWlzUmV0dXJuID0gZmFsc2U7CgkJCSAgIH0KCQkJfSBlbHNlIGlmKGZpZWxkT2JqLnR5cGUgPT0nY2hlY2tib3gnKXsKIAkgCSAJIGlmKGZpZWxkT2JqLmNoZWNrZWQgPT0gZmFsc2UpewoJCQkJc2V0RXJyb3IoZmllbGRPYmosICdQbGVhc2UgYWNjZXB0ICAnK2ZsZExhbmdWYWw3MzY1MjUzMDAwMDAwNjQxMTQ2W2ldKTsKCQkJCWlzUmV0dXJuPSBmYWxzZTsKCQkJCX0gCgkJCSB9CgkJICAgIH0KCQl9CgkJIGlzTm90Q2FwdGNoYSA9IHRydWU7CgkJaWYoIXZhbGlkYXRlRmllbGRzNzM2NTI1MzAwMDAwMDY0MTE0NigpKXtpc1JldHVybiA9IGZhbHNlO30KCQlpZighdmFsaWRhdGVQaG9uZTczNjUyNTMwMDAwMDA2NDExNDYoKSl7aXNSZXR1cm4gPSBmYWxzZTt9CgkJaWYoIXZhbGlkYXRlRGF0ZTczNjUyNTMwMDAwMDA2NDExNDYoKSl7aXNSZXR1cm4gPSBmYWxzZTt9CgkJaWYoIWlzUmV0dXJuKXsKCQkJdmFyIGVyckVsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWZpZWxkLWVycm9yJyk7CgkJCWlmKGVyckVsZSAmJiBlcnJFbGUubGVuZ3RoID4wKXsKCQkJCXZhciBpbnB1dEVsZSA9IGVyckVsZVswXS5jbG9zZXN0KCcud2YtZmllbGQnKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsKCQkJCWlmKGlucHV0RWxlICYmIGlucHV0RWxlLmxlbmd0aCA9PSAwKSB7CgkJCQkJaW5wdXRFbGUgPSBlcnJFbGVbMF0uY2xvc2VzdCgnLndmLWZpZWxkJykuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpOwoJCQkJfQoJCQkJaWYoaW5wdXRFbGUgJiYgaW5wdXRFbGUubGVuZ3RoID4gMCkgewoJCQkJCWlucHV0RWxlWzBdLmZvY3VzKCk7CgkJCQl9CgkJCX0KCQl9ZWxzZSBpZihpc05vdENhcHRjaGEpewoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybXN1Ym1pdCcpLmRpc2FibGVkID0gdHJ1ZTsKCQl9CgkJcmV0dXJuIGlzUmV0dXJuOyAKCQl9CgoJICAgCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpZGRlbjczNjUyNTMwMDAwMDA2NDExNDZGcmFtZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CgkJCXRyeSB7CgkJCQl2YXIgZG9jID0gYXJndW1lbnRzWzBdLmN1cnJlbnRUYXJnZXQuY29udGVudFdpbmRvdy5kb2N1bWVudDsKCQkJCWlmKGRvYy5ib2R5LmNoaWxkRWxlbWVudENvdW50ICE9PSAwKSB7CgkJCQkJYXJndW1lbnRzWzBdLmN1cnJlbnRUYXJnZXQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CgkJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0JpZ2luV2ViVG9SZWNvcmRGb3JtUGFyZW50NzM2NTI1MzAwMDAwMDY0MTE0NicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgkJCQl9CgkJCX0gY2F0Y2ggKGVycm9yKSB7CgkJCQlhcmd1bWVudHNbMF0uY3VycmVudFRhcmdldC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCQkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdCaWdpbldlYlRvUmVjb3JkRm9ybVBhcmVudDczNjUyNTMwMDAwMDA2NDExNDYnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnCgkJCX0KCQl9KTsKIAkgdmFyIG11bHRpUGlja0ZpZWxkcz1bJ0NPTlRBQ1RDRjEyJ107IAogCSB2YXIgY291bnRyaWVzID0gW3snaXNvJzonYWYnLCdmbCc6JyYjMTI3NDYyJiMxMjc0Njc7JywnZHMnOidBZmdoYW5pc3RhbicsJ2RpYWwnOicrOTMnfSx7J2lzbyc6J2FsJywnZmwnOicmIzEyNzQ2MiYjMTI3NDczOycsJ2RzJzonQWxiYW5pYScsJ2RpYWwnOicrMzU1J30seydpc28nOidkeicsJ2ZsJzonJiMxMjc0NjUmIzEyNzQ4NzsnLCdkcyc6J0FsZ2VyaWEnLCdkaWFsJzonKzIxMyd9LHsnaXNvJzonYXMnLCdmbCc6JyYjMTI3NDYyJiMxMjc0ODA7JywnZHMnOidBbWVyaWNhbiBTYW1vYScsJ2RpYWwnOicrMTY4NCd9LHsnaXNvJzonYWQnLCdmbCc6JyYjMTI3NDYyJiMxMjc0NjU7JywnZHMnOidBbmRvcnJhJywnZGlhbCc6JyszNzYnfSx7J2lzbyc6J2FvJywnZmwnOicmIzEyNzQ2MiYjMTI3NDc2OycsJ2RzJzonQW5nb2xhJywnZGlhbCc6JysyNDQnfSx7J2lzbyc6J2FpJywnZmwnOicmIzEyNzQ2MiYjMTI3NDcwOycsJ2RzJzonQW5ndWlsbGEnLCdkaWFsJzonKzEyNjQnfSx7J2lzbyc6J2FxJywnZmwnOicmIzEyNzQ2MiYjMTI3NDc4OycsJ2RzJzonQW50YXJjdGljYScsJ2RpYWwnOicrNjcyJ30seydpc28nOidhZycsJ2ZsJzonJiMxMjc0NjImIzEyNzQ2ODsnLCdkcyc6J0FudGlndWEgJiBCYXJidWRhJywnZGlhbCc6JysxMjY4J30seydpc28nOidhcicsJ2ZsJzonJiMxMjc0NjImIzEyNzQ3OTsnLCdkcyc6J0FyZ2VudGluYScsJ2RpYWwnOicrNTQnfSx7J2lzbyc6J2FtJywnZmwnOicmIzEyNzQ2MiYjMTI3NDc0OycsJ2RzJzonQXJtZW5pYScsJ2RpYWwnOicrMzc0J30seydpc28nOidhdycsJ2ZsJzonJiMxMjc0NjImIzEyNzQ4NDsnLCdkcyc6J0FydWJhJywnZGlhbCc6JysyOTcnfSx7J2lzbyc6J2F1JywnZmwnOicmIzEyNzQ2MiYjMTI3NDgyOycsJ2RzJzonQXVzdHJhbGlhJywnZGlhbCc6Jys2MSd9LHsnaXNvJzonYXQnLCdmbCc6JyYjMTI3NDYyJiMxMjc0ODE7JywnZHMnOidBdXN0cmlhJywnZGlhbCc6Jys0Myd9LHsnaXNvJzonYXonLCdmbCc6JyYjMTI3NDYyJiMxMjc0ODc7JywnZHMnOidBemVyYmFpamFuJywnZGlhbCc6Jys5OTQnfSx7J2lzbyc6J2JzJywnZmwnOicmIzEyNzQ2MyYjMTI3NDgwOycsJ2RzJzonQmFoYW1hcycsJ2RpYWwnOicrMTI0Mid9LHsnaXNvJzonYmgnLCdmbCc6JyYjMTI3NDYzJiMxMjc0Njk7JywnZHMnOidCYWhyYWluJywnZGlhbCc6Jys5NzMnfSx7J2lzbyc6J2JkJywnZmwnOicmIzEyNzQ2MyYjMTI3NDY1OycsJ2RzJzonQmFuZ2xhZGVzaCcsJ2RpYWwnOicrODgwJ30seydpc28nOidiYicsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ2MzsnLCdkcyc6J0JhcmJhZG9zJywnZGlhbCc6JysxMjQ2J30seydpc28nOidieScsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ4NjsnLCdkcyc6J0JlbGFydXMnLCdkaWFsJzonKzM3NSd9LHsnaXNvJzonYmUnLCdmbCc6JyYjMTI3NDYzJiMxMjc0NjY7JywnZHMnOidCZWxnaXVtJywnZGlhbCc6JyszMid9LHsnaXNvJzonYnonLCdmbCc6JyYjMTI3NDYzJiMxMjc0ODc7JywnZHMnOidCZWxpemUnLCdkaWFsJzonKzUwMSd9LHsnaXNvJzonYmonLCdmbCc6JyYjMTI3NDYzJiMxMjc0NzE7JywnZHMnOidCZW5pbicsJ2RpYWwnOicrMjI5J30seydpc28nOidibScsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ3NDsnLCdkcyc6J0Jlcm11ZGEnLCdkaWFsJzonKzE0NDEnfSx7J2lzbyc6J2J0JywnZmwnOicmIzEyNzQ2MyYjMTI3NDgxOycsJ2RzJzonQmh1dGFuJywnZGlhbCc6Jys5NzUnfSx7J2lzbyc6J2JvJywnZmwnOicmIzEyNzQ2MyYjMTI3NDc2OycsJ2RzJzonQm9saXZpYScsJ2RpYWwnOicrNTkxJ30seydpc28nOidiYScsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ2MjsnLCdkcyc6J0Jvc25pYSBhbmQgSGVyemVnb3ZpbmEnLCdkaWFsJzonKzM4Nyd9LHsnaXNvJzonYncnLCdmbCc6JyYjMTI3NDYzJiMxMjc0ODQ7JywnZHMnOidCb3Rzd2FuYScsJ2RpYWwnOicrMjY3J30seydpc28nOididicsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ4MzsnLCdkcyc6J0JvdXZldCBJc2xhbmQnLCdkaWFsJzonKzQ3J30seydpc28nOidicicsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ3OTsnLCdkcyc6J0JyYXppbCcsJ2RpYWwnOicrNTUnfSx7J2lzbyc6J2lvJywnZmwnOicmIzEyNzQ3MCYjMTI3NDc2OycsJ2RzJzonQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5JywnZGlhbCc6JysyNDYnfSx7J2lzbyc6J3ZnJywnZmwnOicmIzEyNzQ4MyYjMTI3NDY4OycsJ2RzJzonQnJpdGlzaCBWaXJnaW4gSXNsYW5kcycsJ2RpYWwnOicrMTI4NCd9LHsnaXNvJzonYm4nLCdmbCc6JyYjMTI3NDYzJiMxMjc0NzU7JywnZHMnOidCcnVuZWknLCdkaWFsJzonKzY3Myd9LHsnaXNvJzonYmcnLCdmbCc6JyYjMTI3NDYzJiMxMjc0Njg7JywnZHMnOidCdWxnYXJpYScsJ2RpYWwnOicrMzU5J30seydpc28nOidiZicsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ2NzsnLCdkcyc6J0J1cmtpbmEgRmFzbycsJ2RpYWwnOicrMjI2J30seydpc28nOidiaScsJ2ZsJzonJiMxMjc0NjMmIzEyNzQ3MDsnLCdkcyc6J0J1cnVuZGknLCdkaWFsJzonKzI1Nyd9LHsnaXNvJzona2gnLCdmbCc6JyYjMTI3NDcyJiMxMjc0Njk7JywnZHMnOidDYW1ib2RpYScsJ2RpYWwnOicrODU1J30seydpc28nOidjbScsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ3NDsnLCdkcyc6J0NhbWVyb29uJywnZGlhbCc6JysyMzcnfSx7J2lzbyc6J2NhJywnZmwnOicmIzEyNzQ2NCYjMTI3NDYyOycsJ2RzJzonQ2FuYWRhJywnZGlhbCc6JysxJ30seydpc28nOicnLCdmbCc6JyYjMTI3NDY0JiMxMjc0ODM7JywnZHMnOidDYXBlIFZlcmRlJywnZGlhbCc6JysyMzgnfSx7J2lzbyc6J2N2JywnZmwnOicmIzEyNzQ2MyYjMTI3NDc4OycsJ2RzJzonQ2FyaWJiZWFuIE5ldGhlcmxhbmRzJywnZGlhbCc6Jys1OTknfSx7J2lzbyc6J2t5JywnZmwnOicmIzEyNzQ3MiYjMTI3NDg2OycsJ2RzJzonQ2F5bWFuIElzbGFuZHMnLCdkaWFsJzonKzEzNDUnfSx7J2lzbyc6J2NmJywnZmwnOicmIzEyNzQ2NCYjMTI3NDY3OycsJ2RzJzonQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJywnZGlhbCc6JysyMzYnfSx7J2lzbyc6J3RkJywnZmwnOicmIzEyNzQ4MSYjMTI3NDY1OycsJ2RzJzonQ2hhZCcsJ2RpYWwnOicrMjM1J30seydpc28nOidjbCcsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ3MzsnLCdkcyc6J0NoaWxlJywnZGlhbCc6Jys1Nid9LHsnaXNvJzonY24nLCdmbCc6JyYjMTI3NDY0JiMxMjc0NzU7JywnZHMnOidDaGluYScsJ2RpYWwnOicrODYnfSx7J2lzbyc6J2N4JywnZmwnOicmIzEyNzQ2NCYjMTI3NDg1OycsJ2RzJzonQ2hyaXN0bWFzIElzbGFuZCcsJ2RpYWwnOicrNjEnfSx7J2lzbyc6J2NjJywnZmwnOicmIzEyNzQ2NCYjMTI3NDY0OycsJ2RzJzonQ29jb3MgKEtlZWxpbmcpIElzbGFuZCcsJ2RpYWwnOicrNjEnfSx7J2lzbyc6J2NvJywnZmwnOicmIzEyNzQ2NCYjMTI3NDc2OycsJ2RzJzonQ29sb21iaWEnLCdkaWFsJzonKzU3J30seydpc28nOidrbScsJ2ZsJzonJiMxMjc0NzImIzEyNzQ3NDsnLCdkcyc6J0NvbW9yb3MnLCdkaWFsJzonKzI2OSd9LHsnaXNvJzonY2cnLCdmbCc6JyYjMTI3NDY0JiMxMjc0Njg7JywnZHMnOidDb25nbyAtIEJyYXp6YXZpbGxlJywnZGlhbCc6JysyNDInfSx7J2lzbyc6J2NkJywnZmwnOicmIzEyNzQ2NCYjMTI3NDY1OycsJ2RzJzonQ29uZ28gLSBLaW5zaGFzYScsJ2RpYWwnOicrMjQzJ30seydpc28nOidjaycsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ3MjsnLCdkcyc6J0Nvb2sgSXNsYW5kcycsJ2RpYWwnOicrNjgyJ30seydpc28nOidjcicsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ3OTsnLCdkcyc6J0Nvc3RhIFJpY2EnLCdkaWFsJzonKzUwNid9LHsnaXNvJzonaHInLCdmbCc6JyYjMTI3NDY5JiMxMjc0Nzk7JywnZHMnOidDcm9hdGlhJywnZGlhbCc6JyszODUnfSx7J2lzbyc6J2N1JywnZmwnOicmIzEyNzQ2NCYjMTI3NDgyOycsJ2RzJzonQ3ViYScsJ2RpYWwnOicrNTMnfSx7J2lzbyc6J2N3JywnZmwnOicmIzEyNzQ2NCYjMTI3NDg0OycsJ2RzJzonQ3VyYcOnYW8nLCdkaWFsJzonKzU5OSd9LHsnaXNvJzonY3knLCdmbCc6JyYjMTI3NDY0JiMxMjc0ODY7JywnZHMnOidDeXBydXMnLCdkaWFsJzonKzM1Nyd9LHsnaXNvJzonY3onLCdmbCc6JyYjMTI3NDY0JiMxMjc0ODc7JywnZHMnOidDemVjaGlhJywnZGlhbCc6Jys0MjAnfSx7J2lzbyc6J2NpJywnZmwnOicmIzEyNzQ2NCYjMTI3NDcwOycsJ2RzJzonQ8O0dGUgZD9Jdm9pcmUnLCdkaWFsJzonKzIyNSd9LHsnaXNvJzonZGsnLCdmbCc6JyYjMTI3NDY1JiMxMjc0NzI7JywnZHMnOidEZW5tYXJrJywnZGlhbCc6Jys0NSd9LHsnaXNvJzonZGonLCdmbCc6JyYjMTI3NDY1JiMxMjc0NzE7JywnZHMnOidEamlib3V0aScsJ2RpYWwnOicrMjUzJ30seydpc28nOidkbScsJ2ZsJzonJiMxMjc0NjUmIzEyNzQ3NDsnLCdkcyc6J0RvbWluaWNhJywnZGlhbCc6JysxNzY3J30seydpc28nOidkbycsJ2ZsJzonJiMxMjc0NjUmIzEyNzQ3NjsnLCdkcyc6J0RvbWluaWNhbiBSZXB1YmxpYycsJ2RpYWwnOicrMSd9LHsnaXNvJzonZWMnLCdmbCc6JyYjMTI3NDY2JiMxMjc0NjQ7JywnZHMnOidFY3VhZG9yJywnZGlhbCc6Jys1OTMnfSx7J2lzbyc6J2VnJywnZmwnOicmIzEyNzQ2NiYjMTI3NDY4OycsJ2RzJzonRWd5cHQnLCdkaWFsJzonKzIwJ30seydpc28nOidzdicsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ4MzsnLCdkcyc6J0VsIFNhbHZhZG9yJywnZGlhbCc6Jys1MDMnfSx7J2lzbyc6J2dxJywnZmwnOicmIzEyNzQ2OCYjMTI3NDc4OycsJ2RzJzonRXF1YXRvcmlhbCBHdWluZWEnLCdkaWFsJzonKzI0MCd9LHsnaXNvJzonZXInLCdmbCc6JyYjMTI3NDY2JiMxMjc0Nzk7JywnZHMnOidFcml0cmVhJywnZGlhbCc6JysyOTEnfSx7J2lzbyc6J2VlJywnZmwnOicmIzEyNzQ2NiYjMTI3NDY2OycsJ2RzJzonRXN0b25pYScsJ2RpYWwnOicrMzcyJ30seydpc28nOidldCcsJ2ZsJzonJiMxMjc0NjYmIzEyNzQ4MTsnLCdkcyc6J0V0aGlvcGlhJywnZGlhbCc6JysyNTEnfSx7J2lzbyc6J2ZrJywnZmwnOicmIzEyNzQ2NyYjMTI3NDcyOycsJ2RzJzonRmFsa2xhbmQgSXNsYW5kcycsJ2RpYWwnOicrNTAwJ30seydpc28nOidmbycsJ2ZsJzonJiMxMjc0NjcmIzEyNzQ3NjsnLCdkcyc6J0Zhcm9lIElzbGFuZHMnLCdkaWFsJzonKzI5OCd9LHsnaXNvJzonZmonLCdmbCc6JyYjMTI3NDY3JiMxMjc0NzE7JywnZHMnOidGaWppJywnZGlhbCc6Jys2NzknfSx7J2lzbyc6J2ZpJywnZmwnOicmIzEyNzQ2NyYjMTI3NDcwOycsJ2RzJzonRmlubGFuZCcsJ2RpYWwnOicrMzU4J30seydpc28nOidmcicsJ2ZsJzonJiMxMjc0NjcmIzEyNzQ3OTsnLCdkcyc6J0ZyYW5jZScsJ2RpYWwnOicrMzMnfSx7J2lzbyc6J2dmJywnZmwnOicmIzEyNzQ2OCYjMTI3NDY3OycsJ2RzJzonRnJlbmNoIEd1aWFuYScsJ2RpYWwnOicrNTk0J30seydpc28nOidwZicsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ2NzsnLCdkcyc6J0ZyZW5jaCBQb2x5bmVzaWEnLCdkaWFsJzonKzY4OSd9LHsnaXNvJzondGYnLCdmbCc6JyYjMTI3NDgxJiMxMjc0Njc7JywnZHMnOidGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMnLCdkaWFsJzonKzI2Mid9LHsnaXNvJzonZ2EnLCdmbCc6JyYjMTI3NDY4JiMxMjc0NjI7JywnZHMnOidHYWJvbicsJ2RpYWwnOicrMjQxJ30seydpc28nOidnbScsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ3NDsnLCdkcyc6J0dhbWJpYScsJ2RpYWwnOicrMjIwJ30seydpc28nOidnZScsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ2NjsnLCdkcyc6J0dlb3JnaWEnLCdkaWFsJzonKzk5NSd9LHsnaXNvJzonZGUnLCdmbCc6JyYjMTI3NDY1JiMxMjc0NjY7JywnZHMnOidHZXJtYW55JywnZGlhbCc6Jys0OSd9LHsnaXNvJzonZ2gnLCdmbCc6JyYjMTI3NDY4JiMxMjc0Njk7JywnZHMnOidHaGFuYScsJ2RpYWwnOicrMjMzJ30seydpc28nOidnaScsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ3MDsnLCdkcyc6J0dpYnJhbHRhcicsJ2RpYWwnOicrMzUwJ30seydpc28nOidncicsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ3OTsnLCdkcyc6J0dyZWVjZScsJ2RpYWwnOicrMzAnfSx7J2lzbyc6J2dsJywnZmwnOicmIzEyNzQ2OCYjMTI3NDczOycsJ2RzJzonR3JlZW5sYW5kJywnZGlhbCc6JysyOTknfSx7J2lzbyc6J2dkJywnZmwnOicmIzEyNzQ2OCYjMTI3NDY1OycsJ2RzJzonR3JlbmFkYScsJ2RpYWwnOicrMTQ3Myd9LHsnaXNvJzonZ3AnLCdmbCc6JyYjMTI3NDY4JiMxMjc0Nzc7JywnZHMnOidHdWFkZWxvdXBlJywnZGlhbCc6Jys1OTAnfSx7J2lzbyc6J2d1JywnZmwnOicmIzEyNzQ2OCYjMTI3NDgyOycsJ2RzJzonR3VhbScsJ2RpYWwnOicrMTY3MSd9LHsnaXNvJzonZ3QnLCdmbCc6JyYjMTI3NDY4JiMxMjc0ODE7JywnZHMnOidHdWF0ZW1hbGEnLCdkaWFsJzonKzUwMid9LHsnaXNvJzonZ2cnLCdmbCc6JyYjMTI3NDY4JiMxMjc0Njg7JywnZHMnOidHdWVybnNleScsJ2RpYWwnOicrNDQnfSx7J2lzbyc6J2duJywnZmwnOicmIzEyNzQ2OCYjMTI3NDc1OycsJ2RzJzonR3VpbmVhJywnZGlhbCc6JysyMjQnfSx7J2lzbyc6J2d3JywnZmwnOicmIzEyNzQ2OCYjMTI3NDg0OycsJ2RzJzonR3VpbmVhLUJpc3NhdScsJ2RpYWwnOicrMjQ1J30seydpc28nOidneScsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ4NjsnLCdkcyc6J0d1eWFuYScsJ2RpYWwnOicrNTkyJ30seydpc28nOidodCcsJ2ZsJzonJiMxMjc0NjkmIzEyNzQ4MTsnLCdkcyc6J0hhaXRpJywnZGlhbCc6Jys1MDknfSx7J2lzbyc6J2htJywnZmwnOicmIzEyNzQ2OSYjMTI3NDc0OycsJ2RzJzonSGVhcmQgJiBNY0RvbmFsZCBJc2xhbmRzJywnZGlhbCc6Jys2NzInfSx7J2lzbyc6J2huJywnZmwnOicmIzEyNzQ2OSYjMTI3NDc1OycsJ2RzJzonSG9uZHVyYXMnLCdkaWFsJzonKzUwNCd9LHsnaXNvJzonaGsnLCdmbCc6JyYjMTI3NDY5JiMxMjc0NzI7JywnZHMnOidIb25nIEtvbmcnLCdkaWFsJzonKzg1Mid9LHsnaXNvJzonaHUnLCdmbCc6JyYjMTI3NDY5JiMxMjc0ODI7JywnZHMnOidIdW5nYXJ5JywnZGlhbCc6JyszNid9LHsnaXNvJzonaXMnLCdmbCc6JyYjMTI3NDcwJiMxMjc0ODA7JywnZHMnOidJY2VsYW5kJywnZGlhbCc6JyszNTQnfSx7J2lzbyc6J2luJywnZmwnOicmIzEyNzQ3MCYjMTI3NDc1OycsJ2RzJzonSW5kaWEnLCdkaWFsJzonKzkxJ30seydpc28nOidpZCcsJ2ZsJzonJiMxMjc0NzAmIzEyNzQ2NTsnLCdkcyc6J0luZG9uZXNpYScsJ2RpYWwnOicrNjInfSx7J2lzbyc6J2lyJywnZmwnOicmIzEyNzQ3MCYjMTI3NDc5OycsJ2RzJzonSXJhbicsJ2RpYWwnOicrOTgnfSx7J2lzbyc6J2lxJywnZmwnOicmIzEyNzQ3MCYjMTI3NDc4OycsJ2RzJzonSXJhcScsJ2RpYWwnOicrOTY0J30seydpc28nOidpZScsJ2ZsJzonJiMxMjc0NzAmIzEyNzQ2NjsnLCdkcyc6J0lyZWxhbmQnLCdkaWFsJzonKzM1Myd9LHsnaXNvJzonaW0nLCdmbCc6JyYjMTI3NDcwJiMxMjc0NzQ7JywnZHMnOidJc2xlIG9mIE1hbicsJ2RpYWwnOicrNDQnfSx7J2lzbyc6J2lsJywnZmwnOicmIzEyNzQ3MCYjMTI3NDczOycsJ2RzJzonSXNyYWVsJywnZGlhbCc6Jys5NzInfSx7J2lzbyc6J2l0JywnZmwnOicmIzEyNzQ3MCYjMTI3NDgxOycsJ2RzJzonSXRhbHknLCdkaWFsJzonKzM5J30seydpc28nOidqbScsJ2ZsJzonJiMxMjc0NzEmIzEyNzQ3NDsnLCdkcyc6J0phbWFpY2EnLCdkaWFsJzonKzE4NzYnfSx7J2lzbyc6J2pwJywnZmwnOicmIzEyNzQ3MSYjMTI3NDc3OycsJ2RzJzonSmFwYW4nLCdkaWFsJzonKzgxJ30seydpc28nOidqZScsJ2ZsJzonJiMxMjc0NzEmIzEyNzQ2NjsnLCdkcyc6J0plcnNleScsJ2RpYWwnOicrNDQnfSx7J2lzbyc6J2pvJywnZmwnOicmIzEyNzQ3MSYjMTI3NDc2OycsJ2RzJzonSm9yZGFuJywnZGlhbCc6Jys5NjInfSx7J2lzbyc6J2t6JywnZmwnOicmIzEyNzQ3MiYjMTI3NDg3OycsJ2RzJzonS2F6YWtoc3RhbicsJ2RpYWwnOicrNyd9LHsnaXNvJzona2UnLCdmbCc6JyYjMTI3NDcyJiMxMjc0NjY7JywnZHMnOidLZW55YScsJ2RpYWwnOicrMjU0J30seydpc28nOidraScsJ2ZsJzonJiMxMjc0NzImIzEyNzQ3MDsnLCdkcyc6J0tpcmliYXRpJywnZGlhbCc6Jys2ODYnfSx7J2lzbyc6J3hrJywnZmwnOicmIzEyNzQ4NSYjMTI3NDcyOycsJ2RzJzonS29zb3ZvJywnZGlhbCc6JyszODMnfSx7J2lzbyc6J2t3JywnZmwnOicmIzEyNzQ3MiYjMTI3NDg0OycsJ2RzJzonS3V3YWl0JywnZGlhbCc6Jys5NjUnfSx7J2lzbyc6J2tnJywnZmwnOicmIzEyNzQ3MiYjMTI3NDY4OycsJ2RzJzonS3lyZ3l6c3RhbicsJ2RpYWwnOicrOTk2J30seydpc28nOidsYScsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ2MjsnLCdkcyc6J0xhb3MnLCdkaWFsJzonKzg1Nid9LHsnaXNvJzonbHYnLCdmbCc6JyYjMTI3NDczJiMxMjc0ODM7JywnZHMnOidMYXR2aWEnLCdkaWFsJzonKzM3MSd9LHsnaXNvJzonbGInLCdmbCc6JyYjMTI3NDczJiMxMjc0NjM7JywnZHMnOidMZWJhbm9uJywnZGlhbCc6Jys5NjEnfSx7J2lzbyc6J2xzJywnZmwnOicmIzEyNzQ3MyYjMTI3NDgwOycsJ2RzJzonTGVzb3RobycsJ2RpYWwnOicrMjY2J30seydpc28nOidscicsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ3OTsnLCdkcyc6J0xpYmVyaWEnLCdkaWFsJzonKzIzMSd9LHsnaXNvJzonbHknLCdmbCc6JyYjMTI3NDczJiMxMjc0ODY7JywnZHMnOidMaWJ5YScsJ2RpYWwnOicrMjE4J30seydpc28nOidsaScsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ3MDsnLCdkcyc6J0xpZWNodGVuc3RlaW4nLCdkaWFsJzonKzQyMyd9LHsnaXNvJzonbHQnLCdmbCc6JyYjMTI3NDczJiMxMjc0ODE7JywnZHMnOidMaXRodWFuaWEnLCdkaWFsJzonKzM3MCd9LHsnaXNvJzonbHUnLCdmbCc6JyYjMTI3NDczJiMxMjc0ODI7JywnZHMnOidMdXhlbWJvdXJnJywnZGlhbCc6JyszNTInfSx7J2lzbyc6J21vJywnZmwnOicmIzEyNzQ3NCYjMTI3NDc2OycsJ2RzJzonTWFjYW8nLCdkaWFsJzonKzg1Myd9LHsnaXNvJzonbWsnLCdmbCc6JyYjMTI3NDc0JiMxMjc0NzI7JywnZHMnOidNYWNlZG9uaWEnLCdkaWFsJzonKzM4OSd9LHsnaXNvJzonbWcnLCdmbCc6JyYjMTI3NDc0JiMxMjc0Njg7JywnZHMnOidNYWRhZ2FzY2FyJywnZGlhbCc6JysyNjEnfSx7J2lzbyc6J213JywnZmwnOicmIzEyNzQ3NCYjMTI3NDg0OycsJ2RzJzonTWFsYXdpJywnZGlhbCc6JysyNjUnfSx7J2lzbyc6J215JywnZmwnOicmIzEyNzQ3NCYjMTI3NDg2OycsJ2RzJzonTWFsYXlzaWEnLCdkaWFsJzonKzYwJ30seydpc28nOidtdicsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ4MzsnLCdkcyc6J01hbGRpdmVzJywnZGlhbCc6Jys5NjAnfSx7J2lzbyc6J21sJywnZmwnOicmIzEyNzQ3NCYjMTI3NDczOycsJ2RzJzonTWFsaScsJ2RpYWwnOicrMjIzJ30seydpc28nOidtdCcsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ4MTsnLCdkcyc6J01hbHRhJywnZGlhbCc6JyszNTYnfSx7J2lzbyc6J21oJywnZmwnOicmIzEyNzQ3NCYjMTI3NDY5OycsJ2RzJzonTWFyc2hhbGwgSXNsYW5kcycsJ2RpYWwnOicrNjkyJ30seydpc28nOidtcScsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ3ODsnLCdkcyc6J01hcnRpbmlxdWUnLCdkaWFsJzonKzU5Nid9LHsnaXNvJzonbXInLCdmbCc6JyYjMTI3NDc0JiMxMjc0Nzk7JywnZHMnOidNYXVyaXRhbmlhJywnZGlhbCc6JysyMjInfSx7J2lzbyc6J211JywnZmwnOicmIzEyNzQ3NCYjMTI3NDgyOycsJ2RzJzonTWF1cml0aXVzJywnZGlhbCc6JysyMzAnfSx7J2lzbyc6J3l0JywnZmwnOicmIzEyNzQ4NiYjMTI3NDgxOycsJ2RzJzonTWF5b3R0ZScsJ2RpYWwnOicrMjYyJ30seydpc28nOidteCcsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ4NTsnLCdkcyc6J01leGljbycsJ2RpYWwnOicrNTInfSx7J2lzbyc6J2ZtJywnZmwnOicmIzEyNzQ2NyYjMTI3NDc0OycsJ2RzJzonTWljcm9uZXNpYScsJ2RpYWwnOicrNjkxJ30seydpc28nOidtZCcsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ2NTsnLCdkcyc6J01vbGRvdmEnLCdkaWFsJzonKzM3Myd9LHsnaXNvJzonbWMnLCdmbCc6JyYjMTI3NDc0JiMxMjc0NjQ7JywnZHMnOidNb25hY28nLCdkaWFsJzonKzM3Nyd9LHsnaXNvJzonbW4nLCdmbCc6JyYjMTI3NDc0JiMxMjc0NzU7JywnZHMnOidNb25nb2xpYScsJ2RpYWwnOicrOTc2J30seydpc28nOidtZScsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ2NjsnLCdkcyc6J01vbnRlbmVncm8nLCdkaWFsJzonKzM4Mid9LHsnaXNvJzonbXMnLCdmbCc6JyYjMTI3NDc0JiMxMjc0ODA7JywnZHMnOidNb250c2VycmF0JywnZGlhbCc6JysxNjY0J30seydpc28nOidtYScsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ2MjsnLCdkcyc6J01vcm9jY28nLCdkaWFsJzonKzIxMid9LHsnaXNvJzonbXonLCdmbCc6JyYjMTI3NDc0JiMxMjc0ODc7JywnZHMnOidNb3phbWJpcXVlJywnZGlhbCc6JysyNTgnfSx7J2lzbyc6J21tJywnZmwnOicmIzEyNzQ3NCYjMTI3NDc0OycsJ2RzJzonTXlhbm1hciAoQnVybWEpJywnZGlhbCc6Jys5NSd9LHsnaXNvJzonbmEnLCdmbCc6JyYjMTI3NDc1JiMxMjc0NjI7JywnZHMnOidOYW1pYmlhJywnZGlhbCc6JysyNjQnfSx7J2lzbyc6J25yJywnZmwnOicmIzEyNzQ3NSYjMTI3NDc5OycsJ2RzJzonTmF1cnUnLCdkaWFsJzonKzY3NCd9LHsnaXNvJzonbnAnLCdmbCc6JyYjMTI3NDc1JiMxMjc0Nzc7JywnZHMnOidOZXBhbCcsJ2RpYWwnOicrOTc3J30seydpc28nOidubCcsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ3MzsnLCdkcyc6J05ldGhlcmxhbmRzJywnZGlhbCc6JyszMSd9LHsnaXNvJzonbmMnLCdmbCc6JyYjMTI3NDc1JiMxMjc0NjQ7JywnZHMnOidOZXcgQ2FsZWRvbmlhJywnZGlhbCc6Jys2ODcnfSx7J2lzbyc6J256JywnZmwnOicmIzEyNzQ3NSYjMTI3NDg3OycsJ2RzJzonTmV3IFplYWxhbmQnLCdkaWFsJzonKzY0J30seydpc28nOiduaScsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ3MDsnLCdkcyc6J05pY2FyYWd1YScsJ2RpYWwnOicrNTA1J30seydpc28nOiduZScsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ2NjsnLCdkcyc6J05pZ2VyJywnZGlhbCc6JysyMjcnfSx7J2lzbyc6J25nJywnZmwnOicmIzEyNzQ3NSYjMTI3NDY4OycsJ2RzJzonTmlnZXJpYScsJ2RpYWwnOicrMjM0J30seydpc28nOidudScsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ4MjsnLCdkcyc6J05pdWUnLCdkaWFsJzonKzY4Myd9LHsnaXNvJzonbmYnLCdmbCc6JyYjMTI3NDc1JiMxMjc0Njc7JywnZHMnOidOb3Jmb2xrIElzbGFuZCcsJ2RpYWwnOicrNjcyJ30seydpc28nOidrcCcsJ2ZsJzonJiMxMjc0NzImIzEyNzQ3NzsnLCdkcyc6J05vcnRoIEtvcmVhJywnZGlhbCc6Jys4NTAnfSx7J2lzbyc6J21wJywnZmwnOicmIzEyNzQ3NCYjMTI3NDc3OycsJ2RzJzonTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzJywnZGlhbCc6JysxNjcwJ30seydpc28nOidubycsJ2ZsJzonJiMxMjc0NzUmIzEyNzQ3NjsnLCdkcyc6J05vcndheScsJ2RpYWwnOicrNDcnfSx7J2lzbyc6J29tJywnZmwnOicmIzEyNzQ3NiYjMTI3NDc0OycsJ2RzJzonT21hbicsJ2RpYWwnOicrOTY4J30seydpc28nOidwaycsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ3MjsnLCdkcyc6J1Bha2lzdGFuJywnZGlhbCc6Jys5Mid9LHsnaXNvJzoncHcnLCdmbCc6JyYjMTI3NDc3JiMxMjc0ODQ7JywnZHMnOidQYWxhdScsJ2RpYWwnOicrNjgwJ30seydpc28nOidwcycsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ4MDsnLCdkcyc6J1BhbGVzdGluaWFuIFRlcnJpdG9yaWVzJywnZGlhbCc6Jys5NzAnfSx7J2lzbyc6J3BhJywnZmwnOicmIzEyNzQ3NyYjMTI3NDYyOycsJ2RzJzonUGFuYW1hJywnZGlhbCc6Jys1MDcnfSx7J2lzbyc6J3BnJywnZmwnOicmIzEyNzQ3NyYjMTI3NDY4OycsJ2RzJzonUGFwdWEgTmV3IEd1aW5lYScsJ2RpYWwnOicrNjc1J30seydpc28nOidweScsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ4NjsnLCdkcyc6J1BhcmFndWF5JywnZGlhbCc6Jys1OTUnfSx7J2lzbyc6J3BlJywnZmwnOicmIzEyNzQ3NyYjMTI3NDY2OycsJ2RzJzonUGVydScsJ2RpYWwnOicrNTEnfSx7J2lzbyc6J3BoJywnZmwnOicmIzEyNzQ3NyYjMTI3NDY5OycsJ2RzJzonUGhpbGlwcGluZXMnLCdkaWFsJzonKzYzJ30seydpc28nOidwbicsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ3NTsnLCdkcyc6J1BpdGNhaXJuIElzbGFuZHMnLCdkaWFsJzonKzY0J30seydpc28nOidwbCcsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ3MzsnLCdkcyc6J1BvbGFuZCcsJ2RpYWwnOicrNDgnfSx7J2lzbyc6J3B0JywnZmwnOicmIzEyNzQ3NyYjMTI3NDgxOycsJ2RzJzonUG9ydHVnYWwnLCdkaWFsJzonKzM1MSd9LHsnaXNvJzoncHInLCdmbCc6JyYjMTI3NDc3JiMxMjc0Nzk7JywnZHMnOidQdWVydG8gUmljbycsJ2RpYWwnOicrMSd9LHsnaXNvJzoncWEnLCdmbCc6JyYjMTI3NDc4JiMxMjc0NjI7JywnZHMnOidRYXRhcicsJ2RpYWwnOicrOTc0J30seydpc28nOidybycsJ2ZsJzonJiMxMjc0NzkmIzEyNzQ3NjsnLCdkcyc6J1JvbWFuaWEnLCdkaWFsJzonKzQwJ30seydpc28nOidydScsJ2ZsJzonJiMxMjc0NzkmIzEyNzQ4MjsnLCdkcyc6J1J1c3NpYScsJ2RpYWwnOicrNyd9LHsnaXNvJzoncncnLCdmbCc6JyYjMTI3NDc5JiMxMjc0ODQ7JywnZHMnOidSd2FuZGEnLCdkaWFsJzonKzI1MCd9LHsnaXNvJzoncmUnLCdmbCc6JyYjMTI3NDc5JiMxMjc0NjY7JywnZHMnOidSw6l1bmlvbicsJ2RpYWwnOicrMjYyJ30seydpc28nOid3cycsJ2ZsJzonJiMxMjc0ODQmIzEyNzQ4MDsnLCdkcyc6J1NhbW9hJywnZGlhbCc6Jys2ODUnfSx7J2lzbyc6J3NtJywnZmwnOicmIzEyNzQ4MCYjMTI3NDc0OycsJ2RzJzonU2FuIE1hcmlubycsJ2RpYWwnOicrMzc4J30seydpc28nOidzYScsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ2MjsnLCdkcyc6J1NhdWRpIEFyYWJpYScsJ2RpYWwnOicrOTY2J30seydpc28nOidzbicsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ3NTsnLCdkcyc6J1NlbmVnYWwnLCdkaWFsJzonKzIyMSd9LHsnaXNvJzoncnMnLCdmbCc6JyYjMTI3NDc5JiMxMjc0ODA7JywnZHMnOidTZXJiaWEnLCdkaWFsJzonKzM4MSd9LHsnaXNvJzonc2MnLCdmbCc6JyYjMTI3NDgwJiMxMjc0NjQ7JywnZHMnOidTZXljaGVsbGVzJywnZGlhbCc6JysyNDgnfSx7J2lzbyc6J3NsJywnZmwnOicmIzEyNzQ4MCYjMTI3NDczOycsJ2RzJzonU2llcnJhIExlb25lJywnZGlhbCc6JysyMzInfSx7J2lzbyc6J3NnJywnZmwnOicmIzEyNzQ4MCYjMTI3NDY4OycsJ2RzJzonU2luZ2Fwb3JlJywnZGlhbCc6Jys2NSd9LHsnaXNvJzonc3gnLCdmbCc6JyYjMTI3NDgwJiMxMjc0ODU7JywnZHMnOidTaW50IE1hYXJ0ZW4nLCdkaWFsJzonKzE3MjEnfSx7J2lzbyc6J3NrJywnZmwnOicmIzEyNzQ4MCYjMTI3NDcyOycsJ2RzJzonU2xvdmFraWEnLCdkaWFsJzonKzQyMSd9LHsnaXNvJzonc2knLCdmbCc6JyYjMTI3NDgwJiMxMjc0NzA7JywnZHMnOidTbG92ZW5pYScsJ2RpYWwnOicrMzg2J30seydpc28nOidzYicsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ2MzsnLCdkcyc6J1NvbG9tb24gSXNsYW5kcycsJ2RpYWwnOicrNjc3J30seydpc28nOidzbycsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ3NjsnLCdkcyc6J1NvbWFsaWEnLCdkaWFsJzonKzI1Mid9LHsnaXNvJzonemEnLCdmbCc6JyYjMTI3NDg3JiMxMjc0NjI7JywnZHMnOidTb3V0aCBBZnJpY2EnLCdkaWFsJzonKzI3J30seydpc28nOidncycsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ4MDsnLCdkcyc6J1NvdXRoIEdlb3JnaWEgJiBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzJywnZGlhbCc6Jys1MDAnfSx7J2lzbyc6J2tyJywnZmwnOicmIzEyNzQ3MiYjMTI3NDc5OycsJ2RzJzonU291dGggS29yZWEnLCdkaWFsJzonKzgyJ30seydpc28nOidzcycsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ4MDsnLCdkcyc6J1NvdXRoIFN1ZGFuJywnZGlhbCc6JysyMTEnfSx7J2lzbyc6J2VzJywnZmwnOicmIzEyNzQ2NiYjMTI3NDgwOycsJ2RzJzonU3BhaW4nLCdkaWFsJzonKzM0J30seydpc28nOidsaycsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ3MjsnLCdkcyc6J1NyaSBMYW5rYScsJ2RpYWwnOicrOTQnfSx7J2lzbyc6J2JsJywnZmwnOicmIzEyNzQ2MyYjMTI3NDczOycsJ2RzJzonU3QgQmFydGjDqWxlbXknLCdkaWFsJzonKzU5MCd9LHsnaXNvJzonc2gnLCdmbCc6JyYjMTI3NDgwJiMxMjc0Njk7JywnZHMnOidTdCBIZWxlbmEnLCdkaWFsJzonKzI5MCd9LHsnaXNvJzona24nLCdmbCc6JyYjMTI3NDcyJiMxMjc0NzU7JywnZHMnOidTdCBLaXR0cyAmIE5ldmlzJywnZGlhbCc6JysxODY5J30seydpc28nOidsYycsJ2ZsJzonJiMxMjc0NzMmIzEyNzQ2NDsnLCdkcyc6J1N0IEx1Y2lhJywnZGlhbCc6JysxNzU4J30seydpc28nOidtZicsJ2ZsJzonJiMxMjc0NzQmIzEyNzQ2NzsnLCdkcyc6J1N0IE1hcnRpbicsJ2RpYWwnOicrNTkwJ30seydpc28nOidwbScsJ2ZsJzonJiMxMjc0NzcmIzEyNzQ3NDsnLCdkcyc6J1N0IFBpZXJyZSAmIE1pcXVlbG9uJywnZGlhbCc6Jys1MDgnfSx7J2lzbyc6J3ZjJywnZmwnOicmIzEyNzQ4MyYjMTI3NDY0OycsJ2RzJzonU3QgVmluY2VudCAmIEdyZW5hZGluZXMnLCdkaWFsJzonKzE3ODQnfSx7J2lzbyc6J3NkJywnZmwnOicmIzEyNzQ4MCYjMTI3NDY1OycsJ2RzJzonU3VkYW4nLCdkaWFsJzonKzI0OSd9LHsnaXNvJzonc3InLCdmbCc6JyYjMTI3NDgwJiMxMjc0Nzk7JywnZHMnOidTdXJpbmFtZScsJ2RpYWwnOicrNTk3J30seydpc28nOidzaicsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ3MTsnLCdkcyc6J1N2YWxiYXJkICYgSmFuIE1heWVuJywnZGlhbCc6Jys0Nyd9LHsnaXNvJzonc3onLCdmbCc6JyYjMTI3NDgwJiMxMjc0ODc7JywnZHMnOidTd2F6aWxhbmQnLCdkaWFsJzonKzI2OCd9LHsnaXNvJzonc2UnLCdmbCc6JyYjMTI3NDgwJiMxMjc0NjY7JywnZHMnOidTd2VkZW4nLCdkaWFsJzonKzQ2J30seydpc28nOidjaCcsJ2ZsJzonJiMxMjc0NjQmIzEyNzQ2OTsnLCdkcyc6J1N3aXR6ZXJsYW5kJywnZGlhbCc6Jys0MSd9LHsnaXNvJzonc3knLCdmbCc6JyYjMTI3NDgwJiMxMjc0ODY7JywnZHMnOidTeXJpYScsJ2RpYWwnOicrOTYzJ30seydpc28nOidzdCcsJ2ZsJzonJiMxMjc0ODAmIzEyNzQ4MTsnLCdkcyc6J1PDo28gVG9tw6kgJiBQcsOtbmNpcGUnLCdkaWFsJzonKzIzOSd9LHsnaXNvJzondHcnLCdmbCc6JyYjMTI3NDgxJiMxMjc0ODQ7JywnZHMnOidUYWl3YW4nLCdkaWFsJzonKzg4Nid9LHsnaXNvJzondGonLCdmbCc6JyYjMTI3NDgxJiMxMjc0NzE7JywnZHMnOidUYWppa2lzdGFuJywnZGlhbCc6Jys5OTInfSx7J2lzbyc6J3R6JywnZmwnOicmIzEyNzQ4MSYjMTI3NDg3OycsJ2RzJzonVGFuemFuaWEnLCdkaWFsJzonKzI1NSd9LHsnaXNvJzondGgnLCdmbCc6JyYjMTI3NDgxJiMxMjc0Njk7JywnZHMnOidUaGFpbGFuZCcsJ2RpYWwnOicrNjYnfSx7J2lzbyc6J3RsJywnZmwnOicmIzEyNzQ4MSYjMTI3NDczOycsJ2RzJzonVGltb3ItTGVzdGUnLCdkaWFsJzonKzY3MCd9LHsnaXNvJzondGcnLCdmbCc6JyYjMTI3NDgxJiMxMjc0Njg7JywnZHMnOidUb2dvJywnZGlhbCc6JysyMjgnfSx7J2lzbyc6J3RrJywnZmwnOicmIzEyNzQ4MSYjMTI3NDcyOycsJ2RzJzonVG9rZWxhdScsJ2RpYWwnOicrNjkwJ30seydpc28nOid0bycsJ2ZsJzonJiMxMjc0ODEmIzEyNzQ3NjsnLCdkcyc6J1RvbmdhJywnZGlhbCc6Jys2NzYnfSx7J2lzbyc6J3R0JywnZmwnOicmIzEyNzQ4MSYjMTI3NDgxOycsJ2RzJzonVHJpbmlkYWQgJiBUb2JhZ28nLCdkaWFsJzonKzE4NjgnfSx7J2lzbyc6J3RuJywnZmwnOicmIzEyNzQ4MSYjMTI3NDc1OycsJ2RzJzonVHVuaXNpYScsJ2RpYWwnOicrMjE2J30seydpc28nOid0cicsJ2ZsJzonJiMxMjc0ODEmIzEyNzQ3OTsnLCdkcyc6J1R1cmtleScsJ2RpYWwnOicrOTAnfSx7J2lzbyc6J3RtJywnZmwnOicmIzEyNzQ4MSYjMTI3NDc0OycsJ2RzJzonVHVya21lbmlzdGFuJywnZGlhbCc6Jys5OTMnfSx7J2lzbyc6J3RjJywnZmwnOicmIzEyNzQ4MSYjMTI3NDY0OycsJ2RzJzonVHVya3MgJiBDYWljb3MgSXNsYW5kcycsJ2RpYWwnOicrMSd9LHsnaXNvJzondHYnLCdmbCc6JyYjMTI3NDgxJiMxMjc0ODM7JywnZHMnOidUdXZhbHUnLCdkaWFsJzonKzY4OCd9LHsnaXNvJzondW0nLCdmbCc6JyYjMTI3NDgyJiMxMjc0NzQ7JywnZHMnOidVUyBPdXRseWluZyBJc2xhbmRzJywnZGlhbCc6JysxJ30seydpc28nOid2aScsJ2ZsJzonJiMxMjc0ODMmIzEyNzQ3MDsnLCdkcyc6J1VTIFZpcmdpbiBJc2xhbmRzJywnZGlhbCc6JysxMzQwJ30seydpc28nOid1ZycsJ2ZsJzonJiMxMjc0ODImIzEyNzQ2ODsnLCdkcyc6J1VnYW5kYScsJ2RpYWwnOicrMjU2J30seydpc28nOid1YScsJ2ZsJzonJiMxMjc0ODImIzEyNzQ2MjsnLCdkcyc6J1VrcmFpbmUnLCdkaWFsJzonKzM4MCd9LHsnaXNvJzonYWUnLCdmbCc6JyYjMTI3NDYyJiMxMjc0NjY7JywnZHMnOidVbml0ZWQgQXJhYiBFbWlyYXRlcycsJ2RpYWwnOicrOTcxJ30seydpc28nOidnYicsJ2ZsJzonJiMxMjc0NjgmIzEyNzQ2MzsnLCdkcyc6J1VuaXRlZCBLaW5nZG9tJywnZGlhbCc6Jys0NCd9LHsnaXNvJzondXMnLCdmbCc6JyYjMTI3NDgyJiMxMjc0ODA7JywnZHMnOidVbml0ZWQgU3RhdGVzJywnZGlhbCc6JysxJ30seydpc28nOid1eScsJ2ZsJzonJiMxMjc0ODImIzEyNzQ4NjsnLCdkcyc6J1VydWd1YXknLCdkaWFsJzonKzU5OCd9LHsnaXNvJzondXonLCdmbCc6JyYjMTI3NDgyJiMxMjc0ODc7JywnZHMnOidVemJla2lzdGFuJywnZGlhbCc6Jys5OTgnfSx7J2lzbyc6J3Z1JywnZmwnOicmIzEyNzQ4MyYjMTI3NDgyOycsJ2RzJzonVmFudWF0dScsJ2RpYWwnOicrNjc4J30seydpc28nOid2YScsJ2ZsJzonJiMxMjc0ODMmIzEyNzQ2MjsnLCdkcyc6J1ZhdGljYW4gQ2l0eScsJ2RpYWwnOicrMzc5J30seydpc28nOid2ZScsJ2ZsJzonJiMxMjc0ODMmIzEyNzQ2NjsnLCdkcyc6J1ZlbmV6dWVsYScsJ2RpYWwnOicrNTgnfSx7J2lzbyc6J3ZuJywnZmwnOicmIzEyNzQ4MyYjMTI3NDc1OycsJ2RzJzonVmlldG5hbScsJ2RpYWwnOicrODQnfSx7J2lzbyc6J3dmJywnZmwnOicmIzEyNzQ4NCYjMTI3NDY3OycsJ2RzJzonV2FsbGlzICYgRnV0dW5hJywnZGlhbCc6Jys2ODEnfSx7J2lzbyc6J2VoJywnZmwnOicmIzEyNzQ2NiYjMTI3NDY5OycsJ2RzJzonV2VzdGVybiBTYWhhcmEnLCdkaWFsJzonKzIxMid9LHsnaXNvJzoneWUnLCdmbCc6JyYjMTI3NDg2JiMxMjc0NjY7JywnZHMnOidZZW1lbicsJ2RpYWwnOicrOTY3J30seydpc28nOid6bScsJ2ZsJzonJiMxMjc0ODcmIzEyNzQ3NDsnLCdkcyc6J1phbWJpYScsJ2RpYWwnOicrMjYwJ30seydpc28nOid6dycsJ2ZsJzonJiMxMjc0ODcmIzEyNzQ4NDsnLCdkcyc6J1ppbWJhYndlJywnZGlhbCc6JysyNjMnfSx7J2lzbyc6J2F4JywnZmwnOicmIzEyNzQ2MiYjMTI3NDg1OycsJ2RzJzonw4VsYW5kIElzbGFuZHMnLCdkaWFsJzonKzY3Mid9XQk7CiAJY291bnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGNvdW50cnkpewogCSAJY291bnRyeS5yZWYgPSBjb3VudHJ5LmRzICsgJyAnICsgY291bnRyeS5kaWFsOwogCX0pOwogCSB2YXIgc2luZ2xlU2VsZWN0RHJwRGF0YSA9IHsKIAkgCWRyb3Bkb3duSXRlbXM6IGNvdW50cmllcywKIAkgCWRpc3BsYXlMYWJlbDE6ICdkcycsCiAJIAlkaXNwbGF5TGFiZWwyOiAnZGlhbCcsCiAJIAlzZWFyY2hWYWx1ZTogJ3JlZicsCiAJIAlzaG93SW5TZWxlY3Rpb246IFsnZGlzcGxheUxhYmVsMiddCiAJIH07CiAJIHZhciBwaENPTlRBQ1RDRjEyQ29kZSA9ICdmaW5kSVAnOwogCWNyZWF0ZVNpbmdsZVNlbGVjdERycCgncGhDT05UQUNUQ0YxMicsIHNpbmdsZVNlbGVjdERycERhdGEpOwogCWZ1bmN0aW9uIHNldHVwUGhvbmVGbGRJUCgpIHsKIAkgCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpc1Bob25lPXRydWVdJykuZm9yRWFjaChmdW5jdGlvbihlbGUpewogCSAJIAlpZihlbGUuaGFzQXR0cmlidXRlKCdmaW5kaXAnKSkgewogCSAJIAkgCXdpbmRvd1tlbGUuaWQrJ0NvZGUnXSA9IGxvY2FsQ29kZTsKIAkgCSAJfQogCSAJIAlzZXRTZWxlY3RlZE9wdGlvbihlbGUucXVlcnlTZWxlY3RvcignW2lzbz0nICsgd2luZG93W2VsZS5pZCArICdDb2RlJ10gKyAnXScpLCBlbGUpOwogCSAJfSk7CiAJfQogCXZhciBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCksCiAJIGRhdGVGaWVsZCwKIAkgc2VsZWN0ZWREYXRlRmllbGQsCiAJIHNob3J0TW9udGggPSBbJ2phbicsICdmZWInLCAnbWFyJywgJ2FwcicsICdtYXknLCAnanVuJywgJ2p1bCcsICdhdWcnLCAnc2VwJywgJ29jdCcsICdub3YnLCAnZGVjJ10sCiAJIGxvbmdNb250aCA9IFsnamFudWFyeScsICdmZWJydWFyeScsICdtYXJjaCcsICdhcHJpbCcsICdtYXknLCAnanVuZScsICdqdWx5JywgJ2F1Z3VzdCcsICdzZXB0ZW1iZXInLCAnb2N0b2JlcicsICdub3ZlbWJlcicsICdkZWNlbWJlciddLAogCSBjYWxlbmRhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3Zi1jYWxlbmRlci1wb3B1cCcpLAogCSBwcmV2WWVhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3Zi1jYWxlbmRhci1wcmV2WWVhci1pY29uJyksCiAJIHByZXZNb250aCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3Zi1jYWxlbmRhci1wcmV2TW9udGgtaWNvbicpLAogCSBuZXh0TW9udGggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2YtY2FsZW5kYXItbmV4dE1vbnRoLWljb24nKSwKIAkgbmV4dFllYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2YtY2FsZW5kYXItbmV4dFllYXItaWNvbicpLAogCSBtb250aFllYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2YtY2FsZW5kYXItbW9udGhZZWFyJyksCiAJIGNhbGVuZGFyQm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3Zi1jYWxlbmRhci1ib2R5JyksCiAJIHRvZGF5QnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3dmLWNhbGVuZGFyLXRvZGF5LWJ0bicpLAogCSBkdW1teUVsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kdW1teS1kaXYnKSwKIAkgd2Vla1N0YXJ0RGF5ID0gMDsKIAlpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRhdGUtaW5wdXQtY29udGFpbmVyJykpIHsKIAkgCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kYXRlLWlucHV0LWNvbnRhaW5lcicpLmZvckVhY2goZWxlID0+IHsKIAkgCSAJdmFyIGRhdGVGb3JtYXQgPSBlbGUuZGF0YXNldC5mb3JtYXQudG9VcHBlckNhc2UoKSwKIAkgCSAJIHllYXJPYmogPSB7IHBsYWNlaG9sZGVyOiBkYXRlRm9ybWF0LmluZGV4T2YoJ1lZWVknKSA+IC0xID8gJ1lZWVknIDogJ1lZJywgbWF4TGVuZ3RoOiBkYXRlRm9ybWF0LmluZGV4T2YoJ1lZWVknKSA+IC0xID8gNCA6IDIsIG1heFdpZHRoOiBnZXRQbGFjZWhvbGRlcldpZHRoKGRhdGVGb3JtYXQuaW5kZXhPZignWVlZWScpID4gLTEgPyAnWVlZWScgOiAnWVknKSwgaWQ6ICd5ZWFySW5wdXQnLCB0eXBlOiAneWVhcicgfSwKIAkgCSAJIG1vbnRoT2JqID0gZ2V0TW9udGhPYmooZGF0ZUZvcm1hdCk7CiAJIAkgCSBkYXlPYmogPSB7IHBsYWNlaG9sZGVyOiBkYXRlRm9ybWF0LmluZGV4T2YoJ0REJykgPiAtMSA/ICdERCcgOiAnRCcsIG1heExlbmd0aDogMiwgbWF4V2lkdGg6IGdldFBsYWNlaG9sZGVyV2lkdGgoZGF0ZUZvcm1hdC5pbmRleE9mKCdERCcpID4gLTEgPyAnREQnIDogJ0QnKSwgaWQ6ICdkYXlJbnB1dCcsIHR5cGU6ICdkYXknIH07CiAJIAkgCWlmIChbJ1lZWVkvTU0vREQnLCAnWVlZWS1NTS1ERCcsICdZWVlZLk1NLkREJywgJ1lZWVkgTU0gREQnLCAnWVkvTU0vREQnLCAnWVktTU0tREQnLCAnWVkuTS5EJywgJ1lZLU0tRCcsICdZWS4gTS4gRCcsICdZWVlZL00vRCcsICdZWVlZLk1NLkRELicsICdZWVlZLiBNTS4gREQnLCAnWVlZWS5ERC5NTScsICdZWVlZ5bm0TU3mnIhEROaXpScsICdZWS5ELk0nXS5pbmNsdWRlcyhkYXRlRm9ybWF0KSkgewogCSAJIAkgCXNldElucHV0c0ZvckRhdGVGb3JtYXQoZWxlLCBbeWVhck9iaiwgbW9udGhPYmosIGRheU9ial0sIGdldFNlcGFyYXRvcnMoZGF0ZUZvcm1hdCkpOwogCSAJIAl9IGVsc2UgaWYgKFsnTU0vREQvWVlZWScsICdNTS1ERC1ZWVlZJywgJ01NLkRELllZWVknLCAnTU0gREQgWVlZWScsICdNTU1NIEQsIFlZWVknLCAnTU1NLURELVlZWVknLCAnTU1NIEQsIFlZWVknLCAnTU0tREQtWVknLCAnTU0vREQvWVknLCAnTS9ERC9ZWScsICdNTU0gREQsIFlZWVknXS5pbmNsdWRlcyhkYXRlRm9ybWF0KSkgewogCSAJIAkgCXNldElucHV0c0ZvckRhdGVGb3JtYXQoZWxlLCBbbW9udGhPYmosIGRheU9iaiwgeWVhck9ial0sIGdldFNlcGFyYXRvcnMoZGF0ZUZvcm1hdCkpOwogCSAJIAl9IGVsc2UgaWYgKFsnREQvTU0vWVknLCAnREQtTU0tWVlZWScsICdERC9NTS9ZWVlZJywgJ0RELk1NLllZWVknLCAnREQgTU0gWVlZWScsICdERC1NTS1ZWScsICdERC5NTS5ZWScsICdELk1NLllZJywgJ0QtTS1ZWScsICdEL00vWVknLCAnRC5NLllZJywgJ0QtTS1ZWVlZJywgJ0REIE1NTSwgWVlZWScsICdELk0uWVkuJywgJ0QvTS9ZWVlZJywgJ0QuTS5ZWVlZJywgJ0QuIE0uIFlZWVkuJywgJ0QuIE0uIFlZWVknLCAnRCBNTU0sIFlZWVknLCAnRC4gTU1NTSBZWVlZJywgJ0RELk1NLllZWVkuJywgJ0RELk1NLllZLiddLmluY2x1ZGVzKGRhdGVGb3JtYXQpKSB7CiAJIAkgCSAJc2V0SW5wdXRzRm9yRGF0ZUZvcm1hdChlbGUsIFtkYXlPYmosIG1vbnRoT2JqLCB5ZWFyT2JqXSwgZ2V0U2VwYXJhdG9ycyhkYXRlRm9ybWF0KSk7CiAJIAkgCX0KIAkgCSAJZWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAlpZiAoY2FsZW5kYXIuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnIHx8IGNhbGVuZGFyLnN0eWxlLmRpc3BsYXkgPT09ICcnIHx8IGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3dmLWZpZWxkLWl0ZW0tZGF0ZScpKSB7CiAJIAkgCSAJc2VsZWN0ZWREYXRlRmllbGQgPSBlbGU7CiAJIAkgCW9wZW5DYWxlbmRhcigpOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCXNlbGVjdGVkRGF0ZUZpZWxkID0gbnVsbDsKIAkgCSAJIAljbG9zZUNhbGVuZGFyKCk7CiAJIAkgCX0KIAkgCSAJfSk7CiAJIAkgCX0pOwogCSAJcHJldk1vbnRoLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAlkYXRlRmllbGQuc2V0TW9udGgoZGF0ZUZpZWxkLmdldE1vbnRoKCkgLSAxKTsKIAkgCSAJcmVuZGVyQ2FsZW5kYXIoZGF0ZUZpZWxkKTsKIAkgCX0pOwogCSAJbmV4dE1vbnRoLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAlsZXQgY3VycmVudERheSA9IGRhdGVGaWVsZC5nZXREYXRlKCk7CiAJIAkgCWRhdGVGaWVsZC5zZXRNb250aChkYXRlRmllbGQuZ2V0TW9udGgoKSArIDEpOwogCSAJIAlpZiAoZGF0ZUZpZWxkLmdldERhdGUoKSAhPT0gY3VycmVudERheSkgewogCSAJIAkgCWRhdGVGaWVsZC5zZXREYXRlKDApOwogCSAJIAl9CiAJIAkgCXJlbmRlckNhbGVuZGFyKGRhdGVGaWVsZCk7CiAJIAl9KTsKIAkgCXByZXZZZWFyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAlkYXRlRmllbGQuc2V0RnVsbFllYXIoZGF0ZUZpZWxkLmdldEZ1bGxZZWFyKCkgLSAxKTsKIAkgCSAJcmVuZGVyQ2FsZW5kYXIoZGF0ZUZpZWxkKTsKIAkgCX0pOwogCSAJbmV4dFllYXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAJIAkgCWRhdGVGaWVsZC5zZXRGdWxsWWVhcihkYXRlRmllbGQuZ2V0RnVsbFllYXIoKSArIDEpOwogCSAJIAlyZW5kZXJDYWxlbmRhcihkYXRlRmllbGQpOwogCSAJfSk7CiAJIAl0b2RheUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKIAkgCSAJZGF0ZUZpZWxkID0gbmV3IERhdGUoKTsKIAkgCSAJcmVuZGVyQ2FsZW5kYXIobmV3IERhdGUoKSk7CiAJIAl9KTsKIAkgCWZ1bmN0aW9uIGdldE1vbnRoT2JqKGRhdGVGb3JtYXQpIHsKIAkgCSAJdmFyIG1heFdpZHRoID0gJycsIHBsYWNlaG9sZGVyID0gJ00nLCBtYXhMZW5ndGggPSAyLCBpc1N0cmluZyA9IGZhbHNlLCBtaW5XaWR0aCA9ICcnLCB3aWR0aCA9ICcnOwogCSAJIAlpZiAoZGF0ZUZvcm1hdC5pbmRleE9mKCdNTU1NJykgPiAtMSkgewogCSAJIAkgCXBsYWNlaG9sZGVyID0gJ01NTU0nOwogCSAJIAkgCW1heExlbmd0aCA9IDk7CiAJIAkgCSAJaXNTdHJpbmcgPSB0cnVlOwogCSAJIAkgCW1heFdpZHRoID0gJzc1cHgnOwogCSAJIAkgCXdpZHRoID0gbWF4V2lkdGggPSBnZXRQbGFjZWhvbGRlcldpZHRoKHBsYWNlaG9sZGVyKTsKIAkgCSAJfSBlbHNlIGlmIChkYXRlRm9ybWF0LmluZGV4T2YoJ01NTScpID4gLTEpIHsKIAkgCSAJIAlwbGFjZWhvbGRlciA9ICdNTU0nOwogCSAJIAkgCW1heExlbmd0aCA9IDM7CiAJIAkgCSAJaXNTdHJpbmcgPSB0cnVlOwogCSAJIAkgCXdpZHRoID0gbWF4V2lkdGggPSBnZXRQbGFjZWhvbGRlcldpZHRoKHBsYWNlaG9sZGVyKTsKIAkgCSAJIAltaW5XaWR0aCA9ICcyMHB4JzsKIAkgCSAJfSBlbHNlIGlmIChkYXRlRm9ybWF0LmluZGV4T2YoJ01NJykgPiAtMSkgewogCSAJIAkgCXBsYWNlaG9sZGVyID0gJ01NJzsKIAkgCSAJIAltYXhXaWR0aCA9IGdldFBsYWNlaG9sZGVyV2lkdGgocGxhY2Vob2xkZXIpOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCW1heFdpZHRoID0gJzE2cHgnOwogCSAJIAl9CiAJIAkgCXJldHVybiB7IHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgbWF4TGVuZ3RoOiBtYXhMZW5ndGgsIG1heFdpZHRoOiBtYXhXaWR0aCwgbWluV2lkdGg6IG1pbldpZHRoLCB3aWR0aDogd2lkdGgsIGlkOiAnbW9udGhJbnB1dCcsIHR5cGU6ICdtb250aCcsIGlzU3RyaW5nOiBpc1N0cmluZyB9CiAJIAl9CiAJIAlmdW5jdGlvbiBnZXRQbGFjZWhvbGRlcldpZHRoKHBsYWNlaG9sZGVyKSB7CiAJIAkgCWlmKCFkdW1teUVsZSkge2R1bW15RWxlID0gZG9jdW1lbnQuZm9ybXNbJ0JpZ2luV2ViVG9SZWNvcmRGb3JtNzM2NTI1MzAwMDAwMDY0MTE0NiddLnF1ZXJ5U2VsZWN0b3IoJy5kdW1teS1kaXYnKTt9CiAJIAkgCWR1bW15RWxlLmlubmVySFRNTCA9IHBsYWNlaG9sZGVyOwogCSAJIAlyZXR1cm4gZHVtbXlFbGUub2Zmc2V0V2lkdGggKyAxICsgJ3B4JzsKIAkgCX0KIAkgCWZ1bmN0aW9uIHNldElucHV0c0ZvckRhdGVGb3JtYXQoZWxlLCBmb3JtYXRPYmosIHNlcGFyYXRvcnMpIHsKIAkgCSAJdmFyIGlucHV0cyA9IGVsZS5xdWVyeVNlbGVjdG9yQWxsKCcud2YtZmllbGQtaXRlbS1kYXRlJyk7CiAJIAkgCWZvcm1hdE9iai5tYXAoKG9iaiwgaW5kZXgpID0+IHsKIAkgCSAJaW5wdXRzW2luZGV4XS5pZCA9IG9iai5pZDsKIAkgCSAJaW5wdXRzW2luZGV4XS5wbGFjZWhvbGRlciA9IG9iai5wbGFjZWhvbGRlcjsKIAkgCSAJaW5wdXRzW2luZGV4XS5zdHlsZS5tYXhXaWR0aCA9IG9iai5tYXhXaWR0aDsKIAkgCSAJaW5wdXRzW2luZGV4XS5kYXRhc2V0LnR5cGUgPSBvYmoudHlwZTsKIAkgCSAJaWYgKG9iai5pc1N0cmluZykgewogCSAJIAkgCWlucHV0c1tpbmRleF0ubWF4TGVuZ3RoID0gb2JqLm1heExlbmd0aDsKIAkgCSAJIAlpbnB1dHNbaW5kZXhdLnN0eWxlLm1pbldpZHRoID0gb2JqLm1pbldpZHRoOwogCSAJIAkgCWlucHV0c1tpbmRleF0uc3R5bGUud2lkdGggPSBvYmoud2lkdGg7CiAJIAkgCX0KIAkgCSAJdmFsaWRhdGVBbmRGb3JtYXRJbnB1dChpbnB1dHNbaW5kZXhdLCBvYmoubWF4TGVuZ3RoLCBvYmoudHlwZSwgaW5wdXRzW2luZGV4ICsgMV0sIGlucHV0c1tpbmRleCAtIDFdLCBvYmopOwogCSAJIAl9KTsKIAkgCSAJZWxlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZXBhcmF0b3InKS5mb3JFYWNoKCh4LCBpbmRleCkgPT4geC5pbm5lckhUTUwgPSBzZXBhcmF0b3JzW2luZGV4XSk7CiAJIAl9CiAJIAlmdW5jdGlvbiB2YWxpZGF0ZUFuZEZvcm1hdElucHV0KGlucHV0LCBtYXgsIHR5cGUsIG5leHRJbnB1dCwgcHJldklucHV0LCBvYmopIHsKIAkgCSAJaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7CiAJIAkgCWlmICh0aGlzLnZhbHVlLmxlbmd0aCA9PSBtYXgpIHtvcGVuQ2FsZW5kYXIoKTt9CiAJIAkgCWxldCB2YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvXEQvZywgJycpOwogCSAJIAlpZiAob2JqLmlzU3RyaW5nKSB7CiAJIAkgCSAJdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvW15hLXpBLVpcc10vZywgJycpOwogCSAJIAlpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PSBtYXggJiYgbmV4dElucHV0KSB7bmV4dElucHV0LmZvY3VzKCk7IH0KIAkgCSAJaWYgKHRoaXMudmFsdWUpIHsKIAkgCSAJIAlkdW1teUVsZS5pbm5lckhUTUwgPSB0aGlzLnZhbHVlOwogCSAJIAkgCXRoaXMuc3R5bGUud2lkdGggPSBkdW1teUVsZS5vZmZzZXRXaWR0aCArIDUgKyAncHgnOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCXRoaXMuc3R5bGUud2lkdGggPSBvYmoud2lkdGg7CiAJIAkgCX0KIAkgCSAJcmV0dXJuOwogCSAJIAl9CiAJIAkgCWlmICh0eXBlID09PSAnZGF5JyAmJiBwYXJzZUludCh2YWx1ZSkgPiAzMSkge3ZhbHVlID0gJzMxJzt9CiAJIAkgCWlmICh0eXBlID09PSAnbW9udGgnICYmIHBhcnNlSW50KHZhbHVlKSA+IDEyKSB7dmFsdWUgPSAnMTInO30KIAkgCSAJaWYgKHZhbHVlKSB7dmFsdWUgPSBwYXJzZUludCh2YWx1ZSkgKyAnJzt9CiAJIAkgCWlmICh2YWx1ZSAhPSAnMCcgJiYgdmFsdWUubGVuZ3RoID09PSAxICYmIG1heCA9PT0gMiAmJiAhWydEJywgJ00nLCAnWVknXS5pbmNsdWRlcyh0aGlzLnBsYWNlaG9sZGVyKSkge3ZhbHVlID0gJzAnICsgdmFsdWU7fQogCSAJIAlpZiAodHlwZSA9PSAneWVhcicgJiYgdmFsdWUubGVuZ3RoID4gbWF4KSB7dmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgbWF4KTt9CiAJIAkgCXRoaXMudmFsdWUgPSB2YWx1ZTsKIAkgCSAJaWYgKCh2YWx1ZS5sZW5ndGggPT09IG1heCB8fCBbJ0QnLCAnTSddLmluY2x1ZGVzKHRoaXMucGxhY2Vob2xkZXIpKSAmJiBuZXh0SW5wdXQgJiYgKCh0eXBlID09PSAnZGF5JyAmJiBwYXJzZUludCh2YWx1ZSkgPiAzKSB8fCAodHlwZSA9PT0gJ21vbnRoJyAmJiBwYXJzZUludCh2YWx1ZSkgPiAxKSB8fCAodHlwZSA9PSAneWVhcicgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT0gbWF4KSkpIHsKIAkgCSAJIAluZXh0SW5wdXQuZm9jdXMoKTsKIAkgCSAJfQogCSAJIAl1cGRhdGVXaWR0aDczNjUyNTMwMDAwMDA2NDExNDYoaW5wdXQpOwogCSAJIAl9KTsKIAkgCSAJaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHsKIAkgCSAJIAlsZXQgdmFsdWUgPSB0aGlzLnZhbHVlOwogCSAJIAlpZiAodmFsdWUubGVuZ3RoID09PSAxICYmIG1heCA9PT0gMiAmJiAhWydEJywgJ00nXS5pbmNsdWRlcyh0aGlzLnBsYWNlaG9sZGVyKSkge3RoaXMudmFsdWUgPSAnMCcgKyB2YWx1ZTt9CiAJIAkgCX0pOwogCSAJIAlpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsKIAkgCSAJIAlpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnICYmIHRoaXMudmFsdWUgPT09ICcnICYmIHByZXZJbnB1dCkge3ByZXZJbnB1dC5mb2N1cygpO30KIAkgCSAJfSk7CiAJIAkgCX0KIAkgCWZ1bmN0aW9uIG9wZW5DYWxlbmRhcigpIHsKIAkgCSAJaWYgKHNlbGVjdGVkRGF0ZUZpZWxkKSB7CiAJIAkgCXZhciBtb250aFZhbHVlID0gJycsIGRheVZhbHVlID0gJycsIHllYXJWYWx1ZSA9ICcnOwogCSAJIAlzZWxlY3RlZERhdGVGaWVsZC5xdWVyeVNlbGVjdG9yQWxsKCcud2YtZmllbGQtaXRlbS1kYXRlJykuZm9yRWFjaCh4ID0+IHsKIAkgCSAJaWYgKHguZGF0YXNldC50eXBlID09ICdkYXknKSB7ZGF5VmFsdWUgPSB4LnZhbHVlO30KIAkgCSAJZWxzZSBpZiAoeC5kYXRhc2V0LnR5cGUgPT0gJ21vbnRoJykgewogCSAJIAkgCW1vbnRoVmFsdWUgPSB4LnZhbHVlOwogCSAJIAkgCWlmICh4LnBsYWNlaG9sZGVyID09ICdNTU0nIHx8IHgucGxhY2Vob2xkZXIgPT0gJ01NTU0nKSB7bW9udGhWYWx1ZSA9IGdldE1vbnRoVmFsdWUoeC52YWx1ZSwgeC5wbGFjZWhvbGRlciA9PSAnTU1NJyA/IHNob3J0TW9udGggOiBsb25nTW9udGgpfQogCSAJIAl9IGVsc2UgewogCSAJIAkgCXllYXJWYWx1ZSA9IHgudmFsdWU7CiAJIAkgCSAJaWYgKHgucGxhY2Vob2xkZXIgPT0gJ1lZJykge3llYXJWYWx1ZSA9IGdldENvcnJlY3RZZWFyKHgudmFsdWUpO30KIAkgCSAJfQogCSAJIAl9KTsKIAkgCSAJaWYgKHllYXJWYWx1ZSAmJiBtb250aFZhbHVlICYmIGRheVZhbHVlKSB7CiAJIAkgCSAJY3VycmVudERhdGUgPSBuZXcgRGF0ZShwYXJzZUludCh5ZWFyVmFsdWUpLCBwYXJzZUludChtb250aFZhbHVlKSAtIDEsIHBhcnNlSW50KGRheVZhbHVlKSk7CiAJIAkgCWlmKCEoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSA9PSBwYXJzZUludCh5ZWFyVmFsdWUpICYmIGN1cnJlbnREYXRlLmdldE1vbnRoKCkgPT0gcGFyc2VJbnQobW9udGhWYWx1ZSkgLSAxICYmIGN1cnJlbnREYXRlLmdldERhdGUoKSA9PSBwYXJzZUludChkYXlWYWx1ZSkpKSB7Y3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO30KIAkgCSAJfSBlbHNlIHtjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7fQogCSAJIAkgCWRhdGVGaWVsZCA9IG5ldyBEYXRlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY3VycmVudERhdGUpKSk7CiAJIAkgCXJlbmRlckNhbGVuZGFyKGN1cnJlbnREYXRlKTsKIAkgCSAJfQogCSAJfQogCSAJZnVuY3Rpb24gZ2V0TW9udGhWYWx1ZSh2YWx1ZSwgbW9udGhBcnIpIHsKIAkgCSAJdmFyIG1vbnRoID0gJyc7CiAJIAkgCWlmIChtb250aEFyci5pbmRleE9mKHZhbHVlLnRvTG93ZXJDYXNlKCkpID4gLTEpIHttb250aCA9IG1vbnRoQXJyLmluZGV4T2YodmFsdWUudG9Mb3dlckNhc2UoKSkgKyAxICsgJyc7fQogCSAJIAlyZXR1cm4gbW9udGg7CiAJIAl9CiAJIAlmdW5jdGlvbiBjbG9zZUNhbGVuZGFyKCkge2NhbGVuZGFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7fQogCSAJZnVuY3Rpb24gcmVuZGVyQ2FsZW5kYXIoZGF0ZSkgewogCSAJIAlsZXQgZmllbGRBdHRyID0gc2VsZWN0ZWREYXRlRmllbGQuZGF0YXNldCwKIAkgCSAJcmVzdHJpY3R0eXBlID0gZmllbGRBdHRyLnJlc3RyaWN0dHlwZSwKIAkgCSAJbWluRGF0ZSA9IGZpZWxkQXR0ci5yYW5nZWZyb20gPyBuZXcgRGF0ZShmaWVsZEF0dHIucmFuZ2Vmcm9tKS5zZXRIb3VycygwLCAwLCAwLCAwKSA6IG51bGwsCiAJIAkgCW1heERhdGUgPSBmaWVsZEF0dHIucmFuZ2V0byA/IG5ldyBEYXRlKGZpZWxkQXR0ci5yYW5nZXRvKS5zZXRIb3VycygwLCAwLCAwLCAwKSA6IG51bGwsCiAJIAkgCWRheXNUb1Jlc3RyaWN0ID0gZmllbGRBdHRyLnJlc3RyaWN0ZGF5cyA/IGZpZWxkQXR0ci5yZXN0cmljdGRheXMuc3BsaXQoJywnKS5tYXAoeCA9PiBwYXJzZUludCh4KSkgOiBbXTsKIAkgCSAJY2FsZW5kYXJCb2R5LmlubmVySFRNTCA9ICcnOwogCSAJIAljb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLAogCSAJIAltb250aCA9IGRhdGUuZ2V0TW9udGgoKSwKIAkgCSAJZGF5TmFtZXMgPSBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLAogCSAJIAlmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCksCiAJIAkgCWFkanVzdGVkRmlyc3REYXkgPSAoZmlyc3REYXlPZk1vbnRoIC0gd2Vla1N0YXJ0RGF5ICsgNykgJSA3LAogCSAJIAlsYXN0RGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpLAogCSAJIAlhZGp1c3RlZERheU5hbWVzID0gZGF5TmFtZXMuc2xpY2Uod2Vla1N0YXJ0RGF5KS5jb25jYXQoZGF5TmFtZXMuc2xpY2UoMCwgd2Vla1N0YXJ0RGF5KSk7CiAJIAkgCW1vbnRoWWVhci50ZXh0Q29udGVudCA9IGAke2RhdGUudG9Mb2NhbGVTdHJpbmcoJ2RlZmF1bHQnLCB7IG1vbnRoOiAnbG9uZycgfSl9ICR7eWVhcn1gOwogCSAJIAlhZGp1c3RlZERheU5hbWVzLm1hcCgoZGF5LCBpbmRleCkgPT4gY2FsZW5kYXIucXVlcnlTZWxlY3RvckFsbCgnLndmLWNhbGVuZGFyLWRheXMnKVtpbmRleF0uaW5uZXJIVE1MID0gZGF5KTsKIAkgCSAJaWYgKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAhPT0geWVhciB8fCBuZXcgRGF0ZSgpLmdldE1vbnRoKCkgIT09IG1vbnRoKSB7dG9kYXlCdG4uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7fQogCSAJIAllbHNlIHt0b2RheUJ0bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO30KIAkgCSAJZm9yIChsZXQgaSA9IDA7IGkgPCBhZGp1c3RlZEZpcnN0RGF5OyBpKyspIHsKIAkgCSAJIAljb25zdCBlbXB0eUNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIAkgCSAJIAljYWxlbmRhckJvZHkuYXBwZW5kQ2hpbGQoZW1wdHlDZWxsKTsKIAkgCSAJfQogCSAJIAlmb3IgKGxldCBkYXkgPSAxOyBkYXkgPD0gbGFzdERhdGU7IGRheSsrKSB7CiAJIAkgCWNvbnN0IGRhdGVDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAJIAkgCWNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTsKIAkgCSAJY29uc3QgZGF5T2ZXZWVrID0gZGF0ZU9iai5nZXREYXkoKTsKIAkgCSAJZGF0ZUNlbGwuY2xhc3NMaXN0LmFkZCgnd2YtY2FsZW5kYXItZGF0ZScpOwogCSAJIAlkYXRlQ2VsbC50ZXh0Q29udGVudCA9IGRheTsKIAkgCSAJaWYgKGRheSA9PT0gbmV3IERhdGUoKS5nZXREYXRlKCkgJiYgbW9udGggPT09IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSAmJiB5ZWFyID09PSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpIHtkYXRlQ2VsbC5jbGFzc0xpc3QuYWRkKCdjdXJyZW50LWRhdGUnKTt9CiAJIAkgCWlmIChkYXkgPT09IGN1cnJlbnREYXRlLmdldERhdGUoKSAmJiB5ZWFyID09PSBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpICYmIG1vbnRoID09PSBjdXJyZW50RGF0ZS5nZXRNb250aCgpKSB7ZGF0ZUNlbGwuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTt9CiAJIAkgCWlmIChkYXlzVG9SZXN0cmljdC5pbmNsdWRlcyhkYXlPZldlZWspIHx8IAogCSAJIAkocmVzdHJpY3R0eXBlICYmICgocmVzdHJpY3R0eXBlID09PSAncmFuZ2UnICYmIG1pbkRhdGUgJiYgbWF4RGF0ZSAmJiAoZGF0ZU9iaiA8IG1pbkRhdGUgfHwgZGF0ZU9iaiA+IG1heERhdGUpKSAgfHwgCiAJIAkgCShyZXN0cmljdHR5cGUgPT09ICdmdXR1cmUnICYmIGRhdGVPYmogPiBuZXcgRGF0ZSgpKSB8fAogCSAJIAkocmVzdHJpY3R0eXBlID09PSAncGFzdCcgJiYgZGF0ZU9iaiA8IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwwLDAsMCkpKSkpKSB7CiAJIAkgCSAJZGF0ZUNlbGwuY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQtZGF0ZScpOwogCSAJIAl9IGVsc2UgewogCSAJIAkgCWRhdGVDZWxsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogCSAJIAkgCXNlbGVjdGVkRGF0ZUZpZWxkLnF1ZXJ5U2VsZWN0b3JBbGwoJy53Zi1maWVsZC1pdGVtLWRhdGUnKS5mb3JFYWNoKHggPT4gewogCSAJIAkgCWlmICh4LmRhdGFzZXQudHlwZSA9PSAnZGF5JykgewogCSAJIAkgCSAJbGV0IGRheVYgPSBTdHJpbmcoZGF5KS5wYWRTdGFydCgyLCAnMCcpOwogCSAJIAkgCSAJeC52YWx1ZSA9IGRheVY7CiAJIAkgCSAJIAlpZiAoeC5wbGFjZWhvbGRlciA9PSAnRCcpIHsgeC52YWx1ZSA9IFN0cmluZyhkYXkpO30KIAkgCSAJIAl9IGVsc2UgaWYgKHguZGF0YXNldC50eXBlID09ICdtb250aCcpIHsKIAkgCSAJIAkgCWxldCBtb250aFYgPSBTdHJpbmcobW9udGggKyAxKS5wYWRTdGFydCgyLCAnMCcpOwogCSAJIAkgCSAJeC52YWx1ZSA9IG1vbnRoVjsKIAkgCSAJIAkgCWlmICh4LnBsYWNlaG9sZGVyID09ICdNTU0nKSB7CiAJIAkgCSAJIAl4LnZhbHVlID0gc2hvcnRNb250aFttb250aF07CiAJIAkgCSAJIAl9IGVsc2UgaWYgKHgucGxhY2Vob2xkZXIgPT0gJ01NTU0nKSB7CiAJIAkgCSAJIAl4LnZhbHVlID0gbG9uZ01vbnRoW21vbnRoXTsKIAkgCSAJIAkgCX0gZWxzZSBpZiAoeC5wbGFjZWhvbGRlciA9PSAnTScpIHt4LnZhbHVlID0gU3RyaW5nKG1vbnRoICsgMSk7fQogCSAJIAkgCX0gZWxzZSB7CiAJIAkgCSAJIAlpZiAoeC5wbGFjZWhvbGRlciA9PSAnWVknKSB7eC52YWx1ZSA9ICh5ZWFyICsgJycpLnN1YnN0cmluZygyLCA0KTsKIAkgCSAJIAkgCX0gZWxzZSB7eC52YWx1ZSA9IHllYXI7fQogCSAJIAkgCX0KIAkgCSAJIAl1cGRhdGVXaWR0aDczNjUyNTMwMDAwMDA2NDExNDYoeCk7CiAJIAkgCSAJfSk7CiAJIAkgCSAJdmFyIGRhdGVFbGUgPSBzZWxlY3RlZERhdGVGaWVsZC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOwogCSAJIAkgCWlmIChkYXRlRWxlKSB7CiAJIAkgCSAJIAlyZW1vdmVFcnJvcihkYXRlRWxlKTsKIAkgCSAJIAl9CiAJIAkgCSAJY2xvc2VDYWxlbmRhcigpOwogCSAJIAkgCX0pOwogCSAJIAl9CiAJIAkgCWNhbGVuZGFyQm9keS5hcHBlbmRDaGlsZChkYXRlQ2VsbCk7CiAJIAkgCX0KIAkgCSAJY2FsZW5kYXIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAJIAkgCXBvc2l0aW9uQ2FsZW5kYXIoKTsKIAkgCX0KIAl9CiAJZnVuY3Rpb24gdXBkYXRlV2lkdGg3MzY1MjUzMDAwMDAwNjQxMTQ2KGVsZSkgewogCSAJaWYoIWR1bW15RWxlKSB7ZHVtbXlFbGUgPSBkb2N1bWVudC5mb3Jtc1snQmlnaW5XZWJUb1JlY29yZEZvcm03MzY1MjUzMDAwMDAwNjQxMTQ2J10ucXVlcnlTZWxlY3RvcignLmR1bW15LWRpdicpO30KIAkgCWR1bW15RWxlLmlubmVySFRNTCA9IGVsZS52YWx1ZSA/IGVsZS52YWx1ZSA6IGVsZS5wbGFjZWhvbGRlcjsKIAkgCWlmKFsnTU1NJywnTU1NTSddLmluY2x1ZGVzKGVsZS5wbGFjZWhvbGRlcikpIHtkdW1teUVsZS5pbm5lckhUTUwgPSBkdW1teUVsZS5pbm5lckhUTUxbMF0udG9VcHBlckNhc2UoKSArIGR1bW15RWxlLmlubmVySFRNTC5zbGljZSgxKTt9CiAJIAllbGUuc3R5bGUud2lkdGggPSBkdW1teUVsZS5vZmZzZXRXaWR0aDsKIAl9CiAJZnVuY3Rpb24gcG9zaXRpb25DYWxlbmRhcigpIHsKIAkgCWNvbnN0IHdyYXBwZXJSZWN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndmLWZvcm0tY29tcG9uZW50JykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAJIAljb25zdCBwb3NpdGlvbiA9IHNlbGVjdGVkRGF0ZUZpZWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogCSAJY29uc3Qgc3BhY2VCZWxvdyA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHBvc2l0aW9uLmJvdHRvbTsKIAkgCWNhbGVuZGFyLnN0eWxlLmJvdHRvbSA9IGAke3dyYXBwZXJSZWN0LmJvdHRvbSAtIHBvc2l0aW9uLmJvdHRvbSAtIGNhbGVuZGFyLm9mZnNldEhlaWdodCAtIDV9cHhgOwogCSAJY2FsZW5kYXIuc3R5bGUudG9wID0gJyc7CiAJIAlpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2Rpcj1ydGxdJykpIHsKIAkgCSAJY2FsZW5kYXIuc3R5bGUucmlnaHQgPSBgJHtNYXRoLmFicyhwb3NpdGlvbi5yaWdodCAtIHdyYXBwZXJSZWN0LnJpZ2h0KX1weGA7CiAJIAkgCWNhbGVuZGFyLnN0eWxlLmxlZnQgPSAnJzsKIAkgCX0gZWxzZSB7CiAJIAkgCWNhbGVuZGFyLnN0eWxlLmxlZnQgPSBgJHtNYXRoLmFicyhwb3NpdGlvbi5sZWZ0IC0gd3JhcHBlclJlY3QubGVmdCl9cHhgOwogCSAJIAljYWxlbmRhci5zdHlsZS5yaWdodCA9ICcnOwogCSAJfQogCX0KIAlmdW5jdGlvbiBnZXRDb3JyZWN0WWVhcih5ZWFyKSB7CiAJIAlpZiAoKHllYXIgKyAnJykubGVuZ3RoICE9IDIpIHtyZXR1cm4geWVhcjt9CiAJIAl2YXIgY3VyX1llYXIgPSAobmV3IERhdGUpLmdldEZ1bGxZZWFyKCksCiAJIAl5ZWFyX3ByZWZpeCA9IHBhcnNlSW50KGN1cl9ZZWFyIC8gMTAwKSwKIAkgCXllYXJfc3VmZml4ID0gY3VyX1llYXIgJSAxMDAsCiAJIAlsaW1pdCA9ICh5ZWFyX3N1ZmZpeCAtIGxMaW1pdCArIDEwMCkgJSAxMDA7CiAJIAlpZiAoeWVhcl9zdWZmaXggPiBsaW1pdCkgewogCSAJaWYgKHllYXIgPCBsaW1pdCkge3llYXIgPSB5ZWFyX3ByZWZpeCArIDEgKyAnJyArIHllYXI7CiAJIAl9IGVsc2Uge3llYXIgPSB5ZWFyX3ByZWZpeCArICcnICsgeWVhcjt9CiAJIAl9IGVsc2UgaWYgKHllYXIgPCBsaW1pdCkge3llYXIgPSB5ZWFyX3ByZWZpeCArICcnICsgeWVhcjsKIAkgCX0gZWxzZSB7eWVhciA9IHllYXJfcHJlZml4IC0gMSArICcnICsgeWVhcjt9CiAJIAlyZXR1cm4geWVhcjsKIAl9CiAJIAlmdW5jdGlvbiBnZXRTZXBhcmF0b3JzKGRhdGVGb3JtYXQpIHsKIAkgCXZhciBzZXBhcmF0b3JzID0gW107CiAJIAljb25zdCByZWdleFBhdHRlcm4xID0gL1wuIC9nOwogCSAJaWYgKHJlZ2V4UGF0dGVybjEudGVzdChkYXRlRm9ybWF0KSkge3NlcGFyYXRvcnMgPSBkYXRlRm9ybWF0Lm1hdGNoKHJlZ2V4UGF0dGVybjEpOwogCSAJfSBlbHNlIHtzZXBhcmF0b3JzID0gZGF0ZUZvcm1hdC5tYXRjaCgvW15hLXpBLVowLTldL2cpO30KIAkgCWlmIChzZXBhcmF0b3JzLmxlbmd0aCA9PSAxKSB7c2VwYXJhdG9ycyA9IGRhdGVGb3JtYXQubWF0Y2goL1teYS16QS1aMC05XS9nKTt9CiAJIAlyZXR1cm4gc2VwYXJhdG9yczsKIAl9CiAJZnVuY3Rpb24gY29udmVydFRvSVNPKGRhdGVTdHJpbmcsIGZvcm1hdCkgewogCSAJY29uc3QgbW9udGhOYW1lcyA9IHsKIAkgCSAJSmFudWFyeTogJzAxJywgRmVicnVhcnk6ICcwMicsIE1hcmNoOiAnMDMnLCBBcHJpbDogJzA0JywgTWF5OiAnMDUnLCBKdW5lOiAnMDYnLEp1bHk6ICcwNycsIEF1Z3VzdDogJzA4JywgU2VwdGVtYmVyOiAnMDknLCBPY3RvYmVyOiAnMTAnLCBOb3ZlbWJlcjogJzExJywgRGVjZW1iZXI6ICcxMicsSmFuOiAnMDEnLCBGZWI6ICcwMicsIE1hcjogJzAzJywgQXByOiAnMDQnLCBNYXlfOiAnMDUnLCBKdW46ICcwNicsIEp1bDogJzA3JyxBdWc6ICcwOCcsIFNlcDogJzA5JywgT2N0OiAnMTAnLCBOb3Y6ICcxMScsIERlYzogJzEyJwogCSAJfTsKIAkgCXZhciBkZWxpbWl0ZXJzID0gL1tcL1wtLlxzXS87CiAJIAlpZihmb3JtYXQuaW5kZXhPZign5bm0JykgIT09IC0xKSB7CiAJIAkgCWRlbGltaXRlcnMgPSAvW+W5tOaciOaXpV0vOwogCSAJfQogCSAJY29uc3QgZm9ybWF0UGFydHMgPSBmb3JtYXQuc3BsaXQoZGVsaW1pdGVycyk7CiAJIAljb25zdCBkYXRlUGFydHMgPSBkYXRlU3RyaW5nLnNwbGl0KGRlbGltaXRlcnMpOwogCSAJaWYgKGZvcm1hdFBhcnRzLmxlbmd0aCAhPT0gZGF0ZVBhcnRzLmxlbmd0aCkgcmV0dXJuICcnOwogCSAJbGV0IGRheSA9ICcnLCBtb250aCA9ICcnLCB5ZWFyID0gJyc7CiAJIAlmb3JtYXRQYXJ0cy5mb3JFYWNoKChwYXJ0LCBpbmRleCkgPT4gewogCSAJIAlsZXQgdmFsdWUgPSBkYXRlUGFydHNbaW5kZXhdOwogCSAJIAlpZiAocGFydC5pbmNsdWRlcygnWVlZWScpKSB7CiAJIAkgCSAJeWVhciA9IHZhbHVlOwogCSAJIAl9IGVsc2UgaWYgKHBhcnQuaW5jbHVkZXMoJ1lZJykpIHsKIAkgCSAJIAlsZXQgeWVhck51bSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAJIAkgCSAJeWVhciA9IHllYXJOdW0gPiAzMCA/IGAxOSR7dmFsdWV9YCA6IGAyMCR7dmFsdWV9YDsKIAkgCSAJfSBlbHNlIGlmIChwYXJ0LmluY2x1ZGVzKCdNTScpIHx8IHBhcnQuaW5jbHVkZXMoJ00nKSkgewogCSAJIAkgCWlmIChpc05hTih2YWx1ZSkpIHt0bW9udGggPSBtb250aE5hbWVzW3ZhbHVlXSB8fCAnMDAnOwogCSAJIAl9IGVsc2Uge21vbnRoID0gdmFsdWUucGFkU3RhcnQoMiwgJzAnKTt9CiAJIAkgCX0gZWxzZSBpZiAocGFydC5pbmNsdWRlcygnREQnKSB8fCBwYXJ0LmluY2x1ZGVzKCdEJykpIHsKIAkgCSAJIAlkYXkgPSB2YWx1ZS5wYWRTdGFydCgyLCAnMCcpOwogCSAJIAl9CiAJIAl9KTsKIAkgCXJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gOwogCSAJfQogCWZ1bmN0aW9uIHZhbGlkYXRlRGF0ZTczNjUyNTMwMDAwMDA2NDExNDYoKSB7CiAJIAl2YXIgZm9ybSA9IGRvY3VtZW50LmZvcm1zWydCaWdpbldlYlRvUmVjb3JkRm9ybTczNjUyNTMwMDAwMDA2NDExNDYnXSwKIAkgCSBpc1JldHVybiA9IHRydWU7CiAJIAl2YXIgdmFsaWRhdGVGbGQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tmdmFsaWRhdGU9ZGF0ZV0nKTsKIAkgCWZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRhdGVGbGQubGVuZ3RoOyBpKyspIHsKIAkgCSAJbGV0IGZpZWxkID0gdmFsaWRhdGVGbGRbaV0sCiAJIAkgCSB3ZkxhYmVsID0gZmllbGQuY2xvc2VzdCgnLndmLXJvdycpID8gZmllbGQuY2xvc2VzdCgnLndmLXJvdycpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3dmLWxhYmVsJylbMF0uaW5uZXJIVE1MIDogJycsCiAJIAkgCSBkYXRlRmllbGRTaWIgPSBmaWVsZC5uZXh0RWxlbWVudFNpYmxpbmcsCiAJIAkgCSBkYXRlSW5wdXRzID0gWy4uLmRhdGVGaWVsZFNpYi5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCcpXSwKIAkgCSAJIGRhdGVGb3JtYXRTdHIgPSBkYXRlRmllbGRTaWIuZGF0YXNldC5mb3JtYXQudG9VcHBlckNhc2UoKSwKIAkgCSAJIGlzRW1wdHkgPSAwOwogCSAJIAlkYXRlSW5wdXRzLmZvckVhY2goZGF0ZUlFbGUgPT4gewogCSAJIAlsZXQgdmFsID0gZGF0ZUlFbGUudmFsdWUudHJpbSgpOwogCSAJIAlpZiAoIXZhbCkgaXNFbXB0eSsrOwogCSAJIAlkYXRlRm9ybWF0U3RyID0gZGF0ZUZvcm1hdFN0ci5yZXBsYWNlKGRhdGVJRWxlLnBsYWNlaG9sZGVyLCB2YWwpOwogCSAJIAl9KTsKIAkgCSAJaWYgKGlzRW1wdHkgPT09IGRhdGVJbnB1dHMubGVuZ3RoKSBjb250aW51ZTsKIAkgCSAJdmFyIHNlbGVjdGVkRGF0ZSwKIAkgCSAJY29udmVydGVkRGF0ZSA9IGNvbnZlcnRUb0lTTyhkYXRlRm9ybWF0U3RyLCBkYXRlRmllbGRTaWIuZGF0YXNldC5mb3JtYXQudG9VcHBlckNhc2UoKSk7CiAJIAkgCWlmKGZpZWxkLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSA9PT0gJ2RhdGUnKXsKIAkgCSAJIAl2YXIgZGF0ZXN0ciA9IGNvbnZlcnRlZERhdGUuc3BsaXQoJy0nKTsKIAkgCSAJIAlzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShkYXRlc3RyWzBdLGRhdGVzdHJbMV0tMSwgZGF0ZXN0clsyXSwgMCwgMCwgMCk7CiAJIAkgCX0KIAkgCSAJZWxzZXsKIAkgCSAJIAkgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoY29udmVydGVkRGF0ZSk7CiAJIAkgCX0KIAkgCSAJdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAJIAkgCWlmIChpc05hTihzZWxlY3RlZERhdGUpKSB7CiAJIAkgCSAJc2V0RXJyb3IoZmllbGQsIGBFbnRlciB2YWxpZCAke3dmTGFiZWx9YCk7CiAJIAkgCSAJaXNSZXR1cm4gPSBmYWxzZTsKIAkgCSAJIAljb250aW51ZTsKIAkgCSAJfQogCSAJIAlpZiAoZmllbGQuZ2V0QXR0cmlidXRlKCdmdHlwZScpID09PSAnZGF0ZXRpbWUnKSB7CiAJIAkgCSAJY29uc3QgZ2V0VmFsdWUgPSAobmFtZSwgZGVmYXVsdFZhbHVlKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShgJHtmaWVsZC5uYW1lfSR7bmFtZX1gKVswXT8udmFsdWUgfHwgZGVmYXVsdFZhbHVlOwogCSAJIAkgCWxldCBkdEhyID0gZ2V0VmFsdWUoJ2hvdXInLCAnMTInKSwKIAkgCSAJIAkgZHRNaW4gPSBnZXRWYWx1ZSgnbWludXRlJywgJzAwJyksCiAJIAkgCSAJIGR0QW1QTSA9IGdldFZhbHVlKCdhbXBtJywgJ0FNJyksCiAJIAkgCSAJIGlzb0RhdGUgPSBjb252ZXJ0VG9JU08oZGF0ZUZvcm1hdFN0ciwgZGF0ZUZpZWxkU2liLmRhdGFzZXQuZm9ybWF0LnRvVXBwZXJDYXNlKCkpLAogCSAJIAkgCWRhdGVQYXJ0cyA9IGlzb0RhdGUuc3BsaXQoJy0nKSwKIAkgCSAJIAl5ZWFyID0gcGFyc2VJbnQoZGF0ZVBhcnRzWzBdLCAxMCksCiAJIAkgCSAJbW9udGggPSBwYXJzZUludChkYXRlUGFydHNbMV0sIDEwKSAtIDEsCiAJIAkgCSAJZGF5ID0gcGFyc2VJbnQoZGF0ZVBhcnRzWzJdLCAxMCksCiAJIAkgCSAJaG91ciA9IHBhcnNlSW50KGR0SHIsIDEwKTsKIAkgCSAJIAlpZiAoZHRBbVBNID09PSAnUE0nICYmIGhvdXIgIT09IDEyKSB7CiAJIAkgCSAJIAlob3VyICs9IDEyOwogCSAJIAkgCX0gZWxzZSBpZiAoZHRBbVBNID09PSAnQU0nICYmIGhvdXIgPT09IDEyKSB7CiAJIAkgCSAJIAlob3VyID0gMDsKIAkgCSAJIAl9CiAJIAkgCSAJdmFyIG1pbnV0ZSA9IHBhcnNlSW50KGR0TWluLCAxMCk7CiAJIAkgCSAJc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlKTsKIAkgCSAJfSBlbHNlIHsKIAkgCSAJIAlzZWxlY3RlZERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7CiAJIAkgCSAJbm93LnNldEhvdXJzKDAsIDAsIDAsIDApOwogCSAJIAl9CiAJIAkgCWZpZWxkLnZhbHVlID0gc2VsZWN0ZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQ0EnKTsKIAkgCSAJbGV0IHJlc3RyaWN0aW9uVHlwZSA9IGRhdGVGaWVsZFNpYi5kYXRhc2V0LnJlc3RyaWN0dHlwZTsKIAkgCSAJaWYoaXNSZXR1cm4gJiYgZGF0ZUZpZWxkU2liLmRhdGFzZXQucmVzdHJpY3RkYXlzKSB7CiAJIAkgCSAJbGV0IHNEYXkgPSBzZWxlY3RlZERhdGUuZ2V0RGF5KCkudG9TdHJpbmcoKSwKIAkgCSAJIAkgZGF5TmFtZSA9IHNlbGVjdGVkRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywgeyB3ZWVrZGF5OiAnbG9uZycgfSk7CiAJIAkgCSAJaWYoZGF0ZUZpZWxkU2liLmRhdGFzZXQucmVzdHJpY3RkYXlzLmluZGV4T2Yoc0RheSkgIT09IC0xKSB7CiAJIAkgCSAJIAlzZXRFcnJvcihmaWVsZCwgJ0Nob29zZSBhIGRhdGUgdGhhdCBkb2VzIG5vdCBmYWxsIG9uICcrIGRheU5hbWUpOwogCSAJIAkgCSAJaXNSZXR1cm4gPSBmYWxzZTsKIAkgCSAJIAl9CiAJIAkgCX0KIAkgCSAJaWYgKGlzUmV0dXJuICYmIHJlc3RyaWN0aW9uVHlwZSkgewogCSAJIAkgCWNvbnN0IGZvcm1hdERhdGUgPSBkYXRlID0+IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi11cycsIHsgbW9udGg6ICdsb25nJywgeWVhcjogJ251bWVyaWMnLCBkYXk6ICdudW1lcmljJyB9KTsKIAkgCSAJIAllcnJvcktleSA9ICcnOwogCSAJIAkgCWlmICgocmVzdHJpY3Rpb25UeXBlID09PSAncGFzdCcgJiYgc2VsZWN0ZWREYXRlIDwgbm93KSB8fCAocmVzdHJpY3Rpb25UeXBlID09PSAnZnV0dXJlJyAmJiBzZWxlY3RlZERhdGUgPiBub3cpKSB7CiAJIAkgCSAJIAllcnJvcktleSA9IGBDaG9vc2UgYSBkYXRlICR7cmVzdHJpY3Rpb25UeXBlID09PSAncGFzdCcgPyAnb24gb3IgYWZ0ZXInIDogJ29uIG9yIGJlZm9yZSd9ICR7Zm9ybWF0RGF0ZShub3cpfWA7CiAJIAkgCSAJfSBlbHNlIGlmIChyZXN0cmljdGlvblR5cGUgPT09ICdyYW5nZScpIHsKIAkgCSAJIAkgCWxldCBzdGFydCA9IG5ldyBEYXRlKGRhdGVGaWVsZFNpYi5kYXRhc2V0LnJhbmdlZnJvbSksCiAJIAkgCSAJIAkgZW5kID0gbmV3IERhdGUoZGF0ZUZpZWxkU2liLmRhdGFzZXQucmFuZ2V0byk7CiAJIAkgCSAJIAkgc3RhcnQuc2V0SG91cnMoMCwgMCwgMCwgMCk7CiAJIAkgCSAJIAkgaWYgKGZpZWxkLmdldEF0dHJpYnV0ZSgnZnR5cGUnKSA9PT0gJ2RhdGV0aW1lJykgewogCSAJIAkgCSAJIAllbmQuc2V0SG91cnMoMjMsIDU5LCAwLCAwKTsKIAkgCSAJIAkgCSB9IGVsc2UgewogCSAJIAkgCSAJIAllbmQuc2V0SG91cnMoMCwgMCwgMCwgMCk7CiAJIAkgCSAJIAkgfQogCSAJIAkgCSAJaWYgKHNlbGVjdGVkRGF0ZSA8IHN0YXJ0IHx8IHNlbGVjdGVkRGF0ZSA+IGVuZCkgewogCSAJIAkgCSAJIAllcnJvcktleSA9IGBDaG9vc2UgYSBkYXRlIGJldHdlZW4gJHtmb3JtYXREYXRlKHN0YXJ0KX0gYW5kICR7Zm9ybWF0RGF0ZShlbmQpfWA7CiAJIAkgCSAJIAl9CiAJIAkgCSAJfQogCSAJIAkgCWlmIChlcnJvcktleSkgewogCSAJIAkgCSAJc2V0RXJyb3IoZmllbGQsIGVycm9yS2V5KTsKIAkgCSAJIAkgCWlzUmV0dXJuID0gZmFsc2U7CiAJIAkgCSAJfQogCSAJIAl9CiAJIAl9CiAJIAlyZXR1cm4gaXNSZXR1cm47CiAJfQogCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSl7CiAJIAlpZighZS50YXJnZXQuY2xvc2VzdCgnLmRhdGUtaW5wdXQtY29udGFpbmVyJykgJiYgIWUudGFyZ2V0LmNsb3Nlc3QoJy53Zi1jYWxlbmRhci1wb3B1cC13cmFwcGVyJykpe2NhbGVuZGFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7fQogCX0pOwo8L3NjcmlwdD4KIAkgPHNjcmlwdCBpZD0nd2Zfc2NyaXB0JyBzcmM9J2h0dHBzOi8vYmlnaW4uem9oby5jb20vY3JtL1dlYmZvcm1TY3JpcHRTZXJ2bGV0P3JpZD1iMDU2OGQ3NWI3MzBlZDU3NGVkYWYwZjE3MDhkYjIwZWMxMDYxYzA4MmI5NTAyMjU1ZGU3M2I0ZDk3NTNhYjBmNzQ0ZGVlYTg2NjFkYzhhMzI4MGYxN2NlM2I5MzdkY2NnaWQ3ZjQ3ZGQyZDc1N2Y1ODViZWMwNTkzNDNkOGU3MDVjYzhmYjllYTQzNDY1ZDI2OGNiMzRjOTEzN2UzYjQ5OGZkJmZpbmRpcD10cnVlJyBvbmxvYWQ9c2V0dXBQaG9uZUZsZElQKCk+PC9zY3JpcHQ+CjxkaXYgaWQ9ImxlYWQtd2lkZ2V0IiBkYXRhLWxlYWQtaWQ9IjM1OCI+PC9kaXY+CiAgICA8bGluayBocmVmPSJodHRwczovL3N0YWdlLmJvb29zdGVkLmNvbS9zdGlja3ktYnV0dG9uL21haW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgc3JjPSJodHRwczovL3N0YWdlLmJvb29zdGVkLmNvbS9zdGlja3ktYnV0dG9uL21haW4uanMiPjwvc2NyaXB0PgoKICA8ZGl2IGlkPSJQcm9kdWN0IiBkYXRhLXctaWQ9ImNmYmE2NjkwLTI0NzMtOTI2MS04YWJkLTM2MjRmZWFjODI2YiIgY2xhc3M9InNlY3Rpb24gb3ZlcmZsb3ctaGlkZGVuIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBoZXJvIj4KICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uLWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uLWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApO3RyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZDtvcGFjaXR5OjAiIGNsYXNzPSJhbmltYXRlLW9uLWxvYWQtMDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLXRleHQtaG9sZGVyIj4KICAgICAgICAgICAgICA8aDEgY2xhc3M9InRpdGxlIG1vYmlsZS1iaWdnZXIiPkRpc2NvdmVyIFRoZSBQb3dlciBPZiBBaSBjaGF0Ym90czwvaDE+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApO29wYWNpdHk6MDt0cmFuc2Zvcm0tc3R5bGU6cHJlc2VydmUtM2QiIGNsYXNzPSJhbmltYXRlLW9uLWxvYWQtMDMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZXJvLXBhcmFncmFwaC1ob2xkZXIiPgogICAgICAgICAgICAgIDxwIGNsYXNzPSJwYXJhZ3JhcGgiPkF1dG9tYXRlIHlvdXIgY3VzdG9tZXIgc2VydmljZSB3aXRoIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlLiAyNC83IGF2YWlsYWJpbGl0eSBhbmQgc3VwcG9ydC4gPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMzBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDY1ZGVnKSByb3RhdGVZKDApIHJvdGF0ZVoobnVsbCkgc2tldygwLCAwKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoNjVkZWcpIHJvdGF0ZVkoMCkgcm90YXRlWihudWxsKSBza2V3KDAsIDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMzBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDY1ZGVnKSByb3RhdGVZKDApIHJvdGF0ZVoobnVsbCkgc2tldygwLCAwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMzBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDY1ZGVnKSByb3RhdGVZKDApIHJvdGF0ZVoobnVsbCkgc2tldygwLCAwKTt0cmFuc2Zvcm0tc3R5bGU6cHJlc2VydmUtM2Q7b3BhY2l0eTowIiBjbGFzcz0iYW5pbWF0ZS1vbi1sb2FkLTA0Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1idXR0b24taG9sZGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2NhbGVuZGx5LmNvbS9ib29vc3RlZGNvbS9kZW1vIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ1dHRvbiB3LWJ1dHRvbiI+Qm9vayBhIEZyZWUgRGVtbyBIZXJlPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Imhlcm8tc2VjdGlvbi1hcHAtaG9sZGVyIj4KICAgICAgICAgIDxkaXYgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMzBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDY1ZGVnKSByb3RhdGVZKDApIHJvdGF0ZVoobnVsbCkgc2tldygwLCAwKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCg2NWRlZykgcm90YXRlWSgwKSByb3RhdGVaKG51bGwpIHNrZXcoMCwgMCk7b3BhY2l0eTowO3RyYW5zZm9ybS1zdHlsZTpwcmVzZXJ2ZS0zZCIgY2xhc3M9Imhlcm8tc2VjdGlvbi1hcHAtY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uLXBob25lLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0FwcGxlLUlwaG9uZS0xNC1wcm8ucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9Imhlcm8tc2VjdGlvbi1waG9uZS1pbWFnZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uLXBob25lLXNjcmVlbnNob3QtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQXBwLVNjcmVlbnNob3QuanBnIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDc3dncsIChtYXgtd2lkdGg6IDk5MXB4KSAyNTJweCwgNDUwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQXBwLVNjcmVlbnNob3QtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0FwcC1TY3JlZW5zaG90LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9BcHAtU2NyZWVuc2hvdC1wLTEwODAuanBnIDEwODB3LCAvc3RhdGljL2ltYWdlcy9BcHAtU2NyZWVuc2hvdC5qcGcgMTE3OXciIGFsdD0iIiBjbGFzcz0iaGVyby1zZWN0aW9uLXBob25lLXNjcmVlbnNob3QtaW1hZ2UiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvY2hhdC1leGFtcGxlLnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSA4NXZ3LCAobWF4LXdpZHRoOiA5OTFweCkgMzMwcHgsIDU1MHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL2NoYXQtZXhhbXBsZS1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvY2hhdC1leGFtcGxlLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9jaGF0LWV4YW1wbGUucG5nIDkwNHciIGFsdD0iIiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im90aGVyLWNhcmRzLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2NhcmQtMS5wbmciIGxvYWRpbmc9ImxhenkiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvY2FyZC0xLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9jYXJkLTEucG5nIDc4OHciIGFsdD0iIiBzaXplcz0iKG1heC13aWR0aDogNzY3cHgpIDEwMHZ3LCAobWF4LXdpZHRoOiA5OTFweCkgMTAwcHgsIDE5MHB4IiBjbGFzcz0ib3RoZXItY2FyZC1pbWFnZSBfMDEiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9DYXJkLTA0LnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDc2N3B4KSAxMDB2dywgKG1heC13aWR0aDogOTkxcHgpIDEwMHB4LCAyMDBweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9DYXJkLTA0LXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9DYXJkLTA0LXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9DYXJkLTA0LnBuZyA4NDZ3IiBhbHQ9IiIgY2xhc3M9Im90aGVyLWNhcmQtaW1hZ2UgXzAyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d28tY2FyZHMtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy5wbmciIGxvYWRpbmc9ImxhenkiIHNpemVzPSIobWF4LXdpZHRoOiA3NjdweCkgMTAwdncsIChtYXgtd2lkdGg6IDk5MXB4KSAxNTBweCwgMjcwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9DYXJkLTAzLnBuZyAxMTM4dyIgYWx0PSIiIGNsYXNzPSJvdGhlci1jYXJkLWltYWdlIF8wMyI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1iYWNrZ3JvdW5kLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyIgbG9hZGluZz0ibGF6eSIgc3R5bGU9ImZpbHRlcjpzYXR1cmF0ZSgyMDAlKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDE5ZGVnKSBza2V3KDAsIDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApIHNjYWxlM2QoMSwgMSwgMSkgcm90YXRlWCgwKSByb3RhdGVZKDApIHJvdGF0ZVooMTlkZWcpIHNrZXcoMCwgMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDE5ZGVnKSBza2V3KDAsIDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDE5ZGVnKSBza2V3KDAsIDApO29wYWNpdHk6MCIgc2l6ZXM9IjEwMHZ3IiBhbHQ9IiIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTUwMC5qcGcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC04MDAuanBnIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtMTA4MC5qcGcgMTA4MHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyAxMzAwdyIgY2xhc3M9Imhlcm8tYmFja2dyb3VuZCI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZS1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgIDxoMiBjbGFzcz0iaDMtdGl0bGUiPkV4Y2VsbGVudCByZXZpZXdzPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmYWRlLWluLW9uLXNjcm9sbCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLXBhcmFncmFwaC1ob2xkZXIiPgogICAgICAgICAgICA8cD5Db21wYW5pZXMgcmVwb3J0IHNhdmluZyB0aW1lIGFuZCBtb25leSB3aXRoIG91ciBwcm9kdWN0PC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLWxvZ29zLWhvbGRlciI+CiAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3Mtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcy1jb250YWluZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGF1c19fMV8tcmVtb3ZlYmctcHJldmlldy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9tb3RvcnNwYWNlLWxvZ28ucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IihtYXgtd2lkdGg6IDc2N3B4KSAxMDBweCwgKG1heC13aWR0aDogMTQzOXB4KSAxMzBweCwgMjl2dyIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9tb3RvcnNwYWNlLWxvZ28tcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL21vdG9yc3BhY2UtbG9nby5wbmcgNjE5dyIgY2xhc3M9InJldmlld3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLWxvZ29zIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbG9nby0yLjAtMzAweDEyNC1yZW1vdmViZy1wcmV2aWV3LnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGF1cy1yZW1vdmViZy1wcmV2aWV3LnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1NUTF9sb2dvX3NpbmluZW5fcmdiLmpwZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGF1cy0yLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1RlaHR5U3VvbU1hZGVJbl9TaW5fcmdiLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL09tYXdhdHRpLWxvZ28tMS10dW1tYWxsZS0wMS5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9tZWRvX295X2xvZ28tcmVtb3ZlYmctcHJldmlldy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3Mtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcy1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9sYXRhdXNfXzFfLXJlbW92ZWJnLXByZXZpZXcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9InJldmlld3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLWxvZ29zIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbW90b3JzcGFjZS1sb2dvLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSIobWF4LXdpZHRoOiA3NjdweCkgMTAwcHgsIChtYXgtd2lkdGg6IDE0MzlweCkgMTMwcHgsIDI5dnciIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvbW90b3JzcGFjZS1sb2dvLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9tb3RvcnNwYWNlLWxvZ28ucG5nIDYxOXciIGNsYXNzPSJyZXZpZXdzLWxvZ28taW1hZ2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icmV2aWV3cy1sb2dvcyI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xvZ28tMi4wLTMwMHgxMjQtcmVtb3ZlYmctcHJldmlldy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9sYXRhdXMtcmVtb3ZlYmctcHJldmlldy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9TVExfbG9nb19zaW5pbmVuX3JnYi5qcGciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9sYXRhdXMtMi5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9UZWh0eVN1b21NYWRlSW5fU2luX3JnYi5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0icmV2aWV3cy1sb2dvLWltYWdlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InJldmlld3MtbG9nb3MiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9PbWF3YXR0aS1sb2dvLTEtdHVtbWFsbGUtMDEucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9InJldmlld3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXZpZXdzLWxvZ29zIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbWVkb19veV9sb2dvLXJlbW92ZWJnLXByZXZpZXcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9InJldmlld3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBpZD0iRmVhdHVyZXMiIGNsYXNzPSJzZWN0aW9uIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlLWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXMtdGl0bGUtaG9sZGVyIj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+V2h5IGNob29zZSB1cz88L2gxPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmV0YXVyZXMtcGFyYWdyYXBoLWhvbGRlciI+CiAgICAgICAgICAgIDxwPk91ciBwbGF0Zm9ybSBvZmZlcnMgYSByYW5nZSBvZiBwb3dlcmZ1bCBmZWF0dXJlcyBkZXNpZ25lZCB0byBlbGV2YXRlIHlvdXIgZXhwZXJpZW5jZS48L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVkLWNhcmRzLWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXMtY2FyZC1jb250YWluZXIiPgogICAgICAgICAgPGRpdiBpZD0idy1ub2RlLWE3ZDhiZTRjLWJjMDQtMTI1OC04OTZkLTMzOGZjOGQzOWNjMi0zZmY0ZGMxNiIgZGF0YS13LWlkPSJhN2Q4YmU0Yy1iYzA0LTEyNTgtODk2ZC0zMzhmYzhkMzljYzIiIHN0eWxlPSJvcGFjaXR5OjAiIGNsYXNzPSJmZWF0dXJlcy1jYXJkLWltYWdlLWhvbGRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzLWNhcmQtaW1hZ2UtY29udGFpbmVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQuanBnIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDk0dncsIChtYXgtd2lkdGg6IDc2N3B4KSAxMDB2dywgKG1heC13aWR0aDogOTkxcHgpIDU5dncsIChtYXgtd2lkdGg6IDE0MzlweCkgNjB2dywgODE2cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTEwODAuanBnIDEwODB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC5qcGcgMTMwMHciIGFsdD0iIiBjbGFzcz0iZmVhdHVyZWQtY2FyZC1iYWNrZ3JvdW5kLWlhbWdlIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvY2hhdC1leGFtcGxlLTMucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImZlYXR1cmVkLWNhcmQtaW1hZ2UiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZ3JhZGllbnQiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC10aXRsZS1ob2xkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtdGl0bGUiPkhhbmRsZSBjb21wbGV4IHRhc2tzPC9kaXY+CiAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyZXktdGV4dCI+QXV0b21hdGUgY29tcGxleCBxdWVyaWVzLiBDb252ZXJ0IHZpc2l0b3JzIHRvIGN1c3RvbWVycyB3aXRoIDI0LzcgYXZhaWxhYmlsaXR5IGFuZCBzdXBwb3J0PC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBpZD0idy1ub2RlLWQ4Y2U2ZTM5LWNiMTQtNTliNS01MWMxLTEzYTYyMmJhNDkzYy0zZmY0ZGMxNiIgZGF0YS13LWlkPSJkOGNlNmUzOS1jYjE0LTU5YjUtNTFjMS0xM2E2MjJiYTQ5M2MiIHN0eWxlPSJvcGFjaXR5OjAiIGNsYXNzPSJmZWF0dXJlcy1jYXJkLWltYWdlLWhvbGRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVzLWNhcmQtaW1hZ2UtY29udGFpbmVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQuanBnIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDk0dncsIChtYXgtd2lkdGg6IDc2N3B4KSAxMDB2dywgKG1heC13aWR0aDogOTkxcHgpIDU5dncsIChtYXgtd2lkdGg6IDE0MzlweCkgNjB2dywgODE2cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTEwODAuanBnIDEwODB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC5qcGcgMTMwMHciIGFsdD0iIiBjbGFzcz0iZmVhdHVyZWQtY2FyZC1iYWNrZ3JvdW5kLWlhbWdlIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvY2hhdC1leGFtcGxlLTQucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImZlYXR1cmVkLWNhcmQtaW1hZ2UiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZ3JhZGllbnQiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC10aXRsZS1ob2xkZXIiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtdGl0bGUiPkh1bWFuLWxpa2UgYW5zd2VyczwvZGl2PgogICAgICAgICAgICAgIDxwIGNsYXNzPSJncmV5LXRleHQiPldpdGggbmV3IEFpIHRlY2hub2xvZ3ksIHlvdSBjYW4gaGF2ZSBodW1hbi1saWtlIGN1c3RvbWVyIHNlcnZpY2UsIHdpdGhvdXQgdGhlIG5lZWQgb2YgYSBodW1hbiBhc3NpZ25lZCBmb3IgdGhhdCByb2xlLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1fMTAzNDdhMjMtYjdlOS1jMWRlLTNjZDQtYmYxODUzYjg2MTdlLTNmZjRkYzE2IiBkYXRhLXctaWQ9IjEwMzQ3YTIzLWI3ZTktYzFkZS0zY2Q0LWJmMTg1M2I4NjE3ZSIgc3R5bGU9Im9wYWNpdHk6MCIgY2xhc3M9ImZlYXR1cmVzLWNhcmQtaW1hZ2UtaG9sZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZXMtY2FyZC1pbWFnZS1jb250YWluZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC5qcGciIGxvYWRpbmc9ImxhenkiIHNpemVzPSIobWF4LXdpZHRoOiA0NzlweCkgOTR2dywgKG1heC13aWR0aDogNzY3cHgpIDEwMHZ3LCAobWF4LXdpZHRoOiA5OTFweCkgNTl2dywgKG1heC13aWR0aDogMTQzOXB4KSA2MHZ3LCA4MTZweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTUwMC5qcGcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC04MDAuanBnIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtMTA4MC5qcGcgMTA4MHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyAxMzAwdyIgYWx0PSIiIGNsYXNzPSJmZWF0dXJlZC1jYXJkLWJhY2tncm91bmQtaWFtZ2UiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9jaGF0LWV4YW1wbGUtNi5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0iZmVhdHVyZWQtY2FyZC1pbWFnZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1ncmFkaWVudCI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLXRpdGxlLWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC10aXRsZSI+NTArIGxhbmd1YWdlczwvZGl2PgogICAgICAgICAgICAgIDxwIGNsYXNzPSJncmV5LXRleHQiPlByb3ZpZGUgY3VzdG9tZXIgc2VydmljZSB0byBldmVyeSBzZWdtZW50IG9mIHlvdXIgdmlzaXRvcnMsIHdpdGggemVybyBsYW5ndWFnZSBiYXJyaWVyLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGlkPSJQb3dlciIgY2xhc3M9InNlY3Rpb24iPgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0idGl0bGUtaG9sZGVyIHhsLXBhZGRpbmciPgogICAgICAgIDxkaXYgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgIDxoMSBjbGFzcz0idGl0bGUiPkRpc2NvdmVyIHRoZSBQb3dlciBvZiBBaTwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmV0YXVyZXMtcGFyYWdyYXBoLWhvbGRlciI+CiAgICAgICAgICAgIDxwPjI0LzcgYXZhaWxhYmlsaXR5IGFuZCBzdXBwb3J0PC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXNlY3Rpb24taG9sZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXNlY3Rpb24tY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1jZmEwODM0MS05YTFhLWVhZTAtOWYxNS0zOTc5NzdhNzg5NmEtM2ZmNGRjMTYiIGNsYXNzPSJkZXBsb3lpbmctYXBwLWNvbnRlbnQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXRpdGxlLWhvbGRlciI+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+U2F2ZSB1cCB0byA4MCUgb2YgY29zdHM8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wYXJhZ3JhcGgtaG9sZGVyIj4KICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JleS10ZXh0Ij5Db21wYW5pZXMgcmVwb3J0IHNhdmluZyB1cCB0byA4MCUgb2YgdGhlaXIgY3VzdG9tZXIgc2VydmljZSBjb3N0cyEgT24gYXZlcmFnZSwgY29tcGFuaWVzIHNhdmUgMjAtNDAlIG9mIGN1c3RvbWVyIHNlcnZpY2UgY29zdHMsIGFuZCBoYXZlIGEgbWFqb3IgaW5jcmVhc2UgaW4gY3VzdG9tZXIgc2F0aXNmYWN0aW9uLjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXRzLWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBkYXRhLXctaWQ9IjYxYzM4ZDU4LTVkZGUtNTBkMi1hMjAwLThlZmVjY2I3MjYzOCIgc3R5bGU9Im9wYWNpdHk6MCIgY2xhc3M9InN0YXRzLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwdXJwbGUtdGV4dCI+NDM54oKsIE1pbGxpb248L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyZXktcGFyYWdyYXBoIj5SZXBvcnRlZCBjb3N0IGN1dHRpbmcgYnkgY2hhdGJvdHMgaW4gdGhlIHJldGFpbCBzZWN0b3IgaW4gMjAyMy48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGRhdGEtdy1pZD0iNjFjMzhkNTgtNWRkZS01MGQyLWEyMDAtOGVmZWNjYjcyNjNkIiBzdHlsZT0ib3BhY2l0eTowIiBjbGFzcz0ic3RhdHMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB1cnBsZS10ZXh0Ij4yMC00MCU8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyZXktcGFyYWdyYXBoIj5BdmVyYWdlIGN1c3RvbWVyIHNlcnZpY2UgY29zdCByZWR1Y3Rpb24gYnkgY29tcGFuaWVzLjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBpZD0idy1ub2RlLWQ4NzJmYTRiLWNlOTAtZDc2Mi05YzA1LTRmN2FiNWUyMDZmNC0zZmY0ZGMxNiIgY2xhc3M9ImRlcGxveWluZy1hcHAtaW1hZ2VzLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDk5MXB4KSAxMDB2dywgKG1heC13aWR0aDogMTQzOXB4KSA2MHZ3LCA4MTYuNTYyNXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtNTAwLmpwZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTgwMC5qcGcgODAwdywgL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC0xMDgwLmpwZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQuanBnIDEzMDB3IiBhbHQ9IiIgY2xhc3M9ImRlcGxveWluZy1hcHAtYmciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXNjcmVlbnNob3QtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQWN0aW9uLXNoZWV0LTA1LnBuZyIgbG9hZGluZz0iZWFnZXIiIGFsdD0iIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1zY3JlZW5zaG90Ij48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImRlcGxveWluZy1hcHAtc2VjdGlvbi1jb250YWluZXIgc2Vjb25kIj4KICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1fNDhiOTdkNzQtYzJjMC1iZGM5LWY4YTMtYzAzZWQxYzEyOGY5LTNmZjRkYzE2IiBjbGFzcz0iZGVwbG95aW5nLWFwcC1pbWFnZXMtaG9sZGVyIj48aW1nIHNyYz0iaW1hZ2VzL0JHLUdyYWRpZW50LmpwZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDk5MXB4KSAxMDB2dywgKG1heC13aWR0aDogMTQzOXB4KSA2MHZ3LCA4MTYuNTQ2ODc1cHgiIHNyY3NldD0iaW1hZ2VzL0JHLUdyYWRpZW50LXAtNTAwLmpwZyA1MDB3LCBpbWFnZXMvQkctR3JhZGllbnQtcC04MDAuanBnIDgwMHcsIGltYWdlcy9CRy1HcmFkaWVudC1wLTEwODAuanBnIDEwODB3LCBpbWFnZXMvQkctR3JhZGllbnQuanBnIDEzMDB3IiBhbHQ9IiIgY2xhc3M9ImRlcGxveWluZy1hcHAtYmciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXNjcmVlbnNob3QtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQWN0aW9uLXNoZWV0LTA2LnBuZyIgbG9hZGluZz0iZWFnZXIiIGFsdD0iIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1zY3JlZW5zaG90Ij48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1jb250ZW50Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC10aXRsZS1ob2xkZXIiPgogICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiPlRhaWxvcmVkIFNvbHV0aW9uczwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXBhcmFncmFwaC1ob2xkZXIiPgogICAgICAgICAgICAgIDxwIGNsYXNzPSJncmV5LXRleHQiPkV4cGVyaWVuY2UgdGhlIHBpbm5hY2xlIG9mIEFJLWRyaXZlbiBjdXN0b21lciBzZXJ2aWNlIHdpdGggQm9vb3N0ZWQuIE91ciBleHBlcnRseSBkZXNpZ25lZCBjaGF0Ym90cyBhcmUgdGFpbG9yZWQgdG8gdW5kZXJzdGFuZCBhbmQgcmVzcG9uZCB0byB5b3VyIGN1c3RvbWVyc+KAmSBuZWVkcywgcHJvdmlkaW5nIGEgbGV2ZWwgb2YgZW5nYWdlbWVudCBhbmQgc2F0aXNmYWN0aW9uIHRoYXQgc2V0cyB5b3VyIGJ1c2luZXNzIGFwYXJ0LjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY2FsZW5kbHkuY29tL2Jvb29zdGVkY29tL2RlbW8iIGNsYXNzPSJ3LWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1saW5rLWhvbGRlciI+CiAgICAgICAgICAgICAgICA8ZGl2PkJvb2sgYSBmcmVlIGRlbW8gb2YgdGhlIHByb2R1Y3Q8L2Rpdj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQXJyb3cuc3ZnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImFycm93LXJpZ2h0Ij4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmFkaWVudC1saW5lIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMiPgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1fOWYzZWM5MjAtNTNiYi0xZWI5LWFiZTQtZGQwNDIyM2IyYjYxLTNmZjRkYzE2IiBkYXRhLXctaWQ9IjlmM2VjOTIwLTUzYmItMWViOS1hYmU0LWRkMDQyMjNiMmI2MSIgc3R5bGU9Im9wYWNpdHk6MCIgY2xhc3M9ImRlcGxveWluZy1hcHAtcG9pbnRzLWhvbGRlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXBvaW50cy1pY29uLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1NtYWxsLUljb24tMDEuc3ZnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImRlcGxveWluZy1hcHAtcG9pbnRzLWljb24iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludCI+PHNwYW4gY2xhc3M9ImRlcGxveWluZy1jb2xvciI+QXV0b21hdGUgeW91ciBjdXN0b21lciBzZXJ2aWNlLiA8L3NwYW4+U2F2ZSB0aW1lIGFuZCBtb25leSwgYnkgYXV0b21hdGluZyB5b3VyIGN1c3RvbWVyIHNlcnZpY2UgdXRpbGl6aW5nIEJvb29zdGVkIEFpLjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1iNDQwMjY5Mi01YTY0LTI5OWItNzNkZi0zOTM1OTZhNWJiYWUtM2ZmNGRjMTYiIGRhdGEtdy1pZD0iYjQ0MDI2OTItNWE2NC0yOTliLTczZGYtMzkzNTk2YTViYmFlIiBzdHlsZT0ib3BhY2l0eTowIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMtaG9sZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlcGxveWluZy1hcHAtcG9pbnRzLWljb24taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvU21hbGwtSWNvbi0wMy5zdmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMtaWNvbiI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXBvaW50Ij48c3BhbiBjbGFzcz0iZGVwbG95aW5nLWNvbG9yIj5HYXRoZXIgbGVhZHMuIDwvc3Bhbj5HYXRoZXIgbGVhZHMgYW5kIGNvbnZlcnQgeW91ciB2aXNpdG9ycyB0byBjdXN0b21lcnMgd2l0aCBCb29vc3RlZDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1jMThhODI0Mi1mZmRmLTY1MDgtZWIzYS0wNWVkN2Y2NDU5NTYtM2ZmNGRjMTYiIGRhdGEtdy1pZD0iYzE4YTgyNDItZmZkZi02NTA4LWViM2EtMDVlZDdmNjQ1OTU2IiBzdHlsZT0ib3BhY2l0eTowIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMtaG9sZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlcGxveWluZy1hcHAtcG9pbnRzLWljb24taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvU21hbGwtSWNvbi0wMi5zdmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0iZGVwbG95aW5nLWFwcC1wb2ludHMtaWNvbiI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXBsb3lpbmctYXBwLXBvaW50Ij48c3BhbiBjbGFzcz0iZGVwbG95aW5nLWNvbG9yIj5CZWF1dGlmdWwgRGFzaGJvYXJkcy4gPC9zcGFuPk1hbmFnZSBjdXN0b21pemUgeW91ciBjaGF0Ym90IHdpdGggZWFzZS48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGlkPSJFeHBlcmllbmNlIiBjbGFzcz0ic2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZS1ob2xkZXIgeGwtcGFkZGluZyI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+U2VhbWxlc3MgRXhwZXJpZW5jZTwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmV0YXVyZXMtcGFyYWdyYXBoLWhvbGRlciI+CiAgICAgICAgICAgIDxwPk91ciB0b3AgZmVhdHVyZXMgYXJlIGRlc2lnbmVkIHRvIHByb3ZpZGUgeW91IHdpdGggYSBzZWFtbGVzcyBleHBlcmllbmNlIGFuZCBtYWtlIHlvdXIgY3VzdG9tZXIgc2VydmljZSBhcyBlYXN5IGFzIHBvc3NpYmxlLjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idGFiLWhvbGRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0idGFiLWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IGRhdGEtY3VycmVudD0iVGFiIDUiIGRhdGEtZWFzaW5nPSJlYXNlIiBkYXRhLWR1cmF0aW9uLWluPSIzMDAiIGRhdGEtZHVyYXRpb24tb3V0PSIxMDAiIGNsYXNzPSJ3LXRhYnMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJzLW1lbnUgdy10YWItbWVudSI+CiAgICAgICAgICAgICAgPGEgZGF0YS13LXRhYj0iVGFiIDEiIGNsYXNzPSJ0YWItbGluayB3LWlubGluZS1ibG9jayB3LXRhYi1saW5rIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLWhvbGRlciI+PGltZyBsb2FkaW5nPSJsYXp5IiBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0Nvbm5lY3QtSWNvbi5zdmciIGFsdD0iIiBjbGFzcz0idGFiLWxpbmstaWNvbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLXRleHQiPjxzcGFuIGNsYXNzPSJsaWdodC1jb2xvciI+QWRkIHlvdXIgd2Vic2l0ZSB1cmw8YnI+PC9zcGFuPlBsYWNlIHVybCBhbmQgbGV0IEFpPGJyPmRvIHRoZSByZXN0PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgPGEgZGF0YS13LXRhYj0iVGFiIDMiIGNsYXNzPSJ0YWItbGluayB3LWlubGluZS1ibG9jayB3LXRhYi1saW5rIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLWhvbGRlciI+PGltZyBsb2FkaW5nPSJsYXp5IiBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1NtYWxsLUljb24tMDEuc3ZnIiBhbHQ9IiIgY2xhc3M9InRhYi1saW5rLWljb24iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItbGluay10ZXh0Ij48c3BhbiBjbGFzcz0ibGlnaHQtY29sb3IiPkFkZCBQREYgZmlsZXM8YnI+PC9zcGFuPkFkZCBhZGRpdGlvbmFsIGZpbGVzIHdpdGggZWFzZTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgIDxhIGRhdGEtdy10YWI9IlRhYiA0IiBjbGFzcz0idGFiLWxpbmsgdy1pbmxpbmUtYmxvY2sgdy10YWItbGluayI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItbGluay1ob2xkZXIiPjxpbWcgbG9hZGluZz0ibGF6eSIgc3JjPSIvc3RhdGljL2ltYWdlcy9aYXAtSWNvbi5zdmciIGFsdD0iIiBjbGFzcz0idGFiLWxpbmstaWNvbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLXRleHQiPjxzcGFuIGNsYXNzPSJsaWdodC1jb2xvciI+SW5zdGFsbCB0aGUgY2hhdGJvdCA8YnI+PC9zcGFuPkVhc2lseSBwbGFjZSB0aGUgY2hhdGJvdCBvbiB5b3VyIHBhZ2Ugd2l0aCBodG1sLWNvZGUgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgPGEgZGF0YS13LXRhYj0iVGFiIDUiIGNsYXNzPSJ0YWItbGluayB3LWlubGluZS1ibG9jayB3LXRhYi1saW5rIHctLWN1cnJlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiLWxpbmstaG9sZGVyIj48aW1nIGxvYWRpbmc9ImxhenkiIHNyYz0iL3N0YXRpYy9pbWFnZXMvU2hhcmUtSWNvbi5zdmciIGFsdD0iIiBjbGFzcz0idGFiLWxpbmstaWNvbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1saW5rLXRleHQiPjxzcGFuIGNsYXNzPSJsaWdodC1jb2xvciI+Q3VzdG9taXplPGJyPjwvc3Bhbj5TYXZlIHRpbWUgd2l0aCBmYXN0IGN1c3RvbWl6YXRpb248L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYnMtY29udGVudCB3LXRhYi1jb250ZW50Ij4KICAgICAgICAgICAgICA8ZGl2IGRhdGEtdy10YWI9IlRhYiAxIiBjbGFzcz0idGFiLXBhbmUtdGFiLTEgdy10YWItcGFuZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItcGFuZS1ob2xkZXIgdGFiLXBhbmUtdGFiLTEiPjxpbWcgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSA5NHZ3LCAobWF4LXdpZHRoOiA3NjdweCkgOTN2dywgKG1heC13aWR0aDogOTkxcHgpIDk0dncsIChtYXgtd2lkdGg6IDE0MzlweCkgOTV2dywgMTI4NHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXAxLWFkZGluZy11cmwtcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL3N0ZXAxLWFkZGluZy11cmwtcC04MDAucG5nIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL3N0ZXAxLWFkZGluZy11cmwtcC0xMDgwLnBuZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDEtYWRkaW5nLXVybC5wbmcgMTMwMHciIGFsdD0iIiBzcmM9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXAxLWFkZGluZy11cmwucG5nIiBsb2FkaW5nPSJlYWdlciIgY2xhc3M9InRhYi1wYW5lLWltYWdlIj48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGRhdGEtdy10YWI9IlRhYiAzIiBjbGFzcz0idGFiLXBhbmUtdGFiLTEgdy10YWItcGFuZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItcGFuZS1ob2xkZXIgdGFiLXBhbmUtdGFiLTEiPjxpbWcgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSA5NHZ3LCAobWF4LXdpZHRoOiA3NjdweCkgOTN2dywgKG1heC13aWR0aDogOTkxcHgpIDk0dncsIChtYXgtd2lkdGg6IDE0MzlweCkgOTV2dywgMTI4NHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXAyLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9zdGVwMi1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDItcC0xMDgwLnBuZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDIucG5nIDEzMDB3IiBhbHQ9IiIgc3JjPSIvc3RhdGljL2ltYWdlcy9zdGVwMi5wbmciIGxvYWRpbmc9ImVhZ2VyIiBjbGFzcz0idGFiLXBhbmUtaW1hZ2UiPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgZGF0YS13LXRhYj0iVGFiIDQiIGNsYXNzPSJ3LXRhYi1wYW5lIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1wYW5lLWhvbGRlciB0YWItcGFuZS10YWItMSI+PGltZyBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDk0dncsIChtYXgtd2lkdGg6IDc2N3B4KSA5M3Z3LCAobWF4LXdpZHRoOiA5OTFweCkgOTR2dywgKG1heC13aWR0aDogMTQzOXB4KSA5NXZ3LCAxMjg0cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvc3RlcDMtcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL3N0ZXAzLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9zdGVwMy1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9zdGVwMy5wbmcgMTMwMHciIGFsdD0iIiBzcmM9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXAzLnBuZyIgbG9hZGluZz0iZWFnZXIiIGNsYXNzPSJ0YWItcGFuZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBkYXRhLXctdGFiPSJUYWIgNSIgY2xhc3M9InctdGFiLXBhbmUgdy0tdGFiLWFjdGl2ZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWItcGFuZS1ob2xkZXIgdGFiLXBhbmUtdGFiLTEiPjxpbWcgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSA5NHZ3LCAobWF4LXdpZHRoOiA3NjdweCkgOTN2dywgKG1heC13aWR0aDogOTkxcHgpIDk0dncsIChtYXgtd2lkdGg6IDE0MzlweCkgOTV2dywgMTI4NHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL3N0ZXA0LXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9zdGVwNC1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDQtcC0xMDgwLnBuZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvc3RlcDQucG5nIDEzMDB3IiBhbHQ9IiIgc3JjPSIvc3RhdGljL2ltYWdlcy9zdGVwNC5wbmciIGxvYWRpbmc9ImVhZ2VyIiBjbGFzcz0idGFiLXBhbmUtaW1hZ2UiPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgaWQ9IkdldC1TdGFydGVkIiBjbGFzcz0ic2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZS1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlLXdyYXBwZXIiPgogICAgICAgICAgICA8aDEgY2xhc3M9InRpdGxlIj5TdGFydCBTYXZpbmcgVG9kYXk8L2gxPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZmV0YXVyZXMtcGFyYWdyYXBoLWhvbGRlciI+CiAgICAgICAgICAgIDxwPkFyZSB5b3UgcmVhZHkgdG8gc3RlcCBpbnRvIHRoZSBmdXR1cmUgYnkgZGVwbG95aW5nIGEgZ3JvdW5kYnJlYWtpbmcgY3VzdG9tZXIgc2VydmljZSBib3Q/IFNjaGVkdWxlIGEgZGVtbyBhbmQgYmUgYW1hemVkIGJ5IHRoZSBvcHBvcnR1bml0aWVzIGJyb3VnaHQgYnkgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UuPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJiZXN0LXRoaW5ncy1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImJlc3QtdGhpbmdzLWNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJiZXN0LXRoaW5ncy1ncmlkIj4KICAgICAgICAgICAgPGRpdiBpZD0idy1ub2RlLWQ2MmY5MzA3LTc3MGItYzNhOS1iN2MzLTUxZTY3OTk0ZDhkZC0zZmY0ZGMxNiIgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzM5YmM4ZmRiLTUwMTEtYTUwYi00ZDEwLTk4ZDNjMDE0NWFkNy0zZmY0ZGMxNiIgY2xhc3M9ImJlc3QtdGhpbmctYm94LWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xvZ28tY29sb3IucG5nIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDIxOHB4LCAobWF4LXdpZHRoOiA3NjdweCkgNjN2dywgKG1heC13aWR0aDogOTkxcHgpIDQ1dncsIDMwMHB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL2xvZ28tY29sb3ItcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL2xvZ28tY29sb3IucG5nIDY4MHciIGFsdD0iIiBjbGFzcz0iYmVzdC10aGluZ3MtbG9nby1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzEyNjI4ZDllLTk5ZjAtMTkzYi1mODQ5LTRlN2RiN2MwMmFjZi0zZmY0ZGMxNiIgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzE0OTcyNmIzLTFlMTctMmU3Yi0zZGQ2LTUzM2UxZmY1NjFjMS0zZmY0ZGMxNiIgY2xhc3M9ImJlc3QtdGhpbmctYm94LWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1NtYWxsLUljb24tMDIuc3ZnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImJlc3QtdGhpbmctaWNvbiI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzFkNDk1NmYxLTQzOWItNmRjZS1mZWY2LTk5Nzg2NjIzMWY0NC0zZmY0ZGMxNiIgY2xhc3M9ImZhZGUtaW4tb24tc2Nyb2xsIj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtZDM1NzM4MWItMmE3Yi1jYTJiLTE0NWUtNTZmOGQwYWE3NDg3LTNmZjRkYzE2IiBjbGFzcz0iYmVzdC10aGluZy1ib3gtaG9sZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJlc3QtdGhpbmctc2xpZGVyLWhvbGRlciI+CiAgICAgICAgICAgICAgICAgIDxkaXYgZGF0YS1kZWxheT0iMzAwMCIgZGF0YS1hbmltYXRpb249InNsaWRlIiBjbGFzcz0ic2xpZGVyIHNsaWRlIHctc2xpZGVyIiBkYXRhLWF1dG9wbGF5PSJ0cnVlIiBkYXRhLWVhc2luZz0iZWFzZSIgZGF0YS1oaWRlLWFycm93cz0iZmFsc2UiIGRhdGEtZGlzYWJsZS1zd2lwZT0iZmFsc2UiIGRhdGEtYXV0b3BsYXktbGltaXQ9IjAiIGRhdGEtbmF2LXNwYWNpbmc9IjMiIGRhdGEtZHVyYXRpb249IjUwMCIgZGF0YS1pbmZpbml0ZT0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFzayB3LXNsaWRlci1tYXNrIj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9DYXJkLTA0LnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC5wbmcgODQ2dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9DYXJkLTAzLnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMy1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9DYXJkLTAzLnBuZyAxMTM4dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9DYXJkLTAyLnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMi1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMi1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wMi5wbmcgODQ2dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9jYXJkLTEucG5nIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iKG1heC13aWR0aDogNDc5cHgpIDE1MHB4LCAyMDBweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9jYXJkLTEtcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL2NhcmQtMS5wbmcgNzg4dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlIHctc2xpZGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZS1pbWFnZS1ob2xkZXIiPjxpbWcgc3JjPSJpbWFnZXMvQWN0aW9uLXNoZWV0LTA2LnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQWN0aW9uLXNoZWV0LTA2LXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9BY3Rpb24tc2hlZXQtMDYtcC04MDAucG5nIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL0FjdGlvbi1zaGVldC0wNi1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9BY3Rpb24tc2hlZXQtMDYucG5nIDEyNDJ3IiBhbHQ9IiIgY2xhc3M9InNsaWRlLWltYWdlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGUgdy1zbGlkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlLWltYWdlLWhvbGRlciI+PGltZyBzcmM9ImltYWdlcy9DYXJkLTA0LnBuZyIgbG9hZGluZz0ibGF6eSIgc2l6ZXM9IihtYXgtd2lkdGg6IDQ3OXB4KSAxNTBweCwgMjAwcHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvQ2FyZC0wNC5wbmcgODQ2dyIgYWx0PSIiIGNsYXNzPSJzbGlkZS1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoaWRlIHctc2xpZGVyLWFycm93LWxlZnQiPgogICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1pY29uLXNsaWRlci1sZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoaWRlIHctc2xpZGVyLWFycm93LXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctaWNvbi1zbGlkZXItcmlnaHQiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhpZGUgdy1zbGlkZXItbmF2IHctcm91bmQgdy1udW0iPjwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdj5NYW55IEJlbmVmaXRzPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1fOTU3Mjc4ZjEtYzcxYS1lNjFhLThmOTItZWFkMTNlOTFmNTdkLTNmZjRkYzE2IiBjbGFzcz0iZmFkZS1pbi1vbi1zY3JvbGwiPgogICAgICAgICAgICA8ZGl2IGlkPSJ3LW5vZGUtXzUzODFlZmVjLTE5NTMtMzc1My1jMjI1LTEyMGQyMGU4YTFiNS0zZmY0ZGMxNiIgY2xhc3M9ImJlc3QtdGhpbmctYm94LWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmVzdC10aGluZy1hcHAtaG9sZGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhhbmQtaW1hZ2UtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvUGhvbmUtQm9yZGVyLWV4YW1wbGUucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImhhbmQtaW1hZ2UiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY3JlZW4taW1hZ2UtaG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQXBwLXNob3djYXNlLS1JbWFnZS5qcGciIGxvYWRpbmc9ImxhenkiIHNpemVzPSIobWF4LXdpZHRoOiA0NzlweCkgNDJ2dywgKG1heC13aWR0aDogMTQzOXB4KSAyMTAuNzE4NzVweCwgMjI1LjQyMTg3NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL0FwcC1zaG93Y2FzZS0tSW1hZ2UtcC01MDAuanBnIDUwMHcsIHgvc3RhdGljL2ltYWdlcy9BcHAtc2hvd2Nhc2UtLUltYWdlLXAtNTAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9BcHAtc2hvd2Nhc2UtLUltYWdlLmpwZyA5ODB3IiBhbHQ9IiIgY2xhc3M9InNjcmVlbi1pbWFnZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNob3djYXNlLXRleHQiPlVuaWZpZWQgY3Jvc3MtcGxhdGZvcm0gZXhwZXJpZW5jZTwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgZGF0YS13LWlkPSJlZDViZjAyYS1jYjMxLWQ3ZTEtMTBhMS0zMjJjZmEzZTgxMGUiIHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAyMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDApIHNrZXcoMCwgMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMjBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDApIHJvdGF0ZVkoMCkgcm90YXRlWigwKSBza2V3KDAsIDApOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMjBweCwgMCkgc2NhbGUzZCgxLCAxLCAxKSByb3RhdGVYKDApIHJvdGF0ZVkoMCkgcm90YXRlWigwKSBza2V3KDAsIDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAyMHB4LCAwKSBzY2FsZTNkKDEsIDEsIDEpIHJvdGF0ZVgoMCkgcm90YXRlWSgwKSByb3RhdGVaKDApIHNrZXcoMCwgMCk7b3BhY2l0eTowIiBjbGFzcz0iYmVzdC10aGluZ3MtZm9vdGVyLWdyaWQiPgogICAgICAgICAgPGRpdiBpZD0idy1ub2RlLV8yOTA0MGE1OC1lOTQ0LWVkZjktYmM2MC1kYjhhMGJkYjMwNzgtM2ZmNGRjMTYiIGNsYXNzPSJsb2dvcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLXdyYXBwZXIgXzAxIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9XZWJmbG93LUxvZ28tR3JhZGllbnQuanBnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvV2ViZmxvdy1Mb2dvLUdyYWRpZW50LXAtNTAwLmpwZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9XZWJmbG93LUxvZ28tR3JhZGllbnQuanBnIDY4MHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmcucG5nIDEwMjR3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9TaG9waWZ5LndlYnAiIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9TaG9waWZ5LXAtNTAwLndlYnAgNTAwdywgaW1hZ2VzL1Nob3BpZnktcC04MDAud2VicCA4MDB3LCBpbWFnZXMvU2hvcGlmeS1wLTEwODAud2VicCAxMDgwdywgaW1hZ2VzL1Nob3BpZnktcC0xNjAwLndlYnAgMTYwMHcsIGltYWdlcy9TaG9waWZ5LndlYnAgMjAwMHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL3dpeC1sb2dvLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL3dpeC1sb2dvLXAtNTAwLnBuZyA1MDB3LCAvc3RhdGljL2ltYWdlcy93aXgtbG9nby5wbmcgNTEydyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvaTNnOTRtczZ0bm93aG1ya2l1dm8ud2VicCIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL2kzZzk0bXM2dG5vd2htcmtpdXZvLXAtNTAwLndlYnAgNTAwdywgL3N0YXRpYy9pbWFnZXMvaTNnOTRtczZ0bm93aG1ya2l1dm8tcC04MDAud2VicCA4MDB3LCAvc3RhdGljL2ltYWdlcy9pM2c5NG1zNnRub3dobXJraXV2by53ZWJwIDEwMDB3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9QaXhwYV9Mb2dvLmpwZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGFhLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24td3JhcHBlciBfMDEiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC5qcGciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9XZWJmbG93LUxvZ28tR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC5qcGcgNjgwdyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmctcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy5wbmcgMTAyNHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1Nob3BpZnkud2VicCIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL1Nob3BpZnktcC01MDAud2VicCA1MDB3LCBpbWFnZXMvU2hvcGlmeS1wLTgwMC53ZWJwIDgwMHcsIGltYWdlcy9TaG9waWZ5LXAtMTA4MC53ZWJwIDEwODB3LCBpbWFnZXMvU2hvcGlmeS1wLTE2MDAud2VicCAxNjAwdywgaW1hZ2VzL1Nob3BpZnkud2VicCAyMDAwdyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvd2l4LWxvZ28ucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvd2l4LWxvZ28tcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL3dpeC1sb2dvLnBuZyA1MTJ3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9pM2c5NG1zNnRub3dobXJraXV2by53ZWJwIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvaTNnOTRtczZ0bm93aG1ya2l1dm8tcC01MDAud2VicCA1MDB3LCAvc3RhdGljL2ltYWdlcy9pM2c5NG1zNnRub3dobXJraXV2by1wLTgwMC53ZWJwIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL2kzZzk0bXM2dG5vd2htcmtpdXZvLndlYnAgMTAwMHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1BpeHBhX0xvZ28uanBnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbGF0YWEucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi13cmFwcGVyIF8wMiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvZ29vZ2xlLXNpdGVzMzc4OC5qcGciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9nb29nbGUtc2l0ZXMzNzg4LXAtNTAwLmpwZyA1MDB3LCAvc3RhdGljL2ltYWdlcy9nb29nbGUtc2l0ZXMzNzg4LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9nb29nbGUtc2l0ZXMzNzg4LmpwZyA4NjZ3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9zcXVhcmVzcGFjZV9sb2dvX2ljb25fMTgxMjUyLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy1wLTgwMC5wbmcgODAwdywgL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy1wLTEwODAucG5nIDEwODB3LCAvc3RhdGljL2ltYWdlcy9Hb0RhZGR5X0xvZ29fLV9UaGVfR08uc3ZnLXAtMTYwMC5wbmcgMTYwMHcsIC9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmctcC0yMDAwLnBuZyAyMDAwdywgL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy5wbmcgMjI5OHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2Q2MDEyZjY3Njk5MmQ1MWExNDllMjRjOTcxY2I3M2FkLndlYnAiIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9kNjAxMmY2NzY5OTJkNTFhMTQ5ZTI0Yzk3MWNiNzNhZC1wLTUwMC53ZWJwIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL2Q2MDEyZjY3Njk5MmQ1MWExNDllMjRjOTcxY2I3M2FkLndlYnAgNjE1dyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvbGF0YWEucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvV2ViZmxvdy1Mb2dvLUdyYWRpZW50LmpwZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC1wLTUwMC5qcGcgNTAwdywgL3N0YXRpYy9pbWFnZXMvV2ViZmxvdy1Mb2dvLUdyYWRpZW50LmpwZyA2ODB3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy1wLTUwMC5wbmcgNTAwdywgL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmctcC04MDAucG5nIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLnBuZyAxMDI0dyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi13cmFwcGVyIF8wMiI+CiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2dvb2dsZS1zaXRlczM3ODguanBnIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvZ29vZ2xlLXNpdGVzMzc4OC1wLTUwMC5qcGcgNTAwdywgL3N0YXRpYy9pbWFnZXMvZ29vZ2xlLXNpdGVzMzc4OC1wLTgwMC5qcGcgODAwdywgL3N0YXRpYy9pbWFnZXMvZ29vZ2xlLXNpdGVzMzc4OC5qcGcgODY2dyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvc3F1YXJlc3BhY2VfbG9nb19pY29uXzE4MTI1Mi5wbmciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9Hb0RhZGR5X0xvZ29fLV9UaGVfR08uc3ZnLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIHNpemVzPSI2NXB4IiBzcmNzZXQ9Ii9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmctcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmctcC04MDAucG5nIDgwMHcsIC9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmctcC0xMDgwLnBuZyAxMDgwdywgL3N0YXRpYy9pbWFnZXMvR29EYWRkeV9Mb2dvXy1fVGhlX0dPLnN2Zy1wLTE2MDAucG5nIDE2MDB3LCAvc3RhdGljL2ltYWdlcy9Hb0RhZGR5X0xvZ29fLV9UaGVfR08uc3ZnLXAtMjAwMC5wbmcgMjAwMHcsIC9zdGF0aWMvaW1hZ2VzL0dvRGFkZHlfTG9nb18tX1RoZV9HTy5zdmcucG5nIDIyOTh3IiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nby1ob2xkZXIiPjxpbWcgc3JjPSIvc3RhdGljL2ltYWdlcy9kNjAxMmY2NzY5OTJkNTFhMTQ5ZTI0Yzk3MWNiNzNhZC53ZWJwIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvZDYwMTJmNjc2OTkyZDUxYTE0OWUyNGM5NzFjYjczYWQtcC01MDAud2VicCA1MDB3LCAvc3RhdGljL2ltYWdlcy9kNjAxMmY2NzY5OTJkNTFhMTQ5ZTI0Yzk3MWNiNzNhZC53ZWJwIDYxNXciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL2xhdGFhLnBuZyIgbG9hZGluZz0ibGF6eSIgYWx0PSIiIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pbnRlcmVjdGlvbi1sb2dvLWhvbGRlciI+PGltZyBzcmM9Ii9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC5qcGciIGxvYWRpbmc9ImxhenkiIGFsdD0iIiBzaXplcz0iNjVweCIgc3Jjc2V0PSIvc3RhdGljL2ltYWdlcy9XZWJmbG93LUxvZ28tR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL1dlYmZsb3ctTG9nby1HcmFkaWVudC5qcGcgNjgwdyIgY2xhc3M9ImxvZ28taW50ZXJlY3Rpb24tbG9nbyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28taG9sZGVyIj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmcucG5nIiBsb2FkaW5nPSJsYXp5IiBhbHQ9IiIgc2l6ZXM9IjY1cHgiIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvV29yZFByZXNzX2JsdWVfbG9nby5zdmctcC01MDAucG5nIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL1dvcmRQcmVzc19ibHVlX2xvZ28uc3ZnLXAtODAwLnBuZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9Xb3JkUHJlc3NfYmx1ZV9sb2dvLnN2Zy5wbmcgMTAyNHciIGNsYXNzPSJsb2dvLWludGVyZWN0aW9uLWxvZ28iPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvd2Nhc2UtdGV4dC1ub3JtYWwiPkNvbXBhdGlibGUgd2l0aCBtYW55IHBsYXRmb3JtczwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJmb290ZXItaG9sZGVyIj4KICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbnRhaW5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci13cmFwcGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbnRlbnQiPgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1lOTJiZjQ4NC1hNjA1LTQxMzItZjE0MS00NTE4NDY4YWY3ZTItNDY4YWY3ZDkiIGNsYXNzPSJmb290ZXItYmxvY2siPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUtc21hbGwiPkNvbXBhbnk8L2Rpdj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNQcm9kdWN0IiBjbGFzcz0iZm9vdGVyLWxpbmsiPlByb2R1Y3Q8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjRmVhdHVyZXMiIGNsYXNzPSJmb290ZXItbGluayI+RmVhdHVyZXM8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjUG93ZXIiIGNsYXNzPSJmb290ZXItbGluayI+UG93ZXI8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjRXhwZXJpZW5jZSIgY2xhc3M9ImZvb3Rlci1saW5rIj5FeHBlcmllbmNlPC9hPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1lOTJiZjQ4NC1hNjA1LTQxMzItZjE0MS00NTE4NDY4YWY3ZWYtNDY4YWY3ZDkiIGNsYXNzPSJmb290ZXItYmxvY2siPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUtc21hbGwiPlNvY2lhbCBtZWRpYTwvZGl2PgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvOTg5MDIwMTYvYWRtaW4vZmVlZC9wb3N0cy8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iZm9vdGVyLWxpbmsiPkxpbmtlZGluPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9ib29vc3RlZGNoYXQvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImZvb3Rlci1saW5rIj5JbnN0YWdyYW08L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vYm9vb3N0ZWRjb20iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iZm9vdGVyLWxpbmsiPkZhY2Vib29rPC9hPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Inctbm9kZS1lOTJiZjQ4NC1hNjA1LTQxMzItZjE0MS00NTE4NDY4YWY3ZmEtNDY4YWY3ZDkiIGNsYXNzPSJmb290ZXItYmxvY2siPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUtc21hbGwiPkFib3V0IHNlcnZpY2U8L2Rpdj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii90ZXJtLWNvbmRpdGlvbi8iIGNsYXNzPSJmb290ZXItbGluayI+VGVybXMgYW5kIGNvbmRpdGlvbnM8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJpdmFjeS1wb2xpY3kvIiBjbGFzcz0iZm9vdGVyLWxpbmsiPlByaXZhY3kgcG9saWN5PC9hPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWRpdmlkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItY29weXJpZ2h0LWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvcHlyaWdodC1jZW50ZXIiPsKpIEFua2t1cmkgU29mdHdhcmUgb3kgLyAyMDIzPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItY29weXJpZ2h0LWhvbGRlciI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvcHlyaWdodC1jZW50ZXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj48aW1nIHNyYz0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQuanBnIiBsb2FkaW5nPSJsYXp5IiBzaXplcz0iMTAwdnciIHNyY3NldD0iL3N0YXRpYy9pbWFnZXMvQkctR3JhZGllbnQtcC01MDAuanBnIDUwMHcsIC9zdGF0aWMvaW1hZ2VzL0JHLUdyYWRpZW50LXAtODAwLmpwZyA4MDB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC1wLTEwODAuanBnIDEwODB3LCAvc3RhdGljL2ltYWdlcy9CRy1HcmFkaWVudC5qcGcgMTMwMHciIGFsdD0iIiBjbGFzcz0iZm9vdGVyLWdyYWRpZW50Ij4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImJ1eS10ZW1wbGF0ZSI+CiAgICA8YSBocmVmPSJodHRwczovL2NhbGVuZGx5LmNvbS9ib29vc3RlZGNvbS9kZW1vIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ1eS10ZW1wbGF0ZS1ob2xkZXIgdy1pbmxpbmUtYmxvY2siPgogICAgICA8ZGl2IGNsYXNzPSJidXktdGVtcGxhdGUtdGV4dCI+PHN0cm9uZz5Cb29rIGEgZnJlZSBkZW1vIG9mIHRoZSBwcm9kdWN0PC9zdHJvbmc+PC9kaXY+CiAgICA8L2E+CiAgPC9kaXY+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vZDNlNTR2MTAzajhxYmIuY2xvdWRmcm9udC5uZXQvanMvanF1ZXJ5LTMuNS4xLm1pbi5kYzVlN2YxOGM4LmpzP3NpdGU9NjU1MzkzMGIwNjE2YWIzNDNmZjRkYmViIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGludGVncml0eT0ic2hhMjU2LTkvYWxpVThkR2QydGI2T1NzdXppeGVWNHkvZmFUcWdGdG9oZXRwaGJiajA9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iL3N0YXRpYy9qcy93ZWJmbG93LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K', '', '{"Content-Type": "text/html; charset=utf-8"}')
8.37

Connection: default

Transaction status: In transaction

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(74)
  response = self.process_response(request, response)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_response(151)
  self._process_response(request, response)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in _process_response(131)
  ResponseModelFactory(response).construct_response_model()

/usr/local/lib/python3.10/site-packages/silk/model_factory.py in construct_response_model(322)
  silky_response.save()

SAVEPOINT "s140218401289920_x88"SAVEPOINT "s140218401289920_x88"
0.45

Connection: default

Transaction status: In transaction

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(74)
  response = self.process_response(request, response)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_response(151)
  self._process_response(request, response)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in _process_response(133)
  collector.finalise()

/usr/local/lib/python3.10/site-packages/silk/collector.py in finalise(160)
  models.SQLQuery.objects.bulk_create(sql_queries)

/usr/local/lib/python3.10/contextlib.py in inner(78)
  with self._recreate_cm():

/usr/local/lib/python3.10/site-packages/django/utils/asyncio.py in inner(33)
  return func(*args, **kwargs)

UPDATE "silk_request"
   SET
"num_sql_queries" = 1
 WHERE
"silk_request"."id" = '35cd3a55-9132-4761-a6ad-f371f8e313c7'
UPDATE "silk_request" SET "num_sql_queries" = 1 WHERE "silk_request"."id" = '35cd3a55-9132-4761-a6ad-f371f8e313c7'
2 similar queries.
1.21

Connection: default

Transaction status: In transaction

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(74)
  response = self.process_response(request, response)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_response(151)
  self._process_response(request, response)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in _process_response(133)
  collector.finalise()

/usr/local/lib/python3.10/site-packages/silk/collector.py in finalise(160)
  models.SQLQuery.objects.bulk_create(sql_queries)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/models.py in bulk_create(233)
  obj.prepare_save()

/usr/local/lib/python3.10/site-packages/silk/models.py in prepare_save(313)
  self.request.save(update_fields=['num_sql_queries'])

/usr/local/lib/python3.10/site-packages/silk/models.py in save(190)
  super().save(*args, **kwargs)

/usr/local/lib/python3.10/site-packages/silk/sql.py in execute_sql(89)
  return self._execute_sql(*args, **kwargs)

UPDATE "silk_request"
   SET
"num_sql_queries" = 2
 WHERE
"silk_request"."id" = '35cd3a55-9132-4761-a6ad-f371f8e313c7'
UPDATE "silk_request" SET "num_sql_queries" = 2 WHERE "silk_request"."id" = '35cd3a55-9132-4761-a6ad-f371f8e313c7'
2 similar queries.
0.63

Connection: default

Transaction status: In transaction

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(74)
  response = self.process_response(request, response)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_response(151)
  self._process_response(request, response)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in _process_response(133)
  collector.finalise()

/usr/local/lib/python3.10/site-packages/silk/collector.py in finalise(160)
  models.SQLQuery.objects.bulk_create(sql_queries)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/models.py in bulk_create(233)
  obj.prepare_save()

/usr/local/lib/python3.10/site-packages/silk/models.py in prepare_save(313)
  self.request.save(update_fields=['num_sql_queries'])

/usr/local/lib/python3.10/site-packages/silk/models.py in save(190)
  super().save(*args, **kwargs)

/usr/local/lib/python3.10/site-packages/silk/sql.py in execute_sql(89)
  return self._execute_sql(*args, **kwargs)

INSERT INTO "silk_sqlquery" ("query", "start_time", "end_time", "time_taken", "identifier", "request_id", "traceback", "analysis")
VALUES
('SELECT "constance_config"."id", "constance_config"."key", "constance_config"."value" FROM "constance_config" WHERE "constance_config"."key" = PLATFORM_EMBEDDED_CHATBOT LIMIT 21', '2026-04-30T10:40:59.725830+00:00'::timestamptz, '2026-04-30T10:40:59.731581+00:00'::timestamptz, 5.751, 1, '35cd3a55-9132-4761-a6ad-f371f8e313c7', ' File "/usr/local/lib/python3.10/site-packages/silk/sql.py", line 82, in execute_sql tb = ''''.join(reversed(traceback.format_stack())) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 51, in __iter__ results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 1324, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 262, in __len__ self._fetch_all() File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 431, in get num = len(clone) File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/constance/backends/database/__init__.py", line 80, in get value = self._model._default_manager.get(key=key).value File "/usr/local/lib/python3.10/site-packages/constance/base.py", line 19, in __getattr__ result = self._backend.get(key) File "/usr/local/lib/python3.10/site-packages/django/utils/functional.py", line 247, in inner return func(self._wrapped, *args) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 837, in _resolve_lookup current = getattr(current, bit) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 796, in resolve value = self._resolve_lookup(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 671, in resolve obj = self.var.resolve(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 988, in render output = self.filter_expression.resolve(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.10/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.10/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 170, in render return self._render(context) File "/usr/local/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/response.py", line 83, in rendered_content return template.render(context, self._request) File "/usr/local/lib/python3.10/site-packages/django/template/response.py", line 105, in render self.content = self.rendered_content File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 204, in _get_response response = response.render() File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/silk/middleware.py", line 72, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/logging.py", line 95, in process_request return super().process_request(request) [Previous line repeated 1 more time] File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/staticfiles.py", line 116, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/headers.py", line 46, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/timer.py", line 65, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/middleware.py", line 58, in __call__ response = toolbar.process_request(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py", line 123, in __call__ return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django_otp/middleware.py", line 35, in __call__ return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/code/booosted/core/middleware/logging.py", line 41, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/code/booosted/core/middleware/query_language.py", line 13, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 130, in get_response response = self._middleware_chain(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/wsgi.py", line 133, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 323, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 271, in handle keepalive = self.handle_request(req, conn) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 83, in _worker work_item.run() File "/usr/local/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/usr/local/lib/python3.10/threading.py", line 973, in _bootstrap self._bootstrap_inner() ', 'Limit (cost=0.00..2.70 rows=1 width=101) -> Seq Scan on constance_config (cost=0.00..2.70 rows=1 width=101) Filter: ((key)::text = ''PLATFORM_EMBEDDED_CHATBOT''::text)'), ('SELECT "constance_config"."id", "constance_config"."key", "constance_config"."value" FROM "constance_config" WHERE "constance_config"."key" = PLATFORM_EMBEDDED_STICKY_BUTTON LIMIT 21', '2026-04-30T10:40:59.737347+00:00'::timestamptz, '2026-04-30T10:40:59.740112+00:00'::timestamptz, 2.765, 2, '35cd3a55-9132-4761-a6ad-f371f8e313c7', ' File "/usr/local/lib/python3.10/site-packages/silk/sql.py", line 82, in execute_sql tb = ''''.join(reversed(traceback.format_stack())) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 51, in __iter__ results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 1324, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 262, in __len__ self._fetch_all() File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 431, in get num = len(clone) File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/constance/backends/database/__init__.py", line 80, in get value = self._model._default_manager.get(key=key).value File "/usr/local/lib/python3.10/site-packages/constance/base.py", line 19, in __getattr__ result = self._backend.get(key) File "/usr/local/lib/python3.10/site-packages/django/utils/functional.py", line 247, in inner return func(self._wrapped, *args) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 837, in _resolve_lookup current = getattr(current, bit) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 796, in resolve value = self._resolve_lookup(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 671, in resolve obj = self.var.resolve(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 988, in render output = self.filter_expression.resolve(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.10/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.10/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 170, in render return self._render(context) File "/usr/local/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/response.py", line 83, in rendered_content return template.render(context, self._request) File "/usr/local/lib/python3.10/site-packages/django/template/response.py", line 105, in render self.content = self.rendered_content File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 204, in _get_response response = response.render() File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/silk/middleware.py", line 72, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/logging.py", line 95, in process_request return super().process_request(request) [Previous line repeated 1 more time] File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/staticfiles.py", line 116, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/headers.py", line 46, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/timer.py", line 65, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/middleware.py", line 58, in __call__ response = toolbar.process_request(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py", line 123, in __call__ return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django_otp/middleware.py", line 35, in __call__ return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/code/booosted/core/middleware/logging.py", line 41, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/code/booosted/core/middleware/query_language.py", line 13, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 130, in get_response response = self._middleware_chain(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/wsgi.py", line 133, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 323, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 271, in handle keepalive = self.handle_request(req, conn) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 83, in _worker work_item.run() File "/usr/local/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/usr/local/lib/python3.10/threading.py", line 973, in _bootstrap self._bootstrap_inner() ', 'Limit (cost=0.00..2.70 rows=1 width=101) -> Seq Scan on constance_config (cost=0.00..2.70 rows=1 width=101) Filter: ((key)::text = ''PLATFORM_EMBEDDED_STICKY_BUTTON''::text)') RETURNING "silk_sqlquery"."id"
INSERT INTO "silk_sqlquery" ("query", "start_time", "end_time", "time_taken", "identifier", "request_id", "traceback", "analysis") VALUES ('SELECT "constance_config"."id", "constance_config"."key", "constance_config"."value" FROM "constance_config" WHERE "constance_config"."key" = PLATFORM_EMBEDDED_CHATBOT LIMIT 21', '2026-04-30T10:40:59.725830+00:00'::timestamptz, '2026-04-30T10:40:59.731581+00:00'::timestamptz, 5.751, 1, '35cd3a55-9132-4761-a6ad-f371f8e313c7', ' File "/usr/local/lib/python3.10/site-packages/silk/sql.py", line 82, in execute_sql tb = ''''.join(reversed(traceback.format_stack())) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 51, in __iter__ results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 1324, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 262, in __len__ self._fetch_all() File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 431, in get num = len(clone) File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/constance/backends/database/__init__.py", line 80, in get value = self._model._default_manager.get(key=key).value File "/usr/local/lib/python3.10/site-packages/constance/base.py", line 19, in __getattr__ result = self._backend.get(key) File "/usr/local/lib/python3.10/site-packages/django/utils/functional.py", line 247, in inner return func(self._wrapped, *args) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 837, in _resolve_lookup current = getattr(current, bit) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 796, in resolve value = self._resolve_lookup(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 671, in resolve obj = self.var.resolve(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 988, in render output = self.filter_expression.resolve(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.10/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.10/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 170, in render return self._render(context) File "/usr/local/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/response.py", line 83, in rendered_content return template.render(context, self._request) File "/usr/local/lib/python3.10/site-packages/django/template/response.py", line 105, in render self.content = self.rendered_content File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 204, in _get_response response = response.render() File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/silk/middleware.py", line 72, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/logging.py", line 95, in process_request return super().process_request(request) [Previous line repeated 1 more time] File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/staticfiles.py", line 116, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/headers.py", line 46, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/timer.py", line 65, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/middleware.py", line 58, in __call__ response = toolbar.process_request(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py", line 123, in __call__ return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django_otp/middleware.py", line 35, in __call__ return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/code/booosted/core/middleware/logging.py", line 41, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/code/booosted/core/middleware/query_language.py", line 13, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 130, in get_response response = self._middleware_chain(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/wsgi.py", line 133, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 323, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 271, in handle keepalive = self.handle_request(req, conn) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 83, in _worker work_item.run() File "/usr/local/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/usr/local/lib/python3.10/threading.py", line 973, in _bootstrap self._bootstrap_inner() ', 'Limit (cost=0.00..2.70 rows=1 width=101) -> Seq Scan on constance_config (cost=0.00..2.70 rows=1 width=101) Filter: ((key)::text = ''PLATFORM_EMBEDDED_CHATBOT''::text)'), ('SELECT "constance_config"."id", "constance_config"."key", "constance_config"."value" FROM "constance_config" WHERE "constance_config"."key" = PLATFORM_EMBEDDED_STICKY_BUTTON LIMIT 21', '2026-04-30T10:40:59.737347+00:00'::timestamptz, '2026-04-30T10:40:59.740112+00:00'::timestamptz, 2.765, 2, '35cd3a55-9132-4761-a6ad-f371f8e313c7', ' File "/usr/local/lib/python3.10/site-packages/silk/sql.py", line 82, in execute_sql tb = ''''.join(reversed(traceback.format_stack())) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 51, in __iter__ results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 1324, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 262, in __len__ self._fetch_all() File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 431, in get num = len(clone) File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/constance/backends/database/__init__.py", line 80, in get value = self._model._default_manager.get(key=key).value File "/usr/local/lib/python3.10/site-packages/constance/base.py", line 19, in __getattr__ result = self._backend.get(key) File "/usr/local/lib/python3.10/site-packages/django/utils/functional.py", line 247, in inner return func(self._wrapped, *args) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 837, in _resolve_lookup current = getattr(current, bit) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 796, in resolve value = self._resolve_lookup(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 671, in resolve obj = self.var.resolve(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 988, in render output = self.filter_expression.resolve(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.10/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.10/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/base.py", line 170, in render return self._render(context) File "/usr/local/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/usr/local/lib/python3.10/site-packages/django/template/response.py", line 83, in rendered_content return template.render(context, self._request) File "/usr/local/lib/python3.10/site-packages/django/template/response.py", line 105, in render self.content = self.rendered_content File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 204, in _get_response response = response.render() File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/silk/middleware.py", line 72, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/logging.py", line 95, in process_request return super().process_request(request) [Previous line repeated 1 more time] File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/staticfiles.py", line 116, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/headers.py", line 46, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/timer.py", line 65, in process_request return super().process_request(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/panels/__init__.py", line 206, in process_request return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/debug_toolbar/middleware.py", line 58, in __call__ response = toolbar.process_request(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py", line 123, in __call__ return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django_otp/middleware.py", line 35, in __call__ return self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/code/booosted/core/middleware/logging.py", line 41, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/code/booosted/core/middleware/query_language.py", line 13, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/utils/deprecation.py", line 117, in __call__ response = response or self.get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 130, in get_response response = self._middleware_chain(request) File "/usr/local/lib/python3.10/site-packages/django/core/handlers/wsgi.py", line 133, in __call__ response = self.get_response(request) File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 323, in handle_request respiter = self.wsgi(environ, resp.start_response) File "/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 271, in handle keepalive = self.handle_request(req, conn) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 83, in _worker work_item.run() File "/usr/local/lib/python3.10/threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "/usr/local/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/usr/local/lib/python3.10/threading.py", line 973, in _bootstrap self._bootstrap_inner() ', 'Limit (cost=0.00..2.70 rows=1 width=101) -> Seq Scan on constance_config (cost=0.00..2.70 rows=1 width=101) Filter: ((key)::text = ''PLATFORM_EMBEDDED_STICKY_BUTTON''::text)') RETURNING "silk_sqlquery"."id"
1.75

Connection: default

Transaction status: In transaction

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(74)
  response = self.process_response(request, response)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_response(151)
  self._process_response(request, response)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in _process_response(133)
  collector.finalise()

/usr/local/lib/python3.10/site-packages/silk/collector.py in finalise(160)
  models.SQLQuery.objects.bulk_create(sql_queries)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/models.py in bulk_create(235)
  return super().bulk_create(*args, **kwargs)

RELEASE SAVEPOINT "s140218401289920_x88"RELEASE SAVEPOINT "s140218401289920_x88"
0.29

Connection: default

Transaction status: In transaction

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(74)
  response = self.process_response(request, response)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_response(151)
  self._process_response(request, response)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in _process_response(133)
  collector.finalise()

/usr/local/lib/python3.10/site-packages/silk/collector.py in finalise(160)
  models.SQLQuery.objects.bulk_create(sql_queries)

/usr/local/lib/python3.10/contextlib.py in inner(78)
  with self._recreate_cm():

/usr/local/lib/python3.10/site-packages/django/utils/asyncio.py in inner(33)
  return func(*args, **kwargs)

SELECT "silk_sqlquery"."id",
       "silk_sqlquery"."query",
       "silk_sqlquery"."start_time",
       "silk_sqlquery"."end_time",
       "silk_sqlquery"."time_taken",
       "silk_sqlquery"."identifier",
       "silk_sqlquery"."request_id",
       "silk_sqlquery"."traceback",
       "silk_sqlquery"."analysis"
  FROM
"silk_sqlquery"
 WHERE
"silk_sqlquery"."request_id" = '35cd3a55-9132-4761-a6ad-f371f8e313c7'
SELECT ••• FROM "silk_sqlquery" WHERE "silk_sqlquery"."request_id" = '35cd3a55-9132-4761-a6ad-f371f8e313c7'
0.89

Connection: default

Transaction status: In transaction

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(74)
  response = self.process_response(request, response)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_response(151)
  self._process_response(request, response)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in _process_response(133)
  collector.finalise()

/usr/local/lib/python3.10/site-packages/silk/collector.py in finalise(162)
  for sql_query in sql_queries.all():

/usr/local/lib/python3.10/site-packages/silk/sql.py in execute_sql(89)
  return self._execute_sql(*args, **kwargs)

UPDATE "silk_request"
   SET
"path" = '/',
       "query_params" = '',
       "raw_body" = '',
       "body" = '',
       "method" = 'GET',
       "start_time" = '2026-04-30T10:40:59.691386+00:00'::timestamptz,
       "view_name" = 'Marketing-Page',
       "end_time" = '2026-04-30T10:40:59.770723+00:00'::timestamptz,
       "time_taken" = 79.337,
       "encoded_headers" = '{"host": "stage.booosted.com", "user-agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "accept": "*/*", "accept-encoding": "gzip, br, zstd, deflate", "x-forwarded-for": "216.73.216.108", "x-forwarded-host": "stage.booosted.com", "x-forwarded-port": "443", "x-forwarded-proto": "https", "x-forwarded-server": "d354bf07f705", "x-real-ip": "216.73.216.108"}',
       "meta_time" = NULL, "meta_num_queries" = NULL, "meta_time_spent_queries" = NULL, "pyprofile" = '',
       "prof_file" = '',
       "num_sql_queries" = 2
 WHERE
"silk_request"."id" = '35cd3a55-9132-4761-a6ad-f371f8e313c7'
UPDATE "silk_request" SET "path" = '/', "query_params" = '', "raw_body" = '', "body" = '', "method" = 'GET', "start_time" = '2026-04-30T10:40:59.691386+00:00'::timestamptz, "view_name" = 'Marketing-Page', "end_time" = '2026-04-30T10:40:59.770723+00:00'::timestamptz, "time_taken" = 79.337, "encoded_headers" = '{"host": "stage.booosted.com", "user-agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "accept": "*/*", "accept-encoding": "gzip, br, zstd, deflate", "x-forwarded-for": "216.73.216.108", "x-forwarded-host": "stage.booosted.com", "x-forwarded-port": "443", "x-forwarded-proto": "https", "x-forwarded-server": "d354bf07f705", "x-real-ip": "216.73.216.108"}', "meta_time" = NULL, "meta_num_queries" = NULL, "meta_time_spent_queries" = NULL, "pyprofile" = '', "prof_file" = '', "num_sql_queries" = 2 WHERE "silk_request"."id" = '35cd3a55-9132-4761-a6ad-f371f8e313c7'
0.62

Connection: default

Transaction status: In transaction

/usr/local/lib/python3.10/concurrent/futures/thread.py in _worker(83)
  work_item.run()

/usr/local/lib/python3.10/concurrent/futures/thread.py in run(58)
  result = self.fn(*self.args, **self.kwargs)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle(271)
  keepalive = self.handle_request(req, conn)

/usr/local/lib/python3.10/site-packages/gunicorn/workers/gthread.py in handle_request(323)
  respiter = self.wsgi(environ, resp.start_response)

/code/booosted/core/middleware/query_language.py in __call__(13)
  response = self.get_response(request)

/code/booosted/core/middleware/logging.py in __call__(41)
  response = self.get_response(request)

/usr/local/lib/python3.10/site-packages/django_otp/middleware.py in __call__(35)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/whitenoise/middleware.py in __call__(123)
  return self.get_response(request)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in __call__(74)
  response = self.process_response(request, response)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in process_response(151)
  self._process_response(request, response)

/usr/local/lib/python3.10/contextlib.py in inner(79)
  return func(*args, **kwds)

/usr/local/lib/python3.10/site-packages/silk/middleware.py in _process_response(144)
  silk_request.save()

/usr/local/lib/python3.10/site-packages/silk/models.py in save(190)
  super().save(*args, **kwargs)

/usr/local/lib/python3.10/site-packages/silk/sql.py in execute_sql(89)
  return self._execute_sql(*args, **kwargs)

Static files (614 found, 235 used)

Static file path

  1. /code/booosted/marketplace/static

Static file apps

  1. django.contrib.admin
  2. rest_framework
  3. drf_yasg
  4. constance
  5. django_extensions
  6. booosted.marketplace
  7. debug_toolbar
  8. silk

Static files

css/normalize.css
/code/booosted/marketplace/static/css/normalize.css
css/webflow.css
/code/booosted/marketplace/static/css/webflow.css
css/booosted.webflow.css
/code/booosted/marketplace/static/css/booosted.webflow.css
images/favicon.png
/code/booosted/marketplace/static/images/favicon.png
images/webclip.pn
None
images/logo-iso-kopio.png
/code/booosted/marketplace/static/images/logo-iso-kopio.png
images/logo-iso-kopio-p-500.png
/code/booosted/marketplace/static/images/logo-iso-kopio-p-500.png
images/logo-iso-kopio-p-800.png
/code/booosted/marketplace/static/images/logo-iso-kopio-p-800.png
images/logo-iso-kopio-p-1080.pn
None
images/logo-iso-kopio-p-1600.png
/code/booosted/marketplace/static/images/logo-iso-kopio-p-1600.png
images/logo-iso-kopio-p-2000.png
/code/booosted/marketplace/static/images/logo-iso-kopio-p-2000.png
images/logo-iso-kopio-p-2600.png
/code/booosted/marketplace/static/images/logo-iso-kopio-p-2600.png
images/logo-iso-kopio.png
/code/booosted/marketplace/static/images/logo-iso-kopio.png
images/Apple-Iphone-14-pro.png
/code/booosted/marketplace/static/images/Apple-Iphone-14-pro.png
images/App-Screenshot.jpg
/code/booosted/marketplace/static/images/App-Screenshot.jpg
images/App-Screenshot-p-500.jpg
/code/booosted/marketplace/static/images/App-Screenshot-p-500.jpg
images/App-Screenshot-p-800.jpg
/code/booosted/marketplace/static/images/App-Screenshot-p-800.jpg
images/App-Screenshot-p-1080.jpg
/code/booosted/marketplace/static/images/App-Screenshot-p-1080.jpg
images/App-Screenshot.jpg
/code/booosted/marketplace/static/images/App-Screenshot.jpg
images/chat-example.png
/code/booosted/marketplace/static/images/chat-example.png
images/chat-example-p-500.png
/code/booosted/marketplace/static/images/chat-example-p-500.png
images/chat-example-p-800.png
/code/booosted/marketplace/static/images/chat-example-p-800.png
images/chat-example.png
/code/booosted/marketplace/static/images/chat-example.png
images/card-1.png
/code/booosted/marketplace/static/images/card-1.png
images/card-1-p-500.png
/code/booosted/marketplace/static/images/card-1-p-500.png
images/card-1.png
/code/booosted/marketplace/static/images/card-1.png
images/Card-04.png
/code/booosted/marketplace/static/images/Card-04.png
images/Card-04-p-500.png
/code/booosted/marketplace/static/images/Card-04-p-500.png
images/Card-04-p-800.png
/code/booosted/marketplace/static/images/Card-04-p-800.png
images/Card-04.png
/code/booosted/marketplace/static/images/Card-04.png
images/Card-03.png
/code/booosted/marketplace/static/images/Card-03.png
images/Card-03-p-500.png
/code/booosted/marketplace/static/images/Card-03-p-500.png
images/Card-03-p-800.png
/code/booosted/marketplace/static/images/Card-03-p-800.png
images/Card-03-p-1080.png
/code/booosted/marketplace/static/images/Card-03-p-1080.png
images/Card-03.png
/code/booosted/marketplace/static/images/Card-03.png
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/BG-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-500.jpg
images/BG-Gradient-p-800.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-800.jpg
images/BG-Gradient-p-1080.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-1080.jpg
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/lataus__1_-removebg-preview.png
/code/booosted/marketplace/static/images/lataus__1_-removebg-preview.png
images/motorspace-logo.png
/code/booosted/marketplace/static/images/motorspace-logo.png
images/motorspace-logo-p-500.png
/code/booosted/marketplace/static/images/motorspace-logo-p-500.png
images/motorspace-logo.png
/code/booosted/marketplace/static/images/motorspace-logo.png
images/logo-2.0-300x124-removebg-preview.png
/code/booosted/marketplace/static/images/logo-2.0-300x124-removebg-preview.png
images/lataus-removebg-preview.png
/code/booosted/marketplace/static/images/lataus-removebg-preview.png
images/STL_logo_sininen_rgb.jpg
/code/booosted/marketplace/static/images/STL_logo_sininen_rgb.jpg
images/lataus-2.png
/code/booosted/marketplace/static/images/lataus-2.png
images/TehtySuomMadeIn_Sin_rgb.png
/code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb.png
images/Omawatti-logo-1-tummalle-01.png
/code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01.png
images/medo_oy_logo-removebg-preview.png
/code/booosted/marketplace/static/images/medo_oy_logo-removebg-preview.png
images/lataus__1_-removebg-preview.png
/code/booosted/marketplace/static/images/lataus__1_-removebg-preview.png
images/motorspace-logo.png
/code/booosted/marketplace/static/images/motorspace-logo.png
images/motorspace-logo-p-500.png
/code/booosted/marketplace/static/images/motorspace-logo-p-500.png
images/motorspace-logo.png
/code/booosted/marketplace/static/images/motorspace-logo.png
images/logo-2.0-300x124-removebg-preview.png
/code/booosted/marketplace/static/images/logo-2.0-300x124-removebg-preview.png
images/lataus-removebg-preview.png
/code/booosted/marketplace/static/images/lataus-removebg-preview.png
images/STL_logo_sininen_rgb.jpg
/code/booosted/marketplace/static/images/STL_logo_sininen_rgb.jpg
images/lataus-2.png
/code/booosted/marketplace/static/images/lataus-2.png
images/TehtySuomMadeIn_Sin_rgb.png
/code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb.png
images/Omawatti-logo-1-tummalle-01.png
/code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01.png
images/medo_oy_logo-removebg-preview.png
/code/booosted/marketplace/static/images/medo_oy_logo-removebg-preview.png
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/BG-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-500.jpg
images/BG-Gradient-p-800.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-800.jpg
images/BG-Gradient-p-1080.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-1080.jpg
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/chat-example-3.png
/code/booosted/marketplace/static/images/chat-example-3.png
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/BG-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-500.jpg
images/BG-Gradient-p-800.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-800.jpg
images/BG-Gradient-p-1080.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-1080.jpg
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/chat-example-4.png
/code/booosted/marketplace/static/images/chat-example-4.png
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/BG-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-500.jpg
images/BG-Gradient-p-800.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-800.jpg
images/BG-Gradient-p-1080.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-1080.jpg
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/chat-example-6.png
/code/booosted/marketplace/static/images/chat-example-6.png
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/BG-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-500.jpg
images/BG-Gradient-p-800.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-800.jpg
images/BG-Gradient-p-1080.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-1080.jpg
images/BG-Gradient.jpg 1300w
None
images/Action-sheet-05.png
/code/booosted/marketplace/static/images/Action-sheet-05.png
images/Action-sheet-06.png
/code/booosted/marketplace/static/images/Action-sheet-06.png
images/Arrow.svg
/code/booosted/marketplace/static/images/Arrow.svg
images/Small-Icon-01.svg
/code/booosted/marketplace/static/images/Small-Icon-01.svg
images/Small-Icon-03.svg
/code/booosted/marketplace/static/images/Small-Icon-03.svg
images/Small-Icon-02.svg
/code/booosted/marketplace/static/images/Small-Icon-02.svg
images/Connect-Icon.svg
/code/booosted/marketplace/static/images/Connect-Icon.svg
images/Small-Icon-01.svg
/code/booosted/marketplace/static/images/Small-Icon-01.svg
images/Zap-Icon.svg
/code/booosted/marketplace/static/images/Zap-Icon.svg
images/Share-Icon.svg
/code/booosted/marketplace/static/images/Share-Icon.svg
images/step1-adding-url-p-500.png
/code/booosted/marketplace/static/images/step1-adding-url-p-500.png
images/step1-adding-url-p-800.png
/code/booosted/marketplace/static/images/step1-adding-url-p-800.png
images/step1-adding-url-p-1080.png
/code/booosted/marketplace/static/images/step1-adding-url-p-1080.png
images/step1-adding-url.png
/code/booosted/marketplace/static/images/step1-adding-url.png
images/step1-adding-url.png
/code/booosted/marketplace/static/images/step1-adding-url.png
images/step2-p-500.png
/code/booosted/marketplace/static/images/step2-p-500.png
images/step2-p-800.png
/code/booosted/marketplace/static/images/step2-p-800.png
images/step2-p-1080.png
/code/booosted/marketplace/static/images/step2-p-1080.png
images/step2.png
/code/booosted/marketplace/static/images/step2.png
images/step2.png
/code/booosted/marketplace/static/images/step2.png
images/step3-p-500.png
/code/booosted/marketplace/static/images/step3-p-500.png
images/step3-p-800.png
/code/booosted/marketplace/static/images/step3-p-800.png
images/step3-p-1080.png
/code/booosted/marketplace/static/images/step3-p-1080.png
images/step3.png
/code/booosted/marketplace/static/images/step3.png
images/step3.png
/code/booosted/marketplace/static/images/step3.png
images/step4-p-500.png
/code/booosted/marketplace/static/images/step4-p-500.png
images/step4-p-800.png
/code/booosted/marketplace/static/images/step4-p-800.png
images/step4-p-1080.png
/code/booosted/marketplace/static/images/step4-p-1080.png
images/step4.png
/code/booosted/marketplace/static/images/step4.png
images/step4.png
/code/booosted/marketplace/static/images/step4.png
images/logo-color.png
/code/booosted/marketplace/static/images/logo-color.png
images/logo-color-p-500.png
/code/booosted/marketplace/static/images/logo-color-p-500.png
images/logo-color.png
/code/booosted/marketplace/static/images/logo-color.png
images/Small-Icon-02.svg
/code/booosted/marketplace/static/images/Small-Icon-02.svg
images/Card-04.png
/code/booosted/marketplace/static/images/Card-04.png
images/Card-04-p-500.png
/code/booosted/marketplace/static/images/Card-04-p-500.png
images/Card-04-p-800.png
/code/booosted/marketplace/static/images/Card-04-p-800.png
images/Card-04.png
/code/booosted/marketplace/static/images/Card-04.png
images/Card-03.png
/code/booosted/marketplace/static/images/Card-03.png
images/Card-03-p-500.png
/code/booosted/marketplace/static/images/Card-03-p-500.png
images/Card-03-p-800.png
/code/booosted/marketplace/static/images/Card-03-p-800.png
images/Card-03-p-1080.png
/code/booosted/marketplace/static/images/Card-03-p-1080.png
images/Card-03.png
/code/booosted/marketplace/static/images/Card-03.png
images/Card-02.png
/code/booosted/marketplace/static/images/Card-02.png
images/Card-02-p-500.png
/code/booosted/marketplace/static/images/Card-02-p-500.png
images/Card-02-p-800.png
/code/booosted/marketplace/static/images/Card-02-p-800.png
images/Card-02.png
/code/booosted/marketplace/static/images/Card-02.png
images/card-1.png
/code/booosted/marketplace/static/images/card-1.png
images/card-1-p-500.png
/code/booosted/marketplace/static/images/card-1-p-500.png
images/card-1.png
/code/booosted/marketplace/static/images/card-1.png
images/Action-sheet-06-p-500.png
/code/booosted/marketplace/static/images/Action-sheet-06-p-500.png
images/Action-sheet-06-p-800.png
/code/booosted/marketplace/static/images/Action-sheet-06-p-800.png
images/Action-sheet-06-p-1080.png
/code/booosted/marketplace/static/images/Action-sheet-06-p-1080.png
images/Action-sheet-06.png
/code/booosted/marketplace/static/images/Action-sheet-06.png
images/Card-04-p-500.png
/code/booosted/marketplace/static/images/Card-04-p-500.png
images/Card-04-p-800.png
/code/booosted/marketplace/static/images/Card-04-p-800.png
images/Card-04.png
/code/booosted/marketplace/static/images/Card-04.png
images/Phone-Border-example.png
/code/booosted/marketplace/static/images/Phone-Border-example.png
images/App-showcase--Image.jpg
/code/booosted/marketplace/static/images/App-showcase--Image.jpg
images/App-showcase--Image-p-500.jpg
/code/booosted/marketplace/static/images/App-showcase--Image-p-500.jpg
images/App-showcase--Image-p-500.jpg
/code/booosted/marketplace/static/images/App-showcase--Image-p-500.jpg
images/App-showcase--Image.jpg
/code/booosted/marketplace/static/images/App-showcase--Image.jpg
images/Webflow-Logo-Gradient.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/Webflow-Logo-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient-p-500.jpg
images/Webflow-Logo-Gradient.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/WordPress_blue_logo.svg.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/WordPress_blue_logo.svg-p-500.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-500.png
images/WordPress_blue_logo.svg-p-800.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-800.png
images/WordPress_blue_logo.svg.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/Shopify.webp
/code/booosted/marketplace/static/images/Shopify.webp
images/Shopify-p-500.webp
/code/booosted/marketplace/static/images/Shopify-p-500.webp
images/wix-logo.png
/code/booosted/marketplace/static/images/wix-logo.png
images/wix-logo-p-500.png
/code/booosted/marketplace/static/images/wix-logo-p-500.png
images/wix-logo.png
/code/booosted/marketplace/static/images/wix-logo.png
images/i3g94ms6tnowhmrkiuvo.webp
/code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo.webp
images/i3g94ms6tnowhmrkiuvo-p-500.webp
/code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo-p-500.webp
images/i3g94ms6tnowhmrkiuvo-p-800.webp
/code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo-p-800.webp
images/i3g94ms6tnowhmrkiuvo.webp
/code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo.webp
images/Pixpa_Logo.jpg
/code/booosted/marketplace/static/images/Pixpa_Logo.jpg
images/lataa.png
/code/booosted/marketplace/static/images/lataa.png
images/Webflow-Logo-Gradient.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/Webflow-Logo-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient-p-500.jpg
images/Webflow-Logo-Gradient.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/WordPress_blue_logo.svg.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/WordPress_blue_logo.svg-p-500.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-500.png
images/WordPress_blue_logo.svg-p-800.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-800.png
images/WordPress_blue_logo.svg.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/Shopify.webp
/code/booosted/marketplace/static/images/Shopify.webp
images/Shopify-p-500.webp
/code/booosted/marketplace/static/images/Shopify-p-500.webp
images/wix-logo.png
/code/booosted/marketplace/static/images/wix-logo.png
images/wix-logo-p-500.png
/code/booosted/marketplace/static/images/wix-logo-p-500.png
images/wix-logo.png
/code/booosted/marketplace/static/images/wix-logo.png
images/i3g94ms6tnowhmrkiuvo.webp
/code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo.webp
images/i3g94ms6tnowhmrkiuvo-p-500.webp
/code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo-p-500.webp
images/i3g94ms6tnowhmrkiuvo-p-800.webp
/code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo-p-800.webp
images/i3g94ms6tnowhmrkiuvo.webp
/code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo.webp
images/Pixpa_Logo.jpg
/code/booosted/marketplace/static/images/Pixpa_Logo.jpg
images/lataa.png
/code/booosted/marketplace/static/images/lataa.png
images/google-sites3788.jpg
/code/booosted/marketplace/static/images/google-sites3788.jpg
images/google-sites3788-p-500.jpg
/code/booosted/marketplace/static/images/google-sites3788-p-500.jpg
images/google-sites3788-p-800.jpg
/code/booosted/marketplace/static/images/google-sites3788-p-800.jpg
images/google-sites3788.jpg
/code/booosted/marketplace/static/images/google-sites3788.jpg
images/squarespace_logo_icon_181252.png
/code/booosted/marketplace/static/images/squarespace_logo_icon_181252.png
images/GoDaddy_Logo_-_The_GO.svg.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg.png
images/GoDaddy_Logo_-_The_GO.svg-p-500.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-500.png
images/GoDaddy_Logo_-_The_GO.svg-p-800.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-800.png
images/GoDaddy_Logo_-_The_GO.svg-p-1080.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-1080.png
images/GoDaddy_Logo_-_The_GO.svg-p-1600.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-1600.png
images/GoDaddy_Logo_-_The_GO.svg-p-2000.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-2000.png
images/GoDaddy_Logo_-_The_GO.svg.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg.png
images/d6012f676992d51a149e24c971cb73ad.webp
/code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad.webp
images/d6012f676992d51a149e24c971cb73ad-p-500.webp
/code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad-p-500.webp
images/d6012f676992d51a149e24c971cb73ad.webp
/code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad.webp
images/lataa.png
/code/booosted/marketplace/static/images/lataa.png
images/Webflow-Logo-Gradient.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/Webflow-Logo-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient-p-500.jpg
images/Webflow-Logo-Gradient.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/WordPress_blue_logo.svg.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/WordPress_blue_logo.svg-p-500.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-500.png
images/WordPress_blue_logo.svg-p-800.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-800.png
images/WordPress_blue_logo.svg.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/google-sites3788.jpg
/code/booosted/marketplace/static/images/google-sites3788.jpg
images/google-sites3788-p-500.jpg
/code/booosted/marketplace/static/images/google-sites3788-p-500.jpg
images/google-sites3788-p-800.jpg
/code/booosted/marketplace/static/images/google-sites3788-p-800.jpg
images/google-sites3788.jpg
/code/booosted/marketplace/static/images/google-sites3788.jpg
images/squarespace_logo_icon_181252.png
/code/booosted/marketplace/static/images/squarespace_logo_icon_181252.png
images/GoDaddy_Logo_-_The_GO.svg.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg.png
images/GoDaddy_Logo_-_The_GO.svg-p-500.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-500.png
images/GoDaddy_Logo_-_The_GO.svg-p-800.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-800.png
images/GoDaddy_Logo_-_The_GO.svg-p-1080.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-1080.png
images/GoDaddy_Logo_-_The_GO.svg-p-1600.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-1600.png
images/GoDaddy_Logo_-_The_GO.svg-p-2000.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-2000.png
images/GoDaddy_Logo_-_The_GO.svg.png
/code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg.png
images/d6012f676992d51a149e24c971cb73ad.webp
/code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad.webp
images/d6012f676992d51a149e24c971cb73ad-p-500.webp
/code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad-p-500.webp
images/d6012f676992d51a149e24c971cb73ad.webp
/code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad.webp
images/lataa.png
/code/booosted/marketplace/static/images/lataa.png
images/Webflow-Logo-Gradient.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/Webflow-Logo-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient-p-500.jpg
images/Webflow-Logo-Gradient.jpg
/code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/WordPress_blue_logo.svg.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/WordPress_blue_logo.svg-p-500.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-500.png
images/WordPress_blue_logo.svg-p-800.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-800.png
images/WordPress_blue_logo.svg.png
/code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
images/BG-Gradient-p-500.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-500.jpg
images/BG-Gradient-p-800.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-800.jpg
images/BG-Gradient-p-1080.jpg
/code/booosted/marketplace/static/images/BG-Gradient-p-1080.jpg
images/BG-Gradient.jpg
/code/booosted/marketplace/static/images/BG-Gradient.jpg
js/webflow.js
/code/booosted/marketplace/static/js/webflow.js

django.contrib.staticfiles.finders.FileSystemFinder (159 files)

Path Location
images/STL_logo_sininen_rgb-p-800.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb-p-800.jpg
images/logo-iso-kopio-p-800.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-800.png
images/logo-iso-kopio-p-2000.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-2000.png
images/Apple-Iphone-14-pro.png /code/booosted/marketplace/static/images/Apple-Iphone-14-pro.png
images/App-Screenshot-p-500.jpg /code/booosted/marketplace/static/images/App-Screenshot-p-500.jpg
images/step1-adding-url.png /code/booosted/marketplace/static/images/step1-adding-url.png
images/chat-example-3-p-500.png /code/booosted/marketplace/static/images/chat-example-3-p-500.png
images/I-Icon.svg /code/booosted/marketplace/static/images/I-Icon.svg
images/Omawatti-logo-1-tummalle-01-p-2000.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-2000.png
images/Logo-To-Use_1-p-500.jpg /code/booosted/marketplace/static/images/Logo-To-Use_1-p-500.jpg
images/Small-Icon-03.svg /code/booosted/marketplace/static/images/Small-Icon-03.svg
images/chat-example.png /code/booosted/marketplace/static/images/chat-example.png
images/google-sites3788.jpg /code/booosted/marketplace/static/images/google-sites3788.jpg
images/Webflow-Logo-Gradient.jpg /code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/Card-04-p-800.png /code/booosted/marketplace/static/images/Card-04-p-800.png
images/App-Screenshot-p-130x130q80.jpg /code/booosted/marketplace/static/images/App-Screenshot-p-130x130q80.jpg
images/step4-p-500.png /code/booosted/marketplace/static/images/step4-p-500.png
images/logo-iso-kopio-p-1080.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-1080.png
images/lataus-removebg-preview.png /code/booosted/marketplace/static/images/lataus-removebg-preview.png
images/card-1.png /code/booosted/marketplace/static/images/card-1.png
images/WordPress_blue_logo.svg-p-800.png /code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-800.png
images/i3g94ms6tnowhmrkiuvo-p-800.webp /code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo-p-800.webp
images/motorspace-logo-p-500.png /code/booosted/marketplace/static/images/motorspace-logo-p-500.png
images/chat-example-6-p-800.png /code/booosted/marketplace/static/images/chat-example-6-p-800.png
images/Action-sheet-05-p-800.png /code/booosted/marketplace/static/images/Action-sheet-05-p-800.png
images/Action-sheet-05.png /code/booosted/marketplace/static/images/Action-sheet-05.png
images/Card-03.png /code/booosted/marketplace/static/images/Card-03.png
images/Action-sheet-06.png /code/booosted/marketplace/static/images/Action-sheet-06.png
images/Phone-Border-example.png /code/booosted/marketplace/static/images/Phone-Border-example.png
images/App-Screenshot.jpg /code/booosted/marketplace/static/images/App-Screenshot.jpg
images/Back-Icon.svg /code/booosted/marketplace/static/images/Back-Icon.svg
images/Arrow.svg /code/booosted/marketplace/static/images/Arrow.svg
images/d6012f676992d51a149e24c971cb73ad.webp /code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad.webp
images/App-showcase--Image-p-800.jpg /code/booosted/marketplace/static/images/App-showcase--Image-p-800.jpg
images/WordPress_blue_logo.svg.png /code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/GoDaddy_Logo_-_The_GO.svg-p-1600.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-1600.png
images/chat-example-4-p-800.png /code/booosted/marketplace/static/images/chat-example-4-p-800.png
images/BG-Gradient-p-800.jpg /code/booosted/marketplace/static/images/BG-Gradient-p-800.jpg
images/Card-03-p-1080.png /code/booosted/marketplace/static/images/Card-03-p-1080.png
images/GoDaddy_Logo_-_The_GO.svg-p-800.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-800.png
images/lataus-2.png /code/booosted/marketplace/static/images/lataus-2.png
images/chat-example-4.png /code/booosted/marketplace/static/images/chat-example-4.png
images/Omawatti-logo-1-tummalle-01.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01.png
images/feather-og-p-130x130q80.png /code/booosted/marketplace/static/images/feather-og-p-130x130q80.png
images/Shopify-p-1080.webp /code/booosted/marketplace/static/images/Shopify-p-1080.webp
images/Action-sheet-05-p-1080.png /code/booosted/marketplace/static/images/Action-sheet-05-p-1080.png
images/step4-p-800.png /code/booosted/marketplace/static/images/step4-p-800.png
images/STL_logo_sininen_rgb-p-1600.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb-p-1600.jpg
images/Webflow-Logo-Gradient-p-500.jpg /code/booosted/marketplace/static/images/Webflow-Logo-Gradient-p-500.jpg
images/Webflow-Logo-Gradient-p-130x130q80.jpg /code/booosted/marketplace/static/images/Webflow-Logo-Gradient-p-130x130q80.jpg
images/chat-example-4-p-1080.png /code/booosted/marketplace/static/images/chat-example-4-p-1080.png
images/i3g94ms6tnowhmrkiuvo-p-500.webp /code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo-p-500.webp
images/step2-p-1080.png /code/booosted/marketplace/static/images/step2-p-1080.png
images/step2-p-500.png /code/booosted/marketplace/static/images/step2-p-500.png
images/Shopify-p-500.webp /code/booosted/marketplace/static/images/Shopify-p-500.webp
images/TehtySuomMadeIn_Sin_rgb.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb.png
images/motorspace-logo.png /code/booosted/marketplace/static/images/motorspace-logo.png
images/GoDaddy_Logo_-_The_GO.svg-p-500.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-500.png
images/WordPress_blue_logo.svg-p-500.png /code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-500.png
images/Action-sheet-06-p-800.png /code/booosted/marketplace/static/images/Action-sheet-06-p-800.png
images/chat-example-3-p-800.png /code/booosted/marketplace/static/images/chat-example-3-p-800.png
images/medo_oy_logo-removebg-preview.png /code/booosted/marketplace/static/images/medo_oy_logo-removebg-preview.png
images/logo-color-p-500.png /code/booosted/marketplace/static/images/logo-color-p-500.png
images/lataus__1_-removebg-preview.png /code/booosted/marketplace/static/images/lataus__1_-removebg-preview.png
images/feather-og-p-800.png /code/booosted/marketplace/static/images/feather-og-p-800.png
images/Omawatti-logo-1-tummalle-01-p-1080.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-1080.png
images/google-sites3788-p-800.jpg /code/booosted/marketplace/static/images/google-sites3788-p-800.jpg
images/favicon.png /code/booosted/marketplace/static/images/favicon.png
images/step1-adding-url-p-800.png /code/booosted/marketplace/static/images/step1-adding-url-p-800.png
images/lataa.png /code/booosted/marketplace/static/images/lataa.png
images/logo-iso-kopio-p-500.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-500.png
images/squarespace_logo_icon_181252.png /code/booosted/marketplace/static/images/squarespace_logo_icon_181252.png
images/Action-sheet-06-p-1080.png /code/booosted/marketplace/static/images/Action-sheet-06-p-1080.png
images/Apple-Iphone-14-pro-p-130x130q80.png /code/booosted/marketplace/static/images/Apple-Iphone-14-pro-p-130x130q80.png
images/Omawatti-logo-1-tummalle-01-p-800.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-800.png
images/GoDaddy_Logo_-_The_GO.svg-p-1080.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-1080.png
images/Facebook_1Facebook.webp /code/booosted/marketplace/static/images/Facebook_1Facebook.webp
images/BG-Gradient-p-500.jpg /code/booosted/marketplace/static/images/BG-Gradient-p-500.jpg
images/feather-og-p-500.png /code/booosted/marketplace/static/images/feather-og-p-500.png
images/Shopify.webp /code/booosted/marketplace/static/images/Shopify.webp
images/Connect-Icon.svg /code/booosted/marketplace/static/images/Connect-Icon.svg
images/step1-adding-url-p-500.png /code/booosted/marketplace/static/images/step1-adding-url-p-500.png
images/logo-iso-kopio-p-1600.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-1600.png
images/chat-example-3-p-1080.png /code/booosted/marketplace/static/images/chat-example-3-p-1080.png
images/Pixpa_Logo.jpg /code/booosted/marketplace/static/images/Pixpa_Logo.jpg
images/step3-p-500.png /code/booosted/marketplace/static/images/step3-p-500.png
images/wix-logo.png /code/booosted/marketplace/static/images/wix-logo.png
images/Card-04-p-500.png /code/booosted/marketplace/static/images/Card-04-p-500.png
images/Facebook_1-p-500.jpg /code/booosted/marketplace/static/images/Facebook_1-p-500.jpg
images/chat-example-6.png /code/booosted/marketplace/static/images/chat-example-6.png
images/card-1-p-500.png /code/booosted/marketplace/static/images/card-1-p-500.png
images/chat-example-4-p-500.png /code/booosted/marketplace/static/images/chat-example-4-p-500.png
images/TehtySuomMadeIn_Sin_rgb-p-800.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb-p-800.png
images/step3-p-1080.png /code/booosted/marketplace/static/images/step3-p-1080.png
images/logo-color.png /code/booosted/marketplace/static/images/logo-color.png
images/Card-02-p-800.png /code/booosted/marketplace/static/images/Card-02-p-800.png
images/BG-Gradient.jpg /code/booosted/marketplace/static/images/BG-Gradient.jpg
images/logo-iso-kopio.png /code/booosted/marketplace/static/images/logo-iso-kopio.png
images/step4-p-1080.png /code/booosted/marketplace/static/images/step4-p-1080.png
images/step3-p-800.png /code/booosted/marketplace/static/images/step3-p-800.png
images/GoDaddy_Logo_-_The_GO.svg.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg.png
images/chat-example-p-500.png /code/booosted/marketplace/static/images/chat-example-p-500.png
images/Logo-To-Use_1-p-800.jpg /code/booosted/marketplace/static/images/Logo-To-Use_1-p-800.jpg
images/Home-Icon.svg /code/booosted/marketplace/static/images/Home-Icon.svg
images/Omawatti-logo-1-tummalle-01-p-500.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-500.png
images/GoDaddy_Logo_-_The_GO.svg-p-2000.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-2000.png
images/chat-example-6-p-1080.png /code/booosted/marketplace/static/images/chat-example-6-p-1080.png
images/Small-Icon-01.svg /code/booosted/marketplace/static/images/Small-Icon-01.svg
images/step3.png /code/booosted/marketplace/static/images/step3.png
images/App-Screenshot-p-800.jpg /code/booosted/marketplace/static/images/App-Screenshot-p-800.jpg
images/logo-2.0-300x124-removebg-preview.png /code/booosted/marketplace/static/images/logo-2.0-300x124-removebg-preview.png
images/Card-02.png /code/booosted/marketplace/static/images/Card-02.png
images/step4.png /code/booosted/marketplace/static/images/step4.png
images/chat-example-6-p-500.png /code/booosted/marketplace/static/images/chat-example-6-p-500.png
images/Action-sheet-06-p-500.png /code/booosted/marketplace/static/images/Action-sheet-06-p-500.png
images/Zap-Icon.svg /code/booosted/marketplace/static/images/Zap-Icon.svg
images/Loading-Icon.svg /code/booosted/marketplace/static/images/Loading-Icon.svg
images/chat-example-p-800.png /code/booosted/marketplace/static/images/chat-example-p-800.png
images/App-showcase--Image.jpg /code/booosted/marketplace/static/images/App-showcase--Image.jpg
images/Omawatti-logo-1-tummalle-01-p-1600.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-1600.png
images/App-Screenshot-p-1080.jpg /code/booosted/marketplace/static/images/App-Screenshot-p-1080.jpg
images/Shopify-p-800.webp /code/booosted/marketplace/static/images/Shopify-p-800.webp
images/google-sites3788-p-500.jpg /code/booosted/marketplace/static/images/google-sites3788-p-500.jpg
images/Share-Icon.svg /code/booosted/marketplace/static/images/Share-Icon.svg
images/TehtySuomMadeIn_Sin_rgb-p-500.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb-p-500.png
images/Facebook_1-p-800.jpg /code/booosted/marketplace/static/images/Facebook_1-p-800.jpg
images/App-showcase--Image-p-130x130q80.jpg /code/booosted/marketplace/static/images/App-showcase--Image-p-130x130q80.jpg
images/BG-Gradient-p-1080.jpg /code/booosted/marketplace/static/images/BG-Gradient-p-1080.jpg
images/Action-sheet-05-p-500.png /code/booosted/marketplace/static/images/Action-sheet-05-p-500.png
images/Logo-To-Use_1Logo To Use.webp /code/booosted/marketplace/static/images/Logo-To-Use_1Logo To Use.webp
images/step2-p-800.png /code/booosted/marketplace/static/images/step2-p-800.png
images/Flag-Icon.svg /code/booosted/marketplace/static/images/Flag-Icon.svg
images/Card-02-p-500.png /code/booosted/marketplace/static/images/Card-02-p-500.png
images/logo-iso-kopio-p-2600.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-2600.png
images/Style-Guide-Icon.svg /code/booosted/marketplace/static/images/Style-Guide-Icon.svg
images/BG-Gradient-p-130x130q80.jpg /code/booosted/marketplace/static/images/BG-Gradient-p-130x130q80.jpg
images/Small-Icon-02.svg /code/booosted/marketplace/static/images/Small-Icon-02.svg
images/i3g94ms6tnowhmrkiuvo.webp /code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo.webp
images/wix-logo-p-500.png /code/booosted/marketplace/static/images/wix-logo-p-500.png
images/Shopify-p-1600.webp /code/booosted/marketplace/static/images/Shopify-p-1600.webp
images/d6012f676992d51a149e24c971cb73ad-p-500.webp /code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad-p-500.webp
images/STL_logo_sininen_rgb-p-500.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb-p-500.jpg
images/STL_logo_sininen_rgb.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb.jpg
images/TehtySuomMadeIn_Sin_rgb-p-1600.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb-p-1600.png
images/App-showcase--Image-p-500.jpg /code/booosted/marketplace/static/images/App-showcase--Image-p-500.jpg
images/Card-03-p-500.png /code/booosted/marketplace/static/images/Card-03-p-500.png
images/Card-03-p-800.png /code/booosted/marketplace/static/images/Card-03-p-800.png
images/TehtySuomMadeIn_Sin_rgb-p-1080.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb-p-1080.png
images/chat-example-3.png /code/booosted/marketplace/static/images/chat-example-3.png
images/Card-04.png /code/booosted/marketplace/static/images/Card-04.png
images/step2.png /code/booosted/marketplace/static/images/step2.png
images/webclip.png /code/booosted/marketplace/static/images/webclip.png
images/STL_logo_sininen_rgb-p-1080.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb-p-1080.jpg
images/feather-og.png /code/booosted/marketplace/static/images/feather-og.png
images/step1-adding-url-p-1080.png /code/booosted/marketplace/static/images/step1-adding-url-p-1080.png
css/normalize.css /code/booosted/marketplace/static/css/normalize.css
css/booosted.webflow.css /code/booosted/marketplace/static/css/booosted.webflow.css
css/webflow.css /code/booosted/marketplace/static/css/webflow.css
js/webflow.js /code/booosted/marketplace/static/js/webflow.js

django.contrib.staticfiles.finders.AppDirectoriesFinder (455 files)

Path Location
admin/css/responsive_rtl.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/responsive_rtl.css
admin/css/responsive.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/responsive.css
admin/css/rtl.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/rtl.css
admin/css/dashboard.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/dashboard.css
admin/css/login.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/login.css
admin/css/base.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/base.css
admin/css/forms.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/forms.css
admin/css/widgets.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/widgets.css
admin/css/autocomplete.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/autocomplete.css
admin/css/fonts.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/fonts.css
admin/css/changelists.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/changelists.css
admin/css/nav_sidebar.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/nav_sidebar.css
admin/css/vendor/select2/select2.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/vendor/select2/select2.css
admin/css/vendor/select2/LICENSE-SELECT2.md /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/vendor/select2/LICENSE-SELECT2.md
admin/css/vendor/select2/select2.min.css /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/css/vendor/select2/select2.min.css
admin/js/actions.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/actions.js
admin/js/SelectBox.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/SelectBox.js
admin/js/jquery.init.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/jquery.init.js
admin/js/calendar.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/calendar.js
admin/js/collapse.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/collapse.js
admin/js/nav_sidebar.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/nav_sidebar.js
admin/js/inlines.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/inlines.js
admin/js/core.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/core.js
admin/js/SelectFilter2.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js
admin/js/prepopulate.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/prepopulate.js
admin/js/prepopulate_init.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/prepopulate_init.js
admin/js/urlify.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/urlify.js
admin/js/change_form.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/change_form.js
admin/js/cancel.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/cancel.js
admin/js/popup_response.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/popup_response.js
admin/js/autocomplete.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/autocomplete.js
admin/js/admin/RelatedObjectLookups.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js
admin/js/admin/DateTimeShortcuts.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js
admin/js/vendor/jquery/jquery.min.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js
admin/js/vendor/jquery/LICENSE.txt /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/LICENSE.txt
admin/js/vendor/jquery/jquery.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js
admin/js/vendor/xregexp/xregexp.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js
admin/js/vendor/xregexp/xregexp.min.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js
admin/js/vendor/xregexp/LICENSE.txt /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE.txt
admin/js/vendor/select2/select2.full.min.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/select2.full.min.js
admin/js/vendor/select2/LICENSE.md /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/LICENSE.md
admin/js/vendor/select2/select2.full.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/select2.full.js
admin/js/vendor/select2/i18n/pl.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pl.js
admin/js/vendor/select2/i18n/pt-BR.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pt-BR.js
admin/js/vendor/select2/i18n/zh-TW.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-TW.js
admin/js/vendor/select2/i18n/ro.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ro.js
admin/js/vendor/select2/i18n/pt.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pt.js
admin/js/vendor/select2/i18n/it.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/it.js
admin/js/vendor/select2/i18n/id.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/id.js
admin/js/vendor/select2/i18n/bn.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bn.js
admin/js/vendor/select2/i18n/hr.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hr.js
admin/js/vendor/select2/i18n/el.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/el.js
admin/js/vendor/select2/i18n/ru.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ru.js
admin/js/vendor/select2/i18n/ja.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ja.js
admin/js/vendor/select2/i18n/sl.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sl.js
admin/js/vendor/select2/i18n/dsb.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/dsb.js
admin/js/vendor/select2/i18n/ne.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ne.js
admin/js/vendor/select2/i18n/sk.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sk.js
admin/js/vendor/select2/i18n/lv.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/lv.js
admin/js/vendor/select2/i18n/hsb.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hsb.js
admin/js/vendor/select2/i18n/eu.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/eu.js
admin/js/vendor/select2/i18n/sr.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sr.js
admin/js/vendor/select2/i18n/ms.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ms.js
admin/js/vendor/select2/i18n/fi.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fi.js
admin/js/vendor/select2/i18n/de.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/de.js
admin/js/vendor/select2/i18n/bs.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bs.js
admin/js/vendor/select2/i18n/ka.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ka.js
admin/js/vendor/select2/i18n/es.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/es.js
admin/js/vendor/select2/i18n/hu.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hu.js
admin/js/vendor/select2/i18n/ps.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ps.js
admin/js/vendor/select2/i18n/lt.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/lt.js
admin/js/vendor/select2/i18n/nl.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/nl.js
admin/js/vendor/select2/i18n/az.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/az.js
admin/js/vendor/select2/i18n/ca.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ca.js
admin/js/vendor/select2/i18n/is.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/is.js
admin/js/vendor/select2/i18n/tk.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/tk.js
admin/js/vendor/select2/i18n/th.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/th.js
admin/js/vendor/select2/i18n/cs.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/cs.js
admin/js/vendor/select2/i18n/fr.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fr.js
admin/js/vendor/select2/i18n/ar.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ar.js
admin/js/vendor/select2/i18n/et.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/et.js
admin/js/vendor/select2/i18n/fa.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fa.js
admin/js/vendor/select2/i18n/km.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/km.js
admin/js/vendor/select2/i18n/sr-Cyrl.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sr-Cyrl.js
admin/js/vendor/select2/i18n/he.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/he.js
admin/js/vendor/select2/i18n/zh-CN.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-CN.js
admin/js/vendor/select2/i18n/sv.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sv.js
admin/js/vendor/select2/i18n/bg.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bg.js
admin/js/vendor/select2/i18n/uk.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/uk.js
admin/js/vendor/select2/i18n/gl.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/gl.js
admin/js/vendor/select2/i18n/tr.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/tr.js
admin/js/vendor/select2/i18n/hy.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hy.js
admin/js/vendor/select2/i18n/hi.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hi.js
admin/js/vendor/select2/i18n/nb.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/nb.js
admin/js/vendor/select2/i18n/sq.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sq.js
admin/js/vendor/select2/i18n/ko.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ko.js
admin/js/vendor/select2/i18n/da.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/da.js
admin/js/vendor/select2/i18n/mk.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/mk.js
admin/js/vendor/select2/i18n/af.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/af.js
admin/js/vendor/select2/i18n/vi.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/vi.js
admin/js/vendor/select2/i18n/en.js /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/en.js
admin/fonts/Roboto-Light-webfont.woff /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Light-webfont.woff
admin/fonts/LICENSE.txt /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/fonts/LICENSE.txt
admin/fonts/Roboto-Bold-webfont.woff /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Bold-webfont.woff
admin/fonts/Roboto-Regular-webfont.woff /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Regular-webfont.woff
admin/fonts/README.txt /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/fonts/README.txt
admin/img/icon-unknown-alt.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-unknown-alt.svg
admin/img/tooltag-arrowright.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.svg
admin/img/icon-changelink.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-changelink.svg
admin/img/icon-no.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-no.svg
admin/img/search.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/search.svg
admin/img/icon-yes.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-yes.svg
admin/img/sorting-icons.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/sorting-icons.svg
admin/img/tooltag-add.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/tooltag-add.svg
admin/img/LICENSE /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/LICENSE
admin/img/icon-calendar.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-calendar.svg
admin/img/icon-viewlink.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-viewlink.svg
admin/img/icon-addlink.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-addlink.svg
admin/img/icon-deletelink.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-deletelink.svg
admin/img/icon-alert.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-alert.svg
admin/img/icon-unknown.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-unknown.svg
admin/img/icon-clock.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/icon-clock.svg
admin/img/calendar-icons.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/calendar-icons.svg
admin/img/selector-icons.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/selector-icons.svg
admin/img/README.txt /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/README.txt
admin/img/inline-delete.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/inline-delete.svg
admin/img/gis/move_vertex_on.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.svg
admin/img/gis/move_vertex_off.svg /usr/local/lib/python3.10/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.svg
rest_framework/docs/css/base.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/docs/css/base.css
rest_framework/docs/css/highlight.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/docs/css/highlight.css
rest_framework/docs/css/jquery.json-view.min.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/docs/css/jquery.json-view.min.css
rest_framework/docs/js/jquery.json-view.min.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/docs/js/jquery.json-view.min.js
rest_framework/docs/js/api.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/docs/js/api.js
rest_framework/docs/js/highlight.pack.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/docs/js/highlight.pack.js
rest_framework/docs/img/favicon.ico /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/docs/img/favicon.ico
rest_framework/docs/img/grid.png /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/docs/img/grid.png
rest_framework/css/font-awesome-4.0.3.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/css/font-awesome-4.0.3.css
rest_framework/css/bootstrap-theme.min.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/css/bootstrap-theme.min.css
rest_framework/css/prettify.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/css/prettify.css
rest_framework/css/bootstrap-tweaks.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/css/bootstrap-tweaks.css
rest_framework/css/bootstrap.min.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/css/bootstrap.min.css
rest_framework/css/default.css /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/css/default.css
rest_framework/js/default.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/js/default.js
rest_framework/js/bootstrap.min.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/js/bootstrap.min.js
rest_framework/js/ajax-form.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/js/ajax-form.js
rest_framework/js/coreapi-0.1.1.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/js/coreapi-0.1.1.js
rest_framework/js/prettify-min.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/js/prettify-min.js
rest_framework/js/jquery-3.5.1.min.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/js/jquery-3.5.1.min.js
rest_framework/js/csrf.js /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/js/csrf.js
rest_framework/fonts/glyphicons-halflings-regular.woff /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.woff
rest_framework/fonts/glyphicons-halflings-regular.ttf /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.ttf
rest_framework/fonts/glyphicons-halflings-regular.svg /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.svg
rest_framework/fonts/fontawesome-webfont.ttf /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/fontawesome-webfont.ttf
rest_framework/fonts/glyphicons-halflings-regular.eot /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.eot
rest_framework/fonts/fontawesome-webfont.svg /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/fontawesome-webfont.svg
rest_framework/fonts/fontawesome-webfont.eot /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/fontawesome-webfont.eot
rest_framework/fonts/fontawesome-webfont.woff /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/fontawesome-webfont.woff
rest_framework/fonts/glyphicons-halflings-regular.woff2 /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.woff2
rest_framework/img/grid.png /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/img/grid.png
rest_framework/img/glyphicons-halflings-white.png /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/img/glyphicons-halflings-white.png
rest_framework/img/glyphicons-halflings.png /usr/local/lib/python3.10/site-packages/rest_framework/static/rest_framework/img/glyphicons-halflings.png
drf-yasg/immutable.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/immutable.js
drf-yasg/insQ.min.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/insQ.min.js
drf-yasg/immutable.min.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/immutable.min.js
drf-yasg/redoc-init.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/redoc-init.js
drf-yasg/swagger-ui-init.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-init.js
drf-yasg/style.css /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/style.css
drf-yasg/insQ.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/insQ.js
drf-yasg/README /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/README
drf-yasg/redoc/redoc-logo.png /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/redoc/redoc-logo.png
drf-yasg/redoc/LICENSE /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/redoc/LICENSE
drf-yasg/redoc/redoc.min.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/redoc/redoc.min.js
drf-yasg/redoc/redoc.standalone.js.map /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/redoc/redoc.standalone.js.map
drf-yasg/redoc-old/redoc.min.js.map /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/redoc-old/redoc.min.js.map
drf-yasg/redoc-old/LICENSE /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/redoc-old/LICENSE
drf-yasg/redoc-old/redoc.min.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/redoc-old/redoc.min.js
drf-yasg/swagger-ui-dist/absolute-path.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/absolute-path.js
drf-yasg/swagger-ui-dist/swagger-ui-es-bundle-core.js.map /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-es-bundle-core.js.map
drf-yasg/swagger-ui-dist/swagger-ui.css /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui.css
drf-yasg/swagger-ui-dist/index.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/index.js
drf-yasg/swagger-ui-dist/NOTICE /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/NOTICE
drf-yasg/swagger-ui-dist/LICENSE /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/LICENSE
drf-yasg/swagger-ui-dist/swagger-ui-standalone-preset.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-standalone-preset.js
drf-yasg/swagger-ui-dist/swagger-ui-standalone-preset.js.map /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-standalone-preset.js.map
drf-yasg/swagger-ui-dist/swagger-ui-bundle.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-bundle.js
drf-yasg/swagger-ui-dist/swagger-ui-es-bundle.js.map /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-es-bundle.js.map
drf-yasg/swagger-ui-dist/swagger-ui-es-bundle.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-es-bundle.js
drf-yasg/swagger-ui-dist/oauth2-redirect.html /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/oauth2-redirect.html
drf-yasg/swagger-ui-dist/swagger-ui.js.map /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui.js.map
drf-yasg/swagger-ui-dist/swagger-ui-es-bundle-core.js /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-es-bundle-core.js
drf-yasg/swagger-ui-dist/swagger-ui.css.map /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui.css.map
drf-yasg/swagger-ui-dist/favicon-32x32.png /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/favicon-32x32.png
drf-yasg/swagger-ui-dist/swagger-ui-bundle.js.map /usr/local/lib/python3.10/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-bundle.js.map
admin/css/constance.css /usr/local/lib/python3.10/site-packages/constance/static/admin/css/constance.css
admin/js/constance.js /usr/local/lib/python3.10/site-packages/constance/static/admin/js/constance.js
django_extensions/css/jquery.autocomplete.css /usr/local/lib/python3.10/site-packages/django_extensions/static/django_extensions/css/jquery.autocomplete.css
django_extensions/js/jquery.bgiframe.js /usr/local/lib/python3.10/site-packages/django_extensions/static/django_extensions/js/jquery.bgiframe.js
django_extensions/js/jquery.ajaxQueue.js /usr/local/lib/python3.10/site-packages/django_extensions/static/django_extensions/js/jquery.ajaxQueue.js
django_extensions/js/jquery.autocomplete.js /usr/local/lib/python3.10/site-packages/django_extensions/static/django_extensions/js/jquery.autocomplete.js
django_extensions/img/indicator.gif /usr/local/lib/python3.10/site-packages/django_extensions/static/django_extensions/img/indicator.gif
images/STL_logo_sininen_rgb-p-800.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb-p-800.jpg
images/logo-iso-kopio-p-800.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-800.png
images/logo-iso-kopio-p-2000.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-2000.png
images/Apple-Iphone-14-pro.png /code/booosted/marketplace/static/images/Apple-Iphone-14-pro.png
images/App-Screenshot-p-500.jpg /code/booosted/marketplace/static/images/App-Screenshot-p-500.jpg
images/step1-adding-url.png /code/booosted/marketplace/static/images/step1-adding-url.png
images/chat-example-3-p-500.png /code/booosted/marketplace/static/images/chat-example-3-p-500.png
images/I-Icon.svg /code/booosted/marketplace/static/images/I-Icon.svg
images/Omawatti-logo-1-tummalle-01-p-2000.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-2000.png
images/Logo-To-Use_1-p-500.jpg /code/booosted/marketplace/static/images/Logo-To-Use_1-p-500.jpg
images/Small-Icon-03.svg /code/booosted/marketplace/static/images/Small-Icon-03.svg
images/chat-example.png /code/booosted/marketplace/static/images/chat-example.png
images/google-sites3788.jpg /code/booosted/marketplace/static/images/google-sites3788.jpg
images/Webflow-Logo-Gradient.jpg /code/booosted/marketplace/static/images/Webflow-Logo-Gradient.jpg
images/Card-04-p-800.png /code/booosted/marketplace/static/images/Card-04-p-800.png
images/App-Screenshot-p-130x130q80.jpg /code/booosted/marketplace/static/images/App-Screenshot-p-130x130q80.jpg
images/step4-p-500.png /code/booosted/marketplace/static/images/step4-p-500.png
images/logo-iso-kopio-p-1080.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-1080.png
images/lataus-removebg-preview.png /code/booosted/marketplace/static/images/lataus-removebg-preview.png
images/card-1.png /code/booosted/marketplace/static/images/card-1.png
images/WordPress_blue_logo.svg-p-800.png /code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-800.png
images/i3g94ms6tnowhmrkiuvo-p-800.webp /code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo-p-800.webp
images/motorspace-logo-p-500.png /code/booosted/marketplace/static/images/motorspace-logo-p-500.png
images/chat-example-6-p-800.png /code/booosted/marketplace/static/images/chat-example-6-p-800.png
images/Action-sheet-05-p-800.png /code/booosted/marketplace/static/images/Action-sheet-05-p-800.png
images/Action-sheet-05.png /code/booosted/marketplace/static/images/Action-sheet-05.png
images/Card-03.png /code/booosted/marketplace/static/images/Card-03.png
images/Action-sheet-06.png /code/booosted/marketplace/static/images/Action-sheet-06.png
images/Phone-Border-example.png /code/booosted/marketplace/static/images/Phone-Border-example.png
images/App-Screenshot.jpg /code/booosted/marketplace/static/images/App-Screenshot.jpg
images/Back-Icon.svg /code/booosted/marketplace/static/images/Back-Icon.svg
images/Arrow.svg /code/booosted/marketplace/static/images/Arrow.svg
images/d6012f676992d51a149e24c971cb73ad.webp /code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad.webp
images/App-showcase--Image-p-800.jpg /code/booosted/marketplace/static/images/App-showcase--Image-p-800.jpg
images/WordPress_blue_logo.svg.png /code/booosted/marketplace/static/images/WordPress_blue_logo.svg.png
images/GoDaddy_Logo_-_The_GO.svg-p-1600.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-1600.png
images/chat-example-4-p-800.png /code/booosted/marketplace/static/images/chat-example-4-p-800.png
images/BG-Gradient-p-800.jpg /code/booosted/marketplace/static/images/BG-Gradient-p-800.jpg
images/Card-03-p-1080.png /code/booosted/marketplace/static/images/Card-03-p-1080.png
images/GoDaddy_Logo_-_The_GO.svg-p-800.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-800.png
images/lataus-2.png /code/booosted/marketplace/static/images/lataus-2.png
images/chat-example-4.png /code/booosted/marketplace/static/images/chat-example-4.png
images/Omawatti-logo-1-tummalle-01.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01.png
images/feather-og-p-130x130q80.png /code/booosted/marketplace/static/images/feather-og-p-130x130q80.png
images/Shopify-p-1080.webp /code/booosted/marketplace/static/images/Shopify-p-1080.webp
images/Action-sheet-05-p-1080.png /code/booosted/marketplace/static/images/Action-sheet-05-p-1080.png
images/step4-p-800.png /code/booosted/marketplace/static/images/step4-p-800.png
images/STL_logo_sininen_rgb-p-1600.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb-p-1600.jpg
images/Webflow-Logo-Gradient-p-500.jpg /code/booosted/marketplace/static/images/Webflow-Logo-Gradient-p-500.jpg
images/Webflow-Logo-Gradient-p-130x130q80.jpg /code/booosted/marketplace/static/images/Webflow-Logo-Gradient-p-130x130q80.jpg
images/chat-example-4-p-1080.png /code/booosted/marketplace/static/images/chat-example-4-p-1080.png
images/i3g94ms6tnowhmrkiuvo-p-500.webp /code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo-p-500.webp
images/step2-p-1080.png /code/booosted/marketplace/static/images/step2-p-1080.png
images/step2-p-500.png /code/booosted/marketplace/static/images/step2-p-500.png
images/Shopify-p-500.webp /code/booosted/marketplace/static/images/Shopify-p-500.webp
images/TehtySuomMadeIn_Sin_rgb.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb.png
images/motorspace-logo.png /code/booosted/marketplace/static/images/motorspace-logo.png
images/GoDaddy_Logo_-_The_GO.svg-p-500.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-500.png
images/WordPress_blue_logo.svg-p-500.png /code/booosted/marketplace/static/images/WordPress_blue_logo.svg-p-500.png
images/Action-sheet-06-p-800.png /code/booosted/marketplace/static/images/Action-sheet-06-p-800.png
images/chat-example-3-p-800.png /code/booosted/marketplace/static/images/chat-example-3-p-800.png
images/medo_oy_logo-removebg-preview.png /code/booosted/marketplace/static/images/medo_oy_logo-removebg-preview.png
images/logo-color-p-500.png /code/booosted/marketplace/static/images/logo-color-p-500.png
images/lataus__1_-removebg-preview.png /code/booosted/marketplace/static/images/lataus__1_-removebg-preview.png
images/feather-og-p-800.png /code/booosted/marketplace/static/images/feather-og-p-800.png
images/Omawatti-logo-1-tummalle-01-p-1080.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-1080.png
images/google-sites3788-p-800.jpg /code/booosted/marketplace/static/images/google-sites3788-p-800.jpg
images/favicon.png /code/booosted/marketplace/static/images/favicon.png
images/step1-adding-url-p-800.png /code/booosted/marketplace/static/images/step1-adding-url-p-800.png
images/lataa.png /code/booosted/marketplace/static/images/lataa.png
images/logo-iso-kopio-p-500.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-500.png
images/squarespace_logo_icon_181252.png /code/booosted/marketplace/static/images/squarespace_logo_icon_181252.png
images/Action-sheet-06-p-1080.png /code/booosted/marketplace/static/images/Action-sheet-06-p-1080.png
images/Apple-Iphone-14-pro-p-130x130q80.png /code/booosted/marketplace/static/images/Apple-Iphone-14-pro-p-130x130q80.png
images/Omawatti-logo-1-tummalle-01-p-800.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-800.png
images/GoDaddy_Logo_-_The_GO.svg-p-1080.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-1080.png
images/Facebook_1Facebook.webp /code/booosted/marketplace/static/images/Facebook_1Facebook.webp
images/BG-Gradient-p-500.jpg /code/booosted/marketplace/static/images/BG-Gradient-p-500.jpg
images/feather-og-p-500.png /code/booosted/marketplace/static/images/feather-og-p-500.png
images/Shopify.webp /code/booosted/marketplace/static/images/Shopify.webp
images/Connect-Icon.svg /code/booosted/marketplace/static/images/Connect-Icon.svg
images/step1-adding-url-p-500.png /code/booosted/marketplace/static/images/step1-adding-url-p-500.png
images/logo-iso-kopio-p-1600.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-1600.png
images/chat-example-3-p-1080.png /code/booosted/marketplace/static/images/chat-example-3-p-1080.png
images/Pixpa_Logo.jpg /code/booosted/marketplace/static/images/Pixpa_Logo.jpg
images/step3-p-500.png /code/booosted/marketplace/static/images/step3-p-500.png
images/wix-logo.png /code/booosted/marketplace/static/images/wix-logo.png
images/Card-04-p-500.png /code/booosted/marketplace/static/images/Card-04-p-500.png
images/Facebook_1-p-500.jpg /code/booosted/marketplace/static/images/Facebook_1-p-500.jpg
images/chat-example-6.png /code/booosted/marketplace/static/images/chat-example-6.png
images/card-1-p-500.png /code/booosted/marketplace/static/images/card-1-p-500.png
images/chat-example-4-p-500.png /code/booosted/marketplace/static/images/chat-example-4-p-500.png
images/TehtySuomMadeIn_Sin_rgb-p-800.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb-p-800.png
images/step3-p-1080.png /code/booosted/marketplace/static/images/step3-p-1080.png
images/logo-color.png /code/booosted/marketplace/static/images/logo-color.png
images/Card-02-p-800.png /code/booosted/marketplace/static/images/Card-02-p-800.png
images/BG-Gradient.jpg /code/booosted/marketplace/static/images/BG-Gradient.jpg
images/logo-iso-kopio.png /code/booosted/marketplace/static/images/logo-iso-kopio.png
images/step4-p-1080.png /code/booosted/marketplace/static/images/step4-p-1080.png
images/step3-p-800.png /code/booosted/marketplace/static/images/step3-p-800.png
images/GoDaddy_Logo_-_The_GO.svg.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg.png
images/chat-example-p-500.png /code/booosted/marketplace/static/images/chat-example-p-500.png
images/Logo-To-Use_1-p-800.jpg /code/booosted/marketplace/static/images/Logo-To-Use_1-p-800.jpg
images/Home-Icon.svg /code/booosted/marketplace/static/images/Home-Icon.svg
images/Omawatti-logo-1-tummalle-01-p-500.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-500.png
images/GoDaddy_Logo_-_The_GO.svg-p-2000.png /code/booosted/marketplace/static/images/GoDaddy_Logo_-_The_GO.svg-p-2000.png
images/chat-example-6-p-1080.png /code/booosted/marketplace/static/images/chat-example-6-p-1080.png
images/Small-Icon-01.svg /code/booosted/marketplace/static/images/Small-Icon-01.svg
images/step3.png /code/booosted/marketplace/static/images/step3.png
images/App-Screenshot-p-800.jpg /code/booosted/marketplace/static/images/App-Screenshot-p-800.jpg
images/logo-2.0-300x124-removebg-preview.png /code/booosted/marketplace/static/images/logo-2.0-300x124-removebg-preview.png
images/Card-02.png /code/booosted/marketplace/static/images/Card-02.png
images/step4.png /code/booosted/marketplace/static/images/step4.png
images/chat-example-6-p-500.png /code/booosted/marketplace/static/images/chat-example-6-p-500.png
images/Action-sheet-06-p-500.png /code/booosted/marketplace/static/images/Action-sheet-06-p-500.png
images/Zap-Icon.svg /code/booosted/marketplace/static/images/Zap-Icon.svg
images/Loading-Icon.svg /code/booosted/marketplace/static/images/Loading-Icon.svg
images/chat-example-p-800.png /code/booosted/marketplace/static/images/chat-example-p-800.png
images/App-showcase--Image.jpg /code/booosted/marketplace/static/images/App-showcase--Image.jpg
images/Omawatti-logo-1-tummalle-01-p-1600.png /code/booosted/marketplace/static/images/Omawatti-logo-1-tummalle-01-p-1600.png
images/App-Screenshot-p-1080.jpg /code/booosted/marketplace/static/images/App-Screenshot-p-1080.jpg
images/Shopify-p-800.webp /code/booosted/marketplace/static/images/Shopify-p-800.webp
images/google-sites3788-p-500.jpg /code/booosted/marketplace/static/images/google-sites3788-p-500.jpg
images/Share-Icon.svg /code/booosted/marketplace/static/images/Share-Icon.svg
images/TehtySuomMadeIn_Sin_rgb-p-500.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb-p-500.png
images/Facebook_1-p-800.jpg /code/booosted/marketplace/static/images/Facebook_1-p-800.jpg
images/App-showcase--Image-p-130x130q80.jpg /code/booosted/marketplace/static/images/App-showcase--Image-p-130x130q80.jpg
images/BG-Gradient-p-1080.jpg /code/booosted/marketplace/static/images/BG-Gradient-p-1080.jpg
images/Action-sheet-05-p-500.png /code/booosted/marketplace/static/images/Action-sheet-05-p-500.png
images/Logo-To-Use_1Logo To Use.webp /code/booosted/marketplace/static/images/Logo-To-Use_1Logo To Use.webp
images/step2-p-800.png /code/booosted/marketplace/static/images/step2-p-800.png
images/Flag-Icon.svg /code/booosted/marketplace/static/images/Flag-Icon.svg
images/Card-02-p-500.png /code/booosted/marketplace/static/images/Card-02-p-500.png
images/logo-iso-kopio-p-2600.png /code/booosted/marketplace/static/images/logo-iso-kopio-p-2600.png
images/Style-Guide-Icon.svg /code/booosted/marketplace/static/images/Style-Guide-Icon.svg
images/BG-Gradient-p-130x130q80.jpg /code/booosted/marketplace/static/images/BG-Gradient-p-130x130q80.jpg
images/Small-Icon-02.svg /code/booosted/marketplace/static/images/Small-Icon-02.svg
images/i3g94ms6tnowhmrkiuvo.webp /code/booosted/marketplace/static/images/i3g94ms6tnowhmrkiuvo.webp
images/wix-logo-p-500.png /code/booosted/marketplace/static/images/wix-logo-p-500.png
images/Shopify-p-1600.webp /code/booosted/marketplace/static/images/Shopify-p-1600.webp
images/d6012f676992d51a149e24c971cb73ad-p-500.webp /code/booosted/marketplace/static/images/d6012f676992d51a149e24c971cb73ad-p-500.webp
images/STL_logo_sininen_rgb-p-500.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb-p-500.jpg
images/STL_logo_sininen_rgb.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb.jpg
images/TehtySuomMadeIn_Sin_rgb-p-1600.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb-p-1600.png
images/App-showcase--Image-p-500.jpg /code/booosted/marketplace/static/images/App-showcase--Image-p-500.jpg
images/Card-03-p-500.png /code/booosted/marketplace/static/images/Card-03-p-500.png
images/Card-03-p-800.png /code/booosted/marketplace/static/images/Card-03-p-800.png
images/TehtySuomMadeIn_Sin_rgb-p-1080.png /code/booosted/marketplace/static/images/TehtySuomMadeIn_Sin_rgb-p-1080.png
images/chat-example-3.png /code/booosted/marketplace/static/images/chat-example-3.png
images/Card-04.png /code/booosted/marketplace/static/images/Card-04.png
images/step2.png /code/booosted/marketplace/static/images/step2.png
images/webclip.png /code/booosted/marketplace/static/images/webclip.png
images/STL_logo_sininen_rgb-p-1080.jpg /code/booosted/marketplace/static/images/STL_logo_sininen_rgb-p-1080.jpg
images/feather-og.png /code/booosted/marketplace/static/images/feather-og.png
images/step1-adding-url-p-1080.png /code/booosted/marketplace/static/images/step1-adding-url-p-1080.png
css/normalize.css /code/booosted/marketplace/static/css/normalize.css
css/booosted.webflow.css /code/booosted/marketplace/static/css/booosted.webflow.css
css/webflow.css /code/booosted/marketplace/static/css/webflow.css
js/webflow.js /code/booosted/marketplace/static/js/webflow.js
debug_toolbar/css/print.css /usr/local/lib/python3.10/site-packages/debug_toolbar/static/debug_toolbar/css/print.css
debug_toolbar/css/toolbar.css /usr/local/lib/python3.10/site-packages/debug_toolbar/static/debug_toolbar/css/toolbar.css
debug_toolbar/js/history.js /usr/local/lib/python3.10/site-packages/debug_toolbar/static/debug_toolbar/js/history.js
debug_toolbar/js/toolbar.js /usr/local/lib/python3.10/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.js
debug_toolbar/js/redirect.js /usr/local/lib/python3.10/site-packages/debug_toolbar/static/debug_toolbar/js/redirect.js
debug_toolbar/js/timer.js /usr/local/lib/python3.10/site-packages/debug_toolbar/static/debug_toolbar/js/timer.js
debug_toolbar/js/utils.js /usr/local/lib/python3.10/site-packages/debug_toolbar/static/debug_toolbar/js/utils.js
silk/favicon-16x16.png /usr/local/lib/python3.10/site-packages/silk/static/silk/favicon-16x16.png
silk/filter2.png /usr/local/lib/python3.10/site-packages/silk/static/silk/filter2.png
silk/filter.png /usr/local/lib/python3.10/site-packages/silk/static/silk/filter.png
silk/favicon-32x32.png /usr/local/lib/python3.10/site-packages/silk/static/silk/favicon-32x32.png
silk/css/pages/clear_db.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/clear_db.css
silk/css/pages/raw.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/raw.css
silk/css/pages/sql_detail.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/sql_detail.css
silk/css/pages/base.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/base.css
silk/css/pages/profiling.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/profiling.css
silk/css/pages/root_base.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/root_base.css
silk/css/pages/cprofile.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/cprofile.css
silk/css/pages/profile_detail.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/profile_detail.css
silk/css/pages/request.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/request.css
silk/css/pages/summary.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/summary.css
silk/css/pages/detail_base.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/detail_base.css
silk/css/pages/requests.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/requests.css
silk/css/pages/sql.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/pages/sql.css
silk/css/components/cell.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/components/cell.css
silk/css/components/heading.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/components/heading.css
silk/css/components/row.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/components/row.css
silk/css/components/numeric.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/components/numeric.css
silk/css/components/fonts.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/components/fonts.css
silk/css/components/colors.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/components/colors.css
silk/css/components/summary.css /usr/local/lib/python3.10/site-packages/silk/static/silk/css/components/summary.css
silk/js/pages/request.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/request.js
silk/js/pages/root_base.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/root_base.js
silk/js/pages/sql_detail.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/sql_detail.js
silk/js/pages/clear_db.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/clear_db.js
silk/js/pages/detail_base.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/detail_base.js
silk/js/pages/summary.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/summary.js
silk/js/pages/profiling.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/profiling.js
silk/js/pages/raw.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/raw.js
silk/js/pages/requests.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/requests.js
silk/js/pages/profile_detail.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/profile_detail.js
silk/js/pages/base.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/pages/base.js
silk/js/components/filters.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/components/filters.js
silk/js/components/cell.js /usr/local/lib/python3.10/site-packages/silk/static/silk/js/components/cell.js
silk/lib/jquery.datetimepicker.css /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/jquery.datetimepicker.css
silk/lib/bootstrap-theme.min.css /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/bootstrap-theme.min.css
silk/lib/jquery-ui-1.13.1.min.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/jquery-ui-1.13.1.min.js
silk/lib/bootstrap-datetimepicker.min.css /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/bootstrap-datetimepicker.min.css
silk/lib/viz-lite.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/viz-lite.js
silk/lib/svg-pan-zoom.min.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/svg-pan-zoom.min.js
silk/lib/bootstrap.min.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/bootstrap.min.js
silk/lib/sortable.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/sortable.js
silk/lib/jquery.datetimepicker.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/jquery.datetimepicker.js
silk/lib/bootstrap.min.css /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/bootstrap.min.css
silk/lib/bootstrap-datetimepicker.min.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/bootstrap-datetimepicker.min.js
silk/lib/jquery-ui-1.13.1.min.css /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/jquery-ui-1.13.1.min.css
silk/lib/jquery-3.6.0.min.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/jquery-3.6.0.min.js
silk/lib/highlight/highlight.pack.js /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/highlight/highlight.pack.js
silk/lib/highlight/foundation.css /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/highlight/foundation.css
silk/lib/images/ui-icons_ffffff_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_ffffff_256x240.png
silk/lib/images/ui-bg_glass_100_f6f6f6_1x400.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_glass_100_f6f6f6_1x400.png
silk/lib/images/ui-icons_ef8c08_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_ef8c08_256x240.png
silk/lib/images/ui-bg_flat_10_000000_40x100.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_flat_10_000000_40x100.png
silk/lib/images/ui-bg_diagonals-thick_18_b81900_40x40.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_diagonals-thick_18_b81900_40x40.png
silk/lib/images/ui-bg_highlight-soft_75_ffe45c_1x100.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
silk/lib/images/ui-bg_gloss-wave_35_f6a828_500x100.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_gloss-wave_35_f6a828_500x100.png
silk/lib/images/ui-icons_444444_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_444444_256x240.png
silk/lib/images/ui-bg_glass_100_fdf5ce_1x400.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_glass_100_fdf5ce_1x400.png
silk/lib/images/ui-icons_777620_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_777620_256x240.png
silk/lib/images/ui-icons_222222_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_222222_256x240.png
silk/lib/images/ui-icons_777777_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_777777_256x240.png
silk/lib/images/ui-icons_ffd27a_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_ffd27a_256x240.png
silk/lib/images/ui-icons_228ef1_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_228ef1_256x240.png
silk/lib/images/ui-icons_cc0000_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_cc0000_256x240.png
silk/lib/images/ui-bg_glass_65_ffffff_1x400.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_glass_65_ffffff_1x400.png
silk/lib/images/ui-bg_diagonals-thick_20_666666_40x40.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_diagonals-thick_20_666666_40x40.png
silk/lib/images/ui-bg_highlight-soft_100_eeeeee_1x100.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
silk/lib/images/ui-icons_555555_256x240.png /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/ui-icons_555555_256x240.png
silk/lib/images/animated-overlay.gif /usr/local/lib/python3.10/site-packages/silk/static/silk/lib/images/animated-overlay.gif
silk/fonts/glyphicons-halflings-regular.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/glyphicons-halflings-regular.woff
silk/fonts/glyphicons-halflings-regular.ttf /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/glyphicons-halflings-regular.ttf
silk/fonts/glyphicons-halflings-regular.svg /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/glyphicons-halflings-regular.svg
silk/fonts/glyphicons-halflings-regular.eot /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/glyphicons-halflings-regular.eot
silk/fonts/glyphicons-halflings-regular.woff2 /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/glyphicons-halflings-regular.woff2
silk/fonts/fantasque/FantasqueSansMono-Bold.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fantasque/FantasqueSansMono-Bold.woff
silk/fonts/fantasque/FantasqueSansMono-Regular.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fantasque/FantasqueSansMono-Regular.woff
silk/fonts/fantasque/FantasqueSansMono-RegItalic.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fantasque/FantasqueSansMono-RegItalic.woff
silk/fonts/fantasque/FantasqueSansMono-BoldItalic.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fantasque/FantasqueSansMono-BoldItalic.woff
silk/fonts/fira/FiraSans-BoldItalic.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fira/FiraSans-BoldItalic.woff
silk/fonts/fira/FiraSans-RegularItalic.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fira/FiraSans-RegularItalic.woff
silk/fonts/fira/FiraSans-LightItalic.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fira/FiraSans-LightItalic.woff
silk/fonts/fira/FiraSans-Light.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fira/FiraSans-Light.woff
silk/fonts/fira/FiraSans-Regular.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fira/FiraSans-Regular.woff
silk/fonts/fira/FiraSans-MediumItalic.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fira/FiraSans-MediumItalic.woff
silk/fonts/fira/FiraSans-Bold.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fira/FiraSans-Bold.woff
silk/fonts/fira/FiraSans-Medium.woff /usr/local/lib/python3.10/site-packages/silk/static/silk/fonts/fira/FiraSans-Medium.woff

Templates (2 rendered)

Template path

  1. /code/config/templates

Templates

index.html
/code/booosted/marketplace/templates/index.html
Toggle context {'False': False, 'None': None, 'True': True} {'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'config': <constance.LazyConfig object at 0x7f873b91ac20>, 'csrf_token': <SimpleLazyObject: 'hj68vZwwlIrNoqzAQve94QV9wxQbIXDv4KRLjYLzT7MsmzPDL5ST70aEgZiL21Im'>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7f87289647f0>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7f8728c3b310>, 'request': '<<request>>', 'user': <SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7f8728c39510>>>} {'view': <django.views.generic.base.TemplateView object at 0x7f8728857a90>}
base.html
/code/config/templates/base.html
Toggle context {'False': False, 'None': None, 'True': True} {'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'config': <constance.LazyConfig object at 0x7f873b91ac20>, 'csrf_token': <SimpleLazyObject: 'hj68vZwwlIrNoqzAQve94QV9wxQbIXDv4KRLjYLzT7MsmzPDL5ST70aEgZiL21Im'>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7f87289647f0>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7f8728c3b310>, 'request': '<<request>>', 'user': <SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7f8728c39510>>>} {'view': <django.views.generic.base.TemplateView object at 0x7f8728857a90>}

Context processors

django.template.context_processors.csrf
Toggle context {'csrf_token': <SimpleLazyObject: 'hj68vZwwlIrNoqzAQve94QV9wxQbIXDv4KRLjYLzT7MsmzPDL5ST70aEgZiL21Im'>}
django.template.context_processors.debug
Toggle context {}
django.template.context_processors.request
Toggle context {'request': <WSGIRequest: GET '/'>}
constance.context_processors.config
Toggle context {'config': <constance.LazyConfig object at 0x7f873b91ac20>}
django.contrib.auth.context_processors.auth
Toggle context {'user': <SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7f8728c39510>>>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7f8728c3b310>}
django.contrib.messages.context_processors.messages
Toggle context {'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7f87289647f0>, 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40}}

Cache calls from 1 backend

Summary

Total calls Total time Cache hits Cache misses
0 0 ms 0 0

Commands

add get set get_or_set touch delete clear get_many set_many delete_many has_key incr decr incr_version decr_version
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Signals

Signal Receivers
class_prepared FSMField._collect_transitions, FSMField._collect_transitions, FSMField._collect_transitions, FSMField._collect_transitions
connection_created
got_request_exception
m2m_changed
post_delete ModelBase.update_changed, ModelBase.update_changed, ModelBase.update_changed
post_init ImageField.update_dimension_fields
post_migrate create_permissions, create_contenttypes, ConstanceConfig.create_perm
post_save ModelBase.update_changed, ModelBase.update_changed, ModelBase.update_changed, ModelBase.update_changed, DatabaseBackend.clear, DatabaseBackend.clear
pre_delete ModelBase.changed, ModelBase.update_changed
pre_init
pre_migrate inject_rename_contenttypes_operations
pre_save ModelBase.changed
request_finished close_old_connections, close_caches, reset_urlconf
request_started reset_queries, close_old_connections
setting_changed reset_cache, clear_cache_handlers, update_installed_apps, update_connections_time_zone, clear_routers_cache, reset_template_engines, clear_serializers_cache, language_changed, localize_settings_changed, file_storage_changed, complex_setting_changed, root_urlconf_changed, static_storage_changed, static_finders_changed, auth_password_validators_changed, user_model_swapped, update_toolbar_config, reset_hashers, reload_api_settings, reload_api_settings, ProfilerResultStorage._clear_cached_properties, CompressedManifestStaticFilesStorage._clear_cached_properties, Settings.change_setting, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties

Log messages

No messages logged.