מאמרים

dating services for professionals "friend" actually signifies love-making familiarity. Most people think that they may be "friends" with a thought of usually sharing a handful of intimate occasions or being with each other being a couple. Yet , no one truly expects the 2 to be along romantically and, in most cases, the relationship is not really built after sex. Good friends with benefits are very varied.

To begin with, a threesome is not about "touching" each other. You don't need to touch one another in order to have a threesome. Actually it isn't even necessary for one to be bodily present for that threesome to happen. Many persons believe that the very best threesomes aren't the ones that involve penetration. In reality, it is actually these types of couples who usually tend to break up faster because they are both reluctant to engage in sexual intercourse.

Second, a threesome can contain any number of participants at any time. You do not have to sit down in front of the tv and wait for an perfect occasion to meet a person. A threesome is certainly not something that happens overnight and it doesn't entail one person providing or acquiring oral sex. Rather, it is a romance that commences slowly. It may take time for the relationship to develop because it takes time intended for the threesome women dating to begin with asia charm review to know each other's needs. Of course , there are also methods you can get nearer to your good friend but take care not to force the friend in to anything. There exists absolutely nothing drastically wrong with asking for what you would like.

">

When a male is thinking about having a threesome with one more man, he can more than likely might what friends with rewards meaning can be. The answer might surprise you. Contrary to popular belief, the word dating services for professionals "friend" actually signifies love-making familiarity. Most people think that they may be "friends" with a thought of usually sharing a handful of intimate occasions or being with each other being a couple. Yet , no one truly expects the 2 to be along romantically and, in most cases, the relationship is not really built after sex. Good friends with benefits are very varied.

To begin with, a threesome is not about "touching" each other. You don't need to touch one another in order to have a threesome. Actually it isn't even necessary for one to be bodily present for that threesome to happen. Many persons believe that the very best threesomes aren't the ones that involve penetration. In reality, it is actually these types of couples who usually tend to break up faster because they are both reluctant to engage in sexual intercourse.

Second, a threesome can contain any number of participants at any time. You do not have to sit down in front of the tv and wait for an perfect occasion to meet a person. A threesome is certainly not something that happens overnight and it doesn't entail one person providing or acquiring oral sex. Rather, it is a romance that commences slowly. It may take time for the relationship to develop because it takes time intended for the threesome women dating to begin with asia charm review to know each other's needs. Of course , there are also methods you can get nearer to your good friend but take care not to force the friend in to anything. There exists absolutely nothing drastically wrong with asking for what you would like.

When a male is thinking about having a threesome with one more man, he can more than likely might what friends with rewards meaning can be. The answer might surprise you. Contrary to popular belief, the word dating services for professionals "friend" actually signifies love-making familiarity. Most people think that they may be "friends" with […]

dating services for professionals "friend" actually signifies love-making familiarity. Most people think that they may be "friends" with a thought of usually sharing a handful of intimate occasions or being with each other being a couple. Yet , no one truly expects the 2 to be along romantically and, in most cases, the relationship is not really built after sex. Good friends with benefits are very varied.

To begin with, a threesome is not about "touching" each other. You don't need to touch one another in order to have a threesome. Actually it isn't even necessary for one to be bodily present for that threesome to happen. Many persons believe that the very best threesomes aren't the ones that involve penetration. In reality, it is actually these types of couples who usually tend to break up faster because they are both reluctant to engage in sexual intercourse.

Second, a threesome can contain any number of participants at any time. You do not have to sit down in front of the tv and wait for an perfect occasion to meet a person. A threesome is certainly not something that happens overnight and it doesn't entail one person providing or acquiring oral sex. Rather, it is a romance that commences slowly. It may take time for the relationship to develop because it takes time intended for the threesome women dating to begin with asia charm review to know each other's needs. Of course , there are also methods you can get nearer to your good friend but take care not to force the friend in to anything. There exists absolutely nothing drastically wrong with asking for what you would like.

" class="button"> להמשך קריאה

senior singles dating own romantic.

