LAPTOP-PC6VHEF0\XIONGHUY 1 vuosi sitten
vanhempi
sitoutus
5e5411c7d3
58 muutettua tiedostoa jossa 7370 lisäystä ja 2505 poistoa
  1. 10 4
      RO_Server_Trunk-branch_0.1.39/rocommon/service/etcdreg.go
  2. 537 20
      RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/base_config.go
  3. 85 0
      RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/base_config_global.go
  4. 24 0
      RO_Server_Trunk-branch_0.1.39/roserver/baseserver/router/route_table.go
  5. 4 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/ActivitiesBtChargeTaskGoldCfg.csv
  6. 4 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/ActivitiesBtChargeTaskRoMoneyCfg.csv
  7. 5 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/ActivitiesBtFirstChargeCfg.csv
  8. 5 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/BTSmashEggsCfg.csv
  9. 16 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/BoliShopCfg.csv
  10. 10 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/BoliVipCfg.csv
  11. 4 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/PassCheckCfg.csv
  12. 5 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/PrivilegeCardCfg.csv
  13. 12 0
      RO_Server_Trunk-branch_0.1.39/roserver/config/csv/PurseShopCfg.csv
  14. 39 2
      RO_Server_Trunk-branch_0.1.39/roserver/db/model/orm_activity.go
  15. 58 0
      RO_Server_Trunk-branch_0.1.39/roserver/db/model/orm_helper.go
  16. 15 0
      RO_Server_Trunk-branch_0.1.39/roserver/db/model/role_msg.go
  17. 3 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/activity_manager.go
  18. 1 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/def.go
  19. 3 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/item_effect.go
  20. 264 50
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role.go
  21. 576 31
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_activity.go
  22. 2 1
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_arena.go
  23. 50 5
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_bag.go
  24. 164 12
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_base.go
  25. 104 3
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_battle.go
  26. 39 4
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_battle_attr.go
  27. 653 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_bt.go
  28. 11 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_chat.go
  29. 10 1
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_cross.go
  30. 14 4
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_draw.go
  31. 17 1
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_map.go
  32. 716 2
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_rune.go
  33. 4 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_state.go
  34. 45 1
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_tower.go
  35. 4 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/model/task_manager.go
  36. 15 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/msg/gm_msg.go
  37. 146 0
      RO_Server_Trunk-branch_0.1.39/roserver/game/msg/role_msg.go
  38. 83 0
      RO_Server_Trunk-branch_0.1.39/roserver/gmweb/model/chat_update.go
  39. 6 0
      RO_Server_Trunk-branch_0.1.39/roserver/gmweb/model/gmweb_model.go
  40. 7 0
      RO_Server_Trunk-branch_0.1.39/roserver/gmweb/msg/msg.go
  41. 596 519
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/common.pb.go
  42. 33 10
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/common.proto
  43. 256 6
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/config_csv.go
  44. 501 406
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/db.pb.go
  45. 8 1
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/db.proto
  46. 361 319
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/error_code.pb.go
  47. 13 1
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/error_code.proto
  48. 366 347
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/logic.pb.go
  49. 3 1
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/logic.proto
  50. 176 103
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/login.pb.go
  51. 171 0
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/login.proto
  52. 652 530
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/messagedef.pb.go
  53. 35 1
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/messagedef.proto
  54. 32 0
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/messagedefclient.proto
  55. 68 0
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/pbbind_gen.go
  56. 248 112
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/user.pb.go
  57. 73 8
      RO_Server_Trunk-branch_0.1.39/roserver/serverproto/user.proto
  58. 8 0
      RO_Server_Trunk-branch_0.1.39/roserver/social/msg/chat_msg.go

+ 10 - 4
RO_Server_Trunk-branch_0.1.39/rocommon/service/etcdreg.go

@@ -279,13 +279,16 @@ func DiscoveryService(serviceName string, serviceZone int, nodeCreator func(Mult
 
 ///////////////////////////////////////////
 type ServiceDiscovery struct {
-	etcdConfig clientv3.Config
-	EtcdCli    *clientv3.Client //clientv3.New(conf)
-	EtcdKV     clientv3.KV
+	etcdConfig       clientv3.Config
+	EtcdCli          *clientv3.Client //clientv3.New(conf)
+	EtcdKV           clientv3.KV
+	watchSelfCloseCh chan interface{}
 }
 
 func NewNetServiceDiscovery(addr string) (*ServiceDiscovery, error) {
-	sd := &ServiceDiscovery{}
+	sd := &ServiceDiscovery{
+		watchSelfCloseCh: make(chan interface{}),
+	}
 	epsStr := fmt.Sprintf("http://%s", addr)
 	sd.etcdConfig = clientv3.Config{
 		Endpoints:   []string{epsStr},
@@ -303,6 +306,7 @@ func NewNetServiceDiscovery(addr string) (*ServiceDiscovery, error) {
 
 func (this *ServiceDiscovery) Close() {
 	this.EtcdCli.Close()
+	this.watchSelfCloseCh <- true
 }
 
 func (this *ServiceDiscovery) RegisterWithTimeOut(key string, value string) int64 {
@@ -353,6 +357,8 @@ func (this *ServiceDiscovery) WatchSelf(key string, value ETCDServiceDesc) {
 						this.RegisterWithTimeOut(key, value.String())
 					}
 				}
+			case <-this.watchSelfCloseCh: //discovery close
+				break
 			}
 		}
 	}()

+ 537 - 20
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/base_config.go

@@ -1918,6 +1918,10 @@ func (this *ConvertWorldBossData) RandChangePlayId() int32 {
 var ConvertWorldBossList = map[int32]*ConvertWorldBossData{}
 var ConvertWorldBossChangePlayList = map[int32]*ConvertWorldBossData{}
 
+const (
+	WorldBossListNum = 6
+)
+
 func convertWorldBossCfg() {
 	//WorldBossCfg
 	for _, data := range serverproto.WorldBossCfgLoader {
@@ -4298,6 +4302,10 @@ func GetActTiredRechargeDb(index, day int32) *StActTiredRecharge {
 	return db
 }
 
+//[天数,[数据额列表]]
+var ConvertActTiredRechargeList = map[int32][]*StActTiredRecharge{}
+var ConvertActTiredRechargeByIdList = map[int32]*StActTiredRecharge{}
+
 // 超值礼包
 type ConvertActDiscountsRechargeData struct {
 	Id            int32
@@ -4919,31 +4927,51 @@ func convertInvitationCfg() {
 type VipData struct {
 	VipRight  map[int32]int32
 	VipReward map[int32]int32
+	VipLevel  int32
 }
 
 var ConvertVipRight = map[int32]*VipData{}
 
+// 特权卡商店
+type PrivilegeData struct {
+	Id            int32
+	Price         float32
+	GoodsName     string
+	VipRight      map[int32]int32
+	VipReward     map[int32]int32
+	ConditionList []*serverproto.KeyValueType //到达对应地图条件
+	AttrList      map[int32]int32             //增加的属性
+}
+
+var ConvertSpecialPrivilegeRight []*PrivilegeData
+
 const (
-	Vip_System_Levelup         = 1  //vip升级需要经验
-	Vip_System_Evil            = 2  //vip恶魔协会免费刷新次数(0开始恶魔协会刷新金色条目)
-	Vip_System_Online          = 3  //vip上线提示
-	Vip_System_PetAdvance      = 4  //宠物进阶消耗
-	Vip_System_CardReset       = 5  //卡片重置
-	Vip_System_PetDesolve      = 6  //宠物分解
-	Vip_System_SkillReset      = 7  //技能重置
-	Vip_System_GuildHunt       = 8  //公会狩猎次数
-	Vip_System_CardInsert      = 9  //一键插卡
-	Vip_System_ShopWeight      = 10 //商店权重
-	Vip_System_WorldBoss       = 11 //世界boss
-	Vip_System_Arena           = 12 //英灵殿
-	Vip_System_QuickBattle     = 13 //快速战斗次数
-	Vip_System_HungSilver      = 14 //挂机银币
-	Vip_System_HungExp         = 15 //挂机经验
-	Vip_System_HungPartnerExp  = 16 //挂机伙伴经验
-	Vip_System_HungSkillExp    = 17 //技能经验
-	Vip_System_HungExtraTime   = 18 //挂机额外时长
-	Vip_System_SignReward      = 19 //签到翻倍
-	Vip_System_WorldBoss_Count = 20 //世界boss次数
+	Vip_System_Levelup               = 1  //vip升级需要经验
+	Vip_System_Evil                  = 2  //vip恶魔协会免费刷新次数(0开始恶魔协会刷新金色条目)
+	Vip_System_Online                = 3  //vip上线提示
+	Vip_System_PetAdvance            = 4  //宠物进阶消耗
+	Vip_System_CardReset             = 5  //卡片重置
+	Vip_System_PetDesolve            = 6  //宠物分解
+	Vip_System_SkillReset            = 7  //技能重置
+	Vip_System_GuildHunt             = 8  //公会狩猎次数
+	Vip_System_CardInsert            = 9  //一键插卡
+	Vip_System_ShopWeight            = 10 //商店权重
+	Vip_System_WorldBoss             = 11 //世界boss
+	Vip_System_Arena                 = 12 //英灵殿
+	Vip_System_QuickBattle           = 13 //快速战斗次数
+	Vip_System_HungSilver            = 14 //挂机银币
+	Vip_System_HungExp               = 15 //挂机经验
+	Vip_System_HungPartnerExp        = 16 //挂机伙伴经验
+	Vip_System_HungSkillExp          = 17 //技能经验
+	Vip_System_HungExtraTime         = 18 //挂机额外时长
+	Vip_System_SignReward            = 19 //签到翻倍
+	Vip_System_WorldBoss_Count       = 20 //世界boss次数
+	Vip_System_FastBattleTime        = 21 // 解锁战斗加速功能
+	Vip_System_CreditRecharge        = 22 // 充值钱包额度(添加的数值)
+	Vip_System_QuickBattleBaseExp    = 23 // 时光助力主角经验提升万分比 AddLeadExp
+	Vip_System_DevilsUp              = 24 // 挂机魔魂值加成
+	Vip_System_TransportRobbery      = 25 // 飞艇被抢劫掉落减少至
+	Vip_System_LuxuryPrizeWheelTimes = 26 // 豪华转盘可使用次数
 )
 
 func convertVipCfg() {
@@ -4983,6 +5011,66 @@ func convertVipCfg() {
 		}
 		ConvertVipRight[data.Lv] = convertVip
 	}
+
+	// bt服务器版本配置文件
+	convertSpecialPrivilegeCfg()
+	convertPassCheckCfg()
+	convertBtBoliCfg()                // 波利商城
+	convertBTRoCoinRechargeCfg()      // RO币累计活动
+	convertBTFirstAnd100RechargeCfg() // 超值首充 & 百元大礼包
+}
+
+//特权卡
+func convertSpecialPrivilegeCfg() {
+	for _, data := range serverproto.PrivilegeCardCfgLoader {
+		tmpData := &PrivilegeData{
+			Id:        data.Lv,
+			Price:     data.RMB,
+			VipReward: map[int32]int32{},
+			VipRight:  map[int32]int32{},
+		}
+		tmpData.VipRight[Vip_System_FastBattleTime] = data.QuickBattle
+		tmpData.VipRight[Vip_System_CreditRecharge] = data.PurseQuota
+
+		//可购买的解锁条件
+		for idx := range data.UnlockCond {
+			valueList := strings.Split(data.UnlockCond[idx], ":")
+			if len(valueList) >= 2 {
+				taskType, _ := Str2Num(valueList[0])
+				taskValue, _ := Str2Num(valueList[1])
+				tmpData.ConditionList = append(tmpData.ConditionList, &serverproto.KeyValueType{
+					Key:   int32(taskType),
+					Value: int32(taskValue),
+				})
+			}
+		}
+		Str2ResMapList(data.Reward, tmpData.VipReward)
+
+		ConvertSpecialPrivilegeRight = append(ConvertSpecialPrivilegeRight, tmpData)
+	}
+	sort.Slice(ConvertSpecialPrivilegeRight, func(i, j int) bool {
+		return ConvertSpecialPrivilegeRight[i].Id < ConvertSpecialPrivilegeRight[j].Id
+	})
+}
+
+//RO通行证
+var ConvertPassCheckData *PrivilegeData
+
+func convertPassCheckCfg() {
+	ConvertPassCheckData = &PrivilegeData{
+		VipRight: make(map[int32]int32),
+		AttrList: make(map[int32]int32),
+	}
+	for _, cfgData := range serverproto.PassCheckCfgLoader {
+		ConvertPassCheckData.Id = cfgData.Lv
+		ConvertPassCheckData.Price = cfgData.RMB
+		ConvertPassCheckData.VipRight[Vip_System_QuickBattleBaseExp] = cfgData.AddLeadExp
+		//添加的属性
+		Str2ResMapList(cfgData.AddAttrLevel, ConvertPassCheckData.AttrList)
+
+		//目前只配置了一行数据
+		break
+	}
 }
 
 type SummonCost struct {
@@ -4996,6 +5084,7 @@ type SummonCost struct {
 	Total        int32
 	//根据开服时间获取不同掉落配置
 	ServerDataList []*SummonCostByServerTime
+	BigRewardShowList []int32 //大奖预览字段
 }
 
 // 相对开服时间天数
@@ -5101,6 +5190,9 @@ func convertSummonCfg() {
 			ConvertSummonList[data.Id] = convertData
 		}
 	}
+	// bt 砸蛋活动
+	convertSummonForBTCfg()
+
 	for _, v := range ConvertSummonList {
 		sort.Slice(v.ServerDataList, func(i, j int) bool {
 			return v.ServerDataList[i].ServerTime < v.ServerDataList[j].ServerTime
@@ -5167,6 +5259,52 @@ func convertSummonCfg() {
 		drawPool.DrawTemplate = append(drawPool.DrawTemplate, drawTemplate)
 	}
 }
+func convertSummonForBTCfg() {
+	for _, data := range serverproto.BTSmashEggsCfgLoader {
+		convertData := &SummonCost{
+			DrawCount:    make(map[int32]int32),
+			ActivitiesId: data.ActivitiesId,
+			SummonType:   data.Type,
+			Total:        data.Total,
+		}
+
+		if len(data.Cost) >= 1 {
+			itemId, itemCount := Str2Res(data.Cost[0])
+			convertData.ItemId = itemId
+			convertData.ItemNum = itemCount
+		}
+		if len(data.Cost) >= 2 {
+			sourceId, sourceCount := Str2Res(data.Cost[1])
+			convertData.SourceId = sourceId
+			convertData.SourceNum = sourceCount
+		}
+
+		for _, count := range data.Method {
+			drawCount, _ := Str2Num(count)
+			convertData.DrawCount[int32(drawCount)] = 1
+		}
+
+		//大奖预览字段
+		for idx := 0; idx < len(data.Show); idx++ {
+			showItemId, _ := Str2Num(data.Show[idx])
+			if showItemId > 0 {
+				convertData.BigRewardShowList = append(convertData.BigRewardShowList, int32(showItemId))
+			}
+		}
+
+		serverData := &SummonCostByServerTime{
+			Id:          data.Id,
+			ServerTime:  data.StartDay,
+			SummonType:  data.Type,
+			SummonGroup: data.SummoType,
+			DropId:      data.DropId,
+			DropId2:     data.DropId2,
+			ExtDropId:   data.ExtDropId,
+		}
+		convertData.ServerDataList = append(convertData.ServerDataList, serverData)
+		ConvertSummonList[data.Id] = convertData
+	}
+}
 
 func GetDrawProbItem(drawType int32, resType int32) *DrawTemplate {
 	drawPool, ok := ConvertDrawTemplate[drawType]
@@ -5257,6 +5395,9 @@ var ConvertPetShop = map[int32]*RushShop{}
 var ConvertSkillShop = map[int32]*RushShop{}
 var ConvertIdolShop = map[int32]*RushShop{}
 
+// 充值钱包商店
+var ConvertPurseShop = map[int32]*GiftBag{}
+
 func ConvertOldRedisRuneCfg() {
 	convertRuneCfg()
 }
@@ -5540,6 +5681,55 @@ func convertRuneCfg() {
 		}
 		ConvertIdolShop[data.Id] = convertIdol
 	}
+
+	// 充值钱包功能(配置和RuneSHoGifts一致)
+	for _, data := range serverproto.PurseShopCfgLoader {
+		convertGift := &GiftBag{
+			GoodsId:     data.Id,
+			BagType:     data.Type,
+			Price:       data.RMB,
+			Name:        data.Name,
+			LimitCount:  data.RestrictedType,
+			RmbTotalPay: data.RmbTotalPay,
+		}
+		for _, reward := range data.Reward {
+			strList := strings.Split(reward, ":")
+			if len(strList) >= 2 {
+				key, _ := Str2Num(strList[0])
+				value, _ := Str2Num(strList[1])
+				convertGift.BuyReward = append(convertGift.BuyReward, &serverproto.KeyValueType{
+					Key:   int32(key),
+					Value: int32(value),
+				})
+			}
+		}
+		for _, first := range data.FirstBuyReward {
+			strList := strings.Split(first, ":")
+			if len(strList) >= 2 {
+				key, _ := Str2Num(strList[0])
+				value, _ := Str2Num(strList[1])
+				convertGift.FirstReward = append(convertGift.FirstReward, &serverproto.KeyValueType{
+					Key:   int32(key),
+					Value: int32(value),
+				})
+			}
+		}
+		for _, extra := range data.ExtraBuyReward {
+			strList := strings.Split(extra, ":")
+			if len(strList) >= 2 {
+				key, _ := Str2Num(strList[0])
+				value, _ := Str2Num(strList[1])
+				convertGift.ExtraReward = append(convertGift.ExtraReward, &serverproto.KeyValueType{
+					Key:   int32(key),
+					Value: int32(value),
+				})
+			}
+		}
+		ConvertPurseShop[data.Id] = convertGift
+		if data.RMB == 0 {
+			ConvertPurseShop[data.Id] = convertGift
+		}
+	}
 }
 
 const (
@@ -7491,3 +7681,330 @@ func CheckInCombined(zoneId int32) (bool, uint64) {
 	}
 	return false, 0
 }
+
+// bt版本服务器配置文件处理
+type CfgBoliVipData struct {
+	Id        int32
+	VipExp    int32           // 升级到下一级需要经验
+	VipRight  map[int32]int32 // 特权
+	DayReward []*serverproto.KeyValueType
+}
+type CfgBoliShopData struct {
+	ShopItem   *serverproto.ShopItem
+	Conditions []*serverproto.KeyValueType
+
+	GoodsItem         int32
+	PayForType        int32
+	PayForNum         int32
+	DiscountPayForNum int32
+}
+
+var ConvertBoliVipData = map[int32]*CfgBoliVipData{}
+var ConvertBoliShopData = map[int32][]*CfgBoliShopData{}   // level,[]CfgBoliShopData
+var ConvertBoliShopDataById = map[int32]*CfgBoliShopData{} // cfgId,CfgBoliShopData
+
+func convertBtBoliCfg() {
+	//bolivip
+	for _, cfgData := range serverproto.BoliVipCfgLoader {
+		tmpData := &CfgBoliVipData{
+			Id:       cfgData.Lv,
+			VipExp:   cfgData.VipExp,
+			VipRight: map[int32]int32{},
+		}
+		tmpData.VipRight[Vip_System_Levelup] = cfgData.VipExp
+		tmpData.VipRight[Vip_System_Evil] = cfgData.EvilFreeTimes
+		tmpData.VipRight[Vip_System_PetAdvance] = cfgData.PetAdvance
+		tmpData.VipRight[Vip_System_CardReset] = cfgData.CardReset
+		tmpData.VipRight[Vip_System_PetDesolve] = cfgData.PetBreak
+		tmpData.VipRight[Vip_System_SkillReset] = cfgData.SkillReset
+		tmpData.VipRight[Vip_System_GuildHunt] = cfgData.GuildBossChallenge
+		tmpData.VipRight[Vip_System_Arena] = cfgData.PvpReward
+		tmpData.VipRight[Vip_System_DevilsUp] = cfgData.DevilsUp
+		tmpData.VipRight[Vip_System_TransportRobbery] = cfgData.TransportRobbery
+		tmpData.VipRight[Vip_System_LuxuryPrizeWheelTimes] = cfgData.LuxuryPrizeWheelTimes
+
+		tmpData.DayReward = Str2ResSliceList(cfgData.GiftRewards)
+		ConvertBoliVipData[cfgData.Lv] = tmpData
+	}
+
+	//bolishop
+	for _, cfgData := range serverproto.BoliShopCfgLoader {
+		convertData := &CfgBoliShopData{
+			ShopItem: &serverproto.ShopItem{
+				GoodsId:    cfgData.GoodsId,
+				Price:      cfgData.PayForNum,
+				CurPrice:   cfgData.DiscountPayForNum,
+				Dispercent: cfgData.Proportion,
+				Hot:        true,
+			},
+			GoodsItem:         cfgData.GoodsItem,
+			PayForType:        cfgData.PayForType,
+			PayForNum:         cfgData.PayForNum,
+			DiscountPayForNum: cfgData.DiscountPayForNum,
+		}
+		if cfgData.SellWell <= 0 {
+			convertData.ShopItem.Hot = false
+		}
+
+		/*
+				1.永久限购
+				2.每天限购
+				3.有效期内限购
+				4.周限购
+				5.刷新类型商店限购(黑市商品不能配置1~4)
+			const (
+				LIMIT_TYPE_NONE    = iota //无限购
+				LIMIT_TYPE_FOREVER = 1    //永久限购
+				LIMIT_TYPE_DAY     = 2    //天限购(限购时间策划配置)
+				LIMIT_TYPE_RANGE   = 3    //范围限购。比如:从XX-XX
+				LIMIT_TYPE_WEEK    = 4    //周限购(限购时间策划配置)
+				LIMIT_TYPE_SPECIAL = 5    //黑市限购
+				LIMIT_TYPE_ARENA   = 6    //赛季道具
+				LIMIT_MAX
+			)
+		*/
+		limitRes := strings.Split(cfgData.RestrictedType, ":")
+		if len(limitRes) >= 2 {
+			lType, _ := Str2Num(limitRes[0])
+			convertData.ShopItem.LimitType = int32(lType)
+			if len(limitRes) == 2 {
+				lCount, _ := Str2Num(limitRes[1])
+				convertData.ShopItem.Count = int32(lCount)
+			}
+			if len(limitRes) >= 3 {
+				lCircle, _ := Str2Num(limitRes[1])
+				convertData.ShopItem.Circle = int32(lCircle)
+				lCount, _ := Str2Num(limitRes[2])
+				convertData.ShopItem.Count = int32(lCount)
+			}
+		}
+		if convertData.ShopItem.LimitType == 3 {
+			loc := util.GetLoc()
+			if cfgData.BeginTime != "" {
+				sTime, err1 := time.ParseInLocation(util.DATE_FORMAT, cfgData.BeginTime, loc)
+				if err1 != nil {
+					util.PanicF("convertBtCfg startTime err:%v", err1)
+				}
+				convertData.ShopItem.StartTime = int64(sTime.Unix())
+			}
+			if cfgData.EndTime != "" {
+				cTime, err2 := time.ParseInLocation(util.DATE_FORMAT, cfgData.EndTime, loc)
+				if err2 != nil {
+					util.PanicF("convertBtCfg endTime err:%v", err2)
+				}
+				convertData.ShopItem.EndTime = int64(cTime.Unix())
+			}
+		}
+		if len(cfgData.Condition) > 0 {
+			for _, cond := range cfgData.Condition {
+				condId, condArg := Str2Res(cond)
+				if condId != 0 && condArg != 0 {
+					convertData.Conditions = append(convertData.Conditions, &serverproto.KeyValueType{
+						Key:   int32(condId),
+						Value: int32(condArg),
+					})
+				}
+			}
+		}
+
+		ConvertBoliShopData[cfgData.BoliVipLevel] = append(ConvertBoliShopData[cfgData.BoliVipLevel], convertData)
+		ConvertBoliShopDataById[cfgData.GoodsId] = convertData
+	}
+}
+
+type BTRoCoinType int32
+
+const (
+	BTTaskRefreshType_Day BTRoCoinType = iota
+	BTTaskRefreshType_Week
+)
+
+type StActBTRecharge struct {
+	Id         int32
+	Day        int32
+	RefreshDay BTRoCoinType
+	TaskList   []int32
+}
+
+var ConvertBTRechargeData = map[int32][]*StActBTRecharge{}
+var ConvertBTRechargeRoCoinDailyData = map[int32][]*StActBTRecharge{}
+var ConvertBTRechargeRoCoinWeekData = map[int32][]*StActBTRecharge{}
+
+func convertBTRoCoinRechargeCfg() {
+	// 每日累计充值
+	//ActiviesTiredChargeCfg 累计充值奖励
+	for _, cfgData := range serverproto.ActivitiesBtChargeTaskGoldCfgLoader {
+		dbData := &StActBTRecharge{
+			Day:        cfgData.Day,
+			Id:         cfgData.Id,
+			RefreshDay: BTTaskRefreshType_Day,
+		}
+		for idx := 0; idx < len(cfgData.DailyTaskIds); idx++ {
+			taskId, _ := Str2Num(cfgData.DailyTaskIds[idx])
+			if taskId > 0 {
+				dbData.TaskList = append(dbData.TaskList, int32(taskId))
+			}
+		}
+		ConvertBTRechargeData[cfgData.ActivitiesId] = append(ConvertBTRechargeData[cfgData.ActivitiesId], dbData)
+	}
+	for key := range ConvertBTRechargeData {
+		sort.Slice(ConvertBTRechargeData[key], func(i, j int) bool {
+			return ConvertBTRechargeData[key][i].Day < ConvertBTRechargeData[key][j].Day
+		})
+	}
+
+	//RO币累计奖励
+	for _, cfgData := range serverproto.ActivitiesBtChargeTaskRoMoneyCfgLoader {
+		dbDataDaily := &StActBTRecharge{
+			Day:        cfgData.Day,
+			Id:         cfgData.Id,
+			RefreshDay: BTTaskRefreshType_Week,
+		}
+		for idx := 0; idx < len(cfgData.DailyTaskIds); idx++ {
+			taskId, _ := Str2Num(cfgData.DailyTaskIds[idx])
+			if taskId > 0 {
+				dbDataDaily.TaskList = append(dbDataDaily.TaskList, int32(taskId))
+			}
+		}
+		ConvertBTRechargeRoCoinDailyData[cfgData.ActivitiesId] = append(ConvertBTRechargeRoCoinDailyData[cfgData.ActivitiesId], dbDataDaily)
+
+		dbDataWeek := &StActBTRecharge{
+			Day:        cfgData.Day,
+			Id:         cfgData.Id,
+			RefreshDay: BTTaskRefreshType_Week,
+		}
+		for idx := 0; idx < len(cfgData.TaskIds); idx++ {
+			taskId, _ := Str2Num(cfgData.TaskIds[idx])
+			if taskId > 0 {
+				dbDataWeek.TaskList = append(dbDataWeek.TaskList, int32(taskId))
+			}
+		}
+		ConvertBTRechargeRoCoinWeekData[cfgData.ActivitiesId] = append(ConvertBTRechargeRoCoinWeekData[cfgData.ActivitiesId], dbDataWeek)
+	}
+	for key := range ConvertBTRechargeRoCoinDailyData {
+		sort.Slice(ConvertBTRechargeRoCoinDailyData[key], func(i, j int) bool {
+			return ConvertBTRechargeRoCoinDailyData[key][i].Day < ConvertBTRechargeRoCoinDailyData[key][j].Day
+		})
+	}
+	for key := range ConvertBTRechargeRoCoinWeekData {
+		sort.Slice(ConvertBTRechargeRoCoinWeekData[key], func(i, j int) bool {
+			return ConvertBTRechargeRoCoinWeekData[key][i].Day < ConvertBTRechargeRoCoinWeekData[key][j].Day
+		})
+	}
+
+}
+
+// RO币累计充值对应天数的数据列表
+func GetActBTROCoinRechargeDayDataList(activityId int32, day int32, dayType BTRoCoinType) (taskList []int32) {
+	if dayType == BTTaskRefreshType_Day {
+		cfgData, ok := ConvertBTRechargeRoCoinDailyData[activityId]
+		if !ok {
+			return
+		}
+		for idx := 0; idx < len(cfgData); idx++ {
+			if cfgData[idx].Day > day {
+				break
+			}
+			taskList = cfgData[idx].TaskList
+		}
+	} else {
+		cfgData, ok := ConvertBTRechargeRoCoinWeekData[activityId]
+		if !ok {
+			return
+		}
+		for idx := 0; idx < len(cfgData); idx++ {
+			if cfgData[idx].Day > day {
+				break
+			}
+			taskList = cfgData[idx].TaskList
+		}
+	}
+	return
+}
+
+// 每日累计充值
+func GetActBTRechargeDayDataList(activityId int32, day int32) (taskList []int32) {
+	cfgData, ok := ConvertBTRechargeData[activityId]
+	if !ok {
+		return
+	}
+
+	for idx := 0; idx < len(cfgData); idx++ {
+		if cfgData[idx].Day > day {
+			break
+		}
+		taskList = cfgData[idx].TaskList
+	}
+	return
+}
+
+// 超值首充 & 百元大礼包
+type BTRechargeRewardData struct {
+	Reward          []*serverproto.KeyValueType
+	RewardCondition int32
+}
+type ConvertBTFirstRechargeData struct {
+	Name                 string
+	OpenConditionList    []*serverproto.KeyValueType
+	OpenConditionStrList []string
+	RechargeAmount       float32 //达到该金额解锁首充奖励获取
+	RewardList           []BTRechargeRewardData
+}
+
+var ConvertBTFirstRecharge *ConvertBTFirstRechargeData = nil
+var ConvertBTRecharge100 *ConvertBTFirstRechargeData = nil
+
+func convertBTFirstAnd100RechargeCfg() {
+	//超值首充
+	if cfgData, ok := serverproto.ActivitiesBtFirstChargeCfgLoader[1]; ok {
+		ConvertBTFirstRecharge = &ConvertBTFirstRechargeData{
+			OpenConditionStrList: cfgData.OpenCondition,
+		}
+		ConvertBTFirstRecharge.OpenConditionList = Str2ResSliceList(cfgData.OpenCondition)
+		//ConvertBTFirstRecharge.RechargeAmount = cfgData.RechargeAmount
+		if len(cfgData.RechargeAmount) < 3 {
+			return
+		}
+		value1, _ := Str2Num(cfgData.RechargeAmount[0])
+		ConvertBTFirstRecharge.RewardList = append(ConvertBTFirstRecharge.RewardList, BTRechargeRewardData{
+			RewardCondition: int32(value1),
+			Reward:          Str2ResSliceList(cfgData.Reward1),
+		})
+
+		value2, _ := Str2Num(cfgData.RechargeAmount[1])
+		ConvertBTFirstRecharge.RewardList = append(ConvertBTFirstRecharge.RewardList, BTRechargeRewardData{
+			RewardCondition: int32(value2),
+			Reward:          Str2ResSliceList(cfgData.Reward2),
+		})
+
+		value3, _ := Str2Num(cfgData.RechargeAmount[2])
+		ConvertBTFirstRecharge.RewardList = append(ConvertBTFirstRecharge.RewardList, BTRechargeRewardData{
+			RewardCondition: int32(value3),
+			Reward:          Str2ResSliceList(cfgData.Reward3),
+		})
+	}
+
+	//百元大礼包
+	if cfgData, ok := serverproto.ActivitiesBtFirstChargeCfgLoader[2]; ok {
+		ConvertBTRecharge100 = &ConvertBTFirstRechargeData{
+			OpenConditionStrList: cfgData.OpenCondition,
+			Name:                 cfgData.Name,
+		}
+		ConvertBTRecharge100.OpenConditionList = Str2ResSliceList(cfgData.OpenCondition)
+		if len(cfgData.RechargeAmount) < 0 {
+			return
+		}
+		value0, _ := Str2Num(cfgData.RechargeAmount[0])
+		ConvertBTRecharge100.RechargeAmount = float32(value0)
+
+		ConvertBTRecharge100.RewardList = append(ConvertBTRecharge100.RewardList, BTRechargeRewardData{
+			Reward: Str2ResSliceList(cfgData.Reward1),
+		})
+		ConvertBTRecharge100.RewardList = append(ConvertBTRecharge100.RewardList, BTRechargeRewardData{
+			Reward: Str2ResSliceList(cfgData.Reward2),
+		})
+		ConvertBTRecharge100.RewardList = append(ConvertBTRecharge100.RewardList, BTRechargeRewardData{
+			Reward: Str2ResSliceList(cfgData.Reward3),
+		})
+	}
+}

+ 85 - 0
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/base_config_global.go

@@ -10,6 +10,7 @@ var GlobalAttrPetNotInheritHeroList []serverproto.Attr //宠物不继承给玩
 var ChatWorldRoleLevel int32 = 0
 var ChatWorldMapLevel int32 = 0
 var ChatWorldTime uint64 = 0
+var ChatWorldTotalRecharge float32 = 30 //发言累计充值
 var GlobalRoleOriginalAttrPoint int32 = 0
 
 var GlobalDaoChangChallengeCount int32 = 0
@@ -28,6 +29,8 @@ var GlobalMailIdInvitationDelMember int32 = 6
 var GlobalMailIdVipLevelUp int32 = 7
 var GlobalMailIdPayReward int32 = 8
 var GlobalMailRuneExplore int32 = 22
+var GlobalMailBoliShop int32 = 33
+var GlobalMailSpecialPrivilegeCard int32 = 34
 
 var GlobalRuneGiftGoldShopResetVersion int32 = 0
 
@@ -234,6 +237,16 @@ var GlobalCompetitonDayRewardLevel int32 = 0
 var GlobalWishSlotMaxCnt int32 = 0
 var GlobalWishSlotCost = serverproto.KeyValueType{}
 
+// bt服务器常量处理
+// 充值钱包
+var GlobalCreditRechargeFactor float32 = 0                  // 充值钱包 免费充值额度神域经验比例
+var GlobalCreditRechargeInitMax int32 = 0                   // 充值钱包 初始化最大额度
+var GlobalRoCoinFactor float32 = 10                         // rmb获得RO币比例系数
+var GlobalFastBattleTime []serverproto.KeyValueType         // 特殊处理使用道具添加战斗倍数时间[道具id:持续时间]
+var GlobalClimbingTowerDayReward []serverproto.KeyValueType // 试炼馈赠(层数:免费充值额度数量)
+var GlobalRoCoinToExp = 1.0                                 // RO币兑换波利商城经验比例
+var GlobalWorldBossChallengeCost []serverproto.KeyValueType
+
 type IdolDayReward struct {
 	Id        int32
 	StartTime string
@@ -267,6 +280,8 @@ func convertGlobalCfg() {
 				ChatWorldRoleLevel = value
 			} else if key == int32(serverproto.TaskType_Level_Battle_Count) {
 				ChatWorldMapLevel = value
+			} else if key == int32(serverproto.TaskType_Recharge_Num_Accu) {
+				ChatWorldTotalRecharge = float32(value)
 			}
 		}
 	}
@@ -876,6 +891,9 @@ func convertGlobalCfg() {
 			}
 		}
 	}
+
+	// bt服务器常量处理
+	convertGlobalCfgBT()
 }
 func getGlobalCfgValI(idx serverproto.GlobalType) int32 {
 	if cfgData, ok := serverproto.GlobalCfgLoader[int32(idx)]; ok {
@@ -899,3 +917,70 @@ type ConvertCheatMsgData struct {
 	ParamList   []int
 	RechargeNum int32 //充值金额
 }
+
+func convertGlobalCfgBT() {
+	// 充值钱包 免费充值额度神域经验比例
+	GlobalCreditRechargeFactorStr := getGlobalCfgValS(serverproto.GlobalType_Global_CreditRechargeVip_Factor)
+	f1, f2 := Str2Res(GlobalCreditRechargeFactorStr)
+	// f1:rmb  f2:res
+	if f1 > 0 {
+		GlobalCreditRechargeFactor = float32(f2) / float32(f1)
+	}
+	// 充值钱包 初始化最大额度
+	GlobalCreditRechargeInitMax = getGlobalCfgValI(serverproto.GlobalType_Global_CreditRechargeInitMax)
+
+	// rmb获得RO币比例系数
+	//GlobalRoCoinFactor
+	GlobalRMBTOROCoinFactorStr := getGlobalCfgValS(serverproto.GlobalType_Global_RmbToROCoinFactor)
+	f1, f2 = Str2Res(GlobalRMBTOROCoinFactorStr)
+	// f1:rmb  f2:res
+	if f1 > 0 {
+		GlobalRoCoinFactor = float32(f2) / float32(f1)
+	}
+
+	// 特殊处理使用道具添加战斗倍数时间[道具id:持续时间]
+	tmpStrList := strings.Split(getGlobalCfgValS(serverproto.GlobalType_Global_FastBattleTime), ";")
+	for idx := 0; idx < len(tmpStrList); idx++ {
+		k, v := Str2Res(tmpStrList[idx])
+		if k > 0 && v > 0 {
+			GlobalFastBattleTime = append(GlobalFastBattleTime, serverproto.KeyValueType{
+				Key:   k,
+				Value: v,
+			})
+		}
+	}
+
+	// 试炼馈赠(层数:免费充值额度数量)
+	tmpStrList = strings.Split(getGlobalCfgValS(serverproto.GlobalType_Global_ClimbingTowerDayReward), ";")
+	for idx := 0; idx < len(tmpStrList); idx++ {
+		k, v := Str2Res(tmpStrList[idx])
+		if k <= 0 || v <= 0 {
+			continue
+		}
+		GlobalClimbingTowerDayReward = append(GlobalClimbingTowerDayReward, serverproto.KeyValueType{
+			Key:   k,
+			Value: v,
+		})
+	}
+
+	// RO币兑换波利商城经验比例
+	GlobalRoCoinToExpStr := getGlobalCfgValS(serverproto.GlobalType_Global_RoCoinToBoliExp_Factor)
+	f1, f2 = Str2Res(GlobalRoCoinToExpStr)
+	// f1:RoCoin f2:exp
+	if f1 > 0 {
+		GlobalRoCoinToExp = float64(f2) / float64(f1)
+	}
+
+	//挑战者大厅购买次数消耗
+	tmpStrList = strings.Split(getGlobalCfgValS(serverproto.GlobalType_Global_WorldBossChallengeCost), ";")
+	for idx := 0; idx < len(tmpStrList); idx++ {
+		k, v := Str2Res(tmpStrList[idx])
+		if k <= 0 || v <= 0 {
+			continue
+		}
+		GlobalWorldBossChallengeCost = append(GlobalWorldBossChallengeCost, serverproto.KeyValueType{
+			Key:   k,
+			Value: v,
+		})
+	}
+}

+ 24 - 0
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/router/route_table.go

@@ -317,6 +317,19 @@ func init(){
 	addRule("CSPetQiyueBattlePetAttrReq","game","game",1707)
 	addRule("CSCardLevelExchangeReq","game","game",1709)
 	addRule("CSCombineServerInfoReq","game","game",1712)
+	addRule("CSCreditRechargeShopItemBuyReq","game","game",1714)
+	addRule("CSRuneSpecialPrivilegeRewardReq","game","game",1717)
+	addRule("CSClimbingTowerDayRewardReq","game","game",1723)
+	addRule("CSBoliShopLevelUpReq","game","game",1725)
+	addRule("CSBoliShopRewardReq","game","game",1727)
+	addRule("CSBoliShopBuyReq","game","game",1729)
+	addRule("CSBTShopInfoReq","game","game",1736)
+	addRule("CSBoliShopInfoReq","game","game",1738)
+	addRule("CSBTRoCoinShopItemBuyReq","game","game",1740)
+	addRule("CSActivitySmashEggsReq","game","game",1742)
+	addRule("CSActivitySmashEggsMsgReq","game","game",1744)
+	addRule("CSBTFirstRechargeRewardReq","game","game",1747)
+	addRule("CSBTRecharge100RewardReq","game","game",1750)
 	addRule("SSCrossYuanHangTrialViewListReq","crossserver","crossserver",6002)
 	addRule("SSCrossYuanHangTrialReq","crossserver","crossserver",6004)
 	addRule("SSCrossYuanHangTrialChallengeReq","crossserver","crossserver",6006)
@@ -611,4 +624,15 @@ func init(){
 	ReqAckKVList[1707] = ReqAckKVInfo{1707, 1708, "CSPetQiyueBattlePetAttrReq|SCPetQiyueBattlePetAttrAck"}
 	ReqAckKVList[1709] = ReqAckKVInfo{1709, 1710, "CSCardLevelExchangeReq|SCCardLevelExchangeAck"}
 	ReqAckKVList[1712] = ReqAckKVInfo{1712, 1713, "CSCombineServerInfoReq|SCCombineServerInfoAck"}
+	ReqAckKVList[1714] = ReqAckKVInfo{1714, 1715, "CSCreditRechargeShopItemBuyReq|SCCreditRechargeShopItemBuyAck"}
+	ReqAckKVList[1717] = ReqAckKVInfo{1717, 1718, "CSRuneSpecialPrivilegeRewardReq|SCRuneSpecialPrivilegeRewardAck"}
+	ReqAckKVList[1723] = ReqAckKVInfo{1723, 1724, "CSClimbingTowerDayRewardReq|SCClimbingTowerDayRewardAck"}
+	ReqAckKVList[1727] = ReqAckKVInfo{1727, 1728, "CSBoliShopRewardReq|SCBoliShopRewardAck"}
+	ReqAckKVList[1736] = ReqAckKVInfo{1736, 1737, "CSBTShopInfoReq|SCBTShopInfoAck"}
+	ReqAckKVList[1738] = ReqAckKVInfo{1738, 1739, "CSBoliShopInfoReq|SCBoliShopInfoAck"}
+	ReqAckKVList[1740] = ReqAckKVInfo{1740, 1741, "CSBTRoCoinShopItemBuyReq|SCBTRoCoinShopItemBuyAck"}
+	ReqAckKVList[1742] = ReqAckKVInfo{1742, 1743, "CSActivitySmashEggsReq|SCActivitySmashEggsAck"}
+	ReqAckKVList[1744] = ReqAckKVInfo{1744, 1745, "CSActivitySmashEggsMsgReq|SCActivitySmashEggsMsgAck"}
+	ReqAckKVList[1747] = ReqAckKVInfo{1747, 1748, "CSBTFirstRechargeRewardReq|SCBTFirstRechargeRewardAck"}
+	ReqAckKVList[1750] = ReqAckKVInfo{1750, 1751, "CSBTRecharge100RewardReq|SCBTRecharge100RewardAck"}
 }

+ 4 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/ActivitiesBtChargeTaskGoldCfg.csv

@@ -0,0 +1,4 @@
+唯一id,7日累充,每日累充,活动Id,天数
+Id,TaskIds,DailyTaskIds,ActivitiesId,Day
+int,list,list,int,int
+1,,20000;20001;20002;20003;20004,10000,1

+ 4 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/ActivitiesBtChargeTaskRoMoneyCfg.csv

@@ -0,0 +1,4 @@
+唯一id,7日累充,每日累充,活动Id,天数
+Id,TaskIds,DailyTaskIds,ActivitiesId,Day
+int,list,list,int,int
+1,20013;20014;20015;20016;20017;20018;20019;20020;20021;20022;20023;20024,20005;20006;20007;20008;20009;20010;20011;20012,10001,1

+ 5 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/ActivitiesBtFirstChargeCfg.csv

@@ -0,0 +1,5 @@
+唯一id,名称,解锁条件,充值金额,奖励1,价值,奖励2,价值,奖励3,价值
+Id,Name,OpenCondition,RechargeAmount,Reward1,Value1,Reward2,Value2,Reward3,Value3
+int,string,list,list,list,int,list,int,list,int
+1,首充大礼包,11:10013,1;98;328,13152:1;404:30;405:30;406:30,100000,110:5;11:20000;1:50000,70000,513:1;5:50000;1:200000,270000
+2,百元大礼包,,38,5010:1;12140:1;1:50000,1000000,839:1;140:5;1:100000,1000000,13149:1;404:30;405:30;406:30,888888

+ 5 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/BTSmashEggsCfg.csv

@@ -0,0 +1,5 @@
+砸蛋Id,砸蛋名字,消耗道具顺序,砸蛋方式,消耗道具1掉落包,消耗道具1掉落包,保底奖励的累计次数,保底奖励的掉落包,界面排序,可用于表现的道具类型,解锁ID,活动Id,召唤类型,开服时间,召唤组,大奖预览,客户端大奖预览
+Id,Name,Cost,Method,DropId,DropId2,Total,ExtDropId,SortId,ShowItemType,UnLock,ActivitiesId,Type,StartDay,SummoType,Show,ClientShow
+int,string,list,list,int,int,int,int,int,list,int,int,int,int,int,list,list
+2000,金蛋,2:10000,1;5,9005,9005,250,9004,1,7;16;9;21;48,,10002,4,7,2000,1007;1507;2007;3007;4007;5007;6007;7007;8007;9007;513;15042;15043;15044;15045;15046;15047,1007:1;1507:1;2007:1;3007:1;4007:1;5007:1;6007:1;7007:1;8007:1;9007:1;513:1;15042:1;15043:1;15044:1;15045:1;15046:1;15047:1
+2001,彩蛋,54:50,1;5,9007,9007,250,9006,2,7;16;9;21;48,,10002,5,7,2001,1007;1507;2007;3007;4007;5007;6007;7007;8007;9007;513;15042;15043;15044;15045;15046;15047;100;110;15061;,1007:1;1507:1;2007:1;3007:1;4007:1;5007:1;6007:1;7007:1;8007:1;9007:1;513:1;15042:1;15043:1;15044:1;15045:1;15046:1;15047:1;100:100;110:50;15061:1;

+ 16 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/BoliShopCfg.csv

@@ -0,0 +1,16 @@
+商品Id,商品名称,商品所属tab,商品页签,商品内容,消耗资源类型,消耗资源数量,活动商品,是否热销,折扣比例,折扣后价格,限购类型次数,开始时间,结束时间,排序Id,权重概率,VIP权重概率1,VIP权重概率2,VIP权重概率3,VIP权重概率4,是否通知客户端,图片,购买后获得道具,上架解锁条件枚举,波利特权等级显示
+GoodsId,GoodsName,GoodsType,GoodsTypename,GoodsItem,PayForType,PayForNum,HdDrop,SellWell,Proportion,DiscountPayForNum,RestrictedType,BeginTime,EndTime,SortId,Weight,Weight1,Weight2,Weight3,Weight4,NtfClient,GoodsPic,Reward,Condition,BoliVipLevel
+int,string,int,string,int,int,int,int,int,int,int,string,string,string,int,int,int,int,int,int,int,string,list,list,int
+10001,天使之泪,,,100,54,50,,1,,,2:20,,,1,,,,,,,,,,1
+10002,12小时挂机主角经验,,,136,54,300,,,,,2:5,,,2,,,,,,,,,,1
+10003,卡噗酱卡片Ⅰ,,,12193,54,2500,,,,,2:5,,,3,,,,,,,,,,1
+20001,命运绳结,,,110,54,100,,1,,,2:10,,,4,,,,,,,,,,2
+20002,尼德霍格卡片Ⅰ,,,12194,54,2500,,,,,2:5,,,5,,,,,,,,,,2
+20003,职业更换许可证,,,145,54,2000,,,,,,,,6,,,,,,,,,,2
+30001,超级技能书,,,191,54,2500,,,,,,,,7,,,,,,,,,,3
+30002,赤炎魔蛙卡片Ⅰ,,,12195,54,2500,,,,,2:5,,,8,,,,,,,,,,3
+30003,技能徽章,,,200,54,2500,,,,,,,,9,,,,,,,,,,3
+40001,12小时挂机技能经验,,,139,54,300,,,,,2:5,,,10,,,,,,,,,,4
+40002,卡片转移水晶,,,268,54,1000,,,,,2:30,,,11,,,,,,,,,,4
+50001,12小时挂机伙伴经验,,,138,54,300,,,,,2:5,,,12,,,,,,,,,,5
+50002,改名卡,,,106,54,3000,,,,,,,,13,,,,,,,,,,5

+ 10 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/BoliVipCfg.csv

@@ -0,0 +1,10 @@
+波利特权等级,战斗X2加速,Vip道具奖励,Vip升级所需经验,恶魔免费刷新次数,VIP上线提示,宠物进阶消耗免费,卡片重铸免费,宠物分解全额返还,角色技能重置免费,公会狩猎额外次数,一键插卡功能,黑市VIP权重,世界BOSS刮奖次数,额外荣誉之证,时光之力购买次数,银币加成,基础经验加成,伙伴经验加成,技能经验加成,每日礼包购买次数+1,离线挂机时长上限(秒),签到翻倍,世界BOSS购买次数,挂机魔魂值加成,飞艇被抢劫掉落减少至,豪华转盘可使用次数,每日礼包
+Lv,QuickBattle,Reward,VipExp,EvilFreeTimes,VipLogin,PetAdvance,CardReset,PetBreak,SkillReset,GuildBossChallenge,CardInsertion,ShopWeight,WorldBoss,PvpReward,HangupTimes,SilverUp,BaseExpUp,PartnerExpUp,SkillExpUp,GiftBuyTimes,HangupDuration,SignInRewardUp,WorldBossCount,DevilsUp,TransportRobbery,LuxuryPrizeWheelTimes,GiftRewards
+int,int,list,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,list,int,int,int,int,int,int,list
+0,,,500,-1,,0,0,0,0,0,,,,0,,0,0,0,0,,,,,,10000,,
+1,,,2000,-1,,0,1,0,0,0,,,,20,,0,0,0,0,,,,,,9000,,100:5;110:2;531:1
+2,,,10000,-1,,1,1,0,0,0,,,,30,,0,0,0,0,,,,,2,8000,,5:100000;11:100000;1:100000
+3,,,20000,-1,,1,1,0,0,1,,,,40,,0,0,0,0,,,,,2,7000,,531:5;517:3;514:10
+4,,,50000,-1,,1,1,1,0,1,,,,60,,0,0,0,0,,,,,4,6000,,115:10;116:10;117:10
+5,,,80000,-1,,1,1,1,1,1,,,,80,,0,0,0,0,,,,,4,5000,,8007:1;6007:1;7007:1
+6,,,,0,,1,1,1,1,1,,,,100,,0,0,0,0,,,,,6,4000,,48:2000;45:2000;19:50000

+ 4 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/PassCheckCfg.csv

@@ -0,0 +1,4 @@
+等级,价格,自动挑战,时光助力主角经验提升万分比,增加主角属性
+Lv,RMB,Automatic,AddLeadExp,AddAttrLevel
+int,float,int,int,list
+1,12,1,2000,7:1000;11:20;12:20

+ 5 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/PrivilegeCardCfg.csv

@@ -0,0 +1,5 @@
+等级,价格,解锁条件,战斗X2加速,特权每日礼包,充值钱包额度,购买奖励显示
+Lv,RMB,UnlockCond,QuickBattle,Reward,PurseQuota,BuyReward
+int,float,list,int,list,int,list
+1,38,,1,54:100;5:50000;512:5,1000,54:380;26:380
+2,328,11;40001,1,54:300;5:100000;512:10;531:3,-1,54:3280;26:3280

+ 12 - 0
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/PurseShopCfg.csv

@@ -0,0 +1,12 @@
+礼包Id,礼包名字,类型,价格,购买后获得道具,首次购买奖励,购买额外获得,限购类型次数,排序Id,累计充值金额
+Id,Name,Type,RMB,Reward,FirstBuyReward,ExtraBuyReward,RestrictedType,SortId,RmbTotalPay
+int,string,int,float,list,list,list,int,int,int
+1,1000金币,5,1,2:1000,2:1000,2:100,9999,1,
+2,3万金币,5,30,2:30000,2:30000,2:3000,9999,3,
+3,9.8万金币,5,98,2:98000,2:98000,2:9800,9999,4,
+4,12.8万金币,5,128,2:128000,2:128000,2:12800,9999,5,
+5,32.8万金币,5,328,2:328000,2:328000,2:32800,9999,6,
+6,64.8万金币,5,648,2:648000,2:648000,2:64800,9999,7,
+7,100万金币,5,1000,2:1000000,2:1000000,2:100000,9999,8,
+8,200万金币,5,2000,2:2000000,2:2000000,2:200000,9999,9,
+9,500万金币,5,5000,2:5000000,2:5000000,2:500000,9999,10,

+ 39 - 2
RO_Server_Trunk-branch_0.1.39/roserver/db/model/orm_activity.go

@@ -12,6 +12,9 @@ const (
 	RoleActivityDataSignPrefix = "role_activity_sign_" //基础结构数据
 	//当前开放的活动列表
 	RoleActivityDataOpenListPrefix = "role_activity_openlist_"
+
+	//砸蛋大奖消息
+	RoleActivitySmashEggsPrefix = "role_activity_smasheggs_"
 )
 
 func GetRoleActivityDataFromRedis(uid uint64, roleActivity *serverproto.RoleActivity) error {
@@ -59,6 +62,13 @@ func GetRoleActivityDataFromRedis(uid uint64, roleActivity *serverproto.RoleActi
 		}
 	}
 
+	//砸蛋大奖消息获取
+	smashEggsMsg := &serverproto.SSActivitySmashEggsMsgSaveNtf{}
+	err = model.GetMessageFromRedis(RoleActivitySmashEggsPrefix, "", smashEggsMsg)
+	if err == nil {
+		roleActivity.ActMsgList = smashEggsMsg.ActMsgList
+	}
+
 	//正常流程处理
 	retList := service.GetRedis().SMembers(RoleActivityDataOpenListPrefix + uidStr).Val()
 	for idx := 0; idx < len(retList); idx++ {
@@ -93,13 +103,33 @@ func GetRoleActivityDataFromRedis(uid uint64, roleActivity *serverproto.RoleActi
 				if err == nil {
 					detailData.FortnightDays.TaskList = append(detailData.FortnightDays.TaskList, taskInfo)
 				}
-			}
-			if detailData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_King) {
+			} else if detailData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_King) {
 				taskInfo := &serverproto.TaskData{}
 				err = model.GetDecodeMessage(taskInfo, msgStr)
 				if err == nil {
 					detailData.KingTask = append(detailData.KingTask, taskInfo)
 				}
+			} else if detailData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_BT_ROCoinRecharge) {
+				//BT task data
+				if detailData.BtRocoinData == nil {
+					detailData.BtRocoinData = &serverproto.ActivityBTROCoin{}
+				}
+				taskInfo := &serverproto.TaskData{}
+				err = model.GetDecodeMessage(taskInfo, msgStr)
+				if err == nil {
+					if taskInfo.TaskType == int32(model.BTTaskRefreshType_Day) {
+						detailData.BtRocoinData.DailyTaskList = append(detailData.BtRocoinData.DailyTaskList, taskInfo)
+					} else if taskInfo.TaskType == int32(model.BTTaskRefreshType_Week) {
+						detailData.BtRocoinData.WeekTaskList = append(detailData.BtRocoinData.WeekTaskList, taskInfo)
+					}
+				}
+			} else if detailData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_BT_ZhenJiaRecharge) {
+				// BT task data
+				taskInfo := &serverproto.TaskData{}
+				err = model.GetDecodeMessage(taskInfo, msgStr)
+				if err == nil {
+					detailData.BtZhenjiaRechargeTaskList = append(detailData.BtZhenjiaRechargeTaskList, taskInfo)
+				}
 			}
 
 		}
@@ -158,3 +188,10 @@ func SetRoleActivityDataToRedis(uid uint64, msg *serverproto.SSActivityDataSaveR
 		}
 	}
 }
+
+func SetRoleActivitySmashEggsMsgToRedis(msg *serverproto.SSActivitySmashEggsMsgSaveNtf) {
+	err := model.SetMessageToRedis(RoleActivitySmashEggsPrefix, "", msg)
+	if err != nil {
+		util.InfoF("SSActivityDataSaveReqSign save err=%v", err)
+	}
+}

+ 58 - 0
RO_Server_Trunk-branch_0.1.39/roserver/db/model/orm_helper.go

@@ -119,6 +119,11 @@ const (
 	InvitationNumberPrefix     = "invi_num_"      //生成邀请码的key
 	RoleInvitationPrefix       = "role_invi_"     //个人数据
 	RoleInvitationLogPrefix    = "role_invi_log_"
+
+	//bt
+	RoleBTDataPrefix     = "role_bt_"
+	RoleBTBoliDataPrefix = "btboli"
+	RoleBTBaseDataPrefix = "base"
 )
 
 func ConfigInit() {
@@ -494,6 +499,10 @@ func GetRoleFromRedis(uid uint64, ack *serverproto.SSGetRoleAck, RoleRegisterTim
 	//util.InfoF("msgDatalen1=%v head", newLen-oldLen)
 	//oldLen = newLen
 
+	//BT 数据
+	ack.Role.RoleBt = &serverproto.RoleBT{}
+	GetBTDataFromRedis(uid, ack.Role.RoleBt)
+
 	return nil
 }
 
@@ -2628,3 +2637,52 @@ func SetRoleCrossYuanHangLogToRedis(msg *serverproto.SSCrossYuanHangTrialLogNtf)
 		}
 	}
 }
+
+//bt
+// bt服务版本数据保存
+func SetBTDataToRedis(uid uint64, msg *serverproto.SSBTDataSaveNtf) {
+	uidStr := strconv.FormatUint(uid, 10)
+	keyStr := RoleBTDataPrefix + uidStr
+	if msg.BtBoliData != nil {
+		err, msgData := model.GetEncodeMessage(msg.BtBoliData)
+		if err != nil {
+			return
+		}
+		_, err1 := service.GetRedis().HSet(keyStr, RoleBTBoliDataPrefix, msgData).Result()
+		if err1 != nil {
+			util.WarnF("uid=%v SetBTDataToRedis-BtBoliData fieldStr=%v err=%v", uid, RoleBTBoliDataPrefix, err1)
+		}
+	}
+	if msg.BaseData != nil {
+		err, msgData := model.GetEncodeMessage(msg.BaseData)
+		if err != nil {
+			return
+		}
+		_, err1 := service.GetRedis().HSet(keyStr, RoleBTBaseDataPrefix, msgData).Result()
+		if err1 != nil {
+			util.WarnF("uid=%v SetBTDataToRedis-BTBaseData fieldStr=%v err=%v", uid, RoleBTBaseDataPrefix, err1)
+		}
+	}
+}
+func GetBTDataFromRedis(uid uint64, msg *serverproto.RoleBT) {
+	uidStr := strconv.FormatUint(uid, 10)
+	keyStr := RoleBTDataPrefix + uidStr
+
+	msgStr, err := service.GetRedis().HGet(keyStr, RoleBTBoliDataPrefix).Result()
+	if err == nil {
+		msg.BoliData = &serverproto.BTBoliData{}
+		err = model.GetDecodeMessage(msg.BoliData, msgStr)
+		if err != nil {
+			util.ErrorF("uid=%v GetBTDataFromRedis error=%v", uid, err)
+		}
+	}
+
+	msgStr, err = service.GetRedis().HGet(keyStr, RoleBTBaseDataPrefix).Result()
+	if err == nil {
+		msg.BaseData = &serverproto.BTBaseData{}
+		err = model.GetDecodeMessage(msg.BaseData, msgStr)
+		if err != nil {
+			util.ErrorF("uid=%v GetBTDataFromRedis error=%v", uid, err)
+		}
+	}
+}

+ 15 - 0
RO_Server_Trunk-branch_0.1.39/roserver/db/model/role_msg.go

@@ -383,6 +383,12 @@ func init() {
 
 		SetRoleActivityDataToRedis(cliId.SessID, msg)
 	})
+	serverproto.Handle_DB_SSActivitySmashEggsMsgSaveNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.SSActivitySmashEggsMsgSaveNtf)
+		//util.DebugF("uid=%v SSActivityDataSaveReq msg=%v", cliId.SessID, msg)
+
+		SetRoleActivitySmashEggsMsgToRedis(msg)
+	})
 
 	//competition
 	serverproto.Handle_DB_SSCompetitionSaveReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
@@ -898,4 +904,13 @@ func init() {
 		}
 	})
 
+	// bt
+	// 波利商城
+	serverproto.Handle_DB_SSBTDataSaveNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.SSBTDataSaveNtf)
+		//util.DebugF("uid=%v SSFashionDataSaveReq msg=%v", cliId.SessID, msg)
+
+		SetBTDataToRedis(cliId.SessID, msg)
+	})
+
 }

+ 3 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/activity_manager.go

@@ -19,6 +19,9 @@ type ActivitiesManager struct {
 	RoleSystemActList  map[int32]*model.ConvertActivitiesData //根据玩家开启系统决定活动开启时间
 	//过期后的活动是否强制开启(之前没有开启过,只针对相对开服时间开启的活动类型,立即开启)
 	ExpiredActivitiesList map[int32]*model.ConvertActivitiesData
+
+	//砸蛋大奖记录
+	SmashEggsMsgList []*serverproto.SystemMessage
 }
 
 func newActivitiesMag() *ActivitiesManager {

+ 1 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/def.go

@@ -88,6 +88,7 @@ const (
 	SystemmessageType_ActivityWheel    SystemMessageType = 14 //活动转盘
 	SystemmessageType_GuildDemon	   SystemMessageType = 15 //公会魔王播报
 	SystemmessageType_Idol			   SystemMessageType = 16 //偶像季播报
+	SystemmessageType_SmashEggs        SystemMessageType = 17 // BT砸蛋活动
 )
 
 type BattleResultType int32

+ 3 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/item_effect.go

@@ -30,6 +30,9 @@ func init() {
 	addItemEffectHandler(serverproto.ResType_Res_CashTicket, new(ItemEffectCommonRes))
 	addItemEffectHandler(serverproto.ResType_Res_PetLevelUP_Exp, new(ItemEffectCommonRes))
 	addItemEffectHandler(serverproto.ResType_Res_HightSkillExp, new(ItemEffectCommonRes))
+	addItemEffectHandler(serverproto.ResType_Res_CreditRecharge, new(ItemEffectCommonRes))
+	addItemEffectHandler(serverproto.ResType_Res_ROCoin, new(ItemEffectCommonRes))
+	addItemEffectHandler(serverproto.ResType_Res_BoliShopExp, new(ItemEffectCommonRes))
 }
 
 func addItemEffectHandler(effectType serverproto.ResType, effect ItemEffect) {

+ 264 - 50
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role.go

@@ -56,7 +56,7 @@ type RoleOuter interface {
 	GetClientIP() string
 }
 
-//逻辑操作主接口(可以按照每个系统设定一个接口)
+// 逻辑操作主接口(可以按照每个系统设定一个接口)
 type RoleLogicOuter interface {
 	AddMoney(st AddItemST, add bool)
 	AddBaseExp(st AddItemST) bool
@@ -260,6 +260,8 @@ type RoleLogicOuter interface {
 	ActivitySummon(activityId, summonCount int32)
 	ActivitySignIn(activityId int32)
 	SetCollectionNotice(activityId int32, CollectId int32, notice bool)
+	ActivitySmashEggs(activityId, drawType, drawCount int32)
+	ActivitySmashEggsMsg(activityId, drawType int32)
 
 	//invitation
 	InvitationNumberGet()
@@ -377,7 +379,7 @@ type CrossLogicOuter interface {
 	TopTowerForceWinReq(fightIdx int32)
 }
 
-////全局跨服地图相关
+// //全局跨服地图相关
 type RoleCrossMapRouter interface {
 	PlayerEnterMap(msg *serverproto.CSGCrossPlayerEnterMapReq)
 	PlayerLeave(msg *serverproto.CSGCrossPlayerLeaveMapReq)
@@ -388,6 +390,31 @@ type RoleCrossMapRouter interface {
 	GetPlayerMapShowInfo() *serverproto.PlayerShowInfo
 }
 
+// // bt服务器版本使用
+type RoleBTRouter interface {
+	// 充值钱包商店购买(假钱购买)
+	PayInfoGetForCreditRecharge(goodsId, count int32)
+	// 特权卡商店每日礼包领取
+	SpecialPrivilegeReward()
+	// 充值钱包商店,Ro币礼包商店
+	GetBTShopInfo(shopType int32, subShop int32)
+	// Ro币礼包商店购买(消耗RO币)
+	PayInfoGetForRoCoin(goodsId, count int32)
+
+	// 获取爬塔馈赠奖励
+	GetTowerLevelDayReward()
+
+	// 波利商城
+	BoliShopInfo()
+	BoliLevelUp(num int32)
+	BoliReward(RewardLevel, idx int32)
+	BoliShopBuy(goodsId, num int32)
+
+	//超值首充 & 百元大礼包
+	FirstRechargeReward(rewardIdx int32)
+	Recharge100Reward()
+}
+
 type RoleSaveObject interface {
 	Load(msg interface{}) bool
 	Save()
@@ -401,7 +428,7 @@ const (
 	SKILL_EQUIP_SLOT_TYPE_NUM = Skill_Equip_Type_Max - 1
 )
 
-//任务唯一id
+// 任务唯一id
 var timeWheelKeyUid uint64 = 1
 
 type SaveObject struct {
@@ -501,6 +528,7 @@ type Role struct {
 	roleBattleAttr  *RoleBattleAttr //战斗属性计算,每个玩法的属性都放到该类中处理
 	roleHead        *RoleHead       // 称号数据
 	roleWish        *RoleWishBox    // 许愿箱
+	roleBT          *RoleBT         // bt版本数据
 
 	saveTimer    util.DurationTimer //保存数据定时器
 	offlineTimer util.OnceTimer     //离线定时器
@@ -578,6 +606,7 @@ func (this *Role) Init() {
 	this.roleSkillEquip = newRoleSkillEquip(this)
 	this.roleHead = newRoleHead(this)
 	this.roleWish = newRoleWish(this)
+	this.roleBT = newRoleBT(this)
 
 	this.soList = append(this.soList,
 		this.base,
@@ -614,6 +643,7 @@ func (this *Role) Init() {
 		this.roleSkillEquip,
 		this.roleHead,
 		this.roleWish,
+		this.roleBT,
 	)
 }
 
@@ -812,9 +842,9 @@ func (this *Role) GetRoleTask() *RoleTask {
 	return this.roleTask
 }
 
-//func (this *Role) GetRoleFightPower1() *RoleFightPower {
-//	return this.roleFightPower
-//}
+//	func (this *Role) GetRoleFightPower1() *RoleFightPower {
+//		return this.roleFightPower
+//	}
 func (this *Role) GetRoleActivity() *RoleActivity {
 	return this.roleActivity
 }
@@ -853,6 +883,9 @@ func (this *Role) GetRoleCross() *RoleCross {
 func (this *Role) GetRoleRush() *RoleRush {
 	return this.roleRush
 }
+func (this *Role) GetRoleBT() *RoleBT {
+	return this.roleBT
+}
 
 func (this *Role) SetCreateData(msg *serverproto.CSCreateRoleReq) {
 	this.base.roleBase.Sex = msg.Sex
@@ -919,7 +952,7 @@ func (this *Role) BanRole(isBan bool, banTime uint64, cheatType int32) {
 	}
 }
 
-//禁言
+// 禁言
 func (this *Role) BanRoleChat(isBan bool, banTime uint64, cheatType int32) {
 	if this.GetRoleBase().roleBase == nil {
 		util.InfoF("BanRole isBan=%v err=rolebase is nil", isBan)
@@ -957,7 +990,7 @@ func (this *Role) BanRoleChat(isBan bool, banTime uint64, cheatType int32) {
 	}
 }
 
-//来自gmweb的删除背包道具操作
+// 来自gmweb的删除背包道具操作
 func (this *Role) WebGMDelItem(delItemList []*serverproto.KeyValueType) {
 	util.InfoF("uid=%v WebGMDelItem delitemlist=%v", this.uuid, delItemList)
 
@@ -1173,6 +1206,8 @@ func (this *Role) DailyReset(notify bool) {
 	this.roleHead.DailyReset(notify)
 
 	this.roleCompetition.DailyReset(notify)
+
+	this.roleBT.DailyReset(notify, oldDailyResetTimeStamp)
 	//最后重置,切记!
 	this.GetRoleBase().DailyReset(notify)
 }
@@ -1194,7 +1229,7 @@ func (this *Role) FuncDisable() bool {
 	return false
 }
 
-//推送客户端启动时需要的信息,例如基本信息,背包信息等
+// 推送客户端启动时需要的信息,例如基本信息,背包信息等
 func (this *Role) StartupProto() {
 	nowTime := util.GetTimeMilliseconds()
 	startUpTime := service.GetServiceStartupTime()
@@ -1273,6 +1308,10 @@ func (this *Role) StartupProto() {
 	//this.roleFightPower.CopyData(ntfMsg.RoleFightpower)
 	this.roleBattleAttr.CopyData(ntfMsg.RoleFightpower)
 
+	// BT
+	ntfMsg.RoleBt = &serverproto.RoleBT{}
+	this.roleBT.CopyData(ntfMsg.RoleBt)
+
 	//RobotMode 1:机器人模式 2:无法注册 3:关闭付费功能
 	ntfMsg.FuncDisable = this.FuncDisable()
 
@@ -1341,7 +1380,7 @@ func (this *Role) StartupProto() {
 	this.CombineServerNtf()
 }
 
-//上线处理
+// 上线处理
 func (this *Role) onlineProcess(bRelogin bool) {
 	//清空缓存列表
 	this.reqAckConfirmList = map[uint32][]uint32{}
@@ -1489,14 +1528,14 @@ func (this *Role) AddCruise(st AddItemST, add bool) bool {
 	return true
 }
 
-//增加角色基础经验
+// 增加角色基础经验
 func (this *Role) AddBaseExp(st AddItemST) bool {
 	//添加属性涉及到升级操作(自动升级)
 	this.base.AddBaseExp(st)
 	return true
 }
 
-//增加职业经验
+// 增加职业经验
 func (this *Role) AddJobExp(st AddItemST) bool {
 	this.base.AddJobExp(st)
 	return false
@@ -1508,17 +1547,31 @@ func (this *Role) GetJobLevel() int32 {
 	return this.GetRoleBase().GetRoleJobLevel()
 }
 
-//创建角色开始的累计充值
+// 创建角色开始的累计充值
 func (this *Role) GetTotalRecharge() float32 {
 	return this.GetRoleBase().GetRoleTotalRecharge()
 }
 
-//每日累计充值
+// 每日累计充值
 func (this *Role) GetDayRecharge() float32 {
 	return this.GetRoleBase().roleBase.DayRecharge
 }
 
-//添加通用资源
+// bt每日累计充值(真累计充值+假累计充值)
+func (this *Role) GetBTDayRecharge() float32 {
+	return this.GetBTZhenDayRecharge() + this.GetBTJiaDayRecharge()
+}
+func (this *Role) GetBTZhenDayRecharge() float32 {
+	return this.GetRoleBase().roleBase.BtZhenDayRecharge
+}
+func (this *Role) GetBTJiaDayRecharge() float32 {
+	return float32(this.GetRoleBase().roleBase.BtJiaDayRecharge)
+}
+func (this *Role) GetBTJiaTotalRecharge() uint64 {
+	return this.GetRoleBase().roleBase.BtJiaTotalRecharge
+}
+
+// 添加通用资源
 func (this *Role) addCommonRes(resType int32, st AddItemST, add bool) {
 	this.base.AddCommonRes(resType, st, add)
 }
@@ -1565,7 +1618,14 @@ func (this *Role) AddRes(resType int32, st AddItemST, add bool) {
 	case serverproto.ResType_Res_HightSkillExp:
 		fallthrough
 	case serverproto.ResType_Res_PetLevelUP_Exp:
+		fallthrough
+	case serverproto.ResType_Res_CreditRecharge:
+		fallthrough
+	case serverproto.ResType_Res_ROCoin:
+		fallthrough
+	case serverproto.ResType_Res_BoliShopExp:
 		this.addCommonRes(resType, st, add)
+
 	case serverproto.ResType_Res_RushMap:
 		this.GetRoleBattle().OnRushMapScoreChange(st.ItemCount, 0)
 	default:
@@ -1613,6 +1673,12 @@ func (this *Role) GetResNum(resId int32) uint64 {
 	case serverproto.ResType_Res_HightSkillExp:
 		fallthrough
 	case serverproto.ResType_Res_PetLevelUP_Exp:
+		fallthrough
+	case serverproto.ResType_Res_CreditRecharge:
+		fallthrough
+	case serverproto.ResType_Res_ROCoin:
+		fallthrough
+	case serverproto.ResType_Res_BoliShopExp:
 		return uint64(this.getCommonResNum(resId))
 	//背包中
 	case serverproto.ResType_Res_SkillBook:
@@ -1686,7 +1752,7 @@ func (this *Role) DelItem(configId int32, count int32, delFrom AddItemST) {
 	}
 }
 
-//根据给定的道具动态ID(创建道具时生成的唯一ID)做删除操作
+// 根据给定的道具动态ID(创建道具时生成的唯一ID)做删除操作
 func (this *Role) DelItemByList(itemIdList []uint64, delFrom AddFromType) {
 	if this.roleBag == nil {
 		return
@@ -1742,8 +1808,8 @@ func (this *Role) OnlineTimeReward() {
 	}
 }
 
-//获取当前累计充值所属档位
-//玩家累计充值金额档位1:[0-100] 2:(100,1000] 3:(1000,10000]
+// 获取当前累计充值所属档位
+// 玩家累计充值金额档位1:[0-100] 2:(100,1000] 3:(1000,10000]
 func (this *Role) GetTotalRechargeTap() int32 {
 	var tmpTap int32 = 0
 	tmpTotalRecharge := int32(this.GetTotalRecharge())
@@ -1832,6 +1898,38 @@ type AddSystemMsg struct {
 	ParaStr      string
 }
 
+func (this *Role) GenSystemMessage(sType SystemMessageType, st AddSystemMsg) *serverproto.SystemMessage {
+	ssMsgNtf := &serverproto.SSSystemMessageNtf{}
+	sysMsg := &serverproto.SystemMessage{
+		Type:     int32(sType),
+		NickName: this.GetNickName(),
+		SendTime: util.GetTimeMilliseconds(),
+	}
+	if st.ParamId > 0 {
+		sysMsg.ParamId = append(sysMsg.ParamId, st.ParamId) //id
+	}
+	if st.ParamCount > 0 {
+		sysMsg.ParamId = append(sysMsg.ParamId, st.ParamCount) //count
+	}
+	if st.AddFromType > 0 {
+		sysMsg.ParamId = append(sysMsg.ParamId, st.AddFromType) //AddFromType
+	}
+	if st.UseItemCfgId > 0 {
+		sysMsg.ParamId = append(sysMsg.ParamId, st.UseItemCfgId) //UseItemCfgId
+	}
+	if len(st.ParamList) > 0 {
+		sysMsg.ParamId = append(sysMsg.ParamId, st.ParamList...)
+	}
+	if sType == SystemmessageType_GuildDemon {
+		sysMsg.NickName = st.ParaStr
+	}
+
+	ssMsgNtf.SysMsg = append(ssMsgNtf.SysMsg, sysMsg)
+
+	//util.InfoF("uid=%v GenSystemMessage type=%v param=%v", this.GetUUid(), sysMsg.Type, sysMsg.ParamId)
+	return sysMsg
+}
+
 func (this *Role) AddSystemMessage(sType SystemMessageType, st AddSystemMsg) {
 	ssMsgNtf := &serverproto.SSSystemMessageNtf{}
 	sysMsg := &serverproto.SystemMessage{
@@ -1863,7 +1961,7 @@ func (this *Role) AddSystemMessage(sType SystemMessageType, st AddSystemMsg) {
 	this.SendSocial(ssMsgNtf)
 }
 
-//分配属性点
+// 分配属性点
 func (this *Role) AddAttrPoint(heroID int32, point interface{}) {
 	ret := this.GetRoleHero().AddAttrPoint(heroID, point)
 	if ret != serverproto.ErrorCode_ERROR_OK {
@@ -1875,12 +1973,12 @@ func (this *Role) AddAttrPoint(heroID int32, point interface{}) {
 	}
 }
 
-//重置属性点
+// 重置属性点
 func (this *Role) ResetAttrPoint(heroID int32) {
 	this.GetRoleHero().ResetAttrPoint(heroID, false)
 }
 
-//增加素质点
+// 增加素质点
 func (this *Role) OnAddQualityPoint(msg *serverproto.CSAddQualityPointReq) {
 	if msg == nil {
 		return
@@ -1892,7 +1990,7 @@ func (this *Role) OnAddQualityPoint(msg *serverproto.CSAddQualityPointReq) {
 	this.ReplayGate(ackMsg, true)
 }
 
-//激活头像
+// 激活头像
 func (this *Role) ActiveHead(headId int32) {
 	ackMsg := &serverproto.SCActiveHeadAck{
 		HeadId: headId,
@@ -1902,7 +2000,7 @@ func (this *Role) ActiveHead(headId int32) {
 	this.ReplayGate(ackMsg, true)
 }
 
-//设置头像
+// 设置头像
 func (this *Role) SetRoleHeadPic(headId int32) {
 	ackMsg := &serverproto.SCSetHeadIdAck{
 		HeadId: headId,
@@ -1946,7 +2044,7 @@ func (this *Role) GetRoleHeadFrameInfo() {
 	this.ReplayGate(ackMsg, true)
 }
 
-//请求头像信息
+// 请求头像信息
 func (this *Role) HeadInfoReq() {
 	this.base.HeadInfoReq()
 }
@@ -1990,8 +2088,8 @@ func (this *Role) SetMapCartoon(id, status int32) {
 	this.ReplayGate(ackMsg, true)
 }
 
-///hero/partner
-//添加伙伴
+// /hero/partner
+// 添加伙伴
 func (this *Role) AddHero(configId int32) bool {
 	if this.roleHero != nil {
 		return this.roleHero.AddHero(configId)
@@ -2106,7 +2204,7 @@ func (this *Role) ChipDecompose(chipList []*serverproto.KeyValueType, heroChipTy
 	}
 }
 
-///equip
+// /equip
 func (this *Role) EquipForge(equipConfigId int32, once int32, equipType, subEquipType int32) {
 	if this.roleEquip != nil {
 		this.roleEquip.EquipForge(equipConfigId, once, equipType, subEquipType)
@@ -2300,7 +2398,7 @@ func (this *Role) GetSkillEquipPool() {
 	}
 }
 
-///card
+// /card
 func (this *Role) CardMount(heroId, subSlotIndex, cardSlotIndex, cardCfgId int32) {
 	if this.roleEquip != nil && this.roleCard != nil {
 		ret := this.base.SlotCardMount(heroId, subSlotIndex, cardSlotIndex, cardCfgId)
@@ -2428,7 +2526,7 @@ func (this *Role) CardUpGrade(msg *serverproto.CSCardUpGradeReq) {
 	this.ReplayGate(ackMsg, true)
 }
 
-///skill
+// /skill
 func (this *Role) SkillReplace(heroId, idx, replaceSkillId int32) {
 	if this.roleSkill != nil {
 		ret := this.roleSkill.SkillReplace(heroId, idx, replaceSkillId, true, true)
@@ -2511,7 +2609,7 @@ func (this *Role) ResetSkillLevel(heroId int32, bsuper bool) {
 	this.ReplayGate(ackMsg, true)
 }
 
-///card 相关
+// /card 相关
 func (this *Role) FashionUp(fashionCfgIdList []int32) {
 	if this.roleFashion != nil {
 		ackMsg := &serverproto.SCFashionUpAck{}
@@ -2631,7 +2729,7 @@ func (this *Role) RedBagShopExchange() {
 	this.ReplayGate(ackMsg, true)
 }
 
-///social相关
+// /social相关
 func (this *Role) playerSocialOnline() {
 	ntfMsg := &serverproto.SSPlayerOnlineNtf{
 		BriefInfo: &serverproto.PlayerBriefInfo{
@@ -2678,6 +2776,12 @@ func (this *Role) playerMapOffline() {
 	}
 }
 
+func (this *Role) playerBattleOffline() {
+	if this.roleBattle != nil {
+		this.roleBattle.FastBattleTimeOffline()
+	}
+}
+
 func (this *Role) SetMapRank(selfRank, totalRanks uint32, topRankList []*serverproto.RankPlayerInfo, addSystemMsg bool) {
 	if this.roleBattle != nil {
 		this.roleBattle.SetMapRank(selfRank, totalRanks, topRankList, addSystemMsg)
@@ -2696,7 +2800,7 @@ func (this *Role) GetQuickBattleReward() {
 	}
 }
 
-//chat
+// chat
 func (this *Role) CheckChatInvalid(targetId uint64, msgType int32, msg *serverproto.CSChatMessageReq) bool {
 	if this.roleChat != nil {
 		ret := this.roleChat.CheckChatInvalid(targetId, msgType, msg)
@@ -2726,8 +2830,8 @@ func (this *Role) GetOfflineMsg(targetId uint64) {
 	}
 }
 
-//mail
-//添加邮件
+// mail
+// 添加邮件
 type AddMailST struct {
 	ConfigId  int32
 	MailType  serverproto.MailType
@@ -2789,7 +2893,7 @@ func (this *Role) MailReward(idList []int32) {
 	}
 }
 
-//打包数据
+// 打包数据
 func (this *Role) PackRoleViewInfo(info *serverproto.ViewRoleInfo) {
 	info.Id = this.uuid
 	info.Brief = &serverproto.CommonPlayerBriefInfo{
@@ -2876,7 +2980,7 @@ func (this *Role) OnSignUp() {
 	this.ReplayGate(ackMsg, true)
 }
 
-//强制引导
+// 强制引导
 func (this *Role) CompulsoryGuidance(storyId, status int32) {
 	ackMsg := &serverproto.SCCompulsoryGuidanceAck{
 		Error: int32(serverproto.ErrorCode_ERROR_FAIL),
@@ -2891,22 +2995,35 @@ func (this *Role) CompulsoryGuidance(storyId, status int32) {
 	this.ReplayGate(ackMsg, true)
 }
 
-//爬塔功能信息
-//请求个人的爬塔信息
+// 爬塔功能信息
+// 请求个人的爬塔信息
 func (this *Role) ClimbingTowerInfoReq() {
 	if this.roleTower != nil {
 		this.roleTower.GetClimbingTowerInfo()
 	}
 }
 
-//查找好友数据
+// 获取试炼馈赠
+func (this *Role) GetTowerLevelDayReward() {
+	if this.roleTower != nil {
+		ret := this.roleTower.GetTowerLevelDayReward()
+		if ret != serverproto.ErrorCode_ERROR_OK {
+			ackMsg := &serverproto.SCClimbingTowerDayRewardAck{
+				Error: int32(ret),
+			}
+			this.ReplayGate(ackMsg, true)
+		}
+	}
+}
+
+// 查找好友数据
 func (this *Role) GetFriendTowerInfo(begin, end int32) {
 	if this.roleTower != nil {
 		this.roleTower.GetFriendTowerRange(begin, end)
 	}
 }
 
-//爬塔开始
+// 爬塔开始
 func (this *Role) ClimbingTowerBegin(towerLevel int32) {
 	ackMsg := &serverproto.SCClimbingTowerBeginAck{
 		Error:      int32(serverproto.ErrorCode_ERROR_FAIL),
@@ -2920,7 +3037,7 @@ func (this *Role) ClimbingTowerBegin(towerLevel int32) {
 	this.ReplayGate(ackMsg, true)
 }
 
-//爬塔结束
+// 爬塔结束
 func (this *Role) ClimbingTowerEnd(towerLevel, loadingTime int32, recordTimeStamp uint64) {
 	ackMsg := &serverproto.SCClimbingTowerEndAck{
 		Error: int32(serverproto.ErrorCode_ERROR_FAIL),
@@ -2981,7 +3098,7 @@ func (this *Role) GetRushTowerRankReward(ssAck *serverproto.SSGetRushRewardAck)
 	this.ReplayGate(ackMsg, true)
 }
 
-//英灵殿冲榜
+// 英灵殿冲榜
 func (this *Role) GetArenaFightCountReward(rushRound int32, rewardType int32) {
 	ackMsg := &serverproto.SCRushActivityRewardAck{
 		Error:      int32(serverproto.ErrorCode_ERROR_FAIL),
@@ -3017,7 +3134,7 @@ func (this *Role) GetRushArenaRankReward(ssAck *serverproto.SSGetRushRewardAck)
 	this.ReplayGate(ackMsg, true)
 }
 
-//宠物冲榜
+// 宠物冲榜
 func (this *Role) GetPetFightCountReward(rushRound int32, rewardType int32) {
 	ackMsg := &serverproto.SCRushActivityRewardAck{
 		Error:      int32(serverproto.ErrorCode_ERROR_FAIL),
@@ -3052,7 +3169,7 @@ func (this *Role) GetRushPetInfo(ackMsg *serverproto.SCPetActivityAck, curRushRo
 	}
 }
 
-//英灵殿冲榜
+// 英灵殿冲榜
 func (this *Role) GetFightCountReward(rushRound int32, rushType int32, rewardType int32) {
 	ackMsg := &serverproto.SCRushActivityRewardAck{
 		Error:      int32(serverproto.ErrorCode_ERROR_FAIL),
@@ -3118,8 +3235,8 @@ func (this *Role) OnGetBattleRecordAck(ssMsg *serverproto.SCPlayerBattleRecordAc
 	this.ReplayGate(ackMsg, true)
 }
 
-//////////////////////////////       公会功能        //////////////////////////////////////
-//创建工会
+// ////////////////////////////       公会功能        //////////////////////////////////////
+// 创建工会
 func (this *Role) CheckBuildGuild(guildName string, guildBadge int32) serverproto.ErrorCode {
 	//检查是否有公会,有就据掉,没有就转GuildServer
 	bRet := this.GetRoleGuild().CanBuildGuild(guildName)
@@ -3147,7 +3264,7 @@ func (this *Role) CheckApplyGuild(guildId uint64) bool {
 	return true
 }
 
-//申请处理
+// 申请处理
 func (this *Role) CheckApplyInfo(msg *serverproto.CSApplyInfoHandleReq) serverproto.ErrorCode {
 	if this.GetRoleGuild().roleGuild.GuildId == 0 {
 		ackMsg := &serverproto.SCApplyInfoHandleAck{
@@ -3400,6 +3517,23 @@ func (this *Role) PayInfoGet(goodsType, goodsId, count int32, rushStage, rushRou
 			util.InfoF("uid=%v free: shop:%v id:%v, count:%v", this.GetUUid(), payOrderInfo.GoodsType, payOrderInfo.GoodsId, payOrderInfo.Count)
 			return
 		}
+		// 按照配置比例获取RO币
+		if model.GlobalRoCoinFactor > 0 {
+			tmpRoCoin := payOrderInfo.Amount * model.GlobalRoCoinFactor
+			payOrderInfo.RewardList = append(payOrderInfo.RewardList, &serverproto.KeyValueType{
+				Key:   int32(serverproto.ResType_Res_ROCoin),
+				Value: int32(tmpRoCoin),
+			})
+		}
+		//给VIP经验
+		if model.GlobalRMBToVipExpRMB > 0 {
+			vipExp := payOrderInfo.Amount * float32(model.GlobalRMBToVipExpVip) / float32(model.GlobalRMBToVipExpRMB)
+			payOrderInfo.RewardList = append(payOrderInfo.RewardList, &serverproto.KeyValueType{
+				Key:   int32(serverproto.ResType_Res_VipExp),
+				Value: int32(vipExp),
+			})
+			//this.role.AddRes(int32(serverproto.ResType_Res_VipExp), AddItemST{ItemCount: int32(vipExp)}, true)
+		}
 
 		if service.GetServiceConfig().Node.AuthMode == AUTHMODE_PC {
 			//内网PC模式下直接购买成功
@@ -3512,8 +3646,27 @@ func (this *Role) payInfoGet(goodsType, goodsId, count int32, rushStage, rushRou
 		if bRet != serverproto.ErrorCode_ERROR_OK {
 			return bRet, nil
 		}
+	case serverproto.PayGoodsType_EPayType_SpecialPrivilege:
+		// 特权卡商店
+		bRet := this.roleRune.BuySpecialPrivilegeShopItem(payRewardInfo)
+		if bRet != serverproto.ErrorCode_ERROR_OK {
+			return bRet, nil
+		}
+	case serverproto.PayGoodsType_EPayType_PassCheck:
+		// RO通行证
+		bRet := this.roleRune.BuyPassCheck(payRewardInfo)
+		if bRet != serverproto.ErrorCode_ERROR_OK {
+			return bRet, nil
+		}
+	case serverproto.PayGoodsType_EPayType_BTRecharge100:
+		// bt百元大礼包充值
+		bRet := this.roleBT.BuyRecharge100(payRewardInfo)
+		if bRet != serverproto.ErrorCode_ERROR_OK {
+			return bRet, nil
+		}
+	default:
+		return serverproto.ErrorCode_ERROR_FAIL, nil
 	}
-
 	return serverproto.ErrorCode_ERROR_OK, payRewardInfo
 }
 
@@ -3581,6 +3734,16 @@ func (this *Role) OnPayCallback(payRewardInfo *serverproto.PayOrderSaveInfo, bSa
 		this.GetRoleRune().RuneUnlock()
 	case serverproto.PayGoodsType_EPayType_RushIdol:
 		this.GetRoleRune().OnBuyIdolSeasonSuccess(payRewardInfo)
+	case serverproto.PayGoodsType_EPayType_SpecialPrivilege:
+		// 特权卡商店
+		this.GetRoleRune().OnBuySpecialPrivilege(payRewardInfo)
+	case serverproto.PayGoodsType_EPayType_PassCheck:
+		// RO通行证
+		this.GetRoleRune().OnBuyPassCheck(payRewardInfo)
+	case serverproto.PayGoodsType_EPayType_BTRecharge100:
+		// bt百元大礼包充值
+		this.roleBT.OnBuyRecharge100(payRewardInfo)
+	default:
 	}
 
 	ntfMsg := &serverproto.SCPayForGoodsNtf{}
@@ -3604,7 +3767,40 @@ func (this *Role) OnPayCallback(payRewardInfo *serverproto.PayOrderSaveInfo, bSa
 	}
 }
 
-//GM充值
+func (this *Role) PayInfoGetForCreditRecharge(goodsId, count int32) {
+	err := this.roleRune.BuyCreditRechargeShopItem(goodsId, count)
+	if err != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCCreditRechargeShopItemBuyAck{
+			Error:   int32(err),
+			GoodsId: goodsId,
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+
+// 领取特权卡奖励
+func (this *Role) SpecialPrivilegeReward() {
+	err := this.roleRune.SpecialPrivilegeReward()
+	if err != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCRuneSpecialPrivilegeRewardAck{
+			Error: int32(err),
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+func (this *Role) PayInfoGetForRoCoin(goodsId, count int32) {
+	err := this.roleRune.PayInfoGetForRoCoin(goodsId, count)
+	if err != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCBTRoCoinShopItemBuyAck{
+			GoodsType: Rune_Shop_Type_Bag,
+			SubType:   Rune_BagShop_Type_ROCoin,
+			Error:     int32(err),
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+
+// GM充值
 func (this *Role) GMPay(amount float32) {
 	payRewardInfo := &serverproto.PayOrderSaveInfo{
 		Amount:           amount,
@@ -3671,6 +3867,24 @@ func (this *Role) GetRuneShopInfo(shopType int32, subShop int32) {
 	this.ReplayGate(ackMsg, true)
 }
 
+func (this *Role) GetBTShopInfo(shopType int32, subShop int32) {
+	// 100充值钱包商店
+	// RO币礼包商店
+	ackMsg := &serverproto.SCBTShopInfoAck{
+		ShopType: shopType,
+		SubShop:  subShop,
+	}
+	switch shopType {
+	case Rune_Shop_Type_CreditRecharge: // 充值钱包商店
+		fallthrough
+	case Rune_Shop_Type_Bag: // RO币礼包商店
+		if this.GetRoleRune() != nil {
+			this.GetRoleRune().GetBTShopInfo(shopType, subShop, ackMsg)
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+
 func (this *Role) GetRushShopInfo(msg *serverproto.SSGetRushShopInfoAck) {
 	ackMsg := &serverproto.SCRuneShopInfoAck{
 		ShopType: msg.ShopType,
@@ -3866,7 +4080,7 @@ func (this *Role) OnWishSlotAction(req *serverproto.CSWishSlotReq) {
 	this.ReplayGate(ackMsg, true)
 }
 
-//检查是否在合服期间
+// 检查是否在合服期间
 func (this *Role) CheckInCombinedService() bool {
 	bRet, _ := model.CheckInCombined(this.GetSelectZone())
 

+ 576 - 31
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_activity.go

@@ -93,7 +93,7 @@ func (this *Role) ActivitiesLikability(activityId int32, itemId, likabilityLevel
 	}
 }
 
-//活动转盘
+// 活动转盘
 func (this *Role) ActivityWheelRefresh(activityId int32) {
 	if this.roleActivity == nil {
 		return
@@ -138,7 +138,7 @@ func (this *Role) ActivityWheelClose(activityId int32) {
 	this.ReplayGate(ackMsg, true)
 }
 
-//活动召唤
+// 活动召唤
 func (this *Role) ActivitySummon(activityId, summonCount int32) {
 	if this.roleActivity == nil {
 		return
@@ -152,7 +152,7 @@ func (this *Role) ActivitySummon(activityId, summonCount int32) {
 	}
 }
 
-//活动签到
+// 活动签到
 func (this *Role) ActivitySignIn(activityId int32) {
 	if this.roleActivity == nil {
 		return
@@ -165,7 +165,28 @@ func (this *Role) ActivitySignIn(activityId int32) {
 	this.ReplayGate(ackMsg, true)
 }
 
-//活动逻辑模块
+// 砸蛋活动
+// drawType(蛋种类)
+func (this *Role) ActivitySmashEggs(activityId, drawType, drawCount int32) {
+	if this.roleActivity == nil {
+		return
+	}
+	ret := this.roleActivity.ActivitySmashEggs(activityId, drawType, drawCount)
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCActivitySmashEggsAck{
+			Error: int32(ret),
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+func (this *Role) ActivitySmashEggsMsg(activityId, drawType int32) {
+	if this.roleActivity == nil {
+		return
+	}
+	this.roleActivity.ActivitySmashEggsMsg(activityId, drawType)
+}
+
+// 活动逻辑模块
 type RoleActivityOuter interface {
 	GetSignUpInfo()
 	OnSignUp()
@@ -235,6 +256,10 @@ func (this *RoleActivity) Load(msg interface{}) bool {
 			this.signInfo = proRole.RoleActivity.SignInfo
 		}
 
+		if len(ActivitiesMag.SmashEggsMsgList) <= 0 {
+			ActivitiesMag.SmashEggsMsgList = proRole.RoleActivity.ActMsgList
+		}
+
 		//充值
 		this.firstChargeTime = proRole.RoleActivity.FirstChargeTime
 		this.firstChargeRewardStat = proRole.RoleActivity.FirstChargeRewardState
@@ -257,7 +282,6 @@ func (this *RoleActivity) Load(msg interface{}) bool {
 			tmpData := proRole.RoleActivity.ActivityDataList[idx]
 			this.activityDataList[tmpData.ActivitiesId] = tmpData
 		}
-
 		for _, tmpData := range this.activityDataList {
 			convertData, ok := model.ConvertActivitiesList[tmpData.ActivitiesId]
 			if !ok {
@@ -308,6 +332,15 @@ func (this *RoleActivity) Load(msg interface{}) bool {
 					tmpTaskList[tmpTask.TaskId] = tmpTask
 				}
 			}
+			//BT任务列表
+			if len(tmpData.BtZhenjiaRechargeTaskList) > 0 {
+				this.loadActivityTaskData(tmpData.ActivitiesId, tmpData.BtZhenjiaRechargeTaskList)
+			}
+			if tmpData.BtRocoinData != nil {
+				this.loadActivityTaskData(tmpData.ActivitiesId, tmpData.BtRocoinData.DailyTaskList)
+				this.loadActivityTaskData(tmpData.ActivitiesId, tmpData.BtRocoinData.WeekTaskList)
+			}
+
 			//特殊处理嘉年华活动时间bug, 使用活动类型判断
 			if tmpData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_Acitivty_Shop) {
 				tmpData.StartTime = uint64(convertData.CalStartTime.UnixNano() / 1e6)
@@ -350,6 +383,27 @@ func (this *RoleActivity) Load(msg interface{}) bool {
 	}
 	return true
 }
+
+// load时初始化任务类型数据
+func (this *RoleActivity) loadActivityTaskData(activityId int32, taskDataList []*serverproto.TaskData) {
+	if len(taskDataList) <= 0 {
+		return
+	}
+
+	tmpTaskList, ok := this.activitiesTaskList[activityId]
+	if !ok {
+		tmpTaskList = map[uint32]*serverproto.TaskData{}
+		this.activitiesTaskList[activityId] = tmpTaskList
+	}
+	for idx := 0; idx < len(taskDataList); idx++ {
+		tmpTask := taskDataList[idx]
+		_, ok := model.ConvertActivitiesTaskList[int32(tmpTask.TaskId)]
+		if !ok {
+			continue
+		}
+		tmpTaskList[tmpTask.TaskId] = tmpTask
+	}
+}
 func (this *RoleActivity) addHasDelActivityList(activityId int32, param string) {
 	for idx := 0; idx < len(this.hasDelActivityList); idx++ {
 		if this.hasDelActivityList[idx] == activityId {
@@ -425,6 +479,7 @@ func (this *RoleActivity) Save() {
 					CollectionList:  activityInfo.CollectionList,
 					//FightingTarget:  activityInfo.FightingTarget,
 					ExchangeList: activityInfo.ExchangeList,
+					//BtZhenjiaRechargeTaskList: activityInfo.BtZhenjiaRechargeTaskList,
 				}
 				if activityInfo.FortnightDays != nil {
 					saveDetail.ActivityData.FortnightDays = &serverproto.ActivitiesFortnightDays{
@@ -442,6 +497,11 @@ func (this *RoleActivity) Save() {
 				if activityInfo.LikabilityData != nil {
 					saveDetail.ActivityData.LikabilityData = activityInfo.LikabilityData
 				}
+				if activityInfo.BtRocoinData != nil {
+					saveDetail.ActivityData.BtRocoinData = &serverproto.ActivityBTROCoin{
+						WeekDayEndTime: activityInfo.BtRocoinData.WeekDayEndTime,
+					}
+				}
 			} else {
 				taskInfo := this.getTaskData(actId, taskId)
 				if taskInfo == nil {
@@ -477,7 +537,7 @@ func (this *RoleActivity) ActivityHDRuneGoodsAdd(activityId int32) uint64 {
 	return 0
 }
 
-//活动道具掉落
+// 活动道具掉落
 func (this *RoleActivity) ActivityHDItemCheck(configId int32, cfgItemData *serverproto.ItemCfg) int32 {
 	for _, val := range this.activityDataList {
 		if cfgData, ok := model.ConvertActivitiesList[val.ActivitiesId]; ok {
@@ -494,7 +554,7 @@ func (this *RoleActivity) ActivityHDItemCheck(configId int32, cfgItemData *serve
 	return 0
 }
 
-//检查是否需要切换循环
+// 检查是否需要切换循环
 func (this *RoleActivity) CheckNewCircle() bool {
 	//判定是否是同一轮大循环
 	if this.signInfo.SignRound == 0 {
@@ -521,7 +581,7 @@ func (this *RoleActivity) CheckNewCircle() bool {
 	return true
 }
 
-//检查是否新的周期
+// 检查是否新的周期
 func (this *RoleActivity) ChangeSignUpInfo() bool {
 	//重置小周期数据
 	var nextBeginDay int32
@@ -543,7 +603,7 @@ func (this *RoleActivity) ChangeSignUpInfo() bool {
 	return true
 }
 
-//请求签到
+// 请求签到
 func (this *RoleActivity) SignUp(ackMsg *serverproto.SCSignUpAck) serverproto.ErrorCode {
 	//今日是否签到
 	if this.signInfo.CurSignInfo.LastSign != 0 && this.signInfo.CurSignInfo.LastSign > int64(util.GetCurrentTime()) {
@@ -606,7 +666,7 @@ func (this *RoleActivity) SignUp(ackMsg *serverproto.SCSignUpAck) serverproto.Er
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-//获得下一次签到天
+// 获得下一次签到天
 func (this *RoleActivity) GetCurSignDay() int32 {
 	nextBegin := this.signInfo.CurDay + 1
 	_, ok := model.ConvertSignUpData[nextBegin]
@@ -621,7 +681,7 @@ func (this *RoleActivity) GetCurSignDay() int32 {
 	return nextBegin
 }
 
-//gm命令
+// gm命令
 func (this *RoleActivity) SetSignDay(day int32, sec int32) {
 	if this.signInfo != nil {
 		this.signInfo.CurDay = day
@@ -632,7 +692,7 @@ func (this *RoleActivity) SetSignDay(day int32, sec int32) {
 	}
 }
 
-////精彩活动
+// //精彩活动
 func (this *RoleActivity) DailyReset(notify bool) {
 	nowTime := util.GetTimeMilliseconds()
 
@@ -749,6 +809,14 @@ func (this *RoleActivity) DailyReset(notify bool) {
 				}
 				this.SetDirty(true)
 			}
+		case int32(serverproto.EActivityType_EActivityType_BT_ROCoinRecharge):
+			fallthrough
+		case int32(serverproto.EActivityType_EActivityType_BT_ZhenJiaRecharge):
+			//未领取的奖励隔天重置时通过邮件发送
+			this.getAllActivityReward(val)
+			val.CurDay = tmpCurDay
+			this.resetBTTasks(val)
+			this.SetDirty(true)
 		default:
 			val.CurDay = tmpCurDay
 			this.SetDirty(true)
@@ -846,9 +914,13 @@ func (this *RoleActivity) copyActivityDetailData(src, dst *serverproto.Activitie
 	}
 
 	dst.LikabilityData = src.LikabilityData
+
+	// bt
+	dst.BtRocoinData = src.BtRocoinData
+	dst.BtZhenjiaRechargeTaskList = src.BtZhenjiaRechargeTaskList
 }
 
-//开启新活动
+// 开启新活动
 func (this *RoleActivity) OpenNewActivities(convertData *model.ConvertActivitiesData, ms uint64, notify bool) (bool, *serverproto.ActivitiesDetailData) {
 	tmpActivityData, bFind := this.activityDataList[convertData.Id]
 	if bFind {
@@ -966,6 +1038,18 @@ func (this *RoleActivity) OpenNewActivities(convertData *model.ConvertActivities
 	case int32(serverproto.EActivityType_EActivityType_SignIn):
 		tmpActivityData.SignData = &serverproto.ActivitySignIn{}
 		tmpActivityData.SignData.NextSignTime = util.GetLatest5Hour() - 24*3600*1000
+
+	// bt服RO币每日累计充值
+	case int32(serverproto.EActivityType_EActivityType_BT_ROCoinRecharge):
+		tmpActivityData.CurDay = util.GetDurationDay2(tmpActivityData.StartTime, ms)
+		tmpActivityData.BtRocoinData = &serverproto.ActivityBTROCoin{
+			WeekDayEndTime: util.GetLatest5Hour() + 6*DayMS,
+		}
+		this.resetBTTasks(tmpActivityData)
+	// bt服真假累计充值活动
+	case int32(serverproto.EActivityType_EActivityType_BT_ZhenJiaRecharge):
+		tmpActivityData.CurDay = util.GetDurationDay2(tmpActivityData.StartTime, ms)
+		this.resetBTTasks(tmpActivityData)
 	}
 	this.activityDataList[convertData.Id] = tmpActivityData
 	this.addChangeActivity(convertData.Id, 0)
@@ -1113,6 +1197,10 @@ func (this *RoleActivity) getAllActivityReward(activityData *serverproto.Activit
 		//activityData.KingTask = activityData.KingTask[:0]
 	case int32(serverproto.EActivityType_EActivityType_Daily_Cum_Recharge):
 		this.getAllActivityRewardCurRecharge(activityData)
+	case int32(serverproto.EActivityType_EActivityType_BT_ROCoinRecharge):
+		this.getAllActivityRewardBTRoCoinRecharge(activityData)
+	case int32(serverproto.EActivityType_EActivityType_BT_ZhenJiaRecharge):
+		this.getAllActivityRewardBTZhenJiaRecharge(activityData)
 	}
 }
 func (this *RoleActivity) getAllActivityRewardCurRecharge(activityData *serverproto.ActivitiesDetailData) {
@@ -1279,7 +1367,7 @@ func (this *RoleActivity) getAllActivityReward14DaysTask(activityData *serverpro
 	}
 }
 
-//isDaily=false表示成长任务 true表示每日挑战任务
+// isDaily=false表示成长任务 true表示每日挑战任务
 func (this *RoleActivity) addDayTask(activitiesId int32, taskId uint32, day int32, isDaily bool, tmpCurDay int32) *serverproto.TaskData {
 	convertData, ok := model.ConvertActivitiesTaskList[int32(taskId)]
 	if !ok {
@@ -1409,6 +1497,21 @@ func (this *RoleActivity) TaskCheck(taskType serverproto.TaskType, count int32)
 						tmpNtfData.FortnightDays.TaskScoreReward = activityData.FortnightDays.TaskScoreReward
 					}
 					tmpNtfData.FortnightDays.TaskList = append(tmpNtfData.FortnightDays.TaskList, taskInfo)
+				} else if activityData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_BT_ZhenJiaRecharge) {
+					// BT task data
+					tmpNtfData.BtZhenjiaRechargeTaskList = append(activityData.BtZhenjiaRechargeTaskList, taskInfo)
+				} else if activityData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_BT_ROCoinRecharge) {
+					// BT task data
+					if tmpNtfData.BtRocoinData == nil {
+						tmpNtfData.BtRocoinData = &serverproto.ActivityBTROCoin{
+							WeekDayEndTime: activityData.BtRocoinData.WeekDayEndTime,
+						}
+					}
+					if taskInfo.TaskType == int32(model.BTTaskRefreshType_Day) {
+						tmpNtfData.BtRocoinData.DailyTaskList = append(tmpNtfData.BtRocoinData.DailyTaskList, taskInfo)
+					} else {
+						tmpNtfData.BtRocoinData.WeekTaskList = append(tmpNtfData.BtRocoinData.WeekTaskList, taskInfo)
+					}
 				}
 				this.SetDirty(true)
 			}
@@ -1430,7 +1533,7 @@ func (this *RoleActivity) TaskCheck(taskType serverproto.TaskType, count int32)
 	}
 }
 
-//充值类活动处理
+// 充值类活动处理
 func (this *RoleActivity) taskCheckRecharge(ntfMsg *serverproto.SCActivitiesChangeNtf) {
 	//百元礼包处理
 	for _, val := range this.activityDataList {
@@ -1529,7 +1632,7 @@ func (this *RoleActivity) getActivityByType(ActivityType int32) (rets []*serverp
 	return
 }
 
-//精彩活动奖励获取
+// 精彩活动奖励获取
 func (this *RoleActivity) ActivitiesReward(activityId int32, param int32, rewardNum int32) serverproto.ErrorCode {
 	cfgData, ok := model.ConvertActivitiesList[activityId]
 	if !ok {
@@ -1553,6 +1656,12 @@ func (this *RoleActivity) ActivitiesReward(activityId int32, param int32, reward
 
 	case serverproto.EActivityType_EActivityType_King: // 国王的盛宴任务
 		return this.activitiesRewardKingTask(activityId, param, rewardNum)
+
+	case serverproto.EActivityType_EActivityType_BT_ROCoinRecharge: // bt RO币累计活动
+		return this.activitiesRewardBTRoCoinRecharge(activityId, param)
+	case serverproto.EActivityType_EActivityType_BT_ZhenJiaRecharge: // 真/假每日累计充值活动
+		return this.activitiesRewardBTZhenJiaRecharge(activityId, param)
+
 	default:
 		return serverproto.ErrorCode_ERROR_FAIL
 	}
@@ -1787,7 +1896,7 @@ func (this *RoleActivity) activitiesReward14DaysTask(activityId, param int32) se
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-//宝箱奖励获取
+// 宝箱奖励获取
 func (this *RoleActivity) ActivitiesScoreReward(activityId, boxId int32) serverproto.ErrorCode {
 	activityData := this.getActivityData(activityId)
 	if activityData == nil {
@@ -1864,8 +1973,8 @@ func (this *RoleActivity) ActivitiesScoreReward(activityId, boxId int32) serverp
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-///充值活动相关
-//首充
+// /充值活动相关
+// 首充
 func (this *RoleActivity) FirstChargeUnlockState() bool {
 	bOk := false
 	// 开启的同时开启百元大礼包活动
@@ -1911,7 +2020,7 @@ func (this *RoleActivity) FirstChargeUnlockState() bool {
 	return bOk
 }
 
-//超值礼包开启(利用任务类型触发)
+// 超值礼包开启(利用任务类型触发)
 type SuperChargeUnlockST struct {
 	oldValue       int32
 	rewardCardList map[int32]int32
@@ -2075,7 +2184,7 @@ func (this *RoleActivity) SuperChargeUnlockCheck(unlockType serverproto.UnlockCh
 	}
 }
 
-//获取首充奖励
+// 获取首充奖励
 func (this *RoleActivity) ActivitiesFirstChargeReward() serverproto.ErrorCode {
 	if this.firstChargeTime <= 0 || model.ConvertActFirstRecharge == nil {
 		return serverproto.ErrorCode_ERROR_ACTIVITIES_REWARD_NOT
@@ -2435,7 +2544,7 @@ func (this *RoleActivity) activitiesRewardDailyCumRecharge(activityId int32) ser
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-//exchangeNum 兑换次数
+// exchangeNum 兑换次数
 func (this *RoleActivity) activitiesRewardCollection(activityId, rewardIdx int32, msg *serverproto.SSActivitiesCollectionServerDataAck, exchangeNum int32) serverproto.ErrorCode {
 	if exchangeNum <= 0 {
 		exchangeNum = 1
@@ -2566,7 +2675,7 @@ func (this *RoleActivity) activitiesRewardCollection(activityId, rewardIdx int32
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-//集字奖励条件判断
+// 集字奖励条件判断
 func (this *RoleActivity) collectionRewardCheck(cfgData *model.ConvertActCollectionData, exchangeNum uint64) bool {
 	for key, val := range cfgData.ExchangeConditionList {
 		if key <= 0 || val <= 0 {
@@ -2579,7 +2688,7 @@ func (this *RoleActivity) collectionRewardCheck(cfgData *model.ConvertActCollect
 	return true
 }
 
-//全局数据奖励处理
+// 全局数据奖励处理
 func (this *RoleActivity) OnCollectionRewardByServer(msg *serverproto.SSActivitiesCollectionServerDataAck) {
 	if msg.RewardIdx > 0 {
 		cfgData, ok := model.ConvertActCollection[msg.RewardIdx]
@@ -2622,7 +2731,7 @@ func (this *RoleActivity) OnCollectionRewardByServer(msg *serverproto.SSActiviti
 	}
 }
 
-//获取超值礼包商品信息
+// 获取超值礼包商品信息
 func (this *RoleActivity) PayInfoGetDiscount(payRewardInfo *serverproto.PayOrderSaveInfo) bool {
 	if len(this.superUnlockChargeList) <= 0 {
 		return false
@@ -2720,7 +2829,7 @@ func (this *RoleActivity) GetActivityType(activityId int32) int32 {
 	return activityData.ActivitiesType
 }
 
-//兑换奖励
+// 兑换奖励
 func (this *RoleActivity) OnExchangeRewardByServer(msg *serverproto.SSActivitiesCollectionServerDataAck) {
 	if msg.RewardIdx > 0 {
 		cfgData, ok := model.ConvertExchange[msg.RewardIdx]
@@ -2959,7 +3068,7 @@ func (this *RoleActivity) OtherExchangeCheck(useItemList []*serverproto.Exchange
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-//扣除宠物兑换道具
+// 扣除宠物兑换道具
 func (this *RoleActivity) DelPetExchangeItem(useItemList []*serverproto.ExchangeInfo) serverproto.ErrorCode {
 	if len(useItemList) <= 0 {
 		return serverproto.ErrorCode_ERROR_FAIL
@@ -2990,7 +3099,7 @@ func (this *RoleActivity) DelPetExchangeItem(useItemList []*serverproto.Exchange
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-//扣除卡片兑换道具
+// 扣除卡片兑换道具
 func (this *RoleActivity) DelCardExchangeItem(useItemList []*serverproto.ExchangeInfo) serverproto.ErrorCode {
 	if len(useItemList) <= 0 {
 		return serverproto.ErrorCode_ERROR_FAIL
@@ -3204,7 +3313,7 @@ func (this *RoleActivity) activityWheelInit(activityData *serverproto.Activities
 	}
 }
 
-//活动转盘
+// 活动转盘
 func (this *RoleActivity) ActivityWheelRefresh(activityId int32) serverproto.ErrorCode {
 	activityData := this.getActivityData(activityId)
 	if activityData == nil {
@@ -3286,7 +3395,7 @@ func (this *RoleActivity) ActivityWheelOpen(activityId int32) serverproto.ErrorC
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-//rewardAll false:转一次  true:获取所有奖励
+// rewardAll false:转一次  true:获取所有奖励
 func (this *RoleActivity) ActivityWheelReward(activityId int32, rewardAll bool) serverproto.ErrorCode {
 	activityData := this.getActivityData(activityId)
 	if activityData == nil || activityData.WheelData == nil {
@@ -3457,7 +3566,7 @@ func (this *RoleActivity) ActivityWheelReward(activityId int32, rewardAll bool)
 	return serverproto.ErrorCode_ERROR_OK
 }
 
-//抽取其中一个道具
+// 抽取其中一个道具
 func (this *RoleActivity) wheelItem(wheelData *serverproto.ActivityWheelData, convertData *model.ConvertPrizeWheelInfo) (serverproto.ErrorCode, *serverproto.WheelRewardItemInfo) {
 	var randRewardList []serverproto.KeyValueType //[weight,rewardidx]
 	var rewardTotalWeight int32 = 0
@@ -3577,6 +3686,139 @@ func (this *RoleActivity) ActivitySummon(activityId, summonCount int32) serverpr
 	return retCode
 }
 
+func (this *RoleActivity) ActivitySmashEggs(activityId, drawType, drawCount int32) (retCode serverproto.ErrorCode) {
+	retCode = serverproto.ErrorCode_ERROR_FAIL
+	activityData := this.getActivityData(activityId)
+	if activityData == nil {
+		retCode = serverproto.ErrorCode_ERROR_ACTIVITIES_NOT
+		return
+	}
+
+	tmpAckMsg := &serverproto.SCDrawCardAck{}
+	var cfgData *model.SummonCost = nil
+	switch drawType {
+	case DrawType_EggsGold: // 金蛋
+		fallthrough
+	case DrawType_EggsSpecial: // 彩蛋
+		for key, data := range model.ConvertSummonList {
+			if data.ActivitiesId == activityId && data.SummonType == drawType {
+				cfgData = data
+				retCode = this.role.GetRoleDraw().DrawReq(key, drawCount, tmpAckMsg)
+				break
+			}
+		}
+	default:
+		return
+	}
+
+	if retCode == serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCActivitySmashEggsAck{
+			ActivityId: activityId,
+			DrawCount:  tmpAckMsg.DrawCount,
+			ItemList:   tmpAckMsg.ItemList,
+			ExtraItem:  tmpAckMsg.ExtraItem,
+			DrawTimes:  tmpAckMsg.DrawTimes,
+			AddPoint:   tmpAckMsg.AddPoint,
+			DrawType:   drawType,
+		}
+
+		// 砸蛋消息处理
+		// 大奖处理 [activityId,AddFromType,itemId,itemNum,itemId,itemNum...]
+		if cfgData != nil {
+			bigRewardShow := map[int32]int{}
+			for idx := 0; idx < len(cfgData.BigRewardShowList); idx++ {
+				bigRewardShow[cfgData.BigRewardShowList[idx]] = 1
+			}
+
+			for idx := 0; idx < len(tmpAckMsg.ItemList); idx++ {
+				tmpItem := tmpAckMsg.ItemList[idx]
+				if findNum, ok := bigRewardShow[tmpItem.ItemId]; ok {
+					if findNum > 1 {
+						continue
+					}
+					bigRewardShow[tmpItem.ItemId]++
+
+					sysParam := AddSystemMsg{
+						ParamId:     activityId,
+						AddFromType: drawType,
+					}
+					sysParam.ParamList = append(sysParam.ParamList, tmpAckMsg.ItemList[idx].ItemId, tmpAckMsg.ItemList[idx].ItemNum)
+					addMsg := this.role.GenSystemMessage(SystemmessageType_SmashEggs, sysParam)
+					this.activitySmashEggsAddSysMsg(activityData, drawType, addMsg)
+					ackMsg.MsgList = append(ackMsg.MsgList, addMsg)
+				}
+			}
+			for idx := 0; idx < len(tmpAckMsg.ExtraItem); idx++ {
+				tmpItem := tmpAckMsg.ExtraItem[idx]
+				findNum, ok := bigRewardShow[tmpItem.ItemId]
+				if !ok || findNum > 1 { //未找到或者已经有提示
+					continue
+				}
+				bigRewardShow[tmpItem.ItemId]++
+				sysParam := AddSystemMsg{
+					ParamId:     activityId,
+					AddFromType: drawType,
+				}
+				sysParam.ParamList = append(sysParam.ParamList, tmpAckMsg.ExtraItem[idx].ItemId, tmpAckMsg.ExtraItem[idx].ItemNum)
+				addMsg := this.role.GenSystemMessage(SystemmessageType_SmashEggs, sysParam)
+				this.activitySmashEggsAddSysMsg(activityData, drawType, addMsg)
+				ackMsg.MsgList = append(ackMsg.MsgList, addMsg)
+			}
+		}
+
+		this.role.ReplayGate(ackMsg, true)
+	}
+
+	return
+}
+func (this *RoleActivity) activitySmashEggsAddSysMsg(activityData *serverproto.ActivitiesDetailData, drawType int32, addMsg *serverproto.SystemMessage) {
+	firstIdx := -1
+	findNum := 0
+	for idx := 0; idx < len(ActivitiesMag.SmashEggsMsgList); idx++ {
+		tmpMsg := ActivitiesMag.SmashEggsMsgList[idx]
+		if len(tmpMsg.ParamId) >= 2 && tmpMsg.ParamId[1] == drawType {
+			if firstIdx < 0 {
+				firstIdx = idx
+			}
+			findNum++
+		}
+	}
+	if findNum >= 10 {
+		ActivitiesMag.SmashEggsMsgList = append(ActivitiesMag.SmashEggsMsgList[:firstIdx], ActivitiesMag.SmashEggsMsgList[firstIdx+1:]...)
+	}
+	ActivitiesMag.SmashEggsMsgList = append(ActivitiesMag.SmashEggsMsgList, addMsg)
+	//this.SetDirty(true)
+	//this.addChangeActivity(activityData.ActivitiesId, 0)
+	saveMsgNtf := &serverproto.SSActivitySmashEggsMsgSaveNtf{
+		ActMsgList: ActivitiesMag.SmashEggsMsgList,
+	}
+	this.role.SendDb(saveMsgNtf)
+}
+
+func (this *RoleActivity) ActivitySmashEggsMsg(activityId, drawType int32) {
+	activityData := this.getActivityData(activityId)
+	if activityData == nil {
+		return
+	}
+
+	ackMsg := &serverproto.SCActivitySmashEggsMsgAck{}
+	switch drawType {
+	case DrawType_EggsGold:
+		fallthrough
+	case DrawType_EggsSpecial:
+		for idx := 0; idx < len(ActivitiesMag.SmashEggsMsgList); idx++ {
+			tmpMsg := ActivitiesMag.SmashEggsMsgList[idx]
+			if len(tmpMsg.ParamId) >= 2 {
+				if tmpMsg.ParamId[1] == drawType {
+					ackMsg.ActMsgList = append(ackMsg.ActMsgList, tmpMsg)
+				}
+			}
+		}
+	}
+
+	this.role.ReplayGate(ackMsg, true)
+}
+
 func (this *RoleActivity) ActivitySignIn(activityId int32, ackMsg *serverproto.SCActivitySignInAck) serverproto.ErrorCode {
 	if ackMsg == nil {
 		return serverproto.ErrorCode_ERROR_FAIL
@@ -3707,3 +3949,306 @@ func (this *RoleActivity) SetCollectNotice(activityId, CollectId int32, notice b
 
 	return serverproto.ErrorCode_ERROR_FAIL
 }
+
+// bt RO币累计活动
+func (this *RoleActivity) getAllActivityRewardBTRoCoinRecharge(activityData *serverproto.ActivitiesDetailData) {
+	if activityData.BtRocoinData == nil {
+		return
+	}
+	var addItemList = map[int32]int32{}
+	// daily
+	for idx := 0; idx < len(activityData.BtRocoinData.DailyTaskList); idx++ {
+		taskInfo := activityData.BtRocoinData.DailyTaskList[idx]
+		if taskInfo.State != TASK_REWARD_STATE_COMPLETED {
+			continue
+		}
+		convertData, ok := model.ConvertActivitiesTaskList[int32(taskInfo.TaskId)]
+		if !ok {
+			continue
+		}
+		for k, v := range convertData.RewardList {
+			addItemList[k] += v
+		}
+		taskInfo.State = TASK_REWARD_STATE_REWARD
+		this.addChangeActivity(activityData.ActivitiesId, taskInfo.TaskId)
+		delete(this.activitiesTaskList[activityData.ActivitiesId], taskInfo.TaskId)
+		this.delTaskType(activityData.ActivitiesId, convertData)
+	}
+	activityData.BtRocoinData.DailyTaskList = nil
+	this.addChangeActivity(activityData.ActivitiesId, 0)
+	this.SetDirty(true)
+
+	// week
+	nowTime := util.GetTimeMilliseconds()
+	if nowTime >= activityData.BtRocoinData.WeekDayEndTime {
+		for idx := 0; idx < len(activityData.BtRocoinData.WeekTaskList); idx++ {
+			taskInfo := activityData.BtRocoinData.WeekTaskList[idx]
+			if taskInfo.State != TASK_REWARD_STATE_COMPLETED {
+				continue
+			}
+			convertData, ok := model.ConvertActivitiesTaskList[int32(taskInfo.TaskId)]
+			if !ok {
+				continue
+			}
+			for k, v := range convertData.RewardList {
+				addItemList[k] += v
+			}
+
+			taskInfo.State = TASK_REWARD_STATE_REWARD
+			this.addChangeActivity(activityData.ActivitiesId, taskInfo.TaskId)
+			delete(this.activitiesTaskList[activityData.ActivitiesId], taskInfo.TaskId)
+			this.delTaskType(activityData.ActivitiesId, convertData)
+		}
+		activityData.BtRocoinData.WeekTaskList = nil
+		this.addChangeActivity(activityData.ActivitiesId, 0)
+		this.SetDirty(true)
+	}
+	if len(addItemList) > 0 {
+		//发送邮件奖励
+		this.role.AddMail(model.GlobalMailIdActivitiesCurRechargeReward, serverproto.MailType_MailType_Activities,
+			addItemList, []int32{activityData.ActivitiesId}, "", "")
+	}
+}
+
+func (this *RoleActivity) getAllActivityRewardBTZhenJiaRecharge(activityData *serverproto.ActivitiesDetailData) {
+	if len(activityData.BtZhenjiaRechargeTaskList) <= 0 {
+		return
+	}
+	var addItemList = map[int32]int32{}
+	for idx := 0; idx < len(activityData.BtZhenjiaRechargeTaskList); idx++ {
+		taskInfo := activityData.BtZhenjiaRechargeTaskList[idx]
+		if taskInfo.State != TASK_REWARD_STATE_COMPLETED {
+			continue
+		}
+		convertData, ok := model.ConvertActivitiesTaskList[int32(taskInfo.TaskId)]
+		if !ok {
+			continue
+		}
+		for k, v := range convertData.RewardList {
+			addItemList[k] += v
+		}
+		taskInfo.State = TASK_REWARD_STATE_REWARD
+		this.addChangeActivity(activityData.ActivitiesId, taskInfo.TaskId)
+		delete(this.activitiesTaskList[activityData.ActivitiesId], taskInfo.TaskId)
+	}
+	activityData.BtZhenjiaRechargeTaskList = nil
+	this.SetDirty(true)
+
+	if len(addItemList) > 0 {
+		//发送邮件奖励
+		this.role.AddMail(model.GlobalMailIdActivitiesCurRechargeReward, serverproto.MailType_MailType_Activities,
+			addItemList, []int32{activityData.ActivitiesId}, "", "")
+	}
+}
+
+// param=taskId
+func (this *RoleActivity) activitiesRewardBTRoCoinRecharge(activityId int32, param int32) serverproto.ErrorCode {
+	activityData := this.getActivityData(activityId)
+	if activityData == nil {
+		return serverproto.ErrorCode_ERROR_ACTIVITIES_NOT
+	}
+	if param <= 0 {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+	taskInfo := this.getTaskData(activityId, uint32(param))
+	if taskInfo == nil {
+		return serverproto.ErrorCode_ERROR_ACTIVITIES_TASK_NOT
+	}
+	if taskInfo.State == TASK_REWARD_STATE_REWARD {
+		return serverproto.ErrorCode_ERROR_TASK_REWARDED
+	}
+	//应对玩家任务条件调整
+	if taskInfo.State != TASK_REWARD_STATE_COMPLETED {
+		if this.checkTaskInfo(taskInfo) {
+			if taskInfo.State != TASK_REWARD_STATE_COMPLETED {
+				return serverproto.ErrorCode_ERROR_TASK_REWARDED
+			}
+		} else {
+			return serverproto.ErrorCode_ERROR_TASK_REWARDED
+		}
+	}
+	convertData, ok := model.ConvertActivitiesTaskList[int32(taskInfo.TaskId)]
+	if !ok {
+		return serverproto.ErrorCode_ERROR_ACTIVITIES_TASK_NOT
+	}
+	ret := this.role.CanAddItemList(convertData.RewardList)
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		return ret
+	}
+	this.role.AddItemList(convertData.RewardList, AddFrom_Activities, true)
+
+	//任务状态修改
+	taskInfo.State = TASK_REWARD_STATE_REWARD
+	this.addChangeActivity(activityId, taskInfo.TaskId)
+	this.addChangeActivity(activityId, 0)
+	this.SetDirty(true)
+
+	//通知数据变更
+	ntfMsg := &serverproto.SCActivitiesChangeNtf{
+		CurDayEndTime: this.curDayEndTime,
+	}
+	detailData := &serverproto.ActivitiesDetailData{
+		ActivitiesId:   activityId,
+		ActivitiesType: activityData.ActivitiesType,
+		StartTime:      activityData.StartTime,
+		EndTime:        activityData.EndTime,
+		CurDay:         activityData.CurDay,
+		BtRocoinData: &serverproto.ActivityBTROCoin{
+			WeekDayEndTime: activityData.BtRocoinData.WeekDayEndTime,
+		},
+	}
+	if taskInfo.TaskType == int32(model.BTTaskRefreshType_Day) {
+		detailData.BtRocoinData.DailyTaskList = append(detailData.BtRocoinData.DailyTaskList, taskInfo)
+	} else {
+		detailData.BtRocoinData.WeekTaskList = append(detailData.BtRocoinData.WeekTaskList, taskInfo)
+	}
+	ntfMsg.ActivityDataList = append(ntfMsg.ActivityDataList, detailData)
+	this.role.ReplayGate(ntfMsg, true)
+
+	//ack奖励处理
+	ackMsg := &serverproto.SCActivitiesRewardAck{
+		Error:      int32(serverproto.ErrorCode_ERROR_OK),
+		ActivityId: activityId,
+	}
+	for key, val := range convertData.RewardList {
+		ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{Key: key, Value: val})
+	}
+	this.role.ReplayGate(ackMsg, true)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+
+// param=taskId
+func (this *RoleActivity) activitiesRewardBTZhenJiaRecharge(activityId int32, param int32) serverproto.ErrorCode {
+	activityData := this.getActivityData(activityId)
+	if activityData == nil {
+		return serverproto.ErrorCode_ERROR_ACTIVITIES_NOT
+	}
+	if param <= 0 {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+	taskInfo := this.getTaskData(activityId, uint32(param))
+	if taskInfo == nil {
+		return serverproto.ErrorCode_ERROR_ACTIVITIES_TASK_NOT
+	}
+	if taskInfo.State == TASK_REWARD_STATE_REWARD {
+		return serverproto.ErrorCode_ERROR_TASK_REWARDED
+	}
+	//应对玩家任务条件调整
+	if taskInfo.State != TASK_REWARD_STATE_COMPLETED {
+		if this.checkTaskInfo(taskInfo) {
+			if taskInfo.State != TASK_REWARD_STATE_COMPLETED {
+				return serverproto.ErrorCode_ERROR_TASK_REWARDED
+			}
+		} else {
+			return serverproto.ErrorCode_ERROR_TASK_REWARDED
+		}
+	}
+	convertData, ok := model.ConvertActivitiesTaskList[int32(taskInfo.TaskId)]
+	if !ok {
+		return serverproto.ErrorCode_ERROR_ACTIVITIES_TASK_NOT
+	}
+	ret := this.role.CanAddItemList(convertData.RewardList)
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		return ret
+	}
+	this.role.AddItemList(convertData.RewardList, AddFrom_Activities, true)
+
+	//任务状态修改
+	taskInfo.State = TASK_REWARD_STATE_REWARD
+	this.addChangeActivity(activityId, taskInfo.TaskId)
+	this.addChangeActivity(activityId, 0)
+	this.SetDirty(true)
+
+	//通知数据变更
+	ntfMsg := &serverproto.SCActivitiesChangeNtf{
+		CurDayEndTime: this.curDayEndTime,
+	}
+	detailData := &serverproto.ActivitiesDetailData{
+		ActivitiesId:   activityId,
+		ActivitiesType: activityData.ActivitiesType,
+		StartTime:      activityData.StartTime,
+		EndTime:        activityData.EndTime,
+		CurDay:         activityData.CurDay,
+	}
+	detailData.BtZhenjiaRechargeTaskList = append(detailData.BtZhenjiaRechargeTaskList, taskInfo)
+	ntfMsg.ActivityDataList = append(ntfMsg.ActivityDataList, detailData)
+	this.role.ReplayGate(ntfMsg, true)
+
+	//ack奖励处理
+	ackMsg := &serverproto.SCActivitiesRewardAck{
+		Error:      int32(serverproto.ErrorCode_ERROR_OK),
+		ActivityId: activityId,
+	}
+	for key, val := range convertData.RewardList {
+		ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{Key: key, Value: val})
+	}
+	this.role.ReplayGate(ackMsg, true)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+
+func (this *RoleActivity) resetBTTasks(detailData *serverproto.ActivitiesDetailData) {
+	if detailData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_BT_ZhenJiaRecharge) {
+		taskList := model.GetActBTRechargeDayDataList(detailData.ActivitiesId, detailData.CurDay)
+		if len(taskList) <= 0 {
+			return
+		}
+		var taskDataList []*serverproto.TaskData
+		for idx := 0; idx < len(taskList); idx++ {
+			taskData := this.addDayTask(detailData.ActivitiesId, uint32(taskList[idx]), 0, false, 0)
+			if taskData != nil {
+				taskData.TaskType = int32(model.BTTaskRefreshType_Day)
+				taskDataList = append(taskDataList, taskData)
+			}
+		}
+		if len(taskDataList) > 0 {
+			detailData.BtZhenjiaRechargeTaskList = taskDataList
+		}
+		this.SetDirty(true)
+
+	} else if detailData.ActivitiesType == int32(serverproto.EActivityType_EActivityType_BT_ROCoinRecharge) {
+		// daily task
+		dailyTaskList := model.GetActBTROCoinRechargeDayDataList(detailData.ActivitiesId, detailData.CurDay, model.BTTaskRefreshType_Day)
+		if len(dailyTaskList) <= 0 {
+			return
+		}
+		var taskDataList []*serverproto.TaskData
+		for idx := 0; idx < len(dailyTaskList); idx++ {
+			taskData := this.addDayTask(detailData.ActivitiesId, uint32(dailyTaskList[idx]), 0, false, 0)
+			if taskData != nil {
+				taskData.TaskType = int32(model.BTTaskRefreshType_Day)
+				taskDataList = append(taskDataList, taskData)
+			}
+		}
+		if len(taskDataList) > 0 {
+			detailData.BtRocoinData.DailyTaskList = taskDataList
+		}
+
+		// week task
+		if detailData.BtRocoinData != nil {
+			nowTime := util.GetTimeMilliseconds()
+			if nowTime >= detailData.BtRocoinData.WeekDayEndTime || len(detailData.BtRocoinData.WeekTaskList) <= 0 {
+				weekTaskList := model.GetActBTROCoinRechargeDayDataList(detailData.ActivitiesId, detailData.CurDay, model.BTTaskRefreshType_Week)
+				if len(weekTaskList) <= 0 {
+					return
+				}
+				taskDataList = []*serverproto.TaskData{}
+				for idx := 0; idx < len(weekTaskList); idx++ {
+					taskData := this.addDayTask(detailData.ActivitiesId, uint32(weekTaskList[idx]), 0, false, 0)
+					if taskData != nil {
+						taskData.TaskType = int32(model.BTTaskRefreshType_Week)
+						taskDataList = append(taskDataList, taskData)
+					}
+				}
+				if len(taskDataList) > 0 {
+					detailData.BtRocoinData.WeekTaskList = taskDataList
+				}
+				if len(detailData.BtRocoinData.WeekTaskList) > 0 {
+					detailData.BtRocoinData.WeekDayEndTime = this.curDayEndTime + 6*DayMS
+				}
+			}
+		}
+		this.SetDirty(true)
+	}
+}

+ 2 - 1
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_arena.go

@@ -399,6 +399,7 @@ func (this *RoleArena) SetLastFighter(info *serverproto.FightRoleInfo) {
 
 	//匹配到对手立即扣除次数
 	this.arenaInfo.ChallengeCount--
+	this.arenaInfo.RecordTotalCount++
 	TaskMagCheck(this.role, serverproto.TaskType_Arena_Battle_Start_Count, 1)
 	TaskMagCheck(this.role, serverproto.TaskType_Arena_Battle_Start_Count_Accu, 1)
 	this.dataChangeNtf()
@@ -558,7 +559,7 @@ func (this *RoleArena) ArenaResult(result int32) (bool, map[int32]int32, int32,
 	}
 
 	this.arenaInfo.TotalCount++
-	this.arenaInfo.RecordTotalCount++
+	//this.arenaInfo.RecordTotalCount++
 	//放到匹配到对手时处理
 	//this.arenaInfo.ChallengeCount--
 

+ 50 - 5
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_bag.go

@@ -90,6 +90,13 @@ const (
 	AddFrom_WishBoxSpeed        //74 许愿宝箱加速
 	AddFrom_WishBoxUse          //75 许愿使用
 	AddFrom_PetJuexing          //76 宠物觉醒
+	AddFrom_CreditRecharge           // 77 充值钱包
+	AddFrom_SpecialPrivilege         // 78 特权卡商店
+	AddFrom_BT_Boli                  // 79 bt boli
+	AddFrom_CreateRole               // 80
+	AddFrom_ActivitySmashEggs        // 81 砸蛋金蛋
+	AddFrom_ActivitySmashEggsSpeical // 82 彩蛋
+	AddFrom_BT_Recharge              // 83 bt超值首充&百元大礼包
 )
 
 type RoleBag struct {
@@ -271,6 +278,12 @@ func (this *RoleBag) addItem(cfgData *serverproto.ItemCfg, count int32, st AddIt
 	case serverproto.ResType_Res_HightSkillExp:
 		fallthrough
 	case serverproto.ResType_Res_PetLevelUP_Exp:
+		fallthrough
+	case serverproto.ResType_Res_CreditRecharge:
+		fallthrough
+	case serverproto.ResType_Res_ROCoin:
+		fallthrough
+	case serverproto.ResType_Res_BoliShopExp:
 		if DoCheck(this.role, cfgData, count) != int32(serverproto.ErrorCode_ERROR_OK) {
 			util.InfoF("uid=%v AddItem effect not found restype=%v", this.role.GetUUid(), cfgData.ResType)
 			return
@@ -380,7 +393,9 @@ func (this *RoleBag) addItem(cfgData *serverproto.ItemCfg, count int32, st AddIt
 		st.AddFrom == AddFrom_Shop_Arane ||
 		st.AddFrom == AddFrom_Shop_Guild ||
 		st.AddFrom == AddFrom_DrawSkillEquip ||
-		st.AddFrom == AddFrom_ActivitySummon {
+		st.AddFrom == AddFrom_ActivitySummon ||
+		st.AddFrom == AddFrom_ActivitySmashEggs ||
+		st.AddFrom == AddFrom_ActivitySmashEggsSpeical {
 		if _, ok := model.GlobalSystemMsgItemList[cfgData.Id]; ok {
 			if cfgData.ResType == int32(serverproto.ResType_Res_Card) ||
 				cfgData.ResType == int32(serverproto.ResType_Res_Pet) ||
@@ -393,7 +408,9 @@ func (this *RoleBag) addItem(cfgData *serverproto.ItemCfg, count int32, st AddIt
 					st.AddFrom == AddFrom_Shop_Arane ||
 					st.AddFrom == AddFrom_Shop_Guild ||
 					st.AddFrom == AddFrom_DrawSkillEquip ||
-					st.AddFrom == AddFrom_ActivitySummon {
+					st.AddFrom == AddFrom_ActivitySummon ||
+					st.AddFrom == AddFrom_ActivitySmashEggs ||
+					st.AddFrom == AddFrom_ActivitySmashEggsSpeical {
 					this.GetRole().AddSystemMessage(SystemMessageType_Item,
 						AddSystemMsg{ParamId: cfgData.Id, ParamCount: int32(count), AddFromType: int32(st.AddFrom), UseItemCfgId: st.UseItemCfgId})
 				}
@@ -463,7 +480,9 @@ func (this *RoleBag) AddItem(itemCfgId, count int32, st AddItemST) {
 		addFrom == AddFrom_RushSkill ||
 		addFrom == AddFrom_RedBagShop ||
 		addFrom == AddFrom_CrossYuanHangTrial ||
-		addFrom == AddFrom_WishBox {
+		addFrom == AddFrom_WishBox ||
+		addFrom == AddFrom_BT_Boli ||
+		addFrom == AddFrom_BT_Recharge {
 		ignore = true
 	}
 	st.Ignore = ignore
@@ -540,7 +559,10 @@ func (this *RoleBag) AddItemList(addItemList map[int32]int32, st AddItemST) {
 		addFrom == AddFrom_DrawSkillEquip ||
 		addFrom == AddFrom_CrossTopTower ||
 		addFrom == AddFrom_ActivitySummon ||
-		addFrom == AddFrom_ActivitySignIn {
+		addFrom == AddFrom_ActivitySignIn ||
+		addFrom == AddFrom_CreateRole ||
+		addFrom == AddFrom_ActivitySmashEggs ||
+		addFrom == AddFrom_ActivitySmashEggsSpeical {
 		ignore = true
 	}
 
@@ -632,6 +654,12 @@ func (this *RoleBag) delItem(itemCfgId int32, st AddItemST, notify bool) (bBaseC
 	case serverproto.ResType_Res_HightSkillExp:
 		fallthrough
 	case serverproto.ResType_Res_PetLevelUP_Exp:
+		fallthrough
+	case serverproto.ResType_Res_CreditRecharge:
+		fallthrough
+	case serverproto.ResType_Res_ROCoin:
+		fallthrough
+	case serverproto.ResType_Res_BoliShopExp:
 		if DoCheck(this.role, cfgData, count) != int32(serverproto.ErrorCode_ERROR_OK) {
 			util.ErrorF("uid=%v effect not found itemCfgId=%v", this.role.GetUUid(), itemCfgId)
 			return
@@ -947,6 +975,23 @@ func (this *RoleBag) autoUseItem(itemCfgId int32, count uint32, notify bool, ite
 		this.AddItemList(addItemList, AddItemST{AddFrom: AddFrom_Package, Notify: notify, UseItemCfgId: itemCfgId})
 
 	default:
+		if cfgData.ResType == int32(serverproto.ResType_Res_Gift) {
+			// 特殊处理使用道具添加战斗倍数时间
+			for idx := 0; idx < len(model.GlobalFastBattleTime); idx++ {
+				if model.GlobalFastBattleTime[idx].Key == itemCfgId {
+					this.role.GetRoleBattle().FastBattleTimeAdd(model.GlobalFastBattleTime[idx].Value * int32(count))
+
+					//消耗资源
+					if itemId > 0 {
+						this.DelItemById(itemId, int32(count), AddFrom_Package)
+					} else {
+						consumeItemLIst[itemCfgId] += int32(count)
+					}
+					this.DelItemList(consumeItemLIst, AddItemST{AddFrom: AddFrom_Package})
+					break
+				}
+			}
+		}
 		if len(addItemList) > 0 {
 			ret := this.CanAddItemList(addItemList)
 			if ret == serverproto.ErrorCode_ERROR_OK {
@@ -969,7 +1014,7 @@ func (this *RoleBag) autoUseItem(itemCfgId int32, count uint32, notify bool, ite
 		Error: int32(serverproto.ErrorCode_ERROR_OK),
 	}
 	if len(addItemList) <= 0 {
-		ackMsg.Error = int32(serverproto.ErrorCode_ERROR_FAIL)
+		//ackMsg.Error = int32(serverproto.ErrorCode_ERROR_FAIL)
 	} else {
 		for key, value := range addItemList {
 			ackMsg.ItemList = append(ackMsg.ItemList, &serverproto.KeyValueType{

+ 164 - 12
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_base.go

@@ -228,6 +228,8 @@ func (this *RoleBase) DailyReset(notify bool) uint64 {
 
 	//每日累计重置重置
 	this.roleBase.DayRecharge = 0
+	this.roleBase.BtZhenDayRecharge = 0
+	this.roleBase.BtJiaDayRecharge = 0
 
 	//累计在线时间奖励数据重置
 	this.onlineTImeRewardAll(nowTime)
@@ -240,6 +242,9 @@ func (this *RoleBase) DailyReset(notify bool) uint64 {
 		ntfMsg := &serverproto.SCPayInfoNtf{
 			TotalRecharge: this.roleBase.TotalRecharge,
 			DayRecharge:   this.roleBase.DayRecharge,
+			BtZhenDayRecharge:  this.roleBase.BtZhenDayRecharge,
+			BtJiaDayRecharge:   this.roleBase.BtJiaDayRecharge,
+			BtJiaTotalRecharge: this.roleBase.BtJiaTotalRecharge,
 		}
 		this.role.ReplayGate(ntfMsg, true)
 
@@ -274,7 +279,12 @@ func (this *RoleBase) AddRMB(st AddItemST, add bool) bool {
 	} else {
 		tmpExp := uint64(rmb) + uint64(this.roleBase.Rmb)
 		if tmpExp >= math.MaxInt32 {
+			// 金币获得达到上限无法再获得
 			tmpExp = math.MaxInt32
+			ntfMsg := &serverproto.SCErrorMessageNtf{
+				Error: int32(serverproto.ErrorCode_ERROR_RMB_CANNOT_ADD_MORE),
+			}
+			this.role.ReplayGate(ntfMsg, true)
 		}
 		this.roleBase.Rmb = uint32(tmpExp)
 	}
@@ -397,6 +407,25 @@ func (this *RoleBase) GetCommonRes(resType int32) int32 {
 	return 0
 }
 
+//default true
+func (this *RoleBase) ResetCommonRes(resType int32, notify bool) {
+	for _, data := range this.roleBase.ResList {
+		if data.Key == resType {
+			if data.Value > 0 {
+				oldValue := data.Value
+				data.Value = 0
+				util.InfoF("uid=%v ResetCommonRes restype=%v old=%v new=%", this.role.GetUUid(), resType, oldValue, data.Value)
+				this.SetDirty(true)
+
+				if notify {
+					this.BaseChangeNtf()
+				}
+			}
+			break
+		}
+	}
+}
+
 //添加资源
 func (this *RoleBase) AddCommonRes(resType int32, st AddItemST, add bool) bool {
 	resValue := st.ItemCount
@@ -413,6 +442,16 @@ func (this *RoleBase) AddCommonRes(resType int32, st AddItemST, add bool) bool {
 					data.Value -= resValue
 					util.InfoF("uid=%v AddCommonRes restype=%v old=%v new=%v addvalue=%v add=%v",
 						this.role.GetUUid(), resType, oldValue, data.Value, resValue, add)
+
+					//bt假每日累计充值
+					if resType == int32(serverproto.ResType_Res_CreditRecharge) {
+						this.AddBtJiaRecharge(resValue)
+
+						// 根据消耗比例获取vip经验(充值钱包消耗获得vip经验)
+						addVipExp := float32(resValue) * model.GlobalCreditRechargeFactor
+						st.ItemCount = int32(addVipExp)
+						this.AddCommonRes(int32(serverproto.ResType_Res_VipExp), st, true)
+					}
 					break
 				}
 			}
@@ -437,6 +476,8 @@ func (this *RoleBase) AddCommonRes(resType int32, st AddItemST, add bool) bool {
 					}
 				case serverproto.ResType_Res_VipExp:
 					this.CheckVipLevelUp()
+				case serverproto.ResType_Res_BoliShopExp:
+					this.checkBTBoliLevelUp()
 				}
 
 				bFind = true
@@ -446,17 +487,20 @@ func (this *RoleBase) AddCommonRes(resType int32, st AddItemST, add bool) bool {
 			}
 		}
 		if !bFind {
+			this.roleBase.ResList = append(this.roleBase.ResList, &serverproto.KeyValueType{
+				Key:   resType,
+				Value: resValue,
+			})
+
 			//上限处理
 			switch serverproto.ResType(resType) {
 			case serverproto.ResType_Res_EvilExp:
 				if model.GlobalEvilExpLimit > 0 && resValue > model.GlobalEvilExpLimit {
 					resValue = model.GlobalEvilExpLimit
 				}
+			case serverproto.ResType_Res_BoliShopExp:
+				this.checkBTBoliLevelUp()
 			}
-			this.roleBase.ResList = append(this.roleBase.ResList, &serverproto.KeyValueType{
-				Key:   resType,
-				Value: resValue,
-			})
 
 			if serverproto.ResType(resType) == serverproto.ResType_Res_VipExp {
 				this.CheckVipLevelUp()
@@ -470,6 +514,23 @@ func (this *RoleBase) AddCommonRes(resType int32, st AddItemST, add bool) bool {
 	return true
 }
 
+func (this *RoleBase) AddBtJiaRecharge(val int32) {
+	this.roleBase.BtJiaDayRecharge += val
+	this.roleBase.BtJiaTotalRecharge += uint64(val)
+	this.SetDirty(true)
+
+	ntfMsg := &serverproto.SCPayInfoNtf{
+		TotalRecharge:      this.roleBase.TotalRecharge,
+		DayRecharge:        this.roleBase.DayRecharge,
+		BtZhenDayRecharge:  this.roleBase.BtZhenDayRecharge,
+		BtJiaDayRecharge:   this.roleBase.BtJiaDayRecharge,
+		BtJiaTotalRecharge: this.roleBase.BtJiaTotalRecharge,
+	}
+	this.role.ReplayGate(ntfMsg, true)
+
+	TaskMagCheck(this.role, serverproto.TaskType_BT_ZhenJiaRecharge, val)
+}
+
 //增加累计充值
 func (this *RoleBase) AddPayRecharge(payRewardInfo *serverproto.PayOrderSaveInfo) {
 	amount := payRewardInfo.Amount
@@ -483,9 +544,24 @@ func (this *RoleBase) AddPayRecharge(payRewardInfo *serverproto.PayOrderSaveInfo
 	this.roleBase.LastRechargeTime = util.GetTimeMilliseconds()
 	this.SetDirty(true)
 
+	// bt服务器真假累计充值
+	if payRewardInfo.GoodsType == int32(serverproto.PayGoodsType_EPayType_NormalBag) {
+		goodCfg, ok := model.ConvertGiftBag[payRewardInfo.GoodsId]
+		if ok && goodCfg.BagType == Rune_BagShop_Type_Gold {
+			this.roleBase.BtZhenDayRecharge += amount
+			TaskMagCheck(this.role, serverproto.TaskType_BT_ZhenJiaRecharge, int32(amount))
+		}
+	}
+	// bt 获得RO币
+	tmpRoCoin := payRewardInfo.Amount * model.GlobalRoCoinFactor
+	TaskMagCheck(this.role, serverproto.TaskType_BT_ROCoinRecharge, int32(tmpRoCoin))
+
 	ntfMsg := &serverproto.SCPayInfoNtf{
-		TotalRecharge: this.roleBase.TotalRecharge,
-		DayRecharge:   this.roleBase.DayRecharge,
+		TotalRecharge:      this.roleBase.TotalRecharge,
+		DayRecharge:        this.roleBase.DayRecharge,
+		BtZhenDayRecharge:  this.roleBase.BtZhenDayRecharge,
+		BtJiaDayRecharge:   this.roleBase.BtJiaDayRecharge,
+		BtJiaTotalRecharge: this.roleBase.BtJiaTotalRecharge,
 	}
 	this.role.ReplayGate(ntfMsg, true)
 	util.InfoF("uid=%v AddPayRecharge old=%v new=%v add=%v", this.role.GetUUid(), oldVal, this.roleBase.TotalRecharge, amount)
@@ -510,6 +586,10 @@ func (this *RoleBase) AddPayRecharge(payRewardInfo *serverproto.PayOrderSaveInfo
 		this.role.GetRoleActivity().SuperChargeUnlockCheck(serverproto.UnlockChargeType_UChargeType_PayAmount,
 			&SuperChargeUnlockST{oldValue: int32(payRewardInfo.Amount)})
 	}
+	//BT根据关卡的功能解锁
+	if this.role.GetRoleBT() != nil {
+		this.role.GetRoleBT().UnlockBTSystem()
+	}
 
 	//gm方式充值 不写入数据库
 	if payRewardInfo.GoodsType != int32(serverproto.PayGoodsType_EPayType_None) {
@@ -1867,17 +1947,89 @@ func (this *RoleBase) CheckVipLevelUp() {
 		this.UpdatePlayerBriefInfo(false)
 	}
 }
+func (this *RoleBase) checkBTBoliLevelUp() {
+	// boli商城等级提升检测
+	bLevelUp := false
+	newExp := this.role.getCommonResNum(int32(serverproto.ResType_Res_BoliShopExp))
+	var oldLevel int32 = 0
+	if this.role.roleBT.boliData != nil {
+		oldLevel = this.role.roleBT.boliData.Level
+	}
 
+	newLevel := oldLevel
+	for {
+		// 1lv->2lv使用1的升级经验
+		cfgData, ok := model.ConvertBoliVipData[newLevel]
+		if !ok {
+			break
+		}
+		if newExp >= cfgData.VipExp && cfgData.VipExp > 0 {
+			if _, nextLevelOk := model.ConvertBoliVipData[newLevel+1]; !nextLevelOk {
+				break
+			}
+			bLevelUp = true
+			newLevel++
+		} else {
+			break
+		}
+	}
+	if bLevelUp {
+		this.role.roleBT.OnBoliLevelUp(newLevel)
+	}
+}
+
+// 获取特权对应加成数值
 func (this *RoleBase) GetVipData(dataType int32) int32 {
+	var retVal int32 = 0
 	vipLevel := this.role.GetRoleVipLevel()
 	data, ok := model.ConvertVipRight[vipLevel]
-	if !ok {
-		return -1
+	if ok {
+		right, ok1 := data.VipRight[dataType]
+		if ok1 {
+			if dataType == model.Vip_System_Evil && right == 0 {
+				return right
+			}
+			if right < 0 {
+				right = 0
+			}
+			retVal = right
+		}
 	}
-	_, ok1 := data.VipRight[dataType]
-	if !ok1 {
-		return -1
+
+	// RO通行证
+	if dataType == model.Vip_System_QuickBattleBaseExp {
+		if this.role.GetRoleRune() != nil && this.role.GetRoleRune().runeBase.IsPassCheck {
+			if right, ok := model.ConvertPassCheckData.VipRight[dataType]; ok {
+				if dataType == model.Vip_System_Evil && right == 0 {
+					return right
+				}
+				if right < 0 {
+					right = 0
+				}
+				retVal += right
+			}
+		}
+	}
+
+	// 波利商城
+	if this.role.roleBT != nil {
+		var boliLevel int32 = 0
+		if this.role.roleBT.boliData != nil {
+			boliLevel = this.role.roleBT.boliData.Level
+		}
+		cfgData, ok := model.ConvertBoliVipData[boliLevel]
+		if ok {
+			if right, ok1 := cfgData.VipRight[dataType]; ok1 {
+				if dataType == model.Vip_System_Evil && right == 0 {
+					return right
+				}
+				if right < 0 {
+					right = 0
+				}
+				retVal += right
+			}
+		}
 	}
 
-	return data.VipRight[dataType]
+	return retVal
 }

+ 104 - 3
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_battle.go

@@ -283,6 +283,10 @@ type RoleBattle struct {
 	//expedition
 	expeditionData     *serverproto.BattleExpedition
 	expeditionBuffList set.Interface
+
+	// bt服务器战斗加速时间
+	lastRecordBattleAcceTime uint64 // 时间戳
+	battleAcceDuration       uint64 // 持续时间ms
 }
 
 func newRoleBattle(r *Role) *RoleBattle {
@@ -319,6 +323,8 @@ func (this *RoleBattle) Load(msg interface{}) bool {
 		this.mapRewardId = proRole.RoleBattle.RewardMapId
 		this.mapRewardLevel = proRole.RoleBattle.RewardMapLevel
 		this.mapLevelTime = proRole.RoleBattle.MapLevelTime
+		this.lastRecordBattleAcceTime = proRole.RoleBattle.LastRecordBattleAcceTime
+		this.battleAcceDuration = proRole.RoleBattle.BattleAcceDuration
 		if this.mapLevel == 0 || this.mapId == 0 {
 			this.mapLevel = 1
 			this.mapId = 1
@@ -459,6 +465,8 @@ func (this *RoleBattle) Save() {
 			ExpeditionInfo: this.expeditionData,
 			MapLevelTime:   this.mapLevelTime,
 			RushMap:        this.rushMap,
+			LastRecordBattleAcceTime: this.lastRecordBattleAcceTime,
+			BattleAcceDuration:       this.battleAcceDuration,
 			//todo...
 			//MapChallengeNumList: this.mapLevelChallengeNumList, 数据太大后续做优化处理
 		},
@@ -479,6 +487,9 @@ func (this *RoleBattle) CopyData(data *serverproto.RoleBattle) {
 	data.QuickBattle = this.quickBattle
 	data.EvilInfo = this.evilData
 	data.ExpeditionInfo = this.expeditionData
+
+	data.BattleAcceDuration = this.battleAcceDuration
+	data.LastRecordBattleAcceTime = this.lastRecordBattleAcceTime
 }
 
 func (this *RoleBattle) DailyReset(notify bool) {
@@ -700,6 +711,10 @@ func (this *RoleBattle) addMapRank(rewardCount uint32, oldMapId, oldMapLevel uin
 	if this.role.GetRoleDaoChang100() != nil {
 		this.role.GetRoleDaoChang100().Unlock()
 	}
+	//BT根据关卡的功能解锁
+	if this.role.GetRoleBT() != nil {
+		this.role.GetRoleBT().UnlockBTSystem()
+	}
 
 	//任务处理
 	TaskMagCheck(this.role, serverproto.TaskType_Level_Battle_Count, 0)
@@ -825,6 +840,12 @@ func (this *RoleBattle) levelOnlineReward(levelId int32, addItemList map[int32]i
 			addItemList[key] += val
 		}
 	}
+
+	// 特权魔魂值加成
+	devilsUp := this.role.GetRoleBase().GetVipData(model.Vip_System_DevilsUp)
+	if devilsUp > 0 {
+		addItemList[int32(serverproto.ResType_Res_EvilExp)] += devilsUp * rewardNum
+	}
 }
 
 func (this *RoleBattle) GMIncome(incomeTime int32) {
@@ -1028,14 +1049,15 @@ func (this *RoleBattle) BossReward(challengeTime uint32, mapId, mapLevel uint32,
 	addItemList[int32(serverproto.ResType_Res_RoleJobExp)] = levelCfgData.JobExp
 	//rmb
 	addItemList[int32(serverproto.ResType_Res_Rmb)] = levelCfgData.Gold
-	//coin
+	//通关免费充值额度
+	addItemList[int32(serverproto.ResType_Res_CreditRecharge)] = levelCfgData.FreeInvest
 	//cash//做活动时间判定,活动时间内才给
 	if !this.role.FuncDisable() {
 		if ok := CheckHDItemAdd(int32(serverproto.ResType_Res_CashTicket), this.role); ok && (levelCfgData.Cash != 0) {
 			addItemList[int32(serverproto.ResType_Res_CashTicket)] = levelCfgData.Cash
 		}
 	}
-
+	//coin
 	addItemList[int32(serverproto.ResType_Res_Coin)] = levelCfgData.Zeny
 	dropId := this.genDropId(model.LevelDropBossDataList, levelId) //放到income中领取
 	for idx := 0; idx < len(dropId); idx++ {
@@ -1281,7 +1303,11 @@ func (this *RoleBattle) GetQuickBattleReward() {
 	//给道具CopyData
 	var incomeNum = Quick_Battle_Time / incomeData.IVal
 	var addItemList = map[int32]int32{}
-	addItemList[int32(serverproto.ResType_Res_RoleBaseExp)] = levelCfgData.BaseExpOl * incomeNum
+	//时光助力主角经验提升万分比(特权加成)
+	baseExpOl := levelCfgData.BaseExpOl * incomeNum
+	baseExpOlFactor := float32(this.role.GetRoleBase().GetVipData(model.Vip_System_QuickBattleBaseExp)) / 10000.0
+	baseExpOl = int32(float32(baseExpOl) * (1 + baseExpOlFactor))
+	addItemList[int32(serverproto.ResType_Res_RoleBaseExp)] = baseExpOl
 	//coin
 	addItemList[int32(serverproto.ResType_Res_Coin)] = levelCfgData.ZenyOl * incomeNum
 	//伙伴经验
@@ -1491,6 +1517,7 @@ func (this *RoleBattle) evilRefresh(bForce bool, notify bool, bConsume bool) (se
 	if bConsume {
 		specialBossType = EvilBossType_Purple
 	}
+
 	if vipData, ok := model.ConvertVipRight[this.role.GetRoleVipLevel()]; ok {
 		if right, ok := vipData.VipRight[model.Vip_System_Evil]; ok {
 			if right <= 0 {
@@ -1498,6 +1525,27 @@ func (this *RoleBattle) evilRefresh(bForce bool, notify bool, bConsume bool) (se
 			}
 		}
 	}
+	if this.role.roleBT != nil {
+		var boliLevel int32 = 0
+		if this.role.roleBT.boliData != nil {
+			boliLevel = this.role.roleBT.boliData.Level
+		}
+		cfgData, ok := model.ConvertBoliVipData[boliLevel]
+		if ok {
+			if right, ok := cfgData.VipRight[model.Vip_System_Evil]; ok {
+				if right == 0 {
+					specialBossType = EvilBossType_Glod
+				}
+			}
+		}
+	}
+	if this.role.GetRoleRune() != nil && this.role.GetRoleRune().runeBase.IsPassCheck {
+		if right, ok := model.ConvertPassCheckData.VipRight[model.Vip_System_Evil]; ok {
+			if right == 0 {
+				specialBossType = EvilBossType_Glod
+			}
+		}
+	}
 
 	var changeIdx []int32
 	rand.Seed(int64(nowTime))
@@ -2641,6 +2689,8 @@ func (this *RoleBattle) OnlineGetRushMapBaseReward(rewardRound int32) {
 
 func (this *RoleBattle) OnlineProcess() {
 	this.OnlineCheckReward()
+	// 战斗加速时间 上线处理
+	this.FastBattleTimeOnline()
 }
 
 func (this *RoleBattle) OnlineCheckReward() {
@@ -2836,3 +2886,54 @@ func (this *RoleBattle) OnExpeditionRankList(ssAckMsg *serverproto.SSExpeditionS
 	}
 	this.role.ReplayGate(ackMsg, true)
 }
+
+// bt服务器
+// 特殊处理使用道具添加战斗倍数时间
+// addTime(in s)
+func (this *RoleBattle) FastBattleTimeAdd(durationTime int32) {
+	curTime := util.GetTimeMilliseconds()
+	addTime := uint64(durationTime) * 1000
+	if this.lastRecordBattleAcceTime <= 0 {
+		this.lastRecordBattleAcceTime = curTime
+		this.battleAcceDuration = addTime
+	} else {
+		//之前的持续时间用完了,需要重新设置,否则就是累加
+		if this.lastRecordBattleAcceTime+this.battleAcceDuration <= curTime {
+			this.lastRecordBattleAcceTime = curTime
+			this.battleAcceDuration = addTime
+		} else {
+			this.battleAcceDuration += addTime
+		}
+	}
+	this.SetDirty(true)
+
+	ntfMsg := &serverproto.SCPlayerBattleAcctTimeNtf{
+		LastRecordBattleAcceTime: this.lastRecordBattleAcceTime,
+		BattleAcceDuration:       this.battleAcceDuration,
+	}
+	this.role.ReplayGate(ntfMsg, true)
+}
+
+// 战斗加速时间 离线处理
+func (this *RoleBattle) FastBattleTimeOffline() {
+	if this.battleAcceDuration > 0 {
+		curTime := util.GetTimeMilliseconds()
+		if this.lastRecordBattleAcceTime+this.battleAcceDuration <= curTime {
+			this.battleAcceDuration = 0
+		} else {
+			this.battleAcceDuration -= curTime - this.lastRecordBattleAcceTime
+		}
+		this.lastRecordBattleAcceTime = curTime
+		util.InfoF("uid=%v FastBattleTimeOffline duration=%v", this.role.GetUUid(), this.battleAcceDuration)
+		this.SetDirty(true)
+	}
+}
+
+// 战斗加速时间 上线处理
+func (this *RoleBattle) FastBattleTimeOnline() {
+	if this.battleAcceDuration > 0 {
+		curTime := util.GetTimeMilliseconds()
+		this.lastRecordBattleAcceTime = curTime
+		this.SetDirty(true)
+	}
+}

+ 39 - 4
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_battle_attr.go

@@ -43,6 +43,8 @@ const (
 	Attr_Change_Pet_Equip = 22 //宠物印记(装备)
 	Attr_Change_Pet_Skill = 23 //只涉及到宠物战力变更
 	Attr_Change_Pet_Qiyue = 25 //契约属性
+
+	Attr_Change_VipPrivilege = 50 // vip,同行证等特权添加属性处理
 )
 const s_AttrNum = 30
 
@@ -105,6 +107,7 @@ type ActorAttr struct {
 	curSakeAttr       map[serverproto.Attr]float32 //藏品添加属性
 	curSkillEquipAttr map[serverproto.Attr]float32 //神器槽位属性
 	curHeadAttr       map[serverproto.Attr]float32 //称号属性
+	curPrivilegeAttr  map[serverproto.Attr]float32 //称号属性
 	//pet
 	curPetAttrForPetBase  map[serverproto.Attr]float32 //宠物自身base(level + advLevel)
 	curPetAttrForPetBond  map[serverproto.Attr]float32 //来自宠物羁绊的属性
@@ -159,6 +162,7 @@ func newActorAttr(mag *RoleBattleAttr, hId int32, heroConfigId int32, level int3
 		curHeadFrameAttr:        map[serverproto.Attr]float32{},
 		curSakeAttr:             map[serverproto.Attr]float32{},
 		curSkillEquipAttr:       map[serverproto.Attr]float32{},
+		curPrivilegeAttr:        map[serverproto.Attr]float32{},
 		curSkillFightPower:      -1,
 		curSkillEquipFightPower: -1,
 		curPetAttrForPetQiyue:   map[serverproto.Attr]float32{},
@@ -770,12 +774,14 @@ func (this *ActorAttr) calActorAttr(heroData *serverproto.HeroData, attrList []*
 		if this.isMainHero {
 			changePoint := this.calcAddPointAttrs(heroData, attrList)
 			changeSkill := this.calcSkillAttrs(heroData, attrChangeSt)
-			changEquip := this.calcEquipAttrs(heroData)
+			changeEquip := this.calcEquipAttrs(heroData)
+			changePrivilege := this.calcPrivilegeAttrs(heroData)
 			//this.calcFashionAttr(fashionData)
 			changPet := this.calcPetAttr(heroData, attrChangeSt)
 			changeHeadFrame := this.calcHeadFrameAttrs(heroData, attrChangeSt)
 			changeSkillEquip := this.calcSkillEquipSlotAttrs(heroData)
-			if changePoint || changeSkill || changEquip || changPet || changeHeadFrame || changeSkillEquip {
+			if changePoint || changeSkill || changeEquip || changPet ||
+				changeHeadFrame || changeSkillEquip || changePrivilege {
 				bChange = true
 			}
 		} else {
@@ -939,6 +945,22 @@ func (this *ActorAttr) calcEquipAttrs(heroData *serverproto.HeroData) bool {
 	return true
 }
 
+// 特权添加属性处理
+func (this *ActorAttr) calcPrivilegeAttrs(heroData *serverproto.HeroData) bool {
+	if !this.changeSetList.Has(Attr_Change_VipPrivilege) {
+		return false
+	}
+	this.changeSetList.Remove(Attr_Change_VipPrivilege)
+
+	attrList := map[serverproto.Attr]float32{}
+	this.GetPrivilegeAttr(attrList)
+
+	this.calAttr(this.curPrivilegeAttr, attrList)
+	this.curPrivilegeAttr = attrList
+
+	return true
+}
+
 //card
 func (this *ActorAttr) calcCardAttrs(heroData *serverproto.HeroData) bool {
 	if !this.changeSetList.Has(Attr_Change_Card) {
@@ -1435,6 +1457,18 @@ func (this *ActorAttr) GetEquipAttr(slotData *serverproto.SlotData, baseAttrList
 		}
 	}
 }
+func (this *ActorAttr) GetPrivilegeAttr(baseAttrList map[serverproto.Attr]float32) {
+	// RO通行证购买后添加属性
+	if this.getRole().GetRoleRune() == nil {
+		return
+	}
+	if !this.getRole().GetRoleRune().runeBase.IsPassCheck {
+		return
+	}
+	for key, val := range model.ConvertPassCheckData.AttrList {
+		baseAttrList[serverproto.Attr(key)] += float32(val)
+	}
+}
 func (this *ActorAttr) GetCardAttr(slotDetail *serverproto.SlotDetailData, baseAttrList map[serverproto.Attr]float32) {
 	for _, data := range slotDetail.CardIdList {
 		convertData, ok := model.ConvertCardList[data]
@@ -2083,14 +2117,15 @@ func (this *RoleBattleAttr) getActorAttr(heroData *serverproto.HeroData) *ActorA
 			Attr_Change_Fashion,
 			Attr_Change_Card,
 			Attr_Change_Equip,
-			Attr_Change_AddPoint,
 			Attr_Change_Skill,
+			Attr_Change_AddPoint,
 			Attr_Change_Advance,
 			Attr_Change_Strength,
 			Attr_Change_Pet,
 			Attr_Change_HeadFrame,
 			Attr_Change_Sake,
-			Attr_Change_Skill_Equip_Slot)
+			Attr_Change_Skill_Equip_Slot,
+			Attr_Change_VipPrivilege)
 	}
 	return actorAttr
 }

+ 653 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_bt.go

@@ -0,0 +1,653 @@
+package model
+
+import (
+	"math"
+	"rocommon/util"
+	"roserver/baseserver/model"
+	"roserver/serverproto"
+	"time"
+)
+
+func (this *Role) BoliShopInfo() {
+	this.roleBT.GetShopInfo()
+}
+func (this *Role) BoliLevelUp(num int32) {
+	ret := this.roleBT.BoliLevelUp(num)
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCBoliShopLevelUpAck{
+			Error: int32(ret),
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+func (this *Role) BoliReward(RewardLevel, idx int32) {
+	ret := this.roleBT.BoliDayReward(RewardLevel, idx)
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCBoliShopRewardAck{
+			Error: int32(ret),
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+func (this *Role) BoliShopBuy(goodsId, num int32) {
+	ret, _, _ := this.roleBT.BoliShopBuy(goodsId, num)
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCBoliShopBuyAck{
+			Error:   int32(ret),
+			GoodsId: goodsId,
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+func (this *Role) FirstRechargeReward(rewardIdx int32) {
+	ret := this.roleBT.FirstRechargeReward(rewardIdx)
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCBTFirstRechargeRewardAck{
+			Error:     int32(ret),
+			RewardIdx: rewardIdx,
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+func (this *Role) Recharge100Reward() {
+	ret := this.roleBT.Recharge100Reward()
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		ackMsg := &serverproto.SCBTRecharge100RewardAck{
+			Error: int32(ret),
+		}
+		this.ReplayGate(ackMsg, true)
+	}
+}
+
+// bt服务器功能
+type RoleBT struct {
+	SaveObject
+
+	boliData *serverproto.BTBoliData
+	baseData *serverproto.BTBaseData
+}
+
+func newRoleBT(r *Role) *RoleBT {
+	ret := &RoleBT{
+		SaveObject: SaveObject{
+			role: r,
+		},
+		boliData: &serverproto.BTBoliData{},
+		baseData: &serverproto.BTBaseData{},
+	}
+	return ret
+}
+
+func (this *RoleBT) Load(msg interface{}) bool {
+	proRole := msg.(*serverproto.Role)
+	if proRole != nil && proRole.RoleBt != nil {
+		if proRole.RoleBt.BoliData != nil {
+			this.boliData = proRole.RoleBt.BoliData
+		}
+		if proRole.RoleBt.BaseData != nil {
+			this.baseData = proRole.RoleBt.BaseData
+		}
+		//隔天显示功能
+		if this.boliData.ShowTimeStamp <= 0 {
+			this.boliData.ShowTimeStamp = util.GetLatest5Hour()
+			this.SetDirty(true)
+		}
+		//默认直接解锁
+		if this.baseData.FirstRechargeTime <= 0 {
+			this.baseData.FirstRechargeTime = util.GetTimeMilliseconds()
+			this.SetDirty(true)
+		}
+	}
+	return true
+}
+
+func (this *RoleBT) CopyData(copyData *serverproto.RoleBT) {
+	copyData.BoliData = &serverproto.BTBoliData{
+		Level:         this.boliData.Level,
+		RewardTime:    this.boliData.RewardTime,
+		DayRewardList: this.boliData.DayRewardList,
+		ShowTimeStamp: this.boliData.ShowTimeStamp,
+	}
+	copyData.BaseData = this.baseData
+}
+
+func (this *RoleBT) DailyReset(notify bool, oldDailyResetTimeStamp uint64) {
+	addItemList := map[int32]int32{}
+	for level := 0; level <= int(this.boliData.Level); level++ {
+		rewardItem := this.getBoliLevelReward(int32(level), 1)
+		if rewardItem.Key > 0 && rewardItem.Value > 0 {
+			addItemList[rewardItem.Key] += rewardItem.Value
+		}
+	}
+	if this.boliData.RewardTime > 0 {
+		this.boliData.DayRewardList = []*serverproto.KeyValueType{}
+		this.boliData.RewardTime = 0
+		this.SetDirty(true)
+		if notify {
+			this.dataChangeNtf()
+		}
+	}
+
+	// 通过邮件发送
+	if len(addItemList) > 0 {
+		this.role.AddMail(model.GlobalMailBoliShop, serverproto.MailType_MailType_BoliSHop, addItemList, nil, "", "")
+	}
+
+	//根据当前时间计算间隔多天的邮件数量
+	addItemList = map[int32]int32{}
+	curTime := util.GetTimeMilliseconds()
+	diff := util.GetDurationDay2(oldDailyResetTimeStamp, curTime) - 2
+	if diff > 0 {
+		for level := 0; level <= int(this.boliData.Level); level++ {
+			rewardItem := this.getBoliLevelReward(int32(level), 1)
+			if rewardItem.Key > 0 && rewardItem.Value > 0 {
+				addItemList[rewardItem.Key] += rewardItem.Value
+			}
+		}
+		if len(addItemList) > 0 {
+			if diff > int32(time.Saturday+1) {
+				diff = int32(time.Saturday + 1)
+			}
+			for idx := 0; idx < int(diff); idx++ {
+				this.role.AddMail(model.GlobalMailBoliShop, serverproto.MailType_MailType_BoliSHop, addItemList, nil, "", "")
+			}
+		}
+	}
+
+	//百元大礼包
+	if this.baseData != nil && this.baseData.Recharge100Time > 0 {
+		this.baseData.Recharge100RewardDay = util.GetDurationDay2(this.baseData.Recharge100Time, curTime)
+		//3档奖励
+		if this.baseData.Recharge100RewardDay > 3 {
+			this.baseData.Recharge100RewardDay = 3
+		}
+		this.SetDirty(true)
+		if notify {
+			ntfMsg := &serverproto.SCBTRecharge100Ntf{
+				Recharge100Time:        this.baseData.Recharge100Time,
+				Recharge100RewardDay:   this.baseData.Recharge100RewardDay,
+				Recharge100RewardState: this.baseData.Recharge100RewardState,
+			}
+			this.role.ReplayGate(ntfMsg, true)
+		}
+	}
+}
+
+func (this *RoleBT) Save() {
+	this.SetDirty(false)
+	util.DebugF("uid=%v RoleBT save...", this.role.GetUUid())
+
+	ssMsg := &serverproto.SSBTDataSaveNtf{
+		BtBoliData: this.boliData,
+		BaseData:   this.baseData,
+	}
+	this.role.SendDb(ssMsg)
+}
+
+// 获取玻璃商店物品列表
+func (this *RoleBT) GetShopInfo() {
+	ackMsg := &serverproto.SCBoliShopInfoAck{
+		ShopData: &serverproto.ShopData{},
+	}
+	this.getBoliShopInfo(ackMsg.ShopData)
+
+	this.role.ReplayGate(ackMsg, true)
+}
+
+// 获取波利商城物品信息
+func (this *RoleBT) getBoliShopInfo(msgData *serverproto.ShopData) {
+	msgData.DayEnd = int64(util.GetLatest5Hour()) / 1000
+	msgData.WeekEnd = int64(util.GetLatestWeek5Hour(0)) / 1000
+
+	for _, buyData := range this.boliData.BuyInfoList {
+		cfgData, ok := model.ConvertBoliShopDataById[buyData.GoodsId]
+		if !ok {
+			continue
+		}
+		if len(cfgData.Conditions) > 0 {
+			bRet := this.role.GetRoleBase().checkUnLockState(0, cfgData.Conditions)
+			if bRet != serverproto.ErrorCode_ERROR_OK {
+				continue
+			}
+		}
+
+		// 活动掉落
+		if cfgData.ShopItem.HdItemId > 0 && !CheckHDItemAdd(cfgData.ShopItem.HdItemId, this.role) {
+			continue
+		}
+		this.role.roleShop.GetCurRoundBuyNum(buyData, cfgData.ShopItem)
+
+		msgData.BuyInfo = append(msgData.BuyInfo, buyData)
+	}
+
+	// 根据等级获取商城物品列表
+	for levelIdx := 0; levelIdx <= int(this.boliData.Level); levelIdx++ {
+		shopLevelCfgData, ok := model.ConvertBoliShopData[int32(levelIdx)]
+		if !ok {
+			continue
+		}
+		for idx := 0; idx < len(shopLevelCfgData); idx++ {
+			// 活动掉落
+			if shopLevelCfgData[idx].ShopItem.HdItemId > 0 &&
+				!CheckHDItemAdd(shopLevelCfgData[idx].ShopItem.HdItemId, this.role) {
+				continue
+			}
+
+			if len(shopLevelCfgData[idx].Conditions) > 0 {
+				bRet := this.role.GetRoleBase().checkUnLockState(0, shopLevelCfgData[idx].Conditions)
+				if bRet != serverproto.ErrorCode_ERROR_OK {
+					continue
+				}
+			}
+			msgData.ItemInfo = append(msgData.ItemInfo, shopLevelCfgData[idx].ShopItem)
+		}
+	}
+}
+
+func (this *RoleBT) BoliShopBuy(goodsId, num int32) (retErr serverproto.ErrorCode, retBuyNum int32, buyTime uint64) {
+	retErr = serverproto.ErrorCode_ERROR_OK
+	if num <= 0 || goodsId <= 0 {
+		retErr = serverproto.ErrorCode_ERROR_FAIL
+		return
+	}
+	shopCfgData, ok := model.ConvertBoliShopDataById[goodsId]
+	if !ok {
+		retErr = serverproto.ErrorCode_ERROR_FAIL
+		return
+	}
+
+	// checkBuyLimit
+	buyNum, err := this.checkBuyLimit(shopCfgData.ShopItem, goodsId, num)
+	if err != serverproto.ErrorCode_ERROR_OK {
+		retErr = err
+		return
+	}
+	if buyNum > 0 && buyNum < num {
+		retErr = serverproto.ErrorCode_ERROR_SHOP_MAX_BUY_NUM
+		return
+	}
+
+	// 消耗资源判断
+	price := shopCfgData.PayForNum
+	if shopCfgData.DiscountPayForNum > 0 {
+		price = shopCfgData.DiscountPayForNum
+	}
+	needRes := uint64(price) * uint64(num)
+	if needRes >= math.MaxInt32 {
+		retErr = serverproto.ErrorCode_ERROR_SHOP_MAX_BUY_NUM
+		return
+	}
+	if !this.role.GetRoleBag().CanDelItem(shopCfgData.PayForType, int32(needRes)) {
+		retErr = this.role.GetResNotice(shopCfgData.PayForType)
+		return
+	}
+	err = this.role.GetRoleBag().CanAddItem(shopCfgData.GoodsItem, num)
+	if err != serverproto.ErrorCode_ERROR_OK {
+		retErr = err
+		return
+	}
+
+	this.role.GetRoleBag().DelItem(shopCfgData.PayForType, int32(needRes), AddItemST{
+		AddFrom: AddFrom_BT_Boli,
+	})
+	this.role.GetRoleBag().AddItem(shopCfgData.GoodsItem, num, AddItemST{
+		AddFrom: AddFrom_BT_Boli,
+		Notify:  true,
+	})
+
+	retBuyNum = num
+	// 非无限购买商品
+	curTime := uint64(util.GetTimeSeconds())
+	if buyNum > 0 {
+		buyInfo := this.getBuyInfo(goodsId)
+		if buyInfo == nil {
+			buyInfo = &serverproto.BuyInfo{
+				GoodsId: goodsId,
+				BuyNum:  num,
+			}
+			this.boliData.BuyInfoList = append(this.boliData.BuyInfoList, buyInfo)
+		} else {
+			buyInfo.BuyNum += num
+			retBuyNum = buyInfo.BuyNum
+		}
+		buyInfo.BuyTime = curTime
+		// 刷新时间
+		switch shopCfgData.ShopItem.LimitType {
+		case LIMIT_TYPE_DAY:
+			buyInfo.RefTime = int64(util.GetLatest5Hour() / 1000)
+		case LIMIT_TYPE_WEEK:
+			buyInfo.RefTime = int64(util.GetLatestMonth5Hour() / 1000)
+		default:
+			buyInfo.RefTime = 0
+		}
+	}
+	TaskMagCheck(this.role, serverproto.TaskType_Shop_Buy_Count, 0)
+	this.SetDirty(true)
+
+	buyTime = curTime
+	ackMsg := &serverproto.SCBoliShopBuyAck{
+		GoodsId:    goodsId,
+		CurNum:     retBuyNum,
+		CurBuyTime: curTime,
+	}
+	ackMsg.ItemList = append(ackMsg.ItemList, &serverproto.KeyValueType{
+		Key:   shopCfgData.GoodsItem,
+		Value: num,
+	})
+	this.role.ReplayGate(ackMsg, true)
+	return
+}
+
+// 升级boli商城等级
+func (this *RoleBT) BoliLevelUp(num int32) serverproto.ErrorCode {
+	if num <= 0 || num >= math.MaxInt32 {
+		util.InfoF("uid=%v BoliLevelUp num invalid", this.role.GetUUid())
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+	if _, ok := model.ConvertBoliVipData[this.boliData.Level+1]; !ok {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+
+	if !this.role.roleBag.CanDelItem(int32(serverproto.ResType_Res_ROCoin), num) {
+		return serverproto.ErrorCode_ERROR_BT_BOLISHOP_ROCOIN_NOT_ENOUGH
+	}
+	this.role.DelItem(int32(serverproto.ResType_Res_ROCoin), num, AddItemST{
+		AddFrom: AddFrom_BT_Boli,
+		Notify:  true,
+	})
+
+	addExp := int32(float64(num) * model.GlobalRoCoinToExp)
+	oldLevel := this.boliData.Level
+	this.role.AddItem(int32(serverproto.ResType_Res_BoliShopExp), addExp, AddFrom_BT_Boli)
+
+	util.InfoF("uid=%v BoliLevelUp costCoin=%v addExp=%v oldLevel=%v", this.role.GetUUid(), num, addExp, oldLevel)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+
+// called by add res
+func (this *RoleBT) OnBoliLevelUp(newLevel int32) {
+	oldLevel := this.boliData.Level
+	if oldLevel != newLevel {
+		this.boliData.Level = newLevel
+		this.SetDirty(true)
+		this.dataChangeNtf()
+
+		ackMsg := &serverproto.SCBoliShopLevelUpAck{
+			ShopData: &serverproto.ShopData{},
+		}
+		this.getBoliShopInfo(ackMsg.ShopData)
+		this.role.ReplayGate(ackMsg, true)
+		util.InfoF("uid=%v OnBoliLevelUp oldLevel=%v newLevel=%v", this.role.GetUUid(), this.boliData.Level)
+
+		this.role.GetRoleBattle().CheckEvilBattleCount()
+	}
+}
+
+// 领取特权礼包
+func (this *RoleBT) BoliDayReward(level, idx int32) serverproto.ErrorCode {
+	if level < 0 || level > this.boliData.Level {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+
+	rewardItem := this.getBoliLevelReward(level, idx)
+	if rewardItem.Key <= 0 || rewardItem.Value <= 0 {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+	this.boliData.DayRewardList = append(this.boliData.DayRewardList, &serverproto.KeyValueType{
+		Key:   level,
+		Value: idx,
+	})
+	this.boliData.RewardTime = util.GetTimeMilliseconds()
+	this.SetDirty(true)
+	this.dataChangeNtf()
+
+	this.role.AddItem(rewardItem.Key, rewardItem.Value, AddFrom_BT_Boli)
+
+	ackMsg := &serverproto.SCBoliShopRewardAck{}
+	ackMsg.RewardList = append(ackMsg.RewardList, &rewardItem)
+	this.role.ReplayGate(ackMsg, true)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+
+// rewardIdx = 0表示默认选择第一个
+func (this *RoleBT) getBoliLevelReward(level, rewardIdx int32) (reward serverproto.KeyValueType) {
+	boliLevelCfgData, ok := model.ConvertBoliVipData[level]
+	if !ok {
+		return
+	}
+	// 当前无奖励/奖励数量不够
+	if rewardIdx < 0 || rewardIdx > int32(len(boliLevelCfgData.DayReward)) {
+		return
+	}
+	if rewardIdx <= 0 {
+		rewardIdx = 1
+	}
+
+	for idx := 0; idx < len(this.boliData.DayRewardList); idx++ {
+		if this.boliData.DayRewardList[idx].Key == level &&
+			this.boliData.DayRewardList[idx].Value > 0 {
+			// 已经领取过奖励
+			return
+		}
+	}
+
+	reward = *boliLevelCfgData.DayReward[int(rewardIdx-1)]
+	return
+}
+
+func (this *RoleBT) dataChangeNtf() {
+	ntfMsg := &serverproto.SCBoliDataChangeNtf{
+		BoliData: this.boliData,
+	}
+	this.role.ReplayGate(ntfMsg, true)
+}
+
+func (this *RoleBT) checkBuyLimit(shopItemCfg *serverproto.ShopItem, goodsId, goodsNum int32) (int32, serverproto.ErrorCode) {
+	// 不限购
+	if shopItemCfg.LimitType == LIMIT_TYPE_NONE {
+		if shopItemCfg.HdItemId > 0 && !CheckHDItemAdd(shopItemCfg.HdItemId, this.role) {
+			return 0, serverproto.ErrorCode_ERROR_SHOP_NOT_IN_RANGE_TIME
+		}
+		return -1, serverproto.ErrorCode_ERROR_OK
+	} else if shopItemCfg.LimitType == LIMIT_TYPE_RANGE {
+		// 判定时间//在不在限购时间内
+		curTime := util.GetTimeSeconds()
+		if curTime > shopItemCfg.EndTime || curTime < shopItemCfg.StartTime {
+			return 0, serverproto.ErrorCode_ERROR_SHOP_NOT_IN_RANGE_TIME
+		}
+	}
+
+	// 购买记录处理
+	buyInfo := this.getBuyInfo(goodsId)
+	if buyInfo == nil {
+		return shopItemCfg.Count, serverproto.ErrorCode_ERROR_OK
+	} else {
+		switch shopItemCfg.LimitType {
+		case LIMIT_TYPE_FOREVER:
+			fallthrough
+		case LIMIT_TYPE_SPECIAL:
+			fallthrough
+		case LIMIT_TYPE_RANGE:
+			if shopItemCfg.Count <= buyInfo.BuyNum {
+				return 0, serverproto.ErrorCode_ERROR_SHOP_MAX_BUY_NUM
+			} else {
+				return shopItemCfg.Count - buyInfo.BuyNum, serverproto.ErrorCode_ERROR_OK
+			}
+		case LIMIT_TYPE_DAY:
+			fallthrough
+		case LIMIT_TYPE_WEEK:
+			// 固定时间点刷新
+			return this.getCurRoundBuyNum(shopItemCfg, buyInfo)
+		default:
+			return 0, serverproto.ErrorCode_ERROR_OK
+		}
+	}
+}
+
+// 获取已经购买过商品的信息
+func (this *RoleBT) getBuyInfo(goodsId int32) *serverproto.BuyInfo {
+	for idx := 0; idx < len(this.boliData.BuyInfoList); idx++ {
+		if this.boliData.BuyInfoList[idx].GoodsId == goodsId {
+			return this.boliData.BuyInfoList[idx]
+		}
+	}
+	return nil
+}
+
+// 固定时间段内的购买可购买数量获取
+func (this *RoleBT) getCurRoundBuyNum(shopItemCfg *serverproto.ShopItem, buyInfo *serverproto.BuyInfo) (int32, serverproto.ErrorCode) {
+	if shopItemCfg == nil {
+		return 0, serverproto.ErrorCode_ERROR_OK
+	}
+
+	curTime := util.GetTimeSeconds()
+	if curTime < buyInfo.RefTime {
+		if shopItemCfg.Count <= buyInfo.BuyNum {
+			return 0, serverproto.ErrorCode_ERROR_SHOP_MAX_BUY_NUM
+		} else {
+			return shopItemCfg.Count - buyInfo.BuyNum, serverproto.ErrorCode_ERROR_OK
+		}
+	} else {
+		// 在后续购买流程中会设置下次刷新时间
+		buyInfo.BuyNum = 0
+		buyInfo.BuyTime = 0
+		this.SetDirty(true)
+		return shopItemCfg.Count, serverproto.ErrorCode_ERROR_OK
+	}
+}
+
+func (this *RoleBT) UnlockBTSystem() {
+	//根据关卡解锁超值首充
+	if this.baseData.FirstRechargeTime <= 0 && model.ConvertBTFirstRecharge != nil {
+		conditionList := model.ConvertBTFirstRecharge.OpenConditionList
+		unlockState := this.role.GetRoleBase().checkUnLockState(0, conditionList)
+		totalRecharge := this.role.GetTotalRecharge() + float32(this.role.GetBTJiaTotalRecharge())
+		if unlockState == serverproto.ErrorCode_ERROR_OK && model.ConvertBTFirstRecharge.RechargeAmount <= totalRecharge {
+			this.baseData.FirstRechargeTime = util.GetTimeMilliseconds()
+			this.SetDirty(true)
+
+			ntfMsg := &serverproto.SCBTFirstRechargeNtf{
+				FirstRechargeTime: this.baseData.FirstRechargeTime,
+			}
+			this.role.ReplayGate(ntfMsg, true)
+		}
+	}
+}
+
+//超值首充 & 百元大礼包
+func (this *RoleBT) FirstRechargeReward(rewardIdx int32) serverproto.ErrorCode {
+	//todo...
+	//if this.baseData.FirstRechargeTime <= 0 || rewardIdx <= 0 || rewardIdx > 3 || model.ConvertBTFirstRecharge == nil {
+	//	return serverproto.ErrorCode_ERROR_FAIL
+	//}
+	if rewardIdx <= 0 || rewardIdx > 3 || model.ConvertBTFirstRecharge == nil {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+	//判断是否已经领取奖励
+	if this.baseData.FirstRechargeRewardState&(1<<uint32(rewardIdx)) > 0 {
+		return serverproto.ErrorCode_ERROR_BT_FIRSTRECHARGE_REWARDED
+	}
+	//判断累计充值是否达到(花钱购买累计充值+免费充值额度使用)
+	totalRecharge := uint64(this.role.GetTotalRecharge()) + this.role.GetBTJiaTotalRecharge()
+
+	rewardCfgData := model.ConvertBTFirstRecharge.RewardList[rewardIdx-1]
+	if totalRecharge < uint64(rewardCfgData.RewardCondition) {
+		return serverproto.ErrorCode_ERROR_BT_RECHARGE_NO_REWARD
+	}
+
+	this.baseData.FirstRechargeRewardState |= 1 << uint32(rewardIdx)
+	this.SetDirty(true)
+	ntfMsg := &serverproto.SCBTFirstRechargeNtf{
+		FirstRechargeTime:        this.baseData.FirstRechargeTime,
+		FirstRechargeRewardState: this.baseData.FirstRechargeRewardState,
+	}
+
+	addItemList := map[int32]int32{}
+	for idx := 0; idx < len(rewardCfgData.Reward); idx++ {
+		addItemList[rewardCfgData.Reward[idx].Key] += rewardCfgData.Reward[idx].Value
+	}
+	this.role.AddItemList(addItemList, AddFrom_BT_Recharge, true)
+
+	this.role.ReplayGate(ntfMsg, true)
+	ackMsg := &serverproto.SCBTFirstRechargeRewardAck{
+		RewardIdx:      rewardIdx,
+		RewardItemList: rewardCfgData.Reward,
+	}
+	this.role.ReplayGate(ackMsg, true)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+
+func (this *RoleBT) Recharge100Reward() serverproto.ErrorCode {
+	//没有达到充值条件
+	if this.baseData.Recharge100Time <= 0 {
+		return serverproto.ErrorCode_ERROR_BT_RECHARGE_NO_REWARD
+	}
+
+	// 避免出现问题重新计算天数
+	curTime := util.GetTimeMilliseconds()
+	this.baseData.Recharge100RewardDay = util.GetDurationDay2(this.baseData.Recharge100Time, curTime)
+	if this.baseData.Recharge100RewardState >= this.baseData.Recharge100RewardDay ||
+		this.baseData.Recharge100RewardState >= int32(len(model.ConvertBTRecharge100.RewardList)) {
+		return serverproto.ErrorCode_ERROR_BT_RECHARGE_NO_REWARD
+	}
+	ackMsg := &serverproto.SCBTRecharge100RewardAck{}
+	addItemList := map[int32]int32{}
+	idx := this.baseData.Recharge100RewardState + 1
+	for ; idx <= int32(len(model.ConvertBTRecharge100.RewardList)); idx++ {
+		if idx <= this.baseData.Recharge100RewardDay {
+			this.baseData.Recharge100RewardState = idx
+			this.SetDirty(true)
+
+			rewardCfgData := model.ConvertBTRecharge100.RewardList[idx-1]
+			for idx := 0; idx < len(rewardCfgData.Reward); idx++ {
+				addItemList[rewardCfgData.Reward[idx].Key] += rewardCfgData.Reward[idx].Value
+			}
+			ackMsg.RewardItemList = append(ackMsg.RewardItemList, rewardCfgData.Reward...)
+		} else {
+			break
+		}
+	}
+	if len(addItemList) > 0 {
+		this.role.AddItemList(addItemList, AddFrom_BT_Recharge, true)
+
+		ntfMsg := &serverproto.SCBTRecharge100Ntf{
+			Recharge100Time:        this.baseData.Recharge100Time,
+			Recharge100RewardDay:   this.baseData.Recharge100RewardDay,
+			Recharge100RewardState: this.baseData.Recharge100RewardState,
+		}
+		this.role.ReplayGate(ntfMsg, true)
+
+		this.role.ReplayGate(ackMsg, true)
+	}
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+func (this *RoleBT) BuyRecharge100(payRewardInfo *serverproto.PayOrderSaveInfo) serverproto.ErrorCode {
+	//已经购买
+	if this.baseData.Recharge100Time > 0 || model.ConvertBTRecharge100 == nil {
+		return serverproto.ErrorCode_ERROR_BT_RECHARGE100_BUY
+	}
+
+	payRewardInfo.Count = 1
+	payRewardInfo.GoodsId = 2
+	payRewardInfo.Amount = model.ConvertBTRecharge100.RechargeAmount
+	payRewardInfo.GoodsName = model.ConvertBTRecharge100.Name
+
+	util.InfoF("uid=%v buyRecharge100 id=%v price=%v", this.role.GetUUid(), payRewardInfo.GoodsId, payRewardInfo.Amount)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+func (this *RoleBT) OnBuyRecharge100(payRewardInfo *serverproto.PayOrderSaveInfo) {
+	this.baseData.Recharge100Time = util.GetTimeMilliseconds()
+	this.baseData.Recharge100RewardDay = 1 //默认为第一天
+	this.SetDirty(true)
+
+	ntfMsg := &serverproto.SCBTRecharge100Ntf{
+		Recharge100Time:      this.baseData.Recharge100Time,
+		Recharge100RewardDay: this.baseData.Recharge100RewardDay,
+	}
+	this.role.ReplayGate(ntfMsg, true)
+}

+ 11 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_chat.go

@@ -291,4 +291,15 @@ func (this *RoleChat) SendDB2Mysql(fromId, targetId uint64, msgType int32, conte
 		Content:   content,
 	}
 	this.role.SendDb(ssMsg)
+
+	//通过social->gmweb 发送给gm后台做聊天消息监控
+	ssMsgGmweb := &serverproto.SSWebGMChatMsgNtf{
+		Uid:          fromId,
+		TargetUid:    targetId,
+		MsgType:      msgType,
+		Content:      content,
+		ChatSelfName: this.role.GetNickName(),
+		SelectZoneId: this.role.GetSelectZone(),
+	}
+	this.role.SendSocial(ssMsgGmweb)
 }

+ 10 - 1
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_cross.go

@@ -503,8 +503,11 @@ func (this *RoleCross) YuanHangTrialReward() serverproto.ErrorCode {
 	for k, v := range convertData.ShipRewardList {
 		addItemList[k] += v
 	}
+	// 特权(飞艇被抢劫掉落减少至)
+	vipTransportRobbery := this.role.GetRoleBase().GetVipData(model.Vip_System_TransportRobbery)
 	for k, v := range convertData.BeAttackLoseItemList {
-		addItemList[k] -= v * this.getTrial().TrialData.BeChallengeNum
+		tmpVal := float32(v*this.getTrial().TrialData.BeChallengeNum) * float32(vipTransportRobbery) / 10000.0
+		addItemList[k] -= int32(tmpVal)
 		if addItemList[k] <= 0 {
 			addItemList[k] = 0
 			delete(addItemList, k)
@@ -640,6 +643,12 @@ func (this *RoleCross) UpdateTrialInfo(beChangeNum int32) {
 
 func (this *RoleCross) AddLog(logData *serverproto.YuanHangTrialLogData) {
 	if this.getTrial() != nil {
+		// 特权(飞艇被抢劫掉落减少至)
+		vipTransportRobbery := this.role.GetRoleBase().GetVipData(model.Vip_System_TransportRobbery)
+		for idx := 0; idx < len(logData.ItemList); idx++ {
+			tmpVal := float32(logData.ItemList[idx].Value) / 10000.0 * float32(vipTransportRobbery)
+			logData.ItemList[idx].Value = int32(tmpVal)
+		}
 		this.getTrial().LogList = append(this.getTrial().LogList, logData)
 		this.SetDirty(true)
 		if len(this.getTrial().LogList) > MaxUidLogCount+10 {

+ 14 - 4
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_draw.go

@@ -11,6 +11,8 @@ const (
 	DrawType_Card       = 1
 	DrawType_Pet        = 2
 	DrawType_SkillEquip = 3
+	DrawType_EggsGold    = 4 // 金蛋
+	DrawType_EggsSpecial = 5 // 彩蛋
 
 	DrawPetEnableLimitNum        = 400
 	DrawCardEnableLimitNum       = 400
@@ -20,6 +22,7 @@ const (
 const (
 	Draw_Count_One  = 1
 	Draw_Count_Five = 5
+	Draw_Count_Ten  = 10
 )
 
 type RoleDraw struct {
@@ -159,7 +162,7 @@ func (this *RoleDraw) DrawReq(drawType int32, drawCount int32, ackMsg *serverpro
 		goldNum = (drawCount - itemNum) * costData.SourceNum
 
 		curSourceNum := this.role.GetRmb()
-		if curSourceNum < uint32(goldNum) {
+		if curSourceNum < uint32(goldNum) || goldNum <= 0 {
 			return serverproto.ErrorCode_ERROR_DRAWSYSTEM_RES_NOT_ENOUGH
 		}
 		isUseGold = true
@@ -194,7 +197,7 @@ func (this *RoleDraw) DrawReq(drawType int32, drawCount int32, ackMsg *serverpro
 				})
 			}
 		}
-	} else if drawCount == Draw_Count_Five {
+	} else if drawCount == Draw_Count_Five || drawCount == Draw_Count_Ten {
 		extraPoint = this.GetDrawItem(drawCfg, isUseGold, totalItemList, ackMsg)
 	}
 	if len(totalItemList) <= 0 {
@@ -211,7 +214,7 @@ func (this *RoleDraw) DrawReq(drawType int32, drawCount int32, ackMsg *serverpro
 	} else {
 		this.DrawSystem[drawType].DrawTimes += extraPoint
 	}
-	//如果次数岛屿配置次数,给累计奖励
+	//如果次数>=配置次数,给累计奖励
 	var bSuperUnlockRechargeDropId int32 = 0
 	if this.DrawSystem[drawType].DrawTimes >= costData.Total {
 		var exItemList = map[int32]int32{}
@@ -283,7 +286,14 @@ func (this *RoleDraw) DrawReq(drawType int32, drawCount int32, ackMsg *serverpro
 			//活动召唤
 			if costData.ActivitiesId > 0 {
 				this.role.GetRoleBag().DelItemList(removeItemList, AddItemST{AddFrom: AddFrom_ActivitySummon})
-				this.role.AddItemList(totalItemList, AddFrom_ActivitySummon, true)
+
+				if costData.SummonType == DrawType_EggsGold {
+					this.role.AddItemList(totalItemList, AddFrom_ActivitySmashEggs, true)
+				} else if costData.SummonType == DrawType_EggsSpecial {
+					this.role.AddItemList(totalItemList, AddFrom_ActivitySmashEggsSpeical, true)
+				} else {
+					this.role.AddItemList(totalItemList, AddFrom_ActivitySummon, true)
+				}
 				//召唤类型
 				switch costData.SummonType {
 				case DrawType_Card:

+ 17 - 1
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_map.go

@@ -109,7 +109,7 @@ type RoleMap struct {
 	targetPos serverproto.Position
 
 	ChallengeBossId   uint64
-	challengeBossList map[int32]int32
+	challengeBossList map[int32]int32 //[挑战过的bossid,次数]
 
 	curLineNum int32 //当前选择并成功进入的地图线路
 }
@@ -369,6 +369,7 @@ func (this *RoleMap) GetPlayerMapShowInfo(info *serverproto.PlayerShowInfo) {
 func (this *RoleMap) MapPlayerChallengeWorldBoss(challengeBossUid uint64, summonIdx int32, aoiLineStr string) {
 	cfgBossDataInfo, ok := model.ConvertWorldBossChangePlayList[int32(challengeBossUid)]
 	if !ok {
+		// 表示当天可购买挑战的次数上限
 		vipWorldBossCount := this.role.GetRoleBase().GetVipData(model.Vip_System_WorldBoss_Count)
 		totalCount := vipWorldBossCount + model.GlobalWorldBossChallengeCount
 		if this.roleMap.WorldBossCount >= totalCount {
@@ -475,6 +476,20 @@ func (this *RoleMap) getTmpBossId(bossId, summonIdx int32) int32 {
 	return bossId*10000 + summonIdx
 }
 
+func (this *RoleMap) getChallengeBossCost(idx int32) (ret serverproto.KeyValueType) {
+	costLen := len(model.GlobalWorldBossChallengeCost)
+	if idx <= 0 || costLen <= 0 {
+		return
+	}
+
+	if idx > int32(costLen) {
+		ret = model.GlobalWorldBossChallengeCost[costLen-1]
+	} else {
+		ret = model.GlobalWorldBossChallengeCost[idx-1]
+	}
+	return
+}
+
 //获取rand点奖励(drop)
 func (this *RoleMap) GenWorldBossRandReward(pointInfo *serverproto.WorldBossRandPointInfo) serverproto.ErrorCode {
 	_, ok := model.ConvertWorldBossChangePlayList[int32(pointInfo.BossId)]
@@ -495,6 +510,7 @@ func (this *RoleMap) GenWorldBossRandReward(pointInfo *serverproto.WorldBossRand
 			this.roleMap.WorldBossChallengeList = append(this.roleMap.WorldBossChallengeList, tmpBossId)
 			this.challengeBossList[tmpBossId] = tmpBossId
 		}
+		TaskMagCheck(this.role, serverproto.TaskType_World_Boss_Challenge_Count, 1)
 		this.SetDirty(true)
 		this.dataChangeNtf()
 	}

+ 716 - 2
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_rune.go

@@ -21,6 +21,8 @@ const (
 	Rune_Shop_Type_RushPet     = 9  //宠物冲榜商店
 	Rune_Shop_Type_RushSkill   = 10 //技能冲榜商店
 	Rune_Shop_Type_Idol        = 11 //偶像季商店
+
+	Rune_Shop_Type_CreditRecharge = 100 // 充值钱包商店
 )
 
 const (
@@ -28,6 +30,8 @@ const (
 	Rune_BagShop_Type_Week  = 2
 	Rune_BagShop_Type_Month = 3
 	Rune_BagShop_Type_Gold  = 4
+	Rune_BagShop_Type_CreditRecharge = 5 // 充值钱包类型
+	Rune_BagShop_Type_ROCoin         = 6 // RO币礼包类型
 )
 
 type RoleRune struct {
@@ -43,6 +47,8 @@ type RoleRune struct {
 	runeRushSkillShop   *serverproto.RuneShop
 	runeIdolSeasonShop  *serverproto.RuneShop
 
+	runeCreditRecharge map[int32]*serverproto.RuneShop // 充值钱包商店
+
 	runeBase      *serverproto.RuneBaseData
 	runeExplore   *StRuneExplore
 	saveShopLists map[int32]bool //卢恩商店变化
@@ -426,8 +432,15 @@ func (this *RoleRune) Load(msg interface{}) bool {
 	if proRole.RoleRune != nil {
 		this.runeBase = proRole.RoleRune.RuneBase
 		if this.runeBase == nil {
-			this.runeBase = &serverproto.RuneBaseData{}
+			this.runeBase = &serverproto.RuneBaseData{
+				PrivilegeData: &serverproto.RuneSpecialPrivilegeData{},
+			}
 		}
+
+		// 充值钱包没有达到上限时处理
+		// 特权卡商店初始化
+		this.loadCreditRecharge()
+
 		util.InfoF("proRole.RoleRune.ShopList :%v", proRole.RoleRune.ShopList)
 		for _, data := range proRole.RoleRune.ShopList {
 			if data.ShopId == Rune_Shop_Type_MonthCard {
@@ -452,6 +465,8 @@ func (this *RoleRune) Load(msg interface{}) bool {
 			} else if data.ShopId == Rune_Shop_Type_Idol {
 				this.runeIdolSeasonShop = data
 				util.InfoF("this.runeIdolSeasonShop: %v", this.runeIdolSeasonShop)
+			} else if data.ShopId == Rune_Shop_Type_CreditRecharge {
+				this.runeCreditRecharge[data.SubShopId] = data
 			}
 		}
 		if len(proRole.RoleRune.ShopList) <= 0 {
@@ -465,6 +480,8 @@ func (this *RoleRune) Load(msg interface{}) bool {
 			this.InitRushPetShop()
 			this.InitRushSkillShop()
 			this.InitIdolSeasonShop()
+			this.initCreditRechargeShop()
+			this.initSpecialShop()
 		} else {
 			this.CheckNewGoodsAdd()
 		}
@@ -480,6 +497,21 @@ func (this *RoleRune) Load(msg interface{}) bool {
 
 	return true
 }
+func (this *RoleRune) loadCreditRecharge() {
+	this.runeCreditRecharge = map[int32]*serverproto.RuneShop{}
+	// 充值钱包没有达到上限时处理
+	if !this.runeBase.CreditRechargeLimit {
+		if this.runeBase.MaxCreditRecharge <= 0 {
+			this.runeBase.MaxCreditRecharge = model.GlobalCreditRechargeInitMax
+			this.SetDirty(true)
+		}
+	}
+
+	// 特权卡商店初始化
+	if this.runeBase.PrivilegeData == nil {
+		this.runeBase.PrivilegeData = &serverproto.RuneSpecialPrivilegeData{}
+	}
+}
 
 func (this *RoleRune) Save() {
 	this.SetDirty(false)
@@ -510,6 +542,10 @@ func (this *RoleRune) Save() {
 				saveMsg.RoleRune.ShopList = append(saveMsg.RoleRune.ShopList, this.runeRushSkillShop)
 			} else if key == Rune_Shop_Type_Idol {
 				saveMsg.RoleRune.ShopList = append(saveMsg.RoleRune.ShopList, this.runeIdolSeasonShop)
+			} else if key == Rune_Shop_Type_CreditRecharge {
+				for _, shop := range this.runeCreditRecharge {
+					saveMsg.RoleRune.ShopList = append(saveMsg.RoleRune.ShopList, shop)
+				}
 			}
 		}
 		delete(this.saveShopLists, key)
@@ -569,7 +605,9 @@ func (this *RoleRune) HasFreeBag() bool {
 }
 
 func (this *RoleRune) GetNextRefresh(bagType int32) uint64 {
-	if bagType == Rune_BagShop_Type_Day {
+	if bagType == Rune_BagShop_Type_Day ||
+		bagType == Rune_BagShop_Type_CreditRecharge ||
+		bagType == Rune_BagShop_Type_ROCoin {
 		return util.GetLatest5Hour()
 	} else if bagType == Rune_BagShop_Type_Week {
 		return util.GetLatestWeek5Hour(0)
@@ -839,6 +877,34 @@ func (this *RoleRune) InitGuildBattleShop() {
 
 	this.addShopChange(Rune_Shop_Type_GuildBattle)
 }
+func (this *RoleRune) initCreditRechargeShop() {
+	// 充值钱包商店
+	// 初始化礼包商店
+	//this.runeCreditRecharge = make(map[int32]*serverproto.RuneShop)
+	for _, data := range model.ConvertPurseShop {
+		_, ok := this.runeCreditRecharge[data.BagType] // Rune_BagShop_Type_CreditRecharge
+		if !ok {
+			shopData := &serverproto.RuneShop{
+				ShopId:      Rune_Shop_Type_CreditRecharge,
+				SubShopId:   data.BagType,
+				NextRefresh: int64(this.GetNextRefresh(data.BagType)), // 日,周,月需要获取下次更新时间的goods
+			}
+			this.runeCreditRecharge[data.BagType] = shopData
+		}
+
+		goods := &serverproto.RuneGoods{
+			GoodsId:    data.GoodsId,
+			BuyNum:     0,
+			HistoryBuy: 0,
+		}
+		this.runeCreditRecharge[data.BagType].GoodsInfo = append(this.runeCreditRecharge[data.BagType].GoodsInfo, goods)
+	}
+
+	this.addShopChange(Rune_Shop_Type_CreditRecharge)
+}
+func (this *RoleRune) initSpecialShop() {
+	// 特权卡商店
+}
 
 func (this *RoleRune) DailyReset(notify bool) {
 	this.ResetGiftShop()
@@ -849,6 +915,8 @@ func (this *RoleRune) DailyReset(notify bool) {
 	this.ResetRushMapShop()
 	this.ResetGuildBattleShop()
 	this.ResetRushSkillShop()
+	// 充值钱包商店
+	this.ResetCreditRechargeShop(notify)
 
 	this.CheckNewGoodsAdd()
 
@@ -998,6 +1066,8 @@ func (this *RoleRune) GetFreeGoodsData() {
 	if len(ntfMsg.RuneRed) > 0 || len(ntfMsg.LimitRed) > 0 {
 		this.role.ReplayGate(ntfMsg, true)
 	}
+
+	this.runeBaseDataChangeNtf()
 }
 func (this *RoleRune) CheckRushShopData() {
 	for _, value := range model.ConvertPetShop {
@@ -1168,9 +1238,53 @@ func (this *RoleRune) CheckNewGoodsAdd() {
 		this.addShopChange(Rune_Shop_Type_Idol)
 	}
 
+	//充值钱包商店
+	this.CheckNewGoodsCreditRecharge()
+
+	// 该函数需要放在最后处理
 	this.ResetGiftGoldShop()
 }
 
+func (this *RoleRune) CheckNewGoodsCreditRecharge() {
+	for _, value := range model.ConvertPurseShop {
+		_, ok := this.runeCreditRecharge[value.BagType]
+		if !ok {
+			shopData := &serverproto.RuneShop{
+				ShopId:    Rune_Shop_Type_CreditRecharge,
+				SubShopId: value.BagType,
+			}
+			shopData.NextRefresh = int64(this.GetNextRefresh(value.BagType))
+			this.runeCreditRecharge[value.BagType] = shopData
+
+			runGoods := &serverproto.RuneGoods{
+				GoodsId:    value.GoodsId,
+				BuyNum:     0,
+				HistoryBuy: 0,
+			}
+			this.runeCreditRecharge[value.BagType].GoodsInfo = append(this.runeCreditRecharge[value.BagType].GoodsInfo, runGoods)
+			this.addShopChange(Rune_Shop_Type_CreditRecharge)
+		}
+
+		bFind := false
+		for _, goods := range this.runeCreditRecharge[value.BagType].GoodsInfo {
+			if goods.GoodsId == value.GoodsId {
+				bFind = true
+				break
+			}
+		}
+		if bFind == true {
+			continue
+		}
+		runGoods := &serverproto.RuneGoods{
+			GoodsId:    value.GoodsId,
+			BuyNum:     0,
+			HistoryBuy: 0,
+		}
+		this.runeCreditRecharge[value.BagType].GoodsInfo = append(this.runeCreditRecharge[value.BagType].GoodsInfo, runGoods)
+		this.addShopChange(Rune_Shop_Type_CreditRecharge)
+	}
+}
+
 func (this *RoleRune) ResetGiftGoldShop() {
 	if this.runeBase == nil {
 		this.runeBase = &serverproto.RuneBaseData{
@@ -1193,8 +1307,20 @@ func (this *RoleRune) ResetGiftGoldShop() {
 			break
 		}
 	}
+	// 充值钱包也需要
+	for _, data := range this.runeCreditRecharge {
+		if bNeedReset && data.SubShopId == Rune_BagShop_Type_CreditRecharge {
+			for _, good := range data.GoodsInfo {
+				good.HistoryBuy = 0
+			}
+			break
+		}
+	}
+
 	if bNeedReset == true {
 		this.addShopChange(Rune_Shop_Type_Bag)
+		// 充值钱包也需要
+		this.addShopChange(Rune_BagShop_Type_CreditRecharge)
 	}
 }
 
@@ -1343,6 +1469,67 @@ func (this *RoleRune) ResetGuildBattleShop() {
 	}
 	this.addShopChange(Rune_Shop_Type_GuildBattle)
 }
+func (this *RoleRune) ResetCreditRechargeShop(notify bool) {
+	for _, data := range this.runeCreditRecharge {
+		needRefresh := false
+		if data.NextRefresh < int64(util.GetCurrentTime()) {
+			needRefresh = true
+		}
+		if needRefresh == false {
+			continue
+		}
+		for i := 0; i < len(data.GoodsInfo); {
+			_, ok := serverproto.PurseShopCfgLoader[data.GoodsInfo[i].GoodsId]
+			if !ok {
+				//配置表没找到,删除这个商品信息
+				data.GoodsInfo = append(data.GoodsInfo[:i], data.GoodsInfo[i+1:]...)
+				this.addShopChange(Rune_Shop_Type_CreditRecharge)
+				continue
+			}
+
+			//重置次数次数
+			data.GoodsInfo[i].BuyNum = 0
+			i++
+		}
+		data.NextRefresh = int64(this.GetNextRefresh(data.SubShopId))
+		this.addShopChange(Rune_Shop_Type_CreditRecharge)
+	}
+
+	// 充值钱包对应的资源数据重置
+	this.role.GetRoleBase().ResetCommonRes(int32(serverproto.ResType_Res_CreditRecharge), notify)
+	// 充值钱包使用额度重置
+	this.runeBase.UsedCreditRecharge = 0
+
+	// 特权卡商店每日领取奖励重置
+	if this.runeBase.PrivilegeData.ProcessTime > 0 { //说明已经购买
+		nowTime := util.GetTimeMilliseconds()
+		diffDay := util.GetDurationDay2(this.runeBase.PrivilegeData.ProcessTime, nowTime) - 1
+		if this.runeBase.PrivilegeData.RewardTime > 0 { //之前没有领取
+			diffDay -= 1
+		}
+		cfgData := this.getSpecialPrivilegeCfgData(this.runeBase.PrivilegeData.SpecialId)
+		if cfgData != nil {
+			// 奖励邮件发送
+			for idx := 0; idx < int(diffDay); idx++ {
+				this.role.GetRoleMail().AddMail(model.GlobalMailSpecialPrivilegeCard, serverproto.MailType_MailType_SpecialPrivilege,
+					cfgData.VipReward, nil, "", "")
+			}
+		}
+		this.runeBase.PrivilegeData.RewardTime = 0
+	}
+
+	if notify {
+		this.runeBaseDataChangeNtf()
+	}
+
+	this.SetDirty(true)
+}
+func (this *RoleRune) runeBaseDataChangeNtf() {
+	ntfMsg := &serverproto.SCRuneBaseDataNtf{
+		RuneBaseData: this.runeBase,
+	}
+	this.role.ReplayGate(ntfMsg, true)
+}
 
 func (this *RoleRune) GetRuneShopInfo(msg *serverproto.SSGetRushShopInfoAck, ackMsg *serverproto.SCRuneShopInfoAck) {
 	if ackMsg == nil {
@@ -1383,6 +1570,13 @@ func (this *RoleRune) GetShopInfo(shopType, subType int32, ackMsg *serverproto.S
 		this.PackIdolSeasonShopData(ackMsg)
 	}
 }
+func (this *RoleRune) GetBTShopInfo(shopType, subType int32, ackMsg *serverproto.SCBTShopInfoAck) {
+	if shopType == Rune_Shop_Type_CreditRecharge {
+		this.PackCreditRechargeShopData(ackMsg)
+	} else if shopType == Rune_Shop_Type_Bag {
+		this.PackROCoinShopData(subType, ackMsg)
+	}
+}
 
 //打包礼包商店
 func (this *RoleRune) PackBagData(subType int32, ackMsg *serverproto.SCRuneShopInfoAck) {
@@ -1785,6 +1979,97 @@ func (this *RoleRune) PackIdolSeasonShopData(ackMsg *serverproto.SCRuneShopInfoA
 	}
 }
 
+func (this *RoleRune) PackCreditRechargeShopData(ackMsg *serverproto.SCBTShopInfoAck) {
+	shopData, ok := this.runeCreditRecharge[Rune_BagShop_Type_CreditRecharge]
+	if !ok {
+		return
+	}
+
+	for i := 0; i < len(shopData.GoodsInfo); {
+		shopItem, ok := model.ConvertPurseShop[shopData.GoodsInfo[i].GoodsId]
+		if !ok {
+			shopData.GoodsInfo = append(shopData.GoodsInfo[:i], shopData.GoodsInfo[i+1:]...)
+			this.addShopChange(Rune_Shop_Type_CreditRecharge)
+			continue
+		}
+
+		goods := &serverproto.RuneShopItem{
+			GoodsId:  shopData.GoodsInfo[i].GoodsId,
+			Price:    shopItem.Price,
+			FirstBuy: true,
+			BuyLimit: true,
+		}
+		if shopItem.LimitCount >= 9999 {
+			goods.BuyNums = 0
+		} else {
+			buyNum := shopItem.LimitCount - shopData.GoodsInfo[i].BuyNum
+			if buyNum < 0 {
+				buyNum = 0
+			}
+			goods.BuyNums = buyNum
+		}
+
+		if shopData.GoodsInfo[i].HistoryBuy > 0 {
+			goods.FirstBuy = false
+		}
+
+		if shopItem.LimitCount >= 9999 {
+			goods.BuyLimit = false
+		}
+		i++
+		if shopItem.RmbTotalPay > 0 && this.role.GetTotalRecharge() < float32(shopItem.RmbTotalPay) {
+			continue
+		}
+		ackMsg.GoodsList = append(ackMsg.GoodsList, goods)
+	}
+
+	ackMsg.EndTime = shopData.NextRefresh
+}
+func (this *RoleRune) PackROCoinShopData(subType int32, ackMsg *serverproto.SCBTShopInfoAck) {
+	shopData, ok := this.runeGiftShop[subType]
+	if !ok {
+		return
+	}
+
+	for i := 0; i < len(shopData.GoodsInfo); {
+		shopItem, ok := model.ConvertGiftBag[shopData.GoodsInfo[i].GoodsId]
+		if !ok {
+			shopData.GoodsInfo = append(shopData.GoodsInfo[:i], shopData.GoodsInfo[i+1:]...)
+			this.addShopChange(Rune_Shop_Type_Bag)
+			continue
+		}
+
+		goods := &serverproto.RuneShopItem{
+			GoodsId:  shopData.GoodsInfo[i].GoodsId,
+			Price:    shopItem.Price,
+			FirstBuy: true,
+			BuyLimit: true,
+		}
+		if shopItem.LimitCount >= 9999 {
+			goods.BuyNums = 0
+		} else {
+			buyNum := shopItem.LimitCount - shopData.GoodsInfo[i].BuyNum
+			if buyNum < 0 {
+				buyNum = 0
+			}
+			goods.BuyNums = buyNum
+		}
+
+		if shopData.GoodsInfo[i].HistoryBuy > 0 {
+			goods.FirstBuy = false
+		}
+		if shopItem.LimitCount >= 9999 {
+			goods.BuyLimit = false
+		}
+		i++
+		if shopItem.RmbTotalPay > 0 && this.role.GetTotalRecharge() < float32(shopItem.RmbTotalPay) {
+			continue
+		}
+		ackMsg.GoodsList = append(ackMsg.GoodsList, goods)
+	}
+	ackMsg.EndTime = shopData.NextRefresh
+}
+
 func (this *RoleRune) CheckInSellingTime(startDay int32, endDay int32) bool {
 	if startDay > endDay {
 		return false
@@ -2422,6 +2707,328 @@ func (this *RoleRune) BuyGuildBattleShopItem(payRewardInfo *serverproto.PayOrder
 	return serverproto.ErrorCode_ERROR_OK
 }
 
+// 充值钱包商店购买(假购买消耗对应道具)
+func (this *RoleRune) BuyCreditRechargeShopItem(goodsId, count int32) serverproto.ErrorCode {
+	if count <= 0 || goodsId <= 0 {
+		return serverproto.ErrorCode_ERROR_PAY_ITEM_NO
+	}
+
+	shipItemCfg, ok := model.ConvertPurseShop[goodsId]
+	if !ok {
+		return serverproto.ErrorCode_ERROR_PAY_ITEM_NO
+	}
+	if _, ok := this.runeCreditRecharge[shipItemCfg.BagType]; !ok {
+		util.WarnF("uid=%v CreditRechargeShop item not init", this.role.GetUUid())
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+	bFind := false
+	bFirst := true
+	for _, goods := range this.runeCreditRecharge[shipItemCfg.BagType].GoodsInfo {
+		if goods.GoodsId == goodsId {
+			if shipItemCfg.LimitCount != 0 && goods.BuyNum >= shipItemCfg.LimitCount {
+				return serverproto.ErrorCode_ERROR_FAIL
+			}
+			if goods.HistoryBuy > 0 {
+				bFirst = false
+			}
+			bFind = true
+			break
+		}
+	}
+	// 商店找不到此商品,返回
+	if !bFind {
+		util.WarnF("uid=%v CreditRechargeShop itemList not find", this.role.GetUUid())
+		return serverproto.ErrorCode_ERROR_PAY_ITEM_NO
+	}
+
+	// 判断资源道具是否足够
+	delItemList := map[int32]int32{}
+	delItemList[int32(serverproto.ResType_Res_CreditRecharge)] += int32(shipItemCfg.Price) //消耗特定资源
+	if !this.role.GetRoleBag().CanDelItemList(delItemList) {
+		return serverproto.ErrorCode_ERROR_PAY_CREDITRECHARGE_NOT_ENOUGH
+	}
+	// 判断是否有足够的(充值钱包额度)
+	if !this.runeBase.CreditRechargeLimit {
+		price := int32(shipItemCfg.Price)
+		curVal := price + this.runeBase.UsedCreditRecharge
+		if this.runeBase.MaxCreditRecharge < curVal {
+			return serverproto.ErrorCode_ERROR_PAY_CREDITRECHARGE_LIMIT_NOT_ENOUGH
+		} else {
+			this.runeBase.UsedCreditRecharge += price
+			this.runeBaseDataChangeNtf()
+			this.SetDirty(true)
+		}
+	}
+	this.role.GetRoleBag().DelItemList(delItemList, AddItemST{AddFrom: AddFrom_CreditRecharge})
+
+	// 奖励物品处理
+	ackMsg := &serverproto.SCCreditRechargeShopItemBuyAck{
+		GoodsId:  goodsId,
+		ShopItem: &serverproto.RuneShopItem{},
+	}
+	rewardList := map[int32]int32{}
+	for _, items := range shipItemCfg.BuyReward {
+		ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{
+			Key:   items.Key,
+			Value: items.Value,
+		})
+		rewardList[items.Key] += items.Value
+	}
+	// 首冲或者非首冲获得
+	if bFirst == true {
+		for _, items := range shipItemCfg.FirstReward {
+			ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{
+				Key:   items.Key,
+				Value: items.Value,
+			})
+			rewardList[items.Key] += items.Value
+		}
+	} else {
+		for _, items := range shipItemCfg.ExtraReward {
+			ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{
+				Key:   items.Key,
+				Value: items.Value,
+			})
+			rewardList[items.Key] += items.Value
+		}
+	}
+	util.InfoF("uid=%v CreditRechargeShop id=%v count=%v", this.role.GetUUid(), goodsId, count)
+	this.role.AddItemList(rewardList, AddFrom_Rune, true)
+
+	// 获取物品后的后续逻辑处理
+	for _, goods := range this.runeCreditRecharge[shipItemCfg.BagType].GoodsInfo {
+		if goods.GoodsId == goodsId {
+			goods.BuyNum += 1
+			goods.HistoryBuy += 1
+
+			ackMsg.ShopItem.GoodsId = goods.GoodsId
+			ackMsg.ShopItem.Price = shipItemCfg.Price
+			ackMsg.ShopItem.FirstBuy = false
+			if shipItemCfg.LimitCount >= 9999 {
+				ackMsg.ShopItem.BuyNums = 0
+				ackMsg.ShopItem.BuyLimit = false
+			} else {
+				buyNum := shipItemCfg.LimitCount - goods.BuyNum
+				if buyNum < 0 {
+					buyNum = 0
+				}
+				ackMsg.ShopItem.BuyNums = buyNum
+				ackMsg.ShopItem.BuyLimit = true
+			}
+			ackMsg.ShopItem.EndTime = 0
+
+			this.addShopChange(Rune_Shop_Type_CreditRecharge)
+			break
+		}
+	}
+	this.role.ReplayGate(ackMsg, true)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+
+// 特权卡商店道具购买
+func (this *RoleRune) BuySpecialPrivilegeShopItem(payRewardInfo *serverproto.PayOrderSaveInfo) serverproto.ErrorCode {
+	if this.runeBase.PrivilegeData == nil {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+
+	goodsId := this.runeBase.PrivilegeData.SpecialId
+	if goodsId <= 0 && len(model.ConvertSpecialPrivilegeRight) > 0 {
+		goodsId = model.ConvertSpecialPrivilegeRight[0].Id
+	} else {
+		nextCfgData := this.getNextSpecialPrivilegeCfgData(goodsId)
+		if nextCfgData != nil {
+			goodsId = nextCfgData.Id
+		}
+	}
+	if goodsId <= 0 {
+		util.InfoF("uid=%v BuySpecialPrivilegeShopItem data not find!!!", this.role.GetUUid())
+		return serverproto.ErrorCode_ERROR_PAY_ITEM_NO
+	}
+	if goodsId == this.runeBase.PrivilegeData.SpecialId {
+		//无后续特权卡可购买
+		return serverproto.ErrorCode_ERROR_PAY_ITEM_NO
+	}
+	shopItemCfg := this.getSpecialPrivilegeCfgData(goodsId)
+	if shopItemCfg == nil {
+		return serverproto.ErrorCode_ERROR_PAY_ITEM_NO
+	}
+
+	// 初级开荒特权是否购买/是否具备购买高级开荒特权条件
+	// 任务条件不存在或者已经完成的状态下可以进行购买
+	ret := this.role.GetRoleBase().checkUnLockState(0, shopItemCfg.ConditionList)
+	if ret != serverproto.ErrorCode_ERROR_OK {
+		return serverproto.ErrorCode_ERROR_PAY_SPECIALPRIVILEGE_UNLOCK
+	}
+	payRewardInfo.Count = 1
+	payRewardInfo.GoodsId = goodsId
+	payRewardInfo.Amount = shopItemCfg.Price
+	payRewardInfo.GoodsName = shopItemCfg.GoodsName
+	// 购买获得道具
+	//for k, v := range shopItemCfg.VipReward {
+	//	payRewardInfo.RewardList = append(payRewardInfo.RewardList, &serverproto.KeyValueType{
+	//		Key:   k,
+	//		Value: v,
+	//	})
+	//}
+
+	util.InfoF("uid=%v BuySpecialPrivilegeShopItem id=%v price=%v", this.role.GetUUid(), payRewardInfo.GoodsId, payRewardInfo.Amount)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+
+// RO通行证购买
+func (this *RoleRune) BuyPassCheck(payRewardInfo *serverproto.PayOrderSaveInfo) serverproto.ErrorCode {
+	if model.ConvertPassCheckData == nil {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+
+	if this.runeBase.IsPassCheck {
+		return serverproto.ErrorCode_ERROR_PAY_PASSCHECK_BUY
+	}
+
+	payRewardInfo.Count = 1
+	payRewardInfo.GoodsId = model.ConvertPassCheckData.Id
+	payRewardInfo.Amount = model.ConvertPassCheckData.Price
+	payRewardInfo.GoodsName = model.ConvertPassCheckData.GoodsName
+	//特权在购买成功后生效
+
+	util.InfoF("uid=%v BuyPassCheck id=%v price=%v", this.role.GetUUid(), payRewardInfo.GoodsId, payRewardInfo.Amount)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+
+// RO币礼包商店购买
+func (this *RoleRune) PayInfoGetForRoCoin(goodsId, count int32) serverproto.ErrorCode {
+	if count <= 0 || goodsId <= 0 {
+		return serverproto.ErrorCode_ERROR_PAY_ITEM_NO
+	}
+
+	shipItemCfg, ok := model.ConvertGiftBag[goodsId]
+	if !ok || shipItemCfg.BagType != Rune_BagShop_Type_ROCoin {
+		return serverproto.ErrorCode_ERROR_PAY_ITEM_NO
+	}
+
+	bFind := false
+	bFirst := true
+	shopDataInfo, ok := this.runeGiftShop[shipItemCfg.BagType]
+	if ok {
+		for _, goods := range shopDataInfo.GoodsInfo {
+			if goods.GoodsId == goodsId {
+				if shipItemCfg.LimitCount != 0 && goods.BuyNum >= shipItemCfg.LimitCount {
+					return serverproto.ErrorCode_ERROR_FAIL
+				}
+				if goods.HistoryBuy > 0 {
+					bFirst = false
+				}
+				bFind = true
+				break
+			}
+		}
+	} else {
+		util.WarnF("uid=%v PayInfoGetForRoCoin item not init goodsId=%v ", this.role.GetUUid(), goodsId)
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+	//商店找不到此商品,返回
+	if bFind == false {
+		util.WarnF("uid=%v PayInfoGetForRoCoin item not find goodsId=%v", this.role.GetUUid(), goodsId)
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+
+	consumeVal := int32(shipItemCfg.Price)
+	if !this.role.GetRoleBag().CanDelItem(int32(serverproto.ResType_Res_ROCoin), consumeVal) {
+		return this.role.GetResNotice(int32(serverproto.ResType_Res_ROCoin))
+	}
+	this.role.DelItem(int32(serverproto.ResType_Res_ROCoin), consumeVal, AddItemST{
+		AddFrom: AddFrom_Rune,
+		Notify:  true,
+	})
+
+	ackMsg := &serverproto.SCBTRoCoinShopItemBuyAck{
+		GoodsType: Rune_Shop_Type_Bag,
+		SubType:   Rune_BagShop_Type_ROCoin,
+		GoodsId:   goodsId,
+		ShopItem:  &serverproto.RuneShopItem{},
+	}
+	reward := make(map[int32]int32)
+	for _, items := range shipItemCfg.BuyReward {
+		ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{
+			Key:   items.Key,
+			Value: items.Value,
+		})
+		reward[items.Key] += items.Value
+	}
+	//打包额外道具	//首冲或者非首冲
+	if bFirst == true {
+		for _, items := range shipItemCfg.FirstReward {
+			ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{
+				Key:   items.Key,
+				Value: items.Value,
+			})
+			reward[items.Key] += items.Value
+		}
+	} else {
+		for _, items := range shipItemCfg.ExtraReward {
+			ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{
+				Key:   items.Key,
+				Value: items.Value,
+			})
+			reward[items.Key] += items.Value
+		}
+	}
+
+	util.InfoF("uid=%v PayInfoGetForRoCoin additemlist=%v", this.role.GetUUid(), ackMsg.RewardItemList)
+
+	this.role.AddItemList(reward, AddFrom_Rune, true)
+
+	// 获取物品后的后续逻辑处理
+	for _, goods := range shopDataInfo.GoodsInfo {
+		if goods.GoodsId == goodsId {
+			goods.BuyNum += 1
+			goods.HistoryBuy += 1
+
+			ackMsg.ShopItem.GoodsId = goods.GoodsId
+			ackMsg.ShopItem.Price = shipItemCfg.Price
+			ackMsg.ShopItem.FirstBuy = false
+			if shipItemCfg.LimitCount >= 9999 {
+				ackMsg.ShopItem.BuyNums = 0
+				ackMsg.ShopItem.BuyLimit = false
+			} else {
+				buyNum := shipItemCfg.LimitCount - goods.BuyNum
+				if buyNum < 0 {
+					buyNum = 0
+				}
+				ackMsg.ShopItem.BuyNums = buyNum
+				ackMsg.ShopItem.BuyLimit = true
+			}
+			ackMsg.ShopItem.EndTime = 0
+
+			this.addShopChange(Rune_Shop_Type_Bag)
+			break
+		}
+	}
+	this.role.ReplayGate(ackMsg, true)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
+func (this *RoleRune) getSpecialPrivilegeCfgData(privilegeCfgId int32) *model.PrivilegeData {
+	for idx := 0; idx < len(model.ConvertSpecialPrivilegeRight); idx++ {
+		if model.ConvertSpecialPrivilegeRight[idx].Id == privilegeCfgId {
+			return model.ConvertSpecialPrivilegeRight[idx]
+		}
+	}
+	return nil
+}
+func (this *RoleRune) getNextSpecialPrivilegeCfgData(privilegeCfgId int32) *model.PrivilegeData {
+	// ConvertSpecialPrivilegeRight已经排序
+	for idx := 0; idx < len(model.ConvertSpecialPrivilegeRight); idx++ {
+		if model.ConvertSpecialPrivilegeRight[idx].Id > privilegeCfgId {
+			return model.ConvertSpecialPrivilegeRight[idx]
+		}
+	}
+	return nil
+}
+
 func (this *RoleRune) AddMonthCardItem(goodId, cnt int32) {
 	ntfMsg := &serverproto.SCRuneShopBuyItemNtf{
 		ShopType: Rune_Shop_Type_MonthCard,
@@ -2470,6 +3077,37 @@ func (this *RoleRune) AddMonthCardItem(goodId, cnt int32) {
 	this.role.ReplayGate(ntfMsg, true)
 	this.addShopChange(Rune_Shop_Type_MonthCard)
 }
+func (this *RoleRune) SpecialPrivilegeReward() serverproto.ErrorCode {
+	if this.runeBase.PrivilegeData == nil {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+	cfgData := this.getSpecialPrivilegeCfgData(this.runeBase.PrivilegeData.SpecialId)
+	if cfgData == nil {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+
+	if this.runeBase.PrivilegeData.RewardTime > 0 {
+		return serverproto.ErrorCode_ERROR_PAY_SPECIALPRIVILEGE_HAS_REWARD
+	}
+	nowTime := util.GetTimeMilliseconds()
+	this.runeBase.PrivilegeData.RewardTime = nowTime
+	this.runeBase.PrivilegeData.ProcessTime = nowTime
+	this.SetDirty(true)
+	this.runeBaseDataChangeNtf()
+
+	this.role.AddItemList(cfgData.VipReward, AddFrom_SpecialPrivilege, true)
+
+	ackMsg := &serverproto.SCRuneSpecialPrivilegeRewardAck{}
+	for k, v := range cfgData.VipReward {
+		ackMsg.RewardItemList = append(ackMsg.RewardItemList, &serverproto.KeyValueType{
+			Key:   k,
+			Value: v,
+		})
+	}
+	this.role.ReplayGate(ackMsg, true)
+
+	return serverproto.ErrorCode_ERROR_OK
+}
 
 func (this *RoleRune) OnBuyMonthCardShopItem(payRewardInfo *serverproto.PayOrderSaveInfo) {
 	if payRewardInfo == nil {
@@ -2819,3 +3457,79 @@ func (this *RoleRune) OnBuyIdolSeasonSuccess(payRewardInfo *serverproto.PayOrder
 	util.InfoF("uid=%v idol season shop buy succ: shop:%v id:%v, count:%v,price:%v", this.role.GetUUid(), payRewardInfo.GoodsType, payRewardInfo.GoodsId, payRewardInfo.Count, payRewardInfo.Amount)
 	this.role.ReplayGate(ntfMsg, true)
 }
+
+func (this *RoleRune) OnBuySpecialPrivilege(payRewardInfo *serverproto.PayOrderSaveInfo) {
+	// 判断初级特权没领取的情况下,直接升级到高级特权
+	oldSpecialId := this.runeBase.PrivilegeData.SpecialId
+	if oldSpecialId != payRewardInfo.GoodsId && this.runeBase.PrivilegeData.RewardTime <= 0 {
+		cfgData := this.getSpecialPrivilegeCfgData(oldSpecialId)
+		if cfgData != nil {
+			// 奖励邮件发送
+			this.role.GetRoleMail().AddMail(model.GlobalMailSpecialPrivilegeCard, serverproto.MailType_MailType_SpecialPrivilege,
+				cfgData.VipReward, nil, "", "")
+		}
+	}
+
+	// 特权购买
+	this.runeBase.PrivilegeData.SpecialId = payRewardInfo.GoodsId
+	this.runeBase.PrivilegeData.RewardTime = 0
+	this.runeBase.PrivilegeData.ProcessTime = util.GetTimeMilliseconds()
+	this.SetDirty(true)
+
+	cfgData := this.getSpecialPrivilegeCfgData(payRewardInfo.GoodsId)
+	if cfgData == nil {
+		util.ErrorF("uid=%v OnBuySpecialPrivilege cfgData not found=%v", this.role.GetUUid(), payRewardInfo.GoodsId)
+		return
+	}
+
+	// 特权处理
+	// 充值钱包额度,战斗内加速
+	for k, v := range cfgData.VipRight {
+		switch k {
+		case model.Vip_System_FastBattleTime:
+			// 解锁战斗加速功能
+			// 客户端判定购买过特权卡就拥有加速功能
+		case model.Vip_System_CreditRecharge:
+			// 充值钱包额度(添加的数值)
+			if v < 0 {
+				// 无额度上限
+				this.runeBase.CreditRechargeLimit = true
+			} else {
+				this.runeBase.MaxCreditRecharge += v
+			}
+		}
+	}
+
+	this.runeBaseDataChangeNtf()
+
+	util.InfoF("uid=%v OnBuySpecialPrivilege GoodsId=%v success", this.role.GetUUid(), payRewardInfo.GoodsId)
+}
+func (this *RoleRune) GMAddCreditRecharge(val int32, limit bool) {
+	if limit {
+		this.runeBase.CreditRechargeLimit = true
+	} else {
+		this.runeBase.MaxCreditRecharge += val
+	}
+	this.SetDirty(true)
+
+	this.runeBaseDataChangeNtf()
+}
+
+func (this *RoleRune) OnBuyPassCheck(payRewardInfo *serverproto.PayOrderSaveInfo) {
+	if model.ConvertPassCheckData == nil {
+		return
+	}
+
+	this.runeBase.IsPassCheck = true
+	this.SetDirty(true)
+
+	// 特权处理
+	// 3.添加属性
+	this.role.roleBattleAttr.AttrChange(AttrChangeST{
+		ChangeType:     Attr_Change_VipPrivilege,
+		ChangeHeroData: this.role.GetRoleHero().GetMainHero(),
+	})
+
+	this.runeBaseDataChangeNtf()
+	util.ErrorF("uid=%v OnBuyPassCheck GoodsId=%v", this.role.GetUUid(), payRewardInfo.GoodsId)
+}

+ 4 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_state.go

@@ -406,6 +406,8 @@ func (this *Role) RoleOffline() int32 {
 
 	//下线公会处理
 	this.playerGuildOnline(2)
+	// battle下线处理
+	this.playerBattleOffline()
 
 	//注册到服务器列表(获取最近登录的服务器)
 	this.registerServerList(this.GetRoleBase().RoleData().HeadFrameId, this.GetRoleLevel())
@@ -428,6 +430,8 @@ func (this *Role) createRoleReward() {
 
 		this.GetRoleMail().AddMail(17, serverproto.MailType_MailType_System,
 			model.GlobalCreateRoleMailReward, nil, "", "")
+
+		this.roleBag.AddItemList(model.GlobalCreateItemList, AddItemST{AddFrom: AddFrom_CreateRole, Notify: true})
 	}
 }
 

+ 45 - 1
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_tower.go

@@ -32,6 +32,7 @@ type RoleTower struct {
 
 	friendTower map[int32][]*serverproto.CommonPlayerBriefInfo //好友简介数据
 	RefreshTime int64                                          //好友数据刷新时间
+	towerLevelDayRewardTime uint64                                         //下次可领取奖励时间戳(馈赠奖励)
 }
 
 func newRoleTower(r *Role) *RoleTower {
@@ -80,6 +81,7 @@ func (this *RoleTower) Load(msg interface{}) bool {
 			proRole.RoleTower.RushTower.Reward = 0
 			this.SetDirty(true)
 		}
+		this.towerLevelDayRewardTime = proRole.RoleTower.TowerLevelDayRewardTime
 		this.SysRewardTime = proRole.RoleTower.SysRewardTime
 	}
 	return true
@@ -116,7 +118,9 @@ func (this *RoleTower) Save() {
 	//util.InfoF("[RoleTower] save...[%v]", this.role.GetUUid())
 
 	saveMsg := &serverproto.SSTowerDataSaveReq{
-		Tower: &serverproto.RoleTower{},
+		Tower: &serverproto.RoleTower{
+			TowerLevelDayRewardTime: this.towerLevelDayRewardTime,
+		},
 	}
 
 	//处理购买信息相关数据
@@ -134,6 +138,7 @@ func (this *RoleTower) Save() {
 
 func (this *RoleTower) CopyData(data *serverproto.RoleTower) {
 	data.NowTowerLevel = this.nowTowerLevel
+	data.TowerLevelDayRewardTime = this.towerLevelDayRewardTime
 }
 
 func (this *RoleTower) Update(ms uint64) {
@@ -389,6 +394,7 @@ func (this *RoleTower) GetClimbingTowerInfo() {
 	ackMsg := &serverproto.SCClimbingTowerInfoAck{}
 	ackMsg.NowTowerLevel = this.nowTowerLevel
 	ackMsg.PassTime = this.nowTowerPassTime
+	ackMsg.TowerLevelDayRewardTime = this.towerLevelDayRewardTime
 	//判断有没有到刷新时间
 	if this.RefreshTime != 0 && (this.RefreshTime+Refresh_Time_Gap >= util.GetTimeSeconds()) {
 		//取[towerLevel+1 - towerLevel + 5]的数据
@@ -632,3 +638,41 @@ func (this *RoleTower) GetFightCountMailReward(rushRound int32) {
 		this.SetDirty(true)
 	}
 }
+
+//获取试炼馈赠
+func (this *RoleTower) GetTowerLevelDayReward() serverproto.ErrorCode {
+	curTime := util.GetTimeMilliseconds()
+	//判断当前是否已经领取
+	if curTime <= this.towerLevelDayRewardTime {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+
+	dayRewardIdx := -1
+	for idx := 0; idx < len(model.GlobalClimbingTowerDayReward); idx++ {
+		if model.GlobalClimbingTowerDayReward[idx].Key > this.nowTowerLevel {
+			break
+		}
+		dayRewardIdx = idx
+	}
+	if dayRewardIdx < 0 || dayRewardIdx >= len(model.GlobalClimbingTowerDayReward) {
+		return serverproto.ErrorCode_ERROR_FAIL
+	}
+
+	this.role.AddItem(int32(serverproto.ResType_Res_CreditRecharge),
+		model.GlobalClimbingTowerDayReward[dayRewardIdx].Value, AddFrom_Tower)
+
+	this.towerLevelDayRewardTime = util.GetLatest5Hour()
+	this.SetDirty(true)
+
+	// reward ack msg
+	ackMsg := &serverproto.SCClimbingTowerDayRewardAck{
+		NextDayRewardTime: this.towerLevelDayRewardTime,
+	}
+	ackMsg.RewardList = append(ackMsg.RewardList, &serverproto.KeyValueType{
+		Key:   int32(serverproto.ResType_Res_CreditRecharge),
+		Value: model.GlobalClimbingTowerDayReward[dayRewardIdx].Value,
+	})
+	this.role.ReplayGate(ackMsg, true)
+
+	return serverproto.ErrorCode_ERROR_OK
+}

+ 4 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/model/task_manager.go

@@ -535,6 +535,10 @@ func conditionCheck(role *Role, taskData *serverproto.TaskData, taskType serverp
 	case serverproto.TaskType_Eve_DaoChange_Win_Add:
 		fallthrough
 	case serverproto.TaskType_World_Boss_Challenge_Count: //公会普通boss挑战次数(任务开启)
+		fallthrough
+	case serverproto.TaskType_BT_ZhenJiaRecharge: // 真/假每日累计充值活动
+		fallthrough
+	case serverproto.TaskType_BT_ROCoinRecharge: // bt RO币累计活动
 		targetNum := conditionList[1]
 		if count <= 0 && !bForce {
 			return TASK_CONDITION_NONE

+ 15 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/msg/gm_msg.go

@@ -419,12 +419,27 @@ func init() {
 			cfgList = append(cfgList, "CombinedServiceCfg")
 			model2.ServerReloadConfig(cfgList)
 			model2.RoleMag.ServerReloadConfigNtf(cfgList)
+		case "rechargelimit":
+			tmpRole := roleOuter.(*model2.Role)
+			tmpRole.GetRoleRune().GMAddCreditRecharge(0, true)
+		case "btfirst":
+			rewardIdx, _ := model.Str2Num(cmdList[1])
+			tmpRole := roleOuter.(*model2.Role)
+			tmpRole.PayInfoGet(int32(serverproto.PayGoodsType_EPayType_BTRecharge100), 2, 1, 0, 0)
+			tmpRole.GetRoleBT().FirstRechargeReward(int32(rewardIdx))
+			tmpRole.GetRoleBT().Recharge100Reward()
 		case "test":
 			//role.AddRes(int32(serverproto.ResType_Res_PetExp), int32(999999), true)
 			//role.AddRes(int32(serverproto.ResType_Res_PetCoin), int32(999999), true)
 			//role.AddRes(int32(serverproto.ResType_Res_Rmb), int32(999999), true)
 			tmpRole := roleOuter.(*model2.Role)
+			//tmpRole.GetRoleRune().GMAddCreditRecharge(200, false)
 			//tmpRole.PayInfoGet(1, 1, 1)
+			//tmpRole.GetRoleBT().GetShopInfo()
+			resType := int32(serverproto.ResType_Res_BoliShopExp)
+			resValue := 9999
+			roleOuter.(*model2.Role).GetRoleBag().AddItem(int32(resType), int32(resValue),
+				model2.AddItemST{AddFrom: model2.AddFrom_System, Notify: true})
 
 			//reqMsg := &serverproto.CSDaoChang100SelfInfoReq{}
 			//tmpRole.GetDaoChang100SelfPosInfo(reqMsg)

+ 146 - 0
RO_Server_Trunk-branch_0.1.39/roserver/game/msg/role_msg.go

@@ -2071,6 +2071,17 @@ func init() {
 		role.(*model2.Role).SendRank(rankMsg)
 	})
 
+	//获取爬塔馈赠奖励
+	serverproto.Handle_GAME_CSClimbingTowerDayRewardReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSClimbingTowerDayRewardReq)
+		util.DebugF("receive CSClimbingTowerDayRewardReq msg:%v", msg)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		role.(model2.RoleBTRouter).GetTowerLevelDayReward()
+	})
+
 	//获取好友的爬塔信息
 	serverproto.Handle_GAME_CSFriendPassTowerInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
 		msg := ev.Msg().(*serverproto.CSFriendPassTowerInfoReq)
@@ -3341,6 +3352,30 @@ func init() {
 
 		role.(model2.RoleLogicOuter).ActivitySignIn(msg.ActivityId)
 	})
+
+	// bt 砸蛋活动(金蛋,彩蛋)
+	serverproto.Handle_GAME_CSActivitySmashEggsReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSActivitySmashEggsReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v receive CSActivitySmashEggsReq ms=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleLogicOuter).ActivitySmashEggs(msg.ActivityId, msg.DrawType, msg.DrawCount)
+	})
+	// 砸蛋活动(金蛋,彩蛋) 获得奖励消息记录获取
+	serverproto.Handle_GAME_CSActivitySmashEggsMsgReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSActivitySmashEggsMsgReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v receive CSActivitySmashEggsMsgReq ms=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleLogicOuter).ActivitySmashEggsMsg(msg.ActivityId, msg.DrawType)
+	})
+
 	//////拉新 invitation
 	//获取邀请码
 	serverproto.Handle_GAME_CSInvitationNumberReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
@@ -3639,6 +3674,30 @@ func init() {
 		}
 	})
 
+	// bt服务器版本使用
+	// 充值钱包商店购买(假钱购买)
+	serverproto.Handle_GAME_CSCreditRechargeShopItemBuyReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSCreditRechargeShopItemBuyReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.InfoF("uid=%v receive CSCreditRechargeShopItemBuyReq ms=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).PayInfoGetForCreditRecharge(msg.GoodsId, msg.Count)
+	})
+	// 特权卡商店每日礼包领取
+	serverproto.Handle_GAME_CSRuneSpecialPrivilegeRewardReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSRuneSpecialPrivilegeRewardReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.InfoF("uid=%v receive CSCreditRechargeShopItemBuyReq ms=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).SpecialPrivilegeReward()
+	})
+
 	serverproto.Handle_GAME_CSRuneShopInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
 		msg := ev.Msg().(*serverproto.CSRuneShopInfoReq)
 		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
@@ -3864,4 +3923,91 @@ func init() {
 
 		role.(model2.RoleLogicOuter).GetCombineServerInfo()
 	})
+
+	////bt
+	// bt服务器获取商店信息
+	// 充值钱包商店,特权卡商店
+	serverproto.Handle_GAME_CSBTShopInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSBTShopInfoReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.InfoF("uid=%v receive CSBTShopInfoReq ms=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).GetBTShopInfo(msg.ShopType, msg.SubShop)
+	})
+	// bt波利商城
+	serverproto.Handle_GAME_CSBoliShopInfoReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSBoliShopInfoReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v CSBoliShopInfoReq msg=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).BoliShopInfo()
+	})
+	serverproto.Handle_GAME_CSBoliShopLevelUpReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSBoliShopLevelUpReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v CSBoliShopLevelUpReq msg=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).BoliLevelUp(msg.Num)
+	})
+	serverproto.Handle_GAME_CSBoliShopRewardReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSBoliShopRewardReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v CSBoliShopRewardReq msg=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).BoliReward(msg.RewardLevel, msg.Idx)
+	})
+	serverproto.Handle_GAME_CSBoliShopBuyReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSBoliShopBuyReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v CSBoliShopBuyReq msg=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).BoliShopBuy(msg.GoodsId, msg.GoodsNum)
+	})
+	//RO币礼包购买
+	serverproto.Handle_GAME_CSBTRoCoinShopItemBuyReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSBTRoCoinShopItemBuyReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v CSBTRoCoinShopItemBuyReq msg=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).PayInfoGetForRoCoin(msg.GoodsId, msg.GoodsNum)
+	})
+	//超值首充 & 百元大礼包
+	serverproto.Handle_GAME_CSBTFirstRechargeRewardReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSBTFirstRechargeRewardReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v CSBTFirstRechargeRewardReq msg=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).FirstRechargeReward(msg.RewardIdx)
+	})
+	serverproto.Handle_GAME_CSBTRecharge100RewardReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.CSBTRecharge100RewardReq)
+		role := model2.RoleMag.GetRoleOrKick(cliId, ev)
+		if role == nil {
+			return
+		}
+		util.DebugF("uid=%v CSBTRecharge100RewardReq msg=%v", role.GetUUid(), msg)
+
+		role.(model2.RoleBTRouter).Recharge100Reward()
+	})
 }

+ 83 - 0
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/model/chat_update.go

@@ -0,0 +1,83 @@
+package model
+
+import (
+	"rocommon"
+	"rocommon/util"
+	"roserver/baseserver"
+	"roserver/serverproto"
+	"runtime/debug"
+)
+
+type ChatUpdateItemList struct {
+	ChatList []ChatUpdateItem
+}
+type ChatUpdateItem struct {
+	UserId   string
+	RoleUid  uint64
+	RoleName string
+	ZoneId   int32
+	Content  []string
+}
+
+type ChatUpdateMag struct {
+	chatContentList map[uint64]*ChatUpdateItem
+	updateTimer     util.ServerTimer //更新定时器
+}
+
+func newChatUpdateMag() *ChatUpdateMag {
+	mag := &ChatUpdateMag{
+		chatContentList: map[uint64]*ChatUpdateItem{},
+	}
+	mag.updateTimer = util.NewDurationTimer(util.GetCurrentTime(), 1000)
+	return mag
+}
+
+func (this *ChatUpdateMag) Update(ms uint64) {
+	if this.updateTimer.IsStart() && this.updateTimer.IsExpired(ms) {
+		if len(this.chatContentList) <= 0 {
+			return
+		}
+		//send to gmweb
+		urlPath := "/chat"
+		var tmpChatList ChatUpdateItemList
+		for key, val := range this.chatContentList {
+			tmpChatList.ChatList = append(tmpChatList.ChatList, *val)
+			delete(this.chatContentList, key)
+		}
+
+		go func() {
+			defer func() {
+				//打印奔溃信息
+				if err := recover(); err != nil {
+					util.InfoF("onError data=%v \n%s\n", err, string(debug.Stack()))
+				}
+			}()
+			tmpRequest := &rocommon.HTTPRequest{}
+			tmpRequest.ReqCodecName = "httpjson"
+			tmpRequest.ReqMsg = tmpChatList
+
+			parm := GetHttpNodeParam()
+			httpNode := baseserver.CreateHttpConnector(parm)
+			err := httpNode.(rocommon.HTTPConnector).Request("POST", urlPath, tmpRequest)
+			if err != nil {
+				util.InfoF("http Request err=%v", err)
+				return
+			}
+		}()
+	}
+}
+
+func (this *ChatUpdateMag) AddChatMsg(msg *serverproto.SSWebGMChatMsgNtf) {
+	addItem, ok := this.chatContentList[msg.Uid]
+	if !ok {
+		addItem = &ChatUpdateItem{
+			RoleUid:  msg.Uid,
+			RoleName: msg.ChatSelfName,
+			ZoneId:   msg.SelectZoneId,
+			Content:  []string{msg.Content.Message},
+		}
+		this.chatContentList[msg.Uid] = addItem
+	} else {
+		addItem.Content = append(addItem.Content, msg.Content.Message)
+	}
+}

+ 6 - 0
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/model/gmweb_model.go

@@ -16,6 +16,7 @@ var (
 	httpParamMutex sync.RWMutex
 	HttpNodeParam  *baseserver.ServiceParam
 	mailUpdateMag  *MailUpdateMag
+	chatUpdateMag  *ChatUpdateMag
 )
 
 type GiftContent struct {
@@ -36,7 +37,9 @@ type WebGMUpdate struct {
 func (this *WebGMUpdate) Init() {
 
 	mailUpdateMag = newMailUpdateMag()
+	chatUpdateMag = newChatUpdateMag()
 	updateList = append(updateList, mailUpdateMag)
+	updateList = append(updateList, chatUpdateMag)
 }
 
 func (this *WebGMUpdate) Update(ms uint64) {
@@ -49,6 +52,9 @@ func (this *WebGMUpdate) Update(ms uint64) {
 func GetMailUpdateMag() *MailUpdateMag {
 	return mailUpdateMag
 }
+func GetChatUpdateMag() *ChatUpdateMag {
+	return chatUpdateMag
+}
 
 func GetHttpNodeParam() baseserver.ServiceParam {
 	httpParamMutex.RLock()

+ 7 - 0
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/msg/msg.go

@@ -84,4 +84,11 @@ func init() {
 			gmmodel.SendSocial(ackMsg)
 		}()
 	})
+
+	serverproto.Handle_GMWEB_SSWebGMChatMsgNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.SSWebGMChatMsgNtf)
+		util.InfoF("uid=%v SSWebGMChatMsgNtf msg=%v", msg.Uid, msg)
+
+		gmmodel.GetChatUpdateMag().AddChatMsg(msg)
+	})
 }

+ 596 - 519
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/common.pb.go

@@ -98,6 +98,9 @@ const (
 	ResType_Res_IdolSeason        ResType = 50
 	ResType_Res_WishBox           ResType = 51
 	ResType_Res_WishBox_Select    ResType = 52
+	ResType_Res_CreditRecharge    ResType = 53
+	ResType_Res_ROCoin            ResType = 54
+	ResType_Res_BoliShopExp       ResType = 55
 )
 
 var ResType_name = map[int32]string{
@@ -149,6 +152,9 @@ var ResType_name = map[int32]string{
 	50: "Res_IdolSeason",
 	51: "Res_WishBox",
 	52: "Res_WishBox_Select",
+	53: "Res_CreditRecharge",
+	54: "Res_ROCoin",
+	55: "Res_BoliShopExp",
 }
 
 var ResType_value = map[string]int32{
@@ -200,6 +206,9 @@ var ResType_value = map[string]int32{
 	"Res_IdolSeason":        50,
 	"Res_WishBox":           51,
 	"Res_WishBox_Select":    52,
+	"Res_CreditRecharge":    53,
+	"Res_ROCoin":            54,
+	"Res_BoliShopExp":       55,
 }
 
 func (x ResType) String() string {
@@ -304,99 +313,103 @@ const (
 	TaskType_Eve_Skill_Advance_Num         TaskType = 94
 	TaskType_Eve_Five_Artifact_Activate    TaskType = 95
 	TaskType_Eve_Arean_First_Cnt           TaskType = 96
+	TaskType_BT_ZhenJiaRecharge            TaskType = 100
+	TaskType_BT_ROCoinRecharge             TaskType = 101
 )
 
 var TaskType_name = map[int32]string{
-	0:  "NONE",
-	1:  "Base_Level",
-	2:  "Job_Level",
-	3:  "Job_Stage",
-	4:  "Hero_Level_Num",
-	5:  "Hero_LevelUp_Count",
-	6:  "Hero_Power_Num",
-	8:  "Equip_Level_Num",
-	9:  "Equip_Level_Count",
-	10: "Equip_Forge_Count",
-	11: "Level_Battle_Count",
-	13: "Skill_Slot_Level_Up_Count",
-	14: "Total_Power",
-	16: "Battle_Boss_Count",
-	17: "Remain_Skill_Point",
-	18: "Role_Equip_Forge_Count",
-	19: "Part_Equip_Forge_Count",
-	20: "Role_Quick_Battle_Count",
-	21: "Role_Use_Item_Count",
-	22: "Hero_Total_Num",
-	23: "Hero_Id_Level",
-	24: "Battle_Boss_Reward_Count",
-	25: "Get_Online_Box_Count",
-	26: "Arena_Battle_Start_Count",
-	28: "Evil_Fight_Count",
-	30: "Silver_Consumption_Count",
-	31: "Gold_Consumption_Count",
-	32: "Arena_Battle_Win_Count",
-	33: "Climbing_Tower_Count",
-	35: "Card_Composed_Count",
-	36: "Card_Reset_Count",
-	37: "Climbing_Tower_Level",
-	38: "PK_Win_Count",
-	39: "Get_Silver_Count",
-	40: "Get_Suit_Count",
-	41: "Get_Card_Count",
-	42: "Arena_Battle_Win_Count_Accu",
-	43: "Shop_Buy_Count",
-	44: "Equip_Quality_Num",
-	45: "Card_Quality_Num",
-	46: "Pet_Quality_Num",
-	47: "Arena_Rank_Level",
-	48: "Evil_Battle_Count_Accu",
-	49: "Expedition_Battle_Count",
-	50: "Expedition_CallHelp_Count",
-	51: "Friend_SubFan_Num",
-	52: "Friend_Invite_Count",
-	53: "Guild_Join_Count",
-	54: "VIP_Level",
-	55: "Invitation_Base_Level_Num",
-	56: "Invitation_Recharge_Num",
-	57: "Invitation_Number_Num",
-	58: "Arena_Battle_Start_Count_Accu",
-	59: "Recharge_Num_Accu",
-	60: "Recharge_Num",
-	61: "Chat_Message_Count",
-	62: "Draw_Card_Num",
-	63: "Draw_Pet_Num",
-	64: "Expedition_Challenge_Count",
-	65: "Guild_Boss_Normal_Count",
-	66: "World_Boss_Challenge_Count",
-	67: "Eve_Card_Num",
-	68: "Eve_Pet_Num",
-	69: "Eve_Fight_value",
-	70: "Eve_Merge_Equip",
-	71: "Eve_Merge_Card",
-	72: "Eve_Accu_count",
-	73: "Start_Server_Days",
-	74: "Eve_Arean_First",
-	75: "Eve_Arean_Buy",
-	77: "Eve_DaoChange_Win",
-	78: "Eve_Month_Card",
-	79: "Eve_Recharge_Value",
-	80: "Eve_Keepsake_lvl_All",
-	81: "Eve_Item_Count",
-	82: "Eve_Login_Day",
-	83: "Eve_Equip_Level_Role",
-	84: "Eve_Use_Quick_Battle",
-	85: "Eve_Month_Card_High",
-	86: "Eve_Battle_Role_Quality",
-	87: "Eve_DaoChange_Win_Add",
-	88: "Eve_Pet_Id_Cnt",
-	89: "Eve_Arean_Dan",
-	90: "Eve_Pet_Battle_Quality_cnt",
-	91: "Eve_Evil_Fight_Lvl",
-	92: "Eve_Expedition_Battle_Type",
-	93: "Eve_Head_Icon_Cont",
-	94: "Eve_Skill_Advance_Num",
-	95: "Eve_Five_Artifact_Activate",
-	96: "Eve_Arean_First_Cnt",
+	0:   "NONE",
+	1:   "Base_Level",
+	2:   "Job_Level",
+	3:   "Job_Stage",
+	4:   "Hero_Level_Num",
+	5:   "Hero_LevelUp_Count",
+	6:   "Hero_Power_Num",
+	8:   "Equip_Level_Num",
+	9:   "Equip_Level_Count",
+	10:  "Equip_Forge_Count",
+	11:  "Level_Battle_Count",
+	13:  "Skill_Slot_Level_Up_Count",
+	14:  "Total_Power",
+	16:  "Battle_Boss_Count",
+	17:  "Remain_Skill_Point",
+	18:  "Role_Equip_Forge_Count",
+	19:  "Part_Equip_Forge_Count",
+	20:  "Role_Quick_Battle_Count",
+	21:  "Role_Use_Item_Count",
+	22:  "Hero_Total_Num",
+	23:  "Hero_Id_Level",
+	24:  "Battle_Boss_Reward_Count",
+	25:  "Get_Online_Box_Count",
+	26:  "Arena_Battle_Start_Count",
+	28:  "Evil_Fight_Count",
+	30:  "Silver_Consumption_Count",
+	31:  "Gold_Consumption_Count",
+	32:  "Arena_Battle_Win_Count",
+	33:  "Climbing_Tower_Count",
+	35:  "Card_Composed_Count",
+	36:  "Card_Reset_Count",
+	37:  "Climbing_Tower_Level",
+	38:  "PK_Win_Count",
+	39:  "Get_Silver_Count",
+	40:  "Get_Suit_Count",
+	41:  "Get_Card_Count",
+	42:  "Arena_Battle_Win_Count_Accu",
+	43:  "Shop_Buy_Count",
+	44:  "Equip_Quality_Num",
+	45:  "Card_Quality_Num",
+	46:  "Pet_Quality_Num",
+	47:  "Arena_Rank_Level",
+	48:  "Evil_Battle_Count_Accu",
+	49:  "Expedition_Battle_Count",
+	50:  "Expedition_CallHelp_Count",
+	51:  "Friend_SubFan_Num",
+	52:  "Friend_Invite_Count",
+	53:  "Guild_Join_Count",
+	54:  "VIP_Level",
+	55:  "Invitation_Base_Level_Num",
+	56:  "Invitation_Recharge_Num",
+	57:  "Invitation_Number_Num",
+	58:  "Arena_Battle_Start_Count_Accu",
+	59:  "Recharge_Num_Accu",
+	60:  "Recharge_Num",
+	61:  "Chat_Message_Count",
+	62:  "Draw_Card_Num",
+	63:  "Draw_Pet_Num",
+	64:  "Expedition_Challenge_Count",
+	65:  "Guild_Boss_Normal_Count",
+	66:  "World_Boss_Challenge_Count",
+	67:  "Eve_Card_Num",
+	68:  "Eve_Pet_Num",
+	69:  "Eve_Fight_value",
+	70:  "Eve_Merge_Equip",
+	71:  "Eve_Merge_Card",
+	72:  "Eve_Accu_count",
+	73:  "Start_Server_Days",
+	74:  "Eve_Arean_First",
+	75:  "Eve_Arean_Buy",
+	77:  "Eve_DaoChange_Win",
+	78:  "Eve_Month_Card",
+	79:  "Eve_Recharge_Value",
+	80:  "Eve_Keepsake_lvl_All",
+	81:  "Eve_Item_Count",
+	82:  "Eve_Login_Day",
+	83:  "Eve_Equip_Level_Role",
+	84:  "Eve_Use_Quick_Battle",
+	85:  "Eve_Month_Card_High",
+	86:  "Eve_Battle_Role_Quality",
+	87:  "Eve_DaoChange_Win_Add",
+	88:  "Eve_Pet_Id_Cnt",
+	89:  "Eve_Arean_Dan",
+	90:  "Eve_Pet_Battle_Quality_cnt",
+	91:  "Eve_Evil_Fight_Lvl",
+	92:  "Eve_Expedition_Battle_Type",
+	93:  "Eve_Head_Icon_Cont",
+	94:  "Eve_Skill_Advance_Num",
+	95:  "Eve_Five_Artifact_Activate",
+	96:  "Eve_Arean_First_Cnt",
+	100: "BT_ZhenJiaRecharge",
+	101: "BT_ROCoinRecharge",
 }
 
 var TaskType_value = map[string]int32{
@@ -490,6 +503,8 @@ var TaskType_value = map[string]int32{
 	"Eve_Skill_Advance_Num":         94,
 	"Eve_Five_Artifact_Activate":    95,
 	"Eve_Arean_First_Cnt":           96,
+	"BT_ZhenJiaRecharge":            100,
+	"BT_ROCoinRecharge":             101,
 }
 
 func (x TaskType) String() string {
@@ -747,6 +762,13 @@ const (
 	GlobalType_Global_PetQiyue_Slot_Unlock_Cost             GlobalType = 350
 	GlobalType_Global_PetQiyue_Nature_Attr                  GlobalType = 351
 	GlobalType_Global_Card_Level_Exchange                   GlobalType = 352
+	GlobalType_Global_CreditRechargeVip_Factor              GlobalType = 353
+	GlobalType_Global_CreditRechargeInitMax                 GlobalType = 354
+	GlobalType_Global_FastBattleTime                        GlobalType = 355
+	GlobalType_Global_RmbToROCoinFactor                     GlobalType = 356
+	GlobalType_Global_ClimbingTowerDayReward                GlobalType = 357
+	GlobalType_Global_RoCoinToBoliExp_Factor                GlobalType = 358
+	GlobalType_Global_WorldBossChallengeCost                GlobalType = 362
 )
 
 var GlobalType_name = map[int32]string{
@@ -910,6 +932,13 @@ var GlobalType_name = map[int32]string{
 	350: "Global_PetQiyue_Slot_Unlock_Cost",
 	351: "Global_PetQiyue_Nature_Attr",
 	352: "Global_Card_Level_Exchange",
+	353: "Global_CreditRechargeVip_Factor",
+	354: "Global_CreditRechargeInitMax",
+	355: "Global_FastBattleTime",
+	356: "Global_RmbToROCoinFactor",
+	357: "Global_ClimbingTowerDayReward",
+	358: "Global_RoCoinToBoliExp_Factor",
+	362: "Global_WorldBossChallengeCost",
 }
 
 var GlobalType_value = map[string]int32{
@@ -1073,6 +1102,13 @@ var GlobalType_value = map[string]int32{
 	"Global_PetQiyue_Slot_Unlock_Cost":             350,
 	"Global_PetQiyue_Nature_Attr":                  351,
 	"Global_Card_Level_Exchange":                   352,
+	"Global_CreditRechargeVip_Factor":              353,
+	"Global_CreditRechargeInitMax":                 354,
+	"Global_FastBattleTime":                        355,
+	"Global_RmbToROCoinFactor":                     356,
+	"Global_ClimbingTowerDayReward":                357,
+	"Global_RoCoinToBoliExp_Factor":                358,
+	"Global_WorldBossChallengeCost":                362,
 }
 
 func (x GlobalType) String() string {
@@ -1114,6 +1150,8 @@ const (
 	MailType_MailType_RushSkill          MailType = 24
 	MailType_MailType_GuildDemon         MailType = 25
 	MailType_MailType_Idol               MailType = 26
+	MailType_MailType_BoliSHop           MailType = 27
+	MailType_MailType_SpecialPrivilege   MailType = 28
 )
 
 var MailType_name = map[int32]string{
@@ -1144,6 +1182,8 @@ var MailType_name = map[int32]string{
 	24: "MailType_RushSkill",
 	25: "MailType_GuildDemon",
 	26: "MailType_Idol",
+	27: "MailType_BoliSHop",
+	28: "MailType_SpecialPrivilege",
 }
 
 var MailType_value = map[string]int32{
@@ -1174,6 +1214,8 @@ var MailType_value = map[string]int32{
 	"MailType_RushSkill":          24,
 	"MailType_GuildDemon":         25,
 	"MailType_Idol":               26,
+	"MailType_BoliSHop":           27,
+	"MailType_SpecialPrivilege":   28,
 }
 
 func (x MailType) String() string {
@@ -1366,18 +1408,21 @@ const (
 	//    EActivityType_First_Recharge            = 1; //首充活动
 	EActivityType_EActivityType_Daily_Cum_Recharge EActivityType = 2
 	//    EActivityType_Daily_Recharge            = 3; //每日充值
-	EActivityType_EActivityType_14_Days_Login EActivityType = 4
-	EActivityType_EActivityType_14_Days_Task  EActivityType = 5
-	EActivityType_EActivityType_100Recharge   EActivityType = 6
-	EActivityType_EActivityType_ExChange      EActivityType = 7
-	EActivityType_EActivityType_Acitivty_Shop EActivityType = 8
-	EActivityType_EActivityType_Cash_Shop     EActivityType = 9
-	EActivityType_EActivityType_Likability    EActivityType = 10
-	EActivityType_EActivityType_Pet_Exchange  EActivityType = 11
-	EActivityType_EActivityType_King          EActivityType = 12
-	EActivityType_EActivityType_Wheel         EActivityType = 13
-	EActivityType_EActivityType_Summon        EActivityType = 14
-	EActivityType_EActivityType_SignIn        EActivityType = 15
+	EActivityType_EActivityType_14_Days_Login      EActivityType = 4
+	EActivityType_EActivityType_14_Days_Task       EActivityType = 5
+	EActivityType_EActivityType_100Recharge        EActivityType = 6
+	EActivityType_EActivityType_ExChange           EActivityType = 7
+	EActivityType_EActivityType_Acitivty_Shop      EActivityType = 8
+	EActivityType_EActivityType_Cash_Shop          EActivityType = 9
+	EActivityType_EActivityType_Likability         EActivityType = 10
+	EActivityType_EActivityType_Pet_Exchange       EActivityType = 11
+	EActivityType_EActivityType_King               EActivityType = 12
+	EActivityType_EActivityType_Wheel              EActivityType = 13
+	EActivityType_EActivityType_Summon             EActivityType = 14
+	EActivityType_EActivityType_SignIn             EActivityType = 15
+	EActivityType_EActivityType_BT_ROCoinRecharge  EActivityType = 20
+	EActivityType_EActivityType_BT_ZhenJiaRecharge EActivityType = 21
+	EActivityType_EActivityType_BT_SmashEgg        EActivityType = 22
 )
 
 var EActivityType_name = map[int32]string{
@@ -1395,6 +1440,9 @@ var EActivityType_name = map[int32]string{
 	13: "EActivityType_Wheel",
 	14: "EActivityType_Summon",
 	15: "EActivityType_SignIn",
+	20: "EActivityType_BT_ROCoinRecharge",
+	21: "EActivityType_BT_ZhenJiaRecharge",
+	22: "EActivityType_BT_SmashEgg",
 }
 
 var EActivityType_value = map[string]int32{
@@ -1412,6 +1460,9 @@ var EActivityType_value = map[string]int32{
 	"EActivityType_Wheel":              13,
 	"EActivityType_Summon":             14,
 	"EActivityType_SignIn":             15,
+	"EActivityType_BT_ROCoinRecharge":  20,
+	"EActivityType_BT_ZhenJiaRecharge": 21,
+	"EActivityType_BT_SmashEgg":        22,
 }
 
 func (x EActivityType) String() string {
@@ -1459,54 +1510,66 @@ func (PayOrderState) EnumDescriptor() ([]byte, []int) {
 type PayGoodsType int32
 
 const (
-	PayGoodsType_EPayType_None        PayGoodsType = 0
-	PayGoodsType_EPayType_Discount    PayGoodsType = 1
-	PayGoodsType_EPayType_MonthCard   PayGoodsType = 2
-	PayGoodsType_EPayType_NormalBag   PayGoodsType = 3
-	PayGoodsType_EPayType_LimitBag    PayGoodsType = 4
-	PayGoodsType_EPayType_RushTower   PayGoodsType = 5
-	PayGoodsType_EPayType_RushArena   PayGoodsType = 6
-	PayGoodsType_EPayType_RushMap     PayGoodsType = 7
-	PayGoodsType_EPayType_RuneExplore PayGoodsType = 8
-	PayGoodsType_EPayType_GuildBattle PayGoodsType = 9
-	PayGoodsType_EPayType_RushPet     PayGoodsType = 10
-	PayGoodsType_EPayType_RushSkill   PayGoodsType = 11
-	PayGoodsType_EPayType_RushIdol    PayGoodsType = 12
-	PayGoodsType_EPayType_NBH5        PayGoodsType = 50
+	PayGoodsType_EPayType_None             PayGoodsType = 0
+	PayGoodsType_EPayType_Discount         PayGoodsType = 1
+	PayGoodsType_EPayType_MonthCard        PayGoodsType = 2
+	PayGoodsType_EPayType_NormalBag        PayGoodsType = 3
+	PayGoodsType_EPayType_LimitBag         PayGoodsType = 4
+	PayGoodsType_EPayType_RushTower        PayGoodsType = 5
+	PayGoodsType_EPayType_RushArena        PayGoodsType = 6
+	PayGoodsType_EPayType_RushMap          PayGoodsType = 7
+	PayGoodsType_EPayType_RuneExplore      PayGoodsType = 8
+	PayGoodsType_EPayType_GuildBattle      PayGoodsType = 9
+	PayGoodsType_EPayType_RushPet          PayGoodsType = 10
+	PayGoodsType_EPayType_RushSkill        PayGoodsType = 11
+	PayGoodsType_EPayType_RushIdol         PayGoodsType = 12
+	PayGoodsType_EPayType_NBH5             PayGoodsType = 50
+	PayGoodsType_EPayType_CreditRecharge   PayGoodsType = 100
+	PayGoodsType_EPayType_SpecialPrivilege PayGoodsType = 101
+	PayGoodsType_EPayType_PassCheck        PayGoodsType = 102
+	PayGoodsType_EPayType_BTRecharge100    PayGoodsType = 103
 )
 
 var PayGoodsType_name = map[int32]string{
-	0:  "EPayType_None",
-	1:  "EPayType_Discount",
-	2:  "EPayType_MonthCard",
-	3:  "EPayType_NormalBag",
-	4:  "EPayType_LimitBag",
-	5:  "EPayType_RushTower",
-	6:  "EPayType_RushArena",
-	7:  "EPayType_RushMap",
-	8:  "EPayType_RuneExplore",
-	9:  "EPayType_GuildBattle",
-	10: "EPayType_RushPet",
-	11: "EPayType_RushSkill",
-	12: "EPayType_RushIdol",
-	50: "EPayType_NBH5",
+	0:   "EPayType_None",
+	1:   "EPayType_Discount",
+	2:   "EPayType_MonthCard",
+	3:   "EPayType_NormalBag",
+	4:   "EPayType_LimitBag",
+	5:   "EPayType_RushTower",
+	6:   "EPayType_RushArena",
+	7:   "EPayType_RushMap",
+	8:   "EPayType_RuneExplore",
+	9:   "EPayType_GuildBattle",
+	10:  "EPayType_RushPet",
+	11:  "EPayType_RushSkill",
+	12:  "EPayType_RushIdol",
+	50:  "EPayType_NBH5",
+	100: "EPayType_CreditRecharge",
+	101: "EPayType_SpecialPrivilege",
+	102: "EPayType_PassCheck",
+	103: "EPayType_BTRecharge100",
 }
 
 var PayGoodsType_value = map[string]int32{
-	"EPayType_None":        0,
-	"EPayType_Discount":    1,
-	"EPayType_MonthCard":   2,
-	"EPayType_NormalBag":   3,
-	"EPayType_LimitBag":    4,
-	"EPayType_RushTower":   5,
-	"EPayType_RushArena":   6,
-	"EPayType_RushMap":     7,
-	"EPayType_RuneExplore": 8,
-	"EPayType_GuildBattle": 9,
-	"EPayType_RushPet":     10,
-	"EPayType_RushSkill":   11,
-	"EPayType_RushIdol":    12,
-	"EPayType_NBH5":        50,
+	"EPayType_None":             0,
+	"EPayType_Discount":         1,
+	"EPayType_MonthCard":        2,
+	"EPayType_NormalBag":        3,
+	"EPayType_LimitBag":         4,
+	"EPayType_RushTower":        5,
+	"EPayType_RushArena":        6,
+	"EPayType_RushMap":          7,
+	"EPayType_RuneExplore":      8,
+	"EPayType_GuildBattle":      9,
+	"EPayType_RushPet":          10,
+	"EPayType_RushSkill":        11,
+	"EPayType_RushIdol":         12,
+	"EPayType_NBH5":             50,
+	"EPayType_CreditRecharge":   100,
+	"EPayType_SpecialPrivilege": 101,
+	"EPayType_PassCheck":        102,
+	"EPayType_BTRecharge100":    103,
 }
 
 func (x PayGoodsType) String() string {
@@ -2498,379 +2561,393 @@ func init() {
 func init() { proto.RegisterFile("common.proto", fileDescriptor_555bd8c177793206) }
 
 var fileDescriptor_555bd8c177793206 = []byte{
-	// 5977 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x7b, 0x69, 0x90, 0x23, 0xc9,
-	0x55, 0xbf, 0xa5, 0xbe, 0xb3, 0xaf, 0xec, 0xea, 0xee, 0x69, 0xf5, 0xdc, 0xc7, 0xce, 0xce, 0x4c,
-	0xef, 0xee, 0xec, 0xcc, 0xec, 0xda, 0x7f, 0xfb, 0xef, 0xb3, 0x5b, 0xea, 0x6b, 0xa7, 0xd5, 0xa3,
-	0x95, 0xba, 0x7b, 0xbc, 0xbe, 0xca, 0xd9, 0x52, 0x4a, 0x4a, 0xab, 0x54, 0xa5, 0xad, 0x4a, 0x69,
-	0x5a, 0xf0, 0x05, 0x08, 0x7f, 0xc1, 0xd8, 0x0e, 0x30, 0x01, 0x18, 0x07, 0x36, 0x1f, 0x38, 0x22,
-	0x6c, 0x0c, 0x11, 0x80, 0xb9, 0x02, 0x13, 0x01, 0x36, 0xb6, 0x31, 0x1f, 0x7c, 0x60, 0xc0, 0x06,
-	0x8c, 0xed, 0x70, 0x40, 0x98, 0x1b, 0x3e, 0x10, 0x41, 0x10, 0x80, 0x21, 0xde, 0xcb, 0xcc, 0x52,
-	0x96, 0xa4, 0xf6, 0x7c, 0x92, 0xea, 0xbd, 0x5f, 0xbe, 0x7c, 0xf9, 0xae, 0x7c, 0x55, 0x59, 0x45,
-	0x66, 0xca, 0x41, 0xb3, 0x19, 0xf8, 0xb7, 0x5b, 0x61, 0x20, 0x03, 0x67, 0x3a, 0xe2, 0x61, 0x87,
-	0x87, 0x78, 0x71, 0x96, 0xb4, 0x23, 0x1e, 0x2a, 0xc6, 0xd5, 0x37, 0x91, 0xf9, 0x82, 0xc7, 0xba,
-	0x3c, 0xdc, 0x08, 0x05, 0xaf, 0xee, 0xfa, 0xd5, 0xc0, 0xa1, 0x64, 0xa4, 0x2d, 0x2a, 0x99, 0xd4,
-	0xe5, 0xd4, 0xcd, 0xd1, 0x22, 0xfc, 0x75, 0xce, 0x91, 0x29, 0x5f, 0x94, 0x1b, 0xae, 0xcf, 0x9a,
-	0x3c, 0x93, 0xbe, 0x9c, 0xba, 0x39, 0x55, 0x9c, 0x04, 0xc2, 0x3e, 0x6b, 0xf2, 0xab, 0xaf, 0x26,
-	0x73, 0x1b, 0x4c, 0x4a, 0x8f, 0xaf, 0x4b, 0x19, 0x1e, 0x74, 0x5b, 0x1c, 0x04, 0x34, 0x78, 0x17,
-	0x05, 0x8c, 0x15, 0xe1, 0xaf, 0xb3, 0x44, 0xc6, 0x3a, 0xcc, 0x6b, 0xab, 0xc1, 0xe9, 0xa2, 0xba,
-	0xb8, 0xfa, 0xd5, 0x29, 0x32, 0xbf, 0x5e, 0x96, 0x41, 0xd8, 0x1b, 0x0f, 0x63, 0x23, 0x19, 0xe2,
-	0xd8, 0x74, 0x11, 0xfe, 0x02, 0x85, 0xd5, 0x84, 0x1e, 0x09, 0x7f, 0x81, 0x22, 0x7c, 0x99, 0x19,
-	0x51, 0x14, 0xe1, 0x4b, 0xa0, 0x74, 0x84, 0xcc, 0x8c, 0x2a, 0x4a, 0x47, 0x20, 0xa5, 0xc2, 0x4f,
-	0x32, 0x63, 0x8a, 0x52, 0xe1, 0x27, 0x40, 0xf1, 0xda, 0x8d, 0xcc, 0xb8, 0xa2, 0x78, 0xed, 0x86,
-	0xe3, 0x90, 0x51, 0x4f, 0x54, 0x79, 0x86, 0x20, 0x09, 0xff, 0x3b, 0x73, 0x24, 0x1d, 0xb5, 0x32,
-	0xd3, 0x48, 0x49, 0x47, 0x2d, 0xe7, 0x02, 0x21, 0x4d, 0xe1, 0xbb, 0x4c, 0x4a, 0x56, 0x6e, 0x64,
-	0x66, 0x90, 0x3e, 0xd5, 0x14, 0xfe, 0x3a, 0x12, 0x9c, 0x33, 0x64, 0x5c, 0xb3, 0x66, 0x91, 0xa5,
-	0xaf, 0x9c, 0x9b, 0x84, 0xc2, 0xb0, 0x26, 0xab, 0x89, 0xb2, 0x19, 0x3c, 0x87, 0x88, 0xb9, 0xa6,
-	0xf0, 0xf3, 0x40, 0xd6, 0x12, 0xae, 0x90, 0x99, 0x04, 0x6a, 0x1e, 0x51, 0xd3, 0x4d, 0x0b, 0x92,
-	0x21, 0x13, 0x15, 0x5e, 0xe5, 0x7e, 0xc4, 0x33, 0x14, 0xb9, 0xe6, 0xd2, 0xb9, 0x46, 0x66, 0xd5,
-	0x60, 0xc3, 0x5f, 0x40, 0xbe, 0x92, 0x98, 0xd3, 0x20, 0x87, 0x8c, 0x96, 0x43, 0x21, 0x33, 0x8e,
-	0x5a, 0x26, 0xfc, 0x07, 0x87, 0x54, 0x82, 0x4a, 0x8d, 0x67, 0x16, 0x95, 0x43, 0xf0, 0x02, 0x4c,
-	0x54, 0x17, 0x32, 0xb3, 0xa4, 0x4c, 0x54, 0x57, 0x66, 0x94, 0xdc, 0xcf, 0x2c, 0x2b, 0x8a, 0xe4,
-	0x3e, 0xe8, 0xab, 0x34, 0x75, 0xa3, 0x16, 0xe7, 0x95, 0xcc, 0x19, 0xa5, 0xaf, 0xa2, 0x95, 0x80,
-	0x04, 0xe1, 0x12, 0x72, 0xe6, 0xb9, 0xf5, 0x76, 0x28, 0x33, 0x2b, 0xc8, 0x9f, 0x04, 0xc2, 0x4e,
-	0x3b, 0x94, 0xce, 0x25, 0x32, 0x5d, 0xe1, 0x55, 0xb7, 0xc5, 0xc3, 0x32, 0xf7, 0x65, 0xe6, 0x22,
-	0xb2, 0x49, 0x85, 0x57, 0x0b, 0x8a, 0xe2, 0xac, 0x91, 0x85, 0x78, 0x4d, 0x31, 0xec, 0x12, 0xc2,
-	0xe6, 0xcd, 0xba, 0x0c, 0xf6, 0x32, 0x99, 0x6e, 0x71, 0x9f, 0xcb, 0x90, 0x49, 0x11, 0xf8, 0x99,
-	0x9b, 0x4a, 0x17, 0x8b, 0xe4, 0x3c, 0x65, 0xa4, 0xd9, 0xb8, 0x5b, 0x88, 0xa3, 0xc8, 0x28, 0x58,
-	0xe0, 0x7b, 0x64, 0xb9, 0x55, 0xef, 0x46, 0x30, 0x37, 0x6b, 0xb2, 0x1a, 0x8f, 0xa7, 0x5f, 0xc3,
-	0x01, 0x8b, 0x8a, 0x99, 0x43, 0x9e, 0x51, 0xe1, 0x0e, 0x59, 0xd2, 0xea, 0x26, 0x87, 0x3c, 0x85,
-	0x43, 0x1c, 0xa5, 0x71, 0x62, 0xc4, 0x6d, 0xb2, 0x08, 0x3e, 0xe8, 0x1f, 0xf0, 0x34, 0x0e, 0x58,
-	0x00, 0x56, 0x12, 0xbf, 0x4e, 0x2e, 0x24, 0xb5, 0x0a, 0x79, 0xd5, 0xe3, 0x65, 0x19, 0x8f, 0x7c,
-	0x06, 0x47, 0x9e, 0xb5, 0xb5, 0x2b, 0x2a, 0x88, 0x11, 0xf1, 0x46, 0x72, 0x3e, 0xa1, 0x64, 0xbf,
-	0x84, 0xdb, 0x28, 0x61, 0xd5, 0x52, 0xb6, 0x4f, 0xc0, 0x2b, 0xc9, 0x4a, 0x55, 0x9c, 0xf0, 0x8a,
-	0x1b, 0x09, 0xbf, 0xe6, 0x4a, 0xd1, 0xec, 0xe9, 0xfd, 0x2c, 0x8e, 0x5d, 0x42, 0x76, 0x49, 0xf8,
-	0xb5, 0x03, 0xd1, 0x8c, 0x55, 0x7f, 0x2d, 0x39, 0xdb, 0x61, 0xa1, 0x60, 0xc7, 0x1e, 0x1f, 0x32,
-	0xf2, 0x0e, 0x8e, 0x5c, 0x31, 0x88, 0xfe, 0xc1, 0xf7, 0xc8, 0xb2, 0xcf, 0x64, 0x3b, 0xe4, 0xfd,
-	0x96, 0x7a, 0xdd, 0xe5, 0x11, 0xf0, 0x86, 0x62, 0x26, 0x6d, 0xf5, 0x5a, 0x72, 0x96, 0xf9, 0x52,
-	0xb8, 0xc3, 0x07, 0xbe, 0x1e, 0x07, 0xae, 0x00, 0x62, 0x7f, 0xc8, 0xe0, 0x1d, 0xb2, 0x20, 0x43,
-	0x51, 0xab, 0xf1, 0xd0, 0x3d, 0x6e, 0x57, 0xab, 0xae, 0x27, 0x22, 0x99, 0x79, 0xc3, 0xe5, 0x91,
-	0x9b, 0xd3, 0xf7, 0xce, 0xdf, 0xb6, 0x0a, 0xe8, 0xed, 0x03, 0x85, 0xda, 0x68, 0x57, 0xab, 0x39,
-	0x26, 0x59, 0x71, 0x5e, 0xf6, 0x08, 0x7b, 0x22, 0x92, 0x57, 0x7f, 0x39, 0x45, 0xe6, 0xfb, 0x40,
-	0x50, 0x2a, 0x40, 0xea, 0xae, 0xaa, 0xac, 0xb3, 0x45, 0x7d, 0x05, 0x39, 0x6c, 0x66, 0xc5, 0x30,
-	0xd4, 0x95, 0x6e, 0x46, 0x13, 0x8b, 0x40, 0x83, 0xb2, 0x54, 0xae, 0xe8, 0x8a, 0x97, 0x2e, 0x57,
-	0x20, 0x0b, 0xcd, 0x20, 0xd9, 0x6d, 0x71, 0xac, 0x7c, 0x63, 0xc5, 0x69, 0x4d, 0xc3, 0x2a, 0xbc,
-	0x46, 0x16, 0x3c, 0x16, 0x49, 0x37, 0xc6, 0x89, 0x26, 0xd7, 0xf5, 0x70, 0x1e, 0x18, 0x5a, 0x3f,
-	0xb0, 0xf8, 0xd5, 0x7f, 0x1a, 0x21, 0x53, 0x58, 0x89, 0x51, 0xd3, 0x39, 0x92, 0x16, 0x46, 0xcb,
-	0xb4, 0xa8, 0x38, 0xaf, 0x27, 0xd3, 0xc7, 0x58, 0xa1, 0xa1, 0x46, 0x85, 0xa8, 0x5f, 0xbf, 0x45,
-	0xfa, 0xca, 0x78, 0x91, 0x1c, 0xf7, 0x4a, 0xfa, 0x39, 0x32, 0x25, 0x22, 0xb7, 0x85, 0xbb, 0x0c,
-	0x2e, 0x61, 0xb2, 0x38, 0x29, 0x22, 0xb5, 0xeb, 0x38, 0xaf, 0x22, 0x53, 0x0c, 0xc6, 0xba, 0xad,
-	0x20, 0xc2, 0x55, 0x4c, 0xdf, 0x5b, 0x1d, 0x94, 0x5c, 0x08, 0x22, 0xd8, 0x9a, 0x8a, 0x93, 0x4c,
-	0x5f, 0x39, 0xab, 0x64, 0xf2, 0x5d, 0xc1, 0xb1, 0x5a, 0xfc, 0x18, 0x6a, 0x3a, 0xf1, 0xae, 0xe0,
-	0x18, 0x17, 0xbe, 0x49, 0x16, 0xfc, 0x20, 0x6c, 0x32, 0xcf, 0x8d, 0x1a, 0xc2, 0xf3, 0x94, 0x1b,
-	0xc7, 0xd1, 0x8d, 0x49, 0xd1, 0xf7, 0x79, 0xf7, 0x08, 0x36, 0x22, 0x18, 0x55, 0x9c, 0x57, 0x63,
-	0x4a, 0x30, 0x04, 0x7c, 0xe8, 0xbc, 0x91, 0xcc, 0xb5, 0x23, 0x6e, 0xcb, 0x98, 0x78, 0x9c, 0x8c,
-	0x99, 0x76, 0xc4, 0x7b, 0x02, 0xb6, 0x89, 0x53, 0xe1, 0x55, 0xd6, 0xf6, 0xa4, 0x2d, 0x64, 0xf2,
-	0x71, 0x42, 0xa8, 0x1e, 0xd4, 0x13, 0xf4, 0x80, 0x9c, 0x61, 0x9e, 0xe4, 0xa1, 0xcf, 0xa4, 0xe8,
-	0x24, 0x34, 0x9a, 0x7a, 0x9c, 0xb0, 0x25, 0x6b, 0x60, 0x2c, 0xf0, 0xea, 0x09, 0x99, 0xb1, 0xcd,
-	0x3a, 0xe0, 0xf0, 0x1b, 0x64, 0x04, 0xdc, 0xa1, 0x1c, 0xbd, 0x9c, 0x90, 0x5e, 0x08, 0x22, 0x01,
-	0xb5, 0xb2, 0x08, 0x08, 0xe7, 0x59, 0x32, 0x51, 0x0d, 0xc2, 0x47, 0x2c, 0x54, 0xb1, 0x79, 0x2a,
-	0xd8, 0xa0, 0xd6, 0x5e, 0x43, 0xa6, 0xb7, 0x59, 0x93, 0x1f, 0xf1, 0x30, 0x82, 0x82, 0xbb, 0x44,
-	0xa8, 0x75, 0xe9, 0xee, 0x07, 0x3e, 0xa7, 0xaf, 0xe8, 0xa7, 0xe6, 0x99, 0xf0, 0xe9, 0xd4, 0xda,
-	0xfb, 0x26, 0xc8, 0x44, 0x91, 0x47, 0xe8, 0xe2, 0x19, 0x32, 0x59, 0xe4, 0x91, 0xbb, 0xff, 0x60,
-	0x7f, 0x93, 0xbe, 0xc2, 0x5c, 0x65, 0x03, 0xe1, 0xd3, 0x94, 0x33, 0x8d, 0x30, 0xb7, 0xd8, 0x3c,
-	0xa6, 0x69, 0x67, 0x91, 0xcc, 0xe3, 0x45, 0xe0, 0xf1, 0x0d, 0x16, 0xf1, 0xcd, 0x93, 0x16, 0x1d,
-	0x71, 0x1c, 0x32, 0x67, 0x88, 0x2f, 0x04, 0xc7, 0x40, 0x1b, 0x35, 0xc0, 0x1d, 0x1e, 0x06, 0x06,
-	0x38, 0xe6, 0xcc, 0x92, 0x29, 0x20, 0x6e, 0xbe, 0xdc, 0x16, 0x2d, 0x3a, 0x6e, 0xe6, 0xd9, 0x95,
-	0xbc, 0x49, 0x27, 0xe2, 0x59, 0xeb, 0xa2, 0x45, 0x27, 0xe3, 0x2b, 0x16, 0x56, 0xe8, 0x94, 0x33,
-	0x4f, 0xa6, 0xe1, 0x6a, 0x8b, 0x45, 0x75, 0x11, 0xf8, 0x94, 0x38, 0x73, 0x84, 0x20, 0x3b, 0x6c,
-	0x8b, 0x88, 0xd3, 0x69, 0x73, 0x5d, 0x6a, 0x85, 0x42, 0x72, 0x3a, 0x63, 0x06, 0x14, 0x79, 0xe4,
-	0x05, 0x1d, 0x4e, 0x67, 0x8d, 0x3c, 0xd0, 0x87, 0xce, 0x39, 0x0b, 0x64, 0x16, 0xe1, 0xe0, 0xc1,
-	0x8d, 0x20, 0x68, 0xd0, 0x79, 0x03, 0xd8, 0x16, 0x55, 0x49, 0xa9, 0x19, 0xbf, 0xd9, 0x11, 0x1e,
-	0xa8, 0xbe, 0x60, 0x46, 0xec, 0x70, 0x56, 0xd9, 0x0a, 0x59, 0x93, 0x53, 0xc7, 0xcc, 0x59, 0xe0,
-	0x12, 0x20, 0x8b, 0x66, 0x4c, 0x81, 0x4b, 0xb4, 0xdc, 0x92, 0xb1, 0x5c, 0x81, 0x4b, 0xba, 0x6c,
-	0x0c, 0x02, 0x8b, 0xcd, 0x06, 0xcd, 0x56, 0x10, 0x71, 0x7a, 0xc6, 0x10, 0xf7, 0x03, 0xe9, 0x16,
-	0x58, 0xb9, 0xc1, 0x6a, 0x9c, 0xae, 0x18, 0x2b, 0x6d, 0xb7, 0x85, 0x57, 0xa1, 0x19, 0x63, 0xdd,
-	0x5d, 0xbf, 0x23, 0x24, 0x6e, 0xab, 0x74, 0xd5, 0x4c, 0x7d, 0x24, 0x5a, 0x30, 0xf5, 0x59, 0x23,
-	0xe7, 0xc5, 0xb6, 0x28, 0x37, 0x54, 0xd5, 0xa0, 0xe7, 0x0c, 0x31, 0xc7, 0x82, 0x6c, 0x9d, 0xf9,
-	0xb5, 0xbb, 0x77, 0xee, 0xd0, 0xf3, 0xb1, 0x61, 0xda, 0x51, 0x3d, 0xcf, 0x5a, 0xf4, 0x82, 0x43,
-	0xc9, 0x0c, 0x10, 0xee, 0x73, 0xde, 0x2a, 0xb1, 0x06, 0xa7, 0x97, 0xcc, 0x38, 0xb0, 0x84, 0x7b,
-	0xe8, 0x8b, 0x97, 0xdb, 0x9c, 0x5e, 0x76, 0x56, 0xc9, 0x72, 0x9f, 0x30, 0xad, 0xe0, 0x15, 0x08,
-	0xaf, 0x58, 0x5f, 0x57, 0xcf, 0x7e, 0xd5, 0xa8, 0xbd, 0x79, 0xd2, 0xf2, 0x82, 0x10, 0x7e, 0xe8,
-	0xb5, 0x61, 0x42, 0x4a, 0xe5, 0x20, 0xe4, 0xf4, 0x09, 0x03, 0xcf, 0xb2, 0xa8, 0x7e, 0x20, 0xca,
-	0x0d, 0x2e, 0xe9, 0x4d, 0xe7, 0x0c, 0x71, 0x80, 0x96, 0x0f, 0x7c, 0x59, 0x87, 0x48, 0x50, 0x91,
-	0x72, 0xcb, 0x88, 0x29, 0xb6, 0x7d, 0xee, 0x1e, 0xfa, 0x5e, 0x50, 0x6e, 0xb8, 0xeb, 0x90, 0x0d,
-	0x74, 0xcd, 0xe8, 0x7e, 0x24, 0x42, 0xd9, 0x66, 0x9e, 0x5b, 0xcc, 0x6f, 0xd0, 0xa7, 0x8c, 0x9c,
-	0x02, 0x97, 0x7b, 0xbc, 0xc3, 0xbd, 0xc3, 0x02, 0xaa, 0xf3, 0x8c, 0x59, 0x3a, 0x38, 0x10, 0x23,
-	0xf2, 0xb6, 0xb3, 0x4c, 0x16, 0xd0, 0xcb, 0xa2, 0x56, 0x57, 0xf5, 0x02, 0x80, 0xcf, 0x1a, 0xa9,
-	0x48, 0xd1, 0xd1, 0x7b, 0xc7, 0x8e, 0x08, 0xa5, 0xd8, 0xdd, 0xd8, 0x55, 0x95, 0xc0, 0x2b, 0x71,
-	0x16, 0x05, 0x3e, 0xbd, 0x67, 0x0c, 0xfe, 0x50, 0x44, 0xf5, 0x8d, 0xe0, 0x84, 0x3e, 0x67, 0xb4,
-	0xd1, 0x04, 0xb7, 0xc4, 0xa1, 0x2f, 0xa0, 0xcf, 0xaf, 0xfd, 0x2d, 0x25, 0x93, 0x07, 0x2c, 0x6a,
-	0x60, 0x42, 0x4e, 0x92, 0x51, 0x9d, 0x8c, 0x73, 0x84, 0x40, 0x02, 0xb9, 0xa8, 0x3a, 0x4d, 0x41,
-	0x74, 0xbc, 0x10, 0x1c, 0xeb, 0xcb, 0xb4, 0xb9, 0x2c, 0x49, 0x88, 0x1d, 0x4c, 0x45, 0x08, 0x71,
-	0xc5, 0x76, 0xf7, 0xdb, 0x4d, 0x3a, 0x0a, 0x13, 0xf6, 0x68, 0x87, 0x2d, 0x37, 0x1b, 0xb4, 0x7d,
-	0x49, 0xc7, 0x62, 0x6c, 0x21, 0x78, 0xc4, 0x43, 0xc4, 0x8e, 0xc3, 0x4a, 0x71, 0x7d, 0x96, 0x80,
-	0x49, 0xb0, 0x8a, 0x4d, 0x54, 0xe3, 0xa7, 0x7a, 0xe4, 0xad, 0x20, 0xac, 0x71, 0x4d, 0x26, 0x30,
-	0x9d, 0xc2, 0xa9, 0x50, 0xd0, 0xf4, 0x69, 0xe7, 0x02, 0x59, 0x55, 0x06, 0x2c, 0x79, 0x81, 0xd4,
-	0xa2, 0x62, 0x6d, 0x66, 0xc1, 0x4e, 0x07, 0x81, 0x64, 0x9e, 0x52, 0x87, 0xce, 0x81, 0x78, 0x2d,
-	0x61, 0x23, 0x88, 0x22, 0x8d, 0xa3, 0xca, 0x7c, 0x4d, 0x26, 0x7c, 0xed, 0x8e, 0x42, 0x20, 0x7c,
-	0x49, 0x17, 0x9c, 0xb3, 0xe4, 0x0c, 0x14, 0x20, 0x77, 0x50, 0x25, 0x07, 0x78, 0x05, 0x16, 0xca,
-	0x21, 0xbc, 0x45, 0xe7, 0x1c, 0x59, 0xc1, 0x71, 0x98, 0x3b, 0x49, 0x9d, 0x97, 0x9c, 0x15, 0xb2,
-	0x88, 0xcc, 0xc3, 0x88, 0xa3, 0x8f, 0x35, 0x63, 0x39, 0xb6, 0x9d, 0x52, 0x19, 0xcc, 0x74, 0x06,
-	0x02, 0x02, 0x69, 0xbb, 0x15, 0xed, 0x9d, 0x15, 0xe7, 0x3c, 0xc9, 0xd8, 0x6b, 0x28, 0x72, 0x08,
-	0x53, 0x2d, 0x24, 0xe3, 0x64, 0xc8, 0xd2, 0x36, 0x97, 0xee, 0x03, 0xdf, 0x13, 0x3e, 0x20, 0x4e,
-	0x34, 0x67, 0x15, 0xc6, 0xad, 0x87, 0xdc, 0x67, 0x46, 0x9f, 0x92, 0x04, 0xf5, 0x15, 0xf7, 0x2c,
-	0x24, 0x1c, 0x14, 0x26, 0x77, 0x0b, 0xc2, 0x54, 0x53, 0xcf, 0xc3, 0x98, 0x92, 0xf0, 0x3a, 0x3c,
-	0x74, 0xb3, 0x81, 0x1f, 0xb5, 0x9b, 0x2d, 0xa8, 0x15, 0x9a, 0x7b, 0x11, 0x4c, 0xb0, 0x1d, 0x78,
-	0x95, 0x21, 0xbc, 0x4b, 0xc0, 0x4b, 0xcc, 0xf6, 0x50, 0x18, 0xde, 0x65, 0xd0, 0x31, 0xeb, 0x89,
-	0xe6, 0x31, 0x34, 0x9b, 0x07, 0x18, 0x28, 0x8a, 0x73, 0x05, 0x6c, 0x93, 0x55, 0xab, 0xc1, 0x6a,
-	0x66, 0x96, 0x75, 0x0d, 0xd4, 0x43, 0x46, 0x91, 0x47, 0xdc, 0xa8, 0xf7, 0xc4, 0x10, 0x41, 0xca,
-	0x48, 0xd7, 0x21, 0x0d, 0x0b, 0xf7, 0xad, 0x49, 0x9f, 0xc4, 0x0d, 0x8b, 0x4b, 0x37, 0x5e, 0x0e,
-	0x50, 0x6f, 0x80, 0xcd, 0x91, 0xda, 0x16, 0x46, 0xea, 0x4d, 0x43, 0xcb, 0xf6, 0xcc, 0x7a, 0xcb,
-	0xb9, 0x44, 0xce, 0x0d, 0x5f, 0x8e, 0xbb, 0x5e, 0x2e, 0xb7, 0xe9, 0x1a, 0x0c, 0x2a, 0xd5, 0x83,
-	0x96, 0xbb, 0xd1, 0xee, 0xea, 0x41, 0x4f, 0xf5, 0x82, 0xf9, 0xc5, 0x36, 0xf3, 0x84, 0xec, 0xa2,
-	0x4f, 0x9f, 0x8e, 0xd7, 0x62, 0x53, 0x9f, 0x81, 0x2c, 0x29, 0x70, 0x99, 0x20, 0xde, 0x06, 0xa8,
-	0x9a, 0xb6, 0xc8, 0xfc, 0x86, 0x5e, 0xdc, 0xb3, 0x60, 0x5b, 0xf4, 0x95, 0x1d, 0x58, 0x4a, 0x8f,
-	0x3b, 0x10, 0x7a, 0x9b, 0x27, 0x2d, 0x5e, 0xc1, 0x3d, 0x3d, 0x19, 0x7a, 0x77, 0x21, 0x5d, 0x2c,
-	0x66, 0x96, 0x79, 0xde, 0x0e, 0xf7, 0x4c, 0xba, 0xdc, 0x03, 0x7d, 0xb7, 0x42, 0xc1, 0xfd, 0x8a,
-	0x5b, 0x6a, 0x1f, 0x6f, 0x31, 0x1f, 0x95, 0x78, 0x0e, 0x9c, 0xa2, 0xc9, 0xb8, 0x5f, 0x18, 0x71,
-	0xcf, 0xa3, 0x49, 0xb1, 0x40, 0xbf, 0x10, 0xc4, 0x86, 0x7e, 0x25, 0x54, 0x8f, 0xa3, 0xdd, 0x82,
-	0x56, 0xf6, 0x55, 0x30, 0x67, 0x6f, 0x9b, 0x71, 0x7b, 0x65, 0x07, 0x85, 0xff, 0x3f, 0xd0, 0xd7,
-	0x62, 0x17, 0x79, 0xb9, 0xce, 0x20, 0x93, 0x80, 0xf9, 0x6a, 0x28, 0xca, 0x16, 0x73, 0xbf, 0xdd,
-	0x3c, 0xd6, 0x45, 0xe5, 0x35, 0xce, 0x15, 0x72, 0xe1, 0xb4, 0x68, 0x56, 0xa6, 0xf8, 0xff, 0xaa,
-	0xf0, 0xf6, 0xe4, 0x29, 0xf2, 0x6b, 0x55, 0x85, 0xb6, 0xa6, 0x79, 0x1d, 0xa4, 0x7f, 0xb6, 0xce,
-	0xa4, 0x9b, 0xe7, 0x51, 0xc4, 0xe2, 0x34, 0x7e, 0x3d, 0x24, 0x5f, 0x2e, 0x64, 0x8f, 0x54, 0x24,
-	0x00, 0xf4, 0x0d, 0x30, 0x18, 0x49, 0xe0, 0x2a, 0xa0, 0xbc, 0xd1, 0xb9, 0x48, 0xce, 0xda, 0x36,
-	0xad, 0x33, 0xcf, 0xe3, 0x7e, 0x2c, 0xe4, 0x4d, 0xb0, 0x40, 0xbd, 0x8b, 0x41, 0xb6, 0xee, 0xab,
-	0xa6, 0x57, 0x31, 0xd7, 0x61, 0xf0, 0xc3, 0x20, 0x34, 0xcc, 0xfe, 0xc1, 0x1b, 0x30, 0xdd, 0x66,
-	0x87, 0xf7, 0x14, 0xc8, 0x42, 0x49, 0x03, 0x8a, 0x99, 0x3f, 0x87, 0xd5, 0xb5, 0xc3, 0x75, 0xde,
-	0xe2, 0x33, 0x1b, 0xba, 0x69, 0x88, 0x79, 0x0e, 0x8b, 0x54, 0x9b, 0xcb, 0x16, 0x84, 0x68, 0x8f,
-	0x88, 0x4d, 0xd0, 0xb6, 0xa1, 0x81, 0x69, 0xdc, 0x32, 0x4e, 0xba, 0x03, 0x76, 0x53, 0xd6, 0x2c,
-	0x61, 0x9b, 0xe8, 0xe6, 0x58, 0x37, 0xa2, 0xbb, 0x46, 0xe6, 0x7a, 0xc8, 0x99, 0xef, 0x6e, 0x89,
-	0x30, 0x92, 0xf4, 0x05, 0x30, 0x51, 0x8f, 0xb8, 0xd1, 0xee, 0xd2, 0xfb, 0x18, 0xf5, 0x1d, 0x1e,
-	0x6f, 0xc8, 0x98, 0x2b, 0x34, 0x1f, 0xcf, 0x6e, 0x36, 0xde, 0x0a, 0xdd, 0x07, 0xc3, 0x03, 0x2d,
-	0x76, 0x07, 0xf6, 0xc4, 0xf4, 0x01, 0xe4, 0x35, 0xd0, 0xa1, 0x7f, 0x88, 0x58, 0x83, 0xbb, 0x5e,
-	0xc7, 0x73, 0xd7, 0x3d, 0x8f, 0x16, 0x8c, 0x14, 0xab, 0x6e, 0xbe, 0x68, 0x74, 0xd8, 0x0b, 0x6a,
-	0xc2, 0x07, 0x65, 0x69, 0xd1, 0x08, 0xb0, 0x77, 0x18, 0xa8, 0xb9, 0xb4, 0x64, 0x38, 0x50, 0x7c,
-	0xed, 0xea, 0x4c, 0x0f, 0x20, 0xcc, 0x93, 0x0a, 0xe2, 0x96, 0x4d, 0x0f, 0x31, 0xa5, 0x3a, 0xdc,
-	0x04, 0x9a, 0x2e, 0xec, 0x98, 0xa5, 0xf4, 0x08, 0x42, 0x74, 0x60, 0xb5, 0xee, 0x7a, 0xa5, 0x42,
-	0x1f, 0x1a, 0x5d, 0xc1, 0x55, 0xbb, 0x15, 0x37, 0xeb, 0x4b, 0xfa, 0xe6, 0xa4, 0xbd, 0x72, 0xcc,
-	0xa7, 0x2f, 0x61, 0x00, 0x69, 0x98, 0x9e, 0xc2, 0xd4, 0x80, 0xb2, 0x2f, 0xe9, 0x5b, 0x8c, 0x91,
-	0xac, 0xea, 0xbc, 0xd7, 0xf1, 0xe8, 0x5b, 0xcd, 0xb8, 0xc1, 0x6c, 0x87, 0xcd, 0x9e, 0xbe, 0xcd,
-	0x8c, 0x53, 0xbd, 0x44, 0x19, 0x4b, 0xb3, 0x2f, 0xe9, 0xdb, 0x8d, 0xc6, 0x6a, 0xa7, 0x5b, 0xaf,
-	0x74, 0x98, 0x5f, 0x56, 0x89, 0xf0, 0x0e, 0x23, 0x72, 0x4b, 0xa0, 0x8a, 0x52, 0x54, 0x59, 0x19,
-	0xb2, 0x49, 0x8a, 0x0e, 0x93, 0x9c, 0xba, 0xc6, 0x44, 0x56, 0x08, 0xe0, 0xb2, 0xde, 0xb9, 0xf6,
-	0x81, 0x31, 0x42, 0x55, 0xd7, 0x94, 0x45, 0x4f, 0x62, 0xbf, 0xb1, 0x44, 0xe8, 0x61, 0xef, 0xd2,
-	0xdc, 0x38, 0x9c, 0x27, 0x19, 0x9b, 0xfa, 0x16, 0xee, 0x77, 0x1f, 0xf8, 0x65, 0x9e, 0x0d, 0x22,
-	0x49, 0x53, 0x50, 0x67, 0x6d, 0x2e, 0x56, 0x77, 0xac, 0xec, 0xa6, 0x37, 0xe9, 0x1b, 0xae, 0xee,
-	0x97, 0x54, 0x13, 0x42, 0x47, 0x60, 0x6d, 0x36, 0x17, 0xaa, 0x8d, 0x1a, 0x38, 0x0a, 0x5e, 0xb4,
-	0x59, 0x90, 0xc5, 0xe0, 0xe4, 0xfc, 0x51, 0x81, 0x8e, 0x41, 0x45, 0xed, 0x67, 0x16, 0xb8, 0x04,
-	0xde, 0x78, 0xff, 0x40, 0x65, 0x64, 0x25, 0x75, 0x02, 0xca, 0x50, 0x42, 0x9d, 0x7a, 0xd0, 0x52,
-	0x29, 0x5e, 0xcc, 0x6f, 0xe0, 0x92, 0x26, 0xa1, 0x00, 0xda, 0x10, 0xac, 0x5a, 0x80, 0x43, 0xf6,
-	0x54, 0x3f, 0x1b, 0x6b, 0x45, 0xcc, 0x26, 0xe0, 0x92, 0xc4, 0x04, 0x2d, 0x5e, 0x16, 0xcc, 0x03,
-	0x00, 0xf4, 0xa1, 0xd3, 0xfd, 0xda, 0x15, 0xb8, 0x8c, 0x07, 0xcf, 0x38, 0x57, 0xc9, 0xc5, 0x61,
-	0x6b, 0xd6, 0xf1, 0x05, 0x3e, 0x9f, 0xed, 0xb7, 0xb8, 0xc1, 0xe8, 0x89, 0xe8, 0x5c, 0xbf, 0x06,
-	0xda, 0x36, 0x86, 0x3f, 0xdf, 0x6f, 0xf3, 0x02, 0xeb, 0xae, 0x37, 0x75, 0x5f, 0xd5, 0xe7, 0x2c,
-	0xe8, 0x64, 0x4a, 0x32, 0xe4, 0x7e, 0x4d, 0xd6, 0xe9, 0x42, 0xff, 0x40, 0xe0, 0x2a, 0xb3, 0x3a,
-	0x03, 0x5e, 0xbe, 0x2f, 0x3c, 0x4f, 0x87, 0x2a, 0x5d, 0x74, 0xae, 0x93, 0x2b, 0xfd, 0x1a, 0xa9,
-	0xc6, 0x1a, 0xd2, 0xdd, 0x28, 0xb6, 0xb4, 0xf6, 0xdd, 0x35, 0x42, 0xb6, 0xbd, 0xe0, 0x98, 0x79,
-	0x18, 0x8e, 0xf3, 0x64, 0x5a, 0x5d, 0x99, 0x5b, 0xd2, 0x4b, 0xe4, 0x9c, 0x26, 0x6c, 0xfa, 0x92,
-	0x87, 0x58, 0x83, 0x8b, 0x98, 0xc3, 0x07, 0xa2, 0x09, 0x8d, 0xef, 0x79, 0x92, 0x31, 0x80, 0xb8,
-	0xc9, 0x83, 0x56, 0x03, 0x0c, 0x77, 0xc1, 0xb9, 0x46, 0x2e, 0x69, 0x2e, 0x96, 0x84, 0x07, 0xa1,
-	0xa8, 0x09, 0x9f, 0x79, 0xee, 0xba, 0x94, 0xa1, 0xee, 0x20, 0xcf, 0x81, 0xaa, 0xc3, 0x41, 0x95,
-	0x0a, 0xe0, 0x14, 0xec, 0x22, 0xe4, 0xaa, 0x86, 0xa9, 0x52, 0x8f, 0x21, 0x44, 0xaf, 0xe3, 0x0e,
-	0x6b, 0xd1, 0xf3, 0xc2, 0x17, 0xf4, 0x49, 0xa8, 0xc4, 0x09, 0x6a, 0xa7, 0x45, 0x6f, 0x58, 0xca,
-	0xda, 0x1d, 0x94, 0x8b, 0x91, 0x70, 0x0b, 0x5b, 0x35, 0xc5, 0xd5, 0x45, 0x22, 0x2f, 0x7c, 0xb5,
-	0xcc, 0xdb, 0x10, 0x81, 0x49, 0xde, 0xae, 0x5f, 0x0e, 0x9a, 0xda, 0x0a, 0xcf, 0x5a, 0x82, 0x35,
-	0x7b, 0x4f, 0x34, 0x85, 0x54, 0xdc, 0x3b, 0x96, 0x11, 0x0f, 0xc0, 0x21, 0xd2, 0x85, 0xdb, 0x0d,
-	0x77, 0x83, 0x43, 0x2d, 0xde, 0xcd, 0xd1, 0xe7, 0x60, 0x3b, 0x30, 0x7a, 0xe1, 0x8d, 0xb5, 0x9b,
-	0x67, 0x27, 0xb4, 0x60, 0xad, 0x18, 0x5b, 0xf7, 0x43, 0x7f, 0x2f, 0x28, 0x37, 0xe8, 0xa1, 0x73,
-	0x99, 0x9c, 0xb7, 0xe9, 0x79, 0x76, 0x92, 0xec, 0x70, 0x8f, 0x20, 0x1e, 0x6d, 0x44, 0xcc, 0x85,
-	0x1e, 0x94, 0xd3, 0x87, 0x96, 0xbe, 0x9a, 0x0f, 0x1d, 0xa3, 0x42, 0xd1, 0x37, 0x5b, 0xa3, 0x13,
-	0xcd, 0xb9, 0x2a, 0x5e, 0xf4, 0x25, 0xcb, 0x50, 0xd8, 0x12, 0xa8, 0xdd, 0x19, 0xd7, 0xfa, 0x16,
-	0x4b, 0x37, 0x8b, 0x87, 0x7e, 0x55, 0x71, 0xfb, 0x56, 0x48, 0xb8, 0xa4, 0xad, 0x8a, 0x9c, 0x55,
-	0xba, 0xe8, 0x65, 0xb7, 0xf4, 0x28, 0x08, 0x2b, 0xf4, 0x6d, 0x56, 0xdc, 0x0c, 0x62, 0x8a, 0xc1,
-	0xf1, 0x31, 0x0f, 0xe9, 0xdb, 0xbf, 0x27, 0x68, 0x3d, 0x2c, 0xd7, 0x79, 0x48, 0xdf, 0x61, 0x05,
-	0xd7, 0x20, 0x08, 0x8f, 0x2f, 0x04, 0xf3, 0xa9, 0x0b, 0x35, 0xea, 0x54, 0xd8, 0x43, 0xe6, 0x57,
-	0xe8, 0x3b, 0xbf, 0x27, 0x04, 0xeb, 0x36, 0xc3, 0x3e, 0x26, 0x5e, 0x3c, 0x24, 0x09, 0xdc, 0x22,
-	0x82, 0x61, 0x22, 0x5a, 0xb3, 0x6d, 0xde, 0xe2, 0xbc, 0xa2, 0xf7, 0x29, 0x75, 0xd7, 0x55, 0xb7,
-	0x87, 0xb6, 0x43, 0xb5, 0x21, 0xe9, 0xe7, 0x46, 0x54, 0x58, 0xd1, 0xb7, 0xeb, 0x0b, 0xa9, 0xb8,
-	0x85, 0x20, 0x94, 0x21, 0x13, 0x92, 0xbe, 0x0b, 0x8a, 0x84, 0x49, 0x20, 0xee, 0xb3, 0x26, 0x8f,
-	0x1d, 0xdd, 0xb0, 0x6c, 0xa4, 0x3a, 0x41, 0xb3, 0x07, 0xf7, 0xfa, 0x28, 0xea, 0x59, 0x1e, 0xe9,
-	0x03, 0xa9, 0x46, 0x3d, 0x92, 0xb4, 0x79, 0xba, 0xa0, 0x5e, 0x33, 0xef, 0x3b, 0x4f, 0x92, 0xab,
-	0xc3, 0x41, 0x3a, 0x00, 0x55, 0xf7, 0xd4, 0x72, 0x6e, 0x90, 0x6b, 0xa7, 0xe0, 0x98, 0xdf, 0x80,
-	0xac, 0x53, 0xb1, 0xf2, 0xb2, 0x95, 0x39, 0x0a, 0x98, 0x67, 0xb2, 0x5c, 0x77, 0x0f, 0x02, 0x68,
-	0x58, 0xaa, 0x92, 0x86, 0x96, 0xea, 0x79, 0x26, 0xbc, 0xdd, 0x8a, 0xc6, 0x01, 0x42, 0x87, 0xb3,
-	0x74, 0x6e, 0x91, 0xeb, 0xc3, 0x30, 0xf8, 0x04, 0x44, 0xf7, 0x3d, 0x0a, 0xda, 0xb6, 0x56, 0xa9,
-	0xa1, 0xd8, 0x73, 0x3e, 0x78, 0xe4, 0xf3, 0xd0, 0x80, 0x3a, 0xa7, 0x81, 0x64, 0xbd, 0x07, 0x7a,
-	0x64, 0x45, 0x0b, 0x96, 0x9a, 0xc3, 0x96, 0xbb, 0x1d, 0xb2, 0x0a, 0x04, 0x4d, 0x14, 0xb4, 0xc3,
-	0x32, 0xa7, 0x5d, 0xcb, 0xab, 0x76, 0x7f, 0xab, 0x5d, 0xf7, 0x7d, 0xd6, 0xda, 0x8b, 0xbc, 0x1c,
-	0xb6, 0xd1, 0xef, 0x61, 0x10, 0x03, 0xbe, 0xdf, 0x39, 0x1b, 0xbb, 0xbd, 0xd4, 0x8d, 0x24, 0x6f,
-	0xe6, 0xa3, 0x9a, 0x7a, 0x20, 0xf2, 0x43, 0x29, 0x27, 0x43, 0x16, 0x63, 0x1d, 0x4f, 0xdc, 0x7d,
-	0x08, 0x8a, 0x3d, 0xee, 0xd3, 0xf7, 0x40, 0xf7, 0x10, 0x97, 0x86, 0x00, 0x36, 0x01, 0xb8, 0x8f,
-	0x81, 0xce, 0x1f, 0x2b, 0x16, 0xfd, 0x91, 0x94, 0x73, 0x39, 0x9e, 0x57, 0x03, 0xb6, 0x98, 0x1f,
-	0xf5, 0x10, 0xef, 0x4d, 0x39, 0x57, 0x7a, 0xf5, 0x47, 0x21, 0x36, 0x3c, 0x56, 0x6e, 0xf4, 0x20,
-	0xef, 0x4b, 0xd9, 0xba, 0x89, 0x9a, 0x7f, 0xd8, 0x8a, 0x83, 0xf9, 0xfd, 0x29, 0xe7, 0x16, 0x79,
-	0x62, 0xc8, 0xba, 0x4d, 0x3c, 0xf6, 0xc4, 0x7c, 0xc8, 0x56, 0x16, 0x5b, 0x3b, 0xbb, 0xf9, 0x8f,
-	0x24, 0xfd, 0xb0, 0x3d, 0x0f, 0x02, 0x36, 0x4f, 0x5a, 0x7a, 0xf0, 0x47, 0x52, 0xce, 0xf9, 0x5e,
-	0x4a, 0x85, 0x9c, 0x49, 0xdd, 0x11, 0xef, 0x89, 0x48, 0xd2, 0x8f, 0xa6, 0x9c, 0xab, 0x3d, 0x07,
-	0x05, 0xcd, 0x16, 0x97, 0xaa, 0x3d, 0x84, 0xad, 0x97, 0x35, 0xb0, 0x1d, 0xff, 0xb8, 0xbd, 0xd0,
-	0xbe, 0x5b, 0x68, 0x5d, 0x0a, 0x7f, 0x35, 0xe5, 0x5c, 0x8c, 0x9d, 0x68, 0x8b, 0xd9, 0xc2, 0xe7,
-	0xfb, 0xf4, 0xd7, 0xec, 0x69, 0x54, 0x91, 0x55, 0x2d, 0xa5, 0x79, 0xa0, 0x13, 0x49, 0xfa, 0x9b,
-	0x29, 0xe7, 0x42, 0x5c, 0x19, 0x2c, 0x83, 0xe8, 0x48, 0xfa, 0x2d, 0xdb, 0x97, 0xca, 0x08, 0x3a,
-	0x00, 0x3e, 0x99, 0x72, 0x56, 0xc9, 0x92, 0xcd, 0x31, 0xcf, 0x76, 0xe8, 0xef, 0xd9, 0x96, 0x53,
-	0x77, 0x56, 0x2a, 0x44, 0x8c, 0xe2, 0x7f, 0x60, 0xbb, 0x59, 0x01, 0xd6, 0x5b, 0x2d, 0xaf, 0x8b,
-	0xd6, 0xc1, 0xdd, 0xe7, 0x53, 0xb6, 0x5a, 0x09, 0x04, 0xa6, 0xe6, 0xa7, 0x53, 0xce, 0xb9, 0x78,
-	0x17, 0x50, 0x6c, 0x08, 0x34, 0xc5, 0xfc, 0x43, 0xdb, 0x72, 0x8a, 0x59, 0xe0, 0x61, 0x14, 0xe0,
-	0xa6, 0x0e, 0x9d, 0x32, 0xa7, 0x9f, 0x19, 0x14, 0x7f, 0x24, 0xca, 0xbc, 0x10, 0xaa, 0x36, 0xfb,
-	0xb3, 0xb6, 0xf7, 0xac, 0xfb, 0x67, 0x25, 0xff, 0x73, 0x83, 0xda, 0xe3, 0x0e, 0xa3, 0x14, 0x04,
-	0xed, 0xff, 0x68, 0x10, 0xb1, 0xc7, 0x59, 0x47, 0xb7, 0x8e, 0x6e, 0x36, 0x47, 0x3f, 0x3f, 0x68,
-	0xa2, 0xbd, 0xa0, 0x86, 0x8b, 0x50, 0xd5, 0xec, 0x8f, 0x53, 0xce, 0x8d, 0xb8, 0x9c, 0x69, 0x03,
-	0x80, 0xee, 0xc2, 0x3d, 0x08, 0xd4, 0xb5, 0x5e, 0xca, 0x17, 0x6c, 0x49, 0x05, 0xe3, 0x62, 0x7c,
-	0xc2, 0xa6, 0x1c, 0xf5, 0x45, 0x7b, 0xad, 0x00, 0x30, 0x37, 0x14, 0x2a, 0x52, 0xbf, 0x34, 0xb8,
-	0xd6, 0x0d, 0xa5, 0x25, 0x84, 0xc7, 0x9f, 0x0c, 0x72, 0xb1, 0xfc, 0xab, 0x87, 0xe1, 0x5f, 0x49,
-	0x39, 0xd7, 0xe2, 0x0a, 0xa8, 0x1d, 0xcd, 0x59, 0x58, 0xae, 0x43, 0x20, 0x43, 0xb8, 0x42, 0xd2,
-	0xff, 0xe9, 0xa0, 0x3b, 0xb0, 0x20, 0x58, 0x90, 0x3f, 0x1b, 0xb4, 0xd7, 0x7e, 0x20, 0x45, 0x99,
-	0x6b, 0xaf, 0xfa, 0xf4, 0xab, 0x83, 0x42, 0x4c, 0x59, 0x32, 0x90, 0xaf, 0x0d, 0x9a, 0xf4, 0x81,
-	0xbf, 0xa1, 0x9f, 0x4e, 0x57, 0x6a, 0x9c, 0xfe, 0x45, 0xca, 0x79, 0x22, 0xae, 0x9d, 0x43, 0x4d,
-	0xba, 0x79, 0xd2, 0xa2, 0x7f, 0x99, 0xc8, 0x3b, 0x3b, 0x37, 0xa1, 0x60, 0x63, 0x81, 0xfb, 0xab,
-	0xc1, 0xe8, 0x89, 0x77, 0xbe, 0x48, 0xd2, 0xaf, 0xdb, 0x12, 0xf4, 0xd3, 0x04, 0xb0, 0x7b, 0x8e,
-	0x97, 0xf5, 0x33, 0x33, 0xfa, 0xd7, 0x76, 0xe6, 0x1e, 0x89, 0x56, 0x3f, 0xff, 0x1b, 0x83, 0xaa,
-	0xea, 0xc7, 0x85, 0xb6, 0xeb, 0xbf, 0x69, 0xa7, 0x60, 0x42, 0x02, 0xfd, 0x56, 0xca, 0xb9, 0x19,
-	0xef, 0x72, 0x43, 0x57, 0x61, 0x8a, 0xc4, 0xb7, 0xfb, 0x85, 0xac, 0x47, 0x11, 0x64, 0x61, 0x36,
-	0x47, 0xff, 0x26, 0xe5, 0x3c, 0x43, 0x6e, 0x9a, 0x14, 0xef, 0xdd, 0xc4, 0xa2, 0x0e, 0x59, 0xe6,
-	0x79, 0x5b, 0x41, 0xb8, 0xc3, 0xbd, 0x56, 0x36, 0x87, 0xdd, 0xd7, 0x77, 0x12, 0x05, 0xb3, 0x07,
-	0xc7, 0x07, 0x58, 0x90, 0x56, 0x7f, 0x67, 0xd7, 0x23, 0xfb, 0xa6, 0x98, 0xf7, 0x30, 0x7f, 0x6f,
-	0xaf, 0x7c, 0xe8, 0x53, 0x1b, 0x40, 0xfd, 0xc3, 0x29, 0x92, 0x50, 0x8c, 0x2e, 0x5d, 0xff, 0x68,
-	0x07, 0x95, 0xf5, 0x8c, 0x2a, 0xeb, 0x41, 0x53, 0x09, 0x52, 0xfe, 0xd9, 0xce, 0xb1, 0x01, 0x04,
-	0x9e, 0x41, 0xb0, 0x48, 0xf2, 0x90, 0xfe, 0xcb, 0xe3, 0x81, 0xbc, 0x09, 0x5d, 0xe1, 0xbf, 0xda,
-	0x7e, 0x4d, 0x74, 0xaf, 0xaa, 0x0d, 0xfb, 0x37, 0xdb, 0xd8, 0xc5, 0xfc, 0x06, 0x44, 0x9e, 0x3e,
-	0xcd, 0xf9, 0x77, 0xbb, 0xa4, 0xbd, 0xd8, 0xe6, 0x91, 0x7e, 0xda, 0x86, 0x6b, 0xf9, 0x0f, 0xdb,
-	0x2a, 0xe0, 0xa4, 0xbb, 0xaa, 0xd8, 0xc6, 0x0e, 0x07, 0x25, 0xe8, 0x7f, 0xda, 0x56, 0xb1, 0x4f,
-	0x5b, 0x94, 0x0e, 0xe8, 0xa4, 0xff, 0x4a, 0x39, 0x4f, 0xc6, 0x3d, 0xa9, 0x8d, 0x51, 0x33, 0xed,
-	0xc2, 0x6d, 0x56, 0x87, 0x79, 0xf4, 0xbf, 0x4f, 0xc3, 0xc1, 0x0d, 0xbb, 0xc2, 0xe2, 0x56, 0xf6,
-	0x3f, 0xa7, 0xe1, 0x62, 0x87, 0xa9, 0x7a, 0xf6, 0x5d, 0xdb, 0x84, 0x36, 0x0e, 0x1f, 0xa5, 0x2b,
-	0x81, 0xa8, 0xe0, 0xff, 0xda, 0x35, 0xa5, 0xd8, 0x8e, 0xea, 0xf6, 0xf3, 0x67, 0x63, 0x8f, 0x1f,
-	0x48, 0xf7, 0x83, 0x54, 0x53, 0x95, 0x00, 0xfd, 0x60, 0xda, 0x32, 0x87, 0xca, 0x74, 0x29, 0x78,
-	0xe4, 0xde, 0x7d, 0x3e, 0xc7, 0xba, 0x11, 0x3e, 0x8b, 0xa2, 0xef, 0x4e, 0x3b, 0x4f, 0x93, 0x1b,
-	0x8f, 0x55, 0x7f, 0xa3, 0x8b, 0x99, 0xfd, 0xc3, 0xe9, 0x81, 0xb4, 0xdc, 0xf4, 0x84, 0xd4, 0x8f,
-	0xf9, 0xb1, 0xa3, 0xce, 0xe6, 0xe8, 0x7b, 0x6c, 0xd4, 0xa0, 0x1b, 0xdc, 0x6c, 0x9d, 0x97, 0x1b,
-	0xf4, 0xbd, 0x69, 0x2b, 0x54, 0x12, 0xcf, 0x49, 0x15, 0xff, 0x7d, 0x69, 0xdb, 0xb0, 0xb1, 0x9f,
-	0xb1, 0xc2, 0xcb, 0xc0, 0xe7, 0x50, 0x59, 0x58, 0xd3, 0xa3, 0xef, 0x4f, 0x5b, 0x15, 0xba, 0xc8,
-	0x5b, 0x1e, 0x2b, 0xf3, 0xde, 0x49, 0xd1, 0x8f, 0xda, 0xb3, 0x58, 0x5c, 0xb3, 0x39, 0xfc, 0x98,
-	0xad, 0x2b, 0x1a, 0x32, 0xcf, 0x5a, 0xc6, 0x58, 0x5d, 0xb3, 0x5f, 0x7f, 0x20, 0x6d, 0x55, 0x13,
-	0x73, 0x64, 0xe8, 0x66, 0xc3, 0x6e, 0x24, 0xe1, 0xae, 0x32, 0x80, 0xc6, 0x98, 0x87, 0x70, 0x4b,
-	0xff, 0xe3, 0xb6, 0x63, 0x86, 0x69, 0x9d, 0x17, 0x3e, 0xfd, 0xa9, 0xc7, 0x82, 0x3a, 0x2d, 0xfa,
-	0xc1, 0xb4, 0xd5, 0x5d, 0x65, 0xeb, 0x9c, 0x49, 0x77, 0x83, 0xe9, 0x1b, 0xe2, 0x9f, 0x1e, 0xaa,
-	0x8f, 0x51, 0x02, 0x14, 0xd2, 0xba, 0xd1, 0x0f, 0xd9, 0x56, 0xb4, 0x8f, 0x2a, 0xf1, 0xc6, 0xa1,
-	0x1c, 0xdf, 0x85, 0x7c, 0x24, 0x3d, 0xb0, 0x93, 0x59, 0xb8, 0x22, 0x3f, 0x0e, 0x42, 0x9f, 0xfe,
-	0xac, 0x1d, 0x50, 0x09, 0x90, 0x02, 0x40, 0xcd, 0xfc, 0xb9, 0xf4, 0xc0, 0x56, 0x76, 0x1f, 0xca,
-	0x40, 0x6f, 0x67, 0xff, 0x79, 0xdb, 0x25, 0xba, 0x35, 0xc4, 0xfe, 0x41, 0x87, 0xed, 0x2f, 0xd8,
-	0x7c, 0x9d, 0x1d, 0xfa, 0xe1, 0x2b, 0x66, 0xdc, 0x2f, 0xa6, 0xad, 0x32, 0xab, 0x0c, 0x83, 0xf7,
-	0xba, 0xa6, 0xc7, 0xa1, 0x1f, 0x4d, 0x5b, 0xdb, 0x93, 0x0d, 0x68, 0x1f, 0x7b, 0xa2, 0x4c, 0x3f,
-	0x96, 0xb6, 0x5a, 0x3a, 0x7d, 0xb4, 0x8e, 0x4f, 0x44, 0xe8, 0x2f, 0x9d, 0x6a, 0x04, 0x0c, 0x6d,
-	0x75, 0xaf, 0xf8, 0xf1, 0xf4, 0xc0, 0x4e, 0xdc, 0x3b, 0x70, 0x51, 0xc7, 0xba, 0xbf, 0x32, 0x24,
-	0x4d, 0x4e, 0xca, 0xea, 0x96, 0xb4, 0x10, 0xf2, 0x48, 0x54, 0xb8, 0x2f, 0xe9, 0xaf, 0xdb, 0xb3,
-	0x65, 0x59, 0x54, 0xc7, 0x47, 0x73, 0x3d, 0x24, 0x66, 0xdc, 0x27, 0xd2, 0xce, 0x75, 0x72, 0xf9,
-	0x74, 0x90, 0xb6, 0xd9, 0x6f, 0xa4, 0x13, 0x75, 0x57, 0x3d, 0x9b, 0xdd, 0xc2, 0xf6, 0x00, 0x77,
-	0xec, 0xdf, 0xb6, 0xbd, 0x92, 0x6c, 0x92, 0x22, 0x89, 0x27, 0xf5, 0xbf, 0x63, 0x5b, 0x15, 0x13,
-	0xa1, 0x80, 0x07, 0x4c, 0x5e, 0x59, 0x9f, 0x55, 0xff, 0xae, 0xed, 0x7c, 0xfb, 0x18, 0xc8, 0xc2,
-	0x7c, 0xd2, 0xce, 0x45, 0x7d, 0x6c, 0x7c, 0x82, 0x9d, 0x58, 0x87, 0x87, 0xf4, 0xf7, 0xed, 0x58,
-	0xc4, 0x53, 0xec, 0x6d, 0x51, 0x95, 0x1b, 0xac, 0xe6, 0xee, 0xb1, 0x63, 0xee, 0xb9, 0xcf, 0xab,
-	0x1e, 0x9d, 0x7e, 0xca, 0x56, 0xe5, 0xa5, 0x36, 0xf3, 0x77, 0x98, 0x5f, 0x3b, 0x80, 0xc8, 0xce,
-	0xb3, 0x13, 0xd8, 0xb7, 0x3e, 0x9d, 0xb6, 0x6a, 0x69, 0x36, 0x0c, 0xa2, 0x28, 0x81, 0x52, 0x36,
-	0x01, 0xe0, 0x67, 0xec, 0x3c, 0x19, 0x04, 0x1e, 0x09, 0xfe, 0x48, 0x8b, 0xfc, 0xac, 0xad, 0xdb,
-	0x20, 0xf2, 0x41, 0x8b, 0xfb, 0x98, 0x79, 0x9f, 0xb3, 0xeb, 0xe5, 0x90, 0xa9, 0x99, 0xdf, 0x80,
-	0x20, 0xd5, 0x52, 0x3f, 0x9f, 0xf0, 0x1e, 0xa0, 0xf3, 0xec, 0xa4, 0x17, 0x4b, 0x80, 0x3e, 0x62,
-	0x1e, 0xfd, 0x82, 0x1d, 0x52, 0x08, 0x3b, 0x08, 0x5a, 0x58, 0xf5, 0xe3, 0x79, 0xbf, 0x98, 0x76,
-	0xee, 0x92, 0xa7, 0x4f, 0x95, 0x84, 0xff, 0x76, 0xfd, 0x6a, 0x70, 0xd8, 0xaa, 0x30, 0xa9, 0x76,
-	0xba, 0x2f, 0x0d, 0xa4, 0x7e, 0x8e, 0x37, 0xa1, 0xdb, 0x08, 0x03, 0x56, 0xc9, 0xb2, 0x48, 0x1f,
-	0x46, 0xd3, 0x2f, 0xdb, 0x8e, 0xc5, 0xc7, 0x98, 0xea, 0x51, 0x62, 0x91, 0x57, 0x83, 0xb0, 0xa6,
-	0x9e, 0x7a, 0x7f, 0xc5, 0x8e, 0x1f, 0x0b, 0x53, 0xaa, 0x8b, 0xaa, 0x44, 0xc4, 0x9f, 0x27, 0x7c,
-	0x62, 0x35, 0x5c, 0xbb, 0x95, 0x00, 0x76, 0x81, 0xae, 0x09, 0xd5, 0xaf, 0xd9, 0xde, 0xd5, 0xaf,
-	0x31, 0xc4, 0x2f, 0x05, 0x78, 0x81, 0xa4, 0x5f, 0xb7, 0x8d, 0x56, 0xe0, 0xf2, 0x45, 0xd1, 0x6d,
-	0x73, 0xf3, 0x08, 0x0e, 0xe1, 0x38, 0xe1, 0x37, 0xfa, 0x42, 0x5a, 0xc1, 0xd4, 0xfb, 0x78, 0x2a,
-	0x9d, 0xbf, 0x99, 0x28, 0x14, 0x2c, 0xd4, 0xe7, 0xd3, 0x71, 0xf2, 0xd0, 0x6f, 0xa5, 0xd7, 0x7e,
-	0x72, 0x8c, 0x4c, 0xe6, 0x99, 0x50, 0x8f, 0x5f, 0x17, 0xc8, 0xac, 0xf9, 0x6f, 0x8e, 0x02, 0xe6,
-	0xc9, 0x74, 0x4c, 0xda, 0xce, 0xd3, 0x94, 0xb3, 0x48, 0xe6, 0x63, 0x82, 0xba, 0xa9, 0xa3, 0xe9,
-	0xc4, 0x40, 0xd8, 0x0a, 0xd5, 0x1b, 0x09, 0x31, 0x09, 0x77, 0x37, 0x3a, 0xea, 0x64, 0xc8, 0x52,
-	0x4c, 0xb3, 0x4c, 0x44, 0xc7, 0x9c, 0x33, 0xc4, 0xe9, 0x4d, 0x03, 0xae, 0x42, 0x29, 0xe3, 0xce,
-	0x0a, 0x59, 0x8c, 0xe9, 0xbd, 0x36, 0x8f, 0x4e, 0x24, 0x18, 0xbd, 0xad, 0x9d, 0x4e, 0x26, 0x18,
-	0xd6, 0xbb, 0x33, 0x53, 0x09, 0xc6, 0x91, 0x68, 0x99, 0x03, 0x09, 0xe2, 0x50, 0x32, 0x13, 0x33,
-	0x0a, 0xac, 0x4b, 0xa7, 0x13, 0xda, 0xe0, 0x59, 0x13, 0x9e, 0x85, 0xcd, 0x24, 0xe8, 0x50, 0x22,
-	0x30, 0x44, 0xe9, 0xec, 0x00, 0x5d, 0xad, 0x77, 0xce, 0x59, 0x22, 0x34, 0x41, 0xcf, 0xb3, 0x16,
-	0x9d, 0x77, 0xce, 0x93, 0x4c, 0xdf, 0x5a, 0x55, 0xf9, 0x2c, 0x84, 0x9c, 0x52, 0xe7, 0x12, 0x39,
-	0x37, 0x94, 0xab, 0x1b, 0xcc, 0x05, 0xe7, 0x22, 0x39, 0x3b, 0x14, 0xa0, 0x2a, 0x90, 0x73, 0xaa,
-	0x00, 0x08, 0x5a, 0x1e, 0xd2, 0x45, 0x67, 0x95, 0x2c, 0x5b, 0x5a, 0xf9, 0x5c, 0xbf, 0xab, 0xc3,
-	0xe9, 0x52, 0x82, 0xa5, 0xee, 0x37, 0x74, 0xd0, 0x2e, 0x0f, 0xac, 0x05, 0x6a, 0xe6, 0x99, 0x04,
-	0x75, 0x3b, 0xef, 0x96, 0xb8, 0x57, 0xa5, 0x2b, 0x03, 0xf6, 0xc0, 0x4a, 0x48, 0x33, 0x09, 0x17,
-	0xf4, 0x12, 0x92, 0xae, 0x26, 0xe2, 0x07, 0xf2, 0x85, 0x9e, 0x5d, 0xf3, 0xc9, 0x3c, 0x6c, 0x5a,
-	0xfa, 0xbc, 0xd7, 0xbc, 0xad, 0x96, 0xcd, 0x1f, 0x98, 0xa3, 0x01, 0x4a, 0x66, 0xe0, 0xaa, 0xb0,
-	0x59, 0x2c, 0x3d, 0xd8, 0x5f, 0xdf, 0x53, 0xaf, 0xc8, 0x00, 0xe5, 0xe1, 0x83, 0xe2, 0x5e, 0x4e,
-	0xbd, 0x22, 0x03, 0x97, 0xdb, 0x87, 0xbb, 0x7b, 0x39, 0x3a, 0x62, 0xf0, 0xa6, 0x5c, 0x51, 0xe2,
-	0x4c, 0x93, 0x09, 0xa0, 0x80, 0x57, 0xa6, 0xd7, 0xb8, 0x3a, 0x60, 0xd6, 0xf3, 0x95, 0xda, 0xea,
-	0x1d, 0xc8, 0x65, 0xb2, 0x00, 0x90, 0xd2, 0xe1, 0x86, 0x7b, 0xf0, 0x52, 0x61, 0xd3, 0xcc, 0x7d,
-	0x8e, 0xac, 0x24, 0xc8, 0x56, 0x68, 0xa6, 0x06, 0x98, 0x56, 0x14, 0xa6, 0xd7, 0x3e, 0x9c, 0x22,
-	0x54, 0x39, 0xa4, 0xc8, 0xcb, 0x41, 0x58, 0xc1, 0x59, 0x56, 0xc9, 0x72, 0x3f, 0xcd, 0xe4, 0xdf,
-	0x39, 0xb2, 0x32, 0x84, 0x85, 0x47, 0x0f, 0xa9, 0xa1, 0xcc, 0x23, 0x1e, 0x46, 0xed, 0x88, 0xa6,
-	0x87, 0x0a, 0xd5, 0xb9, 0x39, 0x8c, 0x85, 0x25, 0x73, 0x74, 0xed, 0xdb, 0x29, 0xb2, 0x68, 0xf3,
-	0x8c, 0x21, 0xe2, 0x37, 0x5a, 0x12, 0x64, 0xa3, 0xe5, 0x15, 0x72, 0x61, 0x18, 0x17, 0x1f, 0x27,
-	0xe1, 0x9c, 0x70, 0x63, 0x72, 0x71, 0xa8, 0x00, 0xfe, 0xe8, 0x58, 0x70, 0xc4, 0x40, 0x3d, 0x3b,
-	0x3f, 0x0c, 0x13, 0x3f, 0xb3, 0x1c, 0x71, 0x2e, 0x90, 0xd5, 0x61, 0x08, 0xf5, 0x4a, 0xda, 0xa8,
-	0x73, 0x9d, 0x5c, 0x19, 0xc6, 0x36, 0x4f, 0xcf, 0x54, 0xbe, 0x8e, 0xad, 0xfd, 0x44, 0x8a, 0xcc,
-	0x6d, 0x16, 0xb8, 0x54, 0x77, 0xba, 0xb8, 0xbe, 0x15, 0xb2, 0x98, 0xa4, 0x98, 0xa5, 0x9d, 0x25,
-	0x67, 0xfa, 0x18, 0xe6, 0x60, 0x19, 0xed, 0xdf, 0xc7, 0x5b, 0xaf, 0x74, 0xcc, 0x29, 0xe8, 0x2a,
-	0x59, 0xee, 0x97, 0x88, 0xb5, 0x99, 0x8e, 0xe0, 0xb1, 0x6f, 0x1f, 0xab, 0xdd, 0xa4, 0xa3, 0x6b,
-	0x1f, 0x1b, 0x21, 0xb3, 0x9b, 0xa6, 0xf7, 0x46, 0xb5, 0x00, 0x69, 0x13, 0x8c, 0x56, 0x4f, 0x90,
-	0xcb, 0x49, 0x7a, 0x8e, 0x09, 0xaf, 0xeb, 0x66, 0xdb, 0xcd, 0xf8, 0xa4, 0x9e, 0x42, 0xf5, 0x3f,
-	0x97, 0x44, 0xdd, 0x7d, 0x1e, 0xdf, 0x14, 0x50, 0xe7, 0xf0, 0x74, 0x14, 0x0f, 0x93, 0x87, 0x02,
-	0x0e, 0x58, 0xd4, 0xa0, 0x63, 0xf8, 0x32, 0x4a, 0x92, 0x7f, 0xe7, 0x4e, 0x2c, 0x7f, 0x1c, 0x6d,
-	0x93, 0x60, 0x6f, 0x9e, 0xa8, 0x83, 0x07, 0x3a, 0x31, 0x38, 0xf7, 0x7a, 0x59, 0x48, 0xd1, 0x91,
-	0x5d, 0x6c, 0xe0, 0xe8, 0x24, 0x1a, 0x2f, 0x01, 0x88, 0xbb, 0x3b, 0x3a, 0x05, 0xe1, 0x96, 0x64,
-	0xee, 0x89, 0x06, 0x3b, 0x16, 0x68, 0x77, 0x32, 0xa8, 0x36, 0xb4, 0x63, 0xf1, 0xae, 0x36, 0x3d,
-	0x68, 0xb5, 0xfb, 0xc2, 0xaf, 0xd1, 0x19, 0x74, 0x72, 0x82, 0xfe, 0xb0, 0xce, 0xb9, 0x47, 0x67,
-	0xf1, 0x8d, 0x83, 0x04, 0xa3, 0xd4, 0x6e, 0x42, 0x65, 0x9a, 0x1b, 0xc2, 0x11, 0x35, 0x7f, 0xd7,
-	0xa7, 0xf3, 0x6b, 0x1f, 0x4c, 0x91, 0xd9, 0x02, 0xeb, 0x3e, 0x08, 0x2b, 0x3c, 0x2c, 0x49, 0x26,
-	0x75, 0x0c, 0xd9, 0x14, 0xe3, 0x2d, 0xf4, 0x77, 0x82, 0xb1, 0xcd, 0xa1, 0x52, 0x80, 0xf0, 0x24,
-	0x1d, 0xae, 0x1a, 0xea, 0x08, 0x7d, 0x90, 0xb3, 0xc5, 0x84, 0xc7, 0x2b, 0x74, 0x04, 0xd7, 0x3f,
-	0x64, 0x9c, 0xae, 0xd5, 0xa3, 0x6b, 0x5f, 0x4e, 0x93, 0x99, 0x02, 0xeb, 0x6e, 0x07, 0x41, 0x25,
-	0x32, 0x1b, 0x3b, 0x0c, 0xb0, 0x23, 0x68, 0x99, 0x2c, 0xc4, 0xa4, 0x9c, 0x88, 0xd4, 0xd1, 0x48,
-	0xca, 0xa8, 0xda, 0xb7, 0xf5, 0xa5, 0x13, 0x74, 0x55, 0x7f, 0x36, 0x58, 0x8d, 0x8e, 0x24, 0xc4,
-	0xe0, 0xf3, 0x44, 0x20, 0x8f, 0x26, 0xe0, 0xbd, 0x9d, 0x72, 0x6c, 0x80, 0xae, 0x76, 0xca, 0x71,
-	0x7c, 0xb5, 0xcd, 0xa6, 0x43, 0x4d, 0x9e, 0x30, 0xf6, 0x89, 0x77, 0x2a, 0xb3, 0x51, 0x4d, 0x26,
-	0x38, 0xd6, 0x26, 0x47, 0xa7, 0x06, 0x24, 0xc1, 0x3e, 0x45, 0x06, 0xe6, 0x55, 0x3b, 0xd2, 0x74,
-	0x42, 0x7d, 0xa0, 0xe3, 0xe6, 0x33, 0x93, 0xb4, 0xd7, 0xc6, 0xce, 0x2b, 0xe9, 0xbd, 0xb5, 0x9f,
-	0x49, 0x91, 0x99, 0x7c, 0x37, 0x7a, 0xd9, 0xdb, 0x0b, 0x6a, 0x68, 0xd3, 0x39, 0x42, 0xf6, 0x6c,
-	0x83, 0x52, 0x32, 0xb3, 0x67, 0x6d, 0x9c, 0x34, 0x05, 0x52, 0x34, 0xa5, 0x5a, 0x45, 0x12, 0xee,
-	0x49, 0x7b, 0x71, 0xa3, 0x31, 0xd2, 0xbb, 0x2c, 0x6e, 0xe4, 0xe9, 0x28, 0x34, 0x5b, 0xea, 0x52,
-	0xd5, 0x90, 0x31, 0x68, 0xb6, 0x6c, 0x99, 0x50, 0x25, 0x96, 0x2c, 0x22, 0xf8, 0x1f, 0x6f, 0x09,
-	0x97, 0xd7, 0xde, 0x3d, 0x43, 0x46, 0xf1, 0x2b, 0x81, 0x49, 0x32, 0xaa, 0x15, 0x9a, 0x20, 0x23,
-	0x25, 0x19, 0xd2, 0x14, 0xfc, 0x59, 0xaf, 0x09, 0x9a, 0x86, 0x3f, 0xbb, 0xbe, 0xa4, 0x23, 0xf0,
-	0xe7, 0x48, 0x48, 0x3a, 0x0a, 0x7f, 0x72, 0xfc, 0x84, 0x8e, 0xc1, 0x9f, 0xbd, 0x76, 0x83, 0x8e,
-	0xc3, 0xf8, 0x3d, 0x51, 0x85, 0x0c, 0x1e, 0x27, 0xe9, 0x12, 0x24, 0x2a, 0x21, 0xe3, 0xea, 0x03,
-	0x2a, 0xf5, 0x42, 0xb6, 0xf5, 0xd1, 0x95, 0xda, 0x43, 0xf5, 0xf7, 0x51, 0x74, 0x5a, 0x75, 0x52,
-	0xbd, 0x2f, 0xa6, 0xe8, 0x0c, 0x88, 0xdd, 0x11, 0x92, 0xce, 0x3a, 0x53, 0x64, 0x2c, 0x17, 0x54,
-	0x6a, 0x9c, 0xce, 0xc1, 0x0c, 0xd9, 0x50, 0x48, 0x3a, 0x0f, 0xdc, 0x03, 0xee, 0xab, 0xd7, 0xae,
-	0xd7, 0x7b, 0x1f, 0x3e, 0xd1, 0x05, 0xdc, 0xea, 0x59, 0x24, 0xd7, 0xcb, 0x65, 0x68, 0x69, 0xa6,
-	0xc8, 0x58, 0x9e, 0x9d, 0xec, 0xb4, 0xe8, 0xa2, 0xfe, 0x5b, 0x6a, 0xd1, 0x25, 0xf5, 0xe6, 0xb6,
-	0xfa, 0x1a, 0x8a, 0x2e, 0x83, 0x88, 0xd2, 0x41, 0xd1, 0xd5, 0xdf, 0xa0, 0xd0, 0x4b, 0x28, 0x73,
-	0x7b, 0x37, 0x26, 0x5c, 0x06, 0xc2, 0xee, 0xfe, 0x41, 0x4c, 0xb8, 0x02, 0x84, 0xa3, 0xdd, 0x1e,
-	0xe1, 0x2a, 0x10, 0x72, 0x9b, 0x6f, 0x8e, 0x09, 0xd7, 0xd0, 0x21, 0x87, 0xf7, 0x63, 0xc2, 0x13,
-	0xe8, 0x64, 0x51, 0xe5, 0x31, 0xe5, 0x3a, 0x84, 0x41, 0xa9, 0x15, 0x5f, 0x3f, 0x09, 0x7d, 0xaf,
-	0x5a, 0x4a, 0x4c, 0xbb, 0xa1, 0xfa, 0x9e, 0xd8, 0x6a, 0x31, 0xe3, 0x26, 0xb8, 0x52, 0xdb, 0x2a,
-	0x26, 0xde, 0x52, 0x5d, 0x72, 0xcf, 0x8a, 0x31, 0x67, 0x0d, 0xd4, 0xd9, 0x11, 0x32, 0x26, 0x3c,
-	0x85, 0x6f, 0xbf, 0x81, 0x55, 0x63, 0xd2, 0xd3, 0xd8, 0xe6, 0x84, 0x16, 0xe8, 0x19, 0x7c, 0xc3,
-	0x96, 0xfb, 0x31, 0xe1, 0x36, 0xa8, 0x63, 0x59, 0x3b, 0x66, 0xe0, 0x6b, 0x04, 0xc6, 0xea, 0x1e,
-	0x57, 0xdf, 0x72, 0xc5, 0xdc, 0x3b, 0xaa, 0x49, 0x3b, 0xd9, 0xe9, 0x2d, 0xf6, 0xae, 0x26, 0x59,
-	0xeb, 0xbf, 0xa7, 0xde, 0x0a, 0x57, 0x5e, 0x89, 0xa9, 0xcf, 0x81, 0x64, 0x7d, 0x67, 0x02, 0xc1,
-	0xe9, 0xaa, 0xef, 0x85, 0xd4, 0x2b, 0x08, 0x74, 0x0b, 0xea, 0xd9, 0x10, 0xae, 0x19, 0xbd, 0x0d,
-	0x7b, 0x89, 0xe6, 0x3f, 0x64, 0x12, 0xdf, 0x76, 0x4b, 0x00, 0x76, 0xa0, 0x71, 0xd0, 0x80, 0xed,
-	0x30, 0x68, 0xfb, 0x95, 0x7e, 0xc4, 0xae, 0x35, 0xc5, 0x96, 0x08, 0x07, 0xa6, 0x78, 0xc1, 0xe2,
-	0x3f, 0x14, 0x83, 0xe3, 0xef, 0x5b, 0x2a, 0x94, 0x98, 0xf0, 0x65, 0x3f, 0x60, 0xcf, 0x12, 0x90,
-	0x63, 0x61, 0xa3, 0x9f, 0x9f, 0xb7, 0x54, 0xc4, 0x35, 0xae, 0xfb, 0x52, 0x24, 0xac, 0x50, 0x80,
-	0x0e, 0xe9, 0x14, 0x84, 0x91, 0xf2, 0xa2, 0x73, 0x8d, 0x5c, 0x4a, 0x58, 0x62, 0x08, 0xa8, 0x08,
-	0xcd, 0x41, 0xd2, 0x1a, 0x43, 0x50, 0x25, 0x6b, 0x3a, 0xb4, 0xc8, 0x10, 0xcc, 0x81, 0x85, 0x41,
-	0xab, 0x0c, 0xc1, 0x1c, 0x5a, 0x2a, 0x29, 0xcb, 0x0c, 0x01, 0x1d, 0x59, 0x82, 0xd0, 0x3a, 0x43,
-	0x30, 0x0f, 0x21, 0x2c, 0xad, 0x8f, 0x08, 0x63, 0xc6, 0x5b, 0xa1, 0x0b, 0xc1, 0x84, 0x70, 0x87,
-	0xb1, 0xdf, 0x06, 0xf9, 0x52, 0xb0, 0x3e, 0xd9, 0x8b, 0x39, 0x6f, 0x8f, 0xf3, 0xae, 0x8f, 0xf1,
-	0x0e, 0x90, 0x08, 0x2a, 0xb8, 0x89, 0x71, 0xfa, 0xeb, 0x36, 0xea, 0xe2, 0x6b, 0xd8, 0xc0, 0x1e,
-	0x36, 0xf8, 0x9d, 0xf8, 0x2a, 0x6a, 0xfc, 0x71, 0x61, 0x4c, 0x67, 0x10, 0x22, 0x85, 0xc1, 0x4f,
-	0x07, 0x63, 0xc0, 0xb1, 0xba, 0x73, 0xab, 0x9d, 0xc6, 0x2f, 0x43, 0xc7, 0xb8, 0x65, 0x7f, 0xfd,
-	0x17, 0xb3, 0x2a, 0xa0, 0xd1, 0x51, 0xdf, 0xe7, 0x7d, 0x31, 0x97, 0x3b, 0x93, 0x64, 0x24, 0xcf,
-	0x4e, 0xe8, 0x77, 0x26, 0xd6, 0x3e, 0x91, 0x22, 0xe3, 0xca, 0xd0, 0x50, 0x5b, 0xd4, 0x3f, 0x75,
-	0x57, 0x15, 0x48, 0x46, 0x5f, 0xd1, 0x47, 0xc4, 0x8d, 0x22, 0x05, 0x29, 0x6b, 0x11, 0x31, 0xb0,
-	0x68, 0x1a, 0xb6, 0x46, 0x8b, 0xaa, 0x22, 0x89, 0x8e, 0xf4, 0x49, 0x80, 0xd0, 0x51, 0x5f, 0xfd,
-	0xd8, 0x12, 0x84, 0x5f, 0xa1, 0x63, 0x7d, 0x62, 0xf7, 0x44, 0xad, 0x2e, 0xd5, 0x97, 0x06, 0x16,
-	0x15, 0xa2, 0x81, 0x4e, 0x1c, 0x8f, 0xe3, 0x77, 0x4e, 0xcf, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0x7c, 0x3e, 0xe0, 0x5a, 0x6d, 0x3d, 0x00, 0x00,
+	// 6204 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x7b, 0x69, 0x90, 0x63, 0xc9,
+	0x51, 0xbf, 0xa5, 0xbe, 0xab, 0xaf, 0xea, 0xd7, 0xdd, 0x33, 0x9a, 0xfb, 0xda, 0xd9, 0x99, 0xe9,
+	0xdd, 0x9d, 0x9d, 0x99, 0xdd, 0xf5, 0xf1, 0xf7, 0xd9, 0x52, 0x9f, 0x3b, 0xad, 0x6e, 0xad, 0xd4,
+	0xdd, 0xe3, 0x5d, 0x1f, 0xcf, 0xd5, 0x52, 0x49, 0x2a, 0xeb, 0xe9, 0x3d, 0xed, 0x7b, 0x25, 0x4d,
+	0xeb, 0xcf, 0x17, 0x20, 0xfc, 0x05, 0x63, 0x3b, 0xc0, 0x98, 0xc0, 0x38, 0xb0, 0xf9, 0xc0, 0x11,
+	0x61, 0x30, 0x44, 0x00, 0xe6, 0x0a, 0x4c, 0x04, 0xb6, 0xb1, 0x8d, 0x1d, 0x84, 0x6d, 0x30, 0x60,
+	0x03, 0xc6, 0x36, 0xc6, 0x60, 0x30, 0x60, 0xf8, 0x40, 0x04, 0x41, 0x70, 0x46, 0x66, 0x55, 0x3d,
+	0xd5, 0x93, 0xd4, 0xde, 0x4f, 0xd2, 0xcb, 0xfc, 0x55, 0x56, 0x56, 0x66, 0x56, 0x66, 0xd6, 0x3b,
+	0xc8, 0x4c, 0x39, 0x68, 0x36, 0x03, 0xff, 0x76, 0x2b, 0x0c, 0x64, 0xe0, 0x4c, 0x47, 0x3c, 0xec,
+	0xf0, 0x10, 0x2f, 0xce, 0x92, 0x76, 0xc4, 0x43, 0xc5, 0xb8, 0xfa, 0x06, 0x32, 0x5f, 0xf0, 0x58,
+	0x97, 0x87, 0xd9, 0x50, 0xf0, 0xea, 0xb6, 0x5f, 0x0d, 0x1c, 0x4a, 0x46, 0xda, 0xa2, 0x92, 0x49,
+	0x5d, 0x4e, 0xdd, 0x1c, 0x2d, 0xc2, 0x5f, 0xe7, 0x1c, 0x99, 0xf2, 0x45, 0xb9, 0xe1, 0xfa, 0xac,
+	0xc9, 0x33, 0xe9, 0xcb, 0xa9, 0x9b, 0x53, 0xc5, 0x49, 0x20, 0xec, 0xb2, 0x26, 0xbf, 0xfa, 0x4a,
+	0x32, 0x97, 0x65, 0x52, 0x7a, 0x7c, 0x55, 0xca, 0x70, 0xbf, 0xdb, 0xe2, 0x20, 0xa0, 0xc1, 0xbb,
+	0x28, 0x60, 0xac, 0x08, 0x7f, 0x9d, 0x25, 0x32, 0xd6, 0x61, 0x5e, 0x5b, 0x0d, 0x4e, 0x17, 0xd5,
+	0xc5, 0xd5, 0x2f, 0x4f, 0x91, 0xf9, 0xd5, 0xb2, 0x0c, 0xc2, 0xde, 0x78, 0x18, 0x1b, 0xc9, 0x10,
+	0xc7, 0xa6, 0x8b, 0xf0, 0x17, 0x28, 0xac, 0x26, 0xf4, 0x48, 0xf8, 0x0b, 0x14, 0xe1, 0xcb, 0xcc,
+	0x88, 0xa2, 0x08, 0x5f, 0x02, 0xa5, 0x23, 0x64, 0x66, 0x54, 0x51, 0x3a, 0x02, 0x29, 0x15, 0x7e,
+	0x9c, 0x19, 0x53, 0x94, 0x0a, 0x3f, 0x06, 0x8a, 0xd7, 0x6e, 0x64, 0xc6, 0x15, 0xc5, 0x6b, 0x37,
+	0x1c, 0x87, 0x8c, 0x7a, 0xa2, 0xca, 0x33, 0x04, 0x49, 0xf8, 0xdf, 0x99, 0x23, 0xe9, 0xa8, 0x95,
+	0x99, 0x46, 0x4a, 0x3a, 0x6a, 0x39, 0x17, 0x08, 0x69, 0x0a, 0xdf, 0x65, 0x52, 0xb2, 0x72, 0x23,
+	0x33, 0x83, 0xf4, 0xa9, 0xa6, 0xf0, 0x57, 0x91, 0xe0, 0x9c, 0x22, 0xe3, 0x9a, 0x35, 0x8b, 0x2c,
+	0x7d, 0xe5, 0xdc, 0x24, 0x14, 0x86, 0x35, 0x59, 0x4d, 0x94, 0xcd, 0xe0, 0x39, 0x44, 0xcc, 0x35,
+	0x85, 0x9f, 0x07, 0xb2, 0x96, 0x70, 0x85, 0xcc, 0x24, 0x50, 0xf3, 0x88, 0x9a, 0x6e, 0x5a, 0x90,
+	0x0c, 0x99, 0xa8, 0xf0, 0x2a, 0xf7, 0x23, 0x9e, 0xa1, 0xc8, 0x35, 0x97, 0xce, 0x35, 0x32, 0xab,
+	0x06, 0x1b, 0xfe, 0x02, 0xf2, 0x95, 0xc4, 0x35, 0x0d, 0x72, 0xc8, 0x68, 0x39, 0x14, 0x32, 0xe3,
+	0xa8, 0x65, 0xc2, 0x7f, 0x70, 0x48, 0x25, 0xa8, 0xd4, 0x78, 0x66, 0x51, 0x39, 0x04, 0x2f, 0xc0,
+	0x44, 0x75, 0x21, 0x33, 0x4b, 0xca, 0x44, 0x75, 0x65, 0x46, 0xc9, 0xfd, 0xcc, 0xb2, 0xa2, 0x48,
+	0xee, 0x83, 0xbe, 0x4a, 0x53, 0x37, 0x6a, 0x71, 0x5e, 0xc9, 0x9c, 0x52, 0xfa, 0x2a, 0x5a, 0x09,
+	0x48, 0x10, 0x2e, 0x21, 0x67, 0x9e, 0x5b, 0x6f, 0x87, 0x32, 0x73, 0x1a, 0xf9, 0x93, 0x40, 0xd8,
+	0x6a, 0x87, 0xd2, 0xb9, 0x44, 0xa6, 0x2b, 0xbc, 0xea, 0xb6, 0x78, 0x58, 0xe6, 0xbe, 0xcc, 0x5c,
+	0x44, 0x36, 0xa9, 0xf0, 0x6a, 0x41, 0x51, 0x9c, 0x15, 0xb2, 0x10, 0xaf, 0x29, 0x86, 0x5d, 0x42,
+	0xd8, 0xbc, 0x59, 0x97, 0xc1, 0x5e, 0x26, 0xd3, 0x2d, 0xee, 0x73, 0x19, 0x32, 0x29, 0x02, 0x3f,
+	0x73, 0x53, 0xe9, 0x62, 0x91, 0x9c, 0xc7, 0x8c, 0x34, 0x1b, 0x77, 0x0b, 0x71, 0x14, 0x19, 0x05,
+	0x0b, 0x7c, 0x8f, 0x2c, 0xb7, 0xea, 0xdd, 0x08, 0xe6, 0x66, 0x4d, 0x56, 0xe3, 0xf1, 0xf4, 0x2b,
+	0x38, 0x60, 0x51, 0x31, 0xd7, 0x90, 0x67, 0x54, 0xb8, 0x43, 0x96, 0xb4, 0xba, 0xc9, 0x21, 0x8f,
+	0xe1, 0x10, 0x47, 0x69, 0x9c, 0x18, 0x71, 0x9b, 0x2c, 0x82, 0x0f, 0xfa, 0x07, 0x3c, 0x8e, 0x03,
+	0x16, 0x80, 0x95, 0xc4, 0xaf, 0x92, 0x0b, 0x49, 0xad, 0x42, 0x5e, 0xf5, 0x78, 0x59, 0xc6, 0x23,
+	0x9f, 0xc0, 0x91, 0x67, 0x6d, 0xed, 0x8a, 0x0a, 0x62, 0x44, 0xbc, 0x9e, 0x9c, 0x4f, 0x28, 0xd9,
+	0x2f, 0xe1, 0x36, 0x4a, 0x38, 0x63, 0x29, 0xdb, 0x27, 0xe0, 0x19, 0x72, 0xba, 0x2a, 0x8e, 0x79,
+	0xc5, 0x8d, 0x84, 0x5f, 0x73, 0xa5, 0x68, 0xf6, 0xf4, 0x7e, 0x12, 0xc7, 0x2e, 0x21, 0xbb, 0x24,
+	0xfc, 0xda, 0xbe, 0x68, 0xc6, 0xaa, 0xbf, 0x9a, 0x9c, 0xed, 0xb0, 0x50, 0xb0, 0x23, 0x8f, 0x0f,
+	0x19, 0x79, 0x07, 0x47, 0x9e, 0x36, 0x88, 0xfe, 0xc1, 0xf7, 0xc8, 0xb2, 0xcf, 0x64, 0x3b, 0xe4,
+	0xfd, 0x96, 0x7a, 0xcd, 0xe5, 0x11, 0xf0, 0x86, 0x62, 0x26, 0x6d, 0xf5, 0x6a, 0x72, 0x96, 0xf9,
+	0x52, 0xb8, 0xc3, 0x07, 0xbe, 0x16, 0x07, 0x9e, 0x06, 0xc4, 0xee, 0x90, 0xc1, 0x5b, 0x64, 0x41,
+	0x86, 0xa2, 0x56, 0xe3, 0xa1, 0x7b, 0xd4, 0xae, 0x56, 0x5d, 0x4f, 0x44, 0x32, 0xf3, 0xba, 0xcb,
+	0x23, 0x37, 0xa7, 0xef, 0x9d, 0xbf, 0x6d, 0x25, 0xd0, 0xdb, 0xfb, 0x0a, 0x95, 0x6d, 0x57, 0xab,
+	0x6b, 0x4c, 0xb2, 0xe2, 0xbc, 0xec, 0x11, 0x76, 0x44, 0x24, 0xaf, 0xfe, 0x52, 0x8a, 0xcc, 0xf7,
+	0x81, 0x20, 0x55, 0x80, 0xd4, 0x6d, 0x95, 0x59, 0x67, 0x8b, 0xfa, 0x0a, 0xf6, 0xb0, 0x99, 0x15,
+	0xc3, 0x50, 0x67, 0xba, 0x19, 0x4d, 0x2c, 0x02, 0x0d, 0xd2, 0x52, 0xb9, 0xa2, 0x33, 0x5e, 0xba,
+	0x5c, 0x81, 0x5d, 0x68, 0x06, 0xc9, 0x6e, 0x8b, 0x63, 0xe6, 0x1b, 0x2b, 0x4e, 0x6b, 0x1a, 0x66,
+	0xe1, 0x15, 0xb2, 0xe0, 0xb1, 0x48, 0xba, 0x31, 0x4e, 0x34, 0xb9, 0xce, 0x87, 0xf3, 0xc0, 0xd0,
+	0xfa, 0x81, 0xc5, 0xaf, 0xfe, 0xd3, 0x08, 0x99, 0xc2, 0x4c, 0x8c, 0x9a, 0xce, 0x91, 0xb4, 0x30,
+	0x5a, 0xa6, 0x45, 0xc5, 0x79, 0x2d, 0x99, 0x3e, 0xc2, 0x0c, 0x0d, 0x39, 0x2a, 0x44, 0xfd, 0xfa,
+	0x2d, 0xd2, 0x97, 0xc6, 0x8b, 0xe4, 0xa8, 0x97, 0xd2, 0xcf, 0x91, 0x29, 0x11, 0xb9, 0x2d, 0xac,
+	0x32, 0xb8, 0x84, 0xc9, 0xe2, 0xa4, 0x88, 0x54, 0xd5, 0x71, 0x5e, 0x4e, 0xa6, 0x18, 0x8c, 0x75,
+	0x5b, 0x41, 0x84, 0xab, 0x98, 0xbe, 0x77, 0x66, 0x50, 0x72, 0x21, 0x88, 0xa0, 0x34, 0x15, 0x27,
+	0x99, 0xbe, 0x72, 0xce, 0x90, 0xc9, 0xb7, 0x07, 0x47, 0x6a, 0xf1, 0x63, 0xa8, 0xe9, 0xc4, 0xdb,
+	0x83, 0x23, 0x5c, 0xf8, 0x3a, 0x59, 0xf0, 0x83, 0xb0, 0xc9, 0x3c, 0x37, 0x6a, 0x08, 0xcf, 0x53,
+	0x6e, 0x1c, 0x47, 0x37, 0x26, 0x45, 0xdf, 0xe7, 0xdd, 0x43, 0x28, 0x44, 0x30, 0xaa, 0x38, 0xaf,
+	0xc6, 0x94, 0x60, 0x08, 0xf8, 0xd0, 0x79, 0x3d, 0x99, 0x6b, 0x47, 0xdc, 0x96, 0x31, 0xf1, 0x52,
+	0x32, 0x66, 0xda, 0x11, 0xef, 0x09, 0xd8, 0x24, 0x4e, 0x85, 0x57, 0x59, 0xdb, 0x93, 0xb6, 0x90,
+	0xc9, 0x97, 0x12, 0x42, 0xf5, 0xa0, 0x9e, 0xa0, 0x3d, 0x72, 0x8a, 0x79, 0x92, 0x87, 0x3e, 0x93,
+	0xa2, 0x93, 0xd0, 0x68, 0xea, 0xa5, 0x84, 0x2d, 0x59, 0x03, 0x63, 0x81, 0x57, 0x8f, 0xc9, 0x8c,
+	0x6d, 0xd6, 0x01, 0x87, 0xdf, 0x20, 0x23, 0xe0, 0x0e, 0xe5, 0xe8, 0xe5, 0x84, 0xf4, 0x42, 0x10,
+	0x09, 0xc8, 0x95, 0x45, 0x40, 0x38, 0x4f, 0x92, 0x89, 0x6a, 0x10, 0x3e, 0x64, 0xa1, 0x8a, 0xcd,
+	0x13, 0xc1, 0x06, 0xb5, 0xf2, 0x2a, 0x32, 0xbd, 0xc9, 0x9a, 0xfc, 0x90, 0x87, 0x11, 0x24, 0xdc,
+	0x25, 0x42, 0xad, 0x4b, 0x77, 0x37, 0xf0, 0x39, 0x7d, 0x59, 0x3f, 0x35, 0xcf, 0x84, 0x4f, 0xa7,
+	0x56, 0x3e, 0x37, 0x41, 0x26, 0x8a, 0x3c, 0x42, 0x17, 0xcf, 0x90, 0xc9, 0x22, 0x8f, 0xdc, 0xdd,
+	0xbd, 0xdd, 0x75, 0xfa, 0x32, 0x73, 0x95, 0x0b, 0x84, 0x4f, 0x53, 0xce, 0x34, 0xc2, 0xdc, 0x62,
+	0xf3, 0x88, 0xa6, 0x9d, 0x45, 0x32, 0x8f, 0x17, 0x81, 0xc7, 0xb3, 0x2c, 0xe2, 0xeb, 0xc7, 0x2d,
+	0x3a, 0xe2, 0x38, 0x64, 0xce, 0x10, 0x9f, 0x0d, 0x8e, 0x80, 0x36, 0x6a, 0x80, 0x5b, 0x3c, 0x0c,
+	0x0c, 0x70, 0xcc, 0x99, 0x25, 0x53, 0x40, 0x5c, 0x7f, 0xb1, 0x2d, 0x5a, 0x74, 0xdc, 0xcc, 0xb3,
+	0x2d, 0x79, 0x93, 0x4e, 0xc4, 0xb3, 0xd6, 0x45, 0x8b, 0x4e, 0xc6, 0x57, 0x2c, 0xac, 0xd0, 0x29,
+	0x67, 0x9e, 0x4c, 0xc3, 0xd5, 0x06, 0x8b, 0xea, 0x22, 0xf0, 0x29, 0x71, 0xe6, 0x08, 0x41, 0x76,
+	0xd8, 0x16, 0x11, 0xa7, 0xd3, 0xe6, 0xba, 0xd4, 0x0a, 0x85, 0xe4, 0x74, 0xc6, 0x0c, 0x28, 0xf2,
+	0xc8, 0x0b, 0x3a, 0x9c, 0xce, 0x1a, 0x79, 0xa0, 0x0f, 0x9d, 0x73, 0x16, 0xc8, 0x2c, 0xc2, 0xc1,
+	0x83, 0xd9, 0x20, 0x68, 0xd0, 0x79, 0x03, 0xd8, 0x14, 0x55, 0x49, 0xa9, 0x19, 0xbf, 0xde, 0x11,
+	0x1e, 0xa8, 0xbe, 0x60, 0x46, 0x6c, 0x71, 0x56, 0xd9, 0x08, 0x59, 0x93, 0x53, 0xc7, 0xcc, 0x59,
+	0xe0, 0x12, 0x20, 0x8b, 0x66, 0x4c, 0x81, 0x4b, 0xb4, 0xdc, 0x92, 0xb1, 0x5c, 0x81, 0x4b, 0xba,
+	0x6c, 0x0c, 0x02, 0x8b, 0xcd, 0x05, 0xcd, 0x56, 0x10, 0x71, 0x7a, 0xca, 0x10, 0x77, 0x03, 0xe9,
+	0x16, 0x58, 0xb9, 0xc1, 0x6a, 0x9c, 0x9e, 0x36, 0x56, 0xda, 0x6c, 0x0b, 0xaf, 0x42, 0x33, 0xc6,
+	0xba, 0xdb, 0x7e, 0x47, 0x48, 0x2c, 0xab, 0xf4, 0x8c, 0x99, 0xfa, 0x50, 0xb4, 0x60, 0xea, 0xb3,
+	0x46, 0xce, 0x73, 0x6d, 0x51, 0x6e, 0xa8, 0xac, 0x41, 0xcf, 0x19, 0xe2, 0x1a, 0x0b, 0x72, 0x75,
+	0xe6, 0xd7, 0xee, 0xde, 0xb9, 0x43, 0xcf, 0xc7, 0x86, 0x69, 0x47, 0xf5, 0x3c, 0x6b, 0xd1, 0x0b,
+	0x0e, 0x25, 0x33, 0x40, 0xb8, 0xcf, 0x79, 0xab, 0xc4, 0x1a, 0x9c, 0x5e, 0x32, 0xe3, 0xc0, 0x12,
+	0xee, 0x81, 0x2f, 0x5e, 0x6c, 0x73, 0x7a, 0xd9, 0x39, 0x43, 0x96, 0xfb, 0x84, 0x69, 0x05, 0xaf,
+	0x40, 0x78, 0xc5, 0xfa, 0xba, 0x7a, 0xf6, 0xab, 0x46, 0xed, 0xf5, 0xe3, 0x96, 0x17, 0x84, 0xf0,
+	0x43, 0xaf, 0x0d, 0x13, 0x52, 0x2a, 0x07, 0x21, 0xa7, 0x8f, 0x18, 0x78, 0x8e, 0x45, 0xf5, 0x7d,
+	0x51, 0x6e, 0x70, 0x49, 0x6f, 0x3a, 0xa7, 0x88, 0x03, 0xb4, 0x7c, 0xe0, 0xcb, 0x3a, 0x44, 0x82,
+	0x8a, 0x94, 0x5b, 0x46, 0x4c, 0xb1, 0xed, 0x73, 0xf7, 0xc0, 0xf7, 0x82, 0x72, 0xc3, 0x5d, 0x85,
+	0xdd, 0x40, 0x57, 0x8c, 0xee, 0x87, 0x22, 0x94, 0x6d, 0xe6, 0xb9, 0xc5, 0x7c, 0x96, 0x3e, 0x66,
+	0xe4, 0x14, 0xb8, 0xdc, 0xe1, 0x1d, 0xee, 0x1d, 0x14, 0x50, 0x9d, 0x27, 0xcc, 0xd2, 0xc1, 0x81,
+	0x18, 0x91, 0xb7, 0x9d, 0x65, 0xb2, 0x80, 0x5e, 0x16, 0xb5, 0xba, 0xca, 0x17, 0x00, 0x7c, 0xd2,
+	0x48, 0x45, 0x8a, 0x8e, 0xde, 0x3b, 0x76, 0x44, 0x28, 0xc5, 0xee, 0xc6, 0xae, 0xaa, 0x04, 0x5e,
+	0x89, 0xb3, 0x28, 0xf0, 0xe9, 0x3d, 0x63, 0xf0, 0x07, 0x22, 0xaa, 0x67, 0x83, 0x63, 0xfa, 0x94,
+	0xd1, 0x46, 0x13, 0xdc, 0x12, 0x87, 0xbe, 0x80, 0x3e, 0x6d, 0xe8, 0xb9, 0x90, 0x57, 0x84, 0x2c,
+	0xf2, 0x72, 0x9d, 0x85, 0x35, 0x4e, 0x9f, 0x31, 0xbe, 0x2e, 0xee, 0x61, 0x54, 0xbd, 0xdc, 0x28,
+	0x93, 0x0d, 0x3c, 0x51, 0xaa, 0x07, 0x18, 0x00, 0xaf, 0x58, 0x79, 0xdf, 0x02, 0x99, 0xdc, 0x67,
+	0x51, 0x03, 0x77, 0xf3, 0x24, 0x19, 0xd5, 0x3b, 0x79, 0x8e, 0x10, 0xd8, 0x7d, 0x2e, 0xae, 0x9b,
+	0xa6, 0x20, 0xb4, 0x9e, 0x0d, 0x8e, 0xf4, 0x65, 0xda, 0x5c, 0x96, 0x24, 0x04, 0x1e, 0xee, 0x63,
+	0xd8, 0x1f, 0x8a, 0xed, 0xee, 0xb6, 0x9b, 0x74, 0x14, 0xb4, 0xea, 0xd1, 0x0e, 0x5a, 0x6e, 0x2e,
+	0x68, 0xfb, 0x92, 0x8e, 0xc5, 0xd8, 0x42, 0xf0, 0x90, 0x87, 0x88, 0x1d, 0x07, 0xcd, 0xd0, 0x38,
+	0x96, 0x80, 0x49, 0x30, 0xa9, 0x4d, 0x54, 0xe3, 0xa7, 0x7a, 0xe4, 0x8d, 0x20, 0xac, 0x71, 0x4d,
+	0x26, 0x30, 0x9d, 0xc2, 0xa9, 0x38, 0xd2, 0xf4, 0x69, 0xe7, 0x02, 0x39, 0xa3, 0xac, 0x5f, 0xf2,
+	0x02, 0xa9, 0x45, 0xc5, 0xda, 0xcc, 0x82, 0x91, 0xf7, 0x03, 0xc9, 0x3c, 0xa5, 0x0e, 0x9d, 0x03,
+	0xf1, 0x5a, 0x42, 0x36, 0x88, 0x22, 0x8d, 0xa3, 0xca, 0xc6, 0x4d, 0x26, 0x7c, 0xed, 0xcb, 0x42,
+	0x20, 0x7c, 0x49, 0x17, 0x9c, 0xb3, 0xe4, 0x14, 0x64, 0x2f, 0x77, 0x50, 0x25, 0x07, 0x78, 0x05,
+	0x16, 0xca, 0x21, 0xbc, 0x45, 0xe7, 0x1c, 0x39, 0x8d, 0xe3, 0x70, 0xe3, 0x25, 0x75, 0x5e, 0x72,
+	0x4e, 0x93, 0x45, 0x64, 0x1e, 0x44, 0x1c, 0x03, 0x44, 0x33, 0x96, 0x63, 0xdb, 0x29, 0x95, 0xc1,
+	0x4c, 0xa7, 0x20, 0x9a, 0x90, 0xb6, 0x5d, 0xd1, 0xde, 0x39, 0xed, 0x9c, 0x27, 0x19, 0x7b, 0x0d,
+	0x45, 0x0e, 0x31, 0xae, 0x85, 0x64, 0x9c, 0x0c, 0x59, 0xda, 0xe4, 0xd2, 0xdd, 0xf3, 0x3d, 0xe1,
+	0x03, 0xe2, 0x58, 0x73, 0xce, 0xc0, 0xb8, 0xd5, 0x90, 0xfb, 0xcc, 0xe8, 0x53, 0x92, 0xa0, 0xbe,
+	0xe2, 0x9e, 0x85, 0xdd, 0x0a, 0x59, 0xcd, 0xdd, 0x80, 0x18, 0xd7, 0xd4, 0xf3, 0x30, 0xa6, 0x24,
+	0xbc, 0x0e, 0x0f, 0xdd, 0x5c, 0xe0, 0x47, 0xed, 0x66, 0x0b, 0x12, 0x8d, 0xe6, 0x5e, 0x04, 0x13,
+	0x6c, 0x06, 0x5e, 0x65, 0x08, 0xef, 0x12, 0xf0, 0x12, 0xb3, 0x3d, 0x10, 0x86, 0x77, 0x19, 0x74,
+	0xcc, 0x79, 0xa2, 0x79, 0x04, 0x9d, 0xea, 0x3e, 0x06, 0x8a, 0xe2, 0x5c, 0x01, 0xdb, 0xe4, 0xd4,
+	0x6a, 0x30, 0x15, 0x9a, 0x65, 0x5d, 0x03, 0xf5, 0x90, 0x51, 0xe4, 0x11, 0x37, 0xea, 0x3d, 0x32,
+	0x44, 0x90, 0x32, 0xd2, 0x75, 0xd8, 0xc3, 0x85, 0xfb, 0xd6, 0xa4, 0x8f, 0x62, 0xb5, 0xe3, 0xd2,
+	0x8d, 0x97, 0x03, 0xd4, 0x1b, 0x60, 0x73, 0xa4, 0xb6, 0x85, 0x91, 0x7a, 0xd3, 0xd0, 0x72, 0x3d,
+	0xb3, 0xde, 0x72, 0x2e, 0x91, 0x73, 0xc3, 0x97, 0xe3, 0xae, 0x96, 0xcb, 0x6d, 0xba, 0x02, 0x83,
+	0x60, 0xdb, 0xb9, 0xd9, 0x76, 0x57, 0x0f, 0x7a, 0xac, 0x17, 0xcc, 0xcf, 0xb5, 0x99, 0x27, 0x64,
+	0x17, 0x7d, 0xfa, 0x78, 0xbc, 0x16, 0x9b, 0xfa, 0x04, 0xec, 0x92, 0x02, 0x97, 0x09, 0xe2, 0x6d,
+	0x80, 0xaa, 0x69, 0x8b, 0xcc, 0x6f, 0xe8, 0xc5, 0x3d, 0x09, 0xb6, 0x45, 0x5f, 0xd9, 0x81, 0xa5,
+	0xf4, 0xb8, 0x03, 0xa1, 0xb7, 0x7e, 0xdc, 0x82, 0x5c, 0x01, 0xde, 0x48, 0x84, 0xde, 0x5d, 0xd8,
+	0x2e, 0x16, 0x33, 0xc7, 0x3c, 0x6f, 0x8b, 0x7b, 0x66, 0xbb, 0xdc, 0x03, 0x7d, 0x37, 0x42, 0xc1,
+	0xfd, 0x8a, 0x5b, 0x6a, 0x1f, 0x6d, 0x30, 0x1f, 0x95, 0x78, 0x0a, 0x9c, 0xa2, 0xc9, 0x58, 0x6c,
+	0x8c, 0xb8, 0xa7, 0xd1, 0xa4, 0x98, 0xdd, 0x9f, 0x0d, 0x62, 0x43, 0x3f, 0x03, 0xd9, 0xe3, 0x70,
+	0xbb, 0xa0, 0x95, 0x7d, 0x39, 0xcc, 0xd9, 0xab, 0x51, 0x6e, 0x2f, 0xed, 0xa0, 0xf0, 0x57, 0x80,
+	0xbe, 0x16, 0xdb, 0xe4, 0x37, 0x64, 0xbe, 0x12, 0x32, 0xba, 0xc5, 0xdc, 0x6d, 0x37, 0x8f, 0x74,
+	0x52, 0x79, 0x95, 0x73, 0x85, 0x5c, 0x38, 0x29, 0x9a, 0x95, 0x29, 0xfe, 0x9f, 0xca, 0xda, 0x3d,
+	0x79, 0x8a, 0xfc, 0x6a, 0x95, 0xde, 0xad, 0x69, 0x5e, 0x03, 0xdb, 0x3f, 0x57, 0x67, 0xd2, 0xcd,
+	0xf3, 0x28, 0x62, 0xf1, 0x36, 0x7e, 0x2d, 0x6c, 0xbe, 0xb5, 0x90, 0x3d, 0x54, 0x91, 0x00, 0xd0,
+	0xd7, 0xc1, 0x60, 0x24, 0x81, 0xab, 0x80, 0xf2, 0x7a, 0xe7, 0x22, 0x39, 0x6b, 0xdb, 0xb4, 0xce,
+	0x3c, 0x8f, 0xfb, 0xb1, 0x90, 0x37, 0xc0, 0x02, 0x75, 0x09, 0x84, 0xdd, 0xba, 0xab, 0x3a, 0x66,
+	0xc5, 0x5c, 0x85, 0xc1, 0x0f, 0x82, 0xd0, 0x30, 0xfb, 0x07, 0x67, 0x61, 0xba, 0xf5, 0x0e, 0xef,
+	0x29, 0x90, 0x83, 0x94, 0x06, 0x14, 0x33, 0xff, 0x1a, 0x66, 0xd7, 0x0e, 0xd7, 0xfb, 0x16, 0x6f,
+	0xf8, 0xd0, 0x75, 0x43, 0xcc, 0x73, 0x58, 0xa4, 0xaa, 0x4c, 0x1b, 0x10, 0xa2, 0x3d, 0x22, 0x76,
+	0x50, 0x9b, 0x86, 0x06, 0xa6, 0x71, 0xcb, 0x38, 0xe9, 0x16, 0xd8, 0x4d, 0x59, 0xb3, 0x84, 0x3d,
+	0xa6, 0xbb, 0xc6, 0xba, 0x11, 0xdd, 0x36, 0x32, 0x57, 0x43, 0xce, 0x7c, 0x77, 0x43, 0x84, 0x91,
+	0xa4, 0xcf, 0x82, 0x89, 0x7a, 0xc4, 0x6c, 0xbb, 0x4b, 0xef, 0x63, 0xd4, 0x77, 0x78, 0x5c, 0xcd,
+	0x71, 0xaf, 0xd0, 0x7c, 0x3c, 0xbb, 0xa9, 0xda, 0x15, 0xba, 0x0b, 0x86, 0x07, 0x5a, 0xec, 0x0e,
+	0x6c, 0xa8, 0xe9, 0x1e, 0xec, 0x6b, 0xa0, 0x43, 0xf3, 0x11, 0xb1, 0x06, 0x77, 0xbd, 0x8e, 0xe7,
+	0xae, 0x7a, 0x1e, 0x2d, 0x18, 0x29, 0x56, 0xde, 0x7c, 0xce, 0xe8, 0xb0, 0x13, 0xd4, 0x84, 0x0f,
+	0xca, 0xd2, 0xa2, 0x11, 0x60, 0x57, 0x18, 0xc8, 0xb9, 0xb4, 0x64, 0x38, 0x90, 0x7c, 0xed, 0xec,
+	0x4c, 0xf7, 0x21, 0xcc, 0x93, 0x0a, 0x62, 0xbd, 0xa7, 0x07, 0xb8, 0xa5, 0x3a, 0xdc, 0x04, 0x9a,
+	0x4e, 0xec, 0xb8, 0x4b, 0xe9, 0x21, 0x84, 0xe8, 0xc0, 0x6a, 0xdd, 0xd5, 0x4a, 0x85, 0x3e, 0x30,
+	0xba, 0x82, 0xab, 0xb6, 0x2b, 0x6e, 0xce, 0x97, 0xf4, 0x8d, 0x49, 0x7b, 0xad, 0x31, 0x9f, 0x3e,
+	0x8f, 0x01, 0xa4, 0x61, 0x7a, 0x0a, 0x93, 0x03, 0xca, 0xbe, 0xa4, 0x2f, 0x18, 0x23, 0x59, 0xd9,
+	0x79, 0xa7, 0xe3, 0xd1, 0x37, 0x99, 0x71, 0x83, 0xbb, 0x1d, 0x8a, 0x3d, 0x7d, 0xb3, 0x19, 0xa7,
+	0x1a, 0x91, 0x32, 0xa6, 0x66, 0x5f, 0xd2, 0xb7, 0x18, 0x8d, 0x55, 0xa5, 0x5b, 0xad, 0x74, 0x98,
+	0x5f, 0x56, 0x1b, 0xe1, 0xad, 0x46, 0xe4, 0x86, 0x40, 0x15, 0xa5, 0xa8, 0xb2, 0x32, 0xec, 0x26,
+	0x29, 0x3a, 0x4c, 0x72, 0xea, 0x1a, 0x13, 0x59, 0x21, 0x80, 0xcb, 0x7a, 0x1b, 0xcc, 0x95, 0xdd,
+	0x77, 0x5f, 0xa8, 0x73, 0xff, 0x59, 0xc1, 0xe2, 0x26, 0xa5, 0x82, 0xf5, 0x76, 0x5f, 0xf7, 0x28,
+	0x31, 0x99, 0xaf, 0xbc, 0x77, 0x8c, 0x50, 0xd5, 0xa1, 0xe5, 0x90, 0x84, 0xed, 0xc9, 0x12, 0xa1,
+	0x07, 0xbd, 0x4b, 0x73, 0x48, 0x39, 0x4f, 0x32, 0x36, 0xf5, 0x05, 0xee, 0x77, 0xf7, 0xfc, 0x32,
+	0xcf, 0x05, 0x91, 0xa4, 0x29, 0x48, 0xcb, 0x36, 0x17, 0x8b, 0x01, 0x16, 0x02, 0xd3, 0xca, 0xf4,
+	0x0d, 0x57, 0x67, 0x33, 0xd5, 0xb3, 0xd0, 0x11, 0x30, 0x85, 0xcd, 0x85, 0xe4, 0xa4, 0x06, 0x8e,
+	0x82, 0xd3, 0x6d, 0x16, 0x6c, 0x7a, 0x88, 0x89, 0xfc, 0x61, 0x81, 0x8e, 0x41, 0x02, 0xee, 0x67,
+	0x16, 0xb8, 0x04, 0xde, 0x78, 0xff, 0x40, 0xe5, 0x13, 0x25, 0x75, 0x02, 0xb2, 0x56, 0x42, 0x9d,
+	0x7a, 0xd0, 0x52, 0x19, 0xa1, 0x98, 0xcf, 0xe2, 0x92, 0x26, 0x21, 0x5f, 0xda, 0x10, 0x4c, 0x72,
+	0x80, 0x43, 0xf6, 0x54, 0x3f, 0x1b, 0x53, 0x4b, 0xcc, 0x26, 0xe0, 0xc1, 0xc4, 0x04, 0x2d, 0x5e,
+	0x16, 0xcc, 0x03, 0x00, 0xf4, 0xbc, 0xd3, 0xfd, 0xda, 0x15, 0xb8, 0x8c, 0x07, 0xcf, 0x38, 0x57,
+	0xc9, 0xc5, 0x61, 0x6b, 0xd6, 0xe1, 0x08, 0x21, 0x32, 0xdb, 0x6f, 0x71, 0x83, 0xd1, 0x13, 0xd1,
+	0xb9, 0x7e, 0x0d, 0xb4, 0x6d, 0x0c, 0x7f, 0xbe, 0xdf, 0xe6, 0x05, 0xd6, 0x5d, 0x6d, 0xea, 0x36,
+	0xac, 0xcf, 0x59, 0xd0, 0xf8, 0x94, 0x64, 0xc8, 0xfd, 0x9a, 0xac, 0xd3, 0x85, 0xfe, 0x81, 0xc0,
+	0x55, 0x66, 0x75, 0x06, 0xbc, 0x7c, 0x5f, 0x78, 0x9e, 0x8e, 0x6c, 0xba, 0xe8, 0x5c, 0x27, 0x57,
+	0xfa, 0x35, 0x52, 0x4d, 0x3c, 0x64, 0x07, 0xa3, 0xd8, 0xd2, 0xca, 0x77, 0x1f, 0x27, 0x64, 0xd3,
+	0x0b, 0x8e, 0x98, 0x87, 0xe1, 0x38, 0x4f, 0xa6, 0xd5, 0x95, 0x39, 0xfe, 0x5e, 0x22, 0xe7, 0x34,
+	0x61, 0xdd, 0x97, 0x3c, 0xc4, 0x94, 0x5d, 0xc4, 0x2d, 0xbf, 0x2f, 0x9a, 0xd0, 0x27, 0x9f, 0x27,
+	0x19, 0x03, 0x88, 0x7b, 0x42, 0xe8, 0x4c, 0xc0, 0x70, 0x17, 0x9c, 0x6b, 0xe4, 0x92, 0xe6, 0x62,
+	0x06, 0xd9, 0x0b, 0x45, 0x4d, 0xf8, 0xcc, 0x73, 0x57, 0xa5, 0x0c, 0x75, 0xc3, 0x79, 0x0e, 0x54,
+	0x1d, 0x0e, 0xaa, 0x54, 0x00, 0xa7, 0x60, 0x17, 0x61, 0xbb, 0x69, 0x98, 0xaa, 0x0c, 0x18, 0x42,
+	0xf4, 0x3a, 0x16, 0x64, 0x8b, 0x9e, 0x17, 0xbe, 0xa0, 0x8f, 0x42, 0xe2, 0x4e, 0x50, 0x3b, 0x2d,
+	0x7a, 0xc3, 0x52, 0xd6, 0x6e, 0xb8, 0x5c, 0x8c, 0x84, 0x5b, 0xd8, 0xd9, 0x29, 0xae, 0xce, 0x29,
+	0x79, 0xe1, 0xab, 0x65, 0xde, 0x86, 0x08, 0x4c, 0xf2, 0xb6, 0xfd, 0x72, 0xd0, 0xd4, 0x56, 0x78,
+	0xd2, 0x12, 0xac, 0xd9, 0x3b, 0xa2, 0x29, 0xa4, 0xe2, 0xde, 0xb1, 0x8c, 0xb8, 0x0f, 0x0e, 0x91,
+	0x2e, 0x9c, 0x4e, 0xdc, 0x2c, 0x87, 0xd4, 0xbd, 0xbd, 0x46, 0x9f, 0x82, 0x8c, 0x61, 0xf4, 0xc2,
+	0x43, 0xbc, 0x9b, 0x67, 0xc7, 0xb4, 0x60, 0xad, 0x18, 0x3b, 0xfd, 0x03, 0x7f, 0x27, 0x28, 0x37,
+	0xe8, 0x81, 0x73, 0x99, 0x9c, 0xb7, 0xe9, 0x79, 0x76, 0x9c, 0x6c, 0x88, 0x0f, 0x21, 0x1e, 0x6d,
+	0x44, 0xcc, 0x85, 0x96, 0x95, 0xd3, 0x07, 0x96, 0xbe, 0x9a, 0x0f, 0x0d, 0xa6, 0x42, 0xd1, 0x37,
+	0x5a, 0xa3, 0x13, 0xbd, 0xbc, 0x4a, 0x5e, 0xf4, 0x79, 0xcb, 0x50, 0xd8, 0x41, 0xa8, 0x62, 0x8e,
+	0x6b, 0x7d, 0xc1, 0xd2, 0xcd, 0xe2, 0xa1, 0x5f, 0x55, 0xdc, 0xbe, 0x09, 0x36, 0x5c, 0xd2, 0x56,
+	0x45, 0xce, 0x2a, 0x5d, 0xf4, 0xb2, 0x5b, 0x7a, 0x18, 0x84, 0x15, 0xfa, 0x66, 0x2b, 0x6e, 0x06,
+	0x31, 0xc5, 0xe0, 0xe8, 0x88, 0x87, 0xf4, 0x2d, 0xdf, 0x13, 0xb4, 0x1a, 0x96, 0xeb, 0x3c, 0xa4,
+	0x6f, 0xb5, 0x82, 0x6b, 0x10, 0x84, 0x8f, 0x4a, 0x04, 0xf3, 0xa9, 0x0b, 0x39, 0xea, 0x44, 0xd8,
+	0x03, 0xe6, 0x57, 0xe8, 0xdb, 0xbe, 0x27, 0x04, 0xf3, 0x36, 0xc3, 0xb6, 0x27, 0x5e, 0x3c, 0x6c,
+	0x12, 0x38, 0x51, 0x82, 0x61, 0x22, 0x5a, 0xb3, 0x6d, 0xde, 0xe2, 0xbc, 0xa2, 0xcb, 0x9a, 0x3a,
+	0xa4, 0xd5, 0xed, 0xa1, 0xed, 0x50, 0xd5, 0x2f, 0x7d, 0x8f, 0x8a, 0x0a, 0x2b, 0xfa, 0xb6, 0x7d,
+	0x21, 0x15, 0xb7, 0x10, 0x84, 0x32, 0x64, 0x42, 0xd2, 0xb7, 0x43, 0x92, 0x30, 0x1b, 0x88, 0xfb,
+	0xac, 0xc9, 0x63, 0x47, 0x37, 0x2c, 0x1b, 0xa9, 0xc6, 0xd1, 0x94, 0xec, 0x5e, 0xdb, 0x45, 0x3d,
+	0xcb, 0x23, 0x7d, 0x20, 0xd5, 0xd7, 0x47, 0x92, 0x36, 0x4f, 0x16, 0xd4, 0xeb, 0xfd, 0x7d, 0xe7,
+	0x51, 0x72, 0x75, 0x38, 0x48, 0x07, 0xa0, 0x6a, 0xb6, 0x5a, 0xce, 0x0d, 0x72, 0xed, 0x04, 0x1c,
+	0xf3, 0x1b, 0xb0, 0xeb, 0x54, 0xac, 0xbc, 0x68, 0xed, 0x1c, 0x05, 0xcc, 0x33, 0x59, 0xae, 0xbb,
+	0xfb, 0x01, 0xf4, 0x37, 0x55, 0x49, 0x43, 0x4b, 0xf5, 0x3c, 0x13, 0xde, 0x76, 0x45, 0xe3, 0x00,
+	0xa1, 0xc3, 0x59, 0x3a, 0xb7, 0xc8, 0xf5, 0x61, 0x18, 0xbc, 0xdb, 0xa2, 0xdb, 0x24, 0x05, 0x6d,
+	0x5b, 0xab, 0xd4, 0x50, 0x6c, 0x51, 0xf7, 0x1e, 0xfa, 0x3c, 0x34, 0xa0, 0xce, 0x49, 0x20, 0x59,
+	0xef, 0x81, 0x1e, 0x5a, 0xd1, 0x82, 0xa9, 0xe6, 0xa0, 0xe5, 0x6e, 0x86, 0xac, 0x02, 0x41, 0x13,
+	0x05, 0xed, 0xb0, 0xcc, 0x69, 0xd7, 0xf2, 0xaa, 0xdd, 0x0e, 0x6b, 0xd7, 0xfd, 0x7f, 0x6b, 0xed,
+	0x45, 0x5e, 0x0e, 0xdb, 0xe8, 0xf7, 0x30, 0x88, 0x01, 0xdf, 0xe7, 0x9c, 0x8d, 0xdd, 0x5e, 0xea,
+	0x46, 0x92, 0x37, 0xf3, 0x51, 0x4d, 0xdd, 0x7c, 0xf9, 0xc1, 0x94, 0x93, 0x21, 0x8b, 0xb1, 0x8e,
+	0xc7, 0xee, 0x2e, 0x04, 0xc5, 0x0e, 0xf7, 0xe9, 0x3b, 0xa1, 0x7b, 0x88, 0x53, 0x43, 0x00, 0x45,
+	0x00, 0x8e, 0x3d, 0x70, 0x50, 0xc0, 0x8c, 0x45, 0x7f, 0x38, 0xe5, 0x5c, 0x8e, 0xe7, 0xd5, 0x80,
+	0x0d, 0xe6, 0x47, 0x3d, 0xc4, 0xbb, 0x52, 0xce, 0x95, 0x5e, 0xfe, 0x51, 0x88, 0xac, 0xc7, 0xca,
+	0x8d, 0x1e, 0xe4, 0xdd, 0x29, 0x5b, 0x37, 0x51, 0xf3, 0x0f, 0x5a, 0x71, 0x30, 0xbf, 0x27, 0xe5,
+	0xdc, 0x22, 0x8f, 0x0c, 0x59, 0xb7, 0x89, 0xc7, 0x9e, 0x98, 0x0f, 0xd8, 0xca, 0x62, 0x27, 0x68,
+	0x9f, 0x15, 0x22, 0x49, 0x3f, 0x68, 0xcf, 0x83, 0x80, 0xf5, 0xe3, 0x96, 0x1e, 0xfc, 0xa1, 0x94,
+	0x73, 0xbe, 0xb7, 0xa5, 0x42, 0xce, 0xa4, 0x6e, 0xa0, 0x77, 0x44, 0x24, 0xe9, 0x87, 0x53, 0xce,
+	0xd5, 0x9e, 0x83, 0x82, 0x66, 0x8b, 0x4b, 0xd5, 0x4d, 0x42, 0xe9, 0x65, 0x0d, 0xec, 0xde, 0x3f,
+	0x62, 0x2f, 0xb4, 0xef, 0xc4, 0xad, 0x53, 0xe1, 0xaf, 0xa4, 0x9c, 0x8b, 0xb1, 0x13, 0x6d, 0x31,
+	0x1b, 0xf8, 0x2c, 0x81, 0xfe, 0xaa, 0x3d, 0x8d, 0x4a, 0xb2, 0xaa, 0x03, 0x35, 0xf7, 0x7f, 0x22,
+	0x49, 0x7f, 0x23, 0xe5, 0x5c, 0x88, 0x33, 0x83, 0x65, 0x10, 0x1d, 0x49, 0xbf, 0x69, 0xfb, 0x52,
+	0x19, 0x41, 0x07, 0xc0, 0xc7, 0x52, 0xce, 0x19, 0xb2, 0x64, 0x73, 0xcc, 0xad, 0x20, 0xfa, 0xbb,
+	0xb6, 0xe5, 0xd4, 0x41, 0x4c, 0x85, 0x88, 0x51, 0xfc, 0xe3, 0xb6, 0x9b, 0x15, 0x60, 0xb5, 0xd5,
+	0xf2, 0xba, 0x68, 0x1d, 0xac, 0x3e, 0x9f, 0xb0, 0xd5, 0x4a, 0x20, 0x70, 0x6b, 0x7e, 0x32, 0xe5,
+	0x9c, 0x8b, 0xab, 0x80, 0x62, 0x43, 0xa0, 0x29, 0xe6, 0xef, 0xdb, 0x96, 0x53, 0xcc, 0x02, 0x0f,
+	0xa3, 0x00, 0x8b, 0x3a, 0x34, 0xd6, 0x9c, 0x7e, 0x6a, 0x50, 0xfc, 0xa1, 0x28, 0xf3, 0x42, 0xa8,
+	0xba, 0xf2, 0x4f, 0xdb, 0xde, 0xb3, 0x8e, 0xdb, 0x4a, 0xfe, 0x67, 0x06, 0xb5, 0xc7, 0x0a, 0xa3,
+	0x14, 0x04, 0xed, 0xff, 0x60, 0x10, 0xb1, 0xc3, 0x59, 0x47, 0xb7, 0x8e, 0x6e, 0x6e, 0x8d, 0x7e,
+	0x76, 0xd0, 0x44, 0x3b, 0x41, 0x0d, 0x17, 0xa1, 0xb2, 0xd9, 0xe7, 0x52, 0xce, 0x8d, 0x38, 0x9d,
+	0x69, 0x03, 0x80, 0xee, 0xc2, 0xdd, 0x0f, 0xd4, 0xb5, 0x5e, 0xca, 0xe7, 0x6d, 0x49, 0x05, 0xe3,
+	0x62, 0xbc, 0x21, 0xa7, 0x1c, 0xf5, 0x05, 0x7b, 0xad, 0x00, 0x30, 0xe7, 0x0f, 0x15, 0xa9, 0x5f,
+	0x1c, 0x5c, 0x6b, 0x56, 0x69, 0x09, 0xe1, 0xf1, 0xc7, 0x83, 0x5c, 0x4c, 0xff, 0xea, 0xc6, 0xfb,
+	0x97, 0x52, 0xce, 0xb5, 0x38, 0x03, 0x6a, 0x47, 0x73, 0x16, 0x96, 0xeb, 0x10, 0xc8, 0x10, 0xae,
+	0xb0, 0xe9, 0xff, 0x64, 0xd0, 0x1d, 0x98, 0x10, 0x2c, 0xc8, 0x9f, 0x0e, 0xda, 0x6b, 0x37, 0x90,
+	0xa2, 0xcc, 0xb5, 0x57, 0x7d, 0xfa, 0xe5, 0x41, 0x21, 0x26, 0x2d, 0x19, 0xc8, 0x57, 0x06, 0x4d,
+	0xba, 0xe7, 0x67, 0xf5, 0x9d, 0xf0, 0x4a, 0x8d, 0xd3, 0x3f, 0x4f, 0x39, 0x8f, 0xc4, 0xb9, 0x73,
+	0xa8, 0x49, 0xd7, 0x8f, 0x5b, 0xf4, 0x2f, 0x12, 0xfb, 0xce, 0xde, 0x9b, 0x90, 0xb0, 0x31, 0xc1,
+	0xfd, 0xe5, 0x60, 0xf4, 0xc4, 0x95, 0x2f, 0x92, 0xf4, 0xab, 0xb6, 0x04, 0x7d, 0xf3, 0x01, 0xec,
+	0xbe, 0xc6, 0xcb, 0xfa, 0x16, 0x1b, 0xfd, 0x2b, 0x7b, 0xe7, 0x1e, 0x8a, 0x56, 0x3f, 0xff, 0x6b,
+	0x83, 0xaa, 0xea, 0xbb, 0x8b, 0xb6, 0xeb, 0xbf, 0x6e, 0x6f, 0xc1, 0x84, 0x04, 0xfa, 0x8d, 0x94,
+	0x73, 0x33, 0xae, 0x72, 0x43, 0x57, 0x61, 0x92, 0xc4, 0x37, 0xfb, 0x85, 0xac, 0x46, 0x11, 0xec,
+	0xc2, 0xdc, 0x1a, 0xfd, 0x56, 0xca, 0x79, 0x82, 0xdc, 0x34, 0x5b, 0xbc, 0x77, 0xe6, 0x45, 0x1d,
+	0x72, 0xcc, 0xf3, 0x36, 0x82, 0x70, 0x8b, 0x7b, 0xad, 0xdc, 0x1a, 0x76, 0x5f, 0xdf, 0x4e, 0x24,
+	0xcc, 0x1e, 0x1c, 0xef, 0x77, 0xc1, 0xb6, 0xfa, 0x7b, 0x3b, 0x1f, 0xd9, 0x67, 0x68, 0xde, 0xc3,
+	0xfc, 0x83, 0xbd, 0xf2, 0xa1, 0x37, 0x79, 0x00, 0xf5, 0x9d, 0x13, 0x24, 0xa1, 0x18, 0x9d, 0xba,
+	0xfe, 0xd1, 0x0e, 0x2a, 0xeb, 0x96, 0x56, 0xce, 0x83, 0xa6, 0x12, 0xa4, 0xfc, 0xb3, 0xbd, 0xc7,
+	0x06, 0x10, 0xf8, 0xbc, 0x83, 0x45, 0x92, 0x87, 0xf4, 0xbb, 0x2f, 0x0d, 0xe4, 0x4d, 0xe8, 0x0a,
+	0xff, 0xc5, 0xf6, 0x6b, 0xa2, 0x7b, 0x55, 0x6d, 0xd8, 0xbf, 0xda, 0xc6, 0x2e, 0xe6, 0xb3, 0x10,
+	0x79, 0xfa, 0xc9, 0xd1, 0xbf, 0xd9, 0x29, 0xed, 0xb9, 0x36, 0x8f, 0xf4, 0xcd, 0x39, 0x5c, 0xcb,
+	0xbf, 0xdb, 0x56, 0x01, 0x27, 0xdd, 0x55, 0xc9, 0x36, 0x76, 0x38, 0x28, 0x41, 0xff, 0xc3, 0xb6,
+	0x8a, 0xfd, 0x64, 0x47, 0xe9, 0x80, 0x4e, 0xfa, 0xcf, 0x94, 0xf3, 0x68, 0xdc, 0x93, 0xda, 0x18,
+	0x35, 0xd3, 0x36, 0x1c, 0xb3, 0x3a, 0xcc, 0xa3, 0xff, 0x75, 0x12, 0x0e, 0x0e, 0xec, 0x0a, 0x8b,
+	0xa5, 0xec, 0xbf, 0x4f, 0xc2, 0xc5, 0x0e, 0x53, 0xf9, 0xec, 0x7f, 0x6c, 0x13, 0xda, 0x38, 0xbc,
+	0xf3, 0xae, 0x04, 0xa2, 0x82, 0xff, 0x6b, 0xe7, 0x94, 0x62, 0x3b, 0xaa, 0xdb, 0xb7, 0xab, 0x8d,
+	0x3d, 0xbe, 0x3f, 0xdd, 0x0f, 0x52, 0x4d, 0x55, 0x02, 0xf4, 0x03, 0x69, 0xcb, 0x1c, 0x6a, 0xa7,
+	0x4b, 0xc1, 0x23, 0xf7, 0xee, 0xd3, 0x6b, 0xac, 0x1b, 0xe1, 0xad, 0x2b, 0xfa, 0x8e, 0xb4, 0xf3,
+	0x38, 0xb9, 0xf1, 0x92, 0xea, 0x67, 0xbb, 0xb8, 0xb3, 0x7f, 0x28, 0x3d, 0xb0, 0x2d, 0xd7, 0x3d,
+	0x21, 0xf5, 0x53, 0x01, 0xec, 0xa8, 0x73, 0x6b, 0xf4, 0x9d, 0x36, 0x6a, 0xd0, 0x0d, 0x6e, 0xae,
+	0xce, 0xcb, 0x0d, 0xfa, 0xae, 0xb4, 0x15, 0x2a, 0x89, 0xdb, 0xaa, 0x8a, 0xff, 0xee, 0xb4, 0x6d,
+	0xd8, 0xd8, 0xcf, 0x98, 0xe1, 0x65, 0xe0, 0x73, 0xc8, 0x2c, 0xac, 0xe9, 0xd1, 0xf7, 0xa4, 0xad,
+	0x0c, 0x5d, 0xe4, 0x2d, 0x8f, 0x95, 0x79, 0xef, 0xc1, 0xd2, 0x8f, 0xd8, 0xb3, 0x58, 0x5c, 0x53,
+	0x1c, 0x7e, 0xd4, 0xd6, 0x15, 0x0d, 0x99, 0x67, 0x2d, 0x63, 0xac, 0xae, 0xa9, 0xd7, 0xef, 0x4d,
+	0x5b, 0xd9, 0xc4, 0x3c, 0x9e, 0x74, 0x73, 0x61, 0x37, 0x92, 0x70, 0xaa, 0x0c, 0xa0, 0x31, 0xe6,
+	0x21, 0x1c, 0xe9, 0x7f, 0xcc, 0x76, 0xcc, 0x30, 0xad, 0xf3, 0xc2, 0xa7, 0x3f, 0xf1, 0x92, 0xa0,
+	0x4e, 0x8b, 0xbe, 0x3f, 0x6d, 0x75, 0x57, 0xb9, 0x3a, 0x67, 0xd2, 0xcd, 0x32, 0x7d, 0x20, 0xfe,
+	0xc9, 0xa1, 0xfa, 0x18, 0x25, 0x40, 0x21, 0xad, 0x1b, 0xfd, 0x80, 0x6d, 0x45, 0xfb, 0xb1, 0x28,
+	0x1e, 0x1c, 0xca, 0xf1, 0x29, 0xe4, 0x43, 0xe9, 0x81, 0x4a, 0x66, 0xe1, 0x8a, 0xfc, 0x28, 0x08,
+	0x7d, 0xfa, 0xd3, 0x76, 0x40, 0x25, 0x40, 0x0a, 0x00, 0x39, 0xf3, 0x67, 0xd2, 0x03, 0xa5, 0xec,
+	0x3e, 0xa4, 0x81, 0x5e, 0x65, 0xff, 0x59, 0xdb, 0x25, 0xba, 0x35, 0xc4, 0xfe, 0x41, 0x87, 0xed,
+	0xcf, 0xd9, 0x7c, 0xbd, 0x3b, 0xf4, 0xbd, 0x5a, 0xdc, 0x71, 0x3f, 0x9f, 0xb6, 0xd2, 0xac, 0x32,
+	0x0c, 0x9e, 0x75, 0x4d, 0x8f, 0x43, 0x3f, 0x9c, 0xb6, 0xca, 0x93, 0x0d, 0x68, 0x1f, 0x79, 0xa2,
+	0x4c, 0x7f, 0x21, 0x6d, 0xb5, 0x74, 0xfa, 0x31, 0x3e, 0xde, 0x11, 0xa1, 0xbf, 0x78, 0xa2, 0x11,
+	0x30, 0xb4, 0xd5, 0x59, 0xf1, 0x23, 0xe9, 0x81, 0x4a, 0xdc, 0x7b, 0x3e, 0xa3, 0x1e, 0x21, 0xff,
+	0xf2, 0x90, 0x6d, 0x72, 0x5c, 0x56, 0x47, 0xd2, 0x42, 0xc8, 0x23, 0x51, 0xe1, 0xbe, 0xa4, 0xbf,
+	0x66, 0xcf, 0x96, 0x63, 0x51, 0x1d, 0x6f, 0xcd, 0xf5, 0x90, 0xb8, 0xe3, 0x3e, 0x9a, 0x76, 0xae,
+	0x93, 0xcb, 0x27, 0x83, 0xb4, 0xcd, 0x7e, 0x3d, 0x9d, 0xc8, 0xbb, 0xea, 0x56, 0xee, 0x06, 0xb6,
+	0x07, 0x58, 0xb1, 0x7f, 0xcb, 0xf6, 0x4a, 0xb2, 0x49, 0x8a, 0x24, 0xbe, 0x15, 0xf0, 0xdb, 0xb6,
+	0x55, 0x71, 0x23, 0x14, 0xf0, 0x79, 0x94, 0x57, 0xd6, 0xcf, 0xc5, 0x7f, 0xc7, 0x76, 0xbe, 0xfd,
+	0xd4, 0xc8, 0xc2, 0x7c, 0xcc, 0xde, 0x8b, 0xfa, 0x11, 0xf5, 0x31, 0x76, 0x62, 0x1d, 0x1e, 0xd2,
+	0xdf, 0xb3, 0x63, 0x11, 0x9f, 0x98, 0x6f, 0x8a, 0xaa, 0xcc, 0xb2, 0x9a, 0xbb, 0xc3, 0x8e, 0xb8,
+	0xe7, 0x3e, 0xad, 0x7a, 0x74, 0xfa, 0x09, 0x5b, 0x95, 0xe7, 0xdb, 0xcc, 0xdf, 0x62, 0x7e, 0x6d,
+	0x1f, 0x22, 0x3b, 0xcf, 0x8e, 0xa1, 0x6e, 0x7d, 0x32, 0x6d, 0xe5, 0xd2, 0x5c, 0x18, 0x44, 0x51,
+	0x02, 0xa5, 0x6c, 0x02, 0xc0, 0x4f, 0xd9, 0xfb, 0x64, 0x10, 0x78, 0x28, 0xf8, 0x43, 0x2d, 0xf2,
+	0xd3, 0xb6, 0x6e, 0x83, 0xc8, 0xbd, 0x16, 0xf7, 0x71, 0xe7, 0x7d, 0xc6, 0xce, 0x97, 0x43, 0xa6,
+	0x66, 0x7e, 0x03, 0x82, 0x54, 0x4b, 0xfd, 0x6c, 0xc2, 0x7b, 0x80, 0xce, 0xb3, 0xe3, 0x5e, 0x2c,
+	0x01, 0xfa, 0x90, 0x79, 0xf4, 0xf3, 0x76, 0x48, 0x21, 0x6c, 0x3f, 0x68, 0x61, 0xd6, 0x8f, 0xe7,
+	0xfd, 0x42, 0xda, 0xb9, 0x4b, 0x1e, 0x3f, 0x51, 0x12, 0xfe, 0xdb, 0xf6, 0xab, 0xc1, 0x41, 0xab,
+	0xc2, 0xa4, 0xaa, 0x74, 0x5f, 0x1c, 0xd8, 0xfa, 0x6b, 0xbc, 0x09, 0xdd, 0x46, 0x18, 0xb0, 0x4a,
+	0x8e, 0x45, 0xfa, 0xd9, 0x35, 0xfd, 0x23, 0xdb, 0xb1, 0x78, 0x1b, 0x53, 0xdd, 0x4a, 0x2c, 0xf2,
+	0x6a, 0x10, 0xd6, 0xd4, 0x5d, 0xef, 0x2f, 0xd9, 0xf1, 0x63, 0x61, 0x4a, 0x75, 0x51, 0x95, 0x88,
+	0xf8, 0xb3, 0x84, 0x4f, 0xac, 0x86, 0x6b, 0xbb, 0x12, 0x40, 0x15, 0xe8, 0x9a, 0x50, 0xfd, 0x8a,
+	0xed, 0x5d, 0xfd, 0xca, 0x44, 0xfc, 0x02, 0x82, 0x17, 0x48, 0xfa, 0x55, 0xdb, 0x68, 0x05, 0x2e,
+	0x9f, 0x13, 0xdd, 0x36, 0x37, 0xb7, 0xe0, 0x10, 0x8e, 0x13, 0x7e, 0xad, 0x2f, 0xa4, 0x15, 0x4c,
+	0xbd, 0xfb, 0xa7, 0xb6, 0xf3, 0xd7, 0x13, 0x89, 0x82, 0x85, 0xfa, 0x71, 0x76, 0xbc, 0x79, 0xe8,
+	0x37, 0xec, 0x7d, 0x9a, 0x7c, 0xd9, 0x01, 0x7a, 0x52, 0xdd, 0x20, 0xfe, 0x75, 0xd2, 0x3b, 0x36,
+	0x6a, 0xdb, 0x17, 0xe0, 0x6a, 0xfa, 0x4d, 0x3b, 0x57, 0x6f, 0xb0, 0x48, 0x5a, 0x0d, 0xc7, 0xdf,
+	0xd8, 0xd9, 0xa8, 0xd8, 0x3c, 0xda, 0x0f, 0xd4, 0xa3, 0x09, 0x2d, 0xfd, 0x5b, 0xb6, 0xf5, 0xcd,
+	0x31, 0x17, 0x7d, 0xbf, 0xc6, 0xba, 0xda, 0x64, 0x7f, 0x6b, 0x63, 0x8a, 0x01, 0x8c, 0xde, 0x0f,
+	0xb2, 0x81, 0x27, 0x60, 0x73, 0x69, 0x39, 0x7f, 0x67, 0x63, 0xf0, 0x1c, 0x0b, 0x35, 0xd9, 0xaa,
+	0xe2, 0x91, 0xa4, 0xdf, 0x49, 0xaf, 0xfc, 0xe1, 0x18, 0x99, 0xcc, 0x33, 0xa1, 0x6e, 0x37, 0x2f,
+	0x90, 0x59, 0xf3, 0xdf, 0x3c, 0xfa, 0x98, 0x27, 0xd3, 0x31, 0x69, 0x33, 0x4f, 0x53, 0xce, 0x22,
+	0x99, 0x8f, 0x09, 0xea, 0x10, 0x4b, 0xd3, 0x89, 0x81, 0x30, 0x8d, 0x7a, 0x61, 0x23, 0x26, 0x61,
+	0x35, 0xa7, 0xa3, 0x4e, 0x86, 0x2c, 0xc5, 0x34, 0x2b, 0x24, 0xe8, 0x98, 0x73, 0x8a, 0x38, 0xbd,
+	0x69, 0x20, 0x34, 0x51, 0xca, 0xb8, 0x73, 0x9a, 0x2c, 0xc6, 0xf4, 0x5e, 0x5b, 0x4b, 0x27, 0x12,
+	0x8c, 0x5e, 0x2b, 0x43, 0x27, 0x13, 0x0c, 0xeb, 0xbd, 0xa4, 0xa9, 0x04, 0xe3, 0x50, 0xb4, 0xcc,
+	0x03, 0x18, 0xe2, 0x50, 0x32, 0x13, 0x33, 0x0a, 0xac, 0x4b, 0xa7, 0x13, 0xda, 0xe0, 0xa3, 0x38,
+	0x7c, 0x54, 0x38, 0x93, 0xa0, 0x43, 0x4a, 0x44, 0xb7, 0xd0, 0xd9, 0x01, 0xba, 0x5a, 0xef, 0x9c,
+	0xb3, 0x44, 0x68, 0x82, 0x9e, 0x67, 0x2d, 0x3a, 0xef, 0x9c, 0x27, 0x99, 0xbe, 0xb5, 0xaa, 0x72,
+	0x51, 0x08, 0x39, 0xa5, 0xce, 0x25, 0x72, 0x6e, 0x28, 0x57, 0x37, 0xd4, 0x0b, 0xce, 0x45, 0x72,
+	0x76, 0x28, 0x40, 0x65, 0x5c, 0xe7, 0x44, 0x01, 0xb0, 0x49, 0x79, 0x48, 0x17, 0x9d, 0x33, 0x64,
+	0xd9, 0xd2, 0xca, 0xe7, 0xfa, 0x3d, 0x28, 0x4e, 0x97, 0x12, 0x2c, 0x75, 0xbe, 0xd2, 0x11, 0xb7,
+	0x3c, 0xb0, 0x16, 0xa8, 0x11, 0xa7, 0x12, 0xd4, 0xcd, 0xbc, 0x5b, 0xe2, 0x5e, 0x95, 0x9e, 0x1e,
+	0xb0, 0x07, 0x66, 0x7e, 0x9a, 0x49, 0xb8, 0xa0, 0x97, 0x80, 0xe8, 0x99, 0x44, 0xfc, 0x40, 0x7e,
+	0xa0, 0x67, 0x9d, 0x65, 0xb2, 0x60, 0x85, 0x94, 0x27, 0x4a, 0x5b, 0x41, 0x8b, 0x9e, 0x73, 0x2e,
+	0x90, 0x33, 0xbd, 0xf0, 0x53, 0x8f, 0x4d, 0x0a, 0xa1, 0xe8, 0x08, 0x8f, 0xd7, 0x38, 0x3d, 0xbf,
+	0xe2, 0x93, 0x79, 0x28, 0xed, 0xfa, 0x21, 0xba, 0x79, 0x7f, 0x30, 0x97, 0xdf, 0x37, 0x0f, 0x50,
+	0x28, 0x99, 0x81, 0xab, 0xc2, 0x7a, 0xb1, 0xb4, 0xb7, 0xbb, 0xba, 0xa3, 0xde, 0x3b, 0x02, 0xca,
+	0x83, 0xbd, 0xe2, 0xce, 0x9a, 0x7a, 0xef, 0x08, 0x2e, 0x37, 0x0f, 0xb6, 0x77, 0xd6, 0xe8, 0x88,
+	0xc1, 0x9b, 0xa4, 0x4e, 0x89, 0x33, 0x4d, 0x26, 0x80, 0x02, 0xbe, 0x9c, 0x5e, 0xe1, 0xea, 0xa9,
+	0xbd, 0x9e, 0xaf, 0xd4, 0x56, 0x6f, 0xa5, 0x2e, 0x93, 0x05, 0x80, 0x94, 0x0e, 0xb2, 0xee, 0xfe,
+	0xf3, 0x85, 0x75, 0x33, 0xf7, 0x39, 0x72, 0x3a, 0x41, 0xb6, 0x02, 0x3a, 0x35, 0xc0, 0xb4, 0x62,
+	0x37, 0xbd, 0xf2, 0xc1, 0x14, 0xa1, 0xca, 0x8d, 0x45, 0x5e, 0x0e, 0xc2, 0x0a, 0xce, 0x72, 0x86,
+	0x2c, 0xf7, 0xd3, 0xcc, 0xae, 0x3d, 0x47, 0x4e, 0x0f, 0x61, 0xe1, 0x03, 0x9a, 0xd4, 0x50, 0xe6,
+	0x21, 0x0f, 0xa3, 0x76, 0x44, 0xd3, 0x43, 0x85, 0xea, 0x1d, 0x3d, 0x8c, 0x85, 0x19, 0x6d, 0x74,
+	0xe5, 0x9b, 0x29, 0xb2, 0x68, 0xf3, 0x8c, 0x21, 0xe2, 0xd7, 0x84, 0x12, 0x64, 0xa3, 0xe5, 0x15,
+	0x72, 0x61, 0x18, 0x37, 0x4e, 0x56, 0x14, 0x8e, 0x6f, 0x17, 0x87, 0x0a, 0xe0, 0x0f, 0x8f, 0x04,
+	0x47, 0x0c, 0x64, 0xfd, 0xf3, 0xc3, 0x30, 0xf1, 0x9d, 0xdd, 0x11, 0x08, 0x9a, 0x61, 0x08, 0xf5,
+	0x92, 0xe0, 0xa8, 0x73, 0x9d, 0x5c, 0x19, 0xc6, 0x4e, 0x24, 0x5f, 0x3a, 0xb6, 0xf2, 0xe3, 0x29,
+	0x32, 0xb7, 0x5e, 0xe0, 0x52, 0xdd, 0x0f, 0xc0, 0xf5, 0x9d, 0x26, 0x8b, 0x49, 0x8a, 0x59, 0xda,
+	0x59, 0x72, 0xaa, 0x8f, 0x61, 0x9e, 0xd6, 0xa3, 0xfd, 0xfb, 0x78, 0xab, 0x95, 0x8e, 0x79, 0x56,
+	0x7c, 0x86, 0x2c, 0xf7, 0x4b, 0xc4, 0x0a, 0x46, 0x47, 0xf0, 0x59, 0x7a, 0x1f, 0xab, 0xdd, 0xa4,
+	0xa3, 0x2b, 0xef, 0x1b, 0x25, 0xb3, 0xeb, 0xe6, 0x84, 0x82, 0x6a, 0x01, 0xd2, 0x26, 0x18, 0xad,
+	0x1e, 0x21, 0x97, 0x93, 0xf4, 0x35, 0x26, 0xbc, 0xae, 0x9b, 0x6b, 0x37, 0xe3, 0xd7, 0x1f, 0x28,
+	0xd4, 0xc8, 0x73, 0x49, 0xd4, 0xdd, 0xa7, 0xf1, 0xf5, 0x0b, 0xf5, 0x72, 0x03, 0x1d, 0xc5, 0x27,
+	0xf4, 0x43, 0x01, 0xfb, 0x2c, 0x6a, 0xd0, 0x31, 0x7c, 0xc3, 0x27, 0xc9, 0xbf, 0x73, 0x27, 0x96,
+	0x3f, 0x8e, 0xb6, 0x49, 0xb0, 0xd7, 0x8f, 0xd5, 0xe3, 0x19, 0x3a, 0x31, 0x38, 0xf7, 0x6a, 0x59,
+	0x48, 0xd1, 0x91, 0x5d, 0x6c, 0x73, 0xe9, 0x24, 0x1a, 0x2f, 0x01, 0x88, 0x7b, 0x60, 0x3a, 0x05,
+	0xe1, 0x96, 0x64, 0xee, 0x88, 0x06, 0x3b, 0x12, 0x68, 0x77, 0x32, 0xa8, 0x36, 0x34, 0xad, 0x71,
+	0xed, 0x9f, 0x1e, 0xb4, 0xda, 0x7d, 0xe1, 0xd7, 0xe8, 0x0c, 0x3a, 0x39, 0x41, 0x7f, 0x50, 0xe7,
+	0xdc, 0xa3, 0xb3, 0xf8, 0x1a, 0x47, 0x82, 0x51, 0x6a, 0x37, 0x21, 0x9f, 0xcd, 0x0d, 0xe1, 0x88,
+	0x9a, 0xbf, 0xed, 0xd3, 0x79, 0xe7, 0x1a, 0xb9, 0x94, 0xe4, 0x0c, 0xbe, 0x9a, 0xb0, 0x34, 0xe8,
+	0xa7, 0x21, 0xef, 0x35, 0x2c, 0x0f, 0x9a, 0x39, 0xbb, 0xef, 0x96, 0x9a, 0x2c, 0xaa, 0xaf, 0xd7,
+	0x6a, 0xf4, 0xd4, 0xca, 0xfb, 0x53, 0x64, 0xb6, 0xc0, 0xba, 0x7b, 0x61, 0x85, 0x87, 0x25, 0xc9,
+	0xa4, 0x8e, 0x56, 0x9b, 0x62, 0xe2, 0x02, 0x23, 0x2b, 0xc1, 0xd8, 0xe4, 0x90, 0x93, 0x60, 0x19,
+	0x49, 0x3a, 0x5c, 0x35, 0xd4, 0x2b, 0x0d, 0x83, 0x9c, 0x0d, 0x26, 0x3c, 0x5e, 0xa1, 0x23, 0x68,
+	0xe9, 0x21, 0xe3, 0x74, 0x2d, 0x19, 0x5d, 0xf9, 0xf8, 0x08, 0x99, 0x29, 0xb0, 0xee, 0x66, 0x10,
+	0x54, 0x22, 0xd3, 0x78, 0xc0, 0x00, 0x3b, 0x56, 0x97, 0xc9, 0x42, 0x4c, 0x5a, 0x13, 0x91, 0x7a,
+	0x54, 0x95, 0x32, 0xaa, 0xf6, 0x95, 0xe6, 0x74, 0x82, 0xae, 0x32, 0x5d, 0x96, 0xd5, 0xe8, 0x48,
+	0x42, 0x0c, 0xde, 0xdf, 0x05, 0xf2, 0x68, 0x02, 0xde, 0xab, 0xe4, 0x63, 0x03, 0x74, 0x55, 0xc9,
+	0xc7, 0xf1, 0xcd, 0x44, 0x9b, 0x0e, 0xd9, 0x7f, 0xc2, 0xd8, 0x27, 0xae, 0xa4, 0xa6, 0x90, 0x4e,
+	0x26, 0x38, 0x56, 0x11, 0xa6, 0x53, 0x03, 0x92, 0xa0, 0x8e, 0x92, 0x81, 0x79, 0x55, 0xc5, 0x9c,
+	0x4e, 0xa8, 0x0f, 0x74, 0x2c, 0x8e, 0x33, 0x49, 0x7b, 0x65, 0xb7, 0x9e, 0xa1, 0xf7, 0x54, 0x56,
+	0xd1, 0xa4, 0xbe, 0xf7, 0x74, 0x2b, 0x18, 0x2a, 0x86, 0x39, 0x50, 0x35, 0x79, 0x62, 0xf6, 0x02,
+	0x83, 0x2e, 0x91, 0x97, 0x1b, 0xb4, 0xaa, 0xb2, 0x18, 0x33, 0xc1, 0x65, 0xe4, 0xdd, 0xbd, 0x73,
+	0x87, 0xd6, 0x56, 0x7e, 0x2a, 0x45, 0x66, 0xf2, 0xdd, 0xe8, 0x45, 0x6f, 0x27, 0xa8, 0xa1, 0x0f,
+	0xe7, 0x08, 0xd9, 0xb1, 0x1d, 0x48, 0xc9, 0xcc, 0x8e, 0xd5, 0x48, 0xd0, 0x14, 0x68, 0xad, 0x29,
+	0xd5, 0x2a, 0x92, 0xb0, 0xda, 0xee, 0xc4, 0x8d, 0xd7, 0x48, 0xef, 0xb2, 0x98, 0xcd, 0xd3, 0x51,
+	0x68, 0x3e, 0xd5, 0xa5, 0xca, 0x8e, 0x63, 0xd0, 0x7c, 0xda, 0x32, 0x21, 0xff, 0x2d, 0x59, 0x44,
+	0x88, 0x37, 0xbc, 0x25, 0xb0, 0xbc, 0xf2, 0x8e, 0x19, 0x32, 0x8a, 0x5f, 0xa4, 0x4c, 0x92, 0x51,
+	0xad, 0xd0, 0x04, 0x19, 0x29, 0xc9, 0x90, 0xa6, 0xe0, 0xcf, 0x6a, 0x4d, 0xd0, 0x34, 0xfc, 0xd9,
+	0xf6, 0x25, 0x1d, 0x81, 0x3f, 0x87, 0x42, 0xd2, 0x51, 0xf8, 0xb3, 0xc6, 0x8f, 0xe9, 0x18, 0xfc,
+	0xd9, 0x69, 0x37, 0xe8, 0x38, 0x8c, 0xdf, 0x11, 0x55, 0xc8, 0x4d, 0xe3, 0x24, 0x5d, 0x82, 0x14,
+	0x44, 0xc8, 0xb8, 0xfa, 0x58, 0x4f, 0xbd, 0xfc, 0x6f, 0x7d, 0xe0, 0xa7, 0xba, 0x03, 0xfd, 0x2d,
+	0x1e, 0x9d, 0x56, 0x9d, 0x65, 0xef, 0xeb, 0x3c, 0x3a, 0x03, 0x62, 0xb7, 0x84, 0xa4, 0xb3, 0xce,
+	0x14, 0x19, 0x5b, 0x0b, 0x2a, 0x35, 0x4e, 0xe7, 0x60, 0x86, 0x5c, 0x28, 0x24, 0x9d, 0x07, 0xee,
+	0x3e, 0xf7, 0xd5, 0x2b, 0xfe, 0xab, 0xbd, 0x8f, 0xec, 0xe8, 0x02, 0x36, 0x31, 0x2c, 0x92, 0xab,
+	0xe5, 0x32, 0xb4, 0x78, 0x53, 0x64, 0x2c, 0xcf, 0x8e, 0xb7, 0x5a, 0x74, 0x51, 0xff, 0x2d, 0xb5,
+	0xe8, 0x92, 0xfa, 0x4a, 0x40, 0x7d, 0x79, 0x47, 0x97, 0x41, 0x44, 0x69, 0xbf, 0xe8, 0xea, 0xef,
+	0x9d, 0xe8, 0x25, 0x94, 0xb9, 0xb9, 0x1d, 0x13, 0x2e, 0x03, 0x61, 0x7b, 0x77, 0x3f, 0x26, 0x5c,
+	0x01, 0xc2, 0xe1, 0x76, 0x8f, 0x70, 0x15, 0x08, 0x6b, 0xeb, 0x6f, 0x8c, 0x09, 0xd7, 0xd0, 0x21,
+	0x07, 0xf7, 0x63, 0xc2, 0x23, 0xe8, 0x64, 0x51, 0xe5, 0x31, 0xe5, 0x3a, 0x84, 0x41, 0xa9, 0x15,
+	0x5f, 0x3f, 0x0a, 0xe7, 0x00, 0xb5, 0x94, 0x98, 0x76, 0x43, 0xf5, 0x81, 0xb1, 0xd5, 0x62, 0xc6,
+	0x4d, 0x70, 0xa5, 0xb6, 0x55, 0x4c, 0xbc, 0xa5, 0x4e, 0x0d, 0x3d, 0x2b, 0xc6, 0x9c, 0x15, 0x50,
+	0x67, 0x4b, 0xc8, 0x98, 0xf0, 0x18, 0xbe, 0x2c, 0x09, 0x56, 0x8d, 0x49, 0x8f, 0x63, 0x03, 0x17,
+	0x5a, 0xa0, 0x27, 0xf0, 0x85, 0x6c, 0xee, 0xc7, 0x84, 0xdb, 0xa0, 0x8e, 0x65, 0xed, 0x98, 0x81,
+	0xaf, 0x91, 0x18, 0xab, 0x7b, 0x5c, 0x7d, 0x37, 0x18, 0x73, 0xef, 0xa8, 0xa6, 0xf5, 0x78, 0xab,
+	0xb7, 0xd8, 0xbb, 0x9a, 0x64, 0xad, 0xff, 0x9e, 0xfa, 0x02, 0x41, 0x79, 0x25, 0xa6, 0x3e, 0x05,
+	0x92, 0xf5, 0xc9, 0x14, 0x82, 0xd3, 0x55, 0xdf, 0xa6, 0xa9, 0x57, 0x50, 0xe8, 0x06, 0xe4, 0xcf,
+	0x21, 0x5c, 0x33, 0x7a, 0x13, 0xaa, 0xa4, 0xe6, 0x3f, 0x60, 0x12, 0x5f, 0x8e, 0x4c, 0x00, 0xb6,
+	0xa0, 0x25, 0xd2, 0x80, 0xcd, 0x30, 0x68, 0xfb, 0x95, 0x7e, 0xc4, 0xb6, 0x35, 0xc5, 0x86, 0x08,
+	0x07, 0xa6, 0x78, 0xd6, 0xe2, 0x3f, 0x10, 0x83, 0xe3, 0xef, 0x5b, 0x2a, 0x94, 0x98, 0xf0, 0x65,
+	0x3f, 0x60, 0xc7, 0x12, 0xb0, 0xc6, 0xc2, 0x46, 0x3f, 0x3f, 0x6f, 0xa9, 0x88, 0x6b, 0x5c, 0xf5,
+	0xa5, 0x48, 0x58, 0xa1, 0x00, 0xbd, 0xdf, 0x09, 0x08, 0x23, 0xe5, 0x39, 0x28, 0xa7, 0x09, 0x4b,
+	0x0c, 0x01, 0x15, 0xa1, 0x9c, 0x26, 0xad, 0x31, 0x04, 0x55, 0xb2, 0xa6, 0x43, 0x8b, 0x0c, 0xc1,
+	0xec, 0x5b, 0x18, 0xb4, 0xca, 0x10, 0xcc, 0x81, 0xa5, 0x92, 0xb2, 0xcc, 0x10, 0xd0, 0xa1, 0x25,
+	0x08, 0xad, 0x33, 0x04, 0xf3, 0x00, 0xc2, 0xd2, 0xfa, 0x60, 0x35, 0x66, 0xbc, 0x49, 0x9d, 0x81,
+	0x6a, 0xa2, 0xec, 0x0e, 0x63, 0xbf, 0x19, 0xf6, 0x4b, 0xc1, 0xfa, 0x3c, 0x34, 0xe6, 0xbc, 0x25,
+	0xde, 0x77, 0x7d, 0x8c, 0xb7, 0x82, 0x44, 0x50, 0xc1, 0x4d, 0x8c, 0xd3, 0x5f, 0x52, 0x52, 0x17,
+	0xdf, 0xda, 0x07, 0xf6, 0xb0, 0xc1, 0xf8, 0xde, 0x65, 0x2e, 0xfe, 0x90, 0x35, 0xa6, 0x33, 0x08,
+	0x91, 0xc2, 0xe0, 0x67, 0xaa, 0x31, 0xe0, 0x48, 0x9d, 0x64, 0x6b, 0x27, 0xf1, 0xcb, 0xd0, 0x0b,
+	0x6f, 0xd8, 0x5f, 0x9a, 0xc6, 0xac, 0x0a, 0x68, 0x74, 0xd8, 0xf7, 0x29, 0x69, 0xcc, 0xe5, 0xce,
+	0x24, 0x19, 0xc9, 0xb3, 0x63, 0xfa, 0xed, 0x89, 0x95, 0x8f, 0xa6, 0xc8, 0xb8, 0x32, 0x34, 0xe4,
+	0x16, 0xf5, 0x4f, 0x9d, 0x32, 0x03, 0xc9, 0xe8, 0xcb, 0xfa, 0x88, 0x58, 0x28, 0x52, 0xb0, 0x65,
+	0x2d, 0x22, 0x06, 0x16, 0x4d, 0x43, 0x29, 0xb6, 0xa8, 0x2a, 0x92, 0xe8, 0x48, 0x9f, 0x04, 0x08,
+	0x1d, 0xf5, 0x85, 0x99, 0x2d, 0x41, 0xf8, 0x15, 0x3a, 0xd6, 0x27, 0x76, 0x47, 0xd4, 0xea, 0x52,
+	0x7d, 0x98, 0x62, 0x51, 0x21, 0x1a, 0xe8, 0xc4, 0xd1, 0x38, 0x7e, 0x53, 0xf7, 0xd4, 0xff, 0x05,
+	0x00, 0x00, 0xff, 0xff, 0x90, 0x86, 0x56, 0x7a, 0xd9, 0x3f, 0x00, 0x00,
 }

+ 33 - 10
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/common.proto

@@ -57,10 +57,12 @@ enum ResType {
     Res_HightSkillExp               = 47; //高级技能经验
     Res_Skill_Equip                 = 48; //神器
     Res_Head_Item                   = 49; //称号
-
     Res_IdolSeason                  = 50; //偶像季
     Res_WishBox                     = 51; //许愿宝箱
     Res_WishBox_Select              = 52; //许愿自选宝箱
+    Res_CreditRecharge              = 53; // 免费充值额度(充值钱包中能够获得的资源)
+    Res_ROCoin                      = 54; // RO币
+    Res_BoliShopExp                 = 55; // boli商城等级对应的经验
 }
 
 //Count表示N次操作,Num表示目标个数 [枚举:目标:条件]
@@ -150,18 +152,21 @@ enum TaskType {
     Eve_Month_Card_High       = 85;     // 累计购买至尊月卡
     Eve_Battle_Role_Quality   = 86;     // 上阵成员全身品质装备
 
-    Eve_DaoChange_Win_Add  = 87;     // 道场累计胜利次数
-    Eve_Pet_Id_Cnt  = 88;     // 拥有指定宠物数量 (包括羁绊)
-    Eve_Arean_Dan  = 89;     // 英灵殿达到指定的段位
-    Eve_Pet_Battle_Quality_cnt  = 90;     // 	X个上阵的宠物装备6件X品质的宠物印记
+    Eve_DaoChange_Win_Add               = 87;     // 道场累计胜利次数
+    Eve_Pet_Id_Cnt                      = 88;     // 拥有指定宠物数量 (包括羁绊)
+    Eve_Arean_Dan                       = 89;     // 英灵殿达到指定的段位
+    Eve_Pet_Battle_Quality_cnt          = 90;     // 	X个上阵的宠物装备6件X品质的宠物印记
 
-    Eve_Evil_Fight_Lvl          = 91; //恶魔协会到达X级
+    Eve_Evil_Fight_Lvl                  = 91; //恶魔协会到达X级
     Eve_Expedition_Battle_Type          = 92; //远征之门通关X关
-    Eve_Head_Icon_Cont             = 93; //当前拥有的头像框
+    Eve_Head_Icon_Cont                  = 93; //当前拥有的头像框
+
+    Eve_Skill_Advance_Num               = 94; //x个技能进阶
+    Eve_Five_Artifact_Activate          = 95; //装备X个激活的五星神器(5颗星全部激活)
+    Eve_Arean_First_Cnt                 = 96; // 英灵殿获得x次第一
 
-    Eve_Skill_Advance_Num   = 94;           //x个技能进阶
-    Eve_Five_Artifact_Activate   = 95;           //装备X个激活的五星神器(5颗星全部激活)
-    Eve_Arean_First_Cnt = 96;                   // 英灵殿获得x次第一
+    BT_ZhenJiaRecharge                  = 100; // bt真假累计充值
+    BT_ROCoinRecharge                   = 101; // bt Ro币累计获得
 
 }
 //超值礼包触发条件
@@ -351,6 +356,13 @@ enum GlobalType {
     Global_PetQiyue_Slot_Unlock_Cost                            = 350; //宠物契约槽位解锁消耗
     Global_PetQiyue_Nature_Attr                                 = 351; //宠物契约相同属性额外继承属性比例
     Global_Card_Level_Exchange                                  = 352; //卡片等级置换
+    Global_CreditRechargeVip_Factor                             = 353; // 充值钱包 免费充值额度神域经验比例
+    Global_CreditRechargeInitMax                                = 354; // 充值钱包 初始化最大额度
+    Global_FastBattleTime                                       = 355; // 限时战斗倍速体验卡持续时间
+    Global_RmbToROCoinFactor                                    = 356; // 限时战斗倍速体验卡持续时间
+    Global_ClimbingTowerDayReward                               = 357; // 试炼馈赠(层数:免费充值额度数量)
+    Global_RoCoinToBoliExp_Factor                               = 358; // RO币兑换波利商城经验比例
+    Global_WorldBossChallengeCost                               = 362; // 挑战者大厅购买次数消耗
 }
 
 
@@ -385,6 +397,8 @@ enum MailType {
     MailType_RushSkill              = 24; //技能冲榜
     MailType_GuildDemon             = 25; //公会魔王
     MailType_Idol                   = 26; //偶像季
+    MailType_BoliSHop               = 27; // bt波利商城邮件
+    MailType_SpecialPrivilege       = 28; //
 }
 //聊天类型
 enum ChatMessageType {
@@ -459,6 +473,10 @@ enum EActivityType {
     EActivityType_Wheel                     = 13; //活动转盘
     EActivityType_Summon                    = 14; //活动召唤
     EActivityType_SignIn                    = 15; //活动签到
+
+    EActivityType_BT_ROCoinRecharge         = 20; // bt服RO币每日累计充值
+    EActivityType_BT_ZhenJiaRecharge        = 21; // bt服真假累计充值活动
+    EActivityType_BT_SmashEgg               = 22; // 砸蛋活动
 }
 
 enum PayOrderState {
@@ -484,6 +502,11 @@ enum PayGoodsType {
     EPayType_RushSkill            = 11; //技能冲榜
     EPayType_RushIdol             = 12; //偶像季
     EPayType_NBH5                 = 50; //畅梦h5
+
+    EPayType_CreditRecharge       = 100; // 充值钱包商店
+    EPayType_SpecialPrivilege     = 101; // 特权卡商店
+    EPayType_PassCheck            = 102; // RO通行证
+    EPayType_BTRecharge100        = 103; // bt百元大礼包充值
 }
 
 enum MysqlLogType {

+ 256 - 6
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/config_csv.go

@@ -2,6 +2,9 @@ package serverproto
 
 const (
 	CFG_ActiveCodeCfg = "ActiveCodeCfg.csv"
+	CFG_ActivitiesBtChargeTaskGoldCfg = "ActivitiesBtChargeTaskGoldCfg.csv"
+	CFG_ActivitiesBtChargeTaskRoMoneyCfg = "ActivitiesBtChargeTaskRoMoneyCfg.csv"
+	CFG_ActivitiesBtFirstChargeCfg = "ActivitiesBtFirstChargeCfg.csv"
 	CFG_ActivitiesCfg = "ActivitiesCfg.csv"
 	CFG_ActivitiesCollectionCfg = "ActivitiesCollectionCfg.csv"
 	CFG_ActivitiesDiscountsCfg = "ActivitiesDiscountsCfg.csv"
@@ -23,6 +26,9 @@ const (
 	CFG_ArenaRewardCfg = "ArenaRewardCfg.csv"
 	CFG_ArtifactCfg = "ArtifactCfg.csv"
 	CFG_ArtifactExpCfg = "ArtifactExpCfg.csv"
+	CFG_BoliShopCfg = "BoliShopCfg.csv"
+	CFG_BoliVipCfg = "BoliVipCfg.csv"
+	CFG_BTSmashEggsCfg = "BTSmashEggsCfg.csv"
 	CFG_CardCfg = "CardCfg.csv"
 	CFG_CardIdentification = "CardIdentification.csv"
 	CFG_CardReset = "CardReset.csv"
@@ -79,6 +85,7 @@ const (
 	CFG_ParterCfg = "ParterCfg.csv"
 	CFG_ParterProgressCfg = "ParterProgressCfg.csv"
 	CFG_ParterSkillTreeCfg = "ParterSkillTreeCfg.csv"
+	CFG_PassCheckCfg = "PassCheckCfg.csv"
 	CFG_PassiveSkillCfg = "PassiveSkillCfg.csv"
 	CFG_PetBattleCfg = "PetBattleCfg.csv"
 	CFG_PetCfg = "PetCfg.csv"
@@ -89,6 +96,8 @@ const (
 	CFG_PetpartnerCfg = "PetpartnerCfg.csv"
 	CFG_PetProgressCfg = "PetProgressCfg.csv"
 	CFG_PresspointPvPCfg = "PresspointPvPCfg.csv"
+	CFG_PrivilegeCardCfg = "PrivilegeCardCfg.csv"
+	CFG_PurseShopCfg = "PurseShopCfg.csv"
 	CFG_QualityPointCfg = "QualityPointCfg.csv"
 	CFG_QuickBattleCostCfg = "QuickBattleCostCfg.csv"
 	CFG_RobotCfg = "RobotCfg.csv"
@@ -136,6 +145,9 @@ var CFGNameList = map[string]func(path string){}
 
 func configNameListInit(){
 	CFGNameList["ActiveCodeCfg"] = ActiveCodeCfgLoad
+	CFGNameList["ActivitiesBtChargeTaskGoldCfg"] = ActivitiesBtChargeTaskGoldCfgLoad
+	CFGNameList["ActivitiesBtChargeTaskRoMoneyCfg"] = ActivitiesBtChargeTaskRoMoneyCfgLoad
+	CFGNameList["ActivitiesBtFirstChargeCfg"] = ActivitiesBtFirstChargeCfgLoad
 	CFGNameList["ActivitiesCfg"] = ActivitiesCfgLoad
 	CFGNameList["ActivitiesCollectionCfg"] = ActivitiesCollectionCfgLoad
 	CFGNameList["ActivitiesDiscountsCfg"] = ActivitiesDiscountsCfgLoad
@@ -157,6 +169,9 @@ func configNameListInit(){
 	CFGNameList["ArenaRewardCfg"] = ArenaRewardCfgLoad
 	CFGNameList["ArtifactCfg"] = ArtifactCfgLoad
 	CFGNameList["ArtifactExpCfg"] = ArtifactExpCfgLoad
+	CFGNameList["BoliShopCfg"] = BoliShopCfgLoad
+	CFGNameList["BoliVipCfg"] = BoliVipCfgLoad
+	CFGNameList["BTSmashEggsCfg"] = BTSmashEggsCfgLoad
 	CFGNameList["CardCfg"] = CardCfgLoad
 	CFGNameList["CardIdentification"] = CardIdentificationLoad
 	CFGNameList["CardReset"] = CardResetLoad
@@ -213,6 +228,7 @@ func configNameListInit(){
 	CFGNameList["ParterCfg"] = ParterCfgLoad
 	CFGNameList["ParterProgressCfg"] = ParterProgressCfgLoad
 	CFGNameList["ParterSkillTreeCfg"] = ParterSkillTreeCfgLoad
+	CFGNameList["PassCheckCfg"] = PassCheckCfgLoad
 	CFGNameList["PassiveSkillCfg"] = PassiveSkillCfgLoad
 	CFGNameList["PetBattleCfg"] = PetBattleCfgLoad
 	CFGNameList["PetCfg"] = PetCfgLoad
@@ -223,6 +239,8 @@ func configNameListInit(){
 	CFGNameList["PetpartnerCfg"] = PetpartnerCfgLoad
 	CFGNameList["PetProgressCfg"] = PetProgressCfgLoad
 	CFGNameList["PresspointPvPCfg"] = PresspointPvPCfgLoad
+	CFGNameList["PrivilegeCardCfg"] = PrivilegeCardCfgLoad
+	CFGNameList["PurseShopCfg"] = PurseShopCfgLoad
 	CFGNameList["QualityPointCfg"] = QualityPointCfgLoad
 	CFGNameList["QuickBattleCostCfg"] = QuickBattleCostCfgLoad
 	CFGNameList["RobotCfg"] = RobotCfgLoad
@@ -303,6 +321,9 @@ var XmlFileList = []string{
 func ConfigInit(path string) {
 	configNameListInit()
 	ActiveCodeCfgLoad(path)
+	ActivitiesBtChargeTaskGoldCfgLoad(path)
+	ActivitiesBtChargeTaskRoMoneyCfgLoad(path)
+	ActivitiesBtFirstChargeCfgLoad(path)
 	ActivitiesCfgLoad(path)
 	ActivitiesCollectionCfgLoad(path)
 	ActivitiesDiscountsCfgLoad(path)
@@ -324,6 +345,9 @@ func ConfigInit(path string) {
 	ArenaRewardCfgLoad(path)
 	ArtifactCfgLoad(path)
 	ArtifactExpCfgLoad(path)
+	BoliShopCfgLoad(path)
+	BoliVipCfgLoad(path)
+	BTSmashEggsCfgLoad(path)
 	CardCfgLoad(path)
 	CardIdentificationLoad(path)
 	CardResetLoad(path)
@@ -380,6 +404,7 @@ func ConfigInit(path string) {
 	ParterCfgLoad(path)
 	ParterProgressCfgLoad(path)
 	ParterSkillTreeCfgLoad(path)
+	PassCheckCfgLoad(path)
 	PassiveSkillCfgLoad(path)
 	PetBattleCfgLoad(path)
 	PetCfgLoad(path)
@@ -390,6 +415,8 @@ func ConfigInit(path string) {
 	PetpartnerCfgLoad(path)
 	PetProgressCfgLoad(path)
 	PresspointPvPCfgLoad(path)
+	PrivilegeCardCfgLoad(path)
+	PurseShopCfgLoad(path)
 	QualityPointCfgLoad(path)
 	QuickBattleCostCfgLoad(path)
 	RobotCfgLoad(path)
@@ -448,6 +475,62 @@ func ActiveCodeCfgLoad(path string) {
 	}
 }
 
+var ActivitiesBtChargeTaskGoldCfgLoader  map[int32]*ActivitiesBtChargeTaskGoldCfg
+type ActivitiesBtChargeTaskGoldCfg struct{
+	Id	int32	`csv:"Id"`		//唯一id
+	TaskIds	[]string	`csv:"TaskIds"`		//7日累充
+	DailyTaskIds	[]string	`csv:"DailyTaskIds"`		//每日累充
+	ActivitiesId	int32	`csv:"ActivitiesId"`		//活动Id
+	Day	int32	`csv:"Day"`		//天数
+}
+func ActivitiesBtChargeTaskGoldCfgLoad(path string) {
+	cfg := []*ActivitiesBtChargeTaskGoldCfg{}
+	ActivitiesBtChargeTaskGoldCfgLoader = map[int32]*ActivitiesBtChargeTaskGoldCfg{}
+	loadCsvCfg(path + "ActivitiesBtChargeTaskGoldCfg.csv", &cfg)
+	for _,row := range cfg{
+		ActivitiesBtChargeTaskGoldCfgLoader[row.Id] = row
+	}
+}
+
+var ActivitiesBtChargeTaskRoMoneyCfgLoader  map[int32]*ActivitiesBtChargeTaskRoMoneyCfg
+type ActivitiesBtChargeTaskRoMoneyCfg struct{
+	Id	int32	`csv:"Id"`		//唯一id
+	TaskIds	[]string	`csv:"TaskIds"`		//7日累充
+	DailyTaskIds	[]string	`csv:"DailyTaskIds"`		//每日累充
+	ActivitiesId	int32	`csv:"ActivitiesId"`		//活动Id
+	Day	int32	`csv:"Day"`		//天数
+}
+func ActivitiesBtChargeTaskRoMoneyCfgLoad(path string) {
+	cfg := []*ActivitiesBtChargeTaskRoMoneyCfg{}
+	ActivitiesBtChargeTaskRoMoneyCfgLoader = map[int32]*ActivitiesBtChargeTaskRoMoneyCfg{}
+	loadCsvCfg(path + "ActivitiesBtChargeTaskRoMoneyCfg.csv", &cfg)
+	for _,row := range cfg{
+		ActivitiesBtChargeTaskRoMoneyCfgLoader[row.Id] = row
+	}
+}
+
+var ActivitiesBtFirstChargeCfgLoader  map[int32]*ActivitiesBtFirstChargeCfg
+type ActivitiesBtFirstChargeCfg struct{
+	Id	int32	`csv:"Id"`		//唯一id
+	Name	string	`csv:"Name"`		//名称
+	OpenCondition	[]string	`csv:"OpenCondition"`		//解锁条件
+	RechargeAmount	[]string	`csv:"RechargeAmount"`		//充值金额
+	Reward1	[]string	`csv:"Reward1"`		//奖励1
+	Value1	int32	`csv:"Value1"`		//价值
+	Reward2	[]string	`csv:"Reward2"`		//奖励2
+	Value2	int32	`csv:"Value2"`		//价值
+	Reward3	[]string	`csv:"Reward3"`		//奖励3
+	Value3	int32	`csv:"Value3"`		//价值
+}
+func ActivitiesBtFirstChargeCfgLoad(path string) {
+	cfg := []*ActivitiesBtFirstChargeCfg{}
+	ActivitiesBtFirstChargeCfgLoader = map[int32]*ActivitiesBtFirstChargeCfg{}
+	loadCsvCfg(path + "ActivitiesBtFirstChargeCfg.csv", &cfg)
+	for _,row := range cfg{
+		ActivitiesBtFirstChargeCfgLoader[row.Id] = row
+	}
+}
+
 var ActivitiesCfgLoader  map[int32]*ActivitiesCfg
 type ActivitiesCfg struct{
 	Id	int32	`csv:"Id"`		//唯一id
@@ -856,6 +939,112 @@ func ArtifactExpCfgLoad(path string) {
 	}
 }
 
+var BoliShopCfgLoader  map[int32]*BoliShopCfg
+type BoliShopCfg struct{
+	GoodsId	int32	`csv:"GoodsId"`		//商品Id
+	GoodsName	string	`csv:"GoodsName"`		//商品名称
+	GoodsType	int32	`csv:"GoodsType"`		//商品所属tab
+	GoodsTypename	string	`csv:"GoodsTypename"`		//商品页签
+	GoodsItem	int32	`csv:"GoodsItem"`		//商品内容
+	PayForType	int32	`csv:"PayForType"`		//消耗资源类型
+	PayForNum	int32	`csv:"PayForNum"`		//消耗资源数量
+	HdDrop	int32	`csv:"HdDrop"`		//活动商品
+	SellWell	int32	`csv:"SellWell"`		//是否热销
+	Proportion	int32	`csv:"Proportion"`		//折扣比例
+	DiscountPayForNum	int32	`csv:"DiscountPayForNum"`		//折扣后价格
+	RestrictedType	string	`csv:"RestrictedType"`		//限购类型次数
+	BeginTime	string	`csv:"BeginTime"`		//开始时间
+	EndTime	string	`csv:"EndTime"`		//结束时间
+	SortId	int32	`csv:"SortId"`		//排序Id
+	Weight	int32	`csv:"Weight"`		//权重概率
+	Weight1	int32	`csv:"Weight1"`		//VIP权重概率1
+	Weight2	int32	`csv:"Weight2"`		//VIP权重概率2
+	Weight3	int32	`csv:"Weight3"`		//VIP权重概率3
+	Weight4	int32	`csv:"Weight4"`		//VIP权重概率4
+	NtfClient	int32	`csv:"NtfClient"`		//是否通知客户端
+	GoodsPic	string	`csv:"GoodsPic"`		//图片
+	Reward	[]string	`csv:"Reward"`		//购买后获得道具
+	Condition	[]string	`csv:"Condition"`		//上架解锁条件枚举
+	BoliVipLevel	int32	`csv:"BoliVipLevel"`		//波利特权等级显示
+}
+func BoliShopCfgLoad(path string) {
+	cfg := []*BoliShopCfg{}
+	BoliShopCfgLoader = map[int32]*BoliShopCfg{}
+	loadCsvCfg(path + "BoliShopCfg.csv", &cfg)
+	for _,row := range cfg{
+		BoliShopCfgLoader[row.GoodsId] = row
+	}
+}
+
+var BoliVipCfgLoader  map[int32]*BoliVipCfg
+type BoliVipCfg struct{
+	Lv	int32	`csv:"Lv"`		//波利特权等级
+	QuickBattle	int32	`csv:"QuickBattle"`		//战斗X2加速
+	Reward	[]string	`csv:"Reward"`		//Vip道具奖励
+	VipExp	int32	`csv:"VipExp"`		//Vip升级所需经验
+	EvilFreeTimes	int32	`csv:"EvilFreeTimes"`		//恶魔免费刷新次数
+	VipLogin	int32	`csv:"VipLogin"`		//VIP上线提示
+	PetAdvance	int32	`csv:"PetAdvance"`		//宠物进阶消耗免费
+	CardReset	int32	`csv:"CardReset"`		//卡片重铸免费
+	PetBreak	int32	`csv:"PetBreak"`		//宠物分解全额返还
+	SkillReset	int32	`csv:"SkillReset"`		//角色技能重置免费
+	GuildBossChallenge	int32	`csv:"GuildBossChallenge"`		//公会狩猎额外次数
+	CardInsertion	int32	`csv:"CardInsertion"`		//一键插卡功能
+	ShopWeight	int32	`csv:"ShopWeight"`		//黑市VIP权重
+	WorldBoss	int32	`csv:"WorldBoss"`		//世界BOSS刮奖次数
+	PvpReward	int32	`csv:"PvpReward"`		//额外荣誉之证
+	HangupTimes	int32	`csv:"HangupTimes"`		//时光之力购买次数
+	SilverUp	int32	`csv:"SilverUp"`		//银币加成
+	BaseExpUp	int32	`csv:"BaseExpUp"`		//基础经验加成
+	PartnerExpUp	int32	`csv:"PartnerExpUp"`		//伙伴经验加成
+	SkillExpUp	int32	`csv:"SkillExpUp"`		//技能经验加成
+	GiftBuyTimes	[]string	`csv:"GiftBuyTimes"`		//每日礼包购买次数+1
+	HangupDuration	int32	`csv:"HangupDuration"`		//离线挂机时长上限(秒)
+	SignInRewardUp	int32	`csv:"SignInRewardUp"`		//签到翻倍
+	WorldBossCount	int32	`csv:"WorldBossCount"`		//世界BOSS购买次数
+	DevilsUp	int32	`csv:"DevilsUp"`		//挂机魔魂值加成
+	TransportRobbery	int32	`csv:"TransportRobbery"`		//飞艇被抢劫掉落减少至
+	LuxuryPrizeWheelTimes	int32	`csv:"LuxuryPrizeWheelTimes"`		//豪华转盘可使用次数
+	GiftRewards	[]string	`csv:"GiftRewards"`		//每日礼包
+}
+func BoliVipCfgLoad(path string) {
+	cfg := []*BoliVipCfg{}
+	BoliVipCfgLoader = map[int32]*BoliVipCfg{}
+	loadCsvCfg(path + "BoliVipCfg.csv", &cfg)
+	for _,row := range cfg{
+		BoliVipCfgLoader[row.Lv] = row
+	}
+}
+
+var BTSmashEggsCfgLoader  map[int32]*BTSmashEggsCfg
+type BTSmashEggsCfg struct{
+	Id	int32	`csv:"Id"`		//砸蛋Id
+	Name	string	`csv:"Name"`		//砸蛋名字
+	Cost	[]string	`csv:"Cost"`		//消耗道具顺序
+	Method	[]string	`csv:"Method"`		//砸蛋方式
+	DropId	int32	`csv:"DropId"`		//消耗道具1掉落包
+	DropId2	int32	`csv:"DropId2"`		//消耗道具1掉落包
+	Total	int32	`csv:"Total"`		//保底奖励的累计次数
+	ExtDropId	int32	`csv:"ExtDropId"`		//保底奖励的掉落包
+	SortId	int32	`csv:"SortId"`		//界面排序
+	ShowItemType	[]string	`csv:"ShowItemType"`		//可用于表现的道具类型
+	UnLock	int32	`csv:"UnLock"`		//解锁ID
+	ActivitiesId	int32	`csv:"ActivitiesId"`		//活动Id
+	Type	int32	`csv:"Type"`		//召唤类型
+	StartDay	int32	`csv:"StartDay"`		//开服时间
+	SummoType	int32	`csv:"SummoType"`		//召唤组
+	Show	[]string	`csv:"Show"`		//大奖预览
+	ClientShow	[]string	`csv:"ClientShow"`		//客户端大奖预览
+}
+func BTSmashEggsCfgLoad(path string) {
+	cfg := []*BTSmashEggsCfg{}
+	BTSmashEggsCfgLoader = map[int32]*BTSmashEggsCfg{}
+	loadCsvCfg(path + "BTSmashEggsCfg.csv", &cfg)
+	for _,row := range cfg{
+		BTSmashEggsCfgLoader[row.Id] = row
+	}
+}
+
 var CardCfgLoader  map[int32]*CardCfg
 type CardCfg struct{
 	CardId	int32	`csv:"CardId"`		//卡片ID
@@ -1818,6 +2007,7 @@ type LevelCfg struct{
 	Version	int32	`csv:"version"`		//版本
 	MapScore	int32	`csv:"MapScore"`		//里程积分
 	CloseDown	string	`csv:"CloseDown"`		//查封配置
+	FreeInvest	int32	`csv:"FreeInvest"`		//通关免费充值额度
 }
 func LevelCfgLoad(path string) {
 	cfg := []*LevelCfg{}
@@ -2088,6 +2278,23 @@ func ParterSkillTreeCfgLoad(path string) {
 	}
 }
 
+var PassCheckCfgLoader  map[int32]*PassCheckCfg
+type PassCheckCfg struct{
+	Lv	int32	`csv:"Lv"`		//等级
+	RMB	float32	`csv:"RMB"`		//价格
+	Automatic	int32	`csv:"Automatic"`		//自动挑战
+	AddLeadExp	int32	`csv:"AddLeadExp"`		//时光助力主角经验提升万分比
+	AddAttrLevel	[]string	`csv:"AddAttrLevel"`		//增加主角属性
+}
+func PassCheckCfgLoad(path string) {
+	cfg := []*PassCheckCfg{}
+	PassCheckCfgLoader = map[int32]*PassCheckCfg{}
+	loadCsvCfg(path + "PassCheckCfg.csv", &cfg)
+	for _,row := range cfg{
+		PassCheckCfgLoader[row.Lv] = row
+	}
+}
+
 var PassiveSkillCfgLoader  map[int32]*PassiveSkillCfg
 type PassiveSkillCfg struct{
 	SkillId	int32	`csv:"SkillId"`		//技能ID
@@ -2352,6 +2559,47 @@ func PresspointPvPCfgLoad(path string) {
 	}
 }
 
+var PrivilegeCardCfgLoader  map[int32]*PrivilegeCardCfg
+type PrivilegeCardCfg struct{
+	Lv	int32	`csv:"Lv"`		//等级
+	RMB	float32	`csv:"RMB"`		//价格
+	UnlockCond	[]string	`csv:"UnlockCond"`		//解锁条件
+	QuickBattle	int32	`csv:"QuickBattle"`		//战斗X2加速
+	Reward	[]string	`csv:"Reward"`		//特权每日礼包
+	PurseQuota	int32	`csv:"PurseQuota"`		//充值钱包额度
+	BuyReward	[]string	`csv:"BuyReward"`		//购买奖励显示
+}
+func PrivilegeCardCfgLoad(path string) {
+	cfg := []*PrivilegeCardCfg{}
+	PrivilegeCardCfgLoader = map[int32]*PrivilegeCardCfg{}
+	loadCsvCfg(path + "PrivilegeCardCfg.csv", &cfg)
+	for _,row := range cfg{
+		PrivilegeCardCfgLoader[row.Lv] = row
+	}
+}
+
+var PurseShopCfgLoader  map[int32]*PurseShopCfg
+type PurseShopCfg struct{
+	Id	int32	`csv:"Id"`		//礼包Id
+	Name	string	`csv:"Name"`		//礼包名字
+	Type	int32	`csv:"Type"`		//类型
+	RMB	float32	`csv:"RMB"`		//价格
+	Reward	[]string	`csv:"Reward"`		//购买后获得道具
+	FirstBuyReward	[]string	`csv:"FirstBuyReward"`		//首次购买奖励
+	ExtraBuyReward	[]string	`csv:"ExtraBuyReward"`		//购买额外获得
+	RestrictedType	int32	`csv:"RestrictedType"`		//限购类型次数
+	SortId	int32	`csv:"SortId"`		//排序Id
+	RmbTotalPay	int32	`csv:"RmbTotalPay"`		//累计充值金额
+}
+func PurseShopCfgLoad(path string) {
+	cfg := []*PurseShopCfg{}
+	PurseShopCfgLoader = map[int32]*PurseShopCfg{}
+	loadCsvCfg(path + "PurseShopCfg.csv", &cfg)
+	for _,row := range cfg{
+		PurseShopCfgLoader[row.Id] = row
+	}
+}
+
 var QualityPointCfgLoader  map[int32]*QualityPointCfg
 type QualityPointCfg struct{
 	Count	int32	`csv:"count"`		//点数
@@ -2543,16 +2791,16 @@ func RuneShopLimitCfgLoad(path string) {
 
 var RuneShopMonthCardCfgLoader  map[int32]*RuneShopMonthCardCfg
 type RuneShopMonthCardCfg struct{
-	Id	int32	`csv:"Id"`		//卡类型
-	Name	string	`csv:"Name"`		//卡名字
+	Id	int32	`csv:"Id"`		//卡类型
+	Name	string	`csv:"Name"`		//卡名字
 	AddTime	int32	`csv:"AddTime"`		//增加时长
-	BuyReward	[]string	`csv:"BuyReward"`		//购买奖励
+	BuyReward	[]string	`csv:"BuyReward"`		//购买奖励显示
 	DayReward	[]string	`csv:"DayReward"`		//每日奖励
 	TotalReward	[]string	`csv:"TotalReward"`		//总计奖励
 	RMB	float32	`csv:"RMB"`		//价格
-	BuyRewardServer	[]string	`csv:"BuyRewardServer"`		//购买奖励
+	BuyRewardServer	[]string	`csv:"BuyRewardServer"`		//获得购买奖励
 	RewardMail	int32	`csv:"RewardMail"`		//奖励邮件
-	Monthdec	string	`csv:"Monthdec"`		//卡描述
+	Monthdec	string	`csv:"Monthdec"`		//卡描述
 }
 func RuneShopMonthCardCfgLoad(path string) {
 	cfg := []*RuneShopMonthCardCfg{}
@@ -3152,7 +3400,9 @@ type VipCfg struct{
 	GiftBuyTimes	[]string	`csv:"GiftBuyTimes"`		//每日礼包购买次数+1
 	HangupDuration	int32	`csv:"HangupDuration"`		//离线挂机时长上限(秒)
 	SignInRewardUp	int32	`csv:"SignInRewardUp"`		//签到翻倍
-	WorldBossCount	int32	`csv:"WorldBossCount"`		//世界BOSS挑战次数
+	WorldBossCount	int32	`csv:"WorldBossCount"`		//世界BOSS购买次数
+	DevilsUp	int32	`csv:"DevilsUp"`		//挂机魔魂值加成
+	TransportRobbery	int32	`csv:"TransportRobbery"`		//飞艇被抢劫掉落减少至
 }
 func VipCfgLoad(path string) {
 	cfg := []*VipCfg{}

+ 501 - 406
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/db.pb.go

@@ -1540,6 +1540,45 @@ func (m *SSActivityDataSaveReq) GetDelActivityList() []int32 {
 	return nil
 }
 
+type SSActivitySmashEggsMsgSaveNtf struct {
+	ActMsgList           []*SystemMessage `protobuf:"bytes,4,rep,name=act_msg_list,json=actMsgList,proto3" json:"act_msg_list,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *SSActivitySmashEggsMsgSaveNtf) Reset()         { *m = SSActivitySmashEggsMsgSaveNtf{} }
+func (m *SSActivitySmashEggsMsgSaveNtf) String() string { return proto.CompactTextString(m) }
+func (*SSActivitySmashEggsMsgSaveNtf) ProtoMessage()    {}
+func (*SSActivitySmashEggsMsgSaveNtf) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8817812184a13374, []int{34}
+}
+
+func (m *SSActivitySmashEggsMsgSaveNtf) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SSActivitySmashEggsMsgSaveNtf.Unmarshal(m, b)
+}
+func (m *SSActivitySmashEggsMsgSaveNtf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SSActivitySmashEggsMsgSaveNtf.Marshal(b, m, deterministic)
+}
+func (m *SSActivitySmashEggsMsgSaveNtf) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SSActivitySmashEggsMsgSaveNtf.Merge(m, src)
+}
+func (m *SSActivitySmashEggsMsgSaveNtf) XXX_Size() int {
+	return xxx_messageInfo_SSActivitySmashEggsMsgSaveNtf.Size(m)
+}
+func (m *SSActivitySmashEggsMsgSaveNtf) XXX_DiscardUnknown() {
+	xxx_messageInfo_SSActivitySmashEggsMsgSaveNtf.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SSActivitySmashEggsMsgSaveNtf proto.InternalMessageInfo
+
+func (m *SSActivitySmashEggsMsgSaveNtf) GetActMsgList() []*SystemMessage {
+	if m != nil {
+		return m.ActMsgList
+	}
+	return nil
+}
+
 //宠物数据保存
 type SSPetDataSaveReq struct {
 	PetDelList           []uint32 `protobuf:"varint,1,rep,packed,name=pet_del_list,json=petDelList,proto3" json:"pet_del_list,omitempty"`
@@ -1555,7 +1594,7 @@ func (m *SSPetDataSaveReq) Reset()         { *m = SSPetDataSaveReq{} }
 func (m *SSPetDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSPetDataSaveReq) ProtoMessage()    {}
 func (*SSPetDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{34}
+	return fileDescriptor_8817812184a13374, []int{35}
 }
 
 func (m *SSPetDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -1616,7 +1655,7 @@ func (m *SSRuneDataSaveReq) Reset()         { *m = SSRuneDataSaveReq{} }
 func (m *SSRuneDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSRuneDataSaveReq) ProtoMessage()    {}
 func (*SSRuneDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{35}
+	return fileDescriptor_8817812184a13374, []int{36}
 }
 
 func (m *SSRuneDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -1656,7 +1695,7 @@ func (m *SSKeepSakeSaveReq) Reset()         { *m = SSKeepSakeSaveReq{} }
 func (m *SSKeepSakeSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSKeepSakeSaveReq) ProtoMessage()    {}
 func (*SSKeepSakeSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{36}
+	return fileDescriptor_8817812184a13374, []int{37}
 }
 
 func (m *SSKeepSakeSaveReq) XXX_Unmarshal(b []byte) error {
@@ -1696,7 +1735,7 @@ func (m *SSLoadArenaNtf) Reset()         { *m = SSLoadArenaNtf{} }
 func (m *SSLoadArenaNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadArenaNtf) ProtoMessage()    {}
 func (*SSLoadArenaNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{37}
+	return fileDescriptor_8817812184a13374, []int{38}
 }
 
 func (m *SSLoadArenaNtf) XXX_Unmarshal(b []byte) error {
@@ -1740,7 +1779,7 @@ func (m *SSArenaMatchReq) Reset()         { *m = SSArenaMatchReq{} }
 func (m *SSArenaMatchReq) String() string { return proto.CompactTextString(m) }
 func (*SSArenaMatchReq) ProtoMessage()    {}
 func (*SSArenaMatchReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{38}
+	return fileDescriptor_8817812184a13374, []int{39}
 }
 
 func (m *SSArenaMatchReq) XXX_Unmarshal(b []byte) error {
@@ -1807,7 +1846,7 @@ func (m *SSArenaMatchAck) Reset()         { *m = SSArenaMatchAck{} }
 func (m *SSArenaMatchAck) String() string { return proto.CompactTextString(m) }
 func (*SSArenaMatchAck) ProtoMessage()    {}
 func (*SSArenaMatchAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{39}
+	return fileDescriptor_8817812184a13374, []int{40}
 }
 
 func (m *SSArenaMatchAck) XXX_Unmarshal(b []byte) error {
@@ -1848,7 +1887,7 @@ func (m *SSGetOtherTargetInfoReq) Reset()         { *m = SSGetOtherTargetInfoReq
 func (m *SSGetOtherTargetInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetOtherTargetInfoReq) ProtoMessage()    {}
 func (*SSGetOtherTargetInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{40}
+	return fileDescriptor_8817812184a13374, []int{41}
 }
 
 func (m *SSGetOtherTargetInfoReq) XXX_Unmarshal(b []byte) error {
@@ -1897,7 +1936,7 @@ func (m *SSGetOtherTargetInfoAck) Reset()         { *m = SSGetOtherTargetInfoAck
 func (m *SSGetOtherTargetInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetOtherTargetInfoAck) ProtoMessage()    {}
 func (*SSGetOtherTargetInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{41}
+	return fileDescriptor_8817812184a13374, []int{42}
 }
 
 func (m *SSGetOtherTargetInfoAck) XXX_Unmarshal(b []byte) error {
@@ -1960,7 +1999,7 @@ func (m *SSGameBanRoleNtf) Reset()         { *m = SSGameBanRoleNtf{} }
 func (m *SSGameBanRoleNtf) String() string { return proto.CompactTextString(m) }
 func (*SSGameBanRoleNtf) ProtoMessage()    {}
 func (*SSGameBanRoleNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{42}
+	return fileDescriptor_8817812184a13374, []int{43}
 }
 
 func (m *SSGameBanRoleNtf) XXX_Unmarshal(b []byte) error {
@@ -2013,7 +2052,7 @@ func (m *SSRoleRushDataSaveReq) Reset()         { *m = SSRoleRushDataSaveReq{} }
 func (m *SSRoleRushDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSRoleRushDataSaveReq) ProtoMessage()    {}
 func (*SSRoleRushDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{43}
+	return fileDescriptor_8817812184a13374, []int{44}
 }
 
 func (m *SSRoleRushDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -2058,7 +2097,7 @@ func (m *SSArenaScoreRankNtf) Reset()         { *m = SSArenaScoreRankNtf{} }
 func (m *SSArenaScoreRankNtf) String() string { return proto.CompactTextString(m) }
 func (*SSArenaScoreRankNtf) ProtoMessage()    {}
 func (*SSArenaScoreRankNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{44}
+	return fileDescriptor_8817812184a13374, []int{45}
 }
 
 func (m *SSArenaScoreRankNtf) XXX_Unmarshal(b []byte) error {
@@ -2127,7 +2166,7 @@ func (m *SSMaxFightPowerRankNtf) Reset()         { *m = SSMaxFightPowerRankNtf{}
 func (m *SSMaxFightPowerRankNtf) String() string { return proto.CompactTextString(m) }
 func (*SSMaxFightPowerRankNtf) ProtoMessage()    {}
 func (*SSMaxFightPowerRankNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{45}
+	return fileDescriptor_8817812184a13374, []int{46}
 }
 
 func (m *SSMaxFightPowerRankNtf) XXX_Unmarshal(b []byte) error {
@@ -2176,7 +2215,7 @@ func (m *SSMapLevelChangeReq) Reset()         { *m = SSMapLevelChangeReq{} }
 func (m *SSMapLevelChangeReq) String() string { return proto.CompactTextString(m) }
 func (*SSMapLevelChangeReq) ProtoMessage()    {}
 func (*SSMapLevelChangeReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{46}
+	return fileDescriptor_8817812184a13374, []int{47}
 }
 
 func (m *SSMapLevelChangeReq) XXX_Unmarshal(b []byte) error {
@@ -2235,7 +2274,7 @@ func (m *SSMapLevelChangeAck) Reset()         { *m = SSMapLevelChangeAck{} }
 func (m *SSMapLevelChangeAck) String() string { return proto.CompactTextString(m) }
 func (*SSMapLevelChangeAck) ProtoMessage()    {}
 func (*SSMapLevelChangeAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{47}
+	return fileDescriptor_8817812184a13374, []int{48}
 }
 
 func (m *SSMapLevelChangeAck) XXX_Unmarshal(b []byte) error {
@@ -2319,7 +2358,7 @@ func (m *SSArenaRankListReq) Reset()         { *m = SSArenaRankListReq{} }
 func (m *SSArenaRankListReq) String() string { return proto.CompactTextString(m) }
 func (*SSArenaRankListReq) ProtoMessage()    {}
 func (*SSArenaRankListReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{48}
+	return fileDescriptor_8817812184a13374, []int{49}
 }
 
 func (m *SSArenaRankListReq) XXX_Unmarshal(b []byte) error {
@@ -2377,7 +2416,7 @@ func (m *SSArenaRankListAck) Reset()         { *m = SSArenaRankListAck{} }
 func (m *SSArenaRankListAck) String() string { return proto.CompactTextString(m) }
 func (*SSArenaRankListAck) ProtoMessage()    {}
 func (*SSArenaRankListAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{49}
+	return fileDescriptor_8817812184a13374, []int{50}
 }
 
 func (m *SSArenaRankListAck) XXX_Unmarshal(b []byte) error {
@@ -2454,7 +2493,7 @@ func (m *SSArenaRankRewardReq) Reset()         { *m = SSArenaRankRewardReq{} }
 func (m *SSArenaRankRewardReq) String() string { return proto.CompactTextString(m) }
 func (*SSArenaRankRewardReq) ProtoMessage()    {}
 func (*SSArenaRankRewardReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{50}
+	return fileDescriptor_8817812184a13374, []int{51}
 }
 
 func (m *SSArenaRankRewardReq) XXX_Unmarshal(b []byte) error {
@@ -2508,7 +2547,7 @@ func (m *SSArenaRankRewardAck) Reset()         { *m = SSArenaRankRewardAck{} }
 func (m *SSArenaRankRewardAck) String() string { return proto.CompactTextString(m) }
 func (*SSArenaRankRewardAck) ProtoMessage()    {}
 func (*SSArenaRankRewardAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{51}
+	return fileDescriptor_8817812184a13374, []int{52}
 }
 
 func (m *SSArenaRankRewardAck) XXX_Unmarshal(b []byte) error {
@@ -2556,7 +2595,7 @@ func (m *SSArenaRankUpdateReq) Reset()         { *m = SSArenaRankUpdateReq{} }
 func (m *SSArenaRankUpdateReq) String() string { return proto.CompactTextString(m) }
 func (*SSArenaRankUpdateReq) ProtoMessage()    {}
 func (*SSArenaRankUpdateReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{52}
+	return fileDescriptor_8817812184a13374, []int{53}
 }
 
 func (m *SSArenaRankUpdateReq) XXX_Unmarshal(b []byte) error {
@@ -2604,7 +2643,7 @@ func (m *SSArenaRankUpdateAck) Reset()         { *m = SSArenaRankUpdateAck{} }
 func (m *SSArenaRankUpdateAck) String() string { return proto.CompactTextString(m) }
 func (*SSArenaRankUpdateAck) ProtoMessage()    {}
 func (*SSArenaRankUpdateAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{53}
+	return fileDescriptor_8817812184a13374, []int{54}
 }
 
 func (m *SSArenaRankUpdateAck) XXX_Unmarshal(b []byte) error {
@@ -2661,7 +2700,7 @@ func (m *SSTowerPassFightPowerNtf) Reset()         { *m = SSTowerPassFightPowerN
 func (m *SSTowerPassFightPowerNtf) String() string { return proto.CompactTextString(m) }
 func (*SSTowerPassFightPowerNtf) ProtoMessage()    {}
 func (*SSTowerPassFightPowerNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{54}
+	return fileDescriptor_8817812184a13374, []int{55}
 }
 
 func (m *SSTowerPassFightPowerNtf) XXX_Unmarshal(b []byte) error {
@@ -2715,7 +2754,7 @@ func (m *SSTowerMinFightPowerReq) Reset()         { *m = SSTowerMinFightPowerReq
 func (m *SSTowerMinFightPowerReq) String() string { return proto.CompactTextString(m) }
 func (*SSTowerMinFightPowerReq) ProtoMessage()    {}
 func (*SSTowerMinFightPowerReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{55}
+	return fileDescriptor_8817812184a13374, []int{56}
 }
 
 func (m *SSTowerMinFightPowerReq) XXX_Unmarshal(b []byte) error {
@@ -2759,7 +2798,7 @@ func (m *TowerMinFight) Reset()         { *m = TowerMinFight{} }
 func (m *TowerMinFight) String() string { return proto.CompactTextString(m) }
 func (*TowerMinFight) ProtoMessage()    {}
 func (*TowerMinFight) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{56}
+	return fileDescriptor_8817812184a13374, []int{57}
 }
 
 func (m *TowerMinFight) XXX_Unmarshal(b []byte) error {
@@ -2829,7 +2868,7 @@ func (m *SSTowerMinFightPowerAck) Reset()         { *m = SSTowerMinFightPowerAck
 func (m *SSTowerMinFightPowerAck) String() string { return proto.CompactTextString(m) }
 func (*SSTowerMinFightPowerAck) ProtoMessage()    {}
 func (*SSTowerMinFightPowerAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{57}
+	return fileDescriptor_8817812184a13374, []int{58}
 }
 
 func (m *SSTowerMinFightPowerAck) XXX_Unmarshal(b []byte) error {
@@ -2890,7 +2929,7 @@ func (m *SSPassTowerLevelRankReq) Reset()         { *m = SSPassTowerLevelRankReq
 func (m *SSPassTowerLevelRankReq) String() string { return proto.CompactTextString(m) }
 func (*SSPassTowerLevelRankReq) ProtoMessage()    {}
 func (*SSPassTowerLevelRankReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{58}
+	return fileDescriptor_8817812184a13374, []int{59}
 }
 
 func (m *SSPassTowerLevelRankReq) XXX_Unmarshal(b []byte) error {
@@ -2930,7 +2969,7 @@ func (m *TowerLevelInfo) Reset()         { *m = TowerLevelInfo{} }
 func (m *TowerLevelInfo) String() string { return proto.CompactTextString(m) }
 func (*TowerLevelInfo) ProtoMessage()    {}
 func (*TowerLevelInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{59}
+	return fileDescriptor_8817812184a13374, []int{60}
 }
 
 func (m *TowerLevelInfo) XXX_Unmarshal(b []byte) error {
@@ -2978,7 +3017,7 @@ func (m *SSPassTowerLevelRankAck) Reset()         { *m = SSPassTowerLevelRankAck
 func (m *SSPassTowerLevelRankAck) String() string { return proto.CompactTextString(m) }
 func (*SSPassTowerLevelRankAck) ProtoMessage()    {}
 func (*SSPassTowerLevelRankAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{60}
+	return fileDescriptor_8817812184a13374, []int{61}
 }
 
 func (m *SSPassTowerLevelRankAck) XXX_Unmarshal(b []byte) error {
@@ -3027,7 +3066,7 @@ func (m *SSGetFriendTowerInfoReq) Reset()         { *m = SSGetFriendTowerInfoReq
 func (m *SSGetFriendTowerInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetFriendTowerInfoReq) ProtoMessage()    {}
 func (*SSGetFriendTowerInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{61}
+	return fileDescriptor_8817812184a13374, []int{62}
 }
 
 func (m *SSGetFriendTowerInfoReq) XXX_Unmarshal(b []byte) error {
@@ -3091,7 +3130,7 @@ func (m *SSGetFriendTowerInfoAck) Reset()         { *m = SSGetFriendTowerInfoAck
 func (m *SSGetFriendTowerInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetFriendTowerInfoAck) ProtoMessage()    {}
 func (*SSGetFriendTowerInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{62}
+	return fileDescriptor_8817812184a13374, []int{63}
 }
 
 func (m *SSGetFriendTowerInfoAck) XXX_Unmarshal(b []byte) error {
@@ -3159,7 +3198,7 @@ func (m *SSOnlineGetRushInfoReq) Reset()         { *m = SSOnlineGetRushInfoReq{}
 func (m *SSOnlineGetRushInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSOnlineGetRushInfoReq) ProtoMessage()    {}
 func (*SSOnlineGetRushInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{63}
+	return fileDescriptor_8817812184a13374, []int{64}
 }
 
 func (m *SSOnlineGetRushInfoReq) XXX_Unmarshal(b []byte) error {
@@ -3199,7 +3238,7 @@ func (m *SSOnlineGetRushInfoAck) Reset()         { *m = SSOnlineGetRushInfoAck{}
 func (m *SSOnlineGetRushInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSOnlineGetRushInfoAck) ProtoMessage()    {}
 func (*SSOnlineGetRushInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{64}
+	return fileDescriptor_8817812184a13374, []int{65}
 }
 
 func (m *SSOnlineGetRushInfoAck) XXX_Unmarshal(b []byte) error {
@@ -3250,7 +3289,7 @@ func (m *SSRushDataChangeReq) Reset()         { *m = SSRushDataChangeReq{} }
 func (m *SSRushDataChangeReq) String() string { return proto.CompactTextString(m) }
 func (*SSRushDataChangeReq) ProtoMessage()    {}
 func (*SSRushDataChangeReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{65}
+	return fileDescriptor_8817812184a13374, []int{66}
 }
 
 func (m *SSRushDataChangeReq) XXX_Unmarshal(b []byte) error {
@@ -3322,7 +3361,7 @@ func (m *SSRushDataChangeAck) Reset()         { *m = SSRushDataChangeAck{} }
 func (m *SSRushDataChangeAck) String() string { return proto.CompactTextString(m) }
 func (*SSRushDataChangeAck) ProtoMessage()    {}
 func (*SSRushDataChangeAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{66}
+	return fileDescriptor_8817812184a13374, []int{67}
 }
 
 func (m *SSRushDataChangeAck) XXX_Unmarshal(b []byte) error {
@@ -3399,7 +3438,7 @@ func (m *SSGetRushBaseRewardReq) Reset()         { *m = SSGetRushBaseRewardReq{}
 func (m *SSGetRushBaseRewardReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushBaseRewardReq) ProtoMessage()    {}
 func (*SSGetRushBaseRewardReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{67}
+	return fileDescriptor_8817812184a13374, []int{68}
 }
 
 func (m *SSGetRushBaseRewardReq) XXX_Unmarshal(b []byte) error {
@@ -3455,7 +3494,7 @@ func (m *SSGetRushBaseRewardAck) Reset()         { *m = SSGetRushBaseRewardAck{}
 func (m *SSGetRushBaseRewardAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushBaseRewardAck) ProtoMessage()    {}
 func (*SSGetRushBaseRewardAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{68}
+	return fileDescriptor_8817812184a13374, []int{69}
 }
 
 func (m *SSGetRushBaseRewardAck) XXX_Unmarshal(b []byte) error {
@@ -3519,7 +3558,7 @@ func (m *SSGetRushShopInfoReq) Reset()         { *m = SSGetRushShopInfoReq{} }
 func (m *SSGetRushShopInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushShopInfoReq) ProtoMessage()    {}
 func (*SSGetRushShopInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{69}
+	return fileDescriptor_8817812184a13374, []int{70}
 }
 
 func (m *SSGetRushShopInfoReq) XXX_Unmarshal(b []byte) error {
@@ -3584,7 +3623,7 @@ func (m *SSGetRushShopInfoAck) Reset()         { *m = SSGetRushShopInfoAck{} }
 func (m *SSGetRushShopInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushShopInfoAck) ProtoMessage()    {}
 func (*SSGetRushShopInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{70}
+	return fileDescriptor_8817812184a13374, []int{71}
 }
 
 func (m *SSGetRushShopInfoAck) XXX_Unmarshal(b []byte) error {
@@ -3663,7 +3702,7 @@ func (m *SSGetRushShopBuyReq) Reset()         { *m = SSGetRushShopBuyReq{} }
 func (m *SSGetRushShopBuyReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushShopBuyReq) ProtoMessage()    {}
 func (*SSGetRushShopBuyReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{71}
+	return fileDescriptor_8817812184a13374, []int{72}
 }
 
 func (m *SSGetRushShopBuyReq) XXX_Unmarshal(b []byte) error {
@@ -3736,7 +3775,7 @@ func (m *SSGetRushShopBuyAck) Reset()         { *m = SSGetRushShopBuyAck{} }
 func (m *SSGetRushShopBuyAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushShopBuyAck) ProtoMessage()    {}
 func (*SSGetRushShopBuyAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{72}
+	return fileDescriptor_8817812184a13374, []int{73}
 }
 
 func (m *SSGetRushShopBuyAck) XXX_Unmarshal(b []byte) error {
@@ -3819,7 +3858,7 @@ func (m *SSGetRushDataReq) Reset()         { *m = SSGetRushDataReq{} }
 func (m *SSGetRushDataReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushDataReq) ProtoMessage()    {}
 func (*SSGetRushDataReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{73}
+	return fileDescriptor_8817812184a13374, []int{74}
 }
 
 func (m *SSGetRushDataReq) XXX_Unmarshal(b []byte) error {
@@ -3873,7 +3912,7 @@ func (m *SSGetRushDataAck) Reset()         { *m = SSGetRushDataAck{} }
 func (m *SSGetRushDataAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushDataAck) ProtoMessage()    {}
 func (*SSGetRushDataAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{74}
+	return fileDescriptor_8817812184a13374, []int{75}
 }
 
 func (m *SSGetRushDataAck) XXX_Unmarshal(b []byte) error {
@@ -3971,7 +4010,7 @@ func (m *SSGetRushRewardReq) Reset()         { *m = SSGetRushRewardReq{} }
 func (m *SSGetRushRewardReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushRewardReq) ProtoMessage()    {}
 func (*SSGetRushRewardReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{75}
+	return fileDescriptor_8817812184a13374, []int{76}
 }
 
 func (m *SSGetRushRewardReq) XXX_Unmarshal(b []byte) error {
@@ -4029,7 +4068,7 @@ func (m *SSGetRushRewardAck) Reset()         { *m = SSGetRushRewardAck{} }
 func (m *SSGetRushRewardAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushRewardAck) ProtoMessage()    {}
 func (*SSGetRushRewardAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{76}
+	return fileDescriptor_8817812184a13374, []int{77}
 }
 
 func (m *SSGetRushRewardAck) XXX_Unmarshal(b []byte) error {
@@ -4105,7 +4144,7 @@ func (m *RushMailData) Reset()         { *m = RushMailData{} }
 func (m *RushMailData) String() string { return proto.CompactTextString(m) }
 func (*RushMailData) ProtoMessage()    {}
 func (*RushMailData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{77}
+	return fileDescriptor_8817812184a13374, []int{78}
 }
 
 func (m *RushMailData) XXX_Unmarshal(b []byte) error {
@@ -4161,7 +4200,7 @@ func (m *SSRushActivityRankRewardNtf) Reset()         { *m = SSRushActivityRankR
 func (m *SSRushActivityRankRewardNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRushActivityRankRewardNtf) ProtoMessage()    {}
 func (*SSRushActivityRankRewardNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{78}
+	return fileDescriptor_8817812184a13374, []int{79}
 }
 
 func (m *SSRushActivityRankRewardNtf) XXX_Unmarshal(b []byte) error {
@@ -4222,7 +4261,7 @@ func (m *SSGetRushRankRewardReq) Reset()         { *m = SSGetRushRankRewardReq{}
 func (m *SSGetRushRankRewardReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushRankRewardReq) ProtoMessage()    {}
 func (*SSGetRushRankRewardReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{79}
+	return fileDescriptor_8817812184a13374, []int{80}
 }
 
 func (m *SSGetRushRankRewardReq) XXX_Unmarshal(b []byte) error {
@@ -4271,7 +4310,7 @@ func (m *RankRewardData) Reset()         { *m = RankRewardData{} }
 func (m *RankRewardData) String() string { return proto.CompactTextString(m) }
 func (*RankRewardData) ProtoMessage()    {}
 func (*RankRewardData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{80}
+	return fileDescriptor_8817812184a13374, []int{81}
 }
 
 func (m *RankRewardData) XXX_Unmarshal(b []byte) error {
@@ -4333,7 +4372,7 @@ func (m *RankRewardList) Reset()         { *m = RankRewardList{} }
 func (m *RankRewardList) String() string { return proto.CompactTextString(m) }
 func (*RankRewardList) ProtoMessage()    {}
 func (*RankRewardList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{81}
+	return fileDescriptor_8817812184a13374, []int{82}
 }
 
 func (m *RankRewardList) XXX_Unmarshal(b []byte) error {
@@ -4387,7 +4426,7 @@ func (m *SSGetRushRankRewardAck) Reset()         { *m = SSGetRushRankRewardAck{}
 func (m *SSGetRushRankRewardAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetRushRankRewardAck) ProtoMessage()    {}
 func (*SSGetRushRankRewardAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{82}
+	return fileDescriptor_8817812184a13374, []int{83}
 }
 
 func (m *SSGetRushRankRewardAck) XXX_Unmarshal(b []byte) error {
@@ -4434,7 +4473,7 @@ func (m *SSTestRushRankRewardNtf) Reset()         { *m = SSTestRushRankRewardNtf
 func (m *SSTestRushRankRewardNtf) String() string { return proto.CompactTextString(m) }
 func (*SSTestRushRankRewardNtf) ProtoMessage()    {}
 func (*SSTestRushRankRewardNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{83}
+	return fileDescriptor_8817812184a13374, []int{84}
 }
 
 func (m *SSTestRushRankRewardNtf) XXX_Unmarshal(b []byte) error {
@@ -4481,7 +4520,7 @@ func (m *SSRushMapScoreNtf) Reset()         { *m = SSRushMapScoreNtf{} }
 func (m *SSRushMapScoreNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRushMapScoreNtf) ProtoMessage()    {}
 func (*SSRushMapScoreNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{84}
+	return fileDescriptor_8817812184a13374, []int{85}
 }
 
 func (m *SSRushMapScoreNtf) XXX_Unmarshal(b []byte) error {
@@ -4530,7 +4569,7 @@ func (m *SSLoadMailNtf) Reset()         { *m = SSLoadMailNtf{} }
 func (m *SSLoadMailNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadMailNtf) ProtoMessage()    {}
 func (*SSLoadMailNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{85}
+	return fileDescriptor_8817812184a13374, []int{86}
 }
 
 func (m *SSLoadMailNtf) XXX_Unmarshal(b []byte) error {
@@ -4581,7 +4620,7 @@ func (m *SSMailSaveNtf) Reset()         { *m = SSMailSaveNtf{} }
 func (m *SSMailSaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSMailSaveNtf) ProtoMessage()    {}
 func (*SSMailSaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{86}
+	return fileDescriptor_8817812184a13374, []int{87}
 }
 
 func (m *SSMailSaveNtf) XXX_Unmarshal(b []byte) error {
@@ -4650,7 +4689,7 @@ func (m *SSCompetitionSaveReq) Reset()         { *m = SSCompetitionSaveReq{} }
 func (m *SSCompetitionSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSCompetitionSaveReq) ProtoMessage()    {}
 func (*SSCompetitionSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{87}
+	return fileDescriptor_8817812184a13374, []int{88}
 }
 
 func (m *SSCompetitionSaveReq) XXX_Unmarshal(b []byte) error {
@@ -4693,7 +4732,7 @@ func (m *SSGetUidByRoleNameReq) Reset()         { *m = SSGetUidByRoleNameReq{} }
 func (m *SSGetUidByRoleNameReq) String() string { return proto.CompactTextString(m) }
 func (*SSGetUidByRoleNameReq) ProtoMessage()    {}
 func (*SSGetUidByRoleNameReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{88}
+	return fileDescriptor_8817812184a13374, []int{89}
 }
 
 func (m *SSGetUidByRoleNameReq) XXX_Unmarshal(b []byte) error {
@@ -4746,7 +4785,7 @@ func (m *SSGetUidByRoleNameAck) Reset()         { *m = SSGetUidByRoleNameAck{} }
 func (m *SSGetUidByRoleNameAck) String() string { return proto.CompactTextString(m) }
 func (*SSGetUidByRoleNameAck) ProtoMessage()    {}
 func (*SSGetUidByRoleNameAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{89}
+	return fileDescriptor_8817812184a13374, []int{90}
 }
 
 func (m *SSGetUidByRoleNameAck) XXX_Unmarshal(b []byte) error {
@@ -4787,7 +4826,7 @@ func (m *SSDBFriendAddFansReq) Reset()         { *m = SSDBFriendAddFansReq{} }
 func (m *SSDBFriendAddFansReq) String() string { return proto.CompactTextString(m) }
 func (*SSDBFriendAddFansReq) ProtoMessage()    {}
 func (*SSDBFriendAddFansReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{90}
+	return fileDescriptor_8817812184a13374, []int{91}
 }
 
 func (m *SSDBFriendAddFansReq) XXX_Unmarshal(b []byte) error {
@@ -4835,7 +4874,7 @@ func (m *SSDBFriendAddFansAck) Reset()         { *m = SSDBFriendAddFansAck{} }
 func (m *SSDBFriendAddFansAck) String() string { return proto.CompactTextString(m) }
 func (*SSDBFriendAddFansAck) ProtoMessage()    {}
 func (*SSDBFriendAddFansAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{91}
+	return fileDescriptor_8817812184a13374, []int{92}
 }
 
 func (m *SSDBFriendAddFansAck) XXX_Unmarshal(b []byte) error {
@@ -4890,7 +4929,7 @@ func (m *SSDBFriendDelFansNtf) Reset()         { *m = SSDBFriendDelFansNtf{} }
 func (m *SSDBFriendDelFansNtf) String() string { return proto.CompactTextString(m) }
 func (*SSDBFriendDelFansNtf) ProtoMessage()    {}
 func (*SSDBFriendDelFansNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{92}
+	return fileDescriptor_8817812184a13374, []int{93}
 }
 
 func (m *SSDBFriendDelFansNtf) XXX_Unmarshal(b []byte) error {
@@ -4938,7 +4977,7 @@ func (m *SSFriendDataSaveReq) Reset()         { *m = SSFriendDataSaveReq{} }
 func (m *SSFriendDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSFriendDataSaveReq) ProtoMessage()    {}
 func (*SSFriendDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{93}
+	return fileDescriptor_8817812184a13374, []int{94}
 }
 
 func (m *SSFriendDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -4991,7 +5030,7 @@ func (m *SSLoadFriendDataNtf) Reset()         { *m = SSLoadFriendDataNtf{} }
 func (m *SSLoadFriendDataNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadFriendDataNtf) ProtoMessage()    {}
 func (*SSLoadFriendDataNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{94}
+	return fileDescriptor_8817812184a13374, []int{95}
 }
 
 func (m *SSLoadFriendDataNtf) XXX_Unmarshal(b []byte) error {
@@ -5037,7 +5076,7 @@ func (m *WorldBossStateInfo) Reset()         { *m = WorldBossStateInfo{} }
 func (m *WorldBossStateInfo) String() string { return proto.CompactTextString(m) }
 func (*WorldBossStateInfo) ProtoMessage()    {}
 func (*WorldBossStateInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{95}
+	return fileDescriptor_8817812184a13374, []int{96}
 }
 
 func (m *WorldBossStateInfo) XXX_Unmarshal(b []byte) error {
@@ -5126,7 +5165,7 @@ func (m *SSRoleLogData) Reset()         { *m = SSRoleLogData{} }
 func (m *SSRoleLogData) String() string { return proto.CompactTextString(m) }
 func (*SSRoleLogData) ProtoMessage()    {}
 func (*SSRoleLogData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{96}
+	return fileDescriptor_8817812184a13374, []int{97}
 }
 
 func (m *SSRoleLogData) XXX_Unmarshal(b []byte) error {
@@ -5207,7 +5246,7 @@ func (m *SSRoleLogNtf) Reset()         { *m = SSRoleLogNtf{} }
 func (m *SSRoleLogNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRoleLogNtf) ProtoMessage()    {}
 func (*SSRoleLogNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{97}
+	return fileDescriptor_8817812184a13374, []int{98}
 }
 
 func (m *SSRoleLogNtf) XXX_Unmarshal(b []byte) error {
@@ -5248,7 +5287,7 @@ func (m *RoleRes2MysqlInfo) Reset()         { *m = RoleRes2MysqlInfo{} }
 func (m *RoleRes2MysqlInfo) String() string { return proto.CompactTextString(m) }
 func (*RoleRes2MysqlInfo) ProtoMessage()    {}
 func (*RoleRes2MysqlInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{98}
+	return fileDescriptor_8817812184a13374, []int{99}
 }
 
 func (m *RoleRes2MysqlInfo) XXX_Unmarshal(b []byte) error {
@@ -5301,7 +5340,7 @@ func (m *SSRoleResMysqlNtf) Reset()         { *m = SSRoleResMysqlNtf{} }
 func (m *SSRoleResMysqlNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRoleResMysqlNtf) ProtoMessage()    {}
 func (*SSRoleResMysqlNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{99}
+	return fileDescriptor_8817812184a13374, []int{100}
 }
 
 func (m *SSRoleResMysqlNtf) XXX_Unmarshal(b []byte) error {
@@ -5336,7 +5375,7 @@ func (m *SSPlayerStateChangeNtf) Reset()         { *m = SSPlayerStateChangeNtf{}
 func (m *SSPlayerStateChangeNtf) String() string { return proto.CompactTextString(m) }
 func (*SSPlayerStateChangeNtf) ProtoMessage()    {}
 func (*SSPlayerStateChangeNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{100}
+	return fileDescriptor_8817812184a13374, []int{101}
 }
 
 func (m *SSPlayerStateChangeNtf) XXX_Unmarshal(b []byte) error {
@@ -5398,7 +5437,7 @@ func (m *SSCardCollectionChangeNtf) Reset()         { *m = SSCardCollectionChang
 func (m *SSCardCollectionChangeNtf) String() string { return proto.CompactTextString(m) }
 func (*SSCardCollectionChangeNtf) ProtoMessage()    {}
 func (*SSCardCollectionChangeNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{101}
+	return fileDescriptor_8817812184a13374, []int{102}
 }
 
 func (m *SSCardCollectionChangeNtf) XXX_Unmarshal(b []byte) error {
@@ -5453,7 +5492,7 @@ func (m *SSLoadPetNtf) Reset()         { *m = SSLoadPetNtf{} }
 func (m *SSLoadPetNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadPetNtf) ProtoMessage()    {}
 func (*SSLoadPetNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{102}
+	return fileDescriptor_8817812184a13374, []int{103}
 }
 
 func (m *SSLoadPetNtf) XXX_Unmarshal(b []byte) error {
@@ -5501,7 +5540,7 @@ func (m *SSLoadSkillEquipNtf) Reset()         { *m = SSLoadSkillEquipNtf{} }
 func (m *SSLoadSkillEquipNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadSkillEquipNtf) ProtoMessage()    {}
 func (*SSLoadSkillEquipNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{103}
+	return fileDescriptor_8817812184a13374, []int{104}
 }
 
 func (m *SSLoadSkillEquipNtf) XXX_Unmarshal(b []byte) error {
@@ -5551,7 +5590,7 @@ func (m *SSPetQueryAssistInfoReq) Reset()         { *m = SSPetQueryAssistInfoReq
 func (m *SSPetQueryAssistInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSPetQueryAssistInfoReq) ProtoMessage()    {}
 func (*SSPetQueryAssistInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{104}
+	return fileDescriptor_8817812184a13374, []int{105}
 }
 
 func (m *SSPetQueryAssistInfoReq) XXX_Unmarshal(b []byte) error {
@@ -5612,7 +5651,7 @@ func (m *SSPetQueryAssistInfoAck) Reset()         { *m = SSPetQueryAssistInfoAck
 func (m *SSPetQueryAssistInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSPetQueryAssistInfoAck) ProtoMessage()    {}
 func (*SSPetQueryAssistInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{105}
+	return fileDescriptor_8817812184a13374, []int{106}
 }
 
 func (m *SSPetQueryAssistInfoAck) XXX_Unmarshal(b []byte) error {
@@ -5659,7 +5698,7 @@ func (m *SSPetSetAssistNtf) Reset()         { *m = SSPetSetAssistNtf{} }
 func (m *SSPetSetAssistNtf) String() string { return proto.CompactTextString(m) }
 func (*SSPetSetAssistNtf) ProtoMessage()    {}
 func (*SSPetSetAssistNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{106}
+	return fileDescriptor_8817812184a13374, []int{107}
 }
 
 func (m *SSPetSetAssistNtf) XXX_Unmarshal(b []byte) error {
@@ -5704,7 +5743,7 @@ func (m *SSPetBondAssistListReq) Reset()         { *m = SSPetBondAssistListReq{}
 func (m *SSPetBondAssistListReq) String() string { return proto.CompactTextString(m) }
 func (*SSPetBondAssistListReq) ProtoMessage()    {}
 func (*SSPetBondAssistListReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{107}
+	return fileDescriptor_8817812184a13374, []int{108}
 }
 
 func (m *SSPetBondAssistListReq) XXX_Unmarshal(b []byte) error {
@@ -5779,7 +5818,7 @@ func (m *SSPetBondAssistListAck) Reset()         { *m = SSPetBondAssistListAck{}
 func (m *SSPetBondAssistListAck) String() string { return proto.CompactTextString(m) }
 func (*SSPetBondAssistListAck) ProtoMessage()    {}
 func (*SSPetBondAssistListAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{108}
+	return fileDescriptor_8817812184a13374, []int{109}
 }
 
 func (m *SSPetBondAssistListAck) XXX_Unmarshal(b []byte) error {
@@ -5825,7 +5864,7 @@ func (m *SSPetAdvAchievementReq) Reset()         { *m = SSPetAdvAchievementReq{}
 func (m *SSPetAdvAchievementReq) String() string { return proto.CompactTextString(m) }
 func (*SSPetAdvAchievementReq) ProtoMessage()    {}
 func (*SSPetAdvAchievementReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{109}
+	return fileDescriptor_8817812184a13374, []int{110}
 }
 
 func (m *SSPetAdvAchievementReq) XXX_Unmarshal(b []byte) error {
@@ -5866,7 +5905,7 @@ func (m *SSPetAdvAchievementAck) Reset()         { *m = SSPetAdvAchievementAck{}
 func (m *SSPetAdvAchievementAck) String() string { return proto.CompactTextString(m) }
 func (*SSPetAdvAchievementAck) ProtoMessage()    {}
 func (*SSPetAdvAchievementAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{110}
+	return fileDescriptor_8817812184a13374, []int{111}
 }
 
 func (m *SSPetAdvAchievementAck) XXX_Unmarshal(b []byte) error {
@@ -5920,7 +5959,7 @@ func (m *SSPetAdvAchievementSetNtf) Reset()         { *m = SSPetAdvAchievementSe
 func (m *SSPetAdvAchievementSetNtf) String() string { return proto.CompactTextString(m) }
 func (*SSPetAdvAchievementSetNtf) ProtoMessage()    {}
 func (*SSPetAdvAchievementSetNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{111}
+	return fileDescriptor_8817812184a13374, []int{112}
 }
 
 func (m *SSPetAdvAchievementSetNtf) XXX_Unmarshal(b []byte) error {
@@ -5969,7 +6008,7 @@ func (m *SSRushPetInfoChangeNtf) Reset()         { *m = SSRushPetInfoChangeNtf{}
 func (m *SSRushPetInfoChangeNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRushPetInfoChangeNtf) ProtoMessage()    {}
 func (*SSRushPetInfoChangeNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{112}
+	return fileDescriptor_8817812184a13374, []int{113}
 }
 
 func (m *SSRushPetInfoChangeNtf) XXX_Unmarshal(b []byte) error {
@@ -6024,7 +6063,7 @@ func (m *SSRushSkillInfoChangeNtf) Reset()         { *m = SSRushSkillInfoChangeN
 func (m *SSRushSkillInfoChangeNtf) String() string { return proto.CompactTextString(m) }
 func (*SSRushSkillInfoChangeNtf) ProtoMessage()    {}
 func (*SSRushSkillInfoChangeNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{113}
+	return fileDescriptor_8817812184a13374, []int{114}
 }
 
 func (m *SSRushSkillInfoChangeNtf) XXX_Unmarshal(b []byte) error {
@@ -6072,7 +6111,7 @@ func (m *SSExpeditionDBHelpReq) Reset()         { *m = SSExpeditionDBHelpReq{} }
 func (m *SSExpeditionDBHelpReq) String() string { return proto.CompactTextString(m) }
 func (*SSExpeditionDBHelpReq) ProtoMessage()    {}
 func (*SSExpeditionDBHelpReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{114}
+	return fileDescriptor_8817812184a13374, []int{115}
 }
 
 func (m *SSExpeditionDBHelpReq) XXX_Unmarshal(b []byte) error {
@@ -6120,7 +6159,7 @@ func (m *SSExpeditionDBHelpAck) Reset()         { *m = SSExpeditionDBHelpAck{} }
 func (m *SSExpeditionDBHelpAck) String() string { return proto.CompactTextString(m) }
 func (*SSExpeditionDBHelpAck) ProtoMessage()    {}
 func (*SSExpeditionDBHelpAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{115}
+	return fileDescriptor_8817812184a13374, []int{116}
 }
 
 func (m *SSExpeditionDBHelpAck) XXX_Unmarshal(b []byte) error {
@@ -6174,7 +6213,7 @@ func (m *SSLoadInvitationDataNtf) Reset()         { *m = SSLoadInvitationDataNtf
 func (m *SSLoadInvitationDataNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadInvitationDataNtf) ProtoMessage()    {}
 func (*SSLoadInvitationDataNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{116}
+	return fileDescriptor_8817812184a13374, []int{117}
 }
 
 func (m *SSLoadInvitationDataNtf) XXX_Unmarshal(b []byte) error {
@@ -6224,7 +6263,7 @@ func (m *SSInvitationSaveNtf) Reset()         { *m = SSInvitationSaveNtf{} }
 func (m *SSInvitationSaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationSaveNtf) ProtoMessage()    {}
 func (*SSInvitationSaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{117}
+	return fileDescriptor_8817812184a13374, []int{118}
 }
 
 func (m *SSInvitationSaveNtf) XXX_Unmarshal(b []byte) error {
@@ -6342,7 +6381,7 @@ func (m *SSInvitationGenNumberReq) Reset()         { *m = SSInvitationGenNumberR
 func (m *SSInvitationGenNumberReq) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationGenNumberReq) ProtoMessage()    {}
 func (*SSInvitationGenNumberReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{118}
+	return fileDescriptor_8817812184a13374, []int{119}
 }
 
 func (m *SSInvitationGenNumberReq) XXX_Unmarshal(b []byte) error {
@@ -6389,7 +6428,7 @@ func (m *SSInvitationGenNumberAck) Reset()         { *m = SSInvitationGenNumberA
 func (m *SSInvitationGenNumberAck) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationGenNumberAck) ProtoMessage()    {}
 func (*SSInvitationGenNumberAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{119}
+	return fileDescriptor_8817812184a13374, []int{120}
 }
 
 func (m *SSInvitationGenNumberAck) XXX_Unmarshal(b []byte) error {
@@ -6436,7 +6475,7 @@ func (m *SSInvitationNumberUserInfoReq) Reset()         { *m = SSInvitationNumbe
 func (m *SSInvitationNumberUserInfoReq) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationNumberUserInfoReq) ProtoMessage()    {}
 func (*SSInvitationNumberUserInfoReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{120}
+	return fileDescriptor_8817812184a13374, []int{121}
 }
 
 func (m *SSInvitationNumberUserInfoReq) XXX_Unmarshal(b []byte) error {
@@ -6478,7 +6517,7 @@ func (m *SSInvitationNumberUserInfoAck) Reset()         { *m = SSInvitationNumbe
 func (m *SSInvitationNumberUserInfoAck) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationNumberUserInfoAck) ProtoMessage()    {}
 func (*SSInvitationNumberUserInfoAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{121}
+	return fileDescriptor_8817812184a13374, []int{122}
 }
 
 func (m *SSInvitationNumberUserInfoAck) XXX_Unmarshal(b []byte) error {
@@ -6541,7 +6580,7 @@ func (m *SSInvitationMemberNoticeMasterNtf) Reset()         { *m = SSInvitationM
 func (m *SSInvitationMemberNoticeMasterNtf) String() string { return proto.CompactTextString(m) }
 func (*SSInvitationMemberNoticeMasterNtf) ProtoMessage()    {}
 func (*SSInvitationMemberNoticeMasterNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{122}
+	return fileDescriptor_8817812184a13374, []int{123}
 }
 
 func (m *SSInvitationMemberNoticeMasterNtf) XXX_Unmarshal(b []byte) error {
@@ -6596,7 +6635,7 @@ func (m *SSDaoChang100SaveNtf) Reset()         { *m = SSDaoChang100SaveNtf{} }
 func (m *SSDaoChang100SaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSDaoChang100SaveNtf) ProtoMessage()    {}
 func (*SSDaoChang100SaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{123}
+	return fileDescriptor_8817812184a13374, []int{124}
 }
 
 func (m *SSDaoChang100SaveNtf) XXX_Unmarshal(b []byte) error {
@@ -6643,7 +6682,7 @@ func (m *SSUpdateKeepSakeRankNtf) Reset()         { *m = SSUpdateKeepSakeRankNtf
 func (m *SSUpdateKeepSakeRankNtf) String() string { return proto.CompactTextString(m) }
 func (*SSUpdateKeepSakeRankNtf) ProtoMessage()    {}
 func (*SSUpdateKeepSakeRankNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{124}
+	return fileDescriptor_8817812184a13374, []int{125}
 }
 
 func (m *SSUpdateKeepSakeRankNtf) XXX_Unmarshal(b []byte) error {
@@ -6690,7 +6729,7 @@ func (m *SSDaoChang100WheelLogAddNtf) Reset()         { *m = SSDaoChang100WheelL
 func (m *SSDaoChang100WheelLogAddNtf) String() string { return proto.CompactTextString(m) }
 func (*SSDaoChang100WheelLogAddNtf) ProtoMessage()    {}
 func (*SSDaoChang100WheelLogAddNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{125}
+	return fileDescriptor_8817812184a13374, []int{126}
 }
 
 func (m *SSDaoChang100WheelLogAddNtf) XXX_Unmarshal(b []byte) error {
@@ -6730,7 +6769,7 @@ func (m *SSCrossDataSaveNtf) Reset()         { *m = SSCrossDataSaveNtf{} }
 func (m *SSCrossDataSaveNtf) String() string { return proto.CompactTextString(m) }
 func (*SSCrossDataSaveNtf) ProtoMessage()    {}
 func (*SSCrossDataSaveNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{126}
+	return fileDescriptor_8817812184a13374, []int{127}
 }
 
 func (m *SSCrossDataSaveNtf) XXX_Unmarshal(b []byte) error {
@@ -6770,7 +6809,7 @@ func (m *SSHeadDataSaveReq) Reset()         { *m = SSHeadDataSaveReq{} }
 func (m *SSHeadDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSHeadDataSaveReq) ProtoMessage()    {}
 func (*SSHeadDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{127}
+	return fileDescriptor_8817812184a13374, []int{128}
 }
 
 func (m *SSHeadDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -6812,7 +6851,7 @@ func (m *SSUpdateHeadDataSaveReq) Reset()         { *m = SSUpdateHeadDataSaveReq
 func (m *SSUpdateHeadDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSUpdateHeadDataSaveReq) ProtoMessage()    {}
 func (*SSUpdateHeadDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{128}
+	return fileDescriptor_8817812184a13374, []int{129}
 }
 
 func (m *SSUpdateHeadDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -6865,7 +6904,7 @@ func (m *SSLoadCrossDataNtf) Reset()         { *m = SSLoadCrossDataNtf{} }
 func (m *SSLoadCrossDataNtf) String() string { return proto.CompactTextString(m) }
 func (*SSLoadCrossDataNtf) ProtoMessage()    {}
 func (*SSLoadCrossDataNtf) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{129}
+	return fileDescriptor_8817812184a13374, []int{130}
 }
 
 func (m *SSLoadCrossDataNtf) XXX_Unmarshal(b []byte) error {
@@ -6904,7 +6943,7 @@ func (m *SSWishBoxDataSaveReq) Reset()         { *m = SSWishBoxDataSaveReq{} }
 func (m *SSWishBoxDataSaveReq) String() string { return proto.CompactTextString(m) }
 func (*SSWishBoxDataSaveReq) ProtoMessage()    {}
 func (*SSWishBoxDataSaveReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8817812184a13374, []int{130}
+	return fileDescriptor_8817812184a13374, []int{131}
 }
 
 func (m *SSWishBoxDataSaveReq) XXX_Unmarshal(b []byte) error {
@@ -6932,6 +6971,54 @@ func (m *SSWishBoxDataSaveReq) GetWishs() *RoleWish {
 	return nil
 }
 
+// bt服务版
+type SSBTDataSaveNtf struct {
+	BtBoliData           *BTBoliData `protobuf:"bytes,1,opt,name=bt_boli_data,json=btBoliData,proto3" json:"bt_boli_data,omitempty"`
+	BaseData             *BTBaseData `protobuf:"bytes,2,opt,name=base_data,json=baseData,proto3" json:"base_data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *SSBTDataSaveNtf) Reset()         { *m = SSBTDataSaveNtf{} }
+func (m *SSBTDataSaveNtf) String() string { return proto.CompactTextString(m) }
+func (*SSBTDataSaveNtf) ProtoMessage()    {}
+func (*SSBTDataSaveNtf) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8817812184a13374, []int{132}
+}
+
+func (m *SSBTDataSaveNtf) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SSBTDataSaveNtf.Unmarshal(m, b)
+}
+func (m *SSBTDataSaveNtf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SSBTDataSaveNtf.Marshal(b, m, deterministic)
+}
+func (m *SSBTDataSaveNtf) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SSBTDataSaveNtf.Merge(m, src)
+}
+func (m *SSBTDataSaveNtf) XXX_Size() int {
+	return xxx_messageInfo_SSBTDataSaveNtf.Size(m)
+}
+func (m *SSBTDataSaveNtf) XXX_DiscardUnknown() {
+	xxx_messageInfo_SSBTDataSaveNtf.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SSBTDataSaveNtf proto.InternalMessageInfo
+
+func (m *SSBTDataSaveNtf) GetBtBoliData() *BTBoliData {
+	if m != nil {
+		return m.BtBoliData
+	}
+	return nil
+}
+
+func (m *SSBTDataSaveNtf) GetBaseData() *BTBaseData {
+	if m != nil {
+		return m.BaseData
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterType((*SSAccountGetRoleListReq)(nil), "serverproto.SSAccountGetRoleListReq")
 	proto.RegisterType((*SSAccountGetRoleListAck)(nil), "serverproto.SSAccountGetRoleListAck")
@@ -6967,6 +7054,7 @@ func init() {
 	proto.RegisterType((*SSStatisticsDataSaveReq)(nil), "serverproto.SSStatisticsDataSaveReq")
 	proto.RegisterType((*ActivityDataSaveDetail)(nil), "serverproto.ActivityDataSaveDetail")
 	proto.RegisterType((*SSActivityDataSaveReq)(nil), "serverproto.SSActivityDataSaveReq")
+	proto.RegisterType((*SSActivitySmashEggsMsgSaveNtf)(nil), "serverproto.SSActivitySmashEggsMsgSaveNtf")
 	proto.RegisterType((*SSPetDataSaveReq)(nil), "serverproto.SSPetDataSaveReq")
 	proto.RegisterType((*SSRuneDataSaveReq)(nil), "serverproto.SSRuneDataSaveReq")
 	proto.RegisterType((*SSKeepSakeSaveReq)(nil), "serverproto.SSKeepSakeSaveReq")
@@ -7064,318 +7152,325 @@ func init() {
 	proto.RegisterType((*SSUpdateHeadDataSaveReq)(nil), "serverproto.SSUpdateHeadDataSaveReq")
 	proto.RegisterType((*SSLoadCrossDataNtf)(nil), "serverproto.SSLoadCrossDataNtf")
 	proto.RegisterType((*SSWishBoxDataSaveReq)(nil), "serverproto.SSWishBoxDataSaveReq")
+	proto.RegisterType((*SSBTDataSaveNtf)(nil), "serverproto.SSBTDataSaveNtf")
 }
 
 func init() { proto.RegisterFile("db.proto", fileDescriptor_8817812184a13374) }
 
 var fileDescriptor_8817812184a13374 = []byte{
-	// 4919 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7b, 0xdd, 0x8f, 0x24, 0x47,
-	0x52, 0xb8, 0xfa, 0x6b, 0xba, 0x3b, 0x7a, 0x7a, 0x66, 0xb6, 0xbc, 0xde, 0x9d, 0xbd, 0x3d, 0xfb,
-	0xe6, 0xca, 0x67, 0xff, 0xd6, 0x1f, 0x67, 0xdf, 0xed, 0xfa, 0xb7, 0xf6, 0xed, 0x19, 0xdb, 0x33,
-	0xb3, 0xbb, 0xe3, 0x39, 0xef, 0xac, 0xc7, 0xd9, 0x3b, 0x6b, 0x04, 0x42, 0xa5, 0xec, 0xae, 0xec,
-	0xee, 0x62, 0xab, 0xab, 0x7a, 0xab, 0xaa, 0x67, 0x77, 0x78, 0x42, 0x08, 0x10, 0xf0, 0x70, 0xe2,
-	0x85, 0x07, 0x74, 0x3c, 0x80, 0x90, 0x40, 0x48, 0x08, 0x89, 0x87, 0x43, 0x88, 0x17, 0x10, 0xfc,
-	0x05, 0x08, 0x24, 0x24, 0x1e, 0x79, 0x41, 0xf0, 0x57, 0xa0, 0x88, 0xc8, 0xaa, 0xca, 0xea, 0xae,
-	0xee, 0x9d, 0xb1, 0x79, 0xe0, 0xad, 0x2b, 0x32, 0x32, 0x32, 0x32, 0x22, 0x32, 0x3e, 0x32, 0xa3,
-	0xa1, 0xe5, 0xf6, 0xdf, 0x9d, 0x46, 0x61, 0x12, 0x5a, 0x9d, 0x58, 0x45, 0xa7, 0x2a, 0xa2, 0x8f,
-	0x6f, 0xc1, 0x2c, 0x56, 0x11, 0x0f, 0xd8, 0xbf, 0x5d, 0x81, 0xab, 0xbd, 0xde, 0xee, 0x60, 0x10,
-	0xce, 0x82, 0xe4, 0x40, 0x25, 0x22, 0xf4, 0xd5, 0x03, 0x2f, 0x4e, 0x84, 0x7a, 0x6a, 0xbd, 0x02,
-	0x30, 0x18, 0xcb, 0x20, 0x50, 0xbe, 0xe3, 0xb9, 0xdb, 0x95, 0x9d, 0xca, 0x8d, 0xba, 0x68, 0x6b,
-	0xc8, 0xa1, 0x6b, 0x5d, 0x85, 0x66, 0x38, 0x55, 0x01, 0x8e, 0x55, 0x77, 0x2a, 0x37, 0xda, 0x62,
-	0x0d, 0x3f, 0x0f, 0x5d, 0xeb, 0x5b, 0xd0, 0x9a, 0xfa, 0x32, 0x19, 0x86, 0xd1, 0x64, 0xbb, 0x46,
-	0x23, 0xd9, 0x37, 0x4e, 0xfa, 0xb5, 0x30, 0x50, 0x38, 0xa9, 0xbe, 0x53, 0xb9, 0xd1, 0x10, 0x6b,
-	0xf8, 0x79, 0xe8, 0xda, 0xb3, 0x72, 0x3e, 0x76, 0x07, 0x4f, 0xac, 0x77, 0xa1, 0x11, 0x85, 0xbe,
-	0x8a, 0xb7, 0x2b, 0x3b, 0xb5, 0x1b, 0x9d, 0x9b, 0xdb, 0xef, 0x1a, 0x9b, 0x79, 0x57, 0x4f, 0x41,
-	0x7c, 0xc1, 0x68, 0xd6, 0x5b, 0x70, 0xc9, 0x8b, 0x9d, 0x81, 0x1f, 0xc6, 0xca, 0x89, 0xd4, 0xc8,
-	0x8b, 0x13, 0x15, 0x11, 0x8b, 0x2d, 0xb1, 0xe9, 0xc5, 0xfb, 0x08, 0x17, 0x1a, 0x6c, 0xff, 0x55,
-	0x05, 0xb6, 0x7a, 0xbd, 0x5d, 0xd7, 0x45, 0x02, 0x7b, 0x12, 0x47, 0x9e, 0x5a, 0x6f, 0x42, 0xbd,
-	0x2f, 0x63, 0x45, 0x5b, 0xee, 0xdc, 0x7c, 0xb9, 0xb0, 0x5e, 0x86, 0x47, 0x28, 0xd6, 0x77, 0xa0,
-	0x23, 0x07, 0x89, 0x77, 0xaa, 0x9c, 0x41, 0xe8, 0x2a, 0x2d, 0x08, 0x60, 0xd0, 0x7e, 0xe8, 0x2a,
-	0x53, 0x4a, 0xb5, 0x82, 0x94, 0xbe, 0x0b, 0xeb, 0xf1, 0xac, 0xef, 0x64, 0x92, 0xaa, 0xd3, 0x68,
-	0x27, 0x9e, 0xf5, 0x8f, 0x53, 0x61, 0x59, 0x50, 0x47, 0xe9, 0x6c, 0x37, 0x48, 0x52, 0xf4, 0xdb,
-	0x7e, 0x30, 0xc7, 0x2f, 0x0a, 0x68, 0x0b, 0x6a, 0x2a, 0x8a, 0x88, 0xdd, 0x86, 0xc0, 0x9f, 0xd6,
-	0x1b, 0xb0, 0x39, 0x88, 0x94, 0x4c, 0x94, 0x83, 0x22, 0x71, 0x66, 0x5a, 0x47, 0x75, 0xd1, 0x65,
-	0x30, 0xce, 0x3e, 0xf1, 0x5c, 0xfb, 0x1e, 0xbc, 0x94, 0x49, 0x5d, 0x13, 0x7d, 0x98, 0x0c, 0x2f,
-	0x2a, 0x71, 0xfb, 0x23, 0x58, 0xef, 0xf5, 0xb4, 0xd6, 0x50, 0x80, 0xef, 0x80, 0x45, 0xeb, 0xa6,
-	0xd2, 0x77, 0x12, 0x6f, 0xa2, 0xb4, 0x05, 0x6d, 0x45, 0x84, 0xc4, 0x03, 0x8f, 0xbc, 0x89, 0xb2,
-	0x0f, 0x8c, 0xd9, 0xe5, 0xdb, 0x79, 0x1d, 0xea, 0x38, 0x8b, 0xf6, 0xd0, 0xb9, 0x79, 0x69, 0x41,
-	0x21, 0x82, 0x86, 0xed, 0xcb, 0x60, 0x65, 0x84, 0xee, 0x7b, 0x81, 0x17, 0x8f, 0x1f, 0x26, 0x43,
-	0xfb, 0x63, 0xb8, 0xd4, 0xeb, 0xa5, 0xe2, 0xea, 0xc9, 0xd3, 0x0b, 0xaa, 0x98, 0xe7, 0x7f, 0xa6,
-	0xa2, 0xf0, 0xae, 0x4c, 0xa4, 0x31, 0x7f, 0xac, 0xa2, 0x70, 0xe9, 0x7c, 0xc4, 0x17, 0x84, 0x62,
-	0xef, 0x21, 0x57, 0xf7, 0x9e, 0xce, 0xbc, 0xa9, 0x49, 0xe0, 0x1d, 0x68, 0x28, 0x84, 0x69, 0x0a,
-	0x57, 0x16, 0x28, 0xd0, 0x0c, 0xc1, 0x48, 0xf6, 0xef, 0xd0, 0x31, 0xed, 0x3d, 0xf1, 0x7c, 0x7f,
-	0x81, 0xd2, 0x47, 0xd0, 0x89, 0x71, 0xc0, 0x31, 0xe9, 0x5d, 0x5f, 0xa0, 0x97, 0x4f, 0x16, 0x10,
-	0x67, 0xbf, 0xad, 0xf7, 0xe0, 0xb2, 0x31, 0xdb, 0x71, 0x95, 0xef, 0xf8, 0x5e, 0x9c, 0x6c, 0x57,
-	0x77, 0x6a, 0x37, 0xba, 0xe2, 0x52, 0x8e, 0x79, 0x57, 0xf9, 0x78, 0x20, 0xed, 0x3b, 0x68, 0x80,
-	0x7b, 0x72, 0x64, 0xb2, 0xf0, 0x06, 0xd4, 0xfa, 0x72, 0xa4, 0x97, 0xbe, 0x5c, 0x22, 0xcc, 0x91,
-	0x40, 0x04, 0x16, 0xe5, 0xfe, 0xb8, 0xc8, 0xff, 0x9b, 0x50, 0x1f, 0x8c, 0x33, 0xc6, 0x17, 0x45,
-	0x89, 0xf8, 0x82, 0x50, 0xec, 0x7d, 0x5c, 0xfb, 0x48, 0x16, 0xa6, 0xbf, 0x07, 0x2d, 0xb2, 0xb5,
-	0x89, 0x9c, 0x2e, 0x65, 0xe0, 0x48, 0x4e, 0x45, 0x33, 0xe2, 0x1f, 0x9a, 0x09, 0x19, 0xb9, 0xf3,
-	0x4c, 0xc8, 0xc8, 0x5d, 0xce, 0x84, 0x8c, 0x5c, 0x41, 0x28, 0xf6, 0x4f, 0xe0, 0x72, 0xaf, 0x77,
-	0x5f, 0xc6, 0x63, 0x2f, 0x0c, 0x4c, 0x12, 0x37, 0xa1, 0x39, 0x64, 0xa8, 0xa6, 0xb2, 0xbd, 0x40,
-	0x45, 0xcf, 0x12, 0x29, 0xa2, 0x7d, 0x1f, 0xcf, 0xdf, 0x9e, 0x4c, 0x12, 0x5f, 0x15, 0xf7, 0xb4,
-	0xd6, 0x27, 0xa0, 0xa6, 0x74, 0xb5, 0x44, 0xa4, 0x38, 0x2c, 0x34, 0x9a, 0xfd, 0xf3, 0x0a, 0x32,
-	0xb5, 0x3f, 0x96, 0xc9, 0x91, 0x8a, 0x63, 0x39, 0xca, 0xec, 0x7c, 0x17, 0x3a, 0xc3, 0x28, 0x9c,
-	0xa0, 0x9b, 0x39, 0x53, 0x91, 0x26, 0xb7, 0x53, 0x20, 0x87, 0xb3, 0x8e, 0x69, 0x78, 0x2f, 0xf2,
-	0xd4, 0xf0, 0x30, 0x18, 0x86, 0x02, 0x70, 0x12, 0x03, 0xad, 0x5f, 0x80, 0x4e, 0x38, 0x1c, 0xfa,
-	0x5e, 0xa0, 0x9c, 0x49, 0x3c, 0xd2, 0x67, 0xf0, 0xdb, 0x0b, 0x24, 0xf4, 0xc2, 0x3c, 0x5d, 0x4f,
-	0x38, 0x8a, 0x47, 0xd6, 0x75, 0x68, 0x27, 0x32, 0x1a, 0xa9, 0x24, 0x75, 0x81, 0x75, 0xd1, 0x62,
-	0xc0, 0xa1, 0xcb, 0xba, 0x78, 0x24, 0xe3, 0x27, 0x73, 0xba, 0x48, 0x64, 0xfc, 0x64, 0xa9, 0x2e,
-	0x10, 0x5f, 0x10, 0x8a, 0xfd, 0x39, 0xbc, 0xcc, 0x67, 0xfb, 0x6e, 0x24, 0x9f, 0x15, 0x95, 0xd1,
-	0x26, 0xab, 0x70, 0x23, 0xf9, 0x6c, 0x29, 0x21, 0x9c, 0x24, 0xc8, 0x7a, 0xf0, 0x97, 0xbd, 0x0d,
-	0x57, 0x58, 0x86, 0x5f, 0x30, 0xf7, 0xbc, 0x7f, 0xa1, 0x9e, 0xda, 0xfd, 0xd2, 0x11, 0xf4, 0x55,
-	0x9f, 0xc1, 0xcb, 0xb4, 0x8e, 0x21, 0x21, 0x3e, 0x3f, 0xcb, 0xad, 0x59, 0x26, 0x82, 0xbc, 0xe3,
-	0x17, 0x99, 0x8c, 0xe8, 0x5c, 0xfd, 0x6d, 0x05, 0x17, 0x21, 0xdd, 0xa6, 0x6a, 0xc8, 0x95, 0x08,
-	0x7d, 0x84, 0x39, 0x5e, 0x30, 0x4c, 0x5d, 0x8e, 0x5d, 0x54, 0x40, 0x38, 0x99, 0x84, 0xc1, 0xbc,
-	0x16, 0xdb, 0xfd, 0xf4, 0xe7, 0xf2, 0x60, 0x3d, 0x17, 0xc0, 0x6a, 0x0b, 0x01, 0xec, 0xc5, 0x71,
-	0xca, 0xee, 0xa1, 0x16, 0xb4, 0xdf, 0xcd, 0x57, 0x57, 0x4f, 0x31, 0x80, 0x25, 0x67, 0x53, 0xa5,
-	0x5d, 0x39, 0xfd, 0xc6, 0xd0, 0xc4, 0xc6, 0x88, 0x51, 0x29, 0xf7, 0x35, 0x75, 0xd1, 0x65, 0xf0,
-	0x89, 0xe7, 0x92, 0x3c, 0x82, 0x32, 0xa2, 0x28, 0xf2, 0x32, 0xa2, 0x45, 0x09, 0x55, 0x29, 0x6a,
-	0x5d, 0x4c, 0x42, 0xf6, 0xe7, 0xe8, 0xa6, 0x77, 0x23, 0x15, 0x48, 0xd3, 0x8e, 0xfe, 0x3f, 0x00,
-	0xe9, 0x57, 0xe2, 0xc0, 0x52, 0x5f, 0x4d, 0xd3, 0x04, 0x59, 0x1c, 0xfd, 0x64, 0x27, 0xc9, 0xd1,
-	0xd0, 0x35, 0x9c, 0x64, 0xa4, 0xdc, 0xa5, 0x3e, 0x4a, 0x28, 0x57, 0x20, 0x02, 0x9f, 0x89, 0xde,
-	0x38, 0x9c, 0x77, 0x92, 0xf1, 0x38, 0x5c, 0xee, 0x24, 0x11, 0x5f, 0x10, 0x0a, 0xc7, 0x9b, 0x47,
-	0xe1, 0x33, 0x15, 0xcd, 0xc5, 0x9b, 0x04, 0x61, 0x4b, 0xf7, 0x40, 0x33, 0x04, 0x23, 0x31, 0x8d,
-	0x83, 0x99, 0xe7, 0xbb, 0x73, 0x34, 0x46, 0x08, 0x5b, 0x4a, 0x83, 0x66, 0x08, 0x46, 0xb2, 0x4f,
-	0x28, 0x64, 0x25, 0x32, 0xf1, 0xe2, 0xc4, 0x1b, 0xc4, 0x26, 0xa1, 0x3b, 0x00, 0x71, 0x36, 0xa0,
-	0xa9, 0x7d, 0x6b, 0x71, 0x4f, 0x29, 0x8a, 0x30, 0xb0, 0xed, 0xff, 0xae, 0xc0, 0x95, 0x5d, 0x34,
-	0x4f, 0x2f, 0x39, 0x4b, 0x69, 0xde, 0x55, 0x89, 0xf4, 0x7c, 0xeb, 0x35, 0xe8, 0x4a, 0x1e, 0xf1,
-	0x54, 0x9c, 0xe6, 0xac, 0x0d, 0xb1, 0x9e, 0x03, 0x0f, 0x5d, 0xeb, 0x7e, 0x86, 0x74, 0xe6, 0xb8,
-	0x32, 0x91, 0xda, 0xa1, 0x7d, 0x77, 0x2e, 0xc7, 0x49, 0x67, 0x30, 0x69, 0x5c, 0x28, 0xa3, 0x43,
-	0xcb, 0x5a, 0x9f, 0xc0, 0x16, 0xe6, 0xc2, 0x23, 0xe5, 0xa0, 0x27, 0x62, 0x43, 0xae, 0x91, 0xe1,
-	0x15, 0xb5, 0x93, 0x7a, 0x37, 0xb1, 0xc1, 0xe8, 0xf8, 0x8d, 0x06, 0x6e, 0xd9, 0xd0, 0xc5, 0x68,
-	0x9b, 0xcf, 0xae, 0x53, 0xc8, 0xed, 0xb8, 0xca, 0x4f, 0x71, 0xec, 0x7f, 0xaf, 0xe0, 0x29, 0x98,
-	0xdf, 0x2e, 0x8a, 0xf0, 0x63, 0xe8, 0xb2, 0x61, 0xea, 0x31, 0x2d, 0xc5, 0x6b, 0x8b, 0xb6, 0xa9,
-	0x11, 0xc4, 0x7a, 0x64, 0x7c, 0x59, 0x27, 0x70, 0x59, 0xb3, 0x9f, 0x49, 0x23, 0x3b, 0x8b, 0x9d,
-	0x9b, 0xaf, 0x95, 0x49, 0x63, 0x4e, 0xdc, 0xc2, 0x62, 0x02, 0xe9, 0x28, 0x6d, 0xea, 0x2d, 0xb8,
-	0x84, 0x9b, 0x2a, 0xd2, 0x44, 0xb1, 0x34, 0xc4, 0xa6, 0xab, 0x7c, 0x13, 0xd7, 0xfe, 0x1b, 0xca,
-	0xbd, 0x8f, 0x55, 0x62, 0xee, 0x6b, 0x07, 0xd6, 0xa7, 0x2a, 0xc9, 0xf3, 0x90, 0x0a, 0x09, 0x05,
-	0xa6, 0x2a, 0xd1, 0x09, 0x08, 0xca, 0xad, 0x1f, 0x06, 0x6e, 0x31, 0x55, 0x69, 0x88, 0x0e, 0x02,
-	0x53, 0x9c, 0x34, 0x29, 0x98, 0xaa, 0x84, 0x5c, 0x5a, 0xd9, 0x81, 0x3b, 0x56, 0x09, 0x27, 0x05,
-	0xc7, 0x2a, 0xb1, 0xde, 0x06, 0x0b, 0x97, 0x9d, 0x4b, 0x82, 0x58, 0x23, 0x9b, 0x53, 0x95, 0x14,
-	0x52, 0xa0, 0x03, 0xca, 0x28, 0x67, 0x81, 0x2a, 0x8b, 0x38, 0xd1, 0x2c, 0x58, 0x9e, 0x56, 0xe2,
-	0x24, 0x8e, 0x38, 0xf8, 0xcb, 0x7e, 0x84, 0x84, 0x3e, 0x57, 0x6a, 0xda, 0x93, 0x4f, 0xb2, 0x90,
-	0xfd, 0x09, 0x6c, 0x10, 0xa1, 0x27, 0x4a, 0x4d, 0x9d, 0x58, 0x3e, 0x51, 0x4b, 0x55, 0x9b, 0xce,
-	0x64, 0xd5, 0xa6, 0x5f, 0xf6, 0x01, 0x6c, 0xf4, 0x7a, 0x0f, 0x42, 0xe9, 0x92, 0x2f, 0xc2, 0x7c,
-	0xfe, 0x6b, 0x7a, 0xb1, 0x9f, 0x57, 0x60, 0x53, 0xfb, 0xc4, 0x23, 0x99, 0x0c, 0xc6, 0xc8, 0xdd,
-	0x65, 0x68, 0xc4, 0x83, 0x30, 0x4a, 0xdd, 0x2f, 0x7f, 0xa0, 0x53, 0xf7, 0x65, 0x9c, 0x38, 0xb9,
-	0x67, 0x4f, 0xeb, 0x0d, 0x04, 0x1f, 0xa7, 0x8e, 0x1d, 0x4b, 0xca, 0x09, 0x52, 0x72, 0x7c, 0x35,
-	0x64, 0xcd, 0x34, 0x44, 0x9b, 0x20, 0x0f, 0xd4, 0x30, 0xc1, 0x60, 0xc4, 0xc3, 0x91, 0x37, 0x1a,
-	0x27, 0xba, 0x42, 0xe4, 0x19, 0x02, 0x21, 0xd6, 0xf7, 0x60, 0x23, 0x09, 0xa7, 0x8e, 0x41, 0x83,
-	0x6b, 0xa3, 0xf5, 0x24, 0x9c, 0x1e, 0xa5, 0x64, 0xec, 0x07, 0x45, 0xb6, 0x31, 0x68, 0xfc, 0x08,
-	0x60, 0x88, 0x14, 0xcc, 0x10, 0x5a, 0xf4, 0x38, 0xf7, 0x71, 0x18, 0xc5, 0xc0, 0x81, 0x81, 0xb0,
-	0x29, 0x30, 0x7c, 0x8a, 0x7e, 0xec, 0x40, 0x25, 0x5f, 0x24, 0x63, 0x15, 0x3d, 0xe2, 0xcc, 0x45,
-	0xc7, 0xb7, 0x2d, 0xa8, 0xcd, 0xb2, 0xd2, 0x18, 0x7f, 0x5a, 0x2f, 0x41, 0x23, 0x31, 0xb6, 0x5f,
-	0x4f, 0xb0, 0xca, 0xfa, 0xad, 0x4a, 0x39, 0x09, 0x5d, 0xec, 0x9c, 0x83, 0x04, 0x8a, 0x5d, 0x45,
-	0x51, 0x18, 0x69, 0x99, 0xf1, 0x87, 0xf5, 0x7d, 0xa8, 0xd3, 0x7e, 0xea, 0x25, 0x06, 0xf2, 0xd8,
-	0x53, 0xcf, 0xb2, 0xed, 0x10, 0x9a, 0x3d, 0xc6, 0xf3, 0x76, 0x20, 0x27, 0x6a, 0x4f, 0x06, 0x69,
-	0xa9, 0x77, 0x15, 0x9a, 0x7d, 0x19, 0x38, 0x39, 0x0f, 0x6b, 0x7d, 0x19, 0xe0, 0x8a, 0x3b, 0xb0,
-	0x8e, 0x03, 0x2a, 0x70, 0xb9, 0x7a, 0x63, 0x6e, 0xa0, 0x2f, 0x83, 0x7b, 0x81, 0x8b, 0x75, 0x9b,
-	0x75, 0x0d, 0x5a, 0x88, 0x41, 0xc1, 0x98, 0xd9, 0x42, 0x52, 0x8f, 0xce, 0xa6, 0x2a, 0xcf, 0xcb,
-	0xc4, 0x2c, 0x1e, 0x97, 0x9f, 0x92, 0x78, 0xbc, 0xe2, 0x94, 0xc4, 0xe3, 0xf4, 0x94, 0xc4, 0x63,
-	0xfb, 0x8f, 0x2b, 0x54, 0xa5, 0xa2, 0x3e, 0x7b, 0x68, 0x6d, 0x42, 0x06, 0x4f, 0x90, 0x75, 0x2d,
-	0xba, 0x6a, 0x2e, 0xba, 0xcc, 0x38, 0x6b, 0xa6, 0x71, 0x5e, 0x87, 0x76, 0xe8, 0xbb, 0x0e, 0x8f,
-	0xb0, 0x4d, 0xb5, 0x42, 0xdf, 0x25, 0x5a, 0xe8, 0x4d, 0x26, 0x5e, 0xe0, 0xa0, 0x55, 0x31, 0x02,
-	0x1b, 0x54, 0x67, 0xe2, 0x05, 0x8f, 0xc2, 0x29, 0xe3, 0xec, 0x00, 0xda, 0x97, 0x13, 0xc9, 0xe0,
-	0x89, 0x13, 0xcc, 0x26, 0xdb, 0x6b, 0x6c, 0x97, 0x49, 0x38, 0x25, 0x56, 0x66, 0x13, 0x5b, 0x60,
-	0xee, 0x76, 0x24, 0x9f, 0x93, 0x11, 0x1d, 0x53, 0x24, 0x5d, 0xca, 0xe4, 0x1b, 0xb0, 0x39, 0x91,
-	0xcf, 0x1d, 0x36, 0xc7, 0x29, 0xc5, 0x64, 0x4e, 0x8b, 0xbb, 0x13, 0x93, 0x80, 0xfd, 0x33, 0xda,
-	0xf6, 0x91, 0x9c, 0x3e, 0x50, 0xa7, 0xca, 0xdf, 0x27, 0x5f, 0x8b, 0x22, 0xfc, 0x7f, 0xb0, 0x15,
-	0xa8, 0x67, 0x58, 0xef, 0x38, 0x3e, 0x8e, 0xa4, 0x81, 0xae, 0x2b, 0xba, 0x81, 0x7a, 0x96, 0xe2,
-	0x1f, 0xba, 0xb8, 0xef, 0xa9, 0x8c, 0x63, 0x53, 0x7d, 0x2d, 0x04, 0x90, 0xf2, 0x3e, 0x86, 0x4e,
-	0xa4, 0x06, 0x61, 0xe4, 0xf2, 0x89, 0x60, 0x27, 0xf9, 0x4a, 0x41, 0x15, 0xba, 0xc6, 0x20, 0x2c,
-	0x4e, 0xeb, 0xa3, 0xec, 0xb7, 0xfd, 0x07, 0xd5, 0x45, 0xee, 0xd0, 0x9e, 0x33, 0x43, 0xad, 0x98,
-	0x86, 0x6a, 0x41, 0x1d, 0xa5, 0x47, 0x5c, 0x74, 0x05, 0xfd, 0xc6, 0xc4, 0x92, 0x24, 0xca, 0x3e,
-	0x23, 0x26, 0x16, 0xba, 0xa2, 0x83, 0x30, 0x76, 0x18, 0xb1, 0xb5, 0x0f, 0x9b, 0x28, 0x78, 0xed,
-	0x55, 0x32, 0x97, 0xbc, 0x50, 0xde, 0x66, 0x53, 0x88, 0xcd, 0x6e, 0x12, 0x4e, 0xf9, 0x93, 0x62,
-	0xc1, 0x15, 0x58, 0x0b, 0xc2, 0xc4, 0x1b, 0x9e, 0x91, 0x6a, 0x5b, 0x42, 0x7f, 0x59, 0x37, 0x60,
-	0x8b, 0xab, 0x27, 0x27, 0x15, 0x84, 0x4b, 0x9a, 0xad, 0x8b, 0x8d, 0xbe, 0xb9, 0x73, 0x17, 0x83,
-	0x9a, 0x46, 0x41, 0x51, 0x3a, 0x71, 0x22, 0x27, 0xd3, 0xed, 0x26, 0xa1, 0x6e, 0xf2, 0x00, 0x8a,
-	0xb4, 0x87, 0x60, 0x3b, 0xc9, 0xd2, 0x48, 0xe4, 0x2a, 0xbd, 0x4a, 0xbb, 0x0e, 0x6d, 0xda, 0xab,
-	0x91, 0xb8, 0xb6, 0x10, 0x80, 0x87, 0x05, 0x07, 0xe3, 0x44, 0x46, 0x58, 0x20, 0x3d, 0x27, 0x09,
-	0x35, 0x44, 0x8b, 0x00, 0x87, 0xee, 0x73, 0xf4, 0x78, 0xe4, 0x59, 0x63, 0x25, 0xe3, 0x30, 0xbb,
-	0x46, 0x6a, 0x88, 0x75, 0x84, 0xf6, 0x08, 0x78, 0xe8, 0xda, 0xff, 0x51, 0x59, 0x58, 0x76, 0xb9,
-	0x32, 0x3e, 0xd0, 0xcc, 0x18, 0xf1, 0xbe, 0xe8, 0x0a, 0x33, 0x3a, 0x24, 0x4e, 0x62, 0x94, 0x24,
-	0x89, 0x8c, 0x2a, 0x7f, 0x48, 0x07, 0x41, 0xb3, 0xd1, 0x42, 0x00, 0xa2, 0x16, 0xb7, 0x58, 0x5f,
-	0xb5, 0xc5, 0xc6, 0xdc, 0x16, 0xdf, 0x80, 0xcd, 0x8c, 0xac, 0x3e, 0x84, 0x7c, 0xc2, 0xba, 0x29,
-	0x71, 0x3a, 0x86, 0xf6, 0x2f, 0x63, 0x8d, 0x9b, 0xf1, 0x26, 0xd4, 0x33, 0xac, 0xc9, 0x4b, 0xbd,
-	0x70, 0xe6, 0x07, 0xaa, 0x73, 0x7e, 0x60, 0x5e, 0x8a, 0xad, 0x38, 0x95, 0xe0, 0xaf, 0x94, 0x10,
-	0x47, 0x11, 0x16, 0xf6, 0x5c, 0x99, 0xdb, 0xf3, 0x0d, 0xd8, 0x8a, 0x08, 0xd3, 0x50, 0x0f, 0x2f,
-	0xb9, 0xc1, 0xf0, 0x4c, 0x41, 0xbf, 0x5a, 0x20, 0x7f, 0x32, 0x75, 0x65, 0x42, 0x87, 0x79, 0x51,
-	0xbd, 0x95, 0x45, 0xf5, 0xd2, 0x7d, 0x1a, 0xaf, 0x63, 0x1e, 0x05, 0x2e, 0x9b, 0x34, 0x07, 0xb9,
-	0xc1, 0xdb, 0x7f, 0x52, 0x29, 0x59, 0x6c, 0xb9, 0x39, 0x1c, 0x2e, 0x25, 0x3e, 0x7f, 0xce, 0x3e,
-	0x57, 0x67, 0x8f, 0xa5, 0x3f, 0x53, 0xa8, 0xd2, 0xdb, 0xef, 0x2f, 0xae, 0x5c, 0x2a, 0x8f, 0x5a,
-	0xa9, 0x3c, 0xfe, 0xa8, 0x02, 0xdb, 0xba, 0x4a, 0x39, 0x96, 0x71, 0x9c, 0xbb, 0x3d, 0xf4, 0x99,
-	0x9f, 0x40, 0x97, 0xca, 0x10, 0xa7, 0x5f, 0x28, 0x79, 0x8b, 0xcc, 0xd0, 0xdc, 0xbc, 0x92, 0xeb,
-	0xd0, 0x8c, 0x3d, 0xae, 0x76, 0x4b, 0x0f, 0x6c, 0xb5, 0xf4, 0xc0, 0x62, 0xb8, 0xf5, 0x62, 0x67,
-	0xc4, 0x57, 0xd5, 0x2d, 0x51, 0xf7, 0xe2, 0x83, 0x89, 0x7d, 0x07, 0x03, 0x36, 0xad, 0x70, 0xe4,
-	0x05, 0x86, 0x53, 0x57, 0x4f, 0x31, 0x47, 0x61, 0xe6, 0xc8, 0xf9, 0x6a, 0x51, 0x02, 0x81, 0xc8,
-	0x15, 0xda, 0xff, 0x52, 0x81, 0x6e, 0x61, 0x2a, 0x4e, 0x31, 0xbd, 0xbd, 0x9e, 0x32, 0xcc, 0xc8,
-	0x5a, 0x1f, 0x42, 0x03, 0xf7, 0x19, 0xeb, 0x5a, 0xe4, 0x3c, 0x95, 0x2b, 0x4f, 0x40, 0xd2, 0xc6,
-	0x4e, 0x75, 0x20, 0x81, 0x7c, 0x8f, 0x88, 0xa0, 0xbd, 0x1c, 0x21, 0xd4, 0xc9, 0xc9, 0x02, 0x83,
-	0x08, 0xe1, 0x75, 0xd0, 0xee, 0xce, 0x39, 0x55, 0x51, 0xec, 0x85, 0x81, 0x3e, 0x9f, 0x5d, 0x86,
-	0x3e, 0x66, 0xa0, 0xfd, 0x8f, 0x95, 0x72, 0x91, 0xe8, 0xe4, 0x8a, 0x45, 0xa2, 0x95, 0xb5, 0xe8,
-	0x51, 0x0a, 0xf3, 0x44, 0x9b, 0xb0, 0x49, 0x53, 0x65, 0x4e, 0xb8, 0x7a, 0x7e, 0x27, 0x5c, 0x2b,
-	0xd7, 0x69, 0xee, 0xf2, 0xeb, 0xa6, 0xcb, 0xb7, 0xdf, 0xc6, 0x3d, 0xa0, 0xbd, 0x3d, 0xca, 0xd4,
-	0xc5, 0xa7, 0xbd, 0xc4, 0x89, 0xd8, 0xb7, 0x61, 0x23, 0x47, 0x23, 0x66, 0xd3, 0x28, 0xa6, 0x6f,
-	0x1e, 0x28, 0x8a, 0x2d, 0xc4, 0x77, 0x3b, 0x2a, 0x5f, 0xe4, 0x85, 0xce, 0xe4, 0x4e, 0x41, 0x8a,
-	0x65, 0xe7, 0xaf, 0xc8, 0x8e, 0x21, 0x46, 0x3b, 0xd0, 0x09, 0xe6, 0xfd, 0xc8, 0x53, 0x81, 0xfb,
-	0x28, 0x85, 0x97, 0x7b, 0xc7, 0x6b, 0xd0, 0x9a, 0xbb, 0x7a, 0x69, 0xce, 0xf8, 0xd2, 0x05, 0x3d,
-	0x44, 0x5f, 0x8d, 0xbc, 0x20, 0x4d, 0xa0, 0xe8, 0x83, 0x2e, 0xe4, 0x83, 0xf4, 0xc1, 0x06, 0x7f,
-	0xda, 0x7f, 0x5a, 0x29, 0x5f, 0xb0, 0x3c, 0xa3, 0x35, 0xcc, 0xbb, 0x76, 0x31, 0xf3, 0xbe, 0x0c,
-	0x8d, 0xa1, 0x17, 0x48, 0x5f, 0x1f, 0x4e, 0xfe, 0xc8, 0xb9, 0xac, 0x97, 0x70, 0xd9, 0xc8, 0xb9,
-	0x7c, 0x0b, 0xb3, 0xb2, 0x2f, 0x02, 0xdf, 0x0b, 0xd4, 0x81, 0x4a, 0x30, 0x97, 0x5c, 0x2a, 0x14,
-	0x7b, 0x58, 0x8a, 0x8b, 0xfb, 0xb9, 0x03, 0x6d, 0xcc, 0x56, 0xf9, 0xb2, 0x80, 0x8d, 0xbb, 0x98,
-	0x27, 0x21, 0xb2, 0x59, 0x22, 0x8b, 0x56, 0xa4, 0xb3, 0xde, 0x12, 0xeb, 0xf8, 0x3d, 0xca, 0xea,
-	0xd2, 0xb4, 0x38, 0xcf, 0xea, 0x16, 0xa5, 0x76, 0x5d, 0xaf, 0x4b, 0x01, 0x55, 0xa7, 0x05, 0x08,
-	0xa0, 0x80, 0x5a, 0x9e, 0xe9, 0x5e, 0x81, 0x35, 0xfa, 0x71, 0x33, 0x7d, 0x5c, 0xe3, 0xaf, 0x0c,
-	0x7e, 0x4b, 0x4b, 0x47, 0x7f, 0xd9, 0x7f, 0x51, 0xc2, 0x4c, 0xb9, 0x0a, 0x57, 0x32, 0xf3, 0x0a,
-	0x00, 0x0d, 0x46, 0xe1, 0x2c, 0x48, 0x1d, 0x3e, 0xa1, 0x0b, 0x04, 0xe4, 0xbc, 0xd6, 0xcb, 0x79,
-	0x6d, 0x2c, 0xe1, 0x75, 0xad, 0xc0, 0x2b, 0x29, 0x48, 0xab, 0x86, 0x1f, 0xea, 0x96, 0xc7, 0xff,
-	0x6f, 0xc0, 0xad, 0xfd, 0x1b, 0x95, 0xd2, 0x85, 0xbe, 0x86, 0x58, 0xae, 0xc0, 0x1a, 0x47, 0x3d,
-	0x6d, 0xbd, 0xfa, 0x8b, 0x12, 0x5f, 0x8e, 0x92, 0xcc, 0x02, 0x8b, 0xa5, 0xc3, 0xb0, 0x8c, 0x89,
-	0xcb, 0x19, 0x13, 0xbd, 0x71, 0x38, 0x5d, 0x7e, 0x9a, 0x57, 0xb2, 0x80, 0x0e, 0x67, 0x1c, 0x4e,
-	0xcd, 0x1a, 0xad, 0x85, 0x00, 0x1a, 0x7c, 0x15, 0x3a, 0xf1, 0xac, 0xef, 0x10, 0x42, 0xf6, 0x1e,
-	0xdb, 0x8e, 0x67, 0x7d, 0x5a, 0xd0, 0xb5, 0xff, 0xa1, 0x8c, 0x89, 0x6f, 0x60, 0x1e, 0x71, 0x22,
-	0x47, 0xca, 0x14, 0x78, 0x0f, 0x01, 0x73, 0xfa, 0xa8, 0xcf, 0x5b, 0x4f, 0x61, 0x0b, 0x8d, 0xd5,
-	0x5b, 0x58, 0x9b, 0xdf, 0xc2, 0x1f, 0x92, 0x81, 0x1b, 0x5b, 0xd8, 0x9b, 0x9d, 0xfd, 0x6f, 0x8b,
-	0xf1, 0x1a, 0xb4, 0x46, 0x61, 0xe8, 0xc6, 0xb9, 0x0c, 0x9b, 0xf4, 0xcd, 0x15, 0x18, 0x0f, 0x61,
-	0xd5, 0xa8, 0x79, 0x27, 0x00, 0xd6, 0x8c, 0xff, 0x56, 0xc2, 0xdb, 0xff, 0x2d, 0xe9, 0x9a, 0x3b,
-	0x5b, 0x5b, 0xb1, 0xb3, 0xe6, 0xdc, 0xce, 0x76, 0xe9, 0x9e, 0x81, 0x37, 0x46, 0x0e, 0xf1, 0xc2,
-	0x12, 0xb7, 0xff, 0xbe, 0x3a, 0x47, 0x63, 0x79, 0xfe, 0xba, 0x58, 0x61, 0xaf, 0xac, 0x53, 0xae,
-	0x41, 0x2b, 0xbb, 0xd3, 0xa8, 0xd3, 0x9c, 0xa6, 0xd2, 0x17, 0x1a, 0x05, 0x8e, 0x1a, 0x73, 0x72,
-	0x7e, 0x1f, 0x5a, 0x58, 0x8b, 0x52, 0x14, 0x58, 0xa3, 0x28, 0x70, 0x6d, 0x21, 0x0a, 0xe0, 0x02,
-	0x8f, 0xc2, 0xe9, 0x2d, 0xd1, 0x4c, 0xf8, 0xfa, 0x1e, 0xc5, 0x4f, 0xac, 0x70, 0xb2, 0xd8, 0xd4,
-	0xf6, 0xa9, 0xfc, 0x21, 0x85, 0x71, 0xeb, 0x16, 0xb4, 0xe8, 0xb6, 0x13, 0x89, 0xb6, 0x4a, 0xde,
-	0xda, 0x91, 0xa8, 0xbe, 0x20, 0x15, 0xcd, 0x29, 0xff, 0xc0, 0x9a, 0x61, 0x30, 0x8b, 0x1c, 0x43,
-	0xad, 0x6d, 0xae, 0x19, 0x06, 0xb3, 0x48, 0x64, 0x7e, 0xcc, 0x4d, 0x1f, 0xc3, 0x11, 0xf2, 0x75,
-	0x7d, 0x25, 0xa5, 0x97, 0xe4, 0xaa, 0x0c, 0xd3, 0x07, 0x06, 0x91, 0x9e, 0xfe, 0xb9, 0xb2, 0xb0,
-	0xcc, 0x05, 0x35, 0x95, 0x2f, 0x5e, 0x5b, 0xbd, 0x78, 0x7d, 0x7e, 0x71, 0xeb, 0x36, 0xb4, 0xbd,
-	0x44, 0x4d, 0x38, 0x93, 0x69, 0x94, 0xe8, 0xc4, 0x2c, 0x58, 0x44, 0x0b, 0x71, 0x29, 0xcb, 0x29,
-	0x9e, 0x89, 0xb5, 0xf9, 0x08, 0xf0, 0x9b, 0x15, 0x58, 0xc7, 0xed, 0x1c, 0xe9, 0x8b, 0xff, 0x12,
-	0xa1, 0xdd, 0xc9, 0x58, 0x33, 0x8a, 0xa5, 0x15, 0x6b, 0x6b, 0xae, 0x69, 0x75, 0xba, 0xff, 0xf1,
-	0x7c, 0x67, 0x2a, 0x23, 0x39, 0x31, 0x2f, 0xc8, 0xbb, 0x08, 0x3e, 0x46, 0x28, 0x95, 0x71, 0x7f,
-	0x5d, 0x81, 0xeb, 0x1c, 0x9c, 0xb3, 0x2b, 0xfc, 0xac, 0x32, 0xc5, 0x2a, 0xe9, 0x55, 0xe8, 0x10,
-	0x9d, 0xc1, 0x70, 0x94, 0xd7, 0x8d, 0x6d, 0x04, 0xed, 0x0f, 0x47, 0x7c, 0x44, 0x69, 0xdc, 0x54,
-	0x2c, 0x02, 0x52, 0xd1, 0xd1, 0x20, 0x59, 0x5e, 0x6d, 0x89, 0x39, 0xa7, 0x02, 0xe0, 0x79, 0xa9,
-	0x3d, 0xaf, 0x70, 0x27, 0xfc, 0x50, 0x9a, 0x5a, 0xc3, 0x0b, 0x8a, 0xf4, 0xdb, 0x66, 0x5e, 0xf5,
-	0x42, 0x09, 0x66, 0x39, 0x95, 0xfd, 0xe7, 0x15, 0xd8, 0xc8, 0x69, 0x97, 0x70, 0x55, 0x99, 0x77,
-	0x72, 0xe6, 0xed, 0x53, 0x9a, 0xb7, 0xcf, 0x69, 0xb0, 0xf6, 0x0d, 0x35, 0x58, 0x2f, 0xd3, 0xe0,
-	0x4f, 0x0b, 0x9c, 0xa6, 0x57, 0x28, 0xcb, 0x4f, 0xdb, 0x47, 0x40, 0xb7, 0x5f, 0x4e, 0x96, 0x35,
-	0x94, 0x5f, 0x75, 0xe5, 0x1b, 0x17, 0x10, 0x65, 0xdf, 0x98, 0x56, 0x0c, 0xa9, 0xe9, 0xa5, 0x98,
-	0x56, 0x30, 0x8c, 0xd5, 0x33, 0x2e, 0x55, 0x4f, 0x79, 0xd0, 0xf9, 0xa8, 0xcc, 0xc4, 0x97, 0x31,
-	0x43, 0xf7, 0x5c, 0x86, 0x88, 0xec, 0xcf, 0xa8, 0x5a, 0x54, 0xf1, 0xdc, 0x52, 0xc6, 0x8d, 0xe8,
-	0x79, 0x23, 0xc1, 0x8f, 0xf9, 0xb1, 0x05, 0xad, 0x91, 0xaf, 0x63, 0xcb, 0x69, 0x14, 0xae, 0x7c,
-	0xba, 0x3a, 0xc9, 0xb4, 0x8f, 0xa1, 0xcb, 0x4f, 0x21, 0x68, 0xca, 0x38, 0xb1, 0xdc, 0x31, 0xbd,
-	0x09, 0x75, 0xd4, 0x9c, 0x2e, 0xbf, 0x5f, 0x2e, 0xe9, 0x1f, 0xf1, 0x7c, 0x41, 0x28, 0xf6, 0xaf,
-	0x57, 0x91, 0x24, 0x02, 0x7a, 0xf2, 0x94, 0x78, 0xf9, 0x54, 0x5b, 0x43, 0x9c, 0xc8, 0x44, 0xe5,
-	0x8f, 0x56, 0xf3, 0xae, 0x1c, 0xa7, 0xec, 0x87, 0x41, 0xa2, 0x82, 0x84, 0xed, 0xa4, 0x87, 0xf8,
-	0xe6, 0x4b, 0x20, 0x51, 0x31, 0x5f, 0xb4, 0x5c, 0xe5, 0xe3, 0x2c, 0xc2, 0xf9, 0x08, 0xba, 0xd2,
-	0x75, 0x0d, 0x9c, 0xda, 0x0b, 0xd6, 0xe8, 0x48, 0xd7, 0xcd, 0x66, 0x93, 0xaf, 0x78, 0xce, 0xb3,
-	0xf3, 0x54, 0x6f, 0x22, 0x9f, 0x23, 0xc6, 0xa1, 0x6b, 0xbd, 0x0d, 0x16, 0x86, 0x94, 0x91, 0x1f,
-	0xf6, 0xa5, 0x9f, 0xa1, 0x71, 0x08, 0xdc, 0x1c, 0xcc, 0xa2, 0x03, 0x1a, 0x60, 0x64, 0xdb, 0xa1,
-	0x5e, 0x93, 0x70, 0x32, 0x55, 0x89, 0x97, 0x78, 0x61, 0x90, 0xde, 0xed, 0x1f, 0xc0, 0xd6, 0x20,
-	0x87, 0xa6, 0xf5, 0xd2, 0x62, 0xb7, 0x08, 0xb5, 0x41, 0xe4, 0x88, 0x62, 0xd3, 0x98, 0x45, 0x27,
-	0x7c, 0xa4, 0x9f, 0xfe, 0x4f, 0x3c, 0x77, 0xef, 0x8c, 0x1e, 0x2a, 0xe4, 0x84, 0x56, 0xb8, 0x06,
-	0x14, 0xc7, 0x8d, 0xd7, 0x8a, 0x26, 0x7e, 0x9f, 0x78, 0xd4, 0xc7, 0x10, 0x2b, 0x19, 0x0d, 0xc6,
-	0x4e, 0x20, 0x27, 0x59, 0x23, 0x1e, 0x83, 0x70, 0x7a, 0xd6, 0x4c, 0x57, 0x33, 0x9a, 0xe9, 0x06,
-	0x65, 0x0b, 0xe1, 0x71, 0xf8, 0x09, 0x6c, 0xe6, 0xfd, 0x04, 0xa6, 0x4e, 0xcf, 0x53, 0xbb, 0x76,
-	0xb3, 0xa6, 0x02, 0x3a, 0x0a, 0xd4, 0x2f, 0x74, 0x77, 0x8f, 0x2b, 0xe5, 0x5d, 0xd7, 0xbd, 0x2f,
-	0x83, 0x58, 0x6f, 0x86, 0x5a, 0x73, 0x8c, 0xcd, 0xe0, 0x37, 0x6e, 0xe6, 0x2a, 0x34, 0x51, 0xd9,
-	0x79, 0xb0, 0x5c, 0x93, 0xae, 0x7b, 0xe2, 0x51, 0x68, 0x5a, 0x24, 0xb6, 0x3c, 0xe0, 0x9a, 0x4b,
-	0x54, 0x8b, 0x4b, 0xfc, 0x38, 0x5f, 0xa2, 0x76, 0xee, 0x4b, 0xa7, 0x94, 0x8d, 0xc2, 0x96, 0xee,
-	0x2a, 0x1f, 0xb9, 0xc0, 0xa3, 0xb0, 0x7a, 0x4b, 0x68, 0xe3, 0xc6, 0x96, 0x5c, 0xe5, 0x23, 0xad,
-	0x7f, 0xa2, 0x34, 0x58, 0x93, 0x32, 0x5e, 0x8a, 0x6e, 0x43, 0x0b, 0x53, 0x7b, 0x43, 0xf6, 0x2b,
-	0x2f, 0x23, 0x9b, 0xf1, 0xac, 0x4f, 0xa6, 0xfe, 0x21, 0xb4, 0x87, 0x32, 0x88, 0xcf, 0x7d, 0x8b,
-	0xd9, 0x42, 0x6c, 0x9a, 0x79, 0x07, 0xa0, 0xef, 0xcb, 0x41, 0xe1, 0x2d, 0x7f, 0xe5, 0xd4, 0x36,
-	0xa1, 0x93, 0x92, 0xa9, 0x91, 0x0b, 0x1d, 0x4d, 0xbe, 0x11, 0x14, 0xc8, 0x7b, 0xb0, 0x36, 0x24,
-	0xc0, 0xd2, 0x46, 0x2e, 0xc6, 0x17, 0x1a, 0xcd, 0xfe, 0xcf, 0x0a, 0x58, 0x5f, 0x85, 0x91, 0xef,
-	0xee, 0x85, 0x71, 0x4c, 0x1e, 0x22, 0x6d, 0xdf, 0xe9, 0x87, 0xb1, 0xd1, 0xd3, 0xb0, 0x86, 0x9f,
-	0x87, 0xae, 0xb5, 0x01, 0xd5, 0xf1, 0x54, 0xfb, 0xcc, 0xea, 0x78, 0x5a, 0xb8, 0xdb, 0xa9, 0x15,
-	0xef, 0x76, 0xf0, 0x84, 0xcc, 0x50, 0xab, 0x66, 0xee, 0x0b, 0x0c, 0xa2, 0xf4, 0xf7, 0x35, 0xe8,
-	0xba, 0xb3, 0x48, 0xd2, 0xe1, 0x25, 0x14, 0xfd, 0xb6, 0x9a, 0x02, 0x09, 0x09, 0x13, 0x5a, 0xa6,
-	0xe2, 0xb9, 0xcf, 0xf3, 0x82, 0x0b, 0x21, 0x87, 0xee, 0x73, 0xeb, 0x06, 0x6c, 0xe9, 0x61, 0xe2,
-	0x97, 0x3c, 0x3a, 0x67, 0xbd, 0x1b, 0x0c, 0xc7, 0x7d, 0x91, 0x5f, 0xff, 0xaf, 0x0a, 0x3a, 0x52,
-	0xea, 0xf3, 0x0d, 0x47, 0x4b, 0xd2, 0xac, 0xb4, 0xd5, 0xa7, 0x6a, 0xb4, 0xfa, 0x5c, 0x63, 0xbb,
-	0x30, 0x5f, 0x1d, 0xe3, 0x59, 0x3f, 0x2d, 0x85, 0x16, 0x42, 0x72, 0x7b, 0x9a, 0x86, 0x63, 0x0c,
-	0x90, 0xf4, 0x71, 0xfb, 0xfd, 0x3c, 0x63, 0xac, 0x8b, 0x8e, 0x86, 0x69, 0x13, 0x28, 0x04, 0xbd,
-	0xb5, 0x8b, 0x64, 0x05, 0xc8, 0x58, 0xa2, 0x6f, 0xcf, 0x9b, 0x3b, 0xb5, 0x1b, 0x6d, 0xd1, 0x8c,
-	0x13, 0xbe, 0x91, 0xbf, 0x07, 0xeb, 0xd9, 0x56, 0xf9, 0x3d, 0xbe, 0xe5, 0x87, 0x23, 0xd3, 0xb6,
-	0x8b, 0xd7, 0xa5, 0x05, 0xb9, 0x88, 0xa6, 0x1f, 0x72, 0x8b, 0xd8, 0x04, 0x2e, 0x71, 0xa7, 0x50,
-	0x7c, 0xf3, 0xe8, 0x2c, 0x7e, 0xca, 0x97, 0x92, 0x97, 0xa1, 0x31, 0x09, 0x03, 0x75, 0xa6, 0xdf,
-	0x00, 0xf9, 0xc3, 0x7a, 0x1d, 0x36, 0x92, 0x30, 0x91, 0xbe, 0x13, 0xa9, 0xc1, 0x58, 0x46, 0x23,
-	0x96, 0x61, 0x55, 0x74, 0x09, 0x2a, 0x34, 0x10, 0x23, 0xef, 0xa9, 0xa7, 0xdf, 0x11, 0xd3, 0xfc,
-	0xfb, 0xd4, 0xe3, 0x37, 0x3d, 0xfb, 0xa5, 0xb4, 0x71, 0x56, 0xa8, 0x98, 0xd6, 0x7b, 0x98, 0x0c,
-	0xed, 0xdf, 0xa7, 0xeb, 0x11, 0x76, 0x0c, 0x64, 0x9f, 0x7c, 0x6b, 0x54, 0x1e, 0x94, 0xb1, 0x80,
-	0x9c, 0x79, 0xbe, 0x71, 0xab, 0xdb, 0xa4, 0x6f, 0xee, 0x3b, 0x4b, 0xdb, 0x67, 0x8c, 0xca, 0x42,
-	0xb7, 0xc8, 0xa0, 0x32, 0x6f, 0xc0, 0x96, 0xab, 0xd0, 0x90, 0xf8, 0xea, 0xdc, 0xb0, 0xd9, 0x0d,
-	0x82, 0xd3, 0x55, 0x32, 0xf5, 0x0f, 0x2b, 0xb8, 0xc6, 0x0d, 0x9d, 0xfb, 0xa1, 0xef, 0xab, 0x01,
-	0x9a, 0xea, 0x2a, 0xa6, 0xae, 0x42, 0x73, 0x20, 0xf3, 0x9b, 0xe6, 0x86, 0x58, 0xc3, 0xcf, 0x43,
-	0x6a, 0x4e, 0xa0, 0x01, 0x53, 0x1a, 0x6d, 0x84, 0xb0, 0x38, 0xbe, 0x44, 0x25, 0xe2, 0x11, 0x3f,
-	0x56, 0x09, 0x52, 0x7e, 0x03, 0x6a, 0x53, 0x95, 0x2c, 0xed, 0xe7, 0x3a, 0x56, 0x89, 0x40, 0x04,
-	0x14, 0x82, 0x1f, 0x4a, 0xd7, 0x41, 0x2f, 0xc0, 0x5d, 0xe8, 0x4d, 0xfc, 0xbe, 0x17, 0xb8, 0x76,
-	0x90, 0x7a, 0x8d, 0xbc, 0x39, 0x17, 0x29, 0x7f, 0xb3, 0x8e, 0xde, 0x15, 0xeb, 0xfd, 0x25, 0x5d,
-	0xdb, 0x1e, 0xab, 0xe4, 0xcb, 0x99, 0x8a, 0xce, 0x76, 0xe3, 0xd8, 0x8b, 0xb3, 0x5e, 0x86, 0x7d,
-	0xb8, 0xf4, 0x14, 0xa1, 0x8e, 0x24, 0xb0, 0x69, 0x9c, 0x45, 0xaf, 0xc5, 0xd3, 0xc8, 0x32, 0x37,
-	0x9f, 0xe6, 0x74, 0xe6, 0xde, 0x5a, 0xab, 0x85, 0xb7, 0xd6, 0x15, 0x6e, 0xc9, 0xb4, 0x91, 0x7a,
-	0xc1, 0x46, 0xec, 0xd3, 0x72, 0x6e, 0x31, 0xde, 0xe5, 0x0b, 0x55, 0x0a, 0x0b, 0x95, 0xee, 0xa2,
-	0x7a, 0xb1, 0x5d, 0xd8, 0x5f, 0xa2, 0xe1, 0x1f, 0xab, 0xa4, 0xa7, 0x12, 0x86, 0x6a, 0xa5, 0x2c,
-	0x4a, 0xe6, 0x7a, 0x09, 0x4d, 0xea, 0x90, 0xa2, 0xe4, 0x5c, 0xe6, 0x24, 0xff, 0xae, 0x4a, 0xc7,
-	0x46, 0x25, 0x7b, 0x61, 0xe0, 0xe6, 0x4b, 0xa1, 0xe0, 0x5f, 0x05, 0x6a, 0x5d, 0x9a, 0xab, 0xe3,
-	0x10, 0xc4, 0x75, 0xdc, 0x1e, 0x6c, 0x0e, 0xc2, 0xc0, 0xa5, 0xf4, 0xe8, 0x87, 0xe7, 0xac, 0x37,
-	0x37, 0xf2, 0x19, 0x24, 0x64, 0x93, 0xc6, 0xcd, 0x73, 0x56, 0x3c, 0x39, 0x8d, 0x9b, 0x0b, 0x34,
-	0x6e, 0x99, 0x8f, 0xf1, 0xe7, 0xa2, 0x71, 0x2b, 0x55, 0x76, 0x66, 0x07, 0x8d, 0xe5, 0x76, 0xb0,
-	0x56, 0xb4, 0x83, 0xa8, 0x54, 0x76, 0x68, 0x06, 0x2f, 0x92, 0xdd, 0x87, 0x45, 0xa5, 0xbd, 0xc0,
-	0x10, 0x4c, 0x85, 0xdd, 0xd6, 0x6b, 0xee, 0xba, 0xa7, 0xbb, 0x83, 0xb1, 0xa7, 0x4e, 0xd5, 0x04,
-	0xb3, 0x6a, 0xf5, 0xd4, 0xfa, 0x36, 0xc0, 0x54, 0x25, 0xc5, 0x25, 0x5b, 0x53, 0x95, 0xd0, 0x8a,
-	0xf6, 0xcf, 0x2a, 0xa5, 0x13, 0x91, 0xd9, 0x95, 0x13, 0xad, 0x37, 0x61, 0x4b, 0xe6, 0xf8, 0x66,
-	0xd3, 0xc6, 0xa6, 0x01, 0xa7, 0x18, 0xfc, 0x21, 0x34, 0x28, 0xc5, 0xbc, 0x40, 0xe6, 0xc6, 0x13,
-	0xec, 0xc7, 0xe8, 0x2a, 0x17, 0x98, 0xeb, 0xb1, 0x43, 0x5b, 0xcd, 0xdf, 0x75, 0x68, 0x4b, 0xf7,
-	0x54, 0x3b, 0x47, 0x5d, 0xa4, 0x49, 0xf7, 0x94, 0x7d, 0xe3, 0x19, 0xf5, 0x2e, 0xf3, 0x65, 0x15,
-	0xae, 0x97, 0xfb, 0x5f, 0x7a, 0x2e, 0xc5, 0x40, 0x64, 0x76, 0x8d, 0x01, 0x81, 0xb8, 0xb9, 0xe6,
-	0x1d, 0xdd, 0xc3, 0x54, 0x2d, 0xeb, 0x99, 0xcf, 0x29, 0x72, 0x0b, 0x53, 0xea, 0xce, 0x6b, 0xf9,
-	0x83, 0xca, 0x11, 0x6c, 0xf3, 0xd2, 0xe4, 0x0e, 0x2f, 0xb8, 0xf8, 0xe2, 0xfb, 0xcc, 0x63, 0x2c,
-	0x09, 0xee, 0x3d, 0x9f, 0x2a, 0x36, 0xdb, 0xbb, 0x7b, 0x9f, 0x29, 0x7f, 0x8a, 0x6a, 0xb7, 0xa1,
-	0xdb, 0x57, 0xce, 0x58, 0xf9, 0x53, 0xe5, 0x1a, 0x09, 0x6e, 0xa7, 0xaf, 0x3e, 0x23, 0xd8, 0x09,
-	0xc7, 0xbb, 0x25, 0xf9, 0xb6, 0xed, 0x97, 0xd1, 0x5d, 0x9e, 0xb9, 0x2f, 0xac, 0x56, 0x5d, 0xbd,
-	0x5a, 0xad, 0xb8, 0x9a, 0x83, 0x9e, 0x13, 0x03, 0xcb, 0x61, 0x70, 0xea, 0x25, 0x32, 0xad, 0xac,
-	0x50, 0x26, 0x77, 0x61, 0xd3, 0xcb, 0x80, 0xcb, 0x9f, 0xd7, 0xb9, 0x75, 0x2c, 0xc5, 0x13, 0x1b,
-	0xf9, 0x1c, 0x7a, 0x70, 0xfc, 0xd7, 0x3a, 0x86, 0xae, 0x1c, 0x21, 0x2d, 0x86, 0xaf, 0x43, 0xbb,
-	0x2f, 0x63, 0xe5, 0xc4, 0xf2, 0x54, 0x69, 0xd7, 0xdc, 0xea, 0xeb, 0xff, 0xdd, 0xe0, 0xe0, 0xc0,
-	0xf7, 0x06, 0xdc, 0x44, 0xa5, 0x4d, 0x88, 0x00, 0x0f, 0x67, 0x13, 0xeb, 0x7d, 0xb8, 0x42, 0xb5,
-	0x9d, 0xc1, 0x5c, 0x30, 0x9b, 0xf4, 0xb3, 0xee, 0xa8, 0xcb, 0x38, 0x9a, 0x2f, 0xf8, 0x90, 0xc6,
-	0xb8, 0xa1, 0x90, 0xfe, 0x62, 0x34, 0xcb, 0xe2, 0x47, 0x9b, 0x21, 0x27, 0x69, 0xaf, 0x15, 0x0d,
-	0x67, 0x77, 0xbe, 0x8d, 0xb4, 0xd7, 0x0a, 0xc1, 0x69, 0x2b, 0xdb, 0x5b, 0x70, 0x89, 0x39, 0x9b,
-	0x28, 0x24, 0x9b, 0x67, 0x7f, 0x75, 0xb1, 0x49, 0x03, 0x47, 0x04, 0x27, 0x47, 0xf5, 0x01, 0x6c,
-	0x33, 0x6e, 0xa4, 0xa6, 0xbe, 0x3c, 0x73, 0xf4, 0x02, 0x59, 0xde, 0x57, 0x17, 0x2f, 0xd3, 0xb8,
-	0xa0, 0xe1, 0x23, 0x1a, 0xd5, 0x25, 0x7c, 0x3b, 0x6f, 0xf6, 0xe5, 0xdb, 0xde, 0xef, 0x14, 0x64,
-	0x9e, 0xef, 0x2e, 0x6b, 0x1a, 0x6e, 0x25, 0x69, 0xbb, 0x70, 0x0f, 0x5e, 0xa2, 0x0b, 0x00, 0x66,
-	0x30, 0xf3, 0xa2, 0x6d, 0xa2, 0xf3, 0xbd, 0x25, 0x74, 0x98, 0xed, 0xc7, 0x92, 0xaf, 0xf1, 0xb6,
-	0xa4, 0xeb, 0x32, 0x44, 0x37, 0xd9, 0x5b, 0xdf, 0x87, 0x97, 0xe8, 0xe6, 0x61, 0x8e, 0x28, 0x70,
-	0x67, 0x89, 0xab, 0xfc, 0x22, 0xfa, 0xa7, 0xb0, 0x8e, 0x3c, 0x64, 0xb9, 0x6b, 0x87, 0x16, 0x7f,
-	0x75, 0xc9, 0xe2, 0x69, 0xfe, 0x0a, 0xd2, 0x75, 0x1f, 0x70, 0x0a, 0x4b, 0xfa, 0xe2, 0xc5, 0xd0,
-	0x06, 0xd6, 0xf5, 0x3d, 0x04, 0x41, 0x1e, 0xce, 0x26, 0xf6, 0x2f, 0xe2, 0x61, 0xce, 0x29, 0x1c,
-	0x28, 0xad, 0x67, 0xfd, 0x77, 0xc4, 0x91, 0xca, 0x8c, 0x82, 0x6d, 0xab, 0x3d, 0x52, 0xe5, 0x96,
-	0x50, 0x9d, 0xb3, 0x04, 0x7b, 0xb8, 0x84, 0x32, 0x1e, 0xc1, 0xb7, 0xe1, 0xd2, 0xa2, 0xd5, 0xe9,
-	0x7f, 0xab, 0x79, 0xab, 0x2d, 0x6e, 0x61, 0x9d, 0x0f, 0xe0, 0x15, 0x73, 0x1d, 0x9e, 0x74, 0x12,
-	0xe7, 0xef, 0xf1, 0x98, 0xb9, 0x98, 0x2b, 0xe8, 0x2f, 0xfb, 0xcf, 0x2a, 0xab, 0x66, 0x2e, 0xf7,
-	0x14, 0x59, 0x30, 0xa8, 0x5e, 0x30, 0x18, 0xcc, 0xe9, 0xa2, 0x36, 0xa7, 0x0b, 0x83, 0xd1, 0x7a,
-	0x81, 0xd1, 0x9f, 0x56, 0xe0, 0xbb, 0x26, 0xa3, 0x6c, 0x22, 0x0f, 0xc3, 0xc4, 0x1b, 0x28, 0xb6,
-	0x76, 0x74, 0x04, 0x45, 0x31, 0x55, 0xe6, 0x0f, 0xa6, 0x79, 0x93, 0x53, 0x2d, 0xde, 0xe4, 0xbc,
-	0x07, 0x0d, 0x2a, 0xc9, 0x74, 0x74, 0x5b, 0x91, 0x5d, 0x30, 0x9e, 0xfd, 0xbb, 0x7c, 0x29, 0x22,
-	0xd9, 0xf1, 0xff, 0xf0, 0x07, 0x3f, 0x48, 0x9d, 0xd1, 0x8f, 0xa0, 0x8d, 0x7e, 0x68, 0xf5, 0x4d,
-	0x94, 0x31, 0x4f, 0xb4, 0x62, 0x9d, 0xbb, 0x59, 0xb7, 0x8d, 0x0a, 0xad, 0xec, 0x12, 0xc1, 0x98,
-	0xf5, 0x20, 0x1c, 0xe5, 0x25, 0xda, 0x11, 0x3a, 0x5e, 0xee, 0xb8, 0xca, 0xba, 0xb3, 0x8b, 0x9d,
-	0xa0, 0x46, 0x25, 0xb2, 0x03, 0xeb, 0x59, 0x93, 0x77, 0x5e, 0x8e, 0xc0, 0x13, 0x3d, 0xf1, 0xd0,
-	0xb5, 0x7b, 0x70, 0xbd, 0xb0, 0xb3, 0xaf, 0xc6, 0x4a, 0xf9, 0x0f, 0xc2, 0xd1, 0xae, 0x4b, 0x57,
-	0xa9, 0xef, 0x2f, 0xd4, 0x91, 0x45, 0x69, 0xa5, 0xe8, 0xc5, 0x32, 0xf2, 0x10, 0xac, 0x5e, 0x6f,
-	0x3f, 0x0a, 0xe3, 0xec, 0x3f, 0x19, 0x48, 0xeb, 0xd6, 0xa2, 0xb0, 0x16, 0x5b, 0xc4, 0x69, 0x56,
-	0x2e, 0xa6, 0xf4, 0xbf, 0x91, 0xd2, 0x5d, 0xf8, 0x6f, 0xa4, 0x74, 0x57, 0xfc, 0x37, 0x52, 0xba,
-	0x82, 0x50, 0xec, 0x5f, 0xca, 0xc5, 0x35, 0x4f, 0xa5, 0xb4, 0x70, 0xc3, 0x49, 0x46, 0xe1, 0x86,
-	0x9f, 0x87, 0x7c, 0xf7, 0x8b, 0xa5, 0x68, 0xd6, 0x0c, 0x81, 0x1f, 0xbc, 0x4d, 0x8c, 0x81, 0xd9,
-	0x56, 0xf5, 0x36, 0xa9, 0x3a, 0x3a, 0xcf, 0x36, 0x11, 0x91, 0xb6, 0xb9, 0x8f, 0x06, 0xf6, 0x95,
-	0x17, 0x8f, 0xf7, 0xc2, 0xe7, 0x26, 0x8f, 0x6f, 0x43, 0xe3, 0x99, 0x17, 0x8f, 0xe3, 0xa5, 0x5b,
-	0xc5, 0x39, 0x82, 0x71, 0xfa, 0x6b, 0x04, 0xbe, 0xf5, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x26,
-	0x79, 0xd7, 0xd1, 0x96, 0x3d, 0x00, 0x00,
+	// 5010 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7b, 0xdd, 0x8f, 0x1c, 0x57,
+	0x56, 0xb8, 0xfa, 0x6b, 0xa6, 0xfb, 0xf4, 0xf4, 0xcc, 0xb8, 0xe2, 0xd8, 0xe3, 0x78, 0x93, 0x75,
+	0x2a, 0x9b, 0xfc, 0x9c, 0x8f, 0x4d, 0x76, 0x6d, 0xff, 0x9c, 0xc4, 0x6b, 0x92, 0xcc, 0x8c, 0xed,
+	0xc9, 0x6c, 0x3c, 0xce, 0xa4, 0x7a, 0xc6, 0x41, 0xa0, 0x55, 0xe9, 0x76, 0xd7, 0xed, 0xee, 0xc2,
+	0xd5, 0x55, 0xed, 0xba, 0xd5, 0x63, 0x0f, 0x4f, 0x68, 0x05, 0x08, 0x78, 0x58, 0xf1, 0xc2, 0x03,
+	0x5a, 0x1e, 0x40, 0x48, 0x20, 0x24, 0x84, 0xc4, 0xc3, 0x22, 0xc4, 0x0b, 0x08, 0xfe, 0x02, 0x04,
+	0x12, 0x12, 0x8f, 0xbc, 0x20, 0xf8, 0x2b, 0xd0, 0x39, 0xe7, 0x56, 0xd5, 0xad, 0xee, 0xea, 0xf6,
+	0x4c, 0xc2, 0x03, 0x6f, 0x5d, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0xe7, 0x9c, 0x7b, 0x3e, 0xee, 0x3d,
+	0x0d, 0x4d, 0xaf, 0xf7, 0xfe, 0x24, 0x8e, 0x92, 0xc8, 0x6a, 0x2b, 0x19, 0x9f, 0xc8, 0x98, 0x3e,
+	0x5e, 0x81, 0xa9, 0x92, 0x31, 0x0f, 0xd8, 0xbf, 0x5d, 0x81, 0xcb, 0xdd, 0xee, 0x76, 0xbf, 0x1f,
+	0x4d, 0xc3, 0x64, 0x4f, 0x26, 0x4e, 0x14, 0xc8, 0x87, 0xbe, 0x4a, 0x1c, 0xf9, 0xd4, 0x7a, 0x15,
+	0xa0, 0x3f, 0x12, 0x61, 0x28, 0x03, 0xd7, 0xf7, 0xb6, 0x2a, 0xd7, 0x2a, 0xd7, 0xeb, 0x4e, 0x4b,
+	0x43, 0xf6, 0x3d, 0xeb, 0x32, 0xac, 0x46, 0x13, 0x19, 0xe2, 0x58, 0xf5, 0x5a, 0xe5, 0x7a, 0xcb,
+	0x59, 0xc1, 0xcf, 0x7d, 0xcf, 0x7a, 0x05, 0x9a, 0x93, 0x40, 0x24, 0x83, 0x28, 0x1e, 0x6f, 0xd5,
+	0x68, 0x24, 0xfb, 0xc6, 0x49, 0xbf, 0x1e, 0x85, 0x12, 0x27, 0xd5, 0xaf, 0x55, 0xae, 0x37, 0x9c,
+	0x15, 0xfc, 0xdc, 0xf7, 0xec, 0x69, 0x39, 0x1f, 0xdb, 0xfd, 0x27, 0xd6, 0xfb, 0xd0, 0x88, 0xa3,
+	0x40, 0xaa, 0xad, 0xca, 0xb5, 0xda, 0xf5, 0xf6, 0x8d, 0xad, 0xf7, 0x8d, 0xcd, 0xbc, 0xaf, 0xa7,
+	0x20, 0xbe, 0xc3, 0x68, 0xd6, 0x3b, 0x70, 0xc1, 0x57, 0x6e, 0x3f, 0x88, 0x94, 0x74, 0x63, 0x39,
+	0xf4, 0x55, 0x22, 0x63, 0x62, 0xb1, 0xe9, 0x6c, 0xf8, 0x6a, 0x17, 0xe1, 0x8e, 0x06, 0xdb, 0x7f,
+	0x55, 0x81, 0xcd, 0x6e, 0x77, 0xdb, 0xf3, 0x90, 0xc0, 0x8e, 0xc0, 0x91, 0xa7, 0xd6, 0xdb, 0x50,
+	0xef, 0x09, 0x25, 0x69, 0xcb, 0xed, 0x1b, 0x2f, 0x17, 0xd6, 0xcb, 0xf0, 0x08, 0xc5, 0xfa, 0x2e,
+	0xb4, 0x45, 0x3f, 0xf1, 0x4f, 0xa4, 0xdb, 0x8f, 0x3c, 0xa9, 0x05, 0x01, 0x0c, 0xda, 0x8d, 0x3c,
+	0x69, 0x4a, 0xa9, 0x56, 0x90, 0xd2, 0xeb, 0xb0, 0xa6, 0xa6, 0x3d, 0x37, 0x93, 0x54, 0x9d, 0x46,
+	0xdb, 0x6a, 0xda, 0x3b, 0x4c, 0x85, 0x65, 0x41, 0x1d, 0xa5, 0xb3, 0xd5, 0x20, 0x49, 0xd1, 0x6f,
+	0xfb, 0xe1, 0x0c, 0xbf, 0x28, 0xa0, 0x4d, 0xa8, 0xc9, 0x38, 0x26, 0x76, 0x1b, 0x0e, 0xfe, 0xb4,
+	0xde, 0x82, 0x8d, 0x7e, 0x2c, 0x45, 0x22, 0x5d, 0x14, 0x89, 0x3b, 0xd5, 0x3a, 0xaa, 0x3b, 0x1d,
+	0x06, 0xe3, 0xec, 0x63, 0xdf, 0xb3, 0xef, 0xc3, 0x4b, 0x99, 0xd4, 0x35, 0xd1, 0x47, 0xc9, 0xe0,
+	0xbc, 0x12, 0xb7, 0xef, 0xc2, 0x5a, 0xb7, 0xab, 0xb5, 0x86, 0x02, 0x7c, 0x0f, 0x2c, 0x5a, 0x37,
+	0x95, 0xbe, 0x9b, 0xf8, 0x63, 0xa9, 0x2d, 0x68, 0x33, 0x26, 0x24, 0x1e, 0x38, 0xf2, 0xc7, 0xd2,
+	0xde, 0x33, 0x66, 0x97, 0x6f, 0xe7, 0x4d, 0xa8, 0xe3, 0x2c, 0xda, 0x43, 0xfb, 0xc6, 0x85, 0x39,
+	0x85, 0x38, 0x34, 0x6c, 0x5f, 0x04, 0x2b, 0x23, 0xf4, 0xc0, 0x0f, 0x7d, 0x35, 0x7a, 0x94, 0x0c,
+	0xec, 0x4f, 0xe0, 0x42, 0xb7, 0x9b, 0x8a, 0xab, 0x2b, 0x4e, 0xce, 0xa9, 0x62, 0x9e, 0xff, 0xb9,
+	0x8c, 0xa3, 0x7b, 0x22, 0x11, 0xc6, 0xfc, 0x91, 0x8c, 0xa3, 0x85, 0xf3, 0x11, 0xdf, 0x21, 0x14,
+	0x7b, 0x07, 0xb9, 0xba, 0xff, 0x74, 0xea, 0x4f, 0x4c, 0x02, 0xef, 0x41, 0x43, 0x22, 0x4c, 0x53,
+	0xb8, 0x34, 0x47, 0x81, 0x66, 0x38, 0x8c, 0x64, 0xff, 0x0e, 0x1d, 0xd3, 0xee, 0x13, 0x3f, 0x08,
+	0xe6, 0x28, 0xdd, 0x85, 0xb6, 0xc2, 0x01, 0xd7, 0xa4, 0x77, 0x75, 0x8e, 0x5e, 0x3e, 0xd9, 0x01,
+	0x95, 0xfd, 0xb6, 0x3e, 0x80, 0x8b, 0xc6, 0x6c, 0xd7, 0x93, 0x81, 0x1b, 0xf8, 0x2a, 0xd9, 0xaa,
+	0x5e, 0xab, 0x5d, 0xef, 0x38, 0x17, 0x72, 0xcc, 0x7b, 0x32, 0xc0, 0x03, 0x69, 0xdf, 0x41, 0x03,
+	0xdc, 0x11, 0x43, 0x93, 0x85, 0xb7, 0xa0, 0xd6, 0x13, 0x43, 0xbd, 0xf4, 0xc5, 0x12, 0x61, 0x0e,
+	0x1d, 0x44, 0x60, 0x51, 0xee, 0x8e, 0x8a, 0xfc, 0xbf, 0x0d, 0xf5, 0xfe, 0x28, 0x63, 0x7c, 0x5e,
+	0x94, 0x88, 0xef, 0x10, 0x8a, 0xbd, 0x8b, 0x6b, 0x1f, 0x88, 0xc2, 0xf4, 0x0f, 0xa0, 0x49, 0xb6,
+	0x36, 0x16, 0x93, 0x85, 0x0c, 0x1c, 0x88, 0x89, 0xb3, 0x1a, 0xf3, 0x0f, 0xcd, 0x84, 0x88, 0xbd,
+	0x59, 0x26, 0x44, 0xec, 0x2d, 0x66, 0x42, 0xc4, 0x9e, 0x43, 0x28, 0xf6, 0x8f, 0xe1, 0x62, 0xb7,
+	0xfb, 0x40, 0xa8, 0x91, 0x1f, 0x85, 0x26, 0x89, 0x1b, 0xb0, 0x3a, 0x60, 0xa8, 0xa6, 0xb2, 0x35,
+	0x47, 0x45, 0xcf, 0x72, 0x52, 0x44, 0xfb, 0x01, 0x9e, 0xbf, 0x1d, 0x91, 0x24, 0x81, 0x2c, 0xee,
+	0x69, 0xa5, 0x47, 0x40, 0x4d, 0xe9, 0x72, 0x89, 0x48, 0x71, 0xd8, 0xd1, 0x68, 0xf6, 0x2f, 0x2a,
+	0xc8, 0xd4, 0xee, 0x48, 0x24, 0x07, 0x52, 0x29, 0x31, 0xcc, 0xec, 0x7c, 0x1b, 0xda, 0x83, 0x38,
+	0x1a, 0xa3, 0x9b, 0x39, 0x95, 0xb1, 0x26, 0x77, 0xad, 0x40, 0x0e, 0x67, 0x1d, 0xd2, 0xf0, 0x4e,
+	0xec, 0xcb, 0xc1, 0x7e, 0x38, 0x88, 0x1c, 0xc0, 0x49, 0x0c, 0xb4, 0x7e, 0x09, 0xda, 0xd1, 0x60,
+	0x10, 0xf8, 0xa1, 0x74, 0xc7, 0x6a, 0xa8, 0xcf, 0xe0, 0x77, 0xe6, 0x48, 0xe8, 0x85, 0x79, 0xba,
+	0x9e, 0x70, 0xa0, 0x86, 0xd6, 0x55, 0x68, 0x25, 0x22, 0x1e, 0xca, 0x24, 0x75, 0x81, 0x75, 0xa7,
+	0xc9, 0x80, 0x7d, 0x8f, 0x75, 0x71, 0x24, 0xd4, 0x93, 0x19, 0x5d, 0x24, 0x42, 0x3d, 0x59, 0xa8,
+	0x0b, 0xc4, 0x77, 0x08, 0xc5, 0xfe, 0x02, 0x5e, 0xe6, 0xb3, 0x7d, 0x2f, 0x16, 0xcf, 0x8a, 0xca,
+	0x68, 0x91, 0x55, 0x78, 0xb1, 0x78, 0xb6, 0x90, 0x10, 0x4e, 0x72, 0xc8, 0x7a, 0xf0, 0x97, 0xbd,
+	0x05, 0x97, 0x58, 0x86, 0x5f, 0x32, 0xf7, 0xbc, 0x7f, 0x47, 0x3e, 0xb5, 0x7b, 0xa5, 0x23, 0xe8,
+	0xab, 0x3e, 0x87, 0x97, 0x69, 0x1d, 0x43, 0x42, 0x7c, 0x7e, 0x16, 0x5b, 0xb3, 0x48, 0x1c, 0xf2,
+	0x8e, 0x5f, 0x66, 0x32, 0xa2, 0x73, 0xf5, 0xb7, 0x15, 0x5c, 0x84, 0x74, 0x9b, 0xaa, 0x21, 0x57,
+	0x22, 0xf4, 0x10, 0xe6, 0xfa, 0xe1, 0x20, 0x75, 0x39, 0x76, 0x51, 0x01, 0xd1, 0x78, 0x1c, 0x85,
+	0xb3, 0x5a, 0x6c, 0xf5, 0xd2, 0x9f, 0x8b, 0x83, 0xf5, 0x4c, 0x00, 0xab, 0xcd, 0x05, 0xb0, 0x17,
+	0xc7, 0x29, 0xbb, 0x8b, 0x5a, 0xd0, 0x7e, 0x37, 0x5f, 0x5d, 0x3e, 0xc5, 0x00, 0x96, 0x9c, 0x4e,
+	0xa4, 0x76, 0xe5, 0xf4, 0x1b, 0x43, 0x13, 0x1b, 0x23, 0x46, 0xa5, 0xdc, 0xd7, 0xd4, 0x9d, 0x0e,
+	0x83, 0x8f, 0x7d, 0x8f, 0xe4, 0x11, 0x96, 0x11, 0x45, 0x91, 0x97, 0x11, 0x2d, 0x4a, 0xa8, 0x4a,
+	0x51, 0xeb, 0x7c, 0x12, 0xb2, 0xbf, 0x40, 0x37, 0xbd, 0x1d, 0xcb, 0x50, 0x98, 0x76, 0xf4, 0xff,
+	0x01, 0x48, 0xbf, 0x02, 0x07, 0x16, 0xfa, 0x6a, 0x9a, 0xe6, 0x90, 0xc5, 0xd1, 0x4f, 0x76, 0x92,
+	0x1c, 0x0d, 0x3d, 0xc3, 0x49, 0xc6, 0xd2, 0x5b, 0xe8, 0xa3, 0x1c, 0xe9, 0x39, 0x88, 0xc0, 0x67,
+	0xa2, 0x3b, 0x8a, 0x66, 0x9d, 0xa4, 0x1a, 0x45, 0x8b, 0x9d, 0x24, 0xe2, 0x3b, 0x84, 0xc2, 0xf1,
+	0xe6, 0x28, 0x7a, 0x26, 0xe3, 0x99, 0x78, 0x93, 0x20, 0x6c, 0xe1, 0x1e, 0x68, 0x86, 0xc3, 0x48,
+	0x4c, 0x63, 0x6f, 0xea, 0x07, 0xde, 0x0c, 0x8d, 0x21, 0xc2, 0x16, 0xd2, 0xa0, 0x19, 0x0e, 0x23,
+	0xd9, 0xc7, 0x14, 0xb2, 0x12, 0x91, 0xf8, 0x2a, 0xf1, 0xfb, 0xca, 0x24, 0x74, 0x07, 0x40, 0x65,
+	0x03, 0x9a, 0xda, 0x2b, 0xf3, 0x7b, 0x4a, 0x51, 0x1c, 0x03, 0xdb, 0xfe, 0xef, 0x0a, 0x5c, 0xda,
+	0x46, 0xf3, 0xf4, 0x93, 0xd3, 0x94, 0xe6, 0x3d, 0x99, 0x08, 0x3f, 0xb0, 0xde, 0x80, 0x8e, 0xe0,
+	0x11, 0x5f, 0xaa, 0x34, 0x67, 0x6d, 0x38, 0x6b, 0x39, 0x70, 0xdf, 0xb3, 0x1e, 0x64, 0x48, 0xa7,
+	0xae, 0x27, 0x12, 0xa1, 0x1d, 0xda, 0xeb, 0x33, 0x39, 0x4e, 0x3a, 0x83, 0x49, 0xe3, 0x42, 0x19,
+	0x1d, 0x5a, 0xd6, 0xfa, 0x14, 0x36, 0x31, 0x17, 0x1e, 0x4a, 0x17, 0x3d, 0x11, 0x1b, 0x72, 0x8d,
+	0x0c, 0xaf, 0xa8, 0x9d, 0xd4, 0xbb, 0x39, 0xeb, 0x8c, 0x8e, 0xdf, 0x68, 0xe0, 0x96, 0x0d, 0x1d,
+	0x8c, 0xb6, 0xf9, 0xec, 0x3a, 0x85, 0xdc, 0xb6, 0x27, 0x83, 0x14, 0xc7, 0xfe, 0xf7, 0x0a, 0x9e,
+	0x82, 0xd9, 0xed, 0xa2, 0x08, 0x3f, 0x81, 0x0e, 0x1b, 0xa6, 0x1e, 0xd3, 0x52, 0xbc, 0x32, 0x6f,
+	0x9b, 0x1a, 0xc1, 0x59, 0x8b, 0x8d, 0x2f, 0xeb, 0x18, 0x2e, 0x6a, 0xf6, 0x33, 0x69, 0x64, 0x67,
+	0xb1, 0x7d, 0xe3, 0x8d, 0x32, 0x69, 0xcc, 0x88, 0xdb, 0xb1, 0x98, 0x40, 0x3a, 0x4a, 0x9b, 0x7a,
+	0x07, 0x2e, 0xe0, 0xa6, 0x8a, 0x34, 0x51, 0x2c, 0x0d, 0x67, 0xc3, 0x93, 0x81, 0x89, 0x6b, 0xff,
+	0x04, 0x5e, 0xcd, 0xf7, 0xd6, 0x1d, 0x0b, 0x35, 0xba, 0x3f, 0x1c, 0xaa, 0x03, 0x35, 0xc4, 0x35,
+	0x30, 0x0d, 0xbd, 0x0b, 0x28, 0xf2, 0xdc, 0xa7, 0xd6, 0x89, 0xb7, 0xa2, 0xa1, 0x74, 0x4f, 0x55,
+	0x22, 0xc7, 0x3a, 0xf8, 0x90, 0xe3, 0x4a, 0x1d, 0xea, 0xdf, 0x50, 0x6a, 0x7f, 0x28, 0x13, 0x53,
+	0x6c, 0xd7, 0x60, 0x6d, 0x22, 0x93, 0x3c, 0xcd, 0xa9, 0x90, 0xcc, 0x61, 0x22, 0x13, 0x9d, 0xdf,
+	0xa0, 0x5a, 0x7a, 0x51, 0xe8, 0x15, 0x33, 0xa1, 0x86, 0xd3, 0x46, 0x60, 0x8a, 0x93, 0xe6, 0x1c,
+	0x13, 0x99, 0x90, 0xc7, 0x2c, 0x3b, 0xcf, 0x87, 0x32, 0xe1, 0x9c, 0xe3, 0x50, 0x26, 0xd6, 0xbb,
+	0x60, 0xe1, 0xb2, 0x33, 0x39, 0x16, 0x2b, 0x7c, 0x63, 0x22, 0x93, 0x42, 0x86, 0xb5, 0x47, 0x09,
+	0xeb, 0x34, 0x94, 0x65, 0x01, 0x2d, 0x9e, 0x86, 0x8b, 0xb3, 0x56, 0x9c, 0xc4, 0x01, 0x0d, 0x7f,
+	0xd9, 0x47, 0x48, 0xe8, 0x0b, 0x29, 0x27, 0x5d, 0xf1, 0x24, 0xcb, 0x08, 0x3e, 0x85, 0x75, 0x22,
+	0xf4, 0x44, 0xca, 0x89, 0xab, 0xc4, 0x13, 0xb9, 0xd0, 0x72, 0xd2, 0x99, 0x6c, 0x39, 0xe9, 0x97,
+	0xbd, 0x07, 0xeb, 0xdd, 0xee, 0xc3, 0x48, 0x78, 0xe4, 0xea, 0x50, 0x4f, 0xdf, 0xd0, 0x49, 0xfe,
+	0xa2, 0x02, 0x1b, 0xda, 0xe5, 0x1e, 0x88, 0xa4, 0x3f, 0x42, 0xee, 0x2e, 0x42, 0x43, 0xf5, 0xa3,
+	0x38, 0xf5, 0xee, 0xfc, 0x81, 0x31, 0x23, 0x10, 0x2a, 0x71, 0xf3, 0xc0, 0x91, 0x96, 0x33, 0x08,
+	0x3e, 0x4c, 0xe3, 0x06, 0x56, 0xac, 0x63, 0xa4, 0xe4, 0x06, 0x72, 0xc0, 0x9a, 0x69, 0x38, 0x2d,
+	0x82, 0x3c, 0x94, 0x83, 0x04, 0x63, 0x1d, 0x0f, 0xc7, 0xfe, 0x70, 0x94, 0xe8, 0x02, 0x94, 0x67,
+	0x38, 0x08, 0xb1, 0xbe, 0x07, 0xeb, 0x49, 0x34, 0x71, 0x0d, 0x1a, 0x5c, 0x7a, 0xad, 0x25, 0xd1,
+	0xe4, 0x20, 0x25, 0x63, 0x3f, 0x2c, 0xb2, 0x8d, 0x31, 0xe9, 0x63, 0x80, 0x01, 0x52, 0x30, 0x23,
+	0x74, 0xd1, 0x4e, 0x1f, 0xe0, 0x30, 0x8a, 0x81, 0xe3, 0x0e, 0x61, 0x53, 0xdc, 0xf9, 0x0c, 0xdd,
+	0xe4, 0x9e, 0x4c, 0xbe, 0x4c, 0x46, 0x32, 0x3e, 0xe2, 0xc4, 0x48, 0x87, 0xcf, 0x4d, 0xa8, 0x4d,
+	0xb3, 0xca, 0x1b, 0x7f, 0x5a, 0x2f, 0x41, 0x23, 0x31, 0xb6, 0x5f, 0x4f, 0xb0, 0x88, 0xfb, 0xad,
+	0x4a, 0x39, 0x09, 0x5d, 0x4b, 0x9d, 0x81, 0x04, 0x8a, 0x5d, 0xc6, 0x71, 0x14, 0x6b, 0x99, 0xf1,
+	0x87, 0xf5, 0x7d, 0xa8, 0xd3, 0x7e, 0xea, 0x25, 0x06, 0xf2, 0xd8, 0x97, 0xcf, 0xb2, 0xed, 0x10,
+	0x9a, 0x3d, 0xc2, 0xf3, 0xb6, 0x27, 0xc6, 0x72, 0x47, 0x84, 0x69, 0x25, 0x79, 0x19, 0x56, 0x7b,
+	0x22, 0x74, 0x73, 0x1e, 0x56, 0x7a, 0x22, 0xc4, 0x15, 0xaf, 0xc1, 0x1a, 0x0e, 0xc8, 0xd0, 0xe3,
+	0xe2, 0x90, 0xb9, 0x81, 0x9e, 0x08, 0xef, 0x87, 0x1e, 0x96, 0x85, 0xd6, 0x15, 0x68, 0x22, 0x06,
+	0xc5, 0x7a, 0x66, 0x0b, 0x49, 0x1d, 0x9d, 0x4e, 0x64, 0x9e, 0xf6, 0x39, 0x53, 0x35, 0x2a, 0x3f,
+	0x25, 0x6a, 0xb4, 0xe4, 0x94, 0xa8, 0x51, 0x7a, 0x4a, 0xd4, 0xc8, 0xfe, 0xe3, 0x0a, 0x15, 0xc1,
+	0xa8, 0xcf, 0x2e, 0x5a, 0x9b, 0x23, 0xc2, 0x27, 0xc8, 0xba, 0x16, 0x5d, 0x35, 0x17, 0x5d, 0x66,
+	0x9c, 0x35, 0xd3, 0x38, 0xaf, 0x42, 0x2b, 0x0a, 0x3c, 0x97, 0x47, 0xd8, 0xa6, 0x9a, 0x51, 0xe0,
+	0x11, 0x2d, 0xf4, 0x26, 0x63, 0x3f, 0x74, 0xd1, 0xaa, 0x18, 0x81, 0x0d, 0xaa, 0x3d, 0xf6, 0xc3,
+	0xa3, 0x68, 0xc2, 0x38, 0xd7, 0x00, 0xed, 0xcb, 0x8d, 0x45, 0xf8, 0xc4, 0x0d, 0xa7, 0xe3, 0xad,
+	0x15, 0xb6, 0xcb, 0x24, 0x9a, 0x10, 0x2b, 0xd3, 0xb1, 0xed, 0x60, 0x6a, 0x78, 0x20, 0x9e, 0x93,
+	0x11, 0x1d, 0x52, 0xa0, 0x5e, 0xc8, 0xe4, 0x5b, 0xb0, 0x31, 0x16, 0xcf, 0x5d, 0x36, 0xc7, 0x09,
+	0x85, 0x7c, 0xce, 0xba, 0x3b, 0x63, 0x93, 0x80, 0xfd, 0x73, 0xda, 0xf6, 0x81, 0x98, 0x3c, 0x94,
+	0x27, 0x32, 0xd8, 0x25, 0x57, 0x8e, 0x22, 0xfc, 0x7f, 0xb0, 0x19, 0xca, 0x67, 0x58, 0x4e, 0xb9,
+	0x01, 0x8e, 0xa4, 0x71, 0xb4, 0xe3, 0x74, 0x42, 0xf9, 0x2c, 0xc5, 0xdf, 0xf7, 0x70, 0xdf, 0x13,
+	0xa1, 0x94, 0xa9, 0xbe, 0x26, 0x02, 0x48, 0x79, 0x9f, 0x40, 0x3b, 0x96, 0xfd, 0x28, 0xf6, 0xf8,
+	0x44, 0xb0, 0x93, 0x7c, 0xb5, 0xa0, 0x0a, 0x5d, 0xc2, 0x10, 0x16, 0x57, 0x0d, 0x71, 0xf6, 0xdb,
+	0xfe, 0x83, 0xea, 0x3c, 0x77, 0x68, 0xcf, 0x99, 0xa1, 0x56, 0x4c, 0x43, 0xb5, 0xa0, 0x8e, 0xd2,
+	0x23, 0x2e, 0x3a, 0x0e, 0xfd, 0xc6, 0xbc, 0x95, 0x24, 0xca, 0x3e, 0x43, 0x11, 0x0b, 0x1d, 0xa7,
+	0x8d, 0x30, 0x76, 0x18, 0xca, 0xda, 0x85, 0x0d, 0x14, 0xbc, 0xf6, 0x2a, 0x46, 0x88, 0x99, 0xa9,
+	0x9e, 0xb3, 0x29, 0xc4, 0x66, 0x27, 0x89, 0x26, 0xfc, 0x49, 0xb1, 0xe0, 0x12, 0xac, 0x84, 0x51,
+	0xe2, 0x0f, 0x4e, 0x49, 0xb5, 0x4d, 0x47, 0x7f, 0x59, 0xd7, 0x61, 0x93, 0x8b, 0x33, 0x37, 0x15,
+	0x84, 0x47, 0x9a, 0xad, 0x3b, 0xeb, 0x3d, 0x73, 0xe7, 0x1e, 0xc6, 0x4c, 0x8d, 0x82, 0xa2, 0x74,
+	0x55, 0x22, 0xc6, 0x93, 0xad, 0x55, 0x42, 0xdd, 0xe0, 0x01, 0x14, 0x69, 0x17, 0xc1, 0x76, 0x92,
+	0x65, 0xa9, 0xc8, 0x55, 0x7a, 0x53, 0x77, 0x15, 0x5a, 0xb4, 0x57, 0x23, 0x2f, 0x6e, 0x22, 0x00,
+	0x0f, 0x0b, 0x0e, 0xaa, 0x44, 0xc4, 0x58, 0x7f, 0x3d, 0x27, 0x09, 0x35, 0x9c, 0x26, 0x01, 0xf6,
+	0xbd, 0xe7, 0xe8, 0xf1, 0xc8, 0xb3, 0x2a, 0x29, 0x54, 0x94, 0xdd, 0x52, 0x35, 0x9c, 0x35, 0x84,
+	0x76, 0x09, 0xb8, 0xef, 0xd9, 0xff, 0x51, 0x99, 0x5b, 0x76, 0xb1, 0x32, 0x3e, 0xd4, 0xcc, 0x18,
+	0xe9, 0x44, 0xd1, 0x15, 0x66, 0x74, 0x48, 0x9c, 0xc4, 0x28, 0x49, 0x12, 0x19, 0x95, 0xc1, 0x80,
+	0x0e, 0x82, 0x66, 0xa3, 0x89, 0x00, 0x44, 0x2d, 0x6e, 0xb1, 0xbe, 0x6c, 0x8b, 0x8d, 0x99, 0x2d,
+	0xbe, 0x05, 0x1b, 0x19, 0x59, 0x7d, 0x08, 0xf9, 0x84, 0x75, 0x52, 0xe2, 0x74, 0x0c, 0xed, 0x5f,
+	0xc5, 0x12, 0x3a, 0xe3, 0xcd, 0x91, 0xcf, 0xb0, 0xe4, 0x2f, 0xf5, 0xc2, 0x99, 0x1f, 0xa8, 0xce,
+	0xf8, 0x81, 0x59, 0x29, 0x36, 0x55, 0x2a, 0xc1, 0x9f, 0x94, 0x10, 0x47, 0x11, 0x16, 0xf6, 0x5c,
+	0x99, 0xd9, 0xf3, 0x75, 0xd8, 0x8c, 0x09, 0xd3, 0x50, 0x0f, 0x2f, 0xb9, 0xce, 0xf0, 0x4c, 0x41,
+	0xbf, 0x56, 0x20, 0x7f, 0x3c, 0xf1, 0x44, 0x42, 0x87, 0x79, 0x5e, 0xbd, 0x95, 0x79, 0xf5, 0xd2,
+	0x75, 0x1d, 0xaf, 0x63, 0x1e, 0x05, 0xae, 0xca, 0x34, 0x07, 0xb9, 0xc1, 0xdb, 0x7f, 0x52, 0x29,
+	0x59, 0x6c, 0xb1, 0x39, 0xec, 0x2f, 0x24, 0x3e, 0x7b, 0xce, 0xbe, 0x90, 0xa7, 0x8f, 0x45, 0x30,
+	0x95, 0xa8, 0xd2, 0xdb, 0xb7, 0xe6, 0x57, 0x2e, 0x95, 0x47, 0xad, 0x54, 0x1e, 0x7f, 0x54, 0x81,
+	0x2d, 0x5d, 0x04, 0x1d, 0x0a, 0xa5, 0x72, 0xb7, 0x87, 0x3e, 0xf3, 0x53, 0xe8, 0x50, 0x95, 0xe3,
+	0xf6, 0x0a, 0x15, 0x75, 0x91, 0x19, 0x9a, 0x9b, 0x17, 0x8a, 0x6d, 0x9a, 0xb1, 0xc3, 0xc5, 0x74,
+	0xe9, 0x81, 0xad, 0x96, 0x1e, 0x58, 0x0c, 0xb7, 0xbe, 0x72, 0x87, 0x7c, 0x13, 0xde, 0x74, 0xea,
+	0xbe, 0xda, 0x1b, 0xdb, 0x77, 0x30, 0x60, 0xd3, 0x0a, 0x07, 0x7e, 0x68, 0x38, 0x75, 0xf9, 0x14,
+	0x73, 0x14, 0x66, 0x8e, 0x9c, 0xaf, 0x16, 0x25, 0x10, 0x88, 0x5c, 0xa1, 0xfd, 0x2f, 0x15, 0xe8,
+	0x14, 0xa6, 0xe2, 0x14, 0xd3, 0xdb, 0xeb, 0x29, 0x83, 0x8c, 0xac, 0xf5, 0x11, 0x34, 0x70, 0x9f,
+	0x4a, 0x97, 0x3a, 0x67, 0x29, 0x8c, 0x79, 0x02, 0x92, 0x36, 0x76, 0xaa, 0x03, 0x09, 0xe4, 0x7b,
+	0x44, 0x04, 0xed, 0xe5, 0x08, 0xa1, 0x4e, 0x4e, 0x16, 0x18, 0x44, 0x08, 0x6f, 0x82, 0x76, 0x77,
+	0xee, 0x89, 0x8c, 0x95, 0x1f, 0x85, 0xfa, 0x7c, 0x76, 0x18, 0xfa, 0x98, 0x81, 0xf6, 0x3f, 0x56,
+	0xca, 0x45, 0xa2, 0x93, 0x2b, 0x16, 0x89, 0x56, 0xd6, 0xbc, 0x47, 0x29, 0xcc, 0x73, 0x5a, 0x84,
+	0x4d, 0x9a, 0x2a, 0x73, 0xc2, 0xd5, 0xb3, 0x3b, 0xe1, 0x5a, 0xb9, 0x4e, 0x73, 0x97, 0x5f, 0x37,
+	0x5d, 0xbe, 0xfd, 0x2e, 0xee, 0x01, 0xed, 0xed, 0x28, 0x53, 0x17, 0x9f, 0xf6, 0x12, 0x27, 0x62,
+	0xdf, 0x86, 0xf5, 0x1c, 0x8d, 0x98, 0x4d, 0xa3, 0x98, 0xbe, 0xd8, 0xa0, 0x28, 0x36, 0x17, 0xdf,
+	0xed, 0xb8, 0x7c, 0x91, 0x17, 0x3a, 0x93, 0x3b, 0x05, 0x29, 0x96, 0x9d, 0xbf, 0x22, 0x3b, 0x86,
+	0x18, 0xed, 0x50, 0x27, 0x98, 0x0f, 0x62, 0x5f, 0x86, 0xde, 0x51, 0x0a, 0x2f, 0xf7, 0x8e, 0x57,
+	0xa0, 0x39, 0x73, 0xb3, 0xb3, 0x3a, 0xe5, 0x3b, 0x1d, 0xf4, 0x10, 0x3d, 0x39, 0xf4, 0xc3, 0x34,
+	0x81, 0xa2, 0x0f, 0xba, 0xef, 0x0f, 0xd3, 0xf7, 0x20, 0xfc, 0x69, 0xff, 0x69, 0xa5, 0x7c, 0xc1,
+	0xf2, 0x8c, 0xd6, 0x30, 0xef, 0xda, 0xf9, 0xcc, 0xfb, 0x22, 0x34, 0x06, 0x7e, 0x28, 0x02, 0x7d,
+	0x38, 0xf9, 0x23, 0xe7, 0xb2, 0x5e, 0xc2, 0x65, 0x23, 0xe7, 0xf2, 0x1d, 0xcc, 0xca, 0xbe, 0x0c,
+	0x03, 0x3f, 0x94, 0x7b, 0x32, 0xc1, 0x5c, 0x72, 0xa1, 0x50, 0xec, 0x41, 0x29, 0x2e, 0xee, 0xe7,
+	0x0e, 0xb4, 0x30, 0x5b, 0xe5, 0xbb, 0x08, 0x36, 0xee, 0x62, 0x9e, 0x84, 0xc8, 0x66, 0x05, 0xee,
+	0x34, 0x63, 0x9d, 0xf5, 0x96, 0x58, 0xc7, 0xef, 0x51, 0x56, 0x97, 0xa6, 0xc5, 0x79, 0x56, 0x37,
+	0x2f, 0xb5, 0xab, 0x7a, 0x5d, 0x0a, 0xa8, 0x3a, 0x2d, 0x40, 0x00, 0x05, 0xd4, 0xf2, 0x4c, 0xf7,
+	0x12, 0xac, 0xd0, 0x8f, 0x1b, 0xe9, 0xdb, 0x1d, 0x7f, 0x65, 0xf0, 0x9b, 0x5a, 0x3a, 0xfa, 0xcb,
+	0xfe, 0x8b, 0x12, 0x66, 0xca, 0x55, 0xb8, 0x94, 0x99, 0x57, 0x01, 0x68, 0x30, 0x8e, 0xa6, 0x61,
+	0xea, 0xf0, 0x09, 0xdd, 0x41, 0x40, 0xce, 0x6b, 0xbd, 0x9c, 0xd7, 0xc6, 0x02, 0x5e, 0x57, 0x0a,
+	0xbc, 0x92, 0x82, 0xb4, 0x6a, 0xf8, 0x1d, 0x70, 0x71, 0xfc, 0xff, 0x16, 0xdc, 0xda, 0x3f, 0xad,
+	0x94, 0x2e, 0xf4, 0x0d, 0xc4, 0x72, 0x09, 0x56, 0x38, 0xea, 0x69, 0xeb, 0xd5, 0x5f, 0x94, 0xf8,
+	0x72, 0x94, 0x64, 0x16, 0x58, 0x2c, 0x6d, 0x86, 0x65, 0x4c, 0x5c, 0xcc, 0x98, 0xe8, 0x8e, 0xa2,
+	0xc9, 0xe2, 0xd3, 0xbc, 0x94, 0x05, 0x74, 0x38, 0xa3, 0x68, 0x62, 0xd6, 0x68, 0x4d, 0x04, 0xd0,
+	0xe0, 0x6b, 0xd0, 0x56, 0xd3, 0x9e, 0x4b, 0x08, 0xd9, 0x73, 0x6f, 0x4b, 0x4d, 0x7b, 0xb4, 0xa0,
+	0x67, 0xff, 0x43, 0x19, 0x13, 0xdf, 0xc2, 0x3c, 0x54, 0x22, 0x86, 0xd2, 0x14, 0x78, 0x17, 0x01,
+	0x33, 0xfa, 0xa8, 0xcf, 0x5a, 0x4f, 0x61, 0x0b, 0x8d, 0xe5, 0x5b, 0x58, 0x99, 0xdd, 0xc2, 0x1f,
+	0x92, 0x81, 0x1b, 0x5b, 0xd8, 0x99, 0x9e, 0xfe, 0x6f, 0x8b, 0xf1, 0x0a, 0x34, 0x87, 0x51, 0xe4,
+	0xa9, 0x5c, 0x86, 0xab, 0xf4, 0xcd, 0x15, 0x18, 0x0f, 0x61, 0xd5, 0xa8, 0x79, 0x27, 0x00, 0xd6,
+	0x8c, 0xff, 0x56, 0xc2, 0xdb, 0xff, 0x2d, 0xe9, 0x9a, 0x3b, 0x5b, 0x59, 0xb2, 0xb3, 0xd5, 0x99,
+	0x9d, 0x6d, 0xd3, 0x3d, 0x03, 0x6f, 0x8c, 0x1c, 0xe2, 0xb9, 0x25, 0x6e, 0xff, 0x7d, 0x75, 0x86,
+	0xc6, 0xe2, 0xfc, 0x75, 0xbe, 0xc2, 0x5e, 0x5a, 0xa7, 0x5c, 0x81, 0x66, 0x76, 0xa7, 0x51, 0xa7,
+	0x39, 0xab, 0x52, 0x5f, 0x68, 0x14, 0x38, 0x6a, 0xcc, 0xc8, 0xf9, 0x16, 0x34, 0xb1, 0x16, 0xa5,
+	0x28, 0xb0, 0x42, 0x51, 0xe0, 0xca, 0x5c, 0x14, 0xc0, 0x05, 0x8e, 0xa2, 0xc9, 0x4d, 0x67, 0x35,
+	0xe1, 0xd7, 0x01, 0x14, 0x3f, 0xb1, 0xc2, 0xc9, 0xe2, 0xaa, 0xb6, 0x4f, 0x19, 0x0c, 0x28, 0x8c,
+	0x5b, 0x37, 0xa1, 0x49, 0xb7, 0x9d, 0x48, 0xb4, 0x59, 0xf2, 0x94, 0x8f, 0x44, 0xf5, 0x05, 0xa9,
+	0xb3, 0x3a, 0xe1, 0x1f, 0x58, 0x33, 0xf4, 0xa7, 0xb1, 0x6b, 0xa8, 0xb5, 0xc5, 0x35, 0x43, 0x7f,
+	0x1a, 0x3b, 0x99, 0x1f, 0xf3, 0xd2, 0xb7, 0x76, 0x84, 0x7c, 0x53, 0x5f, 0x49, 0xe9, 0x25, 0xb9,
+	0x2a, 0xc3, 0xf4, 0x81, 0x41, 0xa4, 0xa7, 0x7f, 0xae, 0xcc, 0x2d, 0x73, 0x4e, 0x4d, 0xe5, 0x8b,
+	0xd7, 0x96, 0x2f, 0x5e, 0x9f, 0x5d, 0xdc, 0xba, 0x0d, 0x2d, 0x3f, 0x91, 0x63, 0xce, 0x64, 0x1a,
+	0x25, 0x3a, 0x31, 0x0b, 0x16, 0xa7, 0x89, 0xb8, 0x94, 0xe5, 0x14, 0xcf, 0xc4, 0xca, 0x6c, 0x04,
+	0xf8, 0xcd, 0x0a, 0xac, 0xe1, 0x76, 0x0e, 0xf4, 0xbb, 0x42, 0x89, 0xd0, 0xee, 0x64, 0xac, 0x19,
+	0xc5, 0xd2, 0x92, 0xb5, 0x35, 0xd7, 0xb4, 0x3a, 0xdd, 0xff, 0xf8, 0x81, 0x3b, 0x11, 0xb1, 0x18,
+	0x9b, 0xf7, 0xef, 0x1d, 0x04, 0x1f, 0x22, 0x94, 0xca, 0xb8, 0xbf, 0xae, 0xc0, 0x55, 0x0e, 0xce,
+	0xd9, 0x0b, 0x41, 0x56, 0x99, 0x62, 0x95, 0xf4, 0x1a, 0xb4, 0x89, 0x4e, 0x7f, 0x30, 0xcc, 0xeb,
+	0xc6, 0x16, 0x82, 0x76, 0x07, 0x43, 0x3e, 0xa2, 0x34, 0x6e, 0x2a, 0x16, 0x01, 0xa9, 0xe8, 0x68,
+	0x90, 0x2c, 0xaf, 0xb6, 0xc0, 0x9c, 0x53, 0x01, 0xf0, 0xbc, 0xd4, 0x9e, 0x97, 0xb8, 0x13, 0x7e,
+	0x87, 0x4d, 0xad, 0xe1, 0x05, 0x45, 0xfa, 0x6d, 0x33, 0xaf, 0x7a, 0xa1, 0x04, 0xb3, 0x9c, 0xca,
+	0xfe, 0xf3, 0x0a, 0xac, 0xe7, 0xb4, 0x4b, 0xb8, 0xaa, 0xcc, 0x3a, 0x39, 0xf3, 0xf6, 0x29, 0xcd,
+	0xdb, 0x67, 0x34, 0x58, 0xfb, 0x96, 0x1a, 0xac, 0x97, 0x69, 0xf0, 0x67, 0x05, 0x4e, 0xd3, 0x2b,
+	0x94, 0xc5, 0xa7, 0xed, 0x2e, 0xd0, 0xed, 0x97, 0x9b, 0x65, 0x0d, 0xe5, 0x57, 0x5d, 0xf9, 0xc6,
+	0x1d, 0x88, 0xb3, 0x6f, 0x4c, 0x2b, 0x06, 0xd4, 0x53, 0x53, 0x4c, 0x2b, 0x18, 0xc6, 0xea, 0x19,
+	0x95, 0xaa, 0xa7, 0x3c, 0xe8, 0xdc, 0x2d, 0x33, 0xf1, 0x45, 0xcc, 0xd0, 0x3d, 0x97, 0x21, 0x22,
+	0xfb, 0x73, 0xaa, 0x16, 0xa5, 0x9a, 0x59, 0xca, 0xb8, 0x11, 0x3d, 0x6b, 0x24, 0xf8, 0x11, 0x3f,
+	0xb6, 0xa0, 0x35, 0xf2, 0x75, 0x6c, 0x39, 0x8d, 0xc2, 0x95, 0x4f, 0x47, 0x27, 0x99, 0xf6, 0x21,
+	0x74, 0xf8, 0x29, 0x04, 0x4d, 0x19, 0x27, 0x96, 0x3b, 0xa6, 0xb7, 0xa1, 0x8e, 0x9a, 0xd3, 0xe5,
+	0xf7, 0xcb, 0x25, 0xed, 0x29, 0x7e, 0xe0, 0x10, 0x8a, 0xfd, 0x1b, 0x55, 0x24, 0x89, 0x80, 0xf4,
+	0x11, 0xec, 0x33, 0x6d, 0x0d, 0x2a, 0x11, 0x89, 0xcc, 0x1f, 0xad, 0x66, 0x5d, 0x39, 0x4e, 0xd9,
+	0x8d, 0xc2, 0x44, 0x86, 0x09, 0xdb, 0x49, 0x17, 0xf1, 0xcd, 0x87, 0x46, 0xa2, 0x62, 0xbe, 0x68,
+	0x79, 0x32, 0xc0, 0x59, 0x84, 0x73, 0x17, 0x3a, 0xc2, 0xf3, 0x0c, 0x9c, 0xda, 0x0b, 0xd6, 0x68,
+	0x0b, 0xcf, 0xcb, 0x66, 0x93, 0xaf, 0x78, 0xce, 0xb3, 0xf3, 0x54, 0x6f, 0x2c, 0x9e, 0x23, 0xc6,
+	0xbe, 0x67, 0xbd, 0x0b, 0x16, 0x86, 0x94, 0x61, 0x10, 0xf5, 0x44, 0x90, 0xa1, 0x71, 0x08, 0xdc,
+	0xe8, 0x4f, 0xe3, 0x3d, 0x1a, 0x60, 0x64, 0xdb, 0xa5, 0x56, 0x96, 0x68, 0x3c, 0x91, 0x89, 0x9f,
+	0xf8, 0x51, 0x98, 0xde, 0xed, 0xef, 0xc1, 0x66, 0x3f, 0x87, 0xa6, 0xf5, 0xd2, 0x7c, 0x33, 0x0a,
+	0x75, 0x59, 0xe4, 0x88, 0xce, 0x86, 0x31, 0x8b, 0x4e, 0xf8, 0x50, 0x77, 0x16, 0x1c, 0xfb, 0xde,
+	0xce, 0x29, 0x3d, 0x54, 0x88, 0x31, 0xad, 0x70, 0x05, 0x28, 0x8e, 0x1b, 0xaf, 0x15, 0xab, 0xf8,
+	0x7d, 0xec, 0x53, 0x9b, 0x84, 0x92, 0x22, 0xee, 0x8f, 0xdc, 0x50, 0x8c, 0xb3, 0x3e, 0x3f, 0x06,
+	0xe1, 0xf4, 0xac, 0x57, 0xaf, 0x66, 0xf4, 0xea, 0xf5, 0xcb, 0x16, 0xc2, 0xe3, 0xf0, 0x63, 0xd8,
+	0xc8, 0xdb, 0x15, 0x4c, 0x9d, 0x9e, 0xa5, 0x76, 0xed, 0x64, 0x3d, 0x0b, 0x74, 0x14, 0xa8, 0x1d,
+	0xe9, 0xde, 0x0e, 0x57, 0xca, 0xdb, 0x9e, 0xf7, 0x40, 0x84, 0x4a, 0x6f, 0x86, 0x3a, 0x7f, 0x8c,
+	0xcd, 0xe0, 0x37, 0x6e, 0xe6, 0x32, 0xac, 0xa2, 0xb2, 0xf3, 0x60, 0xb9, 0x22, 0x3c, 0xef, 0xd8,
+	0xa7, 0xd0, 0x34, 0x4f, 0x6c, 0x71, 0xc0, 0x35, 0x97, 0xa8, 0x16, 0x97, 0xf8, 0x51, 0xbe, 0x44,
+	0xed, 0xcc, 0x97, 0x4e, 0x29, 0x1b, 0x85, 0x2d, 0xdd, 0x93, 0x01, 0x72, 0x81, 0x47, 0x61, 0xf9,
+	0x96, 0xd0, 0xc6, 0x8d, 0x2d, 0x79, 0x32, 0x40, 0x5a, 0xff, 0x44, 0x69, 0xb0, 0x26, 0x65, 0xbc,
+	0x14, 0xdd, 0x86, 0x26, 0xa6, 0xf6, 0x86, 0xec, 0x97, 0x5e, 0x46, 0xae, 0xaa, 0x69, 0x8f, 0x4c,
+	0xfd, 0x23, 0x68, 0x0d, 0x44, 0xa8, 0xce, 0x7c, 0x8b, 0xd9, 0x44, 0x6c, 0x9a, 0x79, 0x07, 0xa0,
+	0x17, 0x88, 0x7e, 0xa1, 0x55, 0x60, 0xe9, 0xd4, 0x16, 0xa1, 0x93, 0x92, 0xa9, 0x4f, 0x0c, 0x1d,
+	0x4d, 0xbe, 0x11, 0x14, 0xc8, 0x07, 0xb0, 0x32, 0x20, 0xc0, 0xc2, 0x3e, 0x31, 0xc6, 0x77, 0x34,
+	0x9a, 0xfd, 0x9f, 0x15, 0xb0, 0xbe, 0x8e, 0xe2, 0xc0, 0xdb, 0x89, 0x94, 0x22, 0x0f, 0x91, 0x76,
+	0x07, 0xf5, 0x22, 0x65, 0xb4, 0x4c, 0xac, 0xe0, 0xe7, 0xbe, 0x67, 0xad, 0x43, 0x75, 0x34, 0xd1,
+	0x3e, 0xb3, 0x3a, 0x9a, 0x14, 0xee, 0x76, 0x6a, 0xc5, 0xbb, 0x1d, 0x3c, 0x21, 0x53, 0xd4, 0xaa,
+	0x99, 0xfb, 0x02, 0x83, 0x28, 0xfd, 0x7d, 0x03, 0x3a, 0xde, 0x34, 0x16, 0x74, 0x78, 0x09, 0x45,
+	0xbf, 0xad, 0xa6, 0x40, 0x42, 0xc2, 0x84, 0x96, 0xa9, 0xf8, 0xde, 0xf3, 0xbc, 0xe0, 0x42, 0xc8,
+	0xbe, 0xf7, 0xdc, 0xba, 0x0e, 0x9b, 0x7a, 0x98, 0xf8, 0x25, 0x8f, 0xce, 0x59, 0xef, 0x3a, 0xc3,
+	0x71, 0x5f, 0xe4, 0xd7, 0xff, 0xab, 0x82, 0x8e, 0x94, 0xda, 0x88, 0xa3, 0xe1, 0x82, 0x34, 0x2b,
+	0xed, 0x24, 0xaa, 0x1a, 0x9d, 0x44, 0x57, 0xd8, 0x2e, 0xcc, 0x57, 0x47, 0x35, 0xed, 0xa5, 0xa5,
+	0xd0, 0x5c, 0x48, 0x6e, 0x4d, 0xd2, 0x70, 0x8c, 0x01, 0x92, 0x3e, 0x6e, 0xdf, 0xca, 0x33, 0xc6,
+	0xba, 0xd3, 0xd6, 0x30, 0x6d, 0x02, 0x85, 0xa0, 0xb7, 0x72, 0x9e, 0xac, 0x00, 0x19, 0x4b, 0xf4,
+	0xed, 0xf9, 0xea, 0xb5, 0xda, 0xf5, 0x96, 0xb3, 0xaa, 0x12, 0xbe, 0x91, 0xbf, 0x0f, 0x6b, 0xd9,
+	0x56, 0xf9, 0x3d, 0xbe, 0x19, 0x44, 0x43, 0xd3, 0xb6, 0x67, 0x7a, 0x26, 0x4c, 0xb9, 0x38, 0xab,
+	0x41, 0xc4, 0x0d, 0x13, 0x63, 0xb8, 0xc0, 0x8d, 0x48, 0xea, 0xc6, 0xc1, 0xa9, 0x7a, 0xca, 0x97,
+	0x92, 0x17, 0xa1, 0x31, 0x8e, 0x42, 0x79, 0xaa, 0xdf, 0x00, 0xf9, 0xc3, 0x7a, 0x13, 0xd6, 0x93,
+	0x28, 0x11, 0x81, 0x1b, 0xcb, 0xfe, 0x48, 0xc4, 0x43, 0x96, 0x61, 0xd5, 0xe9, 0x10, 0xd4, 0xd1,
+	0x40, 0x8c, 0xbc, 0x27, 0xbe, 0x7e, 0x47, 0x4c, 0xf3, 0xef, 0x13, 0x9f, 0xdf, 0xf4, 0xec, 0x97,
+	0xd2, 0xbe, 0x5c, 0x47, 0x2a, 0x5a, 0xef, 0x51, 0x32, 0xb0, 0x7f, 0x9f, 0xae, 0x47, 0xd8, 0x31,
+	0x90, 0x7d, 0xf2, 0xad, 0x51, 0x79, 0x50, 0xc6, 0x02, 0x72, 0xea, 0x07, 0xc6, 0xad, 0xee, 0x2a,
+	0x7d, 0x73, 0x5b, 0x5b, 0xda, 0x9d, 0x63, 0x54, 0x16, 0xba, 0x03, 0x07, 0x95, 0x79, 0x1d, 0x36,
+	0x3d, 0x89, 0x86, 0xc4, 0x57, 0xe7, 0x86, 0xcd, 0xae, 0x13, 0x9c, 0xae, 0x92, 0xa9, 0x3d, 0x59,
+	0xc2, 0x15, 0xee, 0x17, 0xdd, 0x8d, 0x82, 0x40, 0xf6, 0xd1, 0x54, 0x97, 0x31, 0x75, 0x19, 0x56,
+	0xfb, 0x22, 0xbf, 0x69, 0x6e, 0x38, 0x2b, 0xf8, 0xb9, 0x4f, 0xcd, 0x09, 0x34, 0x60, 0x4a, 0xa3,
+	0x85, 0x10, 0x16, 0xc7, 0x57, 0xa8, 0x44, 0x3c, 0xe2, 0x87, 0x32, 0x41, 0xca, 0x6f, 0x41, 0x6d,
+	0x22, 0x93, 0x85, 0xed, 0x62, 0x87, 0x32, 0x71, 0x10, 0x01, 0x85, 0x10, 0x44, 0xc2, 0x73, 0xd1,
+	0x0b, 0x70, 0x93, 0xfb, 0x2a, 0x7e, 0xdf, 0x0f, 0x3d, 0x3b, 0x4c, 0xbd, 0x46, 0xde, 0xfb, 0xcb,
+	0x6d, 0x35, 0xdf, 0xa6, 0x61, 0x78, 0xc9, 0x7a, 0x7f, 0x49, 0xd7, 0xb6, 0x87, 0x32, 0xf9, 0x6a,
+	0x2a, 0xe3, 0xd3, 0x6d, 0xa5, 0x7c, 0x95, 0xf5, 0x32, 0xec, 0xc2, 0x85, 0xa7, 0x08, 0x75, 0x05,
+	0x81, 0x4d, 0xe3, 0x2c, 0x7a, 0x2d, 0x9e, 0x46, 0x96, 0xb9, 0xf1, 0x34, 0xa7, 0x33, 0xf3, 0xd6,
+	0x5a, 0x2d, 0xbc, 0xb5, 0x2e, 0x71, 0x4b, 0xa6, 0x8d, 0xd4, 0x0b, 0x36, 0x62, 0x9f, 0x94, 0x73,
+	0x8b, 0xf1, 0x2e, 0x5f, 0xa8, 0x52, 0x58, 0xa8, 0x74, 0x17, 0xd5, 0xf3, 0xed, 0xc2, 0xfe, 0x0a,
+	0x0d, 0xff, 0x50, 0x26, 0x5d, 0x99, 0x30, 0x54, 0x2b, 0x65, 0x5e, 0x32, 0x57, 0x4b, 0x68, 0x52,
+	0x03, 0x16, 0x25, 0xe7, 0x22, 0x27, 0xf9, 0x77, 0x55, 0x3a, 0x36, 0x32, 0xd9, 0x89, 0x42, 0x2f,
+	0x5f, 0x0a, 0x05, 0xff, 0x1a, 0x50, 0xeb, 0xd2, 0x4c, 0x1d, 0x87, 0x20, 0xae, 0xe3, 0x76, 0x60,
+	0xa3, 0x1f, 0x85, 0x1e, 0xa5, 0x47, 0x3f, 0x3c, 0x63, 0xbd, 0xb9, 0x9e, 0xcf, 0x20, 0x21, 0x9b,
+	0x34, 0x6e, 0x9c, 0xb1, 0xe2, 0xc9, 0x69, 0xdc, 0x98, 0xa3, 0x71, 0xd3, 0x7c, 0x8c, 0x3f, 0x13,
+	0x8d, 0x9b, 0xa9, 0xb2, 0x33, 0x3b, 0x68, 0x2c, 0xb6, 0x83, 0x95, 0xa2, 0x1d, 0xc4, 0xa5, 0xb2,
+	0x43, 0x33, 0x78, 0x91, 0xec, 0x3e, 0x2a, 0x2a, 0xed, 0x05, 0x86, 0x60, 0x2a, 0xec, 0xb6, 0x5e,
+	0x73, 0xdb, 0x3b, 0xd9, 0xee, 0x8f, 0x7c, 0x79, 0x22, 0xc7, 0x98, 0x55, 0xcb, 0xa7, 0xd6, 0x77,
+	0x00, 0x26, 0x32, 0x29, 0x2e, 0xd9, 0x9c, 0xc8, 0x84, 0x56, 0xb4, 0x7f, 0x5e, 0x29, 0x9d, 0x88,
+	0xcc, 0x2e, 0x9d, 0x68, 0xbd, 0x0d, 0x9b, 0x22, 0xc7, 0x37, 0x9b, 0x36, 0x36, 0x0c, 0x38, 0xc5,
+	0xe0, 0x8f, 0xa0, 0x41, 0x29, 0xe6, 0x39, 0x32, 0x37, 0x9e, 0x60, 0x3f, 0x46, 0x57, 0x39, 0xc7,
+	0x5c, 0x97, 0x1d, 0xda, 0x72, 0xfe, 0xae, 0x42, 0x4b, 0x78, 0x27, 0xda, 0x39, 0xea, 0x22, 0x4d,
+	0x78, 0x27, 0xec, 0x1b, 0x4f, 0xa9, 0x35, 0x9a, 0x2f, 0xab, 0x70, 0xbd, 0xdc, 0xff, 0xd2, 0x73,
+	0x29, 0x06, 0x22, 0xb3, 0x6b, 0x0c, 0x08, 0xc4, 0xcd, 0x35, 0xef, 0xe9, 0x1e, 0xa6, 0x6a, 0x59,
+	0x4b, 0x7e, 0x4e, 0x91, 0x5b, 0x98, 0x52, 0x77, 0x5e, 0xcb, 0x1f, 0x54, 0x0e, 0x60, 0x8b, 0x97,
+	0x26, 0x77, 0x78, 0xce, 0xc5, 0xe7, 0xdf, 0x67, 0x1e, 0x63, 0x49, 0x70, 0xff, 0xf9, 0x44, 0xb2,
+	0xd9, 0xde, 0xdb, 0xf9, 0x5c, 0x06, 0x13, 0x54, 0xbb, 0x0d, 0x9d, 0x9e, 0x74, 0x47, 0x32, 0x98,
+	0x48, 0xcf, 0x48, 0x70, 0xdb, 0x3d, 0xf9, 0x39, 0xc1, 0x8e, 0x39, 0xde, 0x2d, 0xc8, 0xb7, 0xed,
+	0xa0, 0x8c, 0xee, 0xe2, 0xcc, 0x7d, 0x6e, 0xb5, 0xea, 0xf2, 0xd5, 0x6a, 0xc5, 0xd5, 0x5c, 0xf4,
+	0x9c, 0x18, 0x58, 0xf6, 0xc3, 0x13, 0x3f, 0x11, 0x69, 0x65, 0x85, 0x32, 0xb9, 0x07, 0x1b, 0x7e,
+	0x06, 0x5c, 0xfc, 0xbc, 0xce, 0xad, 0x63, 0x29, 0x9e, 0xb3, 0x9e, 0xcf, 0xa1, 0x07, 0xc7, 0x7f,
+	0xad, 0x63, 0xe8, 0xca, 0x11, 0xd2, 0x62, 0xf8, 0x2a, 0xb4, 0x7a, 0x42, 0x49, 0x57, 0x89, 0x13,
+	0xa9, 0x5d, 0x73, 0xb3, 0xa7, 0xff, 0xd6, 0x83, 0x83, 0xfd, 0xc0, 0xef, 0x73, 0x13, 0x95, 0x36,
+	0x21, 0x02, 0x3c, 0x9a, 0x8e, 0xad, 0x5b, 0x70, 0x89, 0x6a, 0x3b, 0x83, 0xb9, 0x70, 0x3a, 0xee,
+	0x65, 0xdd, 0x51, 0x17, 0x71, 0x34, 0x5f, 0xf0, 0x11, 0x8d, 0x71, 0x43, 0x21, 0xfd, 0x83, 0x69,
+	0x9a, 0xc5, 0x8f, 0x16, 0x43, 0x8e, 0xd3, 0x5e, 0x2b, 0x1a, 0xce, 0xee, 0x7c, 0x1b, 0x69, 0xaf,
+	0x15, 0x82, 0xd3, 0x56, 0xb6, 0x77, 0xe0, 0x02, 0x73, 0x36, 0x96, 0x48, 0x36, 0xcf, 0xfe, 0xea,
+	0xce, 0x06, 0x0d, 0x1c, 0x10, 0x9c, 0x1c, 0xd5, 0x87, 0xb0, 0xc5, 0xb8, 0xb1, 0x9c, 0x04, 0xe2,
+	0xd4, 0xd5, 0x0b, 0x64, 0x79, 0x5f, 0xdd, 0x79, 0x99, 0xc6, 0x1d, 0x1a, 0x3e, 0xa0, 0x51, 0x5d,
+	0xc2, 0xb7, 0xf2, 0x5e, 0x62, 0xbe, 0xed, 0xfd, 0x6e, 0x41, 0xe6, 0xf9, 0xee, 0xb2, 0x9e, 0xe4,
+	0x66, 0x92, 0x76, 0x23, 0x77, 0xe1, 0x25, 0xba, 0x00, 0x60, 0x06, 0x33, 0x2f, 0xda, 0x22, 0x3a,
+	0xdf, 0x5b, 0x40, 0x87, 0xd9, 0x7e, 0x2c, 0xf8, 0x1a, 0x6f, 0x53, 0x78, 0x1e, 0x43, 0x74, 0x0f,
+	0xbf, 0xf5, 0x7d, 0x78, 0x89, 0x6e, 0x1e, 0x66, 0x88, 0x02, 0x77, 0x96, 0x78, 0x32, 0x28, 0xa2,
+	0x7f, 0x06, 0x6b, 0xc8, 0x43, 0x96, 0xbb, 0xb6, 0x69, 0xf1, 0xd7, 0x16, 0x2c, 0x9e, 0xe6, 0xaf,
+	0x20, 0x3c, 0xef, 0x21, 0xa7, 0xb0, 0xa4, 0x2f, 0x5e, 0x0c, 0x6d, 0x60, 0x4d, 0xdf, 0x43, 0x10,
+	0xe4, 0xd1, 0x74, 0x6c, 0xff, 0x32, 0x1e, 0xe6, 0x9c, 0xc2, 0x9e, 0xd4, 0x7a, 0xd6, 0xff, 0x76,
+	0x1c, 0xca, 0xcc, 0x28, 0xd8, 0xb6, 0x5a, 0x43, 0x59, 0x6e, 0x09, 0xd5, 0x19, 0x4b, 0xb0, 0x07,
+	0x0b, 0x28, 0xe3, 0x11, 0x7c, 0x17, 0x2e, 0xcc, 0x5b, 0x9d, 0xfe, 0x33, 0x9c, 0xbf, 0xdc, 0xe2,
+	0xe6, 0xd6, 0xf9, 0x10, 0x5e, 0x35, 0xd7, 0xe1, 0x49, 0xc7, 0x2a, 0x7f, 0x8f, 0xc7, 0xcc, 0xc5,
+	0x5c, 0x41, 0x7f, 0xd9, 0x7f, 0x56, 0x59, 0x36, 0x73, 0xb1, 0xa7, 0xc8, 0x82, 0x41, 0xf5, 0x9c,
+	0xc1, 0x60, 0x46, 0x17, 0xb5, 0x19, 0x5d, 0x18, 0x8c, 0xd6, 0x0b, 0x8c, 0xfe, 0xac, 0x02, 0xaf,
+	0x9b, 0x8c, 0xb2, 0x89, 0x3c, 0x8a, 0x12, 0xbf, 0x2f, 0xd9, 0xda, 0xd1, 0x11, 0x14, 0xc5, 0x54,
+	0x99, 0x3d, 0x98, 0xe6, 0x4d, 0x4e, 0xb5, 0x78, 0x93, 0xf3, 0x01, 0x34, 0xa8, 0x24, 0xd3, 0xd1,
+	0x6d, 0x49, 0x76, 0xc1, 0x78, 0xf6, 0xef, 0xf2, 0xa5, 0x88, 0x60, 0xc7, 0xff, 0xc3, 0x1f, 0xfc,
+	0x20, 0x75, 0x46, 0x1f, 0x43, 0x0b, 0xfd, 0xd0, 0xf2, 0x9b, 0x28, 0x63, 0x9e, 0xd3, 0x54, 0x3a,
+	0x77, 0xb3, 0x6e, 0x1b, 0x15, 0x5a, 0xd9, 0x25, 0x82, 0x31, 0xeb, 0x61, 0x34, 0xcc, 0x4b, 0xb4,
+	0x03, 0x74, 0xbc, 0xdc, 0x71, 0x95, 0x75, 0x67, 0x17, 0x3b, 0x41, 0x8d, 0x4a, 0xe4, 0x1a, 0xac,
+	0x65, 0x4d, 0xde, 0x79, 0x39, 0x02, 0x4f, 0xf4, 0xc4, 0x7d, 0xcf, 0xee, 0xc2, 0xd5, 0xc2, 0xce,
+	0xbe, 0x1e, 0x49, 0x19, 0x3c, 0x8c, 0x86, 0xdb, 0x1e, 0x5d, 0xa5, 0xde, 0x9a, 0xab, 0x23, 0x8b,
+	0xd2, 0x4a, 0xd1, 0x8b, 0x65, 0xe4, 0x3e, 0x58, 0xdd, 0xee, 0x6e, 0x1c, 0xa9, 0xec, 0x2f, 0x1f,
+	0x48, 0xeb, 0xe6, 0xbc, 0xb0, 0xe6, 0x5b, 0xc4, 0x69, 0x56, 0x2e, 0xa6, 0xf4, 0xaf, 0x97, 0xc2,
+	0x9b, 0xfb, 0xeb, 0xa5, 0xf0, 0x96, 0xfc, 0xf5, 0x52, 0x78, 0x0e, 0xa1, 0xd8, 0xbf, 0x92, 0x8b,
+	0x6b, 0x96, 0x4a, 0x69, 0xe1, 0x86, 0x93, 0x8c, 0xc2, 0x0d, 0x3f, 0xf7, 0xf9, 0xee, 0x17, 0x4b,
+	0xd1, 0xac, 0x19, 0x02, 0x3f, 0x78, 0x9b, 0x18, 0x03, 0xb3, 0xad, 0xea, 0x6d, 0x52, 0x75, 0x74,
+	0x96, 0x6d, 0x22, 0x22, 0x6d, 0x73, 0x17, 0x0d, 0xec, 0x6b, 0x5f, 0x8d, 0x76, 0xa2, 0xe7, 0x26,
+	0x8f, 0xef, 0x42, 0xe3, 0x99, 0xaf, 0x46, 0x6a, 0xe1, 0x56, 0x71, 0x8e, 0xc3, 0x38, 0xf6, 0x4f,
+	0xa9, 0x9b, 0x7e, 0xe7, 0xc8, 0x14, 0xfa, 0xc7, 0xb0, 0xd6, 0x4b, 0xdc, 0x5e, 0x14, 0xf8, 0x26,
+	0x43, 0xc5, 0x04, 0x75, 0xe7, 0x68, 0x27, 0x0a, 0x7c, 0xf6, 0xa4, 0xbd, 0x24, 0xfd, 0x6d, 0xdd,
+	0xd2, 0x91, 0xd6, 0xf8, 0x8b, 0xcc, 0xdc, 0x3c, 0xa1, 0xb8, 0x12, 0xa1, 0x10, 0x8c, 0xbf, 0x7a,
+	0x2b, 0x34, 0x76, 0xf3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x44, 0x7b, 0x31, 0xf5, 0x7a, 0x3e,
+	0x00, 0x00,
 }

+ 8 - 1
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/db.proto

@@ -160,6 +160,9 @@ message SSActivityDataSaveReq {  //project db
     repeated ActivityDataSaveDetail change_activity_list      = 2; //变化的活动数据
     repeated int32 del_activity_list        = 3; //过期删除的活动 活动id
 }
+message SSActivitySmashEggsMsgSaveNtf { //project db
+    repeated SystemMessage act_msg_list               = 4; // 活动内的操作消息(砸蛋奖励获取消息)
+}
 //宠物数据保存
 message SSPetDataSaveReq {  //project db
     repeated uint32 pet_del_list        = 1; //删除宠物列表
@@ -748,4 +751,8 @@ message SSWishBoxDataSaveReq { //project db
     RoleWish wishs = 1;
 }
 
-
+// bt服务版
+message SSBTDataSaveNtf {   //project db
+   BTBoliData bt_boli_data              = 1; // 波利商城
+   BTBaseData base_data                 = 2;
+}

+ 361 - 319
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/error_code.pb.go

@@ -62,6 +62,7 @@ const (
 	ErrorCode_ERROR_ROLE_PLATFORM_EMPTY                         ErrorCode = 37
 	ErrorCode_ERROR_ONLINE_REWARD_NO                            ErrorCode = 38
 	ErrorCode_ERROR_ITEM_NOT_IN_USE_TIME                        ErrorCode = 39
+	ErrorCode_ERROR_RMB_CANNOT_ADD_MORE                         ErrorCode = 40
 	ErrorCode_ERROR_NO_ATTR_POINT                               ErrorCode = 50
 	ErrorCode_ERROR_ATTR_NOT_ENOUGH                             ErrorCode = 51
 	ErrorCode_ERROR_HERO_NO_FOUND                               ErrorCode = 101
@@ -328,25 +329,30 @@ const (
 	ErrorCode_ERROR_ACTIVITIES_WHEEL_REWARDALL_NOT ErrorCode = 644
 	ErrorCode_ERROR_ACTIVITIES_WHEEL_CANNOT_CLOSE  ErrorCode = 645
 	//PAY
-	ErrorCode_ERROR_PAY_ITEM_NO                        ErrorCode = 660
-	ErrorCode_ERROR_PAY_PRODUCTION_MODE                ErrorCode = 661
-	ErrorCode_ERROR_PAY_GOOD_PRICE_FREE                ErrorCode = 662
-	ErrorCode_ERROR_PAY_NOT_OPEN                       ErrorCode = 663
-	ErrorCode_ERROR_VIP_LEVEL_LOW                      ErrorCode = 670
-	ErrorCode_ERROR_DRAWSYSTEM_CONFIG_NOT_FOUND        ErrorCode = 690
-	ErrorCode_ERROR_DRAWSYSTEM_RES_NOT_ENOUGH          ErrorCode = 691
-	ErrorCode_ERROR_DRAWSYSTEM_DRAW_COUNT              ErrorCode = 692
-	ErrorCode_ERROR_DRAWSYSTEM_CARD_BAG_FULL           ErrorCode = 693
-	ErrorCode_ERROR_DRAWSYSTEM_PET_BAG_FULL            ErrorCode = 694
-	ErrorCode_ERROR_DAWSYSTEM_PET_FULL                 ErrorCode = 695
-	ErrorCode_ERROR_DAWSYSTEM_CARD_FULL                ErrorCode = 696
-	ErrorCode_ERROR_DAWSYSTEM_SKILLEQUIP_FULL          ErrorCode = 697
-	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_SPRITE    ErrorCode = 710
-	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_GUILD     ErrorCode = 711
-	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_CRUISE    ErrorCode = 712
-	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_SKILLBOOK ErrorCode = 713
-	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_PETPIECE  ErrorCode = 714
-	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_SKILLEXP  ErrorCode = 715
+	ErrorCode_ERROR_PAY_ITEM_NO                         ErrorCode = 660
+	ErrorCode_ERROR_PAY_PRODUCTION_MODE                 ErrorCode = 661
+	ErrorCode_ERROR_PAY_GOOD_PRICE_FREE                 ErrorCode = 662
+	ErrorCode_ERROR_PAY_NOT_OPEN                        ErrorCode = 663
+	ErrorCode_ERROR_PAY_CREDITRECHARGE_NOT_ENOUGH       ErrorCode = 664
+	ErrorCode_ERROR_PAY_CREDITRECHARGE_LIMIT_NOT_ENOUGH ErrorCode = 665
+	ErrorCode_ERROR_PAY_SPECIALPRIVILEGE_HAS_REWARD     ErrorCode = 666
+	ErrorCode_ERROR_PAY_SPECIALPRIVILEGE_UNLOCK         ErrorCode = 667
+	ErrorCode_ERROR_PAY_PASSCHECK_BUY                   ErrorCode = 668
+	ErrorCode_ERROR_VIP_LEVEL_LOW                       ErrorCode = 670
+	ErrorCode_ERROR_DRAWSYSTEM_CONFIG_NOT_FOUND         ErrorCode = 690
+	ErrorCode_ERROR_DRAWSYSTEM_RES_NOT_ENOUGH           ErrorCode = 691
+	ErrorCode_ERROR_DRAWSYSTEM_DRAW_COUNT               ErrorCode = 692
+	ErrorCode_ERROR_DRAWSYSTEM_CARD_BAG_FULL            ErrorCode = 693
+	ErrorCode_ERROR_DRAWSYSTEM_PET_BAG_FULL             ErrorCode = 694
+	ErrorCode_ERROR_DAWSYSTEM_PET_FULL                  ErrorCode = 695
+	ErrorCode_ERROR_DAWSYSTEM_CARD_FULL                 ErrorCode = 696
+	ErrorCode_ERROR_DAWSYSTEM_SKILLEQUIP_FULL           ErrorCode = 697
+	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_SPRITE     ErrorCode = 710
+	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_GUILD      ErrorCode = 711
+	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_CRUISE     ErrorCode = 712
+	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_SKILLBOOK  ErrorCode = 713
+	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_PETPIECE   ErrorCode = 714
+	ErrorCode_ERROR_SHOP_RESOURCE_NOT_NEOUGH_SKILLEXP   ErrorCode = 715
 	//百人道场
 	ErrorCode_ERROR_DAOCHANG100_FIGHTING            ErrorCode = 750
 	ErrorCode_ERROR_DAOCHANG100_PRETECTED           ErrorCode = 751
@@ -419,6 +425,11 @@ const (
 	ErrorCode_ERROR_CARD_EXCHANGE_COST_CONFIG         ErrorCode = 954
 	ErrorCode_ERROR_CARD_EXCHANGE_INIT_CARD_NOT_FOUND ErrorCode = 955
 	ErrorCode_ERROR_COMBINE_SERVER_NOT_IN_STATE       ErrorCode = 990
+	ErrorCode_ERROR_BT_BOLISHOP_REWARED               ErrorCode = 1000
+	ErrorCode_ERROR_BT_BOLISHOP_ROCOIN_NOT_ENOUGH     ErrorCode = 1001
+	ErrorCode_ERROR_BT_FIRSTRECHARGE_REWARDED         ErrorCode = 1002
+	ErrorCode_ERROR_BT_RECHARGE_NO_REWARD             ErrorCode = 1003
+	ErrorCode_ERROR_BT_RECHARGE100_BUY                ErrorCode = 1004
 	//拉新系统
 	ErrorCode_ERROR_INVITATION_HAS_NUMBER      ErrorCode = 2640
 	ErrorCode_ERROR_INVITATION_NUM_LIMIT       ErrorCode = 2641
@@ -514,6 +525,7 @@ var ErrorCode_name = map[int32]string{
 	37:   "ERROR_ROLE_PLATFORM_EMPTY",
 	38:   "ERROR_ONLINE_REWARD_NO",
 	39:   "ERROR_ITEM_NOT_IN_USE_TIME",
+	40:   "ERROR_RMB_CANNOT_ADD_MORE",
 	50:   "ERROR_NO_ATTR_POINT",
 	51:   "ERROR_ATTR_NOT_ENOUGH",
 	101:  "ERROR_HERO_NO_FOUND",
@@ -776,6 +788,11 @@ var ErrorCode_name = map[int32]string{
 	661:  "ERROR_PAY_PRODUCTION_MODE",
 	662:  "ERROR_PAY_GOOD_PRICE_FREE",
 	663:  "ERROR_PAY_NOT_OPEN",
+	664:  "ERROR_PAY_CREDITRECHARGE_NOT_ENOUGH",
+	665:  "ERROR_PAY_CREDITRECHARGE_LIMIT_NOT_ENOUGH",
+	666:  "ERROR_PAY_SPECIALPRIVILEGE_HAS_REWARD",
+	667:  "ERROR_PAY_SPECIALPRIVILEGE_UNLOCK",
+	668:  "ERROR_PAY_PASSCHECK_BUY",
 	670:  "ERROR_VIP_LEVEL_LOW",
 	690:  "ERROR_DRAWSYSTEM_CONFIG_NOT_FOUND",
 	691:  "ERROR_DRAWSYSTEM_RES_NOT_ENOUGH",
@@ -856,6 +873,11 @@ var ErrorCode_name = map[int32]string{
 	954:  "ERROR_CARD_EXCHANGE_COST_CONFIG",
 	955:  "ERROR_CARD_EXCHANGE_INIT_CARD_NOT_FOUND",
 	990:  "ERROR_COMBINE_SERVER_NOT_IN_STATE",
+	1000: "ERROR_BT_BOLISHOP_REWARED",
+	1001: "ERROR_BT_BOLISHOP_ROCOIN_NOT_ENOUGH",
+	1002: "ERROR_BT_FIRSTRECHARGE_REWARDED",
+	1003: "ERROR_BT_RECHARGE_NO_REWARD",
+	1004: "ERROR_BT_RECHARGE100_BUY",
 	2640: "ERROR_INVITATION_HAS_NUMBER",
 	2641: "ERROR_INVITATION_NUM_LIMIT",
 	2642: "ERROR_INVITATION_NUMBER_INVALID",
@@ -947,6 +969,7 @@ var ErrorCode_value = map[string]int32{
 	"ERROR_ROLE_PLATFORM_EMPTY":                         37,
 	"ERROR_ONLINE_REWARD_NO":                            38,
 	"ERROR_ITEM_NOT_IN_USE_TIME":                        39,
+	"ERROR_RMB_CANNOT_ADD_MORE":                         40,
 	"ERROR_NO_ATTR_POINT":                               50,
 	"ERROR_ATTR_NOT_ENOUGH":                             51,
 	"ERROR_HERO_NO_FOUND":                               101,
@@ -1209,6 +1232,11 @@ var ErrorCode_value = map[string]int32{
 	"ERROR_PAY_PRODUCTION_MODE":                         661,
 	"ERROR_PAY_GOOD_PRICE_FREE":                         662,
 	"ERROR_PAY_NOT_OPEN":                                663,
+	"ERROR_PAY_CREDITRECHARGE_NOT_ENOUGH":               664,
+	"ERROR_PAY_CREDITRECHARGE_LIMIT_NOT_ENOUGH":         665,
+	"ERROR_PAY_SPECIALPRIVILEGE_HAS_REWARD":             666,
+	"ERROR_PAY_SPECIALPRIVILEGE_UNLOCK":                 667,
+	"ERROR_PAY_PASSCHECK_BUY":                           668,
 	"ERROR_VIP_LEVEL_LOW":                               670,
 	"ERROR_DRAWSYSTEM_CONFIG_NOT_FOUND":                 690,
 	"ERROR_DRAWSYSTEM_RES_NOT_ENOUGH":                   691,
@@ -1289,6 +1317,11 @@ var ErrorCode_value = map[string]int32{
 	"ERROR_CARD_EXCHANGE_COST_CONFIG":                   954,
 	"ERROR_CARD_EXCHANGE_INIT_CARD_NOT_FOUND":           955,
 	"ERROR_COMBINE_SERVER_NOT_IN_STATE":                 990,
+	"ERROR_BT_BOLISHOP_REWARED":                         1000,
+	"ERROR_BT_BOLISHOP_ROCOIN_NOT_ENOUGH":               1001,
+	"ERROR_BT_FIRSTRECHARGE_REWARDED":                   1002,
+	"ERROR_BT_RECHARGE_NO_REWARD":                       1003,
+	"ERROR_BT_RECHARGE100_BUY":                          1004,
 	"ERROR_INVITATION_HAS_NUMBER":                       2640,
 	"ERROR_INVITATION_NUM_LIMIT":                        2641,
 	"ERROR_INVITATION_NUMBER_INVALID":                   2642,
@@ -1355,304 +1388,313 @@ func init() {
 func init() { proto.RegisterFile("error_code.proto", fileDescriptor_c5513ac0a8e17e40) }
 
 var fileDescriptor_c5513ac0a8e17e40 = []byte{
-	// 4777 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x7b, 0x67, 0x94, 0x24, 0xb7,
-	0x71, 0xff, 0x7f, 0x77, 0x67, 0x67, 0xa5, 0x51, 0xf8, 0x17, 0x9b, 0xb7, 0x7b, 0xcc, 0x39, 0x88,
-	0xb4, 0x2c, 0x8b, 0xd6, 0x7b, 0xfe, 0x8e, 0xe9, 0xc6, 0xcc, 0x40, 0xdb, 0xd3, 0x68, 0x76, 0xa3,
-	0x37, 0x7c, 0xea, 0x47, 0x9b, 0x4b, 0x89, 0x36, 0xc9, 0xa3, 0x8f, 0x47, 0x59, 0xf4, 0x27, 0xe6,
-	0x9c, 0x73, 0xe6, 0x91, 0x92, 0xa8, 0x44, 0xcb, 0x99, 0x49, 0x8e, 0x7a, 0xb6, 0xc4, 0x9c, 0xa3,
-	0x02, 0x83, 0x48, 0x39, 0x5b, 0x22, 0x25, 0xe6, 0x20, 0xfa, 0xa1, 0x00, 0x34, 0x6a, 0xba, 0x7b,
-	0x8e, 0xfa, 0x72, 0xb7, 0x33, 0xf5, 0x03, 0x50, 0x55, 0xa8, 0x2a, 0x54, 0x15, 0x30, 0x3d, 0xd8,
-	0xd8, 0xba, 0x75, 0xcb, 0xd6, 0xf2, 0x0f, 0xb6, 0x1c, 0xb9, 0xf1, 0x99, 0xe3, 0xb7, 0x6e, 0xd9,
-	0xb6, 0x25, 0xf8, 0xd8, 0x09, 0x1b, 0x5b, 0xbf, 0xb4, 0xb1, 0x15, 0x3f, 0x1c, 0xba, 0x7d, 0x5b,
-	0xef, 0xa3, 0x5c, 0x23, 0xc2, 0x2d, 0x47, 0x6e, 0x04, 0x1f, 0xef, 0x7d, 0x84, 0x67, 0x99, 0xcc,
-	0x4a, 0xb9, 0x0c, 0xff, 0x2f, 0xf8, 0x64, 0xaf, 0x67, 0x3e, 0x0d, 0x98, 0x88, 0x61, 0x26, 0xd8,
-	0xa9, 0xf7, 0x09, 0xf3, 0x39, 0xe3, 0xb1, 0x1c, 0x8a, 0x04, 0x66, 0x83, 0x5d, 0x7a, 0x9b, 0xec,
-	0x57, 0x32, 0xe6, 0x65, 0x22, 0x55, 0x39, 0x90, 0x45, 0x12, 0xc1, 0x5c, 0xb0, 0x5b, 0x6f, 0xc9,
-	0x50, 0xc6, 0x32, 0xe1, 0xeb, 0x48, 0xe2, 0x89, 0x2c, 0x86, 0x23, 0xe8, 0x90, 0x51, 0x3c, 0xa7,
-	0x94, 0xf9, 0x60, 0x53, 0x0f, 0x0c, 0x25, 0x61, 0x63, 0x5e, 0xf2, 0x35, 0x91, 0x2b, 0xe8, 0xd6,
-	0xbf, 0x1d, 0xa7, 0x6a, 0x1d, 0x16, 0x82, 0xcd, 0xbd, 0x9d, 0xcd, 0xb7, 0x8a, 0xe5, 0xcb, 0x65,
-	0xc6, 0x57, 0x59, 0x16, 0xf1, 0x08, 0x3e, 0x12, 0x04, 0xbd, 0x4f, 0x1a, 0x42, 0x9f, 0x0d, 0xcb,
-	0x41, 0x11, 0xc7, 0xf0, 0x51, 0xbf, 0xa4, 0x50, 0x7c, 0x4c, 0x18, 0xed, 0x05, 0x87, 0xf4, 0x0e,
-	0x6c, 0x13, 0xa1, 0x4c, 0x38, 0x8f, 0x4a, 0x16, 0x2a, 0xb1, 0xc2, 0xcb, 0x50, 0x46, 0x1c, 0x3e,
-	0x16, 0xec, 0xdd, 0xdb, 0x9d, 0x40, 0x0d, 0x4d, 0x93, 0x4a, 0xfc, 0x16, 0x3e, 0x1e, 0xec, 0xd5,
-	0xdb, 0xad, 0x1d, 0x50, 0xe4, 0x3c, 0x82, 0x4f, 0x04, 0xfb, 0xf5, 0xf6, 0x22, 0x74, 0xe4, 0x3b,
-	0x0f, 0x65, 0xc6, 0x3d, 0xf7, 0xff, 0x3f, 0xd8, 0xbf, 0xb7, 0x77, 0x3b, 0xc6, 0x33, 0x0d, 0xc1,
-	0x01, 0xbd, 0x7d, 0xa6, 0x83, 0xac, 0x36, 0x77, 0xaa, 0xf1, 0x1b, 0xf3, 0x15, 0x1e, 0x53, 0x40,
-	0xe0, 0x15, 0x8b, 0x80, 0x3e, 0x4b, 0x78, 0x04, 0x3b, 0x07, 0x4b, 0xbd, 0x80, 0x7c, 0x2b, 0x92,
-	0x15, 0x16, 0x8b, 0x08, 0x36, 0x05, 0x8b, 0xbd, 0x9d, 0xac, 0x3d, 0x88, 0xe1, 0x48, 0x95, 0xe1,
-	0x88, 0x87, 0xcb, 0xb0, 0xe8, 0x57, 0xe9, 0x33, 0xa5, 0x62, 0x2d, 0x4b, 0x28, 0xb3, 0xa8, 0x1a,
-	0xb7, 0x14, 0xec, 0xd1, 0xdb, 0xa5, 0x0d, 0x90, 0xb3, 0x15, 0x0e, 0x9b, 0xfd, 0x6a, 0x43, 0xbd,
-	0xb9, 0x2b, 0x3c, 0xcb, 0x85, 0x4c, 0x60, 0x17, 0x62, 0x24, 0xe3, 0x3e, 0xe5, 0x7a, 0x57, 0xbf,
-	0xf1, 0x7a, 0x7f, 0x71, 0x3f, 0x53, 0x11, 0x73, 0xd8, 0xcd, 0xab, 0x3f, 0x1c, 0xb1, 0x38, 0xe6,
-	0xc9, 0x90, 0x97, 0x4a, 0x8c, 0x79, 0x19, 0x8b, 0xb1, 0x50, 0xb0, 0xbb, 0x5f, 0x2a, 0xe7, 0xd9,
-	0x0a, 0xcf, 0xec, 0xb6, 0xed, 0xe1, 0x6d, 0x35, 0x8f, 0x96, 0x4b, 0x34, 0x6d, 0x34, 0x79, 0x1e,
-	0xc1, 0x9e, 0x6d, 0x34, 0xbe, 0x96, 0x8a, 0x8c, 0xc3, 0x5e, 0xc1, 0xae, 0xbd, 0xc5, 0x89, 0xf9,
-	0xc6, 0x4c, 0x24, 0x8a, 0x89, 0x04, 0xf6, 0x0e, 0x76, 0xef, 0x6d, 0x9e, 0x20, 0x2d, 0x8b, 0x70,
-	0x59, 0x6b, 0x8c, 0x29, 0xd8, 0x27, 0xd8, 0xb7, 0xb7, 0xe7, 0x04, 0xb1, 0xc8, 0xb9, 0x5d, 0xd0,
-	0xb2, 0xba, 0xaf, 0x9f, 0x1a, 0xf7, 0x60, 0xc4, 0xf2, 0x32, 0xcc, 0x38, 0x53, 0x1c, 0xf6, 0xab,
-	0xed, 0x6a, 0xc8, 0x12, 0xd4, 0x4e, 0xc6, 0x87, 0x22, 0x57, 0x3c, 0x83, 0xfd, 0xfd, 0xda, 0x08,
-	0xb0, 0x6b, 0x98, 0x89, 0x0f, 0x08, 0xf6, 0xec, 0xed, 0x4a, 0x88, 0x69, 0xcc, 0xd4, 0x40, 0x66,
-	0x63, 0xeb, 0x54, 0x07, 0x7a, 0x71, 0x65, 0x12, 0x8b, 0xc4, 0x19, 0x66, 0x99, 0x48, 0x38, 0xc8,
-	0xab, 0xb7, 0xf2, 0x21, 0x91, 0x20, 0xef, 0x5a, 0xc9, 0x70, 0xb0, 0xdf, 0x97, 0x44, 0x96, 0x4c,
-	0xa9, 0xac, 0x4c, 0xa5, 0x48, 0x14, 0xfc, 0xae, 0x17, 0x06, 0xbf, 0x25, 0x7b, 0xf9, 0x39, 0x3f,
-	0x66, 0xc4, 0x33, 0xa9, 0x07, 0x1a, 0x0b, 0xdf, 0xf0, 0x52, 0x22, 0x21, 0x94, 0xc9, 0x40, 0x0c,
-	0x89, 0x0b, 0x1c, 0xe5, 0xed, 0x03, 0x01, 0xc6, 0xb8, 0xc7, 0x6c, 0x0d, 0xbe, 0xe0, 0xe5, 0x37,
-	0x73, 0xa2, 0x1f, 0x47, 0x2b, 0x2c, 0x09, 0x39, 0x7c, 0xd1, 0x0b, 0x88, 0x44, 0xfb, 0x3d, 0x0e,
-	0x3c, 0xba, 0x3e, 0x50, 0x6a, 0xf9, 0x8c, 0xcd, 0xc2, 0x1f, 0x7a, 0xc5, 0x39, 0x22, 0xfe, 0x6f,
-	0xc9, 0x7f, 0x54, 0x1b, 0x9b, 0xab, 0x8c, 0x27, 0x43, 0x35, 0xc2, 0x89, 0x8f, 0x09, 0x0e, 0xee,
-	0xed, 0xdf, 0x46, 0x0c, 0x65, 0xae, 0xa8, 0x3a, 0x8e, 0xf5, 0xae, 0x82, 0xc0, 0x31, 0x5b, 0x2b,
-	0x3f, 0x2f, 0xfb, 0x65, 0xae, 0xd8, 0x90, 0xc3, 0x71, 0xc1, 0xa1, 0xbd, 0x83, 0xa8, 0x4e, 0x46,
-	0x4c, 0x5b, 0xb8, 0x06, 0x84, 0x32, 0x89, 0x84, 0x12, 0xb2, 0xb2, 0xdb, 0x2d, 0xc1, 0x81, 0xbd,
-	0x7d, 0x0d, 0x96, 0x1f, 0x5e, 0x88, 0xd4, 0x29, 0x30, 0x62, 0x8a, 0x11, 0x2d, 0x1e, 0xef, 0x03,
-	0x89, 0x81, 0x0d, 0x64, 0x36, 0xe4, 0x65, 0x52, 0x8c, 0x29, 0x5b, 0x7f, 0xec, 0x75, 0x3d, 0x81,
-	0x92, 0xb0, 0xd5, 0xdb, 0x84, 0xa1, 0xa8, 0xf5, 0xd4, 0xc4, 0xa0, 0x31, 0x53, 0xe1, 0x08, 0x4e,
-	0xf0, 0xa6, 0x6e, 0xe8, 0x66, 0x9b, 0x8a, 0xb4, 0x64, 0xb1, 0x0e, 0x45, 0x09, 0x87, 0x6d, 0x5e,
-	0xb1, 0x06, 0x92, 0xc7, 0x52, 0x2b, 0xc5, 0x7c, 0x82, 0x13, 0xeb, 0x82, 0x64, 0x7c, 0xa0, 0xed,
-	0xb2, 0x26, 0xc8, 0x97, 0xea, 0xb3, 0x58, 0x98, 0x55, 0xc7, 0x9f, 0x78, 0x72, 0x38, 0x12, 0x69,
-	0x7d, 0xf4, 0x97, 0xbd, 0xb5, 0x21, 0xb9, 0x61, 0x6d, 0x27, 0x05, 0xfb, 0xf4, 0xf6, 0x98, 0x00,
-	0x8c, 0x53, 0x99, 0xd3, 0x90, 0xfc, 0xa7, 0xc1, 0x5e, 0x6e, 0x85, 0x7c, 0x59, 0xc4, 0x71, 0x25,
-	0x06, 0x7e, 0x82, 0x53, 0x67, 0x82, 0xdd, 0xaa, 0x60, 0xe1, 0xe9, 0xb1, 0x0c, 0x97, 0xe1, 0xb4,
-	0x99, 0xe0, 0x53, 0xce, 0x3e, 0x28, 0x0d, 0x55, 0x85, 0x9c, 0xba, 0x50, 0x7a, 0xfa, 0x4c, 0x70,
-	0x90, 0xd3, 0x86, 0x41, 0xd6, 0xb7, 0xd5, 0x9c, 0x98, 0x67, 0xcc, 0x04, 0xbb, 0x57, 0x61, 0x0b,
-	0x71, 0x9a, 0x66, 0x8e, 0x23, 0x38, 0x73, 0x26, 0xd8, 0xdb, 0x6d, 0x9a, 0x21, 0x6a, 0x0b, 0xc2,
-	0x8d, 0x33, 0xf1, 0xf0, 0xac, 0x99, 0x60, 0x1f, 0xa7, 0x0e, 0x0f, 0x40, 0x1b, 0xb4, 0x88, 0xb3,
-	0x1b, 0x08, 0xf3, 0xaf, 0xb6, 0x57, 0x64, 0x1b, 0xce, 0x69, 0x70, 0xda, 0x7e, 0x04, 0x9d, 0xdb,
-	0x60, 0xa6, 0x96, 0x12, 0x9c, 0xd7, 0x58, 0x2a, 0x41, 0xdd, 0xb0, 0x2c, 0xb1, 0xaa, 0x3d, 0x7f,
-	0x26, 0xd8, 0xd7, 0x6d, 0x0e, 0x65, 0x46, 0xa6, 0x3c, 0xb1, 0xdc, 0x5c, 0xd0, 0x58, 0xc5, 0xad,
-	0x65, 0x75, 0x72, 0xe1, 0x4c, 0x70, 0x80, 0x3b, 0x76, 0xdd, 0x2a, 0xee, 0x0f, 0x1d, 0x3e, 0x32,
-	0x9e, 0x73, 0x05, 0x17, 0xb5, 0x31, 0xcb, 0x8d, 0x07, 0xeb, 0xd5, 0xe0, 0xe2, 0x99, 0xe0, 0xe0,
-	0xde, 0x7e, 0x4d, 0x40, 0xc3, 0x9e, 0x2e, 0x99, 0x09, 0x0e, 0x75, 0x69, 0x07, 0x05, 0x66, 0x3c,
-	0x97, 0x45, 0x16, 0x4e, 0x1c, 0xe3, 0x97, 0x36, 0x4c, 0x47, 0x66, 0x11, 0xc7, 0x30, 0x0a, 0x97,
-	0xcd, 0x04, 0xbb, 0xb8, 0x00, 0x6a, 0x68, 0x7c, 0x2d, 0x45, 0xca, 0xe5, 0x33, 0xc1, 0xae, 0xce,
-	0x69, 0x43, 0x13, 0xc1, 0xdd, 0xe2, 0x57, 0xd6, 0x49, 0xde, 0x14, 0xaf, 0x9a, 0xf1, 0x66, 0x8c,
-	0xa4, 0x9a, 0x3f, 0x5f, 0x3d, 0x13, 0xec, 0xe1, 0xe2, 0x1c, 0xd2, 0xcd, 0x86, 0xf6, 0xf9, 0xba,
-	0x4c, 0x22, 0xb8, 0xa6, 0x3e, 0x9a, 0x26, 0x53, 0x6b, 0x0a, 0xae, 0x25, 0x7b, 0xe9, 0x17, 0xd6,
-	0x67, 0x5b, 0x22, 0xf1, 0x0b, 0xb8, 0x6e, 0x26, 0x38, 0xd0, 0x05, 0x24, 0x44, 0x48, 0x1b, 0x0f,
-	0x0c, 0x33, 0x52, 0x96, 0x03, 0x96, 0x2b, 0xb8, 0xbe, 0x0e, 0x0b, 0x65, 0x1c, 0xf3, 0x50, 0xeb,
-	0x6f, 0x95, 0xeb, 0xcf, 0x03, 0x16, 0xe7, 0x1c, 0x6e, 0xa8, 0xaf, 0xd7, 0xd8, 0x87, 0x1b, 0x89,
-	0xeb, 0xd5, 0x27, 0xf2, 0xe2, 0xc5, 0x72, 0x15, 0x6e, 0x22, 0x56, 0x36, 0x60, 0xf9, 0x48, 0xc7,
-	0xda, 0x5a, 0x14, 0xd9, 0x4e, 0xf4, 0xea, 0x20, 0x5a, 0xb8, 0x22, 0x85, 0x9b, 0x89, 0x66, 0x28,
-	0xc9, 0xc6, 0x11, 0xb8, 0x65, 0x26, 0xd8, 0xcf, 0x05, 0x4a, 0x47, 0x4f, 0x59, 0x6a, 0x76, 0xd9,
-	0x4e, 0xff, 0x15, 0xe2, 0x52, 0x93, 0x98, 0x9c, 0xaf, 0x91, 0x3d, 0xfa, 0xea, 0x54, 0x9c, 0x76,
-	0x63, 0x8f, 0xfb, 0xda, 0x4c, 0xf0, 0x3b, 0xbd, 0x43, 0x27, 0x71, 0x2e, 0xae, 0xb9, 0xcf, 0x4a,
-	0x96, 0x11, 0x77, 0x4c, 0xde, 0xba, 0x23, 0x15, 0x18, 0x47, 0xfb, 0x7a, 0xcb, 0xda, 0x63, 0xa6,
-	0x78, 0x26, 0xd8, 0x84, 0xdb, 0x7f, 0x83, 0xec, 0x8c, 0xc3, 0x19, 0x0f, 0xc0, 0x0c, 0x41, 0x2e,
-	0xc3, 0x37, 0xc9, 0x16, 0x33, 0x29, 0x30, 0x8b, 0x11, 0xe8, 0x18, 0x11, 0x0d, 0xbb, 0xf7, 0x10,
-	0x97, 0xd4, 0x30, 0x9e, 0x28, 0xa1, 0xd6, 0x09, 0xe0, 0xde, 0x1a, 0xc0, 0x66, 0x2d, 0x3a, 0x53,
-	0x2b, 0x43, 0xa1, 0xd6, 0xe1, 0x3e, 0xe2, 0x42, 0xb8, 0x90, 0xce, 0x42, 0x91, 0x72, 0x3f, 0x09,
-	0x0a, 0x9a, 0xa2, 0x63, 0x85, 0xe1, 0x93, 0x8a, 0xf2, 0xc0, 0x4c, 0xf0, 0x7b, 0xbd, 0xc3, 0xa6,
-	0x2f, 0x50, 0x25, 0x68, 0x3e, 0x27, 0xed, 0xcb, 0x3c, 0x87, 0x07, 0x49, 0xac, 0xd0, 0xe3, 0xf4,
-	0x97, 0x04, 0xa3, 0x8f, 0x60, 0x93, 0xb2, 0x3d, 0x34, 0x13, 0xec, 0xe9, 0xb2, 0x82, 0x0a, 0xe8,
-	0x05, 0x7c, 0xb8, 0x95, 0x5c, 0x8d, 0x7e, 0x84, 0x78, 0x6c, 0x45, 0xce, 0x8b, 0xb1, 0xae, 0xca,
-	0x22, 0x78, 0x94, 0xd8, 0x7f, 0x8d, 0x8a, 0x47, 0x30, 0x8a, 0xa8, 0x25, 0x86, 0xc7, 0x6a, 0x7a,
-	0x9c, 0x60, 0x57, 0x24, 0x43, 0x78, 0x9c, 0x6c, 0xa9, 0x07, 0xb8, 0xe4, 0x94, 0x25, 0x11, 0x3c,
-	0x31, 0x13, 0xec, 0xef, 0xea, 0x9f, 0x16, 0x89, 0x0d, 0xbf, 0x4f, 0x12, 0x4f, 0xa8, 0x40, 0xe8,
-	0x2a, 0x0e, 0x18, 0xc1, 0x53, 0xc4, 0x10, 0x2b, 0xcc, 0x98, 0xa5, 0xc4, 0x5d, 0x9f, 0x26, 0xdc,
-	0xd8, 0xaa, 0x43, 0x24, 0xa1, 0x1c, 0xfb, 0x72, 0xe6, 0x1d, 0x62, 0xaa, 0x16, 0x41, 0x4e, 0x5c,
-	0xaf, 0xdf, 0x77, 0x89, 0x7e, 0x2d, 0xce, 0x6e, 0x71, 0xc6, 0x92, 0x65, 0x38, 0x6d, 0xb6, 0x41,
-	0xc6, 0xad, 0x37, 0x01, 0x04, 0x4e, 0x9f, 0xf5, 0x8e, 0x6f, 0xc9, 0x7c, 0x45, 0x18, 0x5f, 0x48,
-	0x65, 0x0e, 0x67, 0xcc, 0x7a, 0x1b, 0xa3, 0xf4, 0x8c, 0x0f, 0x32, 0x9e, 0x8f, 0xac, 0x52, 0xce,
-	0x9c, 0x0d, 0x3e, 0xd3, 0x3b, 0x64, 0x3a, 0xaa, 0x9e, 0x47, 0x9e, 0x35, 0x65, 0x56, 0x6f, 0x3a,
-	0x22, 0x89, 0xe0, 0xec, 0xd9, 0x86, 0x8e, 0x3c, 0x2a, 0x12, 0x3c, 0x82, 0x73, 0x66, 0xfd, 0x8e,
-	0xb5, 0xad, 0x8b, 0x79, 0xff, 0xb9, 0xb3, 0xde, 0x32, 0x26, 0x14, 0x19, 0x46, 0x06, 0x70, 0xc5,
-	0x34, 0x80, 0xdb, 0x8a, 0xed, 0x84, 0x91, 0xc3, 0x0b, 0x5d, 0x28, 0x59, 0x58, 0x91, 0xe8, 0x53,
-	0x89, 0x47, 0x70, 0xf5, 0xac, 0x8f, 0x06, 0x13, 0x08, 0x9d, 0x71, 0x44, 0x19, 0x5b, 0xd5, 0x0b,
-	0xe5, 0x70, 0xcd, 0xac, 0xf7, 0xa9, 0x09, 0x58, 0x55, 0xb0, 0x58, 0x05, 0x5d, 0x3b, 0xeb, 0x2d,
-	0x28, 0x1c, 0x31, 0x55, 0x19, 0x6a, 0xce, 0x93, 0xa8, 0xcc, 0x79, 0x3c, 0x80, 0xdb, 0xea, 0x90,
-	0x71, 0x3e, 0xd4, 0x07, 0x88, 0xe2, 0x89, 0xb2, 0xdb, 0xf2, 0x67, 0x44, 0xcd, 0x15, 0x44, 0x24,
-	0x8a, 0x67, 0xb4, 0xec, 0xfc, 0xce, 0xac, 0x37, 0x34, 0x44, 0xad, 0xca, 0x2c, 0x8e, 0x68, 0x3e,
-	0x64, 0x70, 0x7f, 0x5e, 0x9f, 0xcd, 0xe0, 0x14, 0xcb, 0x86, 0x5c, 0x95, 0x72, 0x30, 0xd0, 0xf5,
-	0x18, 0xfc, 0x05, 0xd1, 0x04, 0x41, 0x11, 0xeb, 0xc7, 0xc9, 0xfe, 0x92, 0xec, 0x1c, 0xcb, 0x78,
-	0xc2, 0xca, 0x64, 0x4b, 0x19, 0x7e, 0xf1, 0x88, 0x63, 0x8e, 0xd9, 0x38, 0xee, 0x0b, 0x1b, 0x65,
-	0xb8, 0xe5, 0xc4, 0xe3, 0xb6, 0xc1, 0xed, 0x64, 0x63, 0x0c, 0x68, 0xb4, 0xb1, 0x75, 0x4b, 0x7c,
-	0xf4, 0x09, 0xdb, 0x4a, 0x7e, 0xec, 0xf1, 0xdb, 0x4e, 0x82, 0x3b, 0x66, 0x49, 0xf0, 0x70, 0xb3,
-	0xf4, 0x4f, 0xb2, 0xc3, 0xef, 0x6c, 0x0c, 0xaf, 0x85, 0xc6, 0xbb, 0x88, 0xf1, 0xdb, 0xe1, 0xc6,
-	0x73, 0x72, 0xce, 0x72, 0x99, 0xc0, 0xdd, 0x74, 0x02, 0xd3, 0x68, 0x19, 0x71, 0x16, 0xf9, 0x6d,
-	0xff, 0xa7, 0xd9, 0xe0, 0xb7, 0x7b, 0x9f, 0x6a, 0x02, 0xb0, 0xf3, 0xd0, 0x2c, 0x7a, 0xfe, 0x99,
-	0xd8, 0x91, 0x5e, 0x6e, 0xcc, 0x4d, 0xc3, 0x28, 0xe6, 0x89, 0x4d, 0x5c, 0xef, 0x23, 0x7b, 0x61,
-	0x11, 0xa1, 0x4c, 0xf2, 0xc2, 0xfc, 0xaf, 0x73, 0x03, 0x83, 0xbb, 0x9f, 0x6c, 0xbe, 0xc5, 0xd5,
-	0x4d, 0xe8, 0x01, 0x22, 0x1c, 0x5d, 0xcc, 0x19, 0xf5, 0x83, 0x44, 0x77, 0x63, 0x86, 0x2e, 0xaf,
-	0xf3, 0xcd, 0x08, 0x3f, 0xc0, 0xc3, 0x64, 0xb4, 0xa7, 0x62, 0xce, 0x81, 0xf4, 0x47, 0x66, 0x7d,
-	0x06, 0xef, 0xe8, 0x11, 0x16, 0xb8, 0x22, 0x86, 0x47, 0x67, 0x83, 0xcd, 0xae, 0x93, 0xe1, 0x88,
-	0x48, 0x78, 0x8c, 0x1a, 0x87, 0x1c, 0xa7, 0x5c, 0x19, 0xfd, 0xd4, 0x42, 0xda, 0x73, 0x44, 0xef,
-	0x14, 0x56, 0xe5, 0xb1, 0xcf, 0x13, 0x3f, 0xc2, 0x52, 0x33, 0xe3, 0x61, 0x56, 0x08, 0xd5, 0x50,
-	0xc2, 0x7b, 0xc4, 0x66, 0xf3, 0x91, 0xac, 0x2a, 0x27, 0x8b, 0xb3, 0xeb, 0x9d, 0x39, 0xe7, 0x8d,
-	0x11, 0x51, 0x13, 0x69, 0x6e, 0xc2, 0x4d, 0xcc, 0x9a, 0x23, 0x69, 0xbc, 0x06, 0xf9, 0x28, 0x6b,
-	0xdb, 0x38, 0x70, 0xf6, 0x1c, 0x29, 0x6b, 0x34, 0x44, 0x7b, 0x7f, 0xbf, 0x58, 0xd7, 0xc7, 0x1d,
-	0x9c, 0x33, 0x47, 0x2a, 0x30, 0x37, 0xde, 0x24, 0x9f, 0x9a, 0x1b, 0x38, 0xb7, 0x3e, 0xbf, 0x0f,
-	0x9e, 0x45, 0xa2, 0xb0, 0x4e, 0x3f, 0x6f, 0x8e, 0xd4, 0x1a, 0x06, 0x32, 0x96, 0xd8, 0xfd, 0xcb,
-	0x95, 0xe9, 0x81, 0x9e, 0x3f, 0xe7, 0x37, 0x75, 0x62, 0x12, 0xe4, 0xef, 0x82, 0x39, 0x52, 0x1f,
-	0x10, 0x6d, 0x54, 0x8a, 0xb8, 0x90, 0x2e, 0x20, 0x43, 0x9d, 0x14, 0x0d, 0x58, 0x92, 0xc7, 0x22,
-	0x77, 0x21, 0xe5, 0x62, 0x3a, 0x85, 0x41, 0xe4, 0x45, 0x9f, 0x00, 0x2e, 0xa1, 0x62, 0x18, 0x80,
-	0x3e, 0x1d, 0xb5, 0x53, 0x15, 0xfd, 0x52, 0x03, 0xe1, 0xd2, 0x26, 0xc4, 0xf9, 0x9d, 0x83, 0x5c,
-	0x36, 0xe7, 0x0d, 0x85, 0x40, 0xf4, 0xb1, 0x50, 0x65, 0x5a, 0x22, 0x82, 0xcb, 0xe7, 0xfc, 0x61,
-	0x3c, 0xb9, 0x98, 0x66, 0xdb, 0x4c, 0x75, 0x45, 0x93, 0x63, 0x91, 0x94, 0xfd, 0x98, 0x85, 0xcb,
-	0x06, 0x70, 0xe5, 0x9c, 0x3f, 0x21, 0x2d, 0xc0, 0x51, 0xb5, 0x40, 0x57, 0x35, 0xc9, 0x39, 0x67,
-	0x59, 0x38, 0x32, 0x61, 0xf8, 0xea, 0x39, 0xea, 0x46, 0x69, 0xed, 0x98, 0xff, 0xce, 0x1c, 0x49,
-	0xd1, 0x74, 0x80, 0xd0, 0x09, 0x57, 0x2e, 0x86, 0x49, 0xa1, 0xb7, 0x26, 0xe5, 0x4c, 0x71, 0x16,
-	0xc1, 0xf7, 0xe6, 0x7c, 0x96, 0x53, 0xe4, 0x1c, 0x8d, 0xb3, 0xbd, 0x1c, 0x7d, 0x80, 0x30, 0x33,
-	0xda, 0x38, 0xe2, 0xc8, 0x72, 0xb0, 0xf5, 0x88, 0x63, 0x37, 0x4a, 0xfe, 0xe5, 0xe3, 0x8f, 0xde,
-	0xba, 0x71, 0x24, 0x3c, 0x48, 0x0c, 0x19, 0x03, 0xd1, 0x20, 0x33, 0x6d, 0x6a, 0xdb, 0x8a, 0x41,
-	0x43, 0x7b, 0x68, 0xce, 0xd7, 0x76, 0x61, 0x2c, 0xc6, 0x7d, 0x91, 0x0c, 0x4b, 0x25, 0x57, 0x79,
-	0xd6, 0xac, 0x3f, 0x5e, 0x98, 0xf3, 0x8e, 0x56, 0xc3, 0x62, 0xca, 0x58, 0x64, 0xe6, 0x13, 0xbc,
-	0x48, 0x36, 0xac, 0x06, 0x94, 0x85, 0x3e, 0x1d, 0x8c, 0x05, 0xfe, 0x74, 0x3a, 0x6c, 0x90, 0x09,
-	0x7d, 0xb6, 0xb1, 0x6c, 0x98, 0xc3, 0x4b, 0x44, 0x8e, 0x1a, 0x4c, 0xe4, 0xa5, 0x0d, 0xbe, 0x2f,
-	0xcf, 0xf9, 0xba, 0x73, 0x58, 0x88, 0x38, 0x22, 0x0d, 0x86, 0xd7, 0x88, 0xb3, 0x19, 0x1a, 0x8b,
-	0x75, 0x70, 0x5b, 0xb7, 0xf4, 0xd7, 0x5b, 0xc7, 0x1a, 0x99, 0xdf, 0x68, 0x8c, 0xcd, 0xf8, 0xa0,
-	0xc8, 0x79, 0x54, 0xb2, 0x34, 0x8d, 0xd7, 0xe1, 0x4d, 0x62, 0x50, 0x96, 0x4e, 0x8e, 0x4a, 0xb9,
-	0x0a, 0x6f, 0x11, 0x2f, 0xb2, 0x8b, 0xeb, 0x81, 0xc4, 0x91, 0xdf, 0x26, 0x81, 0xc2, 0x2d, 0xaf,
-	0x83, 0x2f, 0xce, 0xff, 0x4e, 0x83, 0x18, 0xb2, 0x44, 0xd9, 0xc5, 0xdf, 0x25, 0x0a, 0x34, 0xc4,
-	0x34, 0xe3, 0xb9, 0x88, 0xf4, 0xa1, 0x8f, 0xb0, 0x98, 0xb3, 0x15, 0x0e, 0xef, 0x11, 0x3b, 0xa9,
-	0x16, 0x60, 0x85, 0x1a, 0xc9, 0x4c, 0x57, 0x0e, 0xef, 0x37, 0x44, 0x88, 0x44, 0xde, 0x67, 0x49,
-	0xe4, 0x4e, 0xaa, 0x5f, 0x13, 0x17, 0x35, 0x80, 0x31, 0x1f, 0xf7, 0xd1, 0x42, 0x9c, 0x0c, 0x1f,
-	0xb4, 0x4b, 0x89, 0xa1, 0xc0, 0x34, 0x6b, 0x4f, 0xee, 0xd4, 0x27, 0xf1, 0x21, 0xcf, 0x4c, 0x07,
-	0xa7, 0x74, 0xfc, 0x79, 0x67, 0x20, 0x7d, 0xfc, 0xb7, 0x1e, 0xc7, 0x4f, 0xed, 0xd4, 0x19, 0x46,
-	0x39, 0x9d, 0x7e, 0x22, 0x38, 0xad, 0xd3, 0x14, 0x18, 0x43, 0x0a, 0x7e, 0x80, 0xd3, 0x3b, 0xbe,
-	0xf4, 0x35, 0xe4, 0x8a, 0x74, 0x46, 0x67, 0xea, 0x6e, 0xa9, 0x04, 0x25, 0x3d, 0xb3, 0x53, 0x37,
-	0x88, 0x7c, 0x3d, 0xd7, 0x0c, 0x5a, 0x43, 0x3c, 0xab, 0x21, 0x67, 0xc3, 0x8f, 0xce, 0x6e, 0x2c,
-	0xa2, 0xbd, 0xc2, 0x2c, 0x64, 0x1b, 0x52, 0x9d, 0xa6, 0x49, 0x28, 0x1d, 0xe6, 0x62, 0x9e, 0xc0,
-	0xb9, 0x0d, 0xf6, 0x5d, 0xde, 0x00, 0xe7, 0x35, 0x34, 0xe3, 0x0d, 0x62, 0x59, 0x84, 0xcb, 0x70,
-	0x7e, 0x53, 0xbe, 0x6c, 0x98, 0xbb, 0x34, 0x80, 0x29, 0x0e, 0x17, 0x74, 0xbc, 0xb7, 0x19, 0x04,
-	0xc6, 0x57, 0x3f, 0x8f, 0x56, 0xc2, 0x85, 0x1d, 0x1f, 0xc9, 0xea, 0xdb, 0xed, 0xe5, 0xbc, 0xa8,
-	0xc1, 0x0d, 0x32, 0x9a, 0xf3, 0x24, 0x17, 0xd8, 0xc8, 0xba, 0xb8, 0x29, 0xa6, 0xbf, 0x48, 0xbb,
-	0xa4, 0xe3, 0x4b, 0xdd, 0x94, 0xd3, 0x79, 0x2f, 0xed, 0x78, 0x7f, 0xd5, 0x14, 0x9a, 0x4a, 0x5e,
-	0x46, 0xa6, 0xd4, 0x34, 0x73, 0x9f, 0x67, 0x0d, 0xe7, 0xf2, 0x8e, 0xf7, 0x17, 0x4d, 0x74, 0xfd,
-	0xf4, 0x5a, 0xc6, 0x71, 0x45, 0xc7, 0x47, 0x71, 0x0a, 0x33, 0x2b, 0x5c, 0x59, 0x5b, 0xc1, 0x51,
-	0xd5, 0x7a, 0xca, 0xe1, 0x2a, 0x22, 0x32, 0x2e, 0xcf, 0x92, 0xc2, 0x1d, 0x57, 0x38, 0xf7, 0xd5,
-	0xb5, 0xb9, 0x2d, 0xc0, 0x16, 0x60, 0xd7, 0xd4, 0xe6, 0xc6, 0x2e, 0x59, 0x61, 0x1a, 0xd5, 0x70,
-	0xed, 0x14, 0x22, 0x36, 0xa6, 0xaf, 0xeb, 0x04, 0x8b, 0xee, 0x7a, 0x4c, 0x13, 0x6d, 0xa7, 0xff,
-	0x7a, 0x62, 0xad, 0xc8, 0x6c, 0x9e, 0xeb, 0x3d, 0xb2, 0xa7, 0x4d, 0x04, 0x37, 0xd4, 0x85, 0x31,
-	0x79, 0xeb, 0xb8, 0x88, 0x95, 0x80, 0x1b, 0x6b, 0x83, 0xab, 0x0b, 0x31, 0x3b, 0xf8, 0x26, 0xe2,
-	0x66, 0x44, 0x16, 0x16, 0xad, 0x60, 0x53, 0x6f, 0x3b, 0x31, 0x12, 0x4d, 0x3e, 0x5c, 0xac, 0x17,
-	0xdc, 0x34, 0xc8, 0x4c, 0xce, 0x8c, 0xa5, 0xfa, 0xcd, 0x1d, 0x7f, 0x00, 0xb5, 0xa3, 0x7c, 0x7b,
-	0xe0, 0x16, 0xe2, 0x5b, 0x35, 0xac, 0x4b, 0x64, 0xbf, 0x52, 0xdb, 0x62, 0x02, 0xd1, 0x1f, 0x1d,
-	0xec, 0x7b, 0xc4, 0x84, 0xb2, 0x22, 0xc1, 0x80, 0x1d, 0x9b, 0xd3, 0x15, 0x6e, 0xad, 0xd3, 0xd0,
-	0x3c, 0x4c, 0xaa, 0xfd, 0x75, 0xe2, 0x7b, 0x48, 0x63, 0x98, 0x05, 0x0f, 0xb9, 0x82, 0x6f, 0x10,
-	0x7b, 0x45, 0x52, 0x22, 0xcb, 0x02, 0xfb, 0x94, 0xdf, 0xec, 0xf8, 0x0c, 0xd8, 0x51, 0x30, 0x73,
-	0xfd, 0x16, 0x51, 0x30, 0x12, 0x46, 0x62, 0x38, 0xd2, 0x05, 0x99, 0x91, 0x1c, 0xbe, 0xdd, 0x09,
-	0x0e, 0xe9, 0x1d, 0x40, 0xe8, 0x7c, 0x2d, 0x8d, 0x65, 0xc6, 0x4b, 0xd3, 0xfc, 0xea, 0x8b, 0xc4,
-	0x5d, 0x98, 0xc1, 0x6d, 0x1d, 0x9f, 0x35, 0xb8, 0x88, 0x91, 0x8d, 0x59, 0x5c, 0x75, 0x36, 0x94,
-	0xed, 0x94, 0xc0, 0xbf, 0x74, 0xea, 0x87, 0x86, 0x6d, 0xa1, 0xf8, 0x0a, 0x45, 0x9f, 0x5b, 0xff,
-	0xda, 0xf1, 0xd9, 0x94, 0x75, 0x71, 0x63, 0x1b, 0x24, 0x10, 0x7f, 0xbf, 0x11, 0x2b, 0xaa, 0xd4,
-	0x0d, 0x67, 0xc4, 0x53, 0xfe, 0x07, 0x8d, 0x28, 0x50, 0x15, 0xf6, 0xc6, 0xd1, 0xef, 0xe9, 0x04,
-	0xbf, 0xe5, 0xae, 0x8a, 0x0c, 0x80, 0xc7, 0x42, 0x71, 0x07, 0x2b, 0xf9, 0x9a, 0xca, 0x98, 0xf3,
-	0x90, 0x7b, 0x1b, 0xdc, 0x57, 0xb3, 0xe5, 0x8a, 0x65, 0xca, 0xdc, 0xf6, 0xc2, 0x7d, 0x0d, 0xce,
-	0x6a, 0xfd, 0x1b, 0x1d, 0xc5, 0xee, 0xef, 0xd4, 0xcf, 0xfd, 0xdc, 0x15, 0x46, 0xf0, 0x40, 0x83,
-	0x6b, 0x13, 0x9f, 0xb1, 0x54, 0x96, 0x85, 0x82, 0x07, 0x1b, 0x87, 0x15, 0x5e, 0x9a, 0xda, 0x02,
-	0xd8, 0x3b, 0xfc, 0x43, 0x8d, 0xf3, 0x00, 0x39, 0xb1, 0xe5, 0x13, 0x6a, 0xe8, 0xe1, 0xc6, 0x91,
-	0x82, 0x10, 0x7b, 0x6f, 0x1d, 0xc1, 0x23, 0xed, 0x4b, 0xd9, 0x43, 0x58, 0x97, 0x15, 0x78, 0x10,
-	0xc3, 0xa3, 0x84, 0x67, 0xbe, 0x96, 0x72, 0xbb, 0x9b, 0x95, 0xd0, 0xf0, 0x0c, 0xd1, 0x4a, 0x1b,
-	0x40, 0xe7, 0xcb, 0xf0, 0x2c, 0x59, 0xad, 0x15, 0x94, 0x48, 0x2c, 0x61, 0x7e, 0xd8, 0x3e, 0x19,
-	0xee, 0x84, 0x56, 0x23, 0xf6, 0x0d, 0x7f, 0x44, 0xbc, 0x9b, 0x4e, 0x56, 0x54, 0xcd, 0x15, 0xac,
-	0xd8, 0xb0, 0x7f, 0xf3, 0x63, 0x62, 0x07, 0x04, 0x6b, 0x2f, 0x30, 0xd1, 0xae, 0xbc, 0x28, 0x3f,
-	0x69, 0x97, 0xd5, 0xcf, 0xf6, 0x1c, 0x89, 0x3e, 0x04, 0xd0, 0x2f, 0x06, 0x03, 0x62, 0x7b, 0xcf,
-	0xb7, 0x4f, 0xe3, 0xef, 0x91, 0x5f, 0x20, 0x07, 0x66, 0x13, 0xa0, 0xf5, 0xf5, 0x62, 0x3b, 0xdb,
-	0x54, 0xbc, 0xc4, 0x5d, 0x7f, 0xc2, 0x4f, 0xa7, 0xe8, 0x83, 0xc5, 0xf1, 0x20, 0x93, 0x23, 0x1e,
-	0xeb, 0x70, 0x6e, 0x73, 0x91, 0x97, 0x3a, 0x3e, 0xdd, 0xae, 0x63, 0x65, 0x86, 0x58, 0x13, 0x16,
-	0x5f, 0x26, 0x61, 0x62, 0xfa, 0xa4, 0x9a, 0x13, 0xf8, 0x19, 0x71, 0x9f, 0x09, 0xb5, 0xc5, 0xb6,
-	0x04, 0xc5, 0xbc, 0x1b, 0xfe, 0xad, 0x5d, 0x79, 0x15, 0xcc, 0x30, 0xf8, 0xef, 0xed, 0x16, 0x80,
-	0xa8, 0x2a, 0x17, 0xfb, 0x8f, 0x76, 0x05, 0x12, 0xf6, 0xff, 0xb3, 0x9d, 0xfd, 0xb6, 0x12, 0xef,
-	0xbf, 0x3a, 0xc1, 0xa7, 0x7b, 0x07, 0xb7, 0x4f, 0xd6, 0xd4, 0xcb, 0x7f, 0xb7, 0x2b, 0xbb, 0x81,
-	0xd6, 0xbb, 0xf8, 0x3f, 0xed, 0x8a, 0xa9, 0xcc, 0x25, 0xe7, 0x31, 0x0f, 0x15, 0xfc, 0x2f, 0xf1,
-	0x66, 0x02, 0xc3, 0x8b, 0x27, 0x1b, 0xb4, 0x7f, 0xde, 0x6e, 0x52, 0x7d, 0x8e, 0x0b, 0xf3, 0x08,
-	0x7e, 0xd1, 0xee, 0x60, 0xc8, 0xca, 0x38, 0x1f, 0xda, 0x07, 0x1b, 0x11, 0xbc, 0xd2, 0xce, 0x52,
-	0xca, 0x7c, 0xf8, 0xd0, 0x9c, 0xbf, 0x4a, 0x22, 0xbf, 0xad, 0x2a, 0x85, 0xed, 0x6c, 0x69, 0x37,
-	0x8b, 0xd8, 0xba, 0x8b, 0x9d, 0x6f, 0x90, 0xad, 0x20, 0x48, 0x5d, 0x24, 0x5b, 0xc4, 0x9b, 0x24,
-	0x12, 0x11, 0x04, 0xbe, 0xd8, 0xd1, 0x47, 0xe3, 0x5b, 0xe4, 0xc4, 0x27, 0xf4, 0xbe, 0xc4, 0x2b,
-	0x1d, 0x78, 0xbb, 0xd3, 0x28, 0x70, 0x1d, 0x99, 0x30, 0xfc, 0x0e, 0x39, 0x43, 0x27, 0x19, 0x86,
-	0x77, 0xdb, 0x39, 0xac, 0xdc, 0x51, 0xc1, 0x7b, 0xed, 0xd2, 0x56, 0x45, 0xad, 0x4f, 0x16, 0xde,
-	0x27, 0x66, 0xd5, 0x86, 0x24, 0x93, 0xfe, 0x9a, 0xec, 0x08, 0x81, 0xc6, 0x62, 0x79, 0xb2, 0xe9,
-	0xf9, 0x41, 0xbb, 0x7a, 0xf0, 0x46, 0x49, 0x2c, 0x73, 0x38, 0x79, 0xbe, 0x75, 0xc9, 0xd5, 0x11,
-	0xe7, 0xf5, 0x26, 0xf9, 0x29, 0xf3, 0xe4, 0xc6, 0xa8, 0x0e, 0xad, 0x1e, 0xa1, 0xc1, 0xa9, 0xf3,
-	0xad, 0x0a, 0x31, 0x30, 0xcc, 0x21, 0x4e, 0xdb, 0xf1, 0x9a, 0x5a, 0x46, 0xf3, 0x7a, 0x41, 0xc1,
-	0xe9, 0xf3, 0xad, 0xba, 0x33, 0xd0, 0x90, 0x25, 0x68, 0x32, 0xb1, 0xcc, 0x39, 0x9c, 0x31, 0x1f,
-	0x2c, 0xb9, 0xe7, 0x53, 0x29, 0x5b, 0x77, 0x15, 0x18, 0x5c, 0x3e, 0x4f, 0x32, 0x42, 0xb6, 0x5e,
-	0xa6, 0x99, 0x8c, 0x0a, 0x73, 0xd1, 0x34, 0x96, 0x11, 0x87, 0x2b, 0x6a, 0xf4, 0xa1, 0x94, 0xba,
-	0x04, 0xd1, 0xde, 0x3b, 0xc8, 0x38, 0x87, 0x2b, 0xe7, 0x7d, 0x26, 0xa4, 0xe9, 0x55, 0x0f, 0xef,
-	0xaa, 0x79, 0x9f, 0x3c, 0xad, 0x08, 0xda, 0x34, 0xb9, 0x71, 0xde, 0xef, 0x4d, 0x94, 0xb1, 0x55,
-	0x5b, 0x6d, 0x35, 0x8a, 0xaa, 0xbf, 0x9a, 0xf7, 0xb6, 0x47, 0x70, 0xb5, 0x26, 0xef, 0x5f, 0x13,
-	0x7d, 0x12, 0x94, 0xfe, 0xd3, 0x1e, 0xa2, 0x7f, 0x33, 0xef, 0x83, 0x1a, 0x5d, 0x4f, 0xdb, 0x4a,
-	0xf5, 0x42, 0xef, 0x6f, 0xe7, 0x7d, 0x72, 0x44, 0x40, 0x26, 0x49, 0xb6, 0x98, 0xdb, 0xe7, 0xbd,
-	0xaf, 0x44, 0x13, 0x10, 0x24, 0xdf, 0x41, 0x54, 0x15, 0x4d, 0x2e, 0x83, 0xf4, 0x3b, 0xa9, 0x3c,
-	0x15, 0x1d, 0x73, 0x7e, 0xfb, 0xac, 0x45, 0xa3, 0xee, 0x9a, 0x27, 0x57, 0xf3, 0x53, 0x9a, 0x95,
-	0x65, 0x9e, 0x66, 0x42, 0x71, 0xf8, 0x3e, 0xb1, 0x94, 0xa9, 0x58, 0x13, 0xd9, 0x7f, 0xf0, 0x9b,
-	0x4c, 0x1b, 0x66, 0x85, 0xc8, 0x39, 0xdc, 0x33, 0xef, 0xdb, 0xde, 0xd3, 0x59, 0xd0, 0x7c, 0xf7,
-	0xa5, 0x5c, 0x86, 0x7b, 0xe7, 0x7d, 0x08, 0x9f, 0x0a, 0x4f, 0xb9, 0x4a, 0x05, 0x0f, 0x39, 0xdc,
-	0xf7, 0x9b, 0xa0, 0x8d, 0x52, 0xd6, 0x52, 0xb8, 0x7f, 0xde, 0x87, 0xde, 0x88, 0x49, 0x74, 0xf4,
-	0xc3, 0x3e, 0xfb, 0x59, 0x93, 0x49, 0x89, 0x64, 0x08, 0x3f, 0xa7, 0xdb, 0x4f, 0x00, 0x69, 0xc6,
-	0x15, 0x0f, 0x75, 0x4d, 0xf3, 0x8b, 0x79, 0x9f, 0x13, 0x52, 0x84, 0x0e, 0x5c, 0xaf, 0x10, 0x05,
-	0x52, 0x9a, 0x39, 0xde, 0x6d, 0x76, 0x64, 0xac, 0xe8, 0xd5, 0x79, 0x7f, 0x4e, 0x4c, 0x42, 0xdd,
-	0x6d, 0x3d, 0xfc, 0x72, 0x0a, 0xb3, 0x95, 0x4f, 0xfc, 0x8a, 0x84, 0x08, 0x0a, 0xa8, 0x99, 0xf4,
-	0x6b, 0x13, 0x86, 0xe2, 0x61, 0x39, 0x8f, 0x07, 0x5e, 0xf2, 0xd7, 0xa7, 0xa0, 0x94, 0xb0, 0xa7,
-	0x25, 0xf6, 0x0f, 0xde, 0xa0, 0x76, 0x5d, 0x43, 0xb9, 0xd2, 0xe9, 0x4d, 0xea, 0x90, 0x04, 0x63,
-	0xc2, 0x48, 0x95, 0x88, 0xc3, 0x5b, 0x3b, 0xc4, 0xf9, 0x10, 0xf7, 0x76, 0x43, 0x55, 0xc3, 0xc4,
-	0xe3, 0x50, 0x13, 0xef, 0x10, 0x73, 0x6c, 0x42, 0x32, 0xbe, 0x9a, 0xb1, 0x2a, 0xc8, 0xbd, 0xdb,
-	0xd8, 0x24, 0x8a, 0x9d, 0x88, 0x72, 0xef, 0x35, 0xa6, 0xa5, 0x1c, 0x4e, 0xc6, 0xeb, 0xf7, 0x89,
-	0x34, 0x59, 0x91, 0x8f, 0x7c, 0x03, 0xd7, 0x9e, 0x23, 0x03, 0x91, 0x88, 0x7c, 0x04, 0x57, 0x76,
-	0x49, 0x73, 0x46, 0x0c, 0x54, 0xe9, 0x1f, 0xd4, 0x6e, 0xef, 0xfa, 0xd2, 0xdf, 0x93, 0x64, 0xa1,
-	0xb0, 0xef, 0x72, 0x73, 0x97, 0x14, 0x01, 0x15, 0xd5, 0xc7, 0xb7, 0x5b, 0xba, 0xa4, 0x57, 0x52,
-	0xd1, 0x07, 0x32, 0xeb, 0xeb, 0xaa, 0xb7, 0x4b, 0x2a, 0x99, 0x8a, 0x98, 0xf1, 0x22, 0xe7, 0xf0,
-	0xd5, 0x2e, 0x69, 0x86, 0x51, 0x8e, 0xcc, 0x25, 0xc1, 0xd7, 0x08, 0x57, 0x87, 0x17, 0x3c, 0x27,
-	0xe9, 0x2d, 0x8f, 0xe0, 0xd6, 0xae, 0x37, 0x08, 0x7b, 0xb7, 0x92, 0xc6, 0x2c, 0xe4, 0xf8, 0xc6,
-	0x8a, 0x8d, 0xf5, 0xff, 0xf0, 0xad, 0x6e, 0xe3, 0xfe, 0xa5, 0xc2, 0xb8, 0x47, 0x1c, 0x78, 0x85,
-	0xfb, 0xed, 0xae, 0xd7, 0x77, 0x1d, 0x58, 0xef, 0xf1, 0xdd, 0x46, 0x26, 0xc5, 0x98, 0x64, 0xf3,
-	0x69, 0x72, 0xa9, 0x6d, 0x32, 0xf8, 0xc7, 0xba, 0xb5, 0x42, 0xcd, 0x22, 0x2a, 0xcb, 0x7f, 0xbc,
-	0x5b, 0xab, 0xf2, 0x5c, 0x66, 0xce, 0x72, 0x78, 0xa2, 0xeb, 0x8d, 0x85, 0xd2, 0x5a, 0x3c, 0xfa,
-	0xc9, 0x6e, 0xad, 0xf0, 0x9c, 0x64, 0xc8, 0x79, 0xc7, 0x53, 0xdd, 0x5a, 0xeb, 0xb1, 0x62, 0x07,
-	0xcd, 0xe3, 0xe9, 0x6e, 0xad, 0x1a, 0xf4, 0xcc, 0x94, 0x19, 0xef, 0xcb, 0x2c, 0x81, 0x67, 0xa6,
-	0x48, 0x3e, 0x51, 0x80, 0x65, 0xe3, 0x3e, 0x3c, 0x3b, 0x65, 0x2e, 0xac, 0xbe, 0x4c, 0x1c, 0xff,
-	0x61, 0xb7, 0x56, 0xc4, 0x57, 0x2d, 0x1c, 0xbd, 0x94, 0xa9, 0x3e, 0x7f, 0x34, 0x65, 0x3d, 0x99,
-	0xf2, 0x8c, 0x29, 0x99, 0x95, 0xca, 0xbe, 0x63, 0xfa, 0xf1, 0x14, 0x0d, 0x88, 0xe3, 0xca, 0xe1,
-	0x89, 0x47, 0x1f, 0x73, 0x64, 0xff, 0x88, 0x6d, 0xdb, 0x8e, 0xd9, 0x80, 0x9f, 0x4c, 0x53, 0xd4,
-	0x89, 0x47, 0x1d, 0x45, 0x6e, 0x6b, 0x9f, 0x9b, 0xaa, 0x7a, 0xdf, 0xa9, 0xb5, 0x4d, 0xac, 0xe7,
-	0xbb, 0xb5, 0xde, 0x86, 0xd3, 0x88, 0xaf, 0x22, 0xad, 0x7a, 0x5f, 0xe8, 0xd6, 0x5a, 0x09, 0x4d,
-	0xa4, 0x9e, 0xbf, 0xcf, 0x87, 0x22, 0x81, 0x17, 0xbb, 0xb5, 0xb2, 0x7a, 0x92, 0x83, 0x7e, 0xb1,
-	0x6e, 0xaf, 0x29, 0xba, 0xfe, 0x0c, 0x6a, 0xd9, 0xf9, 0x8c, 0xe7, 0x45, 0xec, 0x3b, 0x4b, 0x2f,
-	0x75, 0x6b, 0x1d, 0x56, 0x6f, 0x52, 0x36, 0xf0, 0xbf, 0x4c, 0xdc, 0x80, 0x22, 0x6c, 0x0b, 0x22,
-	0xe5, 0xe6, 0x5a, 0x49, 0xe9, 0xa8, 0xf0, 0xb3, 0xfa, 0xda, 0x11, 0x1f, 0xdb, 0xda, 0xc8, 0x94,
-	0xc3, 0x09, 0x79, 0x39, 0x0e, 0xaf, 0x10, 0x5f, 0xf0, 0x6f, 0xe4, 0x4d, 0x75, 0x82, 0x80, 0xd3,
-	0x17, 0xc8, 0x9d, 0x73, 0x0d, 0x60, 0x3a, 0xcf, 0x67, 0x2c, 0x78, 0x6b, 0xa8, 0x23, 0x52, 0x9e,
-	0xe5, 0x32, 0x61, 0x71, 0x38, 0x62, 0x0a, 0xce, 0x5c, 0xf0, 0x86, 0x7e, 0x78, 0xc1, 0x62, 0x1d,
-	0x0a, 0xd1, 0x89, 0x4d, 0xa3, 0xec, 0xc2, 0x05, 0x9f, 0x41, 0x3a, 0xf2, 0x98, 0xad, 0xc1, 0x45,
-	0x2d, 0xdf, 0xeb, 0xb0, 0x7d, 0xf1, 0xc2, 0x64, 0xaf, 0xd1, 0xe4, 0x38, 0xde, 0xcd, 0xaf, 0x6e,
-	0xa5, 0xfb, 0x27, 0x9c, 0xd7, 0x10, 0xc9, 0x2a, 0x3a, 0x92, 0x8a, 0x14, 0xaf, 0x44, 0xe1, 0xda,
-	0x85, 0xf6, 0xbe, 0x2d, 0x12, 0xaf, 0x5b, 0x20, 0xcf, 0x19, 0x74, 0x38, 0xaf, 0xca, 0x04, 0x93,
-	0x89, 0x72, 0xcd, 0x2b, 0xdc, 0xbe, 0x50, 0x7b, 0xc9, 0xe7, 0xcb, 0x0e, 0xa9, 0xca, 0xf1, 0x4a,
-	0x6a, 0xde, 0x05, 0xde, 0x31, 0x75, 0x32, 0x74, 0x4d, 0x93, 0xc0, 0xc0, 0x9d, 0x0b, 0xde, 0x37,
-	0x5b, 0x50, 0x38, 0xd3, 0x5d, 0x53, 0x67, 0xc2, 0x5b, 0x5e, 0x93, 0x04, 0xc3, 0xdd, 0x0b, 0xde,
-	0x48, 0x26, 0x51, 0x22, 0x11, 0xaa, 0xfe, 0xa0, 0xf2, 0xbb, 0x0b, 0xe4, 0x85, 0xc7, 0x44, 0x13,
-	0xb1, 0xea, 0xde, 0xa1, 0xe9, 0x3d, 0x47, 0x34, 0x2a, 0x92, 0x15, 0xa1, 0x98, 0x72, 0x0f, 0x01,
-	0x93, 0x02, 0xef, 0x6b, 0x1e, 0xd9, 0xe4, 0xcd, 0x8d, 0x20, 0x7c, 0x09, 0xf6, 0xe8, 0x26, 0xcf,
-	0xfe, 0x24, 0xa0, 0xcf, 0xb3, 0xca, 0x63, 0x1e, 0x6b, 0x9f, 0x46, 0xe4, 0xee, 0x5e, 0xe8, 0xf1,
-	0x4d, 0x53, 0x39, 0x19, 0x33, 0xfc, 0x15, 0xc1, 0x13, 0x9b, 0xbc, 0x75, 0xd0, 0x85, 0x64, 0x19,
-	0xc6, 0x22, 0x5c, 0x86, 0x27, 0x37, 0xf9, 0x8d, 0x9b, 0xa4, 0xbb, 0x9b, 0x2c, 0x84, 0x3d, 0xb5,
-	0xc9, 0x6f, 0x09, 0x81, 0x21, 0xd1, 0x1c, 0x56, 0xeb, 0xf0, 0x74, 0xfb, 0x54, 0x86, 0x91, 0x92,
-	0x27, 0xb6, 0xa7, 0xf7, 0x4c, 0x3b, 0x8c, 0xfc, 0xf8, 0x07, 0xcd, 0xfe, 0xd9, 0x4d, 0xf5, 0x07,
-	0xc3, 0xf6, 0x59, 0xb9, 0x8c, 0x55, 0x99, 0xe8, 0x0c, 0xff, 0xfc, 0xc5, 0xfa, 0x5b, 0x6d, 0xfb,
-	0x44, 0x7e, 0x80, 0xcf, 0x3f, 0xe0, 0x82, 0xc5, 0xf6, 0x19, 0xd0, 0x75, 0xf0, 0x51, 0xfa, 0x85,
-	0x8b, 0xe4, 0xfa, 0x9c, 0xae, 0xa1, 0x58, 0x46, 0x7e, 0x89, 0x70, 0xd1, 0x8e, 0x26, 0x42, 0x1f,
-	0xbc, 0x16, 0xda, 0x27, 0xaa, 0x25, 0xa4, 0xd7, 0x41, 0x3b, 0xc7, 0x18, 0x79, 0xd9, 0x10, 0xae,
-	0x07, 0x72, 0x87, 0x4e, 0xe8, 0x11, 0xa6, 0x0a, 0x70, 0x03, 0xd4, 0xdf, 0x2d, 0x13, 0x76, 0x35,
-	0xe0, 0xc6, 0x1d, 0x01, 0xc6, 0x22, 0x81, 0x9b, 0x60, 0x8a, 0x52, 0x35, 0x40, 0x7b, 0x32, 0x6c,
-	0x87, 0xfa, 0x2b, 0xec, 0x4a, 0xa9, 0x22, 0x32, 0x90, 0x9b, 0x81, 0x5c, 0x76, 0x67, 0x32, 0xcf,
-	0xcb, 0xf5, 0x82, 0x25, 0xda, 0xad, 0x54, 0xf5, 0x3e, 0xf4, 0xf3, 0x52, 0x24, 0xf0, 0xca, 0x62,
-	0x70, 0x58, 0xef, 0xd3, 0xce, 0x9f, 0xb2, 0x06, 0xb0, 0xcf, 0x1b, 0xcf, 0x06, 0x5f, 0x5d, 0x24,
-	0x0f, 0x79, 0xdb, 0xe6, 0xae, 0x3c, 0xe8, 0x97, 0x8b, 0xfe, 0x94, 0x6c, 0x43, 0x86, 0xac, 0x7a,
-	0xbc, 0xf7, 0xab, 0x0f, 0x81, 0x92, 0x36, 0xcf, 0x6b, 0x8b, 0x24, 0x60, 0xb4, 0x40, 0x95, 0x4c,
-	0xcb, 0x7c, 0x64, 0xe3, 0x27, 0xbc, 0xbe, 0xe8, 0x0b, 0xbc, 0x36, 0xb4, 0x4b, 0x94, 0xed, 0x6d,
-	0xf1, 0x1b, 0x8b, 0x1f, 0xae, 0x38, 0xcc, 0xea, 0xdf, 0xfc, 0x30, 0xd9, 0xfc, 0x1b, 0xca, 0xb7,
-	0x3e, 0x44, 0x61, 0x5a, 0x36, 0xfc, 0x0b, 0xde, 0x5e, 0x24, 0x11, 0x13, 0x91, 0x4a, 0xa6, 0xe6,
-	0xb1, 0x00, 0x51, 0xc0, 0x07, 0x8b, 0x24, 0xf6, 0x4e, 0xa2, 0xaa, 0x6c, 0xf5, 0xe4, 0x25, 0xf2,
-	0xa4, 0x6e, 0x12, 0xe3, 0x22, 0xd7, 0x29, 0x4b, 0x3b, 0x9c, 0x06, 0xa5, 0x3c, 0xb5, 0x81, 0x19,
-	0x33, 0xed, 0x0b, 0x4c, 0x8a, 0x58, 0x24, 0x1c, 0x97, 0x3a, 0x6d, 0x29, 0xd8, 0xd9, 0xfd, 0x0a,
-	0x10, 0x5f, 0x6a, 0x68, 0x33, 0x7f, 0x62, 0xc9, 0xb7, 0x44, 0xf0, 0x4b, 0xac, 0x38, 0x74, 0x64,
-	0x7e, 0x72, 0xc9, 0x77, 0x51, 0x2c, 0xbc, 0x5c, 0xe5, 0x2c, 0x83, 0xa7, 0x96, 0xfc, 0x11, 0xe7,
-	0x08, 0xd5, 0xa8, 0xa7, 0x97, 0x7c, 0x1e, 0xbc, 0x2a, 0x74, 0x05, 0x13, 0xc7, 0xae, 0x67, 0x79,
-	0xe7, 0x66, 0x3f, 0x10, 0x69, 0x9a, 0x7d, 0xfd, 0x47, 0x5f, 0xae, 0xc1, 0x5d, 0x9b, 0x3d, 0x23,
-	0x15, 0x11, 0x1f, 0x8f, 0xdc, 0xdd, 0x46, 0xc9, 0x63, 0xa9, 0xe0, 0xbb, 0x9b, 0xbd, 0x8f, 0x23,
-	0xc5, 0xfe, 0xc0, 0xc4, 0x0e, 0xfc, 0xbb, 0xb6, 0x81, 0x18, 0x37, 0xff, 0x7e, 0xb3, 0x0f, 0x1e,
-	0x7e, 0xca, 0x94, 0x73, 0xfb, 0x30, 0xea, 0x1f, 0x36, 0xfb, 0x72, 0x05, 0xe9, 0xb6, 0xf7, 0x68,
-	0xa8, 0xff, 0xb8, 0xf9, 0xf7, 0xbb, 0xf8, 0x4b, 0xd1, 0xcf, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0x8e, 0x44, 0xbd, 0x0f, 0x4a, 0x3a, 0x00, 0x00,
+	// 4919 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x5b, 0x77, 0x98, 0x24, 0x47,
+	0x75, 0xf7, 0xec, 0xce, 0xcc, 0xc2, 0x10, 0xfc, 0x68, 0xdd, 0xee, 0x29, 0xe7, 0x6c, 0x8c, 0x91,
+	0xf9, 0x3e, 0xff, 0x5f, 0xd3, 0x5d, 0x33, 0x53, 0x6c, 0x4f, 0x57, 0xab, 0xba, 0x7a, 0x77, 0xe7,
+	0xaf, 0xfe, 0x64, 0x6b, 0x05, 0xb2, 0x25, 0x9d, 0x7c, 0x3a, 0x01, 0xf2, 0x5f, 0xca, 0x39, 0xc7,
+	0xd3, 0x29, 0x9d, 0x04, 0x88, 0x24, 0xe3, 0xac, 0x04, 0x4e, 0x7c, 0x36, 0x28, 0xe7, 0x48, 0x50,
+	0x40, 0xc2, 0x26, 0x19, 0x24, 0x50, 0x0e, 0xc8, 0x5f, 0xa5, 0xae, 0x37, 0xdd, 0x3d, 0x27, 0xfe,
+	0xb9, 0xdb, 0x99, 0xf7, 0xab, 0xaa, 0x57, 0xaf, 0x5e, 0xae, 0x9a, 0x1e, 0xac, 0x6f, 0xde, 0xbc,
+	0x69, 0x73, 0xf1, 0x17, 0x9b, 0x8e, 0x5c, 0xff, 0xc4, 0xf1, 0x9b, 0x37, 0x6d, 0xd9, 0x14, 0x7c,
+	0xe8, 0x84, 0xf5, 0xcd, 0x9f, 0x5b, 0xdf, 0xac, 0x3f, 0x1c, 0xfa, 0xed, 0xcf, 0xf7, 0x3e, 0x48,
+	0x15, 0x22, 0xdc, 0x74, 0xe4, 0x7a, 0xf0, 0xe1, 0xde, 0x07, 0xa8, 0x10, 0x5c, 0x14, 0x7c, 0x19,
+	0xfe, 0x20, 0xf8, 0x68, 0xaf, 0x67, 0x3e, 0x0d, 0x08, 0x8b, 0xa1, 0x15, 0x7c, 0xac, 0xf7, 0x11,
+	0xf3, 0x59, 0xd0, 0x98, 0x0f, 0x59, 0x02, 0x73, 0xc1, 0xce, 0xbd, 0x0d, 0xf6, 0x2b, 0x1e, 0xd3,
+	0x22, 0xe1, 0xb2, 0x18, 0xf0, 0x3c, 0x89, 0x60, 0x3e, 0xd8, 0xb5, 0xb7, 0x64, 0x28, 0x63, 0x9e,
+	0xd0, 0x89, 0x26, 0xd1, 0x84, 0xe7, 0xc3, 0x11, 0xb4, 0xd1, 0x28, 0x9a, 0x61, 0x4a, 0x27, 0xd8,
+	0xd0, 0x03, 0x43, 0x49, 0xc8, 0x98, 0x16, 0x74, 0x8d, 0x65, 0x12, 0xba, 0xd5, 0x6f, 0xc7, 0xa9,
+	0x9c, 0xc0, 0x42, 0xb0, 0xb1, 0xb7, 0x93, 0xf9, 0x56, 0x92, 0x6c, 0xb9, 0x10, 0x74, 0x95, 0x88,
+	0x88, 0x46, 0xf0, 0x81, 0x20, 0xe8, 0x7d, 0xd4, 0x10, 0xfa, 0x64, 0x58, 0x0c, 0xf2, 0x38, 0x86,
+	0x0f, 0xfa, 0x25, 0x99, 0xa4, 0x63, 0xc4, 0x68, 0x2f, 0x38, 0xa4, 0x77, 0x40, 0xd3, 0x16, 0x8a,
+	0x84, 0xd2, 0xa8, 0x20, 0xa1, 0x64, 0x2b, 0xb4, 0x08, 0x79, 0x44, 0xe1, 0x43, 0xc1, 0x5e, 0xbd,
+	0xdd, 0x10, 0xd4, 0xd0, 0x14, 0xa9, 0xd0, 0xdf, 0xc2, 0x87, 0x83, 0x3d, 0x7b, 0xbb, 0x36, 0x03,
+	0xf2, 0x8c, 0x46, 0xf0, 0x91, 0x60, 0xdf, 0xde, 0x9e, 0x88, 0xae, 0xf9, 0xce, 0x42, 0x2e, 0xa8,
+	0xe7, 0xfe, 0x0f, 0x83, 0xfd, 0x7a, 0x7b, 0x35, 0x63, 0x3c, 0xd3, 0x10, 0xec, 0xdf, 0xdb, 0x7b,
+	0x36, 0xc8, 0x4a, 0xf3, 0x63, 0x15, 0x7e, 0x63, 0xba, 0x42, 0x63, 0x0c, 0x08, 0xbc, 0x60, 0x35,
+	0xa0, 0x4f, 0x12, 0x1a, 0xc1, 0x4e, 0xc1, 0x52, 0x2f, 0x40, 0xdf, 0xb2, 0x64, 0x85, 0xc4, 0x2c,
+	0x82, 0x0d, 0xc1, 0x62, 0xef, 0x63, 0x56, 0x1f, 0xd8, 0x70, 0x24, 0x8b, 0x70, 0x44, 0xc3, 0x65,
+	0x58, 0xf4, 0xab, 0xf4, 0x89, 0x94, 0xb1, 0xda, 0x4b, 0xc8, 0x45, 0x54, 0x8e, 0x5b, 0x0a, 0x76,
+	0xef, 0xed, 0xdc, 0x04, 0xc8, 0xc8, 0x0a, 0x85, 0x8d, 0x7e, 0xb5, 0xa1, 0x3a, 0xdc, 0x15, 0x2a,
+	0x32, 0xc6, 0x13, 0xd8, 0x19, 0x29, 0xc9, 0xb8, 0x8f, 0xb9, 0xde, 0xc5, 0x1f, 0xbc, 0x3a, 0x5f,
+	0x7d, 0x9e, 0x29, 0x8b, 0x29, 0xec, 0xea, 0xc5, 0x1f, 0x8e, 0x48, 0x1c, 0xd3, 0x64, 0x48, 0x0b,
+	0xc9, 0xc6, 0xb4, 0x88, 0xd9, 0x98, 0x49, 0xd8, 0xcd, 0x2f, 0x95, 0x51, 0xb1, 0x42, 0x85, 0x3d,
+	0xb6, 0xdd, 0xbd, 0xae, 0x66, 0xd1, 0x72, 0xa1, 0x55, 0x5b, 0xab, 0x3c, 0x8d, 0x60, 0x8f, 0x26,
+	0x1a, 0x5d, 0x4b, 0x99, 0xa0, 0xb0, 0x67, 0xb0, 0x4b, 0x6f, 0x71, 0x6a, 0xbe, 0x31, 0x61, 0x89,
+	0x24, 0x2c, 0x81, 0xbd, 0x82, 0xdd, 0x7a, 0x1b, 0xa7, 0x48, 0xcb, 0x2c, 0x5c, 0x56, 0x12, 0x23,
+	0x12, 0xf6, 0x0e, 0xf6, 0xe9, 0xed, 0x31, 0x45, 0xcc, 0x33, 0x6a, 0x17, 0xb4, 0xac, 0xee, 0xe3,
+	0xa7, 0xd6, 0x67, 0x30, 0x22, 0x59, 0x11, 0x0a, 0x4a, 0x24, 0x85, 0x7d, 0x2b, 0xa7, 0x1a, 0x92,
+	0x44, 0x4b, 0x47, 0xd0, 0x21, 0xcb, 0x24, 0x15, 0xb0, 0x9f, 0x5f, 0x5b, 0x03, 0xec, 0x1a, 0x66,
+	0xe2, 0xfd, 0x83, 0x3d, 0x7a, 0xbb, 0x20, 0x62, 0x1a, 0x13, 0x39, 0xe0, 0x62, 0x6c, 0x8d, 0xea,
+	0x00, 0xbf, 0x5d, 0x9e, 0xc4, 0x2c, 0x71, 0x8a, 0x59, 0x24, 0x1c, 0x0e, 0xf4, 0xe2, 0x2d, 0x6d,
+	0x88, 0x25, 0x9a, 0x77, 0x25, 0x64, 0x38, 0x08, 0x4d, 0x3d, 0xee, 0x2b, 0xbe, 0x14, 0x82, 0x44,
+	0x51, 0x31, 0xe6, 0x82, 0xc2, 0xc1, 0xfe, 0xd8, 0x12, 0x5e, 0x10, 0x29, 0x45, 0x91, 0x72, 0x96,
+	0x48, 0xf8, 0x53, 0xbf, 0x57, 0xfd, 0x2d, 0x3a, 0xea, 0x4f, 0xf9, 0x31, 0x23, 0x2a, 0xb8, 0x1a,
+	0x68, 0x0c, 0x60, 0xdd, 0x0b, 0x41, 0x13, 0x42, 0x9e, 0x0c, 0xd8, 0x10, 0x59, 0xc8, 0x51, 0x5e,
+	0x7d, 0x34, 0xc0, 0xe8, 0xfe, 0x98, 0xac, 0xc1, 0x67, 0xbc, 0x78, 0xcc, 0x9c, 0xda, 0xcc, 0xa3,
+	0x15, 0x92, 0x84, 0x14, 0x3e, 0xeb, 0xf7, 0xaf, 0x89, 0xf6, 0x7b, 0x3d, 0xf0, 0xe8, 0xea, 0x40,
+	0xae, 0xb6, 0x6f, 0x54, 0x1a, 0xfe, 0xd2, 0x6f, 0xde, 0x11, 0xf5, 0xff, 0x96, 0xfc, 0x57, 0x95,
+	0xb1, 0x99, 0x14, 0x34, 0x19, 0xca, 0x91, 0x9e, 0xf8, 0x98, 0xe0, 0xa0, 0xde, 0x7e, 0x4d, 0xc4,
+	0x90, 0x67, 0x12, 0x8b, 0xe3, 0x58, 0x6f, 0x49, 0x1a, 0x38, 0x26, 0x6b, 0xc5, 0xa7, 0x79, 0xbf,
+	0xc8, 0x24, 0x19, 0x52, 0x38, 0x2e, 0x38, 0xb4, 0x77, 0x20, 0x96, 0xc9, 0x88, 0x28, 0x03, 0x50,
+	0x80, 0x90, 0x27, 0x11, 0x93, 0x8c, 0x97, 0x6a, 0xbd, 0x29, 0x38, 0xa0, 0xb7, 0x8f, 0xc1, 0xd2,
+	0xc3, 0x73, 0x96, 0x3a, 0x01, 0x46, 0x44, 0x12, 0x24, 0xc5, 0xe3, 0xbd, 0x9f, 0x31, 0xb0, 0x01,
+	0x17, 0x43, 0x5a, 0x24, 0xf9, 0x18, 0xb3, 0xf5, 0xd7, 0x5e, 0xd6, 0x53, 0x28, 0x0e, 0x9b, 0xbd,
+	0xca, 0x18, 0x8a, 0x9c, 0xa4, 0xc6, 0x45, 0x8d, 0x89, 0x0c, 0x47, 0x70, 0x82, 0xb7, 0x04, 0x43,
+	0x37, 0xc7, 0x94, 0xa7, 0x05, 0x89, 0x95, 0xa7, 0x4a, 0x28, 0x6c, 0xf1, 0x82, 0x35, 0x90, 0x2c,
+	0xe6, 0x4a, 0x28, 0xe6, 0x13, 0x9c, 0x58, 0xdd, 0x88, 0xa0, 0x03, 0xa5, 0xb6, 0x95, 0x8d, 0x7c,
+	0xae, 0x3a, 0x8b, 0x85, 0x59, 0x71, 0x7c, 0xde, 0x93, 0xc3, 0x11, 0x4b, 0xab, 0xa3, 0xbf, 0xe0,
+	0xb5, 0x4d, 0x93, 0x6b, 0xda, 0x76, 0x52, 0xb0, 0x77, 0x6f, 0xf7, 0x29, 0xc0, 0x38, 0xe5, 0x19,
+	0xf6, 0xd8, 0x7f, 0x13, 0xec, 0xe9, 0x56, 0xc8, 0x96, 0x59, 0x1c, 0x97, 0xdb, 0xd0, 0x9f, 0xe0,
+	0xd4, 0x56, 0xb0, 0x6b, 0xe9, 0x4b, 0x3c, 0x3d, 0xe6, 0xe1, 0x32, 0x9c, 0xd6, 0x0a, 0x0e, 0x76,
+	0xfa, 0x81, 0x69, 0x5a, 0x54, 0x9a, 0x53, 0xe7, 0x69, 0x4f, 0x6f, 0x05, 0x07, 0x3a, 0x69, 0x18,
+	0x64, 0xf5, 0x58, 0x4d, 0x40, 0x3d, 0xa3, 0x15, 0xec, 0x56, 0x7a, 0x35, 0x8d, 0xd3, 0x96, 0xaa,
+	0xa3, 0x15, 0x9c, 0xd9, 0x0a, 0xf6, 0x72, 0x87, 0x66, 0x88, 0x4a, 0x83, 0xf4, 0xc1, 0x19, 0x77,
+	0x79, 0x56, 0x2b, 0xd8, 0xdb, 0x89, 0xc3, 0x03, 0xb4, 0x0e, 0x5a, 0xc4, 0xd9, 0x35, 0x84, 0xf9,
+	0x57, 0xe9, 0xab, 0x66, 0x1b, 0xce, 0xa9, 0x71, 0xda, 0x1c, 0xa1, 0xce, 0xad, 0x31, 0x53, 0xc9,
+	0x18, 0xce, 0xab, 0x2d, 0x95, 0x68, 0xd9, 0x10, 0x91, 0x58, 0xd1, 0x9e, 0xdf, 0x0a, 0xf6, 0x71,
+	0x87, 0x83, 0x99, 0xe1, 0x29, 0x4d, 0x2c, 0x37, 0x17, 0xd4, 0x56, 0x71, 0x6b, 0x59, 0x99, 0x5c,
+	0xd8, 0x0a, 0xf6, 0x77, 0x51, 0xd9, 0xad, 0xe2, 0xfe, 0x50, 0xee, 0x43, 0xd0, 0x8c, 0x4a, 0xb8,
+	0xa8, 0x89, 0x59, 0x6a, 0x2c, 0x58, 0xad, 0x06, 0x17, 0xb7, 0x82, 0x83, 0x7a, 0xfb, 0xd6, 0x01,
+	0x35, 0x7d, 0xba, 0xa4, 0x15, 0x1c, 0xea, 0xb2, 0x12, 0x0c, 0x14, 0x34, 0xe3, 0xb9, 0x08, 0xa7,
+	0xa2, 0xfc, 0xa5, 0x35, 0xd5, 0xe1, 0x22, 0xa2, 0xda, 0x8d, 0xc2, 0x65, 0xad, 0x60, 0x67, 0xe7,
+	0x40, 0x0d, 0x8d, 0xae, 0xa5, 0x9a, 0x72, 0x79, 0x2b, 0xd8, 0xc5, 0x19, 0x6d, 0x68, 0x1c, 0xbc,
+	0x5b, 0xfc, 0xca, 0x2a, 0xc9, 0xab, 0xe2, 0x55, 0x2d, 0xaf, 0xc6, 0x9a, 0x54, 0xb1, 0xe7, 0xad,
+	0xad, 0x60, 0x77, 0xe7, 0xe7, 0x34, 0xdd, 0x1c, 0x68, 0x9f, 0x4e, 0x78, 0x12, 0xc1, 0xd5, 0xd5,
+	0xd1, 0x38, 0xd7, 0x5a, 0x93, 0xb0, 0x0d, 0x9d, 0xa5, 0x5f, 0x58, 0x85, 0xbe, 0x84, 0xeb, 0x2f,
+	0xe0, 0x9a, 0x56, 0x70, 0x80, 0x73, 0x48, 0x1a, 0xc1, 0xad, 0x3f, 0x30, 0xcc, 0x70, 0x5e, 0x0c,
+	0x48, 0x26, 0xe1, 0xda, 0x2a, 0x2c, 0xe4, 0x71, 0x4c, 0x43, 0x25, 0xbf, 0x55, 0xaa, 0x3e, 0x0f,
+	0x48, 0x9c, 0x51, 0xb8, 0xae, 0xba, 0x5e, 0xed, 0x1c, 0xae, 0x47, 0xa6, 0x57, 0x9d, 0xc8, 0x6f,
+	0x2f, 0xe6, 0xab, 0x70, 0x03, 0xd2, 0xb2, 0x01, 0xc9, 0x46, 0xca, 0xd7, 0x56, 0xbc, 0xc8, 0x76,
+	0x24, 0x57, 0x07, 0x51, 0x9b, 0xcb, 0x53, 0xb8, 0x11, 0x49, 0x06, 0x93, 0xac, 0x1f, 0x81, 0x9b,
+	0x5a, 0xc1, 0xbe, 0xce, 0x51, 0x3a, 0x7a, 0x4a, 0x52, 0x73, 0xca, 0x76, 0xfa, 0x2f, 0x22, 0x93,
+	0x9a, 0xc6, 0x64, 0x74, 0x0d, 0x9d, 0xd1, 0x97, 0x66, 0xe2, 0x94, 0x19, 0x7b, 0xdc, 0x97, 0x5b,
+	0xc1, 0x9f, 0xf4, 0x0e, 0x9d, 0xc6, 0x39, 0xbf, 0xe6, 0x3e, 0x4b, 0x5e, 0x44, 0xd4, 0x31, 0x79,
+	0xf3, 0x8e, 0x44, 0x60, 0x0c, 0xed, 0x2b, 0x0d, 0x6b, 0x8f, 0x89, 0xa4, 0x82, 0x91, 0x29, 0xb3,
+	0xff, 0x2a, 0x3a, 0x19, 0x87, 0x33, 0x16, 0xa0, 0x33, 0x04, 0xbe, 0x0c, 0x5f, 0x43, 0x47, 0x4c,
+	0x38, 0xd3, 0x49, 0x0e, 0xd3, 0x86, 0x11, 0x61, 0xb7, 0x7b, 0x17, 0x32, 0x49, 0x05, 0xa3, 0x89,
+	0x64, 0x72, 0x82, 0x00, 0x77, 0x57, 0x00, 0x36, 0xa9, 0x51, 0x89, 0x5c, 0x11, 0x32, 0x39, 0x81,
+	0x7b, 0x90, 0x09, 0xe9, 0x85, 0x54, 0x92, 0xaa, 0x29, 0xf7, 0x22, 0xa7, 0xa0, 0x28, 0xca, 0x57,
+	0x18, 0x3e, 0xf1, 0x56, 0xee, 0x6b, 0x05, 0x7f, 0xd6, 0x3b, 0x6c, 0xf6, 0x02, 0x65, 0xfe, 0xe6,
+	0x53, 0xd6, 0x3e, 0xcf, 0x32, 0xb8, 0x1f, 0xf9, 0x0a, 0x35, 0x4e, 0x7d, 0x89, 0x30, 0x2a, 0x04,
+	0x9b, 0x8c, 0xee, 0x81, 0x56, 0xb0, 0x87, 0xcb, 0x0a, 0x4a, 0xa0, 0xdf, 0xe0, 0x83, 0x8d, 0xe4,
+	0x72, 0xf4, 0x43, 0xc8, 0x62, 0x4b, 0x72, 0x96, 0x8f, 0x55, 0xd1, 0x16, 0xc1, 0xc3, 0x48, 0xff,
+	0x2b, 0x54, 0x1d, 0x82, 0xf5, 0x16, 0xd5, 0x8e, 0xe1, 0x91, 0x8a, 0x1c, 0xa7, 0xd8, 0x65, 0xc9,
+	0x10, 0x1e, 0x45, 0x47, 0xea, 0x01, 0x2e, 0x77, 0x25, 0x49, 0x04, 0x8f, 0xb5, 0x82, 0xfd, 0x5c,
+	0x79, 0xd4, 0xb0, 0x63, 0xc3, 0xef, 0xe3, 0xc8, 0x12, 0x4a, 0x90, 0x36, 0x15, 0x07, 0x8c, 0xe0,
+	0x09, 0xa4, 0x88, 0x25, 0x66, 0x4c, 0x52, 0x64, 0xae, 0x4f, 0x22, 0x6e, 0x6c, 0x51, 0xc2, 0x92,
+	0x90, 0x8f, 0x7d, 0xb5, 0xf3, 0x16, 0x52, 0x55, 0x8b, 0x40, 0x11, 0xd7, 0xcb, 0xf7, 0x6d, 0x24,
+	0x5f, 0x8b, 0xb3, 0x47, 0x2c, 0x48, 0xb2, 0x0c, 0xa7, 0xcd, 0xd5, 0xc8, 0xfa, 0xe8, 0x8d, 0x03,
+	0x81, 0xd3, 0xe7, 0xbc, 0xe1, 0x5b, 0x32, 0x5d, 0x61, 0xc6, 0x16, 0x52, 0x9e, 0xc1, 0x19, 0x73,
+	0x5e, 0xc7, 0x30, 0x5d, 0xd0, 0x81, 0xa0, 0xd9, 0xc8, 0x0a, 0xe5, 0xcc, 0xb9, 0xe0, 0x13, 0xbd,
+	0x43, 0x66, 0xa3, 0xaa, 0x79, 0xe4, 0x59, 0x33, 0x66, 0xf5, 0xaa, 0xc3, 0x92, 0x08, 0xce, 0x9e,
+	0xab, 0xc9, 0xc8, 0xa3, 0x22, 0x46, 0x23, 0x38, 0x67, 0xce, 0x9f, 0x58, 0xd3, 0xba, 0xba, 0x2c,
+	0x38, 0x77, 0xce, 0x6b, 0xc6, 0x94, 0x20, 0xc3, 0xc8, 0x00, 0xae, 0x98, 0x05, 0x70, 0x47, 0xb1,
+	0x1d, 0x31, 0x72, 0x78, 0xae, 0xea, 0x28, 0x0b, 0xcb, 0x13, 0x15, 0x95, 0x68, 0x04, 0x5b, 0xe7,
+	0xbc, 0x37, 0x98, 0x42, 0xa8, 0x8c, 0x23, 0x12, 0x64, 0x55, 0x2d, 0x94, 0xc1, 0xd5, 0x73, 0xde,
+	0xa6, 0xa6, 0x60, 0x65, 0x3d, 0x63, 0x05, 0xb4, 0x6d, 0xce, 0x6b, 0x50, 0x38, 0x22, 0xb2, 0x54,
+	0xd4, 0x8c, 0x26, 0x51, 0x91, 0xd1, 0x78, 0x00, 0xb7, 0x54, 0x21, 0xe3, 0x6c, 0xa8, 0x02, 0x88,
+	0xa4, 0x89, 0xb4, 0xc7, 0xf2, 0xb7, 0x48, 0xcc, 0x25, 0x84, 0x25, 0x92, 0x0a, 0x5c, 0x95, 0x7e,
+	0x73, 0xce, 0x2b, 0x9a, 0x46, 0xad, 0x72, 0x11, 0x47, 0x38, 0x1f, 0x32, 0xb8, 0xbf, 0xab, 0xce,
+	0x66, 0x70, 0x92, 0x88, 0x21, 0x95, 0x05, 0x1f, 0x0c, 0x54, 0xb9, 0x06, 0x7f, 0x8f, 0x24, 0x81,
+	0x50, 0x48, 0xfb, 0xf5, 0x64, 0xff, 0x80, 0x4e, 0x8e, 0x08, 0x9a, 0x90, 0x22, 0xd9, 0x54, 0x84,
+	0x9f, 0x3d, 0xe2, 0x98, 0x63, 0xd6, 0x8f, 0xfb, 0xcc, 0x7a, 0x11, 0x6e, 0x3a, 0xf1, 0xb8, 0x2d,
+	0x70, 0x2b, 0x3a, 0x18, 0x03, 0x1a, 0xad, 0x6f, 0xde, 0x14, 0x1f, 0x7d, 0xc2, 0x96, 0x82, 0x1e,
+	0x7b, 0xfc, 0x96, 0x93, 0xe0, 0xb6, 0x39, 0xe4, 0x3c, 0xdc, 0x2c, 0xfd, 0x93, 0xec, 0xf0, 0xdb,
+	0x6b, 0xc3, 0x2b, 0xae, 0xf1, 0x0e, 0xa4, 0xfc, 0x76, 0xb8, 0xb1, 0x9c, 0x8c, 0x92, 0x8c, 0x27,
+	0x70, 0x27, 0x9e, 0xc0, 0xf4, 0x61, 0x46, 0x94, 0x44, 0xfe, 0xd8, 0xff, 0x63, 0x2e, 0xf8, 0xe3,
+	0xde, 0xc1, 0x75, 0x80, 0x6e, 0x4c, 0xd4, 0x8b, 0x9e, 0xff, 0x44, 0x7a, 0xa4, 0x96, 0x1b, 0x53,
+	0xd3, 0x4f, 0x8a, 0x69, 0x62, 0x13, 0xd7, 0x7b, 0xd0, 0x59, 0x58, 0x44, 0xc8, 0x93, 0x2c, 0x37,
+	0xff, 0xab, 0xdc, 0xc0, 0xe0, 0xee, 0x45, 0x87, 0x6f, 0x71, 0x55, 0x15, 0xba, 0x0f, 0x6d, 0x0e,
+	0x2f, 0xe6, 0x94, 0xfa, 0x7e, 0x24, 0xbb, 0x31, 0xd1, 0x26, 0xaf, 0xf2, 0xcd, 0x48, 0x7f, 0x80,
+	0x07, 0xd1, 0x68, 0x4f, 0xd5, 0x39, 0x87, 0xa6, 0x3f, 0x34, 0xe7, 0x33, 0x78, 0x47, 0x8f, 0x74,
+	0x81, 0xcb, 0x62, 0x78, 0x78, 0x2e, 0xd8, 0xe8, 0x1a, 0x1d, 0x8e, 0xa8, 0x09, 0x8f, 0x60, 0xe5,
+	0xe0, 0xe3, 0x94, 0x4a, 0x23, 0x9f, 0x8a, 0x4b, 0x7b, 0x06, 0xc9, 0x1d, 0xc3, 0xca, 0x3c, 0xf6,
+	0x59, 0x64, 0x47, 0xba, 0xd4, 0x14, 0x34, 0x14, 0x39, 0x93, 0x35, 0x21, 0xbc, 0x83, 0x74, 0x36,
+	0x1b, 0xf1, 0xb2, 0x72, 0xb2, 0x38, 0xbb, 0xde, 0x99, 0xf3, 0x5e, 0x19, 0x35, 0x6a, 0x2a, 0xcd,
+	0x4d, 0xa8, 0xf1, 0x59, 0xf3, 0x28, 0x8d, 0x57, 0x20, 0xef, 0x65, 0x6d, 0x97, 0x07, 0xce, 0x9e,
+	0x47, 0x65, 0x8d, 0x82, 0x28, 0xeb, 0xef, 0xe7, 0x13, 0x15, 0xee, 0xe0, 0x9c, 0x79, 0x54, 0x81,
+	0xb9, 0xf1, 0x26, 0xf9, 0x54, 0xdc, 0xc0, 0xb9, 0xd5, 0xf9, 0xbd, 0xf3, 0xcc, 0x13, 0xa9, 0xeb,
+	0xf4, 0xf3, 0xe6, 0x51, 0xad, 0x61, 0x20, 0x63, 0xae, 0x9b, 0x83, 0x99, 0x34, 0x2d, 0xd2, 0xf3,
+	0xe7, 0xfd, 0xa1, 0x4e, 0x4d, 0xa2, 0xf9, 0xbb, 0x60, 0x1e, 0xd5, 0x07, 0x48, 0x1a, 0xa5, 0x20,
+	0x2e, 0xc4, 0x0b, 0xf0, 0x50, 0x25, 0x45, 0x03, 0x92, 0x64, 0x31, 0xcb, 0x9c, 0x4b, 0xb9, 0x18,
+	0x4f, 0x61, 0x10, 0x59, 0xde, 0x47, 0x80, 0x4b, 0xf0, 0x36, 0x0c, 0x40, 0x45, 0x47, 0x65, 0x54,
+	0x79, 0xbf, 0x50, 0x40, 0xb8, 0xb4, 0x0e, 0x71, 0x76, 0xe7, 0x20, 0x97, 0xcd, 0x7b, 0x45, 0x41,
+	0x10, 0x15, 0x16, 0xca, 0x4c, 0x8b, 0x45, 0x70, 0xf9, 0xbc, 0x0f, 0xc6, 0xd3, 0x8b, 0x29, 0xb6,
+	0xcd, 0x54, 0x57, 0xd4, 0x39, 0x66, 0x49, 0xd1, 0x8f, 0x49, 0xb8, 0x6c, 0x00, 0x57, 0xce, 0xfb,
+	0x08, 0x69, 0x01, 0x8e, 0xaa, 0x36, 0x74, 0x55, 0x9d, 0x9c, 0x51, 0x22, 0xc2, 0x91, 0x71, 0xc3,
+	0x5b, 0xe7, 0xb1, 0x19, 0xa5, 0x95, 0x30, 0xff, 0xcd, 0x79, 0x94, 0xa2, 0x29, 0x07, 0xa1, 0x12,
+	0xae, 0x8c, 0x0d, 0x93, 0x5c, 0x1d, 0x4d, 0x4a, 0x89, 0xa4, 0x24, 0x82, 0xef, 0xcc, 0xfb, 0x2c,
+	0x27, 0xcf, 0xa8, 0x56, 0xce, 0xe6, 0x72, 0xf4, 0x3e, 0xc4, 0xcc, 0x68, 0xfd, 0x88, 0x23, 0x8b,
+	0xc1, 0xe6, 0x23, 0x8e, 0x5d, 0x2f, 0xe8, 0x17, 0x8e, 0x3f, 0x7a, 0xf3, 0xfa, 0x91, 0x70, 0x3f,
+	0x52, 0x64, 0xed, 0x88, 0x06, 0xc2, 0x74, 0xb1, 0x6d, 0x2b, 0x46, 0x2b, 0xda, 0x03, 0xf3, 0xbe,
+	0xb6, 0x0b, 0x63, 0x36, 0xee, 0xb3, 0x64, 0x58, 0x48, 0xbe, 0x4a, 0x45, 0xbd, 0xfe, 0x78, 0x6e,
+	0xde, 0x1b, 0x5a, 0x05, 0xab, 0x53, 0xc6, 0x5c, 0x98, 0x4f, 0xf0, 0x3c, 0x3a, 0xb0, 0x0a, 0x90,
+	0xe7, 0x2a, 0x3a, 0x18, 0x0d, 0xfc, 0xf1, 0x6c, 0xd8, 0x40, 0x30, 0x15, 0xdb, 0x88, 0x18, 0x66,
+	0xf0, 0x02, 0xda, 0x47, 0x05, 0xc6, 0xb2, 0xc2, 0x3a, 0xdf, 0x17, 0xe7, 0x7d, 0xdd, 0x39, 0xcc,
+	0x59, 0x1c, 0xa1, 0x06, 0xc3, 0x2b, 0xc8, 0xd8, 0x0c, 0x8d, 0xc4, 0xca, 0xb9, 0x4d, 0x2c, 0xfd,
+	0xd5, 0xc6, 0xb1, 0x66, 0xcf, 0xaf, 0xd5, 0xc6, 0x0a, 0x3a, 0xc8, 0x33, 0x1a, 0x15, 0x24, 0x4d,
+	0xe3, 0x09, 0xbc, 0x8e, 0x14, 0xca, 0xd2, 0x51, 0xa8, 0xe4, 0xab, 0xf0, 0x06, 0xb2, 0x22, 0xbb,
+	0xb8, 0x1a, 0x88, 0x0c, 0xf9, 0x4d, 0xe4, 0x28, 0xdc, 0xf2, 0xca, 0xf9, 0xea, 0xf9, 0xdf, 0xaa,
+	0x11, 0x43, 0x92, 0x48, 0xbb, 0xf8, 0xdb, 0x48, 0x80, 0x86, 0x98, 0x0a, 0x9a, 0xb1, 0x48, 0x05,
+	0x7d, 0x0d, 0x8b, 0x29, 0x59, 0xa1, 0xf0, 0x0e, 0xd2, 0x93, 0x72, 0x01, 0x92, 0xcb, 0x11, 0x17,
+	0xaa, 0x72, 0x78, 0xb7, 0xb6, 0x85, 0x88, 0x65, 0x7d, 0x92, 0x44, 0x2e, 0x52, 0xfd, 0x0e, 0x99,
+	0xa8, 0x01, 0x8c, 0xe9, 0xb8, 0xaf, 0x35, 0xc4, 0xed, 0xe1, 0xbd, 0xe6, 0x5d, 0x6a, 0x57, 0x60,
+	0x7a, 0xb9, 0x27, 0xb7, 0xab, 0x93, 0x78, 0x97, 0x67, 0xa6, 0x83, 0x53, 0xda, 0x3e, 0xde, 0x19,
+	0x48, 0x5f, 0xff, 0x5b, 0xf5, 0xe3, 0xa7, 0xb6, 0xab, 0x0c, 0xeb, 0x7d, 0x3a, 0xf9, 0x44, 0x70,
+	0x5a, 0xbb, 0xbe, 0x61, 0xed, 0x52, 0xf4, 0x07, 0x38, 0xbd, 0xed, 0x4b, 0x5f, 0x43, 0x2e, 0x49,
+	0x67, 0xb4, 0x67, 0x9e, 0x96, 0x4c, 0xf4, 0x4e, 0xcf, 0x6c, 0x57, 0x15, 0x22, 0x9b, 0x64, 0x8a,
+	0x41, 0xab, 0x88, 0x67, 0xd5, 0xf6, 0x59, 0xb3, 0xa3, 0xb3, 0x6b, 0x8b, 0x28, 0xab, 0x30, 0x0b,
+	0xd9, 0x86, 0x54, 0xbb, 0xae, 0x12, 0x52, 0xb9, 0xb9, 0x98, 0x26, 0x70, 0x6e, 0x8d, 0x7d, 0x97,
+	0x37, 0xc0, 0x79, 0x35, 0xc9, 0x78, 0x85, 0x58, 0x66, 0xe1, 0x32, 0x9c, 0x5f, 0xdf, 0x9f, 0x18,
+	0x66, 0x2e, 0x0d, 0x20, 0x92, 0xc2, 0x05, 0x6d, 0x6f, 0x6d, 0x06, 0xa1, 0xfd, 0xab, 0x9f, 0x47,
+	0x09, 0xe1, 0xc2, 0xb6, 0xf7, 0x64, 0xd5, 0xe3, 0xf6, 0xfb, 0xbc, 0xa8, 0xc6, 0x8d, 0x66, 0x34,
+	0xa3, 0x49, 0xc6, 0x74, 0x23, 0xeb, 0xe2, 0xfa, 0x36, 0xfd, 0x3d, 0xdb, 0x25, 0x6d, 0x5f, 0xea,
+	0xa6, 0x14, 0xcf, 0x7b, 0x69, 0xdb, 0xdb, 0xab, 0xa2, 0xe0, 0x54, 0xf2, 0x32, 0x34, 0xa5, 0xa2,
+	0x99, 0xeb, 0x3e, 0xab, 0x38, 0x97, 0xb7, 0xbd, 0xbd, 0x28, 0xa2, 0xeb, 0xa7, 0x57, 0x32, 0x8e,
+	0x2b, 0xda, 0xde, 0x8b, 0x63, 0x98, 0x59, 0xe1, 0xca, 0xca, 0x0a, 0x8e, 0x2a, 0x27, 0x29, 0x85,
+	0xab, 0xd0, 0x96, 0xf5, 0xf2, 0x24, 0xc9, 0x5d, 0xb8, 0xd2, 0x73, 0x6f, 0xad, 0xcc, 0x6d, 0x01,
+	0xb6, 0x00, 0xbb, 0xba, 0x32, 0xb7, 0xee, 0x92, 0xe5, 0xa6, 0x51, 0x0d, 0xdb, 0x66, 0x10, 0x75,
+	0x63, 0xfa, 0x9a, 0x76, 0xb0, 0xe8, 0x6e, 0xcf, 0x14, 0xd1, 0x76, 0xfa, 0xaf, 0x45, 0xda, 0xaa,
+	0x99, 0xcd, 0x32, 0x75, 0x46, 0x36, 0xda, 0x44, 0x70, 0x5d, 0x75, 0x33, 0x26, 0x6f, 0x1d, 0xe7,
+	0xb1, 0x64, 0x70, 0x7d, 0x65, 0x70, 0x79, 0x5f, 0x66, 0x07, 0xdf, 0x80, 0xcc, 0x0c, 0xed, 0x85,
+	0x44, 0x2b, 0xba, 0xa9, 0xb7, 0x1d, 0x29, 0x89, 0x22, 0x1f, 0xce, 0x26, 0x39, 0x35, 0x0d, 0x32,
+	0x93, 0x33, 0xeb, 0x52, 0xfd, 0xc6, 0xb6, 0x0f, 0x40, 0xcd, 0x28, 0xdf, 0x1e, 0xb8, 0x09, 0xd9,
+	0x56, 0x05, 0xeb, 0x12, 0xd9, 0x2f, 0x56, 0x8e, 0x18, 0x41, 0xd4, 0x47, 0x07, 0xfb, 0x0e, 0x52,
+	0x21, 0x91, 0x27, 0xda, 0x61, 0xc7, 0x26, 0xba, 0xc2, 0xcd, 0x55, 0x9a, 0x56, 0x0f, 0x93, 0x6a,
+	0x7f, 0x05, 0xd9, 0x9e, 0xa6, 0x11, 0x9d, 0x05, 0x0f, 0xa9, 0x84, 0xaf, 0x22, 0x7d, 0xd5, 0xa4,
+	0x84, 0x17, 0xb9, 0xee, 0x53, 0x7e, 0xad, 0xed, 0x33, 0x60, 0x47, 0xd1, 0x99, 0xeb, 0xd7, 0x91,
+	0x80, 0x35, 0x61, 0xc4, 0x86, 0x23, 0x55, 0x90, 0x99, 0x9d, 0xc3, 0x37, 0xda, 0xc1, 0x21, 0xbd,
+	0xfd, 0x11, 0x9d, 0xae, 0xa5, 0x31, 0x17, 0xb4, 0x30, 0xcd, 0xaf, 0x3e, 0x4b, 0xdc, 0x7d, 0x1a,
+	0xdc, 0xd2, 0xf6, 0x59, 0x83, 0xf3, 0x18, 0x62, 0x4c, 0xe2, 0xb2, 0xb3, 0x21, 0x6d, 0xa7, 0x04,
+	0xfe, 0xab, 0x5d, 0x0d, 0x1a, 0xb6, 0x85, 0xe2, 0x2b, 0x14, 0x15, 0xb7, 0xfe, 0xbb, 0xed, 0xb3,
+	0x29, 0x6b, 0xe2, 0x46, 0x37, 0x90, 0x23, 0xfe, 0x6e, 0xcd, 0x57, 0x94, 0xa9, 0x9b, 0x9e, 0x51,
+	0x47, 0xf9, 0xef, 0xd5, 0xbc, 0x40, 0x59, 0xd8, 0x1b, 0x43, 0xbf, 0xab, 0x1d, 0xfc, 0x91, 0xbb,
+	0x2a, 0x32, 0x00, 0x1a, 0x33, 0x49, 0x1d, 0xac, 0xa0, 0x6b, 0x52, 0x10, 0x67, 0x21, 0x77, 0xd7,
+	0xb8, 0x2f, 0x67, 0xcb, 0x24, 0x11, 0xd2, 0x5c, 0x06, 0xc3, 0x3d, 0x35, 0xce, 0x2a, 0xfd, 0x1b,
+	0xe5, 0xc5, 0xee, 0x6d, 0x57, 0xe3, 0x7e, 0xe6, 0x0a, 0x23, 0xb8, 0xaf, 0xc6, 0xb5, 0xf1, 0xcf,
+	0xba, 0x54, 0xe6, 0xb9, 0x84, 0xfb, 0x6b, 0xc1, 0x4a, 0xdf, 0xa9, 0xda, 0x02, 0xd8, 0x1b, 0xfc,
+	0x03, 0xb5, 0x78, 0xa0, 0x39, 0xb1, 0xe5, 0x93, 0x96, 0xd0, 0x83, 0xb5, 0x90, 0xa2, 0x21, 0xf6,
+	0x5a, 0x3b, 0x82, 0x87, 0x9a, 0x97, 0xb2, 0x41, 0x58, 0x95, 0x15, 0x3a, 0x10, 0xc3, 0xc3, 0x88,
+	0x67, 0xba, 0x96, 0x52, 0x7b, 0x9a, 0xe5, 0xa6, 0xe1, 0x29, 0x24, 0x95, 0x26, 0x80, 0xca, 0x97,
+	0xe1, 0x69, 0xb4, 0x5a, 0x23, 0x28, 0xe1, 0xba, 0x84, 0xf9, 0x7e, 0xf3, 0x64, 0xfa, 0x24, 0x94,
+	0x18, 0x75, 0xdf, 0xf0, 0x07, 0xc8, 0xba, 0xf1, 0x64, 0x79, 0xd9, 0x5c, 0xd1, 0x15, 0x9b, 0xee,
+	0xdf, 0xfc, 0x10, 0xe9, 0x01, 0xc2, 0xda, 0x0b, 0x4c, 0xad, 0x57, 0x7e, 0x2b, 0x3f, 0x6a, 0xde,
+	0xab, 0x9f, 0xed, 0x19, 0xe4, 0x7d, 0x10, 0xa0, 0x9f, 0x0f, 0x06, 0x48, 0xf7, 0x9e, 0x6d, 0x9e,
+	0xc6, 0x5f, 0x33, 0x3f, 0x87, 0x02, 0x66, 0x1d, 0xa0, 0xe4, 0xf5, 0x7c, 0x33, 0xdb, 0x78, 0x7b,
+	0x89, 0xbb, 0xfe, 0x84, 0x1f, 0xcf, 0x90, 0x07, 0x89, 0xe3, 0x81, 0xe0, 0x23, 0x1a, 0x2b, 0x77,
+	0x6e, 0x73, 0x91, 0x17, 0xda, 0x3e, 0xdd, 0xae, 0x62, 0xb9, 0xd0, 0x58, 0xe3, 0x16, 0x5f, 0x44,
+	0x6e, 0x62, 0xf6, 0xa4, 0x8a, 0x13, 0xf8, 0x09, 0x32, 0x9f, 0x29, 0xb1, 0xc5, 0xb6, 0x04, 0xd5,
+	0x79, 0x37, 0xfc, 0x4f, 0xb3, 0xf0, 0x4a, 0x98, 0x61, 0xf0, 0x7f, 0x9b, 0x35, 0x40, 0xa3, 0xca,
+	0x5c, 0xec, 0xa7, 0xcd, 0x02, 0x44, 0xec, 0xff, 0xac, 0x99, 0xfd, 0xa6, 0x12, 0xef, 0xe7, 0xed,
+	0xe0, 0xe3, 0xbd, 0x83, 0x9a, 0x27, 0xab, 0xcb, 0xe5, 0x17, 0xcd, 0xc2, 0xae, 0xa1, 0xd5, 0x29,
+	0xfe, 0xb2, 0x59, 0x30, 0xa5, 0xba, 0x64, 0x34, 0xa6, 0xa1, 0x84, 0xff, 0x43, 0xd6, 0x8c, 0x60,
+	0xfa, 0xe2, 0xc9, 0x3a, 0xed, 0x5f, 0x35, 0xab, 0x54, 0x9f, 0xea, 0x85, 0x69, 0x04, 0xbf, 0x6e,
+	0x36, 0x30, 0xcd, 0xca, 0x38, 0x1b, 0xda, 0xf7, 0x1c, 0x11, 0xbc, 0xd4, 0xcc, 0x52, 0x4a, 0xbc,
+	0xfb, 0x50, 0x9c, 0xbf, 0x8c, 0x3c, 0xbf, 0xad, 0x2a, 0x99, 0xed, 0x6c, 0x29, 0x33, 0x8b, 0xc8,
+	0xc4, 0xf9, 0xce, 0xd7, 0xd0, 0x51, 0x20, 0xa4, 0x2a, 0x92, 0x2d, 0xe2, 0x75, 0xe4, 0x89, 0x10,
+	0x42, 0x3f, 0xe8, 0x51, 0xa1, 0xf1, 0x0d, 0x14, 0xf1, 0x11, 0xbd, 0xcf, 0xf5, 0x95, 0x0e, 0xbc,
+	0xd9, 0xae, 0x15, 0xb8, 0x8e, 0x8c, 0x18, 0x7e, 0x0b, 0xc5, 0xd0, 0x69, 0x86, 0xe1, 0xed, 0x66,
+	0x0e, 0x4b, 0x73, 0x94, 0xf0, 0x4e, 0xf3, 0x6e, 0xcb, 0xa2, 0xd6, 0x27, 0x0b, 0xef, 0x22, 0xb5,
+	0x6a, 0x42, 0xa2, 0x49, 0x7f, 0x87, 0x4e, 0x04, 0x41, 0x63, 0xb6, 0x3c, 0xdd, 0xf4, 0x7c, 0xaf,
+	0x59, 0x3c, 0xfa, 0x46, 0x89, 0x2d, 0x53, 0x38, 0xb9, 0xd3, 0xb8, 0xe4, 0xea, 0x88, 0xd2, 0x6a,
+	0x93, 0xfc, 0x94, 0x0e, 0xba, 0x31, 0xaa, 0x42, 0xcb, 0x37, 0x6a, 0x70, 0x6a, 0xa7, 0x51, 0x20,
+	0x06, 0xa6, 0x73, 0x88, 0xd3, 0x76, 0xbc, 0xa6, 0xda, 0xa3, 0x79, 0xbd, 0x20, 0xe1, 0xf4, 0x4e,
+	0xa3, 0xec, 0x0c, 0xd4, 0x3e, 0x90, 0x09, 0x63, 0x9e, 0x51, 0x38, 0xa3, 0x13, 0x2c, 0xb9, 0xd7,
+	0x55, 0x29, 0x99, 0xb8, 0x0a, 0x0c, 0x2e, 0xef, 0xa0, 0x8c, 0x90, 0x4c, 0x8a, 0x54, 0xf0, 0x28,
+	0x37, 0x17, 0x4d, 0x63, 0x1e, 0x51, 0xb8, 0xa2, 0x42, 0x1f, 0x72, 0xae, 0x4a, 0x10, 0x65, 0xbd,
+	0x03, 0x41, 0x29, 0x5c, 0xd9, 0xf1, 0x99, 0x90, 0xa2, 0x97, 0x3d, 0xbc, 0xab, 0x10, 0x6b, 0x8a,
+	0x10, 0x0a, 0xa5, 0xee, 0x82, 0x86, 0x23, 0x62, 0x1e, 0x6f, 0x94, 0x39, 0xc7, 0xd6, 0x8e, 0xbf,
+	0x5d, 0x68, 0x40, 0x6a, 0xe9, 0x62, 0xfc, 0xd5, 0x1d, 0x94, 0x5f, 0x92, 0x49, 0x91, 0xa5, 0x34,
+	0x64, 0x24, 0x4e, 0x05, 0x5b, 0x61, 0x31, 0x35, 0x31, 0xcf, 0xa9, 0xff, 0xb6, 0x8e, 0xd7, 0x83,
+	0x46, 0xac, 0x35, 0xf1, 0x6b, 0x3a, 0x28, 0x89, 0x57, 0x62, 0x20, 0x59, 0x66, 0xba, 0xbc, 0xfd,
+	0x7c, 0x02, 0xd7, 0x76, 0x7c, 0x22, 0xb8, 0xc2, 0x70, 0x03, 0xe8, 0x7a, 0x34, 0x7f, 0x24, 0xc8,
+	0xaa, 0xad, 0x1c, 0x6b, 0x05, 0xe2, 0x3f, 0x76, 0xbc, 0x1d, 0x21, 0x5c, 0xa5, 0x61, 0xfd, 0x4f,
+	0x48, 0x37, 0x10, 0x4a, 0xfd, 0x69, 0x13, 0x82, 0x7f, 0xee, 0x78, 0x07, 0x8d, 0xd7, 0x53, 0x7a,
+	0x5f, 0x3e, 0x46, 0xfc, 0x97, 0x8e, 0x4f, 0xf4, 0x10, 0xc8, 0x24, 0xfc, 0x16, 0x73, 0x6b, 0xc7,
+	0xdb, 0x7d, 0x34, 0x05, 0xd1, 0xe4, 0xdb, 0xd0, 0xb1, 0x47, 0xd3, 0xcb, 0x68, 0xfa, 0xed, 0x78,
+	0x3f, 0x25, 0x5d, 0xd7, 0x2f, 0xf6, 0x89, 0x8e, 0x42, 0xdd, 0x81, 0x4e, 0x6a, 0x56, 0xe3, 0xb5,
+	0xc8, 0x52, 0xc1, 0x24, 0x85, 0xef, 0x22, 0xad, 0x9f, 0x89, 0x35, 0x51, 0xea, 0x7b, 0xbf, 0xcf,
+	0xb4, 0xa1, 0xc8, 0x59, 0x46, 0xe1, 0xae, 0x8e, 0x6f, 0xe1, 0xcf, 0x66, 0x41, 0xf1, 0xdd, 0xe7,
+	0x7c, 0x19, 0xee, 0xee, 0xf8, 0x70, 0x34, 0x13, 0x9e, 0x52, 0x99, 0x32, 0x1a, 0x52, 0xb8, 0xe7,
+	0xf7, 0x41, 0x1b, 0xa1, 0xac, 0xa5, 0x70, 0x6f, 0xc7, 0x87, 0x91, 0x88, 0x70, 0xed, 0xb4, 0x0e,
+	0xfb, 0xe4, 0x27, 0x4d, 0x56, 0xc8, 0x92, 0x21, 0xfc, 0x0a, 0x1f, 0x3f, 0x02, 0xa4, 0x82, 0x4a,
+	0x1a, 0xaa, 0xfa, 0xec, 0xd7, 0x1d, 0x9f, 0xdf, 0x62, 0x84, 0x72, 0xc2, 0x2f, 0x21, 0x01, 0x62,
+	0x9a, 0x49, 0x55, 0x6c, 0xa6, 0x67, 0xb4, 0xe8, 0xe5, 0x8e, 0x8f, 0x79, 0xd3, 0x50, 0xf7, 0xf2,
+	0x00, 0x7e, 0x33, 0x83, 0xd9, 0xd2, 0xbe, 0x7f, 0x8b, 0xdc, 0x1d, 0x06, 0x54, 0x54, 0xfa, 0x95,
+	0x29, 0x45, 0xf1, 0xb0, 0x8c, 0xc6, 0x03, 0xbf, 0xf3, 0x57, 0x67, 0xa0, 0x24, 0xb3, 0x91, 0x5f,
+	0xf7, 0x42, 0x5e, 0xc3, 0x7a, 0x5d, 0x41, 0xb9, 0x32, 0xf0, 0x75, 0x6c, 0x90, 0x08, 0x63, 0x5c,
+	0x62, 0x59, 0x54, 0xc0, 0x1b, 0x3b, 0xc4, 0x79, 0x77, 0xfd, 0x66, 0x4d, 0x54, 0xc3, 0xc4, 0xe3,
+	0xb4, 0x24, 0xde, 0x42, 0xea, 0x58, 0x87, 0x08, 0xba, 0x2a, 0x48, 0xe9, 0xb0, 0xdf, 0xae, 0x1d,
+	0x12, 0xc6, 0x4e, 0x79, 0xec, 0x77, 0x6a, 0xd3, 0x62, 0x0e, 0xa7, 0x63, 0xcf, 0xbb, 0x68, 0x37,
+	0x22, 0xcf, 0x46, 0xbe, 0x19, 0x6d, 0x63, 0xe2, 0x80, 0x25, 0x2c, 0x1b, 0xc1, 0x95, 0x5d, 0xd4,
+	0x68, 0x62, 0x03, 0x59, 0xf8, 0xb7, 0xc3, 0xdb, 0xbb, 0xde, 0x03, 0x7a, 0x12, 0xcf, 0xa5, 0xee,
+	0x21, 0xdd, 0xd8, 0x45, 0x05, 0x4d, 0x49, 0xf5, 0xfe, 0xed, 0xa6, 0x2e, 0xea, 0xfb, 0x94, 0xf4,
+	0x01, 0x17, 0x7d, 0x55, 0xc1, 0x77, 0x51, 0x55, 0x56, 0x12, 0x05, 0xcd, 0x33, 0x0a, 0x5f, 0xea,
+	0xa2, 0xc6, 0x1e, 0xe6, 0xc8, 0x5c, 0x78, 0x7c, 0x19, 0x71, 0x75, 0x78, 0x4e, 0x33, 0x94, 0xaa,
+	0xd3, 0x08, 0x6e, 0xee, 0x7a, 0x85, 0xb0, 0xf7, 0x44, 0x69, 0x4c, 0x42, 0xaa, 0xdf, 0x8b, 0x91,
+	0xb1, 0xfa, 0x1f, 0xbe, 0xde, 0xad, 0xdd, 0x25, 0x95, 0x18, 0xf7, 0x20, 0x45, 0x5f, 0x47, 0x7f,
+	0xa3, 0xeb, 0xe5, 0x5d, 0x05, 0x56, 0xfb, 0x95, 0xb7, 0xa0, 0x49, 0xb5, 0x4f, 0xb2, 0xb5, 0x01,
+	0xba, 0xa0, 0x37, 0xd5, 0xc8, 0x23, 0xdd, 0x4a, 0xd1, 0x69, 0x11, 0xa5, 0xe6, 0x3f, 0xda, 0xad,
+	0x54, 0xac, 0xae, 0xca, 0x20, 0x19, 0x3c, 0xd6, 0xf5, 0xca, 0x82, 0x69, 0x0d, 0x16, 0xfd, 0x78,
+	0xb7, 0x52, 0x44, 0x4f, 0x33, 0xe4, 0xac, 0xe3, 0x89, 0x6e, 0xa5, 0x8d, 0x5a, 0xb2, 0xa3, 0xd5,
+	0xe3, 0xc9, 0x6e, 0xa5, 0xb2, 0xf5, 0xcc, 0x14, 0x82, 0xf6, 0xb9, 0x48, 0xe0, 0xa9, 0x19, 0x3b,
+	0x9f, 0x2a, 0x26, 0xc5, 0xb8, 0x0f, 0x4f, 0xcf, 0x98, 0x4b, 0x57, 0x92, 0xc6, 0x8f, 0x7f, 0xbf,
+	0x5b, 0x69, 0x48, 0x94, 0xed, 0x28, 0xb5, 0x94, 0xa9, 0xa4, 0x7f, 0x30, 0x63, 0x3d, 0x9e, 0x52,
+	0x41, 0x24, 0x17, 0x85, 0xb4, 0x6f, 0xb2, 0x7e, 0x38, 0x43, 0x02, 0xec, 0xb8, 0x62, 0x78, 0xe2,
+	0xd1, 0xc7, 0x1c, 0xd9, 0x3f, 0x62, 0xcb, 0x96, 0x63, 0xd6, 0xe1, 0x47, 0xb3, 0x04, 0x75, 0xe2,
+	0x51, 0x47, 0xa1, 0x9b, 0xe7, 0x67, 0x66, 0x8a, 0xde, 0x77, 0x9d, 0x6d, 0x43, 0xee, 0xd9, 0x6e,
+	0xa5, 0x4f, 0xe3, 0x24, 0xe2, 0x2b, 0x62, 0x2b, 0xde, 0xe7, 0xba, 0x95, 0xb6, 0x48, 0x1d, 0xa9,
+	0xe6, 0xef, 0xd3, 0x21, 0x4b, 0xe0, 0xf9, 0x6e, 0xa5, 0x45, 0x30, 0xcd, 0x41, 0x3f, 0x9f, 0xd8,
+	0x2b, 0x97, 0xae, 0x8f, 0x41, 0x0d, 0x27, 0x2f, 0x68, 0x96, 0xc7, 0xbe, 0x4b, 0xf6, 0x42, 0xb7,
+	0xd2, 0x2d, 0xf6, 0x2a, 0x65, 0x1d, 0xff, 0x8b, 0xc8, 0x0c, 0x30, 0xc2, 0xb6, 0x53, 0x4c, 0xfe,
+	0xa4, 0x9c, 0xa8, 0xa4, 0xf0, 0x93, 0xea, 0xda, 0x11, 0x1d, 0xdb, 0x3a, 0xcf, 0x94, 0xf6, 0x09,
+	0x7a, 0x24, 0x0f, 0x2f, 0x21, 0x5b, 0xf0, 0x3f, 0x07, 0x30, 0x95, 0x96, 0x06, 0x9c, 0xbe, 0x80,
+	0xee, 0xcf, 0x2b, 0x00, 0xd3, 0x45, 0x3f, 0x63, 0xc1, 0x6b, 0x43, 0x15, 0x91, 0x52, 0x91, 0xf1,
+	0x84, 0xc4, 0xe1, 0x88, 0x48, 0x38, 0x73, 0xc1, 0x2b, 0xfa, 0xe1, 0x39, 0x89, 0x95, 0x2b, 0xd4,
+	0x46, 0x6c, 0x9a, 0x7e, 0x17, 0x2e, 0xf8, 0x6c, 0xd8, 0x91, 0xc7, 0x64, 0x0d, 0x2e, 0x6a, 0xf8,
+	0x5e, 0xb9, 0xed, 0x8b, 0x17, 0xa6, 0xfb, 0xa6, 0x26, 0xc7, 0xf1, 0x66, 0xbe, 0xb5, 0x91, 0xee,
+	0x9f, 0xa3, 0x5e, 0x8d, 0x76, 0x56, 0xd2, 0x35, 0x29, 0x4f, 0xf5, 0xf5, 0x2e, 0x6c, 0x5b, 0x68,
+	0xee, 0x41, 0x6b, 0xe2, 0x35, 0x0b, 0xe8, 0x69, 0x86, 0x72, 0xe7, 0x65, 0xc9, 0x63, 0x32, 0x51,
+	0xaa, 0x78, 0x85, 0x5b, 0x17, 0x2a, 0xaf, 0x12, 0x7d, 0x09, 0xc5, 0x65, 0x31, 0x5e, 0x49, 0xcd,
+	0x1b, 0xc7, 0xdb, 0x66, 0x4e, 0xa6, 0x4d, 0xd3, 0x24, 0x30, 0x70, 0xfb, 0x82, 0xb7, 0xcd, 0x06,
+	0x94, 0x9e, 0xe9, 0x8e, 0x99, 0x33, 0xe9, 0x1b, 0x6b, 0x93, 0x04, 0xc3, 0x9d, 0x0b, 0x5e, 0x49,
+	0xa6, 0x51, 0x2c, 0x61, 0xb2, 0xfa, 0x38, 0xf4, 0x5b, 0x0b, 0xe8, 0xb5, 0xca, 0x54, 0x43, 0xb4,
+	0xec, 0x44, 0x6a, 0xd5, 0x7b, 0x06, 0x49, 0xbc, 0x2f, 0x8b, 0x3e, 0x8f, 0x99, 0xcd, 0xc0, 0x56,
+	0x89, 0x2a, 0xb5, 0x7f, 0xba, 0xe0, 0xad, 0x72, 0x8a, 0xce, 0x43, 0xce, 0x12, 0xec, 0xcb, 0x7f,
+	0x86, 0x76, 0xd1, 0x57, 0xb1, 0x40, 0x64, 0xbe, 0xf8, 0x28, 0x43, 0xcd, 0xcf, 0xd1, 0x09, 0xf6,
+	0x55, 0x96, 0x54, 0xd6, 0x31, 0xce, 0x70, 0x7e, 0x81, 0x54, 0x0e, 0x21, 0x54, 0xc8, 0x56, 0x35,
+	0xc4, 0x2f, 0xd1, 0x04, 0x2c, 0x59, 0x61, 0x92, 0x48, 0xf7, 0x0a, 0x33, 0xc9, 0xf5, 0x65, 0xd9,
+	0x43, 0x1b, 0xbc, 0x7d, 0x20, 0x84, 0xaf, 0x7f, 0x1f, 0xde, 0xe0, 0x39, 0x9d, 0x06, 0xf4, 0xa9,
+	0x28, 0x4d, 0xfc, 0x91, 0xe6, 0x69, 0x58, 0xe6, 0x2e, 0xe5, 0x1e, 0xdd, 0x30, 0x93, 0x93, 0x31,
+	0xd1, 0xbf, 0xf0, 0x78, 0x6c, 0x83, 0x17, 0x2e, 0x5e, 0x88, 0x17, 0x61, 0xcc, 0xc2, 0x65, 0x78,
+	0x7c, 0x83, 0xd7, 0xb4, 0x69, 0xba, 0xbb, 0x46, 0xd4, 0xb0, 0x27, 0x36, 0x78, 0x1d, 0x42, 0x30,
+	0x4d, 0x34, 0xd1, 0x75, 0x02, 0x4f, 0x36, 0x4f, 0x65, 0x18, 0x29, 0x68, 0x62, 0x1b, 0xaa, 0x4f,
+	0x35, 0xc3, 0xd0, 0x0f, 0xb3, 0xb4, 0x9d, 0x3e, 0xbd, 0xa1, 0xfa, 0x5a, 0xdb, 0xbe, 0xe9, 0xe7,
+	0xb1, 0x2c, 0x12, 0x55, 0x92, 0x9c, 0xbf, 0x58, 0x7d, 0x28, 0x6f, 0x7f, 0x9f, 0x30, 0xd0, 0x6f,
+	0x6f, 0xe0, 0x82, 0xc5, 0xe6, 0x19, 0xb4, 0xc2, 0xe8, 0x5f, 0x04, 0x5c, 0xb8, 0x88, 0xde, 0x2e,
+	0xe0, 0x35, 0x24, 0x11, 0xe8, 0x67, 0x20, 0x17, 0xed, 0x68, 0x22, 0xed, 0x34, 0xb6, 0x41, 0xf3,
+	0x44, 0x95, 0x0c, 0xfa, 0x1a, 0x68, 0xe6, 0x58, 0x87, 0x0a, 0x32, 0x84, 0x6b, 0x01, 0x3d, 0x60,
+	0x40, 0xf4, 0x48, 0xe7, 0x36, 0x70, 0x1d, 0x54, 0x1f, 0x8d, 0x23, 0x76, 0x15, 0xe0, 0xfa, 0x1d,
+	0x01, 0xc6, 0x2c, 0x81, 0x1b, 0x60, 0x86, 0x50, 0x15, 0x40, 0xb9, 0x1e, 0xd8, 0x0e, 0xd5, 0x27,
+	0xf0, 0xa5, 0x50, 0x59, 0x64, 0x20, 0x37, 0x02, 0x7a, 0x69, 0x20, 0x78, 0x96, 0x15, 0x93, 0x9c,
+	0x24, 0xca, 0x0f, 0xc8, 0xf2, 0x71, 0xee, 0xa7, 0x39, 0x4b, 0xe0, 0xa5, 0xc5, 0xe0, 0xb0, 0xde,
+	0xc7, 0x9d, 0x03, 0x10, 0x35, 0x60, 0x9f, 0xd6, 0xde, 0x6c, 0xbe, 0xbc, 0x88, 0x5e, 0x51, 0x37,
+	0xcd, 0x5d, 0x5a, 0xd0, 0x6f, 0x16, 0x7d, 0x58, 0x6f, 0x42, 0x86, 0xa4, 0x7c, 0x39, 0xf9, 0xdb,
+	0xf7, 0x81, 0xa2, 0x26, 0xc3, 0x2b, 0x8b, 0xc8, 0xc3, 0x35, 0x40, 0x25, 0x4f, 0x8b, 0x6c, 0x64,
+	0x1d, 0x3e, 0xbc, 0xba, 0xe8, 0x2b, 0xd2, 0x26, 0xb4, 0xcb, 0xec, 0xed, 0x55, 0xfd, 0x6b, 0x8b,
+	0xef, 0x2f, 0x38, 0x5d, 0x86, 0xbc, 0xfe, 0x7e, 0x7b, 0xf3, 0x0f, 0x58, 0xdf, 0x78, 0x1f, 0x81,
+	0xa9, 0xbd, 0xe9, 0xbf, 0xe0, 0xcd, 0x45, 0xe4, 0xe2, 0x35, 0x52, 0xf2, 0xd4, 0xbc, 0xd4, 0x40,
+	0x02, 0x78, 0x6f, 0x11, 0x05, 0x8b, 0x69, 0x54, 0x99, 0x5e, 0x9f, 0xbc, 0x84, 0xde, 0x33, 0x4e,
+	0x63, 0x9c, 0xe7, 0x3a, 0x65, 0x69, 0x87, 0xd3, 0xe8, 0x5d, 0x9e, 0x5a, 0xc3, 0x8c, 0x89, 0xb2,
+	0x05, 0xc2, 0x59, 0xcc, 0x12, 0xaa, 0x97, 0x3a, 0x6d, 0x29, 0xd8, 0xc9, 0xfd, 0x42, 0x53, 0x3f,
+	0x93, 0x51, 0x6a, 0xfe, 0xd8, 0x92, 0xef, 0xe1, 0xe8, 0x2f, 0x75, 0x89, 0xa4, 0x42, 0xc9, 0xe3,
+	0x4b, 0xbe, 0x85, 0x65, 0xe1, 0xc5, 0x2a, 0x25, 0x02, 0x9e, 0x58, 0xf2, 0x31, 0xd9, 0x11, 0xca,
+	0x51, 0x4f, 0x2e, 0xf9, 0xc4, 0x7d, 0x95, 0xa9, 0x92, 0x2b, 0x8e, 0x5d, 0x37, 0xe9, 0xf6, 0x8d,
+	0x7e, 0xa0, 0xa6, 0x29, 0xf6, 0xd5, 0x1f, 0x7d, 0xbe, 0x06, 0x77, 0x6c, 0xf4, 0x8c, 0x94, 0x44,
+	0xfd, 0x72, 0xe7, 0xce, 0x26, 0x4a, 0x16, 0x73, 0x09, 0xdf, 0xda, 0xe8, 0x6d, 0x5c, 0x53, 0xec,
+	0xaf, 0x7b, 0xec, 0xc0, 0x6f, 0x37, 0x0d, 0xd4, 0x7e, 0xf3, 0x5f, 0x37, 0x7a, 0xe7, 0xe1, 0xa7,
+	0x4c, 0x29, 0xb5, 0xaf, 0xd2, 0xfe, 0x6d, 0xa3, 0xaf, 0xaf, 0x34, 0xdd, 0x36, 0x7e, 0x0d, 0xf5,
+	0xdf, 0x37, 0xfe, 0x79, 0x57, 0xff, 0x8a, 0xf7, 0x53, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xc6,
+	0x9d, 0x42, 0xca, 0xe6, 0x3b, 0x00, 0x00,
 }

+ 13 - 1
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/error_code.proto

@@ -30,7 +30,7 @@ enum ErrorCode {
     ERROR_BAG_ITEM_PILE = 26; //道具堆叠數量爲0
     ERROR_CHALLENGE_TIME_LIMIT = 27; //超过最大挑战时间
     ERROR_SERVER_ERROR = 28; //服务器未开启
-    ERROR_SDK_LOGIN_FAILED = 29; //sdk登录验证失败
+    ERROR_SDK_LOGIN_FAILED = 29; //sdk登录验证失败(角色信息过期,重连失败)
     ERROR_SDK_LOGIN_EXPIRE = 30; //登录凭证过期
     ERROR_SERVER_MAINTAIN = 31; //服务器维护中
     ERROR_SERVER_KICK_CHEAT = 32; //检查到游戏异常行为,被踢
@@ -41,6 +41,7 @@ enum ErrorCode {
     ERROR_ROLE_PLATFORM_EMPTY = 37; //渠道信息为空无法登陆
     ERROR_ONLINE_REWARD_NO = 38; //当前无在线累计时间奖励可领取
     ERROR_ITEM_NOT_IN_USE_TIME = 39; //当前不在道具使用时间内,无法使用
+    ERROR_RMB_CANNOT_ADD_MORE = 40; // 当前金币已经达到上限
 
     ERROR_NO_ATTR_POINT = 50; //无可分配属性点/无属性点可重置
     ERROR_ATTR_NOT_ENOUGH = 51; //属性点不够
@@ -339,6 +340,11 @@ enum ErrorCode {
     ERROR_PAY_PRODUCTION_MODE = 661; //生产环境
     ERROR_PAY_GOOD_PRICE_FREE = 662; //免费礼包
     ERROR_PAY_NOT_OPEN = 663; //充值功能暂未开放
+    ERROR_PAY_CREDITRECHARGE_NOT_ENOUGH = 664; // 充值钱包资源数量不足
+    ERROR_PAY_CREDITRECHARGE_LIMIT_NOT_ENOUGH = 665; // 充值钱包额度上限不够
+    ERROR_PAY_SPECIALPRIVILEGE_HAS_REWARD = 666; // 已经领取过当天奖励
+    ERROR_PAY_SPECIALPRIVILEGE_UNLOCK = 667; // 为解锁无法购买特权卡
+    ERROR_PAY_PASSCHECK_BUY = 668; // RO通行证已经购买
 
     ERROR_VIP_LEVEL_LOW = 670; //VIP等级不足
     ERROR_DRAWSYSTEM_CONFIG_NOT_FOUND = 690; //抽卡配置找不到
@@ -442,6 +448,12 @@ enum ErrorCode {
 
     ERROR_COMBINE_SERVER_NOT_IN_STATE = 990; //非合服状态
 
+    ERROR_BT_BOLISHOP_REWARED = 1000; // 已经领取过波利商城特权礼包
+    ERROR_BT_BOLISHOP_ROCOIN_NOT_ENOUGH = 1001; // RO币不足
+    ERROR_BT_FIRSTRECHARGE_REWARDED = 1002; //奖励已经领取
+    ERROR_BT_RECHARGE_NO_REWARD = 1003; //条件不满足无法领取奖励
+    ERROR_BT_RECHARGE100_BUY = 1004; //百元大礼包已经购买
+
     //拉新系统
     ERROR_INVITATION_HAS_NUMBER = 2640; //邀请码已经存在
     ERROR_INVITATION_NUM_LIMIT = 2641; //成员数量已达上限

+ 366 - 347
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/logic.pb.go

@@ -160,6 +160,8 @@ type SSWebGMChatMsgNtf struct {
 	TargetUid            uint64           `protobuf:"varint,2,opt,name=target_uid,json=targetUid,proto3" json:"target_uid,omitempty"`
 	Content              *ChatMessageInfo `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
 	MsgType              int32            `protobuf:"varint,4,opt,name=msg_type,json=msgType,proto3" json:"msg_type,omitempty"`
+	ChatSelfName         string           `protobuf:"bytes,5,opt,name=chat_self_name,json=chatSelfName,proto3" json:"chat_self_name,omitempty"`
+	SelectZoneId         int32            `protobuf:"varint,6,opt,name=select_zone_id,json=selectZoneId,proto3" json:"select_zone_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
 	XXX_unrecognized     []byte           `json:"-"`
 	XXX_sizecache        int32            `json:"-"`
@@ -218,6 +220,20 @@ func (m *SSWebGMChatMsgNtf) GetMsgType() int32 {
 	return 0
 }
 
+func (m *SSWebGMChatMsgNtf) GetChatSelfName() string {
+	if m != nil {
+		return m.ChatSelfName
+	}
+	return ""
+}
+
+func (m *SSWebGMChatMsgNtf) GetSelectZoneId() int32 {
+	if m != nil {
+		return m.SelectZoneId
+	}
+	return 0
+}
+
 type SSWebGMAddMailNtf struct {
 	MailInfo             *WebUpdateMailItem `protobuf:"bytes,1,opt,name=mail_info,json=mailInfo,proto3" json:"mail_info,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
@@ -7961,351 +7977,354 @@ func init() {
 func init() { proto.RegisterFile("logic.proto", fileDescriptor_60207fea82c31ca8) }
 
 var fileDescriptor_60207fea82c31ca8 = []byte{
-	// 5524 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x4b, 0x8f, 0x24, 0xd9,
-	0x55, 0xb0, 0xf2, 0x51, 0x95, 0x99, 0x27, 0xeb, 0xd5, 0xe1, 0x9e, 0x99, 0xea, 0xee, 0xe9, 0x57,
-	0x4c, 0x7b, 0xdc, 0xf6, 0xe7, 0x79, 0x7c, 0x33, 0xe3, 0xb6, 0xc7, 0xed, 0xd1, 0xa8, 0xab, 0xaa,
-	0x1f, 0x35, 0xd3, 0xd5, 0x5d, 0x44, 0x76, 0xcf, 0x60, 0x16, 0x84, 0x22, 0x33, 0x6e, 0x66, 0x05,
-	0x15, 0xaf, 0x8e, 0x88, 0xac, 0xee, 0xb4, 0x11, 0x0b, 0x64, 0x21, 0x90, 0xc1, 0x92, 0x8d, 0x64,
-	0xb6, 0x80, 0x18, 0x24, 0x5e, 0x0b, 0x58, 0x18, 0x16, 0xb0, 0x60, 0xe1, 0x7f, 0x00, 0xac, 0x40,
-	0x80, 0x84, 0x90, 0x90, 0x25, 0x56, 0x6c, 0x10, 0x1b, 0x74, 0xce, 0xb9, 0x11, 0x71, 0x23, 0x33,
-	0x22, 0xb3, 0x72, 0x1e, 0x62, 0x56, 0x95, 0x71, 0xe2, 0xc6, 0x79, 0xdf, 0x73, 0xcf, 0x3d, 0xe7,
-	0xde, 0x82, 0xae, 0x1b, 0x8c, 0x9c, 0xc1, 0xab, 0x61, 0x14, 0x24, 0x81, 0xd6, 0x8d, 0x45, 0x74,
-	0x22, 0x22, 0x7a, 0x38, 0xbf, 0x36, 0x08, 0x3c, 0x2f, 0xf0, 0xf9, 0xd5, 0x79, 0x18, 0xc7, 0x22,
-	0xe2, 0xdf, 0xba, 0x0b, 0xdd, 0x0f, 0x45, 0xdf, 0x08, 0x5c, 0xb1, 0xef, 0x0f, 0x03, 0xed, 0xcb,
-	0xd0, 0xec, 0x5b, 0xb1, 0xd8, 0xae, 0x5d, 0xa9, 0x5d, 0xef, 0xbe, 0xf1, 0xdc, 0xab, 0x0a, 0x92,
-	0x57, 0x71, 0xd0, 0x8e, 0x15, 0x0b, 0x83, 0x86, 0x68, 0x6f, 0x40, 0x27, 0x0a, 0x5c, 0x61, 0x1e,
-	0x89, 0x28, 0xd8, 0xae, 0x57, 0x8c, 0xbf, 0x27, 0xa2, 0xc0, 0x68, 0x47, 0xf2, 0x97, 0xfe, 0x6f,
-	0x35, 0x38, 0xf3, 0xa1, 0xe8, 0x3f, 0x0e, 0x6d, 0x2b, 0x11, 0x07, 0x96, 0xe3, 0xee, 0x27, 0xc2,
-	0xd3, 0x36, 0xa0, 0xee, 0xd8, 0x44, 0x72, 0xc5, 0xa8, 0x3b, 0xb6, 0x76, 0x0e, 0xda, 0x63, 0xc7,
-	0x36, 0x5d, 0x27, 0x4e, 0xb6, 0xeb, 0x57, 0x1a, 0xd7, 0x9b, 0x46, 0x6b, 0xec, 0xd8, 0xf7, 0x9d,
-	0x38, 0xd1, 0xce, 0xc2, 0x4a, 0xe2, 0x24, 0xae, 0xd8, 0x6e, 0x5c, 0xa9, 0x5d, 0xef, 0x18, 0xfc,
-	0xa0, 0x6d, 0x43, 0x6b, 0x10, 0xf8, 0x89, 0xf0, 0x93, 0xed, 0x26, 0xc1, 0xd3, 0x47, 0xed, 0x9b,
-	0xd0, 0x8d, 0xc4, 0x53, 0x2b, 0x92, 0xd8, 0x56, 0xae, 0x34, 0xae, 0x77, 0xdf, 0x38, 0x57, 0x60,
-	0xf3, 0x7d, 0x31, 0xf9, 0xc0, 0x72, 0xc7, 0xe2, 0xd1, 0x24, 0x14, 0x06, 0xf0, 0x68, 0xa2, 0x75,
-	0x01, 0x3a, 0xb1, 0xf0, 0x6d, 0x13, 0x79, 0xdd, 0x5e, 0xbd, 0x52, 0xbb, 0xde, 0x34, 0xda, 0x08,
-	0xd8, 0xb3, 0x12, 0x81, 0x2f, 0x3d, 0xcb, 0x71, 0xcd, 0x64, 0x12, 0x8a, 0xed, 0x16, 0xb1, 0xde,
-	0x46, 0x00, 0x62, 0xd1, 0x7f, 0xa7, 0x06, 0x67, 0x7a, 0xbd, 0x0f, 0x45, 0xff, 0xee, 0xc1, 0xee,
-	0x91, 0x95, 0x1c, 0xc4, 0xa3, 0x07, 0xc9, 0x50, 0xdb, 0x82, 0xc6, 0x58, 0xca, 0xd9, 0x34, 0xf0,
-	0xa7, 0x76, 0x11, 0x20, 0xb1, 0xa2, 0x91, 0x48, 0x4c, 0x7c, 0x51, 0xa7, 0x17, 0x1d, 0x86, 0x3c,
-	0x76, 0x6c, 0xed, 0x46, 0x2e, 0x56, 0x83, 0xf4, 0xfb, 0x62, 0x81, 0x71, 0x42, 0x2d, 0xe2, 0xd8,
-	0x1a, 0x91, 0xed, 0x72, 0xa1, 0xcf, 0x41, 0xdb, 0x8b, 0x47, 0xcc, 0x5a, 0x93, 0x58, 0x6b, 0x79,
-	0xf1, 0x88, 0x38, 0x3b, 0xcc, 0x18, 0xbb, 0x65, 0xdb, 0x68, 0x00, 0x64, 0xec, 0xa6, 0x94, 0xc5,
-	0xf1, 0x87, 0x81, 0xb4, 0xfc, 0xa5, 0x02, 0xa5, 0x19, 0x93, 0xb1, 0xac, 0x48, 0x55, 0x1f, 0xc3,
-	0xba, 0xc4, 0xb8, 0x63, 0xf9, 0x88, 0xed, 0x05, 0x68, 0xf5, 0x2d, 0xdf, 0xcc, 0x45, 0x5d, 0xed,
-	0x5b, 0x3e, 0x8a, 0xf3, 0x1c, 0xac, 0x3a, 0xb1, 0xd9, 0xb7, 0x7c, 0x92, 0xb4, 0x6d, 0xac, 0x38,
-	0xf1, 0x8e, 0xe5, 0x23, 0xb7, 0x38, 0x3e, 0x71, 0x3c, 0xb6, 0x6a, 0xd3, 0xc0, 0xef, 0x1f, 0x39,
-	0x9e, 0xc8, 0x5e, 0x29, 0x82, 0xe0, 0x2b, 0x14, 0x24, 0x80, 0x2d, 0x49, 0xf6, 0x41, 0x90, 0x38,
-	0x03, 0x81, 0x94, 0xbf, 0x09, 0x5d, 0x9f, 0x1e, 0x54, 0x49, 0x8a, 0xc6, 0x4e, 0x87, 0x93, 0xc2,
-	0xc0, 0xcf, 0x7e, 0x6b, 0x97, 0xb3, 0x6f, 0x89, 0x11, 0xb6, 0x85, 0x1c, 0x80, 0xbc, 0xe8, 0xaf,
-	0xc3, 0x76, 0xaf, 0xf7, 0xe1, 0xed, 0x9d, 0xbb, 0x07, 0x3d, 0xc2, 0x77, 0x60, 0x39, 0x7e, 0x62,
-	0x39, 0x24, 0xf2, 0x59, 0x58, 0x89, 0x13, 0xf4, 0x12, 0xf6, 0x61, 0x7e, 0xd0, 0xcf, 0x82, 0x26,
-	0x59, 0xbc, 0x3b, 0x76, 0x5c, 0x7b, 0xc7, 0x4a, 0x12, 0x57, 0xe8, 0x76, 0x66, 0x81, 0x3d, 0x41,
-	0xba, 0x2c, 0x77, 0x8d, 0x77, 0x60, 0xdd, 0x16, 0xae, 0xe9, 0x24, 0xc2, 0xcb, 0x27, 0xc2, 0x5c,
-	0xd7, 0xed, 0xda, 0x8c, 0x0f, 0x7d, 0x57, 0x8f, 0x91, 0xca, 0xa1, 0x6b, 0x4d, 0x44, 0xf4, 0xd0,
-	0x77, 0x1d, 0x9f, 0xf4, 0x73, 0x15, 0xd6, 0xf0, 0x6b, 0x14, 0xd2, 0x0f, 0x6c, 0xe6, 0xb6, 0x63,
-	0x74, 0x25, 0xec, 0x41, 0x60, 0x0b, 0xed, 0x26, 0x40, 0x3f, 0x72, 0xc4, 0x90, 0x35, 0x58, 0x2f,
-	0xf1, 0x3a, 0x46, 0xba, 0x83, 0x83, 0x48, 0x89, 0x9d, 0x7e, 0xfa, 0x53, 0x7f, 0x19, 0x05, 0x96,
-	0x44, 0x87, 0xc3, 0x94, 0xea, 0x8c, 0x6c, 0xfa, 0xd7, 0xe0, 0xec, 0x14, 0x73, 0x63, 0xd2, 0xc2,
-	0x45, 0x80, 0x80, 0x9e, 0x4d, 0x7f, 0xec, 0x49, 0x5d, 0x76, 0x82, 0x74, 0x84, 0xfe, 0xc3, 0x1a,
-	0xda, 0x5c, 0xf1, 0xfa, 0x5b, 0x83, 0x63, 0x54, 0xbd, 0x88, 0xa2, 0x20, 0x4a, 0x55, 0x4f, 0x0f,
-	0x38, 0x3b, 0xe5, 0xc4, 0xca, 0xe6, 0x55, 0x9b, 0x01, 0xfb, 0x34, 0xad, 0x3c, 0x46, 0x70, 0xba,
-	0x69, 0x25, 0x07, 0x6b, 0x1a, 0x34, 0x15, 0x4f, 0xa4, 0xdf, 0xfa, 0x4f, 0xa6, 0x79, 0x42, 0x39,
-	0xd2, 0x81, 0xb5, 0x7c, 0xa0, 0x4a, 0xb4, 0xbe, 0x0c, 0xd1, 0x82, 0x24, 0x8d, 0x29, 0x49, 0xde,
-	0x86, 0xd6, 0x30, 0x0a, 0x3c, 0x7c, 0xd5, 0x24, 0xa4, 0x57, 0x66, 0x90, 0x4e, 0x9b, 0x6b, 0x15,
-	0x3f, 0xd8, 0xb7, 0xf5, 0xbf, 0xab, 0xc1, 0x73, 0xbd, 0x1e, 0x39, 0xe6, 0x67, 0xc8, 0xbd, 0xc2,
-	0x60, 0x63, 0x39, 0x06, 0x0b, 0x8b, 0x40, 0xb3, 0xb8, 0x08, 0x9c, 0x83, 0xf6, 0x08, 0x19, 0x47,
-	0xb4, 0x2b, 0x1c, 0x31, 0xe8, 0x79, 0xdf, 0xd6, 0xbf, 0x57, 0x83, 0x17, 0xa4, 0x58, 0x3c, 0xd1,
-	0x15, 0xc1, 0xde, 0x84, 0x56, 0x3c, 0x89, 0x4d, 0x2f, 0x1e, 0x6d, 0xd7, 0x68, 0x32, 0x9d, 0x2f,
-	0x30, 0xd3, 0x9b, 0xc4, 0x89, 0xf0, 0xe4, 0x78, 0x63, 0x35, 0x9e, 0xc4, 0x07, 0xf1, 0xa8, 0x40,
-	0xab, 0x5e, 0xa0, 0x55, 0xe0, 0xb0, 0x51, 0xe0, 0x50, 0xff, 0x0e, 0x3c, 0x5f, 0xe0, 0xe2, 0x51,
-	0x80, 0x8b, 0xe1, 0x67, 0xc1, 0x84, 0x9c, 0x5d, 0x8d, 0x7c, 0x76, 0xfd, 0x67, 0x0d, 0xbe, 0x90,
-	0x4e, 0xaf, 0xdb, 0x7e, 0x82, 0x91, 0x2a, 0x34, 0xc4, 0x13, 0x5a, 0x15, 0xac, 0xd0, 0x54, 0x6c,
-	0xdb, 0xf2, 0xac, 0x10, 0x43, 0x07, 0x3a, 0xd9, 0xc0, 0x75, 0x84, 0xaf, 0x4e, 0x17, 0x06, 0xec,
-	0xdb, 0x33, 0x51, 0xa3, 0x31, 0x1b, 0x35, 0xbe, 0x01, 0x9d, 0xf8, 0x28, 0x78, 0xca, 0x41, 0x83,
-	0x3d, 0xf1, 0x42, 0x49, 0xd0, 0xe8, 0x1d, 0x05, 0x4f, 0xc9, 0xc6, 0xed, 0x58, 0xfe, 0x9a, 0x63,
-	0x4a, 0xed, 0x4b, 0xd0, 0x08, 0x83, 0x98, 0x16, 0xde, 0xe9, 0xcc, 0xe2, 0x30, 0x88, 0x9d, 0xc4,
-	0x09, 0x7c, 0x03, 0x47, 0xe8, 0x5f, 0xca, 0xe5, 0xbd, 0x2f, 0xac, 0x13, 0x71, 0x60, 0x85, 0xe5,
-	0x71, 0xe7, 0xf9, 0x3c, 0xee, 0xdc, 0x0a, 0x1c, 0x43, 0x0c, 0x02, 0xdf, 0x17, 0x83, 0x44, 0xdf,
-	0x46, 0x6b, 0x15, 0x11, 0x18, 0xe2, 0xc9, 0xad, 0xc1, 0xb1, 0xde, 0x87, 0x4e, 0xaf, 0xf7, 0xc0,
-	0xf2, 0x04, 0x2a, 0x50, 0x83, 0xa6, 0x6f, 0x79, 0x69, 0xd8, 0xa4, 0xdf, 0x08, 0xfb, 0x4e, 0xe0,
-	0xf3, 0xac, 0x58, 0x31, 0xe8, 0x77, 0x36, 0x81, 0x1a, 0xca, 0x04, 0x3a, 0x07, 0xed, 0xc0, 0xb5,
-	0x4d, 0xfa, 0x5e, 0xa6, 0x28, 0x81, 0x6b, 0x23, 0x66, 0x7d, 0x3f, 0xa5, 0x21, 0x57, 0x92, 0x92,
-	0x70, 0x96, 0x52, 0xae, 0x17, 0x29, 0x4f, 0x53, 0xd1, 0x7f, 0x0e, 0xe7, 0x74, 0xae, 0xeb, 0xdd,
-	0x23, 0xcb, 0x1f, 0x11, 0xeb, 0x05, 0x03, 0xd5, 0x96, 0x30, 0x90, 0xfe, 0xeb, 0x75, 0x38, 0x57,
-	0xf0, 0xa6, 0xdd, 0x23, 0xcb, 0x75, 0x85, 0xcf, 0x53, 0xea, 0x02, 0x74, 0x04, 0x02, 0x95, 0xd5,
-	0xbe, 0x4d, 0x00, 0x5c, 0xef, 0xe5, 0x92, 0x3a, 0x9c, 0xa8, 0x99, 0x1c, 0x30, 0x88, 0xe6, 0xf1,
-	0xdb, 0x00, 0x43, 0x67, 0x74, 0x94, 0xe4, 0x53, 0x68, 0x7a, 0x3a, 0xdc, 0xc1, 0xd7, 0x69, 0x72,
-	0x6a, 0x74, 0x68, 0x74, 0x1a, 0x02, 0xfa, 0x41, 0x1c, 0x13, 0xdd, 0xa6, 0x4c, 0x1a, 0x82, 0x38,
-	0x46, 0xb2, 0xaf, 0xc0, 0x17, 0x62, 0xe1, 0x0e, 0xcd, 0x01, 0x49, 0x6f, 0x86, 0xae, 0x35, 0x49,
-	0xbd, 0x6b, 0xc5, 0xd8, 0xc2, 0x57, 0xac, 0x17, 0x94, 0x69, 0xdf, 0xd6, 0xae, 0xc3, 0x56, 0x3c,
-	0xc6, 0xe4, 0xd8, 0x24, 0x84, 0xa4, 0xd3, 0x55, 0x1a, 0xbb, 0xc1, 0xf0, 0x9d, 0x20, 0x8e, 0x29,
-	0xe5, 0xf8, 0x76, 0xae, 0x09, 0x72, 0x93, 0x69, 0x4d, 0xb8, 0x08, 0x54, 0x35, 0x41, 0x80, 0xd3,
-	0x68, 0x42, 0xff, 0x76, 0xee, 0x81, 0x19, 0xd6, 0x7b, 0xe4, 0xc5, 0x97, 0xa0, 0x3b, 0x18, 0x47,
-	0xcc, 0xdb, 0x51, 0x98, 0x2e, 0x8a, 0x83, 0x71, 0x84, 0x6c, 0xdd, 0x0b, 0x17, 0xa3, 0x7e, 0x0c,
-	0xe7, 0x67, 0x50, 0x1b, 0x22, 0x1e, 0xbb, 0x09, 0xa2, 0x7f, 0x1e, 0x56, 0x23, 0x7a, 0x90, 0x98,
-	0xe5, 0xd3, 0x62, 0xb4, 0xbf, 0x56, 0x87, 0xb5, 0x5e, 0x4f, 0x49, 0x22, 0xaf, 0xc1, 0x06, 0x25,
-	0x91, 0x83, 0xc0, 0x1f, 0x3a, 0x23, 0x33, 0x4b, 0xe8, 0xd7, 0x10, 0xba, 0x4b, 0xc0, 0x7d, 0xbb,
-	0x98, 0x36, 0xd7, 0x8b, 0x69, 0xf3, 0x74, 0xb2, 0xde, 0x58, 0x26, 0x59, 0x9f, 0x62, 0xb8, 0x39,
-	0xe3, 0x6c, 0x2f, 0xc3, 0x26, 0x51, 0x0e, 0xad, 0xc8, 0xf2, 0xf2, 0xdd, 0xc0, 0x8a, 0xb1, 0x8e,
-	0xe0, 0x43, 0x84, 0x16, 0x77, 0x18, 0xab, 0x15, 0x3b, 0x8c, 0x56, 0x61, 0x87, 0xa1, 0xff, 0x25,
-	0xaf, 0x38, 0x22, 0xd9, 0x0d, 0xbc, 0x50, 0x24, 0x14, 0x97, 0xf6, 0xac, 0xc4, 0xc2, 0x69, 0xf7,
-	0x45, 0xd8, 0x18, 0xe4, 0xd0, 0x5c, 0x27, 0xeb, 0x0a, 0x74, 0xdf, 0xd6, 0xbe, 0x0c, 0x5b, 0xea,
-	0x30, 0x45, 0x37, 0x9b, 0x0a, 0x9c, 0x54, 0xf4, 0x55, 0xd0, 0x9c, 0xd8, 0xf4, 0x83, 0xa7, 0xa6,
-	0xf2, 0x86, 0x62, 0x40, 0xdb, 0xd8, 0x72, 0xe2, 0x07, 0xc1, 0x53, 0x85, 0x0d, 0xed, 0x45, 0x80,
-	0x78, 0xdc, 0x37, 0x1d, 0x9b, 0x12, 0x2a, 0xce, 0x5b, 0xda, 0xf1, 0xb8, 0xbf, 0x6f, 0x63, 0x3e,
-	0xf5, 0x17, 0x15, 0x9c, 0x57, 0xa7, 0x55, 0x77, 0x8b, 0x8c, 0xda, 0x56, 0x62, 0x95, 0xe7, 0x03,
-	0x8a, 0x78, 0x38, 0x71, 0x55, 0x31, 0x90, 0x02, 0xc6, 0x23, 0xc7, 0x0e, 0x5c, 0xc6, 0xd0, 0x28,
-	0x89, 0x47, 0xfb, 0x76, 0xe0, 0xf6, 0x84, 0x15, 0x4b, 0x5d, 0xb6, 0x71, 0x34, 0xfe, 0xd2, 0xff,
-	0xa7, 0x86, 0x53, 0x45, 0x21, 0x60, 0x90, 0x0f, 0x7c, 0x66, 0xda, 0x56, 0x87, 0xb2, 0x2e, 0x65,
-	0xc4, 0x55, 0x91, 0xf4, 0x50, 0xa5, 0xa8, 0x6d, 0xdc, 0x2e, 0xca, 0x51, 0x4d, 0xb2, 0x49, 0x5b,
-	0xf8, 0x36, 0xbf, 0xdd, 0x85, 0x4d, 0xe9, 0xdc, 0x59, 0xd2, 0xc0, 0xbb, 0xd1, 0x0b, 0x95, 0x0e,
-	0x7e, 0xe3, 0x2d, 0x63, 0x9d, 0xbf, 0x79, 0x2c, 0xf3, 0x8a, 0x7f, 0x2c, 0x97, 0x1e, 0x2d, 0x76,
-	0x4a, 0xe9, 0xcb, 0x45, 0xaa, 0x57, 0x88, 0x54, 0xc2, 0x74, 0x63, 0x59, 0xa6, 0x31, 0xc2, 0x26,
-	0x41, 0x62, 0xb9, 0x66, 0x64, 0xf9, 0xc7, 0xe6, 0x20, 0x18, 0xcb, 0x6d, 0xfa, 0x8a, 0xb1, 0x41,
-	0x70, 0xc3, 0xf2, 0x8f, 0x77, 0x11, 0xaa, 0xff, 0x7d, 0x0d, 0x2e, 0x96, 0x88, 0x77, 0xcf, 0x89,
-	0x93, 0x20, 0x9a, 0xa0, 0x8d, 0x31, 0x5a, 0x9b, 0xa5, 0x72, 0x6e, 0xc4, 0xbb, 0x05, 0x41, 0xaf,
-	0xc3, 0x96, 0x98, 0x1e, 0xc9, 0x62, 0x6e, 0x88, 0xe2, 0xc8, 0xd7, 0xe0, 0x6c, 0x11, 0x67, 0xc1,
-	0xce, 0x67, 0x54, 0xbc, 0xac, 0x95, 0xd7, 0xe0, 0xac, 0x28, 0xfb, 0x80, 0x85, 0x3a, 0x23, 0xa6,
-	0x3f, 0xd0, 0xff, 0x76, 0xae, 0x5c, 0x68, 0xbd, 0xdb, 0xb3, 0x8a, 0xe6, 0xf4, 0xf0, 0x62, 0xa5,
-	0xa2, 0x51, 0xb7, 0x25, 0xaa, 0x3e, 0xbd, 0xd0, 0x62, 0x8e, 0xd0, 0xb3, 0x32, 0xfc, 0x59, 0x0d,
-	0x2e, 0x14, 0x64, 0xe0, 0x8a, 0x40, 0x6f, 0x10, 0x44, 0x94, 0x62, 0xcc, 0x6e, 0x61, 0x67, 0x3d,
-	0xb2, 0x5e, 0xe6, 0x91, 0xb8, 0x79, 0x46, 0x24, 0x92, 0x34, 0x3f, 0xe0, 0x02, 0x3f, 0xb4, 0xfc,
-	0xc2, 0x02, 0x8f, 0xcf, 0xb8, 0x9a, 0x5e, 0x83, 0x0d, 0x5c, 0x12, 0x4f, 0x82, 0x44, 0x98, 0xfc,
-	0x25, 0xaf, 0xed, 0x6b, 0x83, 0x71, 0xf4, 0x41, 0x20, 0x59, 0xd2, 0x7f, 0x36, 0x87, 0xdf, 0x25,
-	0xe6, 0xcb, 0x35, 0xd8, 0xf0, 0xc5, 0xb3, 0x04, 0x55, 0x25, 0x89, 0xb1, 0x10, 0x6b, 0x08, 0xdd,
-	0x0d, 0x3c, 0xc2, 0xc7, 0xa5, 0x22, 0x77, 0x48, 0x1e, 0x2e, 0xe5, 0x68, 0x23, 0x00, 0x5d, 0x9b,
-	0xaa, 0x3c, 0x99, 0xff, 0x4b, 0x27, 0xe9, 0x64, 0x9e, 0x8f, 0xaf, 0x63, 0x31, 0x48, 0x99, 0x60,
-	0x51, 0x3a, 0x12, 0xc2, 0x0c, 0xb8, 0x56, 0xac, 0x32, 0xc0, 0xd9, 0xc9, 0x1a, 0x42, 0x53, 0x06,
-	0xf4, 0x9f, 0xd5, 0xa7, 0x02, 0xc3, 0x43, 0x1f, 0x55, 0x51, 0x9d, 0x52, 0x4a, 0x73, 0xd5, 0x73,
-	0x73, 0x5d, 0x86, 0x2e, 0xb3, 0xc9, 0x33, 0x94, 0xa5, 0x60, 0xce, 0x69, 0x76, 0x6a, 0x37, 0xa0,
-	0x43, 0x3a, 0xcf, 0x16, 0xd8, 0xe9, 0xc5, 0xf9, 0x8e, 0xe5, 0xc7, 0x28, 0x12, 0x87, 0x6c, 0x1c,
-	0x4b, 0x4e, 0xf9, 0x26, 0xac, 0xda, 0x22, 0xb1, 0x1c, 0xb7, 0x34, 0xe0, 0xe5, 0x99, 0x27, 0x7d,
-	0x26, 0x87, 0x62, 0x2e, 0x40, 0xc4, 0x78, 0xaf, 0x2b, 0x77, 0x01, 0x73, 0xc8, 0x01, 0x8e, 0x7e,
-	0x44, 0x83, 0x71, 0xc7, 0x92, 0x38, 0x83, 0x63, 0x91, 0x48, 0x51, 0xb8, 0x3c, 0xd7, 0x65, 0x18,
-	0xcb, 0xf2, 0xad, 0x2c, 0xd5, 0xa0, 0x25, 0xa8, 0xbd, 0x38, 0xa8, 0xc9, 0x64, 0x83, 0x16, 0xa1,
-	0x0f, 0xe1, 0xc5, 0x82, 0xb2, 0x7b, 0xc2, 0x1d, 0x22, 0x37, 0xb4, 0xd8, 0x7d, 0x82, 0xb9, 0xa0,
-	0xff, 0xf2, 0x1c, 0xc4, 0xd5, 0xcb, 0xf2, 0xac, 0x2d, 0xdf, 0xa2, 0xd9, 0x53, 0x9d, 0x46, 0x21,
-	0x4e, 0xf4, 0x0f, 0x52, 0x1d, 0x4e, 0x2c, 0x5a, 0x5d, 0x46, 0xb0, 0x5d, 0xa0, 0x8e, 0x23, 0x50,
-	0xc1, 0xe5, 0x22, 0x69, 0xd0, 0x0c, 0xd3, 0x82, 0xc0, 0x8a, 0x41, 0xbf, 0x4b, 0xc4, 0x6c, 0x94,
-	0x89, 0xf9, 0x51, 0xad, 0x82, 0xd2, 0x32, 0x32, 0xa6, 0xf4, 0x1b, 0x0a, 0xfd, 0x1b, 0xd0, 0xa1,
-	0x45, 0x86, 0x8c, 0xba, 0xd8, 0x45, 0x23, 0xf9, 0x4b, 0x96, 0x26, 0x85, 0xcf, 0xf3, 0x8f, 0x4a,
-	0x93, 0xb7, 0x7d, 0x5b, 0xf7, 0xe0, 0x52, 0x81, 0x4d, 0xfa, 0x9a, 0xf3, 0x8d, 0x4f, 0xa8, 0x96,
-	0x66, 0x99, 0x5a, 0xfe, 0xb8, 0x36, 0x97, 0xde, 0x27, 0x55, 0xce, 0xd7, 0xa0, 0x83, 0x7a, 0x51,
-	0xe7, 0xef, 0xf6, 0x8c, 0x72, 0x76, 0x82, 0x67, 0xac, 0x1b, 0x1c, 0x4a, 0xd3, 0xb7, 0x42, 0x37,
-	0x3f, 0x9e, 0x5e, 0xd3, 0xf0, 0xeb, 0xbb, 0x22, 0xc9, 0xf3, 0xb1, 0x59, 0xdd, 0x9c, 0x03, 0x4a,
-	0xe4, 0x94, 0x6a, 0x77, 0x0b, 0x9f, 0x31, 0xa8, 0x5f, 0x85, 0xb5, 0x34, 0xf7, 0x17, 0x27, 0xc2,
-	0x95, 0x8c, 0xcb, 0x49, 0x7a, 0x1f, 0x41, 0xa7, 0xd5, 0xe2, 0x9f, 0xcc, 0x65, 0x6c, 0x19, 0x25,
-	0xaa, 0xec, 0x36, 0xe6, 0xb3, 0xdb, 0x9c, 0x65, 0xf7, 0x1a, 0x6c, 0xd0, 0xd7, 0xfd, 0xe0, 0x99,
-	0x8c, 0x43, 0x72, 0x99, 0x42, 0xe8, 0x4e, 0xf0, 0x8c, 0x53, 0x9e, 0x10, 0x2e, 0x17, 0x98, 0xbd,
-	0x65, 0xdb, 0xfb, 0xfc, 0x9e, 0x02, 0x7b, 0x79, 0x71, 0x38, 0x5b, 0x32, 0xeb, 0xea, 0x92, 0x79,
-	0xca, 0xc9, 0xf7, 0x5f, 0x35, 0xb8, 0x52, 0xa6, 0x9f, 0x5b, 0xae, 0xbb, 0x74, 0x2e, 0xbd, 0x5c,
-	0x36, 0x59, 0x96, 0x79, 0x37, 0xca, 0x33, 0xef, 0x37, 0xa1, 0xa9, 0xcc, 0xe1, 0xcb, 0xa5, 0xc1,
-	0xcb, 0xc8, 0x02, 0xb2, 0x41, 0x83, 0x71, 0x15, 0x76, 0x62, 0x73, 0xe8, 0xf8, 0x4e, 0x7c, 0x24,
-	0x9d, 0xb5, 0xed, 0xc4, 0x77, 0xe8, 0x59, 0xff, 0xd3, 0x45, 0x62, 0x7f, 0x66, 0x49, 0x74, 0x2a,
-	0x4b, 0x63, 0x09, 0x59, 0xf4, 0x31, 0x5c, 0x2d, 0x70, 0x7b, 0x57, 0xc8, 0x4a, 0xe9, 0xfc, 0xa0,
-	0xfc, 0x02, 0xb4, 0x22, 0xf1, 0x44, 0x99, 0x60, 0xab, 0x91, 0x78, 0xf2, 0xb8, 0x74, 0x01, 0x2a,
-	0x75, 0x8e, 0xdf, 0xae, 0x2d, 0xa2, 0x5b, 0x3d, 0x81, 0xde, 0x95, 0x0e, 0x9f, 0x47, 0xe0, 0xfa,
-	0xa2, 0x55, 0x9b, 0xe6, 0x42, 0xfa, 0xa4, 0x32, 0xdf, 0x50, 0x99, 0xd7, 0x8f, 0x60, 0xa3, 0xd7,
-	0xbb, 0x13, 0x39, 0xc2, 0xb7, 0x6f, 0xd9, 0xe4, 0x9f, 0xef, 0x40, 0x9b, 0x0a, 0xcb, 0xa9, 0xf8,
-	0xdd, 0x37, 0xf4, 0xe9, 0x1d, 0xa8, 0x17, 0xf8, 0xd3, 0xb5, 0x65, 0x2a, 0x46, 0x3f, 0x66, 0x35,
-	0x59, 0xb6, 0xad, 0xaa, 0xc9, 0xb2, 0x31, 0x89, 0xd6, 0x7f, 0xa5, 0x40, 0xa9, 0x5a, 0xd6, 0x73,
-	0x0a, 0x7d, 0x19, 0xc9, 0x52, 0xdc, 0x37, 0x73, 0xdc, 0x8d, 0x53, 0x73, 0x96, 0xd2, 0xdf, 0xcb,
-	0xe9, 0xef, 0x09, 0x57, 0x96, 0x6d, 0x0b, 0x92, 0x36, 0x0b, 0x52, 0xd8, 0x42, 0x8d, 0xa6, 0xab,
-	0xb6, 0xc0, 0xe8, 0xa4, 0xff, 0x42, 0x01, 0xcb, 0xc7, 0x92, 0x42, 0xc1, 0xdd, 0x28, 0xe0, 0x7e,
-	0x0f, 0xb6, 0x52, 0xdc, 0x3b, 0xae, 0x35, 0x38, 0xc6, 0x08, 0x35, 0x87, 0xc7, 0x0b, 0xd0, 0xe9,
-	0xe3, 0x30, 0x85, 0x46, 0x9b, 0x00, 0x88, 0xeb, 0xc7, 0xd4, 0x3d, 0xe1, 0x1e, 0x50, 0x2f, 0xb1,
-	0x12, 0x21, 0x05, 0x0e, 0xa3, 0xa0, 0x50, 0xa7, 0x0e, 0xa3, 0x20, 0xad, 0x53, 0xe3, 0xe2, 0x55,
-	0xa8, 0x1e, 0x21, 0x80, 0x5e, 0xbe, 0x07, 0x9b, 0x79, 0xeb, 0x4a, 0x4d, 0x7d, 0x4e, 0xa3, 0xff,
-	0xf5, 0xac, 0x8b, 0x45, 0x99, 0xd0, 0x0c, 0x63, 0xa8, 0xc3, 0xcf, 0x03, 0x63, 0xfd, 0xac, 0xbd,
-	0xf1, 0xd0, 0x27, 0x07, 0x4d, 0x9c, 0x13, 0x27, 0x99, 0x94, 0x2f, 0x13, 0x73, 0xda, 0x06, 0xe7,
-	0xa1, 0x6d, 0xc9, 0x6f, 0xd3, 0xfd, 0x4a, 0xfa, 0xac, 0xdb, 0x59, 0x67, 0x68, 0x27, 0x88, 0x63,
-	0x43, 0x0c, 0x23, 0x11, 0x1f, 0x95, 0x53, 0x78, 0x1b, 0xda, 0x91, 0x18, 0xa6, 0x2d, 0xd3, 0xc6,
-	0x4c, 0xe3, 0x38, 0xc3, 0xf2, 0xc8, 0x19, 0x1c, 0x3f, 0x72, 0x3c, 0x61, 0xb4, 0x22, 0x31, 0xa4,
-	0x7e, 0xea, 0x5e, 0x46, 0x65, 0xd6, 0xfe, 0x19, 0xd7, 0xb5, 0xd2, 0x66, 0x47, 0xbe, 0x44, 0xeb,
-	0xbf, 0x58, 0x86, 0x45, 0x1a, 0xeb, 0xd4, 0x58, 0xb4, 0x6d, 0x68, 0x05, 0xdc, 0xb0, 0x4c, 0xd7,
-	0x79, 0xf9, 0xa8, 0x1b, 0x70, 0x5e, 0xe2, 0x3f, 0x10, 0x5e, 0x3f, 0xed, 0x57, 0xa6, 0x79, 0xfe,
-	0x1c, 0x22, 0xd5, 0x67, 0x18, 0xf4, 0xa0, 0x12, 0xe7, 0x02, 0xc6, 0x6f, 0x4c, 0xe1, 0x5c, 0xb0,
-	0x63, 0xc9, 0x08, 0x1e, 0xc3, 0xd9, 0xb4, 0x1b, 0x65, 0x79, 0x82, 0xab, 0xdf, 0x72, 0xda, 0x2e,
-	0xcf, 0x3e, 0xee, 0x57, 0xf9, 0x2b, 0x6a, 0x49, 0x70, 0x37, 0xa8, 0x33, 0x4a, 0xb1, 0xeb, 0xbf,
-	0x59, 0x43, 0x6a, 0x2c, 0x13, 0xd1, 0xac, 0xde, 0x14, 0xcd, 0xf1, 0xcf, 0x8b, 0x00, 0x4e, 0x6c,
-	0x46, 0xc2, 0x0d, 0x46, 0x4e, 0x5a, 0xdf, 0xec, 0x38, 0xb1, 0xc1, 0x00, 0xed, 0x3a, 0x6c, 0xd9,
-	0xc2, 0x0b, 0x7c, 0x93, 0xfb, 0x07, 0xe4, 0x7f, 0x5c, 0x25, 0xd8, 0x20, 0x38, 0xf5, 0x0d, 0xc8,
-	0xcd, 0x7e, 0x54, 0x2f, 0x61, 0x07, 0xf5, 0xfc, 0xba, 0x5c, 0x95, 0x6b, 0x25, 0xf5, 0xcb, 0xac,
-	0x73, 0x37, 0x9c, 0x14, 0xd3, 0x0b, 0x2a, 0x05, 0xfc, 0x52, 0xe0, 0xf0, 0x11, 0x86, 0x86, 0xd1,
-	0x46, 0xc0, 0x7b, 0x81, 0xe3, 0x63, 0xc2, 0xdd, 0x0f, 0xe2, 0x98, 0x66, 0xf6, 0xba, 0x41, 0xbf,
-	0xb5, 0xaf, 0xc3, 0xaa, 0x17, 0x8f, 0x0c, 0x31, 0x28, 0x4d, 0x63, 0x64, 0x93, 0x6f, 0x97, 0xeb,
-	0xc8, 0xbc, 0x0a, 0xf0, 0x70, 0x34, 0x34, 0xb1, 0xd0, 0x9b, 0xc4, 0x94, 0xc7, 0xcc, 0xef, 0x12,
-	0x66, 0x63, 0xb5, 0x97, 0x61, 0xd3, 0xf1, 0x4d, 0xd6, 0x69, 0x9f, 0x8e, 0x1b, 0xd0, 0xc6, 0xb9,
-	0x6d, 0xac, 0x3b, 0xbe, 0x7a, 0x06, 0xe1, 0x7b, 0xd4, 0xd4, 0x51, 0x20, 0x4a, 0x67, 0x80, 0x6a,
-	0x6c, 0x2a, 0x0a, 0xd3, 0xb1, 0x9f, 0xa5, 0x35, 0xb6, 0x51, 0xfe, 0xc9, 0xbe, 0xfd, 0x0c, 0x17,
-	0x89, 0x30, 0x88, 0x69, 0x00, 0x07, 0xbd, 0xd5, 0x30, 0x88, 0xf1, 0xc5, 0x4d, 0x68, 0xf5, 0xe5,
-	0x19, 0x82, 0x25, 0xd6, 0xc0, 0x3e, 0xfd, 0xd5, 0x74, 0x58, 0xa7, 0x62, 0x4a, 0xe6, 0x1b, 0x6c,
-	0xd9, 0x2e, 0x02, 0xef, 0x4a, 0xff, 0x78, 0x01, 0x5a, 0x83, 0x71, 0x64, 0x46, 0x5e, 0x5f, 0xb6,
-	0x0d, 0x57, 0x07, 0xe3, 0xc8, 0xf0, 0xfa, 0xda, 0x57, 0xe0, 0x4c, 0x7f, 0x3c, 0x31, 0x07, 0xa9,
-	0x40, 0x54, 0xf9, 0xe6, 0x8a, 0xc9, 0x66, 0x7f, 0x3c, 0xc9, 0x7b, 0x36, 0x63, 0x4f, 0xff, 0xef,
-	0x46, 0x95, 0x1a, 0xaa, 0x97, 0xcc, 0x32, 0xe5, 0xd4, 0x17, 0x29, 0xa7, 0x51, 0x50, 0x4e, 0xd6,
-	0xf6, 0x52, 0xda, 0xa5, 0x8b, 0xdb, 0x5e, 0xa4, 0x9a, 0xf7, 0x40, 0xcb, 0x25, 0x43, 0xec, 0xe4,
-	0xc2, 0x2b, 0x55, 0x2e, 0x7c, 0x48, 0x04, 0xc9, 0x85, 0xb7, 0xb2, 0xef, 0x0e, 0x83, 0x98, 0xb2,
-	0xad, 0x73, 0xd0, 0x1e, 0x04, 0x71, 0x42, 0x3a, 0xe4, 0xd3, 0x4d, 0x2d, 0x7c, 0x46, 0x25, 0xde,
-	0x82, 0x4d, 0xe6, 0xb0, 0x3f, 0x1e, 0x0e, 0x39, 0x08, 0xb4, 0x16, 0x35, 0x63, 0xd6, 0xe9, 0x8b,
-	0x9d, 0xf1, 0x70, 0x48, 0x51, 0xe2, 0x5d, 0xd8, 0x20, 0x23, 0xe6, 0x18, 0xda, 0x8b, 0x30, 0xac,
-	0xe1, 0x07, 0x19, 0x82, 0x77, 0x64, 0x49, 0x8d, 0x24, 0xec, 0x94, 0x1c, 0x1e, 0x50, 0xec, 0xd6,
-	0x13, 0xee, 0x90, 0x77, 0xad, 0xb1, 0xfc, 0xa5, 0x5d, 0x82, 0xee, 0x38, 0x16, 0x26, 0xfa, 0x02,
-	0x7a, 0x00, 0x70, 0x04, 0x19, 0xc7, 0x62, 0x67, 0x3c, 0x41, 0xdb, 0xdf, 0xce, 0x3a, 0xf4, 0xd2,
-	0xf4, 0x87, 0xd5, 0x49, 0x75, 0x75, 0x9c, 0xc2, 0xcd, 0x66, 0x19, 0x1e, 0xf4, 0x9f, 0x37, 0xa1,
-	0x35, 0x08, 0xd5, 0x52, 0xee, 0xf9, 0x2a, 0xf6, 0x77, 0x0f, 0x8d, 0xd5, 0x41, 0x98, 0x76, 0xa9,
-	0x14, 0xdf, 0xa7, 0x82, 0xa1, 0x2c, 0x14, 0x65, 0xde, 0x4f, 0x45, 0xc3, 0xe2, 0x1c, 0x19, 0x84,
-	0xe9, 0x7e, 0x39, 0x1b, 0xb5, 0x1b, 0xa6, 0x82, 0x40, 0xbe, 0x5a, 0xbe, 0x32, 0xed, 0xef, 0xb8,
-	0x05, 0x3d, 0xb4, 0xa2, 0xa4, 0x54, 0x6e, 0xfd, 0xfb, 0xcd, 0xaa, 0xf1, 0xd5, 0xf3, 0xe3, 0x3c,
-	0xb4, 0x07, 0x47, 0x96, 0x17, 0x3a, 0x81, 0x9f, 0x9d, 0x24, 0x90, 0xcf, 0xe4, 0x71, 0xe3, 0xc8,
-	0x8c, 0x93, 0xac, 0x30, 0x81, 0x93, 0xb8, 0x97, 0x8c, 0x84, 0xf6, 0x0a, 0x68, 0x49, 0x30, 0x8e,
-	0x70, 0x49, 0xf1, 0x13, 0x33, 0x8c, 0x44, 0x68, 0x45, 0x69, 0x48, 0x3f, 0x93, 0xbf, 0x39, 0xe4,
-	0x17, 0xb8, 0x93, 0x54, 0x86, 0xf7, 0x05, 0x2e, 0x12, 0x1c, 0x07, 0x36, 0x73, 0xf8, 0x0e, 0x82,
-	0x71, 0xe3, 0xa3, 0x0c, 0x15, 0xbe, 0x2d, 0x9d, 0x7d, 0x3d, 0x87, 0xde, 0xf6, 0x6d, 0x64, 0x20,
-	0x16, 0x9e, 0x33, 0x74, 0x7c, 0xcb, 0x8d, 0x33, 0x06, 0x5a, 0xcc, 0x40, 0xfe, 0x46, 0x61, 0x40,
-	0x19, 0xce, 0x0c, 0xb4, 0x99, 0x81, 0x1c, 0x9e, 0x31, 0xa0, 0x0c, 0x45, 0x06, 0x3a, 0xcc, 0x40,
-	0x0e, 0x45, 0x06, 0xbe, 0x08, 0x1b, 0x53, 0xc4, 0xd9, 0x70, 0xeb, 0x45, 0xc2, 0x57, 0x61, 0xad,
-	0x40, 0xb4, 0xcb, 0xb1, 0x51, 0x25, 0x78, 0x11, 0xe3, 0x4b, 0x46, 0x6c, 0x8d, 0x4f, 0x15, 0xe6,
-	0x84, 0x6e, 0xc0, 0x4a, 0x62, 0xf5, 0x5d, 0xb1, 0xbd, 0x5e, 0x35, 0xa9, 0x32, 0x33, 0x3f, 0xc2,
-	0x71, 0x06, 0x0f, 0xd7, 0x1f, 0x67, 0xa9, 0x27, 0x3b, 0xc3, 0xc1, 0x49, 0x58, 0xbd, 0xb4, 0x9f,
-	0x3a, 0x4c, 0xea, 0xff, 0x5c, 0x2b, 0xc7, 0xfb, 0x69, 0x84, 0xe0, 0x1b, 0x59, 0xe5, 0xb9, 0x51,
-	0x99, 0x9c, 0xd2, 0xe0, 0x3d, 0x1a, 0xa5, 0x14, 0x9f, 0x81, 0x2a, 0x36, 0x66, 0x68, 0x45, 0x49,
-	0xe9, 0x81, 0x16, 0x52, 0x11, 0xa9, 0x87, 0xe2, 0x4e, 0x67, 0x90, 0xaa, 0x2c, 0xd5, 0xc5, 0x4a,
-	0x3e, 0x8d, 0x7e, 0xab, 0x36, 0x35, 0x8d, 0x0e, 0x4e, 0x42, 0x49, 0xb0, 0x2a, 0xdc, 0x78, 0x27,
-	0xa1, 0xba, 0x97, 0x68, 0x79, 0x27, 0x7c, 0x50, 0xe7, 0x1c, 0xe6, 0xdb, 0x4f, 0xd4, 0x36, 0x03,
-	0xee, 0x98, 0x29, 0x22, 0x94, 0x69, 0xa5, 0x59, 0xaa, 0xf1, 0xbf, 0xae, 0xe4, 0x07, 0x75, 0xbe,
-	0x14, 0x3f, 0xaf, 0x40, 0xc3, 0x3b, 0x09, 0x4b, 0x7b, 0x82, 0x45, 0xfc, 0x06, 0x8e, 0x2b, 0xb0,
-	0xdf, 0x5c, 0xcc, 0xfe, 0x4a, 0x29, 0xfb, 0xb7, 0xe1, 0x42, 0x81, 0xfb, 0x5e, 0x82, 0x59, 0x54,
-	0x96, 0xd4, 0x96, 0xe4, 0x40, 0xb5, 0xb2, 0x1c, 0xe8, 0x47, 0xd3, 0x91, 0x9b, 0x4b, 0x30, 0x88,
-	0xe2, 0x72, 0xd6, 0x1c, 0x50, 0xf6, 0x7a, 0xb2, 0xfe, 0x9f, 0x9a, 0xa1, 0x2a, 0x3b, 0xbe, 0x00,
-	0x9c, 0x0b, 0xe3, 0x2c, 0x4e, 0xcf, 0xeb, 0x11, 0xe0, 0x30, 0x12, 0x88, 0x58, 0x06, 0xf6, 0x60,
-	0xec, 0xa7, 0xe5, 0x4b, 0xce, 0xa6, 0x0d, 0x84, 0xe8, 0xdf, 0x85, 0xcb, 0x05, 0x9e, 0x64, 0xde,
-	0x3a, 0xbf, 0xaa, 0xaa, 0xc3, 0x3a, 0xe5, 0x42, 0xcc, 0x72, 0x56, 0x88, 0xea, 0x62, 0x46, 0x44,
-	0xb0, 0x7d, 0x1a, 0x83, 0x36, 0xcc, 0xc7, 0xc8, 0xf5, 0xc2, 0x3b, 0x09, 0xd3, 0x31, 0xfa, 0xfb,
-	0x70, 0x66, 0x46, 0x1d, 0xb2, 0xfa, 0x8b, 0xc2, 0xd4, 0xd2, 0xea, 0xaf, 0x94, 0x44, 0x55, 0x51,
-	0x7d, 0x5a, 0x45, 0xfa, 0x1f, 0xd6, 0xe7, 0x8b, 0x82, 0xae, 0x76, 0x0b, 0xd6, 0x48, 0x11, 0x92,
-	0x2d, 0xb9, 0x4c, 0x56, 0x4e, 0x52, 0xa9, 0x83, 0x2e, 0x7d, 0x23, 0xd9, 0xbb, 0x0e, 0x5b, 0x74,
-	0x3c, 0x86, 0x9d, 0x86, 0xd5, 0x2a, 0x63, 0xc1, 0x60, 0x1c, 0xc9, 0xef, 0x10, 0xaa, 0x7d, 0x1d,
-	0x3a, 0x54, 0x26, 0x35, 0x73, 0x87, 0x2d, 0x2e, 0xc8, 0x07, 0x99, 0x2a, 0xf8, 0x04, 0x14, 0x0e,
-	0x3e, 0x38, 0x09, 0x31, 0x5d, 0x3b, 0x76, 0x5c, 0x57, 0x44, 0xf4, 0x65, 0x73, 0xe1, 0x97, 0x1d,
-	0x1e, 0x8d, 0x9f, 0x4a, 0xcb, 0x90, 0xe6, 0x89, 0xb5, 0x95, 0xcc, 0x32, 0xf8, 0x0d, 0x99, 0xfc,
-	0x3c, 0x6c, 0x4f, 0x25, 0x10, 0x99, 0x2f, 0xeb, 0x47, 0xf0, 0x62, 0xe1, 0x1d, 0x9d, 0xda, 0xe6,
-	0x10, 0x7d, 0xb8, 0x60, 0xff, 0x79, 0x01, 0x3a, 0x96, 0x6d, 0x2b, 0x2d, 0xcb, 0x75, 0xa3, 0x6d,
-	0xd9, 0x36, 0xb7, 0x2b, 0x67, 0x0f, 0x0d, 0xfe, 0x6a, 0x6d, 0xca, 0x5c, 0x39, 0xa9, 0xac, 0xc3,
-	0x7b, 0x15, 0xd6, 0xd2, 0xc9, 0xe9, 0xdb, 0x22, 0xdd, 0x13, 0x74, 0x19, 0xb6, 0x8f, 0xa0, 0xdc,
-	0xc1, 0x79, 0x44, 0x5d, 0x71, 0x70, 0x1e, 0x50, 0x60, 0x2b, 0x2d, 0x3c, 0x48, 0xb6, 0xf4, 0x9b,
-	0x70, 0x69, 0x8a, 0x07, 0x56, 0xc5, 0x7d, 0x61, 0xd9, 0x22, 0x9a, 0x2f, 0xb0, 0xfe, 0xfe, 0x8c,
-	0xae, 0xde, 0x77, 0x06, 0xc7, 0xbc, 0xc3, 0x5e, 0xba, 0xac, 0x70, 0x19, 0x2e, 0x4e, 0x21, 0xdb,
-	0xc3, 0x6d, 0xe5, 0x9e, 0xe5, 0x59, 0xb4, 0x47, 0xd2, 0xbf, 0x91, 0xed, 0xe1, 0xd3, 0x01, 0x0f,
-	0x43, 0x11, 0x59, 0x49, 0x40, 0xb4, 0xce, 0x43, 0x3b, 0x90, 0x8f, 0x52, 0x4b, 0xd9, 0xb3, 0x2e,
-	0x60, 0xbd, 0xe0, 0x2f, 0x25, 0x13, 0x7a, 0xd1, 0xe4, 0x9a, 0xb1, 0x44, 0x63, 0xc6, 0x12, 0xf2,
-	0xc8, 0x41, 0x21, 0x47, 0xf6, 0xed, 0x8c, 0x30, 0x32, 0xf9, 0x55, 0xd0, 0x0a, 0x11, 0x97, 0x3d,
-	0x94, 0xd9, 0xdd, 0x52, 0x62, 0x6e, 0xc9, 0xf4, 0xa9, 0x7f, 0xec, 0xe9, 0xd3, 0x58, 0x62, 0xfa,
-	0x2c, 0x90, 0x01, 0x23, 0xc8, 0xe7, 0x5f, 0x86, 0x3f, 0x9f, 0x4e, 0x6f, 0x76, 0xc6, 0x13, 0xdc,
-	0xe3, 0x2c, 0xb7, 0xd1, 0xbe, 0x02, 0x6b, 0xb4, 0x91, 0x52, 0x17, 0x9d, 0x15, 0x03, 0x10, 0xb6,
-	0xcf, 0xeb, 0xce, 0xcc, 0x94, 0x2e, 0x38, 0x7c, 0x73, 0xa6, 0xba, 0xc2, 0xad, 0xfe, 0x51, 0xe0,
-	0xa6, 0xa9, 0x0a, 0x9f, 0x48, 0xb8, 0x1b, 0xb8, 0xb6, 0xfe, 0x2f, 0x15, 0x3c, 0x2f, 0xd9, 0x81,
-	0xf6, 0x85, 0xc0, 0xd0, 0x1e, 0x2f, 0x3e, 0xc8, 0xd7, 0xc2, 0xa1, 0x86, 0x88, 0x8b, 0x9b, 0xbe,
-	0xe6, 0xd2, 0x9b, 0xbe, 0xd3, 0x27, 0x11, 0xdb, 0xa5, 0x8b, 0x3f, 0xce, 0xec, 0x93, 0xac, 0x58,
-	0xb6, 0x97, 0x55, 0x92, 0x64, 0xfc, 0xe0, 0x92, 0x53, 0xd6, 0x14, 0x6a, 0xd1, 0xf3, 0xbe, 0xad,
-	0x3d, 0x0f, 0xab, 0x36, 0x45, 0x86, 0xac, 0x0c, 0x4f, 0x4f, 0x05, 0x0b, 0x34, 0x4a, 0x43, 0x4e,
-	0x33, 0x0f, 0x39, 0x3f, 0xad, 0x97, 0x10, 0x9e, 0x5b, 0xba, 0xcf, 0xd8, 0xa9, 0x17, 0xd9, 0xb9,
-	0x0c, 0x5d, 0xde, 0xbd, 0x17, 0x0e, 0x72, 0x10, 0x88, 0x0f, 0x3f, 0x5c, 0x85, 0x35, 0x36, 0xbf,
-	0xe4, 0x5a, 0xd6, 0x57, 0x08, 0xc6, 0x21, 0x6e, 0x36, 0x8b, 0xe5, 0x8e, 0x27, 0x95, 0x82, 0xb9,
-	0xdc, 0xc6, 0xbb, 0xa8, 0xae, 0x84, 0xd1, 0x75, 0x9d, 0xeb, 0xb0, 0x35, 0x8c, 0x84, 0x30, 0x55,
-	0xea, 0x7c, 0xf6, 0x62, 0x03, 0xe1, 0x77, 0x72, 0x0e, 0x8a, 0x35, 0xc4, 0xce, 0x54, 0x0d, 0x71,
-	0xa6, 0xbb, 0x0a, 0xb3, 0xdd, 0x55, 0xa5, 0x57, 0xd4, 0x2d, 0xf4, 0x8a, 0x9e, 0x66, 0x8b, 0x08,
-	0xa9, 0x71, 0x2a, 0xed, 0x90, 0x65, 0xcf, 0x2a, 0x4b, 0x4e, 0x9d, 0x40, 0xad, 0x2f, 0x71, 0x02,
-	0x55, 0xff, 0x61, 0x7e, 0xa3, 0x82, 0x28, 0x9f, 0x8a, 0xe0, 0x65, 0xe8, 0xf2, 0x2b, 0x16, 0x54,
-	0x86, 0x7a, 0x02, 0xb1, 0x9c, 0xd3, 0xb6, 0x6a, 0xcc, 0xda, 0xaa, 0xfa, 0xa6, 0x84, 0xfe, 0x11,
-	0xdd, 0x05, 0xb8, 0xfd, 0x2c, 0x14, 0x36, 0x75, 0xf3, 0xee, 0x09, 0x97, 0xee, 0x02, 0xe8, 0xb0,
-	0xde, 0x17, 0xe6, 0x91, 0x70, 0x43, 0x61, 0x2b, 0x5d, 0x9b, 0x6e, 0x5f, 0xdc, 0x23, 0xd8, 0x63,
-	0xba, 0x81, 0x54, 0x6c, 0x0e, 0x2d, 0xd9, 0x62, 0xfb, 0x7f, 0xa0, 0x21, 0x7e, 0xd3, 0x8b, 0x47,
-	0x26, 0x5d, 0xa3, 0x53, 0x2e, 0x78, 0x6d, 0xe2, 0x9b, 0x83, 0x78, 0x84, 0xf1, 0x9c, 0xaa, 0xb4,
-	0x3f, 0x28, 0xe1, 0xb3, 0xda, 0xf7, 0x67, 0xb8, 0xaf, 0xcf, 0xe7, 0xbe, 0xb1, 0x34, 0xf7, 0xfa,
-	0x4d, 0xcc, 0x26, 0x72, 0x7e, 0x38, 0x07, 0xb2, 0xfc, 0x63, 0x3a, 0x74, 0x27, 0x9e, 0xd0, 0x81,
-	0xaf, 0xc4, 0x8a, 0x12, 0x25, 0x66, 0xb7, 0x09, 0x80, 0xc1, 0xe5, 0x1f, 0x6a, 0x73, 0xbe, 0xae,
-	0x16, 0xeb, 0x5b, 0xf2, 0xf0, 0x8a, 0xe2, 0x7a, 0xc5, 0x8a, 0x71, 0x8e, 0x11, 0x91, 0xf1, 0x1a,
-	0x15, 0x49, 0xb4, 0xda, 0x6d, 0x59, 0x70, 0x23, 0x14, 0x4a, 0xe5, 0x75, 0x21, 0x8a, 0xb5, 0xf4,
-	0xa0, 0x1a, 0x65, 0x23, 0x05, 0xc1, 0x9a, 0x53, 0x82, 0xbd, 0x83, 0x73, 0x2b, 0x47, 0xa1, 0x9e,
-	0x00, 0xb4, 0xfc, 0x63, 0x79, 0x0c, 0x9e, 0x4a, 0x3c, 0x94, 0xdf, 0xd5, 0x38, 0xed, 0x1c, 0x8c,
-	0x23, 0xce, 0xef, 0x7e, 0x97, 0x36, 0x9e, 0xfb, 0xfe, 0x89, 0x93, 0x58, 0xf8, 0xfd, 0x8e, 0x78,
-	0x14, 0xe4, 0x09, 0xda, 0x4b, 0xb0, 0xee, 0x59, 0x71, 0x22, 0x22, 0xd3, 0x1f, 0x23, 0x4c, 0xfa,
-	0xe4, 0x1a, 0x03, 0x1f, 0x10, 0x0c, 0x03, 0x87, 0x1c, 0xa4, 0xdc, 0x98, 0x64, 0x08, 0x5a, 0xfd,
-	0x5d, 0xa0, 0xc5, 0x40, 0xb1, 0xfa, 0xb5, 0xe2, 0xb1, 0xe2, 0x8c, 0x36, 0xd3, 0xfd, 0xc0, 0x72,
-	0xf9, 0x08, 0x14, 0x7e, 0x85, 0x76, 0xff, 0x49, 0x25, 0x8b, 0xd5, 0x76, 0x9b, 0x61, 0xbc, 0xbe,
-	0x90, 0xf1, 0xc6, 0x3c, 0xc6, 0x9b, 0x1f, 0x87, 0xf1, 0xdf, 0xa7, 0xe3, 0x8e, 0x65, 0x8c, 0xef,
-	0xed, 0x7c, 0x6e, 0xb4, 0xfb, 0x57, 0x73, 0x98, 0xfc, 0x9c, 0xeb, 0xd7, 0xc2, 0x6d, 0x5a, 0x3e,
-	0x6a, 0x4f, 0xb8, 0x3c, 0x50, 0xde, 0x5b, 0x54, 0x68, 0xd7, 0xa6, 0x69, 0xbf, 0x0c, 0x9b, 0xb6,
-	0x70, 0x4d, 0x8f, 0xc6, 0xab, 0x45, 0x83, 0x75, 0x3b, 0xc5, 0x42, 0xc1, 0xfa, 0x07, 0x74, 0xf6,
-	0x62, 0x9a, 0x13, 0x79, 0x8d, 0x8d, 0xb0, 0xc9, 0x3c, 0x24, 0x93, 0x44, 0xee, 0x63, 0x24, 0x8f,
-	0x8b, 0xcc, 0xf7, 0x1a, 0xac, 0xd0, 0xe5, 0x07, 0x69, 0xbb, 0x39, 0xcb, 0x1a, 0x8f, 0xd3, 0xff,
-	0x60, 0x21, 0x43, 0x73, 0xf3, 0x93, 0x8c, 0xcd, 0xfa, 0x3c, 0x36, 0x1b, 0x95, 0x6c, 0x36, 0x4f,
-	0xc9, 0xe6, 0x6f, 0x34, 0x61, 0xeb, 0xd0, 0x9a, 0x3c, 0x8c, 0x6c, 0x11, 0xf5, 0xac, 0x13, 0x91,
-	0x5d, 0x2c, 0x0b, 0x02, 0x3b, 0x56, 0xd6, 0x5c, 0x7a, 0xe6, 0xec, 0x97, 0x5f, 0x29, 0xbb, 0xab,
-	0x0e, 0x41, 0x68, 0x73, 0x95, 0xbd, 0x2e, 0xf4, 0x37, 0x11, 0x42, 0xb9, 0xc9, 0x25, 0xe8, 0x0e,
-	0x42, 0x33, 0x40, 0x62, 0x79, 0x66, 0xdd, 0x19, 0x84, 0x44, 0x9e, 0x93, 0x41, 0xcb, 0xcb, 0x8e,
-	0x7b, 0xd5, 0x0d, 0xf9, 0x84, 0x6a, 0xe2, 0x8c, 0x88, 0x9b, 0x51, 0xfc, 0x80, 0x1b, 0x18, 0x46,
-	0x15, 0x46, 0xc1, 0x40, 0xc4, 0x31, 0xaf, 0x92, 0x5c, 0x76, 0xde, 0xa2, 0x37, 0x87, 0xfc, 0x82,
-	0x12, 0xac, 0xcb, 0xd0, 0xe5, 0xd1, 0x7c, 0xdb, 0xb8, 0xcd, 0xd9, 0x02, 0x81, 0xa8, 0xf1, 0x9d,
-	0xa6, 0x6d, 0x9d, 0x3c, 0x6d, 0x9b, 0xca, 0x68, 0x60, 0x99, 0x3b, 0x35, 0x57, 0x60, 0x2d, 0xb6,
-	0x8f, 0x73, 0x59, 0xbb, 0xa4, 0x0b, 0x88, 0xed, 0xe3, 0x54, 0xd8, 0x8b, 0x00, 0xa1, 0x35, 0x31,
-	0x3d, 0x91, 0x1c, 0x05, 0x5c, 0x6a, 0xee, 0x18, 0x9d, 0xd0, 0x9a, 0x1c, 0x10, 0x00, 0x93, 0x17,
-	0x7c, 0x3d, 0x18, 0x47, 0x91, 0xf0, 0x07, 0x13, 0xaa, 0x38, 0x77, 0x8c, 0x6e, 0x68, 0x4d, 0x76,
-	0x25, 0x88, 0x0e, 0x55, 0x58, 0x13, 0x16, 0x7b, 0x83, 0xfd, 0x24, 0xb4, 0x26, 0xa9, 0xb4, 0xf4,
-	0xf5, 0x91, 0xe5, 0xfb, 0xc2, 0xdd, 0xde, 0x64, 0xea, 0xf8, 0x31, 0x43, 0xb4, 0x33, 0xd0, 0x24,
-	0xfb, 0x6e, 0x91, 0x1e, 0x1a, 0xf1, 0xbe, 0xad, 0x3f, 0x83, 0xad, 0x5e, 0xef, 0xd0, 0x9a, 0xa0,
-	0x0f, 0xa0, 0x2f, 0xe0, 0x8c, 0xd9, 0x85, 0x0d, 0xc4, 0x23, 0xc5, 0xc8, 0x6f, 0xc0, 0x15, 0x8f,
-	0xd6, 0x4f, 0x7b, 0x90, 0x81, 0xac, 0xb3, 0x9c, 0xf2, 0x7e, 0x78, 0x6c, 0x9d, 0x08, 0x93, 0x6f,
-	0x14, 0xc9, 0x1b, 0xec, 0x80, 0x20, 0xee, 0x13, 0xeb, 0xde, 0x14, 0xe5, 0xea, 0xa9, 0x31, 0xcb,
-	0x4f, 0x7d, 0x69, 0x7e, 0xf4, 0x17, 0xe9, 0x5a, 0x17, 0x93, 0x23, 0xe8, 0xc3, 0xf7, 0xd1, 0x66,
-	0x94, 0xe8, 0x3e, 0xd1, 0x87, 0x33, 0x6f, 0x8f, 0xe5, 0x5b, 0x64, 0xeb, 0x1e, 0x9c, 0xc9, 0x19,
-	0x08, 0x0a, 0x09, 0xc7, 0x02, 0x1e, 0x36, 0x52, 0x1e, 0x18, 0x9f, 0xfe, 0xf3, 0x74, 0xcd, 0x5c,
-	0xa1, 0x83, 0xe1, 0xf0, 0xd3, 0xd0, 0xb7, 0xfe, 0x2e, 0xae, 0x14, 0x7b, 0x56, 0x40, 0x15, 0xa0,
-	0xff, 0xff, 0xfa, 0xeb, 0x87, 0x41, 0x9c, 0x1e, 0x82, 0x41, 0x9b, 0x5e, 0x81, 0x35, 0xd9, 0x5c,
-	0xcd, 0x3b, 0x6c, 0x2b, 0x06, 0x70, 0x87, 0x95, 0x58, 0xfb, 0x6e, 0x35, 0x82, 0x6a, 0xd3, 0xdc,
-	0x81, 0xf5, 0xb4, 0xab, 0xaa, 0x6a, 0xa5, 0x98, 0x3a, 0x4e, 0x21, 0x95, 0x0d, 0xd6, 0x6e, 0xc8,
-	0x7d, 0x55, 0x22, 0xfe, 0x16, 0xa6, 0xb3, 0xca, 0xb8, 0xfb, 0xc1, 0x08, 0xb9, 0xbe, 0x08, 0x40,
-	0x5d, 0x1b, 0x76, 0x77, 0xb9, 0x50, 0x10, 0x84, 0xb2, 0x60, 0x7b, 0xf6, 0x2b, 0x64, 0xf5, 0x06,
-	0xb4, 0xdd, 0x60, 0xa4, 0x76, 0x12, 0x2f, 0x54, 0xf1, 0x83, 0x74, 0x5a, 0x6e, 0x30, 0x9a, 0x3a,
-	0xb8, 0x5b, 0x57, 0x0f, 0xee, 0xfe, 0x11, 0xa5, 0x38, 0xca, 0x47, 0x85, 0xe6, 0xbf, 0xd2, 0xb5,
-	0xae, 0x15, 0xba, 0xd6, 0xaf, 0xc2, 0x17, 0x8e, 0xac, 0x58, 0x69, 0xac, 0x73, 0x34, 0x63, 0xd4,
-	0x67, 0x8e, 0xac, 0x38, 0x43, 0xc3, 0x5b, 0xbc, 0x5d, 0xe8, 0x06, 0x4f, 0x7d, 0x11, 0x99, 0x74,
-	0x80, 0x69, 0x89, 0x1c, 0x1c, 0xe8, 0x33, 0x7a, 0xd6, 0xff, 0xbd, 0x5e, 0xc5, 0x6b, 0xb5, 0x0d,
-	0x2b, 0x0f, 0x25, 0x14, 0xfb, 0xee, 0x8d, 0x65, 0xfa, 0xee, 0xe7, 0xa0, 0x1d, 0x05, 0xfd, 0x20,
-	0xc9, 0x0f, 0x1d, 0xb7, 0xe8, 0x79, 0xdf, 0xd6, 0xbe, 0x02, 0x67, 0xd2, 0x9b, 0x04, 0xc2, 0x4d,
-	0x2c, 0x36, 0xad, 0xec, 0x45, 0xca, 0x2b, 0x03, 0x08, 0xa7, 0x88, 0x76, 0x47, 0x76, 0x6d, 0xb3,
-	0xce, 0xfd, 0x6a, 0x89, 0x56, 0x2a, 0xdc, 0x0b, 0x3f, 0x4c, 0x5b, 0xf7, 0x87, 0xa5, 0xc7, 0x00,
-	0x5a, 0xa7, 0x46, 0x36, 0x73, 0x18, 0x40, 0xff, 0x1b, 0xaa, 0xff, 0x96, 0x3b, 0x45, 0x3c, 0x76,
-	0x93, 0xb9, 0xae, 0x21, 0x5f, 0x28, 0xe7, 0x10, 0xc3, 0x80, 0x6e, 0xea, 0x7c, 0x1a, 0x3e, 0x80,
-	0xe9, 0x5f, 0x5a, 0xdd, 0xe3, 0x9b, 0xaa, 0x7c, 0xb3, 0x4e, 0x56, 0x40, 0x99, 0x3d, 0xfd, 0x5f,
-	0x17, 0xf0, 0xff, 0x31, 0xdc, 0x65, 0x86, 0x6e, 0x63, 0x96, 0x2e, 0x6e, 0x45, 0x85, 0x17, 0x26,
-	0x13, 0x33, 0xc5, 0xc1, 0xcc, 0x75, 0x09, 0xc8, 0x1a, 0x9f, 0xb5, 0xfa, 0xca, 0xc7, 0xb2, 0xba,
-	0xfe, 0x7b, 0xf5, 0xf9, 0x32, 0xca, 0x7f, 0xbe, 0xe2, 0x27, 0x6a, 0x72, 0xb8, 0xea, 0x27, 0x43,
-	0x79, 0x2b, 0x3a, 0x0d, 0x98, 0x14, 0xdd, 0xf8, 0x76, 0xb4, 0x9c, 0xbe, 0x5b, 0x61, 0x46, 0x92,
-	0x2b, 0xee, 0xda, 0x1e, 0xac, 0x21, 0x9e, 0x8c, 0xe5, 0xc6, 0xa9, 0x59, 0x06, 0x3f, 0xc9, 0xfc,
-	0xf4, 0x65, 0xd8, 0xa4, 0x4d, 0x78, 0x90, 0x1c, 0x89, 0xc8, 0x1c, 0xa5, 0x97, 0xdf, 0xdb, 0xc6,
-	0x3a, 0x82, 0x1f, 0x22, 0xf4, 0x2e, 0xe6, 0x54, 0x2f, 0xc1, 0x7a, 0xee, 0xcf, 0x79, 0xdd, 0x69,
-	0x2d, 0x03, 0xa2, 0x04, 0x33, 0xf6, 0x90, 0xf7, 0xa0, 0x0a, 0x7e, 0xf0, 0x51, 0x0d, 0x57, 0x3e,
-	0x85, 0x33, 0x3a, 0x74, 0x38, 0xa7, 0x79, 0x76, 0x1d, 0xb6, 0xfa, 0x56, 0x2c, 0xd2, 0xce, 0x98,
-	0xf2, 0xcf, 0x5f, 0x36, 0x10, 0xce, 0x9f, 0xd2, 0xe4, 0x7d, 0x1d, 0xce, 0xa6, 0xed, 0x33, 0x3f,
-	0x11, 0xd1, 0x89, 0xe5, 0xaa, 0x25, 0x0d, 0x2d, 0x92, 0xe5, 0x5f, 0x7e, 0x95, 0xfe, 0xfb, 0x1a,
-	0x3f, 0x78, 0xaa, 0x9e, 0x4e, 0x6b, 0xf9, 0xc1, 0x53, 0x0a, 0xf5, 0xff, 0x54, 0xcd, 0x27, 0xaf,
-	0xd0, 0x99, 0xb5, 0xd4, 0xec, 0xad, 0xb6, 0x28, 0x7b, 0x93, 0x86, 0x34, 0xf2, 0x1c, 0xee, 0xff,
-	0x48, 0x3e, 0x7b, 0xca, 0x55, 0xb3, 0x93, 0x2b, 0x5c, 0x33, 0x58, 0xfa, 0xbc, 0x6a, 0xe1, 0x92,
-	0xe0, 0xba, 0xbc, 0xf1, 0xa0, 0xff, 0xb4, 0x06, 0x2f, 0xf5, 0x7a, 0xf2, 0x10, 0xac, 0x23, 0xe2,
-	0xdd, 0xc0, 0x75, 0xf9, 0xe2, 0x1c, 0xff, 0x8f, 0x9e, 0xf4, 0x1e, 0xf6, 0x65, 0xe8, 0xa6, 0xa7,
-	0x5b, 0xf3, 0xfd, 0x00, 0xa4, 0x20, 0xce, 0x63, 0xb3, 0xd6, 0x68, 0x1a, 0x07, 0x3a, 0x52, 0x62,
-	0xfb, 0x19, 0xdd, 0x3a, 0x25, 0x84, 0xa6, 0xeb, 0x78, 0x4e, 0x42, 0x27, 0x8a, 0x1a, 0xf2, 0xd6,
-	0x29, 0xc1, 0xef, 0x23, 0xf8, 0xc1, 0xd8, 0xd3, 0xde, 0x82, 0x76, 0x28, 0x92, 0xea, 0xfb, 0x47,
-	0xb7, 0x9f, 0xf1, 0xc4, 0xe3, 0x6a, 0x53, 0x28, 0x12, 0x9a, 0xd9, 0xff, 0x71, 0x0a, 0x39, 0xaa,
-	0x23, 0xd8, 0x94, 0x74, 0xf5, 0x19, 0xe9, 0x6e, 0xa8, 0x17, 0x7f, 0x16, 0x16, 0xe3, 0xf3, 0x9b,
-	0x3f, 0x45, 0xad, 0x34, 0xa7, 0xb5, 0xa2, 0xca, 0xba, 0x72, 0x6a, 0x59, 0x3d, 0xd0, 0x14, 0xf1,
-	0xac, 0x13, 0x3a, 0x40, 0xf1, 0x99, 0xc9, 0xa0, 0x7f, 0xff, 0x14, 0xaa, 0x95, 0x3d, 0xff, 0x4f,
-	0xe4, 0x22, 0xd7, 0x40, 0xba, 0x02, 0xee, 0x76, 0x14, 0x07, 0x59, 0x63, 0xe8, 0xee, 0x38, 0x7a,
-	0x30, 0xf6, 0xf4, 0x47, 0xd9, 0x3f, 0x7f, 0xba, 0x27, 0x2c, 0x5b, 0xc6, 0xda, 0xd2, 0x5b, 0x1c,
-	0x47, 0xc2, 0x52, 0x7a, 0xf9, 0xab, 0xf8, 0x28, 0xa7, 0x01, 0x6d, 0xfd, 0x1a, 0xca, 0x3f, 0x9a,
-	0xea, 0xaf, 0x92, 0x06, 0xde, 0xfc, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x3b, 0xfb, 0x82,
-	0x00, 0x4e, 0x00, 0x00,
+	// 5572 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3c, 0x4b, 0x8f, 0x24, 0xe9,
+	0x51, 0xaa, 0x47, 0x77, 0x55, 0x45, 0xf5, 0x6b, 0xd2, 0xe3, 0xdd, 0x9e, 0x99, 0x9d, 0x57, 0xee,
+	0x78, 0x3d, 0x36, 0xde, 0x07, 0xbb, 0xeb, 0xb1, 0xd7, 0xe3, 0xd5, 0x6a, 0xba, 0x7b, 0x1e, 0xbd,
+	0x3b, 0x3d, 0xd3, 0x64, 0xcd, 0xec, 0x62, 0x1f, 0x48, 0x65, 0x55, 0x7e, 0x55, 0x9d, 0x74, 0xbe,
+	0x26, 0x33, 0xab, 0x67, 0xca, 0x46, 0x1c, 0x90, 0x85, 0x40, 0x06, 0x4b, 0x36, 0x92, 0xcf, 0x80,
+	0x58, 0x24, 0x5e, 0x07, 0x38, 0x18, 0x0e, 0x70, 0xe0, 0xe0, 0x7f, 0x00, 0x9c, 0x40, 0x80, 0x40,
+	0x48, 0xc8, 0x12, 0x27, 0x2e, 0x88, 0x0b, 0x8a, 0x88, 0x2f, 0x33, 0xbf, 0xac, 0xca, 0xac, 0xea,
+	0xda, 0x87, 0xd8, 0x53, 0x57, 0x46, 0x7e, 0x19, 0xaf, 0x2f, 0x22, 0xbe, 0xf8, 0x22, 0xbe, 0xaf,
+	0xa1, 0xeb, 0x06, 0x23, 0x67, 0xf0, 0x4a, 0x18, 0x05, 0x49, 0xa0, 0x75, 0x63, 0x11, 0x9d, 0x88,
+	0x88, 0x1e, 0xce, 0xaf, 0x0d, 0x02, 0xcf, 0x0b, 0x7c, 0x7e, 0x75, 0x1e, 0xc6, 0xb1, 0x88, 0xf8,
+	0xb7, 0xee, 0x42, 0xf7, 0x03, 0xd1, 0x37, 0x02, 0x57, 0xec, 0xfb, 0xc3, 0x40, 0xfb, 0x12, 0x34,
+	0xfb, 0x56, 0x2c, 0xb6, 0x6b, 0x57, 0x6a, 0xd7, 0xbb, 0xaf, 0x7f, 0xfe, 0x15, 0x05, 0xc9, 0x2b,
+	0x38, 0x68, 0xc7, 0x8a, 0x85, 0x41, 0x43, 0xb4, 0xd7, 0xa1, 0x13, 0x05, 0xae, 0x30, 0x8f, 0x44,
+	0x14, 0x6c, 0xd7, 0x2b, 0xc6, 0xdf, 0x13, 0x51, 0x60, 0xb4, 0x23, 0xf9, 0x4b, 0xff, 0xf7, 0x1a,
+	0x9c, 0xf9, 0x40, 0xf4, 0x1f, 0x87, 0xb6, 0x95, 0x88, 0x03, 0xcb, 0x71, 0xf7, 0x13, 0xe1, 0x69,
+	0x1b, 0x50, 0x77, 0x6c, 0x22, 0xb9, 0x62, 0xd4, 0x1d, 0x5b, 0x3b, 0x07, 0xed, 0xb1, 0x63, 0x9b,
+	0xae, 0x13, 0x27, 0xdb, 0xf5, 0x2b, 0x8d, 0xeb, 0x4d, 0xa3, 0x35, 0x76, 0xec, 0xfb, 0x4e, 0x9c,
+	0x68, 0x67, 0x61, 0x25, 0x71, 0x12, 0x57, 0x6c, 0x37, 0xae, 0xd4, 0xae, 0x77, 0x0c, 0x7e, 0xd0,
+	0xb6, 0xa1, 0x35, 0x08, 0xfc, 0x44, 0xf8, 0xc9, 0x76, 0x93, 0xe0, 0xe9, 0xa3, 0xf6, 0x0d, 0xe8,
+	0x46, 0xe2, 0xa9, 0x15, 0x49, 0x6c, 0x2b, 0x57, 0x1a, 0xd7, 0xbb, 0xaf, 0x9f, 0x2b, 0xb0, 0xf9,
+	0x9e, 0x98, 0xbc, 0x6f, 0xb9, 0x63, 0xf1, 0x68, 0x12, 0x0a, 0x03, 0x78, 0x34, 0xd1, 0xba, 0x00,
+	0x9d, 0x58, 0xf8, 0xb6, 0x89, 0xbc, 0x6e, 0xaf, 0x5e, 0xa9, 0x5d, 0x6f, 0x1a, 0x6d, 0x04, 0xec,
+	0x59, 0x89, 0xc0, 0x97, 0x9e, 0xe5, 0xb8, 0x66, 0x32, 0x09, 0xc5, 0x76, 0x8b, 0x58, 0x6f, 0x23,
+	0x00, 0xb1, 0xe8, 0xff, 0x56, 0x83, 0x33, 0xbd, 0xde, 0x07, 0xa2, 0x7f, 0xf7, 0x60, 0xf7, 0xc8,
+	0x4a, 0x0e, 0xe2, 0xd1, 0x83, 0x64, 0xa8, 0x6d, 0x41, 0x63, 0x2c, 0xe5, 0x6c, 0x1a, 0xf8, 0x53,
+	0xbb, 0x08, 0x90, 0x58, 0xd1, 0x48, 0x24, 0x26, 0xbe, 0xa8, 0xd3, 0x8b, 0x0e, 0x43, 0x1e, 0x3b,
+	0xb6, 0x76, 0x23, 0x17, 0xab, 0x41, 0xfa, 0x7d, 0xa1, 0xc0, 0x38, 0xa1, 0x16, 0x71, 0x6c, 0x8d,
+	0x68, 0xee, 0x72, 0xa1, 0xcf, 0x41, 0xdb, 0x8b, 0x47, 0xcc, 0x5a, 0x93, 0x58, 0x6b, 0x79, 0xf1,
+	0x08, 0x39, 0xd3, 0xae, 0xc1, 0xc6, 0xe0, 0xc8, 0x4a, 0xcc, 0x58, 0xb8, 0x43, 0xd3, 0xb7, 0x3c,
+	0xb1, 0xbd, 0x42, 0x0a, 0x5b, 0x43, 0x68, 0x4f, 0xb8, 0xc3, 0x07, 0x96, 0x47, 0xa3, 0x62, 0xe1,
+	0x8a, 0x41, 0x62, 0x7e, 0x27, 0xf0, 0x85, 0xe9, 0xd8, 0x24, 0xfe, 0x8a, 0xb1, 0xc6, 0xd0, 0x6f,
+	0x07, 0xbe, 0xd8, 0xb7, 0xf5, 0xc3, 0x4c, 0xc8, 0x5b, 0xb6, 0x8d, 0x93, 0x89, 0x42, 0xde, 0x94,
+	0x7a, 0x71, 0xfc, 0x61, 0x20, 0xad, 0xe8, 0x52, 0x81, 0xeb, 0x99, 0xe9, 0x67, 0xbd, 0xa1, 0x04,
+	0xfa, 0x18, 0xd6, 0x25, 0xc6, 0x1d, 0xcb, 0x47, 0x6c, 0xcf, 0x43, 0xab, 0x6f, 0xf9, 0x66, 0xae,
+	0xb6, 0xd5, 0xbe, 0xe5, 0xa3, 0x6a, 0x3e, 0x0f, 0xab, 0x4e, 0x6c, 0xf6, 0x2d, 0x9f, 0xb4, 0xd6,
+	0x36, 0x56, 0x9c, 0x78, 0xc7, 0xf2, 0x51, 0x72, 0x1c, 0x9f, 0x38, 0x1e, 0x5b, 0x48, 0xd3, 0xc0,
+	0xef, 0x1f, 0x39, 0x9e, 0xc8, 0x5e, 0x29, 0x4a, 0xc1, 0x57, 0x38, 0x5d, 0x01, 0x6c, 0x49, 0xb2,
+	0x0f, 0x82, 0xc4, 0x19, 0x08, 0xa4, 0xfc, 0x0d, 0xe8, 0xfa, 0xf4, 0xa0, 0x4a, 0x52, 0x34, 0x9c,
+	0x74, 0x38, 0x29, 0x1f, 0xfc, 0xec, 0xb7, 0x76, 0x39, 0xfb, 0x96, 0x18, 0xe1, 0x79, 0x95, 0x03,
+	0x90, 0x17, 0xfd, 0x35, 0xd8, 0xee, 0xf5, 0x3e, 0xb8, 0xbd, 0x73, 0xf7, 0xa0, 0x47, 0xf8, 0x0e,
+	0x2c, 0xc7, 0x4f, 0x2c, 0x87, 0x44, 0x3e, 0x0b, 0x2b, 0x71, 0x82, 0x16, 0xc7, 0xfe, 0xc0, 0x0f,
+	0xfa, 0x59, 0xd0, 0x24, 0x8b, 0x77, 0xc7, 0x8e, 0x6b, 0xef, 0x58, 0x49, 0xe2, 0x0a, 0xdd, 0xce,
+	0x66, 0x60, 0x4f, 0x90, 0x2e, 0xcb, 0xcd, 0xec, 0x6d, 0x58, 0xb7, 0x85, 0x6b, 0x3a, 0x89, 0xf0,
+	0x72, 0xa7, 0x9a, 0xeb, 0x06, 0x5d, 0x9b, 0xf1, 0xa1, 0x1f, 0xe8, 0x31, 0x52, 0x39, 0x74, 0xad,
+	0x89, 0x88, 0x1e, 0xfa, 0xae, 0xe3, 0x93, 0x7e, 0xae, 0xc2, 0x1a, 0x7e, 0x8d, 0x42, 0xfa, 0x81,
+	0xcd, 0xdc, 0x76, 0x8c, 0xae, 0x84, 0x3d, 0x08, 0x6c, 0xa1, 0xdd, 0x04, 0xe8, 0x47, 0x8e, 0x18,
+	0xb2, 0x06, 0xeb, 0x25, 0x16, 0xcc, 0x48, 0x77, 0x70, 0x10, 0x29, 0xb1, 0xd3, 0x4f, 0x7f, 0xea,
+	0x2f, 0xa1, 0xc0, 0x92, 0xe8, 0x70, 0x98, 0x52, 0x9d, 0x91, 0x4d, 0xff, 0x2a, 0x9c, 0x9d, 0x62,
+	0x6e, 0x4c, 0x5a, 0xb8, 0x08, 0x10, 0xd0, 0xb3, 0xe9, 0x8f, 0x3d, 0xa9, 0xcb, 0x4e, 0x90, 0x8e,
+	0xd0, 0x7f, 0x58, 0xc3, 0x39, 0x57, 0x3c, 0xe8, 0xd6, 0xe0, 0x18, 0x55, 0x2f, 0xa2, 0x28, 0x88,
+	0x52, 0xd5, 0xd3, 0x03, 0x7a, 0xba, 0x74, 0xd2, 0xcc, 0x47, 0xdb, 0x0c, 0xd8, 0x27, 0x17, 0xf5,
+	0x18, 0xc1, 0xe9, 0x5c, 0x54, 0x0e, 0xd6, 0x34, 0x68, 0x2a, 0x96, 0x48, 0xbf, 0xf5, 0x9f, 0x4c,
+	0xf3, 0x84, 0x72, 0xa4, 0x03, 0x6b, 0xf9, 0x40, 0x95, 0x68, 0x7d, 0x19, 0xa2, 0x05, 0x49, 0x1a,
+	0x53, 0x92, 0xbc, 0x05, 0xad, 0x61, 0x14, 0x78, 0xf8, 0xaa, 0x49, 0x48, 0xaf, 0xcc, 0x20, 0x9d,
+	0x9e, 0xae, 0x55, 0xfc, 0x60, 0xdf, 0xd6, 0xff, 0xae, 0x06, 0x9f, 0xef, 0xf5, 0xc8, 0x30, 0x3f,
+	0x45, 0xee, 0x15, 0x06, 0x1b, 0xcb, 0x31, 0x58, 0x58, 0x50, 0x9a, 0xc5, 0x05, 0xe5, 0x1c, 0xb4,
+	0x47, 0xc8, 0x38, 0xa2, 0x5d, 0xe1, 0x88, 0x41, 0xcf, 0xfb, 0xb6, 0xfe, 0xbd, 0x1a, 0x3c, 0x2f,
+	0xc5, 0x62, 0x47, 0x57, 0x04, 0x7b, 0x03, 0x5a, 0xf1, 0x24, 0x36, 0xbd, 0x78, 0xb4, 0x5d, 0x23,
+	0x67, 0x3a, 0x5f, 0x60, 0xa6, 0x37, 0x89, 0x13, 0xe1, 0xc9, 0xf1, 0xc6, 0x6a, 0x3c, 0x89, 0x0f,
+	0xe2, 0x51, 0x81, 0x56, 0xbd, 0x40, 0xab, 0xc0, 0x61, 0xa3, 0xc0, 0xa1, 0xfe, 0x1d, 0x78, 0xae,
+	0xc0, 0xc5, 0xa3, 0x00, 0x17, 0xd6, 0x4f, 0x83, 0x09, 0xe9, 0x5d, 0x8d, 0xdc, 0xbb, 0xfe, 0xab,
+	0x06, 0x9f, 0x4b, 0xdd, 0xeb, 0xb6, 0x9f, 0x60, 0xa4, 0x0a, 0x0d, 0xf1, 0x84, 0x56, 0x18, 0x2b,
+	0x34, 0x95, 0xb9, 0x6d, 0x79, 0x56, 0x48, 0x2b, 0xcc, 0x05, 0xe8, 0x0c, 0x5c, 0x47, 0xf8, 0xaa,
+	0xbb, 0x30, 0x60, 0xdf, 0x9e, 0x89, 0x1a, 0x8d, 0xd9, 0xa8, 0xf1, 0x75, 0xe8, 0xc4, 0x47, 0xc1,
+	0x53, 0x0e, 0x1a, 0x6c, 0x89, 0x17, 0x4a, 0x82, 0x46, 0xef, 0x28, 0x78, 0x4a, 0x73, 0xdc, 0x8e,
+	0xe5, 0xaf, 0x39, 0x53, 0xa9, 0x7d, 0x11, 0x1a, 0x61, 0x10, 0xd3, 0x2a, 0x36, 0x9d, 0xa5, 0x1c,
+	0x06, 0xb1, 0x93, 0x38, 0x81, 0x6f, 0xe0, 0x08, 0xfd, 0x8b, 0xb9, 0xbc, 0xf7, 0x85, 0x75, 0x22,
+	0x0e, 0xac, 0xb0, 0x3c, 0xee, 0x3c, 0x97, 0xc7, 0x9d, 0x5b, 0x81, 0x63, 0x88, 0x41, 0xe0, 0xfb,
+	0x62, 0x90, 0xe8, 0xdb, 0x38, 0x5b, 0x45, 0x04, 0x86, 0x78, 0x72, 0x6b, 0x70, 0xac, 0xf7, 0xa1,
+	0xd3, 0xeb, 0xe1, 0xf2, 0x8a, 0x0a, 0xd4, 0xa0, 0x49, 0xab, 0x2f, 0x87, 0x4d, 0xfa, 0x8d, 0x30,
+	0x5c, 0x6e, 0x49, 0x69, 0x2b, 0x06, 0xfd, 0xce, 0x1c, 0xa8, 0xa1, 0x38, 0xd0, 0x39, 0x68, 0x07,
+	0xae, 0xcd, 0xab, 0xb7, 0x4c, 0x77, 0x02, 0xd7, 0x46, 0xcc, 0xfa, 0x7e, 0x4a, 0x43, 0xae, 0x24,
+	0x25, 0xe1, 0x2c, 0xa5, 0x5c, 0x2f, 0x52, 0x9e, 0xa6, 0xa2, 0xff, 0x02, 0xfa, 0x74, 0xae, 0xeb,
+	0xdd, 0x23, 0xcb, 0x1f, 0x11, 0xeb, 0x85, 0x09, 0xaa, 0x2d, 0x31, 0x41, 0xfa, 0x6f, 0xd4, 0xe1,
+	0x5c, 0xc1, 0x9a, 0x76, 0x8f, 0x2c, 0xd7, 0x15, 0x3e, 0xbb, 0xd4, 0x05, 0xe8, 0x08, 0x04, 0x2a,
+	0xab, 0x7d, 0x9b, 0x00, 0xb8, 0xde, 0xcb, 0x25, 0x75, 0x38, 0x51, 0xb3, 0x42, 0x60, 0x10, 0xf9,
+	0xf1, 0x5b, 0x00, 0x43, 0x67, 0x74, 0x94, 0xe4, 0x2e, 0x34, 0xed, 0x0e, 0x77, 0xf0, 0x75, 0x9a,
+	0xe8, 0x1a, 0x1d, 0x1a, 0x9d, 0x86, 0x80, 0x7e, 0x10, 0xc7, 0x44, 0xb7, 0x29, 0x93, 0x86, 0x20,
+	0x8e, 0x91, 0xec, 0xcb, 0xf0, 0x39, 0xca, 0x94, 0x06, 0x24, 0xbd, 0x19, 0xba, 0xd6, 0x24, 0xb5,
+	0xae, 0x15, 0x63, 0x0b, 0x5f, 0xb1, 0x5e, 0x50, 0xa6, 0x7d, 0x5b, 0xbb, 0x0e, 0x5b, 0xf1, 0x18,
+	0x13, 0x6d, 0x93, 0x10, 0x92, 0x4e, 0x39, 0x73, 0xda, 0x60, 0xf8, 0x4e, 0x10, 0xc7, 0x94, 0x72,
+	0x7c, 0x2b, 0xd7, 0x04, 0x99, 0xc9, 0xb4, 0x26, 0x5c, 0x04, 0xaa, 0x9a, 0x20, 0xc0, 0x69, 0x34,
+	0xa1, 0x7f, 0x2b, 0xb7, 0xc0, 0x0c, 0xeb, 0x3d, 0xb2, 0xe2, 0x4b, 0xd0, 0x1d, 0x8c, 0x23, 0xe6,
+	0xed, 0x28, 0x4c, 0x17, 0xc5, 0xc1, 0x38, 0x42, 0xb6, 0xee, 0x85, 0x8b, 0x51, 0x3f, 0x86, 0xf3,
+	0x33, 0xa8, 0x0d, 0x11, 0x8f, 0xdd, 0x04, 0xd1, 0x3f, 0x07, 0xab, 0x11, 0x3d, 0x48, 0xcc, 0xf2,
+	0x69, 0x31, 0xda, 0x5f, 0xaf, 0xc3, 0x5a, 0xaf, 0xa7, 0x24, 0x91, 0xd7, 0x60, 0x83, 0x92, 0xc8,
+	0x41, 0xe0, 0x0f, 0x9d, 0x91, 0x99, 0x6d, 0x0e, 0xd6, 0x10, 0xba, 0x4b, 0xc0, 0x7d, 0xbb, 0x98,
+	0x82, 0xd7, 0x8b, 0x29, 0xf8, 0x74, 0xe2, 0xdf, 0x58, 0x26, 0xf1, 0x9f, 0x62, 0xb8, 0x39, 0x63,
+	0x6c, 0x2f, 0xc1, 0x26, 0x51, 0x0e, 0xad, 0xc8, 0xf2, 0xf2, 0x9d, 0xc5, 0x8a, 0xb1, 0x8e, 0xe0,
+	0x43, 0x84, 0x16, 0x77, 0x2b, 0xab, 0x15, 0xbb, 0x95, 0x56, 0x61, 0xb7, 0xa2, 0xff, 0x25, 0xaf,
+	0x38, 0x22, 0xd9, 0x0d, 0xbc, 0x50, 0x24, 0x14, 0x97, 0xf6, 0xac, 0xc4, 0x42, 0xb7, 0xfb, 0x02,
+	0x6c, 0x0c, 0x72, 0x68, 0xae, 0x93, 0x75, 0x05, 0xba, 0x6f, 0x6b, 0x5f, 0x82, 0x2d, 0x75, 0x98,
+	0xa2, 0x9b, 0x4d, 0x05, 0x4e, 0x2a, 0xfa, 0x0a, 0x68, 0x4e, 0x6c, 0xfa, 0xc1, 0x53, 0x53, 0x79,
+	0x43, 0x31, 0xa0, 0x6d, 0x6c, 0x39, 0xf1, 0x83, 0xe0, 0xa9, 0xc2, 0x86, 0xf6, 0x02, 0x40, 0x3c,
+	0xee, 0x9b, 0x8e, 0x4d, 0x09, 0x15, 0xe7, 0x2d, 0xed, 0x78, 0xdc, 0xdf, 0xb7, 0x31, 0x9f, 0xfa,
+	0x8b, 0x0a, 0xce, 0xab, 0xd3, 0xaa, 0xbb, 0x45, 0x46, 0x6d, 0x2b, 0xb1, 0xca, 0xf3, 0x01, 0x45,
+	0x3c, 0x74, 0x5c, 0x55, 0x0c, 0xa4, 0x80, 0xf1, 0xc8, 0xb1, 0x03, 0x97, 0x31, 0x34, 0x4a, 0xe2,
+	0xd1, 0xbe, 0x1d, 0xb8, 0x3d, 0x61, 0xc5, 0x52, 0x97, 0x6d, 0x1c, 0x8d, 0xbf, 0xf4, 0xff, 0xad,
+	0xa1, 0xab, 0x28, 0x04, 0x0c, 0xb2, 0x81, 0x4f, 0x4d, 0xdb, 0xea, 0x50, 0xd6, 0xa5, 0x8c, 0xb8,
+	0x2a, 0x92, 0x1e, 0xaa, 0x14, 0xb5, 0x8d, 0x5b, 0x4f, 0x39, 0xaa, 0x49, 0x73, 0xd2, 0x16, 0xbe,
+	0xcd, 0x6f, 0x77, 0x61, 0x53, 0x1a, 0x77, 0x96, 0x34, 0xf0, 0xce, 0xf6, 0x42, 0xa5, 0x81, 0xdf,
+	0x78, 0xd3, 0x58, 0xe7, 0x6f, 0x1e, 0xcb, 0xbc, 0xe2, 0x1f, 0xcb, 0xa5, 0xc7, 0x19, 0x3b, 0xa5,
+	0xf4, 0xe5, 0x22, 0xd5, 0x2b, 0x44, 0x2a, 0x61, 0xba, 0xb1, 0x2c, 0xd3, 0x18, 0x61, 0x93, 0x20,
+	0xb1, 0x5c, 0x33, 0xb2, 0xfc, 0x63, 0x73, 0x10, 0x8c, 0xe5, 0x96, 0x7f, 0xc5, 0xd8, 0x20, 0xb8,
+	0x61, 0xf9, 0xc7, 0xbb, 0x08, 0xd5, 0xff, 0xbe, 0x06, 0x17, 0x4b, 0xc4, 0xbb, 0xe7, 0xc4, 0x49,
+	0x10, 0x4d, 0x70, 0x8e, 0x31, 0x5a, 0x9b, 0xa5, 0x72, 0x6e, 0xc4, 0xbb, 0x05, 0x41, 0xaf, 0xc3,
+	0x96, 0x98, 0x1e, 0xc9, 0x62, 0x6e, 0x88, 0xe2, 0xc8, 0x57, 0xe1, 0x6c, 0x11, 0x67, 0x61, 0x9e,
+	0xcf, 0xa8, 0x78, 0x59, 0x2b, 0xaf, 0xc2, 0x59, 0x51, 0xf6, 0x01, 0x0b, 0x75, 0x46, 0x4c, 0x7f,
+	0xa0, 0xff, 0xed, 0x5c, 0xb9, 0x70, 0xf6, 0x6e, 0xcf, 0x2a, 0x9a, 0xd3, 0xc3, 0x8b, 0x95, 0x8a,
+	0x46, 0xdd, 0x96, 0xa8, 0xfa, 0xf4, 0x42, 0x8b, 0x39, 0x42, 0xcf, 0xca, 0xf0, 0x67, 0x35, 0xb8,
+	0x50, 0x90, 0x81, 0x2b, 0x02, 0xbd, 0x41, 0x10, 0x51, 0x8a, 0x31, 0xbb, 0x85, 0x9d, 0xb5, 0xc8,
+	0x7a, 0x99, 0x45, 0xe2, 0xe6, 0x19, 0x91, 0x48, 0xd2, 0xfc, 0x80, 0x0b, 0xfc, 0xd0, 0xf2, 0x0b,
+	0x0b, 0x3c, 0x3e, 0xe3, 0x6a, 0x7a, 0x0d, 0x36, 0x70, 0x49, 0x3c, 0x09, 0x12, 0x61, 0xf2, 0x97,
+	0xbc, 0xb6, 0xaf, 0x0d, 0xc6, 0xd1, 0xfb, 0x81, 0x64, 0x49, 0xff, 0xd9, 0x1c, 0x7e, 0x97, 0xf0,
+	0x97, 0x6b, 0xb0, 0xe1, 0x8b, 0x67, 0x09, 0xaa, 0x4a, 0x12, 0x63, 0x21, 0xd6, 0x10, 0xba, 0x1b,
+	0x78, 0x84, 0x8f, 0xcb, 0x4e, 0xee, 0x90, 0x2c, 0x5c, 0xca, 0xd1, 0x46, 0x00, 0x9a, 0x36, 0x55,
+	0x8c, 0x32, 0xfb, 0x97, 0x46, 0xd2, 0xc9, 0x2c, 0x1f, 0x5f, 0xc7, 0x62, 0x90, 0x32, 0xc1, 0xa2,
+	0x74, 0x24, 0x84, 0x19, 0x70, 0xad, 0x58, 0x65, 0x40, 0xd6, 0x75, 0x10, 0x9a, 0x32, 0xa0, 0xff,
+	0xac, 0x3e, 0x15, 0x18, 0x1e, 0xfa, 0xa8, 0x8a, 0xea, 0x94, 0x52, 0x4e, 0x57, 0x3d, 0x9f, 0xae,
+	0xcb, 0xd0, 0x65, 0x36, 0xd9, 0x43, 0x59, 0x0a, 0xe6, 0x9c, 0xbc, 0x53, 0xbb, 0x01, 0x1d, 0xd2,
+	0x79, 0xb6, 0xc0, 0x4e, 0x2f, 0xce, 0x77, 0x2c, 0x3f, 0x46, 0x91, 0x38, 0x64, 0xe3, 0x58, 0x32,
+	0xca, 0x37, 0x60, 0xd5, 0x16, 0x89, 0xe5, 0xb8, 0xa5, 0x01, 0x2f, 0xcf, 0x3c, 0xe9, 0x33, 0x39,
+	0x14, 0x73, 0x01, 0x22, 0xc6, 0x7b, 0x5d, 0xb9, 0x0b, 0x98, 0x43, 0x0e, 0x70, 0xf4, 0x23, 0x1a,
+	0x8c, 0x3b, 0x96, 0xc4, 0x19, 0x1c, 0x8b, 0x44, 0x8a, 0xc2, 0xa5, 0xbe, 0x2e, 0xc3, 0x58, 0x96,
+	0x6f, 0x66, 0xa9, 0x06, 0x2d, 0x41, 0xed, 0xc5, 0x41, 0x4d, 0x26, 0x1b, 0xb4, 0x08, 0x7d, 0x00,
+	0x2f, 0x14, 0x94, 0xdd, 0x13, 0xee, 0x10, 0xb9, 0xa1, 0xc5, 0xee, 0x63, 0xf8, 0x82, 0xfe, 0x2b,
+	0x73, 0x10, 0x57, 0x2f, 0xcb, 0xb3, 0x73, 0xf9, 0x26, 0x79, 0x4f, 0x75, 0x1a, 0x85, 0x38, 0xd1,
+	0x3e, 0x48, 0x75, 0xe8, 0x58, 0xb4, 0xba, 0x8c, 0x60, 0xbb, 0x40, 0x1d, 0x47, 0xa0, 0x82, 0xcb,
+	0x45, 0xd2, 0xa0, 0x19, 0xa6, 0x05, 0x81, 0x15, 0x83, 0x7e, 0x97, 0x88, 0xd9, 0x28, 0x13, 0xf3,
+	0xc3, 0x5a, 0x05, 0xa5, 0x65, 0x64, 0x4c, 0xe9, 0x37, 0x14, 0xfa, 0x37, 0xa0, 0x43, 0x8b, 0x0c,
+	0x4d, 0xea, 0x62, 0x13, 0x8d, 0xe4, 0x2f, 0x59, 0x9a, 0x14, 0x3e, 0xfb, 0x1f, 0x95, 0x26, 0x6f,
+	0xfb, 0xb6, 0xee, 0xc1, 0xa5, 0x02, 0x9b, 0xf4, 0x35, 0xe7, 0x1b, 0x1f, 0x53, 0x2d, 0xcd, 0x32,
+	0xb5, 0xfc, 0x71, 0x6d, 0x2e, 0xbd, 0x8f, 0xab, 0x9c, 0xaf, 0x42, 0x07, 0xf5, 0xa2, 0xfa, 0xef,
+	0xf6, 0x8c, 0x72, 0x76, 0x82, 0x67, 0xac, 0x1b, 0x1c, 0x4a, 0xee, 0x5b, 0xa1, 0x9b, 0x1f, 0x4f,
+	0xaf, 0x69, 0xf8, 0xf5, 0x5d, 0x91, 0xe4, 0xf9, 0xd8, 0xac, 0x6e, 0xce, 0x01, 0x25, 0x72, 0x4a,
+	0xe5, 0xbc, 0x85, 0xcf, 0x18, 0xd4, 0xaf, 0xc2, 0x5a, 0x9a, 0xfb, 0x8b, 0x13, 0xe1, 0x4a, 0xc6,
+	0xa5, 0x93, 0xde, 0x47, 0xd0, 0x69, 0xb5, 0xf8, 0x27, 0x73, 0x19, 0x5b, 0x46, 0x89, 0x2a, 0xbb,
+	0x8d, 0xf9, 0xec, 0x36, 0x67, 0xd9, 0xbd, 0x06, 0x1b, 0xf4, 0x75, 0x3f, 0x78, 0x26, 0xe3, 0x90,
+	0x5c, 0xa6, 0x10, 0xba, 0x13, 0x3c, 0xe3, 0x94, 0x27, 0x84, 0xcb, 0x05, 0x66, 0x6f, 0xd9, 0xf6,
+	0x3e, 0xbf, 0xa7, 0xc0, 0x5e, 0x5e, 0x1c, 0xce, 0x96, 0xcc, 0xba, 0xba, 0x64, 0x9e, 0xd2, 0xf9,
+	0xfe, 0xbb, 0x06, 0x57, 0xca, 0xf4, 0x73, 0xcb, 0x75, 0x97, 0xce, 0xa5, 0x97, 0xcb, 0x26, 0xcb,
+	0x32, 0xef, 0x46, 0x79, 0xe6, 0xfd, 0x06, 0x34, 0x15, 0x1f, 0xbe, 0x5c, 0x1a, 0xbc, 0x8c, 0x2c,
+	0x20, 0x1b, 0x34, 0x18, 0x57, 0x61, 0x27, 0x36, 0x87, 0x8e, 0xef, 0xc4, 0x47, 0xd2, 0x58, 0xdb,
+	0x4e, 0x7c, 0x87, 0x9e, 0xf5, 0x3f, 0x5d, 0x24, 0xf6, 0xa7, 0x96, 0x44, 0xa7, 0xb2, 0x34, 0x96,
+	0x90, 0x45, 0x1f, 0xc3, 0xd5, 0x02, 0xb7, 0x77, 0x85, 0xac, 0x94, 0xce, 0x0f, 0xca, 0xcf, 0x43,
+	0x2b, 0x12, 0x4f, 0x14, 0x07, 0x5b, 0x8d, 0xc4, 0x93, 0xc7, 0xa5, 0x0b, 0x50, 0xa9, 0x71, 0xfc,
+	0x4e, 0x6d, 0x11, 0xdd, 0x6a, 0x07, 0x7a, 0x47, 0x1a, 0x7c, 0x1e, 0x81, 0xeb, 0x8b, 0x56, 0x6d,
+	0xf2, 0x85, 0xf4, 0x49, 0x65, 0xbe, 0xa1, 0x32, 0xaf, 0x1f, 0xc1, 0x46, 0xaf, 0x77, 0x27, 0x72,
+	0x84, 0x6f, 0xdf, 0xb2, 0xc9, 0x3e, 0xdf, 0x86, 0x36, 0x15, 0x96, 0x53, 0xf1, 0xbb, 0xaf, 0xeb,
+	0xd3, 0x3b, 0x50, 0x2f, 0xf0, 0xa7, 0x6b, 0xcb, 0x54, 0x8c, 0x7e, 0xcc, 0x6a, 0xb2, 0x6c, 0x5b,
+	0x55, 0x93, 0x65, 0x63, 0x12, 0xad, 0xff, 0x6a, 0x81, 0x52, 0xb5, 0xac, 0xe7, 0x14, 0xfa, 0x32,
+	0x92, 0xa5, 0xb8, 0x6f, 0xe6, 0xb8, 0x1b, 0xa7, 0xe6, 0x2c, 0xa5, 0xbf, 0x97, 0xd3, 0xdf, 0x13,
+	0xae, 0x2c, 0xdb, 0x16, 0x24, 0x6d, 0x16, 0xa4, 0xb0, 0x85, 0x1a, 0x4d, 0x57, 0x6d, 0x81, 0xd1,
+	0x49, 0xff, 0x76, 0x01, 0xcb, 0x47, 0x92, 0x42, 0xc1, 0xdd, 0x28, 0xe0, 0x7e, 0x17, 0xb6, 0x52,
+	0xdc, 0x3b, 0xae, 0x35, 0x38, 0xc6, 0x08, 0x35, 0x87, 0xc7, 0x0b, 0xd0, 0xe9, 0xe3, 0x30, 0x85,
+	0x46, 0x9b, 0x00, 0x88, 0xeb, 0xc7, 0xd4, 0x3d, 0xe1, 0x1e, 0x50, 0x2f, 0xb1, 0x12, 0x21, 0x05,
+	0x0e, 0xa3, 0xa0, 0x50, 0xa7, 0x0e, 0xa3, 0x20, 0xad, 0x53, 0xe3, 0xe2, 0x55, 0xa8, 0x1e, 0x21,
+	0x80, 0x5e, 0xbe, 0x0b, 0x9b, 0x79, 0xeb, 0x4a, 0x4d, 0x7d, 0x4e, 0xa3, 0xff, 0xf5, 0xac, 0x8b,
+	0x45, 0x99, 0xd0, 0x0c, 0x63, 0xa8, 0xc3, 0xcf, 0x02, 0x63, 0xfd, 0xac, 0xbd, 0xf1, 0xd0, 0x27,
+	0x03, 0x4d, 0x9c, 0x13, 0x27, 0x99, 0x94, 0x2f, 0x13, 0x73, 0xda, 0x06, 0xe7, 0xa1, 0x6d, 0xc9,
+	0x6f, 0xd3, 0xfd, 0x4a, 0xfa, 0xac, 0xdb, 0x59, 0x67, 0x68, 0x27, 0x88, 0x63, 0x43, 0x0c, 0x23,
+	0x11, 0x1f, 0x95, 0x53, 0x78, 0x0b, 0xda, 0x91, 0x18, 0xa6, 0x2d, 0xd3, 0xc6, 0x4c, 0xe3, 0x38,
+	0xc3, 0xf2, 0xc8, 0x19, 0x1c, 0x3f, 0x72, 0x3c, 0x61, 0xb4, 0x22, 0x31, 0xa4, 0x7e, 0xea, 0x5e,
+	0x46, 0x65, 0x76, 0xfe, 0x33, 0xae, 0x6b, 0xa5, 0xcd, 0x8e, 0x7c, 0x89, 0xd6, 0x7f, 0xa9, 0x0c,
+	0x8b, 0x9c, 0xac, 0x53, 0x63, 0xd1, 0xb6, 0xa1, 0x15, 0x70, 0xc3, 0x32, 0x5d, 0xe7, 0xe5, 0xa3,
+	0x6e, 0xc0, 0x79, 0x89, 0xff, 0x40, 0x78, 0xfd, 0xb4, 0x5f, 0x99, 0xe6, 0xf9, 0x73, 0x88, 0x54,
+	0x9f, 0x87, 0xd0, 0x83, 0x4a, 0x9c, 0x0b, 0x18, 0xbf, 0x31, 0x85, 0x73, 0xc1, 0x8e, 0x25, 0x23,
+	0x78, 0x0c, 0x67, 0xd3, 0x6e, 0x94, 0xe5, 0x09, 0xae, 0x7e, 0x4b, 0xb7, 0x5d, 0x9e, 0x7d, 0xdc,
+	0xaf, 0xf2, 0x57, 0xd4, 0x92, 0xe0, 0x6e, 0x50, 0x67, 0x94, 0x62, 0xd7, 0x7f, 0xab, 0x86, 0xd4,
+	0x58, 0x26, 0xa2, 0x59, 0xbd, 0x29, 0x9a, 0x63, 0x9f, 0x17, 0x01, 0x9c, 0xd8, 0x8c, 0x84, 0x1b,
+	0x8c, 0x9c, 0xb4, 0xbe, 0xd9, 0x71, 0x62, 0x83, 0x01, 0xda, 0x75, 0xd8, 0xb2, 0x85, 0x17, 0xf8,
+	0x26, 0xf7, 0x0f, 0xc8, 0xfe, 0xb8, 0x4a, 0xb0, 0x41, 0x70, 0xea, 0x1b, 0x90, 0x99, 0xfd, 0xa8,
+	0x5e, 0xc2, 0x0e, 0xea, 0xf9, 0x35, 0xb9, 0x2a, 0xd7, 0x4a, 0xea, 0x97, 0x59, 0xe7, 0x6e, 0x38,
+	0x29, 0xa6, 0x17, 0x54, 0x0a, 0xf8, 0xe5, 0xc0, 0xe1, 0x23, 0x0c, 0x0d, 0xa3, 0x8d, 0x80, 0x77,
+	0x03, 0xc7, 0xc7, 0x84, 0xbb, 0x1f, 0xc4, 0x31, 0x79, 0xf6, 0xba, 0x41, 0xbf, 0xb5, 0xaf, 0xc1,
+	0xaa, 0x17, 0x8f, 0x0c, 0x31, 0x28, 0x4d, 0x63, 0x64, 0x93, 0x6f, 0x97, 0xeb, 0xc8, 0xbc, 0x0a,
+	0xf0, 0x70, 0x9c, 0x68, 0x62, 0xa1, 0x37, 0x89, 0x29, 0x8f, 0x99, 0xdf, 0x25, 0xcc, 0xc6, 0x6a,
+	0x2f, 0xc1, 0xa6, 0xe3, 0x9b, 0xac, 0xd3, 0x3e, 0x1d, 0x37, 0xa0, 0x8d, 0x73, 0xdb, 0x58, 0x77,
+	0x7c, 0xf5, 0x0c, 0xc2, 0xf7, 0xa8, 0xa9, 0xa3, 0x40, 0x94, 0xce, 0x00, 0xd5, 0xd8, 0x54, 0x14,
+	0xa6, 0x63, 0x3f, 0x4b, 0x6b, 0x6c, 0xa3, 0xfc, 0x93, 0x7d, 0xfb, 0x19, 0x2e, 0x12, 0x61, 0x10,
+	0xd3, 0x00, 0x0e, 0x7a, 0xab, 0x61, 0x10, 0xe3, 0x8b, 0x9b, 0xd0, 0xea, 0xcb, 0x33, 0x04, 0x4b,
+	0xac, 0x81, 0x7d, 0xfa, 0xab, 0xe9, 0xb0, 0x4e, 0xc5, 0x94, 0xcc, 0x36, 0x78, 0x66, 0xbb, 0x08,
+	0xbc, 0x2b, 0xed, 0xe3, 0x79, 0x68, 0x0d, 0xc6, 0x91, 0x19, 0x79, 0x7d, 0xd9, 0x36, 0x5c, 0x1d,
+	0x8c, 0x23, 0xc3, 0xeb, 0x6b, 0x5f, 0x86, 0x33, 0xfd, 0xf1, 0xc4, 0x1c, 0xa4, 0x02, 0x51, 0xe5,
+	0x9b, 0x2b, 0x26, 0x9b, 0xfd, 0xf1, 0x24, 0xef, 0xd9, 0x8c, 0x3d, 0xfd, 0x7f, 0x1a, 0x55, 0x6a,
+	0xa8, 0x5e, 0x32, 0xcb, 0x94, 0x53, 0x5f, 0xa4, 0x9c, 0x46, 0x41, 0x39, 0x59, 0xdb, 0x4b, 0x69,
+	0x97, 0x2e, 0x6e, 0x7b, 0x91, 0x6a, 0xde, 0x05, 0x2d, 0x97, 0x0c, 0xb1, 0x93, 0x09, 0xaf, 0x54,
+	0x99, 0xf0, 0x21, 0x11, 0x24, 0x13, 0xde, 0xca, 0xbe, 0x3b, 0x0c, 0x62, 0xca, 0xb6, 0xce, 0x41,
+	0x7b, 0x10, 0xc4, 0x09, 0xe9, 0x90, 0x4f, 0x4a, 0xb5, 0xf0, 0x19, 0x95, 0x78, 0x0b, 0x36, 0x99,
+	0xc3, 0xfe, 0x78, 0x38, 0xe4, 0x20, 0xd0, 0x5a, 0xd4, 0x8c, 0x59, 0xa7, 0x2f, 0x76, 0xc6, 0xc3,
+	0x21, 0x45, 0x89, 0x77, 0xe8, 0x38, 0xd2, 0x50, 0xc1, 0xd0, 0x5e, 0x84, 0x61, 0x0d, 0x3f, 0xc8,
+	0x10, 0xbc, 0x2d, 0x4b, 0x6a, 0x24, 0x61, 0xa7, 0xe4, 0xf0, 0x80, 0x32, 0x6f, 0x3d, 0xe1, 0x0e,
+	0x79, 0xd7, 0x1a, 0xcb, 0x5f, 0xda, 0x25, 0xe8, 0x8e, 0x63, 0x61, 0xa2, 0x2d, 0xa0, 0x05, 0x00,
+	0x47, 0x90, 0x71, 0x2c, 0x76, 0xc6, 0x13, 0x9c, 0xfb, 0xdb, 0x59, 0x87, 0x5e, 0x4e, 0xfd, 0x61,
+	0x75, 0x52, 0x5d, 0x1d, 0xa7, 0x70, 0xb3, 0x59, 0x86, 0x07, 0xed, 0xe7, 0x0d, 0x68, 0x0d, 0x42,
+	0xb5, 0x94, 0x7b, 0xbe, 0x8a, 0xfd, 0xdd, 0x43, 0x63, 0x75, 0x10, 0xa6, 0x5d, 0x2a, 0xc5, 0xf6,
+	0xa9, 0x60, 0x28, 0x0b, 0x45, 0x99, 0xf5, 0x53, 0xd1, 0xb0, 0xe8, 0x23, 0x83, 0x30, 0xdd, 0x2f,
+	0x67, 0xa3, 0x76, 0xc3, 0x54, 0x10, 0xc8, 0x57, 0xcb, 0x97, 0xa7, 0xed, 0x1d, 0xb7, 0xa0, 0x87,
+	0x56, 0x94, 0x94, 0xca, 0xad, 0x7f, 0xbf, 0x59, 0x35, 0xbe, 0xda, 0x3f, 0xce, 0x43, 0x7b, 0x70,
+	0x64, 0x79, 0xa1, 0x13, 0xf8, 0xd9, 0x49, 0x02, 0xf9, 0x4c, 0x16, 0x37, 0x8e, 0xcc, 0x38, 0xc9,
+	0x0a, 0x13, 0xe8, 0xc4, 0xbd, 0x64, 0x24, 0xb4, 0x97, 0x41, 0x4b, 0x82, 0x71, 0x84, 0x4b, 0x8a,
+	0x9f, 0x98, 0x61, 0x24, 0x42, 0x2b, 0x4a, 0x43, 0xfa, 0x99, 0xfc, 0xcd, 0x21, 0xbf, 0xc0, 0x9d,
+	0xa4, 0x32, 0xbc, 0x2f, 0x70, 0x91, 0xe0, 0x38, 0xb0, 0x99, 0xc3, 0x77, 0x10, 0x8c, 0x1b, 0x1f,
+	0x65, 0xa8, 0xf0, 0x6d, 0x69, 0xec, 0xeb, 0x39, 0xf4, 0xb6, 0x6f, 0x23, 0x03, 0xb1, 0xf0, 0x9c,
+	0xa1, 0xe3, 0x5b, 0x6e, 0x9c, 0x31, 0xd0, 0x62, 0x06, 0xf2, 0x37, 0x0a, 0x03, 0xca, 0x70, 0x66,
+	0xa0, 0xcd, 0x0c, 0xe4, 0xf0, 0x8c, 0x01, 0x65, 0x28, 0x32, 0xd0, 0x61, 0x06, 0x72, 0x28, 0x32,
+	0xf0, 0x05, 0xd8, 0x98, 0x22, 0xce, 0x13, 0xb7, 0x5e, 0x24, 0x7c, 0x15, 0xd6, 0x0a, 0x44, 0xbb,
+	0x1c, 0x1b, 0x55, 0x82, 0x17, 0x31, 0xbe, 0x64, 0xc4, 0xd6, 0xf8, 0x84, 0x62, 0x4e, 0xe8, 0x06,
+	0xac, 0x24, 0x56, 0xdf, 0x15, 0xdb, 0xeb, 0x55, 0x4e, 0x95, 0x4d, 0xf3, 0x23, 0x1c, 0x67, 0xf0,
+	0x70, 0xfd, 0x71, 0x96, 0x7a, 0xb2, 0x31, 0x1c, 0x9c, 0x84, 0xd5, 0x4b, 0xfb, 0xa9, 0xc3, 0xa4,
+	0xfe, 0xcf, 0xb5, 0x72, 0xbc, 0x9f, 0x44, 0x08, 0xbe, 0x91, 0x55, 0x9e, 0x1b, 0x95, 0xc9, 0x29,
+	0x0d, 0xde, 0xa3, 0x51, 0x4a, 0xf1, 0x19, 0xa8, 0x62, 0x63, 0x86, 0x56, 0x94, 0x94, 0x1e, 0x68,
+	0x21, 0x15, 0x91, 0x7a, 0x28, 0xee, 0x74, 0x06, 0xa9, 0xca, 0x52, 0x5d, 0xac, 0xe4, 0x6e, 0xf4,
+	0xdb, 0xb5, 0x29, 0x37, 0x3a, 0x38, 0x09, 0x25, 0xc1, 0xaa, 0x70, 0xe3, 0x9d, 0x84, 0xea, 0x5e,
+	0xa2, 0xe5, 0x9d, 0xf0, 0x41, 0x9d, 0x73, 0x98, 0x6f, 0x3f, 0x51, 0xdb, 0x0c, 0xb8, 0x63, 0xa6,
+	0x88, 0x50, 0xa6, 0x95, 0x66, 0xa9, 0xc6, 0xff, 0xba, 0x92, 0x1f, 0xd4, 0xf9, 0x52, 0xfc, 0xbc,
+	0x0c, 0x0d, 0xef, 0x24, 0x2c, 0xed, 0x09, 0x16, 0xf1, 0x1b, 0x38, 0xae, 0xc0, 0x7e, 0x73, 0x31,
+	0xfb, 0x2b, 0xa5, 0xec, 0xdf, 0x86, 0x0b, 0x05, 0xee, 0x7b, 0x09, 0x66, 0x51, 0x59, 0x52, 0x5b,
+	0x92, 0x03, 0xd5, 0xca, 0x72, 0xa0, 0x1f, 0x4d, 0x47, 0x6e, 0x2e, 0xc1, 0x20, 0x8a, 0xcb, 0x59,
+	0x73, 0x40, 0xd9, 0xeb, 0xc9, 0xfa, 0x7f, 0x3a, 0x0d, 0x55, 0xd9, 0xf1, 0x05, 0xe0, 0x5c, 0x18,
+	0xbd, 0x38, 0x3d, 0xaf, 0x47, 0x80, 0xc3, 0x48, 0x20, 0x62, 0x19, 0xd8, 0x83, 0xb1, 0x9f, 0x96,
+	0x2f, 0x39, 0x9b, 0x36, 0x10, 0xa2, 0x7f, 0x17, 0x2e, 0x17, 0x78, 0x92, 0x79, 0xeb, 0xfc, 0xaa,
+	0xaa, 0x0e, 0xeb, 0x94, 0x0b, 0x31, 0xcb, 0x59, 0x21, 0xaa, 0x8b, 0x19, 0x11, 0xc1, 0xf6, 0x69,
+	0x0c, 0xce, 0x61, 0x3e, 0x46, 0xae, 0x17, 0xde, 0x49, 0x98, 0x8e, 0xd1, 0xdf, 0x83, 0x33, 0x33,
+	0xea, 0x90, 0xd5, 0x5f, 0x14, 0xa6, 0x96, 0x56, 0x7f, 0xa5, 0x24, 0xaa, 0x8a, 0xea, 0xd3, 0x2a,
+	0xd2, 0xff, 0xb0, 0x3e, 0x5f, 0x14, 0x34, 0xb5, 0x5b, 0xb0, 0x46, 0x8a, 0x90, 0x6c, 0xc9, 0x65,
+	0xb2, 0xd2, 0x49, 0xa5, 0x0e, 0xba, 0xf4, 0x8d, 0x64, 0xef, 0x3a, 0x6c, 0xd1, 0xf1, 0x18, 0x36,
+	0x1a, 0x56, 0xab, 0x8c, 0x05, 0x83, 0x71, 0x24, 0xbf, 0x43, 0xa8, 0xf6, 0x35, 0xe8, 0x50, 0x99,
+	0xd4, 0xcc, 0x0d, 0xb6, 0xb8, 0x20, 0x1f, 0x64, 0xaa, 0xe0, 0x13, 0x50, 0x38, 0xf8, 0xe0, 0x24,
+	0xc4, 0x74, 0xed, 0xd8, 0x71, 0x5d, 0x11, 0xd1, 0x97, 0xcd, 0x85, 0x5f, 0x76, 0x78, 0x34, 0x7e,
+	0x2a, 0x67, 0x86, 0x34, 0x4f, 0xac, 0xad, 0x64, 0x33, 0x83, 0xdf, 0xd0, 0x94, 0x9f, 0x87, 0xed,
+	0xa9, 0x04, 0x22, 0xb3, 0x65, 0xfd, 0x08, 0x5e, 0x28, 0xbc, 0xa3, 0x53, 0xdb, 0x1c, 0xa2, 0x0f,
+	0x17, 0xec, 0x3f, 0x2f, 0x40, 0xc7, 0xb2, 0x6d, 0xa5, 0x65, 0xb9, 0x6e, 0xb4, 0x2d, 0xdb, 0xe6,
+	0x76, 0xe5, 0xec, 0xa1, 0xc1, 0x5f, 0xab, 0x4d, 0x4d, 0x57, 0x4e, 0x2a, 0xeb, 0xf0, 0x5e, 0x85,
+	0xb5, 0xd4, 0x39, 0x7d, 0x5b, 0xa4, 0x7b, 0x82, 0x2e, 0xc3, 0xf6, 0x11, 0x94, 0x1b, 0x38, 0x8f,
+	0xa8, 0x2b, 0x06, 0xce, 0x03, 0x0a, 0x6c, 0xa5, 0x85, 0x07, 0xc9, 0x96, 0x7e, 0x13, 0x2e, 0x4d,
+	0xf1, 0xc0, 0xaa, 0xb8, 0x2f, 0x2c, 0x5b, 0x44, 0xf3, 0x05, 0xd6, 0xdf, 0x9b, 0xd1, 0xd5, 0x7b,
+	0xce, 0xe0, 0x98, 0x77, 0xd8, 0x4b, 0x97, 0x15, 0x2e, 0xc3, 0xc5, 0x29, 0x64, 0x7b, 0xb8, 0xad,
+	0xdc, 0xb3, 0x3c, 0x8b, 0xf6, 0x48, 0xfa, 0xd7, 0xb3, 0x3d, 0x7c, 0x3a, 0xe0, 0x61, 0x28, 0x22,
+	0x2b, 0x09, 0x88, 0xd6, 0x79, 0x68, 0x07, 0xf2, 0x51, 0x6a, 0x29, 0x7b, 0xd6, 0x05, 0xac, 0x17,
+	0xec, 0xa5, 0xc4, 0xa1, 0x17, 0x39, 0xd7, 0xcc, 0x4c, 0x34, 0x66, 0x66, 0x42, 0x1e, 0x39, 0x28,
+	0xe4, 0xc8, 0xbe, 0x9d, 0x11, 0x46, 0x26, 0xbf, 0x02, 0x5a, 0x21, 0xe2, 0xb2, 0x85, 0x32, 0xbb,
+	0x5b, 0x4a, 0xcc, 0x2d, 0x71, 0x9f, 0xfa, 0x47, 0x76, 0x9f, 0xc6, 0x12, 0xee, 0xb3, 0x40, 0x06,
+	0x8c, 0x20, 0x9f, 0x7d, 0x19, 0xfe, 0x7c, 0x3a, 0xbd, 0xd9, 0x19, 0x4f, 0x70, 0x8f, 0xb3, 0xdc,
+	0x46, 0xfb, 0x0a, 0xac, 0xd1, 0x46, 0x4a, 0x5d, 0x74, 0x56, 0x0c, 0x40, 0xd8, 0x3e, 0xaf, 0x3b,
+	0x33, 0x2e, 0x5d, 0x30, 0xf8, 0xe6, 0x4c, 0x75, 0x85, 0x5b, 0xfd, 0xa3, 0xc0, 0x4d, 0x53, 0x15,
+	0x3e, 0x91, 0x70, 0x37, 0x70, 0x6d, 0xfd, 0x5f, 0x2a, 0x78, 0x5e, 0xb2, 0x03, 0xed, 0x0b, 0x81,
+	0xa1, 0x3d, 0x5e, 0x7c, 0x90, 0xaf, 0x85, 0x43, 0x0d, 0x11, 0x17, 0x37, 0x7d, 0xcd, 0xa5, 0x37,
+	0x7d, 0xa7, 0x4f, 0x22, 0xb6, 0x4b, 0x17, 0x7f, 0xf4, 0xec, 0x93, 0xac, 0x58, 0xb6, 0x97, 0x55,
+	0x92, 0x64, 0xfc, 0xe0, 0x92, 0x53, 0xd6, 0x14, 0x6a, 0xd1, 0xf3, 0xbe, 0xad, 0x3d, 0x07, 0xab,
+	0x36, 0x45, 0x86, 0xac, 0x0c, 0x4f, 0x4f, 0x85, 0x19, 0x68, 0x94, 0x86, 0x9c, 0x66, 0x1e, 0x72,
+	0x7e, 0x5a, 0x2f, 0x21, 0x3c, 0xb7, 0x74, 0x9f, 0xb1, 0x53, 0x2f, 0xb2, 0x73, 0x19, 0xba, 0xbc,
+	0x7b, 0x2f, 0x1c, 0xe4, 0x20, 0x10, 0x1f, 0x7e, 0xb8, 0x0a, 0x6b, 0x3c, 0xfd, 0x92, 0x6b, 0x59,
+	0x5f, 0x21, 0x18, 0x87, 0xb8, 0xd9, 0x2c, 0x96, 0x3b, 0x9e, 0x54, 0x0a, 0xe6, 0x72, 0x1b, 0xef,
+	0xa2, 0xba, 0x12, 0x46, 0xd7, 0x75, 0xae, 0xc3, 0xd6, 0x30, 0x12, 0xc2, 0x54, 0xa9, 0xf3, 0xd9,
+	0x8b, 0x0d, 0x84, 0xdf, 0xc9, 0x39, 0x28, 0xd6, 0x10, 0x3b, 0x53, 0x35, 0xc4, 0x99, 0xee, 0x2a,
+	0xcc, 0x76, 0x57, 0x95, 0x5e, 0x51, 0xb7, 0xd0, 0x2b, 0x7a, 0x9a, 0x2d, 0x22, 0xa4, 0xc6, 0xa9,
+	0xb4, 0x43, 0x96, 0x3d, 0xab, 0x66, 0x72, 0xea, 0x04, 0x6a, 0x7d, 0x89, 0x13, 0xa8, 0xfa, 0x0f,
+	0xf3, 0x1b, 0x15, 0x44, 0xf9, 0x54, 0x04, 0x2f, 0x43, 0x97, 0x5f, 0xb1, 0xa0, 0x32, 0xd4, 0x13,
+	0x88, 0xe5, 0x9c, 0x9e, 0xab, 0xc6, 0xec, 0x5c, 0x55, 0xdf, 0x94, 0xd0, 0x3f, 0xa4, 0xbb, 0x00,
+	0xb7, 0x9f, 0x85, 0xc2, 0xa6, 0x6e, 0xde, 0x3d, 0xe1, 0xd2, 0x5d, 0x00, 0x1d, 0xd6, 0xfb, 0xc2,
+	0x3c, 0x12, 0x6e, 0x28, 0x6c, 0xa5, 0x6b, 0xd3, 0xed, 0x8b, 0x7b, 0x04, 0x7b, 0x4c, 0x37, 0x90,
+	0x8a, 0xcd, 0xa1, 0x25, 0x5b, 0x6c, 0x3f, 0x07, 0x1a, 0xe2, 0x37, 0xbd, 0x78, 0x64, 0xd2, 0x95,
+	0x3c, 0xe5, 0x82, 0xd7, 0x26, 0xbe, 0x39, 0x88, 0x47, 0x18, 0xcf, 0xa9, 0x4a, 0xfb, 0x83, 0x12,
+	0x3e, 0xab, 0x6d, 0x7f, 0x86, 0xfb, 0xfa, 0x7c, 0xee, 0x1b, 0x4b, 0x73, 0xaf, 0xdf, 0xc4, 0x6c,
+	0x22, 0xe7, 0x87, 0x73, 0x20, 0xcb, 0x3f, 0xa6, 0x43, 0x77, 0xe2, 0x09, 0x1d, 0xf8, 0x4a, 0xac,
+	0x28, 0x51, 0x62, 0x76, 0x9b, 0x00, 0x18, 0x5c, 0xfe, 0xa1, 0x36, 0xe7, 0xeb, 0x6a, 0xb1, 0xbe,
+	0x29, 0x0f, 0xaf, 0x28, 0xa6, 0x57, 0xac, 0x18, 0xe7, 0x18, 0x11, 0x19, 0xaf, 0x51, 0x91, 0x44,
+	0xab, 0xdd, 0x96, 0x05, 0x37, 0x42, 0xa1, 0x54, 0x5e, 0x17, 0xa2, 0x58, 0x4b, 0x0f, 0xaa, 0x51,
+	0x36, 0x52, 0x10, 0xac, 0x39, 0x25, 0xd8, 0xdb, 0xe8, 0x5b, 0x39, 0x0a, 0xf5, 0x04, 0xa0, 0xe5,
+	0x1f, 0xcb, 0x63, 0xf0, 0x54, 0xe2, 0xa1, 0xfc, 0xae, 0xc6, 0x69, 0xe7, 0x60, 0x1c, 0x71, 0x7e,
+	0xf7, 0xbb, 0xb4, 0xf1, 0xdc, 0xf7, 0x4f, 0x9c, 0xc4, 0xc2, 0xef, 0x77, 0xc4, 0xa3, 0x20, 0x4f,
+	0xd0, 0x5e, 0x84, 0x75, 0xcf, 0x8a, 0x13, 0x11, 0x99, 0xfe, 0x18, 0x61, 0xd2, 0x26, 0xd7, 0x18,
+	0xf8, 0x80, 0x60, 0x18, 0x38, 0xe4, 0x20, 0xe5, 0xf6, 0x25, 0x43, 0x70, 0xd6, 0xdf, 0x01, 0x5a,
+	0x0c, 0x94, 0x59, 0xbf, 0x56, 0x3c, 0x56, 0x9c, 0xd1, 0x66, 0xba, 0xef, 0x5b, 0x2e, 0x1f, 0x81,
+	0xc2, 0xaf, 0x70, 0xde, 0x7f, 0x52, 0xc9, 0x62, 0xf5, 0xbc, 0xcd, 0x30, 0x5e, 0x5f, 0xc8, 0x78,
+	0x63, 0x1e, 0xe3, 0xcd, 0x8f, 0xc2, 0xf8, 0xef, 0xd3, 0x71, 0xc7, 0x32, 0xc6, 0xf7, 0x76, 0x3e,
+	0x33, 0xda, 0xfd, 0xab, 0x39, 0x4c, 0x7e, 0xc6, 0xf5, 0x6b, 0xe1, 0x36, 0x2d, 0x1f, 0xb5, 0x27,
+	0x5c, 0x1e, 0x28, 0xef, 0x2d, 0x2a, 0xb4, 0x6b, 0xd3, 0xb4, 0x5f, 0x82, 0x4d, 0x5b, 0xb8, 0xa6,
+	0x47, 0xe3, 0xd5, 0xa2, 0xc1, 0xba, 0x9d, 0x62, 0xa1, 0x60, 0xfd, 0x03, 0x3a, 0x7b, 0x31, 0xcd,
+	0x89, 0xbc, 0xc6, 0x46, 0xd8, 0x64, 0x1e, 0x92, 0x49, 0x22, 0xf7, 0x31, 0x92, 0xc7, 0x45, 0xd3,
+	0xf7, 0x2a, 0xac, 0xd0, 0xe5, 0x07, 0x39, 0x77, 0x73, 0x96, 0x35, 0x1e, 0xa7, 0xff, 0xc1, 0x42,
+	0x86, 0xe6, 0xe6, 0x27, 0x19, 0x9b, 0xf5, 0x79, 0x6c, 0x36, 0x2a, 0xd9, 0x6c, 0x9e, 0x92, 0xcd,
+	0xdf, 0x6c, 0xc2, 0xd6, 0xa1, 0x35, 0x79, 0x18, 0xd9, 0x22, 0xea, 0x59, 0x27, 0x22, 0xbb, 0x58,
+	0x16, 0x04, 0x76, 0xac, 0xac, 0xb9, 0xf4, 0xcc, 0xd9, 0x2f, 0xbf, 0x52, 0x76, 0x57, 0x1d, 0x82,
+	0xd0, 0xe6, 0x2a, 0x7b, 0x5d, 0xe8, 0x6f, 0x22, 0x84, 0x72, 0x93, 0x4b, 0xd0, 0x1d, 0x84, 0x66,
+	0x80, 0xc4, 0xf2, 0xcc, 0xba, 0x33, 0x08, 0x89, 0x3c, 0x27, 0x83, 0x96, 0x97, 0x1d, 0xf7, 0xaa,
+	0x1b, 0xf2, 0x09, 0xd5, 0xc4, 0x19, 0x11, 0x37, 0xa3, 0xf8, 0x01, 0x37, 0x30, 0x8c, 0x2a, 0x8c,
+	0x82, 0x81, 0x88, 0x63, 0x5e, 0x25, 0xb9, 0xec, 0xbc, 0x45, 0x6f, 0x0e, 0xf9, 0x05, 0x25, 0x58,
+	0x97, 0xa1, 0xcb, 0xa3, 0xf9, 0xb6, 0x71, 0x9b, 0xb3, 0x05, 0x02, 0x51, 0xe3, 0x3b, 0x4d, 0xdb,
+	0x3a, 0x79, 0xda, 0x36, 0x95, 0xd1, 0xc0, 0x32, 0x77, 0x6a, 0xae, 0xc0, 0x5a, 0x6c, 0x1f, 0xe7,
+	0xb2, 0x76, 0x49, 0x17, 0x10, 0xdb, 0xc7, 0xa9, 0xb0, 0x17, 0x01, 0x42, 0x6b, 0x62, 0x7a, 0x22,
+	0x39, 0x0a, 0xb8, 0xd4, 0xdc, 0x31, 0x3a, 0xa1, 0x35, 0x39, 0x20, 0x00, 0x26, 0x2f, 0xf8, 0x7a,
+	0x30, 0x8e, 0x22, 0xe1, 0x0f, 0x26, 0x54, 0x71, 0xee, 0x18, 0xdd, 0xd0, 0x9a, 0xec, 0x4a, 0x10,
+	0x1d, 0xaa, 0xb0, 0x26, 0x2c, 0xf6, 0x06, 0xdb, 0x49, 0x68, 0x4d, 0x52, 0x69, 0xe9, 0xeb, 0x23,
+	0xcb, 0xf7, 0x85, 0xbb, 0xbd, 0xc9, 0xd4, 0xf1, 0x63, 0x86, 0x68, 0x67, 0xa0, 0x49, 0xf3, 0xbb,
+	0x45, 0x7a, 0x68, 0xc4, 0xfb, 0xb6, 0xfe, 0x0c, 0xb6, 0x7a, 0xbd, 0x43, 0x6b, 0x82, 0x36, 0x80,
+	0xb6, 0x80, 0x1e, 0xb3, 0x0b, 0x1b, 0x88, 0x47, 0x8a, 0x91, 0xdf, 0x80, 0x2b, 0x1e, 0xad, 0x9f,
+	0xb6, 0x20, 0x03, 0x59, 0x67, 0x39, 0xe5, 0xfd, 0xf0, 0xd8, 0x3a, 0x11, 0x26, 0xdf, 0x28, 0x92,
+	0x37, 0xd8, 0x01, 0x41, 0xdc, 0x27, 0xd6, 0xbd, 0x29, 0xca, 0xd5, 0xae, 0x31, 0xcb, 0x4f, 0x7d,
+	0x69, 0x7e, 0xf4, 0x17, 0xe8, 0x5a, 0x17, 0x93, 0x23, 0xe8, 0xc3, 0xf7, 0x70, 0xce, 0x28, 0xd1,
+	0x7d, 0xa2, 0x0f, 0x67, 0xde, 0x1e, 0xcb, 0xb7, 0xc8, 0xd6, 0x3d, 0x38, 0x93, 0x33, 0x10, 0x14,
+	0x12, 0x8e, 0x05, 0x3c, 0x6c, 0xa4, 0x3c, 0x30, 0x3e, 0xfd, 0x17, 0xe9, 0x9a, 0xb9, 0x42, 0x07,
+	0xc3, 0xe1, 0x27, 0xa1, 0x6f, 0xfd, 0x1d, 0x5c, 0x29, 0xf6, 0xac, 0x80, 0x2a, 0x40, 0x3f, 0xff,
+	0xda, 0x6b, 0x87, 0x41, 0x9c, 0x1e, 0x82, 0xc1, 0x39, 0xbd, 0x02, 0x6b, 0xb2, 0xb9, 0x9a, 0x77,
+	0xd8, 0x56, 0x0c, 0xe0, 0x0e, 0x2b, 0xb1, 0xf6, 0xdd, 0x6a, 0x04, 0xd5, 0x53, 0x73, 0x07, 0xd6,
+	0xd3, 0xae, 0xaa, 0xaa, 0x95, 0x62, 0xea, 0x38, 0x85, 0x54, 0x36, 0x58, 0xbb, 0x21, 0xf7, 0x55,
+	0x89, 0xf8, 0x9b, 0x98, 0xce, 0x2a, 0xe3, 0xee, 0x07, 0x23, 0xe4, 0xfa, 0x22, 0x00, 0x75, 0x6d,
+	0xd8, 0xdc, 0xe5, 0x42, 0x41, 0x10, 0xca, 0x82, 0xed, 0xd9, 0xaf, 0x90, 0xd5, 0x1b, 0xd0, 0x76,
+	0x83, 0x91, 0xda, 0x49, 0xbc, 0x50, 0xc5, 0x0f, 0xd2, 0x69, 0xb9, 0xc1, 0x68, 0xea, 0xe0, 0x6e,
+	0x5d, 0x3d, 0xb8, 0xfb, 0x47, 0x94, 0xe2, 0x28, 0x1f, 0x15, 0x9a, 0xff, 0x4a, 0xd7, 0xba, 0x56,
+	0xe8, 0x5a, 0xbf, 0x02, 0x9f, 0x3b, 0xb2, 0x62, 0xa5, 0xb1, 0xce, 0xd1, 0x8c, 0x51, 0x9f, 0x39,
+	0xb2, 0xe2, 0x0c, 0x0d, 0x6f, 0xf1, 0x76, 0xa1, 0x1b, 0x3c, 0xf5, 0x45, 0x64, 0xd2, 0x01, 0xa6,
+	0x25, 0x72, 0x70, 0xa0, 0xcf, 0xe8, 0x59, 0xff, 0x8f, 0x7a, 0x15, 0xaf, 0xd5, 0x73, 0x58, 0x79,
+	0x28, 0xa1, 0xd8, 0x77, 0x6f, 0x2c, 0xd3, 0x77, 0x3f, 0x07, 0xed, 0x28, 0xe8, 0x07, 0x49, 0x7e,
+	0xe8, 0xb8, 0x45, 0xcf, 0xfb, 0xb6, 0xf6, 0x65, 0x38, 0x93, 0xde, 0x24, 0x10, 0x6e, 0x62, 0xf1,
+	0xd4, 0xca, 0x5e, 0xa4, 0xbc, 0x32, 0x80, 0x70, 0x8a, 0x68, 0x77, 0x64, 0xd7, 0x36, 0xeb, 0xdc,
+	0xaf, 0x96, 0x68, 0xa5, 0xc2, 0xbc, 0xf0, 0xc3, 0xb4, 0x75, 0x7f, 0x58, 0x7a, 0x0c, 0xa0, 0x75,
+	0x6a, 0x64, 0x33, 0x87, 0x01, 0xf4, 0xbf, 0xa1, 0xfa, 0x6f, 0xb9, 0x51, 0xc4, 0x63, 0x37, 0x99,
+	0x6b, 0x1a, 0xf2, 0x85, 0x72, 0x0e, 0x31, 0x0c, 0xe8, 0xa6, 0xce, 0x27, 0x61, 0x03, 0x98, 0xfe,
+	0xa5, 0xd5, 0x3d, 0xbe, 0xa9, 0xca, 0x37, 0xeb, 0x64, 0x05, 0x94, 0xd9, 0xd3, 0xff, 0x75, 0x01,
+	0xff, 0x1f, 0xc1, 0x5c, 0x66, 0xe8, 0x36, 0x66, 0xe9, 0xe2, 0x56, 0x54, 0x78, 0x61, 0x32, 0x31,
+	0x53, 0x1c, 0xcc, 0x5c, 0x97, 0x80, 0xac, 0xf1, 0xd9, 0x59, 0x5f, 0xf9, 0x48, 0xb3, 0xae, 0xff,
+	0x5e, 0x7d, 0xbe, 0x8c, 0xf2, 0x9f, 0xaf, 0xf8, 0x89, 0x9a, 0x1c, 0xae, 0xfa, 0xc9, 0x50, 0xde,
+	0x8a, 0x4e, 0x03, 0x26, 0x45, 0x37, 0xbe, 0x1d, 0x2d, 0xdd, 0x77, 0x2b, 0xcc, 0x48, 0x72, 0xc5,
+	0x5d, 0xdb, 0x83, 0x35, 0xc4, 0x93, 0xb1, 0xdc, 0x38, 0x35, 0xcb, 0xe0, 0x27, 0x99, 0x9d, 0xbe,
+	0x04, 0x9b, 0xb4, 0x09, 0x0f, 0x92, 0x23, 0x11, 0x99, 0xa3, 0xf4, 0xf2, 0x7b, 0xdb, 0x58, 0x47,
+	0xf0, 0x43, 0x84, 0xde, 0xc5, 0x9c, 0xea, 0x45, 0x58, 0xcf, 0xed, 0x39, 0xaf, 0x3b, 0xad, 0x65,
+	0x40, 0x94, 0x60, 0x66, 0x3e, 0xe4, 0x3d, 0xa8, 0x82, 0x1d, 0x7c, 0x58, 0xc3, 0x95, 0x4f, 0xe1,
+	0x8c, 0x0e, 0x1d, 0xce, 0x69, 0x9e, 0x5d, 0x87, 0xad, 0xbe, 0x15, 0x8b, 0xb4, 0x33, 0xa6, 0xfc,
+	0xf3, 0x97, 0x0d, 0x84, 0xf3, 0xa7, 0xe4, 0xbc, 0xaf, 0xc1, 0xd9, 0xb4, 0x7d, 0xe6, 0x27, 0x22,
+	0x3a, 0xb1, 0x5c, 0xb5, 0xa4, 0xa1, 0x45, 0xb2, 0xfc, 0xcb, 0xaf, 0xd2, 0x7f, 0x5f, 0xe3, 0x07,
+	0x4f, 0xd5, 0xd3, 0x69, 0x2d, 0x3f, 0x78, 0x4a, 0xa1, 0xfe, 0x9f, 0xaa, 0xf9, 0xe4, 0x15, 0x3a,
+	0x9b, 0x2d, 0x35, 0x7b, 0xab, 0x2d, 0xca, 0xde, 0xe4, 0x44, 0x1a, 0x79, 0x0e, 0xf7, 0xff, 0x24,
+	0x9f, 0x3d, 0x65, 0xaa, 0xd9, 0xc9, 0x15, 0xae, 0x19, 0x2c, 0x7d, 0x5e, 0xb5, 0x70, 0x49, 0x70,
+	0x5d, 0xde, 0x78, 0xd0, 0x7f, 0x5a, 0x83, 0x17, 0x7b, 0x3d, 0x79, 0x08, 0xd6, 0x11, 0xf1, 0x6e,
+	0xe0, 0xba, 0x7c, 0x71, 0x8e, 0xff, 0x47, 0x4f, 0x7a, 0x0f, 0xfb, 0x32, 0x74, 0xd3, 0xd3, 0xad,
+	0xf9, 0x7e, 0x00, 0x52, 0x10, 0xe7, 0xb1, 0x59, 0x6b, 0x34, 0x8d, 0x03, 0x1d, 0x29, 0xb1, 0xfd,
+	0x8c, 0x6e, 0x9d, 0x12, 0x42, 0xd3, 0x75, 0x3c, 0x27, 0xa1, 0x13, 0x45, 0x0d, 0x79, 0xeb, 0x94,
+	0xe0, 0xf7, 0x11, 0xfc, 0x60, 0xec, 0x69, 0x6f, 0x42, 0x3b, 0x14, 0x49, 0xf5, 0xfd, 0xa3, 0xdb,
+	0xcf, 0xd8, 0xf1, 0xb8, 0xda, 0x14, 0x8a, 0x84, 0x3c, 0xfb, 0x3f, 0x4f, 0x21, 0x47, 0x75, 0x04,
+	0x9b, 0x92, 0xae, 0x3e, 0x23, 0xdd, 0x0d, 0xf5, 0xe2, 0xcf, 0xc2, 0x62, 0x7c, 0x7e, 0xf3, 0xa7,
+	0xa8, 0x95, 0xe6, 0xb4, 0x56, 0x54, 0x59, 0x57, 0x4e, 0x2d, 0xab, 0x07, 0x9a, 0x22, 0x9e, 0x75,
+	0x42, 0x07, 0x28, 0x3e, 0x35, 0x19, 0xf4, 0xef, 0x9f, 0x42, 0xb5, 0xb2, 0xe7, 0xff, 0xb1, 0x4c,
+	0x84, 0xfe, 0xfd, 0x16, 0x99, 0xc8, 0x60, 0x1c, 0x29, 0x06, 0xb2, 0xc6, 0xd0, 0xdd, 0x71, 0xf4,
+	0x60, 0xec, 0xe9, 0x8f, 0xb2, 0x7f, 0xfe, 0x74, 0x4f, 0x58, 0xb6, 0x8c, 0xb5, 0xa5, 0xb7, 0x38,
+	0x8e, 0x84, 0xa5, 0xf4, 0xf2, 0x57, 0xf1, 0x51, 0xba, 0x01, 0x6d, 0xfd, 0x1a, 0xca, 0x3f, 0x9a,
+	0xea, 0xaf, 0x92, 0x06, 0xde, 0xf8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4c, 0xaf, 0x0a, 0x3a,
+	0x4c, 0x4e, 0x00, 0x00,
 }

+ 3 - 1
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/logic.proto

@@ -19,11 +19,13 @@ message WebUpdateMailItem {
     int32 mail_type                     = 7;
 }
 
-message SSWebGMChatMsgNtf {    //project db
+message SSWebGMChatMsgNtf {    //project db|social|gmweb
     uint64 uid                          = 1;
     uint64 target_uid                   = 2;
     ChatMessageInfo content             = 3;
     int32 msg_type                      = 4;
+    string chat_self_name               = 5; //聊天玩家的昵称
+    int32 select_zone_id                = 6; //玩家选择登录的服务器id
 }
 
 message SSWebGMAddMailNtf {    //project social|game|db

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 176 - 103
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/login.pb.go


+ 171 - 0
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/login.proto

@@ -108,6 +108,7 @@ message SCStartupInfoNtf {
 
     bool func_disable                   = 100; //功能屏蔽
     uint64 service_start_time           = 101; //服务器开服时间
+    RoleBT          role_bt             = 102; //bt
 }
 //客户端没收到多条协议,需要做数据判断,有数据就添加没数据不处理,例如pet_manual
 //数据为空客户端不能直接拿空数据覆盖
@@ -287,6 +288,7 @@ message SCRoleBaseInfoNtf {
     RoleData    role_data            = 3; //玩家附属属性
     repeated KeyValueType res_list   = 4; //玩家其他资源列表(不放背包的资源)
     int32     repress_skill_pvp_val  = 5; //技能竞技压制值
+    int32       max_credit_recharge  = 6; // 充值钱包额度上限值
 }
 //伙伴信息变更通知
 message SCRoleHeroInfoNtf {
@@ -1030,6 +1032,13 @@ message SCPlayerBattleDataChangeNtf{
     uint64      max_income_time          = 4; //最大收益累计时间
     QuickBattleData quick_battle		 = 5; //快速战斗
     uint32      reward_map_count         = 6; //未领取奖励次数
+
+}
+// 战斗加速时间通知
+message SCPlayerBattleAcctTimeNtf {
+    // 战斗加速时间(客户端显示根据last_record_battle_acce_time+battle_acce_duration为最大能使用的结束时间戳)
+    uint64 last_record_battle_acce_time  = 1; // 上次记录时的时间
+    uint64 battle_acce_duration          = 2; // 当前剩余的时间
 }
 //获取小地图排名
 message CSGetMapRankReq {   //project game  //RouteRule game
@@ -1473,6 +1482,7 @@ message SCClimbingTowerInfoAck {
     int32    now_tower_level           = 1; //当前可通关层数
     int64    pass_time                 = 2; //当前爬塔通过时间戳
     repeated FriendTowerInfo  infos    = 3; //好友/工会通关信息,自己可通关 + 2
+    uint64   tower_level_day_reward_time = 4;
 }
 
 message CSFriendPassTowerInfoReq { //project game  //RouteRule game
@@ -2663,6 +2673,33 @@ message SCActivitySignInAck {
     int32 sign_days                             = 6; //当前签到天数
 }
 
+// bt砸蛋活动
+message CSActivitySmashEggsReq {    //project game  //RouteRule game
+    int32 activity_id                           = 1; // 活动id
+    int32 draw_count                            = 2; // 抽取次数(单抽,10连抽)
+    int32 draw_type                             = 3; // 4金蛋 5彩蛋
+}
+message SCActivitySmashEggsAck {
+    int32 error                                 = 1; //错误码
+    int32 activity_id                           = 2; //活动ID
+    int32 draw_count                            = 3; //抽卡类型[1:抽1次, 5:抽5次, 10:抽10次]
+    int32 draw_type                             = 4; // 4金蛋 5彩蛋
+
+    repeated DrawItem           item_list       = 5; //抽取的奖励列表
+    repeated DrawItem           extra_item      = 6; //保底奖励
+    int32 draw_times                            = 7; //draw_type对应的抽取次数
+    int32 add_point                             = 8; //增加的保底点数
+    repeated SystemMessage msg_list             = 9; // 活动内的操作消息(砸蛋奖励获取消息)
+}
+// 砸蛋记录获取
+message CSActivitySmashEggsMsgReq { //project game  //RouteRule game
+    int32 activity_id                           = 1; // 活动id
+    int32 draw_type                             = 2; // 4金蛋 5彩蛋
+}
+message SCActivitySmashEggsMsgAck {
+    repeated SystemMessage act_msg_list         = 1; // 活动内的操作消息(砸蛋奖励获取消息)
+}
+
 /////////////////////////////////////////////////////////拉新(好友邀请功能)
 message SCInvitationStartupNtf {
     RoleInvitation invitation_info                      = 1;
@@ -2749,6 +2786,9 @@ message SCPayInfoGetAck {
 message SCPayInfoNtf {
     float      total_recharge        = 1; //累计充值
     float      day_recharge          = 2; //每日累计充值
+    float      bt_zhen_day_recharge  = 3; // bt真每日累计充值
+    int32      bt_jia_day_recharge   = 4; // bt假每日累计充值
+    uint64     bt_jia_total_recharge = 5; // bt假累计充值
 }
 //上线获取成功成但是没有获取奖励的订单数据
 message CSPayInfoOrderOKListGetReq {    //project game  //RouteRule game
@@ -2757,6 +2797,30 @@ message SCPayInfoOrderOKListGetAck {
     repeated KeyValueType reward_item_list              = 1; //奖励物品
 }
 
+// 充值钱包商店购买(假钱购买)
+// bt服务器版本使用
+message CSCreditRechargeShopItemBuyReq {    //project game  //RouteRule game
+    int32 goods_id                                      = 1;
+    int32 count                                         = 2;
+}
+message SCCreditRechargeShopItemBuyAck {
+    int32 error                                         = 1; //错误码
+    int32 goods_id                                      = 2;
+    repeated KeyValueType reward_item_list              = 3; //奖励物品
+    RuneShopItem shop_item                              = 4;
+}
+// 充值钱包当前已经使用额度和使用额度上限变化通知
+// 特权商店数据变化通知
+message SCRuneBaseDataNtf {
+    RuneBaseData rune_base_data                         = 1;
+}
+// 特权卡商店每日礼包领取
+message CSRuneSpecialPrivilegeRewardReq {   //project game  //RouteRule game
+}
+message SCRuneSpecialPrivilegeRewardAck {
+    int32 error                                         = 1; //错误码
+    repeated KeyValueType reward_item_list              = 2; //奖励物品
+}
 /////////////////////////////////////////////////////////百人道场
 //基础收益 / 占领收益 / 剩余挑战次数 变更通知
 message SCDaoChang100DataChangNtf{
@@ -3567,3 +3631,110 @@ message SCCombineServerInfoAck {
 	string notice		    = 3;	//合服公告
 }
 
+/////////////////////////////////////////////////////////
+//bt 服务器使用
+// 通用错误通知协议
+message SCErrorMessageNtf {
+    int32 error             = 1; //错误码
+}
+// 试炼之塔试炼馈赠(每天获取一次奖励)
+message CSClimbingTowerDayRewardReq {   //project game //RouteRule game
+}
+message SCClimbingTowerDayRewardAck {
+    int32 error                                     = 1;
+    repeated KeyValueType  reward_list              = 2; // 奖励内容
+    uint64 next_day_reward_time                     = 3; // 下次可领取奖励时间戳
+}
+// 波利商城
+message CSBoliShopLevelUpReq {  //project game //RouteRule game
+    int32 num                                       = 1; // 消耗RO币数量
+}
+message SCBoliShopLevelUpAck {
+    int32 error                                     = 1;
+    ShopData    shop_data                           = 2; // 商店信息
+}
+// 波利商城选择特权礼包
+message CSBoliShopRewardReq {   //project game //RouteRule game
+    int32 reward_level                              = 1; // 获取奖励的等级
+    int32 idx                                       = 2; //[1,3]
+}
+message SCBoliShopRewardAck {
+    int32 error                                     = 1;
+    repeated KeyValueType  reward_list              = 2; //奖励内容
+}
+// 波利商城购买
+message CSBoliShopBuyReq {  //project game //RouteRule game
+    int32 goods_id                                  = 1;
+    int32 goods_num                                 = 2;
+}
+message SCBoliShopBuyAck {
+   int32 error                                     = 1;
+   repeated KeyValueType  item_list                = 2; // 商品信息
+   int32 cur_num                                   = 3;
+   uint64 cur_buy_time                             = 4;
+   int32 goods_id                                  = 5;
+}
+// 获取商店信息
+// bt服务器获取购买信息
+// 100充值钱包商店
+// RO币礼包商城
+message CSBTShopInfoReq {   //project game   //RouteRule game
+   int32 shop_type                 = 1;    //商店类型
+   int32 sub_shop                  = 2;    //商店子类型
+}
+message SCBTShopInfoAck {
+    int32 shop_type                     = 1;    //商店类型
+    int32 sub_shop                      = 2;    //商店子类型
+    repeated RuneShopItem goods_list    = 3;    //商店道具类型
+    int64 end_time                      = 4;    //礼包商店截止时间(根据子类型)
+}
+// 获取波利商店信息
+message CSBoliShopInfoReq { //project game   //RouteRule game
+}
+message SCBoliShopInfoAck {
+    int32       error                               = 1;
+    ShopData    shop_data                           = 2; // 商店信息
+}
+message SCBoliDataChangeNtf {
+    BTBoliData boli_data                            = 3;
+}
+
+//RO币礼包购买
+message CSBTRoCoinShopItemBuyReq {  //project game   //RouteRule game
+    int32 goods_id                                      = 1;
+    int32 goods_num                                     = 2;
+}
+message SCBTRoCoinShopItemBuyAck {
+    int32 error                                         = 1; //错误码
+    int32 goods_id                                      = 2;
+    repeated KeyValueType reward_item_list              = 3; //奖励物品
+    RuneShopItem shop_item                              = 4;
+    int32 goods_type                                    = 5;
+    int32 sub_type                                      = 6;
+}
+////超值首充&百元大礼包
+message SCBTFirstRechargeNtf {
+    uint64 first_recharge_time                 = 1;
+    uint32 first_recharge_reward_state         = 2; //首充礼包档位奖励获取状态(位处理)
+}
+//超值首充奖励获取
+message CSBTFirstRechargeRewardReq {    //project game   //RouteRule game
+    int32 reward_idx                           = 1; //[1,3]
+}
+message SCBTFirstRechargeRewardAck {
+    int32 error                                = 1; //错误码
+    repeated KeyValueType reward_item_list     = 2; //奖励物品
+    int32 reward_idx                           = 3; //[1,3]
+}
+//百元大礼包领取奖励
+message SCBTRecharge100Ntf {
+    uint64 recharge100_time                    = 1; //充值解锁百元大礼包的时间戳
+    int32 recharge100_reward_day               = 2; //可领取哪几天的奖励(1表示可领取第一天奖励,2表示可领取前两天奖励)
+    int32 recharge100_reward_state             = 3; //已经领取到那一天的奖励(1表示第一天已经领取,2表示领取了1-2天的奖励)
+}
+message CSBTRecharge100RewardReq {  //project game   //RouteRule game
+}
+message SCBTRecharge100RewardAck {
+    int32 error                                = 1; //错误码
+    repeated KeyValueType reward_item_list     = 2; //奖励物品
+}

+ 652 - 530
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/messagedef.pb.go

@@ -721,6 +721,38 @@ const (
 	ProtoMsgId_SC_COMBINE_SERVER_ONLINE_NTF                    ProtoMsgId = 1711
 	ProtoMsgId_CS_COMBINE_SERVER_INFO_REQ                      ProtoMsgId = 1712
 	ProtoMsgId_SC_COMBINE_SERVER_INFO_ACK                      ProtoMsgId = 1713
+	ProtoMsgId_CS_CREDIT_RECHARGE_SHOP_ITEM_BUY_REQ            ProtoMsgId = 1714
+	ProtoMsgId_SC_CREDIT_RECHARGE_SHOP_ITEM_BUY_ACK            ProtoMsgId = 1715
+	ProtoMsgId_SC_RUNE_BASE_DATA_NTF                           ProtoMsgId = 1716
+	ProtoMsgId_CS_RUNE_SPECIAL_PRIVILEGE_REWARD_REQ            ProtoMsgId = 1717
+	ProtoMsgId_SC_RUNE_SPECIAL_PRIVILEGE_REWARD_ACK            ProtoMsgId = 1718
+	ProtoMsgId_SC_PLAYER_BATTLE_ACCT_TIME_NTF                  ProtoMsgId = 1719
+	ProtoMsgId_SC_ERROR_MESSAGE_NTF                            ProtoMsgId = 1720
+	ProtoMsgId_CS_CLIMBING_TOWER_DAY_REWARD_REQ                ProtoMsgId = 1723
+	ProtoMsgId_SC_CLIMBING_TOWER_DAY_REWARD_ACK                ProtoMsgId = 1724
+	ProtoMsgId_CS_BOLI_SHOP_LEVEL_UP_REQ                       ProtoMsgId = 1725
+	ProtoMsgId_CS_BOLI_SHOP_REWARD_REQ                         ProtoMsgId = 1727
+	ProtoMsgId_SC_BOLI_SHOP_REWARD_ACK                         ProtoMsgId = 1728
+	ProtoMsgId_CS_BOLI_SHOP_BUY_REQ                            ProtoMsgId = 1729
+	ProtoMsgId_SC_BOLI_DATA_CHANGE_NTF                         ProtoMsgId = 1733
+	ProtoMsgId_SC_BOLI_SHOP_LEVEL_UP_ACK                       ProtoMsgId = 1734
+	ProtoMsgId_SC_BOLI_SHOP_BUY_ACK                            ProtoMsgId = 1735
+	ProtoMsgId_CS_BT_SHOP_INFO_REQ                             ProtoMsgId = 1736
+	ProtoMsgId_SC_BT_SHOP_INFO_ACK                             ProtoMsgId = 1737
+	ProtoMsgId_CS_BOLI_SHOP_INFO_REQ                           ProtoMsgId = 1738
+	ProtoMsgId_SC_BOLI_SHOP_INFO_ACK                           ProtoMsgId = 1739
+	ProtoMsgId_CS_BT_RO_COIN_SHOP_ITEM_BUY_REQ                 ProtoMsgId = 1740
+	ProtoMsgId_SC_BT_RO_COIN_SHOP_ITEM_BUY_ACK                 ProtoMsgId = 1741
+	ProtoMsgId_CS_ACTIVITY_SMASH_EGGS_REQ                      ProtoMsgId = 1742
+	ProtoMsgId_SC_ACTIVITY_SMASH_EGGS_ACK                      ProtoMsgId = 1743
+	ProtoMsgId_CS_ACTIVITY_SMASH_EGGS_MSG_REQ                  ProtoMsgId = 1744
+	ProtoMsgId_SC_ACTIVITY_SMASH_EGGS_MSG_ACK                  ProtoMsgId = 1745
+	ProtoMsgId_SC_BT_FIRST_RECHARGE_NTF                        ProtoMsgId = 1746
+	ProtoMsgId_CS_BT_FIRST_RECHARGE_REWARD_REQ                 ProtoMsgId = 1747
+	ProtoMsgId_SC_BT_FIRST_RECHARGE_REWARD_ACK                 ProtoMsgId = 1748
+	ProtoMsgId_SC_BT_RECHARGE100_NTF                           ProtoMsgId = 1749
+	ProtoMsgId_CS_BT_RECHARGE100_REWARD_REQ                    ProtoMsgId = 1750
+	ProtoMsgId_SC_BT_RECHARGE100_REWARD_ACK                    ProtoMsgId = 1751
 	ProtoMsgId_SS_WEB_GM_CHAT_MSG_NTF                          ProtoMsgId = 3000
 	ProtoMsgId_SS_WEB_GM_ADD_MAIL_NTF                          ProtoMsgId = 3001
 	ProtoMsgId_SS_WEB_GM_BAN_NTF                               ProtoMsgId = 3002
@@ -971,6 +1003,8 @@ const (
 	ProtoMsgId_SS_WISH_BOX_DATA_SAVE_REQ                       ProtoMsgId = 5122
 	ProtoMsgId_SS_GET_RUSH_RANK_REWARD_REQ                     ProtoMsgId = 5123
 	ProtoMsgId_SS_GET_RUSH_RANK_REWARD_ACK                     ProtoMsgId = 5124
+	ProtoMsgId_SS_BT_DATA_SAVE_NTF                             ProtoMsgId = 5125
+	ProtoMsgId_SS_ACTIVITY_SMASH_EGGS_MSG_SAVE_NTF             ProtoMsgId = 5126
 	ProtoMsgId_SS_CROSS_YUAN_HANG_TRIAL_VIEW_LIST_REQ          ProtoMsgId = 6002
 	ProtoMsgId_SS_CROSS_YUAN_HANG_TRIAL_VIEW_LIST_ACK          ProtoMsgId = 6003
 	ProtoMsgId_SS_CROSS_YUAN_HANG_TRIAL_REQ                    ProtoMsgId = 6004
@@ -1713,6 +1747,38 @@ var ProtoMsgId_name = map[int32]string{
 	1711: "SC_COMBINE_SERVER_ONLINE_NTF",
 	1712: "CS_COMBINE_SERVER_INFO_REQ",
 	1713: "SC_COMBINE_SERVER_INFO_ACK",
+	1714: "CS_CREDIT_RECHARGE_SHOP_ITEM_BUY_REQ",
+	1715: "SC_CREDIT_RECHARGE_SHOP_ITEM_BUY_ACK",
+	1716: "SC_RUNE_BASE_DATA_NTF",
+	1717: "CS_RUNE_SPECIAL_PRIVILEGE_REWARD_REQ",
+	1718: "SC_RUNE_SPECIAL_PRIVILEGE_REWARD_ACK",
+	1719: "SC_PLAYER_BATTLE_ACCT_TIME_NTF",
+	1720: "SC_ERROR_MESSAGE_NTF",
+	1723: "CS_CLIMBING_TOWER_DAY_REWARD_REQ",
+	1724: "SC_CLIMBING_TOWER_DAY_REWARD_ACK",
+	1725: "CS_BOLI_SHOP_LEVEL_UP_REQ",
+	1727: "CS_BOLI_SHOP_REWARD_REQ",
+	1728: "SC_BOLI_SHOP_REWARD_ACK",
+	1729: "CS_BOLI_SHOP_BUY_REQ",
+	1733: "SC_BOLI_DATA_CHANGE_NTF",
+	1734: "SC_BOLI_SHOP_LEVEL_UP_ACK",
+	1735: "SC_BOLI_SHOP_BUY_ACK",
+	1736: "CS_BT_SHOP_INFO_REQ",
+	1737: "SC_BT_SHOP_INFO_ACK",
+	1738: "CS_BOLI_SHOP_INFO_REQ",
+	1739: "SC_BOLI_SHOP_INFO_ACK",
+	1740: "CS_BT_RO_COIN_SHOP_ITEM_BUY_REQ",
+	1741: "SC_BT_RO_COIN_SHOP_ITEM_BUY_ACK",
+	1742: "CS_ACTIVITY_SMASH_EGGS_REQ",
+	1743: "SC_ACTIVITY_SMASH_EGGS_ACK",
+	1744: "CS_ACTIVITY_SMASH_EGGS_MSG_REQ",
+	1745: "SC_ACTIVITY_SMASH_EGGS_MSG_ACK",
+	1746: "SC_BT_FIRST_RECHARGE_NTF",
+	1747: "CS_BT_FIRST_RECHARGE_REWARD_REQ",
+	1748: "SC_BT_FIRST_RECHARGE_REWARD_ACK",
+	1749: "SC_BT_RECHARGE100_NTF",
+	1750: "CS_BT_RECHARGE100_REWARD_REQ",
+	1751: "SC_BT_RECHARGE100_REWARD_ACK",
 	3000: "SS_WEB_GM_CHAT_MSG_NTF",
 	3001: "SS_WEB_GM_ADD_MAIL_NTF",
 	3002: "SS_WEB_GM_BAN_NTF",
@@ -1963,6 +2029,8 @@ var ProtoMsgId_name = map[int32]string{
 	5122: "SS_WISH_BOX_DATA_SAVE_REQ",
 	5123: "SS_GET_RUSH_RANK_REWARD_REQ",
 	5124: "SS_GET_RUSH_RANK_REWARD_ACK",
+	5125: "SS_BT_DATA_SAVE_NTF",
+	5126: "SS_ACTIVITY_SMASH_EGGS_MSG_SAVE_NTF",
 	6002: "SS_CROSS_YUAN_HANG_TRIAL_VIEW_LIST_REQ",
 	6003: "SS_CROSS_YUAN_HANG_TRIAL_VIEW_LIST_ACK",
 	6004: "SS_CROSS_YUAN_HANG_TRIAL_REQ",
@@ -2705,6 +2773,38 @@ var ProtoMsgId_value = map[string]int32{
 	"SC_COMBINE_SERVER_ONLINE_NTF":                    1711,
 	"CS_COMBINE_SERVER_INFO_REQ":                      1712,
 	"SC_COMBINE_SERVER_INFO_ACK":                      1713,
+	"CS_CREDIT_RECHARGE_SHOP_ITEM_BUY_REQ":            1714,
+	"SC_CREDIT_RECHARGE_SHOP_ITEM_BUY_ACK":            1715,
+	"SC_RUNE_BASE_DATA_NTF":                           1716,
+	"CS_RUNE_SPECIAL_PRIVILEGE_REWARD_REQ":            1717,
+	"SC_RUNE_SPECIAL_PRIVILEGE_REWARD_ACK":            1718,
+	"SC_PLAYER_BATTLE_ACCT_TIME_NTF":                  1719,
+	"SC_ERROR_MESSAGE_NTF":                            1720,
+	"CS_CLIMBING_TOWER_DAY_REWARD_REQ":                1723,
+	"SC_CLIMBING_TOWER_DAY_REWARD_ACK":                1724,
+	"CS_BOLI_SHOP_LEVEL_UP_REQ":                       1725,
+	"CS_BOLI_SHOP_REWARD_REQ":                         1727,
+	"SC_BOLI_SHOP_REWARD_ACK":                         1728,
+	"CS_BOLI_SHOP_BUY_REQ":                            1729,
+	"SC_BOLI_DATA_CHANGE_NTF":                         1733,
+	"SC_BOLI_SHOP_LEVEL_UP_ACK":                       1734,
+	"SC_BOLI_SHOP_BUY_ACK":                            1735,
+	"CS_BT_SHOP_INFO_REQ":                             1736,
+	"SC_BT_SHOP_INFO_ACK":                             1737,
+	"CS_BOLI_SHOP_INFO_REQ":                           1738,
+	"SC_BOLI_SHOP_INFO_ACK":                           1739,
+	"CS_BT_RO_COIN_SHOP_ITEM_BUY_REQ":                 1740,
+	"SC_BT_RO_COIN_SHOP_ITEM_BUY_ACK":                 1741,
+	"CS_ACTIVITY_SMASH_EGGS_REQ":                      1742,
+	"SC_ACTIVITY_SMASH_EGGS_ACK":                      1743,
+	"CS_ACTIVITY_SMASH_EGGS_MSG_REQ":                  1744,
+	"SC_ACTIVITY_SMASH_EGGS_MSG_ACK":                  1745,
+	"SC_BT_FIRST_RECHARGE_NTF":                        1746,
+	"CS_BT_FIRST_RECHARGE_REWARD_REQ":                 1747,
+	"SC_BT_FIRST_RECHARGE_REWARD_ACK":                 1748,
+	"SC_BT_RECHARGE100_NTF":                           1749,
+	"CS_BT_RECHARGE100_REWARD_REQ":                    1750,
+	"SC_BT_RECHARGE100_REWARD_ACK":                    1751,
 	"SS_WEB_GM_CHAT_MSG_NTF":                          3000,
 	"SS_WEB_GM_ADD_MAIL_NTF":                          3001,
 	"SS_WEB_GM_BAN_NTF":                               3002,
@@ -2955,6 +3055,8 @@ var ProtoMsgId_value = map[string]int32{
 	"SS_WISH_BOX_DATA_SAVE_REQ":                       5122,
 	"SS_GET_RUSH_RANK_REWARD_REQ":                     5123,
 	"SS_GET_RUSH_RANK_REWARD_ACK":                     5124,
+	"SS_BT_DATA_SAVE_NTF":                             5125,
+	"SS_ACTIVITY_SMASH_EGGS_MSG_SAVE_NTF":             5126,
 	"SS_CROSS_YUAN_HANG_TRIAL_VIEW_LIST_REQ":          6002,
 	"SS_CROSS_YUAN_HANG_TRIAL_VIEW_LIST_ACK":          6003,
 	"SS_CROSS_YUAN_HANG_TRIAL_REQ":                    6004,
@@ -3013,534 +3115,554 @@ func init() {
 func init() { proto.RegisterFile("messagedef.proto", fileDescriptor_80cd42c70b4e6668) }
 
 var fileDescriptor_80cd42c70b4e6668 = []byte{
-	// 8457 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x7d, 0xe7, 0x97, 0x2c, 0x47,
-	0xb1, 0xe7, 0xb2, 0x86, 0x3b, 0x5d, 0x55, 0x0d, 0xa3, 0x46, 0x62, 0x46, 0x80, 0xf0, 0x30, 0x5a,
-	0x16, 0xee, 0x85, 0x65, 0xff, 0x81, 0x9a, 0xee, 0x9a, 0x99, 0xda, 0xdb, 0xdd, 0xd5, 0xd3, 0x55,
-	0x3d, 0x73, 0xe7, 0x53, 0x9f, 0xdd, 0x83, 0x1e, 0x9f, 0xde, 0xe1, 0x1d, 0xf4, 0xce, 0xfb, 0x2c,
-	0x6f, 0x90, 0xb7, 0x57, 0x5e, 0xe2, 0xca, 0x3b, 0x24, 0x21, 0x83, 0xbc, 0xf7, 0x16, 0x79, 0xef,
-	0x25, 0x64, 0x91, 0x84, 0x90, 0x77, 0xbc, 0x13, 0xbf, 0x8c, 0xc8, 0xca, 0xac, 0xca, 0xaa, 0x69,
-	0xbe, 0xcd, 0xd4, 0xef, 0x97, 0x3e, 0x32, 0x33, 0x22, 0x32, 0x32, 0xdb, 0x9b, 0xfe, 0xd7, 0x5d,
-	0x76, 0xdd, 0xf5, 0xff, 0xfd, 0x7a, 0x97, 0x5f, 0xed, 0xf2, 0x2f, 0x1b, 0xff, 0xed, 0xb7, 0xbf,
-	0xf9, 0xf7, 0xdf, 0xb4, 0xfc, 0x5d, 0x77, 0xf9, 0xed, 0x7f, 0xec, 0xf2, 0x5b, 0xfc, 0xf3, 0x93,
-	0xd3, 0x3e, 0xf9, 0x92, 0xe7, 0xe1, 0xcf, 0xde, 0xae, 0xbf, 0x8e, 0x7f, 0xd5, 0x6a, 0x7a, 0x8d,
-	0x5e, 0xba, 0x38, 0x9e, 0x8f, 0x16, 0xe3, 0xfe, 0xf4, 0x7f, 0x69, 0xcd, 0x7a, 0xdb, 0xa7, 0xd1,
-	0x70, 0x25, 0x6e, 0x47, 0xe3, 0xb8, 0x13, 0xf5, 0xb3, 0x78, 0x61, 0x6d, 0x1c, 0xb6, 0x37, 0x4f,
-	0x7f, 0xa9, 0xb5, 0x83, 0xb7, 0xdd, 0x62, 0x98, 0x45, 0xe3, 0x6c, 0x18, 0xf6, 0xd3, 0x5e, 0x9c,
-	0xe1, 0xf3, 0x7f, 0x35, 0x13, 0x58, 0xc8, 0x7f, 0xa3, 0x04, 0xed, 0x6e, 0x1c, 0xf5, 0xb3, 0x71,
-	0xbb, 0x9b, 0xa4, 0x51, 0x07, 0x9f, 0xff, 0x7b, 0x6b, 0x7b, 0x6f, 0x3a, 0x4d, 0xc7, 0xa3, 0x34,
-	0x1a, 0x8e, 0x37, 0xc7, 0xed, 0xcd, 0xe3, 0x7e, 0xb6, 0x30, 0xfd, 0x3f, 0x5a, 0xd3, 0x5e, 0x90,
-	0xa6, 0xe3, 0x6e, 0xb2, 0x18, 0xf7, 0xf1, 0xe5, 0xcb, 0xad, 0x9d, 0xbc, 0x1d, 0xd3, 0x74, 0x9c,
-	0x86, 0x2b, 0x91, 0x22, 0xb7, 0x93, 0x7e, 0x3f, 0x6a, 0x67, 0xe3, 0xb8, 0xbf, 0x90, 0x4c, 0x6f,
-	0x68, 0xed, 0xe8, 0xed, 0x40, 0xf0, 0x5a, 0x9a, 0x45, 0xbd, 0x71, 0x2f, 0x4a, 0xd3, 0x70, 0x31,
-	0x42, 0xca, 0x29, 0x2e, 0x61, 0x18, 0x49, 0x8a, 0x61, 0xb4, 0x3c, 0xdd, 0x28, 0x7d, 0xa5, 0xda,
-	0x78, 0xad, 0xef, 0x79, 0x3b, 0xa5, 0xe9, 0x78, 0x31, 0xca, 0xc6, 0x2b, 0x71, 0xb4, 0x1a, 0x75,
-	0xc6, 0x59, 0x38, 0xa4, 0xff, 0xa8, 0x14, 0x24, 0xf4, 0xeb, 0x29, 0x94, 0x4b, 0xd0, 0xfa, 0x8e,
-	0xf7, 0x4d, 0xa6, 0xa4, 0x49, 0x3b, 0x0e, 0xbb, 0xe3, 0xb8, 0x1f, 0x67, 0xe3, 0x4e, 0x98, 0x85,
-	0xc8, 0xa3, 0x59, 0x47, 0xa0, 0x1c, 0xbe, 0xd2, 0x0a, 0xbc, 0xa9, 0x41, 0xdc, 0x5f, 0x04, 0xfd,
-	0xab, 0x46, 0x91, 0xd4, 0xb7, 0x68, 0x7c, 0x6f, 0x10, 0x65, 0x71, 0x16, 0x27, 0x7d, 0x50, 0xa6,
-	0xeb, 0x29, 0x94, 0xe7, 0x76, 0xad, 0x39, 0xef, 0x07, 0xd4, 0x45, 0x65, 0x18, 0x35, 0x47, 0xcf,
-	0x52, 0x87, 0xb5, 0xb8, 0x76, 0x9a, 0xd8, 0x5f, 0x88, 0xa9, 0x22, 0xdd, 0x24, 0xec, 0x80, 0xf0,
-	0x35, 0x10, 0x8a, 0x83, 0x3c, 0x4c, 0x46, 0x59, 0x34, 0x04, 0x61, 0x7b, 0x1e, 0x2c, 0xaa, 0xcd,
-	0xa2, 0xe4, 0x93, 0x66, 0x24, 0x2d, 0x54, 0xd9, 0x1d, 0xaa, 0x61, 0xaa, 0xe8, 0xd7, 0x5b, 0xd3,
-	0x9e, 0xdf, 0x4e, 0xc7, 0xba, 0xfd, 0xaf, 0x6e, 0xa0, 0x2f, 0x69, 0x5b, 0x7d, 0x21, 0xca, 0x6b,
-	0x1b, 0x5a, 0xdb, 0x79, 0x41, 0x5b, 0x04, 0x84, 0x48, 0xaf, 0xe3, 0x53, 0xda, 0xe6, 0x4f, 0xc4,
-	0x7a, 0x63, 0x43, 0x6b, 0x07, 0x6f, 0xba, 0x5d, 0x1c, 0xfa, 0x37, 0xf1, 0x39, 0x6d, 0x17, 0xc6,
-	0xfe, 0xaf, 0x1b, 0x5a, 0x5f, 0xf7, 0xb6, 0x4b, 0xdb, 0xe3, 0xa5, 0xb0, 0xdf, 0x19, 0xa7, 0x4b,
-	0xe1, 0x66, 0xd5, 0x1d, 0x6f, 0x6d, 0x68, 0xcd, 0x78, 0xad, 0x76, 0x3a, 0x6e, 0x0f, 0x23, 0xb4,
-	0x20, 0xe9, 0xaa, 0x66, 0xbc, 0x0d, 0x20, 0x6d, 0x5b, 0x00, 0xe5, 0xf4, 0xce, 0x06, 0x6e, 0x41,
-	0x3f, 0xec, 0x29, 0xea, 0xdf, 0xa4, 0x05, 0xf8, 0x42, 0x9c, 0x77, 0x37, 0xb4, 0x66, 0xbd, 0xaf,
-	0xa5, 0x6d, 0x6a, 0xf7, 0x30, 0x1b, 0x0d, 0xd4, 0x18, 0x50, 0x79, 0x7f, 0xdf, 0xd0, 0xfa, 0x96,
-	0x37, 0x53, 0x44, 0x06, 0x51, 0x06, 0xf4, 0xbd, 0x0d, 0xad, 0x6f, 0x7b, 0x3b, 0x16, 0xd1, 0x68,
-	0x79, 0x14, 0x0f, 0x80, 0xbf, 0xbf, 0xa1, 0xb5, 0x93, 0x37, 0x5b, 0xc4, 0xdb, 0xe1, 0x50, 0x0d,
-	0xdd, 0x07, 0xce, 0xcc, 0xa3, 0xbe, 0x42, 0x3f, 0xdc, 0xd0, 0xfa, 0xa6, 0xf7, 0xf5, 0xb6, 0x25,
-	0x46, 0x59, 0xcc, 0x6d, 0xf8, 0x08, 0x60, 0xda, 0x2e, 0x81, 0xd4, 0x9c, 0x8f, 0x37, 0xb4, 0x5a,
-	0x5e, 0x53, 0xf5, 0x7e, 0x32, 0x52, 0x55, 0xfd, 0x64, 0x43, 0x6b, 0x7b, 0xef, 0xab, 0x69, 0x5b,
-	0x4d, 0x6b, 0xf9, 0xfa, 0xe9, 0x86, 0xd6, 0x37, 0xbc, 0x1d, 0xda, 0xe9, 0x38, 0xec, 0x74, 0xc6,
-	0x61, 0x96, 0x0d, 0xc7, 0x83, 0x24, 0xee, 0xab, 0x91, 0xf9, 0x0c, 0x58, 0xda, 0x2e, 0x62, 0x54,
-	0xc2, 0xe7, 0xa8, 0x39, 0x06, 0x33, 0x8d, 0xb2, 0x62, 0xca, 0x2f, 0xa4, 0x5d, 0x25, 0x94, 0xd2,
-	0xfe, 0x43, 0x3a, 0x6d, 0x21, 0x5e, 0x5c, 0xca, 0xc6, 0x83, 0x64, 0x95, 0xe4, 0x7a, 0x29, 0x5c,
-	0xec, 0xab, 0x21, 0xde, 0x6d, 0x8a, 0x87, 0x38, 0x6c, 0x67, 0xf1, 0x4a, 0x34, 0x5e, 0x8a, 0xc2,
-	0x0e, 0xb2, 0xdd, 0x7d, 0x8a, 0x87, 0xd8, 0x04, 0x28, 0xc7, 0x3d, 0xa6, 0x58, 0xb4, 0xf0, 0x45,
-	0x2f, 0x0e, 0x7b, 0x4e, 0xb1, 0x68, 0xe5, 0x9f, 0x89, 0xbd, 0x97, 0xe4, 0x4f, 0x75, 0x53, 0x90,
-	0xca, 0x7f, 0x6f, 0xc9, 0xdf, 0x04, 0x28, 0xc5, 0x3e, 0x53, 0xd4, 0x9f, 0x68, 0xad, 0x16, 0xa2,
-	0x7d, 0xa7, 0xb8, 0x8f, 0xf9, 0x1b, 0xf1, 0xf6, 0x9b, 0xa2, 0xe1, 0x26, 0xe1, 0x5c, 0x0a, 0xfb,
-	0x8b, 0x5c, 0xc1, 0x85, 0xa1, 0x24, 0xd9, 0x7f, 0x8a, 0xa5, 0xa1, 0x0c, 0x53, 0xea, 0xdf, 0x4d,
-	0xf1, 0x78, 0x1b, 0xdf, 0x75, 0x5b, 0x0e, 0x98, 0xe2, 0xf1, 0x2e, 0x82, 0x94, 0xf2, 0x40, 0xc9,
-	0xd8, 0x00, 0xb9, 0x0c, 0xea, 0xd0, 0x83, 0xa6, 0x5a, 0xdf, 0xf1, 0xbe, 0xd1, 0xc6, 0xb2, 0x6e,
-	0xa5, 0xa7, 0xc5, 0x99, 0x32, 0x3f, 0x18, 0x84, 0xb4, 0xed, 0x24, 0x50, 0x01, 0x87, 0x4c, 0xb5,
-	0x76, 0xf4, 0xb6, 0x47, 0xd5, 0x86, 0xc9, 0xb8, 0x1b, 0xad, 0x44, 0xdd, 0xf1, 0x68, 0x80, 0xb4,
-	0x87, 0x02, 0x42, 0xd9, 0x26, 0x44, 0xa9, 0x0e, 0x9b, 0xa2, 0x59, 0x25, 0xa9, 0xc2, 0xce, 0x4a,
-	0xd8, 0x6f, 0xab, 0x9e, 0x38, 0x7c, 0x8a, 0xe7, 0x9b, 0x85, 0x50, 0x9a, 0x23, 0x64, 0x70, 0x80,
-	0xcc, 0x87, 0x59, 0xc6, 0xf3, 0xfb, 0x48, 0x19, 0x1c, 0x13, 0xa0, 0x14, 0x47, 0x49, 0x05, 0xe6,
-	0xc3, 0x34, 0xca, 0x2b, 0x40, 0x0d, 0x3f, 0x5a, 0x8a, 0xf9, 0xbf, 0xc9, 0xbc, 0x8d, 0x6c, 0x9d,
-	0x62, 0xd9, 0xc6, 0x32, 0x81, 0x94, 0x7a, 0xca, 0x1f, 0x63, 0x61, 0x28, 0x4e, 0x63, 0xc7, 0x4a,
-	0x57, 0xe2, 0x73, 0x7b, 0x29, 0x1e, 0x8c, 0x3b, 0x11, 0x2d, 0xde, 0x49, 0xaa, 0xaa, 0x79, 0x9c,
-	0x74, 0xa5, 0x8b, 0x40, 0xd5, 0x3d, 0xde, 0xea, 0xca, 0x34, 0x1b, 0x46, 0xfd, 0xc5, 0x6c, 0x09,
-	0x69, 0x4f, 0xb0, 0xba, 0x52, 0x43, 0x94, 0xea, 0xc4, 0x5c, 0x36, 0x90, 0x2d, 0xc6, 0x96, 0x5a,
-	0x45, 0xe9, 0x4e, 0xca, 0x65, 0xc3, 0x06, 0x29, 0xe5, 0xc9, 0x53, 0x3c, 0xdb, 0x14, 0x98, 0xf4,
-	0x3b, 0x71, 0x16, 0xf7, 0xd5, 0xe6, 0x46, 0x2d, 0x3a, 0xc5, 0xca, 0x99, 0xa6, 0x24, 0xcf, 0x48,
-	0xca, 0xf9, 0xf7, 0x56, 0xce, 0x06, 0x48, 0x39, 0x6f, 0x9b, 0x6a, 0x7d, 0xdf, 0xdb, 0x49, 0x52,
-	0xaa, 0xa9, 0x9e, 0x6e, 0x8e, 0xbb, 0x5d, 0x63, 0x25, 0x38, 0x15, 0x1c, 0xc9, 0xa0, 0xcc, 0xa1,
-	0x7c, 0x4e, 0xb3, 0x86, 0x9c, 0xe7, 0x36, 0x25, 0x3e, 0xdd, 0x1a, 0x72, 0x06, 0x28, 0xc5, 0x19,
-	0x92, 0x42, 0xad, 0xb4, 0x0b, 0xc9, 0x70, 0x51, 0xa5, 0x38, 0x53, 0x52, 0x98, 0x00, 0xa5, 0x38,
-	0x4b, 0x24, 0x41, 0x01, 0xc6, 0xe4, 0x38, 0x9b, 0x34, 0x92, 0xaf, 0xea, 0xbc, 0x58, 0xaa, 0xcf,
-	0x99, 0xe2, 0xd5, 0x52, 0x7f, 0xa5, 0x5c, 0xce, 0x95, 0x05, 0x25, 0xed, 0x26, 0x59, 0xde, 0x85,
-	0xe7, 0x4d, 0xd1, 0x5e, 0xa5, 0xb3, 0xe8, 0x24, 0xab, 0x6a, 0x13, 0x3c, 0x1f, 0x5d, 0xaf, 0xbf,
-	0xe7, 0x73, 0xa3, 0xdb, 0x05, 0xfe, 0x07, 0x19, 0x1a, 0x07, 0x4e, 0xc5, 0x5d, 0x20, 0xc2, 0xa6,
-	0x70, 0x14, 0x6a, 0xcd, 0xbd, 0x0b, 0x45, 0xd8, 0x5c, 0x04, 0xca, 0xe1, 0x22, 0xa9, 0x19, 0xb6,
-	0x9c, 0x5e, 0x32, 0xe2, 0x61, 0xf9, 0xe3, 0x14, 0xef, 0xae, 0xc6, 0x77, 0xe2, 0x5f, 0x2c, 0x0b,
-	0x29, 0xbe, 0xeb, 0x86, 0x5c, 0x22, 0xed, 0xce, 0x3f, 0x13, 0xfb, 0x52, 0x99, 0xdf, 0xf8, 0x6c,
-	0xce, 0x82, 0xcb, 0xa4, 0xbb, 0x2d, 0x84, 0xd2, 0xfc, 0x69, 0x8a, 0x37, 0x1c, 0x95, 0x95, 0x35,
-	0x77, 0x2e, 0x97, 0x89, 0x57, 0xc0, 0x28, 0xdd, 0x15, 0x32, 0xb2, 0x2a, 0xc7, 0x7c, 0xfc, 0xae,
-	0x9c, 0xe2, 0xbd, 0x06, 0x00, 0xba, 0xc0, 0x40, 0xaf, 0x92, 0x64, 0x58, 0xca, 0x0c, 0xe0, 0x6a,
-	0x19, 0x76, 0x5a, 0xf2, 0xf4, 0x42, 0x78, 0x8d, 0x0c, 0xbb, 0xfe, 0x4a, 0x65, 0x5f, 0x2b, 0xdc,
-	0x4e, 0xd4, 0xcd, 0xb9, 0xd7, 0x09, 0x57, 0x7f, 0x25, 0xee, 0xf5, 0xba, 0x4f, 0x68, 0xea, 0x9b,
-	0xad, 0xbb, 0x41, 0xf7, 0x89, 0x89, 0x50, 0x9a, 0x1b, 0x75, 0xdb, 0x96, 0x6c, 0xd9, 0xbc, 0x49,
-	0xd6, 0x0a, 0xb4, 0x6d, 0x34, 0x18, 0x2f, 0x0e, 0xc3, 0x8e, 0xca, 0xed, 0x66, 0x59, 0x2b, 0x6c,
-	0x88, 0xb2, 0xbb, 0xc5, 0xea, 0x62, 0x25, 0x1a, 0x22, 0x72, 0xb7, 0x5a, 0x5d, 0x9c, 0x63, 0x94,
-	0xee, 0x36, 0x59, 0x09, 0x0c, 0x4c, 0x8b, 0xc0, 0xed, 0xb2, 0x12, 0x14, 0x41, 0x4a, 0x79, 0x87,
-	0xde, 0xf7, 0xec, 0xca, 0x70, 0xa1, 0x77, 0xea, 0x7d, 0xaf, 0x04, 0x53, 0xea, 0xbb, 0xac, 0xd4,
-	0xed, 0xa4, 0xdb, 0x15, 0x43, 0x02, 0xa9, 0xef, 0xb6, 0x52, 0x5b, 0x30, 0xa5, 0xbe, 0x47, 0x26,
-	0x89, 0x05, 0x0f, 0xa3, 0x55, 0xfa, 0x97, 0xd2, 0xdf, 0x2b, 0x93, 0xc4, 0x45, 0xa0, 0x1c, 0xee,
-	0x73, 0x12, 0x8c, 0x61, 0xf8, 0xf3, 0x54, 0xeb, 0xbb, 0xde, 0x37, 0x0b, 0x45, 0x40, 0xd7, 0x0f,
-	0xfb, 0x9b, 0x51, 0xc6, 0xfd, 0x60, 0x14, 0xb2, 0xd0, 0x0c, 0x2a, 0xe4, 0x01, 0xe9, 0x3f, 0xb5,
-	0xfa, 0xd9, 0x0b, 0xc8, 0x83, 0x32, 0x2a, 0xb4, 0x68, 0x2b, 0x82, 0xc6, 0x1e, 0x92, 0xf6, 0x19,
-	0x09, 0xad, 0x45, 0xe0, 0x61, 0xa9, 0xbe, 0x8b, 0x40, 0x45, 0x3f, 0x22, 0x52, 0x34, 0x8c, 0x06,
-	0xdd, 0xb0, 0x1d, 0x31, 0x91, 0xd2, 0x3e, 0x2a, 0x52, 0x64, 0x43, 0x94, 0xea, 0x31, 0x11, 0x64,
-	0x5e, 0x77, 0xf3, 0x44, 0x8f, 0x8b, 0x20, 0x5b, 0x08, 0xa5, 0x79, 0x42, 0x96, 0x9b, 0x74, 0x35,
-	0x1c, 0x18, 0x29, 0x9e, 0x94, 0xe5, 0xc6, 0xf8, 0x4e, 0xfc, 0xa7, 0x44, 0x52, 0xf3, 0x6d, 0xa1,
-	0x1b, 0xa7, 0x6a, 0x89, 0x7a, 0x5a, 0xfa, 0xa4, 0x80, 0x51, 0xba, 0x67, 0x74, 0x3a, 0xf5, 0xdd,
-	0xec, 0x8e, 0x67, 0x75, 0x3a, 0x1b, 0xa3, 0x74, 0xcf, 0x89, 0xa4, 0x99, 0x1b, 0x91, 0x62, 0x50,
-	0xd2, 0xe7, 0x45, 0xd2, 0xca, 0x30, 0xa5, 0x7e, 0x41, 0x60, 0x69, 0x18, 0x91, 0xda, 0x58, 0x3b,
-	0x69, 0xa0, 0x5e, 0x94, 0x6e, 0x59, 0x08, 0xd3, 0x25, 0x1a, 0x7b, 0x3d, 0x84, 0x2f, 0x49, 0xb7,
-	0x08, 0xc2, 0x55, 0x7d, 0x59, 0xba, 0xc5, 0xf8, 0x4e, 0x05, 0xfd, 0x45, 0xba, 0x5e, 0xe7, 0x24,
-	0xb3, 0xf0, 0x95, 0x52, 0x19, 0x32, 0x05, 0x5f, 0x95, 0xc9, 0x2b, 0x88, 0xb9, 0xf4, 0xbc, 0x26,
-	0xc2, 0x57, 0x04, 0x29, 0xe5, 0xeb, 0x53, 0xad, 0x1f, 0x78, 0xdf, 0x36, 0x52, 0x0e, 0xc2, 0x41,
-	0x34, 0x2c, 0x2c, 0xcd, 0x6f, 0x4c, 0xb5, 0x76, 0xf6, 0x7e, 0xc0, 0xb6, 0x48, 0x92, 0x2d, 0x45,
-	0xc3, 0xf1, 0xa0, 0x1b, 0xae, 0x81, 0x97, 0x85, 0x71, 0x37, 0x9f, 0xae, 0x1f, 0x82, 0xc9, 0x86,
-	0x49, 0x25, 0x93, 0x0a, 0xfe, 0x68, 0xaa, 0x35, 0xe7, 0x7d, 0xdf, 0x95, 0xe7, 0xfc, 0x30, 0x8e,
-	0x16, 0xf2, 0x2c, 0x3f, 0x06, 0xd1, 0x95, 0xa5, 0x41, 0xa4, 0x1c, 0x3f, 0x91, 0xa6, 0x30, 0xdc,
-	0x5e, 0x0a, 0xbb, 0xdd, 0x88, 0xa6, 0x71, 0x3a, 0xea, 0xf5, 0xd8, 0x38, 0xff, 0x02, 0x24, 0xb2,
-	0x5f, 0x2b, 0x48, 0xb0, 0x51, 0xd6, 0x23, 0xc1, 0x50, 0x69, 0xf0, 0xd4, 0x2c, 0x91, 0x96, 0xd4,
-	0x00, 0xef, 0xde, 0xe0, 0xa9, 0xe9, 0x22, 0x50, 0x0e, 0x7b, 0x34, 0x58, 0x85, 0x62, 0x42, 0x37,
-	0x22, 0xb3, 0x3f, 0xa7, 0xc1, 0x8a, 0x69, 0xb0, 0x0a, 0x55, 0xc1, 0xa1, 0x7c, 0xf6, 0x6a, 0x54,
-	0x55, 0x77, 0x18, 0xa5, 0xa3, 0xae, 0x12, 0xd0, 0xbd, 0x0b, 0x85, 0xad, 0x26, 0xc3, 0x6e, 0x67,
-	0x3c, 0x9f, 0xa4, 0x69, 0x3e, 0xeb, 0xf6, 0x29, 0x14, 0x56, 0xe4, 0x50, 0xdf, 0xec, 0x5b, 0xcd,
-	0x19, 0x86, 0x6c, 0xbb, 0xee, 0xd7, 0x60, 0x89, 0x83, 0x0e, 0xdd, 0x0b, 0xad, 0x6d, 0x6d, 0xff,
-	0x86, 0xde, 0x23, 0xc3, 0x4c, 0x7b, 0x87, 0xa8, 0xf8, 0xdf, 0x35, 0xf4, 0x1e, 0x69, 0x20, 0x54,
-	0xe8, 0x01, 0x4e, 0x84, 0x72, 0x3b, 0xb0, 0x91, 0x1b, 0x5d, 0x99, 0xd4, 0x29, 0x77, 0x6f, 0x1c,
-	0xd4, 0xc8, 0x8d, 0xae, 0x02, 0x4c, 0xf9, 0x1e, 0xdc, 0x60, 0x43, 0x16, 0x70, 0xb2, 0xb0, 0xd0,
-	0x8d, 0xfb, 0xd1, 0xb8, 0x97, 0x2a, 0x5f, 0xc7, 0x21, 0x0d, 0x51, 0x2e, 0x8a, 0x28, 0xa5, 0x3d,
-	0x54, 0x86, 0xd7, 0x42, 0xb9, 0x08, 0xaa, 0xda, 0x61, 0x0d, 0x59, 0x8b, 0xca, 0x8e, 0xb0, 0xc3,
-	0x1b, 0xbc, 0x2a, 0x33, 0x3f, 0xee, 0xb7, 0x13, 0xb6, 0x13, 0x8f, 0x68, 0xf0, 0xaa, 0x6c, 0x43,
-	0x54, 0xe4, 0x91, 0x0d, 0x56, 0x29, 0x65, 0x02, 0xa0, 0xd7, 0xf3, 0xcd, 0xee, 0xa8, 0x06, 0xab,
-	0x94, 0x0e, 0x9c, 0xd2, 0x1f, 0xdd, 0x68, 0xfd, 0xd4, 0x9b, 0x33, 0x70, 0x31, 0xb0, 0xda, 0x09,
-	0x54, 0x2e, 0xcc, 0x50, 0xed, 0x7b, 0xda, 0x0a, 0xb6, 0x51, 0x5a, 0x25, 0x9b, 0xca, 0x3e, 0x66,
-	0xe2, 0xbc, 0xa9, 0x26, 0xc7, 0x36, 0x78, 0xf6, 0xd7, 0xb1, 0x61, 0x51, 0x35, 0x78, 0xf6, 0xd7,
-	0x11, 0x61, 0x59, 0x35, 0x78, 0x9b, 0x76, 0x12, 0x61, 0x60, 0x35, 0x78, 0x9b, 0x76, 0x32, 0x60,
-	0x67, 0x35, 0x5a, 0x3f, 0xf2, 0xbe, 0x5b, 0x62, 0x60, 0x29, 0x37, 0x24, 0xf8, 0x24, 0x91, 0x60,
-	0x5a, 0x91, 0x48, 0xba, 0xb5, 0x26, 0x70, 0xb2, 0xc8, 0xa9, 0x85, 0x50, 0xd6, 0xa7, 0xc8, 0x80,
-	0xeb, 0x52, 0x31, 0x33, 0x61, 0x66, 0x35, 0xb4, 0x09, 0x6b, 0x42, 0x30, 0xb2, 0x64, 0x8d, 0x59,
-	0x1e, 0xc5, 0xed, 0xcd, 0x42, 0x30, 0x84, 0xe5, 0x54, 0x11, 0x42, 0x17, 0x01, 0xe6, 0x95, 0xcc,
-	0x0f, 0x86, 0x20, 0x12, 0xca, 0xf5, 0x02, 0x23, 0x4b, 0xe6, 0x47, 0x19, 0x86, 0xa9, 0x25, 0x2d,
-	0x8d, 0x56, 0x30, 0x1e, 0x0b, 0xc3, 0x28, 0x55, 0xd6, 0xea, 0x99, 0xd2, 0x52, 0x0b, 0x81, 0xb1,
-	0xd5, 0x10, 0x2b, 0x8c, 0x10, 0xd3, 0xd6, 0x6a, 0xf0, 0xbe, 0x2d, 0x80, 0xb1, 0xcc, 0x9d, 0x23,
-	0x73, 0xa5, 0x80, 0xc1, 0xee, 0x6a, 0x18, 0x9e, 0xb0, 0x2c, 0x4c, 0x37, 0x9b, 0x22, 0x7f, 0x5e,
-	0xc3, 0xf0, 0x84, 0x99, 0x20, 0xa5, 0x3c, 0x5f, 0xaa, 0x02, 0xc0, 0xa8, 0xca, 0x1f, 0x1a, 0xad,
-	0xef, 0x79, 0xdf, 0x32, 0xb3, 0x4c, 0xdb, 0xc9, 0x30, 0x32, 0x33, 0xbe, 0x00, 0x14, 0x33, 0x63,
-	0x8b, 0x42, 0xd9, 0x5f, 0xd8, 0x60, 0x37, 0x67, 0x38, 0x8c, 0xfa, 0x6a, 0xb3, 0xbf, 0x48, 0xba,
-	0x45, 0x7d, 0x32, 0x8a, 0xfc, 0x63, 0x83, 0xdd, 0xa4, 0x0a, 0xa1, 0x22, 0x2e, 0x6e, 0x88, 0xab,
-	0x0b, 0x9f, 0x7a, 0x61, 0xd6, 0x56, 0x9d, 0x7b, 0x89, 0xd4, 0xdb, 0x04, 0x60, 0x73, 0xc9, 0x78,
-	0x48, 0x26, 0x5a, 0x88, 0x2e, 0xb3, 0x0b, 0x36, 0x64, 0xe8, 0x4f, 0xd2, 0x7d, 0x0a, 0x99, 0x1f,
-	0xad, 0xb1, 0xda, 0x02, 0xa3, 0x4b, 0xba, 0xaf, 0x08, 0xc2, 0xea, 0xb2, 0x53, 0x42, 0x96, 0xf5,
-	0x5e, 0x71, 0xa5, 0x9d, 0x32, 0x07, 0x29, 0xe5, 0x55, 0x32, 0xd4, 0x0a, 0x84, 0xaa, 0x18, 0x67,
-	0x6b, 0x48, 0x78, 0xb5, 0x0c, 0x75, 0x01, 0xa3, 0x74, 0xd7, 0x34, 0xd8, 0x02, 0xed, 0xd1, 0xb4,
-	0xd6, 0x65, 0x5d, 0xdf, 0x60, 0x0b, 0x34, 0xff, 0x4c, 0xec, 0x1b, 0x2c, 0xf6, 0x50, 0x1c, 0x85,
-	0x37, 0x5a, 0xec, 0xa1, 0xb8, 0x09, 0x6f, 0x92, 0xde, 0xe6, 0xcf, 0x7a, 0xa4, 0x6f, 0x96, 0xde,
-	0x36, 0x01, 0x98, 0x52, 0x32, 0x67, 0x01, 0x74, 0x22, 0xa3, 0x8c, 0x5b, 0x65, 0xce, 0xda, 0x10,
-	0x0c, 0x29, 0x2b, 0x3b, 0x43, 0x02, 0x6e, 0x97, 0x0a, 0x14, 0x0f, 0x0c, 0xee, 0x90, 0x14, 0x26,
-	0x40, 0x29, 0xee, 0x74, 0x01, 0x30, 0x9a, 0xf4, 0xae, 0x67, 0x00, 0x22, 0x9f, 0xcb, 0xd3, 0x77,
-	0xeb, 0x5d, 0xaf, 0x04, 0xc3, 0x68, 0x92, 0x76, 0xa5, 0x4b, 0xc9, 0x00, 0x63, 0xae, 0xcd, 0xda,
-	0x7b, 0xa5, 0x5d, 0x36, 0x04, 0x43, 0x49, 0x7a, 0x1b, 0x90, 0x56, 0xcf, 0xfe, 0x2c, 0xbd, 0x9d,
-	0x7f, 0x26, 0xf6, 0xfd, 0x22, 0xa9, 0xf8, 0x6c, 0xae, 0x1c, 0x0f, 0x88, 0xa4, 0x5a, 0x08, 0xa5,
-	0x79, 0xb0, 0xc1, 0x8e, 0xd6, 0x85, 0x61, 0x1c, 0xf5, 0x55, 0x47, 0x3f, 0xd4, 0x60, 0x47, 0x2b,
-	0x7f, 0x23, 0xde, 0xc3, 0x0d, 0xd1, 0xa8, 0xf9, 0x5b, 0x47, 0x71, 0x1f, 0x69, 0x88, 0x46, 0x9d,
-	0x7f, 0x27, 0xfe, 0xa3, 0x8e, 0xef, 0xd4, 0xbd, 0x8f, 0x15, 0xf2, 0xe9, 0xb0, 0x25, 0xf0, 0x78,
-	0x81, 0xdf, 0x61, 0x13, 0xe0, 0x09, 0xc7, 0x77, 0xca, 0xe7, 0x49, 0x69, 0x2b, 0x7f, 0x9f, 0xef,
-	0x86, 0x6d, 0xb5, 0x1f, 0x3c, 0x25, 0x6d, 0xb5, 0x10, 0xca, 0xeb, 0x69, 0xd1, 0x3c, 0x74, 0x5b,
-	0xdb, 0x49, 0xaf, 0x27, 0xad, 0x7e, 0x46, 0x34, 0x8f, 0x12, 0x4a, 0x69, 0x9f, 0xad, 0x44, 0xa9,
-	0x36, 0xcf, 0xc9, 0xe8, 0x32, 0x9a, 0x46, 0xe1, 0x90, 0xd7, 0x95, 0xe7, 0x65, 0x74, 0x6d, 0x08,
-	0xe6, 0x4d, 0x83, 0xfd, 0x19, 0x7c, 0xa4, 0xa2, 0xf2, 0x7a, 0x51, 0x7a, 0x08, 0x5f, 0x17, 0x47,
-	0x71, 0x47, 0x89, 0xf2, 0x4b, 0xd2, 0x13, 0xf8, 0x9e, 0x66, 0xc9, 0x70, 0x0d, 0xdf, 0x5f, 0xb6,
-	0xf8, 0xea, 0x3b, 0x15, 0xfc, 0x17, 0x07, 0x9f, 0x4a, 0x7d, 0x45, 0x56, 0x98, 0x7e, 0xb4, 0xaa,
-	0xf4, 0xc4, 0x70, 0x98, 0x25, 0x3c, 0x2d, 0x5e, 0x95, 0x15, 0xa6, 0x08, 0xe2, 0xd4, 0x49, 0x76,
-	0x46, 0x12, 0xf1, 0x51, 0x37, 0xa5, 0x1c, 0xa9, 0x7e, 0xda, 0xc9, 0xfc, 0xba, 0x56, 0xcf, 0x1c,
-	0x04, 0x9c, 0x48, 0x69, 0x09, 0x8d, 0x17, 0x61, 0x7c, 0x69, 0x91, 0x7e, 0x53, 0x4b, 0xa8, 0x89,
-	0xe0, 0x5c, 0xaa, 0xd1, 0xfa, 0x9a, 0xf7, 0x15, 0x23, 0x0d, 0xd1, 0xdf, 0xc2, 0x47, 0x83, 0x4e,
-	0xcc, 0xb7, 0x75, 0xfd, 0xba, 0x71, 0x6f, 0x3e, 0xee, 0x2f, 0x8e, 0x33, 0xb8, 0x4e, 0x75, 0x21,
-	0xef, 0xe8, 0xfa, 0x39, 0x08, 0x94, 0xc3, 0xdf, 0x44, 0x61, 0xe7, 0xc1, 0x1a, 0x84, 0x69, 0x5a,
-	0xcc, 0xe4, 0x5d, 0x51, 0xc6, 0x2b, 0x38, 0x94, 0xcf, 0xdf, 0x45, 0x83, 0x52, 0xdf, 0x95, 0x45,
-	0xdb, 0x8b, 0xfb, 0xd6, 0x01, 0x0c, 0x8e, 0xb3, 0x44, 0x83, 0x2a, 0xd4, 0x08, 0xc7, 0xcf, 0x28,
-	0xee, 0x7d, 0xd1, 0xa0, 0x9c, 0x0c, 0x2a, 0xec, 0x03, 0xd1, 0x50, 0x0b, 0x0c, 0x11, 0xec, 0x0f,
-	0x45, 0x43, 0x75, 0xe0, 0xb0, 0x0a, 0x2b, 0xba, 0x4d, 0x6b, 0x58, 0x1f, 0x57, 0x74, 0x9b, 0x56,
-	0xb4, 0x3e, 0x91, 0x89, 0x95, 0xf4, 0xa1, 0x90, 0x0f, 0x47, 0xe9, 0x52, 0xde, 0x61, 0x9f, 0xca,
-	0xd4, 0x29, 0xa1, 0x94, 0xf6, 0x33, 0xd9, 0xb6, 0x32, 0x76, 0x73, 0x1b, 0xdb, 0xd6, 0xe7, 0xb2,
-	0x6d, 0x15, 0x30, 0x4a, 0xf7, 0x85, 0xac, 0xec, 0xf3, 0xa3, 0xb8, 0xdb, 0x21, 0x31, 0xeb, 0xf2,
-	0x99, 0x95, 0xc7, 0x0b, 0xb8, 0x09, 0xe0, 0xcc, 0xca, 0xe3, 0x49, 0xda, 0x89, 0xd3, 0x79, 0x32,
-	0x9b, 0xf2, 0x34, 0x7b, 0x7a, 0x3c, 0x49, 0x6d, 0x08, 0x67, 0x57, 0x9e, 0x28, 0x0c, 0x83, 0x41,
-	0x77, 0xcd, 0x48, 0xb3, 0xb7, 0x94, 0x63, 0x02, 0x38, 0xbb, 0xf2, 0x78, 0x42, 0x2e, 0x8f, 0xe2,
-	0xcc, 0x48, 0xb0, 0xaf, 0xc7, 0x13, 0xd2, 0xf8, 0x8e, 0x33, 0x2c, 0x8f, 0x37, 0x16, 0x9c, 0x13,
-	0xaa, 0xef, 0xbd, 0xa8, 0x37, 0xcf, 0x27, 0x02, 0xfb, 0x7b, 0xbc, 0xb1, 0x94, 0x61, 0x9c, 0x61,
-	0x55, 0xc3, 0x24, 0x60, 0x07, 0x78, 0x32, 0xb8, 0x6a, 0x53, 0x64, 0x28, 0x8b, 0xe5, 0x94, 0xe7,
-	0x40, 0x2f, 0x37, 0xa9, 0x4a, 0x04, 0x2a, 0xe0, 0xa0, 0x3a, 0x02, 0x15, 0x71, 0xb0, 0x27, 0xaa,
-	0x39, 0x37, 0x55, 0x9f, 0xd8, 0x1d, 0xe2, 0x89, 0x6a, 0x6e, 0x22, 0x30, 0xe4, 0x3c, 0xd1, 0x2f,
-	0x19, 0x19, 0xf7, 0x93, 0x2c, 0xe6, 0x65, 0xe4, 0x30, 0x4f, 0xf4, 0xcb, 0x02, 0x48, 0x29, 0x0f,
-	0xf7, 0x0c, 0x0f, 0x96, 0x22, 0x68, 0x49, 0x3b, 0xc2, 0x33, 0x3c, 0x58, 0x06, 0x06, 0x3b, 0x4e,
-	0xd2, 0xa9, 0xef, 0xdd, 0x64, 0x31, 0x4f, 0x77, 0x94, 0xa4, 0x2b, 0x60, 0xb0, 0xdf, 0x3c, 0x96,
-	0x6d, 0x1e, 0x30, 0x0c, 0xb6, 0x8e, 0x64, 0xd8, 0xea, 0xb1, 0x6c, 0x97, 0x50, 0x4a, 0x7b, 0x8c,
-	0x8c, 0xac, 0xfa, 0x8e, 0x3c, 0x97, 0xc2, 0x7e, 0x87, 0xbb, 0xfe, 0x58, 0x19, 0xba, 0x32, 0x4c,
-	0xa9, 0x8f, 0xab, 0x86, 0xa9, 0xdb, 0x8f, 0x17, 0x31, 0x2b, 0x74, 0xc2, 0x09, 0x22, 0x66, 0x85,
-	0x0e, 0x38, 0x51, 0x24, 0x41, 0x9d, 0x5f, 0x77, 0x17, 0x8a, 0x09, 0x4f, 0x92, 0x81, 0x76, 0x11,
-	0x70, 0xb0, 0x25, 0xcd, 0xb1, 0xa4, 0x4c, 0xa7, 0x3f, 0x45, 0xea, 0x5b, 0x86, 0x29, 0xf5, 0xef,
-	0x3d, 0x5e, 0xea, 0xf2, 0xad, 0xb3, 0x50, 0x81, 0x6d, 0x1e, 0x2f, 0x75, 0x4e, 0x06, 0xe5, 0x71,
-	0xaa, 0xb4, 0x81, 0x97, 0x12, 0xb6, 0x19, 0xf3, 0x39, 0x76, 0x9a, 0xb4, 0xc1, 0x45, 0xa0, 0x1c,
-	0x4e, 0x17, 0x61, 0xe5, 0x7d, 0x38, 0x4f, 0x7a, 0x86, 0x08, 0xab, 0x85, 0x50, 0x9a, 0x33, 0x65,
-	0x75, 0x30, 0x26, 0x6e, 0x5b, 0x6d, 0xd6, 0x67, 0xd9, 0x72, 0x0c, 0x53, 0x4e, 0xb7, 0xe7, 0x6c,
-	0x5b, 0x8e, 0x73, 0x90, 0x32, 0x3d, 0xc7, 0x96, 0x47, 0xe5, 0xf0, 0x49, 0x94, 0x13, 0xe4, 0x5c,
-	0x5b, 0x1e, 0x35, 0x46, 0xe9, 0xce, 0x93, 0x6e, 0x34, 0x30, 0xdb, 0xae, 0x3b, 0x5f, 0xba, 0xd1,
-	0xc9, 0xa0, 0x3c, 0xfe, 0x60, 0x0f, 0x24, 0x18, 0x86, 0xbf, 0xee, 0x02, 0x7b, 0x20, 0x4d, 0x18,
-	0x26, 0x98, 0xc7, 0x3e, 0x3f, 0x03, 0x8e, 0xb6, 0x64, 0xc3, 0xd0, 0x54, 0xf0, 0x2f, 0xf2, 0xd8,
-	0x3f, 0x56, 0x45, 0xa2, 0x9c, 0xfe, 0x68, 0x17, 0xd4, 0x2f, 0x9c, 0xa2, 0x5f, 0xec, 0xa8, 0x87,
-	0x01, 0x5f, 0x22, 0x82, 0x3e, 0x88, 0xac, 0xc3, 0x83, 0x4b, 0x65, 0x88, 0xe9, 0xbb, 0xe5, 0xa9,
-	0xbe, 0x4c, 0x86, 0xd8, 0x42, 0x60, 0xb0, 0xc9, 0x2a, 0x4f, 0x88, 0x79, 0x6e, 0x7e, 0xb9, 0xac,
-	0xf2, 0x26, 0x00, 0x43, 0xcd, 0x13, 0xbf, 0x50, 0xc1, 0x71, 0xcd, 0x65, 0x5d, 0xe9, 0x89, 0x5f,
-	0xa8, 0x8c, 0xc3, 0x5c, 0x93, 0xdd, 0x88, 0x70, 0xdb, 0xf5, 0x7b, 0xb5, 0xc8, 0x9b, 0x0d, 0xc1,
-	0x58, 0x33, 0x53, 0xcd, 0x27, 0xfd, 0x4e, 0x6e, 0xb0, 0x5d, 0x6b, 0xa6, 0xca, 0x21, 0x4a, 0x75,
-	0x9d, 0x1b, 0xa2, 0xce, 0xba, 0x5e, 0xc4, 0x49, 0x43, 0x61, 0x9a, 0x12, 0xa8, 0xf3, 0xbd, 0x41,
-	0xc4, 0xc9, 0xc9, 0xc0, 0x69, 0x9a, 0x4c, 0x82, 0x9c, 0x91, 0x1f, 0x29, 0xdf, 0x24, 0x93, 0xa0,
-	0x08, 0x52, 0xca, 0x9b, 0x65, 0x0d, 0x43, 0xef, 0xaa, 0x6c, 0x29, 0xd1, 0x2d, 0xe6, 0xd0, 0xf2,
-	0x77, 0xe2, 0xdf, 0x6a, 0xf2, 0x8d, 0x50, 0x85, 0xdb, 0x4c, 0xbe, 0x11, 0xa9, 0x70, 0xbb, 0x08,
-	0xfa, 0x00, 0xbe, 0xa1, 0xfe, 0x28, 0xb4, 0xac, 0xd0, 0x3b, 0x44, 0xc0, 0xca, 0x30, 0xa5, 0xbe,
-	0x53, 0x56, 0x1b, 0x1e, 0xfb, 0x71, 0xd8, 0x5e, 0x8a, 0xa3, 0x95, 0xa8, 0x17, 0xb1, 0x25, 0x7f,
-	0x97, 0xac, 0x36, 0x2e, 0x02, 0xe5, 0x70, 0xb7, 0x14, 0x10, 0x6d, 0x19, 0x44, 0x1d, 0x65, 0x13,
-	0x1a, 0x92, 0x7a, 0x8f, 0xd7, 0xfa, 0xa1, 0xf7, 0x9d, 0x76, 0x5a, 0x80, 0x79, 0xa6, 0x0e, 0xd8,
-	0xb2, 0xbc, 0x17, 0xac, 0x52, 0x26, 0x06, 0x0b, 0xa6, 0xa2, 0x0c, 0xa4, 0x93, 0x05, 0xab, 0x51,
-	0x06, 0xd2, 0xc9, 0x80, 0x01, 0xe9, 0xb1, 0xfa, 0x6b, 0x30, 0xd2, 0x08, 0x87, 0x73, 0xf3, 0xa3,
-	0x85, 0x05, 0x65, 0x4a, 0x7a, 0xac, 0xfe, 0x56, 0x70, 0x60, 0x54, 0x4a, 0xb7, 0x1b, 0x1c, 0xa3,
-	0xdb, 0x1f, 0x72, 0xf4, 0x8a, 0xd1, 0xed, 0x0f, 0x3b, 0x6a, 0xc1, 0x63, 0xca, 0x31, 0x0d, 0xcb,
-	0xd3, 0x8f, 0x38, 0x6a, 0x61, 0x72, 0x60, 0x82, 0xba, 0x7a, 0x37, 0xec, 0x76, 0xc7, 0x0b, 0xc9,
-	0x70, 0xbc, 0x14, 0x75, 0xd5, 0x3c, 0x7d, 0xcc, 0xd5, 0xbb, 0x16, 0x8b, 0xf2, 0x7a, 0x7c, 0x5d,
-	0x16, 0x8d, 0xe7, 0x13, 0x32, 0x11, 0x0c, 0x96, 0x2e, 0xe8, 0x49, 0x99, 0x08, 0x45, 0x10, 0xe7,
-	0x72, 0xb2, 0x5a, 0xb0, 0x8e, 0x1b, 0x47, 0xa9, 0x0e, 0x51, 0xa3, 0x9c, 0x9f, 0x96, 0xb1, 0x33,
-	0xf0, 0x64, 0x10, 0xf5, 0xf3, 0x89, 0xfc, 0x8c, 0xd6, 0x16, 0x72, 0x86, 0x21, 0x6a, 0xcf, 0x6a,
-	0x55, 0x24, 0x87, 0x8d, 0x21, 0x79, 0xce, 0x91, 0xda, 0x18, 0x92, 0xe7, 0x65, 0xc9, 0x37, 0xab,
-	0x57, 0xf4, 0xde, 0xbd, 0x20, 0x4b, 0x7e, 0x15, 0x89, 0x72, 0x7a, 0xd1, 0xd1, 0x90, 0x4e, 0x9c,
-	0xc2, 0x01, 0x96, 0x2a, 0x3b, 0xd7, 0x6b, 0xfd, 0xc4, 0xfb, 0x91, 0x5d, 0xd6, 0x42, 0x3c, 0x4c,
-	0xb1, 0xc6, 0xab, 0xb0, 0x13, 0x5d, 0xe4, 0xcb, 0xe0, 0xda, 0xb9, 0xb9, 0xb8, 0x38, 0xe3, 0x5b,
-	0x8f, 0x6b, 0xf4, 0xd6, 0x2b, 0x32, 0x1c, 0x71, 0x7f, 0x25, 0xce, 0x42, 0x25, 0xe4, 0xc6, 0x70,
-	0xbc, 0x2a, 0x6a, 0x9f, 0x81, 0x23, 0x39, 0xd0, 0xd7, 0xa4, 0xaf, 0x0d, 0xb4, 0x3f, 0xd2, 0x0a,
-	0xfd, 0xeb, 0xd2, 0xd7, 0x65, 0x18, 0x36, 0xb2, 0xc7, 0x6e, 0xfa, 0x32, 0x8c, 0xb8, 0xdf, 0xdc,
-	0x64, 0xf6, 0xd8, 0xc8, 0xac, 0x23, 0xc2, 0x82, 0x96, 0xd1, 0x33, 0x88, 0xf3, 0xd1, 0x38, 0x4b,
-	0x4c, 0x33, 0xe3, 0x2d, 0x19, 0xbd, 0x2a, 0x12, 0x2c, 0x6c, 0x51, 0x86, 0xcd, 0x76, 0x77, 0x63,
-	0xf6, 0xbc, 0xbc, 0xe3, 0xea, 0x15, 0xa0, 0xb0, 0xad, 0x1d, 0xb5, 0x90, 0xb4, 0xa4, 0xa6, 0x29,
-	0xe3, 0xda, 0x51, 0x0b, 0x8b, 0x04, 0xeb, 0xda, 0x63, 0x4f, 0xb2, 0x41, 0xea, 0x90, 0x81, 0x9d,
-	0xb7, 0xe6, 0x3d, 0x8f, 0x3d, 0xc9, 0x6e, 0x0a, 0xe5, 0xf2, 0xbe, 0x2c, 0x33, 0x06, 0xa5, 0xe8,
-	0xe9, 0xfe, 0x40, 0x96, 0x99, 0x0a, 0x0e, 0xe5, 0xf3, 0xa1, 0x56, 0x37, 0x42, 0x56, 0xd2, 0x49,
-	0x7f, 0x46, 0xc4, 0xa8, 0x56, 0x37, 0x4c, 0x04, 0xe1, 0xa2, 0x1e, 0x7b, 0x7e, 0x34, 0x82, 0x80,
-	0x51, 0xaf, 0xf5, 0x63, 0xef, 0x7b, 0x66, 0x4e, 0xc9, 0xb0, 0x13, 0x0d, 0xc7, 0x09, 0x7b, 0x79,
-	0x25, 0xdf, 0x4f, 0xc1, 0x33, 0x53, 0x97, 0x79, 0x30, 0xad, 0xa5, 0x33, 0x3b, 0x21, 0x07, 0xa9,
-	0xfd, 0xe2, 0xe7, 0x3f, 0x37, 0x4e, 0x56, 0x50, 0xe8, 0xe7, 0xb2, 0x4a, 0x5a, 0x24, 0x7d, 0x0e,
-	0xc6, 0xb2, 0xf6, 0x85, 0xac, 0x7f, 0x95, 0x2c, 0x9c, 0xe1, 0x4a, 0x57, 0x58, 0x2c, 0x4a, 0xbf,
-	0x9b, 0xcf, 0x5d, 0x61, 0x21, 0x94, 0x66, 0x77, 0x9f, 0x45, 0xca, 0x42, 0x44, 0x13, 0xde, 0xc3,
-	0x67, 0x91, 0x2a, 0xa1, 0x94, 0x76, 0x4f, 0x9f, 0x87, 0xd0, 0x42, 0xed, 0x5d, 0x6f, 0x2f, 0x9f,
-	0x87, 0xb0, 0x82, 0x43, 0xf9, 0xec, 0xed, 0xb7, 0xfe, 0xa7, 0xf7, 0xc3, 0xba, 0x7c, 0xb4, 0xcf,
-	0x7f, 0x1f, 0xdf, 0xd5, 0x5d, 0x1c, 0x24, 0xac, 0xe5, 0x66, 0x5f, 0xdf, 0xd5, 0x5d, 0x26, 0x0b,
-	0x86, 0xbf, 0xcf, 0x87, 0x7d, 0x16, 0x0b, 0xe7, 0x01, 0xba, 0xe8, 0xfc, 0xd8, 0x60, 0x7f, 0x9f,
-	0x0f, 0xfb, 0xd6, 0x65, 0xc3, 0x2d, 0xe0, 0xb3, 0x42, 0xbb, 0x18, 0x2f, 0x58, 0xc1, 0x39, 0x07,
-	0xf8, 0xac, 0xd0, 0x9a, 0x00, 0x42, 0x5a, 0x7d, 0xb1, 0x27, 0x7b, 0x63, 0x32, 0xbf, 0x42, 0x76,
-	0x1f, 0x1d, 0xe4, 0x8b, 0x3d, 0x99, 0x7f, 0xc7, 0x39, 0xae, 0x7c, 0x5f, 0xb1, 0x43, 0xa8, 0x0e,
-	0xf1, 0xd9, 0x67, 0xdd, 0x19, 0x86, 0xab, 0x2a, 0x3c, 0x07, 0x51, 0xab, 0x3e, 0xfb, 0xac, 0xf3,
-	0xcf, 0x88, 0x58, 0xf5, 0xd9, 0x0c, 0x1a, 0x8e, 0xfa, 0x51, 0xc1, 0xcd, 0x7d, 0xb8, 0x2f, 0x61,
-	0xa1, 0x36, 0x86, 0xa8, 0x55, 0x9f, 0x57, 0xe8, 0x1c, 0xd3, 0x9e, 0x73, 0xaa, 0xc5, 0x91, 0x3e,
-	0x1f, 0x2b, 0x02, 0x5f, 0x18, 0x46, 0xca, 0xc1, 0xca, 0xf5, 0xd4, 0x53, 0xee, 0x28, 0x5f, 0x34,
-	0xe3, 0x70, 0x0d, 0x7b, 0xf9, 0x62, 0x92, 0x74, 0xd4, 0x3e, 0x74, 0xb4, 0x94, 0xb0, 0xd8, 0x1b,
-	0xa7, 0x6b, 0xfd, 0x36, 0xa2, 0xa7, 0x8c, 0xa3, 0xe6, 0xad, 0x92, 0x74, 0x35, 0x9a, 0x27, 0x0e,
-	0xfb, 0x28, 0x10, 0xcf, 0x2a, 0x5d, 0x19, 0xf6, 0xb3, 0x78, 0xdc, 0x5e, 0x8a, 0x42, 0x35, 0x84,
-	0xc7, 0x4a, 0x97, 0x19, 0xdf, 0x61, 0xe9, 0xfb, 0xac, 0x37, 0x2c, 0x8f, 0xa2, 0xb4, 0xa8, 0x2d,
-	0x1d, 0xef, 0xb3, 0xde, 0x50, 0x04, 0x29, 0xe5, 0x09, 0xbe, 0x1c, 0xec, 0xab, 0x9b, 0x25, 0x83,
-	0x70, 0x18, 0xaa, 0x0e, 0x38, 0x51, 0x90, 0x5e, 0x38, 0xb0, 0xbd, 0x6a, 0x27, 0xc9, 0x5c, 0xb4,
-	0x10, 0x18, 0xf8, 0x32, 0x17, 0x59, 0xcf, 0x52, 0x11, 0x4a, 0x12, 0xf4, 0xba, 0x4d, 0xe6, 0x62,
-	0x09, 0x85, 0x69, 0xee, 0xf3, 0xa2, 0x6c, 0x89, 0x67, 0x1a, 0x65, 0xe3, 0x2c, 0x1e, 0xa4, 0xca,
-	0x38, 0xf7, 0x79, 0x51, 0x76, 0x53, 0x60, 0x9e, 0xfb, 0xac, 0xc5, 0xb2, 0xfd, 0x4e, 0x4b, 0xd9,
-	0xe6, 0x28, 0x1a, 0x8c, 0xd3, 0x70, 0xb3, 0x9a, 0xcf, 0x67, 0xf8, 0xac, 0x40, 0x38, 0x19, 0x30,
-	0xd7, 0x45, 0xa4, 0x8c, 0x84, 0xe2, 0xca, 0x3c, 0x4b, 0x44, 0xaa, 0x80, 0x51, 0xba, 0xb3, 0x7d,
-	0xb6, 0xe8, 0x72, 0xcc, 0xb2, 0xe8, 0xce, 0x11, 0x81, 0x70, 0xe0, 0x38, 0x33, 0x95, 0xfe, 0xc9,
-	0x71, 0x63, 0x5a, 0x9c, 0xe7, 0xf3, 0xb6, 0x5e, 0xe7, 0x12, 0x86, 0xf9, 0xee, 0x4f, 0xe0, 0x3b,
-	0x86, 0x15, 0xef, 0xb7, 0x7e, 0xe6, 0xed, 0x6c, 0x2b, 0x4a, 0x46, 0x20, 0x1c, 0x5f, 0x51, 0xd0,
-	0xae, 0xaa, 0x0b, 0x40, 0x2f, 0x28, 0x88, 0x6e, 0x3a, 0xac, 0x7c, 0xdf, 0xf6, 0x11, 0xc8, 0x29,
-	0x37, 0xcf, 0xcd, 0x8b, 0x7c, 0xdb, 0x36, 0x37, 0x60, 0x58, 0xf6, 0xbe, 0xed, 0xa5, 0x50, 0x70,
-	0x1a, 0x65, 0x99, 0x5c, 0x6a, 0xb9, 0xc4, 0xb7, 0xbd, 0x14, 0x36, 0x03, 0x07, 0xaf, 0x3e, 0x6f,
-	0x87, 0x16, 0xc3, 0x5e, 0xf0, 0x60, 0xd5, 0xfb, 0xe2, 0xd8, 0x32, 0x79, 0xc3, 0x68, 0x3e, 0x19,
-	0x2a, 0x7f, 0xc6, 0xe5, 0xb2, 0x4d, 0xd8, 0x04, 0xfb, 0x68, 0x55, 0xb6, 0x89, 0x0a, 0x0e, 0x4c,
-	0x76, 0xac, 0x29, 0xc5, 0x7c, 0x06, 0x49, 0x3a, 0x8e, 0x3b, 0x5b, 0xf2, 0xac, 0xae, 0x96, 0xa5,
-	0xa7, 0x9a, 0x06, 0x53, 0xde, 0xb7, 0x1c, 0x8b, 0x4c, 0x93, 0x8d, 0xef, 0x5a, 0xdf, 0x72, 0x2c,
-	0x1a, 0x28, 0x0c, 0x7a, 0x67, 0x8b, 0xec, 0x6e, 0xb9, 0xde, 0xd9, 0x22, 0x7b, 0xe3, 0xbb, 0x41,
-	0x36, 0xbe, 0xca, 0x7c, 0xf4, 0xc6, 0x77, 0xa3, 0xc8, 0x6f, 0x05, 0x55, 0xdf, 0x56, 0xba, 0x49,
-	0xf6, 0x3e, 0x8b, 0x58, 0x8c, 0xe7, 0xb8, 0xd9, 0x29, 0x20, 0x83, 0xcd, 0xb9, 0xbc, 0xde, 0xe2,
-	0x14, 0x10, 0x61, 0xc0, 0x1b, 0xe0, 0xb3, 0x1e, 0x54, 0x23, 0x20, 0x38, 0x1d, 0xf6, 0xc5, 0xb1,
-	0xe9, 0x10, 0x10, 0xb8, 0x09, 0xd0, 0x0d, 0xd5, 0x5d, 0x65, 0x9c, 0xec, 0xdf, 0x21, 0xb3, 0xb3,
-	0xae, 0x1b, 0xe0, 0x3c, 0x90, 0xf5, 0xb0, 0x54, 0x39, 0x6d, 0x4a, 0xdf, 0x25, 0xeb, 0xa1, 0x9b,
-	0x02, 0x07, 0xc2, 0x3a, 0x83, 0x08, 0x2f, 0x82, 0xde, 0xa8, 0xac, 0x99, 0x94, 0x49, 0xdc, 0xd3,
-	0xbd, 0xce, 0xae, 0x6e, 0x1b, 0x21, 0x34, 0xf7, 0x39, 0xbb, 0xba, 0x6d, 0x84, 0xd2, 0xfc, 0xd9,
-	0xb7, 0x7d, 0x7e, 0xcc, 0x80, 0xba, 0x31, 0x08, 0x87, 0x4a, 0x44, 0xee, 0xf7, 0x6d, 0x9f, 0x5f,
-	0x89, 0x84, 0xb0, 0x5c, 0x67, 0xbf, 0xf4, 0x56, 0x8c, 0x7d, 0xff, 0x41, 0x67, 0x61, 0x44, 0x31,
-	0x82, 0x94, 0x1e, 0x72, 0x16, 0x66, 0x90, 0xe0, 0x4a, 0x70, 0xf6, 0xb0, 0x2e, 0x0c, 0xb1, 0xba,
-	0xb2, 0xca, 0x98, 0xfe, 0x0c, 0x65, 0xb5, 0x5a, 0x0b, 0xc4, 0xa3, 0x22, 0x6c, 0x35, 0x3c, 0x44,
-	0xf1, 0xca, 0x2e, 0x62, 0x6d, 0x72, 0xab, 0x4b, 0x91, 0x1c, 0x74, 0xcb, 0x68, 0x39, 0x70, 0x1c,
-	0x78, 0x4b, 0x7d, 0x9c, 0xe9, 0xf3, 0x23, 0xfd, 0x27, 0xa5, 0x3e, 0x35, 0x3c, 0x78, 0x16, 0x7c,
-	0x36, 0xa7, 0x1d, 0x3c, 0x78, 0x10, 0x0c, 0x55, 0xe3, 0x69, 0x9f, 0x4d, 0xe4, 0x75, 0xb8, 0x88,
-	0x08, 0x96, 0xc5, 0xd0, 0x59, 0xbe, 0xce, 0xf2, 0x59, 0x59, 0x0c, 0xab, 0x69, 0x88, 0x13, 0xf6,
-	0x5b, 0xff, 0xcb, 0xfb, 0xb1, 0x3b, 0x37, 0xdc, 0x96, 0x35, 0xf3, 0x7c, 0x1e, 0x64, 0x77, 0x9e,
-	0x16, 0x19, 0x87, 0xec, 0xa2, 0x0d, 0x18, 0x21, 0xbf, 0xdd, 0x15, 0x35, 0x16, 0x2f, 0x8a, 0x36,
-	0x50, 0xc0, 0x28, 0xdd, 0x4b, 0x3e, 0x9f, 0x30, 0x0b, 0x86, 0xb3, 0x76, 0x19, 0x5c, 0xf9, 0x68,
-	0x5c, 0xb7, 0xc3, 0x99, 0xbb, 0x0c, 0xae, 0x03, 0xc7, 0xd9, 0xbb, 0xe0, 0xd1, 0x96, 0x41, 0x97,
-	0x64, 0x27, 0xda, 0x62, 0xe9, 0xce, 0xaf, 0x8a, 0xd2, 0x26, 0xb8, 0x9e, 0x13, 0xaf, 0x89, 0xd2,
-	0x66, 0x21, 0x88, 0x26, 0xf6, 0x73, 0xc7, 0x1f, 0xe7, 0x59, 0xf0, 0xc5, 0xbf, 0xe1, 0xe7, 0x8e,
-	0xbf, 0x32, 0x83, 0xf2, 0x78, 0x53, 0x3a, 0x49, 0x18, 0x46, 0xea, 0xbf, 0x4a, 0x27, 0x15, 0x30,
-	0x4a, 0xf7, 0x96, 0xd3, 0x00, 0x53, 0x23, 0x21, 0x3b, 0xd9, 0xdb, 0x4e, 0x03, 0x2c, 0xe7, 0xe0,
-	0xc6, 0xe8, 0x3a, 0x1c, 0xea, 0x9b, 0xbf, 0x39, 0x6d, 0x2a, 0x1e, 0x75, 0x6d, 0xce, 0xbe, 0xeb,
-	0x6b, 0x3f, 0x57, 0x7e, 0xe0, 0x9c, 0x37, 0xe6, 0xef, 0xbe, 0xf6, 0x73, 0x15, 0x61, 0xaa, 0xc7,
-	0x7b, 0x32, 0xbe, 0x0c, 0x15, 0xed, 0xba, 0xf7, 0x65, 0xfc, 0x1c, 0x38, 0x8e, 0xe2, 0x6b, 0x70,
-	0x5c, 0x30, 0xf5, 0xf5, 0x25, 0x4e, 0x5a, 0x8d, 0x16, 0xc7, 0xd1, 0x16, 0x1e, 0x7d, 0xf8, 0x0b,
-	0x7c, 0x7d, 0x89, 0xb3, 0x80, 0xc2, 0x67, 0xe0, 0x1b, 0xc7, 0x1a, 0x96, 0x42, 0xff, 0x89, 0x6f,
-	0x1c, 0x6b, 0x58, 0x0a, 0xfd, 0xa7, 0xbe, 0xe1, 0xff, 0xce, 0xd3, 0xc8, 0xba, 0xff, 0x99, 0x6f,
-	0xf8, 0xbf, 0x6d, 0x18, 0x57, 0x4e, 0x75, 0x5f, 0x76, 0x3a, 0xe3, 0xe5, 0x51, 0xd8, 0x25, 0x34,
-	0xbf, 0x69, 0xb6, 0x5b, 0x20, 0x7d, 0x59, 0x82, 0x61, 0xd8, 0x07, 0x65, 0x37, 0x2e, 0x62, 0x25,
-	0x8c, 0xfe, 0xdc, 0x23, 0x28, 0xbb, 0x71, 0x4d, 0x0e, 0x8c, 0xfc, 0x80, 0x03, 0xe1, 0x0d, 0xbd,
-	0xb5, 0x1b, 0x6f, 0x0e, 0xe7, 0xe3, 0xae, 0xea, 0x00, 0x9d, 0xdb, 0x5e, 0x01, 0x07, 0xc2, 0xd7,
-	0x32, 0x61, 0xf0, 0x07, 0x12, 0x2b, 0xd7, 0xce, 0x92, 0xa1, 0x9a, 0x9f, 0xe2, 0x5d, 0xd9, 0x27,
-	0x90, 0x58, 0x39, 0x1b, 0x43, 0x20, 0x76, 0x05, 0x86, 0x00, 0x6c, 0xc1, 0xa8, 0x33, 0xf9, 0xba,
-	0x8e, 0xdc, 0x47, 0xd8, 0x3f, 0x30, 0x0e, 0x8b, 0x0a, 0x77, 0xcf, 0x10, 0x85, 0x1d, 0x18, 0x87,
-	0x45, 0xc5, 0xbb, 0x69, 0xed, 0xcd, 0xd3, 0x07, 0x04, 0xc6, 0xd8, 0x5b, 0xd7, 0xe6, 0x0e, 0x0c,
-	0x8c, 0xb1, 0xb7, 0xae, 0xce, 0x1d, 0x24, 0x6d, 0x34, 0xea, 0x23, 0xb7, 0x1a, 0x0e, 0x76, 0xd4,
-	0x55, 0xee, 0x35, 0x1c, 0x12, 0xf0, 0x06, 0x6d, 0x05, 0xb2, 0x65, 0xa1, 0xe1, 0x0d, 0x3a, 0x34,
-	0xe0, 0x6d, 0xd5, 0x4d, 0x81, 0x5d, 0x1f, 0xb0, 0x66, 0x59, 0xa2, 0x94, 0x96, 0xf3, 0x23, 0x03,
-	0xd6, 0xbe, 0xea, 0xa9, 0xb8, 0x79, 0x5a, 0x5f, 0x30, 0xcc, 0xf6, 0x80, 0x95, 0x87, 0x12, 0xa5,
-	0x13, 0xaf, 0xa8, 0xe9, 0xbe, 0x3c, 0xbd, 0x35, 0x60, 0xe5, 0xa1, 0x8a, 0x84, 0xd3, 0xfb, 0x40,
-	0x02, 0xd5, 0x93, 0x3e, 0x6e, 0xe8, 0xe3, 0x10, 0x8f, 0x56, 0x6c, 0xd8, 0xf2, 0x81, 0x04, 0xaa,
-	0x17, 0x51, 0x58, 0xf4, 0x01, 0xef, 0xce, 0xed, 0x61, 0x92, 0xa6, 0xe3, 0xb5, 0x51, 0xd8, 0x1f,
-	0x63, 0x8d, 0xca, 0x86, 0x71, 0x68, 0xdc, 0x35, 0x3a, 0x3e, 0x68, 0xfd, 0x1f, 0x6f, 0x13, 0x2e,
-	0xd7, 0xbb, 0x78, 0xb2, 0x91, 0xab, 0xff, 0xb2, 0xb5, 0x81, 0xaa, 0xfe, 0x09, 0x48, 0x55, 0x99,
-	0xbb, 0x23, 0x15, 0x02, 0x00, 0xf4, 0xc0, 0x56, 0xa4, 0x5a, 0x9e, 0x3e, 0x49, 0xf7, 0xaf, 0x93,
-	0x02, 0x1f, 0x81, 0x4c, 0xc7, 0xaa, 0x5c, 0xf4, 0xb8, 0x9e, 0x22, 0xd3, 0xb1, 0x96, 0x89, 0xd0,
-	0x80, 0x80, 0x77, 0x7f, 0x37, 0xd3, 0xb6, 0x6b, 0xb6, 0x05, 0xbc, 0xfb, 0xaf, 0x47, 0x86, 0x57,
-	0x22, 0x68, 0xfd, 0x6f, 0xef, 0x67, 0x13, 0xe5, 0xac, 0x2d, 0x9d, 0xd3, 0x90, 0x66, 0x82, 0x02,
-	0x0c, 0xb3, 0xe0, 0xf4, 0xfa, 0x16, 0xd8, 0xaa, 0xe4, 0x19, 0xf5, 0x2d, 0xb0, 0xf5, 0xc9, 0x33,
-	0xeb, 0x73, 0x5e, 0x89, 0xa3, 0xd5, 0x3c, 0xe7, 0xb3, 0xea, 0x73, 0xce, 0xc9, 0xf0, 0x77, 0x04,
-	0xad, 0x4d, 0xde, 0x4f, 0x26, 0xc8, 0x39, 0x19, 0xa9, 0xdc, 0xcf, 0x99, 0x34, 0x77, 0x92, 0xec,
-	0x73, 0x03, 0xb6, 0xca, 0x8d, 0xc5, 0xd8, 0xda, 0xed, 0xce, 0x0b, 0xd8, 0x2a, 0x73, 0x11, 0x10,
-	0x49, 0x2e, 0x93, 0xb4, 0xea, 0x9a, 0x14, 0x91, 0x2e, 0x09, 0x58, 0x5d, 0x76, 0xd7, 0x49, 0x2f,
-	0x59, 0x97, 0xd6, 0x4f, 0x48, 0xbd, 0x6e, 0x5d, 0x16, 0xb0, 0x5a, 0xeb, 0xe6, 0x89, 0x52, 0xf3,
-	0xa7, 0x80, 0xd5, 0xda, 0x6a, 0x1a, 0xe5, 0x76, 0x79, 0x20, 0x17, 0x01, 0x47, 0x50, 0xc7, 0x8d,
-	0x4d, 0xfb, 0x8a, 0x40, 0x2e, 0x02, 0x5a, 0x10, 0xa5, 0xba, 0x32, 0x90, 0x48, 0x99, 0x42, 0x2a,
-	0x3d, 0xb5, 0xae, 0x0a, 0x24, 0x52, 0xc6, 0xc5, 0xa0, 0x3c, 0xae, 0x0e, 0xd8, 0x4f, 0x0d, 0x86,
-	0x5c, 0x00, 0x2c, 0x2a, 0x00, 0xd7, 0x04, 0xac, 0x53, 0x55, 0xb2, 0x70, 0x1b, 0x57, 0x76, 0x72,
-	0x0d, 0x95, 0xcd, 0x91, 0xeb, 0x64, 0x27, 0xaf, 0xe0, 0xe0, 0xa6, 0xae, 0x8c, 0x55, 0x81, 0x53,
-	0x34, 0x43, 0x6e, 0x90, 0xb1, 0xaa, 0xe1, 0x21, 0xee, 0x40, 0x16, 0xb4, 0x52, 0x99, 0x3a, 0xab,
-	0x9b, 0x64, 0x41, 0x73, 0x53, 0x10, 0x83, 0x10, 0xb0, 0x63, 0xa3, 0x40, 0x29, 0xed, 0x53, 0xb7,
-	0x04, 0x6c, 0xfa, 0xd7, 0x11, 0xe1, 0x97, 0x90, 0xdd, 0x9c, 0xf7, 0x84, 0xe2, 0x05, 0xf8, 0xdb,
-	0x02, 0xeb, 0x32, 0xa5, 0xb5, 0x9f, 0xdf, 0x1e, 0x58, 0x97, 0x29, 0xad, 0x1d, 0xfd, 0x0e, 0x69,
-	0x8c, 0x89, 0xd9, 0xf7, 0x5a, 0xef, 0x94, 0x3d, 0xcb, 0xa4, 0xe8, 0x6d, 0xff, 0x2e, 0xd9, 0xb3,
-	0x4a, 0x28, 0x7c, 0x0d, 0x22, 0x76, 0x26, 0x6a, 0xa9, 0x29, 0xf7, 0x88, 0xd8, 0x39, 0x19, 0x94,
-	0xc7, 0xbd, 0x32, 0x7d, 0x4a, 0x55, 0xb4, 0x32, 0xba, 0x4f, 0xa6, 0x4f, 0x35, 0x0d, 0x5e, 0x07,
-	0x19, 0x60, 0xab, 0xbe, 0x56, 0xac, 0xcc, 0xfd, 0xae, 0x3e, 0xb1, 0x97, 0x88, 0x07, 0xec, 0x25,
-	0x22, 0x4b, 0x06, 0xec, 0x5a, 0x55, 0x0e, 0x55, 0xbd, 0x78, 0x3e, 0x64, 0x2f, 0x11, 0x4e, 0x1e,
-	0x9c, 0x0a, 0x01, 0x1f, 0xdb, 0x14, 0x79, 0xce, 0xdd, 0xe4, 0x91, 0x80, 0x8f, 0x6d, 0xd6, 0x65,
-	0x23, 0x66, 0xc1, 0x5e, 0x7e, 0x8c, 0x3a, 0x24, 0xc3, 0x76, 0x34, 0x5e, 0xe5, 0xa0, 0xe0, 0xc7,
-	0xec, 0xe5, 0xc7, 0x45, 0x43, 0xd4, 0x82, 0xbd, 0xc2, 0x3b, 0x73, 0xb3, 0x76, 0xa6, 0x27, 0x90,
-	0xa0, 0x36, 0x5f, 0x7b, 0x77, 0x7a, 0xb2, 0xaa, 0xbe, 0xf6, 0x9e, 0xfd, 0x54, 0x55, 0x7d, 0xed,
-	0xdd, 0xfa, 0xe9, 0x40, 0x3f, 0x3f, 0x11, 0x76, 0xc6, 0xa3, 0x41, 0x27, 0xcc, 0xd4, 0x8c, 0x79,
-	0x26, 0xd0, 0xef, 0x9a, 0x84, 0x1d, 0x5a, 0x07, 0x86, 0x72, 0xd9, 0xf0, 0xd9, 0x40, 0xbf, 0x6b,
-	0x62, 0x20, 0x70, 0x29, 0x04, 0xe6, 0x13, 0x35, 0xda, 0xad, 0xf8, 0x7c, 0x60, 0x3e, 0x51, 0xa3,
-	0x7d, 0x89, 0x2f, 0xc8, 0x7a, 0xb9, 0xc8, 0x75, 0x34, 0x5e, 0xf9, 0xc9, 0xaf, 0x36, 0xbe, 0x28,
-	0xeb, 0x65, 0x25, 0x0b, 0xae, 0x83, 0x62, 0x5e, 0x7c, 0x6a, 0x14, 0xf5, 0xb3, 0x68, 0xa8, 0xae,
-	0xa8, 0x45, 0xcb, 0xd3, 0x2f, 0x17, 0xf3, 0x2a, 0xb1, 0x10, 0xb5, 0x50, 0x91, 0x97, 0xba, 0x93,
-	0x2a, 0x79, 0xbd, 0x22, 0x6b, 0x58, 0x81, 0x45, 0x38, 0xce, 0xae, 0x06, 0x89, 0x3a, 0x82, 0x79,
-	0x55, 0xd6, 0xb0, 0x3a, 0x22, 0x62, 0x18, 0x64, 0xaa, 0x3b, 0x6b, 0x87, 0x77, 0xa1, 0x2a, 0x18,
-	0xaa, 0x66, 0xc4, 0x78, 0xbb, 0xa2, 0xee, 0xe9, 0x52, 0xb2, 0x6a, 0x04, 0xe5, 0x57, 0xf4, 0x43,
-	0xce, 0x82, 0xf5, 0x2f, 0x16, 0x94, 0x39, 0xcf, 0x87, 0x51, 0x4f, 0x5e, 0x67, 0x78, 0xd7, 0xb5,
-	0xe6, 0x32, 0x8e, 0x98, 0x01, 0xd7, 0xc2, 0x38, 0x48, 0x12, 0xa5, 0xf7, 0xbe, 0xe7, 0x5a, 0x18,
-	0x81, 0x22, 0x52, 0x20, 0xb0, 0x3c, 0xf5, 0x9d, 0xa8, 0x27, 0x6f, 0x86, 0x21, 0x46, 0x20, 0xb0,
-	0x3c, 0xf5, 0x06, 0x8a, 0xe8, 0x80, 0xc0, 0x3a, 0x46, 0x51, 0x68, 0x7e, 0x17, 0xf0, 0xa3, 0xc0,
-	0x3a, 0x46, 0x31, 0x61, 0xd8, 0xfc, 0x81, 0xe5, 0xe7, 0x57, 0x30, 0x87, 0xac, 0xca, 0x1e, 0xfe,
-	0x49, 0x60, 0xb9, 0x88, 0x4b, 0x1c, 0xf8, 0x01, 0x02, 0xcb, 0x05, 0xac, 0x38, 0xbd, 0x15, 0xc3,
-	0x05, 0xfc, 0x59, 0x60, 0xb9, 0x80, 0x0b, 0x0c, 0x78, 0x03, 0x02, 0xeb, 0x00, 0x40, 0x31, 0xe6,
-	0x47, 0x6b, 0x5c, 0xdd, 0xfc, 0xa0, 0xfa, 0x8b, 0xc0, 0x72, 0x91, 0xbb, 0x89, 0x08, 0x17, 0x08,
-	0xe4, 0xae, 0x9b, 0x6c, 0xa8, 0x46, 0x10, 0xea, 0x6e, 0x4d, 0xb9, 0xeb, 0x56, 0x00, 0xe1, 0x5b,
-	0x68, 0xf2, 0x88, 0xe4, 0x60, 0xbc, 0x48, 0xbd, 0xae, 0xbc, 0x0a, 0x4d, 0x1e, 0x91, 0x12, 0x0a,
-	0x7f, 0x42, 0x93, 0x47, 0xc4, 0xda, 0x7b, 0x96, 0xd4, 0x69, 0xf8, 0xf2, 0xf4, 0x5e, 0x4d, 0xeb,
-	0xcd, 0x01, 0x13, 0x86, 0xe7, 0xa0, 0x59, 0xb1, 0xa4, 0xe6, 0x2b, 0x19, 0xf4, 0x60, 0x2d, 0x1e,
-	0xfb, 0x34, 0x2b, 0x96, 0x54, 0x57, 0x02, 0xf8, 0x18, 0x9a, 0x72, 0x26, 0x53, 0x35, 0x45, 0x71,
-	0xc6, 0x4b, 0x79, 0xef, 0xd7, 0x94, 0x73, 0x8b, 0x5a, 0x2a, 0x3c, 0x10, 0x4d, 0xe3, 0xee, 0x8e,
-	0x58, 0xbc, 0x49, 0x7f, 0xbc, 0x92, 0xf0, 0xd2, 0xf6, 0xbb, 0xa6, 0x71, 0x77, 0xa7, 0x48, 0x80,
-	0x0f, 0xa2, 0x29, 0xdb, 0xa8, 0x69, 0x33, 0x47, 0xdd, 0x85, 0xf1, 0x42, 0xd8, 0x37, 0xa2, 0x9e,
-	0x0f, 0x6c, 0xca, 0x36, 0x5a, 0xcd, 0x83, 0x7f, 0xa2, 0xe9, 0xf0, 0x33, 0xa8, 0xea, 0x88, 0x50,
-	0x1e, 0xdc, 0x74, 0x98, 0xfb, 0x39, 0x05, 0xde, 0x8a, 0xa6, 0x98, 0xa3, 0x06, 0x05, 0x05, 0x89,
-	0xe6, 0x26, 0x99, 0x1d, 0xda, 0x14, 0x73, 0xb4, 0x8e, 0x09, 0xdf, 0x45, 0x93, 0x25, 0xbd, 0xc4,
-	0x54, 0x3e, 0x22, 0xad, 0x11, 0x1e, 0xde, 0x64, 0x49, 0xaf, 0x23, 0x22, 0x5a, 0xa1, 0x32, 0xc7,
-	0x4e, 0x68, 0x29, 0xf6, 0x47, 0x56, 0xe6, 0x68, 0x10, 0xe1, 0x09, 0x69, 0x8a, 0x12, 0x62, 0x10,
-	0xa9, 0x54, 0x16, 0x01, 0xbb, 0x23, 0x8f, 0x6e, 0x8a, 0x12, 0xb2, 0x1e, 0x9b, 0xf2, 0xde, 0xda,
-	0x34, 0xe2, 0x79, 0x8b, 0xaf, 0x4d, 0x1c, 0xd3, 0x34, 0xe2, 0x79, 0x8b, 0x0f, 0x4c, 0x1c, 0xdb,
-	0xe4, 0x7d, 0x7a, 0x35, 0x4e, 0x97, 0xc6, 0xf3, 0xc9, 0x16, 0x3c, 0xeb, 0x83, 0x3b, 0xe5, 0x4d,
-	0xde, 0xa7, 0x2d, 0x04, 0x97, 0xc8, 0x65, 0x2e, 0x03, 0x19, 0xf5, 0xbb, 0x49, 0x7b, 0xb3, 0xd2,
-	0x05, 0xe1, 0xea, 0x90, 0xb9, 0xcc, 0xda, 0x00, 0x48, 0x40, 0x71, 0x2b, 0x5c, 0xd0, 0x52, 0x5a,
-	0xb8, 0x2a, 0x9a, 0xac, 0x01, 0xe4, 0x89, 0xe0, 0x97, 0x68, 0x4a, 0xe0, 0x86, 0xf9, 0x59, 0x39,
-	0x22, 0x9a, 0xb6, 0x85, 0x42, 0x36, 0xe9, 0x6a, 0x32, 0xec, 0x48, 0x70, 0x47, 0xca, 0x3e, 0xc2,
-	0x6d, 0x4d, 0xdb, 0x42, 0x71, 0xf1, 0xe0, 0x7e, 0x68, 0x1a, 0x7e, 0xb6, 0xe5, 0x78, 0x6d, 0x14,
-	0xe5, 0xaa, 0xfa, 0x69, 0x22, 0xff, 0x39, 0x86, 0xba, 0x70, 0x2b, 0x70, 0x53, 0x5c, 0xe4, 0xdf,
-	0x4d, 0xc1, 0x6d, 0xf1, 0xa6, 0xe1, 0xe1, 0x35, 0x28, 0xbc, 0x14, 0x9e, 0xd9, 0x34, 0x3c, 0xbc,
-	0x36, 0x8c, 0x7b, 0xe3, 0x4d, 0xc3, 0x2f, 0x69, 0xc0, 0x62, 0xf1, 0x9f, 0xdd, 0x34, 0xfc, 0x92,
-	0x05, 0x1c, 0x97, 0x18, 0x9a, 0xac, 0xfe, 0xe5, 0xb8, 0x9c, 0xd3, 0x9a, 0xc7, 0x22, 0xe7, 0x36,
-	0xe5, 0x8e, 0x7f, 0x25, 0x0d, 0x57, 0x1b, 0x9a, 0xe6, 0xc3, 0x42, 0xca, 0x12, 0xb0, 0x5c, 0x06,
-	0xe7, 0x37, 0xcd, 0x77, 0x83, 0x0a, 0x04, 0x84, 0x44, 0x18, 0x0b, 0xc6, 0x7c, 0xdc, 0x8f, 0x44,
-	0x37, 0x63, 0x77, 0x3c, 0x75, 0xfb, 0x05, 0xc6, 0x42, 0x68, 0x52, 0xb4, 0x80, 0x5f, 0x68, 0x2c,
-	0x84, 0x25, 0x02, 0x9e, 0xf8, 0x52, 0x33, 0x20, 0x95, 0xc0, 0x1f, 0xf5, 0x3e, 0x46, 0xaa, 0xce,
-	0x1f, 0x2e, 0x9f, 0xb1, 0xc1, 0xb0, 0xd3, 0x51, 0x97, 0x92, 0x09, 0xbc, 0x62, 0x06, 0xf1, 0x3f,
-	0x1a, 0x9c, 0x0f, 0xd5, 0xb1, 0xd2, 0x95, 0x33, 0x90, 0xc8, 0xd4, 0x11, 0x4a, 0x74, 0x95, 0x40,
-	0x3c, 0x53, 0x8d, 0x96, 0x5c, 0x3d, 0x03, 0xe1, 0xca, 0x21, 0x7e, 0x0e, 0x83, 0xb0, 0x6b, 0x66,
-	0x30, 0xdd, 0xd2, 0xf2, 0xb3, 0x1e, 0xd7, 0x3a, 0x11, 0x4a, 0x73, 0xdd, 0x0c, 0x06, 0x5b, 0x36,
-	0xf8, 0x12, 0x7e, 0xfd, 0x0c, 0x54, 0x04, 0xc1, 0xb9, 0x92, 0x26, 0xe3, 0x06, 0x27, 0x23, 0x4b,
-	0xd4, 0x15, 0x54, 0x62, 0xdc, 0x38, 0x83, 0x09, 0x5b, 0xa1, 0x12, 0xdf, 0x54, 0x40, 0x73, 0x25,
-	0x17, 0x21, 0x03, 0x05, 0x34, 0x4c, 0xe2, 0xfc, 0x09, 0xd3, 0xe9, 0x5b, 0xa4, 0x6c, 0x97, 0x82,
-	0xac, 0xcc, 0xf2, 0x19, 0x3c, 0x42, 0x6a, 0x3c, 0x4b, 0x7a, 0x9b, 0xf5, 0x05, 0xf7, 0xc5, 0xa5,
-	0x0f, 0x4c, 0x25, 0xd4, 0x90, 0xc0, 0x3b, 0x66, 0xa0, 0x6c, 0x15, 0xea, 0x6f, 0x9f, 0xc7, 0xdf,
-	0x59, 0xe0, 0xb8, 0x9e, 0x8f, 0xb9, 0x6b, 0x06, 0x42, 0x96, 0x56, 0xbe, 0x53, 0x73, 0xf7, 0x0c,
-	0x9c, 0x5f, 0x69, 0xed, 0xfb, 0x32, 0xf7, 0xcc, 0x20, 0x8c, 0x34, 0xb5, 0xa5, 0xec, 0x5e, 0x3d,
-	0x0a, 0x78, 0x2d, 0x29, 0x5f, 0xf0, 0xb5, 0x0d, 0x74, 0x5f, 0x2d, 0x03, 0x96, 0xb7, 0xf4, 0x83,
-	0x7d, 0x6f, 0x5e, 0xef, 0x53, 0xf7, 0xd7, 0xe0, 0xb0, 0xb9, 0x67, 0xb0, 0x40, 0x3a, 0xf1, 0xa5,
-	0x38, 0xbf, 0xa4, 0xfc, 0xe0, 0x04, 0x3c, 0xca, 0xef, 0xa1, 0x19, 0x18, 0x09, 0x36, 0x8f, 0xb7,
-	0x84, 0xfc, 0x0e, 0xfe, 0xc3, 0xeb, 0xb2, 0x70, 0xe2, 0x2f, 0xb3, 0xb0, 0x70, 0x95, 0xfd, 0x51,
-	0xc7, 0x77, 0x9c, 0xe8, 0x17, 0xbe, 0xeb, 0x2b, 0xeb, 0x8e, 0xef, 0x38, 0xc1, 0x97, 0x19, 0x66,
-	0x5d, 0x40, 0xc7, 0xa5, 0x75, 0x41, 0x78, 0x16, 0xe7, 0x86, 0xe5, 0x53, 0x4e, 0x04, 0x36, 0xf1,
-	0x0c, 0x96, 0x34, 0x99, 0x53, 0xa4, 0x00, 0x77, 0x3a, 0xb9, 0x66, 0x0b, 0xeb, 0xd8, 0x9e, 0xb8,
-	0xfc, 0x02, 0x8d, 0xf2, 0xbb, 0x21, 0xf6, 0xdf, 0xc6, 0x4b, 0x85, 0x3f, 0x57, 0x83, 0x23, 0xfa,
-	0x5f, 0xba, 0xd5, 0xba, 0xd8, 0xc7, 0x34, 0xbd, 0x6e, 0xbe, 0xb0, 0x2e, 0x0b, 0xf1, 0xff, 0x33,
-	0xd8, 0x90, 0xd2, 0x8a, 0x2b, 0x5f, 0x2f, 0x09, 0x2c, 0xd1, 0x7d, 0xf6, 0x0d, 0xc1, 0x97, 0xab,
-	0x61, 0x18, 0xcb, 0xb2, 0xf8, 0xba, 0xee, 0x5f, 0xbc, 0x52, 0x05, 0xe2, 0x31, 0x2f, 0x99, 0x6e,
-	0x75, 0x21, 0xf2, 0xaf, 0xad, 0x47, 0xc2, 0x71, 0xbc, 0x48, 0x74, 0x15, 0xa9, 0xa3, 0xa2, 0x29,
-	0xdf, 0x98, 0x80, 0x87, 0xa3, 0x79, 0x19, 0x7f, 0x77, 0x24, 0x3b, 0x75, 0xda, 0x5f, 0x67, 0xe0,
-	0x97, 0xb7, 0x28, 0x02, 0xf3, 0x22, 0x1d, 0xa6, 0x99, 0xc4, 0xf9, 0x4f, 0x4a, 0x46, 0xbc, 0xbf,
-	0xde, 0x7d, 0x24, 0xd2, 0x5c, 0xbf, 0x3d, 0xf4, 0x8e, 0x1b, 0x42, 0xa4, 0xbf, 0x34, 0x6d, 0x9d,
-	0x38, 0xf6, 0x77, 0x27, 0xe0, 0xc1, 0x76, 0xd7, 0x1b, 0x9d, 0xcd, 0xc3, 0x05, 0x7a, 0xc9, 0xc3,
-	0x0e, 0x4c, 0x4f, 0xd8, 0xd0, 0xd0, 0x9e, 0xad, 0xf7, 0x27, 0xe0, 0xe1, 0x04, 0x5f, 0x36, 0x19,
-	0x67, 0x38, 0xfa, 0x87, 0x95, 0x28, 0x2e, 0xd2, 0xcb, 0xc2, 0x5f, 0x13, 0x8e, 0xfe, 0xf1, 0x3a,
-	0x1c, 0x5c, 0xa7, 0x9f, 0x81, 0x59, 0x37, 0x49, 0x38, 0xfa, 0xa7, 0x93, 0x51, 0x71, 0x1b, 0x60,
-	0x32, 0x2a, 0xee, 0x04, 0xc8, 0x54, 0xae, 0x0d, 0x72, 0xff, 0x62, 0x5d, 0x16, 0x8c, 0x7c, 0x91,
-	0xdf, 0xd5, 0x68, 0x7e, 0xb1, 0x27, 0xca, 0x54, 0x2f, 0x8c, 0xfb, 0x59, 0xc8, 0x6f, 0xdb, 0xef,
-	0x36, 0x8b, 0xc8, 0xd4, 0x49, 0x03, 0x59, 0x77, 0x9f, 0x9c, 0x8e, 0x6b, 0xff, 0x93, 0xd3, 0xa9,
-	0x32, 0x7b, 0xce, 0x22, 0x06, 0xaa, 0xd0, 0x2a, 0xc3, 0x9f, 0x62, 0xb8, 0x25, 0xf7, 0x9a, 0xe5,
-	0xc1, 0xac, 0x09, 0xc3, 0xdc, 0x7b, 0x1d, 0x0e, 0x5e, 0x0c, 0x98, 0xb5, 0xf4, 0x26, 0x47, 0x84,
-	0xde, 0xbe, 0xb5, 0x0c, 0x5c, 0x26, 0x98, 0xe5, 0xc5, 0xa9, 0x2e, 0x42, 0x6f, 0xff, 0xf5, 0x48,
-	0xb8, 0x3a, 0x30, 0x6b, 0xed, 0x38, 0xae, 0x08, 0xbd, 0x03, 0xea, 0x29, 0xb8, 0x4e, 0xe0, 0x2c,
-	0xaa, 0x10, 0xc4, 0x77, 0xd0, 0x7a, 0x24, 0x5c, 0x34, 0x98, 0xe5, 0xa9, 0xbb, 0x4e, 0x84, 0xde,
-	0x21, 0x13, 0xf0, 0xf0, 0xf6, 0xc0, 0x2c, 0x1c, 0x01, 0x16, 0xcf, 0x56, 0x25, 0x88, 0x8e, 0xd7,
-	0xe4, 0x66, 0x61, 0xb7, 0xa4, 0xae, 0xc8, 0x4a, 0x63, 0xd3, 0x3a, 0x7c, 0x96, 0x95, 0xb9, 0x42,
-	0x7c, 0xa9, 0x0e, 0xfb, 0x39, 0x42, 0x64, 0xca, 0x22, 0x18, 0x01, 0xec, 0xa6, 0x07, 0x60, 0x42,
-	0x2e, 0x9c, 0x00, 0x6e, 0xd9, 0xb2, 0x0e, 0x9b, 0x8e, 0x96, 0xd6, 0x5a, 0x1c, 0xb6, 0x4c, 0x58,
-	0xd3, 0x57, 0x1b, 0xe4, 0xd6, 0x59, 0xde, 0x19, 0xaa, 0x99, 0xb9, 0xaa, 0x75, 0x8c, 0x53, 0x02,
-	0xac, 0xf0, 0xd6, 0xe3, 0xea, 0x29, 0xb0, 0xfd, 0xeb, 0x7a, 0x0e, 0xe6, 0xff, 0xac, 0xa5, 0x54,
-	0xe4, 0x75, 0x52, 0x9e, 0xfe, 0x44, 0xed, 0x69, 0x27, 0xce, 0xda, 0x46, 0x97, 0x49, 0x9e, 0x3e,
-	0x69, 0x96, 0x75, 0x86, 0x82, 0x05, 0x35, 0x52, 0x8e, 0xb1, 0x93, 0x9d, 0xfd, 0x93, 0x92, 0xe2,
-	0x06, 0xf7, 0xa7, 0x11, 0xcf, 0x30, 0x11, 0x13, 0x6e, 0x84, 0x59, 0xde, 0xb0, 0xb8, 0x3e, 0x38,
-	0x6a, 0x50, 0x63, 0x32, 0xbd, 0x6d, 0xd6, 0x52, 0x80, 0x8a, 0x0e, 0xe1, 0x53, 0xab, 0x61, 0x3c,
-	0x2d, 0x37, 0xcb, 0x8b, 0xb8, 0x09, 0x97, 0x85, 0x83, 0x1a, 0x76, 0xfa, 0xac, 0xa5, 0xd5, 0x29,
-	0xaa, 0x81, 0x9f, 0x61, 0x67, 0x95, 0x77, 0x2d, 0x0b, 0x4f, 0x37, 0x0a, 0x3b, 0xac, 0x33, 0x9c,
-	0x39, 0x0b, 0xaf, 0x54, 0x99, 0x8a, 0x37, 0x47, 0x0c, 0x0d, 0xe9, 0xac, 0x2a, 0x61, 0x53, 0xa5,
-	0x77, 0xc2, 0x9e, 0xbc, 0x3b, 0x79, 0xb6, 0x8c, 0xbc, 0xcb, 0xdd, 0x48, 0xd5, 0x3b, 0x67, 0xd6,
-	0x61, 0x19, 0x38, 0xdc, 0x8d, 0xe7, 0x4e, 0xc0, 0x83, 0x73, 0x41, 0xa4, 0xb1, 0xda, 0xdd, 0x78,
-	0x7e, 0x3d, 0x05, 0x0e, 0x06, 0x69, 0xe0, 0xba, 0xee, 0xc6, 0x0b, 0x26, 0x62, 0xe2, 0xa6, 0x85,
-	0xf4, 0xee, 0x7a, 0xee, 0xc6, 0x8b, 0x26, 0x21, 0xe2, 0xf6, 0x85, 0xac, 0x21, 0xd6, 0x1b, 0x66,
-	0x9d, 0xce, 0x38, 0xee, 0x24, 0x5d, 0x38, 0xdf, 0xd4, 0x44, 0xc6, 0x23, 0x0b, 0x32, 0xeb, 0x9d,
-	0x99, 0xaa, 0x07, 0xa5, 0x75, 0x0d, 0x2e, 0x99, 0x94, 0x8c, 0xfb, 0x1b, 0xb3, 0x70, 0x3a, 0x4e,
-	0xe8, 0xa2, 0xbc, 0x6c, 0x62, 0x36, 0xde, 0x6b, 0x28, 0xcc, 0x78, 0xfd, 0x22, 0x38, 0x7c, 0x30,
-	0x32, 0x8e, 0x61, 0x5b, 0x6d, 0x6d, 0xe8, 0x9e, 0xa4, 0x1b, 0xe5, 0x7b, 0xc5, 0x7e, 0x73, 0xb5,
-	0x14, 0x2a, 0x62, 0xff, 0x39, 0x56, 0x70, 0x61, 0x1f, 0xea, 0x1f, 0x2d, 0x80, 0xaf, 0xdc, 0x0d,
-	0xc1, 0x4b, 0x3e, 0xc7, 0x1a, 0xa2, 0x64, 0xac, 0x29, 0x78, 0x39, 0x75, 0x8e, 0x0d, 0x76, 0x5d,
-	0x1c, 0x76, 0xc1, 0xd2, 0x57, 0x6c, 0x7b, 0x73, 0xdc, 0x44, 0xfd, 0x75, 0x21, 0xee, 0xc7, 0x6c,
-	0xd2, 0x1d, 0x32, 0xc7, 0x2b, 0x4c, 0x5e, 0xba, 0xd6, 0xcc, 0x0f, 0x15, 0x0c, 0xf7, 0xb4, 0xa0,
-	0xd8, 0x68, 0xec, 0x30, 0xc9, 0xd4, 0x08, 0x50, 0xd4, 0xe0, 0xe1, 0xd2, 0xac, 0xf9, 0x70, 0xb1,
-	0x00, 0x1d, 0x21, 0x79, 0xaa, 0xdf, 0x57, 0xb0, 0xb0, 0x23, 0x25, 0x59, 0x2f, 0x2c, 0x42, 0x47,
-	0xe9, 0x64, 0x78, 0x5f, 0xde, 0xc2, 0x8e, 0x9e, 0xe3, 0x95, 0xce, 0x7a, 0xbd, 0x59, 0xc3, 0x5b,
-	0xa5, 0x23, 0xcd, 0x0b, 0x24, 0xf9, 0xcb, 0xa7, 0x92, 0xd8, 0xf2, 0x52, 0x69, 0xf8, 0x58, 0x29,
-	0x17, 0x97, 0x75, 0xed, 0xa4, 0xc7, 0xcd, 0xf1, 0xca, 0x83, 0xae, 0xc3, 0x6d, 0x44, 0x9b, 0x70,
-	0xbc, 0x10, 0x5c, 0x8f, 0xcc, 0x62, 0x53, 0xaa, 0x23, 0x20, 0xd2, 0x6e, 0x8e, 0xb5, 0x35, 0x35,
-	0x3a, 0xf9, 0x93, 0xc9, 0xba, 0x8c, 0x93, 0x24, 0x0b, 0x3d, 0xb8, 0x85, 0x17, 0x98, 0x4f, 0xae,
-	0x23, 0xe0, 0x71, 0x53, 0x19, 0x49, 0xf5, 0xa4, 0xa3, 0xdd, 0x84, 0xdf, 0xcb, 0x90, 0xe8, 0x97,
-	0xe5, 0x34, 0xb4, 0x4d, 0xba, 0x06, 0x77, 0x26, 0xed, 0x64, 0xa7, 0x4a, 0x9e, 0xea, 0x84, 0xca,
-	0x06, 0x4f, 0xd3, 0xf2, 0xa8, 0xf6, 0x13, 0x0b, 0x3c, 0x5d, 0x5a, 0x9c, 0x92, 0x49, 0x99, 0x66,
-	0x31, 0x62, 0xc2, 0x4d, 0xc6, 0x19, 0x73, 0xbc, 0x1d, 0x69, 0xd7, 0x85, 0x8d, 0x9f, 0x29, 0x55,
-	0xc6, 0xb9, 0x82, 0x05, 0x9d, 0xa5, 0x85, 0x7d, 0xd4, 0x2f, 0x0a, 0xc2, 0xd9, 0x73, 0xec, 0x84,
-	0xc1, 0xaf, 0x33, 0xe5, 0x8f, 0x82, 0x9e, 0x33, 0x87, 0x50, 0x82, 0xf2, 0x3b, 0x9f, 0xe7, 0xba,
-	0x00, 0x6c, 0x10, 0xb2, 0x24, 0xe4, 0x6f, 0x5e, 0x17, 0x7f, 0xfb, 0xea, 0xfc, 0x7a, 0x0a, 0x36,
-	0x08, 0x3d, 0xff, 0x91, 0x7d, 0x41, 0xa1, 0xbc, 0x40, 0xba, 0xa9, 0x17, 0x6e, 0xb1, 0x2f, 0xfe,
-	0x09, 0xe3, 0x42, 0x49, 0x4f, 0x93, 0x49, 0x79, 0xb8, 0x0d, 0xf7, 0xe3, 0x45, 0x95, 0x28, 0x96,
-	0x7d, 0x5b, 0x24, 0x6c, 0xed, 0xf8, 0xe2, 0x2a, 0x10, 0x51, 0x74, 0x32, 0x9d, 0x0c, 0xd0, 0x58,
-	0xf6, 0x2f, 0xad, 0x86, 0x11, 0x33, 0xe7, 0x80, 0x59, 0xa1, 0x46, 0xac, 0x5c, 0x35, 0x8c, 0x18,
-	0xb9, 0x39, 0x56, 0x62, 0x95, 0xd0, 0x21, 0xfc, 0xbb, 0xf8, 0x4c, 0xde, 0x15, 0xd2, 0xf1, 0x8a,
-	0xe3, 0xba, 0x36, 0x79, 0x65, 0x3d, 0x05, 0xf7, 0xf7, 0x84, 0x62, 0x3c, 0xd9, 0xc7, 0x6f, 0xd1,
-	0xcb, 0x2e, 0x74, 0x75, 0x3d, 0x05, 0xf7, 0xf6, 0x4c, 0x21, 0x60, 0x17, 0x5f, 0xe1, 0x89, 0xc0,
-	0x6b, 0xeb, 0x29, 0xb8, 0xc1, 0x27, 0x92, 0x60, 0x2a, 0x6f, 0xd6, 0xb3, 0x79, 0xd7, 0xd7, 0x32,
-	0x70, 0x7b, 0x4f, 0xa6, 0x8c, 0x86, 0xb4, 0x8d, 0x7c, 0xa3, 0xb5, 0x79, 0x8c, 0x10, 0xa4, 0x97,
-	0x3f, 0xbe, 0x5a, 0x05, 0xe2, 0x01, 0xd6, 0x39, 0xb6, 0x79, 0x0a, 0xa1, 0x85, 0xc6, 0x98, 0xd3,
-	0x88, 0xdc, 0xaa, 0xbb, 0x3b, 0x4a, 0x25, 0x93, 0x02, 0xe5, 0x8e, 0x39, 0x44, 0xda, 0xf0, 0xd4,
-	0xd4, 0xee, 0xe9, 0x3b, 0xe5, 0x73, 0xcf, 0x7a, 0xf9, 0xfa, 0x2e, 0x11, 0x6d, 0x4b, 0x8f, 0x93,
-	0x69, 0x7e, 0xf7, 0x9c, 0xe1, 0xb1, 0x1e, 0xc5, 0x9d, 0xf1, 0xfc, 0x1a, 0xef, 0xaa, 0xe2, 0xcb,
-	0xbf, 0xa7, 0x96, 0x81, 0xd8, 0x34, 0x59, 0x81, 0x3a, 0xf3, 0xa6, 0x8b, 0x97, 0x75, 0xb2, 0xe5,
-	0xe9, 0xfb, 0x6a, 0x70, 0xf8, 0xc4, 0xcb, 0x38, 0xa9, 0x1d, 0xc0, 0xa9, 0x05, 0xf7, 0x4b, 0x0b,
-	0x04, 0xb4, 0x16, 0xaa, 0x07, 0x04, 0x45, 0x6f, 0x98, 0x14, 0xfc, 0x1e, 0x85, 0xa8, 0x00, 0x4a,
-	0x07, 0xe1, 0x2b, 0x2f, 0x0f, 0x59, 0xbb, 0xfc, 0x30, 0x4a, 0xc7, 0xbd, 0xb5, 0x74, 0x59, 0x75,
-	0xe3, 0xc3, 0x73, 0xf6, 0x09, 0x82, 0x72, 0xd7, 0x1a, 0x86, 0xdf, 0x23, 0x32, 0xaf, 0x8a, 0xbf,
-	0x90, 0x61, 0x70, 0x1e, 0x95, 0x62, 0x51, 0x29, 0xf9, 0x8d, 0xb5, 0xc7, 0xf4, 0x24, 0x88, 0xb2,
-	0xf1, 0xf2, 0x28, 0x1a, 0xae, 0xc9, 0x1b, 0x4c, 0x5a, 0x38, 0x1f, 0xaf, 0xa7, 0xc0, 0x0d, 0x2e,
-	0x95, 0xc7, 0x03, 0x58, 0xf9, 0x3b, 0x4e, 0x70, 0x84, 0xcb, 0x60, 0x55, 0xbe, 0x3a, 0xf5, 0x54,
-	0x2d, 0x03, 0x8e, 0x71, 0xdd, 0x01, 0x15, 0xaf, 0x33, 0x3d, 0x53, 0x47, 0xc0, 0x9b, 0xae, 0x73,
-	0x72, 0xc6, 0xe2, 0x20, 0xa4, 0xdc, 0x19, 0xcf, 0xc9, 0xa8, 0x1b, 0xde, 0x82, 0xce, 0x7c, 0xee,
-	0x56, 0x7e, 0xbe, 0x06, 0x47, 0x60, 0x99, 0x34, 0x04, 0x5d, 0x6c, 0x3a, 0x71, 0x65, 0xec, 0x5f,
-	0x94, 0xe9, 0x68, 0x3e, 0x36, 0x23, 0xd3, 0xe2, 0xa5, 0xb9, 0xb2, 0xfb, 0x77, 0x31, 0xb2, 0xde,
-	0x93, 0x79, 0xb9, 0x9e, 0x02, 0xc7, 0xf8, 0x1c, 0x5b, 0x0e, 0xeb, 0xbd, 0x29, 0xf3, 0xca, 0x24,
-	0x44, 0x38, 0xcc, 0xe7, 0x26, 0x74, 0x23, 0x23, 0x98, 0x4c, 0x76, 0x00, 0xfb, 0xe2, 0xbf, 0xb4,
-	0xf1, 0xf5, 0x7c, 0x7f, 0x4f, 0x97, 0x54, 0xf0, 0x8a, 0x36, 0x4f, 0xde, 0x10, 0x2c, 0xbf, 0x54,
-	0xaf, 0xa7, 0xd4, 0x9b, 0xd2, 0x70, 0xde, 0x4d, 0x0a, 0x77, 0xfa, 0xe1, 0x1a, 0xd7, 0x4b, 0x24,
-	0xad, 0x02, 0xf3, 0x61, 0x3f, 0xd7, 0xc5, 0xdf, 0x9a, 0x73, 0x79, 0x84, 0x8d, 0x7b, 0x69, 0xfc,
-	0x62, 0xf1, 0xdb, 0x5a, 0x99, 0xa3, 0xda, 0x0d, 0x64, 0xb3, 0x37, 0x66, 0xd1, 0x3b, 0xee, 0x75,
-	0x18, 0xae, 0x70, 0x99, 0xf5, 0xf9, 0x67, 0x63, 0x3b, 0x7f, 0xb7, 0x12, 0x85, 0xdb, 0xdb, 0x5c,
-	0xd1, 0xc0, 0x60, 0x03, 0x44, 0x2f, 0xe4, 0xef, 0xd5, 0x32, 0x10, 0xba, 0x26, 0xd2, 0xa9, 0x19,
-	0xf6, 0x13, 0x1b, 0x1f, 0xd4, 0xe0, 0x08, 0x5f, 0x93, 0x91, 0xb3, 0xf1, 0xf9, 0x91, 0x3a, 0xbe,
-	0xfb, 0xa8, 0x1a, 0x46, 0xf8, 0x9a, 0x48, 0xb6, 0x8a, 0x4e, 0xca, 0x17, 0x44, 0xbc, 0x76, 0x63,
-	0xe9, 0xe1, 0x79, 0x0f, 0xe8, 0xe1, 0xfd, 0x54, 0x16, 0x30, 0x23, 0x38, 0xbd, 0xd8, 0xf5, 0x9f,
-	0x89, 0x08, 0x58, 0xe1, 0xbf, 0x56, 0x36, 0x9f, 0x5b, 0x0b, 0xaf, 0xc9, 0xa3, 0x0c, 0xbe, 0xc8,
-	0x8d, 0xa5, 0xb0, 0xb8, 0x64, 0xff, 0xa3, 0x20, 0x5f, 0x0e, 0xca, 0x6e, 0x3b, 0x73, 0x0b, 0x91,
-	0xb9, 0xd1, 0x4c, 0xca, 0x7b, 0xf7, 0x9d, 0xb9, 0x73, 0x75, 0xcc, 0x8b, 0x9d, 0x78, 0x8f, 0x9d,
-	0x8b, 0xc3, 0x57, 0x54, 0xbc, 0xf6, 0xac, 0x65, 0xe0, 0x79, 0xda, 0x9d, 0xc5, 0x22, 0x9f, 0xe0,
-	0x7a, 0xc8, 0xbb, 0x1b, 0x27, 0x24, 0x43, 0xfc, 0x36, 0x8a, 0x37, 0xa4, 0xf2, 0xba, 0xd0, 0x7b,
-	0xf5, 0x14, 0x08, 0x60, 0x7d, 0x91, 0xb6, 0xaf, 0xfc, 0x83, 0x49, 0xc9, 0x10, 0xcd, 0x8d, 0xb8,
-	0xa6, 0xf3, 0x4f, 0x5d, 0xed, 0xf9, 0xe8, 0x9f, 0x4c, 0x03, 0x21, 0xde, 0x28, 0x0e, 0xa6, 0xea,
-	0x4e, 0x83, 0x3c, 0x6f, 0x6c, 0xfd, 0xd2, 0xdb, 0x58, 0xc9, 0x13, 0x85, 0x98, 0xc6, 0x2f, 0x5f,
-	0xde, 0x3e, 0xad, 0x6f, 0xb1, 0xad, 0xc2, 0x7f, 0x36, 0x29, 0x19, 0xe1, 0x9a, 0x1b, 0x59, 0x8f,
-	0xab, 0xbe, 0xa1, 0x42, 0x15, 0xf8, 0x47, 0x7d, 0xeb, 0xf4, 0x42, 0xb1, 0xdb, 0x26, 0x71, 0x67,
-	0xad, 0x77, 0x83, 0x66, 0xf7, 0x4d, 0xb5, 0x39, 0xc2, 0x35, 0x07, 0x27, 0xca, 0x04, 0x3c, 0x78,
-	0x54, 0x36, 0x89, 0xa9, 0x3f, 0xe4, 0x1f, 0xbc, 0xb1, 0xce, 0x60, 0x0e, 0xd4, 0x15, 0xcb, 0x61,
-	0xa5, 0xf8, 0xa3, 0x46, 0x06, 0xf3, 0xa0, 0x4d, 0xe2, 0x3e, 0x2b, 0x44, 0x62, 0x2a, 0x1b, 0x30,
-	0xf7, 0xc1, 0x1e, 0x3c, 0x09, 0x11, 0xc1, 0x87, 0x9b, 0x5a, 0xbf, 0xf0, 0x7e, 0x9a, 0xae, 0x1b,
-	0x5f, 0x6f, 0x54, 0xe2, 0xd0, 0x4d, 0x08, 0x07, 0x9d, 0x3c, 0x24, 0xff, 0xb0, 0x7f, 0x26, 0x01,
-	0x1e, 0x48, 0x96, 0xfe, 0x92, 0xa0, 0x50, 0xda, 0x50, 0x55, 0x9c, 0x0a, 0x3c, 0x39, 0xd5, 0x30,
-	0x9e, 0x49, 0x76, 0xc1, 0x2a, 0x82, 0x05, 0x0e, 0x9d, 0x6a, 0x18, 0x8f, 0x25, 0x57, 0xc3, 0x78,
-	0x32, 0x69, 0x93, 0x2c, 0x67, 0x06, 0x6c, 0xc5, 0xa7, 0x1f, 0x53, 0xcb, 0x40, 0x88, 0x61, 0x2d,
-	0x83, 0x4a, 0x39, 0xae, 0xba, 0x85, 0x04, 0x9f, 0xb0, 0x89, 0x1d, 0x8d, 0x26, 0xac, 0x8c, 0xf9,
-	0x51, 0x3f, 0xce, 0x0a, 0xd1, 0xe9, 0x27, 0x4e, 0xcc, 0x46, 0x3c, 0xa2, 0x08, 0xa3, 0xc9, 0xce,
-	0x79, 0x86, 0x1c, 0x9c, 0x5c, 0x6c, 0x46, 0xe9, 0x97, 0x99, 0x4e, 0xa9, 0x65, 0xe0, 0x98, 0xa1,
-	0x96, 0x41, 0xa5, 0x6c, 0xdb, 0x24, 0x07, 0x44, 0xa5, 0xce, 0xd2, 0x41, 0xc4, 0xa7, 0xae, 0xc3,
-	0x41, 0xac, 0xe2, 0xa6, 0xff, 0xff, 0x65, 0xfc, 0x46, 0xfa, 0x2f, 0xff, 0x33, 0x00, 0x00, 0xff,
-	0xff, 0x9f, 0xf7, 0xa5, 0x59, 0x4f, 0x7d, 0x00, 0x00,
+	// 8777 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x7d, 0x57, 0x97, 0x23, 0xc7,
+	0xb1, 0xe6, 0xae, 0x76, 0x57, 0xd3, 0x28, 0x00, 0x52, 0x13, 0x22, 0xd5, 0x4d, 0x49, 0x94, 0x97,
+	0x7a, 0x56, 0x2b, 0xcd, 0x50, 0xab, 0xfd, 0x03, 0x05, 0xa0, 0xba, 0xbb, 0x76, 0x00, 0x14, 0xba,
+	0xaa, 0xd0, 0x3d, 0xfd, 0x84, 0xb3, 0x7b, 0xc4, 0xab, 0xa7, 0x7b, 0xa8, 0x43, 0xea, 0xdc, 0x67,
+	0x7a, 0x23, 0x7a, 0x3b, 0xf4, 0xa4, 0x86, 0xde, 0x89, 0xa4, 0xe8, 0xbd, 0xf7, 0xde, 0x7b, 0x4f,
+	0x8a, 0x56, 0x24, 0x45, 0xd1, 0x3b, 0xdd, 0x13, 0x5f, 0x46, 0x64, 0x65, 0x56, 0x65, 0x55, 0x43,
+	0x6f, 0xdd, 0xf5, 0x7d, 0xe9, 0x23, 0x23, 0x33, 0x22, 0x23, 0x13, 0xde, 0xf4, 0xbf, 0xef, 0xb4,
+	0xeb, 0xae, 0xff, 0xef, 0x77, 0x3b, 0xfd, 0x76, 0xa7, 0x7f, 0xdb, 0xf0, 0xfb, 0x5d, 0x76, 0xfe,
+	0xc3, 0xce, 0xad, 0xfa, 0xae, 0x3b, 0xed, 0xf2, 0x1f, 0x3b, 0xed, 0x82, 0x7f, 0x7e, 0x71, 0xf2,
+	0x9e, 0x5f, 0xf3, 0x3c, 0xfc, 0xd9, 0xdf, 0xf5, 0x77, 0xe1, 0x6f, 0x5b, 0x4d, 0xaf, 0xd6, 0x4f,
+	0x16, 0xc6, 0xed, 0x60, 0x21, 0x1c, 0x4c, 0xff, 0x97, 0xd6, 0xac, 0xb7, 0x6d, 0x12, 0xc4, 0xcb,
+	0x61, 0x27, 0x18, 0x87, 0xdd, 0x60, 0x90, 0x86, 0xf3, 0xab, 0x63, 0xbf, 0xb3, 0x69, 0xfa, 0xbf,
+	0xb6, 0xb6, 0xf3, 0xb6, 0x59, 0xf0, 0xd3, 0x60, 0x9c, 0xc6, 0xfe, 0x20, 0xe9, 0x87, 0x29, 0x3e,
+	0x7f, 0xcd, 0x4c, 0x60, 0x21, 0xff, 0x8d, 0x12, 0x74, 0x7a, 0x61, 0x30, 0x48, 0xc7, 0x9d, 0x5e,
+	0x94, 0x04, 0x5d, 0x7c, 0xfe, 0xef, 0xad, 0x6d, 0xbd, 0xe9, 0x24, 0x19, 0x8f, 0x92, 0x20, 0x1e,
+	0x6f, 0x0a, 0x3b, 0x9b, 0xc6, 0x83, 0x74, 0x7e, 0xfa, 0x7f, 0xb4, 0xa6, 0xbd, 0x46, 0x92, 0x8c,
+	0x7b, 0xd1, 0x42, 0x38, 0xc0, 0x97, 0xaf, 0xb7, 0x76, 0xf0, 0xb6, 0x4f, 0x92, 0x71, 0xe2, 0x2f,
+	0x07, 0x8a, 0xdc, 0x89, 0x06, 0x83, 0xa0, 0x93, 0x8e, 0xc3, 0xc1, 0x7c, 0x34, 0xbd, 0xae, 0xb5,
+	0xbd, 0xb7, 0x1d, 0xc1, 0xab, 0x49, 0x1a, 0xf4, 0xc7, 0xfd, 0x20, 0x49, 0xfc, 0x85, 0x00, 0x29,
+	0xa7, 0xb8, 0x84, 0x38, 0x90, 0x14, 0x71, 0xb0, 0x34, 0x5d, 0x2b, 0x7c, 0xa5, 0xda, 0x78, 0xad,
+	0x1f, 0x79, 0x3b, 0x24, 0xc9, 0x78, 0x21, 0x48, 0xc7, 0xcb, 0x61, 0xb0, 0x12, 0x74, 0xc7, 0xa9,
+	0x1f, 0xd3, 0x7f, 0x54, 0x0a, 0x12, 0xd6, 0xab, 0x29, 0x94, 0x4b, 0xa3, 0xf5, 0x03, 0xef, 0xbb,
+	0x4c, 0x49, 0xa2, 0x4e, 0xe8, 0xf7, 0xc6, 0xe1, 0x20, 0x4c, 0xc7, 0x5d, 0x3f, 0xf5, 0x91, 0x47,
+	0xb3, 0x8a, 0x40, 0x39, 0x7c, 0xa3, 0xd5, 0xf0, 0xa6, 0x86, 0xe1, 0x60, 0x01, 0xf4, 0x6f, 0x1a,
+	0x45, 0x52, 0xdf, 0xa2, 0xf1, 0xfd, 0x61, 0x90, 0x86, 0x69, 0x18, 0x0d, 0x40, 0x99, 0xae, 0xa6,
+	0x50, 0x9e, 0xdb, 0xb4, 0xe6, 0xbc, 0x9f, 0x50, 0x17, 0x15, 0x61, 0xd4, 0x1c, 0x3d, 0x4b, 0x1d,
+	0xd6, 0xe2, 0xda, 0x69, 0xe2, 0x60, 0x3e, 0xa4, 0x8a, 0xf4, 0x22, 0xbf, 0x0b, 0xc2, 0xb7, 0x40,
+	0xc8, 0x0f, 0x72, 0x1c, 0x8d, 0xd2, 0x20, 0x06, 0x61, 0x5b, 0x1e, 0x2c, 0xaa, 0xcd, 0x82, 0xe4,
+	0x93, 0xa4, 0x24, 0x2d, 0x54, 0xd9, 0xed, 0xca, 0x61, 0xaa, 0xe8, 0xb7, 0x5b, 0xd3, 0x5e, 0xbd,
+	0x93, 0x8c, 0x75, 0xfb, 0x5f, 0x5f, 0x47, 0x5f, 0x92, 0x8e, 0xfa, 0x42, 0x94, 0x37, 0xd6, 0xb5,
+	0xb6, 0xf1, 0x1a, 0x1d, 0x11, 0x10, 0x22, 0xbd, 0x89, 0x4f, 0x49, 0x87, 0x3f, 0x11, 0xeb, 0xad,
+	0x75, 0xad, 0xed, 0xbc, 0xe9, 0x4e, 0x7e, 0xe8, 0xdf, 0xc6, 0xe7, 0xa4, 0x93, 0x1b, 0xfb, 0xbf,
+	0xad, 0x6b, 0x7d, 0xdb, 0xdb, 0x26, 0xe9, 0x8c, 0x17, 0xfd, 0x41, 0x77, 0x9c, 0x2c, 0xfa, 0x9b,
+	0x54, 0x77, 0xbc, 0xb3, 0xae, 0x35, 0xe3, 0xb5, 0x3a, 0xc9, 0xb8, 0x13, 0x07, 0x68, 0x41, 0xd4,
+	0x53, 0xcd, 0x78, 0x17, 0x40, 0xd2, 0xb1, 0x00, 0xca, 0xe9, 0xbd, 0x75, 0xdc, 0x82, 0x81, 0xdf,
+	0x57, 0xd4, 0xbf, 0x4b, 0x0b, 0xf0, 0x85, 0x38, 0xef, 0xaf, 0x6b, 0xcd, 0x7a, 0xdf, 0x4a, 0x3a,
+	0xd4, 0xee, 0x38, 0x1d, 0x0d, 0xd5, 0x18, 0x50, 0x79, 0xff, 0x58, 0xd7, 0xfa, 0x9e, 0x37, 0x93,
+	0x47, 0x86, 0x41, 0x0a, 0xf4, 0x83, 0x75, 0xad, 0xef, 0x7b, 0xdb, 0xe7, 0xd1, 0x60, 0x69, 0x14,
+	0x0e, 0x81, 0x7f, 0xb8, 0xae, 0xb5, 0x83, 0x37, 0x9b, 0xc7, 0x3b, 0x7e, 0xac, 0x86, 0xee, 0x23,
+	0x67, 0xe6, 0xc1, 0x40, 0xa1, 0x1f, 0xaf, 0x6b, 0x7d, 0xd7, 0xfb, 0x76, 0xc7, 0x12, 0xa3, 0x34,
+	0xe4, 0x36, 0x7c, 0x02, 0x30, 0xe9, 0x14, 0x40, 0x6a, 0xce, 0xa7, 0xeb, 0x5a, 0x2d, 0xaf, 0xa9,
+	0x7a, 0x3f, 0x1a, 0xa9, 0xaa, 0x7e, 0xb6, 0xae, 0xb5, 0xad, 0xf7, 0xcd, 0xa4, 0xa3, 0xa6, 0xb5,
+	0x7c, 0xfd, 0x7c, 0x5d, 0xeb, 0x3b, 0xde, 0x76, 0x9d, 0x64, 0xec, 0x77, 0xbb, 0x63, 0x3f, 0x4d,
+	0xe3, 0xf1, 0x30, 0x0a, 0x07, 0x6a, 0x64, 0xbe, 0x00, 0x96, 0x74, 0xf2, 0x18, 0x95, 0xf0, 0x25,
+	0x6a, 0x8e, 0xc1, 0x4c, 0x82, 0x34, 0x9f, 0xf2, 0x2b, 0x69, 0x57, 0x01, 0xa5, 0xb4, 0xff, 0x94,
+	0x4e, 0x9b, 0x0f, 0x17, 0x16, 0xd3, 0xf1, 0x30, 0x5a, 0x21, 0xb9, 0x5e, 0xf4, 0x17, 0x06, 0x6a,
+	0x88, 0x77, 0x9b, 0xe2, 0x21, 0xf6, 0x3b, 0x69, 0xb8, 0x1c, 0x8c, 0x17, 0x03, 0xbf, 0x8b, 0x6c,
+	0x77, 0x9f, 0xe2, 0x21, 0x36, 0x01, 0xca, 0x71, 0x8f, 0x29, 0x16, 0x2d, 0x7c, 0xd1, 0xca, 0x61,
+	0xcf, 0x29, 0x16, 0xad, 0xec, 0x33, 0xb1, 0xf7, 0x92, 0xfc, 0xa9, 0x6e, 0x0a, 0x52, 0xf9, 0xef,
+	0x2d, 0xf9, 0x9b, 0x00, 0xa5, 0xd8, 0x67, 0x8a, 0xfa, 0x13, 0xad, 0xd5, 0x42, 0xb4, 0xef, 0x14,
+	0xf7, 0x31, 0x7f, 0x23, 0xde, 0x7e, 0x53, 0x34, 0xdc, 0x24, 0x9c, 0x8b, 0xfe, 0x60, 0x81, 0x2b,
+	0x38, 0x1f, 0x4b, 0x92, 0xfd, 0xa7, 0x58, 0x1a, 0x8a, 0x30, 0xa5, 0xfe, 0xe3, 0x14, 0x8f, 0xb7,
+	0xf1, 0x5d, 0xb7, 0xe5, 0x80, 0x29, 0x1e, 0xef, 0x3c, 0x48, 0x29, 0x0f, 0x94, 0x8c, 0x0d, 0x90,
+	0xcb, 0xa0, 0x0e, 0x3d, 0x68, 0xaa, 0xf5, 0x03, 0xef, 0x3b, 0x1d, 0xa8, 0x75, 0x2b, 0x3d, 0x29,
+	0x67, 0xca, 0xfc, 0x60, 0x10, 0x92, 0x8e, 0x93, 0x40, 0x05, 0x1c, 0x32, 0xd5, 0xda, 0xde, 0xdb,
+	0x16, 0x55, 0x8b, 0xa3, 0x71, 0x2f, 0x58, 0x0e, 0x7a, 0xe3, 0xd1, 0x10, 0x69, 0x0f, 0x05, 0x84,
+	0xb2, 0x4d, 0x88, 0x52, 0x1d, 0x36, 0x45, 0xb3, 0x4a, 0x52, 0xf9, 0xdd, 0x65, 0x7f, 0xd0, 0x51,
+	0x3d, 0x71, 0xf8, 0x14, 0xcf, 0x37, 0x0b, 0xa1, 0x34, 0x47, 0xc8, 0xe0, 0x00, 0x69, 0xfb, 0x69,
+	0xca, 0xf3, 0xfb, 0x48, 0x19, 0x1c, 0x13, 0xa0, 0x14, 0x47, 0x49, 0x05, 0xda, 0x7e, 0x12, 0x64,
+	0x15, 0xa0, 0x86, 0x1f, 0x2d, 0xc5, 0xfc, 0xdf, 0xa8, 0x6d, 0x23, 0x5b, 0xa6, 0x58, 0xb6, 0xa1,
+	0x26, 0x90, 0x52, 0x4f, 0xf9, 0x63, 0x2c, 0x0c, 0xc5, 0x69, 0xec, 0x58, 0xe9, 0x4a, 0x7c, 0xee,
+	0x2c, 0x86, 0xc3, 0x71, 0x37, 0x20, 0xe5, 0x1d, 0x25, 0xaa, 0x9a, 0xc7, 0x49, 0x57, 0xba, 0x08,
+	0x54, 0xdd, 0xe3, 0xad, 0xae, 0x4c, 0xd2, 0x38, 0x18, 0x2c, 0xa4, 0x8b, 0x48, 0x7b, 0x82, 0xd5,
+	0x95, 0x1a, 0xa2, 0x54, 0x27, 0x66, 0xb2, 0x81, 0x6c, 0x31, 0xb6, 0xd4, 0x2a, 0x4a, 0x77, 0x52,
+	0x26, 0x1b, 0x36, 0x48, 0x29, 0x4f, 0x9e, 0xe2, 0xd9, 0xa6, 0xc0, 0x68, 0xd0, 0x0d, 0xd3, 0x70,
+	0xa0, 0x16, 0x37, 0x6a, 0xd1, 0x29, 0x56, 0xce, 0x34, 0x25, 0x79, 0x46, 0x52, 0xce, 0x7f, 0xb2,
+	0x72, 0x36, 0x40, 0xca, 0x79, 0xeb, 0x54, 0xeb, 0xc7, 0xde, 0x0e, 0x92, 0x52, 0x4d, 0xf5, 0x64,
+	0x53, 0xd8, 0xeb, 0x19, 0x9a, 0xe0, 0x54, 0x70, 0x24, 0x83, 0x22, 0x87, 0xf2, 0x39, 0xcd, 0x1a,
+	0x72, 0x9e, 0xdb, 0x94, 0xf8, 0x74, 0x6b, 0xc8, 0x19, 0xa0, 0x14, 0x67, 0x48, 0x0a, 0xa5, 0x69,
+	0xe7, 0xa3, 0x78, 0x41, 0xa5, 0x38, 0x53, 0x52, 0x98, 0x00, 0xa5, 0x38, 0x4b, 0x24, 0x41, 0x01,
+	0xc6, 0xe4, 0x38, 0x9b, 0x76, 0x24, 0xdf, 0xd4, 0x79, 0xb1, 0x54, 0x9f, 0x33, 0xc5, 0xda, 0x52,
+	0x7f, 0xa5, 0x5c, 0xce, 0x15, 0x85, 0x92, 0xf4, 0xa2, 0x34, 0xeb, 0xc2, 0xf3, 0xa6, 0x68, 0xad,
+	0xd2, 0x59, 0x74, 0xa3, 0x15, 0xb5, 0x08, 0x9e, 0x8f, 0xae, 0xd7, 0xdf, 0xb3, 0xb9, 0xd1, 0xeb,
+	0x01, 0xff, 0xb3, 0x0c, 0x8d, 0x03, 0xa7, 0xe2, 0x2e, 0x10, 0x61, 0x53, 0x38, 0x0a, 0xb5, 0xe6,
+	0xde, 0x85, 0x22, 0x6c, 0x2e, 0x02, 0xe5, 0x70, 0x91, 0xd4, 0x0c, 0x4b, 0x4e, 0x3f, 0x1a, 0xf1,
+	0xb0, 0xfc, 0x65, 0x8a, 0x57, 0x57, 0xe3, 0x3b, 0xf1, 0x2f, 0x16, 0x45, 0x8a, 0xef, 0xba, 0x21,
+	0x97, 0x48, 0xbb, 0xb3, 0xcf, 0xc4, 0xbe, 0x54, 0xe6, 0x37, 0x3e, 0x9b, 0xb3, 0xe0, 0x32, 0xe9,
+	0x6e, 0x0b, 0xa1, 0x34, 0x97, 0x4f, 0xf1, 0x82, 0xa3, 0xb2, 0xb2, 0xe6, 0xce, 0x15, 0x32, 0xf1,
+	0x72, 0x18, 0xa5, 0xbb, 0x52, 0x46, 0x56, 0xe5, 0x98, 0x8d, 0xdf, 0x55, 0x53, 0xbc, 0xd6, 0x00,
+	0x40, 0x17, 0x18, 0xe8, 0xd5, 0x92, 0x0c, 0xaa, 0xcc, 0x00, 0xae, 0x91, 0x61, 0x27, 0x95, 0xa7,
+	0x15, 0xe1, 0xb5, 0x32, 0xec, 0xfa, 0x2b, 0x95, 0x7d, 0x9d, 0x70, 0xbb, 0x41, 0x2f, 0xe3, 0x5e,
+	0x2f, 0x5c, 0xfd, 0x95, 0xb8, 0x37, 0xe8, 0x3e, 0xa1, 0xa9, 0x6f, 0xb6, 0xee, 0x46, 0xdd, 0x27,
+	0x26, 0x42, 0x69, 0x6e, 0xd2, 0x6d, 0x5b, 0xb4, 0x65, 0xf3, 0x66, 0xd1, 0x15, 0x68, 0xdb, 0x68,
+	0x38, 0x5e, 0x88, 0xfd, 0xae, 0xca, 0xed, 0x16, 0xd1, 0x15, 0x36, 0x44, 0xd9, 0xdd, 0x6a, 0x75,
+	0xb1, 0x12, 0x0d, 0x11, 0xb9, 0xdb, 0xac, 0x2e, 0xce, 0x30, 0x4a, 0x77, 0xbb, 0x68, 0x02, 0x03,
+	0xd3, 0x22, 0x70, 0x87, 0x68, 0x82, 0x3c, 0x48, 0x29, 0xef, 0xd4, 0xeb, 0x9e, 0x5d, 0x19, 0x2e,
+	0xf4, 0x2e, 0xbd, 0xee, 0x15, 0x60, 0x4a, 0x7d, 0xb7, 0x95, 0xba, 0x13, 0xf5, 0x7a, 0x62, 0x48,
+	0x20, 0xf5, 0x3d, 0x56, 0x6a, 0x0b, 0xa6, 0xd4, 0xf7, 0xca, 0x24, 0xb1, 0xe0, 0x38, 0x58, 0xa1,
+	0x7f, 0x29, 0xfd, 0x7d, 0x32, 0x49, 0x5c, 0x04, 0xca, 0xe1, 0x7e, 0x27, 0xc1, 0x18, 0x86, 0x07,
+	0xa6, 0x5a, 0x3f, 0xf4, 0xbe, 0x9b, 0x2b, 0x02, 0x7b, 0x7d, 0x7f, 0xb0, 0x09, 0x65, 0x3c, 0x08,
+	0x46, 0x2e, 0x0b, 0xcd, 0xa0, 0x42, 0x1e, 0x92, 0xfe, 0x53, 0xda, 0xcf, 0x56, 0x20, 0x0f, 0xcb,
+	0xa8, 0x90, 0xd2, 0x56, 0x04, 0x8d, 0x3d, 0x22, 0xed, 0x33, 0x12, 0x5a, 0x4a, 0xe0, 0x51, 0xa9,
+	0xbe, 0x8b, 0x40, 0x45, 0x3f, 0x26, 0x52, 0x14, 0x07, 0xc3, 0x9e, 0xdf, 0x09, 0x98, 0x48, 0x69,
+	0x1f, 0x17, 0x29, 0xb2, 0x21, 0x4a, 0xf5, 0x84, 0x08, 0x32, 0xeb, 0xdd, 0x2c, 0xd1, 0x93, 0x22,
+	0xc8, 0x16, 0x42, 0x69, 0x9e, 0x12, 0x75, 0x93, 0xac, 0xf8, 0x43, 0x23, 0xc5, 0xd3, 0xa2, 0x6e,
+	0x8c, 0xef, 0xc4, 0x7f, 0x46, 0x24, 0x35, 0x5b, 0x16, 0x7a, 0x61, 0xa2, 0x54, 0xd4, 0xb3, 0xd2,
+	0x27, 0x39, 0x8c, 0xd2, 0x3d, 0xa7, 0xd3, 0xa9, 0xef, 0x66, 0x77, 0x3c, 0xaf, 0xd3, 0xd9, 0x18,
+	0xa5, 0x7b, 0x41, 0x24, 0xcd, 0x5c, 0x88, 0x14, 0x83, 0x92, 0xbe, 0x28, 0x92, 0x56, 0x84, 0x29,
+	0xf5, 0x4b, 0x02, 0x4b, 0xc3, 0x88, 0xd4, 0x81, 0xee, 0xa4, 0x81, 0x7a, 0x59, 0xba, 0x65, 0xde,
+	0x4f, 0x16, 0x69, 0xec, 0xf5, 0x10, 0xbe, 0x22, 0xdd, 0x22, 0x08, 0x57, 0xf5, 0x55, 0xe9, 0x16,
+	0xe3, 0x3b, 0x15, 0xf4, 0x57, 0xe9, 0x7a, 0x9d, 0x93, 0xcc, 0xc2, 0xd7, 0x0a, 0x65, 0xc8, 0x14,
+	0x7c, 0x5d, 0x26, 0xaf, 0x20, 0xa6, 0xea, 0x79, 0x43, 0x84, 0x2f, 0x0f, 0x52, 0xca, 0x37, 0xa7,
+	0x5a, 0x3f, 0xf1, 0xbe, 0x6f, 0xa4, 0x1c, 0xfa, 0xc3, 0x20, 0xce, 0xa9, 0xe6, 0xb7, 0xa6, 0x5a,
+	0xeb, 0xbd, 0x9f, 0xb0, 0x2d, 0x12, 0xa5, 0x8b, 0x41, 0x3c, 0x1e, 0xf6, 0xfc, 0x55, 0xf0, 0x52,
+	0x3f, 0xec, 0x65, 0xd3, 0xf5, 0x63, 0x30, 0xd9, 0x30, 0x29, 0x65, 0x52, 0xc1, 0x9f, 0x4c, 0xb5,
+	0xe6, 0xbc, 0x1f, 0xbb, 0xf2, 0x6c, 0xc7, 0x61, 0x30, 0x9f, 0x65, 0xf9, 0x29, 0x88, 0xae, 0x2c,
+	0x0d, 0x22, 0xe5, 0xf8, 0x99, 0x34, 0x85, 0xe1, 0xce, 0xa2, 0xdf, 0xeb, 0x05, 0x34, 0x8d, 0x93,
+	0x51, 0xbf, 0xcf, 0xc6, 0xf9, 0x57, 0x20, 0x91, 0xfd, 0x5a, 0x42, 0x82, 0x8d, 0xb2, 0x16, 0x09,
+	0x86, 0x4a, 0x8d, 0xa7, 0x66, 0x81, 0xb4, 0xa8, 0x06, 0x78, 0xf7, 0x1a, 0x4f, 0x4d, 0x17, 0x81,
+	0x72, 0xd8, 0xa3, 0xc6, 0x5b, 0x28, 0x26, 0xf4, 0x02, 0x32, 0xfb, 0x33, 0x1a, 0xac, 0x98, 0x1a,
+	0x6f, 0xa1, 0x4a, 0x38, 0x94, 0xcf, 0x5e, 0xb5, 0xb2, 0xea, 0xc6, 0x41, 0x32, 0xea, 0x29, 0x01,
+	0xdd, 0x3b, 0x57, 0xd8, 0x4a, 0x14, 0xf7, 0xba, 0xe3, 0x76, 0x94, 0x24, 0xd9, 0xac, 0xdb, 0x27,
+	0x57, 0x58, 0x9e, 0x43, 0x7d, 0xb3, 0x6f, 0x39, 0x27, 0xf6, 0xd9, 0x76, 0xdd, 0xaf, 0xc6, 0x12,
+	0x87, 0x3d, 0x74, 0xdf, 0xb7, 0x96, 0xb5, 0xfd, 0x6b, 0x7a, 0x8d, 0xf4, 0x53, 0xed, 0x1d, 0xa2,
+	0xe2, 0xff, 0x58, 0xd3, 0x6b, 0xa4, 0x81, 0x50, 0xa1, 0x07, 0x38, 0x11, 0xca, 0xed, 0xc0, 0x5a,
+	0x66, 0x74, 0xa5, 0x52, 0xa7, 0xcc, 0xbd, 0x71, 0x50, 0x2d, 0x33, 0xba, 0x72, 0x30, 0xe5, 0x7b,
+	0x70, 0x8d, 0x0d, 0x59, 0xc0, 0xd1, 0xfc, 0x7c, 0x2f, 0x1c, 0x04, 0xe3, 0x7e, 0xa2, 0x7c, 0x1d,
+	0x87, 0xd4, 0x64, 0x73, 0x91, 0x47, 0x29, 0xed, 0xa1, 0x32, 0xbc, 0x16, 0xca, 0x45, 0x50, 0xd5,
+	0x0e, 0xab, 0x89, 0x2e, 0x2a, 0x3a, 0xc2, 0x0e, 0xaf, 0xb1, 0x56, 0x66, 0x7e, 0x38, 0xe8, 0x44,
+	0x6c, 0x27, 0x1e, 0x51, 0x63, 0xad, 0x6c, 0x43, 0x54, 0xe4, 0x91, 0x35, 0xde, 0x52, 0xca, 0x04,
+	0x40, 0xaf, 0x67, 0x8b, 0xdd, 0x51, 0x35, 0xde, 0x52, 0x3a, 0x70, 0x4a, 0x7f, 0x74, 0xad, 0xf5,
+	0x4b, 0x6f, 0xce, 0xc0, 0xc5, 0xc0, 0xea, 0x44, 0xd8, 0x72, 0x61, 0x86, 0x6a, 0xdf, 0xd3, 0x16,
+	0xb0, 0x8d, 0xd2, 0x4a, 0xd9, 0x54, 0xf6, 0x31, 0x13, 0xe7, 0x4d, 0x35, 0x39, 0xb6, 0xc6, 0xb3,
+	0xbf, 0x8a, 0x0d, 0x8b, 0xaa, 0xc6, 0xb3, 0xbf, 0x8a, 0x08, 0xcb, 0xaa, 0xc6, 0xcb, 0xb4, 0x93,
+	0x08, 0x03, 0xab, 0xc6, 0xcb, 0xb4, 0x93, 0x01, 0x3b, 0xab, 0xd6, 0xfa, 0x99, 0xf7, 0xc3, 0x02,
+	0x03, 0xaa, 0xdc, 0x90, 0xe0, 0x93, 0x44, 0x82, 0x49, 0x23, 0x91, 0x74, 0xeb, 0x9d, 0xc0, 0xc9,
+	0x22, 0xa7, 0x16, 0x42, 0x59, 0x9f, 0x22, 0x03, 0xae, 0x4b, 0xc5, 0xcc, 0x84, 0x99, 0x55, 0xd3,
+	0x26, 0xac, 0x09, 0xc1, 0xc8, 0x12, 0x1d, 0xb3, 0x34, 0x0a, 0x3b, 0x9b, 0x84, 0x60, 0x08, 0xcb,
+	0xa9, 0x22, 0x84, 0x2e, 0x02, 0xcc, 0x2b, 0x99, 0x1f, 0x0c, 0x41, 0x24, 0x94, 0xeb, 0x05, 0x46,
+	0x96, 0xcc, 0x8f, 0x22, 0x0c, 0x53, 0x4b, 0x5a, 0x1a, 0x2c, 0x63, 0x3c, 0xe6, 0xe3, 0x20, 0x51,
+	0xd6, 0xea, 0x99, 0xd2, 0x52, 0x0b, 0x81, 0xb1, 0x55, 0x13, 0x2b, 0x8c, 0x10, 0xd3, 0xd6, 0xaa,
+	0xf1, 0xba, 0x2d, 0x80, 0xa1, 0xe6, 0xce, 0x91, 0xb9, 0x92, 0xc3, 0x60, 0x77, 0xd5, 0x0c, 0x4f,
+	0x58, 0xea, 0x27, 0x9b, 0x4c, 0x91, 0x3f, 0xaf, 0x66, 0x78, 0xc2, 0x4c, 0x90, 0x52, 0x9e, 0x2f,
+	0x55, 0x01, 0x60, 0x54, 0xe5, 0xcf, 0xb5, 0xd6, 0x8f, 0xbc, 0xef, 0x99, 0x59, 0x26, 0x9d, 0x28,
+	0x0e, 0xcc, 0x8c, 0x2f, 0x00, 0xc5, 0xcc, 0xd8, 0xa2, 0x50, 0xf6, 0x17, 0xd6, 0xd8, 0xcd, 0xe9,
+	0xc7, 0xc1, 0x40, 0x2d, 0xf6, 0x17, 0x49, 0xb7, 0xa8, 0x4f, 0x46, 0x91, 0x7f, 0xa9, 0xb1, 0x9b,
+	0x54, 0x21, 0x54, 0xc4, 0xc5, 0x35, 0x71, 0x75, 0xe1, 0x53, 0xdf, 0x4f, 0x3b, 0xaa, 0x73, 0x2f,
+	0x91, 0x7a, 0x9b, 0x00, 0x6c, 0x2e, 0x19, 0x0f, 0xc9, 0x44, 0x0b, 0xd1, 0x65, 0x76, 0xc1, 0x86,
+	0x0c, 0x5d, 0x2e, 0xdd, 0xa7, 0x90, 0xf6, 0x68, 0x95, 0xb7, 0x2d, 0x30, 0xba, 0xa4, 0xfb, 0xf2,
+	0x20, 0xac, 0x2e, 0x3b, 0x25, 0x64, 0x59, 0xaf, 0x15, 0x57, 0xd9, 0x29, 0x33, 0x90, 0x52, 0x5e,
+	0x2d, 0x43, 0xad, 0x40, 0x6c, 0x15, 0xc3, 0x74, 0x15, 0x09, 0xaf, 0x91, 0xa1, 0xce, 0x61, 0x94,
+	0xee, 0xda, 0x1a, 0x5b, 0xa0, 0x7d, 0x9a, 0xd6, 0xba, 0xac, 0x1b, 0x6a, 0x6c, 0x81, 0x66, 0x9f,
+	0x89, 0x7d, 0xa3, 0xc5, 0x8e, 0xc5, 0x51, 0x78, 0x93, 0xc5, 0x8e, 0xc5, 0x4d, 0x78, 0xb3, 0xf4,
+	0x36, 0x7f, 0xd6, 0x23, 0x7d, 0x8b, 0xf4, 0xb6, 0x09, 0xc0, 0x94, 0x92, 0x39, 0x0b, 0xa0, 0x1b,
+	0x18, 0x65, 0xdc, 0x26, 0x73, 0xd6, 0x86, 0x60, 0x48, 0x59, 0xd9, 0x19, 0x12, 0x70, 0x87, 0x54,
+	0x20, 0x7f, 0x60, 0x70, 0xa7, 0xa4, 0x30, 0x01, 0x4a, 0x71, 0x97, 0x0b, 0x80, 0xd1, 0xa4, 0x57,
+	0x3d, 0x03, 0x10, 0xf9, 0x5c, 0x9a, 0xbe, 0x47, 0xaf, 0x7a, 0x05, 0x18, 0x46, 0x93, 0xb4, 0x2b,
+	0x59, 0x8c, 0x86, 0x18, 0x73, 0x6d, 0xd6, 0xde, 0x27, 0xed, 0xb2, 0x21, 0x18, 0x4a, 0xd2, 0xdb,
+	0x80, 0xf4, 0xf6, 0xec, 0x01, 0xe9, 0xed, 0xec, 0x33, 0xb1, 0x1f, 0x14, 0x49, 0xc5, 0x67, 0x53,
+	0x73, 0x3c, 0x24, 0x92, 0x6a, 0x21, 0x94, 0xe6, 0xe1, 0x1a, 0x3b, 0x5a, 0xe7, 0xe3, 0x30, 0x18,
+	0xa8, 0x8e, 0x7e, 0xa4, 0xc6, 0x8e, 0x56, 0xfe, 0x46, 0xbc, 0x47, 0x6b, 0xb2, 0xa3, 0xe6, 0x6f,
+	0x5d, 0xc5, 0x7d, 0xac, 0x26, 0x3b, 0xea, 0xec, 0x3b, 0xf1, 0x1f, 0x77, 0x7c, 0xa7, 0xee, 0x7d,
+	0x22, 0x97, 0x4f, 0x97, 0x2d, 0x81, 0x27, 0x73, 0xfc, 0x2e, 0x9b, 0x00, 0x4f, 0x39, 0xbe, 0x53,
+	0x3e, 0x4f, 0x4b, 0x5b, 0xf9, 0x7b, 0xbb, 0xe7, 0x77, 0xd4, 0x7a, 0xf0, 0x8c, 0xb4, 0xd5, 0x42,
+	0x28, 0xaf, 0x67, 0x65, 0xe7, 0xa1, 0xdb, 0xda, 0x89, 0xfa, 0x7d, 0x69, 0xf5, 0x73, 0xb2, 0xf3,
+	0x28, 0xa0, 0x94, 0xf6, 0xf9, 0x52, 0x94, 0x6a, 0xf3, 0x82, 0x8c, 0x2e, 0xa3, 0x49, 0xe0, 0xc7,
+	0xac, 0x57, 0x5e, 0x94, 0xd1, 0xb5, 0x21, 0x98, 0x37, 0x35, 0xf6, 0x67, 0xf0, 0x91, 0x8a, 0xca,
+	0xeb, 0x65, 0xe9, 0x21, 0x7c, 0x5d, 0x18, 0x85, 0x5d, 0x25, 0xca, 0xaf, 0x48, 0x4f, 0xe0, 0x7b,
+	0x92, 0x46, 0xf1, 0x2a, 0xbe, 0xbf, 0x6a, 0xf1, 0xd5, 0x77, 0x2a, 0xf8, 0xaf, 0x0e, 0x3e, 0x95,
+	0xfa, 0x9a, 0x68, 0x98, 0x41, 0xb0, 0xa2, 0xf6, 0x89, 0x7e, 0x9c, 0x46, 0x3c, 0x2d, 0x5e, 0x17,
+	0x0d, 0x93, 0x07, 0x71, 0xea, 0x24, 0x2b, 0x23, 0x89, 0xf8, 0xa8, 0x97, 0x50, 0x8e, 0x54, 0x3f,
+	0xed, 0x64, 0x7e, 0x53, 0x6f, 0xcf, 0x1c, 0x04, 0x9c, 0x48, 0x69, 0x09, 0x0d, 0x17, 0x60, 0x7c,
+	0x69, 0x91, 0x7e, 0x5b, 0x4b, 0xa8, 0x89, 0xe0, 0x5c, 0xaa, 0xd6, 0xfa, 0x96, 0xf7, 0x0d, 0x23,
+	0x0d, 0xd1, 0xdf, 0xc1, 0x47, 0x83, 0x4e, 0xcc, 0x77, 0x75, 0xfd, 0x7a, 0x61, 0xbf, 0x1d, 0x0e,
+	0x16, 0xc6, 0x29, 0x5c, 0xa7, 0xba, 0x90, 0xf7, 0x74, 0xfd, 0x1c, 0x04, 0xca, 0xe1, 0xef, 0xb2,
+	0x61, 0xe7, 0xc1, 0x1a, 0xfa, 0x49, 0x92, 0xcf, 0xe4, 0x7d, 0xd9, 0x8c, 0x97, 0x70, 0x28, 0x9f,
+	0x7f, 0xc8, 0x0e, 0x4a, 0x7d, 0x57, 0x16, 0x6d, 0x3f, 0x1c, 0x58, 0x07, 0x30, 0x38, 0xce, 0x92,
+	0x1d, 0x54, 0xae, 0x46, 0x38, 0x7e, 0x46, 0x71, 0x1f, 0xca, 0x0e, 0xca, 0xc9, 0xa0, 0xc2, 0x3e,
+	0x92, 0x1d, 0x6a, 0x8e, 0x21, 0x82, 0xfd, 0xb1, 0xec, 0x50, 0x1d, 0x38, 0xac, 0xc2, 0x92, 0x6e,
+	0xd3, 0x3b, 0xac, 0x4f, 0x4b, 0xba, 0x4d, 0x6f, 0xb4, 0x3e, 0x93, 0x89, 0x15, 0x0d, 0xb0, 0x21,
+	0x8f, 0x47, 0xc9, 0x62, 0xd6, 0x61, 0x9f, 0xcb, 0xd4, 0x29, 0xa0, 0x94, 0xf6, 0x0b, 0x59, 0xb6,
+	0x52, 0x76, 0x73, 0x1b, 0xcb, 0xd6, 0x97, 0xb2, 0x6c, 0xe5, 0x30, 0x4a, 0xf7, 0x95, 0x68, 0xf6,
+	0xf6, 0x28, 0xec, 0x75, 0x49, 0xcc, 0x7a, 0x7c, 0x66, 0xe5, 0xb1, 0x02, 0x37, 0x01, 0x9c, 0x59,
+	0x79, 0x3c, 0x49, 0xbb, 0x61, 0xd2, 0x26, 0xb3, 0x29, 0x4b, 0xb3, 0xa7, 0xc7, 0x93, 0xd4, 0x86,
+	0x70, 0x76, 0xe5, 0xc9, 0x86, 0x61, 0x38, 0xec, 0xad, 0x1a, 0x69, 0xf6, 0x96, 0x72, 0x4c, 0x00,
+	0x67, 0x57, 0x1e, 0x4f, 0xc8, 0xa5, 0x51, 0x98, 0x1a, 0x09, 0xf6, 0xf5, 0x78, 0x42, 0x1a, 0xdf,
+	0x71, 0x86, 0xe5, 0xf1, 0xc2, 0x82, 0x73, 0x42, 0xf5, 0xbd, 0x1f, 0xf4, 0xdb, 0x7c, 0x22, 0xb0,
+	0xbf, 0xc7, 0x0b, 0x4b, 0x11, 0xc6, 0x19, 0x56, 0x39, 0x4c, 0x02, 0x76, 0x80, 0x27, 0x83, 0xab,
+	0x16, 0x45, 0x86, 0xd2, 0x50, 0x4e, 0x79, 0x0e, 0xf4, 0x32, 0x93, 0xaa, 0x40, 0xa0, 0x02, 0x0e,
+	0xaa, 0x22, 0x50, 0x11, 0x07, 0x7b, 0xb2, 0x35, 0xe7, 0xa6, 0xea, 0x13, 0xbb, 0x43, 0x3c, 0xd9,
+	0x9a, 0x9b, 0x08, 0x0c, 0x39, 0x4f, 0xf6, 0x97, 0x8c, 0x8c, 0x07, 0x51, 0x1a, 0xb2, 0x1a, 0x39,
+	0xcc, 0x93, 0xfd, 0x65, 0x0e, 0xa4, 0x94, 0x87, 0x7b, 0x86, 0x07, 0x4b, 0x11, 0xb4, 0xa4, 0x1d,
+	0xe1, 0x19, 0x1e, 0x2c, 0x03, 0x83, 0x1d, 0x27, 0xe9, 0xd4, 0xf7, 0x5e, 0xb4, 0x90, 0xa5, 0x3b,
+	0x4a, 0xd2, 0xe5, 0x30, 0xd8, 0x6f, 0x1e, 0xcb, 0x36, 0x0f, 0x18, 0x06, 0x5b, 0x47, 0x32, 0x6c,
+	0xf1, 0x58, 0xb6, 0x0b, 0x28, 0xa5, 0x3d, 0x46, 0x46, 0x56, 0x7d, 0x47, 0x9e, 0x8b, 0xfe, 0xa0,
+	0xcb, 0x5d, 0x7f, 0xac, 0x0c, 0x5d, 0x11, 0xa6, 0xd4, 0xc7, 0x95, 0xc3, 0xd4, 0xed, 0xc7, 0x8b,
+	0x98, 0xe5, 0x3a, 0xe1, 0x04, 0x11, 0xb3, 0x5c, 0x07, 0x9c, 0x28, 0x92, 0xa0, 0xce, 0xaf, 0x7b,
+	0xf3, 0xf9, 0x84, 0x27, 0xc9, 0x40, 0xbb, 0x08, 0x38, 0xd8, 0x92, 0xe6, 0x58, 0x52, 0xa6, 0xd3,
+	0x9f, 0x22, 0xf5, 0x2d, 0xc2, 0x94, 0xfa, 0x4f, 0x1e, 0xab, 0xba, 0x6c, 0xe9, 0xcc, 0x55, 0x60,
+	0xab, 0xc7, 0xaa, 0xce, 0xc9, 0xa0, 0x3c, 0x4e, 0x95, 0x36, 0xb0, 0x2a, 0x61, 0x9b, 0x31, 0x9b,
+	0x63, 0xa7, 0x49, 0x1b, 0x5c, 0x04, 0xca, 0xe1, 0x74, 0x11, 0x56, 0x5e, 0x87, 0xb3, 0xa4, 0x67,
+	0x88, 0xb0, 0x5a, 0x08, 0xa5, 0x39, 0x53, 0xb4, 0x83, 0x31, 0x71, 0x3b, 0x6a, 0xb1, 0x3e, 0xcb,
+	0x96, 0x63, 0x98, 0x72, 0xba, 0x3d, 0x67, 0xdb, 0x72, 0x9c, 0x81, 0x94, 0xe9, 0x39, 0xb6, 0x3c,
+	0x2a, 0x87, 0x4f, 0xa4, 0x9c, 0x20, 0xe7, 0xda, 0xf2, 0xa8, 0x31, 0x4a, 0x77, 0x9e, 0x74, 0xa3,
+	0x81, 0xd9, 0x76, 0xdd, 0xf9, 0xd2, 0x8d, 0x4e, 0x06, 0xe5, 0xf1, 0x67, 0x7b, 0x20, 0xc1, 0x30,
+	0xfc, 0x75, 0x17, 0xd8, 0x03, 0x69, 0xc2, 0x30, 0xc1, 0x3c, 0xf6, 0xf9, 0x19, 0x70, 0xb0, 0x39,
+	0x8d, 0x7d, 0x73, 0x83, 0x7f, 0x91, 0xc7, 0xfe, 0xb1, 0x32, 0x12, 0xe5, 0xf4, 0x17, 0xbb, 0xa0,
+	0x41, 0xee, 0x14, 0xfd, 0x62, 0x47, 0x3d, 0x0c, 0xf8, 0x12, 0x11, 0xf4, 0x61, 0x60, 0x1d, 0x1e,
+	0x5c, 0x2a, 0x43, 0x4c, 0xdf, 0x2d, 0x4f, 0xf5, 0x65, 0x32, 0xc4, 0x16, 0x02, 0x83, 0x4d, 0xb4,
+	0x3c, 0x21, 0xe6, 0xb9, 0xf9, 0x15, 0xa2, 0xe5, 0x4d, 0x00, 0x86, 0x9a, 0x27, 0x7e, 0xa1, 0x9c,
+	0xe3, 0x9a, 0xcb, 0xba, 0xca, 0x13, 0xbf, 0x50, 0x11, 0x87, 0xb9, 0x26, 0xab, 0x11, 0xe1, 0xb6,
+	0xeb, 0xf7, 0x1a, 0x91, 0x37, 0x1b, 0x82, 0xb1, 0x66, 0xa6, 0x6a, 0x47, 0x83, 0x6e, 0x66, 0xb0,
+	0x5d, 0x67, 0xa6, 0xca, 0x20, 0x4a, 0x75, 0xbd, 0x1b, 0xa2, 0xce, 0xba, 0x41, 0xc4, 0x49, 0x43,
+	0x7e, 0x92, 0x10, 0xa8, 0xf3, 0xbd, 0x51, 0xc4, 0xc9, 0xc9, 0xc0, 0x69, 0x9a, 0x4c, 0x82, 0x8c,
+	0x91, 0x1d, 0x29, 0xdf, 0x2c, 0x93, 0x20, 0x0f, 0x52, 0xca, 0x5b, 0x44, 0x87, 0xa1, 0x77, 0x55,
+	0xb6, 0x94, 0xe8, 0x56, 0x73, 0x68, 0xf9, 0x3b, 0xf1, 0x6f, 0x33, 0xf9, 0x46, 0xa8, 0xc2, 0xed,
+	0x26, 0xdf, 0x88, 0x54, 0xb8, 0x43, 0x04, 0x7d, 0x08, 0xdf, 0xd0, 0x60, 0xe4, 0x5b, 0x56, 0xe8,
+	0x9d, 0x22, 0x60, 0x45, 0x98, 0x52, 0xdf, 0x25, 0xda, 0x86, 0xc7, 0x7e, 0xec, 0x77, 0x16, 0xc3,
+	0x60, 0x39, 0xe8, 0x07, 0x6c, 0xc9, 0xdf, 0x2d, 0xda, 0xc6, 0x45, 0xa0, 0x1c, 0xee, 0x91, 0x02,
+	0x82, 0xcd, 0xc3, 0xa0, 0xab, 0x6c, 0x42, 0x43, 0x52, 0xef, 0xf5, 0x5a, 0x3f, 0xf5, 0x7e, 0xd0,
+	0x49, 0x72, 0x30, 0xcf, 0xd4, 0x21, 0x5b, 0x96, 0xf7, 0x81, 0x55, 0xc8, 0xc4, 0x60, 0xc1, 0x54,
+	0x94, 0x81, 0x74, 0xb2, 0x60, 0x35, 0xca, 0x40, 0x3a, 0x19, 0x30, 0x20, 0x3d, 0xde, 0xfe, 0x1a,
+	0x8c, 0x24, 0xc0, 0xe1, 0x5c, 0x7b, 0x34, 0x3f, 0xaf, 0x4c, 0x49, 0x8f, 0xb7, 0xbf, 0x25, 0x1c,
+	0x18, 0x95, 0xd2, 0xed, 0x06, 0xc7, 0xe8, 0xf6, 0x47, 0x1c, 0xbd, 0x62, 0x74, 0xfb, 0xa3, 0x8e,
+	0x5a, 0xf0, 0x98, 0x72, 0x4c, 0xc3, 0xd2, 0xf4, 0x63, 0x8e, 0x5a, 0x98, 0x1c, 0x98, 0xa0, 0xae,
+	0xde, 0xf5, 0x7b, 0xbd, 0xf1, 0x7c, 0x14, 0x8f, 0x17, 0x83, 0x9e, 0x9a, 0xa7, 0x4f, 0xb8, 0x7a,
+	0xd7, 0x62, 0x51, 0x5e, 0x4f, 0xae, 0xc9, 0xa2, 0xf1, 0x7c, 0x4a, 0x26, 0x82, 0xc1, 0xd2, 0x05,
+	0x3d, 0x2d, 0x13, 0x21, 0x0f, 0xe2, 0x5c, 0x4e, 0xb4, 0x05, 0xef, 0x71, 0xc3, 0x20, 0xd1, 0x21,
+	0x6a, 0x94, 0xf3, 0xb3, 0x32, 0x76, 0x06, 0x1e, 0x0d, 0x83, 0x41, 0x36, 0x91, 0x9f, 0xd3, 0xbb,
+	0x85, 0x8c, 0x61, 0x88, 0xda, 0xf3, 0x7a, 0x2b, 0x92, 0xc1, 0xc6, 0x90, 0xbc, 0xe0, 0x48, 0x6d,
+	0x0c, 0xc9, 0x8b, 0xa2, 0xf2, 0xcd, 0xea, 0xe5, 0xbd, 0x77, 0x2f, 0x89, 0xca, 0x2f, 0x23, 0x51,
+	0x4e, 0x2f, 0x3b, 0x1a, 0xd2, 0x0d, 0x13, 0x38, 0xc0, 0x12, 0x65, 0xe7, 0x7a, 0xad, 0x5f, 0x78,
+	0x3f, 0xb3, 0xcb, 0x9a, 0x0f, 0xe3, 0x04, 0x3a, 0x5e, 0x85, 0x9d, 0xe8, 0x22, 0x5f, 0x05, 0xd7,
+	0xce, 0xcd, 0xc5, 0xc5, 0x19, 0xdf, 0x5a, 0x5c, 0xa3, 0xb7, 0x5e, 0x93, 0xe1, 0x08, 0x07, 0xcb,
+	0x61, 0xea, 0x2b, 0x21, 0x37, 0x86, 0xe3, 0x75, 0xd9, 0xf6, 0x19, 0x38, 0x92, 0x03, 0x7d, 0x43,
+	0xfa, 0xda, 0x40, 0x07, 0x23, 0xbd, 0xa1, 0x7f, 0x53, 0xfa, 0xba, 0x08, 0xc3, 0x46, 0xf6, 0xd8,
+	0x4d, 0x5f, 0x84, 0x11, 0xf7, 0x9b, 0x99, 0xcc, 0x1e, 0x1b, 0x99, 0x55, 0x44, 0x58, 0xd0, 0x32,
+	0x7a, 0x06, 0xb1, 0x1d, 0x8c, 0xd3, 0xc8, 0x34, 0x33, 0xde, 0x91, 0xd1, 0x2b, 0x23, 0xc1, 0xc2,
+	0x96, 0xcd, 0xb0, 0xd9, 0xee, 0x5e, 0xc8, 0x9e, 0x97, 0xf7, 0x5c, 0xbd, 0x02, 0x14, 0xb6, 0xb5,
+	0xa3, 0x16, 0x92, 0x96, 0xb6, 0x69, 0xca, 0xb8, 0x76, 0xd4, 0xc2, 0x22, 0xc1, 0xba, 0xf6, 0xd8,
+	0x93, 0x6c, 0x90, 0xba, 0x64, 0x60, 0x67, 0xad, 0xf9, 0xc0, 0x63, 0x4f, 0xb2, 0x9b, 0x42, 0xb9,
+	0x7c, 0x28, 0x6a, 0xc6, 0xa0, 0xe4, 0x3d, 0xdd, 0x1f, 0x89, 0x9a, 0x29, 0xe1, 0x50, 0x3e, 0x1f,
+	0xeb, 0xed, 0x86, 0xcf, 0x9b, 0x74, 0xda, 0x3f, 0x23, 0x62, 0x54, 0x6f, 0x37, 0x4c, 0x04, 0xe1,
+	0xa2, 0x1e, 0x7b, 0x7e, 0x34, 0x82, 0x80, 0x51, 0xaf, 0xf5, 0x73, 0xef, 0x47, 0x66, 0x4e, 0x51,
+	0xdc, 0x0d, 0xe2, 0x71, 0xc4, 0x5e, 0x5e, 0xc9, 0xf7, 0x73, 0xf0, 0xcc, 0xd4, 0x45, 0x1e, 0x4c,
+	0x6b, 0xe9, 0xcc, 0xae, 0xcf, 0x41, 0x6a, 0xbf, 0xde, 0x71, 0x47, 0xe3, 0x64, 0x05, 0x85, 0x7e,
+	0x29, 0x5a, 0xd2, 0x22, 0xe9, 0x73, 0x30, 0x96, 0xb5, 0xaf, 0x44, 0xff, 0x95, 0xb2, 0x70, 0x86,
+	0x2b, 0x5d, 0x61, 0xb1, 0x28, 0xfd, 0x6e, 0x75, 0xee, 0x0a, 0x0b, 0xa1, 0x34, 0xbb, 0xd7, 0x59,
+	0xa4, 0x2c, 0x44, 0x76, 0xc2, 0x7b, 0xd4, 0x59, 0xa4, 0x0a, 0x28, 0xa5, 0xdd, 0xb3, 0xce, 0x43,
+	0x68, 0xa1, 0xf6, 0xaa, 0xb7, 0x57, 0x9d, 0x87, 0xb0, 0x84, 0x43, 0xf9, 0xec, 0x5d, 0x6f, 0xfd,
+	0x4f, 0xef, 0xa7, 0x55, 0xf9, 0x68, 0x9f, 0xff, 0x3e, 0x75, 0x57, 0x77, 0x71, 0x90, 0xb0, 0x96,
+	0x9b, 0x7d, 0xeb, 0xae, 0xee, 0x32, 0x59, 0x30, 0xfc, 0xeb, 0x7c, 0xd8, 0x67, 0xb1, 0x70, 0x1e,
+	0xa0, 0x8b, 0xce, 0x8e, 0x0d, 0xf6, 0xaf, 0xf3, 0x61, 0xdf, 0x9a, 0x6c, 0xb8, 0x05, 0xea, 0xbc,
+	0xa1, 0x5d, 0x08, 0xe7, 0xad, 0xe0, 0x9c, 0x03, 0xea, 0xbc, 0xa1, 0x35, 0x01, 0x84, 0xb4, 0xd6,
+	0xc5, 0x9e, 0xec, 0x8f, 0xc9, 0xfc, 0xf2, 0xd9, 0x7d, 0x74, 0x50, 0x5d, 0xec, 0xc9, 0xec, 0x3b,
+	0xce, 0x71, 0xe5, 0xfb, 0xb2, 0x1d, 0x42, 0x75, 0x48, 0x9d, 0x7d, 0xd6, 0xdd, 0xd8, 0x5f, 0x51,
+	0xe1, 0x39, 0x88, 0x5a, 0xad, 0xb3, 0xcf, 0x3a, 0xfb, 0x8c, 0x88, 0xd5, 0x3a, 0x9b, 0x41, 0xf1,
+	0x68, 0x10, 0xe4, 0xdc, 0xdc, 0x87, 0xd7, 0x25, 0x2c, 0xd4, 0xc6, 0x10, 0xb5, 0x5a, 0x67, 0x0d,
+	0x9d, 0x61, 0xda, 0x73, 0x4e, 0xb5, 0x38, 0xb2, 0xce, 0xc7, 0x8a, 0xc0, 0xe7, 0xe3, 0x40, 0x39,
+	0x58, 0xb9, 0x9e, 0x7a, 0xca, 0x1d, 0x55, 0x97, 0x9d, 0xb1, 0xbf, 0x8a, 0xb5, 0x7c, 0x21, 0x8a,
+	0xba, 0x6a, 0x1d, 0x3a, 0x5a, 0x4a, 0x58, 0xe8, 0x8f, 0x93, 0xd5, 0x41, 0x07, 0xd1, 0x53, 0xc6,
+	0x51, 0xf3, 0x16, 0x49, 0xba, 0x12, 0xb4, 0x89, 0xc3, 0x3e, 0x0a, 0xc4, 0xb3, 0x4a, 0x57, 0xfa,
+	0x83, 0x34, 0x1c, 0x77, 0x16, 0x03, 0x5f, 0x0d, 0xe1, 0xb1, 0xd2, 0x65, 0xc6, 0x77, 0x58, 0xfa,
+	0x75, 0xde, 0x37, 0x2c, 0x8d, 0x82, 0x24, 0xbf, 0x5b, 0x3a, 0xbe, 0xce, 0xfb, 0x86, 0x3c, 0x48,
+	0x29, 0x4f, 0xa8, 0xcb, 0xc1, 0xbe, 0xba, 0x59, 0x32, 0xf4, 0x63, 0x5f, 0x75, 0xc0, 0x89, 0x82,
+	0xf4, 0xfd, 0xa1, 0xed, 0x55, 0x3b, 0x49, 0xe6, 0xa2, 0x85, 0xc0, 0xc0, 0x97, 0xb9, 0xc8, 0xfb,
+	0x2c, 0x15, 0xa1, 0x24, 0x41, 0xaf, 0x5b, 0x65, 0x2e, 0x16, 0x50, 0x98, 0xe6, 0x75, 0x56, 0xca,
+	0x96, 0x78, 0x26, 0x41, 0x3a, 0x4e, 0xc3, 0x61, 0xa2, 0x8c, 0xf3, 0x3a, 0x2b, 0x65, 0x37, 0x05,
+	0xe6, 0x79, 0x9d, 0x77, 0xb1, 0x6c, 0xbf, 0x93, 0x2a, 0xdb, 0x14, 0x04, 0xc3, 0x71, 0xe2, 0x6f,
+	0x52, 0xf3, 0xf9, 0x8c, 0x3a, 0x6f, 0x20, 0x9c, 0x0c, 0x98, 0xeb, 0x22, 0x52, 0x46, 0x42, 0x71,
+	0x65, 0x9e, 0x25, 0x22, 0x95, 0xc3, 0x28, 0xdd, 0xd9, 0x75, 0xb6, 0xe8, 0x32, 0xcc, 0xb2, 0xe8,
+	0xce, 0x11, 0x81, 0x70, 0xe0, 0x38, 0x33, 0x95, 0xfe, 0xc9, 0x70, 0x63, 0x5a, 0x9c, 0x57, 0xe7,
+	0x65, 0xbd, 0xca, 0x25, 0x0c, 0xf3, 0xbd, 0x3e, 0x81, 0xef, 0x18, 0x56, 0x7c, 0xbd, 0xf5, 0x2b,
+	0x6f, 0xbd, 0xbd, 0x51, 0x32, 0x02, 0xe1, 0xf8, 0x8a, 0x82, 0x76, 0x55, 0x5d, 0x00, 0x7a, 0x6e,
+	0x83, 0xe8, 0xa6, 0xc3, 0xca, 0xaf, 0xdb, 0x3e, 0x02, 0x39, 0xe5, 0xe6, 0xb9, 0x79, 0x51, 0xdd,
+	0xb6, 0xcd, 0x0d, 0x18, 0x96, 0x7d, 0xdd, 0xf6, 0x52, 0x28, 0x38, 0x09, 0xd2, 0x54, 0x2e, 0xb5,
+	0x5c, 0x52, 0xb7, 0xbd, 0x14, 0x36, 0x03, 0x07, 0xaf, 0x75, 0x5e, 0x0e, 0x2d, 0x86, 0xad, 0xf0,
+	0x60, 0xd5, 0xd7, 0xc5, 0xb1, 0x65, 0xf2, 0xe2, 0xa0, 0x1d, 0xc5, 0xca, 0x9f, 0x71, 0x85, 0x2c,
+	0x13, 0x36, 0xc1, 0x3e, 0x5a, 0x95, 0x65, 0xa2, 0x84, 0x03, 0x93, 0x1d, 0x3a, 0x25, 0x9f, 0xcf,
+	0x30, 0x4a, 0xc6, 0x61, 0x77, 0x73, 0x96, 0xd5, 0x35, 0xa2, 0x7a, 0xca, 0x69, 0x30, 0xe5, 0xeb,
+	0x96, 0x63, 0x91, 0x69, 0xb2, 0xf0, 0x5d, 0x57, 0xb7, 0x1c, 0x8b, 0x06, 0x0a, 0x83, 0xde, 0xd9,
+	0x22, 0xbb, 0x5b, 0x6e, 0x70, 0xb6, 0xc8, 0x5e, 0xf8, 0x6e, 0x94, 0x85, 0xaf, 0x34, 0x1f, 0xbd,
+	0xf0, 0xdd, 0x24, 0xf2, 0x5b, 0x42, 0xd5, 0xb7, 0x95, 0x6e, 0x96, 0xb5, 0xcf, 0x22, 0xe6, 0xe3,
+	0x39, 0x6e, 0x71, 0x0a, 0xc8, 0x70, 0x53, 0x26, 0xaf, 0xb7, 0x3a, 0x05, 0x44, 0x18, 0xf0, 0x06,
+	0xd4, 0x79, 0x1f, 0x54, 0x21, 0x20, 0x38, 0x1d, 0xae, 0x8b, 0x63, 0xd3, 0x21, 0x20, 0x70, 0x13,
+	0xa0, 0x1b, 0xca, 0xbb, 0xca, 0x38, 0xd9, 0xbf, 0x53, 0x66, 0x67, 0x55, 0x37, 0xc0, 0x79, 0x20,
+	0xfa, 0xb0, 0x50, 0x39, 0x6d, 0x4a, 0xdf, 0x2d, 0xfa, 0xd0, 0x4d, 0x81, 0x03, 0x61, 0x8d, 0x41,
+	0x84, 0x17, 0x41, 0x2f, 0x54, 0xd6, 0x4c, 0x4a, 0x25, 0xee, 0xe9, 0x3e, 0x67, 0x57, 0x77, 0x8c,
+	0x10, 0x9a, 0xfb, 0x9d, 0x5d, 0xdd, 0x31, 0x42, 0x69, 0x1e, 0xa8, 0xdb, 0x3e, 0x3f, 0x66, 0x60,
+	0xbb, 0x31, 0xf4, 0x63, 0x25, 0x22, 0x0f, 0xd6, 0x6d, 0x9f, 0x5f, 0x81, 0x84, 0xb0, 0x5c, 0x67,
+	0xbf, 0xf4, 0x97, 0x8d, 0x75, 0xff, 0x61, 0x67, 0x61, 0x44, 0x31, 0x82, 0x94, 0x1e, 0x71, 0x16,
+	0x66, 0x90, 0xe0, 0x4a, 0x70, 0xf6, 0xb0, 0x2e, 0x0c, 0xb1, 0xba, 0xa2, 0x65, 0x4c, 0x7f, 0x86,
+	0xb2, 0x5a, 0x2d, 0x05, 0xf1, 0xb8, 0x08, 0x5b, 0x05, 0x0f, 0x51, 0xbc, 0xb2, 0x8a, 0x58, 0x8b,
+	0xdc, 0xca, 0x62, 0x20, 0x07, 0xdd, 0x32, 0x5a, 0x0e, 0x1c, 0x07, 0xde, 0x52, 0x1f, 0x67, 0xfa,
+	0xec, 0x48, 0xff, 0x69, 0xa9, 0x4f, 0x05, 0x0f, 0x9e, 0x85, 0x3a, 0x9b, 0xd3, 0x0e, 0x1e, 0x3c,
+	0x08, 0xc6, 0x56, 0xe3, 0xd9, 0x3a, 0x9b, 0xc8, 0x6b, 0x70, 0x11, 0x11, 0x2c, 0xca, 0xd0, 0x59,
+	0xbe, 0xce, 0xf2, 0x79, 0x51, 0x86, 0xe5, 0x34, 0xc4, 0x09, 0xd7, 0x5b, 0xff, 0xcb, 0xfb, 0xb9,
+	0x3b, 0x37, 0xdc, 0x96, 0x35, 0xf3, 0x7c, 0x11, 0x64, 0x77, 0x9e, 0x16, 0x19, 0x87, 0xec, 0xb2,
+	0x1b, 0x30, 0x42, 0x7e, 0x7b, 0xcb, 0x6a, 0x2c, 0x5e, 0x96, 0xdd, 0x40, 0x0e, 0xa3, 0x74, 0xaf,
+	0xd4, 0xf9, 0x84, 0x59, 0x30, 0x9c, 0xb5, 0xcb, 0xe0, 0xca, 0x47, 0xe3, 0xba, 0x1d, 0xce, 0xdc,
+	0x65, 0x70, 0x1d, 0x38, 0xce, 0xde, 0x05, 0x0f, 0x36, 0x0f, 0x7b, 0x24, 0x3b, 0xc1, 0x66, 0x6b,
+	0xef, 0xfc, 0xba, 0x6c, 0xda, 0x04, 0xd7, 0x73, 0xe2, 0x0d, 0xd9, 0xb4, 0x59, 0x08, 0xa2, 0x89,
+	0xeb, 0x99, 0xe3, 0x8f, 0xf3, 0xcc, 0xf9, 0xe2, 0xdf, 0xaa, 0x67, 0x8e, 0xbf, 0x22, 0x83, 0xf2,
+	0x78, 0x5b, 0x3a, 0x49, 0x18, 0x46, 0xea, 0xbf, 0x49, 0x27, 0xe5, 0x30, 0x4a, 0xf7, 0x8e, 0xd3,
+	0x00, 0x53, 0x23, 0x21, 0x2b, 0xd9, 0xbb, 0x4e, 0x03, 0x2c, 0xe3, 0xe0, 0xc6, 0xe8, 0x1a, 0x1c,
+	0xea, 0x9b, 0xbf, 0x3b, 0x6d, 0x2a, 0x1e, 0x75, 0x6d, 0xce, 0xbe, 0x5f, 0xd7, 0x7e, 0xae, 0xec,
+	0xc0, 0x39, 0x6b, 0xcc, 0x3f, 0xea, 0xda, 0xcf, 0x95, 0x87, 0xa9, 0x1e, 0x1f, 0xc8, 0xf8, 0x32,
+	0x94, 0xb7, 0xeb, 0x3e, 0x94, 0xf1, 0x73, 0xe0, 0x38, 0x8a, 0xaf, 0xc0, 0x71, 0xc1, 0xb4, 0xae,
+	0x2f, 0x71, 0x92, 0x36, 0x5a, 0x18, 0x07, 0x9b, 0x79, 0xf4, 0xe1, 0x2f, 0xa8, 0xeb, 0x4b, 0x9c,
+	0x39, 0x14, 0x3e, 0x83, 0xba, 0x71, 0xac, 0x61, 0x6d, 0xe8, 0x3f, 0xab, 0x1b, 0xc7, 0x1a, 0xd6,
+	0x86, 0xfe, 0xf3, 0xba, 0xe1, 0xff, 0xce, 0xd2, 0x88, 0xde, 0xff, 0xa2, 0x6e, 0xf8, 0xbf, 0x6d,
+	0x18, 0x57, 0x4e, 0x75, 0x5f, 0x76, 0xbb, 0xe3, 0xa5, 0x91, 0xdf, 0x23, 0x34, 0xbb, 0x69, 0xb6,
+	0x5b, 0x43, 0xfa, 0xb2, 0x00, 0xc3, 0xb0, 0x6f, 0x14, 0xdd, 0xb8, 0x88, 0x95, 0x30, 0xfa, 0x73,
+	0x8f, 0x46, 0xd1, 0x8d, 0x6b, 0x72, 0x60, 0xe4, 0x37, 0x38, 0x10, 0xde, 0xd8, 0xb7, 0xf6, 0xc2,
+	0x4d, 0x7e, 0x3b, 0xec, 0xa9, 0x0e, 0xd0, 0xb9, 0xed, 0xd5, 0xe0, 0x40, 0xf8, 0x4a, 0x26, 0x0c,
+	0xfe, 0x86, 0xc4, 0xca, 0x75, 0xd2, 0x28, 0x56, 0xf3, 0x53, 0xbc, 0x2b, 0xfb, 0x34, 0x24, 0x56,
+	0xce, 0xc6, 0x10, 0x88, 0x5d, 0x82, 0x21, 0x00, 0x5b, 0x30, 0xea, 0x4c, 0xbe, 0xae, 0x23, 0xf7,
+	0x11, 0xf6, 0x6f, 0x18, 0x87, 0x45, 0xb9, 0xbb, 0x67, 0x88, 0xc2, 0x6e, 0x18, 0x87, 0x45, 0xf9,
+	0xbb, 0x69, 0x9d, 0x4d, 0xd3, 0x07, 0x34, 0x8c, 0xb1, 0xb7, 0xae, 0xcd, 0x1d, 0xd8, 0x30, 0xc6,
+	0xde, 0xba, 0x3a, 0x77, 0x90, 0xb4, 0xd1, 0xa8, 0x8f, 0xdc, 0x6a, 0x38, 0xd8, 0x51, 0x57, 0xb9,
+	0xd7, 0x70, 0x48, 0x83, 0x17, 0x68, 0x2b, 0x90, 0x2d, 0xf5, 0x0d, 0x6f, 0xd0, 0xa1, 0x0d, 0x5e,
+	0x56, 0xdd, 0x14, 0xd8, 0xf5, 0x0d, 0xde, 0x59, 0x16, 0x28, 0x05, 0x75, 0x7e, 0x64, 0x83, 0x77,
+	0x5f, 0xd5, 0x54, 0xdc, 0x3c, 0xad, 0x2e, 0x18, 0x66, 0x7b, 0x83, 0x37, 0x0f, 0x05, 0x4a, 0x37,
+	0x5c, 0x56, 0xd3, 0x7d, 0x69, 0x7a, 0x4b, 0x83, 0x37, 0x0f, 0x65, 0x24, 0x9c, 0xde, 0x37, 0x24,
+	0x50, 0x3d, 0x1a, 0xe0, 0x86, 0x3e, 0x0e, 0xf1, 0x48, 0x63, 0xc3, 0x96, 0x6f, 0x48, 0xa0, 0x7a,
+	0x1e, 0x85, 0x45, 0xdf, 0xe0, 0xd5, 0xb9, 0x13, 0x47, 0x49, 0x32, 0x5e, 0x1d, 0xf9, 0x83, 0x31,
+	0x74, 0x54, 0x1a, 0x87, 0xbe, 0x71, 0xd7, 0xe8, 0xf8, 0x46, 0xeb, 0xff, 0x78, 0x1b, 0x71, 0xb9,
+	0xde, 0xc5, 0x93, 0x85, 0x5c, 0xfd, 0x97, 0xae, 0x0e, 0x55, 0xf5, 0x4f, 0x40, 0xaa, 0xd2, 0xdc,
+	0x1d, 0xa9, 0x10, 0x00, 0xa0, 0x07, 0xb6, 0x24, 0xd5, 0xd2, 0xf4, 0x49, 0xba, 0x7f, 0x9d, 0x14,
+	0xf8, 0x08, 0x64, 0x3a, 0x96, 0xe5, 0xa2, 0xc7, 0xf5, 0x14, 0x99, 0x8e, 0x95, 0x4c, 0x84, 0x06,
+	0x34, 0x78, 0xf5, 0x77, 0x33, 0x6d, 0xbb, 0x66, 0x6b, 0x83, 0x57, 0xff, 0xb5, 0xc8, 0xf0, 0x4a,
+	0x34, 0x5a, 0xff, 0xdb, 0xfb, 0xd5, 0x44, 0x39, 0x6b, 0x4b, 0xe7, 0x34, 0xa4, 0x99, 0xa0, 0x00,
+	0xc3, 0x2c, 0x38, 0xbd, 0xba, 0x05, 0xf6, 0x56, 0xf2, 0x8c, 0xea, 0x16, 0xd8, 0xfb, 0xc9, 0x33,
+	0xab, 0x73, 0x5e, 0x0e, 0x83, 0x95, 0x2c, 0xe7, 0xb3, 0xaa, 0x73, 0xce, 0xc8, 0xf0, 0x77, 0x34,
+	0x5a, 0x1b, 0xbd, 0x5f, 0x4c, 0x90, 0x73, 0x34, 0x52, 0xb9, 0x9f, 0x33, 0x69, 0xee, 0x24, 0xd9,
+	0xe7, 0x36, 0xd8, 0x2a, 0x37, 0x94, 0xb1, 0xb5, 0xda, 0x9d, 0xd7, 0x60, 0xab, 0xcc, 0x45, 0x40,
+	0x24, 0xb9, 0x4c, 0xd2, 0xb2, 0x6b, 0x52, 0x44, 0xba, 0xa4, 0xc1, 0xdb, 0x65, 0x77, 0x9d, 0xb4,
+	0xca, 0xba, 0xb4, 0x7a, 0x42, 0x6a, 0xbd, 0x75, 0x59, 0x83, 0xb7, 0xb5, 0x6e, 0x9e, 0x6c, 0x6a,
+	0x2e, 0x6f, 0xf0, 0xb6, 0xb6, 0x9c, 0x46, 0xb9, 0x5d, 0xd1, 0x90, 0x8b, 0x80, 0x23, 0x6c, 0xc7,
+	0x8d, 0x45, 0xfb, 0xca, 0x86, 0x5c, 0x04, 0xb4, 0x20, 0x4a, 0x75, 0x55, 0x43, 0x22, 0x65, 0x72,
+	0xa9, 0xf4, 0xd4, 0xba, 0xba, 0x21, 0x91, 0x32, 0x2e, 0x06, 0xe5, 0x71, 0x4d, 0x83, 0xfd, 0xd4,
+	0x60, 0xc8, 0x05, 0xc0, 0xfc, 0x06, 0xe0, 0xda, 0x06, 0xef, 0xa9, 0x4a, 0x59, 0xb8, 0x8d, 0x2b,
+	0x2b, 0xb9, 0x86, 0x8a, 0xe6, 0xc8, 0xf5, 0xb2, 0x92, 0x97, 0x70, 0x70, 0x53, 0x57, 0xc6, 0x2a,
+	0xc7, 0xc9, 0x9b, 0x21, 0x37, 0xca, 0x58, 0x55, 0xf0, 0x10, 0x77, 0x20, 0x0a, 0xad, 0x50, 0xa6,
+	0xce, 0xea, 0x66, 0x51, 0x68, 0x6e, 0x0a, 0x62, 0x10, 0x1a, 0xec, 0xd8, 0xc8, 0x51, 0x0a, 0xeb,
+	0xd4, 0xad, 0x0d, 0x36, 0xfd, 0xab, 0x88, 0xf0, 0x4b, 0xc8, 0x6a, 0xce, 0x6b, 0x42, 0xfe, 0x02,
+	0xfc, 0xed, 0x0d, 0xeb, 0x32, 0xa5, 0xb5, 0x9e, 0xdf, 0xd1, 0xb0, 0x2e, 0x53, 0x5a, 0x2b, 0xfa,
+	0x9d, 0xd2, 0x18, 0x13, 0xb3, 0xef, 0xb5, 0xde, 0x25, 0x6b, 0x96, 0x49, 0xd1, 0xcb, 0xfe, 0xdd,
+	0xb2, 0x66, 0x15, 0x50, 0xf8, 0x1a, 0x44, 0xec, 0x4c, 0xd4, 0xda, 0xa6, 0xdc, 0x2b, 0x62, 0xe7,
+	0x64, 0x50, 0x1e, 0xf7, 0xc9, 0xf4, 0x29, 0x54, 0xd1, 0xca, 0xe8, 0x7e, 0x99, 0x3e, 0xe5, 0x34,
+	0x78, 0x1d, 0x64, 0x80, 0xad, 0xfa, 0x5a, 0xb1, 0x32, 0x0f, 0xba, 0xfa, 0xc4, 0x56, 0x11, 0x0f,
+	0xd9, 0x2a, 0x22, 0x8d, 0x86, 0xec, 0x5a, 0x55, 0x0e, 0x55, 0xad, 0x3c, 0x1f, 0xb1, 0x55, 0x84,
+	0x93, 0x07, 0xa7, 0x42, 0x83, 0x8f, 0x6d, 0xf2, 0x3c, 0xe7, 0x6a, 0xf2, 0x58, 0x83, 0x8f, 0x6d,
+	0xd6, 0x64, 0x23, 0x66, 0xc1, 0x56, 0x3f, 0x46, 0x1d, 0xa2, 0xb8, 0x13, 0x8c, 0x57, 0x38, 0x28,
+	0xf8, 0x09, 0x5b, 0xfd, 0xb8, 0x68, 0x88, 0x5a, 0xb0, 0x35, 0xbc, 0x33, 0x37, 0x6b, 0x65, 0x7a,
+	0x0a, 0x09, 0x2a, 0xf3, 0xb5, 0x57, 0xa7, 0xa7, 0xcb, 0xea, 0x6b, 0xaf, 0xd9, 0xcf, 0x94, 0xd5,
+	0xd7, 0x5e, 0xad, 0x9f, 0x6d, 0xe8, 0xe7, 0x27, 0xfc, 0xee, 0x78, 0x34, 0xec, 0xfa, 0xa9, 0x9a,
+	0x31, 0xcf, 0x35, 0xf4, 0xbb, 0x26, 0x7e, 0x97, 0xf4, 0x40, 0x2c, 0x97, 0x0d, 0x9f, 0x6f, 0xe8,
+	0x77, 0x4d, 0x0c, 0x04, 0x2e, 0x85, 0x86, 0xf9, 0x44, 0x8d, 0x76, 0x2b, 0xbe, 0xd8, 0x30, 0x9f,
+	0xa8, 0xd1, 0xbe, 0xc4, 0x97, 0x44, 0x5f, 0x2e, 0x70, 0x1d, 0x8d, 0x57, 0x7e, 0xb2, 0xab, 0x8d,
+	0x2f, 0x8b, 0xbe, 0x2c, 0x65, 0xc1, 0x75, 0x90, 0xcf, 0x8b, 0x4f, 0x8d, 0x82, 0x41, 0x1a, 0xc4,
+	0xea, 0x8a, 0x5a, 0xb0, 0x34, 0xfd, 0x6a, 0x3e, 0xaf, 0x02, 0x0b, 0x51, 0x0b, 0x25, 0x79, 0xa9,
+	0x3b, 0xa9, 0x92, 0xd7, 0x6b, 0xa2, 0xc3, 0x72, 0x2c, 0xc2, 0x71, 0x76, 0x35, 0x8c, 0xd4, 0x11,
+	0xcc, 0xeb, 0xa2, 0xc3, 0xaa, 0x88, 0x88, 0x61, 0x90, 0xa9, 0xee, 0xac, 0x1d, 0xde, 0x85, 0x2a,
+	0x61, 0xa8, 0x9a, 0x11, 0xe3, 0xdd, 0x92, 0xba, 0x27, 0x8b, 0xd1, 0x8a, 0x11, 0x94, 0x5f, 0xd2,
+	0x0f, 0x19, 0x0b, 0xd6, 0xbf, 0x58, 0x50, 0xe6, 0x3c, 0x8f, 0x83, 0xbe, 0xbc, 0xce, 0xf0, 0xbe,
+	0x4b, 0xe7, 0x32, 0x8e, 0x98, 0x01, 0x97, 0x62, 0x1c, 0x46, 0x91, 0xda, 0xf7, 0x7e, 0xe0, 0x52,
+	0x8c, 0x40, 0x11, 0x29, 0xd0, 0xb0, 0x3c, 0xf5, 0xdd, 0xa0, 0x2f, 0x6f, 0x86, 0x21, 0x46, 0xa0,
+	0x61, 0x79, 0xea, 0x0d, 0x14, 0xd1, 0x01, 0x0d, 0xeb, 0x18, 0x45, 0xa1, 0xd9, 0x5d, 0xc0, 0x4f,
+	0x1a, 0xd6, 0x31, 0x8a, 0x09, 0xc3, 0xe6, 0x6f, 0x58, 0x7e, 0x7e, 0x05, 0x73, 0xc8, 0xaa, 0xac,
+	0xe1, 0x9f, 0x35, 0x2c, 0x17, 0x71, 0x81, 0x03, 0x3f, 0x40, 0xc3, 0x72, 0x01, 0x2b, 0x4e, 0x7f,
+	0xd9, 0x70, 0x01, 0x7f, 0xd1, 0xb0, 0x5c, 0xc0, 0x39, 0x06, 0xbc, 0x01, 0x0d, 0xeb, 0x00, 0x40,
+	0x31, 0xda, 0xa3, 0x55, 0xae, 0x6e, 0x76, 0x50, 0xfd, 0x55, 0xc3, 0x72, 0x91, 0xbb, 0x89, 0x08,
+	0x17, 0x68, 0xc8, 0x5d, 0x37, 0x59, 0x50, 0x8d, 0x20, 0xd4, 0xdd, 0x9a, 0x72, 0xd7, 0x2d, 0x07,
+	0xc2, 0xb7, 0xd0, 0xe4, 0x11, 0xc9, 0xc0, 0x70, 0x81, 0x7a, 0x5d, 0x79, 0x15, 0x9a, 0x3c, 0x22,
+	0x05, 0x14, 0xfe, 0x84, 0x26, 0x8f, 0x88, 0xb5, 0xf6, 0x2c, 0xaa, 0xd3, 0xf0, 0xa5, 0xe9, 0xbd,
+	0x9a, 0xd6, 0x9b, 0x03, 0x26, 0x0c, 0xcf, 0x41, 0xb3, 0x44, 0xa5, 0x66, 0x9a, 0x0c, 0xfb, 0x60,
+	0x2d, 0x1e, 0xfb, 0x34, 0x4b, 0x54, 0xaa, 0x2b, 0x01, 0x7c, 0x0c, 0x4d, 0x39, 0x93, 0x29, 0x9b,
+	0xa2, 0x38, 0xe3, 0xa5, 0xbc, 0xf7, 0x6b, 0xca, 0xb9, 0x45, 0x25, 0x15, 0x1e, 0x88, 0xa6, 0x71,
+	0x77, 0x47, 0x2c, 0xde, 0x68, 0x30, 0x5e, 0x8e, 0x58, 0xb5, 0xfd, 0xb1, 0x69, 0xdc, 0xdd, 0xc9,
+	0x13, 0xe0, 0x83, 0x68, 0xca, 0x32, 0x6a, 0xda, 0xcc, 0x41, 0x6f, 0x7e, 0x3c, 0xef, 0x0f, 0x8c,
+	0xa8, 0xe7, 0x03, 0x9b, 0xb2, 0x8c, 0x96, 0xf3, 0xe0, 0x9f, 0x68, 0x3a, 0xfc, 0x0c, 0xaa, 0x3a,
+	0x22, 0x94, 0x07, 0x37, 0x1d, 0xe6, 0x7e, 0x46, 0x81, 0xb7, 0xa2, 0x29, 0xe6, 0xa8, 0x41, 0x41,
+	0x41, 0xb2, 0x73, 0x93, 0xcc, 0x0e, 0x6d, 0x8a, 0x39, 0x5a, 0xc5, 0x84, 0xef, 0xa2, 0xc9, 0x92,
+	0x5e, 0x60, 0x2a, 0x1f, 0x91, 0xde, 0x11, 0x1e, 0xde, 0x64, 0x49, 0xaf, 0x22, 0x22, 0x5a, 0xa1,
+	0x34, 0xc7, 0xae, 0x6f, 0x6d, 0xec, 0x8f, 0x2c, 0xcd, 0xd1, 0x20, 0xc2, 0x13, 0xd2, 0x94, 0x4d,
+	0x88, 0x41, 0xa4, 0x52, 0x59, 0x04, 0xec, 0x8e, 0x3c, 0xba, 0x29, 0x9b, 0x90, 0xb5, 0xd8, 0x94,
+	0xf7, 0x96, 0xa6, 0x11, 0xcf, 0x9b, 0x7f, 0x6d, 0xe2, 0x98, 0xa6, 0x11, 0xcf, 0x9b, 0x7f, 0x60,
+	0xe2, 0xd8, 0x26, 0xaf, 0xd3, 0x2b, 0x61, 0xb2, 0x38, 0x6e, 0x47, 0x9b, 0xf1, 0xac, 0x0f, 0xee,
+	0x94, 0x37, 0x79, 0x9d, 0xb6, 0x10, 0x5c, 0x22, 0x97, 0xb9, 0x0c, 0x64, 0x34, 0xe8, 0x45, 0x9d,
+	0x4d, 0x6a, 0x2f, 0x08, 0x57, 0x87, 0xcc, 0x65, 0xde, 0x0d, 0x80, 0x04, 0x14, 0xb7, 0xc2, 0x05,
+	0x2d, 0xa4, 0x85, 0xab, 0xa2, 0xc9, 0x3b, 0x80, 0x2c, 0x11, 0xfc, 0x12, 0x4d, 0x09, 0xdc, 0x30,
+	0x3f, 0x2b, 0x47, 0x44, 0xd3, 0xb6, 0x50, 0xc8, 0x26, 0x5d, 0x89, 0xe2, 0xae, 0x04, 0x77, 0x24,
+	0xec, 0x23, 0xdc, 0xda, 0xb4, 0x2d, 0x14, 0x17, 0x0f, 0xee, 0x87, 0xa6, 0xe1, 0x67, 0x5b, 0x0a,
+	0x57, 0x47, 0x41, 0xb6, 0x55, 0x3f, 0x4d, 0xe4, 0x3f, 0xc3, 0x50, 0x17, 0x6e, 0x05, 0x6e, 0x8a,
+	0x8b, 0xfc, 0xbb, 0x29, 0xb8, 0x2d, 0xde, 0x34, 0x3c, 0xbc, 0x06, 0x85, 0x55, 0xe1, 0x99, 0x4d,
+	0xc3, 0xc3, 0x6b, 0xc3, 0xb8, 0x37, 0xde, 0x34, 0xfc, 0x92, 0x06, 0x2c, 0x16, 0xff, 0xd9, 0x4d,
+	0xc3, 0x2f, 0x99, 0xc3, 0x71, 0x89, 0xa1, 0xc9, 0xdb, 0xbf, 0x0c, 0x97, 0x73, 0x5a, 0xf3, 0x58,
+	0xe4, 0xdc, 0xa6, 0xdc, 0xf1, 0x2f, 0xa5, 0xe1, 0x6a, 0x43, 0xd3, 0x7c, 0x58, 0x48, 0x59, 0x02,
+	0x96, 0xcb, 0xe0, 0xfc, 0xa6, 0xf9, 0x6e, 0x50, 0x8e, 0x80, 0x90, 0x08, 0x43, 0x61, 0xb4, 0xc3,
+	0x41, 0x20, 0x7b, 0x33, 0x76, 0xc7, 0x53, 0xb7, 0x5f, 0x60, 0x28, 0x42, 0x93, 0xa2, 0x05, 0xfc,
+	0x42, 0x43, 0x11, 0x16, 0x08, 0x78, 0xe2, 0x4b, 0x14, 0x74, 0x27, 0x0e, 0xba, 0x21, 0x75, 0x14,
+	0x07, 0x90, 0xaa, 0x08, 0xa5, 0x34, 0xe8, 0x63, 0xb5, 0xc3, 0xab, 0x5f, 0xa2, 0xa0, 0xab, 0xa9,
+	0x78, 0x08, 0xac, 0x69, 0x06, 0x3b, 0xe1, 0x7d, 0x3c, 0x2d, 0x2a, 0x97, 0x48, 0x89, 0x2a, 0xd8,
+	0x69, 0x18, 0xe0, 0xc9, 0xd4, 0x61, 0x1c, 0x2e, 0x87, 0xbd, 0xc0, 0x8e, 0x88, 0xbd, 0x54, 0x4a,
+	0xac, 0xa6, 0xc2, 0xd5, 0xd1, 0xb4, 0x9f, 0x30, 0xd1, 0x71, 0xf3, 0x9d, 0x54, 0x1d, 0x5c, 0x50,
+	0xd1, 0x97, 0xcb, 0x64, 0x09, 0xe2, 0x38, 0x8a, 0xad, 0xf7, 0x34, 0xae, 0x90, 0xc1, 0xcf, 0x5d,
+	0x0b, 0xcc, 0xa9, 0xb4, 0xab, 0x65, 0xf0, 0xcb, 0x69, 0x70, 0x58, 0x88, 0x28, 0xb6, 0xa3, 0x5e,
+	0xa8, 0xfa, 0xc7, 0x32, 0x19, 0xaf, 0x15, 0x35, 0x91, 0xe1, 0x46, 0x21, 0xd7, 0x8b, 0x22, 0x28,
+	0xa0, 0x70, 0x3c, 0x34, 0xe5, 0x21, 0x08, 0x8d, 0xca, 0x08, 0xdd, 0x68, 0x25, 0xcc, 0x47, 0x29,
+	0xdc, 0x2a, 0xf2, 0xef, 0xa8, 0x14, 0x2c, 0x7d, 0xe9, 0x1d, 0x3b, 0x63, 0x04, 0x1d, 0x88, 0x2a,
+	0x6c, 0xa7, 0xb9, 0xb0, 0xb6, 0x3b, 0x44, 0x15, 0x5a, 0x08, 0x0c, 0xfc, 0x26, 0x3b, 0x06, 0xb2,
+	0xec, 0x74, 0xaa, 0xbb, 0x44, 0x3e, 0x72, 0x18, 0xae, 0xa6, 0x37, 0x79, 0xa3, 0xdd, 0x4e, 0xc7,
+	0x78, 0x72, 0x30, 0x1c, 0x38, 0x84, 0xf1, 0x9e, 0x26, 0x6f, 0xb4, 0x4b, 0x59, 0xb8, 0xa8, 0xde,
+	0xb4, 0xfd, 0x76, 0xab, 0xe3, 0xa4, 0xef, 0x27, 0x8b, 0xe3, 0x60, 0x61, 0x41, 0x99, 0x10, 0xf7,
+	0x35, 0x6d, 0xbf, 0x9d, 0x45, 0xc0, 0x4d, 0x84, 0xa6, 0x1d, 0x2c, 0x6e, 0x11, 0xe4, 0x9d, 0x97,
+	0x07, 0x9a, 0x76, 0xb0, 0x78, 0x81, 0x84, 0xfb, 0x08, 0xa2, 0xbd, 0xda, 0x29, 0x87, 0x6a, 0xeb,
+	0x09, 0x44, 0xa3, 0xf3, 0x90, 0xd1, 0xec, 0x1c, 0x6c, 0x88, 0xc6, 0xc3, 0x46, 0xb3, 0xdd, 0x2c,
+	0x2a, 0xea, 0x11, 0xdd, 0xbd, 0x19, 0xfe, 0xeb, 0x1d, 0x77, 0x44, 0x39, 0x8f, 0x8a, 0xa6, 0xce,
+	0x61, 0x46, 0x21, 0x8f, 0x89, 0xe2, 0x71, 0x53, 0x60, 0xda, 0xab, 0x85, 0x33, 0x91, 0x78, 0x41,
+	0xf5, 0xac, 0x4e, 0xa2, 0x8e, 0x2d, 0xaf, 0x98, 0xb1, 0x41, 0xbf, 0xdb, 0x55, 0x6f, 0x19, 0x10,
+	0x78, 0xe5, 0x0c, 0xc2, 0x06, 0x35, 0xd8, 0xf6, 0xd5, 0x69, 0xf4, 0x55, 0x33, 0x90, 0xbe, 0xc4,
+	0x11, 0x81, 0x78, 0xb5, 0x40, 0x3c, 0xb7, 0x0d, 0x05, 0x78, 0xcd, 0x0c, 0x5a, 0x9a, 0x41, 0xfc,
+	0x8a, 0x0e, 0x61, 0xd7, 0xce, 0x40, 0x34, 0x93, 0xe2, 0x6b, 0x40, 0xd7, 0x39, 0x11, 0x4a, 0x73,
+	0xfd, 0x0c, 0xe6, 0x88, 0xd8, 0x05, 0x05, 0xfc, 0x86, 0x19, 0x58, 0x16, 0x82, 0x73, 0x25, 0x4d,
+	0xc6, 0x8d, 0x4e, 0x46, 0x1a, 0xa9, 0x9b, 0xeb, 0xc4, 0xb8, 0x69, 0x06, 0xb3, 0xb4, 0xc4, 0x92,
+	0xbe, 0x39, 0x87, 0x66, 0xb6, 0x31, 0x22, 0x8d, 0x72, 0xa8, 0x1f, 0x85, 0xd9, 0xcb, 0xc7, 0xd3,
+	0xb7, 0x4a, 0xd9, 0x2e, 0xbb, 0x5a, 0xcd, 0xf1, 0x19, 0xbc, 0x5d, 0x6c, 0xbc, 0x66, 0x7c, 0xbb,
+	0xf5, 0x05, 0xcf, 0x4c, 0x48, 0x1f, 0x98, 0xb6, 0xab, 0xb1, 0x70, 0xdd, 0x39, 0x03, 0x1b, 0x2d,
+	0x57, 0x7f, 0x3b, 0x8c, 0xe7, 0xae, 0x1c, 0xc7, 0xf5, 0xea, 0xd4, 0xdd, 0x33, 0x98, 0x7b, 0x49,
+	0xe9, 0xf3, 0x56, 0xf7, 0xcc, 0x60, 0x5a, 0x25, 0x95, 0xcf, 0x52, 0xdd, 0x3b, 0x83, 0xe8, 0xf3,
+	0xc4, 0x96, 0xb2, 0xfb, 0xf4, 0x28, 0xe0, 0x91, 0xb5, 0x6c, 0x9f, 0xa8, 0x5d, 0x27, 0xf7, 0x57,
+	0x32, 0xe0, 0xb0, 0x93, 0x7e, 0xb0, 0x9f, 0xdb, 0xd0, 0xd3, 0xe4, 0xc1, 0x0a, 0x1c, 0xae, 0xba,
+	0x19, 0xec, 0xab, 0x9c, 0xf8, 0x62, 0x98, 0xbd, 0x6d, 0xf0, 0xf0, 0x04, 0x3c, 0xcc, 0xea, 0x19,
+	0xcc, 0x7d, 0x9b, 0xc7, 0x3b, 0xc9, 0xec, 0xe9, 0x8e, 0x47, 0xd7, 0x64, 0x21, 0x50, 0x48, 0x66,
+	0x61, 0xee, 0x05, 0x8c, 0xc7, 0x1d, 0xdf, 0x11, 0x08, 0x94, 0xfb, 0xae, 0x5f, 0xba, 0x70, 0x7c,
+	0x47, 0xe0, 0x8f, 0xcc, 0x30, 0xeb, 0xdd, 0x0a, 0xbc, 0x75, 0x21, 0x08, 0xcf, 0xe2, 0xcc, 0x1f,
+	0xf5, 0x8c, 0x13, 0x81, 0x2b, 0x6d, 0x06, 0x0a, 0x49, 0xe6, 0x14, 0xd9, 0xcd, 0xdd, 0x6e, 0xa6,
+	0x6c, 0xe1, 0x54, 0xb3, 0x27, 0x2e, 0x3f, 0x5c, 0xa5, 0xdc, 0xf5, 0xb8, 0x32, 0x64, 0xe3, 0x85,
+	0xc2, 0x5f, 0xa8, 0xc0, 0x71, 0x69, 0x48, 0xba, 0xd5, 0xba, 0x0f, 0xcc, 0x34, 0xbd, 0xae, 0xbd,
+	0xb4, 0x26, 0x0b, 0xd7, 0x86, 0x66, 0xb0, 0x12, 0x24, 0x25, 0x37, 0x45, 0x5f, 0x11, 0x58, 0x82,
+	0x82, 0xed, 0x8b, 0xc5, 0xaf, 0x96, 0xc3, 0xf0, 0xb1, 0x89, 0xf2, 0x75, 0x5d, 0xdb, 0x7a, 0xad,
+	0x0c, 0xc4, 0x1b, 0x80, 0x32, 0xdd, 0xaa, 0x6e, 0xd6, 0xbc, 0xb1, 0x16, 0x09, 0x51, 0x3c, 0x22,
+	0xd1, 0x65, 0xa4, 0xae, 0x0a, 0xc2, 0x7e, 0x6b, 0x02, 0x1e, 0x22, 0x7a, 0x64, 0xfc, 0xdd, 0x17,
+	0x60, 0xa8, 0xd3, 0xfe, 0x36, 0x83, 0xe3, 0x3c, 0x8b, 0x22, 0x30, 0x2b, 0x69, 0x3f, 0x49, 0xe5,
+	0x7a, 0xd0, 0xa4, 0x64, 0x5c, 0x13, 0xd2, 0xab, 0x8f, 0x5c, 0x50, 0xd1, 0x4f, 0x96, 0xbd, 0xe7,
+	0x86, 0x70, 0x41, 0x48, 0x9a, 0xb6, 0xc6, 0xf5, 0x97, 0xf7, 0x27, 0xe0, 0xc1, 0xe5, 0xa7, 0x17,
+	0x3a, 0x9b, 0x87, 0x77, 0x37, 0x24, 0x0f, 0xfb, 0x3e, 0x4b, 0xc4, 0xfe, 0x09, 0xed, 0x10, 0xff,
+	0x70, 0x02, 0x1e, 0x02, 0x7f, 0x64, 0x91, 0x71, 0xde, 0x62, 0xf9, 0xb8, 0x14, 0xc5, 0xfb, 0x1b,
+	0xa2, 0xf8, 0x2b, 0x6e, 0xb1, 0x7c, 0xba, 0x06, 0x07, 0xaf, 0x70, 0xcc, 0x60, 0xeb, 0x3f, 0xc9,
+	0x2d, 0x96, 0xcf, 0x27, 0xa3, 0xe2, 0x12, 0xd1, 0x64, 0x54, 0x5c, 0x25, 0x92, 0xa9, 0x5c, 0x79,
+	0x37, 0xe6, 0xab, 0x35, 0x59, 0xf0, 0x0d, 0x8a, 0xfc, 0xae, 0x04, 0xed, 0x85, 0xbe, 0xd8, 0x60,
+	0x7d, 0x3f, 0x1c, 0xa4, 0x3e, 0xff, 0x24, 0xc6, 0x6e, 0xb3, 0x08, 0x68, 0x9f, 0x34, 0xfe, 0x7d,
+	0xf7, 0xc9, 0xe9, 0x78, 0x2d, 0x64, 0x72, 0x3a, 0x55, 0x66, 0xcf, 0x59, 0x84, 0x4e, 0xe6, 0x5a,
+	0x65, 0xb8, 0x61, 0x8d, 0xd3, 0x8c, 0xbd, 0x66, 0x79, 0x30, 0x2b, 0xa2, 0xb7, 0xf7, 0x5e, 0x83,
+	0x83, 0x87, 0x46, 0x66, 0xad, 0x7d, 0x93, 0x23, 0xb0, 0x77, 0xdf, 0x4a, 0x06, 0xee, 0x20, 0xcd,
+	0xb2, 0x72, 0xaa, 0x0a, 0xec, 0xdd, 0x7f, 0x2d, 0x12, 0x6e, 0x1c, 0xcd, 0x5a, 0x2b, 0x8e, 0x2b,
+	0xb0, 0xf7, 0x80, 0x6a, 0x0a, 0x6e, 0x21, 0x39, 0x8b, 0xca, 0xc5, 0xfe, 0x1e, 0xb4, 0x16, 0x09,
+	0xf7, 0x93, 0x66, 0x79, 0xea, 0xae, 0x11, 0xd8, 0x7b, 0xc8, 0x04, 0x3c, 0x3c, 0x59, 0x32, 0x0b,
+	0xff, 0xa1, 0xc5, 0xb3, 0xb7, 0x12, 0x44, 0xc7, 0x23, 0x94, 0xb3, 0xb0, 0x78, 0x13, 0x57, 0x40,
+	0xb6, 0xb1, 0x68, 0x1d, 0x3e, 0xcb, 0x9b, 0xb9, 0x5c, 0x58, 0xba, 0x8e, 0x16, 0x3c, 0x42, 0x64,
+	0xca, 0x22, 0x18, 0xf7, 0x5e, 0x4c, 0xc7, 0xe1, 0x84, 0x5c, 0xf8, 0x0e, 0xdd, 0xb2, 0x65, 0x9d,
+	0x51, 0x1f, 0x2d, 0xad, 0xb5, 0x38, 0x6c, 0x99, 0xf0, 0x4e, 0x5f, 0x2d, 0x90, 0x5b, 0x66, 0x79,
+	0x65, 0x28, 0x67, 0x66, 0x5b, 0xad, 0x63, 0x9c, 0x12, 0x60, 0x45, 0xc5, 0x1f, 0x57, 0x4d, 0x81,
+	0xcb, 0xb0, 0xaa, 0xe7, 0xe0, 0x35, 0x9c, 0xb5, 0x36, 0x15, 0x59, 0x9d, 0xd4, 0x01, 0x61, 0xa4,
+	0xd6, 0xb4, 0x13, 0x67, 0x6d, 0xa3, 0xcb, 0x24, 0x4f, 0x9f, 0x34, 0xcb, 0x7b, 0x86, 0x9c, 0x05,
+	0x35, 0x52, 0xfe, 0xf4, 0x93, 0x9d, 0xfd, 0x93, 0xd0, 0xc6, 0x0d, 0xa7, 0x26, 0x46, 0x18, 0xd4,
+	0x44, 0x4c, 0x78, 0x1f, 0x67, 0x79, 0xc1, 0xe2, 0xfa, 0xe0, 0x84, 0x52, 0x8d, 0xc9, 0xf4, 0xd6,
+	0x59, 0x6b, 0x03, 0x94, 0x3f, 0x47, 0x3a, 0xb5, 0x1c, 0xc6, 0x8b, 0x94, 0xb3, 0xac, 0xc4, 0x4d,
+	0xb8, 0x28, 0x1c, 0xd4, 0xb0, 0xd3, 0x67, 0xad, 0x5d, 0x9d, 0xa2, 0x1a, 0xf8, 0x19, 0x76, 0x56,
+	0x59, 0xd7, 0xb2, 0xf0, 0xf4, 0x02, 0xbf, 0xcb, 0x7b, 0x86, 0x33, 0x67, 0xe1, 0xcc, 0x2e, 0x52,
+	0xf1, 0x54, 0x91, 0xb1, 0x43, 0x3a, 0xab, 0x4c, 0xd8, 0x54, 0xe9, 0x5d, 0xbf, 0x2f, 0xcf, 0xd5,
+	0x9e, 0x2d, 0x23, 0xef, 0x3a, 0xa5, 0xa0, 0xea, 0x9d, 0x33, 0xeb, 0xb0, 0x0c, 0x1c, 0xa7, 0x14,
+	0xe7, 0x4e, 0xc0, 0x83, 0x4f, 0x52, 0xa4, 0xb1, 0xfc, 0x94, 0xe2, 0xfc, 0x6a, 0x0a, 0xfc, 0x92,
+	0xd2, 0xc0, 0x35, 0x4f, 0x29, 0x2e, 0x98, 0x88, 0x89, 0x0b, 0x5a, 0xd2, 0xbb, 0x6b, 0x9d, 0x52,
+	0x5c, 0x34, 0x09, 0x11, 0x97, 0xb6, 0x44, 0x87, 0x58, 0x4f, 0x1f, 0x76, 0xbb, 0xe3, 0xb0, 0x1b,
+	0xf5, 0xe0, 0xb3, 0x57, 0x13, 0x19, 0x6f, 0xb3, 0xc8, 0xac, 0x77, 0x66, 0xaa, 0xde, 0xa1, 0xd7,
+	0x35, 0xb8, 0x64, 0x52, 0x32, 0xae, 0x7d, 0xcd, 0xe2, 0xac, 0x62, 0xc2, 0x93, 0x8d, 0xcb, 0x26,
+	0x66, 0xe3, 0x99, 0x97, 0xdc, 0x8c, 0xd7, 0x3f, 0x24, 0x00, 0x1f, 0x8c, 0x8c, 0xa3, 0xdf, 0x51,
+	0x4b, 0x1b, 0xba, 0x27, 0xea, 0x05, 0xd9, 0x5a, 0xb1, 0xdf, 0x5c, 0x25, 0x85, 0x8a, 0xd8, 0x7f,
+	0x8e, 0x37, 0xb8, 0xb0, 0x0f, 0xf5, 0x6f, 0x9d, 0xe0, 0x88, 0xcd, 0x0d, 0xe1, 0x70, 0x6d, 0x8e,
+	0x77, 0x88, 0x92, 0xb1, 0xa6, 0xe0, 0xc1, 0xe5, 0x39, 0x36, 0xd8, 0x75, 0x71, 0x58, 0x05, 0x0b,
+	0x5f, 0xb1, 0xec, 0xcd, 0x71, 0x13, 0xf5, 0xd7, 0xf9, 0x70, 0x10, 0xb2, 0x49, 0x77, 0xc8, 0x1c,
+	0x6b, 0x98, 0xac, 0x74, 0xbd, 0x33, 0x3f, 0x54, 0x30, 0x5c, 0xef, 0xc4, 0xc6, 0x46, 0x63, 0x87,
+	0x49, 0xa6, 0x46, 0x5c, 0xb3, 0x06, 0x0f, 0x97, 0x66, 0xb5, 0xfd, 0x85, 0x1c, 0x74, 0x84, 0xe4,
+	0xa9, 0x7e, 0x96, 0xc5, 0xc2, 0x8e, 0x94, 0x64, 0x7d, 0x3f, 0x0f, 0x1d, 0xa5, 0x93, 0xe1, 0x67,
+	0x29, 0x2c, 0xec, 0xe8, 0x39, 0xd6, 0x74, 0xd6, 0xa3, 0xef, 0x1a, 0xde, 0x22, 0x1d, 0x69, 0xde,
+	0x3b, 0xcb, 0x1e, 0x4c, 0x96, 0xc4, 0x96, 0x97, 0x4a, 0xc3, 0xc7, 0x4a, 0xb9, 0xb8, 0xe3, 0x6f,
+	0x27, 0x3d, 0x6e, 0x8e, 0x35, 0x0f, 0xba, 0x0e, 0x97, 0x98, 0x6d, 0xc2, 0xf1, 0x42, 0x70, 0xbd,
+	0x4d, 0x8d, 0x45, 0xa9, 0x8a, 0x80, 0x00, 0xdd, 0x39, 0xde, 0xad, 0xa9, 0xd1, 0xc9, 0x5e, 0x5a,
+	0xd7, 0x65, 0x9c, 0x24, 0x59, 0xe8, 0xc1, 0xcd, 0x3d, 0xdc, 0x7e, 0x72, 0x15, 0x01, 0x6f, 0x22,
+	0xcb, 0x48, 0xaa, 0x97, 0x60, 0xed, 0x26, 0xfc, 0x49, 0x86, 0x44, 0x3f, 0x48, 0xa9, 0xa1, 0xad,
+	0xd2, 0x35, 0xf0, 0x18, 0xdb, 0xc9, 0x4e, 0x95, 0x3c, 0xc5, 0xb1, 0x6f, 0x82, 0xa7, 0x69, 0x79,
+	0x54, 0xeb, 0x89, 0x05, 0x9e, 0x2e, 0x2d, 0x4e, 0xc8, 0xa4, 0x4c, 0xd2, 0x10, 0x57, 0x49, 0x4c,
+	0xc6, 0x19, 0x73, 0xbc, 0x1c, 0x69, 0xd7, 0x85, 0x8d, 0x9f, 0x29, 0x55, 0xc6, 0x71, 0xa4, 0x05,
+	0x9d, 0xa5, 0x85, 0x7d, 0x34, 0xc8, 0x0b, 0xc2, 0xd9, 0x73, 0xec, 0x84, 0xc1, 0x8f, 0xba, 0x65,
+	0x6f, 0x09, 0x9f, 0x33, 0x87, 0x08, 0xa4, 0xe2, 0xf3, 0xc0, 0xe7, 0xba, 0x00, 0x2c, 0x10, 0xa2,
+	0x12, 0xb2, 0xa7, 0xf2, 0xf3, 0x3f, 0x99, 0x77, 0x7e, 0x35, 0x05, 0x0b, 0x84, 0x9e, 0xff, 0xc8,
+	0x3e, 0xb7, 0xa1, 0xbc, 0x40, 0xba, 0xa9, 0xef, 0x6f, 0xb6, 0xef, 0x0b, 0x0b, 0xe3, 0x42, 0x49,
+	0x4f, 0x93, 0x49, 0x1d, 0x51, 0x18, 0xee, 0xc7, 0x8b, 0x4a, 0x51, 0xa8, 0x7d, 0x5b, 0x24, 0xec,
+	0xdd, 0xf1, 0xc5, 0x65, 0x20, 0x82, 0x6f, 0x65, 0x3a, 0x19, 0xa0, 0x79, 0x16, 0x55, 0x0e, 0xe3,
+	0xfc, 0xc9, 0x01, 0xf3, 0x86, 0x1a, 0x21, 0xb6, 0xe5, 0x30, 0x42, 0x6b, 0xe7, 0x78, 0x13, 0xab,
+	0x84, 0x0e, 0xb7, 0x46, 0xf2, 0xaf, 0x6b, 0x5e, 0x29, 0x1d, 0xaf, 0x38, 0xae, 0xdb, 0xd6, 0x57,
+	0x55, 0x53, 0x70, 0xed, 0x57, 0x28, 0xc6, 0x4b, 0x9f, 0xfc, 0x13, 0x16, 0xb2, 0x0a, 0x5d, 0x53,
+	0x4d, 0xc1, 0x75, 0x5f, 0x53, 0x08, 0xd8, 0xc5, 0x97, 0x7b, 0x59, 0xf4, 0xba, 0x6a, 0x0a, 0x2e,
+	0xfe, 0x8a, 0x24, 0x98, 0x9b, 0x37, 0xeb, 0xb5, 0xcd, 0x1b, 0x2a, 0x19, 0xb8, 0xf4, 0x2b, 0x53,
+	0x46, 0x43, 0xda, 0x46, 0xbe, 0xc9, 0x5a, 0x3c, 0x46, 0x88, 0xed, 0xcd, 0xde, 0x6c, 0x2e, 0x03,
+	0xf1, 0x6e, 0xf3, 0x1c, 0xdb, 0x3c, 0xb9, 0x88, 0x64, 0x63, 0xcc, 0x69, 0x44, 0x6e, 0xd3, 0xdd,
+	0x1d, 0x24, 0x92, 0x49, 0x8e, 0x72, 0xe7, 0x1c, 0x02, 0xf4, 0x78, 0x6a, 0x6a, 0xf7, 0xf4, 0x5d,
+	0xf2, 0xb9, 0x6f, 0x3d, 0x98, 0x7f, 0xb7, 0x88, 0xb6, 0xb5, 0x8f, 0x93, 0x69, 0x7e, 0xcf, 0x9c,
+	0xe1, 0xb1, 0x1e, 0x85, 0xdd, 0x71, 0x7b, 0x95, 0x57, 0x55, 0xf1, 0xe5, 0xdf, 0x5b, 0xc9, 0x40,
+	0x48, 0xab, 0x68, 0xa0, 0x6e, 0xdb, 0x74, 0xf1, 0xf2, 0x9e, 0x6c, 0x69, 0xfa, 0xfe, 0x0a, 0x1c,
+	0x3e, 0xf1, 0x22, 0x4e, 0xdb, 0x0e, 0xe0, 0xd4, 0x82, 0x07, 0xa5, 0x05, 0x02, 0x5a, 0x8a, 0xea,
+	0x21, 0x41, 0xd1, 0x1b, 0x26, 0x05, 0x3f, 0x63, 0x23, 0x5b, 0x00, 0xb5, 0x07, 0xe1, 0x9b, 0x72,
+	0x8f, 0x58, 0xab, 0x7c, 0x1c, 0x24, 0xe3, 0xfe, 0x6a, 0xb2, 0xa4, 0xba, 0xf1, 0xd1, 0x39, 0xfb,
+	0x04, 0x41, 0xb9, 0x6b, 0x0d, 0xc3, 0xef, 0x31, 0x99, 0x57, 0xf9, 0x1f, 0xd6, 0x31, 0x38, 0x8f,
+	0x4b, 0xb1, 0xa8, 0x94, 0xfc, 0x34, 0xe3, 0x13, 0x7a, 0x12, 0x04, 0xe9, 0x78, 0x69, 0x14, 0xc4,
+	0xab, 0xf2, 0x74, 0x9b, 0x16, 0xce, 0x27, 0xab, 0x29, 0x70, 0x83, 0x4b, 0xe5, 0xf1, 0x6e, 0x5e,
+	0xf6, 0xfc, 0x1b, 0x1c, 0xe1, 0x32, 0x58, 0xa5, 0x8f, 0xd5, 0x3d, 0x53, 0xc9, 0x80, 0x63, 0x5c,
+	0x77, 0x40, 0xc9, 0xa3, 0x6e, 0xcf, 0x55, 0x11, 0xf0, 0x14, 0xf4, 0x9c, 0x9c, 0xb1, 0x38, 0x08,
+	0x09, 0x77, 0xc6, 0x0b, 0x32, 0xea, 0x86, 0xb7, 0xa0, 0xdb, 0xce, 0xdc, 0xca, 0x2f, 0x56, 0xe0,
+	0x88, 0x47, 0x95, 0x86, 0xa0, 0x8b, 0x4d, 0x27, 0xae, 0x8c, 0xfd, 0xcb, 0x32, 0x1d, 0xcd, 0x37,
+	0xaa, 0x64, 0x5a, 0xbc, 0x32, 0x57, 0x74, 0xff, 0x2e, 0x04, 0xd6, 0x33, 0x54, 0xaf, 0x56, 0x53,
+	0xe0, 0x18, 0x9f, 0x63, 0xcb, 0x61, 0xad, 0xa7, 0xa8, 0x5e, 0x9b, 0x84, 0x08, 0x87, 0xf9, 0xdc,
+	0x84, 0x6e, 0x64, 0xc4, 0xa0, 0xca, 0x0a, 0x60, 0xbf, 0x17, 0x22, 0x6d, 0x7c, 0x33, 0x5b, 0xdf,
+	0x93, 0x45, 0x15, 0xf3, 0xa6, 0xcd, 0x93, 0xb7, 0x04, 0xcb, 0xde, 0xe2, 0xd0, 0x53, 0xea, 0x6d,
+	0x69, 0x38, 0xaf, 0x26, 0xb9, 0xa7, 0x40, 0xe0, 0x1a, 0xd7, 0x2a, 0x92, 0xb4, 0x40, 0xdb, 0x1f,
+	0x64, 0x7b, 0xf1, 0x77, 0xe6, 0x5c, 0x1e, 0x61, 0xe3, 0x3a, 0x2b, 0x3f, 0x74, 0xfe, 0xae, 0xde,
+	0xcc, 0x51, 0xed, 0x86, 0xb2, 0xd8, 0x1b, 0xb3, 0xe8, 0x3d, 0xb7, 0x1e, 0x86, 0x2b, 0x5c, 0x66,
+	0x7d, 0xf6, 0xd9, 0x58, 0xce, 0xdf, 0x2f, 0x45, 0xe1, 0xf6, 0x36, 0x35, 0x1a, 0x18, 0x6c, 0x80,
+	0x68, 0x45, 0xfe, 0x41, 0x25, 0x03, 0x11, 0xaf, 0x22, 0x9d, 0x9a, 0x61, 0x07, 0x23, 0x7c, 0x54,
+	0x81, 0x23, 0xea, 0x55, 0x46, 0xce, 0xc6, 0x25, 0x12, 0xe1, 0x93, 0x72, 0x18, 0x51, 0xaf, 0x22,
+	0xd9, 0x2a, 0xa8, 0x31, 0x53, 0x88, 0x78, 0x24, 0xcb, 0xda, 0x87, 0x67, 0x3d, 0xa0, 0x87, 0xf7,
+	0x73, 0x51, 0x60, 0xc6, 0x9d, 0x96, 0x7c, 0xd7, 0x7f, 0x21, 0x22, 0x60, 0xdd, 0x1a, 0xb0, 0xb2,
+	0xf9, 0xd2, 0x52, 0xbc, 0x26, 0x8f, 0x32, 0xf8, 0x2a, 0x33, 0x96, 0xfc, 0xbc, 0xca, 0xfe, 0x67,
+	0x4e, 0xbe, 0x1c, 0x94, 0xdd, 0xd6, 0x73, 0x0b, 0x91, 0xb9, 0xd1, 0x4c, 0xca, 0x7b, 0xf7, 0xf5,
+	0xdc, 0xb9, 0x3a, 0x54, 0xce, 0x4e, 0xbc, 0xc7, 0xfa, 0xfc, 0xf0, 0xe5, 0x37, 0x5e, 0x7b, 0x56,
+	0x32, 0xf0, 0xaa, 0xf5, 0x7a, 0x3e, 0x38, 0x6c, 0xa7, 0xb9, 0xfe, 0xdd, 0x7b, 0x3d, 0x3b, 0x20,
+	0xca, 0x02, 0x33, 0x34, 0x73, 0x9f, 0xf5, 0x62, 0xd5, 0x4f, 0x70, 0x33, 0xed, 0xfd, 0x0d, 0x13,
+	0x92, 0x21, 0xc2, 0x1b, 0xc4, 0xa3, 0x52, 0x7a, 0x53, 0xf1, 0x83, 0x6a, 0x0a, 0x84, 0xb8, 0xba,
+	0x48, 0xdb, 0xdf, 0xfe, 0xd1, 0xa4, 0x64, 0x88, 0xf7, 0x06, 0xdc, 0x10, 0xfc, 0x97, 0x6e, 0x15,
+	0x7e, 0xf2, 0x2f, 0xa6, 0xc1, 0x44, 0xd8, 0x20, 0x4e, 0xaa, 0xf2, 0x4e, 0xc3, 0x9c, 0xd8, 0xd0,
+	0xfa, 0x8d, 0xb7, 0xa1, 0x94, 0x27, 0x9b, 0x6a, 0x92, 0x81, 0x4c, 0x45, 0x7e, 0x5e, 0xdd, 0x62,
+	0xdb, 0x0c, 0xf8, 0x62, 0x52, 0x32, 0x22, 0xc5, 0x37, 0xf0, 0x5e, 0xb0, 0xfc, 0x72, 0x1c, 0x55,
+	0xe0, 0x9f, 0xd5, 0xad, 0xd3, 0xca, 0x66, 0xb7, 0x8d, 0xe2, 0x12, 0x5b, 0xeb, 0xf2, 0xde, 0xee,
+	0x1b, 0x2b, 0x73, 0x84, 0x7b, 0x0f, 0x8e, 0x98, 0x09, 0x78, 0xf0, 0xca, 0x6c, 0x14, 0x77, 0x41,
+	0xcc, 0xbf, 0xb5, 0x65, 0x9d, 0xe3, 0x1c, 0xa8, 0x2b, 0x96, 0xc1, 0xca, 0x78, 0x40, 0x8d, 0x0c,
+	0xe6, 0x41, 0x1b, 0xc5, 0x05, 0x97, 0x0b, 0x02, 0x57, 0x76, 0x64, 0xe6, 0xc7, 0x3d, 0x78, 0x12,
+	0x22, 0xe2, 0x9e, 0x37, 0xb6, 0x7e, 0xed, 0xfd, 0x32, 0x59, 0xf3, 0x6a, 0x8f, 0x51, 0x89, 0x43,
+	0x37, 0x22, 0x12, 0x7d, 0xf2, 0xdb, 0x40, 0x87, 0xfd, 0x2b, 0x09, 0xf0, 0x36, 0xbb, 0xf4, 0x97,
+	0xc4, 0xa3, 0xd3, 0xa2, 0xac, 0x62, 0x5d, 0xe0, 0x0d, 0x2a, 0x87, 0xf1, 0x42, 0xbb, 0x0b, 0x56,
+	0x51, 0x30, 0x70, 0x0a, 0x95, 0xc3, 0x78, 0xa7, 0xbd, 0x1c, 0xc6, 0x6b, 0x6d, 0x1b, 0x45, 0x25,
+	0x1a, 0xb0, 0x75, 0x35, 0xe6, 0x98, 0x4a, 0x06, 0xa2, 0x9b, 0x2b, 0x19, 0x54, 0xca, 0x71, 0xe5,
+	0x2d, 0x24, 0xf8, 0x84, 0x8d, 0xec, 0xac, 0x34, 0x61, 0xe5, 0x10, 0x18, 0x0d, 0xc2, 0x34, 0x77,
+	0x31, 0xe6, 0xc4, 0x89, 0xd9, 0x08, 0x85, 0x16, 0x61, 0x34, 0xd9, 0x19, 0xcf, 0x90, 0x83, 0x93,
+	0xf3, 0xcd, 0x28, 0xfc, 0x28, 0xdc, 0x29, 0x95, 0x0c, 0x1c, 0x55, 0x54, 0x32, 0xa8, 0x94, 0xad,
+	0x1b, 0xe5, 0x90, 0xa9, 0xd0, 0x59, 0xfa, 0xfe, 0xc2, 0xa9, 0x6b, 0x70, 0x10, 0x26, 0xbd, 0xf1,
+	0xff, 0x7f, 0xfd, 0xf7, 0xbb, 0xec, 0xfc, 0x87, 0x9d, 0x7f, 0xf3, 0x9f, 0x01, 0x00, 0x00, 0xff,
+	0xff, 0x1b, 0x1a, 0xa0, 0x97, 0xca, 0x81, 0x00, 0x00,
 }

+ 35 - 1
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/messagedef.proto

@@ -699,7 +699,39 @@ enum protoMsgId{
 	SC_COMBINE_SERVER_ONLINE_NTF     = 1711;		//	上线合服通知 **SCCombineServerOnlineNtf **login.proto ** [SCCombineServerOnlineNtf]
 	CS_COMBINE_SERVER_INFO_REQ       = 1712;		//	合服公告内容请求 **CSCombineServerInfoReq **login.proto **game [CSCombineServerInfoReq]
 	SC_COMBINE_SERVER_INFO_ACK       = 1713;		//	SCCombineServerInfoAck **SCCombineServerInfoAck **login.proto ** [SCCombineServerInfoAck]
-	SS_WEB_GM_CHAT_MSG_NTF           = 3000;		//	SSWebGMChatMsgNtf **SSWebGMChatMsgNtf **logic.proto **db [SSWebGMChatMsgNtf]
+	CS_CREDIT_RECHARGE_SHOP_ITEM_BUY_REQ = 1714;		//	bt服务器版本使用 **CSCreditRechargeShopItemBuyReq **login.proto **game [CSCreditRechargeShopItemBuyReq]
+	SC_CREDIT_RECHARGE_SHOP_ITEM_BUY_ACK = 1715;		//	SCCreditRechargeShopItemBuyAck **SCCreditRechargeShopItemBuyAck **login.proto ** [SCCreditRechargeShopItemBuyAck]
+	SC_RUNE_BASE_DATA_NTF            = 1716;		//	特权商店数据变化通知 **SCRuneBaseDataNtf **login.proto ** [SCRuneBaseDataNtf]
+	CS_RUNE_SPECIAL_PRIVILEGE_REWARD_REQ = 1717;		//	特权卡商店每日礼包领取 **CSRuneSpecialPrivilegeRewardReq **login.proto **game [CSRuneSpecialPrivilegeRewardReq]
+	SC_RUNE_SPECIAL_PRIVILEGE_REWARD_ACK = 1718;		//	SCRuneSpecialPrivilegeRewardAck **SCRuneSpecialPrivilegeRewardAck **login.proto ** [SCRuneSpecialPrivilegeRewardAck]
+	SC_PLAYER_BATTLE_ACCT_TIME_NTF   = 1719;		//	战斗加速时间通知 **SCPlayerBattleAcctTimeNtf **login.proto ** [SCPlayerBattleAcctTimeNtf]
+	SC_ERROR_MESSAGE_NTF             = 1720;		//	通用错误通知协议 **SCErrorMessageNtf **login.proto ** [SCErrorMessageNtf]
+	CS_CLIMBING_TOWER_DAY_REWARD_REQ = 1723;		//	试炼之塔试炼馈赠(每天获取一次奖励) **CSClimbingTowerDayRewardReq **login.proto **game [CSClimbingTowerDayRewardReq]
+	SC_CLIMBING_TOWER_DAY_REWARD_ACK = 1724;		//	SCClimbingTowerDayRewardAck **SCClimbingTowerDayRewardAck **login.proto ** [SCClimbingTowerDayRewardAck]
+	CS_BOLI_SHOP_LEVEL_UP_REQ        = 1725;		//	波利商城 **CSBoliShopLevelUpReq **login.proto **game [CSBoliShopLevelUpReq]
+	CS_BOLI_SHOP_REWARD_REQ          = 1727;		//	波利商城选择特权礼包 **CSBoliShopRewardReq **login.proto **game [CSBoliShopRewardReq]
+	SC_BOLI_SHOP_REWARD_ACK          = 1728;		//	SCBoliShopRewardAck **SCBoliShopRewardAck **login.proto ** [SCBoliShopRewardAck]
+	CS_BOLI_SHOP_BUY_REQ             = 1729;		//	波利商城购买 **CSBoliShopBuyReq **login.proto **game [CSBoliShopBuyReq]
+	SC_BOLI_DATA_CHANGE_NTF          = 1733;		//	SCBoliDataChangeNtf **SCBoliDataChangeNtf **login.proto ** [SCBoliDataChangeNtf]
+	SC_BOLI_SHOP_LEVEL_UP_ACK        = 1734;		//	SCBoliShopLevelUpAck **SCBoliShopLevelUpAck **login.proto ** [SCBoliShopLevelUpAck]
+	SC_BOLI_SHOP_BUY_ACK             = 1735;		//	SCBoliShopBuyAck **SCBoliShopBuyAck **login.proto ** [SCBoliShopBuyAck]
+	CS_BT_SHOP_INFO_REQ              = 1736;		//	RO币礼包商城 **CSBTShopInfoReq **login.proto **game [CSBTShopInfoReq]
+	SC_BT_SHOP_INFO_ACK              = 1737;		//	SCBTShopInfoAck **SCBTShopInfoAck **login.proto ** [SCBTShopInfoAck]
+	CS_BOLI_SHOP_INFO_REQ            = 1738;		//	获取波利商店信息 **CSBoliShopInfoReq **login.proto **game [CSBoliShopInfoReq]
+	SC_BOLI_SHOP_INFO_ACK            = 1739;		//	SCBoliShopInfoAck **SCBoliShopInfoAck **login.proto ** [SCBoliShopInfoAck]
+	CS_BT_RO_COIN_SHOP_ITEM_BUY_REQ  = 1740;		//	RO币礼包购买 **CSBTRoCoinShopItemBuyReq **login.proto **game [CSBTRoCoinShopItemBuyReq]
+	SC_BT_RO_COIN_SHOP_ITEM_BUY_ACK  = 1741;		//	SCBTRoCoinShopItemBuyAck **SCBTRoCoinShopItemBuyAck **login.proto ** [SCBTRoCoinShopItemBuyAck]
+	CS_ACTIVITY_SMASH_EGGS_REQ       = 1742;		//	bt砸蛋活动 **CSActivitySmashEggsReq **login.proto **game [CSActivitySmashEggsReq]
+	SC_ACTIVITY_SMASH_EGGS_ACK       = 1743;		//	SCActivitySmashEggsAck **SCActivitySmashEggsAck **login.proto ** [SCActivitySmashEggsAck]
+	CS_ACTIVITY_SMASH_EGGS_MSG_REQ   = 1744;		//	砸蛋记录获取 **CSActivitySmashEggsMsgReq **login.proto **game [CSActivitySmashEggsMsgReq]
+	SC_ACTIVITY_SMASH_EGGS_MSG_ACK   = 1745;		//	SCActivitySmashEggsMsgAck **SCActivitySmashEggsMsgAck **login.proto ** [SCActivitySmashEggsMsgAck]
+	SC_BT_FIRST_RECHARGE_NTF         = 1746;		//	//超值首充&百元大礼包 **SCBTFirstRechargeNtf **login.proto ** [SCBTFirstRechargeNtf]
+	CS_BT_FIRST_RECHARGE_REWARD_REQ  = 1747;		//	超值首充奖励获取 **CSBTFirstRechargeRewardReq **login.proto **game [CSBTFirstRechargeRewardReq]
+	SC_BT_FIRST_RECHARGE_REWARD_ACK  = 1748;		//	SCBTFirstRechargeRewardAck **SCBTFirstRechargeRewardAck **login.proto ** [SCBTFirstRechargeRewardAck]
+	SC_BT_RECHARGE100_NTF            = 1749;		//	百元大礼包领取奖励 **SCBTRecharge100Ntf **login.proto ** [SCBTRecharge100Ntf]
+	CS_BT_RECHARGE100_REWARD_REQ     = 1750;		//	CSBTRecharge100RewardReq **CSBTRecharge100RewardReq **login.proto **game [CSBTRecharge100RewardReq]
+	SC_BT_RECHARGE100_REWARD_ACK     = 1751;		//	SCBTRecharge100RewardAck **SCBTRecharge100RewardAck **login.proto ** [SCBTRecharge100RewardAck]
+	SS_WEB_GM_CHAT_MSG_NTF           = 3000;		//	SSWebGMChatMsgNtf **SSWebGMChatMsgNtf **logic.proto **db,social,gmweb [SSWebGMChatMsgNtf]
 	SS_WEB_GM_ADD_MAIL_NTF           = 3001;		//	SSWebGMAddMailNtf **SSWebGMAddMailNtf **logic.proto **social,game,db [SSWebGMAddMailNtf]
 	SS_WEB_GM_BAN_NTF                = 3002;		//	SSWebGMBanNtf **SSWebGMBanNtf **logic.proto **social,game [SSWebGMBanNtf]
 	SS_WEB_GM_NOTICE_NTF             = 3003;		//	SSWebGMNoticeNtf **SSWebGMNoticeNtf **logic.proto **social,game [SSWebGMNoticeNtf]
@@ -949,6 +981,8 @@ enum protoMsgId{
 	SS_WISH_BOX_DATA_SAVE_REQ        = 5122;		//	SSWishBoxDataSaveReq **SSWishBoxDataSaveReq **db.proto **db [SSWishBoxDataSaveReq]
 	SS_GET_RUSH_RANK_REWARD_REQ      = 5123;		//	SSGetRushRankRewardReq **SSGetRushRankRewardReq **db.proto **rank [SSGetRushRankRewardReq]
 	SS_GET_RUSH_RANK_REWARD_ACK      = 5124;		//	SSGetRushRankRewardAck **SSGetRushRankRewardAck **db.proto **game [SSGetRushRankRewardAck]
+	SS_BT_DATA_SAVE_NTF              = 5125;		//	bt服务版 **SSBTDataSaveNtf **db.proto **db [SSBTDataSaveNtf]
+	SS_ACTIVITY_SMASH_EGGS_MSG_SAVE_NTF = 5126;		//	SSActivitySmashEggsMsgSaveNtf **SSActivitySmashEggsMsgSaveNtf **db.proto **db [SSActivitySmashEggsMsgSaveNtf]
 	SS_CROSS_YUAN_HANG_TRIAL_VIEW_LIST_REQ = 6002;		//	远航试炼 **SSCrossYuanHangTrialViewListReq **crossserver.proto **crossserver [SSCrossYuanHangTrialViewListReq]
 	SS_CROSS_YUAN_HANG_TRIAL_VIEW_LIST_ACK = 6003;		//	SSCrossYuanHangTrialViewListAck **SSCrossYuanHangTrialViewListAck **crossserver.proto **game [SSCrossYuanHangTrialViewListAck]
 	SS_CROSS_YUAN_HANG_TRIAL_REQ     = 6004;		//	发起远航试炼 **SSCrossYuanHangTrialReq **crossserver.proto **crossserver [SSCrossYuanHangTrialReq]

+ 32 - 0
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/messagedefclient.proto

@@ -677,5 +677,37 @@ enum protoMsgId{
 	SC_COMBINE_SERVER_ONLINE_NTF     = 1711;		//	上线合服通知 **SCCombineServerOnlineNtf **login.proto ** [SCCombineServerOnlineNtf]
 	CS_COMBINE_SERVER_INFO_REQ       = 1712;		//	合服公告内容请求 **CSCombineServerInfoReq **login.proto **game [CSCombineServerInfoReq]
 	SC_COMBINE_SERVER_INFO_ACK       = 1713;		//	SCCombineServerInfoAck **SCCombineServerInfoAck **login.proto ** [SCCombineServerInfoAck]
+	CS_CREDIT_RECHARGE_SHOP_ITEM_BUY_REQ = 1714;		//	bt服务器版本使用 **CSCreditRechargeShopItemBuyReq **login.proto **game [CSCreditRechargeShopItemBuyReq]
+	SC_CREDIT_RECHARGE_SHOP_ITEM_BUY_ACK = 1715;		//	SCCreditRechargeShopItemBuyAck **SCCreditRechargeShopItemBuyAck **login.proto ** [SCCreditRechargeShopItemBuyAck]
+	SC_RUNE_BASE_DATA_NTF            = 1716;		//	特权商店数据变化通知 **SCRuneBaseDataNtf **login.proto ** [SCRuneBaseDataNtf]
+	CS_RUNE_SPECIAL_PRIVILEGE_REWARD_REQ = 1717;		//	特权卡商店每日礼包领取 **CSRuneSpecialPrivilegeRewardReq **login.proto **game [CSRuneSpecialPrivilegeRewardReq]
+	SC_RUNE_SPECIAL_PRIVILEGE_REWARD_ACK = 1718;		//	SCRuneSpecialPrivilegeRewardAck **SCRuneSpecialPrivilegeRewardAck **login.proto ** [SCRuneSpecialPrivilegeRewardAck]
+	SC_PLAYER_BATTLE_ACCT_TIME_NTF   = 1719;		//	战斗加速时间通知 **SCPlayerBattleAcctTimeNtf **login.proto ** [SCPlayerBattleAcctTimeNtf]
+	SC_ERROR_MESSAGE_NTF             = 1720;		//	通用错误通知协议 **SCErrorMessageNtf **login.proto ** [SCErrorMessageNtf]
+	CS_CLIMBING_TOWER_DAY_REWARD_REQ = 1723;		//	试炼之塔试炼馈赠(每天获取一次奖励) **CSClimbingTowerDayRewardReq **login.proto **game [CSClimbingTowerDayRewardReq]
+	SC_CLIMBING_TOWER_DAY_REWARD_ACK = 1724;		//	SCClimbingTowerDayRewardAck **SCClimbingTowerDayRewardAck **login.proto ** [SCClimbingTowerDayRewardAck]
+	CS_BOLI_SHOP_LEVEL_UP_REQ        = 1725;		//	波利商城 **CSBoliShopLevelUpReq **login.proto **game [CSBoliShopLevelUpReq]
+	CS_BOLI_SHOP_REWARD_REQ          = 1727;		//	波利商城选择特权礼包 **CSBoliShopRewardReq **login.proto **game [CSBoliShopRewardReq]
+	SC_BOLI_SHOP_REWARD_ACK          = 1728;		//	SCBoliShopRewardAck **SCBoliShopRewardAck **login.proto ** [SCBoliShopRewardAck]
+	CS_BOLI_SHOP_BUY_REQ             = 1729;		//	波利商城购买 **CSBoliShopBuyReq **login.proto **game [CSBoliShopBuyReq]
+	SC_BOLI_DATA_CHANGE_NTF          = 1733;		//	SCBoliDataChangeNtf **SCBoliDataChangeNtf **login.proto ** [SCBoliDataChangeNtf]
+	SC_BOLI_SHOP_LEVEL_UP_ACK        = 1734;		//	SCBoliShopLevelUpAck **SCBoliShopLevelUpAck **login.proto ** [SCBoliShopLevelUpAck]
+	SC_BOLI_SHOP_BUY_ACK             = 1735;		//	SCBoliShopBuyAck **SCBoliShopBuyAck **login.proto ** [SCBoliShopBuyAck]
+	CS_BT_SHOP_INFO_REQ              = 1736;		//	RO币礼包商城 **CSBTShopInfoReq **login.proto **game [CSBTShopInfoReq]
+	SC_BT_SHOP_INFO_ACK              = 1737;		//	SCBTShopInfoAck **SCBTShopInfoAck **login.proto ** [SCBTShopInfoAck]
+	CS_BOLI_SHOP_INFO_REQ            = 1738;		//	获取波利商店信息 **CSBoliShopInfoReq **login.proto **game [CSBoliShopInfoReq]
+	SC_BOLI_SHOP_INFO_ACK            = 1739;		//	SCBoliShopInfoAck **SCBoliShopInfoAck **login.proto ** [SCBoliShopInfoAck]
+	CS_BT_RO_COIN_SHOP_ITEM_BUY_REQ  = 1740;		//	RO币礼包购买 **CSBTRoCoinShopItemBuyReq **login.proto **game [CSBTRoCoinShopItemBuyReq]
+	SC_BT_RO_COIN_SHOP_ITEM_BUY_ACK  = 1741;		//	SCBTRoCoinShopItemBuyAck **SCBTRoCoinShopItemBuyAck **login.proto ** [SCBTRoCoinShopItemBuyAck]
+	CS_ACTIVITY_SMASH_EGGS_REQ       = 1742;		//	bt砸蛋活动 **CSActivitySmashEggsReq **login.proto **game [CSActivitySmashEggsReq]
+	SC_ACTIVITY_SMASH_EGGS_ACK       = 1743;		//	SCActivitySmashEggsAck **SCActivitySmashEggsAck **login.proto ** [SCActivitySmashEggsAck]
+	CS_ACTIVITY_SMASH_EGGS_MSG_REQ   = 1744;		//	砸蛋记录获取 **CSActivitySmashEggsMsgReq **login.proto **game [CSActivitySmashEggsMsgReq]
+	SC_ACTIVITY_SMASH_EGGS_MSG_ACK   = 1745;		//	SCActivitySmashEggsMsgAck **SCActivitySmashEggsMsgAck **login.proto ** [SCActivitySmashEggsMsgAck]
+	SC_BT_FIRST_RECHARGE_NTF         = 1746;		//	//超值首充&百元大礼包 **SCBTFirstRechargeNtf **login.proto ** [SCBTFirstRechargeNtf]
+	CS_BT_FIRST_RECHARGE_REWARD_REQ  = 1747;		//	超值首充奖励获取 **CSBTFirstRechargeRewardReq **login.proto **game [CSBTFirstRechargeRewardReq]
+	SC_BT_FIRST_RECHARGE_REWARD_ACK  = 1748;		//	SCBTFirstRechargeRewardAck **SCBTFirstRechargeRewardAck **login.proto ** [SCBTFirstRechargeRewardAck]
+	SC_BT_RECHARGE100_NTF            = 1749;		//	百元大礼包领取奖励 **SCBTRecharge100Ntf **login.proto ** [SCBTRecharge100Ntf]
+	CS_BT_RECHARGE100_REWARD_REQ     = 1750;		//	CSBTRecharge100RewardReq **CSBTRecharge100RewardReq **login.proto **game [CSBTRecharge100RewardReq]
+	SC_BT_RECHARGE100_REWARD_ACK     = 1751;		//	SCBTRecharge100RewardAck **SCBTRecharge100RewardAck **login.proto ** [SCBTRecharge100RewardAck]
 
 }

+ 68 - 0
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/pbbind_gen.go

@@ -151,6 +151,8 @@ var(
 	Handle_DB_SSHeadDataSaveReq  =func(e rocommon.ProcEvent){panic("SSHeadDataSaveReq not implements")}
 	Handle_DB_SSUpdateHeadDataSaveReq  =func(e rocommon.ProcEvent){panic("SSUpdateHeadDataSaveReq not implements")}
 	Handle_DB_SSWishBoxDataSaveReq  =func(e rocommon.ProcEvent){panic("SSWishBoxDataSaveReq not implements")}
+	Handle_DB_SSBTDataSaveNtf  =func(e rocommon.ProcEvent){panic("SSBTDataSaveNtf not implements")}
+	Handle_DB_SSActivitySmashEggsMsgSaveNtf  =func(e rocommon.ProcEvent){panic("SSActivitySmashEggsMsgSaveNtf not implements")}
 	Handle_DB_SSCrossYuanHangTrialLogNtf  =func(e rocommon.ProcEvent){panic("SSCrossYuanHangTrialLogNtf not implements")}
 	Handle_DB_Default		func(e rocommon.ProcEvent)
 )
@@ -517,6 +519,19 @@ var(
 	Handle_GAME_CSPetQiyueBattlePetAttrReq  =func(e rocommon.ProcEvent){panic("CSPetQiyueBattlePetAttrReq not implements")}
 	Handle_GAME_CSCardLevelExchangeReq  =func(e rocommon.ProcEvent){panic("CSCardLevelExchangeReq not implements")}
 	Handle_GAME_CSCombineServerInfoReq  =func(e rocommon.ProcEvent){panic("CSCombineServerInfoReq not implements")}
+	Handle_GAME_CSCreditRechargeShopItemBuyReq  =func(e rocommon.ProcEvent){panic("CSCreditRechargeShopItemBuyReq not implements")}
+	Handle_GAME_CSRuneSpecialPrivilegeRewardReq  =func(e rocommon.ProcEvent){panic("CSRuneSpecialPrivilegeRewardReq not implements")}
+	Handle_GAME_CSClimbingTowerDayRewardReq  =func(e rocommon.ProcEvent){panic("CSClimbingTowerDayRewardReq not implements")}
+	Handle_GAME_CSBoliShopLevelUpReq  =func(e rocommon.ProcEvent){panic("CSBoliShopLevelUpReq not implements")}
+	Handle_GAME_CSBoliShopRewardReq  =func(e rocommon.ProcEvent){panic("CSBoliShopRewardReq not implements")}
+	Handle_GAME_CSBoliShopBuyReq  =func(e rocommon.ProcEvent){panic("CSBoliShopBuyReq not implements")}
+	Handle_GAME_CSBTShopInfoReq  =func(e rocommon.ProcEvent){panic("CSBTShopInfoReq not implements")}
+	Handle_GAME_CSBoliShopInfoReq  =func(e rocommon.ProcEvent){panic("CSBoliShopInfoReq not implements")}
+	Handle_GAME_CSBTRoCoinShopItemBuyReq  =func(e rocommon.ProcEvent){panic("CSBTRoCoinShopItemBuyReq not implements")}
+	Handle_GAME_CSActivitySmashEggsReq  =func(e rocommon.ProcEvent){panic("CSActivitySmashEggsReq not implements")}
+	Handle_GAME_CSActivitySmashEggsMsgReq  =func(e rocommon.ProcEvent){panic("CSActivitySmashEggsMsgReq not implements")}
+	Handle_GAME_CSBTFirstRechargeRewardReq  =func(e rocommon.ProcEvent){panic("CSBTFirstRechargeRewardReq not implements")}
+	Handle_GAME_CSBTRecharge100RewardReq  =func(e rocommon.ProcEvent){panic("CSBTRecharge100RewardReq not implements")}
 	Handle_GAME_SSWebGMAddMailNtf  =func(e rocommon.ProcEvent){panic("SSWebGMAddMailNtf not implements")}
 	Handle_GAME_SSWebGMBanNtf  =func(e rocommon.ProcEvent){panic("SSWebGMBanNtf not implements")}
 	Handle_GAME_SSWebGMNoticeNtf  =func(e rocommon.ProcEvent){panic("SSWebGMNoticeNtf not implements")}
@@ -677,6 +692,7 @@ var(
 //GMWEB
 var(
 	Handle_GMWEB_CSGiftRewardReq  =func(e rocommon.ProcEvent){panic("CSGiftRewardReq not implements")}
+	Handle_GMWEB_SSWebGMChatMsgNtf  =func(e rocommon.ProcEvent){panic("SSWebGMChatMsgNtf not implements")}
 	Handle_GMWEB_Default		func(e rocommon.ProcEvent)
 )
 
@@ -830,6 +846,7 @@ var(
 	Handle_SOCIAL_CSGiftRewardReq  =func(e rocommon.ProcEvent){panic("CSGiftRewardReq not implements")}
 	Handle_SOCIAL_SCGiftRewardAck  =func(e rocommon.ProcEvent){panic("SCGiftRewardAck not implements")}
 	Handle_SOCIAL_SCGuildBattleDataChangeNtf  =func(e rocommon.ProcEvent){panic("SCGuildBattleDataChangeNtf not implements")}
+	Handle_SOCIAL_SSWebGMChatMsgNtf  =func(e rocommon.ProcEvent){panic("SSWebGMChatMsgNtf not implements")}
 	Handle_SOCIAL_SSWebGMAddMailNtf  =func(e rocommon.ProcEvent){panic("SSWebGMAddMailNtf not implements")}
 	Handle_SOCIAL_SSWebGMBanNtf  =func(e rocommon.ProcEvent){panic("SSWebGMBanNtf not implements")}
 	Handle_SOCIAL_SSWebGMNoticeNtf  =func(e rocommon.ProcEvent){panic("SSWebGMNoticeNtf not implements")}
@@ -1051,6 +1068,8 @@ func GetMessageHandler(sreviceName string) rocommon.EventCallBack {
 			case *SSHeadDataSaveReq: Handle_DB_SSHeadDataSaveReq(e)
 			case *SSUpdateHeadDataSaveReq: Handle_DB_SSUpdateHeadDataSaveReq(e)
 			case *SSWishBoxDataSaveReq: Handle_DB_SSWishBoxDataSaveReq(e)
+			case *SSBTDataSaveNtf: Handle_DB_SSBTDataSaveNtf(e)
+			case *SSActivitySmashEggsMsgSaveNtf: Handle_DB_SSActivitySmashEggsMsgSaveNtf(e)
 			case *SSCrossYuanHangTrialLogNtf: Handle_DB_SSCrossYuanHangTrialLogNtf(e)
 			default:
 				if Handle_DB_Default != nil {
@@ -1422,6 +1441,19 @@ func GetMessageHandler(sreviceName string) rocommon.EventCallBack {
 			case *CSPetQiyueBattlePetAttrReq: Handle_GAME_CSPetQiyueBattlePetAttrReq(e)
 			case *CSCardLevelExchangeReq: Handle_GAME_CSCardLevelExchangeReq(e)
 			case *CSCombineServerInfoReq: Handle_GAME_CSCombineServerInfoReq(e)
+			case *CSCreditRechargeShopItemBuyReq: Handle_GAME_CSCreditRechargeShopItemBuyReq(e)
+			case *CSRuneSpecialPrivilegeRewardReq: Handle_GAME_CSRuneSpecialPrivilegeRewardReq(e)
+			case *CSClimbingTowerDayRewardReq: Handle_GAME_CSClimbingTowerDayRewardReq(e)
+			case *CSBoliShopLevelUpReq: Handle_GAME_CSBoliShopLevelUpReq(e)
+			case *CSBoliShopRewardReq: Handle_GAME_CSBoliShopRewardReq(e)
+			case *CSBoliShopBuyReq: Handle_GAME_CSBoliShopBuyReq(e)
+			case *CSBTShopInfoReq: Handle_GAME_CSBTShopInfoReq(e)
+			case *CSBoliShopInfoReq: Handle_GAME_CSBoliShopInfoReq(e)
+			case *CSBTRoCoinShopItemBuyReq: Handle_GAME_CSBTRoCoinShopItemBuyReq(e)
+			case *CSActivitySmashEggsReq: Handle_GAME_CSActivitySmashEggsReq(e)
+			case *CSActivitySmashEggsMsgReq: Handle_GAME_CSActivitySmashEggsMsgReq(e)
+			case *CSBTFirstRechargeRewardReq: Handle_GAME_CSBTFirstRechargeRewardReq(e)
+			case *CSBTRecharge100RewardReq: Handle_GAME_CSBTRecharge100RewardReq(e)
 			case *SSWebGMAddMailNtf: Handle_GAME_SSWebGMAddMailNtf(e)
 			case *SSWebGMBanNtf: Handle_GAME_SSWebGMBanNtf(e)
 			case *SSWebGMNoticeNtf: Handle_GAME_SSWebGMNoticeNtf(e)
@@ -1602,6 +1634,7 @@ func GetMessageHandler(sreviceName string) rocommon.EventCallBack {
 		return  func(e rocommon.ProcEvent) {
 			switch e.Msg().(type) {
 			case *CSGiftRewardReq: Handle_GMWEB_CSGiftRewardReq(e)
+			case *SSWebGMChatMsgNtf: Handle_GMWEB_SSWebGMChatMsgNtf(e)
 			default:
 				if Handle_GMWEB_Default != nil {
 					Handle_GMWEB_Default(e)
@@ -1775,6 +1808,7 @@ func GetMessageHandler(sreviceName string) rocommon.EventCallBack {
 			case *CSGiftRewardReq: Handle_SOCIAL_CSGiftRewardReq(e)
 			case *SCGiftRewardAck: Handle_SOCIAL_SCGiftRewardAck(e)
 			case *SCGuildBattleDataChangeNtf: Handle_SOCIAL_SCGuildBattleDataChangeNtf(e)
+			case *SSWebGMChatMsgNtf: Handle_SOCIAL_SSWebGMChatMsgNtf(e)
 			case *SSWebGMAddMailNtf: Handle_SOCIAL_SSWebGMAddMailNtf(e)
 			case *SSWebGMBanNtf: Handle_SOCIAL_SSWebGMBanNtf(e)
 			case *SSWebGMNoticeNtf: Handle_SOCIAL_SSWebGMNoticeNtf(e)
@@ -2520,6 +2554,38 @@ func init() {
 	registerInfo(1711, reflect.TypeOf((*SCCombineServerOnlineNtf)(nil)).Elem(), 0)
 	registerInfo(1712, reflect.TypeOf((*CSCombineServerInfoReq)(nil)).Elem(), 0)
 	registerInfo(1713, reflect.TypeOf((*SCCombineServerInfoAck)(nil)).Elem(), 0)
+	registerInfo(1714, reflect.TypeOf((*CSCreditRechargeShopItemBuyReq)(nil)).Elem(), 0)
+	registerInfo(1715, reflect.TypeOf((*SCCreditRechargeShopItemBuyAck)(nil)).Elem(), 0)
+	registerInfo(1716, reflect.TypeOf((*SCRuneBaseDataNtf)(nil)).Elem(), 0)
+	registerInfo(1717, reflect.TypeOf((*CSRuneSpecialPrivilegeRewardReq)(nil)).Elem(), 0)
+	registerInfo(1718, reflect.TypeOf((*SCRuneSpecialPrivilegeRewardAck)(nil)).Elem(), 0)
+	registerInfo(1719, reflect.TypeOf((*SCPlayerBattleAcctTimeNtf)(nil)).Elem(), 0)
+	registerInfo(1720, reflect.TypeOf((*SCErrorMessageNtf)(nil)).Elem(), 0)
+	registerInfo(1723, reflect.TypeOf((*CSClimbingTowerDayRewardReq)(nil)).Elem(), 0)
+	registerInfo(1724, reflect.TypeOf((*SCClimbingTowerDayRewardAck)(nil)).Elem(), 0)
+	registerInfo(1725, reflect.TypeOf((*CSBoliShopLevelUpReq)(nil)).Elem(), 0)
+	registerInfo(1727, reflect.TypeOf((*CSBoliShopRewardReq)(nil)).Elem(), 0)
+	registerInfo(1728, reflect.TypeOf((*SCBoliShopRewardAck)(nil)).Elem(), 0)
+	registerInfo(1729, reflect.TypeOf((*CSBoliShopBuyReq)(nil)).Elem(), 0)
+	registerInfo(1733, reflect.TypeOf((*SCBoliDataChangeNtf)(nil)).Elem(), 0)
+	registerInfo(1734, reflect.TypeOf((*SCBoliShopLevelUpAck)(nil)).Elem(), 0)
+	registerInfo(1735, reflect.TypeOf((*SCBoliShopBuyAck)(nil)).Elem(), 0)
+	registerInfo(1736, reflect.TypeOf((*CSBTShopInfoReq)(nil)).Elem(), 0)
+	registerInfo(1737, reflect.TypeOf((*SCBTShopInfoAck)(nil)).Elem(), 0)
+	registerInfo(1738, reflect.TypeOf((*CSBoliShopInfoReq)(nil)).Elem(), 0)
+	registerInfo(1739, reflect.TypeOf((*SCBoliShopInfoAck)(nil)).Elem(), 0)
+	registerInfo(1740, reflect.TypeOf((*CSBTRoCoinShopItemBuyReq)(nil)).Elem(), 0)
+	registerInfo(1741, reflect.TypeOf((*SCBTRoCoinShopItemBuyAck)(nil)).Elem(), 0)
+	registerInfo(1742, reflect.TypeOf((*CSActivitySmashEggsReq)(nil)).Elem(), 0)
+	registerInfo(1743, reflect.TypeOf((*SCActivitySmashEggsAck)(nil)).Elem(), 0)
+	registerInfo(1744, reflect.TypeOf((*CSActivitySmashEggsMsgReq)(nil)).Elem(), 0)
+	registerInfo(1745, reflect.TypeOf((*SCActivitySmashEggsMsgAck)(nil)).Elem(), 0)
+	registerInfo(1746, reflect.TypeOf((*SCBTFirstRechargeNtf)(nil)).Elem(), 0)
+	registerInfo(1747, reflect.TypeOf((*CSBTFirstRechargeRewardReq)(nil)).Elem(), 0)
+	registerInfo(1748, reflect.TypeOf((*SCBTFirstRechargeRewardAck)(nil)).Elem(), 0)
+	registerInfo(1749, reflect.TypeOf((*SCBTRecharge100Ntf)(nil)).Elem(), 0)
+	registerInfo(1750, reflect.TypeOf((*CSBTRecharge100RewardReq)(nil)).Elem(), 0)
+	registerInfo(1751, reflect.TypeOf((*SCBTRecharge100RewardAck)(nil)).Elem(), 0)
 	registerInfo(3000, reflect.TypeOf((*SSWebGMChatMsgNtf)(nil)).Elem(), 0)
 	registerInfo(3001, reflect.TypeOf((*SSWebGMAddMailNtf)(nil)).Elem(), 0)
 	registerInfo(3002, reflect.TypeOf((*SSWebGMBanNtf)(nil)).Elem(), 0)
@@ -2770,6 +2836,8 @@ func init() {
 	registerInfo(5122, reflect.TypeOf((*SSWishBoxDataSaveReq)(nil)).Elem(), 0)
 	registerInfo(5123, reflect.TypeOf((*SSGetRushRankRewardReq)(nil)).Elem(), 0)
 	registerInfo(5124, reflect.TypeOf((*SSGetRushRankRewardAck)(nil)).Elem(), 0)
+	registerInfo(5125, reflect.TypeOf((*SSBTDataSaveNtf)(nil)).Elem(), 0)
+	registerInfo(5126, reflect.TypeOf((*SSActivitySmashEggsMsgSaveNtf)(nil)).Elem(), 0)
 	registerInfo(6002, reflect.TypeOf((*SSCrossYuanHangTrialViewListReq)(nil)).Elem(), 0)
 	registerInfo(6003, reflect.TypeOf((*SSCrossYuanHangTrialViewListAck)(nil)).Elem(), 0)
 	registerInfo(6004, reflect.TypeOf((*SSCrossYuanHangTrialReq)(nil)).Elem(), 0)

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 248 - 112
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/user.pb.go


+ 73 - 8
RO_Server_Trunk-branch_0.1.39/roserver/serverproto/user.proto

@@ -214,6 +214,10 @@ message RoleBase {
     int32       online_reward_id     = 29; //已经领取过的奖励id(配置表中的唯一id)
     uint64    daily_reset_time_stamp = 30; //每日重置时的时间戳
     int32    repress_skill_pvp_val   = 31; //技能竞技pvp压制值
+
+    float   bt_zhen_day_recharge     = 50; // bt真每日累计充值(花钱购买金币的消耗)
+    int32   bt_jia_day_recharge      = 51; // bt假每日累计充值(消耗的每日充值额度)
+    uint64  bt_jia_total_recharge    = 52; // bt假累计充值(累计消耗的每日充值额度)
 }
 
 //神器槽位详细信息
@@ -492,6 +496,10 @@ message RoleBattle {
     uint64      map_level_time           = 11; //到达当前关卡时的时间戳(用来做难度衰减)
     RushMap     rush_map                 = 12; //推图冲榜
     repeated KeyValueType map_challenge_num_list    = 13; //关卡挑战次数
+
+    // 战斗加速时间(客户端显示根据last_record_battle_acce_time+battle_acce_duration为最大能使用的结束时间戳)
+    uint64 last_record_battle_acce_time  = 14; // 上次记录时的时间
+    uint64 battle_acce_duration          = 15; // 当前剩余的时间
 }
 
 message ActorPosition {
@@ -981,6 +989,9 @@ message RoleActivity {
     repeated KeyValueType unlock_charge_has_list               = 7; //已经触发的超值礼包的次数
 
     repeated int32 expired_activity_list = 8; //过期或者已经删除的活动(次数)     = 9;
+
+    //服务器Load时使用
+    repeated SystemMessage act_msg_list               = 10; // 活动内的操作消息(砸蛋奖励获取消息)
 }
 
 ///精彩活动
@@ -1015,6 +1026,19 @@ message ActivitiesDetailData {
     ActivityWheelData wheel_data                = 15; //
     //签到活动
     ActivitySignIn sign_data                    = 16;
+
+    // bt RO币累计活动
+    ActivityBTROCoin  bt_rocoin_data                  = 20;
+    // 真/假每日累计充值活动
+    repeated TaskData bt_zhenjia_recharge_task_list   = 21;
+
+    //repeated SystemMessage act_msg_list               = 22; // 活动内的操作消息(砸蛋奖励获取消息)
+}
+
+message ActivityBTROCoin {
+    repeated TaskData daily_task_list           = 1;
+    repeated TaskData week_task_list            = 2;
+    uint64 week_day_end_time                    = 3; // 周累计活动下次刷新时间
 }
 
 message ActivitySignIn {
@@ -1088,6 +1112,7 @@ message RoleTower{
     RushTower rush_tower               = 3; //爬塔冲榜数据
 
     uint64 sys_reward_time             = 4; //获取系统补偿奖励(印记奖励)时间戳
+    uint64 tower_level_day_reward_time = 5; // 每天馈赠奖励可领取时间戳
 }
 
 message RefusedApply{
@@ -1610,8 +1635,8 @@ message RuneGoods{
 
 //卢恩商店
 message RuneShop {
-    int32   shop_id                     = 1;    //商店ID
-    int32   sub_shop_id                 = 2;    //商店子类型
+    int32   shop_id                     = 1;    //商店ID(例如:Rune_Shop_Type_MonthCard)
+    int32   sub_shop_id                 = 2;    //商店子类型(例如:Rune_BagShop_Type_Day)
     repeated RuneGoods    goods_info    = 3;    //商品信息
     int64   next_refresh                = 4;    //下次刷新时间(日,周,月)
 }
@@ -1627,14 +1652,26 @@ message RuneExplore {
 }
 
 message RuneBaseData {
-    int32   reset_version               = 1;    //礼包商店,金币页签的重置标记
-    bool month_card_modify              = 2;    //月卡结束时间修正
-}
-//卢恩商会
+    int32   reset_version               = 1;  //礼包商店,金币页签的重置标记
+    bool month_card_modify              = 2;  //月卡结束时间修正
+
+    int32 used_credit_recharge          = 3; // 充值钱包的每日已经使用额度
+    int32 max_credit_recharge           = 4; // 充值钱包的每日上限额度(例如默认是500)
+    bool credit_recharge_limit          = 5; // 充值钱包额度无上限(true 表示无上限)
+    RuneSpecialPrivilegeData privilege_data        = 6; // 特权卡商店
+    bool is_pass_check                             = 7; // RO通行证(true购买,false未购买)
+}
+// 特权卡商店
+message RuneSpecialPrivilegeData {
+    int32 special_id                    = 1; // 特权卡配置ID
+    uint64 reward_time                  = 2; // 当前已经领取的时间戳(0表示可领取,非0表示已经领取)
+    uint64 process_time                 = 3;
+}
+// 卢恩商会
 message RoleRune {
     repeated RuneShop      shop_list    = 1;   //商店列表
-    RuneExplore    rune_explore = 2;
-    RuneBaseData   rune_base             = 3;    //卢恩商店基础数据 
+    RuneExplore    rune_explore         = 2;
+    RuneBaseData   rune_base            = 3;    //卢恩商店基础数据
 }
 
 message RushRankTop3{
@@ -1874,6 +1911,33 @@ message WishSlot {
     bool  isLucky = 5;                          // 是否暴击
 }
 
+////////////////////////
+// bt服务器功能结构
+message RoleBT {
+    BTBoliData boli_data                       = 1;
+    BTBaseData base_data                       = 2;
+}
+// bt波利商城
+message BTBoliData {
+    int32 level                                = 1;
+    repeated KeyValueType day_reward_list      = 2; // 当前选择的特权礼包
+    repeated BuyInfo buy_info_list             = 3; // 购买商品信息
+    uint64 reward_time                         = 4; // 领取奖励时间(领取就设置)
+    uint64 show_time_stamp                     = 5; // 该系统显示时间戳
+}
+//bt基础数据
+message BTBaseData {
+    //bt超值首充
+    uint64 first_recharge_time                 = 1; //解锁后该字段>0,非解锁<=0
+    uint32 first_recharge_reward_state         = 2; //首充礼包档位奖励获取状态(位处理)
+
+    //bt百元大礼包
+    uint64 recharge100_time                    = 3; //充值解锁百元大礼包的时间戳
+    int32 recharge100_reward_day               = 4; //可领取哪几天的奖励(1表示可领取第一天奖励,2表示可领取前两天奖励)
+    int32 recharge100_reward_state             = 5; //已经领取到那一天的奖励(1表示第一天已经领取,2表示领取了1-2天的奖励)
+}
+
+
 message Role {
     uint64          id                    = 1; //玩家id
     RoleBase        role_base             = 2; //玩家基础信息
@@ -1904,4 +1968,5 @@ message Role {
     RoleSkillEquip  role_skill_equip      = 28; //神器
     RoleHead        role_head             = 29; // 称号数据
     RoleWish        role_wish             = 30; // 许愿宝箱
+    RoleBT          role_bt               = 31; // bt服务
 }

+ 8 - 0
RO_Server_Trunk-branch_0.1.39/roserver/social/msg/chat_msg.go

@@ -107,4 +107,12 @@ func init() {
 		}
 		model.ServiceReplay(ev, ackMsg)
 	})
+
+	//通过social->gmweb 发送给gm后台做聊天消息监控
+	serverproto.Handle_SOCIAL_SSWebGMChatMsgNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
+		msg := ev.Msg().(*serverproto.SSWebGMChatMsgNtf)
+		util.InfoF("receive SSWebGMChatMsgNtf msg:%v", msg)
+
+		model2.SendGmweb(msg)
+	})
 }

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä