pronamic / siteground

Repository to keep track of the collaboration between Pronamic and SiteGround.
1 stars 0 forks source link

SiteGround and Cloudflare APO #1

Open remcotolsma opened 1 year ago

remcotolsma commented 1 year ago

Cached "I am a robot" page in combination with Cloudflare Ticket 4239220 May 18, 2022 09:15 RESOLVED

Hello support,

Sometimes it happens that the "I am a robot" pages get cached. We use CloudFlare with the APO integration (no additional settings). Is there a way we can exclude these pages from being cached?

I hope you have a solution for this.

Thanks in advance.

Response from @SiteGround:

Hello Pronamic,

Thank you for contacting our Help Desk.

We are aware of the problem that occurs when the Cloudflare’s Automatic Platform Optimization (APO) is used along with our Captcha protection mechanism.

When requests from an IP are detected as suspicious by our Anti-Bot AI a Captcha challenge is visualised. The standard workflow is to solve the challenge and open the requested URL. The Cloudflare system ignores the cache-control: no-cache HTTP header and caches the Captcha page. Then the cached Captcha page is returned to the visitor with the corresponding IP and there is no option to solve it and proceed to the actual website’s page.

The Cloudflare developers are informed for the issue. It should be resolved on their end by implementing an exclude list where the corresponding path (/.well-known/) for the Captcha page can be added. Additionally, the Cloudflare system should honour the cache-control: no-store, max-age=0 headers that we already send for the Captcha page.

The workaround which we can offer from our end for users that want to use the Cloudflare APO is to temporarily deactivate our Captcha protection mechanism. Once the Cloudflare developers fix the issue either by adding an exclude list in their system or by honouring the cache-control headers it can be reactivated.

I already deactivated the Captcha for the website thermopatch.com, so there should be no further issues.

For any other assistance, please feel free to contact us again at any time.

Best Regards,

Dennitsa Milcheva Technical Support Team

remcotolsma commented 1 year ago

I did some further research and also found this post: https://community.cloudflare.com/t/something-weird-with-my-domain-maybe-a-redirect-loop/338045/26

I was able to capture a few requests.

Yes, I can now see it’s cached by Cloudflare. You’re using APO. You’re kind of stuck here.

APO is made to cache responses for pages. But if SG modifies your page to include a Redirect header, Cloudflare is going to cache that.

You have two options:

  1. Get Siteground to stop using that CAPTCHA system for your site.
  2. Disable APO.
remcotolsma commented 1 year ago

I think the core of the problem lies in SiteGround's captcha mechanism. As soon as this mechanism is triggered, SiteGround gives the following HTML response for, for example, the homepage https://www.example.com/:

<html><meta http-equiv="refresh" content="0;/.well-known/captcha/"></meta></head></html>

I expected SiteGround to do this via an HTTP redirect, but apparently they do this via an HTML meta refresh tag.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv

Schermafbeelding 2022-10-14 om 15 08 23
remcotolsma commented 1 year ago

Just had a chat with @SiteGround about this issue: https://my.siteground.com/support/history/chat/S3czeWEzSU0=/8616454

I have other technical issues Chat 8616454 Oct 14, 2022 15:32 CLOSED

Remco Tolsma: We have captcha problems with SiteGround and Cloudflare APO and would like to receive more information about SiteGround's captcha mechanisme and developments after https://my.siteground.com/support/history/ticket/S3czeWEzSU0=/4239220.

Kameliya R. : Hello and welcome to SiteGround Web Hosting Services, Remco!

Kameliya R. : I hope you are doing well today!

Kameliya R. : I see your message above, can you elaborate some more so I can assist you better? What is the issue that you are experiencing on the site right now?

Remco Tolsma: We sometimes see captcha redirect loops for all visitors to example.com.

Remco Tolsma: In May you stated that SiteGround and Cloudflare are aware of this issue, what is the current status?

Kameliya R. : Indeed they are aware of this issue but it is something that cloudflare must resolve on their end, we do not have access to their platform to check the status of the solution that they are working on.

Kameliya R. : In case you are still seeing this message, most likely they have not implemented a solution yet, but what we can do is disable the anti bot captcha on our server

Remco Tolsma: Ok, i also noticed that your recapcha machnisme works with a HTML meta refresh tag: <meta http-equiv="refresh" content="0;/.well-known/captcha/"></meta> Is that a 'good practice' or is that mechanisme the cause of this issue?

Remco Tolsma: It's ok if you want to create a ticket for this chat so a developer of the captcha mechanisme can answer this question.

Kameliya R. : The captcha is set in a way to protect your site from IPs detected as suspicious on our server, normally if the IP is not suspicious the visitor can just complete it and it will not show again for their IP. As for the reason for the issue, this is not something we can confirm here on the chat

Kameliya R. : Indeed we will have to create a ticket in this case as we here on the chat do not have access to disable the captcha

Remco Tolsma: Ok, yes maybe you should take matters into your own hands and not wait for Cloudflare. It's ok to create a ticket, maybe we can help each other in a solution.

Kameliya R. : I just posted the ticket for you and included your last question as well. Our advanced technical team is already working on your case, they will update the ticket in the next 15 minutes, once they do you will receive a notification email from us and you will be able to see the reply here url:https://my.siteground.com/support/history

Remco Tolsma: If disabling captcha is the only solution for now, I think that should be done.

Remco Tolsma: Can you fix that in the meantime?

Kameliya R. : It is what I requested in the ticket for you, we here on the chat do not have access to disable the captcha, but our techs do and they will disable the captcha for you so that all your visitors can access the site

Remco Tolsma: Ah ok, great, thanks.

Kameliya R. : You are most welcome :) If you need help with anything else, do not hesitate to reach us back anytime, we are available 24/7. Have a great weekend!

System: Kameliya R. has ended the chat


Technical Issues Ticket 4316552 Oct 14, 2022 15:29 OPEN PROCESSING

On behalf of client: Hello,

We sometimes see captcha redirect loops for all visitors to example.com. We reported the same issue in ticket 4239220. Could you please disable the captcha for this site as well?

I also noticed that your recapcha mechanism works with a HTML meta refresh tag:

<meta http-equiv="refresh" content="0;/.well-known/captcha/"></meta>

Is that a 'good practice' or is that mechanism the cause of this issue?

remcotolsma commented 1 year ago

Nikolay Hadzhiyski Oct 14, 2022 15:38

Hello Remco,

Thank you for contacting our Help Desk.

I have carefully reviewed the case and I see that your website uses CloudFlare and there is a slight issue when Cloudflare’s Automatic Platform Optimization (APO) is being used, which seems to have caused the issue.

Considering this, I have disabled the AI Captcha protection for the website and the issue should be no longer present.

As for your other question, the way that the AI Captcha redirect is working is not the reason for the issue but there is a slight conflict as explained above.

I hope that you will find this information helpful and if you need any other assistance, please do not hesitate to contact us again at any time.

Best Regards,

Nikolay Hadzhiyski Senior Technical Support

