删除 YouleNexus 内嵌 .git,统一由根仓库唯一管理。提交: - projects/ 旧 H5 模板 Game_Surface_3 与各子游戏源码 - cocoscreator_projects/YouleNexus 工程 + cocos-creator-mcp 扩展源码 - CLAUDE.md、.mcp.json 等配置 library/temp/node_modules/dist 等缓存由 .gitignore 排除。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
837 lines
13 KiB
JavaScript
837 lines
13 KiB
JavaScript
var cp_fangfa=cp_fangfa||{};
|
|
////////////////////出牌/////////////////////////////////////////////////////////////////////////
|
|
cp_fangfa.chupai=function(cpjieshu){
|
|
switch (kongzhiquan){
|
|
case 1:
|
|
switch (Utl.getMySeat()){
|
|
case 0:
|
|
zijiyicang();
|
|
if(chupai[2]==4)
|
|
{
|
|
secondchupai();
|
|
qtyincangyi();
|
|
set_group(201,37,1,0,0);
|
|
set_self(1206,37,1,0);
|
|
set_self(1206,41,1,0);
|
|
set_self(1181,37,1,0);
|
|
set_self(1181,41,1,0);
|
|
}
|
|
else
|
|
{
|
|
firstchupai();
|
|
}
|
|
if(cpjieshu==0)
|
|
{
|
|
chupaitishi();
|
|
}
|
|
break;
|
|
case 1:
|
|
qtyincangyi();
|
|
if(chupai[2]!=4)
|
|
{
|
|
secondchupai();
|
|
}
|
|
else
|
|
{
|
|
qtyincanger();
|
|
}
|
|
break;
|
|
case 2:
|
|
qtyincanger();
|
|
if(chupai[2]==4)
|
|
{
|
|
zijiyicang();
|
|
firstchupai();
|
|
set_group(201,37,0,0,0);
|
|
}
|
|
break;
|
|
|
|
}
|
|
break;
|
|
|
|
///控制权为座位1//////////////////
|
|
case 2:
|
|
switch (Utl.getMySeat()){
|
|
case 0:
|
|
qtyincanger();
|
|
if(chupai[0]==4)
|
|
{
|
|
zijiyicang();
|
|
firstchupai();
|
|
set_group(201,37,0,0,0);
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
|
|
///////////
|
|
zijiyicang();
|
|
if(chupai[0]==4)
|
|
{
|
|
secondchupai();
|
|
qtyincangyi();
|
|
set_group(201,37,1,0,0);
|
|
set_self(1206,37,1,0);
|
|
set_self(1206,41,1,0);
|
|
set_self(1181,37,1,0);
|
|
set_self(1181,41,1,0);
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
firstchupai();
|
|
|
|
}
|
|
if(cpjieshu==0)
|
|
{
|
|
chupaitishi();
|
|
}
|
|
/////////////////
|
|
break;
|
|
case 2:
|
|
/////////////
|
|
qtyincangyi();
|
|
if(chupai[0]!=4)
|
|
{
|
|
secondchupai();
|
|
|
|
}
|
|
else
|
|
{
|
|
qtyincanger();
|
|
}
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
//////////////////////////////////////////////////
|
|
case 3:
|
|
switch (Utl.getMySeat()){
|
|
case 0:
|
|
qtyincangyi();
|
|
if(chupai[1]!=4)
|
|
{
|
|
secondchupai();
|
|
}
|
|
else
|
|
{
|
|
qtyincanger();
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
qtyincanger();
|
|
if(chupai[1]==4)
|
|
{
|
|
zijiyicang();
|
|
firstchupai();
|
|
set_group(201,37,0,0,0);
|
|
}
|
|
break;
|
|
case 2:
|
|
zijiyicang();
|
|
if(chupai[1]==4)
|
|
{
|
|
secondchupai();
|
|
qtyincangyi();
|
|
set_group(201,37,1,0,0);
|
|
set_self(1206,37,1,0);
|
|
set_self(1206,41,1,0);
|
|
set_self(1181,37,1,0);
|
|
set_self(1181,41,1,0);
|
|
|
|
}
|
|
else
|
|
{
|
|
firstchupai();
|
|
|
|
}
|
|
if(cpjieshu==0)
|
|
{
|
|
chupaitishi();
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
////////////////////不出//////////////////////////////////////////////////////////////////////////////////////
|
|
cp_fangfa.buchu=function(){
|
|
switch (kongzhiquan){
|
|
/////////控制权为座位1/////////
|
|
case 2:
|
|
///座位号为2的也不出
|
|
if(chupai[2]==2)
|
|
{
|
|
///座位号1出牌
|
|
if(Utl.getMySeat()==1)
|
|
{
|
|
chu();
|
|
jizhang=0;
|
|
|
|
}
|
|
kechu=0;
|
|
chjizhang = [0,0,0];
|
|
tishi=[];
|
|
chchupai=[];
|
|
zijiyicang();
|
|
qtyincangyi();
|
|
qtyincanger();
|
|
bijiao=[];
|
|
}
|
|
else
|
|
//////座位号2出了牌 或者出完了牌
|
|
if(chupai[2]==3||chupai[2]==4)
|
|
{//如果座位号2没有牌出
|
|
if(chupai[2]==3)
|
|
{
|
|
if(Utl.getMySeat()==1)
|
|
{
|
|
buchuyi();
|
|
zijiyicang();
|
|
set_self(1202,37,1,0,0);
|
|
chupaitishi();
|
|
|
|
}
|
|
|
|
if(Utl.getMySeat()==2)
|
|
{
|
|
qtyincangyi();
|
|
set_self(1203,37,1,0,0);
|
|
}
|
|
|
|
if(Utl.getMySeat()==0)
|
|
{
|
|
qtyincanger();
|
|
}
|
|
}
|
|
else
|
|
/////////////////出完了牌////////
|
|
if(chupai[2]==4)
|
|
{
|
|
if(Utl.getMySeat()==1)
|
|
{
|
|
chu();
|
|
jizhang=0;
|
|
|
|
}
|
|
kechu=0;
|
|
chjizhang = [0,0,0];
|
|
tishi=[];
|
|
chchupai=[];
|
|
zijiyicang();
|
|
qtyincangyi();
|
|
qtyincanger();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
//////控制权为座位2//////////////////////
|
|
case 3:
|
|
///如果座位0不出///////////
|
|
if(chupai[0]==0)
|
|
{
|
|
if(Utl.getMySeat()==2)
|
|
{
|
|
chu();
|
|
jizhang=0;
|
|
|
|
|
|
}
|
|
kechu=0;
|
|
chjizhang = [0,0,0];
|
|
tishi=[];
|
|
chchupai=[];
|
|
zijiyicang();
|
|
qtyincangyi();
|
|
qtyincanger();
|
|
bijiao=[];
|
|
|
|
}
|
|
else
|
|
/////////////座位0出了牌///////
|
|
if(chupai[0]==3||chupai[0]==4)
|
|
{
|
|
if(chupai[0]==3)
|
|
{
|
|
if(Utl.getMySeat()==2)
|
|
{
|
|
buchuyi();
|
|
zijiyicang();
|
|
set_self(1202,37,1,0,0);
|
|
chupaitishi();
|
|
|
|
}
|
|
|
|
if(Utl.getMySeat()==1)
|
|
{
|
|
qtyincanger();
|
|
|
|
}
|
|
|
|
if(Utl.getMySeat()==0)
|
|
{
|
|
qtyincangyi();
|
|
set_self(1203,37,1,0,0);
|
|
|
|
}
|
|
}
|
|
else
|
|
/////座位0出完了牌////
|
|
if(chupai[0]==4)
|
|
{
|
|
if(Utl.getMySeat()==2)
|
|
{
|
|
chu();
|
|
jizhang=0;
|
|
|
|
|
|
}
|
|
kechu=0;
|
|
tishi=[];
|
|
chjizhang = [0,0,0];
|
|
chchupai=[];
|
|
zijiyicang();
|
|
qtyincangyi();
|
|
qtyincanger();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
/////////控制权为座位0/////////
|
|
case 1:
|
|
if(chupai[1]==1)
|
|
{
|
|
if(Utl.getMySeat()==0)
|
|
{
|
|
chu();
|
|
jizhang=0;
|
|
|
|
|
|
}
|
|
kechu=0;
|
|
tishi=[];
|
|
chjizhang = [0,0,0];
|
|
chchupai=[];
|
|
zijiyicang();
|
|
qtyincangyi();
|
|
qtyincanger();
|
|
bijiao=[];
|
|
}
|
|
else
|
|
//////////座位1出了牌////////
|
|
if(chupai[1]==3||chupai[1]==4)
|
|
{
|
|
if(chupai[1]==3)
|
|
{
|
|
|
|
if(Utl.getMySeat()==0)
|
|
{
|
|
buchuyi();
|
|
zijiyicang();
|
|
set_self(1202,37,1,0,0);
|
|
chupaitishi();
|
|
}
|
|
if(Utl.getMySeat()==1)
|
|
{
|
|
set_self(1203,37,1,0,0);
|
|
qtyincangyi();
|
|
}
|
|
if(Utl.getMySeat()==2)
|
|
{
|
|
qtyincanger();
|
|
}
|
|
|
|
}
|
|
else
|
|
////座位1没牌出////////////////
|
|
if(chupai[1]==4)
|
|
{
|
|
if(Utl.getMySeat()==0)
|
|
{
|
|
chu();
|
|
jizhang=0;
|
|
|
|
|
|
}
|
|
kechu=0;
|
|
tishi=[];
|
|
chjizhang = [0,0,0];
|
|
chchupai=[];
|
|
zijiyicang();
|
|
qtyincangyi();
|
|
qtyincanger();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
////////////////////小局////////////////////////
|
|
cp_fangfa.xiaoju=function(_msg){
|
|
|
|
if(jiren==2)
|
|
{
|
|
set_self(1222,37,0,0,0);
|
|
set_self(1254,37,0,0,0);
|
|
set_self(1223,37,0,0,0);
|
|
set_self(1232,37,0,0,0);
|
|
set_self(1285,37,0,0,0);
|
|
set_self(1282,37,0,0,0);
|
|
set_self(1267,37,0,0,0);
|
|
set_self(1273,37,0,0,0);
|
|
set_self(1279,37,0,0,0);
|
|
set_self(1270,37,0,0,0);
|
|
|
|
set_self(1276,37,0,0,0);
|
|
set_self(1264,37,0,0,0);
|
|
set_self(1261,37,0,0,0);
|
|
set_self(1235,37,0,0,0);
|
|
set_self(1238,37,0,0,0);
|
|
set_self(1224,37,0,0,0);
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
for(var a=0;a<_msg.data.fenshu.length-1;a=a+2)
|
|
{
|
|
for(var b=0;b<jiren;b++)
|
|
{
|
|
if(_msg.data.fenshu[a]==b)
|
|
{
|
|
set_self(1185+b,7,_msg.data.fenshu[a+1]+'分');
|
|
set_self(1185+b,37,1,0,0);
|
|
var wskfen = _msg.data.fenshu[a+1];
|
|
///小局结算 5 10 k的 得分//////////////////
|
|
|
|
set_draw(wskfen,1274+b,380+250*b,20);
|
|
set_self(1274+b,37,1,0,0);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
Utl.playSound(yinxiao[4]);
|
|
////////////小局 是庄的话 显示庄的图标///////////
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
if(_msg.data.fenshu[0]==a)
|
|
{
|
|
if(a==0)
|
|
{
|
|
set_self(1248,37,1,0,0);
|
|
set_self(1249,37,0,0,0);
|
|
set_self(1254,37,0,0,0);
|
|
|
|
}
|
|
if(a==1)
|
|
{
|
|
set_self(1248,37,0,0,0);
|
|
set_self(1249,37,1,0,0);
|
|
set_self(1254,37,0,0,0);
|
|
|
|
}
|
|
if(a==2)
|
|
{
|
|
set_self(1248,37,0,0,0);
|
|
set_self(1249,37,0,0,0);
|
|
set_self(1254,37,1,0,0);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
//////////////////////////////////////////////
|
|
|
|
//////头像////////
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
set_self(1217+a*3,1,Utl.getHeadimgSrc(a));
|
|
}
|
|
///////昵称///////////
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
set_self(1230+a,7,Func.subString(Utl.getNicknameBySeat(a),12,true));
|
|
var zt = Func.subString(Utl.getNicknameBySeat(a),12,true).gblen();
|
|
set_self(1230+a,18,389+a*250-zt/2*14,0,0);
|
|
}
|
|
///奖/////////////////////////////////
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
|
|
/////////////////////奖的宽度调整////////////////////
|
|
set_draw(_msg.data.jiang[a],1271+a,349+250*a,20);
|
|
set_self(1256+a,7,_msg.data.jiang[a]+'奖');
|
|
//////////////类型不是 不冲关的时候///////////////////
|
|
if(_msg.data.leixing[2]!=5)
|
|
{
|
|
if(_msg.data.jiang[a]>=_msg.data.leixing[2]+2)
|
|
{
|
|
set_self(1277+a,37,1,0,0);
|
|
|
|
|
|
}
|
|
else
|
|
{ //////不冲关 隐藏//////
|
|
set_self(1277+a,37,0,0,0);
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
{ ////////////不冲关的时候 隐藏 冲关*2/////
|
|
for(var b=0;b<3;b++)
|
|
{
|
|
set_self(1277+b,37,0,0,0);
|
|
}
|
|
}
|
|
}
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
///////返回的是庄双关 还是其他的///////////
|
|
set_self(1262+a,43,_msg.data.jieguo);
|
|
}
|
|
/////////////分////////////////
|
|
var dijiju = _msg.data.xiaojufen.length/jiren;
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
///////////小局得分 宽度调整////////////////////////////////
|
|
set_draw(ifast_abs(_msg.data.xiaojufen[(dijiju-1)*jiren+a]),1280+a,376+250*a,26);
|
|
if(_msg.data.xiaojufen[(dijiju-1)*jiren+a]<0)
|
|
{
|
|
set_self(1280+a,1,532);
|
|
set_self(1283+a,37,1,0,0);
|
|
set_self(1283+a,18,get_self(1280+a,18,0,0,0)-30,0,0);
|
|
}
|
|
else
|
|
{
|
|
set_self(1280+a,1,531);
|
|
set_self(1283+a,37,0,0,0);
|
|
}
|
|
///////////////////////////////////////////////////////////////////
|
|
}
|
|
|
|
//////////////////总奖///////////////////////////////////////
|
|
for(var a=0;a<_msg.data.zongjiang.length-1;a=a+2)
|
|
{
|
|
for(var b=0;b<jiren;b++)
|
|
{
|
|
if(_msg.data.zongjiang[a]==b)
|
|
{
|
|
///小局结算 的总奖//////////////////
|
|
|
|
set_draw(_msg.data.zongjiang[a+1],1236+b,405+250*b,20);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
///////////霸王//////////////////////
|
|
if(_msg.data.leixing[1]==1)
|
|
{
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
////不算霸王 /////
|
|
set_self(1259+a,37,0,0,0);
|
|
}
|
|
|
|
}
|
|
else
|
|
{ //////////////霸王* 2///////////////////////////////
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
set_self(1259+a,37,0,0,0);
|
|
}
|
|
var bw = 0;
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
if(_msg.data.jiang[a]!=0)
|
|
{
|
|
bw=0;
|
|
for(var k=0;k<jiren;k++)
|
|
{
|
|
if(k!=a)
|
|
{
|
|
if(_msg.data.jiang[k]==0)
|
|
{
|
|
bw = bw+1;
|
|
if(bw==jiren-1)
|
|
{
|
|
set_self(1259+a,37,1,0,0);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
////////////////////大局////////////////////////
|
|
cp_fangfa.daju=function(_msg){
|
|
Utl.gameOver();
|
|
for (var i = 0; i <_msg.data.grade.length; i++) {
|
|
Utl.setGrade(i,_msg.data.grade[i]);
|
|
}
|
|
//////头像////////
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
set_self(1136+a,1,Utl.getHeadimgSrc(a));
|
|
}
|
|
///////昵称///////////
|
|
var shuju = [];
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
shuju[a]=[];
|
|
shuju[a][0]=[Utl.getNicknameBySeat(a)];
|
|
shuju[a][1]=_msg.data.grade[a];
|
|
set_self(1250+a,7,Func.subString(Utl.getNicknameBySeat(a),8,true));
|
|
set_self(1198+a,7,Utl.getPlayeridBySeat(a));
|
|
var zt = Func.subString(Utl.getNicknameBySeat(a),8,true).gblen();
|
|
set_self(1250+a,18,292+a*333-zt/2*14,0,0);
|
|
set_self(1198+a,18,292+a*333-6/2*14,0,0);
|
|
}
|
|
Utl.onGameFinished(shuju);/////////结算信息[[昵称,输赢分数],.......]
|
|
youxidaju(_msg.data.jushu);
|
|
|
|
for (var a=0;a<_msg.data.jushu;a++)
|
|
{
|
|
set_self(dajuyi[a],7,'第'+(a+1)+'局:'+_msg.data.fenshu[jiren*a]);
|
|
set_self(dajuer[a],7,'第'+(a+1)+'局:'+_msg.data.fenshu[jiren*a+1]);
|
|
|
|
set_self(dajuyi[a],37,1,0,0);
|
|
set_self(dajuer[a],37,1,0,0);
|
|
|
|
if(jiren==3)
|
|
{
|
|
set_self(dajusan[a],7,'第'+(a+1)+'局:'+_msg.data.fenshu[jiren*a+2]);
|
|
set_self(dajusan[a],37,1,0,0);
|
|
}
|
|
|
|
}
|
|
for(var a=0;a<jiren;a++)
|
|
{
|
|
/////调整分数的宽度 位置/////////
|
|
set_draw(ifast_abs(_msg.data.grade[a]),1010+a,276+a*333,30);
|
|
if(_msg.data.grade[a]<0)
|
|
{
|
|
set_self(1010+a,1,526);
|
|
set_self(1182+a,37,1,0,0);
|
|
set_self(1182+a,18,get_self(1010+a,18,0,0,0)-30,0,0);
|
|
|
|
}
|
|
else
|
|
{
|
|
set_self(1010+a,1,521);
|
|
set_self(1182+a,37,0,0,0);
|
|
}
|
|
}
|
|
|
|
set_self(1204,37,0,0,0);
|
|
set_self(1204,41,0,0,0);
|
|
|
|
for(var a=1013;a<=1050;a++)
|
|
{
|
|
set_self(a,41,0,0,0);
|
|
}
|
|
var fenwzhi = [0,1,2];
|
|
|
|
|
|
//////大赢家
|
|
var dayingjia=[0,1,2];
|
|
var daju_grade=_msg.data.grade;
|
|
|
|
for(var k=0;k<jiren;k++)
|
|
{
|
|
for(var j=k+1;j<jiren;j++)
|
|
{
|
|
if(daju_grade[k]<daju_grade[j])
|
|
{
|
|
var huan=dayingjia[k];
|
|
dayingjia[k]=dayingjia[j];
|
|
dayingjia[j]=huan;
|
|
var jiaohuan=daju_grade[k];
|
|
daju_grade[k]=daju_grade[j];
|
|
daju_grade[j]=jiaohuan;
|
|
}
|
|
|
|
}
|
|
}
|
|
/////显示大赢家
|
|
for(var k=0;k<jiren;k++)
|
|
{
|
|
if(dayingjia[0]==2)
|
|
{
|
|
set_self(1144,37,1,0,0);
|
|
}
|
|
else
|
|
{
|
|
set_self(1140+dayingjia[0],37,1,0,0);
|
|
if(daju_grade[k]==daju_grade[0])
|
|
{
|
|
if(dayingjia[k]==2)
|
|
{
|
|
set_self(1144,37,1,0,0);
|
|
}
|
|
else
|
|
{
|
|
set_self(1140+dayingjia[k],37,1,0,0);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
if(Utl.getShowShare()==1){
|
|
set_self(1153,37,0,0,0);
|
|
}
|
|
chcpzt= [-2,-2,-2,0,1];
|
|
qjshoubao='';
|
|
wjkaizhan=0;
|
|
exitList = [];
|
|
spyzuobiao=[];
|
|
kschupai=[];
|
|
/////////////////////
|
|
cptishi = [];
|
|
dian = 0;
|
|
tizd=0;
|
|
zhuangjia=0;
|
|
mycards=[];
|
|
kechu=0;
|
|
jizhang=0; //上家出了几张牌
|
|
shengyu=[0,0,0];
|
|
len=0;
|
|
zshu=[];
|
|
zhen=[]; //传来的牌的ID号
|
|
chupai=[];
|
|
zhenshu=[];
|
|
facards=[];
|
|
fapai=0;
|
|
kongzhiquan=0;
|
|
|
|
clsyyi=0; ///重连剩余几张牌///////////////
|
|
clsyer=0; ///重连剩余几张牌//////////////
|
|
clsysan=0; ///重连剩余几张牌//////////////
|
|
clcard=[]; /////重连手牌/////////////
|
|
|
|
clyijizhang=0; ///////////重连的牌的张数/////////
|
|
clerjizhang=0;
|
|
clsanjizhang=0;
|
|
|
|
clzhenyi=[]; //////重连的牌的帧数///////
|
|
clzhener=[];
|
|
clzhensan=[];
|
|
|
|
|
|
|
|
tiaojian=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
|
|
|
|
bijiao=[];
|
|
bianid=[];
|
|
|
|
|
|
dajujieshu=0;
|
|
|
|
////////////////////////////////////////////////////////
|
|
|
|
chshoupai=[]; ////手里的牌///
|
|
chchupai=[[],[],[]]; ////出了的牌//////
|
|
chcpzt= [-2,-2,-2,0,2]; //////出牌的状态(是出牌3 还是不出seat 还是牌出完了4) /
|
|
chshengyu=[35,35,35]; //////手里还剩几张牌/////////////
|
|
chkongzhi = 1;
|
|
chzhunbei = [-1,-1,-1];
|
|
chjizhang = [0,0,0];
|
|
|
|
kztq=0;
|
|
|
|
|
|
idzhen=[];
|
|
|
|
tishi = [];
|
|
sc=[];
|
|
xjjiesuan=0;
|
|
jisuan = 0;
|
|
|
|
dingshi();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|