<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">const enums = {
    BANNER_POS: {
        Top: 'top',
        Bottom: 'bottom',
        Left: 'left',
        Right: 'right',
        Center: 'center',
        Fullscreen: 'fullscreen'
    },
    MESSAGES : {
        NotInitPurchases: 'Purchases uninitialized!',
        UserNotLogged: 'The user is not logged in',
        LeaderboardsNotInit: 'Leaderboards not initialized'
    }
}

var sdk = null;
var player = null;
var payments = null;
var locStorage = null;
var leaderboards = null;

function StartPage()
{
    console.log('Loading page.');
    for(var key in enums.BANNER_POS)
    {
        try 
        {
            document.getElementById(enums.BANNER_POS[key]).style.display='none';
        }
        catch (error) { }
    }
}

// Init Yandex SKD
YaGames.init({
    adv: {
        onAdvClose: wasShown =&gt; {
            console.info('adv closed!');
        }
    }
})
.then(ysdk =&gt; {
    sdk = ysdk;
    YandexShowFullscrenAd();
});

// User Authorization
function YandexAuthorizationUser(request)
{
    sdk.getPlayer({ scopes: JSON.parse(request.jsonData.toLowerCase()) }).then(_player =&gt; 
    {
        player = _player;
        SendSuccessMessage(request);
    }).catch(err =&gt; 
    {
        player = null;
        SendFailedMessage(request, JSON.stringify(err));
    });
}

function YandexShowAuthorizationDialog(request)
{
    sdk.auth.openAuthDialog().then(() =&gt; 
    {
        SendSuccessMessage(request);
    }).catch(() =&gt; 
    {
        SendFailedMessage(request, 'Player is not authorized.');
    });
}

// Purchases
function YandexInitializePurchases(request)
{
    sdk.getPayments({ signed: request.jsonData }).then(_payments =&gt;
    {
        payments = _payments;
        SendSuccessMessage(request);
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    });
}

function YandexPurchase(request)
{
    if(payments == null)
    {
        SendFailedMessage(request, enums.MESSAGES.NotInitPurchases);
        return;
    }
    payments.purchase({ id: request.jsonData }).then(purchase =&gt; 
    {
        SendSuccessMessage(request);
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    })
}

function YandexGetPurchasedProducts(request)
{
    if(payments == null)
    {
        SendFailedMessage(request, enums.MESSAGES.NotInitPurchases);
        return;
    }
    payments.getPurchases().then(purchases =&gt;
    {
        SendSuccessMessage(request,  JSON.stringify({ products: purchases }));
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    })
}

function YandexGetPurchaseCatalog(request)
{
    if(payments == null)
    {
        SendFailedMessage(request, enums.MESSAGES.NotInitPurchases);
        return;
    }
    payments.getCatalog().then(products =&gt;
    {
        SendSuccessMessage(request,  JSON.stringify({ products: products }));
    }).catch(err =&gt;
    {
        SendFailedMessage(request, err);
    });
}


// Ads
function YandexShowInterstitialAd(request)
{
    if(request._id == 'yandex_interstitial_block')
    {
        YandexShowFullscrenAd();
        return;;
    }
    
    var render = IsMobilePlatform ? enums.BANNER_POS.Fullscreen : enums.BANNER_POS.Center;
    setElementByIdStyleType(render, 'block');
    SendSuccessMessage(request);
}

function YandexHideInterstitialAd(request)
{
    var render = IsMobilePlatform ? enums.BANNER_POS.Fullscreen : enums.BANNER_POS.Center;
    setElementByIdStyleType(render, 'none');
    SendSuccessMessage(request);
}

let isShowingRewardVideo = false;
function YandexShowRewardVideo(request)
{
    if(isShowingRewardVideo)
    {
        console.log('It is not possible to show the video ad block for the reward yet, since it is already being shown.');
        return;
    }
    isShowingRewardVideo = true;
    sdk.adv.showRewardedVideo({
        callbacks: { onOpen: () =&gt; 
            {
            },
            onRewarded: () =&gt;
            {
                isShowingRewardVideo = false;
                SendSuccessMessage(request);
            },
            onClose: () =&gt; {
                isShowingRewardVideo = false;
                SendClosedMessage(request);
            },
            onError: (err) =&gt; {
                isShowingRewardVideo = false;
                SendFailedMessage(request, '-Failed show reward video.');
            }
        }
    })
}

function YandexShowFullscrenAd()
{
    sdk.adv.showFullscreenAdv({
        callbacks: {
            onClose: function(wasShown) 
            {
                console.log('Closed Yandex fullscreen ad. Was showed: '+wasShown)
            },
            onError: function(err) 
            {
                console.log('Failed show Yandex fullscreen ad: '+err)
            }
        }
    })
}

function YandexShowBanner(request)
{
    if(request == null) 
    {
        SendFailedMessage(request, '-Failed show banner block. Request equal of null.');
        return;
    }
    
    var banner = JSON.parse(request.jsonData);
    if(banner == null) 
    {
        SendFailedMessage(request, '-Failed show banner block. BannerData equal of null.');
        return;
    }

    setElementByIdStyleType(banner._position, 'block');
    SendSuccessMessage(request);
}