For example , let's say that you girl dating girl popped out to a standard with your boyfriend and he gave you his cell phone and told you that you might text him anytime you wanted. In the morning when you go to your local store you can text message him and possess him contact you. Which exclusive friends with rewards. He fails to want one to text him because he wants to be with you all the time. He has been not your friend with benefits. He is your boyfriend who wants to have fun with you. He's just a friend with benefits.

Exceptional friends with benefits is usually someone who is definitely your best friend yet doesn't always have to be in physical space czech wives with you. Exclusive good friends with rewards may be someone you text on a daily basis or an individual you textual content at work then later you both go out and get a fun nighttime together. Outstanding friends with benefits no longer usually consist of romance. Close friends with benefits don't quite often involve romantic endeavors. Friends with benefits just simply involve backed by each other. It can basically just the two of you being with the other person.

">

In a short distance relationship, the other person includes exclusive legal rights to be with you on your part of the world when you're in physical space with all the other person. They are your only friend with benefits. This is diverse coming from what others think can be exclusive friends with rewards. Exclusive close friends with rewards are much more romantic than exclusive good friends with benefits. Exclusive friends with rewards is not going to include love and you will be the senior singles dating own romantic.

For example , let's say that you girl dating girl popped out to a standard with your boyfriend and he gave you his cell phone and told you that you might text him anytime you wanted. In the morning when you go to your local store you can text message him and possess him contact you. Which exclusive friends with rewards. He fails to want one to text him because he wants to be with you all the time. He has been not your friend with benefits. He is your boyfriend who wants to have fun with you. He's just a friend with benefits.

Exceptional friends with benefits is usually someone who is definitely your best friend yet doesn't always have to be in physical space czech wives with you. Exclusive good friends with rewards may be someone you text on a daily basis or an individual you textual content at work then later you both go out and get a fun nighttime together. Outstanding friends with benefits no longer usually consist of romance. Close friends with benefits don't quite often involve romantic endeavors. Friends with benefits just simply involve backed by each other. It can basically just the two of you being with the other person.

In a short distance relationship, the other person includes exclusive legal rights to be with you on your part of the world when you're in physical space with all the other person. They are your only friend with benefits. This is diverse coming from what others think can be exclusive friends with rewards. Exclusive close […]

senior singles dating own romantic.

For example , let's say that you girl dating girl popped out to a standard with your boyfriend and he gave you his cell phone and told you that you might text him anytime you wanted. In the morning when you go to your local store you can text message him and possess him contact you. Which exclusive friends with rewards. He fails to want one to text him because he wants to be with you all the time. He has been not your friend with benefits. He is your boyfriend who wants to have fun with you. He's just a friend with benefits.

Exceptional friends with benefits is usually someone who is definitely your best friend yet doesn't always have to be in physical space czech wives with you. Exclusive good friends with rewards may be someone you text on a daily basis or an individual you textual content at work then later you both go out and get a fun nighttime together. Outstanding friends with benefits no longer usually consist of romance. Close friends with benefits don't quite often involve romantic endeavors. Friends with benefits just simply involve backed by each other. It can basically just the two of you being with the other person.

" class="button"> להמשך קריאה

cougar dating site review is usually not as safe as they 1st thought. You will discover many different ways to get access to your personal data, especially in the case of what is known as a safe casual time frame. This is the place where people go on the first time with a person they reached online. Moreover, there are a lot of rip-off artists to choose from that will pretend that to be somebody they are certainly not in order to gain entry to your personal information. This can happen because you might have asked for a lot of information from their store and they have it from someplace else and then let you know that they have the information and are advertising it to someone else. These people can come by a number of spots.

Scams as well tend to are present in this area. Even though there are guidelines put in place to hold people safe on the internet, there are also various people who will use their online to try and break into other peoples' accounts or take money from the profile that they are trying to steal out of. In order to prevent this, you romanian girls should make sure that you do all of your research before you are going on a night out. If you do not identify the fact that the person can be described as scam musician and performer, then you can still put a stop to this.

In order to find a person who is usually online who is a safe casual date, that can be done a search on-line for people who are local millionnaire dating to you. You can look at all of the profiles of these persons and find out if anyone has committed a scam with them. Of course , the main thing is to make certain you know how to search before you commit to reaching someone. The very best method to get information upon any given person is to simply ask, but this can sometimes leave you feeling uncomfortable.

