dunhill是什么品牌| 什么是单核细胞百分比| 羊肉炖什么补肾壮阳| 高晓松为什么进监狱| 急性会厌炎吃什么药| 睡眠不好是什么原因| 隔的右边念什么| 什么叫酮症酸中毒| 马标志的车是什么牌子| 婴儿有眼屎是什么原因引起的| 做流产手术需要准备什么东西| 射手座女和什么星座最配| 虚有其表的意思是什么| 属羊什么命| 扶他是什么意思| 来忘掉错对来怀念过去是什么歌| 检查骨头做什么检查| 枫叶是什么颜色| 什么是山海经| 圣是什么生肖| 孕妇能喝什么饮料| 血糖高可以吃什么蔬菜| 兔子怕什么| 脑动脉瘤是什么原因引起的| 粉条是什么做的| 胰腺做什么检查| 蚊子怕什么气味| 丹参与什么搭配最好| 松树像什么| 盐酸氟桂利嗪胶囊治什么病| 女生右眼睛老是跳是什么原因| hpv疫苗是什么疫苗| 吃桃胶有什么作用| 右肋骨下方隐隐疼痛是什么原因| 肾结石是什么原因| 双重人格是什么意思| 为什么会尿频尿急| 狗取什么名字好| 白浆是什么| 天天晚上睡觉做梦是什么原因| 什么药治便秘| 氩气是什么气体| 鸡皮肤用什么药膏最好| 宁字五行属什么的| 216是什么意思| 例假量少是什么原因| 肌肉痉挛用什么药能治好| loc是什么意思| a1是什么| 梦见大狼狗是什么意思| 导盲犬一般是什么品种| 拔牙第二天可以吃什么| 飞机上可以带什么吃的| 过敏不能吃什么东西| 嫪毐是什么意思| 梦见别人笑什么意思| pcr医学上是什么意思| 急性呼吸道感染是什么引起的| 烧心反酸水吃什么药| 尿有泡泡是什么病| 罗汉肉是什么肉| 吃桂圆有什么好处| 黑色五行属什么| 加味逍遥丸和逍遥丸有什么区别| 头疼一般是什么原因引起的| grace什么意思| 大肠炒什么菜好吃| 化作风化作雨是什么歌| ufc是什么意思| 为什么医院开的钙都是碳酸钙| 转氨酶高说明什么| 小孩子发烧吃什么药| 疖肿用什么药膏| 运交华盖是什么意思| 检查耳朵挂什么科| 什么虎不吃人| 闲敲棋子落灯花上一句是什么| 吃生蚝有什么好处和坏处| 寄居蟹喜欢吃什么| 跳蚤咬了擦什么药| 戴尾戒是什么意思| 透明的剑是什么剑| 脚肿腿肿是什么原因引起的| 流鼻涕咳嗽吃什么药| 九死一生是指什么生肖| 提刑官相当于现在什么官| 查转氨酶挂什么科| 排卵期有什么明显症状| 口干口苦口臭是什么原因| 吐血拉血是什么病的症状| 看走眼是什么意思| 土地出让金什么意思| 香鱼又叫什么鱼| 燕条和燕盏有什么区别| crh是什么意思| 老虎菜为什么叫老虎菜| 无花果什么味道| 说梦话是什么原因引起的| 两颗星是什么军衔| 柳字五行属什么| 榴莲不能和什么一起吃| 碳酸氢铵是什么| 上夜班吃什么对身体好| 想怀孕需要检查什么项目| 建字五行属什么| efg是什么意思| 高字是什么结构| 为什么大便不成形| 大学211和985是什么意思| 女人梦见鬼是什么征兆| 流明是什么意思| 婊子是什么生肖| 巴基斯坦讲什么语言| 小白和兽神什么关系| wy是什么牌子| 尿是褐色的是什么原因| 解脲脲原体阳性是什么意思| 阿莫西林有什么作用| 楼房风水主要看什么| 眼角长痘痘是什么原因| 2016年属什么生肖| 耳朵嗡嗡响什么原因| 诸葛亮是什么生肖| 电压高是什么原因造成| 南字五行属什么| 弯弯的月儿像什么| 肝素是什么| 时间是什么| 腺苷是什么| 手指关节疼是什么原因| faleda是什么牌子的手表| 炫的意思是什么| abby是什么意思| 玉米什么时候种| 什么眼霜去眼袋效果好| 口干口臭是什么原因引起的| 血清谷丙转氨酶偏高是什么意思| 猫爪草有什么功效| 腋下黑是什么原因| 手抽筋吃什么药| 发菜是什么菜| 主动脉夹层是什么意思| 口干吃什么药| 梦见拉麦子是什么预兆| 花指什么生肖| 官员出狱后靠什么生活| 眼睛痒用什么药| 锁骨疼是什么原因| 月经量少吃什么调理| 霄字五行属什么| 生物医学工程专业学什么| 雍正为什么只在位13年| 蟑螂的天敌是什么| 学中医需要什么学历| 手臂痛挂什么科| 超敏c反应蛋白高说明什么| 心结是什么意思| 恃势之刑是什么意思| 三教九流代表什么生肖| 胆固醇是什么意思| 今天是什么节日吗| 肝脏损伤会出现什么症状| dr是什么意思| 撤退性出血是什么颜色| 咖啡有什么作用| 秦始皇为什么焚书坑儒| 感恩节为什么要吃火鸡| 少将相当于地方什么级别| 老是吐口水是什么原因| 马子什么意思| 什么导航好用又准确| nrc是什么意思| 生活方式是什么意思| ct什么意思| 肠胃不好经常拉肚子吃什么药| 什么叫有氧运动和无氧运动| 内热外寒感冒用什么药| 做肠胃镜挂什么科| 夏季吃什么| 献血之后吃什么比较好| 淋巴在什么位置| 道理是什么意思| 六字箴言是什么意思| 什么情况打破伤风| 血热吃什么好| 心脏病挂什么科| 受戒是什么意思| 宜入宅是什么意思| 什么叫自闭症| 九月二十八是什么星座| 什么是周边| 经常耳鸣是什么原因引起的| 药流吃什么药| 性生活是什么感觉| 忌作灶是什么意思| 姨妈是什么| 甲基硫菌灵治什么病| 刘强东开什么车| 怀疑肝不好挂什么科室| 种植牙是什么意思| 胃反酸吃点什么能缓解| 解肌是什么意思| 伟五行属什么| 沉鱼落雁什么意思| 11号来月经什么时候是排卵期| 肉苁蓉有什么功能| 吃什么能让头发变黑| 三点水一个金读什么| 自言自语是什么原因导致| 风凉话是什么意思| 给你脸了是什么意思| 授人以鱼不如授人以渔什么意思| 肌肉萎缩什么症状| 什么水晶招财| 什么叫闭合性跌打损伤| 女频是什么| domyos是什么牌子| 脚板疼是什么原因| 吃什么能马上晕倒住院| 土豆不能和什么食物一起吃| 六月十三是什么日子| 什么喷剂延时最好| 属猪男配什么属相最好| 倒着走路有什么好处| 男生射精是什么感觉| 蕃秀什么意思| 年轻人白头发是什么原因引起的| 打胎药叫什么名字| 失眠缺什么维生素| 可怜巴巴的意思是什么| 滑石是什么| 幽门螺旋杆菌感染吃什么药| 亚撒西什么意思| 颞颌关节紊乱挂什么科| 彩虹什么颜色| lpa是什么意思| 经常想睡觉是什么原因| 缺钾是什么原因引起的| 脾胃虚寒者有什么症状| 碳酸钠是什么| 军魂是什么意思| 姐姐的孩子叫我什么| 肾绞痛可能由于什么原因引起| 什么头什么脑| 手脚麻木吃什么药最管用| 超滤是什么意思| 武汉大学校长是什么级别| 龙骨是什么东西| 嘴碎什么意思| 梦见自己掉河里了是什么意思| 肾功能不全有什么症状| 胃酸吃什么好| 换手率什么意思| 榴莲壳有什么用处| 梦见养猪是什么意思| 口腔溃疡吃什么好| 饮食不规律会导致什么| 癫疯病发作前兆有什么症状| 什么繁什么茂| 内分泌失调吃什么药| 康桑密达是什么意思| 恃宠而骄什么意思| 看指甲去医院挂什么科| 牙疼吃什么饭| 百度?????????????????? ????