I'm not satisfied with the answer yet 😏:

From https://my.siteground.com/support/history/ticket/S3czeWEzSU0=/4239220:

"The Cloudflare developers are informed for the issue. It should be resolved on their end by implementing an exclude list where the corresponding path (/.well-known/) for the Captcha page can be added.

Have you been in contact with Cloudflare about this since May?

"Additionally, the Cloudflare system should honour the cache-control: no-store, max-age=0 headers that we already send for the Captcha page.""

Currently the captha mechanisme adjusts the output of https://www.example.com/ with a meta http-equiv refresh tag. Can you explain in more detail why you are doing this this way?

Can't the captcha be implemented in a better way so that we don't have to open such tickets every time?

"The workaround which we can offer from our end for users that want to use the Cloudflare APO is to temporarily deactivate our Captcha protection mechanism."

What is exactly temporarily? It is not the case that you accidentally reactivate the captcha after, for example, updates within your server architecture?

Does the captcha system make good use of, for example, the headers mentioned at https://developers.cloudflare.com/automatic-platform-optimization/reference/page-rule-integration/?

remcotolsma commented 1 year ago

Nikolay Hadzhiyski Oct 14, 2022 16:39

Thank you for your reply.

I will address your questions in the same order that they are submitted.

Have you been in contact with Cloudflare about this since May?

This has been reported to CloudFlare but since our partnership with them is over, we do not have any information from them.

Currently the captha meachnisme adjusts the output of https://www.example.com/ with a meta http-equiv refresh tag. Can you explain in more detail why you are doing this this way?

We have conducted an extensive number of tests and this method gives us the best results in general, which is the reason why we are currently using it. We cannot give you an exact reason for what's behind this decision but I would like to assure you that this has been tested quite a lot before the decision was made.

Can't the captcha be implemented in a better way so that we don't have to open such tickets every time?

We would like to thank you for the feedback but I would like to inform you that this is how the system works and you can decide if you wish to use the AI Captcha protection or not. If you wish us to stop it, we will honor your decision and this is what I have actually done before posting my previous reply.

What is exactly temporarily? It is not the case that you accidentally reactivate the captcha after, for example, updates within your server architecture?

Kindly note that once the AI Captcha protection is disabled for any Site, it will not be automatically activated unless you wish us to do so, which means that the protection would remain disabled for your example.com Site until you contact us to enable it again.

Does the captcha system make good use of, for example, the headers mentioned at https://developers.cloudflare.com/automatic-platform-optimization/reference/page-rule-integration/?

As much as we wish to provide you with more information, I am afraid that we cannot provide more details on how the system works internally and all public information is available in the following article.

https://www.siteground.com/blog/new-anti-bot-ai/

If any other assistance is required, please do not hesitate to contact us again by submitting a new Support Request.

Best Regards,

Nikolay Hadzhiyski Senior Technical Support

remcotolsma commented 1 year ago

Remco Tolsma Oct 15, 2022 11:22

Kindly note that once the AI Captcha protection is disabled for any Site, it will not be automatically activated unless you wish us to do so, which means that the protection would remain disabled for your example.com Site until you contact us to enable it again.

That's good to hear, do you have plans to make this manageable in the site tools dashboard?

As much as we wish to provide you with more information, I am afraid that we cannot provide more details on how the system works internally and all public information is available in the following article.

Isn't this a bit of a contradiction, you would like to give us more information, but you don't. Whether or not the relevant headers are used is not a secret, is it? Maybe using these headers can solve the problem? It would be great if you show some effort to improve the system.

remcotolsma commented 1 year ago

Vladislav Yastreba Oct 15, 2022 11:32

Hello Remco,

As mentioned in the previous ticket, CloudFlare's system is currently ignoring the following headers which is why the issue occurs:

cache-control: no-store, max-age=0

We have already pointed this out to them but they have not yet implemented a solution. I will forward your feedback in my daily report but I do not have more information to add on the matter at this time.

For questions and concerns not related to the issue discussed in this ticket, please open a new support request via the appropriate category.

Best Regards,

Vladislav Yastreba Technical Support Team

remcotolsma commented 1 year ago

Remco Tolsma Oct 17, 2022 09:25

Hello Vladislav or colleague,

Can you also answer my other question?

Kindly note that once the AI Captcha protection is disabled for any Site, it will not be automatically activated unless you wish us to do so, which means that the protection would remain disabled for your example.com Site until you contact us to enable it again.

That's good to hear, do you have plans to make this manageable in the site tools dashboard?

We have already pointed this out to them but they have not yet implemented a solution.

Do also have a ticket or reference number from Cloudflare where we can refer to? We would like to check with Cloudflare about the status of this matter between Cloudflare and SiteGround.

As you hopefully realize, we would like clarity, closing tickets so quickly without answering questions is not going to work for us.

Remco Tolsma Pronamic

remcotolsma commented 1 year ago

Dennitsa Milcheva Oct 17, 2022 09:37

Hello Remco,

I will answer your questions in order:

That's good to hear, do you have plans to make this manageable in the site tools dashboard?

We do not have such plans at the moment, however, this could change in the future and if such a change is implemented we will announce it. Still, as the Antibot AI Captcha is protecting our servers and if this option is available for our clients, this could expose our servers to potential attacks, I could not say if such an option would be considered. Of course, if you have any problem with it, you can always contact us and we will gladly assist.

Do also have a ticket or reference number from Cloudflare where we can refer to? We would like to check with Cloudflare about the status of this matter between Cloudflare and SiteGround.

We could not provide such information and since our partnership with Cloudflare ended, it is possible that they will not take our requests into consideration. You can contact them directly and discuss the problem with them if you would like.

I am sorry that you feel like we are closing the tickets without giving the needed clarity first, so I will leave the ticket open for now so you can contact us if you have any more questions.

Best Regards,

Dennitsa Milcheva Technical Support Team

remcotolsma commented 1 year ago

Remco Tolsma Oct 18, 2022 14:40

Hello Dennitsa,

Thanks for your reply.

We do not have such plans at the moment, however, this could change in the future and if such a change is implemented we will announce it.

Is there a way for site owners (us) to check / verify that the SiteGround captcha protection mechanism is disabled? For example via Site Tools or possibly via an SSH command?

We could not provide such information and since our partnership with Cloudflare ended, it is possible that they will not take our requests into consideration.

It remains a bit in the middle whether you might also be able to solve the problem without Cloudflare. Are you sure that using for example "CDN-Cache-Control" headers in the captcha protection mechanism cannot solve the problem?

Whether or not there is a partnership with Cloudflare should not matter anyway. If Cloudflare or SiteGround does not handle something properly, then it must be possible to solve it by one of the parties, right?

Apart from this, our customers continue to suffer from caching issues and other short-term failures. If we are using Cloudflare APO would you also advise disabling SiteGround Dynamic Caching? If yes/no, why/why not?

Yesterday at 2022-10-17 07:55:53 UTC the WordPress editors notices several "Web server is down" notices from Cloudflare (see attachments). Is it possible to find out what exactly went wrong at that moment?