function YandexHideBanner(request)
{
    if(request == null)
    {
        SendFailedMessage(request, '-Failed show banner block. Request equal of null.');
        return;
    }

    var banner = JSON.parse(request.jsonData);
    if(banner == null)
    {
        SendFailedMessage(request, '-Failed show banner block. BannerData equal of null.');
        return;
    }

    setElementByIdStyleType(banner._position, 'none');
    SendSuccessMessage(request);
}


// Storage
function YandexGetData(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    var requestData = JSON.parse(request.jsonData);
    player.getData(requestData.keys).then(data =&gt; 
    {
        var result = GetKeysValuesArrays(data);
        SendSuccessMessage(request, JSON.stringify(result));
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    });
}

function YandexSetData(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    var data = KeysValuesToObject(JSON.parse(request.jsonData));
    player.setData(data).then(() =&gt; //(data, true)
    {
        SendSuccessMessage(request);
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    });
}

function YandexSetStats(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    var stats = KeysValuesToObject(JSON.parse(request.jsonData));
    player.setStats(stats).then(() =&gt;
    {
        SendSuccessMessage(request);
    }).catch(err =&gt;
    {
        SendFailedMessage(request, err);
    });
}

function YandexGetStats(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    var requestData = JSON.parse(request.jsonData);
    player.getStats(requestData.keys).then(stats =&gt; 
    {
        var result = GetKeysValuesArrays(stats);
        SendSuccessMessage(request, JSON.stringify(result));
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    });
}

function YandexIncrementStats(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    var increments = KeysValuesToObject(JSON.parse(request.jsonData));
    player.incrementStats(increments).then(() =&gt; 
    {
        SendSuccessMessage(request);
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    });
}

function KeysValuesToObject(keyPairs)
{
    var stats = {};
    for(var i = 0 ; i &lt; keyPairs.keys.length; i++)
        stats[keyPairs.keys[i]] = keyPairs.values[i];
    return stats;
}

function GetKeysValuesArrays(obj)
{
    var keys = [];
    var values = [];
    for(var key in obj)
        if(obj.hasOwnProperty(key))
        {
            keys.push(key);
            values.push(obj[key]);
        }
    return {
        keys: keys,
        values: values
    }
}


// Leaderboards
function YandexInitializeLeaderboards(request)
{
    sdk.getLeaderboards().then(_lb =&gt; 
    {
        leaderboards = _lb;
        SendSuccessMessage(request);
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    });
}

function YandexGetLeaderboardInfo(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    if(leaderboards == null)
    {
        SendFailedMessage(request, enums.MESSAGES.LeaderboardsNotInit);
        return;
    }

    leaderboards.getLeaderboardDescription(request.jsonData).then(res =&gt; 
    {
        SendSuccessMessage(request, JSON.stringify(res));
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    });
}

function YandexSetLeaderboardScore(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    if(leaderboards == null)
    {
        SendFailedMessage(request, enums.MESSAGES.LeaderboardsNotInit);   
        return;
    }

    var requestData = JSON.parse(request.jsonData);
    if(requestData.extraData == null)
        leaderboards.setLeaderboardScore(requestData.leaderboardName, requestData.score);
    else 
        leaderboards.setLeaderboardScore(requestData.leaderboardName, requestData.score, requestData.extraData);

    SendSuccessMessage(request);
}

function YandexLeaderboardPlayer(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    if(leaderboards == null)
    {
        SendFailedMessage(request, enums.MESSAGES.LeaderboardsNotInit);
        return;
    }
    
    leaderboards.getLeaderboardPlayerEntry(request.jsonData).then(res =&gt; 
    {
        SendSuccessMessage(request, JSON.stringify(res));
    }).catch(err =&gt; 
    {
        var message = err.code != null ? err.code : JSON.stringify(err);
        SendFailedMessage(request, message);
    });
}

function YandexGetLeaderboard(request)
{
    if(player == null)
    {
        SendFailedMessage(request, enums.MESSAGES.UserNotLogged);
        return;
    }
    if(leaderboards == null)
    {
        SendFailedMessage(request, enums.MESSAGES.LeaderboardsNotInit);
        return;
    }

    var requestData = JSON.parse(request.jsonData);
    leaderboards.getLeaderboardEntries(requestData.leaderboardId, requestData.parameters).then(res =&gt; 
    {
        SendSuccessMessage(request, JSON.stringify(res));
    }).catch(err =&gt; 
    {
        SendFailedMessage(request, err);
    });
}

// Languages
function GetLanguageCode()
{
    if(sdk == null) return;
    return sdk.environment.i18n.lang;
}

// Native Ads Banner
function RTBrefresh(blockId, render)
{
    window.yaContextCb.push(()=&gt;{
        Ya.Context.AdvManager.render({
          renderTo: render,
          blockId: blockId.replace("yandex_rtb_", "")
        })
    });
}

function LoadBanner()
{
    if(IsMobilePlatform)
    {
        RTBrefresh("R-A-1376481-35", "bottom");
RTBrefresh("R-A-1376481-37", "fullscreen");

    } else 
    {
        RTBrefresh("R-A-1376481-36", "bottom");
RTBrefresh("R-A-1376481-38", "center");

    }
}

StartPage();
LoadBanner();
setInterval(LoadBanner, 30000);
</pre></body></html>