关于开展职业学校学生实习管理联合检查的通知

??????? ??????????????? ?????????????????? ???????.
百度 此前,在每年年初的党建工作大会上,海淀园工委都会选择三到四名具有代表性的党组织书记进行现场述职,其他的党组织书记则进行书面述职,述职报告集结成册下发给各党组织学习交流。

Documentation for this module may be created at Module:TableTools/doc

------------------------------------------------------------------------------------
--                                   TableTools                                   --
--                                                                                --
-- This module includes a number of functions for dealing with Lua tables.        --
-- It is a meta-module, meant to be called from other Lua modules, and should not --
-- be called directly from #invoke.                                               --
------------------------------------------------------------------------------------

local libraryUtil = require('libraryUtil')

local p = {}

-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti

------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
function p.isPositiveInteger(v)
	return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end

------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false if
-- not. Although it doesn't operate on tables, it is included here as it is useful
-- for determining whether a value can be a valid table key. Lua will generate an
-- error if a NaN is used as a table key.
------------------------------------------------------------------------------------
function p.isNan(v)
	return type(v) == 'number' and v ~= v
end

------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
function p.shallowClone(t)
	checkType('shallowClone', 1, t, 'table')
	local ret = {}
	for k, v in pairs(t) do
		ret[k] = v
	end
	return ret