I realize I am asking several questions, please take the time to answer these questions carefully. Thank you.

Remco Tolsma Pronamic

remcotolsma commented 1 year ago

Apparently SiteGround has captcha enabled again after all.

https://www.casinonieuws.nl/.well-known/captcha/?r=%2Fwp-admin%2F

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
    <title>Robot Challenge Screen</title>
    <style>
    @import url('https://fonts.googleapis.com/css?family=Montserrat:400,700|Open+Sans:300,300i,400,700');
    body {
        margin: 0;
        padding: 0 0 20px;
        font: 16px/24px 'Open Sans', sans-serif;
        color: #666;
        background-color: white;
        text-rendering: optimizeLegibility
    }

    h1, h2 {
        line-height: normal;
        margin: 0
    }

    a {
        color: #4b99d0;
        text-decoration: none
    }

    a:hover {
        text-decoration: underline
    }

    p {
        margin: 0 0 20px
    }

    #wrapper {
        margin: 0 auto;
        padding: 85px 20px;
        position: relative;
        max-width: 1200px;
        text-align: center;
        color: #444
    }

    h1 {
        font: bold 36px/40px 'Montserrat', sans-serif;
        padding: 0 20px 15px
    }

    h2 {
        padding: 10px 0 50px;
        font: italic 20px/34px 'Open Sans', sans-serif;
        padding: 0 20px
    }

    .head-image {
        width: 208px;
        height: 208px;
        background-color: #de7047;
        border-radius: 50%;
        margin: 0 auto 50px
    }

    .head-image svg {
        margin: 46px 0 0 -4px;
        width: 138px
    }

    .captcha-holder {
        margin: 80px auto;
        text-align: center
    }

    .captcha {
        max-width: 280px;
        margin: 0 auto
    }

    .incorrect {
        color: red;
    }

    .captcha_input {
        border: 1px;
        border-radius: 3px;
        border-color: #888;
        border-style: solid;
        color: black;
        background-color: white;
        padding: 3px;
        margin-top: 8px;
        width: 10em;
    }

    .captcha_submit {
        border: 0px;
        border-radius: 3px;
        border-color: #de7047;
        color: white;
        background-color: #de7047;
        padding: 3px;
        margin-top: 8px;
        font-size: 15px;
    }

    footer {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        text-align: center;
        background: #fff;
        font-size: 14px;
        padding: 20px 20px 0
    }/* BDC layout stylesheet */

    .BDC_CaptchaDiv {
        padding: 0 !important;
        margin: 0 !important;
        overflow: visible !important;
    }

    .BDC_CaptchaImageDiv {
        margin: 0 !important;
        padding: 0 !important;
        display: -moz-inline-stack;
        display: inline-block !important;
        vertical-align: top !important;
        zoom: 1 !important;
        * display: inline !important;
    }

    .BDC_CaptchaIconsDiv {
        text-align: left !important;
        margin: 0 2px -4px 2px !important;
        padding: 0 !important;
        display: -moz-inline-stack;
        display: inline-block !important;
        vertical-align: top !important;
        zoom: 1 !important;
        * display: inline !important;
    }

    .BDC_CaptchaDiv a:link, .BDC_CaptchaDiv a:visited, .BDC_CaptchaDiv a:focus, .BDC_CaptchaDiv a:hover, .BDC_CaptchaDiv a:active {
        margin: 0 !important;
        padding: 0 !important;
        background-color: transparent !important;
        border: none !important;
        text-decoration: none !important;
        outline: none !important;
        -moz-outline-style: none !important;
        display: -moz-inline-stack;
        display: inline-block !important;
        vertical-align: top !important;
        zoom: 1 !important;
        -webkit-box-shadow: none !important;
        -moz-box-shadow: none !important;
        box-shadow: none !important;
        * display: inline !important;
    }

    .BDC_CaptchaDiv a:focus, .BDC_CaptchaDiv a:active {
        outline: 1px dotted #333 !important;
    }

    .BDC_CaptchaIconsDiv a:link, .BDC_CaptchaIconsDiv a:visited, .BDC_CaptchaIconsDiv a:focus, .BDC_CaptchaIconsDiv a:hover, .BDC_CaptchaIconsDiv a:active {
        margin: 1px 2px 4px 2px !important;
    }

    .BDC_CaptchaDiv a img {
        border: none !important;
        margin: 0 !important;
        padding: 0 !important;
        display: block !important;
    }

    .BDC_CaptchaIconsDiv a.BDC_ReloadLink {
        display: none !important;
    }

    .BDC_Placeholder {
        visibility: hidden !important;
        width: 0 !important;
        height: 0 !important;
    }

    * html .BDC_Placeholder {
        display: none !important;
    }

    * :first-child + html .BDC_Placeholder {
        display: none !important;
    }

    .BDC_Warning {
        font-size: 12px !important;
        color: red !important;
    }

    .BDC_CaptchaDiv a.BDC_DisabledLink {
        padding: 0 !important;
        position: relative !important;
        z-index: 24 !important;
    }

    .BDC_CaptchaDiv a.BDC_DisabledLink span {
        display: none !important;
    }

    .BDC_CaptchaDiv a.BDC_DisabledLink:hover, .BDC_CaptchaDiv a.BDC_DisabledLink:focus {
        z-index: 25 !important;
        cursor: help !important;
        font-size: 100% !important;
    }

    .BDC_CaptchaDiv a.BDC_DisabledLink:hover span {
        display: block !important;
        z-index: 9999 !important;
        position: absolute !important;
        top: 0 !important;
        background-color: #f0f0f0 !important;
        border: 1px solid #ddd !important;
        color: #f00 !important;
        left: 30px !important;
        width: 250px !important;
        padding: 9px 6px 6px 11px !important;
        font-size: 11px !important;
        filter: alpha(opacity=90) !important;
        KHTMLOpacity: 0.90 !important;
        MozOpacity: 0.90 !important;
        opacity: 0.90 !important;
    }

    .BDC_CaptchaDiv a.BDC_DisabledLink:focus img {
        border: 1px solid transparent !important;
    }

    .BDC_CaptchaDiv a.BDC_DisabledLink span em {
        display: block !important;
        padding: 0 5px 5px 0 !important;
        margin: 0 !important;
        font-style: normal !important;
    }

    .BDC_CaptchaDiv .BDC_CaptchaImageDiv span.BDC_ProgressIndicator {
        color: black;
    }

    .BDC_CaptchaInfo {
        padding: 5px 10px 10px 10px !important;
        margin: 10px 5px 15px 5px !important;
        overflow: visible !important;
        border: 1px solid #ddd !important;
        font-family: Courier !important;
        font-size: 12px !important;
        color: #666 !important;
    }

    .BDC_CaptchaInfo legend {
        padding: 0 5px !important;
        margin: 0 !important;
        color: #999 !important;
    }
    </style>
    <script type="text/javascript">
    //<![CDATA[
    if (typeof (BotDetect) == "undefined") {
        // start single inclusion guard

        BotDetect = function(captchaId, instanceId, inputId, autoUppercaseInput, autoFocusInput, autoClearInput, autoReloadExpiredImage, autoReloadPeriod, autoReloadTimeout, soundStartDelay, limitSoundRegeneration) {
            this.Id = captchaId;
            this.InstanceId = instanceId;

            // Captcha image properties
            var imageId = captchaId + "_CaptchaImage";
            this.Image = document.getElementById(imageId);
            this.ImagePlaceholder = this.Image.parentNode;

            this.ControlsDisabled = false;

            // check for Captcha Reload icon presence
            var reloadLinkId = captchaId + "_ReloadLink";
            var reloadLink = document.getElementById(reloadLinkId);
            if (reloadLink) {
                // show Captcha Reload icon
                reloadLink.style.cssText = 'display: inline-block !important';

                // init reloading elements
                this.NewImage = null;
                this.ProgressIndicator = null;
                this.ReloadTimer = null;
                this.ReloadTimerTicks = 0;

                // Captcha image auto-reloading
                this.AutoReloadPeriod = Math.max((autoReloadPeriod - 10), 10) * 1000;
                this.AutoReloadTimeout = autoReloadTimeout * 1000;
                this.AutoReloadExpiredImage = autoReloadExpiredImage;
                this.AutoReloadPeriodSum = 0;
                this.AutoReloading = false;
                if (autoReloadExpiredImage) {
                    if (this.AutoReloadTimer) {
                        clearTimeout(this.AutoReloadTimer);
                    }
                    var self = this;
                    this.AutoReloadTimer = setTimeout(
                    function() {
                        clearTimeout(self.AutoReloadTimer);
                        if (self.AutoReloadPeriodSum >= self.AutoReloadTimeout) {
                            self.DisableControls();
                            self.SessionExpired = true;
                            return;
                        }
                        self.AutoReloading = true;
                        self.ReloadImage();
                        self.AutoReloading = false;
                        self.AutoReloadPeriodSum += self.AutoReloadPeriod;
                        self = null;
                    },
                    self.AutoReloadPeriod
                    );
                }
            }

            // pre-load disabled reload icon
            var reloadIcon = document.getElementById(this.Id + "_ReloadIcon");
            if (reloadIcon) {
                this.ReloadIconSrc = document.getElementById(this.Id + "_ReloadIcon").src;
                this.DisabledReloadIconSrc = null;
                var preloadedReloadIcon = document.createElement('img');
                var self2 = this;
                preloadedReloadIcon.onload = function() {
                    self2.DisabledReloadIconSrc = this.src;
                    self2 = null;
                };

            }
            //preloadedReloadIcon.src = this.ReloadIconSrc.replace('icon', 'disabled-icon');

            // Captcha sound properties
            this.SoundStartDelay = soundStartDelay;
            this.LimitSoundRegeneration = limitSoundRegeneration;
            this.SoundPlayed = false;
            this.SoundPlayDelayed = false;
            var soundLinkId = captchaId + "_SoundLink";
            var soundLink = document.getElementById(soundLinkId);
            if (soundLink) {
                this.SoundUrl = soundLink.href;
            }
            var soundPlaceholderId = captchaId + "_AudioPlaceholder";
            this.SoundPlaceholder = document.getElementById(soundPlaceholderId);

            // pre-load disabled sound icon
            var soundIcon = document.getElementById(this.Id + "_SoundIcon");
            if (soundIcon) {
                this.SoundIconSrc = document.getElementById(this.Id + "_SoundIcon").src;
                this.DisabledSoundIconSrc = null;
                var preloadedSoundIcon = document.createElement('img');
                var self3 = this;
                preloadedSoundIcon.onload = function() {
                    self3.DisabledSoundIconSrc = this.src;
                    self3 = null;
                };

            }
            //preloadedSoundIcon.src = this.SoundIconSrc.replace('icon', 'disabled-icon');

            // Captcha input textbox properties
            this.ValidationUrl = this.Image.src.replace('get=image', 'get=validation-result');

            // Captcha help link properties
            this.FollowHelpLink = true;

            // Captcha code user input element registration, helpers & processing
            if (!inputId)
                return;
            this.InputId = inputId;
            var input = document.getElementById(inputId);
            if (!input)
                return;

            input.Captcha = this; // allow access to the BotDetect object via the input element

            // automatic input processing
            this.AutoFocusInput = autoFocusInput;
            this.AutoClearInput = autoClearInput;
            if (autoUppercaseInput) {
                input.style.textTransform = 'uppercase';
            }
        };

        BotDetect.Init = function(captchaId, instanceId, inputId, autoUppercaseInput, autoFocusInput, autoClearInput, autoReloadExpiredImage, autoReloadPeriod, autoReloadTimeout, soundStartDelay, limitSoundRegeneration) {
            var inputIdString = null;
            if (inputId) {
                inputIdString = "'" + inputId + "'";
            }

            var actualInitialization = new Function("if (document.getElementById('" + captchaId + "_CaptchaImage')) { window['" + captchaId + "'] = new BotDetect('" + captchaId + "', '" + instanceId + "', " + inputIdString + ", " + autoUppercaseInput + ", " + autoFocusInput + ", " + autoClearInput + ", " + autoReloadExpiredImage + ", " + autoReloadPeriod + ", " + autoReloadTimeout + ", " + soundStartDelay + ", " + limitSoundRegeneration + "); window['" + captchaId + "'].PostInit(); }");

            if (typeof (window.jQuery) != "undefined") {
                // jQuery initalization
                jQuery(actualInitialization);
            } else {
                // regular initialization
                BotDetect.RegisterHandler(window, 'domready', actualInitialization, false);
            }

            // back button image reload to avoid cache issues
            if (window.opera) {
                BotDetect.RegisterHandler(window, 'popstate', function(e) {
                    window[captchaId].ReloadImage();
                }, false);
            } else if (window.chrome) {
                BotDetect.RegisterHandler(window, 'domready', function(e) {
                    var el = document.getElementById("BDC_BackWorkaround_" + captchaId);
                    if (el.value == "0") {
                        el.value = "1";
                    } else {
                        el.value = "0";
                        window[captchaId].ReloadImage();
                    }
                }, false);
            } else {
                // firefox & safari
                BotDetect.RegisterHandler(window, 'pageshow', function(e) {
                    var el = document.getElementById("BDC_BackWorkaround_" + captchaId);
                    if (el.value == "0") {
                        el.value = "1";
                    } else {
                        window[captchaId].ReloadImage();
                    }
                }, false);
            }
        };

        // constants
        BotDetect.ReloadTimerMaxTicks = 100;
        BotDetect.ReloadTimerDelay = 250;
        BotDetect.MillisecondsInAMinute = 60000;
        BotDetect.AjaxTimeout = 10000;
        BotDetect.MinSoundCooldown = 2000;

        // CAPTCHA image reloading
        BotDetect.prototype.ReloadImage = function() {
            if (this.Image && !this.ReloadInProgress && !this.SessionExpired && (!this.ControlsDisabled || this.SoundPlayDelayed)) {
                this.ReloadInProgress = true;
                this.DisableControls();
                this.ProgressIndicator = document.createElement('span');
                this.ProgressIndicator.className = 'BDC_ProgressIndicator';
                this.ProgressIndicator.appendChild(document.createTextNode('.'));
                this.PreReloadImage();

                var imageUrl = BotDetect.UpdateTimestamp(this.Image.src);
                this.InitNewImage(imageUrl);

                this.ImagePlaceholder.innerHTML = '';
                this.ImagePlaceholder.appendChild(this.ProgressIndicator);

                this.ShowProgress();
            }
        };

        BotDetect.prototype.InitNewImage = function(imageUrl) {
            this.NewImage = document.createElement('img');
            var self = this;
            this.NewImage.onload = function() {
                if (self.NewImage && self.ImagePlaceholder && self.ProgressIndicator) {
                    self.ImagePlaceholder.innerHTML = '';
                    self.ImagePlaceholder.appendChild(self.NewImage);
                    self.Image = self.NewImage;
                    self.ProgressIndicator = null;
                    self.PostReloadImage();
                    self = null;
                }
            };
            this.NewImage.id = this.Image.id;
            this.NewImage.alt = this.Image.alt;
            this.NewImage.src = imageUrl;
        };

        BotDetect.prototype.ShowProgress = function() {
            if (this.ProgressIndicator && (this.ReloadTimerTicks < BotDetect.ReloadTimerMaxTicks)) {
                this.ReloadTimerTicks = this.ReloadTimerTicks + 1;
                this.UpdateProgressIndicator();
                var self = this;
                this.ReloadTimer = setTimeout(function() {
                    self.ShowProgress();
                    self = null;
                }, BotDetect.ReloadTimerDelay);
            } else {
                clearTimeout(this.ReloadTimer);
                this.ReloadTimerTicks = 0;
                this.ReloadInProgress = false;
            }
        };

        BotDetect.prototype.UpdateProgressIndicator = function() {
            if (0 == this.ProgressIndicator.childNodes.length) {
                this.ProgressIndicator.appendChild(document.createTextNode('.'));
                return;
            }
            if (0 === this.ReloadTimerTicks % 5) {
                this.ProgressIndicator.firstChild.nodeValue = '.';
            } else {
                this.ProgressIndicator.firstChild.nodeValue = this.ProgressIndicator.firstChild.nodeValue + '.';
            }
        };

        // CAPTCHA sound playing
        BotDetect.prototype.PlaySound = function() {
            if (!document.getElementById || this.SoundPlayingInProgess || (this.ControlsDisabled && !this.SoundPlayDelayed)) {
                return;
            }

            this.DisableControls();

            if (this.LimitSoundRegeneration && !BotDetect.SoundReplaySupported()) {
                // reload the captcha image and play the new sound
                if (this.SoundPlayed) {
                    this.SoundPlayDelayed = true;
                    this.ReloadImage();
                    return;
                }
            }

            this.SoundPlayingInProgess = true;

            if (BotDetect.UseHtml5Audio()) {
                // html5 audio
                var self = this;
                var sound = document.getElementById('BDC_CaptchaSoundAudio_' + this.Id);
                if (sound) {
                    // replay existing audio, with the correct delay
                    sound.currentTime = 0;

                    this.SoundStartDelayTimer = setTimeout(
                    function() {
                        if (self) {
                            clearTimeout(self.SoundStartDelayTimer);
                            self.PrePlaySound();
                            var sound = document.getElementById('BDC_CaptchaSoundAudio_' + self.Id);
                            sound.play();
                        }
                    },
                    this.SoundStartDelay
                    );

                } else {
                    // play new audio
                    this.SoundPlaceholder.innerHTML = '';
                    var soundUrl = this.SoundUrl;
                    soundUrl = BotDetect.UpdateTimestamp(soundUrl);
                    soundUrl = BotDetect.DetectSsl(soundUrl);
                    sound = new Audio(soundUrl);
                    sound.id = 'BDC_CaptchaSoundAudio_' + this.Id;
                    sound.type = 'audio/wav';
                    sound.autobuffer = false;
                    sound.loop = false;
                    sound.autoplay = false;
                    sound.preload = 'auto';
                    this.SoundPlaceholder.appendChild(sound);

                    sound.load();
                    BotDetect.RegisterHandler(// start counting the starting delay only when the sound is loaded
                    sound,
                    'canplay',
                    function() {
                        if (self) {
                            self.SoundStartDelayTimer = setTimeout(
                            function() {
                                clearTimeout(self.SoundStartDelayTimer);
                                self.PrePlaySound();
                                var sound = document.getElementById('BDC_CaptchaSoundAudio_' + self.Id);
                                sound.play();
                            },
                            self.SoundStartDelay
                            );
                        }
                    },
                    false
                    );
                }

                // enable controls & other after-play cleanup
                BotDetect.RegisterHandler(
                sound,
                'ended',
                function() {
                    if (self) {
                        var sound = document.getElementById('BDC_CaptchaSoundAudio_' + self.Id);
                        if (sound.duration == 1) {
                            // Android 4.0.4 issue
                            sound.play();
                        } else {
                            self.SoundPlayingInProgess = false;
                            self.EnableControls();
                            self = null;
                        }
                    }
                },
                false
                );

            } else {
                // xhtml embed + object
                this.SoundPlaceholder.innerHTML = '';
                var self = this;
                this.SoundStartDelayTimer = setTimeout(
                function() {
                    clearTimeout(self.SoundStartDelayTimer);
                    self.PrePlaySound();
                    self.StartXhtmlSoundPlayback();
                },
                this.SoundStartDelay
                );
            }

            this.SoundPlayed = true;
        };

        BotDetect.prototype.StartXhtmlSoundPlayback = function() {
            var soundUrl = this.SoundUrl;
            soundUrl = BotDetect.UpdateTimestamp(soundUrl);
            soundUrl = BotDetect.DetectSsl(soundUrl);

            var objectSrc = "<object id='BDC_CaptchaSoundObject_" + this.Id + "' classid='clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95' height='0' width='0' style='width:0; height:0;'><param name='AutoStart' value='1' /><param name='Volume' value='0' /><param name='PlayCount' value='1' /><param name='FileName' value='" + soundUrl + "' /><embed id='BDC_CaptchaSoundEmbed' src='" + soundUrl + "' autoplay='true' hidden='true' volume='100' type='" + BotDetect.GetMimeType() + "' style='display:inline;' /></object>";

            this.SoundPlaceholder.innerHTML = objectSrc;

            var self = this;
            this.SoundCooldownTimer = setTimeout(
            function() {
                if (self) {
                    clearTimeout(self.SoundCooldownTimer);
                    self.SoundPlayingInProgess = false;
                    self.EnableControls();
                    self = null;
                }
            },
            BotDetect.MinSoundCooldown
            );
        };

        // input element access
        BotDetect.prototype.GetInputElement = function() {
            return document.getElementById(this.InputId);
        };

        // CAPTCHA Ajax validation
        BotDetect.prototype.StartAjaxValidation = function() {
            this.PreAjaxValidate();
            if (BotDetect.AjaxError) {
                return;
            }
            var input = this.GetInputElement();
            if (!input || !input.value || input.value.length < 0) {
                this.AjaxValidationFailed();
                return;
            }
            this.StartValidationRequest();
        };

        BotDetect.prototype.StartValidationRequest = function() {
            var input = this.GetInputElement();
            var url = this.ValidationUrl + '&i=' + input.value;
            var self = this;
            var callback = function(y) {
                clearTimeout(self.AjaxTimer);
                if (200 != y.status) {
                    self.AjaxValidationError();
                    self = null;
                    return;
                }
                var validationResult = false;
                var parsed = BotDetect.ParseJson(y.responseText);
                if (parsed) {
                    validationResult = parsed;
                }
                self.EndValidationRequest(validationResult);
                self = null;
            }
            this.AjaxTimer = setTimeout(self.AjaxValidationError, BotDetect.AjaxTimeout);
            BotDetect.Get(url, callback);
        };

        BotDetect.prototype.EndValidationRequest = function(result) {
            if (result) {
                this.AjaxValidationPassed();
            } else {
                this.AjaxValidationFailed();
            }
        };

        BotDetect.ParseJson = function(jsonString) {
            var resultObj = null;
            if ("undefined" != typeof (JSON) && "function" == typeof (JSON.parse)) {
                resultObj = JSON.parse(jsonString);
            }
            if (!resultObj) {
                resultObj = eval('(' + jsonString + ')');
            }
            return resultObj;
        };

        // custom CAPTCHA events

        BotDetect.prototype.PostInit = function() {
        };

        BotDetect.prototype.PreReloadImage = function() {
            this.ClearInput();
            this.FocusInput();
        };

        BotDetect.prototype.PostReloadImage = function() {
            this.ValidationUrl = this.Image.src.replace('get=image', 'get=validation-result');

            if (this.AutoReloadExpiredImage) {
                if (this.AutoReloadTimer) {
                    clearTimeout(this.AutoReloadTimer);
                }
                var self = this;
                this.AutoReloadTimer = setTimeout(
                function() {
                    clearTimeout(self.AutoReloadTimer);
                    if (self.AutoReloadPeriodSum >= self.AutoReloadTimeout) {
                        self.DisableControls();
                        self.SessionExpired = true;
                        return;
                    }
                    self.AutoReloading = true;
                    self.ReloadImage();
                    self.AutoReloading = false;
                    self.AutoReloadPeriodSum += self.AutoReloadPeriod;
                    self = null;
                },
                self.AutoReloadPeriod
                );
            }

            if (this.SoundIconSrc) {
                this.SoundPlaceholder.innerHTML = '';
                this.SoundPlayed = false;
                if (this.SoundPlayDelayed) {
                    this.PlaySound();
                    this.SoundPlayDelayed = false;
                } else {
                    this.EnableControls();
                }
            } else {
                this.EnableControls();
            }
        };

        BotDetect.prototype.PrePlaySound = function() {
            this.FocusInput();
        };

        BotDetect.prototype.OnHelpLinkClick = function() {
        };

        BotDetect.prototype.PreAjaxValidate = function() {
        };

        BotDetect.prototype.AjaxValidationFailed = function() {
            this.ReloadImage();
        };

        BotDetect.prototype.AjaxValidationPassed = function() {
        };

        BotDetect.prototype.AjaxValidationError = function() {
            BotDetect.Xhr().abort();
            BotDetect.AjaxError = true;
        };

        BotDetect.RegisterCustomHandler = function(eventName, userHandler) {
            var oldHandler = BotDetect.prototype[eventName];
            BotDetect.prototype[eventName] = function() {
                userHandler.call(this);
                oldHandler.call(this);
            }
        };

        // input processing
        BotDetect.prototype.FocusInput = function() {
            var input = this.GetInputElement();
            if (!this.AutoFocusInput || !input)
                return;
            if (this.AutoReloading)
                return;
            input.focus();
        };

        BotDetect.prototype.ClearInput = function() {
            var input = this.GetInputElement();
            if (!this.AutoClearInput || !input)
                return;
            input.value = '';
        };

        // helpers

        BotDetect.UpdateTimestamp = function(url) {
            var i = url.indexOf('&d=');
            if (-1 !== i) {
                url = url.substring(0, i);
            }
            return url + '&d=' + BotDetect.GetTimestamp();
        };

        BotDetect.GetTimestamp = function() {
            var d = new Date();
            var t = d.getTime() + (d.getTimezoneOffset() * BotDetect.MillisecondsInAMinute);
            return t;
        };

        BotDetect.DetectSsl = function(url) {
            var i = url.indexOf('&e=');
            if (-1 !== i) {
                var len = url.length;
                url = url.substring(0, i) + url.substring(i + 4, len);
            }
            if (document.location.protocol === "https:") {
                url = url + '&e=1';
            }
            return url;
        };

        BotDetect.GetMimeType = function() {
            var mimeType = "audio/x-wav";
            return mimeType;
        };

        BotDetect.UseHtml5Audio = function() {
            var html5SoundSupported = false;
            if (BotDetect.DetectAndroid() || BotDetect.DetectIOS()) {
                html5SoundSupported = true; // Android says it can't play audio even when it can; assuming iOS uses Html5 simplifies further browser checks
            } else {
                var browserCompatibilityCheck = document.createElement('audio');
                html5SoundSupported = (
                !!(browserCompatibilityCheck.canPlayType) &&
                !!(browserCompatibilityCheck.canPlayType("audio/wav")) &&
                !BotDetect.DetectIncompatibleAudio() // some browsers say they support the audio even when they have issues playing it
                );
            }
            return html5SoundSupported;
        };

        BotDetect.DetectIncompatibleAudio = function() {
            return BotDetect.DetectFirefox3() || BotDetect.DetectSafariSsl();
        };

        BotDetect.DetectAndroid = function() {
            var detected = false;
            if (navigator && navigator.userAgent) {
                var matches = navigator.userAgent.match(/Linux; U; Android/);
                if (matches) {
                    detected = true;
                }
            }
            return detected;
        };

        BotDetect.DetectIOS = function() {
            var detected = false;
            if (navigator && navigator.userAgent) {
                var matches = navigator.userAgent.match(/like Mac OS/);
                if (matches) {
                    detected = true;
                }
            }
            return detected;
        };

        BotDetect.DetectFirefox3 = function() {
            var detected = false;
            if (navigator && navigator.userAgent) {
                var matches = navigator.userAgent.match(/(Firefox)\/(3\.6\.[^;\+,\/\s]+)/);
                if (matches) {
                    detected = true;
                }
            }
            return detected;
        };

        BotDetect.DetectSafariSsl = function() {
            var detected = false;
            if (navigator && navigator.userAgent) {
                var matches = navigator.userAgent.match(/Safari/);
                if (matches) {
                    matches = navigator.userAgent.match(/Chrome/);
                    if (!matches && document.location.protocol === "https:") {
                        detected = true;
                    }
                }
            }
            return detected;
        };

        BotDetect.DetectAndroidBelow41 = function() {
            var detected = false;
            if (navigator && navigator.userAgent) {
                var i = navigator.userAgent.indexOf("Android");
                if (i >= 0) {
                    var v = parseFloat(navigator.userAgent.slice(i + 8));
                    if (v < 4.1) {
                        detected = true;
                    }
                }
            }
            return detected;
        }

        BotDetect.SoundReplaySupported = function() {
            return ( BotDetect.UseHtml5Audio() &&
                !BotDetect.DetectAndroidBelow41()) ;
        };

        BotDetect.prototype.DisableControls = function() {
            this.ControlsDisabled = true;
            this.DisableReloadIcon();
            this.DisableSoundIcon();
        }

        BotDetect.prototype.EnableControls = function() {
            this.ControlsDisabled = false;
            this.EnableReloadIcon();
            this.EnableSoundIcon();
        }

        BotDetect.prototype.DisableReloadIcon = function() {
            if (this.ReloadIconSrc) {
                if (this.DisabledReloadIconSrc) {
                    document.getElementById(this.Id + "_ReloadIcon").src = this.DisabledReloadIconSrc;
                }
            }
        };

        BotDetect.prototype.EnableReloadIcon = function() {
            if (this.ReloadIconSrc) {
                if (this.DisabledReloadIconSrc) {
                    document.getElementById(this.Id + "_ReloadIcon").src = this.ReloadIconSrc;
                }
            }
        };

        BotDetect.prototype.DisableSoundIcon = function() {
            if (this.SoundIconSrc) {
                if (this.DisabledSoundIconSrc) {
                    document.getElementById(this.Id + "_SoundIcon").src = this.DisabledSoundIconSrc;
                }
            }
        };

        BotDetect.prototype.EnableSoundIcon = function() {
            if (this.SoundIconSrc) {
                if (this.DisabledSoundIconSrc) {
                    document.getElementById(this.Id + "_SoundIcon").src = this.SoundIconSrc;
                }
            }
        };

        // standard events & handlers
        BotDetect.RegisterHandler = function(target, eventType, functionRef, capture) {
            // special case
            if (eventType == "domready") {
                BotDetect.RegisterDomReadyHandler(functionRef);
                return;
            }
            // normal event registration
            if (typeof target.addEventListener != "undefined") {
                target.addEventListener(eventType, functionRef, capture);
            } else if (typeof target.attachEvent != "undefined") {
                var functionString = eventType + functionRef;
                target["e" + functionString] = functionRef;
                target[functionString] = function(event) {
                    if (typeof event == "undefined") {
                        event = window.event;
                    }
                    target["e" + functionString](event);
                };
                target.attachEvent("on" + eventType, target[functionString]);
            } else {
                eventType = "on" + eventType;
                if (typeof target[eventType] == "function") {
                    var oldListener = target[eventType];
                    target[eventType] = function() {
                        oldListener();
                        return functionRef();
                    };
                } else {
                    target[eventType] = functionRef;
                }
            }
        };

        // earlier than window.load, if possible
        BotDetect.RegisterDomReadyHandler = function(functionRef) {
            if (document.addEventListener) {
                document.addEventListener("DOMContentLoaded",
                function() {
                    document.removeEventListener("DOMContentLoaded", arguments.callee, false);
                    functionRef();
                },
                false
                );
                return;
            }
            else if (document.attachEvent) {
                var called = false;
                document.attachEvent("onreadystatechange",
                function() {
                    if (document.readyState === "complete") {
                        document.detachEvent("onreadystatechange", arguments.callee);
                        functionRef();
                        called = true;
                    }
                }
                );
                if (document.documentElement.doScroll && window == window.top) {
                    (function() {
                        if (called)
                            return;
                        try {
                            document.documentElement.doScroll("left");
                        } catch (error) {
                            setTimeout(arguments.callee, 1);
                            return;
                        }
                        functionRef();
                        called = true;
                    })();
                }
                return;
            } else {
                BotDetect.RegisterHandler(window, 'load', functionRef, false);
            }
        };

        // Ajax helper
        BotDetect.Xhr = function() {
            var x = null;
            try {
                x = new XMLHttpRequest();
                return x;
            } catch (e) {}
            try {
                x = new ActiveXObject('MSXML2.XMLHTTP.5.0');
                return x;
            } catch (e) {}
            try {
                x = new ActiveXObject('MSXML2.XMLHTTP.4.0');
                return x;
            } catch (e) {}
            try {
                x = new ActiveXObject('MSXML2.XMLHTTP.3.0');
                return x;
            } catch (e) {}
            try {
                x = new ActiveXObject('MSXML2.XMLHTTP');
                return x;
            } catch (e) {}
            try {
                x = new ActiveXObject('Microsoft.XMLHTTP');
                return x;
            } catch (e) {}
            return x;
        };

        BotDetect.Get = function(url, callback) {
            BotDetect.AjaxError = false;
            var x = BotDetect.Xhr();
            if (x && 0 == x.readyState) {
                x.onreadystatechange = function() {
                    if (4 == x.readyState) {
                        callback(x);
                    }
                }
                x.open('GET', url, true);
                x.send();
            }
        };

    } // end single inclusion guard //]]>
    </script>
