 
 private extension NSURL {
 
-    var queryInfo: [String: String] {
+    var monkeyking_queryInfo: [String: String] {
 
         var info = [String: String]()
 

        return getNameByInfo(info)
    }

    var bundleID: String? {
        return objectForInfoDictionaryKey("CFBundleIdentifier") as? String
    }
}

private extension String {

    var base64EncodedString: String? {
        return dataUsingEncoding(NSUTF8StringEncoding)?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
    }

    var urlEncodedString: String? {
        return stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet())
    }

    var base64AndURLEncodedString: String? {
        return base64EncodedString?.urlEncodedString
    }

    var mk_QQCallbackName: String {

        var callbackName = String(format: "QQ%02llx", (self as NSString).longLongValue)
        while callbackName.characters.count < 0 {

            case .QQ(let appID):

                let scope = scope ?? ""
                let appName = NSBundle.mainBundle().monkeyking_displayName ?? "nixApp"
                let dic = ["app_id": appID,
                    "app_name": appName,
                    "client_id": appID,