">

Many people have discovered that safe casual seeing cougar dating site review is usually not as safe as they 1st thought. You will discover many different ways to get access to your personal data, especially in the case of what is known as a safe casual time frame. This is the place where people go on the first time with a person they reached online. Moreover, there are a lot of rip-off artists to choose from that will pretend that to be somebody they are certainly not in order to gain entry to your personal information. This can happen because you might have asked for a lot of information from their store and they have it from someplace else and then let you know that they have the information and are advertising it to someone else. These people can come by a number of spots.

Scams as well tend to are present in this area. Even though there are guidelines put in place to hold people safe on the internet, there are also various people who will use their online to try and break into other peoples' accounts or take money from the profile that they are trying to steal out of. In order to prevent this, you romanian girls should make sure that you do all of your research before you are going on a night out. If you do not identify the fact that the person can be described as scam musician and performer, then you can still put a stop to this.

In order to find a person who is usually online who is a safe casual date, that can be done a search on-line for people who are local millionnaire dating to you. You can look at all of the profiles of these persons and find out if anyone has committed a scam with them. Of course , the main thing is to make certain you know how to search before you commit to reaching someone. The very best method to get information upon any given person is to simply ask, but this can sometimes leave you feeling uncomfortable.

Many people have discovered that safe casual seeing cougar dating site review is usually not as safe as they 1st thought. You will discover many different ways to get access to your personal data, especially in the case of what is known as a safe casual time frame. This is the place where people go […]

cougar dating site review is usually not as safe as they 1st thought. You will discover many different ways to get access to your personal data, especially in the case of what is known as a safe casual time frame. This is the place where people go on the first time with a person they reached online. Moreover, there are a lot of rip-off artists to choose from that will pretend that to be somebody they are certainly not in order to gain entry to your personal information. This can happen because you might have asked for a lot of information from their store and they have it from someplace else and then let you know that they have the information and are advertising it to someone else. These people can come by a number of spots.

Scams as well tend to are present in this area. Even though there are guidelines put in place to hold people safe on the internet, there are also various people who will use their online to try and break into other peoples' accounts or take money from the profile that they are trying to steal out of. In order to prevent this, you romanian girls should make sure that you do all of your research before you are going on a night out. If you do not identify the fact that the person can be described as scam musician and performer, then you can still put a stop to this.

In order to find a person who is usually online who is a safe casual date, that can be done a search on-line for people who are local millionnaire dating to you. You can look at all of the profiles of these persons and find out if anyone has committed a scam with them. Of course , the main thing is to make certain you know how to search before you commit to reaching someone. The very best method to get information upon any given person is to simply ask, but this can sometimes leave you feeling uncomfortable.

" class="button"> להמשך קריאה

prettyrussianbrides.com/from-slovenia that you have learned today. Take into account that it takes some practice ahead of you find a special someone, and it might be worth seeking your fortune on sites that have more experience than you do.

">

The tips pertaining to online dating that you must follow happen to be as follows: use a secure internet site, do not give out your complete personal information, apply your head trying to look for those who have some common interests. Do not forget that it's very simple to begin with the online seeing scene, but it's also painless to have bored and end up wasting your time. What happens is the fact you meet someone who has precisely the same interests as you, and you think this is the person for you. The problem is that it could be difficult to prevent meeting other people, and at a lot of point it might turn into necessary to satisfy them personally. If this happens, never give out all your personal information.

At some point it's the perfect time to start building your unique profile, in order that others locate you easier. Your account will show the best way interesting and unique you are, along with how compatible you happen to be with your on the net date. Is not going to worry a lot about your account, though. It will not appear right up until you have previously received an invitation to meet up with that person. Which mean that you shouldn't use the suggestions for online dating that you have learned today. If somebody is asking you if you want to go away, just say yes.

There are a great number of different ways that you can use the tips for the purpose of online dating prettyrussianbrides.com/from-slovenia that you have learned today. Take into account that it takes some practice ahead of you find a special someone, and it might be worth seeking your fortune on sites that have more experience than you do.

The tips pertaining to online dating that you must follow happen to be as follows: use a secure internet site, do not give out your complete personal information, apply your head trying to look for those who have some common interests. Do not forget that it's very simple to begin with the online seeing scene, […]

prettyrussianbrides.com/from-slovenia that you have learned today. Take into account that it takes some practice ahead of you find a special someone, and it might be worth seeking your fortune on sites that have more experience than you do.

" class="button"> להמשך קריאה

italian women somebody. One thing that you can do is to check out a party or perhaps club having a group of friends and just spend time with the singles. Various singles refuse to really get together with people unless of course they feel comfortable talking to someone.

">

If you are a newbie, it is very very likely that you want to satisfy foreign lonely hearts. With a small number of singles around, you need to be extra careful about the people you meet up with and the method you operate when you are in public. You can't be too aggressive or too casual; a meeting with an ambitious foreign man or woman can set your life at risk. You should also know that by being really cautious about the method that you act, you will be missing out on a way to actually time frame someone or even include a serious relationship.

The first of all way to look for foreign public is by going online. There are many social networking sites which let singles from everywhere to connect. A great number of sites will let you go on the dating sites at no cost and then you are likely to join a waiting list. If you feel a relationship is usually developing in your way on the path to a single then this waiting list could be very interesting. It's equally as good to just go and meet up with singles personally rather than counting on the internet.

Another way to meet foreign singles is usually to go to bars and golf clubs. Most lonely people that come towards the UK for a holiday are there to satisfy italian women somebody. One thing that you can do is to check out a party or perhaps club having a group of friends and just spend time with the singles. Various singles refuse to really get together with people unless of course they feel comfortable talking to someone.

If you are a newbie, it is very very likely that you want to satisfy foreign lonely hearts. With a small number of singles around, you need to be extra careful about the people you meet up with and the method you operate when you are in public. You can't be too aggressive or too […]

italian women somebody. One thing that you can do is to check out a party or perhaps club having a group of friends and just spend time with the singles. Various singles refuse to really get together with people unless of course they feel comfortable talking to someone.

" class="button"> להמשך קריאה

beautiful bride to find a Russian woman to marry. There are lots of online mailbox order bride websites offering their companies. It is possible to use your pick from these girls.

Russian mail order brides are very different from those of traditional relationships. You will have many choices when choosing your Russian new bride. Before finishing on a potential mail order bride, it is actually good to master about the benefits and disadvantages on this marriage. For starters, you will be required to pay for the full selling price for your Russian wife. Russian mail order brides usually come with all the standard necessities just like jewelry, apparel, and other items which can be quite expensive. The most attractive Russian brides come with a lot of money and are ready to do whatever you want these to do.

Yet , in order to position Russian relationships, it is crucial that you be familiar with customs of your people surviving in Russia. Consequently , a person seeking to marry in Russia should be sure he or she has a firm understanding of the vocabulary. Russian ship order brides to be generally have a large dowry, in some cases inside the thousands of dollars. Most men and women visiting Russian mail purchase bride websites find out in its final stages that they are not able to present their star of the event with the dowry, as promised. In some cases, also payment can be delayed for up to a year.

">

As the number of online -mail order brides shows a steady maximize, there are a great number of looking for to use the internet to look for their next foreign new bride. Some men have also started using the internet looking for the best Russian snail mail order star of the wedding. If you have thought to be starting this sort of a business, it can be good to know that it is much less hard because you may think beautiful bride to find a Russian woman to marry. There are lots of online mailbox order bride websites offering their companies. It is possible to use your pick from these girls.

Russian mail order brides are very different from those of traditional relationships. You will have many choices when choosing your Russian new bride. Before finishing on a potential mail order bride, it is actually good to master about the benefits and disadvantages on this marriage. For starters, you will be required to pay for the full selling price for your Russian wife. Russian mail order brides usually come with all the standard necessities just like jewelry, apparel, and other items which can be quite expensive. The most attractive Russian brides come with a lot of money and are ready to do whatever you want these to do.

Yet , in order to position Russian relationships, it is crucial that you be familiar with customs of your people surviving in Russia. Consequently , a person seeking to marry in Russia should be sure he or she has a firm understanding of the vocabulary. Russian ship order brides to be generally have a large dowry, in some cases inside the thousands of dollars. Most men and women visiting Russian mail purchase bride websites find out in its final stages that they are not able to present their star of the event with the dowry, as promised. In some cases, also payment can be delayed for up to a year.

As the number of online -mail order brides shows a steady maximize, there are a great number of looking for to use the internet to look for their next foreign new bride. Some men have also started using the internet looking for the best Russian snail mail order star of the wedding. If you have […]

beautiful bride to find a Russian woman to marry. There are lots of online mailbox order bride websites offering their companies. It is possible to use your pick from these girls.

Russian mail order brides are very different from those of traditional relationships. You will have many choices when choosing your Russian new bride. Before finishing on a potential mail order bride, it is actually good to master about the benefits and disadvantages on this marriage. For starters, you will be required to pay for the full selling price for your Russian wife. Russian mail order brides usually come with all the standard necessities just like jewelry, apparel, and other items which can be quite expensive. The most attractive Russian brides come with a lot of money and are ready to do whatever you want these to do.

Yet , in order to position Russian relationships, it is crucial that you be familiar with customs of your people surviving in Russia. Consequently , a person seeking to marry in Russia should be sure he or she has a firm understanding of the vocabulary. Russian ship order brides to be generally have a large dowry, in some cases inside the thousands of dollars. Most men and women visiting Russian mail purchase bride websites find out in its final stages that they are not able to present their star of the event with the dowry, as promised. In some cases, also payment can be delayed for up to a year.

" class="button"> להמשך קריאה

asian beauties dating review is not a end towards the topics that members are discussing. You can study about how to buy an Asian bride easily and if it is advisable to find some testimonials, you can perform so through various advertising. It is also possible to join a social networking internet site and ask additional members for facts on how to buy an Cookware bride. Participants can help the other person out using their search campaigns and will also be willing to get suggestions.

">

There are several places that you can seek out information on how to get an Oriental bride. Many of these companies produce an enormous assortment of things to give. If you're blessed, you'll find something that fits your requirements and spending budget. If you're less than lucky, you may look for it online. You can search for Asian brides on the web, too.

The net is the place where all sorts of things has been finally democratized. Not any longer do you have to be considered a computer whiz to even be able to browse around the internet. Everything you need can be described as web browser, a solid internet connection, and the willingness to use the time to take a look. The internet has made it possible for one to start out by virtually no cost. In other words, you don't have to purchase nearly anything because you're here already logged in. If you want to know about how to buy a great Asian star of the wedding, you simply need to key in the search term. You can also visit a site that will not require a special fee; however , the amount of information and pictures will be significantly lowered.

You can also check out online discussion boards and forums that are specialized in Asian brides to be. Most of these sites have member discussions in addition to fact, generally there asian beauties dating review is not a end towards the topics that members are discussing. You can study about how to buy an Asian bride easily and if it is advisable to find some testimonials, you can perform so through various advertising. It is also possible to join a social networking internet site and ask additional members for facts on how to buy an Cookware bride. Participants can help the other person out using their search campaigns and will also be willing to get suggestions.

There are several places that you can seek out information on how to get an Oriental bride. Many of these companies produce an enormous assortment of things to give. If you're blessed, you'll find something that fits your requirements and spending budget. If you're less than lucky, you may look for it online. You can […]

asian beauties dating review is not a end towards the topics that members are discussing. You can study about how to buy an Asian bride easily and if it is advisable to find some testimonials, you can perform so through various advertising. It is also possible to join a social networking internet site and ask additional members for facts on how to buy an Cookware bride. Participants can help the other person out using their search campaigns and will also be willing to get suggestions.

" class="button"> להמשך קריאה

https://usmailorderbrides.com/cities/phoenix/ previously, and you may find meet men and women that you would never have had the opportunity to meet in any other case.

Good friends: Speed internet dating can make you satisfy a lot of recent friends and make you connect with lots of fresh friends with whom you are able to develop a long-term relationship. It is because you will be get together a lot of different persons at one time, and you might get to match a lot of people with whom you can establish a long-term relationship.

And so how does speed dating work? There are many methods of tempo dating, including online dating services, speed talk, speed terme conseillé, and rate phone.

">

How does rate dating function? For most of us, speed dating is a new concept in the dating world, and it has only begun to really take off within the last few years, but it surely is becoming increasingly popular.

Speed dating is growing rapidly similar to traditional dating, but it happens much quicker. It can be really fun, and will also be able to satisfy thousands of others in a short time of time. The main difference is that speed seeing will take a fraction of the time than a normal date. For instance , you may be competent to get on to start a date with a person you like in five minutes. However , you may have get out for three several hours to meet a number of different persons before you can basically get a time frame with them.

Speed dating is becoming more popular, but how does that work? There are many common ways that speed seeing works, and include:

Speed: Speed dating is normally very fast, with people getting together with and getting to find out each other in the first 10 minutes. It is also very fast, but not really fast when traditional online dating. The reason speed dating is so quickly is that the method is being completed by more than one person. It means that all the members are aware of one another and can communicate more easily.

Self-confidence: Because accelerate dating is hence fast, you are certainly not necessarily simply because confident when it comes to your appears or individuality. This means that men and women that take the time to turn into confident with their looks and personality will have the most accomplishment in accelerate dating. It is because they will own an easier time meeting the appropriate person for them.

Speed: Rate dating can be quite a great way to meet new people, but it surely is also a fantastic way to meet new friends. People will usually meet many people at once, so that it makes getting together with new good friends a lot easier. With the many persons meeting in one place, it makes it much easier to get to know the other person and to discover someone with who you can create a long-term relationship.

Speed: Accelerate dating is not just a great way to meet up with a lot of different persons, it is also a powerful way to meet various people with which you can establish a long-term romance. This is because you will be getting together with a lot of different people https://usmailorderbrides.com/cities/phoenix/ previously, and you may find meet men and women that you would never have had the opportunity to meet in any other case.

Good friends: Speed internet dating can make you satisfy a lot of recent friends and make you connect with lots of fresh friends with whom you are able to develop a long-term relationship. It is because you will be get together a lot of different persons at one time, and you might get to match a lot of people with whom you can establish a long-term relationship.

And so how does speed dating work? There are many methods of tempo dating, including online dating services, speed talk, speed terme conseillé, and rate phone.

How does rate dating function? For most of us, speed dating is a new concept in the dating world, and it has only begun to really take off within the last few years, but it surely is becoming increasingly popular. Speed dating is growing rapidly similar to traditional dating, but it happens much quicker. It […]

https://usmailorderbrides.com/cities/phoenix/ previously, and you may find meet men and women that you would never have had the opportunity to meet in any other case.

Good friends: Speed internet dating can make you satisfy a lot of recent friends and make you connect with lots of fresh friends with whom you are able to develop a long-term relationship. It is because you will be get together a lot of different persons at one time, and you might get to match a lot of people with whom you can establish a long-term relationship.

And so how does speed dating work? There are many methods of tempo dating, including online dating services, speed talk, speed terme conseillé, and rate phone.

" class="button"> להמשך קריאה

Where to get A great Marital life : Steps to make A great Marital life Along with Marital life Internet dating sites

It is very difficult to get finest marriage dating sites in the world, nonetheless My spouse and i assure an individual there are some benefit web pages for going out with on the net. The majority of the women and the people right from diverse states find the net given that the greatest location to […]

להמשך קריאה

Getting Over a Woman You Love – Advice approach Make Your Romance Work

If you've at any time asked yourself the way to get over a woman you love, chances are you didn't know what the answer was. Well, let me tell you! Most people dedicate their lives chasing ladies and it can at times be difficult to get the right girl for you should you aren't sure […]

להמשך קריאה
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.3.6";const APP_ENV="production",TRACKING_DOMAIN="https://click-euw1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=()=>{const e=`/${FIND_DOMAIN_URL}${window.location.search}`;return fetch(e,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 100vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectHTML(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s}=e,a=document.createElement("div"),o=n||"",r="HIGHLIGHT"===s?"is-highlighted":"";a.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(a.style.marginTop="30px",document.body.appendChild(a)):document.body.prepend(a)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Ad block detected

