6ca52864-f016-495b-9cd2-62ab8855e9b3dc898d62-8e61-4e32-b3aa-ad72d9740914CAPI to CAWI SampleFalseAvivr6380040347683700006380040352635777013155378903999970000TrueFalse26False0SurveyToGo.UserLogic.Creator.SurveyLogicTempl<?xml version="1.0" encoding="utf-16"?>
<UserLogicContents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Items>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtEntranceRule</QTp>
<Key>10</Key>
<Name>HandleQuestionEnter_10</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>-1</int>
</QDep>
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtEntranceRule</QTp>
<Key>9</Key>
<Name>HandleQuestionEnter_9</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>-1</int>
</QDep>
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtJumpingRule</QTp>
<Key>10</Key>
<Name>HandleQuestionJump_10</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>-1</int>
</QDep>
<CDep />
<QJmp>
<int>6</int>
<int>7</int>
</QJmp>
<CJmp />
<OJmp />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtJumpingRule</QTp>
<Key>9</Key>
<Name>HandleQuestionJump_9</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
<QJmp>
<int>12</int>
</QJmp>
<CJmp />
<OJmp />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtJumpingRule</QTp>
<Key>8</Key>
<Name>HandleQuestionJump_8</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
<QJmp>
<int>12</int>
</QJmp>
<CJmp />
<OJmp />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtJumpingRule</QTp>
<Key>7</Key>
<Name>HandleQuestionJump_7</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>-1</int>
</QDep>
<CDep />
<QJmp>
<int>9</int>
</QJmp>
<CJmp />
<OJmp />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtJumpingRule</QTp>
<Key>6</Key>
<Name>HandleQuestionJump_6</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>-1</int>
</QDep>
<CDep />
<QJmp>
<int>9</int>
</QJmp>
<CJmp />
<OJmp />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtJumpingRule</QTp>
<Key>12</Key>
<Name>HandleQuestionJump_12</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
<QJmp />
<CJmp />
<OJmp>
<eJumpQuestionResult>ejqrSubmit</eJumpQuestionResult>
</OJmp>
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtValidationRule</QTp>
<Key>7</Key>
<Name>HandleQuestionValidate_7</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtStart</QTp>
<Key>9</Key>
<Name>QuestionStart_9</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtEnd</QTp>
<Key>8</Key>
<Name>QuestionEnd_8</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>6</int>
<int>7</int>
</QDep>
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtEnd</QTp>
<Key>2</Key>
<Name>QuestionEnd_2</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>11</int>
</QDep>
<CDep />
</HData>
<HData>
<HTp>ehtQuestion</HTp>
<STp>estLast</STp>
<CTp>echtLast</CTp>
<QTp>eqhtEnd</QTp>
<Key>12</Key>
<Name>QuestionEnd_12</Name>
<Behv>ecsbDefault</Behv>
<QDep>
<int>0</int>
</QDep>
<CDep />
</HData>
<HData>
<HTp>ehtChapter</HTp>
<STp>estLast</STp>
<CTp>echtEntranceRule</CTp>
<QTp>eqhtLast</QTp>
<Key>5</Key>
<Name>HandleChapterEnter_5</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
</HData>
<HData>
<HTp>ehtChapter</HTp>
<STp>estLast</STp>
<CTp>echtEntranceRule</CTp>
<QTp>eqhtLast</QTp>
<Key>3</Key>
<Name>HandleChapterEnter_3</Name>
<Behv>ecsbDefault</Behv>
<QDep />
<CDep />
</HData>
</Items>
<Source>// Question symbols
var NAME = null;var AGE = null;var GENDER = null;var Q1 = null;var Q2 = null;var Q3 = null;var Q4 = null;var Q5 = null;var Q6 = null;var Q7 = null;var Q8 = null;var URL = null;var Q9 = null;var Q10 = null;var Q11 = null;var Q12 = null;var Q13 = null;
function StartSurvey()
{
/*_@_SS_START_@*/
if(IsPlatform(ePlatform.Web)){
if(Vars["EnteredCAWI"] != true){
Vars["EnteredCAWI"] = true;
ExecutionMgr.GotoQuestion(Q10);
}
}
/*_@_SS_END_@*/
}
/*_@_USERCODE_START_@*/
function OnValidationTextRequired(inQuestionIndex, inValidationID, inMessage) {
return inMessage;
}
function dblSetDCBRRelationship(inQStatements,inQSubStatements){
var outText = "";
outText+= AnswerText(inQStatements,9) + "|" + AnswerText(inQSubStatements,9) + "|" + "9" + ";";
outText+= AnswerText(inQStatements,7) + "|" + AnswerText(inQSubStatements,7) + "|" + "7" + ";";
outText+= AnswerText(inQStatements,5) + "|" + AnswerText(inQSubStatements,5) + "|" + "5" + ";";
outText+= AnswerText(inQStatements,8) + "|" + AnswerText(inQSubStatements,8) + "|" + "8" + ";";
outText+= AnswerText(inQStatements,3) + "|" + AnswerText(inQSubStatements,3) + "|" + "3" + ";";
outText+= AnswerText(inQStatements,6) + "|" + AnswerText(inQSubStatements,6) + "|" + "6" + ";";
outText+= AnswerText(inQStatements,1) + "|" + AnswerText(inQSubStatements,1) + "|" + "1" + ";";
outText+= AnswerText(inQStatements,2) + "|" + AnswerText(inQSubStatements,2) + "|" + "2" + ";";
outText+= AnswerText(inQStatements,4) + "|" + AnswerText(inQSubStatements,4) + "|" + "4" + ";";
return outText;
}
function dblSetDCBRBrands(inQBrands,inQBrandsImages,intOrderArray){
var outText = "";
var i=1;
for(i=0;i<intOrderArray.length;i++){
if(Contains(inQBrands,intOrderArray[i])){
outText+= AnswerText(inQBrands,intOrderArray[i]) + "|" + AnswerText(inQBrandsImages,intOrderArray[i]) + "|" + intOrderArray[i] + ";"
}
}
return outText;
}
function dblSetDCBRTexts(inQInfoText,inQFinishText,inQFinishedInfo,inQQuestionText){
var outText = "";
outText = GetText(inQInfoText) + "|" + GetText(inQFinishText) + "|" + GetText(inQFinishedInfo) + "|" + GetText(inQQuestionText);
return outText;
}
function dblSetDCBRAnswers(inQ,inQVars){
//reading inQVars and setting up inQ (which is a grid)
var i=0;
var j=0;
var result;
var answerDCBR = new Array();
answerDCBR = stringSplit(inQVars,";")
var tmpAnswer = new Array();
for(i=0;i<answerDCBR.length;i++){
if(answerDCBR[i]!=""){
tmpAnswer = stringSplit(answerDCBR[i],"|")
result = SetAnswerChoice(inQ,intParse(tmpAnswer[1]),intParse(tmpAnswer[0]));
}
}
}
function dblValidateDCBR(inQ,inQVars){
//check no. of brands qualified for DCBR are all answered
var retVal = false;
var brandCount = NumOfSelectedChoices(inQ);
var answerDCBR = stringSplit(inQVars,";")
if(brandCount !=answerDCBR.length){
retVal = true;
}
return retVal;
}
function setAnswerByParentAnswers(inQTarget, inQidsParent)
{
var numOfQues = inQidsParent.length;
var numOfAnswers = Parent.GetAnswerCount(inQidsParent[0]);
var contained;
var i;
var j;
for (i=1;i<= numOfAnswers;i++) {
contained = false;
for (j=0; j<numOfQues;j++) {
contained = Parent.Contains(inQidsParent[j],i);
if (contained) {
break;
}
}
if (contained) {
dblSetSpecificAnswer(inQTarget, i,true);
}
}
}
function dblSelectConXBrands(inQ,BrandArray){
//This function setup 3 brands to inQ randomly or based on BrandArray
var BrandsToSet = new Array();
var BrandPosArray = CreateRandomArray(BrandArray.length);
var i=0;
if(BrandArray.length >0){
//Setup using brand array
for(i=0;i<BrandArray.length;i++){
BrandsToSet[i] = BrandArray[BrandPosArray[i]-1];
if(i>2){
break;
}
}
}
SetAnswer(inQ,BrandsToSet);
}
function dblSetConXXP1Brands(inQBrands,BrandOrder,BrandOrderQ){
var outText = "";
var i=1;
var brandArray = new Array();
var selectedBrandOrder = ""
brandArray = stringSplit(BrandOrder,",");
for(i=1;i<GetAnswerCount(inQBrands);i++){
if(Contains(inQBrands,intParse(brandArray[i-1]))){
//selectedBrandOrder = selectedBrandOrder + brandArray[i-1] + ",";
selectedBrandOrder = selectedBrandOrder.concat(brandArray[i-1]);
selectedBrandOrder += ",";
outText+= "<span class='mrGridQuestionText'>" + AnswerText(inQBrands,intParse(brandArray[i-1])) + "</span>";
}
}
outText+= "<span class='mrGridQuestionText'>" + AnswerText(inQBrands,GetAnswerCount(inQBrands)) + "</span>";
SetAnswer(BrandOrderQ,selectedBrandOrder);
return outText;
}
function dblSetConXXPs(inQXPs,XP_Order){
var outText = "";
var i=1;
var XPOrder = new Array();
XPOrder = stringSplit(XP_Order,",");
for(i=1;i<=GetAnswerCount(inQXPs);i++){
if(Contains(inQXPs,XPOrder[i-1])){
outText+= "<span class='mrGridCategoryText'>" + AnswerText(inQXPs,XPOrder[i-1]) + "</span>";
}
}
return outText;
}
/*
dblSetConX_XP1Answers(inQ,inQVars,BrandOrder,XPOrder)
inQ = Question to setup based on the Global Vars setup by CQRP. inQ question is Multiple Response Grid
inQVars = Global Variable setup by CQRP. The format would be: 0|0;0|1;0|2;1|1;2|3
in 0|1; 0 is the Topic number and 1 is the answer number NOTE: This is not the topic index or the answer index. We'll have to match this with the BrandOrder and XPOrder
XPOrder=Stores the topic index in the order in which the topics are shown at CQRP
The format would be: 30,28,1
BrandOrder: Stores the brand index in the order in which brands (answers)are shown at CQRP
The format would be: 1,5,7
*/
function dblSetConX_XP1Answers(inQ,inQVars,BrandOrder,XPOrder){
//reading inQVars and setting up inQ (which is a grid)
var i=0;
var j=0;
var result;
var BrandArray = new Array();
//Split the brand array to get the array of brands shown
BrandArray = stringSplit(BrandOrder,",");
//Place value of None of these is equal to BrandArray.Length
var NoneValue = BrandArray.length;
var XPArray = new Array();
//Split the Topic array (XPOrder) to get the array of topics shown
XPArray = stringSplit(XPOrder,",");
var answerXP1 = new Array();
//Split the answer Array to get answer given for each topic this will give answerXP1[0] = 0|1 answerXP1[1] = 0|2 etc.
answerXP1 = stringSplit(inQVars,";");
var AnsArray = new Array();
var k=0;
var tmpXP=0;
var tmpAnswer = new Array();
//clear previous answers
ClearAnswer(inQ);
for(i=0;i<answerXP1.length;i++){
if(answerXP1[i]!=""){
//Split the answer by | to get topic and answer (brand)
tmpAnswer = stringSplit(answerXP1[i],"|")
//If the topic is same for example 0|0;0|1 we'll keep on updating AnsArray. Once the Topic number is different, we'll set the answer of multi response grid
// Set the value of j=Topic number
if(j!=intParse(tmpAnswer[0]))
{
j=intParse(tmpAnswer[0]);
//As the topics are shown in random order, we are using XPArray[TopicNumber] where XPArray contains the actual topic index at TopicNumber Location
result = SetAnswerChoice(inQ,intParse(XPArray[tmpXP]),AnsArray);
k=0;
AnsArray = new Array();
}
if(intParse(tmpAnswer[1])==NoneValue){
//If the answer is none (which will always be the last answer. We'll set it here
AnsArray[k] = GetAnswerCount(inQ);
}
else
{
//Else setup the answer array with Actual brand index from BrandArray
AnsArray[k] = intParse(BrandArray[intParse(tmpAnswer[1])]);
}
k = k + 1;
tmpXP = intParse(tmpAnswer[0]);
}
}
// To handle the last iteration / topic
result = SetAnswerChoice(inQ,intParse(XPArray[tmpXP]),AnsArray);
}
function dblAskXP3(inQ){
var retVal=0;
var i=0;
for(i=1;i<=GetTopicCount(inQ);i++){
if(ContainsChoice(inQ,i,11)==false && IsTopicVisible(inQ,i)){
retVal=1;
break;
}
}
return retVal;
}
function dblSetConX_XP1_Selected(inQ,resultQ){
var tempArray = new Array();
var resultArray = new Array();
var i=0;
var j=0;
var k=0;
for(i=1;i<=GetTopicCount(inQ);i++){
if(IsTopicVisible(inQ,i)){
tempArray = GetAnswersChoice(inQ,i)
for(j=0;j<tempArray.length;j++){
resultArray[k]=tempArray[j];
k++;
}
}
}
SetAnswer(resultQ,resultArray);
}
function dblGetXPs(inQ,resultQ,brandIndex){
var i=0;
var j=0;
var resultArray = new Array();
for(i=1;i<=GetTopicCount(inQ);i++){
if(ContainsChoice(inQ,i,brandIndex) && IsTopicVisible(inQ,i)){
resultArray[j] = i;
j++;
}
}
SetAnswer(resultQ,resultArray);
}
function dblSetupGlobalVarsFromEmpty(inQ){
return GetText(inQ);
};
function dblfnRenderConXDemo(inQArray,delimChar){
//This function generates global variable to be used to draw ConX demo
var retVal="";
var i=1;
for(i=0;i<inQArray.length;i++){
if(i==11){
//setting up the vertical text
retVal+=AnswerText(inQArray[i],1) + delimChar + AnswerText(inQArray[i],2) + delimChar + AnswerText(inQArray[i],3) + delimChar + AnswerText(inQArray[i],4) + delimChar;
}
else if (i==12){
//setting up the horizontal text
retVal+=AnswerText(inQArray[i],1) + delimChar + AnswerText(inQArray[i],2) + delimChar + AnswerText(inQArray[i],3) + delimChar + AnswerText(inQArray[i],4) + delimChar;
}
else{
retVal+=GetText(inQArray[i]) + delimChar;
}
}
return retVal;
}
function dblSetRBXBrands(inQBrands,inQBrandsImages,intOrderArray){
var outText = "";
var i=0;
for(i=0;i<intOrderArray.length;i++){
if(Contains(inQBrands,intOrderArray[i])){
outText+= AnswerText(inQBrandsImages,intOrderArray[i]) + "|";
}
}
return outText;
}
function dblSetConXBrands(inQBrands,inQBrandsImages,intOrderArray){
var outText = "";
var i=0;
for(i=0;i<intOrderArray.length;i++){
if(Contains(inQBrands,intOrderArray[i])){
outText+= AnswerText(inQBrands,intOrderArray[i]) + "|" + AnswerText(inQBrandsImages,intOrderArray[i]) + "|" + intOrderArray[i] + ";"
}
}
return outText;
}
function dblValidateAnswers(inQArray,minAnsCount)
{
var retVal=false;
var ansCount=0;
var i=0;
for(i=0;i<inQArray.length;i++){
if(Answered(inQArray[i])){
ansCount+=1;
}
}
if(ansCount < minAnsCount){
retVal = true;
}
return retVal;
}
function dblSetRBXAnswers(inQVars,inBrandVars,inTargetQues){
//reading inQVars and setting up inQ (which is a grid)
var numOfQues = inTargetQues.length;
var i=0;
var j=0;
var answerRBX = stringSplit(inQVars,";");
var brandArray = stringSplit(inBrandVars,";");
var tmpAnswer = new Array();
var tmpBrand = new Array();
for(i=0;i<answerRBX.length;i++){
if(answerRBX[i]!=""){
tmpAnswer = stringSplit(answerRBX[i],"|")
tmpBrand = stringSplit(brandArray[i],"|")
//Set pos X
SetAnswerIter(inTargetQues[0], intParse(tmpBrand[2]),tmpAnswer[1]);
//Set pos Y
SetAnswerIter(inTargetQues[1],intParse(tmpBrand[2]),tmpAnswer[2]);
//Set % X
SetAnswerIter(inTargetQues[2],intParse(tmpBrand[2]),tmpAnswer[3]);
//Set % Y
SetAnswerIter(inTargetQues[3],intParse(tmpBrand[2]),tmpAnswer[4]);
}
}
}
function dblValidateRBX(inQVars,inQBrands){
var retVal = false;
var answerRBX = stringSplit(inQVars,";")
var i=0;
var numOfBrands=0;
for(i=0;i<answerRBX.length;i++){
if(answerRBX[i]!=""){
numOfBrands++;
}
}
if(numOfBrands!=NumOfSelectedChoices(inQBrands)){
retVal = true;
}
return retVal;
}
function dblSetXPAsked(inQ){
//Used to set LST_XP
var i=0;
var resultArray = new Array();
for(i=1;i<=GetAnswerCount(inQ);i++){
resultArray[i-1] = i;
}
SetAnswer(inQ,resultArray);
}
function dblsbPosReturn(GridQx,QGridy,QAsk,TypeAsk){
var xMax = 0;
var yMax = 0;
var yArray = new Array(GetAnswerCount(QAsk));
var xArray = new Array(GetAnswerCount(QAsk));
var ansArray = new Array();
var tempAnsArray1 = new Array();
var tempAnsArray2 = new Array();
var index;
var k=0;
var i=0;
var j=0;
var x=0;
var y=0;
var z=0;
for(i=0;i<yArray.length;i++){
yArray[i] = new Array(2);
xArray[i] = new Array(2);
}
//Clears answers
ClearAnswer(QAsk);
if(TypeAsk==2){
for(i=1;i<=GetAnswerCount(QAsk);i++){
if(AnsweredIter(GridQx,i) && AnsweredIter(QGridy,i) && AnswerIter(GridQx,i)>69 && AnswerIter(QGridy,i)>69){
if(AnswerIter(QGridy,i)>yMax){
yMax = AnswerIter(QGridy,i);
}
ansArray[k] = i;
yArray[k][0] = i;
yArray[k][1] = AnswerIter(QGridy,i);
xArray[k][0] = i;
xArray[k][1] = AnswerIter(GridQx,i);
k++;
}
}
//if more than 1 ans >69% i.e. k>1
if(k>1){
for(i=0;i<ansArray.length;i++){
if(yArray[i][1]>=yMax){
xMax = xArray[i][1];
tempAnsArray1[j] = ansArray[i];
j++;
}
}
if(j>1){
for(i=0;i<ansArray.length;i++){
for(y=0;y<tempAnsArray1.length;y++){
if(xArray[i][1]>=xMax && tempAnsArray1[y]==ansArray[i]){
tempAnsArray2[x] = tempAnsArray1[y];
x++;
}
}
}
if(x>1){
//more than 1 XP with highest rating
var finalBrandArray = RandomizeArray(tempAnsArray2);
SetAnswer(QAsk,finalBrandArray[0]);
}
else
{
SetAnswer(QAsk,tempAnsArray2[0]);
}
}
else{
SetAnswer(QAsk,tempAnsArray1);
}
}
else{
SetAnswer(QAsk,ansArray)
}
}
else{
for(i=1;i<=GetAnswerCount(QAsk);i++){
if(AnsweredIter(GridQx,i) && AnsweredIter(QGridy,i) && AnswerIter(GridQx,i)>50 && AnswerIter(QGridy,i)>50){
ansArray[k] = i;
k++;
}
}
SetAnswer(QAsk,ansArray);
}
}
function dblsbNegReturn(GridQx,QGridy,QAsk,TypeAsk){
var xMin = 0;
var yMax = 0;
var yArray = new Array(GetAnswerCount(QAsk));
var xArray = new Array(GetAnswerCount(QAsk));
var ansArray = new Array();
var tempAnsArray1 = new Array();
var tempAnsArray2 = new Array();
var index;
var k=0;
var i=0;
var j=0;
var x=0;
var y=0;
var z=0;
for(i=0;i<yArray.length;i++){
yArray[i] = new Array(2);
xArray[i] = new Array(2);
}
//Clears answers
ClearAnswer(QAsk);
if(TypeAsk==2){
for(i=1;i<=GetAnswerCount(QAsk);i++){
if(AnsweredIter(GridQx,i) && AnsweredIter(QGridy,i) && AnswerIter(GridQx,i)<31 && AnswerIter(QGridy,i)>69){
if(AnswerIter(QGridy,i)>yMax){
yMax = AnswerIter(QGridy,i);
}
ansArray[k] = i;
yArray[k][0] = i;
yArray[k][1] = AnswerIter(QGridy,i);
xArray[k][0] = i;
xArray[k][1] = AnswerIter(GridQx,i);
k++;
}
}
//if more than 1 ans >69% i.e. k>1
if(k>1){
for(i=0;i<ansArray.length;i++){
if(yArray[i][1]>=yMax){
xMin = xArray[i][1];
tempAnsArray1[j] = ansArray[i];
j++;
}
}
if(j>1){
for(i=0;i<ansArray.length;i++){
for(y=0;y<tempAnsArray1.length;y++){
if(xArray[i][1]<=xMin && tempAnsArray1[y]==ansArray[i]){
tempAnsArray2[x] = tempAnsArray1[y];
x++;
}
}
}
if(x>1){
//more than 1 XP with highest rating
var finalBrandArray = RandomizeArray(tempAnsArray2);
SetAnswer(QAsk,finalBrandArray[0]);
}
else
{
SetAnswer(QAsk,tempAnsArray2[0]);
}
}
else{
SetAnswer(QAsk,tempAnsArray1);
}
}
else{
SetAnswer(QAsk,ansArray)
}
}
else{
for(i=1;i<=GetAnswerCount(QAsk);i++){
if(AnsweredIter(GridQx,i) && AnsweredIter(QGridy,i) && AnswerIter(GridQx,i)<50 && AnswerIter(QGridy,i)>50){
ansArray[k] = i;
k++;
}
}
SetAnswer(QAsk,ansArray);
}
}
function dblGetBrandText(inQ){
var retVal="";
var i=0;
for(i=1;i<=GetAnswerCount(inQ);i++){
if(Contains(inQ,i)){
retVal = AnswerText(inQ,i);
}
}
return retVal;
}
function dblSetMultipleAnswer(inQ,outQ){
var i;
var j=0;
var AnswerArray = new Array();
for(i=1;i<=GetAnswerCount(inQ);i++){
if(Contains(inQ,i)){
AnswerArray[j] = i;
j++;
}
}
SetAnswer(outQ,AnswerArray);
}
function dblCheckAudioAttachmentLength(inQ,lenToCheck){
var retVal = true;
var FileNameArray = new Array();
var i=0;
FileNameArray = GetAttachedFilesNames(inQ);
for(i=0;i<FileNameArray.length;i++){
if(GetRecordingLengthInSeconds(FileNameArray[i]) < lenToCheck){
retVal = false;
}
}
return retVal;
}
function dblToJSArray(inArray){
var retVal = new Array();
for(var i=0; i<inArray.length; i++){
retVal.push(inArray[i]);
}
return retVal;
}
function dblColorFromRGB(red, green, blue){
return (255<<24)+ (red<<16) + (green<<8) + blue;
}
//Gets latitude and longitude coordinates, and returns the distance of the surveyor from the specific point.
function dblDistanceFromGPSFence (fenceLat, fenceLon)
{
var pi = Math.PI;
var fenceLatInRad=fenceLat* pi / 180;
var fenceLonInRad=fenceLon* pi / 180;
var targetLatInRad = GetGPSLocation().Latitude * pi / 180;
var targetLonInRad = GetGPSLocation().Longitude * pi / 180;
var dist = Math.acos(Math.sin(targetLatInRad) * Math.sin(fenceLatInRad) + Math.cos(targetLatInRad) * Math.cos(fenceLatInRad) * Math.cos(targetLonInRad - fenceLonInRad)) * 6371;
return dist;
}
//Gets latitude and longitude coordinates and a radius in Kilo-Meters.
//Returns ‘true’ if the surveyor is in the given radius.
//Returns ‘false’ if the surveyor is not in the given radius.
function dblIsInGPSFence (fenceLat, fenceLon, distInKM)
{
var dist = dblDistanceFromGPSFence(fenceLat, fenceLon);
var retVal = false;
if(dist<distInKM){
retVal=true;}
else{
retVal=false;
}
return retVal;
}
//will return the distance between 2 locations
function dblDistanceBetweenTwoLocations (firstLat, firstLon, secondLat, secondLon)
{
var pi = Math.PI;
var firstLatInRad=firstLat* pi / 180;
var firstLonInRad=firstLon* pi / 180;
var targetLatInRad = secondLat * pi / 180;
var targetLonInRad = secondLon * pi / 180;
var dist = Math.acos(Math.sin(targetLatInRad) * Math.sin(firstLatInRad) + Math.cos(targetLatInRad) * Math.cos(firstLatInRad) * Math.cos(targetLonInRad - firstLonInRad)) * 6371;
return dist;
}
//Calculates the sum of all the visible topics in a numeric grid
function dblSumNumericGrid(inQ)
{
var retVal=0;
var numOfTopics=GetTopicCount(inQ);
var i;
for(i=1; i<=numOfTopics; i++)
{
if (IsTopicVisible(inQ,i)) {
retVal+=AnswerChoice(inQ,i);
}
}
return retVal;
}
//will check if one of the answers mentioned were chosen
function dblContainsOneOf(inQTarget,inAnswers)
{
var retVal = false;
var numOfAnswers = inAnswers.length;
var i;
for (i=0;i< numOfAnswers;i++) {
if (Contains(inQTarget,inAnswers[i])) {
retVal = true;
break;
}
}
return retVal;
}
//function dblContainsAll(inQTarget,inAnswers)
//{
// var retVal = true;
// var numOfAnswers = arguments.length-1;
// var i;
// for (i=0;i< numOfAnswers;i++) {
// retVal = retVal && Contains(inQTarget,arguments[i+1]);
// }
// return retVal;
//}
//will check if ALL of the answers mentioned were chosen
function dblContainsAllOf(inQTarget,inAnswers)
{
var retVal = true;
var numOfAnswers = inAnswers.length;
var i;
for (i=0;i< numOfAnswers;i++) {
retVal = retVal && Contains(inQTarget,inAnswers[i]);
}
return retVal;
}
//Single Choice Grid - in how many topics the answer was selected
function dblNumOfTopicsContains(inQ, inValueToCheck)
{
var retVal = 0;
var i=0;
for (i=1; i<=GetTopicCount(inQ);i++){
if (IsTopicVisible(inQ,i) && AnswerChoice(inQ,i) == inValueToCheck) {
retVal++;
}
}
return retVal;
}
//Multiple Selection Grid - in how many topics the answer was selected
function dblNumOfTopicsContainsChoice(inQ, inValueToCheck)
{
var retVal = 0;
var i=0;
for (i=1; i<=GetTopicCount(inQ);i++){
if (IsTopicVisible(inQ,i) && ContainsChoice(inQ,i,inValueToCheck)) {
retVal++;
}
}
return retVal;
}
//Multiple Selection & Single Choice - relevant for questions in iterations - in how many iterations the answer was selected
function dblNumOfIterContains(inQ, inValueToCheck)
{
var retVal = 0;
var i=0;
for (i=1; i<IterationIndex;i++){
if (ContainsIter(inQ,inValueToCheck,i)) {
retVal++;
}
}
return retVal;
}
//Numeric Grid, Open Ended Grid & Single Choice Grid - Will set the Topic with the value you enter
function dblSetSpecificTopic(inQ, inTopicIndex, inValue)
{
var curTopics = GetTopicCount(inQ);
var newAnswers=new Array();
var newArIdx=0;
var i;
for (i=0;i< curTopics;i++) {
var actualTopic = i+1;
if (actualTopic == inTopicIndex) {
newAnswers[i] = inValue;
}
else {
newAnswers[i] = AnswerChoice(inQ,actualTopic);
}
}
SetAnswer(inQ,newAnswers);
}
//Multiple Selection Grid - Will set the Topic with the value you enter
function dblSetSpecificTopicChoice(inQ, inTopicIndex, inValue)
{
var curTopics = GetTopicCount(inQ);
var newAnswers=new Array();
newAnswers.push(inValue);
var i;
var ansArr = GetAnswersChoice(inQ, inTopicIndex);
for (i=0;i < ansArr.length;i++)
{
newAnswers.push(ansArr[i]);
}
SetAnswerChoice(inQ, inTopicIndex, newAnswers);
}
//Will set the Answer with the value you enter
function dblSetSpecificAnswer(inQ, inAnswerIdx, inChecked)
{
var curAnswers = GetAnswers(inQ);
var newAnswers=new Array();
var newArIdx=0;
var i;
for (i=0;i< curAnswers.length;i++) {
if (curAnswers[i] != inAnswerIdx) {
newAnswers[newArIdx] = curAnswers[i];
newArIdx++;
}
}
if (inChecked) {
newAnswers[newArIdx] = inAnswerIdx;
}
if (newAnswers.length > 0) {
SetAnswer(inQ,newAnswers);
}
else {
ClearAnswer(inQ);
}
}
//Set the answers based on the answers of a different question
function dblSetAnswersByAnswers(inQTarget,inQids)
{
var numOfQues = inQids.length;
var numOfAnswers = GetAnswerCount(inQids[0]);
var i;
for (i=1;i<= numOfAnswers;i++) {
var contained = false;
var j;
for (j=0; j<numOfQues;j++) {
contained = Contains(inQids[j],i);
if (contained) {
break;
}
}
if (contained) {
dblSetSpecificAnswer(inQTarget, i,true);
}
}
}
//Set the answers based on the answers of a different question with the ability to exclude specific answers you add as an array.
function dblSetAnswersByAnswersEx (inQTarget,inQids,inExcludeHiddenTargetAnswers)
{
var numOfQues = inQids.length;
var numOfAnswers = GetAnswerCount(inQids[0]);
var i;
// go over all answers and for each check if it exists in the source questions
for (i=1;i<= numOfAnswers;i++) {
var contained = false;
var j;
// go over all source questions and check if the answer is checked
for (j=0; j<numOfQues;j++) {
contained = Contains(inQids[j],i);
if (contained) {
break;
}
}
// in case it was contained check if need to add to target question
if (contained) {
var addAnswer = true;
if ((inExcludeHiddenTargetAnswers) && !IsAnswerVisible(inQTarget,i)) {
addAnswer = false;
}
if (addAnswer) {
dblSetSpecificAnswer(inQTarget, i,true);
}
}
}
}
//Calculates the sum of the Answered & visible topics
function dblSumOfTopics (inQuesIdx)
{
var retVal = 0;
var i;
var numOfTopics = GetTopicCount(inQuesIdx);
for (i=0;i<numOfTopics;i++) {
var currTopic = i+1;
if (IsTopicVisible (inQuesIdx, currTopic)) {
var currValue = AnswerChoice(inQuesIdx, currTopic);
if (currValue != -99999) {
retVal += currValue;
}
}
}
return retVal;
}
//Using this function will format the number entered to a Currency Format
function dblFormatNumberToCurrency(num) {
var retVal = "";
var num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
var sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
var cents = num%100;
num = Math.floor(num/100).toString();
var addZero = "";
if(cents<10) {
addZero = "0";
}
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
}
retVal = (((sign)?'':'-') + '$' + num + '.' +addZero+ cents)
return retVal;
}
//Will convert a number to Float
function dblToFloat(inNumber)
{
var retVal = parseFloat(inNumber.toString().replace(",", "."));
return retVal;
}
//Will set the answers visible in a question
function dblSetAnswerVisible(inQTarget,inValue,inReset,inAnswers)
{
var retVal = false;
var numOfAnswers = inAnswers.length;
var i;
if (inReset) {
SetAnswerVisible(inQTarget,true);
}
for (i=0;i< numOfAnswers;i++) {
SetAnswerVisible(inQTarget, inAnswers[i], inValue);
}
return retVal;
}
//Will search for the text entered and return true/false if found
function dblContainsByText(inQIdx, inText)
{
var retVal = false;
var i=0;
for (i=0; i<GetAnswerCount(inQIdx); i++){
var idx = i+1;
var text = AnswerText(inQIdx,idx);
if (text == inText) {
if (Contains(inQIdx,idx)) {
retVal = true;
break;
}
}
}
return retVal;
}
//Filters the answers of a question based on another question
function dblFilterAnswersByAnswersByText (inTargetQ, inShow,inSourceQ)
{
SetAnswerVisible(inTargetQ,!inShow);
var i =0;
for (i=0; i<GetAnswerCount(inTargetQ);i++){
var idx = i+1;
var text = AnswerText(inTargetQ,idx);
if (dblContainsByText(inSourceQ,text)) {
SetAnswerVisible(inTargetQ,idx,inShow);
}
}
return true;
}
//Filters the topics of a question based on another question
function dblFilterTopicsByAnswersByText (inTargetQ, inShow, inSourceQ)
{
SetTopicVisible(inTargetQ,!inShow);
var i=0;
for (i=0; i<GetTopicCount(inTargetQ); i++){
var idx = i+1;
var text = GetTopicOriginalText(inTargetQ,idx);
if (dblContainsByText(inSourceQ,text)) {
SetTopicVisible(inTargetQ,idx,inShow);
}
}
return true;
}
//function will retrieve a row from a subject store
function dblGetSubjectStoreRow(inStoreName,inIDColumnName,inID)
{
var retVal = null;
try {
var table = GetTableFromStore(inStoreName,"","@@"+inIDColumnName+"='"+inID+"'","");
if (table != null && table.RowCount >0) {
var row = table[0];
retVal = row;
}
}
catch(err)
{
retVal = null;
}
return retVal;
}
/*
This function gets two parameters:
1st parameter is the RegEx expression.
2nd parameter is the text to check.
This function returns ‘true’ if the text is valid according to the RegEx expression, or ‘false’ if the text is not valid according to the RegEx expression.
*/
function dblIsRegEx (pattern,value) {
var pattern = new RegExp(pattern);
return pattern.test(value);
}
function dblDateToSQLDate(inDate)
{
var retVal = "";
retVal = inDate.Year+"-"+inDate.Month+"-"+inDate.Day;
return retVal;
}
//Will order an array
function dblOrderArray(inOrderArray, inDataArray)
{
var retVal = CreateRandomArray(inOrderArray.length);
var i = 0;
for (i = 0; i < inOrderArray.length; i++) {
retVal[i] = inDataArray[inOrderArray[i]-1];
}
return retVal;
}
//Will return a unique respondent ID based on the SID and Device Index
function dblRespondentID ()
{
var retVal = "".concat("D", SID, "-", DeviceIndex);
return retVal;
}
/*!!
Will return the time local to the device if available
Notice that for CAWI, during the very first Survey Init the local time of the Browser is not available thus the server local time is used.
!!*/
function dblGetDeviceTime(){
if(dblHasDeviceTime()){
return Now.AddMinutes(-Now.TimeZoneOffset).AddMinutes(DeviceMgr.ClientTimeZoneOffset)
}else{
return Now;
}
}
/*!!
Return a boolean indicating whether the device local time is available.
!!*/
function dblHasDeviceTime(){
return DeviceMgr.ClientTimeZoneOffset != -1;
}
function OnUploadOfStoppedInterview(){
var retVal = eUploadOfStoppedInterviewStatus.Stopped;
if (Answered(URL))
{
retVal = eUploadOfStoppedInterviewStatus.StoppedWithUpload;
}
return retVal;
}
/*_@_USERCODE_END_@*/
//_@_AddHandler_@{ Begin Add Handlers
//_@_AddHandler_@} End Add Handlers
//_@_HandlerZone_@{
function HandleChapterEnter_3()
{
return (IsPlatform(ePlatform.Web));
}
function HandleChapterEnter_5()
{
return (!IsPlatform(ePlatform.Web));
}
function QuestionEnd_12()
{
SubjectData = Answer(NAME);
}
function QuestionEnd_2()
{
SetAnswer(URL, CAWIInterviewURL);
}
function QuestionEnd_8()
{
if (Answer (Q6)==1)
{
SendSMSMessageSilent(Answer(Q4), "Opening Text\n" + CAWIInterviewURL);
}
else if (Answer (Q6)==2)
{
SendEmail("My Email Connector", "Survey", "cawi@dooblo.com",Answer(Q5),"", "", "Opening Text\n" + CAWIInterviewURL);
}
}
function QuestionStart_9()
{
SetTextFormat(CurrQues,SelectedAnswerText(QRef(9),true));
}
function HandleQuestionValidate_7(ioValid)
{
/*_@_CC_@{1}_@_CC_@*/
ioValid.outMessage = "";
ioValid.outID = -1;
ioValid.retVal = true;
if (1 < 0) {{
}}
if (!IsEMail(Answer(CurrQues))) {
ioValid.retVal = false;
ioValid.outMessage = OnValidationTextRequired(8, 1, "Please type a currect email address");
ioValid.outID = 1;
return;
}
}
function HandleQuestionJump_12(ioJump)
{
/*_@_CC_@{0}_@_CC_@*/
ioJump.retVal = 1;//eJumpQuestionResult.ejqrSubmit
ioJump.outIdx = -2;
if (1 < 0) {
}
}
function HandleQuestionJump_6(ioJump)
{
/*_@_CC_@{1}_@_CC_@*/
ioJump.retVal = 4;//eJumpQuestionResult.ejqrNone
ioJump.outIdx = -2;
if (1 < 0) {
}
if (Answer (Q7)==2) {
ioJump.retVal = 5;//eJumpQuestionResult.ejqrIndex
ioJump.outIdx = 9;
return;
}
}
function HandleQuestionJump_7(ioJump)
{
/*_@_CC_@{1}_@_CC_@*/
ioJump.retVal = 4;//eJumpQuestionResult.ejqrNone
ioJump.outIdx = -2;
if (1 < 0) {
}
if (Answer (Q7)==2) {
ioJump.retVal = 5;//eJumpQuestionResult.ejqrIndex
ioJump.outIdx = 9;
return;
}
}
function HandleQuestionJump_8(ioJump)
{
/*_@_CC_@{1}_@_CC_@*/
ioJump.retVal = 4;//eJumpQuestionResult.ejqrNone
ioJump.outIdx = -2;
if (1 < 0) {
}
if (Answer (CurrQues)==3) {
ioJump.retVal = 5;//eJumpQuestionResult.ejqrIndex
ioJump.outIdx = 12;
return;
}
}
function HandleQuestionJump_9(ioJump)
{
/*_@_CC_@{1}_@_CC_@*/
ioJump.retVal = 4;//eJumpQuestionResult.ejqrNone
ioJump.outIdx = -2;
if (1 < 0) {
}
if (Answer (CurrQues)==1) {
ioJump.retVal = 5;//eJumpQuestionResult.ejqrIndex
ioJump.outIdx = 12;
return;
}
}
function HandleQuestionJump_10(ioJump)
{
/*_@_CC_@{2}_@_CC_@*/
ioJump.retVal = 4;//eJumpQuestionResult.ejqrNone
ioJump.outIdx = -2;
if (1 < 0) {
}
if (Answer (Q6)==1) {
ioJump.retVal = 5;//eJumpQuestionResult.ejqrIndex
ioJump.outIdx = 6;
return;
}
if (Answer (Q6)==2) {
ioJump.retVal = 5;//eJumpQuestionResult.ejqrIndex
ioJump.outIdx = 7;
return;
}
}
function HandleQuestionEnter_9()
{
return (Answer (Q6)==1 || Answer (Q6)==2);
}
function HandleQuestionEnter_10()
{
return (Answer(Q7)==2);
}
//_@_HandlerZone_@}
function JSDBLInitAllScript()
{
}var eJumpQuestionResult = {ejqrNext:0, ejqrSubmit:1,ejqrCancel:2,ejqrFilter:3,ejqrNone:4,ejqrIndex:5,ejqrChapter:6};
var eAttachmentSource = {easDefault:0};
var eAskButtons = {OKCancel:0, YesNoCancel:1, YesNo:2};
var eAskResult = {None:0, OK:1, Yes:2, No:3, Cancel:4};
var eQuotaFilledResult = {Default:0,Filter:1,Cancel:2,Nothing:3};
var eExtraLabel = { MatrixLower:0, MatrixMiddle:1, MatrixUpper:2, MatrixIrrelevant:3, ScaleLower:4, ScaleMiddle:5, ScaleUpper:6, CountersTotal:7,CountersRemaining:8, NumericGridTotal:9, NumericGridRemaining:10 };
var eFontSize = {XSmall:-4,Smaller:-2,Small:-1,Regular:0,Large:2,Largest:8,XLarge:14};
var eULQuestionType = {eqtYesNo: 0,
eqtAmerican: 1,
eqtNumeric: 2,
eqtFreeText: 3,
eqtMultiSelect: 4,
eqtRating: 5,
eqtScale: 6,
eqtMatrix: 7,
eqtMultiTopics: 8,
eqtNoQuestion: 9,
eqtDateTime: 10,
eqtCounters: 11,
eqtStopper: 12,
eqtMassiveMultiSelect: 13,
eqtExpression: 14,
eqtMultiText: 15,
eqtMultiNumeric: 16,
eqtMultimedia: 17,
eqtMultiTopicsSelect: 18,
eqtGPSQuestion: 19,
eqtListSource: 20,
eqtPositionTopicsOnImage: 21,
eqtNumOfTypes: 22};
var eRenderGridAlignment = {Top: 0,
Center: 1,
Bottom: 2};
var eInterviewExtraField = {AttemptsPerCompletedInterview: 0,
AdherenceToMethodology: 1,
CustomData1: 2,
CustomData2: 3,
CustomData3: 4,
CustomData4: 5,
CustomData5: 6,
CustomData6: 7,
CustomDataInt1: 8,
CustomDataInt2: 9,
CustomDataInt3: 10,
CustomDataInt4: 11,
CustomDataInt5: 12,
CustomDataInt6: 13,
InterviewStopComment: 14,
CustomDataPII1: 18,
CustomDataPII2: 19,
CustomDataPII3: 20,
CustomDataPIIInt1: 21,
CustomDataPIIInt2: 22,
CustomDataPIIInt3: 23,
CustomData7: 24,
CustomData8: 25,
CustomData9: 26,
CustomData10: 27,
CustomData11: 28,
CustomData12: 29,
CustomDataInt7: 30,
CustomDataInt8: 31,
CustomDataInt9: 32,
CustomDataInt10: 33,
CustomDataInt11: 34,
CustomDataInt12: 35};
var eSurveyStatus = {New: 0,
EditNotCompleted: 1,
EditCompleted: 2,
EditTextReturn: 3,
EditReturned: 4,
EditObserverInProgress: 5};
var ePageType = {Cancel: 0,
Error: 1,
Filter: 2,
Finish: 3,
NonActive: 4,
AlreadyConducted: 5,
FullQuotaPage: 6};
var eQuotaExceedActionType = {None: 0,
Cancel: 1,
Filter: 2};
var eQuotaExceedType = {None: 0,
ExceedTarget: 1,
ExceedExceed: 2};
var eAttachmentType = {None: 0,
Picture: 1,
Sound: 2,
Video: 3,
Text: 4,
Signature: 5,
Font: 6};
var eUploadOfStoppedInterviewStatus = {Stopped: 0,
StoppedWithUpload: 1,
Completed: 2};
var eDeviceType = {Desktop: 0,
Tablet: 1,
Mobile: 2};
var ePlatform = {None: 0,
Web: 1,
PC: 2,
PDA: 4,
MobileWeb: 8,
SmartPhone: 16,
AllWindows: 31,
Android: 32,
XAndroid: 64,
XIOS: 128,
XUWP: 256,
Xamarin: 448,
AllJSEnabled: 482,
All: 511};
</Source>
</UserLogicContents>False1.32.635.0FalseFalse-101.32.0.0AAEAAAD/////AQAAAAAAAAAMAgAAAEdVc2VyTG9naWNDcmVhdG9yLCBWZXJzaW9uPTEuMC4xLjMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAKVN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuQXNzZW1ibHlEYXRhEAAAAAZtVGFibGUNbVN1cnZleUNvbnN0cw9tU3VydmV5U25pcHBldHMNbUNoYXB0ZXJUYWJsZQ1tTGFzdEJ1Y2tldElEEW1MYXN0TWV0YUJ1Y2tldElED21TdXJ2ZXlJbml0Q29kZRBtU3VydmV5QmxvY2tDb2RlEW1MYXN0TGlzdFNvdXJjZUlEE21MYXN0Q3VzdG9tQWN0aW9uSUQHbUZsYXZvcg5tVXNlR2xvYmFsQ29kZQttVXNlT3JnQ29kZQ5tU3RyaWN0SlNDaGVjaxdtTGFzdEF0dGFjaG1lbnRTb3VyY2VJRA5tU3VydmV5TmF2Q29kZQMDAwMAAAEBAAAEAAAAAAEeU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZVtdHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUeU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZVtdHlN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGVbXQgICAgkU3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5lRmxhdm9yAgAAAAEBAQgCAAAACQMAAAAJBAAAAAkFAAAACQYAAAAdAAAAAwAAAAYHAAAAigFpZihJc1BsYXRmb3JtKGVQbGF0Zm9ybS5XZWIpKXsNCglpZihWYXJzWyJFbnRlcmVkQ0FXSSJdICE9IHRydWUpew0KCQlWYXJzWyJFbnRlcmVkQ0FXSSJdID0gdHJ1ZTsNCgkJRXhlY3V0aW9uTWdyLkdvdG9RdWVzdGlvbihRMTApOw0KCX0NCn0GCAAAAM4BZnVuY3Rpb24gT25VcGxvYWRPZlN0b3BwZWRJbnRlcnZpZXcoKXsNCgl2YXIgcmV0VmFsID0gZVVwbG9hZE9mU3RvcHBlZEludGVydmlld1N0YXR1cy5TdG9wcGVkOw0KCWlmIChBbnN3ZXJlZChVUkwpKQ0KCXsNCgkJcmV0VmFsID0gZVVwbG9hZE9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jS2V5VG9rZW49bnVsbAVGAAAALlN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuUXVlc3Rpb25Db25kaXRpb24GAAAAGVF1ZXN0aW9uSW5mbyttUXVlc3Rpb25JZHgWUXVlc3Rpb25JbmZvK21IYXNFcnJvciJRdWVzdGlvbkluZm8rbVF1ZXN0aW9uRGVwZW5kZW5jaWVzIVF1ZXN0aW9uSW5mbyttQ2hhcHRlckRlcGVuZGVuY2llcwljb25kaXRpb24IYmVoYXZpb3IAAAMDBAQIARxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0HFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QmU3VydmV5VG9Hby5Vc2VyTG9naWMuQ3JlYXRvci5Db25kaXRpb24CAAAAL1N1cnZleVRvR28uVXNlckxvZ2ljLkludGVyZmFjZXMuZVVMU2tpcEJlaGF2aW9yVQAAAAIAAAAKAAAAAAlWAAAACVcAAAAJWAAAAAWn////L1N1cnZleVRvR28uVXNlckxvZ2ljLkludGVyZmFjZXMuZVVMU2tpcEJlaGF2aW9yAQAAAAd2YWx1ZV9fAAhVAAAAAAAAAAFHAAAARgAAAAkAAAAACVoAAAAJWwAAAAlcAAAAAaP///+n////AAAAAAVIAAAALVN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuUXVlc3Rpb25KdW1wSW5mbwsAAAAZUXVlc3Rpb25JbmZvK21RdWVzdGlvbklkeBZRdWVzdGlvbkluZm8rbUhhc0Vycm9yIlF1ZXN0aW9uSW5mbyttUXVlc3Rpb25EZXBlbmRlbmNpZXMhUXVlc3Rpb25JbmZvK21DaGFwdGVyRGVwZW5kZW5jaWVzCGp1bXBJbmZvCGJlaGF2aW9yFG1RdWVzdGlvbkp1bXBPcHRpb25zE21DaGFwdGVySnVtcE9wdGlvbnMRbU90aGVySnVtcE9wdGlvbnMJaXNHZW5lcmFsB2dlbkp1bXAAAAMDBAQDAwMAAggBHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdCVTdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9yLkp1bXBJbmZvAgAAAC9TdXJ2ZXlUb0dvLlVzZXJMb2dpYy5JbnRlcmZhY2VzLmVVTFNraXBCZWhhdmlvclUAAAAcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdBxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0HFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QBAgAAAAoAAAAACV4AAAAJXwAAAAlgAAAAAZ////+n////AAAAAAliAAAACWMAAAAJZAAAAAAKAUkAAABIAAAACQAAAAAJZQAAAAlmAAAACWcAAAABmP///6f///8AAAAACWkAAAAJagAAAAlrAAAAAAoBSgAAAEgAAAAIAAAAAAlsAAAACW0AAAAJbgAAAAGR////p////wAAAAAJcAAAAAlxAAAACXIAAAAACgFLAAAASAAAAAcAAAAACXMAAAAJdAAAAAl1AAAAAYr///+n////AAAAAAl3AAAACXgAAAAJeQAAAAAKAUwAAABIAAAABgAAAAAJegAAAAl7AAAACXwAAAABg////6f///8AAAAACX4AAAAJfwAAAAmAAAAAAAoBTQAAAEgAAAAMAAAAAAmBAAAACYIAAAAJgwAAAAF8////p////wAAAAAJhQAAAAmGAAAACYcAAAAACgVOAAAAMVN1cnZleVRvR28uVXNlckxvZ2ljLkNyZWF0b3IuUXVlc3Rpb25WYWxpZGF0ZUluZm8FAAAAGVF1ZXN0aW9uSW5mbyttUXVlc3Rpb25JZHgWUXVlc3Rpb25JbmZvK21IYXNFcnJvciJRdWVzdGlvbkluZm8rbVF1ZXN0aW9uRGVwZW5kZW5jaWVzIVF1ZXN0aW9uSW5mbyttQ2hhcHRlckRlcGVuZGVuY2llcwx2YWxpZGF0ZUluZm8AAAMDBAgBHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdClTdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9yLlZhbGlkYXRlSW5mbwIAAAACAAAABwAAAAAJiAAAAAmJAAAACYoAAAAFTwAAACtTdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9yLlF1ZXN0aW9uQWN0aW9uBQAAABlRdWVzdGlvbkluZm8rbVF1ZXN0aW9uSWR4FlF1ZXN0aW9uSW5mbyttSGFzRXJyb3IiUXVlc3Rpb25JbmZvK21RdWVzdGlvbkRlcGVuZGVuY2llcyFRdWVzdGlvbkluZm8rbUNoYXB0ZXJEZXBlbmRlbmNpZXMGQWN0aW9uAAADAwEIARxTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0HFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QCAAAACQAAAAAJiwAAAAmMAAAABo0AAAA5U2V0VGV4dEZvcm1hdChDdXJyUXVlcyxTZWxlY3RlZEFuc3dlclRleHQoUVJlZig5KSx0cnVlKSk7AVAAAABPAAAACAAAAAAJjgAAAAmPAAAABpAAAAD4AWlmIChBbnN3ZXIgKFE2KT09MSkNCnsNClNlbmRTTVNNZXNzYWdlU2lsZW50KEFuc3dlcihRNCksICJPcGVuaW5nIFRleHRcbiIgKyBDQVdJSW50ZXJ2aWV3VVJMKTsNCn0NCmVsc2UgaWYgKEFuc3dlciAoUTYpPT0yKSANCnsNClNlbmRFbWFpbCgiTXkgRW1haWwgQ29ubmVjdG9yIiwgIlN1cnZleSIsICJjYXdpQGRvb2Jsby5jb20iLEFuc3dlcihRNSksIiIsICIiLCAiT3BlbmluZyBUZXh0XG4iICsgQ0FXSUludGVydmlld1VSTCk7DQp9AVEAAABPAAAAAgAAAAAJkQAAAAmSAAAABpMAAAAhU2V0QW5zd2VyKFVSTCwgQ0FXSUludGVydmlld1VSTCk7AVIAAABPAAAADAAAAAAJlAAAAAmVAAAABpYAAAAdU3ViamVjdERhdGEgPSBBbnN3ZXIoTkFNRSk7DQoFUwAAAC1TdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9yLkNoYXB0ZXJDb25kaXRpb24FAAAAFkNoYXB0ZXJJbmZvK21DaGFwdGVySUQVQ2hhcHRlckluZm8rbUhhc0Vycm9yIUNoYXB0ZXJJbmZvK21RdWVzdGlvbkRlcGVuZGVuY2llcyBDaGFwdGVySW5mbyttQ2hhcHRlckRlcGVuZGVuY2llcwljb25kaXRpb24AAAMDBAgBHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QcU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdCZTdXJ2ZXlUb0dvLlVzZXJMb2dpYy5DcmVhdG9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-1382726297721-111908310-1-165792-1-1-10-1054820992118001632372256538704{"eColumns_FlagClockChanged":"true","eColumns_FlagSingleChoice":"true","eColumns_FlagQuestionTakingTooLong":"true","eColumns_FlagGPSTimeDifferenceDate":"true","eColumns_FlagGPSTimeDifferenceStale":"true"}1H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx659o8M/R459Y501LTc+eHu3uPb7r/fn49bq+zK/PZkefTrP7ewef7m+f7+x+ur3/8P5k++F0trf96V42OTi4fz9/OLn3+K5t/vhs9u5o5/Fd/Hj8Jn/XHr3IFvmjx3f598evsuVF/kWxPNp9fNf+rp9m747um0/pd/n0dZuvbGP+4/FxWVZXz8oqa4+eZWWTP77rfWLH9OZ6lR/dc4Pivx+/Ki7m7XFZXCzNu94nj5/mzbQuVmhu0PY/evy8usprHgj99viu+/PxV6uV/vptgvf4rvv78em7abme5TPTof378et5VbdE7F+0/v13QH/zt4zwxbosgwHyB4+/KJqGpvMns3KdH20TZYIPHv9kVhfZpMyB/tGL4y9OH98NPnr8++TNCTMEqOr+ePyi0t8IEfv7Y/qZHy+b1/kqq7O2vDYI9T7HbM2qhRum/Vu/odZErSb82nyobT6vq/WKB+X/TdNS5i1B2sF0yK9E1bbOQODd9K73157960lVlbtHb+o1k9x+4L7ccxNiP5Fvz5btLmPh/rJf7AEL98fjs7omlC6zZXtSlcAACHyRFctvtySK9PtZEzQxnXY/pjlvX1VX9GvliBR89vh0Sb0up/mrdZnLMIvW/P6d9WJ1tjyvGG37BzVZEUth8i0l7Acsnd9+88VzvE+sd/V6mhGTrBeNtg0/I+a/KKbPyuyiAQm8vx6/ypezvCZ+kb/3iYM6Hwn5IIqGRE+K5dOszY6Ojz/77PFd89fjZ3Weo8nzYlG0PJjwk8fULH9TLPJnVb0gcQdLhJ8Qt5xn67J9/bZYPcnn2WVR1cI5/Y8f08jeVKti2pwtX2YXOUSi+9HjL9t5Xr9e5VOSIxahn/j9d3//14/v9j5/fDLPVm1ekwSTHnN/kBAtFvmSh32ybtpqYXTS82L59ujwkBr3P3583LbZdI4XG7z53RyKCiPR3x6/nlY1CzW+fl407etqXU/tX0+LZlVm1+ZP1g/4gwb45Tnx1HqxbHTA7u/HPPaXOcFZthg+9df9iFCZnJQF/fWaVSOAhvPNQtL96LEI+8tsmZffliFgfvufPmamI8Lha/O7N0D9JviAEABjvylakQf584wweMfWw/vzMQ3l3LChfMESJnrH+/vxqzfPTDv87GLe/UxoxwjL9+7PDn3u9elzjxhXJswhE3xAiuR42haXRpLtn49fEB5CRSIEAQ7+5m8ZE/el+fPx2YLmk4dRVytihk8fPHiwd4/Et/PF47Nl09brKZiTmdH/2+Hb/1Tpa7WG/6cqp5dVU7B13THayX6iLZ7ny4t27r7Xvzs03e/TdN9XWntH+7sP9+/tBbprL8BQ2db7+/FXz63c6K+k9tHM+8t88zSfet/gL0+GA9aNfCzM0wy8MPilCtXQe8PfSn/fzjOiFw05z5Sne59qD2SHXq+yae6BtR9pk+73+iWZ8rcsBa/bLBC1yOeu8elyFmlqPyU3aDYrcyOeThdYrVycX3/V5L9Xfm2t6eZGAzDwnZj01RCRB756DA9g46xubMCvb57dzS0Y5ROSpHwT4oMNOuJ1/2hvZ/+gJ2L3MWUt/YVJNKrg4N7Bwac7B5i3zlc0bctiQRaW7PWXS2PvIDXxL8grJaNeFj/IZ6ySvlvMRBNEP++2Vr3cb24U9lPqbYlYiYz9Mq9Nt2rQMe2uxVdfnT1lS5DVF3nLYL6si4uCse9/+PiE2HU5y2qOO6hJ8Pdj6NW8ZtI3r1uQE7CP1y153osVfNznFZG4KMmFMFN8Tr/DmN2iFfwt6o3sc54v5Rux8CfVeimSvrlFAIB5dNP7vQYd5vm0r5s/hREhVJdZKTbmF3+UqxPy+9PgJtWTbPqWmeajRx/9+M7OM34++iWwMv5rocf4hUxH7zOm7PHsEu5zn/eGv3z8ul3Pioox3kU0Gfyt3pwM7CXhS9MPv5v1BfmaBGtWZCfESogW4HuA0aNfeIaKnQP/T+r1J/rx+jcYru/64frxRf7/vWCdkf5hheo7uz8Lofrx5z+K1H8Uqf+QI/V7+/9/j9T3fhSp3xCpf3r//r1P/18UrXPy6EfR+ntH6z+K1n8Urbc/itZ/FK3/KFr/UbT+o2j9/13R+je5uL7nR+uf82jYu2lZH/8wA/bdrx+wG7x/aDH7z8by+uenL56evvpR2P6jsP2HHLb//36B/d6Pwvb/Dy2w3/v5FLLv/yhk/1HI/qOQ/Uch+49C9h+F7D8K2f9/G7Lvf4Mh+z0/ZP/uPGvTWZVeV+u0nZMnmmaTat3S73k6rYhE5PBV5/iqSVd1NSN7/3vcHOD/vy3A/3qj/KGlA/Z/FtIBP7H7o1TAj1IBP+RUwP/vV/D3f5QK+P9QKoDZ8edLKuDBj1IBP0oF/CgV8KNUwI9SAT9KBfwoFfD/21TA/W8wFbAfpAKKsuQImSLipqCBpW2VTtbXXyv4/39T8H/Lcf3Qwv37Pxvh/t6Pwv0fhfubw/1BSfiF2WJ1uJw0q8NIno/f/FGa4L3SBPd/lCb4/1CaALbq502a4P4PJU3wozTBj9IEP0oT/ChN8KM0wY/SBD9KE/xcpAk+/QbTBPf9NMHZEiFEndKULgn4KL2aV+kVIovzYjkLguo0a3iJfVE19HtLHj57JL9HKr6RJgZAf9Hh8rt+SomDT7/hJML+108ifDOj/qGlGD792Ugx3PtRiuFHKYbNKQa8/6NUwfukCj79Uarg/0OpAliknzepgk9/lCrYkCo42N/99Eepgh+lCn6UKvhRqqD9UargR6mC/8+mCnZ3v8FcwafIFbw7klzBy3m1zNPlejHJ60e9oH+HtXE36N/dsZ/fMuwXJ2Yw6r/39aP+Dv4/rPAdE/LNh+/7PwrffxS+/3DD990HPWWt9Hvv+H23q4v/XxK/P/hR/P7/ofj9wc+n+H1HQvQfxe/R+P1HS/0/it9/FL//KH7/Ufz+/9/4vec0/v80gH/wDQbwD/wA/nSRFWV6PJvVedP0I3gTkocR/P33jN/9uPYbDuC7+P/QIvgHPxsR/P0fRfA/iuB/yBF8T1sr+d47gMdg/t8YwB/8KID//1AAD0/yRwH8/8sD+B8F8D8K4H8UwP8ogP9RAP+jAP7DAvifJ/H7zjcYvx/48fvvU63TabZMGxpWSpowPTn+7llakk+aLqurUVrVaZNd5vwVf0qhWnpZ5Fdp0aYlOeP1+DdOfuPku/NiOk8rjpvTWZVeE9hVnZ/n9e8xkBP42c4J7H79nMA3QJM0NRQZj8c/xKzCzs9GVuHTH2UVfpRV2JxV+CZk5heW7eGk/oUX7aH77Ua9wp2/Z0Jj99ONGY17+/9/z2g8/FFG4/9DGY2H/y/MaOzu7PWk5JtKatz7WU9qHLFXCe2T149SaKzqnBTWy7OUTFELp9NrG7zpRtb/1E8udHILRovaZMcHpz92H34qQdePciBhRz/KgfwoB/KjHMiPciA/yoH8vzcH8rVyILBj31gO5KGfA/nFO78kXeRNQ7yczrMmndAEI5BpKbXxbfobMUudN6uKppPc4Dqf5uS1SJij7/0eaZr+fy/RMTzw9L3G/cNKb4AFvvn0xoMfpTd+lN64Ib0xLCkuV3FbkfmF2WJ1uJw0q0P3myqPr5PNCHRnL5mx9//3XMbuzo+SGf8fSmbsMjI/j7IZe5Kw+NnNZlA29ZrSr00+cgnWabZcVi1pKkqf5kvSQZP8nHg0nVbL86JewAEviJuhoiS9ioxss56QaCOGYUCFyZP8fyIn0uPz/R+lQ36UDvlROuT//emQ+z9Kh/x8S4f8KB0SfPH+6ZC9bzAdAq/M5UNeljm5EuQZ8PpsGNL8J3/Qn92ks7zNirIZscuwqqtpjhCnQrNcl38bhv9zlBJ5+PVTIt/k2H9oaZG9aFpE3NKvmxU5+FFW5EdZkc1ZEbz/o1zF++Qqdn+UqyiL/P8zuQrok/+35Sp6BOonKihr8OnDT3e/Xr5CUxI/i/kKVm4/yh/8KH/wo/zBj/IH30z+YOdH+YMf5Q9+lD94n/zB7qffZP5g188ffPXqOS9B/BxF//e+fvTvMP9hxe6Yhkjs7o/x/YN3GsaPovcfRe/fdPQuy6QbAvh7vVVUpeD/fyL4vR9F8GUBN+//GxE8p5T+vxfB/yh0/1Ho/qPQ/Ueh+49C9x+F7v+/C90ldP9R6P61Q/c9L8L98NB9zw/dScmm1Xl6cvzyLC1AbCyD/8YJ+XzTt2m1TD+CD/ER1rub9YQIzOvdYeufo6j/4deP+qODTt9vzD+sfAHm/htf63/4o2zBj7IFm7MFcSH5hWV7OKl/4UV7eLO0/MJssTpcTprVYUdVMPj3TEUEavLnYx7i3o/yEP9fykPc+1Ee4kd5iB/lIX6Uh/hRHuJHeYgf5SGWIumbWwQAmEc3vd9r0GGeT/u6+Ud5iA/LQzz4JtMQ9/w0xDOKv2cZab3sohqlV3nawHlFJLGqqxmZd8QX16Qm0jmFj+PfOHlZ5lmTpxkzETc8rxAMg6l/keLYPPr/XmriPQmRbqTDeDz+4SUqdh78LCQqdnd+lKn4UabihkzFe8oMchgrpDBup0PQ/C63/1H24utlLyh7sX9T9uLej7IX/y/KXjBD/nzJXuz9KHvxo+zFj7IXP8pe/Ch78bOZvfhR9mJjgx9lL362sxcH32T2Yt/PXjAHpWtEsX7YQbHIPGvTGQcf6UVO2b6sLK+pCbmraTap1m1atL9H+nOUpdj9+lmKDx7wDy0pcRBNSvik+TpZid0fZSV+lJXYnJXA+z9KErxE+LvLIXPw0eNeLoCSBPd/lCT4/1KSAPbo502S4MGPkgQ/ShL8KEnwoyTBj5IE75skqE23atEx7U8Jn2UDhfbVV2dP2RL08gE7P0oS/ChJ8MNOEuze+yazBPf9LMF3i7LkwHhKbF/MsORYpZM1h8eNCaF/j//vJQNuO64fVsyPKfxZiPn3fhTz/yjm3xzzD4rCL8wWq8PlpFkdRmSd3/xRruD9cgWf/ihX8P+lXMGnP59yBfd/lCv4Ua7gR7mCH+UKfpQr8HIF8S+8TMDZcpn/KFfwo1zB/3dyBfvfZK7gUz9XcLZEGFGnNKlLgo6F9Sq9QnRxXixnQWSdZg2vwS+qhn5vyctnn+T3SG+ZSfjUfPoNZRI8orxvJuGbGfUPLc+w/7OSZ7j3ozzDj/IMm/MMeP//M/mC/3fkCx78KF/w/6V8wYOfT/mCT3+UL9iQLzjYh2v0o3yB6e9H+YIf5Qt+lC/4Ub7gR/mC/9fnC+if5uj/Adv3m1j4EgEAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+MXDf979Ph42Vzl9dnTo53Hd+3vj39inTctgaDf9x7f9f56fDZ7h6b48fhN/q49+iIr88d3+dfHr+dV3VKrbPn77+zs0f93H981nzmY9KoPFJB+MquLbFLmL7JFfnT8+39++uLp6avfn94Ovnh8wgM5os/1t8ev1/Vlfk3gP51m9/cOPt3fPt/Z/XR7/+H9yfbD6Wxv+9O9bHJwcP9+/nByj5AxzR8/zcu8zWcYi/n18XfWi9XZ8rw62qYe7B+PT9+1dYYB7qZ39a8nVVXuHj3LyobG7n0i354t210Adn8o5l8tT+b59K102/1I25g/7SDt90Dh22++eA4snpXZRQMo8svjL9t5Xr9e5VMiGNPqtUfE3pfU1WKRL1tA+m5eXMxbgNLfHr+eVnWOD+SXx2fN6ylNshmu+fPxq3xFUwusAOdVflnkV+4vfHe2nOXvmJr+349f5vV52PCkKqvaayh/P35aNKsyu3bfBh8QYsfTtrjMj97Ua0ZM/3z8ZV1cFMusZERptvFq97PHL+u8yYkdZn6r3oePzxbZRQ5sX9bVqjna/fTBgwd794iBO19Iw7MZBvXV85/MynXu/UpcAIp6f5lvnuZT7xv89fhVtpxVi8/rar0Smnh/K8Hs/Pt/Er1oViH6zVdfnT1F98Atr9sib46b121N7MSfZjXNvhV3Hnj4keoFhrvndIP+TawB3REqkN3bK5BdX4E8yxebVMjeB6mQvQEVsvcjFXJ7FbL3IxXyIxXyw1Ahe7dXIXu+CiGSn+d1uqzatK3SWdFMy6oZVin3Pkil3BtQKfd+pFJur1Lu/Uil/Eil/DBUyr3bq5R7EZVC6qTJy/PtWd5M62IyrFP2P0in7A/olP0f6RRhot1b6JT9H+mUH+mUD9Qp+7fRKVbxdHTK/g2pktN307wsqfOoFtnfkC+5t1mL/MTuj3IlH+SVCAF/pD1+pD0+SHvcyiPZvb322PW1x0/m9XV6UVWzQe0xlCq5WXv8KE3ygdrj/wUpkh9pj58P2mMoRRLRHkGK5PNNimMoIXKz4vhRMuQDFcePEiE/Uhw/FMUxlAiJKI4gEfJFPivWi0HVMZT3uFl1/Cjn8YGqo5vv+JHq+JHq+FlRHTYpcrPq2PdVxwtaj2mqzTHL/a+tP+4P6I/7P9Ift9Mf93/kevxIf/ww9Mf92+uP+139sVF5fPq1lcenA8rj0x8pj9spj09/pDx+pDx+GMrj09srj0995fEkG9YbD7623ngwoDce/Ehv3E5vPPiR3viR3vhh6A3bqKM37vf1xo6vN87Sq6Is01l+XiyLNi+v08n6Oi3ia7b3N6zZ+goqpkz2vtk1259/ymTvR2u2P1ImPxxlsnt7ZbIbUSarupqQ6N+oSoYWcG9WJT9awP1AVfKjBdwfqZIfiioZWsCNqJJgAfeL7HqSp9d5M0oX/OuyGlYkQwu6NyuSHy3ofqAi+dGC7o8UyQ9FkQwt6EYUSbCge+bckatq+Z/8QX92e5NbMrTGe7M2+dEa7wdqkx+t8f5Im9xWm3yQNhla441ok2CN98zPlNxSnwyt+d6sT3605vuB+uRHa74/0ic/FH1iG3X0yac3pF9P5kU5o87TqPb4dEO+1ddUMe1x70f51g/THvd+lG/9f6/2+P+X9ti9vfbY9bXHmzxfkt6tm0HtMZRivVl7/CjF+oHa40cp1h/5Hj8U7TGUYo1ojyDF+vtUa8Iqm63LdliBDKVWb1YgP0qtfqAC+VFq9UcK5IeiQIZSqxEFEqRWjzerjqE86s2q40d51A9UHT/Ko/5IdfxQVMdQHjWiOoI86ut8WVQb4pahnOnNuuNHOdMP1B0/ypn+SHf8UHTH/dvrjvu+7nhRLfO0Ok+JSdNsUl3mg1rk06+tRT4d0CKf/kiLCOvs36BFPv2RFvmRFvlALWKdi01axKqajhbZ3emrkZ3ABfnidUxx7O5sWHQ5uEFxfPqjRZcPcz8+vd2iC7j6R4rjR4rjQ9yP3fdQHLu+4jhdZEU5qDqGVlxuVh0/WnH5QNXxoxWXH6mOH4rqGFpxiamOYMnlJ4lv0rJYvk3LrM3rQSUytOpysxL50arLByqRH626/EiJ/FCUiG3UUSJ7ESWyE6zb5tG86d6mwOXhDYrjwY8Clw9THA9+FLj8SHH8cBTH7nsojt0wcTqoN4ailpv1xo+ilg/UGz+KWn6kN34oemPI4Xjw9fyNnQcb/I3dezcoDgpzfuRxfJDmEAr+SHX8SHX87KuOIZcjojpu4XGw5hjyOG6jOX7kc3yo5viR0/EjzfFD0RxDTsfBDU7H6btpXpbUeVSBHGxyPfZvcj12f+R6fKAC2f2R6/EjBfLDUSBDrsfBDa7HT+b1dXpRVbNBBTLogdxCgfzIA/lQBfIjD+RHCuSHokCGFmsjHkiwVvv5Jt0xtEB7G93xoyXaD9UdP1qj/ZHu+KHojnu31x33fN3xRT4r1otB7bH/Adpjf0B77P9Ie9xSe+z/SHv8SHv8MLTH/u21x36YNW3TptocvNz/ABVyf0CF3P+RCrmlCrn/IxXyc6lCfv6okPu3VyH3uypko/749AP0x6cD+uPTH+mPW+qPT3+kP36kP34Y+uPT2+uPT3398SQbVh0PPkB1PBhQHQ9+pDpuqToe/Eh1/Eh1/DBUh23UUR279/q6Y8fXHWfpVVGW6Sw/L5ZFm5fX6WR9nRbRldzde5tWcu/fpFD2frSS+4EKZe9HK7k/Uig/HIWy+x4KZTeiUFZ1NSE5v1GdDK7r3kKd/Ghd90PVyQ9tXfdH6uTntzoZWteNqZNgYfeL7HqSp9d5M0oX/OuyGlYmgwu9t1AmP1ro/VBl8qOF3h8pkx+KMhla6I0pk2Cl98y5JVfV8j/5g/7s9ib3ZHDx9xYa5UeLv/jgQzTKjxZ/f6RRfigaZWjxN6ZRgtXfMz9zckudMrgafAud8qPV4A/VKT9aDf6RTvmh6BTbqKtT/JUX1Sk7vk45mRfljHpPoxpkf1MO9tNNGuQnSPvs/igD+0H6496PMrA/0h8frD92d/asx/G1krARFbLrq5A3eb4k6tXNoAoZzLveqEJ+lHX9UBXyo6zrj1TID0uFDCZeIyokSLz+PtWaMMtm67Id1iKDCdcbtciP0q0fqkV+lG79kRb5YWmRwYxrRIsEGdfjzfpjML16o/74UXL1Q/XHj5KrP9IfP/v6Q/Or76E/gvzq63xZVBvCmMFc6o0K5EeZ1A9VID/KpP5IgfywFMj991Ag930F8qJa5ml1nhKjptmkuswHVcmnX1uVfDqgSj79kSoR9tm/SZV8+iNV8iNV8uGq5CCuSvBvc/T/AIpe7iGDyAAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6zdVk949+n8AZjUmjDEAAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx65MG/xw9Pnt6tPP4Lv37+EW2yI++yIplejLPVm1eP77LHz1+va4v82tq8uk0u7938On+9vnO7qfb+w/vT7YfTmd725/uZZODg/v384eTe4/v2uaPn+Zl3uYzdGB+ffwyq/NlS99u7z6+a/94/Ly6KKbPyuyiQWvvr8ev8uUsr+WP+4/v+n9SB820LlYtDfXozbxoUvpfO8/TuqradCqjSKvzNCtL/vwXrfMGjZu7zXqyrQ3orSV/2zDio984+Y2T36dap9NsmS4JTp0vqsucWhBwfWWUZssZQ3UQLbTFumnTSZ6ugWjw2tgHvaApOb9Oi7ZJV3W1yuu2yJt0a0kkH6UzN7BR2ubv2jRvp+M7oKMb8eM3+OLu0ePTd22dPamqcvfoWVY2+eO73ifu272jN/Xa/3JPvzxbtrs8H+4v+8Ue5sP98fhs9o6b4icj8O03XzwHEifVYkGTiV+/mxcX8xYv6m+PX0+rOgc34etX+aqq25OszS+q+rrDcp0vtfGboi353S+yd2fULmMCAI/gg8fPi6Z9Xa3raX4246+DDxjfl9kyL78teKFF97PHr948M4R9RdNcLT6vq/WK2/p/Pz5rjqdtcZkrVe2fAY7Nm+r0HUbQQ9Z98/ilnf/j5nVbk6SicycEe6FM0Czcheiq+N73xJcEqk130+305Pjl2c+u/O58o+KLAf9csfPON8nNnRn4ETu/Lzvf67LzHhPzuz9i51uy8zeqnDsz8CN2vjU734WL9f8A0zF1cpEJAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6ycvmvTu0f8DVNIIpTEAAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+M3TXr36P8B2S/MCTEAAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx69cnXzbp3aP/B1t6G+cyAAAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx65dNevfo/wF1B76WMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxq8+b9O7R/wNCnyKPMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxyesmvXv0/wA+f8jSMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx69cnTXr36P8B28cSlTEAAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxTxw36d2j/wdMGPaGMAAAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6+cN/qH/r+vL/Prs6dGn0+z+3sGn+9vnO7ufbu8/vD/Zfjid7W1/updNDg7u388fTu49vmubP36eLS/o5/bu47v6K390Us1y+yH/wR+/yFv8kd49evwiW+RHT/PzbF22j+/yX4/PFtkFf/mszC6ao53Hd+WXx2fNqzfPj55lZZM/vit/0GfH07a4zI/e1Gv+VP98/LRYABzgnKybtlo8q5bt06zN8MldjPYuxv3/ABQKzqcmAQAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6zd5w//SP+v6Mr8+e3r06TS7v3fw6f72+c7up9v7D+9Pth9OZ3vbn+5lk4OD+/fzh5N7j+/a5o+fZ8sL+rm9+/iu/vr4rM0X9HOXPtJfH7/M6nzZ6l9oG3zAb7y5XuVH9+QV/p1wmvAvew/Rofz++E3+rk3vHj1+VmYXzdHO47vyy+Oz5njaFpf50Zt6nRMU8ye9yuP7f/sg7+38v3iQe9/QIP9fPZPf1CD/Xz2T39AY/189kd/QGP9fPY8PvqFB/r96Ir+pQX4TM4l/m6P/B+Xt+sNcBwAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6y+eNPwv/bOuL/Prs6dHn06z+3sHn+5vn+/sfrq9//D+ZPvhdLa3/eleNjk4uH8/fzi59/iubf74yXr6Nm/pt53Hd+3v+umLbJGnd48eP83Ps3XZ/sS6ajO0C/5+/OZ6leNT/vn4J9Z50xLWBGV79/Fd78/HL7M6X7b6hf3j8VfLk3lO3c2Ol80VDfkJ4YVenxVlm9f5THBpXrc1jR5fvKlWxVTBmN8fn1HbzOvY/5vGyzT6Zgi1FyfU0Yv8Kn09z/PWfM+f3oZ4996HeDs/J7S7y7z2/wCpaONomwIAAA==H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx6y+efN6kd4/+H6wF1isyAAAAH4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jxd182+If+n0/Olk2bLaf52dOjT/f2d/ce3w0/fOw3uHf/4b2Dx3f9r5+ty/Krujyat+2qeXT37tXV1XhWVZOymmZXxXhaLe5OyyJftncf3zVtH5++y6frNn9WZhfN0f0HDx/fDT55/CK7lN92P3181/7x+GXVFC2N7FlVL7L2aOfx3c4nj58Vy6KZv8wu8vQudVPXVW3+eFJnyxlhvPv4rvn18YtqeTxti8vcNHpZVxd13jRPsunbk6qs6qPtvYOH+wcP71Ffve9sc+o+1+a7nz548OnDT3dde/fl459Y5w3Qbc6W6JFaP77b/eyxDHbv/qc79K2O/Nt5uXpeLN8CR/z+5YpfAQn8P2n8ZZvbIZ9gkkrz19P8PFuX7bNq2R79ZF7PsmV2uLtz+CwrmzzyL43Yf+PxcVnn2ez6pFrO1tM2nxmwL/J37ZN2ebJu2mohNMwvgw+eVss8+OB1W62CD77dLspw6vBJiL608YeHT4IZ9L8I5h4fDOFv6P8edAleeXy8bK7y+j1e9154/KZaFdP3eNe1f3y6yIqSmOyymOU1OCH8gCXzJ9ZVmwUU7H4ok0D8uV4QA/3ij3L99fd/Xl1Ux2Vxsfzo0Ud7H/2Sx3fDliTDq6J2ZGSahx9hmv2v/b/fzPNF/iVpqpqQ1W5pvupq9fu/zqc0R1l9TR1v39vZ+3T/wcOPRn6Ls+UyryGGF3W1Xs7QbhctQBdu8LIuFgTgybptSSzwMbU5rousDJrZnm5q6E+438DQ6kUFar3Km+IHOX1/jtkCycJRyqBFBZlfH58cvzwLmN77+y509F1o6/8HODcUdNwFAAA=H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iv7Hv/cffPx7vFuU6WVeN0W1/Oyj3fHOR2m+nFazYnnx2Ufr9nz74KPf4+jx2csG/9D/l02bLaf52dOjT+/df3jv4PFd76PHr9f1ZX5Nvx3s7N+7P9s/394/uP9we//hbr59cDB7sH2+P5tN7z3c+fTh/fzxXdv88bMyu2iO9nYe35XfHn+RvfuJddVmR9u7j+/aPx5/USzfFIuc/3qVT+f59O0RvRT7GCDw4au8XdfL1+vJT+fTlhvHPqdxvOR/mqP/B8E5WFcXAQAA