end

------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
function p.removeDuplicates(arr)
	checkType('removeDuplicates', 1, arr, 'table')
	local isNan = p.isNan
	local ret, exists = {}, {}
	for _, v in ipairs(arr) do
		if isNan(v) then
			-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
			ret[#ret + 1] = v
		elseif not exists[v] then
			ret[#ret + 1] = v
			exists[v] = true
		end
	end
	return ret
end

------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
function p.numKeys(t)
	checkType('numKeys', 1, t, 'table')
	local isPositiveInteger = p.isPositiveInteger
	local nums = {}
	for k in pairs(t) do
		if isPositiveInteger(k) then
			nums[#nums + 1] = k
		end
	end
	table.sort(nums)
	return nums
end

------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return
-- {1, 3, 6}.
------------------------------------------------------------------------------------
function p.affixNums(t, prefix, suffix)
	checkType('affixNums', 1, t, 'table')
	checkType('affixNums', 2, prefix, 'string', true)
	checkType('affixNums', 3, suffix, 'string', true)

	local function cleanPattern(s)
		-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
		return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
	end

	prefix = prefix or ''
	suffix = suffix or ''
	prefix = cleanPattern(prefix)
	suffix = cleanPattern(suffix)
	local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'

	local nums = {}
	for k in pairs(t) do
		if type(k) == 'string' then
			local num = mw.ustring.match(k, pattern)
			if num then
				nums[#nums + 1] = tonumber(num)
			end
		end
	end
	table.sort(nums)
	return nums
end

------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table
-- of subtables in the format
-- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}.
-- Keys that don't end with an integer are stored in a subtable named "other". The
-- compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
function p.numData(t, compress)
	checkType('numData', 1, t, 'table')
	checkType('numData', 2, compress, 'boolean', true)
	local ret = {}
	for k, v in pairs(t) do
		local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
		if num then
			num = tonumber(num)
			local subtable = ret[num] or {}
			if prefix == '' then
				-- Positional parameters match the blank string; put them at the start of the subtable instead.
				prefix = 1
			end
			subtable[prefix] = v
			ret[num] = subtable
		else
			local subtable = ret.other or {}
			subtable[k] = v
			ret.other = subtable
		end
	end
	if compress then
		local other = ret.other
		ret = p.compressSparseArray(ret)
		ret.other = other
	end
	return ret
end

------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
function p.compressSparseArray(t)
	checkType('compressSparseArray', 1, t, 'table')
	local ret = {}
	local nums = p.numKeys(t)
	for _, num in ipairs(nums) do
		ret[#ret + 1] = t[num]
	end
	return ret
end

------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
function p.sparseIpairs(t)
	checkType('sparseIpairs', 1, t, 'table')
	local nums = p.numKeys(t)
	local i = 0
	local lim = #nums
	return function ()
		i = i + 1
		if i <= lim then
			local key = nums[i]
			return key, t[key]
		else
			return nil, nil
		end
	end
end

------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
function p.size(t)
	checkType('size', 1, t, 'table')
	local i = 0
	for _ in pairs(t) do
		i = i + 1
	end
	return i
end

local function defaultKeySort(item1, item2)
	-- "number" < "string", so numbers will be sorted before strings.
	local type1, type2 = type(item1), type(item2)
	if type1 ~= type2 then
		return type1 < type2
	elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then
		return tostring(item1) < tostring(item2)
	else
		return item1 < item2
	end
end
------------------------------------------------------------------------------------
-- keysToList
--
-- Returns an array of the keys in a table, sorted using either a default
-- comparison function or a custom keySort function.
------------------------------------------------------------------------------------
function p.keysToList(t, keySort, checked)
	if not checked then
		checkType('keysToList', 1, t, 'table')
		checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'})
	end

	local arr = {}
	local index = 1
	for k in pairs(t) do
		arr[index] = k
		index = index + 1
	end

	if keySort ~= false then
		keySort = type(keySort) == 'function' and keySort or defaultKeySort
		table.sort(arr, keySort)
	end

	return arr
end

------------------------------------------------------------------------------------
-- sortedPairs
--
-- Iterates through a table, with the keys sorted using the keysToList function.
-- If there are only numerical keys, sparseIpairs is probably more efficient.
------------------------------------------------------------------------------------
function p.sortedPairs(t, keySort)
	checkType('sortedPairs', 1, t, 'table')
	checkType('sortedPairs', 2, keySort, 'function', true)

	local arr = p.keysToList(t, keySort, true)

	local i = 0
	return function ()
		i = i + 1
		local key = arr[i]
		if key ~= nil then
			return key, t[key]
		else
			return nil, nil
		end
	end
end

------------------------------------------------------------------------------------
-- isArray
--
-- Returns true if the given value is a table and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArray(v)
	if type(v) ~= 'table' then
		return false
	end
	local i = 0
	for _ in pairs(v) do
		i = i + 1
		if v[i] == nil then
			return false
		end
	end
	return true
end

------------------------------------------------------------------------------------
-- isArrayLike
--
-- Returns true if the given value is iterable and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArrayLike(v)
	if not pcall(pairs, v) then
		return false
	end
	local i = 0
	for _ in pairs(v) do
		i = i + 1
		if v[i] == nil then
			return false
		end
	end
	return true
end

------------------------------------------------------------------------------------
-- invert
--
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} ->
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to
-- the index of the last duplicate) and NaN values are ignored.
------------------------------------------------------------------------------------
function p.invert(arr)
	checkType("invert", 1, arr, "table")
	local isNan = p.isNan
	local map = {}
	for i, v in ipairs(arr) do
		if not isNan(v) then
			map[v] = i
		end
	end

	return map
end

------------------------------------------------------------------------------------
-- listToSet
--
-- Creates a set from the array part of the table. Indexing the set by any of the
-- values of the array returns true. For example, {"a", "b", "c"} ->
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them
-- never equal to any value (including other NaNs or even themselves).
------------------------------------------------------------------------------------
function p.listToSet(arr)
	checkType("listToSet", 1, arr, "table")
	local isNan = p.isNan
	local set = {}
	for _, v in ipairs(arr) do
		if not isNan(v) then
			set[v] = true
		end
	end

	return set
end

------------------------------------------------------------------------------------
-- deepCopy
--
-- Recursive deep copy function. Preserves identities of subtables.
------------------------------------------------------------------------------------
local function _deepCopy(orig, includeMetatable, already_seen)
	if type(orig) ~= "table" then
		return orig
	end
	
	-- already_seen stores copies of tables indexed by the original table.
	local copy = already_seen[orig]
	if copy ~= nil then
		return copy
	end
	
	copy = {}
	already_seen[orig] = copy -- memoize before any recursion, to avoid infinite loops
	
	for orig_key, orig_value in pairs(orig) do
		copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)
	end
	
	if includeMetatable then
		local mt = getmetatable(orig)
		if mt ~= nil then
			setmetatable(copy, _deepCopy(mt, true, already_seen))
		end
	end
	
	return copy
end

function p.deepCopy(orig, noMetatable, already_seen)
	checkType("deepCopy", 3, already_seen, "table", true)
	return _deepCopy(orig, not noMetatable, already_seen or {})
end

------------------------------------------------------------------------------------
-- sparseConcat
--
-- Concatenates all values in the table that are indexed by a number, in order.
-- sparseConcat{a, nil, c, d}  =>  "acd"
-- sparseConcat{nil, b, c, d}  =>  "bcd"
------------------------------------------------------------------------------------
function p.sparseConcat(t, sep, i, j)
	local arr = {}

	local arr_i = 0
	for _, v in p.sparseIpairs(t) do
		arr_i = arr_i + 1
		arr[arr_i] = v
	end

	return table.concat(arr, sep, i, j)
end

------------------------------------------------------------------------------------
-- length
--
-- Finds the length of an array, or of a quasi-array with keys such as "data1",
-- "data2", etc., using an exponential search algorithm. It is similar to the
-- operator #, but may return a different value when there are gaps in the array
-- portion of the table. Intended to be used on data loaded with mw.loadData. For
-- other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of  the number
-- of unnamed template parameters, so use this function for frame.args.
------------------------------------------------------------------------------------
function p.length(t, prefix)
	-- requiring module inline so that [[Module:Exponential search]] which is
	-- only needed by this one function doesn't get millions of transclusions
	local expSearch = require("Module:Exponential search")
	checkType('length', 1, t, 'table')
	checkType('length', 2, prefix, 'string', true)
	return expSearch(function (i)
		local key
		if prefix then
			key = prefix .. tostring(i)
		else
			key = i
		end
		return t[key] ~= nil
	end) or 0
end

------------------------------------------------------------------------------------
-- inArray
--
-- Returns true if searchElement is a member of the array, and false otherwise.
-- Equivalent to JavaScript array.includes(searchElement) or
-- array.includes(searchElement, fromIndex), except fromIndex is 1 indexed
------------------------------------------------------------------------------------
function p.inArray(array, searchElement, fromIndex)
	checkType("inArray", 1, array, "table")
	-- if searchElement is nil, error?

	fromIndex = tonumber(fromIndex)
	if fromIndex then
		if (fromIndex < 0) then
			fromIndex = #array + fromIndex + 1
		end
		if fromIndex < 1 then fromIndex = 1 end
		for _, v in ipairs({unpack(array, fromIndex)}) do
			if v == searchElement then
				return true
			end
		end
	else
		for _, v in pairs(array) do
			if v == searchElement then
				return true
			end
		end
	end
	return false
end

------------------------------------------------------------------------------------
-- merge
--
-- Given the arrays, returns an array containing the elements of each input array
-- in sequence.
------------------------------------------------------------------------------------
function p.merge(...)
	local arrays = {...}
	local ret = {}
	for i, arr in ipairs(arrays) do
		checkType('merge', i, arr, 'table')
		for _, v in ipairs(arr) do
			ret[#ret + 1] = v
		end
	end
	return ret
end

------------------------------------------------------------------------------------
-- extend
--
-- Extends the first array in place by appending all elements from the second
-- array.
------------------------------------------------------------------------------------
function p.extend(arr1, arr2)
	checkType('extend', 1, arr1, 'table')
	checkType('extend', 2, arr2, 'table')

	for _, v in ipairs(arr2) do
		arr1[#arr1 + 1] = v
	end
end

return p
右侧卵巢内囊性结构什么意思 10月7日什么星座 月经推迟什么原因 燕窝是什么 奇亚籽在中国叫什么
好好好是什么语气 膝盖跪着疼是什么原因 镜检红细胞是什么意思 呕吐挂什么科 c反应蛋白什么意思
五常指的是什么 生物冰袋里面是什么 常喝红茶有什么好处 豇豆不能和什么一起吃 中国民间为什么要吃腊八粥
hcg高代表什么 什么叫法令纹 纳呆什么意思 39是什么意思 什么是三好学生
果脯是什么东西hcv7jop4ns7r.cn 怀孕后的分泌物是什么样的hcv8jop0ns0r.cn 手抖是什么原因导致的hcv9jop3ns1r.cn 无纺布是什么hcv9jop7ns2r.cn 压到蛇了是有什么预兆zhiyanzhang.com
吃什么药可以减肥hcv9jop6ns7r.cn mi是什么hcv9jop4ns5r.cn 纯钛对人体有什么好处hcv8jop1ns3r.cn 恩泽是什么意思hcv8jop8ns3r.cn 女人为什么比男人长寿hcv8jop2ns2r.cn
贺涵为什么会爱上罗子君bfb118.com 打卡什么意思hcv8jop0ns2r.cn 行气是什么意思hcv9jop0ns5r.cn 小孩胃疼吃什么药好hcv8jop6ns3r.cn 人不出汗是什么原因dajiketang.com
月经前是什么期hcv8jop9ns9r.cn 锅巴吃多了有什么危害wuhaiwuya.com 韩国人为什么叫棒子hcv8jop6ns3r.cn 贫血会引起什么症状hcv9jop0ns1r.cn 阴道吹气是什么原因hcv8jop8ns7r.cn
百度