local function modadd(msg)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
    if not is_admin(msg) then
   if not lang then
        return '_You are not bot admin_'
else
     return 'شما مدیر ربات نیستید'
    end
end
    local data = load_data(_config.moderation.data)
  if data[tostring(msg.chat_id_)] then
if not lang then
   return '_♻Group is already added♻_'
else
return '♻گروه از قبل ثبت شده بود♻'
  end
end
        -- create data array in moderation.json
      data[tostring(msg.chat_id_)] = {
              owners = {},
      mods ={},
      banned ={},
      is_silent_users ={},
      filterlist ={},
      settings = {
          lock_link = 'yes',
          lock_tag = 'yes',
		  lock_fosh = 'yes',
          lock_spam = 'no',
          lock_webpage = 'yes',
		  lock_arabic = 'no',
          lock_markdown = 'yes',
          flood = 'yes',
          lock_bots = 'yes',
          welcome = 'yes',
          lock_forward = 'no',
          lock_audio = 'no',
          lock_video = 'no',
          lock_contact = 'no',
          lock_text = 'no',
          lock_photos = 'no',
          lock_gif = 'no',
          lock_location = 'no',
          lock_document = 'no',
          lock_sticker = 'no',
          lock_voice = 'no',
          lock_all = 'no'
          }
      }
  save_data(_config.moderation.data, data)
      local groups = 'groups'
      if not data[tostring(groups)] then
        data[tostring(groups)] = {}
        save_data(_config.moderation.data, data)
      end
      data[tostring(groups)][tostring(msg.chat_id_)] = msg.chat_id_
      save_data(_config.moderation.data, data)
    if not lang then
  return '*✔Group has been added✔*'
else
  return '✔گروه با موفقیت ثبت شد✔'
end
end

local function modrem(msg)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
    -- superuser and admins only (because sudo are always has privilege)
      if not is_admin(msg) then
     if not lang then
        return '_You are not bot admin_'
   else
        return 'شما مدیر ربات نیستید'
    end
   end
    local data = load_data(_config.moderation.data)
    local receiver = msg.chat_id_
  if not data[tostring(msg.chat_id_)] then
  if not lang then
    return '_Group is not added_'
else
    return 'گروه ثبت نشده است'
   end
  end

  data[tostring(msg.chat_id_)] = nil
  save_data(_config.moderation.data, data)
     local groups = 'groups'
      if not data[tostring(groups)] then
        data[tostring(groups)] = nil
        save_data(_config.moderation.data, data)
      end data[tostring(groups)][tostring(msg.chat_id_)] = nil
      save_data(_config.moderation.data, data)
 if not lang then
  return '*Group has been removed*'
 else
  return 'گروه با موفقیت حذف شد'
end
end

local function filter_word(msg, word)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
local data = load_data(_config.moderation.data)
  if not data[tostring(msg.chat_id_)]['filterlist'] then
    data[tostring(msg.chat_id_)]['filterlist'] = {}
    save_data(_config.moderation.data, data)
    end
if data[tostring(msg.chat_id_)]['filterlist'][(word)] then
   if not lang then
         return "_Word_ *"..word.."* _is already filtered_"
            else
         return "_کلمه_ *"..word.."* _از قبل فیلتر بود_"
    end
end
   data[tostring(msg.chat_id_)]['filterlist'][(word)] = true
     save_data(_config.moderation.data, data)
   if not lang then
         return "_Word_ *"..word.."* _added to filtered words list_"
            else
         return "_کلمه_ *"..word.."* _به لیست کلمات فیلتر شده اضافه شد_"
    end
end

local function unfilter_word(msg, word)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 local data = load_data(_config.moderation.data)
  if not data[tostring(msg.chat_id_)]['filterlist'] then
    data[tostring(msg.chat_id_)]['filterlist'] = {}
    save_data(_config.moderation.data, data)
    end
      if data[tostring(msg.chat_id_)]['filterlist'][word] then
      data[tostring(msg.chat_id_)]['filterlist'][(word)] = nil
       save_data(_config.moderation.data, data)
       if not lang then
         return "_Word_ *"..word.."* _removed from filtered words list_"
       elseif lang then
         return "_کلمه_ *"..word.."* _از لیست کلمات فیلتر شده حذف شد_"
     end
      else
       if not lang then
         return "_Word_ *"..word.."* _is not filtered_"
       elseif lang then
         return "_کلمه_ *"..word.."* _از قبل فیلتر نبود_"
      end
   end
end

local function modlist(msg)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
    local data = load_data(_config.moderation.data)
    local i = 1
  if not data[tostring(msg.chat_id_)] then
  if not lang then
    return "_Group is not added_"
 else
    return "گروه ثبت نشده است"
  end
 end
  -- determine if table is empty
  if next(data[tostring(msg.chat_id_)]['mods']) == nil then --fix way
  if not lang then
    return "_No_ *moderator* _in this group_"
else
   return "در حال حاضر هیچ مدیری برای گروه انتخاب نشده است"
  end
end
if not lang then
   message = '*List of moderators :*\n'
else
   message = '*لیست مدیران گروه :*\n'
end
  for k,v in pairs(data[tostring(msg.chat_id_)]['mods'])
do
    message = message ..i.. '- '..v..' [' ..k.. '] \n'
   i = i + 1
end
  return message
end

local function ownerlist(msg)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
    local data = load_data(_config.moderation.data)
    local i = 1
  if not data[tostring(msg.chat_id_)] then
if not lang then
    return "_Group is not added_"
else
return "گروه ثبت نشده است"
  end
end
  -- determine if table is empty
  if next(data[tostring(msg.chat_id_)]['owners']) == nil then --fix way
 if not lang then
    return "_No_ *owner* _in this group_"
else
    return "در حال حاضر هیچ مالکی برای گروه انتخاب نشده است"
  end
end
if not lang then
   message = '*List of moderators :*\n'
else
   message = '*لیست مدیران گروه :*\n'
end
  for k,v in pairs(data[tostring(msg.chat_id_)]['owners']) do
    message = message ..i.. '- '..v..' [' ..k.. '] \n'
   i = i + 1
end
  return message
end

local function action_by_reply(arg, data)
local hash = "gp_lang:"..data.chat_id_
local lang = redis:get(hash)
local cmd = arg.cmd
    local administration = load_data(_config.moderation.data)
if not tonumber(data.sender_user_id_) then return false end
    if data.sender_user_id_ then
  if not administration[tostring(data.chat_id_)] then
  if not lang then
    return tdcli.sendMessage(data.chat_id_, "", 0, "_Group is not added_", 0, "md")
else
    return tdcli.sendMessage(data.chat_id_, "", 0, "_گروه ثبت نشده است_", 0, "md")
     end
  end
if cmd == "setowner" then
local function owner_cb(arg, data)
local hash = "gp_lang:"..arg.chat_id
local lang = redis:get(hash)
    local administration = load_data(_config.moderation.data)
if data.username_ then
user_name = '@'..check_markdown(data.username_)
else
user_name = check_markdown(data.first_name_)
end
if administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] then
    if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is already a_ *group owner*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل صاحب گروه بود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] = user_name
    save_data(_config.moderation.data, administration)
   if not lang then
  return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is now the_ *group owner*", 0, "md")
   else
  return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *به مقام صاحب گروه منتصب شد*", 0, "md")
   end
end
tdcli_function ({
    ID = "GetUser",
    user_id_ = data.sender_user_id_
  }, owner_cb, {chat_id=data.chat_id_,user_id=data.sender_user_id_})
  end
    if cmd == "promote" then
local function promote_cb(arg, data)
local hash = "gp_lang:"..arg.chat_id
local lang = redis:get(hash)
    local administration = load_data(_config.moderation.data)
if data.username_ then
user_name = '@'..check_markdown(data.username_)
else
user_name = check_markdown(data.first_name_)
end
if administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] then
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is already a_ *moderator*", 0, "md")
else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل مدیر گروه بود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] = user_name
    save_data(_config.moderation.data, administration)
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _has been_ *promoted*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *به مقام مدیر گروه منتصب شد*", 0, "md")
   end
end
tdcli_function ({
    ID = "GetUser",
    user_id_ = data.sender_user_id_
  }, promote_cb, {chat_id=data.chat_id_,user_id=data.sender_user_id_})
  end
     if cmd == "remowner" then
local function rem_owner_cb(arg, data)
local hash = "gp_lang:"..arg.chat_id
local lang = redis:get(hash)
    local administration = load_data(_config.moderation.data)
if data.username_ then
user_name = '@'..check_markdown(data.username_)
else
user_name = check_markdown(data.first_name_)
end
if not administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] then
   if not lang then
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is not a_ *group owner*", 0, "md")
   else
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* *از قبل صاحب گروه نبود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] = nil
    save_data(_config.moderation.data, administration)
   if not lang then
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is no longer a_ *group owner*", 0, "md")
    else
return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از مقام صاحب گروه برکنار شد*", 0, "md")
   end
end
tdcli_function ({
    ID = "GetUser",
    user_id_ = data.sender_user_id_
  }, rem_owner_cb, {chat_id=data.chat_id_,user_id=data.sender_user_id_})
  end
    if cmd == "demote" then
local function demote_cb(arg, data)
    local administration = load_data(_config.moderation.data)
if data.username_ then
user_name = '@'..check_markdown(data.username_)
else
user_name = check_markdown(data.first_name_)
end
if not administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] then
    if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is not a_ *moderator*", 0, "md")
    else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل مدیر گروه نبود*", 0, "md")
   end
  end
administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] = nil
    save_data(_config.moderation.data, administration)
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _has been_ *demoted*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از مقام مدیر گروه برکنار شد*", 0, "md")
   end
end
tdcli_function ({
    ID = "GetUser",
    user_id_ = data.sender_user_id_
  }, demote_cb, {chat_id=data.chat_id_,user_id=data.sender_user_id_})
  end
    if cmd == "id" then
local function id_cb(arg, data)
    return tdcli.sendMessage(arg.chat_id, "", 0, "*"..data.id_.."*", 0, "md")
end
tdcli_function ({
    ID = "GetUser",
    user_id_ = data.sender_user_id_
  }, id_cb, {chat_id=data.chat_id_,user_id=data.sender_user_id_})
  end
else
    if lang then
  return tdcli.sendMessage(data.chat_id_, "", 0, "_کاربر یافت نشد_", 0, "md")
   else
  return tdcli.sendMessage(data.chat_id_, "", 0, "*User Not Found*", 0, "md")
      end
   end
end

local function action_by_username(arg, data)
local hash = "gp_lang:"..arg.chat_id
local lang = redis:get(hash)
local cmd = arg.cmd
    local administration = load_data(_config.moderation.data)
  if not administration[tostring(arg.chat_id)] then
  if not lang then
    return tdcli.sendMessage(data.chat_id_, "", 0, "_Group is not added_", 0, "md")
else
    return tdcli.sendMessage(data.chat_id_, "", 0, "_گروه ثبت نشده است_", 0, "md")
     end
  end
if not arg.username then return false end
   if data.id_ then
if data.type_.user_.username_ then
user_name = '@'..check_markdown(data.type_.user_.username_)
else
user_name = check_markdown(data.title_)
end
if cmd == "setowner" then
if administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] then
    if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is already a_ *group owner*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل صاحب گروه بود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] = user_name
    save_data(_config.moderation.data, administration)
   if not lang then
  return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is now the_ *group owner*", 0, "md")
   else
  return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *به مقام صاحب گروه منتصب شد*", 0, "md")
   end
end
  if cmd == "promote" then
if administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] then
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is already a_ *moderator*", 0, "md")
else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل مدیر گروه بود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] = user_name
    save_data(_config.moderation.data, administration)
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _has been_ *promoted*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *به مقام مدیر گروه منتصب شد*", 0, "md")
   end
end
   if cmd == "remowner" then
if not administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] then
   if not lang then
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is not a_ *group owner*", 0, "md")
   else
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* *از قبل صاحب گروه نبود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] = nil
    save_data(_config.moderation.data, administration)
   if not lang then
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is no longer a_ *group owner*", 0, "md")
    else
return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از مقام صاحب گروه برکنار شد*", 0, "md")
   end
end
   if cmd == "demote" then
if not administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] then
    if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is not a_ *moderator*", 0, "md")
    else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل مدیر گروه نبود*", 0, "md")
   end
  end
administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] = nil
    save_data(_config.moderation.data, administration)
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _has been_ *demoted*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از مقام مدیر گروه برکنار شد*", 0, "md")
   end
end
   if cmd == "id" then
    return tdcli.sendMessage(arg.chat_id, "", 0, "*"..data.id_.."*", 0, "md")
end
    if cmd == "res" then
    if not lang then
     text = "Result for [ ".. check_markdown(data.type_.user_.username_) .." ] :\n"
    .. "".. check_markdown(data.title_) .."\n"
    .. " [".. data.id_ .."]"
  else
     text = "اطلاعات برای [ ".. check_markdown(data.type_.user_.username_) .." ] :\n"
    .. "".. check_markdown(data.title_) .."\n"
    .. " [".. data.id_ .."]"
       return tdcli.sendMessage(arg.chat_id, 0, 1, text, 1, 'md')
      end
   end
else
    if lang then
  return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر یافت نشد_", 0, "md")
   else
  return tdcli.sendMessage(arg.chat_id, "", 0, "*User Not Found*", 0, "md")
      end
   end
end

local function action_by_id(arg, data)
local hash = "gp_lang:"..arg.chat_id
local lang = redis:get(hash)
local cmd = arg.cmd
    local administration = load_data(_config.moderation.data)
  if not administration[tostring(arg.chat_id)] then
  if not lang then
    return tdcli.sendMessage(data.chat_id_, "", 0, "_Group is not added_", 0, "md")
else
    return tdcli.sendMessage(data.chat_id_, "", 0, "_گروه ثبت نشده است_", 0, "md")
     end
  end
if not tonumber(arg.user_id) then return false end
   if data.id_ then
if data.first_name_ then
if data.username_ then
user_name = '@'..check_markdown(data.username_)
else
user_name = check_markdown(data.first_name_)
end
  if cmd == "setowner" then
  if administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] then
    if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is already a_ *group owner*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل صاحب گروه بود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] = user_name
    save_data(_config.moderation.data, administration)
   if not lang then
  return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is now the_ *group owner*", 0, "md")
   else
  return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *به مقام صاحب گروه منتصب شد*", 0, "md")
   end
end
  if cmd == "promote" then
if administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] then
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is already a_ *moderator*", 0, "md")
else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل مدیر گروه بود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] = user_name
    save_data(_config.moderation.data, administration)
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _has been_ *promoted*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *به مقام مدیر گروه منتصب شد*", 0, "md")
   end
end
   if cmd == "remowner" then
if not administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] then
   if not lang then
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is not a_ *group owner*", 0, "md")
   else
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* *از قبل صاحب گروه نبود*", 0, "md")
      end
   end
administration[tostring(arg.chat_id)]['owners'][tostring(data.id_)] = nil
    save_data(_config.moderation.data, administration)
   if not lang then
return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is no longer a_ *group owner*", 0, "md")
    else
return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از مقام صاحب گروه برکنار شد*", 0, "md")
   end
end
   if cmd == "demote" then
if not administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] then
    if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _is not a_ *moderator*", 0, "md")
    else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از قبل مدیر گروه نبود*", 0, "md")
   end
  end
administration[tostring(arg.chat_id)]['mods'][tostring(data.id_)] = nil
    save_data(_config.moderation.data, administration)
   if not lang then
    return tdcli.sendMessage(arg.chat_id, "", 0, "_User_ "..user_name.." *"..data.id_.."* _has been_ *demoted*", 0, "md")
   else
    return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر_ "..user_name.." *"..data.id_.."* *از مقام مدیر گروه برکنار شد*", 0, "md")
   end
end
    if cmd == "whois" then
if data.username_ then
username = '@'..check_markdown(data.username_)
else
if not lang then
username = 'not found'
 else
username = 'ندارد'
  end
end
     if not lang then
       return tdcli.sendMessage(arg.chat_id, 0, 1, 'Info for [ '..data.id_..' ] :\nUserName : '..username..'\nName : '..data.first_name_, 1)
   else
       return tdcli.sendMessage(arg.chat_id, 0, 1, 'اطلاعات برای [ '..data.id_..' ] :\nیوزرنیم : '..username..'\nنام : '..data.first_name_, 1)
      end
   end
 else
    if not lang then
  return tdcli.sendMessage(arg.chat_id, "", 0, "_User not founded_", 0, "md")
   else
  return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر یافت نشد_", 0, "md")
    end
  end
else
    if lang then
  return tdcli.sendMessage(arg.chat_id, "", 0, "_کاربر یافت نشد_", 0, "md")
   else
  return tdcli.sendMessage(arg.chat_id, "", 0, "*User Not Found*", 0, "md")
      end
   end
end

---------------Lock Link-------------------
local function lock_link(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_link = data[tostring(target)]["settings"]["lock_link"]
if lock_link == "yes" then
if not lang then
 return "🔐*Link* _Posting Is Already Locked_🔐"
elseif lang then
 return "🔐ارسال لینک در گروه قفل است🔐"
end
else
data[tostring(target)]["settings"]["lock_link"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Link* _Posting Has Been Locked_🔐"
else
 return "🔐ارسال لینک در گروه قفل شد🔐"
end
end
end

local function unlock_link(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_link = data[tostring(target)]["settings"]["lock_link"]
 if lock_link == "no" then
if not lang then
return "🔓*Link* _Posting Is Not Locked_🔓"
elseif lang then
return "🔓ارسال لینک در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["lock_link"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Link* _Posting Has Been Unlocked_🔓"
else
return "🔓ارسال لینک در گروه باز شد🔓"
end
end
end

---------------Lock fosh-------------------
local function lock_fosh(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_fosh = data[tostring(target)]["settings"]["lock_fosh"]
if lock_fosh == "yes" then
if not lang then
 return "🔐*Fosh* _Posting Is Already Locked_🔐"
elseif lang then
 return "🔐قفل فحش فعال است🔐"
end
else
data[tostring(target)]["settings"]["lock_fosh"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Fosh* _ Has Been Locked_🔐"
else
 return "🔐قفل فحش فعال شد🔐"
end
end
end

local function unlock_fosh(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_fosh = data[tostring(target)]["settings"]["lock_fosh"]
 if lock_fosh == "no" then
if not lang then
return "🔓*Fosh* _Is Not Locked_🔓"
elseif lang then
return "🔓قفل فحش باز است🔓"
end
else
data[tostring(target)]["settings"]["lock_fosh"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Fosh* _Has Been Unlocked_🔓"
else
return "🔓قفل فحش باز شد🔓"
end
end
end

---------------Lock Tag-------------------
local function lock_tag(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_tag = data[tostring(target)]["settings"]["lock_tag"]
if lock_tag == "yes" then
if not lang then
 return "🔐*Tag* _Posting Is Already Locked_🔐"
elseif lang then
 return "🔐ارسال تگ در گروه قفل است🔐"
end
else
 data[tostring(target)]["settings"]["lock_tag"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Tag* _Posting Has Been Locked_🔐"
else
 return "🔐ارسال تگ در گروه قفل شد🔐"
end
end
end

local function unlock_tag(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_tag = data[tostring(target)]["settings"]["lock_tag"]
 if lock_tag == "no" then
if not lang then
return "🔓*Tag* _Posting Is Not Locked_🔓"
elseif lang then
return "🔓ارسال تگ در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["lock_tag"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Tag* _Posting Has Been Unlocked_🔓"
else
return "🔓ارسال تگ در گروه باز شد🔓"
end
end
end

---------------Lock Mention-------------------
local function lock_mention(msg, data, target)
 local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_mention = data[tostring(target)]["settings"]["lock_mention"]
if lock_mention == "yes" then
if not lang then
 return "🔐*Mention* _Posting Is Already Locked_🔐"
elseif lang then
 return "🔐ارسال فراخوانی افراد >> قفل است🔐"
end
else
 data[tostring(target)]["settings"]["lock_mention"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Mention* _Posting Has Been Locked_🔐"
else
 return "🔐ارسال فراخوانی افراد در گروه قفل شد🔐"
end
end
end

local function unlock_mention(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_mention = data[tostring(target)]["settings"]["lock_mention"]
 if lock_mention == "no" then
if not lang then
return "🔓*Mention* _Posting Is Not Locked_🔓"
elseif lang then
return "🔓ارسال فراخوانی افراد در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["lock_mention"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Mention* _Posting Has Been Unlocked_🔓"
else
return "🔓ارسال فراخوانی افراد در گروه باز شد🔓"
end
end
end

---------------Lock Arabic--------------
local function lock_arabic(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_arabic = data[tostring(target)]["settings"]["lock_arabic"]
if lock_arabic == "yes" then
if not lang then
 return "🔐*Arabic/Persian* _Posting Is Already Locked_🔐"
elseif lang then
 return "🔐ارسال کلمات عربی/فارسی در گروه قفل است🔐"
end
else
data[tostring(target)]["settings"]["lock_arabic"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Arabic/Persian* _Posting Has Been Locked_🔐"
else
 return "🔐ارسال کلمات عربی/فارسی در گروه قفل شد🔐"
end
end
end

local function unlock_arabic(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_arabic = data[tostring(target)]["settings"]["lock_arabic"]
 if lock_arabic == "no" then
if not lang then
return "🔓*Arabic/Persian* _Posting Is Not Locked_🔓"
elseif lang then
return "🔓ارسال کلمات عربی/فارسی در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["lock_arabic"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Arabic/Persian* _Posting Has Been Unlocked_🔓"
else
return "🔓ارسال کلمات عربی/فارسی در گروه باز شد🔓"
end
end
end

---------------Lock Edit-------------------
local function lock_edit(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_edit = data[tostring(target)]["settings"]["lock_edit"]
if lock_edit == "yes" then
if not lang then
 return "🔐*Editing* _Is Already Locked_🔐"
elseif lang then
 return " 🔐ویرایش پیام در گروه قفل است🔐"
end
else
 data[tostring(target)]["settings"]["lock_edit"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Editing* _Has Been Locked_🔐"
else
 return "🔐ویرایش پیام در گروه قفل شد🔐"
end
end
end

local function unlock_edit(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_edit = data[tostring(target)]["settings"]["lock_edit"]
 if lock_edit == "no" then
if not lang then
return "🔓*Editing* _Is Not Locked_🔓"
elseif lang then
return "🔓ویرایش پیام در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["lock_edit"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Editing* _Has Been Unlocked_🔓"
else
return "🔓ویرایش پیام در گروه باز شد🔓"
end
end
end

---------------Lock spam-------------------
local function lock_spam(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_spam = data[tostring(target)]["settings"]["lock_spam"]
if lock_spam == "yes" then
if not lang then
 return "🔐*Spam* _Is Already Locked_🔐"
elseif lang then
 return "🔐ارسال هرزنامه در گروه قفل است🔐"
end
else
 data[tostring(target)]["settings"]["lock_spam"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Spam* _Has Been Locked_🔐"
else
 return "🔐ارسال هرزنامه در گروه قفل شد🔐"
end
end
end

local function unlock_spam(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_spam = data[tostring(target)]["settings"]["lock_spam"]
 if lock_spam == "no" then
if not lang then
return "🔓*Spam* _Posting Is Not Locked_🔓"
elseif lang then
 return "🔓ارسال هرزنامه در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["lock_spam"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Spam* _Posting Has Been Unlocked_🔓"
else
 return "🔓ارسال هرزنامه در گروه باز شد🔓"
end
end
end

---------------Lock Flood-------------------
local function lock_flood(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_flood = data[tostring(target)]["settings"]["flood"]
if lock_flood == "yes" then
if not lang then
 return "🔐*Flooding* _Is Already Locked_🔐"
elseif lang then
 return "🔐ارسال پیام رگبار در گروه قفل است🔐"
end
else
 data[tostring(target)]["settings"]["flood"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Flooding* _Has Been Locked_🔐"
else
 return "🔐ارسال پیام رگبار در گروه قفل شد🔐"
end
end
end

local function unlock_flood(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_flood = data[tostring(target)]["settings"]["flood"]
 if lock_flood == "no" then
if not lang then
return "🔓*Flooding* _Is Not Locked_🔓"
elseif lang then
return "🔓ارسال پیام رگبار در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["flood"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Flooding* _Has Been Unlocked_🔓"
else
return "🔓ارسال پیام رگبار در گروه باز شد🔓"
end
end
end

---------------Lock Bots-------------------
local function lock_bots(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_bots = data[tostring(target)]["settings"]["lock_bots"]
if lock_bots == "yes" then
if not lang then
 return "🔐*Bots* _Protection Is Already Enabled_🔐"
elseif lang then
 return "🔐محافظت از گروه در برابر ربات ها فعال است🔐"
end
else
 data[tostring(target)]["settings"]["lock_bots"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Bots* _Protection Has Been Enabled_🔐"
else
 return "🔐محافظت از گروه در برابر ربات ها فعال شد🔐"
end
end
end

local function unlock_bots(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_bots = data[tostring(target)]["settings"]["lock_bots"]
 if lock_bots == "no" then
if not lang then
return "🔓*Bots* _Protection Is Not Enabled_🔓"
elseif lang then
return "🔓محافظت از گروه در برابر ربات ها باز است🔓"
end
else
data[tostring(target)]["settings"]["lock_bots"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Bots* _Protection Has Been Disabled_🔓"
else
return "🔓محافظت از گروه در برابر ربات ها باز شد🔓"
end
end
end

---------------Lock Markdown-------------------
local function lock_markdown(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_markdown = data[tostring(target)]["settings"]["lock_markdown"]
if lock_markdown == "yes" then
if not lang then
 return "🔐*Markdown* _Posting Is Already Locked_🔐"
elseif lang then
 return "🔐ارسال پیام های دارای فونت در گروه قفل است🔐"
end
else
 data[tostring(target)]["settings"]["lock_markdown"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Markdown* _Posting Has Been Locked_🔐"
else
 return "🔐ارسال پیام های دارای فونت در گروه قفل شد🔐"
end
end
end

local function unlock_markdown(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_markdown = data[tostring(target)]["settings"]["lock_markdown"]
 if lock_markdown == "no" then
if not lang then
return "🔓*Markdown* _Posting Is Not Locked_🔓"
elseif lang then
return "🔓ارسال پیام های دارای فونت در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["lock_markdown"] = "no" save_data(_config.moderation.data, data)
if not lang then
return "🔓*Markdown* _Posting Has Been Unlocked_🔓"
else
return "🔓ارسال پیام های دارای فونت در گروه باز شد🔓"
end
end
end

---------------Lock Webpage-------------------
local function lock_webpage(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_webpage = data[tostring(target)]["settings"]["lock_webpage"]
if lock_webpage == "yes" then
if not lang then
 return "🔐*Webpage* _Is Already Locked_🔐"
elseif lang then
 return "🔐ارسال صفحات وب در گروه قفل است🔐"
end
else
 data[tostring(target)]["settings"]["lock_webpage"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*Webpage* _Has Been Locked_🔐"
else
 return "🔐ارسال صفحات وب در گروه قفل شد🔐"
end
end
end

local function unlock_webpage(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_webpage = data[tostring(target)]["settings"]["lock_webpage"]
 if lock_webpage == "no" then
if not lang then
return "🔓*Webpage* _Is Not Locked_🔓"
elseif lang then
return "🔓ارسال صفحات وب در گروه باز بود🔓"
end
else
data[tostring(target)]["settings"]["lock_webpage"] = "no"
save_data(_config.moderation.data, data)
if not lang then
return "🔓*Webpage* _Has Been Unlocked_🔓"
else
return "🔓ارسال صفحات وب در گروه باز شد🔓"
end
end
end

function group_settings(msg, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 	return "_You're Not_ *Moderator*"
else
  return "شما مدیر گروه نیستید"
end
end
local data = load_data(_config.moderation.data)
local target = msg.chat_id_
if data[tostring(target)] then
if data[tostring(target)]["settings"]["num_msg_max"] then
NUM_MSG_MAX = tonumber(data[tostring(target)]['settings']['num_msg_max'])
	print('custom'..NUM_MSG_MAX)
else
NUM_MSG_MAX = 5
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_link"] then
data[tostring(target)]["settings"]["lock_link"] = "yes"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_tag"] then
data[tostring(target)]["settings"]["lock_tag"] = "yes"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_fosh"] then
data[tostring(target)]["settings"]["lock_fosh"] = "yes"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_mention"] then
data[tostring(target)]["settings"]["lock_mention"] = "no"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_arabic"] then
data[tostring(target)]["settings"]["lock_arabic"] = "no"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_edit"] then
data[tostring(target)]["settings"]["lock_edit"] = "no"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_spam"] then
data[tostring(target)]["settings"]["lock_spam"] = "yes"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_flood"] then
data[tostring(target)]["settings"]["lock_flood"] = "yes"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_bots"] then
data[tostring(target)]["settings"]["lock_bots"] = "yes"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_markdown"] then
data[tostring(target)]["settings"]["lock_markdown"] = "no"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_webpage"] then
data[tostring(target)]["settings"]["lock_webpage"] = "no"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["welcome"] then
data[tostring(target)]["settings"]["welcome"] = "no"
end
end

if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_all"] then
data[tostring(target)]["settings"]["lock_all"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_gif"] then
data[tostring(target)]["settings"]["lock_gif"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_text"] then
data[tostring(target)]["settings"]["lock_text"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_photo"] then
data[tostring(target)]["settings"]["lock_photo"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_video"] then
data[tostring(target)]["settings"]["lock_video"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_audio"] then
data[tostring(target)]["settings"]["lock_audio"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_voice"] then
data[tostring(target)]["settings"]["lock_voice"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_sticker"] then
data[tostring(target)]["settings"]["lock_sticker"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_contact"] then
data[tostring(target)]["settings"]["lock_contact"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_forward"] then
data[tostring(target)]["settings"]["lock_forward"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_location"] then
data[tostring(target)]["settings"]["lock_location"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_document"] then
data[tostring(target)]["settings"]["lock_document"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_tgservice"] then
data[tostring(target)]["settings"]["lock_tgservice"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_inline"] then
data[tostring(target)]["settings"]["lock_inline"] = "no"
end
end
if data[tostring(target)]["settings"] then
if not data[tostring(target)]["settings"]["lock_game"] then
data[tostring(target)]["settings"]["lock_game"] = "no"
end
end

local expiretime = redis:hget('expiretime', msg.chat_id_)
    local expire = ''
  if not expiretime then
  expire = expire..'Unlimited'
  else
   local now = tonumber(os.time())
   expire =  expire..math.floor((tonumber(expiretime) - tonumber(now)) / 86400) + 1
 end

if not lang then
local settings = data[tostring(target)]["settings"]
 text = "⚙*Group Settings*⚙\n*__________________*\n● 》_Lock edit ➢_ *"..settings.lock_edit.."*\n● 》_Lock links ➢_ *"..settings.lock_link.."*\n● 》_Lock fosh ➢_ *"..settings.lock_fosh.."*\n● 》_Lock tags ➢_ *"..settings.lock_tag.."*\n● 》_Lock Persian* ➢_ *"..settings.lock_arabic.."*\n● 》_Lock flood ➢_ *"..settings.flood.."*\n● 》_Lock spam ➢_ *"..settings.lock_spam.."*\n● 》_Lock mention ➢_ *"..settings.lock_mention.."*\n● 》_Lock webpage ➢_ *"..settings.lock_webpage.."*\n● 》_welcome ➢_ *"..settings.welcome.."*\n● 》_Lock markdown ➢_ *"..settings.lock_markdown.."*\n● 》_Lock Bots ➢_ *"..settings.lock_bots.."*\n● 》_Lock gif ➢_ *"..settings.lock_gif.."*\n● 》_Lock text ➢_ *"..settings.lock_text.."*\n● 》_Lock inline ➢_ *"..settings.lock_inline.."*\n● 》_Lock game ➢_ *"..settings.lock_game.."*\n● 》_Lock photo ➢_ *"..settings.lock_photo.."*\n● 》_Lock video ➢_ *"..settings.lock_video.."*\n● 》_Lock audio ➢_ *"..settings.lock_audio.."*\n● 》_Lock voice ➢_ *"..settings.lock_voice.."*\n● 》_Lock sticker ➢_ *"..settings.lock_sticker.."*\n● 》_Lock contact ➢_ *"..settings.lock_contact.."*\n● 》_Lock forward ➢_ *"..settings.lock_forward.."*\n● 》_Lock location ➢_ *"..settings.lock_location.."*\n● 》_Lock document ➢_ *"..settings.lock_document.."*\n● 》_Lock TgService ➢_ *"..settings.lock_tgservice.."*\n● 》_Lock all : _ *"..settings.lock_all.."*\n*__________________*\n● 》_Flood sensitivity ➢_ *"..NUM_MSG_MAX.."*\n● 》_Expire time ➢_ *"..expire.."*\n*__________________*\n Enable✓ ➰ Disable✘ \n*__________________*\n*Language* : *EN*"
else
local settings = data[tostring(target)]["settings"]
 text = "⚙*Group Settings*⚙\n*__________________*\n● 》_Lock edit ➢_ *"..settings.lock_edit.."*\n● 》_Lock links ➢_ *"..settings.lock_link.."*\n● 》_Lock fosh ➢_ *"..settings.lock_fosh.."*\n● 》_Lock tags ➢_ *"..settings.lock_tag.."*\n● 》_Lock Persian* ➢_ *"..settings.lock_arabic.."*\n● 》_Lock flood ➢_ *"..settings.flood.."*\n● 》_Lock spam ➢_ *"..settings.lock_spam.."*\n● 》_Lock mention ➢_ *"..settings.lock_mention.."*\n● 》_Lock webpage ➢_ *"..settings.lock_webpage.."*\n● 》_welcome ➢_ *"..settings.welcome.."*\n● 》_Lock markdown ➢_ *"..settings.lock_markdown.."*\n● 》_Lock Bots ➢_ *"..settings.lock_bots.."*\n● 》_Lock gif ➢_ *"..settings.lock_gif.."*\n● 》_Lock text ➢_ *"..settings.lock_text.."*\n● 》_Lock inline ➢_ *"..settings.lock_inline.."*\n● 》_Lock game ➢_ *"..settings.lock_game.."*\n● 》_Lock photo ➢_ *"..settings.lock_photo.."*\n● 》_Lock video ➢_ *"..settings.lock_video.."*\n● 》_Lock audio ➢_ *"..settings.lock_audio.."*\n● 》_Lock voice ➢_ *"..settings.lock_voice.."*\n● 》_Lock sticker ➢_ *"..settings.lock_sticker.."*\n● 》_Lock contact ➢_ *"..settings.lock_contact.."*\n● 》_Lock forward ➢_ *"..settings.lock_forward.."*\n● 》_Lock location ➢_ *"..settings.lock_location.."*\n● 》_Lock document ➢_ *"..settings.lock_document.."*\n● 》_Lock TgService ➢_ *"..settings.lock_tgservice.."*\n● 》_Lock all : _ *"..settings.lock_all.."*\n*__________________*\n● 》_Flood sensitivity ➢_ *"..NUM_MSG_MAX.."*\n● 》_welcome msg ➢_ *"..settings.welcome.."*\n● 》_Expire time ➢_ *"..expire.."*\n*__________________*\n Enable✓ ➰ Disable✘ \n*__________________*\n*Language* : *EN*"
end
if not lang then
text = string.gsub(text, "yes", "✓")
 text =  string.gsub(text, "no", "✘")
 else
 text = string.gsub(text, "yes", "✓")
 text =  string.gsub(text, "no", "✘")
 end
return text
end
--------locks---------
--------lock all------------------------
local function lock_all(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_all = data[tostring(target)]["settings"]["lock_all"]
if lock_all == "yes" then
if not lang then
return "🔐*lock All* _Is Already Enabled_🔐"
elseif lang then
return "🔐قفل همه فعال است🔐"
end
else
data[tostring(target)]["settings"]["lock_all"] = "yes"
 save_data(_config.moderation.data, data)
if not lang then
return "🔐*lock All* _Has Been Enabled_🔐"
else
return "🔐قفل همه فعال شد🔐"
end
end
end

local function unlock_all(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_all = data[tostring(target)]["settings"]["lock_all"]
if lock_all == "no" then
if not lang then
return "🔓*lock All* _Is Already Disabled_🔓"
elseif lang then
return "🔓قفل همه باز است🔓"
end
else
data[tostring(target)]["settings"]["lock_all"] = "no"
 save_data(_config.moderation.data, data)
if not lang then
return "🔓*lock All* _Has Been Disabled_🔓"
else
return "🔓قفل همه باز شد🔓"
end
end
end

---------------lock Gif-------------------
local function lock_gif(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_gif = data[tostring(target)]["settings"]["lock_gif"]
if lock_gif == "yes" then
if not lang then
 return "🔐*lock Gif* _Is Already Enabled_🔐"
elseif lang then
 return "🔐قفل تصاویر متحرک فعال است🔐"
end
else
 data[tostring(target)]["settings"]["lock_gif"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔓*lock Gif* _Has Been Enabled_🔓"
else
 return "🔓قفل تصاویر متحرک فعال شد🔓"
end
end
end

local function unlock_gif(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then
if not lang then
return "_You're Not_ *Moderator*"
else
return "شما مدیر گروه نیستید"
end
end

local lock_gif = data[tostring(target)]["settings"]["lock_gif"]
 if lock_gif == "no" then
if not lang then
return "🔐*lock Gif* _Is Already Disabled_🔐"
elseif lang then
return "🔐قفل تصاویر متحرک باز بود🔐"
end
else
data[tostring(target)]["settings"]["lock_gif"] = "no"
 save_data(_config.moderation.data, data)
if not lang then
return "🔐*lock Gif* _Has Been Disabled_🔐"
else
return "🔐قفل تصاویر متحرک باز شد🔐"
end
end
end
---------------lock Game-------------------
local function lock_game(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
if not is_mod(msg) then
if not lang then
 return "_You're Not_ *Moderator*"
else
 return "شما مدیر گروه نیستید"
end
end

local lock_game = data[tostring(target)]["settings"]["lock_game"]
if lock_game == "yes" then
if not lang then
 return "🔐*lock Game* _Is Already Enabled_🔐"
elseif lang then
 return "🔐قفل بازی های تحت وب فعال است🔐"
end
else
 data[tostring(target)]["settings"]["lock_game"] = "yes"
save_data(_config.moderation.data, data)
if not lang then
 return "🔐*lock Game* _Has Been Enabled_🔐"
else
 return "🔐قفل بازی های تحت وب فعال شد🔐"
end
end
end

local function unlock_game(msg, data, target)
local hash = "gp_lang:"..msg.chat_id_
local lang = redis:get(hash)
 if not is_mod(msg) then


The parameter types and the return type of `my_atomic_addlint()` is signed. The first parameter is cast to `int64*` on 64-bit systems. See storage/innobase/include/sync0types.h.
On 32-bit systems, `my_atomic_addlong()` will cast the first parameter to `int32*`. See include/my_atomic.h.

So, I do not think that there can be any sign mismatch, because in any case, the first parameter will be cast to a pointer to signed, and both the second parameter and the return value are signed.


Why are here all that reverts about tox_loop?


Question: what was causing conflict with F as a class name? The class name, or the F in classId? If it is only the later we could still have an F class with a classId FIGURE.


That is one option. I decided to leave it there for some time. Thou if there will be any bug or issue in building package for EL5 I will definitely not work on that.


Hi Andrew, up to this stage I get the error "Warning: Each child in an array or iterator should have a unique "key prop". Check the render method of TodoList. See fb.me/react-warning-keys for more information " .. my code is up to date with yours, and when I clone your code and try it out, I get the same error.. How can I fix this..? Thank you for the great course!


801d3f4 で対応し、動作確認をしました。


Yes it was the classid with the actual class name (they both ended up being uppercase F's). I was not 100% sure of the coding standard so I picked one solution :)


public class ComparePro {

	private static int rate = 0;

	static int[][] mydata =new int[][]{{0,100},{0,100},{0,100},{0,100},{0,100},
		{0,100},{0,100},{0,100},{0,100},{0,100}};
	static int[][] prodata=new int[][]{{100,0},{100,0},{100,0},{100,0},{100,0},
		{100,0},{100,0},{100,0},{100,0},{100,0}};

	public static void main(String[] args) {
		compare(mydata,prodata);

	}

	public static int compare(int mydata[][], int prodata[][]){
		// 내 데이터 보여주기
	//	for(int i=0;i<10;i++){
	//		for(int j=0;j<2;j++){
	//			System.out.printf("%d ",mydata[i][j]);
	//		}
	//	}
	//	System.out.println();
	//	for(int k=0;k<10;k++){
	//		for(int l=0;l<2;l++){
	//			System.out.printf("%d ",prodata[k][l]);
	//		}
	//	}
	//	System.out.println();

		int[] comparerate = new int[9];
		for(int i=0;i<9;i++){
			comparerate[i]=100-Math.abs((mydata[i][0]-mydata[i+1][0])-
					(prodata[i][0]-prodata[i+1][0]));
			rate+=comparerate[i];
		}
		rate=rate/9;
		System.out.printf("%d",rate);
		return rate;
	}

}


ㅈㅂㅈㅂㅈㅂㅈㅂㅈㅂㅈㅂㅈ
public class ComparePro {

	private static int rate = 0;

	static int[][] mydata =new int[][]{{0,100},{0,100},{0,100},{0,100},{0,100},
		{0,100},{0,100},{0,100},{0,100},{0,100}};
	static int[][] prodata=new int[][]{{100,0},{100,0},{100,0},{100,0},{100,0},
		{100,0},{100,0},{100,0},{100,0},{100,0}};

	public static void main(String[] args) {
		compare(mydata,prodata);

	}

	public static int compare(int mydata[][], int prodata[][]){
		// 내 데이터 보여주기
	//	for(int i=0;i<10;i++){
	//		for(int j=0;j<2;j++){
	//			System.out.printf("%d ",mydata[i][j]);
	//		}
	//	}
	//	System.out.println();
	//	for(int k=0;k<10;k++){
	//		for(int l=0;l<2;l++){
	//			System.out.printf("%d ",prodata[k][l]);
	//		}
	//	}
	//	System.out.println();

		int[] comparerate = new int[9];
		for(int i=0;i<9;i++){
			comparerate[i]=100-Math.abs((mydata[i][0]-mydata[i+1][0])-
					(prodata[i][0]-prodata[i+1][0]));
			rate+=comparerate[i];
		}
		rate=rate/9;
		System.out.printf("%d",rate);
		return rate;
	}

}


ㅔㅕㅠㅣㅑㅊpublic

public class ComparePro {

	private static int rate = 0;

	static int[][] mydata =new int[][]{{0,100},{0,100},{0,100},{0,100},{0,100},
		{0,100},{0,100},{0,100},{0,100},{0,100}};
	static int[][] prodata=new int[][]{{100,0},{100,0},{100,0},{100,0},{100,0},
		{100,0},{100,0},{100,0},{100,0},{100,0}};

	public static void main(String[] args) {
		compare(mydata,prodata);

	}

	public static int compare(int mydata[][], int prodata[][]){
		// 내 데이터 보여주기
	//	for(int i=0;i<10;i++){
	//		for(int j=0;j<2;j++){
	//			System.out.printf("%d ",mydata[i][j]);
	//		}
	//	}
	//	System.out.println();
	//	for(int k=0;k<10;k++){
	//		for(int l=0;l<2;l++){
	//			System.out.printf("%d ",prodata[k][l]);
	//		}
	//	}
	//	System.out.println();

		int[] comparerate = new int[9];
		for(int i=0;i<9;i++){
			comparerate[i]=100-Math.abs((mydata[i][0]-mydata[i+1][0])-
					(prodata[i][0]-prodata[i+1][0]));
			rate+=comparerate[i];
		}
		rate=rate/9;
		System.out.printf("%d",rate);
		return rate;
	}

}


indentation a little inconsistent, elsewhere `then` is on same line as `if`


![](https://github.trello.services/images/mini-trello-icon.png) [It's hard to copy/paste Device Settings into an email AND edit them (i.e. add a new basal segment)](https://trello.com/c/ICFnscSF/115-it-s-hard-to-copy-paste-device-settings-into-an-email-and-edit-them-i-e-add-a-new-basal-segment)


ok, this seems to work because of a bug in cli-table2 :D - making the color just an empty string also appears to work


The random test cases in test.cpp have been dropped, the cases of this kind will all be implemented in randomtest.cpp


![](https://github.trello.services/images/mini-trello-icon.png) [hello](https://trello.com/c/XQE8RxtV/2-hello)


w


This (and following) should probably be `.. code-block:: none` to disable python syntax highlighting *(or `text` as you've used elsewhere; invalid language, therefore no highlighting, and maybe more obvious to the reader)*.


Can you move these to the top of the file?


![Április 26. - Szerda](http://ujlipot.vakvarju.com/data/napimenu/22.jpg?v=1492894207)
Brokkoli krémleves
Magyaróvári sertéskaraj paradicsomos jázminrizzsel
Mákosguba narancs sodóval


You should add namespaces


Is it possible to suppress this warning message in the master and/or minion configuration? I am not experiencing a delay without IPv6 records.


@veprbl, it seems that the issue was already there (including GL.h) in TGCocoa.mm even if opengl was disabled. This commit just exposed the issue.

@TimurP, do we really need OpenGL support in TGCocoa.mm and if so what would be the right fix here?


F would be the standard, so if this does not create a conflict you can change to it


Will do!


版本1的服务器和客户端的源工程，使用select实现I/O复用


This is added by IDEA.
Why it is bad?


trailing comma ... not allowed in JSON ;-) so annoying I know

`
~/fix-decoder# git remote -v
origin  https://github.com/drewnoakes/fix-decoder.git (fetch)
origin  https://github.com/drewnoakes/fix-decoder.git (push)

~/fix-decoder# yarn
yarn install v0.23.2
error Error parsing JSON at "/var/www/fix-decoder/package.json", "/var/www/fix-decoder/package.json: Unexpected token } in JSON at position 632".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
`


Lesson three


Most probably this is not HEAD commit. I fixed that.


Gulp and NPM are pretty common for modern web apps.

1. Install NPM (`sudo apt-get install npm` on Linux)
2. In the project folder type `npm install` to download packages into the `node_modules` folder
3. To build, type `gulp`

Later when you want to build, just type `gulp` again.

That should be all that's needed.


I would create (not tested code):
function GetLootSequence(instanceID, master, mapID, difficultyID)
  function LootSequenceExist(instanceID)
    for i = 1, #lootSequences do
      if lootSequences[i].intanceID == instanceID
        return i
      end
	end
  end
  if not instanceID do
    for i = 1, #lootSequences do
      if lootSequences[i].mapID == mapID and lootSequences[i].difficultyID == difficultyID and lootSequences[i].master == master  do
        lootSequences[i].intanceID = instanceID
        return lootSequences[i]
      end
    end
  end
  local check = LootSequenceExist(instanceID)
  if check do
    return lootSequences[check]
  end
  local newLootSequence = HereticList:New(instanceID, master, mapID, difficultyID)
  table.insert(lootSequences, 1, newLootSequence)
  return lootSequences[1] -- alternatively we can return directly newLootSequence or insert it to the end of the list and lets start the look up from the buttom
end

The Idea is do get in any case a valid object to work with.


    ~/fix-decoder# git diff
    diff --git a/package.json b/package.json
    index 94a3b35..91caf96 100644
    --- a/package.json
    +++ b/package.json
    @@ -16,6 +16,6 @@
         "gulp": "^3.9.1",
         "gulp-concat": "^2.6.1",
         "gulp-rename": "^1.2.2",
    -    "gulp-uglify": "^2.1.2",
    +    "gulp-uglify": "^2.1.2"
       }
     }

    ~/fix-decoder# yarn
    yarn install v0.23.2
    [1/4] Resolving packages...
    [2/4] Fetching packages...
    [3/4] Linking dependencies...
    [4/4] Building fresh packages...
    Done in 7.14s.


so OK for F as the class and FIGURE for the classid?


@kcppdevelopers Looks like we're still adding a WC notice about the amount being zero and unable to process even though we're redirecting and allowing the order..??


I will fix all issues in the evening.


D


I was too lazy to do that xd @iTCMega
Thats why implemented "basic" loot table item selection


You do not need to initialize exitCode to -1,
BTW initializing a local variable to null before a try block is considered as a bad practice (because of the NPE).


hi Tom


I thought that made sense too initially when learning about promises, but both the spec and convention expects Promise APIs to never throw. Not doing so would be very surprising for users. I would personally never use an API that intentionally doesn't want to follow the spec guidelines and best practises.

> But in this case, you should really never-ever have to catch these errors, let alone have duplicate error handling logic.

You shouldn't assume how people will use your API. Someone might be using this module deep down in their dependency tree or code and not know about the inconsistency.


Thanks :)


The method releaseMediaPlayer() and the object OnCompletionListener is being copied over 4 different classes. Is it possible to extract those lines and put it in an extended MediaPlayer class so that it can be referenced by other classes? Meaning, one set of codes for all 4 classes to refer to. @ @


Please use a real license like MIT or BSD. I and many companies don't want or cannot use code with fake licenses like this one.


Readability > Beauty

It's definitely not easier to read. With your code you're trying to trick the reader into thinking it could be multiple different values for Windows.


@nathanchance Please don't troll us (Flash ROM supports Substratum, by the way)


revenir en arrière


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/111)*


OK, I missunderstud your function. It has to be build to get the information to feed a function like mine :)


![](https://github.trello.services/images/mini-trello-icon.png) [[6502 Compiler] Instructions](https://trello.com/c/AsoldMaG/204-6502-compiler-instructions)


oh changed it back
6be90d98b4d95eaa01cbdde2d7ee855a10f05771


Well I was planning on removing the chown:ing, now they're kept around for the transition. Personally I prefer static ids but I'll admit that I've might have missed some discussion on this.


> I didn't put them as the error.code prop since those are supposed to be for System Errors

I don't think anyone would assume it is. `.code` is just a convention for putting in some kind of an identifier. It's not standardized at all. Use a different property then, but don't make the message unfriendly.

> I remember at some point I thought about just doing throw 'E_WINDOWS_ONLY', but on second thought, that seemed a bit too anarchistic

Hah. Good thing you didn't do that. Then the user will have no idea where it's coming from as the stack is lost.


Creating a Namespace in this file is rather a big change to be omitted from the change description.
It causes errors for people following previous instructions, as seen at https://github.com/kubernetes/kubernetes.github.io/issues/3214


This should look like this
Calendar::Week.last_of(report.created_at.to_date, 2) -> Calendar::Week.last_of(report.created_at.to_date, Setting.available_revise_week_ago)
but not modification of method definition


> You do not need to initialize exitCode to -1,

If I omit the ` = -1` assignment, it will be set to `0`. Now, if something bad happens within the try-block, it is still `0`. So the `execute()` returns `0` ... which it shouldn't. It should only be `0` if ` ConsoleLauncher.execute(...).getExitCode()` returns `0`.


Bluemix [toolchain](https://console.ng.bluemix.net/devops/toolchains/15efea59-9a3e-4d68-be51-ce2b3c71f014 "iot-predicative-hypernutrition"): [Delivery Pipeline](https://console.ng.bluemix.net/devops/pipelines/f98dd5b0-a5c0-47b4-9399-5a64652d2165 "Pipeline") deployed [Bluemix_ChatRoom](https://github.com/ChristophDoerr/Bluemix_ChatRoom/releases/tag/deploy-ibm-yp-us-south-christoph.doerr-student.reutlingen-university.de-CloudComputing-20170426-091325 "deploy-ibm-yp-us-south-christoph.doerr-student.reutlingen-university.de-CloudComputing-20170426-091325") to [CloudComputing](https://console.ng.bluemix.net/apps/f7c6d33c-da24-4105-8c72-41f91ad0b1ab "ibm:yp:us-south:christoph.doerr@student.reutlingen-university.de:CloudComputing"), including this commit


yes :)


Added a test coverage badge from Codecov now that we're at 94% (which is ok for now).


Hi! vendor/opengapps/sources/x86 looks private


fixes #1


```
~/fix-decoder#  find node_modules/ -name "*min*"
node_modules/handlebars/dist/handlebars.amd.min.js
node_modules/handlebars/dist/handlebars.min.js
node_modules/handlebars/dist/handlebars.runtime.min.js
node_modules/handlebars/dist/handlebars.runtime.amd.min.js
node_modules/lodash/dist/lodash.min.js
node_modules/lodash/dist/lodash.underscore.min.js
node_modules/lodash/dist/lodash.compat.min.js
node_modules/source-map/build/mini-require.js
node_modules/jquery/dist/cdn/jquery-2.1.0.min.js
node_modules/jquery/dist/cdn/jquery-2.1.0.min.map
node_modules/jquery/dist/jquery.min.map
node_modules/jquery/dist/jquery.min.js
node_modules/jquery/src/sizzle/dist/sizzle.min.js
node_modules/jquery/src/sizzle/dist/sizzle.min.map
```


TeamCity OTA+ :: libats :: ci [Build 65](http://teamcity.prod01.internal.advancedtelematic.com:8111/viewLog.html?buildId=30016&buildTypeId=libats_Ci) is now running


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/112)*


Hey,
I just wanted to tell you that I created a new "plugin" for you on bStats and added it to your account as you are not able to create one with the "Server Implementation" category yourself. :)
https://bstats.org/plugin/server-implementation/TacoSpigot


I could move the entire code below the finally-block into the try-block. Including the `return exitCode;` statement.
But if s/o adds a `return 4711;` to the finally-block... is always amazing. :)


Apart from the lack of type specifiers, yes. I'd also suggest coercing eval's return value to int with another `|0` and returning that, but I'm not sure all engines return the same values (they should just return 0 otherwise).


## Words

| Changed   |   Status |
|:----------|---------:|
| `grc`     |   -85625 |
| `lat`     |   +85625 |

*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/115)*


nooooooo


How do you do this for scalafmt and scalafix?


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/116)*


Sorry for this.


Hey this is a great improvement, what do you think of adding things on product stock card and stock card ?
![image](https://cloud.githubusercontent.com/assets/3694135/25427225/27b4fa62-2a72-11e7-94b2-773e4fc65bab.png)

We could maybe make it with my dev but 5.0 is frozen yet ?


TeamCity OTA+ :: libats :: ci [Build 65](http://teamcity.prod01.internal.advancedtelematic.com:8111/viewLog.html?buildId=30016&buildTypeId=libats_Ci) outcome was **SUCCESS**
Summary: Running Build time: 00:02:59


the order does matter see the small example https://github.com/typesupply/defcon/issues/102

the order for each key in holds, does not really matter, now it is: first subscribed, first served

this changed was also reversed in 6be90d98b4d95eaa01cbdde2d7ee855a10f05771

but is necessary cause it the order is not reliable and it should not check on the last item, will try to make a small example showing this issue, and pull from there.


> If I omit the = -1 assignment, exitCode will be set to 0.

No, in Java local variables are not initialized to 0 (fields are), the compiler will verify that every branches in the code initialize exitCode correctly.


@s-mueller sorry, took me a long time to answer your request. It looks good to me! THanks.


![](https://github.trello.services/images/mini-trello-icon.png) [Make win and game over scenes dynamic to use the last loaded level for restart](https://trello.com/c/arelCEkv/57-make-win-and-game-over-scenes-dynamic-to-use-the-last-loaded-level-for-restart)


Good morning,
I'm having the same  problem, after second  capture ,screen goes blank ,   for the last two photos.. then  runs normally......please help, trying to get this running for a charity ball in July..


This is an abstract class and method example


Go for PR


![](https://github.trello.services/images/mini-trello-icon.png) [finish pause manager and intermediary scene to target level (with menu and restart options), add back menu button to settings](https://trello.com/c/tT9MBZvk/26-finish-pause-manager-and-intermediary-scene-to-target-level-with-menu-and-restart-options-add-back-menu-button-to-settings)


Wenn wir schon ein Prop 'sortOrder' haben und dies im Leben der Komponenten nicht ändern wollen, brauchen wir das auch nicht in ein locales Property zwischenzuspeichern. Es würde also reichen, einfach immer nur auf this.sortOrder zuzugreifen, wie es im Übrigen auch unten Zeile 111 gemacht wird.


Hier können wir nach this.sortOrder fragen. currentSortOrder brauchen wir gar nicht.


The amount of times our internal DB was broken because of these new columns is over 9000.


No worries. It turns out that the Python developers solved the issue with UUID4 a while ago: https://github.com/python/cpython/commit/788cb52905efa5be5d5a05d336940444ba332089


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/117)*


test
1


@elizabetht seems like this has a much wider impact to Java-related to generators under src/main/resources. Here is the diff for Java (jersey2) Petstore:
```
             variant.outputs.each { output ->
                 def outputFile = output.outputFile
                 if (outputFile != null && outputFile.name.endsWith('.aar')) {
-                    def fileName = "${project.name}-${variant.baseName}-${version}.aar"
+                    def fileName = "swagger-codegen (core library)-${variant.baseName}-2.2.3-SNAPSHOT.aar"
                     output.outputFile = new File(outputFile.parent, fileName)
                 }
             }
@@ -59,7 +59,7 @@ if(hasProperty('target') && target == 'android') {
             task.dependsOn variant.javaCompile
             task.from variant.javaCompile.destinationDir
             task.destinationDir = project.file("${project.buildDir}/outputs/jar")
-            task.archiveName = "${project.name}-${variant.baseName}-${version}.jar"
+            task.archiveName = "swagger-codegen (core library)-${variant.baseName}-2.2.3-SNAPSHOT.jar"
             artifacts.add('archives', task);
```
As you can see all the variables are replaced with some values.

I think we'll look into this further to see if there are better ways to exclude those mustache files for Java/Scala, etc (similar to logback.xml below).

For the time being, I'll roll back this change.


新图


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/118)*


I just removed the function and fix that page course_information.php

https://github.com/chamilo/chamilo-lms/commit/139e3bbd0489003e0bff6d8763b6a0e4215b80b0


欢迎来到胡琴的个人博客


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/119)*


Make it by code convention


Looks good to go.


asas


Applying this commit with lineage_oms_merge.sh breaks the functionality of the merge script: if the script applys this change, the repos are exchanged, and the patching on top of normal laos build tree will work only once, because on the next sync the normal laos repos are gone, due to the repomreplacement done here. IMHO if applying the changes on top, only the ThemeInterface should be put in - but nothing else.


@matzew Not sure why this was removed? Doesn't this now break http proxy authentication?


其他工具都安装成功，但是用cmd安装wechat_spider 是错误


Ich bin sehr dafür die Sortierreihenfolge vom Events-Filter abzutrennen. Wenn wir die Radio für 'past' selektieren, sollte die Reihenfolge 'DESC' sein, also der Termin mit dem höchsten Datum (spätester) zuerst. Wenn er auf 'upcoming' steht, sollte die Reihenfolge 'ASC' sein, also die niedrigste Zahl (der früheste Termin) zuerst. Siehe auch den Kommentar im src/helpers/sort-by-date-start.js


@gehirnstuerm Looks like it's not in 2.1.6. We are now accepting Pull Requests to the `2.1-develop` branch. You may submit one if you wish, that will speed up adding the fix to the future patch release.
Thanks


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/122)*


Why do you load categories on product stock card ?
is there a relation between parent warehouse and categories ?
or is it better to "filter by categories" on stock or product stock's cards ?


Name should be fixed to `RequiredUacGroups`


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/123)*


Same here


![](https://github.trello.services/images/mini-trello-icon.png) [finish pause manager and intermediary scene to target level (with menu and restart options), add back menu button to settings](https://trello.com/c/tT9MBZvk/26-finish-pause-manager-and-intermediary-scene-to-target-level-with-menu-and-restart-options-add-back-menu-button-to-settings)


Thanks.

My idea is to make a more dynamic web interface, and have some of it written in Forth.  I can now use this to display the stack contents.


or maybe just like below `intersperse(...)[0]`


## Words

| Changed   |   Status |
|:----------|---------:|
| `grc`     |   -85625 |
| `lat`     |   +85625 |

*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/124)*


@kokiwaku コーディング規約を読みはじめてくださいーー。
https://shugo.net/ruby-codeconv/codeconv.html


A to po co?


![](https://github.trello.services/images/mini-trello-icon.png) [[6502 Compiler] Instructions](https://trello.com/c/AsoldMaG/204-6502-compiler-instructions)


Bluemix [toolchain](https://console.ng.bluemix.net/devops/toolchains/15efea59-9a3e-4d68-be51-ce2b3c71f014 "iot-predicative-hypernutrition"): [Delivery Pipeline](https://console.ng.bluemix.net/devops/pipelines/f98dd5b0-a5c0-47b4-9399-5a64652d2165 "Pipeline") deployed [Bluemix_ChatRoom](https://github.com/ChristophDoerr/Bluemix_ChatRoom/releases/tag/deploy-ibm-yp-us-south-christoph.doerr-student.reutlingen-university.de-CloudComputing-20170426-093112 "deploy-ibm-yp-us-south-christoph.doerr-student.reutlingen-university.de-CloudComputing-20170426-093112") to [CloudComputing](https://console.ng.bluemix.net/apps/f7c6d33c-da24-4105-8c72-41f91ad0b1ab "ibm:yp:us-south:christoph.doerr@student.reutlingen-university.de:CloudComputing"), including this commit


![](https://github.trello.services/images/mini-trello-icon.png) [[6502 Compiler] should use hex, not decimal values](https://trello.com/c/vgawLr5W/207-6502-compiler-should-use-hex-not-decimal-values)


Do you plan in the future to make the same for "bill from shipment's list ?"
or can we make a P.R. to solive this feature request ?


![](https://github.trello.services/images/mini-trello-icon.png) [First](https://trello.com/c/DpuPG6JN/1-first)


`export default function (items, order = 'ASC') {


TeamCity Jarvis :: Jarvis.DocumentStore :: GitFlow Debug / Test / Release [Build 211](http://build.prxm.it:8811/viewLog.html?buildId=13659&buildTypeId=Jarvis_DocumentStore_GitVersion) is now running


`['requestTime' => $_SERVER['REQUEST_TIME']`


Pitäis käyttää

```python
await asyncio.sleep(2)
```

Vaatii tietysti `import asyncio`.

`time.sleep(2)` pysäyttää koko botin, mut `await asyncio.sleep(2)` pysäyttää vaan nykysen taskin jolloin botti voi esim. reagoida muihin komentoihin odotellessa.


bien vu


True. Field init != Local variable init.

I split the execute() into two methods now. That separates the pro-plugin glue from the console launcher logic.


TeamCity Jarvis :: Jarvis.DocumentStore :: GitFlow Debug / Test / Release [Build 211](http://build.prxm.it:8811/viewLog.html?buildId=13659&buildTypeId=Jarvis_DocumentStore_GitVersion) outcome was **FAILURE**
Summary: Compilation error: src\Jarvis.DocumentStore.Core\Jarvis.DocumentStore.Core.csproj (new) Build time: 00:01:29


## Global

| Changed         |   Status |
|:----------------|---------:|
| `coverage`      |    -0.01 |
| `texts_passing` |    -1    |

## Units

| Changed                                             | Status   |
|:----------------------------------------------------|:---------|
| `./data/tlg2042/tlg028/tlg2042.tlg028.opp-grc1.xml` | Failing  |

*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/125)*


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/126)*


test


qqmusic


Code required to build the training and testing datasets.


Kann es hier Probleme geben, wenn die beiden Date-Objekte unterschiedliche Werte haben? --> Test einfügen.


order sollte nicht past sein, weil wir damit annahmen über die Semantik eines anderen Vorgangs treffen, nämlich der Art und Weise, wie wir Events von der API filtern. Dies kann uns hier egal sein, wir sollten nur die empfangenen Items entweder absteigend oder aufsteigend sortieren. Also Vorschlag:

```javascript
let result = a.date_start < b.date_start ? 1 : -1
if (order === 'DESC') {
  result = -1 * result
}
return result
```


attach


$a = 'yangya';


@matzew Ignore I see it has moved and not just been deleted


0.1 factor is not right, please change it to 10%


You could fix it this way : https://github.com/aviraxp/Oneplus2_OOS3_Boeffla_Kernel_Enhanced/commit/08f98c2ecd463ad5cc65df10258c234d24ee6e81

You actually reverted an upstream patch, see here: https://pastebin.com/tqedH4tT


## Words

| Changed   |   Status |
|:----------|---------:|
| `grc`     |   -85625 |
| `lat`     |   +85625 |

*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/128)*


Really? Irrelevant code file


TeamCity Jarvis :: Jarvis.DocumentStore :: GitFlow Debug / Test / Release [Build 212](http://build.prxm.it:8811/viewLog.html?buildId=13660&buildTypeId=Jarvis_DocumentStore_GitVersion) is now running


@BebZ No, I don't plan to do the same feature on shipment's list, you can make your own P.R. if you need it.


TeamCity Jarvis :: Jarvis.DocumentStore :: GitFlow Debug / Test / Release [Build 212](http://build.prxm.it:8811/viewLog.html?buildId=13660&buildTypeId=Jarvis_DocumentStore_GitVersion) outcome was **FAILURE**
Summary: Compilation error: src\Jarvis.DocumentStore.Core\Jarvis.DocumentStore.Core.csproj Build time: 00:01:29


Bluemix [toolchain](https://console.ng.bluemix.net/devops/toolchains/15efea59-9a3e-4d68-be51-ce2b3c71f014 "iot-predicative-hypernutrition"): [Delivery Pipeline](https://console.ng.bluemix.net/devops/pipelines/f98dd5b0-a5c0-47b4-9399-5a64652d2165 "Pipeline") deployed [Bluemix_ChatRoom](https://github.com/ChristophDoerr/Bluemix_ChatRoom/releases/tag/deploy-ibm-yp-us-south-christoph.doerr-student.reutlingen-university.de-CloudComputing-20170426-094529 "deploy-ibm-yp-us-south-christoph.doerr-student.reutlingen-university.de-CloudComputing-20170426-094529") to [CloudComputing](https://console.ng.bluemix.net/apps/f7c6d33c-da24-4105-8c72-41f91ad0b1ab "ibm:yp:us-south:christoph.doerr@student.reutlingen-university.de:CloudComputing"), including this commit


Cool, looking forward to playing with that. The current asynchronous I/O code is not very well suited to a full web interface, I think, but you can just ignore that or turn it into a single event queue.


## Units

| Changed                                               | Status   |
|:------------------------------------------------------|:---------|
| `./data/tlg2042/tlg028/tlg2042.tlg028.1st1K-lat1.xml` | New      |
| `./data/tlg2042/tlg028/tlg2042.tlg028.opp-grc1.xml`   | Deleted  |
| `./data/tlg2042/tlg028/tlg2042.tlg028.1st1K-lat1.xml` | Passing  |

*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/129)*


@nadeeshaan  Was the upper case 'S' intentional ?


@AlexGnatuyk Ты можешь писать нормальные сообщения к коммитам? На английском, без мата.


*[Hook UI build recap](http://ci.perseids.org/repo/OpenGreekAndLatin/First1KGreek/130)*


@andruby It might be possible to store the key outside define_method so there'd be no need to regenerate a string on every call. Same goes for the  writer.


No git, a teraz zrób źeby każdy pracownik mial okreslone zarobki, i zeby sie wyświetlała suma zarobków. A na szóstkę, żeby były podsumy per stanowisko


Nope. Not when using resources


谢谢分享 祝你成功


Maybe replace this function's signature with `let redirectTo (permanent:bool) (location:string)`?  and users can do something like
```fsharp
let redirectPermanent location =  redirectTo true
let redirect location = redirectTo false
`?


Hi @marcospassos ,

thanks for persisting on this. I've walked around the code to better document exception and created a connection failure *driver agnostic* exception: `Bridge\Exception\BrokenConnectionException`.

The doc is updated and here's the release notes:

https://github.com/belgattitude/soluble-japha/releases/tag/1.4.1

and changeog:

https://github.com/belgattitude/soluble-japha/blob/master/CHANGELOG.md

Thanks for your attention and remarks.


Unfortunately, it seems to fail: https://ci.inria.fr/simgrid/view/Tous/job/SimGrid-DynamicAnalysis-Sanitizer-Thread/label=simgrid-debian8-64-dynamic-analysis-2/lastCompletedBuild/testReport/%28root%29/TestSuite/s4u_actor_kill_thread/

It may be because someone is not using the Actor API in the right way, but it worked before that commit, and we should be robust to misusages, too.


Bluemix [toolchain](https://console.ng.bluemix.net/devops/toolchains/15efea59-9a3e-4d68-be51-ce2b3c71f014 "iot-predicative-hypernutrition"): [Delivery Pipeline](https://console.ng.bluemix.net/devops/pipelines/f98dd5b0-a5c0-47b4-9399-5a64652d2165 "Pipeline") deployed [Bluemix_ChatRoom](https://github.com/ChristophDoerr/Bluemix_ChatRoom/releases/tag/deploy-ibm-yp-us-south-christoph.doerr-student.reutlingen-university.de-CloudComputing-20170426-094902 "deploy-ibm-yp-us-south-christoph.doerr-student.reutlingen-university.de-CloudComputing-20170426-094902") to [CloudComputing](https://console.ng.bluemix.net/apps/f7c6d33c-da24-4105-8c72-41f91ad0b1ab "ibm:yp:us-south:christoph.doerr@student.reutlingen-university.de:CloudComputing"), including this commit


fdw


@obbardc

These config files are not static, they are dynamically created and deleted during operation. I figured they should go under /var/lib because of their dynamic nature?


@BebZ to be honnest i don't remember, i added this feature 6 month ago, maybe it's a mistake.
Or maybe i found a translation that i needed which was in several lang files, categories.lang too


@superkhau If I am reading the patch correctly, then your build status badge is showing the status of `rust-lang/rust` project.

```
https://img.shields.io/travis/rust-lang/rust.svg
```


z=0.0 in world frame is not necessary equal to sea level. It depends on the origin of the world frame (e.g. the origin of an XODR file) with respect to the real world. E.g. an XODR file can have a GPS coordinate associated with it which links the XODR to the real world.


I know but you will see in some other discussions we had on github that self signing a certificate brings a critical issue alert in the browser to the user which is not easy to go around (big red page with link go to this dangerous page). It is possible, but not at all user friendly. It is therefore a temporary solution because I don't think everyone is willing to pay for an officially signed certificate. Any suggestion?


Lance first PHP page attempt


not


I hate it!


el metodo onClickForPassword -> abre un enlace para recuperar la contraseña
(SOLUCIONAR, NO ABRE NINGUNA PAGINA)


ここは消さない方が良くないですか？


git提交例外


@namhyung  `Trivial question`:
We don't need `mcount_prepare()` like `mcount_exit()` and `xray_exit()`, right ?

And strictly speaking, this cleanup change is for targets built with `-finstrument-functions`, not `xray` ?


# 运行效果
![18](https://cloud.githubusercontent.com/assets/19400214/25428832/97119370-2aa9-11e7-94b4-8676d1fb0fa7.png)


@bugtender 居然有留言了！ XD


Updation of readme file


mistakes have been made


`name` should only be provided when the type is not a valid Lua type (like `Image` or `Thread`), in the cases where `type=ref` is used.


StatsBase.jl and Distributions.jl don't support non-global random number generators (JuliaStats/StatsBase.jl#240, JuliaStats/Distributions.jl#436). The right thing to do if I had time would be to go through StatsBase.jl and Distributions.jl and add non-global rng support throughout. Unfortunately, I need to be focused on finishing my thesis right now and less on developing, so my time is limited. There are three options:
1. Leave this here (along with https://github.com/JuliaPOMDP/POMDPToolbox.jl/blob/master/src/distributions/distributions_jl.jl)
2. Submit PRs to StatsBase and Distributions for the functions I have implemented here and in distributions_jl.jl
3. Add support for non-global rngs throughout StatsBase.jl and Distributions.jl
Since both of the issues above are still open, it seems like (3) would take a non-trivial amount of effort, and I kind of doubt that JuliaStats would be happy with the partial support that (2) would add. What do you think is the best solution?


@blurfl I think we're all good to go!


(If this is left here, I will of course remove it immediately when JuliaStats/StatsBase.jl#240 and JuliaStats/Distributions.jl#436 are closed)


Right, 3 is obviously a lot of work. But if you've gotten a minimum start, I don't see why 2 wouldn't be worth doing - isn't partial support better than no support at all? Your implementations aren't really POMDP-specific, so why should they be defined in POMDP packages?


I'm about 20 minutes from sending the link...

> On Apr 26, 2017, at 5:01 PM, BarbourSmith <notifications@github.com> wrote:
>
> @blurfl I think we're all good to go!
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub, or mute the thread.
>


How is this right?  It's measured as 120Hz on the PCB and you've changed it to VBLANK frequency.  Shouldn't it be twice per frame?


Ok, I'll try 2 and see what they say.


Thankgully?


The actual ticket in question is https://ghc.haskell.org/trac/ghc/ticket/11744


oh, check https://github.com/JuliaStats/StatsBase.jl/pull/245 first as it looks like some progress has been made, just needs another round of review


@nle-odoo this commit has landed on 10.0. Shouldn't this one be removed here?


F is next to G on QWERTY keyboard. Stupid cool weather is making my fingers go numb. Expect more of these kinda mistakes poping up from me.
________________________________
From: Alex Weissman <notifications@github.com>
Sent: 27 Apr. 2017 10:06 am
To: userfrosting/learn
Cc: Jordan; Author
Subject: Re: [userfrosting/learn] Added some pointers regarding hosting with IIS. (9a6f729)

Thankgully?

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub<https://github.com/userfrosting/learn/commit/9a6f7293dabc67663676b5244c5d03a46d0eef24#commitcomment-21925212>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AQkjWhheJOiNhNLIWPRJrj2rM5Wd9EfFks5rz9vhgaJpZM4NJkfS>.


Callbacks shouldn't have variants! (They are always the same, all arguments will always be provided, see [issue #43 in love-api](https://github.com/love2d-community/love-api/issues/43))


YAS!!! This was always my favorite of yours. Sharing to FB now :)


Create hidden_msg.cpp
Key to solving the issue:  String Manipulations+DFS+pruning path if not valid.
Issue hit: if not pruning, run time become exponential, and some mem leak.

1st Q:
"Efficiently" recursively generate the candidate by pre-creating the index array [details will be given later]
Filter out unqualified combinations while generating the candidate by using the last_Index_removed!
(I forgot it at the 1st place and the run time became exponential!)
Flagging X with removable position. Once completely removed the REMOVAL, start to eliminate 'X'.
Using unordered_map to see if this combination is duplicated or not.

2nd Q:
Generalize the issue:
Save intermediate seq list (unordered_map), make it as  "given", and follow the 1st Q.
Extension: [reflected on the code]
The number of removals is not limited to 2.
The removable character are also not limited to morse code.

 Explanation for index array
 /* Generate occurrence lists  len = strlen(REMOVAL);
     * e.g give="*-_-***", removal="*-*"
     * index will have 3 elements
     * index[0] = occurrence of STAR from given, which is [0,4,5,6]
     * index[1] = occurrence of DASH from given, which is [1,3]
     * index[2] = occurrence of SEP from given, which is [2]
 */


Yeah I agree. It's not an issue in love-atom if we fix it in the love-api.


Btw, how did you find porting one of your own vs porting a baseq2 map?


@nikswamy : I mean these casts.


as a signal-to-noise ratio


```lua
local function createLoveCallbackFunctions( callbacks, parent )
   for _, f in pairs( callbacks ) do
      parent[name] = createVariant( f.variants[1] ) --Callbacks should have a single variant

      parent[name].type = 'function'

      parent[name].description = f.description
      parent[name].link = string.format( "%s%s%s", WIKI_URL, LOVE_MODULE_STRING, f.name )
   end
end
```


Please can update the flag?
Download the new flag here:
https://www.dropbox.com/s/qls0o37kgcbc9pt/New%20flag%20for%20pt_BR%20language.rar?dl=0


Just FYI there are better options now instead of cloning the repo (especially if you are on macOS) :smile:


Not a security bug, but looks like it was unintended - \W is includes `_` but not `-`. where as blockstack ids allow `-` but not `_`, so it's actually not possible to register names with `-` in them using the UI.

https://github.com/blockstack/blockstack-portal/blob/master/app/js/utils/name-utils.js#L3-L13

Also, weird that `_` is allowed in `.id` but `-` is allowed in `.app`


Part A = looks good
Part B = You can always use prefix = "something" to name your columns more clearly
Part B question 4, you are trying to control for all the levels of prestige
therefore you create binary variables for each prestige level
Part C = you almost got it. You needed to calculate the odds ratio (see solutions)
Question 7 = see solutions
Question 8 = see solutions
Question 9 = see solutions
Question 10 = see solutions
Question 11 = see solutions
Question 12 to 14 ok
Question 15 doesn't make any sense at all your prestige 2 odds ratio value is 0.506548, which means that you are 50%
less likely to be admitted when your school prestige is 2
Question 16 = doesn't make any sense at all
Question 17 = refer to solutions
Question 18 and 19 = refer to solutions

Summary:
Overall you have a good understanding of how and what to do with your code.
However, your code shows an unclear reasoning of the steps you need to take to answer the question. For instance, in the stats model part, you also fit the logistic regression from sklearn.
Also, your interpretation of the odds ratio is not clear.

Suggestions:
Create a roadmap to answer the questions.
Follow the logic, and add comments to your code, so you know what you are doing, or what has been done
Revise logistic regression


local function createLoveFunctions( functions, parent )
   for _, f in pairs( functions ) do
      if #f.variants == 1 then
         parent[name] = createVariant( f.variants[1] )
      else
         parent[name] = {}
      end

      parent[name].type = 'function'

      parent[name].description = f.description
      parent[name].link = string.format( "%s%s%s", WIKI_URL, LOVE_MODULE_STRING, f.name )

      if #f.variants > 1 then
         parent[name].variants = {}
         for i, v in ipairs( f.variants ) do
            parent[name].variants[i] = createVariant( v )
         end
      end
   end
end


So I've read, but how do the trucks react to it?


@LegitSoulja Please get the client done by june though. If not, then I will make it by july


I check it with ttx:

```
$ ttx -o /dev/stdout Go-Smallcaps.ttf | grep -C 1 '2\.'
<?xml version="1.0" encoding="ISO-8859-1"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="2.4">

--
    <tableVersion value="1.0"/>
    <fontRevision value="2.00799560547"/>
    <checkSumAdjustment value="0x84a5c1dc"/>
--
    <namerecord nameID="5" platformID="1" platEncID="0" langID="0x0">
      Version 2.008; ttfautohint (v1.6)
    </namerecord>
--
    <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
      Version 2.008; ttfautohint (v1.6)
    </namerecord>
--
  <post>
    <formatType value="2.0"/>
    <italicAngle value="0.0"/>
```

namerecord nameID="5" is "Version string", as per https://www.microsoft.com/typography/otspec/name.htm


Thanks, filed #2897


Unfortunately had to change this exciting password after I foolishly committed it to git history.


How about:
- `--import-untrusted`, because that's what we're actually doing
- `--safe-mode` or `--restricted`, which seems to already be the conventional name in other software to mean "disable functionality which may be dangerous", such as refusing to shell out, ignoring certain env vars, ignoring user-provided rc files, not requesting remote resources, etc.


[DateInput] [DateRangeInput] Add MM/DD/YYYY example and make it the default (#1042)

Preview: documentation
Coverage: core | datetime


This question has become "how to program games" more suitable for a game programming forum.


#561 #568


Closes #89 My mistake


Isn't the problem in the `name` when used in the documentation link?

We could pass a `modulename` to `createLoveFunctions`

Then in `createLoveFunctions` we would do:
```lua
local docname = modulename and (modulename .. "." .. name) or name
parent[name].link = string.format( "%s%s%s", WIKI_URL, LOVE_MODULE_STRING, docname )
```


Yeah I'm merging the function-creation methods atm anyway.


Sounds about right! They are both the same anyway


Prueba de coment.


`<php echo "holaaa" ?>`


fix docs site (bad r-d-p version)

Preview: documentation
Coverage: core | datetime


Users running anything other than 64bit Linux will have to comment out the appropriate natives and recompile.


Maybe add something about the alternate `get_instance`syntax :
```
import pyhaystack
session = pyhsyatck.connect('ax', uri, user, pw, http_args={})
```


Part A = looks good
Part B = good job
Part C. Hand calculating odds ratios = great work
Part C. Analysis using stats models = everything looks great
in question 17 = > how did you arrive at those numbers?
See solutions for calculations
Part D. = your logistic regression should be something like this: lm = LogisticRegression(C = 10**2)
question 20, how did you arrive at those numbers? (See solutions)

Summary:
Overall a great work. Your code looks clean; it also shows a good understanding of the question being asked.

Suggestions:
Consider creating data frames for the answers on question 19 and 20. It is hard to read which value corresponds to GRE, GPA, etc...


Looks good!


I have no idea where the 2.2.12 is coming from. I asked the fontconfig mailing list at https://lists.freedesktop.org/archives/fontconfig/2017-April/005910.html


ref: #405


can this get added as a tag please


Strangely on the page of atom-autocomplete-lua it says `// one of "function", "table", "number", "boolean", "string" or "unknown", "ref"` ... I wonder why `function` isn't a viable return type :/


`.right-side` лишнее, пусть они оба к левому краю текут, этот блок упрется в блок с картинкой и все ок будет


mmmm


Adjust canvas size on setbounds (#3335)

Demo: quicktests | fiddle


по главной: `<section class="available">` забыл clearfix, и для футера тоже


No rush, whenever you have a chance 👍


Thanks


в ссылки футера добавь текст пока (хоть по две буквы, `tw` `fb` `yt`) чтобы у них размер появился, их тогда видно будет


@MarcSchunk I extract the smoke test into a script to make it portable outside concourse.


прятать надо не этот блок, а форму, которая в нём, дай форме класс какой нибудь, `.search-form` например


@MarcSchunk After extract the smoke test into a script, we then moved it into `tasks/scripts` rather than the top level `scripts` directory.


это не футеру надо, а его псевдоэлементу , просто дай ему класс `clearfix`


#542 #561


@maxpiva that's in the works


Do you want this to implement Configurable?


you stink


Thanks for doing this, it's a good commit, making the parameter not hard-coded :)


для inline-block нужно vertical-align: (top например)


тут display: block, чтобы всем размерами и отступами можно было управлять


соответсвтенно vertical-align не нужен


[NumericInput] Fix pt-fill example in docs (#1043)

Preview: documentation
Coverage: core | datetime


> one of "function", ...

❓


Some of my code I accidently left in.


This UUID is only ever used for logging purposes; the message splitter does not reuse it and so the splitter will create another UUID.  I don't know if the large message segment UUIDs matching the logged message is important.  Creating one less UUID might be advantageous for performance.