function Blend.New(Q)assert(type(Q)=="\115\116\114\105\110\103","\066\097\100 \099\108\097\115\115\078\097\109\101")local x=BlendDefaultProps[Q]return function(H)return Observable.new(function(q)local E=Maid.new()local K=Instance.new(Q)E:GiveTask(K)if x then for Q,x in pairs(x)do K[Q]=x end end E:GiveTask(Blend.mount(K,H))q:Fire(K)return E end)end end
--[=[
	Creates a new function which will return an observable that, given the props
	in question, will construct a new instance and assign all props. This is the
	equivalent of a pipe-able Rx command.

	```lua
	Blend.New "ScreenGui" {
		Parent = game.Players.LocalPlayer.PlayerGui;
		[Blend.Children] = {
			Blend.New "Frame" {
				Size = UDim2.new(1, 0, 1, 0);
				BackgroundTransparency = 0.5;
			};
		};
	};

	@param className string
	@return (props: { [string]: any; }) -> Observable<Instance>
	```
]=]
function Blend.New(className)
	assert(type(className) == "string", "Bad className")

	local defaults = BlendDefaultProps[className]

	return function(props)
		return Observable.new(function(sub)
			local maid = Maid.new()

			local instance = Instance.new(className)
			maid:GiveTask(instance)

			if defaults then
				for key, value in pairs(defaults) do
					instance[key] = value
				end
			end

			maid:GiveTask(Blend.mount(instance, props))

			sub:Fire(instance)

			return maid
		end)
	end
end