</head>
<body>
    <div id="wrapper">
        <div class="head-image">
            <svg xmlns="http://www.w3.org/2000/svg" width="3.2cm" height="2.8cm" viewBox="0 0 91.5 79.6">
                <defs>
                    <style>
                    .asvg {
                        fill: #fff;
                    }
                    </style>
                </defs>
                <title>robo</title>
                <path class="asvg" d="M91.3,10.2,88.1,15a4.2,4.2,0,0,1,1.8,3.5,4,4,0,1,1-8,0A4.2,4.2,0,0,1,83.8,15l-3.2-4.8A10.1,10.1,0,0,0,83,28.1v8.5a2.7,2.7,0,0,1-2.6,2.8H74.5V33.3a21.1,21.1,0,0,0-21-21H50.4a21.1,21.1,0,0,0-21,21v6.1H19.6a8.4,8.4,0,0,0-8.4,8.4V56A9.7,9.7,0,0,0,8.7,73.4l3.1-4.8a4,4,0,1,1,4.4,0l3.1,4.8A9.7,9.7,0,0,0,16.9,56V47.7a2.7,2.7,0,0,1,2.7-2.7h9.8V64.5H48.4v6a11.1,11.1,0,0,1,7,0v-6H74.5V45.3h5.9a8.6,8.6,0,0,0,8.5-8.6V28.1a10.1,10.1,0,0,0,2.5-17.9ZM43.3,57.1H38.9V52.5h4.4Zm7.3,0H46.2V52.5h4.4Zm7.3,0H53.5V52.5h4.4Zm-6-10.3A12.6,12.6,0,1,1,64.5,34.2,12.6,12.6,0,0,1,51.9,46.7ZM65.2,57.1H60.8V52.5h4.4Z" transform="translate(-4.3 -10.2)"/>
                <path class="asvg" d="M43.3,81.2a8.6,8.6,0,1,0,8.6-8.6A8.6,8.6,0,0,0,43.3,81.2Zm8.6-2.5a2.5,2.5,0,1,1-2.5,2.5A2.5,2.5,0,0,1,51.9,78.7Z" transform="translate(-4.3 -10.2)"/>
                <path class="asvg" d="M51.9,25.6a8.6,8.6,0,1,0,8.6,8.6A8.6,8.6,0,0,0,51.9,25.6Zm0,11.1a2.5,2.5,0,1,1,2.5-2.5A2.5,2.5,0,0,1,51.9,36.7Z" transform="translate(-4.3 -10.2)"/>
            </svg>
        </div>
        <h1>Our system thinks you might be a robot!</h1>
        <h2>We're really sorry about this, but it's getting harder and harder to tell the difference between humans and bots these days.</h2>
        <div class="acenter captcha-holder">
            <p>Please complete the captcha below to prove you're a human and proceed to the page you're trying to reach.</p>
            <div class="captcha">
                <form method="POST" action="343" class="column" id="form1">
                    <input name="sid" type="hidden" value="343"/>
                    <input name="r" type="hidden" value="%2Fwp-admin%2F"/>
                    <div class="BDC_CaptchaDiv" id="BD_Captcha_CaptchaDiv" style="width:280px; height:50px;">
                        <div class="BDC_CaptchaImageDiv" id="BD_Captcha_CaptchaImageDiv" style="width:250px !important; height:50px !important;">
                            <img class="BDC_CaptchaImage" id="BD_Captcha_CaptchaImage" src="/.well-known/captcha/343/botdetect/?get=image&amp;c=bd_captcha&amp;t=daa542a96237f7df0876bd3c381215ef&amp;sid=343" alt="Retype the CAPTCHA code from the image"/>
                        </div>
                        <div class="BDC_CaptchaIconsDiv" id="BD_Captcha_CaptchaIconsDiv" style="width: 24px !important;">
                            <a class="BDC_ReloadLink" id="BD_Captcha_ReloadLink" href="#" onclick="BD_Captcha.ReloadImage(); this.blur(); return false;" title="Change the CAPTCHA code">
                                <img class="BDC_ReloadIcon" id="BD_Captcha_ReloadIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpkNjE0ODcxNS0wNTM3LTQ4ODQtYTBkOS1lZTdmNzFjMDRlNjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTI5MjBFODQxRTI4MTFFNzk2RUVCRDg0NkI5QzlCNkEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTI5MjBFODMxRTI4MTFFNzk2RUVCRDg0NkI5QzlCNkEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplZjQ1MWViOC03ZWRlLTQxYmYtODJmOS00OTMwNjVhNmM3YWUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6ZDYxNDg3MTUtMDUzNy00ODg0LWEwZDktZWU3ZjcxYzA0ZTYzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+t8S3YgAAALhJREFUKM/F0lENwyAUhWEs1AIWsPBbqAUsYAEL10It1MIsYAEL7IFbIKEsy7JsuUkfyAc9PdQU8/6YX2EgIAgRdGW7xVgOyjAnlkDufKRJUSKRKRR92hnXUwVXX05UOmOodAgVWpwJC2VMp5sX2OFrgMZ3PB5/tfJpz9quIONJBIQw46u23DGWTOFYY9/opmXy6uSIxxN0Jd5lTmSkXcM1x+oDKQbH2TY8eqRldWzA3i/iLz//F/ETxFPbiDh40wkAAAAASUVORK5CYII=" alt="Change the CAPTCHA code"/>
                            </a>
                            <a rel="nofollow" class="BDC_SoundLink" id="BD_Captcha_SoundLink" href="/.well-known/captcha/343/botdetect/?get=sound&amp;c=bd_captcha&amp;t=daa542a96237f7df0876bd3c381215ef&amp;sid=343" onclick="BD_Captcha.PlaySound(); this.blur(); return false;" title="Speak the CAPTCHA code" target="_blank">
                                <img class="BDC_SoundIcon" id="BD_Captcha_SoundIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpkNjE0ODcxNS0wNTM3LTQ4ODQtYTBkOS1lZTdmNzFjMDRlNjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTI5MjBFODgxRTI4MTFFNzk2RUVCRDg0NkI5QzlCNkEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTI5MjBFODcxRTI4MTFFNzk2RUVCRDg0NkI5QzlCNkEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpmYjExNzRiNi0xZTUwLTQ2YTMtYjM3MS1hMGEzNzY0MzNlY2YiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6ZDYxNDg3MTUtMDUzNy00ODg0LWEwZDktZWU3ZjcxYzA0ZTYzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rsIN7wAAALtJREFUKM/N0jGVwzAQBcClYApLwRSGgimYgigcBVEwhaNgCqIgCk7hO784L05SRr9RMdpC+2OLzxNfhZ8fw//tEhtkRIRZV19iqe1EmnXLJZaaTY0w6Yrcpz9gKY2abccRiq6YdXnCJttdqtRQdKkpZzyfcYSqS91sUd9hNqmZ1TdYan6NNqyPOFXVcje5GCxWo256/nXlwKNVN6rW66WUP5x+pKLzat1FiThme9mN49Go7i2Jryz/Z7kBC+OAbI4NxvUAAAAASUVORK5CYII=" alt="Speak the CAPTCHA code"/>
                            </a>
                            <div class="BDC_Placeholder" id="BD_Captcha_AudioPlaceholder">&nbsp;</div>
                        </div>
                        <script type="text/javascript">
                        //<![CDATA[
                        BotDetect.Init('BD_Captcha', 'daa542a96237f7df0876bd3c381215ef', 'BDCC', true, true, true, false, 1200, 7200, 0, true);
                        //]]>
                        </script>
                        <input type="hidden" name="BDC_UserSpecifiedCaptchaId" id="BDC_UserSpecifiedCaptchaId" value="BD_Captcha"/>
                        <input type="hidden" name="BDC_VCID_BD_Captcha" id="BDC_VCID_BD_Captcha" value="daa542a96237f7df0876bd3c381215ef"/>
                        <input type="hidden" name="BDC_BackWorkaround_BD_Captcha" id="BDC_BackWorkaround_BD_Captcha" value="0"/>
                    </div>
                    <input name="BDCC" type="text" id="BDCC" class="captcha_input" autocomplete="off"/>
                    <input type="submit" name="ValidateCaptchaButton" value="CONTINUE" id="ValidateCaptchaButton" class="captcha_submit"/>
                    <br/>
                </form>
            </div>
        </div>
    </div>
    <footer>
        <p>This page requires cookies to be enabled in your browser settings. Please check this setting and enable cookies (if disabled). sid:343</p>
    </footer>
</body>
</html>