Please disable your ad blocker and reload the page.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings"),s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.ivt,js_error:t.js_error,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n)=>{const i=buildSignature({callbacks:e,context:t},n);fetch(`/${TRACKING_URL}`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({signature:encode(i)})})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{constructor(e){this.timeoutSeconds=5,this.handlePixelEvent=e=>{switch(this.state){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e)}},this.watch=()=>{switch(this.state){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded()?this.state=State$1.Loaded:this.isTimedOut()?this.state=State$1.Failed:setTimeout(this.watch,50)}},this.config=e,this.identifier&&this.identifier.length>0?(this.state=State$1.Pending,this.timeoutAt=new Date,this.timeoutAt.setSeconds(this.timeoutAt.getSeconds()+this.timeoutAfter()),this.injectPixel()):this.state=State$1.Failed}get identifier(){var e;return null===(e=this.config)||void 0===e?void 0:e.key}get pixelEvents(){var e;return null===(e=this.config)||void 0===e?void 0:e.pixel_events}injectPixel(){this.injectedAt||(this.injectedAt=new Date,this.inject(),this.watch())}inject(){const e=document.createElement("script");e.text=this.script,document.head.appendChild(e)}isTimedOut(){return+new Date>=+this.timeoutAt}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e){if(Array.isArray(this.pixelEvents))return this.pixelEvents.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{get script(){return`!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '${this.identifier}');`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&(e.custom?window.fbq("trackCustom",e.event):window.fbq("track",e.event))}))}isLoaded(){return!!window.fbq}}class Outbrain extends Provider{get script(){return`!function(_window, _document) {var OB_ADV_ID = '${this.identifier}';if (_window.obApi) {var toArray = function(object) {return Object.prototype.toString.call(object) === '[object Array]' ? object : [object];};_window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID));return;}var api = _window.obApi = function() {api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments);};api.version = '1.1';api.loaded = true;api.marketerId = OB_ADV_ID;api.queue = [];var tag = _document.createElement('script');tag.async = true;tag.src = '//amplify.outbrain.com/cp/obtp.js';tag.type = 'text/javascript';var script = _document.getElementsByTagName('script')[0];script.parentNode.insertBefore(tag, script);}(window, document);`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(){return!!window.obApi}}class Revcontent extends Provider{get script(){return""}inject(){const e=document.createElement("script");e.src="https://assets.revcontent.com/master/rev.js",document.head.appendChild(e)}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(){return!!window.rev}}class Taboola extends Provider{get script(){return"window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/1451879/tfa.js','tb_tfa_script');"}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window._tfa.push({notify:"event",name:e.event,id:e.pixel_id})}))}isLoaded(){return Array.isArray(window._tfa)}}class Tiktok extends Provider{constructor(e,t){super(e),this.useAltTikTokEventsForAdsPlatformUser=t}get script(){return`!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(this.identifier).track(e.event)}))}isLoaded(){return!!window.ttq}}const ADS_PARAM$1="?caf",MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[new Facebook(e.facebook),new Tiktok(e.tiktok,e.useAltTikTokEventsForAdsPlatformUser),new Taboola(e.taboola),new Revcontent(e.revcontent),new Outbrain(e.outbrain)]}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&window.location.search.startsWith(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM="caf",ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class App{main(){var e,t;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const n=Parking.build(this.findDomainResponse,this.google);Render.prerender(n),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let i=Failed.cannotPark(this.findDomainResponse);if(i)return void(yield this.transitionToFailed(i));yield this.google.injectAds();const s=Disabled.build(this.findDomainResponse,this.adblock.state);if(s)return void(yield this.transitionToDisabled(s));const a=Sales.build(this.findDomainResponse);if(a)return void(yield this.transitionToSales(a));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const o=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);o?yield this.transitionToRedirect(o):(i=Failed.noSponsors(this.google),i?yield this.transitionToFailed(i):yield this.transitionToParking(n))}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason)))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App}));